From dafcf64b01ea3a4efb75b78d598bdfc081f603e2 Mon Sep 17 00:00:00 2001 From: Daniel Honsel Date: Thu, 4 Dec 2014 09:57:14 +0000 Subject: [PATCH] added T3Q project --- .../Common/Common/CommonDefs.ttcn | 1033 + .../Common/Common/UpperTesterCommon.ttcn | 118 + .../Common/Common/UpperTesterFunctions.ttcn | 2708 ++ .../Common/UpperTesterPtcToMtcDefs.ttcn | 236 + .../Common/CommonIP/CommonIP.ttcn | 302 + .../Common/EUTRA_Defs/EPS_NAS_TypeDefs.ttcn | 1122 + .../IMS/IMS_34229_SelectionExpressions.ttcn | 265 + .../Common/IMS/IMS_ASP_Templates.ttcn | 279 + .../Common/IMS/IMS_ASP_TypeDefs.ttcn | 138 + .../Common/IMS/IMS_CommonDefs.ttcn | 226 + .../Common/IMS/IMS_CommonFunctions.ttcn | 275 + .../Common/IMS/IMS_CommonTemplates.ttcn | 317 + .../Common/IMS/IMS_Component.ttcn | 1432 + .../Common/IMS/IMS_EmgFunctions.ttcn | 32 + .../Common/IMS/IMS_IP_Config.ttcn | 182 + .../Common/IMS/IMS_MessageBody_Templates.ttcn | 118 + .../Common/IMS/IMS_PTC_CoordMsg.ttcn | 323 + .../IMS/IMS_Procedures_CallControl.ttcn | 2954 ++ .../Common/IMS/IMS_Procedures_Common.ttcn | 475 + .../IMS/IMS_Procedures_Registration.ttcn | 1693 + .../Common/IMS/IMS_SDP_Messages.ttcn | 723 + .../Common/IMS/IMS_SDP_Templates.ttcn | 865 + .../Common/IMS/IMS_SIP_Templates.ttcn | 2278 ++ .../Common/IMS/IMS_SMS_Messages.ttcn | 339 + .../Common/IMS/IMS_XML_PIDF_Templates.ttcn | 80 + .../Common/IMS/IMS_XML_Templates.ttcn | 199 + .../Common/IMS_LibSip/LibSip_Common.ttcn | 44 + .../IMS_LibSip/LibSip_MessageBodyTypes.ttcn | 54 + .../Common/IMS_LibSip/LibSip_SDPTypes.ttcn | 403 + .../IMS_LibSip/LibSip_SIPTypesAndValues.ttcn | 1971 + .../LibSip_SimpleMsgSummaryTypes.ttcn | 66 + .../Common/IMS_XSD/AlternativeService.xsd | 31 + .../Common/IMS_XSD/NoTargetNamespace.ttcn | 31 + .../Common/IMS_XSD/RFC3680_reginfo.xsd | 107 + .../Common/IMS_XSD/RFC3863_pdif.xsd | 89 + .../Common/IMS_XSD/RFC4119_pdif_geopriv10.xsd | 54 + .../RFC4119_pdif_geopriv10_basicPolicy.xsd | 36 + .../IMS_XSD/RFC4575_conference_info.xsd | 387 + .../Common/IMS_XSD/RFC5628_gruuinfo.xsd | 22 + .../Common/IMS_XSD/UsefulTtcn3Types.ttcn | 70 + IMS_PART4_IWD_14wk37/Common/IMS_XSD/XSD.ttcn | 162 + ...rn_ietf_params_xml_ns_conference_info.ttcn | 228 + .../urn_ietf_params_xml_ns_gruuinfo.ttcn | 26 + .../IMS_XSD/urn_ietf_params_xml_ns_pidf.ttcn | 62 + ...urn_ietf_params_xml_ns_pidf_geopriv10.ttcn | 45 + ...ams_xml_ns_pidf_geopriv10_basicPolicy.ttcn | 31 + ...params_xml_ns_pidf_geopriv10_civicLoc.ttcn | 30 + .../urn_ietf_params_xml_ns_reginfo.ttcn | 74 + IMS_PART4_IWD_14wk37/Common/IMS_XSD/xml.xsd | 117 + .../Common/IP_PTC/HTTP_ASP_TypeDefs.ttcn | 142 + .../Common/IP_PTC/IP_ASP_Common.ttcn | 55 + .../Common/IP_PTC/IP_ASP_TypeDefs.ttcn | 783 + .../Common/IP_PTC/IP_PTC_CtrlMsgs.ttcn | 280 + .../Common/IP_PTC/IP_PTC_Templates.ttcn | 426 + .../Common/NAS/NAS_AuthenticationCommon.ttcn | 108 + .../Common/NAS/NAS_CommonTypeDefs.ttcn | 870 + .../Common/NAS/SMS_Templates.ttcn | 480 + .../Common/NAS/SMS_TypeDefs.ttcn | 395 + .../Common/UTRAN/UTRAN_ASP_Definitions.asn | 7967 ++++ .../Common/UTRAN/UTRAN_CommonDefs.ttcn | 482 + .../UTRAN/UTRAN_RRC_ASN1_Definitions.asn | 33804 ++++++++++++++++ .../IMS/10/IMS_CC_SubscriptionTestcases.ttcn | 81 + .../IMS/11/IMS_CC_NotificationTestcases.ttcn | 168 + .../IMS/12/IMS_CC_CallControlTestcases.ttcn | 1548 + .../IMS/13/IMS_CC_SigCompTestcases.ttcn | 110 + .../15/IMS_CC_SSConferencingTestcases.ttcn | 1032 + .../IMS/15/IMS_CC_SSTestcases.ttcn | 682 + .../IMS/15/IMS_CC_SSXcapTestcases.ttcn | 1184 + .../IMS/16/IMS_CC_CodecSelecting.ttcn | 397 + .../IMS/17/IMS_CC_MediaTestcases.ttcn | 523 + .../IMS/18/IMS_CC_SMSTestcases.ttcn | 260 + .../IMS/19/IMS_CC_EmergencyCallTestcases.ttcn | 967 + .../IMS_CC_PDPContextActivationTestcases.ttcn | 65 + .../7/IMS_CC_P_CSCFDiscoveryTestcases.ttcn | 63 + .../IMS/8/IMS_CC_RegistrationTestcases.ttcn | 395 + .../IMS/9/IMS_CC_AuthenticationTestcases.ttcn | 291 + .../IMS/Common/IMS_CC_CommonFunctions.ttcn | 278 + .../IMS/Common/IMS_CC_Component.ttcn | 21 + .../IMS/Common/IMS_CC_IPCAN_Coordination.ttcn | 147 + .../IMS/Common/IMS_CC_PCO_Handling.ttcn | 176 + .../IMS/Common/TestcaseProperties.ttcn | 122 + .../PART4_Stubs/MTC_Component_IMS_PART4.ttcn | 35 + .../IMS/PART4_Stubs/MTC_Main_IMS_PART4.ttcn | 157 + .../IMS/PART4_Stubs/PART4_Adaptor.ttcn | 48 + .../IMS/XCAP_HTTP/HTTP_Component.ttcn | 53 + .../IMS/XCAP_HTTP/HTTP_PTC_CoordMsg.ttcn | 61 + .../XCAP_HTTP/HTTP_TemplatesAndFunctions.ttcn | 385 + .../IMS/XCAP_HTTP/HTTP_XCAP_Main.ttcn | 331 + .../IMS/XCAP_HTTP/XCAP_ASP_TypeDefs.ttcn | 39 + .../XCAP_HTTP/XCAP_TemplatesAndFunctions.ttcn | 119 + .../IMS/XCAP_XSD/RFC4745-common-policy.xsd | 127 + IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/TS24604.xsd | 64 + .../IMS/XCAP_XSD/TS24607-OIP-OIR.xsd | 31 + .../IMS/XCAP_XSD/TS24608-TIP-TIR R2.xsd | 31 + IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/TS24611.xsd | 50 + IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/XCAP.xsd | 71 + ...etsi_org_ngn_params_xml_simservs_xcap.ttcn | 270 + .../urn_ietf_params_xml_ns_common_policy.ttcn | 118 + .../urn_oma_xml_xdm_common_policy.ttcn | 35 + .../IMS/XCAP_XSD/xdm_commonPolicy-V1_0.xsd | 107 + IMS_PART4_IWD_14wk37/IMS_Testsuite_PART4.ttcn | 1643 + .../PicsPixit/IMS_CC_Parameters.ttcn | 182 + .../PicsPixit/IMS_CommonParameters.ttcn | 102 + .../PicsPixit/Parameters.ttcn | 1127 + .../PicsPixit/UTRAN_Parameters.ttcn | 208 + .../Common/C2K/CDMA2000_ASP_TypeDefs.ttcn | 993 + .../Common/C2K/CDMA2000_CellInfo.ttcn | 865 + .../Common/C2K/CDMA2000_CommonDefs.ttcn | 128 + .../Common/C2K/CDMA2000_CommonFunctions.ttcn | 793 + .../Common/C2K/CDMA2000_Component.ttcn | 449 + .../Common/C2K/CDMA2000_Constants.ttcn | 72 + .../Common/C2K/CDMA2000_Templates.ttcn | 563 + .../Common/Common/CommonDefs.ttcn | 1033 + .../Common/Common/CommonIratDefs.ttcn | 599 + .../Common/Common/UpperTesterCommon.ttcn | 118 + .../Common/Common/UpperTesterFunctions.ttcn | 2708 ++ .../Common/UpperTesterPtcToMtcDefs.ttcn | 236 + .../Common/Common/UpperTesterSystemCmds.ttcn | 189 + .../Common/CommonIP/CommonIP.ttcn | 302 + .../Common/CommonIP/LoopbackIP.ttcn | 461 + .../EUTRA_AuxiliaryCapCheckFunctions.ttcn | 148 + .../EUTRA/EUTRA_AuxiliaryFunctions.ttcn | 444 + .../EUTRA/EUTRA_BandDependentParam.ttcn | 229 + .../EUTRA/EUTRA_CDMA2000Tunnelling.ttcn | 422 + .../Common/EUTRA/EUTRA_CellInfo.ttcn | 5118 +++ .../Common/EUTRA/EUTRA_CellInfoFrequency.ttcn | 2077 + .../Common/EUTRA/EUTRA_CellInfoInit_CA.ttcn | 794 + .../Common/EUTRA/EUTRA_CommonProcedures.ttcn | 2542 ++ .../EUTRA/EUTRA_CommonProcedures_C2K.ttcn | 82 + .../Common/EUTRA/EUTRA_CommonSRVCC.ttcn | 320 + .../Common/EUTRA/EUTRA_Component.ttcn | 517 + .../EUTRA/EUTRA_ConfigurationSteps.ttcn | 1116 + .../Common/EUTRA/EUTRA_IRATFunctions.ttcn | 394 + .../Common/EUTRA/EUTRA_IdleMode.ttcn | 828 + .../Common/EUTRA/EUTRA_LoopBack.ttcn | 386 + .../EUTRA/EUTRA_Measurement_Functions.ttcn | 406 + .../Common/EUTRA/EUTRA_NASSteps.ttcn | 2011 + .../EUTRA/EUTRA_NasSecurityProcedures.ttcn | 190 + .../Common/EUTRA/EUTRA_Paging.ttcn | 428 + .../Common/EUTRA/EUTRA_PdcchConfig.ttcn | 928 + .../Common/EUTRA/EUTRA_RRCSteps.ttcn | 1857 + .../Common/EUTRA/EUTRA_RSRQ_Functions.ttcn | 81 + .../Common/EUTRA/EUTRA_SecurityFunctions.ttcn | 873 + .../Common/EUTRA/EUTRA_SecuritySteps.ttcn | 1052 + .../Common/EUTRA/EUTRA_Timing.ttcn | 758 + .../Common/EUTRA/EUTRA_UE_Location.ttcn | 121 + .../EUTRA/LTE_36523_SelectionExpressions.ttcn | 1842 + .../Common/EUTRA_Defs/EPS_NAS_Constants.ttcn | 223 + .../EUTRA_Defs/EPS_NAS_MsgContainers.ttcn | 221 + .../Common/EUTRA_Defs/EPS_NAS_TypeDefs.ttcn | 1122 + .../EUTRA_ASP_CDMA2000TunnellingDefs.ttcn | 49 + .../Common/EUTRA_Defs/EUTRA_ASP_DrbDefs.ttcn | 624 + .../Common/EUTRA_Defs/EUTRA_ASP_NasCtrl.ttcn | 109 + .../Common/EUTRA_Defs/EUTRA_ASP_SrbDefs.ttcn | 93 + .../Common/EUTRA_Defs/EUTRA_ASP_TypeDefs.ttcn | 2210 + .../EUTRA_ASP_VirtualNoiseDefs.ttcn | 57 + .../Common/EUTRA_Defs/EUTRA_CommonDefs.ttcn | 455 + .../EUTRA_Defs/EUTRA_LoopBack_TypeDefs.ttcn | 188 + .../EUTRA_Defs/EUTRA_RRC_ASN1_Definitions.asn | 5328 +++ ...curityDefinitionsAndExternalFunctions.ttcn | 99 + .../EUTRA_L2/EUTRA_PdcpScurityProcedure.ttcn | 314 + .../Common/EUTRA_L2/L2_CommonFunctions.ttcn | 886 + .../Common/EUTRA_L2/L2_CommonTemplates.ttcn | 898 + .../Common/EUTRA_L2/MAC_Common.ttcn | 900 + .../EUTRA_NAS/EUTRA_NASCommonFunctions.ttcn | 430 + .../EUTRA_NAS/EUTRA_NASCommonTemplates.ttcn | 645 + .../EUTRA_Templates/EPS_NAS_Templates.ttcn | 1899 + .../EUTRA_AspCommon_Templates.ttcn | 537 + .../EUTRA_CellCfg_Templates.ttcn | 1278 + .../EUTRA_Templates/EUTRA_DRB_Templates.ttcn | 419 + .../EUTRA_Measurement_Templates.ttcn | 1741 + .../EUTRA_Templates/EUTRA_RRC_Templates.ttcn | 1886 + .../EUTRA_Templates/EUTRA_SRB_Templates.ttcn | 466 + .../EUTRA_Security_Templates.ttcn | 298 + .../EUTRA_SysInfo_Templates.ttcn | 983 + .../Common/GERAN/GERAN_CellInfo.ttcn | 907 + .../Common/GERAN/GERAN_CommonFunctions.ttcn | 2808 ++ .../Common/GERAN/GERAN_Component.ttcn | 1213 + .../Common/GERAN/GERAN_Templates.ttcn | 5253 +++ .../Common/GERAN/GERAN_TypeDefs.ttcn | 7091 ++++ .../Common/IMS/IMS_ASP_Templates.ttcn | 279 + .../Common/IMS/IMS_ASP_TypeDefs.ttcn | 138 + .../Common/IMS/IMS_CommonDefs.ttcn | 226 + .../Common/IMS/IMS_CommonFunctions.ttcn | 275 + .../Common/IMS/IMS_CommonSRVCC.ttcn | 325 + .../Common/IMS/IMS_CommonTemplates.ttcn | 317 + .../Common/IMS/IMS_Component.ttcn | 1432 + .../Common/IMS/IMS_DefaultHandler.ttcn | 51 + .../Common/IMS/IMS_IP_Config.ttcn | 182 + .../Common/IMS/IMS_MessageBody_Templates.ttcn | 118 + .../Common/IMS/IMS_PTC_CoordMsg.ttcn | 323 + .../IMS/IMS_Procedures_CallControl.ttcn | 2954 ++ .../Common/IMS/IMS_Procedures_Common.ttcn | 475 + .../IMS/IMS_Procedures_Registration.ttcn | 1693 + .../Common/IMS/IMS_SDP_Messages.ttcn | 723 + .../Common/IMS/IMS_SDP_Templates.ttcn | 865 + .../Common/IMS/IMS_SIP_Templates.ttcn | 2278 ++ .../Common/IMS/IMS_XML_PIDF_Templates.ttcn | 80 + .../Common/IMS/IMS_XML_Templates.ttcn | 199 + .../Common/IMS_LibSip/LibSip_Common.ttcn | 44 + .../IMS_LibSip/LibSip_MessageBodyTypes.ttcn | 54 + .../Common/IMS_LibSip/LibSip_SDPTypes.ttcn | 403 + .../IMS_LibSip/LibSip_SIPTypesAndValues.ttcn | 1971 + .../LibSip_SimpleMsgSummaryTypes.ttcn | 66 + .../Common/IMS_XSD/AlternativeService.xsd | 31 + .../Common/IMS_XSD/NoTargetNamespace.ttcn | 31 + .../Common/IMS_XSD/RFC3680_reginfo.xsd | 107 + .../Common/IMS_XSD/RFC3863_pdif.xsd | 89 + .../Common/IMS_XSD/RFC4119_pdif_geopriv10.xsd | 54 + .../RFC4119_pdif_geopriv10_basicPolicy.xsd | 36 + .../Common/IMS_XSD/RFC5628_gruuinfo.xsd | 22 + .../Common/IMS_XSD/UsefulTtcn3Types.ttcn | 70 + LTE_A_IWD_14wk37/Common/IMS_XSD/XSD.ttcn | 162 + ...rn_ietf_params_xml_ns_conference_info.ttcn | 228 + .../urn_ietf_params_xml_ns_gruuinfo.ttcn | 26 + .../IMS_XSD/urn_ietf_params_xml_ns_pidf.ttcn | 62 + ...urn_ietf_params_xml_ns_pidf_geopriv10.ttcn | 45 + ...ams_xml_ns_pidf_geopriv10_basicPolicy.ttcn | 31 + ...params_xml_ns_pidf_geopriv10_civicLoc.ttcn | 30 + .../urn_ietf_params_xml_ns_reginfo.ttcn | 74 + LTE_A_IWD_14wk37/Common/IMS_XSD/xml.xsd | 117 + .../Common/IP_PTC/DHCPv4_Common.ttcn | 440 + .../Common/IP_PTC/DHCPv4_TypeDefs.ttcn | 587 + .../Common/IP_PTC/HTTP_ASP_TypeDefs.ttcn | 142 + .../Common/IP_PTC/ICMPv6_Functions.ttcn | 108 + .../Common/IP_PTC/ICMPv6_TypeDefs.ttcn | 237 + .../Common/IP_PTC/IP_ASP_Common.ttcn | 55 + .../Common/IP_PTC/IP_ASP_TypeDefs.ttcn | 783 + .../Common/IP_PTC/IP_PTC_Component.ttcn | 123 + .../Common/IP_PTC/IP_PTC_CtrlMsgs.ttcn | 280 + .../Common/IP_PTC/IP_PTC_HTTP_Handler.ttcn | 163 + .../Common/IP_PTC/IP_PTC_IMS_Handler.ttcn | 953 + .../Common/IP_PTC/IP_PTC_IMS_Templates.ttcn | 87 + .../Common/IP_PTC/IP_PTC_Main.ttcn | 697 + .../Common/IP_PTC/IP_PTC_Routing.ttcn | 291 + .../Common/IP_PTC/IP_PTC_Templates.ttcn | 426 + .../Common/IP_PTC/TCP_Functions.ttcn | 228 + .../Common/IP_PTC/UDP_Functions.ttcn | 126 + .../IRAT/EUTRA_CapabilityFunctions.ttcn | 450 + .../IRAT/GERAN_CapabilityFunctions_IRAT.ttcn | 112 + LTE_A_IWD_14wk37/Common/IRAT/GERAN_SRVCC.ttcn | 143 + .../IRAT/NAS_24008Templates_AccessCap.ttcn | 126 + .../Common/IRAT/NAS_24008Templates_IRAT.ttcn | 3422 ++ .../Common/IRAT/NAS_24008TypeDefs.ttcn | 2319 ++ .../IRAT/UTRANGERAN_CommonFunctions.ttcn | 194 + .../IRAT/UTRAN_CapabilityFunctions.ttcn | 64 + .../IRAT/UTRAN_CapabilityFunctions_IRAT.ttcn | 873 + LTE_A_IWD_14wk37/Common/IRAT/UTRAN_SRVCC.ttcn | 357 + LTE_A_IWD_14wk37/Common/MTC/MTC_Base.ttcn | 163 + .../Common/MTC/MTC_Component_LTE_IRAT.ttcn | 41 + .../Common/MTC/MTC_Main_LTE_IRAT.ttcn | 227 + .../Common/MTC/MTC_UpperTester.ttcn | 665 + .../Common/NAS/NAS_34109TypeDefs.ttcn | 146 + .../Common/NAS/NAS_AuthenticationCommon.ttcn | 108 + .../NAS/NAS_AuxiliaryDefsAndFunctions.ttcn | 330 + .../Common/NAS/NAS_CommonTemplates.ttcn | 1029 + .../Common/NAS/NAS_CommonTypeDefs.ttcn | 870 + .../Common/NasEmulation/NasEmu.ttcn | 813 + .../Common/NasEmulation/NasEmu_AspTypes.ttcn | 60 + .../Common/NasEmulation/NasEmu_Component.ttcn | 68 + .../Common/NasEmulation/NasEmu_Templates.ttcn | 168 + .../UTRAN/UTRAN_ANR_CommonFunctions.ttcn | 79 + .../Common/UTRAN/UTRAN_ANR_MDT_Templates.ttcn | 136 + .../UTRAN/UTRAN_ASN1_ASP_RAB_Templates.ttcn | 2460 ++ .../UTRAN_ASN1_ASP_RAB_Templates_r10.ttcn | 62 + .../UTRAN_ASN1_ASP_RAB_Templates_r11.ttcn | 104 + .../UTRAN/UTRAN_ASN1_ASP_Templates.ttcn | 4358 ++ .../UTRAN/UTRAN_ASN1_ASP_Templates_r10.ttcn | 166 + .../UTRAN/UTRAN_ASN1_ASP_Templates_r11.ttcn | 224 + .../Common/UTRAN/UTRAN_ASP_Definitions.asn | 7967 ++++ .../UTRAN/UTRAN_ASP_VirtualNoiseDefs.ttcn | 50 + .../Common/UTRAN/UTRAN_CellInfo.ttcn | 2494 ++ .../Common/UTRAN/UTRAN_CommonAspDefs.ttcn | 34 + .../Common/UTRAN/UTRAN_CommonDefs.ttcn | 482 + .../Common/UTRAN/UTRAN_CommonFunctions.ttcn | 2029 + .../Common/UTRAN/UTRAN_CommonProcedures.ttcn | 1365 + .../Common/UTRAN/UTRAN_Component.ttcn | 478 + .../UTRAN/UTRAN_ConfigurationSteps.ttcn | 3769 ++ .../Common/UTRAN/UTRAN_MDT_Templates.ttcn | 348 + .../Common/UTRAN/UTRAN_NAS_PDU_Templates.ttcn | 565 + .../Common/UTRAN/UTRAN_RAB_Functions.ttcn | 4132 ++ .../UTRAN/UTRAN_RRC_ASN1_Definitions.asn | 33804 ++++++++++++++++ .../UTRAN/UTRAN_RRC_CommonTemplates.ttcn | 1177 + .../UTRAN/UTRAN_RRC_Handover_Templates.ttcn | 51 + .../Common/UTRAN/UTRAN_RRC_RAB_Templates.ttcn | 1939 + .../UTRAN/UTRAN_RRC_RAB_Templates_r10.ttcn | 557 + .../UTRAN/UTRAN_RRC_RAB_Templates_r11.ttcn | 943 + .../UTRAN/UTRAN_RRC_RAB_Templates_r9.ttcn | 693 + .../UTRAN/UTRAN_RRC_SysInfo_Templates.ttcn | 2533 ++ .../Common/UTRAN/UTRAN_RRC_Templates.ttcn | 2712 ++ .../Common/UTRAN/UTRAN_RRC_Templates_r10.ttcn | 306 + .../Common/UTRAN/UTRAN_RRC_Templates_r11.ttcn | 480 + .../Common/UTRAN/UTRAN_RRC_Templates_r9.ttcn | 336 + .../UTRAN/UTRAN_TTCN_ASP_Templates.ttcn | 204 + .../Common/UTRAN/UTRAN_TypeDefs.ttcn | 259 + .../LTE_A/10/ESM_A_Testcases.ttcn | 757 + LTE_A_IWD_14wk37/LTE_A/13/ASRVCC_EUTRA.ttcn | 2250 + .../LTE_A/13/ASRVCC_EUTRA_GERAN.ttcn | 334 + .../LTE_A/13/ASRVCC_EUTRA_IMS.ttcn | 754 + .../LTE_A/13/ASRVCC_EUTRA_UTRAN.ttcn | 597 + LTE_A_IWD_14wk37/LTE_A/13/BSRVCC_EUTRA.ttcn | 1007 + .../LTE_A/13/BSRVCC_EUTRA_GERAN.ttcn | 156 + .../LTE_A/13/BSRVCC_EUTRA_IMS.ttcn | 263 + .../LTE_A/13/BSRVCC_EUTRA_UTRAN.ttcn | 226 + .../LTE_A/17/EUTRA_CellInfo_MBMS.ttcn | 572 + .../LTE_A/17/EUTRA_CommonFunctions_MBMS.ttcn | 865 + .../LTE_A/17/EUTRA_CommonTemplates_MBMS.ttcn | 640 + .../LTE_A/17/MBMS_Counting_TestCases.ttcn | 295 + .../LTE_A/17/MBMS_MCCH_TestCases.ttcn | 708 + .../LTE_A/17/MBMS_MTCH_TestCases.ttcn | 419 + LTE_A_IWD_14wk37/LTE_A/17/MBMS_SC_CA.ttcn | 751 + .../LTE_A/17/MBMS_SC_TestCases.ttcn | 1079 + .../LTE_A/6_1/Idle_PLMNSelection_A.ttcn | 446 + LTE_A_IWD_14wk37/LTE_A/6_2/FeFACH_EU.ttcn | 261 + .../LTE_A/6_2/FeFACH_EU_UTRAN.ttcn | 351 + LTE_A_IWD_14wk37/LTE_A/7_1/MAC_CA.ttcn | 2511 ++ LTE_A_IWD_14wk37/LTE_A/7_1/MAC_SSC.ttcn | 651 + .../LTE_A/7_3/PDCP_A_Security.ttcn | 58 + LTE_A_IWD_14wk37/LTE_A/8_1/RRC_Paging_A.ttcn | 116 + .../LTE_A/8_2/RRC_ConnReconfig_A.ttcn | 758 + .../LTE_A/8_2/RRC_ConnReconfig_CA.ttcn | 662 + .../LTE_A/8_2/RRC_Handover_CA.ttcn | 1713 + .../LTE_A/8_3/EUTRA_Measurements_CA.ttcn | 675 + .../LTE_A/8_3/EUTRA_Measurements_eICIC.ttcn | 725 + .../LTE_A/8_4/InterRat_Handover_UtoE_CA.ttcn | 264 + .../8_4/InterRat_Handover_UtoE_CA_UTRAN.ttcn | 236 + .../LTE_A/8_5/RRC_RadioLinkFailure_CA.ttcn | 166 + .../8_6/EUTRA_MDT_Specific_Templates.ttcn | 1556 + .../LTE_A/8_6/Inter_RAT_Logged_MDT.ttcn | 824 + .../8_6/Inter_RAT_Logged_MDT_CDMA2000.ttcn | 206 + .../RRC_Connection_Establishment_Failure.ttcn | 1258 + ...onnection_Establishment_Failure_GERAN.ttcn | 55 + ...onnection_Establishment_Failure_UTRAN.ttcn | 258 + .../LTE_A/8_6/RRC_ImediateMDT_UTRAN.ttcn | 70 + .../LTE_A/8_6/RRC_Immediate_MDT.ttcn | 337 + .../LTE_A/8_6/RRC_LoggedHOFailure.ttcn | 2198 + .../LTE_A/8_6/RRC_LoggedHOFailure_GERAN.ttcn | 61 + .../LTE_A/8_6/RRC_LoggedHOFailure_UTRAN.ttcn | 265 + LTE_A_IWD_14wk37/LTE_A/8_6/RRC_LoggedRLF.ttcn | 2655 ++ .../LTE_A/8_6/RRC_LoggedRLF_GERAN.ttcn | 86 + .../LTE_A/8_6/RRC_LoggedRLF_UTRAN.ttcn | 525 + .../LTE_A/8_6/RRC_MDT_Logged.ttcn | 3204 ++ .../LTE_A/8_6/RRC_MDT_Logged_GERAN.ttcn | 101 + .../LTE_A/8_6/RRC_MDT_Logged_UTRAN.ttcn | 391 + .../LTE_A/8_6/RRC_RACH_Optimisation.ttcn | 64 + LTE_A_IWD_14wk37/LTE_A/8_7/RRC_ANR.ttcn | 92 + LTE_A_IWD_14wk37/LTE_A/8_7/RRC_ANR_UTRAN.ttcn | 169 + .../LTE_A/9_2/NAS_Attach_EOnly_A.ttcn | 656 + .../LTE_A/9_2/NAS_TrackingArea_EOnly_A.ttcn | 756 + .../LTE_A/9_4/NAS_A_Security.ttcn | 81 + .../Common/EUTRA_AspSystem_Templates_CA.ttcn | 321 + .../Common/EUTRA_CapabilityFunctions_CA.ttcn | 274 + .../Common/EUTRA_CommonFunctions_CA.ttcn | 891 + .../EUTRA_Measurement_Templates_CA.ttcn | 264 + .../LTE_A/Common/EUTRA_RRC_Templates_CA.ttcn | 493 + .../LTE_A/Common/TestcaseProperties.ttcn | 456 + LTE_A_IWD_14wk37/LTE_A_Testsuite.ttcn | 5566 +++ .../PicsPixit/CDMA2000_Parameters.ttcn | 91 + .../PicsPixit/EUTRA_Parameters.ttcn | 203 + .../PicsPixit/GERAN_Parameters.ttcn | 71 + .../PicsPixit/IMS_CC_Parameters.ttcn | 182 + .../PicsPixit/IMS_CommonParameters.ttcn | 102 + LTE_A_IWD_14wk37/PicsPixit/Parameters.ttcn | 1127 + .../PicsPixit/UTRAN_Parameters.ttcn | 208 + .../UTRAN34_ASN1_ASP_Templates_r10.ttcn | 72 + .../NC_modules_groups_dataTypes.ttcn3 | 45 + ...ameters_functions_testCases_altsteps.ttcn3 | 43 + NamingConventions/NC_stf160templates.ttcn3 | 88 + ...onstants_signatures_enumeratedValues.ttcn3 | 100 + ...ers_componentInstances_portInstances.ttcn3 | 36 + ...tionInvocationPrecededByLogStatement.ttcn3 | 66 + ...ionInvocationPrecededByLogStatement.ttcn3m | 316 + .../checkFunctionsModuleContainmentBad.ttcn3 | 33 + .../checkFunctionsModuleContainmentGood.ttcn3 | 24 + .../checkImportsComeFirstBad.ttcn3 | 13 + .../checkImportsComeFirstGood.ttcn3 | 11 + ...kInconcOrFailSetVerdictPrecededByLog.ttcn3 | 37 + ...InconcOrFailSetVerdictPrecededByLog.ttcn3m | 294 + .../checkInterfaceModuleContainmentBad.ttcn3 | 29 + .../checkInterfaceModuleContainmentGood.ttcn3 | 24 + .../checkLocalDefinitionsComeFirst.ttcn3 | 108 + checkLocalDefinitionsComeFirst/tmp.ttcn3 | 36 + checkLogFormat/checkLogFormat.ttcn3 | 91 + checkLogFormat/checkLogFormat.ttcn3m | 680 + ...heckModuleParamsModuleContainmentBad.ttcn3 | 19 + ...eckModuleParamsModuleContainmentGood.ttcn3 | 16 + .../checkNoAllKeywordInPortDefinitions.ttcn3 | 34 + .../checkNoAnyTypeKeyword.ttcn3 | 9 + .../checkFunctionsModuleContainmentBad.ttcn3 | 33 + .../checkFunctionsModuleContainmentGood.ttcn3 | 24 + .../types.ttcn3 | 26 + .../checkNoInlineTemplates.ttcn3 | 14 + .../checkNoLabelsOrGotoStatements.ttcn3 | 19 + checkNoLiterals/checkNoLiterals.ttcn3 | 19 + ...NoModifiedTemplateOfModifiedTemplate.ttcn3 | 58 + ...edTemplateOfModifiedTemplateExternal.ttcn3 | 27 + .../checkNoNestedAltStatements.ttcn3 | 97 + .../checkNoOverSpecificRunsOn.ttcn3 | 105 + .../checkNoOverSpecificRunsOnOverImport.ttcn3 | 49 + checkNoOverSpecificRunsOn/simpleCase.ttcn3 | 14 + .../checkNoPermutationKeyword.ttcn3 | 8 + .../checkNoUnusedFormalParameters.ttcn3 | 87 + checkNoUnusedFormalParameters/tmp.ttcn3 | 9 + .../checkNoUnusedLocalDefinitions.ttcn3 | 49 + ...ckNoUnusedLocalDefinitionsOverImport.ttcn3 | 7 + .../checkPortMessageGrouping.ttcn3 | 89 + .../checkPortMessageGroupingExternal.ttcn3 | 6 + .../checkTemplatesModuleContainmentBad.ttcn3 | 25 + .../checkTemplatesModuleContainmentGood.ttcn3 | 18 + ...checkTestControlModuleContainmentBad.ttcn3 | 25 + ...heckTestControlModuleContainmentGood.ttcn3 | 14 + .../checkTestSystemModuleContainmentBad.ttcn3 | 28 + ...checkTestSystemModuleContainmentGood.ttcn3 | 20 + .../checkTestcasesModuleContainmentBad.ttcn3 | 45 + .../checkTestcasesModuleContainmentGood.ttcn3 | 30 + ...casesModuleImportsLibCommon_SyncGood.ttcn3 | 14 + ...tcasesModuleImportsLibCommon_syncBad.ttcn3 | 16 + .../checkTypeDefOrderInGroup.ttcn3 | 136 + ...esAndValuesModuleContainmentCheckBad.ttcn3 | 32 + ...sAndValuesModuleContainmentCheckGood.ttcn3 | 20 + ...sAndValuesModuleImportsLibCommonGood.ttcn3 | 14 + ...esAndValuesModuleImportsLibcommonBad.ttcn3 | 19 + ...checkZeroReferencedModuleDefinitions.ttcn3 | 45 + ...ferencedModuleDefinitionsWithImports.ttcn3 | 19 + .../simpleTest.ttcn3 | 10 + .../checkInterfaceModuleContainmentBad.3mp | 29 + .../checkInterfaceModuleContainmentGood.ttcn | 24 + templates/EUTRA_CommonDefs.ttcn | 455 + templates/EUTRA_CommonDefs.ttcnm | 2983 ++ templates/IMS_XML_Templates.ttcn | 199 + templates/IMS_XML_Templates.ttcnm | 1534 + templates/MTC_Main_LTE_IRAT.ttcn | 227 + templates/MTC_Main_LTE_IRAT.ttcnm | 2417 ++ templates/UTRAN_CommonAspDefs.ttcn | 34 + templates/UTRAN_CommonAspDefs.ttcnm | 237 + templates/UTRAN_CommonDefs.ttcn | 482 + templates/UTRAN_CommonDefs.ttcnm | 3452 ++ templates/ifpresent-template.ttcn3 | 37 + templates/ifpresent-template.ttcn3m | 289 + templates/signature.ttcn3 | 60 + templates/signature.ttcn3m | 424 + ts01/behaviourDefinition.ttcn3 | 39 + ts01/nested/dataDefinition.ttcn3 | 57 + ts02/inresDefinitions.ttcn3 | 116 + ts02/inresDistributed.ttcn3 | 178 + ts02/inresLocal.ttcn3 | 116 + ts02/inresUserDefinitions.ttcn3 | 6 + ts03/LibSip_SDPTypes.ttcn3 | 22 + ts03/ifpresent-template.ttcn3 | 10 + ts04/find_cross_references.ttcn3 | 13 + 450 files changed, 336424 insertions(+) create mode 100644 IMS_PART4_IWD_14wk37/Common/Common/CommonDefs.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/Common/UpperTesterCommon.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/Common/UpperTesterFunctions.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/Common/UpperTesterPtcToMtcDefs.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/CommonIP/CommonIP.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/EUTRA_Defs/EPS_NAS_TypeDefs.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS/IMS_34229_SelectionExpressions.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS/IMS_ASP_Templates.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS/IMS_ASP_TypeDefs.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS/IMS_CommonDefs.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS/IMS_CommonFunctions.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS/IMS_CommonTemplates.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS/IMS_Component.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS/IMS_EmgFunctions.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS/IMS_IP_Config.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS/IMS_MessageBody_Templates.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS/IMS_PTC_CoordMsg.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS/IMS_Procedures_CallControl.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS/IMS_Procedures_Common.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS/IMS_Procedures_Registration.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS/IMS_SDP_Messages.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS/IMS_SDP_Templates.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS/IMS_SIP_Templates.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS/IMS_SMS_Messages.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS/IMS_XML_PIDF_Templates.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS/IMS_XML_Templates.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS_LibSip/LibSip_Common.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS_LibSip/LibSip_MessageBodyTypes.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS_LibSip/LibSip_SDPTypes.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS_LibSip/LibSip_SIPTypesAndValues.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS_LibSip/LibSip_SimpleMsgSummaryTypes.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS_XSD/AlternativeService.xsd create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS_XSD/NoTargetNamespace.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS_XSD/RFC3680_reginfo.xsd create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS_XSD/RFC3863_pdif.xsd create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS_XSD/RFC4119_pdif_geopriv10.xsd create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS_XSD/RFC4119_pdif_geopriv10_basicPolicy.xsd create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS_XSD/RFC4575_conference_info.xsd create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS_XSD/RFC5628_gruuinfo.xsd create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS_XSD/UsefulTtcn3Types.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS_XSD/XSD.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_conference_info.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_gruuinfo.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_pidf.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_reginfo.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IMS_XSD/xml.xsd create mode 100644 IMS_PART4_IWD_14wk37/Common/IP_PTC/HTTP_ASP_TypeDefs.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IP_PTC/IP_ASP_Common.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IP_PTC/IP_ASP_TypeDefs.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IP_PTC/IP_PTC_CtrlMsgs.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/IP_PTC/IP_PTC_Templates.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/NAS/NAS_AuthenticationCommon.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/NAS/NAS_CommonTypeDefs.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/NAS/SMS_Templates.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/NAS/SMS_TypeDefs.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/UTRAN/UTRAN_ASP_Definitions.asn create mode 100644 IMS_PART4_IWD_14wk37/Common/UTRAN/UTRAN_CommonDefs.ttcn create mode 100644 IMS_PART4_IWD_14wk37/Common/UTRAN/UTRAN_RRC_ASN1_Definitions.asn create mode 100644 IMS_PART4_IWD_14wk37/IMS/10/IMS_CC_SubscriptionTestcases.ttcn create mode 100644 IMS_PART4_IWD_14wk37/IMS/11/IMS_CC_NotificationTestcases.ttcn create mode 100644 IMS_PART4_IWD_14wk37/IMS/12/IMS_CC_CallControlTestcases.ttcn create mode 100644 IMS_PART4_IWD_14wk37/IMS/13/IMS_CC_SigCompTestcases.ttcn create mode 100644 IMS_PART4_IWD_14wk37/IMS/15/IMS_CC_SSConferencingTestcases.ttcn create mode 100644 IMS_PART4_IWD_14wk37/IMS/15/IMS_CC_SSTestcases.ttcn create mode 100644 IMS_PART4_IWD_14wk37/IMS/15/IMS_CC_SSXcapTestcases.ttcn create mode 100644 IMS_PART4_IWD_14wk37/IMS/16/IMS_CC_CodecSelecting.ttcn create mode 100644 IMS_PART4_IWD_14wk37/IMS/17/IMS_CC_MediaTestcases.ttcn create mode 100644 IMS_PART4_IWD_14wk37/IMS/18/IMS_CC_SMSTestcases.ttcn create mode 100644 IMS_PART4_IWD_14wk37/IMS/19/IMS_CC_EmergencyCallTestcases.ttcn create mode 100644 IMS_PART4_IWD_14wk37/IMS/6/IMS_CC_PDPContextActivationTestcases.ttcn create mode 100644 IMS_PART4_IWD_14wk37/IMS/7/IMS_CC_P_CSCFDiscoveryTestcases.ttcn create mode 100644 IMS_PART4_IWD_14wk37/IMS/8/IMS_CC_RegistrationTestcases.ttcn create mode 100644 IMS_PART4_IWD_14wk37/IMS/9/IMS_CC_AuthenticationTestcases.ttcn create mode 100644 IMS_PART4_IWD_14wk37/IMS/Common/IMS_CC_CommonFunctions.ttcn create mode 100644 IMS_PART4_IWD_14wk37/IMS/Common/IMS_CC_Component.ttcn create mode 100644 IMS_PART4_IWD_14wk37/IMS/Common/IMS_CC_IPCAN_Coordination.ttcn create mode 100644 IMS_PART4_IWD_14wk37/IMS/Common/IMS_CC_PCO_Handling.ttcn create mode 100644 IMS_PART4_IWD_14wk37/IMS/Common/TestcaseProperties.ttcn create mode 100644 IMS_PART4_IWD_14wk37/IMS/PART4_Stubs/MTC_Component_IMS_PART4.ttcn create mode 100644 IMS_PART4_IWD_14wk37/IMS/PART4_Stubs/MTC_Main_IMS_PART4.ttcn create mode 100644 IMS_PART4_IWD_14wk37/IMS/PART4_Stubs/PART4_Adaptor.ttcn create mode 100644 IMS_PART4_IWD_14wk37/IMS/XCAP_HTTP/HTTP_Component.ttcn create mode 100644 IMS_PART4_IWD_14wk37/IMS/XCAP_HTTP/HTTP_PTC_CoordMsg.ttcn create mode 100644 IMS_PART4_IWD_14wk37/IMS/XCAP_HTTP/HTTP_TemplatesAndFunctions.ttcn create mode 100644 IMS_PART4_IWD_14wk37/IMS/XCAP_HTTP/HTTP_XCAP_Main.ttcn create mode 100644 IMS_PART4_IWD_14wk37/IMS/XCAP_HTTP/XCAP_ASP_TypeDefs.ttcn create mode 100644 IMS_PART4_IWD_14wk37/IMS/XCAP_HTTP/XCAP_TemplatesAndFunctions.ttcn create mode 100644 IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/RFC4745-common-policy.xsd create mode 100644 IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/TS24604.xsd create mode 100644 IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/TS24607-OIP-OIR.xsd create mode 100644 IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/TS24608-TIP-TIR R2.xsd create mode 100644 IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/TS24611.xsd create mode 100644 IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/XCAP.xsd create mode 100644 IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn create mode 100644 IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/urn_ietf_params_xml_ns_common_policy.ttcn create mode 100644 IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/urn_oma_xml_xdm_common_policy.ttcn create mode 100644 IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/xdm_commonPolicy-V1_0.xsd create mode 100644 IMS_PART4_IWD_14wk37/IMS_Testsuite_PART4.ttcn create mode 100644 IMS_PART4_IWD_14wk37/PicsPixit/IMS_CC_Parameters.ttcn create mode 100644 IMS_PART4_IWD_14wk37/PicsPixit/IMS_CommonParameters.ttcn create mode 100644 IMS_PART4_IWD_14wk37/PicsPixit/Parameters.ttcn create mode 100644 IMS_PART4_IWD_14wk37/PicsPixit/UTRAN_Parameters.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/C2K/CDMA2000_ASP_TypeDefs.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/C2K/CDMA2000_CellInfo.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/C2K/CDMA2000_CommonDefs.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/C2K/CDMA2000_CommonFunctions.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/C2K/CDMA2000_Component.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/C2K/CDMA2000_Constants.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/C2K/CDMA2000_Templates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/Common/CommonDefs.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/Common/CommonIratDefs.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/Common/UpperTesterCommon.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/Common/UpperTesterFunctions.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/Common/UpperTesterPtcToMtcDefs.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/Common/UpperTesterSystemCmds.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/CommonIP/CommonIP.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/CommonIP/LoopbackIP.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_AuxiliaryCapCheckFunctions.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_AuxiliaryFunctions.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_BandDependentParam.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_CDMA2000Tunnelling.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_CellInfo.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_CellInfoFrequency.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_CellInfoInit_CA.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_CommonProcedures.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_CommonProcedures_C2K.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_CommonSRVCC.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_Component.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_ConfigurationSteps.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_IRATFunctions.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_IdleMode.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_LoopBack.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_Measurement_Functions.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_NASSteps.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_NasSecurityProcedures.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_Paging.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_PdcchConfig.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_RRCSteps.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_RSRQ_Functions.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_SecurityFunctions.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_SecuritySteps.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_Timing.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_UE_Location.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA/LTE_36523_SelectionExpressions.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA_Defs/EPS_NAS_Constants.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA_Defs/EPS_NAS_MsgContainers.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA_Defs/EPS_NAS_TypeDefs.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_ASP_CDMA2000TunnellingDefs.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_ASP_DrbDefs.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_ASP_NasCtrl.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_ASP_SrbDefs.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_ASP_TypeDefs.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_ASP_VirtualNoiseDefs.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_CommonDefs.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_LoopBack_TypeDefs.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_RRC_ASN1_Definitions.asn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_SecurityDefinitionsAndExternalFunctions.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA_L2/EUTRA_PdcpScurityProcedure.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA_L2/L2_CommonFunctions.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA_L2/L2_CommonTemplates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA_L2/MAC_Common.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA_NAS/EUTRA_NASCommonFunctions.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA_NAS/EUTRA_NASCommonTemplates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA_Templates/EPS_NAS_Templates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA_Templates/EUTRA_AspCommon_Templates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA_Templates/EUTRA_CellCfg_Templates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA_Templates/EUTRA_DRB_Templates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA_Templates/EUTRA_Measurement_Templates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA_Templates/EUTRA_RRC_Templates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA_Templates/EUTRA_SRB_Templates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA_Templates/EUTRA_Security_Templates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/EUTRA_Templates/EUTRA_SysInfo_Templates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/GERAN/GERAN_CellInfo.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/GERAN/GERAN_CommonFunctions.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/GERAN/GERAN_Component.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/GERAN/GERAN_Templates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/GERAN/GERAN_TypeDefs.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS/IMS_ASP_Templates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS/IMS_ASP_TypeDefs.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS/IMS_CommonDefs.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS/IMS_CommonFunctions.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS/IMS_CommonSRVCC.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS/IMS_CommonTemplates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS/IMS_Component.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS/IMS_DefaultHandler.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS/IMS_IP_Config.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS/IMS_MessageBody_Templates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS/IMS_PTC_CoordMsg.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS/IMS_Procedures_CallControl.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS/IMS_Procedures_Common.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS/IMS_Procedures_Registration.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS/IMS_SDP_Messages.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS/IMS_SDP_Templates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS/IMS_SIP_Templates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS/IMS_XML_PIDF_Templates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS/IMS_XML_Templates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS_LibSip/LibSip_Common.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS_LibSip/LibSip_MessageBodyTypes.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS_LibSip/LibSip_SDPTypes.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS_LibSip/LibSip_SIPTypesAndValues.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS_LibSip/LibSip_SimpleMsgSummaryTypes.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS_XSD/AlternativeService.xsd create mode 100644 LTE_A_IWD_14wk37/Common/IMS_XSD/NoTargetNamespace.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS_XSD/RFC3680_reginfo.xsd create mode 100644 LTE_A_IWD_14wk37/Common/IMS_XSD/RFC3863_pdif.xsd create mode 100644 LTE_A_IWD_14wk37/Common/IMS_XSD/RFC4119_pdif_geopriv10.xsd create mode 100644 LTE_A_IWD_14wk37/Common/IMS_XSD/RFC4119_pdif_geopriv10_basicPolicy.xsd create mode 100644 LTE_A_IWD_14wk37/Common/IMS_XSD/RFC5628_gruuinfo.xsd create mode 100644 LTE_A_IWD_14wk37/Common/IMS_XSD/UsefulTtcn3Types.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS_XSD/XSD.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_conference_info.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_gruuinfo.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_pidf.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_reginfo.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IMS_XSD/xml.xsd create mode 100644 LTE_A_IWD_14wk37/Common/IP_PTC/DHCPv4_Common.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IP_PTC/DHCPv4_TypeDefs.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IP_PTC/HTTP_ASP_TypeDefs.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IP_PTC/ICMPv6_Functions.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IP_PTC/ICMPv6_TypeDefs.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IP_PTC/IP_ASP_Common.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IP_PTC/IP_ASP_TypeDefs.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IP_PTC/IP_PTC_Component.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IP_PTC/IP_PTC_CtrlMsgs.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IP_PTC/IP_PTC_HTTP_Handler.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IP_PTC/IP_PTC_IMS_Handler.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IP_PTC/IP_PTC_IMS_Templates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IP_PTC/IP_PTC_Main.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IP_PTC/IP_PTC_Routing.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IP_PTC/IP_PTC_Templates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IP_PTC/TCP_Functions.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IP_PTC/UDP_Functions.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IRAT/EUTRA_CapabilityFunctions.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IRAT/GERAN_CapabilityFunctions_IRAT.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IRAT/GERAN_SRVCC.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IRAT/NAS_24008Templates_AccessCap.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IRAT/NAS_24008Templates_IRAT.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IRAT/NAS_24008TypeDefs.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IRAT/UTRANGERAN_CommonFunctions.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IRAT/UTRAN_CapabilityFunctions.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IRAT/UTRAN_CapabilityFunctions_IRAT.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/IRAT/UTRAN_SRVCC.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/MTC/MTC_Base.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/MTC/MTC_Component_LTE_IRAT.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/MTC/MTC_Main_LTE_IRAT.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/MTC/MTC_UpperTester.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/NAS/NAS_34109TypeDefs.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/NAS/NAS_AuthenticationCommon.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/NAS/NAS_AuxiliaryDefsAndFunctions.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/NAS/NAS_CommonTemplates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/NAS/NAS_CommonTypeDefs.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/NasEmulation/NasEmu.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/NasEmulation/NasEmu_AspTypes.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/NasEmulation/NasEmu_Component.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/NasEmulation/NasEmu_Templates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ANR_CommonFunctions.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ANR_MDT_Templates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ASN1_ASP_RAB_Templates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ASN1_ASP_RAB_Templates_r10.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ASN1_ASP_RAB_Templates_r11.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ASN1_ASP_Templates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ASN1_ASP_Templates_r10.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ASN1_ASP_Templates_r11.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ASP_Definitions.asn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ASP_VirtualNoiseDefs.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_CellInfo.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_CommonAspDefs.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_CommonDefs.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_CommonFunctions.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_CommonProcedures.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_Component.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ConfigurationSteps.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_MDT_Templates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_NAS_PDU_Templates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RAB_Functions.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_ASN1_Definitions.asn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_CommonTemplates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_Handover_Templates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_RAB_Templates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_RAB_Templates_r10.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_RAB_Templates_r11.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_RAB_Templates_r9.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_SysInfo_Templates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_Templates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_Templates_r10.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_Templates_r11.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_Templates_r9.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_TTCN_ASP_Templates.ttcn create mode 100644 LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_TypeDefs.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/10/ESM_A_Testcases.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/13/ASRVCC_EUTRA.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/13/ASRVCC_EUTRA_GERAN.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/13/ASRVCC_EUTRA_IMS.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/13/ASRVCC_EUTRA_UTRAN.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/13/BSRVCC_EUTRA.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/13/BSRVCC_EUTRA_GERAN.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/13/BSRVCC_EUTRA_IMS.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/13/BSRVCC_EUTRA_UTRAN.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/17/EUTRA_CellInfo_MBMS.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/17/EUTRA_CommonFunctions_MBMS.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/17/EUTRA_CommonTemplates_MBMS.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/17/MBMS_Counting_TestCases.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/17/MBMS_MCCH_TestCases.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/17/MBMS_MTCH_TestCases.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/17/MBMS_SC_CA.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/17/MBMS_SC_TestCases.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/6_1/Idle_PLMNSelection_A.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/6_2/FeFACH_EU.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/6_2/FeFACH_EU_UTRAN.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/7_1/MAC_CA.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/7_1/MAC_SSC.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/7_3/PDCP_A_Security.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/8_1/RRC_Paging_A.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/8_2/RRC_ConnReconfig_A.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/8_2/RRC_ConnReconfig_CA.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/8_2/RRC_Handover_CA.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/8_3/EUTRA_Measurements_CA.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/8_3/EUTRA_Measurements_eICIC.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/8_4/InterRat_Handover_UtoE_CA.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/8_4/InterRat_Handover_UtoE_CA_UTRAN.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/8_5/RRC_RadioLinkFailure_CA.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/8_6/EUTRA_MDT_Specific_Templates.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/8_6/Inter_RAT_Logged_MDT.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/8_6/Inter_RAT_Logged_MDT_CDMA2000.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/8_6/RRC_Connection_Establishment_Failure.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/8_6/RRC_Connection_Establishment_Failure_GERAN.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/8_6/RRC_Connection_Establishment_Failure_UTRAN.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/8_6/RRC_ImediateMDT_UTRAN.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/8_6/RRC_Immediate_MDT.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/8_6/RRC_LoggedHOFailure.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/8_6/RRC_LoggedHOFailure_GERAN.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/8_6/RRC_LoggedHOFailure_UTRAN.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/8_6/RRC_LoggedRLF.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/8_6/RRC_LoggedRLF_GERAN.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/8_6/RRC_LoggedRLF_UTRAN.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/8_6/RRC_MDT_Logged.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/8_6/RRC_MDT_Logged_GERAN.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/8_6/RRC_MDT_Logged_UTRAN.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/8_6/RRC_RACH_Optimisation.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/8_7/RRC_ANR.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/8_7/RRC_ANR_UTRAN.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/9_2/NAS_Attach_EOnly_A.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/9_2/NAS_TrackingArea_EOnly_A.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/9_4/NAS_A_Security.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/Common/EUTRA_AspSystem_Templates_CA.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/Common/EUTRA_CapabilityFunctions_CA.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/Common/EUTRA_CommonFunctions_CA.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/Common/EUTRA_Measurement_Templates_CA.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/Common/EUTRA_RRC_Templates_CA.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A/Common/TestcaseProperties.ttcn create mode 100644 LTE_A_IWD_14wk37/LTE_A_Testsuite.ttcn create mode 100644 LTE_A_IWD_14wk37/PicsPixit/CDMA2000_Parameters.ttcn create mode 100644 LTE_A_IWD_14wk37/PicsPixit/EUTRA_Parameters.ttcn create mode 100644 LTE_A_IWD_14wk37/PicsPixit/GERAN_Parameters.ttcn create mode 100644 LTE_A_IWD_14wk37/PicsPixit/IMS_CC_Parameters.ttcn create mode 100644 LTE_A_IWD_14wk37/PicsPixit/IMS_CommonParameters.ttcn create mode 100644 LTE_A_IWD_14wk37/PicsPixit/Parameters.ttcn create mode 100644 LTE_A_IWD_14wk37/PicsPixit/UTRAN_Parameters.ttcn create mode 100644 LTE_A_IWD_14wk37/UTRAN/Common/UTRAN34_ASN1_ASP_Templates_r10.ttcn create mode 100644 NamingConventions/NC_modules_groups_dataTypes.ttcn3 create mode 100644 NamingConventions/NC_parameters_functions_testCases_altsteps.ttcn3 create mode 100644 NamingConventions/NC_stf160templates.ttcn3 create mode 100644 NamingConventions/NC_templates_constants_signatures_enumeratedValues.ttcn3 create mode 100644 NamingConventions/NC_variables_timers_componentInstances_portInstances.ttcn3 create mode 100644 checkExternalFunctionInvocationPrecededByLogStatement/checkExternalFunctionInvocationPrecededByLogStatement.ttcn3 create mode 100644 checkExternalFunctionInvocationPrecededByLogStatement/checkExternalFunctionInvocationPrecededByLogStatement.ttcn3m create mode 100644 checkFunctionsModuleContainmentCheck/checkFunctionsModuleContainmentBad.ttcn3 create mode 100644 checkFunctionsModuleContainmentCheck/checkFunctionsModuleContainmentGood.ttcn3 create mode 100644 checkImportsComeFirst/checkImportsComeFirstBad.ttcn3 create mode 100644 checkImportsComeFirst/checkImportsComeFirstGood.ttcn3 create mode 100644 checkInconcOrFailSetVerdictPrecededByLog/checkInconcOrFailSetVerdictPrecededByLog.ttcn3 create mode 100644 checkInconcOrFailSetVerdictPrecededByLog/checkInconcOrFailSetVerdictPrecededByLog.ttcn3m create mode 100644 checkInterfaceModuleContainmentCheck/checkInterfaceModuleContainmentBad.ttcn3 create mode 100644 checkInterfaceModuleContainmentCheck/checkInterfaceModuleContainmentGood.ttcn3 create mode 100644 checkLocalDefinitionsComeFirst/checkLocalDefinitionsComeFirst.ttcn3 create mode 100644 checkLocalDefinitionsComeFirst/tmp.ttcn3 create mode 100644 checkLogFormat/checkLogFormat.ttcn3 create mode 100644 checkLogFormat/checkLogFormat.ttcn3m create mode 100644 checkModuleParamsModuleContainmentCheck/checkModuleParamsModuleContainmentBad.ttcn3 create mode 100644 checkModuleParamsModuleContainmentCheck/checkModuleParamsModuleContainmentGood.ttcn3 create mode 100644 checkNoAllKeywordInPortDefinitions/checkNoAllKeywordInPortDefinitions.ttcn3 create mode 100644 checkNoAnyTypeKeyword/checkNoAnyTypeKeyword.ttcn3 create mode 100644 checkNoDuplicatedModuleDefinitionIdentifiers/checkFunctionsModuleContainmentCheck/checkFunctionsModuleContainmentBad.ttcn3 create mode 100644 checkNoDuplicatedModuleDefinitionIdentifiers/checkFunctionsModuleContainmentCheck/checkFunctionsModuleContainmentGood.ttcn3 create mode 100644 checkNoDuplicatedModuleDefinitionIdentifiers/types.ttcn3 create mode 100644 checkNoInlineTemplates/checkNoInlineTemplates.ttcn3 create mode 100644 checkNoLabelsOrGotoStatements/checkNoLabelsOrGotoStatements.ttcn3 create mode 100644 checkNoLiterals/checkNoLiterals.ttcn3 create mode 100644 checkNoModifiedTemplateOfModifiedTemplate/checkNoModifiedTemplateOfModifiedTemplate.ttcn3 create mode 100644 checkNoModifiedTemplateOfModifiedTemplate/checkNoModifiedTemplateOfModifiedTemplateExternal.ttcn3 create mode 100644 checkNoNestedAltStatements/checkNoNestedAltStatements.ttcn3 create mode 100644 checkNoOverSpecificRunsOn/checkNoOverSpecificRunsOn.ttcn3 create mode 100644 checkNoOverSpecificRunsOn/checkNoOverSpecificRunsOnOverImport.ttcn3 create mode 100644 checkNoOverSpecificRunsOn/simpleCase.ttcn3 create mode 100644 checkNoPermutationKeyword/checkNoPermutationKeyword.ttcn3 create mode 100644 checkNoUnusedFormalParameters/checkNoUnusedFormalParameters.ttcn3 create mode 100644 checkNoUnusedFormalParameters/tmp.ttcn3 create mode 100644 checkNoUnusedLocalDefinitions/checkNoUnusedLocalDefinitions.ttcn3 create mode 100644 checkNoUnusedLocalDefinitions/checkNoUnusedLocalDefinitionsOverImport.ttcn3 create mode 100644 checkPortMessageGrouping/checkPortMessageGrouping.ttcn3 create mode 100644 checkPortMessageGrouping/checkPortMessageGroupingExternal.ttcn3 create mode 100644 checkTemplatesModuleContainmentCheck/checkTemplatesModuleContainmentBad.ttcn3 create mode 100644 checkTemplatesModuleContainmentCheck/checkTemplatesModuleContainmentGood.ttcn3 create mode 100644 checkTestControlModuleContainmentCheck/checkTestControlModuleContainmentBad.ttcn3 create mode 100644 checkTestControlModuleContainmentCheck/checkTestControlModuleContainmentGood.ttcn3 create mode 100644 checkTestSystemModuleContainmentCheck/checkTestSystemModuleContainmentBad.ttcn3 create mode 100644 checkTestSystemModuleContainmentCheck/checkTestSystemModuleContainmentGood.ttcn3 create mode 100644 checkTestcasesModuleContainmentCheck/checkTestcasesModuleContainmentBad.ttcn3 create mode 100644 checkTestcasesModuleContainmentCheck/checkTestcasesModuleContainmentGood.ttcn3 create mode 100644 checkTestcasesModuleImportsLibCommon_Sync/checkTestcasesModuleImportsLibCommon_SyncGood.ttcn3 create mode 100644 checkTestcasesModuleImportsLibCommon_Sync/checkTestcasesModuleImportsLibCommon_syncBad.ttcn3 create mode 100644 checkTypeDefOrderInGroup/checkTypeDefOrderInGroup.ttcn3 create mode 100644 checkTypesAndValuesModuleContainmentCheck/checkTypesAndValuesModuleContainmentCheckBad.ttcn3 create mode 100644 checkTypesAndValuesModuleContainmentCheck/checkTypesAndValuesModuleContainmentCheckGood.ttcn3 create mode 100644 checkTypesAndValuesModuleImportsLibCommon/checkTypesAndValuesModuleImportsLibCommonGood.ttcn3 create mode 100644 checkTypesAndValuesModuleImportsLibCommon/checkTypesAndValuesModuleImportsLibcommonBad.ttcn3 create mode 100644 checkZeroReferencedModuleDefinitions/checkZeroReferencedModuleDefinitions.ttcn3 create mode 100644 checkZeroReferencedModuleDefinitions/checkZeroReferencedModuleDefinitionsWithImports.ttcn3 create mode 100644 checkZeroReferencedModuleDefinitions/simpleTest.ttcn3 create mode 100644 multipleFileExtensions/checkInterfaceModuleContainmentBad.3mp create mode 100644 multipleFileExtensions/checkInterfaceModuleContainmentGood.ttcn create mode 100644 templates/EUTRA_CommonDefs.ttcn create mode 100644 templates/EUTRA_CommonDefs.ttcnm create mode 100644 templates/IMS_XML_Templates.ttcn create mode 100644 templates/IMS_XML_Templates.ttcnm create mode 100644 templates/MTC_Main_LTE_IRAT.ttcn create mode 100644 templates/MTC_Main_LTE_IRAT.ttcnm create mode 100644 templates/UTRAN_CommonAspDefs.ttcn create mode 100644 templates/UTRAN_CommonAspDefs.ttcnm create mode 100644 templates/UTRAN_CommonDefs.ttcn create mode 100644 templates/UTRAN_CommonDefs.ttcnm create mode 100644 templates/ifpresent-template.ttcn3 create mode 100644 templates/ifpresent-template.ttcn3m create mode 100644 templates/signature.ttcn3 create mode 100644 templates/signature.ttcn3m create mode 100644 ts01/behaviourDefinition.ttcn3 create mode 100644 ts01/nested/dataDefinition.ttcn3 create mode 100644 ts02/inresDefinitions.ttcn3 create mode 100644 ts02/inresDistributed.ttcn3 create mode 100644 ts02/inresLocal.ttcn3 create mode 100644 ts02/inresUserDefinitions.ttcn3 create mode 100644 ts03/LibSip_SDPTypes.ttcn3 create mode 100644 ts03/ifpresent-template.ttcn3 create mode 100644 ts04/find_cross_references.ttcn3 diff --git a/IMS_PART4_IWD_14wk37/Common/Common/CommonDefs.ttcn b/IMS_PART4_IWD_14wk37/Common/Common/CommonDefs.ttcn new file mode 100644 index 0000000..47f1330 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/Common/CommonDefs.ttcn @@ -0,0 +1,1033 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 12:44:18 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12148 $ +/******************************************************************************/ + +module CommonDefs { + + //---------------------------------------------------------------------------- + // type definitions: + + type bitstring B1_Type length(1); + type bitstring B2_Type length(2); + type bitstring B3_Type length(3); + type bitstring B4_Type length(4); + type bitstring B5_Type length(5); + type bitstring B6_Type length(6); + type bitstring B7_Type length(7); + type bitstring B7_15_Type length(7..15); // NOTE: length restriction can only be a range but not two destinct lengths + type bitstring B8_Type length(8); + type bitstring B9_Type length(9); + type bitstring B10_Type length(10); + type bitstring B11_Type length(11); + type bitstring B12_Type length(12); + type bitstring B13_Type length(13); + type bitstring B14_Type length(14); + type bitstring B15_Type length(15); + type bitstring B16_Type length(16); + type bitstring B20_Type length(20); + type bitstring B24_Type length(24); + type bitstring B27_Type length(27); + type bitstring B28_Type length(28); + type bitstring B32_Type length(32); + type bitstring B36_Type length(36); + type bitstring B40_Type length(40); + type bitstring B41_Type length(41); + type bitstring B43_Type length(43); + type bitstring B47_Type length(47); + type bitstring B48_Type length(48); + type bitstring B56_Type length(56); + type bitstring B64_Type length(64); + type bitstring B80_Type length(80); + type bitstring B112_Type length(112); + type bitstring B128_Type length(128); + type bitstring B160_Type length(160); + type bitstring B192_Type length(192); + type bitstring B256_Type length(256); + type bitstring B32_128_Type length(32..128); + + type B128_Type B128_Key_Type; /* 128 bit security key */ + type B256_Type B256_Key_Type; /* 256 bit security key */ + + type octetstring O1_Type length(1); + type octetstring O2_Type length(2); + type octetstring O3_Type length(3); + type octetstring O4_Type length(4); + type octetstring O5_Type length(5); + type octetstring O6_Type length(6); + type octetstring O8_Type length(8); + type octetstring O9_Type length(9); + type octetstring O10_Type length(10); + type octetstring O13_Type length(13); + type octetstring O14_Type length(14); + type octetstring O15_Type length(15); + type octetstring O16_Type length(16); + type octetstring O32_Type length(32); + type octetstring O43_Type length(43); + + type hexstring H2_Type length(2); + type hexstring H4_Type length(4); + type hexstring H12_Type length(12); + type hexstring H14_Type length(14); + + type boolean Null_Type (true); // dummy type for 'typeless' fields in unions + type boolean Dummy_Type (true); // dummy type for temporary purposes only + + const integer tsc_UInt8Max := 255; + const integer tsc_UInt16Max := 65535; + const integer tsc_UInt20Max := 1048575; + const integer tsc_UInt32Max := 4294967295; + + type integer UInt_Type (0 .. infinity); + type integer UInt8_Type (0 .. tsc_UInt8Max); + type integer UInt16_Type (0 .. tsc_UInt16Max); + type integer UInt20_Type (0 .. tsc_UInt20Max); + type integer UInt32_Type (0 .. tsc_UInt32Max); + + type charstring Char1_Type length (1); + type record of Char1_Type Char1List_Type; + type record of charstring CharStringList_Type; + + type record of integer IntegerList_Type; + + type enumerated SinglePLMN_TestedType {SinglePLMN, MultiPLMN, MultiPLMNinPrimaryBand, MultiPLMNinSecondaryBand}; // @sic R5-123667 sic@ + type enumerated EUTRA_ATTACH_TESTED_Type { EPS_ATTACH_ONLY, COMBINED_ATTACH}; + type enumerated NAS_ATTACH_STATE_Type {ATTACHED, DETACHED}; + type enumerated UTRAN_FDD_TDD_Type {UTRAN_FDD, UTRAN_TDD}; + type enumerated RATComb_Tested_Type {EUTRA_UTRA, EUTRA_GERAN, EUTRA_Only}; + + type enumerated EUTRA_CellId_Type { + eutra_Cell_NonSpecific, + eutra_Cell1, + eutra_Cell2, + eutra_Cell3, + eutra_Cell4, + eutra_Cell6, + eutra_Cell10, + eutra_Cell11, + eutra_Cell12, + eutra_Cell13, + eutra_Cell14, + eutra_Cell23, + eutra_Cell28, + eutra_Cell29, + eutra_Cell30, + eutra_Cell31, + eutra_CellA, + eutra_CellB, + eutra_CellC, + eutra_CellD, + eutra_CellE, + eutra_CellG, + eutra_CellH, + eutra_CellI, + eutra_CellJ, + eutra_CellK, + eutra_CellL, + eutra_CellM + }; + + type record length (0..7) of EUTRA_CellId_Type EUTRA_CellIdList_Type; + + type enumerated UTRAN_CellId_Type { + utran_CellDedicated (-1), + utran_Cell5 (5), + utran_Cell7 (7), + utran_Cell8 (8), + utran_Cell9 (9), + utran34_Cell1 (1000), + utran34_Cell2 (1001), + utran34_Cell3 (1002), + utran34_Cell4 (1003), + utran34_Cell5 (1004), + utran34_Cell6 (1005), + utran34_Cell7 (1006), + utran34_Cell8 (1007), + utran34_CellA (2000), + utran34_CellB (2001), + utran34_CellC (2002), + utran34_CellD (2003), + utran34_CellE (2004), + utran34_CellF (2005), + utran34_CellG (2006), + utran34_CellH (2007) + }; // @sic R5-133563: added utran34_CellA/B/C... for 34.123-1 NAS tc sic@ + + type record of UTRAN_CellId_Type UTRAN_CellIdList_Type; + + type integer IP_DrbId_Type; /* DRB identity type common for all RATs: + * - for EUTRA it corrensponds to the ASN.1 type DRB-Identity + * - for UTRAN it corrensponds to the ASN.1 type RB-Identity and values are as defined in TS 34.123-3 Table 8.2.4.1 + * - for GERAN the NSAPI value (type record NSAPI) may be used (FFS) + * NOTE: this is introduced to simplify the dependencies (i.e. to keep IP_ASP_TypeDefs independent from any RAT specific type definitions) */ + + type record IP_EUTRA_DrbInfo_Type { + EUTRA_CellId_Type CellId, /* data is routed to a specific cell regardless of whether the same DRB is configured in any other cell */ + IP_DrbId_Type DrbId optional /* mandatory at the system interface */ + }; + type record IP_UTRAN_GERAN_DrbInfo_Type { + integer CellId, + IP_DrbId_Type DrbId optional /* mandatory at the system interface */ + }; + type union IP_DrbInfo_Type { + IP_EUTRA_DrbInfo_Type Eutra, + IP_UTRAN_GERAN_DrbInfo_Type Utran, + IP_UTRAN_GERAN_DrbInfo_Type Geran + }; + + type enumerated GPRS_CipheringAlgorithm_Type { + gea0(0), + gea2(2), + gea3(3), + gea4(4) + }; + + type enumerated IPCAN_RAN_Type { /* radio access network technology used by the IPCAN PTC */ + GERAN, + UTRAN_FDD, + UTRAN_TDD, + EUTRA_FDD, + EUTRA_TDD + }; + type IPCAN_RAN_Type RANTech; /* alias to cope with (old) 34.229 implementation */ + + // To indicate which PTCs are configured (EUTRA alone is included for completeness) + type enumerated IRAT_ConfiguredPTCs_Type { EUTRA_Only, EUTRA_UTRAN, EUTRA_GERAN, EUTRA_UTRAN_GERAN, EUTRA_CDMA2000, UTRAN_Only, UTRAN_GERAN } + + const float tsc_GuardTimePreamble := 180.0; + const float tsc_GuardTimePreamble_EmptyCSG := tsc_GuardTimePreamble * int2float(4); + + // definitions needed for IP and IMS handling + const integer tsc_NoOfPDNs := 2; + const integer tsc_Index_PDN1 := 0; + const integer tsc_Index_PDN2 := 1; + type enumerated PDN_Index_Type { PDN_1 (0), PDN_2 (1), PDN_2a, PDN_Internet }; + + //---------------------------------------------------------------------------- + // constant to generate PRBS sequence + const octetstring tsc_RandomPRBS := + 'FFE665A5C5CA3452085408ABEECE4B0B813FD337873F2CD1E29AE91BD6C8E14F'O + & 'DE630F8195688EBE465F09816A8EEB1B83953DD362DAE3B06D5B76D8E3E53087'O + & 'EA645A09017FD99C3CACBB46DF1CD61DA9C435F89943DF9CC34ADEE31AD6E24F'O + & 'A1903D53778D949742750DD49DE9CE9E430AD448A14575D89C16025508814020'O //octets 0 .. 127 + & '0555DDC9CBCB9EC31F833F866A5BA390680EAB11282EAE44F5E7658F6B247A0C'O + & '54A21057F73278595C235077F267A59097E8CEB4EDE49A16FDB36D2485EA3107'O + & 'D59DC360700D5488BEB9B96C24AF44DF498BC135788C14A8BBEC64A5EF64DA1C'O + & '5608FEB312D7B738D3E2CFB4C74A7458A3EF9B3C79F3CD348740DFE330780C01'O //octets 128 .. 255 + & 'FFCCCB4B8B9468A410A81157DD9C9617027FA66F0E7E59A3C535D237AD91C29F'O + & 'BCC61F032AD11D7C8CBE1302D51DD637072A7BA6C5B5C760DAB6EDB1C7CA610F'O + & 'D4C8B41202FFB3387959768DBE39AC3B53886BF13287BF398695BDC635ADC49F'O + & '43207AA6EF1B292E84EA1BA93BD39D3C8615A891428AEBB1382C04AA11028040'O //octets 256 .. 383 + & '0AABBB9397973D863F067F0CD4B74720D01D5622505D5C89EBCECB1ED648F418'O + & 'A94420AFEE64F0B2B846A0EFE4CF4B212FD19D69DBC9342DFB66DA490BD4620F'O + & 'AB3B86C0E01AA9117D7372D8495E89BE9317826AF118295177D8C94BDEC9B438'O + & 'AC11FD6625AF6E71A7C59F698E94E8B147DF3678F3E79A690E81BFC660F01803'O //octets 384 .. 511 + & 'FF9996971728D148215022AFBB392C2E04FF4CDE1CFCB3478A6BA46F5B23853F'O + & '798C3E0655A23AF9197C2605AA3BAC6E0E54F74D8B6B8EC1B56DDB638F94C21F'O + & 'A991682405FF6670F2B2ED1B7C735876A710D7E2650F7E730D2B7B8C6B5B893E'O + & '8640F54DDE36525D09D4375277A73A790C2B51228515D7627058095422050080'O //octets 512 .. 639 + & '155777272F2E7B0C7E0CFE19A96E8E41A03AAC44A0BAB913D79D963DAC91E831'O + & '5288415FDCC9E165708D41DFC99E96425FA33AD3B792685BF6CDB49217A8C41F'O + & '56770D81C0355222FAE6E5B092BD137D262F04D5E23052A2EFB19297BD936871'O + & '5823FACC4B5EDCE34F8B3ED31D29D1628FBE6CF1E7CF34D21D037F8CC1E03007'O //octets 640 .. 767 + & 'FF332D2E2E51A29042A0455F7672585C09FE99BC39F9668F14D748DEB6470A7E'O + & 'F3187C0CAB4475F232F84C0B547758DC1CA9EE9B16D71D836ADBB6C71F29843F'O + & '5322D0480BFECCE1E565DA36F8E6B0ED4E21AFC4CA1EFCE61A56F718D6B7127D'O + & '0C81EA9BBC6CA4BA13A86EA4EF4E74F21856A2450A2BAEC4E0B012A8440A0100'O //octets 768 .. 895 + & '2AAEEE4E5E5CF618FC19FC3352DD1C834075588941757227AF3B2C7B5923D062'O + & 'A51082BFB993C2CAE11A83BF933D2C84BF4675A76F24D0B7ED9B69242F51883E'O + & 'ACEE1B03806AA445F5CDCB61257A26FA4C5E09ABC460A545DF63252F7B26D0E2'O + & 'B047F59896BDB9C69F167DA63A53A2C51F7CD9E3CF9E69A43A06FF1983C0600F'O //octets 896 .. 1023 + & 'FE665A5C5CA3452085408ABEECE4B0B813FD337873F2CD1E29AE91BD6C8E14FD'O + & 'E630F8195688EBE465F09816A8EEB1B83953DD362DAE3B06D5B76D8E3E53087E'O + & 'A645A09017FD99C3CACBB46DF1CD61DA9C435F89943DF9CC34ADEE31AD6E24FA'O + & '1903D53778D949742750DD49DE9CE9E430AD448A14575D89C160255088140200'O //octets 1024 .. 1151 + & '555DDC9CBCB9EC31F833F866A5BA390680EAB11282EAE44F5E7658F6B247A0C5'O + & '4A21057F73278595C235077F267A59097E8CEB4EDE49A16FDB36D2485EA3107D'O + & '59DC360700D5488BEB9B96C24AF44DF498BC135788C14A8BBEC64A5EF64DA1C5'O + & '608FEB312D7B738D3E2CFB4C74A7458A3EF9B3C79F3CD348740DFE330780C01F'O //octets 1152 .. 1279 + & 'FCCCB4B8B9468A410A81157DD9C9617027FA66F0E7E59A3C535D237AD91C29FB'O + & 'CC61F032AD11D7C8CBE1302D51DD637072A7BA6C5B5C760DAB6EDB1C7CA610FD'O + & '4C8B41202FFB3387959768DBE39AC3B53886BF13287BF398695BDC635ADC49F4'O + & '3207AA6EF1B292E84EA1BA93BD39D3C8615A891428AEBB1382C04AA110280400'O //octets 1280 .. 1407 + & 'AABBB9397973D863F067F0CD4B74720D01D5622505D5C89EBCECB1ED648F418A'O + & '94420AFEE64F0B2B846A0EFE4CF4B212FD19D69DBC9342DFB66DA490BD4620FA'O + & 'B3B86C0E01AA9117D7372D8495E89BE9317826AF118295177D8C94BDEC9B438A'O + & 'C11FD6625AF6E71A7C59F698E94E8B147DF3678F3E79A690E81BFC660F01803F'O //octets 1408 .. 1535 + & 'F9996971728D148215022AFBB392C2E04FF4CDE1CFCB3478A6BA46F5B23853F7'O + & '98C3E0655A23AF9197C2605AA3BAC6E0E54F74D8B6B8EC1B56DDB638F94C21FA'O + & '991682405FF6670F2B2ED1B7C735876A710D7E2650F7E730D2B7B8C6B5B893E8'O + & '640F54DDE36525D09D4375277A73A790C2B51228515D76270580954220500801'O //octets 1536 .. 1663 + & '55777272F2E7B0C7E0CFE19A96E8E41A03AAC44A0BAB913D79D963DAC91E8315'O + & '288415FDCC9E165708D41DFC99E96425FA33AD3B792685BF6CDB49217A8C41F5'O + & '6770D81C0355222FAE6E5B092BD137D262F04D5E23052A2EFB19297BD9368715'O + & '823FACC4B5EDCE34F8B3ED31D29D1628FBE6CF1E7CF34D21D037F8CC1E03007F'O //octets 1664 .. 1791 + & 'F332D2E2E51A29042A0455F7672585C09FE99BC39F9668F14D748DEB6470A7EF'O + & '3187C0CAB4475F232F84C0B547758DC1CA9EE9B16D71D836ADBB6C71F29843F5'O + & '322D0480BFECCE1E565DA36F8E6B0ED4E21AFC4CA1EFCE61A56F718D6B7127D0'O + & 'C81EA9BBC6CA4BA13A86EA4EF4E74F21856A2450A2BAEC4E0B012A8440A01002'O //octets 1792 .. 1919 + & 'AAEEE4E5E5CF618FC19FC3352DD1C834075588941757227AF3B2C7B5923D062A'O + & '51082BFB993C2CAE11A83BF933D2C84BF4675A76F24D0B7ED9B69242F51883EA'O + & 'CEE1B03806AA445F5CDCB61257A26FA4C5E09ABC460A545DF63252F7B26D0E2B'O + & '047F59896BDB9C69F167DA63A53A2C51F7CD9E3CF9E69A43A06FF1983C0600'O; //octets 1920 .. 2046 + + const charstring tsc_AT_ResultOK := "OK"; + const charstring tsc_Fox := "The quick brown fox jumps over the lazy dog's back. Kaufen Sie Ihrer Frau vier bequeme Pelze. - 0123456789 - THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG'S BACK."; + const charstring tsc_Fox_PDU := "06812222222222" + & "11000A9174097538740000A7a054741914afa7c76b9058febebb41e6371ea4aeb7e173d0db5e9683" + & "e8e832881dd6e741e4f7f9340789c3e3b50bb40cd7cd6537689a2e83926879590e32cac375903d5d" + & "9683c4e578bddc2e83a065b6beec02b540b0986c46abd96eb81ca805a2228ba06835395c8284d2e7" + & "d509323eb12065b5099d829ed6a21444451641cca0360b223e8fa72948181c2e5d"; + + //---------------------------------------------------------------------------- + // common functions: + + type integer LineNo_Type; + + /* + * @desc local function + * @param p_FileName + * @param p_LineNo + * @param p_Msg + * @return charstring + */ + function fl_FormatLog(charstring p_FileName, + LineNo_Type p_LineNo, + charstring p_Msg) return charstring + { + var charstring v_LineNoStr := int2str(p_LineNo); + + return p_FileName & ":" & v_LineNoStr & ": " & p_Msg; /* common "UNIX style" format as e.g. used by grep; + * the final format for this output is FFS */ + + } + + //---------------------------------------------------------------------------- + /* + * @desc function for common error logging + * @param p_FileName + * @param p_LineNo + * @param p_Msg + */ + function f_ErrorLog(charstring p_FileName, + LineNo_Type p_LineNo, + charstring p_Msg) + { + log(fl_FormatLog(p_FileName, p_LineNo, p_Msg)); + }; + + //---------------------------------------------------------------------------- + /* + * @desc common function for verdict assignment + * @param p_Verdict + * @param p_FileName + * @param p_LineNo + * @param p_Msg + */ + function f_SetVerdict(verdicttype p_Verdict, + charstring p_FileName, + LineNo_Type p_LineNo, + charstring p_Msg) + { + var charstring v_OutputLine := fl_FormatLog(p_FileName, p_LineNo, p_Msg); + setverdict(p_Verdict, v_OutputLine); + } + + //---------------------------------------------------------------------------- + /* + * @desc Common functions to be called in case unrecoverable errors + * (i.e. runtimer errors generated by TTCN) + * @param p_FileName + * @param p_LineNo + * @param p_Msg + */ + function FatalError(charstring p_FileName, + LineNo_Type p_LineNo, + charstring p_Msg) + { + // setverdict(inconc); // setverdict causes problems when FatalError is used in a function called from within a template + f_ErrorLog(p_FileName, p_LineNo, p_Msg); + testcase.stop (p_Msg); // This operation now defined in TTCN3 v4.2.1 + }; + + /* + * @desc set verdict inconc in cases when no pass/fail is possible e.g. due to wrong PICS/PIXIT + * NOTE: as there is no need to evaluate any component specific information ans as "self.kill" can be used to terminate the test case + * (resulting in the final verdict 'inconc') this function is independent from any component and can be call from everywhere where 'setverdict' or 'self.kill' are allowed + * @param p_FileName + * @param p_LineNo + * @param p_Msg + */ + function f_SetVerdictInconc(charstring p_FileName, + LineNo_Type p_LineNo, + charstring p_Msg) + { + f_SetVerdict(inconc, p_FileName, p_LineNo, p_Msg); + self.kill; // => test case will be terminated immediately + } + + + + //---------------------------------------------------------------------------- + /* + * @desc Common function to delay the test case for the given time + * @param p_DelayTime + */ + function f_Delay ( float p_DelayTime ) + { + timer t_Delay; + + t_Delay.start ( p_DelayTime ); + t_Delay.timeout; + }; + + //---------------------------------------------------------------------------- + + function f_TemplateBit2Int(template (present) integer p_Val, + integer p_Length) return template bitstring + { /* Auxiliary function + * note: there is no possibility in TTCN-3 to check whether a template parameter + * which is not a value is "*", "?" or omit + * => we restrict p_Val to "template (present)", i.e it shall be a value or "?" */ + if (isvalue(p_Val)) { + return int2bit(valueof(p_Val), p_Length); + } else { + return ?; + } + } + + //---------------------------------------------------------------------------- + /* + * @desc returns index of first occurency of any char of p_CharList in p_String starting from p_StartIndex; + * returns -1 if there is no occurency + * @param p_String + * @param p_CharList + * @param p_StartIndex + * @return integer + */ + function f_StringFindChar(charstring p_String, + Char1List_Type p_CharList, + UInt_Type p_StartIndex := 0) return integer + { + var integer v_NoOfChars := lengthof(p_CharList); + var integer v_Index; + var integer i; + var Char1_Type v_Char; + + if (v_NoOfChars == 0) { + return -1; + } + + for (v_Index:=p_StartIndex; v_Index 0) { + for (i:=0; i < k - 1; i := i+1) { + v_String := v_String & v_StringList[i] & p_JoinString; + } + v_String := v_String & v_StringList[i]; + } + return v_String; + } + + function f_CharStringList_Concat(CharStringList_Type p_StringList1, + CharStringList_Type p_StringList2) return CharStringList_Type + { + return p_StringList1 & p_StringList2; + } + + + function f_CharStringList_Add(CharStringList_Type p_StringList, + charstring p_NewString) return CharStringList_Type + { + var integer v_Length := lengthof(p_StringList); + var CharStringList_Type v_StringList := p_StringList; + + v_StringList[v_Length] := p_NewString; + return v_StringList; + } + + //---------------------------------------------------------------------------- + + function f_ConvertBoolToBit(boolean p_Bool) return B1_Type + { + var B1_Type v_Bit := '0'B; + if (p_Bool) { + v_Bit := '1'B; + } + return v_Bit; + } + + //---------------------------------------------------------------------------- + /* + * @desc return octet-aligned bitstring + * @param p_Bitstring + * @return bitstring + */ + function f_OctetAlignedBitString( bitstring p_Bitstring) return bitstring + { // @sic R5s100324 change 3 sic@ + var bitstring v_Bitstring := p_Bitstring; + var integer v_BitLength := lengthof(p_Bitstring); + var integer v_PaddingLength; + var integer i; + + if ((v_BitLength mod 8) > 0) { // if not already byte aligned + v_PaddingLength := 8 - (v_BitLength mod 8); + for (i:=0; i < v_PaddingLength; i := i+1) { + v_Bitstring := v_Bitstring & '0'B; + } + } + + return v_Bitstring; + } + + //---------------------------------------------------------------------------- + /* + * @desc function to extract output string from random test pattern of a certain length and at a starting point + * @param p_Start + * @param p_N + * @return octetstring + */ + function f_GetN_OctetsFromPRBS(UInt_Type p_Start, + UInt_Type p_N) + return octetstring + { + var integer i; + var integer k; + var octetstring v_Noctets :=''O; // output string to be extracted from random test pattern + + for (i:= 0; i< p_N; i := i+1) { + k := p_Start + i; + k := k mod 2047; + v_Noctets := v_Noctets & tsc_RandomPRBS[k]; + } + return v_Noctets; + } + + //---------------------------------------------------------------------------- + /* + * @desc check whether given testase name fits L2 test case + * @return boolean + */ + function f_TestcaseIsL2Testcase() return boolean + { + var charstring v_TestcaseName := testcasename(); // This operation now defined in TTCN3 v4.2.1 + var template charstring v_L2TestcasePattern := pattern "TC_7_*"; /* @sic R5s100136 sic@ */ + return (match(v_TestcaseName, v_L2TestcasePattern)); + } + + //---------------------------------------------------------------------------- + + function f_TestcaseIsDrbTestcase() return boolean + { + var charstring v_TestcaseName := testcasename(); // This operation now defined in TTCN3 v4.2.1 + var template charstring v_L2TestcasePattern := pattern "TC_12_*"; + return (match(v_TestcaseName, v_L2TestcasePattern)); + } + + //---------------------------------------------------------------------------- + + type enumerated Gsm7BitPacking_Type { SMS_Packing, CBS_Packing, USSD_Packing }; + + const integer tsc_Gsm7BitLookup[32..126][0..1] := { /* ASCII to GSM 7 bit char conversion table + Self indexing lookup table per ASCII integer value + 1st field - status + 0 => no change + 1 => basic table - no translation required + 2 => escape to ext table 23.038 6.2.1.1 + 3 => char does not exist in gsm char table + 2nd field - translation integer value per 23.038 6.2.1/6.2.1.1 + range 0-127 & dummy entry 256 */ + { 0, 256 }, // 32 - space - no xlat + { 0, 256 }, // 33 - "!" - no xlat + { 0, 256 }, // 34 - """ - no xlat + { 0, 256 }, // 35 - "#" - no xlat + { 1, 2 }, // 36 - "$" - gsm 23.038 6.2.1 - 02 + { 0, 256 }, // 37 - "%" - no xlat + { 0, 256 }, // 38 - "&" - no xlat + { 0, 256 }, // 39 - "'" - no xlat + { 0, 256 }, // 40 - "(" - no xlat + { 0, 256 }, // 41 - ")" - no xlat + { 0, 256 }, // 42 - "*" - no xlat + { 0, 256 }, // 43 - "+" - no xlat + { 0, 256 }, // 44 - "," - no xlat + { 0, 256 }, // 45 - "-" - no xlat + { 0, 256 }, // 46 - "." - no xlat + { 0, 256 }, // 47 - "/" - no xlat + { 0, 256 }, // 48 - "0" - no xlat + { 0, 256 }, // 49 - "1" - no xlat + { 0, 256 }, // 50 - "2" - no xlat + { 0, 256 }, // 51 - "3" - no xlat + { 0, 256 }, // 52 - "4" - no xlat + { 0, 256 }, // 53 - "5" - no xlat + { 0, 256 }, // 54 - "6" - no xlat + { 0, 256 }, // 55 - "7" - no xlat + { 0, 256 }, // 56 - "8" - no xlat + { 0, 256 }, // 57 - "9" - no xlat + { 0, 256 }, // 58 - ":" - no xlat + { 0, 256 }, // 59 - ";" - no xlat + { 0, 256 }, // 60 - "<" - no xlat + { 0, 256 }, // 61 - "=" - no xlat + { 0, 256 }, // 62 - ">" - no xlat + { 0, 256 }, // 63 - "9" - no xlat + { 1, 0 }, // 64 - "@" - gsm 23.038 6.2.1 - 00 + { 0, 256 }, // 65 - "A" - no xlat + { 0, 256 }, // 66 - "B" - no xlat + { 0, 256 }, // 67 - "C" - no xlat + { 0, 256 }, // 68 - "D" - no xlat + { 0, 256 }, // 69 - "E" - no xlat + { 0, 256 }, // 70 - "F" - no xlat + { 0, 256 }, // 71 - "G" - no xlat + { 0, 256 }, // 72 - "H" - no xlat + { 0, 256 }, // 73 - "I" - no xlat + { 0, 256 }, // 74 - "J" - no xlat + { 0, 256 }, // 75 - "K" - no xlat + { 0, 256 }, // 76 - "L" - no xlat + { 0, 256 }, // 77 - "M" - no xlat + { 0, 256 }, // 78 - "N" - no xlat + { 0, 256 }, // 79 - "0" - no xlat + { 0, 256 }, // 80 - "P" - no xlat + { 0, 256 }, // 81 - "Q" - no xlat + { 0, 256 }, // 82 - "R" - no xlat + { 0, 256 }, // 83 - "S" - no xlat + { 0, 256 }, // 84 - "T" - no xlat + { 0, 256 }, // 85 - "U" - no xlat + { 0, 256 }, // 86 - "V" - no xlat + { 0, 256 }, // 87 - "W" - no xlat + { 0, 256 }, // 88 - "X" - no xlat + { 0, 256 }, // 89 - "Y" - no xlat + { 0, 256 }, // 90 - "Z" - no xlat + { 2, 60 }, // 91 - "[" - gsm 23.038 6.2.1.1 ext. - 3C + { 2, 47 }, // 92 - "\" - gsm 23.038 6.2.1.1 ext. - 2F + { 2, 62 }, // 93 - "]" - gsm 23.038 6.2.1.1 ext. - 3E + { 2, 20 }, // 94 - "^" - gsm 23.038 6.2.1.1 ext. - 14 + { 1, 17 }, // 95 - "_" - gsm 23.038 6.2.1 - 11 + { 3, 256 }, // 96 - "`" - char does not exist in gsm 23.038 6.2.1/6.2.1.1 + { 0, 256 }, // 97 - "a" - no xlat + { 0, 256 }, // 98 - "b" - no xlat + { 0, 256 }, // 99 - "c" - no xlat + { 0, 256 }, // 100 - "d" - no xlat + { 0, 256 }, // 101 - "e" - no xlat + { 0, 256 }, // 102 - "f" - no xlat + { 0, 256 }, // 103 - "g" - no xlat + { 0, 256 }, // 104 - "h" - no xlat + { 0, 256 }, // 105 - "i" - no xlat + { 0, 256 }, // 106 - "j" - no xlat + { 0, 256 }, // 107 - "k" - no xlat + { 0, 256 }, // 108 - "l" - no xlat + { 0, 256 }, // 109 - "m" - no xlat + { 0, 256 }, // 110 - "n" - no xlat + { 0, 256 }, // 111 - "o" - no xlat + { 0, 256 }, // 112 - "p" - no xlat + { 0, 256 }, // 113 - "q" - no xlat + { 0, 256 }, // 114 - "r" - no xlat + { 0, 256 }, // 115 - "s" - no xlat + { 0, 256 }, // 116 - "t" - no xlat + { 0, 256 }, // 117 - "u" - no xlat + { 0, 256 }, // 118 - "v" - no xlat + { 0, 256 }, // 119 - "w" - no xlat + { 0, 256 }, // 120 - "x" - no xlat + { 0, 256 }, // 121 - "y" - no xlat + { 0, 256 }, // 122 - "z" - no xlat + { 2, 40 }, // 123 - "{" - gsm 23.038 6.2.1.1 ext. - 28 + { 2, 64 }, // 124 - "|" - gsm 23.038 6.2.1.1 ext. - 40 + { 2, 41 }, // 125 - "}" - gsm 23.038 6.2.1.1 ext. - 29 + { 2, 61 } // 126 - "~" - gsm 23.038 6.2.1.1 ext. - 3D + }; + + function fl_XlatAcsiiToGsm7Bit(octetstring p_AsciiOctetString) return octetstring + { + var octetstring v_GsmOctetString; + var integer v_XlatStatus; + var integer v_AsciiIndex; + var integer i; + var integer j := 0; + + for (i:=0; i '48616C6C6F'O + var bitstring v_BitString := ''B; + var bitstring v_Padding := ''B; + var integer v_TextLength; + var integer v_BitStringLength := 0; + var integer v_IntValue; + var integer v_NoOfOctets; + var integer v_NoOfPaddingBits; + var integer v_Index; + var integer i; + + // convert ascii table to GSM 7 bit table + v_OctetString := fl_XlatAcsiiToGsm7Bit(v_OctetString); // @sic R5s130103 change 3 sic@ + v_TextLength := lengthof(v_OctetString); + + if (((p_Packing == SMS_Packing) and (v_TextLength > 160)) or // a maximum of 160 characters for SMS (i.e. 140 octets) + ((p_Packing == CBS_Packing) and (v_TextLength > 93)) or // a maximum of 93 characters for CBS (i.e. 82 octets) + ((p_Packing == USSD_Packing) and (v_TextLength > 182))) { // a maximum of 182 characters for USSD (i.e. 160 octets) + FatalError(__FILE__, __LINE__, "input string is too long"); + } + + for (i:=0; i 0) { + if ((p_Packing == USSD_Packing) and (v_NoOfPaddingBits == 7)) { + v_Padding := '0001101'B; // use instead of the @ character; see TS 23.038 cl. 6.1.2.3.1 + } else { + v_Padding := int2bit(0, v_NoOfPaddingBits); // 1..7 padding bits, all 0 + } + } + v_BitString := v_Padding & v_BitString; + + // convert bitstring back to octetstring: the first character is at the end of the bitstring + // => we need to take the octets from the end of the bitstring + v_OctetString := ''O; + for (i:=0; i < v_NoOfOctets; i:=i+1) { + v_Index := (v_NoOfOctets - (i+1)) * 8; // get start index of the next octet + v_OctetString[i] := bit2oct(substr(v_BitString, v_Index, 8)); + } + return v_OctetString; + } + + function f_CharPacking_IA5toBCD(charstring p_ASCII_String) return octetstring + { /* Packed BCD coding with "swaping of nibbles" as required e.g. for encoding of called and calling party numbers in NAS messages (e.g. TS 24.004 cl. 10.5.4.7 and 10.5.4.9); + when the length of the input string is odd 'F' is aded as padding: + "0613454120" -> '6031541402'O - even number of digits + "06134541209" -> '6031541402F9'O - odd number of digits (padding) + "A6134541209" -> error */ + var integer i; + var charstring v_BcdString; + var integer v_Length := lengthof(p_ASCII_String); + var charstring v_ASCII_String := p_ASCII_String; + + // check input string + for (i := 0; i < v_Length; i := i+1) { + if (not match(p_ASCII_String[i], pattern "[0-9]")) { + FatalError(__FILE__, __LINE__, "invalid character for BCD string"); + } + } + + // add padding (if needed) + if (v_Length mod 2 != 0) { + v_ASCII_String := v_ASCII_String & "F"; + } + + // swap digits + for (i := 0; i < v_Length; i := i+2) { + v_BcdString[i] := v_ASCII_String[i+1]; + v_BcdString[i+1] := v_ASCII_String[i]; + } + + return str2oct(v_BcdString); + } + + //---------------------------------------------------------------------------- + + function f_BitstringReplaceMSB(bitstring p_Bitstring, + B1_Type p_NewMSB) return bitstring + { + return replace(p_Bitstring, 0, 1, p_NewMSB); + } + + //---------------------------------------------------------------------------- + + function f_Bitstring_BitIsSet(bitstring p_Bitstring, + integer p_Index) return boolean + { + if (p_Index >= lengthof(p_Bitstring)) { + FatalError(__FILE__, __LINE__, "invalid bit position"); + } + return (substr(p_Bitstring, p_Index, 1) == '1'B); + } + + //---------------------------------------------------------------------------- + /* system time acc. to default C library (see time.h) */ + + type record Struct_tm_Type { /* TTCN-3 equivalent for the "struct tm" as defined on C standard library (time.h or ctime.h for C or C++) */ + integer tm_sec, /* seconds after the minute 0..61 (tm_sec is generally 0-59. Extra range to accommodate for leap seconds in certain systems) */ + integer tm_min, /* minutes after the hour 0..59 */ + integer tm_hour, /* hours since midnight 0..23 */ + integer tm_mday, /* day of the month 1..31 */ + integer tm_mon, /* months since January 0..11 */ + integer tm_year, /* years since 1900 */ + integer tm_wday, /* days since Sunday 0..6 */ + integer tm_yday, /* days since January 1 0..365 */ + integer tm_isdst /* Daylight Saving Time flag */ + }; + + external function fx_GetSystemTime(out Struct_tm_Type p_Struct_tm, /* p_Struct_tm returns local system time; + * C implementation: + * time_t v_Now = time(NULL); + * struct tm *v_Tm = localtime(&v_Now); + */ + out integer p_TimezoneInfo); /* p_TimezoneInfo returns the difference (in seconds) between the UTC time (GMT) and the local time; + * C implementation: + * int timezone = (int)difftime(mktime(gmtime(&v_Now)), v_Now); + * NOTE: p_TimezoneInfo does not consider daylight saving e.g. it is always 3600 for CET independent of summer/winter + */ + + /* + * @desc auxiliary function for f_BCD_TimestampWithTimezone + * @param p_Val + * @return H2_Type + */ + function f_SwappedNibbles(integer p_Val) return H2_Type + { + var integer v_LowNibble := p_Val mod 10; + var integer v_HighNibble := (p_Val / 10) mod 10; + + return int2hex(v_LowNibble, 1) & int2hex(v_HighNibble, 1); + } + + /* + * @desc returns the timestamp as e.g. used as ServiceCentreTimeStamp for SMS with current time + * (see e.g. calculation of the TP Service Centre Time Stamp acc. to TS 23.040 cl. 9.2.3.11) + * Example: + * 2002 April 18, 15:32:46, timezone=4 + * f_BCD_TimestampWithTimezone returns 20408151236440 + * @return H14_Type + */ + function f_BCD_TimestampWithTimezone() return H14_Type + { /* @sic R5-1307270: common function to provide timestamp for MDT test cases too sic@ */ + var Struct_tm_Type v_LocalTime; + var integer v_TimezoneSeconds; + var integer v_TimezoneVal; + var integer v_SignVal := 0; // positive value per default + var H2_Type v_Year; + var H2_Type v_Month; + var H2_Type v_Day; + var H2_Type v_Hour; + var H2_Type v_Minute; + var H2_Type v_Second; + var H2_Type v_Timezone; + + fx_GetSystemTime(v_LocalTime, v_TimezoneSeconds); + + v_Year := f_SwappedNibbles(v_LocalTime.tm_year + 1900); /* acc. to definition of struct tm */ + v_Month := f_SwappedNibbles(v_LocalTime.tm_mon + 1); /* acc. to definition of struct tm */ + v_Day := f_SwappedNibbles(v_LocalTime.tm_mday); + v_Hour := f_SwappedNibbles(v_LocalTime.tm_hour); + v_Minute := f_SwappedNibbles(v_LocalTime.tm_min mod 60); /* v_LocalTime.tm_min can be 0..61 on some systems */ + v_Second := f_SwappedNibbles(v_LocalTime.tm_sec); + + /* Calculation of the timezone (-> 23.040): */ + if (v_LocalTime.tm_isdst > 0) { /* The value contained in the Time Zone field must take into account daylight saving time, such that when the sending entity changes from regular + (winter) time to daylight saving (summer) time, there is a change to the value in the Time Zone field, + for example in the UK the winter setting is 00000000 and the summer setting is 01000000. */ + v_TimezoneSeconds := v_TimezoneSeconds + 3600; + } + + if (v_TimezoneSeconds < 0) { + v_TimezoneSeconds := -v_TimezoneSeconds; + v_SignVal := 128; /* In the first of the two semi octets, the first bit (bit 3 of the seventh octet of the TP Service Centre Time Stamp field) + represents the algebraic sign of this difference (0: positive, 1: negative) */ + } + v_TimezoneVal := v_TimezoneSeconds / (60 * 15); /* The Time Zone indicates the difference, expressed in quarters of an hour, between the local time and GMT. */ + v_TimezoneVal := v_TimezoneVal mod 128; /* ... just to be sure */ + v_TimezoneVal := v_TimezoneVal + v_SignVal; /* set the upper bit */ + + v_Timezone := f_SwappedNibbles(v_TimezoneVal); + + return v_Year & v_Month & v_Day & v_Hour & v_Minute & v_Second & v_Timezone; + } + /* + * @desc wrapper function to strip the timezone (e.g. for 'AbsoluteTimeInfo' acc. to 36.331 cl. 6.3.6) + * @return H12_Type + * @status + */ + function f_BCD_TimestampWithoutTimezone() return H12_Type + { + var H14_Type v_TimestampWithTimezone := f_BCD_TimestampWithTimezone(); + return substr(v_TimestampWithTimezone, 0, 12); + } + + /* + * @desc wrapper function to convert f_BCD_TimestampWithoutTimezone() to bitstring as needed for MDT + * @return B48_Type + * @status + */ + + function f_MDT_GetAbsolute_TimeStamp() return B48_Type + { + return hex2bit(f_BCD_TimestampWithoutTimezone()); + } + + /* + * @desc To convert UTRAN cell ID acc to 34.123-3 clause 8.5 + * @param p_CellId - enumerated type + * @return integer + * @status + */ + function f_UtranCellId2Int(UTRAN_CellId_Type p_CellId) return integer + { // @sic R5s130195 Baseline moving to rel-11: UTRAN cellID enhanced sic@ + var integer v_CellId := enum2int(p_CellId); + + // @sic R5-133563: added utran34_CellA/B/C... for 34.123-1 NAS tc sic@ + if (v_CellId >= 2000) { + v_CellId := v_CellId - 2000; + } else if (v_CellId >= 1000) { + v_CellId := v_CellId - 1000; + } + return v_CellId; + } + + //---------------------------------------------------------------------------- + /* + * @desc check that the result string starts with specific sub-string + * @param p_SourceString + * @param p_StartString + * @return boolean + */ + function f_CheckStringStartWith(charstring p_SourceString, + charstring p_StartString) + return boolean + { + var integer v_Length := lengthof(p_StartString); + var charstring v_SubStr; + var boolean v_Result := false; + + if (v_Length <= lengthof(p_SourceString)) { + v_SubStr := substr(p_SourceString, 0, v_Length); + v_Result := (v_SubStr == p_StartString); + } + return v_Result; + } + +} diff --git a/IMS_PART4_IWD_14wk37/Common/Common/UpperTesterCommon.ttcn b/IMS_PART4_IWD_14wk37/Common/Common/UpperTesterCommon.ttcn new file mode 100644 index 0000000..630d9ae --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/Common/UpperTesterCommon.ttcn @@ -0,0 +1,118 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-06-28 13:27:35 +0200 (Sat, 28 Jun 2014) $ +// $Rev: 11783 $ +/******************************************************************************/ + +module UpperTesterCommon { + + group TypeDefs_Common { /* common types being used at the PTC <-> UpperTester interface as well as at the UpperTester <-> System interface */ + + type record Ut_Parameter_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + charstring Name, // name of the parameter/attribute + charstring Value // value (may need to be converted e.g. to integer) + }; + + type record of Ut_Parameter_Type Ut_ParameterList_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + type enumerated Ut_CnfReq_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + NO_CNF_REQUIRED, + CNF_REQUIRED, /* to request CNF as got from the UE */ + LOCAL_CNF_REQUIRED, /* to request immediate CNF after SS has submitted the command to the UE (SS shall not wait for the UE is responding) + @sic R5s110176 BASELINE MOVING 2011 sic@ */ + MULTIPLE_CNF // @sic R5s140316 sic@ + }; + + type record UT_COMMON_CNF { /* Common confirmation triggered by the UE; + used at the system interface as well as at the inter PTC interface; + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + boolean Result, // true: success; false: failure + charstring ResultString optional // contains response from the UE (if there is any) + }; + + } // end of group TypeDefs_Common + + //---------------------------------------------------------------------------- + + group TypeDefs_UT_System { // types being used at the UpperTester <-> System interface + + type record MMI_Cmd_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + charstring Cmd, /* commands corresponding to Ut_Common_Req_Type (e.g. "SelectPLMN"); + it is a charstring rather than a enumerated to allow generic implementation in the system adaptor */ + Ut_ParameterList_Type ParameterList optional /* additional information to perform the MMI: + e.g. for "SelectPLMN" this is {"MCC" }, {"MNC" } */ + + }; + type union Ut_System_Cmd_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + charstring AT, /* to carry mandatory and optional AT commands */ + MMI_Cmd_Type MMI /* to carry MMI commands and optional AT commands */ + }; + type record UT_SYSTEM_REQ { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + Ut_System_Cmd_Type Cmd, + Ut_CnfReq_Type CnfRequired /* Notes: a confirmation shall only be requested in cases when there is no signalling + * from the UE being triggered by the MMI/AT command + * @sic R5s110176 BASELINE MOVING 2011 sic@ */ + }; + } // end of group TypeDefs_UT_System + + //---------------------------------------------------------------------------- + + type port MTC_System_Ut message { /* Upper Tester: Port at MTC to be connected with system + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + out UT_SYSTEM_REQ; + in UT_COMMON_CNF; + }; + + //---------------------------------------------------------------------------- + + template (present) UT_COMMON_CNF car_UT_COMMON_CNF := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + Result := ?, // result is a mandatory field + ResultString := * + }; + + template (value) UT_SYSTEM_REQ cas_UT_SYSTEM_REQ(template (value) Ut_System_Cmd_Type p_ATorMMI_Cmd, + Ut_CnfReq_Type p_CnfRequired) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + Cmd := p_ATorMMI_Cmd, + CnfRequired := p_CnfRequired + }; + + template (value) Ut_Parameter_Type cs_Ut_Parameter_Common(charstring p_Name, + template (value) charstring p_Value) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + Name := p_Name, + Value := p_Value + }; + + template (value) Ut_System_Cmd_Type cs_AT_Cmd(charstring p_AtCmd) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + AT := p_AtCmd + }; + + template (value) Ut_System_Cmd_Type cs_MMI_Cmd(charstring p_MmiCmd, + template (omit) Ut_ParameterList_Type p_ParamList) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + MMI := { + Cmd := p_MmiCmd, + ParameterList := p_ParamList + } + }; + + /* + * @desc Check if a UT command is confirmed as expected + * @param p_CnfReq + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UT_CommandRequiresCnf(template (value) Ut_CnfReq_Type p_CnfReq) return boolean + { + return (match(CNF_REQUIRED, p_CnfReq) or match(LOCAL_CNF_REQUIRED, p_CnfReq) or match(MULTIPLE_CNF, p_CnfReq)); + } + +} diff --git a/IMS_PART4_IWD_14wk37/Common/Common/UpperTesterFunctions.ttcn b/IMS_PART4_IWD_14wk37/Common/Common/UpperTesterFunctions.ttcn new file mode 100644 index 0000000..df49bc3 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/Common/UpperTesterFunctions.ttcn @@ -0,0 +1,2708 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-10 10:55:39 +0200 (Wed, 10 Sep 2014) $ +// $Rev: 12185 $ +/******************************************************************************/ + +module UpperTesterFunctions { + import from UpperTesterCommon all; + import from UpperTesterPtcToMtcDefs all; + import from CommonDefs all; + import from Parameters all; + import from EPS_NAS_TypeDefs all; // EPS_QualityOfService + import from NAS_CommonTypeDefs all; + + const integer tsc_ManualPLMN_GERAN := 0; /* @status APPROVED (LTE_IRAT) */ + const integer tsc_ManualPLMN_UTRAN := 2; + const integer tsc_ManualPLMN_EUTRA := 7; + const integer tsc_ManualPLMN_None := -1; /* @status APPROVED (LTE, LTE_IRAT) */ + + + //============================================================================ + // TEMPLATES (used in this module only) + //----------------------------------------------------------------------------- + + template (value) UT_COMMON_CMD cas_UT_Req(template (value) Ut_Common_Req_Type p_Cmd, + template (value) Ut_CnfReq_Type p_Cnf, + template (omit) Ut_ParameterList_Type p_Parameters := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + Cmd := p_Cmd, + CnfReq := p_Cnf, + ParameterList := p_Parameters + }; + + //============================================================================ + // Common Parameters/Attributes + //----------------------------------------------------------------------------- + + template (value) Ut_Parameter_Type cs_Ut_Parameter_Cid(charstring p_Value) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_Ut_Parameter_Common("Cid", p_Value); + + template (value) Ut_Parameter_Type cs_Ut_Parameter_QoS(charstring p_Value) := + /* @status APPROVED (LTE, LTE_IRAT, UTRAN) */ + cs_Ut_Parameter_Common("QoS", p_Value); + + template (value) Ut_Parameter_Type cs_Ut_Parameter_PLMN(charstring p_Value) := + /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + cs_Ut_Parameter_Common("PLMN", p_Value); + + //============================================================================ + // Parameter lists for UT primitives + //----------------------------------------------------------------------------- + + template (value) Ut_ParameterList_Type cs_CEMode(charstring p_Value) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + cs_Ut_Parameter_Common("CE MODE", p_Value) + }; + + template (value) Ut_ParameterList_Type cs_OpMode(charstring p_Value) := + { /* @status */ + cs_Ut_Parameter_Common("OPERATION MODE", p_Value) + }; + + template (value) Ut_ParameterList_Type cs_CheckPlmn(charstring p_Value) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + cs_Ut_Parameter_PLMN(p_Value) + }; + + template (value) Ut_ParameterList_Type cs_CheckETWS(charstring p_Value1, + charstring p_Value2) := + { /* @status APPROVED (LTE) */ + cs_Ut_Parameter_Common("WARNING1", p_Value1), + cs_Ut_Parameter_Common("WARNING2", p_Value2) + }; + + template (value) Ut_ParameterList_Type cs_UplinkData(charstring p_Data, + charstring p_Sapi) := + { /* @status APPROVED (LTE_IRAT) */ + cs_Ut_Parameter_Common("DATA", p_Data), + cs_Ut_Parameter_Common("SAPI", p_Sapi) + }; + + template (value) Ut_ParameterList_Type cs_ManualPlmn(charstring p_Value) := + { /* @status APPROVED (LTE, LTE_IRAT) */ + /* @sic R5-106675 sic@ */ + cs_Ut_Parameter_PLMN(p_Value) + }; + + template (value) Ut_ParameterList_Type cs_PlmnCSG(charstring p_PLMN, + charstring p_CSG) := + { /* @status APPROVED (LTE, LTE_IRAT) */ + /* @sic R5-106675 sic@ */ + cs_Ut_Parameter_PLMN(p_PLMN), + cs_Ut_Parameter_Common("CSG", p_CSG) + }; + + template (value) Ut_ParameterList_Type cs_CheckCSG(charstring p_CSG, + charstring p_Included) := + { /* @status APPROVED (LTE) */ + cs_Ut_Parameter_Common("CSG", p_CSG), + cs_Ut_Parameter_Common("INCLUDED IN LIST", p_Included) + }; + + template (value) Ut_ParameterList_Type cs_DialNumber(charstring p_Value) := + { /* @status APPROVED (LTE, LTE_IRAT, SSNITZ, UTRAN) */ + cs_Ut_Parameter_Common("DIAL", p_Value) + }; + + template (value) Ut_ParameterList_Type cs_IMSMode := + { + cs_Ut_Parameter_Common("VOICE_CALL_MODE", "VOIP_ONLY") + }; + + template (value) Ut_ParameterList_Type cs_InsertUsim(template (value) charstring p_Value) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + cs_Ut_Parameter_Common("USIM", p_Value) + }; + + template (value) Ut_ParameterList_Type cs_SecondaryPDP(charstring p_DedId, + charstring p_DefId) := + { /* @status APPROVED (LTE) */ + cs_Ut_Parameter_Cid(p_DedId), + cs_Ut_Parameter_Common("DefId", p_DefId) + }; + + template (value) Ut_ParameterList_Type cs_PDP_Cid(charstring p_Cid) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_Ut_Parameter_Cid(p_Cid) + }; + + template (value) Ut_ParameterList_Type cs_EPSQoS(charstring p_QoSParams) := + { /* @status APPROVED (LTE) */ + cs_Ut_Parameter_QoS(p_QoSParams) + }; + + template (value) Ut_ParameterList_Type cs_TFT(charstring p_TFTParams) := + { /* @status APPROVED (LTE) */ + cs_Ut_Parameter_Common("TFT", p_TFTParams) + }; + + template (value) Ut_ParameterList_Type cs_RequestPDP(charstring p_PDPParams) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT, UTRAN) */ + cs_Ut_Parameter_Common("RequestPDP", p_PDPParams) + }; + + template (value) Ut_ParameterList_Type cs_PowerPreference(charstring p_PowerPreference) := + { + cs_Ut_Parameter_Common("PowerPreference", p_PowerPreference) + }; + + template (value) Ut_ParameterList_Type cs_DeleteMessage_Withflag(charstring p_Index, + charstring p_Delflag) := + { /* @status APPROVED (LTE) */ + cs_Ut_Parameter_Common("Index", p_Index), + cs_Ut_Parameter_Common("Delflag", p_Delflag) + }; + + template (value) Ut_ParameterList_Type cs_MessageService(charstring p_Service) := + { /* @status APPROVED (LTE) */ + cs_Ut_Parameter_Common("Service", p_Service) + }; + + template (value) Ut_ParameterList_Type cs_PreferredStorage(charstring p_Mem1, + charstring p_Mem2, + charstring p_Mem3) := + { /* @status APPROVED (LTE) */ + cs_Ut_Parameter_Common("Mem1", p_Mem1), + cs_Ut_Parameter_Common("Mem2", p_Mem2), + cs_Ut_Parameter_Common("Mem3", p_Mem3) + }; + + template (value) Ut_ParameterList_Type cs_MessageFormat(charstring p_Mode) := + { /* @status APPROVED (LTE) */ + cs_Ut_Parameter_Common("Mode", p_Mode) + }; + + template (value) Ut_ParameterList_Type cs_SelectCharacterSet(charstring p_Chset) := + { /* @status APPROVED (LTE) */ + cs_Ut_Parameter_Common("Chset", p_Chset) + }; + + template (value) Ut_ParameterList_Type cs_TriggerMolr(charstring p_TypeMolr) := + { /* @status */ + cs_Ut_Parameter_Common("TypeMolr", p_TypeMolr) + }; + + template (value) Ut_ParameterList_Type cs_LocationTime(charstring p_Time) := + { + cs_Ut_Parameter_Common("LocationOnTime", p_Time) + }; + + template (value) Ut_ParameterList_Type cs_LocationAnswer(charstring p_Permission, charstring p_HandleId) := + { /* @status APPROVED (POS) */ + cs_Ut_Parameter_Common("Permission", p_Permission), + cs_Ut_Parameter_Common("Handle Id", p_HandleId) + }; + + template (value) Ut_ParameterList_Type cs_LocationNotify(charstring p_Msg) := + { + cs_Ut_Parameter_Common("LocationNotify", p_Msg) + }; + + template (value) Ut_ParameterList_Type cs_ServiceCentreAddress(charstring p_Sca, + charstring p_Tosca) := + { /* @status APPROVED (LTE) */ + cs_Ut_Parameter_Common("Sca", p_Sca), + cs_Ut_Parameter_Common("Tosca", p_Tosca) + }; + + template (value) Ut_ParameterList_Type cs_WriteMessageToMemory_Text(charstring p_Da, + charstring p_Toda, + charstring p_Text) := + { // @sic R5s110750 sic@ + /* @status APPROVED (LTE, UTRAN) */ + cs_Ut_Parameter_Common("Da", p_Da), + cs_Ut_Parameter_Common("Toda", p_Toda), + cs_Ut_Parameter_Common("Text", p_Text) + }; + + template (value) Ut_ParameterList_Type cs_WriteMessageToMemory_PDU(charstring p_Len, + charstring p_Pdu) := + { /* @status APPROVED (LTE, UTRAN) */ + cs_Ut_Parameter_Common("Len", p_Len), + cs_Ut_Parameter_Common("Text", p_Pdu) + }; + + template (value) Ut_ParameterList_Type cs_SendMessageFromStorage(charstring p_Index) := + { /* @status APPROVED (LTE, UTRAN) */ + cs_Ut_Parameter_Common("Index", p_Index) + }; + + template (value) Ut_ParameterList_Type cs_Send_3_MessageFromStorage(charstring p_Index, + charstring p_Index1, + charstring p_Index2) := + { /* @status APPROVED (LTE) */ + cs_Ut_Parameter_Common("Index", p_Index), + cs_Ut_Parameter_Common("Index", p_Index1), + cs_Ut_Parameter_Common("Index", p_Index2) + }; + + template (value) Ut_ParameterList_Type cs_ChkMsgDisplayed(charstring p_Length, + charstring p_Msg) := + { /* @status APPROVED (LTE) */ + cs_Ut_Parameter_Common("Length", p_Length), + cs_Ut_Parameter_Common("Msg", p_Msg) + }; + + template (value) Ut_ParameterList_Type cs_SetTextModeParameters(charstring p_Fo, + charstring p_Vp, + charstring p_Pid) := + { /* @status APPROVED (LTE, UTRAN) */ + /* @sic R5s100606 sic@ */ + cs_Ut_Parameter_Common("Fo", p_Fo), + cs_Ut_Parameter_Common("Vp", p_Vp), + cs_Ut_Parameter_Common("Pid", p_Pid) + }; + + template (value) Ut_ParameterList_Type cs_ChkCallDisplayed(charstring p_ToDisplay) := + { /* @status APPROVED (SSNITZ) */ + cs_Ut_Parameter_Common("ToDisplay", p_ToDisplay) + }; + + template (value) Ut_ParameterList_Type cs_Chk_SSUserInd(charstring p_SuppService, charstring p_ToDisplay) := + { + cs_Ut_Parameter_Common("Supplementary Service", p_SuppService), + cs_Ut_Parameter_Common("ToDisplay", p_ToDisplay) + }; + + template (value) Ut_ParameterList_Type cs_QoS_Profile(charstring p_Cid, + charstring p_QoSParams) := + { /* @status APPROVED (LTE_IRAT, UTRAN) */ + cs_Ut_Parameter_Cid(p_Cid), + cs_Ut_Parameter_QoS(p_QoSParams) + }; + + template (value) Ut_ParameterList_Type cs_OperatorFormat(charstring p_Format) := + { /* @status APPROVED (LTE) */ + cs_Ut_Parameter_Common("Format", p_Format) + }; + + template (value) Ut_ParameterList_Type cs_ChangePassword(charstring p_SSToBarr, + charstring p_OldPassword, + charstring p_NewPassword) := + { + cs_Ut_Parameter_Common("Service To Barr", p_SSToBarr), + cs_Ut_Parameter_Common("Old Password", p_OldPassword), + cs_Ut_Parameter_Common("New Password", p_NewPassword) + }; + + template (value) Ut_ParameterList_Type cs_MBMSServiceInterest(charstring p_PLMN, + charstring p_ServiceId, + charstring p_Interest, + charstring p_SAI) := + { /* @status APPROVED (LTE_A) */ + cs_Ut_Parameter_PLMN(p_PLMN), + cs_Ut_Parameter_Common("Service Id", p_ServiceId), + cs_Ut_Parameter_Common("Interest", p_Interest), + cs_Ut_Parameter_Common("SAI", p_SAI) + }; + + template (value) Ut_ParameterList_Type cs_MBMSServiceActive(charstring p_ServiceId, + charstring p_SAI, + charstring p_Active) := + { /* @status */ + cs_Ut_Parameter_Common("Service Id", p_ServiceId), + cs_Ut_Parameter_Common("SAI", p_SAI), + cs_Ut_Parameter_Common("Active", p_Active) + }; + + template (value) Ut_ParameterList_Type cs_MBMSPriority(charstring p_PriorityOverUnicast) := + { /* @status */ + cs_Ut_Parameter_Common("Priority Over Unicast", p_PriorityOverUnicast) + }; + template (value) Ut_ParameterList_Type cs_CallIdNumber(charstring p_CallId) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A) */ + cs_Ut_Parameter_Common("Call Id", p_CallId) + }; + + template (value) Ut_ParameterList_Type cs_IntegerString(charstring p_Value) := + { /* @status APPROVED (POS) */ + cs_Ut_Parameter_Common("Integer", p_Value) + }; + + template (value) Ut_Parameter_Type cs_Ut_Parameter_Uri(charstring p_Value) := cs_Ut_Parameter_Common("Uri", p_Value); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (value) Ut_Parameter_Type cs_Ut_Parameter_SS_Mode(charstring p_Value) := cs_Ut_Parameter_Common("Mode", p_Value); /* @status APPROVED (IMS, SSNITZ) */ + template (value) Ut_Parameter_Type cs_Ut_Parameter_Number(charstring p_Value) := cs_Ut_Parameter_Common("Number", p_Value); + template (value) Ut_Parameter_Type cs_Ut_Parameter_Password(charstring p_Value) := cs_Ut_Parameter_Common("Password", p_Value); + template (value) Ut_Parameter_Type cs_Ut_Parameter_USSD(charstring p_Value) := cs_Ut_Parameter_Common("USSD", p_Value); + template (value) Ut_Parameter_Type cs_Ut_Parameter_SupplementaryService(charstring p_Value) := cs_Ut_Parameter_Common("SupplementaryService", p_Value); /* @status APPROVED (IMS, SSNITZ) */ + template (value) Ut_Parameter_Type cs_Ut_Parameter_SupplementaryServiceCondition(charstring p_Value) := cs_Ut_Parameter_Common("SupplementaryServiceCondition", p_Value); + template (value) Ut_Parameter_Type cs_Ut_Parameter_SupplementaryServiceTime(charstring p_Value) := cs_Ut_Parameter_Common("SupplementaryServiceTime", p_Value); + template (value) Ut_Parameter_Type cs_Ut_Parameter_PublicUserId(charstring p_Value) := cs_Ut_Parameter_Common("PublicUserId", p_Value); + template (value) Ut_Parameter_Type cs_Ut_Parameter_HomeDomain(charstring p_Value) := cs_Ut_Parameter_Common("HomeDomain", p_Value); + template (value) Ut_Parameter_Type cs_Ut_Parameter_PrivateUserId(charstring p_Value) := cs_Ut_Parameter_Common("PrivateUSerId", p_Value); + + template (value) Ut_Parameter_Type cs_Ut_Parameter_NITZ_Check(charstring p_Value) := cs_Ut_Parameter_Common("Year: ", p_Value); // Value may not be needed, empty for now + template (value) Ut_Parameter_Type cs_Ut_Parameter_NITZ_Confirm(charstring p_Value) := cs_Ut_Parameter_Common("Year: ", p_Value); // Value may not be needed, empty for now + template (value) Ut_Parameter_Type cs_Ut_Parameter_NITZ_Year(charstring p_Value) := cs_Ut_Parameter_Common("Year: ", p_Value); /* @status APPROVED (LTE) */ + template (value) Ut_Parameter_Type cs_Ut_Parameter_NITZ_Month(charstring p_Value) := cs_Ut_Parameter_Common("Month: ", p_Value); /* @status APPROVED (LTE) */ + template (value) Ut_Parameter_Type cs_Ut_Parameter_NITZ_Day(charstring p_Value) := cs_Ut_Parameter_Common("Day: ", p_Value); /* @status APPROVED (LTE) */ + template (value) Ut_Parameter_Type cs_Ut_Parameter_NITZ_Hour(charstring p_Value) := cs_Ut_Parameter_Common("Hour: ", p_Value); /* @status APPROVED (LTE) */ + template (value) Ut_Parameter_Type cs_Ut_Parameter_NITZ_Minutes(charstring p_Value) := cs_Ut_Parameter_Common("Minutes: ", p_Value); /* @status APPROVED (LTE) */ + template (value) Ut_Parameter_Type cs_Ut_Parameter_NITZ_Seconds(charstring p_Value) := cs_Ut_Parameter_Common("Seconds: ", p_Value); /* @status APPROVED (LTE) */ + template (value) Ut_Parameter_Type cs_Ut_Parameter_NITZ_TimeZone(charstring p_Value) := cs_Ut_Parameter_Common("TimeZone: ", p_Value); /* @status APPROVED (LTE) */ + template (value) Ut_Parameter_Type cs_Ut_Parameter_NITZ_LocalTimeZone(charstring p_Value) := cs_Ut_Parameter_Common("LocalTimeZone: ", p_Value); /* @status APPROVED (LTE) */ + template (value) Ut_Parameter_Type cs_Ut_Parameter_NITZ_DaylightSavingTime(charstring p_Value) := cs_Ut_Parameter_Common("DaylightSavingTime: ", p_Value); + template (value) Ut_Parameter_Type cs_Ut_Parameter_NITZ_FullNetworkName(charstring p_Value) := cs_Ut_Parameter_Common("FullNetworkName: ", p_Value); /* @status APPROVED (LTE) */ + template (value) Ut_Parameter_Type cs_Ut_Parameter_NITZ_ShortNetworkName(charstring p_Value) := cs_Ut_Parameter_Common("ShortNetworkName: ", p_Value); /* @status APPROVED (LTE) */ + + //============================================================================ + // local functions + //---------------------------------------------------------------------------- + /* + * @desc local function to send command and get confirmation + * @param p_Port + * @param p_Cmd + * @param p_DontWaitForCnf (default value: false) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function fl_UT_ApplyCommand(UT_PTC_MTC_PORT p_Port, + template (value) UT_COMMON_CMD p_Cmd, + boolean p_DontWaitForCnf := false) // @sic R5-140347 sic@ + { + p_Port.send(p_Cmd); + if (f_UT_CommandRequiresCnf(p_Cmd.CnfReq) and not p_DontWaitForCnf) { // @sic R5s110275 sic@ + p_Port.receive(car_UT_COMMON_CNF); + } + } + + /* + * @desc To send the command to the MTC, wait for a response and return the result string + * @param p_Port + * @param p_Cmd + * @return UT_COMMON_CNF + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function fl_UT_ApplyCommandRetCnf(UT_PTC_MTC_PORT p_Port, + template (value) UT_COMMON_CMD p_Cmd) return UT_COMMON_CNF + { + p_Port.send(p_Cmd); + return fl_UT_RetCnf (p_Port); // @sic R5-140347 sic@ + } + + /* + * @desc To wait for a response and return the CNF + * @param p_Port + * @return UT_COMMON_CNF + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function fl_UT_RetCnf(UT_PTC_MTC_PORT p_Port) return UT_COMMON_CNF + { + var UT_COMMON_CNF v_Cnf; + + p_Port.receive(car_UT_COMMON_CNF) -> value v_Cnf; + return v_Cnf; + } + + //============================================================================ + // public functions + //---------------------------------------------------------------------------- + /* + * @desc To ask the UE to configure Combined Attach + * TTCN waits until operation is confirmed before continuing + * TTCN waits until operation is confirmed before continuing. + * If the CS PS mode to which p_UE_CS_PS_UsageSetting_Tested is set is supported then this mode is chosen. + * If it does not matter which mode is selected then a supported mode is chosen. + * If the prose requests a specific mode it should be indicated as explicit parameter. + * To be used when the UE is switched off. + * @param p_Port + * @param p_UE_CS_PS_UsageSetting_Tested Whether UE is voice or data centric + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_UT_ConfigureCombinedAttach(UT_PTC_MTC_PORT p_Port, + CS_PS_MODE p_UE_CS_PS_UsageSetting_Tested := px_UE_CS_PS_UsageSetting_Tested) + { + var integer v_Mode := 1; // PS/CS Mode 1 // @sic R5-106675 sic@ @sic R5s120511 sic@ + var CS_PS_MODE v_UE_CS_PS_UsageSetting_Tested := p_UE_CS_PS_UsageSetting_Tested; + + // The attach mode is configured in the preamble. The UE is switched on to reach a mode where AT command setting is possible. + f_UT_SwitchOnUE(p_Port, false, CNF_REQUIRED); // @sic R5s120597r1 sic@ + + if ((v_UE_CS_PS_UsageSetting_Tested == DATA_CENTRIC) and pc_CS_PS_data_centric) { + v_UE_CS_PS_UsageSetting_Tested := DATA_CENTRIC; + } + else if ((v_UE_CS_PS_UsageSetting_Tested == VOICE_CENTRIC) and pc_CS_PS_voice_centric) { + v_UE_CS_PS_UsageSetting_Tested := VOICE_CENTRIC; + } + else { + FatalError(__FILE__, __LINE__, "Invalid Usage Settings, please check pc_CS_PS_data_centric, pc_CS_PS_voice_centric and px_UE_CS_PS_UsageSetting_Tested"); // @sic R5s130828 add. change sic@ + } + if (pc_Combined_Attach) { // The message is only needed if both options are supported; @sic R5-103815 sic@ @sic R5s120079r1 sic@ + if (v_UE_CS_PS_UsageSetting_Tested == DATA_CENTRIC) {// @sic R5-106675 sic@ + v_Mode := 2; // PS/CS Mode 2 + } + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CONFIGURE_CEMODE, CNF_REQUIRED, cs_CEMode(int2str(v_Mode)))); // @sic R5-106675 sic@ + } + else { + FatalError(__FILE__, __LINE__, "inconsistent parameter setting"); + } + + // The attach mode is configured in the preamble. At the end the UE is switched off properly. + f_UT_SwitchOffUE(p_Port, false, CNF_REQUIRED); // @sic R5s120597r1 sic@ + + } // f_UT_ConfigureCombinedAttach + + //---------------------------------------------------------------------------- + /* + * @desc To ask the UE to configure EPS Attach + * TTCN waits until operation is confirmed before continuing. + * If the PS mode to which p_UE_PS_UsageSetting_Tested is set is supported then this mode is chosen. + * If it does not matter which mode is chosen then a supported mode is chosen. + * If the prose requests a specific mode it should be indicated as explicit parameter. + * To be used when the UE is switched off. + * @param p_Port + * @param p_UE_PS_UsageSetting_Tested Whether UE is voice or data centric + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_UT_ConfigureEPSAttach(UT_PTC_MTC_PORT p_Port, + PS_MODE p_UE_PS_UsageSetting_Tested := px_UE_PS_UsageSetting_Tested) + { + var integer v_Mode := 0; // PSMode 2 // @sic R5-106675 sic@ @sic R5s120511r1 sic@ + var PS_MODE v_UE_PS_UsageSetting_Tested := p_UE_PS_UsageSetting_Tested; + + // The attach mode is configured in the preamble. The UE is switched on to reach a mode where AT command setting is possible. + f_UT_SwitchOnUE(p_Port, false, CNF_REQUIRED); // @sic R5s120597r1 sic@ + + if ((v_UE_PS_UsageSetting_Tested == DATA_CENTRIC) and (pc_PS_data_centric == true)) { + v_UE_PS_UsageSetting_Tested := DATA_CENTRIC; + } + else if ((v_UE_PS_UsageSetting_Tested == VOICE_CENTRIC) and (pc_PS_voice_centric == true)) { + v_UE_PS_UsageSetting_Tested := VOICE_CENTRIC; + } + else { + FatalError(__FILE__, __LINE__, "Invalid Usage Settings, please check pc_PS_data_centric, pc_PS_voice_centric and px_UE_PS_UsageSetting_Tested"); // @sic R5s130828 add. change sic@ + } + if (pc_Attach) { // The message is only needed if both options are supported; @sic R5-103815 sic@ @sic R5s120079r1 sic@ + if (v_UE_PS_UsageSetting_Tested == VOICE_CENTRIC) {// @sic R5-106675 sic@ + v_Mode := 3; // PS Mode 1 + } + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CONFIGURE_CEMODE, CNF_REQUIRED, cs_CEMode(int2str(v_Mode)))); // @sic R5-106675 sic@ + } + else { + FatalError(__FILE__, __LINE__, "inconsistent parameter setting"); + } + // The attach mode is configured in the preamble. At the end the UE is switched off properly. + f_UT_SwitchOffUE(p_Port, false, CNF_REQUIRED); // @sic R5s120597r1 sic@ + + } // f_UT_ConfigureEPSAttach + + //---------------------------------------------------------------------------- + /* + * @desc To ask the configure the UTRAN Operation Mode + * @param p_Port + * @param p_UE_OperationMode + * @status + */ + function f_UT_ConfigureUTRANOperationMode(UT_PTC_MTC_PORT p_Port, charstring p_UE_OperationMode) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CONFIGURE_OPERATIONMODE, CNF_REQUIRED, cs_OpMode(p_UE_OperationMode))); + } + + //---------------------------------------------------------------------------- + /* + * @desc To ask the operator disable EPS in the UE + * TTCN does not wait until operation is confirmed before continuing + * because the UE may send a DETACH immediately @sic R5s110694 sic@ + * @param p_Port + * @status APPROVED (LTE_IRAT) + */ + function f_UT_DisableEPS(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(DISABLE_EPS, NO_CNF_REQUIRED)); + } + + //---------------------------------------------------------------------------- + /* + * @desc Objective: To make the operator remove the USIM card + * TTCN waits until operation is confirmed before continuing + * @param p_Port + * @status APPROVED (IMS_IRAT, LTE, LTE_IRAT) + */ + function f_UT_USIM_Remove(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(REMOVE_USIM, CNF_REQUIRED)); + } + + //---------------------------------------------------------------------------- + /* + * @desc Objective: To make the operator insert the USIM card + * TTCN waits until operation is confirmed before continuing + * @param p_Port + * @param p_USIM_ID + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_UT_USIM_Insert(UT_PTC_MTC_PORT p_Port, + template (omit) charstring p_USIM_ID) + { + if (isvalue(p_USIM_ID)) { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(INSERT_USIM, CNF_REQUIRED, cs_InsertUsim(valueof(p_USIM_ID)))); + } else { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(INSERT_USIM, CNF_REQUIRED)); + } + } + + //---------------------------------------------------------------------------- + /* + * @desc Objective: To power off the UE + * TTCN waits until operation is confirmed before continuing + * @param p_Port + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UT_PowerOffUE(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(POWER_OFF, CNF_REQUIRED)); + } + + //---------------------------------------------------------------------------- + /* + * @desc switch on the UE + * @param p_Port + * @param p_USIM_Rmvd + * @param p_CnfRequired (default: NO_CNF_REQUIRED) @sic R5s110498 sic@ + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UT_SwitchOnUE(UT_PTC_MTC_PORT p_Port, + boolean p_USIM_Rmvd, + Ut_CnfReq_Type p_CnfRequired := NO_CNF_REQUIRED) + { + var Ut_Common_Req_Type v_Request; + + if (pc_SwitchOnOff) { // switch on the UE + v_Request := SWITCH_ON; + } else if (p_USIM_Rmvd and pc_USIM_Removal) { // USIM needs to be removed @sic R5s120597r1 sic@ + v_Request := INSERT_USIM; + } else { // power on the UE + v_Request := POWER_ON; + } + fl_UT_ApplyCommand(p_Port, cas_UT_Req(v_Request, p_CnfRequired)); + } // f_UT_SwitchOnUE + + //---------------------------------------------------------------------------- + /* + * @desc switch off the UE + * @param p_Port + * @param p_USIM_Rmvd + * @param p_CnfRequired (default: NO_CNF_REQUIRED) @sic R5s110395 sic@ + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UT_SwitchOffUE(UT_PTC_MTC_PORT p_Port, + boolean p_USIM_Rmvd, + Ut_CnfReq_Type p_CnfRequired := NO_CNF_REQUIRED) + { + if (pc_SwitchOnOff) { // switch off the UE + fl_UT_ApplyCommand(p_Port, cas_UT_Req(SWITCH_OFF, p_CnfRequired)); // @sic R5s110395 sic@ + } else if (p_USIM_Rmvd and pc_USIM_Removal) { // UE doesn't support switch off, but does support SIM removal, so remove it; @sic R5-104083 sic@ @sic R5s120597r1 sic@ + fl_UT_ApplyCommand(p_Port, cas_UT_Req(REMOVE_USIM, CNF_REQUIRED)); + } else { // power off the UE - last resort + fl_UT_ApplyCommand(p_Port, cas_UT_Req(POWER_OFF, CNF_REQUIRED)); + } + } // f_UT_SwitchOffUE + + //---------------------------------------------------------------------------- + /* + * @desc Objective: To ask the operator to check the ETWS/CMAS Warning Indication is displayed + * TTCN waits until operation is confirmed before continuing + * @param p_Port + * @param p_WarningMsg1 + * @param p_WarningMsg2 + * @param p_CMAS (default: false) set to true if need to send a CMAS rather than ETWS message + * @return boolean + * @status APPROVED (LTE) + */ + function f_UT_CheckETWS_CMAS(UT_PTC_MTC_PORT p_Port, + charstring p_WarningMsg1, + charstring p_WarningMsg2, + boolean p_CMAS := false) return boolean + { + // To make the operator check if the ETWS/CMAS warning indication is displayed + var Ut_Common_Req_Type v_Type; // @sic R5s130376 sic@ + var UT_COMMON_CNF v_Cnf; + if (p_CMAS) { // for PWS message check + if(p_WarningMsg1 & p_WarningMsg2 != ""){ // @sic R5s130376 sic@ + v_Type := CHECK_CMAS_INDICATION; + } else { + v_Type := CHECK_CMAS_NO_INDICATION; + } + } else { // for ETWS message check + if(p_WarningMsg1 & p_WarningMsg2 != ""){ // @sic R5s130376 sic@ + v_Type := CHECK_ETWS_INDICATION; + } else { + v_Type := CHECK_ETWS_NO_INDICATION; + } + } + v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(v_Type, CNF_REQUIRED, cs_CheckETWS(p_WarningMsg1, p_WarningMsg2))); // @sic R5-140347 sic@ + return v_Cnf.Result; + } + + //---------------------------------------------------------------------------- + /* + * @desc Objective: To ask the operator to check if the ETWS/CMAS Alert is used + * TTCN waits until operation is confirmed before continuing + * @param p_Port + * @param p_CMAS (default: false) set to true if need to send a CMAS rather than ETWS message + * @return boolean + * @status APPROVED (LTE) + */ + function f_UT_CheckETWS_CMAS_Alert(UT_PTC_MTC_PORT p_Port, + boolean p_CMAS := false) return boolean + { + // To make the operator check if the alert is used + var Ut_Common_Req_Type v_Type := CHECK_ETWS_ALERT; + var UT_COMMON_CNF v_Cnf; + + if (p_CMAS) { + v_Type := CHECK_CMAS_ALERT; + } + v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(v_Type, CNF_REQUIRED)); // @sic R5-140347 sic@ + return v_Cnf.Result; + } + + //---------------------------------------------------------------------------- + /* + * @desc Objective: To ask the operator to check if the ETWS/CMAS Alert is not used + * TTCN waits until operation is confirmed before continuing + * @param p_Port + * @param p_CMAS (default: false) set to true if need to send a CMAS rather than ETWS message + * @return boolean + * @status APPROVED (LTE) + */ + function f_UT_CheckETWS_CMAS_NoAlert(UT_PTC_MTC_PORT p_Port, + boolean p_CMAS := false) return boolean + { + var Ut_Common_Req_Type v_Type := CHECK_ETWS_NO_ALERT; // @sic R5s130537 sic@ + var UT_COMMON_CNF v_Cnf; + + if (p_CMAS) { + v_Type := CHECK_CMAS_NO_ALERT; + } + v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(v_Type, CNF_REQUIRED)); // @sic R5-140347 sic@ + return v_Cnf.Result; + } + + //---------------------------------------------------------------------------- + /* + * @desc Objective: To check the DTCH is through connected + * TTCN waits until operation is confirmed before continuing + * @param p_Port + * @return boolean + * @status + */ + function f_UT_CheckDTCH_ThroughConn(UT_PTC_MTC_PORT p_Port) return boolean + { + var UT_COMMON_CNF v_Cnf; + v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(CHECK_DTCH_THROUGHCONNECTED, CNF_REQUIRED)); // @sic R5-140347 sic@ + return v_Cnf.Result; + } + + //---------------------------------------------------------------------------- + /* + * @desc To convert all TFT parameters into the correct charstring format for the AT command + * @param p_DedicatedId + * @param p_Filter + * @return charstring + * @status APPROVED (LTE) + */ + function fl_GenerateATForTFTPacketFilter(integer p_DedicatedId, + PacketFilter p_Filter) return charstring + { + var charstring v_IPAddress := ""; + var charstring v_ProtIdNextHeader := ""; + var charstring v_LocalPort := ""; + var charstring v_RemotePort := ""; + var charstring v_SecurityIndex := ""; + var charstring v_ToS := ""; + var charstring v_FlowLabel := ""; + var integer v_Direction; + var charstring v_Filterstring := ""; + var PacketFilter v_Filter := p_Filter; + var integer v_LengthOfContents := lengthof(v_Filter.contents); + var integer i; + + v_Filterstring := int2str(p_DedicatedId); + v_Filterstring := v_Filterstring & "," & int2str(hex2int(v_Filter.iei)+1); // identifier @sic R5s100557, R5s130195 Baseline Moving sic@ + v_Direction := bit2int(v_Filter.direction); // @sic R5s130195 Baseline Moving sic@ + v_Filterstring := v_Filterstring & "," & int2str(bit2int(v_Filter.precedence)); // precedence + + for (i := 0; i < v_LengthOfContents; i := i + 1) { + if (ischosen(v_Filter.contents[i].packetFilterComponentValue.ipv4RemoteAddress)) { //IPv4 + v_IPAddress := fl_TFTIPAdd(v_Filter.contents[i].packetFilterComponentValue.ipv4RemoteAddress); + } + else if (ischosen(v_Filter.contents[i].packetFilterComponentValue.ipv6RemoteAddress)) { //IPv6 + v_IPAddress := fl_TFTIPAdd(v_Filter.contents[i].packetFilterComponentValue.ipv6RemoteAddress); + } + else if (ischosen(v_Filter.contents[i].packetFilterComponentValue.protocolIdNextHeader)) { //Protocol id/next header + v_ProtIdNextHeader := fl_TFTProtHeader(v_Filter.contents[i].packetFilterComponentValue.protocolIdNextHeader); + } + else if (ischosen(v_Filter.contents[i].packetFilterComponentValue.singleLocalPort)) { //single local port + v_LocalPort := fl_TFTPort(v_Filter.contents[i].packetFilterComponentValue.singleLocalPort); + } + else if (ischosen(v_Filter.contents[i].packetFilterComponentValue.localPortRange)) { //local port range + v_LocalPort := fl_TFTPort(v_Filter.contents[i].packetFilterComponentValue.localPortRange); + } + else if (ischosen(v_Filter.contents[i].packetFilterComponentValue.singleRemotePort)) { //Single remote port + v_RemotePort := fl_TFTPort(v_Filter.contents[i].packetFilterComponentValue.singleRemotePort); + } + else if (ischosen(v_Filter.contents[i].packetFilterComponentValue.remotePortRange)) { //remote port range + v_RemotePort := fl_TFTPort(v_Filter.contents[i].packetFilterComponentValue.remotePortRange); + } + else if (ischosen(v_Filter.contents[i].packetFilterComponentValue.securityParameterIndex)) { //Security parameter index + v_SecurityIndex := fl_TFTSecurity(v_Filter.contents[i].packetFilterComponentValue.securityParameterIndex); + } + else if (ischosen(v_Filter.contents[i].packetFilterComponentValue.typeOfServiceTrafficClass)) { //Type of Service + v_ToS := fl_TFTToS(v_Filter.contents[i].packetFilterComponentValue.typeOfServiceTrafficClass); + } + else if (ischosen(v_Filter.contents[i].packetFilterComponentValue.flowLabel)) { //Flow Label + v_FlowLabel := fl_TFTFlow(v_Filter.contents[i].packetFilterComponentValue.flowLabel); + } + } + + if (v_IPAddress == "") { + v_Filterstring := v_Filterstring & ","; + } else { + v_Filterstring := v_Filterstring & "," & v_IPAddress; + } + if (v_ProtIdNextHeader == "") { + v_Filterstring := v_Filterstring & ","; + } else { + v_Filterstring := v_Filterstring & "," & v_ProtIdNextHeader; + } + if (v_LocalPort == "") { // @sic R5s100557 sic@ + v_Filterstring := v_Filterstring & ","; + } else { + v_Filterstring := v_Filterstring & "," & v_LocalPort; + } + if (v_RemotePort == "") { + v_Filterstring := v_Filterstring & ","; + } else { + v_Filterstring := v_Filterstring & "," & v_RemotePort; + } + if (v_SecurityIndex == "") { + v_Filterstring := v_Filterstring & ","; + } else { + v_Filterstring := v_Filterstring & "," & v_SecurityIndex; + } + if (v_ToS == "") { + v_Filterstring := v_Filterstring & ","; + } else { + v_Filterstring := v_Filterstring & "," & v_ToS; + } + if (v_FlowLabel == "") { + v_Filterstring := v_Filterstring & ","; + } else { + v_Filterstring := v_Filterstring & "," & v_FlowLabel; + } + if (v_Direction == 1) { // Uplink and downlink are different values in AT cmd + v_Direction := 2; + } else if (v_Direction == 2) { + v_Direction := 1; + } + v_Filterstring := v_Filterstring & "," & int2str(v_Direction); + return v_Filterstring; + } + + //---------------------------------------------------------------------------- + /* + * @desc To convert a TFT parameter into the correct charstring format for the AT command + * @param p_Input + * @return charstring + * @status APPROVED (LTE) + */ + function fl_TFTIPAdd(octetstring p_Input) return charstring + { + var integer v_Length := lengthof(p_Input); + var charstring v_Result:= """"; + var integer i; + + for (i := 0; i < v_Length; i := i + 1) { + v_Result := v_Result & int2str(oct2int(p_Input[i])); + if (i != (v_Length-1)) { + v_Result := v_Result & "."; + } + } + v_Result := v_Result & """"; + return v_Result; + } + + //---------------------------------------------------------------------------- + /* + * @desc To convert a TFT parameter into the correct charstring format for the AT command + * @param p_Input + * @return charstring + * @status APPROVED (LTE) + */ + function fl_TFTProtHeader(octetstring p_Input) return charstring + { + return int2str(oct2int(p_Input)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To convert a TFT parameter into the correct charstring format for the AT command + * @param p_Input + * @return charstring + * @status APPROVED (LTE) + */ + function fl_TFTPort(octetstring p_Input) return charstring + { + var integer v_Length := lengthof(p_Input); + var charstring v_Result := ""; + + v_Result := """"; + + if (v_Length == 4) { + v_Result := v_Result & int2str(oct2int(substr(p_Input, 0, 2))); // @sic R5s100362 sic@ + v_Result := v_Result & "." & int2str(oct2int(substr(p_Input, 2, 2))); + } else { // @sic R5s100362 sic@ + v_Result := v_Result & int2str(oct2int(p_Input)) & "." & int2str(oct2int(p_Input)); // only given one value, so put the same in both + } + + v_Result := v_Result & """"; + return v_Result; + } + + //---------------------------------------------------------------------------- + /* + * @desc To convert a TFT parameter into the correct charstring format for the AT command + * @param p_Input + * @return charstring + * @status APPROVED (LTE) + */ + function fl_TFTSecurity(octetstring p_Input) return charstring + { + return oct2str(p_Input); + } + + //---------------------------------------------------------------------------- + /* + * @desc To convert a TFT parameter into the correct charstring format for the AT command + * @param p_Input + * @return charstring + * @status APPROVED (LTE) + */ + function fl_TFTToS(octetstring p_Input) return charstring + { + var charstring v_Result := ""; + v_Result := int2str(oct2int(substr(p_Input, 0, 1))); + v_Result := v_Result & "." & int2str(oct2int(substr(p_Input, 1, 1))); + return v_Result; + } + + //---------------------------------------------------------------------------- + /* + * @desc To convert a TFT parameter into the correct charstring format for the AT command + * @param p_Input + * @return charstring + * @status APPROVED (LTE) + */ + function fl_TFTFlow(octetstring p_Input) return charstring + { + return hex2str(substr(oct2hex(p_Input), 1, 5)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To ask the operator to dial a CS call + * @param p_Port + * @param p_NumToDial (default value: "01234567890") + * @status APPROVED (LTE, LTE_IRAT, SSNITZ, UTRAN) + */ + function f_UT_RequestCSCall(UT_PTC_MTC_PORT p_Port, + charstring p_NumToDial := "01234567890") + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(REQUEST_CALL, NO_CNF_REQUIRED, cs_DialNumber(p_NumToDial))); + } + + //---------------------------------------------------------------------------- + /* + * @desc To ask the operator to dial an IMS call + * @param p_Port + * @param p_NumToDial (default value: "01234567890") + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_UT_RequestIMSCall(UT_PTC_MTC_PORT p_Port, + charstring p_NumToDial := "01234567890") + { +// fl_UT_ApplyCommand(p_Port, cas_UT_Req(VOICE_CALL_MODE, CNF_REQUIRED, cs_IMSMode)); + fl_UT_ApplyCommand(p_Port, cas_UT_Req(REQUEST_IMS_VOICE_CALL, NO_CNF_REQUIRED, {cs_Ut_Parameter_Uri(p_NumToDial)})); // @sic R5-134290 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc To ask the operator to dial an IMS call + * @param p_Port + * @param p_NumToDial (default value: px_EmergencyCallNumber) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_IRAT) + */ + function f_UT_RequestIMSEmergencyCall(UT_PTC_MTC_PORT p_Port, + charstring p_NumToDial := px_EmergencyCallNumber) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(REQUEST_IMS_VOICE_CALL, NO_CNF_REQUIRED, {cs_Ut_Parameter_Uri(p_NumToDial)})); // @sic R5-134290 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc Initiate a video call + * @param p_Port + * @param p_CalleeUri + * @status APPROVED (IMS) + */ + function f_UT_RequestIMSVideoCall(UT_PTC_MTC_PORT p_Port, + charstring p_CalleeUri) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(INITIATE_VIDEO_CALL, NO_CNF_REQUIRED, {cs_Ut_Parameter_Uri(p_CalleeUri)})); + } + + //---------------------------------------------------------------------------- + /* + * @desc To ask the operator to clear the stored assistance data + * To be used if the UE does not support the RESET command defined in 34.109 + * @param p_Port + * @status + */ + function f_UT_ClearStoredData(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CLEAR_STORED_ASSISTANCE_DATA, CNF_REQUIRED)); + } + + //---------------------------------------------------------------------------- + /* + * @desc Objective: To make the operator check the indicated PLMN + * TTCN waits until operation is confirmed before continuing + * @param p_Port + * @param p_PLMN_ID + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_UT_PLMN_Check(UT_PTC_MTC_PORT p_Port, + charstring p_PLMN_ID) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CHECK_PLMN, CNF_REQUIRED, cs_CheckPlmn(p_PLMN_ID))); + } + + //---------------------------------------------------------------------------- + /* + * @desc To set manual PLMN selection and select PLMNN (i.e. both of the above in 1 function) + * @param p_Port + * @param p_PLMN_ID + * @param p_Cell_AccessTechnology (default value: tsc_ManualPLMN_None) + * only set this if the prose says e.g. 'select PLMN9 (UTRAN)'; options are _GERAN, _UTRAN or _EUTRA + * @param p_Ut_CnfReq_Type (default value: NO_CNF_REQUIRED) + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_UT_ManualPLMN_Select(UT_PTC_MTC_PORT p_Port, + NAS_PlmnId p_PLMN_ID, + integer p_Cell_AccessTechnology := tsc_ManualPLMN_None, // @sic R5-106675 sic@ + Ut_CnfReq_Type p_Ut_CnfReq_Type := NO_CNF_REQUIRED) // @sic R5s110633 sic@ + { /* Objective: To manually select the specified PLMN + * TTCN waits until operation is confirmed before continuing */ + /* @sic R5-106675 sic@ */ + var charstring v_AT := fl_ConvertPLMN(p_PLMN_ID); + + if (p_Cell_AccessTechnology != tsc_ManualPLMN_None) { + v_AT := v_AT & "," & int2str(p_Cell_AccessTechnology); + } + fl_UT_ApplyCommand(p_Port, cas_UT_Req(PLMN_MANUAL, p_Ut_CnfReq_Type, cs_ManualPlmn(v_AT))); // @sic R5s110633 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc To convert the PLMN in NAS format into that required by the AT command + * @param p_PLMN_ID + * @return charstring + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function fl_ConvertPLMN(NAS_PlmnId p_PLMN_ID) return charstring + { /* @sic R5-106675 sic@ */ + var hexstring v_PLMN_Hex := oct2hex(p_PLMN_ID); // Now re-order it for the AT command + var hexstring v_PLMN_ForAT := v_PLMN_Hex[1] & v_PLMN_Hex[0] & v_PLMN_Hex[3] & v_PLMN_Hex[5] & v_PLMN_Hex[4]; + + if (v_PLMN_Hex[2] != 'F'H) { // @sic R5s120576 sic@ + v_PLMN_ForAT := v_PLMN_ForAT & v_PLMN_Hex[2]; + } + return """" & hex2str(v_PLMN_ForAT) & """"; + } + + //---------------------------------------------------------------------------- + /* + * @desc To request manual PLMN selection of a CSG + * @param p_Port + * @param p_PLMN_ID + * @param p_CSG_ID + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_UT_ManualPLMN_CSG(UT_PTC_MTC_PORT p_Port, + NAS_PlmnId p_PLMN_ID, + bitstring p_CSG_ID) + { /* Objective: To ask the operator to manually select the specified CSG cell TTCN waits until operation is confirmed before continuing */ + fl_UT_ApplyCommand(p_Port, cas_UT_Req(SELECT_CSG, NO_CNF_REQUIRED, cs_PlmnCSG(fl_ConvertPLMN(p_PLMN_ID), int2str(bit2int(p_CSG_ID))))); // @sic R5s120298 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc To check CSG id is/is not included in the list + * @param p_Port + * @param p_CSG_ID + * @param p_IncludedInList + * @status APPROVED (LTE) + */ + function f_UT_Check_CSG(UT_PTC_MTC_PORT p_Port, + bitstring p_CSG_ID, + boolean p_IncludedInList) + { /* Objective: To ask the operator to check if the specified CSG cell is (not) included in the list. TTCN waits until operation is confirmed before continuing */ + var charstring v_Included := "FALSE"; + if (p_IncludedInList) { + v_Included := "TRUE"; + } + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CHECK_CSG, NO_CNF_REQUIRED, cs_CheckCSG(int2str(bit2int(p_CSG_ID)), v_Included))); + } + + //---------------------------------------------------------------------------- + /* + * @desc To request automatic PLMN selection + * @param p_Port + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_UT_AutomaticPLMN_Select(UT_PTC_MTC_PORT p_Port) + { /* Objective: To change the UE into automatic mode */ + fl_UT_ApplyCommand(p_Port, cas_UT_Req(PLMN_AUTOMATIC, NO_CNF_REQUIRED)); // @sic R5-106675 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc To request to join MBMS Service + * @param p_Port + * @param p_PLMN_ID + * @param p_Service_ID + * @param p_Interest (allowed values: ON, OFF) + * @param p_MBMS_SAI (default: omit) + * @status APPROVED (LTE_A) + */ + function f_UT_MBMS_SERVICE_Interest(UT_PTC_MTC_PORT p_Port, + template (omit) NAS_PlmnId p_PLMN_ID, + charstring p_Service_ID, + boolean p_Interest, + template (omit) integer p_MBMS_SAI := omit) // @sic R5-135000 sic@ + { /* Objective: To ask the operator to join MBMS service */ + var charstring v_Interest := "ON"; + var charstring v_SAI := ""; + var charstring v_PLMN_ID := ""; + + if (isvalue(p_PLMN_ID)) { + v_PLMN_ID := fl_ConvertPLMN(valueof(p_PLMN_ID)); + } + if (not p_Interest) { + v_Interest := "OFF"; + } + if (isvalue(p_MBMS_SAI)) { + v_SAI := int2str (valueof(p_MBMS_SAI)); + } + + fl_UT_ApplyCommand(p_Port, cas_UT_Req(MBMS_SERVICE_INTEREST, CNF_REQUIRED, cs_MBMSServiceInterest(v_PLMN_ID, p_Service_ID, v_Interest, v_SAI))); // @sic R5-135000, R5-142985 sic@ + } + + /* + * @desc To request to activate MBMS Service + * @param p_Port + * @param p_Service_ID + * @param p_MBMS_SAI (default: omit) + * @param p_Active (allowed values: ON, OFF) + * @status + */ + function f_UT_MBMS_SERVICE_Active(UT_PTC_MTC_PORT p_Port, + charstring p_Service_ID, + boolean p_Active, + template (omit) integer p_MBMS_SAI := omit) // @sic R5-135000 sic@ + { /* Objective: To ask the operator to join MBMS service */ + var charstring v_Active := "ON"; + var charstring v_SAI := ""; + + if (not p_Active) { + v_Active := "OFF"; + } + if (isvalue(p_MBMS_SAI)) { + v_SAI := int2str (valueof(p_MBMS_SAI)); + } + + fl_UT_ApplyCommand(p_Port, cas_UT_Req(MBMS_SERVICE_ACTIVE, CNF_REQUIRED, cs_MBMSServiceActive(p_Service_ID, v_SAI, v_Active))); + } + + /* + * @desc To request that the UE is configured such that MBMS services takes priority over unicast bearer transmissions + * @param p_Port + * @param p_PriorityOverUnicast + * @status + */ + function f_UT_MBMS_Unicast(UT_PTC_MTC_PORT p_Port, + boolean p_PriorityOverUnicast) + { + var charstring v_PriorityOverUnicast := "FALSE"; + + if (p_PriorityOverUnicast) { + v_PriorityOverUnicast := "TRUE"; + } + fl_UT_ApplyCommand(p_Port, cas_UT_Req(MBMS_PRIORITY_OVER_UNICAST, CNF_REQUIRED, cs_MBMSPriority(v_PriorityOverUnicast))); + } + + //---------------------------------------------------------------------------- + /* + * @desc To activate a dedicated LTE EPS bearer + * @param p_Port + * @param p_ActivateOrModify + * @param p_DedicatedId + * @param p_DefaultId + * @param p_QoS + * @param p_Tft + * @param p_Ut_CnfReq_Type (default value: NO_CNF_REQUIRED) + * @status APPROVED (LTE) + */ + function fl_UT_RequestActivateOrModifyDedicatedBearer(UT_PTC_MTC_PORT p_Port, + template (value) Ut_Common_Req_Type p_ActivateOrModify, + integer p_DedicatedId, + integer p_DefaultId, + template (value) EPS_QualityOfService p_QoS, + template (value) TrafficFlowTemplate p_Tft, + Ut_CnfReq_Type p_Ut_CnfReq_Type := NO_CNF_REQUIRED) + { + // @sic R5s100470 change 3 sic@ + var EPS_QualityOfService v_QoS := valueof(p_QoS); // need to do this to then manipulate it in the charstring + var TrafficFlowTemplate v_Tft := valueof(p_Tft); // need to do this to then manipulate it in the charstring + var charstring v_QoSstring := ""; + var integer v_NoOfPacketFilters := bit2int(v_Tft.noOfPktFilter); + var integer i; + + v_QoSstring := int2str(p_DedicatedId); + v_QoSstring := v_QoSstring &","& int2str(bit2int(v_QoS.qci)); + v_QoSstring := v_QoSstring &","& int2str(fl_QoS_MaximumBitRate(v_QoS.guaranteedBitRateDl)); // @sic R5s100557 sic@ + v_QoSstring := v_QoSstring &","& int2str(fl_QoS_MaximumBitRate(v_QoS.guaranteedBitRateUl)); // @sic R5s100557 sic@ + v_QoSstring := v_QoSstring &","& int2str(fl_QoS_MaximumBitRate(v_QoS.maxBitRateDl)); // @sic R5s100557 sic@ + v_QoSstring := v_QoSstring &","& int2str(fl_QoS_MaximumBitRate(v_QoS.maxBitRateUl)); // @sic R5s100557 sic@ + // Extended rates are not dealt with at the moment (all set to 0 in current 36.508) FFS + + fl_UT_ApplyCommand(p_Port, cas_UT_Req(REQUEST_DED_BEARER, CNF_REQUIRED, cs_SecondaryPDP(int2str(p_DedicatedId), int2str(p_DefaultId)))); // @sic R5s110570 sic@ + fl_UT_ApplyCommand(p_Port, cas_UT_Req(DEFINE_EPS_QOS, CNF_REQUIRED, cs_EPSQoS(v_QoSstring))); // @sic R5s110570 sic@ + + if (v_NoOfPacketFilters != 0) { + for (i := 0; i < v_NoOfPacketFilters; i := i + 1) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(DEFINE_TFT, CNF_REQUIRED, cs_TFT(fl_GenerateATForTFTPacketFilter(p_DedicatedId, v_Tft.packetFilterList[i])))); // @sic R5s110570 sic@ + } + } + fl_UT_ApplyCommand(p_Port, cas_UT_Req(p_ActivateOrModify, p_Ut_CnfReq_Type, cs_PDP_Cid(int2str(p_DedicatedId)))); + } + + /* + * @desc To convert the maximum bit rate for the QoS + * @param p_Val + * @return integer + * @status APPROVED (LTE, LTE_IRAT, UTRAN) + */ + function fl_QoS_MaximumBitRate(B8_Type p_Val) return integer + { + var integer v_Val := bit2int(p_Val); + if ((v_Val >= bit2int('00000001'B)) and (v_Val <= bit2int('00111111'B))) { + return v_Val; + } + if ((v_Val >= bit2int('01000000'B)) and (v_Val <= bit2int('01111111'B))) { + return (64 + ((v_Val - 64)*8)); + } + if ((v_Val >= bit2int('10000000'B)) and (v_Val <= bit2int('11111110'B))) { + return (576 + ((v_Val - 128)*64)); + } + if (v_Val == bit2int('11111111'B)) { + return 0; + } + return 0; + } + + /* + * @desc To convert the extended maximum bit rate for the QoS + * @param p_Val + * @return integer + * @status + */ + function fl_QoS_ExtendedMaxBitRate(B8_Type p_Val) return integer + { + var integer v_Val := bit2int(p_Val); + if ((v_Val >= bit2int('00000001'B)) and (v_Val <= bit2int('01001010'B))) { + return (8600 + (v_Val*100)); + } + if ((v_Val >= bit2int('01001011'B)) and (v_Val <= bit2int('10111010'B))) { + return (16000 + ((v_Val - 74)*1000)); + } + if ((v_Val >= bit2int('10111011'B)) and (v_Val <= bit2int('11111010'B))) { + return (128000 + ((v_Val - 186)*2000)); + } + return 0; + } + + /* + * @desc To convert the transfer delay for the QoS + * @param p_Val + * @return integer + * @status APPROVED (LTE_IRAT, UTRAN) + */ + function fl_QoS_TransferDelay(B6_Type p_Val) return integer + { + var integer v_Val := bit2int(p_Val); + if ((v_Val >= bit2int('000001'B)) and (v_Val <= bit2int('001111'B))) { + return (v_Val*10); + } + if ((v_Val >= bit2int('010000'B)) and (v_Val <= bit2int('011111'B))) { + return (200 + ((v_Val - 16)*50)); + } + if ((v_Val >= bit2int('100000'B)) and (v_Val <= bit2int('111110'B))) { + return (1000 + ((v_Val - 32)*100)); + } + return 0; + } + + /* + * @desc To convert the SDU Error Ratio for the QoS + * @param p_Val + * @return charstring + * @status APPROVED (LTE_IRAT, UTRAN) + */ + function fl_QoS_SDUErrorRatio(B4_Type p_Val) return charstring + { + select (p_Val) { + case ('0001'B) { return ("1E2"); } + case ('0010'B) { return ("7E3"); } + case ('0011'B) { return ("1E3"); } + case ('0100'B) { return ("1E4"); } + case ('0101'B) { return ("1E5"); } + case ('0110'B) { return ("1E6"); } + case ('0111'B) { return ("1E1"); } + } + return ""; + } + + /* + * @desc To convert the Residual BER for the QoS + * @param p_Val + * @return charstring + * @status APPROVED (LTE_IRAT, UTRAN) + */ + function fl_QoS_ResidualBER(B4_Type p_Val) return charstring + { + select (p_Val) { + case ('0001'B) { return ("5E2"); } + case ('0010'B) { return ("1E2"); } + case ('0011'B) { return ("5E3"); } + case ('0100'B) { return ("4E3"); } + case ('0101'B) { return ("1E3"); } + case ('0110'B) { return ("1E4"); } + case ('0111'B) { return ("1E5"); } + case ('1000'B) { return ("1E6"); } + case ('1001'B) { return ("6E8"); } + } + return ""; + } + + //---------------------------------------------------------------------------- + /* + * @desc To activate a dedicated LTE EPS bearer + * @param p_Port + * @param p_DedicatedId + * @param p_DefaultId + * @param p_QoS + * @param p_Tft + * @status APPROVED (LTE) + */ + function f_UT_RequestModifyDedicatedBearer(UT_PTC_MTC_PORT p_Port, + integer p_DedicatedId, + integer p_DefaultId, + template (value) EPS_QualityOfService p_QoS, + template (value) TrafficFlowTemplate p_Tft) + { + fl_UT_RequestActivateOrModifyDedicatedBearer(p_Port, MODIFY_BEARER, p_DedicatedId, p_DefaultId, p_QoS, p_Tft); + } + + //---------------------------------------------------------------------------- + /* + * @desc To activate a dedicated LTE EPS bearer + * @param p_Port + * @param p_DedicatedId + * @param p_DefaultId + * @param p_QoS + * @param p_Tft + * @param p_Ut_CnfReq_Type (default value: NO_CNF_REQUIRED) + * @status APPROVED (LTE) + */ + function f_UT_RequestActivateDedicatedBearer(UT_PTC_MTC_PORT p_Port, + integer p_DedicatedId, + integer p_DefaultId, + template (value) EPS_QualityOfService p_QoS, + template (value) TrafficFlowTemplate p_Tft, + Ut_CnfReq_Type p_Ut_CnfReq_Type := NO_CNF_REQUIRED) + { + fl_UT_RequestActivateOrModifyDedicatedBearer(p_Port, ACTIVATE_BEARER, p_DedicatedId, p_DefaultId, p_QoS, p_Tft, p_Ut_CnfReq_Type); + } + + //---------------------------------------------------------------------------- + /* + * @desc To deactivate either an EPS bearer or UTRAN/GERAN PDP context + * @param p_Port + * @param p_DedicatedId + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_UT_DeactivateBearer(UT_PTC_MTC_PORT p_Port, + integer p_DedicatedId) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(DEACTIVATE_BEARER, NO_CNF_REQUIRED, cs_PDP_Cid(int2str(p_DedicatedId)))); + } + //---------------------------------------------------------------------------- + /* + * @desc To create a PDP context on either UTRAN or GERAN + * @param p_Port + * @param p_CId + * @param p_QoSParams + * @param p_APN (default value: "") + * @param p_NSLPI + * @status APPROVED (LTE_IRAT, UTRAN) + */ + function f_UT_ActivatePDPContextUG(UT_PTC_MTC_PORT p_Port, + integer p_CId, + template (value) QualityOfService p_QoSParams, + charstring p_APN := "", + integer p_NSLPI := -1) + { + var QualityOfService v_QoS := valueof(p_QoSParams); // need to do this to then manipulate the string + var charstring v_QoSstring := ""; + var charstring v_PDP_CtxtString := ""; + var integer v_SSDesc := bit2int(v_QoS.sourceStatisticsDescriptor); + var integer v_TrafficClass := bit2int(v_QoS.trafficClass); + var integer v_DelOrder := bit2int(v_QoS.deliveryOrder); + var integer v_DeliveryErrorSDU := bit2int(v_QoS.deliveryErrorSDU); + + // string produced: "p_PDP_Type","p_AccessPointName","p_PDP_Address" - this field is no longer included + if (p_APN != "") { + v_PDP_CtxtString := """" & p_APN & """"; + } + + if (p_NSLPI >= 0) { // @sic R5-140628 sic@ + v_PDP_CtxtString := v_PDP_CtxtString & ",,,,,,,," & int2str (p_NSLPI) ; + } + // @sic C1-141830 sic@ + if (v_SSDesc > 1) { + v_SSDesc := 1; // Only allowed values are 0 or 1 + } + + v_TrafficClass := v_TrafficClass - 1; // in AT command value is one less than in PDP Context + if (v_TrafficClass < 0) { + v_TrafficClass := 0; + } + + select (v_DelOrder) { + case (1) { v_DelOrder := 1; } + case (2) { v_DelOrder := 0; } + case else { v_DelOrder := 2; } + } + + select (v_DeliveryErrorSDU) { + case (1) { v_DeliveryErrorSDU := 2; } + case (2) { v_DeliveryErrorSDU := 1; } + case (3) { v_DeliveryErrorSDU := 0; } + case else { v_DeliveryErrorSDU := 3; } + } + + v_QoSstring := v_QoSstring & int2str(v_TrafficClass); + v_QoSstring := v_QoSstring & "," & int2str(fl_QoS_MaximumBitRate(v_QoS.maxBitRateUL)); + v_QoSstring := v_QoSstring & "," & int2str(fl_QoS_MaximumBitRate(v_QoS.maxBitRateDL)); + v_QoSstring := v_QoSstring & "," & "," & "," & int2str(v_DelOrder); + v_QoSstring := v_QoSstring & "," & int2str(bit2int(v_QoS.maxSduSize)*10); + v_QoSstring := v_QoSstring & ",""" & fl_QoS_SDUErrorRatio(v_QoS.sduErrorRatio)& """"; + v_QoSstring := v_QoSstring & ",""" & fl_QoS_ResidualBER(v_QoS.residualBER)& """"; + v_QoSstring := v_QoSstring & "," & int2str(v_DeliveryErrorSDU); + v_QoSstring := v_QoSstring & "," & int2str(fl_QoS_TransferDelay(v_QoS.transferDelay)); + v_QoSstring := v_QoSstring & "," & int2str(bit2int(v_QoS.trafficHandlingPrio)); + v_QoSstring := v_QoSstring & "," & int2str(v_SSDesc); + v_QoSstring := v_QoSstring & "," & int2str(bit2int(v_QoS.signallingInd)); + + fl_RequestPDPContext(p_Port, p_CId, v_PDP_CtxtString); + fl_UT_ApplyCommand(p_Port, cas_UT_Req(DEFINE_QOS, CNF_REQUIRED, cs_QoS_Profile(int2str(p_CId), v_QoSstring))); // @sic R5s110570 sic@ + fl_UT_ApplyCommand(p_Port, cas_UT_Req(ACTIVATE_BEARER, NO_CNF_REQUIRED, cs_PDP_Cid(int2str(p_CId)))); + } + + //---------------------------------------------------------------------------- + /* + * @desc To configure SIMTC parameters on an existing bearer + * @param p_Port + * @param p_BearerId + * @param p_NSLPI + * @param p_EAB + * @status + */ + function f_UT_ConfigureSIMTCParams(UT_PTC_MTC_PORT p_Port, + integer p_BearerId, + integer p_NSLPI := -1, + integer p_EAB := -1) + { + var charstring v_PDP_CtxtString := int2str(p_BearerId) & ",,,,,,,,,,"; + + // most parameters are left blank - as bearer is already configured, only SIMTC params are included at the end FFS + if (p_NSLPI >= 0) { + v_PDP_CtxtString := v_PDP_CtxtString & int2str(p_NSLPI); + } + if (p_EAB >= 0) { + v_PDP_CtxtString := v_PDP_CtxtString & "," & int2str(p_EAB); + } + + fl_UT_ApplyCommand(p_Port, cas_UT_Req(REQUEST_PDPCONTEXT, CNF_REQUIRED, cs_RequestPDP(v_PDP_CtxtString))); + } + + //---------------------------------------------------------------------------- + /* + * @desc To modify a PDP Context + * @param p_Port + * @param p_PDPContextId + * @status + */ + function f_UT_RequestModifyPDPContext(UT_PTC_MTC_PORT p_Port, + integer p_PDPContextId) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(MODIFY_BEARER, NO_CNF_REQUIRED, cs_PDP_Cid(int2str(p_PDPContextId)))); + } + + //---------------------------------------------------------------------------- + /* + * @desc To request an additional PDN connection - to be associated with an already existing bearer (p_BearerId) + * @param p_Port + * @param p_BearerId - The id of the already existing bearer + * @param p_APN + * @param p_EmergencyBearer (default: false) - set to true if need an additional PDN for an emergency bearer @sic R5-120403 sic@ + * @param p_Ut_CnfReq_Type (default value: NO_CNF_REQUIRED) + * @param p_NSLPI + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_UT_RequestAdditionalPDNConnectivity(UT_PTC_MTC_PORT p_Port, + integer p_BearerId, + charstring p_APN := "", // @sic R5s100466 sic@ + boolean p_EmergencyBearer := false, // @sic R5-120403 sic@ + Ut_CnfReq_Type p_Ut_CnfReq_Type := NO_CNF_REQUIRED, + integer p_NSLPI := -1) // @sic R5s130330 sic@ + { + var charstring v_Cmd := ""; + var charstring v_CommasToReqType := ",,,,,"; + + if (p_APN != "") { + v_Cmd := """" & p_APN & """"; // @sic R5s100466, R5s100538 sic@ + } + if (p_EmergencyBearer) { // @sic R5-120403 sic@ + v_Cmd := v_Cmd & v_CommasToReqType & "1"; + } + if (p_NSLPI >= 0) { // @sic R5-140628 sic@ + if (not p_EmergencyBearer) { + v_Cmd := v_Cmd & v_CommasToReqType & ",,,"; + } + v_Cmd := v_Cmd & int2str(p_NSLPI); + } + // @sic C1-141830 sic@ + + fl_RequestPDPContext(p_Port, p_BearerId, v_Cmd); + fl_UT_ApplyCommand(p_Port, cas_UT_Req(ACTIVATE_BEARER, p_Ut_CnfReq_Type, cs_PDP_Cid(int2str(p_BearerId)))); + } + + //---------------------------------------------------------------------------- + /* + * @desc Used by LTE, UTRAN and GERAN to send the DCONT AT command + * @param p_Port + * @param p_BearerId + * @param p_RestOfCmd + * @status APPROVED (LTE, LTE_A, LTE_IRAT, UTRAN) + */ + function fl_RequestPDPContext(UT_PTC_MTC_PORT p_Port, + integer p_BearerId, + charstring p_RestOfCmd) + { // @sic R5s100466 change 5 sic@ + var charstring v_Cmd := ""; + var charstring v_Type := """IP"""; + + if (pc_IPv6 and (not pc_IPv4)) { + v_Type := """IPV6"""; + } + if (pc_IPv6 and pc_IPv4) { + v_Type := """IPV4V6"""; + } + v_Cmd := v_Cmd & int2str(p_BearerId); + v_Cmd := v_Cmd & "," & v_Type; + + if (p_RestOfCmd != "") { // @sic R5s120002 sic@ + v_Cmd := v_Cmd & "," & p_RestOfCmd; // @sic R5s100520 sic@ + } + fl_UT_ApplyCommand(p_Port, cas_UT_Req(REQUEST_PDPCONTEXT, CNF_REQUIRED, cs_RequestPDP(v_Cmd))); // @sic R5s110570 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc To attach for PS services + * @param p_Port + * @status APPROVED (LTE, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UT_TriggerAttach(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(ATTACH, NO_CNF_REQUIRED)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To detach + * @param p_Port + * @status APPROVED (LTE) + */ + function f_UT_InitiateDetach(UT_PTC_MTC_PORT p_Port) // @sic R5-113807 sic@ + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(DETACH, NO_CNF_REQUIRED)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To detach + * @param p_Port + * @status APPROVED (LTE) + */ + function f_UT_InitiateDetach_NonEPSOnly(UT_PTC_MTC_PORT p_Port) // @sic R5-113807 sic@ + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(DETACH_NON_EPS, NO_CNF_REQUIRED)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To trigger the transmission of a UE Assistance Information messag + * @param p_Port + * @param p_PowerPreference (default: 1 - low power consumption) + * @status + */ + function f_UT_PowerPreferenceIndication(UT_PTC_MTC_PORT p_Port, B1_Type p_PowerPreference := '1'B ) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(POWER_PREFERENCE, NO_CNF_REQUIRED, cs_PowerPreference (int2str(bit2int(p_PowerPreference))))); + } + + //---------------------------------------------------------------------------- + /* + * @desc To Select the SMS message service + * @param p_Port + * @param p_Service + * @return charstring + * @status APPROVED (LTE) + */ + function f_UT_SelectMessageService(UT_PTC_MTC_PORT p_Port, + charstring p_Service) return charstring + { + var UT_COMMON_CNF v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(SELECT_MESSAGE_SERVICE, + CNF_REQUIRED, + cs_MessageService(p_Service))); + return v_Cnf.ResultString; // @sic R5-140347 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc To set the preferred message storage for SMS + * @param p_Port + * @param p_Mem1 + * @param p_Mem2 + * @param p_Mem3 + * @return charstring + * @status APPROVED (LTE) + */ + function f_UT_SetPreferredMessageStorage(UT_PTC_MTC_PORT p_Port, + charstring p_Mem1, + charstring p_Mem2, + charstring p_Mem3) return charstring + { + var UT_COMMON_CNF v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(SET_PREFERRED_STORAGE, + CNF_REQUIRED, + cs_PreferredStorage(p_Mem1, p_Mem2, p_Mem3))); + return v_Cnf.ResultString; // @sic R5-140347 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc to set the message format for SMS + * @param p_Port + * @param p_Mode + * @return charstring + * @status APPROVED (LTE) + */ + function f_UT_SetMessageFormat(UT_PTC_MTC_PORT p_Port, + charstring p_Mode) return charstring + { + var UT_COMMON_CNF v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(MESSAGE_FORMAT, + CNF_REQUIRED, + cs_MessageFormat(p_Mode))); + return v_Cnf.ResultString; // @sic R5-140347 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc To select the character set for SMS + * @param p_Port + * @param p_Chset + * @return charstring + * @status APPROVED (LTE) + */ + function f_UT_SelectCharacterSet(UT_PTC_MTC_PORT p_Port, + charstring p_Chset) return charstring + { + var UT_COMMON_CNF v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(SELECT_CHARACTER_SET, + CNF_REQUIRED, + cs_SelectCharacterSet(p_Chset))); + return v_Cnf.ResultString; // @sic R5-140347 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc To delete the SMS message from storage + * @param p_Port + * @param p_Index + * @param p_Delflag + * @return charstring + * @status APPROVED (LTE) + */ + function f_UT_DeleteMessageFromStorage_DELFLAG(UT_PTC_MTC_PORT p_Port, + integer p_Index, + integer p_Delflag) return charstring + { + var UT_COMMON_CNF v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(DELETE_MESSAGE_WITHFLAG, + CNF_REQUIRED, + cs_DeleteMessage_Withflag(int2str(p_Index), int2str(p_Delflag)))); + return v_Cnf.ResultString; // @sic R5-140347 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc To request the service centre address for SMS + * @param p_Port + * @param p_Sca + * @param p_Tosca + * @return charstring + * @status APPROVED (LTE) + */ + function f_UT_ServiceCentreAddress(UT_PTC_MTC_PORT p_Port, + charstring p_Sca, + integer p_Tosca) return charstring + { + var UT_COMMON_CNF v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(SERVICE_CENTRE_ADDRESS, + CNF_REQUIRED, + cs_ServiceCentreAddress(p_Sca, int2str(p_Tosca)))); + return v_Cnf.ResultString; // @sic R5-140347 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc to write an SMS message to memory + * @param p_Port + * @param p_Da + * @param p_Toda + * @param p_Text + * @return charstring + * @status APPROVED (LTE, UTRAN) + */ + function f_UT_WriteMessageToMemoryText(UT_PTC_MTC_PORT p_Port, + charstring p_Da, + charstring p_Toda, + charstring p_Text) return charstring + { + var UT_COMMON_CNF v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(WRITE_MESSAGE_TOMEMORY_TEXTMODE, + CNF_REQUIRED, + cs_WriteMessageToMemory_Text(p_Da, p_Toda, p_Text))); // @sic R5s110750 sic@ + return v_Cnf.ResultString; // @sic R5-140347 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc to write an SMS message to memory + * @param p_Port + * @param p_Len + * @param p_Pdu + * @return charstring + * @status APPROVED (LTE, UTRAN) + */ + function f_UT_WriteMessageToMemoryPDU(UT_PTC_MTC_PORT p_Port, + charstring p_Len, + charstring p_Pdu) return charstring + { + var UT_COMMON_CNF v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(WRITE_MESSAGE_TOMEMORY_PDUMODE, + CNF_REQUIRED, + cs_WriteMessageToMemory_PDU(p_Len, p_Pdu))); + return v_Cnf.ResultString; // @sic R5-140347 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc To send a stored SMS message + * @param p_Port + * @param p_Index + * @status APPROVED (LTE, UTRAN) + */ + function f_UT_SendStoredOneMessage(UT_PTC_MTC_PORT p_Port, + integer p_Index) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(SEND_STORED_MESSAGE_ONE, + NO_CNF_REQUIRED, // @sic R5s110091 sic@ + cs_SendMessageFromStorage(int2str(p_Index)))); + } + + //---------------------------------------------------------------------------- + /* + * @desc To send a stored 3 stored SMS messages, concatenated + * @param p_Port + * @param p_Index + * @status APPROVED (LTE) + */ + function f_UT_SendStored_3_Messages(UT_PTC_MTC_PORT p_Port, + integer p_Index) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(SEND_3_STORED_MESSAGES, + NO_CNF_REQUIRED, + cs_Send_3_MessageFromStorage(int2str(p_Index), int2str(p_Index + 1), int2str(p_Index + 2)))); + } + + //---------------------------------------------------------------------------- + /* + * @desc To set text mode parameters for SMS + * @param p_Port + * @param p_Fo + * @param p_Vp + * @param p_Pid + * @return charstring + * @status APPROVED (LTE, UTRAN) + */ + function f_UT_SetTextModeParameters(UT_PTC_MTC_PORT p_Port, + integer p_Fo, + integer p_Vp, + integer p_Pid) return charstring + { + var UT_COMMON_CNF v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(SET_TEXTMODE_PARAMETERS, + CNF_REQUIRED, + cs_SetTextModeParameters(int2str(p_Fo), int2str(p_Vp), int2str(p_Pid)))); // @sic R5s100606 sic@ + return v_Cnf.ResultString; // @sic R5-140347 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc To check the SMS message displayed + * @param p_Port + * @param p_Length + * @param p_Msg + * @return boolean + * @status APPROVED (LTE) + */ + function f_UT_ChkMsgDisplayed(UT_PTC_MTC_PORT p_Port, + integer p_Length, + charstring p_Msg) return boolean + { + // To make the operator check an MT Short Message received + var UT_COMMON_CNF v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(CHECK_MESSAGE_DISPLAYED, + CNF_REQUIRED, + cs_ChkMsgDisplayed(int2str(p_Length), p_Msg))); + + return v_Cnf.Result; + } + + //---------------------------------------------------------------------------- + /* + * @desc To check the UE displays the string provided (number/name) + * @param p_Port + * @param p_ToDisplay + * @return boolean + * @status APPROVED (SSNITZ) + */ + function f_UT_ChkCallDisplayed(UT_PTC_MTC_PORT p_Port, + charstring p_ToDisplay) return boolean + { // To make the operator check the number/name of the call is displayed + + var UT_COMMON_CNF v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(CHECK_CALL_DISPLAY, + CNF_REQUIRED, + cs_ChkCallDisplayed(p_ToDisplay))); + + return v_Cnf.Result; + } + + //---------------------------------------------------------------------------- + /* + * @desc To check the UE displays the string provided + * @param p_Port + * @param p_ToDisplay + * @return boolean + * @status + */ + function f_UT_ChkResponseDisplayed(UT_PTC_MTC_PORT p_Port, + charstring p_ToDisplay) return boolean + { + // To make the operator check the response displayed by the SS + var UT_COMMON_CNF v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(CHECK_RESPONSE_DISPLAY, + CNF_REQUIRED, + cs_ChkCallDisplayed(p_ToDisplay))); + + return v_Cnf.Result; + } + + //---------------------------------------------------------------------------- + /* + * @desc To check the UE provides the correct user indication + * @param p_Port + * @param p_SuppService + * @param p_ToDisplay + * @return boolean + * @status + */ + function f_UT_ChkSuppServiceUserIndication(UT_PTC_MTC_PORT p_Port, + charstring p_SuppService, + charstring p_ToDisplay := "") return boolean + { + // To make the operator check the response displayed by the SS + var UT_COMMON_CNF v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(CHECK_SS_USER_IND, + CNF_REQUIRED, + cs_Chk_SSUserInd(p_SuppService, p_ToDisplay))); + + return v_Cnf.Result; + } + + //---------------------------------------------------------------------------- + /* + * @desc To request the current time - returned in the format "yy/MM/dd,hh:mm:ss?zz", + * where characters indicate year (two last digits), month, day, hour, minutes, seconds and time zone + * @param p_Port + * @return charstring + * @status APPROVED (LTE) + */ + function f_UT_ChkTimeZone(UT_PTC_MTC_PORT p_Port) return charstring + { + var UT_COMMON_CNF v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(CHECK_CLOCK, CNF_REQUIRED)); + return v_Cnf.ResultString; // @sic R5-140347 sic@ + } + + //---------------------------------------------------------------------------- + + type enumerated UT_OPERATOR_FORMAT { LONG_NAME, SHORT_NAME, NUMERIC_ONLY}; /* @status APPROVED (LTE) */ + + /* + * @desc To request the name of the operator currently camped on + * @param p_Port + * @param p_Format - Use the enumerated type defined just above to select the UE to return the operator name in long short or numeric only format + * @return charstring + * @status APPROVED (LTE) + */ + function f_UT_ChkOperatorName(UT_PTC_MTC_PORT p_Port, + UT_OPERATOR_FORMAT p_Format) return charstring + { + var UT_COMMON_CNF v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(CHECK_OPERATOR_NAME, + CNF_REQUIRED, + cs_OperatorFormat(int2str(enum2int(p_Format))))); // @sic R5s110439 sic@ + return v_Cnf.ResultString; // @sic R5-140347 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc To request the operator to check that the UE displays the correct NITZ information: Universal Time + * @param p_Port + * @param p_NITZ_Year + * @param p_NITZ_Month + * @param p_NITZ_Day + * @param p_NITZ_Hour + * @param p_NITZ_Minutes + * @param p_NITZ_Seconds + * @param p_NITZ_TimeZone + * @status APPROVED (LTE) + */ + function f_UT_MMI_CheckNITZ_UniversalTime(UT_PTC_MTC_PORT p_Port, + charstring p_NITZ_Year, + charstring p_NITZ_Month, + charstring p_NITZ_Day, + charstring p_NITZ_Hour, + charstring p_NITZ_Minutes, + charstring p_NITZ_Seconds, + charstring p_NITZ_TimeZone) + { + var template (value) Ut_ParameterList_Type v_ParameterList; + v_ParameterList[0] := cs_Ut_Parameter_NITZ_Year(p_NITZ_Year); + v_ParameterList[1] := cs_Ut_Parameter_NITZ_Month(p_NITZ_Month); + v_ParameterList[2] := cs_Ut_Parameter_NITZ_Day(p_NITZ_Day); + v_ParameterList[3] := cs_Ut_Parameter_NITZ_Hour(p_NITZ_Hour); + v_ParameterList[4] := cs_Ut_Parameter_NITZ_Minutes(p_NITZ_Minutes); + v_ParameterList[5] := cs_Ut_Parameter_NITZ_Seconds(p_NITZ_Seconds); + v_ParameterList[6] := cs_Ut_Parameter_NITZ_TimeZone(p_NITZ_TimeZone); + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CHECK_NITZ_UT, CNF_REQUIRED, v_ParameterList)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To request the operator to check that the UE displays the correct NITZ information: Local Time and Timezone + * @param p_Port + * @param p_NITZ_LocalTimeZone + * @status APPROVED (LTE) + */ + function f_UT_MMI_CheckNITZ_LocalTimeAndTimeZone(UT_PTC_MTC_PORT p_Port, + charstring p_NITZ_LocalTimeZone) + { + var template (value) Ut_ParameterList_Type v_ParameterList; + v_ParameterList[0] := cs_Ut_Parameter_NITZ_LocalTimeZone(p_NITZ_LocalTimeZone); + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CHECK_NITZ_LTZ, CNF_REQUIRED, v_ParameterList)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To request the operator to check that the UE displays the correct NITZ information: Local Time and Timezone + * @param p_Port + * @status + */ + function f_UT_MMI_CheckNITZ_DaylightSavingTime(UT_PTC_MTC_PORT p_Port, + charstring p_NITZ_DaylightSavingTime) + { + var template (value) Ut_ParameterList_Type v_ParameterList; + v_ParameterList[0] := cs_Ut_Parameter_NITZ_DaylightSavingTime(p_NITZ_DaylightSavingTime); + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CHECK_NITZ_DST, CNF_REQUIRED, v_ParameterList)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To request the operator to check that the UE displays the correct NITZ information: Full Network Name + * @param p_Port + * @param p_NITZ_FullNetworkName + * @status APPROVED (LTE) + */ + function f_UT_MMI_CheckNITZ_FullNetworkName(UT_PTC_MTC_PORT p_Port, + charstring p_NITZ_FullNetworkName) + { + var template (value) Ut_ParameterList_Type v_ParameterList; + v_ParameterList[0] := cs_Ut_Parameter_NITZ_FullNetworkName(p_NITZ_FullNetworkName); + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CHECK_NITZ_FULL_NETWORK_NAME, CNF_REQUIRED, v_ParameterList)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To request the operator to check that the UE displays the correct NITZ information: Short Network Name + * @param p_Port + * @param p_NITZ_ShortNetworkName + * @status APPROVED (LTE) + */ + function f_UT_MMI_CheckNITZ_ShortNetworkName(UT_PTC_MTC_PORT p_Port, + charstring p_NITZ_ShortNetworkName) + { + var template (value) Ut_ParameterList_Type v_ParameterList; + v_ParameterList[0] := cs_Ut_Parameter_NITZ_ShortNetworkName(p_NITZ_ShortNetworkName); + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CHECK_NITZ_SHORT_NETWORK_NAME, CNF_REQUIRED, v_ParameterList)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To answer a call + * @param p_Port + * @status APPROVED (IMS, LTE, LTE_A, LTE_IRAT) + */ + function f_UT_AnswerCall(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(ANSWER_CALL, NO_CNF_REQUIRED)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To hang up a call + * @param p_Port + * @status + */ + function f_UT_HangupCall(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(RELEASE_CALL, NO_CNF_REQUIRED)); + } + + /* + * @desc To hang up an IMS call + * @param p_Port + * @param p_CallId (default value: 1) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A) + */ + function f_UT_HangupIMSCall(UT_PTC_MTC_PORT p_Port, + integer p_CallId := 1) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(RELEASE_IMS_CALL, NO_CNF_REQUIRED, cs_CallIdNumber(int2str (p_CallId)))); + } + + function f_UT_IMS_AcceptText(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(ACCEPT_MTSI_TEXT, NO_CNF_REQUIRED)); + } + + function f_UT_IMS_ActivateMWI(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(ACTIVATE_MESSAGE_WAIT_INDICATION, NO_CNF_REQUIRED)); + } + + /* + * @desc trigger UE to send refresh USIM parameters + * @param p_Port + * @status + */ + function f_UT_IMS_Refresh(UT_PTC_MTC_PORT p_Port, + charstring p_HomeDomainName, + charstring p_PrivateUserIdentity, + charstring p_PublicUserIdentity) + { + var template (value) Ut_ParameterList_Type v_ParameterList; + v_ParameterList[0] := cs_Ut_Parameter_HomeDomain(p_HomeDomainName); + v_ParameterList[1] := cs_Ut_Parameter_PrivateUserId(p_PrivateUserIdentity); + v_ParameterList[2] := cs_Ut_Parameter_PublicUserId(p_PublicUserIdentity); + fl_UT_ApplyCommand(p_Port, cas_UT_Req(REFRESH, CNF_REQUIRED, v_ParameterList)); + } + + /* + * @desc trigger UE to send short message + * @param p_Port + * @status APPROVED (IMS) + */ + function f_UT_IMS_TriggerSMS(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(TRIGGER_SMS, NO_CNF_REQUIRED)); + } + + function f_UT_IMS_Trigger2ndIMPU(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(TRIGGER_2ND_IMPU, NO_CNF_REQUIRED)); + } + + function f_UT_IMS_Trigger3rdIMPU(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(TRIGGER_3RD_IMPU, NO_CNF_REQUIRED)); + } + + /* + * @desc Remove a video call + * @param p_Port + * @param p_CalleeUri + */ + function f_UT_IMS_RemoveVideoCall(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(REMOVE_VIDEO_CALL, NO_CNF_REQUIRED)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To trigger the UE to send data uplink on the GERAN GPRS Sapi specified + * @param p_Port + * @param p_Data - the amount of uplink data to send + * @param p_Sapi = the GPRS SAPI to send the data on + * @status APPROVED (LTE_IRAT) + */ + function f_UT_GeranUplinkData(UT_PTC_MTC_PORT p_Port, + charstring p_Data, + charstring p_Sapi) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(GERAN_UPLINK_DATA, NO_CNF_REQUIRED, cs_UplinkData(p_Data, p_Sapi))); + } + + //---------------------------------------------------------------------------- + /* + * @desc To request the operator to configure UE to use SMS Only service for SIMTC + * @param p_Port + * @status + */ + function f_UT_MMI_ConfigureSMSOnly(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CONFIGURE_SMS_ONLY, CNF_REQUIRED, omit)); + } + //---------------------------------------------------------------------------- + type enumerated MOLR_Type {ASSISTED_GPS, ASSISTED_GANSS, ASSISTED_GPS_GANSS, POSITION_ESTIMATE} + /* + * @desc To request the operator to trigger MO-LR for position estimate or assistance data + * @param p_Port + * @param p_TypeOfMolr + * @status + */ + + function f_UT_InitMOLR(UT_PTC_MTC_PORT p_Port, + MOLR_Type p_TypeOfMolr) + { + var charstring v_Method; + select (p_TypeOfMolr) { + case (ASSISTED_GPS) { + v_Method := "1"; + } + case (ASSISTED_GANSS) { + v_Method := "2"; + } + case (ASSISTED_GPS_GANSS) { + v_Method := "3"; + } + case (POSITION_ESTIMATE) { + v_Method := "4"; + } + } + fl_UT_ApplyCommand(p_Port, cas_UT_Req(TRIGGER_MOLR, NO_CNF_REQUIRED, cs_TriggerMolr(v_Method))); + } + + //---------------------------------------------------------------------------- + /* @desc To either allow or deny the previously received Location Request + * @param p_Port + * @param p_HandleId + * @param p_Allow + * @status APPROVED (POS) + */ + function f_UT_AT_AnswerLocationRequest(UT_PTC_MTC_PORT p_Port, + integer p_HandleId, + boolean p_Allow) + { + var charstring v_Permission; + + if (p_Allow) { + v_Permission := "0"; + } else { + v_Permission := "1"; + } + fl_UT_ApplyCommand(p_Port, cas_UT_Req(LOCATION_ANSWER, NO_CNF_REQUIRED, cs_LocationAnswer(v_Permission, int2str(p_HandleId)))); + } + + //---------------------------------------------------------------------------- + /* + * @desc To subscribe to AT response location request notifications. + * To be called at the beginning of appropriate positioning test case bodies + * @param p_Port + * @param p_Enable (default value: true) + * @status APPROVED (POS) + */ + function f_UT_AT_SubscribeLocationRequestNotifications(UT_PTC_MTC_PORT p_Port, + boolean p_Enable := true) + { + var template (value) Ut_ParameterList_Type v_Enable := cs_IntegerString ("3"); // enable everything + + if (not p_Enable) { + v_Enable := cs_IntegerString ("0"); + } + fl_UT_ApplyCommand(p_Port, cas_UT_Req(LOCATION_SUBSCRIBE, MULTIPLE_CNF, v_Enable)); + } + + //---------------------------------------------------------------------------- + + type enumerated LOCATION_REQUEST_Type { LOCATION_NOTIFICATION, LOCATION_REQ_ALLOWED, LOCATION_REQ_FORBIDDEN }; /* @status APPROVED (POS) */ + + /* + * @desc To check the UE displays the correct notification + * @param p_Port + * @param p_LR_Type + * @return integer + * @status APPROVED (POS) + */ + function f_UT_AT_NotifyLocationRequest(UT_PTC_MTC_PORT p_Port, + LOCATION_REQUEST_Type p_LR_Type) return integer + { + var UT_COMMON_CNF v_Cnf; + var integer v_HandleId := -1; // value of -1 means location request notification request received, but of wrong type, so test case should fail + var charstring v_NotificationType := ""; + var charstring v_HandleChar := ""; + + // v_Cnf := fl_UT_RetCnf(p_Port); + // Although no AT command is sent at this time, need to provide a dummy MMI prompt for when AT cmd not supported + v_Cnf := fl_UT_ApplyCommandRetCnf (p_Port, cas_UT_Req(LOCATION_MULTIPLE, CNF_REQUIRED)); // @sic R5s140777 sic@ + v_HandleChar := regexp(v_Cnf.ResultString, "*CMTLR: (*),", 0); + v_NotificationType := regexp(v_Cnf.ResultString, "*CMTLR: [0-9]+,(*)", 0); + + if (enum2int(p_LR_Type) == str2int(v_NotificationType)) { + v_HandleId := str2int(v_HandleChar); + } + return v_HandleId; + } + + //---------------------------------------------------------------------------- + /* + * @desc To request the operator to provide location information to the UE + * @param p_Port + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A) + */ + function f_UT_MMI_ProvideLocationInfoToUE(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(LOCATION_INFO, CNF_REQUIRED)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To subscribe to AT response time zone reporting + * @param p_Port + * @param p_Msg + * @status + */ + function f_UT_AT_SubscribeTimeZoneReporting(UT_PTC_MTC_PORT p_Port, boolean p_Enable := true) + { + var template (value) Ut_ParameterList_Type v_Enable := cs_IntegerString ("2"); // enable everything + + if (not p_Enable) { + v_Enable := cs_IntegerString ("0"); + } + fl_UT_ApplyCommand(p_Port, cas_UT_Req(TIMEZONE_SUBSCRIBE, MULTIPLE_CNF, v_Enable)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To receive a timezone report + * @param p_Port + * @return charstring + * @status APPROVED (LTE) + */ + function f_UT_AT_TimezoneReport(UT_PTC_MTC_PORT p_Port) return charstring + { + var UT_COMMON_CNF v_Cnf; + + // v_Cnf := fl_UT_RetCnf(p_Port); + // Although no AT command is sent at this time, need to provide a dummy MMI prompt for when AT cmd not supported + v_Cnf := fl_UT_ApplyCommandRetCnf (p_Port, cas_UT_Req(TIMEZONE_MULTIPLE, CNF_REQUIRED)); // @sic R5s140777 sic@ + return v_Cnf.ResultString; + } + + //---------------------------------------------------------------------------- + /* + * @desc To get the existing emergency numbers already in the UE + * @param p_Port + * @return EmergencyNumList + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_UT_GetEmergencyNumbers(UT_PTC_MTC_PORT p_Port) return EmergencyNumList + { + var charstring v_Num; + var charstring v_Answer; + var EmergencyNumList v_ExistingNums; + var integer i := 0; + var UT_COMMON_CNF v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(GET_EMERGENCY_NUMS_1, CNF_REQUIRED)); + + v_ExistingNums[i] := 'F'H; // Just to set a default value + + v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(GET_EMERGENCY_NUMS_2, CNF_REQUIRED)); + v_Answer := v_Cnf.ResultString; // @sic R5-140347 sic@ + + do { + v_Answer := regexp(v_Answer, "*[+]CEN2:(*)", 0); + if (v_Answer != "") { // Another number + v_Num := regexp(v_Answer, "*[+]CEN2: [0-9]+,""[0-9]+""(*)", 0); + v_ExistingNums[i] := str2hex(v_Num); + i := i + 1; + } + } while (v_Answer != ""); + + return v_ExistingNums; + } + + //---------------------------------------------------------------------------- + /* + * @desc To trigger an HRPD PDN Connection + * @param p_Port + * @status APPROVED (LTE_IRAT) + */ + function f_UT_Trigger_HRPD_PDN_Connection(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(HRPD_PDN_CONNECTION, NO_CNF_REQUIRED)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To trigger User Reselection + * @param p_Port + * @status APPROVED (LTE) + */ + function f_UT_TriggerUserReselection(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(TRIGGER_USER_RESELECTION, NO_CNF_REQUIRED)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To trigger non call related SS + * @param p_Port + * @status APPROVED (UTRAN) + */ + function f_UT_RequestNonCallRelatedSS(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(REQUEST_NON_CALL_RELATED_SS, NO_CNF_REQUIRED)); + } + + //---------------------------------------------------------------------------- + /* + * @desc send coordination message to activate/deactivate supplementary service + * @param p_Port + * @param p_Activate + * @param p_PublicUserIdentity + * @param p_SupplementaryService + * @status APPROVED (IMS) + */ + function f_UT_IMS_ActivateDeactivateSupplementaryService(UT_PTC_MTC_PORT p_Port, + boolean p_Activate, + charstring p_PublicUserIdentity, + SS_Type p_SupplementaryService) + { + var template (value) Ut_ParameterList_Type v_ParameterList; + var Ut_Common_Req_Type v_Command := SUPPLEMENTARY_SERVICE; + + if (p_Activate) { + v_ParameterList[1] := cs_Ut_Parameter_SS_Mode(tsc_UT_SS_ACTIVATE); + } else { + v_ParameterList[1] := cs_Ut_Parameter_SS_Mode(tsc_UT_SS_DEACTIVATE); + } + v_ParameterList[2] := cs_Ut_Parameter_Uri(p_PublicUserIdentity); + v_ParameterList[0] := cs_Ut_Parameter_SupplementaryService(fl_Convert_SS_Type (p_SupplementaryService)); + fl_UT_ApplyCommand(p_Port, cas_UT_Req(v_Command, NO_CNF_REQUIRED, v_ParameterList)); + } + + type enumerated SS_Type { SS_CLIP, SS_CLIR, SS_COLP, SS_TIR, SS_CNAP, SS_CALL_WAITING, SS_BAIC, SS_BAIC_ANONYMOUS, SS_BAIC_EXCEPT_SPECIFIC_USER, + SS_BIC_ROAM, SS_BAOC, SS_BOIC, SS_BOIC_EXHC, SS_ALL_BARRING_AB, SS_ALL_OUTGOING_BARRING_AG, SS_ALL_INCOMING_BARRING_AC, SS_BARRING_IN_AND_OUT_ROAM, + SS_CFU, SS_CFNRy, SS_CFB, SS_CFNL, SS_CFNRc, SS_CF_ALL, SS_CF_ALL_CONDITIONAL, SS_CD, SS_CDIVN, SS_USSD }; /* @status APPROVED (IMS) */ + + type enumerated SS_Mode_Type {DEACTIVATE_MODE, ACTIVATE_MODE, QUERY_MODE, REGISTER_MODE, DELETE_MODE}; /* @status APPROVED (SSNITZ) */ + + type enumerated SS_SERVICE_TYPE {SS_ALLSERVICES, SS_SPEECH, SS_SYNC} // There are others, but as not yet added as all UTRAN SS should only be relevant for speech + + /* + * @desc Converts the supplementary service service enum to a charstring + * @param p_Service + * @return charstring + * @status + */ + function fl_Convert_SS_Service (SS_SERVICE_TYPE p_Service) return charstring + { + var charstring v_Service := "7"; + select (p_Service) { + case (SS_SPEECH) { + v_Service := "1"; + } + case (SS_SYNC) { + v_Service := "17"; + } + } + return v_Service; + } + + /* + * @desc Converts the supplementary service mode enum to a charstring + * @param p_Mode + * @return charstring + * @status APPROVED (SSNITZ) + */ + function fl_Convert_SS_Mode(SS_Mode_Type p_Mode) return charstring + { + var charstring v_Mode := ""; + select (p_Mode) { + case (DEACTIVATE_MODE) { + v_Mode := tsc_UT_SS_DEACTIVATE; + } case (ACTIVATE_MODE) { + v_Mode := tsc_UT_SS_ACTIVATE; + } case (REGISTER_MODE) { + v_Mode := tsc_UT_SS_REGISTER; + } case (QUERY_MODE) { + v_Mode := tsc_UT_SS_QUERY; + } case (DELETE_MODE) { + v_Mode := tsc_UT_SS_DELETE + } + } + return v_Mode; + } + + /* + * @desc Converts the supplementary service type enum to a charstring + * @param p_SS_Type + * @return charstring + * @status APPROVED (IMS) + */ + function fl_Convert_SS_Type (SS_Type p_SS_Type) return charstring + { + var charstring v_Type := ""; + select (p_SS_Type) { + case (SS_CLIP) { + v_Type := tsc_UT_SS_CLIP; + } case (SS_CLIR) { + v_Type := tsc_UT_SS_CLIR; + } case (SS_COLP) { + v_Type := tsc_UT_SS_COLP; + } case (SS_TIR) { + v_Type := tsc_UT_SS_TERMINATING_IDENTIFICATION_RESTRICTION; + } case (SS_CNAP) { + v_Type := tsc_UT_SS_CNAP; + } case (SS_CALL_WAITING) { + v_Type := tsc_UT_SS_CALL_WAITING; + } case (SS_BAIC) { + v_Type := tsc_UT_SS_INCOMING_COMMUNICATION_BARRING; + } case (SS_BAIC_ANONYMOUS) { + v_Type := tsc_UT_SS_INCOMING_COMMUNICATION_BARRING_ANONYMOUS; + } case (SS_BAIC_EXCEPT_SPECIFIC_USER) { + v_Type := tsc_UT_SS_INCOMING_COMMUNICATION_BARRING_EXCEPT_SPECIFIC_USER; + } case (SS_BIC_ROAM) { + v_Type := tsc_UT_SS_INCOMING_COMMUNICATION_BARRING_ROAMING; + } case (SS_BAOC) { + v_Type := tsc_UT_SS_OUTGOING_COMMUNICATION_BARRING; + } case (SS_BOIC) { + v_Type := tsc_UT_SS_OUTGOING_INTERNATIONAL_BARRING; + } case (SS_BOIC_EXHC) { + v_Type := tsc_UT_SS_OUTGOING_INTERNATIONAL_EX_HC_BARRING; + } case (SS_ALL_BARRING_AB) { + v_Type := tsc_UT_SS_ALL_BARRING_SERVICES_AB; + } case (SS_ALL_OUTGOING_BARRING_AG) { + v_Type := tsc_UT_SS_ALL_OUTGOING_BARRING_SERVICES_AG; + } case (SS_ALL_INCOMING_BARRING_AC) { + v_Type := tsc_UT_SS_ALL_INCOMING_BARRING_SERVICES_AC; + } case (SS_BARRING_IN_AND_OUT_ROAM) { + v_Type := tsc_UT_SS_COMMUNICATION_BARRING_WHILE_ROAMING; + } case (SS_CFU) { + v_Type := tsc_UT_SS_CALL_FORWARDING_UNCONDITIONAL; + } case (SS_CFNRy) { + v_Type := tsc_UT_SS_CALL_FORWARDING_NO_REPLY; + } case (SS_CFB) { + v_Type := tsc_UT_SS_CALL_FORWARDING_BUSY; + } case (SS_CFNL) { + v_Type := tsc_UT_SS_CALL_FORWARDING_NOT_LOGGED_IN; + } case (SS_CFNRc) { + v_Type := tsc_UT_SS_CALL_FORWARDING_NOT_REACHABLE; + } case (SS_CF_ALL) { + v_Type := tsc_UT_SS_CALL_FORWARDING_ALL; + } case (SS_CF_ALL_CONDITIONAL) { + v_Type := tsc_UT_SS_CALL_FORWARDING_ALL_CONDITIONAL; + } case (SS_CD) { + v_Type := tsc_UT_SS_CALL_FORWARDING_DEFLECTION; + } case (SS_CDIVN) { + v_Type := tsc_UT_SS_CALL_FORWARDING_DIVERSION_NOTIFICATION; + } case (SS_USSD) { + v_Type := tsc_UT_SS_USSD; + } + } + return v_Type; + } + + /* + * @desc send coordination message to activate/deactivate supplementary service CLIR + * @param p_Port + * @param p_Mode + * @status APPROVED (SSNITZ) + */ + function f_UT_SupplementaryService_CLIR(UT_PTC_MTC_PORT p_Port, + SS_Mode_Type p_Mode) + { + var template (value) Ut_ParameterList_Type v_ParameterList; + var Ut_Common_Req_Type v_Command := SUPPLEMENTARY_SERVICE; + + v_ParameterList[1] := cs_Ut_Parameter_SS_Mode(fl_Convert_SS_Mode(p_Mode)); + v_ParameterList[0] := cs_Ut_Parameter_SupplementaryService(tsc_UT_SS_CLIR); + fl_UT_ApplyCommand(p_Port, cas_UT_Req(v_Command, NO_CNF_REQUIRED, v_ParameterList)); + } + + /* + * @desc send coordination message to activate/deactivate supplementary service CNAP + * @param p_Port + * @param p_Mode + * @status + */ + function f_UT_SupplementaryService_CNAP(UT_PTC_MTC_PORT p_Port, + SS_Mode_Type p_Mode) + { + var template (value) Ut_ParameterList_Type v_ParameterList; + var Ut_Common_Req_Type v_Command := SUPPLEMENTARY_SERVICE; + + v_ParameterList[1] := cs_Ut_Parameter_SS_Mode(fl_Convert_SS_Mode(p_Mode)); + v_ParameterList[0] := cs_Ut_Parameter_SupplementaryService(tsc_UT_SS_CNAP); + fl_UT_ApplyCommand(p_Port, cas_UT_Req(v_Command, NO_CNF_REQUIRED, v_ParameterList)); + } + + /* + * @desc send coordination message to activate/deactivate supplementary service CF + * @param p_Port + * @param p_Mode + * @param p_CallForwardType + * @param p_Number + * @param p_Time (used for CFNRy, default value: omit) + * @status + */ + function f_UT_SupplementaryService_CallForward(UT_PTC_MTC_PORT p_Port, + SS_Mode_Type p_Mode, + SS_Type p_CallForwardType, + charstring p_Number, + template (omit) charstring p_Time := omit, + template (omit) SS_SERVICE_TYPE p_Service := omit) + { + var template (value) Ut_ParameterList_Type v_ParameterList; + var Ut_Common_Req_Type v_Command := SUPPLEMENTARY_SERVICE; + var integer i:= 3; + + v_ParameterList[0] := cs_Ut_Parameter_SupplementaryService(fl_Convert_SS_Type(p_CallForwardType)); + v_ParameterList[1] := cs_Ut_Parameter_SS_Mode(fl_Convert_SS_Mode(p_Mode)); + v_ParameterList[2] := cs_Ut_Parameter_Number(p_Number); + if (isvalue(p_Service)) { + v_ParameterList[i] := cs_Ut_Parameter_Common ( "Service", fl_Convert_SS_Service (valueof(p_Service))); + i := i+1; + } + if (isvalue(p_Time)) { + v_ParameterList[i] := cs_Ut_Parameter_SupplementaryServiceTime(valueof(p_Time)); + } + fl_UT_ApplyCommand(p_Port, cas_UT_Req(v_Command, NO_CNF_REQUIRED, v_ParameterList)); + } + + function f_UT_SupplementaryService_CallWaiting(UT_PTC_MTC_PORT p_Port, + SS_Mode_Type p_Mode, + SS_SERVICE_TYPE p_Service := SS_ALLSERVICES) + { + var template (value) Ut_ParameterList_Type v_ParameterList; + var Ut_Common_Req_Type v_Command := SUPPLEMENTARY_SERVICE; + + v_ParameterList[2] := cs_Ut_Parameter_Common ( "Service", fl_Convert_SS_Service (p_Service)); + v_ParameterList[1] := cs_Ut_Parameter_SS_Mode(fl_Convert_SS_Mode(p_Mode)); + v_ParameterList[0] := cs_Ut_Parameter_SupplementaryService(tsc_UT_SS_CALL_WAITING); + fl_UT_ApplyCommand(p_Port, cas_UT_Req(v_Command, NO_CNF_REQUIRED, v_ParameterList)); + } + + function f_UT_SupplementaryService_CallBarring(UT_PTC_MTC_PORT p_Port, + SS_Mode_Type p_Mode, + SS_Type p_CallBarringType, + template (omit) charstring p_NewPassword := omit, + template (omit) SS_SERVICE_TYPE p_Service := omit) + { + var template (value) Ut_ParameterList_Type v_ParameterList; + var Ut_Common_Req_Type v_Command := SUPPLEMENTARY_SERVICE; + var integer i := 2; + + v_ParameterList[0] := cs_Ut_Parameter_SupplementaryService(fl_Convert_SS_Type(p_CallBarringType)); + v_ParameterList[1] := cs_Ut_Parameter_SS_Mode(fl_Convert_SS_Mode(p_Mode)); + if (isvalue(p_NewPassword)) { + v_ParameterList[i] := cs_Ut_Parameter_Password(valueof(p_NewPassword)); + i := i+1; + } + if (isvalue(p_Service)) { + v_ParameterList[i] := cs_Ut_Parameter_Common ( "Service", fl_Convert_SS_Service (valueof(p_Service))); + } + fl_UT_ApplyCommand(p_Port, cas_UT_Req(v_Command, NO_CNF_REQUIRED, v_ParameterList)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To trigger SS to change password + * @param p_Port + * @status + */ + function f_UT_SS_ChangePassword(UT_PTC_MTC_PORT p_Port, + SS_Type p_CallBarringType, + charstring p_OldPassword, + charstring p_NewPassword) + { + var Ut_Common_Req_Type v_Command := SUPPLEMENTARY_SERVICE; + var template (value) Ut_ParameterList_Type v_ParameterList; + + v_ParameterList[0] := cs_Ut_Parameter_SupplementaryService(tsc_UT_SS_PASSWORD); + v_ParameterList[1] := cs_Ut_Parameter_SupplementaryService(fl_Convert_SS_Type(p_CallBarringType)); + v_ParameterList[2] := cs_Ut_Parameter_Password(p_OldPassword); + v_ParameterList[3] := cs_Ut_Parameter_Password(p_NewPassword); + + fl_UT_ApplyCommand(p_Port, cas_UT_Req(v_Command, NO_CNF_REQUIRED, v_ParameterList)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To send SS USSD + * @param p_Port + * @param p_USSDString + * @param p_CnfRequired (default: CNF_REQUIRED) Only set to NO_CNF_REQUIRED in 15.9.5 when UE to answer SS message + * @status + */ + function f_UT_SupplementaryService_SendUSSD(UT_PTC_MTC_PORT p_Port, + charstring p_USSDString := "Network Triggered", + Ut_CnfReq_Type p_CnfRequired := CNF_REQUIRED) + { + var Ut_Common_Req_Type v_Command := SUPPLEMENTARY_SERVICE; + var template (value) Ut_ParameterList_Type v_ParameterList; + var boolean v_DontWaitForCnf := false; + + v_ParameterList[0] := cs_Ut_Parameter_SupplementaryService(tsc_UT_SS_USSD); + v_ParameterList[1] := cs_Ut_Parameter_SS_Mode(tsc_UT_SS_ACTIVATE); + v_ParameterList[2] := cs_Ut_Parameter_USSD(p_USSDString); + + if (p_USSDString == "Network Triggered") { + v_DontWaitForCnf := true; + } + + fl_UT_ApplyCommand(p_Port, cas_UT_Req(v_Command, p_CnfRequired, v_ParameterList), v_DontWaitForCnf); + } + + /* + * @desc To send SS USSD + * @param p_Port + * @status + */ + function f_UT_SupplementaryService_USSDResponse(UT_PTC_MTC_PORT p_Port) return charstring + { + var UT_COMMON_CNF v_Cnf := fl_UT_RetCnf(p_Port); + return v_Cnf.ResultString; + } + //---------------------------------------------------------------------------- + /* + * @desc SS to trigger release of held call (actually uses AT command call hold = 0) + * @param p_Port + * @status + */ + function f_UT_CallHoldRelease(UT_PTC_MTC_PORT p_Port) + { + + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CALL_HOLD_RELEASE, NO_CNF_REQUIRED, omit)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To trigger SS call hold + * @param p_Port + * @param p_CallToHold (default value: omit) + * @status APPROVED (IMS) + */ + function f_UT_CallHold(UT_PTC_MTC_PORT p_Port, + template (omit) integer p_CallToHold := omit) + { + var template (omit) Ut_ParameterList_Type v_Params := omit; + if (isvalue(p_CallToHold)) { + v_Params := cs_CallIdNumber(int2str(valueof(p_CallToHold))); + } + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CALL_HOLD, NO_CNF_REQUIRED, v_Params)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To trigger SS call resume (actually uses AT command call hold) + * @param p_Port + * @param p_CallToHold (default value: omit) + * @status APPROVED (IMS) + */ + function f_UT_CallResume(UT_PTC_MTC_PORT p_Port, + template (omit) integer p_CallToHold := omit) + { + var template (omit) Ut_ParameterList_Type v_Params := omit; + if (isvalue(p_CallToHold)) { + v_Params := cs_CallIdNumber(int2str(valueof(p_CallToHold))); + } + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CALL_RESUME, NO_CNF_REQUIRED, v_Params)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To trigger SS Multiparty call (actually uses AT command call hold) + * @param p_Port + * @status APPROVED (IMS) + */ + function f_UT_CallMPTY(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CALL_MPTY, NO_CNF_REQUIRED, omit)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To trigger SS Explicit Call Transfer (actually uses AT command call hold) + * @param p_Port + * @status + */ + function f_UT_ExplicitCallTransfer(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CALL_ECT, NO_CNF_REQUIRED, omit)); + } + //---------------------------------------------------------------------------- + + /* + * @desc De-register UE + * @param p_Port + * @status APPROVED (IMS) + */ + function f_UT_IMS_Deregister(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(DEREGISTER, NO_CNF_REQUIRED)); // @sic R5-134290 sic@ + } + +} diff --git a/IMS_PART4_IWD_14wk37/Common/Common/UpperTesterPtcToMtcDefs.ttcn b/IMS_PART4_IWD_14wk37/Common/Common/UpperTesterPtcToMtcDefs.ttcn new file mode 100644 index 0000000..aa25a95 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/Common/UpperTesterPtcToMtcDefs.ttcn @@ -0,0 +1,236 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-10 10:55:39 +0200 (Wed, 10 Sep 2014) $ +// $Rev: 12185 $ +/******************************************************************************/ +// Common type definitions, e.g. being used in ASP definitions as well as for NAS +//------------------------------------------------------------------------------ +//* History: +//* @sic R5-096657 sic@ Added SMS command DELETE_MESSAGE_WITHFLAG +//------------------------------------------------------------------------------ + +module UpperTesterPtcToMtcDefs { + import from UpperTesterCommon all; + + //---------------------------------------------------------------------------- + group TypeDefs_PTC_UT { // types being used at the PTC <-> UpperTester interface + + type enumerated Ut_Common_Req_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ACCEPT_MTSI_TEXT, + ACTIVATE_BEARER, + ACTIVATE_MESSAGE_WAIT_INDICATION, + ANSWER_CALL, + ATTACH, + CALL_HOLD, + CALL_HOLD_RELEASE, + CALL_RESUME, + CALL_MPTY, + CALL_ECT, + CHECK_CALL_DISPLAY, + CHECK_CSG, + CHECK_CLOCK, + CHECK_CMAS_ALERT, + CHECK_CMAS_INDICATION, + CHECK_CMAS_NO_ALERT, + CHECK_CMAS_NO_INDICATION, //@sic R5s130376 sic@ + CHECK_DTCH_THROUGHCONNECTED, + CHECK_ETWS_ALERT, + CHECK_ETWS_INDICATION, + CHECK_ETWS_NO_ALERT, + CHECK_ETWS_NO_INDICATION, //@sic R5s130376 sic@ + CHECK_LCS_CLIENT, + CHECK_MESSAGE_DISPLAYED, + CHECK_OPERATOR_NAME, + CHECK_PLMN, + CHECK_RESPONSE_DISPLAY, + CHECK_SS_USER_IND, + CHECK_NITZ_DST, + CHECK_NITZ_FULL_NETWORK_NAME, + CHECK_NITZ_LTZ, + CHECK_NITZ_SHORT_NETWORK_NAME, + CHECK_NITZ_UT, + CLEAR_STORED_ASSISTANCE_DATA, + CONFIGURE_CEMODE, + CONFIGURE_OPERATIONMODE, + CONFIGURE_SMS_ONLY, + DEACTIVATE_BEARER, + DEFINE_EPS_QOS, + DEFINE_QOS, + DEFINE_TFT, + DELETE_MESSAGE_WITHFLAG, + DEREGISTER, + DETACH, + DETACH_NON_EPS, + DISABLE_EPS, + GERAN_UPLINK_DATA, + GET_EMERGENCY_NUMS_1, + GET_EMERGENCY_NUMS_2, + HRPD_PDN_CONNECTION, + INITIATE_VIDEO_CALL, + INSERT_USIM, + LOCATION_ANSWER, + LOCATION_INFO, + LOCATION_MULTIPLE, + LOCATION_SUBSCRIBE, + MBMS_PRIORITY_OVER_UNICAST, + MBMS_SERVICE_ACTIVE, + MBMS_SERVICE_INTEREST, + MESSAGE_FORMAT, + MODIFY_BEARER, + PLMN_AUTOMATIC, + PLMN_MANUAL, + POWER_OFF, + POWER_ON, + POWER_PREFERENCE, + REFRESH, + RELEASE_CALL, + RELEASE_IMS_CALL, + REMOVE_USIM, + REMOVE_VIDEO_CALL, + REQUEST_CALL, + REQUEST_DED_BEARER, + REQUEST_IMS_EMERGENCY_CALL, + REQUEST_IMS_VOICE_CALL, + REQUEST_NON_CALL_RELATED_SS, + REQUEST_PDPCONTEXT, + SELECT_CHARACTER_SET, + SELECT_CSG, + SELECT_MESSAGE_SERVICE, + SEND_3_STORED_MESSAGES, + SEND_STORED_MESSAGE_ONE, + SERVICE_CENTRE_ADDRESS, + SET_PREFERRED_STORAGE, + SET_TEXTMODE_PARAMETERS, + SUPPLEMENTARY_SERVICE, + SWITCH_OFF, + SWITCH_ON, + TIMEZONE_SUBSCRIBE, + TIMEZONE_MULTIPLE, + TRIGGER_2ND_IMPU, + TRIGGER_3RD_IMPU, + TRIGGER_MOLR, + TRIGGER_SMS, + TRIGGER_USER_RESELECTION, + WRITE_MESSAGE_TOMEMORY_PDUMODE, // @sic R5s110750 sic@ + WRITE_MESSAGE_TOMEMORY_TEXTMODE // DO NOT ADD FIELDS TO THIS TYPE, TO BE EXTENDED BY FILE OWNER ONLY + }; + + const charstring tsc_UT_SS_CLIP := "ORIGINATING IDENTIFICATION PRESENTATION"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_CLIR := "ORIGINATING IDENTIFICATION RESTRICTION"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_COLP := "TERMINATING IDENTIFICATION PRESENTATION"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_TERMINATING_IDENTIFICATION_RESTRICTION := "TERMINATING IDENTIFICATION RESTRICTION"; /* @status APPROVED (IMS) */ + const charstring tsc_UT_SS_CNAP := "CALLING NAME PRESENTATION"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_CALL_WAITING := "CALL WAITING"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_INCOMING_COMMUNICATION_BARRING := "INCOMING COMMUNICATION BARRING"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_INCOMING_COMMUNICATION_BARRING_ANONYMOUS := "INCOMING COMMUNICATION BARRING ANONYMOUS"; /* @status APPROVED (IMS) */ + const charstring tsc_UT_SS_INCOMING_COMMUNICATION_BARRING_ROAMING := "INCOMING COMMUNICATION BARRING WHILE ROAMING"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_COMMUNICATION_BARRING_WHILE_ROAMING := "COMMUNICATION BARRING WHILE ROAMING"; /* @status APPROVED (IMS) */ + const charstring tsc_UT_SS_OUTGOING_COMMUNICATION_BARRING := "OUTGOING COMMUNICATION BARRING"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_OUTGOING_INTERNATIONAL_BARRING := "OUTGOING INTERNATIONAL BARRING"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_OUTGOING_INTERNATIONAL_EX_HC_BARRING := "OUTGOING INTERNATIONAL EXCEPT HOME COUNTRY BARRING"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_ALL_BARRING_SERVICES_AB := "ALL BARRING SERVICES"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_ALL_OUTGOING_BARRING_SERVICES_AG := "ALL OUTGOING BARRING SERVICES"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_ALL_INCOMING_BARRING_SERVICES_AC := "ALL INCOMING BARRING SERVICES"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_CALL_FORWARDING_UNCONDITIONAL := "CALL FORWARDING UNCONDITIONAL"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_CALL_FORWARDING_NO_REPLY := "CALL FORWARDING NO ANSWER"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_CALL_FORWARDING_BUSY := "CALL FORWARDING BUSY"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_CALL_FORWARDING_NOT_LOGGED_IN := "CALL FORWARDING NOT REGISTERED"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_CALL_FORWARDING_NOT_REACHABLE := "CALL FORWARDING NOT REACHABLE"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_CALL_FORWARDING_ALL := "ALL CALL FORWARDING"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_CALL_FORWARDING_ALL_CONDITIONAL := "ALL CONDITIONAL CALL FORWARDING"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_CALL_FORWARDING_DEFLECTION := "COMMUNICATION DEFLECTION"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_CALL_FORWARDING_DIVERSION_NOTIFICATION := "COMMUNICATION DIVERSION NOTIFICATION"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_INCOMING_COMMUNICATION_BARRING_EXCEPT_SPECIFIC_USER := "INCOMING COMMUNICATION BARRING EXCEPT SPECIFIC USER"; /* @status APPROVED (IMS) */ + const charstring tsc_UT_SS_ALL_CALL_TYPES := "ALL CALL TYPES"; + const charstring tsc_UT_SS_CALL_TYPE_VOICE := "CALL TYPE VOICE"; + const charstring tsc_UT_SS_USSD := "USSD"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_PASSWORD := "CHANGE PASSWORD"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_DEACTIVATE := "DEACTIVATE"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_ACTIVATE := "ACTIVATE"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_REGISTER := "REGISTER"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_QUERY := "QUERY"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_DELETE := "DELETE"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + type record UT_COMMON_CMD { /* Common ASP to be sent by a PTC to the upper tester (MTC); + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + Ut_Common_Req_Type Cmd, + Ut_CnfReq_Type CnfReq, + Ut_ParameterList_Type ParameterList optional // to be used to include any additional information required + }; + + } // end of group TypeDefs_PTC_UT + + //---------------------------------------------------------------------------- + // Ports: + + type port UT_PTC_MTC_PORT message { /* port at a PTC to communicated with the upper tester (MTC) + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + out UT_COMMON_CMD; + in UT_COMMON_CNF; + }; + + type port UT_MTC_PTC_PORT message { /* port at the upper tester (MTC) to communicated with a PTC + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + out UT_COMMON_CNF; + in UT_COMMON_CMD; + }; + + // ----------------------------------------------------------------------------- + //Templates: + + template (value) Ut_ParameterList_Type cs_EPSBearerParams ( charstring p_Id, + charstring p_Type, + charstring p_AccessPointName, + charstring p_DComp, + charstring p_HComp, + charstring p_PDL, + charstring p_PDN, + charstring p_IPv4Alloc ) := + { + {// Minimum value 1 + Name := "EPS ID", + Value := p_Id + }, + { // values: X.25, IP, IPV6, IPV4V6, PPP + Name := "PDP TYPE", + Value := p_Type + }, + { + Name := "APN", + Value := p_AccessPointName + }, + { + Name := "D COMP", + Value := p_DComp + }, + { + Name := "H COMP", + Value := p_HComp + }, + { + Name := "PD L", + Value := p_PDL + }, + { + Name := "PD N", + Value := p_PDN + }, + { + Name := "IPv4ADDR", + Value := p_IPv4Alloc + } + }; + + template (present) UT_COMMON_CMD car_UT_ReqAny := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + Cmd := ?, + CnfReq := ?, + ParameterList := * + }; + +} diff --git a/IMS_PART4_IWD_14wk37/Common/CommonIP/CommonIP.ttcn b/IMS_PART4_IWD_14wk37/Common/CommonIP/CommonIP.ttcn new file mode 100644 index 0000000..f222ac6 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/CommonIP/CommonIP.ttcn @@ -0,0 +1,302 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 12:44:18 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12148 $ +/******************************************************************************/ + +module CommonIP { + + import from CommonDefs all; + import from Parameters all; + + const UInt8_Type tsc_IP_Protocol_ICMP := 1; /* @status APPROVED (LTE, LTE_IRAT) */ + const UInt8_Type tsc_IP_Protocol_UDP := 17; /* @status APPROVED (LTE) */ + const UInt8_Type tsc_ICMP_Type_EchoReply := 0; /* @status APPROVED (LTE, LTE_IRAT) */ + const UInt8_Type tsc_ICMPv6_Type_EchoReply := 129; /* @status APPROVED (LTE, LTE_IRAT) */ + const UInt8_Type tsc_ICMP_Type_EchoRequest := 8; + const UInt8_Type tsc_IP_Protocol_TCP := 6; /* @status APPROVED (LTE) */ + const UInt8_Type tsc_IP_Protocol_IPSec := 50; /* @status APPROVED (LTE) */ + const UInt8_Type tsc_IP_Protocol_ICMPv6 := 58; /* @status APPROVED (LTE, LTE_IRAT) */ + const integer tsc_IMS_PortNumber_5060 := 5060; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + + const octetstring tsc_IP_AnyData := '00112233445566778899AABBCCDDEEFF'O; /* @status APPROVED (LTE, LTE_IRAT) */ + + type record PDN_AddressInfo_Type /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + { + charstring UE_IPAddressIPv4, + charstring UE_IPAddressIPv6, + charstring Remote_IPAddressIPv4, /* @sic R5s130681 additional change sic@ */ + charstring Remote_IPAddressIPv6, /* @sic R5s130681 additional change sic@ */ + charstring DHCP_ServerAddress, + charstring ICMPv6_ServerAddress, + charstring PCSCF_IPAddressIPv4, + charstring PCSCF_IPAddressIPv6, + //charstring PCSCF_DomainName, + charstring DNS_ServerAddressIPv4, + charstring DNS_ServerAddressIPv6 + }; + + const PDN_AddressInfo_Type tsc_PDN1_AddressInfo := { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + UE_IPAddressIPv4 := px_IPv4_Address1_UE, + UE_IPAddressIPv6 := px_IPv6_Address1_UE, + Remote_IPAddressIPv4 := px_IPv4_Address1_RemoteUE, + Remote_IPAddressIPv6 := px_IPv6_Address1_RemoteUE, + DHCP_ServerAddress := px_IPv4_Address1_NW, + ICMPv6_ServerAddress := px_IPv6_Address1_NW, + PCSCF_IPAddressIPv4 := px_IPv4_Address1_NW, + PCSCF_IPAddressIPv6 := px_IPv6_Address1_NW, + DNS_ServerAddressIPv4 := px_IPv4_Address1_NW, + DNS_ServerAddressIPv6 := px_IPv6_Address1_NW + }; + const PDN_AddressInfo_Type tsc_PDN2_AddressInfo := { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + UE_IPAddressIPv4 := px_IPv4_Address2_UE, + UE_IPAddressIPv6 := px_IPv6_Address2_UE, + Remote_IPAddressIPv4 := px_IPv4_Address2_RemoteUE, + Remote_IPAddressIPv6 := px_IPv6_Address2_RemoteUE, + DHCP_ServerAddress := px_IPv4_Address2_NW, + ICMPv6_ServerAddress := px_IPv6_Address2_NW, + PCSCF_IPAddressIPv4 := px_IPv4_Address2_NW, + PCSCF_IPAddressIPv6 := px_IPv6_Address2_NW, + DNS_ServerAddressIPv4 := px_IPv4_Address2_NW, + DNS_ServerAddressIPv6 := px_IPv6_Address2_NW + }; + + const PDN_AddressInfo_Type tsc_PDN_AddressInfo[2] := { tsc_PDN1_AddressInfo, tsc_PDN2_AddressInfo}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + + /* + * @desc return PDN_AddressInfo corresponding to the given PdnIndex + * @param p_PdnIndex + * @return PDN_AddressInfo_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_PDN_AddressInfo_Get(PDN_Index_Type p_PdnIndex) return PDN_AddressInfo_Type + { /* PDN_2a to support change of the IP address for IMS test case 19.5.1 */ + var PDN_AddressInfo_Type v_PDN_AddressInfo; + var integer v_Index; + + select (p_PdnIndex) { + case (PDN_1, PDN_2, PDN_Internet) { + v_Index := enum2int(p_PdnIndex); + v_PDN_AddressInfo := tsc_PDN_AddressInfo[v_Index]; + } + case (PDN_2a) { + FatalError(__FILE__, __LINE__, "PDN_2a is not supported yet"); + } + case else { + FatalError(__FILE__, __LINE__, "Invalid PDN index"); + } + } + return v_PDN_AddressInfo; + } + + //---------------------------------------------------------------------------- + /* + * @desc Check whether given string is IPv4 address + * @param p_IpAddress + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_IpAddressIsIPv4(charstring p_IpAddress) return boolean + { + var template charstring v_Pattern := pattern "[0-9]+[.][0-9]+[.][0-9]+[.][0-9]+"; + return match(p_IpAddress, v_Pattern); + }; + + //---------------------------------------------------------------------------- + /* + * @desc Check whether given string is IPv6 address + * @param p_IpAddress + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IpAddressIsIPv6(charstring p_IpAddress) return boolean + { + var Char1List_Type v_SplitCharList := {":"}; + var CharStringList_Type v_FieldList := f_StringSplit(p_IpAddress, v_SplitCharList); + var integer v_FieldCnt := lengthof(v_FieldList); + var charstring v_Field; + var charstring v_Pattern; + var integer v_FieldLength; + var integer i; + + if ((v_FieldCnt == 1) or (v_FieldCnt > 8)) { return false; } + + for (i:=0; i 4) { return false; } + if (not match(v_Field, pattern v_Pattern)) { return false; } + } + return true; + } + + //---------------------------------------------------------------------------- + /* + * @desc convert IP address in dot notation into octetstring; + * e.g. "10.11.12.13" results in '0A0B0C0D'O + * @param p_IPv4AddrChar + * @return O4_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_Convert_IPv4Addr2OctString(charstring p_IPv4AddrChar) return O4_Type + { + var Char1List_Type v_SplitCharList := {"."}; + var CharStringList_Type v_FieldList := f_StringSplit(p_IPv4AddrChar, v_SplitCharList); + var octetstring v_IPv4AddrOct := ''O; + var integer v_FieldCnt := lengthof(v_FieldList); + var integer v_IntVal; + var integer i; + + if (v_FieldCnt != 4) { + FatalError(__FILE__, __LINE__, "invalid IP Address"); + } + for (i:=0; i subsequent empty fields will just be replaced by '0000' */ + var charstring v_Field; + var integer v_NoOfEmptyBlocks; + var integer i; + var integer k; + + if (v_FieldCnt > 8) { + FatalError(__FILE__, __LINE__, "invalid IP Address"); + } + for (i:=0; i tsc_UInt16Max) { + v_Sum := (v_Sum mod (tsc_UInt16Max+1)) + (v_Sum / (tsc_UInt16Max+1)); + } + // get complement + v_Sum := tsc_UInt16Max - v_Sum; + return int2oct(v_Sum, 2); + } +} diff --git a/IMS_PART4_IWD_14wk37/Common/EUTRA_Defs/EPS_NAS_TypeDefs.ttcn b/IMS_PART4_IWD_14wk37/Common/EUTRA_Defs/EPS_NAS_TypeDefs.ttcn new file mode 100644 index 0000000..53109b1 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/EUTRA_Defs/EPS_NAS_TypeDefs.ttcn @@ -0,0 +1,1122 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-04-09 21:44:58 +0200 (Tue, 09 Apr 2013) $ +// $Rev: 8515 $ +/******************************************************************************/ + +module EPS_NAS_TypeDefs { + +import from CommonDefs all; +import from NAS_CommonTypeDefs all; + +//**************************************************************************** +// NAS PROTOCOL DEFINITIONS: IEs +//---------------------------------------------------------------------------- +// General Info Elements (24.301 cl. 9) +//---------------------------------------------------------------------------- + +type B4_Type SecurityHeaderType; /* 24.301 cl. 9.3.1 */ +type HalfOctet_Type EPS_BearerIdentity; /* 24.301 cl. 9.3.2 */ +type Octet_Type ProcedureTransactionIdentifier; /* 24.301 cl. 9.4 */ +type O4_Type MessageAuthenticationCode; /* 24.301 cl. 9.5 */ +type Octet_Type NAS_SequenceNumber; /* 24.301 cl. 9.6 */ + +type O4_Type NasCount_Type; + +// Note: This IE is not needed when SECURITY PROTECTED NAS MESSAGE is +// handled by the NAS emulation An alternative approach would be to +// implement NAS_Message as a union of all NAS messages except +// SECURITY PROTECTED NAS MESSAGE and SERVICE REQUEST - but this would +// have impact on codec implementation and may reduce readability */ +type octetstring NAS_Message; /* 24.301 cl. 9.7 */ + +type O2_Type EPS_MmeGi; +type O1_Type EPS_Mmec; +type O4_Type EPS_M_Tmsi; +type O5_Type EPS_S_Tmsi; + +type B2_Type EPS_PartialTaiListType; +type B3_Type NAS_KsiValue; +type B4_Type EPS_ServiceTypeValue; +type B3_Type PdnTypeValue; +type B3_Type EPS_UpdateTypeValue; + +type O2_Type NAS_Tac; + +//---------------------------------------------------------------------------- +// Common Info Elements (24.301 cl. 9.9.2) +//---------------------------------------------------------------------------- + +type record PDN_Address { /* 24.301 cl. 9.9.4.9 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B5_Type spare, + B3_Type typeValue, + octetstring adressInfo length(4..12) +}; + + +type record TrackingAreaId { /* 24.301 cl. 9.9.3.32 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + NAS_PlmnId plmnId, /* MCC + MNC 3 digits each */ + NAS_Tac tac /* TAC */ +}; + +type record length (1..16) of NAS_Tac NAS_TacList; + +type record PartialTai { + NAS_PlmnId plmnId, /* MCC + MNC 3 digits each */ + NAS_Tac tac +}; + +type record Type0Element { // @sic R5s100184 sic@ + NAS_PlmnId plmnId, /* MCC + MNC 3 digits each */ + NAS_TacList tacList +}; + +type record Type1Element { // @sic R5s100184 sic@ + PartialTai partialTac +}; + +type record length (1..16) of PartialTai PlmnAndTacs; + +type record Type2Element { // @sic R5s100184 sic@ + PlmnAndTacs plmnAndTacs +}; + +type record length (1..16) of Type0Element Type0List; +type record length (1..16) of Type1Element Type1List; +type record length (1..16) of Type2Element Type2List; + +type union PartialTaiType { + Type0List type0List, + Type1List type1List, + Type2List type2List +}; + +type record ListOfPartialTaiList { + B1_Type spareBit, + EPS_PartialTaiListType typeOfList, + B5_Type numberOfElements, + PartialTaiType partialTaiList // @sic R5s100184 sic@ +}; + +type record TrackingAreaIdList { /* 24.301 cl. 9.9.3.33 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel, + record length (1..16) of ListOfPartialTaiList listOfPartialTais +}; + +//**************************************************************************** +// NAS PROTOCOL DEFINITIONS: PDUs +//---------------------------------------------------------------------------- +// EPS mobility management messages (24.301 cl. 8.2) +//---------------------------------------------------------------------------- + +type record ATTACH_ACCEPT { /* 24.301 cl. 8.2.1 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.9.2.9 M V 1/2 */ + EPS_AttachResult epsAttachResult, /* cl. 9.9.3.10 M V 1/2 */ + GPRS_Timer t3412, /* cl. 9.9.3.16 M V 1 */ + TrackingAreaIdList taiList, /* cl. 9.9.3.33 M LV 7-97 */ + ESM_MessageContainer esmMessage, /* cl. 9.9.3.15 M LV-E 5-n @sic R5s110176 Baseline Moving sic@ */ + MobileIdentity guti optional, /* cl. 9.9.3.12 O TLV 13 IEI=0x50 */ + LocAreaId lai optional, /* cl. 9.9.2.2 O TV 6 IEI=0x13 */ + MobileIdentity msIdentity optional, /* cl. 9.9.2.3 O TLV 7-10 IEI=0x23 */ + EMM_Cause emmCause optional, /* cl. 9.9.3.9 O TV 2 IEI=0x53 */ + GPRS_Timer t3402 optional, /* cl. 9.9.3.16 O TV 2 IEI=0x17 */ + GPRS_Timer t3423 optional, /* cl. 9.9.3.16 O TV 2 IEI=0x59 */ + PLMN_List equivalentPlmns optional, /* cl. 9.9.2.8 O TLV 5-47 IEI=0x4a */ + EmergNumList emergencyNumberList optional, /* cl. 9.9.3.37 O TLV 5-50 IEI=0x34 */ + EPS_NetworkFeatureSupport epsNetworkFeatureSupport optional, /* cl.9.9.3.12A O TLV 3 IEI=0x64 @sic R5s100135 sic@ */ + AdditionalUpdateResult addUpdateResult optional, /* cl.9.9.3.0A O TV 1 IEI=0xF @sic R5s100135 sic@ */ + GPRS_Timer3 t3412ExtdValue optional /* cl. 9.9.3.16B O TLV 3 IEI=0x5E @sic R5s120178 Baseline Moving sic@*/ +}; + +type record ATTACH_COMPLETE { /* 24.301 cl. 8.2.2 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ESM_MessageContainer esmMessage /* cl. 9.9.3.15 M LV-E 5-n @sic R5s110176 Baseline Moving sic@ */ +}; + +type record ATTACH_REJECT { /* 24.301 cl. 8.2.3 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + EMM_Cause emmCause, /* cl. 9.9.3.9 M V 1 */ + ESM_MessageContainer esmMessage optional, /* cl. 9.9.3.15 M TLV-E 6-n IEI=0x78 @sic R5s110176 Baseline Moving sic@ */ + GPRS_Timer2 t3346 optional, /* cl. 9.9.3.16A O TLV 3 IEI=0x5F @sic R5s120178 Baseline Moving sic@*/ + GPRS_Timer2 t3402 optional /* cl. 9.9.3.16A O TLV 3 IEI=0x16 @sic R5s120178 Baseline Moving sic@*/ +}; + +type record ATTACH_REQUEST { /* 24.301 cl. 8.2.4 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + NAS_KeySetIdentifier nasKeySetId, /* cl. 9.9.3.21 M V 1/2 */ + EPS_AttachType epsAttachType, /* cl. 9.9.3.11 M V 1/2 */ + MobileIdentity epsMobileIdentity, /* cl. 9.9.3.12 M LV 5-12 @sic R5s110176 Baseline Moving sic@ */ + UE_NetworkCap ueNetworkCapability, /* cl. 9.9.3.34 M LV 3-14 */ + ESM_MessageContainer esmMessage, /* cl. 9.9.3.15 M LV-E 5-n */ + PTMSI_Signature oldPtmsiSignature optional, /* cl 10.5.5.8 of 24.008 O TV 4 IEI=Ox19*/ + MobileIdentity additionalGuti optional, /* cl 9.9.3.12 O TLV 13 IEI=Ox50*/ + TrackingAreaId lastVisitedRegisteredTai optional, /* cl. 9.9.3.32 O TV 6 IEI=0x52 */ + DRXparameter drxParameter optional, /* cl. 9.9.3.8 O TV 3 IEI=Ox5c */ + MS_NetworkCap msNetworkCapability optional, /* cl. 9.9.3.20 O TLV 4-10 IEI=Ox31 */ + LocAreaId oldLai optional, /* cl. 9.9.2.2 O TV 6 IEI=0x13 */ + TMSI_Status tmsiStatus optional, /* cl. 9.9.2.31 O TV 1 IEI=0x9- */ + MS_Clsmk2 msClassmark2 optional, /* cl. 9.9.2.4 O TLV 5 IEI=0x11 */ + MS_Clsmk3 msClassmark3 optional, /* cl. 9.9.2.5 O TLV 2-34 IEI=0x20 */ + CodecList supportedCodecList optional, /* cl. 9.9.2.10 O TLV 5-n IEI=0x40 */ + AdditionalUpdateType addUpdateType optional, /* cl.9.9.3.0B O TV 1 IEI=0xF @sic R5s100135 sic@ */ + VoiceDomainPref voiceDomainPref optional, /* cl.9.9.3.44 O TLV 3 IEI=0x5D @sic R5s110176 Baseline Moving sic@ */ + DeviceProperties deviceProperties optional, /* cl. 9.9.2.0A O TV 1 IEI=0xD- @sic R5s120178 Baseline Moving sic@*/ + GUTI_Type oldGUTI_Type optional, /* cl. 9.9.3.45 O TV 1 IEI=0xE- @sic R5s120178 Baseline Moving sic@*/ + MS_NetworkFeatureSupport msNetworkFeatureSupport optional, /* cl. 9.9.2.0A O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/ + NwkResourceId tmsiBasedNRIContainer optional /* cl. 10.5.5.31 O TLV 4 IEI=0x10 @sic R5s130195 Baseline Moving sic@*/ +}; + +type record AUTHENTICATION_FAILURE { /* 24.301 cl. 8.2.5 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + EMM_Cause emmCause, /* cl. 9.9.3.9 M V 1 */ + AuthenticationFailureParameter authenticationFailureParameter optional /* cl. 9.9.3.1 O TLV 16 IEI=0x30 */ +}; + +type record AUTHENTICATION_REJECT { /* 24.301 cl. 8.2.6 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType /* cl. 9.8 M V 1 */ +}; + +type record AUTHENTICATION_REQUEST { /* 24.301 cl. 8.2.7 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.9.2.9 M V 1/2 */ + NAS_KeySetIdentifier asmeNasKeySetId, /* cl. 9.9.3.21 M V 1/2 */ + RAND rand, /* cl. 9.9.3.3 M V 16 */ + AUTN autn /* cl. 9.9.3.2 M LV 17 */ +}; + +type record AUTHENTICATION_RESPONSE { /* 24.301 cl. 8.2.8 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + AuthenticationResponseParameter authenticationResponseParameter /* cl. 9.9.3.4 M LV 5-17 */ +}; + +type record CS_SERVICE_NOTIFICATION { /* 24.301 cl. 8.2.9 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + PagingIdentity pagingIdentity, /* cl. 9.9.3.25A M V 1 @sic R5s100135 sic@ */ + CLI cli optional, /* cl. 9.9.3.38 O TLV 3-14 IEI=0x60 */ + SsCode ssCode optional, /* cl. 9.9.3.39 O TV 2 IEI=0x61 */ + LcsIndicator lcsIndicator optional, /* cl. 9.9.3.40 O TV 2 IEI=0x62 */ + LcsClientIdentity lcsClientIdentity optional /* cl. 9.9.3.41 O TLV 3-257 IEI=0x63 */ +}; + +type record DETACH_ACCEPT { /* 24.301 cl. 8.2.10.1/2 (both directions) + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType /* cl. 9.8 M V 1 */ +}; + +type record DETACH_REQUEST_MO { /* 24.301 cl. 8.2.11.1 (UE originating detach) + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + NAS_KeySetIdentifier asmeNasKeySetId, /* cl. 9.9.3.21 M V 1/2 */ + DetachType detachType, /* cl. 9.9.3.7 M V 1/2 */ + MobileIdentity epsMobileIdentity /* cl. 9.9.3.12 M LV 5-12 @sic R5s110176 Baseline Moving sic@ */ +}; + +type record DETACH_REQUEST_MT { /* 24.301 cl. 8.2.11.2 (UE terminated detach) + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.9.2.9 M V 1/2 */ + DetachType detachType, /* cl. 9.9.3.7 M V 1/2 */ + EMM_Cause emmCause optional /* cl. 9.9.3.9 O TV 2 IEI=0x53 */ +}; + +type record DL_NAS_TRANSPORT { /* 24.301 cl. 8.2.12 + Significance: local + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + NAS_MessageContainer nasMessage /* cl. 9.9.3.22 M LV 3-252 */ +}; + +type record EMM_INFORMATION { /* 24.301 cl. 8.2.13 + Significance: local + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + NetworkName fullNetworkName optional, /* cl. 9.9.3.24 O TLV 3-? IEI=0x43 */ + NetworkName shortNetworkName optional, /* cl. 9.9.3.24 O TLV 3-? IEI=0x45 */ + TimeZone localTimeZone optional, /* cl. 9.9.3.29 O TV 2 IEI=0x46 */ + TimeZoneAndTime localTimeZoneAndTime optional, /* cl. 9.9.3.30 O TV 8 IEI=0x47 */ + DaylightSavingTime daylightSavingTime optional /* cl. 9.9.3.6 O TLV 3 IEI=0x49 */ +}; + +type record EMM_STATUS { /* 24.301 cl. 8.2.14 + Significance: local + Direction: both */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + EMM_Cause emmCause /* cl. 9.9.3.9 M V 1 */ +}; + +type record EXT_SERVICE_REQUEST { /* 24.301 cl. 8.2.15 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + NAS_KeySetIdentifier nasKeySetId, /* cl. 9.9.3.21 M V 1/2 */ + EPS_ServiceType serviceType, /* cl. 9.9.3.27 M V 1/2 */ + MobileIdentity mTMSI, /* cl. 9.9.2.3 M LV 6 */ + CSFBResponse csfbResponse optional, /* cl. 9.9.3.5 C TV 1 IEI=0xB- */ + EPS_BearerContextStatus epsBearerContextStatus optional, /* cl. 9.9.2.1 O TLV 4 IEI=0x57 @sic R5s110176 Baseline Moving sic@ */ + DeviceProperties deviceProperties optional /* cl. 9.9.2.0A O TV 1 IEI=0xD- @sic R5s120178 Baseline Moving sic@*/ +}; + +type record GUTI_REALLOCATION_COMMAND { /* 24.301 cl. 8.2.16 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + MobileIdentity guti, /* cl. 9.9.3.12 M LV 12 */ + TrackingAreaIdList taiList optional /* cl. 9.9.3.33 O TLV 8-98 IEI=0x54 */ +}; + +type record GUTI_REALLOCATION_COMPLETE { /* 24.301 cl. 8.2.17 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType /* cl. 9.8 M V 1 */ +}; + +type record IDENTITY_REQUEST { /* 24.301 cl. 8.2.18 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.9.2.9 M V 1/2 */ + IdentityType identityType2 /* cl. 9.9.3.17 M V 1/2 */ +}; + +type record IDENTITY_RESPONSE { /* 24.301 cl. 8.2.19 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + MobileIdentity mobileIdentity /* cl. 9.9.2.3 M LV 4-10 */ +}; + +type record SECURITY_MODE_COMMAND { /* 24.301 cl. 8.2.20 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + NAS_SecurityAlgorithms nasSecurityAlgorithms, /* cl. 9.9.3.23 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.9.2.9 M V 1/2 */ + NAS_KeySetIdentifier asmeNasKeySetId, /* cl. 9.9.3.21 M V 1/2 */ + UE_SecurityCapability replayedSecurityCapability, /* cl. 9.9.3.36 M LV 3-6 */ + IMEISV_Request imeisvRequest optional, /* cl. 9.9.3.18 O TV 1 IEI=0xC- */ + Nonce replayedNonceUe optional, /* cl. 9.9.3.25 O TV 5 IEI=0x55 */ + Nonce nonceMme optional /* cl. 9.9.3.25 O TV 5 IEI=0x56 */ +}; + +type record SECURITY_MODE_COMPLETE { /* 24.301 cl. 8.2.21 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + MobileIdentity imeisv optional /* cl. 9.9.2.3 O TLV 11 IEI=0x23 */ +}; + +type record SECURITY_MODE_REJECT { /* 24.301 cl. 8.2.22 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + EMM_Cause emmCause /* cl. 9.9.3.9 M V 1 */ +}; + +type record SECURITY_PROTECTED_NAS_MESSAGE { /* 24.301 cl. 8.2.23 + Significance: dual + Direction: both */ + /* Note: it is FFS whether this PDU is realy used in TTCN */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageAuthenticationCode messageAuthenticationCode, /* cl. 9.5 M V 4 */ + NAS_SequenceNumber sequenceNumber, /* cl. 9.6 M V 1 */ + NAS_Message nasMessage /* cl. 9.7 M V 1-n */ +}; + +type record SERVICE_REJECT { /* 24.301 cl. 8.2.24 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + EMM_Cause emmCause, /* cl. 9.9.3.9 M V 1 */ + GPRS_Timer t3442 optional,/* cl. 9.9.3.16 C TV 2 IEI=0x5b */ + GPRS_Timer2 t3346 optional /* cl. 9.9.3.16A O TLV 3 IEI=0x5F @sic R5s120178 Baseline Moving sic@ */ +}; + +type record SERVICE_REQUEST { /* 24.301 cl. 8.2.25 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + KSIandSN ksiAndSN, /* cl. 9.9.3.19 M V 1 */ + ShortMAC shortMAC /* cl. 9.9.3.28 M V 2 */ +}; + +type record TRACKING_AREA_UPDATE_ACCEPT { /* 24.301 cl. 8.2.26 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.9.2.9 M V 1/2 */ + EPS_UpdateResult epsUpdateResult, /* cl. 9.9.3.13 M V 1/2 */ + GPRS_Timer t3412 optional, /* cl. 9.9.3.16 O TV 2 IEI=0x5a */ + MobileIdentity guti optional, /* cl. 9.9.3.12 O TLV 13 IEI=0x50 */ + TrackingAreaIdList taiList optional, /* cl. 9.9.3.33 O TLV 8-98 IEI=0x54 */ + EPS_BearerContextStatus epsBearerContextStatus optional, /* cl. 9.9.2.1 O TLV 4 IEI=0x57 */ + LocAreaId lai optional, /* cl. 9.9.2.2 O TV 6 IEI=0x13 */ + MobileIdentity msIdentity optional, /* cl. 9.9.2.3 O TLV 7-10 IEI=0x23 */ + EMM_Cause emmCause optional, /* cl. 9.9.3.9 O TV 2 IEI=0x53 */ + GPRS_Timer t3402 optional, /* cl. 9.9.3.16 O TV 2 IEI=0x17 */ + GPRS_Timer t3423 optional, /* cl. 9.9.3.16 O TV 2 IEI=0x59 */ + PLMN_List equivalentPlmns optional, /* cl. 9.9.2.8 O TLV 5-47 IEI=0x4a */ + NAS_KeySetIdentifier asmeNasKeySetId optional, /* cl. 9.9.3.21 O TV 1 IEI=0x8-*/ + EmergNumList emergencyNumberList optional, /* cl. 9.9.3.37 O TLV 5-50 IEI=0x34 */ + EPS_NetworkFeatureSupport epsNetworkFeatureSupport optional, /* cl.9.9.3.12A O TLV 3 IEI=0x64 @sic R5s100135 sic@ */ + AdditionalUpdateResult addUpdateResult optional, /* cl.9.9.3.0A O TV IEI=0xF @sic R5s100135 sic@ */ + GPRS_Timer3 t3412ExtdValue optional /* cl. 9.9.3.16B O TLV 3 IEI=0x5E @sic R5s120178 Baseline Moving sic@*/ +}; + +type record TRACKING_AREA_UPDATE_COMPLETE { /* 24.301 cl. 8.2.27 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType /* cl. 9.8 M V 1 */ +}; + +type record TRACKING_AREA_UPDATE_REJECT { /* 24.301 cl. 8.2.28 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + EMM_Cause emmCause, /* cl. 9.9.3.9 M V 1 */ + GPRS_Timer2 t3346 optional /* cl. 9.9.3.16A O TLV 3 IEI=0x5F @sic R5s120178 Baseline Moving sic@*/ +}; + +type record TRACKING_AREA_UPDATE_REQUEST { /* 24.301 cl. 8.2.29 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + NAS_KeySetIdentifier asmeNasKeySetId, /* cl. 9.9.3.21 M V 1/2 */ + EPS_UpdateType epsUpdateType, /* cl. 9.9.3.14 M V 1/2 */ + MobileIdentity oldGuti, /* cl. 9.9.3.12 M LV 12 */ + NAS_KeySetIdentifier nonCurrentNativeNasKeySetId optional, /* cl. 9.9.3.21 O TV 1 IEI=0xB- */ + CiphKeySeqNum gprsCipheringKeySeqNum optional, /* cl. 9.9.3.4a O TV 1 IEI=0x8- @sic R5s100135 sic@ */ + PTMSI_Signature oldPtmsiSignature optional, /* cl. 9.9.3.26 O TV 4 IEI=0x19 */ + MobileIdentity additionalGuti optional, /* cl. 9.9.3.12 O TLV 13 IEI=0x50 */ + Nonce nonce optional, /* cl. 9.9.3.25 O TV 5 IEI=0x55 */ + UE_NetworkCap ueNetworkCapability optional, /* cl. 9.9.3.34 O TLV 4-10 IEI=0x58 */ + TrackingAreaId lastVisitedRegisteredTai optional, /* cl. 9.9.3.32 O TV 6 IEI=0x52 */ + DRXparameter drxParameter optional, /* cl. 9.9.3.8 O TV 3 IEI=Ox5c */ + UERadioCapInfoUpdateNeeded ueRadioCapNeeded optional, /* cl. 9.9.3.35 O TV 1 IEI=OxA- */ + EPS_BearerContextStatus epsBearerContextStatus optional, /* cl. 9.9.2.1 O TLV 4 IEI=0x57 */ + MS_NetworkCap msNetworkCapability optional, /* cl. 9.9.3.20 O TLV 4-10 IEI=0x31 */ + LocAreaId oldLai optional, /* cl. 9.9.2.2 O TV 6 IEI=0x13 */ + TMSI_Status tmsiStatus optional, /* cl. 9.9.2.31 O TV 1 IEI=0x9- */ + MS_Clsmk2 msClassmark2 optional, /* cl. 9.9.2.4 O TLV 5 IEI=0x11 */ + MS_Clsmk3 msClassmark3 optional, /* cl. 9.9.2.5 O TLV 2-34 IEI=0x20 */ + CodecList supportedCodecList optional, /* cl. 9.9.2.10 O TLV 5-n IEI=0x40 */ + AdditionalUpdateType addUpdateType optional, /* cl.9.9.3.0B O TV IEI=0xF @sic R5s100135 sic@ */ + VoiceDomainPref voiceDomainPref optional, /* cl.9.9.3.44 O TLV 3 IEI=0x5D @sic R5s110176 Baseline Moving sic@ */ + GUTI_Type oldGUTI_Type optional, /* cl. 9.9.3.45 O TV 1 IEI=0xE- @sic R5s120178 Baseline Moving sic@*/ + DeviceProperties deviceProperties optional, /* cl. 9.9.2.0A O TV 1 IEI=0xD- @sic R5s120178 Baseline Moving sic@*/ + MS_NetworkFeatureSupport msNetworkFeatureSupport optional, /* cl. 9.9.2.0A O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/ + NwkResourceId tmsiBasedNRIContainer optional /* cl. 10.5.5.31 O TLV 4 IEI=0x10 @sic R5s130195 Baseline Moving sic@*/ +}; + +type record UL_NAS_TRANSPORT { /* 24.301 cl. 8.2.30 + Significance: local + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + NAS_MessageContainer nasMessage /* cl. 9.9.3.22 M LV 3-252 */ +}; + +type record DL_GENERIC_NAS_TRANSPORT{ /* 24.301 cl. 8.2.31 + Significance: dual + Direction: network to UE @sic R5s110176 Baseline Moving sic@ */ +SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ +ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ +MessageType messageType, /* cl. 9.8 M V 1 */ +GenericMessageContainerType genericMessageContainerType, /* cl. 9.9.3.42 M V 1 */ +GenericMessageContainer genericMessageContainer, /* cl. 9.9.3.43 M LV-E 3-n */ +AdditionalInformation additionalInformation optional /* cl. 9.9.2.0 O TLV 3-n IEI=65 */ +}; + +type record UL_GENERIC_NAS_TRANSPORT{ /* 24.301 cl. 8.2.32 + Significance: dual + Direction: UE to network @sic R5s110176 Baseline Moving sic@ */ +SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ +ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ +MessageType messageType, /* cl. 9.8 M V 1 */ +GenericMessageContainerType genericMessageContainerType, /* cl. 9.9.3.42 M V 1 */ +GenericMessageContainer genericMessageContainer, /* cl. 9.9.3.43 M LV-E 3-n */ +AdditionalInformation additionalInformation optional /* cl. 9.9.2.0 O TLV 3-n IEI=65 */ +}; + +//---------------------------------------------------------------------------- +// EPS session management messages (24.301 cl. 8.3) +//---------------------------------------------------------------------------- + +type record ACTIVATE_DEDICATED_EPS_BEARER_CONTEXT_ACCEPT { /* 24.301 cl. 8.3.1 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27*/ +}; + +type record ACTIVATE_DEDICATED_EPS_BEARER_CONTEXT_REJECT { /* 24.301 cl. 8.3.2 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ESM_Cause esmCause, /* cl. 9.9.4.4 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ +}; + +type record ACTIVATE_DEDICATED_EPS_BEARER_CONTEXT_REQUEST { /* 24.301 cl. 8.3.3 + Significance: dual + Direction: network to UE */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.9.2.9 M V 1/2 */ + LinkedEpsBearerIdentity linkedEpsBearerId, /* cl. 9.9.4.6 M V 1/2 */ + EPS_QualityOfService epsQos, /* cl. 9.9.4.3 M LV 2-14 */ + TrafficFlowTemplate tft, /* cl. 9.9.4.16 M LV 2-256 */ + TransactionIdentifier transactionIdentifier optional, /* cl. 9.9.4.17 O TLV 3-4 IEI=0x5d */ + QualityOfService negotiatedQos optional, /* cl. 9.9.4.12 O TLV 14-22 IEI=0x30 */ + LLC_SAPI negotiatedLlcSapi optional, /* cl. 9.9.4.7 O TV 2 IEI=0x32 */ + RadioPriority radioPriority optional, /* cl. 9.9.4.13 O TV 1 IEI=0x8- */ + PacketFlowIdentifier packetFlowIdentifier optional, /* cl. 9.9.4.8 O TLV 3 IEI=0x34 */ + ProtocolConfigOptions protocolConfigurationOptions optional /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ +}; + +type record ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_ACCEPT { /* 24.301 cl. 8.3.4 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ +}; + +type record ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REJECT { /* 24.301 cl. 8.3.5 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ESM_Cause esmCause, /* cl. 9.9.4.4 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ +}; + +type record ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REQUEST { /* 24.301 cl. 8.3.6 + Significance: dual + Direction: network to UE */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + EPS_QualityOfService epsQos, /* cl. 9.9.4.3 M LV 2-14 */ + AccessPointName accessPointName, /* cl. 9.9.4.1 M LV 2-101 */ + PDN_Address pdnAdress, /* cl. 9.9.4.9 M LV 6-14 */ + TransactionIdentifier transactionIdentifier optional, /* cl. 9.9.4.17 O TLV 3-4 IEI=0x5d */ + QualityOfService negotiatedQos optional, /* cl. 9.9.4.12 O TLV 14-22 IEI=0x30 */ + LLC_SAPI negotiatedLlcSapi optional, /* cl. 9.9.4.7 O TV 2 IEI=0x32 */ + RadioPriority radioPriority optional, /* cl. 9.9.4.13 O TV 1 IEI=0x8- */ + PacketFlowIdentifier packetFlowIdentifier optional, /* cl. 9.9.4.8 O TLV 3 IEI=0x34 */ + APN_AMBR apnAggMaxBitRate optional, /* cl. 9.9.4.2 O TLV 4-8 IEI=0x5e */ + ESM_Cause esmCause optional, /* cl. 9.9.4.4 O TV 2 IEI=0x58 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ + ConnectivityType connectivityType optional /* cl. 9.9.2.0A O TV 1 IEI=0xB- @sic R5s120178 Baseline Moving sic@*/ +}; + +type record BEARER_RESOURCE_ALLOCATION_REJECT { /* 24.301 cl. 8.3.7 + Significance: dual + Direction: network to UE */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ESM_Cause esmCause, /* cl. 9.9.4.4 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ + GPRS_Timer3 t3396 optional /* cl. 9.9.3.16B O TLV 3 IEI=0x37 @sic R5s120178 Baseline Moving sic@*/ +}; + +type record BEARER_RESOURCE_ALLOCATION_REQUEST { /* 24.301 cl. 8.3.8 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.9.2.9 M V 1/2 */ + LinkedEpsBearerIdentity linkedEpsBearerId, /* cl. 9.9.4.6 M V 1/2 */ + TrafficFlowTemplate trafficFlowAgg, /* cl. 9.9.4.15 M LV 2-256 */ + EPS_QualityOfService requiredTrafficFlowQoS, /* cl. 9.9.4.3 M LV 2-14 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ + DeviceProperties deviceProperties optional /* cl. 9.9.2.0A O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/ +}; + +type record BEARER_RESOURCE_MODIFICATION_REJECT { /* 24.301 cl. 8.3.9 + Significance: dual + Direction: network to UE */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ESM_Cause esmCause, /* cl. 9.9.4.4 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ + GPRS_Timer3 t3396 optional /* cl. 9.9.3.16B O TLV 3 IEI=0x37 @sic R5s120178 Baseline Moving sic@*/ +}; + +type record BEARER_RESOURCE_MODIFICATION_REQUEST { /* 24.301 cl. 8.3.10 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.9.2.9 M V 1/2 */ + LinkedEpsBearerIdentity epsBearerIdentityforPacketFilter, /* cl. 9.9.4.6 M V 1/2 */ + TrafficFlowTemplate trafficFlowAgg, /* cl. 9.9.4.15 M LV 2-256 */ + EPS_QualityOfService requiredTrafficFlowQoS optional, /* cl. 9.9.4.3 O TLV 3-15 IEI=0x5b @sic R5s100692 sic@ */ + ESM_Cause esmCause optional, /* cl. 9.9.4.4 O TV 2 IEI=0x58 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ + DeviceProperties deviceProperties optional /* cl. 9.9.2.0A O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/ +}; + +type record DEACTIVATE_EPS_BEARER_CONTEXT_ACCEPT { /* 24.301 cl. 8.3.11 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ +}; + +type record DEACTIVATE_EPS_BEARER_CONTEXT_REQUEST { /* 24.301 cl. 8.3.12 + Significance: dual + Direction: network to UE */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ESM_Cause esmCause, /* cl. 9.9.4.4 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.8 O TLV 3-253 IEI=0x27 */ + GPRS_Timer3 t3396Value optional /* cl. 10.5.7.4a O TLV 3 IEI=0x37 @sic R5s130195 Baseline Moving sic@*/ +}; + +type record ESM_INFORMATION_REQUEST { /* 24.301 cl. 8.3.13 + Significance: dual + Direction: network to UE */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType /* cl. 9.8 M V 1 */ +}; + +type record ESM_INFORMATION_RESPONSE { /* 24.301 cl. 8.3.14 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + AccessPointName accessPointName optional, /* cl. 9.9.4.1 O TLV 3-102 IEI=0x28 */ + ProtocolConfigOptions protocolConfigurationOptions optional /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ +}; + +type record ESM_STATUS { /* 24.301 cl. 8.3.15 + Significance: dual + Direction: both */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ESM_Cause esmCause /* cl. 9.9.4.4 M V 1 */ +}; + +type record MODIFY_EPS_BEARER_CONTEXT_ACCEPT { /* 24.301 cl. 8.3.16 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ +}; + +type record MODIFY_EPS_BEARER_CONTEXT_REJECT { /* 24.301 cl. 8.3.17 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ESM_Cause esmCause, /* cl. 9.9.4.4 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ +}; + +type record MODIFY_EPS_BEARER_CONTEXT_REQUEST { /* 24.301 cl. 8.3.18 + Significance: dual + Direction: network to UE */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + EPS_QualityOfService newEPSQos optional, /* cl. 9.9.4.3 O TLV 3-15 IEI=0x5b */ + TrafficFlowTemplate tft optional, /* cl. 9.9.4.16 O TLV 3-257 IEI=0x36 */ + QualityOfService newQos optional, /* cl. 9.9.4.12 O TLV 14-22 IEI=0x30 */ + LLC_SAPI negotiatedLlcSapi optional, /* cl. 9.9.4.7 O TV 2 IEI=0x32 */ + RadioPriority radioPriority optional, /* cl. 9.9.4.13 O TV 1 IEI=0x8- */ + PacketFlowIdentifier packetFlowIdentifier optional, /* cl. 9.9.4.5 O TLV 3 IEI=0x34 */ + APN_AMBR apnAggMaxBitRate optional, /* cl. 9.9.4.2 O TLV 4-8 IEI=0x5e */ + ProtocolConfigOptions protocolConfigurationOptions optional /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ +}; + + +type record NOTIFICATION { /* 24.301 cl. 8.3.18A + Significance: local + Direction: network to UE @sic R5s110176 Baseline Moving sic@ */ + + + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + NotificationIndicator notificationIndicator /* cl. 9.9.4.7A M LV 2 */ +}; + + +type record PDN_CONNECTIVITY_REJECT { /* 24.301 cl. 8.3.19 + Significance: dual + Direction: network to UE */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ESM_Cause esmCause, /* cl. 9.9.4.4 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ + GPRS_Timer3 t3396 optional /* cl. 9.9.3.16B O TLV 3 IEI=0x37 @sic R5s120178 Baseline Moving sic@*/ +}; + +type record PDN_CONNECTIVITY_REQUEST { /* 24.301 cl. 8.3.20 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + PDN_Type pdnType, /* cl. 9.9.4.10 M V 1/2 */ + Request_Type requestType, /* cl. 9.9.4.14 M V 1/2 */ + ESM_InfoTransferFlag esmInfoTransferFlag optional, /* cl. 9.9.4.5 O TV 1 IEI=0xD- */ + AccessPointName accessPointName optional, /* cl. 9.9.4.1 O TLV 3-102 IEI=0x28 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ + DeviceProperties deviceProperties optional /* cl. 9.9.2.0A O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/ +}; + +type record PDN_DISCONNECT_REJECT { /* 24.301 cl. 8.3.21 + Significance: dual + Direction: network to UE */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ESM_Cause esmCause, /* cl. 9.9.4.2 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ +}; + +type record PDN_DISCONNECT_REQUEST { /* 24.301 cl. 8.3.22 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.9.2.9 M V 1/2 */ + LinkedEpsBearerIdentity linkedEpsBearerId, /* cl. 9.9.4.6 M V 1/2 */ + ProtocolConfigOptions protocolConfigurationOptions optional /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ +}; + +//---------------------------------------------------------------------------- +// Common Info Elements (24.301 cl. 9.9.2) +//---------------------------------------------------------------------------- + +type record AdditionalInformation{ /* 24.301 cl. 9.9.2.0 @sic R5s110176 Baseline Moving sic@ */ + IEI8_Type iei, + Type4Length_Type iel, + octetstring additionalInfo +}; +type record EPS_BearerContextStatus { /* 24.301 cl. 9.9.2.1 */ + IEI8_Type iei optional, /* present in case of TV or TLV; omit in case of V */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B3_Type ebi5_7, /* EBI(5)- EBI(7) */ + B5_Type spare, /* EBI(0)- EBI(4) are spare and shall be coded as zero*/ + B8_Type ebi8_15 /* EBI(8)- EBI(15)*/ +}; + +type record NAS_SecurityParametersfromEUTRA { /* 24.301 cl. 9.9.2.6 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + B4_Type spare, /* 8-5 are spare and shall be coded as zero */ + B4_Type dl_nasCountValue /* contains the 4 least significant bits of the binary representation of the downlink NAS COUNT value applicable when + this information element is sent*/ +}; + +type record NAS_SecurityParameterstoEUTRA { /* 24.301 cl. 9.9.2.7 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + O4_Type noncevalue, /*NonceMME value */ + B1_Type spare1, /* are spare and shall be coded as zero */ + B3_Type cipherAlgorithmType, /* type of ciphering algorithm in the NAS security algorithms information element */ + B1_Type spare2, /* are spare and shall be coded as zero */ + B3_Type integrityAlgorithmType, /* as the type of integrity protection algorithm */ + B4_Type spare3, /* are spare and shall be coded as zero*/ + B1_Type tsc, /* type of security context flag (TSC) */ + B3_Type naskeysetid /* Nas key set identifier*/ + }; + + +//---------------------------------------------------------------------------- +// EPS Mobility Management (EMM) information elements (24.301 cl. 9.9.3) +//---------------------------------------------------------------------------- + +type record AuthenticationResponseParameter { /* 24.301 cl. 9.9.3.4 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B32_128_Type res /* 4..16 octets */ +}; + +type record CSFBResponse { // 24.301 cl. 9.9.3.5 + IEI4_Type iei, // currently only used as TV + B1_Type spare, + B3_Type csfbValue //0 = CS fallback rejected, 1 = accepted by UE +}; + +type record EMM_Cause { /* 24.301 cl. 9.9.3.9 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + NAS_CauseValue_Type causeValue +}; + +type record EPS_AttachResult { /* 24.301 cl. 9.9.3.10 */ + // IEI is always skipped + B1_Type spare, + NAS_AttDetValue_Type resultValue +}; + +type record EPS_AttachType { /* 24.301 cl. 9.9.3.11 */ + // IEI is always skipped + B1_Type spare, + NAS_AttDetValue_Type typeValue +}; + +type record EPS_NetworkFeatureSupport { /* 24.301 cl 9.9.3.12A @sic R5s100135 sic@ */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B2_Type spareBits, /* @sic R5s110176 Baseline Moving sic@ */ + B1_Type esrps, /* @sic R5s120178 Baseline Moving sic@ */ + B2_Type csLCS, /* @sic R5s110176, R5s120178 Baseline Moving sic@ */ + B1_Type epcLCS, /* @sic R5s110176 Baseline Moving sic@ */ + B1_Type emcBS, /* @sic R5s110176, R5s120178 Baseline Moving sic@ */ + B1_Type imsVoPS +}; + +type record PagingIdentity { /* 24.301 cl. 9.9.93.25A @sic R5s100135 sic@ */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + B7_Type spareBits, + B1_Type pagingId +}; + +type record AdditionalUpdateResult { /* 24.301 cl. 9.9.3.0A @sic R5s100135 sic@ */ + IEI4_Type iei, // currently only used as TV + B2_Type spare2, + B2_Type addUpdateResultValue +}; + +type record EPS_UpdateResult { /* 24.301 cl. 9.9.3.13 */ + // IEI is always skipped + B1_Type spare, + NAS_AttDetValue_Type resultValue +}; + +type record EPS_UpdateType { /* 24.301 cl. 9.9.3.14 */ + // IEI is always skipped + B1_Type activeFlag, + NAS_AttDetValue_Type typeValue +}; + +type record ESM_MessageContainer { /* 24.301 cl. 9.9.3.15 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type6Length_Type iel, + octetstring esmPdu /* ESM PDU without NAS security header; + type is FFS */ +}; + +type record KSIandSN { /* 24.301 cl. 9.9.3.19 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + B3_Type ksi, + B5_Type sn +}; + +type record NAS_KeySetIdentifier { /* 24.301 cl. 9.9.3.21 */ + IEI4_Type iei optional, /* present in case of TV; omit in case of V */ + B1_Type tsc, // Type of security context: 0 = cached, 1 = mapped + NAS_KsiValue nasKeySetId +}; + +type record NAS_MessageContainer { // 24.301 cl. 9.9.3.22 + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel, + octetstring smsmessage length(2..251) /* can contain an SMS message (i.e. CP-DATA, CP-ACK or CP-ERROR) + as defined in subclause 7.2 in 3GPP TS 24.011 */ +}; + +type record NAS_SecurityAlgorithms { /* 24.301 cl. 9.9.3.23 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + B1_Type spare1, + B3_Type cipheringType, /* Type of ciphering algorithm */ + B1_Type spare2, + B3_Type integrityType /* Type of integrity protection algorithm */ +}; + +type record Nonce { /* 24.301 cl. 9.9.3.25 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + O4_Type nonceValue +}; + +type record EPS_ServiceType { // 24.301 cl. 9.9.3.27 + IEI4_Type iei optional, /* present in case of TV; omit in case of V */ + EPS_ServiceTypeValue serviceValue +}; + +type record ShortMAC { /* 24.301 cl. 9.9.3.28 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + B16_Type macValue +}; + +type record UERadioCapInfoUpdateNeeded { // 24.301 cl. 9.9.3.35 + IEI4_Type iei optional, /* present in case of TV; omit in case of V */ + B3_Type spare, + B1_Type urcUpdate +}; + +type record UE_SecurityCapability { /* 24.301 cl. 9.9.3.36 */ + Type4Length_Type iel, // @sic R5s10035 iei never used, so removed sic@ + O1_Type eeaCap, // @sic R5s100135 sic@ + O1_Type eiaCap, // @sic R5s100135 sic@ + O1_Type ueaCap optional, // @sic R5s100135 sic@ + O1_Type uiaCap optional, // @sic R5s100135 sic@ + O1_Type geaCap optional // @sic R5s100135 sic@ +}; + +type record CLI { /* 24.301 cl. 9.9.3.38 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel, + octetstring cliValue length(1..12) /* The coding of the CLI value part is the same as for octets 3 to + 14 of the Calling party BCD number information element defined + in subclause 10.5.4.9 of 3GPP TS 24.008 */ +}; + +type record SsCode { /* 24.301 cl. 9.9.3.39 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + O1_Type ssCodeValue /*The coding of the SS Code value is given in subclause 17.7.5 of 3GPP TS 29.002 */ +}; + +type record LcsIndicator { /* 24.301 cl. 9.9.3.40 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + O1_Type lcsIndicator +}; + +type record LcsClientIdentity { /* 24.301 cl. 9.9.3.41 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel, + octetstring lcsClientIdentityValue length(1..255) /* The coding of the value part of the LCS client + identity is given in subclause 17.7.13 of 3GPP TS 29.002 */ +}; + +type B8_Type GenericMessageContainerType; /* 24.301 cl. 9.9.3.42 M V 1 @sic R5s110176 Baseline Moving sic@ */ + +type record GenericMessageContainer{ /* 24.301 cl. 9.9.3.43 M LV-E 3-n @sic R5s110176 Baseline Moving sic@*/ + IEI8_Type iei optional, + Type6Length_Type iel, + octetstring genericMsgContainerValue +}; + +type record GUTI_Type{ /* 24.301 cl. 9.9.3.45 @sic R5s110178 Baseline Moving sic@*/ + IEI4_Type iei, + B3_Type spare, + B1_Type gutiType +}; + +//---------------------------------------------------------------------------- +// EPS Session Management (ESM) information elements (24.301 cl. 9.9.4) +//---------------------------------------------------------------------------- + +type record APN_AMBR { // 24.301 cl. 9.9.4.2 + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B8_Type downlink, + B8_Type uplink, + B8_Type downlinkExt optional, + B8_Type uplinkExt optional, + B8_Type downlinkExt2 optional, + B8_Type uplinkExt2 optional +}; + +type record EPS_QualityOfService { /* 24.301 cl. 9.9.4.3 */ + IEI8_Type iei optional, + Type4Length_Type iel, + B8_Type qci, + B8_Type maxBitRateUl optional, + B8_Type maxBitRateDl optional, + B8_Type guaranteedBitRateUl optional, + B8_Type guaranteedBitRateDl optional, + B8_Type maxBitRateUlExt optional, + B8_Type maxBitRateDlExt optional, + B8_Type guaranteedBitRateUlExt optional, + B8_Type guaranteedBitRateDlExt optional, + B8_Type maxBitRateDL_Ext2 optional, // @sic R5s1300195 Baseline Moving sic@ + B8_Type guaranteedBitRateDL_Ext2 optional, // @sic R5s1300195 Baseline Moving sic@ + B8_Type maxBitRateUL_Ext2 optional, // @sic R5s1300195 Baseline Moving sic@ + B8_Type guaranteedBitRateUL_Ext2 optional // @sic R5s1300195 Baseline Moving sic@ +}; + +type record ESM_Cause { /* 24.301 cl. 9.9.4.4 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + NAS_CauseValue_Type causeValue +}; + +type record ESM_InfoTransferFlag { /* 24.301 cl. 9.9.4.5 */ + IEI4_Type iei optional, + B3_Type spare, + B1_Type eitValue +}; + +type record LinkedEpsBearerIdentity { /* 24.301 cl. 9.9.4.6 */ + // IEI is always skipped + B4_Type idValue +}; + +type record NotificationIndicator{ /* 24.301 cl. 9.9.4.7A @sic R5s110176 Baseline Moving sic@ */ + IEI8_Type iei optional, + Type4Length_Type iel, + B8_Type notificationInd +}; + +type record PDN_Type { /* 24.301 cl. 9.9.4.10 */ + // IEI is always skipped + B1_Type spare, + PdnTypeValue typeValue +}; + +type record TransactionIdentifier { /* 24.301 cl. 9.9.4.17 */ + IEI8_Type iei optional, + Type4Length_Type iel, + B1_Type tiFlag, + B3_Type tiValue, + B4_Type spare, + B1_Type ext optional, // @sic R5s110176 sic@ + B7_Type tiValue_2 optional // @sic R5s110176 sic@ +}; + + type O8_Type EllipsoidPointWithAltitude_Type; + type O3_Type HorizontalVelocity_Type; + type O3_Type Gnss_TOD_msec_Type; + + // ============================================================================= + // Update UE Location Information + // 3G TS 36.509 cl. 6.12 + // Direction: SS to UE + // ----------------------------------------------------------------------------- + type record UPDATE_UE_LOCATION_INFORMATION { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType, /* M V 1 */ + EllipsoidPointWithAltitude_Type ellipsoidPointWithAltitude, /* M V 8 */ + HorizontalVelocity_Type horizontalVelocity, /* M V 3 */ + Gnss_TOD_msec_Type gnss_TOD_msec /* M V 3 */ + }; + +} with { encode "NAS Types"} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS/IMS_34229_SelectionExpressions.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_34229_SelectionExpressions.ttcn new file mode 100644 index 0000000..347291f --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_34229_SelectionExpressions.ttcn @@ -0,0 +1,265 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-05 14:33:19 +0200 (Fri, 05 Sep 2014) $ +// $Rev: 12067 $ +/******************************************************************************/ + +module IMS_34229_SelectionExpressions { + + import from IMS_CommonParameters all; + import from IMS_CC_Parameters all; + import from UTRAN_Parameters all; + import from Parameters all; + + type enumerated Condition_Type { + IMS34_R, + IMS34_C04, + IMS34_C05, + IMS34_C06, + IMS34_C07, + IMS34_C08, + IMS34_C09, + IMS34_C10, + IMS34_C17, + IMS34_C18, + IMS34_C19, + IMS34_C22, + IMS34_C23, + IMS34_C24, + IMS34_C26, + IMS34_C27, + IMS34_C28, + IMS34_C30, + IMS34_C31, + IMS34_C32, + IMS34_C37, + IMS34_C43, + IMS34_C44, + IMS34_C45, + IMS34_C48, + IMS34_C49, + IMS34_C50, + IMS34_C55, + IMS34_C56, + IMS34_C57, + IMS34_C58, + IMS34_C59, + IMS34_C61, + IMS34_C62, + // IMS34_C63 void + IMS34_C64, + IMS34_C65, + IMS34_C66, + IMS34_C68, + IMS34_C69, + IMS34_C70, + IMS34_C71, + IMS34_C72, + IMS34_C73, + IMS34_C74, + IMS34_C75, + IMS34_C76 + }; + + function f_SelectionExpr ( Condition_Type p_Condition) return boolean + { + /* Set the applicability conditions according to 34.229-2 clause 4 table "Conditions/Options" */ + + var boolean v_ApplCond; + + select (p_Condition) { + case (IMS34_R) { + v_ApplCond := true; + } + case (IMS34_C04) { + // Dedicated PDP Context + v_ApplCond := pc_InitiatesDedicatedPDPContext; + } + case (IMS34_C05) { + // P-CSCF Discovery via PCO + v_ApplCond := pc_P_CSCFDiscovery_viaPCO; + } + case (IMS34_C06) { + // IPv4 AND configured to initiate P-CSCF discovery via DHCPv4 + v_ApplCond := pc_IPv4 and pc_InitiateP_CSCFDiscovery_viaDHCPv4; + } + case (IMS34_C07) { + // IPv4 AND P-CSCF discovery via PCO AND P-CSCF discovery via DHCPv4 AND configured to initiate P-CSCF discovery via PCO + v_ApplCond := pc_IPv4 and pc_P_CSCFDiscovery_viaPCO and pc_P_CSCFDiscovery_viaDHCPv4 and pc_InitiateP_CSCFDiscovery_viaPCO; + } + case (IMS34_C08) { + // Configured to initiate P-CSCF discovery via DHCPv6 + v_ApplCond := pc_InitiateP_CSCFDiscovery_viaDHCPv6; + } + case (IMS34_C09) { + // P-CSCF Discovery via PCO AND P-CSCF discovery via DHCPv6 AND configured to initiate P-CSCF discovery via PCO + v_ApplCond := pc_P_CSCFDiscovery_viaPCO and pc_P_CSCFDiscovery_viaDHCPv6 and pc_InitiateP_CSCFDiscovery_viaPCO; + } + case (IMS34_C10) { + //P-CSCF Discovery via PCO AND P-CSCF discovery via DHCPv6 AND configured to initiate P-CSCF discovery via DHCPv6 + v_ApplCond := pc_P_CSCFDiscovery_viaPCO and pc_P_CSCFDiscovery_viaDHCPv6 and pc_InitiateP_CSCFDiscovery_viaDHCPv6; + } + case (IMS34_C17) { + // IMS security + v_ApplCond := pc_IMS_Sec; + } + case (IMS34_C18) { + // GIBA AND NOT IMS security + v_ApplCond := pc_IMS_GIBA_Sec and not(pc_IMS_Sec); + } + case (IMS34_C19) { + // IMS security AND GIBA + v_ApplCond := pc_IMS_Sec and pc_IMS_GIBA_Sec; + } + case (IMS34_C22) { + // MTSI and speech + v_ApplCond := pc_MultimediaTelephonyService and pc_MTSI_Speech; + } + case (IMS34_C23) { + // MTSI and speech and Communication Hold + v_ApplCond := pc_MultimediaTelephonyService and pc_MTSI_Speech and pc_MTSI_CommHold ; + } + case (IMS34_C24) { + // MTSI and Communication Barring + v_ApplCond := pc_MultimediaTelephonyService and pc_MTSI_CB; + } + case (IMS34_C26) { + // MTSI AND Initiating session AND preconditions AND MTSI text, RTP + v_ApplCond := pc_MultimediaTelephonyService and pc_InitiateSession and pc_Preconditions and pc_MTSI_Text_RTP; + } + case (IMS34_C27) { + // MTSI AND Initiating session AND MTSI speech + v_ApplCond := pc_MultimediaTelephonyService and pc_InitiateSession and pc_MTSI_Speech; + } + case (IMS34_C28) { + // MTSI AND Initiating session AND MTSI speech AND MTSI speech, AMR wideband + v_ApplCond := pc_MultimediaTelephonyService and pc_InitiateSession and pc_MTSI_Speech and pc_MTSI_Speech_AMRWB; + } + case (IMS34_C30) { + // MTSI and Communication Diversion + v_ApplCond := pc_MultimediaTelephonyService and pc_MTSI_CommDivert; + } + case (IMS34_C31) { + // MTSI and speech and Communication Diversion + v_ApplCond := pc_MultimediaTelephonyService and pc_MTSI_CommDivert and pc_MTSI_Speech; + } + case (IMS34_C32) { + // MTSI and Conference + v_ApplCond := pc_MultimediaTelephonyService and pc_MTSI_Conference; + } + case (IMS34_C37) { + //MTSI AND Initiating session AND MTSI text, RTP + v_ApplCond := pc_MultimediaTelephonyService and pc_InitiateSession and pc_MTSI_Text_RTP; + } + case (IMS34_C43) { + //UE supporting MTSI and Originating Identification Presentation + v_ApplCond := pc_MultimediaTelephonyService and pc_MTSI_OIP; + } + case (IMS34_C44) { + // UE supporting MTSI and Originating Identification Restriction + v_ApplCond := pc_MultimediaTelephonyService and pc_MTSI_OIR; + } + case (IMS34_C45) { + //MTSI and Communication Barring and Anonymous Communication Rejection + v_ApplCond := pc_MultimediaTelephonyService and pc_MTSI_CB and pc_MTSI_ACR; + } + case (IMS34_C48) { + // MTSI and Terminating Identification Presentation + v_ApplCond := pc_MultimediaTelephonyService and pc_MTSI_TIP; + } + case (IMS34_C49) { + //MTSI and Terminating Identification Restriction + v_ApplCond := pc_MultimediaTelephonyService and pc_MTSI_TIR; + } + case (IMS34_C50) { + // MTSI and Message Waiting Indication + v_ApplCond := pc_MultimediaTelephonyService and pc_MTSI_MessageWait; + } + case (IMS34_C55) { + // SM-over-IP sender + v_ApplCond := pc_SMS_MO; + } + case (IMS34_C56) { + // SM-over-IP receiver + v_ApplCond := pc_SMS_MT; + } + case (IMS34_C57) { + //MTSI AND communication waiting + v_ApplCond := pc_MultimediaTelephonyService and pc_MTSI_CommWaiting; + } + case (IMS34_C58) { + // IMS security AND Indicate Sigcomp + v_ApplCond := pc_IMS_Sec and pc_IndicateSigcomp; + } + case (IMS34_C59) { + // IMS emergency services + v_ApplCond := pc_IMS_EmergencyCall; + } + case (IMS34_C61) { + //UE supporting MTSI and Conference and three way session + v_ApplCond := pc_MultimediaTelephonyService and pc_MTSI_Conference; //FFS and A.16/14; + } + case (IMS34_C62) { + //IMS emergency services and emergency speech call and UTRAN or GERAN + v_ApplCond := pc_IMS_EmergencyCall and pc_EmergSpeech and (pc_UTRA or pc_GERAN); + } + case (IMS34_C64) { + //IMS emergency services and EUTRA FDD or EUTRA TDD + v_ApplCond := pc_IMS_EmergencyCall and (pc_eFDD or pc_eTDD); + } + case (IMS34_C65) { + // IMS emergency services and UTRA and PS domain + v_ApplCond := pc_IMS_EmergencyCall and pc_GERAN and pc_PS; + } + case (IMS34_C66) { + //Speech and IMS emergency call and emergency call over GERAN or UTRAN + v_ApplCond := pc_BidirecVoiceOverIMS and pc_MTSI_Speech and (pc_EmergSpeech and (pc_UTRA or pc_GERAN)); + } + case (IMS34_C68) { + //MTSI AND Initiating session AND MTSI speech AND E-UTRA + v_ApplCond := pc_MultimediaTelephonyService and pc_InitiateSession and pc_MTSI_Speech and (pc_eFDD or pc_eTDD); + } + case (IMS34_C69) { + //MTSI AND Initiating session AND MTSI speech AND MTSI video AND E-UTRA + v_ApplCond := pc_MultimediaTelephonyService and pc_InitiateSession and pc_MTSI_Speech and pc_MTSI_Video and (pc_eFDD or pc_eTDD) ; + } + case (IMS34_C70) { + //MTSI AND MTSI speech AND MTSI video AND MTSI Video H.264 CBP Level 1.2 + v_ApplCond := pc_MultimediaTelephonyService and pc_InitiateSession and pc_MTSI_Video and pc_VideoCodecH264CBP; + } + case (IMS34_C71) { + //MTSI AND Initiating session AND MTSI speech AND MTSI video AND MTSI Video H.264 CBP Level 1.2 + v_ApplCond := pc_MultimediaTelephonyService and pc_InitiateSession and pc_MTSI_Speech and pc_MTSI_Video and pc_VideoCodecH264CBP; + } + case (IMS34_C72) { + //IMS emergency services and MTSI and speech and Communication Hold during emergency call. + v_ApplCond := pc_IMS_EmergencyCall and pc_MultimediaTelephonyService and pc_MTSI_Speech and pc_CommunicationHold_DuringEmergencyCall; + } + case (IMS34_C73) { + //UE supports IMS emergency services and Geolocation Information and MTSI and speech + v_ApplCond := pc_IMS_EmergencyCall and pc_IMS_Geolocation and pc_MultimediaTelephonyService and pc_MTSI_Speech; //@sic R5133708 sic@ + } + case (IMS34_C74) { + // UE supporting IMS emergency services and Emergency speech call over 1XRTT (NOTE 2) + v_ApplCond := pc_IMS_EmergencyCall and pc_EmergSpeech and pc_1xRTT; + } + case (IMS34_C75) { + // Speech and IMS emergency call and emergency call over 1XRTT (NOTE 2) + v_ApplCond := pc_BidirecVoiceOverIMS and pc_Speech and (pc_EmergSpeech and pc_1xRTT); + } + case (IMS34_C76) { + // IMS emergency services and Geolocation Information + v_ApplCond := pc_IMS_EmergencyCall and pc_IMS_Geolocation; + } + case else { + v_ApplCond := false; + } + } + return v_ApplCond; + } +} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS/IMS_ASP_Templates.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_ASP_Templates.ttcn new file mode 100644 index 0000000..94e7d10 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_ASP_Templates.ttcn @@ -0,0 +1,279 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-07 18:37:49 +0200 (Sun, 07 Sep 2014) $ +// $Rev: 12081 $ +/******************************************************************************/ + +module IMS_ASP_Templates { + import from LibSip_SIPTypesAndValues all; + import from IP_ASP_TypeDefs all; + import from IMS_ASP_TypeDefs all; + import from CommonDefs all; + + //**************************************************************************** + // ASPs to send/receive IMS messages + //---------------------------------------------------------------------------- + + template (value) IMS_RoutingInfo_Type cs_IMS_RoutingInfo(InternetProtocol_Type p_Protocol, + template (omit) IMS_ProtectedUnprotected_Type p_ProtectedUnprotected := omit, + template (omit) IP_AddrInfo_Type p_UE_Address := omit, + template (omit) IP_AddrInfo_Type p_NW_Address := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + Protocol := p_Protocol, + Security := p_ProtectedUnprotected, + UE_Address := p_UE_Address, + NW_Address := p_NW_Address + }; + + template (present) IMS_RoutingInfo_Type cr_IMS_RoutingInfo(template (present) InternetProtocol_Type p_Protocol := ?, + template IMS_ProtectedUnprotected_Type p_ProtectedUnprotected := *) := // @sic R5s130133 additional change 1; R5s130187 sic@ + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + Protocol := p_Protocol, + Security := p_ProtectedUnprotected, + UE_Address := *, // @sic R5s120907 change 1 sic@ + NW_Address := * // @sic R5s120907 change 1 sic@ + }; + + //---------------------------------------------------------------------------- + + template (present) IMS_DATA_REQ cr_IMS_DATA_REQ_Any(template (present) IMS_RoutingInfo_Type p_RoutingInfo := ?, + template (present) IMS_Request_Type p_IMS_Request := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + /* @sic @sic R5s140710 - MCC160 Implementation sic@ */ + RoutingInfo := p_RoutingInfo, + Request := p_IMS_Request + }; + + template (present) IMS_DATA_REQ car_IMS_Register_Request(template (present) REGISTER_Request p_RegisterRequest) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + RoutingInfo := cr_IMS_RoutingInfo, + Request := { + Register := p_RegisterRequest + } + }; + + template (present) IMS_DATA_RSP cr_IMS_DATA_RSP_Any := ?; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + + template (present) IMS_DATA_REQ car_IMS_Subscribe_Request(template (present) SUBSCRIBE_Request p_SubscribeRequest) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + RoutingInfo := cr_IMS_RoutingInfo, + Request := { + Subscribe := p_SubscribeRequest + } + }; + + template (value) IMS_DATA_REQ cas_IMS_Notify_Request(template (value) IMS_RoutingInfo_Type p_RoutingInfo, + template (value) NOTIFY_Request p_NotifyRequest) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + RoutingInfo := p_RoutingInfo, + Request := { + Notify := p_NotifyRequest + } + }; + + template (present) IMS_DATA_REQ car_IMS_Notify_Request(template (present) NOTIFY_Request p_NotifyRequest) := + { + RoutingInfo := cr_IMS_RoutingInfo, + Request := { + Notify := p_NotifyRequest + } + }; + + //---------------------------------------------------------------------------- + + template (value) IMS_DATA_REQ cas_IMS_DATA_REQ(template (value) IMS_RoutingInfo_Type p_RoutingInfo, + template (value) IMS_Request_Type p_Request) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + RoutingInfo := p_RoutingInfo, + Request := p_Request + }; + + template (value) IMS_DATA_RSP cas_IMS_DATA_RSP(template (value) IMS_RoutingInfo_Type p_RoutingInfo, + template (value) IMS_Response_Type p_Response) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + RoutingInfo := p_RoutingInfo, + Response := p_Response + }; + + template (present) IMS_DATA_RSP car_IMS_DATA_RSP(template (present) IMS_RoutingInfo_Type p_RoutingInfo, + template (present) IMS_Response_Type p_Response) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + RoutingInfo := p_RoutingInfo, + Response := p_Response + }; + + //---------------------------------------------------------------------------- + + template (present) IMS_DATA_REQ car_IMS_Ack_Request(template (present) ACK_Request p_AckRequest) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + RoutingInfo := cr_IMS_RoutingInfo, + Request := { + Ack := p_AckRequest + } + }; + + template (present) IMS_DATA_REQ car_IMS_Prack_Request(template (present) PRACK_Request p_PrackRequest) := + { /* @status APPROVED (IMS, LTE_A) */ + RoutingInfo := cr_IMS_RoutingInfo, + Request := { + Prack := p_PrackRequest + } + }; + + template (present) IMS_DATA_REQ car_IMS_Refer_Request(template (present) REFER_Request p_ReferRequest) := + { + RoutingInfo := cr_IMS_RoutingInfo, + Request := { + Refer := p_ReferRequest + } + }; + + template (value) IMS_DATA_REQ cas_IMS_Prack_Request(template (value) IMS_RoutingInfo_Type p_RoutingInfo, + template (value) PRACK_Request p_PrackRequest) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + RoutingInfo := p_RoutingInfo, + Request := { + Prack := p_PrackRequest + } + }; + + template (value) IMS_DATA_REQ cas_IMS_Ack_Request(template (value) IMS_RoutingInfo_Type p_RoutingInfo, + template (value) ACK_Request p_AckRequest) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + RoutingInfo := p_RoutingInfo, + Request := { + Ack := p_AckRequest + } + }; + + template (present) IMS_DATA_REQ car_IMS_Update_Request(template (present) UPDATE_Request p_UpdateRequest := ?) := + { /* @status APPROVED (IMS, LTE_A) */ + RoutingInfo := cr_IMS_RoutingInfo, + Request := { + Update := p_UpdateRequest + } + }; + + template (value) IMS_DATA_REQ cas_IMS_Update_Request(template (value) IMS_RoutingInfo_Type p_RoutingInfo, + template (value) UPDATE_Request p_UpdateRequest) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + RoutingInfo := p_RoutingInfo, + Request := { + Update := p_UpdateRequest + } + }; + + + template (value) IMS_DATA_REQ cas_IMS_Cancel_Request(template (value) IMS_RoutingInfo_Type p_RoutingInfo, + template (value) CANCEL_Request p_CancelRequest ) := + { /* @status APPROVED (IMS, LTE_A) */ + RoutingInfo := p_RoutingInfo, + Request := { + Cancel := p_CancelRequest + } + }; + + template (present) IMS_DATA_REQ car_IMS_Invite_Request(template (present) INVITE_Request p_InviteRequest := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + RoutingInfo := cr_IMS_RoutingInfo, + Request := { + Invite := p_InviteRequest + } + }; + + template (value) IMS_DATA_REQ cas_IMS_Invite_Request(template (value) IMS_RoutingInfo_Type p_RoutingInfo, + template (value) INVITE_Request p_InviteRequest ) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + RoutingInfo := p_RoutingInfo, + Request := { + Invite := p_InviteRequest + } + }; + + template (present) IMS_DATA_REQ car_IMS_Bye_Request(template (present) BYE_Request p_ByeRequest := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A) */ + RoutingInfo := cr_IMS_RoutingInfo, + Request := { + Bye := p_ByeRequest + } + }; + + template (value) IMS_DATA_REQ cas_IMS_BYE_Request(template (value) IMS_RoutingInfo_Type p_RoutingInfo, + template (value) BYE_Request p_ByeRequest ) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + RoutingInfo := p_RoutingInfo, + Request := { + Bye := p_ByeRequest + } + }; + + template (present) IMS_DATA_REQ car_IMS_Publish_Request(template (present) PUBLISH_Request p_PublishRequest := ?) := + { + RoutingInfo := cr_IMS_RoutingInfo, + Request := { + Publish := p_PublishRequest + } + }; + + template (present) IMS_DATA_REQ car_IMS_Message_Request(template (present) MESSAGE_Request p_MessageRequest := ?) := + { /* @status APPROVED (IMS) */ + RoutingInfo := cr_IMS_RoutingInfo, + Request := { + Message := p_MessageRequest + } + }; + + template (value) IMS_DATA_REQ cas_IMS_Message_Request(template (value) IMS_RoutingInfo_Type p_RoutingInfo, + template (value) MESSAGE_Request p_MessageRequest ) := + { /* @status APPROVED (IMS) */ + RoutingInfo := p_RoutingInfo, + Request := { + Message := p_MessageRequest + } + }; + + template (value) IMS_DATA_REQ cas_IMS_Refer_Request(template (value) IMS_RoutingInfo_Type p_RoutingInfo, + template (value) REFER_Request p_ReferRequest ) := + { + RoutingInfo := p_RoutingInfo, + Request := { + Refer := p_ReferRequest + } + }; + + //**************************************************************************** + // Auxiliary function + //---------------------------------------------------------------------------- + /* + * @desc get MessageHeader from given IMS request + * @param p_Request + * @return MessageHeader + * @status APPROVED (IMS_34229) + */ + function f_IMS_Request_GetMessageHeader(IMS_Request_Type p_Request) return MessageHeader + { + var MessageHeader v_MessageHeader; + + if (ischosen(p_Request.Register)) { v_MessageHeader := p_Request.Register.msgHeader; } + else if (ischosen(p_Request.Invite)) { v_MessageHeader := p_Request.Invite.msgHeader; } + else if (ischosen(p_Request.Options)) { v_MessageHeader := p_Request.Options.msgHeader; } + else if (ischosen(p_Request.Bye)) { v_MessageHeader := p_Request.Bye.msgHeader; } + else if (ischosen(p_Request.Cancel)) { v_MessageHeader := p_Request.Cancel.msgHeader; } + else if (ischosen(p_Request.Ack)) { v_MessageHeader := p_Request.Ack.msgHeader; } + else if (ischosen(p_Request.Prack)) { v_MessageHeader := p_Request.Prack.msgHeader; } + else if (ischosen(p_Request.Notify)) { v_MessageHeader := p_Request.Notify.msgHeader; } + else if (ischosen(p_Request.Subscribe)) { v_MessageHeader := p_Request.Subscribe.msgHeader; } + else if (ischosen(p_Request.Publish)) { v_MessageHeader := p_Request.Publish.msgHeader; } + else if (ischosen(p_Request.Update)) { v_MessageHeader := p_Request.Update.msgHeader; } + else if (ischosen(p_Request.Refer)) { v_MessageHeader := p_Request.Refer.msgHeader; } + else if (ischosen(p_Request.Message)) { v_MessageHeader := p_Request.Message.msgHeader; } + else { FatalError(__FILE__, __LINE__, "unknown SIP message"); } + + return v_MessageHeader; + } +} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS/IMS_ASP_TypeDefs.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_ASP_TypeDefs.ttcn new file mode 100644 index 0000000..f5de504 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_ASP_TypeDefs.ttcn @@ -0,0 +1,138 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-03-03 17:01:01 +0100 (Mon, 03 Mar 2014) $ +// $Rev: 10790 $ +/******************************************************************************/ + +module IMS_ASP_TypeDefs { + import from CommonDefs all; + import from LibSip_SIPTypesAndValues all; + import from IP_ASP_TypeDefs all; + + //**************************************************************************** + // Data ASPs + //**************************************************************************** + + type enumerated IMS_ProtectedUnprotected_Type {protected, unprotected}; + + type record IMS_RoutingInfo_Type { + InternetProtocol_Type Protocol, // UDP or TCP + IMS_ProtectedUnprotected_Type Security optional, // protected or unprotected (in DL omit when IP PTC shall decide what to do) + IP_AddrInfo_Type UE_Address optional, // sent by the IP PTC when there is an initial request on unprotected connection + IP_AddrInfo_Type NW_Address optional // sent by the IP PTC when there is an initial request on unprotected connection + }; + + type RequestUnion IMS_Request_Type with { encode "SIPCodec"}; // Alias for 'RequestUnion' as defined in LibSip_SIPTypesAndValues + type Response IMS_Response_Type with { encode "SIPCodec"}; // Alias for 'Response' as defined in LibSip_SIPTypesAndValues + + type record IMS_DATA_REQ { + IMS_RoutingInfo_Type RoutingInfo, + IMS_Request_Type Request + }; + + type record IMS_DATA_RSP { + IMS_RoutingInfo_Type RoutingInfo, + IMS_Response_Type Response + }; + + //**************************************************************************** + // Configuration ASPs and common definitions + //**************************************************************************** + + type record IMS_UnprotectedPorts_Type { + PortNumber_Type Port_us, // UE side: 5060 per default; may be set to other value by initial request (REGISTER) by the UE + PortNumber_Type Port_ps // network side: 5060 (without choice) + }; + + type record IMS_ProtectedPorts_Type { + PortNumber_Type Port_us, // UE side: Server + PortNumber_Type Port_uc, // UE side: Client + PortNumber_Type Port_ps, // network side: Server + PortNumber_Type Port_pc // network side: Client + }; + + type record IMS_SPIs_Type { + IPsec_SPI_Type SPI_us, // SPI at UE side: assigned by the UE + IPsec_SPI_Type SPI_uc, // SPI at UE side: assigned by the UE + IPsec_SPI_Type SPI_ps optional, // SPI at network side: to be assigned by TTCN + IPsec_SPI_Type SPI_pc optional // SPI at network side: to be assigned by TTCN + }; + + type record IMS_SecurityInfo_Type { + IMS_ProtectedPorts_Type ProtectedPorts, + IMS_SPIs_Type SPIs, + IPsec_IntegrityAlgorithm_Type IntegrityAlgorithm, + IPsec_CipheringAlgorithm_Type CipheringAlgorithm + }; + + type record IMS_RegistrationInfo_Type { + IP_AddrInfo_Type NW_Address, // network address of the chosen IMS server (e.g. IPv4, IPv6) + IP_AddrInfo_Type UE_Address, // UE address as used for security protected connections + IMS_SecurityInfo_Type SecurityInfo optional // omit in case of GIBA + }; + + type record IMS_PortsAndSecurityConfigReq_Type { + PortNumber_Type UnprotectedPort_us optional, // 5060 per default + IMS_RegistrationInfo_Type RegistrationInfo + }; + + type Null_Type IMS_PortsAndSecurityConfigCnf_Type; /* @sic R5s130266 change 1.3, 4, 5 - MCC160 Implementation: sic@ + SPIs and protected ports are fully controlled by the IMS PTC + => it is not necessary anymore to return IMS_ProtectedPorts_Type, IMS_SPIs_Type to the IMS PTC */ + + type union IMS_CONFIG_REQ { + IPsec_SecurityKeys_Type InstallKey, + IMS_PortsAndSecurityConfigReq_Type PortsAndSecurityConfig, + IMS_SecurityInfo_Type SecurityRelease, + Null_Type RegInfoRelease, /* @sic R5s140123 change 9 sic@ */ + Null_Type CloseTCP /* @sic R5s130988 change 1 - MCC160 implementation sic@ */ + }; + + type union IMS_CONFIG_CNF { + Null_Type InstallKey, + IMS_PortsAndSecurityConfigCnf_Type PortsAndSecurityConfig, + Null_Type SecurityRelease, + Null_Type RegInfoRelease, /* @sic R5s140123 change 9 sic@ */ + Null_Type CloseTCP /* @sic R5s130988 change 1 - MCC160 implementation sic@ */ + }; + + //**************************************************************************** + // Port definitions + //**************************************************************************** + + type port IMS_IP_CTRL_PORT message { // Control port at the IMS PTC to configure IP for IMS + out IMS_CONFIG_REQ; + in IMS_CONFIG_CNF; + }; + + type port IP_IMS_CTRL_PORT message { // Control port at the IP PTC to get configuration from IMS + out IMS_CONFIG_CNF; + in IMS_CONFIG_REQ; + }; + + type port IMS_IP_CLIENT_PORT message { // IMS client: send requests, receive response + out IMS_DATA_REQ; + in IMS_DATA_RSP; + }; + + type port IP_IMS_CLIENT_PORT message { // counter part for the IMS client at the IP PTC: receive requests, send response + out IMS_DATA_RSP; + in IMS_DATA_REQ; + }; + + type port IMS_IP_SERVER_PORT message { // IMS server: send response, receive requests + out IMS_DATA_RSP; + in IMS_DATA_REQ; + }; + + type port IP_IMS_SERVER_PORT message { // counter part for the IMS server at the IP PTC: receive response, send requests + out IMS_DATA_REQ; + in IMS_DATA_RSP; + }; + +} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS/IMS_CommonDefs.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_CommonDefs.ttcn new file mode 100644 index 0000000..a80ae12 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_CommonDefs.ttcn @@ -0,0 +1,226 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-08-24 13:09:45 +0200 (Sun, 24 Aug 2014) $ +// $Rev: 11892 $ +/******************************************************************************/ + +module IMS_CommonDefs { + import from CommonDefs all; + import from Parameters all; + import from IMS_CC_Parameters all; + + type enumerated IMS_SecurityScheme_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + GIBA, /* 34.229-2 Table A.6a Item 1 */ + IMS_Security /* 34.229-2 Table A.6a Item 2 */ + }; + + type enumerated IMS_CallHoldResume_Type {HOLD, RESUME}; /* @status APPROVED (IMS) */ + + const boolean tsc_IMS_SMSoverIMS := false; /* In previous releases 34.229-2 A.4.5/21 (Rel-8) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + const boolean tsc_IMS_VideoFeature := false; /* A.12/zz + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + const B128_Type tsc_IMS_AuthRAND := px_eAuthRAND; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + const integer tsc_IMS_Port_ps_NoSec := 5060; + const integer tsc_IMS_Port_pc := 5061; /* client port at NW side for security protected IMS signalling + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + const integer tsc_IMS_Port_ps := 5062; /* server port at NW side for security protected IMS signalling + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + const integer tsc_IMS_Port_pc_2 := 5063; /* "new" client port at NW side for security protected IMS signalling: for re-authentication a new client port is needed + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + const integer tsc_IMS_MediaPort_M1 := 60350; /* RTP port Speech @sic R5s130495 Change 19 sic@ + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + const integer tsc_IMS_MediaPort_M2 := 60352; /* RTP port Video @sic R5s130495 Change 19 sic@ + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + const integer tsc_IMS_MediaPort_M3 := 60354; /* RTP port Text @sic R5s130495 Change 19 sic@ + * @status APPROVED (IMS, LTE_A) */ + const charstring tsc_IMS_Scscf := "scscf@3gpp.org"; + const charstring tsc_IMS_Opaque := "5ccc069c403ebaf9f0171e9517f40e41"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + const charstring tsc_IMS_RegisterExpiration := "600"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + const charstring tsc_IMS_FeatureParamId_3gpp_icsi_ref := "+g.3gpp.icsi-ref"; /* @sic R5s120530 change 3.6 sic@ + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + + const charstring tsc_IMS_FeatureParamValue_3gpp_icsi_ref := "urn:urn-7:3gpp-service.ims.icsi.mmtel"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (value) charstring cs_IMS_EncodedFeatureParamValue_3gpp_icsi_ref := f_URL_Encoding(tsc_IMS_FeatureParamValue_3gpp_icsi_ref); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + @sic R5-142247 URL encoding sic@ */ + + const charstring tsc_IMS_UEInstanceId := """"""; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + const charstring tsc_IMS_FeatureCap_SrvccAlerting := "+g.3gpp.srvcc-alerting"; /* @sic R5-142287 change 1, 2 sic@ + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + const charstring tsc_IMS_FinalConferenceUri := "sip:Stf160FinalConf@3gpp.org"; // FFS px_FinalConferenceUri + const charstring tsc_IMS_ConferenceFactoryUri := "sip:Stf160ConfFactory@3gpp.org"; // FFS px_ConferenceFactoryUri + const charstring tsc_IMS_TemporaryConferenceUri := "sip:Stf160TempConf@3gpp.org"; // FFS px_TemporaryConferenceUri + + const charstring tsc_IMS_PSI_SMSC := "tel:+" & px_SMS_SMSC_InternationalNumber; /* @status APPROVED (IMS) */ + + template (value) charstring cs_IMS_ArbitraryValueFor_gr(charstring p_PublicUserIdentity) := """" & p_PublicUserIdentity & ";gr=urn%3Auuid%3Af81d4fae-7dec-11d0-a765-00a0c91e6bf6"""; /* FFS + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (value) charstring cs_IMS_TempGRUUForUE(charstring p_HomeDomainName) := """sip:tgruu.7hs==jd7vnzga5w7fajsc7-ajd6fabz0f8g5@" & p_HomeDomainName & ";gr"""; /* FFS + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + const integer tsc_IMS_RSeqNumFor183 := 121; /* @status APPROVED (IMS, IMS_IRAT, LTE_A, LTE, LTE_IRAT) */ + const charstring tsc_IMS_Emergency_TelUri := "tel:112"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + const charstring tsc_IMS_CalleeTelUri := "tel:+4989364072"; //FFS + const charstring tsc_IMS_UrnServiceSos := "urn:service:sos"; /* @status APPROVED (IMS) */ + const charstring tsc_IMS_UrnServiceSos_Ambulance := tsc_IMS_UrnServiceSos & "." & "ambulance"; /* @status APPROVED (IMS) */ + + const charstring tsc_IMS_CallerDomain := "stf160.etsi.org"; /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + const charstring tsc_IMS_CallerSipAddrStr := "sip:PeerUE-Public@" & tsc_IMS_CallerDomain; /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + const integer tsc_IMS_CallerPort := 6543; /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + + const charstring tsc_P_CSCF_DomainName := "3gpp.org"; + + const charstring tsc_IMS_ExpiresDef := "600000"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + const charstring tsc_IMS_Ecscf := "ecscf.other.com"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + const float tsc_IMS_WaitForTcpClose := 3.0; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + /* + * @desc build up receive template for (case-insensitve) token + * @param p_Charstring + * @return template (present) charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_TokenPattern(charstring p_Charstring) return template (present) charstring + { /* @sic R5-140901: temporary solution - handle most common variants of the (case insensitive) token sic@ */ + var charstring v_CharstringPattern := p_Charstring; + var charstring v_UpperCasePattern := f_StringToUpper(p_Charstring); + var charstring v_LowerCasePattern := f_StringToLower(p_Charstring); + + if (lengthof(v_CharstringPattern) > 0) { + v_CharstringPattern[0] := f_StringToUpper(v_CharstringPattern[0]); + } + return (pattern v_UpperCasePattern, pattern v_LowerCasePattern, pattern v_CharstringPattern); + } + + /* + * @desc convert IPCAN_RAN_Type to charstring + * @param p_RAN_Type + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_RANType2Charstring(IPCAN_RAN_Type p_RAN_Type) return charstring + { + var charstring v_RanString; + + select (p_RAN_Type) { + case (UTRAN_FDD) { v_RanString := "3GPP-UTRAN-FDD"; } + case (UTRAN_TDD) { v_RanString := "3GPP-UTRAN-TDD"; } + case (GERAN) { v_RanString := "3GPP-GERAN"; } + case (EUTRA_FDD) { v_RanString := "3GPP-E-UTRAN-FDD"; } // @sic R5s120530 change 1.4 sic@ + case (EUTRA_TDD) { v_RanString := "3GPP-E-UTRAN-TDD"; } + case else { v_RanString := "Unknown RANTech"; } + } + return v_RanString; + } + + /* + * @desc generic function to build a tag + * @param p_Method + * @param p_FromOrTo (default value: "To") + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_GenerateTag(charstring p_Method, + charstring p_FromOrTo := "To") return charstring + { /* p_Method .. e.g. "INVITE" */ + /* @sic R5-131897, R5-132063 - new generic function sic@ */ + return "abc-" & p_Method & "-" & p_FromOrTo & "tag"; + } + + /* + * @desc return Security Scheme to be used + * @param p_IsGiba + * @return IMS_SecurityScheme_Type + * @status APPROVED (IMS) + */ + function f_IMS_SecurityScheme(boolean p_IsGiba) return IMS_SecurityScheme_Type + { + var IMS_SecurityScheme_Type v_SecurityScheme := IMS_Security; + if (p_IsGiba) { + v_SecurityScheme := GIBA; + } + return v_SecurityScheme; + } + + /* + * @desc restore URL-encoded (or "percent-encoded") URL: + * replace all "%XY" with the the respective character corresponding to the hex code XY + * @param p_EncodedUrl + * @return charstring + * @status APPROVED (IMS) + */ + function f_URL_Decoding(charstring p_EncodedUrl) return charstring + { + var charstring v_Url := p_EncodedUrl; + var charstring v_Pattern := "(*)(%[0-9a-fA-F]#2)"; + var charstring v_PercentCodedChar; + var charstring v_HexCode; + var charstring v_Char; + var integer v_Pos; + + while (true) { + v_PercentCodedChar := regexp(v_Url, v_Pattern, 1); + if (v_PercentCodedChar != "") { + v_Pos := lengthof(regexp(v_Url, v_Pattern, 0)); + v_HexCode := substr(v_PercentCodedChar, 1, 2); + v_Char := oct2char(hex2oct(str2hex(v_HexCode))); + v_Url := replace(v_Url, v_Pos, 3, v_Char); + } else { + break; + } + } + return v_Url; + } + + /* + * @desc returns p_Char if it is not a reserved character or the encoded value + * @param p_Char + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_URL_Encoding_SingleChar(Char1_Type p_Char) return charstring + { + var Char1List_Type v_ReservedChars := {":", "/", "?", "#", "[", "]", "@", "!", "$", "&", "'", "(", ")", "*", "+", ",", ";", "="}; + var charstring v_EncodedChar; + var integer i; + for (i:=0; i < lengthof(v_ReservedChars); i:=i+1) { + if (v_ReservedChars[i] == p_Char) { + v_EncodedChar := "%" & oct2str(char2oct(p_Char)); + return v_EncodedChar; + } + } + return p_Char; + } + + /* + * @desc apply URL-encoded (or "percent-encoded") URL: + * reserved characters acc. to RFC 3986 are replaced by their percent-code + * @param p_Url + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_URL_Encoding(charstring p_Url) return charstring + { + var charstring v_EncodedUrl := ""; + var integer i; + + for (i:=0; i < lengthof(p_Url); i:=i+1) { + v_EncodedUrl := v_EncodedUrl & fl_URL_Encoding_SingleChar(p_Url[i]); + } + return v_EncodedUrl; + } + +} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS/IMS_CommonFunctions.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_CommonFunctions.ttcn new file mode 100644 index 0000000..04d9a89 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_CommonFunctions.ttcn @@ -0,0 +1,275 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-05-01 13:53:52 +0200 (Thu, 01 May 2014) $ +// $Rev: 11225 $ +/******************************************************************************/ + +module IMS_CommonFunctions { + + import from CommonDefs all; + import from IP_ASP_TypeDefs all; + import from IMS_ASP_TypeDefs all; + import from IMS_ASP_Templates all; + import from NAS_AuthenticationCommon all; + import from LibSip_Common all; + import from IMS_CommonTemplates all; + import from IMS_SIP_Templates all; + + //**************************************************************************** + // security/authentication functions: + //---------------------------------------------------------------------------- + + // function to calculate the MD5 Message-Digest Algorithm according to RFC 1321 + external function fx_MD5_Hex(octetstring p_Data) return octetstring; + + /* + * @desc Convert a bitstring into its Base64 representation + * Adapted from Java Base64 implementation in en.wikibooks.org + * @param p_Bitstring + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_Bitstring2Base64 (bitstring p_Bitstring) return charstring + { + const charstring tsc_Base64Table := // The 64 encoding characters + "ABCDEFGHIJKLMNOP" & + "QRSTUVWXYZabcdef" & + "ghijklmnopqrstuv" & + "wxyz0123456789+/"; + var octetstring v_S := bit2oct(p_Bitstring); // String to be encoded + var bitstring v_BS; + var charstring v_R := ""; // Result encoded string + var charstring v_P := ""; // Padding + var integer v_C := lengthof(v_S) mod 3; + var integer v_Idx; + + // Add right zero pad to make string a multiple of 3 characters + if (v_C > 0){ + while(v_C < 3){ + v_P := v_P & "="; + v_S := v_S & '00'O; + v_C := v_C + 1; + } + } + // Run over the bitstring + v_BS := oct2bit(v_S); + for (v_C := 0; v_C < lengthof(v_BS) / 6; v_C := v_C + 1) { + v_Idx := bit2int(substr(v_BS, v_C*6, 6)); + v_R := v_R & tsc_Base64Table[v_Idx]; + } + // Now return result considering padding + return substr(v_R, 0, (lengthof(v_R) - lengthof(v_P))) & v_P; + } + + /* + * @desc IMS specifc wrapper function for f_AuthenticationInit + * @param p_Rand + * @param p_AuthenticationError (default value: noError) + * @return Common_AuthenticationParams_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_AuthenticationInit(template (value) B128_Type p_Rand, + AuthenticationError_Type p_AuthenticationError := noError) return Common_AuthenticationParams_Type + { + var Common_AuthenticationParams_Type v_AuthenticationParams := valueof(cs_CommonAuthParams_Init(p_Rand)); + return f_AuthenticationInit(v_AuthenticationParams, p_AuthenticationError); // as defined for NAS (NAS_AuxiliaryDefsAndFunctions) + } + + /* + * @desc check digest response sent by the UE + * @param p_Method (default value: "REGISTER") + * @param p_DigestResponse + * @param p_XRES + * @param p_XRESLength .. length of XRES in octets + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_Authorization_CheckDigestResponse(charstring p_Method := "REGISTER", + CommaParam_List p_DigestResponse, + bitstring p_XRES, + integer p_XRESLength) return boolean + { /* input is the comma separated parameter list: digestResponse from the Authorization header and the value of XRES calculated in ts_AuthenticationInit + This function calculates the digest response (v_RequestDigest) for p_XRES according to RFC 2617 and compares it with the response received from the UE (v_Dresponse) */ + /* @sic R5s130794 change 6: additional parameter p_Method to allow function to be used for HTTP Digest XCAP authentication sic@ */ + + var octetstring v_METHOD := char2oct(p_Method); + var octetstring v_Username := char2oct(f_SIP_CommaParamList_GetParamValue (p_DigestResponse, "username")); + var octetstring v_Realm := char2oct(f_SIP_CommaParamList_GetParamValue (p_DigestResponse, "realm")); + var octetstring v_DigestUri := char2oct(f_SIP_CommaParamList_GetParamValue (p_DigestResponse, "uri")); + var octetstring v_Nonce := char2oct(f_SIP_CommaParamList_GetParamValue (p_DigestResponse, "nonce")); + var octetstring v_NC := char2oct(f_SIP_CommaParamList_GetParamValue (p_DigestResponse, "nc")); + var octetstring v_CNonce := char2oct(f_SIP_CommaParamList_GetParamValue (p_DigestResponse, "cnonce")); + var octetstring v_Qop := char2oct(f_SIP_CommaParamList_GetParamValue (p_DigestResponse, "qop")); + + var octetstring v_Passwd := substr(bit2oct(p_XRES), 0, p_XRESLength); // @sic R5s120907 sic@ + var octetstring v_Dresponse := str2oct(f_SIP_CommaParamList_GetParamValue (p_DigestResponse, "response")); + + var octetstring v_Secret; + var octetstring v_HA2; + var octetstring v_Data; + var octetstring v_RequestDigest; + + var octetstring v_A1; + var octetstring v_A2; + var octetstring v_SecretData; + + // RFC 2617 3.2.2.2 + // A1 = unq(username-value) ":" unq(realm-value) ":" passwd + v_A1 := v_Username & tsc_COLON_HEX & v_Realm & tsc_COLON_HEX & v_Passwd; + + // H(A1) + v_Secret := char2oct(f_StringToLower(oct2str(fx_MD5_Hex(v_A1)))); + + // RFC 2617 3.2.2.3 + // A2 = Method ":" digest-uri-value + v_A2 := v_METHOD & tsc_COLON_HEX & v_DigestUri; + v_HA2 := char2oct(f_StringToLower(oct2str(fx_MD5_Hex(v_A2)))); + + // RFC 2617 3.2.2.1 + // unq(nonce-value) + // ":" nc-value + // ":" unq(cnonce-value) + // ":" unq(qop-value) + // ":" H(A2) + + v_Data := v_Nonce & tsc_COLON_HEX & v_NC & tsc_COLON_HEX & v_CNonce & tsc_COLON_HEX & v_Qop & tsc_COLON_HEX & v_HA2; + + //now apply KD function described in RFC 2617 section 3.2.1 + //KD(secret, data) = H(concat(secret, ":", data)) + v_SecretData := v_Secret & tsc_COLON_HEX & v_Data; + v_RequestDigest := fx_MD5_Hex(v_SecretData); + + return (v_RequestDigest == v_Dresponse); + } + + //**************************************************************************** + // auxilliary functions: + //---------------------------------------------------------------------------- + /* + * @desc convert transport protocol to string to be used in IMS messages + * @param p_Protocol + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_ConvertTransportProtocolToString(InternetProtocol_Type p_Protocol) return charstring + { + var charstring v_ProtocolString := ""; + + select (p_Protocol) { + case (tcp) { + v_ProtocolString := "TCP"; + } + case (udp) { + v_ProtocolString := "UDP"; + } + } + return v_ProtocolString; + } + + + /* + * @desc return routing information for DL data corresponding to the routing information received in UL; + * NOTE: in DL we never send any IP addresses + * @param p_RoutingInfo_UL + * @return template (value) IMS_RoutingInfo_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_RoutingInfo_ULtoDL(IMS_RoutingInfo_Type p_RoutingInfo_UL) return template (value) IMS_RoutingInfo_Type + { + return cs_IMS_RoutingInfo(p_RoutingInfo_UL.Protocol, + p_RoutingInfo_UL.Security, + p_RoutingInfo_UL.UE_Address, // may be omit + p_RoutingInfo_UL.NW_Address); // may be omit + } + + //---------------------------------------------------------------------------- + /* + * @desc calculate timer tolerance for IMS + * @param p_TimerVal + * @return float .. timer value + * @status APPROVED (IMS) + */ + function fl_IMS_TimerTolerance(float p_TimerVal) return float + { + return p_TimerVal * 0.1; + } + + //---------------------------------------------------------------------------- + /* + * @desc to calculate lower bound of timer tolerance for IMS + * @param p_Timer + * @return float + * @status APPROVED (IMS) + */ + function f_IMS_SetTimerToleranceMin(float p_Timer) return float + { + return p_Timer - fl_IMS_TimerTolerance(p_Timer); + } + + //---------------------------------------------------------------------------- + /* + * @desc to calculate upper bound of timer tolerance for IMS + * @param p_Timer + * @return float + * @status APPROVED (IMS) + */ + function f_IMS_SetTimerToleranceMax(float p_Timer) return float + { + return p_Timer + fl_IMS_TimerTolerance(p_Timer); + } + + //---------------------------------------------------------------------------- + /* + * @desc build up home network domain name derived from IMSI acc. to 23.003 clause 13.2 + * @param p_IMSI (default value: px_IMSI_Def) + * @param p_LengthOfMNC (default value: 2) + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_HomeDomainNameDerivedFromIMSI(hexstring p_IMSI, + integer p_LengthOfMNC := 2) return charstring + { /* NOTE: the length of the MNC in general cannot be derived from the IMSI (some countries have MNCs with 2 and 3 digits; see e.g "Annex to ITU Operational Bulletin No. 992 - 15.XI.2011") + * instead the length of the MNC is stored in the EF-AD file on the SIM card (see 31.102 cl. 4.2.18) and acc. to 31.121 the MNC has 2 digits. */ + var charstring v_IMSI := hex2str(p_IMSI); + var charstring v_MCC := substr(v_IMSI, 0, 3); + var charstring v_MNC := substr(v_IMSI, 3, p_LengthOfMNC); // @sic R5s140356: index = 3 sic@ + + if (p_LengthOfMNC == 2) { + v_MNC := "0" & v_MNC; + } + return "ims.mnc" & v_MNC & ".mcc" & v_MCC & ".3gppnetwork.org"; + } + + /* + * @desc build up Private User Identity derived from IMSI acc. to 23.003 clause 13.3 + * @param p_IMSI (default value: px_IMSI_Def) + * @param p_LengthOfMNC (default value: 2) + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PrivateUserIdentityDerivedFromIMSI(hexstring p_IMSI, + integer p_LengthOfMNC := 2) return charstring + { + var charstring v_IMSI := hex2str(p_IMSI); + return v_IMSI & "@" & f_IMS_HomeDomainNameDerivedFromIMSI(p_IMSI, p_LengthOfMNC); + } + + /* + * @desc build up Public User Identity derived from IMSI acc. to 23.003 clause 13.4B + * @param p_IMSI (default value: px_IMSI_Def) + * @param p_LengthOfMNC (default value: 2) + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_TemporaryPublicUserIdentity(hexstring p_IMSI, + integer p_LengthOfMNC := 2) return charstring + { + return "sip:" & f_IMS_PrivateUserIdentityDerivedFromIMSI(p_IMSI, p_LengthOfMNC); + } + +} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS/IMS_CommonTemplates.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_CommonTemplates.ttcn new file mode 100644 index 0000000..f88f05a --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_CommonTemplates.ttcn @@ -0,0 +1,317 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-06-23 18:15:44 +0200 (Mon, 23 Jun 2014) $ +// $Rev: 11767 $ +/******************************************************************************/ + +module IMS_CommonTemplates { + + import from CommonDefs all; + import from LibSip_Common all; + + /* + * @desc concat two semicolon param lists + * @param p_SemicolonParam_List1 + * @param p_SemicolonParam_List2 + * @return template (value) SemicolonParam_List + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SemicolonParam_List_Concat_TX(template (omit) SemicolonParam_List p_SemicolonParam_List1, + template (value) SemicolonParam_List p_SemicolonParam_List2) return template (value) SemicolonParam_List + { + var template (value) SemicolonParam_List v_SemicolonParam_List; + var integer i := 0; + var integer k; + + if (isvalue(p_SemicolonParam_List1)) { /* @sic R5s140580 change 3 sic@ */ + v_SemicolonParam_List := valueof(p_SemicolonParam_List1); + i := lengthof(v_SemicolonParam_List); + } + for (k := 0; k < lengthof(p_SemicolonParam_List2); k := k + 1) { /* @sic R5s140580 change 3 sic@ */ + v_SemicolonParam_List[i+k] := p_SemicolonParam_List2[k]; + } + return v_SemicolonParam_List; + } + + /* + * @desc Add element to semi colon seperated parameter list + * @param p_SemicolonParam_List + * @param p_GenericParam + * @return template (value) SemicolonParam_List + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SemicolonParam_List_Add_TX(template (omit) SemicolonParam_List p_SemicolonParam_List, + template (value) GenericParam p_GenericParam) return template (value) SemicolonParam_List + { + return f_SemicolonParam_List_Concat_TX(p_SemicolonParam_List, {p_GenericParam}); + } + + /******************************************************************************/ + /* AuxiliaryTemplates */ + /******************************************************************************/ + /* + * @desc return parameter value ("" if none) + * @param p_GenericParam + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_GenericParam_GetValue(template (omit) GenericParam p_GenericParam) return charstring + { + var GenValue v_GenValue; + + if (ispresent(p_GenericParam.paramValue)) { + v_GenValue := valueof(p_GenericParam.paramValue); + if (ischosen(v_GenValue.quotedString)) { + return v_GenValue.quotedString; + } + else { + return v_GenValue.tokenOrHost; + } + } + return ""; + } + + // Generic parameter as used in SemicolonParam_List, AmpersandParam_List, CommaParam_List: + + template (value) GenValue cs_GenValueToken(template (value) charstring p_ParamValue) := {tokenOrHost := p_ParamValue}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (value) GenValue cs_GenValueQuoted(template (value) charstring p_ParamValue) := {quotedString := p_ParamValue}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) GenValue cr_GenValueToken(template (present) charstring p_ParamValue) := {tokenOrHost := p_ParamValue}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) GenValue cr_GenValueQuoted(template (present) charstring p_ParamValue) := {quotedString := p_ParamValue}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) GenValue cr_GenValue(template (present) charstring p_ParamValue) := (cr_GenValueToken(p_ParamValue), cr_GenValueQuoted(p_ParamValue)); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + template GenValue cr_GenValue_None := (cr_GenValue(""), omit); /* i.e. either an empty string or omit + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + /* + * @desc build GenValue considering that value my be omit + * @param p_ParamValue + * @return template (omit) GenValue + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_GenValue_TX(template (omit) charstring p_ParamValue) return template (omit) GenValue + { + var template (omit) GenValue v_GenValue := omit; + + if (isvalue(p_ParamValue)) { + v_GenValue := cs_GenValueToken(valueof(p_ParamValue)); + } + return v_GenValue; + } + + template (value) GenericParam cs_GenericParam_Common(charstring p_Id, + template (omit) GenValue p_GenValue := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + id := p_Id, + paramValue := p_GenValue + }; + + template (value) GenericParam cs_GenericParamQuoted(charstring p_Id, + charstring p_ParamValue) := cs_GenericParam_Common(p_Id, cs_GenValueQuoted(p_ParamValue)); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + template (value) GenericParam cs_GenericParamToken(charstring p_Id, + charstring p_ParamValue) := cs_GenericParam_Common(p_Id, cs_GenValueToken(p_ParamValue)); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + template (value) GenericParam cs_GenericParam(charstring p_Id, + template (omit) charstring p_ParamValue := omit) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cs_GenericParam_Common(p_Id, fl_GenValue_TX(p_ParamValue)); // @sic R5w140111 sic@ + + + + template (present) GenericParam cr_GenericParam_Common(template (present) charstring p_Id := ?, + template GenValue p_GenValue := *) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + id := p_Id, + paramValue := p_GenValue + }; + + + template (present) GenericParam cr_GenericParam(template (present) charstring p_Id, + template (present) charstring p_ParamValue) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cr_GenericParam_Common(p_Id, cr_GenValue(p_ParamValue)); // @sic R5w140111 sic@ + + template (present) GenericParam cr_GenericParam_Any := cr_GenericParam_Common(?, *); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + /* + * @desc build GenericParam to be used as receive template with same id and value as given send template + * @param p_GenericParamTX + * @return template (present) GenericParam + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_GenericParam_AsTX(template (value) GenericParam p_GenericParamTX) return template (present) GenericParam + { + var template GenValue v_GenValue; + + if (ispresent(p_GenericParamTX.paramValue)) { + v_GenValue := cr_GenValue(f_GenericParam_GetValue(p_GenericParamTX)); + } else { + v_GenValue := omit; + } + return cr_GenericParam_Common(p_GenericParamTX.id, v_GenValue); + } + + + //---------------------------------------------------------------------------- + // templates to check SemicolonParam_List for a specific parameter + + template (present) SemicolonParam_List cr_SemicolonParam_List_OneSpecificParam(charstring p_Id, + template GenValue p_GenValue := *) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5w140111: GenValue sic@ */ + cr_GenericParam_Common(p_Id, p_GenValue), + * + }; + + template (present) SemicolonParam_List cr_SemicolonParam_List_OneSpecificParamWithValue(charstring p_Id, + template (present) charstring p_ParamValue := ?) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cr_SemicolonParam_List_OneSpecificParam(p_Id, cr_GenValue(p_ParamValue)); + + template (present) SemicolonParam_List cr_SemicolonParam_List_OneSpecificParamNoValue(charstring p_Id) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cr_SemicolonParam_List_OneSpecificParam(p_Id, omit); + + /******************************************************************************/ + /* AuxiliaryFunctions */ + /******************************************************************************/ + + type set of GenericParam GenericParamList_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + //**************************************************************************** + // auxilliary functions to access comma, semicolon or ampersand separated lists + //---------------------------------------------------------------------------- + /* + * @desc common function to get specific parameter from GenericParamList + * @param p_ParamList + * @param p_ParamId + * @return template (omit) GenericParam + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_SIP_GenericParamList_GetParam(GenericParamList_Type p_ParamList, + charstring p_ParamId) return template (omit) GenericParam + { /* @sic R5w140111: GenValue sic@ */ + var charstring v_ParamId; + var integer v_NoOfParams := lengthof(p_ParamList); + var integer i; + + for (i:=0; i < v_NoOfParams; i := i+1) { + v_ParamId := f_StringToLower(p_ParamList[i].id); + if (v_ParamId == p_ParamId) { + return p_ParamList[i]; + } + } + return omit; + } + + /* + * @desc common function to get value of specific parameter from GenericParamList + * @param p_ParamId + * @param p_GenericParam + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_SIP_GenericParamCheckAndGetValue(charstring p_ParamId, + template (omit) GenericParam p_GenericParam) return charstring + { /* @sic R5w140111: GenValue sic@ */ + if (not isvalue(p_GenericParam)) { + f_ErrorLog(__FILE__, __LINE__, "ParamList does not contain '" & p_ParamId & "'"); + } + return f_GenericParam_GetValue(p_GenericParam); + } + + /* + * @desc return given parameter in parameter list (or omit if not present) + * @param p_ParamList + * @param p_ParamId + * @return template (omit) GenericParam + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_CommaParamList_GetParam(template (omit) CommaParam_List p_ParamList, + charstring p_ParamId) return template (omit) GenericParam + { /* @sic R5w140111: GenValue sic@ */ + var CommaParam_List v_ParamList; + var GenericParamList_Type v_GenericParamList := {}; + var integer i; + + if (isvalue(p_ParamList)) { + v_ParamList := valueof(p_ParamList); + for (i:=0; i < lengthof(v_ParamList); i := i+1) {v_GenericParamList[i] := v_ParamList[i];} + } + return fl_SIP_GenericParamList_GetParam(v_GenericParamList, p_ParamId); + } + + /* + * @desc return value of given parameter in parameter list + * @param p_ParamList + * @param p_ParamId + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_CommaParamList_GetParamValue(template (omit) CommaParam_List p_ParamList, + charstring p_ParamId) return charstring + { /* @sic R5w140111: GenValue sic@ */ + var template (omit) GenericParam v_GenericParam := f_SIP_CommaParamList_GetParam(p_ParamList, p_ParamId); + return fl_SIP_GenericParamCheckAndGetValue(p_ParamId, v_GenericParam); + } + + /* + * @desc return given parameter in parameter list (or omit if not present) + * @param p_ParamList + * @param p_ParamId + * @return template (omit) GenericParam + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_SemicolonParamList_GetParam(template (omit) SemicolonParam_List p_ParamList, + charstring p_ParamId) return template (omit) GenericParam + { /* @sic R5w140111: GenValue sic@ */ + var SemicolonParam_List v_ParamList; + var GenericParamList_Type v_GenericParamList := {}; + var integer i; + + if (isvalue(p_ParamList)) { + v_ParamList := valueof(p_ParamList); + for (i:=0; i < lengthof(v_ParamList); i := i+1) {v_GenericParamList[i] := v_ParamList[i];} + } + return fl_SIP_GenericParamList_GetParam(v_GenericParamList, p_ParamId); + } + + /* + * @desc return value of given parameter in parameter list + * @param p_ParamList + * @param p_ParamId + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_SemicolonParamList_GetParamValue(template (omit) SemicolonParam_List p_ParamList, + charstring p_ParamId) return charstring + { /* @sic R5w140111: GenValue sic@ */ + var template (omit) GenericParam v_GenericParam := f_SIP_SemicolonParamList_GetParam(p_ParamList, p_ParamId); + return fl_SIP_GenericParamCheckAndGetValue(p_ParamId, v_GenericParam); + } + + function f_SIP_AmpersandParamList_GetParam(template (omit) AmpersandParam_List p_ParamList, + charstring p_ParamId) return template (omit) GenericParam + { /* @sic R5w140111: GenValue sic@ */ + var AmpersandParam_List v_ParamList; + var GenericParamList_Type v_GenericParamList := {}; + var integer i; + + if (isvalue(p_ParamList)) { + v_ParamList := valueof(p_ParamList); + for (i:=0; i < lengthof(v_ParamList); i := i+1) {v_GenericParamList[i] := v_ParamList[i];} + } + return fl_SIP_GenericParamList_GetParam(v_GenericParamList, p_ParamId); + } + + function f_SIP_AmpersandParamList_GetParamValue(template (omit) AmpersandParam_List p_ParamList, + charstring p_ParamId) return charstring + { /* @sic R5w140111: GenValue sic@ */ + var template (omit) GenericParam v_GenericParam := f_SIP_AmpersandParamList_GetParam(p_ParamList, p_ParamId); + return fl_SIP_GenericParamCheckAndGetValue(p_ParamId, v_GenericParam); + } + +} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS/IMS_Component.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_Component.ttcn new file mode 100644 index 0000000..576ef73 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_Component.ttcn @@ -0,0 +1,1432 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 22:08:20 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12181 $ +/******************************************************************************/ + +module IMS_Component { + import from LibSip_Common all; + import from LibSip_SIPTypesAndValues all; + import from CommonDefs all; + import from CommonIP all; + import from Parameters all; + import from IMS_ASP_TypeDefs all; + import from IMS_PTC_CoordMsg all; + import from IP_ASP_TypeDefs all; + import from IP_ASP_Common all; + import from IMS_ASP_Templates all; + import from IMS_CommonDefs all; + import from IMS_CommonFunctions all; + import from IMS_CommonParameters all; + import from IMS_SIP_Templates all; + import from NAS_AuthenticationCommon all; + import from UpperTesterPtcToMtcDefs all; // all messages being defined to communicate with the upper tester; port definitions + + type enumerated IMS_PTC_Handling_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + testcaseSpecificHandling, + defaultHandling + }; + + type record IMS_PTC_Ctrl_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + default Default, /* default behaviour being activated on IMS PTC */ + boolean TestBody, /* true: => fail may be assigend + * false: => inconc is assigned instead of fail */ + boolean BlockUlDataInDefault /* @sic R5s140780 - MCC160 Implementation sic@ + * true: => ports IMS_Server and IMS_Client are not handle by default handler + * i.e. any messages coming up at these ports are stored until there are explicit receive statements in the test case + * false: => UL data may cause test case fail/inconc */ + }; + + type record IMS_PTC_SecurityInfo_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + IPsec_IntegrityAlgorithm_Type IntegrityAlgorithm, + IPsec_CipheringAlgorithm_Type CipheringAlgorithm, + IMS_ProtectedPorts_Type ProtectedPorts optional, + IMS_SPIs_Type SPIs optional, + charstring Nonce optional, + B32_128_Type XRES optional, + integer XRESLength optional // @sic R5s120907 sic@ + }; + + type enumerated IMS_UriInfo_UriType_Type { firstId, secondId, thirdId, defaultId, registrationId, emergencyId, dialogLocalId, dialogRemoteId, temporaryId }; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type enumerated IMS_PTC_CseqType_Type { register, dialogRemote, dialogLocal }; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type enumerated IMS_PTC_DialogIndex_Type {firstDialog, secondDialog, thirdDialog, referDialog}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + type record IMS_PTC_RegistrationInfo_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + charstring Uri optional, /* SIP URI used for registration (can be temporary SIP URI when the UE does not have an ISIM) */ + charstring CallId optional, /* CallId used for registration (needed to check against CallId of INVITE) */ + integer Cseq + }; + + type record IMS_DialogInfo_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + @sic R5s140092 change 1.5: RemoteURI, RemoteCseq, LocalURI, LocalCseq stored in this structure sic@ */ + boolean MobileOriginated optional, /* needed e.g. to get the right route-set for re-INVITE */ + charstring RemoteTag optional, /* acc. to RFC 3261 when creating a dialog in first request there is a From tag but no To tag; + the To tag is chosen by the other send and sent in a response; in all further messages within the dialogthe same From and To tags shall be used + (=> especially in request messages (e.g. BYE) it may be necessary to use this stored value whereas in responses the values can be used as sent in the request); + NOTE: in general outside a dialog (e.g. registration) requests get a new From tag and the corresponding reponses contain a new To tag */ + charstring RemoteURI optional, /* URI of the remote side in a dialog created by INVITE */ + integer RemoteCseq optional, /* @sic R5s140235: changed to optional sic@ */ + charstring LocalTag optional, + charstring LocalURI optional, /* URI of the UE in a dialog created by INVITE */ + integer LocalCseq, + charstring CallId optional, + charstring SessionId optional + }; + + const integer tsc_IMS_NoOfDialogs := 4; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type record length(tsc_IMS_NoOfDialogs) of IMS_DialogInfo_Type IMS_PTC_DialogInfoList_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + type record IMS_PTC_DialogList_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + integer CurrentIndex, + IMS_PTC_DialogInfoList_Type Info + }; + + type record IMS_PTC_ImsInfo_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + CharStringList_Type IMPUList, /* list of all Public User Ids acc. to ISIM setting (31.121) or as stored in the HSS */ + IP_AddrInfo_Type UE_Address optional, + IP_AddrInfo_Type NW_Address optional, + InternetProtocol_Type TransportProtocol, /* transport protocol to be used for requests sent in DL + * @sic R5s120530 change 1.7 sic@ + * NOTE: in contrast to R5s120530 and acc. to rejection of R5-130765 at RAN WG5 Meeting #58 in Malta UDP is used for all requests in DL; + * nevertheless "TransportProtocol" is kept in case there are other decisions in the future */ + IPCAN_RAN_Type RanType optional, + integer UE_Release optional, /* @sic R5s130739 MCC160 implementation: new field to store the UE's release sic@ */ + boolean SigCompStarted, + charstring HomeDomainName, + charstring PrivateUserId, + SipUrl ContactUrl optional, /* contact address as provided in contact header of the REGISTER message; + to be used e.g. for Request-URI of INVITE for MT call */ + integer BranchIndex, /* internal index used to generate unique branches */ + integer CallIdCnt, /* counter to achieve unique callids e.g. for SMS MESSAGE sent to the UE @sic R5-133705 sic@ */ + IMS_PTC_RegistrationInfo_Type Registration, + IMS_PTC_DialogList_Type Dialog, /* @sic R5s140092 change 1.5: two sets of dialogs sic@ */ + IMS_SecurityScheme_Type SecurityScheme /* IMS security or GIBA acc. to 34.229-2 Table A.6a; depends on PICS setting and may depend on test case */ + }; + + type record IMS_Global_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + PDN_Index_Type PdnIndex, /* @sic R5s130651: new variable sic@ */ + IMS_PTC_Ctrl_Type Ctrl, + IMS_PTC_SecurityInfo_Type Security, + IMS_PTC_ImsInfo_Type ImsInfo + }; + + type component IMS_PTC { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + var IMS_Global_Type vc_IMS_Global; + + // port to RAT components + port IMS_IPCAN_CO_ORD_PORT IPCAN; + port IMS_IPCAN_CO_ORD_PORT OtherIPCAN; /* @sic R5-142919 sic@ */ + + // port to other IMS PTC (other PDN) + port IMS_IMS_CO_ORD_PORT OtherPDN; + + // ports connected to IP: + port IMS_IP_CTRL_PORT IMS_CTRL; + port IMS_IP_SERVER_PORT IMS_Server; + port IMS_IP_CLIENT_PORT IMS_Client; + + // ports for MMI (used by IMS CC test suite) + port UT_PTC_MTC_PORT MMI; + }; + + //---------------------------------------------------------------------------- + + template (value) IMS_PTC_SecurityInfo_Type cs_IMS_SecurityInfo_Init := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + IntegrityAlgorithm := px_IMS_IPSecAlgorithm, + CipheringAlgorithm := px_IMS_CiphAlgo_Def, + ProtectedPorts := omit, + SPIs := omit, + Nonce := omit, + XRES := omit, + XRESLength := omit // @sic R5s120907 sic@ + }; + + template (value) IMS_PTC_RegistrationInfo_Type cs_IMS_RegistrationInfo_Init := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + Uri := omit, + CallId := omit, + Cseq := 0 + }; + + template (value) IMS_DialogInfo_Type cs_IMS_DialogInfo_Init := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + MobileOriginated := omit, + RemoteTag := omit, + RemoteURI := omit, + RemoteCseq := omit, /* @sic R5s140235: changed to omit sic@ */ + LocalTag := omit, + LocalURI := omit, + LocalCseq := 0, + CallId := omit, + SessionId := omit + }; + + /* + * @desc initialise dialog status information + * @return template (value) IMS_PTC_DialogList_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_IMS_PTC_DialogList_Init() return template (value) IMS_PTC_DialogList_Type + { + var template (value) IMS_PTC_DialogList_Type v_DialogList; + var integer i; + v_DialogList.CurrentIndex := 0; + for (i:=0; i in this function we will ensure that in the 4-tuple of SPIs needed for IMS in a given PDN all values are distinct. + * In addition e.g. in case of re-authentication the network's SPIs shall be different than the previous ones. + * @param p_NewSPI_us + * @param p_NewSPI_uc + * @param p_PrevSPI_ps (default value: omit) + * @param p_PrevSPI_pc (default value: omit) + * @return IMS_SPIs_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_SPIs_Init(integer p_NewSPI_us, + integer p_NewSPI_uc, + template (omit) integer p_PrevSPI_ps := omit, + template (omit) integer p_PrevSPI_pc := omit) runs on IMS_PTC return IMS_SPIs_Type + { /* @sic R5s130266 change 1.3, 4, 5 - MCC160 Implementation: taking into account the previous SPIs of the network side sic@ */ + /* p_PrevSPI_ps, p_PrevSPI_pc are omit at initial registration */ + + var IMS_SPIs_Type v_SPIs := valueof(cs_IMS_SPIs_Init(p_NewSPI_us, p_NewSPI_uc)); + var integer v_Index := enum2int(vc_IMS_Global.PdnIndex); + var integer v_SPI := 256 + (v_Index * 1024); /* According to RFC 2406, SPI values from 0 to 255 are reserved + @sic R5s130651: v_Index used to get different SPIs for different PDNs sic@ */ + if (p_NewSPI_uc == p_NewSPI_us) { + FatalError(__FILE__, __LINE__, "SPIs of UE side have the same values"); + } + + while (not isvalue(v_SPIs.SPI_ps) or not isvalue(v_SPIs.SPI_pc)) { + if ((v_SPI != p_NewSPI_uc) and (v_SPI != p_NewSPI_us) and // new value shall be neither equal to the UE's values ... + not match(v_SPI, p_PrevSPI_pc) and not match(v_SPI, p_PrevSPI_ps)) { // ... nor to the network's previous values + if (not isvalue(v_SPIs.SPI_ps)) { + v_SPIs.SPI_ps := v_SPI; + } else { + v_SPIs.SPI_pc := v_SPI; + } + } + v_SPI := v_SPI + 1; + } + return v_SPIs; + } + + //**************************************************************************** + /* + * @desc initialise or re-initialise security at the IMS PTC + * @param p_AuthenticationParams (default value: omit) + * @param p_Port_us + * @param p_Port_uc + * @param p_SPI_us + * @param p_SPI_uc + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_Security_Init(template (omit) Common_AuthenticationParams_Type p_AuthenticationParams := omit, + PortNumber_Type p_Port_us, + PortNumber_Type p_Port_uc, + IPsec_SPI_Type p_SPI_us, + IPsec_SPI_Type p_SPI_uc) runs on IMS_PTC + { /* @sic R5s130266 change 1.3, 4, 5 - MCC160 Implementation: taking into account SPIs for re-authentication sic@ */ + + var Common_AuthenticationParams_Type v_AuthenticationParams; + var template (omit) IPsec_SPI_Type v_PrevSPI_ps := omit; + var template (omit) IPsec_SPI_Type v_PrevSPI_pc := omit; + var PortNumber_Type v_Port_pc := tsc_IMS_Port_pc; + + if (isvalue(p_AuthenticationParams)) { + v_AuthenticationParams := valueof(p_AuthenticationParams); + vc_IMS_Global.Security.Nonce := f_Bitstring2Base64(v_AuthenticationParams.RandValue & v_AuthenticationParams.AUTN); + vc_IMS_Global.Security.XRES := v_AuthenticationParams.XRES; + } + if (isvalue(vc_IMS_Global.Security.SPIs)) { // => re-authentication + v_PrevSPI_ps := vc_IMS_Global.Security.SPIs.SPI_ps; + v_PrevSPI_pc := vc_IMS_Global.Security.SPIs.SPI_pc; + } + vc_IMS_Global.Security.SPIs := fl_SPIs_Init(p_SPI_us, p_SPI_uc, v_PrevSPI_ps, v_PrevSPI_pc); + + if (isvalue(vc_IMS_Global.Security.ProtectedPorts)) { // => re-authentication + if (vc_IMS_Global.Security.ProtectedPorts.Port_pc == tsc_IMS_Port_pc) { + v_Port_pc := tsc_IMS_Port_pc_2; // new client port + } + } + vc_IMS_Global.Security.ProtectedPorts := valueof(cs_IMS_ProtectedPorts(p_Port_us, p_Port_uc, tsc_IMS_Port_ps, v_Port_pc)); + } + + /* + * @desc release IMS security info on protected ports + * @status APPROVED (IMS, IMS_IRAT) + */ + function f_IMS_PTC_Security_Release() runs on IMS_PTC + { + vc_IMS_Global.Security := valueof(cs_IMS_SecurityInfo_Init); + } + + /* + * @desc return true when IMS security is started on protected ports + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_Security_IsStarted() runs on IMS_PTC return boolean + { + return isvalue(vc_IMS_Global.Security.ProtectedPorts); + } + + /* + * @desc return integrity algorithm stored at the IMS PTC + * @return IPsec_IntegrityAlgorithm_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_Security_GetIntegrityAlgorithm() runs on IMS_PTC return IPsec_IntegrityAlgorithm_Type + { + return vc_IMS_Global.Security.IntegrityAlgorithm; + } + + /* + * @desc return ciphering algorithm stored at the IMS PTC + * @return IPsec_CipheringAlgorithm_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_Security_GetCipheringAlgorithm() runs on IMS_PTC return IPsec_CipheringAlgorithm_Type + { + return vc_IMS_Global.Security.CipheringAlgorithm; + } + + /* + * @desc return NONCE stored at the IMS PTC + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_Security_GetNonce() runs on IMS_PTC return charstring + { + return vc_IMS_Global.Security.Nonce; + } + + /* + * @desc return XRES stored at the IMS PTC + * @return B32_128_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_Security_GetXRES() runs on IMS_PTC return B32_128_Type + { + return vc_IMS_Global.Security.XRES; + } + + /* + * @desc return length of XRES as stored at the IMS PTC + * @return integer + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_Security_GetXRESLength() runs on IMS_PTC return integer // @sic R5s120907 sic@ + { + return vc_IMS_Global.Security.XRESLength; + } + + /* + * @desc set info retrieved from IPCAN + * @param p_IpcanInfo + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_SetIpcanInfo(IPCAN_INFO_Type p_IpcanInfo) runs on IMS_PTC + { /* @sic R5s120907 R5s130133 additional changes sic@ */ + vc_IMS_Global.Security.XRESLength := p_IpcanInfo.AuthResLength; + vc_IMS_Global.ImsInfo.UE_Release := p_IpcanInfo.UE_Release; /* @sic R5s130739 MCC160 implementation sic@ */ + vc_IMS_Global.ImsInfo.RanType := p_IpcanInfo.RanType; + } + + /* + * @desc set RAN type + * @param p_RanType + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_SetRanType(IPCAN_RAN_Type p_RanType) runs on IMS_PTC + { + vc_IMS_Global.ImsInfo.RanType := p_RanType; + } + + /* + * @desc get UE release + * @return template (omit) integer + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_GetUE_Release() runs on IMS_PTC return template (omit) integer + { + return vc_IMS_Global.ImsInfo.UE_Release; + } + + /* + * @desc get SPIs stored at IMS PTC + * @return IMS_SPIs_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_Security_GetSPIs() runs on IMS_PTC return IMS_SPIs_Type + { + return vc_IMS_Global.Security.SPIs; + } + + /* + * @desc return security information as stored at the IMS PTC + * @return IMS_ProtectedPorts_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_Security_GetProtectedPorts() runs on IMS_PTC return IMS_ProtectedPorts_Type + { + return vc_IMS_Global.Security.ProtectedPorts; + } + + /* + * @desc Build SecurityMechanism list template from the stored security configuration to be used for sending + * @return template (value) SecurityMechanism_List + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_BuildSecurityServerParam() runs on IMS_PTC return template (value) SecurityMechanism_List + { + var IMS_PTC_SecurityInfo_Type v_Security := vc_IMS_Global.Security; + + return f_SIP_BuildSecurityServerParam(v_Security.IntegrityAlgorithm, + v_Security.CipheringAlgorithm, + int2str(v_Security.SPIs.SPI_pc), + int2str(v_Security.SPIs.SPI_ps), + int2str(v_Security.ProtectedPorts.Port_pc), + int2str(v_Security.ProtectedPorts.Port_ps)); + } + + /* + * @desc Build SecurityVerify heaader template from the stored security configuration to be used for sending + * @return template (present) SecurityVerify + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_BuildSecurityVerifyHeader() runs on IMS_PTC return template (present) SecurityVerify + { + var IMS_PTC_SecurityInfo_Type v_Security := vc_IMS_Global.Security; + + return f_SIP_BuildSecurityVerifyHeader(v_Security.IntegrityAlgorithm, + v_Security.CipheringAlgorithm, + int2str(v_Security.SPIs.SPI_pc), + int2str(v_Security.SPIs.SPI_ps), + int2str(v_Security.ProtectedPorts.Port_pc), + int2str(v_Security.ProtectedPorts.Port_ps)); + } + + /* + * @desc return true when GIBA + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_SecurityScheme_IsGiba() runs on IMS_PTC return boolean + { + return (vc_IMS_Global.ImsInfo.SecurityScheme == GIBA); + } + + /* + * @desc return true when GIBA + * @param p_SecurityScheme + */ + function f_IMS_PTC_SecurityScheme_Set(IMS_SecurityScheme_Type p_SecurityScheme) runs on IMS_PTC + { + vc_IMS_Global.ImsInfo.SecurityScheme := p_SecurityScheme; + } + + //**************************************************************************** + /* + * @desc initialise IMS PTC + * @param p_UE_Address + * @param p_NW_Address + * @param p_RegisterReq + * @param p_SigCompStarted (default value: false) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_Init(IP_AddrInfo_Type p_UE_Address, + IP_AddrInfo_Type p_NW_Address, + template (omit) REGISTER_Request p_RegisterReq := omit, + boolean p_SigCompStarted := false) runs on IMS_PTC + { /* @sic R5s130756 change 14, 15 sic@ */ + var REGISTER_Request v_RegisterReq; + var InternetProtocol_Type v_TransportProtocol := udp; /* @sic acc. to discussions regarding rejection of R5-130765 at RAN WG5 Meeting #58 in Malta per default UDP is used for all requests in DL sic@ */ + + if (match(testcasename(), pattern "TC_8_[0-9]#(1,2)")) { /* @sic R5-131292 - TCP as normative DL transport protocol in IMS Registration test sic@ + @sic R5s130897 - distinguish IMS from LTE test cases sic@ */ + v_TransportProtocol := tcp; + } + + vc_IMS_Global.ImsInfo.UE_Address := p_UE_Address; + vc_IMS_Global.ImsInfo.NW_Address := p_NW_Address; + vc_IMS_Global.ImsInfo.TransportProtocol := v_TransportProtocol; + vc_IMS_Global.ImsInfo.SigCompStarted := p_SigCompStarted; + + if (ispresent(p_RegisterReq)) { + v_RegisterReq := valueof(p_RegisterReq); + vc_IMS_Global.ImsInfo.ContactUrl := f_MessageHeader_GetContactSipUrl(v_RegisterReq.msgHeader); + vc_IMS_Global.ImsInfo.Registration.Uri := f_SIP_SipUrl_GetPublicUserIdentity(f_Addr_Union_GetSipUrl(v_RegisterReq.msgHeader.toField.addressField)); + vc_IMS_Global.ImsInfo.Registration.CallId := v_RegisterReq.msgHeader.callId.callid; + vc_IMS_Global.ImsInfo.Registration.Cseq := v_RegisterReq.msgHeader.cSeq.seqNumber; + } + } + + /* + * @desc Get dialog index value related to given enumerated + * @param p_Index + * @return integer + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_IMS_PTC_ImsInfo_GetDialogIndexValue(template (omit) IMS_PTC_DialogIndex_Type p_Index) runs on IMS_PTC return integer + { + var integer i; + + if (isvalue(p_Index)) { + select (valueof(p_Index)) { + case (firstDialog) { i := 0; } + case (secondDialog) { i := 1; } + case (referDialog) { i := 2; } + case else { FatalError(__FILE__, __LINE__, "invalid dialog"); } + } + } else { + i := vc_IMS_Global.ImsInfo.Dialog.CurrentIndex; + } + return i; + } + + + /* + * @desc Get dialog status information for the currenct dialog + * @param p_DialogIndex + * @return IMS_DialogInfo_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_IMS_PTC_ImsInfo_GetDialog(template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex) runs on IMS_PTC return IMS_DialogInfo_Type + { + var integer i := fl_IMS_PTC_ImsInfo_GetDialogIndexValue(p_DialogIndex); + return vc_IMS_Global.ImsInfo.Dialog.Info[i]; + } + + /* + * @desc Set dialog status information for the currenct dialog + * @param p_DialogIndex + * @param p_DialogInfo + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_IMS_PTC_ImsInfo_SetDialog(template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex, + IMS_DialogInfo_Type p_DialogInfo) runs on IMS_PTC + { + var integer i := fl_IMS_PTC_ImsInfo_GetDialogIndexValue(p_DialogIndex); + vc_IMS_Global.ImsInfo.Dialog.Info[i] := p_DialogInfo; + } + + /* + * @desc return IP address which is used by the UE for IMS signalling (IPv4 or IPv6) + * @return IP_AddrInfo_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_UE_Address_Get() runs on IMS_PTC return IP_AddrInfo_Type + { + return vc_IMS_Global.ImsInfo.UE_Address; + } + + /* + * @desc return network address stored at the IMS PTC + * @return IP_AddrInfo_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_NW_Address_Get() runs on IMS_PTC return IP_AddrInfo_Type + { + return vc_IMS_Global.ImsInfo.NW_Address; + } + + /* + * @desc return IP type for network address stored at the IMS PTC + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_NW_Address_GetTypeStr() runs on IMS_PTC return charstring + { + return f_IP_AddrInfo_TypeStr(vc_IMS_Global.ImsInfo.NW_Address); + } + + /* + * @desc return network address stored at the IMS PTC as charstring + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_NW_Address_GetAddrStr() runs on IMS_PTC return charstring + { + if (not isvalue(vc_IMS_Global.ImsInfo.NW_Address)) { + FatalError(__FILE__, __LINE__, "NW address not initialiased yet"); + } + return f_IP_AddrInfo_AddrStr(vc_IMS_Global.ImsInfo.NW_Address); + } + + /* + * @desc return address of the simulated remote UE as charstring + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_RemoteAddress_GetAddrStr() runs on IMS_PTC return charstring + { /* @sic R5s130681 additional change sic@ */ + var PDN_AddressInfo_Type v_PDN_AddressInfo := f_PDN_AddressInfo_Get(vc_IMS_Global.PdnIndex); + var IP_AddrInfo_Type v_UE_Address := f_IMS_PTC_UE_Address_Get(); + var charstring v_RemoteAddress; + + if (ischosen(v_UE_Address.V4)) { + v_RemoteAddress := v_PDN_AddressInfo.Remote_IPAddressIPv4; + } else { + v_RemoteAddress := v_PDN_AddressInfo.Remote_IPAddressIPv6; + } + return v_RemoteAddress; + } + + /* + * @desc return P-CSCF address (FQDN) stored at the IMS PTC + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_Pcscf_Get() runs on IMS_PTC return charstring + { /* @sic R5-144747 removal of px_IMS_Pcscf and px_IMS_Pcscf_Emg sic@ */ + return f_IMS_PTC_NW_Address_GetAddrStr(); + } + + /* + * @desc check validity of the host/port information used by the UE + * @param p_HostPort + * @param p_Port (default value: *) + * @param p_AllowFQDN (default value: true) + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_CheckHostPortForIPAddrOrFQDN(HostPort p_HostPort, + template integer p_Port := *, + boolean p_AllowFQDN := true) runs on IMS_PTC return boolean + { /* p_AllowFQDN .. shall be set to false e.g. for condition A6 of A.2.1 */ + if (p_AllowFQDN and match(p_HostPort, cr_HostPort(f_IMS_PTC_ImsInfo_GetHomeDomainName(), p_Port))) { // => FQDN + return true; + } + return (match(p_HostPort.portField, p_Port) and // check port + f_IMS_IpAddrMatch(f_IMS_PTC_UE_Address_Get(), p_HostPort.host)); // check IP address taking into account that formats may be different + } + + + /* + * @desc Check SipUrl (e.g. in Contact header) to be "SIP URI with IP address or FQDN and protected server port of UE or GRUU as returned by the SS in registration" + * @param p_SipUrl + * @param p_Port (default value: *) + * @param p_AllowGRUU (default value: false) + * @param p_AllowFQDN (default value: true) + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_CheckSipUrlForIPAddrOrFQDNOrGRUU(SipUrl p_SipUrl, + template integer p_Port := *, + boolean p_AllowGRUU := false, + boolean p_AllowFQDN := true) runs on IMS_PTC return boolean + { /* @sic R5s130195 BASELINE MOVING 2013: change of SipUrl sic@ */ + var template (present) SipUrl v_ExpectedSipUrlGRUU; + var HostPort v_HostPort; + + if (not ischosen(p_SipUrl.components.sip)) { + return false; + } + v_HostPort := p_SipUrl.components.sip.hostPort; + + if (p_AllowGRUU and false) { // @sic R5s130133 additional change 4; FFS sic@ + v_ExpectedSipUrlGRUU := f_SIP_BuildSipUri_RX("???", p_Port); + /* !!!! acc. to 24.229 cl. 5.4.7A.2 it seems that GRUU is a SIP URI of a 'normal' public user id with specific SIP URI parameter "gr"; + * !!!! => we need a GRUU specific template for the SipUrl with appropriate parameters; furthermore the GRUU information needs to be stored at the IMS PTC + * !!!! FFS !!!!*/ + if (match(p_SipUrl, v_ExpectedSipUrlGRUU)) { + return true; + } + } + return f_IMS_PTC_CheckHostPortForIPAddrOrFQDN(v_HostPort, p_Port, p_AllowFQDN); + } + + /* + * @desc RAN type as stored at the IMS PTC; at the beginning the RAN type is omit => '?' is returned in this case + * @return template (present) charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_RanType_GetString() runs on IMS_PTC return template (present) charstring + { // when RanType is not explicitly initialised it is omit as initialised; => we check for presence only + if (isvalue(vc_IMS_Global.ImsInfo.RanType)) { + return f_IMS_RANType2Charstring(vc_IMS_Global.ImsInfo.RanType); + } + return ?; + } + + /* + * @desc return true when SigComp is started + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_SigCompStarted() runs on IMS_PTC return boolean + { + return vc_IMS_Global.ImsInfo.SigCompStarted; + } + + /* + * @desc return sig comp parameters or omit when sig comp is not started + * @return template (omit) GenericParam + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_GetSigCompParam() runs on IMS_PTC return template (omit) GenericParam + { + if (vc_IMS_Global.ImsInfo.SigCompStarted) { + return cs_SigCompParam; + } else { + return omit; + } + } + + //---------------------------------------------------------------------------- + /* + * @desc return specific public user id e.g. as used for registration + * @param p_IdType + * @param p_DialogIndex (default value: omit) + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_GetURI(IMS_UriInfo_UriType_Type p_IdType, + template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex := omit) runs on IMS_PTC return charstring + { + var IMS_DialogInfo_Type v_Dialog := fl_IMS_PTC_ImsInfo_GetDialog(p_DialogIndex); + + select (p_IdType) { + case (firstId, defaultId, emergencyId) { + return vc_IMS_Global.ImsInfo.IMPUList[0]; + } + case (secondId) { + return vc_IMS_Global.ImsInfo.IMPUList[1]; + } + case (thirdId) { + return vc_IMS_Global.ImsInfo.IMPUList[2]; + } + case (registrationId) { + if (ispresent(vc_IMS_Global.ImsInfo.Registration.Uri)) { + return vc_IMS_Global.ImsInfo.Registration.Uri; + } + } + case (dialogLocalId) { + if (ispresent(v_Dialog.LocalURI)) { + return v_Dialog.LocalURI; + } + } + case (dialogRemoteId) { + if (ispresent(v_Dialog.RemoteURI)) { + return v_Dialog.RemoteURI; + } + } + case (temporaryId) { + return f_IMS_TemporaryPublicUserIdentity(px_IMSI_Def); + } + } + FatalError(__FILE__, __LINE__, "Invalid URI or URI not initialised"); + return ""; + } + + /* + * @desc return SipUrl to be used in DL + * @param p_IdType + * @param p_Port (default value: omit) + * @return template (value) SipUrl + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_GetSipUriTX(IMS_UriInfo_UriType_Type p_IdType, + template (omit) integer p_Port := omit) runs on IMS_PTC return template (value) SipUrl + { + return f_SIP_BuildSipUri_TX(f_IMS_PTC_ImsInfo_GetURI(p_IdType), p_Port); + } + + /* + * @desc return SipUrl to be used in UL + * @param p_IdType + * @param p_Port (default value: omit) + * @return template (present) SipUrl + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_GetSipUriRX(IMS_UriInfo_UriType_Type p_IdType, + template integer p_Port := omit) runs on IMS_PTC return template (present) SipUrl + { + return f_SIP_BuildSipUri_RX(f_IMS_PTC_ImsInfo_GetURI(p_IdType), p_Port); + } + + /* + * @desc return all PublicUserIds for which the UE is registered or shall be registered + * @return CharStringList_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_GetAllIMPUs() runs on IMS_PTC return CharStringList_Type + { + return vc_IMS_Global.ImsInfo.IMPUList; + } + + /* + * @desc return SipUrl as used for subscription + * @param p_Port (default value: omit) + * @return template (present) SipUrl + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_GetSipUriSubscriptionRX(template integer p_Port := omit) runs on IMS_PTC return template (present) SipUrl + { + var charstring v_PublicUserIdDefault := f_IMS_PTC_ImsInfo_GetURI(defaultId); + var charstring v_PublicUserIdRegistration := f_IMS_PTC_ImsInfo_GetURI(registrationId); + var template (present) SipUrl v_SipUrl; + + if (px_UEwithISIM and (v_PublicUserIdDefault != v_PublicUserIdRegistration)) { + v_SipUrl := (f_SIP_BuildSipUri_RX(v_PublicUserIdDefault, p_Port), f_SIP_BuildSipUri_RX(v_PublicUserIdRegistration, p_Port)); + } else { + v_SipUrl := f_SIP_BuildSipUri_RX(v_PublicUserIdDefault, p_Port); + } + return v_SipUrl; + } + + /* + * @desc Initialise structure of type IMS_DialogInfo_Type + * @param p_DialogInfo + * @param p_CseqType + * @param p_MessageHeader_InviteOrRefer + * @return IMS_DialogInfo_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_DialogInfo_Init(IMS_DialogInfo_Type p_DialogInfo, + IMS_PTC_CseqType_Type p_CseqType, + MessageHeader p_MessageHeader_InviteOrRefer) return IMS_DialogInfo_Type + { + var charstring v_FromURI := f_SIP_SipUrl2Str(f_Addr_Union_GetSipUrl(p_MessageHeader_InviteOrRefer.fromField.addressField)); + var charstring v_ToURI := f_SIP_SipUrl2Str(f_Addr_Union_GetSipUrl(p_MessageHeader_InviteOrRefer.toField.addressField)); + var charstring v_FromTag := f_MessageHeader_GetFromTag(p_MessageHeader_InviteOrRefer); + var integer v_CseqValue := p_MessageHeader_InviteOrRefer.cSeq.seqNumber; + var IMS_DialogInfo_Type v_Dialog := p_DialogInfo; + + select (p_CseqType) { + case (dialogLocal) { /* MT establishment of the dialog */ + v_Dialog.LocalURI := v_FromURI; /* @sic R5s140121 change 2.2: needs to be v_FromURI instead of v_ToURI sic@ */ + v_Dialog.RemoteURI := v_ToURI; /* @sic R5s140121 change 2.2: needs to be v_ToURI instead of v_FromURI sic@ */ + v_Dialog.MobileOriginated := false; + v_Dialog.LocalTag := v_FromTag; + v_Dialog.RemoteTag := omit; /* @sic R5s130497 change 1 - MCC160 implementation sic@ */ + v_Dialog.LocalCseq := v_CseqValue; + } + case (dialogRemote) { /* MO establishment of the dialog */ + v_Dialog.LocalURI := v_ToURI; /* @sic R5s140121 change 2.2: needs to be v_ToURI instead of v_FromURI sic@ */ + v_Dialog.RemoteURI := v_FromURI; /* @sic R5s140121 change 2.2: needs to be v_FromURI instead of v_ToURI sic@ */ + v_Dialog.MobileOriginated := true; + v_Dialog.LocalTag := omit; /* @sic R5s130497 change 1 - MCC160 implementation sic@ */ + v_Dialog.RemoteTag := v_FromTag; + v_Dialog.RemoteCseq := v_CseqValue; + } + case else { + FatalError (__FILE__, __LINE__, ""); + } + } + + v_Dialog.CallId := p_MessageHeader_InviteOrRefer.callId.callid; + if (ispresent(p_MessageHeader_InviteOrRefer.sessionId)) { + v_Dialog.SessionId := p_MessageHeader_InviteOrRefer.sessionId.sessid; + } + return v_Dialog; + } + + /* + * @desc Initialise global variables for SIP dialog + * @param p_CseqType + * @param p_MessageHeader_InviteOrRefer + * @param p_DialogIndex (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_DialogInit(IMS_PTC_CseqType_Type p_CseqType, + MessageHeader p_MessageHeader_InviteOrRefer, + template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex := omit) runs on IMS_PTC + { /* @sic R5s140017 MCC160 implementation: ToTag replaced by RemoteTag and LocalTag; additional state variables: CallId, SessionId sic@ */ + /* @sic R5sXXXXXX function may be used for REFER dialog as well (-> e.g. test case 15.21) sic@ */ + var IMS_DialogInfo_Type v_Dialog := fl_IMS_PTC_ImsInfo_GetDialog(p_DialogIndex); + + v_Dialog := f_IMS_DialogInfo_Init(v_Dialog, p_CseqType, p_MessageHeader_InviteOrRefer); /* @sic R5sXXXXXX new function f_IMS_DialogInfo_Init to use IMS_PTC_DialogIndex_Type as local context + e.g. in f_IMS_InviteUserToConference_AnnexC19 sic@ */ + fl_IMS_PTC_ImsInfo_SetDialog(p_DialogIndex, v_Dialog); + } + + /* + * @desc release a SIP dialog + * @param p_DialogIndex (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_DialogRelease(template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex := omit) runs on IMS_PTC + { + fl_IMS_PTC_ImsInfo_SetDialog(p_DialogIndex, valueof(cs_IMS_DialogInfo_Init)); + } + + function f_IMS_PTC_ImsInfo_DialogIsReleased(template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex := omit) runs on IMS_PTC return boolean + { + var template (omit) charstring v_LocalTag := f_IMS_PTC_ImsInfo_DialogGetLocalTag(p_DialogIndex); + var template (omit) charstring v_RemoteTag := f_IMS_PTC_ImsInfo_DialogGetRemoteTag(p_DialogIndex); + return (not isvalue(v_LocalTag) and not isvalue(v_RemoteTag)); + } + + /* + * @desc set active dialog, i.e. dialog of which global procedures take dialog state info + * @param p_Index + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_PTC_ImsInfo_ActivateDialog(IMS_PTC_DialogIndex_Type p_Index) runs on IMS_PTC + { /* @sic R5s140092 change 1.5: new function sic@ */ + vc_IMS_Global.ImsInfo.Dialog.CurrentIndex := fl_IMS_PTC_ImsInfo_GetDialogIndexValue(p_Index); + } + + /* + * @desc function to set local tag acc. to response for INVITE (MO call setup) + * @param p_Tag + * @param p_DialogIndex (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_DialogSetLocalTag(charstring p_Tag, + template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex := omit) runs on IMS_PTC + { + var IMS_DialogInfo_Type v_Dialog := fl_IMS_PTC_ImsInfo_GetDialog(p_DialogIndex); + v_Dialog.LocalTag := p_Tag; + fl_IMS_PTC_ImsInfo_SetDialog(p_DialogIndex, v_Dialog); + } + + /* + * @desc function to set remote tag acc. to response for INVITE (MT call setup) + * @param p_Tag + * @param p_DialogIndex (default value: omit) + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_DialogSetRemoteTag(charstring p_Tag, + template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex := omit) runs on IMS_PTC + { + var IMS_DialogInfo_Type v_Dialog := fl_IMS_PTC_ImsInfo_GetDialog(p_DialogIndex); + v_Dialog.RemoteTag := p_Tag; + fl_IMS_PTC_ImsInfo_SetDialog(p_DialogIndex, v_Dialog); + } + + /* + * @desc function to be used to get local tag for sending any request to a UE within a dialog (e.g. PRACK, BYE etc.) + * @param p_DialogIndex (default value: omit) + * @return template (omit) charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_DialogGetLocalTag(template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex := omit) runs on IMS_PTC return template (omit) charstring + { + var IMS_DialogInfo_Type v_Dialog := fl_IMS_PTC_ImsInfo_GetDialog(p_DialogIndex); + return v_Dialog.LocalTag; + } + + /* + * @desc function to be used to get remote tag for sending any request to a UE within a dialog (e.g. PRACK, BYE etc.) + * @param p_DialogIndex (default value: omit) + * @return template (omit) charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_DialogGetRemoteTag(template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex := omit) runs on IMS_PTC return template (omit) charstring + { + var IMS_DialogInfo_Type v_Dialog := fl_IMS_PTC_ImsInfo_GetDialog(p_DialogIndex); + return v_Dialog.RemoteTag; + } + + /* + * @desc function to get call id of the current dialog + * @param p_DialogIndex (default value: omit) + * @return template (value) CallId + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_DialogGetCallId(template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex := omit) runs on IMS_PTC return template (value) CallId + { + var IMS_DialogInfo_Type v_Dialog := fl_IMS_PTC_ImsInfo_GetDialog(p_DialogIndex); + return cs_CallId(v_Dialog.CallId); + } + + /* + * @desc function to get session id of the current dialog + * @desc function to be used to get remote tag for sending any request to a UE within a dialog (e.g. PRACK, BYE etc.) + * @param p_DialogIndex (default value: omit) + * @return template (omit) SessionId + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_DialogGetSessionId(template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex := omit) runs on IMS_PTC return template (omit) SessionId + { + var IMS_DialogInfo_Type v_Dialog := fl_IMS_PTC_ImsInfo_GetDialog(p_DialogIndex); + var template (omit) SessionId v_SessionId := omit; + if (ispresent(v_Dialog.SessionId)) { + v_SessionId := cs_SessionId(v_Dialog.SessionId); + } + return v_SessionId; + } + + /* + * @desc returns true when the current dialog is MO + * @param p_DialogIndex (default value: omit) + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_DialogIsMO(template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex := omit) runs on IMS_PTC return boolean + { + var IMS_DialogInfo_Type v_Dialog := fl_IMS_PTC_ImsInfo_GetDialog(p_DialogIndex); + if (not ispresent(v_Dialog.MobileOriginated)) { + FatalError(__FILE__, __LINE__, "no dialog established"); + } + return v_Dialog.MobileOriginated; + } + + //---------------------------------------------------------------------------- + /* + * @desc return contact address as provided in contact header of the REGISTER message + * @return SipUrl + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_GetContactUrl() runs on IMS_PTC return SipUrl + { + return vc_IMS_Global.ImsInfo.ContactUrl; + } + + /* + * @desc return Contact header as stored + * @param p_ContactUrl + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_SetContactUrl(SipUrl p_ContactUrl) runs on IMS_PTC + { /* shall be used when subsequent REGISTER has been received during registration */ + vc_IMS_Global.ImsInfo.ContactUrl := p_ContactUrl; + } + + /* + * @desc return CallId that has been used for registration + * @return template (omit) charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_GetCallIdRegistration() runs on IMS_PTC return template (omit) charstring + { + return vc_IMS_Global.ImsInfo.Registration.CallId; + } + + /* + * @desc generate a call id derived from the NW's IP address (see examples in RFC 3261) + * @param p_Method + * @return charstring + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_GenerateCallId(charstring p_Method) runs on IMS_PTC return charstring + { /* p_Method .. e.g. "INVITE" */ + var integer v_CallIdCnt := vc_IMS_Global.ImsInfo.CallIdCnt; + + vc_IMS_Global.ImsInfo.CallIdCnt := v_CallIdCnt + 1; + return p_Method & "-" & int2str(v_CallIdCnt) & "-7dec-11d0-a765-00a0c91e6bf6@" & f_IMS_PTC_NW_Address_GetAddrStr(); /* @sic R5-133705: CallIdCnt to achieve unique callids sic@ */ + } + + /* + * @desc return transport protocol (UDP/TCP) to be used for requests in DL + * @return InternetProtocol_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_GetTransportProtocol() runs on IMS_PTC return InternetProtocol_Type + { + return vc_IMS_Global.ImsInfo.TransportProtocol; + } + + /* + * @desc get CSeq for respective message + * @param p_CseqType + * @param p_DialogIndex (default value: omit) + * @return template (omit) integer + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_CseqGet(IMS_PTC_CseqType_Type p_CseqType, + template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex := omit) runs on IMS_PTC return template (omit) integer + { /* @sic R5s140235: return value changed to "template (omit)" sic@ */ + var IMS_DialogInfo_Type v_Dialog := fl_IMS_PTC_ImsInfo_GetDialog(p_DialogIndex); + var template (omit) integer v_CseqValue; + + select (p_CseqType) { + case (register) { v_CseqValue := vc_IMS_Global.ImsInfo.Registration.Cseq; } + case (dialogRemote) { v_CseqValue := v_Dialog.RemoteCseq; } + case (dialogLocal) { v_CseqValue := v_Dialog.LocalCseq; } + case else { FatalError (__FILE__, __LINE__, ""); } + } + return v_CseqValue; + } + + /* + * @desc get CSeq for respective message + * @param p_CseqType + * @param p_DialogIndex (default value: omit) + * @return integer + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_CseqGetValue(IMS_PTC_CseqType_Type p_CseqType, + template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex := omit) runs on IMS_PTC return integer + { /* @sic R5s140235: new function sic@ */ + var template (omit) integer v_Cseq := f_IMS_PTC_ImsInfo_CseqGet(p_CseqType, p_DialogIndex); + + if (not isvalue(v_Cseq)) { + FatalError(__FILE__, __LINE__, "no valid Cseq yet"); + } + return valueof(v_Cseq); + } + + /* + * @desc set CSeq for respective message + * @param p_CseqType + * @param p_CseqValue + * @param p_DialogIndex (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_CseqSet(IMS_PTC_CseqType_Type p_CseqType, + integer p_CseqValue, + template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex := omit) runs on IMS_PTC + { + var IMS_DialogInfo_Type v_Dialog := fl_IMS_PTC_ImsInfo_GetDialog(p_DialogIndex); + select (p_CseqType) { + case (register) { vc_IMS_Global.ImsInfo.Registration.Cseq := p_CseqValue; } + case (dialogRemote) { v_Dialog.RemoteCseq := p_CseqValue; } + case (dialogLocal) { v_Dialog.LocalCseq := p_CseqValue; } + case else { FatalError (__FILE__, __LINE__, ""); } + } + fl_IMS_PTC_ImsInfo_SetDialog(p_DialogIndex, v_Dialog); + } + + /* + * @desc increment CSeq for respective message + * @param p_CseqType + * @param p_DialogIndex (default value: omit) + * @return integer + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_CseqIncr(IMS_PTC_CseqType_Type p_CseqType, + template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex := omit) runs on IMS_PTC return integer + { /* @sic R5s140235: Cseq may be omit sic@ */ + var integer v_CseqValue := f_IMS_PTC_ImsInfo_CseqGetValue(p_CseqType, p_DialogIndex) + 1; + f_IMS_PTC_ImsInfo_CseqSet(p_CseqType, v_CseqValue, p_DialogIndex); + return v_CseqValue; + } + + /* + * @desc return appropriate branch value + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_GetNextBranch() runs on IMS_PTC return charstring + { /* @sic R5s130561 change 4: addtional branch values sic@ */ + const CharStringList_Type tsc_TagList := { "1234567890", "2345678901", "3456789012", "4567890123", "5678901234", "6789012345", "7890123456", "8901234567", "9012345678", "0123456789", + "0987654321", "9876543210", "8765432109", "7654321098", "6543210987", "5432109876", "4321098765", "3210987654", "2109876543", "1098765432", + "0987654320", "9876543200", "8765432009", "7654320098", "6543200987", "5432009876", "4320098765", "3200987654", "2009876543", "0098765432", + "0987654300", "9876543000", "8765430009", "7654300098", "6543000987", "5430009876", "4300098765", "3000987654", "0009876543", "0098765430", + "0987654000", "9876540000", "8765400009", "7654000098", "6540000987", "5400009876", "4000098765", "0000987654", "0009876540", "0098765400" }; + var charstring v_Branch; + + if (vc_IMS_Global.ImsInfo.BranchIndex >= lengthof(tsc_TagList)) { + FatalError (__FILE__, __LINE__, "not enough branches"); + } + + v_Branch := c_branchCookie & tsc_TagList[vc_IMS_Global.ImsInfo.BranchIndex]; + vc_IMS_Global.ImsInfo.BranchIndex := vc_IMS_Global.ImsInfo.BranchIndex + 1; + return v_Branch; + } + + + /* + * @desc provide latest HomeDomainName + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_GetHomeDomainName() runs on IMS_PTC return charstring + { + return vc_IMS_Global.ImsInfo.HomeDomainName; + } + + /* + * @desc provide latest HomeDomainName + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_GetPrivateUserId() runs on IMS_PTC return charstring + { + return vc_IMS_Global.ImsInfo.PrivateUserId; + } + + function f_IMS_PTC_ImsInfo_Refresh(charstring p_HomeDomainName, + charstring p_PrivateUserId, + CharStringList_Type p_IMPUList) runs on IMS_PTC + { + vc_IMS_Global.ImsInfo.HomeDomainName := p_HomeDomainName; + vc_IMS_Global.ImsInfo.PrivateUserId := p_PrivateUserId; + vc_IMS_Global.ImsInfo.IMPUList := p_IMPUList; + } + + /* + * @desc reset ImsInfo as it is before initial registration + * @status APPROVED (IMS) + */ + function f_IMS_PTC_ImsInfo_Reset() runs on IMS_PTC + { + vc_IMS_Global.ImsInfo := valueof(cs_IMS_ImsInfo_Init(vc_IMS_Global.ImsInfo.RanType, + vc_IMS_Global.ImsInfo.UE_Release, + vc_IMS_Global.ImsInfo.HomeDomainName, + vc_IMS_Global.ImsInfo.PrivateUserId, + vc_IMS_Global.ImsInfo.SecurityScheme)); + } + + //**************************************************************************** + /* + * @desc to deal with entry and exit of the test body + * @param p_TestBodyFlag + * @status APPROVED (IMS_IRAT, IMS, LTE) + */ + function f_IMS_TestBody_Set(boolean p_TestBodyFlag) runs on IMS_PTC + { + vc_IMS_Global.Ctrl.TestBody := p_TestBodyFlag; + } + + /* + * @desc check whether test body is active + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_IMS_TestBody_Check() runs on IMS_PTC return boolean + { + return vc_IMS_Global.Ctrl.TestBody; + } + + /* + * @desc to block UL data from default handling + * @param p_TestBodyFlag + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_BlockUlDataInDefault_Set(boolean p_BlockUlDataInDefault) runs on IMS_PTC + { + vc_IMS_Global.Ctrl.BlockUlDataInDefault := p_BlockUlDataInDefault; + } + + /* + * @desc set correct verdict: FAIL is assigned only when being in the test body + * @param p_FileName + * @param p_LineNo + * @param p_Msg + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_SetVerdictFailOrInconc(charstring p_FileName, + LineNo_Type p_LineNo, + charstring p_Msg) runs on IMS_PTC + { + if (fl_IMS_TestBody_Check()) { + f_SetVerdict(fail, p_FileName, p_LineNo, p_Msg); + } else { + f_SetVerdict(inconc, p_FileName, p_LineNo, p_Msg); + } + self.kill; // => test case will terminate immediately + } + + /* + * @desc set correct verdict: prelininary PASS is only be assigned when being in the test body + * @param p_FileName + * @param p_LineNo + * @param p_Msg + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_IRAT) + */ + function f_IMS_PreliminaryPass(charstring p_FileName, + LineNo_Type p_LineNo, + charstring p_Msg) runs on IMS_PTC + { + if (fl_IMS_TestBody_Check()) { + f_SetVerdict(pass, p_FileName, p_LineNo, p_Msg); + } + } + + //**************************************************************************** + + template (present) IMS_CONFIG_CNF cr_IMS_CONFIG_CNF_Any := ?; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + /* + * @desc Default behaviour for test cases when the IMS behaviour is matter of the test purpose + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + altstep a_IMS_PTC_DefaultBehaviour_TestcaseSpecificImsHandling() runs on IMS_PTC + { + [] IMS_CTRL.receive(cr_IMS_CONFIG_CNF_Any) { + all timer.stop; + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "unexpected receive event at the IMS_CTRL port"); + } + [not vc_IMS_Global.Ctrl.BlockUlDataInDefault] IMS_Server.receive(cr_IMS_DATA_REQ_Any) { /* @sic R5s140780 - MCC160 Implementation sic@ */ + all timer.stop; + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "unexpected receive event at the IMS_Server port"); + } + [not vc_IMS_Global.Ctrl.BlockUlDataInDefault] IMS_Client.receive(cr_IMS_DATA_RSP_Any) { /* @sic R5s140780 - MCC160 Implementation sic@ */ + all timer.stop; + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "unexpected receive event at the IMS_Client port"); + } + [] any timer.timeout { + all timer.stop; + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "unexpected timeout"); + } + } + + /* + * @desc Default behaviour for default IMS handling + * when IMS PTC shall only deal with IMS messages as for the initial registration + * but IMS behavour is not matter of the test purpose + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + altstep a_IMS_PTC_DefaultBehaviour_DefaultImsHandling() + { + [] any port.receive { + f_ErrorLog(__FILE__, __LINE__, "unexpected message (skipped)"); + repeat; + } + [] any timer.timeout { + f_ErrorLog(__FILE__, __LINE__, "unexpected timeout"); + repeat; + } + } + + /* + * @desc default handler to be activated on top of regular default handler to deal with repetitions of SIP requests (especially REGISTER request) + * @param p_IMS_DATA_REQ + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + altstep a_IMS_RetransmissionHandler(IMS_DATA_REQ p_IMS_DATA_REQ) runs on IMS_PTC + { + var template (present) IMS_RoutingInfo_Type v_RoutingInfo := p_IMS_DATA_REQ.RoutingInfo; + var template (present) IMS_Request_Type v_IMS_Request := p_IMS_DATA_REQ.Request; /* repeated message has to be exactly the same (especially cseq) */ + + [] IMS_Server.receive(cr_IMS_DATA_REQ_Any(v_RoutingInfo, v_IMS_Request)) { repeat; } + } + + /* + * @desc to activate the standard default behaviour or default behaviour for test case specific IMS handling + * @param p_Handling + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ActivateDefault(IMS_PTC_Handling_Type p_Handling) runs on IMS_PTC + { + deactivate(vc_IMS_Global.Ctrl.Default); + + select (p_Handling) { + case (testcaseSpecificHandling) { + vc_IMS_Global.Ctrl.Default := activate(a_IMS_PTC_DefaultBehaviour_TestcaseSpecificImsHandling()); + } + case (defaultHandling) { + vc_IMS_Global.Ctrl.Default := activate(a_IMS_PTC_DefaultBehaviour_DefaultImsHandling()); + } + case else { + FatalError (__FILE__, __LINE__, "unknown default behaviour"); + } + } + } + + //**************************************************************************** + /* + * @desc initialisiation of IMS PTC + * @param p_PdnIndex (default value: PDN_1) + * @param p_Handling (default value: testcaseSpecificHandling) + * @param p_SecurityScheme (default value: omit) + * @param p_RanType (default value: omit) + * @param p_UE_Release (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_Init(PDN_Index_Type p_PdnIndex := PDN_1, + IMS_PTC_Handling_Type p_Handling := testcaseSpecificHandling, + template (omit) IMS_SecurityScheme_Type p_SecurityScheme := omit, + template (omit) IPCAN_RAN_Type p_RanType := omit, + template (omit) integer p_UE_Release := omit) runs on IMS_PTC + { /* @sic R5s130651: new parameter p_PdnIndex sic@ */ + /* @sic R5s130756 additional changes: new parameter p_SecurityScheme sic@ */ + /* @sic R5s130756: new parameter p_Pcscf sic@ */ + /* @sic R5-144747: removal of px_IMS_Pcscf and px_IMS_Pcscf_Emg => p_Pcscf removed sic@ */ + var charstring v_HomeDomainName; + var charstring v_PrivateUserId; + var IMS_SecurityScheme_Type v_SecurityScheme; + + if (px_UEwithISIM) { /* @sic R5-133628: check of temporary user id sic@ */ + v_HomeDomainName := px_IMS_HomeDomainName; + v_PrivateUserId := px_IMS_Private_UserId; + } else { + v_HomeDomainName := f_IMS_HomeDomainNameDerivedFromIMSI(px_IMSI_Def); + v_PrivateUserId := f_IMS_PrivateUserIdentityDerivedFromIMSI(px_IMSI_Def); + } + if (ispresent(p_SecurityScheme)) { + v_SecurityScheme := valueof(p_SecurityScheme); + } else if (pc_IMS_GIBA_Sec and not pc_IMS_Sec) { + v_SecurityScheme := GIBA; + } else if (pc_IMS_Sec) { + v_SecurityScheme := IMS_Security; + } else { + FatalError(__FILE__, __LINE__, "Invalid security setting (neither pc_IMS_GIBA_Sec nor pc_IMS_Sec is set)"); + } + + vc_IMS_Global.PdnIndex := p_PdnIndex; + vc_IMS_Global.Ctrl.TestBody := false; + vc_IMS_Global.Ctrl.BlockUlDataInDefault := false; /* @sic R5s140780 - MCC160 Implementation sic@ */ + vc_IMS_Global.Ctrl.Default := null; + vc_IMS_Global.Security := valueof(cs_IMS_SecurityInfo_Init); + vc_IMS_Global.ImsInfo := valueof(cs_IMS_ImsInfo_Init(p_RanType, p_UE_Release, v_HomeDomainName, v_PrivateUserId, v_SecurityScheme)); + + f_IMS_PTC_ActivateDefault(p_Handling); + } + + /* + * @desc create IMS component + * @return IMS_PTC + * @status APPROVED (LTE, IMS_IRAT, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_Create() return IMS_PTC + { + var IMS_PTC v_IMS_PTC := IMS_PTC.create alive; + return v_IMS_PTC; + } + +} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS/IMS_EmgFunctions.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_EmgFunctions.ttcn new file mode 100644 index 0000000..d3d4a4c --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_EmgFunctions.ttcn @@ -0,0 +1,32 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-08-10 11:24:52 +0200 (Sun, 10 Aug 2014) $ +// $Rev: 11869 $ +/******************************************************************************/ + +module IMS_EmgFunctions { + + import from IMS_CommonParameters all; + import from TestcaseProperties all; + + //**************************************************************************** + // common functions for IMS Emg Call 34.229 cl. 19, split over 2 ATSs + //---------------------------------------------------------------------------- + + /* + * @desc Determine if Geololcation info is to be used in the test case + * If feature is supported and test case wants it + * @return boolean + * @status APPROVED (IMS, IMS_IRAT) + */ + function f_IMS_GetGeolocationUsage() return boolean + { + return (pc_IMS_Geolocation and f_GetTestcaseAttrib_GeolocationInformation(testcasename())) + } + +} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS/IMS_IP_Config.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_IP_Config.ttcn new file mode 100644 index 0000000..bdf8eb4 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_IP_Config.ttcn @@ -0,0 +1,182 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 22:08:20 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12181 $ +/******************************************************************************/ + +module IMS_IP_Config { + + import from CommonDefs all; + import from IMS_Component all; + import from IP_ASP_TypeDefs all; + import from IMS_ASP_TypeDefs all; + + //**************************************************************************** + // ASP Templates: + //---------------------------------------------------------------------------- + + template (value) IMS_SecurityInfo_Type cs_IMS_SecurityInfo(template (value) IMS_ProtectedPorts_Type p_ProtectedPorts, + template (value) IMS_SPIs_Type p_SPIs, + IPsec_IntegrityAlgorithm_Type p_IntegrityAlgorithm, + IPsec_CipheringAlgorithm_Type p_CipheringAlgorithm) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + ProtectedPorts := p_ProtectedPorts, + SPIs := p_SPIs, + IntegrityAlgorithm := p_IntegrityAlgorithm, + CipheringAlgorithm := p_CipheringAlgorithm + }; + + template (value) IMS_RegistrationInfo_Type cs_IMS_RegistrationInfo(IP_AddrInfo_Type p_NW_Address, + IP_AddrInfo_Type p_UE_Address, + template (omit) IMS_SecurityInfo_Type p_SecurityInfo) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + NW_Address := p_NW_Address, + UE_Address := p_UE_Address, + SecurityInfo := p_SecurityInfo + }; + + template (value) IMS_PortsAndSecurityConfigReq_Type cs_IMS_PortsAndSecurityConfig(template (omit) PortNumber_Type p_UnprotectedPort_us, + template (value) IMS_RegistrationInfo_Type p_RegistrationInfo) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + UnprotectedPort_us := p_UnprotectedPort_us, + RegistrationInfo := p_RegistrationInfo + }; + + template (value) IPsec_SecurityKeys_Type cs_IPsecKeys(bitstring p_MD5_96Key, + bitstring p_SHA_1_96Key, + bitstring p_DES_EDE3_CBCKey, + bitstring p_AES_CBCKey) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + MD5_96Key := p_MD5_96Key, + SHA_1_96Key := p_SHA_1_96Key, + DES_EDE3_CBCKey := p_DES_EDE3_CBCKey, + AES_CBCKey := p_AES_CBCKey + }; + + template (value) IMS_CONFIG_REQ cas_IMS_InstallKey_REQ(template (value) IPsec_SecurityKeys_Type p_InstallKey) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + InstallKey := p_InstallKey + }; + + template (value) IMS_CONFIG_REQ cas_IMS_PortsAndSecurityConfig_REQ(template (value) IMS_PortsAndSecurityConfigReq_Type p_PortsAndSecurityConfig) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + PortsAndSecurityConfig := p_PortsAndSecurityConfig + }; + + template (value) IMS_CONFIG_REQ cas_IMS_SecurityRelease_REQ(template (value) IMS_SecurityInfo_Type p_SecurityInfo) := + { /* @status APPROVED (IMS) */ + SecurityRelease := p_SecurityInfo + }; + + template (value) IMS_CONFIG_REQ cas_IMS_CloseTCP_REQ := {CloseTCP := true}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (value) IMS_CONFIG_REQ cas_IMS_RegInfoRelease_REQ := {RegInfoRelease := true}; /* @status APPROVED (IMS, IMS_IRAT) */ + + template (present) IMS_CONFIG_CNF car_IMS_InstallKey_CNF := {InstallKey := true}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) IMS_CONFIG_CNF car_IMS_PortsAndSecurityConfig_CNF := {PortsAndSecurityConfig := ?}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) IMS_CONFIG_CNF car_IMS_SecurityRelease_CNF := {SecurityRelease := true}; /* @status APPROVED (IMS) */ + template (present) IMS_CONFIG_CNF car_IMS_CloseTCP_CNF := {CloseTCP := true}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) IMS_CONFIG_CNF car_IMS_RegInfoRelease_CNF := {RegInfoRelease := true}; /* @status APPROVED (IMS, IMS_IRAT) */ + + + /* + * @desc Common function to configure the IP PTC (send IMS_CONFIG_REQ, receive IMS_CONFIG_CNF) + * @param p_IMS_CONFIG_REQ + * @param p_IMS_CONFIG_CNF + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_IMS_ConfigureIP(template (value) IMS_CONFIG_REQ p_IMS_CONFIG_REQ, + template (present) IMS_CONFIG_CNF p_IMS_CONFIG_CNF) runs on IMS_PTC + { + f_IMS_BlockUlDataInDefault_Set(true); + IMS_CTRL.send(p_IMS_CONFIG_REQ); + IMS_CTRL.receive(p_IMS_CONFIG_CNF); + f_IMS_BlockUlDataInDefault_Set(false); + } + + //============================================================================ + // configuration of the IP PTC: + + /* + * @desc Computation of the IPsec keys according to "Key extension functions for IPsec ESP" in TS 33.203 Annex I; + * the keys are sent to the SS via the IP PTC + * @param p_IK + * @param p_CK + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_InstallIPsecKeys(B128_Type p_IK, + B128_Type p_CK) runs on IMS_PTC + { + var B64_Type v_Bitestring1 := substr(p_CK, 0, 64); + var B64_Type v_Bitestring2 := substr(p_CK, 64, 64); + var B128_Type v_MD5_96Key := p_IK; + var B160_Type v_SHA_1_96Key := p_IK & int2bit(0, 32); // 160 bits + var B192_Type v_DES_EDE3_CBCKey := v_Bitestring1 & v_Bitestring2 & v_Bitestring1; // 192 bits + var B128_Type v_AES_CBCKey := p_CK; // 128 bits + + fl_IMS_ConfigureIP(cas_IMS_InstallKey_REQ(cs_IPsecKeys(v_MD5_96Key, v_SHA_1_96Key, v_DES_EDE3_CBCKey, v_AES_CBCKey)), + car_IMS_InstallKey_CNF); /* @sic R5s140780 - MCC160 Implementation sic@ */ + } + + /* + * @desc configure ports and security at the SS + * @param p_UnprotectedPort_us + * @param p_NW_Address + * @param p_UE_Address + * @param p_SecurityInfo (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PortsAndSecurityConfig(template (omit) PortNumber_Type p_UnprotectedPort_us, + IP_AddrInfo_Type p_NW_Address, + IP_AddrInfo_Type p_UE_Address, + template (omit) IMS_SecurityInfo_Type p_SecurityInfo := omit) runs on IMS_PTC + { /* configure IMS security; the IP PTC returns SPIs which it has assigned; + * p_SecurityInfo is omit in case of GIBA + * @sic R5s130266 change 1.3, 4, 5 - MCC160 Implementation: SPIs for re-authentication sic@ */ + + if (isvalue(p_SecurityInfo)) { + if (valueof(p_SecurityInfo.SPIs.SPI_us) == valueof(p_SecurityInfo.SPIs.SPI_uc)) { + FatalError(__FILE__, __LINE__, "SPI_us and SPI_uc shall have different values"); + } + } + + fl_IMS_ConfigureIP(cas_IMS_PortsAndSecurityConfig_REQ(cs_IMS_PortsAndSecurityConfig(p_UnprotectedPort_us, cs_IMS_RegistrationInfo(p_NW_Address, p_UE_Address, p_SecurityInfo))), + car_IMS_PortsAndSecurityConfig_CNF); /* @sic R5s140780 - MCC160 Implementation sic@ */ + } + + + /* + * @desc trigger IP PTC to release security related to this IMS PTC + * @param p_SecurityInfo + * @status APPROVED (IMS) + */ + function f_IMS_Register_SecurityRelease(template (value) IMS_SecurityInfo_Type p_SecurityInfo) runs on IMS_PTC + { + fl_IMS_ConfigureIP(cas_IMS_SecurityRelease_REQ(p_SecurityInfo), + car_IMS_SecurityRelease_CNF); /* @sic R5s140780 - MCC160 Implementation sic@ */ + } + + /* + * @desc trigger IP PTC to release registration info related to this IMS PTC + * @status APPROVED (IMS, IMS_IRAT) + */ + function f_IMS_RegisterInfo_Release() runs on IMS_PTC + { + fl_IMS_ConfigureIP(cas_IMS_RegInfoRelease_REQ, + car_IMS_RegInfoRelease_CNF); /* @sic R5s140780 - MCC160 Implementation sic@ */ + } + + /* + * @desc trigger IP PTC to close TCP connections related to this IMS PTC + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_CloseTCP() runs on IMS_PTC + { + fl_IMS_ConfigureIP(cas_IMS_CloseTCP_REQ, + car_IMS_CloseTCP_CNF); /* @sic R5s140780 - MCC160 Implementation sic@ */ + } +} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS/IMS_MessageBody_Templates.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_MessageBody_Templates.ttcn new file mode 100644 index 0000000..265da12 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_MessageBody_Templates.ttcn @@ -0,0 +1,118 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-05-24 23:07:55 +0200 (Sat, 24 May 2014) $ +// $Rev: 11321 $ +/******************************************************************************/ + +module IMS_MessageBody_Templates { + + import from LibSip_MessageBodyTypes all; + import from LibSip_SDPTypes all; + import from IMS_SDP_Messages all; + import from IMS_XML_Templates all; // !!!! temporary solution as long as IMS_XML_Templates contains definition of Reginfo_Type !!!! + + //**************************************************************************** + // MIME Message + //---------------------------------------------------------------------------- + + template (present) MIME_Message cr_MIME_Message := + { /* MIME encapsulation acc. to condition A8 in A.2.1 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + boundary := ?, + mimeEncapsulatedList := { + { + content_type := ?, + content_disposition := *, + mime_encapsulated_part := { + sdpMessageBody := ? /* @sic R5w140112 sic@ */ + } + }, + { + content_type := ?, + content_disposition := *, + mime_encapsulated_part := { + xmlBody := ? // !!!! may need to be decoded and checked later on !!!! + } + } + } + }; + + //**************************************************************************** + // Message Body + //---------------------------------------------------------------------------- + + template (value) MessageBody cs_MessageBody_SDP(template (value) SDP_Message p_SDP) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + sdpMessageBody := f_IMS_SDP_Message_Encode(p_SDP) + }; + + template (value) MessageBody cs_MessageBody_RegInfo(template (value) Reginfo_Type p_RegInfo) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + xmlBody := oct2char(bit2oct(encvalue(p_RegInfo))) /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + }; + + template (value) MessageBody cs_MessageBody_SMS(template (value) octetstring p_SMS) := + { /* @status APPROVED (IMS) */ + smsMessage := p_SMS + }; + + template (present) MessageBody cr_MessageBody_SDP := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + sdpMessageBody := ? + }; + + template (present) MessageBody cr_MessageBody_MIME(template (present) MIME_Message p_MIME := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + mimeMessageBody:= p_MIME + }; + + template (present) MessageBody cr_MessageBody_SMS(template (present) octetstring p_SMS := ?) := + { /* @status APPROVED (IMS) */ + smsMessage := p_SMS + }; + + template (present) MessageBody cr_MessageBody_SipFrag(template (present) charstring p_SipFrag := ?) := + { + sipfrag := p_SipFrag + }; + + template (value) MessageBody cs_MessageBody_SipFrag(charstring p_SipFrag) := + { + sipfrag := p_SipFrag + }; + + template (value) MessageBody cs_MessageBody_XML(template (value) TIMS3GPP_Type p_TIMS3GPP) := + { /* @status APPROVED (IMS) */ + xmlBody := oct2char(bit2oct(encvalue(p_TIMS3GPP))) + }; + + //**************************************************************************** + // Message Body depending on conditions + //---------------------------------------------------------------------------- + + /* + * @desc to be used e.g. for INVITE when message body depends on condition A8 + * (UE uses Geolocation header to provide its geographical location for emergency session setup, + * has obtained its location and is setting up an emergency session) + * @param p_UseMIME + * @return template (present) MessageBody + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_MessageBodySDP_RX(boolean p_UseMIME) return template (present) MessageBody + { /* to be used e.g. for INVITE when message body depends on condition A8 (UE uses Geolocation header to provide its geographical location for emergency session setup, + has obtained its location and is setting up an emergency session) */ + var template (present) MessageBody v_MessageBody; + + if (p_UseMIME) { + v_MessageBody := cr_MessageBody_MIME(cr_MIME_Message); + } else { + v_MessageBody := cr_MessageBody_SDP; + } + return v_MessageBody; + } +} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS/IMS_PTC_CoordMsg.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_PTC_CoordMsg.ttcn new file mode 100644 index 0000000..8ee8ace --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_PTC_CoordMsg.ttcn @@ -0,0 +1,323 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-10 18:07:49 +0200 (Wed, 10 Sep 2014) $ +// $Rev: 12192 $ +/******************************************************************************/ + +module IMS_PTC_CoordMsg { + import from CommonDefs all; + import from NAS_CommonTypeDefs all; + + //============================================================================ + // Commands/Responses used at the IMS-IPCAN interface for IMS test cases acc. to 34.229 + + // parameters + + type enumerated IMS_TestProcedure_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + IPCAN_InitialRegistration, /* EUTRA/EPS signalling acc. to 36.508 cl. 4.5.2.3 without RRC Connection Release at the end of the procedure + * NOTE: As working assumption the UE does IMS REGISTRATION automatically after RRC/NAS registration; + * if that is not the case the IMS PTC may trigger release of the connection after some time and initiate manual IMS registration (FFS) */ + IPCAN_EmergencyCall_NormalService, /* EUTRA/EPS signalling acc. to 36.508 cl. 4.5A.4.3 */ + IPCAN_EmergencyCall_LimitedService, /* EUTRA/EPS signalling acc. to 36.508 cl. 4.5A.5.3 */ + IPCAN_MO_SpeechCall, /* EUTRA/EPS signalling acc. to 36.508 cl. 4.5A.6.3 */ + IPCAN_MT_SpeechCall, /* EUTRA/EPS signalling acc. to 36.508 cl. 4.5A.7.3 */ + IPCAN_MO_VideoCall, /* EUTRA/EPS signalling acc. to 36.508 cl. 4.5A.8.3 */ + IPCAN_MT_VideoCall, /* EUTRA/EPS signalling acc. to 36.508 cl. 4.5A.9.3 */ + IPCAN_MO_IMS_Signalling, /* EUTRA/EPS signalling acc. to 36.508 cl. 4.5.3.3 with m = n = 0; used e.g. for MT SMS test case 18.2 */ + IPCAN_MT_IMS_Signalling, /* EUTRA/EPS signalling acc. to 36.508 cl. 4.5.3.3 Steps 3 to 9 with m = n = 0; used e.g. for MT SMS test case 18.1 */ + IPCAN_XCAP_Signalling /* EUTRA/EPS signalling acc. to 36.508 cl. 4.5A.14 */ + }; + + type enumerated IMS_TestConfiguration_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + IPCAN_SignallingOnly, /* EUTRA: default DRB is used only */ + IPCAN_SpeechCall, /* EUTRA: one dedicated UM bearer; for normal speech calls and emergency call for limited services */ + IPCAN_VideoCall, /* EUTRA: two dedicated UM bearers */ + IPCAN_EmergencyCall, /* EUTRA: second default bearer (AM) and one dedicated UM bearer */ + IPCAN_XCAP /* EUTRA: second default bearer (AM) for second PDN used for XCAP signalling */ + }; + + type enumerated IMS_CellConfiguration_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + SIB2_Normal, /* to change cell configuration back to normal configuration */ + SIB2_TC_12_18, /* SIB2 configuration acc. to test case 12.18 */ + SIB2_TC_12_18b, /* SIB2 configuration acc. to test case 12.18b */ + SIB2_TC_12_19, /* SIB2 configuration acc. to test case 12.19 */ + SIB2_TC_12_19b, /* SIB2 configuration acc. to test case 12.19b */ + SIB2_TC_12_20, /* SIB2 configuration acc. to test case 12.20 */ + SIB2_TC_12_20a, /* SIB2 configuration acc. to test case 12.20a */ + IPCAN_UpdateUELocationInformation, /* EUTRA: set UELocationInformation acc. to 36.509 */ + IPCAN_EmergencyBearers /* EUTRA: configure 2 bearers for emergency (test case 19.3.3) */ + }; + + type record IPCAN_INFO_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + /* @sic R5s120907 R5s130133 additional changes sic@ */ + /* @sic R5s130739 MCC160 implementation: new field UE_Release sic@ */ + IPCAN_RAN_Type RanType optional, + integer UE_Release optional, + integer AuthResLength optional + }; + + type enumerated IMS_IPCAN_CommandName_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + IPCAN_INIT, /* trigger the IPCAN_PTC to create a cell and do further appropriate initialisation; + * which RAN technology to be use is decided by the IPCAN_PTC based on PIXITs; + * as test procedure shall be specified which procedure is used during the test body to know which DRBs need to be pre-configured; + * IPCAN returns response indicating the RAN type */ + IPCAN_CONFIG, /* trigger the IPCAN_PTC to apply test case specific change of the cell configuration as e.g. SIB2 for cell barring */ + IPCAN_STARTPROCEDURE, /* trigger the IPCAN to expect (MO) or page (MT) the UE to establish an RRC connection; + * depending on the connection type triggers may need to be sent from IPCAN to IMS or from IMS to IPCAN to synchronise establishment + * of dedicated DRBs (EUTRA) or secondary PDP contexts (UTRAN) */ + IPCAN_ENDPROCEDURE, /* trigger RRC connection release by the IPCAN_PTC; + * as a SIP may be sent out just before end of the procedure in general a delay of 2s shall be added before sending IPCAN_ENDPROCEDURE to IPCAN; + * for UTRAN it is up to IPCAN and SS implementation to cope with possible/necessary release of (secondary) PDP context; + * a trigger shall be sent from IPCAN to IMS to indicate when RRC connection is released */ + IPCAN_RELEASE, /* Detach UE and release cell (postamble); + * a trigger is shall be sent from IPCAN to IMS to indicate when IPCAN is released */ + IPCAN_QUERY /* query information from the IPCAN PTC + * @sic R5s130133 additional changes sic@ */ + }; + + type record IMS_IPCAN_Command_Type { /* Messages IMS_PTC -> IPCAN + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + IMS_IPCAN_CommandName_Type Name, + IMS_TestConfiguration_Type TestConfiguration optional, + IMS_TestProcedure_Type TestProcedure optional, + IMS_CellConfiguration_Type CellConfiguration optional /* used for IPCAN_CONFIG to allow test case specific initialisation of the EUTRA cell info */ + }; + + type enumerated IMS_IPCAN_ResponseName_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + IPCAN_INIT, /* response for INIT command: carries the RAN type as used by the IPCAN PTC; + the RAN type depends on PIXIT settings: + part 4 model: px_RANTech + part 3 model: EUTRA_FDD or EUTRA_TDD depending on px_ePrimaryFrequencyBand (px_ePrimaryFrequencyBand < 33 => FDD) */ + IPCAN_QUERY /* @sic R5s120907 R5s130133 additional changes sic@ */ + }; + + type record IPCAN_IMS_Response_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + IMS_IPCAN_ResponseName_Type Name, + IPCAN_INFO_Type IpcanInfo optional /* @sic R5s120907 R5s130133 additional changes sic@ */ + }; + + //============================================================================ + + type enumerated TriggerResult_Type {NORMAL, ABORT}; /* @status APPROVED (IMS) */ + + type union IMS_IPCAN_Coordination_MSG { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + Null_Type TriggerEvent, // any trigger of confirmation + Null_Type AbortEvent, // sent instead of TriggerEvent if procedure shall be aborted + IMS_IPCAN_Command_Type IMS_IPCAN_Command, // IMS -> IPCAN: command to be done at IPCAN + IPCAN_IMS_Response_Type IPCAN_IMS_Response, // IMS <- IPCAN: response for previous command + NAS_ProtocolConfigOptions_Type ProtocolConfigOptions // IMS <-> IPCAN: PCOs to be used in NAS signalling + }; + + type port IMS_IPCAN_CO_ORD_PORT message + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + out IMS_IPCAN_Coordination_MSG; + in IMS_IPCAN_Coordination_MSG; + }; + + + type union IMS_IMS_Coordination_MSG { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + Null_Type TriggerEvent + }; + + type port IMS_IMS_CO_ORD_PORT message { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + out IMS_IMS_Coordination_MSG; + in IMS_IMS_Coordination_MSG; + }; + + //---------------------------------------------------------------------------- + + template (value) IMS_IPCAN_Coordination_MSG cms_IMS_IPCAN_Trigger := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + TriggerEvent := true + }; + + template (present) IMS_IPCAN_Coordination_MSG cmr_IMS_IPCAN_Trigger := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + TriggerEvent := true + }; + + template (value) IMS_IPCAN_Coordination_MSG cms_IMS_IPCAN_Abort := + { /* @status APPROVED (IMS) */ + AbortEvent := true + }; + + template (present) IMS_IPCAN_Coordination_MSG cmr_IMS_IPCAN_Abort := + { /* @status APPROVED (IMS) */ + AbortEvent := true + }; + + template (value) IMS_IPCAN_Coordination_MSG cms_IMS_IPCAN_Command(IMS_IPCAN_CommandName_Type p_CommandName, + template (omit) IMS_TestConfiguration_Type p_TestConfiguration := omit, + template (omit) IMS_TestProcedure_Type p_TestProcedure := omit, + template (omit) IMS_CellConfiguration_Type p_CellConfiguration := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + IMS_IPCAN_Command := { + Name := p_CommandName, + TestConfiguration := p_TestConfiguration, + TestProcedure := p_TestProcedure, + CellConfiguration := p_CellConfiguration + } + }; + + template (present) IMS_IPCAN_Coordination_MSG cmr_IMS_IPCAN_Command(template (present) IMS_IPCAN_CommandName_Type p_CommandName := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + IMS_IPCAN_Command := { + Name := p_CommandName, + TestConfiguration := *, + TestProcedure := *, + CellConfiguration := * + } + }; + + template (value) IPCAN_INFO_Type cs_IPCAN_INFO(template (omit) IPCAN_RAN_Type p_RanType, + template (omit) integer p_UE_Release, + template (omit) integer p_AuthResLength) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + RanType := p_RanType, + UE_Release := p_UE_Release, + AuthResLength := p_AuthResLength + }; + + template (value) IMS_IPCAN_Coordination_MSG cms_IPCAN_IMS_Response(IMS_IPCAN_ResponseName_Type p_ResponseName, + template (omit) IPCAN_INFO_Type p_IpcanInfo := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5s120907 R5s130133 additional changes sic@ */ + IPCAN_IMS_Response := { + Name := p_ResponseName, + IpcanInfo := p_IpcanInfo + } + }; + + template (value) IMS_IPCAN_Coordination_MSG cms_IPCAN_IMS_QueryResponse(template (value) IPCAN_INFO_Type p_IpcanInfo) := cms_IPCAN_IMS_Response(IPCAN_QUERY, p_IpcanInfo); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + @sic R5s130133 additional changes sic@ */ + + template (present) IMS_IPCAN_Coordination_MSG cmr_IPCAN_IMS_Response := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + IPCAN_IMS_Response := ? + }; + + //---------------------------------------------------------------------------- + + template (value) IMS_IMS_Coordination_MSG cms_IMS_IMS_Trigger := + { /* @status APPROVED (IMS) */ + TriggerEvent := true + }; + + template (present) IMS_IMS_Coordination_MSG cmr_IMS_IMS_Trigger := + { /* @status APPROVED (IMS) */ + TriggerEvent := true + }; + + //---------------------------------------------------------------------------- + /* + * @desc query IPCAN specific information from IPCAN PTC + * @param p_ImsCoorPort + * @return IPCAN_INFO_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_IPCAN_Query(IMS_IPCAN_CO_ORD_PORT p_ImsCoorPort) return IPCAN_INFO_Type + { + var IMS_IPCAN_Coordination_MSG v_IMS_IPCAN_CoordMsg; + p_ImsCoorPort.send(cms_IMS_IPCAN_Command(IPCAN_QUERY)); + p_ImsCoorPort.receive(cmr_IPCAN_IMS_Response) -> value v_IMS_IPCAN_CoordMsg; + return v_IMS_IPCAN_CoordMsg.IPCAN_IMS_Response.IpcanInfo; + } + + //---------------------------------------------------------------------------- + /* + * @desc to immediately detect programming errors (shall normally not happen) + * @param p_Port + * @status APPROVED (IMS) + */ + altstep a_IMS_IPCAN_Default(IMS_IPCAN_CO_ORD_PORT p_Port) + { + [] p_Port.receive { + FatalError(__FILE__, __LINE__, "unexpected coordination message"); + } + } + + /* + * @desc Wait for a synchonisation message from IMS/IPCAN PTC + * @param p_Port + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_IPCAN_WaitForTrigger(IMS_IPCAN_CO_ORD_PORT p_Port) + { /* @sic R5s130495 change 3: a_IMS_IPCAN_Default removed as at least at EUTRA queries (IPCAN_QUERY) need to be handled by EUTRA's default behaviour sic@ */ + alt { + [] p_Port.receive(cmr_IMS_IPCAN_Trigger) {} + //[] a_IMS_IPCAN_Default(p_Port) {} + } + } + + /* + * @desc Wait for a synchonisation message from IMS/IPCAN PTC + * @param p_Port + * @return TriggerResult_Type + * @status APPROVED (IMS) + */ + function f_IMS_IPCAN_WaitForTriggerOrAbort(IMS_IPCAN_CO_ORD_PORT p_Port) return TriggerResult_Type + { /* @sic R5s130495 change 3: a_IMS_IPCAN_Default removed as at least at EUTRA queries (IPCAN_QUERY) need to be handled by EUTRA's default behaviour sic@ */ + var TriggerResult_Type v_Result := ABORT; + alt { + [] p_Port.receive(cmr_IMS_IPCAN_Trigger) {v_Result := NORMAL} + [] p_Port.receive(cmr_IMS_IPCAN_Abort) {} + //[] a_IMS_IPCAN_Default(p_Port) {} + } + return v_Result; + } + + //---------------------------------------------------------------------------- + /* + * @desc send message to IMS/IPCAN PTC + * @param p_Port + * @param p_Msg (default value: cms_IMS_IPCAN_Trigger) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_IMS_IPCAN_SendCoOrdMsg(IMS_IPCAN_CO_ORD_PORT p_Port, + template (value) IMS_IPCAN_Coordination_MSG p_Msg := cms_IMS_IPCAN_Trigger) + { + p_Port.send(p_Msg); + } + +/* function f_IMS_IPCAN_CheckForTrigger(IMS_IPCAN_CO_ORD_PORT p_Port) return boolean */ +/* { */ +/* timer t_Timer := 0.0; */ +/* t_Timer.start; */ + +/* alt { */ +/* [] p_Port.receive(cmr_IMS_IPCAN_Trigger) { return true; } */ +/* [] a_IMS_IPCAN_Default(p_Port) {} */ +/* [] t_Timer.timeout {} */ +/* } */ +/* return false; */ +/* } */ + + //---------------------------------------------------------------------------- + /* + * @desc send coordination message to the other IMS PTC + * @param p_Port + * @param p_Msg (default value: cms_IMS_IMS_Trigger) + * @status APPROVED (IMS) + */ + function f_IMS_IMS_SendCoOrdMsg(IMS_IMS_CO_ORD_PORT p_Port, + template (value) IMS_IMS_Coordination_MSG p_Msg := cms_IMS_IMS_Trigger) + { + p_Port.send(p_Msg); + } + + /* + * @desc wait for coordination message from the other IMS PTC + * @param p_Port + * @status APPROVED (IMS) + */ + function f_IMS_IMS_WaitForTrigger(IMS_IMS_CO_ORD_PORT p_Port) + { + p_Port.receive(cmr_IMS_IMS_Trigger); + } + +} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS/IMS_Procedures_CallControl.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_Procedures_CallControl.ttcn new file mode 100644 index 0000000..3915b07 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_Procedures_CallControl.ttcn @@ -0,0 +1,2954 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-11 15:45:52 +0200 (Thu, 11 Sep 2014) $ +// $Rev: 12207 $ +/******************************************************************************/ + +module IMS_Procedures_CallControl { + + import from CommonDefs all; + import from CommonIP all; + import from IP_ASP_TypeDefs all; + import from IMS_Component all; + import from IMS_ASP_TypeDefs all; + import from IMS_ASP_Templates all; + import from IMS_CommonParameters all; + import from IMS_CommonTemplates all; + import from IMS_CommonDefs all; + import from IMS_SIP_Templates all; + import from IMS_MessageBody_Templates all; + import from IMS_SDP_Templates all; + import from IMS_SDP_Messages all; + import from IMS_CommonFunctions all; + import from IMS_Procedures_Common all; + import from UpperTesterFunctions all; + import from LibSip_Common all; + import from LibSip_MessageBodyTypes all; + import from LibSip_SIPTypesAndValues all; + import from LibSip_SDPTypes all; + import from IMS_XML_PIDF_Templates all; + import from Parameters all; + + type enumerated INVITE_A_2_1_Context_Type { /* NOTE: some of the conditions for A.2.1 describe the context in which the INVITE is used (=> these conditions are mutual exclusive) + * whereas other conditions are "add-on" + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + A_2_1_A4, /* INVITE creating a dialog */ + A_2_1_A5, /* re-INVITE within a dialog */ + A_2_1_A6, /* INVITE for creating an emergency session in case of no registration */ + A_2_1_A7 /* INVITE for creating an emergency session within an emergency registration */ + }; + + type record IMS_InviteRequestWithSdp_Type { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) + @sic R5w140112: new type sic@ */ + IMS_RoutingInfo_Type RoutingInfo, + INVITE_Request Invite, + SDP_Message SdpOffer + }; + + type record IMS_ResponseWithSdp_Type { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) + @sic R5w140112: new type sic@ */ + IMS_Response_Type Response, + SDP_Message SdpMessage optional + }; + + template (value) IMS_ResponseWithSdp_Type cs_IMS_ResponseWithSdp(IMS_Response_Type p_Response, + template (omit) SDP_Message p_SDP_Message) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + Response := p_Response, + SdpMessage := p_SDP_Message + }; + + + /* + * @desc build-up IMS_InviteRequestWithSdp_Type + * @param p_IMS_DATA_REQ + * @param p_SdpOffer + * @return IMS_InviteRequestWithSdp_Type + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_InviteRequestWithSdpMO(IMS_DATA_REQ p_IMS_DATA_REQ, + SDP_Message p_SdpOffer) return IMS_InviteRequestWithSdp_Type + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; + + v_InviteRequestWithSdp.RoutingInfo := p_IMS_DATA_REQ.RoutingInfo; + v_InviteRequestWithSdp.Invite := p_IMS_DATA_REQ.Request.Invite; + v_InviteRequestWithSdp.SdpOffer := p_SdpOffer; + return v_InviteRequestWithSdp; + } + + /* + * @desc build-up IMS_InviteRequestWithSdp_Type + * @param p_InviteRequest + * @param p_SdpOffer + * @return IMS_InviteRequestWithSdp_Type + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_InviteRequestWithSdpMT(template (value) INVITE_Request p_InviteRequest, + template (value) SDP_Message p_SdpOffer) runs on IMS_PTC return IMS_InviteRequestWithSdp_Type + { + var template (value) IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; + var InternetProtocol_Type v_Protocol := f_IMS_PTC_ImsInfo_GetTransportProtocol(); + + v_InviteRequestWithSdp.RoutingInfo := cs_IMS_RoutingInfo(v_Protocol); + v_InviteRequestWithSdp.Invite := p_InviteRequest; + v_InviteRequestWithSdp.SdpOffer := p_SdpOffer; + + return valueof(v_InviteRequestWithSdp); + } + + /* + * @desc return true when the given INVITE is MO in which case it does not contain a record route (yet) + * @param p_InviteRequest + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_IMS_InviteRequestIsMO(template (value) INVITE_Request p_InviteRequest) return boolean + { + return not ispresent(p_InviteRequest.msgHeader.recordRoute.routeBody); + } + + /* + * @desc check session version of given SDP message to be greater than previous session version + * @param p_CurrentSDP_Message + * @param p_PreviousSDP_Message + * @param p_PreviousSessionVersion (default value: omit) + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_SDP_CheckSessionVersion(SDP_Message p_CurrentSDP_Message, + template (omit) SDP_Message p_PreviousSDP_Message, + template (omit) integer p_PreviousSessionVersion := omit) runs on IMS_PTC + { /* @sic R5s140686, R5-144755: parameter p_PreviousSDP_Message; check whether current and previous SDP message are identically sic@ */ + var integer v_PreviousSessionVersion; + var integer v_CurrentSessionVersion := str2int(p_CurrentSDP_Message.origin.session_version); + var template SDP_Message v_PreviousSDP_Template; + + if (isvalue(p_PreviousSDP_Message)) { + v_PreviousSessionVersion := str2int(valueof(p_PreviousSDP_Message.origin.session_version)); + if (v_PreviousSessionVersion == v_CurrentSessionVersion) { + v_PreviousSDP_Template := p_PreviousSDP_Message; + v_PreviousSDP_Template.origin.session_version := ?; + if (not match(p_CurrentSDP_Message, v_PreviousSDP_Template)) { /* => previous and current message are not indentical */ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "session version is the same as in previous SDP message but content has changed"); + } + return; + } + } else if (isvalue(p_PreviousSessionVersion)) { + v_PreviousSessionVersion := valueof(p_PreviousSessionVersion); + } else { + FatalError(__FILE__, __LINE__, ""); + } + // check session version for subsequent SDP message being different: + if (v_CurrentSessionVersion != v_PreviousSessionVersion + 1) { /* @sic R5-143201 sic@ */ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "session version not incremented"); + } + } + + /* + * @desc Check whether given media description contains default AMR codec + * @param p_SDP_Media_Desc + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_SDP_CheckMediaDescr_AMR_8000_1(SDP_media_desc p_SDP_Media_Desc) runs on IMS_PTC + { + var template (omit) SDP_attribute v_Attribute; + var integer v_RedMaxVal; + var charstring v_RedMaxValStr; + var charstring v_Fmt := f_SDP_MediaDescr_GetAMR_8000_1(p_SDP_Media_Desc); + + if (v_Fmt == "") { /* @sic R5-141114: tsc_AMR_Fmtp_DefaultParameters -> tsc_AMR_Fmtp_DefaultParameters_RX_Pattern sic@ */ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "AMR/8000/1 not found in given media description"); + } + + /* check of the red-max parameter: @sic R5-141114sic@ */ + v_Attribute := f_SDP_AttributeList_GetAttribute(p_SDP_Media_Desc.attributes, cr_SDP_Attribute_fmtp(v_Fmt, cr_AMR_Fmtp_DefaultParameters)); + if (isvalue(v_Attribute)) { + v_RedMaxValStr := f_SIP_SemicolonParamList_GetParamValue(v_Attribute.fmtp.params.paramList, "max-red"); // @sic R5w140113, R5w140009 sic@ + if (v_RedMaxValStr != "") { + v_RedMaxVal := str2int(v_RedMaxValStr); + if (not match(v_RedMaxVal, (0..220))) { /* @sic R5-141114sic@ */ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "invalid value for red-max parameter"); + } + } + } + } + + function f_IMS_SDP_CheckMediaDescr_H264_90000(SDP_media_desc p_SDP_Media_Desc) runs on IMS_PTC + { + if (f_SDP_MediaDescr_GetH264_90000(p_SDP_Media_Desc) == "") { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "H264/90000 not found in given media description"); + } + } + + /* + * @desc DTMF Digits, Telephony Tones, and Telephony Signals (RFC 4733) + * @param p_SDP_Media_Desc + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_SDP_CheckMediaDescr_DTMF(SDP_media_desc p_SDP_Media_Desc) runs on IMS_PTC + { + if (f_SDP_MediaDescr_GetMediaFormat(p_SDP_Media_Desc, cr_RTPMAP_TelephoneEvent) == "") { // @sic R5s130333 change 14.2 - pattern needs to include a rate; R5-133684 sic@ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "'telephone-event' not found in given media description"); + } + } + + /* + * @desc build up Reason header depending on the UE's release + * @param p_CauseValue + * @param p_Text (default value: omit) + * @return template (present) Reason + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_IMS_SIP_Reason_RX(integer p_CauseValue, + template charstring p_Text := omit) runs on IMS_PTC return template (present) Reason + { + var template (omit) integer v_UE_Release := f_IMS_PTC_GetUE_Release(); + var template charstring v_ReasonText := p_Text; + + if (not (ispresent(v_UE_Release) and (valueof(v_UE_Release) >= 10))) { // @sic R5s140234 change 1; R5-142948; R5-142287 change 3 sic@ + v_ReasonText := omit; + } + return cr_Reason(p_CauseValue, v_ReasonText); + } + + /* + * @desc build up Reason header for reason 487 + * @return template (present) Reason + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_IMS_SIP_Reason487_RX() runs on IMS_PTC return template (present) Reason + { + var template charstring v_ReasonText := ("failure to transition to CS domain", "handover cancelled"); + return f_IMS_SIP_Reason_RX(487, v_ReasonText); + } + + //============================================================================ + // local functions to build send/receive messages + //---------------------------------------------------------------------------- + + /* + * @desc revert order of given RouteBody_List + * @param p_RouteBodyList + * @return template (value) RouteBody_List + * @status APPROVED (LTE, IMS_IRAT, IMS, LTE_A, LTE_IRAT) + */ + function fl_RouteSet_ReverseOrder(template (value) RouteBody_List p_RouteBodyList) return template (value) RouteBody_List + { + var template (value) RouteBody_List v_RouteBodyList := {}; + var integer v_LengthOfList; + var integer i; + var integer k; + + v_LengthOfList := lengthof(p_RouteBodyList); + k := v_LengthOfList; + for (i:=0; i condition A6; needs to be set to false for non-voice calls + /* @sic R5s130333 change 2: new parameter p_PrackRequested sic@ */ + /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5s140370 change 6: new parameter p_SrvccAlertingSupported sic@ */ + var MessageHeader v_MessageHeader_Invite := p_InviteRequest.msgHeader; + var template (value) MessageHeader v_MessageHeader_Response := cs_MessageHeader_Dummy; + var template (value) RouteBody_List v_RouteBodyList := f_IMS_RouteSet_MO_Call_TX(p_IsEmergency); /* @sic R5s130756 change 8: p_IsEmergency sic@ */ + + v_MessageHeader_Response.recordRoute := cs_RecordRoute(v_RouteBodyList); + v_MessageHeader_Response.via := v_MessageHeader_Invite.via; + v_MessageHeader_Response.fromField := v_MessageHeader_Invite.fromField; + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderTX(v_MessageHeader_Invite); /* @sic R5-131897, R5-132063 - generic handling of to-tags sic@ */ + v_MessageHeader_Response.contact := cs_Contact(f_SIP_BuildSipUri_TX(p_ContactUri)); // @sic R5s130109 sic@ + v_MessageHeader_Response.callId := v_MessageHeader_Invite.callId; + v_MessageHeader_Response.sessionId := v_MessageHeader_Invite.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := v_MessageHeader_Invite.cSeq; + if (p_PrackRequested) { // Condition A3 @sic R5s130333 change 2 sic@ + v_MessageHeader_Response.require := cs_Require(tsc_OptionTagList_100rel); /* -> reliable provisional responses acc. RFC 3262 */ + v_MessageHeader_Response.rSeq := cs_RSeq(tsc_IMS_RSeqNumFor183 + 1); + } + if (p_IsEmergency) { // Condition A4 + v_MessageHeader_Response.pAssertedID := cs_PAssertedId(f_SIP_BuildSipUri_lr_TX(tsc_IMS_Emergency_TelUri)); + } + if (p_SrvccAlertingSupported) { + v_MessageHeader_Response.featureCaps := cs_FeatureCaps(tsc_IMS_FeatureCap_SrvccAlerting); + } + return v_MessageHeader_Response; + } + + /* + * @desc 181 Call is being forwarded (see TS 34.229, A.2.14) + * @param p_InviteRequest + * @param p_TargetedTo + * @return template (value) MessageHeader + * @status APPROVED (IMS) + */ + function f_IMS_InviteResponse_181_MessageHeaderTX(INVITE_Request p_InviteRequest, + template (value) SipUrl p_TargetedTo) runs on IMS_PTC return template (value) MessageHeader + { + var MessageHeader v_MessageHeader_Invite := p_InviteRequest.msgHeader; + var template (value) MessageHeader v_MessageHeader_Response := cs_MessageHeader_Dummy; + + v_MessageHeader_Response.via := v_MessageHeader_Invite.via; + v_MessageHeader_Response.fromField := v_MessageHeader_Invite.fromField; + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderTX(v_MessageHeader_Invite); /* @sic R5-131897, R5-132063 - generic handling of to-tags sic@ */ + v_MessageHeader_Response.historyInfo := cs_HistoryInfo(p_TargetedTo); + v_MessageHeader_Response.callId := v_MessageHeader_Invite.callId; + v_MessageHeader_Response.sessionId := v_MessageHeader_Invite.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := v_MessageHeader_Invite.cSeq; + + return v_MessageHeader_Response; + } + + /* + * @desc 183 Session Progress for INVITE (see TS 34.229, A.2.3) + * @param p_InviteRequest + * @param p_AdditionalOptionTagsForRequire (default value: tsc_OptionTagList_Empty) + * @param p_ContactUri (default value: px_IMS_CalleeContactUri) + * @param p_AditionalContactParams (default value: omit) + * @param p_IsEmergency (default value: false) + * @param p_Video (default value: tsc_IMS_VideoFeature) + * @return template (value) MessageHeader + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_InviteResponse_183_MessageHeaderTX(INVITE_Request p_InviteRequest, + OptionTag_List p_AdditionalOptionTagsForRequire := tsc_OptionTagList_Empty, + charstring p_ContactUri := px_IMS_CalleeContactUri, + template (omit) SemicolonParam_List p_AditionalContactParams := omit, + boolean p_IsEmergency := false, + boolean p_Video := tsc_IMS_VideoFeature) runs on IMS_PTC return template (value) MessageHeader + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + var MessageHeader v_MessageHeader_Invite := p_InviteRequest.msgHeader; + var template (value) MessageHeader v_MessageHeader_Response := cs_MessageHeader_Dummy; + var template (omit) SemicolonParam_List v_ContactParams := p_AditionalContactParams; + var OptionTag_List v_OptionTag_List := tsc_OptionTagList_100rel & p_AdditionalOptionTagsForRequire; // @sic R5-133629 sic@ + var template (value) RouteBody_List v_RouteBodyList := f_IMS_RouteSet_MO_Call_TX(p_IsEmergency); /* @sic R5s130756 change 8: p_IsEmergency sic@ */ + + v_MessageHeader_Response.recordRoute := cs_RecordRoute(v_RouteBodyList); + v_MessageHeader_Response.via := v_MessageHeader_Invite.via; + v_MessageHeader_Response.require := cs_Require(v_OptionTag_List); // @sic R5s130333 change 3 sic@ + v_MessageHeader_Response.fromField := v_MessageHeader_Invite.fromField; + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderTX(v_MessageHeader_Invite); /* @sic R5-131897, R5-132063 - generic handling of to-tags sic@ */ + v_MessageHeader_Response.rSeq := cs_RSeq(tsc_IMS_RSeqNumFor183); + v_MessageHeader_Response.callId := v_MessageHeader_Invite.callId; + v_MessageHeader_Response.sessionId := v_MessageHeader_Invite.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := v_MessageHeader_Invite.cSeq; + v_MessageHeader_Response.contentType := cs_ContentTypeSDP; + if (p_IsEmergency) { // Condition A5 + v_MessageHeader_Response.pAssertedID := cs_PAssertedId(f_SIP_BuildSipUri_lr_TX(tsc_IMS_Emergency_TelUri)); + } + if (p_Video) { // @sic R5s130109 sic@ + v_ContactParams := f_SemicolonParam_List_Add_TX(v_ContactParams, cs_GenericParam("video")); + } + v_MessageHeader_Response.contact := cs_Contact(f_SIP_BuildSipUri_TX(p_ContactUri), v_ContactParams); + + return v_MessageHeader_Response; + } + + /* + * @desc 200 OK for other requests than REGISTER or SUBSCRIBE (see TS 34.229, A.3.1) + * @param p_MessageHeader_Request + * @param p_ContentType (default value: omit) + * @param p_EmergencyTelURI (default value: omit) + * @param p_ContactUri (default value: px_IMS_CalleeContactUri) + * @return template (value) MessageHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_OtherResponse_200_MessageHeaderTX(template (value) MessageHeader p_MessageHeader_Request, + template (omit) ContentType p_ContentType := omit, + template (omit) charstring p_EmergencyTelURI := omit, + charstring p_ContactUri := px_IMS_CalleeContactUri) runs on IMS_PTC return template (value) MessageHeader + { /* @sic R5-130683: common handling for INVITE and UPDATE sic@ */ + /* p_EmergencyTelURI .. shall be set e.g. to tsc_IMS_Emergency_TelUri for condition A6 in A.3.1 */ + /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + var template (value) MessageHeader v_MessageHeader_Response := cs_MessageHeader_Dummy; + var charstring v_Method := valueof(p_MessageHeader_Request.cSeq.method); + var boolean v_A1A3 := false; + var template (value) RouteBody_List v_RouteBodyList; + var boolean v_IsEmergency := ispresent(p_EmergencyTelURI); // Condition A6 @sic R5s130756 change 10 sic@ + + select (v_Method) { + case ("INVITE", "UPDATE") { v_A1A3 := true; } + } + v_MessageHeader_Response.via := p_MessageHeader_Request.via; + v_MessageHeader_Response.fromField := p_MessageHeader_Request.fromField; + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderTX(p_MessageHeader_Request); /* @sic R5-131897, R5-132063 - generic handling of to-tags sic@ */ + v_MessageHeader_Response.callId := p_MessageHeader_Request.callId; + v_MessageHeader_Response.sessionId := p_MessageHeader_Request.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := p_MessageHeader_Request.cSeq; + v_MessageHeader_Response.contentType := p_ContentType; + + if (v_A1A3) { + v_RouteBodyList := f_IMS_RouteSet_MO_Call_TX(v_IsEmergency); /* @sic R5s130756 change 8: p_IsEmergency sic@ */ + v_MessageHeader_Response.recordRoute := cs_RecordRoute(v_RouteBodyList); + v_MessageHeader_Response.contact := cs_Contact(f_SIP_BuildSipUri_TX(p_ContactUri)); + } + if (v_IsEmergency) { // Condition A6 + v_MessageHeader_Response.pAssertedID := cs_PAssertedId(f_SIP_BuildSipUri_lr_TX(valueof(p_EmergencyTelURI))); + } + return v_MessageHeader_Response; + } + + /* + * @desc 202 Accepted acc. to 34.229 A.3.3 + * @param p_MessageHeader_Request + * @return template (value) MessageHeader + * @status APPROVED (IMS) + */ + function f_IMS_Accepted_202_MessageHeaderTX(MessageHeader p_MessageHeader_Request) runs on IMS_PTC return template (value) MessageHeader + { + var template (value) MessageHeader v_MessageHeader_Response := cs_MessageHeader_Dummy; + + v_MessageHeader_Response.via := p_MessageHeader_Request.via; + v_MessageHeader_Response.fromField := p_MessageHeader_Request.fromField; + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderTX(p_MessageHeader_Request); /* @sic R5-132063 sic@ */ + v_MessageHeader_Response.callId := p_MessageHeader_Request.callId; + v_MessageHeader_Response.sessionId := p_MessageHeader_Request.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := p_MessageHeader_Request.cSeq; + + return v_MessageHeader_Response; + } + + /* + * @desc generic message header for 4XX message to be sent to the UE + * @param p_MessageHeader_InviteRequest + * @return template (value) MessageHeader + * @status APPROVED (LTE_A) + */ + function f_IMS_InviteResponse_4XX_MessageHeaderTX(MessageHeader p_MessageHeader_InviteRequest) runs on IMS_PTC return template (value) MessageHeader + { /* @sic R5s140572 change 3: new function sic@ */ + var template (value) MessageHeader v_MessageHeader_Response := cs_MessageHeader_Dummy; + + v_MessageHeader_Response.via := p_MessageHeader_InviteRequest.via; + v_MessageHeader_Response.fromField := p_MessageHeader_InviteRequest.fromField; + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderTX(p_MessageHeader_InviteRequest); + + v_MessageHeader_Response.callId := p_MessageHeader_InviteRequest.callId; + v_MessageHeader_Response.sessionId := p_MessageHeader_InviteRequest.sessionId; + v_MessageHeader_Response.cSeq := p_MessageHeader_InviteRequest.cSeq; + + return v_MessageHeader_Response; + } + + //---------------------------------------------------------------------------- + /* + * @desc CANCEL Request (see TS 34.229, A.2.15) + * @param p_InviteRequest + * @return template (value) MessageHeader + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_CancelRequest_MessageHeaderTX(template (value) INVITE_Request p_InviteRequest) runs on IMS_PTC return template (value) MessageHeader + { + var template (value) MessageHeader v_MessageHeader_Invite := p_InviteRequest.msgHeader; + var template (value) MessageHeader v_MessageHeader_Cancel := cs_MessageHeader_Dummy; + var template (value) Via v_Via := fl_Via_AddSigCompParam(v_MessageHeader_Invite.via); + var integer v_CSeqValue := f_MessageHeader_GetCseqValue(v_MessageHeader_Invite); + + v_MessageHeader_Cancel.via := v_Via; + v_MessageHeader_Cancel.toField := f_IMS_RequestInDialog_ToHeaderTX(); + v_MessageHeader_Cancel.fromField := f_IMS_RequestInDialog_FromHeaderTX(); + v_MessageHeader_Cancel.callId := v_MessageHeader_Invite.callId; + v_MessageHeader_Cancel.sessionId := v_MessageHeader_Invite.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Cancel.cSeq := cs_CseqDef(v_CSeqValue, "CANCEL"); /* @sic R5s140092 change 11 sic@ */ + + return v_MessageHeader_Cancel; + } + + + //============================================================================ + // Functions to build responses to be expected from the UE + //---------------------------------------------------------------------------- + /* + * @desc 100 Trying for INVITE (see TS 34.229, A.2.2) + * @param p_InviteRequest + * @return template (present) MessageHeader + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_InviteResponse_100_MessageHeaderRX(template (value) INVITE_Request p_InviteRequest) return template (present) MessageHeader + { /* NOTE: acc. to A.2.2 there is no Session-ID in this message */ + const boolean tsc_Is100Response := true; + var template (value) MessageHeader v_MessageHeader_Invite := p_InviteRequest.msgHeader; + var template (present) MessageHeader v_MessageHeader_Response := cr_MessageHeader_Dummy; + + v_MessageHeader_Response.via := f_Via_ResponseRX(v_MessageHeader_Invite.via); /* @sic R5s140350 sic@ */ + v_MessageHeader_Response.fromField := f_IMS_Response_FromHeaderRX(v_MessageHeader_Invite); /* @sic R5s130453 sic@ */ + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderRX(v_MessageHeader_Invite, tsc_Is100Response); /* @sic R5s130453, R5s130685 sic@ */ + v_MessageHeader_Response.callId := v_MessageHeader_Invite.callId; + v_MessageHeader_Response.cSeq := v_MessageHeader_Invite.cSeq; + + return v_MessageHeader_Response; + } + + /* + * @desc 180 Ringing for INVITE (see TS 34.229, A.2.6) + * @param p_InviteRequest + * @param p_IsEmergency (default value: false) + * @param p_ContentType (default value: *) + * @param p_ContentLength (default value: ?) + * @return template (present) MessageHeader + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_InviteResponse_180_MessageHeaderRX(template (value) INVITE_Request p_InviteRequest, + boolean p_IsEmergency := false, + template ContentType p_ContentType := *, + template (present) ContentLength p_ContentLength := ?) runs on IMS_PTC return template (present) MessageHeader + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5-140975: new parameters p_ContentType, p_ContentLength to ensure that the content type is omit in case of C.11 sic@ */ + var template (value) MessageHeader v_MessageHeader_Invite := p_InviteRequest.msgHeader; + var template (present) MessageHeader v_MessageHeader_Response := cr_MessageHeader_Dummy; + var integer v_Port_us := f_IMS_PTC_GetPort_us(); + + v_MessageHeader_Response.recordRoute := v_MessageHeader_Invite.recordRoute; /* @sic R5s130510 change 9 sic@ */ + v_MessageHeader_Response.via := f_Via_ResponseRX(v_MessageHeader_Invite.via); /* @sic R5s140350 sic@ */ + v_MessageHeader_Response.fromField := f_IMS_Response_FromHeaderRX(v_MessageHeader_Invite); /* @sic R5s130453 sic@ */ + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderRX(v_MessageHeader_Invite); /* @sic R5s130453 sic@ */ + + v_MessageHeader_Response.contact := cr_Contact(cr_SipUri_HostPort(?, v_Port_us), cr_FeatureParam_3gpp_icsi_ref); // host address needs to be checked after receiving + v_MessageHeader_Response.callId := v_MessageHeader_Invite.callId; + v_MessageHeader_Response.sessionId := v_MessageHeader_Invite.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := v_MessageHeader_Invite.cSeq; + v_MessageHeader_Response.contentType := p_ContentType; /* @sic R5-140975 sic@ */ + v_MessageHeader_Response.contentLength := p_ContentLength; /* @sic R5-140975 sic@ */ + + v_MessageHeader_Response.pAccessNetworkInfo := cr_PAccessNetworkInfoDef(f_IMS_PTC_RanType_GetString()); // NOTE: acc. A.2.6 there is no condition regarding GIBA + if (p_IsEmergency) { // Condition A4 + v_MessageHeader_Response.pAssertedID := cr_PAssertedId(f_SIP_BuildSipUri_lr_RX(tsc_IMS_Emergency_TelUri)); + } + return v_MessageHeader_Response; + } + + /* + * @desc 183 Session Progress for INVITE (see TS 34.229, A.2.3) + * @param p_InviteRequest + * @param p_AdditionalOptionTagsForRequire (default value: tsc_OptionTagList_Empty) + * @return template (present) MessageHeader + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_InviteResponse_183_MessageHeaderRX(template (value) INVITE_Request p_InviteRequest, + OptionTag_List p_AdditionalOptionTagsForRequire := tsc_OptionTagList_Empty) + runs on IMS_PTC return template (present) MessageHeader + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + var template (value) MessageHeader v_MessageHeader_Invite := p_InviteRequest.msgHeader; + var template (present) MessageHeader v_MessageHeader_Response := cr_MessageHeader_Dummy; + var integer v_Port_us := f_IMS_PTC_GetPort_us(); + var OptionTag_List v_OptionTag_List := tsc_OptionTagList_100rel & p_AdditionalOptionTagsForRequire; // @sic R5-133629 sic@ + + v_MessageHeader_Response.via := f_Via_ResponseRX(v_MessageHeader_Invite.via); /* @sic R5s140350 sic@ */ + v_MessageHeader_Response.recordRoute := v_MessageHeader_Invite.recordRoute; /* @sic R5s130510 change 6.1, R5-135004 change 1 sic@ */ + v_MessageHeader_Response.require := cr_Require(v_OptionTag_List); + v_MessageHeader_Response.fromField := f_IMS_Response_FromHeaderRX(v_MessageHeader_Invite); /* @sic R5s130453 sic@ */ + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderRX(v_MessageHeader_Invite); /* @sic R5s130453 sic@ */ + v_MessageHeader_Response.contact := cr_Contact(cr_SipUri_HostPort(?, v_Port_us), cr_FeatureParam_3gpp_icsi_ref); // host address needs to be checked after receiving + v_MessageHeader_Response.rSeq := cr_RSeq(?); /* @sic R5s130510 sic@ */ + v_MessageHeader_Response.callId := v_MessageHeader_Invite.callId; + v_MessageHeader_Response.sessionId := v_MessageHeader_Invite.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := v_MessageHeader_Invite.cSeq; + v_MessageHeader_Response.contentType := cr_ContentTypeSDP; + + return v_MessageHeader_Response; + } + + function f_IMS_Accepted_202_MessageHeaderRX(template (value) MessageHeader p_MessageHeader_Request) return template (present) MessageHeader + { // 202 Accepted (see TS 34.229, A.3.3) + + var template (present) MessageHeader v_MessageHeader_Response := cr_MessageHeader_Dummy; + + v_MessageHeader_Response.via := f_Via_ResponseRX(p_MessageHeader_Request.via); /* @sic R5s140350 sic@ */ + v_MessageHeader_Response.fromField := f_IMS_Response_FromHeaderRX(p_MessageHeader_Request); /* @sic R5s130453 sic@ */ + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderRX(p_MessageHeader_Request); /* @sic R5-132063 sic@ */ + v_MessageHeader_Response.callId := p_MessageHeader_Request.callId; + v_MessageHeader_Response.sessionId := p_MessageHeader_Request.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := p_MessageHeader_Request.cSeq; + + return v_MessageHeader_Response; + } + + /* + * @desc 380 Alternative Service (see TS 34.229, A.4.1) + * @param p_InviteRequest + * @return template (value) MessageHeader + * @status APPROVED (IMS) + */ + function f_IMS_InviteResponse_380_MessageHeaderTX(INVITE_Request p_InviteRequest) runs on IMS_PTC return template (value) MessageHeader + { + var MessageHeader v_MessageHeader_Invite := p_InviteRequest.msgHeader; + var template (value) MessageHeader v_MessageHeader_Response := cs_MessageHeader_Dummy; + + v_MessageHeader_Response.via := v_MessageHeader_Invite.via; + v_MessageHeader_Response.fromField := v_MessageHeader_Invite.fromField; + v_MessageHeader_Response.toField := cs_ToDef(f_Addr_Union_GetSipUrl(v_MessageHeader_Invite.toField.addressField)); + v_MessageHeader_Response.pAssertedID := cs_PAssertedId(cs_SipUri_HostPort_lr(f_IMS_PTC_Pcscf_Get())); /* @sic R5-144747: removal of px_IMS_Pcscf_Emg => f_IMS_PTC_Pcscf_Get sic@ */ + v_MessageHeader_Response.callId := v_MessageHeader_Invite.callId; + v_MessageHeader_Response.sessionId := v_MessageHeader_Invite.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := v_MessageHeader_Invite.cSeq; + v_MessageHeader_Response.contentType := cs_ContentType("application/3gpp-ims+xml"); + + return v_MessageHeader_Response; + } + + /* + * @desc common 4XX response to INVITE (e.g. 487 Request Terminated (see TS 34.229, A.2.16) + * @param p_MessageHeader_Request + * @return template (present) MessageHeader + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_InviteResponse_4XX_MessageHeaderRX(template (value) MessageHeader p_MessageHeader_Request) return template (present) MessageHeader + { + var template (present) MessageHeader v_MessageHeader_Response := cr_MessageHeader_Dummy; + + v_MessageHeader_Response.via := f_Via_ResponseRX(p_MessageHeader_Request.via); /* @sic R5s140350 sic@ */ + v_MessageHeader_Response.fromField := f_IMS_Response_FromHeaderRX(p_MessageHeader_Request); /* @sic R5s130453 sic@ */ + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderRX(p_MessageHeader_Request); /* @sic R5s130453 sic@ */ + v_MessageHeader_Response.callId := p_MessageHeader_Request.callId; + v_MessageHeader_Response.sessionId := p_MessageHeader_Request.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := p_MessageHeader_Request.cSeq; + + return v_MessageHeader_Response; + } + + //============================================================================ + // Functions to build requests to be sent to the UE + //---------------------------------------------------------------------------- + /* + * @desc INVITE acc. to condition A4 - INVITE creating a dialog, or A5 - re-INVITE within a dialog (see TS 34.229, A.2.9) + * @param p_AdditionalOptionTagsForSupported (default value: tsc_OptionTagList_Empty) + * @param p_Context (default value: A_2_1_A4) + * @param p_SrvccAlertingSupported (default value: pc_IMS_SRVCCAlert) + * @param p_MTSI (default value: pc_MultimediaTelephonyService) + * @param p_Video (default value: tsc_IMS_VideoFeature) + * @param p_SessionIdSupported (default value: false) + * @param p_CSeqValue (default value: 4711) + * @return template (value) MessageHeader + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_InviteRequest_MessageHeaderTX(OptionTag_List p_AdditionalOptionTagsForSupported := tsc_OptionTagList_Empty, + INVITE_A_2_1_Context_Type p_Context := A_2_1_A4, + boolean p_SrvccAlertingSupported := pc_IMS_SRVCCAlert, + boolean p_MTSI := pc_MultimediaTelephonyService, /* @sic R5s130510 additional change 1: tsc_IMS_MTSI replaced by pc_MultimediaTelephonyService sic@ */ + boolean p_Video := tsc_IMS_VideoFeature, + boolean p_SessionIdSupported := false, + integer p_CSeqValue := 4711) runs on IMS_PTC return template (value) MessageHeader + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5-140915 MT call hold requires re-INVITE => new parameter p_Context for A4/A5 sic@ */ + /* @sic R5s140385 change 6: new parameter p_SrvccAlertingSupported sic@ */ + var template (value) MessageHeader v_MessageHeader_Invite := cs_MessageHeader_Dummy; + var template (value) SipUrl v_PublicUserId_SipUrl := f_IMS_PTC_ImsInfo_GetSipUriTX(defaultId); // @sic R5-133304: use default public user id sic@ + var template (omit) SemicolonParam_List v_ContactParams := omit; + var template (value) GenericParam v_GenericParam_3gpp_icsi_ref; + var charstring v_CallIdString := f_IMS_PTC_GenerateCallId("INVITE"); + var charstring v_FromTag := f_IMS_GenerateTag("INVITE", "From"); + var template (value) RouteBody_List v_RouteBodyList; + var integer v_CSeqValue; + var template (value) From v_From; + var template (value) To v_To; + var template (value) CallId v_CallId; + var template (omit) SessionId v_SessionId; + + select (p_Context) { + case (A_2_1_A4) { + v_CSeqValue := p_CSeqValue; + v_From := cs_From(f_SIP_BuildSipUri_TX(tsc_IMS_CallerSipAddrStr), v_FromTag); + v_To := cs_ToDef(v_PublicUserId_SipUrl); + v_CallId := cs_CallId(v_CallIdString); + v_RouteBodyList := f_IMS_RouteSet_MT_Call_TX(); /* @sic R5s140324 - MCC160 Implementation sic@ */ + if (p_SessionIdSupported) { /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_SessionId := cs_SessionId(f_IMS_SessionId_TX_Generate(v_CallIdString)); + } else { + v_SessionId := omit; + } + } + case (A_2_1_A5) { + v_CSeqValue := f_IMS_PTC_ImsInfo_CseqIncr(dialogLocal); + v_From := f_IMS_RequestInDialog_FromHeaderTX(); + v_To := f_IMS_RequestInDialog_ToHeaderTX(); + v_CallId := f_IMS_PTC_ImsInfo_DialogGetCallId(); + if (f_IMS_PTC_ImsInfo_DialogIsMO()) { /* @sic R5s140324 - MCC160 Implementation sic@ */ + v_RouteBodyList := fl_RouteSet_ReverseOrder(f_IMS_RouteSet_MO_Call_TX()); /* @sic R5-142320, R5-144601 sic@ */ + } else { + v_RouteBodyList := f_IMS_RouteSet_MT_Call_TX(); + } + v_SessionId := f_IMS_PTC_ImsInfo_DialogGetSessionId(); + } + case else { + FatalError(__FILE__, __LINE__, "unknown context"); + } + } + + v_MessageHeader_Invite.via := f_IMS_InviteRequest_ViaTX(); /* @sic R5-134116: New function fl_IMS_InviteRequest_ViaTX sic@ */ + v_MessageHeader_Invite.recordRoute := cs_RecordRoute(v_RouteBodyList); + v_MessageHeader_Invite.fromField := v_From; + v_MessageHeader_Invite.toField := v_To; + v_MessageHeader_Invite.callId := v_CallId; + v_MessageHeader_Invite.sessionId := v_SessionId; + v_MessageHeader_Invite.cSeq := cs_CseqDef(v_CSeqValue, "INVITE"); + v_MessageHeader_Invite.supported := cs_Supported(tsc_OptionTagList_100rel & p_AdditionalOptionTagsForSupported); + v_MessageHeader_Invite.pCalledPartyID := cs_PCalledPartyId(v_PublicUserId_SipUrl); + v_MessageHeader_Invite.contentType := cs_ContentTypeSDP; + v_MessageHeader_Invite.maxForwards := cs_MaxForwardsDef; + v_MessageHeader_Invite.accept := cs_Accept({cs_AcceptBody("application/sdp"), cs_AcceptBody("application/3gpp-ims+xml")}); + + if (p_MTSI) { + v_GenericParam_3gpp_icsi_ref := cs_GenericParam_Common(tsc_IMS_FeatureParamId_3gpp_icsi_ref, cs_GenValueQuoted(cs_IMS_EncodedFeatureParamValue_3gpp_icsi_ref)); // @sic R5s130738: string needs to be quoted; R5-142247 sic@ + + if (p_Context == A_2_1_A4) { // @sic R5-142949 sic@ + v_MessageHeader_Invite.pAssertedService := cs_PAssertedService(tsc_IMS_FeatureParamValue_3gpp_icsi_ref); /* @sic R5s140565 change 1 sic@ */ + v_MessageHeader_Invite.acceptContact := cs_AcceptContact({v_GenericParam_3gpp_icsi_ref}); + } + v_ContactParams := f_SemicolonParam_List_Add_TX(v_ContactParams, v_GenericParam_3gpp_icsi_ref); + } + if (p_Video) { // @sic R5s130109 sic@ + v_ContactParams := f_SemicolonParam_List_Add_TX(v_ContactParams, cs_GenericParam("video")); + } + v_MessageHeader_Invite.contact := cs_Contact(f_SIP_BuildSipUri_TX(tsc_IMS_CallerSipAddrStr, tsc_IMS_CallerPort), v_ContactParams); + + if (p_Context != A_2_1_A5) { + if (p_SrvccAlertingSupported) { /* @sic R5s140385 change 6 - NOTE: feature caps shall only be inserted when creating a voice call sic@ */ + v_MessageHeader_Invite.featureCaps := cs_FeatureCaps(tsc_IMS_FeatureCap_SrvccAlerting); + } + + f_IMS_PTC_ImsInfo_DialogInit(dialogLocal, valueof(v_MessageHeader_Invite)); + } + return v_MessageHeader_Invite; + } + + /* + * @desc PRACK (see TS 34.229, A.2.4) + * @param p_InviteRequest + * @param p_MessageHeader_PrevReliableResponse + * @param p_ContentType (default value: omit) + * @return template (value) MessageHeader + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_PrackRequest_MessageHeaderTX(template (value) INVITE_Request p_InviteRequest, + MessageHeader p_MessageHeader_PrevReliableResponse, + template (omit) ContentType p_ContentType := omit) runs on IMS_PTC return template (value) MessageHeader + { /* p_MessageHeader_PrevReliableResponse .. MessageHeader of "the reliable response" (e.g. previous 183 response) */ + var template (value) MessageHeader v_MessageHeader_Invite := p_InviteRequest.msgHeader; + var template (value) MessageHeader v_MessageHeader_Prack := cs_MessageHeader_Dummy; + var template (value) Via v_Via := fl_Via_AddSigCompParam(v_MessageHeader_Invite.via); + var CSeq v_CSeq := p_MessageHeader_PrevReliableResponse.cSeq; /* sequence number of the reliable response which is to be acknowledged (-> rAck); see RFC 3262 cl. 7.2 */ + var integer v_CSeqValue := f_IMS_PTC_ImsInfo_CseqIncr(dialogLocal); /* incremented sequence number of the network side @sic R5-133188 sic@ */ + var integer v_ResponseNumber := p_MessageHeader_PrevReliableResponse.rSeq.responseNum; /* @sic R5s130510 additional change 2.1 sic@ */ + + v_MessageHeader_Prack.via := f_IMS_ViaRefreshBranches(v_Via); /* @sic R5s130561 change 1: refresh branches sic@ */ + v_MessageHeader_Prack.toField := f_IMS_RequestInDialog_ToHeaderTX(); + v_MessageHeader_Prack.fromField := f_IMS_RequestInDialog_FromHeaderTX(); + v_MessageHeader_Prack.callId := v_MessageHeader_Invite.callId; + v_MessageHeader_Prack.sessionId := v_MessageHeader_Invite.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Prack.cSeq := cs_CseqDef(v_CSeqValue, "PRACK"); + v_MessageHeader_Prack.maxForwards := cs_MaxForwardsDef; + v_MessageHeader_Prack.rAck := cs_RAckDef(v_ResponseNumber, v_CSeq.seqNumber, v_CSeq.method); + v_MessageHeader_Prack.contentType := p_ContentType; + + return v_MessageHeader_Prack; + } + + /* + * @desc UPDATE (see TS 34.229, A.2.5) + * @param p_InviteRequest + * @return template (value) MessageHeader + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_UpdateRequest_MessageHeaderTX(template (value) INVITE_Request p_InviteRequest) runs on IMS_PTC return template (value) MessageHeader + { + var template (value) MessageHeader v_MessageHeader_Invite := p_InviteRequest.msgHeader; + var template (value) MessageHeader v_MessageHeader_Update := cs_MessageHeader_Dummy; + var template (value) Via v_Via := fl_Via_AddSigCompParam(v_MessageHeader_Invite.via); + var integer v_CSeqValue := f_IMS_PTC_ImsInfo_CseqIncr(dialogLocal); + + v_MessageHeader_Update.via := f_IMS_ViaRefreshBranches(v_Via); /* @sic R5s130561 change 2: refresh branches sic@ */ + v_MessageHeader_Update.toField := f_IMS_RequestInDialog_ToHeaderTX(); + v_MessageHeader_Update.fromField := f_IMS_RequestInDialog_FromHeaderTX(); + v_MessageHeader_Update.callId := v_MessageHeader_Invite.callId; + v_MessageHeader_Update.sessionId := v_MessageHeader_Invite.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Update.cSeq := cs_CseqDef(v_CSeqValue, "UPDATE"); + v_MessageHeader_Update.maxForwards := cs_MaxForwardsDef; + v_MessageHeader_Update.contentType := cs_ContentTypeSDP; + + return v_MessageHeader_Update; + } + + /* + * @desc ACK (see TS 34.229, A.2.7) + * @param p_InviteRequest + * @param p_StatusLine_PrevResponse (default value: c_statusLine200) + * @return template (value) MessageHeader + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_AckRequest_MessageHeaderTX(template (value) INVITE_Request p_InviteRequest, + template (value) StatusLine p_StatusLine_PrevResponse := c_statusLine200) runs on IMS_PTC return template (value) MessageHeader + { /* @sic R5-141115: new parameter p_StatusLine_PrevResponse sic@ */ + /* @sic R5s140194, R5-142319: no Route header in DL sic@ */ + var template (value) MessageHeader v_MessageHeader_Invite := p_InviteRequest.msgHeader; + var template (value) MessageHeader v_MessageHeader_Ack := cs_MessageHeader_Dummy; + var template (value) Via v_Via := fl_Via_AddSigCompParam(v_MessageHeader_Invite.via); + var integer v_CSeqValue := f_MessageHeader_GetCseqValue(v_MessageHeader_Invite); // for ACK the CSeq value of the corresponding INVATE has to be used + var integer v_StatusCode := valueof(p_StatusLine_PrevResponse.statusCode); + var boolean v_Is2xxResponse := not ((v_StatusCode < 200) or (v_StatusCode > 299)); // @sic R5s140264: missing braces sic@ + + if (v_Is2xxResponse) { /* @sic R5-141115, R5s140092 sic@ */ + v_MessageHeader_Ack.via := f_IMS_ViaRefreshBranches(v_Via); /* @sic R5s130510 sic@ */ + } else { + v_MessageHeader_Ack.via := v_MessageHeader_Invite.via; /* @sic R5s140092 change 6 sic@ */ + } + + v_MessageHeader_Ack.toField := f_IMS_RequestInDialog_ToHeaderTX(); + v_MessageHeader_Ack.fromField := f_IMS_RequestInDialog_FromHeaderTX(); + v_MessageHeader_Ack.callId := v_MessageHeader_Invite.callId; + v_MessageHeader_Ack.cSeq := cs_CseqDef(v_CSeqValue, "ACK"); + v_MessageHeader_Ack.maxForwards := cs_MaxForwardsDef; + v_MessageHeader_Ack.sessionId := v_MessageHeader_Invite.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + + return v_MessageHeader_Ack; + } + + /* + * @desc BYE (see TS 34.229, A.2.8) + * @param p_InviteRequest + * @return template (value) MessageHeader + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_ByeRequest_MessageHeaderTX(template (value) INVITE_Request p_InviteRequest) runs on IMS_PTC return template (value) MessageHeader + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + var template (value) MessageHeader v_MessageHeader_Invite := p_InviteRequest.msgHeader; + var template (value) MessageHeader v_MessageHeader_Bye := cs_MessageHeader_Dummy; + var template (value) Via v_Via; + var integer v_CSeqValue := f_IMS_PTC_ImsInfo_CseqIncr(dialogLocal); + + if (fl_IMS_InviteRequestIsMO(p_InviteRequest)) { /* @sic R5-134116: distinguish MO/MT call establishment sic@ */ + v_Via := f_IMS_InviteRequest_ViaTX(); + } else { + v_Via := fl_Via_AddSigCompParam(v_MessageHeader_Invite.via); + v_Via := f_IMS_ViaRefreshBranches(v_Via); /* @sic R5s130510 sic@ */ + } + + v_MessageHeader_Bye.via := v_Via; + v_MessageHeader_Bye.callId := v_MessageHeader_Invite.callId; + v_MessageHeader_Bye.sessionId := v_MessageHeader_Invite.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Bye.cSeq := cs_CseqDef(v_CSeqValue, "BYE"); + v_MessageHeader_Bye.maxForwards := cs_MaxForwardsDef; + v_MessageHeader_Bye.toField := f_IMS_RequestInDialog_ToHeaderTX(); + v_MessageHeader_Bye.fromField := f_IMS_RequestInDialog_FromHeaderTX(); + + return v_MessageHeader_Bye; + } + + //============================================================================ + // Functions to build requests to be received from the UE + //---------------------------------------------------------------------------- + /* + * @desc INVITE acc. to condition A4 - INVITE creating a dialog (see TS 34.229, A.2.1) + * @param p_MessageHeader (default value: cr_MessageHeader_Dummy) + * @param p_ExpectedCalleeUri + * @param p_AdditionalOptionTagsForSupported (default value: tsc_OptionTagList_Empty) + * @param p_Context (default value: A_2_1_A4) + * @param p_A3 (default value: pc_MultimediaTelephonyService) + * @param p_A8 (default value: pc_IMS_Geolocation) + * @param p_A9 (default value: false) + * @param p_A11 (default value: false) + * @return template (present) MessageHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_InviteRequest_MessageHeaderRX(template (present) MessageHeader p_MessageHeader := cr_MessageHeader_Dummy, + template (present) SipUrl p_ExpectedCalleeUri, + OptionTag_List p_AdditionalOptionTagsForSupported := tsc_OptionTagList_Empty, + INVITE_A_2_1_Context_Type p_Context := A_2_1_A4, + boolean p_A3 := pc_MultimediaTelephonyService, /* @sic R5s130510 additional change 1: tsc_IMS_MTSI replaced by pc_MultimediaTelephonyService sic@ */ + boolean p_A8 := pc_IMS_Geolocation, + boolean p_A9 := false, + boolean p_A11 := false) + runs on IMS_PTC return template (present) MessageHeader + { /* p_A3: MTSI + p_A8: UE uses Geolocation header to provide its geographical location for emergency session setup, has obtained its location and is setting up an emergency session + p_A9: UE supports Session-ID + p_A11: INVITE for creating a video call and UE supports video media feature tag + NOTE1: If SigComp shall be applied the param "comp=sigcomp" is optional for Via, Route and Contact + NOTE2: condition A5 (re-INVITE within a dialog) is not considered yet and will have impact e.g. on checking of the From/To headers */ + /* @sic R5-133629: 100rel option tag shall always be included in INVITE; further option tags may be added => p_Supported replaced by p_AdditionalOptionTagsForSupported; Cleanup of functions for MO Call Setup sic@ */ + /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5s140017 MCC160 implementation: checks for A_2_1_A5 sic@ */ + /* @sic R5-140799: additional parameter p_MessageHeader to deal with Reason header sic@ */ + var boolean v_IsGiba := f_IMS_PTC_SecurityScheme_IsGiba(); // => A1/A2 + var template (present) MessageHeader v_MessageHeader_Invite := p_MessageHeader; + var template (present) RouteBody_List v_RouteBodyList; + var IMS_ProtectedPorts_Type v_Protected; + var template integer v_Port_us := *; + var template integer v_Port_ps := *; + var template DisplayName v_DisplayName := *; + var template (present) SipUrl v_SipUrlFrom := ?; /* per default any SIP URI is accepted in the From header in the first place; + further checks may be applied in f_IMS_A_2_1_Invite_CommonChecks (depending on the conditions acc. to A.2.1 */ + var template (present) charstring v_MediaType := "application/sdp"; + var template (present) CallId v_CallId; + var template (present) integer v_CSeqValue := ?; + var template (present) From v_From; + var template (present) To v_To; + var template SessionId v_SessionId; + var OptionTag_List v_OptionTag_List := tsc_OptionTagList_100rel & p_AdditionalOptionTagsForSupported; + + if (p_Context == A_2_1_A6) { // INVITE for creating an emergency session in case of no registration + // Via, Route, Contact: ports to be used + v_Port_us := ?; + v_Port_ps := tsc_IMS_PortNumber_5060; + // From: Display + v_DisplayName := cr_DisplayName("Anonymous"); /* @sic R5s140005, R5-140901, R5w140111 sic@ */ + } + else { + // Via, Route, Contact: ports to be used + if (not v_IsGiba or (p_Context == A_2_1_A7)) { + v_Protected := f_IMS_PTC_Security_GetProtectedPorts(); + v_Port_us := v_Protected.Port_us; + v_Port_ps := v_Protected.Port_ps; + } + } + + if (p_Context == A_2_1_A5) { /* re-invite @sic R5s140017 MCC160 implementation sic@ */ + v_RouteBodyList := fl_RouteSet_RouteBodyList_RX(); + v_CallId := f_IMS_PTC_ImsInfo_DialogGetCallId(); + v_From := f_IMS_RequestInDialog_FromHeaderRX(); + v_To := f_IMS_RequestInDialog_ToHeaderRX(); + v_CSeqValue := f_IMS_RequestInDialog_CSeqValueRX(); /* @sic R5s140235, R5s140385 change 3 MCC160 implementation sic@ */ + v_SessionId := f_IMS_PTC_ImsInfo_DialogGetSessionId(); + } + else { /* normal case: no re-invite */ + // route body acc. to conditions in A.2.1 + v_RouteBodyList[0] := cr_RouteBody(*, cr_SipUri_HostPort_lr(f_IMS_PTC_Pcscf_Get(), v_Port_ps)); + if (not match(p_Context, (A_2_1_A6, A_2_1_A7))) { // => no emergency call + v_RouteBodyList[1] := cr_RouteBody(*, cr_SipUri_HostPort_lr(px_IMS_Scscf)); + } + if (p_A8) { + v_MessageHeader_Invite.geolocation := cr_GeolocationAny; + v_MessageHeader_Invite.geolocationRouting := cr_GeolocationRoutingSupported; // @sic R5-134798 sic@ + v_MediaType := "multipart/mixed"; + } + v_CallId := cr_CallId(?); + v_From := cr_From(v_DisplayName, v_SipUrlFrom); + v_To := cr_ToDef(p_ExpectedCalleeUri); + v_SessionId := f_IMS_SessionId_RX_IfSupported(p_A9); + } + + v_MessageHeader_Invite.via := f_IMS_InviteRequest_ViaRX(); /* additional checks in f_IMS_A_2_1_Invite_CommonChecks: check of FQDN or IP address + @sic R5-133358: rport is optional for tcp sic@ */ + v_MessageHeader_Invite.route := cr_Route(v_RouteBodyList); + v_MessageHeader_Invite.fromField := v_From; /* additional checks in f_IMS_A_2_1_Invite_CommonChecks: check of FQDN or IP address, check against P-Preferred-Identity header */ + v_MessageHeader_Invite.toField := v_To; /* additional checks in f_IMS_A_2_1_Invite_CommonChecks: check of tag */ + v_MessageHeader_Invite.callId := v_CallId; /* additional checks in f_IMS_A_2_1_Invite_CommonChecks: value acc. to A4 or A5 */ + v_MessageHeader_Invite.sessionId := v_SessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Invite.cSeq := cr_CseqDef(v_CSeqValue, "INVITE"); /* additional checks in f_IMS_A_2_1_Invite_CommonChecks: A5 */ + v_MessageHeader_Invite.supported := cr_Supported(v_OptionTag_List); + v_MessageHeader_Invite.contact := cr_Contact(cr_SipUri_HostPort(?, v_Port_us)); /* additional checks in f_IMS_A_2_1_Invite_CommonChecks: check of FQDN or IP address, check of feature-param for A3, A6, A10, A12 */ + v_MessageHeader_Invite.contentType := cr_ContentType(v_MediaType); + v_MessageHeader_Invite.maxForwards := cr_MaxForwardsDef; + + // additional headers for specific conditions: + if (v_IsGiba or (p_Context == A_2_1_A6)) { + v_MessageHeader_Invite.securityVerify := omit; + if (p_Context == A_2_1_A6) { + v_MessageHeader_Invite.require := omit; + v_MessageHeader_Invite.proxyRequire := omit; + } + } else { // -> A1 or A7 + v_MessageHeader_Invite.securityVerify := f_IMS_PTC_BuildSecurityVerifyHeader(); + if (p_Context != A_2_1_A5) { /* @sic R5s140017 change 9.3 sic@ */ + v_MessageHeader_Invite.require := cr_RequireSecAgree; + v_MessageHeader_Invite.proxyRequire := cr_ProxyRequireDef; + } + } + + if (not v_IsGiba) { + v_MessageHeader_Invite.pAccessNetworkInfo := cr_PAccessNetworkInfoDef(f_IMS_PTC_RanType_GetString()); + } + if (p_Context == A_2_1_A4) { /* @sic R5s140017 change 9.3 sic@ */ + v_MessageHeader_Invite.accept := cr_Accept({cr_AcceptBody("application/sdp"), cr_AcceptBody("application/3gpp-ims+xml"), *}); + } + if (p_A8) { + v_MessageHeader_Invite.geolocation := cr_GeolocationAny; // Checked in f_IMS_A_2_1_Invite_CommonChecks + v_MessageHeader_Invite.geolocationRouting := cr_GeolocationRoutingAny; // Checked in f_IMS_A_2_1_Invite_CommonChecks @sic R5-133151 sic@ + } + + if (p_Context == A_2_1_A7) { + v_MessageHeader_Invite.pPreferredID := cr_PPreferredID(?); // Checked in f_IMS_A_2_1_Invite_CommonChecks + } + if (p_A3 and (p_Context == A_2_1_A4)) { /* @sic R5s140263 change 5, modified by R5-142949 (-> A4 only) sic@ */ + v_MessageHeader_Invite.pPreferredService := cr_PPreferredService(tsc_IMS_FeatureParamValue_3gpp_icsi_ref); /* @sic R5s140565 change 2 sic@ */ + } + if ((p_A3 and (p_Context == A_2_1_A4)) or p_A11) { /* @sic R5-142949 sic@ */ + v_MessageHeader_Invite.acceptContact := cr_AcceptContact; // Checked in f_IMS_A_2_1_Invite_CommonChecks (depending on conditions) + } + + return v_MessageHeader_Invite; + } + + //---------------------------------------------------------------------------- + /* + * @desc PRACK (see TS 34.229, A.2.4) + * @param p_InviteRequest + * @param p_MessageHeader_PrevReliableResponse + * @param p_ContentType (default value: *) + * @return template (present) MessageHeader + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_PrackRequest_MessageHeaderRX(template (value) INVITE_Request p_InviteRequest, + template (value) MessageHeader p_MessageHeader_PrevReliableResponse, + template ContentType p_ContentType := *) runs on IMS_PTC return template (present) MessageHeader + { /* p_MessageHeader_PrevReliableResponse .. MessageHeader of "the reliable response" (e.g. previous 183 response) */ + var MessageHeader v_MessageHeader_PrevReliableResponse := valueof(p_MessageHeader_PrevReliableResponse); + var template (value) MessageHeader v_MessageHeader_Invite := p_InviteRequest.msgHeader; + var template (present) MessageHeader v_MessageHeader_Prack := cr_MessageHeader_Dummy; + var CSeq v_CSeq := v_MessageHeader_PrevReliableResponse.cSeq; + var integer v_CSeqValue := f_IMS_PTC_ImsInfo_CseqIncr(dialogRemote); /* @sic R5s130497 change 3; R5-133188 sic@ */ + var integer v_ResponseNumber := v_MessageHeader_PrevReliableResponse.rSeq.responseNum; /* @sic R5s130333 change 5.2 sic@ */ + + v_MessageHeader_Prack.via := fl_Via_AsInPrevInvite(v_MessageHeader_Invite.via); // @sic R5s120530 change 3.9 sic@ + v_MessageHeader_Prack.route := fl_Route_ReverseOrderOfRecordRouteRX(v_MessageHeader_PrevReliableResponse.recordRoute); + v_MessageHeader_Prack.toField := f_IMS_RequestInDialog_ToHeaderRX(); /* @sic R5s130497 change 1 - MCC160 implementation; R5s140017 MCC160 implementation sic@ */ + v_MessageHeader_Prack.fromField := f_IMS_RequestInDialog_FromHeaderRX(); /* @sic R5s130497 change 1 - MCC160 implementation; R5s140017 MCC160 implementation sic@ */ + v_MessageHeader_Prack.callId := v_MessageHeader_Invite.callId; + v_MessageHeader_Prack.sessionId := v_MessageHeader_Invite.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Prack.cSeq := cr_CseqDef(v_CSeqValue, "PRACK"); + v_MessageHeader_Prack.maxForwards := cr_MaxForwardsDef; + v_MessageHeader_Prack.rAck := cr_RAckDef(v_ResponseNumber, v_CSeq.seqNumber, v_CSeq.method); + v_MessageHeader_Prack.contentType := p_ContentType; + + return v_MessageHeader_Prack; + } + + /* + * @desc UPDATE (see TS 34.229, A.2.5) + * @param p_InviteRequest + * @return template (present) MessageHeader + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_UpdateRequest_MessageHeaderRX(template (value) INVITE_Request p_InviteRequest) + runs on IMS_PTC return template (present) MessageHeader + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + var template (value) MessageHeader v_MessageHeader_Invite := p_InviteRequest.msgHeader; + var template (present) MessageHeader v_MessageHeader_Update := cr_MessageHeader_Dummy; + var template (present) integer v_CSeqValue := f_IMS_RequestInDialog_CSeqValueRX(); + var template (present) RouteBody_List v_RouteBodyList := fl_RouteSet_RouteBodyList_RX(); /* @sic R5s140385 change 3 - MCC160 Implementation: sic@ + In case of MO call establishment the results in f_IMS_PTC_ImsInfo_DialogIsMO + what is the same as used in f_IMS_InviteResponse_183_MessageHeaderTX */ + var template (present) Via v_Via; + + if (f_IMS_PTC_ImsInfo_DialogIsMO()) { /* @sic R5s140385 change 3 - MCC160 Implementation sic@ */ + v_Via := fl_Via_AsInPrevInvite(v_MessageHeader_Invite.via); // @sic R5s120530 change 3.10 sic@ + } else { + v_Via := f_IMS_InviteRequest_ViaRX(); /* @sic R5s140385 change 3 - MCC160 Implementation: same as in INVITE sic@ */ + } + + v_MessageHeader_Update.via := v_Via; + v_MessageHeader_Update.route := cr_Route(v_RouteBodyList); + v_MessageHeader_Update.toField := f_IMS_RequestInDialog_ToHeaderRX(); /* @sic R5s130497 change 1 - MCC160 implementation; R5s140017 MCC160 implementation sic@ */ + v_MessageHeader_Update.fromField := f_IMS_RequestInDialog_FromHeaderRX(); /* @sic R5s130497 change 1 - MCC160 implementation; R5s140017 MCC160 implementation sic@ */ + v_MessageHeader_Update.callId := v_MessageHeader_Invite.callId; + v_MessageHeader_Update.sessionId := v_MessageHeader_Invite.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Update.cSeq := cr_CseqDef(v_CSeqValue, "UPDATE"); + v_MessageHeader_Update.maxForwards := cr_MaxForwardsDef; + v_MessageHeader_Update.contentType := cr_ContentTypeSDP; + + if (not f_IMS_PTC_SecurityScheme_IsGiba()) { + v_MessageHeader_Update.require := cr_RequireSecAgree; + v_MessageHeader_Update.proxyRequire := cr_ProxyRequireDef; + v_MessageHeader_Update.securityVerify := f_IMS_PTC_BuildSecurityVerifyHeader(); + v_MessageHeader_Update.pAccessNetworkInfo := cr_PAccessNetworkInfoDef(f_IMS_PTC_RanType_GetString()); + } else { + v_MessageHeader_Update.securityVerify := omit; + } + + return v_MessageHeader_Update; + } + + /* + * @desc ACK (see TS 34.229, A.2.7) + * @param p_InviteRequest + * @param p_StatusLine_PrevResponse + * @param p_IsEmergency (default value: false) + * @param p_IsReInvite (default value: false) + * @return template (present) MessageHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_AckRequest_MessageHeaderRX(template (value) INVITE_Request p_InviteRequest, + template (value) StatusLine p_StatusLine_PrevResponse, + boolean p_IsEmergency := false, + boolean p_IsReInvite := false) + runs on IMS_PTC return template (present) MessageHeader + { /* @sic R5s130684: p_StatusLine_PrevResponse made mandatory, p_MessageHeader_PrevResponse removed, new parameter p_IsGiba sic@ */ + /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5s130897 change 2: new parameter p_IsEmergency sic@ */ + /* @sic R5-141115: new parameter p_IsReInvite sic@ */ + var template (value) MessageHeader v_MessageHeader_Invite := p_InviteRequest.msgHeader; + var template (present) MessageHeader v_MessageHeader_Ack := cr_MessageHeader_Dummy; + var integer v_CSeqValue := f_MessageHeader_GetCseqValue(v_MessageHeader_Invite); + var integer v_StatusCode := valueof(p_StatusLine_PrevResponse.statusCode); + var boolean v_Is2xxResponse := not ((v_StatusCode < 200) or (v_StatusCode > 299)); // @sic R5s140264: missing braces sic@ + var template RouteBody_List v_RouteBodyList; + + if (p_IsReInvite or not v_Is2xxResponse) { /* @sic R5-141115 sic@ */ + v_RouteBodyList := p_InviteRequest.msgHeader.route.routeBody; /* @sic R5-134958, R5s130885: use the Route header of the INVITE in case of e.g. 5XX responses (see RFC 3261 cl. 17.1.1.3) sic@ */ + } else { + v_RouteBodyList := fl_RouteSet_RouteBodyList_RX(p_IsEmergency); /* @sic R5s130684: same as for 180 or 183 response in reverse order sic@ + @sic R5s130897 change 3 sic@ + @sic R5s140017 MCC160 implementation: re-INVITE - Route is different for MO and MT calls sic@ */ + } + + if (v_Is2xxResponse) { /* @sic R5-130682: ACK for 2xx response sic@ */ + v_MessageHeader_Ack.via := fl_Via_AsInPrevInvite(v_MessageHeader_Invite.via); + } else { /* @sic R5-130682: ACK for non-2xx response sic@ */ + v_MessageHeader_Ack.via := v_MessageHeader_Invite.via; + } + + v_MessageHeader_Ack.route := cr_Route(v_RouteBodyList); + v_MessageHeader_Ack.toField := f_IMS_RequestInDialog_ToHeaderRX(); /* @sic R5s130497 change 1 - MCC160 implementation; R5-133303; R5s140017 MCC160 implementation sic@ */ + v_MessageHeader_Ack.fromField := f_IMS_RequestInDialog_FromHeaderRX(); /* @sic R5s130497 change 1 - MCC160 implementation; R5-133303; R5s140017 MCC160 implementation sic@ */ + v_MessageHeader_Ack.callId := v_MessageHeader_Invite.callId; + v_MessageHeader_Ack.sessionId := v_MessageHeader_Invite.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Ack.cSeq := cr_CseqDef(v_CSeqValue, "ACK"); + v_MessageHeader_Ack.maxForwards := cr_MaxForwardsDef; + v_MessageHeader_Ack.pAccessNetworkInfo := omit; + + return v_MessageHeader_Ack; + } + + /* + * @desc BYE (see TS 34.229, A.2.8) + * @param p_InviteRequest + * @param p_IsEmergency (default value: false) + * @return template (present) MessageHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A) + */ + function f_IMS_ByeRequest_MessageHeaderRX(template (value) INVITE_Request p_InviteRequest, + boolean p_IsEmergency := false) runs on IMS_PTC return template (present) MessageHeader + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5s130754 change 3: p_IsEmergency sic@ */ + var template (value) MessageHeader v_MessageHeader_Invite := p_InviteRequest.msgHeader; + var template (present) MessageHeader v_MessageHeader_Bye := cr_MessageHeader_Dummy; + var integer v_CSeqValue := f_IMS_PTC_ImsInfo_CseqIncr(dialogRemote); + var boolean v_SecurityIsStarted := f_IMS_PTC_Security_IsStarted(); /* @sic R5s130988 Change 2-5 - MCC160 Implementation sic@ */ + var template (present) RouteBody_List v_RouteBodyList; + var template (present) Via v_Via; + + if (not fl_IMS_InviteRequestIsMO(p_InviteRequest)) { /* @sic R5-134116: sic@ + in case of MT call establishment the INVITE sent to the UE contains a Record-Route header with a valid route set */ + v_Via := f_IMS_InviteRequest_ViaRX(); + } else { /* in case of MO call establishment the route set as for the 183 response shall be used (in reverse order) */ + v_Via := fl_Via_AsInPrevInvite(v_MessageHeader_Invite.via) + } + v_RouteBodyList := fl_RouteSet_RouteBodyList_RX(p_IsEmergency); /* @sic R5s140017 MCC160 implementation: re-INVITE - Route is different for MO and MT calls sic@ */ + + v_MessageHeader_Bye.via := v_Via; + v_MessageHeader_Bye.route := cr_Route(v_RouteBodyList); + v_MessageHeader_Bye.toField := f_IMS_RequestInDialog_ToHeaderRX(); /* @sic R5s130497 change 1 - MCC160 implementation; R5s140017 MCC160 implementation sic@ */ + v_MessageHeader_Bye.fromField := f_IMS_RequestInDialog_FromHeaderRX(); /* @sic R5s130497 change 1 - MCC160 implementation; R5s140017 MCC160 implementation sic@ */ + v_MessageHeader_Bye.callId := v_MessageHeader_Invite.callId; + v_MessageHeader_Bye.sessionId := v_MessageHeader_Invite.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Bye.cSeq := cr_CseqDef(v_CSeqValue, "BYE"); + v_MessageHeader_Bye.maxForwards := cr_MaxForwardsDef; + + if (v_SecurityIsStarted) { /* @sic R5s130988 Change 2-5 - MCC160 Implementation sic@ */ + v_MessageHeader_Bye.require := cr_RequireSecAgree; + v_MessageHeader_Bye.proxyRequire := cr_ProxyRequireDef; + v_MessageHeader_Bye.securityVerify := f_IMS_PTC_BuildSecurityVerifyHeader(); + v_MessageHeader_Bye.pAccessNetworkInfo := cr_PAccessNetworkInfoDef(f_IMS_PTC_RanType_GetString()); + } else { + v_MessageHeader_Bye.securityVerify := omit; + } + + return v_MessageHeader_Bye; + } + + //============================================================================ + // Check functions + //---------------------------------------------------------------------------- + /* + * @desc check whether call-id has been used previously + * @param p_MessageHeader + * @param p_PrevCallIds + * @status APPROVED (IMS) + */ + function f_IMS_MessageHeader_CheckCallId(MessageHeader p_MessageHeader, + CharStringList_Type p_PrevCallIds) runs on IMS_PTC + { + var integer i; + + for (i:=0; i < lengthof(p_PrevCallIds); i:=i+1) { + if (match(p_MessageHeader.callId.callid, p_PrevCallIds[i])) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "invalid 'CallId': has already been used in previous request)"); + } + } + } + + /* + * @desc Additional checks of the INVITE acc. to A.2.1 + * @param p_IMS_INVITE_REQ + * @param p_Context (default value: A_2_1_A4) + * @param p_A3 (default value: false) + * @param p_A8 (default value: false) + * @param p_A10 (default value: false) + * @param p_A11 (default value: false) + * @param p_SrvccAlertingSupported (default value: pc_IMS_SRVCCAlert) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_A_2_1_Invite_CommonChecks(IMS_DATA_REQ p_IMS_INVITE_REQ, + INVITE_A_2_1_Context_Type p_Context := A_2_1_A4, + boolean p_A3 := false, + boolean p_A8 := false, + boolean p_A10 := false, + boolean p_A11 := false, + boolean p_SrvccAlertingSupported := pc_IMS_SRVCCAlert) runs on IMS_PTC + { // p_A12 .. shall be pc_IMS_SRVCCAlert for voice call; needs to be set to false for non-voice calls + /* @sic R5-133276, R5-133301 Cleanup of functions for MO Call Setup sic@ */ + /* @sic R5s140370 change 7: pc_IMS_SRVCCAlert default value for p_A12, p_A12 renamed to p_SrvccAlertingSupported sic@ */ + var MessageHeader v_MessageHeader := p_IMS_INVITE_REQ.Request.Invite.msgHeader; + var SemicolonParam_List v_ContactParams := {}; + var SemicolonParam_List v_AcceptContactParams := {}; + var InternetProtocol_Type v_Protocol := p_IMS_INVITE_REQ.RoutingInfo.Protocol; + var SipUrl v_SipUrlFrom := f_Addr_Union_GetSipUrl(v_MessageHeader.fromField.addressField); + var SipUrl v_SipUrlPreferred; + var template SipUrl v_ExpectedFromUrl := omit; + var PPreferredIDValue_List v_PreferredIDValueList; + var CharStringList_Type v_PreferredPublicUserIdList; + var boolean v_AllowFQDN := (p_Context != A_2_1_A6); // for A6 there is no FQDN for the UE + var boolean v_CheckRport := (p_Context == A_2_1_A6); + var boolean v_A12 := p_SrvccAlertingSupported and (p_Context != A_2_1_A5); /* @sic R5s140370 change 7 sic@ */ + var integer i; + var charstring v_IMEI; + var template (present) GenValue v_SipInstanceValue; + + if (ispresent(v_MessageHeader.contact.contactBody.contactAddresses[0].contactParams)) { + v_ContactParams := v_MessageHeader.contact.contactBody.contactAddresses[0].contactParams; + } + if (ispresent(v_MessageHeader.acceptContact.acValues[0].acRcParams)) { + v_AcceptContactParams := v_MessageHeader.acceptContact.acValues[0].acRcParams; + } + + // **** Common checks **** + f_IMS_MessageHeader_Request_CheckVia(v_MessageHeader, v_Protocol, v_AllowFQDN, v_CheckRport); // check whether via contains "SIP URI with IP address or FQDN" (see @sic R5s120727 sic@) + f_IMS_MessageHeader_CheckContactAddr(v_MessageHeader); // check whether contact contains "SIP URI with IP address or FQDN" (see @sic R5s120727 sic@) + if (p_Context != A_2_1_A5) { + f_IMS_MessageHeader_CheckTo(v_MessageHeader, noToTag); // check that there is no To tag + } + + // **** Check URIs in From header, P-Preferred-Identity header and further headers **** + select (p_Context) { + case (A_2_1_A4) { + // Check Call-Id + if (match(v_MessageHeader.callId.callid, f_IMS_PTC_ImsInfo_GetCallIdRegistration())) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "A.2.1 condition A4: invalid 'CallId' in INVITE (has to be different than in previous REGISTER)"); + } + // Additional checks regarding SIP URI in the From header @sic R5-130750 change 3 sic@ + if (not f_IMS_PublicUserId_Match(f_IMS_PTC_ImsInfo_GetAllIMPUs(), v_SipUrlFrom)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "invalid 'From'"); + } + if (ispresent(v_MessageHeader.pPreferredID.pPreferredIDValueList)) { + v_PreferredIDValueList := v_MessageHeader.pPreferredID.pPreferredIDValueList; + for (i:=0; i < lengthof(v_PreferredIDValueList); i := i+1) { + v_PreferredPublicUserIdList[i] := f_SIP_SipUrl_GetPublicUserIdentity(f_Addr_Union_GetSipUrl(v_PreferredIDValueList[i])); + } + if (not f_IMS_PublicUserId_Match(v_PreferredPublicUserIdList, v_SipUrlFrom)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "A.2.1 condition A4: invalid 'From': does not match with P-Preferred-Identity"); + } + } + } + case (A_2_1_A5) { + /* @sic R5s140017 MCC160 implementation: no further checks for A5 are needed in this function anymore sic@ */ + } + case (A_2_1_A6) { + v_IMEI := hex2str(px_IMEI_Def); // @sic R5s130756 change 11 sic@ + v_SipInstanceValue := cr_GenValueQuoted(""); /* @sic R5w140111: GenValue sic@ */ + if (not match(v_ContactParams, cr_SemicolonParam_List_OneSpecificParam("+sip.instance", v_SipInstanceValue))) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "IMEI code of the UE, coded as specified in draft-montemurro-gsma-imei-urn, not matching"); + } + } + case (A_2_1_A7) { + v_ExpectedFromUrl := f_IMS_PTC_ImsInfo_GetSipUriRX(emergencyId, *); + if (not match(v_SipUrlFrom, v_ExpectedFromUrl)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "A.2.1 condition A7: invalid 'From'"); + } + v_SipUrlPreferred := f_Addr_Union_GetSipUrl(v_MessageHeader.pPreferredID.pPreferredIDValueList[0]); + if (not match(v_SipUrlPreferred, v_ExpectedFromUrl)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "A.2.1 condition A7: invalid 'P-Preferred-Identity'"); + } + } + case else { + FatalError(__FILE__, __LINE__, "unknown context"); + } + } + + // **** Check further Contact feature-param acc. to further conditions of A.2.1: **** + // + if (p_A3) { // A.1.2 condition A3: MTSI + if (not match(v_ContactParams, cr_FeatureParam_3gpp_icsi_ref)) { // @sic R5s130738: string needs to be quoted; R5-142247 sic@ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "A.2.1 condition A3: Missing feature-param in Contact header"); + } + if (p_Context == A_2_1_A4) { // @sic R5-142949 sic@ + if (not match(v_AcceptContactParams, cr_FeatureParam_3gpp_icsi_ref)) { // @sic R5s130738: string needs to be quoted; R5-142247 sic@ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "A.2.1 condition A3: Missing feature-param in AcceptContact header"); + } + } + } + if (p_A8) { // A.1.2 condition A8: check geolocation and geolocationRouting @sic R5-133151 sic@ + /* NOTE: v_MessageHeader.geolocation and geolocationRouting are checked already by template returned by f_IMS_InviteRequest_MessageHeaderRX: + * geolocation and geolocationRouting to be present. @sic R5-133151 sic@ */ + if (not match(v_MessageHeader.geolocationRouting.state, GEOLOCATION_ROUTING_YES_E)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "A.2.1 condition A8: Wrong geolocation-routing"); + } + } + if (p_A10) { // A.1.2 condition A10: UE indicates video media feature tag in REGISTER and INVITE request + if (not match(v_ContactParams, cr_VideoInContactParams)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "A.2.1 condition A10: Missing feature-param"); + } + } + if (p_A11) { // A.1.2 condition A11: INVITE for creating a video call and UE supports video media feature tag + if (not match(v_AcceptContactParams, cr_VideoInContactParams)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "A.2.1 condition A11: Missing feature-param"); + } + } + if (v_A12) { // A.1.2 condition A12: INVITE for creating a voice call and UE supports g.3gpp.srvcc-alerting media feature tag + if (not match(v_ContactParams, cr_SemicolonParam_List_OneSpecificParamNoValue(tsc_IMS_FeatureCap_SrvccAlerting))) { /* @sic R5s140370 change 7: tsc_IMS_FeatureCap_SrvccAlerting sic@ */ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "A.2.1 condition A12: Missing feature-param"); + } + } + } + + //---------------------------------------------------------------------------- + /* + * @desc Check Geolocation header (if any) + * @param p_MessageBody + * @param p_SDP_MessageTemplate + * @param p_GeolocationInfoAvailable (default value: false) + * @return SDP_Message + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_MessageBody_CheckSdpMessageAndGeolocation(MessageBody p_MessageBody, + template (present) SDP_Message p_SDP_MessageTemplate, + boolean p_GeolocationInfoAvailable := false) runs on IMS_PTC return SDP_Message + { /* @sic R5w140112: new parameter p_SDP_MessageTemplate sic@ */ + var SdpBody v_SdpBody; + var MimeEncapsulatedList v_MimeEncapsulatedList; + var Geolocation_Type v_Geolocation; + var PIDF_Presence_Type v_Presence; + var PIDF_Status_ElemList_Type v_Status_ElemList; + var charstring v_XmlBody; + var bitstring v_BitStr; + + if (p_GeolocationInfoAvailable) { + if (not ispresent(p_MessageBody.mimeMessageBody.mimeEncapsulatedList) and + lengthof(p_MessageBody.mimeMessageBody.mimeEncapsulatedList) != 2) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid Invite body"); + } + v_MimeEncapsulatedList := p_MessageBody.mimeMessageBody.mimeEncapsulatedList; + if (ischosen(v_MimeEncapsulatedList[0].mime_encapsulated_part.sdpMessageBody)) { + v_SdpBody := v_MimeEncapsulatedList[0].mime_encapsulated_part.sdpMessageBody; + v_XmlBody := v_MimeEncapsulatedList[1].mime_encapsulated_part.xmlBody; + } else { + v_SdpBody := v_MimeEncapsulatedList[1].mime_encapsulated_part.sdpMessageBody; + v_XmlBody := v_MimeEncapsulatedList[0].mime_encapsulated_part.xmlBody; + } + + // Check PDIF + v_BitStr := oct2bit(char2oct(v_XmlBody)); + if (decvalue(v_BitStr, v_Presence) != 0) { + FatalError(__FILE__, __LINE__, "Presence (PIDF) cannot be decoded"); + } + if (not match (v_Presence, cr_PIDF_Presence_Any)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Presence (PIDF) does not match"); + } + + // Check PDIF-LO see RFC 4119 cl. 2.2 + // extends the 'status' element of PIDF with a complex element called 'geopriv' + // There are two major subelements that are encapsulated within geopriv: one for location information, and one for usage rules + if (not ispresent(v_Presence.tuple_list[0].status.elem_list)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Presence.tuple_list[0].status.elem_list not present"); // + } + else { + v_Status_ElemList := v_Presence.tuple_list[0].status.elem_list; + } + v_BitStr := oct2bit(char2oct(v_Status_ElemList[0])); // first of 1 or more geopriv elements + + if (decvalue(v_BitStr, v_Geolocation) != 0) { + FatalError(__FILE__, __LINE__, "Geolocation cannot be decoded"); + } + // The PIDF-LO shall contain at least the following elements: (34.229-1 cl. A.2.1) + // - One or more 'geopriv' elements, each containing: + // - One 'location-info' element describing the location of the UE; and + // - One 'usage-rules' element describing the limitations of the usage of the location info. + if (not match (v_Geolocation, cr_Geolocation_Any)) { // 1st geopriv element is checked: well structured information is matched, not the contents + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Geolocation does not match"); + } + } else { + v_SdpBody := p_MessageBody.sdpMessageBody; + } + return f_IMS_SIP_DecodeMatchAndCheckSDP(v_SdpBody, p_SDP_MessageTemplate); + } + + //============================================================================ + // Common functions for Call Control acc. to 34.229-1 Annex C + //---------------------------------------------------------------------------- + /* + * @desc Common function to receive and check INVITE + * when the INVITE is optional a wait duration shall be given + * @param p_Context (default value: A_2_1_A4) + * @param p_MessageHeader (default value: cr_MessageHeader_Dummy) + * @param p_AdditionalOptionTagsForSupported (default value: tsc_OptionTagList_Empty) + * @param p_OtherCalleeUri (default value: omit) + * @param p_WaitDuration (default value: omit) + * @param p_A3 (default value: pc_MultimediaTelephonyService) + * @param p_A8 (default value: pc_IMS_Geolocation) + * @param p_A9 (default value: false) + * @param p_A10 (default value: false) + * @param p_A11 (default value: false) + * @param p_SrvccAlertingSupported (default value: pc_IMS_SRVCCAlert) + * @return template (omit) IMS_DATA_REQ + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_INVITE_ReceiveRequest_Common(INVITE_A_2_1_Context_Type p_Context := A_2_1_A4, + template (present) MessageHeader p_MessageHeader := cr_MessageHeader_Dummy, + OptionTag_List p_AdditionalOptionTagsForSupported := tsc_OptionTagList_Empty, + template (omit) charstring p_OtherCalleeUri := omit, + template (omit) float p_WaitDuration := omit, + boolean p_A3 := pc_MultimediaTelephonyService, /* @sic R5s130510 additional change 1: tsc_IMS_MTSI replaced by pc_MultimediaTelephonyService sic@ */ + boolean p_A8 := pc_IMS_Geolocation, + boolean p_A9 := false, + boolean p_A10 := false, + boolean p_A11 := false, + boolean p_SrvccAlertingSupported := pc_IMS_SRVCCAlert) + runs on IMS_PTC return template (omit) IMS_DATA_REQ + { /* p_OtherCalleeUri .. if present to be used as CalleeUri; if omit default CalleeUri is used acc. to PIXITs and cntext */ + /* @sic R5-133276, R5-133301 Cleanup of functions for MO Call Setup sic@ */ + /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5-140799: additional parameter p_MessageHeader to deal with Reason header sic@ */ + /* @sic R5s140370 change 7: pc_IMS_SRVCCAlert default value for p_A12, p_A12 renamed to p_SrvccAlertingSupported sic@ */ + var IMS_DATA_REQ v_IMS_DATA_REQ; + var template (present) MessageBody v_MessageBody := f_SIP_MessageBodySDP_RX(p_A8); /* @sic R5w140112 sic@ */ + var template (present) MessageHeader v_MessageHeader_Invite; + var template (present) SipUrl v_ExpectedCalleeUri; + var boolean v_TimerControl := ispresent(p_WaitDuration); + timer t_Timer; + + if (ispresent(p_OtherCalleeUri)) { + v_ExpectedCalleeUri := f_SIP_BuildSipUri_RX(valueof(p_OtherCalleeUri)); + } else { + select (p_Context) { + case (A_2_1_A4) { // A4: INVITE creating a dialog + v_ExpectedCalleeUri := f_SIP_BuildSipUri_RX(px_IMS_CalleeUri); + } + case (A_2_1_A5) { // A5: re-INVITE + v_ExpectedCalleeUri := f_SIP_BuildSipUri_RX(px_IMS_CalleeContactUri, *); /* @sic R5s140020 change 8.1 sic@ */ + } + case (A_2_1_A6, A_2_1_A7) { // A6, A7: emergency call + v_ExpectedCalleeUri := cr_SipUrl_Common(c_urnScheme, cr_SipUrl_SOS); + } + case else { + FatalError(__FILE__, __LINE__, ""); + } + } + } + v_MessageHeader_Invite := f_IMS_InviteRequest_MessageHeaderRX(p_MessageHeader, v_ExpectedCalleeUri, p_AdditionalOptionTagsForSupported, p_Context, p_A3, p_A8, p_A9, p_A11); + + if (v_TimerControl) { + t_Timer.start(valueof(p_WaitDuration)); + } + alt { + [] IMS_Server.receive(car_IMS_Invite_Request(cr_INVITE_Request(v_ExpectedCalleeUri, v_MessageHeader_Invite, v_MessageBody))) -> value v_IMS_DATA_REQ + { + t_Timer.stop; + if (p_Context == A_2_1_A6) { // emergency call without registration @sic R5s130756 change 14 sic@ + f_IMS_PTC_ImsInfo_Init(v_IMS_DATA_REQ.RoutingInfo.UE_Address, v_IMS_DATA_REQ.RoutingInfo.NW_Address); + } + f_IMS_A_2_1_Invite_CommonChecks(v_IMS_DATA_REQ, p_Context, p_A3, p_A8, p_A10, p_A11, p_SrvccAlertingSupported); + if (p_Context != A_2_1_A5) { /* @sic R5s140020 change 8.2 sic@ */ + f_IMS_PTC_ImsInfo_DialogInit(dialogRemote, v_IMS_DATA_REQ.Request.Invite.msgHeader); + } else { + if (not isvalue(f_IMS_PTC_ImsInfo_CseqGet(dialogRemote))) { /* @sic R5s140235 sic@ */ + f_IMS_PTC_ImsInfo_CseqSet(dialogRemote, v_IMS_DATA_REQ.Request.Invite.msgHeader.cSeq.seqNumber); + } + } + return v_IMS_DATA_REQ; + } + [v_TimerControl] t_Timer.timeout {} + } + return omit; + } + + /* + * @desc Common function to receive and check INVITE + * @param p_Context (default value: A_2_1_A4) + * @param p_AdditionalOptionTagsForSupported (default value: tsc_OptionTagList_Empty) + * @param p_OtherCalleeUri (default value: omit) + * @param p_A3 (default value: pc_MultimediaTelephonyService) + * @param p_A8 (default value: pc_IMS_Geolocation) + * @param p_A9 (default value: false) + * @param p_A10 (default value: false) + * @param p_A11 (default value: false) + * @param p_SrvccAlertingSupported (default value: pc_IMS_SRVCCAlert) + * @return IMS_DATA_REQ + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_IRAT) + */ + function f_IMS_INVITE_ReceiveRequest(INVITE_A_2_1_Context_Type p_Context := A_2_1_A4, + OptionTag_List p_AdditionalOptionTagsForSupported := tsc_OptionTagList_Empty, + template (omit) charstring p_OtherCalleeUri := omit, + boolean p_A3 := pc_MultimediaTelephonyService, /* @sic R5s130510 additional change 1: tsc_IMS_MTSI replaced by pc_MultimediaTelephonyService sic@ */ + boolean p_A8 := pc_IMS_Geolocation, + boolean p_A9 := false, + boolean p_A10 := false, + boolean p_A11 := false, + boolean p_SrvccAlertingSupported := pc_IMS_SRVCCAlert) + runs on IMS_PTC return IMS_DATA_REQ + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5s140370 change 7: pc_IMS_SRVCCAlert default value for p_A12, p_A12 renamed to p_SrvccAlertingSupported sic@ */ + var template (omit) float v_WaitDuration := omit; // no wait duration + var template (omit) IMS_DATA_REQ v_IMS_DATA_REQ; + v_IMS_DATA_REQ := f_IMS_INVITE_ReceiveRequest_Common(p_Context, -, p_AdditionalOptionTagsForSupported, p_OtherCalleeUri, v_WaitDuration, p_A3, p_A8, p_A9, p_A10, p_A11, p_SrvccAlertingSupported); + return valueof(v_IMS_DATA_REQ); // as we don't have any WaitDuration f_IMS_INVITE_ReceiveRequest_Common returns a value (omit could only occur when a timer expires) + } + + /* + * @desc MT Call release acc. to 34.229-1 C.33 + * @param p_InviteRequest + * @param p_ContactSipUrl + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_CallReleaseMT(template (value) INVITE_Request p_InviteRequest, + SipUrl p_ContactSipUrl) runs on IMS_PTC + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + var template (value) MessageHeader v_MessageHeader_Bye; + var InternetProtocol_Type v_Protocol := f_IMS_PTC_ImsInfo_GetTransportProtocol(); + + // The SS sends BYE to release the call + v_MessageHeader_Bye := f_IMS_ByeRequest_MessageHeaderTX(p_InviteRequest); + IMS_Client.send(cas_IMS_BYE_Request(cs_IMS_RoutingInfo(v_Protocol), cs_BYE_Request(p_ContactSipUrl, v_MessageHeader_Bye))); + + // The UE sends 200 OK for the BYE request and ends the call. + f_IMS_ReceiveResponse(v_MessageHeader_Bye, v_Protocol, cr_Response(c_statusLine200, f_IMS_OtherResponse_200_MessageHeaderRX(v_MessageHeader_Bye))); /* @sic R5s140350 sic@ */ + + f_IMS_PTC_ImsInfo_DialogRelease(); /* there is no dialog anymore; @sic R5s140017 MCC160 implementation sic@ */ + } + + /* + * @desc MO Call release scc. to 34.229-1 C.32 + * @param p_InviteRequest + * @param p_ContactSipUrl (default value: f_SIP_BuildSipUri_RX(px_IMS_CalleeContactUri)) + * @param p_IsEmergency (default value: false) + * @param p_AutonomousCallRelease (default value: false) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A) + */ + function f_IMS_CallReleaseMO(template (value) INVITE_Request p_InviteRequest, + template (present) SipUrl p_ContactSipUrl := f_SIP_BuildSipUri_RX(px_IMS_CalleeContactUri), + boolean p_IsEmergency := false, + boolean p_AutonomousCallRelease := false) runs on IMS_PTC + { /* @sic R5s130333 change 6 - new parameter p_ContactUri sic@ */ + /* @sic R5-134116: parameter p_RecordRouteOfPrevResponse removed sic@ */ + /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5s130754 change 3: p_IsEmergency sic@ */ + /* @sic R5s140370 change 14: p_AutonomousCallRelease sic@ */ + var IMS_DATA_REQ v_IMS_DATA_REQ; + var template (value) IMS_RoutingInfo_Type v_RoutingInfo; + var template (present) MessageHeader v_MessageHeader_Bye; + + if (not p_AutonomousCallRelease) { + f_UT_HangupIMSCall(MMI); /* @sic R5s130333 change 20, R5-134290 sic@ */ + } + + // --- Receive BYE + v_MessageHeader_Bye := f_IMS_ByeRequest_MessageHeaderRX(p_InviteRequest, p_IsEmergency); + IMS_Server.receive(car_IMS_Bye_Request(cr_BYE_Request(p_ContactSipUrl, v_MessageHeader_Bye))) -> value v_IMS_DATA_REQ; + f_IMS_MessageHeader_Request_CheckVia(v_IMS_DATA_REQ.Request.Bye.msgHeader, v_IMS_DATA_REQ.RoutingInfo.Protocol); /* @sic R5-134116: additional check of Via header sic@ */ + + // --- Send 200 OK + v_RoutingInfo := f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo); + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo, cs_Response(c_statusLine200, f_IMS_OtherResponse_200_MessageHeaderTX(v_IMS_DATA_REQ.Request.Bye.msgHeader)))); + + f_IMS_PTC_ImsInfo_DialogRelease(); /* there is no dialog anymore; @sic R5s140017 MCC160 implementation sic@ */ + } + + + /* + * @desc Emergency Call release (wrapper function) + * @param p_InviteRequest + * @status APPROVED (IMS, IMS_IRAT, LTE) + */ + function f_IMS_EmergencyCallRelease(INVITE_Request p_InviteRequest) runs on IMS_PTC + { + f_IMS_CallReleaseMO(p_InviteRequest, -, true); + f_IMS_TCP_CloseHandling(waitAndClose); /* @sic R5s130988 change 1 - MCC160 implementation sic@ + * @sic R5s140219 - additional changes sic@ + * NOTE: for emergency call there is no user-initiated emergency deregistration (see 24.229 cl. 5.1.6.6); + * nevertheless as working assumption the UE is expected to close its TCP (client) connection and if not it is closed by the IP_PTC; + * this may cause issues when - for what reason ever - the UE wants to re-open the TCP connction ("WAIT TIME" acc. to RFC 793 clause 3.2, figure 6; see R5w140110); + * but even if we would keep the UE's client connection any SS' client connection shall be closed (cuurently we don't distinguish these but close all) */ + } + + //---------------------------------------------------------------------------- + /* + * @desc Emergency speech call setup according to 34.229-1 Annex C.22 + * @param p_Context (default value: A_2_1_A7) + * @param p_GeolocationInfoAvailable (default value: false) + * @param p_OtherCalleeUri (default value: omit) + * @return INVITE_Request + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_IRAT) + */ + function f_IMS_EmergencyCallSetup_AnnexC22(INVITE_A_2_1_Context_Type p_Context := A_2_1_A7, + boolean p_GeolocationInfoAvailable := false, + template (omit) charstring p_OtherCalleeUri := omit) runs on IMS_PTC return INVITE_Request + { /* p_Context .. A_2_1_A6 (INVITE for creating an emergency session in case of no registration) or + * A_2_1_A7 (INVITE for creating an emergency session within an emergency registration) */ + /* @sic R5s130988 change 6/7: sic@ + * in case of A_2_1_A6 there has been no registration beforehand and therefore we don't know whether the UE uses IPv4 or IPv6 + * => we cannot setup any address information before we have received the INVITE + * => as the SDP message at step 1 contains address information we cannot build up the template in advance but need to match after the INVITE has been received */ + /* @sic R5-140920: additional parameter p_OtherCalleeUri sic@ */ + var IMS_DATA_REQ v_IMS_DATA_REQ; + var template(value) IMS_RoutingInfo_Type v_RoutingInfo_DL; + var template (present) SipUrl v_CalleeContactSipUri; + + var INVITE_Request v_InviteRequest; + var template (value) MessageHeader v_MessageHeader_InviteResponse_200; + var template (present) MessageHeader v_MessageHeader_Ack; + var template (present) SDP_Message v_SDP_Message_Step1; + var template (value) SDP_Message v_SDP_Message_Step4; + var SDP_Message v_SDP_Message; + var boolean v_IsEmergency := true; + var boolean v_PrackRequiredFor180Ringing := false; /* => there is no PRACK expected to acknowledge the 180 response */ + var charstring v_FmtAudio; + + // Step 1. Receive INVITE for an Emergency call + v_IMS_DATA_REQ := f_IMS_INVITE_ReceiveRequest(p_Context, -, p_OtherCalleeUri, -, p_GeolocationInfoAvailable); + v_InviteRequest := v_IMS_DATA_REQ.Request.Invite; + v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo); + + v_SDP_Message_Step1 := f_IMS_BuildSDP_AnnexC22_Step1(); /* @sic R5s130988 change 6/7: has to be done after the INVITE has been received and the address information has been initialised even for A_2_1_A6 sic@ */ + v_SDP_Message := f_IMS_MessageBody_CheckSdpMessageAndGeolocation(v_InviteRequest.messageBody, v_SDP_Message_Step1, p_GeolocationInfoAvailable); /* @sic R5w140112 sic@ sic@ */ + + v_FmtAudio := f_SDP_MediaDescr_GetAMR_Any(v_SDP_Message.media_list[0]); /* any AMR codec is acceptable @sic R5-134795 sic@ */ + if (v_FmtAudio == "") { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "no AMR codec found in given media description"); + } + + // Step 2. SS sends a 100 Trying provisional response. + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine100, f_IMS_InviteResponse_100_MessageHeaderTX(v_InviteRequest)))); + + // Step 3. SS sends a 180 Ringing. + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine180, f_IMS_InviteResponse_180_MessageHeaderTX(v_InviteRequest, -, v_PrackRequiredFor180Ringing, v_IsEmergency)))); + + // Step 4. SS responds to the invite INVITE with 200 OK including the SDP record. + v_SDP_Message_Step4 := f_IMS_BuildSDP_AnnexC22_Step4(v_FmtAudio, v_SDP_Message.origin.addr); + v_MessageHeader_InviteResponse_200 := f_IMS_OtherResponse_200_MessageHeaderTX(v_InviteRequest.msgHeader, cs_ContentTypeSDP, tsc_IMS_Emergency_TelUri); + v_CalleeContactSipUri := f_Addr_Union_GetSipUrl(v_MessageHeader_InviteResponse_200.contact.contactBody.contactAddresses[0].addressField); + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine200, v_MessageHeader_InviteResponse_200, cs_MessageBody_SDP(v_SDP_Message_Step4)))); + + // Step 5. Finally, UE acknowledges call setup. + v_MessageHeader_Ack := f_IMS_AckRequest_MessageHeaderRX(v_InviteRequest, c_statusLine200, v_IsEmergency); // @sic R5s130897 change 2 sic@ + IMS_Server.receive(car_IMS_Ack_Request(cr_ACK_Request(v_CalleeContactSipUri, v_MessageHeader_Ack))); + return v_InviteRequest; + } + + //============================================================================ + // Common MT call setup (used for C.11, C.26 and in test cases) + //---------------------------------------------------------------------------- + /* + * @desc MT speech/video call setup according to 34.229-1 Annex C.11, C.26, steps 3 to 4. + * return SessionInProgress183 received in step 4 + * @param p_InviteRequestStep1 + * @param p_SDP_MessageStep4 + * @param p_Protocol + * @return IMS_ResponseWithSdp_Type + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_MTCallSetup_Common_Steps3_4(template (value) INVITE_Request p_InviteRequestStep1, + template (present) SDP_Message p_SDP_MessageStep4, + InternetProtocol_Type p_Protocol) runs on IMS_PTC return IMS_ResponseWithSdp_Type + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5w140112: returns IMS_ResponseWithSdp_Type instead of IMS_Response_Type sic@ */ + var IMS_DATA_RSP v_IMS_DATA_RSP; + var boolean v_Trying := false; + var MessageHeader v_MessageHeader; + var SDP_Message v_SDP_Message; + var IMS_Response_Type v_SessionInProgress183; + + alt { + // Step 3 - Receive optional 100 Trying + [not v_Trying] a_IMS_ReceiveResponse(p_InviteRequestStep1.msgHeader, + p_Protocol, + cr_Response(c_statusLine100, f_IMS_InviteResponse_100_MessageHeaderRX(p_InviteRequestStep1)), + v_IMS_DATA_RSP) /* @sic R5s140350: v_IMS_DATA_RSP is 'out' parameter sic@ */ + { + v_Trying := true; + repeat; + } + // Step 4 - Receive 183 Session in Progress + [] a_IMS_ReceiveResponse(p_InviteRequestStep1.msgHeader, + p_Protocol, + cr_Response(c_statusLine183, + f_IMS_InviteResponse_183_MessageHeaderRX(p_InviteRequestStep1, tsc_OptionTagList_precondition), + cr_MessageBody_SDP), + v_IMS_DATA_RSP) /* @sic R5s140350: v_IMS_DATA_RSP is 'out' parameter sic@ */ + { + v_SessionInProgress183 := v_IMS_DATA_RSP.Response; + v_MessageHeader := v_SessionInProgress183.msgHeader; + f_IMS_MessageHeader_CheckContactAddr(v_MessageHeader); // check whether contact contains "SIP URI with IP address or FQDN" (see @sic R5s120727 sic@) + f_IMS_Dialog_SetRemoteTag(v_MessageHeader); + // check SDP message: + v_SDP_Message := f_IMS_SIP_SdpMessageBody_DecodeMatchAndCheckSDP(v_SessionInProgress183.messageBody, p_SDP_MessageStep4); // @sic R5w140112 sic@ + } + } + + // fl_IMS_Params_CheckSigComp(v_IMS_DATA_RSP.Response.msgHeader.route.routeBody[0].rrParam); // acc. to 34.229-1 cl. 13.3.4 step 3 "comp=sigcomp" is mandatory for first route parameter of Record-Route only; this is checked in f_IMS_InviteResponse_183_MessageHeaderTX + + return valueof(cs_IMS_ResponseWithSdp(v_SessionInProgress183, v_SDP_Message)); + } + + /* + * @desc Common function to send PRACK and receive the corresponding 200 OK (mainly to be used for MT call setup + * @param p_InviteRequest + * @param p_MessageHeader_PrevReliableResponse + * @param p_OtherResponseForInvite (default value: omit) + * @param p_ContentType (default value: omit) + * @return template (omit) IMS_Response_Type + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_MTCallSetup_SendPRACK_ReceiveOK(template (value) INVITE_Request p_InviteRequest, + MessageHeader p_MessageHeader_PrevReliableResponse, + template IMS_Response_Type p_OtherResponseForInvite := omit, + template (omit) ContentType p_ContentType := omit) runs on IMS_PTC return template (omit) IMS_Response_Type + { /* @sic R5-142994: allow optionally e.g. a 180 Ringing in parallel to the 200 OK sic@ */ + var IMS_DATA_RSP v_IMS_DATA_RSP_ByRef; + var template (value) MessageHeader v_MessageHeader_Prack; + var InternetProtocol_Type v_Protocol := f_IMS_PTC_ImsInfo_GetTransportProtocol(); + var SipUrl v_ContactUrl := f_IMS_PTC_ImsInfo_GetContactUrl(); + var boolean v_AllowOtherResponse := ispresent(p_OtherResponseForInvite); + var template (omit) IMS_Response_Type v_OtherResponse := omit; + + // Send PRACK + v_MessageHeader_Prack := f_IMS_PrackRequest_MessageHeaderTX(p_InviteRequest, p_MessageHeader_PrevReliableResponse, p_ContentType); + IMS_Client.send(cas_IMS_Prack_Request(cs_IMS_RoutingInfo(v_Protocol), cs_PRACK_Request(v_ContactUrl, v_MessageHeader_Prack))); + + // Receive 200 OK + alt { /* @sic R5s140551 sic@ */ + [] a_IMS_ReceiveResponse(v_MessageHeader_Prack, + v_Protocol, + cr_Response(c_statusLine200, f_IMS_OtherResponse_200_MessageHeaderRX(v_MessageHeader_Prack)), + v_IMS_DATA_RSP_ByRef) + {} /* @sic R5s140350 sic@ */ + [v_AllowOtherResponse] a_IMS_ReceiveResponse(p_InviteRequest.msgHeader, + v_Protocol, + p_OtherResponseForInvite, // NOTE: compiler warning cannot be avoided here + v_IMS_DATA_RSP_ByRef) + { + v_AllowOtherResponse := false; + v_OtherResponse := v_IMS_DATA_RSP_ByRef.Response; + repeat; + } + } + return v_OtherResponse; + } + + /* + * @desc MT speech/video call setup according to 34.229-1 Annex C.11, C.26, steps 7 to 11: send UPDATE, receive 200 OK and optional 180 Ringing + * @param p_InviteRequest + * @param p_SDP_MessageStep7 + * @param p_SDP_MessageStep8 + * @param p_ProtocolUsedForInvite + * @param p_SrvccAlerting (default value: false) + * @param p_WaitDuration_Ringing (default value: 5.0) + * @return template (omit) MessageHeader + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_MTCallSetup_Common_Steps7_11(template (value) INVITE_Request p_InviteRequest, + template (value) SDP_Message p_SDP_MessageStep7, + template (present) SDP_Message p_SDP_MessageStep8, + InternetProtocol_Type p_ProtocolUsedForInvite, + boolean p_SrvccAlerting := false, + float p_WaitDuration_Ringing := 5.0) runs on IMS_PTC return template (omit) MessageHeader + { /* @sic R5-140975: p_MessageBodyRinging removed as it is never used i.e. always omit sic@ */ + /* @sic R5s140385 change 8: new parameter p_SrvccAlerting sic@ */ + var IMS_DATA_RSP v_IMS_DATA_RSP; + var template (value) MessageHeader v_MessageHeader_Update; + var MessageHeader v_MessageHeader_Ringing; + var InternetProtocol_Type v_ProtocolForUpdate := f_IMS_PTC_ImsInfo_GetTransportProtocol(); + var SipUrl v_ContactUrl := f_IMS_PTC_ImsInfo_GetContactUrl(); + var boolean v_WaitingFor180 := true; + var boolean v_WaitingFor200 := true; + var template ContentType v_ContentTypeRinging := omit; /* @sic R5-140975 sic@ */ + var template (present) ContentLength v_ContentLengthRinging := cr_ContentLength(0); /* @sic R5-140975 sic@ */ + var template MessageBody v_MessageBodyRinging := omit; /* @sic R5-140975 sic@ */ + var SemicolonParam_List v_ContactParams := {}; + + timer t_Timer := p_WaitDuration_Ringing; + + // Send UPDATE + v_MessageHeader_Update := f_IMS_UpdateRequest_MessageHeaderTX(p_InviteRequest); + IMS_Client.send(cas_IMS_Update_Request(cs_IMS_RoutingInfo(v_ProtocolForUpdate), cs_UPDATE_Request(v_ContactUrl, v_MessageHeader_Update, cs_MessageBody_SDP(p_SDP_MessageStep7)))); + + t_Timer.start; // @sic R5-125772 sic@ Have introduced the timer to accommodate optional messages that may not arrive + while (v_WaitingFor180 or v_WaitingFor200) { + alt { + // Step 8. Receive 200 OK. The UE acknowledges the UPDATE with 200 OK and includes SDP answer to acknowledge its current precondition status. + [v_WaitingFor200] a_IMS_ReceiveResponse(v_MessageHeader_Update, + v_ProtocolForUpdate, + cr_Response(c_statusLine200, + f_IMS_OtherResponse_200_MessageHeaderRX(v_MessageHeader_Update, cr_ContentTypeSDP), /* @sic R5s130685 change 4 sic@ */ + cr_MessageBody_SDP), + v_IMS_DATA_RSP) /* @sic R5s140350: v_IMS_DATA_RSP is 'out' parameter sic@ */ + { + // check at least one connections field sent + f_IMS_SIP_SdpMessageBody_DecodeMatchAndCheckSDP(v_IMS_DATA_RSP.Response.messageBody, p_SDP_MessageStep8); // @sic R5w140112 sic@ + v_WaitingFor200 := false; + } + [v_WaitingFor180] a_IMS_ReceiveResponse(p_InviteRequest.msgHeader, + p_ProtocolUsedForInvite, + cr_Response(c_statusLine180, + f_IMS_InviteResponse_180_MessageHeaderRX(p_InviteRequest, -, v_ContentTypeRinging, v_ContentLengthRinging), + v_MessageBodyRinging), + v_IMS_DATA_RSP) /* @sic R5s140350: v_IMS_DATA_RSP is 'out' parameter sic@ */ + { + t_Timer.stop; + v_MessageHeader_Ringing := v_IMS_DATA_RSP.Response.msgHeader; + v_WaitingFor180 := false; + } + [] t_Timer.timeout + { + v_WaitingFor180 := false; + } + } + } + if (isbound(v_MessageHeader_Ringing)) { + f_IMS_MessageHeader_CheckContactAddr(v_MessageHeader_Ringing); // check whether contact contains "SIP URI with IP address or FQDN" (see @sic R5s120727 sic@) + + if (p_SrvccAlerting) { /* @sic R5s140385 change 8 sic@ */ + v_ContactParams := v_MessageHeader_Ringing.contact.contactBody.contactAddresses[0].contactParams; + + if (not match(v_ContactParams, cr_SemicolonParam_List_OneSpecificParamNoValue(tsc_IMS_FeatureCap_SrvccAlerting))) { /* @sic R5s140385 change 8 sic@ */ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "A.2.6 condition A5: Missing feature-param"); + } + } + if (f_MessageHeader_CheckRequire(v_MessageHeader_Ringing, c_tag100rel)) { + // Step 10 - 11. Send PRACK, Receive 200 OK if the 180 response contains 100rel option tag within the Require header + f_IMS_MTCallSetup_SendPRACK_ReceiveOK(p_InviteRequest, v_MessageHeader_Ringing); + } + + return v_MessageHeader_Ringing; + } + return omit; + } + + /* + * @desc MT speech/video call setup according to 34.229-1 Annex C.11, C.26, steps 12..13 + * @param p_InviteRequestWithSdp + * @param p_SDP_Message (default value: omit) + * @return IMS_ResponseWithSdp_Type + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_MTCallSetup_Common_Steps12_13(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp, + template SDP_Message p_SDP_Message := omit) runs on IMS_PTC return IMS_ResponseWithSdp_Type + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5w140112: p_InviteRequestWithSdp instead of p_InviteRequest sic@ */ + /* @sic R5w140112: returns IMS_ResponseWithSdp_Type instead of Response sic@ */ + var InternetProtocol_Type v_ProtocolUsedForInvite := p_InviteRequestWithSdp.RoutingInfo.Protocol; + var IMS_DATA_RSP v_IMS_DATA_RSP; + var Response v_Response; + var MessageHeader v_MessageHeader; + var MessageHeader v_MessageHeader_Invite; + var template (present) MessageHeader v_MessageHeader_OtherResponse_200; + var template (value) MessageHeader v_MessageHeader_Ack; + var template ContentType v_ContentType := omit; + var template MessageBody v_MessageBody := omit; + var SipUrl v_ContactUrl := f_IMS_PTC_ImsInfo_GetContactUrl(); + var template (omit) SDP_Message v_SDP_Message := omit; + + if (ispresent(p_SDP_Message)) { + v_ContentType := cr_ContentTypeSDP; + v_MessageBody := cr_MessageBody_SDP; + } + + // Step 12. Receive 200 OK. The UE responds to INVITE with a 200 OK final response after the user answers the call. + v_MessageHeader_Invite := p_InviteRequestWithSdp.Invite.msgHeader; + v_MessageHeader_OtherResponse_200 := f_IMS_OtherResponse_200_MessageHeaderRX(v_MessageHeader_Invite, v_ContentType); + v_IMS_DATA_RSP := f_IMS_ReceiveResponse(v_MessageHeader_Invite, v_ProtocolUsedForInvite, cr_Response(c_statusLine200, v_MessageHeader_OtherResponse_200, v_MessageBody)); /* @sic R5s140350 sic@ */ + v_Response := v_IMS_DATA_RSP.Response; + v_MessageHeader := v_Response.msgHeader; + f_IMS_MessageHeader_CheckContactAddr(v_MessageHeader); /* check whether contact contains "SIP URI with IP address or FQDN" (see @sic R5s120727 sic@) */ + v_SDP_Message := f_IMS_SIP_SdpMessageBody_DecodeMatchAndCheckSDP_Ifpresent(v_Response.messageBody, p_SDP_Message); + + if (isvalue(f_IMS_PTC_ImsInfo_DialogGetRemoteTag())) { /* normal case: there has been e.g. a 183 response already + @sic R5s140017 MCC160 implementation: use remote tag sic@ */ + f_IMS_MessageHeader_CheckTo(v_MessageHeader, dialogToTag); + } else { /* special case (e.g. 16.X test cases): 200 OK is the only response */ + f_IMS_Dialog_SetRemoteTag(v_MessageHeader); /* @sic R5s140017 MCC160 implementation: use remote tag sic@ */ + } + + // Step 13. Send ACK. The SS acknowledges the receipt of 200 OK for INVITE. + v_MessageHeader_Ack := f_IMS_AckRequest_MessageHeaderTX(p_InviteRequestWithSdp.Invite); + IMS_Client.send(cas_IMS_Ack_Request(cs_IMS_RoutingInfo(v_ProtocolUsedForInvite), cs_ACK_Request(v_ContactUrl, v_MessageHeader_Ack))); + + return valueof(cs_IMS_ResponseWithSdp(v_Response, v_SDP_Message)); + } + + //============================================================================ + // MT speech call setup according to 34.229-1 Annex C.11 + //---------------------------------------------------------------------------- + /* + * @desc Build INVITE to be used for MO call estblishment (C.11) + * @return IMS_InviteRequestWithSdp_Type + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_MTCallSetup_AnnexC11_INVITE() runs on IMS_PTC return IMS_InviteRequestWithSdp_Type + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5w140112: return IMS_InviteRequestWithSdp_Type instead of IMS_DATA_REQ; initialisation of routing info sic@ */ + var SipUrl v_ContactUrl := f_IMS_PTC_ImsInfo_GetContactUrl(); + var template (value) INVITE_Request v_InviteRequest; + var template (value) MessageHeader v_MessageHeader_Invite; + var template (value) SDP_Message v_SDP_MessageStep1; + + v_SDP_MessageStep1 := f_IMS_BuildSDP_AnnexC11_Step1or7("step 1"); + v_MessageHeader_Invite := f_IMS_InviteRequest_MessageHeaderTX(tsc_OptionTagList_precondition); + v_InviteRequest := cs_INVITE_Request(v_ContactUrl, v_MessageHeader_Invite, cs_MessageBody_SDP(v_SDP_MessageStep1)); + + return f_IMS_InviteRequestWithSdpMT(v_InviteRequest, v_SDP_MessageStep1); + } + + /* + * @desc MT speech call setup according to 34.229-1 Annex C.11, steps 1 to 4. + * return p_SessionInProgress183 received in step 4 + * @param p_InviteRequestWithSdp + * @return IMS_ResponseWithSdp_Type + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_MTCallSetup_AnnexC11_Steps1_4(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp) runs on IMS_PTC return IMS_ResponseWithSdp_Type + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5w140112: p_InviteRequestWithSdp instead of p_InviteRequest sic@ */ + /* @sic R5w140112: returns IMS_ResponseWithSdp_Type instead of IMS_Response_Type sic@ */ + var template (present) SDP_Message v_SDP_MessageStep4; + var INVITE_Request v_InviteRequest := p_InviteRequestWithSdp.Invite; + var InternetProtocol_Type v_Protocol := p_InviteRequestWithSdp.RoutingInfo.Protocol; + + // Step 1 - Send INVITE + IMS_Client.send(cas_IMS_Invite_Request(p_InviteRequestWithSdp.RoutingInfo, v_InviteRequest)); + + // Step 2 - Void + + // Step 3 .. 4 + v_SDP_MessageStep4 := f_IMS_BuildSDP_AnnexC11_Step4or8("step 4"); + return f_IMS_MTCallSetup_Common_Steps3_4(v_InviteRequest, v_SDP_MessageStep4, v_Protocol); + } + + //---------------------------------------------------------------------------- + /* + * @desc MT speech call setup according to 34.229-1 Annex C.11, steps 7..11 + * @param p_InviteRequestWithSdp + * @return template (omit) MessageHeader + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_MTCallSetup_AnnexC11_Steps7_11(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp) runs on IMS_PTC return template (omit) MessageHeader + { /* @sic R5w140112: p_InviteRequestWithSdp instead of p_InviteRequest sic@ */ + var template (value) INVITE_Request v_InviteRequest := p_InviteRequestWithSdp.Invite; + var InternetProtocol_Type v_ProtocolUsedForInvite := p_InviteRequestWithSdp.RoutingInfo.Protocol; + var SDP_Message v_SDP_Message := p_InviteRequestWithSdp.SdpOffer; + var charstring v_Direction; + var template (value) SDP_Message v_Tx_SDP; + var template (present) SDP_Message v_Rx_SDP; + + // Step 7 - 8. Send UPDATE, Receive 200 OK + // get curr:qos remote for SDP message in step 7 + if (isvalue(v_SDP_Message.media_list[0]) and + f_SDP_AttributeList_CheckAttribute(v_SDP_Message.media_list[0].attributes, cr_SDP_Attribute_curr_qos(c_local, c_none))) { // see C.11 step 7 Note 1 + v_Direction := c_none; + } else { + v_Direction := c_sendrecv; + } + v_Tx_SDP := f_IMS_BuildSDP_AnnexC11_Step1or7("step 7", cs_SDP_Attribute_curr_qos(c_remote, v_Direction)); + v_Rx_SDP := f_IMS_BuildSDP_AnnexC11_Step4or8("step 8"); // @sic R5s120530 change 3.16 sic@ + return f_IMS_MTCallSetup_Common_Steps7_11(v_InviteRequest, v_Tx_SDP, v_Rx_SDP, v_ProtocolUsedForInvite, pc_IMS_SRVCCAlert); + } + + /* + * @desc MT speech call setup according to 34.229-1 Annex C.11, steps 5 to 13 + * @param p_InviteRequestWithSdp + * @param p_SessionInProgress183 + * @status APPROVED (IMS, LTE_IRAT) + */ + function f_IMS_MTCallSetup_AnnexC11_Steps5_13(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp, + IMS_Response_Type p_SessionInProgress183) runs on IMS_PTC + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5w140112: p_InviteRequestWithSdp instead of p_InviteRequest sic@ */ + var MessageHeader v_MessageHeader_PrevReliableResponse := p_SessionInProgress183.msgHeader; + + // Step 5 - 6. Send PRACK, Receive 200 OK + f_IMS_MTCallSetup_SendPRACK_ReceiveOK(p_InviteRequestWithSdp.Invite, v_MessageHeader_PrevReliableResponse); + + // Step 7 - 11. Send UPDATE, Receive 200 OK, Receive optional 180 Ringing and send PRACK if requested + f_IMS_MTCallSetup_AnnexC11_Steps7_11(p_InviteRequestWithSdp); + + // Step 11A - Make UE accept the speech AMR offer + f_UT_AnswerCall(MMI); // @sic R5-134290 sic@ + + // Step 12. Receive 200 OK, Send ACK + f_IMS_MTCallSetup_Common_Steps12_13(p_InviteRequestWithSdp); + } + + //============================================================================ + /* + * @desc 34.229-1 Annex C.24 - Step 1: INVITE with condition A5 + * @param p_WaitDuration (default value: omit) + * @param p_GeolocationInfoAvailable (default value: false) + * @return template (omit) IMS_InviteRequestWithSdp_Type + * @status APPROVED (LTE_IRAT) + */ + function f_IMS_SRVCC_ReInvite_AnnexC24_Step1(template (omit) float p_WaitDuration := omit, + boolean p_GeolocationInfoAvailable := false) + runs on IMS_PTC return template (omit) IMS_InviteRequestWithSdp_Type + { /* @sic R5w140112: return type changed to IMS_InviteRequestWithSdp_Type to carry decoded SDP offer sic@ */ + /* @sic R5s140331 change 8: parameter p_WaitDuration sic@ */ + var template (present) SDP_Message v_SDP_MessageRX := f_IMS_BuildSDP_AnnexC24_Step1(); + var template (omit) IMS_DATA_REQ v_IMS_DATA_REQ; + var IMS_DATA_REQ v_IMS_DATA_REQ_Val; + var SDP_Message v_SDP_Message; + + v_IMS_DATA_REQ := f_IMS_INVITE_ReceiveRequest_Common(A_2_1_A5, -, -, -, p_WaitDuration, -, p_GeolocationInfoAvailable); + if (isvalue(v_IMS_DATA_REQ)) { + v_IMS_DATA_REQ_Val := valueof(v_IMS_DATA_REQ); + v_SDP_Message := f_IMS_MessageBody_CheckSdpMessageAndGeolocation(v_IMS_DATA_REQ_Val.Request.Invite.messageBody, v_SDP_MessageRX, p_GeolocationInfoAvailable); + + return f_IMS_InviteRequestWithSdpMO(v_IMS_DATA_REQ_Val, v_SDP_Message); + } + return omit; + } + + //============================================================================ + /* + * @desc 34.229-1 Annex C.31 - Step 1: INVITE with condition A5 + * @param p_GeolocationInfoAvailable (default value: false) + * @return IMS_InviteRequestWithSdp_Type + * @status APPROVED (LTE_IRAT) + */ + function f_IMS_SRVCC_ReInvite_AnnexC31_Step1(boolean p_GeolocationInfoAvailable := false) + runs on IMS_PTC return IMS_InviteRequestWithSdp_Type + { /* @sic R5s140020, R5-140799: new function sic@ */ + /* @sic R5-140799 sic@ */ + /* @sic R5w140112: return type changed to IMS_InviteRequestWithSdp_Type to carry decoded SDP offer */ + var template (omit) float v_WaitDuration := omit; // no wait duration + var template (present) SDP_Message v_SDP_MessageRX := f_IMS_BuildSDP_AnnexC31_Step1(); + var template (present) MessageHeader v_MessageHeader := cr_MessageHeader_Dummy; + var IMS_DATA_REQ v_IMS_DATA_REQ; + var SDP_Message v_SDP_Message; + + v_MessageHeader.reason := f_IMS_SIP_Reason487_RX(); // @sic R5s140370 change 3 - MCC160 implementation sic@ + + v_IMS_DATA_REQ := valueof(f_IMS_INVITE_ReceiveRequest_Common(A_2_1_A5, v_MessageHeader, -, -, v_WaitDuration, -, p_GeolocationInfoAvailable)); + v_SDP_Message := f_IMS_MessageBody_CheckSdpMessageAndGeolocation(v_IMS_DATA_REQ.Request.Invite.messageBody, v_SDP_MessageRX, p_GeolocationInfoAvailable); + + return f_IMS_InviteRequestWithSdpMO(v_IMS_DATA_REQ, v_SDP_Message); + } + + //============================================================================ + /* + * @desc 34.229-1 Annex C.21 - Step 2: receive INVITE acc. to A.2.1; + * if the INVITE is optional a wait duration shall be given + * @param p_OtherCalleeUri (default value: omit) + * @param p_A_2_1_Context (default value: A_2_1_A4) + * @param p_WaitDuration (default value: omit) + * @param p_GeolocationInfoAvailable (default value: false) + * @return template (omit) IMS_InviteRequestWithSdp_Type + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_MOCallSetup_AnnexC21_Step2_Optional(template (omit) charstring p_OtherCalleeUri := omit, + INVITE_A_2_1_Context_Type p_A_2_1_Context := A_2_1_A4, + template (omit) float p_WaitDuration := omit, + boolean p_GeolocationInfoAvailable := false) runs on IMS_PTC return template (omit) IMS_InviteRequestWithSdp_Type + { /* @sic R5-133276, R5-133301 Cleanup of functions for MO Call Setup sic@ */ + /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5w140112: return type changed to IMS_InviteRequestWithSdp_Type to carry decoded SDP offer */ + var template (present) SDP_Message v_SDP_Message_Step2 := f_IMS_BuildSDP_AnnexC21_Step2(); + var template (omit) IMS_DATA_REQ v_IMS_DATA_REQ; + var template (omit) IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp := omit; + var IMS_DATA_REQ v_IMS_DATA_REQ_Value; + var SDP_Message v_SDP_Message; + var INVITE_Request v_InviteRequest; + + // Step 2. Receive INVITE Request + v_IMS_DATA_REQ := f_IMS_INVITE_ReceiveRequest_Common(p_A_2_1_Context, -, tsc_OptionTagList_precondition, p_OtherCalleeUri, p_WaitDuration, -, p_GeolocationInfoAvailable); + if (isvalue(v_IMS_DATA_REQ)) { + v_IMS_DATA_REQ_Value := valueof(v_IMS_DATA_REQ); + v_InviteRequest := v_IMS_DATA_REQ_Value.Request.Invite; + v_SDP_Message := f_IMS_MessageBody_CheckSdpMessageAndGeolocation(v_InviteRequest.messageBody, v_SDP_Message_Step2, p_GeolocationInfoAvailable); + + // check media description: + f_IMS_SDP_CheckMediaDescr_AMR_8000_1(v_SDP_Message.media_list[0]); + f_IMS_SDP_CheckMediaDescr_DTMF(v_SDP_Message.media_list[0]); + + v_InviteRequestWithSdp := f_IMS_InviteRequestWithSdpMO(v_IMS_DATA_REQ_Value, v_SDP_Message); + } + return v_InviteRequestWithSdp; + } + + /* + * @desc 34.229-1 Annex C.21 - Step 2: receive INVITE acc. to A.2.1 + * @param p_OtherCalleeUri (default value: omit) + * @param p_A_2_1_Context (default value: A_2_1_A4) + * @param p_GeolocationInfoAvailable (default value: false) + * @return IMS_InviteRequestWithSdp_Type + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_MOCallSetup_AnnexC21_Step2_Common(template (omit) charstring p_OtherCalleeUri := omit, + INVITE_A_2_1_Context_Type p_A_2_1_Context := A_2_1_A4, + boolean p_GeolocationInfoAvailable := false) runs on IMS_PTC return IMS_InviteRequestWithSdp_Type + { /* @sic R5-133276, R5-133301 Cleanup of functions for MO Call Setup sic@ */ + /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5w140112: return type changed to IMS_InviteRequestWithSdp_Type to carry decoded SDP offer */ + var template (omit) float v_WaitDuration := omit; + var template (omit) IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; + v_InviteRequestWithSdp := f_IMS_MOCallSetup_AnnexC21_Step2_Optional(p_OtherCalleeUri, p_A_2_1_Context, v_WaitDuration, p_GeolocationInfoAvailable); + return valueof(v_InviteRequestWithSdp); + } + + /* + * @desc 34.229-1 Annex C.21 - Step 2: Wrapper function for A.2.1 condition A4 (INVITE creating a dialog) + * @param p_OtherCalleeUri (default value: omit) + * @param p_GeolocationInfoAvailable (default value: false) + * @return IMS_InviteRequestWithSdp_Type + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_MOCallSetup_AnnexC21_Step2_A4(template (omit) charstring p_OtherCalleeUri := omit, + boolean p_GeolocationInfoAvailable := false) runs on IMS_PTC return IMS_InviteRequestWithSdp_Type + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5w140112: return type changed to IMS_InviteRequestWithSdp_Type to carry decoded SDP offer */ + return f_IMS_MOCallSetup_AnnexC21_Step2_Common(p_OtherCalleeUri, A_2_1_A4, p_GeolocationInfoAvailable); + } + + /* + * @desc 34.229-1 Annex C.21 - Step 3: send 100 Trying + * @param p_InviteRequestWithSdp + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_MOCallSetup_AnnexC21_Step3(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp) runs on IMS_PTC + { + var template (value) IMS_RoutingInfo_Type v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(p_InviteRequestWithSdp.RoutingInfo); + + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine100, f_IMS_InviteResponse_100_MessageHeaderTX(p_InviteRequestWithSdp.Invite)))); + } + + /* + * @desc 34.229-1 Annex C.21 - Step 3: send 183 Session In Progress + * return MessageHeader of the 183 response + * @param p_InviteRequestWithSdp + * @param p_ContactUri (default value: px_IMS_CalleeContactUri) + * @param p_AditionalContactParams (default value: omit) + * @param p_IsEmergency (default value: false) + * @return MessageHeader + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_MOCallSetup_AnnexC21_Step4(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp, + charstring p_ContactUri := px_IMS_CalleeContactUri, + template (omit) SemicolonParam_List p_AditionalContactParams := omit, + boolean p_IsEmergency := false) runs on IMS_PTC return MessageHeader + { /* @sic R5-142951: tsc_OptionTagList_precondition to be added to the Require header instead of the Supported header sic@ */ + var template (value) IMS_RoutingInfo_Type v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(p_InviteRequestWithSdp.RoutingInfo); + var INVITE_Request v_InviteRequest := p_InviteRequestWithSdp.Invite; + var SDP_Message v_SDP_MessageInvite := p_InviteRequestWithSdp.SdpOffer; /* @sic R5w140112 sic@ */ + var template (value) MessageHeader v_MessageHeader_Response183; + var template (value) SDP_Message v_SDP_MessageTx := f_IMS_BuildSDP_AnnexC21_Step4(v_SDP_MessageInvite); /* @sic R5-135020 sic@ */ + // Step 4. Send 183 Session In Progress. + v_MessageHeader_Response183 := f_IMS_InviteResponse_183_MessageHeaderTX(v_InviteRequest, tsc_OptionTagList_precondition, p_ContactUri, p_AditionalContactParams, p_IsEmergency); /* @sic R5-142951 sic@ */ + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine183, v_MessageHeader_Response183, cs_MessageBody_SDP(v_SDP_MessageTx)))); + + return valueof(v_MessageHeader_Response183); + } + + /* + * @desc 34.229-1 Annex C.21 - Step 3..4 + * return MessageHeader of the 183 response + * @param p_InviteRequestWithSdp + * @param p_ContactUri (default value: px_IMS_CalleeContactUri) + * @param p_AditionalContactParams (default value: omit) + * @param p_IsEmergency (default value: false) + * @return MessageHeader + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_MOCallSetup_AnnexC21_Step3_4(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp, + charstring p_ContactUri := px_IMS_CalleeContactUri, + template (omit) SemicolonParam_List p_AditionalContactParams := omit, + boolean p_IsEmergency := false) runs on IMS_PTC return MessageHeader + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5w140112: p_InviteRequestWithSdp instead of p_RoutingInfo_DL, p_InviteRequest sic@ */ + /* @sic R5s140359 - Additional Changes: split (f_IMS_MOCallSetup_AnnexC21_Step3, f_IMS_MOCallSetup_AnnexC21_Step4) sic@ */ + var MessageHeader v_MessageHeader_Response183; + + // Step 3. SS sends a 100 Trying provisional response. + f_IMS_MOCallSetup_AnnexC21_Step3(p_InviteRequestWithSdp); + + // Step 4. Send 183 Session In Progress. + v_MessageHeader_Response183 := f_IMS_MOCallSetup_AnnexC21_Step4(p_InviteRequestWithSdp, p_ContactUri, p_AditionalContactParams, p_IsEmergency); + + return v_MessageHeader_Response183; + } + + /* + * @desc 34.229-1 Annex C.21 - Step 5..8 + * returns the "latest SDP offer" received from the UE + * @param p_InviteRequestWithSdp + * @param p_MessageHeader_Prev183Response + * @param p_GeolocationInfoAvailable (default value: false) + * @param p_SDP_Message_Step5or7 (default value: omit) + * @param p_PrevSDP_Message (default value: omit) + * @return SDP_Message + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_MOCallSetup_AnnexC21_Steps5_8(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp, + template (value) MessageHeader p_MessageHeader_Prev183Response, + boolean p_GeolocationInfoAvailable := false, + template SDP_Message p_SDP_Message_Step5or7 := omit, + template (omit) SDP_Message p_PrevSDP_Message := omit) runs on IMS_PTC return SDP_Message + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5w140112: p_InviteRequest changed to p_InviteRequestWithSdp */ + /* @sic R5s140686, R5-144755: parameter p_PrevSDP_Message sic@ */ + var SipUrl v_ContactUrl := f_MessageHeader_GetContactSipUrl(p_MessageHeader_Prev183Response); /* @sic R5s130333 change 8.2 - acc. to A.2.4, A.2.5 same as in previous response sic@ */ + var INVITE_Request v_InviteRequest := p_InviteRequestWithSdp.Invite; + var SDP_Message v_SDP_Message := p_InviteRequestWithSdp.SdpOffer; /* @sic R5w140112 sic@ */ + var charstring v_FmtAudio; + var template (present) SDP_Message v_SDP_Message_Step5or7; + var template (present) MessageBody v_MessageBody; + var boolean v_MediaConfigured := false; + var IMS_DATA_REQ v_IMS_DATA_REQ; + var template (value) IMS_RoutingInfo_Type v_RoutingInfo_DL; + var template (present) MessageHeader v_MessageHeader_Prack; + var template (present) MessageHeader v_MessageHeader_Update; + var template (omit) MessageBody v_MessageBodyTx := omit; + var template (omit) ContentType v_ContentType := omit; + var PRACK_Request v_PrackRequest; + var UPDATE_Request v_UpdateRequest; + var SDP_Message v_SDP_LatestOffer; + + if (isvalue(p_PrevSDP_Message)) { /* e.g. in case of C.27 the INVITE's SDP message is not the latest SDP sent by the UE */ + v_SDP_Message := valueof(p_PrevSDP_Message); + } + + if (not ispresent(p_SDP_Message_Step5or7)) { + v_FmtAudio := f_SDP_MediaDescr_GetAMR_8000_1(v_SDP_Message.media_list[0]); + v_SDP_Message_Step5or7 := f_IMS_BuildSDP_AnnexC21_Step5or7(v_FmtAudio); + } else { + v_SDP_Message_Step5or7 := p_SDP_Message_Step5or7; // NOTE: compiler warning cannot be avoided here + } + + // Step 5. Receive PRACK + v_MessageHeader_Prack := f_IMS_PrackRequest_MessageHeaderRX(v_InviteRequest, p_MessageHeader_Prev183Response); + IMS_Server.receive(car_IMS_Prack_Request(cr_PRACK_Request(v_ContactUrl, v_MessageHeader_Prack, cr_MessageBody_SDP ifpresent))) -> value v_IMS_DATA_REQ; + v_PrackRequest := v_IMS_DATA_REQ.Request.Prack; + v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo); + + // fl_IMS_Params_CheckSigComp(v_PrackRequest.msgHeader.route.routeBody[0].rrParam); // acc. to 34.229-1 cl. 13.2.4 step 4 (PRACK) "comp=sigcomp" is optional for Via and Route + + // Step 6. Send 200 OK + if (ispresent(v_PrackRequest.messageBody)) { + v_SDP_LatestOffer := f_IMS_SIP_SdpMessageBody_DecodeMatchAndCheckSDP(v_PrackRequest.messageBody, v_SDP_Message_Step5or7); // @sic R5w140112 sic@ + + // check session version increased + f_IMS_SDP_CheckSessionVersion(v_SDP_LatestOffer, v_SDP_Message); + + v_ContentType := cs_ContentTypeSDP; + v_MessageBodyTx := cs_MessageBody_SDP(f_IMS_BuildSDP_AnnexC21_Step6or8(v_SDP_LatestOffer)); /* NOTE: f_IMS_BuildSDP_AnnexC21_Step6or8 is not specific for C.21 but can be used for C.25 as well + @sic R5w140112 sic@ */ + v_MediaConfigured := true; + } + + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine200, f_IMS_OtherResponse_200_MessageHeaderTX(v_PrackRequest.msgHeader, v_ContentType), v_MessageBodyTx))); + + // Step 7 Optional. Receive Update + // Note: UE will send Update if Media is not yet configured + if (not v_MediaConfigured) { + v_MessageHeader_Update := f_IMS_UpdateRequest_MessageHeaderRX(v_InviteRequest); + v_MessageBody := f_SIP_MessageBodySDP_RX(p_GeolocationInfoAvailable); + if (p_GeolocationInfoAvailable) { + v_MessageHeader_Update.geolocation := cr_GeolocationAny; + v_MessageHeader_Update.geolocationRouting := cr_GeolocationRoutingSupported; // @sic R5-134798 sic@ + v_MessageHeader_Update.contentType := cr_ContentType("multipart/mixed"); + } + IMS_Server.receive(car_IMS_Update_Request(cr_UPDATE_Request(v_ContactUrl, v_MessageHeader_Update, v_MessageBody))) -> value v_IMS_DATA_REQ; + v_UpdateRequest := v_IMS_DATA_REQ.Request.Update; + v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo); + v_SDP_LatestOffer := f_IMS_MessageBody_CheckSdpMessageAndGeolocation(v_UpdateRequest.messageBody, v_SDP_Message_Step5or7); /* @sic R5w140112 sic@ */ + + //fl_IMS_Params_CheckSigComp(v_UpdateRequest.msgHeader.route.routeBody[0].rrParam); // acc. to 34.229-1 cl. 13.2.4 step 6 (UPDATE) "comp=sigcomp" is optional for Via and Route + + // check session version increased + f_IMS_SDP_CheckSessionVersion(v_SDP_LatestOffer, v_SDP_Message); + + v_ContentType := cs_ContentTypeSDP; + v_MessageBodyTx := cs_MessageBody_SDP(f_IMS_BuildSDP_AnnexC21_Step6or8(v_SDP_LatestOffer)); /* NOTE: f_IMS_BuildSDP_AnnexC21_Step6or8 is not specific for C.21 but can be used for C.25 as well + @sic R5w140112 sic@ */ + v_MediaConfigured := true; + // Step 8 Optional. Send 200 OK + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine200, f_IMS_OtherResponse_200_MessageHeaderTX(v_UpdateRequest.msgHeader, v_ContentType), v_MessageBodyTx))); + } + + return v_SDP_LatestOffer; + } + + + /* + * @desc 34.229-1 Annex C.21 - Step 9..11 + * @param p_InviteRequestWithSdp + * @param p_ContactUri (default value: px_IMS_CalleeContactUri) + * @param p_SrvccAlertingSupported (default value: pc_IMS_SRVCCAlert) + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_MOCallSetup_AnnexC21C25_Step9_11(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp, + charstring p_ContactUri := px_IMS_CalleeContactUri, + boolean p_SrvccAlertingSupported := pc_IMS_SRVCCAlert) runs on IMS_PTC + { // p_SrvccAlertingSupported .. if voice call => condition A6 of A.2.6; needs to be set to false for non-voice calls + /* @sic R5s130333 change 9.2 - parameter p_ContactUri: acc. to see A.2.4 contact in request line of PRACK shall be the same in as in previous response (180 Ringing) sic@ */ + /* @sic R5w140112: p_IMS_INVITE_REQ changed to p_InviteRequestWithSdp */ + /* @sic R5s140370 change 6: new parameter p_SrvccAlertingSupported sic@ */ + var INVITE_Request v_InviteRequest := p_InviteRequestWithSdp.Invite; + var template (value) IMS_RoutingInfo_Type v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(p_InviteRequestWithSdp.RoutingInfo); + var template (value) MessageHeader v_MessageHeader_180Response := f_IMS_InviteResponse_180_MessageHeaderTX(v_InviteRequest, p_ContactUri, -, -, p_SrvccAlertingSupported); + var template (value) MessageHeader v_MessageHeader_PrackResponse_200; + var template (present) MessageHeader v_MessageHeader_Prack; + var IMS_DATA_REQ v_IMS_DATA_REQ; + var PRACK_Request v_PrackRequest; + + // Step 9. SS sends a 180 Ringing. + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine180, v_MessageHeader_180Response))); + + // Step 10. Receive PRACK + v_MessageHeader_Prack := f_IMS_PrackRequest_MessageHeaderRX(v_InviteRequest, v_MessageHeader_180Response); + IMS_Server.receive(car_IMS_Prack_Request(cr_PRACK_Request(f_SIP_BuildSipUri_RX(p_ContactUri), v_MessageHeader_Prack))) -> value v_IMS_DATA_REQ; + + v_PrackRequest := v_IMS_DATA_REQ.Request.Prack; + v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo); + + //fl_IMS_Params_CheckSigComp(v_PrackRequest.msgHeader.route.routeBody[0].rrParam); // acc. to 34.229-1 cl. 13.2.4 step 9 (PRACK) "comp=sigcomp" is optional for Via and Route + + // Step 11. Send 200 OK (response to last PRACK) + v_MessageHeader_PrackResponse_200 := f_IMS_OtherResponse_200_MessageHeaderTX(v_PrackRequest.msgHeader); + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine200, v_MessageHeader_PrackResponse_200))); + } + + /* + * @desc 34.229-1 Annex C.21 - Step 12..13 + * @param p_InviteRequestWithSdp + * @param p_ContactUri (default value: px_IMS_CalleeContactUri) + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_MOCallSetup_AnnexC21C25_Step12_13(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp, + charstring p_ContactUri := px_IMS_CalleeContactUri) runs on IMS_PTC + { /* @sic R5s130333 change 9.3 - parameter p_ContactUri: acc. to A.2.7 contact in request line of ACK shall be the same in as PRACK sic@ */ + /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5w140112: p_IMS_INVITE_REQ changed to p_InviteRequestWithSdp */ + var INVITE_Request v_InviteRequest := p_InviteRequestWithSdp.Invite; + var template (value) IMS_RoutingInfo_Type v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(p_InviteRequestWithSdp.RoutingInfo); + var template (value) MessageHeader v_MessageHeader_InviteResponse_200; + var template (present) MessageHeader v_MessageHeader_Ack; + + // Step 12. Send 200 OK (response to INVITE) + v_MessageHeader_InviteResponse_200 := f_IMS_OtherResponse_200_MessageHeaderTX(v_InviteRequest.msgHeader); + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine200, v_MessageHeader_InviteResponse_200))); + + // Step 13. Finally, UE acknowledges call setup. + v_MessageHeader_Ack := f_IMS_AckRequest_MessageHeaderRX(v_InviteRequest, c_statusLine200); + IMS_Server.receive(car_IMS_Ack_Request(cr_ACK_Request(f_SIP_BuildSipUri_RX(p_ContactUri), v_MessageHeader_Ack))); + + //fl_IMS_Params_CheckSigComp(v_IMS_DATA_REQ.Request.Ack.msgHeader.route.routeBody[0].rrParam); // acc. to 34.229-1 cl. 13.2.4 step 12 (ACK) "comp=sigcomp" is optional for Route + } + + /* + * @desc wrapper for steps 5..13 of C.21; + * returns the "latest SDP offer" received from the UE + * @param p_InviteRequestWithSdp + * @param p_MessageHeader_Prev183Response + * @param p_GeolocationInfoAvailable (default value: false) + * @return SDP_Message + * @status APPROVED (IMS) + */ + function f_IMS_MOCallSetup_AnnexC21_Steps5_13(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp, + MessageHeader p_MessageHeader_Prev183Response, + boolean p_GeolocationInfoAvailable := false) runs on IMS_PTC return SDP_Message + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5w140112: p_IMS_INVITE_REQ changed to p_InviteRequestWithSdp */ + var SDP_Message v_SDP_Message := f_IMS_MOCallSetup_AnnexC21_Steps5_8(p_InviteRequestWithSdp, p_MessageHeader_Prev183Response, p_GeolocationInfoAvailable); + + f_IMS_MOCallSetup_AnnexC21C25_Step9_11(p_InviteRequestWithSdp); + f_IMS_MOCallSetup_AnnexC21C25_Step12_13(p_InviteRequestWithSdp); + + return v_SDP_Message; + } + + //============================================================================ + /* + * @desc check all media streams to have the given attribute + * @param p_Media_Desc_List + * @param p_Attribute + * @return boolean + * @status APPROVED (IMS) + */ + function f_IMS_SDP_CheckMediaListAttributes(template (value) SDP_media_desc_list p_Media_Desc_List, + template (present) SDP_attribute p_Attribute) return boolean + { + var integer i; + + for (i := 0; i < lengthof(p_Media_Desc_List); i:=i+1) { + if (not f_SDP_AttributeList_CheckAttribute(p_Media_Desc_List[i].attributes, p_Attribute)) { + return false; + } + } + return true; + } + + /* + * @desc Check recv mode for call hold/resume acc. to C.8 + * @param p_HoldResume + * @param p_HoldResumeOffer + * @param p_OriginalOffer + * @status APPROVED (IMS) + */ + function fl_IMS_MOCallHoldResume_AnnexC8_CheckSendRecvMode(IMS_CallHoldResume_Type p_HoldResume, + SDP_Message p_HoldResumeOffer, + SDP_Message p_OriginalOffer) runs on IMS_PTC + { + var SDP_attribute_list v_HoldResumeOffer_AttributeList; + var SDP_attribute_list v_OriginalOffer_AttributeList; + var template (omit) SDP_attribute v_SendRecvAttribute; + var SDP_attribute v_SendRecvAttributeVal; + var integer i; + + v_SendRecvAttribute := f_SDP_AttributeList_GetAttribute(p_HoldResumeOffer.attributes, cr_SDP_Attribute_AnySendRecvMode); // session attribute + if (ispresent(v_SendRecvAttribute)) { + // Hold/Resume offer has session attribute for send/recv mode + v_SendRecvAttributeVal := valueof(v_SendRecvAttribute); + select (p_HoldResume) { + case (HOLD) { + if (match(v_SendRecvAttributeVal, cs_SDP_Attribute_inactive)) { // => check all media streams of the original offer to be recvonly + if (not f_IMS_SDP_CheckMediaListAttributes(p_OriginalOffer.media_list, cs_SDP_Attribute_recvonly)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "SDP offer for call hold has session attribute 'inactive' and but not all media streams of the original offer have been 'recvonly' "); + return; + } + } else if (match(v_SendRecvAttributeVal, cs_SDP_Attribute_sendonly)) { // => check all media streams of the original offer to be sendrecv + if (not f_IMS_SDP_CheckMediaListAttributes(p_OriginalOffer.media_list, cs_SDP_Attribute_sendrecv)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "SDP offer for call hold has session attribute 'sendonly' and but not all media streams of the original offer have been 'sendrecv' "); + return; + } + } else { // send/recv mode is neither inactive nor sendonly + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "SDP offer for call hold has session attribute being neither 'sendonly' not 'inactive'"); + return; + } + } + case (RESUME) { // all media streams of the original offer shall be the same and the same as in the "RESUME offer" + if (not f_IMS_SDP_CheckMediaListAttributes(p_OriginalOffer.media_list, v_SendRecvAttributeVal)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "SDP offer for call resume has session attribute not matching with all media streams of the original offer"); + return; + } + } + } + // check that Hold/Resume offer does not have further send/recv mode attributes in any media stream + if (f_IMS_SDP_CheckMediaListAttributes(p_HoldResumeOffer.media_list, cr_SDP_Attribute_AnySendRecvMode)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "SDP offer for call hold/resume has session attribute for send/recv mode but also send/recv mode attributes for media streams"); + return; + } + } else { + // Hold/Resume offer has no session attribute for send/recv mode => check stream by stream + if (lengthof(p_HoldResumeOffer.media_list) != lengthof(p_OriginalOffer.media_list)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "SDP offer for call hold/resume has different number of media streams than the original offer"); + return; + } + for (i := 0; i < lengthof(p_HoldResumeOffer.media_list); i:=i+1) { + v_HoldResumeOffer_AttributeList := p_HoldResumeOffer.media_list[i].attributes; + v_OriginalOffer_AttributeList := p_OriginalOffer.media_list[i].attributes; + select (p_HoldResume) { + case (HOLD) { + if (f_SDP_AttributeList_CheckAttribute(v_HoldResumeOffer_AttributeList, cs_SDP_Attribute_inactive)) { + v_SendRecvAttribute := cs_SDP_Attribute_recvonly; + } + else if (f_SDP_AttributeList_CheckAttribute(v_HoldResumeOffer_AttributeList, cs_SDP_Attribute_sendonly)) { + v_SendRecvAttribute := cs_SDP_Attribute_sendrecv; + } + } + case (RESUME) { + v_SendRecvAttribute := f_SDP_AttributeList_GetAttribute(v_HoldResumeOffer_AttributeList, cr_SDP_Attribute_AnySendRecvMode); + } + } + if (not ispresent(v_SendRecvAttribute) or not f_SDP_AttributeList_CheckAttribute(v_OriginalOffer_AttributeList, v_SendRecvAttribute)) { // compiler warning cannot be avoided for v_SendRecvAttribute + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "SDP offer for call hold/resume has invalid send/recv mode attribute for single media stream"); + return; + } + } + } + } + + /* + * @desc Check bandwidth for call hold/resume acc. to C.8 + * @param p_HoldResume + * @param p_SDP_Message + * @status APPROVED (IMS) + */ + function f_IMS_CallHoldResume_AnnexC8_CheckBandwidth(IMS_CallHoldResume_Type p_HoldResume, + SDP_Message p_SDP_Message) runs on IMS_PTC + { + var integer i; + var charstring v_Modifier; + var integer v_Bandwidth; + + for (i := 0; i < lengthof(p_SDP_Message.bandwidth); i := i+1) { + v_Modifier := p_SDP_Message.bandwidth[i].modifier; + v_Bandwidth := p_SDP_Message.bandwidth[i].bandwidth; + select (v_Modifier) { + case ("RR", "RS") { + if ((p_HoldResume == HOLD) and not (v_Bandwidth > 0)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Call hold: " & v_Modifier & " bandwidth shall be greater than zero"); + return; + } + else if ((p_HoldResume == RESUME) and (v_Bandwidth > 0)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Call resume: " & v_Modifier & " bandwidth shall be zero"); + return; + } + } + } + } + } + + /* + * @desc MO call hold according to Annex C.8 (TS 34.229-1) + * @param p_HoldResume + * @param p_PrevInviteRequest + * @param p_MessageHeader_Prev183Response + * @param p_SDP_OriginalOffer + * @param p_PrevSessionVersion (default value: omit) + * @return SDP_Message + * @status APPROVED (IMS) + */ + function f_IMS_MOCallHoldResume_AnnexC8(IMS_CallHoldResume_Type p_HoldResume, + INVITE_Request p_PrevInviteRequest, + MessageHeader p_MessageHeader_Prev183Response, + SDP_Message p_SDP_OriginalOffer, + template (omit) integer p_PrevSessionVersion := omit) runs on IMS_PTC return SDP_Message + { + var template (value) IMS_RoutingInfo_Type v_RoutingInfo_DL; + var template (present) MessageHeader v_MessageHeader_Invite; + var template (present) MessageHeader v_MessageHeader_Update; + var template (present) MessageHeader v_MessageHeader_Ack; + var template (value) SDP_Message v_SDP_HoldResumeResponse; + var MessageBody v_MessageBody; + var IMS_DATA_REQ v_IMS_DATA_REQ; + var INVITE_Request v_InviteRequest; + var UPDATE_Request v_UpdateRequest; + var MessageHeader v_MessageHeader; + var SDP_Message v_SDP_HoldResumeOffer; + var integer v_PrevSessionVersion; + var SipUrl v_RequestSipUrl := f_MessageHeader_GetContactSipUrl(p_MessageHeader_Prev183Response); // get the contact URI out of the Contact header being sent to the UE in the earlier 183 response + var SipUrl v_ToHeaderSipUrl := f_Addr_Union_GetSipUrl(p_PrevInviteRequest.msgHeader.toField.addressField); // SIP URI in the To header of the INVITE needs to be the same SIP URI as been used in the previous INVITE + var integer v_CseqValue := f_IMS_PTC_ImsInfo_CseqGetValue(dialogRemote); /* @sic R5s140121 change 7: CSeq Value is incremented in f_IMS_InviteRequest_MessageHeaderRX and in f_IMS_UpdateRequest_MessageHeaderRX but shall be the same for both sic@ */ + + // Steps 1 and 2 - Receive Invite Request or Update Request + v_MessageHeader_Invite := f_IMS_InviteRequest_MessageHeaderRX(-, v_ToHeaderSipUrl, -, A_2_1_A5); + f_IMS_PTC_ImsInfo_CseqSet(dialogRemote, v_CseqValue); /* @sic R5s140121 change 7: restore CSeq Value sic@ */ + v_MessageHeader_Update := f_IMS_UpdateRequest_MessageHeaderRX(p_PrevInviteRequest); + + alt { + // INVITE + [] IMS_Server.receive(car_IMS_Invite_Request(cr_INVITE_Request(v_RequestSipUrl, v_MessageHeader_Invite, cr_MessageBody_SDP))) + -> value v_IMS_DATA_REQ + { + v_InviteRequest := v_IMS_DATA_REQ.Request.Invite; + v_MessageHeader := v_InviteRequest.msgHeader; + v_MessageBody := v_InviteRequest.messageBody; + + f_IMS_A_2_1_Invite_CommonChecks(v_IMS_DATA_REQ, A_2_1_A5); + } + // UPDATE + [] IMS_Server.receive(car_IMS_Update_Request(cr_UPDATE_Request(v_RequestSipUrl, v_MessageHeader_Update, cr_MessageBody_SDP))) + -> value v_IMS_DATA_REQ + { + v_UpdateRequest := v_IMS_DATA_REQ.Request.Update; + v_MessageHeader := v_UpdateRequest.msgHeader; + v_MessageBody := v_UpdateRequest.messageBody; + } + } + f_IMS_PreliminaryPass(__FILE__, __LINE__, "Annex C.8 step 1"); + + v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo); + v_SDP_HoldResumeOffer := f_IMS_MessageBody_CheckSdpMessageAndGeolocation(v_MessageBody, f_IMS_BuildSDP_AnnexC8_Step1(p_SDP_OriginalOffer)); /* @sic R5s140324 - additional change 2 sic@ */ + + // Check version number: + if (isvalue(p_PrevSessionVersion)) { + v_PrevSessionVersion := valueof(p_PrevSessionVersion); + } else { + v_PrevSessionVersion := str2int(p_SDP_OriginalOffer.origin.session_version); + } + f_IMS_SDP_CheckSessionVersion(v_SDP_HoldResumeOffer, omit, v_PrevSessionVersion); + + // Check bandwidth + f_IMS_CallHoldResume_AnnexC8_CheckBandwidth(p_HoldResume, v_SDP_HoldResumeOffer); + + // Check send/receive mode + fl_IMS_MOCallHoldResume_AnnexC8_CheckSendRecvMode(p_HoldResume, v_SDP_HoldResumeOffer, p_SDP_OriginalOffer); + + if (isbound(v_InviteRequest)) { + // Step 2. Send 100 Trying + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine100, f_IMS_InviteResponse_100_MessageHeaderTX(v_InviteRequest)))); + } + + // Step 3. Respond with 200 OK (A.3.1 condition A5: Any response sent by the UE within a dialog + v_SDP_HoldResumeResponse := f_IMS_BuildSDP_AnnexC8_Step3(p_HoldResume, v_SDP_HoldResumeOffer); + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine200, + f_IMS_OtherResponse_200_MessageHeaderTX(v_MessageHeader, cs_ContentTypeSDP), + cs_MessageBody_SDP(v_SDP_HoldResumeResponse)))); + if (isbound(v_InviteRequest)) { + // Step 4. Receive ACK + v_MessageHeader_Ack := f_IMS_AckRequest_MessageHeaderRX(v_InviteRequest, c_statusLine200); + IMS_Server.receive(car_IMS_Ack_Request(cr_ACK_Request(v_RequestSipUrl, v_MessageHeader_Ack))); + } + + return v_SDP_HoldResumeOffer; + } + + //============================================================================ + + group HandlingOfPublishMessage { + + function f_IMS_PublishRequest_MessageHeaderRX(template (present) SipUrl p_SipUrlPublicUserId, + boolean p_SessionIdSupported := false) runs on IMS_PTC return template (present) MessageHeader + { /* PUBLISH (see TS 34.229, A.4.3) */ + /* !!!! NOTE: Checks may need to be enhanced !!!!*/ + var template (present) MessageHeader v_MessageHeader_Publish := cr_MessageHeader_Dummy; + + v_MessageHeader_Publish.route := cr_RouteSubs(f_IMS_PTC_Pcscf_Get(), *, px_IMS_Scscf); + v_MessageHeader_Publish.via := cr_ViaDef(-, cr_HostPort(?)); + v_MessageHeader_Publish.toField := cr_ToDef(p_SipUrlPublicUserId); // NOTE: absence of the To tag needs to be checked separately + v_MessageHeader_Publish.fromField := cr_FromWithTag(p_SipUrlPublicUserId); + v_MessageHeader_Publish.cSeq := cr_CseqDef(?, "PUBLISH"); + v_MessageHeader_Publish.callId := cr_CallId(?); + v_MessageHeader_Publish.sessionId := f_IMS_SessionId_RX_IfSupported(p_SessionIdSupported); /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Publish.maxForwards := cr_MaxForwardsDef; + v_MessageHeader_Publish.event := cr_EventDef(?); + if (not f_IMS_PTC_SecurityScheme_IsGiba()) { + v_MessageHeader_Publish.securityVerify := f_IMS_PTC_BuildSecurityVerifyHeader(); + v_MessageHeader_Publish.pAccessNetworkInfo := cr_PAccessNetworkInfoDef(f_IMS_PTC_RanType_GetString()); + } + return v_MessageHeader_Publish; + } + + function f_IMS_PublishResponse_200_MessageHeaderTX(PUBLISH_Request p_PublishRequest) runs on IMS_PTC return template (value) MessageHeader + { // 200 OK for PUBLISH (see TS 34.229, A.4.4) + var MessageHeader v_MessageHeader_Publish := p_PublishRequest.msgHeader; + var template (value) MessageHeader v_MessageHeader_Response := cs_MessageHeader_Dummy; + + v_MessageHeader_Response.via := v_MessageHeader_Publish.via; + v_MessageHeader_Response.fromField := v_MessageHeader_Publish.fromField; + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderTX(v_MessageHeader_Publish); + v_MessageHeader_Response.callId := v_MessageHeader_Publish.callId; + v_MessageHeader_Response.sessionId := v_MessageHeader_Publish.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := v_MessageHeader_Publish.cSeq; + v_MessageHeader_Response.contact := cs_Contact(cs_SipUri_HostPort(px_IMS_Scscf)); + v_MessageHeader_Response.expires := cs_Expires ("600000"); + v_MessageHeader_Response.sipETag := cs_SIP_ETag("dx200xyz"); /* @sic R5s130195 BASELINE MOVING 2013 - SIP-ETag (RFC 3903) sic@ */ + + return v_MessageHeader_Response; + } + + // FFS: Code not yet used, but may be needed + altstep a_IMS_DefaultPublish() runs on IMS_PTC + { /* acc. to 34.229-1 C.5 Default handling of PUBLISH requests */ + var IMS_DATA_REQ v_IMS_DATA_REQ; + var template (present) SipUrl v_SipUrlPublicUserId := ?; /* acc. to A.4.3 in the PUBLISH request the public user id to be used in the Request-Line, From and To is "any IMPU within the set of IMPUs" + => needs to be checked after receiving as well as the tag for From and To + !!!! check function needs to be implemented !!!! */ + + [] IMS_Server.receive(car_IMS_Publish_Request(cr_PUBLISH_Request(v_SipUrlPublicUserId, f_IMS_PublishRequest_MessageHeaderRX(v_SipUrlPublicUserId)))) + -> value v_IMS_DATA_REQ + { + IMS_Server.send(cas_IMS_DATA_RSP(f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo), + cs_Response(c_statusLine200, f_IMS_PublishResponse_200_MessageHeaderTX(v_IMS_DATA_REQ.Request.Publish)))); + } + } + + } // group +} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS/IMS_Procedures_Common.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_Procedures_Common.ttcn new file mode 100644 index 0000000..1293130 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_Procedures_Common.ttcn @@ -0,0 +1,475 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-02 15:47:20 +0200 (Tue, 02 Sep 2014) $ +// $Rev: 11984 $ +/******************************************************************************/ + +module IMS_Procedures_Common { + import from CommonDefs all; + import from CommonIP all; + import from IMS_Component all; + import from IMS_ASP_TypeDefs all; + import from IMS_ASP_Templates all; + import from IP_ASP_TypeDefs all; + import from IMS_IP_Config all; + import from IMS_CommonDefs all; + import from IMS_CommonFunctions all; + import from IMS_CommonParameters all; + import from IMS_CommonTemplates all; + import from IMS_SIP_Templates all; + import from LibSip_Common all; + import from LibSip_SIPTypesAndValues all; + + type enumerated IMS_TCP_CloseHandling_Type { justWait, waitAndClose }; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + /* + * @desc common function to handle closing down TCP connections used for SIP signalling + * @param p_Handling + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_TCP_CloseHandling(IMS_TCP_CloseHandling_Type p_Handling) runs on IMS_PTC + { + f_Delay(tsc_IMS_WaitForTcpClose); + + select (p_Handling) { + case (waitAndClose) { + f_IMS_CloseTCP(); + } + case else { + // do nothing + } + } + } + + //---------------------------------------------------------------------------- + /* + * @desc check whether public user id matches with any public user id in the given list + * @param p_PublicUserIdentityList + * @param p_SipUrl + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PublicUserId_Match(CharStringList_Type p_PublicUserIdentityList, + SipUrl p_SipUrl) return boolean + { + var integer i; + + for (i:=0; i < lengthof(p_PublicUserIdentityList); i:=i+1) { + if (f_SIP_MatchURI(p_PublicUserIdentityList[i], p_SipUrl)) { + return true; + } + } + return false; + } + + //---------------------------------------------------------------------------- + /* + * @desc return server port of the network side depending on whether it is protected or not + * @return integer + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_GetPort_ps() runs on IMS_PTC return integer + { /* @sic R5s130756 additional changes: p_IsProtected removed (f_IMS_PTC_Security_IsStarted used instead) sic@ */ + var IMS_ProtectedPorts_Type v_Protected; + var integer v_Port_ps := tsc_IMS_PortNumber_5060; + + if (f_IMS_PTC_Security_IsStarted()) { + v_Protected := f_IMS_PTC_Security_GetProtectedPorts(); + v_Port_ps := v_Protected.Port_ps; // @sic R5s120907 change 2 sic@ + } + return v_Port_ps; + } + + /* + * @desc return server port of the UE side depending on whether it is protected or not + * @return integer + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_GetPort_us() runs on IMS_PTC return integer + { + var IMS_ProtectedPorts_Type v_Protected; + var integer v_Port_us := tsc_IMS_PortNumber_5060; + + if (f_IMS_PTC_Security_IsStarted()) { + v_Protected := f_IMS_PTC_Security_GetProtectedPorts(); + v_Port_us := v_Protected.Port_us; + } + return v_Port_us; + } + + //---------------------------------------------------------------------------- + /* + * @desc Usage of tags is described in RFC 3261 clause 19.3: + * when there has been a to-tag in a request the same to-tag is used in the corresponding response; + * when there is no to-tag a new to-tag and the response is for a dialog the stored to-tag is used + * when there still no to-tag a new to-tag is generated for the reponse + * @param p_RequestMessageHeader + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_Response_ToTagTX(template (value) MessageHeader p_RequestMessageHeader) runs on IMS_PTC return charstring + { /* @sic R5-131897, R5-132063 - new generic function sic@ */ + /* @sic R5s140017 MCC160 implementation: f_IMS_PTC_ImsInfo_DialogGetToTag, f_IMS_PTC_ImsInfo_DialogSetToTag replaced by f_IMS_PTC_ImsInfo_DialogGetLocalTag, f_IMS_PTC_ImsInfo_DialogSetLocalTag sic@ */ + var template (omit) charstring v_ToTag := f_MessageHeader_GetToTag(p_RequestMessageHeader); + var charstring v_Method; + + if (not isvalue(v_ToTag)) { + v_Method := valueof(p_RequestMessageHeader.cSeq.method); + if (v_Method == "INVITE") { /* @sic R5s130497 change 1 - MCC160 implementation sic@ */ + // => response belongs to a dialog + v_ToTag := f_IMS_PTC_ImsInfo_DialogGetLocalTag(); // check if there is already a tag generated for this dialog (essential e.g. in case of call-forwarding when the tag changes; see testcase 15.8) + if (not isvalue(v_ToTag)) { + v_ToTag := f_IMS_GenerateTag(v_Method); + f_IMS_PTC_ImsInfo_DialogSetLocalTag(valueof(v_ToTag)); + } + } else { + v_ToTag := f_IMS_GenerateTag(v_Method); + } + } + return valueof(v_ToTag); + } + + //---------------------------------------------------------------------------- + /* + * @desc Generate To header to be used in a response: in general the To header consists of the address and the to-tag + * @param p_RequestMessageHeader + * @return template (value) To + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_Response_ToHeaderTX(template (value) MessageHeader p_RequestMessageHeader) runs on IMS_PTC return template (value) To + { + var charstring v_ToTag := f_IMS_Response_ToTagTX(p_RequestMessageHeader); + var SipUrl v_SipUrl := f_Addr_Union_GetSipUrl(p_RequestMessageHeader.toField.addressField); + + return cs_ToWithTag(v_SipUrl, v_ToTag); + } + + /* + * @desc generate template for To header depending on whether the previous request has had a to-tog or not + * @param p_RequestMessageHeader + * @param p_Is100Response (default value: false) + * @return template (present) To + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_Response_ToHeaderRX(template (value) MessageHeader p_RequestMessageHeader, + boolean p_Is100Response := false) return template (present) To + { /* @sic R5s130685 change 1: new parameter p_Is100Response sic@ */ + var template (omit) charstring v_ToTagFromRequest := f_MessageHeader_GetToTag(p_RequestMessageHeader); + var template (value) SipUrl v_SipUrl := f_Addr_Union_GetSipUrl(p_RequestMessageHeader.toField.addressField); // @sic R5s130453 change 1 sic@ + var template (present) To v_To; + + if (ispresent(v_ToTagFromRequest)) { + v_To := cr_ToWithTag(v_SipUrl, valueof(v_ToTagFromRequest)); /* @sic R5-132063 sic@ */ + } + else if (not p_Is100Response) { + v_To := cr_ToWithTag(v_SipUrl); + } + else { + v_To := cr_ToDef(v_SipUrl); /* @sic R5s130685 change 1 sic@ */ + } + return v_To; + } + + /* + * @desc generate template for From header (the from-tag has to be the same as in the corresponding request) + * @param p_RequestMessageHeader + * @return template (present) From + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_Response_FromHeaderRX(template (value) MessageHeader p_RequestMessageHeader) return template (present) From + { + var charstring v_FromTagFromRequest := f_MessageHeader_GetFromTag(p_RequestMessageHeader); + var template (value) SipUrl v_SipUrl := f_Addr_Union_GetSipUrl(p_RequestMessageHeader.fromField.addressField); + + return cr_FromWithTag(v_SipUrl, v_FromTagFromRequest); + } + + //---------------------------------------------------------------------------- + /* + * @desc Route set acc. A.2.3 and A.3.1 + * @param p_IsEmergency (default value: false) + * @return template (value) RouteBody_List + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_RouteSet_MO_Call_TX(boolean p_IsEmergency := false) runs on IMS_PTC return template (value) RouteBody_List + { /* @sic R5s130756 change 8: new parameter p_IsEmergency sic@ */ + var template (omit) GenericParam v_SigCompParam := f_IMS_PTC_ImsInfo_GetSigCompParam(); // Compression parameter to be included in the last route parameter (see 34.229-1 cl. 13.2.4) + var template (omit) integer v_Port_ps := omit; + var template (value) RouteBody_List v_RouteBodyList; + + if (f_IMS_PTC_Security_IsStarted()) { // A1 + v_Port_ps := f_IMS_PTC_GetPort_ps(); + } // else: in case of GIBA or emergency call without registration SS server port in unprotected (and therefore left out) + + if (p_IsEmergency) { /* @sic R5s130756 change 8 sic@ + !!!! PROSE ISSUE: acc. to R5-134955 the normal emergency call would not be routed to the E-CSCF but as a normal call !!!! */ + v_RouteBodyList := { + cs_RouteBody(f_SIP_BuildSipUri_lr_TX("sip:orig@" & tsc_IMS_Ecscf)), + f_RouteBodyWithParamsTX(cs_SipUri_HostPort_lr(f_IMS_PTC_Pcscf_Get(), v_Port_ps), v_SigCompParam) + }; + } else { + v_RouteBodyList := { + cs_RouteBody(f_SIP_BuildSipUri_lr_TX("sip:pcscf.other.com")), + cs_RouteBody(f_SIP_BuildSipUri_lr_TX("sip:scscf.other.com")), + cs_RouteBody(f_SIP_BuildSipUri_lr_TX("sip:orig@" & px_IMS_Scscf)), + f_RouteBodyWithParamsTX(cs_SipUri_HostPort_lr(f_IMS_PTC_Pcscf_Get(), v_Port_ps), v_SigCompParam) + }; + } + return v_RouteBodyList; + } + + /* + * @desc Route set acc. A.2.9 + * @return template (value) RouteBody_List + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_RouteSet_MT_Call_TX() runs on IMS_PTC return template (value) RouteBody_List + { + var template (omit) GenericParam v_SigCompParam := f_IMS_PTC_ImsInfo_GetSigCompParam(); // Compression parameter to be included in the last route parameter (see 34.229-1 cl. 13.2.4) + var integer v_Port_ps := f_IMS_PTC_GetPort_ps(); + var template (value) RouteBody_List v_RouteBodyList; + + v_RouteBodyList := { + f_RouteBodyWithParamsTX(cs_SipUri_HostPort_lr(f_IMS_PTC_Pcscf_Get(), v_Port_ps), v_SigCompParam), + cs_RouteBody(f_SIP_BuildSipUri_lr_TX("sip:term@scscf1.3gpp.org")), + cs_RouteBody(f_SIP_BuildSipUri_lr_TX("sip:orig@scscf2.3gpp.org")), + cs_RouteBody(f_SIP_BuildSipUri_lr_TX("sip:pcscf2.3gpp.org")) + }; + + return v_RouteBodyList; + } + + //============================================================================ + // Check functions + //---------------------------------------------------------------------------- + + type enumerated CheckToTag_Type {noToTag, dialogToTag}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + /* + * @desc check the To header e.g. whether it has unexpected tag + * @param p_MessageHeader + * @param p_CheckType + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_MessageHeader_CheckTo(MessageHeader p_MessageHeader, + CheckToTag_Type p_CheckType) runs on IMS_PTC + { + var SemicolonParam_List v_ToParams := {}; + var template (omit) charstring v_ToTagDialog; + var template (omit) charstring v_ToTagReceived; + + if (ispresent(p_MessageHeader.toField.toParams)) { + v_ToParams := p_MessageHeader.toField.toParams; + } + select (p_CheckType) { + case (noToTag) { + if (match(v_ToParams, cr_SemicolonParam_List_WithAnyTag)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid params in 'To'"); + } + } + case (dialogToTag) { + v_ToTagDialog := f_IMS_PTC_ImsInfo_DialogGetRemoteTag(); /* @sic R5s140017 MCC160 implementation: use remote tag sic@ */ + v_ToTagReceived := f_MessageHeader_GetToTag(p_MessageHeader); + if (not ispresent(v_ToTagReceived)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Missing to-tag"); + } + if (ispresent(v_ToTagDialog) and (valueof(v_ToTagDialog) != valueof(v_ToTagReceived))) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid to-tag"); + } + } + } + } + + /* + * @desc Check Via header + * @param p_MessageHeader + * @param p_Protocol + * @param p_AllowFQDN (default value: true) + * @param p_CheckRport (default value: false) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_MessageHeader_Request_CheckVia(MessageHeader p_MessageHeader, + InternetProtocol_Type p_Protocol, + boolean p_AllowFQDN := true, + boolean p_CheckRport := false) runs on IMS_PTC + { /* p_AllowFQDN .. shall be set to false e.g. for condition A6 of A.2.1 */ + var template integer v_Port := *; + var ViaBody v_ViaBody := p_MessageHeader.via.viaBody[0]; + var charstring v_ProtocolString := f_IMS_ConvertTransportProtocolToString(p_Protocol); + + if (not f_IMS_PTC_CheckHostPortForIPAddrOrFQDN(v_ViaBody.sentBy, v_Port, p_AllowFQDN)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid host and/or port in 'via'"); + } + if (f_StringToLower(v_ProtocolString) != f_StringToLower(v_ViaBody.sentProtocol.transport)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid transport protocol in 'via'"); + } + if (p_CheckRport and (p_Protocol != tcp)) { // @sic R5-133358 rport is optional for tcp sic@ + if (not match(v_ViaBody.viaParams, cr_SemicolonParam_List_OneSpecificParamNoValue("rport"))) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "'rport' is missing in 'via'"); + } + } + } + + /* + * @desc Check whether Via header of a response sent by the UE matches Via header sent to the UE in the corresponding request + * (taking into consideration that the format of IP address representation may change) + * @param p_RequestHeader + * @param p_ResponseHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_MessageHeader_Response_CheckVia(MessageHeader p_RequestHeader, + MessageHeader p_ResponseHeader) runs on IMS_PTC + { + var integer v_LengthOfViaBody_Request := lengthof(p_RequestHeader.via.viaBody); + var integer v_LengthOfViaBody_Response := lengthof(p_ResponseHeader.via.viaBody); + var boolean v_Mismatch := false; + var integer i; + + if (v_LengthOfViaBody_Request != v_LengthOfViaBody_Response) { + v_Mismatch := true; + } else { + for (i:=0; i < v_LengthOfViaBody_Request; i:=i+1) { + if (not f_IPAddresses_Compare(p_RequestHeader.via.viaBody[i].sentBy.host, p_ResponseHeader.via.viaBody[i].sentBy.host)) { + v_Mismatch := true; + break; + } + } + } + if (v_Mismatch) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Mismatch in via header"); + } + } + + /* + * @desc Check Contact header + * @param p_MessageHeader + * @param p_AllowGRUU (default value: false) + * @param p_AllowFQDN (default value: true) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_MessageHeader_CheckContactAddr(MessageHeader p_MessageHeader, + boolean p_AllowGRUU := false, + boolean p_AllowFQDN := true) runs on IMS_PTC + { + var template integer v_Port := *; + var SipUrl v_SipUrl; + + if (not match(p_MessageHeader.contact, cr_Contact_Wildcard)) { // contact may be wildcard for de-registration + v_SipUrl := f_MessageHeader_GetContactSipUrl(p_MessageHeader); + if (not f_IMS_PTC_CheckSipUrlForIPAddrOrFQDNOrGRUU(v_SipUrl, v_Port, p_AllowGRUU, p_AllowFQDN)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid SipUrl in 'contact'"); + } + } + } + + //============================================================================ + // Generic Common Messages + //---------------------------------------------------------------------------- + /* + * @desc 200 OK for other requests than REGISTER or SUBSCRIBE (see TS 34.229, A.3.1) + * @param p_MessageHeader_Request + * @param p_ContentType (default value: omit) + * @return template (present) MessageHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_OtherResponse_200_MessageHeaderRX(template (value) MessageHeader p_MessageHeader_Request, + template ContentType p_ContentType := omit) runs on IMS_PTC return template (present) MessageHeader + { /* NOTE: Message is sent by the UE => conditions A2, A4 and A5 are applicable; + * For A4 (GIBA) pAccessNetworkInfo is optional */ + /* @sic R5-130683 sic@ */ + /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + var template (present) MessageHeader v_MessageHeader_Response := cr_MessageHeader_Dummy; + var template (present) PAccessNetworkInfo v_PAccessNetworkInfo := cr_PAccessNetworkInfoDef(f_IMS_PTC_RanType_GetString()); /* acc. to A.3.1 condition A5: access network technology and, if applicable, the cell ID */ + var boolean v_A5 := true; /* true => response sent by the UE within a dialog */ + var boolean v_A2A4 := false; /* true => Response sent by UE for INVITE/UPDATE */ + var boolean v_RequestIsInvite := false; + var boolean v_RequestIsCancel := false; + var charstring v_Method := valueof(p_MessageHeader_Request.cSeq.method); + var integer v_Port_us; + + select (v_Method) { + case ("NOTIFY", "MESSAGE") { + v_A5 := false; + } + case ("UPDATE") { + v_A2A4 := true; + } + case ("INVITE") { + v_A2A4 := true; + v_RequestIsInvite := true; + } + case ("CANCEL") { + v_RequestIsCancel := true; + } + } + v_MessageHeader_Response.via := f_Via_ResponseRX(p_MessageHeader_Request.via); /* @sic R5s140350 sic@ */ + v_MessageHeader_Response.fromField := f_IMS_Response_FromHeaderRX(p_MessageHeader_Request); /* @sic R5s130453 sic@ */ + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderRX(p_MessageHeader_Request); /* @sic R5s130183 change 4 sic@ @sic R5-131897, R5-132063 - new generic function sic@ */ + v_MessageHeader_Response.callId := p_MessageHeader_Request.callId; + v_MessageHeader_Response.sessionId := p_MessageHeader_Request.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := p_MessageHeader_Request.cSeq; + v_MessageHeader_Response.contentType := p_ContentType; + + if (not f_IMS_PTC_SecurityScheme_IsGiba() and not v_RequestIsCancel) { /* @sic R5-130683: pAccessNetworkInfo is optional for GIBA; R5s140092 change 12: CANCEL sic@ + @sic R5-142223: new condition A8: Any response sent by the UE, except for CANCEL requests sic@ */ + v_MessageHeader_Response.pAccessNetworkInfo := v_PAccessNetworkInfo; + } + else { + v_MessageHeader_Response.pAccessNetworkInfo := v_PAccessNetworkInfo ifpresent; + } + + if (v_RequestIsInvite) { /* @sic R5-135004 Change 3 sic@ + PROSE ISSUE: prose is not clear about whether there shall be any RecordRoute header for responses to requests other than INVITE */ + v_MessageHeader_Response.recordRoute := p_MessageHeader_Request.recordRoute; // @sic R5-135004: same as in the INVITE sent to the UE sic@ + } + if (v_A2A4) { + v_Port_us := f_IMS_PTC_GetPort_us(); /* @sic R5s130985 Change 2 sic@ */ + v_MessageHeader_Response.contact := cr_Contact(cr_SipUri_HostPort(?, v_Port_us)); // host address needs to be checked after receiving + } + return v_MessageHeader_Response; + } + + /* + * @desc to receive response from the UE and check Via header + * @param p_RequestHeader + * @param p_Protocol + * @param p_Response + * @param p_IMS_DATA_RSP_ByRef (by reference) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + altstep a_IMS_ReceiveResponse(template (value) MessageHeader p_RequestHeader, + template (present) InternetProtocol_Type p_Protocol, + template (present) IMS_Response_Type p_Response, + out IMS_DATA_RSP p_IMS_DATA_RSP_ByRef) runs on IMS_PTC + { + var IMS_DATA_RSP v_IMS_DATA_RSP; + + [] IMS_Client.receive(car_IMS_DATA_RSP(cr_IMS_RoutingInfo(p_Protocol), p_Response)) -> value v_IMS_DATA_RSP + { + f_IMS_MessageHeader_Response_CheckVia(valueof(p_RequestHeader), v_IMS_DATA_RSP.Response.msgHeader); + p_IMS_DATA_RSP_ByRef := v_IMS_DATA_RSP; + } + } + /* + * @desc wrapper function for a_IMS_ReceiveResponse + * @param p_RequestHeader + * @param p_Protocol + * @param p_Response + * @return IMS_DATA_RSP + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_ReceiveResponse(template (value) MessageHeader p_RequestHeader, + template (present) InternetProtocol_Type p_Protocol, + template (present) IMS_Response_Type p_Response) runs on IMS_PTC return IMS_DATA_RSP + { + var IMS_DATA_RSP v_IMS_DATA_RSP_ByRef; + a_IMS_ReceiveResponse(p_RequestHeader, p_Protocol, p_Response, v_IMS_DATA_RSP_ByRef); + return v_IMS_DATA_RSP_ByRef; + } + +} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS/IMS_Procedures_Registration.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_Procedures_Registration.ttcn new file mode 100644 index 0000000..0d7c5fd --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_Procedures_Registration.ttcn @@ -0,0 +1,1693 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-11 12:36:16 +0200 (Thu, 11 Sep 2014) $ +// $Rev: 12204 $ +/******************************************************************************/ + +module IMS_Procedures_Registration { + + import from CommonDefs all; + import from CommonIP all; + import from IMS_CommonDefs all; + import from IMS_Component all; + import from IMS_PTC_CoordMsg all; + import from IP_ASP_TypeDefs all; + import from IMS_ASP_TypeDefs all; + import from IMS_ASP_Templates all; + import from IMS_CommonParameters all; + import from IMS_CommonTemplates all; + import from IMS_SIP_Templates all; + import from IMS_MessageBody_Templates all; + import from IMS_XML_Templates all; + import from IMS_IP_Config all; + import from IMS_CommonFunctions all; + import from IMS_Procedures_Common all; + import from NAS_AuthenticationCommon all; + import from LibSip_Common all; + import from LibSip_SIPTypesAndValues all; + + //---------------------------------------------------------------------------- + /* + * @desc return security parameters out of register request message + * @param p_RegisterRequest + * @return SecurityClientParams_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_Register_GetSecurityClientParams(REGISTER_Request p_RegisterRequest) runs on IMS_PTC return SecurityClientParams_Type + { + var charstring v_IntegrityAlgStr := f_SIP_IntegrityAlgorithm_String(f_IMS_PTC_Security_GetIntegrityAlgorithm()); + var charstring v_CipheringAlgStr := f_SIP_CipheringAlgorithm_String(f_IMS_PTC_Security_GetCipheringAlgorithm()); + var SecurityMechanism_List v_SecurityMechanism_List := p_RegisterRequest.msgHeader.securityClient.securityMech; + var SemicolonParam_List v_MechParams; + var SecurityClientParams_Type v_SecurityClientParams; + var integer i; + + for (i:=0; i NOTIFY needs to be sent on this dialog and has to use the tags of this dialog + * @sic R5-131897, R5-132063 - generic handling of to-tags sic@ + * @sic R5s130660 sic@ */ + return cs_From(v_SipUrl, v_FromTag); /* @sic R5-130750: same URI as in previous SUBSCRIBE's To header sic@ */ + } + + /* + * @desc Build Contact header template to be used for sending + * @param p_RegisterRequestMessageHeader + * @param p_GRUUsInSIP + * @param p_Expires + * @return template (value) Contact + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_RegisterResponse_BuildContactHeader(MessageHeader p_RegisterRequestMessageHeader, + boolean p_GRUUsInSIP, + charstring p_Expires) runs on IMS_PTC return template (value) Contact + { /* @sic R5-130750 change 6: for now all parameters will be taken over from the REGISTER's Contact (i.e. without checking whether a particular parameter is really a feature parameter) sic@ */ + /* @sic R5s130274: wildcard in contact header of de-registration sic@ */ + var SipUrl v_ContactUrl; + var template (omit) SemicolonParam_List v_ContactParams := omit; + var charstring v_PublicUserIdForGRUU; + var boolean v_WildcardedContact := match(p_RegisterRequestMessageHeader.contact, cr_Contact_Wildcard); + + if (v_WildcardedContact) { // contact may be wildcard for de-registration + v_ContactUrl := f_IMS_PTC_ImsInfo_GetContactUrl(); + } + else { + v_ContactUrl := f_MessageHeader_GetContactSipUrl(p_RegisterRequestMessageHeader); + } + + if (p_Expires != "0") { // no de-registration + if (v_WildcardedContact) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Wildcarded contact only for de-registration"); + } + else { + v_ContactParams := p_RegisterRequestMessageHeader.contact.contactBody.contactAddresses[0].contactParams; /* @sic R5-130750 change 6 sic@ */ + } + + if (p_GRUUsInSIP) { // Add pub-gruu and temp-gruu parameters + v_PublicUserIdForGRUU := f_SIP_SipUrl_GetPublicUserIdentity(f_Addr_Union_GetSipUrl(p_RegisterRequestMessageHeader.toField.addressField)); + v_ContactParams := f_SemicolonParam_List_Add_TX(v_ContactParams, cs_GenericParam("pub-gruu", cs_IMS_ArbitraryValueFor_gr(v_PublicUserIdForGRUU))); + v_ContactParams := f_SemicolonParam_List_Add_TX(v_ContactParams, cs_GenericParam("temp-gruu", cs_IMS_TempGRUUForUE(f_IMS_PTC_ImsInfo_GetHomeDomainName()))); /* !!!! acc. to 34.229-1 A.1.3: + !!!! "with an arbitrary value in the user part and the host part matching + !!!! with the domain of the To header of the REGISTER and + !!!! gr parameter without any value" + !!!! => shall not use px_IMS_HomeDomainName ??? */ + } + } + v_ContactParams := f_SemicolonParam_List_Add_TX(v_ContactParams, cs_GenericParam("expires", p_Expires)); + + return cs_Contact(v_ContactUrl, v_ContactParams); + } + + //============================================================================ + + group CheckFunctions { + + /* + * @desc check the parameters of the Contact header + * @param p_ContactAddress + * @param p_CondA7 (default value: false) + * @param p_IMS_MTSI (default value: pc_MultimediaTelephonyService) + * @param p_IMS_GRUUsInSIP (default value: pc_IMS_GRUUsInSIP) + * @param p_IMS_SMSoverIMS (default value: tsc_IMS_SMSoverIMS) + * @param p_Video (default value: tsc_IMS_VideoFeature) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_IMS_Register_ContactAddress_CheckParams(ContactAddress p_ContactAddress, + boolean p_CondA7 := false, + boolean p_IMS_MTSI := pc_MultimediaTelephonyService, /* @sic R5s130510 additional change 1: tsc_IMS_MTSI replaced by pc_MultimediaTelephonyService sic@ */ + boolean p_IMS_GRUUsInSIP := pc_IMS_GRUUsInSIP, + boolean p_IMS_SMSoverIMS := tsc_IMS_SMSoverIMS, + boolean p_Video := tsc_IMS_VideoFeature) runs on IMS_PTC + { /* NOTE: 'Expires' can only be checked in context with the 'Expires' header field */ + var SemicolonParam_List v_ContactParams := {}; + var SemicolonParam_List v_UrlParams := {}; + var SipUrl v_SipUrl; + + if (ispresent(p_ContactAddress.contactParams)) { + v_ContactParams := p_ContactAddress.contactParams; + } + + if (p_CondA7) { + v_SipUrl := f_Addr_Union_GetSipUrl(p_ContactAddress.addressField); + if (ispresent(v_SipUrl.urlParameters)) { + v_UrlParams := v_SipUrl.urlParameters; + } + if (not match(v_UrlParams, cr_SemicolonParam_List_OneSpecificParam("sos"))) { // @sic R5s130495 change 10 sic@ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Missing sos URI parameter for 'ContactAddress'"); + } + } + // Rel-7 specific, @sic R5-073440 sic@ + if (p_IMS_MTSI) { // check 'feature-param' + if (not match(v_ContactParams, cr_FeatureParam_3gpp_icsi_ref)) { // @sic R5s130109, R5s130738: string needs to be quoted; R5-142247 sic@ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid params in 'Contact Feature Params'"); + } + } + if (p_IMS_GRUUsInSIP) { // check 'c-p-instance' + //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + // @sic R5-134659 sic@ + //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + if (not match(v_ContactParams, cr_CPInstanceInContactParams)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid params in 'ContactAddress'"); + } + } + if (p_IMS_SMSoverIMS) { // check 'feature-param' + if (not match(v_ContactParams, cr_SMSParamInContactParams)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid SMS params in 'ContactAddress'"); + } + } + if (p_Video) { // check 'feature-param' + if (not match(v_ContactParams, cr_VideoInContactParams)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid video params in 'ContactAddress'"); + } + } + } + + /* + * @desc Check the address of the Contact header + * @param p_ContactAddress + * @param p_UE_Address + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_IMS_ContactAddress_CheckHostname(ContactAddress p_ContactAddress, + IP_AddrInfo_Type p_UE_Address) runs on IMS_PTC + { /* Check whether the IP address contained in the ContactUrl matches the IP address used in IP signalling + * NOTE: acc. to 24.229 cl. 5.1.1.2.1 the ContactUrl contains the IP address or FQDN (fully qualified domain name) of the UE in the hostport parameter */ + /* @sic R5w130106 - square brackets to be handled by codec sic@ */ + var charstring v_HostAddress; + var SipUrl v_SipUrl := f_Addr_Union_GetSipUrl(p_ContactAddress.addressField); /* @sic R5s130235 additional changes sic@ */ + + if (not ispresent(v_SipUrl.components.sip.hostPort.host)) { /* @sic R5s130195 BASELINE MOVING 2013: change of SipUrl sic@ */ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Contact: addr-spec is missing"); + return; + } + + v_HostAddress := v_SipUrl.components.sip.hostPort.host; + + if (f_IpAddressIsIPv4(v_HostAddress)) { + if (ischosen(p_UE_Address.V6)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Contact: addr-spec contains IPv4 address but IPv6 address expected"); + } + else if (v_HostAddress != p_UE_Address.V4.Addr) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Contact: addr-spec contains " & v_HostAddress & " but " & p_UE_Address.V4.Addr & " expected"); + } + } + else if (f_IpAddressIsIPv6(v_HostAddress)) { + if (ischosen(p_UE_Address.V4)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Contact: addr-spec contains IPv6 address but IPv4 address expected"); + } + else if (f_Convert_IPv6Addr2OctString(v_HostAddress) != f_Convert_IPv6Addr2OctString(p_UE_Address.V6.Addr)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Contact: addr-spec contains " & v_HostAddress & " but " & p_UE_Address.V6.Addr & " expected"); + } + } + else { + // v_HostAddress is neither IPv4 nor IPv6 address => FQDN (fully qualified domain name) + // => Check of the UE's FQDN (if necessary) is FFS + } + } + + /* + * @desc Check the SecurityClient header + * @param p_SecClient + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_IMS_SecurityClient_Check(SecurityClient p_SecClient) runs on IMS_PTC + { /* @sic R5s130710 - MCC160 Implementation: p_Confidentiality removed sic@ */ + + var IPsec_CipheringAlgorithm_Type v_CipheringAlgorithm := f_IMS_PTC_Security_GetCipheringAlgorithm(); /* @sic R5s130710 - MCC160 Implementation sic@ */ + + //Check that mandatory fields are there (normally that should already be done in the receive template of the request message) + if (not match(p_SecClient, cr_SecClientMandatoryFields)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid 'SecurityClient'"); + } + + //Check optional fields + if (match (p_SecClient, cr_SecClientOptionalProtAny) and not match (p_SecClient, cr_SecClientOptionalProt)) { //"prot" parameter is there with a value different to "esp" + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid 'SecurityClient'"); + } + + if (match (p_SecClient, cr_SecClientOptionalModAny) and not match (p_SecClient, cr_SecClientOptionalMod)) { //"mod" parameter is there with a value different to "trans" + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid 'SecurityClient'"); + } + + //Check confidentiality parameter + if (v_CipheringAlgorithm != nociph) { /* @sic R5s130710 - MCC160 Implementation sic@ */ + if (not match(p_SecClient, cr_SecClientEalg)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid 'SecurityClient'"); + } + } + else { + if (not match(p_SecClient, cr_SecClientEalgNull) and match (p_SecClient, cr_SecClientEalgAny)) { //"ealg" parameter is there with a value different to "null" + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid 'SecurityClient'"); + } + } + } + + /* + * @desc check Authorization header sent by the UE + * @param p_Authorization + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_IMS_Authorization_Check(Authorization p_Authorization) runs on IMS_PTC + { + var charstring v_Dresponse; + + if (not ischosen(p_Authorization.body[0].digestResponse)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid 'Authorization'"); + return; + } + v_Dresponse := f_SIP_CommaParamList_GetParamValue(p_Authorization.body[0].digestResponse, "response"); + if (v_Dresponse != "") { // empty value for A1, A3 + if (not f_IMS_Authorization_CheckDigestResponse(-, p_Authorization.body[0].digestResponse, f_IMS_PTC_Security_GetXRES(), f_IMS_PTC_Security_GetXRESLength())) { // @sic R5s120907 sic@ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "DigestResponse not as expected"); + } + } + } + + /* + * @desc check that 'Expires' is included either as header field or as parameter in 'Contact' or in both; + * NOTE: 'contact' may be wildcard e.g. in case of de-registration + * @param p_MessageHeader + * @param p_ExplicitExpiry (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_IMS_MessageHeader_CheckExpires(MessageHeader p_MessageHeader, + template (omit) charstring p_ExplicitExpiry := omit) runs on IMS_PTC + { + var SemicolonParam_List v_ContactParams := {}; + var boolean v_ExpiresFound := false; + var boolean v_MisMatch := false; + var charstring v_DeltaSec := tsc_IMS_ExpiresDef; + + if (isvalue(p_ExplicitExpiry)) { + v_DeltaSec := valueof(p_ExplicitExpiry); + } + + if (ispresent(p_MessageHeader.expires)) { + v_ExpiresFound := true; + v_MisMatch := not match(p_MessageHeader.expires, cr_Expires(v_DeltaSec)); + } + + if (ispresent(p_MessageHeader.contact.contactBody.contactAddresses[0].contactParams)) { + v_ContactParams := p_MessageHeader.contact.contactBody.contactAddresses[0].contactParams; + if (match(v_ContactParams, cr_ExpiresInContactParams)) { + v_ExpiresFound := true; + v_MisMatch := not match(v_ContactParams, cr_ExpiresInContactParams(v_DeltaSec)); // NOTE: 'expires' in ContactParams overrules value of 'Expires' header field + } + } + if (isvalue(p_ExplicitExpiry) and not v_ExpiresFound) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "'expires' found neither in header field nor in contact address"); + } + if (v_MisMatch) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "'expires': wrong value"); + } + } + + /* + * @desc Additional checks of the REGISTER acc. to A.1.1 + * @param p_MessageHeader + * @param p_Protocol + * @param p_CondA7 (default value: false) + * @param p_UE_Address (default value: omit) + * @param p_ExplicitExpiry (default value: omit) + * @param p_CheckAuthorization (default value: true) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_A_1_1_MessageHeader_CommonChecks(MessageHeader p_MessageHeader, + InternetProtocol_Type p_Protocol, + boolean p_CondA7 := false, + template (omit) IP_AddrInfo_Type p_UE_Address := omit, + template (omit) charstring p_ExplicitExpiry := omit, + boolean p_CheckAuthorization := true) runs on IMS_PTC + { + var ContactAddress v_ContactAddress; + var boolean v_IsDeregistration := ispresent(p_ExplicitExpiry) and (str2int(valueof(p_ExplicitExpiry)) == 0); + + f_IMS_MessageHeader_Request_CheckVia(p_MessageHeader, p_Protocol); // @sic R5s120727 change 7, 8 sic@ + f_IMS_MessageHeader_CheckContactAddr(p_MessageHeader); // @sic R5s120727 change 7, 8 sic@ + + // Check 'To' + f_IMS_MessageHeader_CheckTo(p_MessageHeader, noToTag); + + // Check 'ContactAddress' + if (ispresent(p_MessageHeader.contact.contactBody.contactAddresses[0])) { /* NOTE: is not be present when 'contact' is wildcard e.g. in case of de-registration + * but in this case the respective receive template needs to allow 'cr_ContactWildcard' */ + v_ContactAddress := p_MessageHeader.contact.contactBody.contactAddresses[0]; + if (not v_IsDeregistration) { /* @sic R5-142956: in case of deregistration no further contact parameters need to be checked sic@ */ + fl_IMS_Register_ContactAddress_CheckParams(v_ContactAddress, p_CondA7); + } + if (isvalue(p_UE_Address)) { + fl_IMS_ContactAddress_CheckHostname(v_ContactAddress, valueof(p_UE_Address)); + } + } + + // Check 'SecurityClient' + if (ispresent(p_MessageHeader.securityClient)) { /* 'SecurityClient' is only included for A1, A2 but not for A3 */ + fl_IMS_SecurityClient_Check(p_MessageHeader.securityClient); + } + + // Check 'Authorization' + if (p_CheckAuthorization and ispresent(p_MessageHeader.authorization)) { /* 'Authorization' is only included for A2 but optional for A1, A3 */ + fl_IMS_Authorization_Check(p_MessageHeader.authorization); + } + + fl_IMS_MessageHeader_CheckExpires(p_MessageHeader, p_ExplicitExpiry); + } + + /* + * @desc Check whether message header contains parameter for sig compression + * @param p_MessageHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_MessageHeader_CheckSigComp(MessageHeader p_MessageHeader) runs on IMS_PTC + { + var ViaBody v_ViaBody0; + var ContactAddress v_ContactAddress0; + + // Check sigcomp Test 13.1 + v_ViaBody0 := p_MessageHeader.via.viaBody[0]; + if (not (match (v_ViaBody0.viaParams, cr_SigCompParam))){ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "No SigComp parameter in Via header"); + } + v_ContactAddress0 := p_MessageHeader.contact.contactBody.contactAddresses[0]; + if (not (match (v_ContactAddress0.contactParams, cr_SigCompParam))){ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "No SigComp parameter in Contact header"); + } + } + + /* + * @desc check correctness of the public user id used by the UE for registration + * @param p_SipUrl + * @param p_CondA7 (default value: false) + * @param p_CondA3 (default value: false) + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_PublicUserIdentity_Check(SipUrl p_SipUrl, + boolean p_CondA7 := false, + boolean p_CondA3 := false) runs on IMS_PTC return boolean + { /* p_CondA7 .. In case of emergency registration acc. 24.229 cl. 5.1.1.1A "The first public user identity in the list stored in the ISIM is used in emergency registration requests" + p_CondA3 .. REGISTER for the case UE supports GIBA; @sic R5s140356: p_CondA3 sic@ */ + + if (px_UEwithISIM and not p_CondA3) { + if (not p_CondA7) { // no emergency registration + if (f_IMS_PublicUserId_Match(f_IMS_PTC_ImsInfo_GetAllIMPUs(), p_SipUrl)) { + return true; + } + } else { // emergency registration + if (f_SIP_MatchURI(f_IMS_PTC_ImsInfo_GetURI(emergencyId), p_SipUrl)) { + return true; + } + } + } else { + /* @sic R5-133628: check of temporary user id sic@ */ + if (f_SIP_MatchURI(f_IMS_PTC_ImsInfo_GetURI(temporaryId), p_SipUrl)) { + return true; + } + } + return false; + } + + /* + * @desc check whether at intial registration the UE sends a correct PublicUserIdentity in 'From' and 'To' + * @param p_MessageHeader + * @param p_CondA7 (default value: false) + * @param p_CondA3 (default value: false) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_A_1_1_MessageHeader_CheckPublicUserIdentity(MessageHeader p_MessageHeader, + boolean p_CondA7 := false, + boolean p_CondA3 := false) runs on IMS_PTC + { /* p_CondA7 .. Initial IMS emergency registration (see fl_PublicUserIdentity_Check) + p_CondA3 .. REGISTER for the case UE supports GIBA; @sic R5s140356: p_CondA3 sic@ */ + var SipUrl v_SipUrlFrom := f_Addr_Union_GetSipUrl(p_MessageHeader.fromField.addressField); /* @sic R5s130235 additional changes sic@ */ + var SipUrl v_SipUrlTo := f_Addr_Union_GetSipUrl(p_MessageHeader.toField.addressField); /* @sic R5s130235 additional changes sic@ */ + + if (not fl_PublicUserIdentity_Check(v_SipUrlTo, p_CondA7, p_CondA3)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid public user identity in 'toField' of the REGISTER request"); + } + + if (f_SIP_SipUrl2Str(v_SipUrlFrom) != f_SIP_SipUrl2Str(v_SipUrlTo)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "public user identity is different in From and To header of the REGISTER request"); + } + } + + } // group + + //============================================================================ + + group SendReceiveFunctions { + + + /* + * @desc wait for REGISTER when it has not been received yet + * @param p_IMS_DATA_REQ + * @return IMS_DATA_REQ + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_IMS_ReceiveOrGetRegisterRequest(template (omit) IMS_DATA_REQ p_IMS_DATA_REQ) runs on IMS_PTC return IMS_DATA_REQ + { + var IMS_DATA_REQ v_IMS_DATA_REQ; + var template (present) SipUrl v_SipUrl := cr_SipUri_HostPort(f_IMS_PTC_ImsInfo_GetHomeDomainName()); + + if (not isvalue(p_IMS_DATA_REQ)) { + IMS_Server.receive(car_IMS_Register_Request(cr_REGISTER_Request(v_SipUrl))) -> value v_IMS_DATA_REQ; // receive any REGISTER + } else { + v_IMS_DATA_REQ := valueof(p_IMS_DATA_REQ); + } + return v_IMS_DATA_REQ; + } + + //---------------------------------------------------------------------------- + /* + * @desc 200 OK for Register (see TS 34.229, A.1.3) + * @param p_RegisterRequest + * @param p_CondA3 (default value: false) + * @param p_RegisterExpiration (default value: tsc_IMS_RegisterExpiration) + * @return template (value) MessageHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_RegisterResponse_200_MessageHeaderTX(REGISTER_Request p_RegisterRequest, + boolean p_CondA3 := false, + charstring p_RegisterExpiration := tsc_IMS_RegisterExpiration) runs on IMS_PTC return template (value) MessageHeader + { /* p_CondA3 .. condition A3 (Response for an emergency registration) */ + /* @sic R5-130750 change 1, 4: specific IMPU for messages sent in DL; P-Associated-URI sic@ */ + var MessageHeader v_MessageHeader_Register := p_RegisterRequest.msgHeader; + var template (value) MessageHeader v_MessageHeader_Response := cs_MessageHeader_Dummy; + var CharStringList_Type v_PublicUserIdList := f_IMS_PTC_ImsInfo_GetAllIMPUs(); + var CharStringList_Type v_AssociatedUriList; + var template (value) NameAddrParam_List v_NameAddrParamList; + var template (omit) ServiceRoute v_ServiceRoute := omit; + var integer i; + + if (p_CondA3) { // emergency registration + v_AssociatedUriList[0] := f_IMS_PTC_ImsInfo_GetURI(emergencyId); + } + else { + for (i:=0; i < lengthof(v_PublicUserIdList); i := i+1) { + v_AssociatedUriList[i] := v_PublicUserIdList[i]; + } + v_AssociatedUriList[i] := px_IMS_AssociatedTelUri; + + v_ServiceRoute := cs_ServiceRouteDef(px_IMS_Scscf); + } + + for (i:=0; i < lengthof(v_AssociatedUriList); i := i+1) { + v_NameAddrParamList[i] := cs_NameAddrParam(f_SIP_BuildSipUri_TX(v_AssociatedUriList[i])); + } + + v_MessageHeader_Response.via := v_MessageHeader_Register.via; + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderTX(v_MessageHeader_Register); /* @sic R5s130235 additional changes sic@ @sic R5-131897, R5-132063 - generic handling of to-tags sic@ */ + v_MessageHeader_Response.fromField := v_MessageHeader_Register.fromField; + v_MessageHeader_Response.callId := v_MessageHeader_Register.callId; + v_MessageHeader_Response.sessionId := v_MessageHeader_Register.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := v_MessageHeader_Register.cSeq; + v_MessageHeader_Response.contact := f_SIP_RegisterResponse_BuildContactHeader(v_MessageHeader_Register, pc_IMS_GRUUsInSIP, p_RegisterExpiration); + v_MessageHeader_Response.pAssociatedURI := cs_PAssociatedURI(v_NameAddrParamList); + v_MessageHeader_Response.serviceRoute := v_ServiceRoute; + v_MessageHeader_Response.path := cs_PathDef(f_IMS_PTC_Pcscf_Get()); + + return v_MessageHeader_Response; + } + + /* + * @desc 401 Unauthorized for Register (see TS 34.229, A.1.2) + * @param p_RegisterRequest + * @param p_Nonce (default value: omit) + * @return template (value) MessageHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_RegisterResponse_401_MessageHeaderTX(REGISTER_Request p_RegisterRequest, + template (omit) charstring p_Nonce := omit) runs on IMS_PTC return template (value) MessageHeader + { + var MessageHeader v_MessageHeader_Register := p_RegisterRequest.msgHeader; + var charstring v_Nonce; + var template (value) SecurityMechanism_List v_SecurityMech := f_IMS_PTC_BuildSecurityServerParam(); + var template (value) MessageHeader v_MessageHeader_Response := cs_MessageHeader_Dummy; + + if (not isvalue(p_Nonce)) { + v_Nonce := f_IMS_PTC_Security_GetNonce(); + } else { + v_Nonce := valueof(p_Nonce); + } + + v_MessageHeader_Response.via := v_MessageHeader_Register.via; + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderTX(v_MessageHeader_Register); /* @sic R5s130235 additional changes sic@ @sic R5-131897, R5-132063 - generic handling of to-tags sic@ */ + v_MessageHeader_Response.fromField := v_MessageHeader_Register.fromField; + v_MessageHeader_Response.callId := v_MessageHeader_Register.callId; + v_MessageHeader_Response.sessionId := v_MessageHeader_Register.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := v_MessageHeader_Register.cSeq; + v_MessageHeader_Response.wwwAuthenticate := cs_WwwAuthChallenge(f_IMS_PTC_ImsInfo_GetHomeDomainName(), v_Nonce); // @sic R5s120727 change 2 sic@ + v_MessageHeader_Response.securityServer := cs_SecServerDef(v_SecurityMech); + + return v_MessageHeader_Response; + } + + /* + * @desc 403 Forbidden (see TS 34.229, A.3.2) + * @param p_RegisterRequest + * @return template (value) MessageHeader + * @status APPROVED (IMS, IMS_IRAT) + */ + function f_IMS_RegisterResponse_403_MessageHeaderTX(REGISTER_Request p_RegisterRequest) runs on IMS_PTC return template (value) MessageHeader + { + var MessageHeader v_MessageHeader_Register := p_RegisterRequest.msgHeader; + var template (value) MessageHeader v_MessageHeader_Response := cs_MessageHeader_Dummy; + + v_MessageHeader_Response.via := v_MessageHeader_Register.via; + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderTX(v_MessageHeader_Register); /* @sic R5s130235 additional changes sic@ @sic R5-131897, R5-132063 - generic handling of to-tags sic@ */ + v_MessageHeader_Response.fromField := v_MessageHeader_Register.fromField; + v_MessageHeader_Response.callId := v_MessageHeader_Register.callId; + v_MessageHeader_Response.sessionId := v_MessageHeader_Register.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := v_MessageHeader_Register.cSeq; + + return v_MessageHeader_Response; + } + + /* + * @desc 200 OK for Subscribe (see TS 34.229, A.1.5) + * @param p_SubscribeRequest + * @param p_RecordRoute + * @param p_ExpireTime (default value: "600000") + * @param p_ContactAddr (default value: px_IMS_Scscf) + * @return template (value) MessageHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_SubscribeResponse_200_MessageHeaderTX(SUBSCRIBE_Request p_SubscribeRequest, + template (value) RecordRoute p_RecordRoute, + charstring p_ExpireTime := "600000", + charstring p_ContactAddr := px_IMS_Scscf) runs on IMS_PTC return template (value) MessageHeader + { /* NOTE: acc. to A.1.5 this message does not have a Session-ID */ + var MessageHeader v_MessageHeader_Subscribe := p_SubscribeRequest.msgHeader; + var template (value) MessageHeader v_MessageHeader_Response := cs_MessageHeader_Dummy; + + v_MessageHeader_Response.via := v_MessageHeader_Subscribe.via; + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderTX(p_SubscribeRequest.msgHeader); /* @sic R5-130750 same as in SUBSCRIBE, R5s130235 additional changes sic@ + @sic R5-131897, R5-132063 - generic handling of to-tags sic@ */ + v_MessageHeader_Response.fromField := v_MessageHeader_Subscribe.fromField; + v_MessageHeader_Response.callId := v_MessageHeader_Subscribe.callId; + v_MessageHeader_Response.cSeq := v_MessageHeader_Subscribe.cSeq; + v_MessageHeader_Response.contact := cs_Contact(cs_SipUri_HostPort(p_ContactAddr)); // @sic R5s120727 change 3 sic@ + v_MessageHeader_Response.expires := cs_Expires (p_ExpireTime); // @sic R5-130548 sic@ + v_MessageHeader_Response.recordRoute := p_RecordRoute; + + return v_MessageHeader_Response; + } + + /* + * @desc 503 Service Unavailable (see TS 34.229, A.4.2) + * @param p_MessageHeader_Request + * @param p_RetryAfter + * @return template (value) MessageHeader + * @status APPROVED (IMS) + */ + function f_IMS_CommonResponse_503_MessageHeaderTX(MessageHeader p_MessageHeader_Request, + template (value) RetryAfter p_RetryAfter) runs on IMS_PTC return template (value) MessageHeader + { + var template (value) MessageHeader v_MessageHeader_Response := cs_MessageHeader_Dummy; + + v_MessageHeader_Response.via := p_MessageHeader_Request.via; + v_MessageHeader_Response.fromField := p_MessageHeader_Request.fromField; + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderTX(p_MessageHeader_Request); + v_MessageHeader_Response.callId := p_MessageHeader_Request.callId; + v_MessageHeader_Response.sessionId := p_MessageHeader_Request.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := p_MessageHeader_Request.cSeq; + v_MessageHeader_Response.retryAfter := p_RetryAfter; + + return v_MessageHeader_Response; + } + + //---------------------------------------------------------------------------- + /* + * @desc used for initialisation of f_IMS_RegisterRequest_MessageHeaderRX_Initial/Subsequent with headers being common + * @param p_CondA3 + * @param p_CseqValue + * @param p_SessionIdSupported (default value: false) + * @return template (present) MessageHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_IMS_RegisterRequest_MessageHeaderRX_Base(boolean p_CondA3, + template (present) integer p_CseqValue, + boolean p_SessionIdSupported := false) return template (present) MessageHeader + { + var template (present) MessageHeader v_MessageHeader_Register := cr_MessageHeader_Dummy; + + v_MessageHeader_Register.cSeq := cr_CseqDef(p_CseqValue, "REGISTER"); + v_MessageHeader_Register.expires := *; // as the 'expires' information can be included in 'expires' as well as in 'contact' (or in both) it needs to be checked seperately + v_MessageHeader_Register.supported := cr_Supported_Register; + v_MessageHeader_Register.callId := cr_CallId(?); // per default call id itself is not checked at all + v_MessageHeader_Register.sessionId := f_IMS_SessionId_RX_IfSupported(p_SessionIdSupported); /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Register.maxForwards := cr_MaxForwardsDef; + + if (p_CondA3) { + v_MessageHeader_Register.require := omit; + v_MessageHeader_Register.proxyRequire := omit; + v_MessageHeader_Register.securityClient := omit; + v_MessageHeader_Register.securityVerify := omit; + v_MessageHeader_Register.authorization := omit; + } + else { + v_MessageHeader_Register.require := cr_RequireSecAgree; + v_MessageHeader_Register.proxyRequire := cr_ProxyRequireDef; + v_MessageHeader_Register.securityClient := cr_SecClientMandatoryFields; + } + return v_MessageHeader_Register; + } + + /* + * @desc initial REGISTER (condition A1 or A3) acc. to 34.229-1 Annex A.1.1 + * @param p_Protocol + * @return template (present) MessageHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_RegisterRequest_MessageHeaderRX_Initial(InternetProtocol_Type p_Protocol) runs on IMS_PTC return template (present) MessageHeader + { /* NOTE: several checks are done explicitly in the respective check functions applied on the receive messages (the same for sigcomp) */ + /* @sic R5s130XXX: p_CondA3 removed sic@ */ + + var boolean v_CondA3 := f_IMS_PTC_SecurityScheme_IsGiba(); + var template (present) SipUrl v_SipUrlPublicUserId := ?; /* Acc. to 24.229 cl. 5.1.1.2.1 for initial registration the UE shall populate + 'To' and 'From' with the public user identity to be registered; + Normally this is one of the IMPUs stored on the ISIM; + The public user identity is explicitly checked after matching the REGISTER message */ + var template (present) integer v_CseqValue := ?; + var template (present) MessageHeader v_MessageHeader_Register := fl_IMS_RegisterRequest_MessageHeaderRX_Base(v_CondA3, v_CseqValue); + var template (present) Via v_Via; + + if (p_Protocol == tcp) { + v_Via := cr_ViaDef; // @sic R5s120858 change 2; R5s130369; R5-133358: "rport" is optional for tcp (independent from A3) sic@ + } else { + v_Via := cr_ViaInitialReg; + } + + v_MessageHeader_Register.via := v_Via; + v_MessageHeader_Register.route := omit; // @sic R5-134659 sic@ + v_MessageHeader_Register.fromField := cr_FromWithTag(v_SipUrlPublicUserId); // checked in f_IMS_A_1_1_MessageHeader_CheckPublicUserIdentity + v_MessageHeader_Register.toField := cr_ToDef(v_SipUrlPublicUserId); // checked in f_IMS_A_1_1_MessageHeader_CheckPublicUserIdentity + v_MessageHeader_Register.contact := cr_Contact(cr_SipUri_HostPort(?, *)); // checked in fl_IMS_Register_ContactAddress_CheckParams, f_IMS_A_1_1_MessageHeader_CommonChecks + + v_MessageHeader_Register.pAccessNetworkInfo := cr_PAccessNetworkInfoDef(f_IMS_PTC_RanType_GetString()) ifpresent; // optional for A1, A3; cellId is not checked + + if (not v_CondA3) { // => 34.229-1 A.1.1 condition A1 + v_MessageHeader_Register.securityVerify := omit; + v_MessageHeader_Register.authorization := cr_AuthorizationInitial(f_IMS_PTC_ImsInfo_GetPrivateUserId(), f_IMS_PTC_ImsInfo_GetHomeDomainName()); + } + return v_MessageHeader_Register; + } + + /* + * @desc subsequent REGISTER (condition A2) acc. to 34.229-1 Annex A.1.1 + * @param p_NonceCount + * @return template (present) MessageHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_RegisterRequest_MessageHeaderRX_Subsequent(integer p_NonceCount) runs on IMS_PTC return template (present) MessageHeader + { /* p_NonceCount .. Acc. to A.1.1 "counter to indicate how many times UE has sent the same value of nonce within successive REGISTERs, initial value shall be 1" + * => during initial registration "1" is used per default; for each re-authentication (=> new nonce) the nonce-counter is reset to "1" + */ + var template (present) MessageHeader v_MessageHeader_Register; + var template (present) SipUrl v_SipUrlPublicUserId; + var charstring v_Nonce := f_IMS_PTC_Security_GetNonce(); + var charstring v_NonceCountStr := "0000000" & int2str(p_NonceCount); // assuming p_NonceCount < 9 + var IMS_ProtectedPorts_Type v_Protected := f_IMS_PTC_Security_GetProtectedPorts(); + var integer v_CseqValue := f_IMS_PTC_ImsInfo_CseqIncr(register); + var boolean v_IsGiba := false; + + v_SipUrlPublicUserId := f_SIP_BuildSipUri_RX(f_IMS_PTC_ImsInfo_GetURI(registrationId)); /* public user identity is checked against what the UE has sent in initial REGISTER + (in case the UE does not have an ISIM this is the temporary user id) + => we don't need to consider A7 (emergency registration) */ + v_MessageHeader_Register := fl_IMS_RegisterRequest_MessageHeaderRX_Base(v_IsGiba, v_CseqValue); + + v_MessageHeader_Register.route := omit; // @sic R5-134659 sic@ + v_MessageHeader_Register.via := cr_ViaDef(-, cr_HostPort(?, v_Protected.Port_us)); // @sic R5s120727 change 7 sic@ + v_MessageHeader_Register.fromField := cr_FromWithTag(v_SipUrlPublicUserId); + v_MessageHeader_Register.toField := cr_ToDef(v_SipUrlPublicUserId); + v_MessageHeader_Register.contact := cr_Contact(cr_SipUri_HostPort(?, v_Protected.Port_us)); // checked in f_IMS_A_1_1_MessageHeader_CommonChecks; @sic R5s120727 change 7 sic@ + + v_MessageHeader_Register.pAccessNetworkInfo := cr_PAccessNetworkInfoDef(f_IMS_PTC_RanType_GetString()); // cell id only if applicable + v_MessageHeader_Register.securityVerify := f_IMS_PTC_BuildSecurityVerifyHeader(); + v_MessageHeader_Register.authorization := cr_AuthorizationDef(f_IMS_PTC_ImsInfo_GetPrivateUserId(), f_IMS_PTC_ImsInfo_GetHomeDomainName(), v_Nonce, v_NonceCountStr); + + return v_MessageHeader_Register; + } + + /* + * @desc REGISTER to de-register + * @return template (present) MessageHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_RegisterRequest_MessageHeaderRX_Derregister() runs on IMS_PTC return template (present) MessageHeader + { + var boolean v_CondA3 := f_IMS_PTC_SecurityScheme_IsGiba(); // condition A3 acc. to 34.229-1 Annex A.1.1 (REGISTER for the case UE supports GIBA) + var template (present) MessageHeader v_MessageHeader_Register; + var template (present) SipUrl v_SipUrlPublicUserId := f_SIP_BuildSipUri_RX(f_IMS_PTC_ImsInfo_GetURI(registrationId)); /* public user identity is checked against what the UE has sent in initial REGISTER + NOTE: there is no indication in 34.229-1 to check this */ + var template (present) integer v_CseqValue := f_IMS_PTC_ImsInfo_CseqIncr(register); + var IMS_ProtectedPorts_Type v_Protected; + var charstring v_Nonce; + + v_MessageHeader_Register := fl_IMS_RegisterRequest_MessageHeaderRX_Base(v_CondA3, v_CseqValue); + + // common parameters for A2 and A3: + v_MessageHeader_Register.fromField := cr_FromWithTag(v_SipUrlPublicUserId); + v_MessageHeader_Register.toField := cr_ToDef(v_SipUrlPublicUserId); + v_MessageHeader_Register.supported := *; // Supported: header may be missing or it may contain any value + v_MessageHeader_Register.route := omit; // @sic R5-134659 sic@ + + if (v_CondA3) { + v_MessageHeader_Register.via := cr_ViaDef; + v_MessageHeader_Register.contact := (cr_Contact_Wildcard, cr_Contact(cr_SipUri_HostPort(?, *))); + } + else { + v_Protected := f_IMS_PTC_Security_GetProtectedPorts(); + v_Nonce := f_IMS_PTC_Security_GetNonce(); + + v_MessageHeader_Register.via := cr_ViaDef(-, cr_HostPort(?, v_Protected.Port_us)); // address will be checked in f_IMS_A_1_1_MessageHeader_CommonChecks (@sic R5s120727 sic@) + v_MessageHeader_Register.contact := (cr_Contact_Wildcard, cr_Contact(cr_SipUri_HostPort(?, v_Protected.Port_us))); // address will be checked in f_IMS_A_1_1_MessageHeader_CommonChecks (@sic R5s120727 sic@) + + v_MessageHeader_Register.pAccessNetworkInfo := cr_PAccessNetworkInfoDef(f_IMS_PTC_RanType_GetString()); // cell id only if applicable + v_MessageHeader_Register.securityVerify := f_IMS_PTC_BuildSecurityVerifyHeader(); + v_MessageHeader_Register.authorization := cr_AuthorizationDef(f_IMS_PTC_ImsInfo_GetPrivateUserId(), f_IMS_PTC_ImsInfo_GetHomeDomainName(), v_Nonce, ?); + } + return v_MessageHeader_Register; + } + + //---------------------------------------------------------------------------- + + /* + * @desc SUBSCRIBE acc. to 34.229-1 Annex A.1.4, A.5.1 or A.6.1 + * @param p_EventType (default value: "reg") + * @param p_SipUrlTo (default value: omit) + * @param p_ExpireTime (default value: "600000") + * @param p_SessionIdSupported (default value: false) + * @return template (present) MessageHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_SubscribeRequest_MessageHeaderRX(EventType p_EventType := "reg", + template SipUrl p_SipUrlTo := omit, + template (present) charstring p_ExpireTime := "600000", + boolean p_SessionIdSupported := false) runs on IMS_PTC return template (present) MessageHeader + { /* p_EventType: + * "reg" - normal case acc. A.1.4 + * "conference" - "SUBSCRIBE for conference event package" acc. annex A.5.1; NOTE in this case p_SipUrlTo shall be present and set acc. to "px_FinalConferenceUri" + * "message-summary" - "SUBSCRIBE for Message Waiting Indication package" acc. annex A.6.1 */ + /* @sic R5-130750 change 4: specific IMPU for messages sent in DL sic@ */ + /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + var template (present) MessageHeader v_MessageHeader_Subscribe := cr_MessageHeader_Dummy; + var IMS_ProtectedPorts_Type v_Protected; + var template (present) PAccessNetworkInfo v_PAccessNetworkInfo := cr_PAccessNetworkInfoDef(f_IMS_PTC_RanType_GetString()); + var template (present) SipUrl v_SipUrlFrom := f_IMS_PTC_ImsInfo_GetSipUriSubscriptionRX(); + var template (present) SipUrl v_SipUrlTo; + + if (ispresent(p_SipUrlTo)) { + v_SipUrlTo := p_SipUrlTo; // NOTE: compiler warning cannot be avoided here + } else { + v_SipUrlTo := v_SipUrlFrom; + } + + v_MessageHeader_Subscribe.cSeq := cr_CseqDef(?, "SUBSCRIBE"); + v_MessageHeader_Subscribe.fromField := cr_FromWithTag(v_SipUrlFrom); + v_MessageHeader_Subscribe.toField := cr_ToDef(v_SipUrlTo); + v_MessageHeader_Subscribe.expires := cr_Expires(p_ExpireTime); // @sic R5-130548 sic@ + v_MessageHeader_Subscribe.callId := cr_CallId(?); + v_MessageHeader_Subscribe.sessionId := f_IMS_SessionId_RX_IfSupported(p_SessionIdSupported); /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Subscribe.maxForwards := cr_MaxForwardsDef; + v_MessageHeader_Subscribe.event := cr_EventDef(p_EventType); + + if (f_IMS_PTC_SecurityScheme_IsGiba()) { + v_MessageHeader_Subscribe.route := cr_RouteSubs (f_IMS_PTC_Pcscf_Get(), *, px_IMS_Scscf); + v_MessageHeader_Subscribe.via := cr_ViaDef(-, cr_HostPort(?)); /* host address needs to be checked after receiving @sic R5s120727 change 6.1 sic@ */ + v_MessageHeader_Subscribe.contact := cr_Contact(cr_SipUri_HostPort(?, ?)); /* host address needs to be checked after receiving @sic R5s120727 change 6.1 sic@ + @sic R5s130925 change 1: UE may use any port as server port sic@ */ + + v_MessageHeader_Subscribe.require := omit; + v_MessageHeader_Subscribe.proxyRequire := omit; + v_MessageHeader_Subscribe.securityVerify := omit; + v_MessageHeader_Subscribe.pAccessNetworkInfo := v_PAccessNetworkInfo ifpresent; + } + else { + v_Protected := f_IMS_PTC_Security_GetProtectedPorts(); + v_MessageHeader_Subscribe.route := cr_RouteSubs (f_IMS_PTC_Pcscf_Get(), v_Protected.Port_ps, px_IMS_Scscf); + v_MessageHeader_Subscribe.via := cr_ViaDef(-, cr_HostPort(?, v_Protected.Port_us)); // host address needs to be checked after receiving @sic R5s120727 change 6.1 sic@ + v_MessageHeader_Subscribe.contact := cr_Contact(cr_SipUri_HostPort(?, v_Protected.Port_us)); // host address needs to be checked after receiving @sic R5s120727 change 6.1 sic@ + + v_MessageHeader_Subscribe.require := cr_RequireSecAgree; + v_MessageHeader_Subscribe.proxyRequire := cr_ProxyRequireDef; + v_MessageHeader_Subscribe.securityVerify := f_IMS_PTC_BuildSecurityVerifyHeader(); + v_MessageHeader_Subscribe.pAccessNetworkInfo := v_PAccessNetworkInfo + } + + select (p_EventType) { + case ("reg") { // normal case + v_MessageHeader_Subscribe.accept := cr_AcceptDef(c_xmlreginfoApplication) ifpresent; + } + case ("conference") { // "SUBSCRIBE for conference event package" acc. annex A.5.1 + v_MessageHeader_Subscribe.accept := cr_AcceptDef("application/conference-info+xml"); + v_MessageHeader_Subscribe.expires := cr_Expires(?); + } + case ("message-summary") { // "SUBSCRIBE for Message Waiting Indication package" acc. annex A.6.1 + v_MessageHeader_Subscribe.accept := cr_AcceptDef("application/simple-message-summary") + } + } + + return v_MessageHeader_Subscribe; + } + + } // group + + //============================================================================ + + group RegistrationFunctions { + + /* + * @desc Receive initial REGISTER (condition A1 or A3) acc. to 34.229-1 Annex A.1.1 + * @param p_IMS_DATA_REQ (default value: omit) + * @param p_ExplicitExpiry (default value: omit) + * @param p_SigCompIsActive (default value: false) + * @param p_CondA7 (default value: false) + * @param p_CondA3 (default value: false) + * @return IMS_DATA_REQ + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_REGISTER_InitialRequest(template (omit) IMS_DATA_REQ p_IMS_DATA_REQ := omit, + template (omit) charstring p_ExplicitExpiry := omit, + boolean p_SigCompIsActive := false, + boolean p_CondA7 := false, + boolean p_CondA3 := false) runs on IMS_PTC return IMS_DATA_REQ + { /* p_CondA7 .. condition A7 acc. to 34.229-1 Annex A.1.1 (Initial IMS emergency registration) + p_CondA3 .. REGISTER for the case UE supports GIBA; @sic R5s140356: p_CondA3 sic@ */ + /* @sic R5s130756 additional changes: p_CondA3 removed sic@ */ + /* @sic R5-134659: check of Route header removed sic@ */ + var IPCAN_INFO_Type v_IpcanInfo; + var IMS_DATA_REQ v_IMS_DATA_REQ; + var IMS_RoutingInfo_Type v_RoutingInfo_UL; + var InternetProtocol_Type v_Protocol; + var IP_AddrInfo_Type v_UE_Address; + var IP_AddrInfo_Type v_NW_Address; + var MessageHeader v_MessageHeader; + var boolean v_Match := false; + + v_IMS_DATA_REQ := fl_IMS_ReceiveOrGetRegisterRequest(p_IMS_DATA_REQ); + v_MessageHeader := v_IMS_DATA_REQ.Request.Register.msgHeader; + v_Protocol := v_IMS_DATA_REQ.RoutingInfo.Protocol; + + v_IpcanInfo := f_IMS_IPCAN_Query(IPCAN); + f_IMS_PTC_SetIpcanInfo(v_IpcanInfo); + + v_Match := match(v_MessageHeader, f_IMS_RegisterRequest_MessageHeaderRX_Initial(v_Protocol)); // @sic R5s130369 sic@ + if (not v_Match) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "invalid REGISTER Request"); + } + v_RoutingInfo_UL := v_IMS_DATA_REQ.RoutingInfo; + v_UE_Address := v_RoutingInfo_UL.UE_Address; + v_NW_Address := v_RoutingInfo_UL.NW_Address; + v_Protocol := v_RoutingInfo_UL.Protocol; + + f_IMS_PTC_ImsInfo_Init(v_UE_Address, v_NW_Address, v_IMS_DATA_REQ.Request.Register, p_SigCompIsActive); + + // additional checks + f_IMS_A_1_1_MessageHeader_CommonChecks(v_MessageHeader, v_Protocol, p_CondA7, v_UE_Address, p_ExplicitExpiry); + f_IMS_A_1_1_MessageHeader_CheckPublicUserIdentity(v_MessageHeader, p_CondA7, p_CondA3); // check 'To' and 'From' field (needed for initial registration only); @sic R5s140356: p_CondA3 sic@ + if (p_SigCompIsActive) { + f_IMS_MessageHeader_CheckSigComp(v_MessageHeader); + } + + return v_IMS_DATA_REQ; + } + + + /* + * @desc local initialisation of ports and spis at the IMS PTC + * @param p_RegisterReq + * @param p_AuthenticationParams + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_Register_SecurityInitPortsAndSPIs(REGISTER_Request p_RegisterReq, + Common_AuthenticationParams_Type p_AuthenticationParams) runs on IMS_PTC + { /* @sic R5s131004 - MCC160 implementation: new function sic@ */ + var SecurityClientParams_Type v_SecurityClientParams := f_IMS_Register_GetSecurityClientParams(p_RegisterReq); // @sic R5s140266 sic@ + + /* initialise or re-initialise SPIs and protected ports of the network side: */ + f_IMS_PTC_Security_Init(p_AuthenticationParams, v_SecurityClientParams.Port_us, v_SecurityClientParams.Port_uc, v_SecurityClientParams.SPI_us, v_SecurityClientParams.SPI_uc); + } + + + /* + * @desc Initialise security during registration procedure + * @param p_RegisterReq + * @param p_Rand (default value: tsc_IMS_AuthRAND) + * @param p_Unprotected (default value: false) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_Register_SecurityInit(REGISTER_Request p_RegisterReq, + B128_Type p_Rand := tsc_IMS_AuthRAND, + boolean p_Unprotected := false) runs on IMS_PTC + { /* @sic R5s120858 change 6..8 - MCC160 implementation: additional parameter p_Unprotected to deal with GIBA sic@ */ + /* @sic R5s130266 change 1.3, 4, 5 - MCC160 Implementation: SPIs for re-authentication sic@ */ + var Common_AuthenticationParams_Type v_AuthenticationParams := f_IMS_AuthenticationInit(p_Rand); + var IP_AddrInfo_Type v_UE_Address := f_IMS_PTC_UE_Address_Get(); + var IP_AddrInfo_Type v_NW_Address := f_IMS_PTC_NW_Address_Get(); + var SipUrl v_ContactUrl := f_MessageHeader_GetContactSipUrl(p_RegisterReq.msgHeader); + + if (p_Unprotected) { + f_IMS_PortsAndSecurityConfig(f_SIP_ContactUrl_GetPort(v_ContactUrl), // may be omit in which case 5060 is chosen by the IP PTC + v_NW_Address, + v_UE_Address); + } + else { + f_IMS_InstallIPsecKeys(v_AuthenticationParams.IK, v_AuthenticationParams.CK); + + f_IMS_Register_SecurityInitPortsAndSPIs(p_RegisterReq, v_AuthenticationParams); /* @sic R5s131004 - MCC160 implementation: use of f_IMS_Register_SecurityInitPortsAndSPIs sic@ */ + + /* configure IMS security; any existing security context will be released + * NOTE: release of the security context is not done at the end of the deregistration since it is not sure that the deregistration really happens and + * when realeasing the security directly after sending the deregistration it may lead to timing issues */ + f_IMS_PortsAndSecurityConfig(f_SIP_ContactUrl_GetPort(v_ContactUrl), // may be omit in which case 5060 is chosen by the IP PTC + v_NW_Address, + v_UE_Address, + cs_IMS_SecurityInfo(f_IMS_PTC_Security_GetProtectedPorts(), + f_IMS_PTC_Security_GetSPIs(), + f_IMS_PTC_Security_GetIntegrityAlgorithm(), + f_IMS_PTC_Security_GetCipheringAlgorithm())); + + } + } + + /* + * @desc Receive subsequent REGISTER (condition A2) acc. to 34.229-1 Annex A.1.1 + * @param p_IMS_DATA_REQ (default value: omit) + * @param p_CondA7 (default value: false) + * @param p_NonceCount (default value: 1) + * @param p_ExplicitExpiry (default value: omit) + * @return IMS_DATA_REQ + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_REGISTER_SubsequentRequest(template (omit) IMS_DATA_REQ p_IMS_DATA_REQ := omit, + boolean p_CondA7 := false, + integer p_NonceCount := 1, + template (omit) charstring p_ExplicitExpiry := omit) runs on IMS_PTC return IMS_DATA_REQ + { /* p_CondA7 .. condition A7 acc. to 34.229-1 Annex A.1.1 (Initial IMS emergency registration) + * p_NonceCount .. Acc. to A.1.1 "counter to indicate how many times UE has sent the same value of nonce within successive REGISTERs, initial value shall be 1" + * => during initial registration "1" is used per default; for each re-authentication (=> new nonce) the nonce-counter is reset to "1" + */ + var IP_AddrInfo_Type v_UE_Address := f_IMS_PTC_UE_Address_Get(); + var IMS_DATA_REQ v_IMS_DATA_REQ; + var REGISTER_Request v_RegisterReq; + var MessageHeader v_MessageHeader; + var InternetProtocol_Type v_Protocol; + var boolean v_Match := false; + + // Receive/Get second REGISTER on secure port: + v_IMS_DATA_REQ := fl_IMS_ReceiveOrGetRegisterRequest(p_IMS_DATA_REQ); + v_RegisterReq := v_IMS_DATA_REQ.Request.Register; + v_Protocol := v_IMS_DATA_REQ.RoutingInfo.Protocol; + v_MessageHeader := v_RegisterReq.msgHeader; + + v_Match := match(v_MessageHeader, f_IMS_RegisterRequest_MessageHeaderRX_Subsequent(p_NonceCount)); + if (not v_Match) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "invalid REGISTER Request"); + } + else { + f_IMS_A_1_1_MessageHeader_CommonChecks(v_MessageHeader, v_Protocol, p_CondA7, v_UE_Address, p_ExplicitExpiry); // @sic R5s120945 sic@ + + if (f_IMS_PTC_ImsInfo_SigCompStarted()) { + f_IMS_MessageHeader_CheckSigComp(v_MessageHeader); + } + } + f_IMS_PTC_ImsInfo_SetContactUrl(f_MessageHeader_GetContactSipUrl(v_MessageHeader)); + return v_IMS_DATA_REQ; + } + + /* + * @desc receive REGISTER (non GIBA) and send reponse + * @param p_IMS_DATA_REQ (default value: omit) + * @param p_RegisterExpiration (default value: tsc_IMS_RegisterExpiration) + * @param p_SigCompIsActive (default value: false) + * @param p_IsEmergency (default value: false) + * @return REGISTER_Request + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_Register_NonGIBA(template (omit) IMS_DATA_REQ p_IMS_DATA_REQ := omit, + charstring p_RegisterExpiration := tsc_IMS_RegisterExpiration, + boolean p_SigCompIsActive := false, + boolean p_IsEmergency := false) runs on IMS_PTC return REGISTER_Request + { /* Note: + - In case the the function is called in a default handler the Register message has been already received + - When used in the IMS CC tests the PTC needs to wait for the reception of the Register message */ + var IMS_DATA_REQ v_IMS_DATA_REQ; + var REGISTER_Request v_RegisterReq; + + v_IMS_DATA_REQ := f_IMS_REGISTER_InitialRequest(p_IMS_DATA_REQ, -, p_SigCompIsActive, p_IsEmergency); // check REGISTER and init GlobalInfo + v_RegisterReq := v_IMS_DATA_REQ.Request.Register; + + f_IMS_Register_SecurityInit(v_RegisterReq); + IMS_Server.send(cas_IMS_DATA_RSP(f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo), cs_Response(c_statusLine401, f_IMS_RegisterResponse_401_MessageHeaderTX(v_RegisterReq)))); + + v_IMS_DATA_REQ := f_IMS_REGISTER_SubsequentRequest(-, p_IsEmergency); + v_RegisterReq := v_IMS_DATA_REQ.Request.Register; + IMS_Server.send(cas_IMS_DATA_RSP(f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo), cs_Response(c_statusLine200, f_IMS_RegisterResponse_200_MessageHeaderTX(v_RegisterReq, p_IsEmergency, p_RegisterExpiration)))); // @sic R5s130561 sic@ + + return v_RegisterReq; + } + + /* + * @desc common function for IMS registration (GIBA) + * @param p_IMS_DATA_REQ (default value: omit) + * @param p_RegisterExpiration (default value: tsc_IMS_RegisterExpiration) + * @return REGISTER_Request + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_Register_GIBA(template (omit) IMS_DATA_REQ p_IMS_DATA_REQ := omit, + charstring p_RegisterExpiration := tsc_IMS_RegisterExpiration) runs on IMS_PTC return REGISTER_Request + { /* Note: + - In case the the function is called in a default handler the Register message has been already received + - When used in the IMS CC tests the PTC needs to wait for the reception of the Register message */ + + var IMS_DATA_REQ v_IMS_DATA_REQ; + var REGISTER_Request v_RegisterReq; + var boolean v_CondA3 := true; + + v_IMS_DATA_REQ := f_IMS_REGISTER_InitialRequest(p_IMS_DATA_REQ, -, -, -, v_CondA3); // check REGISTER and init GlobalInfo; @sic R5s140356: v_CondA3 sic@ + v_RegisterReq := v_IMS_DATA_REQ.Request.Register; + + f_IMS_Register_SecurityInit(v_RegisterReq, -, v_CondA3); // @sic R5s120858 change 6..8 - MCC160 implementation sic@ + + IMS_Server.send(cas_IMS_DATA_RSP(f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo), cs_Response(c_statusLine200, f_IMS_RegisterResponse_200_MessageHeaderTX(v_RegisterReq, -, p_RegisterExpiration)))); + return v_RegisterReq; + } + + /* + * @desc common function for IMS registration + * @param p_IMS_DATA_REQ (default value: omit) + * @param p_SigCompIsActive (default value: false) + * @return REGISTER_Request + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_Register(template (omit) IMS_DATA_REQ p_IMS_DATA_REQ := omit, + boolean p_SigCompIsActive := false) runs on IMS_PTC return REGISTER_Request + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + var REGISTER_Request v_RegisterRequest; + + if (f_IMS_PTC_SecurityScheme_IsGiba()) { + if (p_SigCompIsActive) { + FatalError(__FILE__, __LINE__, "sigcomp is not supported for GIBA"); + } + v_RegisterRequest := f_IMS_Register_GIBA(p_IMS_DATA_REQ); + } else { + v_RegisterRequest := f_IMS_Register_NonGIBA(p_IMS_DATA_REQ, -, p_SigCompIsActive); + } + return v_RegisterRequest; + } + + //============================================================================ + /* + * @desc Receive SUBSCRIBE acc. to 34.229-1 Annex A.1.4 + * @param p_EventType (default value: "reg") + * @param p_SipUrlTo (default value: omit) + * @param p_ExpireTime (default value: "600000") + * @return IMS_DATA_REQ + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_SUBSCRIBE_Request(EventType p_EventType := "reg", + template SipUrl p_SipUrlTo := omit, + template (present) charstring p_ExpireTime := "600000") runs on IMS_PTC return IMS_DATA_REQ + { /* @sic R5-130750 change 4: specific IMPU for messages sent in DL sic@ */ + /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + var IMS_DATA_REQ v_IMS_DATA_REQ; + var MessageHeader v_MessageHeader; + var InternetProtocol_Type v_Protocol; + var template (present) SipUrl v_SipUrlRequestUri := f_IMS_PTC_ImsInfo_GetSipUriSubscriptionRX(); + var template (present) MessageHeader v_ExpectedMessageHeader; + + v_ExpectedMessageHeader := f_IMS_SubscribeRequest_MessageHeaderRX(p_EventType, p_SipUrlTo, p_ExpireTime); + IMS_Server.receive(car_IMS_Subscribe_Request(cr_SUBSCRIBE_Request(v_SipUrlRequestUri, v_ExpectedMessageHeader))) -> value v_IMS_DATA_REQ; + v_MessageHeader := v_IMS_DATA_REQ.Request.Subscribe.msgHeader; + v_Protocol := v_IMS_DATA_REQ.RoutingInfo.Protocol; + + f_IMS_MessageHeader_CheckTo(v_MessageHeader, noToTag); // This cannot be checked in the template + + f_IMS_MessageHeader_Request_CheckVia(v_MessageHeader, v_Protocol); // @sic R5s120727 change 9 sic@ + f_IMS_MessageHeader_CheckContactAddr(v_MessageHeader, true); // @sic R5s120727 change 9 sic@ + + if (f_IMS_PTC_ImsInfo_SigCompStarted()) { + f_IMS_MessageHeader_CheckSigComp(v_MessageHeader); + } + return v_IMS_DATA_REQ; + } + + /* + * @desc Send 200 OK for SUBSCRIBE acc. to 34.229-1 Annex A.1.5 or Annex 5.2 + * @param p_IMS_Subscribe_Request + * @param p_ExpireTime (default value: "600000") + * @param p_ContactAddr (default value: px_IMS_Scscf) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_SUBSCRIBE_Response(IMS_DATA_REQ p_IMS_Subscribe_Request, + charstring p_ExpireTime := "600000", + charstring p_ContactAddr := px_IMS_Scscf) runs on IMS_PTC + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + var IMS_RoutingInfo_Type v_RoutingInfo_UL; + var SUBSCRIBE_Request v_SubscribeRequest; + var template (value) RouteBody_List v_RouteBodyList; + var charstring v_RouteHost := f_IMS_PTC_Pcscf_Get(); + var integer v_Port_ps := f_IMS_PTC_GetPort_ps(); + var template (omit) GenericParam v_SigCompParam := f_IMS_PTC_ImsInfo_GetSigCompParam(); + + v_RoutingInfo_UL := p_IMS_Subscribe_Request.RoutingInfo; + v_SubscribeRequest := p_IMS_Subscribe_Request.Request.Subscribe; + v_RouteBodyList := { f_RouteBodyWithParamsTX(cs_SipUri_HostPort_lr(v_RouteHost, v_Port_ps), v_SigCompParam) }; + + IMS_Server.send(cas_IMS_DATA_RSP(f_IMS_RoutingInfo_ULtoDL(v_RoutingInfo_UL), cs_Response(c_statusLine200, f_IMS_SubscribeResponse_200_MessageHeaderTX(v_SubscribeRequest, + cs_RecordRoute(v_RouteBodyList), + p_ExpireTime, + p_ContactAddr)))); + } + + /* + * @desc receive SUBSCRIBE and send response + * @return SUBSCRIBE_Request + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_Register_Subscribe() runs on IMS_PTC return SUBSCRIBE_Request + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + var IMS_DATA_REQ v_IMS_DATA_REQ; + + v_IMS_DATA_REQ := f_IMS_SUBSCRIBE_Request(); + f_IMS_SUBSCRIBE_Response(v_IMS_DATA_REQ); + + return v_IMS_DATA_REQ.Request.Subscribe; + } + + //---------------------------------------------------------------------------- + /* + * @desc Common function for NOTIFY message + * @param p_SubscribeRequest + * @param p_ViaAddressList + * @param p_ContactSipUrl + * @param p_EventType + * @param p_CseqValue + * @param p_SubscriptionState + * @return template (value) MessageHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_NotifyRequest_MessageHeader_Common(SUBSCRIBE_Request p_SubscribeRequest, + CharStringList_Type p_ViaAddressList, + template (value) SipUrl p_ContactSipUrl, + EventType p_EventType, + integer p_CseqValue, + template (value) SubscriptionState p_SubscriptionState) + runs on IMS_PTC return template (value) MessageHeader + { /* NOTE: acc. to A.1.6 this message does not have a Session-ID */ + /* @sic R5s130756 additional changes: p_CondA2 removed sic@ */ + var template (value) MessageHeader v_MessageHeader_Notify := cs_MessageHeader_Dummy; + var charstring v_ProtocolString := f_IMS_ConvertTransportProtocolToString(f_IMS_PTC_ImsInfo_GetTransportProtocol()); + var template (omit) integer v_Port_ps := f_IMS_PTC_GetPort_ps(); // @sic R5s120907 change 5 - Port_ps instead of Port_us sic@ + var template (omit) GenericParam v_SigCompParam := f_IMS_PTC_ImsInfo_GetSigCompParam(); + var template (value) ViaBody_List v_ViaBodyList; + var charstring v_NextBranch; + var charstring v_ContentType; + var integer i; + + for (i:=0; i < lengthof(p_ViaAddressList); i:=i+1) { + v_NextBranch := f_IMS_PTC_ImsInfo_GetNextBranch(); + v_ViaBodyList[i] := cs_ViaBody(v_ProtocolString, cs_HostPort(p_ViaAddressList[i], v_Port_ps), f_ViaParamsTX(v_NextBranch, v_SigCompParam)); + if (i == 0) { + v_Port_ps := omit; + v_SigCompParam := omit; + } + } + select (p_EventType) { + case ("reg") { v_ContentType := c_xmlreginfoApplication; } + case ("message-summary") { v_ContentType := "application/simple-message-summary"; } + case ("conference") { v_ContentType := "application/conference-info+xml"; } + case else { FatalError(__FILE__, __LINE__, "unknown event type"); } + } + + v_MessageHeader_Notify.via := cs_Via(v_ViaBodyList); + v_MessageHeader_Notify.fromField := f_IMS_Notify_FromHeaderTX(p_SubscribeRequest.msgHeader); + v_MessageHeader_Notify.toField := f_IMS_Notify_ToHeaderTX(p_SubscribeRequest.msgHeader); + v_MessageHeader_Notify.callId := p_SubscribeRequest.msgHeader.callId; + // v_MessageHeader_Notify.sessionId := p_SubscribeRequest.msgHeader.sessionId; to be added by appropriate CR + v_MessageHeader_Notify.cSeq := cs_CseqDef(p_CseqValue, "NOTIFY"); + v_MessageHeader_Notify.contact := cs_Contact(p_ContactSipUrl); + v_MessageHeader_Notify.contentType := cs_ContentType(v_ContentType); + v_MessageHeader_Notify.event := cs_EventDef(p_EventType); + v_MessageHeader_Notify.maxForwards := cs_MaxForwardsDef(69); + v_MessageHeader_Notify.subscriptionState := p_SubscriptionState; + + return v_MessageHeader_Notify; + } + + /* + * @desc Send NOTIFY acc. to 34.229-1 Annex A.1.6 + * @param p_SubscribeRequest + * @param p_CseqValue + * @param p_SubscriptionState + * @return template (value) MessageHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_NotifyRequest_MessageHeader_A16(SUBSCRIBE_Request p_SubscribeRequest, + integer p_CseqValue, + template (value) SubscriptionState p_SubscriptionState) runs on IMS_PTC return template (value) MessageHeader + { /* NOTE: acc. to A.1.6 this message does not have a Session-ID */ + /* @sic R5s130756 additional changes: p_CondA2 removed sic@ */ + /* @sic R5s130768 additional MCC160 change: use of new function f_IMS_NotifyRequest_MessageHeader_Common sic@ */ + var charstring v_NW_AddrStr := f_IMS_PTC_NW_Address_GetAddrStr(); /* @sic R5s130133 change 6: f_IMS_PTC_NW_Address_GetHostFormat replaced by f_IMS_PTC_NW_Address_GetAddrStr sic@ */ + var charstring v_Scscf := px_IMS_Scscf; + var CharStringList_Type v_ViaAddressList := {v_NW_AddrStr, v_Scscf}; + var template (value) SipUrl v_ContactSipUrl := cs_SipUri_HostPort(v_Scscf); // @sic R5s120727 change 10 sic@ + var EventType v_EventType := "reg"; + + return f_IMS_NotifyRequest_MessageHeader_Common(p_SubscribeRequest, v_ViaAddressList, v_ContactSipUrl, v_EventType, p_CseqValue, p_SubscriptionState); + } + + //---------------------------------------------------------------------------- + /* + * @desc Send NOTIFY acc. to 34.229-1 Annex A.1.6 + * @param p_ContactUrl + * @param p_SubscribeRequest + * @param p_XmlMessage + * @param p_CseqValue (default value: 1) + * @param p_SubscriptionState (default value: cs_SubscriptionState_Active) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_Register_Notify(SipUrl p_ContactUrl, + SUBSCRIBE_Request p_SubscribeRequest, + template (value) Reginfo_Type p_XmlMessage, + integer p_CseqValue := 1, + template (value) SubscriptionState p_SubscriptionState := cs_SubscriptionState_Active) runs on IMS_PTC + { /* @sic R5s130756 additional changes: p_CondA2 removed sic@ */ + var template (value) MessageHeader v_MessageHeader_Notify; + var template (present) MessageHeader v_MessageHeader_Response; + var InternetProtocol_Type v_Protocol := f_IMS_PTC_ImsInfo_GetTransportProtocol(); + + v_MessageHeader_Notify := f_IMS_NotifyRequest_MessageHeader_A16(p_SubscribeRequest, p_CseqValue, p_SubscriptionState); + IMS_Client.send(cas_IMS_Notify_Request(cs_IMS_RoutingInfo(v_Protocol), cs_NOTIFY_Request(p_ContactUrl, v_MessageHeader_Notify, cs_MessageBody_RegInfo(p_XmlMessage)))); + + v_MessageHeader_Response := f_IMS_OtherResponse_200_MessageHeaderRX(v_MessageHeader_Notify); + f_IMS_ReceiveResponse(v_MessageHeader_Notify, v_Protocol, cr_Response(c_statusLine200, v_MessageHeader_Response)); /* @sic R5s140350 sic@ */ + } + + //---------------------------------------------------------------------------- + /* + * @desc return RegInfo.Registration + * @param p_RegisterRequest + * @param p_Uri + * @param p_RegistrationId + * @param p_ContactId + * @param p_ContactState (default value: active) + * @param p_ContactEvent (default value: registered) + * @param p_Expires (default value: omit) + * @param p_ApplyGRUU (default value: pc_IMS_GRUUsInSIP) + * @param p_IsTelUri (default value: false) + * @return template (value) RegInfo_Registration_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_XML_RegistrationInfo(REGISTER_Request p_RegisterRequest, + charstring p_Uri, + charstring p_RegistrationId, + charstring p_ContactId, + RegInfo_Contact_State_Type p_ContactState := active, + RegInfo_Contact_Event_Type p_ContactEvent := registered, + template (omit) integer p_Expires := omit, + boolean p_ApplyGRUU := pc_IMS_GRUUsInSIP, + boolean p_IsTelUri := false) + runs on IMS_PTC return template (value) RegInfo_Registration_Type + { + var charstring v_ContactUri := f_SIP_SipUrl2Str(f_MessageHeader_GetContactSipUrl(p_RegisterRequest.msgHeader)); // same value as in Contact header of REGISTER request + var template (omit) charstring v_CallId := omit; + var template (omit) integer v_Cseq := omit; + var template (omit) PubGruu_Type v_PubGruu := omit; + var template (omit) TempGruu_Type v_TempGruu := omit; + var template (value) RegInfo_Contact_UnknownParams_Type v_UnknownParams := {}; + var RegInfo_Registration_State_Type v_RegistrationState; + + if (p_ContactState == active) { + v_RegistrationState := active; + } else { + v_RegistrationState := terminated; + } + + if (p_ApplyGRUU) { + v_PubGruu := cs_PubGruu(p_Uri); /* !!!! "public GRUU for the UE" acc. to 34.229-1 A.1.6; !!!! + !!!! NOTE: it is not specified what the public GRUU really is and which URI to be used; !!!! + !!!! assumption: it is the same URI as for this registration !!!! */ + v_TempGruu := cs_TempGruu(f_IMS_PTC_ImsInfo_GetHomeDomainName(), p_RegisterRequest.msgHeader.cSeq.seqNumber); /* !!!! acc. to 34.229-1 A.1.6 "temporary GRUU for the UE" !!!! + !!!! -> open issue: how to build up the temp GRUU; where to take the domain name from !!!! */ + v_UnknownParams := { cs_XML_UEInstance }; + if (not p_IsTelUri) { + v_CallId := p_RegisterRequest.msgHeader.callId.callid; // Call-Id of most recent REGISTER + v_Cseq := p_RegisterRequest.msgHeader.cSeq.seqNumber; // CSeq value of most recent REGISTER + } + } + return cs_RegistrationInfo(cs_RegistrationContact(v_ContactUri, p_ContactId, p_ContactState, p_ContactEvent, v_CallId, v_Cseq, p_Expires, v_UnknownParams, v_PubGruu, v_TempGruu), + p_Uri, + p_RegistrationId, + v_RegistrationState); + } + + template (value) RegInfo_RegistrationList_Type cs_RegistrationList (template (value) RegInfo_Registration_Type p_Reg1, + template (value) RegInfo_Registration_Type p_Reg2, + template (value) RegInfo_Registration_Type p_Reg3, + template (value) RegInfo_Registration_Type p_Reg4) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + { p_Reg1, p_Reg2, p_Reg3, p_Reg4 }; + + template (value) RegInfo_RegistrationList_Type cs_RegistrationListOf3 (template (value) RegInfo_Registration_Type p_Reg1, + template (value) RegInfo_Registration_Type p_Reg2, + template (value) RegInfo_Registration_Type p_Reg3) := + { p_Reg1, p_Reg2, p_Reg3}; + + /* + * @desc return default Reginfo for NOTIFY message + * @param p_RegisterRequest + * @return template (value) Reginfo_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_XmlMessageForNotify_Def(REGISTER_Request p_RegisterRequest) runs on IMS_PTC return template (value) Reginfo_Type + { /* @sic R5-130750 sic@ */ + var CharStringList_Type v_PublicUeserIdList := f_IMS_PTC_ImsInfo_GetAllIMPUs(); + var template (value) RegInfo_Registration_Type v_Registration1 := f_XML_RegistrationInfo(p_RegisterRequest, v_PublicUeserIdList[0], "a100", "980", active, registered); + var template (value) RegInfo_Registration_Type v_Registration2 := f_XML_RegistrationInfo(p_RegisterRequest, px_IMS_AssociatedTelUri, "a101", "981", active, created, -, -, true); + var template (value) RegInfo_Registration_Type v_Registration3 := f_XML_RegistrationInfo(p_RegisterRequest, v_PublicUeserIdList[1], "a102", "982", active, registered); + var template (value) RegInfo_Registration_Type v_Registration4 := f_XML_RegistrationInfo(p_RegisterRequest, v_PublicUeserIdList[2], "a103", "983", active, registered); + + return f_XML_RegInfo(-, -, cs_RegistrationList (v_Registration1, v_Registration2, v_Registration3, v_Registration4)); + } + + //---------------------------------------------------------------------------- + /* + * @desc C.2 / C.2a Generic Registration Test Procedure - IMS support + * This is the second half of the generic Registration procedure (Steps 8 to 11) + * @param p_RegisterRequest + * @return SUBSCRIBE_Request + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_Register_SubscribeNotify(REGISTER_Request p_RegisterRequest) runs on IMS_PTC return SUBSCRIBE_Request + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + var SUBSCRIBE_Request v_SubscribeReq; + var SipUrl v_ContactUrl := f_MessageHeader_GetContactSipUrl(p_RegisterRequest.msgHeader); + + // Steps 8 and 9 + v_SubscribeReq := f_IMS_Register_Subscribe(); + + // Steps 10 and 11 + f_IMS_Register_Notify(v_ContactUrl, v_SubscribeReq, f_IMS_XmlMessageForNotify_Def(p_RegisterRequest)); + + return v_SubscribeReq; + } + + //---------------------------------------------------------------------------- + /* + * @desc procedure to de-register UE acc. to 34.229-1 C.30 + * @param p_IMS_DATA_REQ (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_Deregistration(template (omit) IMS_DATA_REQ p_IMS_DATA_REQ := omit) runs on IMS_PTC + { /* @sic R5-140902: no delay needed anymore to wait for TCP close sic@ */ + var IMS_DATA_REQ v_IMS_DATA_REQ; + var MessageHeader v_MessageHeader; + var IP_AddrInfo_Type v_UE_Address := f_IMS_PTC_UE_Address_Get(); + var InternetProtocol_Type v_Protocol; + var charstring v_Expires := "0"; + var boolean v_Match := false; + + v_IMS_DATA_REQ := fl_IMS_ReceiveOrGetRegisterRequest(p_IMS_DATA_REQ); + v_MessageHeader := v_IMS_DATA_REQ.Request.Register.msgHeader; + v_Protocol := v_IMS_DATA_REQ.RoutingInfo.Protocol; + + v_Match := match(v_MessageHeader, f_IMS_RegisterRequest_MessageHeaderRX_Derregister()); + if (not v_Match) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "invalid REGISTER Request for de-registration"); + } + else { + f_IMS_A_1_1_MessageHeader_CommonChecks(v_MessageHeader, v_Protocol, -, v_UE_Address, v_Expires); // check expires: to be 0 and present either in Expires or in contact or in both (-> 8.3.4/8.13.4) + } + IMS_Server.send(cas_IMS_DATA_RSP(f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo), + cs_Response(c_statusLine200, f_IMS_RegisterResponse_200_MessageHeaderTX(v_IMS_DATA_REQ.Request.Register, -, v_Expires)))); // @sic R5s130274: v_Expires sic@ + + f_IMS_TCP_CloseHandling(waitAndClose); /* @sic R5s140219 - MCC160 implementation sic@ */ + } + + //============================================================================ + // re-registration: used e.g. for test cases 8.2 and 11.2 + + type record SecurityClientParams_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + PortNumber_Type Port_us, + PortNumber_Type Port_uc, + IPsec_SPI_Type SPI_us, + IPsec_SPI_Type SPI_uc + }; + + /* + * @desc Get Security Client parameters for re-registration (if re-authentication is applicable) + * @return SecurityClientParams_Type + * @status APPROVED (IMS) + */ + function f_IMS_PTC_ReRegistration_SecurityClientParamsGet() + runs on IMS_PTC return SecurityClientParams_Type + { + var SecurityClientParams_Type v_SecurityClientParams; + var IMS_ProtectedPorts_Type v_Protected := f_IMS_PTC_Security_GetProtectedPorts(); + var IMS_SPIs_Type v_SPIs := f_IMS_PTC_Security_GetSPIs(); + + v_SecurityClientParams.Port_us := v_Protected.Port_us; + v_SecurityClientParams.Port_uc := v_Protected.Port_uc; + v_SecurityClientParams.SPI_us := v_SPIs.SPI_us; + v_SecurityClientParams.SPI_uc := v_SPIs.SPI_uc; + + return v_SecurityClientParams; + } + + /* + * @desc check port numbers and SPIs sent by the UE for re-registration + * @param p_RegisterReq + * @param p_PrevSecurityClientParams + * @return SecurityClientParams_Type + * @status APPROVED (IMS) + */ + function f_IMS_PTC_ReRegistration_SecurityClientParamsCheck(REGISTER_Request p_RegisterReq, + SecurityClientParams_Type p_PrevSecurityClientParams) + runs on IMS_PTC return SecurityClientParams_Type + { /* p_PrevSecurityClientParams .. security parameters as being used for configuration of the security at the SS side + * i.e. as used for the latest (re-)authentication */ + var SecurityClientParams_Type v_SecurityClientParams := f_IMS_Register_GetSecurityClientParams(p_RegisterReq); // @sic R5s140266 sic@ + + if ((v_SecurityClientParams.SPI_uc == p_PrevSecurityClientParams.SPI_uc) or + (v_SecurityClientParams.SPI_us == p_PrevSecurityClientParams.SPI_us) or + (v_SecurityClientParams.Port_uc == p_PrevSecurityClientParams.Port_uc) or + (v_SecurityClientParams.Port_us != p_PrevSecurityClientParams.Port_us)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, ""); + } else { + f_IMS_PreliminaryPass(__FILE__, __LINE__, ""); + } + return v_SecurityClientParams; + } + + /* + * @desc Wait for the UE to do re-registration + * @param p_TRegExpireMin + * @param p_TRegExpireMax + * @param p_Nc + * @return IMS_DATA_REQ + * @status APPROVED (IMS) + */ + function f_IMS_PTC_ReRegistration_WaitForRegistration(timer p_TRegExpireMin, + timer p_TRegExpireMax, + integer p_Nc) + runs on IMS_PTC return IMS_DATA_REQ + { /* @sic R5s130266 change 1.2 - MCC160 Implementation: upper, lower bound for TRegExpire sic@ */ + var IMS_DATA_REQ v_IMS_DATA_REQ; + var template (present) SipUrl v_SipUrl := cr_SipUri_HostPort(f_IMS_PTC_ImsInfo_GetHomeDomainName()); + + alt { // @sic R5s130266 change 1.2 - MCC160 Implementation sic@ + [] IMS_Server.receive(car_IMS_Register_Request(cr_REGISTER_Request)) + { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "re-registration before timeout of expiry timer"); + } + [] p_TRegExpireMin.timeout {} + } + + alt { + [] IMS_Server.receive(car_IMS_Register_Request(cr_REGISTER_Request(v_SipUrl))) // receive any REGISTER + -> value v_IMS_DATA_REQ + { + p_TRegExpireMax.stop; + f_IMS_REGISTER_SubsequentRequest(v_IMS_DATA_REQ, -, p_Nc); + + } + [] p_TRegExpireMax.timeout + { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "timeout while waiting for re-registration"); + } + } + return v_IMS_DATA_REQ; + } + + //============================================================================ + // Generic Procedures acc. to 34.229-1 Annex C (and derivations) + + /* + * @desc Generic procedure to register IMS + * @param p_IMS_DATA_REQ (default value: omit) + * @param p_SigCompIsActive (default value: false) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_Registration(template (omit) IMS_DATA_REQ p_IMS_DATA_REQ := omit, + boolean p_SigCompIsActive := false) runs on IMS_PTC + { /* NOTE: + * - In case the the function is called in a default handler, the Register message has been already received + * - When used in the IMS CC tests, the PTC needs to wait for the reception of the Register message */ + /* @sic R5s130756 additional changes: p_IsGIBA removed as security scheme is managed at the IMS PTC (-> f_IMS_PTC_SecurityScheme_IsGiba()) sic@ */ + var REGISTER_Request v_RegisterRequest; + + v_RegisterRequest := f_IMS_Register(p_IMS_DATA_REQ, p_SigCompIsActive); + f_IMS_Register_SubscribeNotify(v_RegisterRequest); + } + + /* + * @desc Emergency registration according to 34.229-1 Annex C.20 + * @param p_IMS_DATA_REQ (default value: omit) + * @param p_RegisterExpiration (default value: tsc_IMS_RegisterExpiration) + * @return REGISTER_Request + * @status APPROVED (IMS, LTE) + */ + function f_IMS_EmergencyRegistration_C20(template (omit) IMS_DATA_REQ p_IMS_DATA_REQ := omit, + charstring p_RegisterExpiration := tsc_IMS_RegisterExpiration) runs on IMS_PTC return REGISTER_Request + { + var boolean v_IsEmergency := true; + return f_IMS_Register_NonGIBA(p_IMS_DATA_REQ, p_RegisterExpiration, -, v_IsEmergency); + } + + /* + * @desc Emergency registration Forbidden + * @return REGISTER_Request + * @status APPROVED (IMS_IRAT) + */ + function f_IMS_EmergencyCallRegistration_403Forbidden() runs on IMS_PTC return REGISTER_Request + { + var IMS_DATA_REQ v_IMS_DATA_REQ; + var REGISTER_Request v_RegisterReq; + var boolean v_IsEmergency := true; + + v_IMS_DATA_REQ := f_IMS_REGISTER_InitialRequest(-, -, -, v_IsEmergency); + v_RegisterReq := v_IMS_DATA_REQ.Request.Register; + + f_IMS_Register_SecurityInit(v_RegisterReq); + IMS_Server.send(cas_IMS_DATA_RSP(f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo), cs_Response(c_statusLine401, f_IMS_RegisterResponse_401_MessageHeaderTX(v_RegisterReq)))); + + v_IMS_DATA_REQ := f_IMS_REGISTER_SubsequentRequest(-, v_IsEmergency); + v_RegisterReq := v_IMS_DATA_REQ.Request.Register; /* @sic R5s140123 change 3 sic@ */ + + IMS_Server.send(cas_IMS_DATA_RSP(f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo), cs_Response(c_statusLine403, f_IMS_RegisterResponse_403_MessageHeaderTX(v_RegisterReq)))); + + return v_IMS_DATA_REQ.Request.Register; + } + + //---------------------------------------------------------------------------- + /* + * @desc handle optional de-registration + * @param p_Port + * @param p_AllowRetransmission (default value: false) + * @param p_WaitForDeRegistration (default value: true) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_IpcanReleaseWithOptionalDeregistrationOnAnyPTC(IMS_IPCAN_CO_ORD_PORT p_Port, + boolean p_AllowRetransmission := false, + boolean p_WaitForDeRegistration := true) runs on IMS_PTC + { /* @sic R5s140710 - MCC160 Implementation: parameter p_AllowRetransmission sic@ */ + var IMS_DATA_REQ v_IMS_DATA_REQ; + var template (present) SipUrl v_SipUrl := cr_SipUri_HostPort(f_IMS_PTC_ImsInfo_GetHomeDomainName()); + var boolean v_WaitForDeRegistration := p_WaitForDeRegistration; + var default v_RetransmissionHandler := null; + + alt { // @sic R5-141113: de-registration is not mandatory sic@ + [v_WaitForDeRegistration] IMS_Server.receive(car_IMS_Register_Request(cr_REGISTER_Request(v_SipUrl))) -> value v_IMS_DATA_REQ + { + if (p_AllowRetransmission) { + v_RetransmissionHandler := activate(a_IMS_RetransmissionHandler(v_IMS_DATA_REQ)); /* when re-transmissions are allowed they may colide with f_Delay in f_IMS_TCP_CloseHandling + or with the confirmation in f_IMS_CloseTCP (if any); */ + } + f_IMS_PTC_Deregistration(v_IMS_DATA_REQ); + v_WaitForDeRegistration := false; + repeat; /* @sic R5s140175 sic@ */ + } + [] p_Port.receive(cmr_IMS_IPCAN_Trigger) // @sic R5-142919 sic@ + { + } + } + deactivate(v_RetransmissionHandler); + } + + /* + * @desc handle optional de-registration + * @param p_WaitForDeRegistration (default value: true) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_IpcanReleaseWithOptionalDeregistration(boolean p_WaitForDeRegistration := true) runs on IMS_PTC + { + f_IMS_IpcanReleaseWithOptionalDeregistrationOnAnyPTC(IPCAN, -, p_WaitForDeRegistration); + } + + /* + * @desc handle optional de-registration on "other RAT" + * @param p_WaitForDeRegistration (default value: true) + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_IMS_IpcanReleaseWithOptionalDeregistrationOtherIPCAN(boolean p_WaitForDeRegistration := true) runs on IMS_PTC + { + var boolean v_AllowRetransmission := true; + f_IMS_IpcanReleaseWithOptionalDeregistrationOnAnyPTC(OtherIPCAN, v_AllowRetransmission, p_WaitForDeRegistration); + } + + + } // group + +} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS/IMS_SDP_Messages.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_SDP_Messages.ttcn new file mode 100644 index 0000000..ff83031 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_SDP_Messages.ttcn @@ -0,0 +1,723 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-05 19:27:02 +0200 (Fri, 05 Sep 2014) $ +// $Rev: 12079 $ +/******************************************************************************/ + +module IMS_SDP_Messages { + import from LibSip_SDPTypes all; + import from IMS_CommonDefs all; + import from IMS_Component all; + import from CommonDefs all; + import from IMS_SDP_Templates all; + import from IMS_CommonParameters all; + import from LibSip_MessageBodyTypes all; + + /* + * @desc Wrapper function to encode SDP message + * @param p_SDP_Message + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_SDP_Message_Encode(template (value) SDP_Message p_SDP_Message) return charstring + { + var bitstring v_BitStr := encvalue(p_SDP_Message); + return oct2char(bit2oct(v_BitStr)); + } + + /* + * @desc Wrapper function to decode SDP message and to assign fail verdict in case of syntactically wrong SDP message + * @param p_SdpBody + * @return SDP_Message + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_IMS_SDP_Message_Decode(SdpBody p_SdpBody) runs on IMS_PTC return SDP_Message + { + var SDP_Message v_SDP_Message; + var bitstring v_BitStr := oct2bit(char2oct(p_SdpBody)); + var integer v_Result := decvalue(v_BitStr, v_SDP_Message); + + if (v_Result != 0) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid SDP message"); + } + return v_SDP_Message; + } + + /* + * @desc check that 'Connections' is included either at the top level or in the media description(s) or in both + * @param p_SDP_Message + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_SDP_CheckConnections(SDP_Message p_SDP_Message) runs on IMS_PTC + { + var boolean v_ConnectionFound := false; + var integer i; + + if (ispresent(p_SDP_Message.connection)) { + v_ConnectionFound := true; + } + + if (not v_ConnectionFound) { + // no connection specified in session description => there shall be at least one connection per media description + v_ConnectionFound := true; + for (i := 0; i < lengthof(p_SDP_Message.media_list); i := i + 1) { + if (not ispresent(p_SDP_Message.media_list[i].connections)) { // @sic R5s130586 change 12 sic@ + v_ConnectionFound := false; + break; + } + } + } + + if (not v_ConnectionFound) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "'Connections found neither in session description nor in media description"); + } + } + + /* + * @desc Wrapper function to decode and match SDP message + * @param p_SdpBody + * @param p_SDP_Message_Template + * @param p_CheckConnections (default value: true) + * @return SDP_Message + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_SIP_DecodeMatchAndCheckSDP(template (omit) SdpBody p_SdpBody, + template SDP_Message p_SDP_Message_Template, + boolean p_CheckConnections := true) runs on IMS_PTC return SDP_Message + { + var SDP_Message v_SDP_Message; + + if (not ispresent(p_SdpBody)) { /* there is no SDP message */ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Missing sdpMessageBody"); + } + else { /* => MessageBody is present and contains an SDP message */ + v_SDP_Message := fl_IMS_SDP_Message_Decode(valueof(p_SdpBody)); + if (not match(v_SDP_Message, p_SDP_Message_Template)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "received sdpMessageBody does not match"); + } + if (p_CheckConnections) { // check at least one connections field is sent + f_IMS_SDP_CheckConnections(v_SDP_Message); + } + } + return v_SDP_Message; + } + + /* + * @desc wrapper function to decode and match optional SDP message + * @param p_MessageBody + * @param p_SDP_Message_Template + * @param p_CheckConnections (default value: true) + * @return template (omit) SDP_Message + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_SIP_SdpMessageBody_DecodeMatchAndCheckSDP_Ifpresent(template (omit) MessageBody p_MessageBody, + template SDP_Message p_SDP_Message_Template, + boolean p_CheckConnections := true) runs on IMS_PTC return template (omit) SDP_Message + { + var template (omit) SdpBody v_SdpBody := omit; + var SDP_Message v_SDP_Message; + + if (ischosen(p_MessageBody.sdpMessageBody)) { /* there is an SDP message */ + v_SdpBody := p_MessageBody.sdpMessageBody; + } + if (not ispresent(v_SdpBody) and not ispresent(p_SDP_Message_Template)) { /* NOTE: + not ispresent(p_SDP_Message_Template) does not mean that p_SDP_Message_Template is omit + but p_SDP_Message_Template can be e.g. "cr_SomeSDP ifpresent" + nevertheless when we have "not ispresent(p_SDP_Message_Template)" the SDP message may be omitted */ + return omit; + } else { + v_SDP_Message := f_IMS_SIP_DecodeMatchAndCheckSDP(v_SdpBody, p_SDP_Message_Template, p_CheckConnections); + return v_SDP_Message; + } + } + + /* + * @desc wrapper function to decode and match SDP message + * @param p_MessageBody + * @param p_SDP_Message_Template + * @param p_CheckConnections (default value: true) + * @return SDP_Message + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_SIP_SdpMessageBody_DecodeMatchAndCheckSDP(template (omit) MessageBody p_MessageBody, + template (present) SDP_Message p_SDP_Message_Template, + boolean p_CheckConnections := true) runs on IMS_PTC return SDP_Message + { + var template (omit) SDP_Message v_SDP_Message := f_IMS_SIP_SdpMessageBody_DecodeMatchAndCheckSDP_Ifpresent(p_MessageBody, p_SDP_Message_Template, p_CheckConnections); + return valueof(v_SDP_Message); + } + + //============================================================================ + // Common functions + //---------------------------------------------------------------------------- + /* + * @desc build SDP message to be sent as response to an offer e.g. at the end of C.21 or C.8 + * the function does + * "IP address on "o=" and "c=" lines and transport port on "m=" lines changed to indicate to which IP address and port the UE should send the media" + * but does not change any media attributes + * @param p_SDP_Message_PrevOffer + * @return template (value) SDP_Message + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_BuildSDP_CommonResponseToOfferTX(SDP_Message p_SDP_Message_PrevOffer) runs on IMS_PTC return template (value) SDP_Message + { + var integer i; + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var charstring v_IPAddrOrigin := f_IMS_PTC_RemoteAddress_GetAddrStr(); + var IntegerList_Type v_IMS_MediaPortList := {tsc_IMS_MediaPort_M1, tsc_IMS_MediaPort_M2, tsc_IMS_MediaPort_M3}; + var template (value) SDP_Message v_SDP_Message := p_SDP_Message_PrevOffer; + var template (value) SDP_media_desc_list v_Media_Desc_List := p_SDP_Message_PrevOffer.media_list; + var template (value) SDP_connection v_SDP_Connection := cs_SDP_Connection(v_AddrType, v_IPAddrOrigin); + var template (value) SDP_media_desc v_SDP_Media_Desc; + + v_SDP_Message.origin.addr_type := v_AddrType; // IP address on "o=" line + v_SDP_Message.origin.addr := v_IPAddrOrigin; // IP address on "o=" line + v_SDP_Message.connection := v_SDP_Connection; // IP address on "c=" line + + for (i:=0; i < lengthof(v_Media_Desc_List); i:=i+1) { + v_SDP_Media_Desc := v_Media_Desc_List[i]; + v_SDP_Media_Desc.media_field.ports.port_number := v_IMS_MediaPortList[i]; + v_SDP_Media_Desc.connections := { v_SDP_Connection }; // IP address on "c=" line + v_Media_Desc_List[i] := v_SDP_Media_Desc; + } + v_SDP_Message.media_list := v_Media_Desc_List; + return v_SDP_Message; + } + + + /* + * @desc exchange attribute in all media streams of the given media list + * @param p_Media_Desc_List + * @param p_AttributeToBeChanged + * @param p_NewAttribute + * @return template (omit) SDP_media_desc_list + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_SDP_MediaList_ExchangeAttribute(template (omit) SDP_media_desc_list p_Media_Desc_List, + template (present) SDP_attribute p_AttributeToBeChanged, + template (value) SDP_attribute p_NewAttribute) return template (omit) SDP_media_desc_list + { + var template (omit) SDP_media_desc_list v_Media_Desc_List := p_Media_Desc_List; + var integer i; + + if (ispresent(p_Media_Desc_List)) { + for (i:=0; i < lengthof(v_Media_Desc_List); i:=i+1) { + v_Media_Desc_List[i].attributes := f_SDP_ExchangeAttribute(v_Media_Desc_List[i].attributes, p_AttributeToBeChanged, p_NewAttribute); + } + } + return v_Media_Desc_List; + } + + //============================================================================ + // Annex C8 - SDP Messages + //---------------------------------------------------------------------------- + /* + * @desc remove direction attributes from the attribute list + * @param p_AttributeList + * @return template SDP_attribute_list + * @status APPROVED (IMS) + */ + function fl_IMS_BuildSDP_AnnexC8_Step1_Attributes(template (omit) SDP_attribute_list p_AttributeList) return template SDP_attribute_list + { /* remove direction attributes from the attribute list but change template of attribute list to superset + => there can be any direction attribute in the first place => direction attribute to be checked later on */ + var integer i; + var integer k := 0; + var SDP_attribute v_SDP_attribute; + var SDP_attribute_list v_AttributeList; + var template SDP_attribute_list v_NewAttributeList := omit; + + if (isvalue(p_AttributeList)) { + v_AttributeList := valueof(p_AttributeList); + + for (i:=0; i < lengthof(v_AttributeList); i:=i+1) { + v_SDP_attribute := v_AttributeList[i]; + if (not match(v_SDP_attribute, cr_SDP_Attribute_AnySendRecvMode)) { + if (match(v_SDP_attribute, cr_SDP_Attribute_curr_qos(c_remote, ?))) { /* @sic R5-144753: The direction-tag for the current-status remote segment shall be "sendrecv" sic@ */ + v_SDP_attribute := valueof(cs_SDP_Attribute_curr_qos(c_remote, c_sendrecv)); + } + v_NewAttributeList[k] := v_SDP_attribute; + k := k+1; + } + } + } + if (ispresent(v_NewAttributeList)) { + v_NewAttributeList := superset(all from v_NewAttributeList); + } + return v_NewAttributeList; + } + + /* + * @desc build up bandwidth information for C.8 + * @param p_BandwidthList + * @return template SDP_bandwidth_list + * @status APPROVED (IMS) + */ + function fl_IMS_BuildSDP_AnnexC8_Step1_Bandwidth(template (omit) SDP_bandwidth_list p_BandwidthList) return template SDP_bandwidth_list + { /* to allow any value for "RR" and "RS" bandwith */ + var integer i; + var SDP_bandwidth_list v_BandwidthList; + var charstring v_Modifier; + var template (present) integer v_Bandwidth; + var template SDP_bandwidth_list v_NewBandwidthList := omit; + + if (isvalue(p_BandwidthList)) { + v_BandwidthList := valueof(p_BandwidthList); + for (i:=0; i < lengthof(v_BandwidthList); i:=i+1) { + v_Modifier := v_BandwidthList[i].modifier; + v_Bandwidth := v_BandwidthList[i].bandwidth; + if (match(v_Modifier, ("RR", "RS"))) { + v_Bandwidth := ?; + } + v_NewBandwidthList[i] := cr_SDP_Bandwidth(v_Modifier, v_Bandwidth); + } + } + return v_NewBandwidthList; + } + + /* + * @desc Acc. to 34.229-1 C.8 the UE shall include the same lines in the SDP body as in its previous offer except + * SDP version number, "b=" lines for "RS" and "RR" modifiers and the direction attributes + * @param p_SDP_Message_PrevOffer + * @return template (present) SDP_Message + * @status APPROVED (IMS) + */ + function f_IMS_BuildSDP_AnnexC8_Step1(SDP_Message p_SDP_Message_PrevOffer) runs on IMS_PTC return template (present) SDP_Message + { + var template (present) SDP_Message v_SDP_Message := p_SDP_Message_PrevOffer; + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var SDP_media_desc v_MediaDesc; + var SDP_media_field v_MediaField; + var integer i; + + v_SDP_Message.origin.session_version := ?; + v_SDP_Message.bandwidth := fl_IMS_BuildSDP_AnnexC8_Step1_Bandwidth(p_SDP_Message_PrevOffer.bandwidth); + v_SDP_Message.attributes := fl_IMS_BuildSDP_AnnexC8_Step1_Attributes(p_SDP_Message_PrevOffer.attributes); + + for (i:=0; i < lengthof(p_SDP_Message_PrevOffer.media_list); i:=i+1) { + v_MediaDesc := p_SDP_Message_PrevOffer.media_list[i]; + v_MediaField := v_MediaDesc.media_field; + v_SDP_Message.media_list[i] := cr_SDP_Media_Desc(cr_SDP_Media(v_MediaField.media, v_MediaField.ports.port_number, v_MediaField.transport, cr_SDP_FmtList_AtLeastOne(cr_SDP_AnyMediaFormatDescr)), + cr_SDP_Connection(v_AddrType, ?), + fl_IMS_BuildSDP_AnnexC8_Step1_Bandwidth(v_MediaDesc.bandwidth), + fl_IMS_BuildSDP_AnnexC8_Step1_Attributes(v_MediaDesc.attributes)); + } + return v_SDP_Message; + } + + /* + * @desc build up SDP message for step 3 of C.8 + * @param p_HoldResume + * @param p_SDP_Message_PrevOffer + * @return template (value) SDP_Message + * @status APPROVED (IMS) + */ + function f_IMS_BuildSDP_AnnexC8_Step3(IMS_CallHoldResume_Type p_HoldResume, + SDP_Message p_SDP_Message_PrevOffer) runs on IMS_PTC return template (value) SDP_Message + { + var template (value) SDP_Message v_SDP_Message := f_IMS_BuildSDP_CommonResponseToOfferTX(p_SDP_Message_PrevOffer); + + if (p_HoldResume == HOLD) { + // invert "sendonly" to "recvonly" in the session attributes (if the UE uses session attribute to hold the call) + v_SDP_Message.attributes := f_SDP_ExchangeAttribute(v_SDP_Message.attributes, cr_SDP_Attribute_sendonly, cs_SDP_Attribute_recvonly); // change session attributes + v_SDP_Message.media_list := f_IMS_SDP_MediaList_ExchangeAttribute(v_SDP_Message.media_list, cr_SDP_Attribute_sendonly, cs_SDP_Attribute_recvonly); // change media lines + } + return v_SDP_Message; + } + + + //============================================================================ + // Annex C11 - SDP Messages + //---------------------------------------------------------------------------- + /* + * @desc Build SDP record to be sent to the UE at step 1 according to 34.229-1 Annex C.11 + * @param p_Step + * @param p_SDP_Attribute_curr_qos_remote (default value: cs_SDP_Attribute_curr_qos(c_remote)) + * @return template (value) SDP_Message + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_BuildSDP_AnnexC11_Step1or7(charstring p_Step, + template (value) SDP_attribute p_SDP_Attribute_curr_qos_remote := cs_SDP_Attribute_curr_qos(c_remote)) + runs on IMS_PTC return template (value) SDP_Message + { + var boolean v_IsStep7 := (p_Step == "step 7"); + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var charstring v_IPAddrOrigin := f_IMS_PTC_RemoteAddress_GetAddrStr(); + var charstring v_FmtAudio := tsc_SDP_FmtAudio; + var charstring v_SessionVersion := tsc_SDP_SessionVersion1; + var template (value) SDP_media_desc v_SDP_Media_Desc; + var template (omit) SDP_attribute_list v_SDP_Attribute_List := { + // media attributes: + cs_SDP_Attribute_rtpmap(v_FmtAudio, cs_RTPMAP_AMR_8000), + cs_SDP_Attribute_fmtp(v_FmtAudio, cs_AMR_Fmtp_DefaultParameters), + cs_SDP_Attribute_ptime, + cs_SDP_Attribute_maxptime + }; + v_SDP_Attribute_List := f_SDP_Attributes_Add_TX(v_SDP_Attribute_List, cs_SDP_Attribute_sendrecv, v_IsStep7); + // precondition attributes: + v_SDP_Attribute_List := f_SDP_Attributes_Add_TX(v_SDP_Attribute_List, cs_SDP_Attribute_curr_qos(c_local), not v_IsStep7); // @sic R5s130510 change 4 sic@ + v_SDP_Attribute_List := f_SDP_Attributes_Add_TX(v_SDP_Attribute_List, cs_SDP_Attribute_curr_qos(c_local, c_sendrecv), v_IsStep7); // @sic R5s130510 change 4, R5s130685 change 3 sic@ + v_SDP_Attribute_List := f_SDP_Attributes_Add_TX(v_SDP_Attribute_List, p_SDP_Attribute_curr_qos_remote); + v_SDP_Attribute_List := f_SDP_Attributes_Add_TX(v_SDP_Attribute_List, cs_SDP_Attribute_des_qos(c_mandatory, c_local)); + v_SDP_Attribute_List := f_SDP_Attributes_Add_TX(v_SDP_Attribute_List, cs_SDP_Attribute_des_qos(c_optional, c_remote)); + + if (v_IsStep7) {v_SessionVersion := tsc_SDP_SessionVersion2; } + + v_SDP_Media_Desc := cs_SDP_Media_Desc(cs_SDP_Media_Audio(v_FmtAudio), + cs_SDP_Bandwidth_List_Media(37, 0, 2500), // @sic R5-130751; R5-134270: RR=2500; R5-144700: AS=37 sic@ + v_SDP_Attribute_List); + return cs_SDP_Message_Def(cs_SDP_Origin(-, v_SessionVersion, v_AddrType, v_IPAddrOrigin), cs_SDP_Connection(v_AddrType, v_IPAddrOrigin), -, -, v_SDP_Media_Desc); + } + + //---------------------------------------------------------------------------- + /* + * @desc to receive SDP answer sent by the UE in C.11 step 8 (200 OK sent by the SS) or 2nd SDP sent by the UE in C.21 step 5/7 + * @param p_Step + * @return template (present) SDP_Message + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_BuildSDP_AnnexC11_Step4or8(charstring p_Step) runs on IMS_PTC return template (present) SDP_Message + { /* @sic R5-123077 change 3: 'inactive' removed from 'Attributes for media' for step 4 sic@ */ + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var template (present) charstring v_IPAddrOrigin := ?; + var template (present) charstring v_IPAddrConnection := ?; + var template (present) SDP_media_desc v_SDP_Media_Desc; + var template (present) SDP_attribute_list v_SDP_Attribute_List; + + select (p_Step) { + case ("step 4") { + v_SDP_Attribute_List := { + cr_SDP_Attribute_rtpmap(cr_SDP_AnyMediaFormatDescr, cr_RTPMAP_AMR_8000), // @sic R5s130681 change 2 sic@ + cr_SDP_Attribute_fmtp(cr_SDP_AnyMediaFormatDescr), + // precondition attributes: + cr_SDP_Attribute_curr_qos(c_local, (c_none, c_sendrecv)), // @sic R5s120530 change 3.15 sic@ + cr_SDP_Attribute_curr_qos(c_remote, c_none), + cr_SDP_Attribute_des_qos(c_mandatory, c_local), + cr_SDP_Attribute_des_qos(c_mandatory, c_remote), + cr_SDP_Attribute_conf_qos(), // @sic R5s140204 sic@ + * + }; + } + case ("step 8") { + v_SDP_Attribute_List := { + // media attributes: + cr_SDP_Attribute_rtpmap(cr_SDP_AnyMediaFormatDescr, cr_RTPMAP_AMR_8000), // @sic R5s130681 change 2 sic@ + cr_SDP_Attribute_fmtp(cr_SDP_AnyMediaFormatDescr), + cr_SDP_Attribute_sendrecv, + // precondition attributes: + cr_SDP_Attribute_curr_qos(c_local, c_sendrecv), + cr_SDP_Attribute_curr_qos(c_remote, c_sendrecv), + cr_SDP_Attribute_des_qos(c_mandatory, c_local), + cr_SDP_Attribute_des_qos(c_mandatory, c_remote), + * + }; + } + case else { + FatalError(__FILE__, __LINE__, ""); + } + } + v_SDP_Media_Desc := cr_SDP_Media_Desc(cr_SDP_Media_Audio(cr_SDP_AnyMediaFormatDescr), // @sic R5s130985 change 1 sic@ + cr_SDP_Connection(v_AddrType, v_IPAddrConnection), + cr_SDP_Bandwidth_List_Media(?, ?, ?), + v_SDP_Attribute_List); + return cr_SDP_Message_Def(v_AddrType, v_IPAddrOrigin, v_IPAddrConnection, v_SDP_Media_Desc); + } + + //============================================================================ + // Annex C21 - SDP Messages + //---------------------------------------------------------------------------- + /* + * @desc return template for SDP message at step 2 according to 34.229-1 Annex C.21 + * @param p_RtcpDuringVoiceSession (default value: pc_IMS_RtcpDuringVoiceSession) + * @return template (present) SDP_Message + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_BuildSDP_AnnexC21_Step2(boolean p_RtcpDuringVoiceSession := pc_IMS_RtcpDuringVoiceSession) runs on IMS_PTC return template (present) SDP_Message + { /* @sic R5-135020, R5-135021: new PICS pc_IMS_RtcpDuringVoiceSession sic@ */ + /* @sic R5w140113, R5w140009: new SDP type definitions */ + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var template (present) integer v_BandwidthRS := 0; + var template (present) integer v_BandwidthRR := 0; + var template (present) charstring v_IPAddrOrigin := ?; + var template (present) charstring v_IPAddrConnection := ?; + var template (present) SDP_media_desc v_SDP_Media_Desc; + var template (present) SDP_attribute_list v_SDP_Attribute_List := { + // media attributes: + cr_SDP_Attribute_rtpmap(-, cr_RTPMAP_AMR_8000), // @sic R5s130681 change 2 sic@ + cr_SDP_Attribute_fmtp(-, cr_AMR_Fmtp_DefaultParameters), /* @sic R5w140113, R5w140009: cr_AMR_Fmtp_DefaultParameters replaces tsc_AMR_Fmtp_DefaultParameters_RX sic@ */ + cr_SDP_Attribute_rtpmap(-, cr_RTPMAP_TelephoneEvent), // @sic R5s130333 change 14.2 - pattern needs to include a rate; R5s130798 change 5 - MCC160 Comment: rate is optional sic@ + cr_SDP_Attribute_ptime, + cr_SDP_Attribute_maxptime, + cr_SDP_Attribute_inactive, + // precondition attributes: + cr_SDP_Attribute_curr_qos(c_local), + cr_SDP_Attribute_curr_qos(c_remote), + cr_SDP_Attribute_des_qos(c_mandatory, c_local), + cr_SDP_Attribute_des_qos(c_optional, c_remote), + * + }; + + if (p_RtcpDuringVoiceSession) { /* @sic R5-135020 sic@ */ + v_BandwidthRS := ?; + v_BandwidthRR := (1..infinity); + } + + v_SDP_Media_Desc := cr_SDP_Media_Desc(cr_SDP_Media_Audio, + cr_SDP_Connection(v_AddrType, v_IPAddrConnection), + cr_SDP_Bandwidth_List_Media(?, v_BandwidthRS, v_BandwidthRR), + v_SDP_Attribute_List); + return cr_SDP_Message_AnySession(v_AddrType, v_IPAddrOrigin, v_IPAddrConnection, v_SDP_Media_Desc); + } + + //---------------------------------------------------------------------------- + /* + * @desc return template for SDP message at step 4 according to 34.229-1 Annex C.21 + * @param p_SDP_MessageInvite + * @return template (value) SDP_Message + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_BuildSDP_AnnexC21_Step4(SDP_Message p_SDP_MessageInvite) runs on IMS_PTC return template (value) SDP_Message + { /* @sic R5-135020: parameter p_SDP_MessageInvite to get RR and RS values sic@ */ + /* @sic R5-144402: p_IPAddrOrigin removed sic@ */ + var integer i; + var template (omit) SDP_attribute v_Attribute; + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var charstring v_IPAddrConnection := f_IMS_PTC_RemoteAddress_GetAddrStr(); /* "connection-address for SS": address of the simulated remote UE */ + var charstring v_IPAddrOrigin := v_IPAddrConnection; /* @sic R5-144402: "unicast-address for SS" sic@ */ + var SDP_media_desc v_SDP_Media_Invite := p_SDP_MessageInvite.media_list[0]; + var charstring v_FmtAudio := f_SDP_MediaDescr_GetAMR_8000_1(v_SDP_Media_Invite); + var integer v_BandwidthRS := f_SDP_BandwidthList_GetBandwidth(v_SDP_Media_Invite.bandwidth, "RS"); + var integer v_BandwidthRR := f_SDP_BandwidthList_GetBandwidth(v_SDP_Media_Invite.bandwidth, "RR"); + var template (value) SDP_bandwidth_list v_Bandwidth_List_Media := cs_SDP_Bandwidth_List_Media(37, v_BandwidthRS, v_BandwidthRR); // @sic R5-123505, R5-135020; R5-144700: AS=37 sic@ + var template (value) SDP_media_desc v_SDP_Media_Desc; + var template (omit) SDP_attribute_list v_SDP_Attribute_List := { + // media attributes: + cs_SDP_Attribute_rtpmap(v_FmtAudio, cs_RTPMAP_AMR_8000), + cs_SDP_Attribute_fmtp(v_FmtAudio, cs_AMR_Fmtp_DefaultParameters), + cs_SDP_Attribute_ptime, + cs_SDP_Attribute_maxptime, + // precondition attributes: + cs_SDP_Attribute_curr_qos(c_local), + cs_SDP_Attribute_curr_qos(c_remote), + cs_SDP_Attribute_des_qos(c_mandatory, c_local), + cs_SDP_Attribute_des_qos(c_mandatory, c_remote), + cs_SDP_Attribute_conf_qos // @sic R5s120530 change 3.5 sic@ + }; + // additional attributes to be added (using f_SDP_Attributes_Add_TX): + // a=ecn-capable-rtp: leap; ect=0 [Note 3] + // a=rtcp-fb:* nack ecn [Note 3] + // a=rtcp-xr:ecn-sum [Note 3] + // a=3ge2ae: requested [Note 1] + // a=crypto:1 AES_CM_128_HMAC_SHA1_80inline:PS1uQCVeeCFCanVmcjkpPywjNWhcYD0mXXtxaVBR|2^20|1:4 [Note 4] + var template (value) SDP_attribute_list v_AdditionalOptionalAttributes := { /* @sic R5s140359 - Additional Changes sic@ */ + cs_SDP_Attribute_ecn_capable_rtp("leap", "ect=0"), + cs_SDP_Attribute_rtcp_fb("*", "nack ecn"), + cs_SDP_Attribute_rtcp_xr("ecn-sum"), + cs_SDP_Attribute_3ge2ae("requested"), + cs_SDP_Attribute_crypto("1", "AES_CM_128_HMAC_SHA1_80", "inline:PS1uQCVeeCFCanVmcjkpPywjNWhcYD0mXXtxaVBR|2^20|1:4") + }; + for (i := 0; i < lengthof(v_AdditionalOptionalAttributes); i := i + 1) { + v_Attribute := f_SDP_AttributeList_GetAttribute(p_SDP_MessageInvite.attributes, v_AdditionalOptionalAttributes[i]); + v_SDP_Attribute_List := f_SDP_Attributes_Add_TX(v_SDP_Attribute_List, v_Attribute); + } + + v_SDP_Media_Desc := cs_SDP_Media_Desc(cs_SDP_Media_Audio(v_FmtAudio), + v_Bandwidth_List_Media, + v_SDP_Attribute_List); + return cs_SDP_Message_Def(cs_SDP_Origin(-, -, v_AddrType, v_IPAddrOrigin), cs_SDP_Connection(v_AddrType, v_IPAddrConnection), -, -, v_SDP_Media_Desc); /* @sic R5-144402: v_Sessionname removed sic@ */ + } + + //---------------------------------------------------------------------------- + /* + * @desc to receive SDP answer sent by the UE in C.11 step 8 (200 OK sent by the SS) or 2nd SDP sent by the UE in C.21 step 5/7 + * @param p_Fmt + * @return template (present) SDP_Message + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_BuildSDP_AnnexC21_Step5or7(charstring p_Fmt) runs on IMS_PTC return template (present) SDP_Message + { + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var template (present) charstring v_IPAddrOrigin := ?; + var template (present) charstring v_IPAddrConnection := ?; + var template (present) SDP_media_desc v_SDP_Media_Desc; + var template (present) SDP_attribute_list v_SDP_Attribute_List := { + // media attributes: + cr_SDP_Attribute_rtpmap(p_Fmt, cr_RTPMAP_AMR_8000), // @sic R5s130681 change 2 sic@ + cr_SDP_Attribute_fmtp(p_Fmt), /* @sic R5s130497 change 2: format parameters added; R5s130586 change 4: format parameters changed back to any parameters sic@ */ + cr_SDP_Attribute_sendrecv, + // precondition attributes: + cr_SDP_Attribute_curr_qos(c_local, c_sendrecv), + cr_SDP_Attribute_curr_qos(c_remote, c_none), + cr_SDP_Attribute_des_qos(c_mandatory, c_local), + cr_SDP_Attribute_des_qos((c_optional, c_mandatory), c_remote), /* @sic R5-142951: (c_optional, c_mandatory) instead of c_optional sic@ */ + * + }; + + v_SDP_Media_Desc := cr_SDP_Media_Desc(cr_SDP_Media_Audio(p_Fmt), // @sic R5-123505 sic@ + cr_SDP_Connection(v_AddrType, v_IPAddrConnection), + cr_SDP_Bandwidth_List_Media(?, ?, ?), + v_SDP_Attribute_List); + return cr_SDP_Message_Def(v_AddrType, v_IPAddrOrigin, v_IPAddrConnection, v_SDP_Media_Desc); + } + + //---------------------------------------------------------------------------- + /* + * @desc build SDP message to be sent in step 6 or 8 of 34.229-1 Annex C.21 + * @param p_SDP_Message_PrevOffer + * @return template (value) SDP_Message + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_BuildSDP_AnnexC21_Step6or8(SDP_Message p_SDP_Message_PrevOffer) runs on IMS_PTC return template (value) SDP_Message + { + var template (value) SDP_Message v_SDP_Message := f_IMS_BuildSDP_CommonResponseToOfferTX(p_SDP_Message_PrevOffer); + + v_SDP_Message.media_list := f_IMS_SDP_MediaList_ExchangeAttribute(v_SDP_Message.media_list, + cs_SDP_Attribute_curr_qos(c_remote, c_none), // value sent by the UE in step 5/7 + cs_SDP_Attribute_curr_qos(c_remote, c_sendrecv)); // ... to be replaced + return v_SDP_Message; + } + + //============================================================================ + // Annex C22 - SDP Messages + //---------------------------------------------------------------------------- + /* + * @desc Build SDP record to be received from the UE at step 1 according to 34.229-1 Annex C.22 + * @return template (present) SDP_Message + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_IRAT) + */ + function f_IMS_BuildSDP_AnnexC22_Step1() runs on IMS_PTC return template (present) SDP_Message + { + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var template (present) charstring v_IPAddrOrigin := ?; + var template (present) charstring v_IPAddrConnection := ?; + var template (present) SDP_media_desc v_SDP_Media_Desc; + var template SDP_bandwidth_list v_Bandwidth := *; + var template SDP_attribute_list v_SDP_Attribute_List := *; //acc. to annex C.22 there shall be at least one AMR codec ("AMR/*" of "AMR-WB/*"); + // this will be checked later-on when the fmt value for the AMR codec is extracted (-> f_IMS_EmergencyCallSetup_AnnexC22, f_SDP_MediaDescr_GetAMR_Any) + v_SDP_Media_Desc := cr_SDP_Media_Desc(cr_SDP_Media_Audio, + cr_SDP_Connection(v_AddrType, v_IPAddrOrigin), + cr_SDP_Bandwidth_List_AS, + v_SDP_Attribute_List); + return cr_SDP_Message_Common(v_AddrType, v_IPAddrOrigin, v_IPAddrConnection, -, v_Bandwidth, cr_SDP_Time_Any, { v_SDP_Media_Desc }); /* @sic R5s130495 change 21 sic@ */ + } + + //---------------------------------------------------------------------------- + /* + * @desc Build SDP record to be sent to the UE at step 4 according to 34.229-1 Annex C.22 + * NOTE: the "payload type" of the rtpmap attribute and the "format" of the fmtp atribute refer to the format in the media description (RFC 4566) + * => as long as there is only one media description, the fmt, payload type and format have the same value + * @param p_Fmt + * @param p_IPAddrOrigin + * @return template (value) SDP_Message + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_IRAT) + */ + function f_IMS_BuildSDP_AnnexC22_Step4(charstring p_Fmt, + charstring p_IPAddrOrigin) runs on IMS_PTC return template (value) SDP_Message + { + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var charstring v_IPAddrConnection := f_IMS_PTC_RemoteAddress_GetAddrStr(); + var template (value) SDP_media_desc v_SDP_Media_Desc; + var template (value) SDP_attribute_list v_SDP_Attribute_List := { + // media attributes: + cs_SDP_Attribute_rtpmap(p_Fmt, cs_RTPMAP_AMR_8000), + cs_SDP_Attribute_fmtp(p_Fmt, cs_AMR_Fmtp_DefaultParameters), + cs_SDP_Attribute_ptime, + cs_SDP_Attribute_maxptime + }; + + v_SDP_Media_Desc := cs_SDP_Media_Desc(cs_SDP_Media_Audio(p_Fmt), + cs_SDP_Bandwidth_List_Media(37, 0, 0), /* @sic R5-144700: AS=37 sic@ */ + v_SDP_Attribute_List); + + return cs_SDP_Message_Def(cs_SDP_Origin( -, -, v_AddrType, p_IPAddrOrigin), cs_SDP_Connection(v_AddrType, v_IPAddrConnection), -, -, v_SDP_Media_Desc); /* @sic R5-144402: v_Sessionname removed sic@ */ + } + + + //---------------------------------------------------------------------------- + /* + * @desc Build SDP record to be sent to the UE at step 1 according to 34.229-1 Annex C.24 + * @return template (present) SDP_Message + * @status APPROVED (LTE_IRAT) + */ + function f_IMS_BuildSDP_AnnexC24_Step1() runs on IMS_PTC return template (present) SDP_Message + { + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var template (present) charstring v_IPAddrOrigin := ?; + var template (present) charstring v_IPAddrConnection := ?; + var template (present) SDP_media_desc v_SDP_Media_Desc; + var template SDP_attribute_list v_SDP_Attribute_List := *; + var template SDP_bandwidth_list v_SDP_Bandwidth_List := *; // @sic R5s140573 change 4, R5-144686 sic@ + var integer v_PortNumber := 0; + + v_SDP_Media_Desc := cr_SDP_Media_Desc(cr_SDP_Media_Audio(-, v_PortNumber), + cr_SDP_Connection(v_AddrType, v_IPAddrConnection), + v_SDP_Bandwidth_List, // @sic R5s140573 change 4, R5-144686 sic@ + v_SDP_Attribute_List); + return cr_SDP_Message_AnySession(v_AddrType, v_IPAddrOrigin, v_IPAddrConnection, v_SDP_Media_Desc); + } + + //---------------------------------------------------------------------------- + /* + * @desc Build SDP record to be sent to the UE at step 1 according to 34.229-1 Annex C.31 + * @return template (present) SDP_Message + * @status APPROVED (LTE_IRAT) + */ + function f_IMS_BuildSDP_AnnexC31_Step1() runs on IMS_PTC return template (present) SDP_Message + { + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var template (present) charstring v_IPAddrOrigin := ?; + var template (present) charstring v_IPAddrConnection := ?; + var template (present) SDP_media_desc v_SDP_Media_Desc; + var template (present) SDP_attribute_list v_SDP_Attribute_List := { + // media attributes: + cr_SDP_Attribute_rtpmap(-, cr_RTPMAP_AMR_8000), + cr_SDP_Attribute_fmtp, + cr_SDP_Attribute_sendrecv, + // precondition attributes: none @sic R5s140263 change 4, R5-142995 sic@ + * + }; + v_SDP_Media_Desc := cr_SDP_Media_Desc(cr_SDP_Media_Audio, + cr_SDP_Connection(v_AddrType, v_IPAddrConnection), + cr_SDP_Bandwidth_List_Media(?, ?, ?), + v_SDP_Attribute_List); + return cr_SDP_Message_AnySession(v_AddrType, v_IPAddrOrigin, v_IPAddrConnection, v_SDP_Media_Desc); + } + /* + * @desc Build SDP record to be sent to the UE at step 3 according to 34.229-1 Annex C.31 + * @param p_SDP_Offer + * @return template (value) SDP_Message + * @status APPROVED (LTE_IRAT) + */ + function f_IMS_BuildSDP_AnnexC31_Step3(SDP_Message p_SDP_Offer) runs on IMS_PTC return template (value) SDP_Message + { + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var charstring v_IPAddrConnection := f_IMS_PTC_RemoteAddress_GetAddrStr(); + var charstring v_RemoteIPAddr := v_IPAddrConnection; /* @sic R5-144402 sic@ */ + var SDP_media_desc v_SDP_Media_Offer := p_SDP_Offer.media_list[0]; + var charstring v_FmtAudio := f_SDP_MediaDescr_GetAMR_8000_1(v_SDP_Media_Offer); + var integer v_BandwidthRS := f_SDP_BandwidthList_GetBandwidth(v_SDP_Media_Offer.bandwidth, "RS"); + var integer v_BandwidthRR := f_SDP_BandwidthList_GetBandwidth(v_SDP_Media_Offer.bandwidth, "RR"); + var template (value) SDP_bandwidth_list v_Bandwidth_List_Media := cs_SDP_Bandwidth_List_Media(37, v_BandwidthRS, v_BandwidthRR); /* @sic R5-144700: AS=37 sic@ */ + var template (value) SDP_media_desc v_SDP_Media_Desc; + var template (value) SDP_attribute_list v_SDP_Attribute_List := { + // media attributes: + cs_SDP_Attribute_rtpmap(v_FmtAudio, cs_RTPMAP_AMR_8000), + cs_SDP_Attribute_fmtp(v_FmtAudio, cs_AMR_Fmtp_DefaultParameters), + cs_SDP_Attribute_sendrecv, + // precondition attributes: + cs_SDP_Attribute_curr_qos(c_local, c_sendrecv), + cs_SDP_Attribute_curr_qos(c_remote, c_sendrecv), + cs_SDP_Attribute_des_qos(c_mandatory, c_local, c_sendrecv), + cs_SDP_Attribute_des_qos(c_mandatory, c_remote, c_sendrecv) + }; + + v_SDP_Media_Desc := cs_SDP_Media_Desc(cs_SDP_Media_Audio(v_FmtAudio), + v_Bandwidth_List_Media, + v_SDP_Attribute_List); + return cs_SDP_Message_Def(cs_SDP_Origin(-, -, v_AddrType, v_RemoteIPAddr), cs_SDP_Connection(v_AddrType, v_IPAddrConnection), -, -, v_SDP_Media_Desc); /* @sic R5-144402: v_Sessionname removed sic@ */ + } +} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS/IMS_SDP_Templates.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_SDP_Templates.ttcn new file mode 100644 index 0000000..24d67e7 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_SDP_Templates.ttcn @@ -0,0 +1,865 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-05 19:27:02 +0200 (Fri, 05 Sep 2014) $ +// $Rev: 12079 $ +/******************************************************************************/ + +module IMS_SDP_Templates { + import from LibSip_Common all; + import from LibSip_SDPTypes all; + import from IMS_CommonDefs all; + import from IMS_CommonTemplates all; + import from CommonDefs all; + + const charstring tsc_SDP_NoSessionname := "-"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + @sic R5-144402: tsc_SDP_Sessionname -> tsc_SDP_NoSessionname sic@ */ + + // RTPMAP - Codecs: + + template (present) SDP_attribute_rtpmap_codec cr_RTPMAP_Codec(template (present) charstring p_Encoding, + template (present) charstring p_ClockRate := ?, + template charstring p_Parameters := *) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + encoding := p_Encoding, + clockrate := p_ClockRate, + parameters := p_Parameters + }; + + template (present) SDP_attribute_rtpmap_codec cr_RTPMAP_AMR_AnyCodec := cr_RTPMAP_Codec(pattern "AMR*"); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_IRAT) + any AMR codec ("AMR[/]*" or "AMR-WB[/]*") + @sic R5w140113, R5w140009: replaces tsc_CODEC_AMR_Any_RX_Pattern sic@ */ + template (present) SDP_attribute_rtpmap_codec cr_RTPMAP_AMR_8000 := cr_RTPMAP_Codec("AMR", "8000", "1" ifpresent); /* @status APPROVED (IMS, LTE_A, LTE_IRAT) + @sic R5w140113, R5w140009: replaces tsc_CODEC_AMR_8000_RX_Pattern sic@ */ + template (present) SDP_attribute_rtpmap_codec cr_RTPMAP_AMR_16000 := cr_RTPMAP_Codec("AMR-WB", "16000", "1" ifpresent); /* @status APPROVED (IMS) + @sic R5w140113, R5w140009: replaces tsc_CODEC_AMR_16000_RX_Pattern sic@ */ + template (present) SDP_attribute_rtpmap_codec cr_RTPMAP_TelephoneEvent := + cr_RTPMAP_Codec("telephone-event", pattern "([0-9]+)", pattern "([0-9]+)" ifpresent); /* @status APPROVED (IMS, LTE_A) + @sic R5s130798 change 5 - MCC160 Comment sic@ + @sic R5w140113, R5w140009: replaces tsc_CODEC_TelephoneEvent_RX_Pattern sic@ */ + template (present) SDP_attribute_rtpmap_codec cr_RTPMAP_H264_90000 := cr_RTPMAP_Codec("H264", "90000"); + + template (value) SDP_attribute_rtpmap_codec cs_RTPMAP_Codec(template (value) charstring p_Encoding, + template (value) charstring p_ClockRate, + template (omit) charstring p_Parameters := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + encoding := p_Encoding, + clockrate := p_ClockRate, + parameters := p_Parameters + }; + + template (value) SDP_attribute_rtpmap_codec cs_RTPMAP_AMR_8000 := cs_RTPMAP_Codec("AMR", "8000", "1"); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + @sic R5w140113, R5w140009: replaces tsc_CODEC_AMR_8000_TX sic@ */ + template (value) SDP_attribute_rtpmap_codec cs_RTPMAP_AMR_16000 := cs_RTPMAP_Codec("AMR-WB", "16000", "1"); /* @status APPROVED (IMS) + @sic R5w140113, R5w140009: replaces tsc_CODEC_AMR_16000_TX sic@ */ + template (value) SDP_attribute_rtpmap_codec cs_RTPMAP_H264_90000 := cs_RTPMAP_Codec("H264", "90000"); + + // FMTP: + + template (value) SDP_attribute_fmtp_format_specific_params cs_Fmtp_ParamList(template (value) SemicolonParam_List p_ParamList) := {paramList := p_ParamList}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) SDP_attribute_fmtp_format_specific_params cr_Fmtp_ParamList(template (present) SemicolonParam_List p_ParamList) := {paramList := p_ParamList}; /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + template (value) SDP_attribute_fmtp_format_specific_params crs_Fmtp_UnstructuredParams(charstring p_ParamString) := {unstructured := p_ParamString}; + + // audio - format specific parameters + template (value) GenericParam cs_AMR_ModeChangeCapability := cs_GenericParam("mode-change-capability", "2"); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) GenericParam cr_AMR_ModeChangeCapability := f_GenericParam_AsTX(cs_AMR_ModeChangeCapability); /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + template (value) GenericParam cs_AMR_MaxRed := cs_GenericParam("max-red", "220"); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) GenericParam cr_AMR_MaxRed := cr_GenericParam("max-red", pattern "[0-9]+"); /* @status APPROVED (IMS, LTE_A, LTE_IRAT) + @sic R5-141114: in UL max-red can be any value within 0..220 sic@ */ + template (value) SemicolonParam_List cs_Fmtp_AudioParamsDef := {cs_AMR_ModeChangeCapability, cs_AMR_MaxRed}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) SemicolonParam_List cr_Fmtp_AudioParamsDef := {cr_AMR_ModeChangeCapability, cr_AMR_MaxRed, *}; /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + + template (value) SDP_attribute_fmtp_format_specific_params cs_AMR_Fmtp_DefaultParameters := cs_Fmtp_ParamList(cs_Fmtp_AudioParamsDef); /* @sic R5w140113, R5w140009: replaces tsc_AMR_Fmtp_DefaultParameters_TX sic@ + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT)*/ + template (present) SDP_attribute_fmtp_format_specific_params cr_AMR_Fmtp_DefaultParameters := cr_Fmtp_ParamList(cr_Fmtp_AudioParamsDef); /* @sic R5w140113, R5w140009: replaces tsc_AMR_Fmtp_DefaultParameters_RX sic@ + @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + + // video - format specific parameters + const charstring tsc_IMS_Video_Fmtp_ProfileLevelId_Def := "42e00c"; + template (value) GenericParam cs_Video_Fmtp_ProfileLevelId := cs_GenericParam("profile-level-id", tsc_IMS_Video_Fmtp_ProfileLevelId_Def); + template (present) GenericParam cr_Video_Fmtp_ProfileLevelId(template (present) charstring p_ProfileLevelId) := cr_GenericParam("profile-level-id", p_ProfileLevelId); /* @sic R5-144595 sic@ */ + template (value) GenericParam cs_Video_Fmtp_SpropParameterSets := cs_GenericParam("sprop-parameter-sets", "J0LgDJWgUH6Af1A=,KM46gA=="); + template (present) GenericParam cr_Video_Fmtp_SpropParameterSets := f_GenericParam_AsTX(cs_Video_Fmtp_SpropParameterSets); + template (value) GenericParam cs_Video_Fmtp_PacketizationMode := cs_GenericParam("packetization-mode", "0"); + template (present) GenericParam cr_Video_Fmtp_PacketizationMode := f_GenericParam_AsTX(cs_Video_Fmtp_PacketizationMode); + template (value) SemicolonParam_List cs_Fmtp_VideoParamsDef := {cs_Video_Fmtp_ProfileLevelId, cs_Video_Fmtp_SpropParameterSets}; + template (present) SemicolonParam_List cr_Fmtp_VideoParamsDef := {cr_Video_Fmtp_ProfileLevelId(?), cr_Video_Fmtp_SpropParameterSets, *}; + template (value) SemicolonParam_List cs_Fmtp_VideoParamsWithPacketizationMode := {cs_Video_Fmtp_PacketizationMode, cs_Video_Fmtp_ProfileLevelId, cs_Video_Fmtp_SpropParameterSets}; + template (present) SemicolonParam_List cr_Fmtp_VideoParamsWithPacketizationMode := {cr_Video_Fmtp_PacketizationMode, cr_Video_Fmtp_ProfileLevelId(tsc_IMS_Video_Fmtp_ProfileLevelId_Def), cr_Video_Fmtp_SpropParameterSets, *}; + template (present) SDP_attribute_fmtp_format_specific_params cr_Video_Fmtp_DefaultParameters := cr_Fmtp_ParamList(cr_Fmtp_VideoParamsDef); + + const charstring tsc_SDP_FmtAudio := "97"; /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + const charstring tsc_SDP_FmtVideo := "98"; + + const charstring tsc_SDP_SessionId := "1111111111"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + const charstring tsc_SDP_SessionVersion1 := "1111111111"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + const charstring tsc_SDP_SessionVersion2 := "1111111112"; /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + + template (present) charstring cr_SDP_AnyMediaFormatDescr := pattern "[0-9]#(2,3)"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + //---------------------------------------------------------------------------- + /* + * @desc add further attribute to given list + * @param p_SDP_Attribute_List + * @param p_SDP_Attribute + * @param p_Condition (default value: true) + * @return template (omit) SDP_attribute_list + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_SDP_Attributes_Add_TX(template (omit) SDP_attribute_list p_SDP_Attribute_List, + template (omit) SDP_attribute p_SDP_Attribute, + boolean p_Condition := true) return template (omit) SDP_attribute_list + { /* @sic R5s130510: additional parameter p_Condition sic@ */ + var template (omit) SDP_attribute_list v_SDP_Attribute_List := p_SDP_Attribute_List; + var integer i := 0; + + if (p_Condition) { + if (isvalue(p_SDP_Attribute)) { + if (isvalue(v_SDP_Attribute_List)) { + i := lengthof(v_SDP_Attribute_List); + } + v_SDP_Attribute_List[i] := p_SDP_Attribute; + } + } + return v_SDP_Attribute_List; + } + + /* + * @desc exchange attribute in given attribute list + * @param p_AttributeList + * @param p_AttributeToBeChanged + * @param p_NewAttribute + * @return template (omit) SDP_attribute_list + * @status APPROVED (IMS, LTE_A) + */ + function f_SDP_ExchangeAttribute(template (omit) SDP_attribute_list p_AttributeList, + template (present) SDP_attribute p_AttributeToBeChanged, + template (value) SDP_attribute p_NewAttribute) return template (omit) SDP_attribute_list + { // @sic R5s120530 change 3.17 sic@ + var template (omit) SDP_attribute_list v_AttributeList := p_AttributeList; + var integer i := 0; + if (isvalue(v_AttributeList)) { + for (i:=0; i rtpmap attributes are not checked + * when p_FmtpParameters == omit => fmtp attributes are not checked + * when both are omit the first element of fmts is return (if any); + * returns the first fmt in the fmts list of the media description (RFC 4566 cl. 5.14) matching the given rtpmap and the given fmtp attributes; + * returns "" if no fmt is found + * @param p_SDP_Media_Desc + * @param p_RtpmapCodecInfo + * @param p_FmtpParameters (default value: omit) + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SDP_MediaDescr_GetMediaFormat(SDP_media_desc p_SDP_Media_Desc, + template SDP_attribute_rtpmap_codec p_RtpmapCodecInfo, + template SDP_attribute_fmtp_format_specific_params p_FmtpParameters := omit) return charstring + { + var charstring v_Fmt; + var integer i; + var boolean v_RtpmapMatch; + var boolean v_FmtpMatch; + + for (i := 0; i < lengthof(p_SDP_Media_Desc.media_field.fmts); i := i + 1) { + v_Fmt := p_SDP_Media_Desc.media_field.fmts[i]; + + v_RtpmapMatch := not ispresent(p_RtpmapCodecInfo); // -> p_RtpmapCodecInfo is omit + v_FmtpMatch := not ispresent(p_FmtpParameters); // -> p_FmtpParameters is omit + + if (not v_RtpmapMatch) { // -> p_RtpmapCodecInfo is + v_RtpmapMatch := f_SDP_AttributeList_CheckAttribute(p_SDP_Media_Desc.attributes, cr_SDP_Attribute_rtpmap(v_Fmt, p_RtpmapCodecInfo)); // compiler warning cannot be avoided + } + + if (not v_FmtpMatch) { // -> p_FmtpParameters is value + v_FmtpMatch := f_SDP_AttributeList_CheckAttribute(p_SDP_Media_Desc.attributes, cr_SDP_Attribute_fmtp(v_Fmt, p_FmtpParameters)); // compiler warning cannot be avoided + } + + if (v_RtpmapMatch and v_FmtpMatch) { + return v_Fmt; + } + } + return ""; + } + + /* + * @desc get default audio codec + * @param p_SDP_Media_Desc + * @param p_FmtpParameters (default value: cr_AMR_Fmtp_DefaultParameters) + * @return charstring + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_SDP_MediaDescr_GetAMR_8000_1(SDP_media_desc p_SDP_Media_Desc, + template SDP_attribute_fmtp_format_specific_params p_FmtpParameters := cr_AMR_Fmtp_DefaultParameters) return charstring + { /* @sic R5w140113, R5w140009: cr_AMR_Fmtp_DefaultParameters replaces tsc_AMR_Fmtp_DefaultParameters_RX sic@ */ + return f_SDP_MediaDescr_GetMediaFormat(p_SDP_Media_Desc, cr_RTPMAP_AMR_8000, p_FmtpParameters); + } + + /* + * @desc return (first) AMR of given media description + * @param p_SDP_Media_Desc + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_IRAT) + */ + function f_SDP_MediaDescr_GetAMR_Any(SDP_media_desc p_SDP_Media_Desc) return charstring + { + return f_SDP_MediaDescr_GetMediaFormat(p_SDP_Media_Desc, cr_RTPMAP_AMR_AnyCodec); + } + + function f_SDP_MediaDescr_GetH264_90000(SDP_media_desc p_SDP_Media_Desc, + template SDP_attribute_fmtp_format_specific_params p_FmtpParameters := cr_Video_Fmtp_DefaultParameters) return charstring + { /* get default video codec */ + return f_SDP_MediaDescr_GetMediaFormat(p_SDP_Media_Desc, cr_RTPMAP_H264_90000, p_FmtpParameters); + } + + + //---------------------------------------------------------------------------- + /* + * @desc get specific bandwidth (specified by p_Modifier) + * @param p_BandwidthList + * @param p_Modifier + * @return integer + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_SDP_BandwidthList_GetBandwidth(SDP_bandwidth_list p_BandwidthList, + charstring p_Modifier) return integer + { + var integer i; + + for (i := 0; i < lengthof(p_BandwidthList); i := i + 1) { + if (p_BandwidthList[i].modifier == p_Modifier) { + return p_BandwidthList[i].bandwidth; + } + } + FatalError(__FILE__, __LINE__, "no bandwidth found for " & p_Modifier); + return 0; + } + + //---------------------------------------------------------------------------- + + template (value) SDP_attribute cs_SDP_Attribute_rtpmap(charstring p_PayloadType, + template (value) SDP_attribute_rtpmap_codec p_Codec) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + rtpmap := { + payload_type := p_PayloadType, + codec := p_Codec + } + }; + + template (present) SDP_attribute cr_SDP_Attribute_rtpmap(template (present) charstring p_PayloadType := cr_SDP_AnyMediaFormatDescr, + template (present) SDP_attribute_rtpmap_codec p_Codec) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + rtpmap := { + payload_type := p_PayloadType, + codec := p_Codec + } + }; + + template (value) SDP_attribute cs_SDP_Attribute_fmtp(charstring p_Fmt, + template (value) SDP_attribute_fmtp_format_specific_params p_FormatSpecificParameters) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5w140113, R5w140009: new type definition sic@ */ + fmtp := { + format := p_Fmt, + params := p_FormatSpecificParameters + } + }; + + template (present) SDP_attribute cr_SDP_Attribute_fmtp(template (present) charstring p_Fmt := cr_SDP_AnyMediaFormatDescr, + template (present) SDP_attribute_fmtp_format_specific_params p_FormatSpecificParameters := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5w140113, R5w140009: new type definition sic@ */ + fmtp := { + format := p_Fmt, + params := p_FormatSpecificParameters + } + }; + + template (value) SDP_attribute cs_SDP_Attribute_ptime(charstring p_Value := "20") := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + ptime := { + attr_value := p_Value + } + }; + + template (present) SDP_attribute cr_SDP_Attribute_ptime(template (present) charstring p_Value := "20") := + { /* @status APPROVED (IMS, LTE_A) */ + ptime := { + attr_value := p_Value + } + }; + + template (value) SDP_attribute cs_SDP_Attribute_maxptime(charstring p_Value := "240") := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5w140113, R5w140009 sic@ */ + maxptime := { + attr_value := p_Value + } + }; + + template (present) SDP_attribute cr_SDP_Attribute_maxptime(template (present) charstring p_Value := "240") := + { /* @status APPROVED (IMS, LTE_A) */ + /* @sic R5w140113, R5w140009 sic@ */ + maxptime := { + attr_value := p_Value + } + }; + + template (value) SDP_attribute cs_SDP_Attribute_sendrecv := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + sendrecv := {} + }; + + template (value) SDP_attribute cs_SDP_Attribute_recvonly := + { /* @status APPROVED (IMS) */ + recvonly := {} + }; + + template (value) SDP_attribute cs_SDP_Attribute_sendonly := + { /* @status APPROVED (IMS) */ + sendonly := {} + }; + + template (value) SDP_attribute cs_SDP_Attribute_inactive := + { /* @status APPROVED (IMS) */ + inactive := {} + }; + + template (present) SDP_attribute cr_SDP_Attribute_sendrecv := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + sendrecv := {} // @sic R5s130586 change 2 sic@ + }; + + template (present) SDP_attribute cr_SDP_Attribute_recvonly := + { /* @status APPROVED (IMS) */ + recvonly := {} + }; + + template (present) SDP_attribute cr_SDP_Attribute_sendonly := + { /* @status APPROVED (IMS) */ + sendonly := {} + }; + + template (present) SDP_attribute cr_SDP_Attribute_inactive := + { /* @status APPROVED (IMS, LTE_A) */ + inactive := {} // @sic R5s130586 change 1 sic@ + }; + + template (present) SDP_attribute cr_SDP_Attribute_AnySendRecvMode := (cr_SDP_Attribute_sendrecv, cr_SDP_Attribute_recvonly, cr_SDP_Attribute_sendonly, cr_SDP_Attribute_inactive); /* @status APPROVED (IMS) */ + + //---------------------------------------------------------------------------- + + template (value) SDP_attribute cs_SDP_Attribute_conf_qos(charstring p_StatusType := c_remote, + charstring p_Direction := c_sendrecv) := + { /* @status APPROVED (IMS, LTE_A) */ + conf := { + preconditionType := c_qos, + statusType := p_StatusType, + direction := p_Direction + } + }; + + template (present) SDP_attribute cr_SDP_Attribute_conf_qos(template (present) charstring p_StatusType := c_remote, + template (present) charstring p_Direction := c_sendrecv) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + conf := { + preconditionType := c_qos, + statusType := p_StatusType, + direction := p_Direction + } + }; + + template (value) SDP_attribute cs_SDP_Attribute_curr_qos(charstring p_StatusType, + charstring p_Direction := c_none) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + curr := { + preconditionType := c_qos, + statusType := p_StatusType, + direction := p_Direction + } + }; + + template (present) SDP_attribute cr_SDP_Attribute_curr_qos(template (present) charstring p_StatusType, + template (present) charstring p_Direction := c_none) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + curr := { + preconditionType := c_qos, + statusType := p_StatusType, + direction := p_Direction + } + }; + + template (value) SDP_attribute cs_SDP_Attribute_des_qos(charstring p_Strength, + charstring p_StatusType, + charstring p_Direction := c_sendrecv) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + des := { + preconditionType := c_qos, + strength := p_Strength, // @sic R5s120530 change 3.4 sic@ + statusType := p_StatusType, + direction := p_Direction + } + }; + + template (present) SDP_attribute cr_SDP_Attribute_des_qos(template (present) charstring p_Strength, + template (present) charstring p_StatusType, + template (present) charstring p_Direction := c_sendrecv) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + des := { + preconditionType := c_qos, + strength := p_Strength, + statusType := p_StatusType, + direction := p_Direction + } + }; + + template (value) SDP_attribute cs_SDP_Attribute_ecn_capable_rtp(charstring p_InitVal, + charstring p_ParmVal) := + { /* @status APPROVED (IMS, LTE_A) */ + ecn_capable_rtp := { + init_list := { p_InitVal }, + parm_list := { p_ParmVal } + } + }; + + template (value) SDP_attribute cs_SDP_Attribute_rtcp_fb(charstring p_Rtcp_fb_pt, + charstring p_Rtcp_fb_val) := + { /* @status APPROVED (IMS, LTE_A) */ + rtcp_fb := { + rtcp_fb_pt := p_Rtcp_fb_pt, + rtcp_fb_val := p_Rtcp_fb_val + } + }; + + template (value) SDP_attribute cs_SDP_Attribute_rtcp_xr(charstring p_XR_Format) := + { /* @status APPROVED (IMS, LTE_A) */ + rtcp_xr := { + xr_format_list := { + p_XR_Format + } + } + }; + + template (value) SDP_attribute cs_SDP_Attribute_3ge2ae(charstring p_Indicator) := + { /* @status APPROVED (IMS, LTE_A) */ + e2ae := { + indicator := p_Indicator + } + }; + + template (value) SDP_attribute cs_SDP_Attribute_crypto(charstring p_Tag, + charstring p_Suite, + charstring p_KeyParams) := + { /* @status APPROVED (IMS, LTE_A) */ + crypto := { + tag := p_Tag, + crypto_suite := p_Suite, + key_params := p_KeyParams, + session_params := omit + } + }; + + template (value) SDP_attribute cs_SDP_Attribute_pcfg(integer p_ConfigNumber, + charstring p_PotCfg) := + { + pcfg := { + config_number := p_ConfigNumber, + pot_cfg_list := { p_PotCfg } + } + }; + + template (present) SDP_attribute cr_SDP_Attribute_pcfg(integer p_ConfigNumber, + charstring p_PotCfg) := + { + pcfg := { + config_number := p_ConfigNumber, + pot_cfg_list := { p_PotCfg, * } + } + }; + + template (present) SDP_attribute cr_SDP_Attribute_tcap(integer p_TrprCapNumber, + charstring p_Proto) := + { + tcap := { + trpr_cap_num := p_TrprCapNumber, + proto_list := { p_Proto, * } + } + }; + + template (value) SDP_attribute cs_SDP_Attribute_acfg(integer p_ConfigNumber, + charstring p_SelCfg) := + { + acfg := { + config_number := p_ConfigNumber, + sel_cfg_list := { p_SelCfg } + } + }; + + //---------------------------------------------------------------------------- + + template (value) SDP_bandwidth cs_SDP_Bandwidth(charstring p_Modifier, + integer p_Bandwidth) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + modifier := p_Modifier, + bandwidth := p_Bandwidth + }; + + template (present) SDP_bandwidth cr_SDP_Bandwidth(template charstring p_Modifier, + template integer p_Bandwidth) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + modifier := p_Modifier, + bandwidth := p_Bandwidth + }; + + template (value) SDP_bandwidth_list cs_SDP_Bandwidth_List_Media(integer p_AS := 37, + integer p_RS := 0, + integer p_RR := 0) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5-144700: AS=37 per default sic@ */ + cs_SDP_Bandwidth("AS", p_AS), + cs_SDP_Bandwidth("RS", p_RS), + cs_SDP_Bandwidth("RR", p_RR) + }; + + template (present) SDP_bandwidth_list cr_SDP_Bandwidth_List_Media(template (present) integer p_AS := ?, + template (present) integer p_RS := ?, + template (present) integer p_RR := ?) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + cr_SDP_Bandwidth("AS", p_AS), + cr_SDP_Bandwidth("RS", p_RS), + cr_SDP_Bandwidth("RR", p_RR) + }; + + template (value) SDP_bandwidth_list cs_SDP_Bandwidth_List_AS(integer p_Bandwidth) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cs_SDP_Bandwidth("AS", p_Bandwidth) + }; + + template (present) SDP_bandwidth_list cr_SDP_Bandwidth_List_AS(template (present) integer p_Bandwidth := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cr_SDP_Bandwidth("AS", p_Bandwidth), + * // @sic R5s130495 change 12 sic@ + }; + + //---------------------------------------------------------------------------- + + template (value) SDP_conn_addr cs_SDP_Conn_Addr(template (value) charstring p_IPAddr) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + addr := p_IPAddr, + ttl := omit, + num_of_addr := omit + }; + + template (present) SDP_conn_addr cr_SDP_Conn_Addr(template (present) charstring p_IPAddr) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + addr := p_IPAddr, + ttl := *, + num_of_addr := * + }; + + //---------------------------------------------------------------------------- + + template (value) SDP_connection cs_SDP_Connection(template (value) charstring p_AddrType, + template (value) charstring p_IPAddr) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + net_type := c_in, + addr_type := p_AddrType, + conn_addr := cs_SDP_Conn_Addr(p_IPAddr) + }; + + template (present) SDP_connection cr_SDP_Connection(template (present) charstring p_AddrType := ?, + template (present) charstring p_IPAddr := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + net_type := c_in, + addr_type := p_AddrType, + conn_addr := cr_SDP_Conn_Addr(p_IPAddr) + }; + + //---------------------------------------------------------------------------- + + template (value) SDP_media_field cs_SDP_Media(charstring p_Media, + integer p_LocalPort, + charstring p_Transport, + SDP_fmt_list p_Fmts) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + media := p_Media, + ports := { + port_number := p_LocalPort, + num_of_ports := omit + }, + transport := p_Transport, + fmts := p_Fmts + }; + + template (value) SDP_media_field cs_SDP_Media_MultiAudio(SDP_fmt_list p_Fmts, + integer p_LocalPort := tsc_IMS_MediaPort_M1, + charstring p_Transport := c_rtpAvp) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cs_SDP_Media(c_audio, p_LocalPort, p_Transport, p_Fmts); + + template (value) SDP_media_field cs_SDP_Media_Audio(charstring p_Fmt, + integer p_LocalPort := tsc_IMS_MediaPort_M1, + charstring p_Transport := c_rtpAvp) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cs_SDP_Media_MultiAudio({p_Fmt}, p_LocalPort, p_Transport); + + template (value) SDP_media_field cs_SDP_Media_Text(SDP_fmt_list p_Fmts, + integer p_LocalPort := tsc_IMS_MediaPort_M1, + charstring p_Transport := c_rtpAvp) := + cs_SDP_Media(c_text, p_LocalPort, p_Transport, p_Fmts); + + template (value) SDP_media_field cs_SDP_Media_Video(charstring p_Fmt, + integer p_LocalPort := tsc_IMS_MediaPort_M2, + charstring p_Transport := c_rtpAvp) := + cs_SDP_Media(c_video, p_LocalPort, p_Transport, {p_Fmt}); + + + + + template (present) SDP_fmt_list cr_SDP_FmtList_AtLeastOne(template (present) charstring p_Fmt) := { p_Fmt, * }; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) SDP_fmt_list cr_SDP_FmtList_AtLeastTwo(template (present) charstring p_Fmt1, + template (present) charstring p_Fmt2) := { p_Fmt1, p_Fmt2, * }; + + template (present) SDP_media_field cr_SDP_Media(charstring p_Media, + template (present) integer p_LocalPort := ?, + template (present) charstring p_Transport := c_rtpAvp, + template (present) SDP_fmt_list p_FmtList) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + media := p_Media, + ports := { + port_number := p_LocalPort, + num_of_ports := omit + }, + transport := p_Transport, + fmts := p_FmtList + }; + + template (present) SDP_media_field cr_SDP_Media_Audio(template (present) charstring p_Fmt := cr_SDP_AnyMediaFormatDescr, + template (present) integer p_LocalPort := ?, + template (present) charstring p_Transport := c_rtpAvp) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cr_SDP_Media(c_audio, p_LocalPort, p_Transport, cr_SDP_FmtList_AtLeastOne(p_Fmt)); + + template (present) SDP_media_field cr_SDP_Media_Text(template (present) charstring p_Fmt1 := cr_SDP_AnyMediaFormatDescr, + template (present) charstring p_Fmt2 := cr_SDP_AnyMediaFormatDescr) := + cr_SDP_Media(c_text, -, -, cr_SDP_FmtList_AtLeastTwo(p_Fmt1, p_Fmt2)); + + template (present) SDP_media_field cr_SDP_Media_Video(template (present) charstring p_Fmt := cr_SDP_AnyMediaFormatDescr) := + cr_SDP_Media(c_video, -, -, cr_SDP_FmtList_AtLeastOne(p_Fmt)); + + //---------------------------------------------------------------------------- + + template (value) SDP_Origin cs_SDP_Origin(charstring p_SessionId := tsc_SDP_SessionId, + charstring p_SessionVersion := tsc_SDP_SessionVersion1, + template (value) charstring p_AddrType, + template (value) charstring p_IPAddr) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + user_name := "-", + session_id := p_SessionId, + session_version := p_SessionVersion, + net_type := c_in, + addr_type := p_AddrType, + addr := p_IPAddr + }; + + template (present) SDP_Origin cr_SDP_Origin(template (present) charstring p_AddrType, + template (present) charstring p_IPAddr) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + user_name := ?, + session_id := ?, + session_version := ?, + net_type := c_in, + addr_type := p_AddrType, + addr := p_IPAddr + }; + + //---------------------------------------------------------------------------- + + template (value) SDP_time cs_SDP_Time(charstring p_Start, + charstring p_Stop) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + time_field := { + start_time := p_Start, + stop_time := p_Stop + }, + time_repeat := omit + }; + template (value) SDP_time cs_SDP_Time_0_0 := cs_SDP_Time("0", "0"); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + + template (present) SDP_time cr_SDP_Time(template (present) charstring p_Start, + template (present) charstring p_Stop) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + time_field := { + start_time := p_Start, + stop_time := p_Stop + }, + time_repeat := omit + }; + template (present) SDP_time cr_SDP_Time_0_0 := cr_SDP_Time("0", "0"); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) SDP_time cr_SDP_Time_Any := cr_SDP_Time(?, ?); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + //============================================================================ + + template (value) SDP_media_desc cs_SDP_Media_Desc(template (value) SDP_media_field p_SDP_Media_Field, + template (value) SDP_bandwidth_list p_SDP_Bandwidth_List, + template (omit) SDP_attribute_list p_SDP_Attribute_List, + template (omit) SDP_connection_list p_SDP_Connection_List := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + media_field := p_SDP_Media_Field, + information := omit, + connections := p_SDP_Connection_List, + bandwidth := p_SDP_Bandwidth_List, + key := omit, + attributes := p_SDP_Attribute_List + }; + + template (present) SDP_media_desc cr_SDP_Media_Desc(template (present) SDP_media_field p_SDP_Media_Field, + template SDP_connection p_SDP_Connection, + template SDP_bandwidth_list p_SDP_Bandwidth_List, + template SDP_attribute_list p_SDP_Attribute_List) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + media_field := p_SDP_Media_Field, + information := omit, + connections := { p_SDP_Connection, * } ifpresent, + bandwidth := p_SDP_Bandwidth_List, + key := omit, + attributes := p_SDP_Attribute_List + }; + + //============================================================================ + + template (value) SDP_Message cs_SDP_Message_Common(template (value) SDP_Origin p_SDP_Origin, + template (omit) SDP_connection p_SDP_Connection, + charstring p_Sessionname := tsc_SDP_NoSessionname, + template (value) SDP_bandwidth_list p_Bandwidth, + template (value) SDP_time p_Time := cs_SDP_Time_0_0, + template (omit) SDP_media_desc_list p_SDP_Media_Desc_List := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5s130510 change 4 - additional change sic@ */ + /* @sic R5-144700: default value removed for p_Bandwidth sic@ */ + protocol_version := 0, // v-line + origin := p_SDP_Origin, // o-line + session_name := p_Sessionname, // s-line + information := omit, + uri := omit, + emails := omit, + phone_numbers := omit, + connection := p_SDP_Connection, // c-line + bandwidth := p_Bandwidth, // b-line + times := { p_Time }, // t-line + timezone_adjustments := omit, + key := omit, + attributes := omit, + media_list := p_SDP_Media_Desc_List + }; + + template (value) SDP_Message cs_SDP_Message_Def(template (value) SDP_Origin p_SDP_Origin, + template (omit) SDP_connection p_SDP_Connection, + charstring p_Sessionname := tsc_SDP_NoSessionname, + integer p_BandwidthAS := 37, + template (value) SDP_media_desc p_SDP_Media_Desc) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5s130510 change 4 - additional change sic@ */ + /* @sic R5-144700: new parameter p_BandwidthAS set to 37 per default sic@ */ + cs_SDP_Message_Common(p_SDP_Origin, p_SDP_Connection, p_Sessionname, cs_SDP_Bandwidth_List_AS(p_BandwidthAS), -, { p_SDP_Media_Desc }); + + + template (present) SDP_Message cr_SDP_Message_Common(template (present) charstring p_AddrType := ?, + template (present) charstring p_IPAddrOrigin := ?, + template (present) charstring p_IPAddrConnection := ?, + template (present) charstring p_Sessionname := ?, // @sic R5-130751 sic@ + template SDP_bandwidth_list p_Bandwidth := cr_SDP_Bandwidth_List_AS, + template (present) SDP_time p_Time := cr_SDP_Time_0_0, + template SDP_media_desc_list p_SDP_Media_Desc_List := *) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + protocol_version := 0, // v-line + origin := cr_SDP_Origin(p_AddrType, p_IPAddrOrigin), // o-line + session_name := p_Sessionname, // s-line + information := omit, + uri := omit, + emails := omit, + phone_numbers := omit, + connection := cr_SDP_Connection(p_AddrType, p_IPAddrConnection) ifpresent, // c-line + bandwidth := p_Bandwidth, // b-line + times := { p_Time }, // t-line + timezone_adjustments := omit, + key := omit, + attributes := omit, + media_list := p_SDP_Media_Desc_List + }; + + template (present) SDP_Message cr_SDP_Message_Def(template (present) charstring p_AddrType := ?, + template (present) charstring p_IPAddrOrigin := ?, + template (present) charstring p_IPAddrConnection := ?, + template (present) SDP_media_desc p_SDP_Media_Desc) := + /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + cr_SDP_Message_Common(p_AddrType, p_IPAddrOrigin, p_IPAddrConnection, -, -, -, { p_SDP_Media_Desc }); + + template (present) SDP_Message cr_SDP_Message_AnySession(template (present) charstring p_AddrType := ?, + template (present) charstring p_IPAddrOrigin := ?, + template (present) charstring p_IPAddrConnection := ?, + template (present) SDP_media_desc p_SDP_Media_Desc) := + /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + cr_SDP_Message_Common(p_AddrType, p_IPAddrOrigin, p_IPAddrConnection, -, -, cr_SDP_Time_Any, { p_SDP_Media_Desc }); + +} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS/IMS_SIP_Templates.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_SIP_Templates.ttcn new file mode 100644 index 0000000..072b383 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_SIP_Templates.ttcn @@ -0,0 +1,2278 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-11 12:36:16 +0200 (Thu, 11 Sep 2014) $ +// $Rev: 12204 $ +/******************************************************************************/ + +module IMS_SIP_Templates { + import from CommonDefs all; + import from CommonIP all; + import from IMS_CommonParameters all; + import from IMS_CommonDefs all; + import from IMS_CommonTemplates all; + import from IP_ASP_TypeDefs all; + + import from LibSip_Common all; + import from LibSip_MessageBodyTypes all; + import from LibSip_SIPTypesAndValues all; + + const charstring tsc_SEC_MECHANISM := "ipsec-3gpp"; /* Security Mechanism name + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + // Securiity algorithms for IPSEC + const charstring tsc_HMAC_MD5_96 := "hmac-md5-96"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + const charstring tsc_HMAC_SHA_1_96 := "hmac-sha-1-96"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + const charstring tsc_AKAv1_MD5 := "AKAv1-MD5"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + const charstring tsc_HTTP_MD5 := "MD5"; /* @status APPROVED (IMS) */ + const octetstring tsc_COLON_HEX := '3A'O; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + template (present) SemicolonParam_List cr_SemicolonParam_List_WithAnyTag := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cr_SemicolonParam_List_OneSpecificParam(c_tagId, *); + + template (present) SemicolonParam_List cr_ExpiresInContactParams(template (present) charstring p_Expires := ?) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cr_SemicolonParam_List_OneSpecificParamWithValue("expires", p_Expires); + + template (present) SemicolonParam_List cr_CPInstanceInContactParams := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cr_SemicolonParam_List_OneSpecificParamWithValue("c-p-instance", "sip.instance=" & tsc_IMS_UEInstanceId); + + template (present) SemicolonParam_List cr_SMSParamInContactParams := /* @sic R5s120530 change 2.1 sic@ + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cr_SemicolonParam_List_OneSpecificParamNoValue("+g.3gpp.smsip"); + + template (present) SemicolonParam_List cr_VideoInContactParams := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cr_SemicolonParam_List_OneSpecificParamNoValue("video"); + + template (present) SemicolonParam_List cr_FeatureParam_3gpp_icsi_ref := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cr_SemicolonParam_List_OneSpecificParam(tsc_IMS_FeatureParamId_3gpp_icsi_ref, cr_GenValueQuoted(cs_IMS_EncodedFeatureParamValue_3gpp_icsi_ref)); // @sic R5s120530 change 3.1, R5w140111, R5-142247 sic@ + + template (present) SemicolonParam_List cr_SigCompParam := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cr_SemicolonParam_List_OneSpecificParamWithValue("comp", "sigcomp"); + + template (present) SemicolonParam_List cr_SecurityMechParams_IPsec(charstring p_Algorithm) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cr_GenericParam("alg", p_Algorithm), + cr_GenericParam("spi-c", ?), + cr_GenericParam("spi-s", ?), + cr_GenericParam("port-c", ?), + cr_GenericParam("port-s", ?), + * + }; + + template (value) GenericParam cs_SigCompParam := cs_GenericParam("comp", "sigcomp"); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + //---------------------------------------------------------------------------- + + const OptionTag_List tsc_OptionTagList_100rel := {c_tag100rel}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ +// const OptionTag_List tsc_OptionTagList_geolocation := {"geolocation"}; /* @status APPROVED (IMS, LTE) */ + const OptionTag_List tsc_OptionTagList_precondition := {c_tagPrecond}; /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + const OptionTag_List tsc_OptionTagList_sec_agree := {"sec-agree"}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + const OptionTag_List tsc_OptionTagList_Empty := {}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + /* + * @desc generate receive template expection all given option tags and any further ones + * @param p_RequestedTags + * @return template (present) OptionTag_List + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_OptionTagListRX(OptionTag_List p_RequestedTags) return template (present) OptionTag_List + { + var template (present) OptionTag_List v_TagList; + + // v_TagList := superset(all from p_TagList); // this is the solution acc. to V4.5.1 of the core language ... + // ... WORKAROUND: + + select (lengthof(p_RequestedTags)) { +/* case (1) { v_TagList := superset(p_RequestedTags[0]); } */ +/* case (2) { v_TagList := superset(p_RequestedTags[0], p_RequestedTags[1]); } */ +/* case (3) { v_TagList := superset(p_RequestedTags[0], p_RequestedTags[1], p_RequestedTags[2]); } */ +/* case (4) { v_TagList := superset(p_RequestedTags[0], p_RequestedTags[1], p_RequestedTags[2], p_RequestedTags[3]); } */ +/* case (4) { v_TagList := superset(p_RequestedTags[0], p_RequestedTags[1], p_RequestedTags[2], p_RequestedTags[3], p_RequestedTags[4]); } */ + // workaround: + case (1) { v_TagList := {p_RequestedTags[0], *}; } + case (2) { v_TagList := {p_RequestedTags[0], p_RequestedTags[1], *}; } + case (3) { v_TagList := {p_RequestedTags[0], p_RequestedTags[1], p_RequestedTags[2], *}; } + case (4) { v_TagList := {p_RequestedTags[0], p_RequestedTags[1], p_RequestedTags[2], p_RequestedTags[3], *}; } + case (4) { v_TagList := {p_RequestedTags[0], p_RequestedTags[1], p_RequestedTags[2], p_RequestedTags[3], p_RequestedTags[4], *}; } + case else { FatalError(__FILE__, __LINE__, ""); } + } + return v_TagList; + } + + //---------------------------------------------------------------------------- + + template (present) DisplayName cr_DisplayNameToken(charstring p_DisplayName) := {token := f_TokenPattern(p_DisplayName)}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) DisplayName cr_DisplayNameQuotedString(charstring p_DisplayName) := {quotedString := p_DisplayName}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) DisplayName cr_DisplayName(charstring p_DisplayName) := (cr_DisplayNameToken(p_DisplayName), cr_DisplayNameQuotedString(p_DisplayName)); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + + template (present) NameAddr cr_NameAddr(template DisplayName p_DisplayName, + template (present) SipUrl p_SipUrl) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5w140111: p_DisplayName - type changed from charstring to DisplayName sic@ */ + displayName := p_DisplayName, + addrSpec := p_SipUrl + }; + + template (present) NameAddr cr_NameAddr_NoDisplayName(template (present) SipUrl p_SipUrl) := cr_NameAddr(omit, p_SipUrl); + + template (value) NameAddr cs_NameAddr(template (value) SipUrl p_SipUrl) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + displayName := omit, + addrSpec := p_SipUrl + }; + + //---------------------------------------------------------------------------- + + //**************************************************************************** + // IEs (in alphatic order) + //---------------------------------------------------------------------------- + + template (present) Accept cr_AcceptDef (charstring p_MediaRange) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := ACCEPT_E, + acceptArgs := { + { + mediaRange := p_MediaRange, + acceptParam := omit + } + } + }; + + //---------------------------------------------------------------------------- + + template (value) AcceptBody cs_AcceptBody(charstring p_MediaRange) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + mediaRange := p_MediaRange, + acceptParam := omit + }; + + template (value) Accept cs_Accept(template (value) AcceptBody_List p_AcceptBodyList) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + fieldName := ACCEPT_E, + acceptArgs := p_AcceptBodyList + }; + + template (present) AcceptBody cr_AcceptBody(template (present) charstring p_MediaRange) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + mediaRange := p_MediaRange, + acceptParam := * + }; + + template (present) Accept cr_Accept(template (present) AcceptBody_List p_AcceptBodyList) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := ACCEPT_E, + acceptArgs := p_AcceptBodyList + }; + + //---------------------------------------------------------------------------- + + template (present) AcceptContact cr_AcceptContact(template (present) GenericParam p_GenericParam := cr_GenericParam_Any) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := ACCEPT_CONTACT_E, + acValues := { + { + wildcard := c_WILDCARD, + acRcParams := { p_GenericParam, * } + } + } + }; + + template (value) AcceptContact cs_AcceptContact(template (value) SemicolonParam_List p_ParamList) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + fieldName := ACCEPT_CONTACT_E, + acValues := { + { + wildcard := c_WILDCARD, + acRcParams := p_ParamList + } + } + }; + + //---------------------------------------------------------------------------- + + template (present) Addr_Union cr_Addr_Union_NameAddr(template (present) SipUrl p_SipUrl, + template DisplayName p_DisplayName := *) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + nameAddr := cr_NameAddr(p_DisplayName, p_SipUrl) + }; + + template (present) Addr_Union cr_Addr_Union_AddrSpecUnion(template (present) SipUrl p_SipUrl) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + addrSpecUnion := p_SipUrl + }; + + /* + * @desc return 'Addr_Union' to be used in receive templates + * @param p_SipUrl + * @param p_DisplayName (default value: *) + * @return template (present) Addr_Union + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_Addr_Union_RX(template (present) SipUrl p_SipUrl, + template DisplayName p_DisplayName := *) return template (present) Addr_Union + { + var template (present) Addr_Union v_Addr_Union; + + if (ispresent(p_DisplayName)) { + v_Addr_Union := cr_Addr_Union_NameAddr(p_SipUrl, p_DisplayName); + } else { + v_Addr_Union := (cr_Addr_Union_NameAddr(p_SipUrl, p_DisplayName), cr_Addr_Union_AddrSpecUnion(p_SipUrl)); + } + return v_Addr_Union; + } + + /* + * @desc get SipUrl from 'Addr_Union' union + * @param p_Addr_Union + * @return SipUrl + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_Addr_Union_GetSipUrl(template (omit) Addr_Union p_Addr_Union) return SipUrl + { + var SipUrl v_SipUrl; + + if (ischosen(p_Addr_Union.addrSpecUnion)) { + v_SipUrl := valueof(p_Addr_Union.addrSpecUnion); + } else { + v_SipUrl := valueof(p_Addr_Union.nameAddr.addrSpec); + } + return v_SipUrl; + } + + //---------------------------------------------------------------------------- + + template (present) AlertInfo cr_AlertInfo (template charstring p_AlertInfoUrl) := + { /* @status APPROVED (IMS) */ + fieldName := ALERT_INFO_E, + alertInfoBody := { + { + url := p_AlertInfoUrl, + genericParams := * + } + } + }; + + //---------------------------------------------------------------------------- + + template (present) Allow cr_Allow(template (present) charstring p_Method) := + { + fieldName := ALLOW_E, + methods := { p_Method } + }; + + template (value) Allow cs_Allow(charstring p_Method) := + { + fieldName := ALLOW_E, + methods := { p_Method } + }; + + //---------------------------------------------------------------------------- + + template (present) Authorization cr_AuthorizationInitial(charstring p_UserName, + charstring p_Realm, + template GenValue p_Nonce := cr_GenValue_None, + template GenValue p_Response := cr_GenValue_None) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5w140111: GenValue sic@ */ + fieldName := AUTHORIZATION_E, + body := { + { + digestResponse := { + cr_GenericParam("username", p_UserName), + cr_GenericParam("realm", p_Realm), + cr_GenericParam_Common("nonce", p_Nonce), + cr_GenericParam("uri", "sip:" & p_Realm), + cr_GenericParam_Common("response", p_Response), // Response calculated by UE + * + } + } + } + }; + + template (present) Authorization cr_AuthorizationCommon(charstring p_UserName, + charstring p_Realm, + charstring p_Nonce, + template (present) charstring p_Uri, + charstring p_Algorithm, + template (present) charstring p_Nc := "00000001", + charstring p_Opaque := tsc_IMS_Opaque, + charstring p_Qop := "auth", + template (present) charstring p_Cnonce := ?, + template (present) charstring p_Response := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5s130794 change 2: new parameters p_Algorithm, p_Uri; renamed to cr_AuthorizationCommon sic@ */ + fieldName := AUTHORIZATION_E, + body := { + { + digestResponse := { + cr_GenericParam("username", p_UserName), + cr_GenericParam("realm", p_Realm), + cr_GenericParam("nonce", p_Nonce), + cr_GenericParam("opaque", p_Opaque), + cr_GenericParam("uri", p_Uri), + cr_GenericParam("qop", p_Qop), + cr_GenericParam("cnonce", p_Cnonce), + cr_GenericParam("nc", p_Nc), + cr_GenericParam("response", p_Response), // Response calculated by UE + cr_GenericParam("algorithm", p_Algorithm), + * + } + } + } + }; + + template (present) Authorization cr_AuthorizationDef(charstring p_UserName, + charstring p_Realm, + charstring p_Nonce, + template (present) charstring p_Nc) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5s130794 change 2: wrapper template sic@ */ + cr_AuthorizationCommon(p_UserName, p_Realm, p_Nonce, "sip:" & p_Realm, tsc_AKAv1_MD5, p_Nc); + + //---------------------------------------------------------------------------- + + template (present) CallId cr_CallId (template (present) charstring p_CallId) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := CALL_ID_E, + callid := p_CallId + }; + + template (value) CallId cs_CallId (charstring p_CallId) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := CALL_ID_E, + callid := p_CallId + }; + + //---------------------------------------------------------------------------- + + template (present) ContactAddress cr_ContactAddress(template DisplayName p_DisplayName, + template (present) SipUrl p_SipUrl, + template SemicolonParam_List p_ContactParams := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5s140676 Change 1 sic@ */ + addressField := f_Addr_Union_RX(p_SipUrl, p_DisplayName), + contactParams := p_ContactParams + }; + + template (present) Contact cr_Contact(template (present) SipUrl p_SipUrl, + template SemicolonParam_List p_ContactParams := *) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := CONTACT_E, + contactBody := { + contactAddresses := { + cr_ContactAddress(*, p_SipUrl, p_ContactParams), + * + } + } + }; + + template (value) Contact cs_Contact(template (value) SipUrl p_SipUrl, + template (omit) SemicolonParam_List p_ContactParams := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := CONTACT_E, + contactBody := { + contactAddresses := { + { + addressField := { + nameAddr := cs_NameAddr(p_SipUrl) + }, + contactParams := p_ContactParams + } + } + } + }; + + template (present) Contact cr_Contact_Wildcard := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := CONTACT_E, + contactBody := { + wildcard := "*" + } + }; + + //---------------------------------------------------------------------------- + + template (present) ContentLength cr_ContentLength(template (present) integer p_Length := 0) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + fieldName := CONTENT_LENGTH_E, + len := p_Length + }; + + template (value) ContentLength cs_ContentLength(integer p_Length := -1) := + { // Note: The actual length shall be set by the encoder, see 34.229-3 clause 7.3.4 + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := CONTENT_LENGTH_E, + len := p_Length + }; + + //---------------------------------------------------------------------------- + + template (present) ContentType cr_ContentType(template (present) charstring p_MediaType) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := CONTENT_TYPE_E, + mediaType := p_MediaType + }; + + template (present) ContentType cr_ContentTypeSDP := cr_ContentType("application/sdp"); /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + + template (value) ContentType cs_ContentType(charstring p_MediaType) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := CONTENT_TYPE_E, + mediaType := p_MediaType + }; + + template (value) ContentType cs_ContentTypeSDP := cs_ContentType("application/sdp"); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + //---------------------------------------------------------------------------- + + template (present) CSeq cr_CseqDef(template (present) integer p_SeqNo, + charstring p_Method) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := CSEQ_E, + seqNumber := p_SeqNo, + method := p_Method + }; + + template (value) CSeq cs_CseqDef(template (value) integer p_SeqNo, + charstring p_Method) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := CSEQ_E, + seqNumber := p_SeqNo, + method := p_Method + }; + + //---------------------------------------------------------------------------- + + template (present) Event cr_EventDef (template (present) EventType p_EventType) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := EVENT_E, + eventType := p_EventType, + eventParams := omit + }; + + template (value) Event cs_EventDef (template (value) EventType p_EventType) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := EVENT_E, + eventType := p_EventType, + eventParams := omit + }; + + //---------------------------------------------------------------------------- + + template (present) Expires cr_Expires(template (present) charstring p_DeltaSec) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := EXPIRES_E, + deltaSec := p_DeltaSec + }; + + template (value) Expires cs_Expires(charstring p_DeltaSec) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := EXPIRES_E, + deltaSec := p_DeltaSec + }; + + //---------------------------------------------------------------------------- + + template (value) FeatureCaps cs_FeatureCaps(charstring p_FeatureCap) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := FEATURE_CAPS_E, + fcValues := { + { + wildcard := c_WILDCARD, + fcParams := { cs_GenericParam(p_FeatureCap) } + } + } + }; + + //---------------------------------------------------------------------------- + + template (present) From cr_From(template DisplayName p_DisplayName, + template (present) SipUrl p_SipUrl, + template (present) charstring p_Tag := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := FROM_E, + addressField := f_Addr_Union_RX(p_SipUrl, p_DisplayName), /* @sic R5s130378 change 3 sic@ */ + fromParams := { cr_GenericParam(c_tagId, p_Tag), * } + }; + + template (present) From cr_FromWithTag(template (present) SipUrl p_SipUrl, + template (present) charstring p_Tag := ?) := cr_From(*, p_SipUrl, p_Tag); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) @sic R5s130256 sic@ */ + + template (value) From cs_From(template (value) SipUrl p_SipUrl, + template (omit) charstring p_Tag := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := FROM_E, + addressField := { + nameAddr := cs_NameAddr(p_SipUrl) + }, + fromParams := { cs_GenericParam(c_tagId, p_Tag) } + }; + + //---------------------------------------------------------------------------- + + template (present) Geolocation cr_GeolocationAny := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5-133151 update of header field structure sic@ */ + fieldName := GEOLOCATION_E, + addrSpec := ?, + geolocParam := * // @sic R5-133151 optinal parameter sic@ + }; + + template (present) GeolocationRouting cr_GeolocationRoutingAny := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5-133151 sic@ */ + fieldName := GEOLOCATION_ROUTING_E, + state := ?, + genericValue := * + }; + + template (present) GeolocationRouting cr_GeolocationRoutingSupported := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5-134798 sic@ */ + fieldName := GEOLOCATION_ROUTING_E, + state := ?, + genericValue := cr_GenericParam(?, "yes") /* @sic R5w140111: GenValue sic@ */ + }; + //---------------------------------------------------------------------------- + + template (value) HistoryInfoEntry cs_HistoryInfoEntry(template (value) SipUrl p_SipUrl) := + { /* @status APPROVED (IMS) */ + nameAddr := cs_NameAddr(p_SipUrl), + hiIndex := { 1 }, /* @sic R5s130195 BASELINE MOVING 2013 sic@ + @sic LibSip v.3.0.0: hiIndex changed to IntegerList sic@ */ + hiExtention := omit + }; + + template (value) HistoryInfo cs_HistoryInfo(template (value) SipUrl p_SipUrl) := + { /* @status APPROVED (IMS) */ + fieldName := HISTORY_INFO_E, + historyInfoList := { + cs_HistoryInfoEntry(p_SipUrl) + } + }; + + //---------------------------------------------------------------------------- + + template (present) HostPort cr_HostPort(template (present) charstring p_Host := ?, + template integer p_Port := *) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + host := p_Host, + portField := p_Port + }; + + template (value) HostPort cs_HostPort(charstring p_Host, + template (omit) integer p_Port := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + host := p_Host, + portField := p_Port + }; + + //---------------------------------------------------------------------------- + + template (present) MaxForwards cr_MaxForwardsDef(template (present) integer p_Value := (1..255)) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := MAX_FORWARDS_E, + forwards := p_Value + }; + + template (value) MaxForwards cs_MaxForwardsDef (template (value) integer p_Value := 67) := + { // p_Value := 67 -> any value + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := MAX_FORWARDS_E, + forwards := p_Value + }; + + //---------------------------------------------------------------------------- + template (value) NameAddrParam cs_NameAddrParam(template (value) SipUrl p_SipUrl) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + nameAddr := cs_NameAddr(p_SipUrl), + genericParams := omit + }; + + //---------------------------------------------------------------------------- + + template (present) PAccessNetworkInfo cr_PAccessNetworkInfoDef (template (present) charstring p_AccessType, + template GenValue p_GenValueCellId := *) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := P_ACCESS_NETWORK_INFO_E, + accessType := p_AccessType, + genericParams := { + cr_GenericParam_Common("utran-cell-id-3gpp", p_GenValueCellId), + * + } + }; + + //---------------------------------------------------------------------------- + + template (value) PAssertedID cs_PAssertedId (template (value) SipUrl p_SipUrl) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := P_ASSERTED_ID_E, + pAssertedIDValueList := { + { + nameAddr := cs_NameAddr(p_SipUrl) + } + } + }; + + //---------------------------------------------------------------------------- + + template (present) PAssertedID cr_PAssertedId (template (present) SipUrl p_SipUrl) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + fieldName := P_ASSERTED_ID_E, + pAssertedIDValueList := { + { + nameAddr := cr_NameAddr(*, p_SipUrl) + } + } + }; + + //---------------------------------------------------------------------------- + + template (value) PAssertedService cs_PAssertedService(template (value) PAssertedServiceValue p_PAssertedServiceValue) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + fieldName := P_ASSERTED_SERVICE_E, + pAssertedServiceValue := p_PAssertedServiceValue + }; + + //---------------------------------------------------------------------------- + + template (value) PAssociatedURI cs_PAssociatedURI(template (value) NameAddrParam_List p_NameAddrParam) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := P_ASSOCIATED_URI_E, + nameAddrList := p_NameAddrParam + }; + + //---------------------------------------------------------------------------- + + template (value) Path cs_PathDef(charstring p_Host) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := PATH_E, + pathValues := { + { + nameAddr := cs_NameAddr(cs_SipUri_HostPort_lr(p_Host)), + rrParam := omit + } + } + }; + + //---------------------------------------------------------------------------- + + template (value) PCalledPartyID cs_PCalledPartyId(template (value) SipUrl p_SipUrl) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + fieldName := P_CALLED_PARTY_E, + nameAddParams := cs_NameAddrParam(p_SipUrl) + }; + + //---------------------------------------------------------------------------- + + template (present) PPreferredID cr_PPreferredID(template (present) PPreferredIDValue_List p_PPreferredIDList := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := P_PREFERRED_ID_E, + pPreferredIDValueList := p_PPreferredIDList + }; + + //---------------------------------------------------------------------------- + + template (present) PPreferredService cr_PPreferredService(template (present) charstring p_ServiceId := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := P_PREFERRED_SERVICE_E, + serviceId := p_ServiceId + }; + + //---------------------------------------------------------------------------- + + template (present) ProxyRequire cr_ProxyRequireDef := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := PROXY_REQUIRE_E, + optionsTags := { "sec-agree", *} + }; + + //---------------------------------------------------------------------------- + + template (value) RAck cs_RAckDef(template (value) integer p_RSeq, + template (value) integer p_CSeq, + template (value) charstring p_Method) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + fieldName := RACK_E, + responseNum := p_RSeq, + seqNumber := p_CSeq, + method := p_Method + }; + + template (present) RAck cr_RAckDef(template (present) integer p_RSeq, + template (present) integer p_CSeq, + template (present) charstring p_Method) := + { /* @status APPROVED (IMS, LTE_A) */ + fieldName := RACK_E, + responseNum := p_RSeq, + seqNumber := p_CSeq, + method := p_Method + }; + + //---------------------------------------------------------------------------- + + template (present) ReasonValue cr_ReasonValue(template (present) SemicolonParam_List p_ReasonParams) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + token := "SIP", + reasonParams := p_ReasonParams + }; + + /* + * @desc local function to set the parameters + * @param p_CauseValue + * @param p_Text + * @return template (present) ReasonValue + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function fl_ReasonValues(integer p_CauseValue, + template charstring p_Text) return template (present) ReasonValue + { + var template (present) SemicolonParam_List v_ReasonParams; + + if (ispresent(p_Text)) { + v_ReasonParams := { + cr_GenericParam("cause", int2str(p_CauseValue)), + cr_GenericParam("text", p_Text), // complier warning cannot be avoided + * + }; + } else { + v_ReasonParams := { + cr_GenericParam("cause", int2str(p_CauseValue)), + * + }; + } + return cr_ReasonValue(v_ReasonParams); + }; + + template (present) Reason cr_Reason(integer p_CauseValue, + template charstring p_Text := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + fieldName := REASON_E, + reasonValues := { + fl_ReasonValues(p_CauseValue, p_Text) + } + }; + + //---------------------------------------------------------------------------- + + template (value) RecordRoute cs_RecordRoute(template (value) RouteBody_List p_RouteBodyList) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := RECORD_ROUTE_E, + routeBody := p_RouteBodyList + }; + + template (present) RecordRoute cr_RecordRoute(template (present) RouteBody_List p_RouteBodyList) := + { + fieldName := RECORD_ROUTE_E, + routeBody := p_RouteBodyList + }; + + //---------------------------------------------------------------------------- + + template (value) ReferredBy cs_ReferredBy (template (value) SipUrl p_SipUrl) := + { + fieldName := REFERRED_BY_E, + nameAddr := cs_NameAddr(p_SipUrl), + referredbyIdParams := omit + }; + + template (present) ReferredBy cr_ReferredBy (template (present) SipUrl p_SipUrl) := + { + fieldName := REFERRED_BY_E, + nameAddr := cr_NameAddr(*, p_SipUrl), + referredbyIdParams := * + }; + + //---------------------------------------------------------------------------- + + template (present) ReferTo cr_ReferTo(template (present) SipUrl p_SipUrl) := + { + fieldName := REFER_TO_E, + nameAddr := cr_NameAddr(*, p_SipUrl), + referToParams := omit + }; + + template (value) ReferTo cs_ReferTo (template (value) SipUrl p_SipUrl, + template (omit) SemicolonParam_List p_ReferToParams := omit) := + { + fieldName := REFER_TO_E, + nameAddr := cs_NameAddr(p_SipUrl), + referToParams := p_ReferToParams + }; + + //---------------------------------------------------------------------------- + + template (present) RequestDisposition cr_RequestDisposition(template (present) Directive_List p_Directives) := + { + fieldName := REQUEST_DISPOSITION_E, + directives := p_Directives + }; + + template (value) RequestDisposition cs_RequestDisposition(template (value) Directive_List p_Directives) := + { /* @status APPROVED (IMS) */ + fieldName := REQUEST_DISPOSITION_E, + directives := p_Directives + }; + + //---------------------------------------------------------------------------- + + template (present) RequestLine cr_RequestLineSip(Method p_Method, + template (present) SipUrl p_URI) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + method := p_Method, + requestUri := p_URI, + sipVersion := c_sipNameVersion + }; + + template (value) RequestLine cs_RequestLineSip(Method p_Method, + template (value) SipUrl p_URI) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + method := p_Method, + requestUri := p_URI, + sipVersion := c_sipNameVersion + }; + + //---------------------------------------------------------------------------- + + template (present) Require cr_Require(OptionTag_List p_OptionTags) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := REQUIRE_E, + optionsTags := f_SIP_OptionTagListRX(p_OptionTags) // @sic R5-133629 sic@ + }; + + template (present) Require cr_RequireSecAgree := cr_Require(tsc_OptionTagList_sec_agree); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + @sic R5-133629 sic@ */ + + template (value) Require cs_Require(OptionTag_List p_OptionTags) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE_A, LTE, LTE_IRAT) */ + fieldName := REQUIRE_E, + optionsTags := p_OptionTags + }; + + //---------------------------------------------------------------------------- + + template (value) RetryAfter cs_RetryAfter (integer p_Secs) := + { /* @status APPROVED (IMS) */ + fieldName := RETRY_AFTER_E, + deltaSec := int2str(p_Secs), + comment := omit, + retryParams := omit + }; + + //---------------------------------------------------------------------------- + + template (present) RouteBody cr_RouteBody(template DisplayName p_DisplayName, + template (present) SipUrl p_SipUrl, + template SemicolonParam_List p_RRParam := *) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + nameAddr := cr_NameAddr(p_DisplayName, p_SipUrl), + rrParam := p_RRParam + }; + + template (value) RouteBody cs_RouteBody(template (value) SipUrl p_SipUrl, + template (omit) SemicolonParam_List p_RRParam := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + nameAddr := cs_NameAddr(p_SipUrl), + rrParam := p_RRParam + }; + + /* + * @desc return RouteBody with given parameters + * @param p_SipUrl + * @param p_SigCompParam (default value: omit) + * @return template (value) RouteBody + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_RouteBodyWithParamsTX(template (value) SipUrl p_SipUrl, + template (omit) GenericParam p_SigCompParam := omit) return template (value) RouteBody + { + var template (omit) SemicolonParam_List v_RRParamList := omit; + if (isvalue(p_SigCompParam)) { + v_RRParamList[0] := p_SigCompParam; + } + return cs_RouteBody(p_SipUrl, v_RRParamList); + } + + //---------------------------------------------------------------------------- + + template (present) Route cr_Route(template RouteBody_List p_RouteBodyList) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := ROUTE_E, + routeBody := p_RouteBodyList + }; + + template (present) Route cr_RouteRegDef(template (present) charstring p_Host, + template integer p_Port) := + cr_Route( {cr_RouteBody(*, cr_SipUri_HostPort_lr(p_Host, p_Port))} ); + + template (present) Route cr_RouteSubs(charstring p_Host1, + template integer p_Port, + charstring p_Host2) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cr_Route( { cr_RouteBody(omit, cr_SipUri_HostPort_lr(p_Host1, p_Port)), cr_RouteBody(omit, cr_SipUri_HostPort_lr(p_Host2)) } ); + + template (present) Route cr_RouteReReg (charstring p_Host, + template integer p_Port, + charstring p_Host2) := + ( cr_RouteRegDef(p_Host, p_Port), cr_RouteSubs(p_Host, p_Port, p_Host2) ); + + template (value) Route cs_Route(template (value) RouteBody_List p_RouteBodyList) := + { + fieldName := ROUTE_E, + routeBody := p_RouteBodyList + }; + + //---------------------------------------------------------------------------- + + template (present) RSeq cr_RSeq(template (present) integer p_ResponseNum) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + fieldName := RSEQ_E, + responseNum := p_ResponseNum + }; + + template (value) RSeq cs_RSeq(integer p_ResponseNum) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE_A, LTE, LTE_IRAT) */ + fieldName := RSEQ_E, + responseNum := p_ResponseNum + }; + + //---------------------------------------------------------------------------- + + template (present) SecurityClient cr_SecClientMandatoryFields := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := SECURITY_CLIENT_E, + securityMech := { + // cr_SecurityMechanism(cr_SecurityMechParams_IPsec(tsc_HMAC_MD5_96)), @sic R5-144131 sic@ + cr_SecurityMechanism(cr_SecurityMechParams_IPsec(tsc_HMAC_SHA_1_96)), + * + } + }; + + template (present) SecurityClient cr_SecClientOptionalFields(charstring p_Id, + template GenValue p_GenValue := *) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5w140111: GenValue sic@ */ + fieldName := SECURITY_CLIENT_E, + securityMech := { + cr_SecurityMechanism(cr_SemicolonParam_List_OneSpecificParam(p_Id, p_GenValue)), + cr_SecurityMechanism(cr_SemicolonParam_List_OneSpecificParam(p_Id, p_GenValue)), + * + } + }; + + template (present) SecurityClient cr_SecClientOptionalProt := cr_SecClientOptionalFields("prot", cr_GenValue("esp")); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) SecurityClient cr_SecClientOptionalProtAny := cr_SecClientOptionalFields("prot"); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) SecurityClient cr_SecClientOptionalMod := cr_SecClientOptionalFields("mod", cr_GenValue("trans")); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) SecurityClient cr_SecClientOptionalModAny := cr_SecClientOptionalFields("mod"); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) SecurityClient cr_SecClientEalg := cr_SecClientOptionalFields("ealg", cr_GenValue(("des-ede3-cbc", "aes-cbc"))); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) SecurityClient cr_SecClientEalgNull := cr_SecClientOptionalFields("ealg", cr_GenValue("null")); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) SecurityClient cr_SecClientEalgAny := cr_SecClientOptionalFields("ealg"); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + //---------------------------------------------------------------------------- + + template (present) SecurityMechanism cr_SecurityMechanism(template SemicolonParam_List p_MechParams) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + mechName := tsc_SEC_MECHANISM, + mechParams := p_MechParams + }; + + //---------------------------------------------------------------------------- + + template (value) SecurityServer cs_SecServerDef(template (value) SecurityMechanism_List p_SecurityMech) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := SECURITY_SERVER_E, + securityMech := p_SecurityMech + }; + + //---------------------------------------------------------------------------- + + template (present) SecurityVerify cr_SecVerifyDef (template (present) SecurityMechanism_List p_SecurityMech) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := SECURITY_VERIFY_E, + securityMech := p_SecurityMech + }; + + //---------------------------------------------------------------------------- + + template (value) ServiceRoute cs_ServiceRouteDef (charstring p_Host) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := SERVICE_ROUTE_E, + routeBody := { + cs_RouteBody(cs_SipUri_HostPort_lr(p_Host)) + } + }; + + //---------------------------------------------------------------------------- + + template (present) SessIdString cr_SessIdString_Any := pattern "[0-9a-f]#32"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + template (present) SessionId cr_SessionId(template (present) SessIdString p_SessIdString := cr_SessIdString_Any) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := SESSION_ID_E, + sessid := p_SessIdString, + sessidParam := * + }; + + /* + * @desc return either omit or cr_SessionId (any session id) + * @param p_SessionIdSupported + * @return template SessionId + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_SessionId_RX_IfSupported(boolean p_SessionIdSupported) return template SessionId + { + var template SessionId v_SessionId := omit; + if (p_SessionIdSupported) { + v_SessionId := cr_SessionId + } + return v_SessionId; + } + + template (value) SessionId cs_SessionId(SessIdString p_SessIdString) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := SESSION_ID_E, + sessid := p_SessIdString, + sessidParam := omit + }; + + /* + * @desc return Session-ID derived from Call-ID based on SHA-1 hashing acc. to draft-kaplan-dispatch-session-id-03 clause 4.1 + * @param p_CallId + * @return SessIdString + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_SessionId_TX_Generate(charstring p_CallId) return SessIdString + { /* T.B.D. */ + FatalError(__FILE__, __LINE__, "f_IMS_SessionId_TX_Generate: not implemented yet"); + return "0123456789abcdef0123456789abcdef"; + } + + //---------------------------------------------------------------------------- + + template (value) SIP_ETag cs_SIP_ETag(EntityTag p_EntityTag) := { + fieldName := SIP_ETAG_E, + entityTag := p_EntityTag + }; + + //---------------------------------------------------------------------------- + + template (present) UriComponents cr_SipUriComponent(template UserInfo p_UserInfo := *, + template (present) charstring p_Host, + template integer p_Port := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + sip := { + userInfo := p_UserInfo, + hostPort := { + host := p_Host, + portField := p_Port + } + } + }; + + template (present) UriComponents cr_SipUrl_SOS := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + urn := { + namespaceId := "service", + namespaceSpecificString := pattern "sos*" + } + }; + + template (present) SipUrl cr_SipUrl_Common(template (present) charstring p_Scheme, + template (present) UriComponents p_UriComponents, + template SemicolonParam_List p_Params := *) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + scheme := p_Scheme, + components := p_UriComponents, + urlParameters := p_Params, + headers := omit + }; + + template (present) SipUrl cr_SipUri_HostPort_lr(template (present) charstring p_Host, + template integer p_Port := omit) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5s130195 BASELINE MOVING 2013: change of SipUrl sic@ */ + cr_SipUrl_Common(c_sipScheme, cr_SipUriComponent(*, p_Host, p_Port), {cr_GenericParam_Common("lr"), *}); /* @sic R5s120858 change 4, 5 sic@ */ + + template (present) SipUrl cr_SipUri_HostPort(template (present) charstring p_Host, + template integer p_Port := omit) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5s130195 BASELINE MOVING 2013: change of SipUrl sic@ */ + cr_SipUrl_Common(c_sipScheme, cr_SipUriComponent(*, p_Host, p_Port)); /* @sic R5s120858 change 4, 5 sic@ */ + + template (value) UriComponents cs_SipUriComponent(template (omit) UserInfo p_UserInfo := omit, + template (value) charstring p_Host, + template (omit) integer p_Port := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + sip := { + userInfo := p_UserInfo, + hostPort := { + host := p_Host, + portField := p_Port + } + } + }; + + template (value) UriComponents cs_TelUriComponent(template (value) charstring p_Subscriber) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + tel := { + subscriber := p_Subscriber + } + }; + + template (value) UriComponents cs_UrnUriComponent(template (value) charstring p_NamespaceId, + template (value) charstring p_NamespaceSpecificString) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + urn := { + namespaceId := p_NamespaceId, + namespaceSpecificString := p_NamespaceSpecificString + } + }; + + template (value) UriComponents cs_OtherComponent(charstring p_Other) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + other := p_Other + }; + + template (value) SipUrl cs_SipUrl_Common(template (value) charstring p_Scheme, + template (value) UriComponents p_UriComponents, + template (omit) SemicolonParam_List p_Params := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + scheme := p_Scheme, + components := p_UriComponents, + urlParameters := p_Params, + headers := omit + }; + + template (value) SipUrl cs_SipUri_HostPort_lr(template (value) charstring p_Host, + template (omit) integer p_Port := omit) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5s130195 BASELINE MOVING 2013: change of SipUrl sic@ */ + cs_SipUrl_Common(c_sipScheme, cs_SipUriComponent(-, p_Host, p_Port), {cs_GenericParam("lr")} ); + + template (value) SipUrl cs_SipUri_HostPort(template (value) charstring p_Host, + template (omit) integer p_Port := omit) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5s130195 BASELINE MOVING 2013: change of SipUrl sic@ */ + cs_SipUrl_Common(c_sipScheme, cs_SipUriComponent(-, p_Host, p_Port)); + + template (value) SipUrl cs_SipUri_UserHostPort(charstring p_UserName, + template (value) charstring p_Host, + template (omit) integer p_Port := omit) := + /* @status APPROVED (IMS) */ + cs_SipUrl_Common(c_sipScheme, cs_SipUriComponent(cs_UserInfo(p_UserName), p_Host, p_Port)); + + //---------------------------------------------------------------------------- + + template (value) SubscriptionState cs_SubscriptionStateDef(charstring p_SubstateValue, + charstring p_Expires) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := SUBSCRIPTION_STATE_E, + subState := p_SubstateValue, + substateParams := { + cs_GenericParam("expires", p_Expires) + } + }; + + template (value) SubscriptionState cs_SubscriptionState_Active(charstring p_Expires := "600000") := cs_SubscriptionStateDef("active", p_Expires); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (value) SubscriptionState cs_SubscriptionState_Terminated := cs_SubscriptionStateDef("terminated", "0"); /* @status APPROVED (IMS) */ + + template (present) SubscriptionState cr_SubscriptionState(charstring p_SubstateValue, + template SemicolonParam_List p_SubexpParams) := + { + fieldName := SUBSCRIPTION_STATE_E, + subState := p_SubstateValue, + substateParams := p_SubexpParams + }; + + //---------------------------------------------------------------------------- + + template (present) Supported cr_Supported(OptionTag_List p_RequestedTags) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5-133629: handling of option tags in Supported and Require headers sic@ */ + fieldName := SUPPORTED_E, + optionsTags := f_SIP_OptionTagListRX(p_RequestedTags) + }; + + template (present) Supported cr_Supported_Register := cr_Supported(f_SIP_Register_SupportedTagList(pc_IMS_GRUUsInSIP)); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + template (value) Supported cs_Supported(template (value) OptionTag_List p_TagList) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + fieldName := SUPPORTED_E, + optionsTags := p_TagList + }; + + //---------------------------------------------------------------------------- + + template (present) To cr_ToCommon(template (present) SipUrl p_SipUrl, + template SemicolonParam_List p_Params := *) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := TO_E, + addressField := f_Addr_Union_RX(p_SipUrl), + toParams := p_Params + }; + + template (present) To cr_ToDef(template (present) SipUrl p_SipUrl, + template SemicolonParam_List p_Params := *) := cr_ToCommon(p_SipUrl, p_Params); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + @sic R5s130378 change 3 sic@ */ + + template (present) To cr_ToWithTag(template (present) SipUrl p_SipUrl, + template (present) charstring p_Tag := ?) := cr_ToCommon(p_SipUrl, {cr_GenericParam(c_tagId, p_Tag), *}); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + @sic R5s130183 sic@ */ + + template (value) To cs_ToDef(template (value) SipUrl p_SipUrl, + template (omit) SemicolonParam_List p_Params := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := TO_E, + addressField := { + nameAddr := cs_NameAddr(p_SipUrl) + }, + toParams := p_Params + }; + + template (value) To cs_ToWithTag(template (value) SipUrl p_SipUrl, + template (value) charstring p_Tag) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cs_ToDef(p_SipUrl, { cs_GenericParam(c_tagId, p_Tag) }); + + //---------------------------------------------------------------------------- + /* + * @desc build up receive template for paramter list to be used in the Via header + * @param p_Rport (default value: omit) + * @return template (present) SemicolonParam_List + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_ViaParamsRX(template GenericParam p_Rport := omit) return template (present) SemicolonParam_List + { /* @sic R5s130187 change 6: "*" needed at the end of the list sic@ */ + var template (present) SemicolonParam_List v_ParamList; + var template (present) GenericParam v_Branch := cr_GenericParam(c_branchId, pattern c_branchCookie & "*"); // @sic R5s120530 change 1.9 sic@ + + if (ispresent(p_Rport)) { + v_ParamList := { v_Branch, p_Rport, * }; + } else { + v_ParamList := { v_Branch, * }; + } + + return v_ParamList; + } + + template (present) ViaBody cr_ViaBody(template (present) charstring p_Transport, + template (present) HostPort p_SendBy, + template (present) SemicolonParam_List p_ViaParams := f_ViaParamsRX()) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + sentProtocol := { + protocolName := c_sipName, + protocolVersion := c_sipVersion, + transport := p_Transport + }, + sentBy := p_SendBy, + viaParams := p_ViaParams + }; + + template (present) Via cr_ViaDef(template (present) charstring p_Transport := ?, + template (present) HostPort p_HostPort := cr_HostPort(?, *), + template GenericParam p_Rport := omit) := + { /* for initial request p_Rport may need to be set to "cr_GenericParam("rport", ?)" see 34.229-1 A.1.1 condition A1 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := VIA_E, + viaBody := { + cr_ViaBody(p_Transport, p_HostPort, f_ViaParamsRX(p_Rport)) + } + }; + + template (present) Via cr_ViaInitialReg(template (present) charstring p_Transport := ?, + template (present) HostPort p_HostPort := cr_HostPort(?, *)) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cr_ViaDef(p_Transport, p_HostPort, cr_GenericParam_Common("rport", omit)); // @sic R5s120907 change 8 - rport has no value sic@ + + + /* + * @desc Via header to be used for responses sent by the UE + * @param p_ViaRequest + * @return template (present) Via + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_Via_ResponseRX(template (value) Via p_ViaRequest) return template (present) Via + { /* @sic R5s140350: as format of IPv6 addresses may change we need to check host addresses seperately sic@ */ + var template (present) Via v_ViaRespone := p_ViaRequest; + var integer i; + + for (i:=0; i < lengthof(v_ViaRespone.viaBody); i:=i+1) { + v_ViaRespone.viaBody[i].sentBy.host := ?; + } + return v_ViaRespone; + } + + /* + * @desc return Via parameters to be sent to the UE + * @param p_Branch + * @param p_SigCompParam (default value: omit) + * @return template (value) SemicolonParam_List + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_ViaParamsTX(template (value) charstring p_Branch, + template (omit) GenericParam p_SigCompParam := omit) return template (value) SemicolonParam_List + { + var template (value) SemicolonParam_List v_ParamList; + v_ParamList[0] := cs_GenericParam(c_branchId, p_Branch); + if (isvalue(p_SigCompParam)) { + v_ParamList[1] := valueof(p_SigCompParam); + } + return v_ParamList; + } + + template (value) ViaBody cs_ViaBody(template (value) charstring p_Transport, + template (value) HostPort p_SendBy, + template (omit) SemicolonParam_List p_ViaParams := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + sentProtocol := { + protocolName := c_sipName, + protocolVersion := c_sipVersion, + transport := p_Transport + }, + sentBy := p_SendBy, + viaParams := p_ViaParams + }; + + template (value) Via cs_Via(template (value) ViaBody_List p_BodyList) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := VIA_E, + viaBody := p_BodyList + }; + + //---------------------------------------------------------------------------- + + template (value) WwwAuthenticate cs_WwwAuthChallenge(charstring p_Realm, + charstring p_Nonce, + charstring p_Opaque := tsc_IMS_Opaque, + charstring p_Algorithm := tsc_AKAv1_MD5) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5s130794 change 2: new parameter p_Algorithm sic@ */ + fieldName := WWW_AUTHENTICATE_E, + challenge := { + digestCln := { + cs_GenericParamQuoted("realm", p_Realm), // acc. to RFC 3261 cl. 25.1 realm-value is quoted-string + cs_GenericParamToken("algorithm", p_Algorithm), // acc. to RFC 3261 cl. 25.1 algorithm is token + cs_GenericParamQuoted("qop", "auth"), // acc. to RFC 3261 cl. 25.1 qop-options are quoted-string (even though qop-value is token; @sic R5s140565 change 4 sic@) + cs_GenericParamQuoted("nonce", p_Nonce), // acc. to RFC 3261 cl. 25.1 nonce-value is quoted-string + cs_GenericParamQuoted("opaque", p_Opaque) // acc. to RFC 3261 cl. 25.1 opaque is quoted-string + } + } + }; + + /******************************************************************************/ + /* AuxiliaryFunctions */ + /******************************************************************************/ + + /* + * @desc returns the tag from the From header (NOTE: there has to be a from-tag) + * @param p_MessageHeader + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_MessageHeader_GetFromTag(template (value) MessageHeader p_MessageHeader) return charstring + { + return f_SIP_SemicolonParamList_GetParamValue(p_MessageHeader.fromField.fromParams, c_tagId); + } + + /* + * @desc returns the tag from the To header or omit when there is no to-tag + * (in contrast to the From header the tag may be missing in the To header) + * @param p_MessageHeader + * @return template (omit) charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_MessageHeader_GetToTag(template (value) MessageHeader p_MessageHeader) return template (omit) charstring + { /* @sic R5w140111: GenValue sic@ */ + var template (omit) GenericParam v_GenericParam := f_SIP_SemicolonParamList_GetParam(p_MessageHeader.toField.toParams, c_tagId); + var template (omit) charstring v_ToTag := omit; + + if (ispresent(v_GenericParam)) { + v_ToTag := f_GenericParam_GetValue(v_GenericParam); + } + return v_ToTag; + } + + //**************************************************************************** + // auxilliary functions to build templates + //---------------------------------------------------------------------------- + /* + * @desc return string representing given IntegrityAlgorithm + * @param p_IntegrityAlgorithm + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_IntegrityAlgorithm_String(IPsec_IntegrityAlgorithm_Type p_IntegrityAlgorithm) return charstring + { + var charstring v_String := ""; + + select (p_IntegrityAlgorithm) { + case (hmac_md5_96) { + v_String := tsc_HMAC_MD5_96; + } + case (hmac_sha_1_96) { + v_String := tsc_HMAC_SHA_1_96; + } + } + return v_String; + } + + /* + * @desc return string representing given CipheringAlgorithm + * @param p_CipheringAlgorithm + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_CipheringAlgorithm_String(IPsec_CipheringAlgorithm_Type p_CipheringAlgorithm) return charstring + { + var charstring v_String := ""; + + select (p_CipheringAlgorithm) { + case (des_ede3_cbc) { + v_String := "des-ede3-cbc"; + } + case (aes_cbc) { + v_String := "aes-cbc"; + } + case (nociph) { + v_String := "null"; // @sic R5s130586 change 14 sic@ + } + } + return v_String; + } + + //---------------------------------------------------------------------------- + + template (value) UserInfo cs_UserInfo(charstring p_UserName, + template (omit) charstring p_Password := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + userOrTelephoneSubscriber := p_UserName, + password := p_Password + }; + + template (present) UserInfo cr_UserInfo(charstring p_UserName, + template charstring p_Password := *) := + { /* @status APPROVED (IMS) */ + userOrTelephoneSubscriber := p_UserName, + password := p_Password + }; + + /* + * @desc Build a SipUrl structure based on an URI which is either a tel or sip identity, + * e.g. "sip:PublicId1@3gpp.org" or "tel:+358-555-1234567" + * where scheme is "sip" or "tel" or "urn". + * The returned SipUrl structure is used for building send or receive templates. + * (see RFC 3261 cl. 19.1.1, examples in cl. 19.1.3 for sip uri; + * see RFC 3986 for URIs in general) + * @param p_URI + * @return template (value) SipUrl + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_SIP_ParseURI(charstring p_URI) return template (value) SipUrl + { /* @sic R5s130195 BASELINE MOVING 2013: change of SipUrl sic@ */ + var template (present) charstring v_Pattern; + var template (value) UriComponents v_UriComponents; + var template (omit) UserInfo v_UserInfo := omit; + var charstring v_Host; + var charstring v_Scheme; + var charstring v_HierPart; + var charstring v_UserInfoString; + var charstring v_UserName; + + v_Pattern := pattern "([a-z]#(3,4)):(*)"; // @sic R5s130187 change 8: "pattern" sic@ + v_Scheme := regexp(p_URI, v_Pattern, 0); + v_HierPart := regexp(p_URI, v_Pattern, 1); + + select (v_Scheme) { + case (c_sipScheme) { // sip uri acc. to RFC 3261 cl. 19.1.1 + v_Pattern := pattern "(*)@(*)"; // @sic R5s130187 change 8: "pattern" sic@ + v_UserInfoString := regexp(v_HierPart, v_Pattern, 0); + if (v_UserInfoString == "") { // sip uri does not have user info e.g. "sip:biloxi.com" or sip:[2001:db8:1::139] + v_Host := v_HierPart; + } else { // sip uri has user info + v_Host := regexp(v_HierPart, v_Pattern, 1); + v_Pattern := pattern "(*):(*)"; // @sic R5s130187 change 8: "pattern" sic@ + v_UserName := regexp(v_UserInfoString, v_Pattern, 0); + if (v_UserName == "") { // user info but no password e.g. "sip:alice@atlanta.com" + v_UserInfo := cs_UserInfo(v_UserInfoString); + } else { // user info with password e.g. "sip:alice:secretword@atlanta.com" + v_UserInfo := cs_UserInfo(v_UserName, regexp(v_UserInfoString, v_Pattern, 1)); + } + } + v_UriComponents := cs_SipUriComponent(v_UserInfo, v_Host); + } + case (c_telScheme) { // tel uri acc. to RFC 3966 + v_UriComponents := cs_TelUriComponent(v_HierPart); + } + case (c_urnScheme) { // urn uri for emergency calls e.g. "urn:service:sos" + v_Pattern := pattern "(*):(*)"; // @sic R5s130495 Change 11 sic@ + v_UriComponents := cs_UrnUriComponent(regexp(v_HierPart, v_Pattern, 0), regexp(v_HierPart, v_Pattern, 1)); + } + case else { + v_UriComponents := cs_OtherComponent(v_HierPart); + } + } + return cs_SipUrl_Common(v_Scheme, v_UriComponents); + } + + /* + * @desc Built receive template for SipUrl + * @param p_URI + * @param p_Port (default value: omit) + * @param p_LrParam (default value: omit) + * @return template (present) SipUrl + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_BuildSipUri_RX(charstring p_URI, + template integer p_Port := omit, + template GenericParam p_LrParam := omit) return template (present) SipUrl + { + var template (present) SipUrl v_SipUrl := fl_SIP_ParseURI(p_URI); + + if (ischosen(v_SipUrl.components.sip)) { /* @sic R5s130195 BASELINE MOVING 2013: change of SipUrl sic@ + @sic R5s140020 change 11: p_Port may be * therefore shall not be checked to be present sic@ */ + v_SipUrl.components.sip.hostPort.portField := p_Port; + } + if (ispresent(p_LrParam)) { + v_SipUrl.urlParameters := {p_LrParam, *}; + } else { + v_SipUrl.urlParameters := *; + } + return v_SipUrl; + } + + /* + * @desc Build SipUrl template to be used for receiving + * the URI gets the "lr" parameter indication "loose rooting" acc. to RFC 3261: + * to be used in the Route or Record-Route headers to indicate that the network element separates the destination of the request (present in the Request-URI) + * @param p_URI + * @param p_Port (default value: omit) + * @return template (present) SipUrl + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_SIP_BuildSipUri_lr_RX(charstring p_URI, + template integer p_Port := omit) return template (present) SipUrl + { + return f_SIP_BuildSipUri_RX(p_URI, p_Port, cr_GenericParam_Common("lr", omit)); + } + + /* + * @desc Build SipUrl template to be used for sending + * @param p_URI + * @param p_Port (default value: omit) + * @param p_LrParam (default value: omit) + * @return template (value) SipUrl + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_BuildSipUri_TX(charstring p_URI, + template (omit) integer p_Port := omit, + template (omit) GenericParam p_LrParam := omit) return template (value) SipUrl + { + var template (value) SipUrl v_SipUrl := fl_SIP_ParseURI(p_URI); + + if (isvalue(p_Port) and ischosen(v_SipUrl.components.sip)) { /* @sic R5s130195 BASELINE MOVING 2013: change of SipUrl sic@ */ + v_SipUrl.components.sip.hostPort.portField := p_Port; + } + if (isvalue(p_LrParam)) { + v_SipUrl.urlParameters := {p_LrParam}; + } + return v_SipUrl; + } + + /* + * @desc Build SipUrl template to be used for sending + * the URI gets the "lr" parameter indication "loose rooting" acc. to RFC 3261: + * to be used in the Route or Record-Route headers to indicate that the network element separates the destination of the request (present in the Request-URI) + * from the set of proxies that need to be visited along the way (present in the Route header field) + * @param p_URI + * @param p_Port (default value: omit) + * @return template (value) SipUrl + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_BuildSipUri_lr_TX(charstring p_URI, + template (omit) integer p_Port := omit) return template (value) SipUrl + { + return f_SIP_BuildSipUri_TX(p_URI, p_Port, cs_GenericParam("lr")); + } + + /* + * @desc convert SipUrl to string + * @param p_SipUrl + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_SipUrl2Str(SipUrl p_SipUrl) return charstring + { /* @sic R5s130195 BASELINE MOVING 2013: change of SipUrl sic@ */ + var SipUriComponents v_SipUriComponents; + var charstring v_String := p_SipUrl.scheme & ":"; + var charstring v_Host; + + select (p_SipUrl.scheme) { + case (c_sipScheme) { + v_SipUriComponents := p_SipUrl.components.sip; + if (ispresent(v_SipUriComponents.userInfo)) { + v_String := v_String & v_SipUriComponents.userInfo.userOrTelephoneSubscriber & "@" ; // @sic R5s120530 change 1.3 sic@ + } + v_Host := v_SipUriComponents.hostPort.host; + if (f_IpAddressIsIPv6(v_Host)) { v_Host := "[" & v_Host & "]"; } // @sic R5s130586 change 15 sic@ + v_String := v_String & v_Host; // @sic R5s120530 change 1.3 sic@ + if (ispresent(v_SipUriComponents.hostPort.portField)) { + v_String := v_String & ":" & int2str(v_SipUriComponents.hostPort.portField); + } + } + case (c_telScheme) { + v_String := v_String & p_SipUrl.components.tel.subscriber; + } + case (c_urnScheme) { + v_String := v_String & p_SipUrl.components.urn.namespaceId & ":" & p_SipUrl.components.urn.namespaceSpecificString; // @sic R5s140169 change 2 sic@ + } + case else { + v_String := v_String & p_SipUrl.components.other; + } + } + return v_String; + } + + /* + * @desc encode SipUrl as string + * @param p_SipUrl + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_SipUrl_GetPublicUserIdentity(SipUrl p_SipUrl) return charstring + { /* @sic R5s130195 BASELINE MOVING 2013: change of SipUrl sic@ */ + var SipUriComponents v_SipUriComponents; + var charstring v_PublicUserIdentity := ""; + + if (not ischosen(p_SipUrl.components.sip)) { + f_ErrorLog(__FILE__, __LINE__, "SipUrl is not a SIP URI"); + } + else { + v_SipUriComponents := p_SipUrl.components.sip; + if (not ispresent(v_SipUriComponents.userInfo)) { + f_ErrorLog(__FILE__, __LINE__, "SipUrl does not have user info"); + } + else { + v_PublicUserIdentity := p_SipUrl.scheme & ":" & v_SipUriComponents.userInfo.userOrTelephoneSubscriber & "@" & v_SipUriComponents.hostPort.host; + } + } + return v_PublicUserIdentity; + } + + /* + * @desc return sequence number of given message + * @param p_MessageHeader + * @return integer + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_MessageHeader_GetCseqValue(template (value) MessageHeader p_MessageHeader) return integer + { + return valueof(p_MessageHeader.cSeq.seqNumber); + } + + /* + * @desc get SipUrl from Contact header + * @param p_MessageHeader + * @return SipUrl + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_MessageHeader_GetContactSipUrl(template (value) MessageHeader p_MessageHeader) return SipUrl + { + var template (omit) Addr_Union v_Addr_Union := p_MessageHeader.contact.contactBody.contactAddresses[0].addressField; + return f_Addr_Union_GetSipUrl(v_Addr_Union); /* @sic R5s130235 - additional changes sic@ */ + } + + /* + * @desc Check Require header + * @param p_MessageHeader + * @param p_OptionTag (default value: c_tag100rel) + * @return boolean + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_MessageHeader_CheckRequire(MessageHeader p_MessageHeader, + OptionTag p_OptionTag := c_tag100rel) return boolean + { + var OptionTag_List v_OptionTags := {p_OptionTag}; + return (ispresent(p_MessageHeader.require) and match(p_MessageHeader.require, cr_Require(v_OptionTags))); + } + + //---------------------------------------------------------------------------- + /* + * @desc Build SecurityMechanism + * @param p_IntegrityAlgorithm + * @param p_CipheringAlgorithm + * @param p_Spi_Client + * @param p_Spi_Server + * @param p_SSProtClientPort + * @param p_SSProtServerPort + * @return template (value) SecurityMechanism_List + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_BuildSecurityServerParam(IPsec_IntegrityAlgorithm_Type p_IntegrityAlgorithm, + IPsec_CipheringAlgorithm_Type p_CipheringAlgorithm, + charstring p_Spi_Client, + charstring p_Spi_Server, + charstring p_SSProtClientPort, + charstring p_SSProtServerPort) return template (value) SecurityMechanism_List + { /* @sic R5s130710 - MCC160 Implementation: p_Confidentiality removed sic@ */ + var template (value) SecurityMechanism_List v_SecurityMechanism; + var integer v_ListLength1; + var integer v_ListLength2; + var template (value) SemicolonParam_List v_ParamList1; + var template (value) SemicolonParam_List v_ParamList2; + var charstring v_IntAlg := f_SIP_IntegrityAlgorithm_String(p_IntegrityAlgorithm); + var charstring v_CyphAlg := f_SIP_CipheringAlgorithm_String(p_CipheringAlgorithm); + var charstring v_OtherIntAlg; + + select (p_IntegrityAlgorithm) { + case (hmac_md5_96) { + v_OtherIntAlg := tsc_HMAC_SHA_1_96; + } + case (hmac_sha_1_96) { + v_OtherIntAlg := tsc_HMAC_MD5_96; + } + } + + v_ParamList1 := { + cs_GenericParam("alg", v_IntAlg), + cs_GenericParam("spi-c", p_Spi_Client), + cs_GenericParam("spi-s", p_Spi_Server), + cs_GenericParam("port-c", p_SSProtClientPort), + cs_GenericParam("port-s", p_SSProtServerPort), + cs_GenericParam("q", "0.9") + }; + + v_ParamList2 := { + cs_GenericParam("alg", v_OtherIntAlg), + cs_GenericParam("spi-c", p_Spi_Client), + cs_GenericParam("spi-s", p_Spi_Server), + cs_GenericParam("port-c", p_SSProtClientPort), + cs_GenericParam("port-s", p_SSProtServerPort), + cs_GenericParam("q", "0.7") + }; + + if (p_CipheringAlgorithm != nociph) { /* @sic R5s130710 - MCC160 Implementation sic@ */ + v_ListLength1 := lengthof(v_ParamList1); + v_ParamList1[v_ListLength1] := cs_GenericParam("ealg", v_CyphAlg); + v_ListLength2 := lengthof(v_ParamList2); + v_ParamList2[v_ListLength2] := cs_GenericParam("ealg", v_CyphAlg); + } + + v_SecurityMechanism := { + { + mechName := tsc_SEC_MECHANISM, + mechParams := v_ParamList1 + }, + { + mechName := tsc_SEC_MECHANISM, + mechParams := v_ParamList2 + } + }; + + return v_SecurityMechanism; + } + + //---------------------------------------------------------------------------- + /* + * @desc Function used to create a template for SecurityVerify header with same content as SecurityServer header + * @param p_IntegrityAlgorithm + * @param p_CipheringAlgorithm + * @param p_Spi_Client + * @param p_Spi_Server + * @param p_SSProtClientPort + * @param p_SSProtServerPort + * @return template (present) SecurityVerify + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_BuildSecurityVerifyHeader(IPsec_IntegrityAlgorithm_Type p_IntegrityAlgorithm, + IPsec_CipheringAlgorithm_Type p_CipheringAlgorithm, + charstring p_Spi_Client, + charstring p_Spi_Server, + charstring p_SSProtClientPort, + charstring p_SSProtServerPort) return template (present) SecurityVerify + { /* @sic R5s130710 - MCC160 Implementation: p_Confidentiality removed sic@ */ + var template (present) SecurityMechanism_List v_SecurityMechanism := f_SIP_BuildSecurityServerParam(p_IntegrityAlgorithm, + p_CipheringAlgorithm, + p_Spi_Client, + p_Spi_Server, + p_SSProtClientPort, + p_SSProtServerPort); + return cr_SecVerifyDef(v_SecurityMechanism); + } + + //---------------------------------------------------------------------------- + /* + * @desc Return the correct tag to be included in the Supported header of REGISTER messages + * @param p_GRUUsInSIP + * @return OptionTag_List + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_Register_SupportedTagList(boolean p_GRUUsInSIP) return OptionTag_List + { /* @sic R5-133629: handling of option tags in Supported and Require headers sic@ */ + var charstring v_SupportedTag; + + if (p_GRUUsInSIP) { + v_SupportedTag := "gruu"; + } + else { + v_SupportedTag := "path"; + } + return {v_SupportedTag}; + } + + //**************************************************************************** + // auxilliary functions to access SIP mesages + //---------------------------------------------------------------------------- + /* + * @desc return portnumber given in ContactUrl (if any) + * @param p_ContactUrl + * @return template (omit) PortNumber_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_ContactUrl_GetPort(SipUrl p_ContactUrl) return template (omit) PortNumber_Type + { /* @sic R5s130195 BASELINE MOVING 2013: change of SipUrl sic@ */ + var template (omit) PortNumber_Type v_PortNumber := omit; + + if (ischosen(p_ContactUrl.components.sip)) { + v_PortNumber := p_ContactUrl.components.sip.hostPort.portField; + } + return v_PortNumber; + } + + //**************************************************************************** + // auxilliary function to match URI + //---------------------------------------------------------------------------- + /* + * @desc check whether public user id represented by given SipUrl matches with public user id given as string + * @param p_UriString + * @param p_SipUrl + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_MatchURI(charstring p_UriString, + SipUrl p_SipUrl) return boolean + { + return (f_SIP_SipUrl_GetPublicUserIdentity(p_SipUrl) == p_UriString); + } + + //**************************************************************************** + // MessageHeader 'dummy' templates + //---------------------------------------------------------------------------- + + template (value) MessageHeader cs_MessageHeader_Dummy := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + accept := omit, + acceptContact := omit, + acceptEncoding := omit, + acceptLanguage := omit, + alertInfo := omit, + allow := omit, + allowEvents := omit, + authenticationInfo := omit, + authorization := omit, + callId := c_empty_CallId, + callInfo := omit, + contact := omit, + contentDisposition := omit, + contentEncoding := omit, + contentLanguage := omit, + contentLength := cs_ContentLength(0), // NOTE: may be changed to -1 to force the codec always to calculate the length (even when there is no message body at all) + contentType := omit, + cSeq := c_empty_cSeq, + date := omit, + errorInfo := omit, + event := omit, + expires := omit, + featureCaps := omit, + fromField := c_empty_From, + geolocation := omit, + geolocationRouting := omit, // @sic R5-133151 sic@ + historyInfo := omit, + inReplyTo := omit, + maxForwards := c_maxForwards70, + mimeVersion := omit, + minExpires := omit, + minSE := omit, + organization := omit, + pAccessNetworkInfo := omit, + pAssertedID := omit, + pAssertedService := omit, + pAssociatedURI := omit, + path := omit, + pCalledPartyID := omit, + pChargingFunctionAddresses := omit, + pChargingVector := omit, + pEarlyMedia := omit, + pMediaAuthorization := omit, + pPreferredID := omit, + pPreferredService := omit, + priority := omit, + privacy := omit, + proxyAuthenticate := omit, + proxyAuthorization := omit, + proxyRequire := omit, + pVisitedNetworkID := omit, + rAck := omit, + rSeq := omit, + reason := omit, + recordRoute := omit, + requestDisposition := omit, + referredBy := omit, + referTo := omit, + referSub := omit, + replaces := omit, + replyTo := omit, + require := omit, + retryAfter := omit, + route := omit, + securityClient := omit, + securityServer := omit, + securityVerify := omit, + server := omit, + serviceRoute := omit, + sessionExpires := omit, + sessionId := omit, + sipETag := omit, + sipIfMatch := omit, + subject := omit, + subscriptionState := omit, + supported := omit, + timestamp := omit, + toField := c_empty_To, + unsupported := omit, + userToUser := omit, + userAgent := omit, + via := c_empty_Via, + warning := omit, + wwwAuthenticate := omit, + undefinedHeader_List := omit + }; + + template (present) MessageHeader cr_MessageHeader_Dummy := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + accept := *, + acceptContact := *, + acceptEncoding := *, + acceptLanguage := *, + alertInfo := *, + allow := *, + allowEvents := *, + authenticationInfo := *, + authorization := *, + callId := ?, + callInfo := *, + contact := *, + contentDisposition := *, + contentEncoding := *, + contentLanguage := *, + contentLength := ?, + contentType := *, + cSeq := ?, + date := *, + errorInfo := *, + event := *, + expires := *, + featureCaps := *, + fromField := ?, + geolocation := *, + geolocationRouting := *, // @sic R5-133151 sic@ + historyInfo := *, + inReplyTo := *, + maxForwards := *, + mimeVersion := *, + minExpires := *, + minSE := *, + organization := *, + pAccessNetworkInfo := *, + pAssertedID := *, + pAssertedService := *, + pAssociatedURI := *, + path := *, + pCalledPartyID := *, + pChargingFunctionAddresses := *, + pChargingVector := *, + pEarlyMedia := *, + pMediaAuthorization := *, + pPreferredID := *, + pPreferredService := *, + priority := *, + privacy := *, + proxyAuthenticate := *, + proxyAuthorization := *, + proxyRequire := *, + pVisitedNetworkID := *, + rAck := *, + rSeq := *, + reason := *, + recordRoute := *, + requestDisposition := *, + referredBy := *, + referTo := *, + referSub := *, + replaces := *, + replyTo := *, + require := *, + retryAfter := *, + route := *, + securityClient := *, + securityServer := *, + securityVerify := *, + server := *, + serviceRoute := *, + sessionExpires := *, + sessionId := *, + sipETag := *, + sipIfMatch := *, + subject := *, + subscriptionState := *, + supported := *, + timestamp := *, + toField := ?, + unsupported := *, + userToUser := *, + userAgent := *, + via := ?, + warning := *, + wwwAuthenticate := *, + undefinedHeader_List := * + }; + + //**************************************************************************** + // SIPMessages + //---------------------------------------------------------------------------- + + template (present) REGISTER_Request cr_REGISTER_Request(template (present) SipUrl p_SipUrl := ?, + template (present) MessageHeader p_MessageHeader := ?, + template MessageBody p_MessageBody := omit, + template Payload p_Payload := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + requestLine := cr_RequestLineSip(REGISTER_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := p_MessageBody, + payload := p_Payload + }; + + template (present) SUBSCRIBE_Request cr_SUBSCRIBE_Request(template (present) SipUrl p_SipUrl, + template (present) MessageHeader p_MessageHeader := ?, + template MessageBody p_MessageBody := omit, + template Payload p_Payload := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + requestLine := cr_RequestLineSip(SUBSCRIBE_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := p_MessageBody, + payload := p_Payload + }; + + template (present) INVITE_Request cr_INVITE_Request(template (present) SipUrl p_SipUrl, + template (present) MessageHeader p_MessageHeader := ?, + template MessageBody p_MessageBody := *, + template Payload p_Payload := *) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + requestLine := cr_RequestLineSip(INVITE_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := p_MessageBody, + payload := p_Payload + }; + + template (present) PUBLISH_Request cr_PUBLISH_Request(template (present) SipUrl p_SipUrl, + template (present) MessageHeader p_MessageHeader := ?, + template MessageBody p_MessageBody := *, + template Payload p_Payload := *) := + { + requestLine := cr_RequestLineSip(PUBLISH_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := p_MessageBody, + payload := p_Payload + }; + + template (present) PRACK_Request cr_PRACK_Request(template (present) SipUrl p_SipUrl, + template (present) MessageHeader p_MessageHeader := ?, + template MessageBody p_MessageBody := *, + template Payload p_Payload := *) := + { /* @status APPROVED (IMS, LTE_A) */ + requestLine := cr_RequestLineSip(PRACK_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := p_MessageBody, + payload := p_Payload + }; + + template (present) UPDATE_Request cr_UPDATE_Request(template (present) SipUrl p_SipUrl, + template (present) MessageHeader p_MessageHeader := ?, + template MessageBody p_MessageBody := ?, + template Payload p_Payload := *) := + { /* @status APPROVED (IMS, LTE_A) */ + requestLine := cr_RequestLineSip(UPDATE_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := p_MessageBody, + payload := p_Payload + }; + + template (present) ACK_Request cr_ACK_Request(template (present) SipUrl p_SipUrl, + template (present) MessageHeader p_MessageHeader := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + requestLine := cr_RequestLineSip(ACK_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := omit, + payload := omit + }; + + template (present) BYE_Request cr_BYE_Request(template (present) SipUrl p_SipUrl, + template (present) MessageHeader p_MessageHeader := ?, + template MessageBody p_MessageBody := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A) */ + requestLine := cr_RequestLineSip(BYE_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := p_MessageBody, + payload := omit // @sic R5s120530 change 3.11 sic@ + }; + + template (present) MESSAGE_Request cr_MESSAGE_Request(template (present) SipUrl p_SipUrl, + template (present) MessageHeader p_MessageHeader := ?, + template MessageBody p_MessageBody := ?, + template Payload p_Payload := *) := + { /* @status APPROVED (IMS) */ + requestLine := cr_RequestLineSip(MESSAGE_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := p_MessageBody, + payload := p_Payload + }; + + template (present) REFER_Request cr_REFER_Request(template (present) SipUrl p_SipUrl, + template (present) MessageHeader p_MessageHeader := ?) := + { + requestLine := cr_RequestLineSip(REFER_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := omit, + payload := omit + }; + + template (present) NOTIFY_Request cr_NOTIFY_Request(template (present) SipUrl p_SipUrl, + template (present) MessageHeader p_MessageHeader, + template (present) MessageBody p_MessageBody) := + { + requestLine := cr_RequestLineSip(NOTIFY_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := p_MessageBody, + payload := omit + }; + + //---------------------------------------------------------------------------- + + template (value) CANCEL_Request cs_CANCEL_Request(template (value) SipUrl p_SipUrl, + template (value) MessageHeader p_MessageHeader) := + { /* @status APPROVED (IMS, LTE_A) */ + requestLine := cs_RequestLineSip(CANCEL_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := omit, + payload := omit + }; + + + template (value) NOTIFY_Request cs_NOTIFY_Request(template (value) SipUrl p_SipUrl, + template (value) MessageHeader p_MessageHeader, + template (value) MessageBody p_MessageBody) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + requestLine := cs_RequestLineSip(NOTIFY_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := p_MessageBody, + payload := omit + }; + + template (value) INVITE_Request cs_INVITE_Request(template (value) SipUrl p_SipUrl, + template (value) MessageHeader p_MessageHeader, + template (omit) MessageBody p_MessageBody := omit) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + requestLine := cs_RequestLineSip(INVITE_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := p_MessageBody, + payload := omit + }; + + template (value) PRACK_Request cs_PRACK_Request(template (value) SipUrl p_SipUrl, + template (value) MessageHeader p_MessageHeader, + template (omit) MessageBody p_MessageBody := omit) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + requestLine := cs_RequestLineSip(PRACK_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := p_MessageBody, + payload := omit + }; + + template (value) UPDATE_Request cs_UPDATE_Request(template (value) SipUrl p_SipUrl, + template (value) MessageHeader p_MessageHeader, + template (value) MessageBody p_MessageBody) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + requestLine := cs_RequestLineSip(UPDATE_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := p_MessageBody, + payload := omit + }; + + template (value) ACK_Request cs_ACK_Request(template (value) SipUrl p_SipUrl, + template (value) MessageHeader p_MessageHeader) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + requestLine := cs_RequestLineSip(ACK_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := omit, + payload := omit + }; + + template (value) BYE_Request cs_BYE_Request(template (value) SipUrl p_SipUrl, + template (value) MessageHeader p_MessageHeader) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + requestLine := cs_RequestLineSip(BYE_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := omit, + payload := omit + }; + + template (value) MESSAGE_Request cs_MESSAGE_Request(template (value) SipUrl p_SipUrl, + template (value) MessageHeader p_MessageHeader, + template (value) MessageBody p_MessageBody) := + { /* @status APPROVED (IMS) */ + requestLine := cs_RequestLineSip(MESSAGE_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := p_MessageBody, + payload := omit + }; + + template (value) REFER_Request cs_REFER_Request(template (value) SipUrl p_SipUrl, + template (value) MessageHeader p_MessageHeader) := + { + requestLine := cs_RequestLineSip(REFER_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := omit, + payload := omit + }; + + //============================================================================ + // Responses: + //---------------------------------------------------------------------------- + + template (value) Response cs_Response(template (value) StatusLine p_StatusLine, + template (value) MessageHeader p_MessageHeader, + template (omit) MessageBody p_MessageBody := omit, + template (omit) Payload p_Payload := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + statusLine := p_StatusLine, + msgHeader := p_MessageHeader, + messageBody := p_MessageBody, + payload := p_Payload + }; + + + template (present) Response cr_Response(template (present) StatusLine p_StatusLine, + template (present) MessageHeader p_MessageHeader, + template MessageBody p_MessageBody := omit, + template Payload p_Payload := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + statusLine := p_StatusLine, + msgHeader := p_MessageHeader, + messageBody := p_MessageBody, + payload := p_Payload + }; + +} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS/IMS_SMS_Messages.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_SMS_Messages.ttcn new file mode 100644 index 0000000..a25f455 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_SMS_Messages.ttcn @@ -0,0 +1,339 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-05-24 11:27:42 +0200 (Sat, 24 May 2014) $ +// $Rev: 11320 $ +/******************************************************************************/ + +module IMS_SMS_Messages { + + import from CommonDefs all; + import from LibSip_Common all; + import from LibSip_SIPTypesAndValues all; + import from SMS_TypeDefs all; + import from SMS_Templates all; + import from IMS_CommonTemplates all; + import from IMS_SIP_Templates all; + import from IMS_Component all; + import from IMS_CommonDefs all; + import from IMS_CommonFunctions all; + import from IMS_Procedures_CallControl all; + import from IMS_Procedures_Common all; + import from IMS_CommonParameters all; + import from IMS_ASP_TypeDefs all; + import from IMS_ASP_Templates all; + import from IMS_MessageBody_Templates all; + import from IP_ASP_TypeDefs all; + import from IMS_CC_Parameters all; + + const integer tsc_MESSAGE_CSeqValue := 42; /* @status APPROVED (IMS) */ + + //============================================================================ + + template (present) SMS_SUBMIT_Type cr_SMS_SUBMIT_NoValidityPeriod := cr_SMS_SUBMIT('00'B, omit); /* @status APPROVED (IMS) */ + template (present) SMS_SUBMIT_Type cr_SMS_SUBMIT_AnyValidityPeriod := cr_SMS_SUBMIT(-, ?); /* @status APPROVED (IMS) */ + + template (present) SMS_SUBMIT_Type cr_SMS_SUBMIT_IMS := (cr_SMS_SUBMIT_NoValidityPeriod, cr_SMS_SUBMIT_AnyValidityPeriod); /* @sic R5s130235 change 5 sic@ + @status APPROVED (IMS) */ + template (present) RP_DATA_ul_Type cr_SMS_RP_DATA_ul_SUBMIT_IMS := + /* @status APPROVED (IMS) */ + /* @sic R5-133632 change 7: px_SMS_SMSC_InternationalNumber sic@ */ + cr_RP_DATA_ul_SUBMIT(cr_RP_UserData_SUBMIT(cr_SMS_SUBMIT_IMS), f_CharPacking_IA5toBCD(px_SMS_SMSC_InternationalNumber)); + + //============================================================================ + + template (value) InReplyTo cs_InReplyTo(CallidString p_CallidString) := + { /* @status APPROVED (IMS) */ + fieldName := IN_REPLY_TO_E, + callids := {p_CallidString} + }; + + template (present) InReplyTo cr_InReplyTo(CallidString p_CallidString) := + { /* @status APPROVED (IMS) */ + fieldName := IN_REPLY_TO_E, + callids := {p_CallidString, *} + }; + + template (value) SemicolonParam_List cs_AcRcParamsSMS := + { /* @status APPROVED (IMS) */ + cs_GenericParam("+g.3gpp.smsip"), + cs_GenericParam("require"), + cs_GenericParam("explicit") + }; + + + //============================================================================ + /* + * @desc encode SMS-RP-DATA + * @param p_RP_PDU + * @return octetstring + * @status APPROVED (IMS) + */ + function f_SMS_PDU_EncodeRPDATA(template (value) RP_DATA_dl_Type p_RP_PDU) return octetstring + { + var bitstring v_Bitstring := encvalue(p_RP_PDU); + var octetstring v_Octetstring := bit2oct(v_Bitstring); + return v_Octetstring; + } + + /* + * @desc decode received RP Date PDU and match against expected PDU + * @param p_EncodedSMS_Message + * @param p_ExpectedRP_DATA_ul + * @return RP_DATA_ul_Type + * @status APPROVED (IMS) + */ + function f_SMS_PDU_DecodeAndMatchRPDATA(octetstring p_EncodedSMS_Message, + template (present) RP_DATA_ul_Type p_ExpectedRP_DATA_ul) runs on IMS_PTC return RP_DATA_ul_Type + { + var bitstring v_Bitstring := oct2bit(p_EncodedSMS_Message); + var RP_DATA_ul_Type v_RP_DATA_ul; + + if (decvalue(v_Bitstring, v_RP_DATA_ul) != 0) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "cannot decode RP_DATA_ul_Type"); + } + if (not match(v_RP_DATA_ul, p_ExpectedRP_DATA_ul)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "RP_DATA_ul does not match"); + } + return v_RP_DATA_ul; + } + + /* + * @desc encode RP ACK + * @param p_RP_PDU + * @return octetstring + * @status APPROVED (IMS) + */ + function f_SMS_PDU_EncodeRPACK(template (value) RP_ACK_Type p_RP_PDU) return octetstring + { + var bitstring v_Bitstring := encvalue(p_RP_PDU); + var octetstring v_Octetstring := bit2oct(v_Bitstring); + return v_Octetstring; + }; + + /* + * @desc decode and match SMS RP-ACK + * @param p_EncodedSMS_Message + * @param p_ExpectedRP_ACK + * @return RP_ACK_Type + * @status APPROVED (IMS) + */ + function f_SMS_PDU_DecodeAndMatchRPACK(octetstring p_EncodedSMS_Message, + template (present) RP_ACK_Type p_ExpectedRP_ACK) runs on IMS_PTC return RP_ACK_Type + { + var bitstring v_Bitstring := oct2bit(p_EncodedSMS_Message); + var RP_ACK_Type v_RP_ACK; + + if (decvalue(v_Bitstring, v_RP_ACK) != 0) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "cannot decode RP_ACK_Type"); + } + + if (not match(v_RP_ACK, p_ExpectedRP_ACK)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "RP_ACK does not match"); + } + return v_RP_ACK; + }; + + //---------------------------------------------------------------------------- + /* + * @desc common MESSAGE for A.7.1, A.7.4, A.7.5 + * @param p_Protocol + * @param p_CSeqValue + * @param p_RequestDispositionDirective + * @param p_SessionIdSupported (default value: false) + * @return template (value) MessageHeader + * @status APPROVED (IMS) + */ + function f_IMS_MessageRequest_MessageHeaderTX_Common(InternetProtocol_Type p_Protocol, + integer p_CSeqValue, + Directive p_RequestDispositionDirective, + boolean p_SessionIdSupported := false) runs on IMS_PTC return template (value) MessageHeader + { /* @sic R5-131269: new function to be used for A.7.1, A.7.4, A.7.5; R5-133705 sic@ */ + var charstring v_P_CSCF_Address := f_IMS_PTC_Pcscf_Get(); + var template (value) SipUrl v_IP_SM_GW_SipUrl := cs_SipUri_UserHostPort("SMSGateway", v_P_CSCF_Address); + var template (value) SipUrl v_SipUrlTo := f_IMS_PTC_ImsInfo_GetSipUriTX(defaultId); + var charstring v_ProtocolString := f_IMS_ConvertTransportProtocolToString(p_Protocol); + var integer v_Port_ps := f_IMS_PTC_GetPort_ps(); + var template (value) MessageHeader v_MessageHeader_Message := cs_MessageHeader_Dummy; + var charstring v_CallIdString := f_IMS_PTC_GenerateCallId("MESSAGE"); /* @sic R5-131269: unique call id different from Call-Id received in the original MO SMS sic@ */ + var template (value) ViaBody_List v_ViaBodyList := { cs_ViaBody(v_ProtocolString, cs_HostPort(v_P_CSCF_Address, v_Port_ps), f_ViaParamsTX(f_IMS_PTC_ImsInfo_GetNextBranch())) }; + + v_MessageHeader_Message.via := cs_Via(v_ViaBodyList); + v_MessageHeader_Message.fromField := cs_From(v_IP_SM_GW_SipUrl, f_IMS_GenerateTag("MESSAGE", "From")); + v_MessageHeader_Message.toField := cs_ToDef(v_SipUrlTo); + v_MessageHeader_Message.callId := cs_CallId(v_CallIdString); + v_MessageHeader_Message.cSeq := cs_CseqDef(p_CSeqValue, "MESSAGE"); + v_MessageHeader_Message.maxForwards := cs_MaxForwardsDef; + v_MessageHeader_Message.requestDisposition := cs_RequestDisposition({p_RequestDispositionDirective}); + v_MessageHeader_Message.contentType := cs_ContentType("application/vnd.3gpp.sms"); + v_MessageHeader_Message.pCalledPartyID := cs_PCalledPartyId(v_SipUrlTo); /* @sic R5-131269, R5s130370 change 8: same value as in the To header sic@ */ + + if (p_SessionIdSupported) { /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Message.sessionId := cs_SessionId(f_IMS_SessionId_TX_Generate(v_CallIdString)); + } + + return v_MessageHeader_Message; + } + + /* + * @desc MESSAGE acc. to TS 34.229 A.7.1 + * @param p_Protocol + * @param p_CSeqValue (default value: tsc_MESSAGE_CSeqValue) + * @return template (value) MessageHeader + * @status APPROVED (IMS) + */ + function f_IMS_MessageRequest_MessageHeaderTX_MT_SMS(InternetProtocol_Type p_Protocol, + integer p_CSeqValue := tsc_MESSAGE_CSeqValue) runs on IMS_PTC return template (value) MessageHeader + { /* @sic R5-131269 R5-133705 sic@ */ + var template (value) MessageHeader v_MessageHeader_Message; + + v_MessageHeader_Message := f_IMS_MessageRequest_MessageHeaderTX_Common(p_Protocol, p_CSeqValue, "no-fork"); + v_MessageHeader_Message.pAssertedID := cs_PAssertedId(f_Addr_Union_GetSipUrl(v_MessageHeader_Message.fromField.addressField)); // same as in From header + v_MessageHeader_Message.acceptContact := cs_AcceptContact(cs_AcRcParamsSMS); + + return v_MessageHeader_Message; + } + + /* + * @desc MESSAGE acc. to TS 34.229 A.7.4 + * @param p_Protocol + * @param p_CallIdMO + * @param p_CSeqValue (default value: tsc_MESSAGE_CSeqValue) + * @return template (value) MessageHeader + * @status APPROVED (IMS) + */ + function f_IMS_MessageRequest_MessageHeaderTX_SubmissionReport(InternetProtocol_Type p_Protocol, + CallidString p_CallIdMO, + integer p_CSeqValue := tsc_MESSAGE_CSeqValue) runs on IMS_PTC return template (value) MessageHeader + { /* @sic R5-131269 R5-133705 sic@ */ + var template (value) SipUrl v_SipUrl_PAssertedId := f_SIP_BuildSipUri_TX(tsc_IMS_PSI_SMSC); + var template (value) MessageHeader v_MessageHeader_Message; + + v_MessageHeader_Message := f_IMS_MessageRequest_MessageHeaderTX_Common(p_Protocol, p_CSeqValue, "fork"); + v_MessageHeader_Message.pAssertedID := cs_PAssertedId(v_SipUrl_PAssertedId); + v_MessageHeader_Message.inReplyTo := cs_InReplyTo(p_CallIdMO); /* @sic R5-131269: The value of the Call-Id received in the original MO SMS sic@ */ + + return v_MessageHeader_Message; + } + + /* + * @desc MESSAGE acc. to TS 34.229 A.7.5 + * @param p_Protocol + * @param p_CSeqValue + * @return template (value) MessageHeader + * @status APPROVED (IMS) + */ + function f_IMS_MessageRequest_MessageHeaderTX_StatusReport(InternetProtocol_Type p_Protocol, + integer p_CSeqValue) runs on IMS_PTC return template (value) MessageHeader + { /* @sic R5-131269 R5-133705 sic@ */ + var template (value) SipUrl v_SipUrl_PAssertedId := f_SIP_BuildSipUri_TX(tsc_IMS_PSI_SMSC); + var template (value) MessageHeader v_MessageHeader_Message; + + v_MessageHeader_Message := f_IMS_MessageRequest_MessageHeaderTX_Common(p_Protocol, p_CSeqValue, "no-fork"); + v_MessageHeader_Message.pAssertedID := cs_PAssertedId(v_SipUrl_PAssertedId); + v_MessageHeader_Message.acceptContact := cs_AcceptContact(cs_AcRcParamsSMS); + + return v_MessageHeader_Message; + } + + //---------------------------------------------------------------------------- + /* + * @desc common MESSAGE for A.7.2, A.7.3, A.7.6 + * @param p_SipUrl_To + * @param p_SessionIdSupported (default value: false) + * @return template (present) MessageHeader + * @status APPROVED (IMS) + */ + function f_IMS_MessageRequest_MessageHeaderRX_Common(template (present) SipUrl p_SipUrl_To, + boolean p_SessionIdSupported := false) runs on IMS_PTC return template (present) MessageHeader + { /* @sic R5s130370 change 3 - additional parameter p_SipUrl_To; R5-133705 sic@ */ + var template (present) MessageHeader v_MessageHeader_Message := cr_MessageHeader_Dummy; + var integer v_Port_us := f_IMS_PTC_GetPort_us(); + // @sic R5s120530 changes 2.3, 2.5, 2.6 sic@ + v_MessageHeader_Message.via := cr_ViaDef(-, cr_HostPort(?, v_Port_us)); + v_MessageHeader_Message.fromField := cr_FromWithTag(?); + v_MessageHeader_Message.toField := cr_ToDef(p_SipUrl_To); /* @sic R5s130370 change 3 sic@ */ + v_MessageHeader_Message.callId := cr_CallId(?); /* to be checked when message has been received */ + v_MessageHeader_Message.sessionId := f_IMS_SessionId_RX_IfSupported(p_SessionIdSupported); /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Message.cSeq := cr_CseqDef(?, "MESSAGE"); + v_MessageHeader_Message.maxForwards := cr_MaxForwardsDef; + v_MessageHeader_Message.contentType := cr_ContentType("application/vnd.3gpp.sms"); + + return v_MessageHeader_Message; + } + + /* + * @desc MESSAGE for MO SMS (see TS 34.229, A.7.3) + * @param p_SipUrl_To + * @return template (present) MessageHeader + * @status APPROVED (IMS) + */ + function f_IMS_MessageRequest_MessageHeaderRX_MO_SMS(template (present) SipUrl p_SipUrl_To) runs on IMS_PTC return template (present) MessageHeader + { /* @sic R5s130370 change 3 - additional parameter p_SipUrl_To; R5-133705 sic@ */ + var template (present) MessageHeader v_MessageHeader_Message; + var integer v_Port_ps := f_IMS_PTC_GetPort_ps(); + var charstring v_Pcscf := f_IMS_PTC_Pcscf_Get(); + + v_MessageHeader_Message := f_IMS_MessageRequest_MessageHeaderRX_Common(p_SipUrl_To); + + if (f_IMS_PTC_SecurityScheme_IsGiba()) { + v_MessageHeader_Message.pAccessNetworkInfo := cr_PAccessNetworkInfoDef(f_IMS_PTC_RanType_GetString()); + } + v_MessageHeader_Message.route := cr_RouteSubs(v_Pcscf, v_Port_ps, px_IMS_Scscf); + + return v_MessageHeader_Message; + } + + + /* + * @desc MESSAGE for SMS Delivery Report acc. to TS 34.229, A.7.6 or A.7.2 + * @param p_SipUrl_To + * @param p_CallidString + * @return template (present) MessageHeader + * @status APPROVED (IMS) + */ + function f_IMS_MessageRequest_MessageHeaderRX_DeliveryReport(template (present) SipUrl p_SipUrl_To, + CallidString p_CallidString) runs on IMS_PTC return template (present) MessageHeader + { /* @sic R5s130370 change 3 - additional parameter p_SipUrl_To; R5-133705: "InReplyTo" sic@ */ + var template (present) MessageHeader v_MessageHeader_Message; + var template (omit) integer v_UE_Release := f_IMS_PTC_GetUE_Release(); + + v_MessageHeader_Message := f_IMS_MessageRequest_MessageHeaderRX_Common(p_SipUrl_To); + if (ispresent(v_UE_Release) and (valueof(v_UE_Release) >= 11)) { /* @sic R5s130739 MCC160 implementation sic@ */ + v_MessageHeader_Message.inReplyTo := cr_InReplyTo(p_CallidString); + } + + return v_MessageHeader_Message; + } + + //---------------------------------------------------------------------------- + /* + * @desc To receive and check INVITE for MO call establishment + * @param p_SipUrlRequestLine + * @param p_MessageHeader + * @param p_PrevCallIdList (default value: {}) + * @return IMS_DATA_REQ + * @status APPROVED (IMS) + */ + function f_IMS_MessageRequest_Receive(template (present) SipUrl p_SipUrlRequestLine, + template (present) MessageHeader p_MessageHeader, + CharStringList_Type p_PrevCallIdList := {}) runs on IMS_PTC return IMS_DATA_REQ + { + var IMS_DATA_REQ v_IMS_DATA_REQ; + var MessageHeader v_MessageHeader; + var InternetProtocol_Type v_Protocol; + + IMS_Server.receive(car_IMS_Message_Request(cr_MESSAGE_Request(p_SipUrlRequestLine, p_MessageHeader, cr_MessageBody_SMS(?)))) -> value v_IMS_DATA_REQ; + v_MessageHeader := v_IMS_DATA_REQ.Request.Message.msgHeader; + v_Protocol := v_IMS_DATA_REQ.RoutingInfo.Protocol; + f_IMS_MessageHeader_Request_CheckVia(v_MessageHeader, v_Protocol); // check whether via contains "SIP URI with IP address or FQDN" (see @sic R5s120727 sic@) + f_IMS_MessageHeader_CheckCallId(v_MessageHeader, p_PrevCallIdList); // @sic R5-133705: check that Call-ID is different from the Call-ID values used in preceding requests of this test case sic@ + + return v_IMS_DATA_REQ; + } + +} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS/IMS_XML_PIDF_Templates.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_XML_PIDF_Templates.ttcn new file mode 100644 index 0000000..84df9c6 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_XML_PIDF_Templates.ttcn @@ -0,0 +1,80 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 17:10:15 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12171 $ +/******************************************************************************/ + +module IMS_XML_PIDF_Templates { +// import from urn_ietf_params_xml_ns_pidf language "XSD" all; + // import from urn_ietf_params_xml_ns_pidf_geopriv10 language "XSD" all; + import from urn_ietf_params_xml_ns_pidf all; + import from urn_ietf_params_xml_ns_pidf_geopriv10 all; + import from XSD all; + + group Alias_Definitions { + + type Geopriv_1 Geolocation_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + type Presence_1 PIDF_Presence_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type Tuple PIDF_Tuple_Type; /* @status */ + type Tuple.note_list PIDF_Tuple_Note_List_Type; /* @status */ + type Presence.tuple_list PIDF_Presence_Tuple_List_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type Status PIDF_Status_Type; /* @status */ + type Status.elem_list PIDF_Status_ElemList_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type Basic PIDF_Basic_Type; /* @status */ + type Presence.note_list PIDF_Presence_Note_List_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + + + } with { encode "XML"}; + + //---------------------------------------------------------------------------- + + template (present) Geolocation_Type cr_Geolocation_Any := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + location_info := ?, + usage_rules := ?, + method := *, + provided_by := *, + elem_list := ? + }; + + //---------------------------------------------------------------------------- + + template (present) PIDF_Status_Type cr_PIDF_Status_Any (template PIDF_Basic_Type p_PIDF_Basic := *, + template (present) PIDF_Status_ElemList_Type p_PIDF_Status_ElemList := ?) := + { /* @status */ + basic := p_PIDF_Basic, + elem_list := p_PIDF_Status_ElemList + }; + + template (present) PIDF_Tuple_Type cr_PIDF_Tuple_Any (template AnyURI p_Id := ?, + template (present) PIDF_Status_Type p_PIDF_Status := ?, + template Contact p_Contact := *, + template (present) PIDF_Tuple_Note_List_Type p_PIDF_Notes := ?, + template DateTime p_Timestamp := *) := + { /* @status */ + id := p_Id, + status := p_PIDF_Status, + elem_list := {}, + contact := p_Contact, + note_list := p_PIDF_Notes, + timestamp := p_Timestamp + }; + + template (present) PIDF_Presence_Type cr_PIDF_Presence_Any (template AnyURI p_Entity := ?, + template (present) PIDF_Presence_Tuple_List_Type p_PIDF_Tuples := ?, + template (present) PIDF_Presence_Note_List_Type p_PIDF_Notes := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + entity := p_Entity, + tuple_list := p_PIDF_Tuples, + note_list := p_PIDF_Notes, + elem_list := {} + }; + +} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS/IMS_XML_Templates.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_XML_Templates.ttcn new file mode 100644 index 0000000..49de506 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS/IMS_XML_Templates.ttcn @@ -0,0 +1,199 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-10 10:55:39 +0200 (Wed, 10 Sep 2014) $ +// $Rev: 12185 $ +/******************************************************************************/ + +module IMS_XML_Templates { + import from CommonDefs all; + import from IMS_CommonDefs all; + // import from urn_ietf_params_xml_ns_reginfo language "XSD" all; +// import from urn_ietf_params_xml_ns_gruuinfo language "XSD" all; +// import from urn_ietf_params_xml_ns_conference_info language "XSD" all; +// import from NoTargetNamespace language "XSD" all; + import from urn_ietf_params_xml_ns_reginfo all; + import from urn_ietf_params_xml_ns_gruuinfo all; + import from NoTargetNamespace all; + + group Alias_Definitions { + + type TIMS3GPP TIMS3GPP_Type; /* @status APPROVED (IMS) */ + + type Contact.state RegInfo_Contact_State_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type Contact.event RegInfo_Contact_Event_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type Contact.unknown_param_list RegInfo_Contact_UnknownParams_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type Contact.unknown_param_list[-] RegInfo_Contact_UnknownParam_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type Contact.elem_list RegInfo_Contact_ElemList_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + type Reginfo.registration_list RegInfo_RegistrationList_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type Registration RegInfo_Registration_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type Reginfo Reginfo_Type with { encode "XML"}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + @sic R5s130474: encoding rule sic@ */ + + type Reginfo_Type.state Reginfo_State_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type Registration.state RegInfo_Registration_State_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + type PubGruu PubGruu_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type TempGruu TempGruu_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + } with { encode "XML"}; // @sic R5s130474 sic@ + + //---------------------------------------------------------------------------- + + template (value) Pub_gruu cs_PubGruu(charstring p_PublicUserId) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + uri := cs_IMS_ArbitraryValueFor_gr(p_PublicUserId) + }; + + template (value) Temp_gruu cs_TempGruu(charstring p_HomeDomainName, + integer p_Cseq) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + first_cseq := p_Cseq, + uri := cs_IMS_TempGRUUForUE(p_HomeDomainName) + }; + + /* + * @desc return GruuExtension + * @param p_PubGruu (default value: omit) + * @param p_TempGruu (default value: omit) + * @return RegInfo_Contact_ElemList_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_RegInfo_GruuExtension(template (omit) PubGruu_Type p_PubGruu := omit, + template (omit) TempGruu_Type p_TempGruu := omit) return RegInfo_Contact_ElemList_Type + { + var RegInfo_Contact_ElemList_Type v_ElemList := {}; + + if (isvalue(p_PubGruu) and isvalue(p_TempGruu)) { + v_ElemList[0] := oct2char(bit2oct(encvalue(p_PubGruu))); // NOTE: bit2str would return string cntaining '0' and '1' only + v_ElemList[1] := oct2char(bit2oct(encvalue(p_TempGruu))); // NOTE: bit2str would return string cntaining '0' and '1' only + } + else if (isvalue(p_PubGruu) xor isvalue(p_TempGruu)) { + FatalError(__FILE__, __LINE__, ""); + } + return v_ElemList; + } + + //---------------------------------------------------------------------------- + + template (value) RegInfo_Contact_UnknownParam_Type cs_XML_UEInstance(charstring p_UEInstanceId := tsc_IMS_UEInstanceId) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* NOTE: p_UEInstanceId may need to be URL encoded (-> f_URL_Encoding) */ + name := p_UEInstanceId, + base := "+sip.instance" + }; + + template (value) Registration cs_RegistrationInfo(template (value) Contact p_Contact, + charstring p_PublicUserId, + charstring p_Id, + RegInfo_Registration_State_Type p_State) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + aor := p_PublicUserId, + id := p_Id, + state := p_State, + contact_list := { + p_Contact + }, + elem_list := {} + }; + + //---------------------------------------------------------------------------- + + template (value) Contact cs_RegistrationContact(charstring p_ContactUri, + charstring p_Id, + RegInfo_Contact_State_Type p_State, + RegInfo_Contact_Event_Type p_Event, + template (omit) charstring p_CallId := omit, + template (omit) integer p_Cseq := omit, + template (omit) integer p_Expires := omit, + template (value) RegInfo_Contact_UnknownParams_Type p_UnknownParams := {}, + template (omit) Pub_gruu p_PubGruu := omit, + template (omit) Temp_gruu p_TempGruu := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + callid := p_CallId, + cseq := p_Cseq, + duration_registered := omit, + event := p_Event, + expires := p_Expires, + id := p_Id, + q := omit, + retry_after := omit, + state := p_State, + uri := p_ContactUri, + display_name := omit, + unknown_param_list := p_UnknownParams, + elem_list := fl_RegInfo_GruuExtension(p_PubGruu, p_TempGruu) + }; + + //---------------------------------------------------------------------------- + + template (value) Reginfo cs_XML_Reginfo(Reginfo_State_Type p_State, + integer p_Version, + template (value) RegInfo_RegistrationList_Type p_Registrations) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + state := p_State, + version := p_Version, + registration_list := p_Registrations, + elem_list := {} + }; + + /* + * @desc return RegInfo + * @param p_State (default value: full) + * @param p_Version (default value: 0) + * @param p_Registrations + * @return template (value) Reginfo + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_XML_RegInfo(Reginfo_State_Type p_State := full, + integer p_Version := 0, + template (value) RegInfo_RegistrationList_Type p_Registrations) return template (value) Reginfo + { + var template (value) Reginfo v_Reginfo := cs_XML_Reginfo(p_State, p_Version, p_Registrations); + return v_Reginfo; + } + + /* + * @desc build up XML for alternative service + * @param p_Type + * @param p_Reason (default value: "") + * @param p_Action (default value: omit) + * @return template (value) TIMS3GPP_Type + * @status APPROVED (IMS) + */ + function f_IMS_TIMS3GPP_TX(Type p_Type, + charstring p_Reason := "", + template (omit) Action p_Action := omit) return template (value) TIMS3GPP_Type + { + var template (value) TIMS3GPP_Type v_TIMS3GPP; + var TAlternativeService.elem_list v_AnyElements := {}; + + if (ispresent(p_Action)) { + v_AnyElements := {"" & valueof(p_Action) & ""} // @sic R5s140490 sic@ + } + + v_TIMS3GPP := { + version := 1.0, + attr := omit, + choice := { + alternative_service := + { + attr := omit, + type_ := p_Type, + reason := p_Reason, + elem_list := v_AnyElements + } + }, + elem_list := {} + }; + return v_TIMS3GPP; + } + + template (value) TIMS3GPP_Type cs_TIMS3GPP_Emergency(template (omit) Action p_Action := omit) := f_IMS_TIMS3GPP_TX("emergency", -, p_Action); /* @status APPROVED (IMS) */ + template (value) TIMS3GPP_Type cs_TIMS3GPP_Restoration(template (omit) Action p_Action := "initial-registration") := f_IMS_TIMS3GPP_TX("restoration", -, p_Action); /* @status APPROVED (IMS) */ + +} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS_LibSip/LibSip_Common.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS_LibSip/LibSip_Common.ttcn new file mode 100644 index 0000000..52b1a73 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS_LibSip/LibSip_Common.ttcn @@ -0,0 +1,44 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +/******************************************************************************/ + + +module LibSip_Common { + + type set length (1..infinity) of charstring Charstring_List; // @sic R5w140113, R5w140009: new common definition sic@ + + //------------------------------------------------------------------------------ + // @sic R5w140113, R5w140009: moved from LibSip_SIPTypesAndValues: sic@ + + // [20.1, 20.3, 20.4, 20.7, 20.9, 20.10, 20.11, 20.18, 20.20, 20.27, 20.28, 20.30, 20.31, + // 20.33, 20.34, 20.39, 20.42, 20.44] + + + type union GenValue { + charstring tokenOrHost, + charstring quotedString + } + + type record GenericParam + { + charstring id, + GenValue paramValue optional + } + + // [?] + type set of GenericParam SemicolonParam_List; + + // [?] + type set of GenericParam AmpersandParam_List; + + // [?] + type set of GenericParam CommaParam_List; + //------------------------------------------------------------------------------ + + +} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS_LibSip/LibSip_MessageBodyTypes.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS_LibSip/LibSip_MessageBodyTypes.ttcn new file mode 100644 index 0000000..37bd398 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS_LibSip/LibSip_MessageBodyTypes.ttcn @@ -0,0 +1,54 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-04-11 22:35:20 +0200 (Fri, 11 Apr 2014) $ +// $Rev: 11180 $ +/******************************************************************************/ + +module LibSip_MessageBodyTypes +{ + import from LibSip_SDPTypes all; + import from LibSip_SimpleMsgSummaryTypes all; + + type charstring XmlBody; + type charstring SdpBody; + + group MIMETypes { + type union MIME_Encapsulated_Parts { + SdpBody sdpMessageBody, // @sic R5w140112: sdpMessageBody changed back to charstring sic@ + XmlBody xmlBody // if there is XML body + // XMLMessage xmlMessage // if there is XML message (with header and body) + }; + + type record MIME_Encapsulated_Part { + charstring content_type, + charstring content_disposition optional, + MIME_Encapsulated_Parts mime_encapsulated_part + }; + + type record MIME_Message { + charstring boundary, // len: + MimeEncapsulatedList mimeEncapsulatedList + }; + + type record of MIME_Encapsulated_Part MimeEncapsulatedList; + + } // group MIMETypes + + type union MessageBody { + SdpBody sdpMessageBody, // if there is only SDP part @sic R5w140112: sdpMessageBody changed back to charstring sic@ +// XMLMessage xmlMessage, // if there is XML message (with header and body) + XmlBody xmlBody, // if there is XML body + MIME_Message mimeMessageBody, // if there is SDP and encapsulated ISUP part + charstring sipfrag, // if content-Type is message/sipfrag (cp. NOTIFY, cp TS124147 A.4.3.1.2) + charstring textplain, // if content type is text/plain (for testing long messages) + SimpleMsgSummary simpleMsgSummary, // RFC 3842 + octetstring smsMessage // encoded SMS message 3GPP 23.040, 24.011 + }; + + +} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS_LibSip/LibSip_SDPTypes.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS_LibSip/LibSip_SDPTypes.ttcn new file mode 100644 index 0000000..a69769a --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS_LibSip/LibSip_SDPTypes.ttcn @@ -0,0 +1,403 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +/******************************************************************************/ + +/** + * @author STF 346, STF366, STF368, STF369, STF450, STF471 + * @version $Id: LibSip_SDPTypes.ttcn 620 2014-07-10 07:26:06Z nikolajev $ + * @desc This module defines message, attribute, structured and simple + * SDP types as well constants used by LipSip constructs.
+ * Note that any changes made to the definitions in this module + * may be overwritten by future releases of this library + * End users are encouraged to contact the distributers of this + * module regarding their modifications or additions + * This module is part of LibSipV3. + * @remark Adding of new attributes types is ok; Adding of new optional attributes in @see SDP_attribute type is ok; Existing attribute types shall not be changed or removed - change requests shall be made to http://t-ort.etsi.org + * @remark Changes done by MCC160: + * - import statements changed to avoid circular imports: import of LibSip_SIPTypesAndValues replaced by LibSip_Common + */ +module LibSip_SDPTypes { + //import from LibSip_SIPTypesAndValues all; MCC160: causes circuler imports + import from LibSip_Common all; // MCC160: to avoid circuler imports + group Constants { + group SimpleConstants { + // SDP net_type + const charstring c_in := "IN"; + + // SDP addr_type + const charstring c_ip4 := "IP4"; + const charstring c_ip6 := "IP6"; + + // SDP_media_desc: media + const charstring c_audio := "audio"; + const charstring c_image := "image"; + const charstring c_video := "video"; + const charstring c_text := "text"; + const charstring c_msrp := "msrp"; + + // SDP_media_desc: transport + const charstring c_rtpAvp := "RTP/AVP"; + const charstring c_rtpAvpf := "RTP/AVPF"; + const charstring c_msrpTcp := "TCP/MSRP"; + const charstring c_udptl := "Udptl"; + + // SDP_attribute_list constants: + const charstring c_local := "local"; + const charstring c_mandatory := "mandatory"; + const charstring c_optional := "optional"; + const charstring c_none := "none"; + const charstring c_qos := "qos"; + const charstring c_remote := "remote"; + const charstring c_sendrecv := "sendrecv"; + const charstring c_sendonly := "sendonly"; + const charstring c_inactive := "inactive"; + const charstring c_send := "send"; + const charstring c_recv := "recv"; + const charstring c_e2e := "e2e"; + } + } + group Types { + group SubTypes { + group AttributeTypes { + type record SDP_attribute_cat { + charstring attr_value + } + + type record SDP_attribute_keywds { + charstring attr_value + } + + type record SDP_attribute_tool { + charstring attr_value + } + + type record SDP_attribute_ptime { + charstring attr_value + } + + type record SDP_attribute_recvonly { + } + + type record SDP_attribute_sendrecv { + } + + type record SDP_attribute_sendonly { + } + + type record SDP_attribute_inactive { + } + + type record SDP_attribute_orient { + charstring attr_value + } + + type record SDP_attribute_type { + charstring attr_value + } + + type record SDP_attribute_charset { + charstring attr_value + } + + type record SDP_attribute_sdplang { + charstring attr_value + } + + type record SDP_attribute_lang { + charstring attr_value + } + + type record SDP_attribute_framerate { + charstring attr_value + } + + type record SDP_attribute_quality { + charstring attr_value + } + + type union SDP_attribute_fmtp_format_specific_params { + SemicolonParam_List paramList, + charstring unstructured + } + + type record SDP_attribute_fmtp { + charstring format, + SDP_attribute_fmtp_format_specific_params params + } + + type record SDP_attribute_curr { + charstring preconditionType, + charstring statusType, + charstring direction + } + + type record SDP_attribute_des { + charstring preconditionType, + charstring strength, + charstring statusType, + charstring direction + } + + type record SDP_attribute_conf { + charstring preconditionType, + charstring statusType, + charstring direction + } + + type record SDP_attribute_rtpmap_codec { + charstring encoding, + charstring clockrate, + charstring parameters optional + } + + type record SDP_attribute_rtpmap { + charstring payload_type, + SDP_attribute_rtpmap_codec codec + } + + type record SDP_attribute_rtcp { + integer portnumber, + SDP_connection connection optional + } + + type record SDP_attribute_msrp { + charstring attr_value + } + + type record SDP_attribute_unknown { + charstring name, + charstring attr_value optional + } + + type record SDP_attribute_maxptime { + charstring attr_value + } + + type record SDP_attribute_tcap { + integer trpr_cap_num, + Charstring_List proto_list + } + + type record SDP_attribute_pcfg { + integer config_number, + Charstring_List pot_cfg_list optional + } + + type record SDP_attribute_acfg { + integer config_number, + Charstring_List sel_cfg_list optional + } + + type record SDP_attribute_ecn_capable_rtp { + Charstring_List init_list, + Charstring_List parm_list optional + } + + type record SDP_attribute_rtcp_fb { + charstring rtcp_fb_pt, + charstring rtcp_fb_val + } + + type record SDP_attribute_rtcp_xr { + Charstring_List xr_format_list optional + } + + type record SDP_attribute_rtcp_rsize { + } + + type record SDP_attribute_3ge2ae { + charstring indicator + } + + type record SDP_attribute_crypto { + charstring tag, + charstring crypto_suite, + charstring key_params, + Charstring_List session_params optional + } + + type union SDP_attribute { + SDP_attribute_cat cat, + SDP_attribute_keywds keywds, + SDP_attribute_tool tool, + SDP_attribute_ptime ptime, + SDP_attribute_recvonly recvonly, + SDP_attribute_sendrecv sendrecv, + SDP_attribute_sendonly sendonly, + SDP_attribute_inactive inactive, + SDP_attribute_orient orient, + SDP_attribute_type sdp_type, + SDP_attribute_charset charset, + SDP_attribute_sdplang sdplang, + SDP_attribute_lang lang, + SDP_attribute_framerate framerate, + SDP_attribute_quality quality, + SDP_attribute_fmtp fmtp, + SDP_attribute_curr curr, + SDP_attribute_des des, + SDP_attribute_conf conf, + SDP_attribute_rtpmap rtpmap, + SDP_attribute_rtcp rtcp, + SDP_attribute_msrp msrp, + SDP_attribute_maxptime maxptime, + SDP_attribute_tcap tcap, + SDP_attribute_pcfg pcfg, + SDP_attribute_acfg acfg, + SDP_attribute_ecn_capable_rtp ecn_capable_rtp, + SDP_attribute_rtcp_fb rtcp_fb, + SDP_attribute_rtcp_xr rtcp_xr, + SDP_attribute_rtcp_rsize rtcp_rsize, + SDP_attribute_3ge2ae e2ae, + SDP_attribute_crypto crypto, + //* unknown has to be the last else encoding/decoding won't work! + SDP_attribute_unknown unknown + } + + } //* group AttributeTypes + + type set of SDP_attribute SDP_attribute_list; + + type record SDP_bandwidth { + charstring modifier, + integer bandwidth + } + + type set of SDP_bandwidth SDP_bandwidth_list; + + type record SDP_connection { + charstring net_type, + charstring addr_type, + SDP_conn_addr conn_addr + } + + type record SDP_conn_addr { + charstring addr, + integer ttl optional, + integer num_of_addr optional + } + + type set of SDP_connection SDP_connection_list; + + type record SDP_contact { + charstring addr_or_phone, + charstring disp_name optional + } + + type SDP_contact SDP_contact_tel; + + type SDP_contact SDP_contact_email; + + type set of SDP_contact_email SDP_email_list; + + type record of charstring SDP_fmt_list; + + type record SDP_key { + charstring method, + charstring key optional + } + + type record SDP_media_desc { + SDP_media_field media_field, + charstring information optional, + SDP_connection_list connections optional, + SDP_bandwidth_list bandwidth optional, + SDP_key key optional, + SDP_attribute_list attributes optional + } + + type set of SDP_media_desc SDP_media_desc_list; + + type record SDP_media_port { + integer port_number, + integer num_of_ports optional + } + + type record SDP_media_field { + charstring media, + SDP_media_port ports, + charstring transport, + SDP_fmt_list fmts + } + + type record SDP_time { + SDP_time_field time_field, + SDP_repeat_list time_repeat optional + } + + type record SDP_time_field { + charstring start_time, + //* field is numeric strings that may not fit into 32-bit signed int + charstring + stop_time //* field is numeric strings that may not fit into 32-bit signed int + } + + type record SDP_repeat { + SDP_typed_time repeat_interval, + SDP_typed_time active, + SDP_typed_time_list offsets + } + + type set of SDP_repeat SDP_repeat_list; + + type record SDP_typed_time { + integer time, + charstring unit optional + } + + type set of SDP_typed_time SDP_typed_time_list; + + type set of SDP_time SDP_time_list; + + type record SDP_timezone { + charstring adjustment_time, + SDP_typed_time offset + } + + type set of SDP_timezone SDP_timezone_list; + + type record SDP_Origin { + charstring user_name, + charstring session_id, + //* field is numeric strings that may not fit into 32-bit signed int + charstring session_version, + //* field is numeric strings that may not fit into 32-bit signed int + charstring net_type, + charstring addr_type, + charstring addr + } + + type set of SDP_contact_tel SDP_phone_list; + + } //* group SubTypes + + + group MessageTypes { + type record SDP_Message { + integer protocol_version, + SDP_Origin origin, + charstring session_name, + charstring information optional, + charstring uri optional, + SDP_email_list emails optional, + SDP_phone_list phone_numbers optional, + SDP_connection connection optional, + SDP_bandwidth_list bandwidth optional, + SDP_time_list times, + SDP_timezone_list timezone_adjustments optional, + SDP_key key optional, + SDP_attribute_list attributes optional, + SDP_media_desc_list media_list optional + } + with { + encode "SDPCodec"; + } + + } // group MessageTypes + + } // group Types +} // end module LibSip_SDPTypes diff --git a/IMS_PART4_IWD_14wk37/Common/IMS_LibSip/LibSip_SIPTypesAndValues.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS_LibSip/LibSip_SIPTypesAndValues.ttcn new file mode 100644 index 0000000..f7f5b06 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS_LibSip/LibSip_SIPTypesAndValues.ttcn @@ -0,0 +1,1971 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +/******************************************************************************/ + +/** + * @author STF 346, STF366, STF368, STF369, STF450, STF471 + * @version $Id: LibSip_SIPTypesAndValues.ttcn 623 2014-08-18 12:22:28Z rennoch $ + * @desc This module defines message, header, structured and simple SIP + * types as well constants used by LipSip constructs.
+ * Note that any changes made to the definitions in this module + * may be overwritten by future releases of this library + * End users are encouraged to contact the distributers of this + * module regarding their modifications or additions + * This module is part of LibSipV3. + * @remark Adding of new message and header types is ok; Adding of new optional header fields in + * @see MessageHeader type is ok but should be done at same time as dummy template updates; Existing message or header types shall not be changed or removed - change requests shall be made to http://t-ort.etsi.org + * @remark Changes done by MCC160: + * - import statements changed to avoid circular imports + * - import of LibSip_Common + * - types of LibSip_Common are commented out (Charstring_List, GenValue, GenericParam, SemicolonParam_List, AmpersandParam_List, CommaParam_List) + * - import statements changed to avoid dependency of PIXITs + * - import of LibSip_PIXITS commented out + * - c_mimeMultipart commented out + * - definition of DisplayName added + * - NameAddr changed to use DisplayName instead charstring (acc. to R5w140111) + * - featureCaps restored in MessageHeader + * - encoding rule "SIPCodec" added to types Request, *_Request, RequestUnion, Response (note: how to deal with this in the future is FFS) + */ +module LibSip_SIPTypesAndValues { + import from LibSip_MessageBodyTypes all; + //import from LibSip_PIXITS all; MCC160: type definitions shall not import PIXITs + import from LibSip_Common all; // MCC160: to avoid circuler imports + + group Constants { + group SimpleConstants { + // SIP name protocol plus version + const charstring c_sipNameVersion := "SIP/2.0"; + + // SIP name protocol + const charstring c_sipName := "SIP"; + + // SIP version + const charstring c_sipVersion := "2.0"; + + // SIP scheme + const charstring c_sipScheme := "sip"; + + // TEL scheme + const charstring c_telScheme := "tel"; + + // URN schema + const charstring c_urnScheme := "urn"; + + // TAG_ID + const charstring c_tagId := "tag"; + + // BRANCH_ID + const charstring c_branchId := "branch"; + + // BRANCH_COOKIE + const charstring c_branchCookie := "z9hG4bK"; + + // EXPIRES_ID + const charstring c_expiresId := "expires"; + + // MADDR_ID + const charstring c_maddrId := "maddr"; + + // METHOD_ID + const charstring c_methodId := "method"; + + // RECEIVED_ID + const charstring c_receivedId := "received"; + + // TTL_ID + const charstring c_ttlId := "ttl"; + + // USER_ID + const charstring c_userId := "user"; + + // SDP name application + const charstring c_sdpApplication := "application/sdp"; + + // XML name application + const charstring c_xmlApplication := "application/xml"; + + // XML name application + const charstring c_xmlreginfoApplication := "application/reginfo+xml"; + + // XML name resource-list + const charstring c_xmlresourcelistApplication := "application/resource-lists+xml"; + +/* // MIME name application */ +/* const charstring c_mimeMultipart := "multipart/mixed;boundary=""" & PX_SIP_MIME_BOUNDARY & """"; */ + + // IMS 3GPP name application + const charstring c_ims3gppApplication := "application/3gpp-ims+xml"; + + // IMS 3GPP name CW application + const charstring c_ims3gppCwApplication := "application/vnd.3gpp.cw+xml"; + + // IMS ETSI name MCID application + const charstring c_imsEtsiMcidApplication := "application/vnd.etsi.mcid+xml"; + + // IMS ETSI name CUG application + const charstring c_imsEtsiCugApplication := "application/vnd.etsi.cug+xml"; + + // IMS ETSI name Simservs application(TIP/TIR, ACR, CDIV, OIP/OIR, CUG) + const charstring c_imsEtsiSimservsApplication := "application/vnd.etsi.simservs+xml"; + + // OCTET-STREAM name application + const charstring c_octetApplication := "application/octet-stream"; + + // PLAIN-TEXT name application + const charstring c_plainText := "text/plain"; + + // SIP fragment message + const charstring c_sipfragMessage := "message/sipfrag"; + + // text content of 1300 bytes for messages with message body + const charstring c_longMessageContent_1300Bytes := + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & oct2char('0D'O) & oct2char('0A'O); + // CRLF + // Default SIP port number : 5060 + const integer c_defaultSipPort := 5060; + + // Default SIP protocol : UDP + const charstring c_defaultSipProt := "UDP"; + + // Fixed IP multicast address + const charstring c_mcastSipIpaddr := "224.0.1.75"; + + // Short delta-second used in expires parameter to acknowledge a registration + const charstring c_shortRegistration := "3600"; + + // ([RFC3891 ] Sec 6.1) + const charstring c_earlyFlag := "early-only"; + + // option tag replaces ([RFC3261 ] ) + const charstring c_replaces := "replaces"; + + // option tag 100rel (reliable provisional response [RFC3262 ] ) + const charstring c_tag100rel := "100rel"; + + // option tag from-change ([RFC4916 ] ) + const charstring c_tagFromChange := "from-change"; + + // option tag precondition (ch.11 [RFC3312 ] ) + const charstring c_tagPrecond := "precondition"; + + // due to problem with TAU compiler because hardcoded return statement constant is created + const HostPort c_hostport_dummy := { + host := "", + portField := c_defaultSipPort + }; + + // CLIP/CLIR information + const PrivacyValue c_privacy_none := "none"; + const PrivacyValue c_privacy_id := "id"; + const PrivacyValue c_privacy_header := "header"; + const PrivacyValue c_privacy_user := "user"; + const PrivacyValue c_privacy_critical := "critical"; + const PrivacyValue c_privacy_session := "session"; + + // + const charstring c_AT := "@"; + // MRO + const charstring c_SP := oct2char('20'O); + const charstring c_SLASH := oct2char('2F'O); + const charstring c_LT := oct2char('3C'O); + const charstring c_GT := oct2char('3E'O); + + // * (wildchard) sign + const charstring c_WILDCARD := "*"; + + const integer c_CRlen := 2; + // length of new line (0d0a) + const GenericParam c_Integrity_protected_yes := {"integrity-protected", {tokenOrHost := "yes"}}; + const GenericParam c_Integrity_protected_no := {"integrity-protected", {tokenOrHost := "no"}}; + const GenericParam c_Integrity_protected_ip_assoc_pending := {"integrity-protected", {tokenOrHost := "ip-assoc-pending"}}; + + const charstring c_algorithm := "MD5"; + + } // end group SimpleConstants + + group AuthorizationConstants { + + const charstring c_ik := ""; + const charstring c_ck := ""; + const charstring c_nonce := ""; + const charstring c_nonce_value := "0edff6c521cc3f407f2d9e01cf6ed82b"; + + + } // end group AuthorizationConstants + + group PChargingVectorConstants { + + const charstring c_icid := "icid-value"; + const charstring c_icid_value := "123abc"; + const charstring c_icid_generated_at := "icid-generated-at"; + const charstring c_orig_ioi := "orig-ioi"; + const charstring c_term_ioi := "term-ioi"; + const charstring c_access_network_charging_info := "access-network-charging-info"; + + + } // end group PChargingVectorConstants + + group HeaderFieldConstants { + + const CallId c_empty_CallId := { + fieldName := CALL_ID_E, + callid := "" + }; + + const ContentType c_empty_ContentType := { + fieldName := CONTENT_TYPE_E, + mediaType := "" + }; + + const CSeq c_empty_cSeq := { + fieldName := CSEQ_E, + seqNumber := 0, + method := "EMPTY" + }; + + const From c_empty_From := { + fieldName := FROM_E, + addressField := { + nameAddr := { + displayName := omit, + addrSpec := { + scheme := c_sipScheme, + components := { + sip := { + userInfo := omit, + hostPort := { + host := "127.0.0.1", + portField := c_defaultSipPort + } + } + }, + urlParameters := omit, + headers := omit + } + } + }, + fromParams := omit + }; + + const MaxForwards c_maxForwards70 := { + fieldName := MAX_FORWARDS_E, + forwards := 70 + }; + + const SipUrl c_empty_RequestUri := { + scheme := c_sipScheme, + components := { + sip := { + userInfo := omit, + hostPort := { + host := "127.0.0.1", + portField := c_defaultSipPort + } + } + }, + urlParameters := omit, + headers := omit + }; + + const SipUrl c_unavailableUri := { + scheme := c_sipScheme, + components := { + sip := { + userInfo := { + userOrTelephoneSubscriber := "unavailable", + password := omit + }, + hostPort := { + host := "anonymous.invalid", + portField := c_defaultSipPort + } + } + }, + urlParameters := omit, + headers := omit + }; + + const To c_empty_To := { + // value of To header + fieldName := TO_E, + addressField := { + nameAddr := { + displayName := omit, + addrSpec := { + scheme := c_sipScheme, + components := { + sip := { + userInfo := omit, + hostPort := { + host := "127.0.0.1", + portField := c_defaultSipPort + } + } + }, + urlParameters := omit, + headers := omit + } + } + }, + toParams := omit + }; + + const Via c_empty_Via := { + fieldName := VIA_E, + viaBody := { + { + sentProtocol := { + protocolName := c_sipName, + protocolVersion := c_sipVersion, + transport := c_defaultSipProt + }, + sentBy := { + host := "127.0.0.1", + portField := c_defaultSipPort + }, + viaParams := omit + } + } + }; + + + } + + + group UserProfileConstants { + // number of user profile from 1-10 for SIP profile + const integer c_userProfile_SIP1_home := 1; + const integer c_userProfile_SIP2_home := 2; + + + } // end group UserProfileConstants + + group StatusLines { + const StatusLine c_statusLine100 := {c_sipNameVersion, 100, "Trying"}; + const StatusLine c_statusLine180 := {c_sipNameVersion, 180, "Ringing"}; + const StatusLine c_statusLine181 := {c_sipNameVersion, 181, "Call Is Being Forwarded"}; + const StatusLine c_statusLine182 := {c_sipNameVersion, 182, "Queued"}; + const StatusLine c_statusLine183 := {c_sipNameVersion, 183, "Session Progress"}; + + const StatusLine c_statusLine200 := {c_sipNameVersion, 200, "OK"}; + const StatusLine c_statusLine202 := {c_sipNameVersion, 202, "Accepted"}; + + const StatusLine c_statusLine300 := {c_sipNameVersion, 300, "Multiple Choices"}; + const StatusLine c_statusLine301 := {c_sipNameVersion, 301, "Moved Permanently"}; + const StatusLine c_statusLine302 := {c_sipNameVersion, 302, "Moved Temporarily"}; + const StatusLine c_statusLine305 := {c_sipNameVersion, 305, "Use Proxy"}; + const StatusLine c_statusLine380 := {c_sipNameVersion, 380, "Alternative Service"}; + + const StatusLine c_statusLine400 := {c_sipNameVersion, 400, "Bad Request"}; + const StatusLine c_statusLine401 := {c_sipNameVersion, 401, "Unauthorized"}; + const StatusLine c_statusLine402 := {c_sipNameVersion, 402, "Payment Required"}; + const StatusLine c_statusLine403 := {c_sipNameVersion, 403, "Forbidden"}; + const StatusLine c_statusLine404 := {c_sipNameVersion, 404, "Not Found"}; + const StatusLine c_statusLine405 := {c_sipNameVersion, 405, "Method Not Allowed"}; + const StatusLine c_statusLine406 := {c_sipNameVersion, 406, "Not Acceptable"}; + const StatusLine c_statusLine407 := {c_sipNameVersion, 407, "Proxy Authentication Required"}; + const StatusLine c_statusLine408 := {c_sipNameVersion, 408, "Request Timeout"}; + const StatusLine c_statusLine410 := {c_sipNameVersion, 410, "Gone"}; + const StatusLine c_statusLine413 := {c_sipNameVersion, 413, "Request Entity Too Large"}; + const StatusLine c_statusLine414 := {c_sipNameVersion, 414, "Request-URI Too Long"}; + const StatusLine c_statusLine415 := {c_sipNameVersion, 415, "Unsupported Media Type"}; + const StatusLine c_statusLine416 := {c_sipNameVersion, 416, "Unsupported URI Scheme"}; + const StatusLine c_statusLine420 := {c_sipNameVersion, 420, "Bad Extension"}; + const StatusLine c_statusLine421 := {c_sipNameVersion, 421, "Extension Required"}; + const StatusLine c_statusLine422 := {c_sipNameVersion, 422, "Session Interval Too Small"}; + const StatusLine c_statusLine423 := {c_sipNameVersion, 423, "Interval Too Brief"}; + const StatusLine c_statusLine433 := {c_sipNameVersion, 433, "Anonymity Disallowed"}; + const StatusLine c_statusLine480 := {c_sipNameVersion, 480, "Temporarily Unavailable"}; + const StatusLine c_statusLine481 := {c_sipNameVersion, 481, "Call/Transaction Does Not Exist"}; + const StatusLine c_statusLine482 := {c_sipNameVersion, 482, "Loop Detected"}; + const StatusLine c_statusLine483 := {c_sipNameVersion, 483, "Too Many Hops"}; + const StatusLine c_statusLine484 := {c_sipNameVersion, 484, "Address Incomplete"}; + const StatusLine c_statusLine485 := {c_sipNameVersion, 485, "Ambiguous"}; + const StatusLine c_statusLine486 := {c_sipNameVersion, 486, "Busy Here"}; + const StatusLine c_statusLine487 := {c_sipNameVersion, 487, "Request Terminated"}; + const StatusLine c_statusLine488 := {c_sipNameVersion, 488, "Not Acceptable Here"}; + const StatusLine c_statusLine493 := {c_sipNameVersion, 493, "Undecipherable"}; + const StatusLine c_statusLine500 := {c_sipNameVersion, 500, "Server Internal Error"}; + const StatusLine c_statusLine501 := {c_sipNameVersion, 501, "Not implemented"}; + const StatusLine c_statusLine502 := {c_sipNameVersion, 502, "Bad Gateway"}; + const StatusLine c_statusLine503 := {c_sipNameVersion, 503, "Service Unavailable"}; + const StatusLine c_statusLine504 := {c_sipNameVersion, 504, "Server Time-out"}; + const StatusLine c_statusLine505 := {c_sipNameVersion, 505, "Version Not Supported"}; + const StatusLine c_statusLine513 := {c_sipNameVersion, 513, "Message Too Large"}; + const StatusLine c_statusLine580 := {c_sipNameVersion, 580, "Precondition Failure"}; + const StatusLine c_statusLine600 := {c_sipNameVersion, 600, "Busy Everywhere"}; + const StatusLine c_statusLine603 := {c_sipNameVersion, 603, "Decline"}; + const StatusLine c_statusLine604 := {c_sipNameVersion, 604, "Does Not Exist Anywhere"}; + const StatusLine c_statusLine606 := {c_sipNameVersion, 606, "Not Acceptable"}; + + + } // end StatusLines + + group SIPSyncPointNames { + const charstring c_Ringing := "Ringing"; + const charstring c_uPlane := "uPlane"; + const charstring c_sync1 := "sync1"; + const charstring c_sync2 := "sync2"; + const charstring c_sync3 := "sync3"; + const charstring c_sync4 := "sync4"; + const charstring c_uPlaneStop := "uPlaneStop"; + const charstring c_annoucA := "announcementA"; + const charstring c_annoucB := "announcementB"; + const charstring c_annouc := "announcement"; + const charstring c_voicem := "voiceMessage"; + } + + + } // end group Constants + + group Types { + group SubTypes { + // Subtypes + group TokenTypes // TokensTypes + { + // [20 ] + type enumerated FieldName { + ACCEPT_E, + ACCEPT_ENCODING_E, + ACCEPT_LANGUAGE_E, + ALERT_INFO_E, + ALLOW_E, + AUTHENTICATION_INFO_E, + AUTHORIZATION_E, + CALL_ID_E, + CALL_INFO_E, + CONTACT_E, + CONTENT_DISPOSITION_E, + CONTENT_ENCODING_E, + CONTENT_LANGUAGE_E, + CONTENT_LENGTH_E, + CONTENT_TYPE_E, + CSEQ_E, + DATE_E, + ERROR_INFO_E, + EXPIRES_E, + FROM_E, + IN_REPLY_TO_E, + MAX_FORWARDS_E, + MIME_VERSION_E, + MIN_EXPIRES_E, + ORGANIZATION_E, + PRIORITY_E, + PROXY_AUTHENTICATE_E, + PROXY_AUTHORIZATION_E, + PROXY_REQUIRE_E, + RECORD_ROUTE_E, + REPLY_TO_E, + REQUIRE_E, + RETRY_AFTER_E, + ROUTE_E, + SERVER_E, + SUBJECT_E, + SUPPORTED_E, + TIMESTAMP_E, + TO_E, + UNSUPPORTED_E, + USER_AGENT_E, + VIA_E, + WARNING_E, + WWW_AUTHENTICATE_E, + // [3262/7.1 ] + RACK_E, + RSEQ_E, + // [3265/7.2 ] + ALLOW_EVENTS_E, + EVENT_E, + SUBSCRIPTION_STATE_E, + // [3313 ] + P_MEDIA_AUTHORIZATION_E, + // [3323 ] + PRIVACY_E, + // [3325 ] + P_ASSERTED_ID_E, + P_PREFERRED_ID_E, + P_PREFERRED_SERVICE_E, + // [3326 ] + REASON_E, + // [3515 ] - REFER method + REFER_TO_E, + // [4488 ] - REFER method + REFER_SUB_E, + // [3891 ] + REPLACES_E, + // [3892 ] - REFER method + REFERRED_BY_E, + // [4244 ] + HISTORY_INFO_E, + // [3313 ] + P_MEDIA_AUTH_E, + // [3327 ] + PATH_E, + // [3329 ] + SECURITY_CLIENT_E, + SECURITY_SERVER_E, + SECURITY_VERIFY_E, + // [3455 ] + P_ACCESS_NETWORK_INFO_E, + P_ASSOCIATED_URI_E, + P_CALLED_PARTY_E, + P_CHARGING_FUNCTION_ADDRESSES_E, + P_CHARGING_VECTOR_E, + P_VISITED_NETWORK_E, + // [3608 ] + SERVICE_ROUTE_E, + // [3841 ] + ACCEPT_CONTACT_E, + REQUEST_DISPOSITION_E, + // [4028 ] + MIN_SE_E, + SESSION_EXPIRES_E, + P_ASSERTED_SERVICE_E, + // [5009 ] + P_EARLY_MEDIA_E, + // http://tools.ietf.org/html/draft-johnston-sipping-cc-uui-07 + // Transporting User to User Call Control Information in SIP for ISDN Interworking + USER_TO_USER_E, + // [6442 ] /* + // @sic R5-133151 update of header fields sic@ */ + GEOLOCATION_E, + GEOLOCATION_ROUTING_E, + SESSION_ID_E, + SIP_ETAG_E, + SIP_IF_MATCH_E, + FEATURE_CAPS_E + } + + // [7.1 ] + type enumerated Method { + ACK_E, + BYE_E, + CANCEL_E, + INVITE_E, + OPTIONS_E, + REGISTER_E, + PRACK_E // Note: this element is not defined in [5 ] + , + SUBSCRIBE_E, + NOTIFY_E // [3265 ] + , + PUBLISH_E // [3903/12 ] + , + REFER_E // [3515 ] + , + UPDATE_E // [3311 ] + , + MESSAGE_E // [3428 ] + , + INFO_E // [2976 ] + , + UNKNOWN_METHOD_E + } + +/* type union GenValue { */ +/* charstring tokenOrHost, */ +/* charstring quotedString */ +/* } */ + +/* // [20.1, 20.3, 20.4, 20.7, 20.9, 20.10, 20.11, 20.18, 20.20, 20.27, 20.28, 20.30, 20.31, */ +/* // 20.33, 20.34, 20.39, 20.42, 20.44 ] */ +/* type record GenericParam { */ +/* charstring id, */ +/* GenValue paramValue optional */ +/* } */ + +/* // [? ] */ +/* type set of GenericParam SemicolonParam_List; */ + +/* // [? ] */ +/* type set of GenericParam AmpersandParam_List; */ + +/* // [? ] */ +/* type set of GenericParam CommaParam_List; */ + +/* type set length (1..infinity) of charstring Charstring_List; */ + + // [20.10, 20.20, 20.30, 20.31, 20.34, 20.39, 20.42, 20.43 ] + type record HostPort { + charstring host optional, + // hostname, IPv4 or IPv6 + integer portField + optional // represented as an integer + } + + // [20.10, 20.20, 20.30, 20.31, 20.34, 20.39 ] + /** + * @desc identifier for user or telephone subscriber + * @member userOrTelephoneSubscriber provides the username or a phone name identifying the subscriber + * @member password related password information + */ + type record UserInfo { + charstring userOrTelephoneSubscriber, + charstring password optional + } + + // [19.1.1 ;used in: 20.10, 20.20, 20.30, 20.31, 20.34, 20.39 ] + /** + * @desc Uniform Resource Identifier (URI) + * @member scheme distinguishes call types, e.g. voice, fax etc. or related address scheme, e.g. tel, sip + * @member userInfo Contains user information (also in non-SIP URLs) with optional parameter as passwords + * @member hostPort Hostname or IP address information and port identifier of the target + * @member urlParameters Contains either SIP or TEL URL parameters, separated by semicolons, e.g. transport=tcp or user=phone + * @member headers Additional information added after the parameters, e.g. priority=urgent + */ + type record SipUriComponents { + // sip-uri acc. to RFC 3261 cl. 19.1 + UserInfo userInfo optional, + HostPort hostPort + } + + type record TelUriComponents { + // tel-uri acc. to RFC 3966 + charstring subscriber + } + + type record UrnUriComponents { + // urn-uri acc. to RFC 2141 + charstring namespaceId, + // e.g. "service" as acc. to RFC 5031 + charstring + namespaceSpecificString // e.g. "sos" + } + + type union UriComponents { + SipUriComponents sip, + // scheme: "sip" or sips" + TelUriComponents tel, + // scheme: "tel" + UrnUriComponents urn, + // scheme: "urn" + charstring + other // scheme: none of the above schemes + } + + type record SipUrl { + charstring scheme, + // e.g "sip" or "tel" + UriComponents components, + // corresponding to the scheme + SemicolonParam_List urlParameters optional, + AmpersandParam_List headers optional + } + + // [20.1, RFC2616 14.1 ] + type record AcceptBody { + charstring mediaRange, + SemicolonParam_List acceptParam optional + } + + // [20.1, RFC2616 14.1 ] + type set of AcceptBody AcceptBody_List; + + // [20.4 ] + type record AlertInfoBody { + charstring url, + // any URI + SemicolonParam_List genericParams optional + } + + // [20.4 ] + type set of AlertInfoBody AlertInfoBody_List; + + // [20.8 ] + type charstring CallidString; + // token [" + // [20.8 ] + type set of CallidString CallidString_List; + + // [20.9 ] + type record CallInfoBody { + charstring url, + // any URI + SemicolonParam_List infoParams optional + } + + // [20.9 ] + type set of CallInfoBody CallInfoBody_List; + + // [20.27, 20.44, .......10.32, 10.48; RFC2616 14.33, 14.47; RFC2617 1.2 ] + type union Challenge { + CommaParam_List digestCln, + OtherAuth otherChallenge + } + + // [20.10, 20.20, 20.30, 20.31, 20.34, 20.39 ] + type union DisplayName // MCC160: missing type + { + charstring token, + charstring quotedString + } + + + type record NameAddr { + DisplayName displayName optional, // MCC160: type corected +/* charstring displayName optional, */ + SipUrl addrSpec + } + + // [20.10, 20.20, 20.31, 20.39 ] + type union Addr_Union { + NameAddr nameAddr, + SipUrl + addrSpecUnion // STS: "Union" added to filed name to avoid dangerous name equivalence with 2nd NameAddr field + } + + // [20.10 ] + type record ContactAddress { + Addr_Union addressField, + SemicolonParam_List contactParams optional + } + + // [20.10 ] + type set of ContactAddress ContactAddress_List; + // 1 or more elements + // [20.10 ] + type union ContactBody { + charstring wildcard, + ContactAddress_List contactAddresses + } + + // [20.2, 20.12; RFC2616 14.3, 14.11 ] + type charstring ContentCoding; + + // [20.2, 20.12; RFC2616 14.3, 14.11 ] + type set of ContentCoding ContentCoding_List; + + // [20.7, 20.28; RFC2616 14.35 RFC2617 1.2 ] + type union Credentials { + CommaParam_List digestResponse, + OtherAuth otherResponse + } + + // allow multiple Authorization headers due to RFC3261 ch. 20.7 and 20.28 + type record of Credentials CredentialsList; + + // [20.19, 20.23, 20.33 ] + type charstring DeltaSec; + // an external operation can handle this field + // [20.18 ] + type record ErrorInfoBody { + charstring uri, + // any URI + SemicolonParam_List genericParams optional + } + + // [20.18 ] + type set of ErrorInfoBody ErrorInfoBody_List; + + // [20.3 RFC2616 14.4 ] + type record LanguageBody { + charstring languageRange, + SemicolonParam_List acceptParam optional + } + + // [20.3 RFC2616 14.4 ] + type set of LanguageBody LanguageBody_List; + + // [20.13; RFC2616 14.12 ] + type charstring LanguageTag; + + // [20.13; RFC2616 14.12 ] + type set of LanguageTag LanguageTag_List; + + // [20.5 ] + type set of charstring Method_List; + + + // [20.29, 20.32, 20.37, 20.40 ] + type charstring OptionTag; + + // [20.29, 20.32, 20.37, 20.40 ] + type set of OptionTag OptionTag_List; + + + // [20.7, 20.27, 20.28, 20.44 ; RFC2616 14.33, 14.47; RFC2617 1.2 ] + type record OtherAuth { + charstring authScheme, + CommaParam_List authParams + } + + type record Payload { + integer payloadlength, + charstring payloadvalue + } + + // [20.30,20.34 ] + type record RouteBody { + NameAddr nameAddr, + SemicolonParam_List rrParam optional + } + + // [20.30,20.34 ] + type record of RouteBody RouteBody_List; + + // [20.42 ] + type record SentProtocol { + charstring protocolName, + charstring protocolVersion, + charstring transport + } + + // [20.35, 20.41; RFC2616 14.43 ] + type charstring ServerVal; + + // [20.35, 20.41; RFC2616 14.43 ] + type set of ServerVal ServerVal_List; + + // [20.38 ] + type record TimeValue { + integer majorDigit, + // represented as an integer + integer minorDigit + optional // represented as an integer + } + + // [20.42 ] + type record ViaBody { + SentProtocol sentProtocol, + HostPort sentBy, + SemicolonParam_List viaParams optional + } + + // [20.42 ] + type record of ViaBody ViaBody_List; + + // [20.43 ] + type union WarnAgent { + HostPort hostPort, + charstring pseudonym + } + + // [20.43 ] + type record WarningValue { + integer warnCode, + // represented as an integer + WarnAgent warnAgent, + charstring warnText + } + + // [20.43 ] + type set of WarningValue WarningValue_List; + + type Addr_Union PAssertedIDValue; + + type record of PAssertedIDValue PAssertedIDValue_List; + + type charstring PAssertedServiceValue; + + type Addr_Union PPreferredIDValue; + + type record of PPreferredIDValue PPreferredIDValue_List; + + type charstring PrivacyValue; + + type record of PrivacyValue PrivacyValue_List; + + type set of FcValue FcValue_List; + type record FcValue { + charstring wildcard(c_WILDCARD), + SemicolonParam_List fcParams optional + } + + + } // end group TokensType + + + group HeaderFieldTypes // Header Fields + { + group CommonHeaderFieldTypes { + // [20.1, RFC2616 14.1 ] + type record Accept { + FieldName fieldName (ACCEPT_E) , + AcceptBody_List acceptArgs optional + } + + // [20.2, RFC2616 14.3 ] + type record AcceptEncoding { + FieldName fieldName (ACCEPT_ENCODING_E) , + ContentCoding_List contentCoding optional + } + + // [20.3, RFC2616 14.4 ] + type record AcceptLanguage { + FieldName fieldName (ACCEPT_LANGUAGE_E) , + LanguageBody_List languageBody optional + } + + // [20.4 ] + type record AlertInfo { + FieldName fieldName (ALERT_INFO_E) , + AlertInfoBody_List alertInfoBody optional + } + + // [20.5 ] + type record Allow { + FieldName fieldName (ALLOW_E) , + Method_List methods optional + } + + // [20.6 ] + type record AuthenticationInfo { + FieldName fieldName (AUTHENTICATION_INFO_E) , + CommaParam_List ainfo + } + + // [20.7 RFC2617 3.2.2 ] + type record Authorization { + FieldName fieldName (AUTHORIZATION_E) , + CredentialsList + body // changed from Credentials to allow multiple Authorization headers + } + + // [20.8 ] + type record CallId { + FieldName fieldName (CALL_ID_E) , + CallidString callid + } + + // [20.9 ] + type record CallInfo { + FieldName fieldName (CALL_INFO_E) , + CallInfoBody_List callInfoBody optional + } + + // [20.10 ] + type record Contact { + FieldName fieldName (CONTACT_E) , + ContactBody contactBody + } + + // [20.11 ] + type record ContentDisposition { + FieldName fieldName (CONTENT_DISPOSITION_E) , + charstring dispositionType, + SemicolonParam_List dispositionParams optional + } + + // [20.12 RFC2616 14.11 ] + type record ContentEncoding { + FieldName fieldName (CONTENT_ENCODING_E) , + ContentCoding_List contentCoding + } + + // [20.13 RFC2616 14.12 ] + type record ContentLanguage { + FieldName fieldName (CONTENT_LANGUAGE_E) , + LanguageTag_List languageTag + } + + // [20.14 ] + type record ContentLength { + FieldName fieldName (CONTENT_LENGTH_E) , + integer + len // this field is represented as an integer + } + + // [20.15 ] + type record ContentType { + FieldName fieldName (CONTENT_TYPE_E) , + charstring mediaType + } + + // [20.16 ] + type record CSeq { + FieldName fieldName (CSEQ_E) , + integer seqNumber, + // this field is represented as an integer + charstring method + } + + // [20.17 ] + type record Date { + FieldName fieldName (DATE_E) , + charstring sipDate + } + + // [20.18 ] + type record ErrorInfo { + FieldName fieldName (ERROR_INFO_E) , + ErrorInfoBody_List errorInfo optional + } + + // [20.19 ] + type record Expires { + FieldName fieldName (EXPIRES_E) , + DeltaSec deltaSec + } + + //[6809] + type record FeatureCaps { + FieldName fieldName(FEATURE_CAPS_E), + FcValue_List fcValues + } + + // [20.20 ] + type record From { + FieldName fieldName (FROM_E) , + Addr_Union addressField, + SemicolonParam_List fromParams optional + } + + // [20.21 ] + type record InReplyTo { + FieldName fieldName (IN_REPLY_TO_E) , + CallidString_List callids + } + + // [20.22 ] + type record MaxForwards { + FieldName fieldName (MAX_FORWARDS_E) , + integer + forwards // this field is represented as an integer + } + + // [20.23 ] + type record MinExpires { + FieldName fieldName (MIN_EXPIRES_E) , + DeltaSec deltaSec + } + + // [20.24 RFC2616 19.4.1 ] + type record MimeVersion { + FieldName fieldName (MIME_VERSION_E) , + integer majorNumber, + // this field is represented as an integer + integer + minorNumber // this field is represented as an integer + } + + // [20.25 ] + type record Organization { + FieldName fieldName (ORGANIZATION_E) , + charstring organization + } + + // [20.26 ] + type record Priority { + FieldName fieldName (PRIORITY_E) , + charstring priorityValue + } + + // [20.27 RFC2616 14.33 RFC2617 1.2 ] + type record ProxyAuthenticate { + FieldName fieldName (PROXY_AUTHENTICATE_E) , + Challenge challenge + } + + // [20.28 RFC2616 14.35 RFC2617 1.2 ] + type record ProxyAuthorization { + FieldName fieldName (PROXY_AUTHORIZATION_E) , + CredentialsList + credentials // changed from Credentials to allow multiple Authorization headers + } + + // [20.29 ] + type record ProxyRequire { + FieldName fieldName (PROXY_REQUIRE_E) , + OptionTag_List optionsTags + } + + // [20.30 ] + type record RecordRoute { + FieldName fieldName (RECORD_ROUTE_E) , + RouteBody_List routeBody + } + + // [20.31 ] + type record ReplyTo { + FieldName fieldName (REPLY_TO_E) , + Addr_Union addressField, + SemicolonParam_List replyToParams optional + } + + // [20.32 ] + type record Require { + FieldName fieldName (REQUIRE_E) , + OptionTag_List optionsTags + } + + // [20.33 ] + type record RetryAfter { + FieldName fieldName (RETRY_AFTER_E) , + DeltaSec deltaSec, + charstring comment optional, + SemicolonParam_List retryParams optional + } + + // [20.34 ] + type record Route { + FieldName fieldName (ROUTE_E) , + RouteBody_List routeBody + } + + // [20.35 RFC2616 14.38 ] + type record Server { + FieldName fieldName (SERVER_E) , + ServerVal_List serverBody + } + + // [20.36 ] + type record Subject { + FieldName fieldName (SUBJECT_E) , + charstring summary + } + + // [20.37 ] + type record Supported { + FieldName fieldName (SUPPORTED_E) , + OptionTag_List optionsTags optional + } + + // [20.38 ] + type record Timestamp { + FieldName fieldName (TIMESTAMP_E) , + TimeValue timeValue optional, + TimeValue delay optional + } + + // [20.39 ] + type record To { + FieldName fieldName (TO_E) , + Addr_Union addressField, + SemicolonParam_List toParams optional + } + + // [20.40 ] + type record Unsupported { + FieldName fieldName (UNSUPPORTED_E) , + OptionTag_List optionsTags + } + + // Undefined header field + type record UndefinedHeader { + charstring headerName, + charstring headerValue + } + + type set of UndefinedHeader UndefinedHeader_List; + + // [20.41 RFC2616 14.43 ] + type record UserAgent { + FieldName fieldName (USER_AGENT_E) , + ServerVal_List userAgentBody + } + + // [20.42 ] + type record Via { + FieldName fieldName (VIA_E) , + ViaBody_List viaBody + } + + // [20.43 ] + type record Warning { + FieldName fieldName (WARNING_E) , + WarningValue_List warningValue + } + + // [20.44 RFC2616 14.47 RFC2617 1.2 ] + type record WwwAuthenticate { + FieldName fieldName (WWW_AUTHENTICATE_E) , + Challenge challenge + } + + } // end group CommonHeaderFieldTypes + group RFC3262HeaderFieldTypes { + // [3262/7.1 ] + type record RSeq { + FieldName fieldName (RSEQ_E) , + integer responseNum + } + + // [3262/7.2 ] + type record RAck { + FieldName fieldName (RACK_E) , + integer responseNum, + integer seqNumber, + charstring method + } + + } // end group RFC3262HeaderFieldTypes + + group RFC3265HeaderFieldTypes { + // [3265/7.2 ] + type record AllowEvents { + FieldName fieldName (ALLOW_EVENTS_E) , + EventType_List eventTypes + } + + type set of EventType EventType_List; + type charstring EventType; + + // [3265/7.2 ] + type record Event { + FieldName fieldName (EVENT_E) , + EventType eventType, + SemicolonParam_List eventParams optional + } + + // [3265/7.2 ] + type record SubscriptionState { + FieldName fieldName (SUBSCRIPTION_STATE_E) , + SubState subState, + SemicolonParam_List substateParams optional + } + + type charstring SubState; + + } // end group RFC3265HeaderFieldTypes + + group RFC3313HeaderFieldTypes { + // [3313/5 ] + type record PMediaAuthorization { + FieldName fieldName (P_MEDIA_AUTHORIZATION_E) , + PMediaAuthorization_List pMediaAuthorizations + } + + type charstring PMediaAuthValue; + // HEXDIG "0"-"9", "A"-"F" + type record of PMediaAuthValue PMediaAuthorization_List; + + + } // end group RFC3265HeaderFieldTypes + + group RFC3323HeaderFieldTypes { + // [3323 ] + type record Privacy { + FieldName fieldName (PRIVACY_E) , + PrivacyValue_List privValueList + } + + } // end group RFC3323HeaderFieldTypes + + group RFC3325HeaderFieldTypes { + // [3325 ] + type record PAssertedID { + FieldName fieldName (P_ASSERTED_ID_E) , + PAssertedIDValue_List pAssertedIDValueList + } + + // [3325 ] + type record PPreferredID { + FieldName fieldName (P_PREFERRED_ID_E) , + PPreferredIDValue_List pPreferredIDValueList + } + // draft-drage-sipping-service-identification-01 (July 2007) + type record PPreferredService { + FieldName fieldName (P_PREFERRED_SERVICE_E) , + charstring serviceId + } + + + } // end group RFC3325HeaderFieldTypes + + group RFC3326HeaderFieldTypes { + // [3326 ] + type record of ReasonValue ReasonValues; + + type record ReasonValue { + charstring token, + SemicolonParam_List reasonParams optional + } + + type record Reason { + FieldName fieldName (REASON_E) , + ReasonValues reasonValues + } + + } // end group RFC3326HeaderFieldTypes + + group RFC3327HeaderFieldTypes { + // [3327 ] + type record Path { + FieldName fieldName (PATH_E) , + PathValues pathValues + } + + type record of PathValue PathValues; + + type record PathValue { + NameAddr nameAddr, + SemicolonParam_List rrParam optional + } + + } // end group RFC3515HeaderFieldTypes + + + group RFC4488HeaderFieldTypes { + // [4488 ] + type record ReferSub { + FieldName fieldName (REFER_SUB_E) , + boolean referSubValue, + SemicolonParam_List referSubParams optional + } + + } // end group RFC4488HeaderFieldTypes + + group RFC3329HeaderFieldTypes { + // [RFC3329/2.2 ] + type record SecurityMechanism { + charstring mechName, + SemicolonParam_List mechParams optional + } + + type set of SecurityMechanism SecurityMechanism_List; + + type record SecurityClient { + FieldName fieldName (SECURITY_CLIENT_E) , + SecurityMechanism_List securityMech + } + + type record SecurityServer { + FieldName fieldName (SECURITY_SERVER_E) , + SecurityMechanism_List securityMech + } + + type record SecurityVerify { + FieldName fieldName (SECURITY_VERIFY_E) , + SecurityMechanism_List securityMech + } + + } // end group RFC3329HeaderFieldTypes + + group RFC3455HeaderFieldTypes { + type record of NameAddrParam NameAddrParam_List; + + type record NameAddrParam { + NameAddr nameAddr, + SemicolonParam_List genericParams optional + } + // [3455/5.1 ] + type record PAssociatedURI { + FieldName fieldName (P_ASSOCIATED_URI_E) , + NameAddrParam_List nameAddrList + } + // [3455/5.2 ] + type record PCalledPartyID { + FieldName fieldName (P_CALLED_PARTY_E) , + NameAddrParam nameAddParams + } + + type record of VnetworkSpec VnetworkSpec_List; + + type record VnetworkSpec { + charstring vNetworkSpecToken, + SemicolonParam_List genericParams optional + } + + // [3455/5.3 ] + type record PVisitedNetworkID { + FieldName fieldName (P_VISITED_NETWORK_E) , + VnetworkSpec_List vNetWorkSpec + } + + // [3455/5.4 ] + type record PAccessNetworkInfo { + FieldName fieldName (P_ACCESS_NETWORK_INFO_E) , + charstring accessType, + SemicolonParam_List genericParams optional + } + + // [3455/5.5 ] + type record PChargingFunctionAddresses { + FieldName fieldName (P_CHARGING_FUNCTION_ADDRESSES_E) , + SemicolonParam_List chargeAddrParams optional + } + + // [3455/5.6 ] + type record PChargingVector { + FieldName fieldName (P_CHARGING_VECTOR_E) , + charstring icidValue, + SemicolonParam_List chargeParams optional + } + + } // end group RFC33455HeaderFieldTypes + + group RFC3515HeaderFieldTypes { + // [3515 ] + type record ReferTo { + FieldName fieldName (REFER_TO_E) , + NameAddr nameAddr, + SemicolonParam_List referToParams optional + } + + } // end group RFC3515HeaderFieldTypes + + group RFC3608HeaderFieldTypes { + // [3608 ] + type record ServiceRoute { + FieldName fieldName (SERVICE_ROUTE_E) , + RouteBody_List routeBody + } + + } // end group RFC33608HeaderFieldTypes + + + group RFC3841HeaderFieldTypes { + // [3841 ] + type record AcceptContact { + FieldName fieldName (ACCEPT_CONTACT_E) , + AcRcValue_List acValues + } + + type set of AcRcValue AcRcValue_List; + + type record AcRcValue { + charstring wildcard (c_WILDCARD) , + SemicolonParam_List acRcParams optional + } + // [RFC 3841 ] + type charstring Directive; + type set of Directive Directive_List; + type record RequestDisposition { + FieldName fieldName (REQUEST_DISPOSITION_E) , + Directive_List directives + } + + + } // end group RFC3841HeaderFieldTypes + + group RFC3891HeaderFieldTypes { + // [3891 ] + type record Replaces { + FieldName fieldName (REPLACES_E) , + CallidString callid, + SemicolonParam_List replacesParams optional + } + + } // end group RFC3891HeaderFieldTypes + + group RFC3892HeaderFieldTypes { + // [3892 ] + type record ReferredBy { + FieldName fieldName (REFERRED_BY_E) , + NameAddr nameAddr, + SemicolonParam_List referredbyIdParams optional + } + + } // end group RFC3892HeaderFieldTypes + + group RFC4028HeaderFieldTypes { + // [4028 ] + type record MinSE { + FieldName fieldName (MIN_SE_E) , + DeltaSec deltaSec, + SemicolonParam_List minSeParam optional + } + // [4028 ] + type record SessionExpires { + FieldName fieldName (SESSION_EXPIRES_E) , + DeltaSec deltaSec, + SemicolonParam_List seParam optional + } + + } // end group RFC4028HeaderFieldTypes + + group RFC4244HeaderFieldTypes { + // [4244 ] + type record HistoryInfo { + FieldName fieldName (HISTORY_INFO_E) , + HistoryInfo_List historyInfoList + } + + type record of HistoryInfoEntry HistoryInfo_List; + + type record of integer IntegerList; + + type record HistoryInfoEntry { + NameAddr nameAddr, + IntegerList hiIndex optional, + SemicolonParam_List hiExtention optional + } + + type record of charstring StringList; + + } // end group RFC4244HeaderFieldTypes + + group RFC5009PEarlyMediaHeader { + // [5009 ] + type record PEarlyMedia { + FieldName fieldName (P_EARLY_MEDIA_E) , + EM_List em_param + } + type record of charstring EM_List; + + } // end group RFC5009PEarlyMediaHeader + + // http://tools.ietf.org/html/draft-johnston-sipping-cc-uui-07, expires 16.Aug.2009 + // Transporting User to User Call Control Information in SIP for ISDN Interworking + // type definition of SIP header mechanism + group UserToUser_PreliminaryRFCDraft { + type record UserToUser { + FieldName fieldName (USER_TO_USER_E) , + charstring uuiData length(256), + /*length limitation due to ISDN, max of allowed 128 hex digits are represented by 256 characters*/ + GenericParam uuiParam + } + + + } // end group UserToUser_PreliminaryRFCDraft + + type record PAssertedService { + FieldName fieldName (P_ASSERTED_SERVICE_E) , + PAssertedServiceValue pAssertedServiceValue + } + + group RFC6442GeolocationConveyance { + /* @sic R5-133151 update of header fields sic@ */ + // [6442 ] + type record Geolocation { + // RFC6442 clause 4.1 + FieldName fieldName (GEOLOCATION_E) , + SipUrl addrSpec, + SemicolonParam_List geolocParam optional + } + type enumerated GeolocationRoutingState { + GEOLOCATION_ROUTING_YES_E, GEOLOCATION_ROUTING_NO_E, GEOLOCATION_ROUTING_OTHER_E + } + type record GeolocationRouting { + // RFC6442 clause 4.2 + FieldName fieldName (GEOLOCATION_ROUTING_E) , + GeolocationRoutingState state, + GenericParam genericValue optional + } + + } // end group RFC6442GeolocationConveyance + + type charstring SessIdString length(32); + + type record SessionId { + FieldName fieldName (SESSION_ID_E) , + SessIdString sessid, + GenericParam sessidParam optional + } + + type charstring EntityTag; + + type record SIP_ETag { + FieldName fieldName (SIP_ETAG_E) , + EntityTag entityTag + } + + type record SIP_If_Match { + FieldName fieldName (SIP_IF_MATCH_E) , + EntityTag entityTag + } + + + } // end group HeaderFieldTypes + + group MessageHeaderTypes { + + // Message-Header for all SIP requests and responses [20 ] + type set MessageHeader { + Accept accept optional, + AcceptContact acceptContact optional, + AcceptEncoding acceptEncoding optional, + AcceptLanguage acceptLanguage optional, + AlertInfo alertInfo optional, + Allow allow optional, + AllowEvents allowEvents optional, + // 3265/7.2 + AuthenticationInfo authenticationInfo optional, + // only in responses + Authorization authorization optional, + // only in requests + CallId callId optional, + // optional only in Invalid test cases mandatory otherwise + CallInfo callInfo optional, + Contact contact optional, + // optional in response and all requests except INVITE where mandatory + ContentDisposition contentDisposition optional, + ContentEncoding contentEncoding optional, + ContentLanguage contentLanguage optional, + ContentLength contentLength optional, + // optional in responses and all requests except ACK where mandatory + ContentType contentType optional, + CSeq cSeq optional, + // optional only in Invalid test cases mandatory otherwise + Date date optional, + ErrorInfo errorInfo optional, + // only in responses + Event event optional, + // 3265/7.2 + Expires expires optional, + FeatureCaps featureCaps optional, // 6809 + From fromField, + Geolocation geolocation optional, + // 6442 + GeolocationRouting geolocationRouting optional, + // 6442 + // @sic R5-133151 update of header fields sic@ + HistoryInfo historyInfo optional, + // 4244 + InReplyTo inReplyTo optional, + // only in requests + MaxForwards maxForwards optional, + // mandatory in requests not required in responses! + MimeVersion mimeVersion optional, + MinExpires minExpires optional, + // only in responses + MinSE minSE optional, + // 4028 + Organization organization optional, + PAccessNetworkInfo pAccessNetworkInfo optional, + // 3455 + PAssertedID pAssertedID optional, + // 3325 + PAssertedService pAssertedService optional, + PAssociatedURI pAssociatedURI optional, + // 3455 + Path path optional, + // 3327 + PCalledPartyID pCalledPartyID optional, + // 3455 + PChargingFunctionAddresses pChargingFunctionAddresses optional, + // 3455 + PChargingVector pChargingVector optional, + // 3455 + PEarlyMedia pEarlyMedia optional, + // 5009 + PMediaAuthorization pMediaAuthorization optional, + // 3313 + PPreferredID pPreferredID optional, + // 3325 + PPreferredService pPreferredService optional, + // draft-drage-sipping-service-identification-01 (July 2007) + Priority priority optional, + // only in requests + Privacy privacy optional, + // 3323 + ProxyAuthenticate proxyAuthenticate optional, + // only in responses + ProxyAuthorization proxyAuthorization optional, + // only in requests + ProxyRequire proxyRequire optional, + // only in requests + PVisitedNetworkID pVisitedNetworkID optional, + // 3455 + RAck rAck optional, + // 3262/7.1 + RSeq rSeq optional, + // 3262/7.1 + Reason reason optional, + // 3326 + RecordRoute recordRoute optional, + RequestDisposition requestDisposition optional, + // 3841 + ReferredBy referredBy optional, + // 3892 - REFER method + ReferTo referTo optional, + // 3515 - REFER method + ReferSub referSub optional, + // 4488 - REFER method + Replaces replaces optional, + // 3891 + ReplyTo replyTo optional, + // optional in responses and INVITE requests + Require require optional, + RetryAfter retryAfter optional, + // only in responses + Route route optional, + // only in requests + SecurityClient securityClient optional, + // 3329 + SecurityServer securityServer optional, + // 3329 + SecurityVerify securityVerify optional, + // 3329 + Server server optional, + // only in responses + ServiceRoute serviceRoute optional, + // 3608 + SessionExpires sessionExpires optional, + // 4028 + SessionId sessionId optional, + SIP_ETag sipETag optional, + SIP_If_Match sipIfMatch optional, + Subject subject optional, + // only in requests + SubscriptionState subscriptionState optional, + // 3265/7.2 + Supported supported optional, + Timestamp timestamp optional, + To toField, + Unsupported unsupported optional, + // only in responses + UserToUser userToUser optional, + UserAgent userAgent optional, + Via via, + Warning warning optional, + // only in responses + WwwAuthenticate wwwAuthenticate optional, + // only in responses + UndefinedHeader_List undefinedHeader_List optional + } + + + } // end group MessageHeaderTypes + + group StartLineTypes { + // Request-Line [7.1 ] + type record RequestLine { + Method method, + SipUrl requestUri, + charstring sipVersion + } + + // Status-Line [7.2 ] + type record StatusLine { + charstring sipVersion, + integer statusCode, + charstring reasonPhrase + } + + + } // end group StartLineTypes + + + group otherTypes { + + type record SipUserProfile { + /** + * @desc integer for the userprofile identifier + */ + integer id, + /** + * @desc integer for Port number to exchange SIP messages + */ + integer currPort, + /** + * @desc charstring for IP address to exchange SIP messages + */ + charstring currIpaddr, + /** + * @desc integer for Port number to exchange SIP messages + */ + integer contactPort, + /** + * @desc charstring for IP address to exchange SIP messages + */ + charstring contactIpaddr, + /** + * @desc charstring for IP address used by the TS to exchange media streams + */ + charstring bearerIpaddr, + /** + * @desc charstring for identity of the tester local domain + */ + charstring homeDomain, + /** + * @desc charstring for identity of the tester local user + */ + charstring publUsername, + /** + * @desc charstring for RFC 2617 3.2.1 qop options: Quoted string of one or more tokens indicating the "quality of protection" values supported by the server. The value "auth" indicates authentication; the value "auth-int" indicates authentication with integrity protection. + */ + charstring qop, + /** + * @desc charstring for RFC 2617 3.2.2 username for authentication The name of user in the specified realm + */ + charstring privUsername, + /** + * @desc charstring for RFC 2617 3.2.2.2 passwd: A known shared secret, the password of user of the specified username + */ + charstring passwd, + /** + * @desc charstring for registrar domain for authentication and request line + */ + charstring registrarDomain + } + + + + } // end group otherTypes + + + } // end group Subtypes + + + + group MSGtypes { + + group RequestTypes { + // [7.1 ] + /** + * @desc generic type of a SIP request message + * @member statusLine contains a method name, a Request-URI, and the protocol version + * @member msgHeader include all possible header fields that are allowed to be present according to RFCs and other standards + * @member messageBody depends on the request method, includes e.g. SDP message. + * @member payload contains the whole message as it has been received in its text format + */ + type record Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } with { encode "SIPCodec"} + + // Note: the introduction of the following specific types is to enable better means for logging + // on the other side the generic type is useful for functions dealing with multiple SIP message types + type record REGISTER_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } with { encode "SIPCodec"} + + type record INVITE_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } with { encode "SIPCodec"} + + type record OPTIONS_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } with { encode "SIPCodec"} + + type record BYE_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } with { encode "SIPCodec"} + + type record CANCEL_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } with { encode "SIPCodec"} + + type record ACK_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } with { encode "SIPCodec"} + + // [3262/7.1 ] + type record PRACK_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } with { encode "SIPCodec"} + + // [3265/7.1 ] + type record NOTIFY_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } with { encode "SIPCodec"} + + // [3265/7.1 ] + type record SUBSCRIBE_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } with { encode "SIPCodec"} + + // [3903/11.1 ] + type record PUBLISH_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } with { encode "SIPCodec"} + + // [3311/7 ] + type record UPDATE_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } with { encode "SIPCodec"} + + type record REFER_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } with { encode "SIPCodec"} + + type record MESSAGE_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } with { encode "SIPCodec"} + + type record INFO_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } with { encode "SIPCodec"} + + type union RequestUnion { + REGISTER_Request Register, + INVITE_Request Invite, + OPTIONS_Request Options, + BYE_Request Bye, + CANCEL_Request Cancel, + ACK_Request Ack, + PRACK_Request Prack, + NOTIFY_Request Notify, + SUBSCRIBE_Request Subscribe, + PUBLISH_Request Publish, + UPDATE_Request Update, + REFER_Request Refer, + MESSAGE_Request Message + } with { encode "SIPCodec"} + + } // end group RequestTypes + + group ResponseTypes { + // [7.2 ] + /** + * @desc generic type of a SIP response message + * @member statusLine consists of the protocol version followed by a numeric Status-Code and its associated textual phrase + * @member msgHeader include all possible header fields that are allowed to be present according to RFCs and other standards + * @member messageBody depends on the response method, includes e.g. SDP message. + * @member payload contains the whole message as it has been received in its text format + */ + type record Response { + StatusLine statusLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } with { encode "SIPCodec"} + + } // end group ResponseTypes + + // This MSG type is defined for sending synctactic variations, ans syntactically + // erroneous messages, and receving messages failed parsing. + group SyntacticTypes { + type charstring Raw; + + } // end group SyntacticTypes + + + // This type is defined for particular SIP message body types like SDP + } // end group MSGTypes + + } // end group Types +} +with { + encode "LibSip V3"; +} // end module LibSip_TypesAndValues diff --git a/IMS_PART4_IWD_14wk37/Common/IMS_LibSip/LibSip_SimpleMsgSummaryTypes.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS_LibSip/LibSip_SimpleMsgSummaryTypes.ttcn new file mode 100644 index 0000000..c874318 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS_LibSip/LibSip_SimpleMsgSummaryTypes.ttcn @@ -0,0 +1,66 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +/******************************************************************************/ + +/** + * @author STF 406, 471 + * @version $Id: LibSip_SimpleMsgSummaryTypes.ttcn 488 2010-11-08 10:17:19Z pintar $ + * @desc This module provides the SMS type system for SIP tests. + * This module is part of LibSipV3. +*/ +module LibSip_SimpleMsgSummaryTypes { + // RFC 3842 + group SMSConstants { + + // IMS ETSI name MWI application + const charstring c_imsEtsiMwiApplication := "application/simple-message-summary"; + + // msg_status line := "Message-Waiting" + const charstring c_messageWaiting := "Message-Waiting"; + + // msg_status line := "Message-Account" + const charstring c_messageAccount := "Message-Account"; + + // msg_summary line := "Voice-Message" + const charstring c_voiceMessage := "Voice-Message"; + + } + + group SMSTypes { + type record SimpleMsgSummary { + // Simple_message_summary + Msg_status_line msg_status_line, + Msg_account msg_account optional, + Msg_summary_line_list msg_summary_line_list optional, + Opt_msg_headers opt_msg_headers optional + } + + type record Msg_status_line { + charstring msg_type, + charstring msg_status + } + + type record Msg_account { + charstring msg_type_account, + charstring account_URI + } + + type set of Msg_summary_line Msg_summary_line_list; + + type record Msg_summary_line { + charstring msg_context_class, + charstring msgs, + charstring urgent_msgs optional + } + + type set of charstring Opt_msg_headers; + + + // type integer msgcount length(1); //msgs and urgent_msgs can be dividet into subtypes + } +} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS_XSD/AlternativeService.xsd b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/AlternativeService.xsd new file mode 100644 index 0000000..7082225 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/AlternativeService.xsd @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/IMS_PART4_IWD_14wk37/Common/IMS_XSD/NoTargetNamespace.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/NoTargetNamespace.ttcn new file mode 100644 index 0000000..0293300 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/NoTargetNamespace.ttcn @@ -0,0 +1,31 @@ +module NoTargetNamespace +{ + import from XSD all; + + type TIMS3GPP Ims_3gpp; + type XSD.String Type; + type XSD.String Action; + type record TIMS3GPP + { + XSD.Decimal version, + record length ( 1 .. infinity ) of XSD.String attr optional, + union + { + TAlternativeService alternative_service, + XSD.String service_info + } choice, + record of XSD.String elem_list + } + type record TAlternativeService + { + record length ( 1 .. infinity ) of XSD.String attr optional, + Type type_, + XSD.String reason, + record of XSD.String elem_list + } +} +with +{ + encode "XML"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'" +} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS_XSD/RFC3680_reginfo.xsd b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/RFC3680_reginfo.xsd new file mode 100644 index 0000000..9eef360 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/RFC3680_reginfo.xsd @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/IMS_PART4_IWD_14wk37/Common/IMS_XSD/RFC3863_pdif.xsd b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/RFC3863_pdif.xsd new file mode 100644 index 0000000..81bcc2b --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/RFC3863_pdif.xsd @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This attribute may be used on any element within an optional + PIDF extension to indicate that the corresponding element must + be understood by the PIDF processor if the enclosing optional + element is to be handled. + + + + \ No newline at end of file diff --git a/IMS_PART4_IWD_14wk37/Common/IMS_XSD/RFC4119_pdif_geopriv10.xsd b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/RFC4119_pdif_geopriv10.xsd new file mode 100644 index 0000000..416845e --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/RFC4119_pdif_geopriv10.xsd @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/IMS_PART4_IWD_14wk37/Common/IMS_XSD/RFC4119_pdif_geopriv10_basicPolicy.xsd b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/RFC4119_pdif_geopriv10_basicPolicy.xsd new file mode 100644 index 0000000..bb9c622 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/RFC4119_pdif_geopriv10_basicPolicy.xsd @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/IMS_PART4_IWD_14wk37/Common/IMS_XSD/RFC4575_conference_info.xsd b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/RFC4575_conference_info.xsd new file mode 100644 index 0000000..c63a9e0 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/RFC4575_conference_info.xsd @@ -0,0 +1,387 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/IMS_PART4_IWD_14wk37/Common/IMS_XSD/RFC5628_gruuinfo.xsd b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/RFC5628_gruuinfo.xsd new file mode 100644 index 0000000..b57e0fe --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/RFC5628_gruuinfo.xsd @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/IMS_PART4_IWD_14wk37/Common/IMS_XSD/UsefulTtcn3Types.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/UsefulTtcn3Types.ttcn new file mode 100644 index 0000000..0bba1ad --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/UsefulTtcn3Types.ttcn @@ -0,0 +1,70 @@ +module UsefulTtcn3Types { +// @sic R5s120890 sic@ + + type integer byte (-128 .. 127); + + type integer unsignedbyte (0 .. 255); + + type integer short (-32768 .. 32767); + + type integer unsignedshort (0 .. 65535); + + type integer long (-2147483648 .. 2147483647); + + type integer unsignedlong (0 .. 4294967295); + + type integer longlong; + + type integer unsignedlonglong; + + type float IEEE754float; + + type float IEEE754double; + + type float IEEE754extfloat; + + type float IEEE754extdouble; + + type charstring bmpstring; + + type charstring utf16string ; + + type charstring iso8859string; + + type record IDLfixed + { + unsignedshort digits, + short scale, + charstring value_ + }; + + /* + type charstring char length (1); + + NOTE 1: The name of this useful type is the same as the TTCN-3 keyword used to denote + charstring values in the quadraple form. In general it is disallowed to use TTCN-3 keywords as + identifiers. The "char" useful type is a solitary exception and allowed only for backward compatibility + with previous versions of the TTCN-3 standard. (except Titan doesn't) + + NOTE 2: The special string "8 bit" defined in clause 28.2.3 may be used with this type to specify a given encoding + for its values. Also, other properties of the base type can be changed by using attribute mechanisms. + */ + + type charstring uchar length (1); + + /* + NOTE: Special strings defined in clause 28.2.3 except "8 bit" may be used with this type to specify a given + encoding for its values. Also, other properties of the base type can be changed by using attribute + mechanisms. + */ + + type bitstring bit length (1); + + type hexstring hex length (1); + + type octetstring octet length (1); + +} +with { +encode "XML"; +} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS_XSD/XSD.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/XSD.ttcn new file mode 100644 index 0000000..0143e56 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/XSD.ttcn @@ -0,0 +1,162 @@ +// +// +// +module XSD { + +import from UsefulTtcn3Types all; +// @sic R5s120890 sic@ +//These constants are used in the XSD date/time type definitions +const charstring + dash := "-", + cln := ":", + year := "(0(0(0[1-9]|[1-9][0-9])|[1-9][0-9][0-9])|[1-9][0-9][0-9][0-9])", + yearExpansion := "(-([1-9][0-9]#(0,))#(,1))#(,1)", + month := "(0[1-9]|1[0-2])", + dayOfMonth := "(0[1-9]|[12][0-9]|3[01])", + hour := "([01][0-9]|2[0-3])", + minute := "([0-5][0-9])", + second := "([0-5][0-9])", + sFraction := "(.[0-9]#(1,))#(,1)", + endOfDayExt := "24:00:00(.0#(1,))#(,1)", + nums := "[0-9]#(1,)", + ZorTimeZoneExt := "(Z|[+-]((0[0-9]|1[0-3]):[0-5][0-9]|14:00))#(,1)", + durTime := "(T[0-9]#(1,)"& + "(H([0-9]#(1,)(M([0-9]#(1,)(S|.[0-9]#(1,)S))#(,1)|.[0-9]#(1,)S|S))#(,1)|"& + "M([0-9]#(1,)(S|.[0-9]#(1,)S)|.[0-9]#(1,)M)#(,1)|"& + "S|"& + ".[0-9]#(1,)S))"; + +//anySimpleType + +type XMLCompatibleString AnySimpleType; + +//anyType; + +type record AnyType +{ + record of String attr, + record of String elem_list +}; +// String types + +type XMLCompatibleString String; + +type XMLStringWithNoCRLFHT NormalizedString; + +type NormalizedString Token; + +type XMLStringWithNoWhitespace Name; + +type XMLStringWithNoWhitespace NMTOKEN; + +type Name NCName; + +type NCName ID; + +type NCName IDREF; + +type NCName ENTITY; + +type octetstring HexBinary; + +type octetstring Base64Binary; + +type XMLStringWithNoCRLFHT AnyURI; + +type charstring Language (pattern "[a-zA-Z]#(1,8)(-\w#(1,8))#(0,)"); +// Integer types + +type integer Integer; + +type integer PositiveInteger (1 .. infinity); + +type integer NonPositiveInteger (-infinity .. 0); + +type integer NegativeInteger (-infinity .. -1); + +type integer NonNegativeInteger (0 .. infinity); + +type longlong Long; + +type unsignedlonglong UnsignedLong; + +type long Int; + +type unsignedlong UnsignedInt; + +type short Short; + +type unsignedshort UnsignedShort; + +type byte Byte; + +type unsignedbyte UnsignedByte; + +// Float types + +type float Decimal; + +type IEEE754float Float; + +type IEEE754double Double; + +// Time types + +type charstring Duration (pattern + "{dash}#(,1)P({nums}(Y({nums}(M({nums}D{durTime}#(,1)|{durTime}#(,1))|D{durTime}#(,1))|" & + "{durTime}#(,1))|M({nums}D{durTime}#(,1)|{durTime}#(,1))|D{durTime}#(,1))|{durTime})"); + +type charstring DateTime (pattern + "{yearExpansion}{year}{dash}{month}{dash}{dayOfMonth}T({hour}{cln}{minute}{cln}{second}" & + "{sFraction}|{endOfDayExt}){ZorTimeZoneExt}" ); + +type charstring Time (pattern + "({hour}{cln}{minute}{cln}{second}{sFraction}|{endOfDayExt}){ZorTimeZoneExt}" ); + +type charstring Date (pattern + "{yearExpansion}{year}{dash}{month}{dash}{dayOfMonth}{ZorTimeZoneExt}" ); + +type charstring GYearMonth (pattern + "{yearExpansion}{year}{dash}{month}{ZorTimeZoneExt}" ); + +type charstring GYear (pattern + "{yearExpansion}{year}{ZorTimeZoneExt}" ); + +type charstring GMonthDay (pattern + "{dash}{dash}{month}{dash}{dayOfMonth}{ZorTimeZoneExt}" ); + +type charstring GDay (pattern + "{dash}{dash}{dash}{dayOfMonth}{ZorTimeZoneExt}" ); + +type charstring GMonth (pattern + "{dash}{dash}{month}{ZorTimeZoneExt}" ); + +// Sequence types + +type record of NMTOKEN NMTOKENS; + +type record of IDREF IDREFS; + +type record of ENTITY ENTITIES; + +type record QName +{ + AnyURI uri optional, + NCName name +}; + +// Boolean type + +type boolean Boolean; + +//TTCN-3 type definitions supporting the mapping of W3C XML Schema built-in datatypes + +type charstring XMLCompatibleString; + +type charstring XMLStringWithNoWhitespace; +type charstring XMLStringWithNoCRLFHT; + +} +with{ +encode "XML" +} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_conference_info.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_conference_info.ttcn new file mode 100644 index 0000000..712d81c --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_conference_info.ttcn @@ -0,0 +1,228 @@ +module urn_ietf_params_xml_ns_conference_info +{ + import from XSD all; + type Conference_type Conference_info; + + type record Conference_type + { + XSD.AnyURI entity, + State_type state optional, + XSD.UnsignedInt version optional, + record length ( 1 .. infinity ) of XSD.String attr optional, + Conference_description_type conference_description optional, + Host_type host_info optional, + Conference_state_type conference_state optional, + Users_type users optional, + Uris_type sidebars_by_ref optional, + Sidebars_by_val_type sidebars_by_val optional, + record of XSD.String elem_list + } + + type enumerated State_type + { + deleted, + full, + partial + } + + type record Conference_description_type + { + record length ( 1 .. infinity ) of XSD.String attr optional, + XSD.String display_text optional, + XSD.String subject optional, + XSD.String free_text optional, + Keywords_type keywords optional, + Uris_type conf_uris optional, + Uris_type service_uris optional, + XSD.UnsignedInt maximum_user_count optional, + Conference_media_type available_media optional, + record of XSD.String elem_list + } + + type record Host_type + { + record length ( 1 .. infinity ) of XSD.String attr optional, + XSD.String display_text optional, + XSD.AnyURI web_page optional, + Uris_type uris optional, + record of XSD.String elem_list + } + + type record Conference_state_type + { + record length ( 1 .. infinity ) of XSD.String attr optional, + XSD.UnsignedInt user_count optional, + XSD.Boolean active optional, + XSD.Boolean locked optional, + record of XSD.String elem_list + } + + type record Conference_media_type + { + record length ( 1 .. infinity ) of XSD.String attr optional, + record length (1 .. infinity) of Conference_medium_type entry_list + } + + type record Conference_medium_type + { + XSD.String label_, + record length ( 1 .. infinity ) of XSD.String attr optional, + XSD.String display_text optional, + XSD.String type_, + Media_status_type status optional, + record of XSD.String elem_list + } + + type record Uris_type + { + State_type state optional, + record length ( 1 .. infinity ) of XSD.String attr optional, + record length (1 .. infinity) of Uri_type entry_list + } + + type record Uri_type + { + record length ( 1 .. infinity ) of XSD.String attr optional, + XSD.AnyURI uri, + XSD.String display_text optional, + XSD.String purpose optional, + Execution_type modified optional, + record of XSD.String elem_list + } + + type record of XSD.String Keywords_type; + + type record Users_type + { + State_type state optional, + record length ( 1 .. infinity ) of XSD.String attr optional, + record of User_type user_list, + record of XSD.String elem_list + } + + type record User_type + { + XSD.AnyURI entity optional, + State_type state optional, + record length ( 1 .. infinity ) of XSD.String attr optional, + XSD.String display_text optional, + Uris_type associated_aors optional, + User_roles_type roles optional, + User_languages_type languages optional, + XSD.AnyURI cascaded_focus optional, + record of Endpoint_type endpoint_list, + record of XSD.String elem_list + } + + type record User_roles_type + { + record length ( 1 .. infinity ) of XSD.String attr optional, + record length (1 .. infinity) of XSD.String entry_list + } + + type record of XSD.Language User_languages_type; + + type record Endpoint_type + { + XSD.String entity optional, + State_type state optional, + record length ( 1 .. infinity ) of XSD.String attr optional, + XSD.String display_text optional, + Execution_type referred optional, + Endpoint_status_type status optional, + Joining_type joining_method optional, + Execution_type joining_info optional, + Disconnection_type disconnection_method optional, + Execution_type disconnection_info optional, + record of Media_type media_list, + Call_type call_info optional, + record of XSD.String elem_list + } + + type enumerated Endpoint_status_type + { + alerting, + connected, + dialing_in, + dialing_out, + disconnected, + disconnecting, + muted_via_focus, + on_hold, + pending + } + + type enumerated Joining_type + { + dialed_in, + dialed_out, + focus_owner + } + + type enumerated Disconnection_type + { + booted, + busy, + departed, + failed + } + + type record Execution_type + { + record length ( 1 .. infinity ) of XSD.String attr optional, + XSD.DateTime when optional, + XSD.String reason optional, + XSD.AnyURI by optional + } + + type record Call_type + { + record length ( 1 .. infinity ) of XSD.String attr optional, + union + { + Sip_dialog_id_type sip, + record of XSD.String elem_list + } choice + } + + type record Sip_dialog_id_type + { + record length ( 1 .. infinity ) of XSD.String attr optional, + XSD.String display_text optional, + XSD.String call_id, + XSD.String from_tag, + XSD.String to_tag, + record of XSD.String elem_list + } + + type record Media_type + { + XSD.String id, + record length ( 1 .. infinity ) of XSD.String attr optional, + XSD.String display_text optional, + XSD.String type_ optional, + XSD.String label_ optional, + XSD.String src_id optional, + Media_status_type status optional, + record of XSD.String elem_list + } + + type enumerated Media_status_type + { + inactive, + recvonly, + sendonly, + sendrecv + } + + type record Sidebars_by_val_type + { + State_type state optional, + record length ( 1 .. infinity ) of XSD.String attr optional, + record of Conference_type entry_list + } +} +with +{ + encode "XML"; +} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_gruuinfo.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_gruuinfo.ttcn new file mode 100644 index 0000000..775fa89 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_gruuinfo.ttcn @@ -0,0 +1,26 @@ +module urn_ietf_params_xml_ns_gruuinfo { + + +import from XSD all; + + +type record PubGruu +{ + XSD.AnyURI uri +}; + + +type record TempGruu +{ + XSD.UnsignedLong first_cseq, + XSD.AnyURI uri +}; + + +type PubGruu Pub_gruu; + + +type TempGruu Temp_gruu; + + +} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_pidf.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_pidf.ttcn new file mode 100644 index 0000000..ea015b4 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_pidf.ttcn @@ -0,0 +1,62 @@ +module urn_ietf_params_xml_ns_pidf +{ + import from XSD all; + type Presence_1 Presence; + + type XSD.Boolean MustUnderstand; + + type record Presence_1 + { + XSD.AnyURI entity, + record of Tuple tuple_list, + record of XSD.String note_list, + record of XSD.String elem_list + }; + + type record Tuple + { + XSD.ID id, + Status status, + record of XSD.String elem_list, + Contact contact optional, + record of XSD.String note_list, + XSD.DateTime timestamp optional + }; + + type record Status + { + Basic basic optional, + record of XSD.String elem_list + }; + + type enumerated Basic + { + closed, + open + }; + + type record Contact + { + Qvalue priority optional, + XSD.AnyURI base + }; + + type record Note + { + union + { + XSD.Language language_, + enumerated + { + x + } alt_ + } lang optional, + XSD.String base + }; + + type XSD.Decimal Qvalue; +} +with +{ + encode "XML"; +} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn new file mode 100644 index 0000000..404cbfc --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn @@ -0,0 +1,45 @@ +module urn_ietf_params_xml_ns_pidf_geopriv10 +{ + import from XSD all; + import from urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy all; +// import from urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy language "XSD" all; + // import from http_www_w3_org_XML_1998_namespace language "XSD" all; + type Geopriv_1 Geopriv; + + type record Geopriv_1 + { + LocInfoType location_info, + urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.LocPolicyType usage_rules, + XSD.String method optional, + LocProvidedBy provided_by optional, + record of XSD.String elem_list + }; + + type record LocInfoType + { + record of XSD.String elem_list + }; + + type record LocMethod + { + union + { + XSD.Language language_, + enumerated + { + x + } alt_ + } lang optional, + XSD.String base + }; + + type record LocProvidedBy + { + record length (1 .. infinity) of XSD.String elem_list + }; + +} +with +{ + encode "XML"; +} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn new file mode 100644 index 0000000..9d18fa5 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn @@ -0,0 +1,31 @@ +module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy +{ + import from XSD all; + // import from http_www_w3_org_XML_1998_namespace language "XSD" all; + type record LocPolicyType + { + XSD.Boolean retransmission_allowed optional, + XSD.DateTime retention_expiry optional, + XSD.AnyURI external_ruleset optional, + XSD.String note_well optional, + record of XSD.String elem_list + }; + + type record Notewell + { + union + { + XSD.Language language_, + enumerated + { + x + } alt_ + } lang optional, + XSD.String base + }; + +} +with +{ + encode "XML"; +} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn new file mode 100644 index 0000000..d7bb8b3 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn @@ -0,0 +1,30 @@ +module urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc +{ + import from XSD all; + type record CivicAddress + { + XSD.String country optional, + XSD.String a1 optional, + XSD.String a2 optional, + XSD.String a3 optional, + XSD.String a4 optional, + XSD.String a5 optional, + XSD.String a6 optional, + XSD.String pRD optional, + XSD.String pOD optional, + XSD.String sTS optional, + XSD.String hNO optional, + XSD.String hNS optional, + XSD.String lMK optional, + XSD.String lOC optional, + XSD.String fLR optional, + XSD.String nAM optional, + XSD.String pC optional, + record of XSD.String elem_list + }; + +} +with +{ + encode "XML"; +} diff --git a/IMS_PART4_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_reginfo.ttcn b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_reginfo.ttcn new file mode 100644 index 0000000..b562210 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_reginfo.ttcn @@ -0,0 +1,74 @@ +module urn_ietf_params_xml_ns_reginfo +{ + import from XSD all; + type record Reginfo + { + enumerated + { + full, + partial + } state, + XSD.NonNegativeInteger version, + record of Registration registration_list, + record of XSD.String elem_list + }; + + type record Registration + { + XSD.AnyURI aor, + XSD.String id, + enumerated + { + active, + init, + terminated + } state, + record of Contact contact_list, + record of XSD.String elem_list + }; + + type record Contact + { + XSD.String callid optional, + XSD.UnsignedLong cseq optional, + XSD.UnsignedLong duration_registered optional, + enumerated + { + created, + deactivated, + expired, + probation, + refreshed, + registered, + rejected, + shortened, + unregistered + } event, + XSD.UnsignedLong expires optional, + XSD.String id, + XSD.String q optional, + XSD.UnsignedLong retry_after optional, + enumerated + { + active, + terminated + } state, + XSD.AnyURI uri, + record + { + XSD.String base + } display_name optional, + record of record + { + XSD.String name, + XSD.String base + } unknown_param_list, + record of XSD.String elem_list + }; + + } +with +{ + encode "XML"; +} + diff --git a/IMS_PART4_IWD_14wk37/Common/IMS_XSD/xml.xsd b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/xml.xsd new file mode 100644 index 0000000..3e391d7 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IMS_XSD/xml.xsd @@ -0,0 +1,117 @@ + + + + + + + See http://www.w3.org/XML/1998/namespace.html and + http://www.w3.org/TR/REC-xml for information about this namespace. + + This schema document describes the XML namespace, in a form + suitable for import by other schema documents. + + Note that local names in this namespace are intended to be defined + only by the World Wide Web Consortium or its subgroups. The + following names are currently defined in this namespace and should + not be used with conflicting semantics by any Working Group, + specification, or document instance: + + base (as an attribute name): denotes an attribute whose value + provides a URI to be used as the base for interpreting any + relative URIs in the scope of the element on which it + appears; its value is inherited. This name is reserved + by virtue of its definition in the XML Base specification. + + lang (as an attribute name): denotes an attribute whose value + is a language code for the natural language of the content of + any element; its value is inherited. This name is reserved + by virtue of its definition in the XML specification. + + space (as an attribute name): denotes an attribute whose + value is a keyword indicating what whitespace processing + discipline is intended for the content of the element; its + value is inherited. This name is reserved by virtue of its + definition in the XML specification. + + Father (in any context at all): denotes Jon Bosak, the chair of + the original XML Working Group. This name is reserved by + the following decision of the W3C XML Plenary and + XML Coordination groups: + + In appreciation for his vision, leadership and dedication + the W3C XML Plenary on this 10th day of February, 2000 + reserves for Jon Bosak in perpetuity the XML name + xml:Father + + + + + This schema defines attributes and an attribute group + suitable for use by + schemas wishing to allow xml:base, xml:lang or xml:space attributes + on elements they define. + + To enable this, such a schema must import this schema + for the XML namespace, e.g. as follows: + <schema . . .> + . . . + <import namespace="http://www.w3.org/XML/1998/namespace" + schemaLocation="http://www.w3.org/2001/03/xml.xsd"/> + + Subsequently, qualified reference to any of the attributes + or the group defined below will have the desired effect, e.g. + + <type . . .> + . . . + <attributeGroup ref="xml:specialAttrs"/> + + will define a type which will schema-validate an instance + element with any of those attributes + + + + In keeping with the XML Schema WG's standard versioning + policy, this schema document will persist at + http://www.w3.org/2001/03/xml.xsd. + At the date of issue it can also be found at + http://www.w3.org/2001/xml.xsd. + The schema document at that URI may however change in the future, + in order to remain compatible with the latest version of XML Schema + itself. In other words, if the XML Schema namespace changes, the version + of this document at + http://www.w3.org/2001/xml.xsd will change + accordingly; the version at + http://www.w3.org/2001/03/xml.xsd will not change. + + + + + + In due course, we should install the relevant ISO 2- and 3-letter + codes as the enumerated possible values . . . + + + + + + + + + + + + + + + See http://www.w3.org/TR/xmlbase/ for + information about this attribute. + + + + + + + + + + diff --git a/IMS_PART4_IWD_14wk37/Common/IP_PTC/HTTP_ASP_TypeDefs.ttcn b/IMS_PART4_IWD_14wk37/Common/IP_PTC/HTTP_ASP_TypeDefs.ttcn new file mode 100644 index 0000000..95bca81 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IP_PTC/HTTP_ASP_TypeDefs.ttcn @@ -0,0 +1,142 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-06-17 14:36:46 +0200 (Tue, 17 Jun 2014) $ +// $Rev: 11745 $ +/******************************************************************************/ + +/** + * Note: 'Thin' Http type defs describing the structures relevant + * for the supplementary services test cases 34.229-1 section 15. + */ + +module HTTP_ASP_TypeDefs { + import from CommonDefs all; + import from IP_ASP_TypeDefs all; // TLSInfo_Type + import from LibSip_SIPTypesAndValues all; // NOTE: the same header definitions are used for HTTP as for SIP (Authorization, ContentType, WwwAuthenticate, AuthenticationInfo, Expires) + + group HTTP_ASP_Definitions { + + //---------------------------------------------------------------------------- + // HTTP Control + + type record HttpRoutingInfo_Type { /* Routing info to distinguish HTTP data for XCAP server and BSF */ + charstring serverAddr, /* IP address of simulated server */ + integer serverPort /* Port number of simulated server */ + }; + + type enumerated HttpAuthenticationMechanism_Type { + noAuthentication, /* no authentication (NOTE: In general "no authentication" is not applicable to conformance testing) */ + httpDigestAuthentication, /* HTTP digest authentication according to 24.623[36] clause 5.2.3.2 and RFC 2617 [37] */ + gaaAuthentication /* GAA based authentication according to 33.222 [35] and 24.109 [33] */ + }; + + + type record HTTP_CTRL_REQ { /* ASP type to configure the http layer; + when any of the optional fields is omitted the previous configuration of this field is kept */ + HttpAuthenticationMechanism_Type authenticationMechanism optional, /* Authentication mechanism */ + TLSInfo_Type tlsInfo optional, /* Description of the TLS connection to be used */ + HttpRoutingInfo_Type xcapServer optional, /* IP address and port of simulated XCAP server */ + HttpRoutingInfo_Type bsfServer optional, /* IP address and port of simulated BSF server */ + IP_DrbInfo_Type drbInfo optional /* DRB info as used by the IP PTC (LTE model, see TS 36.523-3 [30]) */ + }; + + type record HTTP_CTRL_CNF { /* ASP type to confirm HTTP_CTRL_REQ */ + charstring errorInfo optional /* string indicating a system error */ + }; + + //---------------------------------------------------------------------------- + // HTTP Data + + type record HTTP_DATA_IND { /* ASP type for sending a message from the http layer to TTCN; + it transports relevant information of a http Request from the UE to the Tester */ + HttpRoutingInfo_Type routingInfo, /* to distinguish BSF and XCAP server */ + HttpRequest_Type httpRequest + }; + + type record HttpRequest_Type { + HttpRequestLine_Type requestLine, /* RFC 2616 clause 5.1 */ + Authorization authorization optional, /* Authorization in RFC 2616 [27] clause 14.8 (optional; NOTE: Same type definition as for SIP type definitions) */ + ContentType contentType optional, /* Content-Type in RFC 2616 [27] clause 14.17 (optional, NOTE: Same type definition as for SIP type definitions) */ + charstring x3GPPIntendedIdentity optional, /* 3GPP TS 24.109 [33] clause G.2 */ + charstring messageBody optional /* MTSI XCAP Message */ + }; + + type record HttpResponse_Type { + HttpStatusLine_Type statusLine, /* Status-Line in RFC 2616 [27] clause 6.1 */ + WwwAuthenticate wwwauthenticate optional, /* WWW-Authenticate in RFC 2616 [27] clause 14.47 (NOTE: Same type definition as for SIP type definitions) */ + AuthenticationInfo authenticationInfo optional, /* Authentication-Info in RFC 2617 [37] clause 3.2.3 (NOTE: Same type definition as for SIP type definitions) */ + ContentType contentType optional, /* Content-Type in RFC 2616 [27] clause 14.17 (NOTE: Same type definition as for SIP type definitions) */ + Expires expires optional, /* Expires in RFC 2616 [27] clause 14.21 (NOTE: Same type definition as for SIP type definitions) */ + charstring messageBody optional /* MTSI XCAP Message (XML document or XML fragment) */ + }; + + type record HTTP_DATA_REQ { /* ASP type for sending messages from TTCN to the http layer; + it transports information needed by the http layer to generate a http Response to the UE */ + HttpRoutingInfo_Type routingInfo, /* to distinguish BSF and XCAP server */ + HttpResponse_Type httpResponse + }; + + type record HttpRequestLine_Type { /* request line according to RFC 2616 [27] clause 5.1 */ + charstring method, + charstring uri, /* XCAP selection expression, RFC 4825 [26] */ + charstring version + }; + + type record HttpStatusLine_Type { /* status line according to RFC 2616 [27] clause 5.1 */ + charstring version, + integer code, + charstring reasonPhrase + }; + + } with { encode "HttpCodec" } + + //============================================================================ + // Common templates: + + template (present) HttpRoutingInfo_Type cr_HttpRoutingInfo(template (present) charstring p_ServerAddr := ?, + template (present) integer p_ServerPort := ?) := + { /* @status APPROVED (IMS) */ + serverAddr := p_ServerAddr, + serverPort := p_ServerPort + }; + + template (value) HttpRoutingInfo_Type cs_HttpRoutingInfo(charstring p_ServerAddr, + integer p_ServerPort) := + { /* @status APPROVED (IMS) */ + serverAddr := p_ServerAddr, + serverPort := p_ServerPort + }; + + //============================================================================ + // Port definitions + + type port HTTP_CTRL_PORT message + { + out HTTP_CTRL_REQ; + in HTTP_CTRL_CNF; + }; + + type port HTTP_DATA_PORT message + { + in HTTP_DATA_IND; + out HTTP_DATA_REQ; + }; + + type port IP_HTTP_CTRL_PORT message + { + in HTTP_CTRL_REQ; + out HTTP_CTRL_CNF; + }; + + type port IP_HTTP_DATA_PORT message + { + out HTTP_DATA_IND; + in HTTP_DATA_REQ; + }; + +} diff --git a/IMS_PART4_IWD_14wk37/Common/IP_PTC/IP_ASP_Common.ttcn b/IMS_PART4_IWD_14wk37/Common/IP_PTC/IP_ASP_Common.ttcn new file mode 100644 index 0000000..1a09306 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IP_PTC/IP_ASP_Common.ttcn @@ -0,0 +1,55 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-08-25 20:30:56 +0200 (Sun, 25 Aug 2013) $ +// $Rev: 9371 $ +/******************************************************************************/ + +module IP_ASP_Common { + import from IP_ASP_TypeDefs all; + import from CommonIP all; + + //**************************************************************************** + // Auxiliary functions + //---------------------------------------------------------------------------- + + function f_IP_AddrInfo_AddrStr(IP_AddrInfo_Type p_AddrInfo) return charstring + { + var charstring v_AddrStr := ""; + if (ischosen(p_AddrInfo.V4)) { v_AddrStr := p_AddrInfo.V4.Addr; } + if (ischosen(p_AddrInfo.V6)) { v_AddrStr := p_AddrInfo.V6.Addr; } + return v_AddrStr; + } + + function f_IP_AddrInfo_TypeStr(IP_AddrInfo_Type p_AddrInfo) return charstring + { /* @sic R5s130333 change 29: IPv4 -> IP6, IPv6 -> IP4 sic@ */ + var charstring v_TypeStr := ""; + if (ischosen(p_AddrInfo.V4)) { v_TypeStr := "IP4"; } + if (ischosen(p_AddrInfo.V6)) { v_TypeStr := "IP6"; } + return v_TypeStr; + } + + /* + * @desc match IP address sent by the UE in IMS message against given address + * @param p_AddrInfo + * @param p_ReceivedAddrString + * @return boolean + * @status APPROVED (IMS, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_IpAddrMatch(IP_AddrInfo_Type p_AddrInfo, + charstring p_ReceivedAddrString) return boolean + { /* @sic R5w130106 - square brackets to be handled by codec sic@ */ + + if (ischosen(p_AddrInfo.V4)) { + return match(p_ReceivedAddrString, p_AddrInfo.V4.Addr); + } + if (ischosen(p_AddrInfo.V6)) { + return (f_Convert_IPv6Addr2OctString(p_ReceivedAddrString) == f_Convert_IPv6Addr2OctString(p_AddrInfo.V6.Addr)); + } + return false; + } +} diff --git a/IMS_PART4_IWD_14wk37/Common/IP_PTC/IP_ASP_TypeDefs.ttcn b/IMS_PART4_IWD_14wk37/Common/IP_PTC/IP_ASP_TypeDefs.ttcn new file mode 100644 index 0000000..00288be --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IP_PTC/IP_ASP_TypeDefs.ttcn @@ -0,0 +1,783 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-05-26 19:34:53 +0200 (Mon, 26 May 2014) $ +// $Rev: 11335 $ +/******************************************************************************/ + +module IP_ASP_TypeDefs { + /* General Notes: + * NOTE 1: + * In general the handling of IP data shall be independent from the RAT being used on lower layers. + * NOTE 2: + * It shall be possible for SS implementation to reuse existing IP stack implementations in the system adaptor; + * therefore the well-known concept of socket programming shall be supported + * (regardless of whether those are used in the system adaptor implementation or not) + * NOTE 3: + * Since in general at the network side there are several different IP addresses the SS needs to simulate more than one IP address; + * that can be based on a concept of multiple virtual network adaptors + * NOTE 4: + * There is no easy way to control the routing of IP data for an IP connection from above the IP stack + * i.e. there are no parameters at the socket interface to determine e.g. cell id and DRB id + * => another independent logical entity (DRB-MUX) is needed below the IP stack which is responsible to control the routing of IP packets from/to DRBs in different cells of different RATs + * + * Reference: + * An introduction to socket programming can be found in + * UNIX Network Programming Volume 1, Third Edition: The Sockets Networking API + * by W. Richard Stevens, Bill Fenner, Andrew M. Rudoff + */ + + import from CommonDefs all; + + //---------------------------------------------------------------------------- + + group IP_Common { + + type UInt16_Type PortNumber_Type; + + type record IPv4_AddrInfo_Type { /* IPv4 specific info of the socket addr (AF_INET) */ + charstring Addr /* IP Address as string (IP v4 dot notation) to be converted to 32-bit unsigned integer */ + }; + + type record IPv6_AddrInfo_Type { /* IPv6 specific info of the socket addr (AF_INET6); + * NOTE: sin6_flowinfo can be ignored and set to 0 */ + charstring Addr, /* to be converted to sin6_addr */ + UInt32_Type ScopeId optional /* sin6_scope_id + * in general an IPv6 address is like "fe80::1%eth0" with eth0 being the network adaptor mapped to a scope id (Unix) + * assumption: + * for UE conformance testing it is not necessary to distiguish different scopes and the scope id in general can be determined by the system adaptor => omit */ + }; + + type union IP_AddrInfo_Type { + IPv4_AddrInfo_Type V4, + IPv6_AddrInfo_Type V6 + }; + + type record IP_Socket_Type { /* Socket */ + IP_AddrInfo_Type IpAddr optional, /* IP address */ + PortNumber_Type Port optional /* port number */ + }; + + type enumerated InternetProtocol_Type { + udp, + tcp, + icmp, + icmpv6 + }; + + type record IP_Connection_Type { + /* A connection between peer-to-peer entities is unambiguously defined by the protocol (udp/tcp/icmp/icmpv4), the local socket and the remote socket */ + InternetProtocol_Type Protocol, + IP_Socket_Type Local optional, + IP_Socket_Type Remote optional + }; + + } // End of group IP_Common + + //**************************************************************************** + // Configuration of the IP routing table (DRB-MUX) + //---------------------------------------------------------------------------- + + group IP_Config { + /* Configuration of the routing table managed be the system adaptor's DRB-MUX: + * foreach IP connection it is specified which + * - RAT + * - Cell + * - DRB + * to be used. + * The IP connection does not need to be fully specified depending on the role SS plays (e.g. in case of a server role the port number of the remote side is not known in advance). + * The configurations of DRBs within the same cell shall be mutual exclusive. + * + * With the configuration of the IP routing the DRB is configured either in IP or in raw mode: + * either there are entries for the DRB in the routing table (IP mode) or not (raw mode) + * => It is not necessary to reconfigure this for the respective RAT. + * + * Behaviour of the DRB-MUX in UL: + * - SS gets data packet from the lower layers (e.g. PDCP SDU) + * - SS checks whether there is any IP connection configured for this DRB (identified by {RAT, CellId, DrbId}) + * if YES => packet is routed to the IP stack (IP mode) + * if NO => packet is handed over to the DRB port (raw mode) + * NOTE 1: + * If there is any entry for a DRB in the routing table this DRB is considered as being in IP mode and all UL IP packets are sent to the IP stack regardless of whether their addresses match the DRB's routing entries or not (in general 'unknown' packets are discarded by the IP stack) + * => a DRB can be either in IP or in raw mode + * NOTE 2: + * => The SS does not need to evaluate any IP headers to decide whether data shall be routed to the DRB port or to the IP stack (i.e. there is no conflict with unstructured loopback data) + * + * Behaviour of the DRB-MUX in DL: + * - SS gets IP packets from the IP stack for an IP connection + * - SS compares the IP connection (protocol, local/remote IP Addr) against the IP routing table and + * checks whether the corresponding protocol stack is configured at the lower layers => + * 1. no match: + * no entry in the routing table fits to the address in the IP packet + * or the corresponding RB is not configured + * => SS shall raise an error (DRBMUX_COMMON_IND_CNF.Error) + * 2. one match: + * There is exactly one possibility to route the IP packet + * => SS shall send the packet to this RB + * 3. several matches: + * There are more than one DRBs, cells or RATs to which the packet may be routed + * => SS shall raise an error if there is more than one DRB in one cell matching; + * if the DRBs belong to different cells or RATS SS shall send the data to all of them + * (whether this may occur in test cases is FFS) + * + * General notes: + * NOTE 1: + * SS may use the information of the routing table to determine which network adaptors it needs to simulate (implementation dependent); + * in general there will be more than one IP address at the network side. + * NOTE 2: + * In general the routing table is a simplified DL TFT implementation + * NOTE 3: + * When the routing table is empty all DRBs are in raw mode; this shall be the initial condition at the DRB-MUX; + * => for L2 testing in general (and apart from the preamble) there is no need to use/configure the IP_PTC; the configuration of the RAT specific U-plane stacks is not affected + */ + + type record IP_RoutingInfo_Type { + IP_Connection_Type IpInfo, /* IP connection tuple: protocol, local socket, remote socket + * depending on the role the SS plays the following information may be provided + * (informative; even less information can be sufficient): + * 1. TCP/UDP server + * - local IP addr -- provided + * - local port -- provided + * - remote IP addr -- omit + * - remote port -- omit + * 2. TCP/UDP client + * - local IP addr -- provided + * (to inform SS about the local IP addr for this service) + * - local port -- omit; + * for UDP a well-defined port may be defined + * (protocol dependent, e.g. DHCP) + * - remote IP addr -- provided + * - remote port -- provided + * 3. ICMP (in general ICMP may be mapped only to a single DRB) + * - local IP addr -- provided + * (to inform SS about the local IP addr for this service) + * - local port -- n/a (shall be set to omit) + * - remote IP addr -- omit + * - remote port -- n/a (shall be set to omit) + * + * NOTE: + * In case of broadcasts in UL the broadcast address shall match any local IP address; + * in DL for broadcast services typically no remote IP address is specified in the routing table + */ + IP_DrbInfo_Type DRB + }; + + type record of IP_RoutingInfo_Type IP_RoutingTable_Type; /* NOTE: configurations of DRBs within the same cell shall be mutual exclusive */ + + + } // End of group IP_Config + + + //**************************************************************************** + // Handling of IPsec + //---------------------------------------------------------------------------- + + group IPsec_Config { + const integer tsc_IPsec_SPI_Max := 4294967295; + type integer IPsec_SPI_Type (0..tsc_IPsec_SPI_Max); /* security parameter index for IPsec; + According to RFC 2406, SPI values from 0 to 255 are reserved */ + + type enumerated IPsec_IntegrityAlgorithm_Type { + hmac_md5_96, + hmac_sha_1_96 + }; + + type enumerated IPsec_CipheringAlgorithm_Type { + des_ede3_cbc, + aes_cbc, + nociph /* no ciphering */ + }; + + type record IPsec_SecurityKeys_Type { /* to install the security keys */ + bitstring MD5_96Key length (128), + bitstring SHA_1_96Key length (160), + bitstring DES_EDE3_CBCKey length (192), + bitstring AES_CBCKey length (128) + }; + + type record IPsec_SecurityAssociation_Type { /* single security association (SA); + for configuration of an SA at the SS all fields are mandatory; + to release an SA the optional information is omitted */ + IPsec_SPI_Type SPI, + charstring SrcAddress, + charstring DestAddress, + UInt16_Type SrcPort, + UInt16_Type DestPort, + IPsec_IntegrityAlgorithm_Type IntegrityAlgorithm optional, /* mandatory to set-up an SA */ + IPsec_CipheringAlgorithm_Type CipheringAlgorithm optional /* mandatory to set-up an SA */ + }; + + type record of IPsec_SecurityAssociation_Type IPsec_SecurityAssociationList_Type; + + type record IPsec_Configure_Type { /* add new security associations; existing SAs are not affected */ + IPsec_SecurityAssociationList_Type SA_List, + IPsec_SecurityKeys_Type SecurityKeys + }; + + type record IPsec_Release_Type { /* release security associations; + * NOTE: + * in context with multiple PDNs it cannot be ensured that all SPIs are unique; + * e.g. the UE may use the same SPI values in different PDNs in which case uniqueness cannot be achieved + * furthermore it depends on the system implementation how entries in the IPsec SAD and SPD are administrated + * => to release SAs the SS gets the same information as for configuration but without the security algorithms */ + IPsec_SecurityAssociationList_Type SA_List + }; + + } // end of group IPsec_Config + + //**************************************************************************** + // Handling of IP data and IP connections + //---------------------------------------------------------------------------- + + group IP_SocketHandling { + /* Handling of IP data and IP connections + * NOTE 1: + * In general IP connections are distuished by the tuple {protocol, local socket, remote socket}; + * this information is used at the interface between TTCN and the system adaptor. + * It is up the the system adaptor implementation to associate the IP connection with the internal socket (file descriptor; implementation dependent) + * NOTE 2: + * In general the association of the IP connections to (internal) sockets and the routing table for the DRB mpping (as configured with IP_RoutingTable_Type) are independent from each other */ + + group Socket_Common { + + type union IP_SockOpt_Type { /* socket options acc. to the setsockopt system call (i.e. for level=SOL_SOCKET in case of Berkeley socket API); + * NOTE: + * only options being relevant for a specific applications (upon a socket) are configured by TTCN + * other options (e.g. SO_REUSEADDR) are out of TTCN and therefore a matter of system adaptor implementation */ + boolean SO_BROADCAST, /* set to true when IP broadcast messages shall be allowed for a port; + * this is required e.g. in case of DHCP */ + integer IP_MTU_SIZE /* MTU size to be used for IP data; + * NOTEs: + * - Even though the MTU size is defined as socket option it shall be the same for all sockets of a given interface (i.e. at least within one PDN the MTU size shall be the same) + * - in general a PIXIT is used as constant value for all sockets */ + }; + + type record of IP_SockOpt_Type IP_SockOptList_Type; + + type union IP_SocketError_Type { /* used to indicate errors related to sockets; + * the IP_Connection shall contain as much address information as available at the system adaptor */ + Null_Type InvalidAddress, /* TTCN error: e.g. invalid or incomplete address information */ + integer System /* system error caused by system call; + * the integer value may be used for validation but shall not be evaluated by TTCN */ + }; + + } // end of sub-group Socket_Common + + group Socket_Datagram { + + type octetstring Datagram_Content_Type; /* data as sent/received with sendto()/recvfrom() on UDP or ICMP socket; + * NOTE: + * For ICMP the data may depend on the socket options (FFS); + * in general it does not include the IP header and + * the checksum of the ICMP packet needs to be calculated/checked in TTCN */ + + type record Datagram_DL_Type { /* datagram to be sent at a UDP or ICMP socket */ + Datagram_Content_Type Buffer /* content of the IP packet */ + }; + + type record Datagram_UL_Type { /* datagram as received on a UDP or ICMP socket */ + Datagram_Content_Type Buffer, /* content of the IP packet */ + IP_DrbInfo_Type DrbInfo optional /* "interface id" where the data comes from in case of broadcast or multicast packets: + * for the LTE test model this is the DRB on which the IP packet has been received; + * the information is necessary when the SS cannot resolve an IP address being assigned to that DRB. + * => when the SS provides a brodacst or multicast address as local address in the ConnectionId of the ASP, the SS shall provide the DRB information in this field + * When the ConnectionId of the ASP is fully specified and unique (unicast address at least for local address) the DrbId is ignored by TTCN */ + }; + + } // end of sub-group Socket_Datagram + + //============================================================================ + + group TCP_Socket { /* TCP primitives used on the IP port */ + + type enumerated InternetApplication_Type { ims, http }; /* as TCP is stream oriented SS may need information about which criteria to be applied to get start/end of an application message */ + + type enumerated TLS_Type { /* Type of TLS connection to be used (if any) */ + noTLS, + pskTLS, + certTLS + }; + + type enumerated TLS_CIPHER_Type { /* Cipher suite to be used */ + noCipher, + psk_3DES_EDE_CBC_SHA, + psk_AES_128_CBC_SHA + }; + + type record TLSInfo_Type { + TLS_Type tlsType, /* Type of TLS connection to be used (if any) */ + octetstring psk optional, /* Pre shared key for TLS ciphering */ + TLS_CIPHER_Type cipherSuite /* Cipher suite to be used */ + }; + + type record TCP_ConnectRequest_Type { /* TCP client: -> 'connect' system call */ + IP_SockOptList_Type SockOptList, /* when there are no options to configure the list is empty */ + InternetApplication_Type Application /* to specify start/end criteria for application messages */ + }; + + type record TCP_Listen_Type { /* TCP server: -> 'listen' system call */ + IP_SockOptList_Type SockOptList, /* when there are no options to configure the list is empty */ + InternetApplication_Type Application, /* to specify start/end criteria for application messages */ + TLSInfo_Type TLSInfo optional /* to support TLS for HTTP server implementation */ + }; + + type octetstring TCP_Data_Type; /* data as sent/received with send()/recv() on a TCP socket */ + + type union TCP_CtrlRequest_Type { + TCP_ConnectRequest_Type ConnectReq, /* request a 'connect' to a remote server + * + * system calls (informative) + * socket -- get file descriptor + * (setsockopt) -- normally not needed + * bind -- assign local IP addr (to cope with multiple IP addresses) and dedicated port number (if local port is given) + * connect -- connect to the client + * + * IP_Connection: + * protocol -- tcp + * local IP addr -- mandatory to distinguish different network adaptors + * local port -- omit (ephemeral port will be assigned by the system) or specific port to be used for this connection (e.g. to bind a given port number to the IMS client) + * remote IP addr -- mandatory + * remote port -- mandatory + */ + TCP_Listen_Type Listen, /* establish a server at the local (SS) side + * + * system calls (informative) + * socket -- get file descriptor + * (setsockopt) -- if needed + * bind -- assign local IP addr and port + * listen -- await incoming connection + * + * IP_Connection: + * protocol -- tcp + * local IP addr -- mandatory to distinguish different network adaptors + * local port -- mandatory + * remote IP add -- omit + * remote port -- omit + */ + Null_Type Close /* close a connection + * + * system calls (informative): + * close + * + * IP_Connection: + * protocol -- tcp + * local IP addr -- mandatory + * local port -- mandatory + * remote IP addr -- mandatory for TCP connections, omit for TCP server + * remote port -- mandatory for TCP connections, omit for TCP server + */ + }; + + type union TCP_DataRequest_Type { + TCP_Data_Type Send /* send data + * + * system calls (informative): + * send or write + * + * IP_Connection: + * protocol -- tcp + * local IP addr -- mandatory + * local port -- mandatory + * remote IP addr -- mandatory + * remote port -- mandatory + */ + }; + + type union TCP_CtrlIndication_Type { + Null_Type ConnectCnf, /* confirm a 'connect' to a remote server + * + * system calls (informative): + * getsockname -- get local port (ephemeral port assiged by the system) + * + * IP_Connection: + * protocol -- tcp + * local IP addr -- mandatory (as in corresponding TCP_ConnectRequest) + * local port -- mandatory (if there is more than one connection to the same server the local port is necessary to distinguish the connections) + * remote IP addr -- mandatory (as in corresponding TCP_ConnectRequest) + * remote port -- mandatory (as in corresponding TCP_ConnectRequest) + */ + Null_Type Accept, /* sent by the SS when it 'accepts' an incoming connection + * + * system calls (informative): + * accept + * + * IP_Connection: + * protocol -- tcp + * local IP addr -- mandatory (as in corresponding TCP_ListenRequest) + * local port -- mandatory (as in corresponding TCP_ListenRequest) + * remote IP addr -- mandatory (as gotten from 'accept') + * remote port -- mandatory (as gotten from 'accept') + */ + Null_Type Close, /* indicate 'close' by the remote side + * + * system calls (informative): + * indicated by recv or read + * + * IP_Connection: + * protocol -- tcp + * local IP addr -- mandatory + * local port -- mandatory + * remote IP addr -- mandatory + * remote port -- mandatory + */ + Null_Type CloseCnf /* Confirmation for 'close' request; necessary since for TCP there are IP packets to release the connection + * + * system calls (informative): + * close + * + * IP_Connection: + * protocol -- tcp + * local IP addr -- mandatory + * local port -- mandatory + * remote IP addr -- mandatory for TCP connections, omit for TCP server + * remote port -- mandatory for TCP connections, omit for TCP server + */ + }; + + type union TCP_DataIndication_Type { + TCP_Data_Type Recv /* receive data + * + * system calls (informative): + * recv or read + * + * IP_Connection: + * protocol -- tcp + * local IP addr -- mandatory + * local port -- mandatory + * remote IP addr -- mandatory + * remote port -- mandatory + */ + }; + + } // end of sub-group TCP_Socket + + //============================================================================ + + group UDP_Socket { /* UDP primitives used on the IP port + * NOTE: + * In principle a UDP socket may communicate with different remote entities; + * therefore the system adaptor may associate the socket handle with the local socket only + * (local IP address and local port) + */ + + type record UDP_SocketReq_Type { /* to establish a UDP server or to bind local port number */ + IP_SockOptList_Type SockOptList /* e.g. to allow broadcast messages; + * when there are no options to configure the list is empty */ + }; + + type union UDP_CtrlRequest_Type { + UDP_SocketReq_Type SocketReq, /* request the system adaptor to bind a socket to a local address; + * this is needed in general when the system adaptor acts as + * 1. UDP server + * 2. UDP client when it uses a well-known port rather than an ephemeral port (this is e.g. for DHCP) + * 3. UDP client when a local address needs to be bond (e.g. when there are several local addresses) + * + * system calls (informative): + * socket -- get file descriptor + * (setsockopt) -- needed e.g. to allow broad cast message + * bind -- assign local IP address (to cope with multiple IP addresses) and local port (in case of well-known local port) + * + * IP_Connection: + * protocol -- udp + * local IP addr -- mandatory (to distiguish multiple IP addresses) + * local port -- optional (mandatory in case of a UDP server) + * remote IP addr -- omit + * remote port -- omit + */ + Null_Type Close /* release local socket + * + * system calls (informative): + * close + * + * IP_Connection: + * protocol -- udp + * local IP addr -- mandatory (to identify local socket) + * local port -- mandatory (to identify local socket) + * remote IP addr -- omit + * remote port -- omit + */ + }; + + type union UDP_DataRequest_Type { + Datagram_DL_Type SendTo /* send data to (any) remote socket; + * NOTE: + * To simplify implementation of the system adaptor the local socket shall be bond in any case (using 'SocketReq') to specify the local IP address before sending data; + * (in general the sendto system call can be used without explicitly binding the socket before; + * in this case the port gets implicitly bond to an ephemeral port and the default IP address is used) + * + * system calls (informative): + * sendto + * + * IP_Connection: + * protocol -- udp + * local IP addr -- mandatory (to identify local socket) + * local port -- mandatory (to identify local socket) + * remote IP addr -- mandatory (to address remote socket) + * remote port -- mandatory (to address remote socket) + */ + }; + + type union UDP_CtrlIndication_Type { + Null_Type SocketCnf /* confirm 'SocketReq' and tell TTCN about assignment of ephemeral port; + * + * system calls (informative): + * getsockname -- get local port (ephemeral port assigned by the system; not needed if local port is well-known) + * + * IP_Connection: + * protocol -- udp + * local IP addr -- mandatory + * local port -- mandatory (well-known or ephemeral port asssigned by the system) + * remote IP addr -- omit + * remote port -- omit + */ + }; + + type union UDP_DataIndication_Type { + Datagram_UL_Type RecvFrom /* receive data; + * + * system calls (informative): + * recvfrom -- get data and src addr + * + * IP_Connection: + * protocol -- udp + * local IP addr -- mandatory (see note) + * local port -- mandatory + * remote IP addr -- mandatory (as gotten from recvfrom) + * remote port -- mandatory (as gotten from recvfrom) + * + * NOTE: + * The UE may send a UDP packet as broadcast (IP Addr 255.255.255.255 - e.g. in case of DHCP) or multicast (e.g. ICMPv6) + * SS shall consider a broadcast address as matching every IP for UL and DL; + * the SS shall not replace the broadcast/multicast address by the local unicast address, but shall provide DRB information in RecvFrom; + * example: + * - SS gets DHCPDISCOVER with DEST_Addr=255.255.255.255 DEST_Port=67, SRC_Addr=0.0.0.0 SRC_Port=68 + * - TTCN gets DHCPDISCOVER with local Addr=(255.255.255.255 Port=67), remote Addr=(0.0.0.0 Port=68), DrbId=(LTE, cell1, DRB1) + * - TTCN sends DHCPOFFER with local Addr=(local IP Addr Port=67), remote Addr=(255.255.255.255 Port=68) + */ + }; + + } // end of sub-group UDP_Socket + + //============================================================================ + + group ICMP_Socket { /* ICMP primitives used on the IP port + * NOTE: + * the local side is identified by the protocol and in general by the local IP address + */ + + type record ICMP_SocketReq_Type { /* to establish a raw socket to send/receive ICMP packets */ + IP_SockOptList_Type SockOptList /* e.g. to set the IP_HDRINCL socket option (to include the IP header in the data buffer) -> FFS + * when there are no options to configure the list is empty */ + }; + + type union ICMP_CtrlRequest_Type { + ICMP_SocketReq_Type SocketReq, /* request the system adaptor to open a raw socket (IPv4 or IPv6) + * + * system calls (informative): + * socket -- get file descriptor (IPPROTO_ICMP or IPPROTO_IPV6); + * (setsockopt) -- optional; to set socket options + * bind -- assign local IP address (to cope with multiple IP addresses) + * + * IP_Connection: + * protocol -- icmp or icmpv6 + * local IP addr -- mandatory (to distiguish multiple IP addresses) + * local port -- omit (not applicable for ICMP) + * remote IP addr -- omit + * remote port -- omit (not applicable for ICMP) + */ + Null_Type Close /* release local socket + * + * system calls (informative): + * close + * + * IP_Connection: + * protocol -- icmp or icmpv6 + * local IP addr -- mandatory (to identify local socket) + * local port -- omit + * remote IP addr -- omit + * remote port -- omit + */ + }; + + type union ICMP_DataRequest_Type { + Datagram_DL_Type SendTo /* send datagram + * + * system calls (informative): + * sendto + * + * IP_Connection: + * protocol -- icmp or icmpv6 + * local IP addr -- mandatory (to identify local socket) + * local port -- omit + * remote IP addr -- mandatory + * remote port -- omit + */ + }; + + type union ICMP_CtrlIndication_Type { + Null_Type SocketCnf /* confirm 'SocketReq' + * + * system calls (informative): + * (SocketCnf is sent when all system calls for SocketReq have been successful) + * + * IP_Connection: + * protocol -- icmp or icmpv6 + * local IP addr -- mandatory + * local port -- omit + * remote IP addr -- omit + * remote port -- omit + */ + }; + + type union ICMP_DataIndication_Type { + Datagram_UL_Type RecvFrom /* receive datagram + * + * system calls (informative): + * recvfrom -- get data and src addr + * + * IP_Connection: + * protocol -- icmp or icmpv6 + * local IP addr -- mandatory (see note) + * local port -- omit + * remote IP addr -- mandatory (as gotten from recvfrom) + * remote port -- omit + * + * NOTE: + * As for UDP there may be multicast/broadcast packets. + * In this case - as for UDP - the SS shall provide the DRB information in RecvFrom. + */ + }; + + } // end of sub-group ICMP_Socket + + //---------------------------------------------------------------------------- + + group Socket_Primitives { + + type union IP_CtrlRequest_Type { + TCP_CtrlRequest_Type TCP, + UDP_CtrlRequest_Type UDP, + ICMP_CtrlRequest_Type ICMP + }; + + type union IP_DataRequest_Type { + TCP_DataRequest_Type TCP, + UDP_DataRequest_Type UDP, + ICMP_DataRequest_Type ICMP + }; + + type union IP_CtrlIndication_Type { + TCP_CtrlIndication_Type TCP, + UDP_CtrlIndication_Type UDP, + ICMP_CtrlIndication_Type ICMP, + IP_SocketError_Type Error + }; + + type union IP_DataIndication_Type { + TCP_DataIndication_Type TCP, + UDP_DataIndication_Type UDP, + ICMP_DataIndication_Type ICMP + }; + + } // end of sub-group Socket_Primitives + + } // end of group IP_SocketHandling + + //---------------------------------------------------------------------------- + + + group System_Interface { + + //**************************************************************************** + // ASP definitions + //**************************************************************************** + + type union DRBMUX_CONFIG_REQ { + /* NOTE 1: + * There is just one primitive to configure the whole routing table. + * It is not foreseen to add, remove or manipulate single entries but the table is managed in TTCN and completely configured on any change; (otherwise it might get complicated to identify single entries) + * NOTE 2: + * the SS's routing table shall be empty at the beginning and can be cleared by an empty record (DRBMUX_CONFIG_REQ.RoutingInfo = {}) + * NOTE 3: + * In general a reconfiguration of the routing table during a test case would be necessary only if an ephemeral port is needed to distinguish different routing + * (e.g. when there are several TCP connections of the same service routed to different DRBs) */ + IP_RoutingTable_Type RoutingInfo + }; + + + type union DRBMUX_COMMON_IND_CNF { + Null_Type Confirm, /* confirm DRBMUX_CONFIG_REQ */ + Null_Type Error /* indication of errors at the DRB-MUX: + * An Error shall be raised by the DRB-MUX e.g. in the following cases: + * - in DL when there are IP packets which cannot be routed to any DRB + * i.e. the IP packet does not match to any entry in the routing table or the corresponding RB is not configured + * - in DL when there are several DRBs possible for routing in the same cell + */ + }; + + type union IPSEC_CONFIG_REQ { + IPsec_Configure_Type Configure, + IPsec_Release_Type Release + }; + + type union IPSEC_CONFIG_CNF { + Null_Type Confirm, /* confirm IPSEC_CONFIG_REQ */ + Null_Type Error /* to indicate invalid configuration of IPsec */ + }; + + type record IP_SOCKET_CTRL_REQ { + IP_Connection_Type ConnectionId, + IP_CtrlRequest_Type Req + }; + + type record IP_SOCKET_DATA_REQ { + IP_Connection_Type ConnectionId, + IP_DataRequest_Type Req + }; + + type record IP_SOCKET_CTRL_IND { + IP_Connection_Type ConnectionId, + IP_CtrlIndication_Type Ind + }; + + type record IP_SOCKET_DATA_IND { + IP_Connection_Type ConnectionId, + IP_DataIndication_Type Ind + }; + + type union IP_SOCKET_REQ { + IP_SOCKET_CTRL_REQ CTRL, + IP_SOCKET_DATA_REQ DATA + }; + + type union IP_SOCKET_IND { + IP_SOCKET_CTRL_IND CTRL, + IP_SOCKET_DATA_IND DATA + }; + + //**************************************************************************** + // Port definitions + //**************************************************************************** + + type port IP_CONTROL_PORT message { + out DRBMUX_CONFIG_REQ; + in DRBMUX_COMMON_IND_CNF; + }; + + type port IPSEC_CONTROL_PORT message { + out IPSEC_CONFIG_REQ; + in IPSEC_CONFIG_CNF; + }; + + type port IP_SOCKET_PORT message { + out IP_SOCKET_REQ; + in IP_SOCKET_IND; + }; + + } // End group System_Interface + +} diff --git a/IMS_PART4_IWD_14wk37/Common/IP_PTC/IP_PTC_CtrlMsgs.ttcn b/IMS_PART4_IWD_14wk37/Common/IP_PTC/IP_PTC_CtrlMsgs.ttcn new file mode 100644 index 0000000..97efa7f --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IP_PTC/IP_PTC_CtrlMsgs.ttcn @@ -0,0 +1,280 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 22:08:20 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12181 $ +/******************************************************************************/ + + +module IP_PTC_CtrlMsgs { + /* definition of coordination messages to be used by EUTRA_PTC/UTRAN_PTC/GERAN_PTC do configure + routing table for the IP data */ + + import from CommonDefs all; + import from IP_ASP_TypeDefs all; + import from IP_PTC_Templates all; + + //============================================================================ + + type record IP_Start_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + PDN_Index_Type PdnId, + IP_DrbInfo_Type DrbInfo + }; + + type union IP_Stop_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + Null_Type All, + PDN_Index_Type PdnId + }; + + + type record IP_SendRouterAdvertisement_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + PDN_Index_Type PdnId + }; + + //============================================================================ + + type union IP_ConfigReq_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + IP_Start_Type StartIP, + IP_Stop_Type StopIP, /* @sic R5s131000: Null_Type replaced by IP_Stop_Type sic@ */ + Null_Type GeranCnf, /* e.g. to confirm GeranTrigger */ + IP_DrbInfo_Type ChangeCell, /* @sic R5-125676: enhancement for IRAT sic@ */ + IP_SendRouterAdvertisement_Type SendRouterAdvertisement, + IP_RoutingInfo_Type Routing /* @sic R5s130681 change 3: handling of RTP data sic@ */ + }; + + type record IP_GeranTrigger_Type { + integer CellId + }; + + type union IP_Indication_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + @sic R5-133612: trigger to GERAN sic@ */ + Null_Type Cnf, + IP_DrbInfo_Type GeranTrigger + }; + + + //============================================================================ + + type port IP_RAT_CTRL_PORT message { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + out IP_ConfigReq_Type; + in IP_Indication_Type; + }; + + type port IP_PTC_CTRL_PORT message { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + in IP_ConfigReq_Type; + out IP_Indication_Type; + }; + + //**************************************************************************** + // EUTRA/UTRAN/GERAN side + //---------------------------------------------------------------------------- + // Commands: + + template (value) IP_ConfigReq_Type cs_IP_StartReq(PDN_Index_Type p_PdnId, + template (value) IP_DrbInfo_Type p_DrbInfo) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + StartIP := { + PdnId := p_PdnId, + DrbInfo := p_DrbInfo + } + }; + + template (value) IP_Stop_Type cs_IP_StopAll := {All := true}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + template (value) IP_Stop_Type cs_IP_StopPDN(PDN_Index_Type p_PdnId) := {PdnId := p_PdnId}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_IRAT, POS) */ + + template (value) IP_ConfigReq_Type cs_IP_StopReq(template (value) IP_Stop_Type p_IP_Stop) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5s131000: new parameter p_IP_Stop sic@ */ + StopIP := p_IP_Stop + }; + + template (value) IP_ConfigReq_Type cs_IP_GeranCnf := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + GeranCnf := true + }; + + template (value) IP_ConfigReq_Type cs_IP_ChangeEutraCellReq(EUTRA_CellId_Type p_EutraCellId, + template (omit) IP_DrbId_Type p_DrbId := omit) := + { /* @sic R5-125676: new parameter p_DrbId sic@ */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + ChangeCell := { + Eutra := { + CellId := p_EutraCellId, + DrbId := p_DrbId + } + } + }; + + template (value) IP_ConfigReq_Type cs_IP_ChangeUtranCellReq(integer p_UtranCellId, + IP_DrbId_Type p_DrbId) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + ChangeCell := { + Utran := { + CellId := p_UtranCellId, + DrbId := p_DrbId + } + } + }; + + template (value) IP_ConfigReq_Type cs_IP_SendRouterAdvertisementReq(PDN_Index_Type p_PdnId) := + { + SendRouterAdvertisement := { + PdnId := p_PdnId + } + }; + + template (value) IP_ConfigReq_Type cs_IP_ConfigureRoutingReq(InternetProtocol_Type p_Protocol, + PortNumber_Type p_MediaPort, + template (omit) IP_AddrInfo_Type p_IpAddrRemoteUE, + template (value) IP_DrbInfo_Type p_DrbInfo) := + { /* NOTE: p_IpAddrRemoteUE the IP address of the simulated remote UE (i.e. a 'local' address in terms of the routing table) */ + Routing := { + IpInfo := cs_IP_ConnectionId(p_Protocol, cs_IP_Socket(p_IpAddrRemoteUE, p_MediaPort)), + DRB := p_DrbInfo + } + }; + + + template (present) IP_Indication_Type cr_IP_CommonCnf := {Cnf := true}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + template (present) IP_Indication_Type cr_IP_GeranTrigger := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + GeranTrigger := { + Geran := ? + } + }; + + //**************************************************************************** + // IP PTC side + //---------------------------------------------------------------------------- + + template (present) IP_ConfigReq_Type cr_IP_CtrlAnyReq := ?; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + template (value) IP_Indication_Type cs_IP_CommonCnf := {Cnf := true}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + + template (value) IP_Indication_Type cs_IP_GeranTrigger(template (value) IP_DrbInfo_Type p_DrbInfo) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + GeranTrigger := p_DrbInfo + }; + + //**************************************************************************** + // templates for DRB info + //---------------------------------------------------------------------------- + + template (value) IP_DrbInfo_Type cs_DrbInfo_EUTRA(EUTRA_CellId_Type p_CellId, + IP_DrbId_Type p_DrbId) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5w110204: change of IP_EUTRA_DrbInfo_Type sic@ */ + Eutra := { + CellId := p_CellId, + DrbId := p_DrbId + } + }; + + template (value) IP_DrbInfo_Type cs_DrbInfo_UTRAN(UTRAN_CellId_Type p_CellId, + IP_DrbId_Type p_DrbId) := + { /* @status APPROVED (LTE_A, LTE_IRAT, UTRAN) */ + Utran := { + CellId := f_UtranCellId2Int(p_CellId), + DrbId := p_DrbId + } + }; + + template (value) IP_DrbInfo_Type cs_DrbInfo_GERAN(integer p_CellId, + IP_DrbId_Type p_DrbId) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + Geran := { + CellId := p_CellId, + DrbId := p_DrbId + } + }; + + //**************************************************************************** + // Functions to be called from the test cases + //---------------------------------------------------------------------------- + + /* + * @desc RAT independent function to start DHCP and ICMPv6 server for given PDN + * @param p_Port + * @param p_PdnIndex .. index of the PDN + * @param p_DrbInfo .. DRB on which user plane signalling happens for this PDN + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_IP_Handling_Start(IP_RAT_CTRL_PORT p_Port, + PDN_Index_Type p_PdnIndex, + template (value) IP_DrbInfo_Type p_DrbInfo) + { /* @sic R5-113734 change 8: replacing former f_DHCPv4_Start, f_ICMPv6_Start sic@ */ + p_Port.send(cs_IP_StartReq(p_PdnIndex, p_DrbInfo)); + p_Port.receive(cr_IP_CommonCnf); + } + + /* + * @desc RAT independent function to stop all DHCP and ICMPv6 servers + * @param p_Port + * @param p_IP_Stop (default value: cs_IP_StopAll) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_IP_Handling_Stop(IP_RAT_CTRL_PORT p_Port, + template (value) IP_Stop_Type p_IP_Stop := cs_IP_StopAll) + { /* @sic R5-113734 change 8: replacing former f_DHCPv4_Stop, f_ICMPv6_Stop sic@ */ + /* @sic R5s131000: new parameter p_IP_Stop sic@ */ + p_Port.send(cs_IP_StopReq(p_IP_Stop)); + p_Port.receive(cr_IP_CommonCnf); + } + + /* + * @desc Function to change the EUTRA cell for all entries of the routing table + * @param p_Port + * @param p_EutraCellId .. new cell + * @param p_DrbId (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_IP_ChangeEutraCell(IP_RAT_CTRL_PORT p_Port, + EUTRA_CellId_Type p_EutraCellId, + template (omit) IP_DrbId_Type p_DrbId := omit) + { /* @sic R5-125676: new parameter p_DrbId sic@ */ + p_Port.send(cs_IP_ChangeEutraCellReq(p_EutraCellId, p_DrbId)); + p_Port.receive(cr_IP_CommonCnf); + } + + /* + * @desc Function to change the UTRAN cell for all entries of the routing table + * @param p_Port + * @param p_UtranCellId + * @param p_DrbId + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_IP_ChangeUtranCell(IP_RAT_CTRL_PORT p_Port, + integer p_UtranCellId, + IP_DrbId_Type p_DrbId) + { + p_Port.send(cs_IP_ChangeUtranCellReq(p_UtranCellId, p_DrbId)); + p_Port.receive(cr_IP_CommonCnf); + } + + /* + * @desc Function to trigger the IP PTC to sent out an (unsolicited) router advertisement + * @param p_Port + * @param PDN_Index_Type .. index of the PDN + * @status + */ + function f_IP_RouterAdvertisement(IP_RAT_CTRL_PORT p_Port, + PDN_Index_Type p_PdnIndex) + { + p_Port.send(cs_IP_SendRouterAdvertisementReq(p_PdnIndex)); + p_Port.receive(cr_IP_CommonCnf); + } + + function f_IP_ConfigureRTP_EUTRA(IP_RAT_CTRL_PORT p_Port, + PortNumber_Type p_MediaPort, + template (omit) IP_AddrInfo_Type p_IpAddrRemoteUE, + EUTRA_CellId_Type p_EutraCellId, + IP_DrbId_Type p_DrbId) + { /* configure routing of e.g. RTP data on media port */ + p_Port.send(cs_IP_ConfigureRoutingReq(udp, p_MediaPort, p_IpAddrRemoteUE, cs_DrbInfo_EUTRA(p_EutraCellId, p_DrbId))); + p_Port.receive(cr_IP_CommonCnf); + } + +} diff --git a/IMS_PART4_IWD_14wk37/Common/IP_PTC/IP_PTC_Templates.ttcn b/IMS_PART4_IWD_14wk37/Common/IP_PTC/IP_PTC_Templates.ttcn new file mode 100644 index 0000000..621311d --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/IP_PTC/IP_PTC_Templates.ttcn @@ -0,0 +1,426 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-08-28 15:21:40 +0200 (Thu, 28 Aug 2014) $ +// $Rev: 11943 $ +/******************************************************************************/ + +module IP_PTC_Templates { + + import from IP_ASP_TypeDefs all; + import from CommonIP all; + import from Parameters all; + + //**************************************************************************** + // IP Connections + //---------------------------------------------------------------------------- + + template (value) IP_AddrInfo_Type cs_IPv4Addr(template (value) charstring p_IPv4Addr) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + V4 := { + Addr := p_IPv4Addr + } + }; + + template (value) IP_AddrInfo_Type cs_IPv6Addr(template (value) charstring p_IPv6Addr) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + V6 := { + Addr := p_IPv6Addr, + ScopeId := omit + } + }; + + template (value) IP_Socket_Type cs_IP_Socket(template (omit) IP_AddrInfo_Type p_IpAddr, + template (omit) PortNumber_Type p_PortNumber) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + IpAddr := p_IpAddr, + Port := p_PortNumber + }; + + template (present) IP_Socket_Type cr_IP_Socket(template IP_AddrInfo_Type p_IpAddr, + template PortNumber_Type p_PortNumber) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + IpAddr := p_IpAddr, + Port := p_PortNumber + }; + + template (present) IP_Socket_Type cr_IP_Socket_Any := cr_IP_Socket(?, ?); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + template (present) IP_Socket_Type cr_IP_Socket_Omit := cr_IP_Socket(omit, omit); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + template (present) IP_Socket_Type cr_IP_Socket_AnyICMP := cr_IP_Socket(?, omit); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + + template (value) IP_Connection_Type cs_IP_ConnectionId(InternetProtocol_Type p_Protocol, + template (omit) IP_Socket_Type p_LocalSocket := omit, + template (omit) IP_Socket_Type p_RemoteSocket := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + Protocol := p_Protocol, + Local := p_LocalSocket, + Remote := p_RemoteSocket + }; + + template (present) IP_Connection_Type cr_IP_ConnectionId(InternetProtocol_Type p_Protocol, + template IP_Socket_Type p_LocalSocket, + template IP_Socket_Type p_RemoteSocket) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + Protocol := p_Protocol, + Local := p_LocalSocket, + Remote := p_RemoteSocket + }; + + template (value) IP_Connection_Type cs_UDP_ConnectionId(template (omit) IP_Socket_Type p_LocalSocket, + template (omit) IP_Socket_Type p_RemoteSocket := omit) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_IP_ConnectionId(udp, p_LocalSocket, p_RemoteSocket); + + + template (present) IP_Connection_Type cr_UDP_ConnectionId(template IP_Socket_Type p_LocalSocket, + template IP_Socket_Type p_RemoteSocket) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + cr_IP_ConnectionId(udp, p_LocalSocket, p_RemoteSocket); + + template (value) IP_Connection_Type cs_ICMPv6_ConnectionId(template (omit) IP_Socket_Type p_LocalSocket, + template (omit) IP_Socket_Type p_RemoteSocket := omit) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_IP_ConnectionId(icmpv6, p_LocalSocket, p_RemoteSocket); + + + template (present) IP_Connection_Type cr_ICMPv6_ConnectionId(template IP_Socket_Type p_LocalSocket, + template IP_Socket_Type p_RemoteSocket) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + cr_IP_ConnectionId(icmpv6, p_LocalSocket, p_RemoteSocket); + + template (value) IP_Connection_Type cs_TCP_ConnectionId(template (omit) IP_Socket_Type p_LocalSocket, + template (omit) IP_Socket_Type p_RemoteSocket := omit) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_IP_ConnectionId(tcp, p_LocalSocket, p_RemoteSocket); + + + template (present) IP_Connection_Type cr_TCP_ConnectionId(template IP_Socket_Type p_LocalSocket, + template IP_Socket_Type p_RemoteSocket) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + cr_IP_ConnectionId(tcp, p_LocalSocket, p_RemoteSocket); + + /* + * @desc convert charstring to a the IMS_PTC's type 'IP_AddrInfo_Type' + * @param p_IpAddress + * @return template (value) IP_AddrInfo_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_Char2IpAddress(charstring p_IpAddress) return template (value) IP_AddrInfo_Type + { + var template (value) IP_AddrInfo_Type v_AddrInfo; + + if (f_IpAddressIsIPv4(p_IpAddress)) { + v_AddrInfo := cs_IPv4Addr(p_IpAddress); + } + else { + v_AddrInfo := cs_IPv6Addr(p_IpAddress); + } + return v_AddrInfo; + } + + //**************************************************************************** + // Requests + //---------------------------------------------------------------------------- + /* + * @desc Build-up list of socket options + * @param p_AllowBroadcast (default value: false) + * @return IP_SockOptList_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_IP_SockOptList(boolean p_AllowBroadcast:= false ) return IP_SockOptList_Type + { /* @sic R5w130307: MTU size sic@ */ + var IP_SockOptList_Type v_SockOptList; + var integer i := 0; + + v_SockOptList := {}; + if (p_AllowBroadcast) { + v_SockOptList[i] := {SO_BROADCAST := true}; + i := i + 1; + } + + v_SockOptList[i] := {IP_MTU_SIZE := px_IP_MTU_Size}; + + return v_SockOptList; + } + + // UDP: + + template (value) IP_SOCKET_REQ cs_UDP_SOCKET_REQ(template (value) IP_Socket_Type p_LocalSocket, + boolean p_AllowBroadcast) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + CTRL := { + ConnectionId := cs_UDP_ConnectionId(p_LocalSocket, omit), + Req := { + UDP := { + SocketReq := { + SockOptList := fl_IP_SockOptList(p_AllowBroadcast) + } + } + } + } + }; + + template (value) IP_SOCKET_REQ cs_UDP_DATA_REQ(template (value) IP_Socket_Type p_LocalSocket, + template (value) IP_Socket_Type p_RemoteSocket, + template (value) octetstring p_UDP_Data) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + /* @sic R5-113734 change 8 sic@ */ + DATA := { + ConnectionId := cs_UDP_ConnectionId(p_LocalSocket, p_RemoteSocket), + Req := { + UDP := { + SendTo := { + Buffer := p_UDP_Data + } + } + } + } + }; + + template (value) IP_SOCKET_REQ cs_UDP_CLOSE_REQ(template (value) IP_Socket_Type p_LocalSocket) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + CTRL := { + ConnectionId := cs_UDP_ConnectionId(p_LocalSocket, omit), + Req := { + UDP := { + Close := true + } + } + } + }; + + // ICMPv6: + + template (value) IP_SOCKET_REQ cs_ICMPv6_SOCKET_REQ(template (value) IP_Socket_Type p_LocalSocket, + boolean p_AllowBroadcast) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + CTRL := { + ConnectionId := cs_ICMPv6_ConnectionId(p_LocalSocket, omit), + Req := { + ICMP := { + SocketReq := { + SockOptList := fl_IP_SockOptList(p_AllowBroadcast) + } + } + } + } + }; + + template (value) IP_SOCKET_REQ cs_ICMPv6_DATA_REQ(template (value) IP_Socket_Type p_LocalSocket, + template (value) IP_Socket_Type p_RemoteSocket, + template (value) Datagram_Content_Type p_ICMP_Data) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + * @sic R5-113734 change 8 sic@ */ + DATA := { + ConnectionId := cs_ICMPv6_ConnectionId(p_LocalSocket, p_RemoteSocket), + Req := { + ICMP := { + SendTo := { + Buffer := p_ICMP_Data + } + } + } + } + }; + + template (value) IP_SOCKET_REQ cs_ICMPv6_CLOSE_REQ(template (value) IP_Socket_Type p_LocalSocket) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + CTRL := { + ConnectionId := cs_ICMPv6_ConnectionId(p_LocalSocket, omit), + Req := { + ICMP := { + Close := true + } + } + } + }; + + // TCP: + + template (value) IP_SOCKET_REQ cs_TCP_CONNECT_REQ(template (value) IP_Socket_Type p_LocalSocket, + template (value) IP_Socket_Type p_RemoteSocket, + InternetApplication_Type p_Application := ims) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + CTRL := { + ConnectionId := cs_TCP_ConnectionId(p_LocalSocket, p_RemoteSocket), + Req := { + TCP := { + ConnectReq := { + SockOptList := fl_IP_SockOptList(), /* @sic R5w130307: MTU size sic@ */ + Application := p_Application + } + } + } + } + }; + + template (value) IP_SOCKET_REQ cs_TCP_LISTEN_REQ(template (value) IP_Socket_Type p_LocalSocket, + InternetApplication_Type p_Application := ims, + template (omit) TLSInfo_Type p_TLSInfo := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + /* @sic R5w140125: additional parameter p_TLSInfo sic@ */ + CTRL := { + ConnectionId := cs_TCP_ConnectionId(p_LocalSocket, omit), + Req := { + TCP := { + Listen := { + SockOptList := fl_IP_SockOptList(), /* @sic R5w130307: MTU size sic@ */ + Application := p_Application, + TLSInfo := p_TLSInfo + } + } + } + } + }; + + template (value) IP_SOCKET_REQ cs_TCP_DATA_REQ(template (value) IP_Connection_Type p_IP_Connection, + template (value) TCP_Data_Type p_TCP_Data) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + DATA := { + ConnectionId := p_IP_Connection, + Req := { + TCP := { + Send := p_TCP_Data + } + } + } + }; + + template (value) IP_SOCKET_REQ cs_TCP_CLOSE_REQ(template (value) IP_Connection_Type p_IP_Connection) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + CTRL := { + ConnectionId := p_IP_Connection, + Req := { + TCP := { + Close := true + } + } + } + }; + + + //**************************************************************************** + // Indications + //---------------------------------------------------------------------------- + + // UDP: + + template (present) IP_SOCKET_IND cr_UDP_SOCKET_CNF(template IP_Socket_Type p_LocalSocket) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + CTRL := { + ConnectionId := cr_UDP_ConnectionId(p_LocalSocket, cr_IP_Socket_Omit), + Ind := { + UDP := { + SocketCnf := true + } + } + } + }; + + template (present) IP_SOCKET_IND cr_UDP_DATA_IND(template IP_Socket_Type p_LocalSocket) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + /* @sic R5-113734 change 8 sic@ */ + DATA := { + ConnectionId := cr_UDP_ConnectionId(p_LocalSocket, cr_IP_Socket_Any), + Ind := { + UDP := { + RecvFrom := ? + } + } + } + }; + + // ICMPv6: + + template (present) IP_SOCKET_IND cr_ICMPv6_SOCKET_CNF(template IP_Socket_Type p_LocalSocket) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + CTRL := { + ConnectionId := cr_ICMPv6_ConnectionId(p_LocalSocket, cr_IP_Socket_Omit), + Ind := { + ICMP := { + SocketCnf := true + } + } + } + }; + + template (present) IP_SOCKET_IND cr_ICMPv6_DATA_IND(template IP_Socket_Type p_LocalSocket) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + /* @sic R5-113734 change 8 sic@ */ + DATA := { + ConnectionId := cr_ICMPv6_ConnectionId(p_LocalSocket, cr_IP_Socket_AnyICMP), + Ind := { + ICMP := { + RecvFrom := ? + } + } + } + }; + + // TCP: + + template (present) IP_SOCKET_IND cr_TCP_CONNECT_CNF(template (present) IP_Connection_Type p_IP_Connection) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + CTRL := { + ConnectionId := p_IP_Connection, + Ind := { + TCP := { + ConnectCnf := true + } + } + } + }; + + template (present) IP_SOCKET_IND cr_TCP_DATA_IND(template (present) IP_Connection_Type p_IP_Connection) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + DATA := { + ConnectionId := p_IP_Connection, + Ind := { + TCP := { + Recv := ? + } + } + } + }; + + template (present) IP_SOCKET_IND cr_TCP_CLOSE_CNF(template (present) IP_Connection_Type p_IP_Connection) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + CTRL := { + ConnectionId := p_IP_Connection, + Ind := { + TCP := { + CloseCnf := true + } + } + } + }; + + template (present) IP_SOCKET_IND cr_TCP_ACCEPT_IND(template IP_Socket_Type p_LocalSocket) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + CTRL := { + ConnectionId := cr_TCP_ConnectionId(p_LocalSocket, cr_IP_Socket_Any), + Ind := { + TCP := { + Accept := true + } + } + } + }; + + template (present) IP_SOCKET_IND cr_TCP_CLOSE_IND(template (present) IP_Connection_Type p_IP_Connection) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + CTRL := { + ConnectionId := p_IP_Connection, + Ind := { + TCP := { + Close := true + } + } + } + }; + +} diff --git a/IMS_PART4_IWD_14wk37/Common/NAS/NAS_AuthenticationCommon.ttcn b/IMS_PART4_IWD_14wk37/Common/NAS/NAS_AuthenticationCommon.ttcn new file mode 100644 index 0000000..35f05bf --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/NAS/NAS_AuthenticationCommon.ttcn @@ -0,0 +1,108 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-07-28 16:53:02 +0200 (Mon, 28 Jul 2014) $ +// $Rev: 11851 $ +/******************************************************************************/ + +module NAS_AuthenticationCommon { + import from CommonDefs all; + import from Parameters all; + + type record Common_AuthenticationParams_Type { /* parameters related/used to/by EUTRA/UTRAN/GERAN authentication + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + B128_Type RandValue, + B128_Type AUTN, + B32_128_Type XRES, + B64_Type KcGSM, + B3_Type KeySeq, + B128_Type CK, + B128_Type IK, + integer XRESLength optional // @sic R5s120907 sic@ + }; + + type enumerated AuthenticationError_Type {noError, macError, sqnFailure, macErrorPlusSepBit, sepBit0 }; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + const B32_Type tsc_AuthUndefinedB32 := oct2bit ('FFFFFFFF'O); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const B128_Type tsc_AuthUndefinedB128 := tsc_AuthUndefinedB32 & tsc_AuthUndefinedB32 & tsc_AuthUndefinedB32 & tsc_AuthUndefinedB32; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const B256_Type tsc_AuthUndefinedB256 := tsc_AuthUndefinedB128 & tsc_AuthUndefinedB128; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + + template (value) Common_AuthenticationParams_Type cs_CommonAuthParams_Init (template (value) B128_Type p_Rand) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + RandValue := p_Rand, + AUTN := tsc_AuthUndefinedB128, + XRES := tsc_AuthUndefinedB128, + KcGSM := tsc_AuthUndefinedB32 & tsc_AuthUndefinedB32, + KeySeq := '111'B, + CK := tsc_AuthUndefinedB128, + IK := tsc_AuthUndefinedB128, + XRESLength := omit // @sic R5s120907 sic@ + }; + + //---------------------------------------------------------------------------- + /* + * @desc Calculation is done according to 34.108, clause 8.1.2 and 33.102, clause 6.8.1.2 + * Generation of Ck, Ik, AUTN and XRES + * @param p_Auth_Params + * @param p_AuthenticationError (default value: noError) + * @return Common_AuthenticationParams_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_AuthenticationInit(Common_AuthenticationParams_Type p_Auth_Params, + AuthenticationError_Type p_AuthenticationError := noError) return Common_AuthenticationParams_Type + { /* @sic R5-123085 harmonisation of IMS (AuthenticationInit and the two error variants are needed for IMS too) sic@ */ + var Common_AuthenticationParams_Type v_Auth_Params := p_Auth_Params; + var B128_Type v_XDOut; + var B80_Type v_AUTN_2; + var B64_Type v_CDOut; + var B64_Type v_XDOut_Half; + var B64_Type v_MAC; + var B48_Type v_AK; + var B48_Type v_AUTN_1; + var B48_Type v_AuthSQN := '000000000000000000000000000000000000000000000000'B; + var B16_Type v_AuthAMF := px_AuthAMF; + + if (p_AuthenticationError == sqnFailure) { + v_AuthAMF := '1111111111111111'B; //AMF_resynch value + } + + if (p_AuthenticationError == sepBit0) { + v_AuthAMF := v_AuthAMF and4b '0111111111111111'B; // separation bit forced to 0 (TC 9.1.2.7), the rest unchanged from PIXIT + } + + if (p_AuthenticationError == macErrorPlusSepBit) { // @sic R5s130201 sic@ + v_AuthAMF := v_AuthAMF or4b '1000000000000000'B; // force the separation to 1, leave the rest unchanged + v_AuthSQN := '111111111111111111111111111111111111111111111111'B; // force SQN out of range + } + + v_XDOut := v_Auth_Params.RandValue xor4b px_AuthK; + v_CDOut := v_AuthSQN & v_AuthAMF; + v_XDOut_Half := substr( v_XDOut, 0, 64); + v_AK := substr( v_XDOut, 24, 48); + v_AUTN_1 := v_AuthSQN xor4b v_AK; + v_MAC := v_XDOut_Half xor4b v_CDOut; + + if ((p_AuthenticationError == macError) or (p_AuthenticationError == macErrorPlusSepBit)) { // @sic R5s130201 sic@ + v_MAC := not4b(v_MAC); // @sic R5s110313 sic@ + } + + v_AUTN_2 := v_AuthAMF & v_MAC; + v_Auth_Params.AUTN := v_AUTN_1 & v_AUTN_2; + // v_IKey := 128 bits of v_XDOut, wrapped, starting from offset 16 + v_Auth_Params.IK := substr( v_XDOut, 16, (128 - 16)) & substr( v_XDOut, 0, 16); + // v_CKey := 128 bits of v_XDOut, wrapped, starting from offset 8 + v_Auth_Params.CK := substr( v_XDOut, 8, (128 - 8)) & substr( v_XDOut, 0, 8); + v_Auth_Params.XRES := v_XDOut; + + if (p_AuthenticationError == noError) { + // ((CK1 XOR CK2) XOR (IK1 XOR IK2)) + v_Auth_Params.KcGSM := (substr( v_Auth_Params.CK, 0, 64) xor4b substr( v_Auth_Params.CK, 64, 64)) xor4b (substr( v_Auth_Params.IK, 0, 64) xor4b substr( v_Auth_Params.IK, 64, 64)); + v_Auth_Params.KeySeq := int2bit(((bit2int(v_Auth_Params.KeySeq)+1) mod 7), 3); // @sic R5s140447 sic@ + } + return (v_Auth_Params); + } +} diff --git a/IMS_PART4_IWD_14wk37/Common/NAS/NAS_CommonTypeDefs.ttcn b/IMS_PART4_IWD_14wk37/Common/NAS/NAS_CommonTypeDefs.ttcn new file mode 100644 index 0000000..3a6a73b --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/NAS/NAS_CommonTypeDefs.ttcn @@ -0,0 +1,870 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-08-27 12:24:14 +0200 (Tue, 27 Aug 2013) $ +// $Rev: 9441 $ +/******************************************************************************/ + +module NAS_CommonTypeDefs { + /* Module containing type definitions for EPS, UTRAN and/or GERAN */ + +import from CommonDefs all; + +//**************************************************************************** +// Common Type definitions: +//---------------------------------------------------------------------------- + +//**************************************************************************** +//**************************************************************************** + +type O1_Type Octet_Type; +type hexstring HalfOctet_Type length(1); + +type HalfOctet_Type IEI4_Type; /* 4 bit info element identifier for type 1 IEs */ +type Octet_Type IEI8_Type; /* 8 bit info element identifier */ + +type O1_Type Type4Length_Type; +type O2_Type Type6Length_Type; + +type HalfOctet_Type SpareHalfOctet; + +type hexstring NAS_Mcc length(3); //* @desc Type which can be used to represent an MCC (as string of 3 decimal digits). + +type record of hexstring EmergencyNumList; +//**************************************************************************** +// NAS PROTOCOL DEFINITIONS: IEs +//---------------------------------------------------------------------------- +// General Info Elements (24.301 cl. 9) +//---------------------------------------------------------------------------- + +type B4_Type ProtocolDiscriminator; /* 24.301 cl. 9.2 and 24.007 cl. 11.2.3.1.1 */ +type B4_Type SkipIndicator; /* 24.007 cl. 11.2.3.1.2 */ +type B8_Type MessageType; /* 24.301 cl. 9.8 */ + +type B3_Type NAS_AttDetValue_Type; +type B3_Type KeySeq; /* ciphering key sequence + 3G TS 24008 cl. 10.5.1.2 */ +type O3_Type NAS_PlmnId; + +type O4_Type NAS_Tmsi; +type O4_Type NAS_P_Tmsi; + +type O2_Type NAS_Lac; +type O1_Type NAS_Rac; + +type hexstring BcdDigit_Hex length(1); +type bitstring BcdDigit_Bit length(4); + +type B3_Type NAS_IdType; +type B8_Type NAS_CauseValue_Type; + +type B1_Type TmsiStatusValue; + +type enumerated PS_MODE {VOICE_CENTRIC, DATA_CENTRIC}; /* @status @sic R5s120274 sic@ */ +type enumerated CS_PS_MODE {VOICE_CENTRIC, DATA_CENTRIC}; /* @status APPROVED */ +// This is here because it's the best place for it + const NAS_Lac tsc_LAC_Def := '0001'O ; /* Default NAS LAC, the value may need to be updated in CS combined/CS fallback test cases + @status APPROVED + @sic R5s090180 sic@ */ + + +//----------------------------------------------------------------------------- +// Defined in 24.008, but also referenced from 24.301 +//----------------------------------------------------------------------------- + +// ============================================================================= +// Structured Type Definition +// 3G TS 24.008, section 10.5.6.1 +// ----------------------------------------------------------------------------- +type record AccessPointName { /* 24.301 cl. 9.9.4.1 -> 24.008 cl. 10.5.6.1 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel, + octetstring nameValue length(1..100) +}; + +// ============================================================================= +// Structured Type Definition +// 3G TS 24.008, section 10.5.3.14 +// ----------------------------------------------------------------------------- +type record AddUpdateParams { + IEI4_Type iei optional, + B2_Type spare, // @sic R5s120178 Baseline Moving sic@ + B1_Type csmo, // @sic R5s120178 Baseline Moving sic@ + B1_Type csmt +}; + +type record AdditionalUpdateType { /* 24.301 cl. 9.9.3.0B @sic R5s100135 sic@ */ + IEI4_Type iei, // currently only used as TV + B3_Type spare3, + B1_Type addUpdateTypeValue +}; + +// ============================================================================= +// Structured Type Definition +// Ciphering Key Sequence Number +// 3G TS 24.008 cl. 10.5.1.2 +// ----------------------------------------------------------------------------- +type record CiphKeySeqNum { + IEI4_Type iei optional, // '1000'B + B1_Type spare1, + KeySeq keySeq +}; + +// ============================================================================= +// Structured Type Definition +// Priority Level +// 3G TS 24.008 cl. 10.5.6.19 / 24.301 9.9.4.2A +// ----------------------------------------------------------------------------- +type record ConnectivityType { + IEI4_Type iei, + B4_Type connectivityValue +}; + +// ============================================================================= +// Structured Type Definition +// 3G TS 24.008, section 10.5.5.5/ 24.301 cl. 9.9.3.7 +// ----------------------------------------------------------------------------- +type record DetachType { + // IEI is always skipped + B1_Type switchOff, + NAS_AttDetValue_Type typeOfDetach +}; + +// ============================================================================= +// Structured Type Definition +// Device Properties +// 3G TS 24.008 cl. 10.5.7.8 +// ----------------------------------------------------------------------------- +type record DeviceProperties { + IEI4_Type iei, + B3_Type spare, + B1_Type lowPriority +}; + +// ============================================================================= +// Structured Type Definition +// DRX paramter +// 3GPP 24.008 / 10.5.5.6 +// ----------------------------------------------------------------------------- +type record DRXparameter { + IEI8_Type iei optional, // '00100111'B (hex 27) + B8_Type splitPGcycleCode, // Split PG cycle code + B4_Type cnDRXcoef, // CN specific DRX cycle length coefficient + B1_Type splitOnCCCH, // Split on CCCCH + B3_Type nonDRXtimer // non-DRX timer +}; + +// ============================================================================= +// Structured Type Definition +// Emergency Service Category +// 3GPP 24.008 / 10.5.4.33 +// ----------------------------------------------------------------------------- +type record EmergServCat { + B1_Type spare, + B7_Type emergSCValue // Emergency Service Category value +}; + +type record length (1..10) of charstring EmergencyLocalNumberList; +// ============================================================================= +// Structured Type Definition +// Emergency Number +// 3G TS 24.008 cl. 10.5.3.13 +// ----------------------------------------------------------------------------- +type record EmergNum { + Type4Length_Type len, // length + EmergServCat emergServCat, // Emergency Service Category + octetstring digits length(0..10) // BCD numbers +}; + +// ============================================================================= +// Structured Type Definition +// Emergency Number List +// 3G TS 24.008 cl. 10.5.3.13 +// ----------------------------------------------------------------------------- +type record EmergNumList { + IEI8_Type iei, // '00110100'B (34 hex) @sic R5s110420 sic@ + Type4Length_Type iel, // length @sic R5s110420 sic@ + record length (1..10) of EmergNum emergNum // Emergency Number +}; + +// ============================================================================= +// Structured Type Definition +// GPRS timer +// 3GPP 24.008 / 10.5.7.3 +// ----------------------------------------------------------------------------- +type record GPRS_Timer { /* 24.301 cl. 9.9.3.14 -> 24.008 cl. 10.5.7.3 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + GprsTimerUnit unit, + B5_Type timerValue +}; + +type B3_Type GprsTimerUnit; + +// ============================================================================= +// Structured Type Definition +// GPRS timer +// 3GPP 24.008 / 10.5.7.4 +// ----------------------------------------------------------------------------- +type record GPRS_Timer2 { + IEI8_Type iei, // @sic R5s110420 sic@ + Type4Length_Type iel, // length @sic R5s110420 sic@ + GprsTimerUnit unit, // Unit + B5_Type gprsTimerValue // Timer value +}; + +// ============================================================================= +// Structured Type Definition +// GPRS timer +// 3GPP 24.008 / 10.5.7.4a +// ----------------------------------------------------------------------------- +type record GPRS_Timer3 { + IEI8_Type iei, + Type4Length_Type iel, // length + GprsTimerUnit unit, // Unit + B5_Type gprsTimerValue // Timer value +}; + +// ============================================================================= +// Structured Type Definition +// IMEISV Request +// 3GPP 24.008 / 10.5.5.10 +// ----------------------------------------------------------------------------- +type record IMEISV_Request { /* 24.301 cl. 9.9.3.16 -> 24.008 cl. 10.5.5.10 */ + IEI4_Type iei optional, /* present in case of TV; omit in case of V */ + B1_Type spare, + B3_Type requestValue +}; + +// ============================================================================= +// Structured Type Definition +// Location Area Identification Value +// 3G TS 24.008 cl. 10.5.1.3 +// ----------------------------------------------------------------------------- +type record LocAreaId { + IEI8_Type iei optional, + NAS_PlmnId plmn, // MCC + MNC 3 digits each + NAS_Lac lac // LAC +}; + +// ============================================================================= +// Structured Type Definition +// RoutingAreaId +// 3GPP 24.008 / 10.5.5.15 +// ----------------------------------------------------------------------------- +type record RoutingAreaId { /* 24.301 cl. 9.9.3.24 -> 24.008 cl. 10.5.5.15 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + LocAreaId lai, /* MCC + MNC + LAC */ + O1_Type rac /* RAC */ +}; + +// ============================================================================= +// Structured Type Definition +// 24.007, clause 10.5.6.9 +// ----------------------------------------------------------------------------- +type record LLC_SAPI { /* 24.301 cl. 9.9.4.4 -> 24.008 cl. 10.5.6.9 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + B4_Type spare, + B4_Type llcSapiValue +}; + +// ============================================================================= +// Structured Type Definition +// Mobile Identity +// 3G TS 24.008 cl. 10.5.1.4 +// Maximum number of digits is 16 (IMEISV). Filler may be used. +// ----------------------------------------------------------------------------- +type record MobileIdentity { + IEI8_Type iei optional, // '00100011'B + Type4Length_Type iel, + BcdDigit_Bit idDigit1, // 1st identitity digit + B1_Type oddEvenInd, // Odd/even indicator + NAS_IdType typeOfId, // Type of identity + octetstring otherDigits length(0..10) // Other identity digits (10 octets rather than 8 to cover Guti as well) +}; + +// ============================================================================= +// Structured Type Definition +// Mobile Station Classmark 2 +// 3G TS 24.008 cl. 10.5.1.6 +// ----------------------------------------------------------------------------- +type record MS_Clsmk2 { + IEI8_Type iei optional, + Type4Length_Type iel, // @sic R5s110420 sic@ + B1_Type spare1_1, // Spare bit + B2_Type revLvl, // Revision Level + B1_Type eSIND, // Early Sending Indication + B1_Type a5_1, // Algorithm A5/1 Support + B3_Type rFPwrCap, // RF Power Capability + B1_Type spare1_2, // Spare bit + B1_Type pSCap, // Pseudo Synchronisation Capability + B2_Type sSSI, // SS Screen Indicator + B1_Type sMCap, // Short Message Capability + B1_Type vBS, // VBS Capability + B1_Type vGCS, // VGCS Capability + B1_Type fC, // Frequency Capability + B1_Type cM3, // Classmark 3 Indicator + B1_Type spare1_3, // Spare bit + B1_Type lCSVA, // LCS VA Capability + B1_Type uCS2, // UCS2 Encoding Support + B1_Type soLSA, // SoLSA Support + B1_Type cMSP, // CM Service Prompt Support + B1_Type a5_3, // Algorithm A5/3 Support + B1_Type a5_2 // Algorithm A5/2 Support +}; + +// ============================================================================= +// Structured Type Definition +// Mobile station classmark 3 +// 3GPP TS 24.008 clause 10.5.1.7 +// The information element has 34 octets maximum length +// ----------------------------------------------------------------------------- +type record MS_Clsmk3 { + IEI8_Type iei optional, // 0x20 + Type4Length_Type iel optional, // OCTETSTRING [1] + B1_Type spareBit, // spare bit @sic R5s120178 Baseline Moving sic@ + B3_Type multibandSupported, // @sic R5s120178 Baseline Moving sic@ + B1_Type a5_7, // a5/7 algorithm supported @sic R5s120178 Baseline Moving sic@ + B1_Type a5_6, // a5/6 algorithm supported @sic R5s120178 Baseline Moving sic@ + B1_Type a5_5, // a5/5 algorithm supported @sic R5s120178 Baseline Moving sic@ + B1_Type a5_4, // a5/4 algorithm supported @sic R5s120178 Baseline Moving sic@ + B4_Type associatedRadioCapabilty2 optional, // present if multibandSupported = 101 or 110 + B4_Type spareBits1 optional, // present if multibandSupported = 001 or 010 or 100 + B4_Type associatedRadioCapabilty1 optional, // present if multibandSupported = 001 or 010 or 100 or 101 or 110 + B1_Type maskBit1 optional, + B3_Type rGSM_RadioCapability optional, // R-GSM band associated radio capability not present if maskBit1 = 0 + B1_Type maskBit2 optional, + B5_Type multiSlotClass optional, // multi slot class not present if multiSlotClass = 0 + B1_Type uCS2Treatment optional, + B1_Type extMeasurementCapability optional, // extended measurement capability + B1_Type maskBit3 optional, + MS_MeasCapability msMeasurementCapability optional, // MS measurement capability + // not present if maskBit3 = 0 + B1_Type maskBit4 optional, + B5_Type msPositioningMethod optional, // MS positioning method capability + // not present if maskBit4 = 0 + B1_Type maskBit5 optional, + B5_Type eDGE_MultiSlot optional, // EDGE multi slot capability + // not present if maskB5_Type = 0 + B1_Type maskBit6 optional, + EDGE_Struct psk8_Struct optional, // 8PSK struct + // not present if maskB6_Type = 0 + B1_Type maskBit7 optional, + B2_Type gSM400BandsSupported optional, // not present if maskBIt7 = 0 + B4_Type gSM400AssociatedRadioCapability optional, // not present if gSM400BandsSupported = 00 or maskB7_Type = 0 + B1_Type maskBit8 optional, + B4_Type gSM850AssociatedRadiioCapability optional, // not present if maskBIt8 = 0 + B1_Type maskBit9 optional, + B4_Type pCS1900AssociatedRadiioCapability optional, // not present if maskBIt9 = 0 + B1_Type uMTS_FDD_RAT_Capability optional, + B1_Type uMTS384TDD_RAT_Capability optional, + B1_Type cDMA2000_RAT_Capability optional, + B1_Type maskBit10 optional, + B2_Type dTM_GPRS_MultiSlotSubclass optional, // not present if maskBit10 = 0 + B1_Type singleSlotDTM optional, // not present if maskBit10 = 0 + B1_Type maskBit11 optional, // not present if maskBit10 = 0 + B2_Type dTM_EGPRS_MultiSlorSubclass optional, // not present if maskBit10 = 0 or maskBit11 = 0 + B1_Type maskBit12 optional, + B4_Type singleBandSupport optional, // not present if maskBit12 = 0 + B1_Type maskBit13 optional, + B4_Type gSM700AssociatedRadioCapability optional, // not present if maskBit13 = 0 + B1_Type uMTS128TDD_RAT_Capability optional, + B1_Type gERANFeatPack1 optional, + B1_Type mask14 optional, + B2_Type extDTM_GPRS_MultiSlotSubclass optional, // not present if maskBit14 = 0 + B2_Type etxDTM_EGPRS_MultiSlotSubclass optional, // not present if maskBit14 = 0 + B1_Type mask15 optional, + B2_Type highMultislotCap optional, // not present if mask15 = 0 + B1_Type mask16 optional, + B4_Type gERANIuModeLength optional, // not present if maskBit16 = 0 + B1_Type gERANFLOIuCap optional, + bitstring gERANIuModeSpareBits length(0..14) optional, // not present if maskBit16 = 0 + B1_Type gERANFeatPack2 optional, + B2_Type gMSKMultislotPowerProfile optional, + B2_Type pSKMultislotPowerProfile optional, + B1_Type mask17 optional, // rel 6 features + B2_Type tGSM400BandsSupported optional, // not present if maskBit17 = 0 + B4_Type tGSM400AssocRadioCap optional, // not present if maskBit17 = 0 + B1_Type spare optional, // Set to 0 @sic R5s110176 Baseline Moving sic@ + B2_Type dlAdvancedRxPerf optional, + B1_Type dTMEhancCap optional, + B1_Type mask19 optional, + B3_Type dTMGPRSHighMultislotClass optional, // not present if maskBit19 = 0 + B1_Type offsetReq optional, // not present if maskBit19 = 0 + B1_Type mask20 optional, // not present if maskBit19 = 0 + B3_Type dTMEGPRSHighMultislotClass optional, // not present if maskBit19 and maskBit20 = 0 + B1_Type rptdACCHCap optional, + B1_Type mask21 optional, + B4_Type gsm710AssocRadioCap optional, // not present if maskBit21 = 0 + B1_Type mask22 optional, + B4_Type tgsm810AssocRadioCap optional, // not present if maskBit22 = 0 + B1_Type cipheringModeSettingCap optional, + B1_Type addPositionCap optional, + B1_Type eutraFDDSupport optional, // rel 8 features + B1_Type eutraTDDSupport optional, + B1_Type eutraMeasAndReporting optional, // @sic R5s100135 sic@ + B1_Type priorityBasedReselection optional, // @sic R5s110176 Baseline Moving sic@ + B1_Type utraCSGCellsReporting optional, // @sic R5s110176 Baseline Moving sic@ + B2_Type vamosLevel optional, // @sic R5s110176 Baseline Moving sic@ + B2_Type tighterCap optional, // @sic R5s120178 Baseline Moving sic@ + B1_Type selectCipheringDLSACCH optional, // @sic R5s120178 Baseline Moving sic@ + B2_Type csPS_SRVCC_G2U optional, // @sic R5s130195 Baseline Moving sic@ + B2_Type csPS_SRVCC_G2E optional, // @sic R5s130195 Baseline Moving sic@ + bitstring spareBits2 optional +}; + +// ============================================================================= +// Structured Type Definition +// Reference : 3GPP TS 24.008 clause 10.5.1.7 +// ----------------------------------------------------------------------------- +type record EDGE_Struct { + B1_Type modulationCapability, + B1_Type pwrMask1, + B2_Type eDGE_RF_PowerCapability1 optional, // not present if pwrMask1 = 0 + B1_Type pwrMask2, + B2_Type eDGE_RF_PowerCapability2 optional // not present if pwrMask2 = 0 +}; + +// ============================================================================= +// Structured Type Definition +// Reference : 3GPP TS 24.008 clause 10.5.1.7 +// ----------------------------------------------------------------------------- +type record MS_MeasCapability { + B4_Type sMS_VALUE, + B4_Type sM_VALUE +}; + +// ============================================================================= +// Structured Type Definition +// MS network capability +// 3GPP 24.008 / 10.5.5.12 +// ----------------------------------------------------------------------------- +type record MS_NetworkCap { /* 24.301 cl. 9.9.3.18 -> 24.008 cl. 10.5.5.12 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + Type4Length_Type iel, // @sic R5s110420 sic@ + B1_Type gea1, + B1_Type smCapDedicated, + B1_Type smCapGPRS, + B1_Type ucs2, + B2_Type ssScreeningIndicator, + B1_Type soLSACap, + B1_Type revLevelIndicator, + B1_Type pfcFeatureMode, + B1_Type gea2, + B1_Type gea3, + B1_Type gea4, + B1_Type gea5, + B1_Type gea6, + B1_Type gea7, + B1_Type lcsVACap optional, // @sic R5s130477 not present for r99 sic@ + B1_Type psHOtoUTRAN_IuModeCap optional, // @sic R5s130477 not present for r99 sic@ + B1_Type psHOtoEUTRAN_S1ModeCap optional, // @sic R5s130477 not present for r99 sic@ + B1_Type emmCombinedCap optional, // @sic R5s110176 Baseline Moving, R5s130477 not present for r99 sic@ + B1_Type isrSupport optional, // @sic R5s130477 not present for r99 sic@ + B1_Type srvccToGERAN_UTRANCap optional, // @sic R5s130477 not present for r99 sic@ + B1_Type epcCap optional, // @sic R5s130477 not present for r99 sic@ + B1_Type nfCap optional, // @sic R5s110176 Baseline Moving, not present for Rel-8 R5s110242 sic@ + B1_Type gERANNtwkShareCap optional, // @sic R5s130195 Baseline Moving, not present for Rel-8 sic@ + bitstring spareBits length (0..43) optional +}; + +// ============================================================================= +// Structured Type Definition +// Additional Network Feature Support +// 3G TS 24.008 cl. 10.5.5.31 +// ----------------------------------------------------------------------------- +type record NwkResourceId { + IEI8_Type iei, // + Type4Length_Type iel, // + B1_Type nriContainerValue, + B7_Type spareBits +}; + +// ============================================================================= +// Structured Type Definition +// PacketFlowIdentifier +// 24.008, section 10.5.6.11 +// ----------------------------------------------------------------------------- +type record PacketFlowIdentifier { /* 24.301 cl. 9.9.4.5 -> 24.008 cl. 10.5.6.11 */ + IEI8_Type iei, // @sic R5s110420 sic@ + Type4Length_Type iel, // @sic R5s110420 sic@ + B1_Type spare, + B7_Type idValue +}; + +// ============================================================================= +// Structured Type Definition +// PLMN list +// 3G TS 24.008 cl. 10.5.1.13 +// ----------------------------------------------------------------------------- +type record PLMN_List { /* 24.301 cl. 9.9.2.4 -> 24.008 cl. 10.5.1.13 */ + IEI8_Type iei, // @sic R5s110420 sic@ + Type4Length_Type iel, // @sic R5s110420 sic@ + record length(1..15) of + NAS_PlmnId plmnList /* list of PLMNs */ +}; + +// ============================================================================= +// Structured Type Definition +// MS network feature support +// 3GPP 24.008 / 10.5.5.15 +// ----------------------------------------------------------------------------- +type record MS_NetworkFeatureSupport { /* 24.301 cl. 9.9.2.0A -> 24.008 cl. 10.5.5.15 */ + IEI4_Type iei, + B3_Type spare, + B1_Type extdPeriodicTimers +}; + +type PLMN_List.plmnList NAS_PlmnIdList_Type; + +// ============================================================================= +// Structured Type Definition +// ProtocolConfigOptions +// 3G TS 24.008 cl. 10.5.6.3 +// ----------------------------------------------------------------------------- +type record ProtocolConfigOptions { /* 24.301 cl. 9.9.4.8 -> 24.008 cl. 10.5.6.3 */ + IEI8_Type iei, // @sic R5s110420 sic@ + Type4Length_Type iel, + B1_Type ext, + B4_Type spare, + B3_Type configProtocol, + record length (0..83) of + ProtocolContainer pco optional +}; + +type record ProtocolContainer { + O2_Type protocolID, /* id is always 2 octets */ + Type4Length_Type protocolLength, + octetstring content optional +}; + +type ProtocolConfigOptions.pco NAS_ProtocolConfigOptions_Type; + +// ============================================================================= +// Structured Type Definition +// P-TMSI signature +// 3GPP 24.008 / 10.5.5.8 +// ----------------------------------------------------------------------------- +type record PTMSI_Signature { /* 24.301 cl. 9.9.3.23 -> 24.008 cl. 10.5.5.8 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + Type4Length_Type iel optional, // only present in 24.008 version of DETACH REQUEST message + O3_Type signatureValue +}; + +// ============================================================================= +// Structured Type Definition +// 24.008, clause 10.5.6.5 +// ----------------------------------------------------------------------------- +type record QualityOfService { /* 24.301 cl. 9.9.4.9 -> 24.008 cl. 10.5.6.5 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel, + B2_Type spare1, + B3_Type delayClass, + B3_Type relabilityClass, + B4_Type peakThroughput, + B1_Type spare2, + B3_Type precedenceClass, + B3_Type spare3, + B5_Type meanThroughput, + B3_Type trafficClass, + B2_Type deliveryOrder, + B3_Type deliveryErrorSDU, + B8_Type maxSduSize, + B8_Type maxBitRateUL, + B8_Type maxBitRateDL, + B4_Type residualBER, + B4_Type sduErrorRatio, + B6_Type transferDelay, + B2_Type trafficHandlingPrio, + B8_Type guaranteedBitRateUL, + B8_Type guaranteedBitRateDL, + B3_Type spare4, + B1_Type signallingInd, + B4_Type sourceStatisticsDescriptor, + B8_Type maxBitRateDL_Ext optional, + B8_Type guaranteedBitRateDL_Ext optional, + B8_Type maxBitRateUL_Ext optional, + B8_Type guaranteedBitRateUL_Ext optional, + B8_Type maxBitRateDL_Ext2 optional, // @sic R5s1300195 Baseline Moving sic@ + B8_Type guaranteedBitRateDL_Ext2 optional, // @sic R5s1300195 Baseline Moving sic@ + B8_Type maxBitRateUL_Ext2 optional, // @sic R5s1300195 Baseline Moving sic@ + B8_Type guaranteedBitRateUL_Ext2 optional // @sic R5s1300195 Baseline Moving sic@ +}; + +// ============================================================================= +// Structured Type Definition +// Radio priority +// 3GPP 24.008 / 10.5.7.2 +// ----------------------------------------------------------------------------- +type record RadioPriority { /* 24.301 cl. 9.9.4.10 -> 24.008 cl. 10.5.7.2 */ + IEI4_Type iei optional, /* present in case of TV; omit in case of V */ + B1_Type spare, + B3_Type levelValue +}; + +// ============================================================================= +// Structured Type Definition +// Codec +// 3G TS 24.008 cl. 10.5.4.32 +// ----------------------------------------------------------------------------- +type record Codec { + O1_Type sysId, // system identifcation + Type4Length_Type len, // length + B8_Type bitMap1to8, // codec bitmap bits 1-8 + B8_Type bitMap9to16 optional // codec bitmap bits 9-16 +}; + +// ============================================================================= +// Structured Type Definition +// Supported Codec List +// 3G TS 24.008 cl. 10.5.4.32 +// ----------------------------------------------------------------------------- +type record CodecList { + IEI8_Type iei, // '01000000'B (40 hex) @sic R5s110420 sic@ + Type4Length_Type iel, // length @sic R5s110420 sic@ + record of Codec codec// list of codecs +}; + +// ============================================================================= +// Structured Type Definition +// TMSI status +// 3GPP 24.008 cl. 10.5.6.17 +// ----------------------------------------------------------------------------- +type record Request_Type { /* 24.301 cl. 9.9.4.11 */ + // IEI is always skipped + B1_Type spare, + B3_Type typeValue +}; + +// ============================================================================= +// Structured Type Definition +// TMSI status +// 3GPP 24.008 cl. 10.5.5.4 +// ----------------------------------------------------------------------------- +type record TMSI_Status { + IEI4_Type iei optional, + B3_Type spare3, + TmsiStatusValue flag // Flag +}; + +// ============================================================================= +// Structured Type Definition +// TrafficFlowTemplate +// 3GPP 24.008 / 10.5.6.12 +// ----------------------------------------------------------------------------- +type record TrafficFlowTemplate { /* 24.301 cl. 9.9.4.13 -> 24.008 cl. 10.5.6.12 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel, + B3_Type tftOperationCode, + B1_Type eBit, + B4_Type noOfPktFilter, + record of PacketFilter packetFilterList optional, + record of TftParameter parameterList optional +}; + +type record TftParameter { + IEI8_Type iei, + Type4Length_Type iel, + octetstring contents +}; + +type record PacketFilter { + B2_Type spare, // @sic R5s130195 Baseline Moving sic@ + B2_Type direction, // @sic R5s130195 Baseline Moving sic@ + IEI4_Type iei, // @sic R5s130195 Baseline Moving sic@ + B8_Type precedence optional, + Type4Length_Type iel optional, + PacketFilterContents contents optional +}; + +type record of PacketFilterComponent PacketFilterContents; + +type record PacketFilterComponent { + O1_Type id, + PacketFilterComponentValue packetFilterComponentValue +}; + +type union PacketFilterComponentValue { + O8_Type ipv4RemoteAddress, + O32_Type ipv6RemoteAddress, + O1_Type protocolIdNextHeader, + O2_Type singleLocalPort, + O4_Type localPortRange, + O2_Type singleRemotePort, + O4_Type remotePortRange, + O4_Type securityParameterIndex, + O2_Type typeOfServiceTrafficClass, + O3_Type flowLabel +}; + +type record UE_NetworkCap { // 24.301 cl. 9.9.3.34 + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + O1_Type eeaCap, // @sic R5s100135 sic@ + O1_Type eiaCap, // @sic R5s100135 sic@ + O1_Type ueaCap optional, // @sic R5s100135 sic@ + O1_Type uiaCap optional, // @sic R5s100135 sic@ + O1_Type srvccCap optional, // @sic R5s100135 sic@ + octetstring spare optional // @sic R5s100135 sic@ +}; + +// ============================================================================= +// Structured Type Definition +// Authentication Parameter AUTN +// 3G TS 24.008 cl. 10.5.3.1.1 +// ----------------------------------------------------------------------------- +type record AUTN { /* 24.301 cl. 9.9.3.2 -> 24.008 cl. 10.5.3.1.1 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel, // @sic R5s110420 sic@ + B128_Type aUTN /* (as for UMTS) */ +}; + +// ============================================================================= +// Structured Type Definition +// Authentication Failure Parameter (TLV) +// 3G TS 24.008 cl. 10.5.3.2.2 +// ----------------------------------------------------------------------------- +type record AuthenticationFailureParameter { + IEI8_Type iei, // '00100010'B for MM (22 hex) + // '00110000'B for GMM (30 hex) + Type4Length_Type iel, // M 1 octet + B112_Type auts // AUTS, 14 octets +}; + +// ============================================================================= +// Structured Type Definition +// Authentication Parameter RAND (TV, 17 octets) +// 3G TS 24.008 cl. 10.5.3.1 +// ----------------------------------------------------------------------------- +type record RAND { + IEI8_Type iei optional, // '00100001'B (21 hex) + B128_Type randValue // Authentication Parameter RAND value +}; + +type record DaylightSavingTime { /* 24.301 cl. 9.9.3.5 -> 24.008 cl. 10.5.3.12 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B6_Type spare, + B2_Type val +}; + +type record NetworkName { /* 24.301 cl. 9.9.3.21 -> 24.008 cl. 10.5.3.5a */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel, + B1_Type ext, + B3_Type codingScheme, + B1_Type addCI, + B3_Type spareBitCnt, + octetstring text /* type is FFS */ +}; + +type record TimeZone { /* 24.301 cl. 9.9.3.26 -> 24.008 cl. 10.5.3.8 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + O1_Type timeZone +}; + +type record TimeZoneAndTime { /* 24.301 cl. 9.9.3.27 -> 24.008 cl. 10.5.3.9 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + O1_Type year, + O1_Type month, + O1_Type day, + O1_Type hour, + O1_Type minute, + O1_Type second, + O1_Type timeZone +}; + +// ============================================================================= +// Structured Type Definition +// 3G TS 24.008 cl. 10.5.5.28 +// @sic R5s110176 Baseline Moving sic@ +// ----------------------------------------------------------------------------- +type record VoiceDomainPref { + IEI8_Type iei optional, // 01111110'B + Type4Length_Type iel optional, // length + B5_Type spareBits, + B1_Type ueUsageSetting, + B2_Type voiceDomainPrefEUTRA // @sic R5s110233 sic@ +}; + +type record IdentityType { /* 24.301 cl. 9.9.3.15 -> 24.008 cl. 10.5.3.4 */ + // IEI is always skipped + B1_Type spare, + NAS_IdType typeOfId +}; + + // ============================================================================= + // Structured Type Definition + // REGISTER + // ue->n or n->ue, 3GPPP TS 24.080, 2.4 + // ----------------------------------------------------------------------------- + type record REGISTER { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator sS_ProtocolDiscriminator, // "1011" Protocol discriminator for supplementary services BITSTRING [4] + MessageType msgType, // message type BITSTRING [8] + FacilityIE facility_Str, // M, BER enconded ASN.1 object + SS_VersionInd sS_VersionInd optional // O for ue->n, N/A for n->ue + }; + + // ============================================================================= + // Structured Type Definition + // FACILITY + // ue->n or n->ue, 3GPPP TS 24.080, 2.3 and 24.008, 10.4 + // ----------------------------------------------------------------------------- + type record FACILITY { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator sS_ProtocolDiscriminator, // "1011" Protocol discriminator for supplementary services BITSTRING [4] + MessageType msgType, // message type BITSTRING [8], for n->ue "00111010", for ue->n "xx111010" (see 24.007) + FacilityIE facility_Str // M, BER enconded ASN.1 object + }; + +// ============================================================================= +// Structured Type Definition +// Facility Information Element +// 3GPPP TS 24.080, 3.6 / 24.008, 10.5.4.15 +// ----------------------------------------------------------------------------- +type record FacilityIE { + IEI8_Type iei optional, // Facility IE identifier + Type4Length_Type iel, // length of Facility contents + octetstring components // ASN.1 definitions BER encoded +}; + +// ============================================================================= +// Structured Type Definition +// Transaction identifier +// 3G TS 24.007 cl. 11.2.3.1.3 +// ----------------------------------------------------------------------------- +type record TI { + B1_Type tiFlag, // Flag + B3_Type tiVal // TIO +}; + +// ============================================================================= +// Structured Type Definition +// SS version indicator +// 3G TS 24.008 cl. 10.5.4.24 +// 1. Usually this IE has only one octet of content. +// Exact definition see TS 24.080 +// ----------------------------------------------------------------------------- +type record SS_VersionInd { + IEI8_Type iei, // '01111111'B @sic R5s110420 sic@ + Type4Length_Type iel, // length @sic R5s110420 sic@ + O1_Type sS_VersionInfo // ss version information +}; + + // ============================================================================= + // Structured Type Definition + // RESETUEPOSITIONINGSTOREDINFORMATION + // n->ue, 3GPPP TS 34.109, 6.10/36.509 6.9 + // ----------------------------------------------------------------------------- + type record RESETUEPOSITIONINGSTOREDINFORMATION { + SkipIndicator skipIndicator, // "0000" skip indicator BITSTRING [4] + ProtocolDiscriminator protocolDiscriminator, // M, "1111" Protocol discriminator for test procedure messages BITSTRING [4] + MessageType msgType, // M, message type BITSTRING [8] + B8_Type uePositioningTech // M, BITSTRING [8] + }; + +} with { encode "NAS Types" } diff --git a/IMS_PART4_IWD_14wk37/Common/NAS/SMS_Templates.ttcn b/IMS_PART4_IWD_14wk37/Common/NAS/SMS_Templates.ttcn new file mode 100644 index 0000000..00c20d5 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/NAS/SMS_Templates.ttcn @@ -0,0 +1,480 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-08-28 23:57:22 +0200 (Wed, 28 Aug 2013) $ +// $Rev: 9492 $ +/******************************************************************************/ + +module SMS_Templates { + + import from CommonDefs all; + import from SMS_TypeDefs all; + + template (value) TransactionIdentifier_Type cs_MT_TI0_FromSS := + { /* @status APPROVED (LTE) */ + tI_Flag := '0'B, + tI_Value := '000'B + }; + + template (present) TransactionIdentifier_Type cr_MT_TI0_FromUE := + { /* @status APPROVED (LTE) */ + tI_Flag := '1'B, + tI_Value := '000'B + }; + + template (present) TransactionIdentifier_Type cr_MO_AnyTI_FromUE := + { /* @status APPROVED (LTE) */ + tI_Flag := '0'B, + tI_Value := '???'B + }; + + template (present) TypeOfNumberingPlan cr_TypeOfNumberingPlanAny := + { /* @status APPROVED (IMS, LTE) */ + extBit := ?, + typeOfNumber := ?, + numberingPlanId := ? + }; + + template (value) TypeOfNumberingPlan cs_TypeOfNumberingPlan := + { /* @status APPROVED (IMS, LTE) */ + extBit := '1'B, + typeOfNumber := '001'B, // international number + numberingPlanId := '0001'B // ISDN/telephony numbering plan (Rec. E.164/E.163) + }; + + template (present) TypeOfNumberingPlan cr_TypeOfNumberingPlan := + { /* @status APPROVED (IMS, LTE) */ + extBit := ?, + typeOfNumber := ?, + numberingPlanId := ? + }; + + /* End Non-SMS Type Constraints */ + + /* SM-CP Type Constraints */ + /* template (omit) CP_UserData_Type cs_CP_UserData (RP_PDU_Type p_RP_PDU, */ + /* integer p_Length) := */ + /* { */ + /* spare := omit, */ + /* iei := omit, */ + /* iel := int2oct (p_Length,1), // size of p_RP_PDU in octets, provided by the caller */ + /* rP_PDU := p_RP_PDU */ + /* }; */ + + + template (omit) CP_UserData_Type cs_CP_UserData_DELIVER (octetstring p_Digits):= + { /* @status APPROVED (LTE) */ + spare := omit, + iei := omit, + iel := int2oct ((162 + lengthof (p_Digits)), 1), // 162 = 153 + 1 + 5 + 3=size of cs_RP_OriginatorAddress_dl + rP_PDU := {RP_DATA_dl := cs_RP_DATA_dl_DELIVER (p_Digits)} + }; + + template (omit) CP_UserData_Type cs_CP_UserData_SUBMIT_REPORT(O1_Type p_MsgRef) := + { + // @sic R5s100604 sic@ + spare := omit, + iei := omit, + iel := '0D'O, // the length of RPDU is 13 + rP_PDU := {RP_ACK := cs_RP_ACK_SUBMIT_REPORT(p_MsgRef)} + }; + + template (omit) CP_UserData_Type cs_CP_UserData_RP_ACK_dl (O1_Type p_MsgRef):= + { /* @status APPROVED (LTE) */ + // @sic R5s100604 sic@ @sic R5s110206 sic@ + spare := omit, + iei := omit, + iel := '02'O, // the length of RPDU is 2 as RP UserData are omitted now + rP_PDU := { + RP_ACK := cs_RP_ACK_dl(p_MsgRef) + } + }; + + +/* template (present) CP_UserData_Type cr_CP_UserData (RP_PDU_Type p_RP_PDU) := */ +/* { */ +/* spare := omit, */ +/* iei := omit, */ +/* iel := ?, */ +/* rP_PDU := p_RP_PDU */ +/* }; */ + + + template (present) CP_UserData_Type cr_CP_UserData_SUBMIT(template (present) RP_DATA_ul_Type p_RP_DATA_ul := cr_RP_DATA_ul_SUBMIT) := + { /* @status APPROVED (LTE) */ + spare := omit, + iei := omit, + iel := ?, + rP_PDU := { + RP_DATA_ul := p_RP_DATA_ul + } + }; + + template (present) CP_UserData_Type cr_CP_UserData_DELIVER_REPORT := + { + spare := omit, + iei := omit, + iel := ?, + rP_PDU := { + RP_ACK := cr_RP_ACK_DELIVER_REPORT + } + }; + + template (present) CP_UserData_Type cr_CP_UserData_RP_ACK_ul := + { /* @status APPROVED (LTE) */ + spare := omit, + iei := omit, + iel := ?, + rP_PDU := { + RP_ACK := cr_RP_ACK_ul + } + }; + /* End SM-CP Type Constraints */ + + /* SM-CP PDU Constraints */ + + template (value) CP_DATA_Type cs_CP_DATA (template (value) TransactionIdentifier_Type p_TransactionIdentifier, + template (omit) CP_UserData_Type p_CP_UserData) := + { /* @status APPROVED (LTE) */ + transactionIdentifier := p_TransactionIdentifier, + protocolDiscriminator := tsc_PD_SMS, + messageType := tsc_MT_CP_DATA, + cP_UserData := p_CP_UserData + }; + + template (present) CP_DATA_Type cr_CP_DATA (template TransactionIdentifier_Type p_TransactionIdentifier, + template CP_UserData_Type p_CP_UserData) := + { /* @status APPROVED (LTE) */ + transactionIdentifier := p_TransactionIdentifier, + protocolDiscriminator := tsc_PD_SMS, + messageType := tsc_MT_CP_DATA, + cP_UserData := p_CP_UserData + }; + + template (value) CP_ACK_Type cs_CP_ACK(template (value) TransactionIdentifier_Type p_TransactionIdentifier) := + { /* @status APPROVED (LTE) */ + transactionIdentifier := p_TransactionIdentifier, + protocolDiscriminator := tsc_PD_SMS, + messageType := tsc_MT_CP_ACK + }; + + template (present) CP_ACK_Type cr_CP_ACK(template TransactionIdentifier_Type p_TransactionIdentifier) := + { /* @status APPROVED (LTE) */ + transactionIdentifier := p_TransactionIdentifier, + protocolDiscriminator := tsc_PD_SMS, + messageType := tsc_MT_CP_ACK + }; + + template (value) CP_ERROR_Type cs_CP_ERROR(TransactionIdentifier_Type p_TransactionIdentifier, + CP_Cause_Type p_CP_Cause) := + { + transactionIdentifier := p_TransactionIdentifier, + protocolDiscriminator := tsc_PD_SMS, + messageType := tsc_MT_CP_ERROR, + cP_Cause := p_CP_Cause + }; + + template (present) CP_ERROR_Type cr_CP_ERROR(template (value) TransactionIdentifier_Type p_TransactionIdentifier, + CP_Cause_Type p_CP_Cause) := + { + transactionIdentifier := p_TransactionIdentifier, + protocolDiscriminator := tsc_PD_SMS, + messageType := tsc_MT_CP_ERROR, + cP_Cause := p_CP_Cause + }; + + template (present) CP_PDU_Type cr_CP_DATA_PDU(template TransactionIdentifier_Type p_TransactionIdentifier, + template CP_UserData_Type p_CP_UserData) := + { /* @status APPROVED (LTE) */ + CP_DATA := cr_CP_DATA (p_TransactionIdentifier, p_CP_UserData) + }; + + template (value) CP_PDU_Type cs_CP_DATA_PDU (template (value) TransactionIdentifier_Type p_TransactionIdentifier, + template (value) CP_UserData_Type p_CP_UserData) := + { /* @status APPROVED (LTE) */ + CP_DATA := cs_CP_DATA (p_TransactionIdentifier, p_CP_UserData) + }; + + template (present) CP_PDU_Type cr_CP_ACK_PDU(template TransactionIdentifier_Type p_TransactionIdentifier) := + { /* @status APPROVED (LTE) */ + CP_ACK := cr_CP_ACK (p_TransactionIdentifier) + }; + + template (value) CP_PDU_Type cs_CP_ACK_PDU(template (value) TransactionIdentifier_Type p_TransactionIdentifier) := + { /* @status APPROVED (LTE) */ + CP_ACK := cs_CP_ACK (p_TransactionIdentifier) + }; + + /* End SM-CP PDU Constraints */ + + /* SM-RP Type Constraints */ + + template (omit) RP_OriginatorAddress_dl cs_RP_OriginatorAddress_dl := + { /* @status APPROVED (IMS, LTE) */ + spare := omit, + iei := omit, + iel := '04'O, // 4 semi-octets @sic R5s100586 sic@ + typeOfNumberingPlan := cs_TypeOfNumberingPlan, + digits := '001122'O + }; + + template (present) RP_OriginatorAddress_ul cr_RP_OriginatorAddress_ul := + { /* @status APPROVED (IMS, LTE) */ + spare := omit, + iei := omit, + iel := '00'O + }; + + template (present) RP_DestinationAddress_ul cr_RP_DestinationAddress_ul(template (present) octetstring p_Digits := ?) := + { /* @status APPROVED (IMS, LTE) */ + spare := omit, + iei := omit, + iel := ?, + typeOfNumberingPlan := cr_TypeOfNumberingPlan, + digits := p_Digits + }; + + template (omit) RP_DestinationAddress_dl cs_RP_DestinationAddress_dl := + { /* @status APPROVED (IMS, LTE) */ + spare := omit, + iei := omit, + iel := '00'O + }; + +/* template (omit) RP_UserData cs_RP_UserData (TP_PDU_Type p_TP_PDU) := */ +/* { */ +/* spare := omit, */ +/* iei := omit, */ +/* iel := '05'O, // to be corrected !!! ??? */ +/* tP_PDU := p_TP_PDU */ +/* }; */ + + template (omit) RP_UserData cs_RP_UserData_DELIVER (octetstring p_Digits) := + { /* @status APPROVED (IMS, LTE) */ + spare := omit, + iei := omit, + iel := int2oct ((153 + lengthof (p_Digits)), 1), + tP_PDU := {SMS_DELIVER := cs_SMS_DELIVER (p_Digits)} + }; + + template (omit) RP_UserData cs_RP_UserData_SUBMIT_REPORT := + { /* @status APPROVED (IMS) */ + spare := tsc_Sparebit, + iei := tsc_IEI_RP_UserData, + iel := '0A'O, // the TPDU data length is 10 octets + tP_PDU := {SMS_SUBMIT_REPORT := cs_SMS_SUBMIT_REPORT} + }; + +/* template RP_UserData cr_RP_UserData (TP_PDU_Type p_TP_PDU) := */ +/* { */ +/* spare := omit, */ +/* iei := omit, */ +/* iel := ?, */ +/* tP_PDU := p_TP_PDU */ +/* }; */ + + template (present) RP_UserData cr_RP_UserData_SUBMIT(template (present) SMS_SUBMIT_Type p_SMS_SUBMIT := cr_SMS_SUBMIT_VPF_REF) := + { /* @status APPROVED (IMS, LTE) */ + /* NOTE: cr_SMS_SUBMIT_VPF_REF fits with AT command !! */ + spare := omit, + iei := omit, + iel := ?, + tP_PDU := { + SMS_SUBMIT := p_SMS_SUBMIT + } + }; + + template (present) RP_UserData cr_RP_UserData_DELIVER_REPORT := + { + spare := tsc_Sparebit, + iei := tsc_IEI_RP_UserData, + iel := ?, + tP_PDU := { + SMS_DELIVER_REPORT := cr_SMS_DELIVER_REPORT + } + }; + + /* End SM-RP Type Constraints */ + + /* SM-RP PDU Constraints */ + + template (value) RP_DATA_dl_Type cs_RP_DATA_dl_DELIVER (octetstring p_Digits) := + { /* @status APPROVED (IMS, LTE) */ + spare5 := '00000'B, + rP_MessageTypeIndicator := tsc_MT_RP_DATA_dl, + rP_MessageReference := int2oct(0, 1), + rP_OriginatorAddress := cs_RP_OriginatorAddress_dl, + rP_DestinationAddress := cs_RP_DestinationAddress_dl, + rP_UserData := cs_RP_UserData_DELIVER(p_Digits) + }; + + template (present) RP_DATA_ul_Type cr_RP_DATA_ul_SUBMIT(template (present) RP_UserData p_RP_UserData := cr_RP_UserData_SUBMIT, + template (present) octetstring p_Digits := ?) := + { /* @status APPROVED (IMS, LTE) */ + spare5 := '00000'B, + rP_MessageTypeIndicator := tsc_MT_RP_DATA_ul, + rP_MessageReference := ?, + rP_OriginatorAddress := cr_RP_OriginatorAddress_ul, + rP_DestinationAddress := cr_RP_DestinationAddress_ul(p_Digits), + rP_UserData := p_RP_UserData + }; + + template (value) RP_ACK_Type cs_RP_ACK_SUBMIT_REPORT(O1_Type p_MsgRef) := + { /* @status APPROVED (IMS) */ + spare5 := '00000'B, + rP_MessageTypeIndicator := tsc_MT_RP_ACK_dl, + rP_MessageReference := p_MsgRef, // @sic R5s100604 sic@ + rP_UserData := cs_RP_UserData_SUBMIT_REPORT + }; + + template (present) RP_ACK_Type cr_RP_ACK_DELIVER_REPORT := + { + spare5 := '00000'B, + rP_MessageTypeIndicator := tsc_MT_RP_ACK_ul, + rP_MessageReference := ?, + rP_UserData := cr_RP_UserData_DELIVER_REPORT + }; + + template (value) RP_ACK_Type cs_RP_ACK_dl(O1_Type p_MsgRef) := + { /* @status APPROVED (LTE) */ + spare5 := '00000'B, + rP_MessageTypeIndicator := tsc_MT_RP_ACK_dl, + rP_MessageReference := p_MsgRef, // @sic R5s100604 sic@ + rP_UserData := omit + }; + + template (present) RP_ACK_Type cr_RP_ACK_ul := + { /* @status APPROVED (IMS, LTE) */ + spare5 := '00000'B, + rP_MessageTypeIndicator := tsc_MT_RP_ACK_ul, + rP_MessageReference := ?, + rP_UserData := * + }; + + /* End SM-RP PDU Constraints */ + + /* SM-TP Type Constraints */ + template (present) TP_ProtocolIdentifier_Type cr_TP_ProtocolIdentifier := + { /* @status APPROVED (IMS, LTE) */ + // @sic R5s100586 sic@ + pidType := '00'B, + interworking := '0'B, + pidValue := '00000'B // @sic R5s100773 sic@ + }; + + template (value) TP_ProtocolIdentifier_Type cs_TP_ProtocolIdentifier := + { /* @status APPROVED (IMS, LTE) */ + // @sic R5s100586 sic@ + pidType := '00'B, + interworking := '0'B, + pidValue := '00000'B // @sic R5s100773 sic@ + }; + + template (value) TP_DataCodingScheme_Type cs_TP_DataCodingScheme := + { /* @status APPROVED (IMS, LTE) */ + codingGroup := '0000'B, + codeValue := '0000'B + }; + + template (present) TP_Address_Type cr_TP_AddressAny := + { /* @status APPROVED (IMS, LTE) */ + iel := ?, + typeOfNumberingPlan := cr_TypeOfNumberingPlanAny, + digits := * + }; + + template (value) TP_Address_Type cs_TP_Address (octetstring p_Digits) := + { /* @status APPROVED (IMS, LTE) */ + iel := int2oct(2 * lengthof(p_Digits), 1), + // length is number of useful semi-octets + // as p_digits is declared as octetstring the number must be even + typeOfNumberingPlan := cs_TypeOfNumberingPlan, + digits := p_Digits + }; + + template (value) TP_ParameterIndicator_Type cs_TP_ParameterIndicator := + { /* @status APPROVED (IMS) */ + extBit1 := '0'B, + spare4 := '0000'B, + tP_UDL := '0'B, + tP_DCS := '0'B, + tP_PID := '1'B + }; + + /* End SM-TP Type Constraints */ + + /* SM-TP PDU Constraints */ + + template (value) SMS_DELIVER_Type cs_SMS_DELIVER (octetstring p_Digits) := + { /* @status APPROVED (IMS, LTE) */ + tP_ReplyPath := '0'B, + tP_UserDataHeaderIndicator := '0'B, + tP_StatusReportIndication := '0'B, + spare2 := '00'B, + tP_MoreMessagesToSend := '1'B, + tP_MessageTypeIndicator := tsc_MT_SMS_DELIVER, + tP_OriginatingAddress := cs_TP_Address (p_Digits), + tP_ProtocolIdentifier := cs_TP_ProtocolIdentifier, + tP_DataCodingScheme_Type := cs_TP_DataCodingScheme, + tP_ServiceCentreTimeStamp := f_BCD_TimestampWithTimezone(), + tP_UserDataLength := int2oct(160,1), + tP_UserData := f_CharPacking_IA5toGsm7Bit(tsc_Fox, SMS_Packing) + }; + + template (present) SMS_DELIVER_REPORT_Type cr_SMS_DELIVER_REPORT := + { + spare1 := '0'B, + tP_UserDataHeaderIndicator := '0'B, + spare4 := '0000'B, + tP_MessageTypeIndicator := tsc_MT_SMS_DELIVER_REPORT, + tP_FailureCause := omit, + tP_ParameterIndicator := ?, + tP_ProtocolIdentifier := cr_TP_ProtocolIdentifier ifpresent, // @sic R5s100773 sic@ + tP_DataCodingScheme_Type := *, + tP_UserDataLength := *, + tP_UserData := * + }; + + template (present) SMS_SUBMIT_Type cr_SMS_SUBMIT(template (present) B2_Type p_ValidityPeriodFormat := '??'B, + template TP_ValidityPeriod_Type p_ValidityPeriod := *, + template (present) TP_UserDataLength_Type p_UserDataLength := ?) := + { /* @status APPROVED (IMS, LTE) */ + tP_ReplyPath := '?'B, + tP_UserDataHeaderIndicator := '?'B, + tP_StatusReportRequest := '?'B, + tP_ValidityPeriodFormat := p_ValidityPeriodFormat, + tP_RejectDuplicates := '?'B, + tP_MessageTypeIndicator := tsc_MT_SMS_SUBMIT, + tP_MessageReference := ?, + tP_DestinationAddress := cr_TP_AddressAny, + tP_ProtocolIdentifier := cr_TP_ProtocolIdentifier, + tP_DataCodingScheme_Type := ?, + tP_ValidityPeriod := p_ValidityPeriod, + tP_UserDataLength := p_UserDataLength, // @sic R5s120530 sic@ + tP_UserData := ? // any data will do + }; + + template (present) SMS_SUBMIT_Type cr_SMS_SUBMIT_VPF_REF := cr_SMS_SUBMIT('10'B, {TP_ValidityPeriodRelative := int2oct(167,1)}, int2oct(160,1)); /* @status APPROVED (IMS, LTE) */ + + template (value) SMS_SUBMIT_REPORT_Type cs_SMS_SUBMIT_REPORT := + { /* @status APPROVED (IMS) */ + spare1 := '0'B, + tP_UserDataHeaderIndicator := '0'B, + spare4 := '0000'B, + tP_MessageTypeIndicator := tsc_MT_SMS_SUBMIT_REPORT, + tP_FailureCause := omit, + tP_ParameterIndicator := cs_TP_ParameterIndicator, + tP_ServiceCentreTimeStamp := f_BCD_TimestampWithTimezone(), + tP_ProtocolIdentifier := cs_TP_ProtocolIdentifier, + tP_DataCodingScheme_Type := omit, + tP_UserDataLength := omit, + tP_UserData := omit + }; + + /* End SM-TP PDU Constraints */ + +} diff --git a/IMS_PART4_IWD_14wk37/Common/NAS/SMS_TypeDefs.ttcn b/IMS_PART4_IWD_14wk37/Common/NAS/SMS_TypeDefs.ttcn new file mode 100644 index 0000000..210d08d --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/NAS/SMS_TypeDefs.ttcn @@ -0,0 +1,395 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-04-02 16:00:54 +0200 (Tue, 02 Apr 2013) $ +// $Rev: 8411 $ +/******************************************************************************/ + +module SMS_TypeDefs { + +import from CommonDefs all; +import from NAS_CommonTypeDefs all; + +group SMS_Declarations { + +/* SMS Constant Declarations */ +const ProtocolDiscriminator tsc_PD_SMS := '1001'B; /* 24.007 cl. 11.2.3.1.1 */ + +const MessageType tsc_MT_CP_DATA := '00000001'B; /* CP_DATA */ +const MessageType tsc_MT_CP_ACK := '00000100'B; /* CP_ACK */ +const MessageType tsc_MT_CP_ERROR := '00010000'B; /* CP_ERROR */ + +const RP_MessageTypeIndicator_Type tsc_MT_RP_DATA_ul := '000'B; /* RP_DATA_ul */ +const RP_MessageTypeIndicator_Type tsc_MT_RP_DATA_dl := '001'B; /* RP_DATA_dl */ +const RP_MessageTypeIndicator_Type tsc_MT_RP_ACK_ul := '010'B; /* RP_ACK_ul */ +const RP_MessageTypeIndicator_Type tsc_MT_RP_ACK_dl := '011'B; /* RP_ACK_dl */ +const RP_MessageTypeIndicator_Type tsc_MT_RP_ERROR_ul := '100'B; /* RP_ERROR_ul */ +const RP_MessageTypeIndicator_Type tsc_MT_RP_ERROR_dl := '101'B; /* RP_ERROR_dl */ +const RP_MessageTypeIndicator_Type tsc_MT_RP_SMMA := '110'B; /* RP_SMMA */ + +const TP_MessageTypeIndicator_Type tsc_MT_SMS_DELIVER := '00'B; /* SMS DELIVER */ +const TP_MessageTypeIndicator_Type tsc_MT_SMS_DELIVER_REPORT := '00'B; /* SMS DELIVER REPORT */ +const TP_MessageTypeIndicator_Type tsc_MT_SMS_STATUS_REPORT := '10'B; /* SMS STATUS REPORT */ +const TP_MessageTypeIndicator_Type tsc_MT_SMS_COMMAND := '10'B; /* SMS COMMAND */ +const TP_MessageTypeIndicator_Type tsc_MT_SMS_SUBMIT := '01'B; /* SMS SUBMIT, SMS SUBMIT REPORT */ +const TP_MessageTypeIndicator_Type tsc_MT_SMS_SUBMIT_REPORT := '01'B; /* SMS SUBMIT, SMS SUBMIT REPORT */ + +const B7_Type tsc_IEI_RP_UserData := '1000001'B; /* 24.011 cl. 8.2.5.3 */ +const B1_Type tsc_Sparebit := '0'B; /* 24.011 cl. 8.2.5.3 */ + + +/* Non-SMS Type Declarations */ + +type record TransactionIdentifier_Type { /* 24.007 cl. 11.2.3.1.3 */ + B1_Type tI_Flag, /* A message has a TI flag set to "0" when it belongs to + transaction initiated by its sender, and to "1" otherwise. */ + B3_Type tI_Value /* Values 0 to 6 allowed, value 7 has a special meaning */ +}; + +type record TypeOfNumberingPlan { /* 24.008 cl. 10.5.4.7, 10.5.4.9, 10.5.4.13 */ + B1_Type extBit, /* Extension Bit */ + B3_Type typeOfNumber, /* Type Of Number */ + B4_Type numberingPlanId /* Numbering Plan Identification */ +}; + +/* End Non-SMS Type Declarations */ + +/* SM-CP Type Declarations */ + +type record CP_UserData_Type { /* 24.011 cl. 8.1.4.1 */ + B1_Type spare optional, /* 0, present in case of TLV; omit in case of LV */ + B7_Type iei optional, /* 0000001, present in case of TLV; omit in case of LV */ + O1_Type iel, /* */ + RP_PDU_Type rP_PDU /* <= 248 octets */ +}; + +type record CP_Cause_Type { /* 24.011 cl. 8.1.4.2 */ + B1_Type spare1 optional, /* 0, present in case of TV; omit in case of V */ + B7_Type iei optional, /* 0000001, present in case of TV; omit in case of V */ + B1_Type spare2, /* 0 */ + B7_Type causeValue /* Table 8.2/3GPP TS 24.011 */ +}; + +/* End SM-CP Type Declarations */ + +/* SM-CP PDU Declarations */ + +type record CP_DATA_Type { /* 24.011 cl. 7.2.1 + Direction: both */ + TransactionIdentifier_Type transactionIdentifier, /* 24.007 cl. 11.2.3.1.3 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* 24.007 cl. 11.2.3.1.1 M V 1/2 */ + MessageType messageType, /* cl. 8.1.3 M V 1 */ + CP_UserData_Type cP_UserData /* cl. 8.1.4.1 M LV <= 249 octets */ +}; + +type record CP_ACK_Type { /* 24.011 cl. 7.2.2 + Direction: both */ + TransactionIdentifier_Type transactionIdentifier, /* 24.007 cl. 11.2.3.1.3 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* 24.007 cl. 11.2.3.1.1 M V 1/2 */ + MessageType messageType /* cl. 8.1.3 M V 1 */ +}; + +type record CP_ERROR_Type { /* 24.011 cl. 7.2.3 + Direction: both */ + TransactionIdentifier_Type transactionIdentifier, /* 24.007 cl. 11.2.3.1.3 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* 24.007 cl. 11.2.3.1.1 M V 1/2 */ + MessageType messageType, /* cl. 8.1.3 M V 1 */ + CP_Cause_Type cP_Cause /* cl. 8.1.4.2 O LV <= 249 octets */ +}; + +type union CP_PDU_Type { + CP_DATA_Type CP_DATA, + CP_ACK_Type CP_ACK, + CP_ERROR_Type CP_ERROR +}; +/* SM-CP PDU Declarations */ + +/* SM-RP Type Declarations */ + +type B3_Type RP_MessageTypeIndicator_Type; /* 24.011 cl. 8.2.2 */ +type O1_Type RP_MessageReference_Type; /* 24.011 cl. 8.2.3 */ + +type record RP_OriginatorAddress_dl { /* 24.011 cl. 8.2.5.1 */ + B1_Type spare optional, /* 0 */ + B7_Type iei optional, /* 0101 1110 */ + O1_Type iel, /* min value 2 and max value is 11 */ + TypeOfNumberingPlan typeOfNumberingPlan, /* */ + octetstring digits length(1..10) +}; + +type record RP_OriginatorAddress_ul { /* 24.011 cl. 8.2.5.1 */ + B1_Type spare optional, /* 0 */ + B7_Type iei optional, /* 0101 1110 */ + O1_Type iel /* 0 */ +}; + +type record RP_DestinationAddress_ul { /* 24.011 cl. 8.2.5.2 */ + B1_Type spare optional, /* 0 */ + B7_Type iei optional, /* 0101 1110 */ + O1_Type iel, /* min value 2 and max value is 11 */ + TypeOfNumberingPlan typeOfNumberingPlan, /* */ + octetstring digits length(1..10) +}; +type record RP_DestinationAddress_dl { /* 24.011 cl. 8.2.5.2 */ + B1_Type spare optional, /* 0 */ + B7_Type iei optional, /* 0101 1110 */ + O1_Type iel /* 0 */ +}; + +type record RP_UserData { /* 24.011 cl. 8.2.5.3 */ + B1_Type spare optional, /* 0, present in case of TLV; omit in case of LV */ + B7_Type iei optional, /* 1000001, present in case of TLV; omit in case of LV */ + O1_Type iel, /* */ + TP_PDU_Type tP_PDU /* <= 232 octets */ +}; + +type record RP_Cause { /* 24.011 cl. 8.2.5.4 */ + B1_Type spare optional, /* present in case of TLV; omit in case of LV */ + B7_Type iei optional, /* present in case of TLV; omit in case of LV */ + O1_Type iel, /* 2 or 3 */ + B1_Type extBit1, /* 0 */ + B7_Type causeValue1, /* Table 8.4/3GPP TS 24.011 */ + B1_Type extBit2, /* 0 */ + B7_Type causeValue2, /* Table 8.4/3GPP TS 24.011 */ + O1_Type diagnostic optional /* Parameters included in the return error from MAP */ +}; + +/* End SM-RP Type Declarations */ + +/* SM-RP PDU Declarations */ + +type record RP_DATA_dl_Type { /* 24.011 cl. 7.3.1.1 + Direction: n -> ue */ + B5_Type spare5, /* cl. 8.2.2 M V 5 bits */ + RP_MessageTypeIndicator_Type rP_MessageTypeIndicator, /* cl. 8.2.2 M V 3 bits */ + RP_MessageReference_Type rP_MessageReference, /* cl. 8.2.3 M LV 1 */ + RP_OriginatorAddress_dl rP_OriginatorAddress, /* cl. 8.2.5.1 M LV 1-12 octets */ + RP_DestinationAddress_dl rP_DestinationAddress, /* cl. 8.2.5.2 M LV 1 */ + RP_UserData rP_UserData /* cl. 8.2.5.3 M LV <= 233 octets */ +}; + +type record RP_DATA_ul_Type { /* 24.011 cl. 7.3.1.2 + Direction: ue -> n */ + B5_Type spare5, /* cl. 8.2.2 M V 5 bits */ + RP_MessageTypeIndicator_Type rP_MessageTypeIndicator, /* cl. 8.2.2 M V 3 bits */ + RP_MessageReference_Type rP_MessageReference, /* cl. 8.2.3 M LV 1 */ + RP_OriginatorAddress_ul rP_OriginatorAddress, /* cl. 8.2.5.1 M LV 1 */ + RP_DestinationAddress_ul rP_DestinationAddress, /* cl. 8.2.5.2 M LV 1 */ + RP_UserData rP_UserData /* cl. 8.2.5.3 M LV <= 233 octets */ +}; + +type record RP_SMMA_Type { /* 24.011 cl. 7.3.2 + Direction: ue -> n */ + B5_Type spare5, /* cl. 8.2.2 M V 5 bits */ + RP_MessageTypeIndicator_Type rP_MessageTypeIndicator, /* cl. 8.2.2 M V 3 bits */ + RP_MessageReference_Type rP_MessageReference /* cl. 8.2.3 M LV 1 */ +}; + +type record RP_ACK_Type { /* 24.011 cl. 7.3.3 + Direction: ue <-> n */ + B5_Type spare5, /* cl. 8.2.2 M V 5 bits */ + RP_MessageTypeIndicator_Type rP_MessageTypeIndicator, /* cl. 8.2.2 M V 3 bits */ + RP_MessageReference_Type rP_MessageReference, /* cl. 8.2.3 M LV 1 */ + RP_UserData rP_UserData optional /* cl. 8.2.5.3 O TLV <= 234 octets */ +}; + +type record RP_ERROR_Type { /* 24.011 cl. 7.3.4 + Direction: ue <-> n */ + B5_Type spare5, /* cl. 8.2.2 M V 5 bits */ + RP_MessageTypeIndicator_Type rP_MessageTypeIndicator, /* cl. 8.2.2 M V 3 bits */ + RP_MessageReference_Type rP_MessageReference, /* cl. 8.2.3 M LV 1 */ + RP_Cause rP_Cause, /* cl. 8.2.5.4 M LV 2-3 */ + RP_UserData rP_UserData optional /* cl. 8.2.5.3 O TLV <= 234 octets */ +}; + +type union RP_PDU_Type { + RP_DATA_dl_Type RP_DATA_dl, + RP_DATA_ul_Type RP_DATA_ul, + RP_SMMA_Type RP_SMMA, + RP_ACK_Type RP_ACK, + RP_ERROR_Type RP_ERROR +}; + +/* End SM-RP PDU Declarations */ + +/* SM-TP Type Declarations */ + +type record TP_Address_Type { /* 23.040 cl. 9.1.2.5 */ + O1_Type iel, /* min value 2 and max value is 11 */ + TypeOfNumberingPlan typeOfNumberingPlan, + octetstring digits length(0..10) optional +}; + +type B2_Type TP_MessageTypeIndicator_Type; /* 23.040 cl. 9.2.3.1 */ +type O1_Type TP_MessageReference_Type; /* 23.040 cl. 9.2.3.6 */ +type O1_Type TP_UserDataLength_Type; /* 23.040 cl. 9.2.3.16 */ + +type record TP_ProtocolIdentifier_Type { /* 23.040 cl. 9.2.3.9 */ + B2_Type pidType, /* */ + B1_Type interworking, /* */ + B5_Type pidValue /* */ +}; + +type record TP_DataCodingScheme_Type { /* 23.040 cl. 9.2.3.10 + 23.040 cl. 4 */ + B4_Type codingGroup, /* */ + B4_Type codeValue /* */ +}; + +type hexstring TP_ServiceCentreTimeStamp_Type length (14); /* 23.040 cl. 9.2.3.11 */ + +type O1_Type TP_ValidityPeriodRelative_Type; /* 23.040 cl. 9.2.3.12.1 */ + +type hexstring TP_ValidityPeriodAbsolute_Type length (14); /* 23.040 cl. 9.2.3.12.2 */ + +type record TP_ValidityPeriodEnhanced_Type { /* 23.040 cl. 9.2.3.12.3 */ + B1_Type extBit, /* */ + B1_Type singleShot, /* */ + B3_Type spare3, /* */ + B3_Type validityPeriodFormat, /* */ + O6_Type validityPeriod /* */ +}; + +type union TP_ValidityPeriod_Type { /* 23.040 cl. 9.2.3.3 */ + TP_ValidityPeriodRelative_Type TP_ValidityPeriodRelative, /* Relative format */ + TP_ValidityPeriodAbsolute_Type TP_ValidityPeriodAbsolute, /* Absolute format */ + TP_ValidityPeriodEnhanced_Type TP_ValidityPeriodEnhanced /* Enhanced format */ +}; + +type record TP_Status_Type { /* 23.040 cl. 9.2.3.15 */ + B1_Type reserved, /* */ + B7_Type status /* */ +}; + +type B8_Type TP_Command_Type; /* 23.040 cl. 9.2.3.19 */ + +type record TP_ParameterIndicator_Type { /* 23.040 cl. 9.2.3.27 */ + B1_Type extBit1, /* */ + B4_Type spare4, /* */ + B1_Type tP_UDL, /* */ + B1_Type tP_DCS, /* */ + B1_Type tP_PID /* */ +}; + +/* End SM-TP Type Declarations */ + +/* SM-TP PDU Declarations */ + +type record SMS_DELIVER_Type { /* 23.040 cl. 9.2.2.1 + Direction: n -> ue */ + B1_Type tP_ReplyPath, /* 23.040 cl. 9.2.3.17 */ + B1_Type tP_UserDataHeaderIndicator, /* 23.040 cl. 9.2.3.23 */ + B1_Type tP_StatusReportIndication, /* 23.040 cl. 9.2.3.4 */ + B2_Type spare2, /* */ + B1_Type tP_MoreMessagesToSend, /* 23.040 cl. 9.2.3.2 */ + TP_MessageTypeIndicator_Type tP_MessageTypeIndicator, /* 23.040 cl. 9.2.3.1 */ + TP_Address_Type tP_OriginatingAddress, /* 23.040 cl. 9.1.2.5 */ + TP_ProtocolIdentifier_Type tP_ProtocolIdentifier, /* 23.040 cl. 9.2.3.9 */ + TP_DataCodingScheme_Type tP_DataCodingScheme_Type, /* 23.040 cl. 9.2.3.10 */ + TP_ServiceCentreTimeStamp_Type tP_ServiceCentreTimeStamp, /* 23.040 cl. 9.2.3.11 */ + TP_UserDataLength_Type tP_UserDataLength, /* 23.040 cl. 9.2.3.16, derived from SUBMIT */ + octetstring tP_UserData length (0..140) optional /* 23.040 cl. 9.2.3.24, derived from SUBMIT */ +}; + +type record SMS_DELIVER_REPORT_Type { /* 23.040 cl. 9.2.2.1a + Direction: ue -> n */ + B1_Type spare1, /* */ + B1_Type tP_UserDataHeaderIndicator, /* 23.040 cl. 9.2.3.23 */ + B4_Type spare4, /* */ + TP_MessageTypeIndicator_Type tP_MessageTypeIndicator, /* 23.040 cl. 9.2.3.1 */ + O1_Type tP_FailureCause optional, /* 23.040 cl. 9.2.3.22, provided if RP_ERROR, not if RP_ACK */ + TP_ParameterIndicator_Type tP_ParameterIndicator, /* 23.040 cl. 9.2.3.27 */ + TP_ProtocolIdentifier_Type tP_ProtocolIdentifier optional, /* 23.040 cl. 9.2.3.9 */ + TP_DataCodingScheme_Type tP_DataCodingScheme_Type optional, /* 23.040 cl. 9.2.3.10 */ + TP_UserDataLength_Type tP_UserDataLength optional, /* 23.040 cl. 9.2.3.16 */ + octetstring tP_UserData length (0..159) optional /* 23.040 cl. 9.2.3.24 */ +}; + +type record SMS_SUBMIT_Type { /* 23.040 cl. 9.2.2.2 + Direction: ue -> n */ + B1_Type tP_ReplyPath, /* 23.040 cl. 9.2.3.17 */ + B1_Type tP_UserDataHeaderIndicator, /* 23.040 cl. 9.2.3.23 */ + B1_Type tP_StatusReportRequest, /* 23.040 cl. 9.2.3.5 */ + B2_Type tP_ValidityPeriodFormat, /* 23.040 cl. 9.2.3.3 */ + B1_Type tP_RejectDuplicates, /* 23.040 cl. 9.2.3.25 */ + TP_MessageTypeIndicator_Type tP_MessageTypeIndicator, /* 23.040 cl. 9.2.3.1 */ + TP_MessageReference_Type tP_MessageReference, /* 23.040 cl. 9.2.3.6 */ + TP_Address_Type tP_DestinationAddress, /* 23.040 cl. 9.1.2.5 */ + TP_ProtocolIdentifier_Type tP_ProtocolIdentifier, /* 23.040 cl. 9.2.3.9 */ + TP_DataCodingScheme_Type tP_DataCodingScheme_Type, /* 23.040 cl. 9.2.3.10 */ +// one of the subsequent ValidityPeriod solutions has be removed + TP_ValidityPeriod_Type tP_ValidityPeriod optional, /* 23.040 cl. 9.2.3.12 */ +// TP_ValidityPeriodRelative_Type tP_ValidityPeriodRelative optional, /* 23.040 cl. 9.2.3.12.1 */ +// TP_ValidityPeriodAbsolute_Type tP_ValidityPeriodAbsolute optional, /* 23.040 cl. 9.2.3.12.2 */ +// TP_ValidityPeriodEnhanced_Type tP_ValidityPeriodEnhanced optional, /* 23.040 cl. 9.2.3.12.3 */ + TP_UserDataLength_Type tP_UserDataLength, /* 23.040 cl. 9.2.3.16 */ + octetstring tP_UserData length (0..140) optional /* 23.040 cl. 9.2.3.24 */ +}; +type record SMS_SUBMIT_REPORT_Type { /* 23.040 cl. 9.2.2.2a + Direction: n -> ue */ + B1_Type spare1, /* */ + B1_Type tP_UserDataHeaderIndicator, /* 23.040 cl. 9.2.3.23 */ + B4_Type spare4, /* */ + TP_MessageTypeIndicator_Type tP_MessageTypeIndicator, /* 23.040 cl. 9.2.3.1 */ + O1_Type tP_FailureCause optional, /* 23.040 cl. 9.2.3.22, provided if RP_ERROR, not if RP_ACK */ + TP_ParameterIndicator_Type tP_ParameterIndicator, /* 23.040 cl. 9.2.3.27 */ + TP_ServiceCentreTimeStamp_Type tP_ServiceCentreTimeStamp, /* 23.040 cl. 9.2.3.11 */ + TP_ProtocolIdentifier_Type tP_ProtocolIdentifier optional, /* 23.040 cl. 9.2.3.9 */ + TP_DataCodingScheme_Type tP_DataCodingScheme_Type optional, /* 23.040 cl. 9.2.3.10 */ + TP_UserDataLength_Type tP_UserDataLength optional, /* 23.040 cl. 9.2.3.16 */ + octetstring tP_UserData length (0..152) optional /* 23.040 cl. 9.2.3.24 */ +}; + +type record SMS_STATUS_REPORT_Type { /* 23.040 cl. 9.2.2.3 + Direction: n -> ue */ + B1_Type spare1, /* */ + B1_Type tP_UserDataHeaderIndicator, /* 23.040 cl. 9.2.3.23 */ + B1_Type tP_StatusReportQualifier, /* 23.040 cl. 9.2.3.26 */ + B2_Type spare2, /* */ + B1_Type tP_MoreMessagesToSend, /* 23.040 cl. 9.2.3.2 */ + TP_MessageTypeIndicator_Type tP_MessageTypeIndicator, /* 23.040 cl. 9.2.3.1 */ + TP_MessageReference_Type tP_MessageReference, /* 23.040 cl. 9.2.3.6 */ + TP_Address_Type tP_RecipientAddress, /* 23.040 cl. 9.1.2.5 */ + TP_ServiceCentreTimeStamp_Type tP_ServiceCentreTimeStamp, /* 23.040 cl. 9.2.3.11 */ + TP_ServiceCentreTimeStamp_Type tP_DischargeTime, /* 23.040 cl. 9.2.3.12 */ + TP_Status_Type tP_Status, /* 23.040 cl. 9.2.3.15 */ + TP_ParameterIndicator_Type tP_ParameterIndicator optional, /* 23.040 cl. 9.2.3.27 */ + TP_ProtocolIdentifier_Type tP_ProtocolIdentifier optional, /* 23.040 cl. 9.2.3.9 */ + TP_DataCodingScheme_Type tP_DataCodingScheme_Type optional, /* 23.040 cl. 9.2.3.10 */ + TP_UserDataLength_Type tP_UserDataLength optional, /* 23.040 cl. 9.2.3.16 */ + octetstring tP_UserData length (0..143) optional /* 23.040 cl. 9.2.3.24 */ +}; + +type record SMS_COMMAND_Type { /* 23.040 cl. 9.2.2.4 + Direction: ue -> n */ + B1_Type spare1, /* */ + B1_Type tP_UserDataHeaderIndicator, /* 23.040 cl. 9.2.3.23 */ + B1_Type tP_StatRptReq, /* Table 8.4/3GPP TS 24.011 */ + B3_Type spare3, /* */ + TP_MessageTypeIndicator_Type tP_MessageTypeIndicator, /* 23.040 cl. 9.2.3.1 */ + TP_MessageReference_Type tP_MessageReference, /* 23.040 cl. 9.2.3.6 */ + TP_ProtocolIdentifier_Type tP_ProtocolIdentifier, /* 23.040 cl. 9.2.3.9 */ + TP_Command_Type tP_CommandType, /* 23.040 cl. 9.2.3.19 */ + TP_MessageReference_Type tP_MessageNumber, /* 23.040 cl. 9.2.3.18 */ + TP_Address_Type tP_DestinationAddress, /* 23.040 cl. 9.1.2.5 */ + TP_UserDataLength_Type tP_CommandDataLength, /* 23.040 cl. 9.2.3.20 (number of octets) */ + octetstring tP_CommandData length (0..156) optional /* 23.040 cl. 9.2.3.21 */ +}; + +type union TP_PDU_Type { + SMS_DELIVER_Type SMS_DELIVER, + SMS_DELIVER_REPORT_Type SMS_DELIVER_REPORT, + SMS_SUBMIT_Type SMS_SUBMIT, + SMS_SUBMIT_REPORT_Type SMS_SUBMIT_REPORT, + SMS_STATUS_REPORT_Type SMS_STATUS_REPORT, + SMS_COMMAND_Type SMS_COMMAND +}; + +/* End SM-TP PDU Declarations */ + +} with { encode "SMS Types"} // group SMS_Declarations + +} // module diff --git a/IMS_PART4_IWD_14wk37/Common/UTRAN/UTRAN_ASP_Definitions.asn b/IMS_PART4_IWD_14wk37/Common/UTRAN/UTRAN_ASP_Definitions.asn new file mode 100644 index 0000000..0d06238 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/UTRAN/UTRAN_ASP_Definitions.asn @@ -0,0 +1,7967 @@ +UTRAN-ASP-Definitions DEFINITIONS AUTOMATIC TAGS ::= +BEGIN + +-- IMPORTs from RRC Type definitions + +IMPORTS + MCCH-Message, + MSCH-Message, + BCCH-BCH-Message, + BCCH-FACH-Message, + DL-CCCH-Message, + DL-DCCH-Message, + DL-SHCCH-Message, + E-AGCH-DRX-Info-TDD128, + PCCH-Message, + UL-CCCH-Message, + UL-DCCH-Message, + UL-SHCCH-Message, + DL-DCCH-MessageType, + UL-DCCH-MessageType, + DL-CCCH-MessageType, + UL-CCCH-MessageType, + PCCH-MessageType, + DL-SHCCH-MessageType, + UL-SHCCH-MessageType, + BCCH-FACH-MessageType, + MCCH-MessageType, + MSCH-MessageType, + ActiveSetUpdate, + ActiveSetUpdate-r3-IEs, + ActiveSetUpdate-v4b0ext-IEs, + ActiveSetUpdate-v590ext-IEs, + ActiveSetUpdate-v690ext-IEs, + ActiveSetUpdate-r6-IEs, + ActiveSetUpdate-v6b0ext-IEs, + ActiveSetUpdateComplete, + ActiveSetUpdateFailure, + AssistanceDataDelivery, + AssistanceDataDelivery-r3-IEs, + AssistanceDataDelivery-v3a0ext, + AssistanceDataDelivery-v4b0ext-IEs, + CellChangeOrderFromUTRAN, + CellChangeOrderFromUTRAN-r3-IEs, + CellChangeOrderFromUTRAN-v590ext-IEs, + CellChangeOrderFromUTRANFailure, + CellChangeOrderFromUTRANFailure-r3-IEs, + CellUpdate, + CellUpdate-v590ext, + CellUpdate-v690ext-IEs, + CellUpdate-v6b0ext-IEs, + CellUpdateConfirm, + CellUpdateConfirm-r3-IEs, + CellUpdateConfirm-v3a0ext, + CellUpdateConfirm-v4b0ext-IEs, + CellUpdateConfirm-v590ext-IEs, + CellUpdateConfirm-v5d0ext-IEs, + CellUpdateConfirm-r4-IEs, + CellUpdateConfirm-r5-IEs, + CellUpdateConfirm-r6-IEs, + CellUpdateConfirm-v690ext-IEs, + CellUpdateConfirm-v6b0ext-IEs, + CellUpdateConfirm-CCCH, + ControlChannelDRXInfo-TDD128-r8, + CounterCheck, + CounterCheck-r3-IEs, + CounterCheckResponse, + DownlinkDirectTransfer, + DownlinkDirectTransfer-r3-IEs, + HandoverToUTRANCommand, + HandoverToUTRANCommand-r3-IEs, + HandoverToUTRANCommand-r4-IEs, + HandoverToUTRANCommand-r5-IEs, + HandoverToUTRANCommand-r6-IEs, + HandoverToUTRANCommand-v6b0ext-IEs, + HandoverToUTRANComplete, + InitialDirectTransfer, + InitialDirectTransfer-v3a0ext, + InitialDirectTransfer-v590ext, + InitialDirectTransfer-v690ext-IEs, + HandoverFromUTRANCommand-GSM, + HandoverFromUTRANCommand-GSM-r3-IEs, + HandoverFromUTRANCommand-GSM-r6-IEs, + HandoverFromUTRANCommand-GSM-v690ext-IEs, + HandoverFromUTRANCommand-GERANIu, + HandoverFromUTRANCommand-GERANIu-r5-IEs, + HandoverFromUTRANCommand-CDMA2000, + HandoverFromUTRANCommand-CDMA2000-r3-IEs, + HandoverFromUTRANFailure, + HandoverFromUtranFailure-v590ext-IEs, + InterRATHandoverInfo, + InterRATHandoverInfo-v390ext-IEs, + InterRATHandoverInfo-v3a0ext-IEs, + InterRATHandoverInfo-v3d0ext-IEs, + InterRATHandoverInfo-v3g0ext-IEs, + InterRATHandoverInfo-r3-add-ext-IEs, + InterRATHandoverInfo-v4b0ext-IEs, + InterRATHandoverInfo-v4d0ext-IEs, + InterRATHandoverInfo-v590ext-IEs, + InterRATHandoverInfo-v690ext1-IEs, + InterRATHandoverInfo-v690ext-IEs, + InterRATHandoverInfo-v6b0ext-IEs, + MeasurementControl, + MeasurementControl-r3-IEs, + MeasurementControl-v390ext, + MeasurementControl-v3a0ext, + MeasurementControl-r4-IEs, + MeasurementControl-v590ext-IEs, + MeasurementControl-v5b0ext-IEs, + MeasurementControl-r6-IEs, + MeasurementControl-v6a0ext-IEs, + MeasurementControlFailure, + MeasurementControlFailure-v590ext-IEs, + MeasurementReport, + MeasurementReport-v390ext, + MeasurementReport-v4b0ext-IEs, + MeasurementReport-v590ext-IEs, + MeasurementReport-v5b0ext-IEs, + MeasurementReport-v690ext-IEs, + PagingType1, + PagingType1-v590ext-IEs, + PagingType2, + PhysicalChannelReconfiguration, + PhysicalChannelReconfiguration-r3-IEs, + PhysicalChannelReconfiguration-v3a0ext, + PhysicalChannelReconfiguration-v4b0ext-IEs, + PhysicalChannelReconfiguration-v590ext-IEs, + PhysicalChannelReconfiguration-r4-IEs, + PhysicalChannelReconfiguration-r5-IEs, + PhysicalChannelReconfiguration-r6-IEs, + PhysicalChannelReconfiguration-v690ext-IEs, + PhysicalChannelReconfiguration-v6b0ext-IEs, + PhysicalChannelReconfigurationComplete, + PhysicalChannelReconfigurationFailure, + PhysicalSharedChannelAllocation, + PhysicalSharedChannelAllocation-r3-IEs, + PhysicalSharedChannelAllocation-r4-IEs, + PhysicalSharedChannelAllocation-v690ext-IEs, + PUSCHCapacityRequest, + PUSCHCapacityRequest-v590ext, + RadioBearerReconfiguration, + RadioBearerReconfiguration-r3-IEs, + RadioBearerReconfiguration-v3a0ext, + RadioBearerReconfiguration-v4b0ext-IEs, + RadioBearerReconfiguration-v590ext-IEs, + RadioBearerReconfiguration-v5d0ext-IEs, + RadioBearerReconfiguration-r4-IEs, + RadioBearerReconfiguration-r5-IEs, + RadioBearerReconfiguration-r6-IEs, + RadioBearerReconfiguration-v690ext-IEs, + RadioBearerReconfiguration-v6b0ext-IEs, + RadioBearerReconfigurationComplete, + RadioBearerReconfigurationFailure, + RadioBearerRelease, + RadioBearerRelease-r3-IEs, + RadioBearerRelease-v3a0ext, + RadioBearerRelease-v4b0ext-IEs, + RadioBearerRelease-v590ext-IEs, + RadioBearerRelease-r4-IEs, + RadioBearerRelease-r5-IEs, + RadioBearerRelease-v690ext-IEs, + RadioBearerRelease-r6-IEs, + RadioBearerRelease-v6b0ext-IEs, + RadioBearerReleaseComplete, + RadioBearerReleaseFailure, + RadioBearerSetup, + RadioBearerSetup-r3-IEs, + RadioBearerSetup-v3a0ext, + RadioBearerSetup-v4b0ext-IEs, + RadioBearerSetup-v590ext-IEs, + RadioBearerSetup-v5d0ext-IEs, + RadioBearerSetup-r4-IEs, + RadioBearerSetup-r5-IEs, + RadioBearerSetup-v690ext-IEs, + RadioBearerSetup-r6-IEs, + RadioBearerSetup-v6b0ext-IEs, + RadioBearerSetupComplete, + RadioBearerSetupFailure, + RRCConnectionReject, + RRCConnectionReject-r3-IEs, + RRCConnectionReject-v690ext-IEs, + RRCConnectionRelease, + RRCConnectionRelease-r3-IEs, + RRCConnectionRelease-r4-IEs, + RRCConnectionRelease-v690ext-IEs, + RRCConnectionRelease-CCCH, + RRCConnectionRelease-CCCH-r3-IEs, + RRCConnectionRelease-CCCH-r4-IEs, + RRCConnectionRelease-CCCH-r5-IEs, + RRCConnectionRelease-CCCH-v690ext-IEs, + RRCConnectionReleaseComplete, + RRCConnectionRequest, + RRCConnectionRequest-v3d0ext-IEs, + RRCConnectionRequest-v4b0ext-IEs, + RRCConnectionRequest-v590ext-IEs, + RRCConnectionRequest-v690ext-IEs, + RRCConnectionRequest-v6b0ext-IEs, + RRCConnectionSetup, + RRCConnectionSetup-r3-IEs, + RRCConnectionSetup-v4b0ext-IEs, + RRCConnectionSetup-v590ext-IEs, + RRCConnectionSetup-r4-IEs, + RRCConnectionSetup-r5-IEs, + RRCConnectionSetup-v690ext-IEs, + RRCConnectionSetup-r6-IEs, + RRCConnectionSetup-v6b0ext-IEs, + RRCConnectionSetupComplete, + RRCConnectionSetupComplete-v370ext, + RRCConnectionSetupComplete-v380ext-IEs, + RRCConnectionSetupComplete-v3a0ext-IEs, + RRCConnectionSetupComplete-v3g0ext-IEs, + RRCConnectionSetupComplete-r3-add-ext-IEs, + RRCConnectionSetupComplete-v4b0ext-IEs, + RRCConnectionSetupComplete-v590ext-IEs, + RRCConnectionSetupComplete-v5c0ext-IEs, + RRCConnectionSetupComplete-v650ext-IEs, + RRCConnectionSetupComplete-v680ext-IEs, + RRCConnectionSetupComplete-v690ext-IEs, + RRC-FailureInfo, + RRC-FailureInfo-r3-IEs, + RRCStatus, + SecurityModeCommand, + SecurityModeCommand-r3-IEs, + SecurityModeComplete, + SecurityModeFailure, + SignallingConnectionRelease, + SignallingConnectionRelease-r3-IEs, + SignallingConnectionReleaseIndication, + SystemInformation-BCH, + SystemInformation-FACH, + FirstSegment, + FirstSegmentShort, + SubsequentSegment, + LastSegment, + LastSegmentShort, + CompleteSIB-List, + CompleteSIB, + CompleteSIBshort, + SystemInformationChangeIndication, + TransportChannelReconfiguration, + TransportChannelReconfiguration-r3-IEs, + TransportChannelReconfiguration-v3a0ext, + TransportChannelReconfiguration-v4b0ext-IEs, + TransportChannelReconfiguration-v590ext-IEs, + TransportChannelReconfiguration-r4-IEs, + TransportChannelReconfiguration-r5-IEs, + TransportChannelReconfiguration-v690ext-IEs, + TransportChannelReconfiguration-r6-IEs, + TransportChannelReconfiguration-v6b0ext-IEs, + TransportChannelReconfigurationComplete, + TransportChannelReconfigurationFailure, + TransportFormatCombinationControl, + TransportFormatCombinationControlFailure, + UECapabilityEnquiry, + UECapabilityEnquiry-r3-IEs, + UECapabilityEnquiry-v4b0ext-IEs, + UECapabilityEnquiry-v590ext-IEs, + UECapabilityInformation, + UECapabilityInformation-v370ext, + UECapabilityInformation-v380ext-IEs, + UECapabilityInformation-v3a0ext-IEs, + UECapabilityInformation-r3-add-ext-IEs, + UECapabilityInformation-v4b0ext, + UECapabilityInformation-v590ext, + UECapabilityInformation-v5c0ext, + UECapabilityInformation-v650ext-IEs, + UECapabilityInformation-v680ext-IEs, + UECapabilityInformation-v690ext-IEs, + UECapabilityInformationConfirm, + UECapabilityInformationConfirm-r3-IEs, + UplinkDirectTransfer, + UplinkDirectTransfer-v690ext-IEs, + UplinkPhysicalChannelControl, + UplinkPhysicalChannelControl-r3-IEs, + UplinkPhysicalChannelControl-v4b0ext-IEs, + UplinkPhysicalChannelControl-r4-IEs, + UplinkPhysicalChannelControl-r5-IEs, + UplinkPhysicalChannelControl-v690ext-IEs, + UplinkPhysicalChannelControl-v6a0ext-IEs, + URAUpdate, + URAUpdateConfirm, + URAUpdateConfirm-r3-IEs, + URAUpdateConfirm-r5-IEs, + URAUpdateConfirm-v690ext-IEs, + URAUpdateConfirm-CCCH, + URAUpdateConfirm-CCCH-r3-IEs, + UTRANMobilityInformation, + UTRANMobilityInformation-r3-IEs, + UTRANMobilityInformation-v3a0ext-IEs, + UTRANMobilityInformation-r5-IEs, + UtranMobilityInformation-v690ext-IEs, + UTRANMobilityInformationConfirm, + UTRANMobilityInformationFailure, + MBMSAccessInformation, + MBMSCommonPTMRBInformation, + MBMSCurrentCellPTMRBInformation, + MBMSGeneralInformation, + MBMSGeneralInformation-v6b0ext-IEs, + MBMSModificationRequest, + MBMSModificationRequest-v6b0ext-IEs, + MBMSModifiedServicesInformation, + MBMSNeighbouringCellPTMRBInformation, + MBMSSchedulingInformation, + MBMSUnmodifiedServicesInformation, + MultiCarrier-HSDSCH-physical-layer-category, + MultiCarrier-HSDSCH-physical-layer-category-extension, + HS-SCCH-SystemInfo-TDD128, + Ansi-41-IDNNS, + CN-DomainIdentity, + CN-DomainInformation, + CN-DomainInformationFull, + CN-DomainInformationList, + CN-DomainInformationListFull, + CN-DomainSysInfo, + CN-DomainSysInfoList, + CN-InformationInfo, + CN-InformationInfo-r6, + CN-InformationInfoFull, + Digit, + Gsm-map-IDNNS, + IMEI, + IMEI-Digit, + IMSI-GSM-MAP, + IntraDomainNasNodeSelector, + LAI, + MCC, + MNC, + MultiplePLMN-List-r6, + NAS-Message, + NAS-Synchronisation-Indicator, + NAS-SystemInformationGSM-MAP, + P-TMSI-GSM-MAP, + PagingRecordTypeID, + PLMN-Identity, + PLMN-IdentityWithOptionalMCC-r6, + PLMN-Type, + RAB-Identity, + RAI, + RoutingAreaCode, + RoutingParameter, + TMSI-GSM-MAP, + AccessClassBarred, + AccessClassBarredList, + AllowedIndicator, + CellAccessRestriction, + CellBarred, + CellIdentity, + CellIdentity-PerRL-List, + CellSelectReselectInfoSIB-3-4, + DomainSpecificAccessRestrictionForSharedNetwork-v670ext, + DomainSpecificAccessRestrictionList-v670ext, + DomainSpecificAccessRestrictionParam-v670ext, + DomainSpecificAccessRestriction-v670ext, + MapParameter, + Mapping, + Mapping-LCR-r4, + MappingFunctionParameter, + MappingFunctionParameterList, + MappingFunctionType, + MappingInfo, + Q-Hyst-S, + Q-Hyst-S-Fine, + RAT, + RAT-FDD-Info, + RAT-FDD-InfoList, + RAT-Identifier, + RAT-TDD-Info, + RAT-TDD-InfoList, + ReservedIndicator, + S-SearchQual, + S-SearchRXLEV, + SpeedDependentScalingFactor, + T-Barred, + T-Reselection-S, + T-Reselection-S-Fine, + TreselectionScalingFactor, + UpperLimit, + URA-Identity, + URA-IdentityList, + AccessStratumReleaseIndicator, + ActivationTime, + BackoffControlParams, + C-RNTI, + CapabilityUpdateRequirement, + CapabilityUpdateRequirement-r4-ext, + CapabilityUpdateRequirement-r4, + CellUpdateCause, + CellUpdateCause-ext, + ChipRateCapability, + CipheringAlgorithm, + CipheringModeCommand, + CipheringModeInfo, + CipheringModeInfo-r7, + CN-DRX-CycleLengthCoefficient, + CN-PagedUE-Identity, + CompressedModeMeasCapability, + CompressedModeMeasCapability-LCR-r4, + CompressedModeMeasCapabFDDList, + CompressedModeMeasCapabFDDList2, + CompressedModeMeasCapabFDDList-ext, + CompressedModeMeasCapabFDD, + CompressedModeMeasCapabFDD2, + CompressedModeMeasCapabFDD-ext, + CompressedModeMeasCapabTDDList, + CompressedModeMeasCapabTDD, + CompressedModeMeasCapabGSMList, + CompressedModeMeasCapabGSM, + CompressedModeMeasCapabMC, + HS-DSCH-TBSizeTable, + CPCH-Parameters, + DL-CapabilityWithSimultaneousHS-DSCHConfig, + DL-DPCCH-BER, + DL-PhysChCapabilityFDD, + DL-PhysChCapabilityFDD-v380ext, + SupportOfDedicatedPilotsForChEstimation, + DL-PhysChCapabilityTDD, + DL-PhysChCapabilityTDD-LCR-r4, + DL-TransChCapability, + DRAC-SysInfo, + DRAC-SysInfoList, + DSCH-RNTI, + DTX-Info, + DelayRestrictionFlag, + E-AGCH-Information-r8, + E-DPDCH-Info-r7, + E-DPDCH-Info-r8, + E-RNTI, + ESN-DS-41, + EstablishmentCause, + FailureCauseWithProtErr, + FailureCauseWithProtErrTrId, + GroupIdentityWithReleaseInformation, + GroupReleaseInformation, + GSM-Measurements, + H-RNTI, + HS-DSCH-PagingSystemInformation, + HSDSCH-physical-layer-category, + HSDSCH-physical-layer-category-ext, + HSDSCH-physical-layer-category-ext2, + HSDSCH-physical-layer-category-ext3, + HSDSCH-physical-layer-category-ext4, + HSDSCH-physical-layer-category-ext5, + HSDSCH-physical-layer-category-ext6, + HSDSCH-physical-layer-category-ext7, + HSDSCH-physical-layer-category-ext8, + UESpecificBehaviourInformation1idle, + UESpecificBehaviourInformation1interRAT, + IMSI-and-ESN-DS-41, + IMSI-DS-41, + InitialPriorityDelayList, + InitialUE-Identity, + IntegrityCheckInfo, + IntegrityProtActivationInfo, + IntegrityProtectionAlgorithm, + IntegrityProtectionModeCommand, + IntegrityProtectionModeInfo, + IntegrityProtectionModeInfo-r7, + IntegrityProtInitNumber, + MaxHcContextSpace, + MaxHcContextSpace-r5-ext, + MaxROHC-ContextSessions-r4, + MaximumAM-EntityNumberRLC-Cap, + MaximumBitRate, + MaximumRLC-WindowSize, + MaxNoDPDCH-BitsTransmitted, + MaxNoBits, + MaxNoPhysChBitsReceived, + MaxNoSCCPCH-RL, + MaxNumberOfTF, + MaxNumberOfTFC-DL, + MaxNumberOfTFC-UL, + MaxPhysChPerFrame, + MaxPhysChPerSubFrame-r4, + MaxPhysChPerTimeslot, + MaxPhysChPerTS, + MaxSimultaneousCCTrCH-Count, + MaxSimultaneousTransChsDL, + MaxSimultaneousTransChsUL, + MaxTransportBlocksDL, + MaxTransportBlocksUL, + MaxTS-PerFrame, + MaxTS-PerSubFrame-r4, + MeasurementCapability, + MeasurementCapabilityExt, + MeasurementCapabilityExt2, + MeasurementCapability-r4-ext, + MessageAuthenticationCode, + MinimumSF-DL, + MinimumSF-UL, + MultiModeCapability, + MultiRAT-Capability, + MultiModeRAT-Capability-v590ext, + MultiModeRAT-Capability-v680ext, + N-300, + N-301, + N-302, + N-304, + N-308, + N-310, + N-312, + N-312ext, + N-312-r5, + N-313, + N-315, + N-315ext, + N-315-r5, + N-AccessFails, + N-AP-RetransMax, + NetworkAssistedGPS-Supported, + NF-BO-AllBusy, + NF-BO-NoAICH, + NF-BO-Mismatch, + NS-BO-Busy, + NS-IP, + P-TMSI-and-RAI-GSM-MAP, + PagingCause, + PagingRecord, + PagingRecord2-r5, + PagingRecordList, + PagingRecord2List-r5, + PDCP-Capability, + PDCP-Capability-r4-ext, + PDCP-Capability-r5-ext, + PDCP-Capability-r5-ext2, + PhysicalChannelCapability, + PhysicalChannelCapability-LCR-r4, + PhysicalChannelCapability-hspdsch-r5, + PNBSCH-Allocation-r4, + ProtocolErrorCause, + ProtocolErrorIndicator, + ProtocolErrorIndicatorWithMoreInfo, + ProtocolErrorMoreInformation, + RadioFrequencyBandFDD, + RadioFrequencyBandFDD2, + RadioFrequencyBandFDD3, + RadioFrequencyBandTDDList, + RadioFrequencyBandTDD, + RadioFrequencyBandGSM, + Rb-timer-indicator, + Re-EstablishmentTimer, + RedirectionInfo, + RedirectionInfo-r6, + RejectionCause, + ReleaseCause, + RF-Capability, + RF-Capability-r4-ext, + RLC-Capability, + RLC-Capability-r5-ext, + RRC-ConnectionReleaseInformation, + RRC-MessageSequenceNumber, + RRC-MessageSequenceNumberList, + RRC-StateIndicator, + RRC-TransactionIdentifier, + S-RNTI, + S-RNTI-2, + SecurityCapability, + Serving-HSDSCH-CellInformation, + SimultaneousSCCPCH-DPCH-Reception, + SRNC-Identity, + START-Value, + STARTList, + STARTSingle, + CapabilityUpdateRequirement-r5, + SystemSpecificCapUpdateReq, + SystemSpecificCapUpdateReq-v590ext, + SystemSpecificCapUpdateReq-r5, + SystemSpecificCapUpdateReqList, + SystemSpecificCapUpdateReqList-r5, + T-300, + T-301, + T-302, + T-304, + T-305, + T-307, + T-308, + T-309, + T-310, + T-311, + T-312, + T-313, + T-314, + T-315, + T-316, + T-317, + T-318, + T-CPCH, + TMSI-and-LAI-GSM-MAP, + TMSI-DS-41, + TotalRLC-AM-BufferSize, + TotalRLC-AM-BufferSize-r5-ext, + TransmissionProbability, + TransportChannelCapability, + TurboSupport, + TxRxFrequencySeparation, + U-RNTI, + U-RNTI-Group, + U-RNTI-Short, + UE-CapabilityContainer-IEs, + UE-RadioAccessCapability-v6b0ext-IEs, + UE-ConnTimersAndConstants, + UE-ConnTimersAndConstants-v3a0ext, + UE-ConnTimersAndConstants-r5, + UE-HSPA-Identities-r6, + UE-IdleTimersAndConstants, + UE-IdleTimersAndConstants-v3a0ext, + UE-MultiModeRAT-Capability, + UE-PowerClass, + UE-PowerClassExt, + UE-RadioAccessCapability, + UE-RadioAccessCapabilityInfo, + UE-RadioAccessCapability-v370ext, + UE-RadioAccessCapability-v380ext, + UE-RadioAccessCapability-v3a0ext, + UE-RadioAccessCapability-v3g0ext, + UE-RadioAccessCapability-v650ext, + UE-RadioAccessCapability-v690ext, + UE-RadioAccessCapabBandFDDList2, + UE-RadioAccessCapabBandFDD2, + UE-PositioningCapabilityExt-v380, + UE-PositioningCapabilityExt-v3a0, + UE-PositioningCapabilityExt-v3g0, + UE-RadioAccessCapabBandFDDList, + UE-RadioAccessCapabBandFDDList-ext, + UE-RadioAccessCapabBandFDD, + UE-RadioAccessCapabBandFDD-ext, + UE-RadioAccessCapability-v4b0ext, + UE-RadioAccessCapabilityComp, + UE-RadioAccessCapabilityComp-ext, + UE-RadioAccessCapabilityComp2, + RF-CapabilityComp, + RF-CapabBandFDDComp, + RF-CapabBandListFDDComp, + RF-CapabBandListFDDComp-ext, + UE-RadioAccessCapability-v590ext, + UE-RadioAccessCapability-v5c0ext, + UE-RadioAccessCapability-v680ext, + UL-PhysChCapabilityFDD, + UL-PhysChCapabilityFDD-r6, + UL-PhysChCapabilityTDD, + UL-PhysChCapabilityTDD-LCR-r4, + PhysicalChannelCapability-edch-r6, + UL-TransChCapability, + UE-Positioning-Capability, + UE-SecurityInformation, + UE-SecurityInformation2, + URA-UpdateCause, + UTRAN-DRX-CycleLengthCoefficient, + UpPCHposition-LCR, + WaitTime, + AlgorithmSpecificInfo, + AlgorithmSpecificInfo-r4, + CID-InclusionInfo-r4, + COUNT-C, + COUNT-C-MSB, + DefaultConfigIdentity, + DefaultConfigIdentity-r4, + DefaultConfigIdentity-r5, + DefaultConfigIdentity-r6, + DefaultConfigMode, + DDI, + DL-AM-RLC-Mode, + DL-AM-RLC-Mode-r5, + DL-CounterSynchronisationInfo, + DL-CounterSynchronisationInfo-r5, + DL-LogicalChannelMapping, + DL-LogicalChannelMapping-r5, + DL-LogicalChannelMappingList, + DL-LogicalChannelMappingList-r5, + DL-Reception-Window-Size-r6, + DL-RFC3095-r4, + DL-RLC-Mode, + DL-RLC-Mode-r5, + DL-RLC-Mode-r6, + DL-RLC-Mode-r7, + DL-RLC-Mode-r11, + DL-RLC-StatusInfo, + DL-TM-RLC-Mode, + DL-TransportChannelType, + DL-TransportChannelType-r5, + DL-UM-RLC-LI-size, + DL-UM-RLC-Mode-r5, + DL-UM-RLC-Mode-r6, + E-TFCS-Info, + ExpectReordering, + ExplicitDiscard, + HeaderCompressionInfo, + HeaderCompressionInfoList, + HeaderCompressionInfo-r4, + HeaderCompressionInfoList-r4, + LogicalChannelIdentity, + LosslessSRNS-RelocSupport, + MAC-d-HFN-initial-value, + MAC-DTX-Cycle-2ms, + MAC-DTX-Cycle-10ms, + MAC-ehs-AddReconfReordQ, + MAC-ehs-AddReconfReordQ-r9, + MAC-ehs-AddReconfReordQ-r11, + MAC-ehs-QueueId, + MAC-InactivityThreshold, + MAC-LogicalChannelPriority, + MaxDAT, + MaxDAT-Retransmissions, + MaxMRW, + MaxPDCP-SN-WindowSize, + MaxRST, + NewTiming, + NoExplicitDiscard, + PDCP-Info, + PDCP-Info-r4, + PDCP-InfoReconfig, + PDCP-InfoReconfig-r4, + PDCP-PDU-Header, + PDCP-ROHC-TargetMode, + PDCP-SN-Info, + Poll-PDU, + Poll-SDU, + PollingInfo, + PollWindow, + PowerControlGAP, + PredefinedConfigIdentity, + PredefinedConfigValueTag, + PredefinedRB-Configuration, + PreDefRadioConfiguration, + PredefinedConfigStatusList, + PredefinedConfigStatusInfo, + PredefinedConfigStatusListComp, + PredefinedConfigSetsWithDifferentValueTag, + PredefinedConfigSetWithDifferentValueTag, + PredefinedConfigValueTagList, + PredefinedConfigStatusListVarSz, + RAB-Info, + RAB-Info-r6-ext, + RAB-Info-v6b0ext, + RAB-Info-r6, + RAB-InformationList, + RAB-InformationList-r6, + RAB-InformationReconfigList, + RAB-InformationReconfig, + RAB-Info-Post, + RAB-InformationSetup, + RAB-InformationSetup-r4, + RAB-InformationSetup-r5, + RAB-InformationSetup-r6-ext, + RAB-InformationSetup-r6, + RAB-InformationSetup-v6b0ext, + RAB-InformationSetupList, + RAB-InformationSetupList-r4, + RAB-InformationSetupList-r5, + RAB-InformationSetupList-r6, + RAB-InformationSetupList-r6-ext, + RAB-InformationSetupList-v6b0ext, + RB-ActivationTimeInfo, + RB-ActivationTimeInfoList, + RB-COUNT-C-Information, + RB-COUNT-C-InformationList, + RB-COUNT-C-MSB-Information, + RB-COUNT-C-MSB-InformationList, + RB-Identity, + RB-IdentityList, + RB-InformationAffected, + RB-InformationAffected-r5, + RB-InformationAffected-r6, + RB-InformationAffectedList, + RB-InformationAffectedList-r5, + RB-InformationAffectedList-r6, + RB-InformationChanged-r6, + RB-InformationChangedList-r6, + RB-InformationReconfig, + RB-InformationReconfig-r4, + RB-InformationReconfig-r5, + RB-InformationReconfig-r6, + RB-InformationReconfigList, + RB-InformationReconfigList-r4, + RB-InformationReconfigList-r5, + RB-InformationReconfigList-r6, + RB-InformationReleaseList, + RB-InformationSetup, + RB-InformationSetup-r4, + RB-InformationSetup-r5, + RB-InformationSetup-r6, + RB-InformationSetupList, + RB-InformationSetupList-r4, + RB-InformationSetupList-r5, + RB-InformationSetupList-r6, + RB-MappingInfo, + RB-MappingInfo-r5, + RB-MappingInfo-r6, + RB-MappingOption, + RB-MappingOption-r5, + RB-MappingOption-r6, + RB-PDCPContextRelocation, + RB-PDCPContextRelocationList, + RB-StopContinue, + RB-WithPDCP-Info, + RB-WithPDCP-InfoList, + ReceivingWindowSize, + RFC2507-Info, + RFC3095-Info-r4, + RLC-Info, + RLC-Info-r5, + RLC-Info-r6, + RLC-Info-MCCH-r6, + RLC-Info-MSCH-r6, + RLC-Info-MTCH-r6, + RLC-InfoChoice, + RLC-InfoChoice-r5, + RLC-InfoChoice-r6, + RLC-PDU-Size, + RLC-PDU-SizeList, + RLC-SequenceNumber, + RLC-SizeInfo, + RLC-SizeExplicitList, + ROHC-Profile-r4, + ROHC-ProfileList-r4, + ROHC-PacketSize-r4, + ROHC-PacketSizeList-r4, + SRB-InformationSetup, + SRB-InformationSetup-r5, + SRB-InformationSetup-r6, + SRB-InformationSetupList, + SRB-InformationSetupList-r5, + SRB-InformationSetupList-r6, + SRB-InformationSetupList2, + SRB-InformationSetupList2-r6, + TimerDAR-r6, + TimerDiscard, + TimerEPC, + TimerMRW, + TimerOSD-r6, + TimerPoll, + TimerPollPeriodic, + TimerPollProhibit, + TimerRST, + TimerStatusPeriodic, + TimerStatusProhibit, + TransmissionRLC-Discard, + TransmissionWindowSize, + UL-AM-RLC-Mode, + UL-CounterSynchronisationInfo, + UL-LogicalChannelMapping, + UL-LogicalChannelMapping-r6, + UL-LogicalChannelMappingList, + UL-LogicalChannelMappingList-r6, + UL-LogicalChannelMappings, + UL-LogicalChannelMappings-r6, + UL-RFC3095-r4, + UL-RLC-Mode, + UL-TM-RLC-Mode, + UL-UM-RLC-Mode, + UL-TransportChannelType, + UM-RLC-DuplAvoid-Reord-Info-r6, + UM-RLC-OutOSeqDelivery-Info-r6, + WindowSizeDAR-r6, + WindowSizeOSD-r6, + AddOrReconfMAC-dFlow, + AllowedTFC-List, + AllowedTFI-List, + BitModeRLC-SizeInfo, + BLER-QualityValue, + ChannelCodingType, + CodingRate, + CommonDynamicTF-Info, + CommonDynamicTF-Info-DynamicTTI, + CommonDynamicTF-InfoList, + CommonDynamicTF-InfoList-DynamicTTI, + CommonTransChTFS, + CommonTransChTFS-LCR, + CPCH-SetID, + CRC-Size, + DedicatedDynamicTF-Info, + DedicatedDynamicTF-Info-DynamicTTI, + DedicatedDynamicTF-InfoList, + DedicatedDynamicTF-InfoList-DynamicTTI, + DedicatedTransChTFS, + DL-AddReconfTransChInfo2List, + DL-AddReconfTransChInfoList, + DL-AddReconfTransChInfoList-r4, + DL-AddReconfTransChInfoList-r5, + DL-AddReconfTransChInformation, + DL-AddReconfTransChInformation-r4, + DL-AddReconfTransChInformation-r5, + DL-AddReconfTransChInformation2, + DL-CommonTransChInfo, + DL-CommonTransChInfo-r4, + DL-DeletedTransChInfoList, + DL-DeletedTransChInfoList-r5, + DL-TransportChannelIdentity, + DL-TransportChannelIdentity-r5, + DL-TrCH-Type, + DL-TrCH-TypeId1-r5, + DL-TrCH-TypeId2-r5, + DRAC-ClassIdentity, + DRAC-StaticInformation, + DRAC-StaticInformationList, + E-DCH-AddReconf-MAC-d-Flow, + E-DCH-AddReconf-MAC-d-FlowList, + E-DCH-AddReconf-MAC-d-FlowList-r7, + E-DCH-MAC-d-FlowIdentity, + E-DCH-MAC-d-FlowMaxRetrans, + E-DCH-MAC-d-FlowMultiplexingList, + E-DCH-MAC-d-FlowPowerOffset, + Common-E-DCH-MAC-d-FlowList, + E-DCH-TTI, + ExplicitTFCS-Configuration, + GainFactor, + GainFactorInformation, + HSDSCH-Info, + HARQ-Info, + HARQ-Info-r7, + HARQ-Info-r11, + HARQMemorySize, + IndividualDL-CCTrCH-Info, + IndividualDL-CCTrCH-InfoList, + IndividualUL-CCTrCH-Info, + IndividualUL-CCTrCH-InfoList, + LogicalChannelByRB, + LogicalChannelList, + MAC-d-FlowIdentityDCHandHSDSCH, + MAC-d-FlowIdentity, + MAC-d-PDU-SizeInfo-List, + MAC-d-PDUsizeInfo, + MAC-hs-AddReconfQueue-List, + MAC-hs-AddReconfQueue, + MAC-hs-DelQueue-List, + MAC-hs-DelQueue, + MAC-hs-WindowSize, + NumberOfTbSizeAndTTIList, + MessType, + Non-allowedTFC-List, + NumberOfTransportBlocks, + OctetModeRLC-SizeInfoType1, + OctetModeRLC-SizeInfoType2, + PowerOffsetInfoShort, + PowerOffsetInformation, + PowerOffsetPp-m, + PreDefTransChConfiguration, + QualityTarget, + RateMatchingAttribute, + ReferenceTFC-ID, + RestrictedTrChInfo, + RestrictedTrChInfoList, + SemistaticTF-Information, + SignalledGainFactors, + SplitTFCI-Signalling, + SplitType, + T1-ReleaseTimer, + TFC-Subset, + TFC-SubsetList, + TFC-Value, + TFCI-Field2-Information, + TFCI-Range, + TFCI-RangeList, + TFCS, + TFCS-Identity, + TFCS-IdentityPlain, + TFCS-InfoForDSCH, + TFCS-ReconfAdd, + TFCS-Removal, + TFCS-RemovalList, + TimeDurationBeforeRetry, + TM-SignallingInfo, + TransmissionTimeInterval, + TransmissionTimeValidity, + TransportChannelIdentity, + TransportChannelIdentityDCHandDSCH, + TransportFormatSet, + TransportFormatSet-LCR, + UL-AddReconfTransChInfoList, + UL-AddReconfTransChInfoList-r6, + UL-AddReconfTransChInformation, + UL-AddReconfTransChInformation-r6, + UL-CommonTransChInfo, + UL-CommonTransChInfo-r4, + UL-ControlledTrChList, + UL-DeletedTransChInfoList, + UL-DeletedTransChInfoList-r6, + UL-TransportChannelIdentity, + UL-TransportChannelIdentity-r6, + UL-TrCH-Type, + USCH-TransportChannelsInfo, + ACK-NACK-repetitionFactor, + AC-To-ASC-Mapping, + AC-To-ASC-MappingTable, + AccessServiceClass-FDD, + AccessServiceClass-TDD, + AccessServiceClass-TDD-LCR-r4, + AdditionalPRACH-TF-and-TFCS-CCCH-IEs, + AdditionalPRACH-TF-and-TFCS-CCCH, + AdditionalPRACH-TF-and-TFCS-CCCH-List, + AICH-Info, + AICH-PowerOffset, + AICH-TransmissionTiming, + AllocationPeriodInfo, + Alpha, + AP-AICH-ChannelisationCode, + AP-PreambleScramblingCode, + AP-Signature, + AP-Signature-VCAM, + AP-Subchannel, + ASCSetting-FDD, + ASCSetting-TDD, + ASCSetting-TDD-LCR-r4, + AvailableAP-Signature-VCAMList, + AvailableAP-SignatureList, + AvailableAP-SubchannelList, + AvailableMinimumSF-ListVCAM, + AvailableMinimumSF-VCAM, + AvailableSignatures, + AvailableSubChannelNumbers, + BEACON-PL-Est, + BurstType, + Bler-Target, + CCTrCH-PowerControlInfo, + CCTrCH-PowerControlInfo-r4, + CCTrCH-PowerControlInfo-r5, + CD-AccessSlotSubchannel, + CD-AccessSlotSubchannelList, + CD-CA-ICH-ChannelisationCode, + CD-PreambleScramblingCode, + CD-SignatureCode, + CD-SignatureCodeList, + CellAndChannelIdentity, + CellParametersID, + Cfntargetsfnframeoffset, + ChannelAssignmentActive, + ChannelisationCode256, + ChannelReqParamsForUCSM, + ClosedLoopTimingAdjMode, + CodeNumberDSCH, + CodeRange, + CodeWordSet, + CommonTimeslotInfo, + CommonTimeslotInfoMBMS, + CommonTimeslotInfoSCCPCH, + Common-MAC-ehs-ReorderingQueue, + ConstantValue, + ConstantValueTdd, + CPCH-PersistenceLevels, + CPCH-PersistenceLevelsList, + CPCH-SetInfo, + CPCH-SetInfoList, + CPCH-StatusIndicationMode, + CQI-RepetitionFactor, + CSICH-PowerOffset, + DefaultDPCH-OffsetValueFDD, + DefaultDPCH-OffsetValueTDD, + DeltaPp-m, + DeltaCQI, + DeltaNACK, + DeltaACK, + DeltaSIR, + DHS-Sync, + DL-CCTrCh, + DL-CCTrCh-r4, + DL-CCTrChList, + DL-CCTrChList-r4, + DL-CCTrChListToRemove, + DL-ChannelisationCode, + DL-ChannelisationCodeList, + DL-CommonInformation, + DL-CommonInformation-r4, + DL-CommonInformation-r5, + DL-CommonInformation-r6, + DL-CommonInformation-r7, + DL-CommonInformation-r8, + DL-CommonInformation-r10, + DL-CommonInformation-r11, + DL-CommonInformationPost, + DL-CommonInformationPredef, + DL-CompressedModeMethod, + DL-DPCH-InfoCommon, + DL-DPCH-InfoCommon-r4, + DL-DPCH-InfoCommon-r6, + DL-DPCH-InfoCommonPost, + DL-DPCH-InfoCommonPredef, + DL-DPCH-InfoPerRL, + DL-DPCH-InfoPerRL-r4, + DL-DPCH-InfoPerRL-r5, + DL-DPCH-InfoPerRL-r6, + DL-DPCH-InfoPerRL-r7, + DL-FDPCH-InfoPerRL-r6, + DL-FDPCH-InfoPerRL-r7, + DL-DPCH-InfoPerRL-PostFDD, + DL-DPCH-InfoPerRL-PostTDD, + DL-DPCH-InfoPerRL-PostTDD-LCR-r4, + DL-DPCH-PowerControlInfo, + DL-FDPCH-InfoCommon-r6, + DL-FrameType, + DL-HSPDSCH-Information, + DL-HSPDSCH-Information-r6, + DL-HSPDSCH-Information-r7, + DL-HSPDSCH-Information-r8, + DL-HSPDSCH-Information-r9, + DL-HSPDSCH-Information-r11, + DL-HSPDSCH-TS-Configuration, + DL-InformationPerRL, + DL-InformationPerRL-r4, + DL-InformationPerRL-r5, + DL-InformationPerRL-r5bis, + DL-InformationPerRL-r6, + DL-InformationPerRL-v6b0ext, + DL-InformationPerRL-List, + DL-InformationPerRL-List-r4, + DL-InformationPerRL-List-r5, + DL-InformationPerRL-List-r6, + DL-InformationPerRL-List-v6b0ext, + DL-InformationPerRL-List-r5bis, + DL-InformationPerRL-ListPostFDD, + DL-InformationPerRL-PostFDD, + DL-InformationPerRL-PostTDD, + DL-InformationPerRL-PostTDD-LCR-r4, + DL-PDSCH-Information, + Dl-rate-matching-restriction, + DL-TPC-PowerOffsetPerRL, + DL-TPC-PowerOffsetPerRL-List, + DL-TS-ChannelisationCode, + DL-TS-ChannelisationCodesShort, + DownlinkAdditionalTimeslots, + DownlinkAdditionalTimeslots-LCR-r4, + DownlinkTimeslotsCodes, + DownlinkTimeslotsCodes-LCR-r4, + DPC-Mode, + DPCCH-PowerOffset, + DPCCH-PowerOffset2, + DPCH-CompressedModeInfo, + DPCH-CompressedModeStatusInfo, + DPCH-FrameOffset, + DSCH-Mapping, + DSCH-MappingList, + DSCH-RadioLinkIdentifier, + DSCH-TransportChannelsInfo, + DTX-DRX-TimingInfo-r7, + DurationTimeInfo, + DynamicPersistenceLevel, + DynamicPersistenceLevelList, + DynamicPersistenceLevelTF-List, + DynamicTFInformationCCCH, + E-AGCH-ChannelisationCode, + E-AGCH-Information, + E-AGCH-Information-r7, + E-DCH-MinimumSet-E-TFCI, + E-DCH-ReconfigurationInfo, + E-DCH-RL-InfoNewServingCell, + E-DCH-RL-InfoOtherCell, + E-DPCCH-Info, + E-DPCCH-Info-r7, + E-DPCCH-DPCCH-PowerOffset, + E-DPDCH-Info, + E-DPDCH-PeriodicyOfSchedInfo, + E-DPDCH-PL-NonMax, + E-DPDCH-Reference-E-TFCI, + E-DPDCH-Reference-E-TFCIList, + E-DPDCH-SchedulingInfoConfiguration, + E-DPDCH-SchedulingTransmConfiguration, + E-DPDCH-MaxChannelisationCodes, + E-HICH-ChannelisationCode, + E-HICH-Information, + E-HICH-Information-r11, + E-HICH-Information-CommonEdch, + E-HICH-Information-LCR, + E-HICH-RGCH-SignatureSequence, + E-RGCH-CombinationIndex, + E-RGCH-Information, + E-RGCH-Information-CommonEdch, + E-RUCCH-Info, + E-TFCI-TableIndex, + FACH-PCH-Information, + FACH-PCH-InformationList, + Feedback-cycle, + FPACH-Info-r4, + FrequencyInfo, + FrequencyInfoFDD, + FrequencyInfoTDD, + HappyBit-DelayCondition, + HARQ-Preamble-Mode, + HS-ChannelisationCode-LCR, + HS-PDSCH-Midamble-Configuration-TDD128, + HS-DSCH-PagingSystemInformation-TDD128, + HS-DSCH-DrxCellfach-info-TDD128, + HS-SCCH-Info, + HS-SCCH-Info-r6, + HS-SCCH-Codes, + HS-SCCH-LessInfo-r7, + HS-SCCH-TDD128, + HS-SCCH-TDD128-r6, + HS-SICH-Configuration-TDD128, + HS-SICH-Configuration-TDD128-r6, + HS-SCCH-TDD384, + HS-SCCH-TDD384-r6, + HS-SICH-Configuration-TDD384, + HS-SICH-Power-Control-Info-TDD384, + HS-SCCH-SystemInfo, + IndividualTimeslotInfo, + IndividualTimeslotInfo-LCR-r4, + IndividualTimeslotInfo-LCR-r4-ext, + IndividualTS-Interference, + IndividualTS-InterferenceList, + ITP, + NidentifyAbort, + MaxAllowedUL-TX-Power, + MaxAvailablePCPCH-Number, + MaxPowerIncrease-r4, + MaxTFCI-Field2Value, + Measurement-Feedback-Info, + MidambleConfigurationBurstType1and3, + MidambleConfigurationBurstType2, + MidambleShiftAndBurstType, + MidambleShiftAndBurstType-DL, + MidambleShiftAndBurstType-LCR-r4, + MidambleShiftLong, + MidambleShiftShort, + MinimumSpreadingFactor, + MultiCodeInfo, + N-EOT, + N-GAP, + N-PCH, + N-StartMessage, + NB01, + NF-Max, + NumberOfDPDCH, + NumberOfFBI-Bits, + OpenLoopPowerControl-TDD, + OpenLoopPowerControl-IPDL-TDD-r4, + PagingIndicatorLength, + PC-Preamble, + PCP-Length, + PCPCH-ChannelInfo, + PCPCH-ChannelInfoList, + PCPICH-UsageForChannelEst, + PDSCH-CapacityAllocationInfo, + PDSCH-CapacityAllocationInfo-r4, + PDSCH-CodeInfo, + PDSCH-CodeInfoList, + PDSCH-CodeMap, + PDSCH-CodeMapList, + PDSCH-CodeMapping, + PDSCH-Identity, + PDSCH-Info, + PDSCH-Info-r4, + PDSCH-Info-LCR-r4, + PDSCH-PowerControlInfo, + PDSCH-SHO-DCH-Info, + PDSCH-SysInfo, + PDSCH-SysInfo-HCR-r5, + PDSCH-SysInfo-LCR-r4, + PDSCH-SysInfoList, + PDSCH-SysInfoList-HCR-r5, + PDSCH-SysInfoList-LCR-r4, + PDSCH-SysInfoList-SFN, + PDSCH-SysInfoList-SFN-HCR-r5, + PDSCH-SysInfoList-SFN-LCR-r4, + PersistenceScalingFactor, + PersistenceScalingFactorList, + PI-CountPerFrame, + PichChannelisationCodeList-LCR-r4, + PICH-Info, + PICH-Info-LCR-r4, + PICH-PowerOffset, + PilotBits128, + PilotBits256, + MeasurementPowerOffset, + PositionFixedOrFlexible, + PowerControlAlgorithm, + PowerOffsetPilot-pdpdch, + PowerOffsetTPC-pdpdch, + PowerRampStep, + PRACH-ChanCodes-LCR-r4, + PRACH-Definition-LCR-r4, + PRACH-Midamble, + PRACH-Partitioning, + PRACH-Partitioning-LCR-r4, + PRACH-PowerOffset, + PRACH-RACH-Info, + PRACH-RACH-Info-LCR-r4, + PRACH-SystemInformation, + PRACH-SystemInformation-LCR-r4, + PRACH-SystemInformationList, + PRACH-SystemInformationList-LCR-r4, + PreambleRetransMax, + PreambleScramblingCodeWordNumber, + PreDefPhyChConfiguration, + PrimaryCCPCH-Info, + PrimaryCCPCH-Info-r4, + PrimaryCCPCH-Info-LCR-r4, + PrimaryCCPCH-Info-LCR-r4-ext, + PrimaryCCPCH-InfoPost, + PrimaryCCPCH-InfoPostTDD-LCR-r4, + PrimaryCCPCH-TX-Power, + PrimaryCPICH-Info, + PrimaryCPICH-TX-Power, + PrimaryScramblingCode, + PuncturingLimit, + PUSCH-CapacityAllocationInfo, + PUSCH-CapacityAllocationInfo-r4, + PUSCH-Identity, + PUSCH-Info, + PUSCH-Info-r4, + PUSCH-Info-LCR-r4, + PUSCH-PowerControlInfo-r4, + PUSCH-SysInfo, + PUSCH-SysInfo-HCR-r5, + PUSCH-SysInfo-LCR-r4, + PUSCH-SysInfoList, + PUSCH-SysInfoList-HCR-r5, + PUSCH-SysInfoList-LCR-r4, + PUSCH-SysInfoList-SFN, + PUSCH-SysInfoList-SFN-HCR-r5, + PUSCH-SysInfoList-SFN-LCR-r4, + RACH-TransmissionParameters, + ReducedScramblingCodeNumber, + RepetitionPeriodAndLength, + RepetitionPeriodLengthAndOffset, + ReplacedPDSCH-CodeInfo, + ReplacedPDSCH-CodeInfoList, + RepPerLengthOffset-PICH, + RepPerLengthOffset-MICH, + RestrictedTrCH, + RestrictedTrCH-InfoList, + RL-AdditionInformation, + RL-AdditionInformation-r6, + RL-AdditionInformation-v6b0ext, + RL-AdditionInformationList, + RL-AdditionInformationList-r6, + RL-AdditionInformation-list-v6b0ext, + RL-IdentifierList, + RL-RemovalInformationList, + RPP, + S-Field, + SCCPCH-ChannelisationCode, + SCCPCH-ChannelisationCodeList, + SCCPCH-InfoForFACH, + SCCPCH-InfoForFACH-r4, + SCCPCH-SystemInformation, + SCCPCH-SystemInformation-LCR-r4-ext, + SCCPCH-SystemInformationList, + SCCPCH-SystemInformationList-LCR-r4-ext, + SCCPCH-SystemInformation-MBMS-r6, + ScramblingCodeChange, + ScramblingCodeType, + SecondaryCCPCH-Info, + SecondaryCCPCH-Info-r4, + SecondaryCCPCH-Info-LCR-r4-ext, + SecondaryCCPCHInfo-MBMS-r6, + SecondaryCPICH-Info, + SecondaryScramblingCode, + SecondInterleavingMode, + SF256-AndCodeNumber, + SF512-AndCodeNumber, + SF512-AndPilot, + SF-PDSCH, + SF-PRACH, + SFN-TimeInfo, + SpecialBurstScheduling, + SpreadingFactor, + SRB-delay, + SSDT-CellIdentity, + SSDT-Information, + SSDT-Information-r4, + SSDT-UL, + STTDIndication, + SynchronisationParameters-r4, + SYNC-UL-Procedure-r4, + SYNC-UL-Info-r4, + TDD-FPACH-CCode16-r4, + TDD-UL-Interference, + TDD-PICH-CCode, + TDD-PRACH-CCode8, + TDD-PRACH-CCode16, + TDD-PRACH-CCode-LCR-r4, + TDD-PRACH-CCodeList, + TFC-ControlDuration, + TFCI-Coding, + TGCFN, + TGD, + TGL, + TGMP, + TGP-Sequence, + TGPS-Reconfiguration-CFN, + TGP-SequenceList, + TGP-SequenceShort, + TGPL, + TGPRC, + TGPS-ConfigurationParams, + TGPSI, + TGSN, + TimeInfo, + TimeslotList, + TimeslotList-r4, + TimeslotNumber, + TimeslotNumber-LCR-r4, + TimeslotNumber-PRACH-LCR-r4, + TimeslotSync2, + TimingOffset, + TimingMaintainedSynchInd, + TPC-CombinationIndex, + TPC-StepSizeFDD, + TPC-StepSizeTDD, + TreconfirmAbort, + TX-DiversityMode, + UARFCN, + UCSM-Info, + UL-16QAM-Settings, + UL-CCTrCH, + UL-CCTrCH-r4, + UL-CCTrCHList, + UL-CCTrCHList-r4, + UL-CCTrCHListToRemove, + UL-CCTrChTPCList, + UL-ChannelRequirement, + UL-ChannelRequirement-r4, + UL-ChannelRequirement-r5, + UL-ChannelRequirementWithCPCH-SetID, + UL-ChannelRequirementWithCPCH-SetID-r4, + UL-ChannelRequirementWithCPCH-SetID-r5, + UL-CompressedModeMethod, + UL-DL-Mode, + UL-DPCCH-SlotFormat, + UL-DPCH-Info, + UL-DPCH-Info-r4, + UL-DPCH-Info-r5, + UL-DPCH-Info-r6, + UL-DPCH-Info-r7, + UL-DPCH-Info-r11, + UL-DPCH-InfoPostFDD, + UL-DPCH-InfoPostTDD, + UL-DPCH-InfoPostTDD-LCR-r4, + UL-DPCH-InfoPredef, + UL-DPCH-PowerControlInfo, + UL-DPCH-PowerControlInfo-r4, + UL-DPCH-PowerControlInfo-r5, + UL-DPCH-PowerControlInfo-r6, + UL-DPCH-PowerControlInfoPostFDD, + UL-DPCH-PowerControlInfoPostTDD, + UL-DPCH-PowerControlInfoPostTDD-LCR-r4, + UL-DPCH-PowerControlInfoPredef, + UL-EDCH-Information-r6, + UL-Interference, + UL-ScramblingCode, + UL-SynchronisationParameters-r4, + UL-TargetSIR, + UL-TimingAdvance, + UL-TimingAdvanceControl, + UL-TimingAdvanceControl-r4, + UL-TimingAdvanceControl-LCR-r4, + UL-TS-ChannelisationCode, + UL-TS-ChannelisationCodeList, + UplinkAdditionalTimeslots, + UplinkAdditionalTimeslots-LCR-r4, + Uplink-DPCCH-Slot-Format-Information, + UplinkTimeslotsCodes, + UplinkTimeslotsCodes-LCR-r4, + Wi-LCR, + AcquisitionSatInfo, + AcquisitionSatInfoList, + AdditionalMeasurementID-List, + AlmanacSatInfo, + AlmanacSatInfoList, + AverageRLC-BufferPayload, + AzimuthAndElevation, + BadSatList, + Frequency-Band, + BCCH-ARFCN, + BLER-MeasurementResults, + BLER-MeasurementResultsList, + BLER-TransChIdList, + BSIC-VerificationRequired, + BSICReported, + BurstModeParameters, + CellDCH-ReportCriteria, + CellDCH-ReportCriteria-LCR-r4, + CellIndividualOffset, + CellInfo, + CellInfo-r4, + CellInfoSI-RSCP, + CellInfoSI-RSCP-LCR-r4, + CellInfoSI-ECN0, + CellInfoSI-ECN0-LCR-r4, + CellInfoSI-HCS-RSCP, + CellInfoSI-HCS-RSCP-LCR-r4, + CellInfoSI-HCS-ECN0, + CellInfoSI-HCS-ECN0-LCR-r4, + CellMeasuredResults, + CellMeasurementEventResults, + CellMeasurementEventResults-LCR-r4, + CellReportingQuantities, + CellSelectReselectInfoSIB-11-12, + CellSelectReselectInfoSIB-11-12-RSCP, + CellSelectReselectInfoSIB-11-12-ECN0, + CellSelectReselectInfoSIB-11-12-HCS-RSCP, + CellSelectReselectInfoSIB-11-12-HCS-ECN0, + CellSelectReselectInfo-v590ext, + CellSelectReselectInfoPCHFACH-v5b0ext, + CellSelectReselectInfoTreselectionScaling-v5c0ext, + CellsForInterFreqMeasList, + CellsForInterRATMeasList, + CellsForIntraFreqMeasList, + CellSynchronisationInfo, + CellToReport, + CellToReportList, + CodePhaseSearchWindow, + CountC-SFN-Frame-difference, + CPICH-Ec-N0, + CPICH-RSCP, + DeltaPRC, + DeltaQrxlevmin, + DeltaRSCP, + DeltaRSCPPerCell, + DeltaRRC, + DGPS-CorrectionSatInfo, + DGPS-CorrectionSatInfoList, + DiffCorrectionStatus, + DL-TransportChannelBLER, + DopplerUncertainty, + DRX-Info, + EllipsoidPoint, + EllipsoidPointAltitude, + EllipsoidPointAltitudeEllipsoide, + EllipsoidPointUncertCircle, + EllipsoidPointUncertEllipse, + EnvironmentCharacterisation, + Event1a, + Event1a-r4, + Event1a-LCR-r4, + Event1b, + Event1b-r4, + Event1b-LCR-r4, + Event1c, + Event1d, + Event1e, + Event1e-r6, + Event1f, + Event1f-r6, + Event1j-r6, + Event2a, + Event2a-r6, + Event2b, + Event2b-r6, + Event2c, + Event2c-r6, + Event2d, + Event2d-r6, + Event2e, + Event2e-r6, + Event2f, + Event2f-r6, + Event3a, + Event3b, + Event3c, + Event3d, + EventIDInterFreq, + EventIDInterRAT, + EventIDIntraFreq, + EventResults, + ExtraDopplerInfo, + FACH-MeasurementOccasionInfo, + FACH-MeasurementOccasionInfo-LCR-r4-ext, + FilterCoefficient, + FineSFN-SFN, + ForbiddenAffectCell, + ForbiddenAffectCell-r4, + ForbiddenAffectCell-LCR-r4, + ForbiddenAffectCellList, + ForbiddenAffectCellList-r4, + ForbiddenAffectCellList-LCR-r4, + FreqQualityEstimateQuantity-FDD, + FreqQualityEstimateQuantity-TDD, + GPS-MeasurementParam, + GPS-MeasurementParamList, + GSM-CarrierRSSI, + GSM-MeasuredResults, + GSM-MeasuredResultsList, + GPS-TOW-1msec, + GPS-TOW-Assist, + GPS-TOW-AssistList, + HCS-CellReselectInformation-RSCP, + HCS-CellReselectInformation-ECN0, + HCS-NeighbouringCellInformation-RSCP, + HCS-NeighbouringCellInformation-ECN0, + HCS-PRIO, + HCS-ServingCellInformation, + Hysteresis, + HysteresisInterFreq, + InterFreqCell, + InterFreqCell-LCR-r4, + InterFreqCellID, + InterFreqCellInfoList, + InterFreqCellInfoList-r4, + InterFreqCellInfoSI-List-RSCP, + InterFreqCellInfoSI-List-ECN0, + InterFreqCellInfoSI-List-HCS-RSCP, + InterFreqCellInfoSI-List-HCS-ECN0, + InterFreqCellInfoSI-List-RSCP-LCR, + InterFreqCellInfoSI-List-ECN0-LCR, + InterFreqCellInfoSI-List-HCS-RSCP-LCR, + InterFreqCellInfoSI-List-HCS-ECN0-LCR, + InterFreqCellList, + InterFreqCellList-LCR-r4-ext, + InterFreqCellMeasuredResultsList, + InterFreqEvent, + InterFreqEvent-r6, + InterFreqEventList, + InterFreqEventList-r6, + InterFrequencyMeasuredResultsList-v590ext, + Inter-FreqEventCriteria-v590ext, + Inter-FreqEventCriteriaList-v590ext, + Intra-FreqEventCriteriaList-v590ext, + IntraFrequencyMeasuredResultsList-v590ext, + IntraFreqReportingCriteria-1b-r5, + PeriodicReportingInfo-1b, + InterFreqEventResults, + InterFreqEventResults-LCR-r4-ext, + InterFreqMeasQuantity, + InterFreqMeasuredResults, + InterFreqMeasuredResultsList, + InterFreqMeasurementSysInfo-RSCP, + InterFreqMeasurementSysInfo-ECN0, + InterFreqMeasurementSysInfo-HCS-RSCP, + InterFreqMeasurementSysInfo-HCS-ECN0, + InterFreqMeasurementSysInfo-RSCP-LCR-r4, + InterFreqMeasurementSysInfo-ECN0-LCR-r4, + InterFreqMeasurementSysInfo-HCS-RSCP-LCR-r4, + InterFreqMeasurementSysInfo-HCS-ECN0-LCR-r4, + InterFreqRACHRepCellsList, + Dummy-InterFreqRACHReportingInfo, + InterFreqRACHReportingInfo, + InterFreqReportCriteria, + InterFreqReportCriteria-r4, + InterFreqReportCriteria-r6, + InterFreqReportingCriteria, + InterFreqReportingCriteria-r6, + InterFreqReportingQuantity, + InterFreqRepQuantityRACH-FDD, + InterFreqRepQuantityRACH-TDD, + InterFreqRepQuantityRACH-TDDList, + InterFrequencyMeasurement, + InterFrequencyMeasurement-r4, + InterFrequencyMeasurement-r6, + InterRAT-TargetCellDescription, + InterRATCellID, + InterRATCellInfoIndication, + InterRATCellInfoList, + InterRATCellInfoList-B, + InterRATCellInfoList-r4, + InterRATCellInfoList-r6, + InterRATCellIndividualOffset, + InterRATEvent, + InterRATEventList, + InterRATEventResults, + InterRATInfo, + InterRATInfo-r6, + InterRATMeasQuantity, + InterRATMeasuredResults, + InterRATMeasuredResultsList, + InterRATMeasurement, + InterRATMeasurement-r4, + InterRATMeasurement-r6, + InterRATMeasurementSysInfo, + InterRATMeasurementSysInfo-B, + InterRATReportCriteria, + InterRATReportingCriteria, + InterRATReportingQuantity, + IntraFreqCellID, + IntraFreqCellInfoList, + IntraFreqCellInfoList-r4, + IntraFreqCellInfoSI-List-RSCP, + IntraFreqCellInfoSI-List-ECN0, + IntraFreqCellInfoSI-List-HCS-RSCP, + IntraFreqCellInfoSI-List-HCS-ECN0, + IntraFreqCellInfoSI-List-RSCP-LCR-r4, + IntraFreqCellInfoSI-List-ECN0-LCR-r4, + IntraFreqCellInfoSI-List-HCS-RSCP-LCR-r4, + IntraFreqCellInfoSI-List-HCS-ECN0-LCR-r4, + IntraFreqEvent, + IntraFreqEvent-r4, + IntraFreqEvent-LCR-r4, + IntraFreqEvent-r6, + IntraFreqEvent-1d-r5, + IntraFreqEventCriteria, + IntraFreqEventCriteria-r4, + IntraFreqEventCriteria-LCR-r4, + IntraFreqEventCriteria-r6, + IntraFreqEventCriteriaList, + IntraFreqEventCriteriaList-r4, + IntraFreqEventCriteriaList-LCR-r4, + IntraFreqEventCriteriaList-r6, + IntraFreqEventResults, + IntraFreqMeasQuantity, + IntraFreqMeasQuantity-FDD, + IntraFreqMeasQuantity-TDD, + IntraFreqMeasQuantity-TDDList, + IntraFreqMeasuredResultsList, + IntraFreqMeasurementSysInfo-RSCP, + IntraFreqMeasurementSysInfo-ECN0, + IntraFreqMeasurementSysInfo-HCS-RSCP, + IntraFreqMeasurementSysInfo-HCS-ECN0, + IntraFreqMeasurementSysInfo-RSCP-LCR-r4, + IntraFreqMeasurementSysInfo-ECN0-LCR-r4, + IntraFreqMeasurementSysInfo-HCS-RSCP-LCR-r4, + IntraFreqMeasurementSysInfo-HCS-ECN0-LCR-r4, + IntraFreqReportCriteria, + IntraFreqReportCriteria-r4, + IntraFreqReportCriteria-r6, + IntraFreqReportingCriteria, + IntraFreqReportingCriteria-r4, + IntraFreqReportingCriteria-LCR-r4, + IntraFreqReportingCriteria-r6, + IntraFreqReportingQuantity, + IntraFreqReportingQuantityForRACH, + IntraFreqRepQuantityRACH-FDD, + IntraFreqRepQuantityRACH-TDD, + IntraFreqRepQuantityRACH-TDDList, + IntraFrequencyMeasurement, + IntraFrequencyMeasurement-r4, + IntraFrequencyMeasurement-r6, + IODE, + IP-Length, + IP-PCCPCH-r4, + IP-Spacing, + IP-Spacing-TDD, + IS-2000SpecificMeasInfo, + MaxNumberOfReportingCellsType1, + MaxNumberOfReportingCellsType2, + MaxNumberOfReportingCellsType3, + MaxReportedCellsOnRACH, + MaxReportedCellsOnRACHinterFreq, + MeasuredResults, + MeasuredResults-v390ext, + MeasuredResults-v590ext, + MeasuredResults-LCR-r4, + MeasuredResultsList, + MeasuredResultsList-LCR-r4-ext, + MeasuredResultsOnRACH, + MeasuredResultsOnRACHinterFreq, + MeasurementCommand, + MeasurementCommand-r4, + MeasurementCommand-r6, + MeasurementControlSysInfo, + MeasurementControlSysInfoExtension, + MeasurementControlSysInfoExtensionAddon-r5, + MeasurementControlSysInfoExtension-LCR-r4, + MeasurementControlSysInfo-LCR-r4-ext, + MeasurementIdentity, + MeasurementQuantityGSM, + MeasurementReportingMode, + MeasurementType, + MeasurementType-r4, + MeasurementType-r6, + MeasurementValidity, + MonitoredCellRACH-List, + MonitoredCellRACH-Result, + MultipathIndicator, + N-CR-T-CRMaxHyst, + NavigationModelSatInfo, + NavigationModelSatInfoList, + EphemerisParameter, + NC-Mode, + Neighbour, + Neighbour-v390ext, + NeighbourList, + NeighbourList-v390ext, + NeighbourQuality, + NewInterFreqCell, + NewInterFreqCell-r4, + NewInterFreqCellList, + NewInterFreqCellList-r4, + NewInterFreqCellSI-RSCP, + NewInterFreqCellSI-ECN0, + NewInterFreqCellSI-HCS-RSCP, + NewInterFreqCellSI-HCS-ECN0, + NewInterFreqCellSI-RSCP-LCR-r4, + NewInterFreqCellSI-ECN0-LCR-r4, + NewInterFreqCellSI-HCS-RSCP-LCR-r4, + NewInterFreqCellSI-HCS-ECN0-LCR-r4, + NewInterFreqCellSI-List-ECN0, + NewInterFreqCellSI-List-HCS-RSCP, + NewInterFreqCellSI-List-HCS-ECN0, + NewInterFreqCellSI-List-RSCP, + NewInterFreqCellSI-List-ECN0-LCR-r4, + NewInterFreqCellSI-List-HCS-RSCP-LCR-r4, + NewInterFreqCellSI-List-HCS-ECN0-LCR-r4, + NewInterFreqCellSI-List-RSCP-LCR-r4, + NewInterRATCell, + NewInterRATCell-B, + NewInterRATCellList, + NewInterRATCellList-B, + NewIntraFreqCell, + NewIntraFreqCell-r4, + NewIntraFreqCellList, + NewIntraFreqCellList-r4, + NewIntraFreqCellSI-RSCP, + NewIntraFreqCellSI-ECN0, + NewIntraFreqCellSI-HCS-RSCP, + NewIntraFreqCellSI-HCS-ECN0, + NewIntraFreqCellSI-RSCP-LCR-r4, + NewIntraFreqCellSI-ECN0-LCR-r4, + NewIntraFreqCellSI-HCS-RSCP-LCR-r4, + NewIntraFreqCellSI-HCS-ECN0-LCR-r4, + NewIntraFreqCellSI-List-RSCP, + NewIntraFreqCellSI-List-ECN0, + NewIntraFreqCellSI-List-HCS-RSCP, + NewIntraFreqCellSI-List-HCS-ECN0, + NewIntraFreqCellSI-List-RSCP-LCR-r4, + NewIntraFreqCellSI-List-ECN0-LCR-r4, + NewIntraFreqCellSI-List-HCS-RSCP-LCR-r4, + NewIntraFreqCellSI-List-HCS-ECN0-LCR-r4, + NonUsedFreqParameter, + NonUsedFreqParameter-r6, + NonUsedFreqParameterList, + NonUsedFreqParameterList-r6, + NonUsedFreqWList-r6, + ObservedTimeDifferenceToGSM, + OTDOA-SearchWindowSize, + Pathloss, + PenaltyTime-RSCP, + PenaltyTime-ECN0, + PendingTimeAfterTrigger, + PeriodicalOrEventTrigger, + PeriodicalReportingCriteria, + PeriodicalWithReportingCellStatus, + PLMNIdentitiesOfNeighbourCells, + PLMNsOfInterFreqCellsList, + PLMNsOfIntraFreqCellsList, + PLMNsOfInterRATCellsList, + PositionEstimate, + PositioningMethod, + PRC, + PrimaryCCPCH-RSCP, + Q-HCS, + Q-OffsetS-N, + Q-QualMin, + Q-RxlevMin, + QualityEventResults, + QualityMeasuredResults, + QualityMeasurement, + QualityReportCriteria, + QualityReportingCriteria, + QualityReportingCriteriaSingle, + QualityReportingQuantity, + RAT-Type, + ReferenceCellPosition, + ReferenceLocation, + ReferenceTimeDifferenceToCell, + RemovedInterFreqCellList, + RemovedInterRATCellList, + RemovedIntraFreqCellList, + ReplacementActivationThreshold, + ReportDeactivationThreshold, + ReportingAmount, + ReportingCellStatus, + ReportingCellStatusOpt, + ReportingInfoForCellDCH, + ReportingInfoForCellDCH-LCR-r4, + ReportingInterval, + ReportingIntervalLong, + ReportingRange, + RL-AdditionInfoList, + RL-InformationLists, + RLC-BuffersPayload, + RRC, + SatData, + SatDataList, + SatelliteStatus, + SatID, + SFN-Offset-Validity, + SFN-SFN-Drift, + SFN-SFN-ObsTimeDifference, + SFN-SFN-ObsTimeDifference1, + SFN-SFN-ObsTimeDifference2, + SFN-SFN-OTD-Type, + SFN-SFN-RelTimeDifference1, + SFN-TOW-Uncertainty, + SIR, + SIR-MeasurementList, + SIR-MeasurementResults, + SIR-TFCS, + SIR-TFCS-List, + SIR-TimeslotList, + SubFrame1Reserved, + T-ADVinfo, + T-CRMax, + T-CRMaxHyst, + TemporaryOffset1, + TemporaryOffset2, + TemporaryOffsetList, + Threshold, + Threshold-r6, + ThreholdNonUsedFrequency-deltaList, + ThresholdPositionChange, + ThresholdSFN-GPS-TOW, + ThresholdSFN-SFN-Change, + ThresholdUsedFrequency, + ThresholdUsedFrequency-r6, + TimeInterval, + TimeslotInfo, + TimeslotInfo-LCR-r4, + TimeslotInfoList, + TimeslotInfoList-LCR-r4, + TimeslotInfoList-r4, + TimeslotISCP, + TimeslotISCP-List, + TimeslotListWithISCP, + TimeslotWithISCP, + TimeToTrigger, + TrafficVolumeEventParam, + TrafficVolumeEventResults, + TrafficVolumeEventType, + TrafficVolumeMeasQuantity, + TrafficVolumeMeasSysInfo, + TrafficVolumeMeasuredResults, + TrafficVolumeMeasuredResultsList, + TrafficVolumeMeasurement, + TrafficVolumeMeasurementObjectList, + TrafficVolumeReportCriteria, + TrafficVolumeReportCriteriaSysInfo, + TrafficVolumeReportingCriteria, + TrafficVolumeReportingQuantity, + TrafficVolumeThreshold, + TransChCriteria, + TransChCriteriaList, + TransferMode, + TransmittedPowerThreshold, + TriggeringCondition1, + TriggeringCondition2, + TX-InterruptionAfterTrigger, + UDRE, + UE-6AB-Event, + UE-6FG-Event, + UE-AutonomousUpdateMode, + UE-InternalEventParam, + UE-InternalEventParamList, + UE-InternalEventResults, + UE-InternalMeasQuantity, + UE-InternalMeasuredResults, + UE-InternalMeasuredResults-LCR-r4, + UE-InternalMeasurement, + UE-InternalMeasurement-r4, + UE-InternalMeasurementSysInfo, + UE-InternalReportCriteria, + UE-InternalReportingCriteria, + UE-InternalReportingQuantity, + UE-InternalReportingQuantity-r4, + UE-MeasurementQuantity, + UE-RX-TX-ReportEntry, + UE-RX-TX-ReportEntryList, + UE-RX-TX-TimeDifferenceType1, + UE-RX-TX-TimeDifferenceType2, + UE-RX-TX-TimeDifferenceType2Info, + UE-RX-TX-TimeDifferenceThreshold, + UE-TransmittedPower, + UE-TransmittedPowerTDD-List, + UL-TrCH-Identity, + UE-Positioning-Accuracy, + UE-Positioning-CipherParameters, + UE-Positioning-Error, + UE-Positioning-ErrorCause, + UE-Positioning-EventParam, + UE-Positioning-EventParamList, + UE-Positioning-EventSpecificInfo, + UE-Positioning-GPS-AcquisitionAssistance, + UE-Positioning-GPS-AdditionalAssistanceDataRequest, + UE-Positioning-GPS-Almanac, + UE-Positioning-GPS-AssistanceData, + UE-Positioning-GPS-DGPS-Corrections, + UE-Positioning-GPS-IonosphericModel, + UE-Positioning-GPS-MeasurementResults, + UE-Positioning-GPS-NavigationModel, + UE-Positioning-GPS-NavModelAddDataReq, + UE-Positioning-GPS-ReferenceCellInfo, + UE-Positioning-GPS-ReferenceTime, + UE-Positioning-GPS-UTC-Model, + UE-Positioning-IPDL-Parameters, + UE-Positioning-IPDL-Parameters-r4, + UE-Positioning-IPDL-Parameters-TDD-r4-ext, + UE-Positioning-MeasuredResults, + UE-Positioning-MeasuredResults-v390ext, + UE-Positioning-Measurement, + UE-Positioning-Measurement-v390ext, + UE-Positioning-Measurement-r4, + UE-Positioning-MeasurementEventResults, + UE-Positioning-MeasurementInterval, + UE-Positioning-MethodType, + UE-Positioning-OTDOA-AssistanceData, + UE-Positioning-OTDOA-AssistanceData-r4, + UE-Positioning-OTDOA-AssistanceData-r4ext, + UE-Positioning-OTDOA-AssistanceData-UEB, + UE-Positioning-IPDL-Parameters-TDDList-r4-ext, + UE-Positioning-OTDOA-Measurement, + UE-Positioning-OTDOA-Measurement-v390ext, + UE-Positioning-OTDOA-NeighbourCellInfo, + UE-Positioning-OTDOA-NeighbourCellInfo-r4, + UE-Positioning-OTDOA-NeighbourCellInfo-UEB, + UE-Positioning-OTDOA-NeighbourCellList, + UE-Positioning-OTDOA-NeighbourCellList-r4, + UE-Positioning-OTDOA-NeighbourCellList-UEB, + UE-Positioning-OTDOA-Quality, + UE-Positioning-OTDOA-ReferenceCellInfo, + UE-Positioning-OTDOA-ReferenceCellInfo-r4, + UE-Positioning-OTDOA-ReferenceCellInfo-UEB, + UE-Positioning-PositionEstimateInfo, + UE-Positioning-ReportCriteria, + UE-Positioning-ReportingQuantity, + UE-Positioning-ReportingQuantity-v390ext, + UE-Positioning-ReportingQuantity-r4, + UE-Positioning-ResponseTime, + UTRA-CarrierRSSI, + UTRAN-GPS-DriftRate, + UTRAN-GPSReferenceTime, + UTRAN-GPSReferenceTimeResult, + VarianceOfRLC-BufferPayload, + W, + BCC, + BCCH-ModificationInfo, + BCCH-ModificationTime, + BSIC, + CBS-DRX-Level1Information, + CBS-DRX-Level1Information-extension-r6, + CDMA2000-Message, + CDMA2000-MessageList, + CDMA2000-UMTS-Frequency-List, + CellValueTag, + ExpirationTimeFactor, + ExtSIBTypeInfoSchedulingInfo-List, + ExtSIBTypeInfoSchedulingInfo, + FDD-UMTS-Frequency-List, + FrequencyInfoCDMA2000, + GERAN-SystemInfoBlock, + GERAN-SystemInformation, + GSM-BA-Range, + GSM-BA-Range-List, + GSM-Classmark2, + GSM-Classmark3, + GSM-MessageList, + GSM-MS-RadioAccessCapability, + GsmSecurityCapability, + GSM-TargetCellInfoList, + GSM-TargetCellInfo, + IdentificationOfReceivedMessage, + InterRAT-ChangeFailureCause, + GERANIu-MessageList, + GERANIu-RadioAccessCapability, + InterRAT-UE-RadioAccessCapability, + InterRAT-UE-RadioAccessCapabilityList, + InterRAT-UE-RadioAccessCapability-v590ext, + InterRAT-UE-RadioAccessCapability-v690ext, + InterRAT-UE-SecurityCapability, + InterRAT-UE-SecurityCapList, + InterRAT-HO-FailureCause, + MasterInformationBlock, + MasterInformationBlock-v690ext, + MasterInformationBlock-v6b0ext-IEs, + MIB-ValueTag, + NCC, + PLMN-ValueTag, + PredefinedConfigIdentityAndValueTag, + ProtocolErrorInformation, + ReceivedMessageType, + Rplmn-Information, + Rplmn-Information-r4, + SchedulingInformation, + SchedulingInformationSIB, + SchedulingInformationSIBSb, + SegCount, + SegmentIndex, + SFN-Prime, + SIB-Data-fixed, + SIB-Data-variable, + SIBOccurIdentity, + SIBOccurrenceIdentityAndValueTag, + SIBOccurValueTag, + SIB-ReferenceList, + SIBSb-ReferenceList, + SIB-ReferenceListFACH, + SIB-Type, + SIB-TypeAndTag, + SIBSb-TypeAndTag, + SIB-TypeExt, + SibOFF, + SibOFF-List, + SPS-Information-TDD128-r8, + SysInfoType1, + SysInfoType1-v3a0ext-IEs, + SysInfoType2, + SysInfoType3, + SysInfoType3-v4b0ext-IEs, + SysInfoType3-v590ext, + SysInfoType3-v5c0ext-IEs, + SysInfoType3-v670ext, + SysInfoType4, + SysInfoType4-v4b0ext-IEs, + SysInfoType4-v590ext, + SysInfoType4-v5b0ext-IEs, + SysInfoType4-v5c0ext-IEs, + SysInfoType5, + SysInfoType5-v4b0ext-IEs, + SysInfoType5-v590ext-IEs, + SysInfoType5-v650ext-IEs, + SysInfoType5-v680ext-IEs, + SysInfoType5-v690ext-IEs, + SysInfoType5bis, + SysInfoType6, + SysInfoType6-v4b0ext-IEs, + SysInfoType6-v590ext-IEs, + SysInfoType6-v650ext-IEs, + SysInfoType6-v690ext-IEs, + SysInfoType7, + SysInfoType8, + SysInfoType9, + SysInfoType10, + SysInfoType11, + SysInfoType11-v4b0ext-IEs, + SysInfoType11-v590ext-IEs, + SysInfoType11-v690ext-IEs, + SysInfoType11-v6b0ext-IEs, + SysInfoType11bis, + SysInfoType12, + SysInfoType12-v4b0ext-IEs, + SysInfoType12-v590ext-IEs, + SysInfoType12-v690ext-IEs, + SysInfoType12-v6b0ext-IEs, + SysInfoType13, + SysInfoType13-v3a0ext-IEs, + SysInfoType13-v4b0ext-IEs, + SysInfoType13-1, + SysInfoType13-2, + SysInfoType13-3, + SysInfoType13-4, + SysInfoType14, + SysInfoType15, + SysInfoType15-v4b0ext-IEs, + SysInfoType15-1, + SysInfoType15-2, + SysInfoType15-3, + SysInfoType15-4, + SysInfoType15-4-v3a0ext, + SysInfoType15-4-v4b0ext, + SysInfoType15-5, + SysInfoType15-5-v3a0ext, + SysInfoType16, + SysInfoType17, + SysInfoType17-v4b0ext-IEs, + SysInfoType17-v590ext-IEs, + SysInfoType18, + SysInfoType18-v6b0ext, + SysInfoType19, + SysInfoTypeSB1, + SysInfoTypeSB1-v6b0ext, + SysInfoTypeSB2, + SysInfoTypeSB2-v6b0ext, + TDD-UMTS-Frequency-List, + ValueTagInfo, + ANSI-41-GlobalServiceRedirectInfo, + ANSI-41-PrivateNeighbourListInfo, + ANSI-41-RAND-Information, + ANSI-41-UserZoneID-Information, + ANSI-41-NAS-Parameter, + Min-P-REV, + NAS-SystemInformationANSI-41, + NID, + P-REV, + SID, + MBMS-AccessProbabilityFactor, + MBMS-CellGroupIdentity-r6, + MBMS-CommonCCTrChIdentity, + MBMS-CommonPhyChIdentity, + MBMS-CommonRBIdentity, + MBMS-CommonRBInformation-r6, + MBMS-CommonRBInformationList-r6, + MBMS-CommonTrChIdentity, + MBMS-ConnectedModeCountingScope, + MBMS-CurrentCell-SCCPCH-r6, + MBMS-CurrentCell-SCCPCHList-r6, + MBMS-FACHCarryingMTCH-List, + MBMS-JoinedInformation-r6, + MBMS-L1CombiningSchedule-32, + MBMS-L1CombiningSchedule-64, + MBMS-L1CombiningSchedule-128, + MBMS-L1CombiningSchedule-256, + MBMS-L1CombiningSchedule-512, + MBMS-L1CombiningSchedule-1024, + MBMS-L1CombiningSchedule, + MBMS-L1CombiningTransmTimeDiff, + MBMS-L23Configuration, + MBMS-LogicalChIdentity, + MBMS-MCCH-ConfigurationInfo-r6, + MBMS-MICHConfigurationInfo-r6, + MBMS-MICHNotificationIndLength, + MBMS-MICHPowerOffset, + MBMS-ModifedService-r6, + MBMS-ModifedServiceList-r6, + MBMS-MSCH-ConfigurationInfo-r6, + MBMS-MSCHSchedulingInfo, + MBMS-NeighbouringCellSCCPCH-r6, + MBMS-NeighbouringCellSCCPCHList-r6, + MBMS-NI-CountPerFrame, + MBMS-NumberOfNeighbourCells-r6, + MBMS-PFLIndex, + MBMS-PFLInfo, + MBMS-PhyChInformation-r6, + MBMS-PhyChInformationList-r6, + MBMS-PL-ServiceRestrictInfo-r6, + MBMS-PreferredFrequencyList-r6, + MBMS-PTMActivationTime-r6, + MBMS-PTM-RBInformation-C, + MBMS-PTM-RBInformation-CList, + MBMS-PTM-RBInformation-N, + MBMS-PTM-RBInformation-NList, + MBMS-Qoffset, + MBMS-RequiredUEAction-Mod, + MBMS-RequiredUEAction-UMod, + MBMS-SCCPCHIdentity, + MBMS-SCCPCHPwrOffsetDiff, + MBMS-SelectedServiceInfo, + MBMS-SelectedServicesListFull, + MBMS-SelectedServicesListShort, + MBMS-SelectedServicesShort, + MBMS-ServiceAccessInfo-r6, + MBMS-ServiceAccessInfoList-r6, + MBMS-ServiceIdentity-r6, + MBMS-ServiceSchedulingInfo-r6, + MBMS-ServiceSchedulingInfoList-r6, + MBMS-ServiceTransmInfo, + MBMS-ServiceTransmInfoList, + MBMS-SessionIdentity, + MBMS-ShortTransmissionID, + MBMS-SIBType5-SCCPCH-r6, + MBMS-SIBType5-SCCPCHList-r6, + MBMS-SoftComb-TimingOffset, + MBMS-TCTF-Presence, + MBMS-TimersAndCounters-r6, + MBMS-TransmissionIdentity, + MBMS-TranspChInfoForCCTrCh-r6, + MBMS-TranspChInfoForEachCCTrCh-r6, + MBMS-TranspChInfoForEachTrCh-r6, + MBMS-TranspChInfoForTrCh-r6, + MBMS-TrCHInformation-Curr, + MBMS-TrCHInformation-CurrList, + MBMS-TrCHInformation-Neighb, + MBMS-TrCHInformation-NeighbList, + MBMS-TrCHInformation-SIB5, + MBMS-TrCHInformation-SIB5List, + MBMS-UnmodifiedService-r6, + MBMS-UnmodifiedServiceList-r6, + MIMO-Parameters-r7, + MIMO-Parameters-r8, + MIMO-Parameters-r9, + hiPDSCHidentities, + hiPUSCHidentities, + hiRM, + maxAC, + maxAdditionalMeas, + maxASC, + maxASCmap, + maxASCpersist, + maxCCTrCH, + maxCellMeas, + maxCellMeas-1, + maxCNdomains, + maxCPCHsets, + maxDPCH-DLchan, + maxDPDCH-UL, + maxDRACclasses, + maxE-DCHMACdFlow, + maxE-DCHMACdFlow-1, + maxEDCHRL, + maxFACHPCH, + maxFreq, + maxFreqBandsFDD, + maxFreqBandsFDD-ext, + maxFreqBandsTDD, + maxFreqBandsGSM, + maxGERAN-SI, + maxGSMTargetCells, + maxHProcesses, + maxHSDSCHTBIndex, + maxHSDSCHTBIndex-tdd384, + maxHSSCCHs, + maxInterSysMessages, + maxLoCHperRLC, + maxMAC-d-PDUsizes, + maxMBMS-CommonCCTrCh, + maxMBMS-CommonPhyCh, + maxMBMS-CommonRB, + maxMBMS-CommonTrCh, + maxMBMS-Freq, + maxMBMS-L1CP, + maxMBMSservCount, + maxMBMSservModif, + maxMBMSservSched, + maxMBMSservSelect, + maxMBMSservUnmodif, + maxMBMSTransmis, + maxMeasEvent, + maxMeasIntervals, + maxMeasParEvent, + maxNumCDMA2000Freqs, + maxNumGSMFreqRanges, + maxNumE-HICH, + maxNumFDDFreqs, + maxNumTDDFreqs, + maxNoOfMeas, + maxOtherRAT, + maxOtherRAT-16, + maxPage1, + maxPCPCH-APsig, + maxPCPCH-APsubCh, + maxPCPCH-CDsig, + maxPCPCH-CDsubCh, + maxPCPCH-SF, + maxPCPCHs, + maxPDCPAlgoType, + maxPDSCH, + maxPDSCH-TFCIgroups, + maxPRACH, + maxPRACH-FPACH, + maxPredefConfig, + maxPUSCH, + maxQueueIDs, + maxRABsetup, + maxRAT, + maxRB, + maxRBallRABs, + maxRBMuxOptions, + maxRBperRAB, + maxRBperTrCh, + maxReportedGSMCells, + maxRL, + maxRL-1, + maxRLCPDUsizePerLogChan, + maxRFC3095-CID, + maxROHC-PacketSizes-r4, + maxROHC-Profile-r4, + maxSat, + maxSCCPCH, + maxSIB, + maxSIB-FACH, + maxSIBperMsg, + maxSRBsetup, + maxSystemCapability, + maxTF, + maxTF-CPCH, + maxTFC, + maxTFCsub, + maxTFCI-2-Combs, + maxTGPS, + maxTrCH, + maxTrCHpreconf, + maxTS, + maxTS-1, + maxTS-2, + maxTS-LCR, + maxTS-LCR-1, + maxURA, + maxURNTI-Group, + HS-DSCH-DrxCycleFach, + HS-DSCH-DrxBurstFach, + T-321, + RLC-PDU-SizeConstraint, + CS-HSPA-Information, + CellDCHMeasOccasionInfo-TDD128-r9 + FROM UTRAN-RRC-ASN1-Definitions +; + +maxLogCHperTrCH INTEGER ::= 15 + -- This constant is from MCI ASP proposal, but there is no value for it in the proposal. value 8 is for temporary use +maxdlTrCH INTEGER ::= 16 +maxulTrCH INTEGER ::= 16 +maxNumOfSecondFrequency INTEGER ::= 12 +maxPDSCHtimeslot INTEGER ::= 5 + +--************************************************************** +-- +-- AICHInfo +-- When e-AI-Info is present: +-- upon receipt of the access preamble signature corresponding to a PRACH message transmission i.e preambleSignature, the Acquisition Indicators is transmitted on AICH +-- upon receipt of the access preamble signature corresponding to an E-DCH transmission i.e. commonEDCH-PreambleSignature, the Extended Acquisition Indicators is transmitted on AICH. +--************************************************************** + +AICHInfo ::= SEQUENCE { + aichinfo AICH-Info, + dl-TxPower AICH-PowerOffset, + e-AI-Info E-AI-InfoType OPTIONAL -- Rel-8 or later @sic R5-110104 sic@ +} + +---************************************************************** +-- +-- E-AI-InfoType +-- +--************************************************************** +E-AI-InfoType ::= SEQUENCE { + defaultE-DCH-ResourceIndex INTEGER (-1..31), + totalNumberE-DCH INTEGER (1..32) +} + +--************************************************************** +-- +-- DL-TxPower-PCCPCH +--TDD +--************************************************************** + +DL-TxPower-PCCPCH ::= INTEGER (-60..-30 ) + +--************************************************************** +-- +-- AmConfirmationRequest +-- If the noConfirmationRequested option is used, then an RLC-AM-DATA-CNF is not expected from the RLC AM entity. +-- If the confirmationRequested option is used, then the RLC AM entity is being requested to provide an RLC-DATA-CNF primitive containing the same mui value. +-- +--************************************************************** + +AmConfirmationRequest ::= CHOICE { + noConfirmationRequest NULL, + confirmationRequested Mui +} + +--************************************************************** +-- +-- COUNT-I-MSB +-- 28 bits long +-- +--************************************************************** + +COUNT-I-MSB ::= INTEGER (0..268435455 ) + +--************************************************************** +-- +-- CellToBeCreated +-- +--************************************************************** + +CellToBeCreated ::= ENUMERATED { cell-DCH (0), cell-FACH (10) } + +--************************************************************** +-- +-- CellTxPowerLevel +-- The defaultCellTxPowerLvl is a default setting and is used for the most signalling tests. The real total cell DL Tx power level equals to the sum of the DL Tx power of the individual physical channels configured. +-- The totalCellTxPowerLvl applies to e.g. the idle mode tests in a non-default multi-cell radio environment. +-- +--************************************************************** + +CellTxPowerLevel ::= CHOICE +{ + defaultCellTxPowerLvl NULL, + totalCellTxPowerLvl DL-TxPower +} + +--************************************************************** +-- +-- CfnTgtSfnFrameOffset +-- 1. The observedValue is provided if the UE reads SFN when measuring "Cell synchronisation information" and sends it to the SS in MEASUREMENT REPORT message. The OFF value in IE COUNT-C-SFN frame difference is applied to the observedValue. +-- 2. If the synchronisation between the target cell and the reference cell is calculated the calculatedAbsoluteValue is applied. Depending upon how to interpret SfnOffset two valid calculations exist. +-- 2.1 If SfnOffset is interpreted as the frames lagging behind: +-- calculated-sfnLagging = (((4096 * 38400) + SfnOffset- Ref * 38400 +TCell-Ref + DOFF*512 - (SfnOffset-Tgt * 38400 + TCell-Tgt)) mod (256 * 38400)) / 38400 +-- 2.2 If SfnOffset is interpreted as the frames in advance: +-- calculated-sfnInAdvance = (((4096 + SfnOffset-Tgt - SfnOffset- Ref) * 38400 +TCell-Ref + DOFF*512 - TCell-Tgt) mod (256 * 38400)) / 38400 +-- The formula can be further simplified in the default condition if SfnOffset- Ref and TCell-Ref are equal to 0: +-- calculated-sfnLagging = (((4096 * 38400) + DOFF*512 - (SfnOffset-Tgt * 38400 + TCell-Tgt)) mod (256 * 38400)) / 38400 +-- calculated-sfnInAdvance = ((DOFF*512 + SfnOffset-Tgt * 38400 - TCell-Tgt) Mod (256 * 38400)) / 38400 +-- calculated-sfnInAdvance = (calculated-sfnLagging + 2* SfnOffset-Tgt) mod 256 +-- calculated-sfnLagging = (calculated-sfnInAdvance + (4096 - SfnOffset-Tgt) * 2) mod 256 +-- The TTCN provides calculated-sfnLagging. +-- +--************************************************************** + +CfnTgtSfnFrameOffset ::= SEQUENCE { + referenceCellId INTEGER (0..63), + cfnFrameOffset CHOICE { + observed INTEGER (0..255), + calculated INTEGER (0..255) } +} + +--************************************************************** +-- +-- CiphActivationInfo +-- DL or UL ciphering activation infoIf RB is omitted in rB-UL-CiphActivationTimeInfo the SS takes no action on this RB and the ciphering configuration keeps unchanged on this RB. CipheringModeCommand = dummy NULL means no ciphering. +-- +--************************************************************** + +CiphActivationInfo ::= CHOICE { + cipheringModeInfo CipheringModeInfo, + rb-UL-CipheringActivationTimeInfo RB-ActivationTimeInfoList, + cipheringModeInfo-r7 CipheringModeInfo-r7 +} + +--************************************************************** +-- +-- CmacConfigReq-FDD +-- To request to configure MAC +-- The IE associatedPhychConfigToFollow should be set to TRUE when there is a associated physical channel configuration to follow (e.g configuration of PICH or MICH). +-- The implementation of the IE "associatedPhychConfigToFollow" can be left to the SS either to wait for the associated physical channel before MAC is configured or to continue the configuration of MAC without waiting for the associated physical channel. +-- If Dual Cell is configured, IE servingAndSecondaryCellActivation is included. +-- Presence of tSN-FieldExtension indicates that the TSN field extension is used as defined in TS 25.321[17]; the absence indicates that 6 bits TSN is used. For 4C-HSDPA tSN-FieldExtension is set to TRUE. +-- +--************************************************************** + +CmacConfigReq-FDD ::= SEQUENCE { + activationTime SS-ActivationTime, + uE-Info UE-Info, + trCHInfo TrCHInfo, + trCH-LogCHMapping TrCH-LogCHMappingList1, + associatedPhychConfigToFollow SEQUENCE (SIZE(1..4)) OF INTEGER OPTIONAL, + servingAndSecondaryCellActivation ServingAndSecondaryCellActivation-Type OPTIONAL, -- for Dual Cell Rel-8 or later @sic R5-103863 sic@ + tSN-FieldExtension BOOLEAN DEFAULT FALSE, -- Rel-9 or later + relAspTypeExtension CmacConfigReq-r10OrLaterExtensionType OPTIONAL -- Rel-10 or later @sic R5-130613 R5-134957 sic@ +} + +--************************************************************** +-- +-- CmacConfigReq-TDD +-- To request to configure MAC +-- +--************************************************************** + +CmacConfigReq-TDD ::= SEQUENCE { + activationTime SS-ActivationTime, + uE-Info UE-Info, + trCHInfo TrCHInfo-TDD, + trCH-LogCHMapping TrCH-LogCHMappingList1-TDD, -- @sic R5-134957 R5w130320: TDD TTCN-2/3 differences sic@ + associatedPhychConfigToFollow SEQUENCE (SIZE(1..4)) OF INTEGER OPTIONAL, + tSN-FieldExtension BOOLEAN DEFAULT FALSE, -- Rel-9 or later @sic R5-134957 sic@ + relAspTypeExtension SEQUENCE{} OPTIONAL -- Rel-10 or later @sic R5-134957 sic@ +} + +--************************************************************** +-- +-- CmacPagingConfigReq +-- +--************************************************************** + +CmacPagingConfigReq ::= SEQUENCE { + pI-BitMapInfo CHOICE { + e18 BIT STRING (SIZE (18)), + e36 BIT STRING (SIZE (36)), + e72 BIT STRING (SIZE (72)), + e144 BIT STRING (SIZE (144))}, + dRX-CycleLength INTEGER (3..9), + iMSI IMSI-GSM-MAP, + t-pich-T-sccpch BOOLEAN -- T-pich > T-sccpch then FALSE +} + +--************************************************************** +-- +-- CmacPagingConfigReq-TDD +-- +--************************************************************** + +CmacPagingConfigReq-TDD ::= SEQUENCE { + pI-BitMapInfo CHOICE { + two-PICH-frame Two-PICH-pI-BitmapInfo, + four-PICH-frame Four-PICH-pI-BitmapInfo + }, + dRX-CycleLength INTEGER (3..9), + iMSI IMSI-GSM-MAP, + t-pich-T-sccpch BOOLEAN -- T-pich > T-sccpch then FALSE +} + +Two-PICH-pI-BitmapInfo ::= CHOICE { + e44 BIT STRING (SIZE (44)), + e88 BIT STRING (SIZE (88)), + e176 BIT STRING (SIZE (176)) +} + +Four-PICH-pI-BitmapInfo ::= CHOICE { + e88 BIT STRING (SIZE (88)), + e176 BIT STRING (SIZE (176)), + e352 BIT STRING (SIZE (352)) +} +--************************************************************** +-- +-- CmacSysinfoConfigReq +-- if bcch-ModificationTime = OMIT SS shall modify the Sysinfo immediately +-- +--************************************************************** + +CmacSysinfoConfigReq ::= SEQUENCE { + sg-REP INTEGER (2..12), + -- Repetition period is the sg-REP-th power of 2. + sg-POS INTEGER (0..2047), + -- The position of each segment is 2 * sg-POS. + bcch-ModificationTime BCCH-ModificationTime OPTIONAL +} + +--************************************************************** +-- +-- CommonOrDedicatedTFS +-- Transport Format Set +-- +--************************************************************** + +CommonOrDedicatedTFS ::= SEQUENCE { + tti CHOICE { + tti10 CommonOrDedicatedTF-InfoList, + tti20 CommonOrDedicatedTF-InfoList, + tti40 CommonOrDedicatedTF-InfoList, + tti80 CommonOrDedicatedTF-InfoList, + dynamic CommonOrDedicatedTF-InfoList-DynamicTTI + }, + semistaticTF-Information SemistaticTF-Information +} + +--************************************************************** +-- +-- CommonOrDedicatedTFS-TDD +-- Transport Format Set +-- CommonOrDedicatedTFS in TTCN-2 +-- +--************************************************************** + +CommonOrDedicatedTFS-TDD ::= SEQUENCE { + tfsMode CHOICE { + dedicatedTransChTFS DedicatedTransChTFS, + commonTransChTFS CommonTransChTFS, + commonTransChTFS-LCR CommonTransChTFS-LCR + } +} + +--************************************************************** +-- +-- CommonOrDedicatedTF-Info +-- Transport Format Set +-- +--************************************************************** + +CommonOrDedicatedTF-Info ::= SEQUENCE { + tb-Size INTEGER (0..5035), + numberOfTbSizeList SEQUENCE (SIZE (1..maxTF)) OF NumberOfTransportBlocks, + logicalChannelList SS-LogicalChannelList +} + +--************************************************************** +-- +-- CommonOrDedicatedTF-InfoList +-- Transport Format Set +-- +--************************************************************** + +CommonOrDedicatedTF-InfoList ::= SEQUENCE (SIZE (1..maxTF)) OF CommonOrDedicatedTF-Info + +--************************************************************** +-- +-- CommonOrDedicatedTF-InfoList-DynamicTTI +-- +--************************************************************** + +CommonOrDedicatedTF-InfoList-DynamicTTI ::= SEQUENCE +{ + tb-Size INTEGER (0..5035), + numberOfTbSizeList SEQUENCE (SIZE (1..maxTF)) OF NumberOfTransportBlocks, + logicalChannelList SS-LogicalChannelList +} + +--************************************************************** +-- +-- CphyRlModifyReq-FDD +-- +--************************************************************** + +CphyRlModifyReq-FDD ::= SEQUENCE { + activationTime SS-ActivationTime, + physicalChannelInfo + CHOICE { + dpch-CompressedModeStatusInfo DPCH-CompressedModeStatusInfo, + secondaryCCPCHInfo SecondaryCCPCHInfo-FDD, + pRACHInfo PRACHInfo-FDD, + dPCHInfo DPCHInfo-FDD, + dPCHInfo-r5 DPCHInfo-r5OrLater-FDD, -- Rel-5 or later + hS-PDSCHInfo HS-PDSCHInfo-r5OrLater-FDD, -- Rel-5 or later + e-DPCHInfo SS-E-DPCH-Info-r6OrLater, -- Rel-6 or later + e-AGCHInfo SS-E-AGCH-Info-FDD, -- Rel-6 or later + e-HICHInfo SS-E-HICH-Info, -- Rel-6 or later + e-RGCHInfo SS-E-RGCH-Info, -- Rel-6 or later + mBMS-MICHInfo SS-MBMS-MICHConfigurationInfo-r6, -- Rel-6 or later @sic R5-112477 sic@ + aICHInfo AICHInfo, + relAspTypeExtension SEQUENCE{} -- Rel-10 or later @sic R5-130613 R5-134957 sic@ + }, + trchConfigToFollow BOOLEAN DEFAULT TRUE, + relAspTypeExtension SEQUENCE{} OPTIONAL -- Rel-10 or later @sic R5-130613 R5-134957 sic@ +} + +--************************************************************** +-- +-- CphyRlModifyReq-TDD +-- To request to Modify the Radio Link +-- +--************************************************************** + +CphyRlModifyReq-TDD ::= SEQUENCE { + activationTime SS-ActivationTime, + physicalChannelInfo CHOICE { + secondaryCCPCHInfo SecondaryCCPCHInfo-TDD, + pRACHInfo PRACHInfo-TDD, + dPCHInfo DPCHInfo-TDD, + dPCHInfo-r5 DPCHInfo-r5OrLater-TDD, -- Rel-5 or later + hS-PDSCHInfo HS-PDSCHInfo-r5OrLater-TDD, -- Rel-5 or later + e-DCHInfo SS-E-DCH-Info-r7, + e-DCH-Non-ScheduledTransGrantInfo SS-Non-ScheduledTransGrantInfoTDD, + e-AGCHInfo SS-E-AGCH-Info-TDD, -- Rel-7 or later + e-HICHInfo SS-E-HICH-Info-TDD, -- Rel-7 or later + mBMS-MICHInfo SS-MBMS-MICHConfigurationInfo-r6, -- Rel-6 or later @sic R5w140013 sic@ + relAspTypeExtension SEQUENCE{} -- Rel-10 or later @sic R5-134957 sic@ + }, + trchConfigToFollow BOOLEAN DEFAULT TRUE, + relAspTypeExtension SEQUENCE{} OPTIONAL -- Rel-10 or later @sic R5-134957 sic@ +} + +--************************************************************** +-- +-- CphyRlSetupReq-FDD +-- To request to setup the Radio Link +-- +--************************************************************** + +CphyRlSetupReq-FDD ::= SEQUENCE { + physicalChannelInfo CHOICE { + primaryCPICHInfo PrimaryCPICHInfo, + secondaryCPICHInfo SecondaryCPICHInfo, + primarySCHInfo PrimarySCHInfo, + secondarySCHInfo SecondarySCHInfo, + primaryCCPCHInfo PrimaryCCPCHInfo-FDD, + secondaryCCPCHInfo SecondaryCCPCHInfo-FDD, + pRACHInfo PRACHInfo-FDD, + pICHInfo PICHInfo-FDD, + aICHInfo AICHInfo, + dPCHInfo DPCHInfo-FDD, + pDSCHInfo PDSCHInfo-FDD, + dPCHInfo-r5 DPCHInfo-r5OrLater-FDD, -- Rel-5 or later + hS-PDSCHInfo HS-PDSCHInfo-r5OrLater-FDD, -- Rel-5 or later + e-DPCHInfo SS-E-DPCH-Info-r6OrLater, -- Rel-6 or later + e-AGCHInfo SS-E-AGCH-Info-FDD, -- Rel-6 or later + e-HICHInfo SS-E-HICH-Info, -- Rel-6 or later + e-RGCHInfo SS-E-RGCH-Info, -- Rel-6 or later + mBMS-MICHInfo SS-MBMS-MICHConfigurationInfo-r6, -- Rel-6 or later @sic R5-112477 sic@ + relAspTypeExtension SEQUENCE{} -- Rel-10 or later @sic R5-130613 R5-134957 sic@ + }, + activationTime SS-ActivationTime, + trchConfigToFollow BOOLEAN DEFAULT TRUE, + relAspTypeExtension SEQUENCE{} OPTIONAL -- Rel-10 or later @sic R5-130613 R5-134957 sic@ +} + +--************************************************************** +-- +-- CphyRlSetupReq-TDD +-- To request to setup the Radio Link +-- +--************************************************************** + +CphyRlSetupReq-TDD ::= SEQUENCE { + physicalChannelInfo CHOICE { + primaryCCPCHInfo PrimaryCCPCHInfo-TDD, + secondaryCCPCHInfo SecondaryCCPCHInfo-TDD, + pRACHInfo PRACHInfo-TDD, + pICHInfo PICHInfo-TDD, + dPCHInfo DPCHInfo-TDD, + pDSCHInfo PDSCHInfo-TDD, + pUSCHInfo PUSCHInfo, + dPCHInfo-r5 DPCHInfo-r5OrLater-TDD, -- Rel-5 or later + hS-PDSCHInfo HS-PDSCHInfo-r5OrLater-TDD, -- Rel-5 or later + e-DCHInfo SS-E-DCH-Info-r7, + e-DCH-Non-ScheduledTransGrantInfo SS-Non-ScheduledTransGrantInfoTDD, + e-AGCHInfo SS-E-AGCH-Info-TDD, -- Rel-7 or later + e-HICHInfo SS-E-HICH-Info-TDD, -- Rel-7 or later + mBMS-MICHInfo SS-MBMS-MICHConfigurationInfo-r6, -- Rel-6 or later @sic R5w140013 sic@ + relAspTypeExtension SEQUENCE{} -- Rel-10 or later @sic R5-134957 sic@ + }, + activationTime SS-ActivationTime OPTIONAL, + trchConfigToFollow BOOLEAN DEFAULT TRUE, + relAspTypeExtension SEQUENCE{} OPTIONAL -- Rel-10 or later @sic R5-134957 sic@ +} + +--************************************************************** +-- +-- CphyTrchConfigReq +-- To request to configure the transport channel. +-- The same TFCS information should be provided to the PHY and MAC layers at all times. When a CPHY-TrCH-Config-REQ is used to configure the PHY layer, a corresponding CMAC-Config-REQ should be sent to the MAC layer to ensure that the configuration is consistent. +-- HS-DSCH MAC-d flows or E-DCH MAC-d flows shall be separately configured whilst the ulconnectedTrCHList, ulTFCS, dlconnectedTrCHList and dlTFCS are omitted. +-- For configuring MBMS if the default TFCS used in the RRC message the dLTFTS shall use the "complete" CHOICE in "ExplicitTFCS-Configuration " IE and the TFCS configuration shall be in line with clause 14.10.1.1/14.10.1.2 of TS 25.331. +-- +--************************************************************** + +CphyTrchConfigReq ::= SEQUENCE { + activationTime SS-ActivationTime, + ulconnectedTrCHList SEQUENCE (SIZE (0..maxTrCH)) OF SEQUENCE { + trchid TransportChannelIdentity, + ul-TransportChannelType SS-UL-TransportChannelType, + transportChannelInfo CommonOrDedicatedTFS + } OPTIONAL, + ulTFCS TFCS OPTIONAL, + dlconnectedTrCHList SEQUENCE (SIZE (0..maxTrCH)) OF SEQUENCE { + trchid TransportChannelIdentity, + dl-TransportChannelType SS-DL-TransportChannelType, + transportChannelInfo CommonOrDedicatedTFS + } OPTIONAL , + dlTFCS TFCS OPTIONAL, + hsDSCHMacdFlows HS-DSCHMACdFlows OPTIONAL, -- Rel-5 or later + e-DCHMacdFlows E-DCHMACdFlows OPTIONAL, -- Rel-6 or later + ehs-DSCH-Flows EHS-DSCH-Flows OPTIONAL, -- Rel-7 or later + ehs-DSCH-CommonFlows EHS-DSCH-CommonFlows OPTIONAL, -- Rel-7 or later + e-DCHMacd-CommonFlows CommonE-DCHMACdFlows OPTIONAL, -- Rel-8 or later + ehs-DSCH-Flows-r9 EHS-DSCH-Flows-r9 OPTIONAL, -- Rel-9 or later @sic R5s110175 sic@ + relAspTypeExtension SEQUENCE{} OPTIONAL -- Rel-10 or later @sic R5-130613 R5-134957 sic@ +} + +--************************************************************** +-- +-- CphyTrchConfigReq-TDD +-- To request to configure the transport channel. +-- The same TFCS information should be provided to the PHY and MAC layers at all times. When a CPHY-TrCH-Config-REQ is used to configure the PHY layer, a corresponding CMAC-Config-REQ should be sent to the MAC layer to ensure that the configuration is consistent. +-- HS-DSCH MAC-d flows or E-DCH MAC-d flows shall be separately configured whilst the ulconnectedTrCHList, ulTFCS, dlconnectedTrCHList and dlTFCS are omitted. +-- For configuring MBMS if the default TFCS used in the RRC message the dLTFTS shall use the "complete" CHOICE in "ExplicitTFCS-Configuration " IE and the TFCS configuration shall be in line with clause 14.10.1.1/14.10.1.2 of TS 25.331. +-- +--************************************************************** + +CphyTrchConfigReq-TDD ::= SEQUENCE { + activationTime SS-ActivationTime, + ulconnectedTrCHList SEQUENCE (SIZE (0..maxTrCH)) OF SEQUENCE { + trchid TransportChannelIdentity, + ul-TransportChannelType SS-UL-TransportChannelType-TDD, -- @sic R5-134957 R5w130320: TDD TTCN-2/3 differences sic@ + transportChannelInfo CommonOrDedicatedTFS-TDD + } OPTIONAL, + ulTFCS TFCS OPTIONAL, + dlconnectedTrCHList SEQUENCE (SIZE (0..maxTrCH)) OF SEQUENCE { + trchid TransportChannelIdentity, + dl-TransportChannelType SS-DL-TransportChannelType, + transportChannelInfo CommonOrDedicatedTFS-TDD + } OPTIONAL , + dlTFCS TFCS OPTIONAL, + hsDSCHMacdFlows HS-DSCHMACdFlows-TDD OPTIONAL, -- Rel-5 or later + e-DCHMacdFlows E-DCHMACdFlows-TDD OPTIONAL, -- Rel-6 or later + ehs-DSCH-Flows EHS-DSCH-Flows OPTIONAL, -- Rel-7 or later + ehs-DSCH-CommonFlows EHS-DSCH-CommonFlows OPTIONAL, -- Rel-7 or later + e-DCHMacd-CommonFlows CommonE-DCHMACdFlows-TDD OPTIONAL, -- Rel-8 or later + ehs-DSCH-Flows-r9 EHS-DSCH-Flows-r9 OPTIONAL, -- Rel-9 or later @sic R5-134957 R5w130320 sic@ + relAspTypeExtension SEQUENCE {} OPTIONAL -- Rel-10 or later @sic R5-134957 sic@ + +} + +--************************************************************** +-- +-- CrlcConfigReq +-- To request to setup, re-configure or release RLC entityThe Stop parameter indicates that the RLC entity shall not transmit or receive RLC PDUs. The Continue parameter indicates that the RLC entity shall continue transmission and reception of RLC PDUs. When the RLC entity is stopped, the RLC timers are not affected. Triggered polls and status transmissions are delayed until the RLC entity is continued. +-- +--************************************************************** + +CrlcConfigReq ::= CHOICE { + setup RBInfo, + reconfigure RBInfo, + release NULL, + sS-stop NULL, + sS-continue NULL +} + +--************************************************************** +-- +-- CrlcConfigReq-TDD +-- To request to setup, re-configure or release RLC entity The Stop parameter indicates that the RLC entity shall not transmit or receive RLC PDUs. The Continue parameter indicates that the RLC entity shall continue transmission and reception of RLC PDUs. When the RLC entity is stopped, the RLC timers are not affected. Triggered polls and status transmissions are delayed until the RLC entity is continued. +-- +--************************************************************** + +CrlcConfigReq-TDD ::= CHOICE { + setup RBInfo-TDD, + reconfigure RBInfo-TDD, + release NULL, + sS-stop NULL, + sS-continue NULL +} + +--************************************************************** +-- +-- DL-DPCHInfo-FDD +-- +--************************************************************** + +DL-DPCHInfo-FDD ::= SEQUENCE { + dl-CommonInformation DL-CommonInformation, + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL, + rl-Information RL-Information-FDD +} + +--************************************************************** +-- +-- DL-DPCHInfo-TDD +-- +--************************************************************** + +DL-DPCHInfo-TDD ::= SEQUENCE { + dl-CommonInformation DL-CommonInformation-r4, + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r4, + powerOffsetOfTFCI-PO1 INTEGER (0..24), + powerOffsetOfTPC-PO2 INTEGER (0..24), --@sic R5w140013 sic@ + dl-TxPower DL-TxPower, + dl-TxPowerMax DL-TxPower, + dl-TxPowerMin DL-TxPower, + dL-TimeslotISCPInfoLCR TimeslotListWithISCP-LCR +} + +--************************************************************** +-- +-- TimeslotListWithISCP-LCR +-- +--************************************************************** +TimeslotListWithISCP-LCR ::= SEQUENCE (SIZE (1..maxTS ) ) OF TimeslotWithISCP-LCR + +--************************************************************** +-- +-- TimeslotWithISCP-LCR +-- +--************************************************************** +TimeslotWithISCP-LCR::= SEQUENCE { + timeslot TimeslotNumber-LCR-r4, + timeslotISCP TimeslotISCP +} + +--************************************************************** +-- +-- DL-DPCHInfo-r5-FDD +-- Applicable Rel-5 or later +-- +--************************************************************** + +DL-DPCHInfo-r5-FDD ::= SEQUENCE { + dl-CommonInformation DL-CommonInformation-r5, + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r5, + rl-Information RL-Information-FDD +} + +--************************************************************** +-- +-- DL-DPCHInfo-r5-TDD +-- Applicable Rel-5 or later +-- +--************************************************************** + +DL-DPCHInfo-r5-TDD ::= SEQUENCE { + dl-CommonInformation DL-CommonInformation-r5, + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r5, + powerOffsetOfTFCI-PO1 INTEGER (0..24), + powerOffsetOfTPC-PO2 INTEGER (0..24), + dl-TxPower DL-TxPower, + dl-TxPowerMax DL-TxPower, + dl-TxPowerMin DL-TxPower, + dL-TimeslotISCPInfoLCR TimeslotListWithISCP-LCR +} + +--************************************************************** +-- +-- DL-DPCHInfo-r6-FDD +-- Applicable Rel-6 or later +-- +--************************************************************** + +DL-DPCHInfo-r6-FDD ::= SEQUENCE { + dl-CommonInformation DL-CommonInformation-r6, + dl-Dpch-InfoPerRL CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r6, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r6 + }, + rl-Information RL-Information-FDD +} + +--************************************************************** +-- +-- DL-DPCHInfo-r6-TDD +-- Applicable Rel-6 or later +-- +--************************************************************** + +DL-DPCHInfo-r6-TDD ::= SEQUENCE { + dl-CommonInformation DL-CommonInformation-r6, + dl-Dpch-InfoPerRL CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r6, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r6 + }, + rl-Information RL-Information-TDD +} + +--************************************************************** +-- +-- DL-DPCHInfo-r7-FDD +-- Applicable Rel-7 or later +-- +--************************************************************** + +DL-DPCHInfo-r7-FDD ::= SEQUENCE { + dl-CommonInformation DL-CommonInformation-r7, + dl-Dpch-InfoPerRL CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r7, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7 + }, + rl-Information RL-Information-FDD +} + +--************************************************************** +-- +-- DL-DPCHInfo-r7-TDD +-- Applicable Rel-7 or later +-- +--************************************************************** + +DL-DPCHInfo-r7-TDD ::= SEQUENCE { + dl-CommonInformation DL-CommonInformation-r7, + dl-Dpch-InfoPerRL CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r7, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7 + }, + rl-Information RL-Information-TDD +} + +--************************************************************** +-- +-- DL-DPCHInfo-r8-FDD +-- Applicable Rel-8 or later +-- +--************************************************************** + +DL-DPCHInfo-r8-FDD ::= SEQUENCE { + dl-CommonInformation DL-CommonInformation-r8, + dl-Dpch-InfoPerRL CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r7, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7 + }, + rl-Information RL-Information-FDD +} + +--************************************************************** +-- +-- DL-DPCHInfo-r8-TDD +-- Applicable Rel-8 or later +-- +--************************************************************** + +DL-DPCHInfo-r8-TDD ::= SEQUENCE { + dl-CommonInformation DL-CommonInformation-r8, + dl-Dpch-InfoPerRL CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r7, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7 + }, + rl-Information RL-Information-TDD +} + +--************************************************************** +-- +-- DL-DPCHInfo-r10-FDD +-- Applicable Rel-10 or later +-- +--************************************************************** +DL-DPCHInfo-r10-FDD ::= SEQUENCE { + dl-CommonInformation DL-CommonInformation-r10, + dl-Dpch-InfoPerRL CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r7, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7 + }, + rl-Information RL-Information-FDD +} + +--************************************************************** +-- +-- DL-DPCHInfo-r10-TDD +-- Applicable Rel-10 or later +-- +--************************************************************** +DL-DPCHInfo-r10-TDD ::= SEQUENCE { + dl-CommonInformation DL-CommonInformation-r10, + dl-Dpch-InfoPerRL CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r7, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7 + }, + rl-Information RL-Information-TDD +} + +--************************************************************** +-- +-- DL-DPCHInfo-r11-FDD +-- Applicable Rel-11 or later +-- +--************************************************************** +DL-DPCHInfo-r11-FDD ::= SEQUENCE { + dl-CommonInformation DL-CommonInformation-r11, + dl-Dpch-InfoPerRL CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r7, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7 + }, + rl-Information RL-Information-FDD +} + +--************************************************************** +-- +-- DL-DPCHInfo-r11-TDD +-- Applicable Rel-11 or later +-- +--************************************************************** +DL-DPCHInfo-r11-TDD ::= SEQUENCE { + dl-CommonInformation DL-CommonInformation-r11, + dl-Dpch-InfoPerRL CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r7, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7 + }, + rl-Information RL-Information-TDD +} + +--************************************************************** +-- +-- DL-TxPower +-- Downlink Tx Power relative to PCPICH +-- +--************************************************************** + +DL-TxPower ::= INTEGER (-35..15) + +--************************************************************** +-- +-- DwPCH-Power +-- Downlink DwPCH Tx Power,DwPCH-power = power * 10 +-- Unit dBm, Range -15dBm .. +40 dBm, Step +0.1dB +-- TDD +--************************************************************** + +DwPCH-Power ::= INTEGER (-150..400) + +--************************************************************** +-- +-- DL-TxPower-PCPICH +-- Absolute Tx Power of PCPICH +-- +--************************************************************** + +DL-TxPower-PCPICH ::= INTEGER (-60..-30) + +--************************************************************** +-- +-- DPCHInfo-FDD +-- The range for powerOffsetOfTPC-PO2 and powerOffsetOfTFCI-PO1 and powerOffsetOfPILOT-PO3 is 0 dB to 6 dB, 0,25 dB per step. +-- +--************************************************************** + +DPCHInfo-FDD ::= SEQUENCE { + ul-DPCHInfo UL-DPCH-Info OPTIONAL, + dl-DPCHInfo DL-DPCHInfo-FDD OPTIONAL +} + +--************************************************************** +-- +-- DPCHInfo-TDD +-- +--************************************************************** + +DPCHInfo-TDD ::= SEQUENCE { + ul-DPCHInfo UL-DPCHInfo-TDD OPTIONAL, + dl-DPCHInfo DL-DPCHInfo-TDD OPTIONAL +} + +--************************************************************** +-- +-- UL-DPCHInfo-TDD +-- +--************************************************************** + +UL-DPCHInfo-TDD ::= SEQUENCE { + ul-DPCHInfo UL-DPCH-Info-r4 +} + +--************************************************************** +-- +-- DPCHInfo-r5OrLater-FDD +-- Applicable Rel-5 or later +-- At least one of the first two fields ul-DPCHInfo or dl-DPCHInfo shall be present. +-- Presence of hs-DPCCHInd means that the HS-DPCCH shall be configured in the uplink DPCH. If hs-DPCCHInd is absent no HS-DPCCH shall be configured in the uplink DPCH, or the configured HS-DPCCH shall be removed in the modify ASP. In the active set which has radio links from more than one cell the HS-DPCCH is configured only in the HS-DSCH serving cell. +-- Three combinations are valid: ul-DPCH-Info only, dl-DPCHInfo only and ul-DPCH-Info + hs-DPCCHInd. +-- Presence of ss-UL-DPCCH-DRX-Info if UL DPCH being configured and presence of ss-DRX-Info if DL F-DPCH being configured indicates that UL-DTX is enabled. +-- ss-DRX-Info is provided as F-DPCH TPC commands need not be transmitted during gaps due to UL-DPCCH DTX (3GPP TS 25.214 [12], subclause 5.1.2.2.1). +-- ul-DPCH-TimingOffset is the timing offset relative to P-CCPCH, it is provided in Rel-7 only when Enhanced Cell FACH Downlink (common-HS-PDSCH-Info) is configured. +--************************************************************** + +DPCHInfo-r5OrLater-FDD ::= CHOICE { + r5 SEQUENCE { + ul-DPCHInfo UL-DPCH-Info-r5 OPTIONAL, + dl-DPCHInfo DL-DPCHInfo-r5-FDD OPTIONAL, + hs-DPCCHInd HS-DPCCHInfo OPTIONAL + }, + r6 SEQUENCE { + ul-DPCHInfo UL-DPCH-Info-r6 OPTIONAL, + dl-DPCHInfo DL-DPCHInfo-r6-FDD OPTIONAL, + hs-DPCCHInd HS-DPCCHInfo OPTIONAL + }, + r7 SEQUENCE { + ul-DPCHInfo UL-DPCH-Info-r7 OPTIONAL, + ul-DPCH-TimingOffset INTEGER (0..38399) OPTIONAL, + -- timing offset relative to P-CCPCH + -- applicable to Rel-7 when Enhanced Cell FACH DL is configured + -- @sic R5-120613 sic@ + dl-DPCHInfo DL-DPCHInfo-r7-FDD OPTIONAL, + hs-DPCCHInd HS-DPCCHInfo OPTIONAL, + ss-UL-DPCCH-DRX-Info SS-UL-DPCCH-DRX-Info OPTIONAL, + ss-DRX-Info DTX-Info OPTIONAL + + }, + r8 SEQUENCE { + ul-DPCHInfo UL-DPCH-Info-r7 OPTIONAL, + dl-DPCHInfo DL-DPCHInfo-r8-FDD OPTIONAL, + hs-DPCCHInd HS-DPCCHInfo-r8 OPTIONAL, -- @sic R5-112477 sic@ + ss-UL-DPCCH-DRX-Info SS-UL-DPCCH-DRX-Info OPTIONAL, + ss-DRX-Info DTX-Info OPTIONAL + }, + relAspTypeExtension DPCHInfo-r10OrLaterExtensionType-FDD + -- Rel-10 or later @sic R5-130613 R5-134957 sic@ +} + +--************************************************************** +-- +-- DPCHInfo-r10OrLaterExtensionType-FDD +-- Applicable Rel-10 or later +-- @sic R5-130613 R5-133682 sic@ +-- +--************************************************************** +DPCHInfo-r10OrLaterExtensionType-FDD ::= CHOICE { + rel10-AspExt SEQUENCE { + ul-DPCHInfo UL-DPCH-Info-r7 OPTIONAL, + dl-DPCHInfo DL-DPCHInfo-r10-FDD OPTIONAL, + hs-DPCCHInd HS-DPCCHInfo-r10 OPTIONAL, + ss-UL-DPCCH-DRX-Info SS-UL-DPCCH-DRX-Info OPTIONAL, + ss-DRX-Info DTX-Info OPTIONAL + }, + rel11-AspExt SEQUENCE { + ul-DPCHInfo UL-DPCH-Info-r11 OPTIONAL, + dl-DPCHInfo DL-DPCHInfo-r11-FDD OPTIONAL, + hs-DPCCHInd HS-DPCCHInfo-r10 OPTIONAL, + ss-UL-DPCCH-DRX-Info SS-UL-DPCCH-DRX-Info OPTIONAL, + ss-DRX-Info DTX-Info OPTIONAL + } +} + +--************************************************************** +-- +-- DPCHInfo-r5OrLater-TDD +-- Applicable Rel-5 or later +-- At least one of the first two fields ul-DPCHInfo or dl-DPCHInfo shall be present. +-- Presence of hs-DPCCHInd means that the HS-DPCCH shall be configured in the uplink DPCH. If hs-DPCCHInd is absent no HS-DPCCH shall be configured in the uplink DPCH, or the configured HS-DPCCH shall be removed in the modify ASP. In the active set which has radio links from more than one cell the HS-DPCCH is configured only in the HS-DSCH serving cell. +-- Three combinations are valid: ul-DPCH-Info only, dl-DPCHInfo only and ul-DPCH-Info + hs-DPCCHInd. +-- +--************************************************************** + +DPCHInfo-r5OrLater-TDD ::= CHOICE { + r5 SEQUENCE { + ul-DPCHInfo UL-DPCH-Info-r5 OPTIONAL, + dl-DPCHInfo DL-DPCHInfo-r5-TDD OPTIONAL, + hs-DPCCHInd HS-DPCCHInfo OPTIONAL + }, + r6 SEQUENCE { + ul-DPCHInfo UL-DPCH-Info-r6 OPTIONAL, + dl-DPCHInfo DL-DPCHInfo-r6-TDD OPTIONAL, + hs-DPCCHInd HS-DPCCHInfo OPTIONAL + }, + r7 SEQUENCE { + ul-DPCHInfo UL-DPCH-Info-r7 OPTIONAL, + dl-DPCHInfo DL-DPCHInfo-r7-TDD OPTIONAL, + hs-DPCCHInd HS-DPCCHInfo OPTIONAL, + ss-UL-DPCCH-DRX-Info SS-UL-DPCCH-DRX-Info OPTIONAL, + ss-DRX-Info DTX-Info OPTIONAL + + }, + r8 SEQUENCE { + ul-DPCHInfo UL-DPCH-Info-r7 OPTIONAL, + dl-DPCHInfo DL-DPCHInfo-r8-TDD OPTIONAL, + hs-DPCCHInd HS-DPCCHInfo-r8 OPTIONAL, -- @sic R5-112477 sic@ + ss-UL-DPCCH-DRX-Info SS-UL-DPCCH-DRX-Info OPTIONAL, + ss-DRX-Info DTX-Info OPTIONAL + }, + relAspTypeExtension DPCHInfo-r10OrLaterExtensionType-TDD +} + +--************************************************************** +-- +-- DPCHInfo-r10OrLaterExtensionType-TDD +-- Applicable Rel-10 or later +-- @sic R5-130613 R5-133682 sic@ +-- +--************************************************************** +DPCHInfo-r10OrLaterExtensionType-TDD ::= CHOICE { + rel10-AspExt SEQUENCE { + ul-DPCHInfo UL-DPCH-Info-r7 OPTIONAL, + dl-DPCHInfo DL-DPCHInfo-r10-TDD OPTIONAL, + hs-DPCCHInd HS-DPCCHInfo-r10 OPTIONAL, + ss-UL-DPCCH-DRX-Info SS-UL-DPCCH-DRX-Info OPTIONAL, + ss-DRX-Info DTX-Info OPTIONAL + }, + rel11-AspExt SEQUENCE { + ul-DPCHInfo UL-DPCH-Info-r11 OPTIONAL, + dl-DPCHInfo DL-DPCHInfo-r11-TDD OPTIONAL, + hs-DPCCHInd HS-DPCCHInfo-r10 OPTIONAL, + ss-UL-DPCCH-DRX-Info SS-UL-DPCCH-DRX-Info OPTIONAL, + ss-DRX-Info DTX-Info OPTIONAL + } +} + +--************************************************************** +-- +-- EHS-DSCH-CommonFlows +-- Rel-7 or later +-- +--************************************************************** + +EHS-DSCH-CommonFlows ::= SEQUENCE { + harqInfo-r7 HARQ-Info-r7 OPTIONAL, --@sic R5w140013 sic@ + common-MAC-ehs-ReorderingQueueList SS-Common-MAC-ehs-ReorderingQueueList OPTIONAL +} + +--************************************************************** +-- +-- EHS-DSCH-Flows +-- Rel-7 or later +-- +--************************************************************** + +EHS-DSCH-Flows ::= SEQUENCE { + harqInfo-r7 HARQ-Info-r7 OPTIONAL, --@sic R5w140013 sic@ + addOrReconfMAC-ehs-ReordQ SS-MAC-ehs-AddReconfReordQueueList OPTIONAL, + ackNackRepetitionFactor ACK-NACK-repetitionFactor OPTIONAL, + mimoStatus BOOLEAN OPTIONAL +} + +--************************************************************** +-- +-- EHS-DSCH-Flows-r9 +-- Rel-9 or later +-- +--************************************************************** + +EHS-DSCH-Flows-r9 ::= SEQUENCE { + harqInfo-r7 HARQ-Info-r7 OPTIONAL, --@sic R5w140013 sic@ + addOrReconfMAC-ehs-ReordQ SS-MAC-ehs-AddReconfReordQueueList-r9 OPTIONAL, + ackNackRepetitionFactor ACK-NACK-repetitionFactor OPTIONAL, + mimoStatus BOOLEAN OPTIONAL + +} + +--************************************************************** +-- +-- EHS-DSCH-Flows-r11 +-- Applicable Rel-11 or later +-- +--************************************************************** +EHS-DSCH-Flows-r11 ::= SEQUENCE { + harqInfo-r11 HARQ-Info-r11 OPTIONAL, + addOrReconfMAC-ehs-ReordQ SS-MAC-ehs-AddReconfReordQueueList-r11 OPTIONAL, + ackNackRepetitionFactor ACK-NACK-repetitionFactor OPTIONAL, + mimoStatus BOOLEAN OPTIONAL +} + + +--************************************************************** +-- +-- CommonE-DCHMACdFlows +-- Rel-6 or later +-- +--************************************************************** + +CommonE-DCHMACdFlows ::= SEQUENCE { + tti E-DCH-TTI, + harq-Info ENUMERATED {rv0 (0), rvtable (1)}, + addReconfMAC-d-FlowList Common-E-DCH-MAC-d-FlowList --@sic R5w140013 sic@ +} + +CommonE-DCHMACdFlows-TDD ::= SEQUENCE { + harq-Info ENUMERATED {rv0 (0), rvtable (1)}, + addReconfMAC-d-FlowList Common-E-DCH-MAC-d-FlowList --@sic R5w140013 sic@ +} + +--************************************************************** +-- +-- E-DCHMACdFlows +-- Rel-6 or later +-- +--************************************************************** + + +E-DCHMACdFlows ::= SEQUENCE { + tti E-DCH-TTI, + harq-Info ENUMERATED {rv0 (0), rvtable (1)}, + addReconf-MAC-d-FlowList E-DCH-AddReconf-MAC-d-FlowList OPTIONAL, + addReconf-MAC-d-FlowList-r7 E-DCH-AddReconf-MAC-d-FlowList-r7 OPTIONAL +} + +--************************************************************** +-- +-- E-DCHMACdFlows-TDD +-- Rel-7 or later +-- E-DCHMACdFlows in TTCN-2 +-- +--************************************************************** + +E-DCHMACdFlows-TDD ::= SEQUENCE { + harq-Info ENUMERATED {rv0 (0), rvtable (1)}, + addReconf-MAC-d-FlowList-r7 E-DCH-AddReconf-MAC-d-FlowList-r7 OPTIONAL --@sic R5w140013 sic@ +} + +--************************************************************** +-- +-- FrequencyBandFDD +-- The frequency band indicator indicates how to interpret the radio frequency broadcast. +-- +--************************************************************** + +FrequencyBandFDD ::= CHOICE { + frequencyBandIndicator RadioFrequencyBandFDD, + frequencyBandIndicator2 RadioFrequencyBandFDD2, + frequencyBandIndicator3 RadioFrequencyBandFDD3, + relAspTypeExtension SEQUENCE{} -- @sic R5-130613 R5-134957 sic@ + +} + +--************************************************************** +-- +-- HS-DPCCHInfo +-- +--************************************************************** + +HS-DPCCHInfo ::= SEQUENCE { + cqi-RepetitionFactor CQI-RepetitionFactor, + ackNackRepetitionFactor ACK-NACK-repetitionFactor, + mimoStatus BOOLEAN DEFAULT FALSE +} + +--************************************************************** +-- +-- HS-DPCCHInfo-r10 +-- Applicable to 4C-HSDPA Rel-10 or later +-- secondaryServing-HS-DSCH-Cell indicates if the HS-DSCH secondary serving cell is activated (see 3GPP TS 25.214 [12], clause 6A.1) +-- The HS-DPCCH code allocation and slot format are set according to 3GPP TS 25.213 [66], clause 4.3.1.2.2. +--************************************************************** + +HS-DPCCHInfo-r10 ::= SEQUENCE { + cqi-RepetitionFactor CQI-RepetitionFactor, + ackNackRepetitionFactor ACK-NACK-repetitionFactor, + mimoStatus BOOLEAN DEFAULT FALSE, + firstSecondaryServing-HS-DSCH-Cell ENUMERATED { deactivated (0), activated (1) } DEFAULT deactivated, + secondSecondaryServing-HS-DSCH-Cell ENUMERATED { deactivated (0), activated (1) } DEFAULT deactivated, + thirdSecondaryServing-HS-DSCH-Cell ENUMERATED { deactivated (0), activated (1) } DEFAULT deactivated + -- Relevant when third secondary cell is configured +} + +--************************************************************** +-- +-- HS-DSCH-DrxCellfach-info +-- +--************************************************************** + +HS-DSCH-DrxCellfach-info ::= SEQUENCE { + t-321 T-321, + hs-dsch-DrxCycleFach HS-DSCH-DrxCycleFach, + hs-dsch-DrxBurstFach HS-DSCH-DrxBurstFach, + drxInterruption-hs-dsch BOOLEAN +} + +--************************************************************** +-- +-- HS-DSCHMACdFlows +-- Applicable Rel-5 or later. +-- Within the ACK/NACK repetition period indicated by ackNackRepetitionFactor the SS shall not transmit MAC-hs PDU's on HS-PDSCH. +-- +--************************************************************** + +HS-DSCHMACdFlows ::= SEQUENCE { + harqInfo HARQ-Info OPTIONAL, + addOrReconfMACdFlow SS-AddOrReconfMAC-dFlow OPTIONAL, + ackNackRepetitionFactor ACK-NACK-repetitionFactor OPTIONAL, + harqInfo-r7 HARQ-Info-r7 OPTIONAL + -- mimoStatus BOOLEAN OPTIONAL No longer in TTCN2 version +} + +HS-DSCHMACdFlows-TDD ::= SEQUENCE { + harqInfo HARQ-Info OPTIONAL, + addOrReconfMACdFlow SS-AddOrReconfMAC-dFlow OPTIONAL, + harqInfo-r7 HARQ-Info-r7 OPTIONAL + -- mimoStatus BOOLEAN OPTIONAL No longer in TTCN2 version +} + + +--************************************************************** +-- +-- HS-PDSCHInfo-r5OrLater +-- Applicable Rel-5 or later +-- When CHY-RL-Setup-REQ is called with CHOICE of hS-PDSCHInfo HS-PDSCH and HS-SCCH shall be configured in SS. +-- The following HS-DSCH related parameters are passed to the SS implicitly by HSDSCH-physical-layer-category: +-- - Maximum number of HS-DSCH codes can be received by UE, +-- - Minimum inter-TTI interval, +-- - Maximum number of bits of an HS-DSCH transport block within an HS-DSCH TTI +-- - Total number of soft channel bits". +-- HSDSCH-physical-Layer-category is also used for interpretation of the meaning of CQI value. +-- +--************************************************************** + +HS-PDSCHInfo-r5OrLater-FDD ::= CHOICE { + r5 SEQUENCE { + hSDSCHPhysicalLayerCategory HSDSCH-physical-layer-category, + h-RNTI H-RNTI, + dlHSPDSCHInformation DL-HSPDSCH-Information, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH +-- hs-PDSCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxPDSCHtimeslot ) ) OF HS-PDSCH-ChannelisationCodeInfo-LCR OPTIONAL, @sic R5-112477r1 sic@ + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE + }, + r6 SEQUENCE { + hSDSCHPhysicalLayerCategory HSDSCH-physical-layer-category, + h-RNTI H-RNTI, + dlHSPDSCHInformation DL-HSPDSCH-Information-r6, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH +-- hs-PDSCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxPDSCHtimeslot ) ) OF HS-PDSCH-ChannelisationCodeInfo-LCR OPTIONAL, @sic R5-112477r1 sic@ + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE + }, + r7 HS-PDSCHInfo-r7-FDD, + r8 HS-PDSCHInfo-r8-FDD, + r9 HS-PDSCHInfo-r9-FDD, -- @sic R5s110175 sic@ + relAspTypeExtension HS-PDSCHInfo-r10OrLaterExtensionType -- Rel-10 or later @sic R5-130613 R5-134957 sic@ +} + +HS-PDSCHInfo-r5OrLater-TDD ::= CHOICE { + r5 SEQUENCE { + hSDSCHPhysicalLayerCategory HSDSCH-physical-layer-category, + h-RNTI H-RNTI, + dlHSPDSCHInformation DL-HSPDSCH-Information, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH + hs-PDSCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxPDSCHtimeslot ) ) OF HS-PDSCH-ChannelisationCodeInfo-LCR, --@sic R5-112477r1 sic@ + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE + }, + r6 SEQUENCE { + hSDSCHPhysicalLayerCategory HSDSCH-physical-layer-category, + h-RNTI H-RNTI, + dlHSPDSCHInformation DL-HSPDSCH-Information-r6, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH + hs-PDSCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxPDSCHtimeslot ) ) OF HS-PDSCH-ChannelisationCodeInfo-LCR, --@sic R5-112477r1 sic@ + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE + }, + r7 HS-PDSCHInfo-r7-TDD, + r8 HS-PDSCHInfo-r8-TDD, + r9 HS-PDSCHInfo-r9-TDD, -- @sic R5s110175 sic@ + relAspTypeExtension SEQUENCE{} -- Rel-10 or later @sic R5-134957 sic@ +} + +--************************************************************** +-- +-- HS-PDSCHInfo-r10OrLaterExtensionType +-- Rel-10 or later +-- hS-PDSCH-Info rel10 extension is applied to 4C HSDPA configurations. +-- The IEs related to HS-DSCH physical layer vategories are mutually exclusive. One of the IE shall be present in the SS configuration. +-- The IE "hsdsch-physical-layer-category-ext4" is present when 2 secondary cells are configured. +-- The IE "hsdsch-physical-layer-category-ext5" is present when 3 secondary cells are configured. +-- The IE "hsdsch-physical-layer-category-ext6" is present when multi-cell operation on 5 or 6 cells are configured. +-- The IE "hsdsch-physical-layer-category-ext7" is present when multi-cell operation on 7 or 8 cells are configured. +-- The IE "hsdsch-physical-layer-category-ext8" is present when MIMO with 4 transmit antenna are configured. +--************************************************************** +HS-PDSCHInfo-r10OrLaterExtensionType ::= CHOICE { + rel10-AspExt SEQUENCE { + hSDSCHPhysicalLayerCategory HSDSCH-physical-layer-category OPTIONAL, + hsdsch-physical-layer-category-ext HSDSCH-physical-layer-category-ext OPTIONAL, + hsdsch-physical-layer-category-ext2 + HSDSCH-physical-layer-category-ext2 OPTIONAL, + hsdsch-physical-layer-category-ext3 + HSDSCH-physical-layer-category-ext3 OPTIONAL, + hsdsch-physical-layer-category-ext4 + HSDSCH-physical-layer-category-ext4 OPTIONAL, + hsdsch-physical-layer-category-ext5 + HSDSCH-physical-layer-category-ext5 OPTIONAL, + h-RNTI H-RNTI, + dlHSPDSCHInformation DL-HSPDSCH-Information-r9, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH + ss-DTX-Info DRX-Info OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimo-Parameters MIMO-Parameters-r9 OPTIONAL, + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE, + hs-SCCH-SttdIndicator BOOLEAN DEFAULT FALSE + }, + rel11-AspExt SEQUENCE { + hSDSCHPhysicalLayerCategory HSDSCH-physical-layer-category OPTIONAL, + hsdsch-physical-layer-category-ext + HSDSCH-physical-layer-category-ext OPTIONAL, + hsdsch-physical-layer-category-ext2 + HSDSCH-physical-layer-category-ext2 OPTIONAL, + hsdsch-physical-layer-category-ext3 + HSDSCH-physical-layer-category-ext3 OPTIONAL, + hsdsch-physical-layer-category-ext4 + HSDSCH-physical-layer-category-ext4 OPTIONAL, + hsdsch-physical-layer-category-ext5 + HSDSCH-physical-layer-category-ext5 OPTIONAL, + hsdsch-physical-layer-category-ext6 + HSDSCH-physical-layer-category-ext6 OPTIONAL, + hsdsch-physical-layer-category-ext7 + HSDSCH-physical-layer-category-ext7 OPTIONAL, + hsdsch-physical-layer-category-ext8 + HSDSCH-physical-layer-category-ext8 OPTIONAL, + h-RNTI H-RNTI, + dlHSPDSCHInformation DL-HSPDSCH-Information-r11, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH + ss-DTX-Info DRX-Info OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimo-Parameters MIMO-Parameters-r9 OPTIONAL, + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE, + hs-SCCH-SttdIndicator BOOLEAN DEFAULT FALSE + } +} + +--************************************************************** +-- +-- HS-PDSCH-ChannelisationCodeInfo-LCR +-- +--************************************************************** + +HS-PDSCH-ChannelisationCodeInfo-LCR ::= SEQUENCE { + timeslotNumber TimeslotNumber-LCR-r4, + startCode HS-ChannelisationCode-LCR, + stopCode HS-ChannelisationCode-LCR +} + + +--************************************************************** +-- +-- HS-PDSCHInfo-r7 +-- +--************************************************************** + +HS-PDSCHInfo-r7-FDD ::= CHOICE { + hS-PDSCH-Info SEQUENCE { + hSDSCHPhysicalLayerCategory HSDSCH-physical-layer-category OPTIONAL, + hsdsch-physical-layer-category-ext HSDSCH-physical-layer-category-ext OPTIONAL, + h-RNTI H-RNTI, + dlHSPDSCHInformation DL-HSPDSCH-Information-r7, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH +-- hs-PDSCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxPDSCHtimeslot ) ) OF HS-PDSCH-ChannelisationCodeInfo-LCR OPTIONAL, @sic R5-112477r1 sic@ + ss-DTX-Info DRX-Info OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimo-Parameters MIMO-Parameters-r7 OPTIONAL, + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE, + hs-SCCH-SttdIndicator BOOLEAN DEFAULT FALSE -- @sic R5-120613 sic@ + + }, + common-HS-PDSCH-Info SEQUENCE { + hsdsch-physical-layer-category-ext HSDSCH-physical-layer-category-ext, -- @sic R5-112477 sic@ + commonOrDedicated-H-RNTI H-RNTI OPTIONAL, -- @sic R5-112477 sic@ + bcchSpecific-H-RNTI H-RNTI, + hs-scch-SystemInfo HS-SCCH-SystemInfo, + hs-dsch-PagingSystemInformation HS-DSCH-PagingSystemInformation OPTIONAL, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE + }, + spare2 SEQUENCE {}, + spare3 SEQUENCE {} +} + +HS-PDSCHInfo-r7-TDD ::= CHOICE { + hS-PDSCH-Info SEQUENCE { + hSDSCHPhysicalLayerCategory HSDSCH-physical-layer-category OPTIONAL, + hsdsch-physical-layer-category-ext HSDSCH-physical-layer-category-ext OPTIONAL, + h-RNTI H-RNTI, + dlHSPDSCHInformation DL-HSPDSCH-Information-r7, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH + hs-PDSCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxPDSCHtimeslot ) ) OF HS-PDSCH-ChannelisationCodeInfo-LCR, --@sic R5-112477r1 sic@ + ss-DTX-Info DRX-Info OPTIONAL, + mimo-Parameters MIMO-Parameters-r7 OPTIONAL, + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE + }, + common-HS-PDSCH-Info SEQUENCE { + hsdsch-physical-layer-category-ext HSDSCH-physical-layer-category-ext, -- @sic R5-112477 sic@ + commonOrDedicated-H-RNTI H-RNTI OPTIONAL, -- @sic R5-112477 sic@ + bcchSpecific-H-RNTI H-RNTI, + hs-scch-SystemInfo HS-SCCH-SystemInfo, + hs-dsch-PagingSystemInformation HS-DSCH-PagingSystemInformation OPTIONAL, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE + }, + spare2 SEQUENCE {}, + spare3 SEQUENCE {} +} + + +--************************************************************** +-- +-- HS-PDSCHInfo-r8-FDD +-- +--************************************************************** + +HS-PDSCHInfo-r8-FDD ::= CHOICE { + hS-PDSCH-Info SEQUENCE { + hSDSCHPhysicalLayerCategory HSDSCH-physical-layer-category OPTIONAL, + hsdsch-physical-layer-category-ext HSDSCH-physical-layer-category-ext OPTIONAL, + hsdsch-physical-layer-category-ext2 HSDSCH-physical-layer-category-ext2 OPTIONAL, + h-RNTI H-RNTI, + dlHSPDSCHInformation DL-HSPDSCH-Information-r8, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH +-- hs-PDSCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxPDSCHtimeslot ) ) OF HS-PDSCH-ChannelisationCodeInfo-LCR OPTIONAL, @sic R5-112477r1 sic@ + ss-DTX-Info DRX-Info OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimo-Parameters MIMO-Parameters-r8 OPTIONAL, + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE, + hs-SCCH-SttdIndicator BOOLEAN DEFAULT FALSE -- @sic R5-120613 sic@ + }, + common-HS-PDSCH-Info SEQUENCE { + hsdsch-physical-layer-category-ext HSDSCH-physical-layer-category-ext, -- @sic R5-112477 sic@ + commonOrDedicated-H-RNTI H-RNTI OPTIONAL, -- @sic R5-112477 sic@ + bcchSpecific-H-RNTI H-RNTI, + hs-scch-SystemInfo HS-SCCH-SystemInfo, + hs-dsch-PagingSystemInformation HS-DSCH-PagingSystemInformation OPTIONAL, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE, + ss-HS-DSCH-DtxCellFach HS-DSCH-DrxCellfach-info OPTIONAL + }, + spare2 SEQUENCE {}, + spare3 SEQUENCE {} +} + +--************************************************************** +-- +-- HS-PDSCHInfo-r8-TDD +-- +--************************************************************** + +HS-PDSCHInfo-r8-TDD ::= CHOICE { + hS-PDSCH-Info SEQUENCE { + hSDSCHPhysicalLayerCategory HSDSCH-physical-layer-category OPTIONAL, + hsdsch-physical-layer-category-ext HSDSCH-physical-layer-category-ext OPTIONAL, + multiCarrier-physical-layer-category MultiCarrier-HSDSCH-physical-layer-category OPTIONAL, + multiCarrier-physicallayer-category-extension MultiCarrier-HSDSCH-physical-layer-category-extension OPTIONAL, + h-RNTI H-RNTI, + dlHSPDSCHInformation DL-HSPDSCH-Information-r8, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH + mimo-Parameters MIMO-Parameters-r8 OPTIONAL, + hs-PDSCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxPDSCHtimeslot ) ) OF HS-PDSCH-ChannelisationCodeInfo-LCR, --@sic R5-140315 sic@ + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL + + }, + common-HS-PDSCH-Info SEQUENCE { + hsdsch-physical-layer-category-ext HSDSCH-physical-layer-category-ext, -- @sic R5-112477 sic@ + commonOrDedicated-H-RNTI H-RNTI OPTIONAL, -- @sic R5-112477 sic@ + bcchSpecific-H-RNTI H-RNTI, + hs-scch-SystemInfo-tdd128 HS-SCCH-SystemInfo-TDD128 OPTIONAL, + hs-pdsch-MidambleConfiguration HS-PDSCH-Midamble-Configuration-TDD128 OPTIONAL, + hs-dsch-PagingSystemInformation-tdd128 HS-DSCH-PagingSystemInformation-TDD128 OPTIONAL, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE, + ss-HS-DSCH-DtxCellFach HS-DSCH-DrxCellfach-info-TDD128 OPTIONAL + }, + spare2 SEQUENCE {}, + spare3 SEQUENCE {} +} + +--************************************************************** +-- +-- HS-PDSCHInfo-r9-FDD +-- +--************************************************************** + +HS-PDSCHInfo-r9-FDD ::= CHOICE { + hS-PDSCH-Info SEQUENCE { + hSDSCHPhysicalLayerCategory HSDSCH-physical-layer-category OPTIONAL, + hsdsch-physical-layer-category-ext HSDSCH-physical-layer-category-ext OPTIONAL, + hsdsch-physical-layer-category-ext2 HSDSCH-physical-layer-category-ext2 OPTIONAL, + hsdsch-physical-layer-category-ext3 HSDSCH-physical-layer-category-ext3 OPTIONAL, + h-RNTI H-RNTI, + dlHSPDSCHInformation DL-HSPDSCH-Information-r9, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH +-- hs-PDSCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxPDSCHtimeslot ) ) OF HS-PDSCH-ChannelisationCodeInfo-LCR OPTIONAL, @sic R5-112477r1 sic@ + ss-DTX-Info DRX-Info OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimo-Parameters MIMO-Parameters-r9 OPTIONAL, + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE, + hs-SCCH-SttdIndicator BOOLEAN DEFAULT FALSE -- @sic R5-120613 sic@ + }, + common-HS-PDSCH-Info SEQUENCE { + hsdsch-physical-layer-category-ext HSDSCH-physical-layer-category-ext, -- @sic R5-112477 sic@ + commonOrDedicated-H-RNTI H-RNTI OPTIONAL, -- @sic R5-112477 sic@ + bcchSpecific-H-RNTI H-RNTI, + hs-scch-SystemInfo HS-SCCH-SystemInfo, + hs-dsch-PagingSystemInformation HS-DSCH-PagingSystemInformation OPTIONAL, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE, + ss-HS-DSCH-DtxCellFach HS-DSCH-DrxCellfach-info OPTIONAL + }, + spare2 SEQUENCE {}, + spare3 SEQUENCE {} +} + +--************************************************************** +-- +-- HS-PDSCHInfo-r9-TDD +-- Applicable Rel-9 or later. +-- Choice of hS-PDSCH-Info will be used for configuring HSD-DSCH with 64QAM and/or CPC. +-- Choice of common-HS-PDSCH-Info will be used for Enhanced Cell-FACH. +-- commonOrDedicated-H-RNTI indicates, the H-RNTI that will be used by UE (either dedicated H-RNTI if provided in RRC message, or selected common H-RNTI transmitted in SIB5). +-- The transmission of BCCH on HS-DSCH is performed by using BCCH specific H-RNTI on the first indexed HS-SCCH code indicated in system information broadcast. +-- Presence of controlChannelDRXInfo-TDD128 makes DL DRX to be enabled. +-- Presence of sps-Information-TDD128 makes SPS operation enabled. +-- Presence of mimo-Parameters indicate MIMO is to be started. +-- The IEs 'hSDSCHPhysicalLayerCategory', 'hsdsch-physical-layer-category-ext', are mutually exclusive. One of the IE shall be present in the SS configuration. The IE If commonOrDedicated-H-RNTI is omitted, HS-SCCHless is to be applied. +-- If hs-DPCCHToFollow is FALSE, the hs-DPCCHInd IE shall not be present when ul-DPCHInfo is configured or reconfigured. +-- Presence of ss-HS-DSCH-DtxCellFach makes HS-DSCH DRX operation enabled and SS shall transmit any requested HS-SCCH and HS-DSCH only in occasions when UE will be listening. +-- hs-PDSCHChannelisationCodeInfo present in TDD configurations. +-- If tS0-Indicator is TRUE, the bit xts,1 of Time slot information in HS-SCCH carries the information for timeslot 0. +--************************************************************** + +HS-PDSCHInfo-r9-TDD ::= CHOICE { + hS-PDSCH-Info SEQUENCE { + hSDSCHPhysicalLayerCategory HSDSCH-physical-layer-category OPTIONAL, + hsdsch-physical-layer-category-ext HSDSCH-physical-layer-category-ext OPTIONAL, + multiCarrier-physical-layer-category MultiCarrier-HSDSCH-physical-layer-category OPTIONAL, + multiCarrier-physicallayer-category-extension MultiCarrier-HSDSCH-physical-layer-category-extension OPTIONAL, + h-RNTI H-RNTI, + dlHSPDSCHInformation DL-HSPDSCH-Information-r9, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH + mimo-Parameters MIMO-Parameters-r9 OPTIONAL, + hs-PDSCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxPDSCHtimeslot ) ) OF HS-PDSCH-ChannelisationCodeInfo-LCR, --@sic R5-140315 sic@ + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL + }, + common-HS-PDSCH-Info SEQUENCE { + hsdsch-physical-layer-category-ext HSDSCH-physical-layer-category-ext, -- @sic R5-112477 sic@ + commonOrDedicated-H-RNTI H-RNTI OPTIONAL, -- @sic R5-112477 sic@ + bcchSpecific-H-RNTI H-RNTI, + hs-scch-SystemInfo-tdd128 HS-SCCH-SystemInfo-TDD128 OPTIONAL, + hs-pdsch-MidambleConfiguration HS-PDSCH-Midamble-Configuration-TDD128 OPTIONAL, + hs-dsch-PagingSystemInformation-tdd128 HS-DSCH-PagingSystemInformation-TDD128 OPTIONAL, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE, + ss-HS-DSCH-DtxCellFach HS-DSCH-DrxCellfach-info-TDD128 OPTIONAL + }, + spare2 SEQUENCE {}, + spare3 SEQUENCE {} +} + +--************************************************************** +-- +-- HyperFrameNumber +-- +--************************************************************** + +HyperFrameNumber ::= BIT STRING (SIZE (20)) + +--************************************************************** +-- +-- IP-VersionType +-- +--************************************************************** + +IP-VersionType ::= ENUMERATED { iPv4(0), iPv6(1) } + +--************************************************************** +-- +-- Increment-Mode +-- +--************************************************************** + +Increment-Mode ::= ENUMERATED {incPerCFN-Cycle(0), notInc(1), incByOne-IncPerCFN-Cycle(2)} + +--************************************************************** +-- +-- IntegrityActivationInfo +-- Comment DL or UL integrity activation info.At the RRC message sequence numbers specified in the ul-IntegProtActivationInfo the SS shall initialise COUNT-I for the SRB's indicated in the ul-IntegProtActivationInfo and start using the new configuration on uplink for the indicated SRB's.If the START value is omitted in the CRLC-SecurityMode-Config-REQ above COUNT-I initialisation shall not be performed. +-- Type Definition +-- +--************************************************************** + +IntegrityActivationInfo ::= CHOICE { + integrityProtectionModeInfo IntegrityProtectionModeInfo, + ul-IntegProtActivationInfo IntegrityProtActivationInfoList, + integrityProtectionModeInfo-r7 IntegrityProtectionModeInfo-r7 +} + +--************************************************************** +-- +-- IntegrityProtActivationInfoList +-- List of SS IntegrityProtActivationInfo +-- +--************************************************************** + +IntegrityProtActivationInfoList ::= SEQUENCE (SIZE (1..maxRB ) ) OF SS-IntegrityProtActivationTimeInfo + +--************************************************************** +-- +-- IntegrityResult +-- +--************************************************************** + +IntegrityResult ::= CHOICE { + integrityNotUsed NULL, + integrityUsed IntegrityStatus +} + +--************************************************************** +-- +-- IntegrityStatus +-- +--************************************************************** + +IntegrityStatus ::= ENUMERATED { + i-pass(0), + i-fail(1) +} + +--************************************************************** +-- +-- KeyCiphering +-- +--************************************************************** + +KeyCiphering ::= BIT STRING (SIZE (128)) + +--************************************************************** +-- +-- SS-LogicalChannelList +-- +--************************************************************** + +SS-LogicalChannelList ::= CHOICE +{ + allSizes NULL, + configured NULL, + explicitList SEQUENCE (SIZE (1..15)) OF SS-LogicalChannelByRB +} + +--************************************************************** +-- +-- SS-LogicalChannelByRB +-- +--************************************************************** + +SS-LogicalChannelByRB ::= SEQUENCE +{ + rb-Identity INTEGER (-31..32), + logChOfRb INTEGER (0..1) OPTIONAL +} + +--************************************************************** +-- +-- LogicalChannelType +-- +--************************************************************** + +LogicalChannelType ::= ENUMERATED +{ + bCCH (0), + pCCH (1), + cCCH (2), + cTCH (3), + dCCH (4), + dTCH (5), + sHCCH (6), + mTCH (7), + mCCH (8), + mSCH (9) +} + +--************************************************************** +-- +-- MAC-HeaderManipulation +-- +--************************************************************** + +MAC-HeaderManipulation ::= ENUMERATED +{ + normalMacHeader (0), + omitMacHeader (1) +} + +--************************************************************** +-- +-- MimoAntennaConfigType +-- +--************************************************************** + +MimoAntennaConfigType ::= ENUMERATED +{ + noMimo(0), + antenna2pCPICH(1), + antenna2sCPICH(2), + spare(3) +} + +--************************************************************** +-- +-- Mui +-- +--************************************************************** + +Mui ::= INTEGER (0..4095) + +--************************************************************** +-- +-- PDSCHInfo-FDD +-- +--************************************************************** + +PDSCHInfo-FDD ::= SEQUENCE { + fdd-tdd CHOICE { + fdd SEQUENCE { + pdsch-CodeMapping PDSCH-CodeMapping + } , + tdd SEQUENCE { -- TDD not applicable @sic R5-130314 sic@ + } + }, + dl-TxPower DL-TxPower +} + +--************************************************************** +-- +-- PDSCHInfo-TDD +-- +--************************************************************** + +PDSCHInfo-TDD ::= SEQUENCE { + pdsch-Identity PDSCH-Identity, + pdsch-Info PDSCH-Info-r4, + pdsch-PowerControlInfo PDSCH-PowerControlInfo OPTIONAL, + dl-TxPower DL-TxPower +} + +--************************************************************** +-- +-- PUSCHInfo +-- TDD +--************************************************************** + +PUSCHInfo ::= SEQUENCE { + pusch-Identity PUSCH-Identity, + pusch-Info PUSCH-Info-r4, + pusch-PowerControlInfo PUSCH-PowerControlInfo-r4 OPTIONAL +} + +--************************************************************** +-- +-- PICHInfo-FDD +-- +--************************************************************** + +PICHInfo-FDD ::= SEQUENCE { + pichinfo PICH-Info, + dl-TxPower PICH-PowerOffset, + sccpchId-associated INTEGER (0..32) +} + +--************************************************************** +-- +-- PICHInfo-TDD +-- +--************************************************************** + +PICHInfo-TDD ::= SEQUENCE { + pichinfo PICH-Info-LCR-r4, + dl-TxPower PICH-PowerOffset, + sccpchId-associated INTEGER (0..32) +} + +--************************************************************** +-- +-- PRACHInfo-FDD +-- +--************************************************************** + +PRACHInfo-FDD ::= SEQUENCE { + fdd-tdd CHOICE { + fdd SEQUENCE { + preambleSignature AvailableSignatures, + spreadingFactorForDataPart SF-PRACH, + preambleScramblingCode PreambleScramblingCodeWordNumber, + puncturingLimit PuncturingLimit, + accessSlot AvailableSubChannelNumbers + }, + tdd SEQUENCE { -- TDD not applicable @sic R5-140314 sic@ + }, + fdd-prachForEnhUL SEQUENCE { -- Rel-8 or later + -- For rel-99 PRACH + preambleSignature AvailableSignatures, + spreadingFactorForDataPart SF-PRACH, + preambleScramblingCode PreambleScramblingCodeWordNumber, + puncturingLimit PuncturingLimit, + accessSlot AvailableSubChannelNumbers, + + -- For for Enhanced Uplink E-DCH transmission + commonEDCH-PreambleSignature AvailableSignatures, + -- access preamble signature for E-DCH transmission + commonEDCH-PreambleScramblingCode PreambleScramblingCodeWordNumber, + commonEDCH-AccessSlot AvailableSubChannelNumbers + } + + } +} + +--************************************************************** +-- +-- PRACHInfo-TDD +-- +--************************************************************** + +PRACHInfo-TDD ::= SEQUENCE { + pRACH-RACH-Info-LCR-r4 PRACH-RACH-Info-LCR-r4, + accessServiceClass-TDD-LCR AccessServiceClass-TDD-LCR-r4, + fPACH-Power DL-TxPower +} + +--************************************************************** +-- +-- PayloadSize +-- +--************************************************************** + +PayloadSize ::= INTEGER (0..4992) + +--************************************************************** +-- +-- PhysicalChannelIdentity +-- +--************************************************************** + +PhysicalChannelIdentity ::= INTEGER (0..31) + +--************************************************************** +-- +-- PrimaryCCPCHInfo-FDD +-- +--************************************************************** + +PrimaryCCPCHInfo-FDD ::= SEQUENCE { + sttd-Indicator BOOLEAN, + dl-TxPower DL-TxPower + -- timeSlot TimeSlot OPTIONAL, + -- burstType BurstType OPTIONAL, + -- offset Offset OPTIONAL, + -- repetitionPeriod RepetitionPeriod OPTIONAL, + -- repetitionLength RepetitionLength OPTIONAL, +} + +--************************************************************** +-- +-- PrimaryCCPCHInfo-TDD +-- +--************************************************************** + +PrimaryCCPCHInfo-TDD ::= SEQUENCE { + sctd-Indicator ENUMERATED {notApplied(0),applied(1)}, + tstd-Indicator ENUMERATED {notApplied(0),applied(1)}, + commonTimeSlotInfo CommonTimeslotInfo, + dL-TxPower-PCCPCH DL-TxPower-PCCPCH, + relAspTypeExtension SEQUENCE{} OPTIONAL -- Rel-10 or later @sic R5-134957 sic@ +} +--************************************************************** +-- +-- PrimaryCPICHInfo +-- +--************************************************************** + +PrimaryCPICHInfo ::= SEQUENCE { + dl-TxPower-PCPICH DL-TxPower-PCPICH, + txdiversityIndicator BOOLEAN, + mimoAntenna2CPICH MimoAntennaConfigType DEFAULT noMimo, + dC-SecondaryServingCell BOOLEAN DEFAULT FALSE, -- Rel-8 or later + relAspTypeExtension SEQUENCE{} OPTIONAL -- Rel-10 or later @sic R5-134957 sic@ +} + +--************************************************************** +-- +-- PrimarySCHInfo +-- +--************************************************************** + +PrimarySCHInfo ::= SEQUENCE { + tstdIndicator BOOLEAN, + dl-TxPower DL-TxPower +} + +--************************************************************** +-- +-- RBInfo +-- +--************************************************************** + +RBInfo ::= SEQUENCE { + sS-rlc-Info SS-RLC-Info OPTIONAL, + sS-rlc-Info-r8 SS-RLC-Info-r8OrLater OPTIONAL, + rB-LogCH-Mapping RB-LogCH-Mapping, + relAspTypeExtension SEQUENCE{} OPTIONAL -- @sic R5-130613 R5-134957 sic@ +} + +--************************************************************** +-- +-- RBInfo-TDD +-- +--************************************************************** + +RBInfo-TDD ::= SEQUENCE { + sS-rlc-Info SS-RLC-Info-TDD OPTIONAL, + sS-rlc-Info-r8 SS-RLC-Info-r8OrLater-TDD OPTIONAL, + rB-LogCH-Mapping RB-LogCH-Mapping, + relAspTypeExtension SEQUENCE {} OPTIONAL -- Rel-10 or later @sic R5-134957 R5w130320 sic@ +} + +--************************************************************** +-- +-- RB-ConfigType +-- +--************************************************************** + +RB-ConfigType ::= ENUMERATED { + cell-NotConfigured (0), + -- Configurations on DPCH + cell-DCH-StandAloneSRB-NoConn (1), + cell-NoDPCH (2), + cell-DCH-StandAloneSRB (3), + cell-DCH-Speech (4), + cell-DCH-64kPS-RAB-SRB (7), + cell-DCH-2AM-PS (17), + -- Configurations on FACH + cell-FACH-NoConn (18), + cell-FACH (19), + cell-FACH-NoDedicated (20), + cell-FACH-PS (21), + cell-Four-DTCH-PS-CS (44) , + cell-DCH-HS-DSCH(63), + cell-FACH-HS(64), + cell-DCH-64kPS-RAB-SRB-HS(65), + -- E-DCH configurations + cell-DCH-E-HS (84), + cell-DCH-dlSRB-E-HS (85), + cell-E-HS (86), + cell-E-HS-StandAloneSRB (98), + cell-DCH-64kPS-AM-RAB (101), + cell-SecondaryDualCell-SRB (118), + cell-SecondaryDualCell-RAB (119), + cell-SecondaryDualCell-NoConn (123) +} + +--************************************************************** +-- +-- RB-LogCH-Mapping +-- Provide mapping information between RB, logical channel and CN domain. +-- When the logical channel is MTCH, the logicalChannelIdentity shall be consistent with MBMS-LogicalChIdentity in MBMS-PTM-RBInformation-N and MBMS-PTM-RBInformation-C being sent to the UE. +-- +--************************************************************** + +RB-LogCH-Mapping ::= SEQUENCE { + uLlogicalChannelIdentity LogicalChannelIdentity OPTIONAL, + dLlogicalChannelIdentity LogicalChannelIdentity OPTIONAL, + logicalChannelType LogicalChannelType OPTIONAL, + cn-DomainIdentity CN-DomainIdentity OPTIONAL +} + +--************************************************************** +-- +-- RLC-IncMode +-- +--************************************************************** + +RLC-IncMode ::= ENUMERATED {notInc(0), inc(1)} + +--************************************************************** +-- +-- RL-Information-FDD +-- The range for powerOffsetOfTPC-PO2 and powerOffsetOfTFCI-PO1 and powerOffsetOfPILOT-PO3 is 0 dB to 6 dB, 0,25 dB per step. +-- The IE cfnTgtSfnFrameOffset is applied when adding another RL or moving the UE to another cell in DCH state in the timing-maintained hard handover or in the softhandover. The cfnTgtSfnFrameOffset is defined as being the time difference between the CFN and the SFN of the cell in which the RL is to be added. +-- The use of cfnTgtSfnFrameOffset and DOFF (Default DPCH Offset Value) is mutually exclusive. The IE cfnTgtSfnFrameOffset is omitted when configuring the 1st RL, or configuring the RL in the timing re-initialised hard handover where the required synchronisation information is provided in defaultDPCH-offsetValue in DL-CommonInformation. +-- In addition, TmTgt value is provided to dpch-FrameOffset in DL-DPCH-InfoPerRL-r5 or DL-DPCH-InfoPerRL-r6 as CFNchipOffset-Tgt. TmTgt can be observed by the UE, or calculated by the TTCN. If it is calculated, +-- TmTgt = (DOFF*512 + 38400 + TCell-Ref - TCell-Tgt) Mod 38400 +-- +--************************************************************** + +RL-Information-FDD ::= SEQUENCE { + powerOffsetOfTFCI-PO1 INTEGER (0..24), + powerOffsetOfTPC-PO2 INTEGER (0..24), + powerOffsetOfPILOT-PO3 INTEGER (0..24), --OPTIONAL, @sic R5-112477r1, FDD-TDD allignment sic@ + dl-TxPower DL-TxPower, + dl-TxPowerMax DL-TxPower, + dl-TxPowerMin DL-TxPower, + cfnTgtSfnFrameOffset CfnTgtSfnFrameOffset OPTIONAL, + dl-FDPCH-ShoConfig BOOLEAN DEFAULT FALSE -- Rel6 or later +} + +--************************************************************** +-- +-- RL-Information-TDD +-- The range for powerOffsetOfTPC-PO2 and powerOffsetOfTFCI-PO1 and powerOffsetOfPILOT-PO3 is 0 dB to 6 dB, 0,25 dB per step. +-- The IE cfnTgtSfnFrameOffset is applied when adding another RL or moving the UE to another cell in DCH state in the timing-maintained hard handover or in the softhandover. The cfnTgtSfnFrameOffset is defined as being the time difference between the CFN and the SFN of the cell in which the RL is to be added. +-- The use of cfnTgtSfnFrameOffset and DOFF (Default DPCH Offset Value) is mutually exclusive. The IE cfnTgtSfnFrameOffset is omitted when configuring the 1st RL, or configuring the RL in the timing re-initialised hard handover where the required synchronisation information is provided in defaultDPCH-offsetValue in DL-CommonInformation. +-- In addition, TmTgt value is provided to dpch-FrameOffset in DL-DPCH-InfoPerRL-r5 or DL-DPCH-InfoPerRL-r6 as CFNchipOffset-Tgt. TmTgt can be observed by the UE, or calculated by the TTCN. If it is calculated, +-- TmTgt = (DOFF*512 + 38400 + TCell-Ref - TCell-Tgt) Mod 38400 +-- +--************************************************************** + +RL-Information-TDD ::= SEQUENCE { + powerOffsetOfTFCI-PO1 INTEGER (0..24), + powerOffsetOfTPC-PO2 INTEGER (0..24), + powerOffsetOfPILOT-PO3 INTEGER (0..24), --OPTIONAL, @sic R5-112477r1, FDD-TDD allignment sic@ + dl-TxPower DL-TxPower, + dl-TxPowerMax DL-TxPower, + dl-TxPowerMin DL-TxPower, + cfnTgtSfnFrameOffset CfnTgtSfnFrameOffset OPTIONAL, + dL-TimeslotISCPInfoLCR TimeslotListWithISCP OPTIONAL +} + +--************************************************************** +-- +-- RRC-Rel-Status +-- +--************************************************************** + +RRC-Rel-Status ::= ENUMERATED { + cell-Dch(0), + cell-Fach-Dcch(1), + cell-Fach-Ccch(2) +} + +--************************************************************** +-- +-- RRC-SequenceNumber +-- 4 bits long +-- +--************************************************************** + +RRC-SequenceNumber ::= INTEGER (0..15 ) + +--************************************************************** +-- +-- RRC-ServTested +-- +--************************************************************** + +RRC-ServTested ::= ENUMERATED { + speech (0), + conversational-64k (1), + streaming-57-6k (2), + ps-Interactive (3), + ps-Background (4), + ps-Streaming (5), + ps-SubscribedTrafficClass (6) -- @sic R5s110771 sic@ + +} + +--************************************************************** +-- +-- RatType +-- To select route between each channels +-- +--************************************************************** + +RatType ::= ENUMERATED { + fdd(0), + tdd128(1) -- @sic R5-134957 sic@ +} + +--************************************************************** +-- +-- RegOr-MO +-- +--************************************************************** + +RegOr-MO ::= ENUMERATED { + est-Reg(0), + est-MO(1), + est-MT(2) +} + +--************************************************************** +-- +-- RoutingInfo +-- +--************************************************************** + +RoutingInfo ::= CHOICE { + physicalChannelIdentity INTEGER (0..31), + transportChannelIdentity TransportChannelIdentity, + logicalChannelIdentity LogicalChannelIdentity, + rB-Identity INTEGER (-31..32), + cn-DomainIdentity CN-DomainIdentity +} + +--************************************************************** +-- +-- ServingAndSecondaryCellActivation-Type +-- +--************************************************************** + +ServingAndSecondaryCellActivation-Type ::= SEQUENCE { + servingCellId INTEGER(0..63), + secondaryCellId INTEGER(0..63), + secondaryServing-HS-DSCH-Cell ENUMERATED { deactivated (0), activated (1) } DEFAULT deactivated +} + +--************************************************************** +-- +-- CmacConfigReq-r10OrLaterExtensionType +-- Applicable Rel-10 or later +-- servingSecondaryCells is provided in 4C configurations +-- +--************************************************************** +CmacConfigReq-r10OrLaterExtensionType ::= CHOICE { + rel10-AspExt SEQUENCE { + servingSecondaryCells SEQUENCE { -- 3C/4C HSDPA configuration + servingCellId INTEGER(0..63), + secondaryCellActivationList SecondaryCellActivationList-Type + } OPTIONAL + } +} + +--************************************************************** +-- +-- SecondaryCellActivationList-Type +-- +--************************************************************** +SecondaryCellActivationList-Type ::= SEQUENCE (SIZE (1..3)) OF SecondaryCellActivation-Type + +--************************************************************** +-- +-- SecondaryCellActivation-Type +-- +--************************************************************** +SecondaryCellActivation-Type ::= SEQUENCE { + secondaryCellId INTEGER(0..63), + secondaryServingStatus ENUMERATED { deactivated (0), activated (1) } + DEFAULT deactivated +} + +--************************************************************** +-- +-- SCCPCHSlotFormat +-- Reference to TS25.211 +-- +--************************************************************** + +SCCPCHSlotFormat ::= INTEGER (0..17) + +--************************************************************** +-- +-- SIB +-- Union of all system information blocks +-- +--************************************************************** + +SIB ::= CHOICE { + sIB1 SysInfoType1, + sIB2 SysInfoType2, + sIB3 SysInfoType3, + sIB4 SysInfoType4, + sIB5 SysInfoType5, + sIB6 SysInfoType6, + sIB7 SysInfoType7, + sIB8 SysInfoType8, + sIB9 SysInfoType9, + sIB10 SysInfoType10, + sIB11 SysInfoType11, + sIB12 SysInfoType12, + sIB13 SysInfoType13, + sIB13-1 SysInfoType13-1, + sIB13-2 SysInfoType13-2, + sIB13-3 SysInfoType13-3, + sIB13-4 SysInfoType13-4, + sIB14 SysInfoType14, + sIB15 SysInfoType15, + sIB15-1 SysInfoType15-1, + sIB15-2 SysInfoType15-2, + sIB15-3 SysInfoType15-3, + sIB16 SysInfoType16, + sIB17 SysInfoType17, + sIB18 SysInfoType18, + mIB MasterInformationBlock, + sB1 SysInfoTypeSB1, + sB2 SysInfoTypeSB2, + sIB11bis SysInfoType11bis +} + +--************************************************************** +-- +-- SS-ActivationTime +-- +--************************************************************** + +SS-ActivationTime ::= CHOICE { + activationCFN ActivationTime, + activateNow NULL +} + +--************************************************************** +-- +-- SS-AddOrReconfMAC-dFlow +-- Applicable Rel-5 or later. +-- +--************************************************************** + +SS-AddOrReconfMAC-dFlow ::= SEQUENCE { + mac-hs-AddReconfQueue-List SEQUENCE (SIZE(1..maxQueueIDs)) OF SEQUENCE { + mac-hs-AddReconfQueue SS-MAC-hs-AddReconfQueue } OPTIONAL, + mac-hs-DelQueue-List SEQUENCE (SIZE(1..maxQueueIDs)) OF SEQUENCE { + mac-hsQueueId INTEGER(0..7) + } OPTIONAL +} + +--************************************************************** +-- +-- SS-Common-MAC-ehs-ReorderingQueue +-- +--************************************************************** + +SS-Common-MAC-ehs-ReorderingQueue ::= SEQUENCE +{ + common-MAC-ehs-ReorderingQueue Common-MAC-ehs-ReorderingQueue, + priority INTEGER (0..7) +} + +--************************************************************** +-- +-- SS-Common-MAC-ehs-ReorderingQueueList +-- +--************************************************************** + +SS-Common-MAC-ehs-ReorderingQueueList ::= SEQUENCE (SIZE(1..maxQueueIDs)) OF SS-Common-MAC-ehs-ReorderingQueue + + +--************************************************************** +-- +-- SS-DL-LogicalChannelMapping +-- If the macHeaderManipulation field is 'NormalMacHeader', then data transmitted on this logical channel shall have an appropriate MAC header added before it is sent to lower layers for transmission. +-- If the macHeaderManipulation field is 'OmitMacHeader', then data transmitted on this logical channel shall not have any MAC header information added, even if the logical channel type and mapping indicates that there should be a MAC header present. This allows the entire MAC PDU to be specified in the TTCN, so individual fields in the MAC header can be modified. +-- When used for DTCH mapping to MAC-d flow, rlc-SizeList shall choose "configured" according to the configured mAChsAddReconfQueue valules. +-- When the logical channel is MTCH, the logicalChannelIdentity shall be consistent with MBMS-LogicalChIdentity in MBMS-PTM-RBInformation-N and MBMS-PTM-RBInformation-C. +-- +--************************************************************** + +SS-DL-LogicalChannelMapping ::= SEQUENCE { + macHeaderManipulation MAC-HeaderManipulation, + dl-TransportChannelType SS-DL-TransportChannelType, + logicalChannelIdentity LogicalChannelIdentity, + logicalChannelType LogicalChannelType , + rlc-SizeList CHOICE { + allSizes NULL, + configured NULL, + explicitList RLC-SizeExplicitList + }, + mac-LogicalChannelPriority MAC-LogicalChannelPriority OPTIONAL +} + +--************************************************************** +-- +-- SS-DL-RLC-Mode +-- "dl-UM-outOfSeqDelivery" is present only for the DL-RLC entity connected to MCCH, and in the configuration with dl-UM-outOfSeqDelivery present the UM RLC can transmit RLC PDU containing SDU of ACCESS INFORMATION message out of sequence when it is necessary +-- +--************************************************************** + +SS-DL-RLC-Mode ::= SEQUENCE { + dl-PayloadSize PayloadSize OPTIONAL, + dl-RLCModeInfo UL-RLC-Mode, + dl-UM-RLC-LI-size DL-UM-RLC-LI-size OPTIONAL, -- only for UM RLC configuration + dl-UM-outOfSeqDelivery UM-RLC-OutOSeqDelivery-Info-r6 OPTIONAL, + dl-RLC-PDU-size CHOICE { + fixedSize OctetModeRLC-SizeInfoType1, + flexibleSize SS-FlexibleSize + } OPTIONAL +} + +--************************************************************** +-- +-- SS-FlexibleSize +-- +--************************************************************** +SS-FlexibleSize ::= SEQUENCE { + li-Size ENUMERATED { size7 (0), size15 (1)}, -- Size of length indicator + max-RLC-DataField-Size INTEGER (1..1503) OPTIONAL + -- Maximum size of data field of RLC PDU (25.322, 9.2.2.9 and 25.433, 9.2.1.38c) +} + +--************************************************************** +-- +-- SS-DL-TransportChannelType +-- +--************************************************************** + +SS-DL-TransportChannelType ::= ENUMERATED { + dch(0), + fach(1), + bch(2), + pch(3), + dsch(4), + hsdsch(5) -- Rel-5 or later +} + +--************************************************************** +-- +-- SS-DRX-MAC-Info +-- +--************************************************************** +SS-DRX-MAC-Info ::= SEQUENCE { + mac-InactivityThreshold MAC-InactivityThreshold, + mac-dtx-Cycle-2ms MAC-DTX-Cycle-2ms OPTIONAL, + mac-dtx-Cycle-10ms MAC-DTX-Cycle-10ms OPTIONAL, + timingInfo NewTiming +} + + +--************************************************************** +-- +-- SS-E-AGCH-Info-FDD +-- Rel-6 or later. +-- +--************************************************************** + +SS-E-AGCH-Info-FDD ::= CHOICE { + r6 SEQUENCE { + e-AGCHInfo E-AGCH-Information, + tti E-DCH-TTI, + e-AGCH-PowerOffset INTEGER (0..255), + -- Range and Step are FFS (25.433, 9.2.2.13If) + -- Offset relative to P-CPICH + e-RNTI-Primary E-RNTI OPTIONAL, + e-RNTI-Secondary E-RNTI OPTIONAL, + ss-DTX-Info DRX-Info OPTIONAL, + sttdIndicator BOOLEAN DEFAULT FALSE -- @sic R5-120613 sic@ + }, + r8 SEQUENCE { + e-AGCHInfo E-AGCH-Information-r8, + tti E-DCH-TTI, + e-AGCH-PowerOffset INTEGER (0..255), + -- Range and Step are FFS (25.433, 9.2.2.13If) + -- Offset relative to P-CPICH + e-RNTI-Primary E-RNTI OPTIONAL, + e-RNTI-Secondary E-RNTI OPTIONAL, + ss-DTX-Info DRX-Info OPTIONAL, + initialServingGrantValue INTEGER (0..37) OPTIONAL, + sttdIndicator BOOLEAN DEFAULT FALSE -- @sic R5-120613 sic@ + }, + relAspTypeExtension SEQUENCE{} -- Rel-10 or later @sic R5-130613 sic@ +} + +--************************************************************** +-- +-- SS-E-AGCH-Info-TDD +-- Rel-7 or later.SS-E-AGCH-Info in TTCN-2 +-- +--************************************************************** + +SS-E-AGCH-Info-TDD ::= CHOICE { + r7 SEQUENCE { + e-AGCH-ID-TDD INTEGER (0..255), + e-AGCHInfo E-AGCH-Information-r7, + e-AGCH-PowerOffset INTEGER (0..255), + -- Range and Step are FFS (25.433, 9.2.2.13If) + -- Offset relative to P-CPICH + maximum-E-AGCH-Power INTEGER (-350..150), + carrier-Frequency UARFCN OPTIONAL, + e-RNTI E-RNTI OPTIONAL, -- @sic R5w140013 sic@ + ss-DTX-Info DRX-Info OPTIONAL + }, + r8 SEQUENCE { + e-AGCH-ID-TDD INTEGER (0..255), + e-AGCHInfo E-AGCH-Information-r8, + e-AGCH-PowerOffset INTEGER (0..255), + -- Range and Step are FFS (25.433, 9.2.2.13If) + -- Offset relative to P-CPICH + maximum-E-AGCH-Power INTEGER (-350..150), + carrier-Frequency UARFCN OPTIONAL, + e-RNTI E-RNTI OPTIONAL, + ss-E-AGCH-DRX-Info E-AGCH-DRX-Info-TDD128 OPTIONAL --@sic R5w140013 sic@ + }, + relAspTypeExtension SEQUENCE{} -- Rel-10 or later @sic R5-134957 sic@ +} + +--************************************************************** +-- +-- SS-E-DPCH-Info +-- Rel-6 or later. +-- If there is an UL-DPCH configured in the cell the E-DPCH shall use the same scramblingCodeType and scramblingCode as the UL-DPCH +-- +--************************************************************** + +SS-E-DPCH-Info-r6OrLater ::= CHOICE { + r6 SEQUENCE { + e-DPCCH-Info E-DPCCH-Info, + e-DPDCH-Info E-DPDCH-Info, + scramblingCodeType ScramblingCodeType OPTIONAL, + scramblingCode UL-ScramblingCode OPTIONAL, + tti E-DCH-TTI OPTIONAL, + edch-PhysicalLayerCategory INTEGER (1..16) + }, + r7 SEQUENCE { + e-DPCCH-Info E-DPCCH-Info-r7, + e-DPDCH-Info E-DPDCH-Info-r7, + scramblingCodeType ScramblingCodeType OPTIONAL, + scramblingCode UL-ScramblingCode OPTIONAL, + tti E-DCH-TTI OPTIONAL, + edch-PhysicalLayerCategory INTEGER (1..16) OPTIONAL, + edch-PhysicalLayerCategory-extension INTEGER (7) OPTIONAL, + ul-16QAM-Settings UL-16QAM-Settings OPTIONAL + }, + r8 SEQUENCE { + e-DPCCH-Info E-DPCCH-Info-r7, + e-DPDCH-Info E-DPDCH-Info-r8, + scramblingCodeType ScramblingCodeType OPTIONAL, + scramblingCode UL-ScramblingCode OPTIONAL, + tti E-DCH-TTI OPTIONAL, + edch-PhysicalLayerCategory INTEGER (1..16) OPTIONAL, + edch-PhysicalLayerCategory-extension INTEGER (7) OPTIONAL, + ul-16QAM-Settings UL-16QAM-Settings OPTIONAL, + s-offset INTEGER (0..9) OPTIONAL -- Used for enhFACH UL + }, + r9 SEQUENCE { -- @sic R5s110175 sic@ + e-DPCCH-Info E-DPCCH-Info-r7, + e-DPDCH-Info E-DPDCH-Info-r8, + scramblingCodeType ScramblingCodeType OPTIONAL, + scramblingCode UL-ScramblingCode OPTIONAL, + tti E-DCH-TTI OPTIONAL, + edch-PhysicalLayerCategory INTEGER (1..16) OPTIONAL, + edch-PhysicalLayerCategory-extension INTEGER (7) OPTIONAL, + edch-PhysicalLayerCategory-extension2 INTEGER (8..9) OPTIONAL, + ul-16QAM-Settings UL-16QAM-Settings OPTIONAL, + s-offset INTEGER (0..9) OPTIONAL -- Used for enhFACH UL + }, + relAspTypeExtension SEQUENCE{} -- Rel-10 or later @sic R5-130613 sic@ + } + +--************************************************************** +-- +-- SS-E-DCH-Info-r7 +-- Rel-7 or later. +-- TDD +--************************************************************** + +SS-E-DCH-Info-r7 ::= SEQUENCE { + e-RUCCH-Info E-RUCCH-Info OPTIONAL, + e-PUCH-Info SS-E-PUCH-Info OPTIONAL +} + +--************************************************************** +-- +-- SS-E-PUCH-Info +-- Rel-7 or later. +-- TDD +--************************************************************** + +SS-E-PUCH-Info ::= SEQUENCE { + lTGI-Presence BOOLEAN, + e-TFCS-Info E-TFCS-Info, + snpl-ReportType ENUMERATED {type1(0), type2(1)}, + prxBASEdes INTEGER (-112..-50 ), + beaconPLEst BOOLEAN OPTIONAL, + tpc-StepSize TPC-StepSizeTDD, + pebase-PowerControlGAP PowerControlGAP OPTIONAL, + ul-SynchronisationParameters UL-SynchronisationParameters-r4 OPTIONAL, + minimum-Allowed-Code-Rate INTEGER (0..63 ), + maximum-Allowed-Code-Rate INTEGER (0..63 ), + maximumNumOfRetransSchedInfo INTEGER (0..15 ), + retransTimerForSchedInfo ENUMERATED {ms10(0), ms15(1), ms20(2), ms25(3), ms30(4), ms35(5), ms40(6), ms45(7), ms50(8), ms55(9), ms60(10), ms65(11), ms70(12), ms75(13), ms80(14), ms85(15), ms90(16), ms95(17), ms100(18), ms110(19), ms120(20), ms140(21), ms160(22), ms200(23), ms240(24), ms280(25), ms320(26), ms400(27), ms480(28), ms560(29)}, + powerOffsetForSchedInfo INTEGER (0..6 ) OPTIONAL, + e-DCH-phyLayCategory INTEGER (1..6 ) OPTIONAL, + e-PUCH-TS-Information-per-UARFCN SEQUENCE (SIZE (1..maxTS-LCR-1)) OF SS-E-PUCH-Timeslot-Info, + carrier-Frequency UARFCN OPTIONAL +} + +--************************************************************** +-- +-- SS-E-PUCH-Timeslot-Info +-- Rel-7 or later TDD. +-- +--************************************************************** +SS-E-PUCH-Timeslot-Info ::= SEQUENCE { + timeslotNumber TimeslotNumber-LCR-r4, + midambleAllocationMode CHOICE + { + defaultMidamble NULL, + ueSpecificMidamble INTEGER (0..15 ) + }, + midambleConfiguration INTEGER (1..8 ), + channelisation-Code UL-TS-ChannelisationCode + } + +--************************************************************** +-- +-- SS-E-HICH-Info +-- Rel-6 or later. +-- +--************************************************************** + +SS-E-HICH-Info ::= SEQUENCE { + e-HICHInfo E-HICH-Information OPTIONAL, -- @sic R5s110175 sic@ + e-HICHInfoCommonEDCH E-HICH-Information-CommonEdch OPTIONAL, -- @sic R5s110175 sic@ + tti E-DCH-TTI, + e-HICH-PowerOffset INTEGER (0..255), + -- PowerOffset = -32 + offset * 0.25 + -- Unit dB, Range -32dB .. +31.75dB, Step +0.25dB + -- (25.433, 9.2.2.13Id), offset relative to P-CPICH + sttdIndicator BOOLEAN DEFAULT FALSE, -- @sic R5-120613 sic@ + relAspTypeExtension SS-E-HICH-Info-r10OrLaterExtensionType OPTIONAL -- Rel-10 or later @sic R5-130613 R5-134957 sic@ +} + +--************************************************************** +-- +-- SS-E-HICH-Info-TDD +-- Rel-7 or later. SS-E-HICH-Info in TTCN-2 +-- +--************************************************************** + +SS-E-HICH-Info-TDD ::= SEQUENCE { + n-E-HICH INTEGER (4..15 ), + maximum-E-HICH-Power INTEGER (-350..150), + e-HICHInfoList SS-E-HICH-Info-List +} + +--************************************************************** +-- +-- SS-E-HICH-Info-List +-- Rel-7 or later. +-- TDD +--************************************************************** + +SS-E-HICH-Info-List ::= SEQUENCE (SIZE (1..maxNumE-HICH ) ) OF + SS-E-HICH-Info-LCR + +--************************************************************** +-- +-- SS-E-HICH-Info-LCR +-- Rel-7 or later. +-- TDD +--************************************************************** + +SS-E-HICH-Info-LCR ::= SEQUENCE { + e-HICH-ID-TDD INTEGER (0..255), + e-HICH-Type ENUMERATED {scheduled(0), non-scheduled(1)}, + e-HICHInfo E-HICH-Information-LCR, + carrier-Frequency UARFCN OPTIONAL, + e-HICH-PowerOffset INTEGER (0..255) + -- PowerOffset = -32 + offset * 0.25 + -- Unit dB, Range -32dB .. +31.75dB, Step +0.25dB + -- (25.433, 9.2.2.13Id), offset relative to P-CPICH +} + +--************************************************************** +-- +-- SS-E-HICH-Info-r10OrLaterExtensionType +-- Rel-11 or later. +-- Only one of e-HICHInfo, e-HICHInfoCommonEDCH or e-HICHInfo-r11 can be present +--************************************************************** +SS-E-HICH-Info-r10OrLaterExtensionType ::= CHOICE { + rel11-AspExt SEQUENCE { + e-HICHInfo-r11 E-HICH-Information-r11 OPTIONAL + } +} + + +--************************************************************** +-- +-- SS-E-RGCH-Info +-- Rel-6 or later. +-- Presence of ss-DTX-Info indicates DL-DRX is enabled and SS shall transmit any requested RGCH only in occasions when UE is going to listen. +-- Only one of e-RGCHInfo and e-RGCHInfoCommonEDCH can be present +--************************************************************** + +SS-E-RGCH-Info ::= SEQUENCE { + e-RGCHInfo E-RGCH-Information OPTIONAL, -- @sic R5s110175 sic@ + e-RGCHInfoCommonEDCH E-RGCH-Information-CommonEdch OPTIONAL, -- @sic R5s110175 sic@ + tti E-DCH-TTI , + e-RGCH-PowerOffset INTEGER (0..255), + -- Range and Step are FFS (25.433, 9.2.2.13Ie) + -- Offset relative to P-CPICH, + ss-DTX-Info DRX-Info OPTIONAL, + sttdIndicator BOOLEAN DEFAULT FALSE, -- @sic R5-120613 sic@ + relAspTypeExtension SEQUENCE{} OPTIONAL -- Rel-10 or later @sic R5-130613 sic@ +} + +--************************************************************** +-- +-- SS-IntegrityProtActivationTimeInfo +-- Omitting rrc-MessageSequenceNumber means activation time set to "now". +-- +--************************************************************** + +SS-IntegrityProtActivationTimeInfo ::= SEQUENCE +{ + rb-Identity INTEGER (-31..32), + rrc-MessageSequenceNumber RRC-MessageSequenceNumber OPTIONAL +} + +--************************************************************** +-- +-- SS-MAC-ehs-AddReconfReordQ +-- +--************************************************************** + +SS-MAC-ehs-AddReconfReordQ ::= SEQUENCE +{ + mAC-ehs-AddReconfReordQ MAC-ehs-AddReconfReordQ, + priority INTEGER (0..7) +} + +--************************************************************** +-- +-- SS-MAC-ehs-AddReconfReordQ-r9 +-- +--************************************************************** + +SS-MAC-ehs-AddReconfReordQ-r9 ::= SEQUENCE +{ + mAC-ehs-AddReconfReordQ MAC-ehs-AddReconfReordQ-r9, + priority INTEGER (0..7) +} + +--************************************************************** +-- +-- SS-MAC-ehs-AddReconfReordQ-r11 +-- Applicable Rel-11or later +-- The priority of PriorityQueue shall set according to the priority of logical channels which is mapped on to this priority queue. +-- NOTE: The range of priority of PriorityQueue is from 0 to 7 and 0 is the lowest priority. +--************************************************************** +SS-MAC-ehs-AddReconfReordQ-r11 ::= SEQUENCE { + mAC-ehs-AddReconfReordQ MAC-ehs-AddReconfReordQ-r11, + priority INTEGER(0..7) +} + + +--************************************************************** +-- +-- SS-MAC-ehs-AddReconfReordQueueList +-- +--************************************************************** + +SS-MAC-ehs-AddReconfReordQueueList ::= SEQUENCE (SIZE (1..maxQueueIDs)) OF SS-MAC-ehs-AddReconfReordQ + +--************************************************************** +-- +-- SS-MAC-ehs-AddReconfReordQueueList-r9 +-- +--************************************************************** + +SS-MAC-ehs-AddReconfReordQueueList-r9 ::= SEQUENCE (SIZE (1..maxQueueIDs)) OF SS-MAC-ehs-AddReconfReordQ-r9 + +--************************************************************** +-- +-- SS-MAC-ehs-AddReconfReordQueueList-r11 +-- Applicable Rel-11 or later +--************************************************************** + +SS-MAC-ehs-AddReconfReordQueueList-r11 ::= SEQUENCE (SIZE (1..maxQueueIDs)) OF SS-MAC-ehs-AddReconfReordQ-r11 + +--************************************************************** +-- +-- SS-MAC-hs-AddReconfQueue +-- Applicable Rel-5 or later. +-- When writing TTCN constraints the TTCN writer shall set the priority of PriorityQueue in this object correctly acoording to the priority of logical channels which is mapped on to this priority queue. +-- And please note that : the range of priority of PriorityQueue is from 0 to 7 and 0 is the lowest priority. +-- +--************************************************************** + +SS-MAC-hs-AddReconfQueue ::= SEQUENCE { + mAChsAddReconfQueue MAC-hs-AddReconfQueue, + logicalChannelList SEQUENCE OF LogicalChannelIdentity, + -- logical channels mapping onto the priority queue + -- which is specified in maChsAddReconfQueue + priority INTEGER(0..7), + discardTimer ENUMERATED { v20(0),v40(1),v60(2),v80(3),v100(4), + v120(5),v140(6),v160(7),v180(8),v200(9), + v250(10),v300(11),v400(12),v500(13), + v750(14),v1000(15),v1250(16),v1500(17), + v1750(18),v2000(19),v2500(20),v3000(21), + v3500(22),v4000(23),v4500(24),v5000(25), + v7500(26) + } OPTIONAL +} + +--************************************************************** +-- +-- SS-RLC-Info +-- UL and DL have been swapped intentionally in this type definition. This is to maximize re-use of the type definitions in 3GPP TS 25.331 which are intended to configure a UE, where UL is transmission, and DL is reception. For the SS, UL is reception, and DL is transmission. +-- For example, consider configuring a DL AM RLC entity (transmitter) in the SS. The transmission parameters to be configured include PollingInformation, Transmission-RLC-Discard etc. If the DL-AM-RLC-Mode type definition is used to configure this entity, it is only possible to configure reception parameters such as StatusInformation, and receiving window size. +-- By swapping UL and DL, it is possible to configure the DL AM RLC entity using the existing type definition UL-AM-RLC-Info, which contains all of the required transmission parameters. +-- +--************************************************************** + +SS-RLC-Info ::= SEQUENCE { + sS-ul-RLC-Mode DL-RLC-Mode OPTIONAL, + sS-dl-RLC-Mode SS-DL-RLC-Mode OPTIONAL, + rlc-OneSidedReEst BOOLEAN DEFAULT FALSE, + altE-bitInterpretation ENUMERATED {false (0), true (1)} DEFAULT false, + useSpecialValueOfHEField ENUMERATED {false (0), true (1)} DEFAULT false, + uM-SN-DeliveryMode ENUMERATED { nonConfigured(0), configured(1)} DEFAULT nonConfigured +} + +--************************************************************** +-- +-- SS-RLC-Info-TDD +-- UL and DL have been swapped intentionally in this type definition. This is to maximize re-use of the type definitions in 3GPP TS 25.331 which are intended to configure a UE, where UL is transmission, and DL is reception. For the SS, UL is reception, and DL is transmission. +-- For example, consider configuring a DL AM RLC entity (transmitter) in the SS. The transmission parameters to be configured include PollingInformation, Transmission-RLC-Discard etc. If the DL-AM-RLC-Mode type definition is used to configure this entity, it is only possible to configure reception parameters such as StatusInformation, and receiving window size. +-- By swapping UL and DL, it is possible to configure the DL AM RLC entity using the existing type definition UL-AM-RLC-Info, which contains all of the required transmission parameters. +-- +--************************************************************** + +SS-RLC-Info-TDD ::= SEQUENCE { + sS-ul-RLC-Mode DL-RLC-Mode OPTIONAL, + sS-ul-PayloadSize PayloadSize OPTIONAL, + sS-dl-RLC-Mode SS-DL-RLC-Mode OPTIONAL, + rlc-OneSidedReEst BOOLEAN DEFAULT FALSE, + altE-bitInterpretation ENUMERATED {false (0), true (1)} DEFAULT false, + useSpecialValueOfHEField ENUMERATED {false (0), true (1)} DEFAULT false, + uM-SN-DeliveryMode ENUMERATED { nonConfigured(0), configured(1)} DEFAULT nonConfigured + +} + +--************************************************************** +-- +-- SS-RLC-Info-r8OrLater +-- Applicable for r8OrLater +-- UL and DL have been swapped intentionally in this type definition. This is to maximize re-use of the type definitions in 3GPP TS 25.331 which are intended to configure a UE, where UL is transmission, and DL is reception. For the SS, UL is reception, and DL is transmission. +-- For example, consider configuring a DL AM RLC entity (transmitter) in the SS. The transmission parameters to be configured include PollingInformation, Transmission-RLC-Discard etc. If the DL-AM-RLC-Mode type definition is used to configure this entity, it is only possible to configure reception parameters such as StatusInformation, and receiving window size. +-- By swapping UL and DL, it is possible to configure the DL AM RLC entity using the existing type definition UL-AM-RLC-Info, which contains all of the required transmission parameters. +-- +--************************************************************** + +SS-RLC-Info-r8OrLater ::= CHOICE { +r8 SEQUENCE { + sS-ul-RLC-Mode DL-RLC-Mode-r7 OPTIONAL, + sS-dl-RLC-Mode SS-DL-RLC-Mode OPTIONAL, + rlc-OneSidedReEst BOOLEAN DEFAULT FALSE, + altE-bitInterpretation ENUMERATED {false (0), true (1)} DEFAULT false, + useSpecialValueOfHEField ENUMERATED {false (0), true (1)} DEFAULT false, + uM-SN-DeliveryMode ENUMERATED { nonConfigured(0), configured(1)} DEFAULT nonConfigured +}, +relAspTypeExtension SS-RLC-Info-r10OrLaterExtensionType -- Rel-10 or later @sic R5-130613 R5-134957 sic@ +} + +--************************************************************** +-- +-- SS-RLC-Info-r8OrLater-TDD +-- Applicable for r8OrLater +-- UL and DL have been swapped intentionally in this type definition. This is to maximize re-use of the type definitions in 3GPP TS 25.331 which are intended to configure a UE, where UL is transmission, and DL is reception. For the SS, UL is reception, and DL is transmission. +-- For example, consider configuring a DL AM RLC entity (transmitter) in the SS. The transmission parameters to be configured include PollingInformation, Transmission-RLC-Discard etc. If the DL-AM-RLC-Mode type definition is used to configure this entity, it is only possible to configure reception parameters such as StatusInformation, and receiving window size. +-- By swapping UL and DL, it is possible to configure the DL AM RLC entity using the existing type definition UL-AM-RLC-Info, which contains all of the required transmission parameters. +-- +--************************************************************** + +SS-RLC-Info-r8OrLater-TDD ::= CHOICE { +r8 SEQUENCE { + sS-ul-RLC-Mode DL-RLC-Mode-r7 OPTIONAL, + sS-ul-PayloadSize PayloadSize OPTIONAL, + sS-dl-RLC-Mode SS-DL-RLC-Mode OPTIONAL, + rlc-OneSidedReEst BOOLEAN DEFAULT FALSE, + altE-bitInterpretation ENUMERATED {false (0), true (1)} DEFAULT false, + useSpecialValueOfHEField ENUMERATED {false (0), true (1)} DEFAULT false, + uM-SN-DeliveryMode ENUMERATED { nonConfigured(0), configured(1)} DEFAULT nonConfigured +}, +relAspTypeExtension SS-RLC-Info-r10OrLaterExtensionType -- Rel-10 or later @sic R5-134957 sic@ +} + +--************************************************************** +-- +-- SS-RLC-Info-r10OrLaterExtensionType +-- Rel-11 or later +--************************************************************** +SS-RLC-Info-r10OrLaterExtensionType ::= CHOICE { + rel11-AspExt SEQUENCE { -- Rel-11 or later + sS-ul-RLC-Mode DL-RLC-Mode-r11 OPTIONAL, + sS-dl-RLC-Mode SS-DL-RLC-Mode OPTIONAL, + rlc-OneSidedReEst BOOLEAN DEFAULT FALSE, + altE-bitInterpretation ENUMERATED {false (0), true (1)} DEFAULT false, + -- applicable only for UM RLC mode + useSpecialValueOfHEField ENUMERATED {false (0), true (1)} DEFAULT false, + -- applicable only for AM RLC mode + uM-SN-DeliveryMode ENUMERATED { nonConfigured(0), configured(1)} + DEFAULT nonConfigured + } +} + +--************************************************************** +-- +-- SS-UL-DPCCH-DRX-Info +-- +--************************************************************** +SS-UL-DPCCH-DRX-Info ::= SEQUENCE { + ss-DRX-Info DTX-Info OPTIONAL, + + dtx-DRX-timingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + + uplink-DPCCHSlotFormatInformation Uplink-DPCCH-Slot-Format-Information +} + +--************************************************************** +-- +-- SS-UL-LogicalChannelMapping +-- If the macHeaderManipulation field is 'normalMacHeader', then data received on the transport channel supporting this logical channel shall have it's MAC header inspected to determine the appropriate routing, and removed as normal. The MAC SDU shall be passed to the appropriate logical channel. +-- If the macHeaderManipulation field field is 'OmitMacHeader', then data received on the transport channel supporting this logical channel shall have it's MAC header inspected to determine the appropriate routing, but the MAC layer shall not remove the MAC header. Thus the entire MAC PDU shall be passed to the appropriate logical channel, and the MAC header can be checked by the TTCN. +-- +--************************************************************** + +SS-UL-LogicalChannelMapping ::= SEQUENCE { + macHeaderManipulation MAC-HeaderManipulation, + ul-TransportChannelType SS-UL-TransportChannelType, + logicalChannelIdentity LogicalChannelIdentity, + logicalChannelType LogicalChannelType +} + +--************************************************************** +-- +-- SS-UL-LogicalChannelMapping-TDD +-- If the macHeaderManipulation field is 'normalMacHeader', then data received on the transport channel supporting this logical channel shall have it's MAC header inspected to determine the appropriate routing, and removed as normal. The MAC SDU shall be passed to the appropriate logical channel. +-- If the macHeaderManipulation field field is 'OmitMacHeader', then data received on the transport channel supporting this logical channel shall have it's MAC header inspected to determine the appropriate routing, but the MAC layer shall not remove the MAC header. Thus the entire MAC PDU shall be passed to the appropriate logical channel, and the MAC header can be checked by the TTCN. +-- @sic R5-134957 R5w130320: TDD TTCN-2/3 differences sic@ +-- +--************************************************************** + +SS-UL-LogicalChannelMapping-TDD ::= SEQUENCE { + macHeaderManipulation MAC-HeaderManipulation, + ul-TransportChannelType SS-UL-TransportChannelType-TDD, --@sic R5-134957 R5w130320: TDD TTCN-2/3 differences sic@ + logicalChannelIdentity LogicalChannelIdentity, + logicalChannelType LogicalChannelType +} + +--************************************************************** +-- +-- SS-UL-TransportChannelType +-- +--************************************************************** + +SS-UL-TransportChannelType ::= ENUMERATED { + dch(0), + rach(1), + cpch(2), + usch(3), + edch (4) -- Rel-6 or later +} + +--************************************************************** +-- +-- SS-UL-TransportChannelType-TDD +-- @sic R5-134957 R5w130320: TDD TTCN-2/3 differences sic@ +-- +--************************************************************** +SS-UL-TransportChannelType-TDD ::= ENUMERATED { + dch(0), + rach(1), + usch(2), + edch (3) -- Rel-6 or later +} + + +--************************************************************** +-- +-- SecondaryCCPCHInfo-FDD +-- The range for powerOffsetOfTFCI-PO1 and powerOffsetOfPILOT-PO3 is 0 dB to 6 dB, 0.25 dB per step. +-- mbms-softCombTimingOffset is present when L1-combination applies +-- When configuring SCCPCH for MBMS "positionFixedOrFlexible" shall be set to Flexible, and sCCPCHSlotFormat shall be chosen to the one without pilot bits +-- +--************************************************************** + +SecondaryCCPCHInfo-FDD ::= SEQUENCE { + scramblingCode INTEGER(0..15), + dl-ChannelizationCode SF256-AndCodeNumber, + sCCPCHSlotFormat SCCPCHSlotFormat, + timingOffset INTEGER (0..149), + positionFixedOrFlexible PositionFixedOrFlexible, + sttd-Indicator BOOLEAN, + dl-TxPower DL-TxPower, + powerOffsetOfTFCI-PO1 INTEGER (0..24), + powerOffsetOfPILOT-PO3 INTEGER (0..24), + mbms-softCombTimingOffset MBMS-SoftComb-TimingOffset OPTIONAL --Rel-6 or later + -- timeSlot TimeSlot OPTIONAL, + -- burstType BurstType OPTIONAL, + -- midambleShift MidambleShift OPTIONAL, + -- offset Offset OPTIONAL, + -- repetitionPeriod RepetitionPeriod OPTIONAL, + -- repetitionLength RepetitionLength OPTIONAL, + -- tFCIPresence TFCIPresence OPTIONAL, +} + +--************************************************************** +-- +-- SecondaryCCPCHInfo-TDD +-- The range for powerOffsetOfTFCI-PO1 and powerOffsetOfPILOT-PO3 is 0 dB to 6 dB, 0.25 dB per step. +-- mbms-softCombTimingOffset is present when L1-combination applies +-- When configuring SCCPCH for MBMS "positionFixedOrFlexible" shall be set to Flexible, and sCCPCHSlotFormat shall be chosen to the one without pilot bits +-- +--************************************************************** + +SecondaryCCPCHInfo-TDD ::= SEQUENCE { + tstd-Indicator ENUMERATED {notApplied(0),applied(1)}, + sctd-Indicator ENUMERATED {notApplied(0),applied(1)}, + dl-TxPower DL-TxPower, + commonTimeSlotInfo CommonTimeslotInfoSCCPCH, + channelisationCode SCCPCH-ChannelisationCodeList, + individualTimeslotInfo IndividualTimeslotInfo-LCR-r4, + powerOffsetOfTFCI-PO1 INTEGER (0..24) OPTIONAL +} + +--************************************************************** +-- +-- SecondaryCPICHInfo +-- +--************************************************************** + +SecondaryCPICHInfo ::= SEQUENCE { + scramblingCode INTEGER(0..63), + dl-ChannelizationCode SF512-AndCodeNumber, + dl-TxPower DL-TxPower, + mimoAntenna MimoAntennaConfigType DEFAULT noMimo +} + +--************************************************************** +-- +-- SecondarySCHInfo +-- +--************************************************************** + +SecondarySCHInfo ::= SEQUENCE { + tstdIndicator BOOLEAN, + dl-TxPower DL-TxPower +} + +--************************************************************** +-- +-- SecurityInfo +-- The integrityKey is not applicable to MAC +-- Detailed comments: +-- When the SS receives SecuritiyInfo, the SS first stores the contents. The SecurityInfo contents is not activated ion of the contents follows until receiving the subsequent ASP, CRLC-Ciphering-Activate-REQ, CMAC-Ciphering-Activate-REQ or CRLC-Integrity-Activate-REQ. Omitted fields of SecurityInfo shall not be affected by the subsequent ASP at the activation time.EXAMPLE: Omitting of startValue indicates not to re-initialize the relevant COUNT?C or COUNT-I, omitting of cipheringKey indicates that the current ciphering key is valid.. +-- +--************************************************************** + +SecurityInfo ::= SEQUENCE { + cn-DomainIdentity CN-DomainIdentity, + startValue START-Value OPTIONAL, + cipheringKey BIT STRING (SIZE (128)) OPTIONAL, + integrityKey BIT STRING (SIZE (128)) OPTIONAL, + gsmCipheringKey BIT STRING (SIZE (64)) OPTIONAL +} + +--************************************************************** +-- +-- SegmentsOfSysInfoBlock +-- The structure holding the segments of a MIB/SIB/SB, maximum number of segments is 16. +-- +--************************************************************** + +SegmentsOfSysInfoBlock ::= SEQUENCE +{ + segCount INTEGER (1..16), + seg1 BIT STRING (SIZE (1..226)), + seg2 BIT STRING (SIZE (1..222)) OPTIONAL, + seg3 BIT STRING (SIZE (1..222)) OPTIONAL, + seg4 BIT STRING (SIZE (1..222)) OPTIONAL, + seg5 BIT STRING (SIZE (1..222)) OPTIONAL, + seg6 BIT STRING (SIZE (1..222)) OPTIONAL, + seg7 BIT STRING (SIZE (1..222)) OPTIONAL, + seg8 BIT STRING (SIZE (1..222)) OPTIONAL, + seg9 BIT STRING (SIZE (1..222)) OPTIONAL, + seg10 BIT STRING (SIZE (1..222)) OPTIONAL, + seg11 BIT STRING (SIZE (1..222)) OPTIONAL, + seg12 BIT STRING (SIZE (1..222)) OPTIONAL, + seg13 BIT STRING (SIZE (1..222)) OPTIONAL, + seg14 BIT STRING (SIZE (1..222)) OPTIONAL, + seg15 BIT STRING (SIZE (1..222)) OPTIONAL, + seg16 BIT STRING (SIZE (1..222)) OPTIONAL +} + +--************************************************************** +-- +-- SupportFlag +-- The default value noNeed indicates that the SS does not perform the operation mentioned in CRLC-ProhibitRLC-Ack-REQ, but performs the suspension / resume of UL RLC PDU data. +-- If the non default values are taken, the SS has either prohibited, or continued acknowledging RLC SDUs. +-- +--************************************************************** + +SupportFlag ::= ENUMERATED {ackProhibited(0), ackContinued(1), noNeed (2)} + +--************************************************************** +-- +-- Tcell +-- Timing offset between reference channel and this channel ( unit : 256 chips ) +-- +--************************************************************** + +Tcell ::= INTEGER (0..38399) + +--************************************************************** +-- +-- TrCHInfo +-- The same TFCS information should be provided to the PHY and MAC layers at all times. When a CMAC-Config-REQ is used to configure the MAC layer, a corresponding CPHY-TrCH-Config-REQ should be sent to the PHY layer to ensure that the configuration is consistent. +-- For MAC-hs configuration: +-- When ulconnectedTrCHList, ulTFCS, dlconnectedTrCHList and dlTFCS are omitted this ASP configures an MAC-hs entity. +-- +--************************************************************** + +TrCHInfo ::= SEQUENCE +{ + ulconnectedTrCHList SEQUENCE (SIZE (1..maxulTrCH)) OF SEQUENCE { + trchid TransportChannelIdentity, + transportChannelInfo CommonOrDedicatedTFS + } OPTIONAL, + ulTFCS TFCS OPTIONAL, + dlconnectedTrCHList SEQUENCE (SIZE (1..maxdlTrCH)) OF SEQUENCE { + trchid TransportChannelIdentity, + transportChannelInfo CommonOrDedicatedTFS + } OPTIONAL, + dlTFCS TFCS OPTIONAL, + hsDSCHMacdFlows HS-DSCHMACdFlows OPTIONAL, -- Rel-5 or later + ehs-DSCH-Flows EHS-DSCH-Flows OPTIONAL, -- Rel-7 or later + ehs-DSCH-CommonFlows EHS-DSCH-CommonFlows OPTIONAL, -- Rel-7 or later + ehs-DSCH-Flows-r9 EHS-DSCH-Flows-r9 OPTIONAL, -- Rel-9 or later @sic R5s110175 sic@ + relAspTypeExtension TrCHInfo-r10OrLaterExtensionType OPTIONAL -- Rel-10 or later @sic R5-130613 R5-134957 sic@ +} + +--************************************************************** +-- +-- TrCHInfo-TDD +-- The same TFCS information should be provided to the PHY and MAC layers at all times. When a CMAC-Config-REQ is used to configure the MAC layer, a corresponding CPHY-TrCH-Config-REQ should be sent to the PHY layer to ensure that the configuration is consistent. +-- For MAC-hs configuration: +-- When ulconnectedTrCHList, ulTFCS, dlconnectedTrCHList and dlTFCS are omitted this ASP configures an MAC-hs entity. +-- +--************************************************************** + +TrCHInfo-TDD ::= SEQUENCE +{ + ulconnectedTrCHList SEQUENCE (SIZE (1..maxulTrCH)) OF SEQUENCE { + trchid TransportChannelIdentity, + transportChannelInfo CommonOrDedicatedTFS-TDD + } OPTIONAL, + ulTFCS TFCS OPTIONAL, + dlconnectedTrCHList SEQUENCE (SIZE (1..maxdlTrCH)) OF SEQUENCE { + trchid TransportChannelIdentity, + transportChannelInfo CommonOrDedicatedTFS-TDD + } OPTIONAL, + dlTFCS TFCS OPTIONAL, + hsDSCHMacdFlows HS-DSCHMACdFlows-TDD OPTIONAL, -- Rel-5 or later + ehs-DSCH-Flows EHS-DSCH-Flows OPTIONAL, -- Rel-7 or later + ehs-DSCH-CommonFlows EHS-DSCH-CommonFlows OPTIONAL, -- Rel-7 or later + ehs-DSCH-Flows-r9 EHS-DSCH-Flows-r9 OPTIONAL, -- Rel-9 or later + relAspTypeExtension SEQUENCE {} OPTIONAL -- Rel-10 or later @sic R5-130613 sic@ + +} + +--************************************************************** +-- +-- TrCHInfo-r10OrLaterExtensionType +-- Rel-11 or later +-- For rel-11 MAC-ehs configuration: +-- When ulconnectedTrCHList, ulTFCS, dlconnectedTrCHList and dlTFCS are omitted and ehs-DSCH-Flows or E-HS-DSCH-Common Flows or ehs-DSCH-Flows-r11 is present this ASP configures an MAC-ehs entity. +-- Only one of hsDSCHMacdFlows or ehs-DSCH-Flows or ehs-DSCH-Flows-r9 or ehs-DSCH-Flows-r11 can be present. +-- +--************************************************************** +TrCHInfo-r10OrLaterExtensionType ::= CHOICE { + rel11-AspExt SEQUENCE { -- Rel-11 or later + ehs-DSCH-Flows-r11 EHS-DSCH-Flows-r11 OPTIONAL + } +} + +--************************************************************** +-- +-- TrCH-LogCHMappingList +-- maxLogCHperTrCH = 8 +-- +--************************************************************** + +TrCH-LogCHMappingList ::= SEQUENCE (SIZE (1..maxLogCHperTrCH)) OF TrCH-LogicalChannelMapping + +--************************************************************** +-- +-- TrCH-LogCHMappingList-TDD +-- maxLogCHperTrCH = 8 +-- @sic R5-134957: TDD TTCN-2/3 differences sic@ +-- +--************************************************************** + +TrCH-LogCHMappingList-TDD ::= SEQUENCE (SIZE (1..maxLogCHperTrCH)) OF TrCH-LogicalChannelMapping-TDD + +--************************************************************** +-- +-- TrCH-LogCHMappingList1 +-- maxulTrCH = maxdlTrCH = 16 +-- dlconnectedMACdFlows is used for MAC-hs and dlconnectedMAC-ehsFlows for MAC-ehs configurations in dedicated. +-- dlconnectedMAC-ehsCommonFlow is used for MAC-ehs in Common state. For BCCH and PCCH in common state, the mac-ehs-QueueId is omitted, no reordering is applied and the TSN and SI fields are always set to zero (according to 3GPP TS 25.321 [17], subclauses 9.1.4 and 11.6.4.4) +-- dlconnectedMAC-ehsFlowsDC is used when dual cell or 4C-HSDPA is activated. +-- +--************************************************************** + +TrCH-LogCHMappingList1 ::= SEQUENCE +{ + ulconnectedTrCHList SEQUENCE (SIZE (1..maxulTrCH)) OF SEQUENCE { + trchid TransportChannelIdentity, + trCH-LogCHMappingList TrCH-LogCHMappingList} OPTIONAL, + dlconnectedTrCHList SEQUENCE (SIZE (1..maxdlTrCH)) OF SEQUENCE { + trchid TransportChannelIdentity, + trCH-LogCHMappingList TrCH-LogCHMappingList} OPTIONAL, + dlconnectedMACdFlows SEQUENCE (SIZE (1..8)) OF SEQUENCE { + mac-dFlowId MAC-d-FlowIdentity, + trCH-LogCHMappingList TrCH-LogCHMappingList + } OPTIONAL, -- Rel-5 or later + dlconnectedMAC-ehsFlows SEQUENCE (SIZE (1..8)) OF SEQUENCE { + mac-ehs-QueueId MAC-ehs-QueueId, + trCH-LogCHMappingList TrCH-LogCHMappingList + } OPTIONAL, -- Rel-7 or later + dlconnectedMAC-ehsCommonFlows SEQUENCE (SIZE (1..8)) OF SEQUENCE { + mac-ehs-QueueId MAC-ehs-QueueId OPTIONAL, + trCH-LogCHMappingList TrCH-LogCHMappingList + } OPTIONAL, -- Rel-7 or later + dlconnectedMAC-ehsFlowsDC SEQUENCE (SIZE (1..8)) OF SEQUENCE { + mac-ehs-QueueId MAC-ehs-QueueId, -- @sic R5-112477 sic@ + trCH-LogCHMappingList TrCH-LogCHMappingList + } OPTIONAL, -- Rel-8 or later @sic R5-110104 sic@ + relAspTypeExtension SEQUENCE{} OPTIONAL -- Rel-10 or later @sic R5-130613 sic@ +} + +--************************************************************** +-- +-- TrCH-LogCHMappingList1-TDD +-- maxulTrCH = maxdlTrCH = 16 +-- dlconnectedMACdFlows is used for MAC-hs and dlconnectedMAC-ehsFlows for MAC-ehs configurations in dedicated. +-- dlconnectedMAC-ehsCommonFlow is used for MAC-ehs in Common state. For BCCH and PCCH in common state, the mac-ehs-QueueId is omitted, no reordering is applied and the TSN and SI fields are always set to zero (according to 3GPP TS 25.321 [17], subclauses 9.1.4 and 11.6.4.4) +-- dlconnectedMAC-ehsFlowsDC is used when dual cell or 4C-HSDPA is activated. +-- @sic R5-134957: TDD TTCN-2/3 differences sic@ +-- +--************************************************************** +TrCH-LogCHMappingList1-TDD ::= SEQUENCE +{ + ulconnectedTrCHList SEQUENCE (SIZE (1..maxulTrCH)) OF SEQUENCE { + trchid TransportChannelIdentity, + trCH-LogCHMappingList TrCH-LogCHMappingList-TDD} OPTIONAL, + dlconnectedTrCHList SEQUENCE (SIZE (1..maxdlTrCH)) OF SEQUENCE { + trchid TransportChannelIdentity, + trCH-LogCHMappingList TrCH-LogCHMappingList-TDD} OPTIONAL, + dlconnectedMACdFlows SEQUENCE (SIZE (1..8)) OF SEQUENCE { + mac-dFlowId MAC-d-FlowIdentity, + trCH-LogCHMappingList TrCH-LogCHMappingList-TDD + } OPTIONAL, -- Rel-5 or later + dlconnectedMAC-ehsFlows SEQUENCE (SIZE (1..8)) OF SEQUENCE { + mac-ehs-QueueId MAC-ehs-QueueId, + trCH-LogCHMappingList TrCH-LogCHMappingList-TDD + } OPTIONAL, -- Rel-7 or later + dlconnectedMAC-ehsCommonFlows SEQUENCE (SIZE (1..8)) OF SEQUENCE { + mac-ehs-QueueId MAC-ehs-QueueId OPTIONAL, + trCH-LogCHMappingList TrCH-LogCHMappingList-TDD + } OPTIONAL, -- Rel-7 or later + dlconnectedMAC-ehsFlowsDC SEQUENCE (SIZE (1..8)) OF SEQUENCE { + mac-ehs-QueueId MAC-ehs-QueueId, -- @sic R5-112477 sic@ + trCH-LogCHMappingList TrCH-LogCHMappingList-TDD + } OPTIONAL, -- Rel-8 or later @sic R5-110104 sic@ + relAspTypeExtension SEQUENCE{} OPTIONAL -- Rel-10 or later @sic R5-130613 sic@ +} + +--************************************************************** +-- +-- TrCH-LogicalChannelMapping +-- When used for logical channel to MAC-d flow mapping dl-LogicalChannelMapping shall be chosen, +-- +--************************************************************** + +TrCH-LogicalChannelMapping ::= SEQUENCE { + logicalChannel-Mapping CHOICE { + ul-LogicalChannelMapping SS-UL-LogicalChannelMapping, + dl-LogicalChannelMapping SS-DL-LogicalChannelMapping + }, + rB-Identity INTEGER (-31..32) OPTIONAL, + cn-DomainIdentity CN-DomainIdentity OPTIONAL +} + +--************************************************************** +-- +-- TrCH-LogicalChannelMapping-TDD +-- When used for logical channel to MAC-d flow mapping dl-LogicalChannelMapping shall be chosen, +-- @sic R5-134957 R5w130320: TDD TTCN-2/3 differences sic@ +-- +--************************************************************** + +TrCH-LogicalChannelMapping-TDD ::= SEQUENCE { + logicalChannel-Mapping CHOICE { + ul-LogicalChannelMapping SS-UL-LogicalChannelMapping-TDD, -- @sic R5-134957 R5w130320 sic@ + dl-LogicalChannelMapping SS-DL-LogicalChannelMapping + }, + rB-Identity INTEGER (-31..32) OPTIONAL, + cn-DomainIdentity CN-DomainIdentity OPTIONAL +} + +--************************************************************** +-- +-- TrChConfigType +-- +--************************************************************** + + +TrChConfigType ::= CHOICE { + nonDch NULL, + dch ENUMERATED {normal(0), softHO(1)} +} + +--************************************************************** +-- +-- UE-Info +-- The value of c-RNTI-DSCH-RNTI is 16 bits, used either for C-RNTI or DSCH-RNTI. DSCH is configured if the physical channel in CMAC-config-REQ is a PDSCH. Otherwise, C-RNTI is applied. For MAC-hs configuration both u-RNTI and c-RNTI-DSCH-RNTI are omitted. +-- +--************************************************************** + +UE-Info ::= SEQUENCE { + u-RNTI U-RNTI OPTIONAL, + c-RNTI C-RNTI OPTIONAL +} + +--************************************************************** +-- +-- UE-OperationMode +-- +--************************************************************** + +UE-OperationMode ::= ENUMERATED { opModeA (0), opModeC (1) } + +--************************************************************** +-- +-- RabTxInfo +-- Provide test data, number of RBs, and RB Tx info of each RB (RB id, SDU size and number of SDUs) to be transmitted in consecutive TTIs +-- +--************************************************************** + +RabTxInfo ::= SEQUENCE +{ + testData BIT STRING (SIZE (8..163840)), + rbTxInfoList SEQUENCE (SIZE (1..6)) OF RbTxInfo +} + +--************************************************************** +-- +-- RbTxInfo +-- Info on RB id and the actual DL test data size (SDU-Size * number of SDUs). The actual test data is extracted from the first (SDU-Size * number of SDUs) bits in the raw testData buffer. SS shall transmit the actual test data in every TTI.The value nomOfSdu = T / TTI , whereby T=1200 is the duration of the data transmitting in the RAB test, taking into account the test tolerance (+50%) of the UE loop back delay (<800 ms). +-- +--************************************************************** + +RbTxInfo ::= SEQUENCE +{ + rB-Identity INTEGER(-31..32), + sduSize INTEGER(1..163840), + nomOfSdu INTEGER(0..255) -- 0 is set for no data on this RB +} + +--************************************************************** +-- +-- DDI-Mapping +-- Both SRBs and RBs can be mapped onto E-DCH. The mechanism for control of MAC header manipulation (macHeaderManipulation) is applied to individual logical channels to be mapped on E-DCH. Typically, the SRBs are configured in 'NormalMacHeader" mode while the RBs in user plane can be configured either in 'NormalMacHeader" or in "OmitMacHeader" mode. +-- If more than one UL RLC PDU size is configured for the RB (represent by logicalChannelIdentity), the different sizes will use subsequent DDI values starting from the DDI value in this table. +-- If the value of macHeaderManipulation field is 'NormalMacHeader', then data received on the E-DCH MACd flows supporting this logical channel shall have it's MAC header inspected to determine the appropriate routing, and removed as normal. The MACes SDU shall be passed to the appropriate logical channel. +-- If the value of macHeaderManipulation field is 'OmitMacHeader', then data received on the E-DCH MACd flows supporting this logical channel shall have it's MAC header inspected to determine the appropriate routing, then the MAC-es layer shall deliver the MAC-es SDU, SI and the related CFN, subframe number, HARQ process identity to the appropriate logical channel. The TTCN receives these fields by RLC-MAC-es-DATA-IND, then these fields can be checked by the TTCN. +-- HARQ ID = CFN mod 4 for TTI=10ms; +-- HARQ ID = (5*CFN + subframe number) mod 8 for TTI=2ms +-- +--************************************************************** + +DDI-Mapping ::= SEQUENCE { + macHeaderManipulation MAC-HeaderManipulation, + logicalChannelIdentity LogicalChannelIdentity, + e-DCH-MAC-d-FlowIdentity E-DCH-MAC-d-FlowIdentity, + ddi DDI, + rlc-PDU-SizeList RLC-PDU-SizeList, + includeInSchedulingInfo BOOLEAN, + mac-LogicalChannelPriority MAC-LogicalChannelPriority, + logicalChannelType LogicalChannelType, + rB-Identity INTEGER (-31..32) OPTIONAL +} + +--************************************************************** +-- +-- DDI-MappingList +-- +--************************************************************** + +DDI-MappingList ::= SEQUENCE (SIZE (1..31)) OF DDI-Mapping + +--************************************************************** +-- +-- MACeConfig +-- If the macHeaderManipulation field is 'NormalMacHeader' in ddiMappingList, then data received on the E-DCH (MAC-e PDU) shall have it's MAC header inspected to de-multiplex and to determine the appropriate routing, and the MACes PDU shall be passed to the MAC-es together with the relevant DDI, N, CFN and subframe number. +-- If the macHeaderManipulation field field is 'OmitMacHeader', then data received on the E-DCH (MAC-e PDU) shall have it's MAC header inspected to de-multiplex and to determine the appropriate routing, then the MAC-e layer shall delivery the MAC-es PDU, SI and the related CFN, subframe number to the MAC-es entity. +-- connectedToMAC-es field is used to provide the possibility that the E-DCH-MACdFlows from only one MAC-e entity are connected to the MAC-es entity in the inter node B soft handover test cases. +-- The IEs ddiMappinglist and e-DCHMacdFlows can be OMITted when changing the serving cell MAC-e without modification of MAC-e configurations. It will be applied in EDCH SHO. +-- +--************************************************************** + +MACeConfig ::= SEQUENCE { + activationTime SS-ActivationTime, + ddiMappinglist DDI-MappingList OPTIONAL, + e-DCHMacdFlows E-DCHMACdFlows OPTIONAL, + connectedToMAC-es BOOLEAN DEFAULT TRUE, -- can be set to FALSE in inter nodeB SHO + ss-DRX-MAC-Info SS-DRX-MAC-Info OPTIONAL +} + +--************************************************************** +-- +-- MACeConfig-TDD +-- If the macHeaderManipulation field is 'NormalMacHeader' in ddiMappingList, then data received on the E-DCH (MAC-e PDU) shall have it's MAC header inspected to de-multiplex and to determine the appropriate routing, and the MACes PDU shall be passed to the MAC-es together with the relevant DDI, N, CFN and subframe number. +-- If the macHeaderManipulation field field is 'OmitMacHeader', then data received on the E-DCH (MAC-e PDU) shall have it's MAC header inspected to de-multiplex and to determine the appropriate routing, then the MAC-e layer shall delivery the MAC-es PDU, SI and the related CFN, subframe number to the MAC-es entity. +-- connectedToMAC-es field is used to provide the possibility that the E-DCH-MACdFlows from only one MAC-e entity are connected to the MAC-es entity in the inter node B soft handover test cases. +-- The IEs ddiMappinglist and e-DCHMacdFlows can be OMITted when changing the serving cell MAC-e without modification of MAC-e configurations. It will be applied in EDCH SHO. +-- +--************************************************************** + +MACeConfig-TDD ::= SEQUENCE { + activationTime SS-ActivationTime, + ddiMappinglist DDI-MappingList OPTIONAL, + e-DCHMacdFlows E-DCHMACdFlows-TDD OPTIONAL +} + +--************************************************************** +-- +-- MACesConfig +-- MACesConfig establishes the mapping between logical channels and E-DCH-MACd-Flows. +-- When the macTestMode is TRUE, the re-ordering entity shall not elimilate the deplicated packets, but passes them to RLC. macTestMode = "TRUE" is used for testing the retransmission function of HARQ process +-- +--************************************************************** + +MACesConfig ::= SEQUENCE { + activationTime SS-ActivationTime, + ddiMappinglist DDI-MappingList, + macTestMode BOOLEAN DEFAULT FALSE +} + +--************************************************************** +-- +-- ModulationScheme +-- +--************************************************************** + +ModulationScheme ::= ENUMERATED {qpsk (0), qam16 (1), qam64 (2), spare1 (3)} + +--************************************************************** +-- +-- RedundancyVersionList +-- Gives the Redundancy and constellation version coding sequence (Xrv) to be used for each transmission / retransmission. The SIZE (number of Xrv elements in there) of the SEQUENCE implies the number of HARQ transmission / retransmissions to be required. +-- +--************************************************************** + +RedundancyVersionList ::= SEQUENCE (SIZE (1..8)) OF INTEGER (0..7) + +--************************************************************** +-- +-- LCR TDD ONLY START +-- +--************************************************************** +--************************************************************** +-- +-- TimeSlotConfiguration-LCR +-- +--************************************************************** + +TimeSlotConfiguration-LCR ::= SEQUENCE { + timeSlotLCR TimeslotNumber-LCR-r4, + timeSlotStatus ENUMERATED {active(0), notActive(1)}, + timeSlotDirection ENUMERATED {downlink(0), uplink(1)} +} + +--************************************************************** +-- +-- TimeSlotConfigurationList-LCR +-- +--************************************************************** + +TimeSlotConfigurationList-LCR ::= SEQUENCE (SIZE (1..maxTS-LCR)) OF TimeSlotConfiguration-LCR + +--************************************************************** +-- +-- SecondaryFrequencyInfoList +-- +--************************************************************** + +SecondaryFrequencyInfoList ::= SEQUENCE (SIZE(1..maxNumOfSecondFrequency)) OF SecondaryFrequencyInfo + +--************************************************************** +-- +-- SecondaryFrequencyInfo +-- +--************************************************************** + +SecondaryFrequencyInfo ::= SEQUENCE { + frequencyInfo UARFCN, + dLTxAttenuationLevel INTEGER(0..30) +} + +--************************************************************** +-- +-- DwPCHInfo +-- +--************************************************************** + +DwPCHInfo ::= SEQUENCE { + tstd-Indicator ENUMERATED {notApplied(0),applied(1)}, + dwPCH-Power DwPCH-Power +} + +--************************************************************** +-- +-- TransmissionDiversityApplied +-- +--************************************************************** + +TransmissionDiversityApplied ::= ENUMERATED {notApplied(0), applied(1)} + +--************************************************************** +-- +-- SS-Non-ScheduledTransGrantInfoTDD +-- Rel-7 or later. +-- +--************************************************************** + +SS-Non-ScheduledTransGrantInfoTDD ::= CHOICE { + tdd384-768 SEQUENCE + { + timeslotResourceRelatedInfo BIT STRING (SIZE (13 ) ), + powerResourceRelatedInfo INTEGER (1..32 ), + activationTime ActivationTime, + repetitionPeriodAndLength RepetitionPeriodAndLength OPTIONAL, + codeResourceInfo UL-TS-ChannelisationCode + }, + tdd128 SEQUENCE + { + n-E-UCCH INTEGER (1..8 ) OPTIONAL, + n-E-HICH INTEGER (4..15 ) OPTIONAL, + timeslotResourceRelatedInfo BIT STRING (SIZE (5 ) ), + powerResourceRelatedInfo INTEGER (1..32 ), + activationTime ActivationTime, + sfnNum INTEGER (0..1 ), + repetitionPeriodAndLength RepetitionPeriodAndLength OPTIONAL, + codeResourceInfo UL-TS-ChannelisationCode, + e-HICH-Info SEQUENCE + { + e-HICH-ID-TDD INTEGER (0..255 ), + signature-Sequence-Group-Index INTEGER (0..19 ) + } + } +} + +--************************************************************** +-- +-- LCR TDD ONLY END +-- +--************************************************************** +--************************************************************** +-- +-- CMAC-Ciphering-Activate-CNF +-- To confirm to activate or inactivate the ciphering +-- +--************************************************************** + +CMAC-Ciphering-Activate-CNF ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CMAC-Ciphering-Activate-REQ +-- To request to start or, restart or stop downlink ciphering or uplink deciphering. The physicalChannelIdentity of DPCH applies to routingInfo.Do not increment HFN part of COUNT-C if the value of incrementCOUNT-C-Ind is "NotIncr". +-- +--************************************************************** + +CMAC-Ciphering-Activate-REQ ::= SEQUENCE +{ + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + ratType RatType, + cn-DomainIdentity CN-DomainIdentity, + cipheringModeInfo CipheringModeInfo OPTIONAL, + cipheringModeInfo-r7 CipheringModeInfo-r7 OPTIONAL, + incHFN Increment-Mode +} + +--************************************************************** +-- +-- CMAC-Config-CNF +-- For MAC emulator to report that a previous attempt to setup, reconfigure or release a logical channel is successful. +-- +--************************************************************** + +CMAC-Config-CNF ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CMAC-Config-FDD-REQ +-- To request to configure MAC entity. Setup is used for creation of the MAC instances or the MAC resources. Release is used for free the all MAC resources. The reconfiguration is to change the MAC parameters, it is not the MAC modification. +-- +--************************************************************** + +CMAC-Config-FDD-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + ratType RatType, + configMessage CHOICE { + setup CmacConfigReq-FDD, + reconfigure CmacConfigReq-FDD, + release SS-ActivationTime + } +} + +--************************************************************** +-- +-- CMAC-Config-TDD-REQ +-- To request to configure MAC entity. Setup is used for creation of the MAC instances or the MAC resources. Release is used for free the all MAC resources. The reconfiguration is to change the MAC parameters, it is not the MAC modification. +-- +--************************************************************** + +CMAC-Config-TDD-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + ratType RatType, + configMessage CHOICE { + setup CmacConfigReq-TDD, + reconfigure CmacConfigReq-TDD, + release SS-ActivationTime + } +} + +--************************************************************** +-- +-- CMAC-PAGING-Config-CNF +-- To confirm to setup the Paging message +-- +--************************************************************** + +CMAC-PAGING-Config-CNF ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CMAC-PAGING-Config-FDD-REQ +-- To request MAC layer to send the Paging message on the specified configuration. +-- CMAC-PAGING-Config-REQ in TTCN-2 +-- +--************************************************************** + +CMAC-PAGING-Config-FDD-REQ ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo, + ratType RatType, + configMessage CmacPagingConfigReq +} + +--************************************************************** +-- +-- CMAC-PAGING-Config-TDD-REQ +-- To request MAC layer to send the Paging message on the specified configuration. +-- CMAC-PAGING-Config-REQ in TTCN-2 +-- +--************************************************************** + +CMAC-PAGING-Config-TDD-REQ ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo, + ratType RatType, + configMessage CmacPagingConfigReq-TDD +} +--************************************************************** +-- +-- CMAC-SYSINFO-Config-CNF +-- To confirm to setup the BCCH message to MAC layer +-- +--************************************************************** + +CMAC-SYSINFO-Config-CNF ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CMAC-SYSINFO-Config-REQ +-- To request MAC layer to send the BCCH message on the specified configuration. +-- +--************************************************************** + +CMAC-SYSINFO-Config-REQ ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo, + ratType RatType, + configMessage CmacSysinfoConfigReq +} + +--************************************************************** +-- +-- CMAC-SecurityMode-Config-CNF +-- To confirm to configure the MAC security mode +-- +--************************************************************** + +CMAC-SecurityMode-Config-CNF ::= SEQUENCE { + cellId INTEGER (-1..63) +} + +--************************************************************** +-- +-- CMAC-SecurityMode-Config-REQ +-- To request to configure the MAC security mode +-- If there are several CMAC-Ciphering-Activate-REQ follow this ASP, the SS shall take a serial of specified actions on the same contents in this ASP at the activation time indicated in each CMAC-Ciphering-Activate-REQ. +-- +--************************************************************** + +CMAC-SecurityMode-Config-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + macCipheringInfo SecurityInfo +} + +--************************************************************** +-- +-- CPHY-Cell-Config-CNF +-- To confirm to setup the cell parameter +-- +--************************************************************** + +CPHY-Cell-Config-CNF ::= SEQUENCE { + cellId INTEGER (0..63) +} + +--************************************************************** +-- +-- CPHY-Cell-Config-FDD-REQ +-- To request to setup the cell parameter. +-- The unit of tcell is chip; the unit of sfnOffset is frame number. The sfnOffset is defined as the number of frames the SFN shall be shifted, i.e the frames lagging behind or in advance, in comparison to a system reference time. The both interpretations are valid for the test. +-- The primary scrambling code number of the cell is 16*primaryScramblingCode-SS; the unit of dLTxAttenuationLevel is dB. +-- +--************************************************************** + +CPHY-Cell-Config-FDD-REQ ::= SEQUENCE { + cellId INTEGER (0..63), + tcell INTEGER(0..38399), + sfnOffset INTEGER (0 .. 4095 ), + frequencyInfo FrequencyInfo, + primaryScramblingCode-SS INTEGER (0..511), + cellTxPowerLevel CellTxPowerLevel, + dLTxAttenuationLevel INTEGER(0..30|123), + frequencyBandIndicator FrequencyBandFDD, + relAspTypeExtension SEQUENCE{} OPTIONAL -- Rel-10 or later @sic R5-130618 sic@ +} + +--************************************************************** +-- +-- CPHY-Cell-Config-TDD-REQ +-- To request to setup the cell parameter. +-- the unit of dLTxAttenuationLevel is dB. +-- CPHY-Cell-Config-REQ in TTCN-2 +-- +--************************************************************** + +CPHY-Cell-Config-TDD-REQ ::= SEQUENCE { + cellId INTEGER (0..63), + sfnOffset INTEGER (0 .. 4095 ), + frequencyInfo FrequencyInfo, + cellTxPowerLevel CellTxPowerLevel, + dLTxAttenuationLevel INTEGER(0..30|123), + cellParametersID CellParametersID, + timeSlotConfigurationList-LCR TimeSlotConfigurationList-LCR, + dwPCHInfo DwPCHInfo, + transmissionDiversityApplied ENUMERATED {notApplied(0),applied(1)} OPTIONAL, + secondaryFrequencyInfo SecondaryFrequencyInfoList OPTIONAL, + upPCHposition UpPCHposition-LCR OPTIONAL, + relAspTypeExtension SEQUENCE{} OPTIONAL -- Rel-10 or later +} + +--************************************************************** +-- +-- CPHY-Cell-Release-CNF +-- The confirmation to the CPHY-Cell-Release-Req +-- +--************************************************************** + +CPHY-Cell-Release-CNF ::= SEQUENCE { + soft-Reset BOOLEAN, + cell-ID-List SEQUENCE (SIZE (1..8)) OF INTEGER (0..63) -- cell IDs +} + +--************************************************************** +-- +-- CPHY-Cell-Release-REQ +-- 1. This Primitive with "Soft-Reset" flag ON gives a common known starting point/state of SS for a test case. The SS performs the following whenever it receives this primitive with "Soft-Reset" flag ON:Releases all configured Channels and cells (if any) irrespective of Cell ID list IE. +-- 2. Releases the associated Memory Buffers (if any). +-- 3. Cancels all active timers (if any) +-- With "Soft-Reset" flag OFF: +-- 1. Releases cells listed in IE Cell-ID-List and associated configured Channels (if any) +-- 2. Releases the Memory Buffers(if any) associated with Cells listed in IE Cell-ID-List +-- 3. Cancels all active timers (if any) associated with Cells listed in IE Cell-ID-List. +-- +--************************************************************** + +CPHY-Cell-Release-REQ ::= SEQUENCE { + soft-Reset BOOLEAN, + cell-ID-List SEQUENCE (SIZE (1..8)) OF INTEGER (0 .. 63), -- @sic R5-112591 sic@ + rb-Config-List SEQUENCE (SIZE (1..8)) OF INTEGER OPTIONAL -- @sic R5-112591 sic@ +} + +--************************************************************** +-- +-- CPHY-Cell-TxPower-Modify-CNF +-- To confirm to change the DL power +-- +--************************************************************** + +CPHY-Cell-TxPower-Modify-CNF ::= SEQUENCE { + cellId INTEGER (0..63) +} + +--************************************************************** +-- +-- CPHY-Cell-TxPower-Modify-REQ +-- To request to change the DL power +-- +--************************************************************** + +CPHY-Cell-TxPower-Modify-REQ ::= SEQUENCE { + cellId INTEGER (0..63), + dLTxAttenuationLevel INTEGER(0..40|123) +} + +--************************************************************** +-- +-- CPHY-Frame-Number-CNF +-- To return the requested connection frame number. The routingInfo indicates a physical channel. +-- +--************************************************************** + +CPHY-Frame-Number-CNF ::= SEQUENCE{ + cellId INTEGER (0..63), + routingInfo RoutingInfo, + frameNumber INTEGER (0..255) +} + +--************************************************************** +-- +-- CPHY-Frame-Number-REQ +-- To request the physical layer to return a connection frame number on which the next message can be sent at the specified PCO on the specified logical channel. The return frame number shall leave time from current frame number in order to leave some execution time for TTCN preparing next message. The routingInfo indicates a physical channel +-- +--************************************************************** + +CPHY-Frame-Number-REQ ::= SEQUENCE{ + cellId INTEGER (0..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CPHY-Ini-CNF +-- Confirm the test initialisation +-- +--************************************************************** + +CPHY-Ini-CNF ::= SEQUENCE +{ + confirmation NULL +} + +--************************************************************** +-- +-- CPHY-Ini-REQ +-- Request to initialise the test +-- +--************************************************************** + +CPHY-Ini-REQ ::= ENUMERATED { + defaultRadioEnvironment(0), + nonDefaultMultiCell(1) +} + +--************************************************************** +-- +-- CPHY-Out-of-Sync-IND +-- To report that the physical channel synchronization (in FDD mode, sync with uplink DPCCH) was lost as detected by the SS receiver. +-- +--************************************************************** + +CPHY-Out-of-Sync-IND ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CPHY-RL-Modify-CNF +-- To confirm to modify the Radio Link +-- +--************************************************************** + +CPHY-RL-Modify-CNF ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CPHY-RL-Modify-FDD-REQ +-- To request to modify the Radio Link +-- HardHandover (PhysicalChannelReconfig) +-- ChannelisationCodeChange +-- FrequencyChange +-- PhysicalChannelModifyForTrCHReconfig +-- CompressedMode( PhysicalChannelReconfig) +-- Re-Synchronized HardHandover +-- Softhandover +-- +--************************************************************** + +CPHY-RL-Modify-FDD-REQ ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo, + ratType RatType, + modifyMessage CphyRlModifyReq-FDD +} + +--************************************************************** +-- +-- CPHY-RL-Modify-TDD-REQ +-- To request to modify the Radio Link +-- HardHandover (PhysicalChannelReconfig) +-- ChannelisationCodeChange +-- FrequencyChange +-- PhysicalChannelModifyForTrCHReconfig +-- CompressedMode( PhysicalChannelReconfig) +-- Re-Synchronized HardHandover +-- CPHY-RL-Modify-REQ in TTCN-2 +-- +--************************************************************** + +CPHY-RL-Modify-TDD-REQ ::= SEQUENCE { + cellId INTEGER (0..63), + secondaryFrequency UARFCN OPTIONAL, + routingInfo RoutingInfo, + ratType RatType, + modifyMessage CphyRlModifyReq-TDD +} + +--************************************************************** +-- +-- CPHY-RL-Release-CNF +-- PHY emulator confirms that a specified physical channel has been released. +-- +--************************************************************** + +CPHY-RL-Release-CNF ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CPHY-RL-Release-FDD-REQ +-- To request to release the Radio Link +-- +--************************************************************** + +CPHY-RL-Release-FDD-REQ ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo, + activationTime SS-ActivationTime +} + +--************************************************************** +-- +-- CPHY-RL-Release-TDD-REQ +-- To request to release the Radio Link +-- +--************************************************************** + +CPHY-RL-Release-TDD-REQ ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo, + activationTime SS-ActivationTime OPTIONAL +} + +--************************************************************** +-- +-- CPHY-RL-Setup-CNF +-- To confirm to setup the Radio Link +-- +--************************************************************** + +CPHY-RL-Setup-CNF ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CPHY-RL-Setup-FDD-REQ +-- To request to setup the associated transport channels and the Radio Link itself. +-- CPHY-RL-Setup-REQ in TTCN-2 +-- +--************************************************************** + +CPHY-RL-Setup-FDD-REQ ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo, + ratType RatType, + setupMessage CphyRlSetupReq-FDD +} + +--************************************************************** +-- +-- CPHY-RL-Setup-TDD-REQ +-- To request to setup the associated transport channels and the Radio Link itself. +-- CPHY-RL-Setup-REQ in TTCN-2 +-- +--************************************************************** + +CPHY-RL-Setup-TDD-REQ ::= SEQUENCE { + cellId INTEGER (0..63), + secondaryFrequency UARFCN OPTIONAL, + routingInfo RoutingInfo, + ratType RatType, + setupMessage CphyRlSetupReq-TDD +} + +--************************************************************** +-- +-- CPHY-Sync-IND +-- To indicate that physical channel synchronization (in FDD mode, sync with DPCCH) has been achieved. +-- +--************************************************************** + +CPHY-Sync-IND ::= SEQUENCE{ + cellId INTEGER (0..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CPHY-TrCH-Config-CNF +-- To confirm to configure the transport channel +-- +--************************************************************** + +CPHY-TrCH-Config-CNF ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CPHY-TrCH-Config-FDD-REQ +-- To request to configure the transport channel +-- +--************************************************************** + +CPHY-TrCH-Config-FDD-REQ ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo, + ratType RatType, + trchConfigType TrChConfigType, + configMessage CphyTrchConfigReq +} + +--************************************************************** +-- +-- CPHY-TrCH-Config-TDD-REQ +-- To request to configure the transport channel +-- +--************************************************************** + +CPHY-TrCH-Config-TDD-REQ ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo, + ratType RatType, + trchConfigType TrChConfigType, + configMessage CphyTrchConfigReq-TDD +} + +--************************************************************** +-- +-- CPHY-TrCH-Release-CNF +-- To confirm to release tthe Radio Link +-- +--************************************************************** + +CPHY-TrCH-Release-CNF ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CPHY-TrCH-Release-FDD-REQ +-- CPHY-TrCH-Release-TDD-REQ +-- To request to release tthe Radio Link +-- +--************************************************************** + +CPHY-TrCH-Release-FDD-REQ ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo, + trchConfigType TrChConfigType, + activationTime SS-ActivationTime +} + +CPHY-TrCH-Release-TDD-REQ ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo, + trchConfigType TrChConfigType, + activationTime SS-ActivationTime OPTIONAL +} + +--************************************************************** +-- +-- CPHY-HS-DPCCH-CQI-MultiCell-CNF +-- To Confirm CPHY-HS-DPCCH-CQI-MultiCell-REQ +-- +--************************************************************** +CPHY-HS-DPCCH-CQI-MultiCell-CNF ::= SEQUENCE { + cellId INTEGER(0..63) +} + +--************************************************************** +-- +-- CPHY-HS-DPCCH-CQI-MultiCell-REQ +-- To enable the SS to start reporting N times of the CQI value received on the HS-DPCCH on cellId when 3C/4C-HSDPA is configured. After N times the SS stops reporting. N is specified as numberOfReports. +-- At the SS initialization reporting of CQI values is disabled. +-- +--************************************************************** +CPHY-HS-DPCCH-CQI-MultiCell-REQ ::= SEQUENCE { + cellId INTEGER(0..63), + ratType RatType, + numberOfReports INTEGER(1..32) +} + +--************************************************************** +-- +-- CPHY-HS-DPCCH-CQI-MultiCell-IND +-- SS generates one indication per subframe when a CQI/PCI value is received on HS-DPCCH after invocation of ASP CPHY-HS-DPCCH-CQI-MultiCell-REQ and before the numberOfReports is reached. +-- This ASP is used for verifying whether the UE has configured the HS-DSCH and starts reception of HS-DSCH (3GPP TS 25.331 [21], subclause 8.6.6.34 and 3GPP TS 25.212 [58], subclause 4.7.4.2). +-- +--************************************************************** +CPHY-HS-DPCCH-CQI-MultiCell-IND ::= SEQUENCE { + cellId INTEGER(0..63), + ratType RatType, + cfn INTEGER (0..255), + subframe INTEGER (0..4), + cqiPci-List CqiPci-List-Type +} + +CqiPci-List-Type ::= SEQUENCE (SIZE (1..2)) OF CqiPci-Type + +CqiPci-Type ::= SEQUENCE { + cqi INTEGER (0..1023), + pci INTEGER (0..3) OPTIONAL, -- MIMO + cqiType ENUMERATED {cqiTypeA(0), cqiTypeB(1)} OPTIONAL -- MIMO +} + +--************************************************************** +-- +-- CPHY-HS-DPCCH-CQI-CNF +-- Applicable Rel-5 or later +-- To Confirm CPHY-HS-DPCCH-CQI-REQ +-- +--************************************************************** +CPHY-HS-DPCCH-CQI-CNF ::= SEQUENCE { + cellId INTEGER(0..63) +} + +--************************************************************** +-- +-- CPHY-HS-DPCCH-CQI-REQ +-- Applicable Rel-5 or later +-- To enable the SS to start reporting N times of the CQI value received on the HS DPCCH. After N times the SS stops reporting. N is specified in numberOfReports. +-- At the SS initialization reporting of CQI values is disabled +-- +--************************************************************** +CPHY-HS-DPCCH-CQI-REQ ::= SEQUENCE { + cellId INTEGER(0..63), + ratType RatType, + numberOfReports INTEGER(1..32) +} + +--************************************************************** +-- +-- CPHY-HS-DPCCH-CQI-IND +-- Applicable Rel-5 or later +-- SS generates the indication when a CQI value is received on HS-DPCCH after invocation of ASP CPHY-HS-DPCCH-CQI-REQ and before the numberOfReports is reached. +-- This ASP is used for verifying whether the UE has configured the HS-DSCH and starts reception of HS-DSCH (3GPP TS 25.331 [21], subclause 8.6.6.34). +-- 'second-cqi' shall be reported when MIMO is configured and dual transport block type A CQI report is received. When second-cqi is present, allowed values for 'cqi' are 0..14. +-- In all other cases (i.e. non MIMO operation, MIMO operation but with CQI type B or single transport block type A CQI reports] 'second-cqi' shall not be reported and range for cqi is 0..30. +-- 'pci' and cqiType shall be present when MIMO is configured. +-- +--************************************************************** +CPHY-HS-DPCCH-CQI-IND ::= SEQUENCE { + cellId INTEGER(0..63), + ratType RatType, + cfn INTEGER (0..255), + subframe INTEGER (0..4), + cqi INTEGER (0..30), + cqiExt CQI-ExtensionType +} + +--************************************************************** +-- +-- CQI-ExtensionType +-- Rel-7 or later +-- The value -1 for second-cqi indicates the absence of the second CQI. +-- +--************************************************************** +CQI-ExtensionType ::= SEQUENCE { + second-cqi INTEGER (-1..14) OPTIONAL, + pci INTEGER (0..3) OPTIONAL, -- MIMO + cqiType ENUMERATED {cqiTypeA(0), cqiTypeB(1)} OPTIONAL -- MIMO +} + +--************************************************************** +-- +-- CPHY-MeasurementConfig-REQ +-- To configure measurement parameters +-- cellDCHMeasOccasionInfo-TDD128: to configure SS for CELL-DCH measurement occasion according to TS 25.331[21] clause 8.5.11a and 8.6.7.26. No DL transmission shall be performed in the calculated timeslot. The activationTime is set to 'activateNow'. +-- +--************************************************************** +CPHY-MeasurementConfig-REQ ::= SEQUENCE { + cellId INTEGER(0..63), + activationTime SS-ActivationTime, + measurement CHOICE { + rel9 SEQUENCE { + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 + -- LCR TDD Rel9 + } + } + } + +--************************************************************** +-- +-- CPHY-MeasurementConfig-CNF +-- Confirm a previous CPHY-MeasurementConfig-REQ being successful. +-- +--************************************************************** +CPHY-MeasurementConfig-CNF ::= SEQUENCE { + cellId INTEGER(0..63) + } + +--************************************************************** +-- +-- CRLC-Ciphering-Activate-CNF +-- To confirm to activate or inactivate the ciphering +-- +--************************************************************** + +CRLC-Ciphering-Activate-CNF ::= SEQUENCE { + cellId INTEGER (-1..63)} + +--************************************************************** +-- +-- CRLC-Ciphering-Activate-REQ +-- To request to start, restart or stop downlink ciphering or uplink deciphering. The RB-identity applied to routingInfo indicates the SRB being not suspended during the execution of the ciphering mode command. Each call of the ASP includes one RLC SN in rb-DL-CiphActivationTimeInfo for the corresponding rb-identity. +-- +--************************************************************** + +CRLC-Ciphering-Activate-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + ratType RatType, + cn-DomainIdentity CN-DomainIdentity, + ciphActivationInfo CiphActivationInfo, + incHFN RLC-IncMode +} + +--************************************************************** +-- +-- CRLC-Config-CNF +-- For RLC emulator to comfirm that a previous attempt to establish, reconfigure or release a radio bearer has been successful +-- +--************************************************************** + +CRLC-Config-CNF ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CRLC-Config-FDD-REQ +-- To request to setup, reconfigure or release RLC entity +-- +--************************************************************** + +CRLC-Config-FDD-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + ratType RatType, + configMessage CrlcConfigReq, + activationTime SS-ActivationTime OPTIONAL +} + +--************************************************************** +-- +-- CRLC-Config-TDD-REQ +-- To request to setup, reconfigure or release RLC entity +-- +--************************************************************** + +CRLC-Config-TDD-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + ratType RatType, + configMessage CrlcConfigReq-TDD, + activationTime SS-ActivationTime OPTIONAL +} + +--************************************************************** +-- +-- CRLC-Integrity-Activate-CNF +-- To confirm to activate or inactivate the integrity protection +-- +--************************************************************** + +CRLC-Integrity-Activate-CNF ::= SEQUENCE { + cellId INTEGER (-1..63) +} + +--************************************************************** +-- +-- CRLC-Integrity-Activate-REQ +-- To request to start or to modify the downlink or uplink integrity protection. The ASP shall be called before the sending of SECURITY MODE COMMAND. It activates the integrity on all SRBs in DL. The ASP shall not be called if the integrity shall be switched off in the test case. +-- +--************************************************************** + +CRLC-Integrity-Activate-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + cn-DomainIdentity CN-DomainIdentity, + integrityActivationInfo IntegrityActivationInfo +} + +--************************************************************** +-- +-- CRLC-Integrity-Failure-IND +-- RLC emulator reports the occurrences of a failure in integrity protection, i.e. reception of an integrity-protected RLC AM/UM SDU containing a non-matching X-MAC value compared to the desired. +-- +--************************************************************** + +CRLC-Integrity-Failure-IND ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + failureCause ENUMERATED { codeNotMatched(0) } +} + +--************************************************************** +-- +-- CRLC-ProhibitRLC-Ack-CNF +-- To confirm that the reception of a CRLC-ProhibitRLC-Ack-REQ. +-- +--************************************************************** + +CRLC-ProhibitRLC-Ack-CNF ::= SEQUENCE{ + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + supportflag SupportFlag DEFAULT noNeed +} + +--************************************************************** +-- +-- CRLC-ProhibitRLC-Ack-REQ +-- To request the SS to prohibit/Continue acknowledging RLC SDUs. +-- +--************************************************************** + + +CRLC-ProhibitRLC-Ack-REQ ::= SEQUENCE{ + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + mode ENUMERATED{prohibit(0), continue(1)} +} + +--************************************************************** +-- +-- CRLC-RRC-MessageSN-CNF +-- To return the counter I value (HFN and RRC message sequence number) for sending the next DL RRC message or for receiving the next UL RRC message on the concerned SRB. +-- COUNT-I-MSB is the 28 MSB of the COUNT-I (HFN) +-- +--************************************************************** + +CRLC-RRC-MessageSN-CNF ::= SEQUENCE +{ + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + count-I-MSB-UL COUNT-I-MSB, + count-I-LSB-UL RRC-SequenceNumber, + count-I-MSB-DL COUNT-I-MSB, + count-I-LSB-DL RRC-SequenceNumber +} + +--************************************************************** +-- +-- CRLC-RRC-MessageSN-REQ +-- To request the SS to return the values in COUNT-I for sending the next DL RRC message or for receiving the next UL RRC message on the concerned SRB. +-- +--************************************************************** + +CRLC-RRC-MessageSN-REQ ::= SEQUENCE +{ + cellId INTEGER (-1..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CRLC-Resume-CNF +-- To confirm the resume request +-- +--************************************************************** + +CRLC-Resume-CNF ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CRLC-Resume-REQ +-- To request to resume data transmission. +-- If the SS implemented the optional suspension of UL data PDUs, then the processing in the UL of data PDUs shall be resumed. Any suspended UL control PDUs and Piggybacked Status shall be preceeded or resumed. +-- +--************************************************************** + +CRLC-Resume-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CRLC-SecurityMode-Config-CNF +-- To confirm to configure the ciphering +-- +--************************************************************** + +CRLC-SecurityMode-Config-CNF ::= SEQUENCE { + cellId INTEGER (-1..63) +} + +--************************************************************** +-- +-- CRLC-SecurityMode-Config-REQ +-- To request to configure the RLC security mode +-- If several subsequent CRLC-Integrity-Activate-REQ or CRLC-Ciphering-Activate-REQ follow this ASP, the SS shall take a serial of specified actions on the same contents in this ASP at the activation time indicated in each CRLC- Integrity (or Ciphering)-Activate-REQ. +-- +--************************************************************** + +CRLC-SecurityMode-Config-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + rlcSecurityInfo SecurityInfo +} + +--************************************************************** +-- +-- CRLC-SequenceNumber-CNF +-- To return the requested counter sequence number to which the next DL PDU to be sent or the expected UL PDU to be received. +-- +--************************************************************** + +CRLC-SequenceNumber-CNF ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + count-C-MSB-UL COUNT-C-MSB , + count-C-LSB-UL RLC-SequenceNumber, + count-C-MSB-DL COUNT-C-MSB , + count-C-LSB-DL RLC-SequenceNumber +} + +--************************************************************** +-- +-- CRLC-SequenceNumber-REQ +-- To request the RLC layer to return current counter sequence numbers to which the next DL PDU to be sent or the expected UL PDU to be received. +-- +--************************************************************** + +CRLC-SequenceNumber-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CRLC-SetRRC-MessageSN-CNF +-- To confirm the RRC message sequence number setting request +-- +--************************************************************** + +CRLC-SetRRC-MessageSN-CNF ::= SEQUENCE +{ + cellId INTEGER (-1..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CRLC-SetRRC-MessageSN-REQ +-- To request the SS to set the RRC message sequence number in COUNT-I to the value specified in this ASP. The ASP is used to initialise SS RRC +-- +--************************************************************** + +CRLC-SetRRC-MessageSN-REQ ::= SEQUENCE +{ + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + count-I-LSB-UL RRC-SequenceNumber OPTIONAL, + count-I-LSB-DL RRC-SequenceNumber OPTIONAL +} + +--************************************************************** +-- +-- CRLC-Suspend-CNF +-- To confirm the suspension of data transmission. The parameter vt indicates either the value of the Send State Variable VT(S) for AM, or the value of Data State Varialble VT(US) for UM. +-- +--************************************************************** + +CRLC-Suspend-CNF ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + vt RLC-SequenceNumber +} + +--************************************************************** +-- +-- CRLC-Suspend-REQ +-- To request the suspension of data transmission. The parameter n indicates that an RLC entity will not send a PDU with "Sequence Number" VT(S)+N for AM and "Sequence Number" VT(US)+N for UM, where N is a non-negative integer. Optionally an SS may start immediate suspension of processing of data PDUs in the UL. The UL control PDUs and Piggybacked Status may optionally be processed. +-- +--************************************************************** + +CRLC-Suspend-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + n RLC-SequenceNumber +} + +--************************************************************** +-- +-- RLC-AM-DATA-CNF +-- +--************************************************************** + +RLC-AM-DATA-CNF ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + mui Mui +} + +--************************************************************** +-- +-- RLC-AM-DATA-IND +-- To indicate to receive DATA using ackowledged mode +-- +--************************************************************** + +RLC-AM-DATA-IND ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + integrityResult IntegrityResult , + aM-message CHOICE { + uL-DCCH-Message UL-DCCH-Message, + uL-CCCH-Message UL-CCCH-Message, + uL-SHCCH-Message UL-SHCCH-Message + } +} + +--************************************************************** +-- +-- RLC-AM-DATA-REQ +-- To request to transmit DATA using ackowledged mode +-- +--************************************************************** + +RLC-AM-DATA-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + confirmationRequest AmConfirmationRequest, + aM-message CHOICE { + dL-DCCH-Message DL-DCCH-Message, + dL-CCCH-Message DL-CCCH-Message, + pCCH-Message PCCH-Message, + dL-SHCCH-Message DL-SHCCH-Message, + bCCH-FACH-Message BCCH-FACH-Message, + bCCH-BCH-Message BCCH-BCH-Message, + invalid-dL-DCCH-Message Invalid-DL-DCCH-Message + -- invalid-dL-CCCH-Message Invalid-DL-CCCH-Message, + -- invalid-dL-SHCCH-Message Invalid-DL-SHCCH-Message + } +} + +--************************************************************** +-- +-- RLC-TR-DATA-IND +-- To indicate to receivet DATA using transparent mode +-- +--************************************************************** + +RLC-TR-DATA-IND ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + tM-message CHOICE { + uL-DCCH-Message UL-DCCH-Message, + uL-CCCH-Message UL-CCCH-Message, + uL-SHCCH-Message UL-SHCCH-Message + } +} + +--************************************************************** +-- +-- RLC-TR-DATA-REQ +-- To request to transmit DATA using transparent mode +-- +--************************************************************** + +RLC-TR-DATA-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + tM-message CHOICE { + dL-DCCH-Message DL-DCCH-Message, + dL-CCCH-Message DL-CCCH-Message, + pCCH-Message PCCH-Message, + dL-SHCCH-Message DL-SHCCH-Message, + bCCH-FACH-Message BCCH-FACH-Message, + bCCH-BCH-Message BCCH-BCH-Message + -- invalid-dL-DCCH-Message Invalid-DL-DCCH-Message, + -- invalid-dL-CCCH-Message Invalid-DL-CCCH-Message, + -- invalid-dL-SHCCH-Message Invalid-DL-SHCCH-Message + } +} + +--************************************************************** +-- +-- RLC-UM-DATA-IND +-- To indicate to receivet DATA using unacknowledged mode +-- +--************************************************************** + +RLC-UM-DATA-IND ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + integrityResult IntegrityResult, + uM-message CHOICE { + uL-DCCH-Message UL-DCCH-Message, + uL-CCCH-Message UL-CCCH-Message, + uL-SHCCH-Message UL-SHCCH-Message + } +} + +--************************************************************** +-- +-- RLC-UM-DATA-REQ +-- To request to transmit DATA using unacknowledged mode +-- +--************************************************************** + +RLC-UM-DATA-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + uM-message CHOICE { + dL-DCCH-Message DL-DCCH-Message, + dL-CCCH-Message DL-CCCH-Message, + pCCH-Message PCCH-Message, + dL-SHCCH-Message DL-SHCCH-Message, + bCCH-FACH-Message BCCH-FACH-Message, + bCCH-BCH-Message BCCH-BCH-Message, + invalid-dL-DCCH-Message Invalid-DL-DCCH-Message --, + -- invalid-dL-CCCH-Message Invalid-DL-CCCH-Message, + -- invalid-dL-SHCCH-Message Invalid-DL-SHCCH-Message + }, + specialLI BOOLEAN +} + +--************************************************************** +-- +-- CMAC-MACe-Config-CNF +-- Confirm a previous CMAC-MACe-Config-REQ being successful. +-- +--************************************************************** + +CMAC-MACe-Config-CNF ::= SEQUENCE { + nodeB-Id INTEGER(0..63) +} + +--************************************************************** +-- +-- CMAC-MACe-Config-FDD-REQ +-- +--************************************************************** + +CMAC-MACe-Config-FDD-REQ ::= SEQUENCE { + nodeB-Id INTEGER(0..63), + configMessage CHOICE { + setup MACeConfig, + reconfig MACeConfig, + reset NULL, + release SS-ActivationTime + } +} + +--************************************************************** +-- +-- CMAC-MACe-Config-TDD-REQ +-- PCO Type: CSAP +-- +--************************************************************** + +CMAC-MACe-Config-TDD-REQ ::= SEQUENCE { + nodeB-Id INTEGER(0..63), + configMessage CHOICE { + setup MACeConfig-TDD, + reconfig MACeConfig-TDD, + reset NULL, + release SS-ActivationTime + } +} + +--************************************************************** +-- +-- CMAC-MACe-NodeB-CellMapping-CNF +-- Confirm a previous CMAC-MACe-NodeB-CellMapping-REQ being successful. +-- +--************************************************************** + +CMAC-MACe-NodeB-CellMapping-CNF ::= SEQUENCE { + nodeB-Id INTEGER(0..63) +} + +--************************************************************** +-- +-- CMAC-MACe-NodeB-CellMapping-REQ +-- To put a set of cells under the control of a MAC-e entity indicated by nodeB-Id, which is configured by CMAC-MAC-e-Config-REQ. +-- This ASP establishes the routing relation between E-DCH related channels in these cells with a MAC-e entity. +-- A cell is mapped to only one NodeB, and the cellId allocation is unique in a test. +-- +--************************************************************** + +CMAC-MACe-NodeB-CellMapping-REQ ::= SEQUENCE { + nodeB-Id INTEGER(0..63), + celllist SEQUENCE OF INTEGER (0..63) +} + +--************************************************************** +-- +-- CMAC-MACes-Config-CNF +-- Confirm a previous CMAC-MACes-Config-REQ being successful. cellId=-1. +-- +--************************************************************** + +CMAC-MACes-Config-CNF ::= SEQUENCE { + cellId INTEGER (-1..63) +} + +--************************************************************** +-- +-- CMAC-MACes-Config-REQ +-- This ASP is used for creating and configuring, reconfiguring, resetting or releasing an MAC-es, a cell / nodeB-independent entity in the SS. cellId=-1. +-- +--************************************************************** + +CMAC-MACes-Config-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + configMessage CHOICE { + setup MACesConfig, + reconfig MACesConfig, + reset NULL, + release SS-ActivationTime } +} + +--************************************************************** +-- +-- CMAC-MAChs-TFRCconfigure-CNF +-- Applicable Rel-5 or later. +-- Confirm a previous CMAC-MAChs-TFRCconfigure-REQ being successful. +-- +--************************************************************** + +CMAC-MAChs-MACehs-TFRCconfigure-CNF ::= SEQUENCE { + cellId INTEGER (-1..63) +} + +--************************************************************** +-- +-- CMAC-MAChs-TFRCconfigure-FDD-REQ +-- Applicable Rel-5 or later. +-- To configure the TFRC selection entity in the MAC-hs entity. +-- channelisationCodeOffset + noOfChannelisationCodes shall not be great than 15; +-- noOfChannelisaionCodes = 0 means to delete the HS-PDSCH and HS-SCCH channels, and release all related resource. +-- If explicit is selected, the SS shall use the values specified here for the parameters "modulationScheme", "channelisationCodeOffset", "noOfChannelisatonCodes ", tbSizeIndexOnHS-SCCH", "redundancyVersion" and "hs-PDSCH-TxPower". +-- If sS-Configured is selected, the values specified here are the ranges for "channelisationCodeOffset", "noOfChannelisationCodes", and the initial value of HS-PDSCH transmission power, the SS shall dynamically select the suitable values for the parameters "modulationScheme", "channelisationCodeOffset", "noOfChannelisatonCodes ", tbSizeIndexOnHS-SCCH", "redundancyVersion" and "hs-PDSCH-TxPower" according to the CQI information reported by the UE and the UE's capability category, +-- +--************************************************************** + +CMAC-MAChs-MACehs-TFRCconfigure-FDD-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + tfrcConfigMode CHOICE { + explicitlyConfigured SEQUENCE { + modulationScheme ModulationScheme, + channelisationCodeOffset INTEGER (1..15), --@sic R5w140013 sic@ + noOfChannelisationCodes INTEGER (1..15), + tbSizeIndexOnHS-SCCH INTEGER (0..63), + minimumInterTTIinterval INTEGER (1..3), + redundancyVersions RedundancyVersionList, + hs-PDSCH-TxPower DL-TxPower -- default offset related + -- to p-CPICH or s-CPICH + }, + sS-Configured SEQUENCE { + minChannelisationCodeOffset INTEGER (1..15), + maxNoOfChannelisationCodes INTEGER (1..15), + iniHS-PDSCH-TxPower DL-TxPower, -- default offset related + -- to p-CPICH or s-CPICH + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoStatus BOOLEAN DEFAULT FALSE + }, + explicitHS-SCCH-LessMode SEQUENCE{ + hs-pdsch-CodeIndex INTEGER (1..15), + hs-scch-LessTFI INTEGER (1..90), + hs-scch-LessSecondCodeApplicability BOOLEAN, + tbs INTEGER (0..3), + -- the index of tbs for HS-SCCH less operation + -- The value should be consistent with code index, TFI and second + -- code applicability + minimumInterTTIinterval INTEGER (1..3), + hs-PDSCH-TxPower DL-TxPower + -- default offset related to p-CPICH or s-CPICH + }, + explicitMIMO SEQUENCE { + modulationSchemeAndNumTB INTEGER(0..7), + -- set according to table 14 of 25.212 + -- Values 1,2 and 5 are used for 64QAM+MIMO. Rel-8 or later + channelisationCodeOffset INTEGER (1..15), + noOfChannelisationCodes INTEGER (1..15), + precodingWeight2 INTEGER (0..3), + -- set according to table 14a of 25.212 + primaryTB-SizeIndexOnHS-SCCH INTEGER (0..63), + secondaryTB-SizeIndexOnHS-SCCH INTEGER (0..63) OPTIONAL, + -- present only if second TB is to be tx as per modulationSchemeAndNumTB + minimumInterTTIinterval INTEGER (1..3), + primaryRedundancyVersions RedundancyVersionList, + secondaryRedundancyVersions RedundancyVersionList OPTIONAL, + -- present only if second TB is to be tx as per modulationSchemeAndNumTB + hs-PDSCH-TxPower DL-TxPower -- default offset related + -- to p-CPICH or s-CPICH + }, + sS-Configured-DC SEQUENCE { + serving-minChannelisationCodeOffset INTEGER (1..15), + serving-maxNoOfChannelisationCodes INTEGER (1..15), + serving-mimoStatus BOOLEAN DEFAULT FALSE, -- Rel-9 or later + sec-minChannelisationCodeOffset INTEGER (1..15), + sec-maxNoOfChannelisationCodes INTEGER (1..15), + sec-mimoStatus BOOLEAN DEFAULT FALSE, -- Rel-9 or later + iniHS-PDSCH-TxPower DL-TxPower, + -- default offset related + -- to p-CPICH or s-CPICH + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL + }, + explicitlyDC SEQUENCE { + servingTFRC SEQUENCE { + modulationScheme ModulationScheme, + channelisationCodeOffset INTEGER (1..15), + noOfChannelisationCodes INTEGER (1..15), + tbSizeIndexOnHS-SCCH INTEGER (0..63), + minimumInterTTIinterval INTEGER (1..3), + redundancyVersions RedundancyVersionList, + hs-PDSCH-TxPower DL-TxPower -- default offset related + -- to p-CPICH or s-CPICH + } OPTIONAL, -- when omitted then no data is sent on the serving HS-DSCH cell + secondaryTFRC SEQUENCE { + modulationScheme ModulationScheme, + channelisationCodeOffset INTEGER (1..15), + noOfChannelisationCodes INTEGER (1..15), + tbSizeIndexOnHS-SCCH INTEGER (0..63), + minimumInterTTIinterval INTEGER (1..3), + redundancyVersions RedundancyVersionList, + hs-PDSCH-TxPower DL-TxPower -- default offset related + -- to p-CPICH or s-CPICH + } OPTIONAL -- when omitted then no data is sent on the secondary HS-DSCH cell + }, + explicitlyDC-MIMO SEQUENCE { -- Rel-9 or later + servingTFRC SEQUENCE{ + modulationSchemeAndNumTB INTEGER(0..7), + -- set according to table 14 of 25.212 + -- Values 1,2 and 5 are used for 64QAM+MIMO. Rel-8 or later + channelisationCodeOffset INTEGER (1..15), + noOfChannelisationCodes INTEGER (1..15), + precodingWeight2 INTEGER (0..3), + -- set according to table 14a of 25.212 + primaryTB-SizeIndexOnHS-SCCH INTEGER (0..63), + secondaryTB-SizeIndexOnHS-SCCH INTEGER (0..63) OPTIONAL, + -- present only if second TB is to be tx + -- as per modulationSchemeAndNumTB + minimumInterTTIinterval INTEGER (1..3), + primaryRedundancyVersions RedundancyVersionList, + secondaryRedundancyVersions RedundancyVersionList OPTIONAL, + -- present only if second TB is to be tx + -- as per modulationSchemeAndNumTB + hs-PDSCH-TxPower DL-TxPower + -- default offset related + -- to p-CPICH or s-CPICH + } OPTIONAL, + -- when omitted then no data is sent on the serving HS-DSCH cell + secondaryTFRC SEQUENCE{ + modulationSchemeAndNumTB INTEGER(0..7), + -- set according to table 14 of 25.212 + -- Values 1,2 and 5 are used for 64QAM+MIMO. Rel-8 or later + channelisationCodeOffset INTEGER (1..15), + noOfChannelisationCodes INTEGER (1..15), + precodingWeight2 INTEGER (0..3), + -- set according to table 14a of 25.212 + primaryTB-SizeIndexOnHS-SCCH INTEGER (0..63), + secondaryTB-SizeIndexOnHS-SCCH INTEGER (0..63) OPTIONAL, + -- present only if second TB is to be tx + -- as per modulationSchemeAndNumTB + minimumInterTTIinterval INTEGER (1..3), + primaryRedundancyVersions RedundancyVersionList, + secondaryRedundancyVersions RedundancyVersionList OPTIONAL, + -- present only if second TB is to be tx + -- as per modulationSchemeAndNumTB + hs-PDSCH-TxPower DL-TxPower + -- default offset related + -- to p-CPICH or s-CPICH + } OPTIONAL + -- when omitted then no data is sent on the secondary HS-DSCH cell + }, + relAspTypeExtension TFRCconfigure-r10OrLaterExtensionType -- Rel-10 or later @sic R5-130613 R5-134957 sic@ + }, + activationTime SS-ActivationTime, + ss-DTX-Info DRX-Info OPTIONAL, + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL +} + +--************************************************************** +-- +-- TFRCconfigure-r10OrLaterExtensionType +-- Rel-10 or later +-- Extension to configure the TFRC selection in the MAC-ehs entity when 4C-HSDPA is configured. +-- +--************************************************************** +TFRCconfigure-r10OrLaterExtensionType ::= CHOICE { + rel10-AspExt CHOICE { + sS-Configured-4C SEQUENCE { -- Rel-10 3C/4C HSDPA + serving-TFRC TFRC-Configured-Type, + firstSecondary-TFRC TFRC-Configured-Type, + secondSecondary-TFRC TFRC-Configured-Type, + thirdSecondary-TFRC TFRC-Configured-Type OPTIONAL, + -- for the third secondary cell when configured + iniHS-PDSCH-TxPower DL-TxPower, + -- default offset related + -- to p-CPICH or s-CPICH + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL + }, + explicitlyConfigured-4C SEQUENCE { -- Rel-10 3C/4C HSDPA + serving-TFRC TFRC-Explicit-Type OPTIONAL, + -- when omitted then no data is sent on the serving HS-DSCH cell + firstSecondary-TFRC TFRC-Explicit-Type OPTIONAL, + -- when omitted then no data is sent on the secondary HS-DSCH cell + secondSecondary-TFRC TFRC-Explicit-Type OPTIONAL, + -- when omitted then no data is sent on the secondary HS-DSCH cell + thirdSecondary-TFRC TFRC-Explicit-Type OPTIONAL + -- for the third secondary cell when configured + -- when omitted then no data is sent on the secondary HS-DSCH cell + }, + explicitlyConfigured-4C-MIMO SEQUENCE { -- Rel-10 3C/4C HSDPA + serving-TFRC TFRC-ExplicitMIMO-Type OPTIONAL, + -- when omitted then no data is sent on the serving HS-DSCH cell + firstSecondary-TFRC TFRC-ExplicitMIMO-Type OPTIONAL, + -- when omitted then no data is sent on the secondary HS-DSCH cell + secondSecondary-TFRC TFRC-ExplicitMIMO-Type OPTIONAL, + -- when omitted then no data is sent on the secondary HS-DSCH cell + thirdSecondary-TFRC TFRC-ExplicitMIMO-Type OPTIONAL + -- for the third secondary cell when configured + -- when omitted then no data is sent on the secondary HS-DSCH cell + } + } +} + +--************************************************************** +-- +-- TFRC-Configured-Type +-- Rel-10 or later. +-- +--************************************************************** + +TFRC-Configured-Type ::= SEQUENCE { + minChannelisationCodeOffset INTEGER (1..15), + maxNoOfChannelisationCodes INTEGER (1..15), + mimoStatus BOOLEAN DEFAULT FALSE +} + +--************************************************************** +-- +-- TFRC-Explicit-Type +-- Rel-10 or later. +-- +--************************************************************** + +TFRC-Explicit-Type ::= SEQUENCE{ + modulationScheme ModulationScheme, + channelisationCodeOffset INTEGER (1..15), + noOfChannelisationCodes INTEGER (1..15), + tbSizeIndexOnHS-SCCH INTEGER (0..63), + minimumInterTTIinterval INTEGER (1..3), + redundancyVersions RedundancyVersionList, + hs-PDSCH-TxPower DL-TxPower -- default offset related + -- to p-CPICH or s-CPICH +} + +--************************************************************** +-- +-- TFRC-ExplicitMIMO-Type +-- Rel-10 or later. +-- +--************************************************************** + +TFRC-ExplicitMIMO-Type ::= SEQUENCE{ + modulationSchemeAndNumTB INTEGER(0..7), + -- set according to table 14 of 25.212 + -- Values 1,2 and 5 are used for 64QAM+MIMO + channelisationCodeOffset INTEGER (1..15), + noOfChannelisationCodes INTEGER (1..15), + precodingWeight2 INTEGER (0..3), + -- set according to table 14a of 25.212 + primaryTB-SizeIndexOnHS-SCCH INTEGER (0..63), + secondaryTB-SizeIndexOnHS-SCCH INTEGER (0..63) OPTIONAL, + -- present only if second TB is to be tx + -- as per modulationSchemeAndNumTB + minimumInterTTIinterval INTEGER (1..3), + primaryRedundancyVersions RedundancyVersionList, + secondaryRedundancyVersions RedundancyVersionList OPTIONAL, + -- present only if second TB is to be tx + -- as per modulationSchemeAndNumTB + hs-PDSCH-TxPower DL-TxPower + -- default offset related + -- to p-CPICH or s-CPICH +} + + +--************************************************************** +-- +-- CMAC-MAChs-MACehs-TFRCconfigure-TDD-REQ +-- Applicable Rel-5 or later. +-- To configure the TFRC selection entity in the MAC-hs entity. +-- channelisationCodeOffset + noOfChannelisationCodes shall not be great than 15; +-- noOfChannelisaionCodes = 0 means to delete the HS-PDSCH and HS-SCCH channels, and release all related resource. +-- If explicit is selected, the SS shall use the values specified here for the parameters "modulationScheme", "channelisationCodeOffset", "noOfChannelisatonCodes ", tbSizeIndexOnHS-SCCH", "redundancyVersion" and "hs-PDSCH-TxPower". +-- If sS-Configured is selected, the values specified here are the ranges for "channelisationCodeOffset", "noOfChannelisationCodes", and the initial value of HS-PDSCH transmission power, the SS shall dynamically select the suitable values for the parameters "modulationScheme", "channelisationCodeOffset", "noOfChannelisatonCodes ", tbSizeIndexOnHS-SCCH", "redundancyVersion" and "hs-PDSCH-TxPower" according to the CQI information reported by the UE and the UE's capability category, +-- +--************************************************************** + +CMAC-MAChs-MACehs-TFRCconfigure-TDD-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + tfrcConfigMode CHOICE { + explicitlyConfigured SEQUENCE { + modulationScheme ModulationScheme, + noOfTimeSlots BIT STRING (SIZE (5)), + startCode HS-ChannelisationCode-LCR, + stopCode HS-ChannelisationCode-LCR, + noOfCodesPerTimeslot INTEGER (0..16), + tbSizeIndexOnHS-SCCH INTEGER (0..63), + redundancyVersions RedundancyVersionList, + hs-PDSCH-TxPower DL-TxPower -- default offset related + -- to p-PCCPCH + }, + sS-Configured SEQUENCE { + numofTimeslots INTEGER (0..6), + startCode HS-ChannelisationCode-LCR, + stopCode HS-ChannelisationCode-LCR, + numofCodesPerTimeslot INTEGER (0..16), + iniHS-PDSCH-TxPower DL-TxPower, -- default offset related + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL + }, + relAspTypeExtension SEQUENCE{} -- Rel-10 or later + }, + activationTime SS-ActivationTime OPTIONAL +} + +--************************************************************** +-- +-- HS-DPCCHInfo-r8 +-- mimoStatus represents status of MIMO and shall be set only if mimo-Parameters are provided in HS-PDSCH configuration. +-- secondaryServing-HS-DSCH-Cell indicates if the HS-DSCH secondary serving cell is activated (see 3GPP TS 25.214[12] cl 6A.1) +-- @sic R5-101047 sic@ +-- +--************************************************************** + +HS-DPCCHInfo-r8 ::= SEQUENCE { + cqi-RepetitionFactor CQI-RepetitionFactor, + ackNackRepetitionFactor ACK-NACK-repetitionFactor, + mimoStatus BOOLEAN DEFAULT FALSE, + secondaryServing-HS-DSCH-Cell ENUMERATED { deactivated (0), activated (1) } DEFAULT deactivated + -- Rel-8 or later +} + +--************************************************************** +-- +-- SS-MBMS-MICHConfigurationInfo-r6 +-- Rel-6 or later. +-- +--************************************************************** + +SS-MBMS-MICHConfigurationInfo-r6 ::= SEQUENCE { + michinfo MBMS-MICHConfigurationInfo-r6, + sccpchId-associated INTEGER (0..31) +} + +--************************************************************** +-- +-- Invalid-DL-DCCH-Message +-- PCO Type: DSAP +-- +--************************************************************** + +Invalid-DL-DCCH-Message ::= SEQUENCE { + integrityCheckInfo [0] IntegrityCheckInfo OPTIONAL +-- asn1-message [1] Invalid-DL-DCCH-MsgType +} + +U-CMAC-CONFIG-REQ ::= CHOICE { + config-FDD CMAC-Config-FDD-REQ, + config-TDD CMAC-Config-TDD-REQ, + sysInfo CMAC-SYSINFO-Config-REQ, + secMode CMAC-SecurityMode-Config-REQ, + cipher CMAC-Ciphering-Activate-REQ, + page-FDD CMAC-PAGING-Config-FDD-REQ, + page-TDD CMAC-PAGING-Config-TDD-REQ, + configMACes CMAC-MACes-Config-REQ, + configMACe-FDD CMAC-MACe-Config-FDD-REQ, + configMACe-TDD CMAC-MACe-Config-TDD-REQ, + nodeB CMAC-MACe-NodeB-CellMapping-REQ, + tfrc-FDD CMAC-MAChs-MACehs-TFRCconfigure-FDD-REQ, + tfrc-TDD CMAC-MAChs-MACehs-TFRCconfigure-TDD-REQ, + configMACi-FDD CMAC-MACi-Config-FDD-REQ, + configMACi-TDD CMAC-MACi-Config-TDD-REQ, + nodeB-MACi CMAC-MACi-NodeB-CellMapping-REQ, + configMACis CMAC-MACis-Config-REQ, + configMACi-AG-FDD CMAC-MACi-AG-FDD-REQ, --@sic R5w140013 sic@ + configMACi-AG-TDD CMAC-MACi-AG-TDD-REQ, --@sic R5w140013 sic@ + configMACiE-TFC-FDD CMAC-MACi-E-TFC-Restriction-FDD-REQ, --@sic R5w140208 sic@ + configMACiE-TFC-TDD CMAC-MACi-E-TFC-Restriction-TDD-REQ, --@sic R5w140208 sic@ + configHARQ-MultiFlow CMAC-MACehs-HARQAssign-MultiFlows-REQ, + configRestriction CMAC-Restriction-REQ +} + +U-CMAC-CONFIG-CNF ::= CHOICE { + config CMAC-Config-CNF, + sysInfo CMAC-SYSINFO-Config-CNF, + secMode CMAC-SecurityMode-Config-CNF, + cipher CMAC-Ciphering-Activate-CNF, + page CMAC-PAGING-Config-CNF, + configMACes CMAC-MACes-Config-CNF, + configMACe CMAC-MACe-Config-CNF, + nodeB CMAC-MACe-NodeB-CellMapping-CNF, + tfrc CMAC-MAChs-MACehs-TFRCconfigure-CNF, + configMACi CMAC-MACi-Config-CNF, + nodeB-MACi CMAC-MACi-NodeB-CellMapping-CNF, + configMACis CMAC-MACis-Config-CNF, + configMACi-AG-FDD CMAC-MACi-AG-FDD-CNF, -- @sic R5-144761 sic@ + configMACi-AG-TDD CMAC-MACi-AG-TDD-CNF, -- @sic R5-144761 sic@ + configMACiE-TFC CMAC-MACi-E-TFC-Restriction-CNF , + configHARQ-MultiFlow CMAC-MACehs-HARQAssign-MultiFlows-CNF, + configRestriction CMAC-Restriction-CNF +} + +U-CPHY-CONFIG-CNF ::= CHOICE { + rlSetup CPHY-RL-Setup-CNF, + rlModify CPHY-RL-Modify-CNF, + rlRelease CPHY-RL-Release-CNF, + trchConfig CPHY-TrCH-Config-CNF, + trchRelease CPHY-TrCH-Release-CNF, + cellConfig CPHY-Cell-Config-CNF, + cellRelease CPHY-Cell-Release-CNF, + ini CPHY-Ini-CNF, + txPower CPHY-Cell-TxPower-Modify-CNF, + frameNo CPHY-Frame-Number-CNF, + sync CPHY-Sync-IND, + outOfSync CPHY-Out-of-Sync-IND, + hSDpcchCQI-MultiCell CPHY-HS-DPCCH-CQI-MultiCell-CNF, -- @sic R5-134957 sic@ + hSDpcchCQI-MultiCellInd CPHY-HS-DPCCH-CQI-MultiCell-IND, -- @sic R5-134957 sic@ + measurementConfig CPHY-MeasurementConfig-CNF, -- @sic R5-134957 sic@ + hSDpcchCQI CPHY-HS-DPCCH-CQI-CNF, + hSDpcchCQI-Ind CPHY-HS-DPCCH-CQI-IND + } + +U-CPHY-CONFIG-REQ ::= CHOICE { + rlSetup-FDD CPHY-RL-Setup-FDD-REQ, + rlSetup-TDD CPHY-RL-Setup-TDD-REQ, + rlModify-FDD CPHY-RL-Modify-FDD-REQ, + rlModify-TDD CPHY-RL-Modify-TDD-REQ, + rlRelease-FDD CPHY-RL-Release-FDD-REQ, + rlRelease-TDD CPHY-RL-Release-TDD-REQ, + trchConfig-FDD CPHY-TrCH-Config-FDD-REQ, + trchConfig-TDD CPHY-TrCH-Config-TDD-REQ, + trchRelease-FDD CPHY-TrCH-Release-FDD-REQ, + trchRelease-TDD CPHY-TrCH-Release-TDD-REQ, + cellConfig-FDD CPHY-Cell-Config-FDD-REQ, + cellConfig-TDD CPHY-Cell-Config-TDD-REQ, + cellRelease CPHY-Cell-Release-REQ, + ini CPHY-Ini-REQ, + txPower CPHY-Cell-TxPower-Modify-REQ, + frameNo CPHY-Frame-Number-REQ, + hSDpcchCQI-MultiCell CPHY-HS-DPCCH-CQI-MultiCell-REQ, -- @sic R5-134957 sic@ + measurementConfig CPHY-MeasurementConfig-REQ, -- @sic R5-134957 sic@ + hSDpcchCQI CPHY-HS-DPCCH-CQI-REQ +} + +U-CRLC-CONFIG-CNF ::= CHOICE { + config CRLC-Config-CNF, + seqNo CRLC-SequenceNumber-CNF, + secMode CRLC-SecurityMode-Config-CNF, + cipher CRLC-Ciphering-Activate-CNF, + integrity CRLC-Integrity-Activate-CNF, + integrityFail CRLC-Integrity-Failure-IND, + setRRCmsgSN CRLC-SetRRC-MessageSN-CNF, + rrcMsgSN CRLC-RRC-MessageSN-CNF, + resume CRLC-Resume-CNF, + suspend CRLC-Suspend-CNF, + prohibit CRLC-ProhibitRLC-Ack-CNF, + bindTestDataMultiFlow CRLC-BindTestDataInMultipleMACehs-PDU-MultiFlows-CNF +} + +U-CRLC-CONFIG-REQ ::= CHOICE { + config-FDD CRLC-Config-FDD-REQ, -- @sic R5-110103 sic@ + config-TDD CRLC-Config-TDD-REQ, -- @sic R5-110103 sic@ + seqNo CRLC-SequenceNumber-REQ, + secMode CRLC-SecurityMode-Config-REQ, + cipher CRLC-Ciphering-Activate-REQ, + integrity CRLC-Integrity-Activate-REQ, + setRRCmsgSN CRLC-SetRRC-MessageSN-REQ, + rrcMsgSN CRLC-RRC-MessageSN-REQ, + resume CRLC-Resume-REQ, + suspend CRLC-Suspend-REQ, + prohibit CRLC-ProhibitRLC-Ack-REQ, + bindTestDataMultiFlow CRLC-BindTestDataInMultipleMACehs-PDU-MultiFlows-REQ +} + +U-CPDCP-CONFIG-CNF ::= CHOICE { + config CPDCP-Config-CNF +} + +U-CPDCP-CONFIG-REQ ::= CHOICE { + config CPDCP-Config-REQ +} +--************************************************************** +-- +-- CMAC-MACi-Config-CNF +-- Rel-8 or later +-- Confirm a previous CMAC-MACi-Config-REQ being successful. +-- +--************************************************************** +CMAC-MACi-Config-CNF ::= SEQUENCE { + nodeB-Id INTEGER(0..63) +} + +--************************************************************** +-- +-- CMAC-MACi-Config-FDD-REQ +-- Rel-8 or later +-- +--************************************************************** +CMAC-MACi-Config-FDD-REQ ::= SEQUENCE { + nodeB-Id INTEGER(0..63), + configMessage CHOICE { + setup MACiConfig-FDD, + reconfig MACiConfig-FDD, + reset NULL, + release SS-ActivationTime + } +} + +--************************************************************** +-- +-- CMAC-MACi-Config-TDD-REQ +-- Rel-8 or later +-- +--************************************************************** +CMAC-MACi-Config-TDD-REQ ::= SEQUENCE { + nodeB-Id INTEGER(0..63), + configMessage CHOICE { + setup MACiConfig-TDD, + reconfig MACiConfig-TDD, + reset NULL, + release SS-ActivationTime + } +} + +--************************************************************** +-- +-- MACiConfig-FDD +-- If the macHeaderManipulation field is 'NormalMacHeader' in lCH-Mappinglist, then data received on the E-DCH (MAC-i PDU) shall have it's MAC header inspected to de-multiplex and to determine the appropriate routing, and the MACis PDU shall be passed to the MAC-is together with the relevant LCH-ID, length, F, CFN and subframe number. +-- If the macHeaderManipulation field field is 'OmitMacHeader', then data received on the E-DCH (MAC-i PDU) shall have it's MAC header inspected to de-multiplex and to determine the appropriate routing, then the MAC-i layer shall deliver the MAC-is PDU, SI and the related CFN, subframe number to the MAC-is entity. +-- connectedToMAC-is field is used to provide the possibility that the E DCH MACdFlows from only one MAC-i entity are connected to the MAC-is entity in the inter node B soft handover test cases. When MAC-i is configured in enhanced FACH UL using commonMac-i-r8, the MAC-i entity is always connected to MAC-is. In DC-HSUPA configuration, one MAC-i entity is connected to the MAC-is entity. In DC-HSUPA, e-DCHMacdFlows is applied to the two E-DCH transport channels in the primary and secondary UL frequency. +-- The IEs lCH-Mappinglist and e-DCHMacdFlows can be OMITted when changing the serving cell MAC-i without modification of MAC-i configurations. It will be applied in EDCH SHO. +-- ss-DRX-MAC-Info presence indicates UL DRX shall be applied. +-- Presence of tSN-FieldExtension indicates that the TSN field extension is used as defined in TS 25.321[17] clause 9.2.4.3; the absence indicates that 6 bits TSN is used. +--************************************************************** +MACiConfig-FDD ::= CHOICE { + mAC-i-r8 SEQUENCE { -- Rel-8 or later + activationTime SS-ActivationTime, + lCH-Mappinglist LCH-MappingList OPTIONAL, + e-DCHMacdFlows E-DCHMACdFlows OPTIONAL, + connectedToMAC-is BOOLEAN DEFAULT TRUE, + -- can be set to FALSE in inter nodeB SHO + ss-DRX-MAC-Info SS-DRX-MAC-Info OPTIONAL + }, + commonMac-i-r8 SEQUENCE { + activationTime SS-ActivationTime, + lCH-Mappinglist LCH-MappingList OPTIONAL, + e-DCHMacdFlows CommonE-DCHMACdFlows OPTIONAL, + additional-E-DCH-TransmitBackoff INTEGER (0..15), + max-CCCH-ResourceAllocation ENUMERATED { + tti8(0), tti12(1), tti16(2), tti20(3), tti24(4), tti32(5), + tti40(6), tti80(7)}, + max-PeriodForCollisionResolution INTEGER (8..24) + }, + mAC-i-r9 SEQUENCE { -- Rel-9 or later + activationTime SS-ActivationTime, + lCH-Mappinglist LCH-MappingList OPTIONAL, + e-DCHMacdFlows E-DCHMACdFlows OPTIONAL, + connectedToMAC-is BOOLEAN DEFAULT TRUE, -- can be set to FALSE in inter nodeB SHO + ss-DRX-MAC-Info SS-DRX-MAC-Info OPTIONAL, + tSN-FieldExtension BOOLEAN DEFAULT FALSE + }, + relAspTypeExtension SEQUENCE{} -- Rel-10 or later @sic R5-130613 sic@ +} + +--************************************************************** +-- +-- MACiConfig-TDD +-- If the macHeaderManipulation field is 'NormalMacHeader' in lCH-Mappinglist, then data received on the E-DCH (MAC-i PDU) shall have it's MAC header inspected to de-multiplex and to determine the appropriate routing, and the MACis PDU shall be passed to the MAC-is together with the relevant LCH-ID, length, F, CFN and subframe number. +-- If the macHeaderManipulation field field is 'OmitMacHeader', then data received on the E-DCH (MAC-i PDU) shall have it's MAC header inspected to de-multiplex and to determine the appropriate routing, then the MAC-i layer shall deliver the MAC-is PDU, SI and the related CFN, subframe number to the MAC-is entity. +-- connectedToMAC-is field is used to provide the possibility that the E DCH MACdFlows from only one MAC-i entity are connected to the MAC-is entity in the inter node B soft handover test cases. When MAC-i is configured in enhanced FACH UL using commonMac-i-r8, the MAC-i entity is always connected to MAC-is. In DC-HSUPA configuration, one MAC-i entity is connected to the MAC-is entity. In DC-HSUPA, e-DCHMacdFlows is applied to the two E-DCH transport channels in the primary and secondary UL frequency. +-- The IEs lCH-Mappinglist and e-DCHMacdFlows can be OMITted when changing the serving cell MAC-i without modification of MAC-i configurations. It will be applied in EDCH SHO. +-- ss-DRX-MAC-Info presence indicates UL DRX shall be applied. +-- +--************************************************************** +MACiConfig-TDD ::= CHOICE { + mAC-i-r8 SEQUENCE { -- Rel-8 or later + activationTime SS-ActivationTime, + lCH-Mappinglist LCH-MappingList OPTIONAL, + e-DCHMacdFlows E-DCHMACdFlows-TDD OPTIONAL, + connectedToMAC-is BOOLEAN DEFAULT TRUE + -- can be set to FALSE in inter nodeB SHO + }, + commonMac-i-r8 SEQUENCE { + activationTime SS-ActivationTime, + lCH-Mappinglist LCH-MappingList OPTIONAL, + e-DCHMacdFlows CommonE-DCHMACdFlows OPTIONAL --@sic R5w140013 sic@ + }, + relAspTypeExtension SEQUENCE{} -- Rel-10 or later @sic R5-130613 sic@ +} + +--************************************************************** +-- +-- CMAC-MACi-NodeB-CellMapping-CNF +-- Rel-8 or later +-- Confirm a previous CMAC-MACi-NodeB-CellMapping-REQ being successful. +-- +--************************************************************** +CMAC-MACi-NodeB-CellMapping-CNF ::= SEQUENCE { + nodeB-Id INTEGER(0..63) +} + +--************************************************************** +-- +-- CMAC-MACi-NodeB-CellMapping-REQ +-- Rel-8 or later +-- To put a set of cells under the control of a MAC-i entity indicated by nodeB-Id, which is configured by CMAC-MAC-i-Config-REQ. +-- This ASP establishes the routing relation between E-DCH related channels in these cells with a MAC-i entity. +-- A cell is mapped to only one NodeB, and the cellId allocation is unique in a test. +-- +--************************************************************** +CMAC-MACi-NodeB-CellMapping-REQ ::= SEQUENCE { + nodeB-Id INTEGER(0..63), + celllist SEQUENCE OF INTEGER (0..63) +} + +--************************************************************** +-- +-- CMAC-MACis-Config-CNF +-- Rel-8 or later +-- Confirm a previous CMAC-MACis-Config-REQ being successful. cellId=-1 except when CCCH is configured to MAC-i is entity. +-- +--************************************************************** +CMAC-MACis-Config-CNF ::= SEQUENCE { + cellId INTEGER(-1..63) +} + +--************************************************************** +-- +-- CMAC-MACis-Config-REQ +-- Rel-8 or later +-- This ASP is used for creating and configuring, reconfiguring, resetting or releasing an MAC-is, a cell / nodeB-independent entity in the SS, cellId=-1 except when CCCH is configured to MAC-i is entity. +-- +--************************************************************** +CMAC-MACis-Config-REQ ::= SEQUENCE { + cellId INTEGER(-1..63), + configMessage CHOICE { + setup MACisConfig, + reconfig MACisConfig, + reset NULL, + release SS-ActivationTime} +} + +--************************************************************** +-- +-- MACisConfig +-- MACisConfig establishes the mapping between logical channels and E DCH-MACd-Flows. +-- When the macTestMode is TRUE, the re-ordering entity shall not eliminate the duplicated packets, but passes them to RLC. macTestMode = "TRUE" is used for testing the retransmission function of HARQ process. +-- Presence of tSN-FieldExtension indicates that the TSN field extension is used as defined in TS 25.321[17] clause 9.2.4.3; the absence indicates that 6 bits TSN is used. +--************************************************************** +MACisConfig ::= CHOICE { + mACis-r8 SEQUENCE { -- Rel-8 or later + activationTime SS-ActivationTime, + lCHMappinglist LCH-MappingList, + macTestMode BOOLEAN DEFAULT FALSE + }, + mACis-r9 SEQUENCE { -- Rel-9 or later + activationTime SS-ActivationTime, + lCHMappinglist LCH-MappingList, + macTestMode BOOLEAN DEFAULT FALSE, + tSN-FieldExtension BOOLEAN DEFAULT FALSE + }, + relAspTypeExtension SEQUENCE{} -- Rel-10 or later @sic r5-130613 sic@ +} + + +--************************************************************** +-- +-- LCH-MappingList +-- +--************************************************************** +LCH-MappingList ::= SEQUENCE (SIZE (1..31)) OF LCH-Mapping + + +--************************************************************** +-- +-- LCH-Mapping +-- Both SRBs and RBs can be mapped onto E-DCH. The mechanism for control of MAC header manipulation (macHeaderManipulation) is applied to individual logical channels to be mapped on E-DCH. Typically, the SRBs are configured in 'NormalMacHeader" mode while the RBs in user plane can be configured either in 'NormalMacHeader" or in "OmitMacHeader" mode. +-- If the value of macHeaderManipulation field is 'NormalMacHeader', then data received on the E-DCH MACd flows supporting this logical channel shall have its MAC header inspected to determine the appropriate routing, and removed as normal. The MACis SDU shall be passed to the appropriate logical channel. +-- If the value of macHeaderManipulation field is 'OmitMacHeader', then data received on the E-DCH MACd flows supporting this logical channel shall have it's MAC header inspected to determine the appropriate routing, then the MAC-is layer shall deliver the MAC-is SDU, LCH-ID, Length, F,SI and the related CFN, subframe number, HARQ process identity to the appropriate logical channel. The TTCN receives these fields by RLC-TR-MACis-DATA-IND, then these fields can be checked by the TTCN. +-- HARQ ID = CFN mod 4 for TTI=10ms; +-- HARQ ID = (5*CFN + subframe number) mod 8 for TTI=2ms +-- +--************************************************************** +LCH-Mapping ::= SEQUENCE { + macHeaderManipulation MAC-HeaderManipulation, + logicalChannelIdentity LogicalChannelIdentity, + e-DCH-MAC-d-FlowIdentity E-DCH-MAC-d-FlowIdentity, + rlc-PDU-Size CHOICE { + flexibleSize RLC-PDU-SizeConstraint, + fixedSize RLC-PDU-SizeList + }, + includeInSchedulingInfo BOOLEAN, + mac-LogicalChannelPriority MAC-LogicalChannelPriority, + logicalChannelType LogicalChannelType, + rB-Identity INTEGER (-31..32) OPTIONAL +} + + +--************************************************************** +-- +-- CMAC-MACi-AG-FDD-CNF @sic R5-144761 sic@ +-- Confirm a previous CMAC-MACi-AG-REQ being successful. +-- +--************************************************************** +CMAC-MACi-AG-FDD-CNF ::= SEQUENCE { + nodeB-Id INTEGER(0..63), + cellId INTEGER(0..63) -- @sic R5-134957 sic@ +} + +--************************************************************** +-- +-- CMAC-MACi-AG-TDD-CNF @sic R5-144761 sic@ +-- Confirm a previous CMAC-MACi-AG-REQ being successful. +-- +--************************************************************** +CMAC-MACi-AG-TDD-CNF ::= SEQUENCE { + nodeB-Id INTEGER(0..63) +} + +--************************************************************** +-- +-- CMAC-MACi-AG-FDD-REQ +-- The hARQProcId shall be converted to the nearest CFN (and subframe number if TTI = 2 ms) by the SS, and the Absolute Grant is sent in that CFN (and subframe number if TTI = 2 ms). +-- The absolute grant is applied on the A-GCH configured in the referred cellId. +-- +--************************************************************** +CMAC-MACi-AG-FDD-REQ ::= SEQUENCE { + nodeB-Id INTEGER(0..63), + cellId INTEGER(0..63), + grantType ENUMERATED {primary(0), secondary(1)}, + absoluteGrantValue BIT STRING(SIZE(5)), + absoluteGrantScope BIT STRING(SIZE(1)), + hARQProcId INTEGER (0..7), + activationTime SS-ActivationTime +} + +--************************************************************** +-- +-- CMAC-MACi-AG-TDD-REQ +-- The hARQProcId shall be converted to the nearest CFN (and subframe number if TTI = 2 ms) by the SS, and the Absolute Grant is sent in that CFN (and subframe number if TTI = 2 ms). +-- The absolute grant is applied on the A-GCH configured in the referred cellId. +-- +--************************************************************** +CMAC-MACi-AG-TDD-REQ ::= SEQUENCE { + nodeB-Id INTEGER(0..63), + absoluteGrantValue BIT STRING(SIZE(5)), + channelisationCode UL-TS-ChannelisationCode, + tRRI BIT STRING(SIZE(5)), + rDI INTEGER(0..7), + eCSN INTEGER(0..7), + eI INTEGER(0..3), + eNI INTEGER(0..7), + hARQProcId INTEGER (0..7), + activationTime SS-ActivationTime +} + +--************************************************************** +-- +-- CMAC-MACi-E-TFC-Restriction-CNF +-- Rel-8 or later +-- For MAC emulator to report that a previous attempt of restricting TFCs have been successful +-- +--************************************************************** +CMAC-MACi-E-TFC-Restriction-CNF ::= SEQUENCE { + nodeB-Id INTEGER(0..63), + cellId INTEGER(0..63) -- @sic R5-134957 sic@ +} + + +--************************************************************** +-- +-- CMAC-MACi-E-TFC-Restriction-FDD-REQ +-- Rel-8 or later +-- To request to configure MACi entity. The field restrictAllowedTFCs is provided to allow the E-TFCI to be restricted on the referred cell Id. The IE fullE-TFCS will be used to remove any previous E-TFCS restriction configured. +-- +--************************************************************** +CMAC-MACi-E-TFC-Restriction-FDD-REQ ::= SEQUENCE { + nodeB-Id INTEGER (0..63), + cellId INTEGER(0..63), -- @sic R5-134957 sic@ + restrictAllowedTFCs CHOICE { + e-TFCS-Restriction E-TFCS-Restriction, + fullE-TFCS NULL } +} + +--************************************************************** +-- +-- CMAC-MACi-E-TFC-Restriction-TDD-REQ +-- Rel-8 or later +-- To request to configure MACi entity. The field restrictAllowedTFCs is provided to allow the E-TFCI to be restricted on the referred cell Id. The IE fullE-TFCS will be used to remove any previous E-TFCS restriction configured. +-- +--************************************************************** +CMAC-MACi-E-TFC-Restriction-TDD-REQ ::= SEQUENCE { + nodeB-Id INTEGER (0..63), + cellId INTEGER(0..63), -- @sic R5-134957 sic@ + restrictAllowedTFCs CHOICE { + e-TFCS-Restriction E-TFCS-Restriction-TDD, + fullE-TFCS NULL + } +} + +E-TFCS-Restriction-TDD ::= SEQUENCE OF INTEGER (0..63) + + +--************************************************************** +-- +-- E-TFCS-Restriction +-- The E-TFCS restriction is a list of E-TFCIs, and can be used to verify that the UE has used a specific TFC. Any data received by the SS using a forbidden TFCI shall be discarded. +-- +--************************************************************** +E-TFCS-Restriction ::= SEQUENCE OF INTEGER (0..127) + + +--************************************************************** +-- +-- CMAC-MACehs-HARQAssign-MultiFlows-CNF +-- Applicable Rel-7 or later +-- Confirm a previous CMAC-MACehs-HARQAssign-MultiFlows-REQ being successful. +-- +--************************************************************** +CMAC-MACehs-HARQAssign-MultiFlows-CNF ::= SEQUENCE { + cellId INTEGER(-1..63) +} + +--************************************************************** +-- +-- CMAC-MACehs-HARQAssign-MultiFlows-REQ +-- Applicable Rel-7 or later +-- To assign the HARQ processes for the simultaneous transmission of the MAC-ehs PDUs on the different flows on the same TTI . +-- After successful transmission the MAC-ehs returns back to normal operation. In the normal operation suitable HARQ processes are selected by HARQ entities in the MAC-ehs to serve the MAC-ehs PDU without TTCN intervening. +-- For Dual Cell, the primaryFlow corresponds to the serving cell, the secPrimaryFlow corresponds to the secondary cell. +-- For MIMO, the primary and secondary HARQ process identities (of serving cell) are set as per 3GPP TS 25.212 [58], subclause 4.6B.2.5. +-- For combined DC-HSDPA and MIMO the primaryFlow and secondary flow correspond to the serving cell, the secPrimaryFlow and secSecondaryFlow to the secondary cell. +-- +--************************************************************** +CMAC-MACehs-HARQAssign-MultiFlows-REQ ::= SEQUENCE { + cellId INTEGER(-1..63), + primaryFlowHarqProcessId INTEGER(0..15|31), -- of serving cell + secondaryFlowHarqProcessId INTEGER(0..15|31) OPTIONAL, -- of serving cell + secPrimaryFlowHarqProcessId INTEGER(0..15|31) OPTIONAL, + -- of secondary cell Rel-9 or later + secSecondaryFlowHarqProcessId INTEGER(0..15|31) OPTIONAL, + -- of secondary cell Rel-9 or later + relAspTypeExtension HARQAssign-MultiFlows-r10OrLaterExtensionType OPTIONAL -- Rel-10 or later @sic R5-130613 R5-134957 sic@ +} + +--************************************************************** +-- +-- CMAC-MACehs-HARQAssign-MultiFlows-REQ +-- Rel-10 or later +-- Extension to assign the HARQ processes for the simultaneous transmission of the MAC-ehs PDUs on the different flows on the second and third secondary cells on the same TTI when 4C-HSDPA is configured. +-- In 4C-HSDPA, the primaryFlow corresponds to the serving cell, the secPrimaryFlow corresponds to the first secondary cell, the thirdPrimaryFlow corresponds to the second secondary cell, the fourthPrimaryFlow corresponds to the third secondary cell, when configured. +-- In 4C-HSDPA and MIMO: the primaryFlow and secondaryFlow corresponds to the serving cell. The secPrimaryFlow and secSecondaryFlow corresponds to the first secondary cell. The thirdPrimaryFlow and thirdSecondaryFlow corresponds to the second secondary cell. The fourthPrimaryFlow and fourthSecondaryFlow corresponds to the third secondary cell, when configured. +-- +--************************************************************** + +HARQAssign-MultiFlows-r10OrLaterExtensionType ::= CHOICE { + rel10-AspExt SEQUENCE { + thirdPrimaryFlowHarqProcessId INTEGER(0..15|31), + -- of third cell + thirdSecondaryFlowHarqProcessId INTEGER(0..15|31) OPTIONAL, + -- for MIMO in third cell + fourthPrimaryFlowHarqProcessId INTEGER(0..15|31) OPTIONAL, + -- of fourth cell for 4C-HSDPA + fourthSecondaryFlowHarqProcessId INTEGER(0..15|31) OPTIONAL + -- for MIMO in fourth cell for 4C-HSDPA + } +} + +--************************************************************** +-- +-- CMAC-Restriction-REQ +-- To request to configure MAC entity. The field restrictAllowedTFCs is provided to allow the UL and/or DL SS TFCS to be restricted for a specific transport channel. This information only needs to be sent to the MAC layer, since it is the MAC layer's responsibility to determine the set of valid TFCs each TTI. +-- +--************************************************************** +CMAC-Restriction-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + ratType RatType, + restrictAllowedTFCs TFC-Restriction +} + +--************************************************************** +-- TFC-Restriction +-- This type is used to specify the allowed TFCs within the current TFCS. A TFC restriction is applicable until a subsequent TFC restriction is applied. TFC restrictions are not cumulative, so each TFC restriction completely replaces the previous TFC restriction.The downlink restriction can be used to ensure that the SS uses a specific TFC for transmission of data, by only allowing the 'No data' TFC, and the 'desired' TFC. It may also be necessary to include one or more 'signalling only' TFCs to allow signalling to occur.The uplink restriction can be used to verify that the UE has used a specific TFC. Any data received by the SS using a forbidden TFCI shall be discarded. +--************************************************************** +TFC-Restriction ::= SEQUENCE { + ulTFCI-Restriction TFC-Subset OPTIONAL, + dlTFCI-Restriction TFC-Subset OPTIONAL +} + +--************************************************************** +-- +-- CMAC-Restriction-CNF +-- For MAC emulator to report that a previous attempt of restricting TFCs have been successful. +-- +--************************************************************** +CMAC-Restriction-CNF ::= SEQUENCE { + cellId INTEGER(-1..63), + routingInfo RoutingInfo +} + + +--************************************************************** +-- +-- CRLC-BindTestDataInMultipleMACehs-PDU-MultiFlows-CNF +-- To confirm the request of binding subsequent data sending RLC-TR/UM/AM-TestDataReq on the specified RB mapped on HS-DSCH. +-- +--************************************************************** +CRLC-BindTestDataInMultipleMACehs-PDU-MultiFlows-CNF ::= SEQUENCE{ + cellId INTEGER(-1..63), + routingInfo RoutingInfo, -- RB ID desired to be given + result ENUMERATED{failure(0), success(1)} +} + +--************************************************************** +-- +-- CRLC-BindTestDataInMultipleMACehs-PDU-MultiFlows-REQ +-- To request of binding subsequent data sending RLC-TR/UM/AM-TestDataReq on the specified RB mapped on HS-DSCH in two MAC-ehs PDUs, one for each primary and secondary flow. +-- On the request, the transmission of the test data is temporarily suppressed on the radio bearer till all SDUs for all flows are received by RLC layer on the Radio Bearer. After receiving all SDU's the RLC layer submits to MAC such that all of them are sent in two MAC-ehs PDUs. +-- +--************************************************************** +CRLC-BindTestDataInMultipleMACehs-PDU-MultiFlows-REQ ::= SEQUENCE{ + cellId INTEGER(-1..63), + routingInfo RoutingInfo, -- RB ID desired to be given + primaryFlowNumOfSDUs INTEGER, + -- Number of RLC SDU's for primary flow of serving cell + secondaryFlowNumOfSDUs INTEGER OPTIONAL, + -- Number of RLC SDU's for secondary flow of serving cell + secPrimaryFlowNumOfSDUs INTEGER OPTIONAL, + -- Number of RLC SDU's for secondary cell primary flow Rel-9 or later + secSecondaryFlowNumOfSDUs INTEGER OPTIONAL, + -- Number of RLC SDU's for secondary cell secondary flow Rel-9 or later + relAspTypeExtension BindTestDataInMultipleMACehs-r10OrLaterExtensionType OPTIONAL -- Rel-10 or later @sic R5-130613 R5-134957 sic@ +} + +--************************************************************** +-- +-- BindTestDataInMultipleMACehs-r10OrLaterExtensionType +-- +--************************************************************** +BindTestDataInMultipleMACehs-r10OrLaterExtensionType ::= CHOICE { + rel10-AspExt SEQUENCE { -- Extension for 4C-HSDPA with or without MIMO + thirdPrimaryFlowNumOfSDUs INTEGER, + -- Number of RLC SDU's for primary flow of third cell + thirdSecondaryFlowNumOfSDUs INTEGER OPTIONAL, + -- Number of RLC SDU's for secondary flow of third cell + fourthPrimaryFlowNumOfSDUs INTEGER OPTIONAL, + -- Number of RLC SDU's for fourth cell primary flow + fourthSecondaryFlowNumOfSDUs INTEGER OPTIONAL + -- Number of RLC SDU's for fourth cell secondary flow + } +} + + +--************************************************************** +-- PDCP ASPs +--************************************************************** +--************************************************************** +-- +-- CPDCP-Config-CNF +-- For PDCP emulator to report that a previous attempt to setup, reconfigure or release a logical channel is successful. +-- +--************************************************************** +CPDCP-Config-CNF ::= SEQUENCE { + cellId INTEGER(-1..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CPDCP-Config-REQ +-- To request to configure PDCP entity. Setup is used for creation of the PDCP instances or the PDCP resources. +-- Release is used for free the all PDCP resources. +-- The reconfiguration is to change the PDCP parameters. +-- PDCP entity does not belong to a particular cell, the cellId shall assign the value -1. +-- The routingInfo is RB identity which is used to connect this PDCP entity to the RLC entity with the same RB identity and it is also used for PDCP-DATA-REQ ASP to transmit data through this PDCP entity. +-- +--************************************************************** +CPDCP-Config-REQ ::= SEQUENCE { + cellId INTEGER(-1..63), + routingInfo RoutingInfo, + ratType RatType, + configMessage CHOICE { + setup SS-PDCP-Info, + reconfigure SS-PDCP-InfoReconfig, + release NULL + } +} + +--************************************************************** +-- +-- SS-PDCP-Info +-- When configuring downlink direction of the SS, the UL-RFC3095-r4 shall be used; when configuring uplink direction of the SS the DL-RFC3095-r4 shall be used. +-- +--************************************************************** +SS-PDCP-Info ::= SEQUENCE { + pDCP-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + pDCP-Info PDCP-Info-r4, + cSVoHS-Info CS-HSPA-Information OPTIONAL -- Rel-7 or later +} + +--************************************************************** +-- +-- SS-PDCP-InfoReconfig +-- When configuring downlink direction of the SS, the UL-RFC3095-r4 shall be used; when configuring uplink direction of the SS the DL-RFC3095-r4 shall be used. +-- +--************************************************************** +SS-PDCP-InfoReconfig ::= SEQUENCE { + pDCP-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, --@sic R5w140013 sic@ + pDCP-Info PDCP-InfoReconfig-r4, + cSVoHS-Info CS-HSPA-Information OPTIONAL -- Rel-7 or later +} + +END diff --git a/IMS_PART4_IWD_14wk37/Common/UTRAN/UTRAN_CommonDefs.ttcn b/IMS_PART4_IWD_14wk37/Common/UTRAN/UTRAN_CommonDefs.ttcn new file mode 100644 index 0000000..56491b1 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/UTRAN/UTRAN_CommonDefs.ttcn @@ -0,0 +1,482 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 22:08:20 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12181 $ +/******************************************************************************/ + +module UTRAN_CommonDefs { + import from CommonDefs all; + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from NAS_CommonTypeDefs all; + + //============================================================================= + // Type definitions + //----------------------------------------------------------------------------- + + type integer SS_CN_DomainIdentity (0..1); /* CN domain identity type in TTCN tabular format; @status APPROVED */ + type enumerated UTRAN_DelayForUserPlaneSignalling_Type { noDelay, waitForIP }; //@sic R5s130384 sic@ + + // embedded RRC types: + type TFCS_ReconfAdd.ctfcSize.ctfc2Bit TFCS_ReconfAdd_CtfcSize_Ctfc2Bit_List_Type; /* auxiliary type definition; @status APPROVED */ + type TFCS_ReconfAdd_CtfcSize_Ctfc2Bit_List_Type[0] TFCS_ReconfAdd_CtfcSize_Ctfc2Bit_Type; /* auxiliary type definition; @status APPROVED */ + + type TFCS_ReconfAdd.ctfcSize.ctfc4Bit TFCS_ReconfAdd_CtfcSize_Ctfc4Bit_List_Type; /* auxiliary type definition; @status APPROVED */ + type TFCS_ReconfAdd_CtfcSize_Ctfc4Bit_List_Type[0] TFCS_ReconfAdd_CtfcSize_Ctfc4Bit_Type; /* auxiliary type definition; @status APPROVED */ + + type TFCS_ReconfAdd.ctfcSize.ctfc6Bit TFCS_ReconfAdd_CtfcSize_Ctfc6Bit_List_Type; /* auxiliary type definition; @status APPROVED */ + type TFCS_ReconfAdd_CtfcSize_Ctfc6Bit_List_Type[0] TFCS_ReconfAdd_CtfcSize_Ctfc6Bit_Type; /* auxiliary type definition; @status APPROVED */ + + type TFCS_ReconfAdd.ctfcSize.ctfc8Bit TFCS_ReconfAdd_CtfcSize_Ctfc8Bit_List_Type; /* auxiliary type definition; @status (APPROVED) */ + type TFCS_ReconfAdd_CtfcSize_Ctfc8Bit_List_Type[0] TFCS_ReconfAdd_CtfcSize_Ctfc8Bit_Type; /* auxiliary type definition; @status (APPROVED) */ + + type PhysicalChannelCapability_edch_r6.fdd_edch.supported.edch_PhysicalLayerCategory Edch_PhysicalLayerCat_Type; /* @status APPROVED */ + + type UTRA_PriorityInfoList.utra_ServingCell.priority UtraServingCellPriorityValue_Type; /* @status APPROVED */ + type UTRA_PriorityInfoList.utra_ServingCell.s_PrioritySearch1 UtraServingCellPrioritySearch1_Type; /* @status APPROVED */ + type UTRA_PriorityInfoList.utra_ServingCell.s_PrioritySearch2 UtraServingCellPrioritySearch2_Type; /* @status APPROVED */ + type UTRA_PriorityInfoList.utra_ServingCell.threshServingLow UtraServingCellthreshServingLow_Type; /* @status APPROVED */ + type UTRANMobilityInformation.later_than_r3.criticalExtensions.criticalExtensions.r7.v860NonCriticalExtensions UTRANMobilityInformation_v860ext2_Type; + + type EUTRA_FrequencyAndPriorityInfo.priority EutraFrequencyAndPriorityInfoPriorityValue_Type; /* @status APPROVED */ + type EUTRA_FrequencyAndPriorityInfo.qRxLevMinEUTRA EutraFrequencyAndPriorityInfoQrxLevMin_Type; /* @status APPROVED */ + type EUTRA_FrequencyAndPriorityInfo.threshXhigh EutraFrequencyAndPriorityInfoThreshXhigh_Type; /* @status APPROVED */ + type EUTRA_FrequencyAndPriorityInfo.threshXlow EutraFrequencyAndPriorityInfoThreshXlow_Type; /* @status APPROVED */ + + type RRCConnectionSetupComplete.v370NonCriticalExtensions RRCConnSetupCmpl_v370NonCritExt_Type; /* auxiliary type definition; @status APPROVED */ + type RRCConnectionRelease.later_than_r3.criticalExtensions.r4.v4d0NonCriticalExtensions RRCConnectionRelease_v4d0NonCriticalExtensions_Type; /* @status APPROVED */ + type RRCConnectionReject.r3.laterNonCriticalExtensions RRCConnectionReject_r3_laterNonCriticalExtensions_Type; + + type MultiplePLMN_List_r6.multiplePLMNs Multiple_PLMN_List_Type; + + type UL_CCTrCH_r7.tddOption UL_CCTrCH_r7_TddOption_Type; + type UL_CCTrCH_r4.tddOption UL_CCTrCH_r4_TddOption_Type; + + type TGP_Sequence_r8.tgps_Status TGPS_Status_r8_Type; + + type SysInfoType19.v920NonCriticalExtensions SIB19_v920NonCriticalExtensions_Type; + + type DL_DPCH_InfoCommon_r6.cfnHandling DL_DPCH_CfnHandling_r6_Type; + + type HARQ_Info_r7.numberOfProcesses HarqNrOfProcesses_Type; + type HARQ_Info_r11.numberOfProcesses HarqNrOfProcesses_r11_Type; + + type enumerated UTRAN_FddTddMessageClass_Type {FDDr99, FDDr5, FDDr6, FDDr7, FDDr8, FDDr9, FDDr10, FDDr11, TDDr4, TDDr5, TDDr7, TDDr9, TDDr10, TDDr11}; // @sic R5s130195 Utran Release R5-140314: added FDDr11/TDDr11 sic@ + + type LoggedANRConfigurationInfo.loggingDuration LoggedANRConfigurationInfo_LoggingDuration_Type; + type LoggedANRConfigurationInfo.interRATANRforEUTRAIndicator LoggedANRConfigurationInfo_InterRATANRforEUTRAIndicator_Type; + type LoggedANRConfigurationInfo.interRATANRforGSMIndicator LoggedANRConfigurationInfo_InterRATANRforGSMIndicator_Type; + type DL_HSPDSCH_Information_r9.modeSpecificInfo.fdd.dl_64QAM_Configured DL_64QAM_Configured_Type; + type DL_HSPDSCH_Information_r11.modeSpecificInfo.fdd.dl_64QAM_Configured DL_64QAM_Configured_r11_Type; + type DL_SecondaryCellInfoFDD_r10.configurationInfo.newConfiguration.dl_64QAM_Configured DL_SecondaryCell64QAM_Configured_Type; + type DL_SecondaryCellInfoFDD_r10.configurationInfo.newConfiguration.hS_SCCHChannelisationCodeInfo DL_SecondaryHsScchCodeInfo_Type; + type HS_SCCH_Info_r9.modeSpecificInfo.fdd.hS_SCCHChannelisationCodeInfo HsScchInfo_ChCodeInfo_Type; + type SIB19_v920NonCriticalExtensions_Type.va80NonCriticalExtensions.vb30NonCriticalExtensions.sysInfoType19_vb30ext SIB19_sysInfoType19_vb30ext; + + type DL_InformationPerRL_r8.dl_dpchInfo DL_InformationPerRL_DpchInfo_r8; + type EUTRA_MeasuredCells.rSRP RSRP_Type; + type EUTRA_MeasuredCells.rSRQ RSRQ_Type; + + //============================================================================= + // Constants + //----------------------------------------------------------------------------- + + const float tsc_IdleMode_GenericTimer_UTRAN := 360.0; /* Idle mode generic timer according to 36.523-3 cl. 7.8 + @status APPROVED */ + const integer tsc_AICH1 := 7; /* Physical channel identity for AICH channel associated with first PRACH + @status APPROVED */ + const integer tsc_BCCH1 := 1; /* Logical channel identity for logical channel BCCH mapped on BCH + @status APPROVED */ + const integer tsc_BCCH6 := 6; /* Logical channel identity for logical channel BCCH mapped on FACH + @status APPROVED */ + const integer tsc_BCH1 := 11; /* Identity for transport channel BCH + @status APPROVED */ + const integer tsc_E_AGCH := 14; + const integer tsc_E_DPCH := 22; + const integer tsc_E_HICH := 15; + const integer tsc_E_RGCH := 16; + const integer tsc_FACH1 := 13; /* transport channel identity for FACH + @status APPROVED */ + const integer tsc_FACH2 := 14; /* transport channel identity for second FACH when it is connected to a secondary CCPCH together with PCH + (transport channel identity = 14) + @status APPROVED */ + const integer tsc_F_DPCH := 28; + const integer tsc_HSPDSCH := 18; // physical channel identity for HS-PDSCH. + const integer tsc_PICH1 := 6; /* Physical channel identity for PICH channel associated with first secondary CCPCH + @status APPROVED */ + const integer tsc_PICH2 := 11; // Physical channel identity for PICH2 channel associated with second secondary CCPCH + const integer tsc_PRACH1 := 8; /* Physical channel identity for first PRACH channel + @status APPROVED */ + const integer tsc_PRACH2 := 9; // Physical channel identity for second PRACH channel + const integer tsc_P_CCPCH := 4; /* Physical channel identity for primary CCPCH channel + @status APPROVED */ + const integer tsc_P_CPICH := 0; /* Physical channel identity for primary CPICH channel + @status APPROVED */ + const integer tsc_P_SCH := 1; /* Physical channel identity for primary SCH channel + @status APPROVED */ + const integer tsc_RACH1 := 15; /* transport channel identity for RACH + @status APPROVED */ + const integer tsc_AttOn := 1; /* Attach flag value On + @status APPROVED */ + const integer tsc_AttenuationCellOFF := 123; /* Value of attenuator to be used when setting a Cell OFF (3GPP 34.108 / Table 6.1.4) + @status APPROVED */ + const integer tsc_AttenuationServingCell := -1; /* Value different for FDD/TDD so this is just a flag to be used in f_UTRAN_SetCellPower + @status APPROVED */ + const integer tsc_AttenuationSuitableNeighbourCell := -2; /* Value different for FDD/TDD so this is just a flag to be used in f_UTRAN_SetCellPower + @status APPROVED */ + const integer tsc_AttenuationNonSuitableCell := -3; /* Value different for FDD/TDD so this is just a flag to be used in f_UTRAN_SetCellPower + @status APPROVED */ + const bitstring tsc_CellIdCell5 := '0000000000000000000000000000'B; /* @status APPROVED */ + const bitstring tsc_CellIdCell7 := '0000000000000000000000000001'B; /* @status APPROVED */ + const bitstring tsc_CellIdCell8 := '0000000000000000000000000010'B; /* @status APPROVED */ + const bitstring tsc_CellIdCell9 := '0000000000000000000000000011'B; /* @status APPROVED */ + + + const integer tsc_Now := 512; /* To indicate the system information change starts immediately + @status APPROVED */ + const octetstring tsc_RAC_Def := '01'O; /* Routing Area Code, 1 octet, 3GPP 24.008 clause 10.5.1.12.3 + @status APPROVED */ + const integer tsc_SFN_Offset := 0; /* SFN offset value + @status APPROVED */ + const octetstring tsc_T3212_Def := '1E'O; /* infinite + @status APPROVED */ + const integer tsc_TimingsCCPCH1 := 0; /* timing offset for secondary CCPCH1. default is 0 + @status APPROVED */ + const bitstring tsc_URA_IdCell5 := '0000000000000001'B; /* @status APPROVED */ + const bitstring tsc_URA_IdCell7 := '0000000000000001'B; /* @status APPROVED */ + const bitstring tsc_URA_IdCell8 := '0000000000000010'B; /* @status APPROVED */ + const bitstring tsc_URA_IdCell9 := '0000000000000010'B; /* @status APPROVED */ + + const integer tsc_CellParametersID_Cell1 := 0; /* CellParametersID for CELL5 + @status APPROVED */ + const integer tsc_CellParametersID_Cell2 := 4; /* CellParametersID for CELL5 + @status APPROVED */ + const integer tsc_CellParametersID_Cell3 := 8; /* CellParametersID for CELL5 + @status APPROVED */ + const integer tsc_CellParametersID_Cell4 := 12; /* CellParametersID for CELL5 + @status APPROVED */ + const integer tsc_CellParametersID_Cell5 := 114; /* CellParametersID for CELL5 + @status APPROVED */ + const integer tsc_CellParametersID_Cell6 := 119; /* CellParametersID for CELL5 + @status APPROVED */ + const integer tsc_CellParametersID_Cell7 := 123; /* CellParametersID for CELL7 + @status APPROVED */ + const integer tsc_CellParametersID_Cell8 := 127; /* CellParametersID for CELL8 + @status APPROVED */ + const integer tsc_CellParametersID_Cell9 := 20; /* CellParametersID for CELL9 + @status APPROVED */ + + const integer tsc_DL_CCCH5 := 5; /* Logical channel identity for logical channel CCCH mapped on FACH (downlink) + @status APPROVED */ + const integer tsc_DL_DCCH1 := 1; /* Logical channel identity for DCCH1 (downlink), used by signalling radio bearer 1 + @status APPROVED */ + const integer tsc_DL_DCCH2 := 2; /* Logical channel identity for DCCH2 (downlink), used by signalling radio bearer 2 + @status APPROVED */ + const integer tsc_DL_DCCH3 := 3; /* Logical channel identity for DCCH3 (downlink), used by signalling radio bearer 3 + @status APPROVED */ + const integer tsc_DL_DCCH4 := 4; /* Logical channel identity for DCCH4 (downlink), used by signalling radio bearer 4 + @status APPROVED */ + const integer tsc_DL_DCH1 := 6; /* identity for transport channel DCH1 (downlink), in AMR speech this transport channel is used for RAB subflow#1 + @status APPROVED */ + const integer tsc_DL_DCH2 := 7; /* identity for transport channel DCH2 (downlink), in AMR speech this transport channel is used for RAB subflow#2 + @status APPROVED */ + const integer tsc_DL_DCH3 := 8; /* identity for transport channel DCH3 (downlink), in AMR speech this transport channel is used for RAB subflow#3 + @status APPROVED */ + const integer tsc_DL_DCH4 := 9; // identity for transport channel DCH4 (downlink), in AMR speech + const integer tsc_DL_DCH5 := 10; /* identity for transport channel DCH5 (downlink), in most case this transport channel is used for signalling bearers. + @status APPROVED */ + const integer tsc_DL_DPCH1 := 26; /* physical channel identity for DPCH1(downlink) + @status APPROVED */ + const integer tsc_DL_DTCH1 := 7; /* Logical channel identity for DTCH1 (downlink) + @status APPROVED */ + const integer tsc_DL_DTCH2 := 8; /* Logical channel identity for DTCH2 (downlink) + @status APPROVED */ + const integer tsc_DL_DTCH3 := 9; /* Logical channel identity for DTCH3 (downlink) + @status APPROVED */ + const integer tsc_DL_DTCH4 := 10; // Logical channel identity for DTCH4 (downlink) + const integer tsc_DPCH_PowerOffsetPILOT := 0; /* Power offsett value of PILOT on DPCH + @status APPROVED */ + const integer tsc_DPCH_PowerOffsetTFCI := 0; /* Power offsett value of TFCI on DPCH + @status APPROVED */ + const integer tsc_DPCH_PowerOffsetTPC := 0; /* Power offsett value of TPC on DPCH + @status APPROVED */ + const integer tsc_GainFactorBetaC_Below64k := 11; /* Gain factor Beta C value to be used for RAB UL below 64kbps + @status APPROVED */ + const integer tsc_GainFactorBetaC_Higher64k := 9; // Gain factor Beta C value to be used for RAB UL higher than 64kbps + const integer tsc_GainFactorBetaD := 15; /* @status APPROVED */ + const integer tsc_RB_BCCH := -1; /* radio bearer idenity for bearer on TM + BCCH + BCH used for broadcasting system information blocks + @status APPROVED */ + const integer tsc_RB_BCCH_FACH := -3; /* signalling radio bearer on TM + BCCH + FACH + sCCPCH1 + @status APPROVED */ + const integer tsc_RB_DTCH_E_DCH_MAC1 := -21; // Special RB for DTCH configured in TM for MAC test cases + const integer tsc_RB_DTCH_E_DCH_MAC2 := -22; // Special second RB for DTCH configured in TM for MAC test cases + const integer tsc_RB_PCCH := -2; /* radio bearer idenity for bearer on TM + PCCH + PCH used for sending paging message when there is no RAB subflows for speech + @status APPROVED */ + const integer tsc_RB0 := 0; /* signalling radio bearer on TM + CCCH + @status APPROVED */ + const integer tsc_RB1 := 1; /* sibnalling radio bearer on UM + DCCH + @status APPROVED */ + const integer tsc_RB10 := 10; /* radio access bearer identity, in AMR speech this RB is RAB subflow#1, + in other cases this is a radio access bearer + @status APPROVED */ + const integer tsc_RB11 := 11; /* radio access bearer identity, in AMR speech this RB is RAB subflow#2, + in some other cases this is the signalling radio bearer for TM + BCCH_FACH + @status APPROVED */ + const integer tsc_RB12 := 12; /* radio access bearer, in AMR speech this RB is RAB subflow#3, in some other cases this is the bearer for TM PCCH + @status APPROVED */ + const integer tsc_RB13 := 13; // radio access bearer, in AMR speech this RB is RAB subflow#3, in some other cases this is the bearer for TM PCCH + const integer tsc_RB17 := 17; // Fifth PS Radio Bearer associated with a DTCH on HS-DSCH + const integer tsc_RB26 := 26; // second PS Radio Bearer associated with a DTCH on HS-DSCH + const integer tsc_RB27 := 27; // Third PS Radio Bearer associated with a DTCH on HS-DSCH + const integer tsc_RB28 := 28; // Fourth PS Radio Bearer associated with a DTCH on HS-DSCH + const integer tsc_RB2 := 2; /* signalling radio bearer on AM + DCCH + @status APPROVED */ + const integer tsc_RB20 := 20; /* radio access bearer for PS RAB + @status APPROVED */ + const integer tsc_RB21 := 21; // radio access bearer for PS RAB + const integer tsc_RB22 := 22; // Second AM radio access bearer for PS + const integer tsc_RB24 := 24; // Second AM radio access bearer for PS + const integer tsc_RB25 := 25; /* PS Radio Bearer associated with a DTCH on HS-DSCH + @status APPROVED */ + const integer tsc_RB29 := 29; // RB Id for Radio bearer that carries the 2nd CCCH in the DL + const integer tsc_RB3 := 3; /* signalling radio bearer on AM + DCCH for high priority NAS_DT + @status APPROVED */ + const integer tsc_RB3_DCCH_RRC := -16; /* RB identity used for configuration of AM RLC entity + * in the SS. SS will use it to simulate the high priority + * NAS SRB mapped to DCH for routing UL NAS messages in + * RRC test cases. + * A negative value is used to indicate that the SS + * configuration is not identical to the UE configuration */ + const integer tsc_RB30 := 30; // radio access bearer for CBS RAB + const integer tsc_RB31 := 31; + const integer tsc_RB4 := 4; /* signalling radio bearer on AM + DCCH for low priority NAS_DT + @status APPROVED */ + const integer tsc_RB5 := 5; /* signalling radio bearer on TM + DCCH for AMR Signalling + @status (APPROVED) */ + const integer tsc_RRC_TI := 0; /* RRC Transaction Identifier + @status APPROVED */ + const integer tsc_PCCH1 := 1; /* Logical channel identity for logical channel PCCH + @status APPROVED */ + const integer tsc_PCH1 := 12; /* transport channel identity for PCH + @status APPROVED */ + const integer tsc_N300 := 3; /* @status APPROVED */ + const integer tsc_S_CCPCH1 := 5; /* Physical channel identity for first secondary CCPCH channel + @status APPROVED */ + const integer tsc_S_CCPCH_2ndScrCode := 0; /* Secondary scrambling code for S-CCPCH channels + @status APPROVED */ + const integer tsc_S_CCPCH_PowerOffsetPILOT := 6; /* Power offsett value of PILOT on sCCPCH + @status APPROVED */ + const integer tsc_S_CCPCH_PowerOffsetTFCI := 6; /* Power offsett value of TFCI on sCCPCH + @status APPROVED */ + const integer tsc_S_SCH := 2; /* Physical channel identity for secondary SCH channel + @status APPROVED */ + const SS_CN_DomainIdentity tsc_SS_PS_Domain := 1; /* @status APPROVED */ + const SS_CN_DomainIdentity tsc_SS_CS_Domain := 0; /* @status APPROVED */ + const integer tsc_UL_CCCH5 := 5; /* Logical channel identity for logical channel CCCH mapped RACH (uplink) + @status APPROVED */ + const integer tsc_UL_DCCH1 := 1; /* Logical channel identity for DCCH1 (uplink), used by signalling radio bearer 1 + @status APPROVED */ + const integer tsc_UL_DCCH2 := 2; /* Logical channel identity for DCCH2 (uplink), used by signalling radio bearer 2 + @status APPROVED */ + const integer tsc_UL_DCCH3 := 3; /* Logical channel identity for DCCH3 (uplink), used by signalling radio bearer 3 + @status APPROVED */ + const integer tsc_UL_DCCH4 := 4; /* Logical channel identity for DCCH4 (uplink), used by signalling radio bearer 4 + @status APPROVED */ + const integer tsc_UL_DCH1 := 1; /* identity for transport channel DCH1 (uplink), in AMR speech this transport channel is used for RAB subflow#1 + @status APPROVED */ + const integer tsc_UL_DCH2 := 2; /* identity for transport channel DCH2 (uplink), in AMR speech this transport channel is used for RAB subflow#2 + @status APPROVED */ + const integer tsc_UL_DCH3 := 3; /* identity for transport channel DCH3 (uplink), in AMR speech this transport channel is used for RAB subflow#3 + @status APPROVED */ + const integer tsc_UL_DCH4 := 4; // identity for transport channel DCH4 (upink), in AMR speech + const integer tsc_UL_DCH5 := 5; /* identity for transport channel DCH5 (uplink), in most case this transport channel is used for signalling bearers. + @status APPROVED */ + const integer tsc_UL_DPCH1 := 20; /* physical channel identity for DPCH1(uplink) + @status APPROVED */ + const integer tsc_UL_DTCH1 := 7; /* Logical channel identity for DTCH1 (uplink) + @status APPROVED */ + const integer tsc_UL_DTCH2 := 8; /* Logical channel identity for DTCH2 (uplink) + @status APPROVED */ + const integer tsc_UL_DTCH3 := 9; /* Logical channel identity for DTCH3 (uplink) + @status APPROVED */ + const integer tsc_UL_DTCH4 := 10; // Logical channel identity for DTCH4 (uplink) + + //----------------------------------------------------------------------------- + + const C_RNTI tsc_CRNTI := '0000000000000001'B; /* C RNTI. + Default value: '0000 0000 0000 0001'B + @status APPROVED */ + const H_RNTI tsc_H_RNTI := '1010101010101010'B; + const E_RNTI tsc_E_RNTI := '1010101010101010'B; + + const ChannelisationCode256 tsc_AICH1_ChC := 3; /* Channelization code for tsc_AICH1 + @status APPROVED */ + const SpreadingFactor tsc_UL_DPDCH_SF_SRB := sf64; /* Channelization code for UL DPDCH for an SRB connection with a RAB established + @status APPROVED */ + const DPCCH_PowerOffset tsc_DPCCH_PowerOffset := -40; /* DPCCH power offset value. + @status APPROVED */ + const SF512_AndCodeNumber tsc_DL_DPCH1_ChC_SRB := { sf128 := 0 }; /* Channelization code for tsc_DL_DPCH1 for a SRB connection with a RAB established + @status APPROVED */ + const SF512_AndCodeNumber tsc_Sfc256_C0 := { sf256 := 0 }; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const B16_Type tsc_DL_DPCH1_ChC_SRB_TDD := '0000000000001000'B; /* Channelization code for tsc_DL_DPCH1 for a SRB connection with a RAB established + @status APPROVED */ + const B16_Type tsc_DL_DPCH1_ChC_Speech_TDD := '1100000000000000'B; // Channelization code for tsc_DL_DPCH1 for a SRB connection with a RAB established + const SF512_AndPilot tsc_DL_DPCH1_SFP_SRB := { sfd128 := pb4 }; /* Spreading factor and pilot bits for tsc_DL_DPCH1 for an SRB connection with a RAB established + @status APPROVED */ + const DefaultDPCH_OffsetValueFDD tsc_DefaultDPCH_OffsetValue := 459; /* Default DPCH offset value. Actual value DefaultDPCH-OffsetValueFDD = IE value * 512 + @status APPROVED */ + const DefaultDPCH_OffsetValueTDD tsc_DefaultDPCH_OffsetValue_TDD := 0;/* Default DPCH offset value. Actual value DefaultDPCH-OffsetValueTDD = IE value * 512 + @status APPROVED */ + const ChannelisationCode256 tsc_PICH1_ChC := 2; /* Channelization code for tsc_PICH1 + @status APPROVED */ + const DL_TS_ChannelisationCode tsc_PICH1_ChC_TDD := cc16_5; /* Channelization code for tsc_PICH1 + @status APPROVED */ + const DL_TS_ChannelisationCode tsc_PICH2_ChC := cc16_6; /* Channelization code for tsc_PICH2 + @status APPROVED */ + const SF_PRACH tsc_PRACH1_SF := sfpr64; /* Channelization code for UL DPDCH for PRACH1 + @status APPROVED */ + const PreambleScramblingCodeWordNumber tsc_PRACH1_ScrC := 0; /* Scrambling code for preamble of PRACH1 + @status APPROVED */ + const AvailableSignatures tsc_PRACH1_Signatures := '0000000011111111'B; /* available signatures for PRACH. (from 34.108 cl. 6.1 (SIB5)) + @status APPROVED */ + + const AICH_PowerOffset tsc_PowerAICH := -5; /* relative transmission power level of AICH. The power level is specified relatively to power leve of CPICH in terms of AICH_Ec + @status APPROVED */ + const PICH_PowerOffset tsc_PowerPICH := -5; /* relative transmission power level of PICH. The power level is specified relatively to power level of CPICH in terms of PICH_Ec* + @status APPROVED */ + + const PuncturingLimit tsc_PuncLimit := pl1; /* puncturing limit for PRACH. default value is 1 + Default value: Pl1 + @status APPROVED */ + const SecondaryScramblingCode tsc_DL_DPCH1_2ndScrC := 1; /* secondary scrambling code for DL DPCH1 + @status APPROVED */ + const SF256_AndCodeNumber tsc_S_CCPCH1_ChC := { sf64 := 1 }; /* Channelization code for tsc_S_CCPCH1 + @status APPROVED */ + + const PrimaryCCPCH_TX_Power tsc_PrimaryCCPCH_TX_Power := 30; /* transmission power level of primary CCPCH. Default is 30 dBm in SIB5 + @status APPROVED */ + const SCCPCH_ChannelisationCodeList tsc_S_CCPCH1_1P1F_ChC := {cc16_7, cc16_8}; /* Channelization code for secondary CCPCH + @status APPROVED */ + const SCCPCH_ChannelisationCodeList tsc_S_CCPCH1_1P2F_ChC := {cc16_7, cc16_8, cc16_9, cc16_10, cc16_11}; /* Channelization code of tsc_S_CCPCH1 for 1PCH+2FACH @sic R5-133724 sic@ + @status */ + const TDD_PRACH_CCode_LCR_r4 tsc_PRACH1_ChC := cc8_8; /* channel code for PRACH + @status APPROVED */ + const TDD_FPACH_CCode16_r4 tsc_FPACH1_ChC := cc16_15; /* channel code for FPACH + @status APPROVED */ + const TPC_CombinationIndex tsc_TPC_CombinationIndex := 0; /* @status APPROVED */ + const TPC_StepSizeFDD tsc_TpcStepSize_FDD := 0; /* Value 0 corresponds to 1 dB + @status APPROVED */ + const TPC_StepSizeTDD tsc_TPC_StepSize_TDD := 1; /* @status APPROVED */ + const integer tsc_SS_StepSize_TDD := 1; /* @status APPROVED */ + const UL_TargetSIR tsc_UL_TargetSIR := 25; /* @sic R5-134734 sic@ @status APPROVED */ + const integer tsc_SS_Frequency := 1; /* @status APPROVED */ + const UL_TS_ChannelisationCode tsc_UL_DPCH1_ChC_SRB_13_6 := cc8_1; /* @status */ + const UL_TS_ChannelisationCode tsc_UL_DPCH1_ChC_SRB_3_4 := cc16_1; // @sic R5s120750 sic@ + const UL_TS_ChannelisationCode tsc_UL_DPCH1_ChC_Speech := cc8_1; + const UL_TS_ChannelisationCode tsc_UL_DPCH1_ChC_64k_PS := cc2_1; /* @status APPROVED */ + const UL_TS_ChannelisationCode tsc_UL_DPCH1_ChC_PS_and_ConvSpeech := cc1_1; /* @status APPROVED */ + const MaxAllowedUL_TX_Power tsc_MaxAllowedUL_TX_Power_TDD := 21; //Acc to 34.108 table 6.1.6a @sic R5s130984 sic@ + + const CN_DomainIdentity tsc_PS_Domain := ps_domain; + const CN_DomainIdentity tsc_CS_Domain := cs_domain; + + const MAC_LogicalChannelPriority tsc_MAC_LogicalChannelPrio1 := 1; /* @status APPROVED */ + const MAC_LogicalChannelPriority tsc_MAC_LogicalChannelPrio2 := 2; /* @status APPROVED */ + const MAC_LogicalChannelPriority tsc_MAC_LogicalChannelPrio3 := 3; /* @status APPROVED */ + const MAC_LogicalChannelPriority tsc_MAC_LogicalChannelPrio4 := 4; /* @status APPROVED */ + const MAC_LogicalChannelPriority tsc_MAC_LogicalChannelPrio6 := 6; /* @status APPROVED */ + const MAC_LogicalChannelPriority tsc_MAC_LogicalChannelPrio7 := 7; + const MAC_LogicalChannelPriority tsc_MAC_LogicalChannelPrio8 := 8; /* @status APPROVED */ + + //============================================================================= + // AUXILIARY FUNCTION + //----------------------------------------------------------------------------- + /* + * @desc function to convert template of UTRAN_CellId_Type into template of integer + * @param p_CellId + * @return template (present) integer + * @status APPROVED + */ + function f_UTRAN_TemplateCellId2Int(template (present) UTRAN_CellId_Type p_CellId) return template (present) integer + { + if (isvalue(p_CellId)) { + return f_UtranCellId2Int(valueof(p_CellId)); // @sic R5s130195 Baseline moving to rel-11: UTRAN cellID enhanced sic@ + } else { + return ?; + } + } + + //---------------------------------------------------------------------------- + /* + * @desc Function used for converting an integer input value to a EUTRA_MeasurementBandwidth value. + * The function is used in UTRAN test cases when the EUTRA type v_DL_PrimaryBandwidth needs + * to be converted in to the UTRAN type EUTRA_MeasurementBandwidth. + * @param p_EUTRA_DL_Bandwidth + * @return EUTRA_MeasurementBandwidth + * @status APPROVED_LTE_IRAT + */ + function f_UTRAN_ConvertIntegerToEUTRA_MeasurementBandwidth(integer p_EUTRA_DL_Bandwidth) return EUTRA_MeasurementBandwidth + { + var EUTRA_MeasurementBandwidth v_MeasurementBandwidth; // defined in UTRAN_RRC_ASN1_Definitions + + select (p_EUTRA_DL_Bandwidth) { + case (6) { //1.4MHz + v_MeasurementBandwidth := mbw6; + } + case (15) { //3MHz + v_MeasurementBandwidth := mbw15; + } + case (25) { //5MHz + v_MeasurementBandwidth := mbw25; + } + case (50) { //10MHz + v_MeasurementBandwidth := mbw50; + } + case (75) { //15MHz + v_MeasurementBandwidth := mbw75; + } + case (100) { //20MHz + v_MeasurementBandwidth := mbw100; + } + case else { + FatalError(__FILE__,__LINE__, "invalid value for ChannelBandwidth"); + } + } + return v_MeasurementBandwidth; + } + + //---------------------------------------------------------------------------- + /* + * @desc This function is used to convert PLMN from NAS type to ASN1 type. + * @param p_NAS_PlmnId + * @return PLMN_Identity + * @status + */ + function f_UTRAN_Nas2Asn_PlmnId(NAS_PlmnId p_NAS_PlmnId) return PLMN_Identity + { + var PLMN_Identity v_PLMN_Identity; + var hexstring v_PLMN_hexstring := oct2hex(p_NAS_PlmnId); + + v_PLMN_Identity := { + mcc := { + hex2int(v_PLMN_hexstring[1]), + hex2int(v_PLMN_hexstring[0]), + hex2int(v_PLMN_hexstring[3]) + }, + mnc := { + hex2int(v_PLMN_hexstring[5]), + hex2int(v_PLMN_hexstring[4]) + } + } + + if (v_PLMN_hexstring[2] != 'F'H) { + v_PLMN_Identity.mnc[2] := hex2int(v_PLMN_hexstring[2]); + } + + return v_PLMN_Identity; + } +} diff --git a/IMS_PART4_IWD_14wk37/Common/UTRAN/UTRAN_RRC_ASN1_Definitions.asn b/IMS_PART4_IWD_14wk37/Common/UTRAN/UTRAN_RRC_ASN1_Definitions.asn new file mode 100644 index 0000000..959b03f --- /dev/null +++ b/IMS_PART4_IWD_14wk37/Common/UTRAN/UTRAN_RRC_ASN1_Definitions.asn @@ -0,0 +1,33804 @@ +UTRAN-RRC-ASN1-Definitions DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN +-- ***** RRC ASN.1 definitions extracted from TS 25.331 (Revision b.5.0) ***** +--************************************************************** +-- +-- Downlink DCCH messages +-- +--************************************************************** + +DL-DCCH-Message ::= SEQUENCE { + integrityCheckInfo IntegrityCheckInfo OPTIONAL, + message DL-DCCH-MessageType +} + +DL-DCCH-MessageType ::= CHOICE { + activeSetUpdate ActiveSetUpdate, + assistanceDataDelivery AssistanceDataDelivery, + cellChangeOrderFromUTRAN CellChangeOrderFromUTRAN, + cellUpdateConfirm CellUpdateConfirm, + counterCheck CounterCheck, + downlinkDirectTransfer DownlinkDirectTransfer, + handoverFromUTRANCommand-GSM HandoverFromUTRANCommand-GSM, + handoverFromUTRANCommand-CDMA2000 HandoverFromUTRANCommand-CDMA2000, + measurementControl MeasurementControl, + pagingType2 PagingType2, + physicalChannelReconfiguration PhysicalChannelReconfiguration, + physicalSharedChannelAllocation PhysicalSharedChannelAllocation, + radioBearerReconfiguration RadioBearerReconfiguration, + radioBearerRelease RadioBearerRelease, + radioBearerSetup RadioBearerSetup, + rrcConnectionRelease RRCConnectionRelease, + securityModeCommand SecurityModeCommand, + signallingConnectionRelease SignallingConnectionRelease, + transportChannelReconfiguration TransportChannelReconfiguration, + transportFormatCombinationControl TransportFormatCombinationControl, + ueCapabilityEnquiry UECapabilityEnquiry, + ueCapabilityInformationConfirm UECapabilityInformationConfirm, + uplinkPhysicalChannelControl UplinkPhysicalChannelControl, + uraUpdateConfirm URAUpdateConfirm, + utranMobilityInformation UTRANMobilityInformation, + handoverFromUTRANCommand-GERANIu HandoverFromUTRANCommand-GERANIu, + mbmsModifiedServicesInformation MBMSModifiedServicesInformation, + etwsPrimaryNotificationWithSecurity ETWSPrimaryNotificationWithSecurity, + handoverFromUTRANCommand-EUTRA HandoverFromUTRANCommand-EUTRA, + ueInformationRequest UEInformationRequest, + loggingMeasurementConfiguration LoggingMeasurementConfiguration, + spare1 NULL +} + +--************************************************************** +-- +-- Uplink DCCH messages +-- +--************************************************************** + +UL-DCCH-Message ::= SEQUENCE { + integrityCheckInfo IntegrityCheckInfo OPTIONAL, + message UL-DCCH-MessageType +} + +UL-DCCH-MessageType ::= CHOICE { + activeSetUpdateComplete ActiveSetUpdateComplete, + activeSetUpdateFailure ActiveSetUpdateFailure, + cellChangeOrderFromUTRANFailure CellChangeOrderFromUTRANFailure, + counterCheckResponse CounterCheckResponse, + handoverToUTRANComplete HandoverToUTRANComplete, + initialDirectTransfer InitialDirectTransfer, + handoverFromUTRANFailure HandoverFromUTRANFailure, + measurementControlFailure MeasurementControlFailure, + measurementReport MeasurementReport, + physicalChannelReconfigurationComplete + PhysicalChannelReconfigurationComplete, + physicalChannelReconfigurationFailure + PhysicalChannelReconfigurationFailure, + radioBearerReconfigurationComplete RadioBearerReconfigurationComplete, + radioBearerReconfigurationFailure RadioBearerReconfigurationFailure, + radioBearerReleaseComplete RadioBearerReleaseComplete, + radioBearerReleaseFailure RadioBearerReleaseFailure, + radioBearerSetupComplete RadioBearerSetupComplete, + radioBearerSetupFailure RadioBearerSetupFailure, + rrcConnectionReleaseComplete RRCConnectionReleaseComplete, + rrcConnectionSetupComplete RRCConnectionSetupComplete, + rrcStatus RRCStatus, + securityModeComplete SecurityModeComplete, + securityModeFailure SecurityModeFailure, + signallingConnectionReleaseIndication + SignallingConnectionReleaseIndication, + transportChannelReconfigurationComplete + TransportChannelReconfigurationComplete, + transportChannelReconfigurationFailure + TransportChannelReconfigurationFailure, + transportFormatCombinationControlFailure + TransportFormatCombinationControlFailure, + ueCapabilityInformation UECapabilityInformation, + uplinkDirectTransfer UplinkDirectTransfer, + utranMobilityInformationConfirm UTRANMobilityInformationConfirm, + utranMobilityInformationFailure UTRANMobilityInformationFailure, + mbmsModificationRequest MBMSModificationRequest, + ul-DCCH-MessageType-ext UL-DCCH-MessageType-ext +} + +UL-DCCH-MessageType-ext ::= CHOICE { + ueInformationResponse UEInformationResponse, + spare15 NULL, + spare14 NULL, + spare13 NULL, + spare12 NULL, + spare11 NULL, + spare10 NULL, + spare9 NULL, + spare8 NULL, + spare7 NULL, + spare6 NULL, + spare5 NULL, + spare4 NULL, + spare3 NULL, + spare2 NULL, + spare1 NULL +} + +--************************************************************** +-- +-- Downlink CCCH messages +-- +--************************************************************** + +DL-CCCH-Message ::= SEQUENCE { + integrityCheckInfo IntegrityCheckInfo OPTIONAL, + message DL-CCCH-MessageType +} + +DL-CCCH-MessageType ::= CHOICE { + cellUpdateConfirm CellUpdateConfirm-CCCH, + rrcConnectionReject RRCConnectionReject, + rrcConnectionRelease RRCConnectionRelease-CCCH, + rrcConnectionSetup RRCConnectionSetup, + uraUpdateConfirm URAUpdateConfirm-CCCH, + -- dummy is not used in the specification. If received it is ignored by the UE. + -- See TS 23.041 for handling of warning security information by Cell Broadcast Center. + dummy ETWSPrimaryNotificationWithSecurity, + spare2 NULL, + spare1 NULL +} + +--************************************************************** +-- +-- Uplink CCCH messages +-- +--************************************************************** + +UL-CCCH-Message ::= SEQUENCE { + integrityCheckInfo IntegrityCheckInfo OPTIONAL, + message UL-CCCH-MessageType +} + +UL-CCCH-MessageType ::= CHOICE { + cellUpdate CellUpdate, + rrcConnectionRequest RRCConnectionRequest, + uraUpdate URAUpdate, + uL-CCCH-MessageType-r11 UL-CCCH-MessageType-r11 +} + +UL-CCCH-MessageType-r11 ::= CHOICE { + cellUpdate CellUpdateFDD-r11, + spare3 NULL, + spare2 NULL, + spare1 NULL +} + +--************************************************************** +-- +-- PCCH messages +-- +--************************************************************** + +PCCH-Message ::= SEQUENCE { + message PCCH-MessageType +} + +PCCH-MessageType ::= CHOICE { + pagingType1 PagingType1, + spare NULL +} + +--************************************************************** +-- +-- Downlink SHCCH messages +-- +--************************************************************** + +DL-SHCCH-Message ::= SEQUENCE { + message DL-SHCCH-MessageType +} + +DL-SHCCH-MessageType ::= CHOICE { + physicalSharedChannelAllocation PhysicalSharedChannelAllocation, + spare NULL +} + +--************************************************************** +-- +-- Uplink SHCCH messages +-- +--************************************************************** + +UL-SHCCH-Message ::= SEQUENCE { + message UL-SHCCH-MessageType +} + +UL-SHCCH-MessageType ::= CHOICE { + puschCapacityRequest PUSCHCapacityRequest, + spare NULL +} + + +--************************************************************** +-- +-- BCCH messages sent on FACH +-- +--************************************************************** + +BCCH-FACH-Message ::= SEQUENCE { + message BCCH-FACH-MessageType +} + +BCCH-FACH-MessageType ::= CHOICE { +-- dummy is not used in this version of the specification, it should +-- not be sent and if received UE behaviour is unspecified. + dummy SystemInformation-FACH, + systemInformationChangeIndication SystemInformationChangeIndication, + spare2 NULL, + spare1 NULL +} + +--************************************************************** +-- +-- BCCH messages sent on BCH +-- +--************************************************************** + +BCCH-BCH-Message ::= SEQUENCE { + message SystemInformation-BCH +} + +--************************************************************** +-- +-- MCCH messages +-- +--************************************************************** + +MCCH-Message ::= SEQUENCE { + message MCCH-MessageType +} + +MCCH-MessageType ::= CHOICE { + mbmsAccessInformation MBMSAccessInformation, + mbmsCommonPTMRBInformation MBMSCommonPTMRBInformation, + mbmsCurrentCellPTMRBInformation MBMSCurrentCellPTMRBInformation, + mbmsGeneralInformation MBMSGeneralInformation, + mbmsModifiedServicesInformation MBMSModifiedServicesInformation, + mbmsNeighbouringCellPTMRBInformation + MBMSNeighbouringCellPTMRBInformation, + mbmsUnmodifiedServicesInformation MBMSUnmodifiedServicesInformation, + spare9 NULL, + spare8 NULL, + spare7 NULL, + spare6 NULL, + spare5 NULL, + spare4 NULL, + spare3 NULL, + spare2 NULL, + spare1 NULL +} + +--************************************************************** +-- +-- MSCH messages +-- +--************************************************************** + +MSCH-Message ::= SEQUENCE { + message MSCH-MessageType +} + +MSCH-MessageType ::= CHOICE { + mbmsSchedulingInformation MBMSSchedulingInformation, + spare3 NULL, + spare2 NULL, + spare1 NULL +} + +-- *************************************************** +-- +-- ACTIVE SET UPDATE (FDD only) +-- +-- *************************************************** + +ActiveSetUpdate ::= CHOICE { + r3 SEQUENCE { + activeSetUpdate-r3 ActiveSetUpdate-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + activeSetUpdate-r3-add-ext BIT STRING OPTIONAL, + v4b0NonCriticalExtensions SEQUENCE { + activeSetUpdate-v4b0ext ActiveSetUpdate-v4b0ext-IEs, + v590NonCriticalExtensions SEQUENCE { + activeSetUpdate-v590ext ActiveSetUpdate-v590ext-IEs, + v690NonCriticalExtensions SEQUENCE { + activeSetUpdate-v690ext ActiveSetUpdate-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r6 SEQUENCE { + activeSetUpdate-r6 ActiveSetUpdate-r6-IEs, + activeSetUpdate-r6-add-ext BIT STRING OPTIONAL, + v6b0NonCriticalExtensions SEQUENCE { + activeSetUpdate-v6b0ext ActiveSetUpdate-v6b0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r7 SEQUENCE { + activeSetUpdate-r7 ActiveSetUpdate-r7-IEs, + activeSetUpdate-r7-add-ext BIT STRING OPTIONAL, + v780NonCriticalExtensions SEQUENCE { + activeSetUpdate-v780ext ActiveSetUpdate-v780ext-IEs, + v7f0NonCriticalExtensions SEQUENCE { + activeSetUdpate-v7f0ext ActiveSetUpdate-v7f0ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + activeSetUdpate-v7g0ext ActiveSetUpdate-v7g0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r8 SEQUENCE { + activeSetUpdate-r8 ActiveSetUpdate-r8-IEs, + -- Container for adding non critical extensions after freezing REL-9 + activeSetUpdate-r8-add-ext BIT STRING OPTIONAL, + v890NonCriticalExtensions SEQUENCE { + activeSetUpdate-v890ext ActiveSetUpdate-v890ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + activeSetUpdate-v7g0ext ActiveSetUpdate-v7g0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r9 SEQUENCE { + activeSetUpdate-r9 ActiveSetUpdate-r9-IEs, + -- Container for adding non critical extensions after freezing REL-10 + activeSetUpdate-r9-add-ext BIT STRING OPTIONAL, + v950NonCriticalExtensions SEQUENCE { + activeSetUpdate-v950ext ActiveSetUpdate-v950ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r10 SEQUENCE { + activeSetUpdate-r10 ActiveSetUpdate-r10-IEs, + -- Container for adding non critical extensions after freezing + -- REL-11 + activeSetUpdate-r10-add-ext BIT STRING OPTIONAL, + vb50NonCriticalExtensions SEQUENCE { + activeSetUpdate-vb50ext ActiveSetUpdate-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r11 SEQUENCE { + activeSetUpdate-r11 ActiveSetUpdate-r11-IEs, + -- Container for adding non critical extensions after freezing + -- REL-12 + activeSetUpdate-r11-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } + } + } + } + } + } +} + +ActiveSetUpdate-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + -- dummy and dummy2 are not used in this version of the specification, they should + -- not be sent and if received they should be ignored. + dummy IntegrityProtectionModeInfo OPTIONAL, + dummy2 CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + newU-RNTI U-RNTI OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- Radio bearer IEs + -- dummy3 is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy3 DL-CounterSynchronisationInfo OPTIONAL, + -- Physical channel IEs + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + rl-AdditionInformationList RL-AdditionInformationList OPTIONAL, + rl-RemovalInformationList RL-RemovalInformationList OPTIONAL, + tx-DiversityMode TX-DiversityMode OPTIONAL, + -- dummy4 is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy4 SSDT-Information OPTIONAL +} + +ActiveSetUpdate-v4b0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SSDT-UL OPTIONAL, + -- The order of the RLs in IE cell-id-PerRL-List is the same as + -- in IE RL-AdditionInformationList included in this message + cell-id-PerRL-List CellIdentity-PerRL-List OPTIONAL +} + +ActiveSetUpdate-v590ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dpc-Mode DPC-Mode, + dl-TPC-PowerOffsetPerRL-List DL-TPC-PowerOffsetPerRL-List OPTIONAL +} + +ActiveSetUpdate-v690ext-IEs ::= SEQUENCE { + -- Core network IEs + primary-plmn-Identity PLMN-Identity OPTIONAL +} + +ActiveSetUpdate-r6-IEs ::= SEQUENCE { + -- User equipment IEs + activationTime ActivationTime OPTIONAL, + newU-RNTI U-RNTI OPTIONAL, + newH-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- Physical channel IEs + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + rl-AdditionInformationList RL-AdditionInformationList-r6 OPTIONAL, + rl-RemovalInformationList RL-RemovalInformationList OPTIONAL, + tx-DiversityMode TX-DiversityMode OPTIONAL, + dpc-Mode DPC-Mode OPTIONAL, + serving-HSDSCH-CellInformation Serving-HSDSCH-CellInformation OPTIONAL, + e-dch-ReconfigurationInfo E-DCH-ReconfigurationInfo OPTIONAL +} + +ActiveSetUpdate-v6b0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + rl-AdditionInformation-list-v6b0ext RL-AdditionInformation-list-v6b0ext OPTIONAL +} + +ActiveSetUpdate-r7-IEs ::= SEQUENCE { + -- User equipment IEs + activationTime ActivationTime OPTIONAL, + newU-RNTI U-RNTI OPTIONAL, + newH-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- Physical channel IEs + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r7 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + rl-AdditionInformationList RL-AdditionInformationList-r7 OPTIONAL, + rl-RemovalInformationList RL-RemovalInformationList OPTIONAL, + tx-DiversityMode TX-DiversityMode OPTIONAL, + dpc-Mode DPC-Mode OPTIONAL, + serving-HSDSCH-CellInformation Serving-HSDSCH-CellInformation-r7 OPTIONAL, + e-dch-ReconfigurationInfo E-DCH-ReconfigurationInfo-r7 OPTIONAL, + ul-16QAM-Config UL-16QAM-Config OPTIONAL, + e-dch-ReconfInfoSameCell E-DCH-RL-InfoSameServingCell OPTIONAL, + e-TFC-Boost-Info E-TFC-Boost-Info-r7 OPTIONAL, + e-DPDCH-PowerInterpolation E-DPDCH-PowerInterpolation OPTIONAL +} + +ActiveSetUpdate-v780ext-IEs ::= SEQUENCE { + -- Physical channel IEs + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL +} + +ActiveSetUpdate-v7f0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + mimoParameters MIMO-Parameters-v7f0ext OPTIONAL +} + +ActiveSetUpdate-v7g0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + mimoParameters MIMO-Parameters-v7g0ext OPTIONAL +} + +ActiveSetUpdate-r8-IEs ::= SEQUENCE { + -- User equipment IEs + activationTime ActivationTime OPTIONAL, + newU-RNTI U-RNTI OPTIONAL, + newH-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- Physical channel IEs + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r8 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + rl-AdditionInformationList RL-AdditionInformationList-r8 OPTIONAL, + servingCellChangeParameters ServingCellChangeParameters OPTIONAL, + rl-RemovalInformationList RL-RemovalInformationList OPTIONAL, + tx-DiversityMode TX-DiversityMode OPTIONAL, + dpc-Mode DPC-Mode OPTIONAL, + serving-HSDSCH-CellInformation Serving-HSDSCH-CellInformation-r8 OPTIONAL, + e-dch-ReconfigurationInfo E-DCH-ReconfigurationInfo-r7 OPTIONAL, + ul-16QAM-Config UL-16QAM-Config OPTIONAL, + e-dch-ReconfInfoSameCell E-DCH-RL-InfoSameServingCell OPTIONAL, + e-TFC-Boost-Info E-TFC-Boost-Info-r7 OPTIONAL, + e-DPDCH-PowerInterpolation E-DPDCH-PowerInterpolation OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD OPTIONAL +} + +ActiveSetUpdate-v890ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-SecondaryCellInfoFDD-v890ext DL-SecondaryCellInfoFDD-v890ext OPTIONAL, + mimoParameters MIMO-Parameters-v7f0ext OPTIONAL, + rl-AdditionInformationList RL-AdditionInformationList-v890ext OPTIONAL +} + +ActiveSetUpdate-r9-IEs ::= SEQUENCE { + -- User equipment IEs + activationTime ActivationTime OPTIONAL, + newU-RNTI U-RNTI OPTIONAL, + newH-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- Physical channel IEs + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + e-dch-ReconfigurationInfo-SecULFrequency + E-DCH-ReconfigurationInfo-SecULFrequency OPTIONAL, + rl-AdditionInformationList RL-AdditionInformationList-r9 OPTIONAL, + rl-AdditionInformationList-SecULFreq + RL-AdditionInformationList-SecULFreq OPTIONAL, + servingCellChangeParameters ServingCellChangeParameters OPTIONAL, + rl-RemovalInformationList RL-RemovalInformationList OPTIONAL, + rl-RemovalInformationList-SecULFreq + RL-RemovalInformationList-SecULFreq OPTIONAL, + tx-DiversityMode TX-DiversityMode OPTIONAL, + dpc-Mode DPC-Mode OPTIONAL, + serving-HSDSCH-CellInformation Serving-HSDSCH-CellInformation-r9 OPTIONAL, + e-dch-ReconfigurationInfo E-DCH-ReconfigurationInfo-r7 OPTIONAL, + ul-16QAM-Config UL-16QAM-Config OPTIONAL, + e-dch-ReconfInfoSameCell E-DCH-RL-InfoSameServingCell OPTIONAL, + e-TFC-Boost-Info E-TFC-Boost-Info-r7 OPTIONAL, + e-DPDCH-PowerInterpolation E-DPDCH-PowerInterpolation OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r9 OPTIONAL +} + +ActiveSetUpdate-v950ext-IEs ::= SEQUENCE { + -- Physical channel IEs + secondaryCellMimoParameters SecondaryCellMIMOparametersFDD-v950ext OPTIONAL, + rl-AdditionInformationList RL-AdditionInformationList-v950ext OPTIONAL +} + +ActiveSetUpdate-r10-IEs ::= SEQUENCE { + -- User equipment IEs + activationTime ActivationTime OPTIONAL, + newU-RNTI U-RNTI OPTIONAL, + newH-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- Physical channel IEs + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + e-dch-ReconfigurationInfo-SecULFrequency + E-DCH-ReconfigurationInfo-SecULFrequency OPTIONAL, + rl-AdditionInformationList RL-AdditionInformationList-r10 OPTIONAL, + rl-AdditionInformationList-SecULFreq + RL-AdditionInformationList-SecULFreq OPTIONAL, + servingCellChangeParameters ServingCellChangeParameters OPTIONAL, + rl-RemovalInformationList RL-RemovalInformationList OPTIONAL, + rl-RemovalInformationList-SecULFreq + RL-RemovalInformationList-SecULFreq OPTIONAL, + tx-DiversityMode TX-DiversityMode OPTIONAL, + dpc-Mode DPC-Mode OPTIONAL, + serving-HSDSCH-CellInformation Serving-HSDSCH-CellInformation-r9 OPTIONAL, + e-dch-ReconfigurationInfo E-DCH-ReconfigurationInfo-r7 OPTIONAL, + ul-16QAM-Config UL-16QAM-Config OPTIONAL, + e-dch-ReconfInfoSameCell E-DCH-RL-InfoSameServingCell OPTIONAL, + e-TFC-Boost-Info E-TFC-Boost-Info-r7 OPTIONAL, + e-DPDCH-PowerInterpolation E-DPDCH-PowerInterpolation OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r10 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD OPTIONAL +} + +ActiveSetUpdate-vb50ext-IEs ::= SEQUENCE { + ulOLTDInfoFDD UL-OLTD-InfoFDD OPTIONAL, + rl-AdditionInformationList RL-AdditionInformationList-vb50ext + OPTIONAL +} + +ActiveSetUpdate-r11-IEs ::= SEQUENCE { + -- User equipment IEs + activationTime ActivationTime OPTIONAL, + newU-RNTI U-RNTI OPTIONAL, + newH-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- Physical channel IEs + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + mimo4x4Parameters MIMO4x4-Parameters OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + e-dch-ReconfigurationInfo-SecULFrequency + E-DCH-ReconfigurationInfo-SecULFrequency OPTIONAL, + ul-CLTD-InfoFDD UL-CLTD-InfoFDD OPTIONAL, + f-tpich-ReconfigurationInfo F-TPICH-ReconfigurationInfo OPTIONAL, + ul-OLTD-InfoFDD UL-OLTD-InfoFDD OPTIONAL, + rl-AdditionInformationList RL-AdditionInformationList-r11 OPTIONAL, + rl-AdditionInformationList-SecULFreq + RL-AdditionInformationList-SecULFreq OPTIONAL, + servingCellChangeParameters ServingCellChangeParameters OPTIONAL, + rl-RemovalInformationList RL-RemovalInformationList OPTIONAL, + rl-RemovalInformationList-SecULFreq + RL-RemovalInformationList-SecULFreq OPTIONAL, + tx-DiversityMode TX-DiversityMode OPTIONAL, + dpc-Mode DPC-Mode OPTIONAL, + serving-HSDSCH-CellInformation Serving-HSDSCH-CellInformation-r11 OPTIONAL, + e-dch-ReconfigurationInfo E-DCH-ReconfigurationInfo-r11 OPTIONAL, + ul-16QAM-Config UL-16QAM-Config OPTIONAL, + ul-64QAM-Config UL-64QAM-Config OPTIONAL, + ul-MIMO-InfoFDD UL-MIMO-InfoFDD OPTIONAL, + e-dch-ReconfInfoSameCell E-DCH-RL-InfoSameServingCell OPTIONAL, + e-TFC-Boost-Info E-TFC-Boost-Info-r7 OPTIONAL, + e-DPDCH-PowerInterpolation E-DPDCH-PowerInterpolation OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD2 AdditionalDLSecCellInfoListFDD2 OPTIONAL +} + +-- *************************************************** +-- +-- ACTIVE SET UPDATE COMPLETE (FDD only) +-- +-- *************************************************** + +ActiveSetUpdateComplete ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy IntegrityProtActivationInfo OPTIONAL, + -- Radio bearer IEs + -- dummy2 and dummy3 are not used in this version of the specification, they should + -- not be sent and if received they should be ignored. + dummy2 RB-ActivationTimeInfoList OPTIONAL, + dummy3 UL-CounterSynchronisationInfo OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + activeSetUpdateComplete-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +-- *************************************************** +-- +-- ACTIVE SET UPDATE FAILURE (FDD only) +-- +-- *************************************************** + +ActiveSetUpdateFailure ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + failureCause FailureCauseWithProtErr, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + activeSetUpdateFailure-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +-- *************************************************** +-- +-- ASSISTANCE DATA DELIVERY-- +-- *************************************************** + +AssistanceDataDelivery ::= CHOICE { + r3 SEQUENCE { + assistanceDataDelivery-r3 AssistanceDataDelivery-r3-IEs, + v3a0NonCriticalExtensions SEQUENCE { + assistanceDataDelivery-v3a0ext AssistanceDataDelivery-v3a0ext, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + assistanceDataDelivery-r3-add-ext BIT STRING OPTIONAL, + v4b0NonCriticalExtensions SEQUENCE { + assistanceDataDelivery-v4b0ext AssistanceDataDelivery-v4b0ext-IEs, + v770NonCriticalExtension SEQUENCE { + assistanceDataDelivery-v770ext AssistanceDataDelivery-v770ext-IEs, + v860NonCriticalExtension SEQUENCE { + assistanceDataDelivery-v860ext AssistanceDataDelivery-v860ext-IEs, + v920NonCriticalExtension SEQUENCE { + assistanceDataDelivery-v920ext AssistanceDataDelivery-v920ext-IEs, + va40NonCriticalExtension SEQUENCE { + assistanceDataDelivery-va40ext + AssistanceDataDelivery-va40ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions SEQUENCE {} + } +} + +AssistanceDataDelivery-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + -- Measurement Information Elements + ue-positioning-GPS-AssistanceData UE-Positioning-GPS-AssistanceData OPTIONAL, + ue-positioning-OTDOA-AssistanceData-UEB UE-Positioning-OTDOA-AssistanceData-UEB OPTIONAL +} + +AssistanceDataDelivery-v3a0ext ::= SEQUENCE { + sfn-Offset-Validity SFN-Offset-Validity OPTIONAL +} + +AssistanceDataDelivery-v4b0ext-IEs ::= SEQUENCE { + ue-Positioning-OTDOA-AssistanceData-r4ext UE-Positioning-OTDOA-AssistanceData-r4ext OPTIONAL +} + +AssistanceDataDelivery-v770ext-IEs ::= SEQUENCE { + ue-Positioning-OTDOA-AssistanceData-UEB-ext + UE-Positioning-OTDOA-AssistanceData-UEB-ext OPTIONAL, + ue-Positioning-GPS-AssistanceData UE-Positioning-GPS-AssistanceData-v770ext OPTIONAL, + ue-positioning-GANSS-AssistanceData UE-Positioning-GANSS-AssistanceData OPTIONAL +} + +AssistanceDataDelivery-v860ext-IEs ::= SEQUENCE { + ue-positioning-GANSS-AssistanceData-v860ext + UE-Positioning-GANSS-AssistanceData-v860ext OPTIONAL +} + +AssistanceDataDelivery-v920ext-IEs ::= SEQUENCE { + ue-positioning-GPS-AssistanceData-v920ext + UE-Positioning-GPS-AssistanceData-v920ext OPTIONAL, + ue-positioning-GANSS-AssistanceData-v920ext + UE-Positioning-GANSS-AssistanceData-v920ext OPTIONAL +} + +AssistanceDataDelivery-va40ext-IEs ::= SEQUENCE { + ue-positioning-GPS-AssistanceData-va40ext + UE-Positioning-GPS-AssistanceData-va40ext OPTIONAL, + ue-positioning-GANSS-AssistanceData-va40ext + UE-Positioning-GANSS-AssistanceData-va40ext OPTIONAL +} + +-- *************************************************** +-- +-- CELL CHANGE ORDER FROM UTRAN +-- +-- *************************************************** + +CellChangeOrderFromUTRAN ::= CHOICE { + r3 SEQUENCE { + cellChangeOrderFromUTRAN-IEs CellChangeOrderFromUTRAN-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + cellChangeOrderFromUTRAN-r3-add-ext BIT STRING OPTIONAL, + v590NonCriticalExtensions SEQUENCE { + cellChangeOrderFromUTRAN-v590ext CellChangeOrderFromUTRAN-v590ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions SEQUENCE {} + } +} + +CellChangeOrderFromUTRAN-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy IntegrityProtectionModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + -- the IE rab-InformationList is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. The IE may be used in a later + -- version of the protocol and hence it is not changed into a dummy + rab-InformationList RAB-InformationList OPTIONAL, + interRAT-TargetCellDescription InterRAT-TargetCellDescription +} + +CellChangeOrderFromUTRAN-v590ext-IEs ::= SEQUENCE { + geran-SystemInfoType CHOICE { + sI GERAN-SystemInformation, + pSI GERAN-SystemInformation + } OPTIONAL +} + +-- *************************************************** +-- +-- CELL CHANGE ORDER FROM UTRAN FAILURE +-- +-- *************************************************** + +CellChangeOrderFromUTRANFailure ::= CHOICE { + r3 SEQUENCE { + cellChangeOrderFromUTRANFailure-r3 + CellChangeOrderFromUTRANFailure-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + cellChangeOrderFromUTRANFailure-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + -- dummy is not used in this version of the specification and it + -- should be ignored. + dummy SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions SEQUENCE {} + } +} + +CellChangeOrderFromUTRANFailure-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy IntegrityProtectionModeInfo OPTIONAL, + interRAT-ChangeFailureCause InterRAT-ChangeFailureCause +} + +-- *************************************************** +-- +-- CELL UPDATE +-- +-- *************************************************** + +CellUpdate ::= SEQUENCE { + -- User equipment IEs + u-RNTI U-RNTI, + startList STARTList, + am-RLC-ErrorIndicationRb2-3or4 BOOLEAN, + am-RLC-ErrorIndicationRb5orAbove BOOLEAN, + cellUpdateCause CellUpdateCause, + -- TABULAR: RRC transaction identifier is nested in FailureCauseWithProtErrTrId + failureCause FailureCauseWithProtErrTrId OPTIONAL, + rb-timer-indicator Rb-timer-indicator, + -- Measurement IEs + measuredResultsOnRACH MeasuredResultsOnRACH OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + -- The cellUpdate-r3-add-ext can be omitted if its inclusion would result in the + -- size of the message exceeding the maximum PDU size possible for CCCH + -- transmission + cellUpdate-r3-add-ext BIT STRING + (CONTAINING CellUpdate-r3-add-ext-IEs) OPTIONAL, + v590NonCriticalExtensions SEQUENCE { + cellUpdate-v590ext CellUpdate-v590ext, + v690NonCriticalExtensions SEQUENCE { + cellUpdate-v690ext CellUpdate-v690ext-IEs, + v6b0NonCriticalExtensions SEQUENCE { + cellUpdate-v6b0ext CellUpdate-v6b0ext-IEs, + v770NonCriticalExtensions SEQUENCE { + cellUpdate-v770ext CellUpdate-v770ext-IEs, + v860NonCriticalExtensions SEQUENCE { + cellUpdate-v860ext CellUpdate-v860ext-IEs, + -- The va40NonCriticalExtensions can be omitted if its inclusion + -- would result in the size of the message exceeding the maximum PDU + -- size possible for CCCH transmission + va40NonCriticalExtensions SEQUENCE { + cellUpdate-va40ext CellUpdate-va40ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + cellUpdate-vb50ext CellUpdate-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +CellUpdate-r3-add-ext-IEs ::= SEQUENCE { + cellUpdate-v7e0ext CellUpdate-v7e0ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + cellUpdate-v7g0ext CellUpdate-v7g0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +CellUpdate-v590ext ::= SEQUENCE { + establishmentCause EstablishmentCause OPTIONAL +} + +CellUpdate-v690ext-IEs ::= SEQUENCE { + -- User equipment IEs + cellUpdateCause-ext CellUpdateCause-ext OPTIONAL, + trafficVolumeIndicator ENUMERATED { true } OPTIONAL, + -- Measurement IEs + measuredResultsOnRACHinterFreq MeasuredResultsOnRACHinterFreq OPTIONAL, + reconfigurationStatusIndicator ENUMERATED { true } OPTIONAL +} + +CellUpdate-v6b0ext-IEs ::= SEQUENCE { + -- MBMS IEs + -- The mbmsSelectedServices can be omitted if its inclusion would result in the + -- size of the message exceeding the maximum PDU size possible for CCCH transmission + mbmsSelectedServices MBMS-SelectedServicesShort OPTIONAL +} + +CellUpdate-v770ext-IEs ::= SEQUENCE { + -- User equipment IEs + csCallType ENUMERATED { speech, video, other, spare } OPTIONAL, + hspdschReception-CellFach ENUMERATED { true } OPTIONAL, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + capabilityChangeIndicator ENUMERATED { true } OPTIONAL +} + +CellUpdate-v7e0ext-IEs ::= SEQUENCE { + -- User equipment IEs + supportForTwoDRXSchemesInPCH ENUMERATED { true } OPTIONAL +} + +CellUpdate-v7g0ext-IEs ::= SEQUENCE { + -- Measurement IEs + measuredResultsOnRACH-v7g0ext MeasuredResultsOnRACH-v7g0ext OPTIONAL +} + +CellUpdate-v860ext-IEs ::= SEQUENCE { + -- User equipment IEs + supportOfCommonEDCH ENUMERATED { true } OPTIONAL, + supportOfHS-DSCHDRXOperation ENUMERATED { true } OPTIONAL, + supportOfMACiis ENUMERATED { true } OPTIONAL, + supportOfSPSOperation ENUMERATED { true } OPTIONAL, + supportOfControlChannelDRXOperation + ENUMERATED { true } OPTIONAL +} + +CellUpdate-va40ext-IEs ::= SEQUENCE { + -- User equipment IEs + securityRevertStatusIndicator ENUMERATED { revertedBack, normalOperation } OPTIONAL, + -- Other IEs + loggedMeasAvailable ENUMERATED { true } OPTIONAL, + loggedANRResultsAvailable ENUMERATED { true } OPTIONAL +} + +-- TABULAR: TDD related IEs, MBMS IEs, and supportForTwoDRXSchemesInPCH are omitted compared to +-- tabular for the purpose of coding optimisation +CellUpdateFDD-r11 ::= SEQUENCE { +-- User equipment IEs + u-RNTI U-RNTI, + startList STARTList, + am-RLC-ErrorIndicationRb2-3or4 BOOLEAN, + am-RLC-ErrorIndicationRb5orAbove BOOLEAN, + cellUpdateCause CellUpdateCause, + -- TABULAR: RRC transaction identifier is nested in FailureCauseWithProtErrTrId + failureCause FailureCauseWithProtErrTrId OPTIONAL, + rb-timer-indicator Rb-timer-indicator, + establishmentCause EstablishmentCause OPTIONAL, + trafficVolumeIndicator ENUMERATED { true } OPTIONAL, + reconfigurationStatusIndicator ENUMERATED { true } OPTIONAL, + csCallType ENUMERATED { speech, video, other, spare } OPTIONAL, + hspdschReception-CellFach ENUMERATED { true } OPTIONAL, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + capabilityChangeIndicator ENUMERATED { true } OPTIONAL, + supportOfCommonEDCH ENUMERATED { true } OPTIONAL, + supportOfHS-DSCHDRXOperation ENUMERATED { true } OPTIONAL, + supportOfMACiis ENUMERATED { true } OPTIONAL, + securityRevertStatusIndicator ENUMERATED { revertedBack, normalOperation } OPTIONAL, + spare4 ENUMERATED { true } OPTIONAL, + spare3 ENUMERATED { true } OPTIONAL, + spare2 ENUMERATED { true } OPTIONAL, + spare1 ENUMERATED { true } OPTIONAL, +-- Measurement IEs + measuredResultsOnRACH MeasuredResultsOnRACHFDD-r11 OPTIONAL, +-- Other IEs + loggedMeasAvailable ENUMERATED { true } OPTIONAL, + loggedANRResultsAvailable ENUMERATED { true } OPTIONAL +} + +CellUpdate-vb50ext-IEs ::= SEQUENCE { + -- Measurement IEs + measuredResultsOnRACHEUTRAFreq MeasuredResultsOnRACH-EUTRAFreq OPTIONAL +} + +-- *************************************************** +-- +-- CELL UPDATE CONFIRM +-- +-- *************************************************** + +CellUpdateConfirm ::= CHOICE { + r3 SEQUENCE { + cellUpdateConfirm-r3 CellUpdateConfirm-r3-IEs, + v3a0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v3a0ext CellUpdateConfirm-v3a0ext, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + cellUpdateConfirm-r3-add-ext BIT STRING OPTIONAL, + v4b0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v4b0ext CellUpdateConfirm-v4b0ext-IEs, + v590NonCriticalExtenstions SEQUENCE { + cellUpdateConfirm-v590ext CellUpdateConfirm-v590ext-IEs, + v5d0NonCriticalExtenstions SEQUENCE { + cellUpdateConfirm-v5d0ext CellUpdateConfirm-v5d0ext-IEs, + v690NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v690ext CellUpdateConfirm-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r4 SEQUENCE { + cellUpdateConfirm-r4 CellUpdateConfirm-r4-IEs, + v4d0NonCriticalExtensions SEQUENCE { + -- Container for adding non critical extensions after freezing REL-5 + cellUpdateConfirm-r4-add-ext BIT STRING OPTIONAL, + v590NonCriticalExtenstions SEQUENCE { + cellUpdateConfirm-v590ext CellUpdateConfirm-v590ext-IEs, + v5d0NonCriticalExtenstions SEQUENCE { + cellUpdateConfirm-v5d0ext CellUpdateConfirm-v5d0ext-IEs, + v690NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v690ext CellUpdateConfirm-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r5 SEQUENCE { + cellUpdateConfirm-r5 CellUpdateConfirm-r5-IEs, + -- Container for adding non critical extensions after freezing REL-6 + cellUpdateConfirm-r5-add-ext BIT STRING OPTIONAL, + v5d0NonCriticalExtenstions SEQUENCE { + cellUpdateConfirm-v5d0ext CellUpdateConfirm-v5d0ext-IEs, + v690NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v690ext CellUpdateConfirm-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r6 SEQUENCE { + cellUpdateConfirm-r6 CellUpdateConfirm-r6-IEs, + -- Container for adding non critical extensions after freezing REL-7 + cellUpdateConfirm-r6-add-ext BIT STRING OPTIONAL, + v6b0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v6b0ext CellUpdateConfirm-v6b0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r7 SEQUENCE { + cellUpdateConfirm-r7 CellUpdateConfirm-r7-IEs, + -- Container for adding non critical extensions after freezing REL-8 + cellUpdateConfirm-r7-add-ext BIT STRING + (CONTAINING CellUpdateConfirm-r7-add-ext-IEs) OPTIONAL, + v780NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v780ext CellUpdateConfirm-v780ext-IEs, + v860NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v860ext CellUpdateConfirm-v860ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r8 SEQUENCE { + cellUpdateConfirm-r8 CellUpdateConfirm-r8-IEs, + -- Container for adding non critical extensions after freezing REL-9 + cellUpdateConfirm-r8-add-ext BIT STRING OPTIONAL, + v7d0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v7d0ext CellUpdateConfirm-v7d0ext-IEs, + v7f0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v7f0ext CellUpdateConfirm-v7f0ext-IEs, + v890NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v890ext + CellUpdateConfirm-v890ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v7g0ext + CellUpdateConfirm-v7g0ext-IEs, + v8a0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v8a0ext + CellUpdateConfirm-v8a0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r9 SEQUENCE { + cellUpdateConfirm-r9 CellUpdateConfirm-r9-IEs, + -- Container for adding non critical extensions after + -- freezing REL-10 + cellUpdateConfirm-r9-add-ext BIT STRING OPTIONAL, + v950NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v950ext CellUpdateConfirm-v950ext-IEs, + v9c0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v9c0ext CellUpdateConfirm-v9c0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r10 SEQUENCE { + cellUpdateConfirm-r10 CellUpdateConfirm-r10-IEs, + -- Container for adding non critical extensions after + -- freezing REL-11 + cellUpdateConfirm-r10-add-ext BIT STRING OPTIONAL, + v9c0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v9c0ext CellUpdateConfirm-v9c0ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-vb50ext + CellUpdateConfirm-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r11 SEQUENCE { + cellUpdateConfirm-r11 CellUpdateConfirm-r11-IEs, + -- Container for adding non critical extensions after + -- freezing REL-12 + cellUpdateConfirm-r11-add-ext + BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } + } + } + } + } + } + } + } +} + +CellUpdateConfirm-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + rlc-Re-establishIndicatorRb2-3or4 BOOLEAN, + rlc-Re-establishIndicatorRb5orAbove BOOLEAN, + -- CN information elements + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + rb-InformationReleaseList RB-InformationReleaseList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + modeSpecificTransChInfo CHOICE { + fdd SEQUENCE { + -- dummy and dummy2 are not used in this version of the specification, they should + -- not be sent and if received they should be ignored. + dummy CPCH-SetID OPTIONAL, + dummy2 DRAC-StaticInformationList OPTIONAL + }, + tdd NULL + }, + dl-CommonTransChInfo DL-CommonTransChInfo OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement OPTIONAL, + modeSpecificPhysChInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-CommonInformation DL-CommonInformation OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List OPTIONAL +} + +CellUpdateConfirm-v3a0ext ::= SEQUENCE { + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received the UE behaviour + -- is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL +} + +CellUpdateConfirm-v4b0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SSDT-UL OPTIONAL, + -- The order of the RLs in IE cell-id-PerRL-List is the same as + -- in IE DL-InformationPerRL-List included in this message + cell-id-PerRL-List CellIdentity-PerRL-List OPTIONAL +} + +CellUpdateConfirm-v590ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-TPC-PowerOffsetPerRL-List DL-TPC-PowerOffsetPerRL-List OPTIONAL +} + +CellUpdateConfirm-v5d0ext-IEs ::= SEQUENCE { + --Radio Bearer IEs + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL +} +CellUpdateConfirm-r4-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received + -- the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + rlc-Re-establishIndicatorRb2-3or4 BOOLEAN, + rlc-Re-establishIndicatorRb5orAbove BOOLEAN, + -- CN information elements + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + rb-InformationReleaseList RB-InformationReleaseList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r4 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + modeSpecificTransChInfo CHOICE { + fdd SEQUENCE { + -- dummy and dummy2 are not used in this version of the specification, they should + -- not be sent and if received they should be ignored. + dummy CPCH-SetID OPTIONAL, + dummy2 DRAC-StaticInformationList OPTIONAL + }, + tdd NULL + }, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r4 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement-r4 OPTIONAL, + modeSpecificPhysChInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-CommonInformation DL-CommonInformation-r4 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r4 OPTIONAL +} + +CellUpdateConfirm-r5-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received + -- the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + rlc-Re-establishIndicatorRb2-3or4 BOOLEAN, + rlc-Re-establishIndicatorRb5orAbove BOOLEAN, + -- CN information elements + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + rb-InformationReleaseList RB-InformationReleaseList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r5 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r5 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + modeSpecificTransChInfo CHOICE { + fdd SEQUENCE { + -- dummy and dummy2 are not used in this version of the specification, they should + -- not be sent and if received they should be ignored. + dummy CPCH-SetID OPTIONAL, + dummy2 DRAC-StaticInformationList OPTIONAL + }, + tdd NULL + }, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r5 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r5 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement-r5 OPTIONAL, + modeSpecificPhysChInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-HSPDSCH-Information DL-HSPDSCH-Information OPTIONAL, + dl-CommonInformation DL-CommonInformation-r5 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r5 OPTIONAL +} + +CellUpdateConfirm-r6-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + rlc-Re-establishIndicatorRb2-3or4 BOOLEAN, + rlc-Re-establishIndicatorRb5orAbove BOOLEAN, + -- CN information elements + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + rb-InformationReleaseList RB-InformationReleaseList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r6 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r6 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r6 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r5 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r5 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r6 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r6 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r6 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r6 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r6 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +CellUpdateConfirm-v690ext-IEs ::= SEQUENCE { + -- Core network IEs + primary-plmn-Identity PLMN-Identity OPTIONAL, + -- Physical channel IEs + -- The IE harq-Preamble-Mode should not be used in the r3 and r4 versions of the message + -- If included in the r3 or r4 version of the message, the UE should ignore the IE + harq-Preamble-Mode HARQ-Preamble-Mode OPTIONAL, + beaconPLEst BEACON-PL-Est OPTIONAL, + postVerificationPeriod ENUMERATED { true } OPTIONAL, + dhs-sync DHS-Sync OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +CellUpdateConfirm-v6b0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-InformationPerRL-List-v6b0ext DL-InformationPerRL-List-v6b0ext OPTIONAL +} + +CellUpdateConfirm-r7-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + waitTime WaitTime OPTIONAL, + rlc-Re-establishIndicatorRb2-3or4 BOOLEAN, + rlc-Re-establishIndicatorRb5orAbove BOOLEAN, + -- CN information elements + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Radio bearer IEs + rb-InformationReleaseList RB-InformationReleaseList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r7 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r7 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r7 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r7 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r7 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r7 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r7 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r7 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r7 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +CellUpdateConfirm-r7-add-ext-IEs ::= SEQUENCE { + cellUpdateConfirm-v7d0ext CellUpdateConfirm-v7d0ext-IEs OPTIONAL, + v7f0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v7f0ext CellUpdateConfirm-v7f0ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v7g0ext CellUpdateConfirm-v7g0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +CellUpdateConfirm-v780ext-IEs ::= SEQUENCE { + -- Physical channel IEs + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL +} + +CellUpdateConfirm-v7d0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + ul-EDCH-Information UL-EDCH-Information-ext OPTIONAL +} + +CellUpdateConfirm-v7f0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + mimoParameters MIMO-Parameters-v7f0ext OPTIONAL +} + +CellUpdateConfirm-v7g0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + mimoParameters MIMO-Parameters-v7g0ext OPTIONAL +} + +CellUpdateConfirm-r8-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + waitTime WaitTime OPTIONAL, + rlc-Re-establishIndicatorRb2-3or4 BOOLEAN, + rlc-Re-establishIndicatorRb5orAbove BOOLEAN, + -- CN information elements + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Specification mode information + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy DefaultConfigForCellFACH OPTIONAL, + -- Radio bearer IEs + rab-InformationSetup RAB-InformationSetup-r8 OPTIONAL, + rb-InformationReleaseList RB-InformationReleaseList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r8 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r8 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r7 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r8 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r8 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r8 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +CellUpdateConfirm-v860ext-IEs ::= SEQUENCE { + rab-InformationSetup SEQUENCE { + rab-InformationSetup-r7 RAB-InformationSetup-r7, + rab-InformationSetup-v820ext RAB-InformationSetup-v820ext + } OPTIONAL +} + +CellUpdateConfirm-v890ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-SecondaryCellInfoFDD-v890ext DL-SecondaryCellInfoFDD-v890ext OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8-ext OPTIONAL +} + +CellUpdateConfirm-v8a0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8-ext2 OPTIONAL +} + +CellUpdateConfirm-r9-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + waitTime WaitTime OPTIONAL, + rlc-Re-establishIndicatorRb2-3or4 BOOLEAN, + rlc-Re-establishIndicatorRb5orAbove BOOLEAN, + -- CN information elements + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Specification mode information + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy DefaultConfigForCellFACH OPTIONAL, + -- Radio bearer IEs + rab-InformationSetup RAB-InformationSetup-r8 OPTIONAL, + rb-InformationReleaseList RB-InformationReleaseList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r8 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r8 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r9 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r9 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r8 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r9 OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +CellUpdateConfirm-v950ext-IEs ::= SEQUENCE { + -- Physical channel IEs + secondaryCellMimoParameters SecondaryCellMIMOparametersFDD-v950ext OPTIONAL +} + +CellUpdateConfirm-v9c0ext-IEs ::= SEQUENCE { + -- For 1.28Mcps TDD only + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-TDD128-v9c0ext OPTIONAL +} + +CellUpdateConfirm-r10-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + -- dummy2 is not used in this version of the specification, it should + -- not be sent. + dummy2 SR-VCC-Info OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + waitTime WaitTime OPTIONAL, + rlc-Re-establishIndicatorRb2-3or4 BOOLEAN, + rlc-Re-establishIndicatorRb5orAbove BOOLEAN, + -- CN information elements + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Specification mode information + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy DefaultConfigForCellFACH OPTIONAL, + -- Radio bearer IEs + rab-InformationSetup RAB-InformationSetup-r8 OPTIONAL, + rb-InformationReleaseList RB-InformationReleaseList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r8 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r8 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r9 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r9 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + ul-MulticarrierEDCHInfo-TDD128 UL-MulticarrierEDCHInfo-TDD128 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r10 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r10 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + mu-MIMO-Info-TDD128 MU-MIMO-Info-TDD128 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +CellUpdateConfirm-vb50ext-IEs ::= SEQUENCE { + ulOLTDInfoFDD UL-OLTD-InfoFDD OPTIONAL +} + +CellUpdateConfirm-r11-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + -- dummy2 is not used in this version of the specification, it should + -- not be sent. + dummy2 SR-VCC-Info OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + waitTime WaitTime OPTIONAL, + rlc-Re-establishIndicatorRb2-3or4 BOOLEAN, + rlc-Re-establishIndicatorRb5orAbove BOOLEAN, + -- CN information elements + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Specification mode information + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy DefaultConfigForCellFACH OPTIONAL, + -- Radio bearer IEs + rab-InformationSetup RAB-InformationSetup-r8 OPTIONAL, + rb-InformationReleaseList RB-InformationReleaseList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r11 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r8 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r11 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + mimo4x4Parameters MIMO4x4-Parameters OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r11 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r11 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + ul-MulticarrierEDCHInfo-TDD128 UL-MulticarrierEDCHInfo-TDD128 OPTIONAL, + ul-CLTD-InfoFDD UL-CLTD-InfoFDD OPTIONAL, + ul-OLTD-InfoFDD UL-OLTD-InfoFDD OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r11 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r11 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r11 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD2 AdditionalDLSecCellInfoListFDD2 OPTIONAL, + commonERGCHInfoFDD CommonERGCHInfoFDD OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + mu-MIMO-Info-TDD128 MU-MIMO-Info-TDD128 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +-- *************************************************** +-- +-- CELL UPDATE CONFIRM for CCCH +-- +-- *************************************************** + +CellUpdateConfirm-CCCH ::= CHOICE { + r3 SEQUENCE { + -- User equipment IEs + u-RNTI U-RNTI, + -- The rest of the message is identical to the one sent on DCCH. + cellUpdateConfirm-r3 CellUpdateConfirm-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + cellUpdateConfirm-CCCH-r3-add-ext BIT STRING OPTIONAL, + v4b0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v4b0ext CellUpdateConfirm-v4b0ext-IEs, + v590NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v590ext CellUpdateConfirm-v590ext-IEs, + v5d0NonCriticalExtenstions SEQUENCE { + cellUpdateConfirm-v5d0ext CellUpdateConfirm-v5d0ext-IEs, + v690NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v690ext CellUpdateConfirm-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + u-RNTI U-RNTI, + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r4 SEQUENCE { + -- The rest of the message is identical to the one sent on DCCH. + cellUpdateConfirm-r4 CellUpdateConfirm-r4-IEs, + v4d0NonCriticalExtensions SEQUENCE { + -- Container for adding non critical extensions after freezing REL-5 + cellUpdateConfirm-CCCH-r4-add-ext BIT STRING OPTIONAL, + v590NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v590ext CellUpdateConfirm-v590ext-IEs, + v5d0NonCriticalExtenstions SEQUENCE { + cellUpdateConfirm-v5d0ext CellUpdateConfirm-v5d0ext-IEs, + v690NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v690ext CellUpdateConfirm-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r5 SEQUENCE { + cellUpdateConfirm-r5 CellUpdateConfirm-r5-IEs, + cellUpdateConfirm-CCCH-r5-add-ext BIT STRING OPTIONAL, + v5d0NonCriticalExtenstions SEQUENCE { + cellUpdateConfirm-v5d0ext CellUpdateConfirm-v5d0ext-IEs, + v690NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v690ext CellUpdateConfirm-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r6 SEQUENCE { + cellUpdateConfirm-r6 CellUpdateConfirm-r6-IEs, + cellUpdateConfirm-r6-add-ext BIT STRING OPTIONAL, + v6b0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v6b0ext CellUpdateConfirm-v6b0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r7 SEQUENCE { + cellUpdateConfirm-r7 CellUpdateConfirm-r7-IEs, + cellUpdateConfirm-r7-add-ext BIT STRING + (CONTAINING CellUpdateConfirm-r7-add-ext-IEs) OPTIONAL, + v780NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v780ext CellUpdateConfirm-v780ext-IEs, + v860NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v860ext CellUpdateConfirm-v860ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r8 SEQUENCE { + cellUpdateConfirm-r8 CellUpdateConfirm-r8-IEs, + cellUpdateConfirm-r8-add-ext BIT STRING OPTIONAL, + v7d0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v7d0ext CellUpdateConfirm-v7d0ext-IEs, + v890NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v890ext + CellUpdateConfirm-v890ext-IEs, + v8a0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v8a0ext + CellUpdateConfirm-v8a0ext-IEs, + v7f0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v7f0ext + CellUpdateConfirm-v7f0ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v7g0ext + CellUpdateConfirm-v7g0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r9 SEQUENCE { + cellUpdateConfirm-r9 CellUpdateConfirm-r9-IEs, + -- Container for adding non critical extensions after + -- freezing REL-10 + cellUpdateConfirm-r9-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions CHOICE { + r10 SEQUENCE { + cellUpdateConfirm-r10 CellUpdateConfirm-r10-IEs, + -- Container for adding non critical extensions after + -- freezing REL-11 + cellUpdateConfirm-r10-add-ext BIT STRING OPTIONAL, + vb50NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-vb50ext + CellUpdateConfirm-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r11 SEQUENCE { + cellUpdateConfirm-r11 CellUpdateConfirm-r11-IEs, + -- Container for adding non critical extensions after + -- freezing REL-12 + cellUpdateConfirm-r11-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } + } + } + } + } + } + } + } +} + +-- *************************************************** +-- +-- COUNTER CHECK +-- +-- *************************************************** + +CounterCheck ::= CHOICE { + r3 SEQUENCE { + counterCheck-r3 CounterCheck-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + counterCheck-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions SEQUENCE {} + } +} + +CounterCheck-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + -- Radio bearer IEs + rb-COUNT-C-MSB-InformationList RB-COUNT-C-MSB-InformationList +} + +-- *************************************************** +-- +-- COUNTER CHECK RESPONSE +-- +-- *************************************************** + +CounterCheckResponse ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + -- Radio bearer IEs + rb-COUNT-C-InformationList RB-COUNT-C-InformationList OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + counterCheckResponse-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +-- *************************************************** +-- +-- DOWNLINK DIRECT TRANSFER +-- +-- *************************************************** + +DownlinkDirectTransfer ::= CHOICE { + r3 SEQUENCE { + downlinkDirectTransfer-r3 DownlinkDirectTransfer-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + downlinkDirectTransfer-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions SEQUENCE {} + } +} + +DownlinkDirectTransfer-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + -- Core network IEs + cn-DomainIdentity CN-DomainIdentity, + nas-Message NAS-Message +} + +-- *************************************************** +-- +-- ETWS PRIMARY NOTIFICATION WITH SECURITY +-- +-- *************************************************** + +ETWSPrimaryNotificationWithSecurity ::= SEQUENCE { + -- Other IEs + etws-Information ETWS-Information, + -- dummy is not used in the specification. If received it is ignored by the UE. + -- See TS 23.041 for handling of warning security information by Cell Broadcast Center. + dummy ETWS-WarningSecurityInfo OPTIONAL, + -- Non critical extensions + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +-- *************************************************** +-- +-- HANDOVER TO UTRAN COMMAND +-- +-- *************************************************** + +HandoverToUTRANCommand ::= CHOICE { + r3 SEQUENCE { + handoverToUTRANCommand-r3 HandoverToUTRANCommand-r3-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions CHOICE { + r4 SEQUENCE { + handoverToUTRANCommand-r4 HandoverToUTRANCommand-r4-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions CHOICE { + r5 SEQUENCE { + handoverToUTRANCommand-r5 HandoverToUTRANCommand-r5-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions CHOICE { + r6 SEQUENCE { + handoverToUTRANCommand-r6 HandoverToUTRANCommand-r6-IEs, + v6b0NonCriticalExtensions SEQUENCE { + handoverToUTRANCommand-v6b0ext HandoverToUTRANCommand-v6b0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r7 SEQUENCE { + handoverToUTRANCommand-r7 HandoverToUTRANCommand-r7-IEs, + v780NonCriticalExtensions SEQUENCE { + handoverToUTRANCommand-v780ext HandoverToUTRANCommand-v780ext-IEs, + v820NonCriticalExtensions SEQUENCE { + handoverToUTRANCommand-v820ext HandoverToUTRANCommand-v820ext-IEs, + v7d0NonCriticalExtensions SEQUENCE { + handoverToUTRANCommand-v7d0ext + HandoverToUTRANCommand-v7d0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r8 SEQUENCE { + handoverToUTRANCommand-r8 HandoverToUTRANCommand-r8-IEs, + v7d0NonCriticalExtensions SEQUENCE { + handoverToUTRANCommand-v7d0ext HandoverToUTRANCommand-v7d0ext-IEs, + v890NonCriticalExtensions SEQUENCE { + handoverToUTRANCommand-v890ext + HandoverToUTRANCommand-v890ext-IEs, + v8a0NonCriticalExtensions SEQUENCE { + handoverToUTRANCommand-v8a0ext + HandoverToUTRANCommand-v8a0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r9 SEQUENCE { + handoverToUTRANCommand-r9 HandoverToUTRANCommand-r9-IEs, + v9c0NonCriticalExtensions SEQUENCE { + handoverToUTRANCommand-v9c0ext + HandoverToUTRANCommand-v9c0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions HandoverToUTRANCommand-LaterCriticalExtensions + } + } + } + } + } + } +} + + +HandoverToUTRANCommand-r3-IEs ::= SEQUENCE { + -- User equipment IEs + new-U-RNTI U-RNTI-Short, + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy ActivationTime OPTIONAL, + cipheringAlgorithm CipheringAlgorithm OPTIONAL, + -- Radio bearer IEs + -- Specification mode information + specificationMode CHOICE { + complete SEQUENCE { + srb-InformationSetupList SRB-InformationSetupList, + rab-InformationSetupList RAB-InformationSetupList OPTIONAL, + ul-CommonTransChInfo UL-CommonTransChInfo, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList, + dl-CommonTransChInfo DL-CommonTransChInfo, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList, + ul-DPCH-Info UL-DPCH-Info, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + -- dummy and dummy2 are not used in this version of specification, + -- they should not be sent and if received they should be ignored. + dummy DL-PDSCH-Information OPTIONAL, + dummy2 CPCH-SetInfo OPTIONAL + }, + tdd NULL + }, + dl-CommonInformation DL-CommonInformation, + dl-InformationPerRL-List DL-InformationPerRL-List, + frequencyInfo FrequencyInfo + }, + preconfiguration SEQUENCE { +-- All IEs that include an FDD/TDD choice are split in two IEs for this message, +-- one for the FDD only elements and one for the TDD only elements, so that one +-- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity + } + }, + rab-Info RAB-Info-Post OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostFDD, + dl-CommonInformationPost DL-CommonInformationPost, + dl-InformationPerRL-List DL-InformationPerRL-ListPostFDD, + frequencyInfo FrequencyInfoFDD + }, + tdd SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostTDD, + dl-CommonInformationPost DL-CommonInformationPost, + dl-InformationPerRL DL-InformationPerRL-PostTDD, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + } + } + } + }, + -- Physical channel IEs + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power +} + +HandoverToUTRANCommand-r4-IEs ::= SEQUENCE { + -- User equipment IEs + new-U-RNTI U-RNTI-Short, + cipheringAlgorithm CipheringAlgorithm OPTIONAL, + -- Radio bearer IEs + -- Specification mode information + specificationMode CHOICE { + complete SEQUENCE { + srb-InformationSetupList SRB-InformationSetupList, + rab-InformationSetupList RAB-InformationSetupList-r4 OPTIONAL, + ul-CommonTransChInfo UL-CommonTransChInfo-r4, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList, + dl-CommonTransChInfo DL-CommonTransChInfo-r4, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r4, + ul-DPCH-Info UL-DPCH-Info-r4, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + -- dummy and dummy2 are not used in this version of specification, + -- they should not be sent and if received they should be ignored. + dummy DL-PDSCH-Information OPTIONAL, + dummy2 CPCH-SetInfo OPTIONAL + }, + tdd NULL + }, + dl-CommonInformation DL-CommonInformation-r4, + dl-InformationPerRL-List DL-InformationPerRL-List-r4, + frequencyInfo FrequencyInfo + }, + preconfiguration SEQUENCE { +-- All IEs that include an FDD/TDD choice are split in two IEs for this message, +-- one for the FDD only elements and one for the TDD only elements, so that one +-- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r4 + } + }, + rab-Info RAB-Info-Post OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostFDD, + dl-CommonInformationPost DL-CommonInformationPost, + dl-InformationPerRL-List DL-InformationPerRL-ListPostFDD, + frequencyInfo FrequencyInfoFDD + }, + tdd CHOICE { + tdd384 SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostTDD, + dl-InformationPerRL DL-InformationPerRL-PostTDD, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + }, + tdd128 SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostTDD-LCR-r4, + dl-InformationPerRL DL-InformationPerRL-PostTDD-LCR-r4, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + } + } + } + } + }, + -- Physical channel IEs + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power +} + +HandoverToUTRANCommand-r5-IEs ::= SEQUENCE { + -- User equipment IEs + new-U-RNTI U-RNTI-Short, + cipheringAlgorithm CipheringAlgorithm OPTIONAL, + -- Radio bearer IEs + -- Specification mode information + specificationMode CHOICE { + complete SEQUENCE { + srb-InformationSetupList SRB-InformationSetupList-r5, + rab-InformationSetupList RAB-InformationSetupList-r5 OPTIONAL, + ul-CommonTransChInfo UL-CommonTransChInfo-r4, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList, + dl-CommonTransChInfo DL-CommonTransChInfo-r4, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r5, + ul-DPCH-Info UL-DPCH-Info-r5, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + -- dummy and dummy2 are not used in this version of specification, + -- they should not be sent and if received they should be ignored. + dummy DL-PDSCH-Information OPTIONAL, + dummy2 CPCH-SetInfo OPTIONAL + }, + tdd NULL + }, + dl-CommonInformation DL-CommonInformation-r4, + dl-InformationPerRL-List DL-InformationPerRL-List-r5, + frequencyInfo FrequencyInfo + }, + preconfiguration SEQUENCE { +-- All IEs that include an FDD/TDD choice are split in two IEs for this message, +-- one for the FDD only elements and one for the TDD only elements, so that one +-- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r5 + } + }, + rab-Info RAB-Info-Post OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostFDD, + dl-CommonInformationPost DL-CommonInformationPost, + dl-InformationPerRL-List DL-InformationPerRL-ListPostFDD, + frequencyInfo FrequencyInfoFDD + }, + tdd CHOICE { + tdd384 SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostTDD, + dl-InformationPerRL DL-InformationPerRL-PostTDD, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + }, + tdd128 SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostTDD-LCR-r4, + dl-InformationPerRL DL-InformationPerRL-PostTDD-LCR-r4, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + } + } + } + } + }, + -- Physical channel IEs + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power +} + +HandoverToUTRANCommand-r6-IEs ::= SEQUENCE { + -- User equipment IEs + new-U-RNTI U-RNTI-Short, + cipheringAlgorithm CipheringAlgorithm OPTIONAL, + -- Radio bearer IEs + -- Specification mode information + specificationMode CHOICE { + complete SEQUENCE { + srb-InformationSetupList SRB-InformationSetupList-r6, + rab-InformationSetupList RAB-InformationSetupList-r6 OPTIONAL, + ul-CommonTransChInfo UL-CommonTransChInfo-r4, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r6, + dl-CommonTransChInfo DL-CommonTransChInfo-r4, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r5, + ul-DPCH-Info UL-DPCH-Info-r6, + ul-EDCH-Information UL-EDCH-Information-r6 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r6 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r6, + dl-InformationPerRL-List DL-InformationPerRL-List-r6, + frequencyInfo FrequencyInfo + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6 + } + }, + rab-Info RAB-Info-Post OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostFDD, + dl-CommonInformationPost DL-CommonInformationPost, + dl-InformationPerRL-List DL-InformationPerRL-ListPostFDD, + frequencyInfo FrequencyInfoFDD + }, + tdd CHOICE { + tdd384 SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostTDD, + dl-InformationPerRL DL-InformationPerRL-PostTDD, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + }, + tdd128 SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostTDD-LCR-r4, + dl-InformationPerRL DL-InformationPerRL-PostTDD-LCR-r4, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + } + } + } + } + }, + -- Physical channel IEs + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power +} + +HandoverToUTRANCommand-v6b0ext-IEs ::= SEQUENCE { + ue-hspa-identities UE-HSPA-Identities-r6 OPTIONAL +} + +HandoverToUTRANCommand-r7-IEs ::= SEQUENCE { + -- User equipment IEs + new-U-RNTI U-RNTI-Short, + cipheringAlgorithm CipheringAlgorithm-r7 OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + -- Radio bearer IEs + -- Specification mode information + specificationMode CHOICE { + complete SEQUENCE { + srb-InformationSetupList SRB-InformationSetupList-r7, + rab-InformationSetupList RAB-InformationSetupList-r7 OPTIONAL, + ul-CommonTransChInfo UL-CommonTransChInfo-r4, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r7, + dl-CommonTransChInfo DL-CommonTransChInfo-r4, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r7, + ul-DPCH-Info UL-DPCH-Info-r7, + ul-EDCH-Information UL-EDCH-Information-r7 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r7 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r7, + dl-InformationPerRL-List DL-InformationPerRL-List-r7, + frequencyInfo FrequencyInfo, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6 + } + }, + rab-Info RAB-Info-Post OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostFDD, + dl-CommonInformationPost DL-CommonInformationPost, + dl-InformationPerRL-List DL-InformationPerRL-ListPostFDD, + frequencyInfo FrequencyInfoFDD + }, + tdd CHOICE { + tdd384 SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostTDD, + dl-InformationPerRL DL-InformationPerRL-PostTDD, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + }, + tdd128 SEQUENCE { + ul-DPCH-Info UL-DPCH-Info-r7, + dl-InformationPerRL DL-InformationPerRL-PostTDD-LCR-r4, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL + }, + tdd768 SEQUENCE { + ul-DPCH-Info UL-DPCH-Info-r7, + dl-InformationPerRL DL-InformationPerRL-List-r7, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + } + } + } + } + }, + -- Physical channel IEs + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power +} + +HandoverToUTRANCommand-v780ext-IEs ::= SEQUENCE { + -- Physical channel IEs + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL +} + +HandoverToUTRANCommand-v7d0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + ul-EDCH-Information UL-EDCH-Information-ext OPTIONAL +} + +HandoverToUTRANCommand-r8-IEs ::= SEQUENCE { + -- User equipment IEs + new-U-RNTI U-RNTI-Short, + cipheringAlgorithm CipheringAlgorithm-r7 OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + -- Radio bearer IEs + -- Specification mode information + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy DefaultConfigForCellFACH OPTIONAL, + specificationMode CHOICE { + complete SEQUENCE { + srb-InformationSetupList SRB-InformationSetupList-r8, + rab-InformationSetupList RAB-InformationSetupList-r8 OPTIONAL, + ul-CommonTransChInfo UL-CommonTransChInfo-r4, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8, + dl-CommonTransChInfo DL-CommonTransChInfo-r4, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r7, + ul-DPCH-Info UL-DPCH-Info-r7, + ul-EDCH-Information UL-EDCH-Information-r8 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r8, + dl-InformationPerRL-List DL-InformationPerRL-List-r7, + frequencyInfo FrequencyInfo, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored + dummy DLUL-HSPA-Information-r8 OPTIONAL + } + }, + rab-Info RAB-Info-Post OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostFDD, + dl-CommonInformationPost DL-CommonInformationPost, + dl-InformationPerRL-List DL-InformationPerRL-ListPostFDD, + frequencyInfo FrequencyInfoFDD + }, + tdd CHOICE { + tdd384 SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostTDD, + dl-InformationPerRL DL-InformationPerRL-PostTDD, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + }, + tdd128 SEQUENCE { + ul-DPCH-Info UL-DPCH-Info-r7, + dl-InformationPerRL DL-InformationPerRL-PostTDD-LCR-r4, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL + }, + tdd768 SEQUENCE { + ul-DPCH-Info UL-DPCH-Info-r7, + dl-InformationPerRL DL-InformationPerRL-List-r7, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + } + } + } + } + }, + -- Physical channel IEs + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power +} + +HandoverToUTRANCommand-v820ext-IEs ::= SEQUENCE { + -- Radio bearer IEs + rab-InformationSetupList RAB-InformationSetupList-v820ext OPTIONAL +} + +HandoverToUTRANCommand-v890ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8-ext OPTIONAL +} + +HandoverToUTRANCommand-v8a0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8-ext2 OPTIONAL +} + +HandoverToUTRANCommand-r9-IEs ::= SEQUENCE { + -- User equipment IEs + new-U-RNTI U-RNTI-Short, + cipheringAlgorithm CipheringAlgorithm-r7 OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + -- Radio bearer IEs + -- Specification mode information + defaultConfigForCellFACH DefaultConfigForCellFACH OPTIONAL, + specificationMode CHOICE { + complete SEQUENCE { + srb-InformationSetupList SRB-InformationSetupList-r8, + rab-InformationSetupList RAB-InformationSetupList-r8 OPTIONAL, + ul-CommonTransChInfo UL-CommonTransChInfo-r4, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8, + dl-CommonTransChInfo DL-CommonTransChInfo-r4, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r9, + ul-DPCH-Info UL-DPCH-Info-r7, + ul-EDCH-Information UL-EDCH-Information-r9 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r8, + dl-InformationPerRL-List DL-InformationPerRL-List-r7, + frequencyInfo FrequencyInfo, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored + dummy DLUL-HSPA-Information-r9 OPTIONAL + } + }, + rab-Info RAB-Info-Post OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostFDD, + dl-CommonInformationPost DL-CommonInformationPost, + dl-InformationPerRL-List DL-InformationPerRL-ListPostFDD, + frequencyInfo FrequencyInfoFDD + }, + tdd CHOICE { + tdd384 SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostTDD, + dl-InformationPerRL DL-InformationPerRL-PostTDD, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + }, + tdd128 SEQUENCE { + ul-DPCH-Info UL-DPCH-Info-r7, + dl-InformationPerRL DL-InformationPerRL-PostTDD-LCR-r4, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL + }, + tdd768 SEQUENCE { + ul-DPCH-Info UL-DPCH-Info-r7, + dl-InformationPerRL DL-InformationPerRL-List-r7, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + } + } + } + } + }, + -- Physical channel IEs + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power +} + +HandoverToUTRANCommand-v9c0ext-IEs ::= SEQUENCE { + -- For 1.28Mcps TDD only + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-TDD128-v9c0ext OPTIONAL +} + +HandoverToUTRANCommand-LaterCriticalExtensions ::= CHOICE { + r10 SEQUENCE { + handoverToUTRANCommand-r10 HandoverToUTRANCommand-r10-IEs, + v9c0NonCriticalExtensions SEQUENCE { + handoverToUTRANCommand-v9c0ext + HandoverToUTRANCommand-v9c0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r11 SEQUENCE { + handoverToUTRANCommand-r11 HandoverToUTRANCommand-r11-IEs, + -- Container for adding non critical extensions after freezing REL-12 + handoverToUTRANCommand-r11-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } +} + +HandoverToUTRANCommand-r10-IEs ::= SEQUENCE { + -- User equipment IEs + new-U-RNTI U-RNTI-Short, + cipheringAlgorithm CipheringAlgorithm-r7 OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + -- Radio bearer IEs + -- Specification mode information + defaultConfigForCellFACH DefaultConfigForCellFACH OPTIONAL, + specificationMode CHOICE { + complete SEQUENCE { + srb-InformationSetupList SRB-InformationSetupList-r8, + rab-InformationSetupList RAB-InformationSetupList-r8 OPTIONAL, + ul-CommonTransChInfo UL-CommonTransChInfo-r4, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8, + dl-CommonTransChInfo DL-CommonTransChInfo-r4, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r9, + ul-DPCH-Info UL-DPCH-Info-r7, + ul-EDCH-Information UL-EDCH-Information-r9 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r10, + dl-InformationPerRL-List DL-InformationPerRL-List-r7, + frequencyInfo FrequencyInfo, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored + dummy DLUL-HSPA-Information-r10 OPTIONAL + } + }, + rab-Info RAB-Info-Post OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostFDD, + dl-CommonInformationPost DL-CommonInformationPost, + dl-InformationPerRL-List DL-InformationPerRL-ListPostFDD, + frequencyInfo FrequencyInfoFDD + }, + tdd CHOICE { + tdd384 SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostTDD, + dl-InformationPerRL DL-InformationPerRL-PostTDD, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + }, + tdd128 SEQUENCE { + ul-DPCH-Info UL-DPCH-Info-r7, + dl-InformationPerRL DL-InformationPerRL-PostTDD-LCR-r4, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL + }, + tdd768 SEQUENCE { + ul-DPCH-Info UL-DPCH-Info-r7, + dl-InformationPerRL DL-InformationPerRL-List-r7, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + } + } + } + } + }, + -- Physical channel IEs + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power +} + +HandoverToUTRANCommand-r11-IEs ::= SEQUENCE { + -- User equipment IEs + new-U-RNTI U-RNTI-Short, + cipheringAlgorithm CipheringAlgorithm-r7 OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + -- Radio bearer IEs + -- Specification mode information + defaultConfigForCellFACH DefaultConfigForCellFACH OPTIONAL, + specificationMode CHOICE { + complete SEQUENCE { + srb-InformationSetupList SRB-InformationSetupList-r8, + rab-InformationSetupList RAB-InformationSetupList-r8 OPTIONAL, + ul-CommonTransChInfo UL-CommonTransChInfo-r4, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8, + dl-CommonTransChInfo DL-CommonTransChInfo-r4, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r11, + ul-DPCH-Info UL-DPCH-Info-r11, + ul-EDCH-Information UL-EDCH-Information-r11 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r11 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r10, + dl-InformationPerRL-List DL-InformationPerRL-List-r11, + frequencyInfo FrequencyInfo, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6 + } + }, + rab-Info RAB-Info-Post OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostFDD, + dl-CommonInformationPost DL-CommonInformationPost, + dl-InformationPerRL-List DL-InformationPerRL-ListPostFDD, + frequencyInfo FrequencyInfoFDD + }, + tdd CHOICE { + tdd384 SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostTDD, + dl-InformationPerRL DL-InformationPerRL-PostTDD, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + }, + tdd128 SEQUENCE { + ul-DPCH-Info UL-DPCH-Info-r7, + dl-InformationPerRL DL-InformationPerRL-PostTDD-LCR-r4, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL + }, + tdd768 SEQUENCE { + ul-DPCH-Info UL-DPCH-Info-r7, + dl-InformationPerRL DL-InformationPerRL-List-r7, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + } + } + } + } + }, + -- Physical channel IEs + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power +} + +-- *************************************************** +-- +-- HANDOVER TO UTRAN COMPLETE +-- +-- *************************************************** + +HandoverToUTRANComplete ::= SEQUENCE { + --TABULAR: Integrity protection shall not be performed on this message. + -- User equipment IEs + -- TABULAR: startList is conditional on history. + startList STARTList OPTIONAL, + -- Radio bearer IEs + count-C-ActivationTime ActivationTime OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + handoverToUTRANComplete-r3-add-ext BIT STRING OPTIONAL, + va40NonCriticalExtensions SEQUENCE { + handoverToUTRANComplete-va40ext HandoverToUTRANComplete-va40ext, + vb50NonCriticalExtensions SEQUENCE { + handoverToUTRANComplete-vb50ext HandoverToUTRANComplete-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +HandoverToUTRANComplete-va40ext ::= SEQUENCE { + loggedMeasAvailable ENUMERATED { true } OPTIONAL +} + +HandoverToUTRANComplete-vb50ext-IEs ::= SEQUENCE { + connEstFailInfoAvailable ENUMERATED { true } OPTIONAL +} + +-- *************************************************** +-- +-- INITIAL DIRECT TRANSFER +-- +-- *************************************************** + +InitialDirectTransfer ::= SEQUENCE { + -- Core network IEs + cn-DomainIdentity CN-DomainIdentity, + intraDomainNasNodeSelector IntraDomainNasNodeSelector, + nas-Message NAS-Message, + -- Measurement IEs + measuredResultsOnRACH MeasuredResultsOnRACH OPTIONAL, + v3a0NonCriticalExtensions SEQUENCE { + initialDirectTransfer-v3a0ext InitialDirectTransfer-v3a0ext, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + initialDirectTransfer-r3-add-ext BIT STRING + (CONTAINING InitialDirectTransfer-r3-add-ext-IEs) OPTIONAL, + v590NonCriticalExtensions SEQUENCE { + initialDirectTransfer-v590ext InitialDirectTransfer-v590ext, + v690NonCriticalExtensions SEQUENCE { + initialDirectTransfer-v690ext InitialDirectTransfer-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + initialDirectTransfer-v770ext InitialDirectTransfer-v770ext-IEs, + v860NonCriticalExtensions SEQUENCE { + initialDirectTransfer-v860ext InitialDirectTransfer-v860ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + initialDirectTransfer-vb50ext InitialDirectTransfer-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +InitialDirectTransfer-v3a0ext ::= SEQUENCE { + -- start-value shall always be included in this version of the protocol + start-Value START-Value OPTIONAL +} +InitialDirectTransfer-v590ext ::= SEQUENCE { + establishmentCause EstablishmentCause OPTIONAL +} + +InitialDirectTransfer-v690ext-IEs ::= SEQUENCE { + -- Core network IEs + plmn-Identity PLMN-Identity OPTIONAL, + -- Measurement IEs + measuredResultsOnRACHinterFreq MeasuredResultsOnRACHinterFreq OPTIONAL, + -- MBMS IEs + mbms-JoinedInformation MBMS-JoinedInformation-r6 OPTIONAL +} + +InitialDirectTransfer-v770ext-IEs ::= SEQUENCE { + csCallType ENUMERATED { speech, video, other, spare } OPTIONAL +} + +InitialDirectTransfer-v860ext-IEs ::= SEQUENCE { + supportOfCSG ENUMERATED { true } OPTIONAL +} + +InitialDirectTransfer-r3-add-ext-IEs ::= SEQUENCE { + initialDirectTransfer-v7g0ext InitialDirectTransfer-v7g0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +InitialDirectTransfer-v7g0ext-IEs ::= SEQUENCE { + -- Measurement IEs + measuredResultsOnRACH-v7g0ext MeasuredResultsOnRACH-v7g0ext OPTIONAL +} + +InitialDirectTransfer-vb50ext-IEs ::= SEQUENCE { + -- Measurement IEs + measuredResultsOnRACHEUTRAFreq MeasuredResultsOnRACH-EUTRAFreq OPTIONAL +} + +-- *************************************************** +-- +-- HANDOVER FROM UTRAN COMMAND +-- +-- *************************************************** + +HandoverFromUTRANCommand-GSM ::= CHOICE { + r3 SEQUENCE { + handoverFromUTRANCommand-GSM-r3 + HandoverFromUTRANCommand-GSM-r3-IEs, + -- UTRAN should not include the IE laterNonCriticalExtensions when it sets the IE + -- gsm-message included in handoverFromUTRANCommand-GSM-r3 to single-GSM-Message. The UE + -- behaviour upon receiving a message with this combination of IE values is unspecified. + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + handoverFromUTRANCommand-GSM-r3-add-ext BIT STRING OPTIONAL, + -- UTRAN may apply the r3 version of the message to perform PS handover + -- for a single RAB only + v690NonCriticalExtensions SEQUENCE { + handoverFromUTRANCommand-GSM-v690ext HandoverFromUTRANCommand-GSM-v690ext-IEs, + v860NonCriticalExtensions SEQUENCE { + handoverFromUTRANCommand-GSM-v860ext + HandoverFromUTRANCommand-GSM-v860ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r6 SEQUENCE { + handoverFromUTRANCommand-GSM-r6 HandoverFromUTRANCommand-GSM-r6-IEs, + handoverFromUTRANCommand-GSM-r6-add-ext BIT STRING OPTIONAL, + v860NonCriticalExtensions SEQUENCE { + handoverFromUTRANCommand-GSM-v860ext + HandoverFromUTRANCommand-GSM-v860ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } +} + +HandoverFromUTRANCommand-GSM-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + activationTime ActivationTime OPTIONAL, + -- Radio bearer IEs + toHandoverRAB-Info RAB-Info OPTIONAL, + -- Measurement IEs + frequency-band Frequency-Band, + -- Other IEs + gsm-message CHOICE { + -- In the single-GSM-Message case the following rules apply: + -- 1> the GSM message directly follows the basic production; the final padding that + -- results when PER encoding the abstract syntax value is removed prior to appending + -- the GSM message. + -- 2> the RRC message excluding the GSM part, does not contain a length determinant; + -- there is no explicit parameter indicating the size of the included GSM message. + -- 3> depending on need, final padding (all "0"s) is added to ensure the final result + -- comprises a full number of octets + single-GSM-Message SEQUENCE {}, + gsm-MessageList SEQUENCE { + gsm-Messages GSM-MessageList + } + } +} + +HandoverFromUTRANCommand-GSM-r6-IEs ::= SEQUENCE { + -- User equipment IEs + activationTime ActivationTime OPTIONAL, + -- Radio bearer IEs + toHandoverRAB-Info RAB-InformationList-r6 OPTIONAL, + -- Measurement IEs + frequency-band Frequency-Band, + -- Other IEs + gsm-message CHOICE { + -- In the single-GSM-Message case the following rules apply: + -- 1> the GSM message directly follows the basic production; the final padding that + -- results when PER encoding the abstract syntax value is removed prior to appending + -- the GSM message. + -- 2> the RRC message excluding the GSM part, does not contain a length determinant; + -- there is no explicit parameter indicating the size of the included GSM message. + -- 3> depending on need, final padding (all "0"s) is added to ensure the final result + -- comprises a full number of octets + single-GSM-Message SEQUENCE {}, + gsm-MessageList SEQUENCE { + gsm-Messages GSM-MessageList + } + }, + geran-SystemInfoType CHOICE { + sI GERAN-SystemInformation, + pSI GERAN-SystemInformation + } OPTIONAL +} + +HandoverFromUTRANCommand-GSM-v690ext-IEs ::= SEQUENCE { + geran-SystemInfoType CHOICE { + sI GERAN-SystemInformation, + pSI GERAN-SystemInformation + } OPTIONAL +} + +HandoverFromUTRANCommand-GSM-v860ext-IEs ::= SEQUENCE { + sr-vcc-SecurityRABInfo SR-VCC-SecurityRABInfo-v860ext OPTIONAL +} + +HandoverFromUTRANCommand-GERANIu ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + handoverFromUTRANCommand-GERANIu CHOICE { + r5 SEQUENCE { + handoverFromUTRANCommand-GERANIu-r5 + HandoverFromUTRANCommand-GERANIu-r5-IEs, + -- UTRAN should not include the IE nonCriticalExtensions when it sets + -- the IE geranIu-message included in handoverFromUTRANCommand-GERANIu-r5 to + -- single-GERANIu-Message + -- The UE behaviour upon receiving a message including this combination of IE values is + -- not specified + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + later-than-r5 SEQUENCE { + criticalExtensions SEQUENCE {} + } + } +} + +HandoverFromUTRANCommand-GERANIu-r5-IEs ::= SEQUENCE { + -- User equipment IEs + activationTime ActivationTime OPTIONAL, + -- Measurement IEs + frequency-Band Frequency-Band, + -- Other IEs + geranIu-Message CHOICE { + -- In the single-GERANIu-Message case the following rules apply: + -- 1> the GERAN Iu message directly follows the basic production; the final padding that + -- results when PER encoding the abstract syntax value is removed prior to appending + -- the GERAN Iu message. + -- 2> the RRC message excluding the GERAN Iu part does not contain a length determinant; +-- there is no explicit parameter indicating the size of the included GERAN Iu +-- message. + -- 3> depending on need, final padding (all "0"s) is added to ensure the final result + -- comprises a full number of octets. + single-GERANIu-Message SEQUENCE {}, + geranIu-MessageList SEQUENCE { + geranIu-Messages GERANIu-MessageList + } + } +} + +HandoverFromUTRANCommand-CDMA2000 ::= CHOICE { + r3 SEQUENCE { + handoverFromUTRANCommand-CDMA2000-r3 + HandoverFromUTRANCommand-CDMA2000-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + handoverFromUTRANCommand-CDMA2000-r3-add-ext + BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions SEQUENCE {} + } +} + +HandoverFromUTRANCommand-CDMA2000-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + activationTime ActivationTime OPTIONAL, + -- Radio bearer IEs + toHandoverRAB-Info RAB-Info OPTIONAL, + -- Other IEs + cdma2000-MessageList CDMA2000-MessageList +} + +HandoverFromUTRANCommand-EUTRA ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r8 SEQUENCE { + handoverFromUTRANCommand-EUTRA-r8 HandoverFromUTRANCommand-EUTRA-r8-IEs, + handoverFromUTRANCommand-EUTRA-r8-add-ext + BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions CHOICE { + r11 SEQUENCE { + handoverFromUTRANCommand-EUTRA-r11 HandoverFromUTRANCommand-EUTRA-r11-IEs, + handoverFromUTRANCommand-EUTRA-r11-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } +} + +HandoverFromUTRANCommand-EUTRA-r8-IEs ::= SEQUENCE { + -- User equipment IEs + activationTime ActivationTime OPTIONAL, + -- Radio bearer IEs + toHandoverRAB-Info RAB-InformationList OPTIONAL, + -- Other IEs + eutra-Message OCTET STRING +} + +HandoverFromUTRANCommand-EUTRA-r11-IEs ::= SEQUENCE { + -- User equipment IEs + rsr-vcc-Info RSR-VCC-Info OPTIONAL, + activationTime ActivationTime OPTIONAL, + -- Radio bearer IEs + toHandoverRAB-Info RAB-InformationList OPTIONAL, + -- Other IEs + eutra-Message OCTET STRING +} + +-- *************************************************** +-- +-- HANDOVER FROM UTRAN FAILURE +-- +-- *************************************************** + +HandoverFromUTRANFailure ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + -- Other IEs + interRAT-HO-FailureCause InterRAT-HO-FailureCause OPTIONAL, + -- In case the interRATMessage to be transferred is for GERAN Iu mode, the + -- message should be placed in the HandoverFromUtranFailure-v590ext-IEs + -- non-critical extension container. + -- In case the interRATMessage to be transferred is for E-UTRA, the + -- message should be placed in the HandoverFromUtranFailure-v860ext-IEs + -- non-critical extension container. + interRATMessage CHOICE { + gsm SEQUENCE { + gsm-MessageList GSM-MessageList + }, + cdma2000 SEQUENCE { + cdma2000-MessageList CDMA2000-MessageList + } + } OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + handoverFromUTRANFailure-r3-add-ext BIT STRING OPTIONAL, + v590NonCriticalExtensions SEQUENCE { + handoverFromUTRANFailure-v590ext HandoverFromUtranFailure-v590ext-IEs, + v860NonCriticalExtensions SEQUENCE { + handoverFromUTRANFailure-v860ext HandoverFromUtranFailure-v860ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +HandoverFromUtranFailure-v590ext-IEs ::= SEQUENCE { + geranIu-MessageList GERANIu-MessageList OPTIONAL +} + +HandoverFromUtranFailure-v860ext-IEs ::= SEQUENCE { + eutra-Message OCTET STRING OPTIONAL +} + +-- *************************************************** +-- +-- INTER RAT HANDOVER INFO +-- +-- *************************************************** + +InterRATHandoverInfo ::= SEQUENCE { + -- This structure is defined for historical reasons, backward compatibility with 44.018 + predefinedConfigStatusList CHOICE { + absent NULL, + present PredefinedConfigStatusList + }, + uE-SecurityInformation CHOICE { + absent NULL, + present UE-SecurityInformation + }, + ue-CapabilityContainer CHOICE { + absent NULL, + -- present is an octet aligned string containing IE UE-RadioAccessCapabilityInfo + present OCTET STRING (SIZE (0..63)) + }, + -- Non critical extensions + v390NonCriticalExtensions CHOICE { + absent NULL, + present SEQUENCE { + interRATHandoverInfo-v390ext InterRATHandoverInfo-v390ext-IEs, + v3a0NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v3a0ext InterRATHandoverInfo-v3a0ext-IEs, + laterNonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v3d0ext InterRATHandoverInfo-v3d0ext-IEs, + -- Container for additional R99 extensions + interRATHandoverInfo-r3-add-ext BIT STRING + (CONTAINING InterRATHandoverInfo-r3-add-ext-IEs) OPTIONAL, + v3g0NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v3g0ext InterRATHandoverInfo-v3g0ext-IEs, + v4b0NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v4b0ext InterRATHandoverInfo-v4b0ext-IEs, + v4d0NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v4d0ext InterRATHandoverInfo-v4d0ext-IEs, + -- Reserved for future non critical extension + v590NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v590ext + InterRATHandoverInfo-v590ext-IEs, + v690NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v690ext + InterRATHandoverInfo-v690ext-IEs, + v6b0NonCriticalExtensions + InterRATHandoverInfo-NonCriticalExtension-v6b0-IEs OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } + } +} + +InterRATHandoverInfo-v390ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v380ext UE-RadioAccessCapability-v380ext OPTIONAL, + dl-PhysChCapabilityFDD-v380ext DL-PhysChCapabilityFDD-v380ext +} + +InterRATHandoverInfo-v3a0ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v3a0ext UE-RadioAccessCapability-v3a0ext OPTIONAL +} + +InterRATHandoverInfo-v3d0ext-IEs ::= SEQUENCE { + -- User equipment IEs + uESpecificBehaviourInformation1interRAT UESpecificBehaviourInformation1interRAT OPTIONAL +} + +InterRATHandoverInfo-v3g0ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v3g0ext UE-RadioAccessCapability-v3g0ext OPTIONAL +} + +InterRATHandoverInfo-r3-add-ext-IEs ::= SEQUENCE { + interRATHandoverInfo-v690ext1 InterRATHandoverInfo-v690ext1-IEs, + v7e0NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v7e0ext InterRATHandoverInfo-v7e0ext-IEs, + v7f0NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v7f0ext InterRATHandoverInfo-v7f0ext-IEs, + va40NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-va40ext InterRATHandoverInfoBand-va40ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +InterRATHandoverInfo-v4b0ext-IEs ::= SEQUENCE { + -- User equipment IEs + accessStratumReleaseIndicator AccessStratumReleaseIndicator +} + +InterRATHandoverInfo-v4d0ext-IEs ::= SEQUENCE { + -- User equipment IEs + tdd128-RF-Capability RadioFrequencyBandTDDList OPTIONAL +} + +InterRATHandoverInfo-v590ext-IEs ::= SEQUENCE { + -- User equipment IEs + predefinedConfigStatusListComp PredefinedConfigStatusListComp OPTIONAL, + ue-RadioAccessCapabilityComp UE-RadioAccessCapabilityComp OPTIONAL +} + +InterRATHandoverInfo-v690ext1-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v650ext UE-RadioAccessCapability-v650ext OPTIONAL +} + +InterRATHandoverInfo-v690ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-SecurityInformation2 UE-SecurityInformation2 OPTIONAL, + ue-RadioAccessCapabilityComp UE-RadioAccessCapabilityComp-ext OPTIONAL, + ue-RadioAccessCapabilityComp2 UE-RadioAccessCapabilityComp2 +} + +InterRATHandoverInfo-NonCriticalExtension-v6b0-IEs ::= SEQUENCE { + interRATHandoverInfo-v6b0ext InterRATHandoverInfo-v6b0ext-IEs, + v6e0NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v6e0ext InterRATHandoverInfo-v6e0ext-IEs, + v770NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v770ext InterRATHandoverInfo-v770ext-IEs, + v790nonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v790ext InterRATHandoverInfo-v790ext-IEs, + v860NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v860ext InterRATHandoverInfo-v860ext-IEs, + v880NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v880ext InterRATHandoverInfo-v880ext-IEs, + v920NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v920ext InterRATHandoverInfo-v920ext-IEs, + v8b0NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v8b0ext + InterRATHandoverInfo-v8b0ext-IEs, + v950NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v950ext + InterRATHandoverInfo-v950ext-IEs, + va40NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-va40ext + InterRATHandoverInfo-va40ext-IEs, + va80NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-va80ext + InterRATHandoverInfo-va80ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-vb50ext + InterRATHandoverInfo-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +InterRATHandoverInfo-v6b0ext-IEs ::= SEQUENCE { + -- User equipment IEs + supportForSIB11bis ENUMERATED { true } OPTIONAL +} + +InterRATHandoverInfo-v6e0ext-IEs ::= SEQUENCE { + -- User equipment IEs + supportForFDPCH ENUMERATED { true } OPTIONAL +} + +InterRATHandoverInfo-v770ext-IEs ::= SEQUENCE { + ue-RadioAccessCapabilityInfo UE-RadioAccessCapabilityInfo-v770ext OPTIONAL, + ue-RadioAccessCapabilityComp UE-RadioAccessCapabilityComp-v770ext OPTIONAL, + ue-RadioAccessCapabilityComp2 UE-RadioAccessCapabilityComp2-v770ext OPTIONAL +} + +InterRATHandoverInfo-v790ext-IEs ::= SEQUENCE { + -- User equipment IEs + supportForEDPCCHPowerBoosting ENUMERATED { true } OPTIONAL +} + +InterRATHandoverInfo-v7e0ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability UE-RadioAccessCapability-v7e0ext OPTIONAL +} + +InterRATHandoverInfo-v7f0ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability UE-RadioAccessCapability-v7f0ext OPTIONAL, + ue-RadioAccessCapabilityComp2 UE-RadioAccessCapabilityComp2-v7f0ext OPTIONAL +} + +InterRATHandoverInfo-v860ext-IEs ::= SEQUENCE { + ue-RadioAccessCapabilityInfo UE-RadioAccessCapability-v860ext OPTIONAL, + ue-RadioAccessCapabilityComp2 UE-RadioAccessCapabilityComp2-v860ext OPTIONAL +} + +InterRATHandoverInfo-v880ext-IEs ::= SEQUENCE { + -- UE radio access capability + ue-RadioAccessCapabilityInfo UE-RadioAccessCapability-v880ext OPTIONAL, + ue-RadioAccessCapabilityInfo-TDD128 UE-RadioAccessCapabilityComp-TDD128 OPTIONAL +} + +InterRATHandoverInfo-v920ext-IEs ::= SEQUENCE { + ue-RadioAccessCapabilityInfo UE-RadioAccessCapability-v920ext OPTIONAL, + ue-RadioAccessCapabilityComp2 UE-RadioAccessCapabilityComp2-v920ext OPTIONAL +} + +InterRATHandoverInfo-v8b0ext-IEs ::= SEQUENCE { + -- UE radio access capability + ue-RadioAccessCapabilityInfo UE-RadioAccessCapabilityInfo-TDD128-v8b0ext OPTIONAL +} + +InterRATHandoverInfo-v950ext-IEs ::= SEQUENCE { + -- User equipment IEs + pdcp-Capability PDCP-Capability-r4-ext OPTIONAL +} + +InterRATHandoverInfo-va40ext-IEs ::= SEQUENCE { + ue-RadioAccessCapabilityInfo UE-RadioAccessCapability-va40ext OPTIONAL, + ue-RadioAccessCapabilityComp2 UE-RadioAccessCapabilityComp2-va40ext OPTIONAL +} + +InterRATHandoverInfoBand-va40ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapabBand UE-RadioAccessCapabBand-va40ext OPTIONAL, + rf-CapabilityFDDComp RF-CapabBandListFDDComp-ext2 OPTIONAL +} + +InterRATHandoverInfo-va80ext-IEs ::= SEQUENCE { + ue-RadioAccessCapabilityInfo-va80ext UE-RadioAccessCapability-va80ext OPTIONAL +} + +InterRATHandoverInfo-vb50ext-IEs ::= SEQUENCE { + ue-RadioAccessCapabilityInfo-vb50ext UE-RadioAccessCapability-vb50ext OPTIONAL, + ue-RadioAccessCapabilityComp2 UE-RadioAccessCapabilityComp2-vb50ext OPTIONAL, + ue-RadioAccessCapabilityInfo-TDD128 UE-RadioAccessCapabilityInfo-TDD128-vb50ext OPTIONAL +} + +-- *************************************************** +-- +-- MEASUREMENT CONTROL +-- +-- *************************************************** + +MeasurementControl ::= CHOICE { + -- The Rel-4 functionality of UE Positioning OTDOA AssistanceData TDD is only available + -- in the later-than-r3 branch of this message (i.e. through the use of the IE + -- ue-Positioning-OTDOA-AssistanceData-r4) + r3 SEQUENCE { + measurementControl-r3 MeasurementControl-r3-IEs, + v390nonCriticalExtensions SEQUENCE { + measurementControl-v390ext MeasurementControl-v390ext, + v3a0NonCriticalExtensions SEQUENCE { + measurementControl-v3a0ext MeasurementControl-v3a0ext, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + measurementControl-r3-add-ext BIT STRING OPTIONAL, + v4b0NonCriticalExtensions SEQUENCE{ + -- The content of the v4b0 non-critical extension has been removed. If sent + -- to a UE of AS release 4, the UE behaviour is unspecified. A UE of AS + -- release 5 onward shall comply with the v4b0 and later extensions in this + -- branch of the message. + v590NonCriticalExtensions SEQUENCE { + measurementControl-v590ext MeasurementControl-v590ext-IEs, + v5b0NonCriticalExtensions SEQUENCE { + measurementControl-v5b0ext MeasurementControl-v5b0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + -- Least significant part of extended "RRC transaction identifier" (Rel-5 onward) + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r4 SEQUENCE { + measurementControl-r4 MeasurementControl-r4-IEs, + v4d0NonCriticalExtensions SEQUENCE { + -- Container for adding non critical extensions after freezing REL-5 + measurementControl-r4-add-ext BIT STRING OPTIONAL, + v590NonCriticalExtensions SEQUENCE{ + measurementControl-v590ext MeasurementControl-v590ext-IEs, + v5b0NonCriticalExtensions SEQUENCE { + measurementControl-v5b0ext MeasurementControl-v5b0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r4 SEQUENCE { + -- Most significant part of extended "RRC transaction identifier" (MSP): + -- extended "RRC transaction identifier" = + -- rrc-TransactionIdentifier-MSP * 4 + rrc-TransactionIdentifier + rrc-TransactionIdentifier-MSP RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r6 SEQUENCE { + measurementControl-r6 MeasurementControl-r6-IEs, + v6a0NonCriticalExtensions SEQUENCE { + measurementControl-v6a0ext MeasurementControl-v6a0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r7 SEQUENCE { + measurementControl-r7 MeasurementControl-r7-IEs, + -- Container for adding non critical extensions after freezing REL-7 + measurementControl-r7-add-ext BIT STRING OPTIONAL, + v7b0NonCriticalExtensions SEQUENCE { + measurementControl-v7b0ext MeasurementControl-v7b0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r8 SEQUENCE { + measurementControl-r8 MeasurementControl-r8-IEs, + -- Container for adding non critical extensions after freezing REL-9 + measurementControl-r8-add-ext BIT STRING OPTIONAL, + v8a0NonCriticalExtensions SEQUENCE { + measurementControl-v8a0ext MeasurementControl-v8a0ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + measurementControl-vb50ext MeasurementControl-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r9 SEQUENCE { + measurementControl-r9 MeasurementControl-r9-IEs, + -- Container for adding non critical extensions after freezing REL-10 + measurementControl-r9-add-ext BIT STRING OPTIONAL, + v970NonCriticalExtensions SEQUENCE { + measurementControl-v970ext + MeasurementControl-v970ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + measurementControl-vb50ext + MeasurementControl-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r10 SEQUENCE { + measurementControl-r10 MeasurementControl-r10-IEs, + -- Container for adding non critical extensions after + -- freezing REL-11 + measurementControl-r10-add-ext BIT STRING OPTIONAL, + vaa0NonCriticalExtensions SEQUENCE { + measurementControl-vaa0ext + MeasurementControl-vaa0ext-IEs, + vab0NonCriticalExtensions SEQUENCE { + measurementControl-vab0ext + MeasurementControl-vab0ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + measurementControl-vb50ext + MeasurementControl-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r11 SEQUENCE { + measurementControl-r11 + MeasurementControl-r11-IEs, + -- Container for adding non critical extensions after + -- freezing REL-12 + measurementControl-r11-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } + } + } + } + } + } + } + } +} + +MeasurementControl-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + -- Measurement IEs + measurementIdentity MeasurementIdentity, + -- TABULAR: The measurement type is included in MeasurementCommand. + measurementCommand MeasurementCommand, + measurementReportingMode MeasurementReportingMode OPTIONAL, + additionalMeasurementList AdditionalMeasurementID-List OPTIONAL, + -- Physical channel IEs + dpch-CompressedModeStatusInfo DPCH-CompressedModeStatusInfo OPTIONAL +} + +MeasurementControl-v390ext ::= SEQUENCE { + ue-Positioning-Measurement-v390ext UE-Positioning-Measurement-v390ext OPTIONAL +} + +MeasurementControl-v3a0ext ::= SEQUENCE { + sfn-Offset-Validity SFN-Offset-Validity OPTIONAL +} + +MeasurementControl-r4-IEs ::= SEQUENCE { + -- Measurement IEs + measurementIdentity MeasurementIdentity, + -- TABULAR: The measurement type is included in measurementCommand. + measurementCommand MeasurementCommand-r4, + measurementReportingMode MeasurementReportingMode OPTIONAL, + additionalMeasurementList AdditionalMeasurementID-List OPTIONAL, + -- Physical channel IEs + dpch-CompressedModeStatusInfo DPCH-CompressedModeStatusInfo OPTIONAL +} + +MeasurementControl-v590ext-IEs ::= SEQUENCE { + measurementCommand-v590ext CHOICE { + -- the choice "intra-frequency" shall be used for the case of intra-frequency measurement, + -- as well as when intra-frequency events are configured for inter-frequency measurement + intra-frequency Intra-FreqEventCriteriaList-v590ext, + inter-frequency Inter-FreqEventCriteriaList-v590ext + } OPTIONAL, + intraFreqReportingCriteria-1b-r5 IntraFreqReportingCriteria-1b-r5 OPTIONAL, + intraFreqEvent-1d-r5 IntraFreqEvent-1d-r5 OPTIONAL, + -- Most significant part of extended "RRC transaction identifier" (MSP): + -- extended "RRC transaction identifier" = + -- rrc-TransactionIdentifier-MSP-v590ext * 4 + rrc-TransactionIdentifier + rrc-TransactionIdentifier-MSP-v590ext RRC-TransactionIdentifier +} + +MeasurementControl-v5b0ext-IEs ::= SEQUENCE { + interRATCellInfoIndication InterRATCellInfoIndication OPTIONAL +} + +MeasurementControl-r6-IEs ::= SEQUENCE { + -- Measurement IEs + measurementIdentity MeasurementIdentity, + -- TABULAR: The measurement type is included in measurementCommand. + measurementCommand MeasurementCommand-r6, + measurementReportingMode MeasurementReportingMode OPTIONAL, + additionalMeasurementList AdditionalMeasurementID-List OPTIONAL, + -- Physical channel IEs + dpch-CompressedModeStatusInfo DPCH-CompressedModeStatusInfo OPTIONAL +} + +MeasurementControl-v6a0ext-IEs ::= SEQUENCE { + intraFreqReportingCriteria-1b-r5 IntraFreqReportingCriteria-1b-r5 OPTIONAL +} + + +MeasurementControl-r7-IEs ::= SEQUENCE { + -- Measurement IEs + measurementIdentity MeasurementIdentity, + -- TABULAR: The measurement type is included in measurementCommand. + measurementCommand MeasurementCommand-r7, + measurementReportingMode MeasurementReportingMode OPTIONAL, + additionalMeasurementList AdditionalMeasurementID-List OPTIONAL, + -- Physical channel IEs + dpch-CompressedModeStatusInfo DPCH-CompressedModeStatusInfo OPTIONAL +} + +MeasurementControl-v7b0ext-IEs ::= SEQUENCE { + -- Measurement IEs + newInterFreqCellList NewInterFreqCellList-v7b0ext OPTIONAL +} + +MeasurementControl-r8-IEs ::= SEQUENCE { + -- Measurement IEs + measurementIdentity MeasurementIdentity, + -- TABULAR: The measurement type is included in measurementCommand. + measurementCommand MeasurementCommand-r8, + measurementReportingMode MeasurementReportingMode OPTIONAL, + additionalMeasurementList AdditionalMeasurementID-List OPTIONAL, + -- Physical channel IEs + dpch-CompressedModeStatusInfo DPCH-CompressedModeStatusInfo OPTIONAL +} + +MeasurementControl-v8a0ext-IEs ::= SEQUENCE { + -- Measurement IEs + newIntraFreqCellList NewIntraFreqCellList-LCR-v8a0ext OPTIONAL, + newInterFreqCellList NewInterFreqCellList-LCR-v8a0ext OPTIONAL +} + +MeasurementControl-r9-IEs ::= SEQUENCE { + -- Measurement IEs + -- if the UE supports extended measurements, "measurementIdentity" + -- shall be ignored if "measurementIdentity" in MeasurementControl-v970ext-IEs + -- is present, and the value of that element shall be used instead. + measurementIdentity MeasurementIdentity, + -- TABULAR: The measurement type is included in measurementCommand. + measurementCommand MeasurementCommand-r9, + measurementReportingMode MeasurementReportingMode OPTIONAL, + -- if the UE supports extended measurements, "additionalMeasurementList" + -- shall be ignored if "additionalMeasurementList" in MeasurementControl-v970ext-IEs + -- is present, and the value of that element shall be used instead. + additionalMeasurementList AdditionalMeasurementID-List OPTIONAL, + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL, + -- Physical channel IEs + dpch-CompressedModeStatusInfo DPCH-CompressedModeStatusInfo OPTIONAL +} + +MeasurementControl-v970ext-IEs ::= SEQUENCE { + -- Measurement IEs + measurementIdentity MeasurementIdentity-r9 OPTIONAL, + additionalMeasurementList AdditionalMeasurementID-List-r9 OPTIONAL +} + +MeasurementControl-r10-IEs ::= SEQUENCE { + -- Measurement IEs + -- if the UE supports extended measurements, "measurementIdentity" + -- shall be ignored if "measurementIdentity" in MeasurementControl-vab0ext-IEs + -- is present, and the value of that element shall be used instead. + measurementIdentity MeasurementIdentity, + -- TABULAR: The measurement type is included in measurementCommand. + measurementCommand MeasurementCommand-r10, + measurementReportingMode MeasurementReportingMode OPTIONAL, + -- if the UE supports extended measurements, "additionalMeasurementList" + -- shall be ignored if "additionalMeasurementList" in MeasurementControl-vab0ext-IEs + -- is present, and the value of that element shall be used instead. + additionalMeasurementList AdditionalMeasurementID-List OPTIONAL, + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL, + -- Physical channel IEs + dpch-CompressedModeStatusInfo DPCH-CompressedModeStatusInfo-r10 OPTIONAL +} + +MeasurementControl-vaa0ext-IEs ::= SEQUENCE { + -- Measurement IEs + periodicalReportingCriteriaOnSecULFreq + PeriodicalWithReportingCellStatusOnSecULFreq OPTIONAL +} + +MeasurementControl-vab0ext-IEs ::= MeasurementControl-v970ext-IEs + +MeasurementControl-r11-IEs ::= SEQUENCE { + -- Measurement IEs + measurementIdentity MeasurementIdentity-r9, + -- TABULAR: The measurement type is included in measurementCommand. + measurementCommand MeasurementCommand-r11, + measurementReportingMode MeasurementReportingMode OPTIONAL, + additionalMeasurementList AdditionalMeasurementID-List-r9 OPTIONAL, + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL, + -- Physical channel IEs + dpch-CompressedModeStatusInfo DPCH-CompressedModeStatusInfo-r10 OPTIONAL +} + +MeasurementControl-vb50ext-IEs ::= SEQUENCE { + -- Measurement IEs + interRATMeasurement InterRATMeasurement-r11 OPTIONAL +} + +-- *************************************************** +-- +-- MEASUREMENT CONTROL FAILURE +-- +-- *************************************************** + +MeasurementControlFailure ::= SEQUENCE { + -- User equipment IEs + -- Least significant part of extended "RRC transaction identifier" (Rel-5 onward) + rrc-TransactionIdentifier RRC-TransactionIdentifier, + failureCause FailureCauseWithProtErr, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + measurementControlFailure-r3-add-ext BIT STRING OPTIONAL, + v590NonCriticalExtensions SEQUENCE { + measurementControlFailure-v590ext MeasurementControlFailure-v590ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +MeasurementControlFailure-v590ext-IEs ::= SEQUENCE { + -- Most significant part of extended "RRC transaction identifier" (MSP): + -- extended "RRC transaction identifier" = + -- rrc-TransactionIdentifier-MSP-v590ext * 4 + rrc-TransactionIdentifier + -- If the rrc-TransactionIdentifier-MSP-v590ext was not received in the MEASUREMENT CONTROL + -- message, then the rrc-TransactionIdentifier-MSP-v590ext shall be set to zero + rrc-TransactionIdentifier-MSP-v590ext RRC-TransactionIdentifier +} + +-- *************************************************** +-- +-- MEASUREMENT REPORT +-- +-- *************************************************** + +MeasurementReport ::= SEQUENCE { + -- Measurement IEs + -- if the UE supports extended measurements, "measurementIdentity" + -- shall be ignored if "measurementIdentity" in MeasurementReport-v970ext-IEs + -- is present, and the value of that element shall be used instead. + measurementIdentity MeasurementIdentity, + measuredResults MeasuredResults OPTIONAL, + measuredResultsOnRACH MeasuredResultsOnRACH OPTIONAL, + additionalMeasuredResults MeasuredResultsList OPTIONAL, + eventResults EventResults OPTIONAL, + -- Non-critical extensions + v390nonCriticalExtensions SEQUENCE { + measurementReport-v390ext MeasurementReport-v390ext, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + measurementReport-r3-add-ext BIT STRING OPTIONAL, + v4b0NonCriticalExtensions SEQUENCE { + measurementReport-v4b0ext MeasurementReport-v4b0ext-IEs, + -- Extension mechanism for non-Rel4 information + v590NonCriticalExtensions SEQUENCE { + measurementReport-v590ext MeasurementReport-v590ext-IEs, + v5b0NonCriticalExtensions SEQUENCE { + measurementReport-v5b0ext MeasurementReport-v5b0ext-IEs, + v690NonCriticalExtensions SEQUENCE { + measurementReport-v690ext MeasurementReport-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + measurementReport-v770ext MeasurementReport-v770ext-IEs, + v860NonCriticalExtensions SEQUENCE { + measurementReport-v860ext MeasurementReport-v860ext-IEs, + v920NonCriticalExtensions SEQUENCE { + measurementReport-v920ext MeasurementReport-v920ext-IEs, + v970NonCriticalExtensions SEQUENCE { + measurementReport-v970ext-IE + MeasurementReport-v970ext-IEs, + va40NonCriticalExtensions SEQUENCE { + measurementReport-va40ext + MeasurementReport-va40ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + measurementReport-vb50ext + MeasurementReport-vb50ext-IEs, + nonCriticalExtensions + SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +MeasurementReport-v390ext ::= SEQUENCE { + measuredResults-v390ext MeasuredResults-v390ext OPTIONAL +} + +MeasurementReport-v4b0ext-IEs ::= SEQUENCE { + interFreqEventResults-LCR InterFreqEventResults-LCR-r4-ext OPTIONAL, + -- additionalMeasuredResults-LCR shall contain measurement results and additional measurement + -- results list. + additionalMeasuredResults-LCR MeasuredResultsList-LCR-r4-ext OPTIONAL, + -- dummy is not used in this version of the specification. It should not be sent and + -- if received it should be ignored. + dummy PrimaryCPICH-Info OPTIONAL +} + +MeasurementReport-v590ext-IEs ::= SEQUENCE { + measuredResults-v590ext MeasuredResults-v590ext OPTIONAL +} + +MeasurementReport-v5b0ext-IEs ::= SEQUENCE { + interRATCellInfoIndication InterRATCellInfoIndication OPTIONAL +} + +MeasurementReport-v690ext-IEs ::= SEQUENCE { + measuredResultsOnRACHinterFreq MeasuredResultsOnRACHinterFreq OPTIONAL +} + +MeasurementReport-v770ext-IEs ::= SEQUENCE { + measuredResults MeasuredResults-v770ext OPTIONAL, + additionalMeasuredResults MeasuredResultsList-v770xet OPTIONAL, + eventResults EventResults-v770ext OPTIONAL, + ue-Positioning-OTDOA-MeasuredResults + UE-Positioning-OTDOA-MeasuredResultsTDD-ext OPTIONAL +} + +MeasurementReport-v860ext-IEs ::= SEQUENCE { + activationTime ActivationTime OPTIONAL, + measuredResults MeasuredResults-v860ext OPTIONAL, + additionalMeasuredResults MeasuredResultsList-v860ext OPTIONAL, + eventResults EventResults-v860ext OPTIONAL, + eutra-MeasuredResults EUTRA-MeasuredResults OPTIONAL, + eutra-EventResults EUTRA-EventResults OPTIONAL +} + +MeasurementReport-v920ext-IEs ::= SEQUENCE { + cSGProximityIndication CSGProximityIndication OPTIONAL, + measuredResults MeasuredResults-v920ext OPTIONAL, + measuredResultsOnSecUlFreq MeasuredResultsOnSecUlFreq OPTIONAL, + additionalMeasuredResults MeasuredResultsList-v920ext OPTIONAL, + additionalMeasuredResultsOnSecUlFreq + MeasuredResultsListOnSecUlFreq OPTIONAL, + eventResultsOnSecUlFreq EventResultsOnSecUlFreq OPTIONAL, + eutra-MeasuredResults EUTRA-MeasuredResults-v920ext OPTIONAL +} + +MeasurementReport-v970ext-IEs ::= SEQUENCE { + measurementIdentity MeasurementIdentityExt OPTIONAL +} + +MeasurementReport-va40ext-IEs ::= SEQUENCE { + eventResults EventResults-va40ext OPTIONAL, + loggedMeasAvailable ENUMERATED { true } OPTIONAL, + loggedANRResultsAvailable ENUMERATED { true } OPTIONAL +} + +MeasurementReport-vb50ext-IEs ::= SEQUENCE { + -- Measurement IEs + measuredResultsOnRACHEUTRAFreq MeasuredResultsOnRACH-EUTRAFreq OPTIONAL, + eutra-EventResultsForCELLFACH EUTRA-EventResultsForCELLFACH OPTIONAL, + cSGProximityIndication CSGProximityIndication-vb50ext OPTIONAL, + eutra-MeasuredResults EUTRA-MeasuredResults-vb50ext OPTIONAL, + eutra-EventResults EUTRA-EventResults-vb50ext OPTIONAL +} + +-- *************************************************** +-- +-- PAGING TYPE 1 +-- +-- *************************************************** + +PagingType1 ::= SEQUENCE { + -- User equipment IEs + pagingRecordList PagingRecordList OPTIONAL, + -- Other IEs + bcch-ModificationInfo BCCH-ModificationInfo OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + pagingType1-r3-add-ext BIT STRING OPTIONAL, + v590NonCriticalExtensions SEQUENCE { + pagingType1-v590ext PagingType1-v590ext-IEs, + v860NonCriticalExtensions SEQUENCE { + pagingType1-v860ext PagingType1-v860ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +PagingType1-v590ext-IEs ::= SEQUENCE { + -- User equipment IEs + pagingRecord2List PagingRecord2List-r5 OPTIONAL +} + +PagingType1-v860ext-IEs ::= SEQUENCE { + -- Other IEs + etws-Information ETWS-Information OPTIONAL +} + +-- *************************************************** +-- +-- PAGING TYPE 2 +-- +-- *************************************************** + +PagingType2 ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + pagingCause PagingCause, + -- Core network IEs + cn-DomainIdentity CN-DomainIdentity, + pagingRecordTypeID PagingRecordTypeID, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + pagingType2-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +-- *************************************************** +-- +-- PHYSICAL CHANNEL RECONFIGURATION +-- +-- *************************************************** + +PhysicalChannelReconfiguration ::= CHOICE { + r3 SEQUENCE { + physicalChannelReconfiguration-r3 + PhysicalChannelReconfiguration-r3-IEs, + v3a0NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v3a0ext PhysicalChannelReconfiguration-v3a0ext, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + physicalChannelReconfiguration-r3-add-ext BIT STRING OPTIONAL, + v4b0NonCriticalExtenstions SEQUENCE { + physicalChannelReconfiguration-v4b0ext + PhysicalChannelReconfiguration-v4b0ext-IEs, + v590NonCriticalExtenstions SEQUENCE { + physicalChannelReconfiguration-v590ext + PhysicalChannelReconfiguration-v590ext-IEs, + v690NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v690ext + PhysicalChannelReconfiguration-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v770ext + PhysicalChannelReconfiguration-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r4 SEQUENCE { + physicalChannelReconfiguration-r4 + PhysicalChannelReconfiguration-r4-IEs, + v4d0NonCriticalExtensions SEQUENCE { + -- Container for adding non critical extensions after freezing REL-5 + physicalChannelReconfiguration-r4-add-ext BIT STRING OPTIONAL, + v590NonCriticalExtenstions SEQUENCE { + physicalChannelReconfiguration-v590ext + PhysicalChannelReconfiguration-v590ext-IEs, + v690NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v690ext + PhysicalChannelReconfiguration-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v770ext + PhysicalChannelReconfiguration-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r5 SEQUENCE { + physicalChannelReconfiguration-r5 + PhysicalChannelReconfiguration-r5-IEs, + -- Container for adding non critical extensions after freezing REL-6 + physicalChannelReconfiguration-r5-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v690ext + PhysicalChannelReconfiguration-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v770ext + PhysicalChannelReconfiguration-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r6 SEQUENCE { + physicalChannelReconfiguration-r6 + PhysicalChannelReconfiguration-r6-IEs, + -- Container for adding non critical extensions after freezing REL-7 + physicalChannelReconfiguration-r6-add-ext BIT STRING OPTIONAL, + v6b0NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v6b0ext + PhysicalChannelReconfiguration-v6b0ext-IEs, + v770NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v770ext + PhysicalChannelReconfiguration-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r7 SEQUENCE { + physicalChannelReconfiguration-r7 + PhysicalChannelReconfiguration-r7-IEs, + -- Container for adding non critical extensions after freezing REL-7 + physicalChannelReconfiguration-r7-add-ext BIT STRING OPTIONAL, + v780NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v780ext + PhysicalChannelReconfiguration-v780ext-IEs, + v7d0NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v7d0ext + PhysicalChannelReconfiguration-v7d0ext-IEs, + v7f0NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v7f0ext + PhysicalChannelReconfiguration-v7f0ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v7g0ext + PhysicalChannelReconfiguration-v7g0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r8 SEQUENCE { + physicalChannelReconfiguration-r8 + PhysicalChannelReconfiguration-r8-IEs, + -- Container for adding non critical extensions after freezing REL-9 + physicalChannelReconfiguration-r8-add-ext BIT STRING OPTIONAL, + v7d0NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v7d0ext + PhysicalChannelReconfiguration-v7d0ext-IEs, + v7f0NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v7f0ext + PhysicalChannelReconfiguration-v7f0ext-IEs, + v890NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v890ext + PhysicalChannelReconfiguration-v890ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v7g0ext + PhysicalChannelReconfiguration-v7g0ext-IEs, + v8a0NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v8a0ext + PhysicalChannelReconfiguration-v8a0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r9 SEQUENCE { + physicalChannelReconfiguration-r9 + PhysicalChannelReconfiguration-r9-IEs, + -- Container for adding non critical extensions after + -- freezing REL-10 + physicalChannelReconfiguration-r9-add-ext + BIT STRING OPTIONAL, + v950NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v950ext + PhysicalChannelReconfiguration-v950ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r10 SEQUENCE { + physicalChannelReconfiguration-r10 + PhysicalChannelReconfiguration-r10-IEs, + -- Container for adding non critical extensions after + -- freezing REL-11 + physicalChannelReconfiguration-r10-add-ext + BIT STRING OPTIONAL, + vb50NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-vb50ext + PhysicalChannelReconfiguration-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r11 SEQUENCE { + physicalChannelReconfiguration-r11 + PhysicalChannelReconfiguration-r11-IEs, + -- Container for adding non critical extensions after + -- freezing REL-12 + physicalChannelReconfiguration-r11-add-ext + BIT STRING OPTIONAL, + nonCriticalExtensions + SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } + } + } + } + } + } + } + } +} + +PhysicalChannelReconfiguration-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + -- Note: the reference to CPCH in the element name below is incorrect. The name is not + -- changed to keep it aligned with R99. + ul-ChannelRequirement UL-ChannelRequirementWithCPCH-SetID OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-CommonInformation DL-CommonInformation OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List OPTIONAL +} + +PhysicalChannelReconfiguration-v3a0ext ::= SEQUENCE { + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received the UE behaviour + -- is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL +} + +PhysicalChannelReconfiguration-v4b0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SSDT-UL OPTIONAL, + -- The order of the RLs in IE cell-id-PerRL-List is the same as + -- in IE DL-InformationPerRL-List included in this message + cell-id-PerRL-List CellIdentity-PerRL-List OPTIONAL +} + +PhysicalChannelReconfiguration-v590ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-TPC-PowerOffsetPerRL-List DL-TPC-PowerOffsetPerRL-List OPTIONAL +} + +PhysicalChannelReconfiguration-r4-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received + -- the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + -- Note: the reference to CPCH in the element name below is incorrect. The name is not + -- changed to keep it aligned with R99. + ul-ChannelRequirement UL-ChannelRequirementWithCPCH-SetID-r4 OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-CommonInformation DL-CommonInformation-r4 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r4 OPTIONAL +} + +PhysicalChannelReconfiguration-r5-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received + -- the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + -- Note: the reference to CPCH in the element name below is incorrect. The name is not + -- changed to keep it aligned with R99. + ul-ChannelRequirement UL-ChannelRequirementWithCPCH-SetID-r5 OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-HSPDSCH-Information DL-HSPDSCH-Information OPTIONAL, + dl-CommonInformation DL-CommonInformation-r5 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r5 OPTIONAL +} + +PhysicalChannelReconfiguration-r6-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r6 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r6 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r6 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r6 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r6 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +PhysicalChannelReconfiguration-v690ext-IEs ::= SEQUENCE { + -- User Equipment IEs + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + -- Core network IEs + primary-plmn-Identity PLMN-Identity OPTIONAL, + -- Physical channel IEs + -- The IE harq-Preamble-Mode should not be used in the r3 and r4 versions of the message + -- If included in the r3 or r4 version of the message, the UE should ignore the IE + harq-Preamble-Mode HARQ-Preamble-Mode OPTIONAL, + beaconPLEst BEACON-PL-Est OPTIONAL, + postVerificationPeriod ENUMERATED { true } OPTIONAL, + dhs-sync DHS-Sync OPTIONAL, + timingMaintainedSynchInd TimingMaintainedSynchInd OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +PhysicalChannelReconfiguration-v6b0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-InformationPerRL-List-v6b0ext DL-InformationPerRL-List-v6b0ext OPTIONAL +} + +PhysicalChannelReconfiguration-r7-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + responseToChangeOfUE-Capability ENUMERATED { true } OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r7 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r7 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r7 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r7 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r7 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +PhysicalChannelReconfiguration-v770ext-IEs ::= SEQUENCE { + -- User equipment IEs + ueMobilityStateIndicator High-MobilityDetected OPTIONAL +} + +PhysicalChannelReconfiguration-v780ext-IEs ::= SEQUENCE { + -- Transport channel IEs + harqInfo HARQ-Info-r7 OPTIONAL, + -- Physical channel IEs + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL +} + +PhysicalChannelReconfiguration-v7d0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + ul-EDCH-Information UL-EDCH-Information-ext OPTIONAL +} + +PhysicalChannelReconfiguration-v7f0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + mimoParameters MIMO-Parameters-v7f0ext OPTIONAL +} + +PhysicalChannelReconfiguration-v7g0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + mimoParameters MIMO-Parameters-v7g0ext OPTIONAL +} + +PhysicalChannelReconfiguration-r8-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + responseToChangeOfUE-Capability ENUMERATED { true } OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + harqInfo HARQ-Info-r7 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r8 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r8 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r8 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +PhysicalChannelReconfiguration-v890ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-SecondaryCellInfoFDD-v890ext DL-SecondaryCellInfoFDD-v890ext OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8-ext OPTIONAL +} + +PhysicalChannelReconfiguration-v8a0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8-ext2 OPTIONAL +} + +PhysicalChannelReconfiguration-r9-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + responseToChangeOfUE-Capability ENUMERATED { true } OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + harqInfo HARQ-Info-r7 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r9 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r8 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r9 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +PhysicalChannelReconfiguration-v950ext-IEs ::= SEQUENCE { + -- Physical channel IEs + secondaryCellMimoParameters SecondaryCellMIMOparametersFDD-v950ext OPTIONAL +} + +PhysicalChannelReconfiguration-r10-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + responseToChangeOfUE-Capability ENUMERATED { true } OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + harqInfo HARQ-Info-r7 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r9 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + ul-MulticarrierEDCHInfo-TDD128 UL-MulticarrierEDCHInfo-TDD128 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r10 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r10 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD OPTIONAL, + mu-MIMO-Info-TDD128 MU-MIMO-Info-TDD128 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +PhysicalChannelReconfiguration-vb50ext-IEs ::= SEQUENCE { + ulOLTDInfoFDD UL-OLTD-InfoFDD OPTIONAL +} + +PhysicalChannelReconfiguration-r11-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + responseToChangeOfUE-Capability ENUMERATED { true } OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + harqInfo HARQ-Info-r11 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + mimo4x4Parameters MIMO4x4-Parameters OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r11 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r11 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + ul-MulticarrierEDCHInfo-TDD128 UL-MulticarrierEDCHInfo-TDD128 OPTIONAL, + ul-CLTD-InfoFDD UL-CLTD-InfoFDD OPTIONAL, + ul-OLTD-InfoFDD UL-OLTD-InfoFDD OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r11 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r11 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r11 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD2 AdditionalDLSecCellInfoListFDD2 OPTIONAL, + commonERGCHInfoFDD CommonERGCHInfoFDD OPTIONAL, + mu-MIMO-Info-TDD128 MU-MIMO-Info-TDD128 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +-- *************************************************** +-- +-- PHYSICAL CHANNEL RECONFIGURATION COMPLETE +-- +-- *************************************************** + +PhysicalChannelReconfigurationComplete ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + ul-IntegProtActivationInfo IntegrityProtActivationInfo OPTIONAL, + -- TABULAR: UL-TimingAdvance is applicable for TDD mode only. + ul-TimingAdvance UL-TimingAdvance OPTIONAL, + -- Radio bearer IEs + count-C-ActivationTime ActivationTime OPTIONAL, + -- dummy is not used in this version of the specification and + -- it should be ignored by the receiver. + dummy RB-ActivationTimeInfoList OPTIONAL, + ul-CounterSynchronisationInfo UL-CounterSynchronisationInfo OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + physicalChannelReconfigurationComplete-r3-add-ext BIT STRING OPTIONAL, + v770NonCriticalExtensions SEQUENCE { + physicalChannelReconfigurationComplete-v770ext + PhysicalChannelReconfigurationComplete-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +PhysicalChannelReconfigurationComplete-v770ext-IEs ::= SEQUENCE { + -- TABULAR: EXT-UL-TimingAdvance is applicable for TDD mode only. + ext-UL-TimingAdvance EXT-UL-TimingAdvance OPTIONAL, + deferredMeasurementControlReading ENUMERATED { true } OPTIONAL +} + + +-- *************************************************** +-- +-- PHYSICAL CHANNEL RECONFIGURATION FAILURE +-- +-- *************************************************** + +PhysicalChannelReconfigurationFailure ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier OPTIONAL, + failureCause FailureCauseWithProtErr, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + physicalChannelReconfigurationFailure-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +-- *************************************************** +-- +-- PHYSICAL SHARED CHANNEL ALLOCATION (TDD only) +-- +-- *************************************************** + +PhysicalSharedChannelAllocation ::= CHOICE { + r3 SEQUENCE { + physicalSharedChannelAllocation-r3 + PhysicalSharedChannelAllocation-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + physicalSharedChannelAllocation-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + dsch-RNTI DSCH-RNTI OPTIONAL, + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r4 SEQUENCE { + physicalSharedChannelAllocation-r4 + PhysicalSharedChannelAllocation-r4-IEs, + v4d0NonCriticalExtensions SEQUENCE { + -- Container for adding non critical extensions after freezing REL-5 + physicalSharedChannelAllocation-r4-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + physicalSharedChannelAllocation-v690ext + PhysicalSharedChannelAllocation-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + physicalSharedChannelAllocation-v770ext + PhysicalSharedChannelAllocation-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } +} + +PhysicalSharedChannelAllocation-r3-IEs ::= SEQUENCE { + -- TABULAR: Integrity protection shall not be performed on this message. + -- User equipment IEs + dsch-RNTI DSCH-RNTI OPTIONAL, + rrc-TransactionIdentifier RRC-TransactionIdentifier, + -- Physical channel IEs + ul-TimingAdvance UL-TimingAdvanceControl OPTIONAL, + pusch-CapacityAllocationInfo PUSCH-CapacityAllocationInfo OPTIONAL, + pdsch-CapacityAllocationInfo PDSCH-CapacityAllocationInfo OPTIONAL, + -- TABULAR: If confirmRequest is not present, the default value "No Confirm" + -- shall be used as specified in 10.2.25. + confirmRequest ENUMERATED { + confirmPDSCH, confirmPUSCH } OPTIONAL, + trafficVolumeReportRequest INTEGER (0..255) OPTIONAL, + iscpTimeslotList TimeslotList OPTIONAL, + requestPCCPCHRSCP BOOLEAN +} + +PhysicalSharedChannelAllocation-r4-IEs ::= SEQUENCE { + -- TABULAR: Integrity protection shall not be performed on this message. + -- Physical channel IEs + ul-TimingAdvance UL-TimingAdvanceControl-r4 OPTIONAL, + pusch-CapacityAllocationInfo PUSCH-CapacityAllocationInfo-r4 OPTIONAL, + pdsch-CapacityAllocationInfo PDSCH-CapacityAllocationInfo-r4 OPTIONAL, + -- TABULAR: If confirmRequest is not present, the default value "No Confirm" + -- shall be used as specified in 10.2.25. + confirmRequest ENUMERATED { + confirmPDSCH, confirmPUSCH } OPTIONAL, + trafficVolumeReportRequest INTEGER (0..255) OPTIONAL, + iscpTimeslotList TimeslotList-r4 OPTIONAL, + requestPCCPCHRSCP BOOLEAN +} + +PhysicalSharedChannelAllocation-v690ext-IEs ::= SEQUENCE { + -- Physical Channel IEs + beaconPLEst BEACON-PL-Est OPTIONAL +} + +PhysicalSharedChannelAllocation-v770ext-IEs ::= SEQUENCE { + ul-TimingAdvance UL-TimingAdvanceControl-r7 OPTIONAL, + pusch-CapacityAllocationInfo PUSCH-CapacityAllocationInfo-r7 OPTIONAL, + pdsch-CapacityAllocationInfo PDSCH-CapacityAllocationInfo-r7 OPTIONAL +} + +-- *************************************************** +-- +-- PUSCH CAPACITY REQUEST (TDD only) +-- +-- *************************************************** + +PUSCHCapacityRequest ::= SEQUENCE { + -- User equipment IEs + dsch-RNTI DSCH-RNTI OPTIONAL, + -- Measurement IEs + trafficVolume TrafficVolumeMeasuredResultsList OPTIONAL, + timeslotListWithISCP TimeslotListWithISCP OPTIONAL, + primaryCCPCH-RSCP PrimaryCCPCH-RSCP OPTIONAL, + allocationConfirmation CHOICE { + pdschConfirmation PDSCH-Identity, + puschConfirmation PUSCH-Identity + } OPTIONAL, + protocolErrorIndicator ProtocolErrorIndicatorWithMoreInfo, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + puschCapacityRequest-r3-add-ext BIT STRING OPTIONAL, + v590NonCriticalExtensions SEQUENCE { + puschCapacityRequest-v590ext PUSCHCapacityRequest-v590ext, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +PUSCHCapacityRequest-v590ext ::= SEQUENCE { + primaryCCPCH-RSCP-delta DeltaRSCP OPTIONAL +} + +-- *************************************************** +-- +-- RADIO BEARER RECONFIGURATION +-- +-- *************************************************** + +RadioBearerReconfiguration ::= CHOICE { + r3 SEQUENCE { + radioBearerReconfiguration-r3 RadioBearerReconfiguration-r3-IEs, + -- Prefix "v3ao" is used (in one instance) to keep alignment with R99 + v3aoNonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v3a0ext RadioBearerReconfiguration-v3a0ext, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + radioBearerReconfiguration-r3-add-ext BIT STRING OPTIONAL, + v4b0NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v4b0ext + RadioBearerReconfiguration-v4b0ext-IEs, + v590NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v590ext + RadioBearerReconfiguration-v590ext-IEs, + v5d0NonCriticalExtenstions SEQUENCE { + radioBearerReconfiguration-v5d0ext + RadioBearerReconfiguration-v5d0ext-IEs, + v690NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v690ext + RadioBearerReconfiguration-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v770ext + RadioBearerReconfiguration-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r4 SEQUENCE { + radioBearerReconfiguration-r4 RadioBearerReconfiguration-r4-IEs, + v4d0NonCriticalExtensions SEQUENCE { + -- Container for adding non critical extensions after freezing REL-5 + radioBearerReconfiguration-r4-add-ext BIT STRING OPTIONAL, + v590NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v590ext + RadioBearerReconfiguration-v590ext-IEs, + v5d0NonCriticalExtenstions SEQUENCE { + radioBearerReconfiguration-v5d0ext + RadioBearerReconfiguration-v5d0ext-IEs, + v690NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v690ext + RadioBearerReconfiguration-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v770ext + RadioBearerReconfiguration-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r5 SEQUENCE { + radioBearerReconfiguration-r5 RadioBearerReconfiguration-r5-IEs, + -- Container for adding non critical extensions after freezing REL-6 + radioBearerReconfiguration-r5-add-ext BIT STRING OPTIONAL, + v5d0NonCriticalExtenstions SEQUENCE { + radioBearerReconfiguration-v5d0ext RadioBearerReconfiguration-v5d0ext-IEs, + v690NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v690ext + RadioBearerReconfiguration-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v770ext + RadioBearerReconfiguration-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r6 SEQUENCE { + radioBearerReconfiguration-r6 RadioBearerReconfiguration-r6-IEs, + -- Container for adding non critical extensions after freezing REL-7 + radioBearerReconfiguration-r6-add-ext BIT STRING OPTIONAL, + v6b0NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v6b0ext + RadioBearerReconfiguration-v6b0ext-IEs, + v6f0NonCriticalExtensions SEQUENCE { + radioBearerRconfiguration-v6f0ext + RadioBearerReconfiguration-v6f0ext-IEs, + v770NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v770ext + RadioBearerReconfiguration-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r7 SEQUENCE { + radioBearerReconfiguration-r7 RadioBearerReconfiguration-r7-IEs, + v780NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v780ext + RadioBearerReconfiguration-v780ext-IEs, + v790NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v790ext + RadioBearerReconfiguration-v790ext-IEs, + v7d0NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v7d0ext + RadioBearerReconfiguration-v7d0ext-IEs, + v7f0NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v7f0ext + RadioBearerReconfiguration-v7f0ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v7g0ext + RadioBearerReconfiguration-v7g0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r8 SEQUENCE { + radioBearerReconfiguration-r8 RadioBearerReconfiguration-r8-IEs, + -- Container for adding non critical extensions after freezing REL-9 + radioBearerReconfiguration-r8-add-ext BIT STRING OPTIONAL, + v7d0NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v7d0ext + RadioBearerReconfiguration-v7d0ext-IEs, + v7f0NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v7f0ext + RadioBearerReconfiguration-v7f0ext-IEs, + v890NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v890ext + RadioBearerReconfiguration-v890ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v7g0ext + RadioBearerReconfiguration-v7g0ext-IEs, + v8a0NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v8a0ext + RadioBearerReconfiguration-v8a0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r9 SEQUENCE { + radioBearerReconfiguration-r9 + RadioBearerReconfiguration-r9-IEs, + -- Container for adding non critical extensions after + -- freezing REL-10 + radioBearerReconfiguration-r9-add-ext + BIT STRING OPTIONAL, + v950NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v950ext + RadioBearerReconfiguration-v950ext-IEs, + v9c0NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v9c0ext + RadioBearerReconfiguration-v9c0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r10 SEQUENCE { + radioBearerReconfiguration-r10 + RadioBearerReconfiguration-r10-IEs, + -- Container for adding non critical extensions after + -- freezing REL-11 + radioBearerReconfiguration-r10-add-ext + BIT STRING OPTIONAL, + v9c0NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v9c0ext + RadioBearerReconfiguration-v9c0ext-IEs, + vaa0NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-vaa0ext + RadioBearerReconfiguration-vaa0ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-vb50ext + RadioBearerReconfiguration-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r11 SEQUENCE { + radioBearerReconfiguration-r11 + RadioBearerReconfiguration-r11-IEs, + -- Container for adding non critical extensions after + -- freezing REL-12 + radioBearerReconfiguration-r11-add-ext + BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } + } + } + } + } + } + } + } +} + +RadioBearerReconfiguration-vaa0ext-IEs ::= SEQUENCE { + um-RLC-ReEstablishmentRBList RB-IdentityList OPTIONAL +} + +RadioBearerReconfiguration-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList OPTIONAL, + -- NOTE: IE rb-InformationReconfigList should be optional in later versions + -- of this message + rb-InformationReconfigList RB-InformationReconfigList, + rb-InformationAffectedList RB-InformationAffectedList OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + -- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification, + -- they should not be sent and if received they should be ignored. + dummy CHOICE { + fdd SEQUENCE { + dummy1 CPCH-SetID OPTIONAL, + dummy2 DRAC-StaticInformationList OPTIONAL + }, + tdd NULL + } OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfo2List OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement OPTIONAL, + modeSpecificPhysChInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-CommonInformation DL-CommonInformation OPTIONAL, + -- NOTE: IE dl-InformationPerRL-List is optional in later versions + -- of this message + dl-InformationPerRL-List DL-InformationPerRL-List +} + +RadioBearerReconfiguration-v3a0ext ::= SEQUENCE { + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received the UE behaviour + -- is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL +} + +RadioBearerReconfiguration-v4b0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SSDT-UL OPTIONAL, + -- The order of the RLs in IE cell-id-PerRL-List is the same as + -- in IE DL-InformationPerRL-List included in this message + cell-id-PerRL-List CellIdentity-PerRL-List OPTIONAL +} + +RadioBearerReconfiguration-v590ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-TPC-PowerOffsetPerRL-List DL-TPC-PowerOffsetPerRL-List OPTIONAL +} + +RadioBearerReconfiguration-v5d0ext-IEs ::= SEQUENCE { + --Radio Bearer IEs + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL +} + +RadioBearerReconfiguration-r4-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received + -- the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r4 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + -- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification, + -- they should not be sent and if received they should be ignored. + dummy CHOICE { + fdd SEQUENCE { + dummy1 CPCH-SetID OPTIONAL, + dummy2 DRAC-StaticInformationList OPTIONAL + }, + tdd NULL + } OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r4 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement-r4 OPTIONAL, + modeSpecificPhysChInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-CommonInformation DL-CommonInformation-r4 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r4 OPTIONAL +} + +RadioBearerReconfiguration-r5-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received + -- the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Specification mode information + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r5 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r5 OPTIONAL, + rb-PDCPContextRelocationList RB-PDCPContextRelocationList OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + -- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the + -- specification, they should not be sent and if received they should be ignored. + dummy CHOICE { + fdd SEQUENCE { + dummy1 CPCH-SetID OPTIONAL, + dummy2 DRAC-StaticInformationList OPTIONAL + }, + tdd NULL + } OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r5 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r5 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r5 + } + } + } + }, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement-r5 OPTIONAL, + modeSpecificPhysChInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-HSPDSCH-Information DL-HSPDSCH-Information OPTIONAL, + dl-CommonInformation DL-CommonInformation-r5 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r5 OPTIONAL +} + +RadioBearerReconfiguration-r6-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Specification mode information + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r6 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r6 OPTIONAL, + rb-PDCPContextRelocationList RB-PDCPContextRelocationList OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r6 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r5 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r5 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6 + } + } + } + }, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r6 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r6 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r6 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r6 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r6 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +RadioBearerReconfiguration-v690ext-IEs ::= SEQUENCE { + -- User Equipment IEs + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + -- Core network IEs + primary-plmn-Identity PLMN-Identity OPTIONAL, + -- Physical channel IEs + -- The IE harq-Preamble-Mode should not be used in the r3 and r4 versions of the message + -- If included in the r3 or r4 version of the message, the UE should ignore the IE + harq-Preamble-Mode HARQ-Preamble-Mode OPTIONAL, + beaconPLEst BEACON-PL-Est OPTIONAL, + postVerificationPeriod ENUMERATED { true } OPTIONAL, + dhs-sync DHS-Sync OPTIONAL, + timingMaintainedSynchInd TimingMaintainedSynchInd OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +RadioBearerReconfiguration-v6b0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-InformationPerRL-List-v6b0ext DL-InformationPerRL-List-v6b0ext OPTIONAL +} + +RadioBearerReconfiguration-v6f0ext-IEs ::= SEQUENCE { + -- Specification mode information + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + rab-InformationMBMSPtpList RAB-InformationMBMSPtpList OPTIONAL + } + } +} + +RadioBearerReconfiguration-r7-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + responseToChangeOfUE-Capability ENUMERATED { true } OPTIONAL, + -- Specification mode information + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList OPTIONAL, + rab-InformationMBMSPtpList RAB-InformationMBMSPtpList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r7 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r7 OPTIONAL, + rb-PDCPContextRelocationList RB-PDCPContextRelocationList OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r7 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r7 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6 + } + } + } + }, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r7 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r7 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r7 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r7 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r7 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +RadioBearerReconfiguration-v770ext-IEs ::= SEQUENCE { + -- User equipment IEs + ueMobilityStateIndicator High-MobilityDetected OPTIONAL +} + +RadioBearerReconfiguration-v780ext-IEs ::= SEQUENCE { + -- Physical channel IEs + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL +} + +RadioBearerReconfiguration-v790ext-IEs ::= SEQUENCE { + -- Container for adding non critical extensions after freezing REL-8 + radioBearerReconfiguration-r7-add-ext BIT STRING OPTIONAL +} + +RadioBearerReconfiguration-v7d0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + ul-EDCH-Information UL-EDCH-Information-ext OPTIONAL +} + +RadioBearerReconfiguration-v7f0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + mimoParameters MIMO-Parameters-v7f0ext OPTIONAL +} + +RadioBearerReconfiguration-v7g0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + mimoParameters MIMO-Parameters-v7g0ext OPTIONAL +} + +RadioBearerReconfiguration-r8-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + responseToChangeOfUE-Capability ENUMERATED { true } OPTIONAL, + -- Specification mode information + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy DefaultConfigForCellFACH OPTIONAL, + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList-r8 OPTIONAL, + rab-InformationMBMSPtpList RAB-InformationMBMSPtpList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r8 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r8 OPTIONAL, + rb-PDCPContextRelocationList RB-PDCPContextRelocationList OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r7 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6 + } + } + } + }, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r8 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r8 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r8 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +RadioBearerReconfiguration-v890ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-SecondaryCellInfoFDD-v890ext DL-SecondaryCellInfoFDD-v890ext OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8-ext OPTIONAL +} + +RadioBearerReconfiguration-v8a0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8-ext2 OPTIONAL +} + +RadioBearerReconfiguration-r9-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + responseToChangeOfUE-Capability ENUMERATED { true } OPTIONAL, + -- Specification mode information + defaultConfigForCellFACH DefaultConfigForCellFACH OPTIONAL, + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList-r8 OPTIONAL, + rab-InformationMBMSPtpList RAB-InformationMBMSPtpList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r8 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r8 OPTIONAL, + rb-PDCPContextRelocationList RB-PDCPContextRelocationList OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r9 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6 + } + } + } + }, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r9 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r8 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r9 OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +RadioBearerReconfiguration-v950ext-IEs ::= SEQUENCE { + -- Physical channel IEs + secondaryCellMimoParameters SecondaryCellMIMOparametersFDD-v950ext OPTIONAL +} + +RadioBearerReconfiguration-v9c0ext-IEs ::= SEQUENCE { + -- For 1.28Mcps TDD only + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-TDD128-v9c0ext OPTIONAL +} + +RadioBearerReconfiguration-r10-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + responseToChangeOfUE-Capability ENUMERATED { true } OPTIONAL, + -- Specification mode information + defaultConfigForCellFACH DefaultConfigForCellFACH OPTIONAL, + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList-r8 OPTIONAL, + rab-InformationMBMSPtpList RAB-InformationMBMSPtpList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r8 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r8 OPTIONAL, + rb-PDCPContextRelocationList RB-PDCPContextRelocationList OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r9 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6 + } + } + } + }, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r9 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + ul-MulticarrierEDCHInfo-TDD128 UL-MulticarrierEDCHInfo-TDD128 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r10 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r10 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + mu-MIMO-Info-TDD128 MU-MIMO-Info-TDD128 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +RadioBearerReconfiguration-vb50ext-IEs ::= SEQUENCE { + ulOLTDInfoFDD UL-OLTD-InfoFDD OPTIONAL +} + +RadioBearerReconfiguration-r11-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + responseToChangeOfUE-Capability ENUMERATED { true } OPTIONAL, + -- Specification mode information + defaultConfigForCellFACH DefaultConfigForCellFACH OPTIONAL, + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList-r8 OPTIONAL, + rab-InformationMBMSPtpList RAB-InformationMBMSPtpList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r11 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r8 OPTIONAL, + rb-PDCPContextRelocationList RB-PDCPContextRelocationList OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + umRlc-ReEstablishmentRBList RB-IdentityList OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r11 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6 + } + } + } + }, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + mimo4x4Parameters MIMO4x4-Parameters OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r11 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r11 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + ul-MulticarrierEDCHInfo-TDD128 UL-MulticarrierEDCHInfo-TDD128 OPTIONAL, + ul-CLTD-InfoFDD UL-CLTD-InfoFDD OPTIONAL, + ul-OLTD-InfoFDD UL-OLTD-InfoFDD OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r11 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r11 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r11 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD2 AdditionalDLSecCellInfoListFDD2 OPTIONAL, + commonERGCHInfoFDD CommonERGCHInfoFDD OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + mu-MIMO-Info-TDD128 MU-MIMO-Info-TDD128 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +-- *************************************************** +-- +-- RADIO BEARER RECONFIGURATION COMPLETE +-- +-- *************************************************** + +RadioBearerReconfigurationComplete ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + ul-IntegProtActivationInfo IntegrityProtActivationInfo OPTIONAL, + -- TABULAR: UL-TimingAdvance is applicable for TDD mode only. + ul-TimingAdvance UL-TimingAdvance OPTIONAL, + -- Radio bearer IEs + count-C-ActivationTime ActivationTime OPTIONAL, + -- dummy is not used in this version of the specification and + -- it should be ignored by the receiver. + dummy RB-ActivationTimeInfoList OPTIONAL, + ul-CounterSynchronisationInfo UL-CounterSynchronisationInfo OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + radioBearerReconfigurationComplete-r3-add-ext BIT STRING OPTIONAL, + v770NonCriticalExtensions SEQUENCE { + radioBearerReconfigurationComplete-v770ext + RadioBearerReconfigurationComplete-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +RadioBearerReconfigurationComplete-v770ext-IEs ::= SEQUENCE { + -- TABULAR: EXT-UL-TimingAdvance is applicable for TDD mode only. + ext-UL-TimingAdvance EXT-UL-TimingAdvance OPTIONAL, + deferredMeasurementControlReading ENUMERATED { true } OPTIONAL +} + +-- *************************************************** +-- +-- RADIO BEARER RECONFIGURATION FAILURE +-- +-- *************************************************** + +RadioBearerReconfigurationFailure ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + failureCause FailureCauseWithProtErr, + -- Radio bearer IEs + potentiallySuccesfulBearerList RB-IdentityList OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + radioBearerReconfigurationFailure-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +-- *************************************************** +-- +-- RADIO BEARER RELEASE +-- +-- *************************************************** + +RadioBearerRelease ::= CHOICE { + r3 SEQUENCE { + radioBearerRelease-r3 RadioBearerRelease-r3-IEs, + v3a0NonCriticalExtensions SEQUENCE { + radioBearerRelease-v3a0ext RadioBearerRelease-v3a0ext, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + radioBearerRelease-r3-add-ext BIT STRING OPTIONAL, + v4b0NonCriticalExtensions SEQUENCE { + radioBearerRelease-v4b0ext RadioBearerRelease-v4b0ext-IEs, + v590NonCriticalExtensions SEQUENCE { + radioBearerRelease-v590ext RadioBearerRelease-v590ext-IEs, + v690NonCriticalExtensions SEQUENCE { + radioBearerRelease-v690ext RadioBearerRelease-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + radioBearerRelease-v770ext RadioBearerRelease-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r4 SEQUENCE { + radioBearerRelease-r4 RadioBearerRelease-r4-IEs, + v4d0NonCriticalExtensions SEQUENCE { + -- Container for adding non critical extensions after freezing REL-5 + radioBearerRelease-r4-add-ext BIT STRING OPTIONAL, + v590NonCriticalExtensions SEQUENCE { + radioBearerRelease-v590ext RadioBearerRelease-v590ext-IEs, + v690NonCriticalExtensions SEQUENCE { + radioBearerRelease-v690ext RadioBearerRelease-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + radioBearerRelease-v770ext RadioBearerRelease-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r5 SEQUENCE { + radioBearerRelease-r5 RadioBearerRelease-r5-IEs, + -- Container for adding non critical extensions after freezing REL-6 + radioBearerRelease-r5-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + radioBearerRelease-v690ext RadioBearerRelease-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + radioBearerRelease-v770ext RadioBearerRelease-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r6 SEQUENCE { + radioBearerRelease-r6 RadioBearerRelease-r6-IEs, + -- Container for adding non critical extensions after freezing REL-7 + radioBearerRelease-r6-add-ext BIT STRING OPTIONAL, + v6b0NonCriticalExtensions SEQUENCE { + radioBearerRelease-v6b0ext RadioBearerRelease-v6b0ext-IEs, + v770NonCriticalExtensions SEQUENCE { + radioBearerRelease-v770ext RadioBearerRelease-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r7 SEQUENCE { + radioBearerRelease-r7 RadioBearerRelease-r7-IEs, + -- Container for adding non critical extensions after freezing REL-8 + radioBearerRelease-r7-add-ext BIT STRING OPTIONAL, + v780NonCriticalExtensions SEQUENCE { + radioBearerRelease-v780ext RadioBearerRelease-v780ext-IEs, + v7d0NonCriticalExtensions SEQUENCE { + radioBearerRelease-v7d0ext RadioBearerRelease-v7d0ext-IEs, + v7f0NonCriticalExtensions SEQUENCE { + radioBearerRelease-v7f0ext RadioBearerRelease-v7f0ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + radioBearerRelease-v7g0ext + RadioBearerRelease-v7g0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r8 SEQUENCE { + radioBearerRelease-r8 RadioBearerRelease-r8-IEs, + -- Container for adding non critical extensions after freezing REL-9 + radioBearerRelease-r8-add-ext BIT STRING OPTIONAL, + v7d0NonCriticalExtensions SEQUENCE { + radioBearerRelease-v7d0ext RadioBearerRelease-v7d0ext-IEs, + v7f0NonCriticalExtensions SEQUENCE { + radioBearerRelease-v7f0ext RadioBearerRelease-v7f0ext-IEs, + v890NonCriticalExtensions SEQUENCE { + radioBearerRelease-v890ext + RadioBearerRelease-v890ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + radioBearerRelease-v7g0ext + RadioBearerRelease-v7g0ext-IEs, + v8a0NonCriticalExtensions SEQUENCE { + radioBearerRelease-v8a0ext + RadioBearerRelease-v8a0ext-IEs, + nonCriticalExtensions + SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r9 SEQUENCE { + radioBearerRelease-r9 RadioBearerRelease-r9-IEs, + -- Container for adding non critical extensions after + -- freezing REL-10 + radioBearerRelease-r9-add-ext BIT STRING OPTIONAL, + v950NonCriticalExtensions SEQUENCE { + radioBearerRelease-v950ext RadioBearerRelease-v950ext-IEs, + v970NonCriticalExtensions SEQUENCE { + radioBearerRelease-v970ext RadioBearerRelease-v970ext-IEs, + v9c0NonCriticalExtensions SEQUENCE { + radioBearerRelease-v9c0ext RadioBearerRelease-v9c0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r10 SEQUENCE { + radioBearerRelease-r10 RadioBearerRelease-r10-IEs, + -- Container for adding non critical extensions after + -- freezing REL-11 + radioBearerRelease-r10-add-ext BIT STRING OPTIONAL, + v9c0NonCriticalExtensions SEQUENCE { + radioBearerRelease-v9c0ext RadioBearerRelease-v9c0ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + radioBearerRelease-vb50ext + RadioBearerRelease-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r11 SEQUENCE { + radioBearerRelease-r11 + RadioBearerRelease-r11-IEs, + -- Container for adding non critical extensions after + -- freezing REL-12 + radioBearerRelease-r11-add-ext + BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } + } + } + } + } + } + } + } +} + +RadioBearerRelease-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo OPTIONAL, + signallingConnectionRelIndication CN-DomainIdentity OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList OPTIONAL, + rb-InformationReleaseList RB-InformationReleaseList, + rb-InformationAffectedList RB-InformationAffectedList OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + -- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification, + -- they should not be sent and if received they should be ignored. + dummy CHOICE { + fdd SEQUENCE { + dummy1 CPCH-SetID OPTIONAL, + dummy2 DRAC-StaticInformationList OPTIONAL + }, + tdd NULL + } OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfo2List OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement OPTIONAL, + modeSpecificPhysChInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-CommonInformation DL-CommonInformation OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List OPTIONAL +} + +RadioBearerRelease-v3a0ext ::= SEQUENCE { + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received the UE behaviour + -- is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL +} + +RadioBearerRelease-v4b0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SSDT-UL OPTIONAL, + -- The order of the RLs in IE cell-id-PerRL-List is the same as + -- in IE DL-InformationPerRL-List included in this message + cell-id-PerRL-List CellIdentity-PerRL-List OPTIONAL +} + +RadioBearerRelease-v590ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-TPC-PowerOffsetPerRL-List DL-TPC-PowerOffsetPerRL-List OPTIONAL +} + +RadioBearerRelease-r4-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received + -- the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo OPTIONAL, + signallingConnectionRelIndication CN-DomainIdentity OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList OPTIONAL, + rb-InformationReleaseList RB-InformationReleaseList, + rb-InformationAffectedList RB-InformationAffectedList OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + -- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification, + -- they should not be sent and if received they should be ignored. + dummy CHOICE { + fdd SEQUENCE { + dummy1 CPCH-SetID OPTIONAL, + dummy2 DRAC-StaticInformationList OPTIONAL + }, + tdd NULL + } OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r4 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement-r4 OPTIONAL, + modeSpecificPhysChInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-CommonInformation DL-CommonInformation-r4 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r4 OPTIONAL +} + +RadioBearerRelease-r5-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo OPTIONAL, + signallingConnectionRelIndication CN-DomainIdentity OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList OPTIONAL, + rb-InformationReleaseList RB-InformationReleaseList, + rb-InformationAffectedList RB-InformationAffectedList-r5 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + -- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification, + -- they should not be sent and if received they should be ignored. + dummy CHOICE { + fdd SEQUENCE { + dummy1 CPCH-SetID OPTIONAL, + dummy2 DRAC-StaticInformationList OPTIONAL + }, + tdd NULL + } OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r5 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r5 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement-r5 OPTIONAL, + modeSpecificPhysChInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-HSPDSCH-Information DL-HSPDSCH-Information OPTIONAL, + dl-CommonInformation DL-CommonInformation-r5 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r5 OPTIONAL +} + +RadioBearerRelease-v690ext-IEs ::= SEQUENCE { + -- Core network IEs + primary-plmn-Identity PLMN-Identity OPTIONAL, + -- Physical channel IEs + -- The IE harq-Preamble-Mode should not be used in the r3 and r4 versions of the message + -- If included in the r3 or r4 version of the message, the UE should ignore the IE + harq-Preamble-Mode HARQ-Preamble-Mode OPTIONAL, + beaconPLEst BEACON-PL-Est OPTIONAL, + postVerificationPeriod ENUMERATED { true } OPTIONAL, + dhs-sync DHS-Sync OPTIONAL, + timingMaintainedSynchInd TimingMaintainedSynchInd OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + mbms-RB-ListReleasedToChangeTransferMode + RB-InformationReleaseList OPTIONAL +} + +RadioBearerRelease-r6-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + signallingConnectionRelIndication CN-DomainIdentity OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList OPTIONAL, + rb-InformationReleaseList RB-InformationReleaseList, + rb-InformationReconfigList RB-InformationReconfigList-r6 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r6 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r6 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r5 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r5 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r6 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r6 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r6 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r6 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r6 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + mbms-RB-ListReleasedToChangeTransferMode + RB-InformationReleaseList OPTIONAL +} + +RadioBearerRelease-v6b0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-InformationPerRL-List-v6b0ext DL-InformationPerRL-List-v6b0ext OPTIONAL +} + +RadioBearerRelease-r7-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + signallingConnectionRelIndication CN-DomainIdentity OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList OPTIONAL, + rb-InformationReleaseList RB-InformationReleaseList, + rb-InformationReconfigList RB-InformationReconfigList-r7 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r7 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r7 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r7 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r7 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r7 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r7 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r7 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r7 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + mbms-RB-ListReleasedToChangeTransferMode + RB-InformationReleaseList OPTIONAL +} + +RadioBearerRelease-v770ext-IEs ::= SEQUENCE { + -- User equipment IEs + ueMobilityStateIndicator High-MobilityDetected OPTIONAL +} + +RadioBearerRelease-v780ext-IEs ::= SEQUENCE { + -- Physical channel IEs + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL +} + +RadioBearerRelease-v7d0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + ul-EDCH-Information UL-EDCH-Information-ext OPTIONAL +} + +RadioBearerRelease-v7f0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + mimoParameters MIMO-Parameters-v7f0ext OPTIONAL +} + +RadioBearerRelease-v7g0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + mimoParameters MIMO-Parameters-v7g0ext OPTIONAL +} + +RadioBearerRelease-r8-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + signallingConnectionRelIndication CN-DomainIdentity OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList-r8 OPTIONAL, + rb-InformationReleaseList RB-InformationReleaseList, + rb-InformationReconfigList RB-InformationReconfigList-r8 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r8 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r7 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r8 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r8 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r8 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + mbms-RB-ListReleasedToChangeTransferMode + RB-InformationReleaseList OPTIONAL +} + +RadioBearerRelease-v890ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-SecondaryCellInfoFDD-v890ext DL-SecondaryCellInfoFDD-v890ext OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8-ext OPTIONAL +} + +RadioBearerRelease-v8a0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8-ext2 OPTIONAL +} + +RadioBearerRelease-r9-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + signallingConnectionRelIndication CN-DomainIdentity OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList-r8 OPTIONAL, + rb-InformationReleaseList RB-InformationReleaseList, + rb-InformationReconfigList RB-InformationReconfigList-r8 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r8 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r9 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r9 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r8 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r9 OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + mbms-RB-ListReleasedToChangeTransferMode + RB-InformationReleaseList OPTIONAL +} + +RadioBearerRelease-v950ext-IEs ::= SEQUENCE { + -- Physical channel IEs + secondaryCellMimoParameters SecondaryCellMIMOparametersFDD-v950ext OPTIONAL +} + +RadioBearerRelease-v970ext-IEs ::= SEQUENCE { + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +RadioBearerRelease-v9c0ext-IEs ::= SEQUENCE { + -- For 1.28Mcps TDD only + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-TDD128-v9c0ext OPTIONAL +} + +RadioBearerRelease-r10-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + signallingConnectionRelIndication CN-DomainIdentity OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList-r8 OPTIONAL, + rb-InformationReleaseList RB-InformationReleaseList, + rb-InformationReconfigList RB-InformationReconfigList-r8 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r8 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r9 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r9 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + ul-MulticarrierEDCHInfo-TDD128 UL-MulticarrierEDCHInfo-TDD128 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r10 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r10 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + mu-MIMO-Info-TDD128 MU-MIMO-Info-TDD128 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + mbms-RB-ListReleasedToChangeTransferMode + RB-InformationReleaseList OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +RadioBearerRelease-vb50ext-IEs ::= SEQUENCE { + ulOLTDInfoFDD UL-OLTD-InfoFDD OPTIONAL +} + +RadioBearerRelease-r11-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + signallingConnectionRelIndication CN-DomainIdentity OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList-r8 OPTIONAL, + rb-InformationReleaseList RB-InformationReleaseList, + rb-InformationReconfigList RB-InformationReconfigList-r11 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r8 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r11 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + mimo4x4Parameters MIMO4x4-Parameters OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r11 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r11 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + ul-MulticarrierEDCHInfo-TDD128 UL-MulticarrierEDCHInfo-TDD128 OPTIONAL, + ul-CLTD-InfoFDD UL-CLTD-InfoFDD OPTIONAL, + ul-OLTD-InfoFDD UL-OLTD-InfoFDD OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r11 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r11 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r11 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD2 AdditionalDLSecCellInfoListFDD2 OPTIONAL, + commonERGCHInfoFDD CommonERGCHInfoFDD OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + mu-MIMO-Info-TDD128 MU-MIMO-Info-TDD128 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + mbms-RB-ListReleasedToChangeTransferMode + RB-InformationReleaseList OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +-- *************************************************** +-- +-- RADIO BEARER RELEASE COMPLETE +-- +-- *************************************************** + +RadioBearerReleaseComplete ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + ul-IntegProtActivationInfo IntegrityProtActivationInfo OPTIONAL, + -- TABULAR: UL-TimingAdvance is applicable for TDD mode only. + ul-TimingAdvance UL-TimingAdvance OPTIONAL, + -- Radio bearer IEs + count-C-ActivationTime ActivationTime OPTIONAL, + -- dummy is not used in this version of the specification and + -- it should be ignored by the receiver. + dummy RB-ActivationTimeInfoList OPTIONAL, + ul-CounterSynchronisationInfo UL-CounterSynchronisationInfo OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + radioBearerReleaseComplete-r3-add-ext BIT STRING OPTIONAL, + v770NonCriticalExtensions SEQUENCE { + radioBearerReleaseComplete-v770ext + RadioBearerReleaseComplete-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +RadioBearerReleaseComplete-v770ext-IEs ::= SEQUENCE { + -- TABULAR: EXT-UL-TimingAdvance is applicable for TDD mode only. + ext-UL-TimingAdvance EXT-UL-TimingAdvance OPTIONAL, + deferredMeasurementControlReading ENUMERATED { true } OPTIONAL +} + +-- *************************************************** +-- +-- RADIO BEARER RELEASE FAILURE +-- +-- *************************************************** + +RadioBearerReleaseFailure ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + failureCause FailureCauseWithProtErr, + -- Radio bearer IEs + potentiallySuccesfulBearerList RB-IdentityList OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + radioBearerReleaseFailure-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +-- *************************************************** +-- +-- RADIO BEARER SETUP +-- +-- *************************************************** + +RadioBearerSetup ::= CHOICE { + r3 SEQUENCE { + radioBearerSetup-r3 RadioBearerSetup-r3-IEs, + v3a0NonCriticalExtensions SEQUENCE { + radioBearerSetup-v3a0ext RadioBearerSetup-v3a0ext, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + radioBearerSetup-r3-add-ext BIT STRING OPTIONAL, + v4b0NonCriticalExtensions SEQUENCE { + radioBearerSetup-v4b0ext RadioBearerSetup-v4b0ext-IEs, + v590NonCriticalExtensions SEQUENCE { + radioBearerSetup-v590ext RadioBearerSetup-v590ext-IEs, + v5d0NonCriticalExtenstions SEQUENCE { + radioBearerSetup-v5d0ext RadioBearerSetup-v5d0ext-IEs, + v690NonCriticalExtensions SEQUENCE { + radioBearerSetup-v690ext RadioBearerSetup-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r4 SEQUENCE { + radioBearerSetup-r4 RadioBearerSetup-r4-IEs, + v4d0NonCriticalExtensions SEQUENCE { + -- Container for adding non critical extensions after freezing REL-5 + radioBearerSetup-r4-add-ext BIT STRING OPTIONAL, + v590NonCriticalExtensions SEQUENCE { + radioBearerSetup-v590ext RadioBearerSetup-v590ext-IEs, + v5d0NonCriticalExtenstions SEQUENCE { + radioBearerSetup-v5d0ext RadioBearerSetup-v5d0ext-IEs, + v690NonCriticalExtensions SEQUENCE { + radioBearerSetup-v690ext RadioBearerSetup-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r5 SEQUENCE { + radioBearerSetup-r5 RadioBearerSetup-r5-IEs, + -- Container for adding non critical extensions after freezing REL-6 + radioBearerSetup-r5-add-ext BIT STRING OPTIONAL, + v5d0NonCriticalExtenstions SEQUENCE { + radioBearerSetup-v5d0ext RadioBearerSetup-v5d0ext-IEs, + v690NonCriticalExtensions SEQUENCE { + radioBearerSetup-v690ext RadioBearerSetup-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r6 SEQUENCE { + radioBearerSetup-r6 RadioBearerSetup-r6-IEs, + -- Container for adding non critical extensions after freezing REL-7 + radioBearerSetup-r6-add-ext BIT STRING OPTIONAL, + v6b0NonCriticalExtensions SEQUENCE { + radioBearerSetup-v6b0ext RadioBearerSetup-v6b0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r7 SEQUENCE { + radioBearerSetup-r7 RadioBearerSetup-r7-IEs, + -- Container for adding non critical extensions after freezing REL-8 + radioBearerSetup-r7-add-ext BIT STRING + (CONTAINING RadioBearerSetup-r7-add-ext-IEs) OPTIONAL, + v780NonCriticalExtensions SEQUENCE { + radioBearerSetup-v780ext RadioBearerSetup-v780ext-IEs, + v820NonCriticalExtensions SEQUENCE { + radioBearerSetup-v820ext RadioBearerSetup-v820ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r8 SEQUENCE { + radioBearerSetup-r8 RadioBearerSetup-r8-IEs, + -- Container for adding non critical extensions after freezing REL-9 + radioBearerSetup-r8-add-ext BIT STRING OPTIONAL, + v7d0NonCriticalExtensions SEQUENCE { + radioBearerSetup-v7d0ext RadioBearerSetup-v7d0ext-IEs, + v7f0NonCriticalExtensions SEQUENCE { + radioBearerSetup-v7f0ext RadioBearerSetup-v7f0ext-IEs, + v890NonCriticalExtensions SEQUENCE { + radioBearerSetup-v890ext + RadioBearerSetup-v890ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + radioBearerSetup-v7g0ext + RadioBearerSetup-v7g0ext-IEs, + v8a0NonCriticalExtensions SEQUENCE { + radioBearerSetup-v8a0ext + RadioBearerSetup-v8a0ext-IEs, + nonCriticalExtensions + SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r9 SEQUENCE { + radioBearerSetup-r9 RadioBearerSetup-r9-IEs, + -- Container for adding non critical extensions after + -- freezing REL-10 + radioBearerSetup-r9-add-ext BIT STRING OPTIONAL, + v950NonCriticalExtensions SEQUENCE { + radioBearerSetup-v950ext RadioBearerSetup-v950ext-IEs, + v9c0NonCriticalExtensions SEQUENCE { + radioBearerSetup-v9c0ext RadioBearerSetup-v9c0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r10 SEQUENCE { + radioBearerSetup-r10 RadioBearerSetup-r10-IEs, + -- Container for adding non critical extensions after + -- freezing REL-11 + radioBearerSetup-r10-add-ext BIT STRING OPTIONAL, + v9c0NonCriticalExtensions SEQUENCE { + radioBearerSetup-v9c0ext RadioBearerSetup-v9c0ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + radioBearerSetup-vb50ext + RadioBearerSetup-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r11 SEQUENCE { + radioBearerSetup-r11 RadioBearerSetup-r11-IEs, + -- Container for adding non critical extensions after + -- freezing REL-12 + radioBearerSetup-r11-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } + } + } + } + } + } + } + } +} + +RadioBearerSetup-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList OPTIONAL, + rab-InformationSetupList RAB-InformationSetupList OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + -- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification, + -- they should not be sent and if received they should be ignored. + dummy CHOICE { + fdd SEQUENCE { + dummy1 CPCH-SetID OPTIONAL, + dummy2 DRAC-StaticInformationList OPTIONAL + }, + tdd NULL + } OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement OPTIONAL, + modeSpecificPhysChInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-CommonInformation DL-CommonInformation OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List OPTIONAL +} + +RadioBearerSetup-v3a0ext ::= SEQUENCE { + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received the UE behaviour + -- is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL +} + +RadioBearerSetup-v4b0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SSDT-UL OPTIONAL, + -- The order of the RLs in IE cell-id-PerRL-List is the same as + -- in IE DL-InformationPerRL-List included in this message + cell-id-PerRL-List CellIdentity-PerRL-List OPTIONAL +} + +RadioBearerSetup-v590ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-TPC-PowerOffsetPerRL-List DL-TPC-PowerOffsetPerRL-List OPTIONAL +} + +RadioBearerSetup-v5d0ext-IEs ::= SEQUENCE { + --Radio Bearer IEs + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL +} + +RadioBearerSetup-r4-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received + -- the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList OPTIONAL, + rab-InformationSetupList RAB-InformationSetupList-r4 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + -- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification, + -- they should not be sent and if received they should be ignored. + dummy CHOICE { + fdd SEQUENCE { + dummy1 CPCH-SetID OPTIONAL, + dummy2 DRAC-StaticInformationList OPTIONAL + }, + tdd NULL + } OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r4 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement-r4 OPTIONAL, + modeSpecificPhysChInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-CommonInformation DL-CommonInformation-r4 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r4 OPTIONAL +} + +RadioBearerSetup-r5-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received + -- the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList-r5 OPTIONAL, + rab-InformationSetupList RAB-InformationSetupList-r5 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r5 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + -- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification, + -- they should not be sent and if received they should be ignored. + dummy CHOICE { + fdd SEQUENCE { + dummy1 CPCH-SetID OPTIONAL, + dummy2 DRAC-StaticInformationList OPTIONAL + }, + tdd NULL + } OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r5 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r5 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement-r5 OPTIONAL, + modeSpecificPhysChInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-HSPDSCH-Information DL-HSPDSCH-Information OPTIONAL, + dl-CommonInformation DL-CommonInformation-r5 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r5 OPTIONAL +} + +RadioBearerSetup-v690ext-IEs ::= SEQUENCE { + -- Core network IEs + primary-plmn-Identity PLMN-Identity OPTIONAL, + -- Physical channel IEs + -- The IE harq-Preamble-Mode should not be used in the r3 and r4 versions of the message + -- If included in the r3 or r4 version of the message, the UE should ignore the IE + harq-Preamble-Mode HARQ-Preamble-Mode OPTIONAL, + beaconPLEst BEACON-PL-Est OPTIONAL, + postVerificationPeriod ENUMERATED { true } OPTIONAL, + dhs-sync DHS-Sync OPTIONAL, + timingMaintainedSynchInd TimingMaintainedSynchInd OPTIONAL, + -- Radio bearer IEs + rab-InformationSetupList RAB-InformationSetupList-r6-ext OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +RadioBearerSetup-r6-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList-r6 OPTIONAL, + rab-InformationSetupList RAB-InformationSetupList-r6 OPTIONAL, + rab-InformationReconfigList RAB-InformationReconfigList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r6 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r6 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r6 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r5 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r5 OPTIONAL + }, + -- dummy is not used in this version of the specification + -- if it is sent, the UE behaviour is unspecified. + dummy SEQUENCE { + rab-Info RAB-Info-r6, + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6, + rb-InformationChangedList RB-InformationChangedList-r6 OPTIONAL, + powerOffsetInfoShort PowerOffsetInfoShort + } + }, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r6 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r6 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r6 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r6 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r6 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +RadioBearerSetup-v6b0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-InformationPerRL-List-v6b0ext DL-InformationPerRL-List-v6b0ext OPTIONAL, + -- MBMS IEs + -- The order of the RABs in IE rab-InformationSetupListExt is the same as + -- in IE rab-InformationSetupList that is included in this message + rab-InformationSetupListExt RAB-InformationSetupList-v6b0ext OPTIONAL +} + +RadioBearerSetup-r7-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList-r7 OPTIONAL, + rab-InformationSetupList RAB-InformationSetupList-r7 OPTIONAL, + rab-InformationReconfigList RAB-InformationReconfigList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r7 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r7 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r7 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r7 OPTIONAL + }, + -- dummy is not used in this version of the specification + -- if it is sent, the UE behaviour is unspecified. + dummy NULL + }, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r7 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r7 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r7 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r7 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r7 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +RadioBearerSetup-r7-add-ext-IEs ::= SEQUENCE { + radioBearerSetup-v7d0ext RadioBearerSetup-v7d0ext-IEs OPTIONAL, + v7f0NonCriticalExtensions SEQUENCE { + radioBearerSetup-v7f0ext RadioBearerSetup-v7f0ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + radioBearerSetup-v7g0ext RadioBearerSetup-v7g0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +RadioBearerSetup-v780ext-IEs ::= SEQUENCE { + -- Physical channel IEs + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL +} + +RadioBearerSetup-v7d0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + ul-EDCH-Information UL-EDCH-Information-ext OPTIONAL +} + +RadioBearerSetup-v7f0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + mimoParameters MIMO-Parameters-v7f0ext OPTIONAL +} + +RadioBearerSetup-v7g0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + mimoParameters MIMO-Parameters-v7g0ext OPTIONAL +} + +RadioBearerSetup-r8-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + sr-vcc-Info SR-VCC-Info OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList-r8 OPTIONAL, + rab-InformationSetupList RAB-InformationSetupList-r8 OPTIONAL, + rab-InformationReconfigList RAB-InformationReconfigList-r8 OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r8 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r8 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r7 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r8 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r8 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r8 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +RadioBearerSetup-v820ext-IEs ::= SEQUENCE { + -- Radio bearer IEs + rab-InformationSetupList RAB-InformationSetupList-v820ext OPTIONAL +} + +RadioBearerSetup-v890ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-SecondaryCellInfoFDD-v890ext DL-SecondaryCellInfoFDD-v890ext OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8-ext OPTIONAL +} + +RadioBearerSetup-v8a0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8-ext2 OPTIONAL +} + +RadioBearerSetup-r9-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + sr-vcc-Info SR-VCC-Info OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList-r8 OPTIONAL, + rab-InformationSetupList RAB-InformationSetupList-r8 OPTIONAL, + rab-InformationReconfigList RAB-InformationReconfigList-r8 OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r8 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r8 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r9 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r9 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r8 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r9 OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +RadioBearerSetup-v950ext-IEs::= SEQUENCE { + -- Physical channel IEs + secondaryCellMimoParameters SecondaryCellMIMOparametersFDD-v950ext OPTIONAL +} + +RadioBearerSetup-v9c0ext-IEs::= SEQUENCE { + -- For 1.28Mcps TDD only + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-TDD128-v9c0ext OPTIONAL +} + +RadioBearerSetup-r10-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + sr-vcc-Info SR-VCC-Info OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList-r8 OPTIONAL, + rab-InformationSetupList RAB-InformationSetupList-r8 OPTIONAL, + rab-InformationReconfigList RAB-InformationReconfigList-r8 OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r8 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r8 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r9 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r9 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + ul-MulticarrierEDCHInfo-TDD128 UL-MulticarrierEDCHInfo-TDD128 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r10 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r10 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + mu-MIMO-Info-TDD128 MU-MIMO-Info-TDD128 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +RadioBearerSetup-vb50ext-IEs ::= SEQUENCE { + ulOLTDInfoFDD UL-OLTD-InfoFDD OPTIONAL +} + +RadioBearerSetup-r11-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + sr-vcc-Info SR-VCC-Info OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList-r11 OPTIONAL, + rab-InformationSetupList RAB-InformationSetupList-r11 OPTIONAL, + rab-InformationReconfigList RAB-InformationReconfigList-r8 OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r11 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r8 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r11 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + mimo4x4Parameters MIMO4x4-Parameters OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r11 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r11 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + ul-MulticarrierEDCHInfo-TDD128 UL-MulticarrierEDCHInfo-TDD128 OPTIONAL, + ul-CLTD-InfoFDD UL-CLTD-InfoFDD OPTIONAL, + ul-OLTD-InfoFDD UL-OLTD-InfoFDD OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r11 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r11 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r11 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD2 AdditionalDLSecCellInfoListFDD2 OPTIONAL, + commonERGCHInfoFDD CommonERGCHInfoFDD OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + mu-MIMO-Info-TDD128 MU-MIMO-Info-TDD128 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +-- *************************************************** +-- +-- RADIO BEARER SETUP COMPLETE +-- +-- *************************************************** + +RadioBearerSetupComplete ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + ul-IntegProtActivationInfo IntegrityProtActivationInfo OPTIONAL, + -- TABULAR: UL-TimingAdvance is applicable for TDD mode only. + ul-TimingAdvance UL-TimingAdvance OPTIONAL, + start-Value START-Value OPTIONAL, + -- Radio bearer IEs + count-C-ActivationTime ActivationTime OPTIONAL, + -- dummy is not used in this version of the specification and + -- it should be ignored by the receiver. + dummy RB-ActivationTimeInfoList OPTIONAL, + ul-CounterSynchronisationInfo UL-CounterSynchronisationInfo OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + radioBearerSetupComplete-r3-add-ext BIT STRING OPTIONAL, + v770NonCriticalExtensions SEQUENCE { + radioBearerSetupComplete-v770ext + RadioBearerSetupComplete-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +RadioBearerSetupComplete-v770ext-IEs ::= SEQUENCE { + -- TABULAR: EXT-UL-TimingAdvance is applicable for TDD mode only. + ext-UL-TimingAdvance EXT-UL-TimingAdvance OPTIONAL, + deferredMeasurementControlReading ENUMERATED { true } OPTIONAL +} + +-- *************************************************** +-- +-- RADIO BEARER SETUP FAILURE +-- +-- *************************************************** + +RadioBearerSetupFailure ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + failureCause FailureCauseWithProtErr, + -- Radio bearer IEs + potentiallySuccesfulBearerList RB-IdentityList OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + radioBearerSetupFailure-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +-- *************************************************** +-- +-- RRC CONNECTION REJECT +-- +-- *************************************************** + +RRCConnectionReject ::= CHOICE { + r3 SEQUENCE { + rrcConnectionReject-r3 RRCConnectionReject-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + rrcConnectionReject-r3-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + rrcConnectionReject-v690ext RRCConnectionReject-v690ext-IEs, + v6f0NonCriticalExtensions SEQUENCE { + rrcConnectionReject-v6f0ext RRCConnectionReject-v6f0ext-IEs, + v860NonCriticalExtensions SEQUENCE { + rrcConnectionReject-v860ext RRCConnectionReject-v860ext-IEs, + va40NonCriticalExtensions SEQUENCE { + rrcConnectionReject-va40ext RRCConnectionReject-va40ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + rrcConnectionReject-vb50ext RRCConnectionReject-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + initialUE-Identity InitialUE-Identity, + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions SEQUENCE {} + } +} + +RRCConnectionReject-r3-IEs ::= SEQUENCE { + -- TABULAR: Integrity protection shall not be performed on this message. + -- User equipment IEs + initialUE-Identity InitialUE-Identity, + rrc-TransactionIdentifier RRC-TransactionIdentifier, + rejectionCause RejectionCause, + waitTime WaitTime, + redirectionInfo RedirectionInfo OPTIONAL +} + +RRCConnectionReject-v690ext-IEs ::= SEQUENCE { + redirectionInfo-v690ext GSM-TargetCellInfoList OPTIONAL +} + +RRCConnectionReject-v6f0ext-IEs ::= SEQUENCE { + countingCompletion ENUMERATED { true } OPTIONAL +} + +RRCConnectionReject-v860ext-IEs ::= SEQUENCE { + redirectionInfo RedirectionInfo-v860ext OPTIONAL +} + +RRCConnectionReject-va40ext-IEs ::= SEQUENCE { + extendedWaitTime ExtendedWaitTime OPTIONAL +} + +RRCConnectionReject-vb50ext-IEs ::= SEQUENCE { + eutra-TargetFreqInfoList EUTRA-TargetFreqInfoList-vb50ext OPTIONAL +} + +-- *************************************************** +-- +-- RRC CONNECTION RELEASE +-- +-- *************************************************** + +RRCConnectionRelease ::= CHOICE { + r3 SEQUENCE { + rrcConnectionRelease-r3 RRCConnectionRelease-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + rrcConnectionRelease-r3-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-v690ext RRCConnectionRelease-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-v770ext RRCConnectionRelease-v770ext-IEs, + v860NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-v860ext RRCConnectionRelease-v860ext-IEs, + va40NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-va40ext RRCConnectionRelease-va40ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r4 SEQUENCE { + rrcConnectionRelease-r4 RRCConnectionRelease-r4-IEs, + v4d0NonCriticalExtensions SEQUENCE { + -- Container for adding non critical extensions after freezing REL-6 + rrcConnectionRelease-r4-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-v690ext RRCConnectionRelease-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-v770ext RRCConnectionRelease-v770ext-IEs, + v860NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-v860ext RRCConnectionRelease-v860ext-IEs, + va40NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-va40ext + RRCConnectionRelease-va40ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-vb50ext + RRCConnectionRelease-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } +} + +RRCConnectionRelease-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + -- n-308 is conditional on the UE state + n-308 N-308 OPTIONAL, + releaseCause ReleaseCause, + rplmn-information Rplmn-Information OPTIONAL +} + +RRCConnectionRelease-r4-IEs ::= SEQUENCE { + -- User equipment IEs + -- n-308 is conditional on the UE state. + n-308 N-308 OPTIONAL, + releaseCause ReleaseCause, + rplmn-information Rplmn-Information-r4 OPTIONAL +} + +RRCConnectionRelease-v690ext-IEs ::= SEQUENCE { + redirectionInfo-v690ext RedirectionInfo-r6 OPTIONAL +} + +RRCConnectionRelease-v770ext-IEs ::= SEQUENCE { + -- User equipment IEs + ueMobilityStateIndicator High-MobilityDetected OPTIONAL +} + +RRCConnectionRelease-v860ext-IEs ::= SEQUENCE { + -- Other IEs + redirectionInfo RedirectionInfo-v860ext OPTIONAL +} + +RRCConnectionRelease-va40ext-IEs ::= SEQUENCE { + extendedWaitTime ExtendedWaitTime OPTIONAL +} + +RRCConnectionRelease-vb50ext-IEs ::= SEQUENCE { + -- Other IEs + eutra-TargetFreqInfoList EUTRA-TargetFreqInfoList-vb50ext OPTIONAL +} + +-- *************************************************** +-- +-- RRC CONNECTION RELEASE for CCCH +-- +-- *************************************************** + +RRCConnectionRelease-CCCH ::= CHOICE { + r3 SEQUENCE { + rrcConnectionRelease-CCCH-r3 RRCConnectionRelease-CCCH-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + rrcConnectionRelease-CCCH-r3-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-v690ext RRCConnectionRelease-CCCH-v690ext-IEs, + v860NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-v860ext RRCConnectionRelease-CCCH-v860ext-IEs, + va40NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-va40ext RRCConnectionRelease-va40ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + u-RNTI U-RNTI, + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r4 SEQUENCE { + rrcConnectionRelease-CCCH-r4 RRCConnectionRelease-CCCH-r4-IEs, + v4d0NonCriticalExtensions SEQUENCE { + -- Container for adding non critical extensions after freezing REL-5 + rrcConnectionRelease-CCCH-r4-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-v690ext RRCConnectionRelease-CCCH-v690ext-IEs, + v860NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-v860ext RRCConnectionRelease-CCCH-v860ext-IEs, + va40NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-va40ext + RRCConnectionRelease-va40ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions SEQUENCE { + -- TABULAR: CHOICE IdentityType (U-RNTI, GroupIdentity) is replaced with the + -- optional element groupIdentity, since the U-RNTI is mandatory in ASN.1. + -- In case CHOICE IdentityType is equal to GroupIdentity the value of the U-RNTI + -- shall be ignored by a UE complying with this version of the message. + groupIdentity SEQUENCE ( SIZE (1 .. maxURNTI-Group) ) OF + GroupReleaseInformation OPTIONAL, + criticalExtensions CHOICE { + r5 SEQUENCE { + rrcConnectionRelease-CCCH-r5 RRCConnectionRelease-CCCH-r5-IEs, + -- Container for adding non critical extensions after freezing REL-6 + rrcConnectionRelease-CCCH-r5-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-v690ext RRCConnectionRelease-CCCH-v690ext-IEs, + v860NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-v860ext + RRCConnectionRelease-CCCH-v860ext-IEs, + va40NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-va40ext + RRCConnectionRelease-va40ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } + } + } +} + +RRCConnectionRelease-CCCH-r3-IEs ::= SEQUENCE { + -- User equipment IEs + u-RNTI U-RNTI, + -- The rest of the message is identical to the one sent on DCCH. + rrcConnectionRelease RRCConnectionRelease-r3-IEs +} + +RRCConnectionRelease-CCCH-r4-IEs ::= SEQUENCE { + -- The rest of the message is identical to the one sent on DCCH. + rrcConnectionRelease RRCConnectionRelease-r4-IEs +} + +-- The R5 and R4 sequence of IEs are identical in this message +RRCConnectionRelease-CCCH-r5-IEs ::= RRCConnectionRelease-CCCH-r4-IEs + +-- The R6 non-critical extension is identical to the one sent on DCCH. +RRCConnectionRelease-CCCH-v690ext-IEs ::= RRCConnectionRelease-v690ext-IEs + +-- The R8 non-critical extension is identical to the one sent on DCCH. +RRCConnectionRelease-CCCH-v860ext-IEs ::= RRCConnectionRelease-v860ext-IEs + +-- The R10 non-critical extension is identical to the one sent on DCCH. +RRCConnectionRelease-CCCH-va40ext-IEs ::= RRCConnectionRelease-va40ext-IEs + +-- *************************************************** +-- +-- RRC CONNECTION RELEASE COMPLETE +-- +-- *************************************************** + +RRCConnectionReleaseComplete ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + errorIndication FailureCauseWithProtErr OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + rrcConnectionReleaseComplete-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +-- *************************************************** +-- +-- RRC CONNECTION REQUEST +-- +-- *************************************************** + +RRCConnectionRequest ::= SEQUENCE { + -- TABULAR: Integrity protection shall not be performed on this message. + -- User equipment IEs + initialUE-Identity InitialUE-Identity, + establishmentCause EstablishmentCause, + -- protocolErrorIndicator is MD, but for compactness reasons no default value + -- has been assigned to it. + protocolErrorIndicator ProtocolErrorIndicator, + -- Measurement IEs + measuredResultsOnRACH MeasuredResultsOnRACH OPTIONAL, + -- Non critical Extensions + v3d0NonCriticalExtensions SEQUENCE { + rRCConnectionRequest-v3d0ext RRCConnectionRequest-v3d0ext-IEs, + -- Reserved for future non critical extension + v4b0NonCriticalExtensions SEQUENCE { + rrcConnectionRequest-v4b0ext RRCConnectionRequest-v4b0ext-IEs, + v590NonCriticalExtensions SEQUENCE { + rrcConnectionRequest-v590ext RRCConnectionRequest-v590ext-IEs, + v690NonCriticalExtensions SEQUENCE { + rrcConnectionRequest-v690ext RRCConnectionRequest-v690ext-IEs, + -- Reserved for future non critical extension + v6b0NonCriticalExtensions SEQUENCE { + rrcConnectionRequest-v6b0ext RRCConnectionRequest-v6b0ext-IEs, + v6e0NonCriticalExtensions SEQUENCE { + rrcConnectionRequest-v6e0ext RRCConnectionRequest-v6e0ext-IEs, + v770NonCriticalExtensions SEQUENCE { + rrcConnectionRequest-v770ext + RRCConnectionRequest-v770ext-IEs, + v7b0NonCriticalExtensions SEQUENCE { + rrcConnectionRequest-v7b0ext + RRCConnectionRequest-v7b0ext-IEs, + v860NonCriticalExtensions SEQUENCE { + rrcConnectionRequest-v860ext + RRCConnectionRequest-v860ext-IEs, + v7e0NonCriticalExtensions SEQUENCE { + rrcConnectionRequest-v7e0ext + RRCConnectionRequest-v7e0ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + rrcConnectionRequest-v7g0ext + RRCConnectionRequest-v7g0ext-IEs, + v920NonCriticalExtensions SEQUENCE { + rrcConnectionRequest-v920ext + RRCConnectionRequest-v920ext-IEs, + v940NonCriticalExtensions SEQUENCE { + rrcConnectionRequest-v940ext + RRCConnectionRequest-v940ext-IEs, + va40NonCriticalExtensions + RRCConnectionRequest-NonCriticalExts-va40-IEs + OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +RRCConnectionRequest-v3d0ext-IEs ::= SEQUENCE { + -- User equipment IEs + uESpecificBehaviourInformation1idle UESpecificBehaviourInformation1idle OPTIONAL +} + +RRCConnectionRequest-v4b0ext-IEs ::= SEQUENCE { + -- User equipment IEs + accessStratumReleaseIndicator AccessStratumReleaseIndicator +} + +RRCConnectionRequest-v590ext-IEs ::= SEQUENCE { + -- User equipment IEs + predefinedConfigStatusInfo BOOLEAN +} + +RRCConnectionRequest-v690ext-IEs ::= SEQUENCE { + -- User equipment IEs + ueCapabilityIndication ENUMERATED { hsdch, hsdch-edch } OPTIONAL, + -- Measurement IEs + measuredResultsOnRACHinterFreq MeasuredResultsOnRACHinterFreq OPTIONAL, + domainIndicator CHOICE { + cs-domain SEQUENCE { + csCallType ENUMERATED {speech, video, other, spare } + }, + ps-domain NULL + } +} + +RRCConnectionRequest-v6b0ext-IEs ::= SEQUENCE { + -- MBMS IEs + mbmsSelectedServices MBMS-SelectedServicesShort OPTIONAL +} + +RRCConnectionRequest-v6e0ext-IEs ::= SEQUENCE { + -- User equipment IEs + supportForFDPCH ENUMERATED { true } OPTIONAL +} + +RRCConnectionRequest-v770ext-IEs ::= SEQUENCE { + -- User equipment IEs + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + hspdschReception-CellFach ENUMERATED { true } OPTIONAL, + mac-ehsSupport ENUMERATED { true } OPTIONAL, + discontinuousDpcchTransmission ENUMERATED { true } OPTIONAL +} + +RRCConnectionRequest-v7b0ext-IEs ::= SEQUENCE { + -- User equipment IEs + supportForE-FDPCH ENUMERATED { true } OPTIONAL +} + +RRCConnectionRequest-v7e0ext-IEs ::= SEQUENCE { + supportForCSVoiceoverHSPA ENUMERATED { true } OPTIONAL +} + +RRCConnectionRequest-v7g0ext-IEs ::= SEQUENCE { + -- Measurement IEs + measuredResultsOnRACH-v7g0ext MeasuredResultsOnRACH-v7g0ext OPTIONAL +} + +RRCConnectionRequest-v860ext-IEs ::= SEQUENCE { + -- User equipment IEs + supportOfCommonEDCH ENUMERATED { true } OPTIONAL, + multiCellSupport ENUMERATED { true } OPTIONAL, + pre-redirectionInfo Pre-RedirectionInfo OPTIONAL, + supportOfMACiis ENUMERATED { true } OPTIONAL, + supportOfSPSOperation ENUMERATED { true } OPTIONAL +} + +RRCConnectionRequest-v920ext-IEs ::= SEQUENCE { + -- User equipment IEs + supportOfDualCellMIMO ENUMERATED { true } OPTIONAL +} + +RRCConnectionRequest-v940ext-IEs ::= SEQUENCE { + -- User equipment IEs + systemInformationContainerStoredIndicator ENUMERATED { true } OPTIONAL +} + +RRCConnectionRequest-v9b0ext-IEs ::= SEQUENCE { + -- User equipment IEs + cSFBIndication ENUMERATED { true } OPTIONAL +} + +RRCConnectionRequest-NonCriticalExts-va40-IEs ::= SEQUENCE { + rrcConnectionRequest-va40ext RRCConnectionRequest-va40ext-IEs, + v9b0NonCriticalExtensions SEQUENCE { + rrcConnectionRequest-v9b0ext RRCConnectionRequest-v9b0ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + rrcConnectionRequest-vb50ext RRCConnectionRequest-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +RRCConnectionRequest-va40ext-IEs ::= SEQUENCE { + -- User equipment IEs + -- For 1.28 Mcps TDD, IE ”supportOfMoreThanTwoCellsOrMIMO4x4” represent MU-MIMO capability, + -- higherRate indicates uplink and downlink MU-MIMO, lowerRate indicates uplink MU-MIMO + supportOfMoreThanTwoCellsOrMIMO4x4 ENUMERATED { higherRate, lowerRate } OPTIONAL, + supportOf1stFrequencyBand ENUMERATED { true } OPTIONAL, + supportOf2ndFrequencyBand ENUMERATED { true } OPTIONAL +} + +RRCConnectionRequest-vb50ext-IEs ::= SEQUENCE { + -- Measurement IEs + measuredResultsOnRACHEUTRAFreq MeasuredResultsOnRACH-EUTRAFreq OPTIONAL +} + +-- *************************************************** +-- +-- RRC CONNECTION SETUP +-- +-- *************************************************** + +RRCConnectionSetup ::= CHOICE { + r3 SEQUENCE { + rrcConnectionSetup-r3 RRCConnectionSetup-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + rrcConnectionSetup-r3-add-ext BIT STRING OPTIONAL, + v4b0NonCriticalExtensions SEQUENCE { + rrcConnectionSetup-v4b0ext RRCConnectionSetup-v4b0ext-IEs, + v590NonCriticalExtensions SEQUENCE { + rrcConnectionSetup-v590ext RRCConnectionSetup-v590ext-IEs, + v690NonCriticalExtensions SEQUENCE { + rrcConnectionSetup-v690ext RRCConnectionSetup-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + initialUE-Identity InitialUE-Identity, + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r4 SEQUENCE { + rrcConnectionSetup-r4 RRCConnectionSetup-r4-IEs, + v4d0NonCriticalExtensions SEQUENCE { + -- Container for adding non critical extensions after freezing REL-5 + rrcConnectionSetup-r4-add-ext BIT STRING OPTIONAL, + v590NonCriticalExtensions SEQUENCE { + rrcConnectionSetup-v590ext RRCConnectionSetup-v590ext-IEs, + v690NonCriticalExtensions SEQUENCE { + rrcConnectionSetup-v690ext RRCConnectionSetup-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r5 SEQUENCE { + rrcConnectionSetup-r5 RRCConnectionSetup-r5-IEs, + -- Container for adding non critical extensions after freezing REL-6 + rrcConnectionSetup-r5-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + rrcConnectionSetup-v690ext RRCConnectionSetup-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r6 SEQUENCE { + rrcConnectionSetup-r6 RRCConnectionSetup-r6-IEs, + -- Container for adding non critical extensions after freezing REL-7 + rrcConnectionSetup-r6-add-ext BIT STRING OPTIONAL, + v6b0NonCriticalExtensions SEQUENCE { + rrcConnectionSetup-v6b0ext RRCConnectionSetup-v6b0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r7 SEQUENCE { + rrcConnectionSetup-r7 RRCConnectionSetup-r7-IEs, + -- Container for adding non critical extensions after freezing REL-8 + rrcConnectionSetup-r7-add-ext BIT STRING OPTIONAL, + v780NonCriticalExtensions SEQUENCE { + rrcConnectionSetup-v780ext RRCConnectionSetup-v780ext-IEs, + v7d0NonCriticalExtensions SEQUENCE { + rrcConnectionSetup-v7d0ext RRCConnectionSetup-v7d0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r8 SEQUENCE { + rrcConnectionSetup-r8 RRCConnectionSetup-r8-IEs, + -- Container for adding non critical extensions after freezing REL-9 + rrcConnectionSetup-r8-add-ext BIT STRING OPTIONAL, + v7d0NonCriticalExtensions SEQUENCE { + rrcConnectionSetup-v7d0ext RRCConnectionSetup-v7d0ext-IEs, + v890NonCriticalExtensions SEQUENCE { + rrcConnectionSetup-v890ext + RRCConnectionSetup-v890ext-IEs, + v8a0NonCriticalExtensions SEQUENCE { + rrcConnectionSetup-v8a0ext + RRCConnectionSetup-v8a0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r9 SEQUENCE { + rrcConnectionSetup-r9 RRCConnectionSetup-r9-IEs, + -- Container for adding non critical extensions after + -- freezing REL-10 + rrcConnectionSetup-r9-add-ext + BIT STRING OPTIONAL, + v950NonCriticalExtensions SEQUENCE { + rrcConnectionSetup-v950ext RRCConnectionSetup-v950ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r10 SEQUENCE { + rrcConnectionSetup-r10 RRCConnectionSetup-r10-IEs, + -- Container for adding non critical extensions after + -- freezing REL-11 + rrcConnectionSetup-r10-add-ext + BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions CHOICE { + r11 SEQUENCE { + rrcConnectionSetup-r11 + RRCConnectionSetup-r11-IEs, + -- Container for adding non critical extensions after + -- freezing REL-12 + rrcConnectionSetup-r11-add-ext + BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } + } + } + } + } + } + } + } +} + +RRCConnectionSetup-r3-IEs ::= SEQUENCE { + -- TABULAR: Integrity protection shall not be performed on this message. + -- User equipment IEs + initialUE-Identity InitialUE-Identity, + rrc-TransactionIdentifier RRC-TransactionIdentifier, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI, + new-c-RNTI C-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient, + -- TABULAR: If capabilityUpdateRequirement is not present, the default value + -- defined in 10.3.3.2 shall be used. + capabilityUpdateRequirement CapabilityUpdateRequirement OPTIONAL, + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList2, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo OPTIONAL, + -- NOTE: ul-AddReconfTransChInfoList should be optional in later versions of + -- this message + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList, + dl-CommonTransChInfo DL-CommonTransChInfo OPTIONAL, + -- NOTE: dl-AddReconfTransChInfoList should be optional in later versions + -- of this message + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement OPTIONAL, + dl-CommonInformation DL-CommonInformation OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List OPTIONAL +} + +RRCConnectionSetup-v4b0ext-IEs ::= SEQUENCE { + capabilityUpdateRequirement-r4-ext CapabilityUpdateRequirement-r4-ext OPTIONAL, + -- Physical channel IEs + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SSDT-UL OPTIONAL, + -- The order of the RLs in IE cell-id-PerRL-List is the same as + -- in IE DL-InformationPerRL-List included in this message + cell-id-PerRL-List CellIdentity-PerRL-List OPTIONAL +} + +RRCConnectionSetup-v590ext-IEs ::= SEQUENCE { + -- User equipment IEs + systemSpecificCapUpdateReq SystemSpecificCapUpdateReq-v590ext OPTIONAL, + -- Physical channel IEs + dl-TPC-PowerOffsetPerRL-List DL-TPC-PowerOffsetPerRL-List OPTIONAL +} + +RRCConnectionSetup-r4-IEs ::= SEQUENCE { + -- TABULAR: Integrity protection shall not be performed on this message. + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI, + new-c-RNTI C-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient, + -- TABULAR: If capabilityUpdateRequirement is not present, the default value + -- defined in 10.3.3.2 shall be used. + capabilityUpdateRequirement CapabilityUpdateRequirement-r4 OPTIONAL, + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList2, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r4 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement-r4 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r4 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r4 OPTIONAL +} + +RRCConnectionSetup-r5-IEs ::= SEQUENCE { + -- TABULAR: Integrity protection shall not be performed on this message. + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI, + new-c-RNTI C-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient, + -- TABULAR: If capabilityUpdateRequirement is not present, the default value + -- defined in 10.3.3.2 shall be used. + capabilityUpdateRequirement CapabilityUpdateRequirement-r5 OPTIONAL, + -- Specification mode information + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList2, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r4 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r5 + } + } + } + }, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement-r4 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r4 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r5bis OPTIONAL +} + +RRCConnectionSetup-v690ext-IEs ::= SEQUENCE { + -- Physical Channel IEs + beaconPLEst BEACON-PL-Est OPTIONAL, + postVerificationPeriod ENUMERATED { true } OPTIONAL +} + +RRCConnectionSetup-r6-IEs ::= SEQUENCE { + -- TABULAR: Integrity protection shall not be performed on this message. + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI, + new-c-RNTI C-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient, + -- TABULAR: If capabilityUpdateRequirement is not present, the default value + -- defined in 10.3.3.2 shall be used. + capabilityUpdateRequirement CapabilityUpdateRequirement-r5 OPTIONAL, + -- Specification mode information + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList2-r6, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r6 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r5 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6 + } + } + } + }, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r6 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r6 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r6 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r6 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r6 OPTIONAL +} + +RRCConnectionSetup-v6b0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-InformationPerRL-List-v6b0ext DL-InformationPerRL-List-v6b0ext OPTIONAL +} + +RRCConnectionSetup-r7-IEs ::= SEQUENCE { + -- TABULAR: Integrity protection shall not be performed on this message. + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI, + new-c-RNTI C-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7, + -- TABULAR: If capabilityUpdateRequirement is not present, the default value + -- defined in 10.3.3.2 shall be used. + capabilityUpdateRequirement CapabilityUpdateRequirement-r7 OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN, + -- Specification mode information + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList2-r7, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r7 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r7 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6 + } + } + } + }, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r7 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r7 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r7 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r7 OPTIONAL +} + +RRCConnectionSetup-v780ext-IEs ::= SEQUENCE { + -- Physical channel IEs + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL +} + +RRCConnectionSetup-v7d0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + ul-EDCH-Information UL-EDCH-Information-ext OPTIONAL +} + +RRCConnectionSetup-r8-IEs ::= SEQUENCE { + -- TABULAR: Integrity protection shall not be performed on this message. + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI, + new-c-RNTI C-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7, + -- TABULAR: If capabilityUpdateRequirement is not present, the default value + -- defined in 10.3.3.2 shall be used. + capabilityUpdateRequirement CapabilityUpdateRequirement-r8 OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN, + -- Specification mode information + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy DefaultConfigForCellFACH OPTIONAL, + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList2-r8, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r7 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6 + } + } + } + }, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r8 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r8 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL +} + +RRCConnectionSetup-v890ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-SecondaryCellInfoFDD-v890ext DL-SecondaryCellInfoFDD-v890ext OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8-ext OPTIONAL +} + +RRCConnectionSetup-v8a0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8-ext2 OPTIONAL +} + +RRCConnectionSetup-r9-IEs ::= SEQUENCE { + -- TABULAR: Integrity protection shall not be performed on this message. + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI, + new-c-RNTI C-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7, + -- TABULAR: If capabilityUpdateRequirement is not present, the default value + -- defined in 10.3.3.2 shall be used. + capabilityUpdateRequirement CapabilityUpdateRequirement-r8 OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN, + -- Specification mode information + defaultConfigForCellFACH DefaultConfigForCellFACH OPTIONAL, + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList2-r8, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r9 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6 + } + } + } + }, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r9 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r8 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r9 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL +} + +RRCConnectionSetup-v950ext-IEs ::= SEQUENCE { + -- Physical channel IEs + secondaryCellMimoParameters SecondaryCellMIMOparametersFDD-v950ext OPTIONAL +} + +RRCConnectionSetup-r10-IEs ::= SEQUENCE { + -- TABULAR: Integrity protection shall not be performed on this message. + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI, + new-c-RNTI C-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7, + -- TABULAR: If capabilityUpdateRequirement is not present, the default value + -- defined in 10.3.3.2 shall be used. + capabilityUpdateRequirement CapabilityUpdateRequirement-r8 OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN, + -- Specification mode information + defaultConfigForCellFACH DefaultConfigForCellFACH OPTIONAL, + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList2-r8, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r9 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6 + } + } + } + }, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r9 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r10 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r10 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + mu-MIMO-Info-TDD128 MU-MIMO-Info-TDD128 OPTIONAL +} + +RRCConnectionSetup-r11-IEs ::= SEQUENCE { + -- TABULAR: Integrity protection shall not be performed on this message. + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI, + new-c-RNTI C-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7, + -- TABULAR: If capabilityUpdateRequirement is not present, the default value + -- defined in 10.3.3.2 shall be used. + capabilityUpdateRequirement CapabilityUpdateRequirement-r8 OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN, + -- Specification mode information + defaultConfigForCellFACH DefaultConfigForCellFACH OPTIONAL, + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList2-r8, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r11 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6 + } + } + } + }, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r11 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r11 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r11 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r10 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD-r11 OPTIONAL, + commonERGCHInfoFDD CommonERGCHInfoFDD OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + mu-MIMO-Info-TDD128 MU-MIMO-Info-TDD128 OPTIONAL +} + +-- *************************************************** +-- +-- RRC CONNECTION SETUP COMPLETE +-- +-- *************************************************** + +RRCConnectionSetupComplete ::= SEQUENCE { + -- TABULAR: Integrity protection shall not be performed on this message. + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + startList STARTList, + ue-RadioAccessCapability UE-RadioAccessCapability OPTIONAL, + -- Other IEs + ue-RATSpecificCapability InterRAT-UE-RadioAccessCapabilityList OPTIONAL, + -- Non critical extensions + v370NonCriticalExtensions SEQUENCE { + rrcConnectionSetupComplete-v370ext RRCConnectionSetupComplete-v370ext, + v380NonCriticalExtensions SEQUENCE { + rrcConnectionSetupComplete-v380ext RRCConnectionSetupComplete-v380ext-IEs, + -- Reserved for future non critical extension + v3a0NonCriticalExtensions SEQUENCE { + rrcConnectionSetupComplete-v3a0ext RRCConnectionSetupComplete-v3a0ext-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + rrcConnectionSetupComplete-r3-add-ext BIT STRING + (CONTAINING RRCConnectionSetupComplete-r3-add-ext-IEs) OPTIONAL, + v3g0NonCriticalExtensions SEQUENCE { + rrcConnectionSetupComplete-v3g0ext RRCConnectionSetupComplete-v3g0ext-IEs, + v4b0NonCriticalExtensions SEQUENCE { + rrcConnectionSetupComplete-v4b0ext + RRCConnectionSetupComplete-v4b0ext-IEs, + v590NonCriticalExtensions SEQUENCE { + rrcConnectionSetupComplete-v590ext + RRCConnectionSetupComplete-v590ext-IEs, + v5c0NonCriticalExtensions SEQUENCE { + rrcConnectionSetupComplete-v5c0ext + RRCConnectionSetupComplete-v5c0ext-IEs, + v690NonCriticalExtensions SEQUENCE { + rrcConnectionSetupComplete-v690ext + RRCConnectionSetupComplete-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + rrcConectionSetupComplete-v770ext + RRCConnectionSetupComplete-v770ext-IEs, + va40NonCriticalExtensions SEQUENCE { + rrcConectionSetupComplete-va40ext + RRCConnectionSetupComplete-va40ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + rrcConnectionSetupComplete-vb50ext + RRCConnectionSetupComplete-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +RRCConnectionSetupComplete-v370ext ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v370ext UE-RadioAccessCapability-v370ext OPTIONAL +} + +RRCConnectionSetupComplete-v380ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v380ext UE-RadioAccessCapability-v380ext OPTIONAL, + dl-PhysChCapabilityFDD-v380ext DL-PhysChCapabilityFDD-v380ext +} + +RRCConnectionSetupComplete-v3a0ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v3a0ext UE-RadioAccessCapability-v3a0ext OPTIONAL +} + +RRCConnectionSetupComplete-v3g0ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v3g0ext UE-RadioAccessCapability-v3g0ext OPTIONAL +} + +RRCConnectionSetupComplete-r3-add-ext-IEs ::= SEQUENCE { + rrcConnectionSetupComplete-v650ext RRCConnectionSetupComplete-v650ext-IEs OPTIONAL, + v680NonCriticalExtensions SEQUENCE { + rrcConnectionSetupComplete-v680ext RRCConnectionSetupComplete-v680ext-IEs, + v7e0NonCriticalExtensions SEQUENCE { + rrcConnectionSetupComplete-v7e0ext RRCConnectionSetupComplete-v7e0ext-IEs, + v7f0NonCriticalExtensions SEQUENCE { + rrcConnectionSetupComplete-v7f0ext + RRCConnectionSetupComplete-v7f0ext-IEs, + va40NonCriticalExtensions SEQUENCE { + rrcConnectionSetupCompleteBand-va40ext + RRCConnectionSetupCompleteBand-va40ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +RRCConnectionSetupComplete-v4b0ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v4b0ext UE-RadioAccessCapability-v4b0ext OPTIONAL +} + +RRCConnectionSetupComplete-v590ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v590ext UE-RadioAccessCapability-v590ext OPTIONAL, + -- Other IEs + ue-RATSpecificCapability-v590ext InterRAT-UE-RadioAccessCapability-v590ext OPTIONAL +} + +RRCConnectionSetupComplete-v5c0ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v5c0ext UE-RadioAccessCapability-v5c0ext OPTIONAL +} + +RRCConnectionSetupComplete-v650ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v650ext UE-RadioAccessCapability-v650ext +} + +RRCConnectionSetupComplete-v680ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v680ext UE-RadioAccessCapability-v680ext +} + +RRCConnectionSetupComplete-v690ext-IEs ::= SEQUENCE { + -- User equipment IEs + ueCapabilityContainer BIT STRING + (CONTAINING UE-CapabilityContainer-IEs) OPTIONAL +} + +RRCConnectionSetupComplete-v770ext-IEs ::= SEQUENCE { + -- Other IEs + deferredMeasurementControlReading ENUMERATED { true } OPTIONAL +} + +RRCConnectionSetupComplete-v7e0ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability UE-RadioAccessCapability-v7e0ext +} + +RRCConnectionSetupComplete-v7f0ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability UE-RadioAccessCapability-v7f0ext OPTIONAL +} + +RRCConnectionSetupComplete-va40ext-IEs ::= SEQUENCE { + -- Other IEs + loggedMeasAvailable ENUMERATED { true } OPTIONAL, + loggedANRResultsAvailable ENUMERATED { true } OPTIONAL} + +RRCConnectionSetupCompleteBand-va40ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapabBand UE-RadioAccessCapabBand-va40ext OPTIONAL +} + +RRCConnectionSetupComplete-vb50ext-IEs ::= SEQUENCE { + -- Other IEs + connEstFailInfoAvailable ENUMERATED { true } OPTIONAL +} + +-- *************************************************** +-- +-- RRC FAILURE INFO +-- +-- *************************************************** + +RRC-FailureInfo ::= CHOICE { + r3 SEQUENCE { + rRC-FailureInfo-r3 RRC-FailureInfo-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + rrc-FailureInfo-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions SEQUENCE {} +} + +RRC-FailureInfo-r3-IEs ::= SEQUENCE { + -- Non-RRC IEs + failureCauseWithProtErr FailureCauseWithProtErr +} + +-- *************************************************** +-- +-- RRC STATUS +-- +-- *************************************************** + +RRCStatus ::= SEQUENCE { + -- Other IEs + -- TABULAR: Identification of received message is nested in + -- ProtocolErrorMoreInformation + protocolErrorInformation ProtocolErrorMoreInformation, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + rrcStatus-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +-- *************************************************** +-- +-- SECURITY MODE COMMAND +-- +-- *************************************************** + +SecurityModeCommand ::= CHOICE { + r3 SEQUENCE { + securityModeCommand-r3 SecurityModeCommand-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + securityModeCommand-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r7 SEQUENCE{ + securityModeCommand-r7 SecurityModeCommand-r7-IEs, + -- Container for adding non critical extensions after freezing REL-8 + securityModeCommand-r7-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } +} + +SecurityModeCommand-r3-IEs ::= SEQUENCE { +-- TABULAR: Integrity protection shall always be performed on this message. + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + securityCapability SecurityCapability, + cipheringModeInfo CipheringModeInfo OPTIONAL, + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + -- Core network IEs + cn-DomainIdentity CN-DomainIdentity, + -- Other IEs + ue-SystemSpecificSecurityCap InterRAT-UE-SecurityCapList OPTIONAL +} + +SecurityModeCommand-r7-IEs ::= SEQUENCE { +-- TABULAR: Integrity protection shall always be performed on this message. + -- User equipment IEs + securityCapability SecurityCapability, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + -- Core network IEs + cn-DomainIdentity CN-DomainIdentity, + -- Other IEs + ue-SystemSpecificSecurityCap InterRAT-UE-SecurityCapList OPTIONAL +} + +-- *************************************************** +-- +-- SECURITY MODE COMPLETE +-- +-- *************************************************** + +SecurityModeComplete ::= SEQUENCE { +-- TABULAR: Integrity protection shall always be performed on this message. + + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + ul-IntegProtActivationInfo IntegrityProtActivationInfo OPTIONAL, + -- Radio bearer IEs + rb-UL-CiphActivationTimeInfo RB-ActivationTimeInfoList OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + securityModeComplete-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +-- *************************************************** +-- +-- SECURITY MODE FAILURE +-- +-- *************************************************** + +SecurityModeFailure ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + failureCause FailureCauseWithProtErr, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + securityModeFailure-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +-- *************************************************** +-- +-- SIGNALLING CONNECTION RELEASE +-- +-- *************************************************** + +SignallingConnectionRelease ::= CHOICE { + r3 SEQUENCE { + signallingConnectionRelease-r3 SignallingConnectionRelease-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + signallingConnectionRelease-r3-add-ext BIT STRING OPTIONAL, + va40NonCriticalExtensions SEQUENCE { + signallingConnectionRelease-va40ext SignallingConnectionRelease-va40ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions SEQUENCE {} + } +} + +SignallingConnectionRelease-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + -- Core network IEs + cn-DomainIdentity CN-DomainIdentity +} + +SignallingConnectionRelease-va40ext-IEs ::= SEQUENCE { + extendedWaitTime ExtendedWaitTime OPTIONAL +} + +-- *************************************************** +-- +-- SIGNALLING CONNECTION RELEASE INDICATION +-- +-- *************************************************** + +SignallingConnectionReleaseIndication ::= SEQUENCE { + -- Core network IEs + cn-DomainIdentity CN-DomainIdentity, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + signallingConnectionReleaseIndication-r3-add-ext BIT STRING OPTIONAL, + v860nonCriticalExtentions SEQUENCE { + signallingConnectionReleaseIndication-v860ext + SignallingConnectionReleaseIndication-v860ext, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SignallingConnectionReleaseIndication-v860ext ::= SEQUENCE { + signallingConnectionReleaseIndicationCause + ENUMERATED { uERequestedPSDataSessionEnd, anyOtherCause } +} + +-- *************************************************** +-- +-- SYSTEM INFORMATION for BCH +-- +-- *************************************************** + +SystemInformation-BCH ::= SEQUENCE { + -- Other information elements + sfn-Prime SFN-Prime, + payload CHOICE { + noSegment NULL, + firstSegment FirstSegment, + subsequentSegment SubsequentSegment, + lastSegmentShort LastSegmentShort, + lastAndFirst SEQUENCE { + lastSegmentShort LastSegmentShort, + firstSegment FirstSegmentShort + }, + lastAndComplete SEQUENCE { + lastSegmentShort LastSegmentShort, + completeSIB-List CompleteSIB-List + }, + lastAndCompleteAndFirst SEQUENCE { + lastSegmentShort LastSegmentShort, + completeSIB-List CompleteSIB-List, + firstSegment FirstSegmentShort + }, + completeSIB-List CompleteSIB-List, + completeAndFirst SEQUENCE { + completeSIB-List CompleteSIB-List, + firstSegment FirstSegmentShort + }, + completeSIB CompleteSIB, + lastSegment LastSegment, + spare5 NULL, + spare4 NULL, + spare3 NULL, + spare2 NULL, + spare1 NULL + } +} + +-- *************************************************** +-- +-- SYSTEM INFORMATION for FACH +-- +-- *************************************************** + +-- this IE is not used in this version of the specification. +SystemInformation-FACH ::= SEQUENCE { + -- Other information elements + payload CHOICE { + noSegment NULL, + firstSegment FirstSegment, + subsequentSegment SubsequentSegment, + lastSegmentShort LastSegmentShort, + lastAndFirst SEQUENCE { + lastSegmentShort LastSegmentShort, + firstSegment FirstSegmentShort + }, + lastAndComplete SEQUENCE { + lastSegmentShort LastSegmentShort, + completeSIB-List CompleteSIB-List + }, + lastAndCompleteAndFirst SEQUENCE { + lastSegmentShort LastSegmentShort, + completeSIB-List CompleteSIB-List, + firstSegment FirstSegmentShort + }, + completeSIB-List CompleteSIB-List, + completeAndFirst SEQUENCE { + completeSIB-List CompleteSIB-List, + firstSegment FirstSegmentShort + }, + completeSIB CompleteSIB, + lastSegment LastSegment, + spare5 NULL, + spare4 NULL, + spare3 NULL, + spare2 NULL, + spare1 NULL + } +} + +-- *************************************************** +-- +-- First segment +-- +-- *************************************************** + +FirstSegment ::= SEQUENCE { + -- Other information elements + sib-Type SIB-Type, + seg-Count SegCount, + sib-Data-fixed SIB-Data-fixed +} + +-- *************************************************** +-- +-- First segment (short) +-- +-- *************************************************** + +FirstSegmentShort ::= SEQUENCE { + -- Other information elements + sib-Type SIB-Type, + seg-Count SegCount, + sib-Data-variable SIB-Data-variable +} + +-- *************************************************** +-- +-- Subsequent segment +-- +-- *************************************************** + +SubsequentSegment ::= SEQUENCE { + -- Other information elements + sib-Type SIB-Type, + segmentIndex SegmentIndex, + sib-Data-fixed SIB-Data-fixed +} + +-- *************************************************** +-- +-- Last segment +-- +-- *************************************************** + +LastSegment ::= SEQUENCE { + -- Other information elements + sib-Type SIB-Type, + segmentIndex SegmentIndex, + -- For sib-Data-fixed, in case the SIB data is less than 222 bits, padding + -- shall be used. The same padding bits shall be used as defined in clause 12.1 + sib-Data-fixed SIB-Data-fixed +} + +LastSegmentShort ::= SEQUENCE { + -- Other information elements + sib-Type SIB-Type, + segmentIndex SegmentIndex, + sib-Data-variable SIB-Data-variable +} + +-- *************************************************** +-- +-- Complete SIB +-- +-- *************************************************** + +CompleteSIB-List ::= SEQUENCE (SIZE (1..maxSIBperMsg)) OF + CompleteSIBshort + +CompleteSIB ::= SEQUENCE { + -- Other information elements + sib-Type SIB-Type, + -- For sib-Data-fixed, in case the SIB data is less than 226 bits, padding + -- shall be used. The same padding bits shall be used as defined in clause 12.1 + sib-Data-fixed BIT STRING (SIZE (226)) +} + +CompleteSIBshort ::= SEQUENCE { + -- Other information elements + sib-Type SIB-Type, + sib-Data-variable SIB-Data-variable +} + +-- *************************************************** +-- +-- SYSTEM INFORMATION CHANGE INDICATION +-- +-- *************************************************** + +SystemInformationChangeIndication ::= SEQUENCE { + -- Other IEs + bcch-ModificationInfo BCCH-ModificationInfo, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + systemInformationChangeIndication-r3-add-ext BIT STRING OPTIONAL, + v860NonCriticalExtensions SEQUENCE { + systemInformationChangeIndication-v860ext + SystemInformationChangeIndication-v860ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SystemInformationChangeIndication-v860ext-IEs ::= SEQUENCE { + -- Other IEs + etws-Information ETWS-Information OPTIONAL +} + +-- *************************************************** +-- +-- TRANSPORT CHANNEL RECONFIGURATION +-- +-- *************************************************** + +TransportChannelReconfiguration ::= CHOICE { + r3 SEQUENCE { + transportChannelReconfiguration-r3 + TransportChannelReconfiguration-r3-IEs, + v3a0NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v3a0ext + TransportChannelReconfiguration-v3a0ext, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + transportChannelReconfiguration-r3-add-ext BIT STRING OPTIONAL, + v4b0NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v4b0ext + TransportChannelReconfiguration-v4b0ext-IEs, + v590NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v590ext + TransportChannelReconfiguration-v590ext-IEs, + v690NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v690ext + TransportChannelReconfiguration-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v770ext + TransportChannelReconfiguration-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r4 SEQUENCE { + transportChannelReconfiguration-r4 + TransportChannelReconfiguration-r4-IEs, + v4d0NonCriticalExtensions SEQUENCE { + -- Container for adding non critical extensions after freezing REL-5 + transportChannelReconfiguration-r4-add-ext BIT STRING OPTIONAL, + v590NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v590ext + TransportChannelReconfiguration-v590ext-IEs, + v690NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v690ext + TransportChannelReconfiguration-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v770ext + TransportChannelReconfiguration-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r5 SEQUENCE { + transportChannelReconfiguration-r5 + TransportChannelReconfiguration-r5-IEs, + -- Container for adding non critical extensions after freezing REL-6 + transportChannelReconfiguration-r5-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v690ext + TransportChannelReconfiguration-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v770ext + TransportChannelReconfiguration-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r6 SEQUENCE { + transportChannelReconfiguration-r6 + TransportChannelReconfiguration-r6-IEs, + -- Container for adding non critical extensions after freezing REL-7 + transportChannelReconfiguration-r6-add-ext BIT STRING OPTIONAL, + v6b0NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v6b0ext + TransportChannelReconfiguration-v6b0ext-IEs, + v770NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v770ext + TransportChannelReconfiguration-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r7 SEQUENCE { + transportChannelReconfiguration-r7 + TransportChannelReconfiguration-r7-IEs, + -- Container for adding non critical extensions after freezing REL-8 + transportChannelReconfiguration-r7-add-ext BIT STRING OPTIONAL, + v780NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v780ext + TransportChannelReconfiguration-v780ext-IEs, + v7d0NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v7d0ext + TransportChannelReconfiguration-v7d0ext-IEs, + v7f0NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v7f0ext + TransportChannelReconfiguration-v7f0ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v7g0ext + TransportChannelReconfiguration-v7g0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r8 SEQUENCE { + transportChannelReconfiguration-r8 + TransportChannelReconfiguration-r8-IEs, + -- Container for adding non critical extensions after freezing REL-9 + transportChannelReconfiguration-r8-add-ext + BIT STRING OPTIONAL, + v7d0NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v7d0ext + TransportChannelReconfiguration-v7d0ext-IEs, + v7f0NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v7f0ext + TransportChannelReconfiguration-v7f0ext-IEs, + v890NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v890ext + TransportChannelReconfiguration-v890ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v7g0ext + TransportChannelReconfiguration-v7g0ext-IEs, + v8a0NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v8a0ext + TransportChannelReconfiguration-v8a0ext-IEs, + nonCriticalExtensions + SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r9 SEQUENCE { + transportChannelReconfiguration-r9 + TransportChannelReconfiguration-r9-IEs, + -- Container for adding non critical extensions after + -- freezing REL-10 + transportChannelReconfiguration-r9-add-ext + BIT STRING OPTIONAL, + v950NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v950ext + TransportChannelReconfiguration-v950ext-IEs, + v9c0NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v9c0ext + TransportChannelReconfiguration-v9c0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r10 SEQUENCE { + transportChannelReconfiguration-r10 + TransportChannelReconfiguration-r10-IEs, + -- Container for adding non critical extensions after + -- freezing REL-11 + transportChannelReconfiguration-r10-add-ext + BIT STRING OPTIONAL, + v9c0NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v9c0ext + TransportChannelReconfiguration-v9c0ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-vb50ext + TransportChannelReconfiguration-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r11 SEQUENCE { + transportChannelReconfiguration-r11 + TransportChannelReconfiguration-r11-IEs, + -- Container for adding non critical extensions after + -- freezing REL-12 + transportChannelReconfiguration-r11-add-ext + BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } + } + } + } + } + } + } + } +} + +TransportChannelReconfiguration-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + -- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification, + -- they should not be sent and if received they should be ignored. + dummy CHOICE { + fdd SEQUENCE { + dummy1 CPCH-SetID OPTIONAL, + dummy2 DRAC-StaticInformationList OPTIONAL + }, + tdd NULL + } OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement OPTIONAL, + modeSpecificPhysChInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-CommonInformation DL-CommonInformation OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List OPTIONAL +} + +TransportChannelReconfiguration-v3a0ext ::= SEQUENCE { + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received + -- the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL +} + +TransportChannelReconfiguration-v4b0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SSDT-UL OPTIONAL, + -- The order of the RLs in IE cell-id-PerRL-List is the same as + -- in IE DL-InformationPerRL-List included in this message + cell-id-PerRL-List CellIdentity-PerRL-List OPTIONAL +} + +TransportChannelReconfiguration-v590ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-TPC-PowerOffsetPerRL-List DL-TPC-PowerOffsetPerRL-List OPTIONAL +} + +TransportChannelReconfiguration-r4-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received + -- the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + -- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification, + -- they should not be sent and if received they should be ignored. + dummy CHOICE { + fdd SEQUENCE { + dummy1 CPCH-SetID OPTIONAL, + dummy2 DRAC-StaticInformationList OPTIONAL + }, + tdd NULL + } OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r4 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement-r4 OPTIONAL, + modeSpecificPhysChInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-CommonInformation DL-CommonInformation-r4 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r4 OPTIONAL +} + +TransportChannelReconfiguration-r5-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received + -- the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + -- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification, + -- they should not be sent and if received they should be ignored. + dummy CHOICE { + fdd SEQUENCE { + dummy1 CPCH-SetID OPTIONAL, + dummy2 DRAC-StaticInformationList OPTIONAL + }, + tdd NULL + } OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r5 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement-r5 OPTIONAL, + modeSpecificPhysChInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-HSPDSCH-Information DL-HSPDSCH-Information OPTIONAL, + dl-CommonInformation DL-CommonInformation-r5 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r5 OPTIONAL +} + +TransportChannelReconfiguration-v690ext-IEs ::= SEQUENCE { + -- User Equipment IEs + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + -- Core network IEs + primary-plmn-Identity PLMN-Identity OPTIONAL, + -- Physical channel IEs + -- The IE harq-Preamble-Mode should not be used in the r3 and r4 versions of the message + -- If included in the r3 or r4 version of the message, the UE should ignore the IE + harq-Preamble-Mode HARQ-Preamble-Mode OPTIONAL, + beaconPLEst BEACON-PL-Est OPTIONAL, + postVerificationPeriod ENUMERATED { true } OPTIONAL, + dhs-sync DHS-Sync OPTIONAL, + timingMaintainedSynchInd TimingMaintainedSynchInd OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +TransportChannelReconfiguration-r6-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r6 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r5 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r6 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r6 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r6 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r6 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r6 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +TransportChannelReconfiguration-v6b0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-InformationPerRL-List-v6b0ext DL-InformationPerRL-List-v6b0ext OPTIONAL +} + +TransportChannelReconfiguration-r7-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + responseToChangeOfUE-Capability ENUMERATED { true } OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r7 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r7 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r7 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r7 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r7 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r7 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r7 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +TransportChannelReconfiguration-v770ext-IEs ::= SEQUENCE { + -- User equipment IEs + ueMobilityStateIndicator High-MobilityDetected OPTIONAL +} + +TransportChannelReconfiguration-v780ext-IEs ::= SEQUENCE { + -- Physical channel IEs + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL +} + +TransportChannelReconfiguration-v7d0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + ul-EDCH-Information UL-EDCH-Information-ext OPTIONAL +} + +TransportChannelReconfiguration-v7f0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + mimoParameters MIMO-Parameters-v7f0ext OPTIONAL +} + +TransportChannelReconfiguration-v7g0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + mimoParameters MIMO-Parameters-v7g0ext OPTIONAL +} + +TransportChannelReconfiguration-r8-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + responseToChangeOfUE-Capability ENUMERATED { true } OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r7 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r8 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r8 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r8 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +TransportChannelReconfiguration-v890ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-SecondaryCellInfoFDD-v890ext DL-SecondaryCellInfoFDD-v890ext OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8-ext OPTIONAL +} + +TransportChannelReconfiguration-v8a0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8-ext2 OPTIONAL +} + +TransportChannelReconfiguration-r9-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + responseToChangeOfUE-Capability ENUMERATED { true } OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r9 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r9 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r8 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r9 OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +TransportChannelReconfiguration-v950ext-IEs ::= SEQUENCE { + -- Physical channel IEs + secondaryCellMimoParameters SecondaryCellMIMOparametersFDD-v950ext OPTIONAL +} + +TransportChannelReconfiguration-v9c0ext-IEs ::= SEQUENCE { + -- For 1.28Mcps TDD only + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-TDD128-v9c0ext OPTIONAL +} + +TransportChannelReconfiguration-r10-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + responseToChangeOfUE-Capability ENUMERATED { true } OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r9 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r9 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + ul-MulticarrierEDCHInfo-TDD128 UL-MulticarrierEDCHInfo-TDD128 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r10 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r10 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + mu-MIMO-Info-TDD128 MU-MIMO-Info-TDD128 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +TransportChannelReconfiguration-vb50ext-IEs ::= SEQUENCE { + ulOLTDInfoFDD UL-OLTD-InfoFDD OPTIONAL +} + +TransportChannelReconfiguration-r11-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + responseToChangeOfUE-Capability ENUMERATED { true } OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r11 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + mimo4x4Parameters MIMO4x4-Parameters OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r11 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r11 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + ul-MulticarrierEDCHInfo-TDD128 UL-MulticarrierEDCHInfo-TDD128 OPTIONAL, + ul-CLTD-InfoFDD UL-CLTD-InfoFDD OPTIONAL, + ul-OLTD-InfoFDD UL-OLTD-InfoFDD OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r11 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r11 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r11 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD2 AdditionalDLSecCellInfoListFDD2 OPTIONAL, + commonERGCHInfoFDD CommonERGCHInfoFDD OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + mu-MIMO-Info-TDD128 MU-MIMO-Info-TDD128 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +-- *************************************************** +-- +-- TRANSPORT CHANNEL RECONFIGURATION COMPLETE +-- +-- *************************************************** + +TransportChannelReconfigurationComplete ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + ul-IntegProtActivationInfo IntegrityProtActivationInfo OPTIONAL, + -- TABULAR: UL-TimingAdvance is applicable for TDD mode only. + ul-TimingAdvance UL-TimingAdvance OPTIONAL, + -- Radio bearer IEs + count-C-ActivationTime ActivationTime OPTIONAL, + -- dummy is not used in this version of the specification and + -- it should be ignored by the receiver. + dummy RB-ActivationTimeInfoList OPTIONAL, + ul-CounterSynchronisationInfo UL-CounterSynchronisationInfo OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + transportChannelReconfigurationComplete-r3-add-ext BIT STRING OPTIONAL, + v770NonCriticalExtensions SEQUENCE { + transportChannelReconfigurationComplete-v770ext + TransportChannelReconfigurationComplete-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +TransportChannelReconfigurationComplete-v770ext-IEs ::= SEQUENCE { + -- TABULAR: EXT-UL-TimingAdvance is applicable for TDD mode only. + ext-UL-TimingAdvance EXT-UL-TimingAdvance OPTIONAL, + deferredMeasurementControlReading ENUMERATED { true } OPTIONAL +} + +-- *************************************************** +-- +-- TRANSPORT CHANNEL RECONFIGURATION FAILURE +-- +-- *************************************************** + +TransportChannelReconfigurationFailure ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + failureCause FailureCauseWithProtErr, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + transportChannelReconfigurationFailure-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +-- ********************************************************* +-- +-- TRANSPORT FORMAT COMBINATION CONTROL in AM or UM RLC mode +-- +-- ********************************************************* + +TransportFormatCombinationControl ::= SEQUENCE { + -- rrc-TransactionIdentifier is always included in this version of the specification + rrc-TransactionIdentifier RRC-TransactionIdentifier OPTIONAL, + modeSpecificInfo CHOICE { + fdd NULL, + tdd SEQUENCE { + tfcs-ID TFCS-Identity OPTIONAL + } + }, + dpch-TFCS-InUplink TFC-Subset, + activationTimeForTFCSubset ActivationTime OPTIONAL, + tfc-ControlDuration TFC-ControlDuration OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + transportFormatCombinationControl-r3-add-ext BIT STRING OPTIONAL, + v820NonCriticalExtensions SEQUENCE { + transportformatcombinationcontrol-v820ext + TransportFormatCombinationControl-v820ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +TransportFormatCombinationControl-v820ext-IEs ::= SEQUENCE { + -- Transport Format Combination Control IEs + ul-AMR-Rate UL-AMR-Rate OPTIONAL +} + +-- *************************************************** +-- +-- TRANSPORT FORMAT COMBINATION CONTROL FAILURE +-- +-- *************************************************** + +TransportFormatCombinationControlFailure ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + failureCause FailureCauseWithProtErr, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + transportFormatCombinationControlFailure-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +-- *************************************************** +-- +-- UE CAPABILITY ENQUIRY +-- +-- *************************************************** + +UECapabilityEnquiry ::= CHOICE { + r3 SEQUENCE { + ueCapabilityEnquiry-r3 UECapabilityEnquiry-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + ueCapabilityEnquiry-r3-add-ext BIT STRING OPTIONAL, + v4b0NonCriticalExtensions SEQUENCE { + ueCapabilityEnquiry-v4b0ext UECapabilityEnquiry-v4b0ext-IEs, + v590NonCriticalExtensions SEQUENCE { + ueCapabilityEnquiry-v590ext UECapabilityEnquiry-v590ext-IEs, + v770NonCriticalExtensions SEQUENCE { + ueCapabilityEnquiry-v770ext UECapabilityEnquiry-v770ext-IEs, + v860NonCriticalExtensions SEQUENCE { + ueCapabilityEnquiry-v860ext UECapabilityEnquiry-v860ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions SEQUENCE {} + } +} + +UECapabilityEnquiry-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + capabilityUpdateRequirement CapabilityUpdateRequirement +} + +UECapabilityEnquiry-v4b0ext-IEs ::= SEQUENCE { + capabilityUpdateRequirement-r4-ext CapabilityUpdateRequirement-r4-ext +} + +UECapabilityEnquiry-v590ext-IEs ::= SEQUENCE { + systemSpecificCapUpdateReq SystemSpecificCapUpdateReq-v590ext +} + +UECapabilityEnquiry-v770ext-IEs ::= SEQUENCE { + capabilityUpdateRequirement CapabilityUpdateRequirement-v770ext OPTIONAL +} + +UECapabilityEnquiry-v860ext-IEs ::= SEQUENCE { + capabilityUpdateRequirement CapabilityUpdateRequirement-v860ext OPTIONAL +} + +-- *************************************************** +-- +-- UE CAPABILITY INFORMATION +-- +-- *************************************************** + +UECapabilityInformation ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier OPTIONAL, + ue-RadioAccessCapability UE-RadioAccessCapability OPTIONAL, + -- Other IEs + ue-RATSpecificCapability InterRAT-UE-RadioAccessCapabilityList OPTIONAL, + v370NonCriticalExtensions SEQUENCE { + ueCapabilityInformation-v370ext UECapabilityInformation-v370ext, + v380NonCriticalExtensions SEQUENCE { + ueCapabilityInformation-v380ext UECapabilityInformation-v380ext-IEs, + v3a0NonCriticalExtensions SEQUENCE { + ueCapabilityInformation-v3a0ext UECapabilityInformation-v3a0ext-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + ueCapabilityInformation-r3-add-ext BIT STRING + (CONTAINING UECapabilityInformation-r3-add-ext-IEs) OPTIONAL, + -- Reserved for future non critical extension + v4b0NonCriticalExtensions SEQUENCE { + ueCapabilityInformation-v4b0ext UECapabilityInformation-v4b0ext, + v590NonCriticalExtensions SEQUENCE { + ueCapabilityInformation-v590ext UECapabilityInformation-v590ext, + v5c0NonCriticalExtensions SEQUENCE { + ueCapabilityInformation-v5c0ext + UECapabilityInformation-v5c0ext, + v690NonCriticalExtensions SEQUENCE { + ueCapabilityInformation-v690ext + UECapabilityInformation-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +UECapabilityInformation-v370ext ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v370ext UE-RadioAccessCapability-v370ext OPTIONAL +} + +UECapabilityInformation-v380ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v380ext UE-RadioAccessCapability-v380ext OPTIONAL, + dl-PhysChCapabilityFDD-v380ext DL-PhysChCapabilityFDD-v380ext +} + +UECapabilityInformation-v3a0ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v3a0ext UE-RadioAccessCapability-v3a0ext OPTIONAL +} + +UECapabilityInformation-r3-add-ext-IEs ::= SEQUENCE { + ueCapabilityInformation-v650ext UECapabilityInformation-v650ext-IEs OPTIONAL, + v680NonCriticalExtensions SEQUENCE { + ueCapabilityInformation-v680ext UECapabilityInformation-v680ext-IEs, + v7e0NonCriticalExtensions SEQUENCE { + ueCapabilityInformation-v7e0ext UECapabilityInformation-v7e0ext-IEs, + v7f0NonCriticalExtensions SEQUENCE { + ueCapabilityInformation-v7f0ext UECapabilityInformation-v7f0ext-IEs, + va40NonCriticalExtensions SEQUENCE { + ueCapabilityInformation-va40ext + UECapabilityInformation-va40ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +UECapabilityInformation-v4b0ext ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v4b0ext UE-RadioAccessCapability-v4b0ext OPTIONAL +} + +UECapabilityInformation-v590ext ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v3g0ext UE-RadioAccessCapability-v3g0ext OPTIONAL, + ue-RadioAccessCapability-v590ext UE-RadioAccessCapability-v590ext OPTIONAL, + -- Other IEs + ue-RATSpecificCapability-v590ext InterRAT-UE-RadioAccessCapability-v590ext OPTIONAL +} + +UECapabilityInformation-v5c0ext ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v5c0ext UE-RadioAccessCapability-v5c0ext OPTIONAL +} + +UECapabilityInformation-v650ext-IEs ::= SEQUENCE { + ue-RadioAccessCapability-v650ext UE-RadioAccessCapability-v650ext +} + +UECapabilityInformation-v680ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v680ext UE-RadioAccessCapability-v680ext +} + +UECapabilityInformation-v690ext-IEs ::= SEQUENCE { + -- User equipment IEs + ueCapabilityContainer BIT STRING + (CONTAINING UE-CapabilityContainer-IEs) OPTIONAL +} + +UECapabilityInformation-v7e0ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability UE-RadioAccessCapability-v7e0ext +} + +UECapabilityInformation-v7f0ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability UE-RadioAccessCapability-v7f0ext OPTIONAL +} + +UECapabilityInformation-va40ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapabBand UE-RadioAccessCapabBand-va40ext OPTIONAL +} + +-- *************************************************** +-- +-- UE CAPABILITY INFORMATION CONFIRM +-- +-- *************************************************** + +UECapabilityInformationConfirm ::= CHOICE { + r3 SEQUENCE { + ueCapabilityInformationConfirm-r3 + UECapabilityInformationConfirm-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + ueCapabilityInformationConfirm-r3-add-ext BIT STRING OPTIONAL, + v770NonCriticalExtensions SEQUENCE { + ueCapabilityInformationConfirm-v770ext UECapabilityInformationConfirm-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions SEQUENCE {} + } +} + +UECapabilityInformationConfirm-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier +} + +UECapabilityInformationConfirm-v770ext-IEs ::= SEQUENCE { + -- User equipment IEs + acceptanceOfChangeOfCapability ENUMERATED { + refused, accepted, acceptedWithReconfigurationToFollow + } OPTIONAL +} + +-- *************************************************** +-- +-- UPLINK DIRECT TRANSFER +-- +-- *************************************************** + +UplinkDirectTransfer ::= SEQUENCE { + -- Core network IEs + cn-DomainIdentity CN-DomainIdentity, + nas-Message NAS-Message, + -- Measurement IEs + measuredResultsOnRACH MeasuredResultsOnRACH OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + uplinkDirectTransfer-r3-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + uplinkDirectTransfer-v690ext UplinkDirectTransfer-v690ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + uplinkDirectTransfer-v7g0ext UplinkDirectTransfer-v7g0ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + uplinkDirectTransfer-vb50ext UplinkDirectTransfer-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +UplinkDirectTransfer-v690ext-IEs ::= SEQUENCE { + -- Measurement IEs + measuredResultsOnRACHinterFreq MeasuredResultsOnRACHinterFreq OPTIONAL +} + +UplinkDirectTransfer-v7g0ext-IEs ::= SEQUENCE { + -- Measurement IEs + measuredResultsOnRACH-v7g0ext MeasuredResultsOnRACH-v7g0ext OPTIONAL +} + +UplinkDirectTransfer-vb50ext-IEs ::= SEQUENCE { + -- Measurement IEs + measuredResultsOnRACHEUTRAFreq MeasuredResultsOnRACH-EUTRAFreq OPTIONAL +} + +-- *************************************************** +-- +-- UPLINK PHYSICAL CHANNEL CONTROL +-- +-- *************************************************** + +UplinkPhysicalChannelControl ::= CHOICE { + r3 SEQUENCE { + uplinkPhysicalChannelControl-r3 UplinkPhysicalChannelControl-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + uplinkPhysicalChannelControl-r3-add-ext BIT STRING OPTIONAL, + v4b0NonCriticalExtensions SEQUENCE { + uplinkPysicalChannelControl-v4b0ext UplinkPhysicalChannelControl-v4b0ext-IEs, + -- Extension mechanism for non-release 4 information + noncriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r4 SEQUENCE { + uplinkPhysicalChannelControl-r4 UplinkPhysicalChannelControl-r4-IEs, + v4d0NonCriticalExtensions SEQUENCE { + -- Container for adding non critical extensions after freezing REL-5 + uplinkPhysicalChannelControl-r4-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + uplinkPhysicalChannelControl-v690ext + UplinkPhysicalChannelControl-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r5 SEQUENCE { + uplinkPhysicalChannelControl-r5 UplinkPhysicalChannelControl-r5-IEs, + -- Container for adding non critical extensions after freezing REL-6 + uplinkPhysicalChannelControl-r5-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + uplinkPhysicalChannelControl-v690ext + UplinkPhysicalChannelControl-v690ext-IEs, + v6a0NonCriticalExtensions SEQUENCE{ + uplinkPhysicalChannelControl-v6a0ext + UplinkPhysicalChannelControl-v6a0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r7 SEQUENCE { + uplinkPhysicalChannelControl-r7 UplinkPhysicalChannelControl-r7-IEs, + -- Container for adding non critical extensions after freezing REL-8 + uplinkPhysicalChannelControl-r7-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } + } + } +} + +UplinkPhysicalChannelControl-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + -- Physical channel IEs + ccTrCH-PowerControlInfo CCTrCH-PowerControlInfo OPTIONAL, + timingAdvance UL-TimingAdvanceControl OPTIONAL, + alpha Alpha OPTIONAL, + specialBurstScheduling SpecialBurstScheduling OPTIONAL, + prach-ConstantValue ConstantValueTdd OPTIONAL, + pusch-ConstantValue ConstantValueTdd OPTIONAL +} + +UplinkPhysicalChannelControl-v4b0ext-IEs ::= SEQUENCE { + -- In case of TDD, openLoopPowerControl-IPDL-TDD is included instead of IE + -- up-IPDL-Parameters in up-OTDOA-AssistanceData + openLoopPowerControl-IPDL-TDD OpenLoopPowerControl-IPDL-TDD-r4 OPTIONAL +} + +UplinkPhysicalChannelControl-r4-IEs ::= SEQUENCE { + -- Physical channel IEs + ccTrCH-PowerControlInfo CCTrCH-PowerControlInfo-r4 OPTIONAL, + specialBurstScheduling SpecialBurstScheduling OPTIONAL, + tddOption CHOICE { + tdd384 SEQUENCE { + timingAdvance UL-TimingAdvanceControl-r4 OPTIONAL, + alpha Alpha OPTIONAL, + prach-ConstantValue ConstantValueTdd OPTIONAL, + pusch-ConstantValue ConstantValueTdd OPTIONAL, + openLoopPowerControl-IPDL-TDD OpenLoopPowerControl-IPDL-TDD-r4 OPTIONAL + }, + tdd128 SEQUENCE { + ul-SynchronisationParameters UL-SynchronisationParameters-r4 OPTIONAL + } + } +} + +UplinkPhysicalChannelControl-r5-IEs ::= SEQUENCE { + -- Physical channel IEs + ccTrCH-PowerControlInfo CCTrCH-PowerControlInfo-r5 OPTIONAL, + specialBurstScheduling SpecialBurstScheduling OPTIONAL, + tddOption CHOICE { + tdd384 SEQUENCE { + timingAdvance UL-TimingAdvanceControl-r4 OPTIONAL, + alpha Alpha OPTIONAL, + prach-ConstantValue ConstantValueTdd OPTIONAL, + pusch-ConstantValue ConstantValueTdd OPTIONAL, + openLoopPowerControl-IPDL-TDD OpenLoopPowerControl-IPDL-TDD-r4 OPTIONAL, + hs-SICH-PowerControl HS-SICH-Power-Control-Info-TDD384 OPTIONAL + }, + tdd128 SEQUENCE { + ul-SynchronisationParameters UL-SynchronisationParameters-r4 OPTIONAL + } + } +} + +UplinkPhysicalChannelControl-v690ext-IEs ::= SEQUENCE { + -- Physical Channel IEs + beaconPLEst BEACON-PL-Est OPTIONAL +} + +UplinkPhysicalChannelControl-v6a0ext-IEs ::= SEQUENCE { + -- Physical Channel IEs + desired-HS-SICH-PowerLevel INTEGER (-120..-58) OPTIONAL, + tpc-Step-Size ENUMERATED { s1, s2, s3 , spare1 } OPTIONAL +} + +UplinkPhysicalChannelControl-r7-IEs ::= SEQUENCE { + -- Physical channel IEs + ccTrCH-PowerControlInfo CCTrCH-PowerControlInfo-r7 OPTIONAL, + specialBurstScheduling SpecialBurstScheduling OPTIONAL, + tddOption CHOICE { + tdd384 SEQUENCE { + timingAdvance UL-TimingAdvanceControl-r4 OPTIONAL, + alpha Alpha OPTIONAL, + prach-ConstantValue ConstantValueTdd OPTIONAL, + pusch-ConstantValue ConstantValueTdd OPTIONAL, + openLoopPowerControl-IPDL-TDD OpenLoopPowerControl-IPDL-TDD-r4 OPTIONAL, + hs-SICH-PowerControl HS-SICH-Power-Control-Info-TDD384 OPTIONAL + }, + tdd768 SEQUENCE { + timingAdvance UL-TimingAdvanceControl-r7 OPTIONAL, + alpha Alpha OPTIONAL, + prach-ConstantValue ConstantValueTdd OPTIONAL, + pusch-ConstantValue ConstantValueTdd OPTIONAL, + openLoopPowerControl-IPDL-TDD OpenLoopPowerControl-IPDL-TDD-r4 OPTIONAL, + hs-SICH-PowerControl HS-SICH-Power-Control-Info-TDD768 OPTIONAL + }, + tdd128 SEQUENCE { + ul-SynchronisationParameters UL-SynchronisationParameters-r4 OPTIONAL, + desired-HS-SICH-PowerLevel INTEGER (-120..-58) OPTIONAL, + tpc-Step-Size ENUMERATED { s1, s2, s3 , spare1 } OPTIONAL + } + } +} + +-- *************************************************** +-- +-- URA UPDATE +-- +-- *************************************************** + +URAUpdate ::= SEQUENCE { + -- User equipment IEs + u-RNTI U-RNTI, + ura-UpdateCause URA-UpdateCause, + protocolErrorIndicator ProtocolErrorIndicatorWithMoreInfo, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + uraUpdate-r3-add-ext BIT STRING + (CONTAINING URAUpdate-r3-add-ext-IEs) OPTIONAL, + v770NonCriticalExtensions SEQUENCE { + uraUpdate-v770ext UraUpdate-v770ext-IEs, + v860NonCriticalExtensions SEQUENCE { + uraUpdate-v860ext URAUpdate-v860ext-IEs, + va40NonCriticalExtensions SEQUENCE { + uraUpdate-va40ext URAUpdate-va40ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +URAUpdate-r3-add-ext-IEs ::= SEQUENCE { + uraUpdate-v7e0ext URAUpdate-v7e0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +UraUpdate-v770ext-IEs ::= SEQUENCE { + -- User equipment IEs + support-hsdschReception-CellUraPch ENUMERATED { true } OPTIONAL, + support-hsdschReception-CellFach ENUMERATED { true } OPTIONAL +} + +URAUpdate-v7e0ext-IEs ::= SEQUENCE { + -- User equipment IEs + supportForTwoDRXSchemesInPCH ENUMERATED { true } OPTIONAL +} + +URAUpdate-v860ext-IEs ::= SEQUENCE { + -- User equipment IEs + supportOfHS-DSCHDRXOperation ENUMERATED { true } OPTIONAL, + supportOfCommonEDCH ENUMERATED { true } OPTIONAL, + supportOfMACiis ENUMERATED { true } OPTIONAL +} + +URAUpdate-va40ext-IEs ::= SEQUENCE { + loggedMeasAvailable ENUMERATED { true } OPTIONAL, + loggedANRResultsAvailable ENUMERATED { true } OPTIONAL +} + +-- *************************************************** +-- +-- URA UPDATE CONFIRM +-- +-- *************************************************** + +URAUpdateConfirm ::= CHOICE { + r3 SEQUENCE { + uraUpdateConfirm-r3 URAUpdateConfirm-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + uraUpdateConfirm-r3-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + uraUpdateConfirm-v690ext URAUpdateConfirm-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r5 SEQUENCE { + uraUpdateConfirm-r5 URAUpdateConfirm-r5-IEs, + v690NonCriticalExtensions SEQUENCE { + uraUpdateConfirm-v690ext URAUpdateConfirm-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r7 SEQUENCE { + uraUpdateConfirm-r7 URAUpdateConfirm-r7-IEs, + -- Container for adding non critical extensions after freezing REL-8 + uraUpdateConfirm-r7-add-ext BIT STRING OPTIONAL, + v860NonCriticalExtensions SEQUENCE { + uraUpdateConfirm-v860ext URAUpdateConfirm-v860ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } + } +} + +URAUpdateConfirm-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- CN information elements + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo OPTIONAL +} + +URAUpdateConfirm-r5-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- CN information elements + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL +} + +URAUpdateConfirm-v690ext-IEs ::= SEQUENCE { + -- Core network IEs + primary-plmn-Identity PLMN-Identity OPTIONAL +} + +URAUpdateConfirm-r7-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- CN information elements + cn-InformationInfo CN-InformationInfo OPTIONAL, + primary-plmn-Identity PLMN-Identity OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL +} + +URAUpdateConfirm-v860ext-IEs ::= SEQUENCE { + -- User equipment IEs + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + -- Specification mode information + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy DefaultConfigForCellFACH OPTIONAL +} + +-- *************************************************** +-- +-- URA UPDATE CONFIRM for CCCH +-- +-- *************************************************** + +URAUpdateConfirm-CCCH ::= CHOICE { + r3 SEQUENCE { + uraUpdateConfirm-CCCH-r3 URAUpdateConfirm-CCCH-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + uraUpdateConfirm-CCCH-r3-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + uraUpdateConfirm-v690ext URAUpdateConfirm-v690ext-IEs, + v860NonCriticalExtensions SEQUENCE { + uraUpdateConfirm-v860ext URAUpdateConfirm-v860ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + u-RNTI U-RNTI, + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions SEQUENCE {} + } +} + +URAUpdateConfirm-CCCH-r3-IEs ::= SEQUENCE { + -- User equipment IEs + u-RNTI U-RNTI, + -- The rest of the message is identical to the one sent on DCCH. + uraUpdateConfirm URAUpdateConfirm-r3-IEs +} + +-- *************************************************** +-- +-- UTRAN MOBILITY INFORMATION +-- +-- *************************************************** + +UTRANMobilityInformation ::= CHOICE { + r3 SEQUENCE { + utranMobilityInformation-r3 UTRANMobilityInformation-r3-IEs, + v3a0NonCriticalExtensions SEQUENCE { + utranMobilityInformation-v3a0ext UTRANMobilityInformation-v3a0ext-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + utranMobilityInformation-r3-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + utranMobilityInformation-v690ext UtranMobilityInformation-v690ext-IEs, + v860NonCriticalExtentions SEQUENCE { + utranMobilityInformation-v860ext UTRANMobilityInformation-v860ext1-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r5 SEQUENCE { + utranMobilityInformation-r5 UTRANMobilityInformation-r5-IEs, + v690NonCriticalExtensions SEQUENCE { + utranMobilityInformation-v690ext UtranMobilityInformation-v690ext-IEs, + v860NonCriticalExtentions SEQUENCE { + utranMobilityInformation-v860ext UTRANMobilityInformation-v860ext1-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r7 SEQUENCE{ + utranMobilityInformation-r7 UTRANMobilityInformation-r7-IEs, + -- Container for adding non critical extensions after freezing REL-8 + utranMobilityInformation-r7-add-ext BIT STRING OPTIONAL, + v860NonCriticalExtensions SEQUENCE { + utranMobilityInformation-v860ext UTRANMobilityInformation-v860ext2-IEs, + vb50NonCriticalExtentions SEQUENCE { + utranMobilityInformation-vb50ext + UTRANMobilityInformation-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r11 SEQUENCE{ + utranMobilityInformation-r11 UTRANMobilityInformation-r11-IEs, + -- Container for adding non critical extensions after freezing REL-12 + utranMobilityInformation-r11-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } + } + } +} + +UTRANMobilityInformation-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + ue-ConnTimersAndConstants UE-ConnTimersAndConstants OPTIONAL, + -- CN information elements + cn-InformationInfo CN-InformationInfoFull OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo OPTIONAL, + -- Extension mechanism for non- release99 information + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +UTRANMobilityInformation-v3a0ext-IEs ::= SEQUENCE { + ue-ConnTimersAndConstants-v3a0ext UE-ConnTimersAndConstants-v3a0ext +} + +UTRANMobilityInformation-r5-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + ue-ConnTimersAndConstants UE-ConnTimersAndConstants-r5 OPTIONAL, + -- CN information elements + cn-InformationInfo CN-InformationInfoFull OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL +} + +UtranMobilityInformation-v690ext-IEs ::= SEQUENCE { + -- Core network IEs + primary-plmn-Identity PLMN-Identity OPTIONAL +} + +UTRANMobilityInformation-r7-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + ue-ConnTimersAndConstants UE-ConnTimersAndConstants-r5 OPTIONAL, + -- CN information elements + cn-InformationInfo CN-InformationInfoFull OPTIONAL, + primary-plmn-Identity PLMN-Identity OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL +} + +UTRANMobilityInformation-v860ext1-IEs ::= SEQUENCE { + -- User equipment IEs + -- UE shall take into account the following ue-ConnTimersAndConstants + -- only when ue-ConnTimersAndConstants IE is present in + -- UTRANMobilityInformation-r3-IEs or UTRANMobilityInformation-r5-IEs. + -- Otherwise, UE shall discard it. + ue-ConnTimersAndConstants UE-ConnTimersAndConstants-v860ext +} + +UTRANMobilityInformation-v860ext2-IEs ::= SEQUENCE { + -- User equipment IEs + newPrimary-E-RNTI E-RNTI OPTIONAL, + -- UE shall take into account the following ue-ConnTimersAndConstants + -- only when ue-ConnTimersAndConstants IE is present in + -- UTRANMobilityInformation-r7-IEs. Otherwise, UE shall discard it. + ue-ConnTimersAndConstants UE-ConnTimersAndConstants-v860ext, + -- UTRAN Mobility IEs + dedicatedPriorityInformation DedicatedPriorityInformation OPTIONAL +} + +UTRANMobilityInformation-vb50ext-IEs ::= SEQUENCE { + -- UTRAN Mobility IEs + dedicatedPriorityInformation DedicatedPriorityInformation-r11 OPTIONAL +} + +UTRANMobilityInformation-r11-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + ue-ConnTimersAndConstants UE-ConnTimersAndConstants-r11 OPTIONAL, + -- CN information elements + cn-InformationInfo CN-InformationInfoFull OPTIONAL, + primary-plmn-Identity PLMN-Identity OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + dedicatedPriorityInformation DedicatedPriorityInformation-r11 OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL +} + +-- *************************************************** +-- +-- UTRAN MOBILITY INFORMATION CONFIRM +-- +-- *************************************************** + +UTRANMobilityInformationConfirm ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + ul-IntegProtActivationInfo IntegrityProtActivationInfo OPTIONAL, + -- Radio bearer IEs + count-C-ActivationTime ActivationTime OPTIONAL, + -- dummy is not used in this version of the specification and + -- it should be ignored by the receiver. + dummy RB-ActivationTimeInfoList OPTIONAL, + ul-CounterSynchronisationInfo UL-CounterSynchronisationInfo OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + utranMobilityInformationConfirm-r3-add-ext BIT STRING OPTIONAL, + v770NonCriticalExtension SEQUENCE { + utranMobilityInformationConfirm-v770ext + UTRANMobilityInformationConfirm-v770ext-IEs, + va40NonCriticalExtensions SEQUENCE { + utranMobilityInformationConfirm-va40ext + UTRANMobilityInformationConfirm-va40ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +UTRANMobilityInformationConfirm-v770ext-IEs ::= SEQUENCE { + deferredMeasurementControlReading ENUMERATED { true } OPTIONAL +} + +UTRANMobilityInformationConfirm-va40ext-IEs ::= SEQUENCE { + loggedMeasAvailable ENUMERATED { true } OPTIONAL +} + +-- *************************************************** +-- +-- UTRAN MOBILITY INFORMATION FAILURE +-- +-- *************************************************** + +UTRANMobilityInformationFailure ::= SEQUENCE { + -- UE information elements + rrc-TransactionIdentifier RRC-TransactionIdentifier, + failureCause FailureCauseWithProtErr, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + utranMobilityInformationFailure-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +-- *************************************************** +-- +-- MBMS ACCESS INFORMATION +-- +-- *************************************************** + +MBMSAccessInformation ::= SEQUENCE { + -- Access Information IEs + mbms-ServiceAccessInfoList MBMS-ServiceAccessInfoList-r6, + -- Non critical extensions + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +-- *************************************************** +-- +-- MBMS COMMON PTM RB INFORMATION +-- +-- *************************************************** + +MBMSCommonPTMRBInformation ::= SEQUENCE { + -- Common PTM RB Information IEs + mbms-CommonRBInformationList MBMS-CommonRBInformationList-r6, + mbms-TranspChInfoForEachTrCh MBMS-TranspChInfoForEachTrCh-r6, + mbms-TranspChInfoForEachCCTrCh MBMS-TranspChInfoForEachCCTrCh-r6 OPTIONAL, + -- For FDD and TDD 3.84Mcps in a cell operating in MBSFN only mode and for TDD 7.68Mcps the + -- IE mbms-PhyChInformationList shall be ignored. + mbms-PhyChInformationList MBMS-PhyChInformationList-r6, + -- Non critical extensions + v770NonCriticalExtensions SEQUENCE { + mbmsCommonPTMRBInformation-v770ext + MBMSCommonPTMRBInformation-v770ext-IEs, + v780NonCriticalExtensions SEQUENCE { + mbmsCommonPTMRBInformation-v780ext + MBMSCommonPTMRBInformation-v780ext-IEs, + v860NonCriticalExtensions SEQUENCE { + mbmsCommonPTMRBInformation-v860ext + MBMSCommonPTMRBInformation-v860ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +MBMSCommonPTMRBInformation-v770ext-IEs ::= SEQUENCE { + -- TABULAR: CHOICE mode == "FDD or TDD" + mbms-PhyChInformationList-r7 MBMS-PhyChInformationList-r7 OPTIONAL +} + +MBMSCommonPTMRBInformation-v780ext-IEs ::= SEQUENCE { + mbsfn-TDDInformation-LCR MBSFN-TDDInformation-LCR OPTIONAL +} + +MBMSCommonPTMRBInformation-v860ext-IEs ::= SEQUENCE { + -- TABULAR: CHOICE mode == "3.84 Mcps TDD IMB" + mbms-PhyChInformationList MBMS-PhyChInformationList-IMB384 OPTIONAL +} + +-- *************************************************** +-- +-- MBMS CURRENT CELL PTM RB INFORMATION +-- +-- *************************************************** + +MBMSCurrentCellPTMRBInformation ::= SEQUENCE { + -- Current Cell PTM RB Information IEs + mbms-CurrentCell-SCCPCHList MBMS-CurrentCell-SCCPCHList-r6 OPTIONAL, + mbms-SIBType5-SCCPCHList MBMS-SIBType5-SCCPCHList-r6 OPTIONAL, + -- Non critical extensions + v770NonCriticalExtensions SEQUENCE { + mbmsCurrentCellPTMRBInfo-v770ext + MBMSCurrentCellPTMRBInfo-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +MBMSCurrentCellPTMRBInfo-v770ext-IEs ::= SEQUENCE { + mbsfn-TDM-Info-List MBSFN-TDM-Info-List OPTIONAL +} + +-- *************************************************** +-- +-- MBMS GENERAL INFORMATION +-- +-- *************************************************** + +MBMSGeneralInformation ::= SEQUENCE { + -- MBMS General Information IEs + mbms-PreferredFrequencyInfo MBMS-PreferredFrequencyList-r6 OPTIONAL, + mbms-TimersAndCounters MBMS-TimersAndCounters-r6, + michConfigurationInfo MBMS-MICHConfigurationInfo-r6, + cellGroupIdentity MBMS-CellGroupIdentity-r6, + mschDefaultConfigurationInfo MBMS-MSCH-ConfigurationInfo-r6 OPTIONAL, + -- Non critical extensions + v6b0NonCriticalExtensions SEQUENCE { + mbmsGeneralInformation-v6b0ext MBMSGeneralInformation-v6b0ext-IEs, + v770NonCriticalExtensions SEQUENCE { + mbmsGeneralInformation-v770ext MBMSGeneralInformation-v770ext-IEs, + v860NonCriticalExtensions SEQUENCE { + mbmsGeneralInformation-v860ext MBMSGeneralInformation-v860ext-IEs, + v890NoncriticalExtensions SEQUENCE { + mbmsGeneralInformation-v890ext MBMSGeneralInformation-v890ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +MBMSGeneralInformation-v6b0ext-IEs ::= SEQUENCE { + indicateChangeInSelectedServices BOOLEAN +} + +MBMSGeneralInformation-v770ext-IEs ::= SEQUENCE { + mbmsMICHConfiguration MBMS-MICHConfigurationInfo-v770ext OPTIONAL, + mbsfnInterFrequencyNeighbourList + MBSFN-InterFrequencyNeighbourList-r7 OPTIONAL +} + +MBMSGeneralInformation-v860ext-IEs ::= SEQUENCE { + mbsfnInterFrequencyNeighbourList + MBSFN-InterFrequencyNeighbourList-v860ext OPTIONAL +} + +MBMSGeneralInformation-v890ext-IEs ::= SEQUENCE { + mbmsNetworkStandardTimeInformation-LCR + MBMS-NetworkStandardTimeInformation-LCR-v890ext OPTIONAL, + mbmsMICHConfiguration MBMS-MICHConfigurationInfo-v890ext OPTIONAL +} + +-- *************************************************** +-- +-- MBMS MODIFICATION REQUEST +-- +-- *************************************************** + +MBMSModificationRequest ::= SEQUENCE { + -- MBMS Modification Request IEs + mbms-PreferredFreqRequest MBMS-ServiceIdentity-r6 OPTIONAL, + rb-InformationReleaseList RB-InformationReleaseList OPTIONAL, + -- Non critical extensions + v6b0NonCriticalExtensions SEQUENCE { + mbmsModificationRequest-v6b0ext MBMSModificationRequest-v6b0ext-IEs, + v6f0NonCriticalExtensions SEQUENCE { + mbmsModificationRequest-v6f0ext MBMSModificationRequest-v6f0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +MBMSModificationRequest-v6b0ext-IEs ::= SEQUENCE { + mbmsSelectedServiceInfo MBMS-SelectedServiceInfo +} + +MBMSModificationRequest-v6f0ext-IEs ::= SEQUENCE { + mbmsSupportOfServiceChangeForAPtpRB ENUMERATED { true } OPTIONAL +} + +-- *************************************************** +-- +-- MBMS MODIFIED SERVICES INFORMATION +-- +-- *************************************************** + +MBMSModifiedServicesInformation ::= SEQUENCE { + -- MBMS Modified Services Information IEs + modifedServiceList MBMS-ModifedServiceList-r6 OPTIONAL, + mbms-ReacquireMCCH ENUMERATED { true } OPTIONAL, + mbms-DynamicPersistenceLevel DynamicPersistenceLevel OPTIONAL, + endOfModifiedMCCHInformation INTEGER (1..16) OPTIONAL, + mbmsNumberOfNeighbourCells MBMS-NumberOfNeighbourCells-r6, + mbms-AllUnmodifiedPTMServices ENUMERATED { true } OPTIONAL, + mbms-PTMActivationTime MBMS-PTMActivationTime-r6 OPTIONAL, + -- Non critical extensions + v770NonCriticalExtensions SEQUENCE { + mbmsModifiedServicesInformation-v770ext + MBMSModifiedServicesInformation-v770ext-IEs, + v7c0NonCriticalExtensions SEQUENCE { + mbmsModifiedServicesInformation-v7c0ext + MBMSModifiedServicesInformation-v7c0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +MBMSModifiedServicesInformation-v770ext-IEs ::= SEQUENCE { + modifiedServiceList MBMS-ModifiedServiceList-v770ext OPTIONAL, + mib-ValueTag MIB-ValueTag OPTIONAL +} + +MBMSModifiedServicesInformation-v7c0ext-IEs ::= SEQUENCE { + modifiedServiceList MBMS-ModifiedServiceList-LCR-v7c0ext OPTIONAL +} + +-- *************************************************** +-- +-- MBMS NEIGHBOURING CELL PTM RB INFORMATION +-- +-- *************************************************** + +MBMSNeighbouringCellPTMRBInformation ::= SEQUENCE { + -- MBMS Neighbouring Cell PTM RB Information IEs + neighbouringCellIdentity IntraFreqCellID, + neighbouringCellSCCPCHList MBMS-NeighbouringCellSCCPCHList-r6, + -- Non critical extensions + v770NonCriticalExtensions SEQUENCE { + mbmsNeighbouringCellPTMRBInformation-v770ext + MBMSNeighbouringCellPTMRBInformation-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +MBMSNeighbouringCellPTMRBInformation-v770ext-IEs ::= SEQUENCE { + -- The "choice_PhyCH" in the tabular is realized by using the following IE due to the + -- constraint in the ASN.1 implementation. + neighbouringCellSCCPCHList MBMS-NeighbouringCellSCCPCHList-v770ext OPTIONAL +} + + +-- *************************************************** +-- +-- MBMS SCHEDULING INFORMATION +-- +-- *************************************************** + +MBMSSchedulingInformation ::= SEQUENCE { + -- MBMS Scheduling Information IEs + serviceSchedulingInfoList MBMS-ServiceSchedulingInfoList-r6, + -- Non critical extensions + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +-- *************************************************** +-- +-- MBMS UNMODIFIED SERVICES INFORMATION +-- +-- *************************************************** + +MBMSUnmodifiedServicesInformation ::= SEQUENCE { + -- MBMS Unmodified Services Information IEs + unmodifiedServiceList MBMS-UnmodifiedServiceList-r6 OPTIONAL, + -- Non critical extensions + v770NonCriticalExtensions SEQUENCE { + mbmsUnmodifiedServicesInformation-v770ext + MBMSUnmodifiedServicesInformation-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +MBMSUnmodifiedServicesInformation-v770ext-IEs ::= SEQUENCE { + unmodifiedServiceList MBMS-UnmodifiedServiceList-v770ext OPTIONAL +} + +-- *************************************************** +-- +-- System Information Container +-- +-- *************************************************** + +System-Information-Container ::= SEQUENCE { + mib OCTET STRING (CONTAINING MasterInformationBlock), + sysInfoTypeSB1 OCTET STRING (CONTAINING SysInfoTypeSB1) OPTIONAL, + sysInfoTypeSB2 OCTET STRING (CONTAINING SysInfoTypeSB2) OPTIONAL, + sysInfoType1 OCTET STRING (CONTAINING SysInfoType1), + sysInfoType3 OCTET STRING (CONTAINING SysInfoType3), + sysInfoType5 OCTET STRING (CONTAINING SysInfoType5), + sysInfoType7 OCTET STRING (CONTAINING SysInfoType7), + sysInfoType11 OCTET STRING (CONTAINING SysInfoType11) OPTIONAL, + sysInfoType11bis OCTET STRING (CONTAINING SysInfoType11bis) OPTIONAL, + sysInfoType12 OCTET STRING (CONTAINING SysInfoType12) OPTIONAL, + vb50NonCriticalExtensions SEQUENCE { + system-Information-Container-vb50ext System-Information-Container-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +System-Information-Container-vb50ext-IEs ::= SEQUENCE { + sysInfoType22 OCTET STRING (CONTAINING SysInfoType22) OPTIONAL +} + +-- *************************************************** +-- +-- LOGGING MEASUREMENT CONFIGURATION +-- +-- *************************************************** + +LoggingMeasurementConfiguration ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r10 SEQUENCE { + loggingMeasurementConfiguration-r10-IEs LoggingMeasurementConfiguration-r10-IEs, + -- Container for additional R10 extensions + loggingMeasurementConfiguration-r10-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions CHOICE { + r11 SEQUENCE { + loggingMeasurementConfiguration-r11-IEs LoggingMeasurementConfiguration-r11-IEs, + loggingMeasurementConfiguration-r11-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } +} + +LoggingMeasurementConfiguration-r10-IEs ::= SEQUENCE { + loggedMeasurementsConfigurationInfo LoggedMeasurementsConfigurationInfo OPTIONAL, + loggedANRConfigurationInfo LoggedANRConfigurationInfo OPTIONAL +} + +LoggingMeasurementConfiguration-r11-IEs ::= SEQUENCE { + loggedMeasurementsConfigurationInfo LoggedMeasurementsConfigurationInfo-r11 OPTIONAL, + loggedANRConfigurationInfo LoggedANRConfigurationInfo OPTIONAL +} + +-- *************************************************** +-- +-- UE INFORMATION RESPONSE +-- +-- *************************************************** + +UEInformationResponse ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + loggedMeasReport LoggedMeasReport OPTIONAL, + loggedANRReportInfoList LoggedANRReportInfoList OPTIONAL, + vb50NonCriticalExtensions SEQUENCE { + ueInformationResponse-vb50ext UEInformationResponse-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +UEInformationResponse-vb50ext-IEs ::= SEQUENCE { + loggedMeasReport LoggedMeasReport-vb50ext OPTIONAL, + connectionEstablishmentFailureReport + ConnectionEstablishmentFailureReport OPTIONAL, + loggedANRReportInfoList LoggedANRReportInfoList-vb50ext OPTIONAL +} + +-- *************************************************** +-- +-- UE INFORMATION REQUEST +-- +-- *************************************************** + +UEInformationRequest ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r10 SEQUENCE { + ueInformationRequest-r10 UEInformationRequest-r10-IEs, + -- Container for additional R10 extensions + ueInformationRequest-r10-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions CHOICE { + r11 SEQUENCE { + ueInformationRequest-r11 UEInformationRequest-r11-IEs, + -- Container for additional R11 extensions + ueInformationRequest-r11-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } +} + +UEInformationRequest-r10-IEs ::= SEQUENCE { + loggedMeasReportRequest ENUMERATED { true } OPTIONAL, + loggedANRReportRequest ENUMERATED { true } OPTIONAL +} + +UEInformationRequest-r11-IEs ::= SEQUENCE { + loggedMeasReportRequest ENUMERATED { true } OPTIONAL, + loggedANRReportRequest ENUMERATED { true } OPTIONAL, + connectionEstablishmentFailureRequest ENUMERATED { true } OPTIONAL +} + +-- *************************************************** +-- +-- CORE NETWORK INFORMATION ELEMENTS (10.3.1) +-- +-- *************************************************** + +Ansi-41-IDNNS ::= BIT STRING (SIZE (14)) + +CN-DomainIdentity ::= ENUMERATED { + cs-domain, + ps-domain } + +CN-DomainInformation ::= SEQUENCE { + cn-DomainIdentity CN-DomainIdentity, + cn-DomainSpecificNAS-Info NAS-SystemInformationGSM-MAP +} + +CN-DomainInformationFull ::= SEQUENCE { + cn-DomainIdentity CN-DomainIdentity, + cn-DomainSpecificNAS-Info NAS-SystemInformationGSM-MAP, + cn-DRX-CycleLengthCoeff CN-DRX-CycleLengthCoefficient +} + +CN-DomainInformationList ::= SEQUENCE (SIZE (1..maxCNdomains)) OF + CN-DomainInformation + +CN-DomainInformationListFull ::= SEQUENCE (SIZE (1..maxCNdomains)) OF + CN-DomainInformationFull + +CN-DomainSysInfo ::= SEQUENCE { + cn-DomainIdentity CN-DomainIdentity, + cn-Type CHOICE { + gsm-MAP NAS-SystemInformationGSM-MAP, + ansi-41 NAS-SystemInformationANSI-41 + }, + cn-DRX-CycleLengthCoeff CN-DRX-CycleLengthCoefficient +} + +CN-DomainSysInfoList ::= SEQUENCE (SIZE (1..maxCNdomains)) OF + CN-DomainSysInfo + +CN-InformationInfo ::= SEQUENCE { + plmn-Identity PLMN-Identity OPTIONAL, + cn-CommonGSM-MAP-NAS-SysInfo NAS-SystemInformationGSM-MAP OPTIONAL, + cn-DomainInformationList CN-DomainInformationList OPTIONAL +} + +CN-InformationInfo-r6 ::= SEQUENCE { + plmn-Identity PLMN-Identity OPTIONAL, + cn-CommonGSM-MAP-NAS-SysInfo NAS-SystemInformationGSM-MAP OPTIONAL, + cn-DomainInformationList CN-DomainInformationList OPTIONAL, + primary-plmn-Identity PLMN-Identity OPTIONAL +} + +CN-InformationInfoFull ::= SEQUENCE { + plmn-Identity PLMN-Identity OPTIONAL, + cn-CommonGSM-MAP-NAS-SysInfo NAS-SystemInformationGSM-MAP OPTIONAL, + cn-DomainInformationListFull CN-DomainInformationListFull OPTIONAL +} + +Digit ::= INTEGER (0..9) + +DomainSpecificEAB-Parameters ::= SEQUENCE { + cs-DomainSpecificEAB-Parameters EAB-Configuration OPTIONAL, + ps-DomainSpecificEAB-Parameters EAB-Configuration OPTIONAL, + commonEAB-Parameters EAB-Configuration OPTIONAL +} + +EAB-AccessClassBarredList ::= SEQUENCE (SIZE (10)) OF + AccessClassBarred + +EAB-Configuration ::= SEQUENCE { + eab-Category ENUMERATED {a,b,c}, + eab-AccessClassBarredList EAB-AccessClassBarredList +} + +EAB-Parameters ::= CHOICE { + eab-ParametersPerPLMN-List EAB-ParametersPerPLMN-List, + eab-ParametersForAll DomainSpecificEAB-Parameters +} + +EAB-ParametersPerPLMN ::= SEQUENCE { + domainSpecificEAB-Parameters DomainSpecificEAB-Parameters OPTIONAL +} + +EAB-ParametersPerPLMN-List ::= SEQUENCE (SIZE (1..6)) OF EAB-ParametersPerPLMN + +Ec-N0forANR ::= SEQUENCE { + ec-N0 INTEGER (-24..0) OPTIONAL +} + +Gsm-map-IDNNS ::= SEQUENCE { + routingbasis CHOICE { + localPTMSI SEQUENCE { + routingparameter RoutingParameter + }, + tMSIofsamePLMN SEQUENCE { + routingparameter RoutingParameter + }, + tMSIofdifferentPLMN SEQUENCE { + routingparameter RoutingParameter + }, + iMSIresponsetopaging SEQUENCE { + routingparameter RoutingParameter + }, + iMSIcauseUEinitiatedEvent SEQUENCE { + routingparameter RoutingParameter + }, + iMEI SEQUENCE { + routingparameter RoutingParameter + }, + spare2 SEQUENCE { + routingparameter RoutingParameter + }, + spare1 SEQUENCE { + routingparameter RoutingParameter + } + }, + -- dummy is not used in this version of the specification and + -- it should be ignored by the receiver. + dummy BOOLEAN +} + +IMEI ::= SEQUENCE (SIZE (15)) OF + IMEI-Digit + +IMEI-Digit ::= INTEGER (0..15) + +IMSI-GSM-MAP ::= SEQUENCE (SIZE (6..21)) OF + Digit + +IntraDomainNasNodeSelector ::= SEQUENCE { + version CHOICE { + release99 SEQUENCE { + cn-Type CHOICE { + gsm-Map-IDNNS Gsm-map-IDNNS, + ansi-41-IDNNS Ansi-41-IDNNS + } + }, + later SEQUENCE { + futurecoding BIT STRING (SIZE (15)) + } + } +} + +LAI ::= SEQUENCE { + plmn-Identity PLMN-Identity, + lac BIT STRING (SIZE (16)) +} + +LocationRegistrationAccessClassBarredList ::= SEQUENCE (SIZE (15)) OF + AccessClassBarred + +LocationRegistrationParameters ::= CHOICE { + noRestriction NULL, + restriction LocationRegistrationAccessClassBarredList +} + +MCC ::= SEQUENCE (SIZE (3)) OF + Digit + +MNC ::= SEQUENCE (SIZE (2..3)) OF + Digit + +MultiplePLMN-List-r6 ::= SEQUENCE { + mibPLMN-Identity BOOLEAN, + multiplePLMNs SEQUENCE (SIZE (1..5)) OF + PLMN-IdentityWithOptionalMCC-r6 +} + +NAS-Message ::= OCTET STRING (SIZE (1..4095)) + +NAS-Synchronisation-Indicator ::= BIT STRING(SIZE(4)) + +NAS-SystemInformationGSM-MAP ::= OCTET STRING (SIZE (1..8)) + +P-TMSI-GSM-MAP ::= BIT STRING (SIZE (32)) + +PagingPermissionWithAccessControlForSharedNetwork ::= CHOICE { + pagingPermissionWithAccessControlList PagingPermissionWithAccessControlList, + pagingPermissionWithAccessControlForAll PagingPermissionWithAccessControlParameters +} + +PagingPermissionWithAccessControlList ::= SEQUENCE { + pagingPermissionWithAccessControlParametersForOperator1 + PagingPermissionWithAccessControlParameters OPTIONAL, + pagingPermissionWithAccessControlParametersForOperator2 + PagingPermissionWithAccessControlParameters OPTIONAL, + pagingPermissionWithAccessControlParametersForOperator3 + PagingPermissionWithAccessControlParameters OPTIONAL, + pagingPermissionWithAccessControlParametersForOperator4 + PagingPermissionWithAccessControlParameters OPTIONAL, + pagingPermissionWithAccessControlParametersForOperator5 + PagingPermissionWithAccessControlParameters OPTIONAL +} + +PagingPermissionWithAccessControlParameters ::= SEQUENCE { + pagingResponseRestrictionIndicator ENUMERATED {all, cS, pS, none}, + locationRegistrationRestrictionIndicator ENUMERATED {all, cS, pS}, + locationRegistration LocationRegistrationParameters +} + +PagingRecordTypeID ::= ENUMERATED { + imsi-GSM-MAP, + tmsi-GSM-MAP-P-TMSI, + imsi-DS-41, + tmsi-DS-41 } + +PLMN-Identity ::= SEQUENCE { + mcc MCC, + mnc MNC +} + +PLMN-IdentityWithOptionalMCC-r6 ::= SEQUENCE { + mcc MCC OPTIONAL, + mnc MNC +} + +PLMN-Type ::= CHOICE { + gsm-MAP SEQUENCE { + plmn-Identity PLMN-Identity + }, + ansi-41 SEQUENCE { + p-REV P-REV, + min-P-REV Min-P-REV, + sid SID, + nid NID + }, + gsm-MAP-and-ANSI-41 SEQUENCE { + plmn-Identity PLMN-Identity, + p-REV P-REV, + min-P-REV Min-P-REV, + sid SID, + nid NID + }, + spare NULL +} + +RAB-Identity ::= CHOICE { + gsm-MAP-RAB-Identity BIT STRING (SIZE (8)), + ansi-41-RAB-Identity BIT STRING (SIZE (8)) +} + +RAI ::= SEQUENCE { + lai LAI, + rac RoutingAreaCode +} + +RoutingAreaCode ::= BIT STRING (SIZE (8)) + +RoutingParameter ::= BIT STRING (SIZE (10)) + +TMSI-GSM-MAP ::= BIT STRING (SIZE (32)) + +-- *************************************************** +-- +-- UTRAN MOBILITY INFORMATION ELEMENTS (10.3.2) +-- +-- *************************************************** + +AccessClassBarred ::= ENUMERATED { + barred, notBarred } + +AccessClassBarredList ::= SEQUENCE (SIZE (maxAC)) OF + AccessClassBarred + +AllowedIndicator ::= ENUMERATED { + allowed, notAllowed } + +CellAccessRestriction ::= SEQUENCE { + cellBarred CellBarred, + cellReservedForOperatorUse ReservedIndicator, + cellReservationExtension ReservedIndicator, + -- NOTE: IE accessClassBarredList should not be included if the IE CellAccessRestriction + -- is included in the IE SysInfoType4 + accessClassBarredList AccessClassBarredList OPTIONAL +} + +CellAccessRestriction-v870ext ::= SEQUENCE { + cellReservedForCSG ENUMERATED { true } OPTIONAL +} + +CellBarred ::= CHOICE { + barred SEQUENCE { + intraFreqCellReselectionInd AllowedIndicator, + t-Barred T-Barred + }, + notBarred NULL +} + +CellIdentity ::= BIT STRING (SIZE (28)) + +CellIdentity-PerRL-List ::= SEQUENCE (SIZE (1..maxRL)) OF CellIdentity + +CellIDListItem ::= SEQUENCE { + cell-Identity CellIdentity, + plmn-Identity PLMN-Identity OPTIONAL +} + +CellSelectReselectInfoSIB-3-4 ::= SEQUENCE { + mappingInfo MappingInfo OPTIONAL, + cellSelectQualityMeasure CHOICE { + cpich-Ec-N0 SEQUENCE { + -- Default value for q-HYST-2-S is q-HYST-1-S + q-HYST-2-S Q-Hyst-S OPTIONAL + }, + cpich-RSCP NULL + }, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + s-Intrasearch S-SearchQual OPTIONAL, + s-Intersearch S-SearchQual OPTIONAL, + s-SearchHCS S-SearchRXLEV OPTIONAL, + rat-List RAT-FDD-InfoList OPTIONAL, + q-QualMin Q-QualMin, + q-RxlevMin Q-RxlevMin + }, + tdd SEQUENCE { + s-Intrasearch S-SearchRXLEV OPTIONAL, + s-Intersearch S-SearchRXLEV OPTIONAL, + s-SearchHCS S-SearchRXLEV OPTIONAL, + rat-List RAT-TDD-InfoList OPTIONAL, + q-RxlevMin Q-RxlevMin + } + }, + q-Hyst-l-S Q-Hyst-S, + t-Reselection-S T-Reselection-S, + hcs-ServingCellInformation HCS-ServingCellInformation OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power +} + +CSG-DedicatedFrequencyInfoList ::= SEQUENCE (SIZE (1..maxDedicatedCSGFreq)) OF + FrequencyInfo + +CSG-Identity ::= BIT STRING (SIZE (27)) + +CSG-PSCSplitInfo ::= SEQUENCE { + -- Actual value = IE value * 8 + startPSC INTEGER (0..63), + numberOfPSCs ENUMERATED { psc5, psc10, psc15, psc20, + psc30, psc40, psc50, psc64, psc80, + psc120, psc160, psc256, alltheRest, + spare3, spare2, spare1 }, + -- Actual value = IE value * 8 + pscRange2Offset INTEGER (1..63) OPTIONAL +} + +DomainSpecificAccessRestrictionForSharedNetwork-v670ext ::= CHOICE { + domainSpecificAccessRestictionList DomainSpecificAccessRestrictionList-v670ext, + domainSpecificAccessRestictionParametersForAll + DomainSpecificAccessRestrictionParam-v670ext +} + +DomainSpecificAccessRestrictionList-v670ext ::= SEQUENCE { + domainSpecificAccessRestrictionParametersForOperator1 + DomainSpecificAccessRestrictionParam-v670ext OPTIONAL, + domainSpecificAccessRestrictionParametersForOperator2 + DomainSpecificAccessRestrictionParam-v670ext OPTIONAL, + domainSpecificAccessRestrictionParametersForOperator3 + DomainSpecificAccessRestrictionParam-v670ext OPTIONAL, + domainSpecificAccessRestrictionParametersForOperator4 + DomainSpecificAccessRestrictionParam-v670ext OPTIONAL, + domainSpecificAccessRestrictionParametersForOperator5 + DomainSpecificAccessRestrictionParam-v670ext OPTIONAL +} + +DomainSpecificAccessRestrictionParam-v670ext ::= SEQUENCE { + cSDomainSpecificAccessRestriction DomainSpecificAccessRestriction-v670ext, + pSDomainSpecificAccessRestriction DomainSpecificAccessRestriction-v670ext +} + +DomainSpecificAccessRestriction-v670ext ::= CHOICE { + noRestriction NULL, + restriction SEQUENCE { + domainSpecficAccessClassBarredList AccessClassBarredList OPTIONAL + } +} + +MapParameter ::= INTEGER (0..127) + +Mapping ::= SEQUENCE { + rat RAT, + mappingFunctionParameterList MappingFunctionParameterList +} + +Mapping-LCR-r4 ::= SEQUENCE { + mappingFunctionParameterList MappingFunctionParameterList +} + +MappingFunctionParameter ::= SEQUENCE { + functionType MappingFunctionType, + mapParameter1 MapParameter OPTIONAL, + mapParameter2 MapParameter, + -- The presence of upperLimit is conditional on the number of repetition + upperLimit UpperLimit OPTIONAL +} + +MappingFunctionParameterList ::= SEQUENCE (SIZE (1..maxMeasIntervals)) OF + MappingFunctionParameter + +MappingFunctionType ::= ENUMERATED { + linear, + functionType2, + functionType3, + functionType4 } + +-- In MappingInfo list, mapping for FDD and 3.84Mcps TDD is defined. +-- For 1.28Mcps TDD, Mapping-LCR-r4 is used instead. +MappingInfo ::= SEQUENCE (SIZE (1..maxRAT)) OF + Mapping + +OccurrenceSequenceNumberOfPICH ::= INTEGER (1..maxSCCPCH) + +DedicatedPriorityInformation ::= SEQUENCE { + action CHOICE { + clearDedicatedPriorities NULL, + configureDedicatedPriorities SEQUENCE { + t-322 T-322 OPTIONAL, + priorityLevelList PriorityLevelList OPTIONAL, + eutraDetection BOOLEAN + } + } +} + +DedicatedPriorityInformation-r11 ::= SEQUENCE { + action CHOICE { + clearDedicatedPriorities NULL, + configureDedicatedPriorities SEQUENCE { + t-322 T-322 OPTIONAL, + priorityLevelList PriorityLevelList-r11 OPTIONAL, + eutraDetection BOOLEAN + } + } +} + +PriorityLevel ::= SEQUENCE { + priority INTEGER (0..maxPrio-1) OPTIONAL, + radioAccessTechnology CHOICE { + utraFDD SEQUENCE (SIZE (1..maxNumFDDFreqs)) OF SEQUENCE{ + uarfcn UARFCN + }, + utraTDD SEQUENCE (SIZE (1..maxNumTDDFreqs)) OF SEQUENCE{ + uarfcn UARFCN + }, + eutra SEQUENCE (SIZE (1..maxNumEUTRAFreqs)) OF SEQUENCE{ + earfcn EARFCN + }, + gsm SEQUENCE { + gsm-CellGroup GSM-CellGroup + } + } +} + +PriorityLevel-r11 ::= SEQUENCE { + priority INTEGER (0..maxPrio-1) OPTIONAL, + radioAccessTechnology CHOICE { + utraFDD SEQUENCE (SIZE (1..maxNumFDDFreqs)) OF SEQUENCE{ + uarfcn UARFCN + }, + utraTDD SEQUENCE (SIZE (1..maxNumTDDFreqs)) OF SEQUENCE{ + uarfcn UARFCN + }, + eutra SEQUENCE (SIZE (1..maxNumEUTRAFreqs)) OF + EARFCNRange, + gsm SEQUENCE { + gsm-CellGroup GSM-CellGroup + } + } +} + +PriorityLevelList ::= SEQUENCE (SIZE (1..maxPrio)) OF + PriorityLevel + +PriorityLevelList-r11 ::= SEQUENCE (SIZE (1..maxPrio)) OF + PriorityLevel-r11 + +-- Actual value Q-Hyst-S = IE value * 2 +Q-Hyst-S ::= INTEGER (0..20) + +Q-Hyst-S-Fine ::= INTEGER (0..40) + +RAT ::= ENUMERATED { + utra-FDD, + utra-TDD, + gsm, + cdma2000 } + +RAT-FDD-Info ::= SEQUENCE { + rat-Identifier RAT-Identifier, + s-SearchRAT S-SearchQual, + s-HCS-RAT S-SearchRXLEV OPTIONAL, + s-Limit-SearchRAT S-SearchQual +} + +RAT-FDD-InfoList ::= SEQUENCE (SIZE (1..maxOtherRAT)) OF + RAT-FDD-Info + +RAT-Identifier ::= ENUMERATED { + gsm, cdma2000 } + +RAT-TDD-Info ::= SEQUENCE { + rat-Identifier RAT-Identifier, + s-SearchRAT S-SearchRXLEV, + s-HCS-RAT S-SearchRXLEV OPTIONAL, + s-Limit-SearchRAT S-SearchRXLEV +} + +RAT-TDD-InfoList ::= SEQUENCE (SIZE (1..maxOtherRAT)) OF + RAT-TDD-Info + +ReservedIndicator ::= ENUMERATED { + reserved, + notReserved } + +-- Actual value S-SearchQual = IE value * 2 +S-SearchQual ::= INTEGER (-16..10) + +-- Actual value S-SearchRXLEV = (IE value * 2) + 1 +S-SearchRXLEV ::= INTEGER (-53..45) + +-- Actual value ScalingFactor = IE value * 0.1 +SpeedDependentScalingFactor ::= INTEGER (0..10) + +T-Barred ::= ENUMERATED { + s10, s20, s40, s80, + s160, s320, s640, s1280 } + +T-Reselection-S ::= INTEGER (0..31) + +-- Actual value T-Reselection-S-Fine = IE value * 0.2 +T-Reselection-S-Fine ::= INTEGER (0..31) + +-- Actual value ScalingFactor = IE value * 0.25 +TreselectionScalingFactor ::= INTEGER (4..19) + +-- Actual value ScalingFactor2 = IE value * 0.25 +TreselectionScalingFactor2 ::= INTEGER (1..16) + +-- For UpperLimit, the used range depends on the RAT used. +UpperLimit ::= INTEGER (1..91) + +URA-Identity ::= BIT STRING (SIZE (16)) + +URA-IdentityList ::= SEQUENCE (SIZE (1..maxURA)) OF + URA-Identity + +-- *************************************************** +-- +-- USER EQUIPMENT INFORMATION ELEMENTS (10.3.3) +-- +-- *************************************************** + +AccessStratumReleaseIndicator ::= ENUMERATED { + rel-4, rel-5, rel-6, rel-7, rel-8, + rel-9, rel-10, rel-11, spare8, + spare7, spare6, spare5, spare4, spare3, + spare2, spare1 } + +-- TABULAR : for ActivationTime, value 'now' always appear as default, and is encoded +-- by absence of the field +ActivationTime ::= INTEGER (0..255) + +BackoffControlParams ::= SEQUENCE { + n-AP-RetransMax N-AP-RetransMax, + n-AccessFails N-AccessFails, + nf-BO-NoAICH NF-BO-NoAICH, + ns-BO-Busy NS-BO-Busy, + nf-BO-AllBusy NF-BO-AllBusy, + nf-BO-Mismatch NF-BO-Mismatch, + t-CPCH T-CPCH +} + +BandComb ::= INTEGER (1..256) + +C-RNTI ::= BIT STRING (SIZE (16)) + +CapabilityUpdateRequirement ::= SEQUENCE { + ue-RadioCapabilityFDDUpdateRequirement BOOLEAN, + -- ue-RadioCapabilityTDDUpdateRequirement is for 3.84Mcps TDD update requirement + ue-RadioCapabilityTDDUpdateRequirement BOOLEAN, + systemSpecificCapUpdateReqList SystemSpecificCapUpdateReqList OPTIONAL +} + +CapabilityUpdateRequirement-r4-ext ::= SEQUENCE { + ue-RadioCapabilityUpdateRequirement-TDD128 BOOLEAN +} + +CapabilityUpdateRequirement-r4 ::= SEQUENCE { + ue-RadioCapabilityFDDUpdateRequirement-FDD BOOLEAN, + ue-RadioCapabilityTDDUpdateRequirement-TDD384 BOOLEAN, + ue-RadioCapabilityTDDUpdateRequirement-TDD128 BOOLEAN, + systemSpecificCapUpdateReqList SystemSpecificCapUpdateReqList OPTIONAL +} + +CapabilityUpdateRequirement-r5 ::= SEQUENCE { + ue-RadioCapabilityFDDUpdateRequirement-FDD BOOLEAN, + ue-RadioCapabilityTDDUpdateRequirement-TDD384 BOOLEAN, + ue-RadioCapabilityTDDUpdateRequirement-TDD128 BOOLEAN, + systemSpecificCapUpdateReqList SystemSpecificCapUpdateReqList-r5 OPTIONAL +} + +CapabilityUpdateRequirement-v770ext ::= SEQUENCE { + ue-RadioCapabilityTDDUpdateRequirement-TDD768 BOOLEAN +} + +CapabilityUpdateRequirement-r7 ::= SEQUENCE { + ue-RadioCapabilityFDDUpdateRequirement-FDD BOOLEAN, + ue-RadioCapabilityTDDUpdateRequirement-TDD384 BOOLEAN, + ue-RadioCapabilityTDDUpdateRequirement-TDD768 BOOLEAN, + ue-RadioCapabilityTDDUpdateRequirement-TDD128 BOOLEAN, + systemSpecificCapUpdateReqList SystemSpecificCapUpdateReqList-r5 OPTIONAL +} + +CapabilityUpdateRequirement-v860ext ::= SEQUENCE { + -- If both IEs are present, the elements in the IE SystemSpecificCapUpdateReqList-r8 + -- shall be appended to the elements in the IE SystemSpecificCapUpdateReqList + systemSpecificCapUpdateReqList SystemSpecificCapUpdateReqList-r8 OPTIONAL +} + +CapabilityUpdateRequirement-r8 ::= SEQUENCE { + ue-RadioCapabilityFDDUpdateRequirement-FDD BOOLEAN, + ue-RadioCapabilityTDDUpdateRequirement-TDD384 BOOLEAN, + ue-RadioCapabilityTDDUpdateRequirement-TDD768 BOOLEAN, + ue-RadioCapabilityTDDUpdateRequirement-TDD128 BOOLEAN, + systemSpecificCapUpdateReqList SystemSpecificCapUpdateReqList-r8 OPTIONAL +} + +-- If the IE CellUpdateCause has the value 'cellUpdateCause-ext', the actual value is +-- defined in the IE CellUpdateCause-ext. +CellUpdateCause ::= ENUMERATED { + cellReselection, + periodicalCellUpdate, + uplinkDataTransmission, + utran-pagingResponse, + re-enteredServiceArea, + radiolinkFailure, + rlc-unrecoverableError, + cellUpdateCause-ext } + +-- The IE CellUpdateCause-ext shall be present, if the IE CellUpdateCause has the +-- value 'cellUpdateCause-ext'. +-- dummy is not used in this version of the specification, it should not be sent +-- and if received it should be ignored by the receiver. +CellUpdateCause-ext ::= ENUMERATED { + mbms-Reception, + mbms-PTP-RB-Request, + dummy, + spare1 } + + +ChipRateCapability ::= ENUMERATED { + mcps3-84, mcps1-28 } + +CipheringAlgorithm ::= ENUMERATED { + uea0, uea1 } + +CipheringAlgorithm-r7 ::= ENUMERATED { + uea0, uea1, uea2 } + +CipheringModeCommand ::= CHOICE { + startRestart CipheringAlgorithm, + dummy NULL +} + +CipheringModeCommand-r7 ::= SEQUENCE { + startRestart CipheringAlgorithm-r7 +} + +CipheringModeInfo ::= SEQUENCE { + -- TABULAR: The ciphering algorithm is included in the CipheringModeCommand. + cipheringModeCommand CipheringModeCommand, + activationTimeForDPCH ActivationTime OPTIONAL, + rb-DL-CiphActivationTimeInfo RB-ActivationTimeInfoList OPTIONAL +} + +CipheringModeInfo-r7 ::= SEQUENCE { + -- TABULAR: The ciphering algorithm is included in the CipheringModeCommand. + cipheringModeCommand CipheringModeCommand-r7, + activationTimeForDPCH ActivationTime OPTIONAL, + rb-DL-CiphActivationTimeInfo RB-ActivationTimeInfoList OPTIONAL +} + +CN-DRX-CycleLengthCoefficient ::= INTEGER (6..9) + +CN-PagedUE-Identity ::= CHOICE { + imsi-GSM-MAP IMSI-GSM-MAP, + tmsi-GSM-MAP TMSI-GSM-MAP, + p-TMSI-GSM-MAP P-TMSI-GSM-MAP, + imsi-DS-41 IMSI-DS-41, + tmsi-DS-41 TMSI-DS-41, + spare3 NULL, + spare2 NULL, + spare1 NULL +} + +CompressedModeMeasCapability ::= SEQUENCE { + fdd-Measurements BOOLEAN, + -- TABULAR: The IEs tdd-Measurements, gsm-Measurements and multiCarrierMeasurements + -- are made optional since they are conditional based on another information element. + -- Their absence corresponds to the case where the condition is not true. + -- The IE 'tdd-Measurements' applies to either or both TDD 3.84 Mcps and TDD 7.68 Mcps, + -- depending on the RF capability conditions. + tdd-Measurements BOOLEAN OPTIONAL, + gsm-Measurements GSM-Measurements OPTIONAL, + multiCarrierMeasurements BOOLEAN OPTIONAL +} + +CompressedModeMeasCapability-LCR-r4 ::= SEQUENCE { + tdd128-Measurements BOOLEAN OPTIONAL +} + +CompressedModeMeasCapability-v860ext ::= SEQUENCE { + adjacentFrequencyMeasurements ENUMERATED { true } OPTIONAL +} + +CompressedModeMeasCapability-v920ext ::= SEQUENCE { + interBandMeasurements ENUMERATED { true } OPTIONAL +} + +CompressedModeMeasCapability-va40ext ::= SEQUENCE { + enhancedInterFrequencyMeasurements ENUMERATED { true } OPTIONAL, + freqSpecificCompressedMode ENUMERATED { true } OPTIONAL +} + +CompressedModeMeasCapabEUTRA ::= SEQUENCE { + radioFrequencyBandEUTRA RadioFrequencyBandEUTRA, + compressedMode BOOLEAN +} + +CompressedModeMeasCapabEUTRAExt ::=SEQUENCE { + radioFrequencyBandEUTRA RadioFrequencyBandEUTRAExt +} + +CompressedModeMeasCapabEUTRAList ::= SEQUENCE (SIZE (1..maxFreqBandsEUTRA)) OF + CompressedModeMeasCapabEUTRA + +CompressedModeMeasCapabEUTRAList2 ::= SEQUENCE (SIZE (1..maxFreqBandsEUTRA)) OF + CompressedModeMeasCapabEUTRAExt + +CompressedModeMeasCapabFDDList ::= SEQUENCE (SIZE (1..maxFreqBandsFDD)) OF + CompressedModeMeasCapabFDD + +CompressedModeMeasCapabFDDList2 ::= SEQUENCE (SIZE (1..maxFreqBandsFDD)) OF + CompressedModeMeasCapabFDD2 + +CompressedModeMeasCapabFDDList3 ::= SEQUENCE (SIZE (1..maxFreqBandsFDD-ext2)) OF + CompressedModeMeasCapabFDD3 + +CompressedModeMeasCapabFDDList-ext ::= SEQUENCE (SIZE (1..maxFreqBandsFDD)) OF + CompressedModeMeasCapabFDD-ext + +CompressedModeMeasCapabFDD ::= SEQUENCE { + radioFrequencyBandFDD RadioFrequencyBandFDD OPTIONAL, + dl-MeasurementsFDD BOOLEAN, + ul-MeasurementsFDD BOOLEAN +} + +CompressedModeMeasCapabFDD2 ::= SEQUENCE { + -- UE may omit both IEs if this IE indicates the compressed mode capability within the same + -- frequency band. Otherwise, the UE shall include either one of the following OPTIONAL IEs. + radioFrequencyBandFDD RadioFrequencyBandFDD OPTIONAL, + radioFrequencyBandFDD2 RadioFrequencyBandFDD2 OPTIONAL, + dl-MeasurementsFDD BOOLEAN, + ul-MeasurementsFDD BOOLEAN +} + +CompressedModeMeasCapabFDD3 ::= SEQUENCE { + -- UE may omit radioFrequencyBandFDD3 if this IE indicates the compressed mode capability within + -- the same frequency band. Otherwise, the UE shall include the IE. + radioFrequencyBandFDD3 RadioFrequencyBandFDD3 OPTIONAL, + dl-MeasurementsFDD BOOLEAN, + ul-MeasurementsFDD BOOLEAN +} + +CompressedModeMeasCapabFDD-ext ::= SEQUENCE { + radioFrequencyBandFDD2 RadioFrequencyBandFDD2, + dl-MeasurementsFDD BOOLEAN, + ul-MeasurementsFDD BOOLEAN +} + +CompressedModeMeasCapabTDDList ::= SEQUENCE (SIZE (1..maxFreqBandsTDD)) OF + CompressedModeMeasCapabTDD + +CompressedModeMeasCapabTDD ::= SEQUENCE { + radioFrequencyBandTDD RadioFrequencyBandTDD, + dl-MeasurementsTDD BOOLEAN, + ul-MeasurementsTDD BOOLEAN +} + +CompressedModeMeasCapabGSMList ::= SEQUENCE (SIZE (1..maxFreqBandsGSM)) OF + CompressedModeMeasCapabGSM + +CompressedModeMeasCapabGSM ::= SEQUENCE { + radioFrequencyBandGSM RadioFrequencyBandGSM, + dl-MeasurementsGSM BOOLEAN, + ul-MeasurementsGSM BOOLEAN +} + +CompressedModeMeasCapabMC ::= SEQUENCE { + dl-MeasurementsMC BOOLEAN, + ul-MeasurementsMC BOOLEAN +} + +CPCH-Parameters ::= SEQUENCE { + initialPriorityDelayList InitialPriorityDelayList OPTIONAL, + backoffControlParams BackoffControlParams, + -- TABULAR: TPC step size nested inside PowerControlAlgorithm + powerControlAlgorithm PowerControlAlgorithm, + dl-DPCCH-BER DL-DPCCH-BER +} + +CSG-ProximityIndicationCapability ::= SEQUENCE { + supportOfIntraFreqProximityIndication ENUMERATED { true } OPTIONAL, + supportOfInterFreqProximityIndication ENUMERATED { true } OPTIONAL, + supportOfE-UtraProximityIndication ENUMERATED { true } OPTIONAL +} + +DL-CapabilityWithSimultaneousHS-DSCHConfig ::= ENUMERATED{kbps32, kbps64, kbps128, kbps384} + +DL-DPCCH-BER ::= INTEGER (0..63) + +DL-InformationPerSecondaryRL-List ::= SEQUENCE (SIZE (1..maxEDCHRL)) OF + DL-InformationPerSecondaryRL + +DL-InformationPerSecondaryRL ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + cell-id CellIdentity OPTIONAL, + dl-FDPCHInfoPerRL-SecULFreq DL-FDPCH-InfoPerRL-r7, + e-AGCH-Information E-AGCH-Information OPTIONAL, + e-HICH-Information E-HICH-Information OPTIONAL, + e-RGCH-Info CHOICE { + e-RGCH-Information E-RGCH-Information, + releaseIndicator NULL + } OPTIONAL +} + +DL-PhysChCapabilityFDD ::= SEQUENCE { + -- The IE "maxNoDPCH-PDSCH-Codes" only gives information on the maximum number of DPCH Codes. + maxNoDPCH-PDSCH-Codes INTEGER (1..8), + maxNoPhysChBitsReceived MaxNoPhysChBitsReceived, + supportForSF-512 BOOLEAN, + -- dummy and dummy2 are not used in this version of the specification + -- and if received they should be ignored. + dummy BOOLEAN, + dummy2 SimultaneousSCCPCH-DPCH-Reception +} + +DL-PhysChCapabilityFDD-v380ext ::= SEQUENCE { + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SupportOfDedicatedPilotsForChEstimation OPTIONAL +} + +SupportOfDedicatedPilotsForChEstimation ::= ENUMERATED { true } + +DL-PhysChCapabilityFDD-v770ext ::= SEQUENCE { + hsdsch-physical-layer-category-ext HSDSCH-physical-layer-category-ext OPTIONAL, + hsscchlessHsdschOperation ENUMERATED { true } OPTIONAL, + enhancedFdpch ENUMERATED { true } OPTIONAL, + hsdschReception-CellFach ENUMERATED { true } OPTIONAL, + hsdschReception-CellUraPch ENUMERATED { true } OPTIONAL +} + +DL-PhysChCapabilityFDD-v860ext ::= SEQUENCE { + hsdsch-physical-layer-category-ext2 HSDSCH-physical-layer-category-ext2 OPTIONAL, + supportOfTargetCellPreConfig ENUMERATED { true } OPTIONAL, + supportOfHsdschDrxOperation ENUMERATED { true } OPTIONAL +} + +DL-PhysChCapabilityFDD-v920ext ::= SEQUENCE { + hsdsch-physical-layer-category-ext3 HSDSCH-physical-layer-category-ext3 OPTIONAL, + supportOfMimoOnlySingleStream ENUMERATED { true } OPTIONAL +} + +DL-PhysChCapabilityFDD-va40ext ::= SEQUENCE { + hsdsch-physical-layer-category-ext4 HSDSCH-physical-layer-category-ext4 OPTIONAL, + hsdsch-physical-layer-category-ext5 HSDSCH-physical-layer-category-ext5 OPTIONAL +} + +DL-PhysChCapabilityFDD-vb50ext ::= SEQUENCE { + hsdsch-physical-layer-category-ext6 HSDSCH-physical-layer-category-ext6 OPTIONAL, + hsdsch-physical-layer-category-ext7 HSDSCH-physical-layer-category-ext7 OPTIONAL, + hsdsch-physical-layer-category-ext8 HSDSCH-physical-layer-category-ext8 OPTIONAL, + supportOf4x4MimoDualStreamRestriction ENUMERATED { true } OPTIONAL, + supportOfHS-DSCHSecondDRXOperation ENUMERATED { true } OPTIONAL, + supportOfNodeBTrigHS-DPCCHTransmission ENUMERATED { true } OPTIONAL +} + +DL-PhysChCapabilityTDD ::= SEQUENCE { + maxTS-PerFrame MaxTS-PerFrame, + maxPhysChPerFrame MaxPhysChPerFrame, + minimumSF MinimumSF-DL, + supportOfPDSCH BOOLEAN, + maxPhysChPerTS MaxPhysChPerTS +} + +DL-PhysChCapabilityTDD-LCR-r4 ::= SEQUENCE { + maxTS-PerSubFrame MaxTS-PerSubFrame-r4, + maxPhysChPerFrame MaxPhysChPerSubFrame-r4, + minimumSF MinimumSF-DL, + supportOfPDSCH BOOLEAN, + maxPhysChPerTS MaxPhysChPerTS, + supportOf8PSK BOOLEAN +} + +DL-PhysChCapabilityTDD-128-v770ext ::= SEQUENCE { + multiCarrier-physical-layer-category MultiCarrier-HSDSCH-physical-layer-category OPTIONAL +} + +DL-PhysChCapabilityTDD-128-v860ext ::= SEQUENCE { + hSDSCH-physical-layer-category-extension + HSDSCH-physical-layer-category-extension OPTIONAL, + multiCarrier-physical-layer-category-extension + MultiCarrier-HSDSCH-physical-layer-category-extension OPTIONAL, + supportOfSFModeForHSPDSCHDualStream ENUMERATED { sf1, sf1sf16 } OPTIONAL +} + +DL-PhysChCapabilityInfoTDD-128-va40ext::= SEQUENCE { + multiCarrier-physical-layer-category-extension2 + MultiCarrier-HSDSCH-physical-layer-category-extension2 OPTIONAL +} + +DL-PhysChCapabilityTDD-768 ::= SEQUENCE { + maxTS-PerFrame MaxTS-PerFrame, + maxPhysChPerFrame MaxPhysChPerFrame-768, + minimumSF MinimumSF-DL-768, + supportOfPDSCH BOOLEAN, + tdd768-hspdsch CHOICE { + supported HSDSCH-physical-layer-category, + unsupported NULL + }, + maxPhysChPerTS MaxPhysChPerTS-768 +} + +DL-PhysChCapabilityInfoTDD-768 ::= SEQUENCE { + maxTS-PerFrame MaxTS-PerFrame, + maxPhysChPerFrame MaxPhysChPerFrame-768, + minimumSF MinimumSF-DL-768, + supportOfPDSCH BOOLEAN, + maxPhysChPerTS MaxPhysChPerTS-768 +} + +DL-TransChCapability ::= SEQUENCE { + maxNoBitsReceived MaxNoBits, + maxConvCodeBitsReceived MaxNoBits, + turboDecodingSupport TurboSupport, + maxSimultaneousTransChs MaxSimultaneousTransChsDL, + maxSimultaneousCCTrCH-Count MaxSimultaneousCCTrCH-Count, + maxReceivedTransportBlocks MaxTransportBlocksDL, + maxNumberOfTFC MaxNumberOfTFC-DL, + maxNumberOfTF MaxNumberOfTF +} + +DRAC-SysInfo ::= SEQUENCE { + transmissionProbability TransmissionProbability, + maximumBitRate MaximumBitRate +} + +DRAC-SysInfoList ::= SEQUENCE (SIZE (1..maxDRACclasses)) OF + DRAC-SysInfo + +DSCH-RNTI ::= BIT STRING (SIZE (16)) + +DelayRestrictionFlag ::= ENUMERATED { true } + +E-RNTI ::= BIT STRING (SIZE (16)) + +ESN-DS-41 ::= BIT STRING (SIZE (32)) + +EstablishmentCause ::= ENUMERATED { + originatingConversationalCall, + originatingStreamingCall, + originatingInteractiveCall, + originatingBackgroundCall, + originatingSubscribedTrafficCall, + terminatingConversationalCall, + terminatingStreamingCall, + terminatingInteractiveCall, + terminatingBackgroundCall, + emergencyCall, + interRAT-CellReselection, + interRAT-CellChangeOrder, + registration, + detach, + originatingHighPrioritySignalling, + originatingLowPrioritySignalling, + callRe-establishment, + terminatingHighPrioritySignalling, + terminatingLowPrioritySignalling, + terminatingCauseUnknown, + mbms-Reception, + mbms-PTP-RB-Request, + delayTolerantAccess, + spare9, + spare8, + spare7, + spare6, + spare5, + spare4, + spare3, + spare2, + spare1 } + +ExtendedWaitTime ::= INTEGER (1..1800) + +FailureCauseWithProtErr ::= CHOICE { + configurationUnsupported NULL, + physicalChannelFailure NULL, + incompatibleSimultaneousReconfiguration + NULL, + compressedModeRuntimeError TGPSI, + protocolError ProtocolErrorInformation, + cellUpdateOccurred NULL, + invalidConfiguration NULL, + configurationIncomplete NULL, + unsupportedMeasurement NULL, + mbmsSessionAlreadyReceivedCorrectly NULL, + lowerPriorityMBMSService NULL, + spare5 NULL, + spare4 NULL, + spare3 NULL, + spare2 NULL, + spare1 NULL +} + +FailureCauseWithProtErrTrId ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + failureCause FailureCauseWithProtErr +} + +FrequencyBandsIndicatorSupport ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + frequencyBandsSupportFDD FrequencyBandsRedirectionFDD + }, + tdd SEQUENCE { + frequencyBandsSupportTDD128 FrequencyBandsIndicatorTDD128 + } + } +} + +FrequencyBandsIndicatorTDD128 ::= SEQUENCE (SIZE (1..maxFreqBandsIndicatorSupport)) OF + FrequencyBandsIndicatorSupportTDD128 + +FrequencyBandsIndicatorSupportTDD128 ::= SEQUENCE { + frequencyBandsIndicatorTDD RadioFrequencyBandTDD-r10 +} + +FrequencyBandsRedirectionFDD ::= SEQUENCE (SIZE (1..maxFreqBandsIndicatorSupport)) OF + FrequencyBandsIndicatorFDD + +FrequencyBandsIndicatorFDD ::= CHOICE { + frequencyBandsIndicator1 RadioFrequencyBandFDD, + frequencyBandsIndicator2 RadioFrequencyBandFDD2, + frequencyBandsIndicator3 RadioFrequencyBandFDD3 +} + +GANSS-Mode ::= ENUMERATED { + networkBased, + uEBased, + both, + none } + +GroupIdentityWithReleaseInformation ::= SEQUENCE { + rrc-ConnectionReleaseInformation RRC-ConnectionReleaseInformation, + groupReleaseInformation GroupReleaseInformation + } + +GroupReleaseInformation ::= SEQUENCE { + uRNTI-Group U-RNTI-Group +} + +GSM-Measurements ::= SEQUENCE { + gsm900 BOOLEAN, + dcs1800 BOOLEAN, + gsm1900 BOOLEAN +} + +H-RNTI ::= BIT STRING (SIZE (16)) + +High-MobilityDetected ::= ENUMERATED { high-MobilityDetected } + +HSDSCH-physical-layer-category ::= INTEGER (1..64) + +HSDSCH-physical-layer-category-ext ::= INTEGER (1..20) + +HSDSCH-physical-layer-category-ext2 ::= INTEGER (21..24) + +HSDSCH-physical-layer-category-ext3 ::= INTEGER (25..28) + +HSDSCH-physical-layer-category-ext4 ::= INTEGER (29..30) + +HSDSCH-physical-layer-category-ext5 ::= INTEGER (31..32) + +HSDSCH-physical-layer-category-ext6 ::= INTEGER (33..34) + +HSDSCH-physical-layer-category-ext7 ::= INTEGER (35..36) + +HSDSCH-physical-layer-category-ext8 ::= INTEGER (37..38) + +HSDSCH-physical-layer-category-extension ::= INTEGER (1..64) + +MultiCarrier-HSDSCH-physical-layer-category ::= INTEGER (1..64) + +MultiCarrier-HSDSCH-physical-layer-category-extension ::= INTEGER (1..36) + +MultiCarrier-HSDSCH-physical-layer-category-extension2 ::= INTEGER (37..64) + +MultiflowCapabBandCombination ::= SEQUENCE { + numberOfCellsBandA INTEGER(2..6), + numberOfFrequenciesBandA INTEGER(1..3), + numberOfCellsBandB INTEGER(2..6), + numberOfFrequenciesBandB INTEGER(1..3) +} + +MultiflowCapabBandCombList ::= SEQUENCE (SIZE (1..16)) OF MultiflowCapabBandCombination + +MultiflowCapability ::= SEQUENCE { + mimoInDifferentBands MultiflowMIMOCapability OPTIONAL, + longerHARQProcessing ENUMERATED { true } OPTIONAL +} + +MultiflowPerBandCapability ::= SEQUENCE { + numberOfCells INTEGER(2..8), + numberOfFrequencies INTEGER(1..4), + mimo MultiflowMIMOCapability OPTIONAL, + nonContiguousCapability MultiflowNonContiguousCapability OPTIONAL +} + +MultiflowMIMOCapability ::= ENUMERATED { single-stream, dual-stream } + +MultiflowNonContiguousCapability ::= SEQUENCE { + gapSize ENUMERATED { fiveMHz, tenMHz, anyGapSize, + spare5, spare4, spare3, spare2, spare1 } +} + +UESpecificBehaviourInformation1idle ::= BIT STRING (SIZE (4)) + +UESpecificBehaviourInformation1interRAT ::= BIT STRING (SIZE (8)) + +IdleIntervalMeasCapabEUTRA ::= SEQUENCE { + radioFrequencyBandEUTRA RadioFrequencyBandEUTRA, + idleInterval BOOLEAN +} + +IdleIntervalMeasCapabEUTRAExtension ::= SEQUENCE { + radioFrequencyBandEUTRA RadioFrequencyBandEUTRAExt +} + +IdleIntervalMeasCapabEUTRAList ::= SEQUENCE (SIZE (1..maxFreqBandsEUTRA)) OF + IdleIntervalMeasCapabEUTRA + +IdleIntervalMeasCapabEUTRAExtensionList ::= SEQUENCE (SIZE (1..maxFreqBandsEUTRA)) OF + IdleIntervalMeasCapabEUTRAExtension + +IMSI-and-ESN-DS-41 ::= SEQUENCE { + imsi-DS-41 IMSI-DS-41, + esn-DS-41 ESN-DS-41 +} + +IMSI-DS-41 ::= OCTET STRING (SIZE (5..7)) + +InitialPriorityDelayList ::= SEQUENCE (SIZE (1..maxASC)) OF + NS-IP + +InitialUE-Identity ::= CHOICE { + imsi IMSI-GSM-MAP, + tmsi-and-LAI TMSI-and-LAI-GSM-MAP, + p-TMSI-and-RAI P-TMSI-and-RAI-GSM-MAP, + imei IMEI, + esn-DS-41 ESN-DS-41, + imsi-DS-41 IMSI-DS-41, + imsi-and-ESN-DS-41 IMSI-and-ESN-DS-41, + tmsi-DS-41 TMSI-DS-41 +} + +IntegrityCheckInfo ::= SEQUENCE { + messageAuthenticationCode MessageAuthenticationCode, + rrc-MessageSequenceNumber RRC-MessageSequenceNumber +} + +IntegrityProtActivationInfo ::= SEQUENCE { + rrc-MessageSequenceNumberList RRC-MessageSequenceNumberList +} + +IntegrityProtectionAlgorithm ::= ENUMERATED { + uia1 } + +IntegrityProtectionAlgorithm-r7 ::= ENUMERATED { + uia1, uia2 } + +IntegrityProtectionModeCommand ::= CHOICE { + startIntegrityProtection SEQUENCE { + integrityProtInitNumber IntegrityProtInitNumber + }, + modify SEQUENCE { + dl-IntegrityProtActivationInfo IntegrityProtActivationInfo + } +} + +IntegrityProtectionModeInfo ::= SEQUENCE { + -- TABULAR: DL integrity protection activation info and Integrity + -- protection intialisation number have been nested inside + -- IntegrityProtectionModeCommand. + integrityProtectionModeCommand IntegrityProtectionModeCommand, + integrityProtectionAlgorithm IntegrityProtectionAlgorithm OPTIONAL +} + +IntegrityProtectionModeInfo-r7 ::= SEQUENCE { + -- TABULAR: DL integrity protection activation info and Integrity + -- protection intialisation number have been nested inside + -- IntegrityProtectionModeCommand. + integrityProtectionModeCommand IntegrityProtectionModeCommand, + integrityProtectionAlgorithm IntegrityProtectionAlgorithm-r7 OPTIONAL +} + +IntegrityProtInitNumber ::= BIT STRING (SIZE (32)) + +-- dummy is not used in this version of the specification, it should +-- not be sent and if received it should be ignored. +MaxHcContextSpace ::= ENUMERATED { + dummy, by1024, by2048, by4096, + by8192 } + +MaxHcContextSpace-r5-ext ::= ENUMERATED { + by16384, by32768, by65536, by131072 } + + +MaxROHC-ContextSessions-r4 ::= ENUMERATED { + s2, s4, s8, s12, s16, s24, s32, s48, + s64, s128, s256, s512, s1024, s16384 } + +MaximumAM-EntityNumberRLC-Cap ::= ENUMERATED { + dummy, am4, am5, am6, + am8, am16, am30 } + +-- Actual value MaximumBitRate = IE value * 16 +MaximumBitRate ::= INTEGER (0..32) + +MaximumRLC-WindowSize ::= ENUMERATED { mws2047, mws4095 } + +MaxNoDPDCH-BitsTransmitted ::= ENUMERATED { + b600, b1200, b2400, b4800, + b9600, b19200, b28800, b38400, + b48000, b57600 } + +MaxNoBits ::= ENUMERATED { + b640, b1280, b2560, b3840, b5120, + b6400, b7680, b8960, b10240, + b20480, b40960, b81920, b163840 } + +MaxNoPhysChBitsReceived ::= ENUMERATED { + dummy, b1200, b2400, b3600, + b4800, b7200, b9600, b14400, + b19200, b28800, b38400, b48000, + b57600, b67200, b76800 } + +MaxNoSCCPCH-RL ::= ENUMERATED { + rl1 } + +MaxNumberOfTF ::= ENUMERATED { + tf32, tf64, tf128, tf256, + tf512, tf1024 } + +MaxNumberOfTFC-DL ::= ENUMERATED { + tfc16, tfc32, tfc48, tfc64, tfc96, + tfc128, tfc256, tfc512, tfc1024 } + +MaxNumberOfTFC-UL ::= ENUMERATED { + dummy1, dummy2, tfc16, tfc32, tfc48, tfc64, + tfc96, tfc128, tfc256, tfc512, tfc1024 } + +-- the values 1 to 4 for MaxPhysChPerFrame are not used in this version of the protocol +MaxPhysChPerFrame ::= INTEGER (1..224) + +MaxPhysChPerFrame-768 ::= INTEGER (1..448) + +MaxPhysChPerSubFrame-r4 ::= INTEGER (1..96) + +MaxPhysChPerTimeslot ::= ENUMERATED { + ts1, ts2 } + +MaxPhysChPerTimeslot-LCR-r7 ::= INTEGER (1..4) + +-- the values 1 to 4 for MaxPhysChPerTS are not used in this version of the protocol +MaxPhysChPerTS ::= INTEGER (1..16) + +MaxPhysChPerTS-768 ::= INTEGER (1..32) + +MaxSimultaneousCCTrCH-Count ::= INTEGER (1..8) + +MaxSimultaneousTransChsDL ::= ENUMERATED { + e4, e8, e16, e32 } + +MaxSimultaneousTransChsUL ::= ENUMERATED { + dummy, e4, e8, e16, e32 } + +MaxTransportBlocksDL ::= ENUMERATED { + tb4, tb8, tb16, tb32, tb48, + tb64, tb96, tb128, tb256, tb512 } + +MaxTransportBlocksUL ::= ENUMERATED { + dummy, tb4, tb8, tb16, tb32, tb48, + tb64, tb96, tb128, tb256, tb512 } + +MaxTS-PerFrame ::= INTEGER (1..14) + +MaxTS-PerSubFrame-r4 ::= INTEGER (1..6) + +-- TABULAR: MeasurementCapability contains dependencies to UE-MultiModeRAT-Capability, +-- the conditional fields have been left mandatory for now. +MeasurementCapability ::= SEQUENCE { + downlinkCompressedMode CompressedModeMeasCapability, + uplinkCompressedMode CompressedModeMeasCapability +} + +MeasurementCapabilityExt ::= SEQUENCE{ + compressedModeMeasCapabFDDList CompressedModeMeasCapabFDDList, + compressedModeMeasCapabTDDList CompressedModeMeasCapabTDDList OPTIONAL, + compressedModeMeasCapabGSMList CompressedModeMeasCapabGSMList OPTIONAL, + compressedModeMeasCapabMC CompressedModeMeasCapabMC OPTIONAL +} + +MeasurementCapabilityExt2 ::= SEQUENCE{ + compressedModeMeasCapabFDDList CompressedModeMeasCapabFDDList2, + compressedModeMeasCapabTDDList CompressedModeMeasCapabTDDList OPTIONAL, + compressedModeMeasCapabGSMList CompressedModeMeasCapabGSMList OPTIONAL, + compressedModeMeasCapabMC CompressedModeMeasCapabMC OPTIONAL +} + +MeasurementCapabilityExt3 ::= SEQUENCE { + compressedModeMeasCapabEUTRAList CompressedModeMeasCapabEUTRAList OPTIONAL +} + +MeasurementCapabilityExt4 ::= SEQUENCE{ + compressedModeMeasCapabFDDList2 CompressedModeMeasCapabFDDList2 OPTIONAL, + compressedModeMeasCapabFDDList3 CompressedModeMeasCapabFDDList3 OPTIONAL, + compressedModeMeasCapabTDDList CompressedModeMeasCapabTDDList OPTIONAL, + compressedModeMeasCapabGSMList CompressedModeMeasCapabGSMList OPTIONAL, + compressedModeMeasCapabMC CompressedModeMeasCapabMC OPTIONAL, + compressedModeMeasCapabEUTRAList CompressedModeMeasCapabEUTRAList OPTIONAL +} + +MeasurementCapabilityExt5 ::= SEQUENCE { + compressedModeMeasCapabEUTRAList CompressedModeMeasCapabEUTRAList2 OPTIONAL +} + +MeasurementCapability-r4-ext ::= SEQUENCE { + downlinkCompressedMode-LCR CompressedModeMeasCapability-LCR-r4, + uplinkCompressedMode-LCR CompressedModeMeasCapability-LCR-r4 +} + +MeasurementCapability-v860ext ::= SEQUENCE { + downlinkCompressedMode CompressedModeMeasCapability-v860ext +} + +MeasurementCapability-v920ext ::= SEQUENCE { + downlinkCompressedMode CompressedModeMeasCapability-v920ext +} + +MeasurementCapability-va40ext ::= SEQUENCE { + interFrequencyDetectedSetMeasurements ENUMERATED { true } OPTIONAL, + downlinkCompressedMode CompressedModeMeasCapability-va40ext +} + +MeasurementCapability-vb50ext ::= SEQUENCE { + interFrequencyMeasOnConfigCarriersWithoutCompMode ENUMERATED { true } OPTIONAL, + cellsExcludedFromDetectedSetMeasurements ENUMERATED { true } OPTIONAL +} + +MeasurementCapabilityTDD ::= SEQUENCE { + idleIntervalMeasCapabEUTRAList IdleIntervalMeasCapabEUTRAList OPTIONAL +} + +MeasurementCapabilityTDD-vb50ext ::= SEQUENCE { + idleIntervalMeasCapabEUTRAList IdleIntervalMeasCapabEUTRAExtensionList OPTIONAL +} + +MessageAuthenticationCode ::= BIT STRING (SIZE (32)) + +MinimumSF-DL ::= ENUMERATED { + sf1, sf16 } + +MinimumSF-DL-768 ::= ENUMERATED { + sf1, sf32 } + +MinimumSF-UL ::= ENUMERATED { + sf1, sf2, sf4, sf8, dummy } + +NonContiguousMultiCellCombinationList ::= SEQUENCE (SIZE (1..maxNonContiguousMultiCellCombinations)) OF + NonContiguousMultiCell + +NonContiguousMultiCell ::= SEQUENCE { + aggregatedCells ENUMERATED { nc-2c, nc-3c, nc-4c }, + gapSize ENUMERATED { fiveMHz, tenMHz, anyGapSize, + spare5, spare4, spare3, spare2, spare1 }, + nonContiguousMultiCellCombination22 ENUMERATED { true } OPTIONAL, + nonContiguousMultiCellCombination31-13 ENUMERATED { true } OPTIONAL +} + +MultiModeCapability ::= ENUMERATED { + tdd, fdd, fdd-tdd } + +MultiRAT-Capability ::= SEQUENCE { + supportOfGSM BOOLEAN, + supportOfMulticarrier BOOLEAN +} + +MultiModeRAT-Capability-v590ext ::= SEQUENCE { + supportOfUTRAN-ToGERAN-NACC BOOLEAN +} + +MultiModeRAT-Capability-v680ext ::= SEQUENCE { + supportOfHandoverToGAN ENUMERATED { doesSupportHandoverToGAN } OPTIONAL +} + +MultiModeRAT-Capability-v770ext ::= SEQUENCE { + supportOfPSHandoverToGAN ENUMERATED { doesSupportPSHandoverToGAN } OPTIONAL +} + +MultiModeRAT-Capability-v860ext ::= SEQUENCE { + supportOfEUTRAFDD ENUMERATED { doesSupportEUTRAFDD } OPTIONAL, + supportOfInterRATHOToEUTRAFDD ENUMERATED { doesSupportInterRATHOToEUTRAFDD } OPTIONAL, + supportOfEUTRATDD ENUMERATED { doesSupportEUTRATDD } OPTIONAL, + supportOfInterRATHOToEUTRATDD ENUMERATED { doesSupportInterRATHOToEUTRATDD } OPTIONAL, + eutraFeatureGroupIndicators BIT STRING (SIZE (4)) OPTIONAL +} + +MultiModeRAT-Capability-vb50ext ::= SEQUENCE { + supportOfEUTRAFDDMeasurementReportingInCELLFACH ENUMERATED { doesSupportOfEUTRAFDDMeasurementReportingInCELLFACH } OPTIONAL, + supportOfEUTRATDDMeasurementReportingInCELLFACH ENUMERATED { doesSupportOfEUTRATDDMeasurementReportingInCELLFACH } OPTIONAL +} + +N-300 ::= INTEGER (0..7) + +N-301 ::= INTEGER (0..7) + +N-302 ::= INTEGER (0..7) + +N-304 ::= INTEGER (0..7) + +N-308 ::= INTEGER (1..8) + +N-310 ::= INTEGER (0..7) + +N-312 ::= ENUMERATED { + s1, s50, s100, s200, s400, + s600, s800, s1000 } + +N-312ext ::= ENUMERATED { + s2, s4, s10, s20 } + +N-312-r5 ::= ENUMERATED { + s1, s2, s4, s10, s20, + s50, s100, s200, s400, + s600, s800, s1000 } + +N-313 ::= ENUMERATED { + s1, s2, s4, s10, s20, + s50, s100, s200 } + +N-315 ::= ENUMERATED { + s1, s50, s100, s200, s400, + s600, s800, s1000 } + +N-315ext ::= ENUMERATED { + s2, s4, s10, s20 } + +N-315-r5 ::= ENUMERATED { + s1, s2, s4, s10, s20, + s50, s100, s200, s400, + s600, s800, s1000 } + + +N-AccessFails ::= INTEGER (1..64) + +N-AP-RetransMax ::= INTEGER (1..64) + +NeighCellSI-AcquisitionCapability ::= SEQUENCE { + supportOfIntraFreqSIAcquisitionForHO ENUMERATED { true } OPTIONAL, + supportOfInterFreqSIAcquisitionForHO ENUMERATED { true } OPTIONAL, + supportOfE-UtraSIAcquisitionForHO ENUMERATED { true } OPTIONAL +} + +NetworkAssistedGANSS-Supported-List ::= SEQUENCE (SIZE (1..maxGANSS)) OF SEQUENCE { + gANSS-Id ENUMERATED { + sbas, modernizedGPS, qzss, glonass, spare4, + spare3, spare2, spare1 } OPTIONAL, + gANSS-Mode GANSS-Mode, + gANSS-SignalId GANSS-Signal-Id OPTIONAL, + supportForUE-GANSS-TimingOfCellFrames BOOLEAN, + supportForUE-GANSS-CarrierPhaseMeasurement BOOLEAN OPTIONAL +} + +-- Each element in the NetworkAssistedGANSS-Supported-List-v860ext provides extension information +-- to the corresponding element (position) in the NetworkAssistedGANSS-Supported-List +NetworkAssistedGANSS-Supported-List-v860ext ::= SEQUENCE (SIZE (1..maxGANSS)) OF SEQUENCE { + sbas-Ids BIT STRING (SIZE (8)) OPTIONAL, + gANSS-SignalIds BIT STRING (SIZE (8)) OPTIONAL, + non-native-AD-choices-supported ENUMERATED { true } OPTIONAL +} + +NetworkAssistedGPS-Supported ::= ENUMERATED { + networkBased, + ue-Based, + bothNetworkAndUE-Based, + noNetworkAssistedGPS } + +NF-BO-AllBusy ::= INTEGER (0..31) + +NF-BO-NoAICH ::= INTEGER (0..31) + +NF-BO-Mismatch ::= INTEGER (0..127) + +NS-BO-Busy ::= INTEGER (0..63) + +NS-IP ::= INTEGER (0..28) + +P-TMSI-and-RAI-GSM-MAP ::= SEQUENCE { + p-TMSI P-TMSI-GSM-MAP, + rai RAI +} + +PagingCause ::= ENUMERATED { + terminatingConversationalCall, + terminatingStreamingCall, + terminatingInteractiveCall, + terminatingBackgroundCall, + terminatingHighPrioritySignalling, + terminatingLowPrioritySignalling, + terminatingCauseUnknown, + spare + } + +PagingRecord ::= CHOICE { + cn-Identity SEQUENCE { + pagingCause PagingCause, + cn-DomainIdentity CN-DomainIdentity, + cn-pagedUE-Identity CN-PagedUE-Identity + }, + utran-Identity SEQUENCE { + u-RNTI U-RNTI, + cn-OriginatedPage-connectedMode-UE SEQUENCE { + pagingCause PagingCause, + cn-DomainIdentity CN-DomainIdentity, + pagingRecordTypeID PagingRecordTypeID + } OPTIONAL + } +} + +PagingRecord2-r5 ::= CHOICE { + utran-SingleUE-Identity SEQUENCE { + u-RNTI U-RNTI, + cn-OriginatedPage-connectedMode-UE SEQUENCE { + pagingCause PagingCause, + cn-DomainIdentity CN-DomainIdentity, + pagingRecordTypeID PagingRecordTypeID + } OPTIONAL, + rrc-ConnectionReleaseInformation RRC-ConnectionReleaseInformation + }, + utran-GroupIdentity SEQUENCE ( SIZE (1 .. maxURNTI-Group) ) OF + GroupIdentityWithReleaseInformation +} + +PagingRecordList ::= SEQUENCE (SIZE (1..maxPage1)) OF + PagingRecord + +PagingRecord2List-r5 ::= SEQUENCE (SIZE (1..maxPage1)) OF + PagingRecord2-r5 + +PDCP-Capability ::= SEQUENCE { + losslessSRNS-RelocationSupport BOOLEAN, + -- If present, the "maxHcContextSpace" in the IE "PDCP-Capability-r5-ext" overrides the + -- "supported" value in this IE. The value in this IE may be used by a pre-REL-5 UTRAN. + supportForRfc2507 CHOICE { + notSupported NULL, + supported MaxHcContextSpace + } +} + +PDCP-Capability-r4-ext ::= SEQUENCE { + supportForRfc3095 CHOICE { + notSupported NULL, + supported SEQUENCE { + maxROHC-ContextSessions MaxROHC-ContextSessions-r4 DEFAULT s16, + reverseCompressionDepth INTEGER (0..65535) DEFAULT 0 + } + } +} + +PDCP-Capability-r5-ext ::= SEQUENCE { + supportForRfc3095ContextRelocation BOOLEAN, + maxHcContextSpace MaxHcContextSpace-r5-ext OPTIONAL +} + +PDCP-Capability-r5-ext2 ::= SEQUENCE { + losslessDLRLC-PDUSizeChange ENUMERATED { true } OPTIONAL +} + +PDCP-Capability-v770ext ::= SEQUENCE { + supportForCSVoiceoverHSPA ENUMERATED { true } OPTIONAL +} + +PhysicalChannelCapability ::= SEQUENCE { + fddPhysChCapability SEQUENCE { + downlinkPhysChCapability DL-PhysChCapabilityFDD, + uplinkPhysChCapability UL-PhysChCapabilityFDD + } OPTIONAL, + -- tddPhysChCapability describes the 3.84Mcps TDD physical channel capability + tddPhysChCapability SEQUENCE { + downlinkPhysChCapability DL-PhysChCapabilityTDD, + uplinkPhysChCapability UL-PhysChCapabilityTDD + } OPTIONAL +} + +PhysicalChannelCapability-v770ext ::= SEQUENCE { + fddPhysChCapability SEQUENCE { + downlinkPhysChCapability DL-PhysChCapabilityFDD-v770ext, + uplinkPhysChCapability UL-PhysChCapabilityFDD-v770ext + } OPTIONAL, + tddPhysChCapability-384 SEQUENCE { + -- No TDD384 DL physical channel capability extension + uplinkPhysChCapability UL-PhysChCapabilityTDD-384-v770ext + } OPTIONAL, + tddPhysChCapability-768 SEQUENCE { + downlinkPhysChCapability DL-PhysChCapabilityTDD-768, + uplinkPhysChCapability UL-PhysChCapabilityTDD-768 + } OPTIONAL, + tddPhysChCapability-128 SEQUENCE { + downlinkPhysChCapability DL-PhysChCapabilityTDD-128-v770ext, + uplinkPhysChCapability UL-PhysChCapabilityTDD-128-v770ext + } OPTIONAL +} + +PhysicalChannelCapability-v860ext ::= SEQUENCE { + fddPhysChCapability SEQUENCE { + downlinkPhysChCapability DL-PhysChCapabilityFDD-v860ext + } OPTIONAL, + tddPhysChCapability-128 SEQUENCE { + downlinkPhysChCapability DL-PhysChCapabilityTDD-128-v860ext + } OPTIONAL +} + +PhysicalChannelCapability-v920ext ::= SEQUENCE { + fddPhysChCapability SEQUENCE { + downlinkPhysChCapability DL-PhysChCapabilityFDD-v920ext, + uplinkPhysChCapability UL-PhysChCapabilityFDD-v920ext + } OPTIONAL +} + +PhysicalChannelCapability-va40ext ::= SEQUENCE { + fddPhysChCapability SEQUENCE { + downlinkPhysChCapability DL-PhysChCapabilityFDD-va40ext + } OPTIONAL, + tddPhysChCapability-128 SEQUENCE { + downlinkPhysChCapability DL-PhysChCapabilityInfoTDD-128-va40ext, + uplinkPhysChCapability UL-PhysChCapabilityInfoTDD-128-va40ext + } OPTIONAL +} + +PhysicalChannelCapability-vb50ext ::= SEQUENCE { + fddPhysChCapability SEQUENCE { + downlinkPhysChCapability DL-PhysChCapabilityFDD-vb50ext, + uplinkPhysChCapability UL-PhysChCapabilityFDD-vb50ext + } OPTIONAL +} + +PhysicalChannelCapabilityInfo-v770ext ::= SEQUENCE { + tddPhysChCapability-768 SEQUENCE { + downlinkPhysChCapability DL-PhysChCapabilityInfoTDD-768, + uplinkPhysChCapability UL-PhysChCapabilityTDD + } OPTIONAL, + tddPhysChCapability-128 SEQUENCE { + uplinkPhysChCapability UL-PhysChCapabilityInfoTDD-128-v770ext + } OPTIONAL +} + +-- PhysicalChannelCapability-LCR-r4 describes the 1.28Mcps TDD physical channel capability +PhysicalChannelCapability-LCR-r4 ::= SEQUENCE { + tdd128-PhysChCapability SEQUENCE { + downlinkPhysChCapability DL-PhysChCapabilityTDD-LCR-r4, + uplinkPhysChCapability UL-PhysChCapabilityTDD-LCR-r4 + } OPTIONAL +} + +-- PhysicalChannelCapability-hspdsch-r5 describes the HS-PDSCH physical channel capability +PhysicalChannelCapability-hspdsch-r5 ::= SEQUENCE { + fdd-hspdsch CHOICE { + supported SEQUENCE { + -- hsdsch-physical-layer-category values shall be restricted to the range [1..12] + -- even if the UE physical capability category is above 12. + hsdsch-physical-layer-category HSDSCH-physical-layer-category, + -- dummy and dummy2 are not used in this version of the specification + -- and if received they should be ignored. + dummy BOOLEAN, + dummy2 BOOLEAN + }, + unsupported NULL + }, + tdd384-hspdsch CHOICE { + supported HSDSCH-physical-layer-category, + unsupported NULL + }, + tdd128-hspdsch CHOICE { + supported HSDSCH-physical-layer-category, + unsupported NULL + } +} + +PNBSCH-Allocation-r4 ::= SEQUENCE { + numberOfRepetitionsPerSFNPeriod ENUMERATED { + c2, c3, c4, c5, c6, c7, c8, c9, c10, + c12, c14, c16, c18, c20, c24, c28, c32, + c36, c40, c48, c56, c64, c72, c80 } +} + +Pre-RedirectionInfo ::= SEQUENCE { + supportEUTRA-FDD BOOLEAN, + supportEUTRA-TDD BOOLEAN +} + +ProtocolErrorCause ::= ENUMERATED { + asn1-ViolationOrEncodingError, + messageTypeNonexistent, + messageNotCompatibleWithReceiverState, + ie-ValueNotComprehended, + informationElementMissing, + messageExtensionNotComprehended, + spare2, spare1 } + +ProtocolErrorIndicator ::= ENUMERATED { + noError, errorOccurred } + +ProtocolErrorIndicatorWithMoreInfo ::= + CHOICE { + noError NULL, + errorOccurred SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + protocolErrorInformation ProtocolErrorInformation + } +} + +ProtocolErrorMoreInformation ::= SEQUENCE { + diagnosticsType CHOICE { + type1 CHOICE { + asn1-ViolationOrEncodingError NULL, + messageTypeNonexistent NULL, + messageNotCompatibleWithReceiverState + IdentificationOfReceivedMessage, + ie-ValueNotComprehended IdentificationOfReceivedMessage, + conditionalInformationElementError IdentificationOfReceivedMessage, + messageExtensionNotComprehended IdentificationOfReceivedMessage, + spare1 NULL, + spare2 NULL + }, + spare NULL + } +} + +RadioFrequencyBandEUTRA ::= INTEGER (1..64) + +RadioFrequencyBandEUTRAExt ::= INTEGER (65..256) + +RadioFrequencyBandFDD ::= ENUMERATED { + -- fdd2100, fdd1900, fdd1800 correspond to Band I, Band II and Band III respectively + fdd2100, + fdd1900, + fdd1800, + bandVI, + bandIV, + bandV, + bandVII, + extension-indicator } + +RadioFrequencyBandFDD2 ::= ENUMERATED { + bandVIII, + bandIX, + bandX, + bandXI, + bandXII, + bandXIII, + bandXIV, + bandXV, + bandXVI, + bandXVII, + bandXVIII, + bandXIX, + bandXX, + bandXXI, + bandXXII, + extension-indicator } + +RadioFrequencyBandFDD3 ::= ENUMERATED {spare64, spare63, bandXXV, bandXXVI, spare60, spare59, spare58, spare57, spare56, spare55, spare54, spare53, spare52, spare51, spare50, spare49, spare48, spare47, spare46, spare45, spare44, spare43, spare42, spare41, spare40, spare39, spare38, spare37, spare36, spare35, spare34, spare33, spare32, spare31, spare30, spare29, spare28, spare27, spare26, spare25, spare24, spare23, spare22, spare21, spare20, spare19, spare18, spare17, spare16, spare15, spare14, spare13, spare12, spare11, spare10, spare9, spare8, spare7, spare6, spare5, spare4, spare3, spare2, extension-indicator } + +RadioFrequencyBandTDDList ::= ENUMERATED { + a, b, c, ab, ac, bc, abc, spare } + +RadioFrequencyBandTDDList-r7 ::= ENUMERATED { + a, b, c, d, ab, ac, ad, bc, bd, cd, abc, abd, acd, bcd, + abcd, notabcd } + +RadioFrequencyBandTDDext ::= ENUMERATED { + e, f, g, h, i, j, k, l, m, n, o, p, spare4, spare3, + spare2, spare1 } + +RadioFrequencyBandTDDextList ::= SEQUENCE (SIZE (1..maxFreqBandsTDD-ext)) OF + RadioFrequencyBandTDDext + +RadioFrequencyBandTDD ::= ENUMERATED { + a, b, c, d } + +RadioFrequencyBandTDD-r10 ::= ENUMERATED { + a, b, c, d, e, f, spare2, spare1 } + +RadioFrequencyBandGSM ::= ENUMERATED { + gsm450, + gsm480, + gsm850, + gsm900P, + gsm900E, + gsm1800, + gsm1900, + spare9, spare8, spare7, spare6, spare5, + spare4, spare3, spare2, spare1} + +Rb-timer-indicator ::= SEQUENCE { + t314-expired BOOLEAN, + t315-expired BOOLEAN } + +Re-EstablishmentTimer ::= ENUMERATED { + useT314, useT315 +} + +RedirectionInfo ::= CHOICE { + frequencyInfo FrequencyInfo, + interRATInfo InterRATInfo +} + +RedirectionInfo-r6 ::= CHOICE { + frequencyInfo FrequencyInfo, + interRATInfo InterRATInfo-r6 +} + +RedirectionInfo-v860ext ::= CHOICE { + -- CHOICE frequencyInfo is provided in IE RedirectionInfo or IE RedirectionInfo-r6 + frequencyInfo NULL, + interRATInfo InterRATInfo-v860ext +} + +RejectionCause ::= ENUMERATED { + congestion, + unspecified } + +ReleaseCause ::= ENUMERATED { + normalEvent, + unspecified, + pre-emptiveRelease, + congestion, + re-establishmentReject, + directedsignallingconnectionre-establishment, + userInactivity, + spare } + +RF-Capability ::= SEQUENCE { + fddRF-Capability SEQUENCE { + ue-PowerClass UE-PowerClass, + txRxFrequencySeparation TxRxFrequencySeparation + } OPTIONAL, + tddRF-Capability SEQUENCE { + ue-PowerClass UE-PowerClass, + radioFrequencyTDDBandList RadioFrequencyBandTDDList, + chipRateCapability ChipRateCapability + } OPTIONAL +} + +RF-Capability-r4-ext ::= SEQUENCE { + tddRF-Capability SEQUENCE { + ue-PowerClass UE-PowerClass, + radioFrequencyBandTDDList RadioFrequencyBandTDDList, + chipRateCapability ChipRateCapability + } OPTIONAL +} + +RF-Capability-v770ext ::= SEQUENCE { + -- If TDD384 and/or TDD128 RF capability is indicated in IEs 'RF-Capability' or + -- 'RF-Capability-r4-ext', the corresponding IE 'RadioFrequencyBandTDDList-r7' shall + -- be included in this IE. + tdd384RF-Capability RadioFrequencyBandTDDList-r7 OPTIONAL, + tdd768RF-Capability SEQUENCE { + ue-PowerClass UE-PowerClass, + radioFrequencyBandTDDList RadioFrequencyBandTDDList-r7 + -- The element 'chipRateCapability' = 'mcps7-68' + } OPTIONAL, + tdd128RF-Capability RadioFrequencyBandTDDList-r7 OPTIONAL +} + +RF-Capability-v860ext ::= SEQUENCE { + tdd128RF-Capability RadioFrequencyBandTDDextList OPTIONAL, + tdd384RF-Capability RadioFrequencyBandTDDextList OPTIONAL, + tdd768RF-Capability RadioFrequencyBandTDDextList OPTIONAL +} + +RF-Capability-vaa0ext ::= SEQUENCE { + supportOfMFBI ENUMERATED { true } OPTIONAL +} + +RLC-Capability ::= SEQUENCE { + -- If present, the "totalRLC-AM-BufferSize" in the IE "RLC-Capability-r5-ext" overrides the + -- corresponding value in this IE. The value in this IE may be used by a pre-REL-5 UTRAN. + totalRLC-AM-BufferSize TotalRLC-AM-BufferSize, + maximumRLC-WindowSize MaximumRLC-WindowSize, + maximumAM-EntityNumber MaximumAM-EntityNumberRLC-Cap +} + +RLC-Capability-r5-ext ::= SEQUENCE { + totalRLC-AM-BufferSize TotalRLC-AM-BufferSize-r5-ext OPTIONAL +} + +RLC-Capability-v770ext ::= SEQUENCE { + supportOfTwoLogicalChannel BOOLEAN +} + +RLC-Capability-v920ext ::= SEQUENCE { + totalRLC-AM-BufferSize TotalRLC-AM-BufferSize-v920ext OPTIONAL +} + +RLC-Capability-va40ext ::= SEQUENCE { + totalRLC-AM-BufferSize TotalRLC-AM-BufferSize-va40ext OPTIONAL +} + +RLC-Capability-vb50ext ::= SEQUENCE { + totalRLC-AM-BufferSize TotalRLC-AM-BufferSize-vb50ext OPTIONAL +} + +RRC-ConnectionReleaseInformation ::= CHOICE { + noRelease NULL, + release SEQUENCE { + releaseCause ReleaseCause + } +} + +RRC-MessageSequenceNumber ::= INTEGER (0..15) + + +RRC-MessageSequenceNumberList ::= SEQUENCE (SIZE (4..5)) OF + RRC-MessageSequenceNumber + +RRC-StateIndicator ::= ENUMERATED { + cell-DCH, cell-FACH, cell-PCH, ura-PCH } + +RRC-TransactionIdentifier ::= INTEGER (0..3) + +RSR-VCC-Info ::= SEQUENCE { + nonce BIT STRING (SIZE (128)) OPTIONAL, + ims-Information OCTET STRING (SIZE (1.. 32)) +} + +S-RNTI ::= BIT STRING (SIZE (20)) + +S-RNTI-2 ::= BIT STRING (SIZE (10)) + +SecurityCapability ::= SEQUENCE { + cipheringAlgorithmCap BIT STRING { + -- For each bit value "0" means false/ not supported + spare15(0), + spare14(1), + spare13(2), + spare12(3), + spare11(4), + spare10(5), + spare9(6), + spare8(7), + spare7(8), + spare6(9), + spare5(10), + spare4(11), + spare3(12), + uea2(13), + uea1(14), + uea0(15) + } (SIZE (16)), + integrityProtectionAlgorithmCap BIT STRING { + -- For each bit value "0" means false/ not supported + spare15(0), + spare14(1), + spare13(2), + spare12(3), + spare11(4), + spare10(5), + spare9(6), + spare8(7), + spare7(8), + spare6(9), + spare5(10), + spare4(11), + spare3(12), + uia2(13), + uia1(14), + spare0(15) + } (SIZE (16)) +} + +SecondaryServingEDCHCell-Info ::= SEQUENCE { + primary-E-RNTI E-RNTI OPTIONAL, + secondary-E-RNTI E-RNTI OPTIONAL + } + +SecondaryEDCH-Info-Common ::= SEQUENCE { + frequencyInfo FrequencyInfo, + scramblingCodeType ScramblingCodeType, + scramblingCodeNumber UL-ScramblingCode, + ms2-SchedTransmGrantHARQAlloc BIT STRING (SIZE (8)) OPTIONAL, + servingGrant SEQUENCE { + primary-Secondary-GrantSelector ENUMERATED { primary, secondary } + } OPTIONAL, + minReduced-E-DPDCH-GainFactor MinReduced-E-DPDCH-GainFactor OPTIONAL, + e-DCH-minimumSet-E-TFCI E-DCH-MinimumSet-E-TFCI OPTIONAL, + dpcchPowerOffset-SecondaryULFrequency INTEGER(0..7), + pc-Preamble PC-Preamble +} + +Serving-HSDSCH-CellInformation ::= SEQUENCE { + deltaACK DeltaACK OPTIONAL, + deltaNACK DeltaNACK OPTIONAL, + harq-Preamble-Mode HARQ-Preamble-Mode, + primaryCPICH-Info PrimaryCPICH-Info OPTIONAL, + dl-hspdsch-Information DL-HSPDSCH-Information OPTIONAL, + harqInfo HARQ-Info OPTIONAL, + mac-hsResetIndicator ENUMERATED { true } OPTIONAL +} + +Serving-HSDSCH-CellInformation-r7 ::= SEQUENCE { + deltaACK DeltaACK OPTIONAL, + deltaNACK DeltaNACK OPTIONAL, + harq-Preamble-Mode HARQ-Preamble-Mode, + primaryCPICH-Info PrimaryCPICH-Info OPTIONAL, + dl-hspdsch-Information DL-HSPDSCH-Information-r7 OPTIONAL, + harqInfo HARQ-Info-r7 OPTIONAL, + mac-hsResetIndicator ENUMERATED { true } OPTIONAL +} + +Serving-HSDSCH-CellInformation-r8 ::= SEQUENCE { + deltaACK DeltaACK OPTIONAL, + deltaNACK DeltaNACK OPTIONAL, + harq-Preamble-Mode HARQ-Preamble-Mode, + primaryCPICH-Info PrimaryCPICH-Info OPTIONAL, + dl-hspdsch-Information DL-HSPDSCH-Information-r8 OPTIONAL, + harqInfo HARQ-Info-r7 OPTIONAL, + mac-hsResetIndicator ENUMERATED { true } OPTIONAL +} + +Serving-HSDSCH-CellInformation-r9 ::= SEQUENCE { + deltaACK DeltaACK OPTIONAL, + deltaNACK DeltaNACK OPTIONAL, + harq-Preamble-Mode HARQ-Preamble-Mode, + primaryCPICH-Info PrimaryCPICH-Info OPTIONAL, + dl-hspdsch-Information DL-HSPDSCH-Information-r9 OPTIONAL, + harqInfo HARQ-Info-r7 OPTIONAL, + mac-hsResetIndicator ENUMERATED { true } OPTIONAL +} + +Serving-HSDSCH-CellInformation-r11 ::= SEQUENCE { + deltaACK DeltaACK-r11 OPTIONAL, + deltaNACK DeltaNACK-r11 OPTIONAL, + harq-Preamble-Mode HARQ-Preamble-Mode, + primaryCPICH-Info PrimaryCPICH-Info OPTIONAL, + dl-hspdsch-Information DL-HSPDSCH-Information-r11 OPTIONAL, + harqInfo HARQ-Info-r11 OPTIONAL, + mac-hsResetIndicator ENUMERATED { true } OPTIONAL, + mac-hsResetIndicator-assisting ENUMERATED { true } OPTIONAL +} + +SimultaneousSCCPCH-DPCH-Reception ::= CHOICE { + notSupported NULL, + supported SEQUENCE { + maxNoSCCPCH-RL MaxNoSCCPCH-RL, + -- simultaneousSCCPCH-DPCH-DPDCH-Reception is applicable only if + -- the IE Support of PDSCH = TRUE + -- Note: the reference to DPDCH in the element name below is incorrect (see tabular). The + -- name is not changed, to keep it aligned with R99. + simultaneousSCCPCH-DPCH-DPDCH-Reception BOOLEAN + } +} + +SRNC-Identity ::= BIT STRING (SIZE (12)) + +SR-VCC-Info ::= SEQUENCE { + nonce BIT STRING (SIZE (128)) OPTIONAL +} + +SR-VCC-SecurityRABInfo-v860ext ::= SEQUENCE { + sr-vcc-Info SR-VCC-Info, + rab-InfoReplace RAB-InfoReplace +} + +START-Value ::= BIT STRING (SIZE (20)) + +STARTList ::= SEQUENCE (SIZE (1..maxCNdomains)) OF + STARTSingle + +STARTSingle ::= SEQUENCE { + cn-DomainIdentity CN-DomainIdentity, + start-Value START-Value +} + +SystemSpecificCapUpdateReq ::= ENUMERATED { + gsm } + +SystemSpecificCapUpdateReq-v590ext ::= ENUMERATED { + geranIu } + +SystemSpecificCapUpdateReq-r5 ::= ENUMERATED { + gsm, geranIu } + +SystemSpecificCapUpdateReq-r8 ::= ENUMERATED { + gsm, geranIu, eutra, spare5, + spare4, spare3, spare2, spare1 } + +SystemSpecificCapUpdateReqList ::= SEQUENCE (SIZE (1..maxSystemCapability)) OF + SystemSpecificCapUpdateReq + +SystemSpecificCapUpdateReqList-r5 ::= SEQUENCE (SIZE (1..maxSystemCapability)) OF + SystemSpecificCapUpdateReq-r5 + +SystemSpecificCapUpdateReqList-r8 ::= SEQUENCE (SIZE (1..maxSystemCapability)) OF + SystemSpecificCapUpdateReq-r8 + +T-300 ::= ENUMERATED { + ms100, ms200, ms400, ms600, ms800, + ms1000, ms1200, ms1400, ms1600, + ms1800, ms2000, ms3000, ms4000, + ms6000, ms8000 } + +T-301 ::= ENUMERATED { + ms100, ms200, ms400, ms600, ms800, + ms1000, ms1200, ms1400, ms1600, + ms1800, ms2000, ms3000, ms4000, + ms6000, ms8000, spare } + +T-302 ::= ENUMERATED { + ms100, ms200, ms400, ms600, ms800, + ms1000, ms1200, ms1400, ms1600, + ms1800, ms2000, ms3000, ms4000, + ms6000, ms8000, spare } + +T-304 ::= ENUMERATED { + ms100, ms200, ms400, + ms1000, ms2000, spare3, spare2, spare1 } + +T-305 ::= ENUMERATED { + noUpdate, m5, m10, m30, + m60, m120, m360, m720 } + +T-307 ::= ENUMERATED { + s5, s10, s15, s20, + s30, s40, s50, spare } + +T-308 ::= ENUMERATED { + ms40, ms80, ms160, ms320 } + +T-309 ::= INTEGER (1..8) + +T-310 ::= ENUMERATED { + ms40, ms80, ms120, ms160, + ms200, ms240, ms280, ms320 } + +T-311 ::= ENUMERATED { + ms250, ms500, ms750, ms1000, + ms1250, ms1500, ms1750, ms2000 } + +-- The value 0 for T-312 is not used in this version of the specification +T-312 ::= INTEGER (0..15) + +T-313 ::= INTEGER (0..15) + +T-314 ::= ENUMERATED { + s0, s2, s4, s6, s8, + s12, s16, s20 } + +T-315 ::= ENUMERATED { + s0, s10, s30, s60, s180, + s600, s1200, s1800 } + +T-316 ::= ENUMERATED { + s0, s10, s20, s30, s40, + s50, s-inf, spare } + +-- All the values are changed to "infinity" in Rel-5 +T-317 ::= ENUMERATED { + infinity0, infinity1, infinity2, infinity3, infinity4, + infinity5, infinity6, infinity7} + +T-318 ::= ENUMERATED { + ms250, ms500, ms750, ms1000, ms1250, ms1500, + ms1750, ms2000, ms3000, ms4000, ms6000, ms8000, + ms10000, ms12000, ms16000 } + +T-319 ::= ENUMERATED { + ms80, ms160, ms320, ms640, ms1280, ms2560, ms5120 } + +T-321 ::= ENUMERATED { + ms100, ms200, ms400, ms800 } + +T-322 ::= ENUMERATED { m5, m10, m20, m30, m60, + m120, m180, spare1 } + +T-323 ::= ENUMERATED { s0, s5, s10, s20, s30, s60, s90, s120 } + +T-328 ::= ENUMERATED { ms20, ms40, ms60, ms80 } + +T-329 ::= ENUMERATED { s05p, s1, s2, s4 } + +T-CPCH ::= ENUMERATED { + ct0, ct1 } + +TMSI-and-LAI-GSM-MAP ::= SEQUENCE { + tmsi TMSI-GSM-MAP, + lai LAI +} + +TMSI-DS-41 ::= OCTET STRING (SIZE (2..17)) + +TotalRLC-AM-BufferSize ::= ENUMERATED { + dummy, kb10, kb50, kb100, + kb150, kb500, kb1000, spare } + +TotalRLC-AM-BufferSize-r5-ext ::= ENUMERATED { + kb200, kb300, kb400, kb750 } + +TotalRLC-AM-BufferSize-v920ext ::= ENUMERATED { + kb1150, kb1250 } + +TotalRLC-AM-BufferSize-va40ext ::= ENUMERATED { + kb1500, kb1800, kb2300, kb2550 } + +TotalRLC-AM-BufferSize-vb50ext ::= ENUMERATED { + kb3400, kb3500, kb4400, kb4500, kb5000, spare3, spare2, spare1 } + +-- Actual value TransmissionProbability = IE value * 0.125 +TransmissionProbability ::= INTEGER (1..8) + +TransportChannelCapability ::= SEQUENCE { + dl-TransChCapability DL-TransChCapability, + ul-TransChCapability UL-TransChCapability +} + +TurboSupport ::= CHOICE { + notSupported NULL, + supported MaxNoBits +} + +-- Values defined as spare shall not be sent in this version of the protocol. If a spare value is +-- received, it should be interpreted as 'default-RxTX-sparation'. +TxRxFrequencySeparation ::= ENUMERATED { + default-TxRx-separation, spare2, spare1 } + +U-RNTI ::= SEQUENCE { + srnc-Identity SRNC-Identity, + s-RNTI S-RNTI +} + +U-RNTI-Group ::= CHOICE { +-- TABULAR: not following the tabular strictly, but this will most likely save bits + all NULL, + u-RNTI-BitMaskIndex-b1 BIT STRING (SIZE (31)), + u-RNTI-BitMaskIndex-b2 BIT STRING (SIZE (30)), + u-RNTI-BitMaskIndex-b3 BIT STRING (SIZE (29)), + u-RNTI-BitMaskIndex-b4 BIT STRING (SIZE (28)), + u-RNTI-BitMaskIndex-b5 BIT STRING (SIZE (27)), + u-RNTI-BitMaskIndex-b6 BIT STRING (SIZE (26)), + u-RNTI-BitMaskIndex-b7 BIT STRING (SIZE (25)), + u-RNTI-BitMaskIndex-b8 BIT STRING (SIZE (24)), + u-RNTI-BitMaskIndex-b9 BIT STRING (SIZE (23)), + u-RNTI-BitMaskIndex-b10 BIT STRING (SIZE (22)), + u-RNTI-BitMaskIndex-b11 BIT STRING (SIZE (21)), + u-RNTI-BitMaskIndex-b12 BIT STRING (SIZE (20)), + u-RNTI-BitMaskIndex-b13 BIT STRING (SIZE (19)), + u-RNTI-BitMaskIndex-b14 BIT STRING (SIZE (18)), + u-RNTI-BitMaskIndex-b15 BIT STRING (SIZE (17)), + u-RNTI-BitMaskIndex-b16 BIT STRING (SIZE (16)), + u-RNTI-BitMaskIndex-b17 BIT STRING (SIZE (15)), + u-RNTI-BitMaskIndex-b18 BIT STRING (SIZE (14)), + u-RNTI-BitMaskIndex-b19 BIT STRING (SIZE (13)), + u-RNTI-BitMaskIndex-b20 BIT STRING (SIZE (12)), + u-RNTI-BitMaskIndex-b21 BIT STRING (SIZE (11)), + u-RNTI-BitMaskIndex-b22 BIT STRING (SIZE (10)), + u-RNTI-BitMaskIndex-b23 BIT STRING (SIZE (9)), + u-RNTI-BitMaskIndex-b24 BIT STRING (SIZE (8)), + u-RNTI-BitMaskIndex-b25 BIT STRING (SIZE (7)), + u-RNTI-BitMaskIndex-b26 BIT STRING (SIZE (6)), + u-RNTI-BitMaskIndex-b27 BIT STRING (SIZE (5)), + u-RNTI-BitMaskIndex-b28 BIT STRING (SIZE (4)), + u-RNTI-BitMaskIndex-b29 BIT STRING (SIZE (3)), + u-RNTI-BitMaskIndex-b30 BIT STRING (SIZE (2)), + u-RNTI-BitMaskIndex-b31 BIT STRING (SIZE (1)) +} + +U-RNTI-Short ::= SEQUENCE { + srnc-Identity SRNC-Identity, + s-RNTI-2 S-RNTI-2 +} + +UE-BasedNetworkPerformanceMeasurementsParameters ::= SEQUENCE { + supportOfLoggedMeasurementsIdlePCH ENUMERATED { true } OPTIONAL +} + +UE-CapabilityContainer-IEs ::= SEQUENCE { +-- Container for transparent transfer of capability information not related to +-- features for which early implementation is desired + ue-RadioAccessCapability-v690ext UE-RadioAccessCapability-v690ext, + ue-RATSpecificCapability-v690ext InterRAT-UE-RadioAccessCapability-v690ext OPTIONAL, + v6b0NonCriticalExtensions SEQUENCE { + ue-RadioAccessCapability-v6b0ext UE-RadioAccessCapability-v6b0ext-IEs, + v6e0NonCriticalExtensions SEQUENCE { + ue-RadioAccessCapability-v6e0ext UE-RadioAccessCapability-v6e0ext-IEs, + v770NonCriticalExtensions SEQUENCE { + ue-RadioAccessCapability-v770ext UE-RadioAccessCapability-v770ext-IEs, + v790NonCriticalExtensions SEQUENCE { + ue-RadioAccessCapability-v790ext UE-RadioAccessCapability-v790ext-IEs, + v860NonCriticalExtensions SEQUENCE { + ue-RadioAccessCapability-v860ext + UE-RadioAccessCapability-v860ext-IEs, + ue-RATSpecificCapability-v860ext + InterRAT-UE-RadioAccessCapability-v860ext OPTIONAL, + v880NonCriticalExtensions SEQUENCE { + ue-RadioAccessCapability-v880ext + UE-RadioAccessCapability-v880ext-IEs, + v890NonCriticalExtensions SEQUENCE { + ue-RadioAccessCapability-v890ext + UE-RadioAccessCapability-v890ext-IEs, + v920NonCriticalExtensions SEQUENCE { + ue-RadioAccessCapability-v920ext + UE-RadioAccessCapability-v920ext-IEs, + v970NonCriticalExtensions SEQUENCE { + ue-RadioAccessCapability-v970ext + UE-RadioAccessCapability-v970ext-IEs, + va40NonCriticalExtensions SEQUENCE { + ue-RadioAccessCapability-va40ext + UE-RadioAccessCapability-va40ext-IEs, + va60NonCriticalExtensions SEQUENCE { + ue-RadioAccessCapability-va60ext + UE-RadioAccessCapability-va60ext-IEs, + va80NonCriticalExtensions SEQUENCE { + ue-RadioAccessCapability-va80ext + UE-RadioAccessCapability-va80ext-IEs, + laterNonCriticalExtensions + UE-RadioAccessCapability-LaterNonCriticalExtensions OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +UE-RadioAccessCapability-v6b0ext-IEs ::= SEQUENCE { + -- User equipment IEs + supportForSIB11bis ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapability-v6e0ext-IEs ::= SEQUENCE { + -- User equipment IEs + supportForFDPCH ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapability-v770ext-IEs ::= SEQUENCE { + -- User equipment IEs + pdcp-Capability PDCP-Capability-v770ext OPTIONAL, + rlc-Capability RLC-Capability-v770ext, + rf-Capability RF-Capability-v770ext OPTIONAL, + physicalChannelCapability PhysicalChannelCapability-v770ext, + multiModeRAT-Capability MultiModeRAT-Capability-v770ext, + ue-PositioningCapability UE-PositioningCapability-v770ext, + mac-ehsSupport ENUMERATED { true } OPTIONAL, + ue-specificCapabilityInformation UE-SpecificCapabilityInformation-LCRTDD OPTIONAL +} + +UE-RadioAccessCapability-v790ext-IEs ::= SEQUENCE { + -- User equipment IEs + supportForEDPCCHPowerBoosting ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapability-v860ext-IEs ::= SEQUENCE { + -- UE radio access capability + rf-Capability RF-Capability-v860ext OPTIONAL, + physicalChannelCapability PhysicalChannelCapability-v860ext, + multiModeRAT-Capability MultiModeRAT-Capability-v860ext, + ue-PositioningCapability UE-PositioningCapability-v860ext, + measurementCapability MeasurementCapability-v860ext OPTIONAL, + measurementCapabilityTDD MeasurementCapabilityTDD OPTIONAL, + supportOfCommonEDCH ENUMERATED { true } OPTIONAL, + supportOfMACiis ENUMERATED { true } OPTIONAL, + supportOfSPSOperation ENUMERATED { true } OPTIONAL, + supportOfControlChannelDRXOperation ENUMERATED { true } OPTIONAL, + supportOfCSG ENUMERATED { true } OPTIONAL, + -- UE radio access capability extension + ue-RadioAccessCapabBandFDDList3 UE-RadioAccessCapabBandFDDList3 OPTIONAL +} + +UE-RadioAccessCapability-v880ext-IEs ::= SEQUENCE { + -- UE radio access capability + supportForPriorityReselectionInUTRAN ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapability-v890ext-IEs ::= SEQUENCE { + -- UE radio access capability + supportCellSpecificTxDiversityinDC-Operation ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapability-v920ext-IEs ::= SEQUENCE { + -- UE physical channel capability, + ue-RadioAccessCapabBandCombList UE-RadioAccessCapabBandCombList OPTIONAL, + physicalChannelCapability PhysicalChannelCapability-v920ext, + rlc-Capability RLC-Capability-v920ext, + supportOfenhancedTS0 ENUMERATED { true } OPTIONAL, + measurementCapability MeasurementCapability-v920ext OPTIONAL, + -- UE radio access capability + csgProximityIndicationCapability CSG-ProximityIndicationCapability OPTIONAL, + neighCellSI-AcquisitionCapability NeighCellSI-AcquisitionCapability OPTIONAL +} + +UE-RadioAccessCapability-v970ext-IEs ::= SEQUENCE { + -- UE physical channel capability + ue-ExtendedMeasurementSupport ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapability-v9c0ext-IEs ::= SEQUENCE { + -- UE voice over IMS related capability + voiceOverUTRA-PS-HS-Support ENUMERATED { true } OPTIONAL, + srvcc-SupportFromUTRA-to-UTRA ENUMERATED { true } OPTIONAL, + srvcc-SupportFromUTRA-to-GERAN ENUMERATED { true } OPTIONAL, + -- UE radio access capability + ue-supportMac-ehsWindowSizeExtension ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapability-LaterNonCriticalExtensions ::= SEQUENCE { + v9c0NonCriticalExtensions SEQUENCE { + ue-RadioAccessCapability-v9c0ext UE-RadioAccessCapability-v9c0ext-IEs, + vaa0NonCriticalExtensions SEQUENCE { + ue-RadioAccessCapability-vaa0ext UE-RadioAccessCapability-vaa0ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + ue-RadioAccessCapability-vb50ext UE-RadioAccessCapability-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } +} + + +UE-RadioAccessCapability-va40ext-IEs ::= SEQUENCE { + -- UE physical channel capability + ue-RadioAccessCapabBandCombList-va40ext + UE-RadioAccessCapabBandCombList-va40ext OPTIONAL, + physicalChannelCapability PhysicalChannelCapability-va40ext, + rlc-Capability RLC-Capability-va40ext, + measurementCapability MeasurementCapability-va40ext OPTIONAL, + supportOfMUMIMO ENUMERATED { uplink, uplink-and-downlink } OPTIONAL, + supportForDualCellMimoInDifferentBands ENUMERATED { true } OPTIONAL, + ue-BasedNetworkPerformanceMeasurementsParameters + UE-BasedNetworkPerformanceMeasurementsParameters OPTIONAL, + supportOfUTRANANR ENUMERATED { true } OPTIONAL, + -- UE radio access capability extension + ue-RadioAccessCapabBandFDDList4 UE-RadioAccessCapabBandFDDList4 OPTIONAL +} + +UE-RadioAccessCapability-va60ext-IEs ::= SEQUENCE { + ue-RadioAccessCapabBandFDDList4 UE-RadioAccessCapabBandFDDList4-va60ext OPTIONAL +} + +UE-RadioAccessCapability-va80ext-IEs ::= SEQUENCE { + ue-RadioAccessCapabBandFDDList4 UE-RadioAccessCapabBandFDDList4-va80ext OPTIONAL +} + +UE-RadioAccessCapability-vaa0ext-IEs ::= SEQUENCE { + supportOfUMRLCre-establish-via-reconfig ENUMERATED { true } OPTIONAL, + rf-capability RF-Capability-vaa0ext OPTIONAL +} + +UE-RadioAccessCapability-vb50ext-IEs ::= SEQUENCE { + multiModeRAT-Capability MultiModeRAT-Capability-vb50ext, + supportOfCommonERGCHBasedInterferenceControl ENUMERATED { true } OPTIONAL, + supportOfFallbackToR99PRACH ENUMERATED { true } OPTIONAL, + supportOfConcurrentDeployment ENUMERATED { true } OPTIONAL, + supportOfTTIalignmentAndPerHARQProcess ENUMERATED { true } OPTIONAL, + -- UE physical channel capability + ue-RadioAccessCapabBandCombList-vb50ext + UE-RadioAccessCapabBandCombList-vb50ext OPTIONAL, + multiflowCapabBandCombList MultiflowCapabBandCombList OPTIONAL, + physicalChannelCapability PhysicalChannelCapability-vb50ext, + rlc-Capability RLC-Capability-vb50ext, + multiflowCapability MultiflowCapability OPTIONAL, + -- UE radio access capability extension + ue-RadioAccessCapabBandFDDList6 UE-RadioAccessCapabBandFDDList6 OPTIONAL, + -- Measurement capability + measurementCapability MeasurementCapability-vb50ext OPTIONAL, + measurementCapabilityTDD MeasurementCapabilityTDD-vb50ext OPTIONAL, + -- UE voice over IMS related capability + rsrvcc-SupportFromUTRA-CS-to-EUTRA-FDD ENUMERATED { true } OPTIONAL, + rsrvcc-SupportFromUTRA-CS-to-EUTRA-TDD ENUMERATED { true } OPTIONAL, + supportOfHSDPCCHPowerOffsetExtension ENUMERATED { true } OPTIONAL, + supportOfSTTDOnDLControlChannelsWhenMultiflowOperationIsActive ENUMERATED { true } OPTIONAL +} + +UE-ConnTimersAndConstants ::= SEQUENCE { +-- Optional is used also for parameters for which the default value is the last one read in SIB1 +-- t-301 and n-301 should not be used by the UE in this version of the specification + t-301 T-301 DEFAULT ms2000, + n-301 N-301 DEFAULT 2, + t-302 T-302 DEFAULT ms4000, + n-302 N-302 DEFAULT 3, + t-304 T-304 DEFAULT ms2000, + n-304 N-304 DEFAULT 2, + t-305 T-305 DEFAULT m30, + t-307 T-307 DEFAULT s30, + t-308 T-308 DEFAULT ms160, + t-309 T-309 DEFAULT 5, + t-310 T-310 DEFAULT ms160, + n-310 N-310 DEFAULT 4, + t-311 T-311 DEFAULT ms2000, + t-312 T-312 DEFAULT 1, + -- n-312 shall be ignored if n-312 in UE-ConnTimersAndConstants-v3a0ext is present, and the + -- value of that element shall be used instead. + n-312 N-312 DEFAULT s1, + t-313 T-313 DEFAULT 3, + n-313 N-313 DEFAULT s20, + t-314 T-314 DEFAULT s12, + t-315 T-315 DEFAULT s180, + -- n-315 shall be ignored if n-315 in UE-ConnTimersAndConstants-v3a0ext is present, and the + -- value of that element shall be used instead. + n-315 N-315 DEFAULT s1, + t-316 T-316 DEFAULT s30, + t-317 T-317 DEFAULT infinity4 +} + +UE-ConnTimersAndConstants-v3a0ext ::= SEQUENCE { + n-312 N-312ext OPTIONAL, + n-315 N-315ext OPTIONAL +} + +UE-ConnTimersAndConstants-r5 ::= SEQUENCE { +-- Optional is used also for parameters for which the default value is the last one read in SIB1 +-- t-301 and n-301 should not be used by the UE in this version of the specification + t-301 T-301 DEFAULT ms2000, + n-301 N-301 DEFAULT 2, + t-302 T-302 DEFAULT ms4000, + n-302 N-302 DEFAULT 3, + t-304 T-304 DEFAULT ms2000, + n-304 N-304 DEFAULT 2, + t-305 T-305 DEFAULT m30, + t-307 T-307 DEFAULT s30, + t-308 T-308 DEFAULT ms160, + t-309 T-309 DEFAULT 5, + t-310 T-310 DEFAULT ms160, + n-310 N-310 DEFAULT 4, + t-311 T-311 DEFAULT ms2000, + t-312 T-312 DEFAULT 1, + n-312 N-312-r5 DEFAULT s1, + t-313 T-313 DEFAULT 3, + n-313 N-313 DEFAULT s20, + t-314 T-314 DEFAULT s12, + t-315 T-315 DEFAULT s180, + n-315 N-315-r5 DEFAULT s1, + t-316 T-316 DEFAULT s30, + t-317 T-317 DEFAULT infinity4 +} + +UE-ConnTimersAndConstants-v860ext ::= SEQUENCE { + t-323 T-323 OPTIONAL +} + +UE-ConnTimersAndConstants-r11 ::= SEQUENCE { +-- Optional is used also for parameters for which the default value is the last one read in SIB1 +-- t-301 and n-301 should not be used by the UE in this version of the specification + t-301 T-301 DEFAULT ms2000, + n-301 N-301 DEFAULT 2, + t-302 T-302 DEFAULT ms4000, + n-302 N-302 DEFAULT 3, + t-304 T-304 DEFAULT ms2000, + n-304 N-304 DEFAULT 2, + t-305 T-305 DEFAULT m30, + t-307 T-307 DEFAULT s30, + t-308 T-308 DEFAULT ms160, + t-309 T-309 DEFAULT 5, + t-310 T-310 DEFAULT ms160, + n-310 N-310 DEFAULT 4, + t-311 T-311 DEFAULT ms2000, + t-312 T-312 DEFAULT 1, + n-312 N-312-r5 DEFAULT s1, + t-313 T-313 DEFAULT 3, + n-313 N-313 DEFAULT s20, + t-314 T-314 DEFAULT s12, + t-315 T-315 DEFAULT s180, + n-315 N-315-r5 DEFAULT s1, + t-316 T-316 DEFAULT s30, + t-317 T-317 DEFAULT infinity4, + t-323 T-323 OPTIONAL +} + +UE-GANSSPositioning-Capability ::= SEQUENCE { + networkAssistedGANSS-supportedList NetworkAssistedGANSS-Supported-List OPTIONAL +} + +UE-GANSSPositioning-Capability-v860ext-IEs ::= SEQUENCE { + networkAssistedGANSS-supportedList NetworkAssistedGANSS-Supported-List-v860ext OPTIONAL +} + +UE-IdleTimersAndConstants ::= SEQUENCE { + t-300 T-300, + n-300 N-300, + t-312 T-312, + -- n-312 shall be ignored if n-312 in UE-IdleTimersAndConstants-v3a0ext is present, and the + -- value of that element shall be used instead. + n-312 N-312 +} + +UE-HSPA-Identities-r6 ::= SEQUENCE { + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL +} + +UE-IdleTimersAndConstants-v3a0ext ::= SEQUENCE { + n-312 N-312ext OPTIONAL +} + +UE-MultiModeRAT-Capability ::= SEQUENCE { + multiRAT-CapabilityList MultiRAT-Capability, + multiModeCapability MultiModeCapability +} + +UE-PowerClass ::= INTEGER (1..4) + +UE-PowerClassExt ::= ENUMERATED {class1, class2, class3, class4, + spare4, spare3, spare2, spare1 } + +UE-RadioAccessCapability ::= SEQUENCE { + -- UE-RadioAccessCapability is compatible with R99, although accessStratumReleaseIndicator + -- is removed from this IE, since its encoding did not result in bits. The + -- accessStratumReleaseIndicator is provided in the relevant REL-4 extension IEs. + pdcp-Capability PDCP-Capability, + rlc-Capability RLC-Capability, + transportChannelCapability TransportChannelCapability, + rf-Capability RF-Capability, + physicalChannelCapability PhysicalChannelCapability, + ue-MultiModeRAT-Capability UE-MultiModeRAT-Capability, + securityCapability SecurityCapability, + ue-positioning-Capability UE-Positioning-Capability, + measurementCapability MeasurementCapability OPTIONAL +} + +UE-RadioAccessCapabilityInfo ::= SEQUENCE { + ue-RadioAccessCapability UE-RadioAccessCapability, + ue-RadioAccessCapability-v370ext UE-RadioAccessCapability-v370ext +} + +UE-RadioAccessCapability-v370ext ::= SEQUENCE { + ue-RadioAccessCapabBandFDDList UE-RadioAccessCapabBandFDDList +} + +UE-RadioAccessCapability-v380ext ::= SEQUENCE { + ue-PositioningCapabilityExt-v380 UE-PositioningCapabilityExt-v380 +} + +UE-RadioAccessCapability-v3a0ext ::= SEQUENCE { + ue-PositioningCapabilityExt-v3a0 UE-PositioningCapabilityExt-v3a0 +} + +UE-RadioAccessCapability-v3g0ext ::= SEQUENCE { + ue-PositioningCapabilityExt-v3g0 UE-PositioningCapabilityExt-v3g0 +} + +UE-RadioAccessCapability-v650ext ::= SEQUENCE { + ue-RadioAccessCapabBandFDDList2 UE-RadioAccessCapabBandFDDList2, + -- This IE shall be included if the UE also supports Band I-VII + ue-RadioAccessCapabBandFDDList-ext UE-RadioAccessCapabBandFDDList-ext OPTIONAL +} + +UE-RadioAccessCapability-v690ext ::= SEQUENCE { + physicalchannelcapability-edch PhysicalChannelCapability-edch-r6, + -- TABULAR: deviceType is MD in tabular description + -- Default value is 'doesBenefitFromBatteryConsumptionOptimisation' + deviceType ENUMERATED { doesNotBenefitFromBatteryConsumptionOptimisation } OPTIONAL +} + +UE-RadioAccessCapability-v7e0ext ::= SEQUENCE { + -- User equipment IEs + supportForTwoDRXSchemesInPCH ENUMERATED { true } OPTIONAL, + supportEDPDCHPowerInterpolation ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapability-v7f0ext ::= SEQUENCE { + supportofTxDivOnNonMIMOChannel ENUMERATED { true } OPTIONAL, + -- IE physicalChannelCapability-LCR and ue-RadioAccessCapabilityComp-TDD128 shall only be + -- included in InterRATHandoverInfo for 1.28 Mcps TDD, otherwise these IEs are not needed here. + physicalChannelCapability-LCR PhysicalChannelCapability-LCR-r4 OPTIONAL, + ue-RadioAccessCapabilityComp-TDD128 UE-RadioAccessCapabilityComp-TDD128-v7f0ext OPTIONAL +} + +UE-RadioAccessCapabilityInfo-v770ext ::= SEQUENCE { + rf-Capability RF-Capability-v770ext OPTIONAL, + physicalChannelCapability PhysicalChannelCapabilityInfo-v770ext, + ganssSupportIndication ENUMERATED { true } OPTIONAL, + mac-ehsSupport ENUMERATED { true } OPTIONAL, + ue-SpecificCapabilityInformation UE-SpecificCapabilityInformation-LCRTDD OPTIONAL +} + +UE-RadioAccessCapabilityInfo-TDD128-v8b0ext ::= SEQUENCE { + -- INTER RAT HANDOVER INFO + measurementCapabilityTDD MeasurementCapabilityTDD OPTIONAL, + hSDSCH-physical-layer-category-extension + HSDSCH-physical-layer-category-extension OPTIONAL +} + +UE-RadioAccessCapabilityInfo-TDD128-vb50ext ::= SEQUENCE { + -- INTER RAT HANDOVER INFO + measurementCapabilityTDD MeasurementCapabilityTDD-vb50ext OPTIONAL +} + +UE-RadioAccessCapability-v860ext ::= SEQUENCE { + ue-RadioAccessCapabBandFDDList3 UE-RadioAccessCapabBandFDDList3 +} + +UE-RadioAccessCapability-v880ext ::= SEQUENCE { + -- INTER RAT HANDOVER INFO + supportForPriorityReselectionInUTRAN ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapability-v890ext ::= SEQUENCE { + -- UE radio access capability + supportCellSpecificTxDiversityinDC-Operation ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapability-v920ext ::= SEQUENCE { + supportOfenhancedTS0 ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapability-va40ext ::= SEQUENCE { + ue-RadioAccessCapabBandFDDList4 UE-RadioAccessCapabBandFDDList4 +} + +UE-RadioAccessCapability-va60ext ::= SEQUENCE { + ue-RadioAccessCapabBandFDDList4 UE-RadioAccessCapabBandFDDList4-va60ext OPTIONAL +} + +UE-RadioAccessCapability-va80ext ::= SEQUENCE { + ue-RadioAccessCapabBandFDDList4-va60ext UE-RadioAccessCapabBandFDDList4-va60ext OPTIONAL, + ue-RadioAccessCapabBandFDDList4-va80ext UE-RadioAccessCapabBandFDDList4-va80ext OPTIONAL +} + +UE-RadioAccessCapability-vb50ext ::= SEQUENCE { + ue-RadioAccessCapabBandFDDList6 UE-RadioAccessCapabBandFDDList6 OPTIONAL +} + +UE-RadioAccessCapabBand-va40ext ::= SEQUENCE { + ue-RadioAccessCapabBandFDDList5 UE-RadioAccessCapabBandFDDList5, + -- This IE shall be included if the UE also supports Band I – Band XXII + ue-RadioAccessCapabBandFDDList-ext2 UE-RadioAccessCapabBandFDDList-ext2 OPTIONAL +} + +UE-RadioAccessCapabBandFDDList2 ::= SEQUENCE (SIZE (1..maxFreqBandsFDD)) OF + UE-RadioAccessCapabBandFDD2 + +UE-RadioAccessCapabBandFDDList3 ::= SEQUENCE (SIZE (1..maxFreqBandsFDD)) OF + UE-RadioAccessCapabBandFDD3 + +UE-RadioAccessCapabBandFDDList4 ::= SEQUENCE (SIZE (1..maxFreqBandsFDD)) OF + UE-RadioAccessCapabBandFDD4 + +UE-RadioAccessCapabBandFDDList4-va60ext ::= SEQUENCE (SIZE (1..maxFreqBandsFDD)) OF + UE-RadioAccessCapabBandFDD4-va60ext + +UE-RadioAccessCapabBandFDDList4-va80ext ::= SEQUENCE (SIZE (1..maxFreqBandsFDD-ext3)) OF + UE-RadioAccessCapabBandFDD4-va80ext + +UE-RadioAccessCapabBandFDDList5 ::= SEQUENCE (SIZE (1..maxFreqBandsFDD-ext2)) OF + UE-RadioAccessCapabBandFDD5 + +UE-RadioAccessCapabBandFDDList6 ::= SEQUENCE (SIZE (1..maxFreqBandsFDD3)) OF + UE-RadioAccessCapabBandFDD6 + +UE-RadioAccessCapabBandFDD2 ::= SEQUENCE { + radioFrequencyBandFDD2 RadioFrequencyBandFDD2, + fddRF-Capability SEQUENCE { + ue-PowerClass UE-PowerClassExt, + txRxFrequencySeparation TxRxFrequencySeparation + } OPTIONAL, + measurementCapability2 MeasurementCapabilityExt2 +} + +UE-RadioAccessCapabBandFDD3 ::= SEQUENCE { + -- UE may omit both IEs if this IE indicates the same EUTRA compressed + -- mode capability for all supported UTRA bands + -- Otherwise, the UE shall include either one of the following OPTIONAL IEs. + radioFrequencyBandFDD RadioFrequencyBandFDD OPTIONAL, + radioFrequencyBandFDD2 RadioFrequencyBandFDD2 OPTIONAL, + measurementCapability3 MeasurementCapabilityExt3 +} + +UE-RadioAccessCapabBandFDD4 ::= SEQUENCE { + -- UE may omit all the radioFrequencyBand IEs if this IE indicates the same + -- capability for all supported UTRA bands + -- Otherwise, the UE shall include either one of the following OPTIONAL IEs. + radioFrequencyBandFDD RadioFrequencyBandFDD OPTIONAL, + radioFrequencyBandFDD2 RadioFrequencyBandFDD2 OPTIONAL, + radioFrequencyBandFDD3 RadioFrequencyBandFDD3 OPTIONAL, + additionalSecondaryCells ENUMERATED { a1, a2 } OPTIONAL, + nonContiguousMultiCellCombinationList NonContiguousMultiCellCombinationList OPTIONAL +} + +UE-RadioAccessCapabBandFDD4-va60ext ::= SEQUENCE { + supportofULOLTD ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapabBandFDD4-va80ext ::= SEQUENCE { + -- UE may omit all the radioFrequencyBand IEs if this IE indicates the same + -- capability for all supported UTRA bands + -- Otherwise, the UE shall include either one of the following OPTIONAL IEs. + radioFrequencyBandFDD RadioFrequencyBandFDD OPTIONAL, + radioFrequencyBandFDD2 RadioFrequencyBandFDD2 OPTIONAL, + radioFrequencyBandFDD3 RadioFrequencyBandFDD3 OPTIONAL, + additionalSecondaryCells ENUMERATED { a1, a2 } OPTIONAL, + nonContiguousMultiCellCombinationList NonContiguousMultiCellCombinationList OPTIONAL, + supportofULOLTD ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapabBandFDD5 ::= SEQUENCE { + radioFrequencyBandFDD3 RadioFrequencyBandFDD3, + fddRF-Capability SEQUENCE { + ue-PowerClass UE-PowerClassExt, + txRxFrequencySeparation TxRxFrequencySeparation + } OPTIONAL, + measurementCapability4 MeasurementCapabilityExt4 +} + +UE-RadioAccessCapabBandFDD6 ::= SEQUENCE { + -- UE may omit all the radioFrequencyBand IEs if this IE indicates the same + -- capability for all supported UTRA bands + -- Otherwise, the UE shall include either one of the following OPTIONAL IEs. + radioFrequencyBandFDD RadioFrequencyBandFDD OPTIONAL, + radioFrequencyBandFDD2 RadioFrequencyBandFDD2 OPTIONAL, + radioFrequencyBandFDD3 RadioFrequencyBandFDD3 OPTIONAL, + additionalSecondaryCells2 ENUMERATED { a3, a4, a5, a6 } OPTIONAL, + supportOfULCLTD ENUMERATED { true } OPTIONAL, + multiflowCapability MultiflowPerBandCapability OPTIONAL, + mimo4x4CapabilityBand ENUMERATED { true } OPTIONAL, + supportOfULMIMO ENUMERATED { true } OPTIONAL, + measurementCapability5 MeasurementCapabilityExt5, + freqSpecificCompressedModeForNonContiguous ENUMERATED { true } OPTIONAL +} + +UE-PositioningCapabilityExt-v380 ::= SEQUENCE { + rx-tx-TimeDifferenceType2Capable BOOLEAN +} + +UE-PositioningCapabilityExt-v3a0 ::= SEQUENCE { + validity-CellPCH-UraPCH ENUMERATED { true } +} + +UE-PositioningCapabilityExt-v3g0 ::= SEQUENCE { + sfn-sfnType2Capability ENUMERATED { true } +} + +UE-PositioningCapability-v770ext ::= SEQUENCE { + ue-GANSSPositioning-Capability UE-GANSSPositioning-Capability OPTIONAL +} + +UE-PositioningCapability-v860ext ::= SEQUENCE { + ue-GANSSPositioning-Capability-v860ext + UE-GANSSPositioning-Capability-v860ext-IEs OPTIONAL +} + +UE-RadioAccessCapabBandCombList ::= SEQUENCE (SIZE (1..16)) OF BandComb + +UE-RadioAccessCapabBandFDDList ::= SEQUENCE (SIZE (1..maxFreqBandsFDD)) OF + UE-RadioAccessCapabBandFDD + +UE-RadioAccessCapabBandFDDList-ext ::= SEQUENCE (SIZE (1..maxFreqBandsFDD)) OF + UE-RadioAccessCapabBandFDD-ext + +UE-RadioAccessCapabBandFDDList-ext2 ::= SEQUENCE (SIZE (1..maxFreqBandsFDD2)) OF + UE-RadioAccessCapabBandFDD-ext2 + +UE-RadioAccessCapabBandFDD ::= SEQUENCE{ + radioFrequencyBandFDD RadioFrequencyBandFDD, + fddRF-Capability SEQUENCE { + ue-PowerClass UE-PowerClassExt, + txRxFrequencySeparation TxRxFrequencySeparation + } OPTIONAL, + measurementCapability MeasurementCapabilityExt +} + +UE-RadioAccessCapabBandFDD-ext ::= SEQUENCE { + radioFrequencyBandFDD RadioFrequencyBandFDD, + compressedModeMeasCapabFDDList-ext CompressedModeMeasCapabFDDList-ext +} + +UE-RadioAccessCapabBandFDD-ext2 ::= SEQUENCE { + radioFrequencyBandFDD RadioFrequencyBandFDD OPTIONAL, + radioFrequencyBandFDD2 RadioFrequencyBandFDD2 OPTIONAL, + compressedModeMeasCapabFDDList3 CompressedModeMeasCapabFDDList3 +} + +UE-RadioAccessCapability-v4b0ext ::= SEQUENCE { + pdcp-Capability-r4-ext PDCP-Capability-r4-ext, + tdd-CapabilityExt SEQUENCE { + rf-Capability RF-Capability-r4-ext, + physicalChannelCapability-LCR PhysicalChannelCapability-LCR-r4, + measurementCapability-r4-ext MeasurementCapability-r4-ext + } OPTIONAL, + -- IE " AccessStratumReleaseIndicator" is not needed in RRC CONNECTION SETUP COMPLETE + accessStratumReleaseIndicator AccessStratumReleaseIndicator OPTIONAL +} + +UE-RadioAccessCapabilityComp ::= SEQUENCE { + totalAM-RLCMemoryExceeds10kB BOOLEAN, + rf-CapabilityComp RF-CapabilityComp +} + +UE-RadioAccessCapabilityComp-ext ::= SEQUENCE { + rf-CapabilityFDDComp RF-CapabBandListFDDComp-ext +} + +UE-RadioAccessCapabilityComp-TDD128-v7f0ext ::= SEQUENCE { + hSDSCH-physical-layer-category + HSDSCH-physical-layer-category OPTIONAL, + multiCarrier-physical-layer-category + MultiCarrier-HSDSCH-physical-layer-category OPTIONAL, + tdd-edch-PhysicalLayerCategory INTEGER (1..6) OPTIONAL, + dl-CapabilityWithSimultaneousHS-DSCHConfig + DL-CapabilityWithSimultaneousHS-DSCHConfig OPTIONAL, + supportForCSVoiceoverHSPA ENUMERATED { true } OPTIONAL, + totalRLC-AM-BufferSize TotalRLC-AM-BufferSize-r5-ext OPTIONAL +} + +UE-RadioAccessCapabilityComp-v770ext ::= SEQUENCE { + rf-CapabilityComp RF-CapabilityComp-v770ext, + securityCapabilityIndication ENUMERATED { true } OPTIONAL, + ganssSupportIndication ENUMERATED { true } OPTIONAL, + mac-ehsSupport ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapabilityComp2 ::= SEQUENCE { + fddPhysicalChannelCapab-hspdsch-edch SEQUENCE { + dl-CapabilityWithSimultaneousHS-DSCHConfig + DL-CapabilityWithSimultaneousHS-DSCHConfig OPTIONAL, + physicalChannelCapabComp-hspdsch-r6 HSDSCH-physical-layer-category, + physicalChannelCapability-edch-r6 PhysicalChannelCapability-edch-r6 + } OPTIONAL +} + +UE-RadioAccessCapabilityComp2-v770ext ::= SEQUENCE { + hsdsch-physical-layer-category-ext HSDSCH-physical-layer-category-ext OPTIONAL, + edch-PhysicalLayerCategory-extension INTEGER (7) OPTIONAL, + hsscchlessHsdschOperation ENUMERATED { true } OPTIONAL, + enhancedFdpch ENUMERATED { true } OPTIONAL, + hsdschReception-CellFach ENUMERATED { true } OPTIONAL, + hsdschReception-CellUraPch ENUMERATED { true } OPTIONAL, + discontinuousDpcchTransmission ENUMERATED { true } OPTIONAL, + slotFormat4 ENUMERATED { true } OPTIONAL, + pdcp-Capability PDCP-Capability-v770ext OPTIONAL +} + +UE-RadioAccessCapabilityComp2-v7f0ext ::= SEQUENCE { + supportofTxDivOnNonMIMOChannel ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapabilityComp2-v860ext ::= SEQUENCE { + hsdsch-physical-layer-category-ext2 HSDSCH-physical-layer-category-ext2 OPTIONAL, + supportOfMACiis ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapabilityComp2-v920ext ::= SEQUENCE { + hsdsch-physical-layer-category-ext3 HSDSCH-physical-layer-category-ext3 OPTIONAL, + edch-PhysicalLayerCategory-extension2 INTEGER (8..9) OPTIONAL +} + +UE-RadioAccessCapabilityComp2-va40ext ::= SEQUENCE { + hsdsch-physical-layer-category-ext4 HSDSCH-physical-layer-category-ext4 OPTIONAL, + hsdsch-physical-layer-category-ext5 HSDSCH-physical-layer-category-ext5 OPTIONAL +} + +UE-RadioAccessCapabilityComp2-vb50ext ::= SEQUENCE { + hsdsch-physical-layer-category-ext6 HSDSCH-physical-layer-category-ext6 OPTIONAL, + hsdsch-physical-layer-category-ext7 HSDSCH-physical-layer-category-ext7 OPTIONAL, + hsdsch-physical-layer-category-ext8 HSDSCH-physical-layer-category-ext8 OPTIONAL, + edch-PhysicalLayerCategory-extension3 INTEGER (10..12) OPTIONAL, + supportOfHSDPCCHPowerOffsetExtension ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapabilityComp-TDD128 ::= SEQUENCE { + tdd128RF-Capability RadioFrequencyBandTDDextList OPTIONAL, + supportOfSFModeForHSPDSCHDualStream ENUMERATED { sf1, sf1sf16 } OPTIONAL, + supportOfCommonEDCH ENUMERATED { true } OPTIONAL, + supportOfMACiis ENUMERATED { true } OPTIONAL, + supportOfSPSOperation ENUMERATED { true } OPTIONAL, + supportOfControlChannelDRXOperation ENUMERATED { true } OPTIONAL +} + +RF-CapabilityComp ::= SEQUENCE { + fdd CHOICE { + notSupported NULL, + supported RF-CapabBandListFDDComp + }, + tdd384-RF-Capability CHOICE { + notSupported NULL, + supported RadioFrequencyBandTDDList + }, + tdd128-RF-Capability CHOICE { + notSupported NULL, + supported RadioFrequencyBandTDDList + } +} + +RF-CapabilityComp-v770ext ::= SEQUENCE { + -- If support of TDD384 and/or TDD128 RF capability is indicated in IEs 'RF-CapabilityComp', + -- the corresponding IE 'RadioFrequencyBandTDDList-r7' shall be included in this IE. + tdd384-RF-Capability RadioFrequencyBandTDDList-r7 OPTIONAL, + tdd768-RF-Capability CHOICE { + notSupported NULL, + supported RadioFrequencyBandTDDList-r7 + }, + tdd128-RF-Capability RadioFrequencyBandTDDList-r7 OPTIONAL +} + +-- NOTE: This IE defines the supported TX/RX frequency separation for the respective supported +-- frequency band. Values defined as spare shall not be sent in this version of the protocol. +-- If a spare value is received, it should be interpreted as 'default-RxTX-sparation'. +RF-CapabBandFDDComp ::= ENUMERATED { notSupported, + default-TxRx-separation, spare2, spare1 } + +RF-CapabBandListFDDComp ::= SEQUENCE (SIZE (1..maxFreqBandsFDD)) OF + -- The first entry corresponds with the first value of IE RadioFrequencyBandFDD, + -- fdd2100, and so on. No more than seven entries should be included in this IE. The + -- 8'th entry, if present, shall be ignored. + -- An extension of this IE may be provided using the IE 'RF-CapabBandListFDDComp-ext'. + RF-CapabBandFDDComp + +RF-CapabBandListFDDComp-ext ::= SEQUENCE (SIZE (1..maxFreqBandsFDD-ext)) OF + -- The first entry corresponds with the first value of IE RadioFrequencyBandFDD2, + -- bandVIII, and so on. + RF-CapabBandFDDComp + +RF-CapabBandListFDDComp-ext2 ::= SEQUENCE (SIZE (1..maxFreqBandsFDD-ext2)) OF + -- The first entry corresponds with the first value of IE RadioFrequencyBandFDD3, + -- 23 (Band XXIII), and so on. + RF-CapabBandFDDComp + +UE-RadioAccessCapabBandCombList-va40ext ::= SEQUENCE (SIZE (1..16)) OF SupportedCarrierCombination + +UE-RadioAccessCapabBandCombList-vb50ext ::= SEQUENCE (SIZE (1..16)) OF + SupportedCarrierCombination-ext + +SupportedCarrierCombination ::= SEQUENCE { + carrierCombination12 BOOLEAN, + carrierCombination21 BOOLEAN, + carrierCombination13 BOOLEAN, + carrierCombination31 BOOLEAN, + carrierCombination22 BOOLEAN +} + +SupportedCarrierCombination-ext ::= SEQUENCE { + carrierCombination14 BOOLEAN, + carrierCombination41 BOOLEAN, + carrierCombination15 BOOLEAN, + carrierCombination51 BOOLEAN, + carrierCombination16 BOOLEAN, + carrierCombination61 BOOLEAN, + carrierCombination17 BOOLEAN, + carrierCombination71 BOOLEAN, + carrierCombination23 BOOLEAN, + carrierCombination32 BOOLEAN, + carrierCombination24 BOOLEAN, + carrierCombination42 BOOLEAN, + carrierCombination25 BOOLEAN, + carrierCombination52 BOOLEAN, + carrierCombination26 BOOLEAN, + carrierCombination62 BOOLEAN, + carrierCombination33 BOOLEAN, + carrierCombination34 BOOLEAN, + carrierCombination43 BOOLEAN, + carrierCombination44 BOOLEAN, + carrierCombination35 BOOLEAN, + carrierCombination53 BOOLEAN +} + +UE-RadioAccessCapability-v590ext ::= SEQUENCE { + dl-CapabilityWithSimultaneousHS-DSCHConfig + DL-CapabilityWithSimultaneousHS-DSCHConfig OPTIONAL, + pdcp-Capability-r5-ext PDCP-Capability-r5-ext, + rlc-Capability-r5-ext RLC-Capability-r5-ext, + physicalChannelCapability PhysicalChannelCapability-hspdsch-r5, + multiModeRAT-Capability-v590ext MultiModeRAT-Capability-v590ext +} + +UE-RadioAccessCapability-v5c0ext ::= SEQUENCE { + pdcp-Capability-r5-ext2 PDCP-Capability-r5-ext2 +} + +UE-RadioAccessCapability-v680ext ::= SEQUENCE { + multiModeRAT-Capability-v680ext MultiModeRAT-Capability-v680ext +} + +UL-OLTD-InfoFDD ::= SEQUENCE { + ulOLTDActivation ENUMERATED {true} +} + +UL-PhysChCapabilityFDD ::= SEQUENCE { + maxNoDPDCH-BitsTransmitted MaxNoDPDCH-BitsTransmitted, + -- dummy is not used in this version of the specification and + -- it should be ignored by the receiver. + dummy BOOLEAN +} + +UL-PhysChCapabilityFDD-r6 ::= SEQUENCE { + maxNoDPDCH-BitsTransmitted MaxNoDPDCH-BitsTransmitted, + physicalchannelcapability-edch PhysicalChannelCapability-edch-r6 +} + +UL-PhysChCapabilityFDD-v770ext ::= SEQUENCE { + edch-PhysicalLayerCategory-extension INTEGER (7) OPTIONAL, + discontinuousDpcchTransmission ENUMERATED { true } OPTIONAL, + slotFormat4 ENUMERATED { true } OPTIONAL +} + +UL-PhysChCapabilityFDD-v920ext ::= SEQUENCE { + edch-PhysicalLayerCategory-extension2 INTEGER (8..9) OPTIONAL +} +UL-PhysChCapabilityFDD-vb50ext ::= SEQUENCE { + edch-PhysicalLayerCategory-extension3 INTEGER (10..12) OPTIONAL +} + +UL-PhysChCapabilityTDD ::= SEQUENCE { + maxTS-PerFrame MaxTS-PerFrame, + maxPhysChPerTimeslot MaxPhysChPerTimeslot, + minimumSF MinimumSF-UL, + supportOfPUSCH BOOLEAN +} + +UL-PhysChCapabilityTDD-384-v770ext ::= SEQUENCE { + tdd384-edch CHOICE { + supported SEQUENCE { + tdd-edch-PhysicalLayerCategory INTEGER (1..16) + }, + unsupported NULL + } +} + +UL-PhysChCapabilityTDD-LCR-r4 ::= SEQUENCE { + maxTS-PerSubFrame MaxTS-PerSubFrame-r4, + maxPhysChPerTimeslot MaxPhysChPerTimeslot, + minimumSF MinimumSF-UL, + supportOfPUSCH BOOLEAN, + supportOf8PSK BOOLEAN +} + +UL-PhysChCapabilityTDD-128-v770ext ::= SEQUENCE { + maxPhysChPerTimeslot MaxPhysChPerTimeslot-LCR-r7, + tdd128-edch CHOICE { + supported SEQUENCE { + tdd-edch-PhysicalLayerCategory INTEGER (1..6) + }, + unsupported NULL + } +} + +UL-PhysChCapabilityInfoTDD-128-v770ext ::= SEQUENCE { + maxPhysChPerTimeslot MaxPhysChPerTimeslot-LCR-r7 +} + +UL-PhysChCapabilityInfoTDD-128-va40ext ::= SEQUENCE { + multiCarrier-EdchPhysicalLayerCategory-128 INTEGER (1..8) OPTIONAL, + maxNumberCarrierForMCHSUPA-TDD ENUMERATED {nf-2, nf-3, nf-6, spare} OPTIONAL +} + +UL-PhysChCapabilityTDD-768 ::= SEQUENCE { + maxTS-PerFrame MaxTS-PerFrame, + maxPhysChPerTimeslot MaxPhysChPerTimeslot, + minimumSF MinimumSF-UL, + supportOfPUSCH BOOLEAN, + tdd384-edch CHOICE { + supported SEQUENCE { + tdd-edch-PhysicalLayerCategory INTEGER (1..16) + }, + unsupported NULL + } +} + +UL-SecondaryCellInfoFDD ::= CHOICE { + continue NULL, + newConfiguration SEQUENCE { + secondaryServingEDCHCell-Info SecondaryServingEDCHCell-Info OPTIONAL, + secondaryEDCH-Info-Common SecondaryEDCH-Info-Common OPTIONAL, + dl-InformationPerSecondaryRL-List DL-InformationPerSecondaryRL-List OPTIONAL + } +} + +PhysicalChannelCapability-edch-r6 ::= SEQUENCE { + fdd-edch CHOICE { + supported SEQUENCE { + edch-PhysicalLayerCategory INTEGER (1..16) + }, + unsupported NULL + } +} + +UL-TransChCapability ::= SEQUENCE { + maxNoBitsTransmitted MaxNoBits, + maxConvCodeBitsTransmitted MaxNoBits, + turboEncodingSupport TurboSupport, + maxSimultaneousTransChs MaxSimultaneousTransChsUL, + modeSpecificInfo CHOICE { + fdd NULL, + tdd SEQUENCE { + maxSimultaneousCCTrCH-Count MaxSimultaneousCCTrCH-Count + } + }, + maxTransmittedBlocks MaxTransportBlocksUL, + maxNumberOfTFC MaxNumberOfTFC-UL, + maxNumberOfTF MaxNumberOfTF +} + +UE-Positioning-Capability ::= SEQUENCE { + standaloneLocMethodsSupported BOOLEAN, + ue-BasedOTDOA-Supported BOOLEAN, + networkAssistedGPS-Supported NetworkAssistedGPS-Supported, + supportForUE-GPS-TimingOfCellFrames BOOLEAN, + supportForIPDL BOOLEAN +} + +UE-SecurityInformation ::= SEQUENCE { + start-CS START-Value +} + +UE-SecurityInformation2 ::= SEQUENCE { + start-PS START-Value +} + +UE-SpecificCapabilityInformation-LCRTDD ::= ENUMERATED { + nF, + nFMc-TriRx-UniTx, + nFMc-TriRx-TriTx, + nFMc-HexRx-UniTx, + nFMc-HexRx-TriTx, + nFMc-HexRx-HexTx, + nFMc-TwoRx-UniTx-Discontiguous, + nFMc-TwoRx-TwoTx-Discontiguous, + nFMc-TwoRx-UniTx-Contiguous, + nFMc-TwoRx-TwoTx-Contiguous, + spare6, + spare5, + spare4, + spare3, + spare2, + spare1 } + +URA-UpdateCause ::= ENUMERATED { + changeOfURA, + periodicURAUpdate, + dummy, + spare1 } + +UTRAN-DRX-CycleLengthCoefficient ::= INTEGER (3..9) + +UTRAN-DRX-CycleLengthCoefficient-r7 ::= SEQUENCE { + drx-CycleLengthCoefficient INTEGER (3..9), + drx-CycleLengthCoefficient2 INTEGER (3..9) OPTIONAL, + timeForDRXCycle2 T-319 OPTIONAL +} + +WaitTime ::= INTEGER (0..15) + +-- *************************************************** +-- +-- RADIO BEARER INFORMATION ELEMENTS (10.3.4) +-- +-- *************************************************** + +AlgorithmSpecificInfo ::= CHOICE { + rfc2507-Info RFC2507-Info +} + +AlgorithmSpecificInfo-r4 ::= CHOICE { + rfc2507-Info RFC2507-Info, + rfc3095-Info RFC3095-Info-r4 +} + +CID-InclusionInfo-r4 ::= ENUMERATED { + pdcp-Header, + rfc3095-PacketFormat } + +CommonRBMappingInfo ::= SEQUENCE { + logicalChannelIdentity LogicalChannelIdentity, + mac-ehs-QueueId MAC-ehs-QueueId +} + +-- Upper limit of COUNT-C is 2^32 - 1 +COUNT-C ::= INTEGER (0..4294967295) + +-- Upper limit of COUNT-C-MSB is 2^25 - 1 +COUNT-C-MSB ::= INTEGER (0..33554431) + +CS-HSPA-Information ::= SEQUENCE { + ul-AMR-Rate UL-AMR-Rate OPTIONAL, + maxCS-Delay MaxCS-Delay +} + +DefaultConfigForCellFACH ::= SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdForCellFACH DefaultConfigIdForCellFACH +} + +DefaultConfigIdentity ::= INTEGER (0..10) + +DefaultConfigIdentity-r4 ::= INTEGER (0..12) + +DefaultConfigIdentity-r5 ::= INTEGER (0..13) + +-- DefaultConfigIdentity-r6 values 25..31 are spare and shall not be used in this version of +-- the protocol +DefaultConfigIdentity-r6 ::= INTEGER (0..31) + +-- DefaultConfigIdForCellFACH values 1..15 are spare and shall not be used in this version of +-- the protocol +DefaultConfigIdForCellFACH ::= INTEGER (0..15) + +DefaultConfigMode ::= ENUMERATED { + fdd, + tdd } + +DDI ::= INTEGER (0..62) + +DL-AM-RLC-Mode ::= SEQUENCE { + inSequenceDelivery BOOLEAN, + receivingWindowSize ReceivingWindowSize, + dl-RLC-StatusInfo DL-RLC-StatusInfo +} + +DL-AM-RLC-Mode-r5 ::= SEQUENCE { + dl-RLC-PDU-size OctetModeRLC-SizeInfoType1, + inSequenceDelivery BOOLEAN, + receivingWindowSize ReceivingWindowSize, + dl-RLC-StatusInfo DL-RLC-StatusInfo +} + +DL-AM-RLC-Mode-r7 ::= SEQUENCE { + dl-RLC-PDU-size CHOICE { + fixedSize OctetModeRLC-SizeInfoType1, + flexibleSize ENUMERATED { size7, size15 } + }, + inSequenceDelivery BOOLEAN, + receivingWindowSize ReceivingWindowSize, + dl-RLC-StatusInfo DL-RLC-StatusInfo +} + +DL-AM-RLC-Mode-r11 ::= SEQUENCE { + dl-RLC-PDU-size CHOICE { + fixedSize OctetModeRLC-SizeInfoType1, + flexibleSize ENUMERATED { size7, size15 } + }, + inSequenceDelivery BOOLEAN, + receivingWindowSize ReceivingWindowSize, + dl-RLC-StatusInfo DL-RLC-StatusInfo-r11 +} + +DL-CounterSynchronisationInfo ::= SEQUENCE { + rB-WithPDCP-InfoList RB-WithPDCP-InfoList OPTIONAL +} + +DL-CounterSynchronisationInfo-r5 ::= SEQUENCE { + rb-WithPDCP-InfoList RB-WithPDCP-InfoList OPTIONAL, + rb-PDCPContextRelocationList RB-PDCPContextRelocationList OPTIONAL +} + +DL-LogicalChannelMapping ::= SEQUENCE { + -- TABULAR: DL-TransportChannelType contains TransportChannelIdentity as well. + dl-TransportChannelType DL-TransportChannelType, + logicalChannelIdentity LogicalChannelIdentity OPTIONAL +} + +DL-LogicalChannelMapping-r5 ::= SEQUENCE { + -- TABULAR: DL-TransportChannelType contains TransportChannelIdentity as well. + dl-TransportChannelType DL-TransportChannelType-r5, + logicalChannelIdentity LogicalChannelIdentity OPTIONAL +} + +DL-LogicalChannelMapping-r7 ::= SEQUENCE { + -- TABULAR: DL-TransportChannelType contains TransportChannelIdentity as well. + dl-TransportChannelType DL-TransportChannelType-r7, + logicalChannelIdentity LogicalChannelIdentity OPTIONAL +} + +DL-LogicalChannelMappingList ::= SEQUENCE (SIZE (1..maxLoCHperRLC)) OF + DL-LogicalChannelMapping + +DL-LogicalChannelMappingList-r5 ::= SEQUENCE (SIZE (1..maxLoCHperRLC)) OF + DL-LogicalChannelMapping-r5 + +DL-LogicalChannelMappingList-r7 ::= SEQUENCE (SIZE (1..maxLoCHperRLC)) OF + DL-LogicalChannelMapping-r7 + +DL-Reception-Window-Size-r6 ::= ENUMERATED { size32, size48, size64, size80, size96, size112 } + +DL-RFC3095-r4 ::= SEQUENCE { + -- dummy is not used in this version of the specification and shall be ignored by the receiver. + dummy CID-InclusionInfo-r4, + max-CID INTEGER (1..16383) DEFAULT 15, + reverseDecompressionDepth INTEGER (0..65535) DEFAULT 0 +} + +DL-RLC-Mode ::= CHOICE { + dl-AM-RLC-Mode DL-AM-RLC-Mode, + dl-UM-RLC-Mode NULL, + dl-TM-RLC-Mode DL-TM-RLC-Mode +} + +DL-RLC-Mode-r5 ::= CHOICE { + dl-AM-RLC-Mode DL-AM-RLC-Mode-r5, + dl-UM-RLC-Mode DL-UM-RLC-Mode-r5, + dl-TM-RLC-Mode DL-TM-RLC-Mode +} + +DL-RLC-Mode-r6 ::= CHOICE { + dl-AM-RLC-Mode DL-AM-RLC-Mode-r5, + dl-UM-RLC-Mode DL-UM-RLC-Mode-r6, + dl-TM-RLC-Mode DL-TM-RLC-Mode +} + +DL-RLC-Mode-r7 ::= CHOICE { + dl-AM-RLC-Mode DL-AM-RLC-Mode-r7, + dl-UM-RLC-Mode DL-UM-RLC-Mode-r6, + dl-TM-RLC-Mode DL-TM-RLC-Mode +} + +DL-RLC-Mode-r11 ::= CHOICE { + dl-AM-RLC-Mode DL-AM-RLC-Mode-r11, + dl-UM-RLC-Mode DL-UM-RLC-Mode-r6, + dl-TM-RLC-Mode DL-TM-RLC-Mode +} + +DL-RLC-StatusInfo ::= SEQUENCE { + timerStatusProhibit TimerStatusProhibit OPTIONAL, + -- dummy is not used in this version of the specification, it should not be sent + -- and if received they should be ignored. + dummy TimerEPC OPTIONAL, + missingPDU-Indicator BOOLEAN, + timerStatusPeriodic TimerStatusPeriodic OPTIONAL +} + +DL-RLC-StatusInfo-r11 ::= SEQUENCE { + timerStatusProhibit TimerStatusProhibit OPTIONAL, + missingPDU-Indicator BOOLEAN, + timerStatusPeriodic TimerStatusPeriodic OPTIONAL, + timerReordering TimerReordering OPTIONAL +} + +DL-TM-RLC-Mode ::= SEQUENCE { + segmentationIndication BOOLEAN +} + +DL-TransportChannelType ::= CHOICE { + dch TransportChannelIdentity, + fach NULL, + -- The choice "dsch" should not be used in FDD mode, and if received + -- the UE behaviour is unspecified. + dsch TransportChannelIdentity, + -- The choice "dch-and-dsch" should not be used in FDD mode, and if received the UE + -- behaviour is unspecified + dch-and-dsch TransportChannelIdentityDCHandDSCH +} + +DL-TransportChannelType-r5 ::= CHOICE { + dch TransportChannelIdentity, + fach NULL, + -- The choice "dsch" should not be used in FDD mode, and if received + -- the UE behaviour is unspecified. + dsch TransportChannelIdentity, + -- The choice "dch-and-dsch" should not be used in FDD mode, and if received the UE + -- behaviour is unspecified + dch-and-dsch TransportChannelIdentityDCHandDSCH, + hsdsch MAC-d-FlowIdentity, + dch-and-hsdsch MAC-d-FlowIdentityDCHandHSDSCH +} + +DL-TransportChannelType-r7 ::= CHOICE { + dch TransportChannelIdentity, + fach NULL, + -- The choice "dsch" should not be used in FDD mode, and if received + -- the UE behaviour is unspecified. + dsch TransportChannelIdentity, + -- The choice "dch-and-dsch" should not be used in FDD mode, and if received the UE + -- behaviour is unspecified + dch-and-dsch TransportChannelIdentityDCHandDSCH, + hsdsch CHOICE { + mac-hs MAC-d-FlowIdentity, + mac-ehs MAC-ehs-QueueId + }, + dch-and-hsdsch CHOICE { + mac-hs MAC-d-FlowIdentityDCHandHSDSCH, + mac-ehs MAC-ehs-QueueIdDCHandHSDSCH + } +} + +DL-UM-RLC-LI-size ::= ENUMERATED { + size7, size15 } + +DL-UM-RLC-Mode-r5 ::= SEQUENCE { + dl-UM-RLC-LI-size DL-UM-RLC-LI-size +} + +DL-UM-RLC-Mode-r6 ::= SEQUENCE { + dl-UM-RLC-LI-size DL-UM-RLC-LI-size, + dl-Reception-Window-Size DL-Reception-Window-Size-r6 OPTIONAL +} + +ExpectReordering ::= ENUMERATED { + reorderingNotExpected, + reorderingExpected } + +ExplicitDiscard ::= SEQUENCE { + timerMRW TimerMRW, + timerDiscard TimerDiscard, + maxMRW MaxMRW +} + +HeaderCompressionInfo ::= SEQUENCE { + algorithmSpecificInfo AlgorithmSpecificInfo +} + +HeaderCompressionInfoList ::= SEQUENCE (SIZE (1..maxPDCPAlgoType)) OF + HeaderCompressionInfo + +HeaderCompressionInfo-r4 ::= SEQUENCE { + algorithmSpecificInfo AlgorithmSpecificInfo-r4 +} + +HeaderCompressionInfoList-r4 ::= SEQUENCE (SIZE (1..maxPDCPAlgoType)) OF + HeaderCompressionInfo-r4 + +LogicalChannelIdentity ::= INTEGER (1..15) + +LosslessSRNS-RelocSupport ::= CHOICE { + supported MaxPDCP-SN-WindowSize, + notSupported NULL +} + +MAC-d-HFN-initial-value ::= BIT STRING (SIZE (24)) + +MAC-LogicalChannelPriority ::= INTEGER (1..8) + +-- Actual value MaxCS-Delay = (IE value * 10) + 20 +MaxCS-Delay ::= INTEGER (0..18) + +MaxDAT ::= ENUMERATED { + dat1, dat2, dat3, dat4, dat5, dat6, + dat7, dat8, dat9, dat10, dat15, dat20, + dat25, dat30, dat35, dat40 } + +MaxDAT-Retransmissions ::= SEQUENCE { + maxDAT MaxDAT, + timerMRW TimerMRW, + maxMRW MaxMRW +} + +MaxMRW ::= ENUMERATED { + mm1, mm4, mm6, mm8, mm12, mm16, + mm24, mm32 } + +MaxPDCP-SN-WindowSize ::= ENUMERATED { + sn255, sn65535 } + +MaxRST ::= ENUMERATED { + rst1, rst4, rst6, rst8, rst12, + rst16, rst24, rst32 } + +NoExplicitDiscard ::= ENUMERATED { + dt10, dt20, dt30, dt40, dt50, + dt60, dt70, dt80, dt90, dt100 } + +PDCP-Info ::= SEQUENCE { + losslessSRNS-RelocSupport LosslessSRNS-RelocSupport OPTIONAL, + -- TABULAR: pdcp-PDU-Header is MD in the tabular format and it can be encoded + -- in one bit, so the OPTIONAL is removed for compactness. + pdcp-PDU-Header PDCP-PDU-Header, + headerCompressionInfoList HeaderCompressionInfoList OPTIONAL +} + +PDCP-Info-r4 ::= SEQUENCE { + losslessSRNS-RelocSupport LosslessSRNS-RelocSupport OPTIONAL, + -- TABULAR: pdcp-PDU-Header is MD in the tabular format and it can be encoded + -- in one bit, so the OPTIONAL is removed for compactness. + pdcp-PDU-Header PDCP-PDU-Header, + headerCompressionInfoList HeaderCompressionInfoList-r4 OPTIONAL +} + +PDCP-InfoReconfig ::= SEQUENCE { + pdcp-Info PDCP-Info, + -- dummy is not used in this version of the specification and + -- it should be ignored. + dummy INTEGER (0..65535) +} + +PDCP-InfoReconfig-r4 ::= SEQUENCE { + pdcp-Info PDCP-Info-r4 +} + +PDCP-PDU-Header ::= ENUMERATED { + present, absent } + +PDCP-ROHC-TargetMode ::= ENUMERATED { o-Mode, r-Mode } + +PDCP-SN-Info ::= INTEGER (0..65535) + +Poll-PDU ::= ENUMERATED { + pdu1, pdu2, pdu4, pdu8, pdu16, + pdu32, pdu64, pdu128 } + +Poll-SDU ::= ENUMERATED { + sdu1, sdu4, sdu16, sdu64 } + +PollingInfo ::= SEQUENCE { + timerPollProhibit TimerPollProhibit OPTIONAL, + timerPoll TimerPoll OPTIONAL, + poll-PDU Poll-PDU OPTIONAL, + poll-SDU Poll-SDU OPTIONAL, + lastTransmissionPDU-Poll BOOLEAN, + lastRetransmissionPDU-Poll BOOLEAN, + pollWindow PollWindow OPTIONAL, + timerPollPeriodic TimerPollPeriodic OPTIONAL +} + +PollWindow ::= ENUMERATED { + pw50, pw60, pw70, pw80, pw85, + pw90, pw95, pw99 } + +PredefinedConfigIdentity ::= INTEGER (0..15) + +PredefinedConfigValueTag ::= INTEGER (0..15) + +PredefinedRB-Configuration ::= SEQUENCE { + re-EstablishmentTimer Re-EstablishmentTimer, + srb-InformationList SRB-InformationSetupList, + rb-InformationList RB-InformationSetupList +} + +PreDefRadioConfiguration ::= SEQUENCE { + -- Radio bearer IEs + predefinedRB-Configuration PredefinedRB-Configuration, + -- Transport channel IEs + preDefTransChConfiguration PreDefTransChConfiguration, + -- Physical channel IEs + preDefPhyChConfiguration PreDefPhyChConfiguration +} + +PreDefRadioConfiguration-v770ext ::= SEQUENCE { + -- Physical channel IEs + preDefPhyChConfiguration PreDefPhyChConfiguration-v770ext +} + +PreDefRadioConfiguration-v920ext ::= SEQUENCE { + -- Transport channel IEs + mac-ehsWindowSize MAC-hs-WindowSize-r9 +} + +PredefinedConfigStatusList ::= SEQUENCE (SIZE (maxPredefConfig)) OF + PredefinedConfigStatusInfo + +PredefinedConfigStatusInfo ::= CHOICE { + storedWithValueTagSameAsPrevius NULL, + other CHOICE { + notStored NULL, + storedWithDifferentValueTag PredefinedConfigValueTag + } +} + +PredefinedConfigStatusListComp ::= SEQUENCE { + setsWithDifferentValueTag PredefinedConfigSetsWithDifferentValueTag, + otherEntries PredefinedConfigStatusListVarSz OPTIONAL +} + +PredefinedConfigSetsWithDifferentValueTag ::= SEQUENCE (SIZE (1..2)) OF + PredefinedConfigSetWithDifferentValueTag + +PredefinedConfigSetWithDifferentValueTag ::= SEQUENCE { + startPosition INTEGER (0..10) DEFAULT 0, + -- numberOfEntries INTEGER (6..16), + -- numberOfEntries is covered by the size of the list in IE PredefinedConfigValueTagList + valueTagList PredefinedConfigValueTagList +} + + +PredefinedConfigValueTagList ::= SEQUENCE (SIZE (1..maxPredefConfig)) OF + PredefinedConfigValueTag + +PredefinedConfigStatusListVarSz ::= SEQUENCE (SIZE (1..maxPredefConfig)) OF + PredefinedConfigStatusInfo + +RAB-Info ::= SEQUENCE { + rab-Identity RAB-Identity, + cn-DomainIdentity CN-DomainIdentity, + nas-Synchronisation-Indicator NAS-Synchronisation-Indicator OPTIONAL, + re-EstablishmentTimer Re-EstablishmentTimer +} + +RAB-Info-r6-ext ::= SEQUENCE { + mbms-SessionIdentity MBMS-SessionIdentity OPTIONAL +} + +RAB-Info-v6b0ext ::= SEQUENCE { + mbms-ServiceIdentity OCTET STRING (SIZE (3)) +} + +RAB-Info-r6 ::= SEQUENCE { + rab-Identity RAB-Identity, + mbms-SessionIdentity MBMS-SessionIdentity OPTIONAL, + cn-DomainIdentity CN-DomainIdentity, + nas-Synchronisation-Indicator NAS-Synchronisation-Indicator OPTIONAL, + re-EstablishmentTimer Re-EstablishmentTimer +} + +RAB-Info-r7 ::= SEQUENCE { + rab-Identity RAB-Identity, + mbms-SessionIdentity MBMS-SessionIdentity OPTIONAL, + mbms-ServiceIdentity OCTET STRING (SIZE (3)) OPTIONAL, + cn-DomainIdentity CN-DomainIdentity, + nas-Synchronisation-Indicator NAS-Synchronisation-Indicator OPTIONAL, + re-EstablishmentTimer Re-EstablishmentTimer +} + +RAB-InfoReplace ::= SEQUENCE { + rab-Identity RAB-Identity, + cn-DomainIdentity CN-DomainIdentity +} + +RAB-InformationList ::= SEQUENCE (SIZE (1..maxRABsetup)) OF + RAB-Info + +RAB-InformationList-r6 ::= SEQUENCE (SIZE (1..maxRABsetup)) OF + RAB-Info-r6 + +RAB-InformationReconfigList ::= SEQUENCE (SIZE (1.. maxRABsetup)) OF + RAB-InformationReconfig + +RAB-InformationReconfigList-r8 ::= SEQUENCE (SIZE (1..maxRABsetup)) OF + RAB-InformationReconfig-r8 + +RAB-InformationReconfig ::= SEQUENCE { + rab-Identity RAB-Identity, + cn-DomainIdentity CN-DomainIdentity, + nas-Synchronisation-Indicator NAS-Synchronisation-Indicator +} + +RAB-InformationReconfig-r8 ::= SEQUENCE { + rab-Identity RAB-Identity, + cn-DomainIdentity CN-DomainIdentity, + nas-Synchronisation-Indicator NAS-Synchronisation-Indicator, + cs-HSPA-Information CS-HSPA-Information OPTIONAL +} + +RAB-Info-Post ::= SEQUENCE { + rab-Identity RAB-Identity, + cn-DomainIdentity CN-DomainIdentity, + nas-Synchronisation-Indicator NAS-Synchronisation-Indicator OPTIONAL +} + +RAB-InformationMBMSPtp ::= SEQUENCE { + rb-Identity RB-Identity, + mbms-ServiceIdentity OCTET STRING (SIZE (3)), + mbms-SessionIdentity MBMS-SessionIdentity OPTIONAL +} + +RAB-InformationMBMSPtpList ::= SEQUENCE (SIZE (1..maxMBMSservSelect)) OF + RAB-InformationMBMSPtp + +RAB-InformationSetup ::= SEQUENCE { + rab-Info RAB-Info, + rb-InformationSetupList RB-InformationSetupList +} + +RAB-InformationSetup-r4 ::= SEQUENCE { + rab-Info RAB-Info, + rb-InformationSetupList RB-InformationSetupList-r4 +} + +RAB-InformationSetup-r5 ::= SEQUENCE { + rab-Info RAB-Info, + rb-InformationSetupList RB-InformationSetupList-r5 +} + +RAB-InformationSetup-r6-ext ::= SEQUENCE { + rab-Info-r6-ext RAB-Info-r6-ext +} + +RAB-InformationSetup-r6 ::= SEQUENCE { + rab-Info RAB-Info-r6, + rb-InformationSetupList RB-InformationSetupList-r6 +} + +RAB-InformationSetup-v6b0ext ::= SEQUENCE { + rab-Info-v6b0ext RAB-Info-v6b0ext OPTIONAL +} + +RAB-InformationSetup-r7 ::= SEQUENCE { + rab-Info RAB-Info-r7, + rb-InformationSetupList RB-InformationSetupList-r7 +} + +RAB-InformationSetup-r8 ::= SEQUENCE { + rab-Info RAB-Info-r7, + cs-HSPA-Information CS-HSPA-Information OPTIONAL, + rab-InfoReplace RAB-InfoReplace OPTIONAL, + rb-InformationSetupList RB-InformationSetupList-r8 +} + +RAB-InformationSetup-v820ext ::= SEQUENCE { + cs-HSPA-Information CS-HSPA-Information OPTIONAL +} + +RAB-InformationSetup-r11 ::= SEQUENCE { + rab-Info RAB-Info-r7, + cs-HSPA-Information CS-HSPA-Information OPTIONAL, + rab-InfoReplace RAB-InfoReplace OPTIONAL, + rb-InformationSetupList RB-InformationSetupList-r11 +} + +RAB-InformationSetupList ::= SEQUENCE (SIZE (1..maxRABsetup)) OF + RAB-InformationSetup + +RAB-InformationSetupList-r4 ::= SEQUENCE (SIZE (1..maxRABsetup)) OF + RAB-InformationSetup-r4 + +RAB-InformationSetupList-r5 ::= SEQUENCE (SIZE (1..maxRABsetup)) OF + RAB-InformationSetup-r5 + +RAB-InformationSetupList-r6 ::= SEQUENCE (SIZE (1..maxRABsetup)) OF + RAB-InformationSetup-r6 + +-- The IE 'RAB-InformationSetupList-r6-ext' provides elements of extension information, which +-- are added to the corresponding elements of the IE 'RAB-InformationSetupList/-r4/-r5'. +RAB-InformationSetupList-r6-ext ::= SEQUENCE (SIZE (1..maxRABsetup)) OF + RAB-InformationSetup-r6-ext + +RAB-InformationSetupList-v6b0ext ::= SEQUENCE (SIZE (1..maxRABsetup)) OF + RAB-InformationSetup-v6b0ext + +RAB-InformationSetupList-r7 ::= SEQUENCE (SIZE (1..maxRABsetup)) OF + RAB-InformationSetup-r7 + +RAB-InformationSetupList-r8 ::= SEQUENCE (SIZE (1..maxRABsetup)) OF + RAB-InformationSetup-r8 + +RAB-InformationSetupList-v820ext ::= SEQUENCE (SIZE (1..maxRABsetup)) OF + RAB-InformationSetup-v820ext + +RAB-InformationSetupList-r11 ::= SEQUENCE (SIZE (1..maxRABsetup)) OF + RAB-InformationSetup-r11 + +RB-ActivationTimeInfo ::= SEQUENCE { + rb-Identity RB-Identity, + rlc-SequenceNumber RLC-SequenceNumber +} + +RB-ActivationTimeInfoList ::= SEQUENCE (SIZE (1..maxRB)) OF + RB-ActivationTimeInfo + +RB-COUNT-C-Information ::= SEQUENCE { + rb-Identity RB-Identity, + count-C-UL COUNT-C, + count-C-DL COUNT-C +} + +RB-COUNT-C-InformationList ::= SEQUENCE (SIZE (1..maxRBallRABs)) OF + RB-COUNT-C-Information + +RB-COUNT-C-MSB-Information ::= SEQUENCE { + rb-Identity RB-Identity, + count-C-MSB-UL COUNT-C-MSB, + count-C-MSB-DL COUNT-C-MSB +} + +RB-COUNT-C-MSB-InformationList ::= SEQUENCE (SIZE (1..maxRBallRABs)) OF + RB-COUNT-C-MSB-Information + +RB-Identity ::= INTEGER (1..32) + +RB-IdentityList ::= SEQUENCE (SIZE (1..maxRB)) OF + RB-Identity + +RB-InformationAffected ::= SEQUENCE { + rb-Identity RB-Identity, + rb-MappingInfo RB-MappingInfo +} + +RB-InformationAffected-r5 ::= SEQUENCE { + rb-Identity RB-Identity, + rb-MappingInfo RB-MappingInfo-r5 +} + +RB-InformationAffected-r6 ::= SEQUENCE { + rb-Identity RB-Identity, + rb-MappingInfo RB-MappingInfo-r6 +} + +RB-InformationAffected-r7 ::= SEQUENCE { + rb-Identity RB-Identity, + rb-MappingInfo RB-MappingInfo-r7 +} + +RB-InformationAffected-r8 ::= SEQUENCE { + rb-Identity RB-Identity, + rb-MappingInfo RB-MappingInfo-r8 +} + +RB-InformationAffectedList ::= SEQUENCE (SIZE (1..maxRB)) OF + RB-InformationAffected + +RB-InformationAffectedList-r5 ::= SEQUENCE (SIZE (1..maxRB)) OF + RB-InformationAffected-r5 + +RB-InformationAffectedList-r6 ::= SEQUENCE (SIZE (1..maxRB)) OF + RB-InformationAffected-r6 + +RB-InformationAffectedList-r7 ::= SEQUENCE (SIZE (1..maxRB)) OF + RB-InformationAffected-r7 + +RB-InformationAffectedList-r8 ::= SEQUENCE (SIZE (1..maxRB)) OF + RB-InformationAffected-r8 + +RB-InformationChanged-r6 ::= SEQUENCE { + rb-Identity RB-Identity, + rb-Change CHOICE { + release NULL, + re-mapToDefaultRb RB-Identity + } +} + +RB-InformationChangedList-r6 ::= SEQUENCE (SIZE (1..maxRB)) OF + RB-InformationChanged-r6 + +RB-InformationReconfig ::= SEQUENCE { + rb-Identity RB-Identity, + pdcp-Info PDCP-InfoReconfig OPTIONAL, + pdcp-SN-Info PDCP-SN-Info OPTIONAL, + rlc-Info RLC-Info OPTIONAL, + rb-MappingInfo RB-MappingInfo OPTIONAL, + rb-StopContinue RB-StopContinue OPTIONAL +} + +RB-InformationReconfig-r4 ::= SEQUENCE { + rb-Identity RB-Identity, + pdcp-Info PDCP-InfoReconfig-r4 OPTIONAL, + pdcp-SN-Info PDCP-SN-Info OPTIONAL, + rlc-Info RLC-Info OPTIONAL, + rb-MappingInfo RB-MappingInfo OPTIONAL, + rb-StopContinue RB-StopContinue OPTIONAL +} + +RB-InformationReconfig-r5 ::= SEQUENCE { + rb-Identity RB-Identity, + pdcp-Info PDCP-InfoReconfig-r4 OPTIONAL, + pdcp-SN-Info PDCP-SN-Info OPTIONAL, + rlc-Info RLC-Info-r5 OPTIONAL, + rb-MappingInfo RB-MappingInfo-r5 OPTIONAL, + rb-StopContinue RB-StopContinue OPTIONAL +} + +RB-InformationReconfig-r6 ::= SEQUENCE { + rb-Identity RB-Identity, + pdcp-Info PDCP-InfoReconfig-r4 OPTIONAL, + pdcp-SN-Info PDCP-SN-Info OPTIONAL, + rlc-Info RLC-Info-r6 OPTIONAL, + rb-MappingInfo RB-MappingInfo-r6 OPTIONAL, + rb-StopContinue RB-StopContinue OPTIONAL +} + +RB-InformationReconfig-r7 ::= SEQUENCE { + rb-Identity RB-Identity, + pdcp-Info PDCP-InfoReconfig-r4 OPTIONAL, + pdcp-SN-Info PDCP-SN-Info OPTIONAL, + rlc-Info RLC-Info-r7 OPTIONAL, + rb-MappingInfo RB-MappingInfo-r7 OPTIONAL, + rb-StopContinue RB-StopContinue OPTIONAL +} + +RB-InformationReconfig-r8 ::= SEQUENCE { + rb-Identity RB-Identity, + pdcp-Info PDCP-InfoReconfig-r4 OPTIONAL, + pdcp-SN-Info PDCP-SN-Info OPTIONAL, + rlc-Info RLC-Info-r7 OPTIONAL, + rb-MappingInfo RB-MappingInfo-r8 OPTIONAL, + rb-StopContinue RB-StopContinue OPTIONAL +} + +RB-InformationReconfig-r11 ::= SEQUENCE { + rb-Identity RB-Identity, + pdcp-Info PDCP-InfoReconfig-r4 OPTIONAL, + pdcp-SN-Info PDCP-SN-Info OPTIONAL, + rlc-Info RLC-Info-r11 OPTIONAL, + rb-MappingInfo RB-MappingInfo-r8 OPTIONAL, + rb-StopContinue RB-StopContinue OPTIONAL +} + +RB-InformationReconfigList ::= SEQUENCE (SIZE (1..maxRB)) OF + RB-InformationReconfig + +RB-InformationReconfigList-r4 ::= SEQUENCE (SIZE (1..maxRB)) OF + RB-InformationReconfig-r4 + +RB-InformationReconfigList-r5 ::= SEQUENCE (SIZE (1..maxRB)) OF + RB-InformationReconfig-r5 + +RB-InformationReconfigList-r6 ::= SEQUENCE (SIZE (1..maxRB)) OF + RB-InformationReconfig-r6 + +RB-InformationReconfigList-r7 ::= SEQUENCE (SIZE (1..maxRB)) OF + RB-InformationReconfig-r7 + +RB-InformationReconfigList-r8 ::= SEQUENCE (SIZE (1..maxRB)) OF + RB-InformationReconfig-r8 + +RB-InformationReconfigList-r11 ::= SEQUENCE (SIZE (1..maxRB)) OF + RB-InformationReconfig-r11 + +RB-InformationReleaseList ::= SEQUENCE (SIZE (1..maxRB)) OF + RB-Identity + +RB-InformationSetup ::= SEQUENCE { + rb-Identity RB-Identity, + pdcp-Info PDCP-Info OPTIONAL, + rlc-InfoChoice RLC-InfoChoice, + rb-MappingInfo RB-MappingInfo +} + +RB-InformationSetup-r4 ::= SEQUENCE { + rb-Identity RB-Identity, + pdcp-Info PDCP-Info-r4 OPTIONAL, + rlc-InfoChoice RLC-InfoChoice, + rb-MappingInfo RB-MappingInfo +} + +RB-InformationSetup-r5 ::= SEQUENCE { + rb-Identity RB-Identity, + pdcp-Info PDCP-Info-r4 OPTIONAL, + rlc-InfoChoice RLC-InfoChoice-r5, + rb-MappingInfo RB-MappingInfo-r5 +} + +RB-InformationSetup-r6 ::= SEQUENCE { + rb-Identity RB-Identity, + pdcp-Info PDCP-Info-r4 OPTIONAL, + rlc-InfoChoice RLC-InfoChoice-r6, + rb-MappingInfo RB-MappingInfo-r6 +} + +RB-InformationSetup-r7 ::= SEQUENCE { + rb-Identity RB-Identity, + pdcp-Info PDCP-Info-r4 OPTIONAL, + rlc-InfoChoice RLC-InfoChoice-r7, + rb-MappingInfo RB-MappingInfo-r7 +} + +RB-InformationSetup-r8 ::= SEQUENCE { + rb-Identity RB-Identity, + pdcp-Info PDCP-Info-r4 OPTIONAL, + rlc-InfoChoice RLC-InfoChoice-r7, + rb-MappingInfo RB-MappingInfo-r8 +} + +RB-InformationSetup-r11 ::= SEQUENCE { + rb-Identity RB-Identity, + pdcp-Info PDCP-Info-r4 OPTIONAL, + rlc-InfoChoice RLC-InfoChoice-r11, + rb-MappingInfo RB-MappingInfo-r8 +} + +RB-InformationSetupList ::= SEQUENCE (SIZE (1..maxRBperRAB)) OF + RB-InformationSetup + +RB-InformationSetupList-r4 ::= SEQUENCE (SIZE (1..maxRBperRAB)) OF + RB-InformationSetup-r4 + +RB-InformationSetupList-r5 ::= SEQUENCE (SIZE (1..maxRBperRAB)) OF + RB-InformationSetup-r5 + +RB-InformationSetupList-r6 ::= SEQUENCE (SIZE (1..maxRBperRAB)) OF + RB-InformationSetup-r6 + +RB-InformationSetupList-r7 ::= SEQUENCE (SIZE (1..maxRBperRAB)) OF + RB-InformationSetup-r7 + +RB-InformationSetupList-r8 ::= SEQUENCE (SIZE (1..maxRBperRAB)) OF + RB-InformationSetup-r8 + +RB-InformationSetupList-r11 ::= SEQUENCE (SIZE (1..maxRBperRAB)) OF + RB-InformationSetup-r11 + +RB-MappingInfo ::= SEQUENCE (SIZE (1..maxRBMuxOptions)) OF + RB-MappingOption + +RB-MappingInfo-r5 ::= SEQUENCE (SIZE (1..maxRBMuxOptions)) OF + RB-MappingOption-r5 + +RB-MappingInfo-r6 ::= SEQUENCE (SIZE (1..maxRBMuxOptions)) OF + RB-MappingOption-r6 + +RB-MappingInfo-r7 ::= SEQUENCE (SIZE (1..maxRBMuxOptions)) OF + RB-MappingOption-r7 + +RB-MappingInfo-r8 ::= SEQUENCE (SIZE (1..maxRBMuxOptions)) OF + RB-MappingOption-r8 + +RB-MappingOption ::= SEQUENCE { + ul-LogicalChannelMappings UL-LogicalChannelMappings OPTIONAL, + dl-LogicalChannelMappingList DL-LogicalChannelMappingList OPTIONAL +} + +RB-MappingOption-r5 ::= SEQUENCE { + ul-LogicalChannelMappings UL-LogicalChannelMappings OPTIONAL, + dl-LogicalChannelMappingList DL-LogicalChannelMappingList-r5 OPTIONAL +} + +RB-MappingOption-r6 ::= SEQUENCE { + ul-LogicalChannelMappings UL-LogicalChannelMappings-r6 OPTIONAL, + dl-LogicalChannelMappingList DL-LogicalChannelMappingList-r5 OPTIONAL +} + +RB-MappingOption-r7 ::= SEQUENCE { + ul-LogicalChannelMappings UL-LogicalChannelMappings-r6 OPTIONAL, + dl-LogicalChannelMappingList DL-LogicalChannelMappingList-r7 OPTIONAL +} + +RB-MappingOption-r8 ::= SEQUENCE { + ul-LogicalChannelMappings UL-LogicalChannelMappings-r8 OPTIONAL, + dl-LogicalChannelMappingList DL-LogicalChannelMappingList-r7 OPTIONAL +} + +RB-PDCPContextRelocation ::= SEQUENCE { + rb-Identity RB-Identity, + dl-RFC3095-Context-Relocation BOOLEAN, + ul-RFC3095-Context-Relocation BOOLEAN +} + +RB-PDCPContextRelocationList ::= SEQUENCE (SIZE (1..maxRBallRABs)) OF + RB-PDCPContextRelocation + +RB-StopContinue ::= ENUMERATED { + stopRB, continueRB } + +RB-WithPDCP-Info ::= SEQUENCE { + rb-Identity RB-Identity, + pdcp-SN-Info PDCP-SN-Info +} + +RB-WithPDCP-InfoList ::= SEQUENCE (SIZE (1..maxRBallRABs)) OF + RB-WithPDCP-Info + +ReceivingWindowSize ::= ENUMERATED { + rw1, rw8, rw16, rw32, rw64, rw128, rw256, + rw512, rw768, rw1024, rw1536, rw2047, + rw2560, rw3072, rw3584, rw4095 } + +RFC2507-Info ::= SEQUENCE { + f-MAX-PERIOD INTEGER (1..65535) DEFAULT 256, + f-MAX-TIME INTEGER (1..255) DEFAULT 5, + max-HEADER INTEGER (60..65535) DEFAULT 168, + tcp-SPACE INTEGER (3..255) DEFAULT 15, + non-TCP-SPACE INTEGER (3..65535) DEFAULT 15, + -- TABULAR: expectReordering has only two possible values, so using Optional or Default + -- would be wasteful + expectReordering ExpectReordering +} + +RFC3095-Info-r4 ::= SEQUENCE { + rohcProfileList ROHC-ProfileList-r4, + ul-RFC3095 UL-RFC3095-r4 OPTIONAL, + dl-RFC3095 DL-RFC3095-r4 OPTIONAL +} + +RLC-Info ::= SEQUENCE { + ul-RLC-Mode UL-RLC-Mode OPTIONAL, + dl-RLC-Mode DL-RLC-Mode OPTIONAL +} + +RLC-Info-r5 ::= SEQUENCE { + ul-RLC-Mode UL-RLC-Mode OPTIONAL, + dl-RLC-Mode DL-RLC-Mode-r5 OPTIONAL, + rlc-OneSidedReEst BOOLEAN +} + +RLC-Info-r6 ::= SEQUENCE { + ul-RLC-Mode UL-RLC-Mode OPTIONAL, + dl-RLC-Mode DL-RLC-Mode-r6 OPTIONAL, + rlc-OneSidedReEst BOOLEAN, + altE-bitInterpretation ENUMERATED { true } OPTIONAL +} + +RLC-Info-r7 ::= SEQUENCE { + ul-RLC-Mode UL-RLC-Mode OPTIONAL, + dl-RLC-Mode DL-RLC-Mode-r7 OPTIONAL, + rlc-OneSidedReEst BOOLEAN, + altE-bitInterpretation ENUMERATED { true } OPTIONAL, + useSpecialValueOfHEField ENUMERATED { true } OPTIONAL +} + +RLC-Info-r11 ::= SEQUENCE { + ul-RLC-Mode UL-RLC-Mode OPTIONAL, + dl-RLC-Mode DL-RLC-Mode-r11 OPTIONAL, + rlc-OneSidedReEst BOOLEAN, + altE-bitInterpretation ENUMERATED { true } OPTIONAL, + useSpecialValueOfHEField ENUMERATED { true } OPTIONAL +} + +RLC-Info-MCCH-r6 ::= SEQUENCE { + dl-UM-RLC-LI-size DL-UM-RLC-LI-size, + dl-UM-RLC-OutOSeqDelivery-Info UM-RLC-OutOSeqDelivery-Info-r6 OPTIONAL +} + +RLC-Info-MSCH-r6 ::= SEQUENCE { + dl-UM-RLC-LI-size DL-UM-RLC-LI-size +} + +RLC-Info-MTCH-r6 ::= SEQUENCE { + dl-UM-RLC-LI-size DL-UM-RLC-LI-size, + dl-UM-RLC-DuplAvoid-Reord-Info UM-RLC-DuplAvoid-Reord-Info-r6 OPTIONAL +} + +RLC-InfoChoice ::= CHOICE { + rlc-Info RLC-Info, + same-as-RB RB-Identity +} + +RLC-InfoChoice-r5 ::= CHOICE { + rlc-Info RLC-Info-r5, + same-as-RB RB-Identity +} + +RLC-InfoChoice-r6 ::= CHOICE { + rlc-Info RLC-Info-r6, + same-as-RB RB-Identity +} + +RLC-InfoChoice-r7 ::= CHOICE { + rlc-Info RLC-Info-r7, + same-as-RB RB-Identity +} + +RLC-InfoChoice-r11 ::= CHOICE { + rlc-Info RLC-Info-r11, + same-as-RB RB-Identity +} + +RLC-PDU-Size ::= OctetModeRLC-SizeInfoType1 + +RLC-PDU-SizeConstraint ::= SEQUENCE { + lengthIndicatorSize ENUMERATED { size7, size15 } OPTIONAL, + -- the actual values are (IE value * 8) + 16 + minRLC-PDU-Size INTEGER (0..1503), + largestRLC-PDU-Size INTEGER (0..1503) +} + +RLC-PDU-SizeList ::= SEQUENCE (SIZE (1..maxRLCPDUsizePerLogChan)) OF + RLC-PDU-Size + +RLC-SequenceNumber ::= INTEGER (0..4095) + +RLC-SizeInfo ::= SEQUENCE { + rlc-SizeIndex INTEGER (1..maxTF) +} + +RLC-SizeExplicitList ::= SEQUENCE (SIZE (1..maxTF)) OF + RLC-SizeInfo + +ROHC-Profile-r4 ::= INTEGER (1..3) + +ROHC-ProfileList-r4 ::= SEQUENCE (SIZE (1..maxROHC-Profile-r4)) OF + ROHC-Profile-r4 + +ROHC-PacketSize-r4 ::= INTEGER (2..1500) + +ROHC-PacketSizeList-r4 ::= SEQUENCE (SIZE (1..maxROHC-PacketSizes-r4)) OF + ROHC-PacketSize-r4 + +SRB-InformationSetup ::= SEQUENCE { + -- The default value for rb-Identity is the smallest value not used yet. + rb-Identity RB-Identity OPTIONAL, + rlc-InfoChoice RLC-InfoChoice, + rb-MappingInfo RB-MappingInfo +} + +SRB-InformationSetup-r5 ::= SEQUENCE { + -- The default value for rb-Identity is the smallest value not used yet. + rb-Identity RB-Identity OPTIONAL, + rlc-InfoChoice RLC-InfoChoice-r5, + rb-MappingInfo RB-MappingInfo-r5 +} + +SRB-InformationSetup-r6 ::= SEQUENCE { + -- The default value for rb-Identity is the smallest value not used yet. + rb-Identity RB-Identity OPTIONAL, + rlc-InfoChoice RLC-InfoChoice-r6, + rb-MappingInfo RB-MappingInfo-r6 +} + +SRB-InformationSetup-r7 ::= SEQUENCE { + -- The default value for rb-Identity is the smallest value not used yet. + rb-Identity RB-Identity OPTIONAL, + rlc-InfoChoice RLC-InfoChoice-r7, + rb-MappingInfo RB-MappingInfo-r7 +} + +SRB-InformationSetup-r8 ::= SEQUENCE { + -- The default value for rb-Identity is the smallest value not used yet. + rb-Identity RB-Identity OPTIONAL, + rlc-InfoChoice RLC-InfoChoice-r7, + rb-MappingInfo RB-MappingInfo-r8 +} + +SRB-InformationSetup-r11 ::= SEQUENCE { + -- The default value for rb-Identity is the smallest value not used yet. + rb-Identity RB-Identity OPTIONAL, + rlc-InfoChoice RLC-InfoChoice-r11, + rb-MappingInfo RB-MappingInfo-r8 +} + +SRB-InformationSetupList ::= SEQUENCE (SIZE (1..maxSRBsetup)) OF + SRB-InformationSetup + +SRB-InformationSetupList-r5 ::= SEQUENCE (SIZE (1..maxSRBsetup)) OF + SRB-InformationSetup-r5 + +SRB-InformationSetupList-r6 ::= SEQUENCE (SIZE (1..maxSRBsetup)) OF + SRB-InformationSetup-r6 + +SRB-InformationSetupList-r7 ::= SEQUENCE (SIZE (1..maxSRBsetup)) OF + SRB-InformationSetup-r7 + +SRB-InformationSetupList-r8 ::= SEQUENCE (SIZE (1..maxSRBsetup)) OF + SRB-InformationSetup-r8 + +SRB-InformationSetupList-r11 ::= SEQUENCE (SIZE (1..maxSRBsetup)) OF + SRB-InformationSetup-r11 + +SRB-InformationSetupList2 ::= SEQUENCE (SIZE (3..4)) OF + SRB-InformationSetup + +SRB-InformationSetupList2-r6 ::= SEQUENCE (SIZE (3..4)) OF + SRB-InformationSetup-r6 + +SRB-InformationSetupList2-r7 ::= SEQUENCE (SIZE (3..4)) OF + SRB-InformationSetup-r7 + +SRB-InformationSetupList2-r8 ::= SEQUENCE (SIZE (3..4)) OF + SRB-InformationSetup-r8 + +TimerDAR-r6 ::= ENUMERATED { + ms40, ms80, ms120, ms160, ms240, ms320, ms480, ms640, + ms960, ms1280, ms1920, ms2560, ms3840, ms5120 } + +TimerDiscard ::= ENUMERATED { + td0-1, td0-25, td0-5, td0-75, + td1, td1-25, td1-5, td1-75, + td2, td2-5, td3, td3-5, td4, + td4-5, td5, td7-5 } + +TimerEPC ::= ENUMERATED { + te50, te60, te70, te80, te90, + te100, te120, te140, te160, te180, + te200, te300, te400, te500, te700, + te900 } + +TimerMRW ::= ENUMERATED { + te50, te60, te70, te80, te90, te100, + te120, te140, te160, te180, te200, + te300, te400, te500, te700, te900 } + +TimerOSD-r6 ::= ENUMERATED { + ms40, ms80, ms120, ms160, ms240, ms320, ms480, ms640, + ms960, ms1280, ms1920, ms2560, ms3840, ms5120 } + +TimerPoll ::= ENUMERATED { + tp10, tp20, tp30, tp40, tp50, + tp60, tp70, tp80, tp90, tp100, + tp110, tp120, tp130, tp140, tp150, + tp160, tp170, tp180, tp190, tp200, + tp210, tp220, tp230, tp240, tp250, + tp260, tp270, tp280, tp290, tp300, + tp310, tp320, tp330, tp340, tp350, + tp360, tp370, tp380, tp390, tp400, + tp410, tp420, tp430, tp440, tp450, + tp460, tp470, tp480, tp490, tp500, + tp510, tp520, tp530, tp540, tp550, + tp600, tp650, tp700, tp750, tp800, + tp850, tp900, tp950, tp1000 } + +TimerPollPeriodic ::= ENUMERATED { + tper100, tper200, tper300, tper400, + tper500, tper750, tper1000, tper2000 } + +TimerPollProhibit ::= ENUMERATED { + tpp10, tpp20, tpp30, tpp40, tpp50, + tpp60, tpp70, tpp80, tpp90, tpp100, + tpp110, tpp120, tpp130, tpp140, tpp150, + tpp160, tpp170, tpp180, tpp190, tpp200, + tpp210, tpp220, tpp230, tpp240, tpp250, + tpp260, tpp270, tpp280, tpp290, tpp300, + tpp310, tpp320, tpp330, tpp340, tpp350, + tpp360, tpp370, tpp380, tpp390, tpp400, + tpp410, tpp420, tpp430, tpp440, tpp450, + tpp460, tpp470, tpp480, tpp490, tpp500, + tpp510, tpp520, tpp530, tpp540, tpp550, + tpp600, tpp650, tpp700, tpp750, tpp800, + tpp850, tpp900, tpp950, tpp1000 } + +TimerReordering ::= ENUMERATED { + tr50, tr100, tr150, tr200, tr400, tr600, tr800, tr1000 } + +TimerRST ::= ENUMERATED { + tr50, tr100, tr150, tr200, tr250, tr300, + tr350, tr400, tr450, tr500, tr550, + tr600, tr700, tr800, tr900, tr1000 } + +TimerStatusPeriodic ::= ENUMERATED { + tsp100, tsp200, tsp300, tsp400, tsp500, + tsp750, tsp1000, tsp2000 } + +TimerStatusProhibit ::= ENUMERATED { + tsp10,tsp20,tsp30,tsp40,tsp50, + tsp60,tsp70,tsp80,tsp90,tsp100, + tsp110,tsp120,tsp130,tsp140,tsp150, + tsp160,tsp170,tsp180,tsp190,tsp200, + tsp210,tsp220,tsp230,tsp240,tsp250, + tsp260,tsp270,tsp280,tsp290,tsp300, + tsp310,tsp320,tsp330,tsp340,tsp350, + tsp360,tsp370,tsp380,tsp390,tsp400, + tsp410,tsp420,tsp430,tsp440,tsp450, + tsp460,tsp470,tsp480,tsp490,tsp500, + tsp510,tsp520,tsp530,tsp540,tsp550, + tsp600,tsp650,tsp700,tsp750,tsp800, + tsp850,tsp900,tsp950,tsp1000 } + +TransmissionRLC-Discard ::= CHOICE { + timerBasedExplicit ExplicitDiscard, + timerBasedNoExplicit NoExplicitDiscard, + maxDAT-Retransmissions MaxDAT-Retransmissions, + noDiscard MaxDAT +} + +TransmissionWindowSize ::= ENUMERATED { + tw1, tw8, tw16, tw32, tw64, tw128, tw256, + tw512, tw768, tw1024, tw1536, tw2047, + tw2560, tw3072, tw3584, tw4095 } + +-- Actual bit rate per each value is defined in [62] and [63] +UL-AMR-Rate ::= ENUMERATED { + t0, t1, t2, t3, t4, t5, t6, t7, t8, spare7, spare6, spare5, + spare4, spare3, spare2, spare1 } + +UL-AM-RLC-Mode ::= SEQUENCE { + transmissionRLC-Discard TransmissionRLC-Discard, + transmissionWindowSize TransmissionWindowSize, + timerRST TimerRST, + max-RST MaxRST, + pollingInfo PollingInfo OPTIONAL +} + +UL-CounterSynchronisationInfo ::= SEQUENCE { + rB-WithPDCP-InfoList RB-WithPDCP-InfoList OPTIONAL, + startList STARTList +} + +UL-LogicalChannelMapping ::= SEQUENCE { + -- TABULAR: UL-TransportChannelType contains TransportChannelIdentity as well. + ul-TransportChannelType UL-TransportChannelType, + logicalChannelIdentity LogicalChannelIdentity OPTIONAL, + rlc-SizeList CHOICE { + allSizes NULL, + configured NULL, + explicitList RLC-SizeExplicitList + }, + mac-LogicalChannelPriority MAC-LogicalChannelPriority +} + +UL-LogicalChannelMapping-r6 ::= SEQUENCE { + ul-TrCH-Type CHOICE { + dch-rach-usch SEQUENCE { + -- TABULAR: UL-TransportChannelType contains TransportChannelIdentity as well. + ul-TransportChannelType UL-TransportChannelType, + logicalChannelIdentity LogicalChannelIdentity OPTIONAL, + rlc-SizeList CHOICE { + allSizes NULL, + configured NULL, + explicitList RLC-SizeExplicitList + } + }, + e-dch SEQUENCE { + logicalChannelIdentity LogicalChannelIdentity, + e-DCH-MAC-d-FlowIdentity E-DCH-MAC-d-FlowIdentity, + ddi DDI, + rlc-PDU-SizeList RLC-PDU-SizeList, + includeInSchedulingInfo BOOLEAN + } + }, + mac-LogicalChannelPriority MAC-LogicalChannelPriority +} + +UL-LogicalChannelMapping-r8 ::= SEQUENCE { + ul-TrCH-Type CHOICE { + dch-rach-usch SEQUENCE { + -- TABULAR: UL-TransportChannelType contains TransportChannelIdentity as well. + ul-TransportChannelType UL-TransportChannelType, + logicalChannelIdentity LogicalChannelIdentity OPTIONAL, + rlc-SizeList CHOICE { + allSizes NULL, + configured NULL, + explicitList RLC-SizeExplicitList + } + }, + e-dch SEQUENCE { + logicalChannelIdentity LogicalChannelIdentity, + e-DCH-MAC-d-FlowIdentity E-DCH-MAC-d-FlowIdentity, + rlc-PDU-Size CHOICE { + fixedSize SEQUENCE { + ddi DDI, + rlc-PDU-SizeList RLC-PDU-SizeList + }, + flexibleSize RLC-PDU-SizeConstraint + }, + includeInSchedulingInfo BOOLEAN + } + }, + mac-LogicalChannelPriority MAC-LogicalChannelPriority +} + +UL-LogicalChannelMappingList ::= SEQUENCE { + -- rlc-LogicalChannelMappingIndicator shall be set to TRUE in this version + -- of the specification + rlc-LogicalChannelMappingIndicator BOOLEAN, + ul-LogicalChannelMapping SEQUENCE (SIZE (maxLoCHperRLC)) OF + UL-LogicalChannelMapping +} + +UL-LogicalChannelMappingList-r6 ::= SEQUENCE { + -- rlc-LogicalChannelMappingIndicator shall be set to TRUE in this version + -- of the specification + rlc-LogicalChannelMappingIndicator BOOLEAN, + ul-LogicalChannelMapping SEQUENCE (SIZE (maxLoCHperRLC)) OF + UL-LogicalChannelMapping-r6 +} + +UL-LogicalChannelMappingList-r8 ::= SEQUENCE { + -- rlc-LogicalChannelMappingIndicator shall be set to TRUE in this version + -- of the specification + rlc-LogicalChannelMappingIndicator BOOLEAN, + ul-LogicalChannelMapping SEQUENCE (SIZE (maxLoCHperRLC)) OF + UL-LogicalChannelMapping-r8 +} + +UL-LogicalChannelMappings ::= CHOICE { + oneLogicalChannel UL-LogicalChannelMapping, + twoLogicalChannels UL-LogicalChannelMappingList +} + +UL-LogicalChannelMappings-r6 ::= CHOICE { + oneLogicalChannel UL-LogicalChannelMapping-r6, + twoLogicalChannels UL-LogicalChannelMappingList-r6 +} + +UL-LogicalChannelMappings-r8 ::= CHOICE { + oneLogicalChannel UL-LogicalChannelMapping-r8, + twoLogicalChannels UL-LogicalChannelMappingList-r8 +} + +UL-RFC3095-r4 ::= SEQUENCE { + -- dummy1 is not used in this version of the specification and shall be ignored by the receiver. + dummy1 CID-InclusionInfo-r4, + max-CID INTEGER (1..16383) DEFAULT 15, + -- dummy is not used in this version of the specification and + -- it should be ignored by the receiver. + dummy ROHC-PacketSizeList-r4 +} + +UL-RLC-Mode ::= CHOICE { + ul-AM-RLC-Mode UL-AM-RLC-Mode, + ul-UM-RLC-Mode UL-UM-RLC-Mode, + ul-TM-RLC-Mode UL-TM-RLC-Mode, + spare NULL +} + +UL-TM-RLC-Mode ::= SEQUENCE { + transmissionRLC-Discard TransmissionRLC-Discard OPTIONAL, + segmentationIndication BOOLEAN +} + +UL-UM-RLC-Mode ::= SEQUENCE { + transmissionRLC-Discard TransmissionRLC-Discard OPTIONAL +} + +UL-TransportChannelType ::= CHOICE { + dch TransportChannelIdentity, + rach NULL, + -- dummy is not used in this version of the specification and + -- if received the UE behaviour is not specified. + dummy NULL, + usch TransportChannelIdentity +} + +UM-RLC-DuplAvoid-Reord-Info-r6 ::= SEQUENCE { + timer-DAR TimerDAR-r6, + widowSize-DAR WindowSizeDAR-r6 +} + +UM-RLC-OutOSeqDelivery-Info-r6 ::= SEQUENCE { + timer-OSD TimerOSD-r6 OPTIONAL, + windowSize-OSD WindowSizeOSD-r6 +} + +WindowSizeDAR-r6 ::= ENUMERATED { + ws4, ws8, ws16, ws32, ws40, ws48, + ws56, ws64 } + +WindowSizeOSD-r6 ::= ENUMERATED { + ws8, ws16, ws32, ws40, ws48, + ws56, ws64 } + +-- *************************************************** +-- +-- TRANSPORT CHANNEL INFORMATION ELEMENTS (10.3.5) +-- +-- *************************************************** + +AddOrReconfMAC-dFlow ::= SEQUENCE { + mac-hs-AddReconfQueue-List MAC-hs-AddReconfQueue-List OPTIONAL, + mac-hs-DelQueue-List MAC-hs-DelQueue-List OPTIONAL +} + +AddOrReconfMAC-ehs-ReordQ ::= SEQUENCE { + mac-ehs-AddReconfQueue-List MAC-ehs-AddReconfReordQ-List OPTIONAL, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy MAC-ehs-DelReordQ-List OPTIONAL +} + +AddOrReconfMAC-ehs-ReordQ-r9 ::= SEQUENCE { + mac-ehs-AddReconfQueue-List MAC-ehs-AddReconfReordQ-List-r9 OPTIONAL +} + +AddOrReconfMAC-ehs-ReordQ-TDD128-v9c0ext ::= SEQUENCE { + mac-ehs-AddReconfQueue-List MAC-ehs-AddReconfReordQ-List-TDD128-v9c0ext OPTIONAL +} + +AddOrReconfMAC-ehs-ReordQ-r11 ::= SEQUENCE { + mac-ehs-AddReconfQueue-List MAC-ehs-AddReconfReordQ-List-r11 OPTIONAL +} + +AllowedTFC-List ::= SEQUENCE (SIZE (1..maxTFC)) OF + TFC-Value + +AllowedTFI-List ::= SEQUENCE (SIZE (1..maxTF)) OF + INTEGER (0..31) + +BitModeRLC-SizeInfo ::= CHOICE { + sizeType1 INTEGER (0..127), + -- Actual value sizeType2 = (part1 * 8) + 128 + part2 + sizeType2 SEQUENCE { + part1 INTEGER (0..15), + part2 INTEGER (1..7) OPTIONAL + }, + -- Actual value sizeType3 = (part1 * 16) + 256 + part2 + sizeType3 SEQUENCE { + part1 INTEGER (0..47), + part2 INTEGER (1..15) OPTIONAL + }, + -- Actual value sizeType4 = (part1 * 64) + 1024 + part2 + sizeType4 SEQUENCE { + part1 INTEGER (0..62), + part2 INTEGER (1..63) OPTIONAL + } +} + +-- Actual value BLER-QualityValue = IE value * 0.1 +BLER-QualityValue ::= INTEGER (-63..0) + +ChannelCodingType ::= CHOICE { + -- noCoding is only used for TDD in this version of the specification, + -- otherwise it should be ignored + noCoding NULL, + convolutional CodingRate, + turbo NULL +} + +CodingRate ::= ENUMERATED { + half, + third } + +Common-E-DCH-MAC-d-Flow ::= SEQUENCE { + mac-d-FlowIdentity E-DCH-MAC-d-FlowIdentity, + mac-d-FlowPowerOffset E-DCH-MAC-d-FlowPowerOffset, + mac-d-FlowMaxRetrans E-DCH-MAC-d-FlowMaxRetrans, + mac-d-FlowMultiplexingList E-DCH-MAC-d-FlowMultiplexingList OPTIONAL, + e-dch-mac-d-flow-retransmission-timer E-DCH-MAC-d-FlowRetransTimer OPTIONAL +} + +Common-E-DCH-MAC-d-FlowList ::= SEQUENCE (SIZE (1..maxE-DCHMACdFlow)) OF + Common-E-DCH-MAC-d-Flow + +Common-E-DCH-MAC-d-Flow-Info-ConcurrentTTI ::= SEQUENCE { + mac-d-FlowIdentity E-DCH-MAC-d-FlowIdentity, + mac-d-FlowPowerOffset E-DCH-MAC-d-FlowPowerOffset OPTIONAL, + mac-d-FlowMaxRetrans E-DCH-MAC-d-FlowMaxRetrans OPTIONAL +} + +Common-E-DCH-MAC-d-Flow-Info-List-ConcurrentTTI ::= SEQUENCE (SIZE (1..maxE-DCHMACdFlow)) OF + Common-E-DCH-MAC-d-Flow-Info-ConcurrentTTI + +CommonDynamicTF-Info ::= SEQUENCE { + rlc-Size CHOICE { + fdd SEQUENCE { + octetModeRLC-SizeInfoType2 OctetModeRLC-SizeInfoType2 + }, + tdd SEQUENCE { + commonTDD-Choice CHOICE { + bitModeRLC-SizeInfo BitModeRLC-SizeInfo, + octetModeRLC-SizeInfoType1 OctetModeRLC-SizeInfoType1 + } + } + }, + numberOfTbSizeList SEQUENCE (SIZE (1..maxTF)) OF + NumberOfTransportBlocks, + logicalChannelList LogicalChannelList +} + +CommonDynamicTF-Info-DynamicTTI ::= SEQUENCE { + commonTDD-Choice CHOICE { + bitModeRLC-SizeInfo BitModeRLC-SizeInfo, + octetModeRLC-SizeInfoType1 OctetModeRLC-SizeInfoType1 + }, + numberOfTbSizeAndTTIList NumberOfTbSizeAndTTIList, + logicalChannelList LogicalChannelList +} + +CommonDynamicTF-InfoList ::= SEQUENCE (SIZE (1..maxTF)) OF + CommonDynamicTF-Info + +CommonDynamicTF-InfoList-DynamicTTI ::= SEQUENCE (SIZE (1..maxTF)) OF + CommonDynamicTF-Info-DynamicTTI + +CommonTransChTFS ::= SEQUENCE { + tti CHOICE { + tti10 CommonDynamicTF-InfoList, + tti20 CommonDynamicTF-InfoList, + tti40 CommonDynamicTF-InfoList, + tti80 CommonDynamicTF-InfoList, + dynamic CommonDynamicTF-InfoList-DynamicTTI + }, + semistaticTF-Information SemistaticTF-Information +} + +CommonTransChTFS-LCR ::= SEQUENCE { + tti CHOICE { + tti5 CommonDynamicTF-InfoList, + tti10 CommonDynamicTF-InfoList, + tti20 CommonDynamicTF-InfoList, + tti40 CommonDynamicTF-InfoList, + tti80 CommonDynamicTF-InfoList, + dynamic CommonDynamicTF-InfoList-DynamicTTI + }, + semistaticTF-Information SemistaticTF-Information +} + +Common-MAC-ehs-ReorderingQueue ::= SEQUENCE { + mac-ehs-QueueId MAC-ehs-QueueId, + t1-ReleaseTimer T1-ReleaseTimer, + reorderingResetTimer Treset-ResetTimer OPTIONAL, + mac-ehsWindowSize MAC-hs-WindowSize +} + +Common-MAC-ehs-ReorderingQueueList ::= SEQUENCE (SIZE (1.. maxCommonQueueID)) OF + Common-MAC-ehs-ReorderingQueue + +Concurrent-Deployment-2ms-10ms-TTI ::= SEQUENCE { + tti-selection CHOICE { + fixed SEQUENCE { + fixed-TTI-Selection ENUMERATED { tti2, tti10 } + }, + threshold-based SEQUENCE { + common-E-DCH-TTI-Selection-Thresh INTEGER (0..15) + } + }, + concurrent-TTI-Partition-Index INTEGER (0..maxEDCHs-1), + commonEDCHSystemInfoParamConcurrentTTI CommonEDCHSystemInfoParamConcurrentTTI OPTIONAL +} + +CPCH-SetID ::= INTEGER (1..maxCPCHsets) + +CRC-Size ::= ENUMERATED { + crc0, crc8, crc12, crc16, crc24 } + +DedicatedDynamicTF-Info ::= SEQUENCE { + rlc-Size CHOICE { + bitMode BitModeRLC-SizeInfo, + octetModeType1 OctetModeRLC-SizeInfoType1 + }, + numberOfTbSizeList SEQUENCE (SIZE (1..maxTF)) OF + NumberOfTransportBlocks, + logicalChannelList LogicalChannelList +} + +DedicatedDynamicTF-Info-DynamicTTI ::= SEQUENCE { + rlc-Size CHOICE { + bitMode BitModeRLC-SizeInfo, + octetModeType1 OctetModeRLC-SizeInfoType1 + }, + numberOfTbSizeAndTTIList NumberOfTbSizeAndTTIList, + logicalChannelList LogicalChannelList +} + +DedicatedDynamicTF-InfoList ::= SEQUENCE (SIZE (1..maxTF)) OF + DedicatedDynamicTF-Info + +DedicatedDynamicTF-InfoList-DynamicTTI ::= SEQUENCE (SIZE (1..maxTF)) OF + DedicatedDynamicTF-Info-DynamicTTI + +DedicatedTransChTFS ::= SEQUENCE { + tti CHOICE { + tti10 DedicatedDynamicTF-InfoList, + tti20 DedicatedDynamicTF-InfoList, + tti40 DedicatedDynamicTF-InfoList, + tti80 DedicatedDynamicTF-InfoList, + dynamic DedicatedDynamicTF-InfoList-DynamicTTI + }, + semistaticTF-Information SemistaticTF-Information +} + +-- The maximum allowed size of DL-AddReconfTransChInfo2List sequence is 16 +DL-AddReconfTransChInfo2List ::= SEQUENCE (SIZE (1..maxTrCHpreconf)) OF + DL-AddReconfTransChInformation2 + +-- The maximum allowed size of DL-AddReconfTransChInfoList sequence is 16 +DL-AddReconfTransChInfoList ::= SEQUENCE (SIZE (1..maxTrCHpreconf)) OF + DL-AddReconfTransChInformation + +-- The maximum allowed size of DL-AddReconfTransChInfoList-r4 sequence is 16 +DL-AddReconfTransChInfoList-r4 ::= SEQUENCE (SIZE (1..maxTrCHpreconf)) OF + DL-AddReconfTransChInformation-r4 + +-- The maximum allowed size of DL-AddReconfTransChInfoList-r5 sequence is 16 +DL-AddReconfTransChInfoList-r5 ::= SEQUENCE (SIZE (1..maxTrCHpreconf)) OF + DL-AddReconfTransChInformation-r5 + +-- The maximum allowed size of DL-AddReconfTransChInfoList-r7 sequence is 16 +DL-AddReconfTransChInfoList-r7 ::= SEQUENCE (SIZE (1..maxTrCHpreconf)) OF + DL-AddReconfTransChInformation-r7 + +DL-AddReconfTransChInfoList-r9 ::= SEQUENCE (SIZE (1..maxTrCHpreconf)) OF + DL-AddReconfTransChInformation-r9 + +DL-AddReconfTransChInfoList-TDD128-v9c0ext ::= SEQUENCE (SIZE (1..maxTrCHpreconf)) OF + DL-AddReconfTransChInformation-TDD128-v9c0ext + +DL-AddReconfTransChInfoList-r11 ::= SEQUENCE (SIZE (1..maxTrCHpreconf)) OF + DL-AddReconfTransChInformation-r11 + +-- ASN.1 for IE "Added or Reconfigured DL TrCH information" +-- in case of messages other than: Radio Bearer Release message and +-- Radio Bearer Reconfiguration message +DL-AddReconfTransChInformation ::= SEQUENCE { + dl-TransportChannelType DL-TrCH-Type, + dl-transportChannelIdentity TransportChannelIdentity, + tfs-SignallingMode CHOICE { + explicit-config TransportFormatSet, + sameAsULTrCH UL-TransportChannelIdentity + }, + dch-QualityTarget QualityTarget OPTIONAL, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy TM-SignallingInfo OPTIONAL +} + +DL-AddReconfTransChInformation-r4 ::= SEQUENCE { + dl-TransportChannelType DL-TrCH-Type, + dl-transportChannelIdentity TransportChannelIdentity, + tfs-SignallingMode CHOICE { + explicit-config TransportFormatSet, + sameAsULTrCH UL-TransportChannelIdentity + }, + dch-QualityTarget QualityTarget OPTIONAL +} + +DL-AddReconfTransChInformation-r5 ::= SEQUENCE { + dl-TransportChannelType DL-TrCH-TypeId1-r5, + tfs-SignallingMode CHOICE { + explicit-config TransportFormatSet, + sameAsULTrCH UL-TransportChannelIdentity, + hsdsch HSDSCH-Info + }, + dch-QualityTarget QualityTarget OPTIONAL +} + +DL-AddReconfTransChInformation-r7 ::= SEQUENCE { + dl-TransportChannelType DL-TrCH-TypeId1-r5, + tfs-SignallingMode CHOICE { + explicit-config TransportFormatSet, + sameAsULTrCH UL-TransportChannelIdentity, + hsdsch HSDSCH-Info-r7 + }, + dch-QualityTarget QualityTarget OPTIONAL +} + +DL-AddReconfTransChInformation-r9 ::= SEQUENCE { + dl-TransportChannelType DL-TrCH-TypeId1-r5, + tfs-SignallingMode CHOICE { + explicit-config TransportFormatSet, + sameAsULTrCH UL-TransportChannelIdentity, + hsdsch HSDSCH-Info-r9 + }, + dch-QualityTarget QualityTarget OPTIONAL +} + +DL-AddReconfTransChInformation-TDD128-v9c0ext ::= SEQUENCE { + hsdsch HSDSCH-Info-TDD128-v9c0ext OPTIONAL +} + +DL-AddReconfTransChInformation-r11 ::= SEQUENCE { + dl-TransportChannelType DL-TrCH-TypeId1-r5, + tfs-SignallingMode CHOICE { + explicit-config TransportFormatSet, + sameAsULTrCH UL-TransportChannelIdentity, + hsdsch HSDSCH-Info-r11 + }, + dch-QualityTarget QualityTarget OPTIONAL +} + +-- ASN.1 for IE "Added or Reconfigured DL TrCH information" +-- in case of Radio Bearer Release message and +-- Radio Bearer Reconfiguration message +DL-AddReconfTransChInformation2 ::= SEQUENCE { + dl-TransportChannelType DL-TrCH-Type, + transportChannelIdentity TransportChannelIdentity, + tfs-SignallingMode CHOICE { + explicit-config TransportFormatSet, + sameAsULTrCH UL-TransportChannelIdentity + }, + qualityTarget QualityTarget OPTIONAL +} + +DL-CommonTransChInfo ::= SEQUENCE { + sccpch-TFCS TFCS OPTIONAL, + -- modeSpecificInfo should be optional. A new version of this IE should be defined + -- to be used in later versions of messages using this IE + modeSpecificInfo CHOICE { + fdd SEQUENCE { + dl-Parameters CHOICE { + dl-DCH-TFCS TFCS, + sameAsUL NULL + } OPTIONAL + }, + tdd SEQUENCE { + individualDL-CCTrCH-InfoList IndividualDL-CCTrCH-InfoList + OPTIONAL + } + } +} + +DL-CommonTransChInfo-r4 ::= SEQUENCE { + sccpch-TFCS TFCS OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + dl-Parameters CHOICE { + dl-DCH-TFCS SEQUENCE { + tfcs TFCS OPTIONAL + }, + sameAsUL NULL + } OPTIONAL + }, + tdd SEQUENCE { + individualDL-CCTrCH-InfoList IndividualDL-CCTrCH-InfoList + OPTIONAL + } + } OPTIONAL +} + +DL-DeletedTransChInfoList ::= SEQUENCE (SIZE (1..maxTrCH)) OF + DL-TransportChannelIdentity + +DL-DeletedTransChInfoList-r5 ::= SEQUENCE (SIZE (1..maxTrCH)) OF + DL-TransportChannelIdentity-r5 + +DL-DeletedTransChInfoList-r7 ::= SEQUENCE (SIZE (1..maxTrCH)) OF + DL-TransportChannelIdentity-r7 + +DL-TransportChannelIdentity ::= SEQUENCE { + dl-TransportChannelType DL-TrCH-Type, + dl-TransportChannelIdentity TransportChannelIdentity +} + +DL-TransportChannelIdentity-r5 ::= SEQUENCE { + dl-TransportChannelType DL-TrCH-TypeId2-r5 +} + +DL-TransportChannelIdentity-r7 ::= SEQUENCE { + dl-TransportChannelType DL-TrCH-TypeId2-r7 +} + +-- The choice "dsch" should not be used in FDD mode, and if received the UE behaviour is unspecified +DL-TrCH-Type ::= ENUMERATED {dch, dsch} + +DL-TrCH-TypeId1-r5 ::= CHOICE { + dch TransportChannelIdentity, + -- The choice "dsch" should not be used in FDD mode, and if received + -- the UE behaviour is unspecified. + dsch TransportChannelIdentity, + hsdsch NULL +} + +DL-TrCH-TypeId2-r5 ::= CHOICE { + dch TransportChannelIdentity, + -- The choice "dsch" should not be used in FDD mode, and if received + -- the UE behaviour is unspecified. + dsch TransportChannelIdentity, + hsdsch MAC-d-FlowIdentity +} + +DL-TrCH-TypeId2-r7 ::= CHOICE { + dch TransportChannelIdentity, + -- The choice "dsch" should not be used in FDD mode, and if received + -- the UE behaviour is unspecified. + dsch TransportChannelIdentity, + hsdsch CHOICE { + mac-hs MAC-d-FlowIdentity, + mac-ehs MAC-ehs-QueueId + } +} + +DRAC-ClassIdentity ::= INTEGER (1..maxDRACclasses) + +DRAC-StaticInformation ::= SEQUENCE { + transmissionTimeValidity TransmissionTimeValidity, + timeDurationBeforeRetry TimeDurationBeforeRetry, + drac-ClassIdentity DRAC-ClassIdentity +} + +DRAC-StaticInformationList ::= SEQUENCE (SIZE (1..maxTrCH)) OF + DRAC-StaticInformation + +E-DCH-AddReconf-MAC-d-Flow ::= SEQUENCE { + mac-d-FlowIdentity E-DCH-MAC-d-FlowIdentity, + mac-d-FlowPowerOffset E-DCH-MAC-d-FlowPowerOffset OPTIONAL, + mac-d-FlowMaxRetrans E-DCH-MAC-d-FlowMaxRetrans OPTIONAL, + mac-d-FlowMultiplexingList E-DCH-MAC-d-FlowMultiplexingList OPTIONAL, + transmissionGrantType CHOICE { + non-ScheduledTransGrantInfo SEQUENCE { + maxMAC-e-PDUContents INTEGER (1..19982), + ms2-NonSchedTransmGrantHARQAlloc BIT STRING (SIZE (8)) OPTIONAL + }, + scheduledTransmissionGrantInfo NULL + } OPTIONAL +} + +E-DCH-AddReconf-MAC-d-Flow-r7 ::= SEQUENCE { + mac-d-FlowIdentity E-DCH-MAC-d-FlowIdentity, + mac-d-FlowPowerOffset E-DCH-MAC-d-FlowPowerOffset OPTIONAL, + mac-d-FlowMaxRetrans E-DCH-MAC-d-FlowMaxRetrans OPTIONAL, + mac-d-FlowRetransTimer E-DCH-MAC-d-FlowRetransTimer OPTIONAL, + mac-d-FlowMultiplexingList E-DCH-MAC-d-FlowMultiplexingList OPTIONAL, + transmissionGrantType CHOICE { + non-ScheduledTransGrantInfo SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + maxMAC-e-PDUContents INTEGER (1..19982), + ms2-NonSchedTransmGrantHARQAlloc BIT STRING (SIZE (8)) OPTIONAL + }, + tdd NULL + } + }, + scheduledTransmissionGrantInfo NULL + } OPTIONAL +} + +E-DCH-AddReconf-MAC-d-FlowList ::= SEQUENCE (SIZE (1..maxE-DCHMACdFlow)) OF + E-DCH-AddReconf-MAC-d-Flow + +E-DCH-AddReconf-MAC-d-FlowList-r7 ::= SEQUENCE (SIZE (1..maxE-DCHMACdFlow)) OF + E-DCH-AddReconf-MAC-d-Flow-r7 + +E-DCH-MAC-d-FlowIdentity ::= INTEGER (0..maxE-DCHMACdFlow-1) + +E-DCH-MAC-d-FlowMaxRetrans ::= INTEGER (0..15) + +E-DCH-MAC-d-FlowMultiplexingList ::= BIT STRING (SIZE (maxE-DCHMACdFlow)) + +E-DCH-MAC-d-FlowPowerOffset ::= INTEGER (0..6) + +E-DCH-MAC-d-FlowRetransTimer ::= ENUMERATED { + ms10, ms15, ms20, ms25, ms30, ms35, ms40, ms45, ms50, + ms55, ms60, ms65, ms70, ms75, ms80, ms85, ms90, ms95, + ms100, ms110, ms120, ms140, ms160, ms200, ms240, ms280, + ms320, ms400, ms480, ms560 } + +E-DCH-TTI ::= ENUMERATED { tti2, tti10 } + +ExplicitTFCS-Configuration ::= CHOICE { + complete TFCS-ReconfAdd, + addition TFCS-ReconfAdd, + removal TFCS-RemovalList, + replacement SEQUENCE { + tfcsRemoval TFCS-RemovalList, + tfcsAdd TFCS-ReconfAdd + } +} + +GainFactor ::= INTEGER (0..15) + +GainFactorInformation ::= CHOICE { + signalledGainFactors SignalledGainFactors, + computedGainFactors ReferenceTFC-ID +} + +HSDSCH-Info ::= SEQUENCE { + harqInfo HARQ-Info OPTIONAL, + addOrReconfMAC-dFlow AddOrReconfMAC-dFlow OPTIONAL +} + +HSDSCH-Info-r7 ::= SEQUENCE { + harqInfo HARQ-Info-r7 OPTIONAL, + dl-MAC-HeaderType CHOICE { + mac-hs AddOrReconfMAC-dFlow, + mac-ehs AddOrReconfMAC-ehs-ReordQ + } OPTIONAL +} + +HSDSCH-Info-r9 ::= SEQUENCE { + harqInfo HARQ-Info-r7 OPTIONAL, + dl-MAC-HeaderType CHOICE { + mac-hs AddOrReconfMAC-dFlow, + mac-ehs AddOrReconfMAC-ehs-ReordQ-r9 + } OPTIONAL +} + +HSDSCH-Info-TDD128-v9c0ext ::= SEQUENCE { + mac-ehs AddOrReconfMAC-ehs-ReordQ-TDD128-v9c0ext OPTIONAL +} + +HSDSCH-Info-r11 ::= SEQUENCE { + harqInfo HARQ-Info-r11 OPTIONAL, + dl-MAC-HeaderType CHOICE { + mac-hs AddOrReconfMAC-dFlow, + mac-ehs AddOrReconfMAC-ehs-ReordQ-r11 + } OPTIONAL +} + +HARQ-Info ::= SEQUENCE { + numberOfProcesses INTEGER (1..8), + memoryPartitioning CHOICE { + implicit NULL, + explicit SEQUENCE (SIZE (1..maxHProcesses)) OF + HARQMemorySize + } +} + +HARQ-Info-r7 ::= SEQUENCE { + numberOfProcesses ENUMERATED { n1, n2, n3, n4, n5, n6, n7, n8, + n12, n14, n16 }, + memoryPartitioning CHOICE { + implicit NULL, + explicit SEQUENCE { + memorySize SEQUENCE (SIZE (1..maxHProcesses)) OF + HARQMemorySize, + additionalMemorySizesForMIMO SEQUENCE (SIZE (1..maxHProcesses)) OF + HARQMemorySize OPTIONAL + } + } +} + +HARQ-Info-r11 ::= SEQUENCE { + numberOfProcesses ENUMERATED { n1, n2, n3, n4, n5, n6, n7, n8, + n12, n14, n16, n24, n28, n32 }, + memoryPartitioning CHOICE { + implicit NULL, + explicit SEQUENCE { + memorySize SEQUENCE (SIZE (1..maxHProcesses)) OF + HARQMemorySize, + additionalMemorySizesForMIMO SEQUENCE (SIZE (1..maxHProcesses)) OF + HARQMemorySize OPTIONAL, + additionalMemorySizesThirdMIMOStream SEQUENCE (SIZE (1..maxHProcesses)) OF + HARQMemorySize OPTIONAL, + additionalMemorySizesFourthMIMOStream SEQUENCE (SIZE (1..maxHProcesses)) OF + HARQMemorySize OPTIONAL + } + } +} + +HARQMemorySize ::= ENUMERATED { + hms800, hms1600, hms2400, hms3200, hms4000, + hms4800, hms5600, hms6400, hms7200, hms8000, + hms8800, hms9600, hms10400, hms11200, hms12000, + hms12800, hms13600, hms14400, hms15200, hms16000, + hms17600, hms19200, hms20800, hms22400, hms24000, + hms25600, hms27200, hms28800, hms30400, hms32000, + hms36000, hms40000, hms44000, hms48000, hms52000, + hms56000, hms60000, hms64000, hms68000, hms72000, + hms76000, hms80000, hms88000, hms96000, hms104000, + hms112000, hms120000, hms128000, hms136000, hms144000, + hms152000, hms160000, hms176000, hms192000, hms208000, + hms224000, hms240000, hms256000, hms272000, hms288000, + hms304000 } + +IndividualDL-CCTrCH-Info ::= SEQUENCE { + dl-TFCS-Identity TFCS-Identity, + tfcs-SignallingMode CHOICE { + explicit-config TFCS, + sameAsUL TFCS-Identity + } +} + +IndividualDL-CCTrCH-InfoList ::= SEQUENCE (SIZE (1..maxCCTrCH)) OF + IndividualDL-CCTrCH-Info + +IndividualUL-CCTrCH-Info ::= SEQUENCE { + ul-TFCS-Identity TFCS-Identity, + ul-TFCS TFCS , + tfc-Subset TFC-Subset +} + +IndividualUL-CCTrCH-InfoList ::= SEQUENCE (SIZE (1..maxCCTrCH)) OF + IndividualUL-CCTrCH-Info + +LogicalChannelByRB ::= SEQUENCE { + rb-Identity RB-Identity, + logChOfRb INTEGER (0..1) OPTIONAL +} + +LogicalChannelList ::= CHOICE { + allSizes NULL, + configured NULL, + explicitList SEQUENCE (SIZE (1..15)) OF + LogicalChannelByRB +} + +MAC-d-FlowIdentityDCHandHSDSCH ::= SEQUENCE { + dch-transport-ch-id TransportChannelIdentity, + hsdsch-mac-d-flow-id MAC-d-FlowIdentity +} + +MAC-d-FlowIdentity ::= INTEGER (0..7) + +MAC-d-PDU-SizeInfo-List ::= SEQUENCE (SIZE(1.. maxMAC-d-PDUsizes)) OF + MAC-d-PDUsizeInfo + +--MAC-d-Pdu sizes need to be defined +MAC-d-PDUsizeInfo ::= SEQUENCE{ + mac-d-PDU-Size INTEGER (1..5000), + mac-d-PDU-Index INTEGER(0..7) +} + +MAC-hs-AddReconfQueue-List ::= SEQUENCE (SIZE(1..maxQueueIDs)) OF + MAC-hs-AddReconfQueue + +MAC-hs-AddReconfQueue ::= SEQUENCE { + mac-hsQueueId INTEGER(0..7), + mac-dFlowId MAC-d-FlowIdentity, + reorderingReleaseTimer T1-ReleaseTimer, + mac-hsWindowSize MAC-hs-WindowSize, + mac-d-PDU-SizeInfo-List MAC-d-PDU-SizeInfo-List OPTIONAL +} + +MAC-hs-DelQueue-List ::= SEQUENCE (SIZE(1..maxQueueIDs)) OF + MAC-hs-DelQueue + +MAC-hs-DelQueue ::= SEQUENCE { + mac-hsQueueId INTEGER(0..7) +} + +MAC-ehs-AddReconfReordQ-List ::= SEQUENCE (SIZE(1..maxQueueIDs)) OF + MAC-ehs-AddReconfReordQ + +MAC-ehs-AddReconfReordQ-List-r9 ::= SEQUENCE (SIZE(1..maxQueueIDs)) OF + MAC-ehs-AddReconfReordQ-r9 + +MAC-ehs-AddReconfReordQ-List-TDD128-v9c0ext ::= SEQUENCE (SIZE(1..maxQueueIDs)) OF + MAC-ehs-AddReconfReordQ-TDD128-v9c0ext + +MAC-ehs-AddReconfReordQ-List-r11 ::= SEQUENCE (SIZE(1..maxQueueIDs)) OF + MAC-ehs-AddReconfReordQ-r11 + +MAC-ehs-AddReconfReordQ ::= SEQUENCE { + mac-ehs-QueueId MAC-ehs-QueueId, + reorderingReleaseTimer T1-ReleaseTimer, + reorderingResetTimer Treset-ResetTimer OPTIONAL, + mac-ehsWindowSize MAC-hs-WindowSize +} + +MAC-ehs-AddReconfReordQ-r9 ::= SEQUENCE { + mac-ehs-QueueId MAC-ehs-QueueId, + reorderingReleaseTimer T1-ReleaseTimer, + reorderingResetTimer Treset-ResetTimer OPTIONAL, + mac-ehsWindowSize MAC-hs-WindowSize-r9 +} + +MAC-ehs-AddReconfReordQ-TDD128-v9c0ext ::= SEQUENCE { + mac-ehsWindowSize-extension MAC-ehs-WindowSize-TDD128-v9c0ext OPTIONAL +} + +MAC-ehs-AddReconfReordQ-r11 ::= SEQUENCE { + mac-ehs-QueueId MAC-ehs-QueueId, + reorderingReleaseTimer T1-ReleaseTimer, + reorderingResetTimer Treset-ResetTimer OPTIONAL, + mac-ehsWindowSize MAC-hs-WindowSize-r11, + -- For 1.28Mcps TDD only + mac-ehsWindowSize-extension MAC-ehs-WindowSize-TDD128-v9c0ext OPTIONAL +} + +MAC-ehs-DelReordQ-List ::= SEQUENCE (SIZE(1..maxQueueIDs)) OF + MAC-ehs-DelReordQ + +MAC-ehs-DelReordQ ::= SEQUENCE { + mac-ehs-QueueId MAC-ehs-QueueId +} + +MAC-ehs-QueueIdDCHandHSDSCH ::= SEQUENCE { + dch-transport-ch-id TransportChannelIdentity, + hsdsch-mac-ehs-QueueId MAC-ehs-QueueId +} + +MAC-ehs-QueueId ::= INTEGER (0..7) + +MAC-hs-WindowSize ::= ENUMERATED { + mws4, mws6, mws8, mws12, mws16, mws24, mws32 } + +MAC-hs-WindowSize-r9 ::= ENUMERATED { + mws4, mws6, mws8, mws12, mws16, mws24, mws32, + mw64, mw128 } + +MAC-ehs-WindowSize-TDD128-v9c0ext ::= ENUMERATED { + mws96, mws160, mws192, mws256 } + +MAC-hs-WindowSize-r11 ::= ENUMERATED { + mws4, mws6, mws8, mws12, mws16, mws24, mws32, + mws64, mws128, mws256, spare6, spare5, spare4, + spare3, spare2, spare1 } + +NumberOfTbSizeAndTTIList ::= SEQUENCE (SIZE (1..maxTF)) OF SEQUENCE { + numberOfTransportBlocks NumberOfTransportBlocks, + transmissionTimeInterval TransmissionTimeInterval +} + +MessType ::= ENUMERATED { + transportFormatCombinationControl } + +Non-allowedTFC-List ::= SEQUENCE (SIZE (1..maxTFC)) OF + TFC-Value + +NumberOfTransportBlocks ::= CHOICE { + zero NULL, + one NULL, + small INTEGER (2..17), + large INTEGER (18..512) +} + +OctetModeRLC-SizeInfoType1 ::= CHOICE { + -- Actual size = (8 * sizeType1) + 16 + sizeType1 INTEGER (0..31), + sizeType2 SEQUENCE { + -- Actual size = (32 * part1) + 272 + (part2 * 8) + part1 INTEGER (0..23), + part2 INTEGER (1..3) OPTIONAL + }, + sizeType3 SEQUENCE { + -- Actual size = (64 * part1) + 1040 + (part2 * 8) + part1 INTEGER (0..61), + part2 INTEGER (1..7) OPTIONAL + } +} + +OctetModeRLC-SizeInfoType2 ::= CHOICE { + -- Actual size = (sizeType1 * 8) + 48 + sizeType1 INTEGER (0..31), + -- Actual size = (sizeType2 * 16) + 312 + sizeType2 INTEGER (0..63), + -- Actual size = (sizeType3 *64) + 1384 + sizeType3 INTEGER (0..56) +} + +PowerOffsetInfoShort ::= SEQUENCE { + referenceTFC TFC-Value, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + gainFactorBetaC GainFactor + }, + tdd NULL + }, + gainFactorBetaD GainFactor +} + +PowerOffsetInformation ::= SEQUENCE { + gainFactorInformation GainFactorInformation, + -- PowerOffsetPp-m is always absent in TDD + powerOffsetPp-m PowerOffsetPp-m OPTIONAL +} + +PowerOffsetPp-m ::= INTEGER (-5..10) + +PreDefTransChConfiguration ::= SEQUENCE { + ul-CommonTransChInfo UL-CommonTransChInfo, + ul-AddReconfTrChInfoList UL-AddReconfTransChInfoList, + dl-CommonTransChInfo DL-CommonTransChInfo, + dl-TrChInfoList DL-AddReconfTransChInfoList +} + +QualityTarget ::= SEQUENCE { + bler-QualityValue BLER-QualityValue +} + +RateMatchingAttribute ::= INTEGER (1..hiRM) + + +ReferenceTFC-ID ::= INTEGER (0..3) + +RestrictedTrChInfo ::= SEQUENCE { + ul-TransportChannelType UL-TrCH-Type, + restrictedTrChIdentity TransportChannelIdentity, + allowedTFI-List AllowedTFI-List OPTIONAL +} + +RestrictedTrChInfoList ::= SEQUENCE (SIZE (1..maxTrCH)) OF + RestrictedTrChInfo + +SemistaticTF-Information ::= SEQUENCE { + -- TABULAR: Transmission time interval has been included in the IE CommonTransChTFS. + channelCodingType ChannelCodingType, + rateMatchingAttribute RateMatchingAttribute, + crc-Size CRC-Size +} + +SignalledGainFactors ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + gainFactorBetaC GainFactor + }, + tdd NULL + }, + gainFactorBetaD GainFactor, + referenceTFC-ID ReferenceTFC-ID OPTIONAL +} + +SplitTFCI-Signalling ::= SEQUENCE { + splitType SplitType OPTIONAL, + tfci-Field2-Length INTEGER (1..10) OPTIONAL, + tfci-Field1-Information ExplicitTFCS-Configuration OPTIONAL, + tfci-Field2-Information TFCI-Field2-Information OPTIONAL +} + +SplitType ::= ENUMERATED { + hardSplit, logicalSplit } + +T1-ReleaseTimer ::= ENUMERATED { + rt10, rt20, rt30, rt40, rt50, + rt60, rt70, rt80, rt90, rt100, + rt120, rt140, rt160, rt200, rt300, + rt400 } + +TFC-Subset ::= CHOICE { + minimumAllowedTFC-Number TFC-Value, + allowedTFC-List AllowedTFC-List, + non-allowedTFC-List Non-allowedTFC-List, + restrictedTrChInfoList RestrictedTrChInfoList, + fullTFCS NULL +} + +TFC-SubsetList ::= SEQUENCE (SIZE (1.. maxTFCsub)) OF SEQUENCE { + modeSpecificInfo CHOICE { + fdd NULL, + tdd SEQUENCE { + tfcs-ID TFCS-Identity OPTIONAL + } + }, + tfc-Subset TFC-Subset +} + +TFC-Value ::= INTEGER (0..1023) + +TFCI-Field2-Information ::= CHOICE { + tfci-Range TFCI-RangeList, + explicit-config ExplicitTFCS-Configuration +} + +TFCI-Range ::= SEQUENCE { + maxTFCIField2Value INTEGER (1..1023), + tfcs-InfoForDSCH TFCS-InfoForDSCH +} + +TFCI-RangeList ::= SEQUENCE (SIZE (1..maxPDSCH-TFCIgroups)) OF + TFCI-Range + +TFCS ::= CHOICE { + normalTFCI-Signalling ExplicitTFCS-Configuration, + -- dummy is not used in this version of specification, it should + -- not be sent and if received the UE behaviour is not specified. + dummy SplitTFCI-Signalling +} + +TFCS-Identity ::= SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + sharedChannelIndicator BOOLEAN +} + +TFCS-IdentityPlain ::= INTEGER (1..8) + +TFCS-InfoForDSCH ::= CHOICE { + ctfc2bit INTEGER (0..3), + ctfc4bit INTEGER (0..15), + ctfc6bit INTEGER (0..63), + ctfc8bit INTEGER (0..255), + ctfc12bit INTEGER (0..4095), + ctfc16bit INTEGER (0..65535), + ctfc24bit INTEGER (0..16777215) +} + +TFCS-ReconfAdd ::= SEQUENCE{ + ctfcSize CHOICE{ + ctfc2Bit SEQUENCE (SIZE (1..maxTFC)) OF SEQUENCE { + ctfc2 INTEGER (0..3), + powerOffsetInformation PowerOffsetInformation OPTIONAL + }, + ctfc4Bit SEQUENCE (SIZE (1..maxTFC)) OF SEQUENCE { + ctfc4 INTEGER (0..15), + powerOffsetInformation PowerOffsetInformation OPTIONAL + }, + ctfc6Bit SEQUENCE (SIZE (1..maxTFC)) OF SEQUENCE { + ctfc6 INTEGER (0..63), + powerOffsetInformation PowerOffsetInformation OPTIONAL + }, + ctfc8Bit SEQUENCE (SIZE (1..maxTFC)) OF SEQUENCE { + ctfc8 INTEGER (0..255), + powerOffsetInformation PowerOffsetInformation OPTIONAL + }, + ctfc12Bit SEQUENCE (SIZE(1..maxTFC)) OF SEQUENCE { + ctfc12 INTEGER (0..4095), + powerOffsetInformation PowerOffsetInformation OPTIONAL + }, + ctfc16Bit SEQUENCE (SIZE (1..maxTFC)) OF SEQUENCE { + ctfc16 INTEGER(0..65535), + powerOffsetInformation PowerOffsetInformation OPTIONAL + }, + ctfc24Bit SEQUENCE (SIZE (1..maxTFC)) OF SEQUENCE { + ctfc24 INTEGER(0..16777215), + powerOffsetInformation PowerOffsetInformation OPTIONAL + } + } +} + +TFCS-Removal ::= SEQUENCE { + tfci INTEGER (0..1023) +} + +TFCS-RemovalList ::= SEQUENCE (SIZE (1..maxTFC)) OF + TFCS-Removal + +TimeDurationBeforeRetry ::= INTEGER (1..256) + +TM-SignallingInfo ::= SEQUENCE { + messType MessType, + tm-SignallingMode CHOICE { + mode1 NULL, + mode2 SEQUENCE { + -- in ul-controlledTrChList, TrCH-Type is always DCH + ul-controlledTrChList UL-ControlledTrChList + } + } +} + +TransmissionTimeInterval ::= ENUMERATED { + tti10, tti20, tti40, tti80 } + +TransmissionTimeValidity ::= INTEGER (1..256) + +TransportChannelIdentity ::= INTEGER (1..32) + +TransportChannelIdentityDCHandDSCH ::= SEQUENCE { + dch-transport-ch-id TransportChannelIdentity, + dsch-transport-ch-id TransportChannelIdentity +} + + +TransportFormatSet ::= CHOICE { + dedicatedTransChTFS DedicatedTransChTFS, + commonTransChTFS CommonTransChTFS +} + +TransportFormatSet-LCR ::= CHOICE { + dedicatedTransChTFS DedicatedTransChTFS, + commonTransChTFS-LCR CommonTransChTFS-LCR +} + +Treset-ResetTimer ::= ENUMERATED { + rt1, rt2, rt3, rt4 } + +-- The maximum allowed size of UL-AddReconfTransChInfoList sequence is 16 +UL-AddReconfTransChInfoList ::= SEQUENCE (SIZE (1..maxTrCHpreconf)) OF + UL-AddReconfTransChInformation + +-- The maximum allowed size of UL-AddReconfTransChInfoList-r6 sequence is 32 +UL-AddReconfTransChInfoList-r6 ::= SEQUENCE (SIZE (1..maxTrCH)) OF + UL-AddReconfTransChInformation-r6 + +-- The maximum allowed size of UL-AddReconfTransChInfoList-r7 sequence is 32 +UL-AddReconfTransChInfoList-r7 ::= SEQUENCE (SIZE (1..maxTrCH)) OF + UL-AddReconfTransChInformation-r7 + +-- The maximum allowed size of UL-AddReconfTransChInfoList-r8 sequence is 32 +UL-AddReconfTransChInfoList-r8 ::= SEQUENCE (SIZE (1..maxTrCH)) OF + UL-AddReconfTransChInformation-r8 + +UL-AddReconfTransChInformation ::= SEQUENCE { + ul-TransportChannelType UL-TrCH-Type, + transportChannelIdentity TransportChannelIdentity, + transportFormatSet TransportFormatSet +} + +UL-AddReconfTransChInformation-r6 ::= CHOICE { + dch-usch SEQUENCE { + ul-TransportChannelType UL-TrCH-Type, + transportChannelIdentity TransportChannelIdentity, + transportFormatSet TransportFormatSet + }, + e-dch SEQUENCE { + tti E-DCH-TTI, + harq-Info ENUMERATED { rv0, rvtable }, + addReconf-MAC-d-FlowList E-DCH-AddReconf-MAC-d-FlowList OPTIONAL + } +} + +UL-AddReconfTransChInformation-r7 ::= CHOICE { + dch-usch SEQUENCE { + ul-TransportChannelType UL-TrCH-Type, + transportChannelIdentity TransportChannelIdentity, + transportFormatSet TransportFormatSet + }, + e-dch SEQUENCE { + modeSpecific CHOICE { + fdd SEQUENCE { + tti E-DCH-TTI + }, + tdd NULL + }, + harq-Info ENUMERATED { rv0, rvtable }, + addReconf-MAC-d-FlowList E-DCH-AddReconf-MAC-d-FlowList-r7 OPTIONAL + } +} + +UL-AddReconfTransChInformation-r8 ::= CHOICE { + dch-usch SEQUENCE { + ul-TransportChannelType UL-TrCH-Type, + transportChannelIdentity TransportChannelIdentity, + transportFormatSet TransportFormatSet + }, + e-dch SEQUENCE { + ul-MAC-HeaderType ENUMERATED { mac-iis } OPTIONAL, + modeSpecific CHOICE { + fdd SEQUENCE { + tti E-DCH-TTI + }, + tdd NULL + }, + harq-Info ENUMERATED { rv0, rvtable }, + addReconf-MAC-d-FlowList E-DCH-AddReconf-MAC-d-FlowList-r7 OPTIONAL + } +} + +UL-CommonTransChInfo ::= SEQUENCE { + -- TABULAR: tfc-subset is applicable to FDD only, TDD specifies tfc-subset in individual + -- CCTrCH Info. + tfc-Subset TFC-Subset OPTIONAL, + prach-TFCS TFCS OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ul-TFCS TFCS + }, + tdd SEQUENCE { + + individualUL-CCTrCH-InfoList IndividualUL-CCTrCH-InfoList + OPTIONAL + } + } OPTIONAL +} + +UL-CommonTransChInfo-r4 ::= SEQUENCE { + -- TABULAR: tfc-subset is applicable to FDD only, TDD specifies tfc-subset in individual + -- CCTrCH Info. + tfc-Subset TFC-Subset OPTIONAL, + prach-TFCS TFCS OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ul-TFCS TFCS + }, + tdd SEQUENCE { + individualUL-CCTrCH-InfoList IndividualUL-CCTrCH-InfoList OPTIONAL + } + } OPTIONAL, + tfc-SubsetList TFC-SubsetList OPTIONAL +} + +-- In UL-ControlledTrChList, TrCH-Type is always DCH +UL-ControlledTrChList ::= SEQUENCE (SIZE (1..maxTrCH)) OF + TransportChannelIdentity + +UL-DeletedTransChInfoList ::= SEQUENCE (SIZE (1..maxTrCH)) OF + UL-TransportChannelIdentity + +UL-DeletedTransChInfoList-r6 ::= SEQUENCE (SIZE (1..maxTrCH)) OF + UL-TransportChannelIdentity-r6 + +UL-TransportChannelIdentity ::= SEQUENCE { + ul-TransportChannelType UL-TrCH-Type, + ul-TransportChannelIdentity TransportChannelIdentity +} + +UL-TransportChannelIdentity-r6 ::= CHOICE { + dch-usch SEQUENCE { + ul-TransportChannelType UL-TrCH-Type, + ul-TransportChannelIdentity TransportChannelIdentity + }, + e-dch E-DCH-MAC-d-FlowIdentity +} + +UL-TrCH-Type ::= ENUMERATED {dch, usch} + +USCH-TransportChannelsInfo ::= SEQUENCE (SIZE (1..maxTrCH)) OF + SEQUENCE { + usch-TransportChannelIdentity TransportChannelIdentity, + usch-TFS TransportFormatSet +} + +-- *************************************************** +-- +-- PHYSICAL CHANNEL INFORMATION ELEMENTS (10.3.6) +-- +-- *************************************************** + +ACK-NACK-repetitionFactor ::= INTEGER(1..4) + +AC-To-ASC-Mapping ::= INTEGER (0..7) + +AC-To-ASC-MappingTable ::= SEQUENCE (SIZE (maxASCmap)) OF + AC-To-ASC-Mapping + +AccessServiceClass-FDD ::= SEQUENCE { + availableSignatureStartIndex INTEGER (0..15), + availableSignatureEndIndex INTEGER (0..15), + + assignedSubChannelNumber BIT STRING { + b3(0), + b2(1), + b1(2), + b0(3) + } (SIZE(4)) +} + +AccessServiceClass-TDD ::= SEQUENCE { + channelisationCodeIndices BIT STRING { + chCodeIndex7(0), + chCodeIndex6(1), + chCodeIndex5(2), + chCodeIndex4(3), + chCodeIndex3(4), + chCodeIndex2(5), + chCodeIndex1(6), + chCodeIndex0(7) + } (SIZE(8)) OPTIONAL, + subchannelSize CHOICE { + size1 NULL, + size2 SEQUENCE { + -- subch0 means bitstring '01' in the tabular, subch1 means bitsring '10' + subchannels ENUMERATED { subch0, subch1 } OPTIONAL + }, + size4 SEQUENCE { + subchannels BIT STRING { + subCh3(0), + subCh2(1), + subCh1(2), + subCh0(3) + } (SIZE(4)) OPTIONAL + }, + size8 SEQUENCE { + subchannels BIT STRING { + subCh7(0), + subCh6(1), + subCh5(2), + subCh4(3), + subCh3(4), + subCh2(5), + subCh1(6), + subCh0(7) + } (SIZE(8)) OPTIONAL + } + } +} + +AccessServiceClass-TDD-r7 ::= SEQUENCE { + channelisationCodeIndices BIT STRING { + chCodeIndex15(0), + chCodeIndex14(1), + chCodeIndex13(2), + chCodeIndex12(3), + chCodeIndex11(4), + chCodeIndex10(5), + chCodeIndex9(6), + chCodeIndex8(7), + chCodeIndex7(8), + chCodeIndex6(9), + chCodeIndex5(10), + chCodeIndex4(11), + chCodeIndex3(12), + chCodeIndex2(13), + chCodeIndex1(14), + chCodeIndex0(15) + } (SIZE(16)) OPTIONAL, + subchannelSize CHOICE { + size1 NULL, + size2 SEQUENCE { + -- subch0 means bitstring '01' in the tabular, subch1 means bitsring '10' + subchannels ENUMERATED { subch0, subch1 } OPTIONAL + }, + size4 SEQUENCE { + subchannels BIT STRING { + subCh3(0), + subCh2(1), + subCh1(2), + subCh0(3) + } (SIZE(4)) OPTIONAL + }, + size8 SEQUENCE { + subchannels BIT STRING { + subCh7(0), + subCh6(1), + subCh5(2), + subCh4(3), + subCh3(4), + subCh2(5), + subCh1(6), + subCh0(7) + } (SIZE(8)) OPTIONAL + }, + size16 SEQUENCE { + subchannels BIT STRING { + subCh15(0), + subCh14(1), + subCh13(2), + subCh12(3), + subCh11(4), + subCh10(5), + subCh9(6), + subCh8(7), + subCh7(8), + subCh6(9), + subCh5(10), + subCh4(11), + subCh3(12), + subCh2(13), + subCh1(14), + subCh0(15) + } (SIZE(16)) OPTIONAL + } + } +} + +AccessServiceClass-TDD-LCR-r4 ::= SEQUENCE { + availableSYNC-UlCodesIndics BIT STRING { + sulCodeIndex7(0), + sulCodeIndex6(1), + sulCodeIndex5(2), + sulCodeIndex4(3), + sulCodeIndex3(4), + sulCodeIndex2(5), + sulCodeIndex1(6), + sulCodeIndex0(7) + } (SIZE(8)) OPTIONAL, + subchannelSize CHOICE { + size1 NULL, + size2 SEQUENCE { + -- subch0 means bitstring '01' in the tabular, subch1 means bitsring '10'. + subchannels ENUMERATED { subch0, subch1 } OPTIONAL + }, + size4 SEQUENCE { + subchannels BIT STRING { + subCh3(0), + subCh2(1), + subCh1(2), + subCh0(3) + } (SIZE(4)) OPTIONAL + }, + size8 SEQUENCE { + subchannels BIT STRING { + subCh7(0), + subCh6(1), + subCh5(2), + subCh4(3), + subCh3(4), + subCh2(5), + subCh1(6), + subCh0(7) + } (SIZE(8)) OPTIONAL + } + } + +} + +ActivationTimeOffset ::= INTEGER (0 .. 255) + +AdditionalPRACH-TF-and-TFCS-CCCH-IEs ::= SEQUENCE { + powerOffsetInformation PowerOffsetInformation, + dynamicTFInformationCCCH DynamicTFInformationCCCH +} + +AdditionalPRACH-TF-and-TFCS-CCCH ::= SEQUENCE { + additionalPRACH-TF-and-TFCS-CCCH-IEs AdditionalPRACH-TF-and-TFCS-CCCH-IEs OPTIONAL +} + +-- The order is the same as in the PRACH-SystemInformationList +AdditionalPRACH-TF-and-TFCS-CCCH-List ::= SEQUENCE (SIZE (1..maxPRACH)) OF + AdditionalPRACH-TF-and-TFCS-CCCH + +AdditionalDLSecCellInfoListFDD ::= SEQUENCE (SIZE (2)) OF + AdditionalDLSecCellInfoFDD + +AdditionalDLSecCellInfoListFDD-r11 ::= SEQUENCE (SIZE (2)) OF + AdditionalDLSecCellInfoFDD-r11 + +AdditionalDLSecCellInfoListFDD2 ::= SEQUENCE (SIZE (4)) OF + AdditionalDLSecCellInfoFDD-r11 + +-- AdditionalDLSecCellInfoFDD is introduced to avoid a SEQUENCE of SEQUENCE, a convention in RAN2. +AdditionalDLSecCellInfoFDD ::= SEQUENCE { + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r10 OPTIONAL +} + +AdditionalDLSecCellInfoFDD-r11 ::= SEQUENCE { + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r11 OPTIONAL +} + +AICH-Info ::= SEQUENCE { + channelisationCode256 ChannelisationCode256, + sttd-Indicator BOOLEAN, + aich-TransmissionTiming AICH-TransmissionTiming +} + +AICH-Info-Compressed ::= SEQUENCE { + channelisationCode256 ChannelisationCode256 +} + +AICH-PowerOffset ::= INTEGER (-22..5) + +AICH-TransmissionTiming ::= ENUMERATED { + e0, e1 } + +AllocationPeriodInfo ::= SEQUENCE { + allocationActivationTime INTEGER (0..255), + allocationDuration INTEGER (1..256) +} + +-- Actual value Alpha = IE value * 0.125 +Alpha ::= INTEGER (0..8) + +Antenna3And4 ::= SEQUENCE { + antenna3And4-S-CPICH Antenna3And4-S-CPICH OPTIONAL, + antenna3And4-D-CPICH Antenna3And4-D-CPICH OPTIONAL +} + +Antenna3And4-S-CPICH ::= SEQUENCE { + antenna3-S-CPICH Antenna3-S-CPICH OPTIONAL, + antenna4-S-CPICH Antenna4-S-CPICH OPTIONAL, + s-cpich-PowerOffset-Mimo S-CPICH-PowerOffset-4x4MIMO OPTIONAL +} + +Antenna3And4-D-CPICH ::= SEQUENCE { + antenna3-D-CPICH Antenna3-D-CPICH OPTIONAL, + antenna4-D-CPICH Antenna4-D-CPICH OPTIONAL, + d-cpich-PowerOffset-Mimo D-CPICH-PowerOffset-4x4MIMO OPTIONAL, + initialD-CPICHStatus ENUMERATED { activated } OPTIONAL +} + +Antenna3-D-CPICH ::= SEQUENCE { + channelisationCode ChannelisationCode256 +} + +Antenna4-D-CPICH ::= SEQUENCE { + channelisationCode ChannelisationCode256 +} + +Antenna3-S-CPICH ::= SEQUENCE { + channelisationCode ChannelisationCode256 +} + +Antenna4-S-CPICH ::= SEQUENCE { + channelisationCode ChannelisationCode256 +} + +AP-AICH-ChannelisationCode ::= INTEGER (0..255) + +AP-PreambleScramblingCode ::= INTEGER (0..79) + +AP-Signature ::= INTEGER (0..15) + +AP-Signature-VCAM ::= SEQUENCE { + ap-Signature AP-Signature, + availableAP-SubchannelList AvailableAP-SubchannelList OPTIONAL +} + +AP-Subchannel ::= INTEGER (0..11) + +ASCSetting-FDD ::= SEQUENCE { + -- TABULAR: accessServiceClass-FDD is MD in tabular description + -- Default value is previous ASC + -- If this is the first ASC, the default value is all available signature and sub-channels + accessServiceClass-FDD AccessServiceClass-FDD OPTIONAL +} + +ASCSetting-TDD ::= SEQUENCE { + -- TABULAR: accessServiceClass-TDD is MD in tabular description + -- Default value is previous ASC + -- If this is the first ASC, the default value is all available channelisation codes and + -- all available sub-channels with subchannelSize=size1. + accessServiceClass-TDD AccessServiceClass-TDD OPTIONAL +} + +ASCSetting-TDD-r7 ::= SEQUENCE { + -- TABULAR: accessServiceClass-TDD is MD in tabular description + -- Default value is previous ASC + -- If this is the first ASC, the default value is all available channelisation codes and + -- all available sub-channels with subchannelSize=size1. + accessServiceClass-TDD AccessServiceClass-TDD-r7 OPTIONAL +} + +ASCSetting-TDD-LCR-r4 ::= SEQUENCE { + -- TABULAR: accessServiceClass-TDD-LCR is MD in tabular description + -- Default value is previous ASC + -- If this is the first ASC, the default value is all available SYNC_UL codes and + -- all available sub-channels with subchannelSize=size1. + accessServiceClass-TDD-LCR AccessServiceClass-TDD-LCR-r4 OPTIONAL +} + +AvailableAP-Signature-VCAMList ::= SEQUENCE (SIZE (1..maxPCPCH-APsig)) OF + AP-Signature-VCAM + +AvailableAP-SignatureList ::= SEQUENCE (SIZE (1..maxPCPCH-APsig)) OF + AP-Signature + +AvailableAP-SubchannelList ::= SEQUENCE (SIZE (1..maxPCPCH-APsubCh)) OF + AP-Subchannel + +AvailableMinimumSF-ListVCAM ::= SEQUENCE (SIZE (1..maxPCPCH-SF)) OF + AvailableMinimumSF-VCAM + +AvailableMinimumSF-VCAM ::= SEQUENCE { + minimumSpreadingFactor MinimumSpreadingFactor, + nf-Max NF-Max, + maxAvailablePCPCH-Number MaxAvailablePCPCH-Number, + availableAP-Signature-VCAMList AvailableAP-Signature-VCAMList +} + +AvailableSignatures ::= BIT STRING { + signature15(0), + signature14(1), + signature13(2), + signature12(3), + signature11(4), + signature10(5), + signature9(6), + signature8(7), + signature7(8), + signature6(9), + signature5(10), + signature4(11), + signature3(12), + signature2(13), + signature1(14), + signature0(15) + } (SIZE(16)) + +AvailableSubChannelNumbers ::= BIT STRING { + subCh11(0), + subCh10(1), + subCh9(2), + subCh8(3), + subCh7(4), + subCh6(5), + subCh5(6), + subCh4(7), + subCh3(8), + subCh2(9), + subCh1(10), + subCh0(11) + } (SIZE(12)) + +BEACON-PL-Est ::= ENUMERATED { true } + +BurstType ::= ENUMERATED { + type1, type2 } + +-- Actual value Bler-Target = IE value * 0.05 +Bler-Target ::= INTEGER (-63..0) + +CCTrCH-PowerControlInfo ::= SEQUENCE { + tfcs-Identity TFCS-Identity OPTIONAL, + ul-DPCH-PowerControlInfo UL-DPCH-PowerControlInfo +} + +CCTrCH-PowerControlInfo-r4 ::= SEQUENCE { + tfcs-Identity TFCS-Identity OPTIONAL, + ul-DPCH-PowerControlInfo UL-DPCH-PowerControlInfo-r4 +} + +CCTrCH-PowerControlInfo-r5 ::= SEQUENCE { + tfcs-Identity TFCS-Identity OPTIONAL, + ul-DPCH-PowerControlInfo UL-DPCH-PowerControlInfo-r5 +} + +CCTrCH-PowerControlInfo-r7 ::= SEQUENCE { + tfcs-Identity TFCS-Identity OPTIONAL, + ul-DPCH-PowerControlInfo UL-DPCH-PowerControlInfo-r7 +} + +CD-AccessSlotSubchannel ::= INTEGER (0..11) + +CD-AccessSlotSubchannelList ::= SEQUENCE (SIZE (1..maxPCPCH-CDsubCh)) OF + CD-AccessSlotSubchannel + +CD-CA-ICH-ChannelisationCode ::= INTEGER (0..255) + +CD-PreambleScramblingCode ::= INTEGER (0..79) + +CD-SignatureCode ::= INTEGER (0..15) + +CD-SignatureCodeList ::= SEQUENCE (SIZE (1..maxPCPCH-CDsig)) OF + CD-SignatureCode + +CellAndChannelIdentity ::= SEQUENCE { + -- burstType may be set to either value and should be ignored by the receiver for 1.28 Mcps TDD. + burstType BurstType, + midambleShift MidambleShiftLong, + timeslot TimeslotNumber, + cellParametersID CellParametersID + } + +CellParametersID ::= INTEGER (0..127) + +Cfntargetsfnframeoffset ::= INTEGER(0..255) + +ChannelAssignmentActive ::= CHOICE { + notActive NULL, + isActive AvailableMinimumSF-ListVCAM +} + +ChannelisationCode256 ::= INTEGER (0..255) + +ChannelReqParamsForUCSM ::= SEQUENCE { + availableAP-SignatureList AvailableAP-SignatureList, + availableAP-SubchannelList AvailableAP-SubchannelList OPTIONAL +} + +ClosedLoopTimingAdjMode ::= ENUMERATED { + slot1, slot2 } + +CodeNumberDSCH ::= INTEGER (0..255) + +CodeRange ::= SEQUENCE { + pdsch-CodeMapList PDSCH-CodeMapList +} + +CodeResourceInformation-TDD128 ::= SEQUENCE { + start-code HS-ChannelisationCode-LCR, + stop-code HS-ChannelisationCode-LCR +} + +CodeWordSet ::= ENUMERATED { + longCWS, + mediumCWS, + shortCWS, + ssdtOff } + +Common-E-DCH-ResourceInfoList ::= SEQUENCE { + s-offset INTEGER (0..9) OPTIONAL, + f-dpch-ChannelisationCodeNumber INTEGER (0..255) OPTIONAL, + e-RGCH-Information E-RGCH-Information-CommonEdch OPTIONAL, + e-hich-Info E-HICH-Information-CommonEdch, + ul-DPCH-CodeInfoForCommonEDCH UL-DPCH-CodeInfoForCommonEDCH +} + +Common-E-DCH-ResourceInfoListExt ::= SEQUENCE { + twoMsHarqConfiguration TwoMsHarqConfiguration +} + +Common-E-RNTI-Info ::= SEQUENCE (SIZE (1..maxERUCCH)) OF + SEQUENCE { + starting-E-RNTI E-RNTI, + number-of-group INTEGER (1..maxERNTIgroup), + number-of-ENRTI-per-group INTEGER (1..maxERNTIperGroup) +} + +CommonEDCHResourceConfigInfoListExt::= SEQUENCE { + scheduledTransmissionConfiguration ScheduledTransmissionConfiguration OPTIONAL, + cOffset INTEGER (0..29) OPTIONAL +} + + -- For FDD, the network should not include the IE CommonEDCHSystemInfo. + -- Instead, the IE commonEDCHSystemInfoFDD should be used. + -- If included, the UE behavior is unspecified. +CommonEDCHSystemInfo ::= SEQUENCE { + ul-InterferenceForCommonEDCH UL-Interference OPTIONAL, + common-E-DCH-MAC-d-FlowList Common-E-DCH-MAC-d-FlowList, + modeSpecificInfo CHOICE { + dummy SEQUENCE {}, + tdd CHOICE { + tdd768 NULL, + tdd384 NULL, + tdd128 SEQUENCE { + e-RUCCH-Info E-RUCCH-Info-TDD128, + e-PUCH-Info E-PUCH-Info-TDD128, + e-hich-Information E-HICH-Information-TDD128, + e-agch-Information E-AGCH-Information-TDD128, + harq-Info ENUMERATED { rv0, rvtable }, + ccch-transmission-Info SEQUENCE { + common-e-rnti-Info Common-E-RNTI-Info, + harq-MaximumNumberOfRetransmissions INTEGER (0..7), + harq-retransmission-timer ENUMERATED { + ms10, ms15, ms20, ms25, + ms30, ms35, ms40, ms45, + ms50, ms55, ms60, ms65, + ms70, ms75, ms80, ms85, + ms90, ms95, ms100, ms110, + ms120, ms140, ms160 }, + harq-power-offset INTEGER (0..6) + } + } + } + } +} + +CommonEDCHSystemInfoFDD ::= SEQUENCE { + ul-InterferenceForCommonEDCH UL-Interference OPTIONAL, + common-E-DCH-MAC-d-FlowList Common-E-DCH-MAC-d-FlowList, + prach-PreambleForEnhancedUplink PRACH-PreambleForEnhancedUplink, + initialServingGrantValue INTEGER (0..37), + e-dch-TTI E-DCH-TTI, + e-agch-Information E-AGCH-Information, + harq-Info ENUMERATED { rv0, rvtable }, + ul-DPCHpowerControlInfoForCommonEDCH + UL-DPCHpowerControlInfoForCommonEDCH, + e-dpcch-Info E-DPCCH-Info-r7, + e-dpdch-Info E-DPDCH-Info-r8, + -- Actual value dl-FDPCH-TPCcommandErrorRate = IE value * 0.01 + dl-FDPCH-TPCcommandErrorRate INTEGER (1..10), + additional-E-DCH-TransmitBackoff INTEGER (0..15), + max-CCCH-ResourceAllocation ENUMERATED { + tti8, tti12, tti16, tti20, tti24, tti32, + tti40, tti80 }, + max-PeriodForCollisionResolution INTEGER (8..24), + e-dch-TransmitContinuationOffset ENUMERATED { + tti0, tti4, tti8, tti16, tti24, tti40, + tti80,infinity }, + ack-nack-support-on-HS-DPCCH BOOLEAN, + measurement-Feedback-Info Measurement-Feedback-Info-r7 OPTIONAL, + common-E-DCH-ResourceInfoList SEQUENCE (SIZE (1..maxEDCHs)) OF + Common-E-DCH-ResourceInfoList +} + +CommonEDCHSystemInfoParamConcurrentTTI ::= SEQUENCE { + common-E-DCH-MAC-d-Flow-Info-List-ConcurrentTTI + Common-E-DCH-MAC-d-Flow-Info-List-ConcurrentTTI OPTIONAL, + initialServingGrantValue INTEGER (0..37) OPTIONAL, + e-agch-Information E-AGCH-Information OPTIONAL, + ul-DPCHpowerControlInfoConcurrentTTI + UL-DPCHpowerControlInfoConcurrentTTI OPTIONAL, + e-DPCCH-DPCCH-PowerOffset E-DPCCH-DPCCH-PowerOffset OPTIONAL, + e-dpdch-Info E-DPDCH-Info-r8, + additional-E-DCH-TransmitBackoff INTEGER (0..15) OPTIONAL, + max-CCCH-ResourceAllocation ENUMERATED { + tti8, tti12, tti16, tti20, tti24, tti32, + tti40, tti80 } OPTIONAL, + max-PeriodForCollisionResolution INTEGER (8..24) OPTIONAL, + e-dch-TransmitContinuationOffset ENUMERATED { + tti0, tti4, tti8, tti16, tti24, tti40, + tti80,infinity } OPTIONAL, + measurement-Feedback-Info-ConcurrentTTI Measurement-Feedback-Info-ConcurrentTTI OPTIONAL +} + +CommonERGCHChannelConfig ::= SEQUENCE { + channelisationCode INTEGER (0..127) OPTIONAL, + signatureSequence INTEGER (0..39) OPTIONAL +} + +CommonERGCHInfoFDD ::= SEQUENCE { + configurationInfo CHOICE { + continue NULL, + newConfiguration SEQUENCE { + eRGCHNeighbourCellList BIT STRING (SIZE (maxCellMeas)), + commonERGCHChannelConfigList SEQUENCE (SIZE (1.. maxCellMeas)) OF + CommonERGCHChannelConfig, + minimumServingGrantValue INTEGER (0..37) OPTIONAL, + reportingRange ReportingRange, + filterCoefficient FilterCoefficient DEFAULT fc0 + } + } +} + +CommonTimeslotInfo ::= SEQUENCE { + -- TABULAR: secondInterleavingMode is MD, but since it can be encoded in a single + -- bit it is not defined as OPTIONAL. + secondInterleavingMode SecondInterleavingMode, + tfci-Coding TFCI-Coding OPTIONAL, + puncturingLimit PuncturingLimit, + repetitionPeriodAndLength RepetitionPeriodAndLength OPTIONAL +} + +CommonTimeslotInfoMBMS ::= SEQUENCE { + -- TABULAR: secondInterleavingMode is MD, but since it can be encoded in a single + -- bit it is not defined as OPTIONAL. + secondInterleavingMode SecondInterleavingMode, + tfci-Coding TFCI-Coding OPTIONAL, + puncturingLimit PuncturingLimit +} + +CommonTimeslotInfoSCCPCH ::= SEQUENCE { + -- TABULAR: secondInterleavingMode is MD, but since it can be encoded in a single + -- bit it is not defined as OPTIONAL. + secondInterleavingMode SecondInterleavingMode, + tfci-Coding TFCI-Coding OPTIONAL, + puncturingLimit PuncturingLimit, + repetitionPeriodLengthAndOffset RepetitionPeriodLengthAndOffset OPTIONAL +} + +ConstantValue ::= INTEGER (-35..-10) + +ConstantValueTdd ::= INTEGER (-35..10) + +ControlChannelDRXCycle-TDD128 ::= ENUMERATED { + sub-frames-1, sub-frames-2, sub-frames-4, sub-frames-8, + sub-frames-16, sub-frames-32, sub-frames-64, spare1 } + +ControlChannelDRXInfo-TDD128-r8 ::= SEQUENCE { + controlChannelDrxOperation CHOICE { + continue SEQUENCE { + enablingDelay EnablingDelay-TDD128 OPTIONAL + }, + newOperation SEQUENCE { + hS-SCCH-Drx-Info HS-SCCH-DRX-Info-TDD128, + e-AGCH-Drx-Info E-AGCH-DRX-Info-TDD128 OPTIONAL, + enablingDelay EnablingDelay-TDD128 + } + } +} + +CPCH-PersistenceLevels ::= SEQUENCE { + cpch-SetID CPCH-SetID, + dynamicPersistenceLevelTF-List DynamicPersistenceLevelTF-List +} + +CPCH-PersistenceLevelsList ::= SEQUENCE (SIZE (1..maxCPCHsets)) OF + CPCH-PersistenceLevels + +CPCH-SetInfo ::= SEQUENCE { + cpch-SetID CPCH-SetID, + transportFormatSet TransportFormatSet, + tfcs TFCS, + ap-PreambleScramblingCode AP-PreambleScramblingCode, + ap-AICH-ChannelisationCode AP-AICH-ChannelisationCode, + cd-PreambleScramblingCode CD-PreambleScramblingCode, + cd-CA-ICH-ChannelisationCode CD-CA-ICH-ChannelisationCode, + cd-AccessSlotSubchannelList CD-AccessSlotSubchannelList OPTIONAL, + cd-SignatureCodeList CD-SignatureCodeList OPTIONAL, + deltaPp-m DeltaPp-m, + ul-DPCCH-SlotFormat UL-DPCCH-SlotFormat, + n-StartMessage N-StartMessage, + n-EOT N-EOT, + -- TABULAR: VCAM info has been nested inside ChannelAssignmentActive, + -- which in turn is mandatory since it's only a binary choice. + channelAssignmentActive ChannelAssignmentActive, + cpch-StatusIndicationMode CPCH-StatusIndicationMode, + pcpch-ChannelInfoList PCPCH-ChannelInfoList +} + +CPCH-SetInfoList ::= SEQUENCE (SIZE (1..maxCPCHsets)) OF + CPCH-SetInfo + +CPCH-StatusIndicationMode ::= ENUMERATED { + pa-mode, + pamsf-mode } + +CQI-DTX-Timer ::= ENUMERATED { + sub-frames-0, + sub-frames-1, + sub-frames-2, + sub-frames-4, + sub-frames-8, + sub-frames-16, + sub-frames-32, + sub-frames-64, + sub-frames-128, + sub-frames-256, + sub-frames-512, + sub-frames-Infinity, + spare4, + spare3, + spare2, + spare1 } + +CQI-RepetitionFactor ::= INTEGER(1..4) + +CSICH-PowerOffset ::= INTEGER (-10..5) + +D-CPICH-PowerOffset-4x4MIMO ::= INTEGER (-12..0) + +-- DefaultDPCH-OffsetValueFDD and DefaultDPCH-OffsetValueTDD corresponds to +-- IE "Default DPCH Offset Value" depending on the mode. +-- Actual value DefaultDPCH-OffsetValueFDD = IE value * 512 +DefaultDPCH-OffsetValueFDD ::= INTEGER (0..599) + +DefaultDPCH-OffsetValueTDD ::= INTEGER (0..7) + +DeltaPp-m ::= INTEGER (-10..10) + +DeltaCQI ::= INTEGER (0..8) + +DeltaCQI-r11 ::= INTEGER (0..10) + +DeltaNACK ::= INTEGER (0..8) + +DeltaNACK-r11 ::= INTEGER (0..10) + +DeltaACK ::= INTEGER (0..8) + +DeltaACK-r11 ::= INTEGER (0..10) + +-- Actual value DeltaSIR = IE value * 0.1 +DeltaSIR ::= INTEGER (0..30) + +DHS-Sync ::= INTEGER (-20..10) + +DL-CCTrCh ::= SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + timeInfo TimeInfo, + commonTimeslotInfo CommonTimeslotInfo OPTIONAL, + dl-CCTrCH-TimeslotsCodes DownlinkTimeslotsCodes OPTIONAL, + ul-CCTrChTPCList UL-CCTrChTPCList OPTIONAL +} + +DL-CCTrCh-r4 ::= SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + timeInfo TimeInfo, + commonTimeslotInfo CommonTimeslotInfo OPTIONAL, + tddOption CHOICE { + tdd384 SEQUENCE { + dl-CCTrCH-TimeslotsCodes DownlinkTimeslotsCodes OPTIONAL + }, + tdd128 SEQUENCE { + dl-CCTrCH-TimeslotsCodes DownlinkTimeslotsCodes-LCR-r4 OPTIONAL + } + }, + ul-CCTrChTPCList UL-CCTrChTPCList OPTIONAL +} + +DL-CCTrCh-r7 ::= SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + timeInfo TimeInfo, + commonTimeslotInfo CommonTimeslotInfo OPTIONAL, + tddOption CHOICE { + tdd384 SEQUENCE { + dl-CCTrCH-TimeslotsCodes DownlinkTimeslotsCodes-r7 OPTIONAL + }, + tdd768 SEQUENCE { + dl-CCTrCH-TimeslotsCodes DownlinkTimeslotsCodes-VHCR OPTIONAL + }, + tdd128 SEQUENCE { + dl-CCTrCH-TimeslotsCodes DownlinkTimeslotsCodes-LCR-r4 OPTIONAL + } + }, + ul-CCTrChTPCList UL-CCTrChTPCList OPTIONAL +} + +DL-CCTrChList ::= SEQUENCE (SIZE (1..maxCCTrCH)) OF + DL-CCTrCh + +DL-CCTrChList-r7 ::= SEQUENCE (SIZE (1..maxCCTrCH)) OF + DL-CCTrCh-r7 + +DL-CCTrChList-r4 ::= SEQUENCE (SIZE (1..maxCCTrCH)) OF + DL-CCTrCh-r4 + +DL-CCTrChListToRemove ::= SEQUENCE (SIZE (1..maxCCTrCH)) OF + TFCS-IdentityPlain + +DL-ChannelisationCode ::= SEQUENCE { + secondaryScramblingCode SecondaryScramblingCode OPTIONAL, + sf-AndCodeNumber SF512-AndCodeNumber, + scramblingCodeChange ScramblingCodeChange OPTIONAL +} + +DL-ChannelisationCodeList ::= SEQUENCE (SIZE (1..maxDPCH-DLchan)) OF + DL-ChannelisationCode + +DL-CommonInformation ::= SEQUENCE { + dl-DPCH-InfoCommon DL-DPCH-InfoCommon OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + defaultDPCH-OffsetValue DefaultDPCH-OffsetValueFDD OPTIONAL, + dpch-CompressedModeInfo DPCH-CompressedModeInfo OPTIONAL, + tx-DiversityMode TX-DiversityMode OPTIONAL, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SSDT-Information OPTIONAL + }, + tdd SEQUENCE { + defaultDPCH-OffsetValue DefaultDPCH-OffsetValueTDD OPTIONAL + } + } +} + +DL-CommonInformation-r4 ::= SEQUENCE { + dl-DPCH-InfoCommon DL-DPCH-InfoCommon-r4 OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + defaultDPCH-OffsetValue DefaultDPCH-OffsetValueFDD OPTIONAL, + dpch-CompressedModeInfo DPCH-CompressedModeInfo OPTIONAL, + tx-DiversityMode TX-DiversityMode OPTIONAL, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SSDT-Information-r4 OPTIONAL + }, + tdd SEQUENCE { + tddOption CHOICE { + tdd384 NULL, + tdd128 SEQUENCE { + tstd-Indicator BOOLEAN + } + }, + defaultDPCH-OffsetValue DefaultDPCH-OffsetValueTDD OPTIONAL + } + } +} + + +DL-CommonInformation-r5 ::= SEQUENCE { + dl-DPCH-InfoCommon DL-DPCH-InfoCommon-r4 OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + defaultDPCH-OffsetValue DefaultDPCH-OffsetValueFDD OPTIONAL, + dpch-CompressedModeInfo DPCH-CompressedModeInfo OPTIONAL, + tx-DiversityMode TX-DiversityMode OPTIONAL, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SSDT-Information-r4 OPTIONAL + }, + tdd SEQUENCE { + tddOption CHOICE { + tdd384 NULL, + tdd128 SEQUENCE { + tstd-Indicator BOOLEAN + } + }, + defaultDPCH-OffsetValue DefaultDPCH-OffsetValueTDD OPTIONAL + } + }, + mac-hsResetIndicator ENUMERATED { true } OPTIONAL +} + +DL-CommonInformation-r6 ::= SEQUENCE { + dl-dpchInfoCommon CHOICE { + dl-DPCH-InfoCommon DL-DPCH-InfoCommon-r6, + dl-FDPCH-InfoCommon DL-FDPCH-InfoCommon-r6 + } OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + defaultDPCH-OffsetValue DefaultDPCH-OffsetValueFDD OPTIONAL, + dpch-CompressedModeInfo DPCH-CompressedModeInfo OPTIONAL, + tx-DiversityMode TX-DiversityMode OPTIONAL + }, + tdd SEQUENCE { + tddOption CHOICE { + tdd384 NULL, + tdd128 SEQUENCE { + tstd-Indicator BOOLEAN + } + }, + defaultDPCH-OffsetValue DefaultDPCH-OffsetValueTDD OPTIONAL + } + }, + mac-hsResetIndicator ENUMERATED { true } OPTIONAL, + postVerificationPeriod ENUMERATED { true } OPTIONAL +} + +DL-CommonInformation-r7 ::= SEQUENCE { + dl-dpchInfoCommon CHOICE { + dl-DPCH-InfoCommon DL-DPCH-InfoCommon-r6, + dl-FDPCH-InfoCommon DL-FDPCH-InfoCommon-r6 + } OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + defaultDPCH-OffsetValue DefaultDPCH-OffsetValueFDD OPTIONAL, + dpch-CompressedModeInfo DPCH-CompressedModeInfo OPTIONAL, + tx-DiversityMode TX-DiversityMode OPTIONAL + }, + tdd SEQUENCE { + tddOption CHOICE { + tdd384 NULL, + tdd768 NULL, + tdd128 SEQUENCE { + tstd-Indicator BOOLEAN + } + }, + defaultDPCH-OffsetValue DefaultDPCH-OffsetValueTDD OPTIONAL + } + }, + mac-hsResetIndicator ENUMERATED { true } OPTIONAL, + postVerificationPeriod ENUMERATED { true } OPTIONAL +} + +DL-CommonInformation-r8 ::= SEQUENCE { + dl-dpchInfoCommon CHOICE { + dl-DPCH-InfoCommon DL-DPCH-InfoCommon-r6, + dl-FDPCH-InfoCommon DL-FDPCH-InfoCommon-r6 + } OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + defaultDPCH-OffsetValue DefaultDPCH-OffsetValueFDD OPTIONAL, + dpch-CompressedModeInfo DPCH-CompressedModeInfo-r8 OPTIONAL, + tx-DiversityMode TX-DiversityMode OPTIONAL + }, + tdd SEQUENCE { + tddOption CHOICE { + tdd384 NULL, + tdd768 NULL, + tdd128 SEQUENCE { + tstd-Indicator BOOLEAN + } + }, + defaultDPCH-OffsetValue DefaultDPCH-OffsetValueTDD OPTIONAL + } + }, + mac-hsResetIndicator ENUMERATED { true } OPTIONAL, + postVerificationPeriod ENUMERATED { true } OPTIONAL +} + +DL-CommonInformation-r10 ::= SEQUENCE { + dl-dpchInfoCommon CHOICE { + dl-DPCH-InfoCommon DL-DPCH-InfoCommon-r6, + dl-FDPCH-InfoCommon DL-FDPCH-InfoCommon-r6 + } OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + defaultDPCH-OffsetValue DefaultDPCH-OffsetValueFDD OPTIONAL, + dpch-CompressedModeInfo DPCH-CompressedModeInfo-r10 OPTIONAL, + tx-DiversityMode TX-DiversityMode OPTIONAL + }, + tdd SEQUENCE { + tddOption CHOICE { + tdd384 NULL, + tdd768 NULL, + tdd128 SEQUENCE { + tstd-Indicator BOOLEAN + } + }, + defaultDPCH-OffsetValue DefaultDPCH-OffsetValueTDD OPTIONAL + } + }, + mac-hsResetIndicator ENUMERATED { true } OPTIONAL, + postVerificationPeriod ENUMERATED { true } OPTIONAL +} + +DL-CommonInformation-r11 ::= SEQUENCE { + dl-dpchInfoCommon CHOICE { + dl-DPCH-InfoCommon DL-DPCH-InfoCommon-r6, + dl-FDPCH-InfoCommon DL-FDPCH-InfoCommon-r6 + } OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + defaultDPCH-OffsetValue DefaultDPCH-OffsetValueFDD OPTIONAL, + dpch-CompressedModeInfo DPCH-CompressedModeInfo-r10 OPTIONAL, + tx-DiversityMode TX-DiversityMode OPTIONAL + }, + tdd SEQUENCE { + tddOption CHOICE { + tdd384 NULL, + tdd768 NULL, + tdd128 SEQUENCE { + tstd-Indicator BOOLEAN + } + }, + defaultDPCH-OffsetValue DefaultDPCH-OffsetValueTDD OPTIONAL + } + }, + mac-hsResetIndicator ENUMERATED { true } OPTIONAL, + postVerificationPeriod ENUMERATED { true } OPTIONAL, + mac-hsResetIndicator-assisting ENUMERATED { true } OPTIONAL +} + +DL-CommonInformationPost ::= SEQUENCE { + dl-DPCH-InfoCommon DL-DPCH-InfoCommonPost +} + +DL-CommonInformationPredef ::= SEQUENCE { + dl-DPCH-InfoCommon DL-DPCH-InfoCommonPredef OPTIONAL +} + +DL-CompressedModeMethod ::= ENUMERATED { + -- dummy is not used in this version of the specification, it should + -- not be sent and if received the UE behaviour is not specified. + dummy, sf-2, + higherLayerScheduling } + +DL-DPCH-InfoCommon ::= SEQUENCE { + cfnHandling CHOICE { + maintain NULL, + initialise SEQUENCE { + -- IE dummy is not used in this version of the specification + -- The IE should not be sent and if received it should be ignored + dummy Cfntargetsfnframeoffset OPTIONAL + } + }, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + dl-DPCH-PowerControlInfo DL-DPCH-PowerControlInfo OPTIONAL, + powerOffsetPilot-pdpdch PowerOffsetPilot-pdpdch, + dl-rate-matching-restriction Dl-rate-matching-restriction OPTIONAL, + -- TABULAR: The number of pilot bits is nested inside the spreading factor. + spreadingFactorAndPilot SF512-AndPilot, + positionFixedOrFlexible PositionFixedOrFlexible, + tfci-Existence BOOLEAN + }, + tdd SEQUENCE { + dl-DPCH-PowerControlInfo DL-DPCH-PowerControlInfo OPTIONAL + } + } +} + +DL-DPCH-InfoCommon-r4 ::= SEQUENCE { + cfnHandling CHOICE { + maintain NULL, + initialise SEQUENCE { + -- IE dummy is not used in this version of the specification + -- The IE should not be sent and if received it should be ignored + dummy Cfntargetsfnframeoffset OPTIONAL + } + }, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + dl-DPCH-PowerControlInfo DL-DPCH-PowerControlInfo OPTIONAL, + powerOffsetPilot-pdpdch PowerOffsetPilot-pdpdch, + dl-rate-matching-restriction Dl-rate-matching-restriction OPTIONAL, + -- TABULAR: The number of pilot bits is nested inside the spreading factor. + spreadingFactorAndPilot SF512-AndPilot, + positionFixedOrFlexible PositionFixedOrFlexible, + tfci-Existence BOOLEAN + }, + tdd SEQUENCE { + dl-DPCH-PowerControlInfo DL-DPCH-PowerControlInfo OPTIONAL + } + }, +-- The IE mac-d-HFN-initial-value should be absent in the RRCConnectionSetup-r4-IEs or +-- RRCConnectionSetup-r5-IEs or HandoverToUTRANCommand-r4-IEs or HandoverToUTRANCommand-r5-IEs and +-- if the IE is included, the general error handling for conditional IEs applies. + mac-d-HFN-initial-value MAC-d-HFN-initial-value OPTIONAL + +} + +DL-DPCH-InfoCommon-r6 ::= SEQUENCE { + cfnHandling CHOICE { + maintain SEQUENCE { + timingmaintainedsynchind TimingMaintainedSynchInd OPTIONAL + }, + initialise NULL + }, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + dl-DPCH-PowerControlInfo DL-DPCH-PowerControlInfo OPTIONAL, + powerOffsetPilot-pdpdch PowerOffsetPilot-pdpdch, + dl-rate-matching-restriction Dl-rate-matching-restriction OPTIONAL, + -- TABULAR: The number of pilot bits is nested inside the spreading factor. + spreadingFactorAndPilot SF512-AndPilot, + positionFixedOrFlexible PositionFixedOrFlexible, + tfci-Existence BOOLEAN + }, + tdd SEQUENCE { + dl-DPCH-PowerControlInfo DL-DPCH-PowerControlInfo OPTIONAL + } + }, + -- The IE mac-d-HFN-initial-value should be absent in the RRCConnectionSetup and the + -- HandoverToUTRANCommand messages. If the IE is included, the general error handling + -- for conditional IEs applies. + mac-d-HFN-initial-value MAC-d-HFN-initial-value OPTIONAL +} + +DL-DPCH-InfoCommonPost ::= SEQUENCE { + dl-DPCH-PowerControlInfo DL-DPCH-PowerControlInfo OPTIONAL +} + +DL-DPCH-InfoCommonPredef ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + -- TABULAR: The number of pilot bits is nested inside the spreading factor. + spreadingFactorAndPilot SF512-AndPilot, + positionFixedOrFlexible PositionFixedOrFlexible, + tfci-Existence BOOLEAN + }, + tdd SEQUENCE { + commonTimeslotInfo CommonTimeslotInfo + } + } +} + +DL-DPCH-InfoPerRL ::= CHOICE { + fdd SEQUENCE { + pCPICH-UsageForChannelEst PCPICH-UsageForChannelEst, + dpch-FrameOffset DPCH-FrameOffset, + secondaryCPICH-Info SecondaryCPICH-Info OPTIONAL, + dl-ChannelisationCodeList DL-ChannelisationCodeList, + tpc-CombinationIndex TPC-CombinationIndex, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SSDT-CellIdentity OPTIONAL, + closedLoopTimingAdjMode ClosedLoopTimingAdjMode OPTIONAL + }, + tdd SEQUENCE { + dl-CCTrChListToEstablish DL-CCTrChList OPTIONAL, + dl-CCTrChListToRemove DL-CCTrChListToRemove OPTIONAL + } +} + +DL-DPCH-InfoPerRL-r4 ::= CHOICE { + fdd SEQUENCE { + pCPICH-UsageForChannelEst PCPICH-UsageForChannelEst, + dpch-FrameOffset DPCH-FrameOffset, + secondaryCPICH-Info SecondaryCPICH-Info OPTIONAL, + dl-ChannelisationCodeList DL-ChannelisationCodeList, + tpc-CombinationIndex TPC-CombinationIndex, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SSDT-CellIdentity OPTIONAL, + closedLoopTimingAdjMode ClosedLoopTimingAdjMode OPTIONAL + }, + tdd SEQUENCE { + dl-CCTrChListToEstablish DL-CCTrChList-r4 OPTIONAL, + dl-CCTrChListToRemove DL-CCTrChListToRemove OPTIONAL + } +} + +DL-DPCH-InfoPerRL-r5 ::= CHOICE { + fdd SEQUENCE { + pCPICH-UsageForChannelEst PCPICH-UsageForChannelEst, + dpch-FrameOffset DPCH-FrameOffset, + secondaryCPICH-Info SecondaryCPICH-Info OPTIONAL, + dl-ChannelisationCodeList DL-ChannelisationCodeList, + tpc-CombinationIndex TPC-CombinationIndex, + powerOffsetTPC-pdpdch PowerOffsetTPC-pdpdch OPTIONAL, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SSDT-CellIdentity OPTIONAL, + closedLoopTimingAdjMode ClosedLoopTimingAdjMode OPTIONAL + }, + tdd SEQUENCE { + dl-CCTrChListToEstablish DL-CCTrChList-r4 OPTIONAL, + dl-CCTrChListToRemove DL-CCTrChListToRemove OPTIONAL + } +} + +DL-DPCH-InfoPerRL-r6 ::= CHOICE { + fdd SEQUENCE { + pCPICH-UsageForChannelEst PCPICH-UsageForChannelEst, + dpch-FrameOffset DPCH-FrameOffset, + secondaryCPICH-Info SecondaryCPICH-Info OPTIONAL, + dl-ChannelisationCodeList DL-ChannelisationCodeList, + tpc-CombinationIndex TPC-CombinationIndex, + powerOffsetTPC-pdpdch PowerOffsetTPC-pdpdch OPTIONAL, + closedLoopTimingAdjMode ClosedLoopTimingAdjMode OPTIONAL + }, + tdd SEQUENCE { + dl-CCTrChListToEstablish DL-CCTrChList-r4 OPTIONAL, + dl-CCTrChListToRemove DL-CCTrChListToRemove OPTIONAL + } +} + +DL-DPCH-InfoPerRL-r7 ::= CHOICE { + fdd SEQUENCE { + pCPICH-UsageForChannelEst PCPICH-UsageForChannelEst, + dpch-FrameOffset DPCH-FrameOffset, + secondaryCPICH-Info SecondaryCPICH-Info OPTIONAL, + dl-ChannelisationCodeList DL-ChannelisationCodeList, + tpc-CombinationIndex TPC-CombinationIndex, + powerOffsetTPC-pdpdch PowerOffsetTPC-pdpdch OPTIONAL, + closedLoopTimingAdjMode ClosedLoopTimingAdjMode OPTIONAL + }, + tdd SEQUENCE { + dl-CCTrChListToEstablish DL-CCTrChList-r7 OPTIONAL, + dl-CCTrChListToRemove DL-CCTrChListToRemove OPTIONAL + } +} + +DL-FDPCH-InfoPerRL-r6 ::= SEQUENCE { + pCPICH-UsageForChannelEst PCPICH-UsageForChannelEst, + fdpch-FrameOffset DPCH-FrameOffset, + secondaryCPICH-Info SecondaryCPICH-Info OPTIONAL, + secondaryScramblingCode SecondaryScramblingCode OPTIONAL, + dl-ChannelisationCode INTEGER (0..255), + tpc-CombinationIndex TPC-CombinationIndex +} + +DL-FDPCH-InfoPerRL-r7 ::= SEQUENCE { + pCPICH-UsageForChannelEst PCPICH-UsageForChannelEst, + fdpch-FrameOffset DPCH-FrameOffset, + fdpch-SlotFormat FDPCH-SlotFormat OPTIONAL, + secondaryCPICH-Info SecondaryCPICH-Info OPTIONAL, + secondaryScramblingCode SecondaryScramblingCode OPTIONAL, + dl-ChannelisationCode INTEGER (0..255), + tpc-CombinationIndex TPC-CombinationIndex, + sttdIndication STTDIndication OPTIONAL +} + +DL-DPCH-InfoPerRL-PostFDD ::= SEQUENCE { + pCPICH-UsageForChannelEst PCPICH-UsageForChannelEst, + dl-ChannelisationCode DL-ChannelisationCode, + tpc-CombinationIndex TPC-CombinationIndex +} + +DL-DPCH-InfoPerRL-PostTDD ::= SEQUENCE { + dl-DPCH-TimeslotsCodes DownlinkTimeslotsCodes +} + +DL-DPCH-InfoPerRL-PostTDD-LCR-r4 ::= SEQUENCE { + dl-CCTrCH-TimeslotsCodes DownlinkTimeslotsCodes-LCR-r4 +} + +DL-DPCH-PowerControlInfo ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + dpc-Mode DPC-Mode + }, + tdd SEQUENCE { + tpc-StepSizeTDD TPC-StepSizeTDD OPTIONAL + } + } +} + +DL-FDPCH-InfoCommon-r6 ::= SEQUENCE { + cfnHandling CHOICE { + maintain SEQUENCE { + timingmaintainedsynchind TimingMaintainedSynchInd OPTIONAL + }, + initialise NULL + }, + dl-FDPCH-PowerControlInfo DL-DPCH-PowerControlInfo OPTIONAL, + -- Actual value dl-FDPCH-TPCcommandErrorRate = IE value * 0.01 + -- dl-FDPCH-TPCcommandErrorRate values 11..16 are spare and shall not be used in this version of + -- the protocol. + -- In addition, this IE shall always be included otherwise the UE behaviour is unspecified. + dl-FDPCH-TPCcommandErrorRate INTEGER (1..16) OPTIONAL +} + +DL-FrameType ::= ENUMERATED { + dl-FrameTypeA, dl-FrameTypeB } + +DL-HSPDSCH-Information ::= SEQUENCE { + hs-scch-Info HS-SCCH-Info OPTIONAL, + measurement-feedback-Info Measurement-Feedback-Info OPTIONAL, + modeSpecificInfo CHOICE { + tdd CHOICE{ + tdd384 SEQUENCE { + dl-HSPDSCH-TS-Configuration DL-HSPDSCH-TS-Configuration OPTIONAL + }, + tdd128 SEQUENCE { + hs-PDSCH-Midamble-Configuration-tdd128 + HS-PDSCH-Midamble-Configuration-TDD128 OPTIONAL + } + }, + fdd NULL + } +} + +DL-HSPDSCH-Information-r6 ::= SEQUENCE { + hs-scch-Info HS-SCCH-Info-r6 OPTIONAL, + measurement-feedback-Info Measurement-Feedback-Info OPTIONAL, + modeSpecificInfo CHOICE { + tdd CHOICE { + tdd384 SEQUENCE { + dl-HSPDSCH-TS-Configuration DL-HSPDSCH-TS-Configuration OPTIONAL + }, + tdd128 SEQUENCE { + hs-PDSCH-Midamble-Configuration-tdd128 + HS-PDSCH-Midamble-Configuration-TDD128 OPTIONAL + } + }, + fdd NULL + } +} + +DL-HSPDSCH-Information-r7 ::= SEQUENCE { + hs-scch-Info HS-SCCH-Info-r7 OPTIONAL, + measurement-feedback-Info Measurement-Feedback-Info-r7 OPTIONAL, + modeSpecificInfo CHOICE { + tdd CHOICE { + tdd384 SEQUENCE { + dl-HSPDSCH-TS-Configuration DL-HSPDSCH-TS-Configuration OPTIONAL + }, + tdd768 SEQUENCE { + dl-HSPDSCH-TS-Configuration DL-HSPDSCH-TS-Configuration-VHCR OPTIONAL + }, + tdd128 SEQUENCE { + hs-PDSCH-Midamble-Configuration-tdd128 + HS-PDSCH-Midamble-Configuration-TDD128 OPTIONAL, + dl-MultiCarrier-Information DL-MultiCarrier-Information OPTIONAL + } + }, + fdd SEQUENCE { + dl-64QAM-Configured ENUMERATED { true } OPTIONAL + } + } +} + +DL-HSPDSCH-Information-r8 ::= SEQUENCE { + hs-scch-Info HS-SCCH-Info-r7 OPTIONAL, + measurement-feedback-Info Measurement-Feedback-Info-r7 OPTIONAL, + modeSpecificInfo CHOICE { + tdd CHOICE { + tdd384 SEQUENCE { + dl-HSPDSCH-TS-Configuration DL-HSPDSCH-TS-Configuration OPTIONAL + }, + tdd768 SEQUENCE { + dl-HSPDSCH-TS-Configuration DL-HSPDSCH-TS-Configuration-VHCR OPTIONAL + }, + tdd128 SEQUENCE { + hs-PDSCH-Midamble-Configuration-tdd128 + HS-PDSCH-Midamble-Configuration-TDD128 OPTIONAL, + dl-MultiCarrier-Information DL-MultiCarrier-Information OPTIONAL + } + }, + fdd SEQUENCE { + dl-64QAM-Configured ENUMERATED { true } OPTIONAL, + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL + } + } +} + +DL-HSPDSCH-Information-r8-ext ::= SEQUENCE { + modeSpecificInfo CHOICE { + tdd CHOICE { + tdd384 NULL, + tdd768 NULL, + tdd128 SEQUENCE { + outofSyncWindow OutofSyncWindow OPTIONAL + } + }, + fdd NULL + } +} + +DL-HSPDSCH-Information-r8-ext2 ::= SEQUENCE { + hs-scch-Info HS-SCCH-Info-r8-ext OPTIONAL +} + +DL-HSPDSCH-Information-r9 ::= SEQUENCE { + hs-scch-Info HS-SCCH-Info-r9 OPTIONAL, + measurement-feedback-Info Measurement-Feedback-Info-r7 OPTIONAL, + modeSpecificInfo CHOICE { + tdd CHOICE { + tdd384 SEQUENCE { + dl-HSPDSCH-TS-Configuration DL-HSPDSCH-TS-Configuration OPTIONAL + }, + tdd768 SEQUENCE { + dl-HSPDSCH-TS-Configuration DL-HSPDSCH-TS-Configuration-VHCR OPTIONAL + }, + tdd128 SEQUENCE { + hs-PDSCH-Midamble-Configuration-tdd128 + HS-PDSCH-Midamble-Configuration-TDD128 OPTIONAL, + dl-MultiCarrier-Information DL-MultiCarrier-Information OPTIONAL, + tS0-Indicator ENUMERATED { true } OPTIONAL, + outofSyncWindow OutofSyncWindow OPTIONAL + } + }, + fdd SEQUENCE { + dl-64QAM-Configured ENUMERATED { true } OPTIONAL, + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL + } + } +} + +DL-HSPDSCH-Information-r11 ::= SEQUENCE { + hs-scch-Info HS-SCCH-Info-r9 OPTIONAL, + measurement-feedback-Info Measurement-Feedback-Info-r11 OPTIONAL, + modeSpecificInfo CHOICE { + tdd CHOICE { + tdd384 SEQUENCE { + dl-HSPDSCH-TS-Configuration DL-HSPDSCH-TS-Configuration OPTIONAL + }, + tdd768 SEQUENCE { + dl-HSPDSCH-TS-Configuration DL-HSPDSCH-TS-Configuration-VHCR OPTIONAL + }, + tdd128 SEQUENCE { + hs-PDSCH-Midamble-Configuration-tdd128 + HS-PDSCH-Midamble-Configuration-TDD128 OPTIONAL, + dl-MultiCarrier-Information DL-MultiCarrier-Information OPTIONAL, + tS0-Indicator ENUMERATED { true } OPTIONAL, + outofSyncWindow OutofSyncWindow OPTIONAL + } + }, + fdd SEQUENCE { + dl-64QAM-Configured ENUMERATED { true } OPTIONAL, + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL + } + } +} + +OutofSyncWindow ::= ENUMERATED { + ms40, ms80, ms160, ms320, + ms640, spare3, spare2, spare1 } + +DL-HSPDSCH-MultiCarrier-Information ::= SEQUENCE (SIZE (1..maxTDD128Carrier)) OF + SEQUENCE { + uarfcn-Carrier UARFCN, + harqInfo HARQ-Info OPTIONAL, + hs-PDSCH-Midamble-Configuration HS-PDSCH-Midamble-Configuration-TDD128 OPTIONAL, + hs-SCCH-TDD128-MultiCarrier SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-TDD128-MultiCarrier OPTIONAL + } + +-- The IE 'DL-HSPDSCH-TS-Configuration' applies to tdd-384 REL-5 onward +DL-HSPDSCH-TS-Configuration ::= SEQUENCE (SIZE (1..maxTS-1)) OF + SEQUENCE { + timeslot TimeslotNumber, + midambleShiftAndBurstType MidambleShiftAndBurstType-DL +} + +-- The IE 'DL-HSPDSCH-TS-Configuration-VHCR' applies to tdd-768 REL-7 onward +DL-HSPDSCH-TS-Configuration-VHCR ::= SEQUENCE (SIZE (1..maxTS-1)) OF + SEQUENCE { + timeslot TimeslotNumber, + midambleShiftAndBurstType MidambleShiftAndBurstType-DL-VHCR +} + +DL-InformationPerRL ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + -- dummy1 and dummy 2 are not used in this version of specification, they should + -- not be sent and if received they should be ignored. + dummy1 PDSCH-SHO-DCH-Info OPTIONAL, + dummy2 PDSCH-CodeMapping OPTIONAL + }, + tdd PrimaryCCPCH-Info + }, + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL OPTIONAL, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SCCPCH-InfoForFACH OPTIONAL +} + +DL-InformationPerRL-r4 ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + -- dummy1 and dummy 2 are not used in this version of specification, they should + -- not be sent and if received they should be ignored. + dummy1 PDSCH-SHO-DCH-Info OPTIONAL, + dummy2 PDSCH-CodeMapping OPTIONAL + }, + tdd PrimaryCCPCH-Info-r4 + }, + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r4 OPTIONAL, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SCCPCH-InfoForFACH-r4 OPTIONAL, + cell-id CellIdentity OPTIONAL +} + +DL-InformationPerRL-r5 ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + -- dummy1 and dummy 2 are not used in this version of specification, they should + -- not be sent and if received they should be ignored. + dummy1 PDSCH-SHO-DCH-Info OPTIONAL, + dummy2 PDSCH-CodeMapping OPTIONAL, + servingHSDSCH-RL-indicator BOOLEAN + }, + tdd PrimaryCCPCH-Info-r4 + }, + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r5 OPTIONAL, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SCCPCH-InfoForFACH-r4 OPTIONAL, + cell-id CellIdentity OPTIONAL +} + +DL-InformationPerRL-r5bis ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + -- dummy1 and dummy 2 are not used in this version of specification, they should + -- not be sent and if received they should be ignored. + dummy1 PDSCH-SHO-DCH-Info OPTIONAL, + dummy2 PDSCH-CodeMapping OPTIONAL + }, + tdd PrimaryCCPCH-Info-r4 + }, + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r5 OPTIONAL, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SCCPCH-InfoForFACH-r4 OPTIONAL, + cell-id CellIdentity OPTIONAL +} + +DL-InformationPerRL-r6 ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + servingHSDSCH-RL-indicator BOOLEAN, + servingEDCH-RL-indicator BOOLEAN + }, + tdd PrimaryCCPCH-Info-r4 + }, + dl-dpchInfo CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r6, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r6 + } OPTIONAL, + e-AGCH-Information E-AGCH-Information OPTIONAL, + e-HICH-Info CHOICE { + e-HICH-Information E-HICH-Information, + releaseIndicator NULL + } OPTIONAL, + e-RGCH-Info CHOICE { + e-RGCH-Information E-RGCH-Information, + releaseIndicator NULL + } OPTIONAL, + cell-id CellIdentity OPTIONAL +} + +DL-InformationPerRL-v6b0ext ::= SEQUENCE { + sttdIndication STTDIndication OPTIONAL +} + +DL-InformationPerRL-r7 ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + servingHSDSCH-RL-indicator BOOLEAN, + servingEDCH-RL-indicator BOOLEAN + }, + tdd PrimaryCCPCH-Info-r4 + }, + dl-dpchInfo CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r7, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7 + } OPTIONAL, + e-AGCH-Information E-AGCH-Information-r7 OPTIONAL, + modeSpecificInfo2 CHOICE { + fdd SEQUENCE { + e-HICH-Info CHOICE { + e-HICH-Information E-HICH-Information, + releaseIndicator NULL + } OPTIONAL, + e-RGCH-Info CHOICE { + e-RGCH-Information E-RGCH-Information, + releaseIndicator NULL + } OPTIONAL + }, + tdd CHOICE { + tdd384-tdd768 SEQUENCE { + e-HICH-Info E-HICH-Information-TDD384-768 OPTIONAL + }, + tdd128 SEQUENCE { + e-HICH-Info E-HICH-Information-TDD128 OPTIONAL + } + } + }, + cell-id CellIdentity OPTIONAL +} + +DL-InformationPerRL-r8 ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + servingHSDSCH-RL-indicator BOOLEAN, + servingEDCH-RL-indicator BOOLEAN + }, + tdd PrimaryCCPCH-Info-r4 + }, + dl-dpchInfo CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r7, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7 + } OPTIONAL, + e-AGCH-Information E-AGCH-Information-r8 OPTIONAL, + modeSpecificInfo2 CHOICE { + fdd SEQUENCE { + e-HICH-Info CHOICE { + e-HICH-Information E-HICH-Information, + releaseIndicator NULL + } OPTIONAL, + e-RGCH-Info CHOICE { + e-RGCH-Information E-RGCH-Information, + releaseIndicator NULL + } OPTIONAL + }, + tdd CHOICE { + tdd384-tdd768 SEQUENCE { + e-HICH-Info E-HICH-Information-TDD384-768 OPTIONAL + }, + tdd128 SEQUENCE { + e-HICH-Info E-HICH-Information-TDD128 OPTIONAL + } + } + }, + cell-id CellIdentity OPTIONAL +} + +DL-InformationPerRL-r11 ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + servingHSDSCH-RL-indicator BOOLEAN, + servingEDCH-RL-indicator BOOLEAN + }, + tdd PrimaryCCPCH-Info-r4 + }, + dl-dpchInfo CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r7, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7 + } OPTIONAL, + e-AGCH-Information E-AGCH-Information-r8 OPTIONAL, + e-ROCH-Information E-ROCH-Information OPTIONAL, + modeSpecificInfo2 CHOICE { + fdd SEQUENCE { + e-HICH-Info CHOICE { + e-HICH-Information E-HICH-Information-r11, + releaseIndicator NULL, + secondaryReleaseIndicator NULL + } OPTIONAL, + e-RGCH-Info CHOICE { + e-RGCH-Information E-RGCH-Information, + releaseIndicator NULL + } OPTIONAL, + f-TPICH-Info CHOICE { + f-TPICH-Information F-TPICH-Information, + releaseIndicator NULL + } OPTIONAL + }, + tdd CHOICE { + tdd384-tdd768 SEQUENCE { + e-HICH-Info E-HICH-Information-TDD384-768 OPTIONAL + }, + tdd128 SEQUENCE { + e-HICH-Info E-HICH-Information-TDD128 OPTIONAL + } + } + }, + cell-id CellIdentity OPTIONAL +} + +DL-InformationPerRL-List ::= SEQUENCE (SIZE (1..maxRL)) OF + DL-InformationPerRL + +DL-InformationPerRL-List-r4 ::= SEQUENCE (SIZE (1..maxRL)) OF + DL-InformationPerRL-r4 + +DL-InformationPerRL-List-r5 ::= SEQUENCE (SIZE (1..maxRL)) OF + DL-InformationPerRL-r5 + +DL-InformationPerRL-List-r6 ::= SEQUENCE (SIZE (1..maxRL)) OF + DL-InformationPerRL-r6 + +DL-InformationPerRL-List-v6b0ext ::= SEQUENCE (SIZE (1..maxRL)) OF + DL-InformationPerRL-v6b0ext + +DL-InformationPerRL-List-r5bis ::= SEQUENCE (SIZE (1..maxRL)) OF + DL-InformationPerRL-r5bis + +DL-InformationPerRL-List-r7 ::= SEQUENCE (SIZE (1..maxRL)) OF + DL-InformationPerRL-r7 + +DL-InformationPerRL-List-r8 ::= SEQUENCE (SIZE (1..maxRL)) OF + DL-InformationPerRL-r8 + +DL-InformationPerRL-List-r11 ::= SEQUENCE (SIZE (1..maxRL)) OF + DL-InformationPerRL-r11 + +DL-InformationPerRL-ListPostFDD ::= SEQUENCE (SIZE (1..maxRL)) OF + DL-InformationPerRL-PostFDD + +DL-InformationPerRL-PostFDD ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-PostFDD +} + +DL-InformationPerRL-PostTDD ::= SEQUENCE { + primaryCCPCH-Info PrimaryCCPCH-InfoPost, + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-PostTDD +} + +DL-InformationPerRL-PostTDD-LCR-r4 ::= SEQUENCE { + primaryCCPCH-Info PrimaryCCPCH-InfoPostTDD-LCR-r4, + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-PostTDD-LCR-r4 +} + +--for 1.28Mcps TDD Multi-Carrier +DL-MultiCarrier-Information ::= SEQUENCE { + tsn-Length ENUMERATED { tsn-6bits, tsn-9bits } OPTIONAL, + multiCarrierNumber INTEGER (1..maxTDD128Carrier) OPTIONAL, + dl-HSPDSCH-MultiCarrier-Information DL-HSPDSCH-MultiCarrier-Information OPTIONAL +} + +DL-PDSCH-Information ::= SEQUENCE { + -- dummy1 and dummy 2 are not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy1 PDSCH-SHO-DCH-Info OPTIONAL, + dummy2 PDSCH-CodeMapping OPTIONAL +} + +Dl-rate-matching-restriction ::= SEQUENCE { + restrictedTrCH-InfoList RestrictedTrCH-InfoList OPTIONAL +} + +DL-SecondaryCellInfoFDD ::= CHOICE { + continue NULL, + newConfiguration SEQUENCE { + new-H-RNTI H-RNTI, + dl-64QAM-Configured ENUMERATED { true } OPTIONAL, + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL, + primaryCPICH-Info PrimaryCPICH-Info, + dl-ScramblingCode SecondaryScramblingCode OPTIONAL, + hS-SCCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-Codes, + measurementPowerOffset MeasurementPowerOffset, + uarfcn-DL UARFCN + } +} + +DL-SecondaryCellInfoFDD-v890ext ::= SEQUENCE { + differentTxModeFromServingHS-DSCHCell ENUMERATED { different } OPTIONAL +} + +DL-SecondaryCellInfoFDD-r9 ::= SEQUENCE { + configurationInfo CHOICE { + continue NULL, + newConfiguration SEQUENCE { + new-H-RNTI H-RNTI, + dl-64QAM-Configured ENUMERATED { true } OPTIONAL, + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL, + primaryCPICH-Info PrimaryCPICH-Info, + dl-ScramblingCode SecondaryScramblingCode OPTIONAL, + hS-SCCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-Codes, + measurementPowerOffset MeasurementPowerOffset, + uarfcn-DL UARFCN, + differentTxModeFromServingHS-DSCHCell ENUMERATED { different } OPTIONAL + } + }, + secondaryCellMIMOparameters SecondaryCellMIMOparametersFDD OPTIONAL +} + +DL-SecondaryCellInfoFDD-r10 ::= SEQUENCE { + configurationInfo CHOICE { + continue NULL, + newConfiguration SEQUENCE { + new-H-RNTI H-RNTI, + dl-64QAM-Configured ENUMERATED { true } OPTIONAL, + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL, + primaryCPICH-Info PrimaryCPICH-Info, + dl-ScramblingCode SecondaryScramblingCode OPTIONAL, + hS-SCCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-Codes, + measurementPowerOffset MeasurementPowerOffset, + uarfcn-DL UARFCN, + differentTxModeFromServingHS-DSCHCell ENUMERATED { different } OPTIONAL + } + }, + secondaryCellMIMOparameters SecondaryCellMIMOparametersFDD-r10 OPTIONAL +} + +DL-SecondaryCellInfoFDD-r11 ::= SEQUENCE { + configurationInfo CHOICE { + continue NULL, + newConfiguration SEQUENCE { + new-H-RNTI H-RNTI, + dl-64QAM-Configured ENUMERATED { true } OPTIONAL, + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL, + primaryCPICH-Info PrimaryCPICH-Info, + dl-ScramblingCode SecondaryScramblingCode OPTIONAL, + hS-SCCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-Codes, + measurementPowerOffset MeasurementPowerOffset, + measurementPowerOffset1 MeasurementPowerOffset OPTIONAL, + uarfcn-DL UARFCN, + differentTxModeFromServingHS-DSCHCell ENUMERATED { different } OPTIONAL, + multiflowConfigurationInfo MultiflowConfigurationInfo OPTIONAL + } + }, + secondaryCellMIMOparameters SecondaryCellMIMOparametersFDD-r10 OPTIONAL, + secondaryCell4x4MIMOparameters SecondaryCell4x4MIMOparametersFDD OPTIONAL +} + +DL-TPC-PowerOffsetPerRL ::= SEQUENCE { + powerOffsetTPC-pdpdch PowerOffsetTPC-pdpdch OPTIONAL +} + +-- NOTE: The radio links in the following list have a one-to-one mapping with the +-- radio links in the message. +DL-TPC-PowerOffsetPerRL-List ::= SEQUENCE (SIZE (1..maxRL)) OF + DL-TPC-PowerOffsetPerRL + +DL-TS-ChannelisationCode ::= ENUMERATED { + cc16-1, cc16-2, cc16-3, cc16-4, + cc16-5, cc16-6, cc16-7, cc16-8, + cc16-9, cc16-10, cc16-11, cc16-12, + cc16-13, cc16-14, cc16-15, cc16-16 } + +DL-TS-ChannelisationCode-VHCR ::= ENUMERATED { + cc32-1, cc32-2, cc32-3, cc32-4, + cc132-5, cc32-6, cc32-7, cc32-8, + cc32-9, cc32-10, cc32-11, cc32-12, + cc32-13, cc32-14, cc32-15, cc32-16, + cc32-17, cc32-18, cc32-19, cc32-20, + cc32-21, cc32-22, cc32-23, cc32-24, + cc32-25, cc32-26, cc32-27, cc32-28, + cc32-29, cc32-30, cc32-31, cc32-32 } + +DL-TS-ChannelisationCodesShort ::= SEQUENCE { + codesRepresentation CHOICE { + consecutive SEQUENCE { + firstChannelisationCode DL-TS-ChannelisationCode, + lastChannelisationCode DL-TS-ChannelisationCode + }, + bitmap BIT STRING { + chCode16-SF16(0), + chCode15-SF16(1), + chCode14-SF16(2), + chCode13-SF16(3), + chCode12-SF16(4), + chCode11-SF16(5), + chCode10-SF16(6), + chCode9-SF16(7), + chCode8-SF16(8), + chCode7-SF16(9), + chCode6-SF16(10), + chCode5-SF16(11), + chCode4-SF16(12), + chCode3-SF16(13), + chCode2-SF16(14), + chCode1-SF16(15) + } (SIZE (16)) + } +} + +DL-TS-ChannelisationCodesShort-VHCR ::= SEQUENCE { + codesRepresentation CHOICE { + consecutive SEQUENCE { + firstChannelisationCode DL-TS-ChannelisationCode-VHCR, + lastChannelisationCode DL-TS-ChannelisationCode-VHCR + }, + bitmap BIT STRING { + chCode32-SF32(0), + chCode31-SF32(1), + chCode30-SF32(2), + chCode29-SF32(3), + chCode28-SF32(4), + chCode27-SF32(5), + chCode26-SF32(6), + chCode25-SF32(7), + chCode24-SF32(8), + chCode23-SF32(9), + chCode22-SF32(10), + chCode21-SF32(11), + chCode20-SF32(12), + chCode19-SF32(13), + chCode18-SF32(14), + chCode17-SF32(15), + chCode16-SF32(16), + chCode15-SF32(17), + chCode14-SF32(18), + chCode13-SF32(19), + chCode12-SF32(20), + chCode11-SF32(21), + chCode10-SF32(22), + chCode9-SF32(23), + chCode8-SF32(24), + chCode7-SF32(25), + chCode6-SF32(26), + chCode5-SF32(27), + chCode4-SF32(28), + chCode3-SF32(29), + chCode2-SF32(30), + chCode1-SF32(31) + } (SIZE (32)) + } +} + +DL-ChannelCodes-MBSFN-IMB384 ::= SEQUENCE { + firstChannelisationCode INTEGER (1..15), + lastChannelisationCode INTEGER (1..15) OPTIONAL +} + +DLUL-HSPA-Information-r8 ::= SEQUENCE { + ul-EDCH-Information UL-EDCH-Information-r8, + dl-CommonInformation DL-CommonInformation-r8, + dl-InformationPerRL-List DL-InformationPerRL-List-r7, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8 +} + +DLUL-HSPA-Information-r9 ::= SEQUENCE { + ul-EDCH-Information UL-EDCH-Information-r9, + dl-CommonInformation DL-CommonInformation-r8, + dl-InformationPerRL-List DL-InformationPerRL-List-r7, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 +} + +DLUL-HSPA-Information-r10 ::= SEQUENCE { + ul-EDCH-Information UL-EDCH-Information-r9, + dl-CommonInformation DL-CommonInformation-r10, + dl-InformationPerRL-List DL-InformationPerRL-List-r7, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 +} + +DownlinkAdditionalTimeslots ::= SEQUENCE { + parameters CHOICE { + sameAsLast SEQUENCE { + timeslotNumber TimeslotNumber + }, + newParameters SEQUENCE { + individualTimeslotInfo IndividualTimeslotInfo, + dl-TS-ChannelisationCodesShort DL-TS-ChannelisationCodesShort + } + } +} + +DownlinkAdditionalTimeslots-VHCR ::= SEQUENCE { + parameters CHOICE { + sameAsLast SEQUENCE { + timeslotNumber TimeslotNumber + }, + newParameters SEQUENCE { + individualTimeslotInfo IndividualTimeslotInfo-VHCR, + dl-TS-ChannelisationCodesShort DL-TS-ChannelisationCodesShort-VHCR + } + } +} + +DownlinkAdditionalTimeslots-LCR-r4 ::= SEQUENCE { + parameters CHOICE { + sameAsLast SEQUENCE { + timeslotNumber TimeslotNumber-LCR-r4 + }, + newParameters SEQUENCE { + individualTimeslotInfo IndividualTimeslotInfo-LCR-r4, + dl-TS-ChannelisationCodesShort DL-TS-ChannelisationCodesShort + } + } +} + +DownlinkAdditionalTimeslots-r7 ::= SEQUENCE { + parameters CHOICE { + sameAsLast SEQUENCE { + timeslotNumber TimeslotNumber + }, + newParameters SEQUENCE { + individualTimeslotInfo IndividualTimeslotInfo-r7, + dl-TS-ChannelisationCodesShort DL-TS-ChannelisationCodesShort + } + } +} + +DownlinkTimeslotsCodes ::= SEQUENCE { + firstIndividualTimeslotInfo IndividualTimeslotInfo, + dl-TS-ChannelisationCodesShort DL-TS-ChannelisationCodesShort, + moreTimeslots CHOICE { + noMore NULL, + additionalTimeslots CHOICE { + consecutive INTEGER (1..maxTS-1), + timeslotList SEQUENCE (SIZE (1..maxTS-1)) OF + DownlinkAdditionalTimeslots + } + } +} + +DownlinkTimeslotsCodes-VHCR ::= SEQUENCE { + firstIndividualTimeslotInfo IndividualTimeslotInfo-VHCR, + dl-TS-ChannelisationCodesShort DL-TS-ChannelisationCodesShort-VHCR, + moreTimeslots CHOICE { + noMore NULL, + additionalTimeslots CHOICE { + consecutive INTEGER (1..maxTS-1), + timeslotList SEQUENCE (SIZE (1..maxTS-1)) OF + DownlinkAdditionalTimeslots-VHCR + } + } +} + +DownlinkTimeslotsCodes-LCR-r4 ::= SEQUENCE { + firstIndividualTimeslotInfo IndividualTimeslotInfo-LCR-r4, + dl-TS-ChannelisationCodesShort DL-TS-ChannelisationCodesShort, + moreTimeslots CHOICE { + noMore NULL, + additionalTimeslots CHOICE { + consecutive INTEGER (1..maxTS-LCR-1), + timeslotList SEQUENCE (SIZE (1..maxTS-LCR-1)) OF + DownlinkAdditionalTimeslots-LCR-r4 + } + } +} +DownlinkTimeslotsCodes-r7 ::= SEQUENCE { + firstIndividualTimeslotInfo IndividualTimeslotInfo-r7, + dl-TS-ChannelisationCodesShort DL-TS-ChannelisationCodesShort, + moreTimeslots CHOICE { + noMore NULL, + additionalTimeslots CHOICE { + consecutive INTEGER (1..maxTS-1), + timeslotList SEQUENCE (SIZE (1..maxTS-1)) OF + DownlinkAdditionalTimeslots-r7 + } + } +} + +DPC-Mode ::= ENUMERATED { + singleTPC, + tpcTripletInSoft } + +-- Actual value DPCCH-PowerOffset = IE value * 2 +DPCCH-PowerOffset ::= INTEGER (-82..-3) + +-- Actual value DPCCH-PowerOffset2 = 2 + (IE value * 4) +DPCCH-PowerOffset2 ::= INTEGER (-28..-13) + +DPCH-CompressedModeInfo ::= SEQUENCE { + tgp-SequenceList TGP-SequenceList +} + +DPCH-CompressedModeInfo-r8 ::= SEQUENCE { + tgp-SequenceList TGP-SequenceList-r8 +} + +DPCH-CompressedModeInfo-r10 ::= SEQUENCE { + tgp-SequenceList TGP-SequenceList-r10 +} + +DPCH-CompressedModeStatusInfo ::= SEQUENCE { + tgps-Reconfiguration-CFN TGPS-Reconfiguration-CFN, + tgp-SequenceShortList SEQUENCE (SIZE (1..maxTGPS)) OF + TGP-SequenceShort +} + +DPCH-CompressedModeStatusInfo-r10 ::= SEQUENCE { + tgps-Reconfiguration-CFN TGPS-Reconfiguration-CFN, + tgp-SequenceShortList SEQUENCE (SIZE (1..maxTGPS)) OF + TGP-SequenceShort-r10 +} + +-- Actual value DPCH-FrameOffset = IE value * 256 +DPCH-FrameOffset ::= INTEGER (0..149) + +FDPCH-SlotFormat ::= INTEGER (0..9) + +UE-DRX-Cycle-InactivityThreshold ::= ENUMERATED { + sub-frames-0, + sub-frames-1, + sub-frames-2, + sub-frames-4, + sub-frames-8, + sub-frames-16, + sub-frames-32, + sub-frames-64, + sub-frames-128, + sub-frames-256, + sub-frames-512, + spare5, + spare4, + spare3, + spare2, + spare1 } + +DRX-Info ::= SEQUENCE { + ue-drx-Cycle UE-DRX-Cycle, + ue-drx-Cycle-InactivityThreshold UE-DRX-Cycle-InactivityThreshold, + ue-GrantMonitoring-InactivityThreshold + UE-GrantMonitoring-InactivityThreshold, + ue-drx-GrantMonitoring BOOLEAN +} + +DSCH-Mapping ::= SEQUENCE { + maxTFCI-Field2Value MaxTFCI-Field2Value, + spreadingFactor SF-PDSCH, + codeNumber CodeNumberDSCH, + multiCodeInfo MultiCodeInfo +} + +DSCH-MappingList ::= SEQUENCE (SIZE (1..maxPDSCH-TFCIgroups)) OF + DSCH-Mapping + +DSCH-RadioLinkIdentifier ::= INTEGER (0..511) + +DSCH-TransportChannelsInfo ::= SEQUENCE (SIZE (1..maxTrCH)) OF + SEQUENCE { + dsch-transport-channel-identity TransportChannelIdentity, + dsch-TFS TransportFormatSet +} + +DTX-DRX-Info-r7 ::= SEQUENCE { + dtx-Info DTX-Info OPTIONAL, + drx-Info DRX-Info OPTIONAL, + uplink-DPCCHSlotFormatInformation Uplink-DPCCH-Slot-Format-Information +} + +DTX-E-DCH-TTI-10ms ::= SEQUENCE { + ue-dtx-Cycle1-10ms UE-DTX-Cycle1-10ms, + ue-dtx-Cycle2-10ms UE-DTX-Cycle2-10ms, + mac-dtx-Cycle-10ms MAC-DTX-Cycle-10ms +} + +DTX-E-DCH-TTI-2ms ::= SEQUENCE { + ue-dtx-Cycle1-2ms UE-DTX-Cycle1-2ms, + ue-dtx-Cycle2-2ms UE-DTX-Cycle2-2ms, + mac-dtx-Cycle-2ms MAC-DTX-Cycle-2ms +} + +DTX-Info ::= SEQUENCE { + e-dch-TTI-Length CHOICE { + dtx-e-dch-TTI-10ms DTX-E-DCH-TTI-10ms, + dtx-e-dch-TTI-2ms DTX-E-DCH-TTI-2ms + }, + ue-dtx-cycle2InactivityThreshold UE-DTX-Cycle2InactivityThreshold, + ue-dtx-cycle2DefaultSG INTEGER (0..38) OPTIONAL, + -- if ue-dtx-long-preamble-length is not present, the value is '2 slots' + ue-dtx-long-preamble-length UE-DTX-long-preamble-length OPTIONAL, + mac-InactivityThreshold MAC-InactivityThreshold, + cqi-dtx-Timer CQI-DTX-Timer, + ue-dpcch-Burst1 UE-DPCCH-Burst, + ue-dpcch-Burst2 UE-DPCCH-Burst +} + +DurationTimeInfo ::= INTEGER (1..4096) + +DynamicPersistenceLevel ::= INTEGER (1..8) + +DynamicPersistenceLevelList ::= SEQUENCE (SIZE (1..maxPRACH)) OF + DynamicPersistenceLevel + +DynamicPersistenceLevelTF-List ::= SEQUENCE (SIZE (1..maxTF-CPCH)) OF + DynamicPersistenceLevel + +DynamicTFInformationCCCH ::= SEQUENCE { + octetModeRLC-SizeInfoType2 OctetModeRLC-SizeInfoType2 +} + +E-AGCH-ChannelisationCode ::= INTEGER (0..255) + +E-AGCH-DRX-Info-TDD128 ::= SEQUENCE { + e-AGCH-DRX-InfoType CHOICE { + sameAsHS-SCCH NULL, + e-AGCH-DRX-Parameters SEQUENCE { + e-AGCH-DRX-Cycle ControlChannelDRXCycle-TDD128, + e-AGCH-InactivityMonitorThreshold E-AGCH-InactivityMonitorThreshold-TDD128 + OPTIONAL, + e-AGCH-DRX-Offset INTEGER (0..63) + } + } +} + +E-AGCH-InactivityMonitorThreshold-TDD128 ::= ENUMERATED { + radio-frames-0, radio-frames-1, radio-frames-2, + radio-frames-4, radio-frames-8, radio-frames-16, + radio-frames-32, radio-frames-64, radio-frames-128, + radio-frames-256, radio-frames-512, + spare5, spare4, spare3, spare2, infinity } + +E-AGCH-Individual ::= SEQUENCE { + tS-number INTEGER (0..14), + channelisation-code DL-TS-ChannelisationCode, + midambleShiftAndBurstType MidambleShiftAndBurstType-EDCH +} + +E-AGCH-Individual-VHCR ::= SEQUENCE { + tS-number INTEGER (0..14), + channelisation-code DL-TS-ChannelisationCode-VHCR, + midambleShiftAndBurstType MidambleShiftAndBurstType-EDCH +} + +E-AGCH-Individual-LCR ::= SEQUENCE { + timeslotNumber TimeslotNumber-LCR-r4, + firstChannelisationCode HS-ChannelisationCode-LCR, + secondChannelisationCode HS-ChannelisationCode-LCR, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble INTEGER (0..15) + }, + -- Actual value midambleConfiguration = IE value * 2 + midambleConfiguration INTEGER (1..8) +} + +E-AGCH-Information ::= SEQUENCE { + e-AGCH-ChannelisationCode E-AGCH-ChannelisationCode +} + +E-AGCH-Information-r7 ::= SEQUENCE { + modeSpecific CHOICE { + fdd SEQUENCE { + e-AGCH-ChannelisationCode E-AGCH-ChannelisationCode + }, + tdd CHOICE { + tdd384 SEQUENCE { + long-Term-Grant-Indicator BOOLEAN OPTIONAL, + length-of-TTRI-field INTEGER (1..12), + e-AGCH-Set-Config E-AGCH-Set-Config, + e-AGCH-BLER-Target Bler-Target + }, + tdd768 SEQUENCE { + long-Term-Grant-Indicator BOOLEAN OPTIONAL, + length-of-TTRI-field INTEGER (1..12), + e-AGCH-Set-Config E-AGCH-Set-Config-VHCR, + e-AGCH-BLER-Target Bler-Target + }, + tdd128 SEQUENCE { + rdi-Indicator BOOLEAN, + tpc-StepSize TPC-StepSizeTDD, + e-AGCH-Set-Config E-AGCH-Set-Config-LCR, + e-AGCH-BLER-Target Bler-Target + } + } + } +} + +E-AGCH-Information-r8 ::= SEQUENCE { + modeSpecific CHOICE { + fdd SEQUENCE { + e-AGCH-ChannelisationCode E-AGCH-ChannelisationCode + }, + tdd CHOICE { + tdd384 SEQUENCE { + long-Term-Grant-Indicator BOOLEAN OPTIONAL, + length-of-TTRI-field INTEGER (1..12), + e-AGCH-Set-Config E-AGCH-Set-Config, + e-AGCH-BLER-Target Bler-Target + }, + tdd768 SEQUENCE { + long-Term-Grant-Indicator BOOLEAN OPTIONAL, + length-of-TTRI-field INTEGER (1..12), + e-AGCH-Set-Config E-AGCH-Set-Config-VHCR, + e-AGCH-BLER-Target Bler-Target + }, + tdd128 SEQUENCE { + rdi-Indicator BOOLEAN, + tpc-StepSize TPC-StepSizeTDD, + e-AGCH-Set-Config E-AGCH-Set-Config-LCR, + e-AGCH-BLER-Target Bler-Target, + e-AGCH-InactivityMonitorThreshold E-AGCH-InactivityMonitorThreshold-TDD128 + OPTIONAL + } + } + } +} + +E-AGCH-Information-TDD128 ::= SEQUENCE { + rdi-Indicator BOOLEAN, + tpc-StepSize TPC-StepSizeTDD, + e-AGCH-Set-Config E-AGCH-Set-Config-LCR, + e-AGCH-BLER-Target Bler-Target +} + +E-AGCH-Set-Config ::= SEQUENCE (SIZE (1..maxNumE-AGCH)) OF + E-AGCH-Individual + +E-AGCH-Set-Config-VHCR ::= SEQUENCE (SIZE (1..maxNumE-AGCH)) OF + E-AGCH-Individual-VHCR + +E-AGCH-Set-Config-LCR ::= SEQUENCE (SIZE (1..maxNumE-AGCH)) OF + E-AGCH-Individual-LCR + +E-ROCH-ChannelisationCode ::= INTEGER (0..255) + +E-ROCH-Information ::= SEQUENCE { + e-ROCH-ChannelisationCode E-ROCH-ChannelisationCode, + e-roch-e-rnti E-RNTI +} + +E-DCH-MinimumSet-E-TFCI ::= INTEGER (0..127) + +E-DCH-ReconfigurationInfo ::= SEQUENCE { + e-DCH-RL-InfoNewServingCell E-DCH-RL-InfoNewServingCell OPTIONAL, + e-DCH-RL-InfoOtherCellList SEQUENCE (SIZE (1..maxEDCHRL)) OF + E-DCH-RL-InfoOtherCell OPTIONAL +} + +E-DCH-ReconfigurationInfo-r7 ::= SEQUENCE { + e-DCH-RL-InfoNewServingCell E-DCH-RL-InfoNewServingCell-r7 OPTIONAL, + e-DCH-RL-InfoOtherCellList SEQUENCE (SIZE (1..maxEDCHRL)) OF + E-DCH-RL-InfoOtherCell OPTIONAL +} + +E-DCH-ReconfigurationInfo-r11 ::= SEQUENCE { + e-DCH-RL-InfoNewServingCell E-DCH-RL-InfoNewServingCell-r11 OPTIONAL, + e-DCH-RL-InfoOtherCellList SEQUENCE (SIZE (1..maxEDCHRL)) OF + E-DCH-RL-InfoOtherCell-r11 OPTIONAL +} + +E-DCH-ReconfigurationInfo-SecULFrequency ::= SEQUENCE { + e-DCH-RL-InfoNewSecServingCell E-DCH-RL-InfoNewSecServingCell OPTIONAL, + e-DCH-RL-InfoOtherCellList-SecULFreq SEQUENCE (SIZE (1..maxEDCHRL)) OF + E-DCH-RL-InfoOtherCell-SecULFreq OPTIONAL +} + +E-DCH-RL-InfoNewServingCell ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + e-AGCH-Information E-AGCH-Information, + servingGrant SEQUENCE { + value INTEGER (0..38) OPTIONAL, + primary-Secondary-GrantSelector ENUMERATED { primary, secondary } + } OPTIONAL, + e-DPCCH-DPCCH-PowerOffset E-DPCCH-DPCCH-PowerOffset OPTIONAL, + reference-E-TFCIs E-DPDCH-Reference-E-TFCIList OPTIONAL, + powerOffsetForSchedInfo INTEGER (0..6) OPTIONAL, + threeIndexStepThreshold INTEGER (0..37) OPTIONAL, + twoIndexStepThreshold INTEGER (0..37) OPTIONAL, + e-HICH-Information E-HICH-Information OPTIONAL, + e-RGCH-Info CHOICE { + e-RGCH-Information E-RGCH-Information, + releaseIndicator NULL + } OPTIONAL +} + +E-DCH-RL-InfoNewServingCell-r7 ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + e-AGCH-Information E-AGCH-Information, + servingGrant SEQUENCE { + value INTEGER (0..38) OPTIONAL, + primary-Secondary-GrantSelector ENUMERATED { primary, secondary } + } OPTIONAL, + e-DPCCH-DPCCH-PowerOffset E-DPCCH-DPCCH-PowerOffset OPTIONAL, + reference-E-TFCIs E-DPDCH-Reference-E-TFCIList-r7 OPTIONAL, + powerOffsetForSchedInfo INTEGER (0..6) OPTIONAL, + threeIndexStepThreshold INTEGER (0..37) OPTIONAL, + twoIndexStepThreshold INTEGER (0..37) OPTIONAL, + e-HICH-Information E-HICH-Information OPTIONAL, + e-RGCH-Info CHOICE { + e-RGCH-Information E-RGCH-Information, + releaseIndicator NULL + } OPTIONAL +} + +E-DCH-RL-InfoNewServingCell-r11 ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + e-AGCH-Information E-AGCH-Information, + e-ROCH-Information E-ROCH-Information OPTIONAL, + servingGrant SEQUENCE { + value INTEGER (0..38) OPTIONAL, + primary-Secondary-GrantSelector ENUMERATED { primary, secondary } + } OPTIONAL, + e-DPCCH-DPCCH-PowerOffset E-DPCCH-DPCCH-PowerOffset OPTIONAL, + reference-E-TFCIs E-DPDCH-Reference-E-TFCIList-r7 OPTIONAL, + powerOffsetForSchedInfo INTEGER (0..6) OPTIONAL, + threeIndexStepThreshold INTEGER (0..37) OPTIONAL, + twoIndexStepThreshold INTEGER (0..37) OPTIONAL, + e-HICH-Information E-HICH-Information-r11 OPTIONAL, + e-RGCH-Info CHOICE { + e-RGCH-Information E-RGCH-Information, + releaseIndicator NULL + } OPTIONAL +} + +E-DCH-RL-InfoNewSecServingCell ::= SEQUENCE { + e-AGCH-Information E-AGCH-Information, + e-HICH-Information E-HICH-Information OPTIONAL, + e-RGCH-Info CHOICE { + e-RGCH-Information E-RGCH-Information, + releaseIndicator NULL + } OPTIONAL +} + +E-DCH-RL-InfoOtherCell ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + e-HICH-Info CHOICE { + e-HICH-Information E-HICH-Information, + releaseIndicator NULL + } OPTIONAL, + e-RGCH-Info CHOICE { + e-RGCH-Information E-RGCH-Information, + releaseIndicator NULL + } OPTIONAL +} + +E-DCH-RL-InfoOtherCell-r11 ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + e-HICH-Info CHOICE { + e-HICH-Information E-HICH-Information-r11, + releaseIndicator NULL, + secondaryReleaseIndicator NULL + } OPTIONAL, + e-RGCH-Info CHOICE { + e-RGCH-Information E-RGCH-Information, + releaseIndicator NULL + } OPTIONAL +} + +E-DCH-RL-InfoOtherCell-SecULFreq ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + e-HICH-Information E-HICH-Information OPTIONAL, + e-RGCH-Info CHOICE { + e-RGCH-Information E-RGCH-Information, + releaseIndicator NULL + } OPTIONAL +} + +E-DCH-RL-InfoSameServingCell ::= SEQUENCE { + e-DPCCH-DPCCH-PowerOffset E-DPCCH-DPCCH-PowerOffset OPTIONAL, + reference-E-TFCIs E-DPDCH-Reference-E-TFCIList-r7 OPTIONAL +} + +E-DCH-SPS-Information-TDD128 ::= SEQUENCE { + e-dch-SPS-Operation CHOICE { + continue NULL, + newOperation E-DCH-SPS-NewOperation-TDD128 + } +} + +E-DCH-SPS-NewOperation-TDD128 ::= SEQUENCE { + e-hich-Info E-HICH-Information-For-SPS-TDD128, + e-dch-TxPattern E-DCH-TxPatternList-TDD128 OPTIONAL, + initialSPSInfoForEDCH SEQUENCE { + n-E-UCCH INTEGER (1..8), + codeResourceInfo UL-TS-ChannelisationCode, + timeslotResourceRelatedInfo BIT STRING (SIZE (5)), + powerResourceRelatedInfo INTEGER (1..32), + activationTime ActivationTime, + subframeNum INTEGER (0..1), + initialTxPatternIndex INTEGER (0..maxEDCHTxPattern-TDD128-1) + } OPTIONAL +} + +E-DCH-TxPatternList-TDD128 ::= SEQUENCE (SIZE (1..maxEDCHTxPattern-TDD128)) OF + SEQUENCE { + repetitionPeriodAndLength RepetitionPeriodAndLengthForSPS +} + +E-DPCCH-Info ::= SEQUENCE { + e-DPCCH-DPCCH-PowerOffset E-DPCCH-DPCCH-PowerOffset, + happyBit-DelayCondition HappyBit-DelayCondition +} + +E-DPCCH-Info-r7 ::= SEQUENCE { + e-DPCCH-DPCCH-PowerOffset E-DPCCH-DPCCH-PowerOffset, + happyBit-DelayCondition HappyBit-DelayCondition, + e-TFC-Boost-Info E-TFC-Boost-Info-r7 OPTIONAL, + e-DPDCH-PowerInterpolation E-DPDCH-PowerInterpolation OPTIONAL +} + +E-DPCCH-DPCCH-PowerOffset ::= INTEGER (0..8) + +E-DPDCH-Info ::= SEQUENCE { + e-TFCI-TableIndex E-TFCI-TableIndex, + e-DCH-MinimumSet-E-TFCI E-DCH-MinimumSet-E-TFCI OPTIONAL, + reference-E-TFCIs E-DPDCH-Reference-E-TFCIList, + maxChannelisationCodes E-DPDCH-MaxChannelisationCodes, + pl-NonMax E-DPDCH-PL-NonMax, + schedulingInfoConfiguration E-DPDCH-SchedulingInfoConfiguration, + threeIndexStepThreshold INTEGER (0..37) OPTIONAL, + twoIndexStepThreshold INTEGER (0..37) OPTIONAL +} + +E-DPDCH-Info-r7 ::= SEQUENCE { + e-TFCI-TableIndex E-TFCI-TableIndex, + e-DCH-MinimumSet-E-TFCI E-DCH-MinimumSet-E-TFCI OPTIONAL, + reference-E-TFCIs E-DPDCH-Reference-E-TFCIList-r7, + maxChannelisationCodes E-DPDCH-MaxChannelisationCodes, + pl-NonMax E-DPDCH-PL-NonMax, + schedulingInfoConfiguration E-DPDCH-SchedulingInfoConfiguration, + threeIndexStepThreshold INTEGER (0..37) OPTIONAL, + twoIndexStepThreshold INTEGER (0..37) OPTIONAL +} + +E-DPDCH-Info-r8 ::= SEQUENCE { + e-TFCI-TableIndex E-TFCI-TableIndex, + e-DCH-MinimumSet-E-TFCI E-DCH-MinimumSet-E-TFCI OPTIONAL, + reference-E-TFCIs E-DPDCH-Reference-E-TFCIList-r7, + minReduced-E-DPDCH-GainFactor MinReduced-E-DPDCH-GainFactor OPTIONAL, + maxChannelisationCodes E-DPDCH-MaxChannelisationCodes, + pl-NonMax E-DPDCH-PL-NonMax, + schedulingInfoConfiguration E-DPDCH-SchedulingInfoConfiguration, + threeIndexStepThreshold INTEGER (0..37) OPTIONAL, + twoIndexStepThreshold INTEGER (0..37) OPTIONAL +} + +E-DPDCH-PeriodicyOfSchedInfo ::= ENUMERATED { + everyEDCHTTI, ms4, ms10, ms20, ms50, ms100, ms200, ms500, + ms1000 } + +-- The actual value of E-DPDCH-PL-NonMax is: IE value * 0.04 +E-DPDCH-PL-NonMax ::= INTEGER (11..25) + +E-DPDCH-PowerInterpolation ::= BOOLEAN + +E-DPDCH-Reference-E-TFCI ::= SEQUENCE { + reference-E-TFCI INTEGER (0..127), + reference-E-TFCI-PO INTEGER (0..29) +} + +E-DPDCH-Reference-E-TFCI-r7 ::= SEQUENCE { + reference-E-TFCI INTEGER (0..127), + reference-E-TFCI-PO-r7 INTEGER (0..31) +} + +E-DPDCH-Reference-E-TFCIList ::= SEQUENCE (SIZE (1..8)) OF E-DPDCH-Reference-E-TFCI + +E-DPDCH-Reference-E-TFCIList-r7 ::= SEQUENCE (SIZE (1..8)) OF E-DPDCH-Reference-E-TFCI-r7 + +E-DPDCH-SchedulingInfoConfiguration ::= SEQUENCE { + periodicityOfSchedInfo-NoGrant E-DPDCH-PeriodicyOfSchedInfo OPTIONAL, + periodicityOfSchedInfo-Grant E-DPDCH-PeriodicyOfSchedInfo OPTIONAL, + powerOffsetForSchedInfo INTEGER (0..6) +} + +E-DPDCH-SchedulingTransmConfiguration ::= SEQUENCE { + ms2-SchedTransmGrantHARQAlloc BIT STRING (SIZE (8)) OPTIONAL, + servingGrant SEQUENCE { + value INTEGER (0..38), + primary-Secondary-GrantSelector ENUMERATED { primary, secondary } + } OPTIONAL +} + +E-DPDCH-MaxChannelisationCodes ::= ENUMERATED { + sf256, sf128, sf64, sf32, sf16, sf8, sf4, sf4x2, + sf2x2, sf4x2-and-sf2x2 } + +E-HICH-ChannelisationCode ::= INTEGER (0..127) + +E-HICH-Information ::= SEQUENCE { + channelisationCode E-HICH-ChannelisationCode, + signatureSequence E-HICH-RGCH-SignatureSequence +} + +E-HICH-Information-r11 ::= SEQUENCE { + channelisationCode E-HICH-ChannelisationCode, + signatureSequence E-HICH-RGCH-SignatureSequence, + secondarySignatureSequence E-HICH-RGCH-SignatureSequence OPTIONAL +} + +E-HICH-Information-CommonEdch ::= SEQUENCE { + channelisationCode E-HICH-ChannelisationCode OPTIONAL, + signatureSequence E-HICH-RGCH-SignatureSequence OPTIONAL +} + +E-HICH-Information-TDD384-768 ::= SEQUENCE { + n-E-HICH INTEGER (4..44), + tS-Number INTEGER (0..14), + modeSpecificInfo CHOICE { + tdd384 DL-TS-ChannelisationCode, + tdd768 DL-TS-ChannelisationCode-VHCR + }, + burst-Type ENUMERATED { type1, type2 }, + midamble-Allocation-Mode ENUMERATED { default, common } +} + +E-HICH-Information-LCR ::= SEQUENCE { + ei INTEGER (0..3), + timeslotNumber TimeslotNumber-LCR-r4, + channelisation-Code HS-ChannelisationCode-LCR, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + ueSpecificMidamble INTEGER (0..15) + }, + -- Actual value midambleConfiguration = IE value * 2 + midambleConfiguration INTEGER (1..8) +} + +E-HICH-Information-TDD128 ::= SEQUENCE { + n-E-HICH INTEGER (4..15), + e-HICH-InfoList E-HICH-Information-LCR-List +} + +E-HICH-Information-LCR-List ::= SEQUENCE (SIZE (1..maxNumE-HICH)) OF + E-HICH-Information-LCR + +E-HICH-RGCH-SignatureSequence ::= INTEGER (0..39) + +E-HICH-Information-For-SPS-TDD128 ::= SEQUENCE { + configurationmode CHOICE{ + implicit SEQUENCE { + ei INTEGER (0..3) OPTIONAL + }, + explicit SEQUENCE { + timeslotNumber TimeslotNumber-LCR-r4, + channelisation-Code HS-ChannelisationCode-LCR, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + ueSpecificMidamble INTEGER (0..15) + }, + -- Actual value midambleConfiguration = IE value * 2 + midambleConfiguration INTEGER (1..8) + } + }, + signatureSequenceGroupIndex INTEGER (0..19) +} + +E-PUCH-Info ::= SEQUENCE { + e-TFCS-Info E-TFCS-Info, + modeSpecificInfo CHOICE { + tdd348-tdd768 SEQUENCE { + noSlotsForTFCIandTPC INTEGER (1..12), + e-PUCH-ContantValue INTEGER (-35..10), + e-PUCH-TS-ConfigurationList SEQUENCE (SIZE (1..maxTS-2)) OF E-PUCH-TS-Slots, + e-PUCH-CodeHopping BOOLEAN, + e-PUCH-TPC-Step-Size INTEGER (1..3), + minimum-Allowed-Code-Rate INTEGER (0..63), + maximum-Allowed-Code-Rate INTEGER (0..63) + }, + tdd128 SEQUENCE { + snpl-ReportType ENUMERATED { type1, type2 } OPTIONAL, + prxdes-base INTEGER (-112..-50), + beaconPLEst BOOLEAN OPTIONAL, + tpc-StepSize TPC-StepSizeTDD, + pebase-PowerControlGAP PowerControlGAP OPTIONAL, + ul-SynchronisationParameters UL-SynchronisationParameters-r4 OPTIONAL, + e-PUCH-TS-ConfigurationList SEQUENCE (SIZE (1..maxTS-LCR-1)) OF + E-PUCH-TS-Slots-LCR, + minimum-Allowed-Code-Rate INTEGER (0..63), + maximum-Allowed-Code-Rate INTEGER (0..63), + maximumNumOfRetransSchedInfo INTEGER (0..15), + retransTimerForSchedInfo ENUMERATED { ms10, ms15, ms20, ms25, ms30, ms35, + ms40, ms45, ms50, ms55, ms60, ms65, ms70, ms75, + ms80, ms85, ms90, ms95, ms100, ms110, ms120, + ms140, ms160, ms200, ms240,ms280, ms320, ms400, + ms480, ms560 } + } + }, + -- For 3.84/7.68 TDD only, should be ignored for 1.28Mcps TDD mode + powerOffsetForSchedInfo INTEGER (0..6) OPTIONAL +} + +E-PUCH-Info-TDD128 ::= SEQUENCE { + e-TFCS-Info E-TFCS-Info, + snpl-ReportType ENUMERATED { type1, type2 } OPTIONAL, + prxdes-base INTEGER (-112..-50), + beaconPLEst BOOLEAN OPTIONAL, + tpc-StepSize TPC-StepSizeTDD, + pebase-PowerControlGAP INTEGER (1..255) OPTIONAL, + ul-SynchronisationParameters UL-SynchronisationParameters-r4 OPTIONAL, + e-PUCH-TS-ConfigurationList SEQUENCE (SIZE (1..maxTS-LCR-1)) OF + E-PUCH-TS-Slots-LCR, + minimum-Allowed-Code-Rate INTEGER (0..63), + maximum-Allowed-Code-Rate INTEGER (0..63), + maximumNumOfRetransSchedInfo INTEGER (0..15), + retransTimerForSchedInfo ENUMERATED { ms10, ms15, ms20, ms25, ms30, ms35, + ms40, ms45, ms50, ms55, ms60, ms65, ms70, ms75, + ms80, ms85, ms90, ms95, ms100, ms110, ms120, + ms140, ms160, ms200, ms240,ms280, ms320, ms400, + ms480, ms560 }, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy INTEGER (0..6) OPTIONAL +} + +E-PUCH-Info-MulticarrierEDCH-TDD128 ::= SEQUENCE { + e-PUCH-TS-ConfigurationList SEQUENCE (SIZE (1..maxTS-LCR-1)) OF + E-PUCH-TS-Slots-LCR +} + +E-PUCH-TS-Slots ::= SEQUENCE { + ts-Number INTEGER (0..14), + midambleShiftAndBurstType MidambleShiftAndBurstType-EDCH +} + +E-PUCH-TS-Slots-LCR ::= SEQUENCE { + -- Note: For 1.28Mcps TDD operation, valid value for timeslotNumber is INTEGER (1..5) + timeslotNumber TimeslotNumber-LCR-r4, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + ueSpecificMidamble INTEGER (0..15) + }, + -- Actual value midambleConfiguration = IE value * 2 + midambleConfiguration INTEGER (1..8) +} + +E-RGCH-CombinationIndex ::= INTEGER (0..5) + +E-RGCH-Information ::= SEQUENCE { + signatureSequence E-HICH-RGCH-SignatureSequence, + rg-CombinationIndex E-RGCH-CombinationIndex +} + +E-RGCH-Information-CommonEdch ::= SEQUENCE { + signatureSequence E-HICH-RGCH-SignatureSequence OPTIONAL +} + +E-RUCCH-AccessServiceClass ::= PRACH-Partitioning-LCR-r4 + +E-RUCCH-Info ::= SEQUENCE { + modeSpecificInfo CHOICE { + tdd384-tdd768 SEQUENCE { + e-RUCCH-ConstantValue INTEGER (-35..10), + e-RUCCH-PersistenceScalingFactor PersistenceScalingFactor, + t-RUCCH ENUMERATED {ms40, ms80, ms120, ms160, ms200, + ms240, ms280, ms320} OPTIONAL, + e-RUCCH-TS-Number INTEGER (0..14) OPTIONAL, + e-RUCCH-Midamble ENUMERATED {direct, direct-Inverted} OPTIONAL, + t-adv ENUMERATED { sec1, sec2, sec4, sec8, sec16, + sec32, sec128, infinity } OPTIONAL, + t-SCHED ENUMERATED { zero, ms40, ms80, ms160, ms250, + sec1, sec2, sec4 } OPTIONAL, + modeSpecificInfo CHOICE { + tdd384 CHOICE { + sF16 SEQUENCE (SIZE (1..8)) OF SF16Codes, + sF8 SEQUENCE (SIZE (1..8)) OF SF8Codes + }, + tdd768 CHOICE { + sF32 SEQUENCE (SIZE (1..16)) OF SF32Codes, + sF816 SEQUENCE (SIZE (1..16)) OF SF16Codes2 + } + } + }, + tdd128 SEQUENCE { + t-RUCCH ENUMERATED { ms20, ms40, ms60, ms80, ms120, + ms160, ms200, ms240, ms280, ms320, + ms400, ms500, ms600, ms800, ms1000, + ms2000 } OPTIONAL, + n-RUCCH INTEGER (0..7) OPTIONAL, + t-WAIT ENUMERATED { everyEDCHTTI, ms40, ms80, ms160, + ms320, ms640, ms1000, ms2000 } OPTIONAL, + t-SI ENUMERATED { everyEDCHTTI, ms20, ms40, ms60, ms80, + ms160, ms200 } OPTIONAL, + extendedEstimationWindow INTEGER (2..5) OPTIONAL, + e-RUCCH-AccessServiceClass E-RUCCH-AccessServiceClass OPTIONAL, + e-RUCCH-PersistenceScalingFactor PersistenceScalingFactorList OPTIONAL, + sync-UL-InfoForE-RUCCH SYNC-UL-InfoForE-RUCCH OPTIONAL, + prach-information PRACH-Information-LCR-List OPTIONAL + } + } +} + +E-RUCCH-Info-TDD128 ::= SEQUENCE { + t-RUCCH ENUMERATED { ms20, ms40, ms60, ms80, ms120, + ms160, ms200, ms240, ms280, ms320, + ms400, ms500, ms600, ms800, ms1000, + ms2000 } OPTIONAL, + n-RUCCH INTEGER (0..7) OPTIONAL, + t-WAIT ENUMERATED { everyEDCHTTI, ms40, ms80, ms160, + ms320, ms640, ms1000, ms2000 } OPTIONAL, + t-SI ENUMERATED { everyEDCHTTI, ms20, ms40, ms60, ms80, + ms160, ms200 } OPTIONAL, + extendedEstimationWindow INTEGER (2..5) OPTIONAL, + e-RUCCH-AccessServiceClass E-RUCCH-AccessServiceClass OPTIONAL, + e-RUCCH-PersistenceScalingFactor PersistenceScalingFactorList OPTIONAL, + sync-UL-InfoForE-RUCCH SYNC-UL-InfoForE-RUCCH OPTIONAL, + prach-information PRACH-Information-LCR-List OPTIONAL +} + +E-TFC-Boost-Info-r7 ::= SEQUENCE { + e-TFCI-Boost INTEGER (0..127), + delta-T2TP INTEGER (0..6) OPTIONAL +} + +E-TFCI-TableIndex ::= INTEGER (0..1) + +E-TFCS-Info ::= SEQUENCE { + reference-Beta-QPSK-List SEQUENCE (SIZE (1..8)) OF Reference-Beta-QPSK, + reference-Beta-16QAM-List SEQUENCE (SIZE (1..8)) OF Reference-Beta-16QAM +} + +EARFCN ::= INTEGER (0..65535) + +EARFCNExtension ::= INTEGER (65536..262143) + +EARFCNRange ::= SEQUENCE { +-- If the IE earfcn is set to a value of 65535, then the EARFCN +-- value for that instance shall be read from the IE earfcnExt. + earfcn EARFCN, + earfcnExt EARFCNExtension OPTIONAL +} + +EnablingDelay ::= ENUMERATED { + radio-frames-0, + radio-frames-1, + radio-frames-2, + radio-frames-4, + radio-frames-8, + radio-frames-16, + radio-frames-32, + radio-frames-64, + radio-frames-128, + spare7, + spare6, + spare5, + spare4, + spare3, + spare2, + spare1 } + +EnablingDelay-TDD128 ::= ENUMERATED { + radio-frames-0, radio-frames-1, radio-frames-2, + radio-frames-4, radio-frames-8, radio-frames-16, + radio-frames-32, radio-frames-64, radio-frames-128, + spare7, spare6, spare5, spare4, spare3, spare2, + infinity } + +EXT-UL-TimingAdvance ::= SEQUENCE { + modeSpecificInfo CHOICE { + tdd384 SEQUENCE { + ex-ul-TimingAdvance INTEGER (0..255) + }, + tdd768 SEQUENCE { + ex-ul-TimingAdvance INTEGER (0..511) + } + } +} + +FACH-PCH-Information ::= SEQUENCE { + transportFormatSet TransportFormatSet, + transportChannelIdentity TransportChannelIdentity, + ctch-Indicator BOOLEAN +} + +FACH-PCH-InformationList ::= SEQUENCE (SIZE (1..maxFACHPCH)) OF + FACH-PCH-Information + +Fallback-R99-PRACH-info-IEs::= SEQUENCE { + cCCH-Fallback BOOLEAN, + dCCH-Fallback BOOLEAN +} + +Feedback-cycle ::= ENUMERATED { + fc0, fc2, fc4, fc8, fc10, fc20, fc40, fc80, fc160} + +Feedback-cycle-r7 ::= ENUMERATED { + fc0, fc2, fc4, fc8, fc10, fc20, fc40, fc80, fc160, + fc16, fc32, fc64, spare4, spare3, spare2, spare1 } + +FPACH-Info-r4 ::= SEQUENCE { + timeslot TimeslotNumber-LCR-r4, + channelisationCode TDD-FPACH-CCode16-r4, + midambleShiftAndBurstType MidambleShiftAndBurstType-LCR-r4, + wi Wi-LCR +} + +F-TPICH-InfoNewServingCell ::= SEQUENCE { + f-tpich-Information F-TPICH-Information +} + +F-TPICH-InfoOtherCell ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + f-tpich-Info CHOICE { + f-tpich-Information F-TPICH-Information, + releaseIndicator NULL + } +} + +F-TPICH-Information ::= SEQUENCE { + ftpich-SlotFormat FTPICH-SlotFormat, + ftpich-CodeNumber INTEGER (0..255), + ftpich-FrameOffset FTPICH-FrameOffset +} + +F-TPICH-ReconfigurationInfo ::= SEQUENCE { + f-tpich-InfoNewServingCell F-TPICH-InfoNewServingCell OPTIONAL, + f-tpich-InfoOtherCellList SEQUENCE (SIZE (1..maxRL)) OF + F-TPICH-InfoOtherCell OPTIONAL +} + +-- Actual value FTPICH-FrameOffset = IE value * 256 +FTPICH-FrameOffset ::= INTEGER (0..149) + +FTPICH-SlotFormat ::= INTEGER (0..9) + +FreqIndexListForEnhancedMeas ::= SEQUENCE (SIZE (1..maxFreqMeasWithoutCM)) OF + FrequencyIndexForEnhancedMeas + +FrequencyInfo ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd FrequencyInfoFDD, + tdd FrequencyInfoTDD } +} + +FrequencyInfoFDD ::= SEQUENCE { + uarfcn-UL UARFCN OPTIONAL, + uarfcn-DL UARFCN +} + +FrequencyInfoTDD ::= SEQUENCE { + uarfcn-Nt UARFCN +} + +FrequencyIndexForEnhancedMeas ::= INTEGER (0..maxCellMeas-1) + +HappyBit-DelayCondition ::= ENUMERATED { + ms2, ms10, ms20, ms50, ms100, ms200, ms500, ms1000 } + +HARQ-Preamble-Mode ::= INTEGER (0..1) + +HS-ChannelisationCode-LCR ::= ENUMERATED { + cc16-1, cc16-2, cc16-3, cc16-4, + cc16-5, cc16-6, cc16-7, cc16-8, + cc16-9, cc16-10, cc16-11, cc16-12, + cc16-13, cc16-14, cc16-15, cc16-16 } + +HS-ChannelisationCodeSetInfo-LCR ::= SEQUENCE { + startCode HS-ChannelisationCode-LCR, + stopCode HS-ChannelisationCode-LCR +} + +HS-DSCH-CommonSystemInformation ::= SEQUENCE { + ccch-MappingInfo CommonRBMappingInfo, + srb1-MappingInfo CommonRBMappingInfo OPTIONAL, + common-MAC-ehs-ReorderingQueueList Common-MAC-ehs-ReorderingQueueList, + hs-scch-SystemInfo HS-SCCH-SystemInfo, + harq-SystemInfo HARQ-Info, + common-H-RNTI-information SEQUENCE (SIZE (1..maxCommonHRNTI)) OF + H-RNTI, + bcchSpecific-H-RNTI H-RNTI +} + +HS-DSCH-CommonSystemInformation-TDD128 ::= SEQUENCE { + ccch-MappingInfo CommonRBMappingInfo, + srb1-MappingInfo CommonRBMappingInfo OPTIONAL, + common-MAC-ehs-ReorderingQueueList Common-MAC-ehs-ReorderingQueueList, + hs-scch-SystemInfo-tdd128 HS-SCCH-SystemInfo-TDD128, + harq-SystemInfo HARQ-Info, + hs-pdsch-MidambleConfiguration HS-PDSCH-Midamble-Configuration-TDD128, + common-H-RNTI-information SEQUENCE (SIZE (1..maxCommonHRNTI)) OF H-RNTI, + bcchSpecific-H-RNTI H-RNTI +} + +HS-DSCH-DrxBurstFach ::= ENUMERATED { + f1, f2, f4, f8, f16, spare3, spare2, spare1 } + +HS-DSCH-DrxCellfach-info ::= SEQUENCE { + t-321 T-321, + hs-dsch-DrxCycleFach HS-DSCH-DrxCycleFach, + hs-dsch-DrxBurstFach HS-DSCH-DrxBurstFach, + drxInterruption-hs-dsch BOOLEAN +} + +HS-DSCH-DrxCellfach-info-TDD128 ::= SEQUENCE { + t-321 T-321, + hs-dsch-DrxCycleFach HS-DSCH-DrxCycleFach, + hs-dsch-DrxBurstFach HS-DSCH-DrxBurstFach +} + +HS-DSCH-DrxCellfach-SecondDrx-info ::= SEQUENCE { + hs-dsch-SecondDrx-CycleFach HS-DSCH-SecondDrx-CycleFach, + drx-level CHOICE { + one-level-DRX SEQUENCE { + hs-dsch-Second-Rx-BurstFach HS-DSCH-Second-Rx-BurstFach OPTIONAL, + t329 T-329 OPTIONAL + }, + two-level-DRX SEQUENCE { + t328 T-328 OPTIONAL, + hs-dsch-First-Rx-BurstFach HS-DSCH-First-Rx-BurstFach OPTIONAL, + hs-dsch-First-Drx-CycleFach HS-DSCH-First-Drx-CycleFach OPTIONAL, + hs-dsch-Second-Rx-BurstFach HS-DSCH-Second-Rx-BurstFach OPTIONAL, + t329 T-329 OPTIONAL + } + } +} + +HS-DSCH-DrxCycleFach ::= ENUMERATED { + f4, f8, f16, f32 } + +HS-DSCH-First-Drx-CycleFach ::= ENUMERATED { + f2, f4, f8, f16, f32, f64 } + +HS-DSCH-First-Rx-BurstFach ::= ENUMERATED { + f0p4, f0p8 } + +HS-DSCH-PagingSystemInformation ::= SEQUENCE { + dlScramblingCode SecondaryScramblingCode OPTIONAL, + pich-ForHSDPASupportedPagingList SEQUENCE (SIZE (1..maxSCCPCH)) OF + PICH-ForHSDPASupportedPaging, + numberOfPcchTransmissions INTEGER(1..5), + transportBlockSizeList SEQUENCE (SIZE (1..2)) OF + TransportBlockSizeIndex +} + +HS-DSCH-PagingSystemInformation-TDD128 ::= SEQUENCE { + pich-ForHsdschList SEQUENCE (SIZE (1..maxSCCPCH)) OF + PICH-ForHSDPASupportedPaging-TDD128, + dtch-DCCH-reception-window-size INTEGER (1..16), + pcch-InformationList PCCH-InformationList OPTIONAL +} + +HS-DSCH-RxPatternList-TDD128 ::= SEQUENCE (SIZE (1..maxRxPatternForHSDSCH-TDD128)) OF + SEQUENCE { + repetitionPeriodAndLength RepetitionPeriodAndLengthForSPS +} + +HS-DSCH-Second-Rx-BurstFach ::= ENUMERATED { + f1, f2 } + +HS-DSCH-SecondDrx-CycleFach ::= ENUMERATED { + f4, f8, f16, f32, f64, f128, f256, f512 } + +HS-DSCH-TBSizeTable ::= ENUMERATED { octetAligned } + +HS-DSCH-TbsList-TDD128 ::= SEQUENCE (SIZE (1..maxTbsForHSDSCH-TDD128)) OF + SEQUENCE { + hs-dsch-TBSizeIndex INTEGER (1..63) +} + +HS-DSCH-SPS-Information-TDD128 ::= SEQUENCE { + hs-dsch-SPS-Operation CHOICE { + continue NULL, + newOperation HS-DSCH-SPS-NewOperation-TDD128 + } +} + +HS-DSCH-SPS-NewOperation-TDD128 ::= SEQUENCE { + hs-dsch-TbsList HS-DSCH-TbsList-TDD128 OPTIONAL, + hs-dsch-RxPatternList HS-DSCH-RxPatternList-TDD128 OPTIONAL, + hARQInfoForSPS SEQUENCE { + numberOfProcesses INTEGER (1..8), + memorySize HARQMemorySize + } OPTIONAL, + hs-sich-List HS-SICH-List-TDD128, + initialSPSInfoForHSDSCH SEQUENCE { + timeslotInfo BIT STRING (SIZE (5)), + codeResourceInfo HS-ChannelisationCodeSetInfo-LCR, + activationTime ActivationTime, + sfnNum INTEGER (0..1), + initialRxPatternIndex INTEGER (0..maxRxPatternForHSDSCH-TDD128-1), + initialTfsIndex INTEGER (0..maxTbsForHSDSCH-TDD128-1), + modulation ENUMERATED { modQPSK, mod16QAM }, + hs-sich-Index INTEGER (0..maxHSSICH-TDD128-1) + } OPTIONAL +} + +HS-PDSCH-Midamble-Configuration-TDD128 ::= SEQUENCE { + midambleAllocationMode CHOICE{ + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble INTEGER (0..15) + }, + -- Actual value midambleConfiguration = IE value * 2 + midambleConfiguration INTEGER (1..8) +} + +HS-SCCH-Info ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + hS-SCCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-Codes, + dl-ScramblingCode SecondaryScramblingCode OPTIONAL + }, + tdd CHOICE { + tdd384 SEQUENCE { + nack-ack-power-offset INTEGER (-7..8), + hs-SICH-PowerControl-Info HS-SICH-Power-Control-Info-TDD384, + hS-SCCH-SetConfiguration SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-TDD384 + }, + tdd128 SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-TDD128 + } + } +} + +HS-SCCH-Info-r6 ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + hS-SCCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-Codes, + dl-ScramblingCode SecondaryScramblingCode OPTIONAL + }, + tdd CHOICE { + tdd384 SEQUENCE { + nack-ack-power-offset INTEGER (-7..8), + hs-SICH-PowerControl-Info HS-SICH-Power-Control-Info-TDD384, + dhs-sync DHS-Sync OPTIONAL, + bler-target Bler-Target, + hS-SCCH-SetConfiguration SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-TDD384-r6 + }, + tdd128 SEQUENCE { + nack-ack-power-offset INTEGER (-7..8), + power-level-HSSICH INTEGER (-120..-58), + tpc-step-size ENUMERATED { s1, s2, s3 , spare1 }, + bler-target Bler-Target, + hS-SCCH-SetConfiguration SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-TDD128-r6 + } + } + } +} + +HS-SCCH-Info-r7 ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + hS-SCCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-Codes, + dl-ScramblingCode SecondaryScramblingCode OPTIONAL + }, + tdd CHOICE { + tdd384 SEQUENCE { + nack-ack-power-offset INTEGER (-7..8), + hs-SICH-PowerControl-Info HS-SICH-Power-Control-Info-TDD384, + dhs-sync DHS-Sync OPTIONAL, + bler-target Bler-Target, + hS-SCCH-SetConfiguration SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-TDD384-r6 + }, + tdd768 SEQUENCE { + nack-ack-power-offset INTEGER (-7..8), + hs-SICH-PowerControl-Info HS-SICH-Power-Control-Info-TDD768, + dhs-sync DHS-Sync OPTIONAL, + bler-target Bler-Target, + hS-SCCH-SetConfiguration SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-TDD768 + }, + tdd128 SEQUENCE { + nack-ack-power-offset INTEGER (-7..8), + power-level-HSSICH INTEGER (-120..-58), + tpc-step-size ENUMERATED { s1, s2, s3 , spare1 }, + bler-target Bler-Target, + powerControlGAP PowerControlGAP OPTIONAL, + pathlossCompensationSwitch BOOLEAN OPTIONAL, + hS-SCCH-SetConfiguration SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-TDD128-r6 + } + } + } +} + +HS-SCCH-Info-r8-ext ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd NULL, + tdd CHOICE { + tdd384 NULL, + tdd768 NULL, + tdd128 SEQUENCE { + hS-SCCH-tpc-step-size ENUMERATED { s1, s2, s3, spare1 } OPTIONAL + } + } + } +} + +HS-SCCH-Info-r9 ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + hS-SCCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-Codes, + dl-ScramblingCode SecondaryScramblingCode OPTIONAL + }, + tdd CHOICE { + tdd384 SEQUENCE { + nack-ack-power-offset INTEGER (-7..8), + hs-SICH-PowerControl-Info HS-SICH-Power-Control-Info-TDD384, + dhs-sync DHS-Sync OPTIONAL, + bler-target Bler-Target, + hS-SCCH-SetConfiguration SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-TDD384-r6 + }, + tdd768 SEQUENCE { + nack-ack-power-offset INTEGER (-7..8), + hs-SICH-PowerControl-Info HS-SICH-Power-Control-Info-TDD768, + dhs-sync DHS-Sync OPTIONAL, + bler-target Bler-Target, + hS-SCCH-SetConfiguration SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-TDD768 + }, + tdd128 SEQUENCE { + nack-ack-power-offset INTEGER (-7..8), + power-level-HSSICH INTEGER (-120..-58), + tpc-step-size ENUMERATED { s1, s2, s3, spare1 }, + bler-target Bler-Target, + hS-SCCH-tpc-step-size ENUMERATED { s1, s2, s3, spare1 } OPTIONAL, + powerControlGAP PowerControlGAP OPTIONAL, + pathlossCompensationSwitch BOOLEAN OPTIONAL, + hS-SCCH-SetConfiguration SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-TDD128-r6 + } + } + } +} + +HS-SCCH-DRX-InactivityThreshold-TDD128 ::= ENUMERATED { + sub-frames-1, sub-frames-2, sub-frames-4, + sub-frames-8, sub-frames-16, sub-frames-32, + sub-frames-64, sub-frames-128, sub-frames-256, + sub-frames-512, + spare6, spare5, spare4, spare3, spare2, + infinity } + +HS-SCCH-DRX-Info-TDD128 ::= SEQUENCE { + hS-SCCH-DRX-Cycle ControlChannelDRXCycle-TDD128, + hS-SCCH-DRX-InactivityThreshold HS-SCCH-DRX-InactivityThreshold-TDD128 OPTIONAL, + hS-SCCH-DRX-Offset INTEGER (0..63) +} + +HS-SCCH-Codes ::= INTEGER (0..127) + +HS-SCCH-Less-NewOperation ::= SEQUENCE { + hs-pdsch-CodeIndex INTEGER (1..15), + hs-scch-LessTFS HS-SCCH-LessTFSList +} + +HS-SCCH-LessInfo-r7 ::= SEQUENCE { + hs-scchLessOperation CHOICE { + continue NULL, + newOperation HS-SCCH-Less-NewOperation + } +} + +HS-SCCH-LessTFSList ::= SEQUENCE (SIZE (1..maxHS-SCCHLessTrBlk)) OF + SEQUENCE { + hs-scch-LessTFSI INTEGER (1..90), + hs-scch-LessSecondCodeSupport BOOLEAN +} + +HS-SCCH-SystemInfo ::= SEQUENCE { + dl-ScramblingCode SecondaryScramblingCode OPTIONAL, + hS-SCCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-Codes +} + +HS-SCCH-SystemInfo-TDD128 ::= SEQUENCE { + hs-SCCH-SetConfiguration SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-TDD128-r6, + power-level-HSSICH INTEGER (-120..-58), + nack-ack-power-offset INTEGER (-7..8), + tpc-step-size ENUMERATED { s1, s2, s3 , spare1 }, + bler-target Bler-Target, + power-control-gap INTEGER (1..255) OPTIONAL, + pathloss-compensation-switch BOOLEAN OPTIONAL +} + +HS-SCCH-TDD128 ::= SEQUENCE { + timeslotNumber TimeslotNumber-LCR-r4, + firstChannelisationCode HS-ChannelisationCode-LCR, + secondChannelisationCode HS-ChannelisationCode-LCR, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble INTEGER(0..15) + }, + -- Actual value midambleConfiguration = IE value * 2 + midambleConfiguration INTEGER (1..8), + bler-target Bler-Target, + hs-sich-configuration HS-SICH-Configuration-TDD128 +} + +HS-SCCH-TDD128-r6 ::= SEQUENCE { + timeslotNumber TimeslotNumber-LCR-r4, + firstChannelisationCode HS-ChannelisationCode-LCR, + secondChannelisationCode HS-ChannelisationCode-LCR, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble INTEGER(0..15) + }, + -- Actual value midambleConfiguration = IE value * 2 + midambleConfiguration INTEGER (1..8), + hs-sich-configuration HS-SICH-Configuration-TDD128-r6 +} + +--for TDD128 Multi-Carrier +HS-SCCH-TDD128-MultiCarrier ::= SEQUENCE { + uarfcn-HS-SCCH-Rx UARFCN, + timeslotNumber TimeslotNumber-LCR-r4, + firstChannelisationCode HS-ChannelisationCode-LCR, + secondChannelisationCode HS-ChannelisationCode-LCR, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble INTEGER(0..15) + }, + -- Actual value midambleConfiguration = IE value * 2 + midambleConfiguration INTEGER (1..8), + bler-target Bler-Target, + hs-sich-configuration HS-SICH-Configuration-TDD128 +} + +HS-SICH-Configuration-TDD128 ::= SEQUENCE { + timeslotNumber TimeslotNumber-LCR-r4, + channelisationCode HS-ChannelisationCode-LCR, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftLong + } + }, + -- Actual value midambleConfiguration = IE value * 2 + midambleConfiguration INTEGER (1..8), + nack-ack-power-offset INTEGER (-7..8), + power-level-HSSICH INTEGER (-120..-58), + tpc-step-size ENUMERATED { s1, s2, s3 , spare1} +} + +HS-SICH-Configuration-TDD128-r6 ::= SEQUENCE { + timeslotNumber TimeslotNumber-LCR-r4, + channelisationCode HS-ChannelisationCode-LCR, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftLong + } + }, + -- Actual value midambleConfiguration = IE value * 2 + midambleConfiguration INTEGER (1..8) +} + +HS-SICH-List-TDD128 ::= SEQUENCE (SIZE (1..maxHSSICH-TDD128)) OF + CHOICE { + implicit SEQUENCE { + hS-SCCH-Index INTEGER (0..maxHSSCCHs-1) + }, + explicit SEQUENCE { + hS-SICH-Info HS-SICH-Configuration-TDD128-r6 + } +} + +--The order of the list corresponds to the order of HS-SCCHs in HS-SCCH info +HS-SICH-ReferenceSignalInfoList ::= SEQUENCE ( SIZE (1.. maxHSSCCHs)) OF + SEQUENCE { + -- Actual value midambleConfiguration = IE value * 2 + midambleConfiguration INTEGER (1..8), + midambleShift INTEGER (0..15), + timeSlot INTEGER (1..5) +} + +HS-SCCH-TDD384 ::= SEQUENCE { + timeslotNumber TimeslotNumber, + channelisationCode DL-TS-ChannelisationCode, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftLong + } + }, + midambleconfiguration MidambleConfigurationBurstType1and3, + bler-target Bler-Target, + hs-sich-configuration HS-SICH-Configuration-TDD384 +} + +HS-SCCH-TDD384-r6 ::= SEQUENCE { + timeslotNumber TimeslotNumber, + channelisationCode DL-TS-ChannelisationCode, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftLong + } + }, + midambleconfiguration MidambleConfigurationBurstType1and3, + hs-sich-configuration HS-SICH-Configuration-TDD384 +} + +HS-SCCH-TDD768 ::= SEQUENCE { + timeslotNumber TimeslotNumber, + channelisationCode DL-TS-ChannelisationCode-VHCR, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftLong + } + }, + midambleconfiguration MidambleConfigurationBurstType1and3, + hs-sich-configuration HS-SICH-Configuration-TDD768 +} + +HS-SICH-Configuration-TDD384 ::= SEQUENCE { + timeslotNumber TimeslotNumber, + channelisationCode DL-TS-ChannelisationCode, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftLong + } + }, + midambleconfiguration MidambleConfigurationBurstType1and3 +} + +HS-SICH-Configuration-TDD768 ::= SEQUENCE { + timeslotNumber TimeslotNumber, + channelisationCode DL-TS-ChannelisationCode-VHCR, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftLong + } + }, + midambleconfiguration MidambleConfigurationBurstType1and3 +} + +HS-SICH-Power-Control-Info-TDD384 ::= SEQUENCE { + -- Actual value ul-target-SIR = IE value * 0.5 + ul-target-SIR INTEGER (-22..40), + -- Note: IE 'ConstantValue' is used (instead of IE 'ConstantValueTDD') to keep + -- compatibility with REL-5 + hs-sich-ConstantValue ConstantValue +} + +HS-SICH-Power-Control-Info-TDD768 ::= SEQUENCE { + -- Actual value ul-target-SIR = IE value * 0.5 + ul-target-SIR INTEGER (-22..40), + -- Note: IE 'ConstantValue' is used (instead of IE 'ConstantValueTDD') to keep + -- compatibility with REL-5 + hs-sich-ConstantValue ConstantValue +} + +IndividualTimeslotInfo ::= SEQUENCE { + timeslotNumber TimeslotNumber, + tfci-Existence BOOLEAN, + midambleShiftAndBurstType MidambleShiftAndBurstType +} + +IndividualTimeslotInfo-VHCR ::= SEQUENCE { + timeslotNumber TimeslotNumber, + tfci-Existence BOOLEAN, + midambleShiftAndBurstType-VHCR MidambleShiftAndBurstType-VHCR +} + +IndividualTimeslotInfo-LCR-r4 ::= SEQUENCE { + timeslotNumber TimeslotNumber-LCR-r4, + tfci-Existence BOOLEAN, + midambleShiftAndBurstType MidambleShiftAndBurstType-LCR-r4, + modulation ENUMERATED { mod-QPSK, mod-8PSK }, + ss-TPC-Symbols ENUMERATED { zero, one, sixteenOverSF }, + additionalSS-TPC-Symbols INTEGER(1..15) OPTIONAL +} + +IndividualTimeslotInfo-LCR-r4-ext ::= SEQUENCE { +-- timeslotNumber and tfci-Existence is taken from IndividualTimeslotInfo. +-- midambleShiftAndBurstType in IndividualTimeslotInfo shall be ignored. + midambleShiftAndBurstType MidambleShiftAndBurstType-LCR-r4, + modulation ENUMERATED { mod-QPSK, mod-8PSK }, + ss-TPC-Symbols ENUMERATED { zero, one, sixteenOverSF } +} + +IndividualTimeslotInfo-r7 ::= SEQUENCE { + timeslotNumber TimeslotNumber, + tfci-Existence BOOLEAN, + midambleShiftAndBurstType MidambleShiftAndBurstType-r7 +} + +IndividualTS-Interference ::= SEQUENCE { + timeslot TimeslotNumber, + ul-TimeslotInterference TDD-UL-Interference +} + +IndividualTS-InterferenceList ::= SEQUENCE (SIZE (1..maxTS)) OF + IndividualTS-Interference + +ITP ::= ENUMERATED { + mode0, mode1 } + +NidentifyAbort ::= INTEGER (1..128) + +MAC-DTX-Cycle-10ms ::= ENUMERATED { + sub-frames-5, + sub-frames-10, + sub-frames-20, + spare1 } + +MAC-DTX-Cycle-2ms ::= ENUMERATED { + sub-frames-1, + sub-frames-4, + sub-frames-5, + sub-frames-8, + sub-frames-10, + sub-frames-16, + sub-frames-20, + spare1 } + +MAC-InactivityThreshold ::= ENUMERATED { + e-dch-tti-1, + e-dch-tti-2, + e-dch-tti-4, + e-dch-tti-8, + e-dch-tti-16, + e-dch-tti-32, + e-dch-tti-64, + e-dch-tti-128, + e-dch-tti-256, + e-dch-tti-512, + e-dch-tti-Infinity, + spare5, + spare4, + spare3, + spare2, + spare1 } + +MaxAllowedUL-TX-Power ::= INTEGER (-50..33) + +MaxAvailablePCPCH-Number ::= INTEGER (1..64) +MaxPowerIncrease-r4 ::= INTEGER (0..3) + +MaxTFCI-Field2Value ::= INTEGER (1..1023) + +Measurement-Feedback-Info ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + measurementPowerOffset MeasurementPowerOffset, + feedback-cycle Feedback-cycle, + cqi-RepetitionFactor CQI-RepetitionFactor, + deltaCQI DeltaCQI + }, + tdd NULL + } +} + +Measurement-Feedback-Info-r7 ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + measurementPowerOffset MeasurementPowerOffset, + feedback-cycle Feedback-cycle-r7, + cqi-RepetitionFactor CQI-RepetitionFactor, + deltaCQI DeltaCQI + }, + tdd NULL + } +} + +Measurement-Feedback-Info-r11 ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + measurementPowerOffset MeasurementPowerOffset, + feedback-cycle Feedback-cycle-r7, + cqi-RepetitionFactor CQI-RepetitionFactor, + cqi-RepetitionFactor-Assisting CQI-RepetitionFactor OPTIONAL, + deltaCQI DeltaCQI-r11 + }, + tdd NULL + } +} + +Measurement-Feedback-Info-ConcurrentTTI ::= SEQUENCE { + feedback-cycle Feedback-cycle-r7 OPTIONAL, + cqi-RepetitionFactor CQI-RepetitionFactor OPTIONAL, + deltaCQI DeltaCQI OPTIONAL +} + +MidambleConfigurationBurstType1and3 ::= ENUMERATED {ms4, ms8, ms16} + +MidambleConfigurationBurstType1 ::= ENUMERATED {ms4, ms8, ms16} + +MidambleConfigurationBurstType2 ::= ENUMERATED {ms3, ms6} + +MidambleConfigurationBurstType2-VHCR ::= ENUMERATED {ms4, ms8} + +MidambleShiftAndBurstType ::= SEQUENCE { + burstType CHOICE { + type1 SEQUENCE { + midambleConfigurationBurstType1and3 MidambleConfigurationBurstType1and3, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftLong + } + } + }, + type2 SEQUENCE { + midambleConfigurationBurstType2 MidambleConfigurationBurstType2, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftShort + } + } + }, + type3 SEQUENCE { + midambleConfigurationBurstType1and3 MidambleConfigurationBurstType1and3, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftLong + } + } + } + } +} + +MidambleShiftAndBurstType-VHCR ::= SEQUENCE { + burstType CHOICE { + type1 SEQUENCE { + midambleConfigurationBurstType1and3 MidambleConfigurationBurstType1and3, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftLong + } + } + }, + type2 SEQUENCE { + midambleConfigurationBurstType2 MidambleConfigurationBurstType2-VHCR, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftShort-VHCR + } + } + }, + type3 SEQUENCE { + midambleConfigurationBurstType1and3 MidambleConfigurationBurstType1and3, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftLong + } + } + }, + -- mbsfnBurstType4 is only used DL + mbsfnBurstType4 NULL + } +} + +MidambleShiftAndBurstType-r7 ::= SEQUENCE { + burstType CHOICE { + type1 SEQUENCE { + midambleConfigurationBurstType1and3 MidambleConfigurationBurstType1and3, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftLong + } + } + }, + type2 SEQUENCE { + midambleConfigurationBurstType2 MidambleConfigurationBurstType2, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftShort + } + } + }, + type3 SEQUENCE { + midambleConfigurationBurstType1and3 MidambleConfigurationBurstType1and3, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftLong + } + } + }, + -- mbsfnBurstType4 is only used DL + mbsfnBurstType4 NULL + } +} + +MidambleShiftAndBurstType-DL ::= SEQUENCE { + burstType CHOICE { + type1 SEQUENCE { + midambleConfigurationBurstType1and3 MidambleConfigurationBurstType1and3, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftLong + } + } + }, + type2 SEQUENCE { + midambleConfigurationBurstType2 MidambleConfigurationBurstType2, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftShort + } + } + } + } +} + +MidambleShiftAndBurstType-DL-VHCR ::= SEQUENCE { + burstType CHOICE { + type1 SEQUENCE { + midambleConfigurationBurstType1and3 MidambleConfigurationBurstType1and3, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftLong + } + } + }, + type2 SEQUENCE { + midambleConfigurationBurstType2 MidambleConfigurationBurstType2-VHCR, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftShort-VHCR + } + } + } + } +} + +MidambleShiftAndBurstType-LCR-r4 ::= SEQUENCE { + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift INTEGER (0..15) + } + }, + -- Actual value midambleConfiguration = IE value * 2 + midambleConfiguration INTEGER (1..8) +} + +MidambleShiftAndBurstType-EDCH ::= SEQUENCE { + burstType CHOICE { + type1 SEQUENCE { + midambleConfigurationBurstType1 MidambleConfigurationBurstType1, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftLong + } + } + }, + type2 SEQUENCE { + midambleConfigurationBurstType2 MidambleConfigurationBurstType2, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftShort + } + } + } + } +} + +MidambleShiftLong ::= INTEGER (0..15) + + +MidambleShiftShort ::= INTEGER (0..5) + +MidambleShiftShort-VHCR ::= INTEGER (0..7) + +MIMO-N-M-Ratio ::= ENUMERATED { + mnm1-2, mnm2-3, mnm3-4, mnm4-5, mnm5-6, + mnm6-7, mnm7-8, mnm8-9, mnm9-10, mnm1-1 } + +MIMO-Operation ::= ENUMERATED { + start, continue } + +MIMO-Parameters-r7 ::= SEQUENCE { + mimoOperation MIMO-Operation, + mimoN-M-Ratio MIMO-N-M-Ratio OPTIONAL, + mimoPilotConfiguration MIMO-PilotConfiguration OPTIONAL +} + +MIMO4x4-Parameters ::= SEQUENCE { + configurationInfo CHOICE { + continue NULL, + newConfiguration SEQUENCE { + mimo4x4N-M-Ratio MIMO-N-M-Ratio OPTIONAL, + mimo4x4PilotConfiguration MIMO4x4-PilotConfiguration OPTIONAL, + precodingWeightSetRestriction BIT STRING (SIZE (64)) OPTIONAL + } + } +} + +MIMO-Parameters-v7f0ext ::= MIMO-PilotConfiguration-v7f0ext + +MIMO-Parameters-v7g0ext ::= SEQUENCE { + precodingWeightSetRestriction ENUMERATED { true } OPTIONAL +} + +MIMO-Parameters-r8 ::= SEQUENCE { + mimoOperation MIMO-Operation, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + mimoN-M-Ratio MIMO-N-M-Ratio OPTIONAL, + mimoPilotConfiguration MIMO-PilotConfiguration OPTIONAL + }, + tdd CHOICE { + tdd128 SEQUENCE { + mimoSFModeForHSPDSCHDualStream ENUMERATED {sf1, sf1sf16}, + hs-sich-ReferenceSignalInfoList HS-SICH-ReferenceSignalInfoList OPTIONAL + }, + tdd384-tdd768 NULL + } + } +} + +MIMO-Parameters-r9 ::= SEQUENCE { + mimoOperation MIMO-Operation, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + mimoN-M-Ratio MIMO-N-M-Ratio OPTIONAL, + mimoPilotConfiguration MIMO-PilotConfiguration-r9 OPTIONAL, + precodingWeightSetRestriction ENUMERATED { true } OPTIONAL + }, + tdd CHOICE { + tdd128 SEQUENCE { + mimoSFModeForHSPDSCHDualStream ENUMERATED {sf1, sf1sf16}, + hs-sich-ReferenceSignalInfoList HS-SICH-ReferenceSignalInfoList OPTIONAL + }, + tdd384-tdd768 NULL + } + } +} + +MIMO-PilotConfiguration ::= SEQUENCE { + secondCPICH-Pattern CHOICE { + normalPattern NULL, + diversityPattern SEQUENCE { + channelisationCode ChannelisationCode256 + } + } +} + +MIMO-PilotConfiguration-v7f0ext ::= SEQUENCE { + s-cpich-PowerOffset-Mimo S-CPICH-PowerOffset-MIMO OPTIONAL +} + +MIMO-PilotConfiguration-r9 ::= SEQUENCE { + secondCPICH-Pattern CHOICE { + normalPattern NULL, + diversityPattern SEQUENCE { + channelisationCode ChannelisationCode256, + s-cpich-PowerOffset-Mimo S-CPICH-PowerOffset-MIMO OPTIONAL + } + } +} + +MIMO4x4-PilotConfiguration ::= SEQUENCE { + antenna2 MIMO-PilotConfiguration-r9 OPTIONAL, + antenna3And4 Antenna3And4 OPTIONAL +} + +MinimumSpreadingFactor ::= ENUMERATED { + sf4, sf8, sf16, sf32, + sf64, sf128, sf256 } + +MinReduced-E-DPDCH-GainFactor ::= ENUMERATED { + m8-15, m11-15, m15-15, m21-15, m30-15, + m42-15, m60-15, m84-15 } + +MultiCodeInfo ::= INTEGER (1..16) + +-- These IEs are applied for 1.28 Mcps TDD only +Multi-frequencyInfo-LCR-r7 ::= SEQUENCE { + -- If the secondary frequency is present, it indicates working frequency + secondFrequencyInfo FrequencyInfoTDD OPTIONAL, + fPachFrequencyInfo FrequencyInfoTDD OPTIONAL, + --If a cell UpPCH uses other uplink service timeslot, it indicates the UpPCH position + upPCHpositionInfo UpPCHposition-LCR OPTIONAL +} + +MultiflowCellType ::= ENUMERATED { intra-nodeB, inter-nodeB } + +MultiflowConfigurationInfo ::= SEQUENCE { + cellType MultiflowCellType, + timeReferenceCell ENUMERATED { true } OPTIONAL +} + +MU-MIMO-Info-TDD128 ::= CHOICE { + continue NULL, + newConfiguration SEQUENCE { + mu-MIMO-Operation MU-MIMO-Operation, + standaloneMidambleInfo StandaloneMidambleInfo-TDD128 OPTIONAL + } +} + +MU-MIMO-Operation ::= ENUMERATED { + uL, dL, uLandDL, spare } + +N-EOT ::= INTEGER (0..7) + +N-GAP ::= ENUMERATED { + f2, f4, f8 } + +N-PCH ::= INTEGER (1..8) + +N-StartMessage ::= INTEGER (1..8) + +NB01 ::= INTEGER (0..50) + +NewTiming ::= SEQUENCE { + enablingDelay EnablingDelay, + ue-dtx-drx-Offset UE-DTX-DRX-Offset +} + +NF-Max ::= INTEGER (1..64) + +NodeB-Trigger-HS-DPCCH-Transmission ::= SEQUENCE { + hs-dpcch-TransmitContinuationOffset ENUMERATED { + ms10, ms20, ms30, ms40, ms80, ms160, + ms320, ms800} OPTIONAL +} + +Non-ScheduledTransGrantInfoTDD ::= CHOICE { + tdd384-768 SEQUENCE { + timeslotResourceRelatedInfo BIT STRING (SIZE (13)), + powerResourceRelatedInfo INTEGER (1..32), + activationTime ActivationTime, + repetitionPeriodAndLength RepetitionPeriodAndLength OPTIONAL, + codeResourceInfo UL-TS-ChannelisationCode + }, + tdd128 SEQUENCE { + n-E-UCCH INTEGER (1..8) OPTIONAL, + n-E-HICH INTEGER (4..15) OPTIONAL, + timeslotResourceRelatedInfo BIT STRING (SIZE (5)), + powerResourceRelatedInfo INTEGER (1..32), + activationTime ActivationTime, + sfnNum INTEGER (0..1), + repetitionPeriodAndLength RepetitionPeriodAndLength OPTIONAL, + codeResourceInfo UL-TS-ChannelisationCode, + e-HICH-Info SEQUENCE { + timeslotNumber TimeslotNumber-LCR-r4, + channelisation-Code HS-ChannelisationCode-LCR, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + ueSpecificMidamble INTEGER (0..15) + }, + -- Actual value midambleConfiguration = IE value * 2 + midambleConfiguration INTEGER (1..8), + signatureSequenceGroupIndex INTEGER (0..19) + } + } +} + +Non-ScheduledTransGrantInfoTDD-ext ::= CHOICE { + tdd384-768 NULL, + tdd128 SEQUENCE { + t-SI-nst ENUMERATED { + everyEDCHTTI, ms20, ms40, ms60, ms80, ms160, + ms200 } OPTIONAL + } +} + +Non-ScheduledTransGrantInfoTDD-r9 ::= CHOICE { + tdd384-768 SEQUENCE { + timeslotResourceRelatedInfo BIT STRING (SIZE (13)), + powerResourceRelatedInfo INTEGER (1..32), + activationTime ActivationTime, + repetitionPeriodAndLength RepetitionPeriodAndLength OPTIONAL, + codeResourceInfo UL-TS-ChannelisationCode + }, + tdd128 SEQUENCE { + n-E-UCCH INTEGER (1..8) OPTIONAL, + n-E-HICH INTEGER (4..15) OPTIONAL, + timeslotResourceRelatedInfo BIT STRING (SIZE (5)), + powerResourceRelatedInfo INTEGER (1..32), + activationTime ActivationTime, + sfnNum INTEGER (0..1), + repetitionPeriodAndLength RepetitionPeriodAndLength OPTIONAL, + codeResourceInfo UL-TS-ChannelisationCode, + e-HICH-Info SEQUENCE { + timeslotNumber TimeslotNumber-LCR-r4, + channelisation-Code HS-ChannelisationCode-LCR, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + ueSpecificMidamble INTEGER (0..15) + }, + -- Actual value midambleConfiguration = IE value * 2 + midambleConfiguration INTEGER (1..8), + signatureSequenceGroupIndex INTEGER (0..19) + }, + t-SI-nst ENUMERATED { + everyEDCHTTI, ms20, ms40, ms60, ms80, ms160, + ms200 } OPTIONAL + } +} + +NumberOfDPDCH ::= INTEGER (1..maxDPDCH-UL) + +NumberOfFBI-Bits ::= INTEGER (1..2) + +NumberOfTPC-Bits ::= ENUMERATED { tpc4 } + +OpenLoopPowerControl-TDD ::= SEQUENCE { + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power, + -- alpha, prach-ConstantValue, dpch-ConstantValue and pusch-ConstantValue + -- shall be ignored in 1.28Mcps TDD mode. + alpha Alpha OPTIONAL, + prach-ConstantValue ConstantValueTdd, + dpch-ConstantValue ConstantValueTdd, + pusch-ConstantValue ConstantValueTdd OPTIONAL +} + +OpenLoopPowerControl-IPDL-TDD-r4 ::= SEQUENCE { + ipdl-alpha Alpha, + maxPowerIncrease MaxPowerIncrease-r4 +} + +PagingIndicatorLength ::= ENUMERATED { + pi4, pi8, pi16 } + +PC-Preamble ::= INTEGER (0..7) + +PCCH-InformationList ::= SEQUENCE { + paging-associatedHspdschInfo SEQUENCE (SIZE (1.. maxSCCPCH)) OF + SEQUENCE { + hs-pdsch-MidambleConfiguration HS-PDSCH-Midamble-Configuration-TDD128, + timeslotResourceRelatedInfo BIT STRING (SIZE (6)), + codeResourceInformation CodeResourceInformation-TDD128 + }, + paging-sub-Channel-size INTEGER (1..3), + transportBlockSizeList SEQUENCE (SIZE (1..2)) OF TransportBlockSizeIndex +} + +PCP-Length ::= ENUMERATED { + as0, as8 } + +PCPCH-ChannelInfo ::= SEQUENCE { + pcpch-UL-ScramblingCode INTEGER (0..79), + pcpch-DL-ChannelisationCode INTEGER (0..511), + pcpch-DL-ScramblingCode SecondaryScramblingCode OPTIONAL, + pcp-Length PCP-Length, + ucsm-Info UCSM-Info OPTIONAL +} + +PCPCH-ChannelInfoList ::= SEQUENCE (SIZE (1..maxPCPCHs)) OF + PCPCH-ChannelInfo + +PCPICH-UsageForChannelEst ::= ENUMERATED { + mayBeUsed, + shallNotBeUsed } + +PDSCH-CapacityAllocationInfo ::= SEQUENCE { + -- pdsch-PowerControlInfo is conditional on new-configuration branch below, if this + -- selected the IE is OPTIONAL otherwise it should not be sent + pdsch-PowerControlInfo PDSCH-PowerControlInfo OPTIONAL, + pdsch-AllocationPeriodInfo AllocationPeriodInfo, + configuration CHOICE { + old-Configuration SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + pdsch-Identity PDSCH-Identity + }, + new-Configuration SEQUENCE { + pdsch-Info PDSCH-Info, + pdsch-Identity PDSCH-Identity OPTIONAL + } + } +} + +PDSCH-CapacityAllocationInfo-r4 ::= SEQUENCE { + pdsch-AllocationPeriodInfo AllocationPeriodInfo, + configuration CHOICE { + old-Configuration SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + pdsch-Identity PDSCH-Identity + }, + new-Configuration SEQUENCE { + pdsch-Info PDSCH-Info-r4, + pdsch-Identity PDSCH-Identity OPTIONAL, + pdsch-PowerControlInfo PDSCH-PowerControlInfo OPTIONAL + } + } +} + +PDSCH-CapacityAllocationInfo-r7 ::= SEQUENCE { + pdsch-AllocationPeriodInfo AllocationPeriodInfo, + configuration CHOICE { + old-Configuration SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + pdsch-Identity PDSCH-Identity + }, + new-Configuration SEQUENCE { + pdsch-Info PDSCH-Info-r7, + pdsch-Identity PDSCH-Identity OPTIONAL, + pdsch-PowerControlInfo PDSCH-PowerControlInfo OPTIONAL + } + } +} + +PDSCH-CodeInfo ::= SEQUENCE { + spreadingFactor SF-PDSCH, + codeNumber CodeNumberDSCH, + multiCodeInfo MultiCodeInfo +} + +PDSCH-CodeInfoList ::= SEQUENCE (SIZE (1..maxTFCI-2-Combs)) OF + PDSCH-CodeInfo + +PDSCH-CodeMap ::= SEQUENCE { + spreadingFactor SF-PDSCH, + multiCodeInfo MultiCodeInfo, + codeNumberStart CodeNumberDSCH, + codeNumberStop CodeNumberDSCH +} + +PDSCH-CodeMapList ::= SEQUENCE (SIZE (1..maxPDSCH-TFCIgroups)) OF + PDSCH-CodeMap + +PDSCH-CodeMapping ::= SEQUENCE { + dl-ScramblingCode SecondaryScramblingCode OPTIONAL, + signallingMethod CHOICE { + codeRange CodeRange, + tfci-Range DSCH-MappingList, + explicit-config PDSCH-CodeInfoList, + replace ReplacedPDSCH-CodeInfoList + } +} + +PDSCH-Identity ::= INTEGER (1..hiPDSCHidentities) + +PDSCH-Info ::= SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + commonTimeslotInfo CommonTimeslotInfo OPTIONAL, + pdsch-TimeslotsCodes DownlinkTimeslotsCodes OPTIONAL +} + +PDSCH-Info-r4 ::= SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + commonTimeslotInfo CommonTimeslotInfo OPTIONAL, + tddOption CHOICE { + tdd384 SEQUENCE { + pdsch-TimeslotsCodes DownlinkTimeslotsCodes OPTIONAL + }, + tdd128 SEQUENCE { + pdsch-TimeslotsCodes DownlinkTimeslotsCodes-LCR-r4 OPTIONAL + } + } +} + +PDSCH-Info-r7 ::= SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + commonTimeslotInfo CommonTimeslotInfo OPTIONAL, + tddOption CHOICE { + tdd384 SEQUENCE { + pdsch-TimeslotsCodes DownlinkTimeslotsCodes OPTIONAL + }, + tdd768 SEQUENCE { + pdsch-TimeslotsCodes DownlinkTimeslotsCodes-VHCR OPTIONAL + }, + tdd128 SEQUENCE { + pdsch-TimeslotsCodes DownlinkTimeslotsCodes-LCR-r4 OPTIONAL + } + } +} + +PDSCH-Info-LCR-r4 ::= SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + commonTimeslotInfo CommonTimeslotInfo OPTIONAL, + pdsch-TimeslotsCodes DownlinkTimeslotsCodes-LCR-r4 OPTIONAL +} + +PDSCH-PowerControlInfo ::= SEQUENCE { + tpc-StepSizeTDD TPC-StepSizeTDD OPTIONAL, + ul-CCTrChTPCList UL-CCTrChTPCList OPTIONAL +} + +PDSCH-SHO-DCH-Info ::= SEQUENCE { + dsch-RadioLinkIdentifier DSCH-RadioLinkIdentifier, + rl-IdentifierList RL-IdentifierList OPTIONAL +} + +PDSCH-SysInfo ::= SEQUENCE { + pdsch-Identity PDSCH-Identity, + pdsch-Info PDSCH-Info, + dsch-TFS TransportFormatSet OPTIONAL, + dsch-TFCS TFCS OPTIONAL +} + +PDSCH-SysInfo-VHCR-r7 ::= SEQUENCE { + pdsch-Identity PDSCH-Identity, + pdsch-Info PDSCH-Info-r7, + dsch-TransportChannelsInfo DSCH-TransportChannelsInfo OPTIONAL, + dsch-TFCS TFCS OPTIONAL +} + +PDSCH-SysInfo-HCR-r5 ::= SEQUENCE { + pdsch-Identity PDSCH-Identity, + pdsch-Info PDSCH-Info, + dsch-TransportChannelsInfo DSCH-TransportChannelsInfo OPTIONAL, + dsch-TFCS TFCS OPTIONAL +} + +PDSCH-SysInfo-LCR-r4 ::= SEQUENCE { + pdsch-Identity PDSCH-Identity, + pdsch-Info PDSCH-Info-LCR-r4, + dsch-TFS TransportFormatSet OPTIONAL, + dsch-TFCS TFCS OPTIONAL +} + +PDSCH-SysInfoList ::= SEQUENCE (SIZE (1..maxPDSCH)) OF + PDSCH-SysInfo + +PDSCH-SysInfoList-VHCR-r7 ::= SEQUENCE (SIZE (1..maxPDSCH)) OF PDSCH-SysInfo-VHCR-r7 + +PDSCH-SysInfoList-HCR-r5 ::= SEQUENCE (SIZE (1..maxPDSCH)) OF PDSCH-SysInfo-HCR-r5 + +PDSCH-SysInfoList-LCR-r4 ::= SEQUENCE (SIZE (1..maxPDSCH)) OF + PDSCH-SysInfo-LCR-r4 + +PDSCH-SysInfoList-SFN ::= SEQUENCE (SIZE (1..maxPDSCH)) OF + SEQUENCE { + pdsch-SysInfo PDSCH-SysInfo, + sfn-TimeInfo SFN-TimeInfo OPTIONAL +} + +PDSCH-SysInfoList-SFN-HCR-r5 ::= SEQUENCE (SIZE (1..maxPDSCH)) OF + SEQUENCE { + pdsch-SysInfo PDSCH-SysInfo-HCR-r5, + sfn-TimeInfo SFN-TimeInfo OPTIONAL +} + +PDSCH-SysInfoList-SFN-LCR-r4 ::= SEQUENCE (SIZE (1..maxPDSCH)) OF + SEQUENCE { + pdsch-SysInfo PDSCH-SysInfo-LCR-r4, + sfn-TimeInfo SFN-TimeInfo OPTIONAL +} + +PersistenceScalingFactor ::= ENUMERATED { + psf0-9, psf0-8, psf0-7, psf0-6, + psf0-5, psf0-4, psf0-3, psf0-2 } + +PersistenceScalingFactorList ::= SEQUENCE (SIZE (1..maxASCpersist)) OF + PersistenceScalingFactor + +PI-CountPerFrame ::= ENUMERATED { + e18, e36, e72, e144 } + +PichChannelisationCodeList-LCR-r4 ::= SEQUENCE (SIZE (1..2)) OF + DL-TS-ChannelisationCode + +PICH-ForHSDPASupportedPaging ::= SEQUENCE { + hsdpa-AssociatedPichInfo PICH-Info, + hs-pdschChannelisationCode INTEGER(1..15) +} + +PICH-ForHSDPASupportedPaging-TDD128 ::= CHOICE { + implicit SEQUENCE { + occurrenceSequenceNumberOfPICH OccurrenceSequenceNumberOfPICH OPTIONAL + }, + explicit PICH-Info-LCR-r4 +} + +PICH-Info ::= CHOICE { + fdd SEQUENCE { + channelisationCode256 ChannelisationCode256, + pi-CountPerFrame PI-CountPerFrame, + sttd-Indicator BOOLEAN + }, + tdd SEQUENCE { + channelisationCode TDD-PICH-CCode OPTIONAL, + timeslot TimeslotNumber OPTIONAL, + midambleShiftAndBurstType MidambleShiftAndBurstType, + repetitionPeriodLengthOffset RepPerLengthOffset-PICH OPTIONAL, + pagingIndicatorLength PagingIndicatorLength DEFAULT pi4, + n-GAP N-GAP DEFAULT f4, + n-PCH N-PCH DEFAULT 2 + } +} + +PICH-Info-HCR-VHCR-r7 ::= SEQUENCE { + channelisationCode CHOICE { + tdd384 TDD-PICH-CCode, + tdd768 TDD768-PICH-CCode + } OPTIONAL, + timeslot TimeslotNumber OPTIONAL, + midambleShiftAndBurstType MidambleShiftAndBurstType, + repetitionPeriodLengthOffset RepPerLengthOffset-PICH OPTIONAL, + pagingIndicatorLength PagingIndicatorLength DEFAULT pi4, + n-GAP N-GAP DEFAULT f4, + n-PCH N-PCH DEFAULT 2 +} + +PICH-Info-LCR-r4 ::= SEQUENCE { + timeslot TimeslotNumber-LCR-r4 OPTIONAL, + pichChannelisationCodeList-LCR-r4 PichChannelisationCodeList-LCR-r4, + midambleShiftAndBurstType MidambleShiftAndBurstType-LCR-r4, + repetitionPeriodLengthOffset RepPerLengthOffset-PICH OPTIONAL, + pagingIndicatorLength PagingIndicatorLength DEFAULT pi4, + n-GAP N-GAP DEFAULT f4, + n-PCH N-PCH DEFAULT 2 +} + +PICH-PowerOffset ::= INTEGER (-10..5) + +PilotBits128 ::= ENUMERATED { + pb4, pb8 } + +PilotBits256 ::= ENUMERATED { + pb2, pb4, pb8 } + + -- Actual measurement power offset value = IE value * 0.5 +MeasurementPowerOffset ::= INTEGER (-12..26) + +PLCCH-Info ::= SEQUENCE { + plcchSequenceNumber INTEGER(1..14), + timeslotNumber TimeslotNumber-LCR-r4, + channelisationCode DL-TS-ChannelisationCode, + tpcCommandTargetRate TPC-CommandTargetRate +} + +PositionFixedOrFlexible ::= ENUMERATED { + fixed, + flexible } + +PowerControlAlgorithm ::= CHOICE { + algorithm1 TPC-StepSizeFDD, + algorithm2 NULL +} + +PowerControlGAP ::= INTEGER (0..255) + +PowerOffsetPilot-pdpdch ::= INTEGER (0..24) + +PowerOffsetTPC-pdpdch ::= INTEGER (0..24) + +PowerRampStep ::= INTEGER (1..8) + +PRACH-ChanCodes-LCR-r4 ::= SEQUENCE (SIZE (1..4)) OF + TDD-PRACH-CCode-LCR-r4 + +PRACH-ChanCodes-List-LCR ::= SEQUENCE (SIZE (1..2)) OF + TDD-PRACH-CCode-LCR-r4 + +PRACH-Definition-LCR-r4 ::= SEQUENCE { + timeslot TimeslotNumber-PRACH-LCR-r4, + prach-ChanCodes-LCR PRACH-ChanCodes-LCR-r4, + midambleShiftAndBurstType MidambleShiftAndBurstType-LCR-r4, + fpach-Info FPACH-Info-r4 +} + +PRACH-Information-LCR ::= SEQUENCE { + timeslot TimeslotNumber-PRACH-LCR-r4, + prach-ChanCodes-list-LCR PRACH-ChanCodes-List-LCR, + midambleShiftAndBurstType MidambleShiftAndBurstType-LCR-r4, + fpach-Info FPACH-Info-r4 OPTIONAL +} + +PRACH-Information-LCR-List ::= SEQUENCE (SIZE (1..maxPRACH-FPACH)) OF + PRACH-Information-LCR + +PRACH-Midamble ::= ENUMERATED { + direct, + direct-Inverted } + +PRACH-Partitioning ::= CHOICE { + fdd SEQUENCE (SIZE (1..maxASC)) OF + -- TABULAR: If only "NumASC+1" (with, NumASC+1 < maxASC) ASCSetting-FDD are listed, + -- the remaining (NumASC+2 through maxASC) ASCs are unspecified. + ASCSetting-FDD, + tdd SEQUENCE (SIZE (1..maxASC)) OF + -- TABULAR: If only "NumASC+1" (with, NumASC+1 < maxASC) ASCSetting-TDD are listed, + -- the remaining (NumASC+2 through maxASC) ASCs are unspecified. + ASCSetting-TDD +} + +PRACH-Partitioning-r7 ::= CHOICE { + fdd SEQUENCE (SIZE (1..maxASC)) OF + -- TABULAR: If only "NumASC+1" (with, NumASC+1 < maxASC) ASCSetting-FDD are listed, + -- the remaining (NumASC+2 through maxASC) ASCs are unspecified. + ASCSetting-FDD, + tdd SEQUENCE (SIZE (1..maxASC)) OF + -- TABULAR: If only "NumASC+1" (with, NumASC+1 < maxASC) ASCSetting-TDD are listed, + -- the remaining (NumASC+2 through maxASC) ASCs are unspecified. + ASCSetting-TDD-r7 +} + +PRACH-Partitioning-LCR-r4 ::= SEQUENCE (SIZE (1..maxASC)) OF + -- TABULAR: If only "NumASC+1" (with, NumASC+1 < maxASC) ASCSetting-TDD-LCR-r4 are listed, + -- the remaining (NumASC+2 through maxASC) ASCs are unspecified. + ASCSetting-TDD-LCR-r4 + +PRACH-PowerOffset ::= SEQUENCE { + powerRampStep PowerRampStep, + preambleRetransMax PreambleRetransMax +} + +PRACH-PreambleForEnhancedUplink ::= SEQUENCE { + availableSignatures AvailableSignatures OPTIONAL, + e-ai-Indication BOOLEAN, + preambleScramblingCodeWordNumber PreambleScramblingCodeWordNumber OPTIONAL, + availableSubChannelNumbers AvailableSubChannelNumbers OPTIONAL, + prach-Partitioning PRACH-Partitioning-r7 OPTIONAL, + persistenceScalingFactorList PersistenceScalingFactorList OPTIONAL, + ac-To-ASC-MappingTable AC-To-ASC-MappingTable OPTIONAL, + primaryCPICH-TX-Power PrimaryCPICH-TX-Power OPTIONAL, + constantValue ConstantValue OPTIONAL, + prach-PowerOffset PRACH-PowerOffset OPTIONAL, + rach-TransmissionParameters RACH-TransmissionParameters OPTIONAL, + aich-Info AICH-Info OPTIONAL, + powerOffsetPp-e INTEGER (-5..10) +} +PRACH-PreambleForEnhancedUplinkExt ::= SEQUENCE { + availableSignatures AvailableSignatures, + preambleScramblingCodeWordNumber PreambleScramblingCodeWordNumber, + aich-Info AICH-Info-Compressed OPTIONAL +} + +PRACH-PreambleForEnhancedUplinkExtList ::= SEQUENCE (SIZE (1..maxPRACH-EUL)) OF + PRACH-PreambleForEnhancedUplinkExtWithWeight + + +PRACH-PreambleForEnhancedUplinkExtWithWeight ::= SEQUENCE { + prach-PreambleForEnhancedUplinkExt PRACH-PreambleForEnhancedUplinkExt, + -- Actual value weight = IE value * 0.2 + weight INTEGER (1..5) OPTIONAL +} + + + + +PRACH-RACH-Info ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + availableSignatures AvailableSignatures, + availableSF SF-PRACH, + preambleScramblingCodeWordNumber PreambleScramblingCodeWordNumber, + puncturingLimit PuncturingLimit, + availableSubChannelNumbers AvailableSubChannelNumbers + }, + tdd SEQUENCE { + timeslot TimeslotNumber, + channelisationCodeList TDD-PRACH-CCodeList, + prach-Midamble PRACH-Midamble + } + } +} + +PRACH-RACH-Info-VHCR-r7 ::= SEQUENCE { + timeslot TimeslotNumber, + channelisationCodeList TDD768-PRACH-CCodeList, + prach-Midamble PRACH-Midamble +} + +PRACH-RACH-Info-LCR-v770ext ::= SEQUENCE { + e-RUCCH-Sync-UL-Codes-Bitmap Sync-UL-Codes-Bitmap +} + +PRACH-RACH-Info-LCR-r4 ::= SEQUENCE { + sync-UL-Info SYNC-UL-Info-r4, + prach-DefinitionList SEQUENCE (SIZE (1..maxPRACH-FPACH)) OF + PRACH-Definition-LCR-r4 +} + +PRACH-SystemInformation ::= SEQUENCE { + prach-RACH-Info PRACH-RACH-Info, + transportChannelIdentity TransportChannelIdentity, + rach-TransportFormatSet TransportFormatSet OPTIONAL, + rach-TFCS TFCS OPTIONAL, + prach-Partitioning PRACH-Partitioning OPTIONAL, + persistenceScalingFactorList PersistenceScalingFactorList OPTIONAL, + ac-To-ASC-MappingTable AC-To-ASC-MappingTable OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-TX-Power PrimaryCPICH-TX-Power OPTIONAL, + constantValue ConstantValue OPTIONAL, + prach-PowerOffset PRACH-PowerOffset OPTIONAL, + rach-TransmissionParameters RACH-TransmissionParameters OPTIONAL, + aich-Info AICH-Info OPTIONAL + }, + tdd NULL + } +} + +PRACH-SystemInformation-VHCR-r7 ::= SEQUENCE { + prach-RACH-Info PRACH-RACH-Info-VHCR-r7, + prach-Partitioning PRACH-Partitioning-r7 OPTIONAL +} + +PRACH-SystemInformation-LCR-r4 ::= SEQUENCE { + prach-RACH-Info-LCR PRACH-RACH-Info-LCR-r4, + rach-TransportFormatSet-LCR TransportFormatSet-LCR OPTIONAL, + prach-Partitioning-LCR PRACH-Partitioning-LCR-r4 OPTIONAL +} + +PRACH-SystemInformation-LCR-v770ext ::= SEQUENCE { + prach-RACH-Info-LCR PRACH-RACH-Info-LCR-v770ext +} + +PRACH-SystemInformationList ::= SEQUENCE (SIZE (1..maxPRACH)) OF + PRACH-SystemInformation + +PRACH-SystemInformationList-VHCR-r7 ::= SEQUENCE (SIZE (1..maxPRACH)) OF + PRACH-SystemInformation-VHCR-r7 + +PRACH-SystemInformationList-LCR-r4 ::= SEQUENCE (SIZE (1..maxPRACH)) OF + PRACH-SystemInformation-LCR-r4 + +PRACH-SystemInformationList-LCR-v770ext ::= SEQUENCE (SIZE (1..maxPRACH)) OF + PRACH-SystemInformation-LCR-v770ext + +PreambleRetransMax ::= INTEGER (1..64) + +PreambleScramblingCodeWordNumber ::= INTEGER (0..15) + +PreDefPhyChConfiguration ::= SEQUENCE { + ul-DPCH-InfoPredef UL-DPCH-InfoPredef, + dl-CommonInformationPredef DL-CommonInformationPredef OPTIONAL +} + +PreDefPhyChConfiguration-v770ext ::= SEQUENCE { + ul-DPCH-InfoPredef UL-DPCH-InfoPredef-v770ext +} + +PrimaryCCPCH-Info ::= CHOICE { + fdd SEQUENCE { + tx-DiversityIndicator BOOLEAN + }, + tdd SEQUENCE { + -- syncCase should be ignored for 1.28Mcps TDD mode + syncCase CHOICE { + syncCase1 SEQUENCE { + timeslot TimeslotNumber + }, + syncCase2 SEQUENCE { + timeslotSync2 TimeslotSync2 + } + } OPTIONAL, + cellParametersID CellParametersID OPTIONAL, + sctd-Indicator BOOLEAN + } +} + +PrimaryCCPCH-Info-r4 ::= CHOICE { + fdd SEQUENCE { + tx-DiversityIndicator BOOLEAN + }, + tdd SEQUENCE { + tddOption CHOICE { + tdd384-tdd768 SEQUENCE { + syncCase CHOICE { + syncCase1 SEQUENCE { + timeslot TimeslotNumber + }, + syncCase2 SEQUENCE { + timeslotSync2 TimeslotSync2 + } + } OPTIONAL + }, + tdd128 SEQUENCE { + tstd-Indicator BOOLEAN + } + }, + cellParametersID CellParametersID OPTIONAL, + sctd-Indicator BOOLEAN + } +} + +PrimaryCCPCH-Info-LCR-r4 ::= SEQUENCE { + tstd-Indicator BOOLEAN, + cellParametersID CellParametersID OPTIONAL, + sctd-Indicator BOOLEAN +} + +-- For 1.28Mcps TDD, the following IE includes elements for the PCCPCH Info additional to those +-- in PrimaryCCPCH-Info +PrimaryCCPCH-Info-LCR-r4-ext ::= SEQUENCE { + tstd-Indicator BOOLEAN +} + +PrimaryCCPCH-InfoPost ::= SEQUENCE { + syncCase CHOICE { + syncCase1 SEQUENCE { + timeslot TimeslotNumber + }, + syncCase2 SEQUENCE { + timeslotSync2 TimeslotSync2 + } + }, + cellParametersID CellParametersID, + sctd-Indicator BOOLEAN +} + +PrimaryCCPCH-InfoPostTDD-LCR-r4 ::= SEQUENCE { + tstd-Indicator BOOLEAN, + cellParametersID CellParametersID, + sctd-Indicator BOOLEAN +} + +PrimaryCCPCH-TX-Power ::= INTEGER (6..43) + +PrimaryCPICH-Info ::= SEQUENCE { + primaryScramblingCode PrimaryScramblingCode +} + +PrimaryCPICH-TX-Power ::= INTEGER (-10..50) + +PrimaryScramblingCode ::= INTEGER (0..511) + +PuncturingLimit ::= ENUMERATED { + pl0-40, pl0-44, pl0-48, pl0-52, pl0-56, + pl0-60, pl0-64, pl0-68, pl0-72, pl0-76, + pl0-80, pl0-84, pl0-88, pl0-92, pl0-96, pl1 } + +PUSCH-CapacityAllocationInfo ::= SEQUENCE { + pusch-Allocation CHOICE { + pusch-AllocationPending NULL, + pusch-AllocationAssignment SEQUENCE { + pusch-AllocationPeriodInfo AllocationPeriodInfo, + pusch-PowerControlInfo UL-TargetSIR OPTIONAL, + configuration CHOICE { + old-Configuration SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + pusch-Identity PUSCH-Identity + }, + new-Configuration SEQUENCE { + pusch-Info PUSCH-Info, + pusch-Identity PUSCH-Identity OPTIONAL + } + } + } + } +} + +PUSCH-CapacityAllocationInfo-r4 ::= SEQUENCE { + pusch-Allocation CHOICE { + pusch-AllocationPending NULL, + pusch-AllocationAssignment SEQUENCE { + pusch-AllocationPeriodInfo AllocationPeriodInfo, + pusch-PowerControlInfo PUSCH-PowerControlInfo-r4 OPTIONAL, + configuration CHOICE { + old-Configuration SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + pusch-Identity PUSCH-Identity + }, + new-Configuration SEQUENCE { + pusch-Info PUSCH-Info-r4, + pusch-Identity PUSCH-Identity OPTIONAL + } + } + } + } +} + +PUSCH-CapacityAllocationInfo-r7 ::= SEQUENCE { + pusch-Allocation CHOICE { + pusch-AllocationPending NULL, + pusch-AllocationAssignment SEQUENCE { + pusch-AllocationPeriodInfo AllocationPeriodInfo, + pusch-PowerControlInfo PUSCH-PowerControlInfo-r7 OPTIONAL, + configuration CHOICE { + old-Configuration SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + pusch-Identity PUSCH-Identity + }, + new-Configuration SEQUENCE { + pusch-Info PUSCH-Info-VHCR, + pusch-Identity PUSCH-Identity OPTIONAL + } + } + } + } +} + +PUSCH-Identity ::= INTEGER (1..hiPUSCHidentities) + +PUSCH-Info ::= SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + commonTimeslotInfo CommonTimeslotInfo OPTIONAL, + pusch-TimeslotsCodes UplinkTimeslotsCodes OPTIONAL +} + +PUSCH-Info-r4 ::= SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + commonTimeslotInfo CommonTimeslotInfo OPTIONAL, + tddOption CHOICE { + tdd384 SEQUENCE { + pusch-TimeslotsCodes UplinkTimeslotsCodes OPTIONAL + }, + tdd128 SEQUENCE { + pusch-TimeslotsCodes UplinkTimeslotsCodes-LCR-r4 OPTIONAL + } + } +} + +PUSCH-Info-VHCR ::= SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + commonTimeslotInfo CommonTimeslotInfo OPTIONAL, + pusch-TimeslotsCodes-VHCR UplinkTimeslotsCodes-VHCR OPTIONAL +} + +PUSCH-Info-LCR-r4 ::= SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + + commonTimeslotInfo CommonTimeslotInfo OPTIONAL, + pusch-TimeslotsCodes UplinkTimeslotsCodes-LCR-r4 OPTIONAL +} + +PUSCH-PowerControlInfo-r4 ::= SEQUENCE { + -- The IE ul-TargetSIR corresponds to PRX-PUSCHdes for 1.28Mcps TDD + -- Actual value PRX-PUSCHdes = (value of IE "ul-TargetSIR" - 120) + ul-TargetSIR UL-TargetSIR, + tddOption CHOICE { + tdd384 NULL, + tdd128 SEQUENCE { + tpc-StepSize TPC-StepSizeTDD OPTIONAL + } + } +} + +PUSCH-PowerControlInfo-r7 ::= SEQUENCE { + -- The IE ul-TargetSIR corresponds to PRX-PUSCHdes for 1.28Mcps TDD + -- Actual value PRX-PUSCHdes = (value of IE "ul-TargetSIR" - 120) + ul-TargetSIR UL-TargetSIR, + tddOption CHOICE { + tdd384 NULL, + tdd768 NULL, + tdd128 SEQUENCE { + tpc-StepSize TPC-StepSizeTDD OPTIONAL + } + } +} + +PUSCH-SysInfo ::= SEQUENCE { + pusch-Identity PUSCH-Identity, + pusch-Info PUSCH-Info, + usch-TFS TransportFormatSet OPTIONAL, + usch-TFCS TFCS OPTIONAL +} + +PUSCH-SysInfo-VHCR ::= SEQUENCE { + pusch-Identity PUSCH-Identity, + pusch-Info-VHCR PUSCH-Info-VHCR, + usch-TransportChannelsInfo USCH-TransportChannelsInfo OPTIONAL, + usch-TFCS TFCS OPTIONAL +} + +PUSCH-SysInfo-HCR-r5 ::= SEQUENCE { + pusch-Identity PUSCH-Identity, + pusch-Info PUSCH-Info, + usch-TransportChannelsInfo USCH-TransportChannelsInfo OPTIONAL, + usch-TFCS TFCS OPTIONAL +} + +PUSCH-SysInfo-LCR-r4 ::= SEQUENCE { + pusch-Identity PUSCH-Identity, + pusch-Info PUSCH-Info-LCR-r4, + usch-TFS TransportFormatSet OPTIONAL, + usch-TFCS TFCS OPTIONAL +} + +PUSCH-SysInfoList ::= SEQUENCE (SIZE (1..maxPUSCH)) OF + PUSCH-SysInfo + +PUSCH-SysInfoList-HCR-r5 ::= SEQUENCE (SIZE (1..maxPUSCH)) OF PUSCH-SysInfo-HCR-r5 + +PUSCH-SysInfoList-LCR-r4 ::= SEQUENCE (SIZE (1..maxPUSCH)) OF + PUSCH-SysInfo-LCR-r4 + +PUSCH-SysInfoList-SFN ::= SEQUENCE (SIZE (1..maxPUSCH)) OF + SEQUENCE { + pusch-SysInfo PUSCH-SysInfo, + sfn-TimeInfo SFN-TimeInfo OPTIONAL +} + +PUSCH-SysInfoList-SFN-HCR-r5 ::= SEQUENCE (SIZE (1..maxPUSCH)) OF + SEQUENCE { + pusch-SysInfo PUSCH-SysInfo-HCR-r5, + sfn-TimeInfo SFN-TimeInfo OPTIONAL +} + +PUSCH-SysInfoList-SFN-LCR-r4 ::= SEQUENCE (SIZE (1..maxPUSCH)) OF + SEQUENCE { + pusch-SysInfo PUSCH-SysInfo-LCR-r4, + sfn-TimeInfo SFN-TimeInfo OPTIONAL +} + +PUSCH-SysInfoList-SFN-VHCR ::= SEQUENCE (SIZE (1..maxPUSCH)) OF + SEQUENCE { + pusch-SysInfo-VHCR PUSCH-SysInfo-VHCR, + sfn-TimeInfo SFN-TimeInfo OPTIONAL +} + +RACH-TransmissionParameters ::= SEQUENCE { + mmax INTEGER (1..32), + nb01Min NB01, + nb01Max NB01 +} + +ReducedScramblingCodeNumber ::= INTEGER (0..8191) + +Reference-Beta-QPSK ::= SEQUENCE { + reference-Code-Rate INTEGER (0..10), + reference-Beta INTEGER (-15..16) +} + +Reference-Beta-16QAM ::= SEQUENCE { + reference-Code-Rate INTEGER (0..10), + reference-Beta INTEGER (-15..16) +} + +RepetitionPeriodAndLength ::= CHOICE { + repetitionPeriod1 NULL, + -- repetitionPeriod2 could just as well be NULL also. + repetitionPeriod2 INTEGER (1..1), + repetitionPeriod4 INTEGER (1..3), + repetitionPeriod8 INTEGER (1..7), + repetitionPeriod16 INTEGER (1..15), + repetitionPeriod32 INTEGER (1..31), + repetitionPeriod64 INTEGER (1..63) +} + +RepetitionPeriodLengthAndOffset ::= CHOICE { + repetitionPeriod1 NULL, + repetitionPeriod2 SEQUENCE { + length NULL, + offset INTEGER (0..1) + }, + repetitionPeriod4 SEQUENCE { + length INTEGER (1..3), + offset INTEGER (0..3) + }, + repetitionPeriod8 SEQUENCE { + length INTEGER (1..7), + offset INTEGER (0..7) + }, + repetitionPeriod16 SEQUENCE { + length INTEGER (1..15), + offset INTEGER (0..15) + }, + repetitionPeriod32 SEQUENCE { + length INTEGER (1..31), + offset INTEGER (0..31) + }, + repetitionPeriod64 SEQUENCE { + length INTEGER (1..63), + offset INTEGER (0..63) + } +} + +RepetitionPeriodAndLengthForSPS ::= CHOICE { + repetitionPeriod1 NULL, + -- repetitionPeriod2 could just as well be NULL also. + repetitionPeriod2 INTEGER (1..1), + repetitionPeriod4 INTEGER (1..3), + repetitionPeriod8 INTEGER (1..7), + repetitionPeriod16 INTEGER (1..15), + repetitionPeriod32 INTEGER (1..31) +} + +ReplacedPDSCH-CodeInfo ::= SEQUENCE { + tfci-Field2 MaxTFCI-Field2Value, + spreadingFactor SF-PDSCH, + codeNumber CodeNumberDSCH, + multiCodeInfo MultiCodeInfo +} + +ReplacedPDSCH-CodeInfoList ::= SEQUENCE (SIZE (1..maxTFCI-2-Combs)) OF + ReplacedPDSCH-CodeInfo + +RepPerLengthOffset-PICH ::= CHOICE { + rpp4-2 INTEGER (0..3), + rpp8-2 INTEGER (0..7), + rpp8-4 INTEGER (0..7), + rpp16-2 INTEGER (0..15), + rpp16-4 INTEGER (0..15), + rpp32-2 INTEGER (0..31), + rpp32-4 INTEGER (0..31), + rpp64-2 INTEGER (0..63), + rpp64-4 INTEGER (0..63) +} + +RepPerLengthOffset-MICH ::= CHOICE { + rpp4-2 INTEGER (0..3), + rpp8-2 INTEGER (0..7), + rpp8-4 INTEGER (0..7), + rpp16-2 INTEGER (0..15), + rpp16-4 INTEGER (0..15), + rpp32-2 INTEGER (0..31), + rpp32-4 INTEGER (0..31), + rpp64-2 INTEGER (0..63), + rpp64-4 INTEGER (0..63) +} + +RestrictedTrCH ::= SEQUENCE { + dl-restrictedTrCh-Type DL-TrCH-Type, + restrictedDL-TrCH-Identity TransportChannelIdentity, + allowedTFIList AllowedTFI-List +} + +RestrictedTrCH-InfoList ::= SEQUENCE (SIZE(1..maxTrCH)) OF + RestrictedTrCH + +RL-AdditionInformation ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL, + -- dummy and dummy2 are not used in this version of specification + -- and the IEs should be ignored. + dummy BOOLEAN, + dummy2 SCCPCH-InfoForFACH OPTIONAL +} + +RL-AdditionInformation-r6 ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + cell-Id CellIdentity OPTIONAL, + dl-dpchInfo CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r5, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r6 + }, + e-HICH-Information E-HICH-Information OPTIONAL, + e-RGCH-Information E-RGCH-Information OPTIONAL +} + +RL-AdditionInformation-r7 ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + cell-Id CellIdentity OPTIONAL, + dl-dpchInfo CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r5, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7 + }, + e-HICH-Information E-HICH-Information OPTIONAL, + e-RGCH-Information E-RGCH-Information OPTIONAL +} + +RL-AdditionInformation-r8 ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + cell-Id CellIdentity OPTIONAL, + dl-dpchInfo CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r5, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7 + }, + e-HICH-Information E-HICH-Information OPTIONAL, + e-RGCH-Information E-RGCH-Information OPTIONAL, + targetCellPreconfigInfo TargetCellPreconfigInfo OPTIONAL +} + +RL-AdditionInformation-r9 ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + cell-Id CellIdentity OPTIONAL, + dl-dpchInfo CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r5, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7 + }, + e-HICH-Information E-HICH-Information OPTIONAL, + e-RGCH-Information E-RGCH-Information OPTIONAL, + targetCellPreconfigInfo TargetCellPreconfigInfo-r9 OPTIONAL +} + +RL-AdditionInformation-r10 ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + cell-Id CellIdentity OPTIONAL, + dl-dpchInfo CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r5, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7 + }, + e-HICH-Information E-HICH-Information OPTIONAL, + e-RGCH-Information E-RGCH-Information OPTIONAL, + targetCellPreconfigInfo TargetCellPreconfigInfo-r10 OPTIONAL +} + +RL-AdditionInformation-vb50ext ::= SEQUENCE { + targetCellPreconfigInfo TargetCellPreconfigInfo-vb50ext OPTIONAL +} + +RL-AdditionInformation-r11 ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + cell-Id CellIdentity OPTIONAL, + dl-dpchInfo CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r5, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7 + }, + e-HICH-Information E-HICH-Information-r11 OPTIONAL, + e-RGCH-Information E-RGCH-Information OPTIONAL, + f-TPICH-Information F-TPICH-Information OPTIONAL, + targetCellPreconfigInfo TargetCellPreconfigInfo-r11 OPTIONAL +} + +RL-AdditionInformation-v6b0ext ::= SEQUENCE { + sttdIndication STTDIndication OPTIONAL +} + +RL-AdditionInformation-v890ext ::= SEQUENCE { + targetCellPreconfigInfo TargetCellPreconfigInfo-v890ext OPTIONAL +} + +RL-AdditionInformation-v950ext ::= SEQUENCE { + targetCellPreconfigInfo TargetCellPreconfigInfo-v950ext OPTIONAL +} + +RL-AdditionInformationList ::= SEQUENCE (SIZE (1..maxRL-1)) OF + RL-AdditionInformation + +RL-AdditionInformationList-r6 ::= SEQUENCE (SIZE (1..maxRL-1)) OF + RL-AdditionInformation-r6 + +RL-AdditionInformationList-r7 ::= SEQUENCE (SIZE (1..maxRL-1)) OF + RL-AdditionInformation-r7 + +RL-AdditionInformation-list-v6b0ext ::= SEQUENCE (SIZE (1..maxRL)) OF + RL-AdditionInformation-v6b0ext + +RL-AdditionInformationList-r8 ::= SEQUENCE (SIZE(1..maxRL-1)) OF + RL-AdditionInformation-r8 + +RL-AdditionInformationList-v890ext ::= SEQUENCE (SIZE (1..maxRL-1)) OF + RL-AdditionInformation-v890ext + +RL-AdditionInformationList-r9 ::= SEQUENCE (SIZE(1..maxRL-1)) OF + RL-AdditionInformation-r9 + +RL-AdditionInformationList-v950ext ::= SEQUENCE (SIZE(1..maxRL-1)) OF + RL-AdditionInformation-v950ext + +RL-AdditionInformationList-r10 ::= SEQUENCE (SIZE(1..maxRL-1)) OF + RL-AdditionInformation-r10 + +RL-AdditionInformationList-vb50ext ::= SEQUENCE (SIZE(1..maxRL-1)) OF + RL-AdditionInformation-vb50ext + +RL-AdditionInformationList-r11 ::= SEQUENCE (SIZE(1..maxRL-1)) OF + RL-AdditionInformation-r11 + +RL-AdditionInformationList-SecULFreq ::= SEQUENCE (SIZE(1..maxEDCHRL-1)) OF + RL-AdditionInformation-SecULFreq + + +RL-AdditionInformation-SecULFreq ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + cell-id CellIdentity OPTIONAL, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7, + e-HICH-Information E-HICH-Information, + e-RGCH-Information E-RGCH-Information OPTIONAL +} + +RL-IdentifierList ::= SEQUENCE (SIZE (1..maxRL)) OF + PrimaryCPICH-Info + +RL-RemovalInformationList ::= SEQUENCE (SIZE (1..maxRL)) OF + PrimaryCPICH-Info + +RL-RemovalInformationList-SecULFreq ::= SEQUENCE (SIZE(1..maxEDCHRL)) OF + PrimaryCPICH-Info + +RPP ::= ENUMERATED { + mode0, mode1 } + +S-Field ::= ENUMERATED { + e1bit, e2bits } + +SCCPCH-ChannelisationCode ::= ENUMERATED { + cc16-1, cc16-2, cc16-3, cc16-4, + cc16-5, cc16-6, cc16-7, cc16-8, + cc16-9, cc16-10, cc16-11, cc16-12, + cc16-13, cc16-14, cc16-15, cc16-16 } + +SCCPCH-ChannelisationCode-VHCR ::= ENUMERATED { + cc32-1, cc32-2, cc32-3, cc32-4, + cc32-5, cc32-6, cc32-7, cc32-8, + cc32-9, cc32-10, cc32-11, cc32-12, + cc32-13, cc32-14, cc32-15, cc32-16, + cc32-17, cc32-18, cc32-19, cc32-20, + cc32-21, cc32-22, cc32-23, cc32-24, + cc32-25, cc32-26, cc32-27, cc32-28, + cc32-29, cc32-30, cc32-31, cc32-32 } + +SCCPCH-ChannelisationCodeList ::= SEQUENCE (SIZE (1..16)) OF + SCCPCH-ChannelisationCode + +SCCPCH-ChannelisationCodeList-VHCR ::= SEQUENCE (SIZE (1..32)) OF + SCCPCH-ChannelisationCode-VHCR + +SCCPCH-InfoForFACH ::= SEQUENCE { + secondaryCCPCH-Info SecondaryCCPCH-Info, + tfcs TFCS, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + fach-PCH-InformationList FACH-PCH-InformationList, + sib-ReferenceListFACH SIB-ReferenceListFACH + }, + tdd SEQUENCE { + fach-PCH-InformationList FACH-PCH-InformationList + } + } +} + +SCCPCH-InfoForFACH-r4 ::= SEQUENCE { + secondaryCCPCH-Info SecondaryCCPCH-Info-r4, + tfcs TFCS, + fach-PCH-InformationList FACH-PCH-InformationList, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + sib-ReferenceListFACH SIB-ReferenceListFACH + }, + tdd NULL + } +} + +SCCPCH-SystemInformation ::= SEQUENCE { + secondaryCCPCH-Info SecondaryCCPCH-Info, + tfcs TFCS OPTIONAL, + fach-PCH-InformationList FACH-PCH-InformationList OPTIONAL, + pich-Info PICH-Info OPTIONAL +} + +SCCPCH-SystemInformation-LCR-r4-ext ::= SEQUENCE { + secondaryCCPCH-LCR-Extensions SecondaryCCPCH-Info-LCR-r4-ext, + -- pich-Info in the SCCPCH-SystemInformation IE shall be absent, + -- and instead the following used. + pich-Info PICH-Info-LCR-r4 OPTIONAL +} + +SCCPCH-SystemInformation-HCR-VHCR-r7 ::= SEQUENCE { + secondaryCCPCH-Info SecondaryCCPCH-Info-HCR-VHCR-r7, + tfcs TFCS OPTIONAL, + fach-PCH-InformationList FACH-PCH-InformationList OPTIONAL, + pich-Info PICH-Info-HCR-VHCR-r7 OPTIONAL +} + +SCCPCH-SystemInformationList ::= SEQUENCE (SIZE (1..maxSCCPCH)) OF + SCCPCH-SystemInformation + +SCCPCH-SystemInformationList-HCR-VHCR-r7 ::= SEQUENCE (SIZE (1..maxSCCPCH)) OF + SCCPCH-SystemInformation-HCR-VHCR-r7 + +-- SCCPCH-SystemInformationList-LCR-r4-ext includes elements additional to those in +-- SCCPCH-SystemInformationList for the 1.28Mcps TDD. The order of the IEs +-- indicates which SCCPCH-SystemInformation-LCR-r4-ext IE extends which +-- SCCPCH-SystemInformation IE. +SCCPCH-SystemInformationList-LCR-r4-ext ::= SEQUENCE (SIZE (1..maxSCCPCH)) OF + SCCPCH-SystemInformation-LCR-r4-ext + +-- The SCCPCH-SystemInformation-MBMS-r6 is used for an S-CCPCH dedicated for MBMS purposes. +SCCPCH-SystemInformation-MBMS-r6 ::= SEQUENCE { + secondaryCCPCHInfo-MBMS SecondaryCCPCHInfo-MBMS-r6, + transportFormatCombinationSet TFCS, + fachCarryingMCCH SEQUENCE { + mcch-transportFormatSet TransportFormatSet, + mcch-ConfigurationInfo MBMS-MCCH-ConfigurationInfo-r6 + }, + fachCarryingMTCH-List MBMS-FACHCarryingMTCH-List OPTIONAL, + -- If schedulingInformation is provided + fachCarryingMSCH SEQUENCE { + msch-transportFormatSet TransportFormatSet, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy MBMS-MSCH-ConfigurationInfo-r6 + } OPTIONAL +} + +-- The SCCPCH-SystemInformation-MBMS-r7 is used for an S-CCPCH dedicated for MBMS purposes. +SCCPCH-SystemInformation-MBMS-r7 ::= SEQUENCE { + secondaryCCPCHInfo-MBMS SecondaryCCPCHInfo-MBMS-r7, + transportFormatCombinationSet TFCS, + fachCarryingMCCH SEQUENCE { + mcch-transportFormatSet TransportFormatSet, + mcch-ConfigurationInfo MBMS-MCCH-ConfigurationInfo-r6 + }, + fachCarryingMTCH-List MBMS-FACHCarryingMTCH-List OPTIONAL, + -- If schedulingInformation is provided + fachCarryingMSCH SEQUENCE { + msch-transportFormatSet TransportFormatSet + } OPTIONAL +} + +S-CPICH-PowerOffset-MIMO ::= INTEGER (-6..0) + +S-CPICH-PowerOffset-4x4MIMO ::= INTEGER (-12..0) + +ScheduledTransmissionConfiguration ::= SEQUENCE { + common-E-DCH-ResourceInfoListExt SEQUENCE (SIZE (1..maxEDCHs)) OF + Common-E-DCH-ResourceInfoListExt +} + +ScramblingCodeChange ::= ENUMERATED { + codeChange, noCodeChange } + +ScramblingCodeType ::= ENUMERATED { + shortSC, + longSC } + +SecondaryCCPCH-Info ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + -- dummy1 is not used in this version of the specification and should be ignored. + dummy1 PCPICH-UsageForChannelEst, + -- dummy2 is not used in this version of the specification. It should not + -- be sent and if received it should be ignored. + dummy2 SecondaryCPICH-Info OPTIONAL, + secondaryScramblingCode SecondaryScramblingCode OPTIONAL, + sttd-Indicator BOOLEAN, + sf-AndCodeNumber SF256-AndCodeNumber, + pilotSymbolExistence BOOLEAN, + tfci-Existence BOOLEAN, + positionFixedOrFlexible PositionFixedOrFlexible, + timingOffset TimingOffset DEFAULT 0 + }, + tdd SEQUENCE { + -- TABULAR: the offset is included in CommonTimeslotInfoSCCPCH + commonTimeslotInfo CommonTimeslotInfoSCCPCH, + individualTimeslotInfo IndividualTimeslotInfo, + channelisationCode SCCPCH-ChannelisationCodeList + } + } +} + +SecondaryCCPCH-Info-r4 ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + secondaryScramblingCode SecondaryScramblingCode OPTIONAL, + sttd-Indicator BOOLEAN, + sf-AndCodeNumber SF256-AndCodeNumber, + pilotSymbolExistence BOOLEAN, + tfci-Existence BOOLEAN, + positionFixedOrFlexible PositionFixedOrFlexible, + timingOffset TimingOffset DEFAULT 0 + }, + tdd SEQUENCE { + -- TABULAR: the offset is included in CommonTimeslotInfoSCCPCH + commonTimeslotInfo CommonTimeslotInfoSCCPCH, + tddOption CHOICE { + tdd384 SEQUENCE { + individualTimeslotInfo IndividualTimeslotInfo + }, + tdd128 SEQUENCE { + individualTimeslotInfo IndividualTimeslotInfo-LCR-r4 + } + }, + channelisationCode SCCPCH-ChannelisationCodeList + } + } +} + +SecondaryCCPCH-Info-HCR-VHCR-r7 ::= SEQUENCE { + modeSpecificInfo CHOICE { + tdd384 SEQUENCE { + individualTimeslotInfo IndividualTimeslotInfo-r7, + channelisationCode SCCPCH-ChannelisationCodeList + }, + tdd768 SEQUENCE { + individualTimeslotInfo IndividualTimeslotInfo-VHCR, + channelisationCode SCCPCH-ChannelisationCodeList-VHCR + } + } +} + +SecondaryCCPCH-Info-LCR-r4-ext ::= SEQUENCE { + individualTimeslotLCR-Ext IndividualTimeslotInfo-LCR-r4-ext +} + +SecondaryCCPCHFrameType2Info ::= SEQUENCE { + subFrameNumber INTEGER (0..4), + dl-ChannelisationCodes DL-ChannelCodes-MBSFN-IMB384, + modulation CHOICE { + modQPSK NULL, + mod16QAM SEQUENCE { + cpich-SecCCPCH-PowerOffset INTEGER (-11..4) + } + } +} + +SecondaryCCPCHInfo-MBMS-r6 ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + secondaryScramblingCode SecondaryScramblingCode OPTIONAL, + sttd-Indicator BOOLEAN, + sf-AndCodeNumber SF256-AndCodeNumber, + timingOffset TimingOffset DEFAULT 0 + }, + tdd384 SEQUENCE { + commonTimeslotInfoMBMS CommonTimeslotInfoMBMS, + downlinkTimeslotsCodes DownlinkTimeslotsCodes + }, + tdd128 SEQUENCE { + commonTimeslotInfoMBMS CommonTimeslotInfoMBMS, + downlinkTimeslotsCodes DownlinkTimeslotsCodes-LCR-r4 + } + } +} + +SecondaryCCPCHInfo-MBMS-r7 ::= SEQUENCE { + modeSpecificInfo CHOICE { + -- The CHOICE fdd is used for both "fdd" and "3.84 Mcps TDD MBSFN IMB" + fdd SEQUENCE { + -- The IE secondaryScramblingCode is not applicable for "3.84 Mcps TDD MBSFN IMB" + secondaryScramblingCode SecondaryScramblingCode OPTIONAL, + -- The IE sttd-Indicator is not applicable for cells operating in MBSFN mode, + -- the UE behaviour is unspecified + sttd-Indicator BOOLEAN, + sf-AndCodeNumber SF256-AndCodeNumber, + -- The IE timingOffset is not applicable for "3.84 Mcps TDD MBSFN IMB" + timingOffset TimingOffset DEFAULT 0, + modulation CHOICE { + modQPSK NULL, + -- The CHOICE mod16QAM is not applicable for MCCH in "3.84 Mcps TDD MBSFN IMB" + mod16QAM INTEGER (-11..4) + } OPTIONAL + }, + tdd384 SEQUENCE { + commonTimeslotInfoMBMS CommonTimeslotInfoMBMS, + downlinkTimeslotsCodes DownlinkTimeslotsCodes-r7, + modulation ENUMERATED { modQPSK, mod16QAM } + }, + tdd768 SEQUENCE { + commonTimeslotInfoMBMS CommonTimeslotInfoMBMS, + downlinkTimeslotsCodes DownlinkTimeslotsCodes-VHCR, + modulation ENUMERATED { modQPSK, mod16QAM } + }, + tdd128 SEQUENCE { + commonTimeslotInfoMBMS CommonTimeslotInfoMBMS, + downlinkTimeslotsCodes DownlinkTimeslotsCodes-LCR-r4, + mbsfnSpecialTimeSlot TimeSlotLCR-ext OPTIONAL, + modulation ENUMERATED { modQPSK, mod16QAM } + } + } +} + +SecondaryCCPCHInfoDiff-MBMS ::= SEQUENCE { + secondaryScramblingCode SecondaryScramblingCode OPTIONAL, + sttd-Indicator BOOLEAN, + sf-AndCodeNumber SF256-AndCodeNumber OPTIONAL, + timingOffset TimingOffset OPTIONAL +} + +SecondaryCPICH-Info ::= SEQUENCE { + secondaryDL-ScramblingCode SecondaryScramblingCode OPTIONAL, + channelisationCode ChannelisationCode256 +} + +SecondaryScramblingCode ::= INTEGER (1..15) + +SecondaryCellMIMOparametersFDD ::= CHOICE { + continue NULL, + newConfiguration SEQUENCE { + mimoN-M-Ratio MIMO-N-M-Ratio OPTIONAL, + mimoPilotConfiguration MIMO-PilotConfiguration-r9 OPTIONAL + } +} + +SecondaryCellMIMOparametersFDD-v950ext ::= SEQUENCE { + precodingWeightSetRestriction ENUMERATED { true } OPTIONAL +} + +SecondaryCellMIMOparametersFDD-r10 ::= CHOICE { + continue NULL, + newConfiguration SEQUENCE { + mimoN-M-Ratio MIMO-N-M-Ratio OPTIONAL, + mimoPilotConfiguration MIMO-PilotConfiguration-r9 OPTIONAL, + precodingWeightSetRestriction ENUMERATED { true } OPTIONAL + } +} + +SecondaryCell4x4MIMOparametersFDD ::= SEQUENCE { + configurationInfo CHOICE { + continue NULL, + newConfiguration SEQUENCE { + mimoN-M-Ratio MIMO-N-M-Ratio OPTIONAL, + mimoPilotConfiguration MIMO4x4-PilotConfiguration OPTIONAL, + precodingWeightSetRestriction BIT STRING (SIZE (64)) OPTIONAL + } + } +} + +SecondInterleavingMode ::= ENUMERATED { + frameRelated, timeslotRelated } + +ServingCellChangeMACreset ::= BOOLEAN + +ServingCellChangeMsgType ::= ENUMERATED { + radioBearerSetup, + radioBearerReconfiguration, + transportChannelReconfiguration, + physicalChannelReconfiguration } + +ServingCellChangeParameters ::= SEQUENCE { + servingCellChangeMACreset ServingCellChangeMACreset, + servingCellChangeMsgType ServingCellChangeMsgType, + servingCellChangeTrId ServingCellChangeTrId +} + +ServingCellChangeTrId ::= INTEGER (0..3) + +SF8Codes ::= ENUMERATED { + cc8-1, cc8-2, cc8-3, cc8-4, cc8-5, cc8-6, cc8-7, cc8-8} + +SF16Codes ::= ENUMERATED { + cc16-1, cc16-2, cc16-3, cc16-4, cc16-5, cc16-6, cc16-7, + cc16-8} + +SF16Codes2 ::= ENUMERATED { + cc16-1, cc16-2, cc16-3, cc16-4, cc16-5, cc16-6, cc16-7, + cc16-8, cc16-9, cc16-10, cc16-11, cc16-12, cc16-13, cc16-14, + cc16-15, cc16-16} + +SF32Codes ::= ENUMERATED { + cc32-1, cc32-2, cc32-3, cc32-4, cc32-5, cc32-6, cc32-7, + cc32-8, cc32-9, cc32-10, cc32-11, cc32-12, cc32-13, cc32-14, + cc32-15, cc32-16} + +-- SF256-AndCodeNumber encodes both "Spreading factor" and "Code Number" +SF256-AndCodeNumber ::= CHOICE { + sf4 INTEGER (0..3), + sf8 INTEGER (0..7), + sf16 INTEGER (0..15), + sf32 INTEGER (0..31), + sf64 INTEGER (0..63), + sf128 INTEGER (0..127), + sf256 INTEGER (0..255) +} + +-- SF512-AndCodeNumber encodes both "Spreading factor" and "Code Number" +SF512-AndCodeNumber ::= CHOICE { + sf4 INTEGER (0..3), + sf8 INTEGER (0..7), + sf16 INTEGER (0..15), + sf32 INTEGER (0..31), + sf64 INTEGER (0..63), + sf128 INTEGER (0..127), + sf256 INTEGER (0..255), + sf512 INTEGER (0..511) +} + +-- SF512-AndPilot encodes both "Spreading factor" and "Number of bits for Pilot bits" +SF512-AndPilot ::= CHOICE { + sfd4 NULL, + sfd8 NULL, + sfd16 NULL, + sfd32 NULL, + sfd64 NULL, + sfd128 PilotBits128, + sfd256 PilotBits256, + sfd512 NULL +} +SF-PDSCH ::= ENUMERATED { + sfp4, sfp8, sfp16, sfp32, + sfp64, sfp128, sfp256 } + +SF-PRACH ::= ENUMERATED { + sfpr32, sfpr64, sfpr128, sfpr256 } + +SFN-TimeInfo ::= SEQUENCE { + activationTimeSFN INTEGER (0..4095), + physChDuration DurationTimeInfo +} + +-- actual scheduling value = 2(signalled value +1) and is the periodicity of sending +-- special burst frames +SpecialBurstScheduling ::= INTEGER (0..7) + +SpreadingFactor ::= ENUMERATED { + sf4, sf8, sf16, sf32, + sf64, sf128, sf256 } + +SPS-Information-TDD128-r8 ::= SEQUENCE { + e-dch-SPS-Info E-DCH-SPS-Information-TDD128 OPTIONAL, + hs-dsch-SPS-Info HS-DSCH-SPS-Information-TDD128 OPTIONAL +} + +SRB-delay ::= INTEGER (0..7) + +SSDT-CellIdentity ::= ENUMERATED { + ssdt-id-a, ssdt-id-b, ssdt-id-c, + ssdt-id-d, ssdt-id-e, ssdt-id-f, + ssdt-id-g, ssdt-id-h } + +SSDT-Information ::= SEQUENCE { + s-Field S-Field, + codeWordSet CodeWordSet +} + +SSDT-Information-r4 ::= SEQUENCE { + s-Field S-Field, + codeWordSet CodeWordSet, + ssdt-UL-r4 SSDT-UL OPTIONAL +} + +SSDT-UL ::= ENUMERATED { + ul, ul-AndDL } + +StandaloneMidambleInfo-TDD128 ::= SEQUENCE { + -- Actual value midambleConfiguration = IE value * 2 + midambleConfiguration INTEGER (1..8), + midambleShift INTEGER (0..15), + timeSlotInformation BIT STRING (SIZE (5)), + activationTime ActivationTime, + subframeNum INTEGER (0..1), + repetitionPeriod ENUMERATED { + v1, v2, v4, v8, + v16, v32, v64, spare}, + referenceBeta INTEGER (-15..16) OPTIONAL +} + +STTDIndication ::= ENUMERATED { true } + +SynchronisationParameters-r4 ::= SEQUENCE { + sync-UL-CodesBitmap BIT STRING { + code7(0), + code6(1), + code5(2), + code4(3), + code3(4), + code2(5), + code1(6), + code0(7) + } (SIZE (8)), + fpach-Info FPACH-Info-r4, + -- Actual value prxUpPCHdes = IE value - 120 + prxUpPCHdes INTEGER (0..62), + sync-UL-Procedure SYNC-UL-Procedure-r4 OPTIONAL +} + +Sync-UL-Codes-Bitmap ::= BIT STRING { + code7(0), + code6(1), + code5(2), + code4(3), + code3(4), + code2(5), + code1(6), + code0(7) + } (SIZE (8)) + +SYNC-UL-Procedure-r4 ::= SEQUENCE { + max-SYNC-UL-Transmissions ENUMERATED { tr1, tr2, tr4, tr8 }, + powerRampStep INTEGER (0..3) +} + +SYNC-UL-Info-r4 ::= SEQUENCE { + sync-UL-Codes-Bitmap Sync-UL-Codes-Bitmap, + -- Actual value prxUpPCHdes = IE value - 120 + prxUpPCHdes INTEGER (0..62), + powerRampStep INTEGER (0..3), + max-SYNC-UL-Transmissions ENUMERATED { tr1, tr2, tr4, tr8 }, + mmax INTEGER(1..32) +} + +SYNC-UL-InfoForE-RUCCH ::= SEQUENCE { + prxUpPCHdes INTEGER (0..62) OPTIONAL, + powerRampStep INTEGER (0..3) OPTIONAL, + max-SYNC-UL-Transmissions ENUMERATED { tr1, tr2, tr4, tr8 } OPTIONAL, + e-RUCCH-Sync-UL-Codes-Bitmap Sync-UL-Codes-Bitmap, + mmax INTEGER(1..32) +} + +TargetCellPreconfigInfo ::= SEQUENCE { + activationTimeOffset ActivationTimeOffset OPTIONAL, + new-H-RNTI H-RNTI, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + serving-HSDSCH-CellInformation Serving-HSDSCH-CellInformation-r8, + e-dch-ReconfigurationInfo E-DCH-ReconfigurationInfo-r7, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD OPTIONAL +} + +TargetCellPreconfigInfo-v890ext ::= MIMO-Parameters-v7f0ext + +TargetCellPreconfigInfo-r9 ::= SEQUENCE { + activationTimeOffset ActivationTimeOffset OPTIONAL, + new-H-RNTI H-RNTI, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + serving-HSDSCH-CellInformation Serving-HSDSCH-CellInformation-r9, + e-dch-ReconfigurationInfo E-DCH-ReconfigurationInfo-r7, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r9 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + e-dch-ReconfigurationInfo-SecULFrequency + E-DCH-ReconfigurationInfo-SecULFrequency OPTIONAL +} + +TargetCellPreconfigInfo-v950ext ::= SecondaryCellMIMOparametersFDD-v950ext + +TargetCellPreconfigInfo-r10 ::= SEQUENCE { + activationTimeOffset ActivationTimeOffset OPTIONAL, + new-H-RNTI H-RNTI, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + serving-HSDSCH-CellInformation Serving-HSDSCH-CellInformation-r9, + e-dch-ReconfigurationInfo E-DCH-ReconfigurationInfo-r7, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r10 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + e-dch-ReconfigurationInfo-SecULFrequency + E-DCH-ReconfigurationInfo-SecULFrequency OPTIONAL +} + +TargetCellPreconfigInfo-vb50ext ::= SEQUENCE { + ulOLTDInfoFDD UL-OLTD-InfoFDD OPTIONAL +} + +TargetCellPreconfigInfo-r11 ::= SEQUENCE { + activationTimeOffset ActivationTimeOffset OPTIONAL, + new-H-RNTI H-RNTI, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + serving-HSDSCH-CellInformation Serving-HSDSCH-CellInformation-r11, + e-dch-ReconfigurationInfo E-DCH-ReconfigurationInfo-r11, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + mimo4x4Parameters MIMO4x4-Parameters OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD2 AdditionalDLSecCellInfoListFDD2 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + e-dch-ReconfigurationInfo-SecULFrequency + E-DCH-ReconfigurationInfo-SecULFrequency OPTIONAL, + ul-CLTD-InfoFDD UL-CLTD-InfoFDD OPTIONAL, + f-tpich-ReconfigurationInfo F-TPICH-ReconfigurationInfo OPTIONAL, + uL-OLTD-InfoFDD UL-OLTD-InfoFDD OPTIONAL, + ul-16QAM-Config UL-16QAM-Config OPTIONAL, + ul-64QAM-Config UL-64QAM-Config OPTIONAL, + ul-MIMO-Info UL-MIMO-InfoFDD OPTIONAL +} + +TDD-FPACH-CCode16-r4 ::= ENUMERATED { + cc16-1, cc16-2, cc16-3, cc16-4, + cc16-5, cc16-6, cc16-7, cc16-8, + cc16-9, cc16-10, cc16-11, cc16-12, + cc16-13, cc16-14, cc16-15, cc16-16 } + +TDD-UL-Interference ::= INTEGER (-110..-52) + +TDD-PICH-CCode ::= ENUMERATED { + cc16-1, cc16-2, cc16-3, cc16-4, + cc16-5, cc16-6, cc16-7, cc16-8, + cc16-9, cc16-10, cc16-11, cc16-12, + cc16-13, cc16-14, cc16-15, cc16-16 } + +TDD768-PICH-CCode ::= ENUMERATED { + cc32-1, cc32-2, cc32-3, cc32-4, + cc32-5, cc32-6, cc32-7, cc32-8, + cc32-9, cc32-10, cc32-11, cc32-12, + cc32-13, cc32-14, cc32-15, cc32-16, + cc32-17, cc32-18, cc32-19, cc32-20, + cc32-21, cc32-22, cc32-23, cc32-24, + cc32-25, cc32-26, cc32-27, cc32-28, + cc32-29, cc32-30, cc32-31, cc32-32 } + +TDD-MBSFNInformation ::= SEQUENCE (SIZE (1..maxTS)) OF + TDD-MBSFNTSlotInfo + +TDD-MBSFNTSlotInfo ::= SEQUENCE { + timeSlotNumber TimeslotNumber, + cellParametersID CellParametersID +} + +TDD-PRACH-CCode8 ::= ENUMERATED { + cc8-1, cc8-2, cc8-3, cc8-4, + cc8-5, cc8-6, cc8-7, cc8-8 } + +TDD-PRACH-CCode16 ::= ENUMERATED { + cc16-1, cc16-2, cc16-3, cc16-4, + cc16-5, cc16-6, cc16-7, cc16-8, + cc16-9, cc16-10, cc16-11, cc16-12, + cc16-13, cc16-14, cc16-15, cc16-16 } + +TDD-PRACH-CCode-LCR-r4 ::= ENUMERATED { + cc4-1, cc4-2, cc4-3, cc4-4, + cc8-1, cc8-2, cc8-3, cc8-4, + cc8-5, cc8-6, cc8-7, cc8-8, + cc16-1, cc16-2, cc16-3, cc16-4, + cc16-5, cc16-6, cc16-7, cc16-8, + cc16-9, cc16-10, cc16-11, cc16-12, + cc16-13, cc16-14, cc16-15, cc16-16 } + +TDD-PRACH-CCodeList ::= CHOICE { + sf8 SEQUENCE (SIZE (1..8)) OF + TDD-PRACH-CCode8, +-- Channelisation codes cc16-9, cc16-10, cc16-11, cc16-12, cc16-13, cc16-14, +-- cc16-15 and cc16-16 shall not be used + sf16 SEQUENCE (SIZE (1..8)) OF + TDD-PRACH-CCode16 +} + +TDD768-PRACH-CCode16 ::= ENUMERATED { + cc16-1, cc16-2, cc16-3, cc16-4, + cc16-5, cc16-6, cc16-7, cc16-8, + cc16-9, cc16-10, cc16-11, cc16-12, + cc16-13, cc16-14, cc16-15, cc16-16 } + +TDD768-PRACH-CCode32 ::= ENUMERATED { + cc32-1, cc32-2, cc32-3, cc32-4, + cc32-5, cc32-6, cc32-7, cc32-8, + cc32-9, cc32-10, cc32-11, cc32-12, + cc32-13, cc32-14, cc32-15, cc32-16 } + +TDD768-PRACH-CCodeList ::= CHOICE { + sf32 SEQUENCE (SIZE (1..16)) OF + TDD768-PRACH-CCode32, +-- Channelisation codes cc32-17, cc32-18, cc32-19, cc32-20, cc32-21, cc32-22, +-- cc32-23, cc32-24, cc32-25, cc32-26, cc32-27, cc32-28, cc32-29, cc32-30, cc32-31 +-- and cc32-32 shall not be used + sf16 SEQUENCE (SIZE (1..16)) OF + TDD768-PRACH-CCode16 +} + +TFC-ControlDuration ::= ENUMERATED { + tfc-cd1, tfc-cd2, tfc-cd4, tfc-cd8, + tfc-cd16, tfc-cd24, tfc-cd32, + tfc-cd48, tfc-cd64, tfc-cd128, + tfc-cd192, tfc-cd256, tfc-cd512 } + +TFCI-Coding ::= ENUMERATED { + tfci-bits-4, tfci-bits-8, + tfci-bits-16, tfci-bits-32 } + +TGCFN ::= INTEGER (0..255) + +-- In TGD, value 270 represents "undefined" in the tabular description. +TGD ::= INTEGER (15..270) + +TGL ::= INTEGER (1..14) + +TGMP ::= ENUMERATED { + tdd-Measurement, fdd-Measurement, + gsm-CarrierRSSIMeasurement, + gsm-initialBSICIdentification, gsmBSICReconfirmation, + multi-carrier } + +TGMP-r8 ::= ENUMERATED { + tdd-Measurement, fdd-Measurement, + gsm-CarrierRSSIMeasurement, + gsm-initialBSICIdentification, gsmBSICReconfirmation, + multi-carrier, e-UTRA, spare } + +TGP-Sequence ::= SEQUENCE { + tgpsi TGPSI, + tgps-Status CHOICE { + activate SEQUENCE { + tgcfn TGCFN + }, + deactivate NULL + }, + tgps-ConfigurationParams TGPS-ConfigurationParams OPTIONAL +} + +TGP-Sequence-r8 ::= SEQUENCE { + tgpsi TGPSI, + tgps-Status CHOICE { + activate SEQUENCE { + tgcfn TGCFN + }, + deactivate NULL + }, + tgps-ConfigurationParams TGPS-ConfigurationParams-r8 OPTIONAL +} + +TGP-Sequence-r10 ::= SEQUENCE { + tgpsi TGPSI, + tgps-Status CHOICE { + activate SEQUENCE { + tgcfn TGCFN + }, + deactivate NULL + }, + tgps-ConfigurationParams TGPS-ConfigurationParams-r10 OPTIONAL +} + +TGPS-Reconfiguration-CFN ::= INTEGER (0..255) + +TGP-SequenceList ::= SEQUENCE (SIZE (1..maxTGPS)) OF + TGP-Sequence + +TGP-SequenceList-r8 ::= SEQUENCE (SIZE (1..maxTGPS)) OF + TGP-Sequence-r8 + +TGP-SequenceList-r10 ::= SEQUENCE (SIZE (1..maxTGPS)) OF + TGP-Sequence-r10 + +TGP-SequenceShort ::= SEQUENCE { + tgpsi TGPSI, + tgps-Status CHOICE { + activate SEQUENCE { + tgcfn TGCFN + }, + deactivate NULL + } +} + +TGP-SequenceShort-r10 ::= SEQUENCE { + tgpsi TGPSI, + tgps-Status CHOICE { + activate SEQUENCE { + tgcfn TGCFN + }, + deactivate NULL + }, + freqSpecificCompressedMode ENUMERATED { true } OPTIONAL +} + +TGPL ::= INTEGER (1..144) + +-- TABULAR: In TGPRC, value 0 represents "infinity" in the tabular description. +TGPRC ::= INTEGER (0..511) + +TGPS-ConfigurationParams ::= SEQUENCE { + tgmp TGMP, + tgprc TGPRC, + tgsn TGSN, + tgl1 TGL, + tgl2 TGL OPTIONAL, + tgd TGD, + tgpl1 TGPL, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it shall be ignored. + dummy TGPL OPTIONAL, + rpp RPP, + itp ITP, + -- TABULAR: Compressed mode method is nested inside UL-DL-Mode + ul-DL-Mode UL-DL-Mode, + dl-FrameType DL-FrameType, + deltaSIR1 DeltaSIR, + deltaSIRAfter1 DeltaSIR, + deltaSIR2 DeltaSIR OPTIONAL, + deltaSIRAfter2 DeltaSIR OPTIONAL, + nidentifyAbort NidentifyAbort OPTIONAL, + treconfirmAbort TreconfirmAbort OPTIONAL +} + +TGPS-ConfigurationParams-r8 ::= SEQUENCE { + tgmp TGMP-r8, + tgprc TGPRC, + tgsn TGSN, + tgl1 TGL, + tgl2 TGL OPTIONAL, + tgd TGD, + tgpl1 TGPL, + rpp RPP, + itp ITP, + -- TABULAR: Compressed mode method is nested inside UL-DL-Mode + ul-DL-Mode UL-DL-Mode, + dl-FrameType DL-FrameType, + deltaSIR1 DeltaSIR, + deltaSIRAfter1 DeltaSIR, + deltaSIR2 DeltaSIR OPTIONAL, + deltaSIRAfter2 DeltaSIR OPTIONAL, + nidentifyAbort NidentifyAbort OPTIONAL, + treconfirmAbort TreconfirmAbort OPTIONAL +} + +TGPS-ConfigurationParams-r10 ::= SEQUENCE { + tgmp TGMP-r8, + freqSpecificCompressedMode ENUMERATED { true } OPTIONAL, + tgprc TGPRC, + tgsn TGSN, + tgl1 TGL, + tgl2 TGL OPTIONAL, + tgd TGD, + tgpl1 TGPL, + rpp RPP, + itp ITP, + -- TABULAR: Compressed mode method is nested inside UL-DL-Mode + ul-DL-Mode UL-DL-Mode, + dl-FrameType DL-FrameType, + deltaSIR1 DeltaSIR, + deltaSIRAfter1 DeltaSIR, + deltaSIR2 DeltaSIR OPTIONAL, + deltaSIRAfter2 DeltaSIR OPTIONAL, + nidentifyAbort NidentifyAbort OPTIONAL, + treconfirmAbort TreconfirmAbort OPTIONAL +} + +TGPSI ::= INTEGER (1..maxTGPS) + +TGSN ::= INTEGER (0..14) + +TimeInfo ::= SEQUENCE { + activationTime ActivationTime OPTIONAL, + durationTimeInfo DurationTimeInfo OPTIONAL +} + +TimeSlotLCR-ext ::= ENUMERATED { + ts7, spare3, spare2, spare1 } + +TimeslotList ::= SEQUENCE (SIZE (1..maxTS)) OF + TimeslotNumber + +TimeslotList-r4 ::= CHOICE { +-- the choice for 7.68 Mcps TDD is as for 3.84 Mcps TDD -- + tdd384 SEQUENCE (SIZE (1..maxTS)) OF + TimeslotNumber, + tdd128 SEQUENCE (SIZE (1..maxTS-LCR)) OF + TimeslotNumber-LCR-r4 +} + +-- If TimeslotNumber is included for a 1.28Mcps TDD description, it shall take values from 0..6 +TimeslotNumber ::= INTEGER (0..14) + +TimeslotNumber-LCR-r4 ::= INTEGER (0..6) + +TimeslotNumber-PRACH-LCR-r4 ::= INTEGER (1..6) + +TimeslotSync2 ::= INTEGER (0..6) + +DTX-DRX-TimingInfo-r7 ::= SEQUENCE { + timing CHOICE { + continue NULL, + newTiming NewTiming + } +} + +-- Actual value TimingOffset = IE value * 256 +TimingOffset ::= INTEGER (0..149) + +TimingMaintainedSynchInd ::= ENUMERATED { false } + +TPC-CombinationIndex ::= INTEGER (0..5) + +TPC-CommandTargetRate ::= INTEGER (0..10) + +-- Actual value TPC-StepSizeFDD = IE value + 1 +TPC-StepSizeFDD ::= INTEGER (0..1) + +TPC-StepSizeTDD ::= INTEGER (1..3) + +TransportBlockSizeIndex ::= INTEGER (1..32) + +-- Actual value TreconfirmAbort = IE value * 0.5 seconds +TreconfirmAbort ::= INTEGER (1..20) + +TwoMsHarqConfiguration ::= SEQUENCE { + harqProcessAllocation BIT STRING (SIZE (8)) OPTIONAL +} + +TX-DiversityMode ::= ENUMERATED { + noDiversity, + sttd, + closedLoopMode1, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy } + +UARFCN ::= INTEGER (0..16383) + +UCSM-Info ::= SEQUENCE { + minimumSpreadingFactor MinimumSpreadingFactor, + nf-Max NF-Max, + channelReqParamsForUCSM ChannelReqParamsForUCSM +} + +UE-DPCCH-Burst ::= ENUMERATED { + sub-frames-1, + sub-frames-2, + sub-frames-5, + spare1 } + +UE-DRX-Cycle ::= ENUMERATED { + sub-frames-4, + sub-frames-5, + sub-frames-8, + sub-frames-10, + sub-frames-16, + sub-frames-20, + spare2, + spare1 } + +UE-DTX-Cycle1-10ms ::= ENUMERATED { + sub-frames-1, + sub-frames-5, + sub-frames-10, + sub-frames-20 } + +UE-DTX-Cycle1-2ms ::= ENUMERATED { + sub-frames-1, + sub-frames-4, + sub-frames-5, + sub-frames-8, + sub-frames-10, + sub-frames-16, + sub-frames-20, + spare1 } + +UE-DTX-Cycle2-10ms ::= ENUMERATED { + sub-frames-5, + sub-frames-10, + sub-frames-20, + sub-frames-40, + sub-frames-80, + sub-frames-160, + spare2, + spare1 } + +UE-DTX-Cycle2-2ms ::= ENUMERATED { + sub-frames-4, + sub-frames-5, + sub-frames-8, + sub-frames-10, + sub-frames-16, + sub-frames-20, + sub-frames-32, + sub-frames-40, + sub-frames-64, + sub-frames-80, + sub-frames-128, + sub-frames-160, + spare4, + spare3, + spare2, + spare1 } + +UE-DTX-Cycle2InactivityThreshold ::= ENUMERATED { + e-dch-tti-1, + e-dch-tti-4, + e-dch-tti-8, + e-dch-tti-16, + e-dch-tti-32, + e-dch-tti-64, + e-dch-tti-128, + e-dch-tti-256, + spare8, + spare7, + spare6, + spare5, + spare4, + spare3, + spare2, + spare1 } + +UE-DTX-long-preamble-length ::= ENUMERATED { + slots-4, + slots-15 } + +UE-DTX-DRX-Offset ::= INTEGER (0..159) + +UE-GrantMonitoring-InactivityThreshold ::= ENUMERATED { + e-dch-tti-0, + e-dch-tti-1, + e-dch-tti-2, + e-dch-tti-4, + e-dch-tti-8, + e-dch-tti-16, + e-dch-tti-32, + e-dch-tti-64, + e-dch-tti-128, + e-dch-tti-256, + spare6, + spare5, + spare4, + spare3, + spare2, + spare1 } + +UL-16QAM-Config ::= SEQUENCE { + ul-16QAM-Settings UL-16QAM-Settings OPTIONAL, + e-TFCI-TableIndex E-TFCI-TableIndex OPTIONAL, + mac-es-e-resetIndicator ENUMERATED { true } OPTIONAL +} + +UL-16QAM-Settings ::= SEQUENCE { + beta-Ed-Gain-E-AGCH-Table-Selection INTEGER (0..1) +} + +UL-64QAM-Config ::= SEQUENCE { + ul-64QAM-Settings UL-64QAM-Settings OPTIONAL, + mac-is-i-resetIndicator ENUMERATED { true } OPTIONAL +} + +UL-64QAM-Settings ::= SEQUENCE { + beta-Ed-Gain-E-AGCH-Table-Selection INTEGER (0..1) +} + +UL-CCTrCH ::= SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + ul-TargetSIR UL-TargetSIR, + timeInfo TimeInfo, + commonTimeslotInfo CommonTimeslotInfo OPTIONAL, + ul-CCTrCH-TimeslotsCodes UplinkTimeslotsCodes OPTIONAL +} + +UL-CCTrCH-r4 ::= SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + -- The IE ul-TargetSIR corresponds to PRX-DPCHdes for 1.28Mcps TDD + -- Actual value PRX-DPCHdes = (value of IE "ul-TargetSIR" - 120) + ul-TargetSIR UL-TargetSIR, + timeInfo TimeInfo, + commonTimeslotInfo CommonTimeslotInfo OPTIONAL, + tddOption CHOICE { + tdd384 SEQUENCE { + ul-CCTrCH-TimeslotsCodes UplinkTimeslotsCodes OPTIONAL + }, + tdd128 SEQUENCE { + ul-CCTrCH-TimeslotsCodes UplinkTimeslotsCodes-LCR-r4 OPTIONAL + } + } +} + +UL-CCTrCH-r7 ::= SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + -- The IE ul-TargetSIR corresponds to PRX-DPCHdes for 1.28Mcps TDD + -- Actual value PRX-DPCHdes = (value of IE "ul-TargetSIR" - 120) + ul-TargetSIR UL-TargetSIR, + timeInfo TimeInfo, + commonTimeslotInfo CommonTimeslotInfo OPTIONAL, + tddOption CHOICE { + tdd384 SEQUENCE { + ul-CCTrCH-TimeslotsCodes UplinkTimeslotsCodes OPTIONAL + }, + tdd768 SEQUENCE { + ul-CCTrCH-TimeslotsCodes UplinkTimeslotsCodes-VHCR OPTIONAL + }, + tdd128 SEQUENCE { + ul-CCTrCH-TimeslotsCodes UplinkTimeslotsCodes-LCR-r7 OPTIONAL + } + } +} + +UL-CCTrCHList ::= SEQUENCE (SIZE (1..maxCCTrCH)) OF + UL-CCTrCH + +UL-CCTrCHList-r4 ::= SEQUENCE (SIZE (1..maxCCTrCH)) OF + UL-CCTrCH-r4 + +UL-CCTrCHList-r7 ::= SEQUENCE (SIZE (1..maxCCTrCH)) OF + UL-CCTrCH-r7 + +UL-CCTrCHListToRemove ::= SEQUENCE (SIZE (1..maxCCTrCH)) OF + TFCS-IdentityPlain + +UL-CCTrChTPCList ::= SEQUENCE (SIZE (0..maxCCTrCH)) OF + TFCS-Identity + +UL-ChannelRequirement ::= CHOICE { + ul-DPCH-Info UL-DPCH-Info, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received the UE behaviour is not specified. + dummy CPCH-SetInfo +} + +UL-ChannelRequirement-r4 ::= CHOICE { + ul-DPCH-Info UL-DPCH-Info-r4, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received the UE behaviour is not specified. + dummy CPCH-SetInfo +} + +UL-ChannelRequirement-r5 ::= CHOICE { + ul-DPCH-Info UL-DPCH-Info-r5, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received the UE behaviour is not specified. + dummy CPCH-SetInfo +} + +-- Note: the reference to CPCH in the element name below is incorrect. The name is not +-- changed to keep it aligned with R99. +UL-ChannelRequirementWithCPCH-SetID ::= CHOICE { + ul-DPCH-Info UL-DPCH-Info, + -- dummy1 and dummy 2 are not used in this version of the specification, they should + -- not be sent and if received the UE behaviour is not specified. + dummy1 CPCH-SetInfo, + dummy2 CPCH-SetID +} + +-- Note: the reference to CPCH in the element name below is incorrect. The name is not +-- changed to keep it aligned with R99. +UL-ChannelRequirementWithCPCH-SetID-r4 ::= CHOICE { + ul-DPCH-Info UL-DPCH-Info-r4, + -- dummy1 and dummy2 are not used in this version of the specification, they + -- should not be sent and if received the UE behaviour is not specified. + dummy1 CPCH-SetInfo, + dummy2 CPCH-SetID +} + +-- Note: the reference to CPCH in the element name below is incorrect. The name is not +-- changed to keep it aligned with R99. +UL-ChannelRequirementWithCPCH-SetID-r5 ::= CHOICE { + ul-DPCH-Info UL-DPCH-Info-r5, + -- dummy1 and dummy2 are not used in this version of the specification, they should + -- not be sent and if received the UE behaviour is not specified. + dummy1 CPCH-SetInfo, + dummy2 CPCH-SetID +} + + +UL-CLTD-InfoFDD ::= SEQUENCE { + configurationInfo CHOICE { + continue NULL, + newConfiguration SEQUENCE { + s-dpcch-Info S-DPCCH-Information, + initial-CLTD-ActivationState ENUMERATED { first-state, second-state } OPTIONAL, + primaryCPICH-Info PrimaryCPICH-Info OPTIONAL + } + } +} + +UL-CompressedModeMethod ::= ENUMERATED { + sf-2, + higherLayerScheduling } + +UL-DL-Mode ::= CHOICE { + ul UL-CompressedModeMethod, + dl DL-CompressedModeMethod, + ul-and-dl SEQUENCE { + ul UL-CompressedModeMethod, + dl DL-CompressedModeMethod + }} + +UL-DPCCH-SlotFormat ::= ENUMERATED { + slf0, slf1, slf2 } + +UL-DPCH-CodeInfoForCommonEDCH ::= SEQUENCE { + ul-DPCCHscramblingCodeType ScramblingCodeType, + ul-DPCCHscramblingCode UL-ScramblingCode OPTIONAL +} + +UL-DPCH-Info ::= SEQUENCE { + ul-DPCH-PowerControlInfo UL-DPCH-PowerControlInfo OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + scramblingCodeType ScramblingCodeType, + scramblingCode UL-ScramblingCode, + numberOfDPDCH NumberOfDPDCH DEFAULT 1, + spreadingFactor SpreadingFactor, + tfci-Existence BOOLEAN, + -- numberOfFBI-Bits is conditional based on history + numberOfFBI-Bits NumberOfFBI-Bits OPTIONAL, + puncturingLimit PuncturingLimit + }, + tdd SEQUENCE { + ul-TimingAdvance UL-TimingAdvanceControl OPTIONAL, + ul-CCTrCHList UL-CCTrCHList OPTIONAL, + ul-CCTrCHListToRemove UL-CCTrCHListToRemove OPTIONAL + } + } +} + +UL-DPCH-Info-r4 ::= SEQUENCE { + ul-DPCH-PowerControlInfo UL-DPCH-PowerControlInfo-r4 OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + scramblingCodeType ScramblingCodeType, + scramblingCode UL-ScramblingCode, + numberOfDPDCH NumberOfDPDCH DEFAULT 1, + spreadingFactor SpreadingFactor, + tfci-Existence BOOLEAN, + -- numberOfFBI-Bits is conditional based on history + numberOfFBI-Bits NumberOfFBI-Bits OPTIONAL, + puncturingLimit PuncturingLimit + }, + tdd SEQUENCE { + ul-TimingAdvance UL-TimingAdvanceControl-r4 OPTIONAL, + ul-CCTrCHList UL-CCTrCHList-r4 OPTIONAL, + ul-CCTrCHListToRemove UL-CCTrCHListToRemove OPTIONAL + } + } +} + +UL-DPCH-Info-r5 ::= SEQUENCE { + ul-DPCH-PowerControlInfo UL-DPCH-PowerControlInfo-r5 OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + scramblingCodeType ScramblingCodeType, + scramblingCode UL-ScramblingCode, + numberOfDPDCH NumberOfDPDCH DEFAULT 1, + spreadingFactor SpreadingFactor, + tfci-Existence BOOLEAN, + -- numberOfFBI-Bits is conditional based on history + numberOfFBI-Bits NumberOfFBI-Bits OPTIONAL, + puncturingLimit PuncturingLimit + }, + tdd SEQUENCE { + ul-TimingAdvance UL-TimingAdvanceControl-r4 OPTIONAL, + ul-CCTrCHList UL-CCTrCHList-r4 OPTIONAL, + ul-CCTrCHListToRemove UL-CCTrCHListToRemove OPTIONAL + } + } +} + +UL-DPCH-Info-r6 ::= SEQUENCE { + ul-DPCH-PowerControlInfo UL-DPCH-PowerControlInfo-r6 OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + scramblingCodeType ScramblingCodeType, + scramblingCode UL-ScramblingCode, + dpdchPresence CHOICE { + present SEQUENCE { + numberOfDPDCH NumberOfDPDCH DEFAULT 1, + spreadingFactor SpreadingFactor, + tfci-Existence BOOLEAN, + -- numberOfFBI-Bits is conditional based on history + numberOfFBI-Bits NumberOfFBI-Bits OPTIONAL, + puncturingLimit PuncturingLimit + }, + notPresent SEQUENCE { + tfci-Existence BOOLEAN, + -- numberOfFBI-Bits is conditional based on history + numberOfFBI-Bits NumberOfFBI-Bits OPTIONAL + } + } + }, + tdd SEQUENCE { + ul-TimingAdvance UL-TimingAdvanceControl-r4 OPTIONAL, + ul-CCTrCHList UL-CCTrCHList-r4 OPTIONAL, + ul-CCTrCHListToRemove UL-CCTrCHListToRemove OPTIONAL + } + } +} + +UL-DPCH-Info-r7 ::= SEQUENCE { + ul-DPCH-PowerControlInfo UL-DPCH-PowerControlInfo-r7 OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + scramblingCodeType ScramblingCodeType, + scramblingCode UL-ScramblingCode, + dpdchPresence CHOICE { + present SEQUENCE { + numberOfDPDCH NumberOfDPDCH DEFAULT 1, + spreadingFactor SpreadingFactor, + tfci-Existence BOOLEAN, + -- numberOfFBI-Bits is conditional based on history + numberOfFBI-Bits NumberOfFBI-Bits OPTIONAL, + numberOfTPC-Bits NumberOfTPC-Bits OPTIONAL, + puncturingLimit PuncturingLimit + }, + notPresent SEQUENCE { + tfci-Existence BOOLEAN, + -- numberOfFBI-Bits is conditional based on history + numberOfFBI-Bits NumberOfFBI-Bits OPTIONAL, + numberOfTPC-Bits NumberOfTPC-Bits OPTIONAL + } + } + }, + tdd SEQUENCE { + ul-TimingAdvance UL-TimingAdvanceControl-r7 OPTIONAL, + ul-CCTrCHList UL-CCTrCHList-r7 OPTIONAL, + ul-CCTrCHListToRemove UL-CCTrCHListToRemove OPTIONAL + } + } +} + +UL-DPCH-Info-r11 ::= SEQUENCE { + ul-DPCH-PowerControlInfo UL-DPCH-PowerControlInfo-r11 OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + scramblingCodeType ScramblingCodeType, + scramblingCode UL-ScramblingCode, + dpdchPresence CHOICE { + present SEQUENCE { + numberOfDPDCH NumberOfDPDCH DEFAULT 1, + spreadingFactor SpreadingFactor, + tfci-Existence BOOLEAN, + -- numberOfFBI-Bits is conditional based on history + numberOfFBI-Bits NumberOfFBI-Bits OPTIONAL, + numberOfTPC-Bits NumberOfTPC-Bits OPTIONAL, + puncturingLimit PuncturingLimit + }, + notPresent SEQUENCE { + tfci-Existence BOOLEAN, + -- numberOfFBI-Bits is conditional based on history + numberOfFBI-Bits NumberOfFBI-Bits OPTIONAL, + numberOfTPC-Bits NumberOfTPC-Bits OPTIONAL + } + } + }, + tdd SEQUENCE { + ul-TimingAdvance UL-TimingAdvanceControl-r7 OPTIONAL, + ul-CCTrCHList UL-CCTrCHList-r7 OPTIONAL, + ul-CCTrCHListToRemove UL-CCTrCHListToRemove OPTIONAL + } + } +} + +UL-DPCH-InfoPostFDD ::= SEQUENCE { + ul-DPCH-PowerControlInfo UL-DPCH-PowerControlInfoPostFDD, + scramblingCodeType ScramblingCodeType, + reducedScramblingCodeNumber ReducedScramblingCodeNumber, + spreadingFactor SpreadingFactor + +} + +UL-DPCH-InfoPostTDD ::= SEQUENCE { + ul-DPCH-PowerControlInfo UL-DPCH-PowerControlInfoPostTDD, + ul-TimingAdvance UL-TimingAdvanceControl OPTIONAL, + ul-CCTrCH-TimeslotsCodes UplinkTimeslotsCodes +} + +UL-DPCH-InfoPostTDD-LCR-r4 ::= SEQUENCE { + ul-DPCH-PowerControlInfo UL-DPCH-PowerControlInfoPostTDD-LCR-r4, + ul-TimingAdvance UL-TimingAdvanceControl-LCR-r4 OPTIONAL, + ul-CCTrCH-TimeslotsCodes UplinkTimeslotsCodes-LCR-r4 +} + +UL-DPCH-InfoPredef ::= SEQUENCE { + ul-DPCH-PowerControlInfo UL-DPCH-PowerControlInfoPredef, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + tfci-Existence BOOLEAN, + puncturingLimit PuncturingLimit + }, + tdd SEQUENCE { + commonTimeslotInfo CommonTimeslotInfo + } + } +} + +UL-DPCH-InfoPredef-v770ext ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + numberOfTPC-Bits NumberOfTPC-Bits OPTIONAL + }, + tdd NULL } +} + +UL-DPCH-PowerControlInfo ::= CHOICE { + fdd SEQUENCE { + dpcch-PowerOffset DPCCH-PowerOffset, + pc-Preamble PC-Preamble, + sRB-delay SRB-delay, + -- TABULAR: TPC step size nested inside PowerControlAlgorithm + powerControlAlgorithm PowerControlAlgorithm + }, + tdd SEQUENCE { + ul-TargetSIR UL-TargetSIR OPTIONAL, + ul-OL-PC-Signalling CHOICE { + broadcast-UL-OL-PC-info NULL, + individuallySignalled SEQUENCE { + individualTS-InterferenceList IndividualTS-InterferenceList, + dpch-ConstantValue ConstantValueTdd, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + } + } OPTIONAL + } +} + +UL-DPCH-PowerControlInfo-r4 ::= CHOICE { + fdd SEQUENCE { + dpcch-PowerOffset DPCCH-PowerOffset, + pc-Preamble PC-Preamble, + sRB-delay SRB-delay, + -- TABULAR: TPC step size nested inside PowerControlAlgorithm + powerControlAlgorithm PowerControlAlgorithm + }, + tdd SEQUENCE { + -- The IE ul-TargetSIR corresponds to PRX-DPCHdes for 1.28Mcps TDD + -- Actual value PRX-DPCHdes = (value of IE "ul-TargetSIR" - 120) + ul-TargetSIR UL-TargetSIR OPTIONAL, + ul-OL-PC-Signalling CHOICE { + broadcast-UL-OL-PC-info NULL, + individuallySignalled SEQUENCE { + tddOption CHOICE { + tdd384 SEQUENCE { + individualTS-InterferenceList IndividualTS-InterferenceList, + dpch-ConstantValue ConstantValue + }, + tdd128 SEQUENCE { + tpc-StepSize TPC-StepSizeTDD + } + }, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + } + } + } +} + +UL-DPCH-PowerControlInfo-r5 ::= CHOICE { + fdd SEQUENCE { + dpcch-PowerOffset DPCCH-PowerOffset, + pc-Preamble PC-Preamble, + sRB-delay SRB-delay, + -- TABULAR: TPC step size nested inside PowerControlAlgorithm + powerControlAlgorithm PowerControlAlgorithm, + deltaACK DeltaACK OPTIONAL, + deltaNACK DeltaNACK OPTIONAL, + ack-NACK-repetition-factor ACK-NACK-repetitionFactor OPTIONAL + }, + tdd SEQUENCE { + -- The IE ul-TargetSIR corresponds to PRX-DPCHdes for 1.28Mcps TDD + -- Actual value PRX-DPCHdes = (value of IE "ul-TargetSIR" - 120) + ul-TargetSIR UL-TargetSIR OPTIONAL, + ul-OL-PC-Signalling CHOICE { + broadcast-UL-OL-PC-info NULL, + individuallySignalled SEQUENCE { + tddOption CHOICE { + tdd384 SEQUENCE { + individualTS-InterferenceList IndividualTS-InterferenceList, + dpch-ConstantValue ConstantValue + }, + tdd128 SEQUENCE { + tpc-StepSize TPC-StepSizeTDD + } + }, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + } + } + } +} + +UL-DPCH-PowerControlInfo-r6 ::= CHOICE { + fdd SEQUENCE { + dpcch-PowerOffset DPCCH-PowerOffset, + pc-Preamble PC-Preamble, + sRB-delay SRB-delay, + -- TABULAR: TPC step size nested inside PowerControlAlgorithm + powerControlAlgorithm PowerControlAlgorithm, + deltaACK DeltaACK OPTIONAL, + deltaNACK DeltaNACK OPTIONAL, + ack-NACK-repetition-factor ACK-NACK-repetitionFactor OPTIONAL, + harq-Preamble-Mode HARQ-Preamble-Mode + }, + tdd SEQUENCE { + -- The IE ul-TargetSIR corresponds to PRX-DPCHdes for 1.28Mcps TDD + -- Actual value PRX-DPCHdes = (value of IE "ul-TargetSIR" - 120) + ul-TargetSIR UL-TargetSIR OPTIONAL, + ul-OL-PC-Signalling CHOICE { + broadcast-UL-OL-PC-info NULL, + individuallySignalled SEQUENCE { + tddOption CHOICE { + tdd384 SEQUENCE { + individualTS-InterferenceList IndividualTS-InterferenceList, + dpch-ConstantValue ConstantValue + }, + tdd128 SEQUENCE { + beaconPLEst BEACON-PL-Est OPTIONAL, + tpc-StepSize TPC-StepSizeTDD + } + }, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + } + } + } +} + +UL-DPCH-PowerControlInfo-r7 ::= CHOICE { + fdd SEQUENCE { + dpcch-PowerOffset DPCCH-PowerOffset, + pc-Preamble PC-Preamble, + sRB-delay SRB-delay, + -- TABULAR: TPC step size nested inside PowerControlAlgorithm + powerControlAlgorithm PowerControlAlgorithm, + deltaACK DeltaACK OPTIONAL, + deltaNACK DeltaNACK OPTIONAL, + ack-NACK-repetition-factor ACK-NACK-repetitionFactor OPTIONAL, + harq-Preamble-Mode HARQ-Preamble-Mode + }, + tdd SEQUENCE { + -- The IE ul-TargetSIR corresponds to PRX-DPCHdes for 1.28Mcps TDD + -- Actual value PRX-DPCHdes = (value of IE "ul-TargetSIR" - 120) + ul-TargetSIR UL-TargetSIR OPTIONAL, + ul-OL-PC-Signalling CHOICE { + broadcast-UL-OL-PC-info NULL, + individuallySignalled SEQUENCE { + tddOption CHOICE { + tdd384 SEQUENCE { + individualTS-InterferenceList IndividualTS-InterferenceList, + dpch-ConstantValue ConstantValue + }, + tdd768 SEQUENCE { + individualTS-InterferenceList IndividualTS-InterferenceList, + dpch-ConstantValue ConstantValue + }, + tdd128 SEQUENCE { + beaconPLEst BEACON-PL-Est OPTIONAL, + tpc-StepSize TPC-StepSizeTDD + } + }, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + } + } + } +} + +UL-DPCH-PowerControlInfo-r11 ::= CHOICE { + fdd SEQUENCE { + dpcch-PowerOffset DPCCH-PowerOffset, + pc-Preamble PC-Preamble, + sRB-delay SRB-delay, + -- TABULAR: TPC step size nested inside PowerControlAlgorithm + powerControlAlgorithm PowerControlAlgorithm, + deltaACK DeltaACK-r11 OPTIONAL, + deltaNACK DeltaNACK-r11 OPTIONAL, + ack-NACK-repetition-factor ACK-NACK-repetitionFactor OPTIONAL, + ack-NACK-repetition-factor-assisting ACK-NACK-repetitionFactor OPTIONAL, + harq-Preamble-Mode HARQ-Preamble-Mode + }, + tdd SEQUENCE { + -- The IE ul-TargetSIR corresponds to PRX-DPCHdes for 1.28Mcps TDD + -- Actual value PRX-DPCHdes = (value of IE "ul-TargetSIR" - 120) + ul-TargetSIR UL-TargetSIR OPTIONAL, + ul-OL-PC-Signalling CHOICE { + broadcast-UL-OL-PC-info NULL, + individuallySignalled SEQUENCE { + tddOption CHOICE { + tdd384 SEQUENCE { + individualTS-InterferenceList IndividualTS-InterferenceList, + dpch-ConstantValue ConstantValue + }, + tdd768 SEQUENCE { + individualTS-InterferenceList IndividualTS-InterferenceList, + dpch-ConstantValue ConstantValue + }, + tdd128 SEQUENCE { + beaconPLEst BEACON-PL-Est OPTIONAL, + tpc-StepSize TPC-StepSizeTDD + } + }, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + } + } + } +} + +UL-DPCHpowerControlInfoConcurrentTTI ::= SEQUENCE { + deltaACK DeltaACK OPTIONAL, + deltaNACK DeltaNACK OPTIONAL, + ack-NACK-repetition-factor ACK-NACK-repetitionFactor OPTIONAL +} + +UL-DPCHpowerControlInfoForCommonEDCH ::= SEQUENCE { + -- TABULAR: TPC step size nested inside PowerControlAlgorithm + powerControlAlgorithm PowerControlAlgorithm, + deltaACK DeltaACK OPTIONAL, + deltaNACK DeltaNACK OPTIONAL, + ack-NACK-repetition-factor ACK-NACK-repetitionFactor OPTIONAL +} + +UL-DPCH-PowerControlInfoPostFDD ::= SEQUENCE { + -- DPCCH-PowerOffset2 has a smaller range to save bits + dpcch-PowerOffset DPCCH-PowerOffset2, + pc-Preamble PC-Preamble, + sRB-delay SRB-delay +} + +UL-DPCH-PowerControlInfoPostTDD ::= SEQUENCE { + ul-TargetSIR UL-TargetSIR, + ul-TimeslotInterference TDD-UL-Interference +} + +UL-DPCH-PowerControlInfoPostTDD-LCR-r4 ::= SEQUENCE { + -- The IE ul-TargetSIR corresponds to PRX-DPCHdes for 1.28Mcps TDD + -- Actual value PRX-DPCHdes = (value of IE "ul-TargetSIR" - 120) + ul-TargetSIR UL-TargetSIR +} + +UL-DPCH-PowerControlInfoPredef ::= CHOICE { + fdd SEQUENCE { + -- TABULAR: TPC step size nested inside PowerControlAlgorithm + powerControlAlgorithm PowerControlAlgorithm + }, + tdd SEQUENCE { + -- dpch-ConstantValue shall be ignored if in 1.28Mcps TDD mode. + dpch-ConstantValue ConstantValueTdd + } +} + + +UL-EDCH-Information-ext ::= CHOICE { + fdd NULL, + tdd SEQUENCE { + non-ScheduledTransGrantInfo Non-ScheduledTransGrantInfoTDD-ext OPTIONAL + } +} + +UL-EDCH-Information-r6 ::= SEQUENCE { + mac-es-e-resetIndicator ENUMERATED { true } OPTIONAL, + e-DPCCH-Info E-DPCCH-Info OPTIONAL, + e-DPDCH-Info E-DPDCH-Info OPTIONAL, + schedulingTransmConfiguration E-DPDCH-SchedulingTransmConfiguration OPTIONAL +} + +UL-EDCH-Information-r7 ::= SEQUENCE { + mac-es-e-resetIndicator ENUMERATED { true } OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + e-DPCCH-Info E-DPCCH-Info-r7 OPTIONAL, + e-DPDCH-Info E-DPDCH-Info-r7 OPTIONAL, + schedulingTransmConfiguration E-DPDCH-SchedulingTransmConfiguration OPTIONAL, + ul-16QAM-Settings UL-16QAM-Settings OPTIONAL + }, + tdd SEQUENCE { + e-RUCCH-Info E-RUCCH-Info OPTIONAL, + e-PUCH-Info E-PUCH-Info OPTIONAL, + non-ScheduledTransGrantInfo Non-ScheduledTransGrantInfoTDD OPTIONAL + } + } +} + +UL-EDCH-Information-r8 ::= SEQUENCE { + mac-es-e-resetIndicator ENUMERATED { true } OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + e-DPCCH-Info E-DPCCH-Info-r7 OPTIONAL, + e-DPDCH-Info E-DPDCH-Info-r8 OPTIONAL, + schedulingTransmConfiguration E-DPDCH-SchedulingTransmConfiguration OPTIONAL, + ul-16QAM-Settings UL-16QAM-Settings OPTIONAL + }, + tdd SEQUENCE { + e-RUCCH-Info E-RUCCH-Info OPTIONAL, + e-PUCH-Info E-PUCH-Info OPTIONAL, + non-ScheduledTransGrantInfo Non-ScheduledTransGrantInfoTDD OPTIONAL + } + } +} + +UL-EDCH-Information-r9 ::= SEQUENCE { + mac-es-e-resetIndicator ENUMERATED { true } OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + e-DPCCH-Info E-DPCCH-Info-r7 OPTIONAL, + e-DPDCH-Info E-DPDCH-Info-r8 OPTIONAL, + schedulingTransmConfiguration E-DPDCH-SchedulingTransmConfiguration OPTIONAL, + ul-16QAM-Settings UL-16QAM-Settings OPTIONAL + }, + tdd SEQUENCE { + e-RUCCH-Info E-RUCCH-Info OPTIONAL, + e-PUCH-Info E-PUCH-Info OPTIONAL, + non-ScheduledTransGrantInfo Non-ScheduledTransGrantInfoTDD-r9 OPTIONAL + } + } +} + +UL-EDCH-Information-r11 ::= SEQUENCE { + mac-es-e-resetIndicator ENUMERATED { true } OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + e-DPCCH-Info E-DPCCH-Info-r7 OPTIONAL, + e-DPDCH-Info E-DPDCH-Info-r8 OPTIONAL, + ul-MIMO-Info UL-MIMO-InfoFDD OPTIONAL, + schedulingTransmConfiguration E-DPDCH-SchedulingTransmConfiguration OPTIONAL, + ul-16QAM-Settings UL-16QAM-Settings OPTIONAL, + ul-64QAM-Settings UL-64QAM-Settings OPTIONAL + }, + tdd SEQUENCE { + e-RUCCH-Info E-RUCCH-Info OPTIONAL, + e-PUCH-Info E-PUCH-Info OPTIONAL, + non-ScheduledTransGrantInfo Non-ScheduledTransGrantInfoTDD-r9 OPTIONAL + } + } +} + +UL-MIMO-InfoFDD ::= SEQUENCE { + configurationInfo CHOICE { + continue NULL, + newConfiguration SEQUENCE { + s-e-dpcch-power-offset INTEGER(0..17), + rank2-minimum-E-TFCI E-DCH-MinimumSet-E-TFCI, + inter-stream-compensation INTEGER(0..15) OPTIONAL + } + } +} + +UL-MulticarrierEDCH-InfolistItem-TDD128 ::= SEQUENCE { + uarfcn UARFCN, + prxdes-base INTEGER (-112..-50), + e-PUCH-info E-PUCH-Info-MulticarrierEDCH-TDD128 OPTIONAL, + e-AGCH-info E-AGCH-Information-TDD128 OPTIONAL, + e-HICH-info E-HICH-Information-TDD128 OPTIONAL +} + +UL-MulticarrierEDCH-Infolist-TDD128 ::= SEQUENCE (SIZE (1..maxTDD128Carrier-1)) OF + UL-MulticarrierEDCH-InfolistItem-TDD128 + +UL-MulticarrierEDCH-Deletelist-TDD128 ::= SEQUENCE (SIZE (1..maxTDD128Carrier-1)) OF + UARFCN + +UL-MulticarrierEDCHInfo-TDD128 ::= SEQUENCE { + configuration-info CHOICE { + continue NULL, + newConfiguration UL-MulticarrierEDCH-NewConfigurationInfo-TDD128 + } +} + +UL-MulticarrierEDCH-NewConfigurationInfo-TDD128 ::= SEQUENCE { + tsn-Length ENUMERATED { tsn-14bits } OPTIONAL, + ul-MulticarrierEDCH-Infolist UL-MulticarrierEDCH-Infolist-TDD128 OPTIONAL, + ul-MulticarrierEDCH-Deletelist UL-MulticarrierEDCH-Deletelist-TDD128 OPTIONAL +} + +UL-Interference ::= INTEGER (-110..-70) + +UL-ScramblingCode ::= INTEGER (0..16777215) + + +UL-SynchronisationParameters-r4 ::= SEQUENCE { + stepSize INTEGER (1..8), + frequency INTEGER (1..8) +} + +-- Actual value UL-TargetSIR = (IE value * 0.5) - 11 +UL-TargetSIR ::= INTEGER (0..62) + +UL-TimingAdvance ::= INTEGER (0..63) + +UL-TimingAdvanceControl ::= CHOICE { + disabled NULL, + enabled SEQUENCE { + ul-TimingAdvance UL-TimingAdvance OPTIONAL, + activationTime ActivationTime OPTIONAL + } +} + +UL-TimingAdvanceControl-r4 ::= CHOICE { + disabled NULL, + enabled SEQUENCE { + tddOption CHOICE { + tdd384 SEQUENCE { + ul-TimingAdvance UL-TimingAdvance OPTIONAL, + activationTime ActivationTime OPTIONAL + }, + tdd128 SEQUENCE { + ul-SynchronisationParameters UL-SynchronisationParameters-r4 OPTIONAL, + synchronisationParameters SynchronisationParameters-r4 OPTIONAL + } + } + } +} + +UL-TimingAdvanceControl-r7 ::= CHOICE { + disabled NULL, + enabled SEQUENCE { + tddOption CHOICE { + tdd384 SEQUENCE { + ul-TimingAdvance UL-TimingAdvance OPTIONAL, + ext-UL-TimingAdvance EXT-UL-TimingAdvance OPTIONAL, + activationTime ActivationTime OPTIONAL + }, + tdd768 SEQUENCE { + ext-UL-TimingAdvance EXT-UL-TimingAdvance OPTIONAL, + activationTime ActivationTime OPTIONAL + }, + tdd128 SEQUENCE { + ul-SynchronisationParameters UL-SynchronisationParameters-r4 OPTIONAL, + synchronisationParameters SynchronisationParameters-r4 OPTIONAL + } + } + } +} + +UL-TimingAdvanceControl-LCR-r4 ::= CHOICE { + disabled NULL, + enabled SEQUENCE { + ul-SynchronisationParameters UL-SynchronisationParameters-r4 OPTIONAL, + synchronisationParameters SynchronisationParameters-r4 OPTIONAL + } +} + +UL-TS-ChannelisationCode ::= ENUMERATED { + cc1-1, cc2-1, cc2-2, + cc4-1, cc4-2, cc4-3, cc4-4, + cc8-1, cc8-2, cc8-3, cc8-4, + cc8-5, cc8-6, cc8-7, cc8-8, + cc16-1, cc16-2, cc16-3, cc16-4, + cc16-5, cc16-6, cc16-7, cc16-8, + cc16-9, cc16-10, cc16-11, cc16-12, + cc16-13, cc16-14, cc16-15, cc16-16 } + +UL-TS-ChannelisationCodeList ::= SEQUENCE (SIZE (1..2)) OF + UL-TS-ChannelisationCode + +UL-TS-ChannelisationCodeList-r7 ::= SEQUENCE (SIZE (1..2)) OF + SEQUENCE { + ul-TS-Channelisation-Code UL-TS-ChannelisationCode, + plcch-info PLCCH-Info OPTIONAL +} + +UL-TS-ChannelisationCode-VHCR ::= ENUMERATED { + cc1-1, cc2-1, cc2-2, + cc4-1, cc4-2, cc4-3, cc4-4, + cc8-1, cc8-2, cc8-3, cc8-4, + cc8-5, cc8-6, cc8-7, cc8-8, + cc16-1, cc16-2, cc16-3, cc16-4, + cc16-5, cc16-6, cc16-7, cc16-8, + cc16-9, cc16-10, cc16-11, cc16-12, + cc16-13, cc16-14, cc16-15, cc16-16, + cc32-1, cc32-2, cc32-3, cc32-4, + cc32-5, cc32-6, cc32-7, cc32-8, + cc32-9, cc32-10, cc32-11, cc32-12, + cc32-13, cc32-14, cc32-15, cc32-16, + cc32-17, cc32-18, cc32-19, cc32-20, + cc32-21, cc32-22, cc32-23, cc32-24, + cc32-25, cc32-26, cc32-27, cc32-28, + cc32-29, cc32-30, cc32-31, cc32-32 } + +UL-TS-ChannelisationCodeList-VHCR ::= SEQUENCE (SIZE (1..2)) OF + UL-TS-ChannelisationCode-VHCR + +Uplink-DPCCH-Slot-Format-Information ::= ENUMERATED { + slot-format-1, + -- dummy is not used in this version of + -- specification, it should not be sent and if + -- received it should be ignored. + dummy, + slot-format-4, + spare1 } + +UplinkAdditionalTimeslots ::= SEQUENCE { + parameters CHOICE { + sameAsLast SEQUENCE { + timeslotNumber TimeslotNumber + }, + newParameters SEQUENCE { + individualTimeslotInfo IndividualTimeslotInfo, + ul-TS-ChannelisationCodeList UL-TS-ChannelisationCodeList + } + } +} + +UplinkAdditionalTimeslots-LCR-r4 ::= SEQUENCE { + parameters CHOICE { + sameAsLast SEQUENCE { + timeslotNumber TimeslotNumber + }, + newParameters SEQUENCE { + individualTimeslotInfo IndividualTimeslotInfo-LCR-r4, + ul-TS-ChannelisationCodeList UL-TS-ChannelisationCodeList + } + } +} + +UplinkAdditionalTimeslots-LCR-r7 ::= SEQUENCE { + parameters CHOICE { + sameAsLast SEQUENCE { + timeslotNumber TimeslotNumber + -- plcch-info assigned as previously defined slot + }, + newParameters SEQUENCE { + individualTimeslotInfo IndividualTimeslotInfo-LCR-r4, + ul-TS-ChannelisationCodeList UL-TS-ChannelisationCodeList-r7 + } + } +} + +UplinkAdditionalTimeslots-VHCR ::= SEQUENCE { + parameters CHOICE { + sameAsLast SEQUENCE { + timeslotNumber TimeslotNumber + }, + newParameters SEQUENCE { + individualTimeslotInfo IndividualTimeslotInfo-VHCR, + ul-TS-ChannelisationCodeList UL-TS-ChannelisationCodeList + } + } +} + +UplinkTimeslotsCodes ::= SEQUENCE { + dynamicSFusage BOOLEAN, + firstIndividualTimeslotInfo IndividualTimeslotInfo, + ul-TS-ChannelisationCodeList UL-TS-ChannelisationCodeList, + moreTimeslots CHOICE { + noMore NULL, + additionalTimeslots CHOICE { + consecutive SEQUENCE { + numAdditionalTimeslots INTEGER (1..maxTS-1) + }, + timeslotList SEQUENCE (SIZE (1..maxTS-1)) OF + UplinkAdditionalTimeslots + } + } +} + +UplinkTimeslotsCodes-VHCR ::= SEQUENCE { + dynamicSFusage BOOLEAN, + firstIndividualTimeslotInfo IndividualTimeslotInfo-VHCR, + ul-TS-ChannelisationCodeList UL-TS-ChannelisationCodeList-VHCR, + moreTimeslots CHOICE { + noMore NULL, + additionalTimeslots CHOICE { + consecutive SEQUENCE { + numAdditionalTimeslots INTEGER (1..maxTS-1) + }, + timeslotList SEQUENCE (SIZE (1..maxTS-1)) OF + UplinkAdditionalTimeslots-VHCR + } + } +} + +UplinkTimeslotsCodes-LCR-r4 ::= SEQUENCE { + dynamicSFusage BOOLEAN, + firstIndividualTimeslotInfo IndividualTimeslotInfo-LCR-r4, + ul-TS-ChannelisationCodeList UL-TS-ChannelisationCodeList, + moreTimeslots CHOICE { + noMore NULL, + additionalTimeslots CHOICE { + consecutive SEQUENCE { + numAdditionalTimeslots INTEGER (1..maxTS-LCR-1) + }, + timeslotList SEQUENCE (SIZE (1..maxTS-LCR-1)) OF + UplinkAdditionalTimeslots-LCR-r4 + } + } +} + +UplinkTimeslotsCodes-LCR-r7 ::= SEQUENCE { + dynamicSFusage BOOLEAN, + firstIndividualTimeslotInfo IndividualTimeslotInfo-LCR-r4, + ul-TS-ChannelisationCodeList UL-TS-ChannelisationCodeList-r7, + moreTimeslots CHOICE { + noMore NULL, + additionalTimeslots CHOICE { + consecutive SEQUENCE { + -- the choice of 'consecutive' is not needed because there is only 1 option. + numAdditionalTimeslots INTEGER (1..maxTS-LCR-1) + }, + timeslotList SEQUENCE (SIZE (1..maxTS-LCR-1)) OF + UplinkAdditionalTimeslots-LCR-r7 + } + } +} + +UpPCHposition-LCR ::= INTEGER (0..127) + +Wi-LCR ::= INTEGER (1..4) + +-- *************************************************** +-- +-- MEASUREMENT INFORMATION ELEMENTS (10.3.7) +-- +-- *************************************************** + +AcquisitionSatInfo ::= SEQUENCE { + satID SatID, + -- Actual value dopplerOthOrder = IE value * 2.5 + doppler0thOrder INTEGER (-2048..2047), + extraDopplerInfo ExtraDopplerInfo OPTIONAL, + codePhase INTEGER (0..1022), + integerCodePhase INTEGER (0..19), + gps-BitNumber INTEGER (0..3), + codePhaseSearchWindow CodePhaseSearchWindow, + azimuthAndElevation AzimuthAndElevation OPTIONAL +} + +AcquisitionSatInfo-va40ext ::= SEQUENCE { + azimuthAndElevation AzimuthAndElevation-va40ext OPTIONAL +} + +AcquisitionSatInfo-r10 ::= SEQUENCE { + satID SatID, + -- Actual value dopplerOthOrder = IE value * 2.5 + doppler0thOrder INTEGER (-2048..2047), + extraDopplerInfo ExtraDopplerInfo OPTIONAL, + codePhase INTEGER (0..1022), + integerCodePhase INTEGER (0..19), + gps-BitNumber INTEGER (0..3), + codePhaseSearchWindow CodePhaseSearchWindow, + azimuthAndElevation AzimuthAndElevation-r10 OPTIONAL +} + +AcquisitionSatInfoList ::= SEQUENCE (SIZE (1..maxSat)) OF + AcquisitionSatInfo + +AcquisitionSatInfoList-va40ext ::= SEQUENCE (SIZE (1..maxSat)) OF + AcquisitionSatInfo-va40ext + +AcquisitionSatInfoList-r10 ::= SEQUENCE (SIZE (1..maxSat)) OF + AcquisitionSatInfo-r10 + +AdditionalMeasurementID-List ::= SEQUENCE (SIZE (1..maxAdditionalMeas)) OF + MeasurementIdentity + +AdditionalMeasurementID-List-r9 ::= SEQUENCE (SIZE (1..maxAdditionalMeas)) OF + MeasurementIdentity-r9 + +AlmanacSatInfo ::= SEQUENCE { + dataID INTEGER (0..3), + satID SatID, + e BIT STRING (SIZE (16)), + t-oa BIT STRING (SIZE (8)), + deltaI BIT STRING (SIZE (16)), + omegaDot BIT STRING (SIZE (16)), + satHealth BIT STRING (SIZE (8)), + a-Sqrt BIT STRING (SIZE (24)), + omega0 BIT STRING (SIZE (24)), + m0 BIT STRING (SIZE (24)), + omega BIT STRING (SIZE (24)), + af0 BIT STRING (SIZE (11)), + af1 BIT STRING (SIZE (11)) +} + +AlmanacSatInfoList ::= SEQUENCE (SIZE (1..maxSat)) OF + AlmanacSatInfo + +ALM-ECEFsbasAlmanacSet ::= SEQUENCE { + sat-info-SBASecefList GANSS-SAT-Info-Almanac-SBASecefList +} + +ALM-GlonassAlmanacSet ::= SEQUENCE { + sat-info-GLOkpList GANSS-SAT-Info-Almanac-GLOkpList +} + +ALM-keplerianParameters ::= SEQUENCE { + -- time of week by 4096s steps + t-oa INTEGER (0..147), + iod-a INTEGER (0..3), + sat-info-kpList GANSS-SAT-Info-Almanac-KpList +} + +ALM-MidiAlmanacSet ::= SEQUENCE { + -- time of week by 4096s steps + t-oa INTEGER (0..147), + sat-info-MIDIkpList GANSS-SAT-Info-Almanac-MIDIkpList +} + +ALM-NAVKeplerianSet ::= SEQUENCE { + -- time of week by 4096s steps + t-oa INTEGER (0..147), + sat-info-NAVkpList GANSS-SAT-Info-Almanac-NAVkpList +} + +ALM-ReducedKeplerianSet ::= SEQUENCE { + -- time of week by 4096s steps + t-oa INTEGER (0..147), + sat-info-REDkpList GANSS-SAT-Info-Almanac-REDkpList +} + +AuxInfoGANSS-ID1 ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF AuxInfoGANSS-ID1-element + +AuxInfoGANSS-ID1-element ::= SEQUENCE { + svID INTEGER(0..63), + signalsAvailable BIT STRING (SIZE(8)) +} + +AuxInfoGANSS-ID3 ::= SEQUENCE (SIZE (1.. maxGANSSSat)) OF AuxInfoGANSS-ID3-element + +AuxInfoGANSS-ID3-element ::= SEQUENCE { + svID INTEGER (0..63), + signalsAvailable BIT STRING (SIZE (8)), + channelNumber INTEGER (-7..13) +} + +AverageRLC-BufferPayload ::= ENUMERATED { + pla0, pla4, pla8, pla16, pla32, + pla64, pla128, pla256, pla512, + pla1024, pla2k, pla4k, pla8k, pla16k, + pla32k, pla64k, pla128k, pla256k, + pla512k, pla1024k, spare12, spare11, + spare10, spare9, spare8, spare7, spare6, + spare5, spare4, spare3, spare2, spare1 } + +AzimuthAndElevation ::= SEQUENCE { + -- Actual value azimuth = IE value * 11.25 + IE value of azimuthLSB * 0.703125 degrees + azimuth INTEGER (0..31), + -- Actual value elevation = IE value * 11.25 + IE value of elevationLSB * 0.703125 degrees + elevation INTEGER (0..7) +} + +AzimuthAndElevation-va40ext ::= SEQUENCE { + azimuthLSB INTEGER (0..15), + elevationLSB INTEGER (0..15) +} + +AzimuthAndElevation-r10 ::= SEQUENCE { + -- Actual value azimuth = IE value * 11.25 + IE value of azimuthLSB * 0.703125 degrees + azimuth INTEGER (0..31), + -- Actual value elevation = IE value * 11.25 + IE value of elevationLSB * 0.703125 degrees + elevation INTEGER (0..7), + azimuthLSB INTEGER (0..15), + elevationLSB INTEGER (0..15) +} + +BadSatList ::= SEQUENCE (SIZE (1..maxSat)) OF + INTEGER (0..63) + +Frequency-Band ::= ENUMERATED { + dcs1800BandUsed, pcs1900BandUsed } + +BCCH-ARFCN ::= INTEGER (0..1023) + +BLER-MeasurementResults ::= SEQUENCE { + transportChannelIdentity TransportChannelIdentity, + dl-TransportChannelBLER DL-TransportChannelBLER OPTIONAL +} + +BLER-MeasurementResultsList ::= SEQUENCE (SIZE (1..maxTrCH)) OF + BLER-MeasurementResults + +BLER-TransChIdList ::= SEQUENCE (SIZE (1..maxTrCH)) OF + TransportChannelIdentity + +BSIC-VerificationRequired ::= ENUMERATED { + required, notRequired } + +BSICReported ::= CHOICE { + -- Value maxCellMeas is not allowed for verifiedBSIC + verifiedBSIC INTEGER (0..maxCellMeas), + nonVerifiedBSIC BCCH-ARFCN +} + +BurstModeParameters ::= SEQUENCE { + burstStart INTEGER (0..15), + burstLength INTEGER (10..25), + burstFreq INTEGER (1..16) +} + +CellDCH-ReportCriteria ::= CHOICE { + intraFreqReportingCriteria IntraFreqReportingCriteria, + periodicalReportingCriteria PeriodicalReportingCriteria +} + +CellDCH-ReportCriteria-LCR-r4 ::= CHOICE { + intraFreqReportingCriteria IntraFreqReportingCriteria-LCR-r4, + periodicalReportingCriteria PeriodicalReportingCriteria +} + +CellDCHMeasOccasionPattern-LCR ::= SEQUENCE { + patternIdentifier INTEGER(0..maxMeasOccasionPattern-1), + statusFlag ENUMERATED { + activate, deactivate}, + measurementPurpose BIT STRING (SIZE (5)) OPTIONAL, + measurementOccasionPatternParameter MeasurementOccasionPatternParameter OPTIONAL +} +CellDCHMeasOccasionInfo-TDD128-r9::= SEQUENCE { + cellDCHMeasOccasionSequenceList SEQUENCE (SIZE (1..maxMeasOccasionPattern)) OF + CellDCHMeasOccasionPattern-LCR +} + +-- Actual value CellIndividualOffset = IE value * 0.5 +CellIndividualOffset ::= INTEGER (-20..20) + + +CellInfo ::= SEQUENCE { + cellIndividualOffset CellIndividualOffset DEFAULT 0, + referenceTimeDifferenceToCell ReferenceTimeDifferenceToCell OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info OPTIONAL, + primaryCPICH-TX-Power PrimaryCPICH-TX-Power OPTIONAL, + readSFN-Indicator BOOLEAN, + tx-DiversityIndicator BOOLEAN + }, + tdd SEQUENCE { + primaryCCPCH-Info PrimaryCCPCH-Info, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power OPTIONAL, + timeslotInfoList TimeslotInfoList OPTIONAL, + readSFN-Indicator BOOLEAN + } + } +} + +CellInfo-r4 ::= SEQUENCE { + cellIndividualOffset CellIndividualOffset DEFAULT 0, + referenceTimeDifferenceToCell ReferenceTimeDifferenceToCell OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info OPTIONAL, + primaryCPICH-TX-Power PrimaryCPICH-TX-Power OPTIONAL, + readSFN-Indicator BOOLEAN, + tx-DiversityIndicator BOOLEAN + }, + tdd SEQUENCE { + primaryCCPCH-Info PrimaryCCPCH-Info-r4, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power OPTIONAL, + timeslotInfoList TimeslotInfoList-r4 OPTIONAL, + readSFN-Indicator BOOLEAN + + } + } +} + +CellInfo-LCR-r8-ext ::= SEQUENCE { + cellSelectionReselectionInfo CellSelectReselectInfoMC-RSCP OPTIONAL +} + +CellInfo-r9 ::= SEQUENCE { + cellIndividualOffset CellIndividualOffset DEFAULT 0, + referenceTimeDifferenceToCell ReferenceTimeDifferenceToCell OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info OPTIONAL, + primaryCPICH-TX-Power PrimaryCPICH-TX-Power OPTIONAL, + readSFN-Indicator BOOLEAN, + tx-DiversityIndicator BOOLEAN + }, + tdd SEQUENCE { + primaryCCPCH-Info PrimaryCCPCH-Info-r4, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power OPTIONAL, + timeslotInfoList TimeslotInfoList-r4 OPTIONAL, + readSFN-Indicator BOOLEAN + } + }, + -- For 1.28 Mcps TDD, cellSelectionReselectionInfo is optional present when sent + -- in Measurement Control.For FDD, this IE is not needed. + cellSelectionReselectionInfo CellSelectReselectInfoMC-RSCP OPTIONAL +} + +CellInfoListToBeExcluded::= SEQUENCE (SIZE (1..maxExcludedDetectedSetCells )) OF + PrimaryCPICH-Info + +CellInfoSI-RSCP ::= SEQUENCE { + cellIndividualOffset CellIndividualOffset DEFAULT 0, + referenceTimeDifferenceToCell ReferenceTimeDifferenceToCell OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info OPTIONAL, + primaryCPICH-TX-Power PrimaryCPICH-TX-Power OPTIONAL, + readSFN-Indicator BOOLEAN, + tx-DiversityIndicator BOOLEAN + }, + tdd SEQUENCE { + primaryCCPCH-Info PrimaryCCPCH-Info, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power OPTIONAL, + timeslotInfoList TimeslotInfoList OPTIONAL, + readSFN-Indicator BOOLEAN + } + }, + cellSelectionReselectionInfo CellSelectReselectInfoSIB-11-12-RSCP OPTIONAL +} + +CellInfoSI-RSCP-LCR-r4 ::= SEQUENCE { + cellIndividualOffset CellIndividualOffset DEFAULT 0, + referenceTimeDifferenceToCell ReferenceTimeDifferenceToCell OPTIONAL, + primaryCCPCH-Info PrimaryCCPCH-Info-LCR-r4, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power OPTIONAL, + timeslotInfoList TimeslotInfoList-LCR-r4 OPTIONAL, + readSFN-Indicator BOOLEAN, + cellSelectionReselectionInfo CellSelectReselectInfoSIB-11-12-RSCP OPTIONAL +} + +CellInfoSI-ECN0 ::= SEQUENCE { + cellIndividualOffset CellIndividualOffset DEFAULT 0, + referenceTimeDifferenceToCell ReferenceTimeDifferenceToCell OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info OPTIONAL, + primaryCPICH-TX-Power PrimaryCPICH-TX-Power OPTIONAL, + readSFN-Indicator BOOLEAN, + tx-DiversityIndicator BOOLEAN + }, + tdd SEQUENCE { + primaryCCPCH-Info PrimaryCCPCH-Info, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power OPTIONAL, + timeslotInfoList TimeslotInfoList OPTIONAL, + readSFN-Indicator BOOLEAN + } + }, + cellSelectionReselectionInfo CellSelectReselectInfoSIB-11-12-ECN0 OPTIONAL +} + +CellInfoSI-ECN0-LCR-r4 ::= SEQUENCE { + cellIndividualOffset CellIndividualOffset DEFAULT 0, + referenceTimeDifferenceToCell ReferenceTimeDifferenceToCell OPTIONAL, + primaryCCPCH-Info PrimaryCCPCH-Info-LCR-r4, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power OPTIONAL, + timeslotInfoList TimeslotInfoList-LCR-r4 OPTIONAL, + readSFN-Indicator BOOLEAN, + cellSelectionReselectionInfo CellSelectReselectInfoSIB-11-12-ECN0 OPTIONAL +} + +CellInfoSI-HCS-RSCP ::= SEQUENCE { + cellIndividualOffset CellIndividualOffset DEFAULT 0, + referenceTimeDifferenceToCell ReferenceTimeDifferenceToCell OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info OPTIONAL, + primaryCPICH-TX-Power PrimaryCPICH-TX-Power OPTIONAL, + readSFN-Indicator BOOLEAN, + tx-DiversityIndicator BOOLEAN + }, + tdd SEQUENCE { + primaryCCPCH-Info PrimaryCCPCH-Info, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power OPTIONAL, + timeslotInfoList TimeslotInfoList OPTIONAL, + readSFN-Indicator BOOLEAN + } + }, + cellSelectionReselectionInfo CellSelectReselectInfoSIB-11-12-HCS-RSCP OPTIONAL +} + +CellInfoSI-HCS-RSCP-LCR-r4 ::= SEQUENCE { + cellIndividualOffset CellIndividualOffset DEFAULT 0, + referenceTimeDifferenceToCell ReferenceTimeDifferenceToCell OPTIONAL, + primaryCCPCH-Info PrimaryCCPCH-Info-LCR-r4, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power OPTIONAL, + timeslotInfoList TimeslotInfoList-LCR-r4 OPTIONAL, + readSFN-Indicator BOOLEAN, + cellSelectionReselectionInfo CellSelectReselectInfoSIB-11-12-HCS-RSCP OPTIONAL +} + +CellInfoSI-HCS-ECN0 ::= SEQUENCE { + cellIndividualOffset CellIndividualOffset DEFAULT 0, + referenceTimeDifferenceToCell ReferenceTimeDifferenceToCell OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info OPTIONAL, + primaryCPICH-TX-Power PrimaryCPICH-TX-Power OPTIONAL, + readSFN-Indicator BOOLEAN, + tx-DiversityIndicator BOOLEAN + }, + tdd SEQUENCE { + primaryCCPCH-Info PrimaryCCPCH-Info, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power OPTIONAL, + timeslotInfoList TimeslotInfoList OPTIONAL, + readSFN-Indicator BOOLEAN + } + }, + cellSelectionReselectionInfo CellSelectReselectInfoSIB-11-12-HCS-ECN0 OPTIONAL +} + +CellInfoSI-HCS-ECN0-LCR-r4 ::= SEQUENCE { + cellIndividualOffset CellIndividualOffset DEFAULT 0, + referenceTimeDifferenceToCell ReferenceTimeDifferenceToCell OPTIONAL, + primaryCCPCH-Info PrimaryCCPCH-Info-LCR-r4, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power OPTIONAL, + timeslotInfoList TimeslotInfoList-LCR-r4 OPTIONAL, + readSFN-Indicator BOOLEAN, + cellSelectionReselectionInfo CellSelectReselectInfoSIB-11-12-HCS-ECN0 OPTIONAL +} + +CellMeasuredResults ::= SEQUENCE { + cellIdentity CellIdentity OPTIONAL, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SFN-SFN-ObsTimeDifference OPTIONAL, + cellSynchronisationInfo CellSynchronisationInfo OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + cpich-Ec-N0 CPICH-Ec-N0 OPTIONAL, + cpich-RSCP CPICH-RSCP OPTIONAL, + pathloss Pathloss OPTIONAL + }, + tdd SEQUENCE { + cellParametersID CellParametersID, + proposedTGSN TGSN OPTIONAL, + primaryCCPCH-RSCP PrimaryCCPCH-RSCP OPTIONAL, + pathloss Pathloss OPTIONAL, + timeslotISCP-List TimeslotISCP-List OPTIONAL + } + } +} + +-- The IE is created in order to add missing DeltaRSCPPerCell IE from Rel-5. +CellMeasuredResults-r9 ::= SEQUENCE { + cellIdentity CellIdentity OPTIONAL, + cellSynchronisationInfo CellSynchronisationInfo OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + cpich-Ec-N0 CPICH-Ec-N0 OPTIONAL, + cpich-RSCP CPICH-RSCP OPTIONAL, + deltaRSCPPerCell DeltaRSCPPerCell OPTIONAL, + pathloss Pathloss OPTIONAL + }, + tdd SEQUENCE { + cellParametersID CellParametersID, + proposedTGSN TGSN OPTIONAL, + primaryCCPCH-RSCP PrimaryCCPCH-RSCP OPTIONAL, + pathloss Pathloss OPTIONAL, + timeslotISCP-List TimeslotISCP-List OPTIONAL + } + } +} + +CellMeasuredResults-v920ext ::= SEQUENCE { + csgIdentity CSG-Identity OPTIONAL, + csgMemberIndication ENUMERATED { member } OPTIONAL +} + +CellMeasurementEventResults ::= CHOICE { + fdd SEQUENCE (SIZE (1..maxCellMeas)) OF + PrimaryCPICH-Info, + tdd SEQUENCE (SIZE (1..maxCellMeas)) OF + PrimaryCCPCH-Info +} + +CellMeasurementEventResultsOnSecUlFreq ::= CHOICE { + fdd SEQUENCE (SIZE (1.. maxCellMeasOnSecULFreq)) OF + PrimaryCPICH-Info, + spare NULL +} + +CellMeasurementEventResults-LCR-r4 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + PrimaryCCPCH-Info-LCR-r4 + +CellReportingQuantities ::= SEQUENCE { + -- dummy is not used in this version of the specification + -- and if received it should be ignored. + dummy SFN-SFN-OTD-Type, + cellIdentity-reportingIndicator BOOLEAN, + cellSynchronisationInfoReportingIndicator BOOLEAN, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + cpich-Ec-N0-reportingIndicator BOOLEAN, + cpich-RSCP-reportingIndicator BOOLEAN, + pathloss-reportingIndicator BOOLEAN + }, + tdd SEQUENCE { + timeslotISCP-reportingIndicator BOOLEAN, + proposedTGSN-ReportingRequired BOOLEAN, + primaryCCPCH-RSCP-reportingIndicator BOOLEAN, + pathloss-reportingIndicator BOOLEAN + } + } +} + +CellSelectReselectInfoMC-RSCP ::= SEQUENCE { + q-OffsetS-N Q-OffsetS-N DEFAULT 0, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + hcs-NeighbouringCellInformation-RSCP + HCS-NeighbouringCellInformation-RSCP OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + q-QualMin Q-QualMin OPTIONAL, + q-RxlevMin Q-RxlevMin OPTIONAL + }, + tdd SEQUENCE { + q-RxlevMin Q-RxlevMin OPTIONAL + }, + gsm SEQUENCE { + q-RxlevMin Q-RxlevMin OPTIONAL + } + } +} + +CellSelectReselectInfoSIB-11-12 ::= SEQUENCE { + q-Offset1S-N Q-OffsetS-N DEFAULT 0, + q-Offset2S-N Q-OffsetS-N OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + hcs-NeighbouringCellInformation-RSCP + HCS-NeighbouringCellInformation-RSCP OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + q-QualMin Q-QualMin OPTIONAL, + q-RxlevMin Q-RxlevMin OPTIONAL + }, + tdd SEQUENCE { + q-RxlevMin Q-RxlevMin OPTIONAL + }, + gsm SEQUENCE { + q-RxlevMin Q-RxlevMin OPTIONAL + } + } +} + +CellSelectReselectInfoSIB-11-12-RSCP ::= SEQUENCE { + q-OffsetS-N Q-OffsetS-N DEFAULT 0, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + q-QualMin Q-QualMin OPTIONAL, + q-RxlevMin Q-RxlevMin OPTIONAL + }, + tdd SEQUENCE { + q-RxlevMin Q-RxlevMin OPTIONAL + }, + gsm SEQUENCE { + q-RxlevMin Q-RxlevMin OPTIONAL + } + } +} + +CellSelectReselectInfoSIB-11-12-ECN0 ::= SEQUENCE { + q-Offset1S-N Q-OffsetS-N DEFAULT 0, + q-Offset2S-N Q-OffsetS-N DEFAULT 0, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + q-QualMin Q-QualMin OPTIONAL, + q-RxlevMin Q-RxlevMin OPTIONAL + }, + tdd SEQUENCE { + q-RxlevMin Q-RxlevMin OPTIONAL + }, + gsm SEQUENCE { + q-RxlevMin Q-RxlevMin OPTIONAL + } + } +} + +CellSelectReselectInfoSIB-11-12-HCS-RSCP ::= SEQUENCE { + q-OffsetS-N Q-OffsetS-N DEFAULT 0, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + hcs-NeighbouringCellInformation-RSCP + HCS-NeighbouringCellInformation-RSCP OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + q-QualMin Q-QualMin OPTIONAL, + q-RxlevMin Q-RxlevMin OPTIONAL + }, + tdd SEQUENCE { + q-RxlevMin Q-RxlevMin OPTIONAL + }, + gsm SEQUENCE { + q-RxlevMin Q-RxlevMin OPTIONAL + } + } +} + +CellSelectReselectInfoSIB-11-12-HCS-ECN0 ::= SEQUENCE { + q-Offset1S-N Q-OffsetS-N DEFAULT 0, + q-Offset2S-N Q-OffsetS-N DEFAULT 0, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + hcs-NeighbouringCellInformation-ECN0 + HCS-NeighbouringCellInformation-ECN0 OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + q-QualMin Q-QualMin OPTIONAL, + q-RxlevMin Q-RxlevMin OPTIONAL + }, + tdd SEQUENCE { + q-RxlevMin Q-RxlevMin OPTIONAL + }, + gsm SEQUENCE { + q-RxlevMin Q-RxlevMin OPTIONAL + } + } +} + +CellSelectReselectInfo-v590ext ::= SEQUENCE { + deltaQrxlevmin DeltaQrxlevmin OPTIONAL, + deltaQhcs DeltaRSCP OPTIONAL +} + +CellSelectReselectInfoPCHFACH-v5b0ext ::= SEQUENCE { + q-Hyst-l-S-PCH Q-Hyst-S-Fine OPTIONAL, + q-Hyst-l-S-FACH Q-Hyst-S-Fine OPTIONAL, + q-Hyst-2-S-PCH Q-Hyst-S-Fine OPTIONAL, + q-Hyst-2-S-FACH Q-Hyst-S-Fine OPTIONAL, + t-Reselection-S-PCH T-Reselection-S OPTIONAL, + t-Reselection-S-FACH T-Reselection-S-Fine OPTIONAL +} + +CellSelectReselectInfoTreselectionScaling-v5c0ext ::= SEQUENCE { + -- For speed detection, the same HCS parameters are utilised + non-HCS-t-CR-Max T-CRMax OPTIONAL, + speedDependentScalingFactor SpeedDependentScalingFactor OPTIONAL, + interFrequencyTreselectionScalingFactor TreselectionScalingFactor OPTIONAL, + interRATTreselectionScalingFactor TreselectionScalingFactor OPTIONAL +} + +CellsForInterFreqMeasList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + InterFreqCellID + +CellsForInterRATMeasList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + InterRATCellID + +CellsForIntraFreqMeasList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + IntraFreqCellID + +CellsForIntraFreqMeasListOnSecULFreq ::= SEQUENCE (SIZE (1..maxCellMeasOnSecULFreq)) OF + IntraFreqCellIDOnSecULFreq + +CellSynchronisationInfo ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + countC-SFN-Frame-difference CountC-SFN-Frame-difference OPTIONAL, + tm INTEGER(0..38399) + }, + tdd SEQUENCE { + countC-SFN-Frame-difference CountC-SFN-Frame-difference OPTIONAL + } + } +} + +CellToReport ::= SEQUENCE { + bsicReported BSICReported +} + +CellToReportList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + CellToReport + +CNAVclockModel ::= SEQUENCE { + cnavToc BIT STRING (SIZE (11)), + cnavTop BIT STRING (SIZE (11)), + cnavURA0 BIT STRING (SIZE (5)), + cnavURA1 BIT STRING (SIZE (3)), + cnavURA2 BIT STRING (SIZE (3)), + cnavAf2 BIT STRING (SIZE (10)), + cnavAf1 BIT STRING (SIZE (20)), + cnavAf0 BIT STRING (SIZE (26)), + cnavTgd BIT STRING (SIZE (13)), + cnavISCl1cp BIT STRING (SIZE (13)) OPTIONAL, + cnavISCl1cd BIT STRING (SIZE (13)) OPTIONAL, + cnavISCl1ca BIT STRING (SIZE (13)) OPTIONAL, + cnavISCl2c BIT STRING (SIZE (13)) OPTIONAL, + cnavISCl5i5 BIT STRING (SIZE (13)) OPTIONAL, + cnavISCl5q5 BIT STRING (SIZE (13)) OPTIONAL +} + +CodePhaseSearchWindow ::= ENUMERATED { + w1023, w1, w2, w3, w4, w6, w8, + w12, w16, w24, w32, w48, w64, + w96, w128, w192 } + +CountC-SFN-Frame-difference ::= SEQUENCE { + -- Actual value countC-SFN-High = IE value * 256 + countC-SFN-High INTEGER(0..15), + off INTEGER(0..255) +} + +-- SPARE: CPICH-Ec-No, Max = 49 +-- Values above Max are spare +CPICH-Ec-N0 ::= INTEGER (0..63) + +-- SPARE: CPICH- RSCP, Max = 91 +-- Values above Max are spare +CPICH-RSCP ::= INTEGER (0..127) + +CSGCellInfo ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + startPSC PrimaryCPICH-Info, + numberOfPSCs INTEGER (1..512) + }, + tdd NULL + } +} + +CSGCellInfoList ::= SEQUENCE (SIZE (1..maxMeasCSGRange)) OF + CSGCellInfo + +CSGInterFreqCellInfo ::= SEQUENCE { + frequencyInfo FrequencyInfo, + cSGInterFreqCellInfoListperFreq CSGCellInfoList +} + +CSGInterFreqCellInfoList ::= SEQUENCE (SIZE (1..maxFreq)) OF + CSGInterFreqCellInfo + +CSGIntraFreqCellInfoList ::= CSGCellInfoList + +CSGProximityDetection ::= SEQUENCE { + uTRACSGProximityDetec ENUMERATED { enable } OPTIONAL, + e-UTRACSGProximityDetec ENUMERATED { enable } OPTIONAL +} + +CSGProximityIndication ::= SEQUENCE { + cSGproximityInd ENUMERATED {entering, leaving }, + radioAccessTechnology CHOICE { + uTRA SEQUENCE { + cSGFrequencyInfoUTRA FrequencyInfo + }, + e-UTRA SEQUENCE { + cSGFrequencyInfoEUTRA EARFCN + } + } +} + +CSGProximityIndication-vb50ext ::= SEQUENCE { + cSGFrequencyInfoEUTRA EARFCNExtension OPTIONAL +} + +DataBitAssistance ::= SEQUENCE { + ganss-signal-id GANSS-Signal-Id, + data-bits BIT STRING (SIZE (1..1024)) +} + +DataBitAssistanceList ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF + DataBitAssistanceSat + +DataBitAssistanceSat ::= SEQUENCE { + satID INTEGER(0..63), + dataBitAssistanceSgnList DataBitAssistanceSgnList +} + +DataBitAssistanceSgnList ::= SEQUENCE (SIZE (1..maxSgnType)) OF + DataBitAssistance + +DeltaPRC ::= INTEGER (-127..127) + +--Actual value DeltaQrxlevmin = IE value * 2 +DeltaQrxlevmin ::= INTEGER (-2..-1) + +DeltaRSCP ::= INTEGER (-5..-1) + +DeltaRSCPPerCell ::= SEQUENCE { + deltaRSCP DeltaRSCP OPTIONAL +} + +-- Actual value DeltaRRC = IE value * 0.032 +DeltaRRC ::= INTEGER (-7..7) + +DeltaUT1 ::= SEQUENCE { + b1 BIT STRING (SIZE (11)), + b2 BIT STRING (SIZE (10)) +} + +DGANSSInfo ::= SEQUENCE { + ganssSignalId GANSS-Signal-Id OPTIONAL, + ganssStatusHealth GANSS-Status-Health, + dgansssignalInformationList DGANSSSignalInformationList OPTIONAL +} + +DGANSSInfo-r9 ::= SEQUENCE { + ganssSignalId GANSS-Signal-Id OPTIONAL, + ganssStatusHealth GANSS-Status-Health, + dgansssignalInformationList DGANSSSignalInformationList-r9 OPTIONAL +} + +DGANSSInfo-v920ext ::= SEQUENCE { + dgansssignalInformationList DGANSSSignalInformationList-v920ext OPTIONAL +} + +DGANSSInfoList ::= SEQUENCE (SIZE (1..maxSgnType)) OF + DGANSSInfo + +DGANSSInfoList-r9 ::= SEQUENCE (SIZE (1..maxSgnType)) OF + DGANSSInfo-r9 + +DGANSSInfoList-v920ext ::= SEQUENCE (SIZE (1..maxSgnType)) OF + DGANSSInfo-v920ext + +DGANSSSignalInformation ::= SEQUENCE { + satId INTEGER (0..63), + iode-dganss BIT STRING (SIZE (10)), + udre UDRE, + ganss-prc INTEGER (-2047..2047), -- scale factor 0.32 + ganss-rrc INTEGER (-127..127) -- scale factor 0.032 +} + +DGANSSSignalInformation-r9 ::= SEQUENCE { + satId INTEGER (0..63), + iode-dganss BIT STRING (SIZE (10)), + udre UDRE, + ganss-prc INTEGER (-2047..2047), -- scale factor 0.32 + ganss-rrc INTEGER (-127..127), -- scale factor 0.032 + udreGrowthRate UDREGrowthRate OPTIONAL, + udreValidityTime UDREValidityTime OPTIONAL +} + +DGANSSSignalInformation-v920ext ::= SEQUENCE { + udreGrowthRate UDREGrowthRate OPTIONAL, + udreValidityTime UDREValidityTime OPTIONAL +} + +DGANSSSignalInformationList ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF + DGANSSSignalInformation + +DGANSSSignalInformationList-r9 ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF + DGANSSSignalInformation-r9 + +DGANSSSignalInformationList-v920ext ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF + DGANSSSignalInformation-v920ext + +DGANSS-Sig-Id-Req ::= BIT STRING (SIZE (8)) + +DGPS-CorrectionSatInfo ::= SEQUENCE { + satID SatID, + iode IODE, + udre UDRE, + prc PRC, + rrc RRC, +-- dummy1 and dummy2 are not used in this version of the specification and should be ignored. + dummy1 DeltaPRC, + dummy2 DeltaRRC, + -- dummy3 and dummy4 are not used in this version of the specification. They should not + -- be sent and if received they should be ignored. + dummy3 DeltaPRC OPTIONAL, + dummy4 DeltaRRC OPTIONAL +} + +DGPS-CorrectionSatInfo-r9 ::= SEQUENCE { + satID SatID, + iode IODE, + udre UDRE, + prc PRC, + rrc RRC, + udreGrowthRate UDREGrowthRate OPTIONAL, + udreValidityTime UDREValidityTime OPTIONAL +} + +DGPS-CorrectionSatInfo-v920ext ::= SEQUENCE { + udreGrowthRate UDREGrowthRate OPTIONAL, + udreValidityTime UDREValidityTime OPTIONAL +} + +DGPS-CorrectionSatInfoList ::= SEQUENCE (SIZE (1..maxSat)) OF + DGPS-CorrectionSatInfo + +DGPS-CorrectionSatInfoList-r9 ::= SEQUENCE (SIZE (1..maxSat)) OF + DGPS-CorrectionSatInfo-r9 + +DGPS-CorrectionSatInfoList-v920ext ::= SEQUENCE (SIZE (1..maxSat)) OF + DGPS-CorrectionSatInfo-v920ext + +DiffCorrectionStatus ::= ENUMERATED { + udre-1-0, udre-0-75, udre-0-5, udre-0-3, + udre-0-2, udre-0-1, noData, invalidData } + +DL-TransportChannelBLER ::= INTEGER (0..63) + +DopplerUncertainty ::= ENUMERATED { + hz12-5, hz25, hz50, hz100, hz200, + spare3, spare2, spare1 } + +EllipsoidPoint ::= SEQUENCE { + latitudeSign ENUMERATED { north, south }, + latitude INTEGER (0..8388607), + longitude INTEGER (-8388608..8388607) +} + + +EllipsoidPointAltitude ::= SEQUENCE { + latitudeSign ENUMERATED { north, south }, + latitude INTEGER (0..8388607), + longitude INTEGER (-8388608..8388607), + altitudeDirection ENUMERATED {height, depth}, + altitude INTEGER (0..32767) +} + + +EllipsoidPointAltitudeEllipsoide ::= SEQUENCE { + latitudeSign ENUMERATED { north, south }, + latitude INTEGER (0..8388607), + longitude INTEGER (-8388608..8388607), + altitudeDirection ENUMERATED {height, depth}, + altitude INTEGER (0..32767), + uncertaintySemiMajor INTEGER (0..127), + uncertaintySemiMinor INTEGER (0..127), + -- Actual value orientationMajorAxis = IE value * 2 + orientationMajorAxis INTEGER (0..89), + uncertaintyAltitude INTEGER (0..127), + confidence INTEGER (0..100) +} + + +EllipsoidPointUncertCircle ::= SEQUENCE { + latitudeSign ENUMERATED { north, south }, + latitude INTEGER (0..8388607), + longitude INTEGER (-8388608..8388607), + uncertaintyCode INTEGER (0..127) +} + + +EllipsoidPointUncertEllipse ::= SEQUENCE { + latitudeSign ENUMERATED { north, south }, + latitude INTEGER (0..8388607), + longitude INTEGER (-8388608..8388607), + uncertaintySemiMajor INTEGER (0..127), + uncertaintySemiMinor INTEGER (0..127), + -- Actual value orientationMajorAxis = IE value * 2 + orientationMajorAxis INTEGER (0..89), + confidence INTEGER (0..100) +} + + +EnvironmentCharacterisation ::= ENUMERATED { + possibleHeavyMultipathNLOS, + lightMultipathLOS, + notDefined, + spare } + +Eutra-EventResult ::= SEQUENCE { + earfcn EARFCN, + reportedCells SEQUENCE (SIZE (1..maxReportedEUTRACellPerFreq)) OF + EUTRA-PhysicalCellIdentity +} + +EUTRA-EventResult-vb50ext ::= SEQUENCE { + earfcn EARFCNExtension OPTIONAL +} + +Eutra-EventResultList ::= SEQUENCE (SIZE (1..maxReportedEUTRAFreqs)) OF + Eutra-EventResult + +EUTRA-EventResultList-vb50ext ::= SEQUENCE (SIZE (1..maxReportedEUTRAFreqs)) OF + EUTRA-EventResult-vb50ext + +EUTRA-EventResults ::= SEQUENCE { + eventID EventIDInterRAT, + eutra-EventResultsList Eutra-EventResultList +} + +EUTRA-EventResults-vb50ext ::= SEQUENCE { + eutra-EventResultsList EUTRA-EventResultList-vb50ext +} + +EUTRA-EventResultsForCELLFACH ::= SEQUENCE { + eutraFrequencyIndicator BIT STRING (SIZE (maxNumEUTRAFreqs-FACH)) +} + +EUTRA-FrequencyAndPriorityInfo ::= SEQUENCE { + earfcn EARFCN, + measurementBandwidth EUTRA-MeasurementBandwidth OPTIONAL, + priority INTEGER (0..maxPrio-1), + -- Actual value = IE value * 2 + qRxLevMinEUTRA INTEGER (-70..-22), + -- Actual value = IE value * 2 + threshXhigh INTEGER (0..31), + -- Actual value = IE value * 2 + threshXlow INTEGER (0..31), + eutra-blackListedCellList EUTRA-BlacklistedCellPerFreqList OPTIONAL, + eutraDetection BOOLEAN +} + +EUTRA-FrequencyAndPriorityInfo-v920ext ::= SEQUENCE { + qqualMinEUTRA INTEGER (-34..-3) OPTIONAL, + threshXhigh2 INTEGER (0..31) OPTIONAL, + threshXlow2 INTEGER (0..31) OPTIONAL +} + +EUTRA-FrequencyAndPriorityInfo-vb50ext ::= SEQUENCE { + qqualMinEUTRA-WB INTEGER (-34..-3) OPTIONAL +} + +EUTRA-FrequencyAndPriorityInfoExtension-vb50ext ::= SEQUENCE { + earfcn EARFCNExtension, + measurementBandwidth EUTRA-MeasurementBandwidth OPTIONAL, + priority INTEGER (0..maxPrio-1), + -- Actual value = IE value * 2 + qRxLevMinEUTRA INTEGER (-70..-22), + -- Actual value = IE value * 2 + threshXhigh INTEGER (0..31), + -- Actual value = IE value * 2 + threshXlow INTEGER (0..31), + qqualMinEUTRA INTEGER (-34..-3) OPTIONAL, + threshXhigh2 INTEGER (0..31) OPTIONAL, + threshXlow2 INTEGER (0..31) OPTIONAL, + eutra-blackListedCellList EUTRA-BlacklistedCellPerFreqList OPTIONAL, + eutraDetection BOOLEAN +} + +EUTRA-FrequencyAndPriorityInfoExtensionList ::= SEQUENCE (SIZE (1..maxNumEUTRAFreqs)) OF + EUTRA-FrequencyAndPriorityInfoExtension-vb50ext + +EUTRA-FrequencyAndPriorityInfoList ::= SEQUENCE (SIZE (1..maxNumEUTRAFreqs)) OF + EUTRA-FrequencyAndPriorityInfo + +EUTRA-FrequencyAndPriorityInfoList-v920ext ::= SEQUENCE (SIZE (1..maxNumEUTRAFreqs)) OF + EUTRA-FrequencyAndPriorityInfo-v920ext + +EUTRA-FrequencyAndPriorityInfoList-vb50ext ::= SEQUENCE (SIZE (1..maxNumEUTRAFreqs)) OF + EUTRA-FrequencyAndPriorityInfo-vb50ext + +EUTRA-FrequencyList ::= SEQUENCE { + eutraFrequencyRemoval EUTRA-FrequencyRemoval, + eutraNewFrequencies EUTRA-FrequencyInfoList OPTIONAL +} + +EUTRA-FrequencyList-r9 ::= SEQUENCE { + eutraFrequencyRemoval EUTRA-FrequencyRemoval, + eutraNewFrequencies EUTRA-FrequencyInfoList OPTIONAL, + eutraSIAcquisition EUTRA-SIAcquisition OPTIONAL +} + +EUTRA-FrequencyList-r11 ::= SEQUENCE { + eutraFrequencyRemoval EUTRA-FrequencyRemoval-r11, + eutraNewFrequencies EUTRA-FrequencyInfoList-r11 OPTIONAL, + eutraSIAcquisition EUTRA-SIAcquisition-r11 OPTIONAL +} + +EUTRA-SIAcquisition ::= SEQUENCE { + earfcn EARFCN, + physicalCellIdentity EUTRA-PhysicalCellIdentity +} + +EUTRA-SIAcquisition-r11 ::= SEQUENCE { +-- If the IE earfcn is set to a value of 65535, then the EARFCN +-- value for that instance shall be read from the IE earfcnExt. + earfcn EARFCN, + earfcnExt EARFCNExtension OPTIONAL, + physicalCellIdentity EUTRA-PhysicalCellIdentity +} + +EUTRA-MeasuredCells ::= SEQUENCE { + physicalCellIdentity EUTRA-PhysicalCellIdentity, + rSRP INTEGER (0..97) OPTIONAL, + rSRQ INTEGER (0..33) OPTIONAL +} + +Eutra-MeasuredResult ::= SEQUENCE { + earfcn EARFCN, + measuredEUTRACells SEQUENCE (SIZE (1..maxReportedEUTRACellPerFreq)) OF + EUTRA-MeasuredCells +} + +EUTRA-MeasuredResult-vb50ext ::= SEQUENCE { + earfcn EARFCNExtension OPTIONAL +} + +Eutra-MeasuredResultList ::= SEQUENCE (SIZE (1..maxReportedEUTRAFreqs)) OF + Eutra-MeasuredResult + +EUTRA-MeasuredResultList-vb50ext ::= SEQUENCE (SIZE (1..maxReportedEUTRAFreqs)) OF + EUTRA-MeasuredResult-vb50ext + +EUTRA-MeasuredResults ::= SEQUENCE { + eutraMeasuredResultList Eutra-MeasuredResultList +} + +EUTRA-MeasuredResults-vb50ext ::= SEQUENCE { + eutraMeasuredResultList EUTRA-MeasuredResultList-vb50ext +} + +EUTRA-MeasuredCells-v920ext ::= SEQUENCE { + eutraSIacquisitionResults EUTRA-SIacquisitionResults +} + +Eutra-MeasuredResult-v920ext ::= SEQUENCE { + measuredEUTRACells-v920ext SEQUENCE (SIZE (1..maxReportedEUTRACellPerFreq)) OF + EUTRA-MeasuredCells-v920ext +} + +Eutra-MeasuredResultList-v920ext ::= SEQUENCE (SIZE (1..maxReportedEUTRAFreqs)) OF + Eutra-MeasuredResult-v920ext + + +EUTRA-MeasuredResults-v920ext ::= SEQUENCE { + eutraMeasuredResultList-v920ext Eutra-MeasuredResultList-v920ext +} + +EUTRA-SIacquisitionResults ::= SEQUENCE { + cgiInfo SEQUENCE { + plmn-Identity PLMN-Identity, + cellIdentity BIT STRING (SIZE (28)), + trackingAreaCode BIT STRING (SIZE (16)) + }, + csgIdentity CSG-Identity OPTIONAL, + csgMemberIndication ENUMERATED { member } OPTIONAL +} + +EUTRA-FrequencyRemoval ::= CHOICE { + removeAllFrequencies NULL, + removeSomeFrequencies SEQUENCE (SIZE (1..maxNumEUTRAFreqs)) OF + EARFCN, + removeNoFrequencies NULL +} + +EUTRA-FrequencyRemoval-r11 ::= CHOICE { + removeAllFrequencies NULL, + removeSomeFrequencies FrequenciesToRemove, + removeNoFrequencies NULL +} + +EUTRA-FrequencyInfoList ::= SEQUENCE (SIZE (1..maxNumEUTRAFreqs)) OF + EUTRA-FrequencyInfo + +EUTRA-FrequencyInfoList-r11 ::= SEQUENCE (SIZE (1..maxNumEUTRAFreqs)) OF + EUTRA-FrequencyInfo-r11 + +EUTRA-FrequencyInfo ::= SEQUENCE { + earfcn EARFCN, + measurementBandwidth EUTRA-MeasurementBandwidth OPTIONAL, + eutra-blackListedCellList EUTRA-BlacklistedCellPerFreqList OPTIONAL +} + +EUTRA-FrequencyInfo-r11 ::= SEQUENCE { +-- If the IE earfcn is set to a value of 65535, then the EARFCN +-- value for that instance shall be read from the IE earfcnExt. + earfcn EARFCN, + earfcnExt EARFCNExtension OPTIONAL, + measurementBandwidth EUTRA-MeasurementBandwidth OPTIONAL, + eutra-blackListedCellList EUTRA-BlacklistedCellPerFreqList OPTIONAL, + widebandRSRQMeasurements ENUMERATED {true} OPTIONAL +} + +EUTRA-FrequencyRACHReportingInfo ::= SEQUENCE { + eutra-FrequencyListIndicator BIT STRING (SIZE (maxNumEUTRAFreqs)), + eutra-FrequencyRepQuantityRACH ENUMERATED { rsrp, rsrq }, + eutra-FrequencyRACHReportingThreshold INTEGER (0..97), + rachReportingPriority ENUMERATED { intraEUTRAInter, interIntraEUTRA, + interEUTRAIntra, eUTRAIntraInter, + eUTRAInterIntra, spare3, + spare2, spare1 } OPTIONAL +} + +EUTRA-MeasurementBandwidth ::= ENUMERATED { mbw6, mbw15, mbw25, mbw50, mbw75, mbw100 } + +EUTRA-MeasurementForCELLFACH ::= SEQUENCE { + eutraFrequenciesForMeasurement SEQUENCE (SIZE (1..maxNumEUTRAFreqs-FACH)) OF + EARFCNRange, + reportCriteria ENUMERATED { event-triggeredreporting, periodicalReporting }, + measurementQuantity ENUMERATED { rsrp, rsrq }, + reportingThreshold INTEGER (0..97) +} + +FrequenciesToRemove ::= SEQUENCE (SIZE (1..maxNumEUTRAFreqs)) OF + EARFCNRange + +Event1a ::= SEQUENCE { + triggeringCondition TriggeringCondition2, + reportingRange ReportingRange, + forbiddenAffectCellList ForbiddenAffectCellList OPTIONAL, + w W, + reportDeactivationThreshold ReportDeactivationThreshold, + reportingAmount ReportingAmount, + reportingInterval ReportingInterval +} + +Event1a-r4 ::= SEQUENCE { + triggeringCondition TriggeringCondition2, + reportingRange ReportingRange, + forbiddenAffectCellList ForbiddenAffectCellList-r4 OPTIONAL, + w W, + reportDeactivationThreshold ReportDeactivationThreshold, + reportingAmount ReportingAmount, + reportingInterval ReportingInterval +} + +Event1a-OnSecUlFreq-r9 ::= SEQUENCE { + triggeringCondition TriggeringCondition2, + reportingRange ReportingRange, + forbiddenAffectCellListOnSecULFreq ForbiddenAffectCellListOnSecULFreq OPTIONAL, + w W, + reportDeactivationThreshold ReportDeactivationThreshold, + reportingAmount ReportingAmount, + reportingInterval ReportingInterval +} + +Event1a-LCR-r4 ::= SEQUENCE { + triggeringCondition TriggeringCondition2, + reportingRange ReportingRange, + forbiddenAffectCellList ForbiddenAffectCellList-LCR-r4 OPTIONAL, + w W, + reportDeactivationThreshold ReportDeactivationThreshold, + reportingAmount ReportingAmount, + reportingInterval ReportingInterval +} + +Event1b ::= SEQUENCE { + triggeringCondition TriggeringCondition1, + reportingRange ReportingRange, + forbiddenAffectCellList ForbiddenAffectCellList OPTIONAL, + w W +} + +Event1b-r4 ::= SEQUENCE { + triggeringCondition TriggeringCondition1, + reportingRange ReportingRange, + forbiddenAffectCellList ForbiddenAffectCellList-r4 OPTIONAL, + w W +} + +Event1b-r7 ::= SEQUENCE { + triggeringCondition TriggeringCondition1, + reportingRange ReportingRange, + forbiddenAffectCellList ForbiddenAffectCellList-r4 OPTIONAL, + w W, + periodicReportingInfo-1b PeriodicReportingInfo-1b OPTIONAL +} + +Event1b-OnSecUlFreq-r9 ::= SEQUENCE { + triggeringCondition TriggeringCondition1, + reportingRange ReportingRange, + forbiddenAffectCellListOnSecULFreq ForbiddenAffectCellListOnSecULFreq OPTIONAL, + w W, + periodicReportingInfo-1b PeriodicReportingInfo-1b OPTIONAL +} + +Event1b-LCR-r4 ::= SEQUENCE { + triggeringCondition TriggeringCondition1, + reportingRange ReportingRange, + forbiddenAffectCellList ForbiddenAffectCellList-LCR-r4 OPTIONAL, + w W +} + +Event1c ::= SEQUENCE { + replacementActivationThreshold ReplacementActivationThreshold, + reportingAmount ReportingAmount, + reportingInterval ReportingInterval +} + +Event1d ::= SEQUENCE { + triggeringCondition TriggeringCondition2 OPTIONAL, + useCIO BOOLEAN OPTIONAL +} + +Event1e ::= SEQUENCE { + triggeringCondition TriggeringCondition2, + thresholdUsedFrequency ThresholdUsedFrequency +} + +Event1e-r6 ::= SEQUENCE { + triggeringCondition TriggeringCondition2, + thresholdUsedFrequency ThresholdUsedFrequency-r6 +} + +Event1f ::= SEQUENCE { + triggeringCondition TriggeringCondition1, + thresholdUsedFrequency ThresholdUsedFrequency +} + +Event1f-r6 ::= SEQUENCE { + triggeringCondition TriggeringCondition1, + thresholdUsedFrequency ThresholdUsedFrequency-r6 +} + +Event1j-r6 ::= SEQUENCE { + replacementActivationThreshold ReplacementActivationThreshold, + reportingAmount ReportingAmount, + reportingInterval ReportingInterval +} + +Event2a ::= SEQUENCE { + -- dummy is not used in this version of the specification and should be ignored + dummy Threshold, + usedFreqW W, + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL, + nonUsedFreqParameterList NonUsedFreqParameterList OPTIONAL +} + +Event2a-r6 ::= SEQUENCE { + usedFreqW W, + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL, + nonUsedFreqParameterList NonUsedFreqWList-r6 OPTIONAL +} + +Event2a-r10 ::= SEQUENCE { + usedFreqW W, + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus-r10 OPTIONAL, + nonUsedFreqParameterList NonUsedFreq2aParameterList-r10 OPTIONAL +} + +Event2a-r11 ::= SEQUENCE { + usedFreqW W, + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus-r10 OPTIONAL, + nonUsedFreqParameterList NonUsedFreq2aParameterList-r11 OPTIONAL +} + +Event2b ::= SEQUENCE { + usedFreqThreshold Threshold, + usedFreqW W, + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL, + nonUsedFreqParameterList NonUsedFreqParameterList OPTIONAL +} + +Event2b-r6 ::= SEQUENCE { + usedFreqThreshold Threshold-r6, + usedFreqW W, + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL, + nonUsedFreqParameterList NonUsedFreqParameterList-r6 OPTIONAL +} + +Event2b-r10 ::= SEQUENCE { + usedFreqThreshold Threshold-r6, + usedFreqW W, + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus-r10 OPTIONAL, + nonUsedFreqParameterList NonUsedFreqParameterList-r10 OPTIONAL +} + +Event2b-r11 ::= SEQUENCE { + usedFreqThreshold Threshold-r6, + usedFreqW W, + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus-r10 OPTIONAL, + nonUsedFreqParameterList NonUsedFreqParameterList-r11 OPTIONAL +} + +Event2c ::= SEQUENCE { + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL, + nonUsedFreqParameterList NonUsedFreqParameterList OPTIONAL +} + +Event2c-r6 ::= SEQUENCE { + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL, + nonUsedFreqParameterList NonUsedFreqParameterList-r6 OPTIONAL +} + +Event2c-r10 ::= SEQUENCE { + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus-r10 OPTIONAL, + nonUsedFreqParameterList NonUsedFreqParameterList-r10 OPTIONAL +} + +Event2c-r11 ::= SEQUENCE { + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus-r10 OPTIONAL, + nonUsedFreqParameterList NonUsedFreqParameterList-r11 OPTIONAL +} + +Event2d ::= SEQUENCE { + usedFreqThreshold Threshold, + usedFreqW W, + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL +} + +Event2d-r6 ::= SEQUENCE { + usedFreqThreshold Threshold-r6, + usedFreqW W, + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL +} + +Event2d-r10 ::= SEQUENCE { + usedFreqThreshold Threshold-r6, + usedFreqW W, + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus-r10 OPTIONAL +} + +Event2e ::= SEQUENCE { + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL, + nonUsedFreqParameterList NonUsedFreqParameterList OPTIONAL +} + +Event2e-r6 ::= SEQUENCE { + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL, + nonUsedFreqParameterList NonUsedFreqParameterList-r6 OPTIONAL +} + +Event2e-r10 ::= SEQUENCE { + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus-r10 OPTIONAL, + nonUsedFreqParameterList NonUsedFreqParameterList-r10 OPTIONAL +} + +Event2e-r11 ::= SEQUENCE { + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus-r10 OPTIONAL, + nonUsedFreqParameterList NonUsedFreqParameterList-r11 OPTIONAL +} + +Event2f ::= SEQUENCE { + usedFreqThreshold Threshold, + usedFreqW W, + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL +} + +Event2f-r6 ::= SEQUENCE { + usedFreqThreshold Threshold-r6, + usedFreqW W, + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL +} + +Event2f-r10 ::= SEQUENCE { + usedFreqThreshold Threshold-r6, + usedFreqW W, + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus-r10 OPTIONAL +} + +Event3a ::= SEQUENCE { + thresholdOwnSystem Threshold, + w W, + thresholdOtherSystem Threshold, + hysteresis Hysteresis, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL +} + +Event3b ::= SEQUENCE { + thresholdOtherSystem Threshold, + hysteresis Hysteresis, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL + +} + +Event3c ::= SEQUENCE { + thresholdOtherSystem Threshold, + hysteresis Hysteresis, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL +} + +Event3d ::= SEQUENCE { + hysteresis Hysteresis, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL +} + +EventIDInterFreq ::= ENUMERATED { + e2a, e2b, e2c, e2d, e2e, e2f, spare2, spare1 } + +EventIDInterRAT ::= ENUMERATED { + e3a, e3b, e3c, e3d } + +EventIDIntraFreq ::= ENUMERATED { + e1a, e1b, e1c, e1d, e1e, + e1f, e1g, e1h, e1i, e1j, + spare6, spare5, spare4, spare3, spare2, + spare1 } + +EventResults ::= CHOICE { + intraFreqEventResults IntraFreqEventResults, + interFreqEventResults InterFreqEventResults, + interRATEventResults InterRATEventResults, + trafficVolumeEventResults TrafficVolumeEventResults, + qualityEventResults QualityEventResults, + ue-InternalEventResults UE-InternalEventResults, + ue-positioning-MeasurementEventResults UE-Positioning-MeasurementEventResults, + spare NULL +} + +EventResults-v770ext ::= CHOICE { + ue-positioning-MeasurementEventResults UE-Positioning-MeasurementEventResults-v770ext +} + +EventResults-v860ext ::= CHOICE { + ue-positioning-MeasurementEventResults UE-Positioning-MeasurementEventResults-v860ext +} + +EventResults-va40ext ::= CHOICE { + interFreqEventResults InterFreqEventResults-va40ext +} + +EventResultsOnSecUlFreq ::= SEQUENCE { + intraFreqEventResults IntraFreqEventResultsOnSecUlFreq +} + +ExtraDoppler ::= SEQUENCE { + -- Doppler 1st order term, -0.2..+0.1 m/s2 + -- ( = -42..+21 with 1/210 m/s2 resolution) + dopplerFirstOrder INTEGER (-42.. 21), + dopplerUncertainty ENUMERATED { dopU40, dopU20, dopU10, dopU5, dopU2-5, + spare3, spare2, spare1 } +} + +ExtraDopplerInfo ::= SEQUENCE { + -- Actual value doppler1stOrder = IE value * 0.023 + doppler1stOrder INTEGER (-42..21), + dopplerUncertainty DopplerUncertainty +} + +FACH-MeasurementOccasionInfo ::= SEQUENCE { + fACH-meas-occasion-coeff INTEGER (1..12) OPTIONAL, + inter-freq-FDD-meas-ind BOOLEAN, + -- inter-freq-TDD-meas-ind is for 3.84Mcps TDD and 7.68 Mcps TDD. For 1.28Mcps TDD, the IE in + -- FACH-MeasurementOccasionInfo-LCR-r4-ext is used. + inter-freq-TDD-meas-ind BOOLEAN, + inter-RAT-meas-ind SEQUENCE (SIZE (1..maxOtherRAT)) OF + RAT-Type OPTIONAL +} + +FACH-MeasurementOccasionInfo-LCR-r4-ext ::= SEQUENCE { + inter-freq-TDD128-meas-ind BOOLEAN +} + +FilterCoefficient ::= ENUMERATED { + fc0, fc1, fc2, fc3, fc4, fc5, + fc6, fc7, fc8, fc9, fc11, fc13, + fc15, fc17, fc19, spare1 } + +-- Actual value FineSFN-SFN = IE value * 0.0625 +FineSFN-SFN ::= INTEGER (0..15) + +ForbiddenAffectCell ::= CHOICE { + fdd PrimaryCPICH-Info, + tdd PrimaryCCPCH-Info +} + +ForbiddenAffectCell-r4 ::= CHOICE { + fdd PrimaryCPICH-Info, + tdd PrimaryCCPCH-Info-r4 +} + +ForbiddenAffectCell-LCR-r4 ::= SEQUENCE { + tdd PrimaryCCPCH-Info-LCR-r4 +} + +ForbiddenAffectCellList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + ForbiddenAffectCell + +ForbiddenAffectCellList-r4 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + ForbiddenAffectCell-r4 + +ForbiddenAffectCellList-LCR-r4 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + ForbiddenAffectCell-LCR-r4 + +ForbiddenAffectCellListOnSecULFreq ::= SEQUENCE (SIZE (1.. maxCellMeasOnSecULFreq)) OF + ForbiddenAffectCellOnSecULFreq + +ForbiddenAffectCellOnSecULFreq ::= SEQUENCE { + primaryCPICH PrimaryCPICH-Info +} + +FreqQualityEstimateQuantity-FDD ::= ENUMERATED { + cpich-Ec-N0, + cpich-RSCP } + +FreqQualityEstimateQuantity-TDD ::= ENUMERATED { + primaryCCPCH-RSCP } + +GanssDataBits ::= SEQUENCE { + ganssTod INTEGER (0..86399), + dataBitAssistance ReqDataBitAssistance +} + +GANSSDecipheringKeys ::= SEQUENCE { + currentDecipheringKey BIT STRING (SIZE (56)), + nextDecipheringKey BIT STRING (SIZE (56)) +} + +GANSSGenericData ::= SEQUENCE { + ganssId INTEGER (0..7) OPTIONAL, + ganssTimeModelsList GANSSTimeModelsList OPTIONAL, + uePositioningDGANSSCorrections UE-Positioning-DGANSSCorrections OPTIONAL, + uePositioningGANSSNavigationModel UE-Positioning-GANSS-NavigationModel OPTIONAL, + uePositioningGANSSRealTimeIntegrity UE-Positioning-GANSS-RealTimeIntegrity OPTIONAL, + uePositioningGANSSDataBitAssistance UE-Positioning-GANSS-Data-Bit-Assistance OPTIONAL, + uePositioningGANSSReferenceMeasurementInfo + UE-Positioning-GANSS-ReferenceMeasurementInfo OPTIONAL, + uePositioningGANSSAlmanac UE-Positioning-GANSS-Almanac OPTIONAL, + uePositioningGANSSUTCModel UE-Positioning-GANSS-UTCModel OPTIONAL +} + +GANSSGenericData-v860ext ::= SEQUENCE { + uePositiningGANSSsbasID UE-Positioning-GANSS-SBAS-ID OPTIONAL, + uePositioningGANSSAddNavigationModels + UE-Positioning-GANSS-AddNavigationModels OPTIONAL, + uePositioningGANSSAlmanac UE-Positioning-GANSS-Almanac-v860ext OPTIONAL, + uePositioningGANSSAddUTCModels UE-Positioning-GANSS-AddUTCModels OPTIONAL, + uePositioningGANSSAuxiliaryInfo UE-Positioning-GANSS-AuxiliaryInfo OPTIONAL +} + +GANSSGenericData-r8 ::= SEQUENCE { + ganssId INTEGER (0..7) OPTIONAL, + uePositiningGANSSsbasID UE-Positioning-GANSS-SBAS-ID OPTIONAL, + ganssTimeModelsList GANSSTimeModelsList OPTIONAL, + uePositioningDGANSSCorrections UE-Positioning-DGANSSCorrections OPTIONAL, + uePositioningGANSSNavigationModel UE-Positioning-GANSS-NavigationModel OPTIONAL, + uePositioningGANSSAddNavigationModels + UE-Positioning-GANSS-AddNavigationModels OPTIONAL, + uePositioningGANSSRealTimeIntegrity UE-Positioning-GANSS-RealTimeIntegrity OPTIONAL, + uePositioningGANSSDataBitAssistance UE-Positioning-GANSS-Data-Bit-Assistance OPTIONAL, + uePositioningGANSSReferenceMeasurementInfo + UE-Positioning-GANSS-ReferenceMeasurementInfo OPTIONAL, + uePositioningGANSSAlmanac UE-Positioning-GANSS-Almanac-r8 OPTIONAL, + uePositioningGANSSUTCModel UE-Positioning-GANSS-UTCModel OPTIONAL, + uePositioningGANSSAddUTCModels UE-Positioning-GANSS-AddUTCModels OPTIONAL, + uePositioningGANSSAuxiliaryInfo UE-Positioning-GANSS-AuxiliaryInfo OPTIONAL +} + +GANSSGenericData-r9 ::= SEQUENCE { + ganssId INTEGER (0..7) OPTIONAL, + uePositiningGANSSsbasID UE-Positioning-GANSS-SBAS-ID OPTIONAL, + ganssTimeModelsList GANSSTimeModelsList OPTIONAL, + uePositioningDGANSSCorrections UE-Positioning-DGANSSCorrections-r9 OPTIONAL, + uePositioningGANSSNavigationModel UE-Positioning-GANSS-NavigationModel OPTIONAL, + uePositioningGANSSAddNavigationModels + UE-Positioning-GANSS-AddNavigationModels OPTIONAL, + uePositioningGANSSRealTimeIntegrity UE-Positioning-GANSS-RealTimeIntegrity OPTIONAL, + uePositioningGANSSDataBitAssistance UE-Positioning-GANSS-Data-Bit-Assistance OPTIONAL, + uePositioningGANSSReferenceMeasurementInfo + UE-Positioning-GANSS-ReferenceMeasurementInfo OPTIONAL, + uePositioningGANSSAlmanac UE-Positioning-GANSS-Almanac-r8 OPTIONAL, + uePositioningGANSSUTCModel UE-Positioning-GANSS-UTCModel OPTIONAL, + uePositioningGANSSAddUTCModels UE-Positioning-GANSS-AddUTCModels OPTIONAL, + uePositioningGANSSAuxiliaryInfo UE-Positioning-GANSS-AuxiliaryInfo OPTIONAL +} + +GANSSGenericData-v920ext ::= SEQUENCE { + uePositioningDGANSSCorrections UE-Positioning-DGANSSCorrections-v920ext OPTIONAL +} + +GANSSGenericData-va40ext ::= SEQUENCE { + ganssTimeModelsList GANSSTimeModelsList-va40ext OPTIONAL, + uePositioningGANSSReferenceMeasurementInfo + UE-Positioning-GANSS-ReferenceMeasurementInfo-va40ext + OPTIONAL, + uePositioningGANSSAlmanac UE-Positioning-GANSS-Almanac-va40ext OPTIONAL +} + +GANSSGenericData-r10 ::= SEQUENCE { + ganssId INTEGER (0..7) OPTIONAL, + uePositiningGANSSsbasID UE-Positioning-GANSS-SBAS-ID OPTIONAL, + ganssTimeModelsList GANSSTimeModelsList-r10 OPTIONAL, + uePositioningDGANSSCorrections UE-Positioning-DGANSSCorrections-r9 OPTIONAL, + uePositioningGANSSNavigationModel UE-Positioning-GANSS-NavigationModel OPTIONAL, + uePositioningGANSSAddNavigationModels + UE-Positioning-GANSS-AddNavigationModels OPTIONAL, + uePositioningGANSSRealTimeIntegrity UE-Positioning-GANSS-RealTimeIntegrity OPTIONAL, + uePositioningGANSSDataBitAssistance UE-Positioning-GANSS-Data-Bit-Assistance OPTIONAL, + uePositioningGANSSReferenceMeasurementInfo + UE-Positioning-GANSS-ReferenceMeasurementInfo-r10 + OPTIONAL, + uePositioningGANSSAlmanac UE-Positioning-GANSS-Almanac-r10 OPTIONAL, + uePositioningGANSSUTCModel UE-Positioning-GANSS-UTCModel OPTIONAL, + uePositioningGANSSAddUTCModels UE-Positioning-GANSS-AddUTCModels OPTIONAL, + uePositioningGANSSAuxiliaryInfo UE-Positioning-GANSS-AuxiliaryInfo OPTIONAL +} + +GANSSGenericDataList ::= SEQUENCE (SIZE (1..maxGANSS)) OF + GANSSGenericData + +GANSSGenericDataList-v860ext ::= SEQUENCE (SIZE (1..maxGANSS)) OF + GANSSGenericData-v860ext + +GANSSGenericDataList-r8 ::= SEQUENCE (SIZE (1..maxGANSS)) OF + GANSSGenericData-r8 + +GANSSGenericDataList-r9 ::= SEQUENCE (SIZE (1..maxGANSS)) OF + GANSSGenericData-r9 + +GANSSGenericDataList-v920ext ::= SEQUENCE (SIZE (1..maxGANSS)) OF + GANSSGenericData-v920ext + +GANSSGenericDataList-va40ext ::= SEQUENCE (SIZE (1..maxGANSS)) OF + GANSSGenericData-va40ext + +GANSSGenericDataList-r10 ::= SEQUENCE (SIZE (1..maxGANSS)) OF + GANSSGenericData-r10 + +GANSSGenericMeasurementInfo ::= SEQUENCE (SIZE (1..maxGANSS)) OF SEQUENCE { + ganssId INTEGER (0..7) OPTIONAL, + ganssMeasurementSignalList GANSSMeasurementSignalList +} + +GANSSGenericMeasurementInfo-v860ext ::= SEQUENCE (SIZE (1..maxGANSS)) OF SEQUENCE { + ganssMeasurementSignalList GANSSMeasurementSignalList-v860ext +} + +GANSSMeasurementParameters ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF SEQUENCE { + satId INTEGER (0..63), + cSurNzero INTEGER (0..63), + multipathIndicator ENUMERATED { nm, low, medium, high }, + carrierQualityIndication BIT STRING (SIZE (2)) OPTIONAL, + ganssCodePhase INTEGER (0..2097151), + ganssIntegerCodePhase INTEGER (0..63) OPTIONAL, + codePhaseRmsError INTEGER (0..63), + doppler INTEGER (-32768..32767), + adr INTEGER (0..33554431) OPTIONAL +} + +GANSSMeasurementParameters-v860ext ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF SEQUENCE { + ganssIntegerCodePhaseExt INTEGER (64..127) OPTIONAL +} + +GANSSMeasurementSignalList ::= SEQUENCE (SIZE (1..maxSgnType)) OF SEQUENCE { + ganssSignalId GANSS-Signal-Id OPTIONAL, + ganssCodePhaseAmbiguity INTEGER (0..31) OPTIONAL, + ganssMeasurementParameters GANSSMeasurementParameters +} + +GANSSMeasurementSignalList-v860ext ::= SEQUENCE (SIZE (1..maxSgnType)) OF SEQUENCE { + ganssCodePhaseAmbiguityExt INTEGER (32..127) OPTIONAL, + ganssMeasurementParameters GANSSMeasurementParameters-v860ext +} + +GanssNavigationModelAdditionalData ::= SEQUENCE { + ganssWeek INTEGER (0..4095), + ganssToe INTEGER (0..167), + t-toeLimit INTEGER (0..10), + satellitesListRelatedDataList SatellitesListRelatedDataList OPTIONAL +} + +GANSSReferenceTimeOnly ::= SEQUENCE { + gANSS-tod INTEGER (0..3599999), + gANSS-timeId INTEGER (0..7) OPTIONAL, + gANSS-tod-uncertainty INTEGER (0..127) OPTIONAL +} + +GanssReqGenericData ::= SEQUENCE { + ganssId INTEGER (0..7) OPTIONAL, + ganssRealTimeIntegrity BOOLEAN, + ganssDifferentialCorrection DGANSS-Sig-Id-Req OPTIONAL, + ganssAlmanac BOOLEAN, + ganssNavigationModel BOOLEAN, + ganssTimeModelGNSS-GNSS BIT STRING (SIZE (8)) OPTIONAL, + ganssReferenceMeasurementInfo BOOLEAN, + ganssDataBits GanssDataBits OPTIONAL, + ganssUTCModel BOOLEAN, + ganssNavigationModelAdditionalData GanssNavigationModelAdditionalData OPTIONAL +} + +GanssReqGenericData-v860ext ::= SEQUENCE { + sbasId UE-Positioning-GANSS-SBAS-ID OPTIONAL, + ganssAddNavigationModel ENUMERATED { true } OPTIONAL, + ganssAddUTCmodel ENUMERATED { true } OPTIONAL, + ganssAuxInfo ENUMERATED { true } OPTIONAL, + ganssAddADchoices SEQUENCE { + orbitModelID INTEGER (0..7) OPTIONAL, + clockModelID INTEGER (0..7) OPTIONAL, + utcModelID INTEGER (0..7) OPTIONAL, + almanacModelID INTEGER (0..7) OPTIONAL + } OPTIONAL +} + +GanssRequestedGenericAssistanceDataList ::= SEQUENCE (SIZE (1..maxGANSS)) OF + GanssReqGenericData + +GanssRequestedGenericAssistanceDataList-v860ext ::= SEQUENCE (SIZE (1..maxGANSS)) OF + GanssReqGenericData-v860ext + +GANSSSatelliteInformation ::= SEQUENCE { + ganssSatId INTEGER (0..63), + dopplerZeroOrder INTEGER (-2048..2047), -- scale factor 0.5m/s + extraDoppler ExtraDoppler OPTIONAL, + codePhase INTEGER (0..1023), + integerCodePhase INTEGER (0..127), + codePhaseSearchWindow BIT STRING (SIZE (5)), + azimuthandElevation AzimuthAndElevation OPTIONAL +} + +GANSSSatelliteInformation-va40ext ::= SEQUENCE { + azimuthAndElevation AzimuthAndElevation-va40ext OPTIONAL +} + +GANSSSatelliteInformation-r10 ::= SEQUENCE { + ganssSatId INTEGER (0..63), + dopplerZeroOrder INTEGER (-2048..2047), -- scale factor 0.5m/s + extraDoppler ExtraDoppler OPTIONAL, + codePhase INTEGER (0..1023), + integerCodePhase INTEGER (0..127), + codePhaseSearchWindow BIT STRING (SIZE (5)), + azimuthandElevation AzimuthAndElevation-r10 OPTIONAL +} + +GANSSSatelliteInformationList ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF + GANSSSatelliteInformation + +GANSSSatelliteInformationList-va40ext ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF + GANSSSatelliteInformation-va40ext + +GANSSSatelliteInformationList-r10 ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF + GANSSSatelliteInformation-r10 + +GANSSTimeModelsList ::= SEQUENCE (SIZE (1..maxGANSS-1)) OF + UE-Positioning-GANSS-TimeModel + +GANSSTimeModelsList-va40ext ::= SEQUENCE (SIZE (1.. maxGANSS-1)) OF + UE-Positioning-GANSS-TimeModel-va40ext + +GANSSTimeModelsList-r10 ::= SEQUENCE (SIZE (1..maxGANSS-1)) OF + UE-Positioning-GANSS-TimeModel-r10 + +GANSS-SAT-Info-Almanac-GLOkp ::= SEQUENCE { + gloAlmNA BIT STRING (SIZE (11)), + gloAlmnA BIT STRING (SIZE (5)), + gloAlmHA BIT STRING (SIZE (5)), + gloAlmLambdaA BIT STRING (SIZE (21)), + gloAlmTlambdaA BIT STRING (SIZE (21)), + gloAlmDeltaIA BIT STRING (SIZE (18)), + gloAkmDeltaTA BIT STRING (SIZE (22)), + gloAlmDeltaTdotA BIT STRING (SIZE (7)), + gloAlmEpsilonA BIT STRING (SIZE (15)), + gloAlmOmegaA BIT STRING (SIZE (16)), + gloAlmTauA BIT STRING (SIZE (10)), + gloAlmCA BIT STRING (SIZE (1)), + gloAlmMA BIT STRING (SIZE (2)) OPTIONAL +} + +GANSS-SAT-Info-Almanac-Kp ::= SEQUENCE { + svId INTEGER(0..63), + ganss-alm-e BIT STRING (SIZE (11)), + ganss-delta-I-alm BIT STRING (SIZE (11)), + ganss-omegadot-alm BIT STRING (SIZE (11)), + ganss-svhealth-alm BIT STRING (SIZE (4)), + ganss-delta-a-sqrt-alm BIT STRING (SIZE (17)), + ganss-omegazero-alm BIT STRING (SIZE (16)), + ganss-m-zero-alm BIT STRING (SIZE (16)), + ganss-omega-alm BIT STRING (SIZE (16)), + ganss-af-zero-alm BIT STRING (SIZE (14)), + ganss-af-one-alm BIT STRING (SIZE (11)) +} + +GANSS-SAT-Info-Almanac-MIDIkp ::= SEQUENCE { + svID INTEGER(0..63), + midiAlmE BIT STRING (SIZE (11)), + midiAlmDeltaI BIT STRING (SIZE (11)), + midiAlmOmegaDot BIT STRING (SIZE (11)), + midiAlmSqrtA BIT STRING (SIZE (17)), + midiAlmOmega0 BIT STRING (SIZE (16)), + midiAlmOmega BIT STRING (SIZE (16)), + midiAlmMo BIT STRING (SIZE (16)), + midiAlmaf0 BIT STRING (SIZE (11)), + midiAlmaf1 BIT STRING (SIZE (10)), + midiAlmL1Health BIT STRING (SIZE (1)), + midiAlmL2Health BIT STRING (SIZE (1)), + midiAlmL5Health BIT STRING (SIZE (1)) +} + +GANSS-SAT-Info-Almanac-NAVkp ::= SEQUENCE { + svID INTEGER(0..63), + navAlmE BIT STRING (SIZE (16)), + navAlmDeltaI BIT STRING (SIZE (16)), + navAlmOMEGADOT BIT STRING (SIZE (16)), + navAlmSVHealth BIT STRING (SIZE (8)), + navAlmSqrtA BIT STRING (SIZE (24)), + navAlmOMEGAo BIT STRING (SIZE (24)), + navAlmOmega BIT STRING (SIZE (24)), + navAlmMo BIT STRING (SIZE (24)), + navAlmaf0 BIT STRING (SIZE (11)), + navAlmaf1 BIT STRING (SIZE (11)) +} + +GANSS-SAT-Info-Almanac-REDkp ::= SEQUENCE { + svID INTEGER(0..63), + redAlmDeltaA BIT STRING (SIZE (8)), + redAlmOmega0 BIT STRING (SIZE (7)), + redAlmPhi0 BIT STRING (SIZE (7)), + redAlmL1Health BIT STRING (SIZE (1)), + redAlmL2Health BIT STRING (SIZE (1)), + redAlmL5Health BIT STRING (SIZE (1)) +} + +GANSS-SAT-Info-Almanac-SBASecef ::= SEQUENCE { + sbasAlmDataID BIT STRING (SIZE (2)), + svID INTEGER (0..63), + sbasAlmHealth BIT STRING (SIZE (8)), + sbasAlmXg BIT STRING (SIZE (15)), + sbasAlmYg BIT STRING (SIZE (15)), + sbasAlmZg BIT STRING (SIZE (9)), + sbasAlmXgdot BIT STRING (SIZE (3)), + sbasAlmYgDot BIT STRING (SIZE (3)), + sbasAlmZgDot BIT STRING (SIZE (4)), + sbasAlmTo BIT STRING (SIZE (11)) +} + +GANSS-SAT-Info-Almanac-GLOkpList ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF + GANSS-SAT-Info-Almanac-GLOkp + +GANSS-SAT-Info-Almanac-KpList ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF + GANSS-SAT-Info-Almanac-Kp + +GANSS-SAT-Info-Almanac-MIDIkpList ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF + GANSS-SAT-Info-Almanac-MIDIkp + +GANSS-SAT-Info-Almanac-NAVkpList ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF + GANSS-SAT-Info-Almanac-NAVkp + +GANSS-SAT-Info-Almanac-REDkpList ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF + GANSS-SAT-Info-Almanac-REDkp + +GANSS-SAT-Info-Almanac-SBASecefList ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF + GANSS-SAT-Info-Almanac-SBASecef + +Ganss-Sat-Info-AddNav ::= SEQUENCE { + satId INTEGER (0..63), + svHealth BIT STRING (SIZE (6)), + iod BIT STRING (SIZE (11)), + ganssClockModel UE-Positioning-GANSS-AddClockModels, + ganssOrbitModel UE-Positioning-GANSS-AddOrbitModels +} + +Ganss-Sat-Info-Nav ::= SEQUENCE { + satId INTEGER (0..63), + svHealth BIT STRING (SIZE (5)), + iod BIT STRING (SIZE (10)), + ganssClockModel UE-Positioning-GANSS-ClockModel, + ganssOrbitModel UE-Positioning-GANSS-OrbitModel +} + +Ganss-Sat-Info-AddNavList ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF + Ganss-Sat-Info-AddNav + +Ganss-Sat-Info-NavList ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF + Ganss-Sat-Info-Nav + +GANSS-Signal-Id ::= INTEGER (0..7) + +GANSS-Status-Health ::= ENUMERATED { + udre-scale-1dot0, + udre-scale-0dot75, + udre-scale-0dot5, + udre-scale-0dot3, + udre-scale-0dot2, + udre-scale-0dot1, + no-data, + invalid-data } + +GANSS-Storm-Flag ::= SEQUENCE { + storm-flag-one BOOLEAN, + storm-flag-two BOOLEAN, + storm-flag-three BOOLEAN, + storm-flag-four BOOLEAN, + storm-flag-five BOOLEAN +} + +GLONASSclockModel ::= SEQUENCE { + gloTau BIT STRING (SIZE (22)), + gloGamma BIT STRING (SIZE (11)), + gloDeltaTau BIT STRING (SIZE (5)) OPTIONAL +} + +GPS-MeasurementParam ::= SEQUENCE { + satelliteID INTEGER (0..63), + c-N0 INTEGER (0..63), + doppler INTEGER (-32768..32768), + wholeGPS-Chips INTEGER (0..1022), + fractionalGPS-Chips INTEGER (0..1023), + multipathIndicator MultipathIndicator, + pseudorangeRMS-Error INTEGER (0..63) +} + +GPS-MeasurementParamList ::= SEQUENCE (SIZE (1..maxSat)) OF + GPS-MeasurementParam + +GSM-CarrierRSSI ::= BIT STRING (SIZE (6)) + +GSM-CellGroup ::= SEQUENCE { + startingARFCN BCCH-ARFCN, + bandIndicator ENUMERATED { dcs1800, pcs1900 }, + followingARFCNs CHOICE { + explicitListOfARFCNs SEQUENCE (SIZE (0..31)) OF BCCH-ARFCN, + equallySpacedARFCNs SEQUENCE { + arfcn-Spacing INTEGER (1..8), + numberOfFollowingARFCNs INTEGER (0..31) + }, + variableBitMapOfARFCNs OCTET STRING (SIZE (1..16)), + continuousRangeOfARFCNs SEQUENCE { + endingARFCN BCCH-ARFCN + } + } +} + +GSM-MeasuredResults ::= SEQUENCE { + gsm-CarrierRSSI GSM-CarrierRSSI OPTIONAL, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy INTEGER (46..173) OPTIONAL, + bsicReported BSICReported, + -- dummy2 is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy2 ObservedTimeDifferenceToGSM OPTIONAL +} + +GSM-MeasuredResultsList ::= SEQUENCE (SIZE (1..maxReportedGSMCells)) OF + GSM-MeasuredResults + +GPS-TOW-1msec ::= INTEGER (0..604799999) + +GPS-TOW-1sec ::= INTEGER (0..604799) + +GPS-TOW-Assist ::= SEQUENCE { + satID SatID, + tlm-Message BIT STRING (SIZE (14)), + tlm-Reserved BIT STRING (SIZE (2)), + alert BOOLEAN, + antiSpoof BOOLEAN +} + +GPS-TOW-AssistList ::= SEQUENCE (SIZE (1..maxSat)) OF + GPS-TOW-Assist + +GSM-CellID ::= SEQUENCE { + gsm-CellID INTEGER (0..maxCellMeas-1) +} + +GSM-PriorityInfo ::= SEQUENCE { + gsmCellGroup GSM-CellGroup, + priority INTEGER (0..maxPrio-1), + -- Actual value = IE value * 2 + 1 + qRxLevMinGSM INTEGER (-58..-13), + -- Actual value = IE value * 2 + threshXhigh INTEGER (0..31), + -- Actual value = IE value * 2 + threshXlow INTEGER (0..31) +} + +GSM-PriorityInfoList ::= SEQUENCE (SIZE (1..maxNumGSMCellGroup)) OF + GSM-PriorityInfo + +GSMCellGroupingList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + GSM-CellID + +HCS-CellReselectInformation-RSCP ::= SEQUENCE { + -- TABULAR: The default value for penaltyTime is "notUsed" + -- Temporary offset is nested inside PenaltyTime-RSCP + penaltyTime PenaltyTime-RSCP +} + +HCS-CellReselectInformation-ECN0 ::= SEQUENCE { + -- TABULAR: The default value for penaltyTime is "notUsed" + -- Temporary offset is nested inside PenaltyTime-ECN0 + penaltyTime PenaltyTime-ECN0 +} + +HCS-NeighbouringCellInformation-RSCP ::= SEQUENCE { + hcs-PRIO HCS-PRIO DEFAULT 0, + q-HCS Q-HCS DEFAULT 0, + hcs-CellReselectInformation HCS-CellReselectInformation-RSCP +} + +HCS-NeighbouringCellInformation-ECN0 ::= SEQUENCE { + hcs-PRIO HCS-PRIO DEFAULT 0, + q-HCS Q-HCS DEFAULT 0, + hcs-CellReselectInformation HCS-CellReselectInformation-ECN0 +} + +HCS-PRIO ::= INTEGER (0..7) + +HCS-ServingCellInformation ::= SEQUENCE { + hcs-PRIO HCS-PRIO DEFAULT 0, + q-HCS Q-HCS DEFAULT 0, + t-CR-Max T-CRMax OPTIONAL +} + +HorizontalVelocity ::= SEQUENCE { + bearing INTEGER (0..359), + horizontalSpeed INTEGER (0..2047) + } + +HorizontalWithVerticalVelocity ::= SEQUENCE { + verticalSpeedDirection ENUMERATED { upward, downward }, + bearing INTEGER (0..359), + horizontalSpeed INTEGER (0..2047), + verticalSpeed INTEGER (0..255) +} + +HorizontalVelocityWithUncertainty ::= SEQUENCE { + bearing INTEGER (0..359), + horizontalSpeed INTEGER (0..2047), + horizontalSpeedUncertainty INTEGER (0..255) +} + +HorizontalWithVerticalVelocityAndUncertainty ::= SEQUENCE { + verticalSpeedDirection ENUMERATED { upward, downward }, + bearing INTEGER (0..359), + horizontalSpeed INTEGER (0..2047), + verticalSpeed INTEGER (0..255), + horizontalUncertaintySpeed INTEGER (0..255), + verticalUncertaintySpeed INTEGER (0..255) +} + +-- Actual value Hysteresis = IE value * 0.5 +Hysteresis ::= INTEGER (0..15) + +-- Actual value HysteresisInterFreq = IE value * 0.5 +HysteresisInterFreq ::= INTEGER (0..29) + +IdleIntervalInfo ::= SEQUENCE { + k INTEGER (2..3) OPTIONAL, + offset INTEGER (0..7) OPTIONAL +} + +InterFreqCell ::= SEQUENCE { + frequencyInfo FrequencyInfo, + nonFreqRelatedEventResults CellMeasurementEventResults +} + +InterFreqCell-LCR-r4 ::= SEQUENCE { + frequencyInfo FrequencyInfo, + nonFreqRelatedEventResults CellMeasurementEventResults-LCR-r4 +} + +InterFreqCellID ::= INTEGER (0..maxCellMeas-1) + +InterFreqCellInfoList ::= SEQUENCE { + removedInterFreqCellList RemovedInterFreqCellList OPTIONAL, + newInterFreqCellList NewInterFreqCellList OPTIONAL, + cellsForInterFreqMeasList CellsForInterFreqMeasList OPTIONAL +} + +InterFreqCellInfoList-r4 ::= SEQUENCE { + removedInterFreqCellList RemovedInterFreqCellList OPTIONAL, + newInterFreqCellList NewInterFreqCellList-r4 OPTIONAL, + cellsForInterFreqMeasList CellsForInterFreqMeasList OPTIONAL +} + +InterFreqCellInfoList-r8 ::= SEQUENCE { + removedInterFreqCellList RemovedInterFreqCellList OPTIONAL, + newInterFreqCellList NewInterFreqCellList-r8 OPTIONAL, + cellsForInterFreqMeasList CellsForInterFreqMeasList OPTIONAL +} + +InterFreqCellInfoList-r9 ::= SEQUENCE { + removedInterFreqCellList RemovedInterFreqCellList OPTIONAL, + newInterFreqCellList NewInterFreqCellList-r9 OPTIONAL, + cellsForInterFreqMeasList CellsForInterFreqMeasList OPTIONAL, + cSGInterFreqCellInfoList CSGInterFreqCellInfoList OPTIONAL, + interFreqSIAcquisition InterFreqSIAcquisition OPTIONAL +} + +InterFreqCellInfoList-r10 ::= SEQUENCE { + removedInterFreqCellList RemovedInterFreqCellList OPTIONAL, + newInterFreqCellList NewInterFreqCellList-r10 OPTIONAL, + cellsForInterFreqMeasList CellsForInterFreqMeasList OPTIONAL, + cSGInterFreqCellInfoList CSGInterFreqCellInfoList OPTIONAL, + interFreqSIAcquisition InterFreqSIAcquisition OPTIONAL +} + +InterFreqSIAcquisition ::= SEQUENCE { + frequencyInfo FrequencyInfo, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryScramblingCode PrimaryCPICH-Info + }, + tdd NULL + } +} + + +InterFreqCellInfoSI-List-RSCP ::= SEQUENCE { + removedInterFreqCellList RemovedInterFreqCellList OPTIONAL, + newInterFreqCellList NewInterFreqCellSI-List-RSCP OPTIONAL +} + +InterFreqCellInfoSI-List-ECN0 ::= SEQUENCE { + removedInterFreqCellList RemovedInterFreqCellList OPTIONAL, + newInterFreqCellList NewInterFreqCellSI-List-ECN0 OPTIONAL +} + +InterFreqCellInfoSI-List-HCS-RSCP ::= SEQUENCE { + removedInterFreqCellList RemovedInterFreqCellList OPTIONAL, + newInterFreqCellList NewInterFreqCellSI-List-HCS-RSCP OPTIONAL +} +InterFreqCellInfoSI-List-HCS-ECN0 ::= SEQUENCE { + removedInterFreqCellList RemovedInterFreqCellList OPTIONAL, + newInterFreqCellList NewInterFreqCellSI-List-HCS-ECN0 OPTIONAL +} + +InterFreqCellInfoSI-List-RSCP-LCR ::= SEQUENCE { + removedInterFreqCellList RemovedInterFreqCellList OPTIONAL, + newInterFreqCellList NewInterFreqCellSI-List-RSCP-LCR-r4 OPTIONAL +} + +InterFreqCellInfoSI-List-ECN0-LCR ::= SEQUENCE { + removedInterFreqCellList RemovedInterFreqCellList OPTIONAL, + newInterFreqCellList NewInterFreqCellSI-List-ECN0-LCR-r4 OPTIONAL +} + +InterFreqCellInfoSI-List-HCS-RSCP-LCR ::= SEQUENCE { + removedInterFreqCellList RemovedInterFreqCellList OPTIONAL, + newInterFreqCellList NewInterFreqCellSI-List-HCS-RSCP-LCR-r4 OPTIONAL +} +InterFreqCellInfoSI-List-HCS-ECN0-LCR ::= SEQUENCE { + removedInterFreqCellList RemovedInterFreqCellList OPTIONAL, + newInterFreqCellList NewInterFreqCellSI-List-HCS-ECN0-LCR-r4 OPTIONAL +} + +InterFreqCellList ::= SEQUENCE (SIZE (1..maxFreq)) OF + InterFreqCell + +InterFreqCellList-LCR-r4-ext ::= SEQUENCE (SIZE (1..maxFreq)) OF + InterFreqCell-LCR-r4 + +InterFreqCellMeasuredResultsList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + CellMeasuredResults + +InterFreqCellMeasuredResultsList-v920ext ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + CellMeasuredResults-v920ext + +InterFreqEvent ::= CHOICE { + event2a Event2a, + event2b Event2b, + event2c Event2c, + event2d Event2d, + event2e Event2e, + event2f Event2f +} + +InterFreqEvent-r6 ::= CHOICE { + event2a Event2a-r6, + event2b Event2b-r6, + event2c Event2c-r6, + event2d Event2d-r6, + event2e Event2e-r6, + event2f Event2f-r6 +} + +InterFreqEvent-r10 ::= CHOICE { + event2a Event2a-r10, + event2b Event2b-r10, + event2c Event2c-r10, + event2d Event2d-r10, + event2e Event2e-r10, + event2f Event2f-r10 +} + +InterFreqEvent-r11 ::= CHOICE { + event2a Event2a-r11, + event2b Event2b-r11, + event2c Event2c-r11, + event2d Event2d-r10, + event2e Event2e-r11, + event2f Event2f-r10 +} + +InterFreqEventList ::= SEQUENCE (SIZE (1..maxMeasEvent)) OF + InterFreqEvent + +InterFreqEventList-r6 ::= SEQUENCE (SIZE (1..maxMeasEvent)) OF + InterFreqEvent-r6 + +InterFreqEventList-r10 ::= SEQUENCE (SIZE (1..maxMeasEvent)) OF + InterFreqEvent-r10 + +InterFreqEventList-r11 ::= SEQUENCE (SIZE (1..maxMeasEvent)) OF + InterFreqEvent-r11 + +--Following IE shall be used regardless of CPICH RSCP(FDD) or Primary CCPCH RSCP(TDD) +--The order of the list corresponds to the order of the cells in InterFrequencyMeasuredResultsList +--The IE is only used for measured results and not for additional measured results. +InterFrequencyMeasuredResultsList-v590ext ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + DeltaRSCPPerCell + +Inter-FreqEventCriteria-v590ext ::= SEQUENCE { + threholdUsedFrequency-delta DeltaRSCP, + threholdNonUsedFrequency-deltaList ThreholdNonUsedFrequency-deltaList OPTIONAL +} + +--The order of the list corresponds to the order of the events in Inter-FreqEventList +Inter-FreqEventCriteriaList-v590ext ::= SEQUENCE (SIZE (1..maxMeasEvent)) OF + Inter-FreqEventCriteria-v590ext + +--The order of the list corresponds to the order of relevant events in Intra-FreqEventCriteriaList +--i.e. the first element of the list corresponds to the first occurance of event 1e, 1f, 1h, 1i, +--the second element of the list corresponds to the second occurance of event 1e, 1f, 1h, 1i +Intra-FreqEventCriteriaList-v590ext ::= SEQUENCE (SIZE (1..maxMeasEvent)) OF + DeltaRSCP + +--Following IE shall be used regardless of CPICH RSCP(FDD) or Primary CCPCH RSCP(TDD) +--The order of the list corresponds to the order of the cells in IntraFrequencyMeasuredResultsList +--The IE is only used for measured results and not for additional measured results. +IntraFrequencyMeasuredResultsList-v590ext ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + DeltaRSCPPerCell + + +InterFreqEventResults ::= SEQUENCE { + eventID EventIDInterFreq, + interFreqCellList InterFreqCellList OPTIONAL +} + +InterFreqEventResults-va40ext ::= SEQUENCE { + detectedSetTrigger ENUMERATED {true} OPTIONAL +} + +InterFreqEventResults-LCR-r4-ext ::= SEQUENCE { + eventID EventIDInterFreq, + interFreqCellList InterFreqCellList-LCR-r4-ext OPTIONAL +} + +InterFreqMeasQuantity ::= SEQUENCE { + reportingCriteria CHOICE { + intraFreqReportingCriteria SEQUENCE { + intraFreqMeasQuantity IntraFreqMeasQuantity + }, + interFreqReportingCriteria SEQUENCE { + filterCoefficient FilterCoefficient DEFAULT fc0, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + freqQualityEstimateQuantity-FDD FreqQualityEstimateQuantity-FDD + }, + tdd SEQUENCE { + freqQualityEstimateQuantity-TDD FreqQualityEstimateQuantity-TDD + } + } + } + } +} + +InterFreqMeasuredResults ::= SEQUENCE { + frequencyInfo FrequencyInfo OPTIONAL, + utra-CarrierRSSI UTRA-CarrierRSSI OPTIONAL, + interFreqCellMeasuredResultsList InterFreqCellMeasuredResultsList OPTIONAL +} + +InterFreqMeasuredResults-v920ext ::= SEQUENCE { + interFreqCellMeasuredResultsList InterFreqCellMeasuredResultsList-v920ext OPTIONAL +} + +InterFreqMeasuredResultsList ::= SEQUENCE (SIZE (1..maxFreq)) OF + InterFreqMeasuredResults + +InterFreqMeasuredResultsList-v920ext ::= SEQUENCE (SIZE (1..maxFreq)) OF + InterFreqMeasuredResults-v920ext + +InterFreqMeasurementSysInfo-RSCP ::= SEQUENCE { + interFreqCellInfoSI-List InterFreqCellInfoSI-List-RSCP OPTIONAL +} + +InterFreqMeasurementSysInfo-ECN0 ::= SEQUENCE { + interFreqCellInfoSI-List InterFreqCellInfoSI-List-ECN0 OPTIONAL +} + +InterFreqMeasurementSysInfo-HCS-RSCP ::= SEQUENCE { + interFreqCellInfoSI-List InterFreqCellInfoSI-List-HCS-RSCP OPTIONAL +} + +InterFreqMeasurementSysInfo-HCS-ECN0 ::= SEQUENCE { + interFreqCellInfoSI-List InterFreqCellInfoSI-List-HCS-ECN0 OPTIONAL +} + +InterFreqMeasurementSysInfo-RSCP-LCR-r4 ::= SEQUENCE { + interFreqCellInfoSI-List InterFreqCellInfoSI-List-RSCP-LCR OPTIONAL +} + +InterFreqMeasurementSysInfo-ECN0-LCR-r4 ::= SEQUENCE { + interFreqCellInfoSI-List InterFreqCellInfoSI-List-ECN0-LCR OPTIONAL +} + +InterFreqMeasurementSysInfo-HCS-RSCP-LCR-r4 ::= SEQUENCE { + interFreqCellInfoSI-List InterFreqCellInfoSI-List-HCS-RSCP-LCR OPTIONAL +} + +InterFreqMeasurementSysInfo-HCS-ECN0-LCR-r4 ::= SEQUENCE { + interFreqCellInfoSI-List InterFreqCellInfoSI-List-HCS-ECN0-LCR OPTIONAL +} + +InterFreqRACHRepCellsList ::= SEQUENCE (SIZE (1..maxFreq)) OF +InterFreqCellID + +Dummy-InterFreqRACHReportingInfo ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + interFreqRepQuantityRACH-FDD InterFreqRepQuantityRACH-FDD + }, + tdd SEQUENCE { + interFreqRepQuantityRACH-TDDList InterFreqRepQuantityRACH-TDDList + }, + interFreqRACHReportingThreshold Threshold, + maxReportedCellsOnRACHinterFreq MaxReportedCellsOnRACHinterFreq + } +} + +InterFreqRACHReportingInfo ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + interFreqRepQuantityRACH-FDD InterFreqRepQuantityRACH-FDD + }, + tdd SEQUENCE { + interFreqRepQuantityRACH-TDDList InterFreqRepQuantityRACH-TDDList + } + }, + interFreqRACHReportingThreshold Threshold, + maxReportedCellsOnRACHinterFreq MaxReportedCellsOnRACHinterFreq +} + +InterFreqReportCriteria ::= CHOICE { + intraFreqReportingCriteria IntraFreqReportingCriteria, + interFreqReportingCriteria InterFreqReportingCriteria, + periodicalReportingCriteria PeriodicalWithReportingCellStatus, + noReporting ReportingCellStatusOpt +} + +InterFreqReportCriteria-r4 ::= CHOICE { + intraFreqReportingCriteria IntraFreqReportingCriteria-r4, + interFreqReportingCriteria InterFreqReportingCriteria, + periodicalReportingCriteria PeriodicalWithReportingCellStatus, + noReporting ReportingCellStatusOpt +} + +InterFreqReportCriteria-r6 ::= CHOICE { + intraFreqReportingCriteria IntraFreqReportingCriteria-r6, + interFreqReportingCriteria InterFreqReportingCriteria-r6, + periodicalReportingCriteria PeriodicalWithReportingCellStatus, + noReporting ReportingCellStatusOpt +} + +InterFreqReportCriteria-r7 ::= CHOICE { + intraFreqReportingCriteria IntraFreqReportingCriteria-r7, + interFreqReportingCriteria InterFreqReportingCriteria-r6, + periodicalReportingCriteria PeriodicalWithReportingCellStatus, + noReporting ReportingCellStatusOpt +} + +InterFreqReportCriteria-r9 ::= CHOICE { + intraFreqReportingCriteria IntraFreqReportingCriteria-r9, + interFreqReportingCriteria InterFreqReportingCriteria-r6, + periodicalReportingCriteria PeriodicalWithReportingCellStatus, + noReporting ReportingCellStatusOpt +} + +InterFreqReportCriteria-r10 ::= CHOICE { + intraFreqReportingCriteria IntraFreqReportingCriteria-r9, + interFreqReportingCriteria InterFreqReportingCriteria-r10, + periodicalReportingCriteria PeriodicalWithReportingCellStatus-r10, + noReporting ReportingCellStatusOpt-r10 +} + +InterFreqReportCriteria-r11 ::= CHOICE { + intraFreqReportingCriteria IntraFreqReportingCriteria-r11, + interFreqReportingCriteria InterFreqReportingCriteria-r11, + periodicalReportingCriteria PeriodicalWithReportingCellStatus-r10, + noReporting ReportingCellStatusOpt-r10 +} + +InterFreqReportingCriteria ::= SEQUENCE { + interFreqEventList InterFreqEventList OPTIONAL +} + +InterFreqReportingCriteria-r6 ::= SEQUENCE { + interFreqEventList InterFreqEventList-r6 OPTIONAL +} + +InterFreqReportingCriteria-r10 ::= SEQUENCE { + interFreqEventList InterFreqEventList-r10 OPTIONAL +} + +InterFreqReportingCriteria-r11 ::= SEQUENCE { + interFreqEventList InterFreqEventList-r11 OPTIONAL +} + +InterFreqReportingQuantity ::= SEQUENCE { + utra-Carrier-RSSI BOOLEAN, + frequencyQualityEstimate BOOLEAN, + nonFreqRelatedQuantities CellReportingQuantities +} + +InterFreqRepQuantityRACH-FDD ::= ENUMERATED { + cpich-EcN0, cpich-RSCP } + +-- dummy is not used in this version of the specification, it should +-- not be sent and if received the UE behaviour is not specified. +InterFreqRepQuantityRACH-TDD ::= ENUMERATED { + dummy, + primaryCCPCH-RSCP } + +InterFreqRepQuantityRACH-TDDList ::= SEQUENCE (SIZE (1..2)) OF + InterFreqRepQuantityRACH-TDD + +InterFrequencyMeasurement ::= SEQUENCE { + interFreqCellInfoList InterFreqCellInfoList, + interFreqMeasQuantity InterFreqMeasQuantity OPTIONAL, + interFreqReportingQuantity InterFreqReportingQuantity OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + interFreqSetUpdate UE-AutonomousUpdateMode OPTIONAL, + reportCriteria InterFreqReportCriteria +} + + +InterFrequencyMeasurement-r4 ::= SEQUENCE { + interFreqCellInfoList InterFreqCellInfoList-r4, + interFreqMeasQuantity InterFreqMeasQuantity OPTIONAL, + interFreqReportingQuantity InterFreqReportingQuantity OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + interFreqSetUpdate UE-AutonomousUpdateMode OPTIONAL, + reportCriteria InterFreqReportCriteria-r4 +} + +InterFrequencyMeasurement-r6 ::= SEQUENCE { + interFreqCellInfoList InterFreqCellInfoList-r4, + interFreqMeasQuantity InterFreqMeasQuantity OPTIONAL, + interFreqReportingQuantity InterFreqReportingQuantity OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + interFreqSetUpdate UE-AutonomousUpdateMode OPTIONAL, + reportCriteria InterFreqReportCriteria-r6 +} + +InterFrequencyMeasurement-r7 ::= SEQUENCE { + interFreqCellInfoList InterFreqCellInfoList-r4, + interFreqMeasQuantity InterFreqMeasQuantity OPTIONAL, + interFreqReportingQuantity InterFreqReportingQuantity OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + interFreqSetUpdate UE-AutonomousUpdateMode OPTIONAL, + reportCriteria InterFreqReportCriteria-r7 +} + +InterFrequencyMeasurement-r8 ::= SEQUENCE { + interFreqCellInfoList InterFreqCellInfoList-r8, + interFreqMeasQuantity InterFreqMeasQuantity OPTIONAL, + interFreqReportingQuantity InterFreqReportingQuantity OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + interFreqSetUpdate UE-AutonomousUpdateMode OPTIONAL, + adjacentFrequencyIndex INTEGER (0..31) OPTIONAL, + reportCriteria InterFreqReportCriteria-r7 +} + +InterFrequencyMeasurement-r9 ::= SEQUENCE { + interFreqCellInfoList InterFreqCellInfoList-r9, + interFreqMeasQuantity InterFreqMeasQuantity OPTIONAL, + interFreqReportingQuantity InterFreqReportingQuantity OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + interFreqSetUpdate UE-AutonomousUpdateMode OPTIONAL, + adjacentFrequencyIndex INTEGER (0..31) OPTIONAL, + interBandFrequencyIndex INTEGER (0..31) OPTIONAL, + reportCriteria InterFreqReportCriteria-r9 +} + +InterFrequencyMeasurement-r10 ::= SEQUENCE { + interFreqCellInfoList InterFreqCellInfoList-r10, + interFreqMeasQuantity InterFreqMeasQuantity OPTIONAL, + interFreqReportingQuantity InterFreqReportingQuantity OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + interFreqSetUpdate UE-AutonomousUpdateMode OPTIONAL, + adjacentFrequencyIndex INTEGER (0..31) OPTIONAL, + interBandFrequencyIndex INTEGER (0..31) OPTIONAL, + freqIndexListForEnhancedMeas FreqIndexListForEnhancedMeas OPTIONAL, + reportCriteria InterFreqReportCriteria-r10 +} + +InterFrequencyMeasurement-r11 ::= SEQUENCE { + interFreqCellInfoList InterFreqCellInfoList-r10, + interFreqMeasQuantity InterFreqMeasQuantity OPTIONAL, + interFreqReportingQuantity InterFreqReportingQuantity OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + interFreqSetUpdate UE-AutonomousUpdateMode OPTIONAL, + adjacentFrequencyIndex INTEGER (0..31) OPTIONAL, + interBandFrequencyIndex INTEGER (0..31) OPTIONAL, + freqIndexListForEnhancedMeas FreqIndexListForEnhancedMeas OPTIONAL, + reportCriteria InterFreqReportCriteria-r11 +} + +InterRAT-TargetCellDescription ::= SEQUENCE { + technologySpecificInfo CHOICE { + gsm SEQUENCE { + bsic BSIC, + frequency-band Frequency-Band, + bcch-ARFCN BCCH-ARFCN, + ncMode NC-Mode OPTIONAL + }, + is-2000 NULL, + spare2 NULL, + spare1 NULL + } +} + +InterRATCellID ::= INTEGER (0..maxCellMeas-1) + +InterRATCellInfoIndication ::= INTEGER (0..3) + +InterRATCellInfoList ::= SEQUENCE { + removedInterRATCellList RemovedInterRATCellList, + -- NOTE: Future revisions of dedicated messages including IE newInterRATCellList + -- should use a corrected version of this IE + newInterRATCellList NewInterRATCellList, + cellsForInterRATMeasList CellsForInterRATMeasList OPTIONAL +} + +InterRATCellInfoList-B ::= SEQUENCE { + removedInterRATCellList RemovedInterRATCellList, + -- NOTE: IE newInterRATCellList should be optional. However, system information + -- does not support message versions. Hence, this can not be corrected + newInterRATCellList NewInterRATCellList-B +} + +InterRATCellInfoList-r4 ::= SEQUENCE { + removedInterRATCellList RemovedInterRATCellList, + newInterRATCellList NewInterRATCellList OPTIONAL, + cellsForInterRATMeasList CellsForInterRATMeasList OPTIONAL +} + +InterRATCellInfoList-r6 ::= SEQUENCE { + removedInterRATCellList RemovedInterRATCellList, + newInterRATCellList NewInterRATCellList OPTIONAL, + cellsForInterRATMeasList CellsForInterRATMeasList OPTIONAL, + interRATCellInfoIndication-r6 InterRATCellInfoIndication OPTIONAL +} + +InterRATCellIndividualOffset ::= INTEGER (-50..50) + +InterRATEvent ::= CHOICE { + event3a Event3a, + event3b Event3b, + event3c Event3c, + event3d Event3d +} + +InterRATEventList ::= SEQUENCE (SIZE (1..maxMeasEvent)) OF + InterRATEvent + +InterRATEventResults ::= SEQUENCE { + eventID EventIDInterRAT, + cellToReportList CellToReportList +} + +InterRATInfo ::= ENUMERATED { + gsm } + +InterRATInfo-r6 ::= SEQUENCE { + rat InterRATInfo, + gsm-TargetCellInfoList GSM-TargetCellInfoList OPTIONAL +} + +InterRATInfo-v860ext ::= CHOICE { + -- CHOICE gsm is provided in IE InterRATInfo or IE InterRATInfo-r6 + gsm NULL, + eutra SEQUENCE { + eutra-TargetFreqInfoList EUTRA-TargetFreqInfoList + } +} + +InterRATMeasQuantity ::= SEQUENCE { + measQuantityUTRAN-QualityEstimate IntraFreqMeasQuantity OPTIONAL, + ratSpecificInfo CHOICE { + gsm SEQUENCE { + measurementQuantity MeasurementQuantityGSM, + filterCoefficient FilterCoefficient DEFAULT fc0, + bsic-VerificationRequired BSIC-VerificationRequired + }, + is-2000 SEQUENCE { + tadd-EcIo INTEGER (0..63), + tcomp-EcIo INTEGER (0..15), + softSlope INTEGER (0..63) OPTIONAL, + addIntercept INTEGER (0..63) OPTIONAL + } + } +} + +InterRATMeasQuantity-r8 ::= SEQUENCE { + measQuantityUTRAN-QualityEstimate IntraFreqMeasQuantity OPTIONAL, + ratSpecificInfo CHOICE { + gsm SEQUENCE { + measurementQuantity MeasurementQuantityGSM, + filterCoefficient FilterCoefficient DEFAULT fc0, + bsic-VerificationRequired BSIC-VerificationRequired + }, + is-2000 SEQUENCE { + tadd-EcIo INTEGER (0..63), + tcomp-EcIo INTEGER (0..15), + softSlope INTEGER (0..63) OPTIONAL, + addIntercept INTEGER (0..63) OPTIONAL + }, + e-UTRA SEQUENCE { + measurementQuantity MeasurementQuantityEUTRA, + filterCoefficient FilterCoefficient DEFAULT fc0 + } + } +} + +InterRATMeasuredResults ::= CHOICE { + gsm GSM-MeasuredResultsList, + spare NULL +} + +InterRATMeasuredResultsList ::= SEQUENCE (SIZE (1..maxOtherRAT-16)) OF + InterRATMeasuredResults + +InterRATMeasurement ::= SEQUENCE { + interRATCellInfoList InterRATCellInfoList OPTIONAL, + interRATMeasQuantity InterRATMeasQuantity OPTIONAL, + interRATReportingQuantity InterRATReportingQuantity OPTIONAL, + reportCriteria InterRATReportCriteria +} + +InterRATMeasurement-r4 ::= SEQUENCE { + interRATCellInfoList InterRATCellInfoList-r4 OPTIONAL, + interRATMeasQuantity InterRATMeasQuantity OPTIONAL, + interRATReportingQuantity InterRATReportingQuantity OPTIONAL, + reportCriteria InterRATReportCriteria +} + +InterRATMeasurement-r6 ::= SEQUENCE { + interRATCellInfoList InterRATCellInfoList-r6 OPTIONAL, + interRATMeasQuantity InterRATMeasQuantity OPTIONAL, + interRATReportingQuantity InterRATReportingQuantity OPTIONAL, + reportCriteria InterRATReportCriteria +} + +InterRATMeasurement-r8 ::= SEQUENCE { + interRATMeasurementObjects CHOICE { + interRATCellInfoList InterRATCellInfoList-r6, + eutra-FrequencyList EUTRA-FrequencyList + } OPTIONAL, + interRATMeasQuantity InterRATMeasQuantity-r8 OPTIONAL, + interRATReportingQuantity InterRATReportingQuantity-r8 OPTIONAL, + reportCriteria InterRATReportCriteria, + idleIntervalInfo IdleIntervalInfo OPTIONAL +} + +InterRATMeasurement-r9 ::= SEQUENCE { + interRATMeasurementObjects CHOICE { + interRATCellInfoList InterRATCellInfoList-r6, + eutra-FrequencyList EUTRA-FrequencyList-r9 + } OPTIONAL, + interRATMeasQuantity InterRATMeasQuantity-r8 OPTIONAL, + interRATReportingQuantity InterRATReportingQuantity-r8 OPTIONAL, + reportCriteria InterRATReportCriteria, + idleIntervalInfo IdleIntervalInfo OPTIONAL +} + +InterRATMeasurement-r11 ::= SEQUENCE { + interRATMeasurementObjects CHOICE { + interRATCellInfoList InterRATCellInfoList-r6, + eutra-FrequencyList EUTRA-FrequencyList-r11 + } OPTIONAL, + interRATMeasQuantity InterRATMeasQuantity-r8 OPTIONAL, + interRATReportingQuantity InterRATReportingQuantity-r8 OPTIONAL, + reportCriteria InterRATReportCriteria, + idleIntervalInfo IdleIntervalInfo OPTIONAL +} + +InterRATMeasurementSysInfo ::= SEQUENCE { + interRATCellInfoList InterRATCellInfoList OPTIONAL +} + +InterRATMeasurementSysInfo-B ::= SEQUENCE { + interRATCellInfoList InterRATCellInfoList-B OPTIONAL +} + +InterRATReportCriteria ::= CHOICE { + interRATReportingCriteria InterRATReportingCriteria, + periodicalReportingCriteria PeriodicalWithReportingCellStatus, + noReporting ReportingCellStatusOpt +} + +InterRATReportingCriteria ::= SEQUENCE { + interRATEventList InterRATEventList OPTIONAL +} + +InterRATReportingQuantity ::= SEQUENCE { + utran-EstimatedQuality BOOLEAN, + ratSpecificInfo CHOICE { + gsm SEQUENCE { + -- dummy and dummy2 are not used in this version of the specification + -- and when received they should be ignored. + dummy BOOLEAN, + dummy2 BOOLEAN, + gsm-Carrier-RSSI BOOLEAN + } + } +} + +InterRATReportingQuantity-r8 ::= SEQUENCE { + utran-EstimatedQuality BOOLEAN, + ratSpecificInfo CHOICE { + gsm SEQUENCE { + gsm-Carrier-RSSI BOOLEAN + }, + eutra SEQUENCE { + reportingQuantity ENUMERATED { measurementQuantity, + both } + } + } +} + +IntraFreqCellID ::= INTEGER (0..maxCellMeas-1) + +IntraFreqCellIDOnSecULFreq ::= INTEGER (0..maxCellMeasOnSecULFreq-1) + +IntraFreqCellInfoList ::= SEQUENCE { + removedIntraFreqCellList RemovedIntraFreqCellList OPTIONAL, + newIntraFreqCellList NewIntraFreqCellList OPTIONAL, + cellsForIntraFreqMeasList CellsForIntraFreqMeasList OPTIONAL +} + +IntraFreqCellInfoList-r4 ::= SEQUENCE { + removedIntraFreqCellList RemovedIntraFreqCellList OPTIONAL, + newIntraFreqCellList NewIntraFreqCellList-r4 OPTIONAL, + cellsForIntraFreqMeasList CellsForIntraFreqMeasList OPTIONAL +} + +IntraFreqCellInfoListInfoOnSecULFreq ::= SEQUENCE { + removedIntraFreqCellList RemovedIntraFreqCellListOnSecULFreq OPTIONAL, + newIntraFreqCellList NewIntraFreqCellListOnSecULFreq OPTIONAL, + cellsForIntraFreqMeasList CellsForIntraFreqMeasListOnSecULFreq OPTIONAL +} + +IntraFreqCellInfoListOnSecULFreq ::= SEQUENCE { + intraFreqCellInfoListOnSecULFreq IntraFreqCellInfoListInfoOnSecULFreq +} + +IntraFreqCellInfoList-r9 ::= SEQUENCE { + removedIntraFreqCellList RemovedIntraFreqCellList OPTIONAL, + newIntraFreqCellList NewIntraFreqCellList-r9 OPTIONAL, + cellsForIntraFreqMeasList CellsForIntraFreqMeasList OPTIONAL, + cSGIntraFreqCellInfoList CSGIntraFreqCellInfoList OPTIONAL, + intraFreqSIAcquisition IntraFreqSIAcquisition OPTIONAL + +} + +IntraFreqCellInfoList-r10 ::= SEQUENCE { + removedIntraFreqCellList RemovedIntraFreqCellList OPTIONAL, + newIntraFreqCellList NewIntraFreqCellList-r10 OPTIONAL, + cellsForIntraFreqMeasList CellsForIntraFreqMeasList OPTIONAL, + cSGIntraFreqCellInfoList CSGIntraFreqCellInfoList OPTIONAL, + intraFreqSIAcquisition IntraFreqSIAcquisition OPTIONAL +} + +IntraFreqSIAcquisitionInfo::= SEQUENCE (SIZE (1..maxSIrequest)) OF + PrimaryCPICH-Info + +IntraFreqSIAcquisition ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + intraFreqSIAcquisitionInfo IntraFreqSIAcquisitionInfo OPTIONAL + }, + tdd NULL + } +} + +IntraFreqCellInfoSI-List-RSCP ::= SEQUENCE { + removedIntraFreqCellList RemovedIntraFreqCellList OPTIONAL, + newIntraFreqCellList NewIntraFreqCellSI-List-RSCP +} + +IntraFreqCellInfoSI-List-ECN0 ::= SEQUENCE { + removedIntraFreqCellList RemovedIntraFreqCellList OPTIONAL, + newIntraFreqCellList NewIntraFreqCellSI-List-ECN0 +} + +IntraFreqCellInfoSI-List-HCS-RSCP ::= SEQUENCE { + removedIntraFreqCellList RemovedIntraFreqCellList OPTIONAL, + newIntraFreqCellList NewIntraFreqCellSI-List-HCS-RSCP +} + +IntraFreqCellInfoSI-List-HCS-ECN0 ::= SEQUENCE { + removedIntraFreqCellList RemovedIntraFreqCellList OPTIONAL, + newIntraFreqCellList NewIntraFreqCellSI-List-HCS-ECN0 +} + +IntraFreqCellInfoSI-List-RSCP-LCR-r4 ::= SEQUENCE { + removedIntraFreqCellList RemovedIntraFreqCellList OPTIONAL, + newIntraFreqCellList NewIntraFreqCellSI-List-RSCP-LCR-r4 +} + +IntraFreqCellInfoSI-List-ECN0-LCR-r4 ::= SEQUENCE { + removedIntraFreqCellList RemovedIntraFreqCellList OPTIONAL, + newIntraFreqCellList NewIntraFreqCellSI-List-ECN0-LCR-r4 +} + +IntraFreqCellInfoSI-List-HCS-RSCP-LCR-r4 ::= SEQUENCE { + removedIntraFreqCellList RemovedIntraFreqCellList OPTIONAL, + newIntraFreqCellList NewIntraFreqCellSI-List-HCS-RSCP-LCR-r4 +} + +IntraFreqCellInfoSI-List-HCS-ECN0-LCR-r4 ::= SEQUENCE { + removedIntraFreqCellList RemovedIntraFreqCellList OPTIONAL, + newIntraFreqCellList NewIntraFreqCellSI-List-HCS-ECN0-LCR-r4 +} + +IntraFreqEvent ::= CHOICE { + e1a Event1a, + e1b Event1b, + e1c Event1c, + e1d NULL, + e1e Event1e, + e1f Event1f, + e1g NULL, + e1h ThresholdUsedFrequency, + e1i ThresholdUsedFrequency +} + +IntraFreqEvent-r4 ::= CHOICE { + e1a Event1a-r4, + e1b Event1b-r4, + e1c Event1c, + e1d NULL, + e1e Event1e, + e1f Event1f, + e1g NULL, + e1h ThresholdUsedFrequency, + e1i ThresholdUsedFrequency +} + +IntraFreqEvent-LCR-r4 ::= CHOICE { + e1a Event1a-LCR-r4, + e1b Event1b-LCR-r4, + e1c Event1c, + e1d NULL, + e1e Event1e, + e1f Event1f, + e1g NULL, + e1h ThresholdUsedFrequency, + e1i ThresholdUsedFrequency +} + +IntraFreqEvent-r6 ::= CHOICE { + e1a Event1a-r4, + e1b Event1b-r4, + e1c Event1c, + e1d Event1d, + e1e Event1e-r6, + e1f Event1f-r6, + e1g NULL, + e1h ThresholdUsedFrequency-r6, + e1i ThresholdUsedFrequency-r6, + e1j Event1j-r6 +} + +IntraFreqEvent-r7 ::= CHOICE { + e1a Event1a-r4, + e1b Event1b-r7, + e1c Event1c, + e1d Event1d, + e1e Event1e-r6, + e1f Event1f-r6, + e1g NULL, + e1h ThresholdUsedFrequency-r6, + e1i ThresholdUsedFrequency-r6, + e1j Event1j-r6 +} + +IntraFreqEventOnSecULFreq ::= CHOICE { + e1a Event1a-OnSecUlFreq-r9, + e1b Event1b-OnSecUlFreq-r9, + e1c Event1c, + e1e Event1e-r6, + e1f Event1f-r6 +} + +IntraFreqEvent-1d-r5 ::= SEQUENCE { + triggeringCondition TriggeringCondition2 OPTIONAL, + useCIO BOOLEAN OPTIONAL +} + +IntraFreqEventCriteria ::= SEQUENCE { + event IntraFreqEvent, + hysteresis Hysteresis, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL +} + +IntraFreqEventCriteria-r4 ::= SEQUENCE { + event IntraFreqEvent-r4, + hysteresis Hysteresis, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL +} + +IntraFreqEventCriteria-LCR-r4 ::= SEQUENCE { + event IntraFreqEvent-LCR-r4, + hysteresis Hysteresis, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL +} + +IntraFreqEventCriteria-r6 ::= SEQUENCE { + event IntraFreqEvent-r6, + hysteresis Hysteresis, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL +} + +IntraFreqEventCriteria-r7 ::= SEQUENCE { + event IntraFreqEvent-r7, + hysteresis Hysteresis, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL +} + +IntraFreqEventCriteriaOnSecULFreq ::= SEQUENCE { + event IntraFreqEventOnSecULFreq, + hysteresis Hysteresis, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL +} + +IntraFreqEventCriteriaList ::= SEQUENCE (SIZE (1..maxMeasEvent)) OF + IntraFreqEventCriteria + +IntraFreqEventCriteriaList-r4 ::= SEQUENCE (SIZE (1..maxMeasEvent)) OF + IntraFreqEventCriteria-r4 + +IntraFreqEventCriteriaList-LCR-r4 ::= SEQUENCE (SIZE (1..maxMeasEvent)) OF + IntraFreqEventCriteria-LCR-r4 + +IntraFreqEventCriteriaList-r6 ::= SEQUENCE (SIZE (1..maxMeasEvent)) OF + IntraFreqEventCriteria-r6 + +IntraFreqEventCriteriaList-r7 ::= SEQUENCE (SIZE (1..maxMeasEvent)) OF + IntraFreqEventCriteria-r7 + +IntraFreqEventCriteriaListOnSecULFreq ::= SEQUENCE{ + frequencyInfo FrequencyInfo, + intraFreqEventCriteria SEQUENCE (SIZE (1..maxMeasEventOnSecULFreq)) OF + IntraFreqEventCriteriaOnSecULFreq +} + +IntraFreqEventResults ::= SEQUENCE { + eventID EventIDIntraFreq, + cellMeasurementEventResults CellMeasurementEventResults +} + +IntraFreqEventResultsOnSecUlFreq ::= SEQUENCE { + eventID EventIDIntraFreq, + cellMeasurementEventResultsOnSecUlFreq CellMeasurementEventResultsOnSecUlFreq +} + +IntraFreqMeasQuantity ::= SEQUENCE { + filterCoefficient FilterCoefficient DEFAULT fc0, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + intraFreqMeasQuantity-FDD IntraFreqMeasQuantity-FDD + }, + tdd SEQUENCE { + intraFreqMeasQuantity-TDDList IntraFreqMeasQuantity-TDDList + } + } +} + +-- If IntraFreqMeasQuantity-FDD is used in InterRATMeasQuantity, then only +-- cpich-Ec-N0 and cpich-RSCP are allowed. +-- dummy is not used in this version of the specification, it should +-- not be sent and if received the UE behaviour is not specified. +IntraFreqMeasQuantity-FDD ::= ENUMERATED { + cpich-Ec-N0, + cpich-RSCP, + pathloss, + dummy } + +IntraFreqMeasQuantity-FDD-sib3 ::= ENUMERATED { + cpich-Ec-N0, cpich-RSCP } + +-- dummy is not used in this version of the specification, it should +-- not be sent and if received the UE behaviour is not specified. +IntraFreqMeasQuantity-TDD ::= ENUMERATED { + primaryCCPCH-RSCP, + pathloss, + timeslotISCP, + dummy } + +IntraFreqMeasQuantity-TDDList ::= SEQUENCE (SIZE (1..4)) OF + IntraFreqMeasQuantity-TDD + +IntraFreqMeasQuantity-TDD-sib3List ::= SEQUENCE (SIZE (1..2)) OF + ENUMERATED { primaryCCPCH-RSCP, timeslotISCP } + +IntraFreqMeasuredResultsList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + CellMeasuredResults + +IntraFreqMeasuredResultsList-v920ext ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + CellMeasuredResults-v920ext + + +IntraFreqMeasurementSysInfo-RSCP ::= SEQUENCE { + intraFreqMeasurementID MeasurementIdentity DEFAULT 1, + intraFreqCellInfoSI-List IntraFreqCellInfoSI-List-RSCP OPTIONAL, + intraFreqMeasQuantity IntraFreqMeasQuantity OPTIONAL, + intraFreqReportingQuantityForRACH IntraFreqReportingQuantityForRACH OPTIONAL, + maxReportedCellsOnRACH MaxReportedCellsOnRACH OPTIONAL, + reportingInfoForCellDCH ReportingInfoForCellDCH OPTIONAL +} + +IntraFreqMeasurementSysInfo-ECN0 ::= SEQUENCE { + intraFreqMeasurementID MeasurementIdentity DEFAULT 1, + intraFreqCellInfoSI-List IntraFreqCellInfoSI-List-ECN0 OPTIONAL, + intraFreqMeasQuantity IntraFreqMeasQuantity OPTIONAL, + intraFreqReportingQuantityForRACH IntraFreqReportingQuantityForRACH OPTIONAL, + maxReportedCellsOnRACH MaxReportedCellsOnRACH OPTIONAL, + reportingInfoForCellDCH ReportingInfoForCellDCH OPTIONAL +} + +IntraFreqMeasurementSysInfo-HCS-RSCP ::= SEQUENCE { + intraFreqMeasurementID MeasurementIdentity DEFAULT 1, + intraFreqCellInfoSI-List IntraFreqCellInfoSI-List-HCS-RSCP OPTIONAL, + intraFreqMeasQuantity IntraFreqMeasQuantity OPTIONAL, + intraFreqReportingQuantityForRACH IntraFreqReportingQuantityForRACH OPTIONAL, + maxReportedCellsOnRACH MaxReportedCellsOnRACH OPTIONAL, + reportingInfoForCellDCH ReportingInfoForCellDCH OPTIONAL +} + +IntraFreqMeasurementSysInfo-HCS-ECN0 ::= SEQUENCE { + intraFreqMeasurementID MeasurementIdentity DEFAULT 1, + intraFreqCellInfoSI-List IntraFreqCellInfoSI-List-HCS-ECN0 OPTIONAL, + intraFreqMeasQuantity IntraFreqMeasQuantity OPTIONAL, + intraFreqReportingQuantityForRACH IntraFreqReportingQuantityForRACH OPTIONAL, + maxReportedCellsOnRACH MaxReportedCellsOnRACH OPTIONAL, + reportingInfoForCellDCH ReportingInfoForCellDCH OPTIONAL +} + +IntraFreqMeasurementSysInfo-RSCP-LCR-r4 ::= SEQUENCE { + intraFreqMeasurementID MeasurementIdentity DEFAULT 1, + intraFreqCellInfoSI-List IntraFreqCellInfoSI-List-RSCP-LCR-r4 OPTIONAL, + intraFreqMeasQuantity IntraFreqMeasQuantity OPTIONAL, + intraFreqReportingQuantityForRACH IntraFreqReportingQuantityForRACH OPTIONAL, + maxReportedCellsOnRACH MaxReportedCellsOnRACH OPTIONAL, + reportingInfoForCellDCH ReportingInfoForCellDCH-LCR-r4 OPTIONAL +} + +IntraFreqMeasurementSysInfo-ECN0-LCR-r4 ::= SEQUENCE { + intraFreqMeasurementID MeasurementIdentity DEFAULT 1, + intraFreqCellInfoSI-List IntraFreqCellInfoSI-List-ECN0-LCR-r4 OPTIONAL, + intraFreqMeasQuantity IntraFreqMeasQuantity OPTIONAL, + intraFreqReportingQuantityForRACH IntraFreqReportingQuantityForRACH OPTIONAL, + maxReportedCellsOnRACH MaxReportedCellsOnRACH OPTIONAL, + reportingInfoForCellDCH ReportingInfoForCellDCH-LCR-r4 OPTIONAL +} + +IntraFreqMeasurementSysInfo-HCS-RSCP-LCR-r4 ::= SEQUENCE { + intraFreqMeasurementID MeasurementIdentity DEFAULT 1, + intraFreqCellInfoSI-List IntraFreqCellInfoSI-List-HCS-RSCP-LCR-r4 OPTIONAL, + intraFreqMeasQuantity IntraFreqMeasQuantity OPTIONAL, + intraFreqReportingQuantityForRACH IntraFreqReportingQuantityForRACH OPTIONAL, + maxReportedCellsOnRACH MaxReportedCellsOnRACH OPTIONAL, + reportingInfoForCellDCH ReportingInfoForCellDCH-LCR-r4 OPTIONAL +} + +IntraFreqMeasurementSysInfo-HCS-ECN0-LCR-r4 ::= SEQUENCE { + intraFreqMeasurementID MeasurementIdentity DEFAULT 1, + intraFreqCellInfoSI-List IntraFreqCellInfoSI-List-HCS-ECN0-LCR-r4 OPTIONAL, + intraFreqMeasQuantity IntraFreqMeasQuantity OPTIONAL, + intraFreqReportingQuantityForRACH IntraFreqReportingQuantityForRACH OPTIONAL, + maxReportedCellsOnRACH MaxReportedCellsOnRACH OPTIONAL, + reportingInfoForCellDCH ReportingInfoForCellDCH-LCR-r4 OPTIONAL +} + +IntraFreqReportCriteria ::= CHOICE { + intraFreqReportingCriteria IntraFreqReportingCriteria, + periodicalReportingCriteria PeriodicalWithReportingCellStatus, + noReporting ReportingCellStatusOpt +} + +IntraFreqReportCriteria-r4 ::= CHOICE { + intraFreqReportingCriteria IntraFreqReportingCriteria-r4, + periodicalReportingCriteria PeriodicalWithReportingCellStatus, + noReporting ReportingCellStatusOpt +} + +IntraFreqReportCriteria-r6 ::= CHOICE { + intraFreqReportingCriteria IntraFreqReportingCriteria-r6, + periodicalReportingCriteria PeriodicalWithReportingCellStatus, + noReporting ReportingCellStatusOpt +} + +IntraFreqReportCriteria-r7 ::= CHOICE { + intraFreqReportingCriteria IntraFreqReportingCriteria-r7, + periodicalReportingCriteria PeriodicalWithReportingCellStatus, + noReporting ReportingCellStatusOpt +} + +IntraFreqReportCriteria-r9 ::= CHOICE { + intraFreqReportingCriteria IntraFreqReportingCriteria-r9, + periodicalReportingCriteria PeriodicalWithReportingCellStatus, + noReporting ReportingCellStatusOpt +} + +IntraFreqReportCriteria-r11 ::= CHOICE { + intraFreqReportingCriteria IntraFreqReportingCriteria-r11, + periodicalReportingCriteria PeriodicalWithReportingCellStatus, + noReporting ReportingCellStatusOpt +} + +IntraFreqReportingCriteria ::= SEQUENCE { + eventCriteriaList IntraFreqEventCriteriaList OPTIONAL +} + +IntraFreqReportingCriteria-r4 ::= SEQUENCE { + eventCriteriaList IntraFreqEventCriteriaList-r4 OPTIONAL +} + +IntraFreqReportingCriteria-LCR-r4 ::= SEQUENCE { + eventCriteriaList IntraFreqEventCriteriaList-LCR-r4 OPTIONAL +} + +IntraFreqReportingCriteria-r6 ::= SEQUENCE { + eventCriteriaList IntraFreqEventCriteriaList-r6 OPTIONAL +} + +IntraFreqReportingCriteria-r7 ::= SEQUENCE { + eventCriteriaList IntraFreqEventCriteriaList-r7 OPTIONAL +} + +IntraFreqReportingCriteria-r9 ::= SEQUENCE { + eventCriteriaList IntraFreqEventCriteriaList-r7 OPTIONAL, + eventCriteriaListOnSecULFreq IntraFreqEventCriteriaListOnSecULFreq OPTIONAL +} + +IntraFreqReportingCriteria-r11 ::= SEQUENCE { + eventCriteriaList IntraFreqEventCriteriaList-r7 OPTIONAL, + eventCriteriaListOnSecULFreq IntraFreqEventCriteriaListOnSecULFreq OPTIONAL, + excludedCellInfoList CellInfoListToBeExcluded OPTIONAL +} + +IntraFreqReportingCriteria-1b-r5 ::= SEQUENCE { + periodicReportingInfo-1b PeriodicReportingInfo-1b +} + +IntraFreqReportingQuantity ::= SEQUENCE { + activeSetReportingQuantities CellReportingQuantities, + monitoredSetReportingQuantities CellReportingQuantities, + detectedSetReportingQuantities CellReportingQuantities OPTIONAL +} + +IntraFreqReportingQuantityForRACH ::= SEQUENCE { + sfn-SFN-OTD-Type SFN-SFN-OTD-Type, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + intraFreqRepQuantityRACH-FDD IntraFreqRepQuantityRACH-FDD + }, + tdd SEQUENCE { + intraFreqRepQuantityRACH-TDDList IntraFreqRepQuantityRACH-TDDList + } + } +} + +IntraFreqRepQuantityRACH-FDD ::= ENUMERATED { + cpich-EcN0, cpich-RSCP, + pathloss, noReport } + +IntraFreqRepQuantityRACH-TDD ::= ENUMERATED { + timeslotISCP, + primaryCCPCH-RSCP, + noReport } + +IntraFreqRepQuantityRACH-TDDList ::= SEQUENCE (SIZE (1..2)) OF + IntraFreqRepQuantityRACH-TDD + +IntraFrequencyMeasurement ::= SEQUENCE { + intraFreqCellInfoList IntraFreqCellInfoList OPTIONAL, + intraFreqMeasQuantity IntraFreqMeasQuantity OPTIONAL, + intraFreqReportingQuantity IntraFreqReportingQuantity OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + reportCriteria IntraFreqReportCriteria OPTIONAL +} + +IntraFrequencyMeasurement-r4 ::= SEQUENCE { + intraFreqCellInfoList IntraFreqCellInfoList-r4 OPTIONAL, + intraFreqMeasQuantity IntraFreqMeasQuantity OPTIONAL, + intraFreqReportingQuantity IntraFreqReportingQuantity OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + reportCriteria IntraFreqReportCriteria-r4 OPTIONAL +} + +IntraFrequencyMeasurement-r6 ::= SEQUENCE { + intraFreqCellInfoList IntraFreqCellInfoList-r4 OPTIONAL, + intraFreqMeasQuantity IntraFreqMeasQuantity OPTIONAL, + intraFreqReportingQuantity IntraFreqReportingQuantity OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + -- reportCriteria is optional in later versions of this message + reportCriteria IntraFreqReportCriteria-r6 +} + +IntraFrequencyMeasurement-r7 ::= SEQUENCE { + intraFreqCellInfoList IntraFreqCellInfoList-r4 OPTIONAL, + intraFreqMeasQuantity IntraFreqMeasQuantity OPTIONAL, + intraFreqReportingQuantity IntraFreqReportingQuantity OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + reportCriteria IntraFreqReportCriteria-r7 OPTIONAL +} + +IntraFrequencyMeasurement-r9 ::= SEQUENCE { + intraFreqCellInfoList IntraFreqCellInfoList-r9 OPTIONAL, + intraFreqCellInfoListOnSecULFreq IntraFreqCellInfoListOnSecULFreq OPTIONAL, + intraFreqMeasQuantity IntraFreqMeasQuantity OPTIONAL, + intraFreqReportingQuantity IntraFreqReportingQuantity OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + reportCriteria IntraFreqReportCriteria-r9 OPTIONAL +} + +IntraFrequencyMeasurement-r10 ::= SEQUENCE { + intraFreqCellInfoList IntraFreqCellInfoList-r10 OPTIONAL, + intraFreqCellInfoListOnSecULFreq IntraFreqCellInfoListOnSecULFreq OPTIONAL, + intraFreqMeasQuantity IntraFreqMeasQuantity OPTIONAL, + intraFreqReportingQuantity IntraFreqReportingQuantity OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + reportCriteria IntraFreqReportCriteria-r9 OPTIONAL +} + +IntraFrequencyMeasurement-r11 ::= SEQUENCE { + intraFreqCellInfoList IntraFreqCellInfoList-r10 OPTIONAL, + intraFreqCellInfoListOnSecULFreq IntraFreqCellInfoListOnSecULFreq OPTIONAL, + intraFreqMeasQuantity IntraFreqMeasQuantity OPTIONAL, + intraFreqReportingQuantity IntraFreqReportingQuantity OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + reportCriteria IntraFreqReportCriteria-r11 OPTIONAL, + periodicalReportingCriteriaOnSecULFreq + PeriodicalWithReportingCellStatusOnSecULFreq OPTIONAL +} + +IntraFrequencyMeasuredResultsListOnSecULFreq ::= SEQUENCE (SIZE (1..maxCellMeasOnSecULFreq)) OF + CellMeasuredResults-r9 + +IntraUTRAANR ::= SEQUENCE { + loggingAbsoluteThreshold LoggingAbsoluteThreshold, + loggingRelativeThreshold LoggingRelativeThreshold OPTIONAL +} + +IODE ::= INTEGER (0..255) + +IP-Length ::= ENUMERATED { + ipl5, ipl10 } + +IP-PCCPCH-r4 ::= BOOLEAN + +IP-Spacing ::= ENUMERATED { + e5, e7, e10, e15, e20, + e30, e40, e50 } + +IP-Spacing-TDD ::= ENUMERATED { + e30, e40, e50, e70, e100} + +IS-2000SpecificMeasInfo ::= ENUMERATED { + frequency, timeslot, colourcode, + outputpower, pn-Offset } + +LoggedANRConfigurationInfo ::= SEQUENCE { + loggingDuration ENUMERATED { min10, min30, hr1, spare2, spare1 }, + intraUTRAANR IntraUTRAANR OPTIONAL, + interRATANRforEUTRAIndicator ENUMERATED { true } OPTIONAL, + interRATANRforGSMIndicator ENUMERATED { true } OPTIONAL +} + +LoggedANRReportInfoList ::= SEQUENCE (SIZE (1..maxNumANRLoggedItems)) OF + LoggedANRReportInfo + +LoggedANRReportInfoList-vb50ext ::= SEQUENCE (SIZE (1..maxNumANRLoggedItems)) OF + LoggedANRReportInfo-vb50ext + +LoggedANRReportInfo ::= SEQUENCE { + plmn-Identity PLMN-Identity, + servingCell CellIdentity, + loggedCellInfo LoggedCellInfo +} + +LoggedANRReportInfo-vb50ext ::= SEQUENCE { + loggedCellInfo LoggedCellInfo-vb50ext +} + +LoggedCellInfo ::= CHOICE { + loggedUTRACellInfo LoggedUTRACellInfo, + loggedEUTRACellInfo LoggedEUTRACellInfo, + loggedGSMCellInfo LoggedGSMCellInfo +} + +LoggedCellInfo-vb50ext ::= CHOICE { + loggedEUTRACellInfo LoggedEUTRACellInfo-vb50ext +} + +LoggedConnectionEstablishmentFailureInfo-FDD ::= SEQUENCE { + loggedConnectionEstablishmentFailureAccessInfo-FDD + LoggedConnectionEstablishmentFailureAccessInfo-FDD, + loggedMeasFailedCellMeas LoggedMeasServingCellMeas-FDD, + loggedMeasIntrafreqNeighbourList LoggedMeasIntrafreqNeighbourList-FDD OPTIONAL, + loggedMeasInterfreqList LoggedMeasInterfreqList-FDD OPTIONAL, + loggedMeasInterRATNeighbourMeas LoggedMeasInterRATNeighbourMeas-vb50ext OPTIONAL, + loggedConnectionEstablishmentFailureLocationInfo + LoggedConnectionEstablishmentFailureLocationInfo OPTIONAL +} + +LoggedConnectionEstablishmentFailureInfo-TDD128 ::= SEQUENCE { + loggedConnectionEstablishmentFailureAccessInfo-TDD + LoggedConnectionEstablishmentFailureAccessInfo-TDD, + loggedMeasFailedCellMeas LoggedMeasServingCellMeas-TDD128, + loggedMeasIntrafreqNeighbourList LoggedMeasIntrafreqNeighbourMeasList-TDD128 OPTIONAL, + loggedMeasInterfreqList LoggedMeasInterfreqList-TDD128 OPTIONAL, + loggedMeasInterRATNeighbourMeas LoggedMeasInterRATNeighbourMeas-vb50ext OPTIONAL, + loggedConnectionEstablishmentFailureLocationInfo + LoggedConnectionEstablishmentFailureLocationInfo OPTIONAL +} + +LoggedConnectionEstablishmentFailureAccessInfo-FDD ::= SEQUENCE { + numberOfRRCMsgTransmitted INTEGER (0..8) +} + +LoggedConnectionEstablishmentFailureAccessInfo-TDD ::= SEQUENCE { + numberOfRRCMsgTransmitted INTEGER (0..8), + fpachReceived BOOLEAN, + e-RUCCHFailure BOOLEAN OPTIONAL +} + +LoggedConnectionEstablishmentFailureLocationInfo ::= SEQUENCE { + location CHOICE { + ellipsoidPoint EllipsoidPoint, + ellipsoidPointUncertCircle EllipsoidPointUncertCircle, + ellipsoidPointUncertEllipse EllipsoidPointUncertEllipse, + ellipsoidPointAltitude EllipsoidPointAltitude, + ellipsoidPointAltitudeEllipse EllipsoidPointAltitudeEllipsoide + }, + horizontalVelocity HorizontalVelocity OPTIONAL +} + +ConnectionEstablishmentFailureReport ::= SEQUENCE { + timeSinceFailure INTEGER (0..172800), + modeSpecificInfo CHOICE { + fdd SEQUENCE { + loggedConnectionEstablishmentFailureInfo + LoggedConnectionEstablishmentFailureInfo-FDD + }, + tdd SEQUENCE { + loggedConnectionEstablishmentFailureInfo + LoggedConnectionEstablishmentFailureInfo-TDD128 + } + } +} + +LoggedEUTRACellInfo ::= SEQUENCE { + plmn-Identity PLMN-Identity, + trackingAreaCode BIT STRING (SIZE (16)), + eutraCellIdentity BIT STRING (SIZE (28)), + earfcn EARFCN, + physicalCellIdentity EUTRA-PhysicalCellIdentity +} + +LoggedEUTRACellInfo-vb50ext ::= SEQUENCE { + earfcn EARFCNExtension OPTIONAL +} + +LoggedGSMCellInfo ::= SEQUENCE { + plmn-Identity PLMN-Identity, + lac BIT STRING (SIZE (16)), + gsmCellIdentity BIT STRING (SIZE (16)), + bcch-ARFCN BCCH-ARFCN, + bandIndicator Frequency-Band, + bsic BSIC +} + +LoggedMeasurementsConfigurationInfo ::= SEQUENCE { + absoluteTimeInfo BIT STRING (SIZE(48)), + loggingDuration ENUMERATED {min10, min20, min40, hr1, hr1min30,hr2,spare2,spare1}, + loggingInterval ENUMERATED {li128,li256,li512,li1024,li2048,li3072,li4096,li6144}, + traceReference TraceReference, + traceRecordingSession TraceRecordingSession, + tce-Id TCE-Id, + areaConfiguration CHOICE { + cellIDList SEQUENCE (SIZE (1..32)) OF + CellIdentity, + locationAreaList SEQUENCE (SIZE (1..8)) OF + LAI, + routingAreaList SEQUENCE (SIZE (1..8)) OF + RAI + } OPTIONAL +} + +LoggedMeasurementsConfigurationInfo-r11 ::= SEQUENCE { + absoluteTimeInfo BIT STRING (SIZE(48)), + loggingDuration ENUMERATED {min10, min20, min40, hr1, hr1min30,hr2,spare2,spare1}, + loggingInterval ENUMERATED {li128,li256,li512,li1024,li2048,li3072,li4096,li6144}, + traceReference TraceReference, + traceRecordingSession TraceRecordingSession, + tce-Id TCE-Id, + plmnList PlmnList OPTIONAL, + areaConfiguration CHOICE { + cellIDList SEQUENCE (SIZE (1..32)) OF CellIDListItem, + locationAreaList SEQUENCE (SIZE (1..8)) OF + LAI, + routingAreaList SEQUENCE (SIZE (1..8)) OF + RAI + } OPTIONAL +} + +LoggedMeasInterfreqList-FDD ::= SEQUENCE (SIZE (1..maxNumFDDFreqs)) OF + LoggedMeasInterfreqInfo-FDD + +LoggedMeasInterfreqInfo-FDD ::= SEQUENCE { + frequencyInfo FrequencyInfo, + loggedMeasInterfreqNeighbourList SEQUENCE (SIZE (1..maxnumLoggedMeas)) OF + LoggedMeasNeighbourInfo-FDD +} + +LoggedMeasInterfreqInfo-TDD128 ::= SEQUENCE { + frequencyInfo FrequencyInfo, + loggedMeasInterfreqNeighbourList LoggedMeasInterfreqNeighbourList-TDD128 +} + +LoggedMeasInterRATNeighbourMeas ::= SEQUENCE { + loggedMeasEUTRAFreqList LoggedMeasEUTRAFreqList OPTIONAL, + loggedMeasGSMNeighbourCellsList LoggedMeasGSMNeighbourCellsList OPTIONAL +} + +LoggedMeasInterRATNeighbourMeas-vb50ext ::= SEQUENCE { + loggedMeasEUTRAFreqList LoggedMeasEUTRAFreqList-vb50ext +} + +LoggedMeasIntrafreqNeighbourList-FDD ::= SEQUENCE (SIZE (1..maxnumLoggedMeas)) OF + LoggedMeasNeighbourInfo-FDD + +LoggedMeasNeighbourInfo-FDD ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + cpich-RSCP CPICH-RSCP, + cpich-Ec-N0 CPICH-Ec-N0 +} + +LoggedMeasIntrafreqNeighbourMeasList-TDD128 ::= SEQUENCE (SIZE (1..maxnumLoggedMeas)) OF + LoggedMeasNeighbourMeas-TDD128 + +LoggedMeasNeighbourMeas-TDD128 ::= SEQUENCE { + cellParametersID CellParametersID, + primaryCCPCH-RSCP PrimaryCCPCH-RSCP +} + +LoggedMeasGSMNeighbourCellsList ::= SEQUENCE (SIZE (1..maxnumLoggedMeas)) OF + LoggedMeasGSMNeighbourCellsinfo + +LoggedMeasGSMNeighbourCellsinfo ::= SEQUENCE { + bsic BSIC, + frequency-band Frequency-Band, + bcch-ARFCN BCCH-ARFCN, + gsm-CarrierRSSI GSM-CarrierRSSI +} + +LoggedMeasEUTRAFreqList ::= SEQUENCE (SIZE (1..maxNumEUTRAFreqs))OF + LoggedMeasEUTRAFreqInfo + +LoggedMeasEUTRAFreqList-vb50ext ::= SEQUENCE (SIZE (1..maxNumEUTRAFreqs)) OF + LoggedMeasEUTRAFreqInfo-vb50ext + +LoggedMeasEUTRAFreqInfo ::= SEQUENCE { + earfcn EARFCN, + loggedMeasEUTRAFreqNeighbourInfoList SEQUENCE (SIZE (1.. maxnumLoggedMeas)) OF + LoggedMeasEUTRAFreqNeighbourInfo +} + +LoggedMeasEUTRAFreqInfo-vb50ext ::= SEQUENCE { + earfcn EARFCNExtension OPTIONAL +} + +LoggedMeasEUTRAFreqNeighbourInfo ::= SEQUENCE { + physicalCellIdentity EUTRA-PhysicalCellIdentity, + rSRP INTEGER (0..97) , + rSRQ INTEGER (0..33) +} + +LoggedMeasInfo-FDD ::= SEQUENCE { + relativeTimeStamp INTEGER (0..7200), + loggedMeasServingCellMeas LoggedMeasServingCellMeas-FDD, + loggedMeasIntrafreqNeighbourList LoggedMeasIntrafreqNeighbourList-FDD OPTIONAL, + loggedMeasInterfreqList LoggedMeasInterfreqList-FDD OPTIONAL, + loggedMeasInterRATNeighbourMeas LoggedMeasInterRATNeighbourMeas OPTIONAL, + loggedMeasLocationInfo LoggedMeasLocationInfo OPTIONAL +} + +LoggedMeasInfo-FDD-vb50ext ::= SEQUENCE { + loggedMeasServingCellMeas LoggedMeasServingCellMeas-FDD-vb50ext OPTIONAL, + loggedMeasLocationInfo LoggedMeasLocationInfo-vb50ext OPTIONAL, + loggedMeasInterRATNeighbourMeas LoggedMeasInterRATNeighbourMeas-vb50ext OPTIONAL +} + +LoggedMeasInfo-TDD128 ::= SEQUENCE { + relativeTimeStamp INTEGER (0..7200), + loggedMeasServingCellMeas LoggedMeasServingCellMeas-TDD128, + loggedMeasIntrafreqNeighbourList LoggedMeasIntrafreqNeighbourMeasList-TDD128 OPTIONAL, + loggedMeasInterfreqList LoggedMeasInterfreqList-TDD128 OPTIONAL, + loggedMeasInterRATNeighbourMeas LoggedMeasInterRATNeighbourMeas OPTIONAL, + loggedMeasLocationInfo LoggedMeasLocationInfo OPTIONAL +} + +LoggedMeasInfo-TDD128-vb50ext ::= SEQUENCE { + loggedMeasServingCellMeas LoggedMeasServingCellMeas-TDD128-vb50ext OPTIONAL, + loggedMeasLocationInfo LoggedMeasLocationInfo-vb50ext OPTIONAL, + loggedMeasInterRATNeighbourMeas LoggedMeasInterRATNeighbourMeas-vb50ext OPTIONAL +} + +LoggedMeasInfoList-FDD ::= SEQUENCE (SIZE (1.. maxLoggedMeasReport)) OF LoggedMeasInfo-FDD + +LoggedMeasInfoList-FDD-vb50ext ::= SEQUENCE (SIZE (1..maxLoggedMeasReport)) OF LoggedMeasInfo-FDD-vb50ext + +LoggedMeasInfoList-TDD128 ::= SEQUENCE (SIZE (1.. maxLoggedMeasReport)) OF LoggedMeasInfo-TDD128 + +LoggedMeasInfoList-TDD128-vb50ext ::= SEQUENCE (SIZE (1..maxLoggedMeasReport)) OF LoggedMeasInfo-TDD128-vb50ext + +LoggedMeasInfoList ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + loggedMeasInfoList LoggedMeasInfoList-FDD + }, + tdd SEQUENCE { + loggedMeasInfoList LoggedMeasInfoList-TDD128 + } + } +} + +LoggedMeasInfoList-vb50ext ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + loggedMeasInfoList LoggedMeasInfoList-FDD-vb50ext + }, + tdd SEQUENCE { + loggedMeasInfoList LoggedMeasInfoList-TDD128-vb50ext + } + } +} + +LoggedMeasInterfreqList-TDD128 ::= SEQUENCE (SIZE (1..maxNumTDDFreqs)) OF + LoggedMeasInterfreqInfo-TDD128 + +LoggedMeasInterfreqNeighbourList-TDD128 ::= SEQUENCE (SIZE (1..maxnumLoggedMeas)) OF + LoggedMeasNeighbourMeas-TDD128 + +LoggedMeasLocationInfo ::= CHOICE { + ellipsoidPoint EllipsoidPoint, + ellipsoidPointAltitude EllipsoidPointAltitude +} + +LoggedMeasLocationInfo-vb50ext ::= CHOICE { + ellipsoidPointUncertCircle EllipsoidPointUncertCircle, + ellipsoidPointUncertEllipse EllipsoidPointUncertEllipse, + ellipsoidPointAltitudeEllipse EllipsoidPointAltitudeEllipsoide +} + +LoggedMeasReport ::= SEQUENCE { + absoluteTimeInfo BIT STRING (SIZE(48)), + traceReference TraceReference, + traceRecordingSession TraceRecordingSession, + tce-Id TCE-Id, + loggedMeasInfoList LoggedMeasInfoList OPTIONAL, + loggedMeasAvailable ENUMERATED { true } OPTIONAL +} + +LoggedMeasReport-vb50ext ::= SEQUENCE { + loggedMeasInfoList LoggedMeasInfoList-vb50ext OPTIONAL +} + +LoggedMeasServingCellMeas-FDD ::= SEQUENCE { + cellIdentity CellIdentity, + cpich-RSCP CPICH-RSCP, + cpich-Ec-N0 CPICH-Ec-N0 +} + +LoggedMeasServingCellMeas-FDD-vb50ext ::= SEQUENCE { + plmnIdentity PLMN-Identity OPTIONAL +} + +LoggedMeasServingCellMeas-TDD128 ::= SEQUENCE { + cellIdentity CellIdentity, + primaryCCPCH-RSCP PrimaryCCPCH-RSCP +} + +LoggedMeasServingCellMeas-TDD128-vb50ext ::= SEQUENCE { + plmnIdentity PLMN-Identity OPTIONAL +} + +LoggedUTRACellInfo ::= SEQUENCE { + plmn-Identity PLMN-Identity, + cellIdentity CellIdentity, + uarfcn UARFCN, + cellParametersID CellParametersID OPTIONAL, + primaryScramblingCode PrimaryScramblingCode OPTIONAL +} + +LoggingAbsoluteThreshold ::= CHOICE { + rscpforANR RSCPforANR, + ec-N0forANR Ec-N0forANR +} + +-- it applies to RSCP by step of 2 and Ec/N0 by step of 1 +-- Actual value LoggingRelativeThreshold = IE value * 2 (RSCP) +-- Actual value LoggingRelativeThreshold = IE value (Ec/N0) +LoggingRelativeThreshold ::= INTEGER (-4..16) + +KeplerianParameters ::= SEQUENCE { + toe-nav BIT STRING (SIZE (14)), + ganss-omega-nav BIT STRING (SIZE (32)), + delta-n-nav BIT STRING (SIZE (16)), + m-zero-nav BIT STRING (SIZE (32)), + omegadot-nav BIT STRING (SIZE (24)), + ganss-e-nav BIT STRING (SIZE (32)), + idot-nav BIT STRING (SIZE (14)), + a-sqrt-nav BIT STRING (SIZE (32)), + i-zero-nav BIT STRING (SIZE (32)), + omega-zero-nav BIT STRING (SIZE (32)), + c-rs-nav BIT STRING (SIZE (16)), + c-is-nav BIT STRING (SIZE (16)), + c-us-nav BIT STRING (SIZE (16)), + c-rc-nav BIT STRING (SIZE (16)), + c-ic-nav BIT STRING (SIZE (16)), + c-uc-nav BIT STRING (SIZE (16)) +} + +MaxNumberOfReportingCellsType1 ::= ENUMERATED { + e1, e2, e3, e4, e5, e6} + +MaxNumberOfReportingCellsType2 ::= ENUMERATED { + e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12} + +MaxNumberOfReportingCellsType3 ::= ENUMERATED { + viactCellsPlus1, + viactCellsPlus2, + viactCellsPlus3, + viactCellsPlus4, + viactCellsPlus5, + viactCellsPlus6 } + +MaxReportedCellsOnRACH ::= ENUMERATED { + noReport, + currentCell, + currentAnd-1-BestNeighbour, + currentAnd-2-BestNeighbour, + currentAnd-3-BestNeighbour, + currentAnd-4-BestNeighbour, + currentAnd-5-BestNeighbour, + currentAnd-6-BestNeighbour } + +MaxReportedCellsOnRACHinterFreq ::= INTEGER (1..8) + +MeasuredResults ::= CHOICE { + intraFreqMeasuredResultsList IntraFreqMeasuredResultsList, + interFreqMeasuredResultsList InterFreqMeasuredResultsList, + interRATMeasuredResultsList InterRATMeasuredResultsList, + trafficVolumeMeasuredResultsList TrafficVolumeMeasuredResultsList, + qualityMeasuredResults QualityMeasuredResults, + ue-InternalMeasuredResults UE-InternalMeasuredResults, + ue-positioning-MeasuredResults UE-Positioning-MeasuredResults, + spare NULL +} + +MeasuredResultsOnSecUlFreq ::= SEQUENCE { + intraFreqMeasuredResultsList IntraFrequencyMeasuredResultsListOnSecULFreq +} + +MeasuredResults-v390ext ::= SEQUENCE { + ue-positioning-MeasuredResults-v390ext UE-Positioning-MeasuredResults-v390ext +} + + +MeasuredResults-v590ext ::= CHOICE { + intraFrequencyMeasuredResultsList IntraFrequencyMeasuredResultsList-v590ext, + interFrequencyMeasuredResultsList InterFrequencyMeasuredResultsList-v590ext +} + +MeasuredResults-v770ext ::= CHOICE { + ueInternalMeasuredResults UE-InternalMeasuredResults-v770ext, + ue-positioning-MeasuredResults UE-Positioning-MeasuredResults-v770ext +} + +MeasuredResults-v860ext ::= CHOICE { + ue-positioning-MeasuredResults UE-Positioning-MeasuredResults-v860ext +} + +MeasuredResultsList-v920ext ::= SEQUENCE (SIZE (1..maxAdditionalMeas)) OF + MeasuredResults-v920ext + +MeasuredResultsListOnSecUlFreq ::= SEQUENCE (SIZE (1..maxAdditionalMeas)) OF + MeasuredResultsOnSecUlFreq + +MeasuredResults-v920ext ::= CHOICE { + intraFreqMeasuredResultsList IntraFreqMeasuredResultsList-v920ext, + interFreqMeasuredResultsList InterFreqMeasuredResultsList-v920ext +} + +MeasuredResults-LCR-r4 ::= CHOICE { + intraFreqMeasuredResultsList IntraFreqMeasuredResultsList, + interFreqMeasuredResultsList InterFreqMeasuredResultsList, + interRATMeasuredResultsList InterRATMeasuredResultsList, + trafficVolumeMeasuredResultsList TrafficVolumeMeasuredResultsList, + qualityMeasuredResults QualityMeasuredResults, + ue-InternalMeasuredResults UE-InternalMeasuredResults-LCR-r4, + ue-positioniing-MeasuredResults UE-Positioning-MeasuredResults, + spare NULL +} + +MeasuredResultsList ::= SEQUENCE (SIZE (1..maxAdditionalMeas)) OF + MeasuredResults + +MeasuredResultsList-LCR-r4-ext ::= SEQUENCE (SIZE (1..maxAdditionalMeas)) OF + MeasuredResults-LCR-r4 + +MeasuredResultsList-v770xet ::= SEQUENCE (SIZE (1..maxAdditionalMeas)) OF SEQUENCE { + -- The 'measuredResults' element shall be present, if 'v770' extended measurement results + -- associated with the corresponding element in the IE 'MeasuredResultList' shall be + -- provided, otherwise it is not needed + measuredResults MeasuredResults-v770ext OPTIONAL +} + +MeasuredResultsList-v860ext ::= SEQUENCE (SIZE (1..maxAdditionalMeas)) OF SEQUENCE { + -- The 'measuredResults' element shall be present, if 'v860' extended measurement results + -- associated with the corresponding element in the IE 'MeasuredResultList' shall be + -- provided, otherwise it is not needed + measuredResults MeasuredResults-v860ext OPTIONAL +} + +MeasuredResultsOnRACH ::= SEQUENCE { + currentCell SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + measurementQuantity CHOICE { + cpich-Ec-N0 CPICH-Ec-N0, + cpich-RSCP CPICH-RSCP, + pathloss Pathloss, + spare NULL + } + }, + tdd SEQUENCE { + -- For 3.84 Mcps, 7.68 Mcps and 1.28 Mcps TDD + timeslotISCP TimeslotISCP-List OPTIONAL, + primaryCCPCH-RSCP PrimaryCCPCH-RSCP OPTIONAL + } + } + }, + monitoredCells MonitoredCellRACH-List OPTIONAL +} + +MeasuredResultsOnRACH-v7g0ext ::= SEQUENCE { + currentCell-DeltaRSCP DeltaRSCPPerCell OPTIONAL, + monitoredCellRACH-List-v7g0ext MonitoredCellRACH-List-v7g0ext OPTIONAL +} + +--The order of the list corresponds to the order of the cells in MonitoredCellRACH-List +MonitoredCellRACH-List-v7g0ext ::= SEQUENCE (SIZE (1..8)) OF + DeltaRSCPPerCell + +--TDD choice is removed, compared to tabular, in order to optimise FDD format +MeasuredResultsOnRACHFDD-r11 ::= SEQUENCE { + currentCell SEQUENCE { + measurementQuantity CHOICE { + cpich-Ec-N0 CPICH-Ec-N0, + cpich-RSCP CPICH-RSCP, + pathloss Pathloss, + spare NULL + } + }, + measuredResultsUsedFreq MonitoredCellRACH-ListFDD-r11 OPTIONAL, + measuredResultsNonUsedFreq MeasuredResultsOnRACHinterFreq OPTIONAL, + measuredResultsEUTRAFreq MeasuredResultsOnRACH-EUTRAFreq OPTIONAL +} + +MeasuredResultsOnRACHinterFreq ::= SEQUENCE { + interFreqCellIndication-SIB11 INTEGER (0..1), + interFreqCellIndication-SIB12 INTEGER (0..1), + interFreqRACHRepCellsList InterFreqRACHRepCellsList +} +MeasuredResultsOnRACH-EUTRAFreq ::= SEQUENCE { + eutraFrequencyIndication-SIB19 INTEGER (0..1), + eutraFrequencyIndicator BIT STRING (SIZE (maxNumEUTRAFreqs-FACH)) +} + +MeasurementCommand ::= CHOICE { + setup MeasurementType, + modify SEQUENCE { + measurementType MeasurementType OPTIONAL + }, + release NULL +} + +MeasurementCommand-r4 ::= CHOICE { + setup MeasurementType-r4, + modify SEQUENCE { + measurementType MeasurementType-r4 OPTIONAL + }, + release NULL +} + +MeasurementCommand-r6 ::= CHOICE { + setup MeasurementType-r6, + modify SEQUENCE { + measurementType MeasurementType-r6 OPTIONAL + }, + release NULL +} + +MeasurementCommand-r7 ::= CHOICE { + setup MeasurementType-r7, + modify SEQUENCE { + measurementType MeasurementType-r7 OPTIONAL + }, + release NULL +} + +MeasurementCommand-r8 ::= CHOICE { + setup MeasurementType-r8, + modify SEQUENCE { + measurementType MeasurementType-r8 OPTIONAL + }, + release NULL +} + +MeasurementCommand-r9 ::= CHOICE { + setup MeasurementType-r9, + modify SEQUENCE { + measurementType MeasurementType-r9 OPTIONAL + }, + release NULL +} + +MeasurementCommand-r10 ::= CHOICE { + setup MeasurementType-r10, + modify SEQUENCE { + measurementType MeasurementType-r10 OPTIONAL + }, + release NULL +} + +MeasurementCommand-r11 ::= CHOICE { + setup MeasurementType-r11, + modify SEQUENCE { + measurementType MeasurementType-r11 OPTIONAL + }, + release NULL +} + +MeasurementControlSysInfo ::= SEQUENCE { + -- CHOICE cellSelectQualityMeasure represents PCCPCH-RSCP in TDD mode. + use-of-HCS CHOICE { + hcs-not-used SEQUENCE { + cellSelectQualityMeasure CHOICE { + cpich-RSCP SEQUENCE { + intraFreqMeasurementSysInfo IntraFreqMeasurementSysInfo-RSCP OPTIONAL, + interFreqMeasurementSysInfo InterFreqMeasurementSysInfo-RSCP OPTIONAL + }, + cpich-Ec-N0 SEQUENCE { + intraFreqMeasurementSysInfo IntraFreqMeasurementSysInfo-ECN0 OPTIONAL, + interFreqMeasurementSysInfo InterFreqMeasurementSysInfo-ECN0 OPTIONAL + } + }, + interRATMeasurementSysInfo InterRATMeasurementSysInfo-B OPTIONAL + }, + hcs-used SEQUENCE { + cellSelectQualityMeasure CHOICE { + cpich-RSCP SEQUENCE { + intraFreqMeasurementSysInfo IntraFreqMeasurementSysInfo-HCS-RSCP OPTIONAL, + interFreqMeasurementSysInfo InterFreqMeasurementSysInfo-HCS-RSCP OPTIONAL + }, + cpich-Ec-N0 SEQUENCE { + intraFreqMeasurementSysInfo IntraFreqMeasurementSysInfo-HCS-ECN0 OPTIONAL, + interFreqMeasurementSysInfo InterFreqMeasurementSysInfo-HCS-ECN0 OPTIONAL + } + }, + interRATMeasurementSysInfo InterRATMeasurementSysInfo OPTIONAL + } + }, + trafficVolumeMeasSysInfo TrafficVolumeMeasSysInfo OPTIONAL, + -- dummy is not used in this version of specification and it shall be ignored by the UE. + dummy UE-InternalMeasurementSysInfo OPTIONAL +} + +MeasurementControlSysInfoExtension ::= SEQUENCE { + -- CHOICE cellSelectQualityMeasure represents PCCPCH-RSCP in TDD mode. + use-of-HCS CHOICE { + hcs-not-used SEQUENCE { + cellSelectQualityMeasure CHOICE { + cpich-RSCP SEQUENCE { + newIntraFreqCellList NewIntraFreqCellSI-List-RSCP OPTIONAL, + newInterFreqCellList NewInterFreqCellSI-List-RSCP OPTIONAL + }, + cpich-Ec-N0 SEQUENCE { + newIntraFreqCellList NewIntraFreqCellSI-List-ECN0 OPTIONAL, + newInterFreqCellList NewInterFreqCellSI-List-ECN0 OPTIONAL + } + }, + newInterRATCellList NewInterRATCellList OPTIONAL + }, + hcs-used SEQUENCE { + cellSelectQualityMeasure CHOICE { + cpich-RSCP SEQUENCE { + newIntraFreqCellList NewIntraFreqCellSI-List-HCS-RSCP OPTIONAL, + newInterFreqCellList NewInterFreqCellSI-List-HCS-RSCP OPTIONAL + }, + cpich-Ec-N0 SEQUENCE { + newIntraFreqCellList NewIntraFreqCellSI-List-HCS-ECN0 OPTIONAL, + newInterFreqCellList NewInterFreqCellSI-List-HCS-ECN0 OPTIONAL + } + }, + newInterRATCellList NewInterRATCellList OPTIONAL + } + } +} + +MeasurementControlSysInfoExtensionAddon-r5 ::= SEQUENCE { + --The order of the list corresponds to the order of cell in newIntraFrequencyCellInfoList + newIntraFrequencyCellInfoListAddon-r5 SEQUENCE (SIZE (1..maxCellMeas)) OF + CellSelectReselectInfo-v590ext OPTIONAL, + --The order of the list corresponds to the order of cell in newInterFrequencyCellInfoList + newInterFrequencyCellInfoListAddon-r5 SEQUENCE (SIZE (1..maxCellMeas)) OF + CellSelectReselectInfo-v590ext OPTIONAL, + --The order of the list corresponds to the order of cell in newInterRATCellInfoList + newInterRATCellInfoListAddon-r5 SEQUENCE (SIZE (1..maxCellMeas)) OF + CellSelectReselectInfo-v590ext OPTIONAL +} + +MeasurementControlSysInfoExtension-LCR-r4 ::= SEQUENCE { + -- CHOICE cellSelectQualityMeasure represents PCCPCH-RSCP in TDD mode. + use-of-HCS CHOICE { + hcs-not-used SEQUENCE { + cellSelectQualityMeasure CHOICE { + cpich-RSCP SEQUENCE { + newIntraFreqCellList NewIntraFreqCellSI-List-RSCP-LCR-r4 OPTIONAL, + newInterFreqCellList NewInterFreqCellSI-List-RSCP-LCR-r4 OPTIONAL + }, + cpich-Ec-N0 SEQUENCE { + newIntraFreqCellList NewIntraFreqCellSI-List-ECN0-LCR-r4 OPTIONAL, + newInterFreqCellList NewInterFreqCellSI-List-ECN0-LCR-r4 OPTIONAL + } + }, + newInterRATCellList NewInterRATCellList OPTIONAL + }, + hcs-used SEQUENCE { + cellSelectQualityMeasure CHOICE { + cpich-RSCP SEQUENCE { + newIntraFreqCellList NewIntraFreqCellSI-List-HCS-RSCP-LCR-r4 OPTIONAL, + newInterFreqCellList NewInterFreqCellSI-List-HCS-RSCP-LCR-r4 OPTIONAL + }, + cpich-Ec-N0 SEQUENCE { + newIntraFreqCellList NewIntraFreqCellSI-List-HCS-ECN0-LCR-r4 OPTIONAL, + newInterFreqCellList NewInterFreqCellSI-List-HCS-ECN0-LCR-r4 OPTIONAL + } + }, + newInterRATCellList NewInterRATCellList OPTIONAL + } + } +} + +MeasurementControlSysInfo-LCR-r4-ext ::= SEQUENCE { + -- CHOICE use-of-HCS shall have the same value as the use-of-HCS + -- in MeasurementControlSysInfo + -- CHOICE cellSelectQualityMeasure represents PCCPCH-RSCP in TDD mode. + use-of-HCS CHOICE { + hcs-not-used SEQUENCE { + -- CHOICE cellSelectQualityMeasure shall have the same value as the + -- cellSelectQualityMeasure in MeasurementControlSysInfo + cellSelectQualityMeasure CHOICE { + cpich-RSCP SEQUENCE { + intraFreqMeasurementSysInfo IntraFreqMeasurementSysInfo-RSCP-LCR-r4 OPTIONAL, + interFreqMeasurementSysInfo InterFreqMeasurementSysInfo-RSCP-LCR-r4 OPTIONAL + }, + cpich-Ec-N0 SEQUENCE { + intraFreqMeasurementSysInfo IntraFreqMeasurementSysInfo-ECN0-LCR-r4 OPTIONAL, + interFreqMeasurementSysInfo InterFreqMeasurementSysInfo-ECN0-LCR-r4 OPTIONAL + } + } + }, + hcs-used SEQUENCE { + -- CHOICE cellSelectQualityMeasure shall have the same value as the + -- cellSelectQualityMeasure in MeasurementControlSysInfo + cellSelectQualityMeasure CHOICE { + cpich-RSCP SEQUENCE { + intraFreqMeasurementSysInfo IntraFreqMeasurementSysInfo-HCS-RSCP-LCR-r4 OPTIONAL, + interFreqMeasurementSysInfo InterFreqMeasurementSysInfo-HCS-RSCP-LCR-r4 OPTIONAL + }, + cpich-Ec-N0 SEQUENCE { + intraFreqMeasurementSysInfo IntraFreqMeasurementSysInfo-HCS-ECN0-LCR-r4 OPTIONAL, + interFreqMeasurementSysInfo InterFreqMeasurementSysInfo-HCS-ECN0-LCR-r4 OPTIONAL + } + } + } + } +} + +MeasurementIdentity ::= INTEGER (1..16) + +MeasurementIdentityExt ::= INTEGER (17..32) + +MeasurementIdentity-r9 ::= INTEGER (1..32) + +MeasurementOccasionPatternParameter ::= SEQUENCE { + measurement-Occasion-Coeff INTEGER (1..9), + measurement-Occasion-Offset INTEGER (0..511), + measurement-Occasion-Length INTEGER (1..512), + timeslotBitmap BIT STRING (SIZE (7)) OPTIONAL +} + +MeasurementQuantityGSM ::= ENUMERATED { + gsm-CarrierRSSI, + dummy } + +MeasurementQuantityEUTRA ::= ENUMERATED { + rsrp, + rsrq } + +MeasurementReportingMode ::= SEQUENCE { + measurementReportTransferMode TransferMode, + periodicalOrEventTrigger PeriodicalOrEventTrigger +} + +MeasurementType ::= CHOICE { + intraFrequencyMeasurement IntraFrequencyMeasurement, + interFrequencyMeasurement InterFrequencyMeasurement, + interRATMeasurement InterRATMeasurement, + ue-positioning-Measurement UE-Positioning-Measurement, + trafficVolumeMeasurement TrafficVolumeMeasurement, + qualityMeasurement QualityMeasurement, + ue-InternalMeasurement UE-InternalMeasurement +} + +MeasurementType-r4 ::= CHOICE { + intraFrequencyMeasurement IntraFrequencyMeasurement-r4, + interFrequencyMeasurement InterFrequencyMeasurement-r4, + interRATMeasurement InterRATMeasurement-r4, + up-Measurement UE-Positioning-Measurement-r4, + trafficVolumeMeasurement TrafficVolumeMeasurement, + qualityMeasurement QualityMeasurement, + ue-InternalMeasurement UE-InternalMeasurement-r4 +} + +MeasurementType-r6 ::= CHOICE { + intraFrequencyMeasurement IntraFrequencyMeasurement-r6, + interFrequencyMeasurement InterFrequencyMeasurement-r6, + interRATMeasurement InterRATMeasurement-r6, + up-Measurement UE-Positioning-Measurement-r4, + trafficVolumeMeasurement TrafficVolumeMeasurement, + qualityMeasurement QualityMeasurement, + ue-InternalMeasurement UE-InternalMeasurement-r4 +} + +MeasurementType-r7 ::= CHOICE { + intraFrequencyMeasurement IntraFrequencyMeasurement-r7, + interFrequencyMeasurement InterFrequencyMeasurement-r7, + interRATMeasurement InterRATMeasurement-r6, + up-Measurement UE-Positioning-Measurement-r7, + trafficVolumeMeasurement TrafficVolumeMeasurement, + qualityMeasurement QualityMeasurement, + ue-InternalMeasurement UE-InternalMeasurement-r4 +} + +MeasurementType-r8 ::= CHOICE { + intraFrequencyMeasurement IntraFrequencyMeasurement-r7, + interFrequencyMeasurement InterFrequencyMeasurement-r8, + interRATMeasurement InterRATMeasurement-r8, + up-Measurement UE-Positioning-Measurement-r8, + trafficVolumeMeasurement TrafficVolumeMeasurement, + qualityMeasurement QualityMeasurement, + ue-InternalMeasurement UE-InternalMeasurement-r4 +} + +MeasurementType-r9 ::= CHOICE { + intraFrequencyMeasurement IntraFrequencyMeasurement-r9, + interFrequencyMeasurement InterFrequencyMeasurement-r9, + interRATMeasurement InterRATMeasurement-r9, + up-Measurement UE-Positioning-Measurement-r9, + trafficVolumeMeasurement TrafficVolumeMeasurement, + qualityMeasurement QualityMeasurement, + ue-InternalMeasurement UE-InternalMeasurement-r4, + csgProximityDetection CSGProximityDetection +} + +MeasurementType-r10 ::= CHOICE { + intraFrequencyMeasurement IntraFrequencyMeasurement-r10, + interFrequencyMeasurement InterFrequencyMeasurement-r10, + interRATMeasurement InterRATMeasurement-r9, + up-Measurement UE-Positioning-Measurement-r10, + trafficVolumeMeasurement TrafficVolumeMeasurement, + qualityMeasurement QualityMeasurement, + ue-InternalMeasurement UE-InternalMeasurement-r4, + csgProximityDetection CSGProximityDetection +} + +MeasurementType-r11 ::= CHOICE { + intraFrequencyMeasurement IntraFrequencyMeasurement-r11, + interFrequencyMeasurement InterFrequencyMeasurement-r11, + interRATMeasurement InterRATMeasurement-r11, + up-Measurement UE-Positioning-Measurement-r10, + trafficVolumeMeasurement TrafficVolumeMeasurement, + qualityMeasurement QualityMeasurement, + ue-InternalMeasurement UE-InternalMeasurement-r4, + csgProximityDetection CSGProximityDetection, + eutraMeasurementForCELLFACH EUTRA-MeasurementForCELLFACH +} + +MeasurementValidity ::= SEQUENCE { + ue-State ENUMERATED { + cell-DCH, all-But-Cell-DCH, all-States } +} + +MonitoredCellRACH-List ::= SEQUENCE (SIZE (1..8)) OF + MonitoredCellRACH-Result + +MonitoredCellRACH-Result ::= SEQUENCE { + sfn-SFN-ObsTimeDifference SFN-SFN-ObsTimeDifference OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + measurementQuantity CHOICE { + cpich-Ec-N0 CPICH-Ec-N0, + cpich-RSCP CPICH-RSCP, + pathloss Pathloss, + spare NULL + } OPTIONAL + }, + tdd SEQUENCE { + cellParametersID CellParametersID, + primaryCCPCH-RSCP PrimaryCCPCH-RSCP + } + } +} + +MonitoredCellRACH-ListFDD-r11 ::= SEQUENCE (SIZE (1..8)) OF + MonitoredCellRACH-ResultFDD-r11 + +--TDD choice is removed, compared to tabular, in order to optimise FDD format +MonitoredCellRACH-ResultFDD-r11 ::= SEQUENCE { + sfn-SFN-ObsTimeDifference SFN-SFN-ObsTimeDifference OPTIONAL, + primaryCPICH-Info PrimaryCPICH-Info, + measurementQuantity CHOICE { + cpich-Ec-N0 CPICH-Ec-N0, + cpich-RSCP CPICH-RSCP, + pathloss Pathloss, + spare NULL + } +} + +MultipathIndicator ::= ENUMERATED { + nm, + low, + medium, + high } + +MultipleEUTRAFrequencyBandIndicatorList ::= SEQUENCE (SIZE (1.. maxMultipleFrequencyBandsEUTRA)) OF + RadioFrequencyBandEUTRA + +MultipleEUTRAFrequencyBandIndicatorExtensionList ::= SEQUENCE (SIZE (1.. maxMultipleFrequencyBandsEUTRA)) + OF RadioFrequencyBandEUTRAExt + +MultipleEUTRAFrequencyBandInfo ::= SEQUENCE { + multipleEUTRAFrequencyBandIndicatorlist MultipleEUTRAFrequencyBandIndicatorList OPTIONAL +} + +MultipleEUTRAFrequencyBandExtensionInfo ::= SEQUENCE { + multipleEUTRAFrequencyBandIndicatorlist MultipleEUTRAFrequencyBandIndicatorExtensionList OPTIONAL +} + +MultipleEUTRAFrequencyInfoList ::= SEQUENCE (SIZE (1.. maxNumEUTRAFreqs)) OF + MultipleEUTRAFrequencyBandInfo + +MultipleEUTRAFrequencyInfoExtensionList ::= SEQUENCE (SIZE (1.. maxNumEUTRAFreqs)) OF + MultipleEUTRAFrequencyBandExtensionInfo + +MultipleFrequencyBandIndicatorListFDD::= SEQUENCE (SIZE (1..maxMultipleFrequencyBandsFDD)) OF + FrequencyBandsIndicatorFDD + +MultipleFrequencyBandInfo ::= SEQUENCE { + multipleFrequencyBandIndicatorListFDD MultipleFrequencyBandIndicatorListFDD OPTIONAL +} + +MultipleFrequencyInfoListFDD ::= SEQUENCE (SIZE (1.. maxNumFDDFreqs)) OF + MultipleFrequencyBandInfo + +N-CR-T-CRMaxHyst ::= SEQUENCE { + n-CR INTEGER (1..16) DEFAULT 8, + t-CRMaxHyst T-CRMaxHyst +} + +NAVclockModel ::= SEQUENCE { + navToc BIT STRING (SIZE (16)), + navaf2 BIT STRING (SIZE (8)), + navaf1 BIT STRING (SIZE (16)), + navaf0 BIT STRING (SIZE (22)), + navTgd BIT STRING (SIZE (8)) +} + +NavigationModelSatInfo ::= SEQUENCE { + satID SatID, + satelliteStatus SatelliteStatus, + ephemerisParameter EphemerisParameter OPTIONAL +} + +NavigationModelSatInfoList ::= SEQUENCE (SIZE (1..maxSat)) OF + NavigationModelSatInfo + +NavModel-CNAVKeplerianSet ::= SEQUENCE { + cnavTop BIT STRING (SIZE (11)), + cnavURAindex BIT STRING (SIZE (5)), + cnavDeltaA BIT STRING (SIZE (26)), + cnavAdot BIT STRING (SIZE (25)), + cnavDeltaNo BIT STRING (SIZE (17)), + cnavDeltaNoDot BIT STRING (SIZE (23)), + cnavMo BIT STRING (SIZE (33)), + cnavE BIT STRING (SIZE (33)), + cnavOmega BIT STRING (SIZE (33)), + cnavOMEGA0 BIT STRING (SIZE (33)), + cnavDeltaOmegaDot BIT STRING (SIZE (17)), + cnavIo BIT STRING (SIZE (33)), + cnavIoDot BIT STRING (SIZE (15)), + cnavCis BIT STRING (SIZE (16)), + cnavCic BIT STRING (SIZE (16)), + cnavCrs BIT STRING (SIZE (24)), + cnavCrc BIT STRING (SIZE (24)), + cnavCus BIT STRING (SIZE (21)), + cnavCuc BIT STRING (SIZE (21)) +} + +NavModel-GLONASSecef ::= SEQUENCE { + gloEn BIT STRING (SIZE (5)), + gloP1 BIT STRING (SIZE (2)), + gloP2 BIT STRING (SIZE (1)), + gloM BIT STRING (SIZE (2)) OPTIONAL, + gloX BIT STRING (SIZE (27)), + gloXdot BIT STRING (SIZE (24)), + gloXdotdot BIT STRING (SIZE (5)), + gloY BIT STRING (SIZE (27)), + gloYdot BIT STRING (SIZE (24)), + gloYdotdot BIT STRING (SIZE (5)), + gloZ BIT STRING (SIZE (27)), + gloZdot BIT STRING (SIZE (24)), + gloZdotdot BIT STRING (SIZE (5)) +} + +NavModel-NAVKeplerianSet ::= SEQUENCE { + navURA BIT STRING (SIZE (4)), + navFitFlag BIT STRING (SIZE (1)), + navToe BIT STRING (SIZE (16)), + navOmega BIT STRING (SIZE (32)), + navDeltaN BIT STRING (SIZE (16)), + navM0 BIT STRING (SIZE (32)), + navOmegaADot BIT STRING (SIZE (24)), + navE BIT STRING (SIZE (32)), + navIDot BIT STRING (SIZE (14)), + navAPowerHalf BIT STRING (SIZE (32)), + navI0 BIT STRING (SIZE (32)), + navOmegaA0 BIT STRING (SIZE (32)), + navCrs BIT STRING (SIZE (16)), + navCis BIT STRING (SIZE (16)), + navCus BIT STRING (SIZE (16)), + navCrc BIT STRING (SIZE (16)), + navCic BIT STRING (SIZE (16)), + navCuc BIT STRING (SIZE (16)) +} + +NavModel-SBASecef ::= SEQUENCE { + sbasTo BIT STRING (SIZE (13)) OPTIONAL, + sbasAccuracy BIT STRING (SIZE (4)), + sbasXg BIT STRING (SIZE (30)), + sbasYg BIT STRING (SIZE (30)), + sbasZg BIT STRING (SIZE (25)), + sbasXgDot BIT STRING (SIZE (17)), + sbasYgDot BIT STRING (SIZE (17)), + sbasZgDot BIT STRING (SIZE (18)), + sbasXgDotDot BIT STRING (SIZE (10)), + sbagYgDotDot BIT STRING (SIZE (10)), + sbasZgDotDot BIT STRING (SIZE (10)) +} + +EphemerisParameter ::= SEQUENCE { + codeOnL2 BIT STRING (SIZE (2)), + uraIndex BIT STRING (SIZE (4)), + satHealth BIT STRING (SIZE (6)), + iodc BIT STRING (SIZE (10)), + l2Pflag BIT STRING (SIZE (1)), + sf1Revd SubFrame1Reserved, + t-GD BIT STRING (SIZE (8)), + t-oc BIT STRING (SIZE (16)), + af2 BIT STRING (SIZE (8)), + af1 BIT STRING (SIZE (16)), + af0 BIT STRING (SIZE (22)), + c-rs BIT STRING (SIZE (16)), + delta-n BIT STRING (SIZE (16)), + m0 BIT STRING (SIZE (32)), + c-uc BIT STRING (SIZE (16)), + e BIT STRING (SIZE (32)), + c-us BIT STRING (SIZE (16)), + a-Sqrt BIT STRING (SIZE (32)), + t-oe BIT STRING (SIZE (16)), + fitInterval BIT STRING (SIZE (1)), + aodo BIT STRING (SIZE (5)), + c-ic BIT STRING (SIZE (16)), + omega0 BIT STRING (SIZE (32)), + c-is BIT STRING (SIZE (16)), + i0 BIT STRING (SIZE (32)), + c-rc BIT STRING (SIZE (16)), + omega BIT STRING (SIZE (32)), + omegaDot BIT STRING (SIZE (24)), + iDot BIT STRING (SIZE (14)) +} +NC-Mode ::= BIT STRING (SIZE (3)) + +Neighbour ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + neighbourIdentity PrimaryCPICH-Info OPTIONAL, + uE-RX-TX-TimeDifferenceType2Info UE-RX-TX-TimeDifferenceType2Info OPTIONAL + }, + tdd SEQUENCE { + neighbourAndChannelIdentity CellAndChannelIdentity OPTIONAL + } + }, + neighbourQuality NeighbourQuality, + sfn-SFN-ObsTimeDifference2 SFN-SFN-ObsTimeDifference2} + +Neighbour-v390ext ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + frequencyInfo FrequencyInfo + }, + tdd NULL + } +} + +NeighbourList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + Neighbour + +Neighbour-TDD-r7 ::= SEQUENCE { + uarfcn UARFCN OPTIONAL +} + +-- The order of the cells in IE NeighbourList-TDD-r7 shall be the +-- same as the order in IE NeighbourList +NeighbourList-TDD-r7 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF Neighbour-TDD-r7 + +-- The order of the cells in IE NeighbourList-v390ext shall be the +-- same as the order in IE NeighbourList +NeighbourList-v390ext ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + Neighbour-v390ext + +NeighbourQuality ::= SEQUENCE { + ue-Positioning-OTDOA-Quality UE-Positioning-OTDOA-Quality +} + +NewInterFreqCell ::= SEQUENCE { + interFreqCellID InterFreqCellID OPTIONAL, + frequencyInfo FrequencyInfo OPTIONAL, + cellInfo CellInfo +} + +NewInterFreqCell-r4 ::= SEQUENCE { + interFreqCellID InterFreqCellID OPTIONAL, + frequencyInfo FrequencyInfo OPTIONAL, + cellInfo CellInfo-r4 +} + +NewInterFreqCell-v7b0ext ::= SEQUENCE { + intraSecondaryFreqIndicator BOOLEAN +} + +NewInterFreqCell-LCR-v8a0ext ::= SEQUENCE { + cellInfo-LCR-r8 CellInfo-LCR-r8-ext OPTIONAL +} + +NewInterFreqCell-r8 ::= SEQUENCE { + interFreqCellID InterFreqCellID OPTIONAL, + frequencyInfo FrequencyInfo OPTIONAL, + cellInfo CellInfo-r4, + modeSpecificInfo CHOICE { + noInfo NULL, + tdd128 SEQUENCE { + intraSecondaryFreqIndicator BOOLEAN + } + } +} + +NewInterFreqCell-r9 ::= SEQUENCE { + interFreqCellID InterFreqCellID OPTIONAL, + frequencyInfo FrequencyInfo OPTIONAL, + cellInfo CellInfo-r9, + modeSpecificInfo CHOICE { + noInfo NULL, + tdd128 SEQUENCE { + intraSecondaryFreqIndicator BOOLEAN + } + } +} + +NewInterFreqCell-r10 ::= SEQUENCE { + interFreqCellID InterFreqCellID OPTIONAL, + frequencyInfo FrequencyInfo OPTIONAL, + cellInfo CellInfo-r9, + modeSpecificInfo CHOICE { + noInfo NULL, + tdd128 SEQUENCE { + intraSecondaryFreqIndicator BOOLEAN, + sNPLMonitorSetIndicator-TDD128 BIT STRING (SIZE (5)) OPTIONAL + } + } +} + +NewInterFreqCellList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterFreqCell + +NewInterFreqCellList-r4 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterFreqCell-r4 + +-- The order of the list corresponds to the order of cells in newInterFreqCellList +NewInterFreqCellList-v7b0ext ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterFreqCell-v7b0ext + +-- The order of the list corresponds to the order of cells in newInterFreqCellList +NewInterFreqCellList-LCR-v8a0ext ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterFreqCell-LCR-v8a0ext + +NewInterFreqCellList-r8 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterFreqCell-r8 + +NewInterFreqCellList-r9 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterFreqCell-r9 + +NewInterFreqCellList-r10 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterFreqCell-r10 + +NewInterFreqCellSI-RSCP ::= SEQUENCE { + interFreqCellID InterFreqCellID OPTIONAL, + frequencyInfo FrequencyInfo OPTIONAL, + cellInfo CellInfoSI-RSCP +} + +NewInterFreqCellSI-ECN0 ::= SEQUENCE { + interFreqCellID InterFreqCellID OPTIONAL, + frequencyInfo FrequencyInfo OPTIONAL, + cellInfo CellInfoSI-ECN0 +} + +NewInterFreqCellSI-HCS-RSCP ::= SEQUENCE { + interFreqCellID InterFreqCellID OPTIONAL, + frequencyInfo FrequencyInfo OPTIONAL, + cellInfo CellInfoSI-HCS-RSCP +} + +NewInterFreqCellSI-HCS-ECN0 ::= SEQUENCE { + interFreqCellID InterFreqCellID OPTIONAL, + frequencyInfo FrequencyInfo OPTIONAL, + cellInfo CellInfoSI-HCS-ECN0 +} + +NewInterFreqCellSI-RSCP-LCR-r4 ::= SEQUENCE { + interFreqCellID InterFreqCellID OPTIONAL, + frequencyInfo FrequencyInfo OPTIONAL, + cellInfo CellInfoSI-RSCP-LCR-r4 +} + +NewInterFreqCellSI-ECN0-LCR-r4 ::= SEQUENCE { + interFreqCellID InterFreqCellID OPTIONAL, + frequencyInfo FrequencyInfo OPTIONAL, + cellInfo CellInfoSI-ECN0-LCR-r4 +} + +NewInterFreqCellSI-HCS-RSCP-LCR-r4 ::= SEQUENCE { + interFreqCellID InterFreqCellID OPTIONAL, + frequencyInfo FrequencyInfo OPTIONAL, + cellInfo CellInfoSI-HCS-RSCP-LCR-r4 +} + +NewInterFreqCellSI-HCS-ECN0-LCR-r4 ::= SEQUENCE { + interFreqCellID InterFreqCellID OPTIONAL, + frequencyInfo FrequencyInfo OPTIONAL, + cellInfo CellInfoSI-HCS-ECN0-LCR-r4 +} + +NewInterFreqCellSI-List-ECN0 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterFreqCellSI-ECN0 + +NewInterFreqCellSI-List-HCS-RSCP ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterFreqCellSI-HCS-RSCP + +NewInterFreqCellSI-List-HCS-ECN0 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterFreqCellSI-HCS-ECN0 + +NewInterFreqCellSI-List-RSCP ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterFreqCellSI-RSCP + +NewInterFreqCellSI-List-ECN0-LCR-r4 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterFreqCellSI-ECN0-LCR-r4 + +NewInterFreqCellSI-List-HCS-RSCP-LCR-r4 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterFreqCellSI-HCS-RSCP-LCR-r4 + +NewInterFreqCellSI-List-HCS-ECN0-LCR-r4 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterFreqCellSI-HCS-ECN0-LCR-r4 + +NewInterFreqCellSI-List-RSCP-LCR-r4 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterFreqCellSI-RSCP-LCR-r4 + +NewInterRATCell ::= SEQUENCE { + interRATCellID InterRATCellID OPTIONAL, + technologySpecificInfo CHOICE { + gsm SEQUENCE { + cellSelectionReselectionInfo CellSelectReselectInfoSIB-11-12 OPTIONAL, + interRATCellIndividualOffset InterRATCellIndividualOffset, + bsic BSIC, + frequency-band Frequency-Band, + bcch-ARFCN BCCH-ARFCN, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy NULL OPTIONAL + }, + is-2000 SEQUENCE { + is-2000SpecificMeasInfo IS-2000SpecificMeasInfo + }, + -- ASN.1 inconsistency: NewInterRATCellList should be optional within + -- InterRATCellInfoList. The UE shall consider IE NewInterRATCell with + -- technologySpecificInfo set to "absent" as valid and handle the + -- message as if the IE NewInterRATCell was absent + absent NULL, + spare1 NULL + } +} + +NewInterRATCell-B ::= SEQUENCE { + interRATCellID InterRATCellID OPTIONAL, + technologySpecificInfo CHOICE { + gsm SEQUENCE { + cellSelectionReselectionInfo CellSelectReselectInfoSIB-11-12 OPTIONAL, + interRATCellIndividualOffset InterRATCellIndividualOffset, + bsic BSIC, + frequency-band Frequency-Band, + bcch-ARFCN BCCH-ARFCN, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy NULL OPTIONAL + }, + is-2000 SEQUENCE { + is-2000SpecificMeasInfo IS-2000SpecificMeasInfo + }, + -- ASN.1 inconsistency: NewInterRATCellList-B should be optional within + -- InterRATCellInfoList-B. The UE shall consider IE NewInterRATCell-B with + -- technologySpecificInfo set to "absent" as valid and handle the + -- message as if the IE NewInterRATCell-B was absent + absent NULL, + spare1 NULL + } +} + +NewInterRATCellList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterRATCell + +NewInterRATCellList-B ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterRATCell-B + +NewIntraFreqCell ::= SEQUENCE { + intraFreqCellID IntraFreqCellID OPTIONAL, + cellInfo CellInfo +} + +NewIntraFreqCell-r4 ::= SEQUENCE { + intraFreqCellID IntraFreqCellID OPTIONAL, + cellInfo CellInfo-r4 +} +NewIntraFreqCell-r9 ::= SEQUENCE { + intraFreqCellID IntraFreqCellID OPTIONAL, + cellInfo CellInfo-r9 +} + +NewIntraFreqCell-r10 ::= SEQUENCE { + intraFreqCellID IntraFreqCellID OPTIONAL, + cellInfo CellInfo-r9, + modeSpecificInfo CHOICE { + noInfo NULL, + tdd128 SEQUENCE { + sNPLMonitorSetIndicator-TDD128 BIT STRING (SIZE (5)) OPTIONAL + } + } +} + +NewIntraFreqCellOnSecULFreq ::= SEQUENCE { + intraFreqCellIDOnSecULFreq IntraFreqCellIDOnSecULFreq OPTIONAL, + cellInfo CellInfo-r4 +} + +NewIntraFreqCellList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewIntraFreqCell + +NewIntraFreqCellList-r4 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewIntraFreqCell-r4 + +NewIntraFreqCellList-r9 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewIntraFreqCell-r9 + +NewIntraFreqCellList-r10 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewIntraFreqCell-r10 + +NewIntraFreqCell-LCR-v8a0ext ::= SEQUENCE { + cellInfo-LCR-r8 CellInfo-LCR-r8-ext OPTIONAL +} + +-- The order of the list corresponds to the order of cells in newIntraFreqCellList +NewIntraFreqCellList-LCR-v8a0ext ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewIntraFreqCell-LCR-v8a0ext + +NewIntraFreqCellListOnSecULFreq ::= SEQUENCE (SIZE (1..maxCellMeasOnSecULFreq)) OF + NewIntraFreqCellOnSecULFreq + +NewIntraFreqCellSI-RSCP ::= SEQUENCE { + intraFreqCellID IntraFreqCellID OPTIONAL, + cellInfo CellInfoSI-RSCP +} + +NewIntraFreqCellSI-ECN0 ::= SEQUENCE { + intraFreqCellID IntraFreqCellID OPTIONAL, + cellInfo CellInfoSI-ECN0 +} +NewIntraFreqCellSI-HCS-RSCP ::= SEQUENCE { + intraFreqCellID IntraFreqCellID OPTIONAL, + cellInfo CellInfoSI-HCS-RSCP +} + +NewIntraFreqCellSI-HCS-ECN0 ::= SEQUENCE { + intraFreqCellID IntraFreqCellID OPTIONAL, + cellInfo CellInfoSI-HCS-ECN0 +} + +NewIntraFreqCellSI-RSCP-LCR-r4 ::= SEQUENCE { + intraFreqCellID IntraFreqCellID OPTIONAL, + cellInfo CellInfoSI-RSCP-LCR-r4 +} + +NewIntraFreqCellSI-ECN0-LCR-r4 ::= SEQUENCE { + intraFreqCellID IntraFreqCellID OPTIONAL, + cellInfo CellInfoSI-ECN0-LCR-r4 +} +NewIntraFreqCellSI-HCS-RSCP-LCR-r4 ::= SEQUENCE { + intraFreqCellID IntraFreqCellID OPTIONAL, + cellInfo CellInfoSI-HCS-RSCP-LCR-r4 +} + +NewIntraFreqCellSI-HCS-ECN0-LCR-r4 ::= SEQUENCE { + intraFreqCellID IntraFreqCellID OPTIONAL, + cellInfo CellInfoSI-HCS-ECN0-LCR-r4 +} + +NewIntraFreqCellSI-List-RSCP ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewIntraFreqCellSI-RSCP + +NewIntraFreqCellSI-List-ECN0 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewIntraFreqCellSI-ECN0 + +NewIntraFreqCellSI-List-HCS-RSCP ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewIntraFreqCellSI-HCS-RSCP + +NewIntraFreqCellSI-List-HCS-ECN0 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewIntraFreqCellSI-HCS-ECN0 + +NewIntraFreqCellSI-List-RSCP-LCR-r4 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewIntraFreqCellSI-RSCP-LCR-r4 + +NewIntraFreqCellSI-List-ECN0-LCR-r4 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewIntraFreqCellSI-ECN0-LCR-r4 + +NewIntraFreqCellSI-List-HCS-RSCP-LCR-r4 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewIntraFreqCellSI-HCS-RSCP-LCR-r4 + +NewIntraFreqCellSI-List-HCS-ECN0-LCR-r4 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewIntraFreqCellSI-HCS-ECN0-LCR-r4 + + -- IE "nonUsedFreqThreshold" is not needed in case of event 2a + -- In case of event 2a UTRAN should include value 0 within IE "nonUsedFreqThreshold" + -- In case of event 2a, the UE shall be ignore IE "nonUsedFreqThreshold" + -- In later versions of the message including this IE, a special version of + -- IE "NonUsedFreqParameterList" may be defined for event 2a, namely a + -- version not including IE "nonUsedFreqThreshold" +NonUsedFreqParameter ::= SEQUENCE { + nonUsedFreqThreshold Threshold, + nonUsedFreqW W +} + +NonUsedFreqParameter-r6 ::= SEQUENCE { + nonUsedFreqThreshold Threshold-r6, + nonUsedFreqW W +} + +NonUsedFreqParameter-r10 ::= SEQUENCE { + nonUsedFreqThreshold Threshold-r6, + nonUsedFreqW W, + nonUsedFreqTriggeringConditionDetectedCells ENUMERATED { true } OPTIONAL +} + +NonUsedFreqParameter-r11 ::= SEQUENCE { + nonUsedFreqThreshold Threshold-r6, + nonUsedFreqW W, + nonUsedFreqTriggeringConditionDetectedCells ENUMERATED { true } OPTIONAL, + excludedCellInfoList CellInfoListToBeExcluded OPTIONAL +} + +NonUsedFreq2aParameter-r10 ::= SEQUENCE { + nonUsedFreqW W, + nonUsedFreqTriggeringConditionDetectedCells ENUMERATED { true } OPTIONAL +} + +NonUsedFreq2aParameter-r11 ::= SEQUENCE { + nonUsedFreqW W, + nonUsedFreqTriggeringConditionDetectedCells ENUMERATED { true } OPTIONAL, + excludedCellInfoList CellInfoListToBeExcluded OPTIONAL +} + +NonUsedFreqParameterList ::= SEQUENCE (SIZE (1..maxFreq)) OF + NonUsedFreqParameter + +NonUsedFreqParameterList-r6 ::= SEQUENCE (SIZE (1..maxFreq)) OF + NonUsedFreqParameter-r6 + +NonUsedFreqParameterList-r10 ::= SEQUENCE (SIZE (1..maxFreq)) OF + NonUsedFreqParameter-r10 + +NonUsedFreqParameterList-r11 ::= SEQUENCE (SIZE (1..maxFreq)) OF + NonUsedFreqParameter-r11 + +NonUsedFreq2aParameterList-r10 ::= SEQUENCE (SIZE (1..maxFreq)) OF + NonUsedFreq2aParameter-r10 + +NonUsedFreq2aParameterList-r11 ::= SEQUENCE (SIZE (1..maxFreq)) OF + NonUsedFreq2aParameter-r11 + +NonUsedFreqWList-r6 ::= SEQUENCE (SIZE (1..maxFreq)) OF W + +ObservedTimeDifferenceToGSM ::= INTEGER (0..4095) + +OTDOA-SearchWindowSize ::= ENUMERATED { + c20, c40, c80, c160, c320, + c640, c1280, moreThan1280 } + +-- SPARE: Pathloss, Max = 158 +-- Values above Max are spare +Pathloss ::= INTEGER (46..173) + +PenaltyTime-RSCP ::= CHOICE { + notUsed NULL, + pt10 TemporaryOffset1, + pt20 TemporaryOffset1, + pt30 TemporaryOffset1, + pt40 TemporaryOffset1, + pt50 TemporaryOffset1, + pt60 TemporaryOffset1 +} + +PenaltyTime-ECN0 ::= CHOICE { + notUsed NULL, + pt10 TemporaryOffsetList, + pt20 TemporaryOffsetList, + pt30 TemporaryOffsetList, + pt40 TemporaryOffsetList, + pt50 TemporaryOffsetList, + pt60 TemporaryOffsetList +} + +PendingTimeAfterTrigger ::= ENUMERATED { + ptat0-25, ptat0-5, ptat1, + ptat2, ptat4, ptat8, ptat16 } + +PeriodicalOrEventTrigger ::= ENUMERATED { + periodical, + eventTrigger } + +PeriodicalReportingCriteria ::= SEQUENCE { + reportingAmount ReportingAmount DEFAULT ra-Infinity, + reportingInterval ReportingIntervalLong +} + +PeriodicReportingInfo-1b ::= SEQUENCE { + reportingAmount ReportingAmount, + reportingInterval ReportingInterval +} + +PeriodicalWithReportingCellStatus ::= SEQUENCE { + periodicalReportingCriteria PeriodicalReportingCriteria, + reportingCellStatus ReportingCellStatus OPTIONAL +} + +PeriodicalWithReportingCellStatus-r10 ::= SEQUENCE { + periodicalReportingCriteria PeriodicalReportingCriteria, + reportingCellStatus ReportingCellStatus-r10 OPTIONAL +} + +PeriodicalWithReportingCellStatusOnSecULFreq ::= SEQUENCE { + frequencyInfo FrequencyInfo, + periodicalWithReportingCellStatus PeriodicalWithReportingCellStatus-r10 +} + +PLMNIdentitiesOfNeighbourCells ::= SEQUENCE { + plmnsOfIntraFreqCellsList PLMNsOfIntraFreqCellsList OPTIONAL, + plmnsOfInterFreqCellsList PLMNsOfInterFreqCellsList OPTIONAL, + plmnsOfInterRATCellsList PLMNsOfInterRATCellsList OPTIONAL +} + +PLMNIdentitiesOfNeighbourCells-v860ext ::= SEQUENCE { + multipleplmnsOfIntraFreqCellsList MultiplePLMNsOfIntraFreqCellsList OPTIONAL, + multipleplmnsOfInterFreqCellsList MultiplePLMNsOfInterFreqCellsList OPTIONAL +} + +PlmnList ::= SEQUENCE (SIZE (1..maxNumMDTPLMN)) OF PLMN-Identity + +PLMNsOfInterFreqCellsList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + SEQUENCE { + plmn-Identity PLMN-Identity OPTIONAL +} + +MultiplePLMNsOfInterFreqCellsList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + SEQUENCE { + multiplePLMN-list SEQUENCE (SIZE (1..6)) OF + PLMN-IdentityWithOptionalMCC-r6 OPTIONAL +} + +PLMNsOfIntraFreqCellsList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + SEQUENCE { + plmn-Identity PLMN-Identity OPTIONAL +} + +MultiplePLMNsOfIntraFreqCellsList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + SEQUENCE { + multiplePLMN-list SEQUENCE (SIZE (1..6)) OF + PLMN-IdentityWithOptionalMCC-r6 OPTIONAL +} + +PLMNsOfInterRATCellsList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + SEQUENCE { + plmn-Identity PLMN-Identity OPTIONAL +} + +PositionEstimate ::= CHOICE { + ellipsoidPoint EllipsoidPoint, + ellipsoidPointUncertCircle EllipsoidPointUncertCircle, + ellipsoidPointUncertEllipse EllipsoidPointUncertEllipse, + ellipsoidPointAltitude EllipsoidPointAltitude, + ellipsoidPointAltitudeEllipse EllipsoidPointAltitudeEllipsoide +} + +PositioningMethod ::= ENUMERATED { + otdoa, + gps, + otdoaOrGPS, cellID } + +-- Actual value PRC = IE value * 0.32 +PRC ::= INTEGER (-2047..2047) + +-- SPARE: PrimaryCCPCH-RSCP, Max = 91 +-- Values above Max are spare +PrimaryCCPCH-RSCP ::= INTEGER (0..127) + +Q-HCS ::= INTEGER (0..99) + +Q-OffsetS-N ::= INTEGER (-50..50) + +Q-QualMin ::= INTEGER (-24..0) + +Q-QualMin-Offset ::= INTEGER (1..16) + +-- Actual value Q-RxlevMin = (IE value * 2) + 1 +Q-RxlevMin ::= INTEGER (-58..-13) + +-- Actual value Q-RxlevMin-Offset = (IE value * 2) +Q-RxlevMin-Offset ::= INTEGER (1..8) + +QualityEventResults ::= SEQUENCE (SIZE (1..maxTrCH)) OF + TransportChannelIdentity + +QualityMeasuredResults ::= SEQUENCE { + blerMeasurementResultsList BLER-MeasurementResultsList OPTIONAL, + modeSpecificInfo CHOICE { + fdd NULL, + tdd SEQUENCE { + sir-MeasurementResults SIR-MeasurementList OPTIONAL + } + } +} + +QualityMeasurement ::= SEQUENCE { + qualityReportingQuantity QualityReportingQuantity OPTIONAL, + reportCriteria QualityReportCriteria +} + +QualityReportCriteria ::= CHOICE { + qualityReportingCriteria QualityReportingCriteria, + periodicalReportingCriteria PeriodicalReportingCriteria, + noReporting NULL +} + +QualityReportingCriteria ::= SEQUENCE (SIZE (1..maxTrCH)) OF + QualityReportingCriteriaSingle + +QualityReportingCriteriaSingle ::= SEQUENCE { + transportChannelIdentity TransportChannelIdentity, + totalCRC INTEGER (1..512), + badCRC INTEGER (1..512), + pendingAfterTrigger INTEGER (1..512) +} + +QualityReportingQuantity ::= SEQUENCE { + dl-TransChBLER BOOLEAN, + bler-dl-TransChIdList BLER-TransChIdList OPTIONAL, + modeSpecificInfo CHOICE { + fdd NULL, + tdd SEQUENCE { + sir-TFCS-List SIR-TFCS-List OPTIONAL + } + } +} + +RAT-Type ::= ENUMERATED { + gsm, is2000 } + +ReferenceCellPosition ::= CHOICE { + ellipsoidPoint EllipsoidPoint, + ellipsoidPointWithAltitude EllipsoidPointAltitude +} + +-- ReferenceLocation, as defined in 23.032 +ReferenceLocation ::= SEQUENCE { + ellipsoidPointAltitudeEllipsoide EllipsoidPointAltitudeEllipsoide +} + +ReferenceLocationGANSS ::= SEQUENCE { + ellipsoidPointAltitudeEllipsoide EllipsoidPointAltitudeEllipsoide +} + +ReferenceTimeDifferenceToCell ::= CHOICE { + -- Actual value accuracy40 = IE value * 40 + accuracy40 INTEGER (0..960), + -- Actual value accuracy256 = IE value * 256 + accuracy256 INTEGER (0..150), + -- Actual value accuracy2560 = IE value * 2560 + accuracy2560 INTEGER (0..15) +} + +RemovedInterFreqCellList ::= CHOICE { + removeAllInterFreqCells NULL, + removeSomeInterFreqCells SEQUENCE (SIZE (1..maxCellMeas)) OF + InterFreqCellID, + removeNoInterFreqCells NULL +} + +RemovedInterRATCellList ::= CHOICE { + removeAllInterRATCells NULL, + removeSomeInterRATCells SEQUENCE (SIZE (1..maxCellMeas)) OF + InterRATCellID, + removeNoInterRATCells NULL +} + +RemovedIntraFreqCellList ::= CHOICE { + removeAllIntraFreqCells NULL, + removeSomeIntraFreqCells SEQUENCE (SIZE (1..maxCellMeas)) OF + IntraFreqCellID, + removeNoIntraFreqCells NULL +} + +RemovedIntraFreqCellListOnSecULFreq ::= CHOICE { + removeAllIntraFreqCells NULL, + removeSomeIntraFreqCells SEQUENCE (SIZE (1..maxCellMeasOnSecULFreq)) OF + IntraFreqCellIDOnSecULFreq, + removeNoIntraFreqCells NULL +} + +ReplacementActivationThreshold ::= ENUMERATED { + notApplicable, t1, t2, + t3, t4, t5, t6, t7 } + +ReportDeactivationThreshold ::= ENUMERATED { + notApplicable, t1, t2, + t3, t4, t5, t6, t7 } + +ReportingAmount ::= ENUMERATED { + ra1, ra2, ra4, ra8, ra16, ra32, + ra64, ra-Infinity } + +ReportingCellStatus ::= CHOICE{ + withinActiveSet MaxNumberOfReportingCellsType1, + withinMonitoredSetUsedFreq MaxNumberOfReportingCellsType1, + withinActiveAndOrMonitoredUsedFreq MaxNumberOfReportingCellsType1, + withinDetectedSetUsedFreq MaxNumberOfReportingCellsType1, + withinMonitoredAndOrDetectedUsedFreq + MaxNumberOfReportingCellsType1, + allActiveplusMonitoredSet MaxNumberOfReportingCellsType3, + allActivePlusDetectedSet MaxNumberOfReportingCellsType3, + allActivePlusMonitoredAndOrDetectedSet + MaxNumberOfReportingCellsType3, + withinVirtualActSet MaxNumberOfReportingCellsType1, + withinMonitoredSetNonUsedFreq MaxNumberOfReportingCellsType1, + withinMonitoredAndOrVirtualActiveSetNonUsedFreq + MaxNumberOfReportingCellsType1, + allVirtualActSetplusMonitoredSetNonUsedFreq + MaxNumberOfReportingCellsType3, + withinActSetOrVirtualActSet-InterRATcells + MaxNumberOfReportingCellsType2, + withinActSetAndOrMonitoredUsedFreqOrVirtualActSetAndOrMonitoredNonUsedFreq + MaxNumberOfReportingCellsType2 +} + +ReportingCellStatus-r10 ::= CHOICE{ + withinActiveSet MaxNumberOfReportingCellsType1, + withinMonitoredSetUsedFreq MaxNumberOfReportingCellsType1, + withinActiveAndOrMonitoredUsedFreq MaxNumberOfReportingCellsType1, + withinDetectedSetUsedFreq MaxNumberOfReportingCellsType1, + withinMonitoredAndOrDetectedUsedFreq + MaxNumberOfReportingCellsType1, + allActiveplusMonitoredSet MaxNumberOfReportingCellsType3, + allActivePlusDetectedSet MaxNumberOfReportingCellsType3, + allActivePlusMonitoredAndOrDetectedSet + MaxNumberOfReportingCellsType3, + withinVirtualActSet MaxNumberOfReportingCellsType1, + withinMonitoredSetNonUsedFreq MaxNumberOfReportingCellsType1, + withinMonitoredAndOrVirtualActiveSetNonUsedFreq + MaxNumberOfReportingCellsType1, + allVirtualActSetplusMonitoredSetNonUsedFreq + MaxNumberOfReportingCellsType3, + withinActSetOrVirtualActSet-InterRATcells + MaxNumberOfReportingCellsType2, + withinActSetAndOrMonitoredUsedFreqOrVirtualActSetAndOrMonitoredNonUsedFreq + MaxNumberOfReportingCellsType2, + allVirtualActSetplusMonitoredSetplusDetectedSetNonUsedFreq + MaxNumberOfReportingCellsType3 +} + +ReportingCellStatusOpt ::= SEQUENCE { + reportingCellStatus ReportingCellStatus OPTIONAL +} + +ReportingCellStatusOpt-r10 ::= SEQUENCE { + reportingCellStatus ReportingCellStatus-r10 OPTIONAL +} + +ReportingInfoForCellDCH ::= SEQUENCE { + intraFreqReportingQuantity IntraFreqReportingQuantity, + measurementReportingMode MeasurementReportingMode, + reportCriteria CellDCH-ReportCriteria +} + +ReportingInfoForCellDCH-LCR-r4 ::= SEQUENCE { + intraFreqReportingQuantity IntraFreqReportingQuantity, + measurementReportingMode MeasurementReportingMode, + reportCriteria CellDCH-ReportCriteria-LCR-r4 +} + +ReportingInterval ::= ENUMERATED { + noPeriodicalreporting, ri0-25, + ri0-5, ri1, ri2, ri4, ri8, ri16 } + +ReportingIntervalLong ::= ENUMERATED { + ril0, ril0-25, ril0-5, ril1, + ril2, ril3, ril4, ril6, ril8, + ril12, ril16, ril20, ril24, + ril28, ril32, ril64 } + -- When the value "ril0" is used, the UE behaviour is not + -- defined. + +-- Actual value ReportingRange = IE value * 0.5 +ReportingRange ::= INTEGER (0..29) + +ReqDataBitAssistance ::= SEQUENCE { + ganssSignalID DGANSS-Sig-Id-Req, + ganssDataBitInterval INTEGER(0..15), + ganssSatelliteInfo SEQUENCE (SIZE (1..maxGANSSSat)) OF INTEGER(0..63) OPTIONAL +} + +RL-AdditionInfoList ::= SEQUENCE (SIZE (1..maxRL)) OF + PrimaryCPICH-Info + +RL-InformationLists ::= SEQUENCE { + rl-AdditionInfoList RL-AdditionInfoList OPTIONAL, + rL-RemovalInformationList RL-RemovalInformationList OPTIONAL +} + +RLC-BuffersPayload ::= ENUMERATED { + pl0, pl4, pl8, pl16, pl32, + pl64, pl128, pl256, pl512, pl1024, + pl2k, pl4k, pl8k, pl16k, pl32k, + pl64k, pl128k, pl256k, pl512k, pl1024k, + spare12, spare11, spare10, spare9, spare8, + spare7, spare6, spare5, spare4, spare3, + spare2, spare1 } + +-- Actual value RRC = IE value * 0.032 +RRC ::= INTEGER (-127..127) + +RSCPforANR ::= SEQUENCE { + rSCP INTEGER (-120..-25) OPTIONAL +} + +SatData ::= SEQUENCE{ + satID SatID, + iode IODE +} + +SatDataList ::= SEQUENCE (SIZE (0..maxSat)) OF + SatData + +SatellitesListRelatedData ::= SEQUENCE { + satId INTEGER (0..63), + iod INTEGER (0..1023) +} + +SatellitesListRelatedDataList ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF + SatellitesListRelatedData + +SatelliteStatus ::= ENUMERATED { + ns-NN-U, + es-SN, + es-NN-U, + rev2, + rev } + +Satellite-clock-model ::= SEQUENCE { + t-oc BIT STRING (SIZE (14)), + af2 BIT STRING (SIZE (12)), + af1 BIT STRING (SIZE (18)), + af0 BIT STRING (SIZE (28)), + tgd BIT STRING (SIZE (10)) OPTIONAL, + model-id INTEGER (0..1) OPTIONAL +} + +Satellite-clock-modelList ::= SEQUENCE (SIZE (1..maxSatClockModels)) OF Satellite-clock-model + +-- Identifies the satellite and is equal to (SV ID No - 1) where SV ID No is defined in [12]. +SatID ::= INTEGER (0..63) + +SBASclockModel ::= SEQUENCE { + sbasTo BIT STRING (SIZE (13)), + sbasAgfo BIT STRING (SIZE (12)), + sbasAgf1 BIT STRING (SIZE (8)) +} + +S-DPCCH-Information ::= SEQUENCE { + s-DPCCH-DPCCH-PowerOffset S-DPCCH-DPCCH-PowerOffset +} + +S-DPCCH-DPCCH-PowerOffset ::= INTEGER (0..6) + +SFN-Offset-Validity ::= ENUMERATED { false } + +SFN-SFN-Drift ::= ENUMERATED { + sfnsfndrift0, sfnsfndrift1, sfnsfndrift2, + sfnsfndrift3, sfnsfndrift4, sfnsfndrift5, + sfnsfndrift8, sfnsfndrift10, sfnsfndrift15, + sfnsfndrift25, sfnsfndrift35, sfnsfndrift50, + sfnsfndrift65, sfnsfndrift80, sfnsfndrift100, + sfnsfndrift-1, sfnsfndrift-2, sfnsfndrift-3, + sfnsfndrift-4, sfnsfndrift-5, sfnsfndrift-8, + sfnsfndrift-10, sfnsfndrift-15, sfnsfndrift-25, + sfnsfndrift-35, sfnsfndrift-50, sfnsfndrift-65, + sfnsfndrift-80, sfnsfndrift-100} + +SFN-SFN-ObsTimeDifference ::= CHOICE { + type1 SFN-SFN-ObsTimeDifference1, + type2 SFN-SFN-ObsTimeDifference2 +} + +-- SPARE: SFN-SFN-ObsTimeDifference1, Max = 9830399 +-- For 1.28Mcps TDD, Max value of SFN-SFN-ObsTimeDifference1 is 3276799. +-- Values above Max are spare +SFN-SFN-ObsTimeDifference1 ::= INTEGER (0..16777215) + +-- SPARE: SFN-SFN-ObsTimeDifference2, Max = 40961 +-- For 1.28Mcps TDD, Max value of SFN-SFN-ObsTimeDifference2 is 27649. +-- Values above Max are spare +SFN-SFN-ObsTimeDifference2 ::= INTEGER (0..65535) + +SFN-SFN-OTD-Type ::= ENUMERATED { + noReport, + type1, + type2 } + +SFN-SFN-RelTimeDifference1 ::= SEQUENCE { + sfn-Offset INTEGER (0 .. 4095), + sfn-sfn-Reltimedifference INTEGER (0.. 38399) +} + +SFN-TOW-Uncertainty ::= ENUMERATED { + lessThan10, + moreThan10 } + + +SIR ::= INTEGER (0..63) + + +SIR-MeasurementList ::= SEQUENCE (SIZE (1..maxCCTrCH)) OF + SIR-MeasurementResults + + +SIR-MeasurementResults ::= SEQUENCE { + tfcs-ID TFCS-IdentityPlain, + sir-TimeslotList SIR-TimeslotList +} + +SIR-TFCS ::= TFCS-IdentityPlain + + +SIR-TFCS-List ::= SEQUENCE (SIZE (1..maxCCTrCH)) OF + SIR-TFCS + +SIR-TimeslotList ::= SEQUENCE (SIZE (1..maxTS)) OF + SIR + +-- SubFrame1Reserved, reserved bits in subframe 1 of the GPS navigation message +SubFrame1Reserved ::= SEQUENCE { + reserved1 BIT STRING (SIZE (23)), + reserved2 BIT STRING (SIZE (24)), + reserved3 BIT STRING (SIZE (24)), + reserved4 BIT STRING (SIZE (16)) +} + +T-ADVinfo ::= SEQUENCE { + t-ADV INTEGER(0..2047), + sfn INTEGER(0..4095) +} + +T-ADVinfo-ext ::= SEQUENCE { + t-ADV INTEGER (0..8191), + sfn INTEGER (0..4095) +} + +T-CRMax ::= CHOICE { + notUsed NULL, + t30 N-CR-T-CRMaxHyst, + t60 N-CR-T-CRMaxHyst, + t120 N-CR-T-CRMaxHyst, + t180 N-CR-T-CRMaxHyst, + t240 N-CR-T-CRMaxHyst +} + +T-CRMaxHyst ::= ENUMERATED { + notUsed, t10, t20, t30, + t40, t50, t60, t70 } + +TCE-Id ::= SEQUENCE { + tce-Id OCTET STRING (SIZE (1)) +} + +TemporaryOffset1 ::= ENUMERATED { + to3, to6, to9, to12, to15, + to18, to21, infinite } + +TemporaryOffset2 ::= ENUMERATED { + to2, to3, to4, to6, to8, + to10, to12, infinite } + +TemporaryOffsetList ::= SEQUENCE { + temporaryOffset1 TemporaryOffset1, + temporaryOffset2 TemporaryOffset2 +} + +Threshold ::= INTEGER (-115..0) + +Threshold-r6 ::= INTEGER (-120..0) + +-- The order of the list corresponds to the order of frequency defined in Inter-FreqEventCriteria +ThreholdNonUsedFrequency-deltaList ::= SEQUENCE (SIZE (1..maxFreq)) OF + DeltaRSCPPerCell + +ThresholdPositionChange ::= ENUMERATED { + pc10, pc20, pc30, pc40, pc50, + pc100, pc200, pc300, pc500, + pc1000, pc2000, pc5000, pc10000, + pc20000, pc50000, pc100000 } + +ThresholdSFN-GANSS-TOW ::= ENUMERATED { + us1, us2, us3, us5, us10, + us20, us50, us100 } + +ThresholdSFN-GPS-TOW ::= ENUMERATED { + ms1, ms2, ms3, ms5, ms10, + ms20, ms50, ms100 } + +ThresholdSFN-GPS-TOW-us ::= ENUMERATED { + us1, us2, us3, us5, us10, + us20, us50, us100 } + +ThresholdSFN-SFN-Change ::= ENUMERATED { + c0-25, c0-5, c1, c2, c3, c4, c5, + c10, c20, c50, c100, c200, c500, + c1000, c2000, c5000 } + +ThresholdUsedFrequency ::= INTEGER (-115..165) + +ThresholdUsedFrequency-r6 ::= INTEGER (-120..165) + +-- Actual value TimeInterval = IE value * 20. +TimeInterval ::= INTEGER (1..13) + + +TimeslotInfo ::= SEQUENCE { + timeslotNumber TimeslotNumber, + burstType BurstType +} + +TimeslotInfo-LCR-r4 ::= SEQUENCE { + timeslotNumber TimeslotNumber-LCR-r4 +} + +TimeslotInfoList ::= SEQUENCE (SIZE (1..maxTS)) OF + TimeslotInfo + +TimeslotInfoList-LCR-r4 ::= SEQUENCE (SIZE (1..maxTS-LCR)) OF + TimeslotInfo-LCR-r4 + +TimeslotInfoList-r4 ::= CHOICE { + -- the choice for 7.68 Mcps TDD is the same as for 3.84 Mcps TDD -- + tdd384 SEQUENCE (SIZE (1..maxTS)) OF + TimeslotInfo, + tdd128 SEQUENCE (SIZE (1..maxTS-LCR)) OF + TimeslotInfo-LCR-r4 +} + +-- SPARE: TimeslotISCP, Max = 91 +-- Values above Max are spare +TimeslotISCP ::= INTEGER (0..127) + + +-- TimeslotISCP-List shall not include more than 6 elements in 1.28Mcps TDD mode. +TimeslotISCP-List ::= SEQUENCE (SIZE (1..maxTS)) OF + TimeslotISCP + +TimeslotListWithISCP ::= SEQUENCE (SIZE (1..maxTS)) OF + TimeslotWithISCP + +TimeslotWithISCP ::= SEQUENCE { + timeslot TimeslotNumber, + timeslotISCP TimeslotISCP +} + +TimeToTrigger ::= ENUMERATED { + ttt0, ttt10, ttt20, ttt40, ttt60, + ttt80, ttt100, ttt120, ttt160, + ttt200, ttt240, tt320, ttt640, + ttt1280, ttt2560, ttt5000 } + +TraceReference ::= SEQUENCE { + plmn-Identity PLMN-Identity, + traceId OCTET STRING (SIZE (3)) +} + +TraceRecordingSession ::= SEQUENCE { + traceRecordingSession OCTET STRING (SIZE (2)) +} + +TrafficVolumeEventParam ::= SEQUENCE { + eventID TrafficVolumeEventType, + reportingThreshold TrafficVolumeThreshold, + timeToTrigger TimeToTrigger OPTIONAL, + pendingTimeAfterTrigger PendingTimeAfterTrigger OPTIONAL, + tx-InterruptionAfterTrigger TX-InterruptionAfterTrigger OPTIONAL +} + +TrafficVolumeEventResults ::= SEQUENCE { + ul-transportChannelCausingEvent UL-TrCH-Identity, + trafficVolumeEventIdentity TrafficVolumeEventType +} + +TrafficVolumeEventType ::= ENUMERATED { + e4a, + e4b } + +TrafficVolumeMeasQuantity ::= CHOICE { + rlc-BufferPayload NULL, + averageRLC-BufferPayload TimeInterval, + varianceOfRLC-BufferPayload TimeInterval +} + +TrafficVolumeMeasSysInfo ::= SEQUENCE { + trafficVolumeMeasurementID MeasurementIdentity DEFAULT 4, + trafficVolumeMeasurementObjectList TrafficVolumeMeasurementObjectList OPTIONAL, + trafficVolumeMeasQuantity TrafficVolumeMeasQuantity OPTIONAL, + trafficVolumeReportingQuantity TrafficVolumeReportingQuantity OPTIONAL, + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy TrafficVolumeReportingCriteria OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + measurementReportingMode MeasurementReportingMode, + reportCriteriaSysInf TrafficVolumeReportCriteriaSysInfo + +} + +TrafficVolumeMeasuredResults ::= SEQUENCE { + rb-Identity RB-Identity, + rlc-BuffersPayload RLC-BuffersPayload OPTIONAL, + averageRLC-BufferPayload AverageRLC-BufferPayload OPTIONAL, + varianceOfRLC-BufferPayload VarianceOfRLC-BufferPayload OPTIONAL +} + +TrafficVolumeMeasuredResultsList ::= SEQUENCE (SIZE (1..maxRB)) OF + TrafficVolumeMeasuredResults + +TrafficVolumeMeasurement ::= SEQUENCE { + trafficVolumeMeasurementObjectList TrafficVolumeMeasurementObjectList OPTIONAL, + trafficVolumeMeasQuantity TrafficVolumeMeasQuantity OPTIONAL, + trafficVolumeReportingQuantity TrafficVolumeReportingQuantity OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + reportCriteria TrafficVolumeReportCriteria +} + +TrafficVolumeMeasurementObjectList ::= SEQUENCE (SIZE (1..maxTrCH)) OF + UL-TrCH-Identity + +TrafficVolumeReportCriteria ::= CHOICE { + trafficVolumeReportingCriteria TrafficVolumeReportingCriteria, + periodicalReportingCriteria PeriodicalReportingCriteria, + noReporting NULL +} + +TrafficVolumeReportCriteriaSysInfo ::= CHOICE { + trafficVolumeReportingCriteria TrafficVolumeReportingCriteria, + periodicalReportingCriteria PeriodicalReportingCriteria +} + +TrafficVolumeReportingCriteria ::= SEQUENCE { + -- NOTE: transChCriteriaList should be mandatory in later versions of this message + transChCriteriaList TransChCriteriaList OPTIONAL +} + +TrafficVolumeReportingQuantity ::= SEQUENCE { + rlc-RB-BufferPayload BOOLEAN, + rlc-RB-BufferPayloadAverage BOOLEAN, + rlc-RB-BufferPayloadVariance BOOLEAN +} + +TrafficVolumeThreshold ::= ENUMERATED { + th8, th16, th32, th64, th128, + th256, th512, th1024, th2k, th3k, + th4k, th6k, th8k, th12k, th16k, + th24k, th32k, th48k, th64k, th96k, + th128k, th192k, th256k, th384k, + th512k, th768k } + +TransChCriteria ::= SEQUENCE { + ul-transportChannelID UL-TrCH-Identity OPTIONAL, + eventSpecificParameters SEQUENCE (SIZE (1..maxMeasParEvent)) OF + TrafficVolumeEventParam OPTIONAL +} + +TransChCriteriaList ::= SEQUENCE (SIZE (1..maxTrCH)) OF + TransChCriteria + +TransferMode ::= ENUMERATED { + acknowledgedModeRLC, + unacknowledgedModeRLC } + +TransmittedPowerThreshold ::= INTEGER (-50..33) + +TriggeringCondition1 ::= ENUMERATED { + activeSetCellsOnly, + monitoredSetCellsOnly, + activeSetAndMonitoredSetCells } + +TriggeringCondition2 ::= ENUMERATED { + activeSetCellsOnly, + monitoredSetCellsOnly, + activeSetAndMonitoredSetCells, + detectedSetCellsOnly, + detectedSetAndMonitoredSetCells } + +Tutran-Ganss-DriftRate ::= ENUMERATED { + ugdr0, ugdr1, ugdr2, ugdr5, ugdr10, ugdr15 , ugdr25, + ugdr50, ugdr-1, ugdr-2, ugdr-5, ugdr-10, ugdr-15, + ugdr-25, ugdr-50, spare } + +TX-InterruptionAfterTrigger ::= ENUMERATED { + txiat0-25, txiat0-5, txiat1, + txiat2, txiat4, txiat8, txiat16 } + +UDRE ::= ENUMERATED { + lessThan1, + between1-and-4, + between4-and-8, + over8 } + +UDREGrowthRate ::= ENUMERATED { + growth-1-5, + growth-2, + growth-4, + growth-6, + growth-8, + growth-10, + growth-12, + growth-16 } + +UDREValidityTime ::= ENUMERATED { + val-20sec, + val-40sec, + val-80sec, + val-160sec, + val-320sec, + val-640sec, + val-1280sec, + val-2560sec } + +UE-6AB-Event ::= SEQUENCE { + timeToTrigger TimeToTrigger, + transmittedPowerThreshold TransmittedPowerThreshold +} + +UE-6FG-Event ::= SEQUENCE { + timeToTrigger TimeToTrigger, + -- in 1.28 Mcps TDD ue-RX-TX-TimeDifferenceThreshold corresponds to TADV Threshold + ue-RX-TX-TimeDifferenceThreshold UE-RX-TX-TimeDifferenceThreshold +} + +-- dummy and dummy2 are not used in this version of the specification, they should +-- not be sent and if received the UE behaviour is not specified. +UE-AutonomousUpdateMode ::= CHOICE { + dummy NULL, + onWithNoReporting NULL, + dummy2 RL-InformationLists +} + +UE-InternalEventParam ::= CHOICE { + event6a UE-6AB-Event, + event6b UE-6AB-Event, + event6c TimeToTrigger, + event6d TimeToTrigger, + event6e TimeToTrigger, + event6f UE-6FG-Event, + event6g UE-6FG-Event +} + +UE-InternalEventParamList ::= SEQUENCE (SIZE (1..maxMeasEvent)) OF + UE-InternalEventParam + +UE-InternalEventResults ::= CHOICE { + event6a NULL, + event6b NULL, + event6c NULL, + event6d NULL, + event6e NULL, + event6f PrimaryCPICH-Info, + event6g PrimaryCPICH-Info, + spare NULL +} + +UE-InternalMeasQuantity ::= SEQUENCE { + measurementQuantity UE-MeasurementQuantity, + filterCoefficient FilterCoefficient DEFAULT fc0 +} + +UE-InternalMeasuredResults ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ue-TransmittedPowerFDD UE-TransmittedPower OPTIONAL, + ue-RX-TX-ReportEntryList UE-RX-TX-ReportEntryList OPTIONAL + }, + tdd SEQUENCE { + ue-TransmittedPowerTDD-List UE-TransmittedPowerTDD-List OPTIONAL, + appliedTA UL-TimingAdvance OPTIONAL + } + } +} + +UE-InternalMeasuredResults-LCR-r4 ::= SEQUENCE { + ue-TransmittedPowerTDD-List UE-TransmittedPowerTDD-List OPTIONAL, + -- If TA value is not greater than 2047, then use this IE to report. + t-ADVinfo T-ADVinfo OPTIONAL +} + +UE-InternalMeasuredResults-v770ext ::= SEQUENCE { + modeSpecificInfo CHOICE { + tdd384-768 SEQUENCE { + appliedTA EXT-UL-TimingAdvance OPTIONAL + }, + tdd128 SEQUENCE { + -- If TA value is greater than 2047, then use this IE to report + t-ADVinfo T-ADVinfo-ext OPTIONAL + } + } +} + +UE-InternalMeasurement ::= SEQUENCE { + ue-InternalMeasQuantity UE-InternalMeasQuantity OPTIONAL, + ue-InternalReportingQuantity UE-InternalReportingQuantity OPTIONAL, + reportCriteria UE-InternalReportCriteria +} + +UE-InternalMeasurement-r4 ::= SEQUENCE { + ue-InternalMeasQuantity UE-InternalMeasQuantity OPTIONAL, + ue-InternalReportingQuantity UE-InternalReportingQuantity-r4 OPTIONAL, + reportCriteria UE-InternalReportCriteria +} + +UE-InternalMeasurementSysInfo ::= SEQUENCE { + ue-InternalMeasurementID MeasurementIdentity DEFAULT 5, + ue-InternalMeasQuantity UE-InternalMeasQuantity +} + +UE-InternalReportCriteria ::= CHOICE { + ue-InternalReportingCriteria UE-InternalReportingCriteria, + periodicalReportingCriteria PeriodicalReportingCriteria, + noReporting NULL +} + +UE-InternalReportingCriteria ::= SEQUENCE { + ue-InternalEventParamList UE-InternalEventParamList OPTIONAL +} + +UE-InternalReportingQuantity ::= SEQUENCE { + ue-TransmittedPower BOOLEAN, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ue-RX-TX-TimeDifference BOOLEAN + }, + tdd SEQUENCE { + appliedTA BOOLEAN + } + } +} + +UE-InternalReportingQuantity-r4 ::= SEQUENCE { + ue-TransmittedPower BOOLEAN, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ue-RX-TX-TimeDifference BOOLEAN + }, + tdd SEQUENCE { + tddOption CHOICE { + -- appliedTA applies to both 3.84 Mcps TDD and to 7.68 Mcps TDD. + -- Therefore, no additional choice of TDD mode is necessary + tdd384 SEQUENCE { + appliedTA BOOLEAN + }, + tdd128 SEQUENCE { + t-ADVinfo BOOLEAN + } + } + } + } +} + +-- TABULAR: UE-MeasurementQuantity, for 3.84 Mcps TDD only the first two values +-- ue-TransmittedPower and utra-Carrier-RSSI are used. +-- For 1.28 Mcps TDD ue-RX-TX-TimeDifference corresponds to T-ADV in the tabular +UE-MeasurementQuantity ::= ENUMERATED { + ue-TransmittedPower, + utra-Carrier-RSSI, + ue-RX-TX-TimeDifference } + +UE-RX-TX-ReportEntry ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + ue-RX-TX-TimeDifferenceType1 UE-RX-TX-TimeDifferenceType1 +} + +UE-RX-TX-ReportEntryList ::= SEQUENCE (SIZE (1..maxRL)) OF + UE-RX-TX-ReportEntry + +-- SPARE: UE-RX-TX-TimeDifferenceType1, Max = 1280 +-- Values above Max are spare +UE-RX-TX-TimeDifferenceType1 ::= INTEGER (768..1791) + + +UE-RX-TX-TimeDifferenceType2 ::= INTEGER (0..8191) + +UE-RX-TX-TimeDifferenceType2Info ::= SEQUENCE { + ue-RX-TX-TimeDifferenceType2 UE-RX-TX-TimeDifferenceType2, + neighbourQuality NeighbourQuality +} + +-- In 1.28 Mcps TDD, actual value for +-- T-ADV Threshold = (UE-RX-TX-TimeDifferenceThreshold - 768) * 0.125 +UE-RX-TX-TimeDifferenceThreshold ::= INTEGER (768..1280) + +UE-TransmittedPower ::= INTEGER (0..104) + +UE-TransmittedPowerTDD-List ::= SEQUENCE (SIZE (1..maxTS)) OF + UE-TransmittedPower + +UL-TrCH-Identity ::= CHOICE{ + dch TransportChannelIdentity, + -- Note: the reference to CPCH in the element name below is incorrect. The name is not changed + -- to keep it aligned with R99. + rachorcpch NULL, + usch TransportChannelIdentity +} + +UE-Positioning-Accuracy ::= BIT STRING (SIZE (7)) + + +UE-Positioning-CipherParameters ::= SEQUENCE { + cipheringKeyFlag BIT STRING (SIZE (1)), + cipheringSerialNumber INTEGER (0..65535) +} + +UE-Positioning-DGANSSCorrections ::= SEQUENCE { + dganssreferencetime INTEGER (0..119), -- scale factor 30s + dganssInfoList DGANSSInfoList +} + +UE-Positioning-DGANSSCorrections-r9 ::= SEQUENCE { + dganssreferencetime INTEGER (0..119), -- scale factor 30s + dganssInfoList DGANSSInfoList-r9 +} + +UE-Positioning-DGANSSCorrections-v920ext ::= SEQUENCE { + dganssInfoList DGANSSInfoList-v920ext +} + +UE-Positioning-Error ::= SEQUENCE { + errorReason UE-Positioning-ErrorCause, + ue-positioning-GPS-additionalAssistanceDataRequest + UE-Positioning-GPS-AdditionalAssistanceDataRequest OPTIONAL +} + +UE-Positioning-Error-r7 ::= SEQUENCE { + errorReason UE-Positioning-ErrorCause-r7, + ue-positioning-GPS-additionalAssistanceDataRequest + UE-Positioning-GPS-AdditionalAssistanceDataRequest OPTIONAL, + ue-positioning-GANSS-additionalAssistanceDataRequest + UE-Positioning-GANSS-AdditionalAssistanceDataRequest OPTIONAL +} + +UE-Positioning-Error-v860ext ::= SEQUENCE { + ue-positioning-GANSS-additionalAssistanceDataRequest + UE-Positioning-GANSS-AdditionalAssistanceDataRequest-v860ext OPTIONAL +} + +UE-Positioning-ErrorCause ::= ENUMERATED { + notEnoughOTDOA-Cells, + notEnoughGPS-Satellites, + assistanceDataMissing, + notAccomplishedGPS-TimingOfCellFrames, + undefinedError, + requestDeniedByUser, + notProcessedAndTimeout, + referenceCellNotServingCell } + +UE-Positioning-ErrorCause-r7 ::= ENUMERATED { + notEnoughOTDOA-Cells, + notEnoughGPS-Satellites, + assistanceDataMissing, + notAccomplishedGPS-TimingOfCellFrames, + undefinedError, + requestDeniedByUser, + notProcessedAndTimeout, + referenceCellNotServingCell, + notEnoughGANSS-Satellites, + notAccomplishedGANSS-TimingOfCellFrames, + spare6, spare5, spare4, spare3, spare2, spare1 } + +UE-Positioning-EventParam ::= SEQUENCE { + reportingAmount ReportingAmount, + reportFirstFix BOOLEAN, + measurementInterval UE-Positioning-MeasurementInterval, + eventSpecificInfo UE-Positioning-EventSpecificInfo +} + +UE-Positioning-EventParam-r7 ::= SEQUENCE { + reportingAmount ReportingAmount, + reportFirstFix BOOLEAN, + measurementInterval UE-Positioning-MeasurementInterval, + eventSpecificInfo UE-Positioning-EventSpecificInfo-r7 +} + +UE-Positioning-EventParamList ::= SEQUENCE (SIZE (1..maxMeasEvent)) OF + UE-Positioning-EventParam + +UE-Positioning-EventParamList-r7 ::= SEQUENCE (SIZE (1..maxMeasEvent)) OF + UE-Positioning-EventParam-r7 + +UE-Positioning-EventSpecificInfo ::= CHOICE { + e7a ThresholdPositionChange, + e7b ThresholdSFN-SFN-Change, + e7c ThresholdSFN-GPS-TOW +} + +UE-Positioning-EventSpecificInfo-r7 ::= CHOICE { + e7a ThresholdPositionChange, + e7b ThresholdSFN-SFN-Change, + e7c ThresholdSFN-GPS-TOW-us, + e7d ThresholdSFN-GANSS-TOW +} + +-- This IE, if included, shall contain exactly one of the optional elements +UE-Positioning-GANSS-AddUTCModels ::= SEQUENCE { + utcModel1 UTCmodelSet1 OPTIONAL, + utcModel2 UTCmodelSet2 OPTIONAL, + utcModel3 UTCmodelSet3 OPTIONAL +} + +UE-Positioning-GANSS-Almanac ::= SEQUENCE{ + ganss-wk-number INTEGER (0..255), + alm-keplerianParameters ALM-keplerianParameters OPTIONAL +} + +-- This IE, if included, shall contain exactly one of the optional elements +UE-Positioning-GANSS-Almanac-v860ext ::= SEQUENCE { + alm-keplerianNAVAlmanac ALM-NAVKeplerianSet OPTIONAL, + alm-keplerianReducedAlmanac ALM-ReducedKeplerianSet OPTIONAL, + alm-keplerianMidiAlmanac ALM-MidiAlmanacSet OPTIONAL, + alm-keplerianGLONASS ALM-GlonassAlmanacSet OPTIONAL, + alm-ecefSBASAlmanac ALM-ECEFsbasAlmanacSet OPTIONAL +} + +UE-Positioning-GANSS-Almanac-r8 ::= SEQUENCE{ + ganss-wk-number INTEGER (0..255), + alm-keplerianParameters ALM-keplerianParameters OPTIONAL, + alm-keplerianNAVAlmanac ALM-NAVKeplerianSet OPTIONAL, + alm-keplerianReducedAlmanac ALM-ReducedKeplerianSet OPTIONAL, + alm-keplerianMidiAlmanac ALM-MidiAlmanacSet OPTIONAL, + alm-keplerianGLONASS ALM-GlonassAlmanacSet OPTIONAL, + alm-ecefSBASAlmanac ALM-ECEFsbasAlmanacSet OPTIONAL +} + +UE-Positioning-GANSS-Almanac-va40ext ::= SEQUENCE { + complete-Almanac-Provided BOOLEAN OPTIONAL +} + +UE-Positioning-GANSS-Almanac-r10 ::= SEQUENCE{ + ganss-wk-number INTEGER (0..255), + complete-Almanac-Provided BOOLEAN OPTIONAL, + alm-keplerianParameters ALM-keplerianParameters OPTIONAL, + alm-keplerianNAVAlmanac ALM-NAVKeplerianSet OPTIONAL, + alm-keplerianReducedAlmanac ALM-ReducedKeplerianSet OPTIONAL, + alm-keplerianMidiAlmanac ALM-MidiAlmanacSet OPTIONAL, + alm-keplerianGLONASS ALM-GlonassAlmanacSet OPTIONAL, + alm-ecefSBASAlmanac ALM-ECEFsbasAlmanacSet OPTIONAL +} + +UE-Positioning-GANSS-AdditionalAssistanceDataRequest ::= SEQUENCE { + ganssReferenceTime BOOLEAN, + ganssreferenceLocation BOOLEAN, + ganssIonosphericModel BOOLEAN, + ganssRequestedGenericAssistanceDataList GanssRequestedGenericAssistanceDataList +} + +UE-Positioning-GANSS-AdditionalAssistanceDataRequest-v860ext ::= SEQUENCE { + ganssAddIonoModelReq BIT STRING (SIZE (2)) OPTIONAL, + ganssEOPreq ENUMERATED { true } OPTIONAL, + ganssRequestedGenericAssistanceDataList + GanssRequestedGenericAssistanceDataList-v860ext +} + +UE-Positioning-GANSS-AddIonoModel ::= SEQUENCE { + dataID BIT STRING (SIZE (2)), + alpha-beta-parameters UE-Positioning-GPS-IonosphericModel +} + +UE-Positioning-GANSS-AddNavigationModels ::= SEQUENCE { + non-broadcastIndication ENUMERATED { true } OPTIONAL, + ganssSatInfoNavList Ganss-Sat-Info-AddNavList +} + +UE-Positioning-GANSS-AssistanceData ::= SEQUENCE { + ue-positioning-GANSS-ReferenceTime UE-Positioning-GANSS-ReferenceTime OPTIONAL, + uePositioningGanssReferencePosition ReferenceLocationGANSS OPTIONAL, + uePositioningGanssIonosphericModel UE-Positioning-GANSS-IonosphericModel OPTIONAL, + ganssGenericDataList GANSSGenericDataList OPTIONAL +} + +UE-Positioning-GANSS-AssistanceData-v860ext ::= SEQUENCE { + uePositioningGanssAddIonoModel UE-Positioning-GANSS-AddIonoModel OPTIONAL, + uePositioningGanssEarthOrientationPara UE-Positioning-GANSS-EarthOrientPara OPTIONAL, + ganssGenericDataList GANSSGenericDataList-v860ext OPTIONAL +} + +UE-Positioning-GANSS-AssistanceData-r8 ::= SEQUENCE { + ue-positioning-GANSS-ReferenceTime UE-Positioning-GANSS-ReferenceTime OPTIONAL, + uePositioningGanssReferencePosition ReferenceLocationGANSS OPTIONAL, + uePositioningGanssIonosphericModel UE-Positioning-GANSS-IonosphericModel OPTIONAL, + uePositioningGanssAddIonoModel UE-Positioning-GANSS-AddIonoModel OPTIONAL, + uePositioningGanssEarthOrientationPara + UE-Positioning-GANSS-EarthOrientPara OPTIONAL, + ganssGenericDataList GANSSGenericDataList-r8 OPTIONAL +} + +UE-Positioning-GANSS-AssistanceData-r9 ::= SEQUENCE { + ue-positioning-GANSS-ReferenceTime UE-Positioning-GANSS-ReferenceTime OPTIONAL, + uePositioningGanssReferencePosition ReferenceLocationGANSS OPTIONAL, + uePositioningGanssIonosphericModel UE-Positioning-GANSS-IonosphericModel OPTIONAL, + uePositioningGanssAddIonoModel UE-Positioning-GANSS-AddIonoModel OPTIONAL, + uePositioningGanssEarthOrientationPara + UE-Positioning-GANSS-EarthOrientPara OPTIONAL, + ganssGenericDataList GANSSGenericDataList-r9 OPTIONAL +} + +UE-Positioning-GANSS-AssistanceData-v920ext ::= SEQUENCE { + ganssGenericDataList GANSSGenericDataList-v920ext OPTIONAL +} + +UE-Positioning-GANSS-AssistanceData-va40ext ::= SEQUENCE { + ue-positioning-GANSS-ReferenceTime UE-Positioning-GANSS-ReferenceTime-va40ext OPTIONAL, + ganssGenericDataList GANSSGenericDataList-va40ext OPTIONAL +} + +UE-Positioning-GANSS-AssistanceData-r10 ::= SEQUENCE { + ue-positioning-GANSS-ReferenceTime UE-Positioning-GANSS-ReferenceTime-r10 OPTIONAL, + uePositioningGanssReferencePosition ReferenceLocationGANSS OPTIONAL, + uePositioningGanssIonosphericModel UE-Positioning-GANSS-IonosphericModel OPTIONAL, + uePositioningGanssAddIonoModel UE-Positioning-GANSS-AddIonoModel OPTIONAL, + uePositioningGanssEarthOrientationPara + UE-Positioning-GANSS-EarthOrientPara OPTIONAL, + ganssGenericDataList GANSSGenericDataList-r10 OPTIONAL +} + +UE-Positioning-GANSS-AuxiliaryInfo ::= CHOICE { + -- This choice may only be present if GANSS ID indicates Modernized GPS + ganssID1 AuxInfoGANSS-ID1, + -- This choice may only be present if GANSS ID indicates GLONASS + ganssID3 AuxInfoGANSS-ID3 +} + +UE-Positioning-GANSS-ClockModel ::= SEQUENCE { + satellite-clock-modelList Satellite-clock-modelList +} + +-- This IE, if included, shall contain exactly one of the optional elements +UE-Positioning-GANSS-AddClockModels ::= SEQUENCE { + navClockModel NAVclockModel OPTIONAL, + cnavClockModel CNAVclockModel OPTIONAL, + glonassClockModel GLONASSclockModel OPTIONAL, + sbasClockModel SBASclockModel OPTIONAL +} + +-- This IE, if included, shall contain exactly one of the optional elements +UE-Positioning-GANSS-AddOrbitModels ::= SEQUENCE { + navKeplerianSet NavModel-NAVKeplerianSet OPTIONAL, + cnavKeplerianSet NavModel-CNAVKeplerianSet OPTIONAL, + glonassECEF NavModel-GLONASSecef OPTIONAL, + sbasECEF NavModel-SBASecef OPTIONAL +} + +UE-Positioning-GANSS-Data ::= SEQUENCE { + ganssDataCipheringInfo UE-Positioning-CipherParameters OPTIONAL, + ganssDecipheringKeys GANSSDecipheringKeys OPTIONAL, + uePositioningGanssReferenceTime UE-Positioning-GANSS-ReferenceTime OPTIONAL, + uePositioningGanssReferencePosition ReferenceLocationGANSS OPTIONAL, + uePositioningGanssIonosphericModel UE-Positioning-GANSS-IonosphericModel OPTIONAL, + ganssGenericDataList GANSSGenericDataList OPTIONAL +} + +UE-Positioning-GANSS-Data-Bit-Assistance ::= SEQUENCE { + ganss-tod INTEGER (0..59), + dataBitAssistanceList DataBitAssistanceList +} + +UE-Positioning-GANSS-EarthOrientPara ::= SEQUENCE { + teop BIT STRING (SIZE (16)), + pmX BIT STRING (SIZE (21)), + pmXdot BIT STRING (SIZE (15)), + pmY BIT STRING (SIZE (21)), + pmYdot BIT STRING (SIZE (15)), + deltaUT1 BIT STRING (SIZE (31)), + deltaUT1dot BIT STRING (SIZE (19)) +} + +UE-Positioning-GANSS-IonosphericModel ::= SEQUENCE { + alpha-zero-ionos BIT STRING (SIZE (12)), + alpha-one-ionos BIT STRING (SIZE (12)), + alpha-two-ionos BIT STRING (SIZE (12)), + gANSS-storm-flags GANSS-Storm-Flag OPTIONAL +} + +UE-Positioning-GANSS-MeasuredResults ::= SEQUENCE { + referenceTime CHOICE { + utran-GANSSReferenceTimeResult UTRAN-GANSSReferenceTime, + ganssReferenceTimeOnly GANSSReferenceTimeOnly + }, + ganssGenericMeasurementInfo GANSSGenericMeasurementInfo +} + +UE-Positioning-GANSS-MeasuredResults-v860ext ::= SEQUENCE { + ganssGenericMeasurementInfo GANSSGenericMeasurementInfo-v860ext +} + +UE-Positioning-GANSS-NavigationModel ::= SEQUENCE { + non-broadcastIndication ENUMERATED { true } OPTIONAL, + ganssSatInfoNavList Ganss-Sat-Info-NavList +} + +UE-Positioning-GANSS-OrbitModel ::= SEQUENCE { + keplerianParameters KeplerianParameters OPTIONAL +} + +UE-Positioning-GANSS-RealTimeIntegrity ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF SEQUENCE { + bad-ganss-satId INTEGER (0..63), + bad-ganss-signalId BIT STRING (SIZE (8)) OPTIONAL +} + +UE-Positioning-GANSS-ReferenceMeasurementInfo ::= SEQUENCE { + ganssSignalId GANSS-Signal-Id OPTIONAL, + satelliteInformationList GANSSSatelliteInformationList +} + +UE-Positioning-GANSS-ReferenceMeasurementInfo-va40ext ::= SEQUENCE { + satelliteInformationList GANSSSatelliteInformationList-va40ext +} + +UE-Positioning-GANSS-ReferenceMeasurementInfo-r10 ::= SEQUENCE { + ganssSignalId GANSS-Signal-Id OPTIONAL, + satelliteInformationList GANSSSatelliteInformationList-r10 +} + +UE-Positioning-GANSS-ReferenceTime ::= SEQUENCE { + ganssDay INTEGER (0..8191) OPTIONAL, + ganssTod INTEGER (0..86399), + ganssTodUncertainty INTEGER (0..127) OPTIONAL, + ganssTimeId INTEGER (0..7) OPTIONAL, + utran-ganssreferenceTime SEQUENCE { + timingOfCellFrames INTEGER (0..3999999), + mode CHOICE { + fdd SEQUENCE { + primary-CPICH-Info PrimaryCPICH-Info + }, + tdd SEQUENCE { + cellParameters CellParametersID + } + }, + referenceSfn INTEGER (0..4095) + } OPTIONAL, + tutran-ganss-driftRate Tutran-Ganss-DriftRate OPTIONAL +} + +UE-Positioning-GANSS-ReferenceTime-va40ext ::= SEQUENCE { + ganss-Day-Cycle-Number INTEGER (0..7) OPTIONAL +} + +UE-Positioning-GANSS-ReferenceTime-r10 ::= SEQUENCE { + ganssDay INTEGER (0..8191) OPTIONAL, + ganss-Day-Cycle-Number INTEGER (0..7) OPTIONAL, + ganssTod INTEGER (0..86399), + ganssTodUncertainty INTEGER (0..127) OPTIONAL, + ganssTimeId INTEGER (0..7) OPTIONAL, + utran-ganssreferenceTime SEQUENCE { + timingOfCellFrames INTEGER (0..3999999), + mode CHOICE { + fdd SEQUENCE { + primary-CPICH-Info PrimaryCPICH-Info + }, + tdd SEQUENCE { + cellParameters CellParametersID + } + }, + referenceSfn INTEGER (0..4095) + } OPTIONAL, + tutran-ganss-driftRate Tutran-Ganss-DriftRate OPTIONAL +} + +UE-Positioning-GANSS-SBAS-ID ::= ENUMERATED { + waas, + egnos, + msas, + gagan, + spare4, + spare3, + spare2, + spare1 } + +UE-Positioning-GANSS-TimeModel ::= SEQUENCE { + ganss-timeModelreferenceTime INTEGER (0..37799), -- scale factor 16s + ganss-t-a0 INTEGER (-2147483648..2147483647), -- scale factor 2-35 + -- 'ganss-t-al' scale factor 2-51 + ganss-t-a1 INTEGER (-8388608..8388607) OPTIONAL, + -- 'ganss-t-a2' scale factor 2-68 + ganss-t-a2 INTEGER (-64..63) OPTIONAL, + gnss-to-id ENUMERATED { gps, galileo, qzss, + glonass, spare4, spare3, spare2, spare1 }, + ganss-wk-number INTEGER (0..8191) OPTIONAL +} + +UE-Positioning-GANSS-TimeModel-va40ext ::= SEQUENCE { + deltaT INTEGER (-128..127) OPTIONAL +} + +UE-Positioning-GANSS-TimeModel-r10 ::= SEQUENCE { + ganss-timeModelreferenceTime INTEGER (0..37799), -- scale factor 16s + ganss-t-a0 INTEGER (-2147483648..2147483647), -- scale factor 2-35 + -- 'ganss-t-al' scale factor 2-51 + ganss-t-a1 INTEGER (-8388608..8388607) OPTIONAL, + -- 'ganss-t-a2' scale factor 2-68 + ganss-t-a2 INTEGER (-64..63) OPTIONAL, + gnss-to-id ENUMERATED { gps, galileo, qzss, + glonass, spare4, spare3, spare2, spare1 }, + ganss-wk-number INTEGER (0..8191) OPTIONAL, + deltaT INTEGER (-128..127) OPTIONAL +} + +UE-Positioning-GANSS-TimeModels ::= SEQUENCE (SIZE (1..maxGANSS-1)) OF + UE-Positioning-GANSS-TimeModel + +UE-Positioning-GANSS-TimeModels-va40ext ::= SEQUENCE (SIZE (1..maxGANSS-1)) OF + UE-Positioning-GANSS-TimeModel-va40ext + +UE-Positioning-GANSS-UTCModel ::= SEQUENCE { + a-one-utc BIT STRING (SIZE (24)), + a-zero-utc BIT STRING (SIZE (32)), + t-ot-utc BIT STRING (SIZE (8)), + delta-t-ls-utc BIT STRING (SIZE (8)), + w-n-t-utc BIT STRING (SIZE (8)), + w-n-lsf-utc BIT STRING (SIZE (8)), + dn-utc BIT STRING (SIZE (8)), + delta-t-lsf-utc BIT STRING (SIZE (8)) +} + +UE-Positioning-GPS-AcquisitionAssistance ::= SEQUENCE { + gps-ReferenceTime GPS-TOW-1msec, + utran-GPSReferenceTime UTRAN-GPSReferenceTime OPTIONAL, + satelliteInformationList AcquisitionSatInfoList +} + +UE-Positioning-GPS-AcquisitionAssistance-v770ext ::= SEQUENCE { + ue-Positioning-GPS-ReferenceTimeUncertainty + UE-Positioning-GPS-ReferenceTimeUncertainty OPTIONAL +} + +UE-Positioning-GPS-AcquisitionAssistance-r7 ::= SEQUENCE { + gps-ReferenceTime GPS-TOW-1msec, + utran-GPSReferenceTime UTRAN-GPSReferenceTime OPTIONAL, + ue-Positioning-GPS-ReferenceTimeUncertainty + UE-Positioning-GPS-ReferenceTimeUncertainty OPTIONAL, + satelliteInformationList AcquisitionSatInfoList +} + +UE-Positioning-GPS-AcquisitionAssistance-va40ext ::= SEQUENCE { + satelliteInformationList AcquisitionSatInfoList-va40ext +} + +UE-Positioning-GPS-AcquisitionAssistance-r10 ::= SEQUENCE { + gps-ReferenceTime GPS-TOW-1msec, + utran-GPSReferenceTime UTRAN-GPSReferenceTime OPTIONAL, + ue-Positioning-GPS-ReferenceTimeUncertainty + UE-Positioning-GPS-ReferenceTimeUncertainty + OPTIONAL, + satelliteInformationList AcquisitionSatInfoList-r10 +} + +UE-Positioning-GPS-AdditionalAssistanceDataRequest ::= SEQUENCE { + almanacRequest BOOLEAN, + utcModelRequest BOOLEAN, + ionosphericModelRequest BOOLEAN, + navigationModelRequest BOOLEAN, + dgpsCorrectionsRequest BOOLEAN, + referenceLocationRequest BOOLEAN, + referenceTimeRequest BOOLEAN, + aquisitionAssistanceRequest BOOLEAN, + realTimeIntegrityRequest BOOLEAN, + navModelAddDataRequest UE-Positioning-GPS-NavModelAddDataReq OPTIONAL +} + +UE-Positioning-GPS-Almanac ::= SEQUENCE { + wn-a BIT STRING (SIZE (8)), + almanacSatInfoList AlmanacSatInfoList, + sv-GlobalHealth BIT STRING (SIZE (364)) OPTIONAL +} + +UE-Positioning-GPS-Almanac-va40ext ::= SEQUENCE { + complete-Almanac-Provided BOOLEAN OPTIONAL +} + +UE-Positioning-GPS-Almanac-r10 ::= SEQUENCE { + wn-a BIT STRING (SIZE (8)), + complete-Almanac-Provided BOOLEAN OPTIONAL, + almanacSatInfoList AlmanacSatInfoList, + sv-GlobalHealth BIT STRING (SIZE (364)) OPTIONAL +} + +UE-Positioning-GPS-AssistanceData ::= SEQUENCE { + ue-positioning-GPS-ReferenceTime UE-Positioning-GPS-ReferenceTime OPTIONAL, + ue-positioning-GPS-ReferenceLocation ReferenceLocation OPTIONAL, + ue-positioning-GPS-DGPS-Corrections UE-Positioning-GPS-DGPS-Corrections OPTIONAL, + ue-positioning-GPS-NavigationModel UE-Positioning-GPS-NavigationModel OPTIONAL, + ue-positioning-GPS-IonosphericModel UE-Positioning-GPS-IonosphericModel OPTIONAL, + ue-positioning-GPS-UTC-Model UE-Positioning-GPS-UTC-Model OPTIONAL, + ue-positioning-GPS-Almanac UE-Positioning-GPS-Almanac OPTIONAL, + ue-positioning-GPS-AcquisitionAssistance + UE-Positioning-GPS-AcquisitionAssistance OPTIONAL, + ue-positioning-GPS-Real-timeIntegrity BadSatList OPTIONAL, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy UE-Positioning-GPS-ReferenceCellInfo OPTIONAL +} + +UE-Positioning-GPS-AssistanceData-v770ext ::= SEQUENCE { + ue-positioning-GPS-ReferenceTime UE-Positioning-GPS-ReferenceTime-v770ext OPTIONAL, + ue-positioning-GPS-AcquisitionAssistance + UE-Positioning-GPS-AcquisitionAssistance-v770ext OPTIONAL +} + +UE-Positioning-GPS-AssistanceData-r7 ::= SEQUENCE { + ue-positioning-GPS-ReferenceTime UE-Positioning-GPS-ReferenceTime-r7 OPTIONAL, + ue-positioning-GPS-ReferenceLocation ReferenceLocation OPTIONAL, + ue-positioning-GPS-DGPS-Corrections UE-Positioning-GPS-DGPS-Corrections OPTIONAL, + ue-positioning-GPS-NavigationModel UE-Positioning-GPS-NavigationModel OPTIONAL, + ue-positioning-GPS-IonosphericModel UE-Positioning-GPS-IonosphericModel OPTIONAL, + ue-positioning-GPS-UTC-Model UE-Positioning-GPS-UTC-Model OPTIONAL, + ue-positioning-GPS-Almanac UE-Positioning-GPS-Almanac OPTIONAL, + ue-positioning-GPS-AcquisitionAssistance + UE-Positioning-GPS-AcquisitionAssistance-r7 OPTIONAL, + ue-positioning-GPS-Real-timeIntegrity BadSatList OPTIONAL +} + +UE-Positioning-GPS-AssistanceData-r9 ::= SEQUENCE { + ue-positioning-GPS-ReferenceTime UE-Positioning-GPS-ReferenceTime-r7 OPTIONAL, + ue-positioning-GPS-ReferenceLocation ReferenceLocation OPTIONAL, + ue-positioning-GPS-DGPS-Corrections UE-Positioning-GPS-DGPS-Corrections-r9 OPTIONAL, + ue-positioning-GPS-NavigationModel UE-Positioning-GPS-NavigationModel OPTIONAL, + ue-positioning-GPS-IonosphericModel UE-Positioning-GPS-IonosphericModel OPTIONAL, + ue-positioning-GPS-UTC-Model UE-Positioning-GPS-UTC-Model OPTIONAL, + ue-positioning-GPS-Almanac UE-Positioning-GPS-Almanac OPTIONAL, + ue-positioning-GPS-AcquisitionAssistance + UE-Positioning-GPS-AcquisitionAssistance-r7 OPTIONAL, + ue-positioning-GPS-Real-timeIntegrity BadSatList OPTIONAL +} + +UE-Positioning-GPS-AssistanceData-v920ext ::= SEQUENCE { + ue-positioning-GPS-DGPS-Corrections UE-Positioning-GPS-DGPS-Corrections-v920ext OPTIONAL +} + +UE-Positioning-GPS-AssistanceData-va40ext ::= SEQUENCE { + ue-positioning-GPS-ReferenceTime UE-Positioning-GPS-ReferenceTime-va40ext OPTIONAL, + ue-positioning-GPS-Almanac UE-Positioning-GPS-Almanac-va40ext OPTIONAL, + ue-positioning-GPS-AcquisitionAssistance + UE-Positioning-GPS-AcquisitionAssistance-va40ext + OPTIONAL +} + +UE-Positioning-GPS-AssistanceData-r10 ::= SEQUENCE { + ue-positioning-GPS-ReferenceTime UE-Positioning-GPS-ReferenceTime-r10 OPTIONAL, + ue-positioning-GPS-ReferenceLocation ReferenceLocation OPTIONAL, + ue-positioning-GPS-DGPS-Corrections UE-Positioning-GPS-DGPS-Corrections-r9 OPTIONAL, + ue-positioning-GPS-NavigationModel UE-Positioning-GPS-NavigationModel OPTIONAL, + ue-positioning-GPS-IonosphericModel UE-Positioning-GPS-IonosphericModel OPTIONAL, + ue-positioning-GPS-UTC-Model UE-Positioning-GPS-UTC-Model OPTIONAL, + ue-positioning-GPS-Almanac UE-Positioning-GPS-Almanac-r10 OPTIONAL, + ue-positioning-GPS-AcquisitionAssistance + UE-Positioning-GPS-AcquisitionAssistance-r10 + OPTIONAL, + ue-positioning-GPS-Real-timeIntegrity BadSatList OPTIONAL +} + +UE-Positioning-GPS-DGPS-Corrections ::= SEQUENCE { + gps-TOW GPS-TOW-1sec, + statusHealth DiffCorrectionStatus, + dgps-CorrectionSatInfoList DGPS-CorrectionSatInfoList +} + +UE-Positioning-GPS-DGPS-Corrections-r9 ::= SEQUENCE { + gps-TOW GPS-TOW-1sec, + statusHealth DiffCorrectionStatus, + dgps-CorrectionSatInfoList DGPS-CorrectionSatInfoList-r9 +} + +UE-Positioning-GPS-DGPS-Corrections-v920ext ::= SEQUENCE { + dgps-CorrectionSatInfoList DGPS-CorrectionSatInfoList-v920ext +} + +UE-Positioning-GPS-IonosphericModel ::= SEQUENCE { + alpha0 BIT STRING (SIZE (8)), + alpha1 BIT STRING (SIZE (8)), + alpha2 BIT STRING (SIZE (8)), + alpha3 BIT STRING (SIZE (8)), + beta0 BIT STRING (SIZE (8)), + beta1 BIT STRING (SIZE (8)), + beta2 BIT STRING (SIZE (8)), + beta3 BIT STRING (SIZE (8)) +} + +UE-Positioning-GPS-MeasurementResults ::= SEQUENCE { + referenceTime CHOICE { + utran-GPSReferenceTimeResult UTRAN-GPSReferenceTimeResult, + gps-ReferenceTimeOnly GPS-TOW-1msec + }, + gps-MeasurementParamList GPS-MeasurementParamList +} + +UE-Positioning-GPS-MeasurementResults-v770ext ::= SEQUENCE { + ue-Positioning-GPS-ReferenceTimeUncertainty + UE-Positioning-GPS-ReferenceTimeUncertainty OPTIONAL +} + +UE-Positioning-GPS-NavigationModel ::= SEQUENCE { + navigationModelSatInfoList NavigationModelSatInfoList +} + +UE-Positioning-GPS-NavModelAddDataReq ::= SEQUENCE { + gps-Week INTEGER (0..1023), + -- SPARE: gps-Toe, Max = 167 + -- Values above Max are spare + gps-Toe INTEGER (0..255), + -- SPARE: tToeLimit, Max = 10 + -- Values above Max are spare + tToeLimit INTEGER (0..15), + satDataList SatDataList +} + +UE-Positioning-GPS-ReferenceCellInfo ::= SEQUENCE{ + modeSpecificInfo CHOICE { + fdd SEQUENCE { + referenceIdentity PrimaryCPICH-Info + }, + tdd SEQUENCE { + referenceIdentity CellParametersID + } + } +} + +UE-Positioning-GPS-ReferenceTime ::= SEQUENCE { + gps-Week INTEGER (0..1023), + gps-tow-1msec GPS-TOW-1msec, + utran-GPSReferenceTime UTRAN-GPSReferenceTime OPTIONAL, + sfn-tow-Uncertainty SFN-TOW-Uncertainty OPTIONAL, + utran-GPS-DriftRate UTRAN-GPS-DriftRate OPTIONAL, + gps-TOW-AssistList GPS-TOW-AssistList OPTIONAL +} + +UE-Positioning-GPS-ReferenceTime-v770ext ::= SEQUENCE { + ue-Positioning-GPS-ReferenceTimeUncertainty + UE-Positioning-GPS-ReferenceTimeUncertainty OPTIONAL +} + +UE-Positioning-GPS-ReferenceTime-r7 ::= SEQUENCE { + gps-Week INTEGER (0..1023), + gps-tow-1msec GPS-TOW-1msec, + utran-GPSReferenceTime UTRAN-GPSReferenceTime OPTIONAL, + ue-Positioning-GPS-ReferenceTimeUncertainty + UE-Positioning-GPS-ReferenceTimeUncertainty OPTIONAL, + sfn-tow-Uncertainty SFN-TOW-Uncertainty OPTIONAL, + utran-GPS-DriftRate UTRAN-GPS-DriftRate OPTIONAL, + gps-TOW-AssistList GPS-TOW-AssistList OPTIONAL +} + +UE-Positioning-GPS-ReferenceTime-va40ext ::= SEQUENCE { + gps-Week-Cycle-Number INTEGER (0..7) OPTIONAL +} + +UE-Positioning-GPS-ReferenceTime-r10 ::= SEQUENCE { + gps-Week INTEGER (0..1023), + gps-Week-Cycle-Number INTEGER (0..7) OPTIONAL, + gps-tow-1msec GPS-TOW-1msec, + utran-GPSReferenceTime UTRAN-GPSReferenceTime OPTIONAL, + ue-Positioning-GPS-ReferenceTimeUncertainty + UE-Positioning-GPS-ReferenceTimeUncertainty + OPTIONAL, + sfn-tow-Uncertainty SFN-TOW-Uncertainty OPTIONAL, + utran-GPS-DriftRate UTRAN-GPS-DriftRate OPTIONAL, + gps-TOW-AssistList GPS-TOW-AssistList OPTIONAL +} + +UE-Positioning-GPS-ReferenceTimeUncertainty ::= INTEGER (0..127) + +UE-Positioning-GPS-UTC-Model ::= SEQUENCE { + a1 BIT STRING (SIZE (24)), + a0 BIT STRING (SIZE (32)), + t-ot BIT STRING (SIZE (8)), + wn-t BIT STRING (SIZE (8)), + delta-t-LS BIT STRING (SIZE (8)), + wn-lsf BIT STRING (SIZE (8)), + dn BIT STRING (SIZE (8)), + delta-t-LSF BIT STRING (SIZE (8)) +} + +UE-Positioning-IPDL-Parameters ::= SEQUENCE { + ip-Spacing IP-Spacing, + ip-Length IP-Length, + ip-Offset INTEGER (0..9), + seed INTEGER (0..63), + burstModeParameters BurstModeParameters OPTIONAL +} + +UE-Positioning-IPDL-Parameters-r4 ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ip-Spacing IP-Spacing, + ip-Length IP-Length, + ip-Offset INTEGER (0..9), + seed INTEGER (0..63) + }, + tdd SEQUENCE { + ip-Spacing-TDD IP-Spacing-TDD, + ip-slot INTEGER (0..14), + ip-Start INTEGER (0..4095), + ip-PCCPCG IP-PCCPCH-r4 OPTIONAL + } + }, + burstModeParameters BurstModeParameters OPTIONAL +} + +UE-Positioning-IPDL-Parameters-TDD-r4-ext ::= SEQUENCE { + ip-Spacing IP-Spacing-TDD, + ip-slot INTEGER (0..14), + ip-Start INTEGER (0..4095), + ip-PCCPCG IP-PCCPCH-r4 OPTIONAL, + burstModeParameters BurstModeParameters +} + +UE-Positioning-MeasuredResults ::= SEQUENCE { + ue-positioning-OTDOA-Measurement UE-Positioning-OTDOA-Measurement OPTIONAL, + -- Extended 'ue-positioning-PositionEstimateInfo' information may be provided using IE + -- 'UE-Positioning-PositionEstimateInfo-v770ext' in IE 'UE-Positioning-MeasuredResults-v770ext'. + ue-positioning-PositionEstimateInfo UE-Positioning-PositionEstimateInfo OPTIONAL, + ue-positioning-GPS-Measurement UE-Positioning-GPS-MeasurementResults OPTIONAL, + -- The 'ue-positioning-Error' information may be provided using IE 'UE-Positioning-Error-r7' in + -- IE 'UE-Positioning-MeasuredResults-v770ext'. + -- If IE 'UE-Positioning-Error-r7' is present, the corresponding IE 'UE-Positioning-Error' shall + -- be excluded. + ue-positioning-Error UE-Positioning-Error OPTIONAL +} + +UE-Positioning-MeasuredResults-v770ext ::= SEQUENCE { + ue-positioning-PositionEstimateInfo UE-Positioning-PositionEstimateInfo-v770ext OPTIONAL, + ue-positioning-GPS-Measurement UE-Positioning-GPS-MeasurementResults-v770ext + OPTIONAL, + ue-positioning-Error UE-Positioning-Error-r7 OPTIONAL, + ue-positioning-Ganss-MeasuredResults UE-Positioning-GANSS-MeasuredResults OPTIONAL +} + +UE-Positioning-MeasuredResults-v390ext ::= SEQUENCE { + ue-Positioning-OTDOA-Measurement-v390ext UE-Positioning-OTDOA-Measurement-v390ext +} + +UE-Positioning-MeasuredResults-v860ext ::= SEQUENCE { + ue-positioning-Error UE-Positioning-Error-v860ext OPTIONAL, + ue-positioning-Ganss-MeasurementResults UE-Positioning-GANSS-MeasuredResults-v860ext OPTIONAL +} + +UE-Positioning-Measurement ::= SEQUENCE { + ue-positioning-ReportingQuantity UE-Positioning-ReportingQuantity, + reportCriteria UE-Positioning-ReportCriteria, + ue-positioning-OTDOA-AssistanceData UE-Positioning-OTDOA-AssistanceData OPTIONAL, + ue-positioning-GPS-AssistanceData UE-Positioning-GPS-AssistanceData OPTIONAL +} + +UE-Positioning-Measurement-v390ext ::= SEQUENCE { + ue-positioning-ReportingQuantity-v390ext + UE-Positioning-ReportingQuantity-v390ext OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + ue-positioning-OTDOA-AssistanceData-UEB UE-Positioning-OTDOA-AssistanceData-UEB OPTIONAL +} + +UE-Positioning-Measurement-r4 ::= SEQUENCE { + ue-positioning-ReportingQuantity UE-Positioning-ReportingQuantity-r4, + measurementValidity MeasurementValidity OPTIONAL, + reportCriteria UE-Positioning-ReportCriteria, + ue-positioning-OTDOA-AssistanceData UE-Positioning-OTDOA-AssistanceData-r4 OPTIONAL, + ue-positioning-GPS-AssistanceData UE-Positioning-GPS-AssistanceData OPTIONAL +} + +UE-Positioning-Measurement-r7 ::= SEQUENCE { + ue-positioning-ReportingQuantity UE-Positioning-ReportingQuantity-r7, + measurementValidity MeasurementValidity OPTIONAL, + reportCriteria UE-Positioning-ReportCriteria-r7, + ue-positioning-OTDOA-AssistanceData UE-Positioning-OTDOA-AssistanceData-r7 OPTIONAL, + ue-positioning-GPS-AssistanceData UE-Positioning-GPS-AssistanceData-r7 OPTIONAL, + ue-positioning-GANSS-AssistanceData UE-Positioning-GANSS-AssistanceData OPTIONAL +} + +UE-Positioning-Measurement-r8 ::= SEQUENCE { + ue-positioning-ReportingQuantity UE-Positioning-ReportingQuantity-r8, + measurementValidity MeasurementValidity OPTIONAL, + reportCriteria UE-Positioning-ReportCriteria-r7, + ue-positioning-OTDOA-AssistanceData UE-Positioning-OTDOA-AssistanceData-r7 OPTIONAL, + ue-positioning-GPS-AssistanceData UE-Positioning-GPS-AssistanceData-r7 OPTIONAL, + ue-positioning-GANSS-AssistanceData UE-Positioning-GANSS-AssistanceData-r8 OPTIONAL +} + +UE-Positioning-Measurement-r9 ::= SEQUENCE { + ue-positioning-ReportingQuantity UE-Positioning-ReportingQuantity-r8, + measurementValidity MeasurementValidity OPTIONAL, + reportCriteria UE-Positioning-ReportCriteria-r7, + ue-positioning-OTDOA-AssistanceData UE-Positioning-OTDOA-AssistanceData-r7 OPTIONAL, + ue-positioning-GPS-AssistanceData UE-Positioning-GPS-AssistanceData-r9 OPTIONAL, + ue-positioning-GANSS-AssistanceData UE-Positioning-GANSS-AssistanceData-r9 OPTIONAL +} + +UE-Positioning-Measurement-r10 ::= SEQUENCE { + ue-positioning-ReportingQuantity UE-Positioning-ReportingQuantity-r8, + measurementValidity MeasurementValidity OPTIONAL, + reportCriteria UE-Positioning-ReportCriteria-r7, + ue-positioning-OTDOA-AssistanceData UE-Positioning-OTDOA-AssistanceData-r7 OPTIONAL, + ue-positioning-GPS-AssistanceData UE-Positioning-GPS-AssistanceData-r10 OPTIONAL, + ue-positioning-GANSS-AssistanceData UE-Positioning-GANSS-AssistanceData-r10 OPTIONAL +} + +UE-Positioning-MeasurementEventResults ::= CHOICE { + -- In case of 'event7a' reporting, if IE 'UE-Positioning-PositionEstimateInfo' is not needed, + -- CHOICE shall be set to 'additionalOrReplacedPosMeasEvent'and the 'event7a' shall be included + -- in IE 'UE-Positioning-MeasurementEventResults-v770ext'. + event7a UE-Positioning-PositionEstimateInfo, + event7b UE-Positioning-OTDOA-Measurement, + event7c UE-Positioning-GPS-MeasurementResults, + -- If CHOICE is set to 'additionalOrReplacedPosMeasEvent', + -- IE 'UE-Positioning-MeasurementEventResults-v770ext' shall be present. + additionalOrReplacedPosMeasEvent NULL +} + +UE-Positioning-MeasurementEventResults-v770ext ::= CHOICE { + event7a UE-Positioning-PositionEstimateInfo-v770ext, + event7c UE-Positioning-GPS-MeasurementResults-v770ext, + event7d UE-Positioning-GANSS-MeasuredResults, + spare NULL +} + +UE-Positioning-MeasurementEventResults-v860ext ::= CHOICE { + event7d UE-Positioning-GANSS-MeasuredResults-v860ext +} + +UE-Positioning-MeasurementInterval ::= ENUMERATED { + e5, e15, e60, e300, + e900, e1800, e3600, e7200 } + +UE-Positioning-MethodType ::= ENUMERATED { + ue-Assisted, + ue-Based, + ue-BasedPreferred, + ue-AssistedPreferred } + +UE-Positioning-OTDOA-AssistanceData ::= SEQUENCE { + ue-positioning-OTDOA-ReferenceCellInfo + UE-Positioning-OTDOA-ReferenceCellInfo OPTIONAL, + ue-positioning-OTDOA-NeighbourCellList + UE-Positioning-OTDOA-NeighbourCellList OPTIONAL +} + +UE-Positioning-OTDOA-AssistanceData-r4 ::= SEQUENCE { + ue-positioning-OTDOA-ReferenceCellInfo + UE-Positioning-OTDOA-ReferenceCellInfo-r4 OPTIONAL, + ue-positioning-OTDOA-NeighbourCellList + UE-Positioning-OTDOA-NeighbourCellList-r4 OPTIONAL +} + +UE-Positioning-OTDOA-AssistanceData-r4ext ::= SEQUENCE { + -- In case of TDD these IPDL parameters shall be used for the reference cell instead of + -- IPDL Parameters in IE UE-Positioning-OTDOA-ReferenceCellInfo + ue-Positioning-IPDL-Parameters-TDD-r4-ext + UE-Positioning-IPDL-Parameters-TDD-r4-ext OPTIONAL, + -- These IPDL parameters shall be used for the neighbour cells in case of TDD instead of + -- IPDL Parameters in IE UE-Positioning-OTDOA-NeighbourCellInfoList. The cells shall be + -- listed in the same order as in IE UE-Positioning-OTDOA-NeighbourCellInfoList + ue-Positioning-IPDL-Parameters-TDDList-r4-ext + UE-Positioning-IPDL-Parameters-TDDList-r4-ext OPTIONAL +} + +UE-Positioning-OTDOA-AssistanceData-UEB ::= SEQUENCE { + ue-positioning-OTDOA-ReferenceCellInfo-UEB + UE-Positioning-OTDOA-ReferenceCellInfo-UEB OPTIONAL, + ue-positioning-OTDOA-NeighbourCellList-UEB + UE-Positioning-OTDOA-NeighbourCellList-UEB OPTIONAL +} + +UE-Positioning-OTDOA-AssistanceData-UEB-ext ::= SEQUENCE { + ue-positioning-OTDOA-ReferenceCellInfo-UEB-ext + UE-Positioning-OTDOA-ReferenceCellInfo-UEB-ext OPTIONAL, + ue-positioning-OTDOA-NeighbourCellList-UEB-ext + UE-Positioning-OTDOA-NeighbourCellList-UEB-ext OPTIONAL +} + +UE-Positioning-OTDOA-AssistanceData-r7 ::= SEQUENCE { + ue-positioning-OTDOA-ReferenceCellInfo UE-Positioning-OTDOA-ReferenceCellInfo-r7 OPTIONAL, + ue-positioning-OTDOA-NeighbourCellList UE-Positioning-OTDOA-NeighbourCellList-r7 OPTIONAL +} + +UE-Positioning-IPDL-Parameters-TDDList-r4-ext ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + UE-Positioning-IPDL-Parameters-TDD-r4-ext + +UE-Positioning-OTDOA-MeasuredResultsTDD-ext ::= SEQUENCE { + neighbourList NeighbourList-TDD-r7 OPTIONAL +} + +UE-Positioning-OTDOA-Measurement ::= SEQUENCE { + sfn INTEGER (0..4095), + modeSpecificInfo CHOICE { + fdd SEQUENCE { + referenceCellIDentity PrimaryCPICH-Info, + ue-RX-TX-TimeDifferenceType2Info UE-RX-TX-TimeDifferenceType2Info + }, + tdd SEQUENCE { + referenceCellIdentity CellParametersID + } + }, + neighbourList NeighbourList OPTIONAL +} + +UE-Positioning-OTDOA-Measurement-v390ext ::= SEQUENCE { + neighbourList-v390ext NeighbourList-v390ext +} + +UE-Positioning-OTDOA-NeighbourCellInfo ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info + }, + tdd SEQUENCE{ + cellAndChannelIdentity CellAndChannelIdentity + } + }, + frequencyInfo FrequencyInfo OPTIONAL, + ue-positioning-IPDL-Paremeters UE-Positioning-IPDL-Parameters OPTIONAL, + sfn-SFN-RelTimeDifference SFN-SFN-RelTimeDifference1, + sfn-SFN-Drift SFN-SFN-Drift OPTIONAL, + searchWindowSize OTDOA-SearchWindowSize, + positioningMode CHOICE{ + ueBased SEQUENCE {}, + ueAssisted SEQUENCE {} + } +} + +UE-Positioning-OTDOA-NeighbourCellInfo-r4 ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info + }, + tdd SEQUENCE{ + cellAndChannelIdentity CellAndChannelIdentity + } + }, + frequencyInfo FrequencyInfo OPTIONAL, + ue-positioning-IPDL-Paremeters UE-Positioning-IPDL-Parameters-r4 OPTIONAL, + sfn-SFN-RelTimeDifference SFN-SFN-RelTimeDifference1, + sfn-Offset-Validity SFN-Offset-Validity OPTIONAL, + sfn-SFN-Drift SFN-SFN-Drift OPTIONAL, + searchWindowSize OTDOA-SearchWindowSize, + positioningMode CHOICE { + ueBased SEQUENCE { + relativeNorth INTEGER (-20000..20000) OPTIONAL, + relativeEast INTEGER (-20000..20000) OPTIONAL, + relativeAltitude INTEGER (-4000..4000) OPTIONAL, + fineSFN-SFN FineSFN-SFN OPTIONAL, + -- actual value roundTripTime = (IE value * 0.0625) + 876 + roundTripTime INTEGER (0.. 32766) OPTIONAL + }, + ueAssisted SEQUENCE {} + } +} + +UE-Positioning-OTDOA-NeighbourCellInfo-UEB ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info + }, + tdd SEQUENCE{ + cellAndChannelIdentity CellAndChannelIdentity + } + }, + frequencyInfo FrequencyInfo OPTIONAL, + ue-positioning-IPDL-Paremeters UE-Positioning-IPDL-Parameters OPTIONAL, + sfn-SFN-RelTimeDifference SFN-SFN-RelTimeDifference1, + sfn-SFN-Drift SFN-SFN-Drift OPTIONAL, + searchWindowSize OTDOA-SearchWindowSize, + relativeNorth INTEGER (-20000..20000) OPTIONAL, + relativeEast INTEGER (-20000..20000) OPTIONAL, + relativeAltitude INTEGER (-4000..4000) OPTIONAL, + fineSFN-SFN FineSFN-SFN, + -- actual value roundTripTime = (IE value * 0.0625) + 876 + roundTripTime INTEGER (0..32766) OPTIONAL +} + +UE-Positioning-OTDOA-NeighbourCellInfo-UEB-ext ::= SEQUENCE { + -- actual value roundTripTimeExtension = (IE value * 0.0625) + roundTripTimeExtension INTEGER (0..70274) OPTIONAL +} + +UE-Positioning-OTDOA-NeighbourCellInfo-r7 ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info + }, + tdd SEQUENCE{ + cellAndChannelIdentity CellAndChannelIdentity + } + }, + frequencyInfo FrequencyInfo OPTIONAL, + ue-positioning-IPDL-Paremeters UE-Positioning-IPDL-Parameters-r4 OPTIONAL, + sfn-SFN-RelTimeDifference SFN-SFN-RelTimeDifference1, + sfn-Offset-Validity SFN-Offset-Validity OPTIONAL, + sfn-SFN-Drift SFN-SFN-Drift OPTIONAL, + searchWindowSize OTDOA-SearchWindowSize, + positioningMode CHOICE { + ueBased SEQUENCE { + relativeNorth INTEGER (-20000..20000) OPTIONAL, + relativeEast INTEGER (-20000..20000) OPTIONAL, + relativeAltitude INTEGER (-4000..4000) OPTIONAL, + fineSFN-SFN FineSFN-SFN OPTIONAL, + -- actual value roundTripTime = (IE value * 0.0625) + 876 + roundTripTime INTEGER (0.. 32766) OPTIONAL, + -- actual value roundTripTimeExtension = (IE value * 0.0625) + roundTripTimeExtension INTEGER (0..70274) OPTIONAL + }, + ueAssisted SEQUENCE {} + } +} + +UE-Positioning-OTDOA-NeighbourCellList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + UE-Positioning-OTDOA-NeighbourCellInfo + +UE-Positioning-OTDOA-NeighbourCellList-r4 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + UE-Positioning-OTDOA-NeighbourCellInfo-r4 + +UE-Positioning-OTDOA-NeighbourCellList-UEB ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + UE-Positioning-OTDOA-NeighbourCellInfo-UEB + +-- The order of the list corresponds to the order of UE-Positioning-OTDOA-NeighbourCellInfo-UEB +-- in UE-Positioning-OTDOA-NeighbourCellList-UEB +UE-Positioning-OTDOA-NeighbourCellList-UEB-ext ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + UE-Positioning-OTDOA-NeighbourCellInfo-UEB-ext + +UE-Positioning-OTDOA-NeighbourCellList-r7 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + UE-Positioning-OTDOA-NeighbourCellInfo-r7 + +UE-Positioning-OTDOA-Quality ::= SEQUENCE { + stdResolution BIT STRING (SIZE (2)), + numberOfOTDOA-Measurements BIT STRING (SIZE (3)), + stdOfOTDOA-Measurements BIT STRING (SIZE (5)) +} + +UE-Positioning-OTDOA-ReferenceCellInfo ::= SEQUENCE { + sfn INTEGER (0..4095) OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info + }, + tdd SEQUENCE{ + cellAndChannelIdentity CellAndChannelIdentity + } + }, + frequencyInfo FrequencyInfo OPTIONAL, + positioningMode CHOICE { + ueBased SEQUENCE {}, + ueAssisted SEQUENCE {} + }, + ue-positioning-IPDL-Paremeters UE-Positioning-IPDL-Parameters OPTIONAL +} + +UE-Positioning-OTDOA-ReferenceCellInfo-r4 ::= SEQUENCE { + sfn INTEGER (0..4095) OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info + }, + tdd SEQUENCE{ + cellAndChannelIdentity CellAndChannelIdentity + } + }, + frequencyInfo FrequencyInfo OPTIONAL, + positioningMode CHOICE { + ueBased SEQUENCE { + cellPosition ReferenceCellPosition OPTIONAL, + -- actual value roundTripTime = (IE value * 0.0625) + 876 + roundTripTime INTEGER (0..32766) OPTIONAL + }, + ueAssisted SEQUENCE {} + }, + ue-positioning-IPDL-Paremeters UE-Positioning-IPDL-Parameters-r4 OPTIONAL +} + +UE-Positioning-OTDOA-ReferenceCellInfo-UEB ::= SEQUENCE { + sfn INTEGER (0..4095) OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info + }, + tdd SEQUENCE{ + cellAndChannelIdentity CellAndChannelIdentity + } + }, + frequencyInfo FrequencyInfo OPTIONAL, + cellPosition ReferenceCellPosition OPTIONAL, + -- actual value roundTripTime = (IE value * 0.0625) + 876 + roundTripTime INTEGER (0..32766) OPTIONAL, + ue-positioning-IPDL-Paremeters UE-Positioning-IPDL-Parameters OPTIONAL +} + +UE-Positioning-OTDOA-ReferenceCellInfo-UEB-ext ::= SEQUENCE { + -- actual value roundTripTimeExtension = (IE value * 0.0625) + roundTripTimeExtension INTEGER (0..70274) OPTIONAL +} + +UE-Positioning-OTDOA-ReferenceCellInfo-r7 ::= SEQUENCE { + sfn INTEGER (0..4095) OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info + }, + tdd SEQUENCE{ + cellAndChannelIdentity CellAndChannelIdentity + } + }, + frequencyInfo FrequencyInfo OPTIONAL, + positioningMode CHOICE { + ueBased SEQUENCE { + cellPosition ReferenceCellPosition OPTIONAL, + -- actual value roundTripTime = (IE value * 0.0625) + 876 + roundTripTime INTEGER (0..32766) OPTIONAL, + -- actual value roundTripTimeExtension = (IE value * 0.0625) + roundTripTimeExtension INTEGER (0..70274) OPTIONAL + }, + ueAssisted SEQUENCE {} + }, + ue-positioning-IPDL-Paremeters UE-Positioning-IPDL-Parameters-r4 OPTIONAL +} + +UE-Positioning-PositionEstimateInfo ::= SEQUENCE { + referenceTime CHOICE { + utran-GPSReferenceTimeResult UTRAN-GPSReferenceTimeResult, + gps-ReferenceTimeOnly GPS-TOW-1msec, + cell-Timing SEQUENCE { + sfn INTEGER (0..4095), + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info + }, + tdd SEQUENCE{ + cellAndChannelIdentity CellAndChannelIdentity + } + } + } + }, + positionEstimate PositionEstimate +} + +UE-Positioning-PositionEstimateInfo-v770ext ::= SEQUENCE { + referenceTimeOptions CHOICE { + -- If 'earlier-than-r7', IE 'UE-Positioning-PositionEstimateInfo' shall be included. + earlier-than-r7 NULL, + -- If 'r7', the corresponding IE 'UE-Positioning-PositionEstimateInfo' shall be excluded. + r7 SEQUENCE { + referenceTime CHOICE { + utran-GANSSReferenceTimeResult UTRAN-GANSSReferenceTime, + ganssReferenceTimeOnly GANSSReferenceTimeOnly + }, + positionEstimate PositionEstimate + } + }, + positionData BIT STRING (SIZE (16)), + velocityEstimate VelocityEstimate OPTIONAL, + ue-Positioning-GPS-ReferenceTimeUncertainty + UE-Positioning-GPS-ReferenceTimeUncertainty OPTIONAL +} + +UE-Positioning-ReportCriteria ::= CHOICE { + ue-positioning-ReportingCriteria UE-Positioning-EventParamList, + periodicalReportingCriteria PeriodicalReportingCriteria, + noReporting NULL +} + +UE-Positioning-ReportCriteria-r7 ::= CHOICE { + ue-positioning-ReportingCriteria UE-Positioning-EventParamList-r7, + periodicalReportingCriteria PeriodicalReportingCriteria, + noReporting NULL +} + +UE-Positioning-ReportingQuantity ::= SEQUENCE { + methodType UE-Positioning-MethodType, + positioningMethod PositioningMethod, + -- dummy1 is not used in this version of specification and it should + -- be ignored. + dummy1 UE-Positioning-ResponseTime, + horizontal-Accuracy UE-Positioning-Accuracy OPTIONAL, + gps-TimingOfCellWanted BOOLEAN, + -- dummy2 is not used in this version of specification and it should + -- be ignored. + dummy2 BOOLEAN, + additionalAssistanceDataRequest BOOLEAN, + environmentCharacterisation EnvironmentCharacterisation OPTIONAL +} + +UE-Positioning-ReportingQuantity-v390ext ::= SEQUENCE { + vertical-Accuracy UE-Positioning-Accuracy +} + +UE-Positioning-ReportingQuantity-r4 ::= SEQUENCE { + methodType UE-Positioning-MethodType, + positioningMethod PositioningMethod, + horizontalAccuracy UE-Positioning-Accuracy OPTIONAL, + verticalAccuracy UE-Positioning-Accuracy OPTIONAL, + gps-TimingOfCellWanted BOOLEAN, + additionalAssistanceDataReq BOOLEAN, + environmentCharacterisation EnvironmentCharacterisation OPTIONAL +} + +UE-Positioning-ReportingQuantity-r7 ::= SEQUENCE { + methodType UE-Positioning-MethodType, + positioningMethod PositioningMethod, + horizontalAccuracy UE-Positioning-Accuracy OPTIONAL, + verticalAccuracy UE-Positioning-Accuracy OPTIONAL, + gps-TimingOfCellWanted BOOLEAN, + additionalAssistanceDataReq BOOLEAN, + environmentCharacterisation EnvironmentCharacterisation OPTIONAL, + velocityRequested ENUMERATED { true } OPTIONAL, + gANSSPositioningMethods BIT STRING (SIZE (16)) OPTIONAL, + gANSSTimingOfCellWanted BIT STRING (SIZE (8)) OPTIONAL, + gANSSCarrierPhaseMeasurementRequested + BIT STRING (SIZE (8)) OPTIONAL +} + +UE-Positioning-ReportingQuantity-r8 ::= SEQUENCE { + methodType UE-Positioning-MethodType, + positioningMethod PositioningMethod, + horizontalAccuracy UE-Positioning-Accuracy OPTIONAL, + verticalAccuracy UE-Positioning-Accuracy OPTIONAL, + gps-TimingOfCellWanted BOOLEAN, + additionalAssistanceDataReq BOOLEAN, + environmentCharacterisation EnvironmentCharacterisation OPTIONAL, + velocityRequested ENUMERATED { true } OPTIONAL, + gANSSPositioningMethods BIT STRING (SIZE (16)) OPTIONAL, + gANSSTimingOfCellWanted BIT STRING (SIZE (8)) OPTIONAL, + gANSSCarrierPhaseMeasurementRequested + BIT STRING (SIZE (8)) OPTIONAL, + gANSSMultiFreqMeasurementRequested BIT STRING (SIZE (8)) OPTIONAL +} + +UE-Positioning-ResponseTime ::= ENUMERATED { + s1, s2, s4, s8, s16, + s32, s64, s128 } + +UTCmodelSet1 ::= SEQUENCE { + utcA0 BIT STRING (SIZE (16)), + utcA1 BIT STRING (SIZE (13)), + utcA2 BIT STRING (SIZE (7)), + utcDeltaTls BIT STRING (SIZE (8)), + utcTot BIT STRING (SIZE (16)), + utcWNot BIT STRING (SIZE (13)), + utcWNlsf BIT STRING (SIZE (8)), + utcDN BIT STRING (SIZE (4)), + utcDeltaTlsf BIT STRING (SIZE (8)) +} + +UTCmodelSet2 ::= SEQUENCE { + nA BIT STRING (SIZE (11)), + tauC BIT STRING (SIZE (32)), + deltaUT1 DeltaUT1 OPTIONAL, + kp BIT STRING (SIZE (2)) OPTIONAL +} + +UTCmodelSet3 ::= SEQUENCE { + utcA1wnt BIT STRING (SIZE (24)), + utcA0wnt BIT STRING (SIZE (32)), + utcTot BIT STRING (SIZE (8)), + utcWNt BIT STRING (SIZE (8)), + utcDeltaTls BIT STRING (SIZE (8)), + utcWNlsf BIT STRING (SIZE (8)), + utcDN BIT STRING (SIZE (8)), + utcDeltaTlsf BIT STRING (SIZE (8)), + utcStandardID BIT STRING (SIZE (3)) +} + +-- SPARE: UTRA-CarrierRSSI, Max = 76 +-- Values above Max are spare +UTRA-CarrierRSSI ::= INTEGER (0..127) + +UTRAN-GANSSReferenceTime ::= SEQUENCE { + ue-GANSSTimingOfCellFrames SEQUENCE { + -- Actual value [ns] = (ms-Part * 4294967296 + ls-Part) * 250 + -- Actual values [ns] > 86399999999750 are reserved and are considered a protocol error + ms-Part INTEGER (0..80), + ls-Part INTEGER (0..4294967295) + }, + gANSS-TimeId INTEGER (0..7) OPTIONAL, + gANSS-TimeUncertainty INTEGER (0..127) OPTIONAL, + mode CHOICE { + fdd SEQUENCE { + primary-CPICH-Info PrimaryCPICH-Info + }, + tdd SEQUENCE { + cellParameters CellParametersID + } + }, + referenceSfn INTEGER (0..4095) +} + +UTRAN-FDD-FrequencyList ::= SEQUENCE (SIZE(1..maxNumFDDFreqs)) OF + UTRAN-FDD-Frequency + +UTRAN-FDD-Frequency ::= SEQUENCE { + uarfcn UARFCN, + priority INTEGER (0..maxPrio-1), + -- Actual value = IE value * 2 + threshXhigh INTEGER (0..31), + -- Actual value = IE value * 2 + threshXlow INTEGER (0..31), + qQualMinFDD INTEGER (-24..0) OPTIONAL, + -- Actual value = IE value * 2 + 1 + qRxLevMinFDD INTEGER (-60..-13) OPTIONAL +} + +UTRAN-TDD-FrequencyList ::= SEQUENCE (SIZE(1..maxNumTDDFreqs)) OF + UTRAN-TDD-Frequency + +UTRAN-TDD-Frequency ::= SEQUENCE { + uarfcn UARFCN, + priority INTEGER (0..maxPrio-1), + -- Actual value = IE value * 2 + threshXhigh INTEGER (0..31), + -- Actual value = IE value * 2 + threshXlow INTEGER (0..31), + -- Actual value = IE value * 2 + 1 + qRxLevMinTDD INTEGER (-60..-13) OPTIONAL +} + +UTRAN-GPS-DriftRate ::= ENUMERATED { + utran-GPSDrift0, utran-GPSDrift1, utran-GPSDrift2, + utran-GPSDrift5, utran-GPSDrift10, utran-GPSDrift15, + utran-GPSDrift25, utran-GPSDrift50, utran-GPSDrift-1, + utran-GPSDrift-2, utran-GPSDrift-5, utran-GPSDrift-10, + utran-GPSDrift-15, utran-GPSDrift-25, utran-GPSDrift-50} + +UTRAN-GPSReferenceTime ::= SEQUENCE { + -- For utran-GPSTimingOfCell values above 2322431999999 are not + -- used in this version of the specification + -- Actual value utran-GPSTimingOfCell = (ms-part * 4294967296) + ls-part + utran-GPSTimingOfCell SEQUENCE { + ms-part INTEGER (0..1023), + ls-part INTEGER (0..4294967295) + }, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + referenceIdentity PrimaryCPICH-Info + }, + tdd SEQUENCE { + referenceIdentity CellParametersID + } + } OPTIONAL, + sfn INTEGER (0..4095) +} + +UTRAN-GPSReferenceTimeResult ::= SEQUENCE { + -- For ue-GPSTimingOfCell values above 37158911999999 are not + -- used in this version of the specification + -- Actual value ue-GPSTimingOfCell = (ms-part * 4294967296) + ls-part + ue-GPSTimingOfCell SEQUENCE { + ms-part INTEGER (0.. 16383), + ls-part INTEGER (0..4294967295) + }, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + referenceIdentity PrimaryCPICH-Info + }, + tdd SEQUENCE { + referenceIdentity CellParametersID + } + }, + sfn INTEGER (0..4095) +} + +UTRA-PriorityInfoList ::= SEQUENCE { + utra-ServingCell SEQUENCE { + priority INTEGER (0..maxPrio-1), + -- Actual value = IE value * 2 + s-PrioritySearch1 INTEGER (0..31), + -- Actual value = IE value, default value is 0 + s-PrioritySearch2 INTEGER (0..7) OPTIONAL, + -- Actual value = IE value * 2 + threshServingLow INTEGER (0..31) + }, + utran-FDD-FrequencyList UTRAN-FDD-FrequencyList OPTIONAL, + utran-TDD-FrequencyList UTRAN-TDD-FrequencyList OPTIONAL +} + +UTRA-PriorityInfoList-v920ext ::= SEQUENCE { + threshServingLow2 INTEGER (0..31) OPTIONAL +} + +VarianceOfRLC-BufferPayload ::= ENUMERATED { + plv0, plv4, plv8, plv16, plv32, plv64, + plv128, plv256, plv512, plv1024, + plv2k, plv4k, plv8k, plv16k, spare2, spare1 } + +VelocityEstimate ::= CHOICE { + horizontalVelocity HorizontalVelocity, + horizontalWithVerticalVelocity HorizontalWithVerticalVelocity, + horizontalVelocityWithUncertainty HorizontalVelocityWithUncertainty, + horizontalWithVerticalVelocityAndUncertainty HorizontalWithVerticalVelocityAndUncertainty +} + +-- Actual value W = IE value * 0.1 +W ::= INTEGER (0..20) + +-- *************************************************** +-- +-- OTHER INFORMATION ELEMENTS (10.3.8) +-- +-- *************************************************** + +BCC ::= INTEGER (0..7) + +BCCH-ModificationInfo ::= SEQUENCE { + mib-ValueTag MIB-ValueTag, + bcch-ModificationTime BCCH-ModificationTime OPTIONAL +} + +-- Actual value BCCH-ModificationTime = IE value * 8 +BCCH-ModificationTime ::= INTEGER (0..511) + +BSIC ::= SEQUENCE { + ncc NCC, + bcc BCC +} + +CBS-DRX-Level1Information ::= SEQUENCE { + ctch-AllocationPeriod INTEGER (1..256), + cbs-FrameOffset INTEGER (0..255) +} + +CBS-DRX-Level1Information-extension-r6 ::= ENUMERATED {p8, p16, p32, p64, p128, p256} + +CDMA2000-Message ::= SEQUENCE { + msg-Type BIT STRING (SIZE (8)), + payload BIT STRING (SIZE (1..512)) +} + +CDMA2000-MessageList ::= SEQUENCE (SIZE (1..maxInterSysMessages)) OF + CDMA2000-Message + +CDMA2000-UMTS-Frequency-List ::= SEQUENCE (SIZE (1..maxNumCDMA2000Freqs)) OF + FrequencyInfoCDMA2000 + +CellValueTag ::= INTEGER (1..4) + +DataTransmFrequency ::= SEQUENCE { + dataTransmFreqGranularity ENUMERATED { ms100, ms250, ms500, ms1000, + ms2000, ms5000, ms10000, ms60000 }, + numberOfDataTransmOcc INTEGER (1..610) +} + +DataVolumeHistory ::= SEQUENCE { + dataVolumeMontoringWindow INTEGER (1..120), + dataTransmFrequency DataTransmFrequency OPTIONAL, + dataVolumePerRB DataVolumePerRB-List OPTIONAL +} + +DataVolumePerRB ::= SEQUENCE { + rb-Identity RB-Identity, + dataVolume INTEGER (0..4294967295) +} + +DataVolumePerRB-List ::= SEQUENCE (SIZE (1..maxRB)) OF DataVolumePerRB + +DeferredMeasurementControlReadingSupport ::= SEQUENCE { + -- If modeSpecificInfo is not present, deferred SIB11, SIB11bis and SIB12 reading + -- with default measurement quantities applies + modeSpecificInfo CHOICE { + fdd SEQUENCE { + intraFreqMeasQuantity-FDD IntraFreqMeasQuantity-FDD-sib3 + }, + tdd SEQUENCE { + intraFreqMeasQuantity-TDDList IntraFreqMeasQuantity-TDD-sib3List + } + } OPTIONAL +} + +ETWS-Information ::= SEQUENCE { + warningType OCTET STRING (SIZE (1..2)), + messageIdentifier OCTET STRING (SIZE (2)), + serialNumber OCTET STRING (SIZE (2)) +} + +-- This IE is not used in the specification. +ETWS-WarningSecurityInfo ::= OCTET STRING + +EUTRA-BlacklistedCell ::= SEQUENCE { + physicalCellIdentity EUTRA-PhysicalCellIdentity +} + +EUTRA-BlacklistedCellPerFreqList ::= SEQUENCE (SIZE (1..maxEUTRACellPerFreq)) OF + EUTRA-BlacklistedCell + +EUTRA-PhysicalCellIdentity ::= INTEGER (0..503) + +EUTRA-RadioAccessCapability ::= SEQUENCE { + ue-EUTRA-Capability OCTET STRING +} + +EUTRA-TargetFreqInfoList ::= SEQUENCE (SIZE (1..maxEUTRATargetFreqs)) OF + EUTRA-TargetFreqInfo + +EUTRA-TargetFreqInfoList-vb50ext ::= SEQUENCE (SIZE (1..maxEUTRATargetFreqs)) OF + EUTRA-TargetFreqInfo-vb50ext + +EUTRA-TargetFreqInfo ::= SEQUENCE { + dlEUTRACarrierFreq EARFCN, + eutraBlacklistedCellPerFreqList EUTRA-BlacklistedCellPerFreqList OPTIONAL +} + +EUTRA-TargetFreqInfo-vb50ext ::= SEQUENCE { + earfcn EARFCNExtension OPTIONAL +} + +--Actual value = 2^(IE value) +ExpirationTimeFactor ::= INTEGER (1..8) + +ExtGANSS-SchedulingInfo ::= SEQUENCE { + extensionGANSS-SIBType SIB-TypeExtGANSS, + schedulingInfo SchedulingInformation, + valueTagInfo ValueTagInfo +} + +-- For each extended GANSS SIB type the value tag information is added at the end +ExtGANSS-SIBTypeInfoSchedulingInfoList ::= SEQUENCE (SIZE (1..maxGANSS)) OF + ExtGANSS-SIBTypeInfoSchedulingInfo + +ExtGANSS-SIBTypeInfoSchedulingInfo ::= SEQUENCE { + ganssID INTEGER (0..7) OPTIONAL, + sbasID UE-Positioning-GANSS-SBAS-ID OPTIONAL, + ganssScheduling SEQUENCE (SIZE (1..maxSIB)) OF + ExtGANSS-SchedulingInfo +} + +-- For each extended SIB type the value tag information is added at the end +ExtSIBTypeInfoSchedulingInfo-List ::= SEQUENCE (SIZE (1..maxSIB)) OF + ExtSIBTypeInfoSchedulingInfo + +ExtSIBTypeInfoSchedulingInfo ::= SEQUENCE { + extensionSIB-Type SIB-TypeExt, + schedulingInfo SchedulingInformation, + valueTagInfo ValueTagInfo +} + +-- For each extended SIB type the value tag information is added at the end +ExtSIBTypeInfoSchedulingInfo-List2 ::= SEQUENCE (SIZE (1..maxSIB)) OF + ExtSIBTypeInfoSchedulingInfo2 + +ExtSIBTypeInfoSchedulingInfo2 ::= SEQUENCE { + extensionSIB-Type2 SIB-TypeExt2, + schedulingInfo SchedulingInformation, + valueTagInfo ValueTagInfo +} + +FDD-UMTS-Frequency-List ::= SEQUENCE (SIZE (1..maxNumFDDFreqs)) OF + -- NOTE1: The IE "UARFCN (Nlow)" corresponds to + -- "uarfcn-DL" in FrequencyInfoFDD. + -- NOTE2: The IE "UARFCN (Nupper)" corresponds to + -- "uarfcn-UL" in FrequencyInfoFDD. + FrequencyInfoFDD + +FrequencyInfoCDMA2000 ::= SEQUENCE { + band-Class BIT STRING (SIZE (5)), + cdma-Freq BIT STRING (SIZE(11)) +} + +GERAN-SystemInfoBlock ::= OCTET STRING (SIZE (1..23)) + +GERAN-SystemInformation ::= SEQUENCE (SIZE (1..maxGERAN-SI)) OF GERAN-SystemInfoBlock + +GSM-BA-Range ::= SEQUENCE { + gsmLowRangeUARFCN UARFCN, + gsmUpRangeUARFCN UARFCN +} + +GSM-BA-Range-List ::= SEQUENCE (SIZE (1..maxNumGSMFreqRanges)) OF + GSM-BA-Range + + +-- This IE is formatted as 'TLV' and is coded in the same way as the Mobile Station Classmark 2 +-- information element in [5]. The first octet is the Mobile station classmark 2 IEI and its value +-- shall be set to 33H. The second octet is the Length of mobile station classmark 2 and its value +-- shall be set to 3. The octet 3 contains the first octet of the value part of the Mobile Station +-- Classmark 2 information element, the octet 4 contains the second octet of the value part of the +-- Mobile Station Classmark 2 information element and so on. For each of these octets, the first/ +-- leftmost/ most significant bit of the octet contains b8 of the corresponding octet of the Mobile +-- Station Classmark 2. +GSM-Classmark2 ::= OCTET STRING (SIZE (5)) + +-- This IE is formatted as 'V' and is coded in the same way as the value part in the Mobile station +-- classmark 3 information element in [5] +-- The value part is specified by means of CSN.1, which encoding results in a bit string, to which +-- final padding may be appended upto the next octet boundary [5]. The first/ leftmost bit of the +-- CSN.1 bit string is placed in the first/ leftmost/ most significant bit of the first +-- octet. This continues until the last bit of the CSN.1 bit string, which is placed in the last/ +-- rightmost/ least significant bit of the last octet. +GSM-Classmark3 ::= OCTET STRING (SIZE (1..32)) + +GSM-MessageList ::= SEQUENCE (SIZE (1..maxInterSysMessages)) OF + BIT STRING (SIZE (1..512)) + +GSM-MS-RadioAccessCapability ::= OCTET STRING (SIZE (1..64)) + +GsmSecurityCapability ::= BIT STRING { + -- For each bit value "0" means false/ not supported + a5-7(0), + a5-6(1), + a5-5(2), + a5-4(3), + a5-3(4), + a5-2(5), + a5-1(6) + } (SIZE (7)) + +GSM-TargetCellInfoList ::= SEQUENCE (SIZE (1..maxGSMTargetCells)) OF + GSM-TargetCellInfo + + +GSM-TargetCellInfo ::= SEQUENCE { + bcch-ARFCN BCCH-ARFCN, + frequency-band Frequency-Band, + bsic BSIC OPTIONAL +} + +HNBName ::= OCTET STRING (SIZE(1..maxHNBNameSize)) + +IdentificationOfReceivedMessage ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + receivedMessageType ReceivedMessageType +} + +InterRAT-ChangeFailureCause ::= CHOICE { + configurationUnacceptable NULL, + physicalChannelFailure NULL, + protocolError ProtocolErrorInformation, + unspecified NULL, + spare4 NULL, + spare3 NULL, + spare2 NULL, + spare1 NULL +} + +GERANIu-MessageList ::= SEQUENCE (SIZE (1..maxInterSysMessages)) OF + BIT STRING (SIZE (1..32768)) + +GERANIu-RadioAccessCapability ::= BIT STRING (SIZE (1..170)) + +InterRAT-UE-RadioAccessCapability ::= CHOICE { + gsm SEQUENCE { + gsm-Classmark2 GSM-Classmark2, + gsm-Classmark3 GSM-Classmark3 + }, + cdma2000 SEQUENCE { + cdma2000-MessageList CDMA2000-MessageList + } +} + +InterRAT-UE-RadioAccessCapabilityList ::= SEQUENCE (SIZE(1..maxInterSysMessages)) OF + InterRAT-UE-RadioAccessCapability + +InterRAT-UE-RadioAccessCapability-v590ext ::= SEQUENCE { + geranIu-RadioAccessCapability GERANIu-RadioAccessCapability +} + +InterRAT-UE-RadioAccessCapability-v690ext ::= SEQUENCE { + supportOfInter-RAT-PS-Handover ENUMERATED { doesSupporInter-RAT-PS-Handover } OPTIONAL, + gsm-MS-RadioAccessCapability GSM-MS-RadioAccessCapability +} + +InterRAT-UE-RadioAccessCapability-v860ext ::= SEQUENCE { + eutra-RadioAccessCapability EUTRA-RadioAccessCapability OPTIONAL +} + +InterRAT-UE-SecurityCapability ::= CHOICE { + gsm SEQUENCE { + gsmSecurityCapability GsmSecurityCapability + } +} + +InterRAT-UE-SecurityCapList ::= SEQUENCE (SIZE(1..maxInterSysMessages)) OF + InterRAT-UE-SecurityCapability + +InterRAT-HO-FailureCause ::= CHOICE { + configurationUnacceptable NULL, + physicalChannelFailure NULL, + protocolError ProtocolErrorInformation, + interRAT-ProtocolError NULL, + unspecified NULL, + spare11 NULL, + spare10 NULL, + spare9 NULL, + spare8 NULL, + spare7 NULL, + spare6 NULL, + spare5 NULL, + spare4 NULL, + spare3 NULL, + spare2 NULL, + spare1 NULL +} + +MasterInformationBlock ::= SEQUENCE { + mib-ValueTag MIB-ValueTag, + -- TABULAR: The PLMN identity and ANSI-41 core network information + -- are included in PLMN-Type. + plmn-Type PLMN-Type, + sibSb-ReferenceList SIBSb-ReferenceList, + -- Extension mechanism for non- release99 information + v690NonCriticalExtensions SEQUENCE { + masterInformationBlock-v690ext MasterInformationBlock-v690ext, + v6b0NonCriticalExtensions SEQUENCE { + masterInformationBlock-v6b0ext MasterInformationBlock-v6b0ext-IEs, + v860NonCriticalExtensions SEQUENCE { + masterInformationBlock-v860ext MasterInformationBlock-v860ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +MasterInformationBlock-v690ext ::= SEQUENCE { + multiplePLMN-List MultiplePLMN-List-r6 OPTIONAL +} + +MasterInformationBlock-v6b0ext-IEs ::= SEQUENCE { + extSIBTypeInfoSchedulingInfo-List ExtSIBTypeInfoSchedulingInfo-List OPTIONAL +} + +MasterInformationBlock-v860ext-IEs ::= SEQUENCE { + extSIBTypeInfoSchedulingInfo-List ExtSIBTypeInfoSchedulingInfo-List2 OPTIONAL, + extGANSS-SIBTypeInfoSchedulingInfoList + ExtGANSS-SIBTypeInfoSchedulingInfoList OPTIONAL, + csg-Indicator ENUMERATED { true } OPTIONAL +} + +MIB-ValueTag ::= INTEGER (1..8) + +NCC ::= INTEGER (0..7) + +PLMN-ValueTag ::= INTEGER (1..256) + + +PredefinedConfigIdentityAndValueTag ::= SEQUENCE { + predefinedConfigIdentity PredefinedConfigIdentity, + predefinedConfigValueTag PredefinedConfigValueTag +} + +ProtocolErrorInformation ::= SEQUENCE { + diagnosticsType CHOICE { + type1 SEQUENCE { + protocolErrorCause ProtocolErrorCause + }, + spare NULL + } +} + +ReceivedMessageType ::= ENUMERATED { + activeSetUpdate, + cellChangeOrderFromUTRAN, + cellUpdateConfirm, + counterCheck, + downlinkDirectTransfer, + interRATHandoverCommand, + measurementControl, + pagingType2, + physicalChannelReconfiguration, + physicalSharedChannelAllocation, + radioBearerReconfiguration, + radioBearerRelease, + radioBearerSetup, + rrcConnectionRelease, + rrcConnectionReject, + rrcConnectionSetup, + securityModeCommand, + signallingConnectionRelease, + transportChannelReconfiguration, + transportFormatCombinationControl, + ueCapabilityEnquiry, + ueCapabilityInformationConfirm, + uplinkPhysicalChannelControl, + uraUpdateConfirm, + utranMobilityInformation, + assistanceDataDelivery, + spare6, spare5, spare4, spare3, spare2, + spare1 +} + +Rplmn-Information ::= SEQUENCE { + gsm-BA-Range-List GSM-BA-Range-List OPTIONAL, + fdd-UMTS-Frequency-List FDD-UMTS-Frequency-List OPTIONAL, + tdd-UMTS-Frequency-List TDD-UMTS-Frequency-List OPTIONAL, + cdma2000-UMTS-Frequency-List CDMA2000-UMTS-Frequency-List OPTIONAL +} + +Rplmn-Information-r4 ::= SEQUENCE { + gsm-BA-Range-List GSM-BA-Range-List OPTIONAL, + fdd-UMTS-Frequency-List FDD-UMTS-Frequency-List OPTIONAL, + -- the option is the same for 7.68 Mcps TDD as for 3.84 Mcps TDD + -- i.e. TDD-UMTS-Frequency-List applies + tdd384-UMTS-Frequency-List TDD-UMTS-Frequency-List OPTIONAL, + tdd128-UMTS-Frequency-List TDD-UMTS-Frequency-List OPTIONAL, + cdma2000-UMTS-Frequency-List CDMA2000-UMTS-Frequency-List OPTIONAL +} + +SchedulingInformation ::= SEQUENCE { + scheduling SEQUENCE { + segCount SegCount DEFAULT 1, + sib-Pos CHOICE { + -- The element name indicates the repetition period and the value + -- (multiplied by two) indicates the position of the first segment. + rep4 INTEGER (0..1), + rep8 INTEGER (0..3), + rep16 INTEGER (0..7), + rep32 INTEGER (0..15), + rep64 INTEGER (0..31), + rep128 INTEGER (0..63), + rep256 INTEGER (0..127), + rep512 INTEGER (0..255), + rep1024 INTEGER (0..511), + rep2048 INTEGER (0..1023), + rep4096 INTEGER (0..2047) + }, + sib-PosOffsetInfo SibOFF-List OPTIONAL + } +} + +SchedulingInformationSIB ::= SEQUENCE { + sib-Type SIB-TypeAndTag, + scheduling SchedulingInformation +} + +SchedulingInformationSIBSb ::= SEQUENCE { + sibSb-Type SIBSb-TypeAndTag, + scheduling SchedulingInformation +} + +SegCount ::= INTEGER (1..16) + +SegmentIndex ::= INTEGER (1..15) + +-- Actual value SFN-Prime = 2 * IE value +SFN-Prime ::= INTEGER (0..2047) + + +SIB-Data-fixed ::= BIT STRING (SIZE (222)) + + +SIB-Data-variable ::= BIT STRING (SIZE (1..214)) + +SIBOccurIdentity ::= INTEGER (0..15) + +SIBOccurrenceIdentityAndValueTag ::= SEQUENCE { + sibOccurIdentity SIBOccurIdentity, + sibOccurValueTag SIBOccurValueTag +} + +SIBOccurValueTag ::= INTEGER (0..15) + +SIB-ReferenceList ::= SEQUENCE (SIZE (1..maxSIB)) OF + SchedulingInformationSIB + +SIBSb-ReferenceList ::= SEQUENCE (SIZE (1..maxSIB)) OF + SchedulingInformationSIBSb + +SIB-ReferenceListFACH ::= SEQUENCE (SIZE (1..maxSIB-FACH)) OF + SchedulingInformationSIB + +SIB-Type ::= ENUMERATED { + masterInformationBlock, + systemInformationBlockType1, + systemInformationBlockType2, + systemInformationBlockType3, + systemInformationBlockType4, + systemInformationBlockType5, + systemInformationBlockType6, + systemInformationBlockType7, + -- dummy, dummy2 and dummy3 are not used in this version of the specification, + -- they should not be sent. If they are received they should be ignored + dummy, + dummy2, + dummy3, + systemInformationBlockType11, + systemInformationBlockType12, + systemInformationBlockType13, + systemInformationBlockType13-1, + systemInformationBlockType13-2, + systemInformationBlockType13-3, + systemInformationBlockType13-4, + systemInformationBlockType14, + systemInformationBlockType15, + systemInformationBlockType15-1, + systemInformationBlockType15-2, + systemInformationBlockType15-3, + systemInformationBlockType16, + systemInformationBlockType17, + systemInformationBlockType15-4, + systemInformationBlockType18, + schedulingBlock1, + schedulingBlock2, + systemInformationBlockType15-5, + systemInformationBlockType5bis, + extensionType } + +SIB-TypeAndTag ::= CHOICE { + sysInfoType1 PLMN-ValueTag, + sysInfoType2 CellValueTag, + sysInfoType3 CellValueTag, + sysInfoType4 CellValueTag, + sysInfoType5 CellValueTag, + sysInfoType6 CellValueTag, + sysInfoType7 NULL, + -- dummy, dummy2 and dummy3 are not used in this version of the specification, + -- they should not be sent. If they are received the UE behaviour is not specified. + dummy CellValueTag, + dummy2 NULL, + dummy3 NULL, + sysInfoType11 CellValueTag, + sysInfoType12 CellValueTag, + sysInfoType13 CellValueTag, + sysInfoType13-1 CellValueTag, + sysInfoType13-2 CellValueTag, + sysInfoType13-3 CellValueTag, + sysInfoType13-4 CellValueTag, + sysInfoType14 NULL, + sysInfoType15 CellValueTag, + sysInfoType16 PredefinedConfigIdentityAndValueTag, + sysInfoType17 NULL, + sysInfoType15-1 CellValueTag, + sysInfoType15-2 SIBOccurrenceIdentityAndValueTag, + sysInfoType15-3 SIBOccurrenceIdentityAndValueTag, + sysInfoType15-4 CellValueTag, + sysInfoType18 CellValueTag, + sysInfoType15-5 CellValueTag, + sysInfoType5bis CellValueTag, + spare4 NULL, + spare3 NULL, + spare2 NULL, + spare1 NULL +} + +SIBSb-TypeAndTag ::= CHOICE { + sysInfoType1 PLMN-ValueTag, + sysInfoType2 CellValueTag, + sysInfoType3 CellValueTag, + sysInfoType4 CellValueTag, + sysInfoType5 CellValueTag, + sysInfoType6 CellValueTag, + sysInfoType7 NULL, + -- dummy, dummy2 and dummy3 are not used in this version of the specification, + -- they should not be sent. If they are received the UE behaviour is not specified. + dummy CellValueTag, + dummy2 NULL, + dummy3 NULL, + sysInfoType11 CellValueTag, + sysInfoType12 CellValueTag, + sysInfoType13 CellValueTag, + sysInfoType13-1 CellValueTag, + sysInfoType13-2 CellValueTag, + sysInfoType13-3 CellValueTag, + sysInfoType13-4 CellValueTag, + sysInfoType14 NULL, + sysInfoType15 CellValueTag, + sysInfoType16 PredefinedConfigIdentityAndValueTag, + sysInfoType17 NULL, + sysInfoTypeSB1 CellValueTag, + sysInfoTypeSB2 CellValueTag, + sysInfoType15-1 CellValueTag, + sysInfoType15-2 SIBOccurrenceIdentityAndValueTag, + sysInfoType15-3 SIBOccurrenceIdentityAndValueTag, + sysInfoType15-4 CellValueTag, + sysInfoType18 CellValueTag, + sysInfoType15-5 CellValueTag, + sysInfoType5bis CellValueTag, + spare2 NULL, + spare1 NULL +} + +SIB-TypeExt ::= CHOICE { + systemInfoType11bis NULL, + systemInfoType15bis NULL, + systemInfoType15-1bis NULL, + systemInfoType15-2bis NULL, + systemInfoType15-3bis NULL, + systemInfoType15-6 NULL, + systemInfoType15-7 NULL, + systemInfoType15-8 NULL +} + +SIB-TypeExt2 ::= CHOICE { + systemInfoType19 NULL, + systemInfoType15-2ter NULL, + systemInfoType20 NULL, + systemInfoType21 NULL, + systemInfoType22 NULL, + spare3 NULL, + spare2 NULL, + spare1 NULL +} + +SIB-TypeExtGANSS ::= CHOICE { + systemInfoType15-1bis NULL, + systemInfoType15-2bis NULL, + systemInfoType15-2ter NULL, + systemInfoType15-3bis NULL, + systemInfoType15-6 NULL, + systemInfoType15-7 NULL, + systemInfoType15-8 NULL, + spare9 NULL, + spare8 NULL, + spare7 NULL, + spare6 NULL, + spare5 NULL, + spare4 NULL, + spare3 NULL, + spare2 NULL, + spare1 NULL +} + +SibOFF ::= ENUMERATED { + so2, so4, so6, so8, so10, + so12, so14, so16, so18, + so20, so22, so24, so26, + so28, so30, so32 } + +SibOFF-List ::= SEQUENCE (SIZE (1..15)) OF + SibOFF + +SysInfoType1 ::= SEQUENCE { + -- Core network IEs + cn-CommonGSM-MAP-NAS-SysInfo NAS-SystemInformationGSM-MAP, + cn-DomainSysInfoList CN-DomainSysInfoList, + -- User equipment IEs + ue-ConnTimersAndConstants UE-ConnTimersAndConstants OPTIONAL, + ue-IdleTimersAndConstants UE-IdleTimersAndConstants OPTIONAL, + -- Extension mechanism for non- release99 information + v3a0NonCriticalExtensions SEQUENCE { + sysInfoType1-v3a0ext SysInfoType1-v3a0ext-IEs, + v860NonCriticalExtentions SEQUENCE { + sysInfoType1-v860ext SysInfoType1-v860ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType1-v3a0ext-IEs ::= SEQUENCE { + ue-ConnTimersAndConstants-v3a0ext UE-ConnTimersAndConstants-v3a0ext, + ue-IdleTimersAndConstants-v3a0ext UE-IdleTimersAndConstants-v3a0ext +} + +SysInfoType1-v860ext-IEs ::= SEQUENCE { + ue-ConnTimersAndConstants UE-ConnTimersAndConstants-v860ext +} + +SysInfoType2 ::= SEQUENCE { + -- UTRAN mobility IEs + ura-IdentityList URA-IdentityList, + -- Extension mechanism for non- release99 information + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +SysInfoType3 ::= SEQUENCE { + sib4indicator BOOLEAN, + -- UTRAN mobility IEs + cellIdentity CellIdentity, + cellSelectReselectInfo CellSelectReselectInfoSIB-3-4, + cellAccessRestriction CellAccessRestriction, + -- Extension mechanism for non- release99 information + v4b0NonCriticalExtensions SEQUENCE { + sysInfoType3-v4b0ext SysInfoType3-v4b0ext-IEs, + v590NonCriticalExtension SEQUENCE { + sysInfoType3-v590ext SysInfoType3-v590ext, + v5c0NoncriticalExtension SEQUENCE { + sysInfoType3-v5c0ext SysInfoType3-v5c0ext-IEs, + v670NonCriticalExtension SEQUENCE { + sysInfoType3-v670ext SysInfoType3-v670ext, + v770NonCriticalExtension SEQUENCE { + sysInfoType3-v770ext SysInfoType3-v770ext-IEs, + v830NonCriticalExtension SEQUENCE { + sysInfoType3-v830ext SysInfoType3-v830ext-IEs, + v860NonCriticalExtension SEQUENCE { + sysInfoType3-v860ext SysInfoType3-v860ext-IEs, + v870NonCriticalExtension SEQUENCE { + sysInfoType3-v870ext SysInfoType3-v870ext-IEs, + v900NonCriticalExtension SEQUENCE { + sysInfoType3-v920ext SysInfoType3-v920ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType3-v4b0ext-IEs ::= SEQUENCE { + mapping-LCR Mapping-LCR-r4 OPTIONAL +} + +SysInfoType3-v590ext ::= SEQUENCE { + cellSelectReselectInfo-v590ext CellSelectReselectInfo-v590ext OPTIONAL +} + +SysInfoType3-v5c0ext-IEs ::= SEQUENCE { + cellSelectReselectInfoTreselectionScaling-v5c0ext + CellSelectReselectInfoTreselectionScaling-v5c0ext OPTIONAL +} + +SysInfoType3-v670ext ::= SEQUENCE { + domainSpecificAccessRestrictionParametersForPLMNOfMIB + DomainSpecificAccessRestrictionParam-v670ext OPTIONAL, + domainSpecificAccessRestictionForSharedNetwork + DomainSpecificAccessRestrictionForSharedNetwork-v670ext OPTIONAL +} + +SysInfoType3-v770ext-IEs ::= SEQUENCE { + deferredMeasurementControlReadingSupport + DeferredMeasurementControlReadingSupport OPTIONAL, + q-QualMin-Offset Q-QualMin-Offset OPTIONAL, + q-RxlevMin-Offset Q-RxlevMin-Offset OPTIONAL, + mbsfnOnlyService MBSFNOnlyService OPTIONAL +} + +SysInfoType3-v830ext-IEs ::= SEQUENCE { + pagingPermissionWithAccessControlParametersForPLMNOfMIB + PagingPermissionWithAccessControlParameters OPTIONAL, + pagingPermissionWithAccessControlParametersForSharedNetwork + PagingPermissionWithAccessControlForSharedNetwork OPTIONAL +} + +SysInfoType3-v860ext-IEs ::= SEQUENCE { + csgIdentity CSG-Identity OPTIONAL, + csg-PSCSplitInfo CSG-PSCSplitInfo OPTIONAL +} + +SysInfoType3-v870ext-IEs ::= SEQUENCE { + cellAccessRestriction CellAccessRestriction-v870ext OPTIONAL +} + +SysInfoType3-v920ext-IEs ::= SEQUENCE { + imsEmergencySupportIndicator ENUMERATED { supported } OPTIONAL +} + +SysInfoType4 ::= SEQUENCE { + -- UTRAN mobility IEs + cellIdentity CellIdentity, + cellSelectReselectInfo CellSelectReselectInfoSIB-3-4, + cellAccessRestriction CellAccessRestriction, + -- Extension mechanism for non- release99 information + v4b0NonCriticalExtensions SEQUENCE { + sysInfoType4-v4b0ext SysInfoType4-v4b0ext-IEs, + v590NonCriticalExtension SEQUENCE { + sysInfoType4-v590ext SysInfoType4-v590ext, + v5b0NonCriticalExtension SEQUENCE { + sysInfoType4-v5b0ext SysInfoType4-v5b0ext-IEs, + v5c0NonCriticalExtension SEQUENCE { + sysInfoType4-v5c0ext SysInfoType4-v5c0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType4-v4b0ext-IEs ::= SEQUENCE { + mapping-LCR Mapping-LCR-r4 OPTIONAL +} + + +SysInfoType4-v590ext ::= SEQUENCE { + cellSelectReselectInfo-v590ext CellSelectReselectInfo-v590ext OPTIONAL +} + +SysInfoType4-v5b0ext-IEs ::= SEQUENCE { + cellSelectReselectInfoPCHFACH-v5b0ext CellSelectReselectInfoPCHFACH-v5b0ext OPTIONAL +} + +SysInfoType4-v5c0ext-IEs ::= SEQUENCE { + cellSelectReselectInfoTreselectionScaling-v5c0ext + CellSelectReselectInfoTreselectionScaling-v5c0ext OPTIONAL +} + +SysInfoType5 ::= SEQUENCE { + sib6indicator BOOLEAN, + -- Physical channel IEs + pich-PowerOffset PICH-PowerOffset, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + aich-PowerOffset AICH-PowerOffset + }, + tdd SEQUENCE { + -- If PDSCH/PUSCH is configured for 1.28Mcps or 7.68Mcps TDD, the following IEs should be absent + -- and the info included in the respective tdd128SpecificInfo or tdd768SpecificInfo instead. + -- If PDSCH/PUSCH is configured for 3.84Mcps TDD in R5, HCR-r5-SpecificInfo should also be + -- included. + pusch-SysInfoList-SFN PUSCH-SysInfoList-SFN OPTIONAL, + pdsch-SysInfoList-SFN PDSCH-SysInfoList-SFN OPTIONAL, + openLoopPowerControl-TDD OpenLoopPowerControl-TDD + } + }, + primaryCCPCH-Info PrimaryCCPCH-Info OPTIONAL, + prach-SystemInformationList PRACH-SystemInformationList, + sCCPCH-SystemInformationList SCCPCH-SystemInformationList, + -- cbs-DRX-Level1Information is conditional on any of the CTCH indicator IEs in + -- sCCPCH-SystemInformationList + cbs-DRX-Level1Information CBS-DRX-Level1Information OPTIONAL, + -- Extension mechanism for non- release99 information + v4b0NonCriticalExtensions SEQUENCE { + sysInfoType5-v4b0ext SysInfoType5-v4b0ext-IEs OPTIONAL, + -- Extension mechanism for non- rel-4 information + v590NonCriticalExtensions SEQUENCE { + sysInfoType5-v590ext SysInfoType5-v590ext-IEs OPTIONAL, + v650NonCriticalExtensions SEQUENCE { + sysInfoType5-v650ext SysInfoType5-v650ext-IEs OPTIONAL, + v680NonCriticalExtensions SEQUENCE { + sysInfoType5-v680ext SysInfoType5-v680ext-IEs OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + sysInfoType5-v690ext SysInfoType5-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + sysInfoType5-v770ext SysInfoType5-v770ext-IEs, + v860NonCriticalExtensions SEQUENCE { + sysInfoType5-v860ext SysInfoType5-v860ext-IEs, + v890NonCriticalExtensions SEQUENCE { + sysInfoType5-v890ext SysInfoType5-v890ext-IEs, + v8b0NonCriticalExtensions SEQUENCE { + sysInfoType5-v8b0ext + SysInfoType5-v8b0ext-IEs, + v8d0NonCriticalExtensions SEQUENCE { + sysInfoType5-v8d0ext + SysInfoType5-v8d0ext-IEs, + va40NonCriticalExtensions SEQUENCE { + sysInfoType5-va40ext + SysInfoType5-va40ext-IEs, + va80NonCriticalExtensions SEQUENCE { + sysInfoType5-va80ext SysInfoType5-va80ext-IEs, + vb50NonCriticalExtensions + SysInfoType5-NonCriticalExtensions-vb50-IEs + OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType5-v4b0ext-IEs ::= SEQUENCE { + --The following IE PNBSCH-Allocation-r4 shall be used for 3.84Mcps TDD only. + pNBSCH-Allocation-r4 PNBSCH-Allocation-r4 OPTIONAL, + -- In case of TDD, the following IE is included instead of the + -- IE up-IPDL-Parameter in up-OTDOA-AssistanceData. + openLoopPowerControl-IPDL-TDD OpenLoopPowerControl-IPDL-TDD-r4 OPTIONAL, +-- If SysInfoType5 is sent to describe a 1.28Mcps TDD cell, the IE PRACH-RACH-Info included in +-- PRACH-SystemInformationList shall be ignored, the IE PRACH-Partitioning and the +-- IE rach-TransportFormatSet shall be absent and the corresponding IE in the following +-- PRACH-SystemInformationList-LCR-r4 shall be used + prach-SystemInformationList-LCR-r4 PRACH-SystemInformationList-LCR-r4 OPTIONAL, + tdd128SpecificInfo SEQUENCE { + pusch-SysInfoList-SFN PUSCH-SysInfoList-SFN-LCR-r4 OPTIONAL, + pdsch-SysInfoList-SFN PDSCH-SysInfoList-SFN-LCR-r4 OPTIONAL, + pCCPCH-LCR-Extensions PrimaryCCPCH-Info-LCR-r4-ext OPTIONAL, + sCCPCH-LCR-ExtensionsList SCCPCH-SystemInformationList-LCR-r4-ext + } OPTIONAL, + frequencyBandIndicator RadioFrequencyBandFDD OPTIONAL +} + +SysInfoType5-v590ext-IEs ::= SEQUENCE { + hcr-r5-SpecificInfo SEQUENCE { + pusch-SysInfoList-SFN PUSCH-SysInfoList-SFN-HCR-r5 OPTIONAL, + pdsch-SysInfoList-SFN PDSCH-SysInfoList-SFN-HCR-r5 OPTIONAL + } OPTIONAL +} + +SysInfoType5-v650ext-IEs ::= SEQUENCE { + frequencyBandIndicator2 RadioFrequencyBandFDD2 +} + +SysInfoType5-v680ext-IEs ::= SEQUENCE { + -- TABULAR: HSDPA Cell Indicator is MD in tabular description + -- Default value is 'HSDPA Capability not indicated' + hsdpa-CellIndicator ENUMERATED { hsdpa-CapableCell } OPTIONAL +} + +SysInfoType5-v690ext-IEs ::= SEQUENCE { + -- TABULAR: E-DCH Cell Indicator is MD in tabular description + -- Default value is 'E-DCH Capability not indicated' + edch-CellIndicator ENUMERATED { edch-CapableCell } OPTIONAL, + sccpch-SystemInformation-MBMS CHOICE { + mcchOnSCCPCHusedForNonMBMS MBMS-MCCH-ConfigurationInfo-r6, + mcchOnSCCPCHusedOnlyForMBMS SCCPCH-SystemInformation-MBMS-r6 + } OPTIONAL, + additionalPRACH-TF-and-TFCS-CCCH-List AdditionalPRACH-TF-and-TFCS-CCCH-List OPTIONAL, + cBS-DRX-Level1Information-extension CBS-DRX-Level1Information-extension-r6 OPTIONAL +} + +SysInfoType5-v770ext-IEs ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + hs-dsch-CommonSystemInformation HS-DSCH-CommonSystemInformation, + hs-dsch-PagingSystemInformation HS-DSCH-PagingSystemInformation OPTIONAL + }, + tdd768 SEQUENCE { + pusch-SysInfoList-SFN PUSCH-SysInfoList-SFN-VHCR OPTIONAL, + pdsch-SysInfoList-SFN PDSCH-SysInfoList-VHCR-r7 OPTIONAL, + -- If SysInfoType5 is sent to configure a 7.68Mcps TDD cell, the 'prach-RACH-Info' in + -- IE PRACH-SystemInformationList shall be ignored, 'prach-Partitioning' shall be absent + -- and the corresponding IE in the following IE PRACH-SystemInformationList-VHCR-r7 + -- shall be used instead. + prach-SystemInformationList PRACH-SystemInformationList-VHCR-r7 OPTIONAL + }, + tdd128 SEQUENCE { + prach-SystemInformationList PRACH-SystemInformationList-LCR-v770ext OPTIONAL + } + } OPTIONAL, + -- If SysInfoType5 is sent to configure a 7.68 Mcps TDD cell (in any mode) or a 3.84 Mcps TDD + -- cell operating in MBSFN mode, IE SCCPCH-SystemInformationList-HCR-VHCR-r7 is used, otherwise + -- IE SCCPCH-SystemInformationList-r6 is used. + sccpch-SystemInformationList SCCPCH-SystemInformationList-HCR-VHCR-r7 OPTIONAL, + sccpch-SystemInformation-MBMS CHOICE { + -- If choice is 'mcchOnSCCPCHusedForNonMBMS', IE MBMS-MCCH-ConfigurationInfo-r6 is used. + -- If choice is 'mcchOnSCCPCHusedOnlyForMBMS', IE MBMS-MCCH-ConfigurationInfo-r7 is used + -- to configure a 7.68Mcps TDD cell or a cell operating in MBSFN mode, otherwise IE + -- SCCPCH-SystemInformation-MBMS-r6 is used. + mcchOnSCCPCHusedOnlyForMBMS SCCPCH-SystemInformation-MBMS-r7 + } OPTIONAL, + tDD-MBSFNInformation TDD-MBSFNInformation OPTIONAL +} + +SysInfoType5-v860ext-IEs ::= SEQUENCE { + -- The field 'dummy' shall be marked absent in SysInfoType5 and SysInfoType5bis. A failure to + -- comply with this requirement may prevent the UE to receive any service in the cell. The UE + -- may treat the cell as barred. + dummy SEQUENCE {} OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + hs-dsch-DrxCellfach-info HS-DSCH-DrxCellfach-info OPTIONAL + }, + tdd128 SEQUENCE { + hs-dsch-CommonSysInfo SEQUENCE { + hs-dsch-CommonSystemInformation HS-DSCH-CommonSystemInformation-TDD128, + hs-dsch-PagingSystemInformation HS-DSCH-PagingSystemInformation-TDD128 OPTIONAL + } OPTIONAL, + hs-dsch-DrxCellfach-info HS-DSCH-DrxCellfach-info-TDD128 OPTIONAL + } + } +} + +SysInfoType5-v890ext-IEs ::= SEQUENCE { + secondFrequencyInfo FrequencyInfoTDD OPTIONAL, + commonEDCHSystemInfo CommonEDCHSystemInfo OPTIONAL +} + +SysInfoType5-v8b0ext-IEs ::= SEQUENCE { + tresetUsageIndicator ENUMERATED { true } OPTIONAL, + upPCHpositionInfo UpPCHposition-LCR OPTIONAL +} + +SysInfoType5-v8d0ext-IEs ::= SEQUENCE { + commonEDCHSystemInfoFDD CommonEDCHSystemInfoFDD OPTIONAL +} + +SysInfoType5-va40ext-IEs ::= SEQUENCE { + frequencyBandsIndicatorSupport FrequencyBandsIndicatorSupport OPTIONAL, + frequencyBandIndicator3 RadioFrequencyBandFDD3 OPTIONAL +} + +SysInfoType5-va80ext-IEs ::= SEQUENCE { + multipleFrequencyBandIndicatorListFDD MultipleFrequencyBandIndicatorListFDD OPTIONAL +} + +SysInfoType5-NonCriticalExtensions-vb50-IEs::= SEQUENCE { + sysInfoType5-vb50ext SysInfoType5-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +SysInfoType5-vb50ext-IEs ::= SEQUENCE { + sib22indicator BOOLEAN, + cellUpdateMessageOptimisedEncoding ENUMERATED { true } OPTIONAL +} + +-- SysInfoType5bis uses the same structure as SysInfoType5 +SysInfoType5bis ::= SysInfoType5 + +SysInfoType6 ::= SEQUENCE { + -- Physical channel IEs + pich-PowerOffset PICH-PowerOffset, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + aich-PowerOffset AICH-PowerOffset, + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy CSICH-PowerOffset OPTIONAL + }, + tdd SEQUENCE { + -- If PDSCH/PUSCH is configured for 1.28Mcps TDD, pusch-SysInfoList-SFN, + -- pdsch-SysInfoList-SFN and openLoopPowerControl-TDD should be absent + -- and the info included in the tdd128SpecificInfo instead. + -- If PDSCH/PUSCH is configured for 7.68Mcps TDD, pusch-SysInfoList-SFN + -- and pdsch-SysInfoList-SFN should be absent and the info included in the + -- tdd768SpecificInfo instead. + -- If PDSCH/PUSCH is configured for 3.84Mcps TDD in R5, HCR-r5-SpecificInfo should + -- also be included. + pusch-SysInfoList-SFN PUSCH-SysInfoList-SFN OPTIONAL, + pdsch-SysInfoList-SFN PDSCH-SysInfoList-SFN OPTIONAL, + openLoopPowerControl-TDD OpenLoopPowerControl-TDD + } + }, + primaryCCPCH-Info PrimaryCCPCH-Info OPTIONAL, + prach-SystemInformationList PRACH-SystemInformationList OPTIONAL, + sCCPCH-SystemInformationList SCCPCH-SystemInformationList OPTIONAL, + cbs-DRX-Level1Information CBS-DRX-Level1Information OPTIONAL, + -- Conditional on any of the CTCH indicator IEs in + -- sCCPCH-SystemInformationList + -- Extension mechanism for non- release99 information + v4b0NonCriticalExtensions SEQUENCE { + sysInfoType6-v4b0ext SysInfoType6-v4b0ext-IEs OPTIONAL, + -- Extension mechanism for non- rel-4 information + v590NonCriticalExtensions SEQUENCE { + sysInfoType6-v590ext SysInfoType6-v590ext-IEs OPTIONAL, + v650nonCriticalExtensions SEQUENCE { + sysInfoType6-v650ext SysInfoType6-v650ext-IEs OPTIONAL, + v690nonCriticalExtensions SEQUENCE { + sysInfoType6-v690ext SysInfoType6-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + sysInfoType6-v770ext SysInfoType6-v770ext-IEs, + va40NonCriticalExtensions SEQUENCE { + sysInfoType6-va40ext SysInfoType6-va40ext-IEs, + va80NonCriticalExtensions SEQUENCE { + sysInfoType6-va80ext SysInfoType6-va80ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType6-v4b0ext-IEs ::= SEQUENCE { + -- openLoopPowerControl-IPDL-TDD is present only if IPDLs are applied for TDD + openLoopPowerControl-IPDL-TDD OpenLoopPowerControl-IPDL-TDD-r4 OPTIONAL, + -- If SysInfoType6 is sent to describe a 1.28Mcps TDD cell, the IE PRACH-RACH-Info included + -- in PRACH-SystemInformationList shall be ignored, the IE PRACH-Partitioning and the + -- IE rach-TransportFormatSet shall be absent and the corresponding IEs in the following + -- PRACH-SystemInformationList-LCR-r4 shall be used + prach-SystemInformationList-LCR-r4 PRACH-SystemInformationList-LCR-r4 OPTIONAL, + tdd128SpecificInfo SEQUENCE { + pusch-SysInfoList-SFN PUSCH-SysInfoList-SFN-LCR-r4 OPTIONAL, + pdsch-SysInfoList-SFN PDSCH-SysInfoList-SFN-LCR-r4 OPTIONAL, + pCCPCH-LCR-Extensions PrimaryCCPCH-Info-LCR-r4-ext OPTIONAL, + sCCPCH-LCR-ExtensionsList SCCPCH-SystemInformationList-LCR-r4-ext OPTIONAL + } OPTIONAL, + frequencyBandIndicator RadioFrequencyBandFDD OPTIONAL +} + +SysInfoType6-v590ext-IEs ::= SEQUENCE { + hcr-r5-SpecificInfo SEQUENCE { + pusch-SysInfoList-SFN PUSCH-SysInfoList-SFN-HCR-r5 OPTIONAL, + pdsch-SysInfoList-SFN PDSCH-SysInfoList-SFN-HCR-r5 OPTIONAL + } OPTIONAL +} + +SysInfoType6-v650ext-IEs ::= SEQUENCE { + frequencyBandIndicator2 RadioFrequencyBandFDD2 +} + +SysInfoType6-v690ext-IEs ::= SEQUENCE { + additionalPRACH-TF-and-TFCS-CCCH-List AdditionalPRACH-TF-and-TFCS-CCCH-List OPTIONAL +} + +SysInfoType6-v770ext-IEs ::= SEQUENCE { + tdd768SpecificInfo SEQUENCE { + pusch-SysInfoList-SFN PUSCH-SysInfoList-SFN-VHCR OPTIONAL, + pdsch-SysInfoList-SFN PDSCH-SysInfoList-VHCR-r7 OPTIONAL, + -- If SysInfoType6 is sent to configure a 7.68Mcps TDD cell, the 'prach-RACH-Info' in + -- IE PRACH-SystemInformationList shall be ignored, 'prach-Partitioning' shall be absent + -- and the corresponding IE in the following IE PRACH-SystemInformationList-VHCR-r7 + -- shall be used instead. + prach-SystemInformationList PRACH-SystemInformationList-VHCR-r7 OPTIONAL + } OPTIONAL, + -- If SysInfoType6 is sent to configure a 7.68 Mcps TDD cell, + -- IE SCCPCH-SystemInformationList-HCR-VHCR-r7 is used, otherwise + -- IE SCCPCH-SystemInformationList-r6 is used. + sccpch-SystemInformationList SCCPCH-SystemInformationList-HCR-VHCR-r7 OPTIONAL +} + +SysInfoType6-va40ext-IEs ::= SEQUENCE { + frequencyBandIndicator3 RadioFrequencyBandFDD3 OPTIONAL +} + +SysInfoType6-va80ext-IEs ::= SEQUENCE { + multipleFrequencyBandIndicatorListFDD MultipleFrequencyBandIndicatorListFDD OPTIONAL +} + +SysInfoType7 ::= SEQUENCE { + -- Physical channel IEs + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ul-Interference UL-Interference + }, + tdd NULL + }, + prach-Information-SIB5-List DynamicPersistenceLevelList, + prach-Information-SIB6-List DynamicPersistenceLevelList OPTIONAL, + expirationTimeFactor ExpirationTimeFactor OPTIONAL, + -- Extension mechanism for non- release99 information + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +-- This IE is not used in this version of the specification. +-- It was kept only for backwards compatibility reasons +SysInfoType8 ::= SEQUENCE { + -- User equipment IEs + -- dummy1, dummy2, dummy3 are not used in this version of the specification and + -- they should be ignored by the receiver. + dummy1 CPCH-Parameters, + -- Physical channel IEs + dummy2 CPCH-SetInfoList, + dummy3 CSICH-PowerOffset, + -- Extension mechanism for non- release99 information + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +-- This IE is not used in this version of the specification. +-- It was kept only for backwards compatibility reasons +SysInfoType9 ::= SEQUENCE { + -- Physical channel IEs + -- dummy is not used in this version of the specification and + -- it should be ignored by the receiver. + dummy CPCH-PersistenceLevelsList, + -- Extension mechanism for non- release99 information + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +-- This IE is not used in this version of the specification. +-- It was kept only for backwards compatibility reasons +SysInfoType10 ::= SEQUENCE { + -- User equipment IEs + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy DRAC-SysInfoList, + -- Extension mechanism for non- release99 information + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +SysInfoType11 ::= SEQUENCE { + sib12indicator BOOLEAN, + -- Measurement IEs + fach-MeasurementOccasionInfo FACH-MeasurementOccasionInfo OPTIONAL, + measurementControlSysInfo MeasurementControlSysInfo, + -- Extension mechanism for non- release99 information + v4b0NonCriticalExtensions SEQUENCE { + sysInfoType11-v4b0ext SysInfoType11-v4b0ext-IEs OPTIONAL, + v590NonCriticalExtension SEQUENCE { + sysInfoType11-v590ext SysInfoType11-v590ext-IEs, + v690NonCriticalExtensions SEQUENCE { + sysInfoType11-v690ext SysInfoType11-v690ext-IEs, + v6b0NonCriticalExtensions SEQUENCE { + sysInfoType11-v6b0ext SysInfoType11-v6b0ext-IEs, + v770NonCriticalExtensions SEQUENCE { + sysInfoType11-v770ext SysInfoType11-v770ext-IEs, + v7b0NonCriticalExtensions SEQUENCE { + sysInfoType11-v7b0ext SysInfoType11-v7b0ext-IEs, + v860NonCriticalExtensions SEQUENCE { + sysInfoType11-v860ext SysInfoType11-v860ext-IEs, + va80NonCriticalExtensions SEQUENCE { + sysInfoType11-va80ext SysInfoType11-va80ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType11-v4b0ext-IEs ::= SEQUENCE { + fach-MeasurementOccasionInfo-LCR-Ext FACH-MeasurementOccasionInfo-LCR-r4-ext OPTIONAL, + measurementControlSysInfo-LCR MeasurementControlSysInfo-LCR-r4-ext +} + +SysInfoType11-v590ext-IEs ::= SEQUENCE { + --The order of the list corresponds to the order of cell in newIntraFrequencyCellInfoList + newIntraFrequencyCellInfoList-v590ext SEQUENCE (SIZE (1..maxCellMeas)) OF + CellSelectReselectInfo-v590ext OPTIONAL, + --The order of the list corresponds to the order of cell in newInterFrequencyCellInfoList + newInterFrequencyCellInfoList-v590ext SEQUENCE (SIZE (1..maxCellMeas)) OF + CellSelectReselectInfo-v590ext OPTIONAL, + --The order of the list corresponds to the order of cell in newInterRATCellInfoList + newInterRATCellInfoList-v590ext SEQUENCE (SIZE (1..maxCellMeas)) OF + CellSelectReselectInfo-v590ext OPTIONAL, + intraFreqEventCriteriaList-v590ext Intra-FreqEventCriteriaList-v590ext OPTIONAL, + intraFreqReportingCriteria-1b-r5 IntraFreqReportingCriteria-1b-r5 OPTIONAL, + intraFreqEvent-1d-r5 IntraFreqEvent-1d-r5 OPTIONAL +} + +SysInfoType11-v690ext-IEs ::= SEQUENCE { + -- dummy is not used in this version of the specification. If received, the UE behaviour + -- is not specified. + dummy Dummy-InterFreqRACHReportingInfo OPTIONAL +} + +SysInfoType11-v6b0ext-IEs ::= SEQUENCE { + -- Measurement IEs + interFreqRACHReportingInfo InterFreqRACHReportingInfo OPTIONAL +} + +SysInfoType11-v770ext-IEs ::= SEQUENCE { + -- Measurement IEs + mbsfnFrequencyList MBSFNFrequencyList OPTIONAL +} + +SysInfoType11-v7b0ext-IEs ::= SEQUENCE { + -- Measurement IEs + newInterFreqCellList NewInterFreqCellList-v7b0ext OPTIONAL +} + +SysInfoType11-v860ext-IEs ::= SEQUENCE { + -- Measurement IEs + mbsfnFrequencyList MBSFNFrequencyList-v860ext OPTIONAL +} + +SysInfoType11-va80ext-IEs ::= SEQUENCE { + -- Measurement IEs + multipleFrequencyInfoListFDD MultipleFrequencyInfoListFDD OPTIONAL +} + +SysInfoType11bis ::= SEQUENCE { + -- Measurement IEs + measurementControlSysInfo MeasurementControlSysInfoExtension OPTIONAL, + measurementControlSysInfo-LCR MeasurementControlSysInfoExtension-LCR-r4 OPTIONAL, + measurementControlSysInfoExtensionAddon-r5 + MeasurementControlSysInfoExtensionAddon-r5 OPTIONAL, + -- Extension mechanism for non-release99 information + v7b0NonCriticalExtensions SEQUENCE { + sysInfoType11bis-v7b0ext SysInfoType11bis-v7b0ext-IEs, + v860NonCriticalExtensions SEQUENCE { + sysInfoType11bis-v860ext SysInfoType11bis-v860ext-IEs, + va80NonCriticalExtensions SEQUENCE { + sysInfoType11bis-va80ext SysInfoType11bis-va80ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType11bis-v7b0ext-IEs ::= SEQUENCE { + -- Measurement IEs + newInterFreqCellList NewInterFreqCellList-v7b0ext OPTIONAL +} + +SysInfoType11bis-v860ext-IEs ::= SEQUENCE { + -- UTRAN mobility IEs + csg-PSCSplitInfo CSG-PSCSplitInfo OPTIONAL, + csg-DedicatedFrequencyInfoList CSG-DedicatedFrequencyInfoList OPTIONAL +} + +SysInfoType11bis-va80ext-IEs ::= SEQUENCE { + -- Measurement IEs + multipleFrequencyInfoListFDD MultipleFrequencyInfoListFDD OPTIONAL +} + +SysInfoType12 ::= SEQUENCE { + -- Measurement IEs + fach-MeasurementOccasionInfo FACH-MeasurementOccasionInfo OPTIONAL, + measurementControlSysInfo MeasurementControlSysInfo, + -- Extension mechanism for non- release99 information + v4b0NonCriticalExtensions SEQUENCE { + sysInfoType12-v4b0ext SysInfoType12-v4b0ext-IEs OPTIONAL, + v590NonCriticalExtension SEQUENCE { + sysInfoType12-v590ext SysInfoType12-v590ext-IEs, + v690NonCriticalExtensions SEQUENCE { + sysInfoType12-v690ext SysInfoType12-v690ext-IEs, + v6b0NonCriticalExtensions SEQUENCE { + sysInfoType12-v6b0ext SysInfoType12-v6b0ext-IEs, + v7b0NonCriticalExtensions SEQUENCE { + sysInfoType12-v7b0ext SysInfoType12-v7b0ext-IEs, + va80NonCriticalExtensions SEQUENCE { + sysInfoType12-va80ext SysInfoType12-va80ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType12-v4b0ext-IEs ::= SEQUENCE { + fach-MeasurementOccasionInfo-LCR-Ext FACH-MeasurementOccasionInfo-LCR-r4-ext OPTIONAL, + measurementControlSysInfo-LCR MeasurementControlSysInfo-LCR-r4-ext +} + +SysInfoType12-v590ext-IEs ::= SEQUENCE { + --The order of the list corresponds to the order of cell in newIntraFrequencyCellInfoList + newIntraFrequencyCellInfoList-v590ext SEQUENCE (SIZE (1..maxCellMeas)) OF + CellSelectReselectInfo-v590ext OPTIONAL, + --The order of the list corresponds to the order of cell in newInterFrequencyCellInfoList + newInterFrequencyCellInfoList-v590ext SEQUENCE (SIZE (1..maxCellMeas)) OF + CellSelectReselectInfo-v590ext OPTIONAL, + --The order of the list corresponds to the order of cell in newInterRATCellInfoList + newInterRATCellInfoList-v590ext SEQUENCE (SIZE (1..maxCellMeas)) OF + CellSelectReselectInfo-v590ext OPTIONAL, + intraFreqEventCriteriaList-v590ext Intra-FreqEventCriteriaList-v590ext OPTIONAL, + intraFreqReportingCriteria-1b-r5 IntraFreqReportingCriteria-1b-r5 OPTIONAL, + intraFreqEvent-1d-r5 IntraFreqEvent-1d-r5 OPTIONAL +} + +SysInfoType12-v690ext-IEs ::= SEQUENCE { + -- dummy is not used in this version of the specification. If received, the UE behaviour + -- is not specified. + dummy Dummy-InterFreqRACHReportingInfo OPTIONAL +} + +SysInfoType12-v6b0ext-IEs ::= SEQUENCE { + -- Measurement IEs + interFreqRACHReportingInfo InterFreqRACHReportingInfo OPTIONAL +} + +SysInfoType12-v7b0ext-IEs ::= SEQUENCE { + -- Measurement IEs + newInterFreqCellList NewInterFreqCellList-v7b0ext OPTIONAL +} + +SysInfoType12-va80ext-IEs ::= SEQUENCE { + -- Measurement IEs + multipleFrequencyInfoListFDD MultipleFrequencyInfoListFDD OPTIONAL +} + +SysInfoType13 ::= SEQUENCE { + -- Core network IEs + cn-DomainSysInfoList CN-DomainSysInfoList, + -- User equipment IEs + ue-IdleTimersAndConstants UE-IdleTimersAndConstants OPTIONAL, + capabilityUpdateRequirement CapabilityUpdateRequirement OPTIONAL, + -- Extension mechanism for non- release99 information + v3a0NonCriticalExtensions SEQUENCE { + sysInfoType13-v3a0ext SysInfoType13-v3a0ext-IEs, + v4b0NonCriticalExtensions SEQUENCE { + sysInfoType13-v4b0ext SysInfoType13-v4b0ext-IEs, + -- Extension mechanism for non- release99 information + v770NonCriticalExtensions SEQUENCE { + sysInfoType13-v770ext SysInfoType13-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType13-v3a0ext-IEs ::= SEQUENCE { + ue-IdleTimersAndConstants-v3a0ext UE-IdleTimersAndConstants-v3a0ext +} + +SysInfoType13-v4b0ext-IEs ::= SEQUENCE { + capabilityUpdateRequirement-r4Ext CapabilityUpdateRequirement-r4-ext OPTIONAL +} + +SysInfoType13-v770ext-IEs ::= SEQUENCE { + capabilityUpdateRequirement CapabilityUpdateRequirement-v770ext OPTIONAL +} + +SysInfoType13-1 ::= SEQUENCE { + -- ANSI-41 IEs + ansi-41-RAND-Information ANSI-41-RAND-Information, + -- Extension mechanism for non- release99 information + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +SysInfoType13-2 ::= SEQUENCE { + -- ANSI-41 IEs + ansi-41-UserZoneID-Information ANSI-41-UserZoneID-Information, + -- Extension mechanism for non- release99 information + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +SysInfoType13-3 ::= SEQUENCE { + -- ANSI-41 IEs + ansi-41-PrivateNeighbourListInfo ANSI-41-PrivateNeighbourListInfo, + -- Extension mechanism for non- release99 information + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +SysInfoType13-4 ::= SEQUENCE { + -- ANSI-41 IEs + ansi-41-GlobalServiceRedirectInfo + ANSI-41-GlobalServiceRedirectInfo, + -- Extension mechanism for non- release99 information + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +SysInfoType14 ::= SEQUENCE { + -- Physical channel IEs + individualTS-InterferenceList IndividualTS-InterferenceList, + expirationTimeFactor ExpirationTimeFactor OPTIONAL, + -- Extension mechanism for non- release99 information + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +SysInfoType15 ::= SEQUENCE { + -- Measurement IEs + ue-positioning-GPS-CipherParameters UE-Positioning-CipherParameters OPTIONAL, + ue-positioning-GPS-ReferenceLocation ReferenceLocation, + ue-positioning-GPS-ReferenceTime UE-Positioning-GPS-ReferenceTime, + ue-positioning-GPS-Real-timeIntegrity BadSatList OPTIONAL, + -- Extension mechanism for non- release99 information + v4b0NonCriticalExtensions SEQUENCE { + sysInfoType15-v4b0ext SysInfoType15-v4b0ext-IEs, + -- Extension mechanism for non- release4 information + v770NonCriticalExtensions SEQUENCE { + sysInfoType15-v770ext SysInfoType15-v770ext-IEs, + va40NonCriticalExtensions SEQUENCE { + sysInfoType15-va40ext SysInfoType15-va40ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType15-v4b0ext-IEs ::= SEQUENCE { + up-Ipdl-Parameters-TDD UE-Positioning-IPDL-Parameters-TDD-r4-ext OPTIONAL +} + +SysInfoType15-v770ext-IEs ::= SEQUENCE { + -- Measurement IEs + ue-Positioning-GPS-ReferenceTime UE-Positioning-GPS-ReferenceTime-v770ext +} + +SysInfoType15-va40ext-IEs ::= SEQUENCE { + -- Measurement IEs + ue-Positioning-GPS-ReferenceTime UE-Positioning-GPS-ReferenceTime-va40ext +} + +SysInfoType15bis ::= SEQUENCE { + -- Measurement IEs + ue-positioning-GANSS-ReferencePosition ReferenceLocationGANSS, + ue-positioning-GANSS-ReferenceTime UE-Positioning-GANSS-ReferenceTime, + ue-positioning-GANSS-IonosphericModel UE-Positioning-GANSS-IonosphericModel OPTIONAL, + -- Extension mechanism for non-release99 information + v860NonCriticalExtensions SEQUENCE { + sysInfoType15bis-v860ext SysInfoType15bis-v860ext-IEs, + va40NonCriticalExtensions SEQUENCE { + sysInfoType15bis-va40ext SysInfoType15bis-va40ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType15bis-v860ext-IEs ::= SEQUENCE { + -- Measurement IEs + ue-Positioning-GANSS-AddIonoModel UE-Positioning-GANSS-AddIonoModel OPTIONAL, + ue-Positioning-GANSS-EarthOrientationPara + UE-Positioning-GANSS-EarthOrientPara OPTIONAL +} + +SysInfoType15bis-va40ext-IEs ::= SEQUENCE { + -- Measurement IEs + ue-positioning-GANSS-ReferenceTime UE-Positioning-GANSS-ReferenceTime-va40ext +} + +SysInfoType15-1 ::= SEQUENCE { + -- DGPS corrections + ue-positioning-GPS-DGPS-Corrections UE-Positioning-GPS-DGPS-Corrections, + -- Extension mechanism for non- release99 information + v920NonCriticalExtensions SEQUENCE { + sysInfoType15-1-v920ext SysInfoType15-1-v920ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +SysInfoType15-1-v920ext-IEs ::= SEQUENCE { + -- Measurement IEs + ue-positioning-GPS-DGPS-Corrections UE-Positioning-GPS-DGPS-Corrections-v920ext +} + +SysInfoType15-1bis ::= SEQUENCE { + -- Measurement IEs + ue-positioning-GANSS-DGANSS-Corrections UE-Positioning-DGANSSCorrections, + -- Extension mechanism for non-release99 information + v920NonCriticalExtensions SEQUENCE { + sysInfoType15-1bis-v920ext SysInfoType15-1bis-v920ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +SysInfoType15-1bis-v920ext-IEs ::= SEQUENCE { + -- Measurement IEs + ue-positioning-GANSS-DGANSS-Corrections UE-Positioning-DGANSSCorrections-v920ext +} + +SysInfoType15-2 ::= SEQUENCE { + -- Ephemeris and clock corrections + transmissionTOW GPS-TOW-1sec, + satID SatID, + ephemerisParameter EphemerisParameter, + -- Extension mechanism for non- release99 information + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +SysInfoType15-2bis ::= SEQUENCE { + -- Measurement IEs + ue-positioning-GANSS-navigationModel UE-Positioning-GANSS-NavigationModel, + -- Extension mechanism for non-release99 information + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +SysInfoType15-2ter ::= SEQUENCE { + -- Measurement IEs + ue-positioning-GANSS-AddNavigationModels UE-Positioning-GANSS-AddNavigationModels, + -- Extension mechanism for non-release99 information + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +SysInfoType15-3 ::= SEQUENCE { + -- Almanac and other data + transmissionTOW GPS-TOW-1sec, + ue-positioning-GPS-Almanac UE-Positioning-GPS-Almanac OPTIONAL, + ue-positioning-GPS-IonosphericModel UE-Positioning-GPS-IonosphericModel OPTIONAL, + ue-positioning-GPS-UTC-Model UE-Positioning-GPS-UTC-Model OPTIONAL, + satMask BIT STRING (SIZE (1..32)) OPTIONAL, + lsbTOW BIT STRING (SIZE (8)) OPTIONAL, + -- Extension mechanism for non- release99 information + va40NonCriticalExtensions SEQUENCE { + sysInfoType15-3-va40ext SysInfoType15-3-va40ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +SysInfoType15-3-va40ext-IEs ::= SEQUENCE { + -- Measurement IEs + ue-positioning-GPS-Almanac UE-Positioning-GPS-Almanac-va40ext OPTIONAL +} + +SysInfoType15-3bis ::= SEQUENCE { + -- Measurement IEs + ue-positioning-GANSS-Almanac UE-Positioning-GANSS-Almanac OPTIONAL, + ue-positioning-GANSS-TimeModels UE-Positioning-GANSS-TimeModels OPTIONAL, + ue-positioning-GANSS-UTC-Model UE-Positioning-GANSS-UTCModel OPTIONAL, + -- Extension mechanism for non-release99 information + v860NonCriticalExtensions SEQUENCE { + sysInfoType15-3bis-v860ext SysInfoType15-3bis-v860ext-IEs, + va40NonCriticalExtensions SEQUENCE { + sysInfoType15-3bis-va40ext SysInfoType15-3bis-va40ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType15-3bis-v860ext-IEs ::= SEQUENCE { + -- Measurement IEs + ue-Positioning-GANSS-Almanac UE-Positioning-GANSS-Almanac-v860ext OPTIONAL, + ue-Positioning-GANSS-AddUTCModels UE-Positioning-GANSS-AddUTCModels OPTIONAL, + ue-Positioning-GANSS-AuxiliaryInfo UE-Positioning-GANSS-AuxiliaryInfo OPTIONAL +} + +SysInfoType15-3bis-va40ext-IEs ::= SEQUENCE { + -- Measurement IEs + ue-Positioning-GANSS-Almanac UE-Positioning-GANSS-Almanac-va40ext OPTIONAL, + ue-positioning-GANSS-TimeModels UE-Positioning-GANSS-TimeModels-va40ext OPTIONAL +} + +SysInfoType15-4 ::= SEQUENCE { + -- Measurement IEs + ue-positioning-OTDOA-CipherParameters UE-Positioning-CipherParameters OPTIONAL, + ue-positioning-OTDOA-AssistanceData UE-Positioning-OTDOA-AssistanceData, + v3a0NonCriticalExtensions SEQUENCE { + sysInfoType15-4-v3a0ext SysInfoType15-4-v3a0ext, + -- Extension mechanism for non- release99 information + v4b0NonCriticalExtensions SEQUENCE { + sysInfoType15-4-v4b0ext SysInfoType15-4-v4b0ext, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType15-4-v3a0ext ::= SEQUENCE { + sfn-Offset-Validity SFN-Offset-Validity OPTIONAL +} + +SysInfoType15-4-v4b0ext ::= SEQUENCE { + ue-Positioning-OTDOA-AssistanceData-r4ext UE-Positioning-OTDOA-AssistanceData-r4ext OPTIONAL +} + +SysInfoType15-5 ::= SEQUENCE { + -- Measurement IEs + ue-positioning-OTDOA-AssistanceData-UEB UE-Positioning-OTDOA-AssistanceData-UEB, + v3a0NonCriticalExtensions SEQUENCE { + sysInfoType15-5-v3a0ext SysInfoType15-5-v3a0ext, + -- Extension mechanism for non- release99 information + v770NonCriticalExtensions SEQUENCE { + sysInfoType15-5-v770ext SysInfoType15-5-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType15-5-v3a0ext ::= SEQUENCE { + sfn-Offset-Validity SFN-Offset-Validity OPTIONAL +} + +SysInfoType15-5-v770ext-IEs ::= SEQUENCE { + ue-Positioning-OTDOA-AssistanceData-UEB-ext + UE-Positioning-OTDOA-AssistanceData-UEB-ext OPTIONAL +} + +SysInfoType15-6 ::= SEQUENCE { + -- Measurement IEs + ue-positioning-GANSS-TOD INTEGER (0..86399), + ue-positioning-GANSS-ReferenceMeasurementInformation + UE-Positioning-GANSS-ReferenceMeasurementInfo, + -- Extension mechanism for non-release99 information + va40NonCriticalExtensions SEQUENCE { + sysInfoType15-6-va40ext SysInfoType15-6-va40ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +SysInfoType15-6-va40ext-IEs ::= SEQUENCE { + ue-positioning-GANSS-ReferenceMeasurementInformation + UE-Positioning-GANSS-ReferenceMeasurementInfo-va40ext +} + +SysInfoType15-7 ::= SEQUENCE { + -- Measurement IEs + ue-positioning-GANSS-DataBitAssistance UE-Positioning-GANSS-Data-Bit-Assistance, + -- Extension mechanism for non-release99 information + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +SysInfoType15-8 ::= SEQUENCE { + -- Measurement IEs + ue-positioning-GANSS-DataCipheringInfo UE-Positioning-CipherParameters OPTIONAL, + ue-positioning-GANSS-realTimeIntegrity UE-Positioning-GANSS-RealTimeIntegrity OPTIONAL, + -- Extension mechanism for non-release99 information + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +SysInfoType16 ::= SEQUENCE { + -- Radio bearer IEs + preDefinedRadioConfiguration PreDefRadioConfiguration, + -- Extension mechanism for non- release99 information + v770NonCriticalExtensions SEQUENCE { + sysInfoType16-v770ext SysInfoType16-v770ext-IEs, + v920NonCriticalExtensions SEQUENCE { + sysInfoType16-v920ext SysInfoType16-v920ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType16-v770ext-IEs ::= SEQUENCE { + preDefinedRadioConfiguration PreDefRadioConfiguration-v770ext +} + +SysInfoType16-v920ext-IEs ::= SEQUENCE { + preDefinedRadioConfiguration PreDefRadioConfiguration-v920ext +} + +SysInfoType17 ::= SEQUENCE { + -- Physical channel IEs + -- If PDSCH/PUSCH is configured for 1.28Mcps or 7.68Mcps TDD, pusch-SysInfoList and + -- pdsch-SysInfoList should be absent and the info included in the respective + -- tdd128SpecificInfo or tdd768SpecificInfo instead. + -- If PDSCH/PUSCH is configured for 3.84Mcps TDD in R5, HCR-r5-SpecificInfo should also be + -- included. + pusch-SysInfoList PUSCH-SysInfoList OPTIONAL, + pdsch-SysInfoList PDSCH-SysInfoList OPTIONAL, + -- Extension mechanism for non- release99 information + v4b0NonCriticalExtensions SEQUENCE { + sysInfoType17-v4b0ext SysInfoType17-v4b0ext-IEs, + v590NonCriticalExtensions SEQUENCE { + sysInfoType17-v590ext SysInfoType17-v590ext-IEs OPTIONAL, + v770NonCriticalExtensions SEQUENCE { + sysInfoType17-v770ext SysInfoType17-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType17-v4b0ext-IEs ::= SEQUENCE { + tdd128SpecificInfo SEQUENCE { + pusch-SysInfoList PUSCH-SysInfoList-LCR-r4 OPTIONAL, + pdsch-SysInfoList PDSCH-SysInfoList-LCR-r4 OPTIONAL + } OPTIONAL +} + +SysInfoType17-v590ext-IEs ::= SEQUENCE { + hcr-r5-SpecificInfo SEQUENCE { + pusch-SysInfoList PUSCH-SysInfoList-HCR-r5 OPTIONAL, + pdsch-SysInfoList PDSCH-SysInfoList-HCR-r5 OPTIONAL + } OPTIONAL +} + +SysInfoType17-v770ext-IEs ::= SEQUENCE { + tdd768SpecificInfo SEQUENCE { + pusch-SysInfoList-SFN PUSCH-SysInfoList-SFN-VHCR OPTIONAL, + pdsch-SysInfoList-SFN PDSCH-SysInfoList-VHCR-r7 OPTIONAL + } OPTIONAL +} + +SysInfoType18 ::= SEQUENCE { + idleModePLMNIdentities PLMNIdentitiesOfNeighbourCells OPTIONAL, + connectedModePLMNIdentities PLMNIdentitiesOfNeighbourCells OPTIONAL, + -- Extension mechanism for non- release99 information + v6b0NonCriticalExtensions SEQUENCE { + sysInfoType18-v6b0ext SysInfoType18-v6b0ext, + v860NonCriticalExtensions SEQUENCE { + sysInfoType18-v860ext SysInfoType18-v860ext, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType18-v6b0ext ::= SEQUENCE { + idleModePLMNIdentitiesSIB11bis PLMNIdentitiesOfNeighbourCells OPTIONAL, + connectedModePLMNIdentitiesSIB11bis PLMNIdentitiesOfNeighbourCells OPTIONAL +} + +SysInfoType18-v860ext ::= SEQUENCE { + idleModePLMNIdentities PLMNIdentitiesOfNeighbourCells-v860ext OPTIONAL, + connectedModePLMNIdentities PLMNIdentitiesOfNeighbourCells-v860ext OPTIONAL +} + +SysInfoType19 ::= SEQUENCE { + -- Measurement IEs + utra-PriorityInfoList UTRA-PriorityInfoList, + gsm-PriorityInfoList GSM-PriorityInfoList OPTIONAL, + eutra-FrequencyAndPriorityInfoList EUTRA-FrequencyAndPriorityInfoList OPTIONAL, + -- Extension mechanism for non-release8 information + v920NonCriticalExtensions SEQUENCE { + sysInfoType19-v920ext SysInfoType19-v920ext, + va80NonCriticalExtensions SEQUENCE { + sysInfoType19-va80ext SysInfoType19-va80ext, + vb30NonCriticalExtensions SEQUENCE { + sysInfoType19-vb30ext SysInfoType19-vb30ext, + vb50NonCriticalExtensions SEQUENCE { + sysInfoType19-vb50ext SysInfoType19-vb50ext, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType19-v920ext ::= SEQUENCE { + utra-PriorityInfoList-v920ext UTRA-PriorityInfoList-v920ext, + eutra-FrequencyAndPriorityInfoList-v920ext EUTRA-FrequencyAndPriorityInfoList-v920ext +} + +SysInfoType19-va80ext ::= SEQUENCE { + multipleEutraFrequencyInfoList MultipleEUTRAFrequencyInfoList OPTIONAL +} + +SysInfoType19-vb30ext ::= SEQUENCE { + cell-fach-meas-ind ENUMERATED { high-priority-layers, all-layers } OPTIONAL +} + +SysInfoType19-vb50ext ::= SEQUENCE { + gsmTreselectionScalingFactor TreselectionScalingFactor2 OPTIONAL, + eutraTreselectionScalingFactor TreselectionScalingFactor2 OPTIONAL, + numberOfApplicableEARFCN INTEGER (0..7) OPTIONAL, + eutra-FrequencyAndPriorityInfoList-vb50ext EUTRA-FrequencyAndPriorityInfoList-vb50ext OPTIONAL, + eutra-FrequencyAndPriorityInfoExtensionList EUTRA-FrequencyAndPriorityInfoExtensionList OPTIONAL, + multipleEutraFrequencyInfoExtensionList MultipleEUTRAFrequencyInfoExtensionList OPTIONAL, + -- Measurement IEs + eutra-FrequencyRACHReportingInfo EUTRA-FrequencyRACHReportingInfo OPTIONAL +} + +SysInfoType20 ::= SEQUENCE { + hNBName HNBName OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +SysInfoType21 ::= SEQUENCE { + eab-Parameters EAB-Parameters OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +SysInfoType22 ::= SEQUENCE { +-- In the Tabular there are separate definitions for prach-PreambleForEnhancedUplinkListType1Ext +-- and prach-PreambleForEnhancedUplinkListType2Ext/prach-PreambleForEnhancedUplinkListType3Ext even +-- though the contents are the same. The only difference is in how the IE “Weight” is used in +-- calculating the weight for each signalled PRACH Control Parameters. +-- To simplify the ASN.1, a single definition is used here for all three cases. + prach-PreambleForEnhancedUplinkListType1Ext + PRACH-PreambleForEnhancedUplinkExtList OPTIONAL, + prach-PreambleForEnhancedUplinkListType2Ext + PRACH-PreambleForEnhancedUplinkExtList OPTIONAL, + prach-PreambleForEnhancedUplinkListType3Ext + PRACH-PreambleForEnhancedUplinkExtList OPTIONAL, + concurrent-Deployment-2ms-10ms-TTI Concurrent-Deployment-2ms-10ms-TTI OPTIONAL, + nodeB-Trigger-HS-DPCCH-Transmission NodeB-Trigger-HS-DPCCH-Transmission OPTIONAL, + fallback-R99-PRACH-info Fallback-R99-PRACH-info-IEs OPTIONAL, + commonEDCHResourceConfigInfoListExt CommonEDCHResourceConfigInfoListExt OPTIONAL, + hs-dsch-DrxCellfach-SecondDrx-info HS-DSCH-DrxCellfach-SecondDrx-info OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +SysInfoTypeSB1 ::= SEQUENCE { + -- Other IEs + sib-ReferenceList SIB-ReferenceList, + -- Extension mechanism for non- release99 information + v6b0NonCriticalExtensions SEQUENCE { + sysInfoTypeSB1-v6b0ext SysInfoTypeSB1-v6b0ext, + v860NonCriticalExtensions SEQUENCE { + sysInfoTypeSB1-v860ext SysInfoTypeSB1-v860ext, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoTypeSB1-v6b0ext ::= SEQUENCE { + extSIBTypeInfoSchedulingInfo-List ExtSIBTypeInfoSchedulingInfo-List OPTIONAL +} + +SysInfoTypeSB1-v860ext ::= SEQUENCE { + extSIBTypeInfoSchedulingInfo-List ExtSIBTypeInfoSchedulingInfo-List2 OPTIONAL, + extGANSS-SIBTypeInfoSchedulingInfoList + ExtGANSS-SIBTypeInfoSchedulingInfoList OPTIONAL +} + +SysInfoTypeSB2 ::= SEQUENCE { + -- Other IEs + sib-ReferenceList SIB-ReferenceList, + -- Extension mechanism for non- release99 information + v6b0NonCriticalExtensions SEQUENCE { + sysInfoTypeSB2-v6b0ext SysInfoTypeSB2-v6b0ext, + v860NonCriticalExtensions SEQUENCE { + sysInfoTypeSB2-v860ext SysInfoTypeSB2-v860ext, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoTypeSB2-v6b0ext ::= SEQUENCE { + extSIBTypeInfoSchedulingInfo-List ExtSIBTypeInfoSchedulingInfo-List OPTIONAL +} + +SysInfoTypeSB2-v860ext ::= SEQUENCE { + extSIBTypeInfoSchedulingInfo-List ExtSIBTypeInfoSchedulingInfo-List2 OPTIONAL, + extGANSS-SIBTypeInfoSchedulingInfoList + ExtGANSS-SIBTypeInfoSchedulingInfoList OPTIONAL +} + +TDD-UMTS-Frequency-List ::= SEQUENCE (SIZE (1..maxNumTDDFreqs)) OF + FrequencyInfoTDD + +UE-HistoryInformation ::= SEQUENCE { + ue-InactivityPeriod INTEGER (1..120), + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + ul-dataVolumeHistory DataVolumeHistory OPTIONAL, + dl-dataVolumeHistory DataVolumeHistory OPTIONAL +} + +-- For systemInformationBlockType11bis the Value Tag Info "CellValueTag" is used +ValueTagInfo ::= CHOICE { + none NULL, + cellValueTag CellValueTag, + plmn-ValueTag PLMN-ValueTag, + sIBOccurrenceIdentityAndValueTag SIBOccurrenceIdentityAndValueTag +} + +-- *************************************************** +-- +-- ANSI-41 INFORMATION ELEMENTS (10.3.9) +-- +-- *************************************************** + +ANSI-41-GlobalServiceRedirectInfo ::= ANSI-41-NAS-Parameter +ANSI-41-PrivateNeighbourListInfo ::= ANSI-41-NAS-Parameter +ANSI-41-RAND-Information ::= ANSI-41-NAS-Parameter +ANSI-41-UserZoneID-Information ::= ANSI-41-NAS-Parameter +ANSI-41-NAS-Parameter ::= BIT STRING (SIZE (1..2048)) + +Min-P-REV ::= BIT STRING (SIZE (8)) + +NAS-SystemInformationANSI-41 ::= ANSI-41-NAS-Parameter +NID ::= BIT STRING (SIZE (16)) + +P-REV ::= BIT STRING (SIZE (8)) + +SID ::= BIT STRING (SIZE (15)) + +-- *************************************************** +-- +-- MBMS INFORMATION ELEMENTS (10.3.9a) +-- +-- *************************************************** + +MBMS-AccessProbabilityFactor ::= ENUMERATED { + apf0, apf32, apf64, apf96, apf128, apf160, apf192, + apf224, apf256, apf288, apf320, apf352, apf384, apf416, + apf448, apf480, apf512, apf544, apf576, apf608, apf640, + apf672, apf704, apf736, apf768, apf800, apf832, apf864, + apf896, apf928, apf960, apf1000 } + +MBMS-CellGroupIdentity-r6 ::= BIT STRING (SIZE (12)) + +MBMS-CommonCCTrChIdentity ::= INTEGER (1..32) + +MBMS-CommonPhyChIdentity ::= INTEGER (1..32) + +MBMS-CommonRBIdentity ::= INTEGER (1..32) + +MBMS-CommonRBInformation-r6 ::= SEQUENCE { + commonRBIdentity MBMS-CommonRBIdentity, + pdcp-Info PDCP-Info-r4, + rlc-Info RLC-Info-MTCH-r6 +} + +MBMS-CommonRBInformationList-r6 ::= SEQUENCE (SIZE (1..maxMBMS-CommonRB)) OF + MBMS-CommonRBInformation-r6 + +MBMS-CommonTrChIdentity ::= INTEGER (1..32) + +MBMS-ConnectedModeCountingScope ::= SEQUENCE { + countingForUraPCH BOOLEAN, + countingForCellPCH BOOLEAN, + countingForCellFACH BOOLEAN +} + +MBMS-CurrentCell-SCCPCH-r6 ::= SEQUENCE { + sccpchIdentity MBMS-SCCPCHIdentity OPTIONAL, + secondaryCCPCH-Info MBMS-CommonPhyChIdentity, + softComb-TimingOffset MBMS-SoftComb-TimingOffset OPTIONAL, + -- If the IE transpCh-InfoCommonForAllTrCh is absent, the default TFCS as specified + -- in 14.10.1 applies + transpCh-InfoCommonForAllTrCh MBMS-CommonCCTrChIdentity OPTIONAL, + transpCHInformation MBMS-TrCHInformation-CurrList +} + +MBMS-CurrentCell-SCCPCHList-r6 ::= SEQUENCE (SIZE (1..maxSCCPCH)) OF + MBMS-CurrentCell-SCCPCH-r6 + +MBMS-FACHCarryingMTCH-List ::= SEQUENCE (SIZE (1..maxFACHPCH)) OF + TransportFormatSet + +MBMS-JoinedInformation-r6 ::= SEQUENCE { + p-TMSI P-TMSI-GSM-MAP OPTIONAL +} + +MBMS-L1CombiningSchedule-32 ::= SEQUENCE { + -- Actual L1 combining schedule values (offset, start, duration) = IE value * 4 + cycleOffset INTEGER (0..7) OPTIONAL, + mtch-L1CombiningPeriodList SEQUENCE (SIZE (1..maxMBMS-L1CP)) OF SEQUENCE { + periodStart INTEGER (0..7), + periodDuration INTEGER (1..8) + } +} + +MBMS-L1CombiningSchedule-64 ::= SEQUENCE { + -- Actual L1 combining schedule values (offset, start, duration) = IE value * 4 + cycleOffset INTEGER (0..15) OPTIONAL, + mtch-L1CombiningPeriodList SEQUENCE (SIZE (1..maxMBMS-L1CP)) OF SEQUENCE { + periodStart INTEGER (0..15), + periodDuration INTEGER (1..16) + } +} + +MBMS-L1CombiningSchedule-128 ::= SEQUENCE { + -- Actual L1 combining schedule values (offset, start, duration) = IE value * 4 + cycleOffset INTEGER (0..31) OPTIONAL, + mtch-L1CombiningPeriodList SEQUENCE (SIZE (1..maxMBMS-L1CP)) OF SEQUENCE { + periodStart INTEGER (0..31), + periodDuration INTEGER (1..32) + } +} + +MBMS-L1CombiningSchedule-256 ::= SEQUENCE { + -- Actual L1 combining schedule values (offset, start, duration) = IE value * 4 + cycleOffset INTEGER (0..63) OPTIONAL, + mtch-L1CombiningPeriodList SEQUENCE (SIZE (1..maxMBMS-L1CP)) OF SEQUENCE { + periodStart INTEGER (0..63), + periodDuration INTEGER (1..64) + } +} + +MBMS-L1CombiningSchedule-512 ::= SEQUENCE { + -- Actual L1 combining schedule values (offset, start, duration) = IE value * 4 + cycleOffset INTEGER (0..127) OPTIONAL, + mtch-L1CombiningPeriodList SEQUENCE (SIZE (1..maxMBMS-L1CP)) OF SEQUENCE { + periodStart INTEGER (0..127), + periodDuration INTEGER (1..128) + } +} + +MBMS-L1CombiningSchedule-1024 ::= SEQUENCE { + -- Actual L1 combining schedule values (offset, start, duration) = IE value * 4 + cycleOffset INTEGER (0..255) OPTIONAL, + mtch-L1CombiningPeriodList SEQUENCE (SIZE (1..maxMBMS-L1CP)) OF SEQUENCE { + periodStart INTEGER (0..255), + periodDuration INTEGER (1..256) + } +} + +MBMS-L1CombiningSchedule ::= CHOICE { + cycleLength-32 MBMS-L1CombiningSchedule-32, + cycleLength-64 MBMS-L1CombiningSchedule-64, + cycleLength-128 MBMS-L1CombiningSchedule-128, + cycleLength-256 MBMS-L1CombiningSchedule-256, + cycleLength-512 MBMS-L1CombiningSchedule-512, + cycleLength-1024 MBMS-L1CombiningSchedule-1024 +} + +MBMS-L1CombiningTransmTimeDiff ::= INTEGER (0..3) + +MBMS-L23Configuration ::= CHOICE { + sameAsCurrent SEQUENCE { + currentCell-SCCPCH MBMS-SCCPCHIdentity, + msch-ConfigurationInfo MBMS-MSCH-ConfigurationInfo-r6 OPTIONAL + }, + different SEQUENCE { + -- If the IE transpCh-InfoCommonForAllTrCh is absent, the default TFCS as specified + -- in 14.10.1 applies + transpCh-InfoCommonForAllTrCh MBMS-CommonCCTrChIdentity OPTIONAL, + transpCHInformation MBMS-TrCHInformation-NeighbList + } +} + +MBMS-LogicalChIdentity ::= INTEGER (1..15) + +MBMS-MCCH-ConfigurationInfo-r6 ::= SEQUENCE { + accessInfoPeriodCoefficient INTEGER (0..3), + repetitionPeriodCoefficient INTEGER (0..3), + modificationPeriodCoefficient INTEGER (7..10), + rlc-Info RLC-Info-MCCH-r6, + tctf-Presence MBMS-TCTF-Presence OPTIONAL +} + +MBMS-MICHConfigurationInfo-r6 ::= SEQUENCE { + michPowerOffset MBMS-MICHPowerOffset, + mode CHOICE { + fdd SEQUENCE { + channelisationCode256 ChannelisationCode256, + ni-CountPerFrame MBMS-NI-CountPerFrame, + sttd-Indicator BOOLEAN + }, + -- The CHOICE tdd384 is used for both tdd384 and tdd768. If IE + -- 'MBMS-MICHConfigurationInfo-v770ext' is not present, tdd384 applies. + tdd384 SEQUENCE { + timeslot TimeslotNumber, + midambleShiftAndBurstType MidambleShiftAndBurstType, + channelisationCode DL-TS-ChannelisationCode, + repetitionPeriodLengthOffset RepPerLengthOffset-MICH OPTIONAL, + mbmsNotificationIndLength MBMS-MICHNotificationIndLength DEFAULT mn4 + }, + tdd128 SEQUENCE { + timeslot TimeslotNumber-LCR-r4, + midambleShiftAndBurstType MidambleShiftAndBurstType-LCR-r4, + channelisationCodeList SEQUENCE (SIZE (1..2)) OF + DL-TS-ChannelisationCode, + repetitionPeriodLengthOffset RepPerLengthOffset-MICH OPTIONAL, + mbmsNotificationIndLength MBMS-MICHNotificationIndLength DEFAULT mn4 + } + } +} + +MBMS-MICHConfigurationInfo-v770ext ::= SEQUENCE { + mode CHOICE { + -- For tdd384, IE 'MidambleShiftAndBurstType-r7' replaces IE 'MidambleShiftAndBurstType' + -- in IE 'MBMS-MICHConfigurationInfo-r6'. IE 'MidambleShiftAndBurstType' shall be ignored. + tdd384 SEQUENCE { + midambleShiftAndBurstType MidambleShiftAndBurstType-r7 + }, + -- For tdd768, the CHIOCE tdd384 in IE 'MBMS-MICHConfigurationInfo-r6' applies, except + -- that IE 'MidambleShiftAndBurstType-VHCR' replaces IE 'MidambleShiftAndBurstType'. IE + -- 'MidambleShiftAndBurstType' shall be ignored. + tdd768 SEQUENCE { + midambleShiftAndBurstType MidambleShiftAndBurstType-VHCR + }, + tdd128 SEQUENCE { + mbsfnSpecialTimeSlot TimeSlotLCR-ext OPTIONAL + } + } +} + +MBMS-MICHConfigurationInfo-v890ext ::= SEQUENCE { + mode CHOICE { + imb384 SEQUENCE { + channelisationCode256 ChannelisationCode256, + ni-CountPerFrame MBMS-NI-CountPerFrame-IMB384 + } + } +} + +MBMS-MICHNotificationIndLength ::= ENUMERATED { mn4, mn8, mn16 } + +MBMS-MICHPowerOffset ::= INTEGER (-10..5) + +MBMS-ModifedService-r6 ::= SEQUENCE { + mbms-TransmissionIdentity MBMS-TransmissionIdentity, + mbms-RequiredUEAction MBMS-RequiredUEAction-Mod, + mbms-PreferredFrequency CHOICE { + mcch MBMS-PFLIndex, + dcch MBMS-PFLInfo + } OPTIONAL, + --dummy is not used. If received it shall be ignored. + dummy ENUMERATED { true } OPTIONAL, + continueMCCHReading BOOLEAN +} + +MBMS-ModifedServiceList-r6 ::= SEQUENCE (SIZE (1..maxMBMSservModif)) OF + MBMS-ModifedService-r6 + +MBMS-ModifiedService-v770ext ::= SEQUENCE { + mbsfnClusterFrequency MBSFN-ClusterFrequency-r7 OPTIONAL +} + +MBMS-ModifiedService-LCR-v7c0ext ::= SEQUENCE { + rbReleaseCause MBMS-PTM-RBReleaseCause-LCR-r7 OPTIONAL +} + +-- IE 'MBMS-ModifiedServiceList-v770ext' contains a list of extension data +-- associated with the MBMS transmission identities at the corresponding +-- positions in IE 'MBMS-ModifedServiceList-r6' +MBMS-ModifiedServiceList-v770ext ::= SEQUENCE (SIZE (1..maxMBMSservModif)) OF + MBMS-ModifiedService-v770ext + +-- IE 'MBMS-ModifiedServiceList-LCR-v7c0ext' contains a list of extension data +-- associated with the MBMS transmission identities at the corresponding +-- positions in IE 'MBMS-ModifedServiceList-r6' +MBMS-ModifiedServiceList-LCR-v7c0ext ::= SEQUENCE (SIZE (1..maxMBMSservModif)) OF + MBMS-ModifiedService-LCR-v7c0ext + +MBMS-MSCH-ConfigurationInfo-r6 ::= SEQUENCE { + mschShedulingInfo MBMS-MSCHSchedulingInfo OPTIONAL, + rlc-Info RLC-Info-MSCH-r6 OPTIONAL, + tctf-Presence MBMS-TCTF-Presence OPTIONAL +} + +MBMS-MSCHSchedulingInfo ::= CHOICE { + schedulingPeriod-32-Offset INTEGER (0..31), + schedulingPeriod-64-Offset INTEGER (0..63), + schedulingPeriod-128-Offset INTEGER (0..127), + schedulingPeriod-256-Offset INTEGER (0..255), + schedulingPeriod-512-Offset INTEGER (0..511), + schedulingPeriod-1024-Offset INTEGER (0..1023) +} + +MBMS-NeighbouringCellSCCPCH-r6 ::= SEQUENCE { + secondaryCCPCH-Info MBMS-CommonPhyChIdentity, + secondaryCCPCHPwrOffsetDiff MBMS-SCCPCHPwrOffsetDiff OPTIONAL, + layer1Combining CHOICE { + fdd SEQUENCE { + softComb-TimingOffset MBMS-SoftComb-TimingOffset, + mbms-L1CombiningTransmTimeDiff MBMS-L1CombiningTransmTimeDiff, + mbms-L1CombiningSchedule MBMS-L1CombiningSchedule OPTIONAL + }, + tdd NULL + } OPTIONAL, + mbms-L23Configuration MBMS-L23Configuration +} + +MBMS-NeighbouringCellSCCPCH-v770ext ::= SEQUENCE { + secondaryCCPCH-Info MBMS-CommonPhyChIdentity OPTIONAL, + secondaryCCPCH-InfoDiff SecondaryCCPCHInfoDiff-MBMS, + secondaryCCPCHPwrOffsetDiff MBMS-SCCPCHPwrOffsetDiff OPTIONAL, + layer1Combining CHOICE { + fdd SEQUENCE { + softComb-TimingOffset MBMS-SoftComb-TimingOffset, + mbms-L1CombiningTransmTimeDiff MBMS-L1CombiningTransmTimeDiff, + mbms-L1CombiningSchedule MBMS-L1CombiningSchedule OPTIONAL + }, + tdd NULL + } OPTIONAL, + mbms-L23Configuration MBMS-L23Configuration +} + +MBMS-NeighbouringCellSCCPCHList-r6 ::= SEQUENCE (SIZE (1..maxSCCPCH)) OF + MBMS-NeighbouringCellSCCPCH-r6 + +-- IE "MBMS-NeighbouringCellSCCPCHList-v770ext" may be received as an extension of the IE +-- "MBMS-NeighbouringCellSCCPCHList-r6". When both lists are received in the same message +-- and the total number of list elements is greater than constant value 'maxSCCPCH', the +-- UE behaviour is unspecified. +MBMS-NeighbouringCellSCCPCHList-v770ext ::= SEQUENCE (SIZE (1..maxSCCPCH)) OF + MBMS-NeighbouringCellSCCPCH-v770ext + +MBMS-NetworkStandardTimeInformation-LCR-v890ext ::= SEQUENCE { + networkStandardTime BIT STRING (SIZE (40)), + correlativeSFN INTEGER (0..4095) OPTIONAL +} + +MBMS-NI-CountPerFrame ::= ENUMERATED { ni18, ni36, ni72, ni144 } + +MBMS-NI-CountPerFrame-IMB384 ::= ENUMERATED { ni16, ni32, ni64, ni128 } + +MBMS-NumberOfNeighbourCells-r6 ::= INTEGER (0..32) + +MBMS-PFLIndex ::= INTEGER (1..maxMBMS-Freq) + +MBMS-PFLInfo ::= FrequencyInfo + +MBMS-PhyChInformation-IMB384 ::= SEQUENCE { + mbms-CommonPhyChIdentity MBMS-CommonPhyChIdentity, + secondaryCCPCHInfo-MBMS SecondaryCCPCHFrameType2Info +} + +MBMS-PhyChInformationList-IMB384 ::= SEQUENCE (SIZE (1..maxMBMS-CommonPhyCh)) OF + MBMS-PhyChInformation-IMB384 + +MBMS-PhyChInformation-r6 ::= SEQUENCE { + mbms-CommonPhyChIdentity MBMS-CommonPhyChIdentity, + secondaryCCPCHInfo-MBMS SecondaryCCPCHInfo-MBMS-r6 +} + +MBMS-PhyChInformation-r7 ::= SEQUENCE { + mbms-CommonPhyChIdentity MBMS-CommonPhyChIdentity, + secondaryCCPCHInfo-MBMS SecondaryCCPCHInfo-MBMS-r7 +} + +MBMS-PhyChInformationList-r6 ::= SEQUENCE (SIZE (1..maxMBMS-CommonPhyCh)) OF + MBMS-PhyChInformation-r6 + +MBMS-PhyChInformationList-r7 ::= SEQUENCE (SIZE (1..maxMBMS-CommonPhyCh)) OF + MBMS-PhyChInformation-r7 + +MBMS-PL-ServiceRestrictInfo-r6 ::= ENUMERATED { true } + +MBMS-PreferredFrequencyInfo-r6 ::= SEQUENCE { + mbmsPreferredFrequency INTEGER (1..maxMBMS-Freq) OPTIONAL, + layerConvergenceInformation CHOICE { + mbms-Qoffset MBMS-Qoffset, + mbms-HCSoffset INTEGER (0..7) + }, + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +MBMS-PreferredFrequencyList-r6 ::= SEQUENCE (SIZE (1..maxMBMS-Freq)) OF + MBMS-PreferredFrequencyInfo-r6 + +MBMS-PTMActivationTime-r6 ::= INTEGER (0..2047) + +MBMS-PTM-RBInformation-C ::= SEQUENCE { + rbInformation MBMS-CommonRBIdentity, + shortTransmissionID MBMS-ShortTransmissionID, + logicalChIdentity MBMS-LogicalChIdentity +} + +MBMS-PTM-RBInformation-CList ::= SEQUENCE (SIZE (1..maxRBperTrCh)) OF + MBMS-PTM-RBInformation-C + +MBMS-PTM-RBInformation-N ::= SEQUENCE { + shortTransmissionID MBMS-ShortTransmissionID, + logicalChIdentity MBMS-LogicalChIdentity, + layer1-CombiningStatus BOOLEAN} + +MBMS-PTM-RBInformation-NList ::= SEQUENCE (SIZE (1..maxRBperTrCh)) OF + MBMS-PTM-RBInformation-N + +MBMS-PTM-RBReleaseCause-LCR-r7 ::= ENUMERATED { + normalRelease, outOfMBMSServiceCoverageInRAN, + networkAbnormalRelease, + spare5, spare4, spare3, spare2, spare1 } + +MBMS-Qoffset ::= ENUMERATED { q4, q8, q12, q16, q20, q30, q40, qInfinity } + +MBMS-RequiredUEAction-Mod ::= ENUMERATED { + none, + acquireCountingInfo, + acquireCountingInfoPTM-RBsUnmodified, + acquirePTM-RBInfo, + requestPTPRB, + releasePTM-RB } + +MBMS-RequiredUEAction-UMod ::= ENUMERATED { + none, + acquirePTM-RBInfo, + requestPTPRB } + +MBMS-SCCPCHIdentity ::= INTEGER (1..maxSCCPCH) + +MBMS-SCCPCHPwrOffsetDiff ::= ENUMERATED { mcpo-minus6, mcpo-minus3, mcpo-plus3, mcpo-plus6 } + +MBMS-SelectedServiceInfo ::= SEQUENCE { + status CHOICE { + none NULL, + some MBMS-SelectedServicesListFull + } +} + +MBMS-SelectedServicesListFull ::= SEQUENCE (SIZE (1..maxMBMSservSelect)) OF + MBMS-ServiceIdentity-r6 + +MBMS-SelectedServicesListShort ::= SEQUENCE (SIZE (1..maxMBMSservSelect)) OF + MBMS-ShortTransmissionID + +MBMS-SelectedServicesShort ::= SEQUENCE { + mbms-SelectedServicesList MBMS-SelectedServicesListShort, + modificationPeriodIdentity INTEGER (0..1) +} + +MBMS-ServiceAccessInfo-r6 ::= SEQUENCE { + shortTransmissionID MBMS-ShortTransmissionID, + accessprobabilityFactor-Idle MBMS-AccessProbabilityFactor, + accessprobabilityFactor-Connected MBMS-AccessProbabilityFactor OPTIONAL, + mbms-ConnectedModeCountingScope MBMS-ConnectedModeCountingScope +} + +MBMS-ServiceAccessInfoList-r6 ::= SEQUENCE (SIZE (1..maxMBMSservCount)) OF + MBMS-ServiceAccessInfo-r6 + +MBMS-ServiceIdentity-r6 ::= SEQUENCE { + serviceIdentity OCTET STRING (SIZE (3)), + plmn-Identity CHOICE { + -- The 'sameAsMIB-PLMN-Id' choice refers to the 'PLMN Identity' (R99) in MIB. + sameAsMIB-PLMN-Id NULL, + other CHOICE { + -- The 'sameAsMIB-MultiPLMN-Id' choice refers to one of the (1..5) PLMN Identities + -- provided in the 'Multiple PLMN List' (REL-6) in MIB. + sameAsMIB-MultiPLMN-Id INTEGER (1..5), + explicitPLMN-Id PLMN-Identity + } + } +} + +MBMS-ServiceSchedulingInfo-r6 ::= SEQUENCE { + mbms-TransmissionIdentity MBMS-TransmissionIdentity, + mbms-ServiceTransmInfoList MBMS-ServiceTransmInfoList OPTIONAL, + nextSchedulingperiod INTEGER (0..31) +} + +MBMS-ServiceSchedulingInfoList-r6 ::= SEQUENCE (SIZE (1..maxMBMSservSched)) OF + MBMS-ServiceSchedulingInfo-r6 + +MBMS-ServiceTransmInfo ::= SEQUENCE { + -- Actual values (start, duration) = IE values * 4 + start INTEGER (0..255), + duration INTEGER (1..256) +} + +MBMS-ServiceTransmInfoList ::= SEQUENCE (SIZE (1..maxMBMSTransmis)) OF + MBMS-ServiceTransmInfo + +MBMS-SessionIdentity ::= OCTET STRING (SIZE (1)) + +MBMS-ShortTransmissionID ::= INTEGER (1..maxMBMSservUnmodif) + +MBMS-SIBType5-SCCPCH-r6 ::= SEQUENCE { + sccpchIdentity MBMS-SCCPCHIdentity, + transpCHInformation MBMS-TrCHInformation-SIB5List +} + +MBMS-SIBType5-SCCPCHList-r6 ::= SEQUENCE (SIZE (1..maxSCCPCH)) OF + MBMS-SIBType5-SCCPCH-r6 + +MBMS-SoftComb-TimingOffset ::= ENUMERATED { ms0, ms10, ms20, ms40 } + +MBMS-TCTF-Presence ::= ENUMERATED { false } + +MBMS-TimersAndCounters-r6 ::= SEQUENCE { + t-318 T-318 DEFAULT ms1000 +} + +MBMS-TransmissionIdentity ::= SEQUENCE { + mbms-ServiceIdentity MBMS-ServiceIdentity-r6, + mbms-SessionIdentity MBMS-SessionIdentity OPTIONAL +} + +MBMS-TranspChInfoForCCTrCh-r6 ::= SEQUENCE { + commonCCTrChIdentity MBMS-CommonCCTrChIdentity, + transportFormatCombinationSet TFCS +} + + +MBMS-TranspChInfoForEachCCTrCh-r6 ::= SEQUENCE (SIZE (1..maxMBMS-CommonCCTrCh)) OF + MBMS-TranspChInfoForCCTrCh-r6 + +MBMS-TranspChInfoForEachTrCh-r6 ::= SEQUENCE (SIZE (1..maxMBMS-CommonTrCh)) OF + MBMS-TranspChInfoForTrCh-r6 + +MBMS-TranspChInfoForTrCh-r6 ::= SEQUENCE { + commonTrChIdentity MBMS-CommonTrChIdentity, + transportFormatSet TransportFormatSet +} + +MBMS-TrCHInformation-Curr ::= SEQUENCE { + transpCh-Info MBMS-CommonTrChIdentity, + rbInformation MBMS-PTM-RBInformation-CList OPTIONAL, + msch-ConfigurationInfo MBMS-MSCH-ConfigurationInfo-r6 OPTIONAL +} + +MBMS-TrCHInformation-CurrList ::= SEQUENCE (SIZE (1..maxFACHPCH)) OF + MBMS-TrCHInformation-Curr + +MBMS-TrCHInformation-Neighb ::= SEQUENCE { + transpCh-Info MBMS-CommonTrChIdentity, + transpCh-CombiningStatus BOOLEAN, + rbInformation MBMS-PTM-RBInformation-NList OPTIONAL, + msch-ConfigurationInfo MBMS-MSCH-ConfigurationInfo-r6 OPTIONAL +} + +MBMS-TrCHInformation-NeighbList ::= SEQUENCE (SIZE (1..maxFACHPCH)) OF + MBMS-TrCHInformation-Neighb + +MBMS-TrCHInformation-SIB5 ::= SEQUENCE { + transpCh-Identity INTEGER (1..maxFACHPCH), + rbInformation MBMS-PTM-RBInformation-CList OPTIONAL, + msch-ConfigurationInfo MBMS-MSCH-ConfigurationInfo-r6 OPTIONAL +} + +MBMS-TrCHInformation-SIB5List ::= SEQUENCE (SIZE (1..maxFACHPCH)) OF + MBMS-TrCHInformation-SIB5 + +MBMS-UnmodifiedService-r6 ::= SEQUENCE { + mbms-TransmissionIdentity MBMS-TransmissionIdentity, + mbms-RequiredUEAction MBMS-RequiredUEAction-UMod, + mbms-PreferredFrequency MBMS-PFLIndex OPTIONAL +} + +MBMS-UnmodifiedServiceList-r6 ::= SEQUENCE (SIZE (1..maxMBMSservUnmodif)) OF + MBMS-UnmodifiedService-r6 + +MBMS-UnmodifiedService-v770ext ::= SEQUENCE { + mbsfnClusterFrequency MBSFN-ClusterFrequency-r7 OPTIONAL +} + +-- IE 'MBMS-UnmodifiedServiceList-v770ext' contains a list of extension data +-- associated with the MBMS transmission identities at the corresponding +-- positions in IE 'MBMS-UnmodifiedServiceList-r6' +MBMS-UnmodifiedServiceList-v770ext ::= SEQUENCE (SIZE (1..maxMBMSservUnmodif)) OF + MBMS-UnmodifiedService-v770ext + +MBSFN-ClusterFrequency-r7 ::= INTEGER (1..maxMBSFNClusters) + +MBSFNFrequency ::= SEQUENCE { + frequencyInfo FrequencyInfo, + -- IE "cellParameterID" is used only for MBSFN clusters operating in 1.28 Mcps TDD mode. + cellParametersID CellParametersID OPTIONAL +} + +MBSFNFrequency-v860ext ::= SEQUENCE { + imb-Indication ENUMERATED { true } OPTIONAL +} + +MBSFNFrequencyList ::= SEQUENCE (SIZE (0..maxMBSFNClusters)) OF + MBSFNFrequency + +-- List of extensions to the corresponding elements of IE "MBSFNFrequencyList" +MBSFNFrequencyList-v860ext ::= SEQUENCE (SIZE (0..maxMBSFNClusters)) OF + MBSFNFrequency-v860ext + +MBSFNOnlyService ::= ENUMERATED {true} + +MBSFNservicesNotNotified-r7 ::= SEQUENCE { + notificationOfAllMBSFNServicesInTheBand + ENUMERATED { true } OPTIONAL +} + +MBSFNInterFrequencyNeighbour-r7 ::= SEQUENCE { + mbsfnFrequency FrequencyInfo, + mbsfnServicesNotification CHOICE { + mbsfnServicesNotified NULL, + mbsfnServicesNotNotified MBSFNservicesNotNotified-r7 + } +} + +MBSFNInterFrequencyNeighbour-v860ext ::= SEQUENCE { + imb-Indication ENUMERATED { true } OPTIONAL +} + +MBSFN-InterFrequencyNeighbourList-r7 ::= SEQUENCE (SIZE (1..maxMBSFNClusters)) OF + MBSFNInterFrequencyNeighbour-r7 + +-- List of extensions to the corresponding elements of IE "MBSFN-InterFrequencyNeighbourList-r7" +MBSFN-InterFrequencyNeighbourList-v860ext ::= SEQUENCE (SIZE (1..maxMBSFNClusters)) OF + MBSFNInterFrequencyNeighbour-v860ext + +MBSFN-TDDInformation ::= SEQUENCE (SIZE (1..maxTS)) OF + MBSFN-TDDTimeSlotInfo + +MBSFN-TDDInformation-LCR ::= SEQUENCE (SIZE (1..maxMBSFNClusters)) OF + MBSFN-TDDTimeSlotInfo-LCR + +MBSFN-TDDTimeSlotInfo ::= SEQUENCE { + timeSlotNumber TimeslotNumber-LCR-r4, + cellParametersID CellParametersID +} + +MBSFN-TDDTimeSlotInfo-LCR ::= SEQUENCE { + frequencyIndex INTEGER (1..maxMBSFNClusters), + timeSlotList MBSFN-TDDInformation +} + +MBSFN-TDM-Info ::= SEQUENCE { + shortTransmissionID MBMS-ShortTransmissionID, + tDMPeriod INTEGER (2..9), + tDMOffset INTEGER (0..8), + tDMLength INTEGER (1..8) +} + +MBSFN-TDM-Info-List ::= SEQUENCE (SIZE (1..maxMBMSservUnmodif)) OF + MBSFN-TDM-Info + +hiPDSCHidentities INTEGER ::= 64 +hiPUSCHidentities INTEGER ::= 64 +hiRM INTEGER ::= 256 +maxAC INTEGER ::= 16 +maxAdditionalMeas INTEGER ::= 4 +maxASC INTEGER ::= 8 +maxASCmap INTEGER ::= 7 +maxASCpersist INTEGER ::= 6 +maxCCTrCH INTEGER ::= 8 +maxCellMeas INTEGER ::= 32 +maxCellMeasOnSecULFreq INTEGER ::= 32 +maxCellMeas-1 INTEGER ::= 31 +maxCellMeasOnSecULFreq-1 INTEGER ::= 31 +maxCNdomains INTEGER ::= 4 +maxCommonHRNTI INTEGER ::= 4 +maxCommonQueueID INTEGER ::= 2 +maxCPCHsets INTEGER ::= 16 +maxDedicatedCSGFreq INTEGER ::= 4 +maxDPCH-DLchan INTEGER ::= 8 +maxDPDCH-UL INTEGER ::= 6 +maxDRACclasses INTEGER ::= 8 +maxExcludedDetectedSetCells INTEGER ::= 64 +maxE-DCHMACdFlow INTEGER ::= 8 +maxE-DCHMACdFlow-1 INTEGER ::= 7 +maxMultipleFrequencyBandsFDD INTEGER ::= 8 +maxMultipleFrequencyBandsEUTRA INTEGER ::= 8 +maxEUTRACellPerFreq INTEGER ::= 16 +maxEUTRATargetFreqs INTEGER ::= 8 +maxEDCHRL INTEGER ::= 4 +maxEDCHRL-1 INTEGER ::= 3 +maxEDCHs INTEGER ::= 32 +maxEDCHs-1 INTEGER ::= 31 +maxEDCHTxPattern-TDD128 INTEGER ::= 4 -- maxEDCHTxPattern-TDD128 should be 3 +maxEDCHTxPattern-TDD128-1 INTEGER ::= 3 -- maxEDCHTxPattern-TDD128-1 should be 2 +maxERNTIgroup INTEGER ::= 32 +maxERNTIperGroup INTEGER ::= 2 +maxERUCCH INTEGER ::= 256 +maxFACHPCH INTEGER ::= 8 +maxFreq INTEGER ::= 8 +maxFreqBandsEUTRA INTEGER ::= 16 +maxFreqBandsFDD INTEGER ::= 8 +maxFreqBandsFDD2 INTEGER ::= 22 +maxFreqBandsFDD3 INTEGER ::= 86 +maxFreqBandsFDD-ext INTEGER ::= 15 -- maxFreqBandsFDD-ext ::= 22 - (maxFreqBandsFDD - 1) +maxFreqBandsFDD-ext2 INTEGER ::= 64 -- maxFreqBandsFDD-ext2 ::= 86 - maxFreqBandsFDD2 +maxFreqBandsFDD-ext3 INTEGER ::= 78 -- maxFreqBandsFDD-ext3 ::= 86 - maxFreqBandsFDD +maxFreqBandsIndicatorSupport INTEGER ::= 2 +maxFreqBandsTDD INTEGER ::= 4 +maxFreqBandsTDD-ext INTEGER ::= 16 +maxFreqBandsGSM INTEGER ::= 16 +maxFreqMeasWithoutCM INTEGER ::= 2 +maxGANSS INTEGER ::= 8 +maxGANSS-1 INTEGER ::= 7 +maxGANSSSat INTEGER ::= 64 +maxGANSSSat-1 INTEGER ::= 63 +maxGERAN-SI INTEGER ::= 8 +maxGSMTargetCells INTEGER ::= 32 +maxHNBNameSize INTEGER ::= 48 +maxHProcesses INTEGER ::= 8 +maxHS-SCCHLessTrBlk INTEGER ::= 4 +maxHSDSCHTBIndex INTEGER ::= 64 +maxHSDSCHTBIndex-tdd384 INTEGER ::= 512 +maxHSSCCHs INTEGER ::= 4 +maxHSSCCHs-1 INTEGER ::= 3 +maxHSSICH-TDD128 INTEGER ::= 4 +maxHSSICH-TDD128-1 INTEGER ::= 3 +maxInterSysMessages INTEGER ::= 4 +maxLoCHperRLC INTEGER ::= 2 +maxLoggedMeasReport INTEGER ::= 128 +maxMAC-d-PDUsizes INTEGER ::= 8 +maxMBMS-CommonCCTrCh INTEGER ::= 32 +maxMBMS-CommonPhyCh INTEGER ::= 32 +maxMBMS-CommonRB INTEGER ::= 32 +maxMBMS-CommonTrCh INTEGER ::= 32 +maxMBMS-Freq INTEGER ::= 4 +maxMBMS-L1CP INTEGER ::= 4 +maxMBMSservCount INTEGER ::= 8 +maxMBMSservModif INTEGER ::= 32 +maxMBMSservSched INTEGER ::= 16 +maxMBMSservSelect INTEGER ::= 8 +maxMBMSservUnmodif INTEGER ::= 64 +maxMBMSTransmis INTEGER ::= 4 +maxMBSFNClusters INTEGER ::= 16 +maxMeasCSGRange INTEGER ::= 4 +maxMeasEvent INTEGER ::= 8 +maxMeasEventOnSecULFreq INTEGER ::= 8 +maxMeasIntervals INTEGER ::= 3 +maxMeasOccasionPattern INTEGER ::= 5 +maxMeasOccasionPattern-1 INTEGER ::= 4 +maxMeasParEvent INTEGER ::= 2 +maxNonContiguousMultiCellCombinations INTEGER ::= 3 +maxNumCDMA2000Freqs INTEGER ::= 8 +maxNumE-AGCH INTEGER ::= 4 +maxNumE-HICH INTEGER ::= 4 +maxNumEUTRAFreqs INTEGER ::= 8 +maxNumEUTRAFreqs-FACH INTEGER ::= 4 +maxNumGSMCellGroup INTEGER ::= 16 +maxNumGSMFreqRanges INTEGER ::= 32 +maxNumFDDFreqs INTEGER ::= 8 +maxNumANRLoggedItems INTEGER ::= 4 +maxnumLoggedMeas INTEGER ::= 8 +maxNumMDTPLMN INTEGER ::= 15 +maxNumTDDFreqs INTEGER ::= 8 +maxNoOfMeas INTEGER ::= 16 +maxOtherRAT INTEGER ::= 15 +maxOtherRAT-16 INTEGER ::= 16 +maxPage1 INTEGER ::= 8 +maxPCPCH-APsig INTEGER ::= 16 +maxPCPCH-APsubCh INTEGER ::= 12 +maxPCPCH-CDsig INTEGER ::= 16 +maxPCPCH-CDsubCh INTEGER ::= 12 +maxPCPCH-SF INTEGER ::= 7 +maxPCPCHs INTEGER ::= 64 +maxPDCPAlgoType INTEGER ::= 8 +maxPDSCH INTEGER ::= 8 +maxPDSCH-TFCIgroups INTEGER ::= 256 +maxPRACH INTEGER ::= 16 +maxPRACH-EUL INTEGER ::= 4 +maxPRACH-FPACH INTEGER ::= 8 +maxPredefConfig INTEGER ::= 16 +maxPrio INTEGER ::= 8 +maxPrio-1 INTEGER ::= 7 +maxPUSCH INTEGER ::= 8 +maxQueueIDs INTEGER ::= 8 +maxRABsetup INTEGER ::= 16 +maxRAT INTEGER ::= 16 +maxRB INTEGER ::= 32 +maxRBallRABs INTEGER ::= 27 +maxRBMuxOptions INTEGER ::= 8 +maxRBperRAB INTEGER ::= 8 +maxRBperTrCh INTEGER ::= 16 +maxReportedEUTRACellPerFreq INTEGER ::= 4 +maxReportedEUTRAFreqs INTEGER ::= 4 +maxReportedGSMCells INTEGER ::= 8 +maxRL INTEGER ::= 8 +maxRL-1 INTEGER ::= 7 +maxRLCPDUsizePerLogChan INTEGER ::= 32 +maxRFC3095-CID INTEGER ::= 16384 +maxROHC-PacketSizes-r4 INTEGER ::= 16 +maxROHC-Profile-r4 INTEGER ::= 8 +maxRxPatternForHSDSCH-TDD128 INTEGER ::= 4 -- maxRxPatternForHSDSCH-TDD128 should be 3 +maxRxPatternForHSDSCH-TDD128-1 INTEGER ::= 3 -- maxRxPatternForHSDSCH-TDD128-1 should be 2 +maxSat INTEGER ::= 16 +maxSatClockModels INTEGER ::= 4 +maxSCCPCH INTEGER ::= 16 +maxSgnType INTEGER ::= 8 +maxSIB INTEGER ::= 32 +maxSIB-FACH INTEGER ::= 8 +maxSIBperMsg INTEGER ::= 16 +maxSIrequest INTEGER ::= 4 +maxSRBsetup INTEGER ::= 8 +maxSystemCapability INTEGER ::= 16 +maxTDD128Carrier INTEGER ::= 6 +maxTDD128Carrier-1 INTEGER ::= 5 +maxTbsForHSDSCH-TDD128 INTEGER ::= 4 +maxTbsForHSDSCH-TDD128-1 INTEGER ::= 3 +maxTF INTEGER ::= 32 +maxTF-CPCH INTEGER ::= 16 +maxTFC INTEGER ::= 1024 +maxTFCsub INTEGER ::= 1024 +maxTFCI-2-Combs INTEGER ::= 512 +maxTGPS INTEGER ::= 6 +maxTrCH INTEGER ::= 32 +-- maxTrCHpreconf should be 16 but has been set to 32 for compatibility +maxTrCHpreconf INTEGER ::= 32 +maxTS INTEGER ::= 14 +maxTS-1 INTEGER ::= 13 +maxTS-2 INTEGER ::= 12 +maxTS-LCR INTEGER ::= 6 +maxTS-LCR-1 INTEGER ::= 5 +maxURA INTEGER ::= 8 +maxURNTI-Group INTEGER ::= 8 + +END diff --git a/IMS_PART4_IWD_14wk37/IMS/10/IMS_CC_SubscriptionTestcases.ttcn b/IMS_PART4_IWD_14wk37/IMS/10/IMS_CC_SubscriptionTestcases.ttcn new file mode 100644 index 0000000..bdb245c --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/10/IMS_CC_SubscriptionTestcases.ttcn @@ -0,0 +1,81 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-02-26 18:34:54 +0100 (Wed, 26 Feb 2014) $ +// $Rev: 10686 $ +/******************************************************************************/ + +module IMS_CC_SubscriptionTestcases { + + import from CommonDefs all; + import from LibSip_SIPTypesAndValues all; + import from IMS_Component all; + import from IMS_ASP_TypeDefs all; + import from IMS_ASP_Templates all; + import from IMS_CommonParameters all; + import from IMS_CommonDefs all; + + import from IMS_SIP_Templates all; + import from IMS_CC_CommonFunctions all; + import from IMS_CommonFunctions all; + import from IMS_Procedures_Registration all; + + import from IMS_PTC_CoordMsg all; + import from IMS_CC_Parameters all; + + //============================================================================ + /* + * @desc REFERENCE TS 34.229-1 clause 10.1 + * @status APPROVED (IMS) + */ + function f_TC_10_1_IMS() runs on IMS_PTC + { + var IMS_DATA_REQ v_IMS_DATA_REQ; + var REGISTER_Request v_RegisterReq; + var SUBSCRIBE_Request v_SubscribeReq; + var charstring v_CallId; + var IMS_SecurityScheme_Type v_SecurityScheme := f_IMS_SecurityScheme((pc_IMS_GIBA_Sec and not pc_IMS_Sec) or px_UEwithSIM); + var integer v_RetryT := 60; // seconds + + f_IMS_CC_Preamble(IPCAN_SignallingOnly, IMS_NULL, v_SecurityScheme); + f_IMS_CC_StartSignalling(IPCAN_InitialRegistration); + + if (f_IMS_PTC_SecurityScheme_IsGiba()) { + v_RegisterReq := f_IMS_Register_GIBA(); // Annex C.2a steps 1 to 5 + } else { + v_RegisterReq := f_IMS_Register_NonGIBA(); // Annex C.2 steps 1 to 7 + } + + f_IMS_TestBody_Set(true); + + // Steps 1 + // @siclog "Step 1" siclog@ + v_IMS_DATA_REQ := f_IMS_SUBSCRIBE_Request(); + v_SubscribeReq := v_IMS_DATA_REQ.Request.Subscribe; + v_CallId := v_SubscribeReq.msgHeader.callId.callid; + + // Steps 2 + // @siclog "Step 2" siclog@ + IMS_Server.send(cas_IMS_DATA_RSP(f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo), + cs_Response(c_statusLine503, f_IMS_CommonResponse_503_MessageHeaderTX(v_SubscribeReq.msgHeader, cs_RetryAfter(v_RetryT))))); + + f_Delay(int2float(v_RetryT) * 0.9); // - 10 % + f_IMS_PreliminaryPass(__FILE__, __LINE__, ""); + + // Steps 4 and 5 + // @siclog "Step 4 - 5" siclog@ + v_SubscribeReq := f_IMS_Register_SubscribeNotify(v_RegisterReq); + if (v_SubscribeReq.msgHeader.callId.callid == v_CallId) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "CallId shall be different"); + } + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(IPCAN_InitialRegistration); + } + +} diff --git a/IMS_PART4_IWD_14wk37/IMS/11/IMS_CC_NotificationTestcases.ttcn b/IMS_PART4_IWD_14wk37/IMS/11/IMS_CC_NotificationTestcases.ttcn new file mode 100644 index 0000000..f726304 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/11/IMS_CC_NotificationTestcases.ttcn @@ -0,0 +1,168 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-05 19:27:02 +0200 (Fri, 05 Sep 2014) $ +// $Rev: 12079 $ +/******************************************************************************/ +module IMS_CC_NotificationTestcases { + + import from CommonDefs all; + import from LibSip_SIPTypesAndValues all; + import from IMS_Component all; + import from IMS_CommonParameters all; + import from IMS_CommonDefs all; + import from IMS_SIP_Templates all; + import from IMS_XML_Templates all; + import from IMS_ASP_TypeDefs all; + import from IMS_ASP_Templates all; + import from IMS_Procedures_Registration all; + import from IMS_CC_CommonFunctions all; + import from IMS_CommonFunctions all; + import from IMS_PTC_CoordMsg all; + import from IMS_IP_Config all; + import from urn_ietf_params_xml_ns_reginfo all; + + //============================================================================ + /* + * @desc REFERENCE TS 34.229-1 clause 11.1 + * @status APPROVED (IMS) + */ + function f_TC_11_1_IMS() runs on IMS_PTC + { + var REGISTER_Request v_RegisterReq; + var SUBSCRIBE_Request v_SubscribeReq; + var SipUrl v_ContactUrl; + var template (value) RegInfo_RegistrationList_Type v_Registrations; + var template (value) Reginfo_Type v_Reginfo; + var boolean v_ApplyGRUU := false; + var CharStringList_Type v_PublicUserIdentityList; + timer t_Wait := 60.0; + + f_IMS_CC_Preamble(IPCAN_SignallingOnly, IMS_NULL); + f_IMS_CC_StartSignalling(IPCAN_InitialRegistration); + + v_RegisterReq := f_IMS_Register(); + v_SubscribeReq := f_IMS_Register_SubscribeNotify(v_RegisterReq); + v_ContactUrl := f_MessageHeader_GetContactSipUrl(v_RegisterReq.msgHeader); + v_PublicUserIdentityList := f_IMS_PTC_ImsInfo_GetAllIMPUs(); /* @sic R5s130296 sic@ */ + + // NOTE: RRC connection is kept; this might be an artificial behaviour + + f_IMS_TestBody_Set(true); + + v_Registrations[0] := f_XML_RegistrationInfo(v_RegisterReq, v_PublicUserIdentityList[0], "a100", "980", terminated, rejected, -, v_ApplyGRUU); + v_Registrations[1] := f_XML_RegistrationInfo(v_RegisterReq, px_IMS_AssociatedTelUri, "a101", "981", terminated, rejected, -, v_ApplyGRUU); + v_Registrations[2] := f_XML_RegistrationInfo(v_RegisterReq, v_PublicUserIdentityList[1], "a102", "982", terminated, rejected, -, v_ApplyGRUU); + v_Registrations[3] := f_XML_RegistrationInfo(v_RegisterReq, v_PublicUserIdentityList[2], "a103", "983", terminated, rejected, -, v_ApplyGRUU); + v_Reginfo := f_XML_RegInfo(full, 1, v_Registrations); + + // @siclog "Step 1 - 2" siclog@ + f_IMS_Register_Notify(v_ContactUrl, v_SubscribeReq, v_Reginfo, 2, cs_SubscriptionState_Terminated); + + f_IMS_PreliminaryPass(__FILE__, __LINE__, "Step 2"); + + //Check: does the UE send a REGISTER message after sending 200 OK? @sic R5s140342 sic@ + t_Wait.start; + alt { + [] IMS_Server.receive(car_IMS_Register_Request(cr_REGISTER_Request)) + { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "UE sent a REGISTER message after sending 200 OK"); + } + [] t_Wait.timeout + { + f_IMS_PreliminaryPass(__FILE__, __LINE__, "test case 11.1"); + } + } + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(IPCAN_InitialRegistration, false); /* @sic R5s130901: handling of de-registration sic@ */ + } + + //============================================================================ + /* + * @desc REFERENCE TS 34.229-1 clause 11.2 + * @status APPROVED (IMS) + */ + function f_TC_11_2_IMS() runs on IMS_PTC + { + var SecurityClientParams_Type v_SecurityClientParams; + var IMS_DATA_REQ v_IMS_DATA_REQ; + var REGISTER_Request v_RegisterReq; + var SUBSCRIBE_Request v_SubscribeReq; + var charstring v_NW_AddrStr; + var SipUrl v_ContactUrl; + var template (value) Reginfo_Type v_XmlMessage; + var template (value) RegInfo_RegistrationList_Type v_Registrations; + var template (value) IMS_SecurityInfo_Type v_SecurityInfo; + var charstring v_PublicUserIdentity; + var boolean v_ApplyGRUU := false; + var integer v_NonceCount; + var integer v_ExpirationTime := 60; + var float v_ReRegistrationTime := int2float(v_ExpirationTime / 2); + timer t_TRegExpireMin := f_IMS_SetTimerToleranceMin(v_ReRegistrationTime); + timer t_TRegExpireMax := f_IMS_SetTimerToleranceMax(v_ReRegistrationTime); + + f_IMS_CC_Preamble(IPCAN_SignallingOnly, IMS_NULL, IMS_Security); + f_IMS_CC_StartSignalling(IPCAN_InitialRegistration); + + v_RegisterReq := f_IMS_Register_NonGIBA(); + v_SubscribeReq := f_IMS_Register_SubscribeNotify(v_RegisterReq); + v_ContactUrl := f_MessageHeader_GetContactSipUrl(v_RegisterReq.msgHeader); + v_PublicUserIdentity := f_IMS_PTC_ImsInfo_GetURI(firstId); // @sic R5s130266 change 1.1 sic@ + + f_IMS_TestBody_Set(true); + + v_NW_AddrStr := f_IMS_PTC_NW_Address_GetAddrStr(); /* @sic R5s130133 change 6: f_IMS_PTC_NW_Address_GetHostFormat replaced by f_IMS_PTC_NW_Address_GetAddrStr sic@ */ + + // Set the 60 seconds expiration time in the XML body + v_Registrations[0] := f_XML_RegistrationInfo(v_RegisterReq, v_PublicUserIdentity, "a100", "980", active, shortened, v_ExpirationTime, v_ApplyGRUU); + v_XmlMessage := f_XML_RegInfo(partial, 1, v_Registrations); + // @siclog "Step 1 - 2" siclog@ + f_IMS_Register_Notify(v_ContactUrl, v_SubscribeReq, v_XmlMessage, 2); + + t_TRegExpireMin.start; // @sic R5s130266 change 1.2 - MCC160 Implementation sic@ + t_TRegExpireMax.start; // @sic R5s130266 change 1.2 - MCC160 Implementation sic@ + + f_IMS_CC_ReleaseConnection(IPCAN_InitialRegistration); /* @sic R5s140561: needs to be after starting the timers sic@ */ + + f_IMS_CC_StartSignalling(IPCAN_MO_IMS_Signalling); + + // @siclog "Step 3" siclog@ + v_NonceCount := 2; + v_IMS_DATA_REQ := f_IMS_PTC_ReRegistration_WaitForRegistration(t_TRegExpireMin, t_TRegExpireMax, v_NonceCount); + v_RegisterReq := v_IMS_DATA_REQ.Request.Register; + + v_SecurityClientParams := f_IMS_PTC_ReRegistration_SecurityClientParamsGet(); + f_IMS_PTC_ReRegistration_SecurityClientParamsCheck(v_RegisterReq, v_SecurityClientParams); + + // store old security info to release it after re-authentication @sic R5130900 - MCC160 implementation sic@ + v_SecurityInfo := cs_IMS_SecurityInfo(f_IMS_PTC_Security_GetProtectedPorts(), + f_IMS_PTC_Security_GetSPIs(), + f_IMS_PTC_Security_GetIntegrityAlgorithm(), + f_IMS_PTC_Security_GetCipheringAlgorithm()); + + // @siclog "Step 4" siclog@ + f_IMS_Register_SecurityInit(v_RegisterReq, not4b tsc_IMS_AuthRAND); /* generate a new RAND */ + IMS_Server.send(cas_IMS_DATA_RSP(f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo), cs_Response(c_statusLine401, f_IMS_RegisterResponse_401_MessageHeaderTX(v_RegisterReq)))); + + // @siclog "Step 5" siclog@ + v_NonceCount := 1; // nonce counter is reset to 1 due to re-authentication @sic R5s130266 change 2 - MCC160 Implementation sic@ + v_IMS_DATA_REQ := f_IMS_REGISTER_SubsequentRequest(-, -, v_NonceCount); + v_RegisterReq := v_IMS_DATA_REQ.Request.Register; + + f_IMS_Register_SecurityRelease(v_SecurityInfo); // @sic R5s130900 - MCC160 implementation sic@ + + // @siclog "Step 6" siclog@ + IMS_Server.send(cas_IMS_DATA_RSP(f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo), cs_Response(c_statusLine200, f_IMS_RegisterResponse_200_MessageHeaderTX(v_RegisterReq)))); + f_IMS_PreliminaryPass(__FILE__, __LINE__, "test case 11.2"); + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(IPCAN_MO_IMS_Signalling); + } +} diff --git a/IMS_PART4_IWD_14wk37/IMS/12/IMS_CC_CallControlTestcases.ttcn b/IMS_PART4_IWD_14wk37/IMS/12/IMS_CC_CallControlTestcases.ttcn new file mode 100644 index 0000000..6a34bfb --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/12/IMS_CC_CallControlTestcases.ttcn @@ -0,0 +1,1548 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 22:08:20 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12181 $ +/******************************************************************************/ +module IMS_CC_CallControlTestcases { + + import from LibSip_SIPTypesAndValues all; + import from LibSip_SDPTypes all; + import from IP_ASP_TypeDefs all; + import from IMS_Component all; + import from IMS_ASP_TypeDefs all; + import from IMS_ASP_Templates all; + import from IMS_CommonParameters all; + import from IMS_SIP_Templates all; + import from IMS_MessageBody_Templates all; + import from IMS_XML_Templates all; + import from IMS_SDP_Templates all; + import from IMS_SDP_Messages all; + import from IMS_CC_CommonFunctions all; + import from IMS_Procedures_Registration all; + import from IMS_Procedures_CallControl all; + import from IMS_Procedures_Common all; + import from IMS_CommonFunctions all; + import from IMS_CommonTemplates all; + import from IMS_PTC_CoordMsg all; + import from IMS_IP_Config all; + import from IMS_CC_IPCAN_Coordination all; + import from CommonDefs all; + import from UpperTesterFunctions all; + + + //============================================================================ + // Annex C13 - SDP Messages + //---------------------------------------------------------------------------- + + function f_IMS_BuildSDP_AnnexC13_Step1(charstring p_Fmt1, + charstring p_Fmt2) runs on IMS_PTC return template (value) SDP_Message + { + // Build SDP record according 34.229-1 Annex C.13 step 1 + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var charstring v_IPAddrNW := f_IMS_PTC_RemoteAddress_GetAddrStr(); + var SDP_fmt_list v_Fmts := {p_Fmt1, p_Fmt2}; + var template (value) SDP_media_desc v_SDP_Media_Desc; + var integer v_BandwidthAS := 3; + var template (value) SDP_bandwidth_list v_Bandwidth_List_Media := cs_SDP_Bandwidth_List_Media(v_BandwidthAS, 0, 500); + var template (value) SDP_attribute_list v_SDP_Attribute_List := { + // media attributes: + cs_SDP_Attribute_rtpmap(p_Fmt1, cs_RTPMAP_Codec("t140", "1000")), + cs_SDP_Attribute_rtpmap(p_Fmt2, cs_RTPMAP_Codec("red", "1000")), + cs_SDP_Attribute_fmtp(p_Fmt2, {unstructured := "99/99/99"}), + cs_SDP_Attribute_ptime, + cs_SDP_Attribute_maxptime, + // precondition attributes: + cs_SDP_Attribute_curr_qos(c_local, c_sendrecv), + cs_SDP_Attribute_curr_qos(c_remote), + cs_SDP_Attribute_des_qos(c_mandatory, c_local), + cs_SDP_Attribute_des_qos(c_mandatory, c_remote) + }; + v_SDP_Media_Desc := cs_SDP_Media_Desc(cs_SDP_Media_Text(v_Fmts), + v_Bandwidth_List_Media, + v_SDP_Attribute_List); + + return cs_SDP_Message_Def(cs_SDP_Origin(-, -, v_AddrType, v_IPAddrNW), cs_SDP_Connection(v_AddrType, v_IPAddrNW), -, v_BandwidthAS, v_SDP_Media_Desc); /* @sic R5-144402: v_Sessionname removed sic@ */ + } + + function f_IMS_BuildSDP_AnnexC13_Step4(charstring p_Fmt1, + charstring p_Fmt2) runs on IMS_PTC return template (present) SDP_Message + { /* Build SDP record to be received from the UE at step 2 according to 34.229-1 Annex C.13 */ + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var template (present) charstring v_IPAddrOrigin := ?; + var template (present) charstring v_IPAddrConnection := ?; + var template (present) SDP_media_desc v_SDP_Media_Desc; + var template (present) SDP_attribute_list v_SDP_Attribute_List := { + // media attributes: + cr_SDP_Attribute_rtpmap(p_Fmt1, cr_RTPMAP_Codec("t140", "1000")), + cr_SDP_Attribute_rtpmap(p_Fmt2, cr_RTPMAP_Codec("red", "1000")), + cr_SDP_Attribute_fmtp(p_Fmt2), + // precondition attributes: + cr_SDP_Attribute_curr_qos(c_local, c_sendrecv), + cr_SDP_Attribute_curr_qos(c_remote, c_sendrecv), + cr_SDP_Attribute_des_qos(c_mandatory, c_local, c_sendrecv), + cr_SDP_Attribute_des_qos(c_optional, c_remote, c_sendrecv), + * + }; + + v_SDP_Media_Desc := cr_SDP_Media_Desc(cr_SDP_Media_Text(p_Fmt1, p_Fmt2), + cr_SDP_Connection(v_AddrType, v_IPAddrConnection), + cr_SDP_Bandwidth_List_Media(?, ?, ?), + v_SDP_Attribute_List); + return cr_SDP_Message_AnySession(v_AddrType, v_IPAddrOrigin, v_IPAddrConnection, v_SDP_Media_Desc); + } + + //============================================================================ + // Annex C15 - SDP Messages + //---------------------------------------------------------------------------- + + const charstring tsc_Fmtp_Red1000_Params := "99/99/99"; + + + function f_IMS_BuildSDP_AnnexC15_Step2() runs on IMS_PTC return template (present) SDP_Message + { /* Build SDP record to be received from the UE at step 2 according to 34.229-1 Annex C.15 */ + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var template (present) charstring v_IPAddrOrigin := ?; + var template (present) charstring v_IPAddrConnection := ?; + var template (present) SDP_media_desc v_SDP_Media_Desc; + var template (present) SDP_attribute_list v_SDP_Attribute_List := { + // media attributes: + cr_SDP_Attribute_rtpmap(-, cr_RTPMAP_Codec("t140", "1000")), + cr_SDP_Attribute_rtpmap(-, cr_RTPMAP_Codec("red", "1000")), + cr_SDP_Attribute_fmtp(-, crs_Fmtp_UnstructuredParams(tsc_Fmtp_Red1000_Params)), + // precondition attributes: + cr_SDP_Attribute_curr_qos(c_local, c_sendrecv), + cr_SDP_Attribute_curr_qos(c_remote, c_none), + cr_SDP_Attribute_des_qos(c_mandatory, c_local, c_sendrecv), + cr_SDP_Attribute_des_qos(c_optional, c_remote, c_sendrecv), + * + }; + + v_SDP_Media_Desc := cr_SDP_Media_Desc(cr_SDP_Media_Text, + cr_SDP_Connection(v_AddrType, v_IPAddrConnection), + cr_SDP_Bandwidth_List_Media(?, ?, ?), + v_SDP_Attribute_List); + return cr_SDP_Message_AnySession(v_AddrType, v_IPAddrOrigin, v_IPAddrConnection, v_SDP_Media_Desc); + } + + function f_IMS_BuildSDP_AnnexC15_Step5(SDP_Message p_SDP_MessageRx, + charstring p_Fmt1, + charstring p_Fmt2) runs on IMS_PTC return template (value) SDP_Message + { + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var charstring v_IPAddrOrigin := f_IMS_PTC_RemoteAddress_GetAddrStr(); + var template (value) SDP_media_desc v_SDP_Media_Desc; + var template (value) SDP_Message v_SDP_MessageTx; + var SDP_bandwidth_list v_Bandwidth_List_Media := p_SDP_MessageRx.bandwidth; + var SDP_fmt_list v_Fmts := {p_Fmt1, p_Fmt2}; + var template (value) SDP_attribute_list v_SDP_Attribute_List := { + // media attributes: + cs_SDP_Attribute_rtpmap(p_Fmt1, cs_RTPMAP_Codec("t140", "1000")), + cs_SDP_Attribute_rtpmap(p_Fmt2, cs_RTPMAP_Codec("red", "1000")), + cs_SDP_Attribute_fmtp(p_Fmt2, crs_Fmtp_UnstructuredParams(tsc_Fmtp_Red1000_Params)), // !!!! NOTE: there are no params specified in the prose (even though being mandatory) !!!! + // precondition attributes: + cs_SDP_Attribute_curr_qos(c_local, c_sendrecv), + cs_SDP_Attribute_curr_qos(c_remote, c_sendrecv), + cs_SDP_Attribute_des_qos(c_mandatory, c_local), + cs_SDP_Attribute_des_qos(c_mandatory, c_remote) + }; + v_SDP_Media_Desc := cs_SDP_Media_Desc(cs_SDP_Media_Text(v_Fmts), + v_Bandwidth_List_Media, + v_SDP_Attribute_List); + v_SDP_MessageTx := cs_SDP_Message_Def(cs_SDP_Origin(p_SDP_MessageRx.origin.session_id, p_SDP_MessageRx.origin.session_version, v_AddrType, v_IPAddrOrigin), cs_SDP_Connection(v_AddrType, v_IPAddrOrigin), p_SDP_MessageRx.session_name, -, v_SDP_Media_Desc); + + // prose says these must be the same too + v_SDP_MessageTx.origin.session_id := p_SDP_MessageRx.origin.session_id; + v_SDP_MessageTx.origin.session_version := p_SDP_MessageRx.origin.session_version; + + return v_SDP_MessageTx; + } + + //============================================================================ + // Annex C15 - Steps + //---------------------------------------------------------------------------- + + function f_IMS_MOCallSetup_AnnexC15_Steps2to6() runs on IMS_PTC return INVITE_Request + { + var template (present) SDP_Message v_SDP_MessageStep2 := f_IMS_BuildSDP_AnnexC15_Step2(); + var template (present) MessageHeader v_MessageHeader_Ack; + var template (value) MessageHeader v_MessageHeader_InviteResponse_200; + var template (value) SDP_Message v_SDP_MessageStep5; + var IMS_DATA_REQ v_IMS_INVITE_REQ; + var INVITE_Request v_InviteRequest; + var SDP_Message v_SDP_Message; + var template (value) IMS_RoutingInfo_Type v_RoutingInfo_DL; + var charstring v_Fmt1; + var charstring v_Fmt2; + var boolean v_PrackRequiredFor180Ringing := false; /* => there is no PRACK expected to acknowledge the 180 response */ + var boolean v_SrvccAlerting := false; /* as we have no voice call */ + + // Step 2. Receive INVITE Request + v_IMS_INVITE_REQ := f_IMS_INVITE_ReceiveRequest(A_2_1_A4, tsc_OptionTagList_precondition, -, -, -, -, -, -, v_SrvccAlerting); + v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(v_IMS_INVITE_REQ.RoutingInfo); + v_InviteRequest := v_IMS_INVITE_REQ.Request.Invite; + v_SDP_Message := f_IMS_SIP_SdpMessageBody_DecodeMatchAndCheckSDP(v_InviteRequest.messageBody, v_SDP_MessageStep2); + + // check media description: + v_Fmt1 := f_SDP_MediaDescr_GetMediaFormat(v_SDP_Message.media_list[0], cr_RTPMAP_Codec("t140", "1000")); + v_Fmt2 := f_SDP_MediaDescr_GetMediaFormat(v_SDP_Message.media_list[0], cr_RTPMAP_Codec("red", "1000"), {unstructured := "99/99/99"}); + if ((v_Fmt1 == "") or (v_Fmt2 == "")) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "invalid codec information"); + } + + // Step 3. SS sends a 100 Trying provisional response. + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine100, f_IMS_InviteResponse_100_MessageHeaderTX(v_InviteRequest)))); + // Step 4. SS sends a 180 Ringing. + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine180, f_IMS_InviteResponse_180_MessageHeaderTX(v_InviteRequest, -, v_PrackRequiredFor180Ringing, -, v_SrvccAlerting)))); + + // Step 5. Send 200 OK (response to INVITE) + v_MessageHeader_InviteResponse_200 := f_IMS_OtherResponse_200_MessageHeaderTX(v_InviteRequest.msgHeader); + v_SDP_MessageStep5 := f_IMS_BuildSDP_AnnexC15_Step5(v_SDP_Message, v_Fmt1, v_Fmt2); + + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine200, v_MessageHeader_InviteResponse_200, cs_MessageBody_SDP(v_SDP_MessageStep5)))); + + // Step 6. Finally, UE acknowledges call setup. + v_MessageHeader_Ack := f_IMS_AckRequest_MessageHeaderRX(v_InviteRequest, c_statusLine200); + IMS_Server.receive(car_IMS_Ack_Request(cr_ACK_Request(f_MessageHeader_GetContactSipUrl(v_InviteRequest.msgHeader), v_MessageHeader_Ack))); + + return v_InviteRequest; + } + + //============================================================================ + // Annex C25 - SDP Messages + //---------------------------------------------------------------------------- + + function f_IMS_BuildSDP_AnnexC25_Step2() runs on IMS_PTC return template (present) SDP_Message + { /* Build SDP record to be received from the UE at step 2 according to 34.229-1 Annex C.25 */ + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var template (present) charstring v_IPAddrOrigin := ?; + var template (present) charstring v_IPAddrAudio := ?; + var template (present) charstring v_IPAddrVideo := ?; + var template (present) SDP_media_desc v_SDP_Media_Desc_Audio; + var template (present) SDP_media_desc v_SDP_Media_Desc_Video; + var template (present) SDP_media_desc_list v_SDP_Media_Desc_List; + + var template (present) SDP_attribute_list v_SDP_Attribute_List_Audio := { + // media attributes: + cr_SDP_Attribute_rtpmap(-, cr_RTPMAP_AMR_8000), // @sic R5s130681 change 2 sic@ + cr_SDP_Attribute_fmtp(-, cr_AMR_Fmtp_DefaultParameters), /* @sic R5w140113, R5w140009 sic@ */ + cr_SDP_Attribute_rtpmap(-, cr_RTPMAP_TelephoneEvent), // @sic R5s130333 change 14.2 - pattern needs to include a rate; R5s130798 change 5 - MCC160 Comment: rate is optional sic@ + cr_SDP_Attribute_ptime, + cr_SDP_Attribute_maxptime, + cr_SDP_Attribute_inactive, + // precondition attributes: + cr_SDP_Attribute_curr_qos(c_local), + cr_SDP_Attribute_curr_qos(c_remote), + cr_SDP_Attribute_des_qos(c_mandatory, c_local), + cr_SDP_Attribute_des_qos(c_optional, c_remote), + * + }; + var template (present) SDP_attribute_list v_SDP_Attribute_List_Video := { + // media attributes: + cr_SDP_Attribute_rtpmap(-, cr_RTPMAP_H264_90000), + cr_SDP_Attribute_fmtp(-, cr_Video_Fmtp_DefaultParameters), + cr_SDP_Attribute_inactive, + // precondition attributes: + cr_SDP_Attribute_curr_qos(c_local), + cr_SDP_Attribute_curr_qos(c_remote), + cr_SDP_Attribute_des_qos(c_mandatory, c_local), + cr_SDP_Attribute_des_qos(c_optional, c_remote), + * + }; + + v_SDP_Media_Desc_Audio := cr_SDP_Media_Desc(cr_SDP_Media_Audio, + cr_SDP_Connection(v_AddrType, v_IPAddrAudio), + cr_SDP_Bandwidth_List_Media(?, ?, ?), + v_SDP_Attribute_List_Audio); + v_SDP_Media_Desc_Video := cr_SDP_Media_Desc(cr_SDP_Media_Video, + cr_SDP_Connection(v_AddrType, v_IPAddrVideo), + cr_SDP_Bandwidth_List_Media(?, ?, ?), + v_SDP_Attribute_List_Video); + v_SDP_Media_Desc_List := { v_SDP_Media_Desc_Audio, v_SDP_Media_Desc_Video }; + + return cr_SDP_Message_Common(v_AddrType, v_IPAddrOrigin, ?, -, -, cr_SDP_Time_Any, v_SDP_Media_Desc_List); + } + + function f_IMS_BuildSDP_AnnexC25_Step4(SDP_media_desc p_SDP_Media_AudioRx, + SDP_media_desc p_SDP_Media_VideoRx, + boolean p_TcapPcfg) runs on IMS_PTC return template (value) SDP_Message + { /* Build SDP record to be sent to the UE at step 4 according to 34.229-1 Annex C.25 */ + /* @sic R5-144402: p_IPAddrOrigin removed sic@ */ + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var charstring v_IPAddrConnection := f_IMS_PTC_RemoteAddress_GetAddrStr(); + var charstring v_IPAddrOrigin := v_IPAddrConnection; + var template (value) SDP_media_desc v_SDP_Media_Desc_AudioTx; + var template (value) SDP_media_desc v_SDP_Media_Desc_VideoTx; + var template (value) SDP_media_desc_list v_SDP_Media_Desc_List; + var template (value) SDP_bandwidth_list v_Bandwidth_List_Audio := p_SDP_Media_AudioRx.bandwidth; + var template (value) SDP_bandwidth_list v_Bandwidth_List_Video := p_SDP_Media_VideoRx.bandwidth; + var charstring v_FmtAudio := f_SDP_MediaDescr_GetAMR_8000_1(p_SDP_Media_AudioRx); + var charstring v_FmtVideo := f_SDP_MediaDescr_GetH264_90000(p_SDP_Media_VideoRx); + + var template (value) SDP_attribute_list v_SDP_Attribute_List_Audio := { + // media attributes: + cs_SDP_Attribute_rtpmap(v_FmtAudio, cs_RTPMAP_AMR_8000), + cs_SDP_Attribute_fmtp(v_FmtAudio, cs_AMR_Fmtp_DefaultParameters), + cs_SDP_Attribute_ptime, + cs_SDP_Attribute_maxptime, + // precondition attributes: + cs_SDP_Attribute_curr_qos(c_local), + cs_SDP_Attribute_curr_qos(c_remote), + cs_SDP_Attribute_des_qos(c_mandatory, c_local), + cs_SDP_Attribute_des_qos(c_mandatory, c_remote), + cs_SDP_Attribute_conf_qos + }; + var template (value) SDP_attribute_list v_SDP_Attribute_List_Video := { + // media attributes: + cs_SDP_Attribute_rtpmap(v_FmtVideo, cs_RTPMAP_Codec("", "")), // !!!! codec need to be specified in the prose !!!! + cs_SDP_Attribute_fmtp(v_FmtVideo, cs_Fmtp_ParamList({cs_GenericParam("", "")})), // !!!! parameters need to be specified in the prose !!!! + cs_SDP_Attribute_ptime, + cs_SDP_Attribute_maxptime, + // precondition attributes: + cs_SDP_Attribute_curr_qos(c_local), + cs_SDP_Attribute_curr_qos(c_remote), + cs_SDP_Attribute_des_qos(c_mandatory, c_local), + cs_SDP_Attribute_des_qos(c_mandatory, c_remote), + cs_SDP_Attribute_conf_qos + }; + v_SDP_Media_Desc_AudioTx := cs_SDP_Media_Desc(cs_SDP_Media_Audio(v_FmtAudio), + v_Bandwidth_List_Audio, + v_SDP_Attribute_List_Audio); + v_SDP_Media_Desc_VideoTx := cs_SDP_Media_Desc(cs_SDP_Media_Video(v_FmtVideo), + v_Bandwidth_List_Video, + v_SDP_Attribute_List_Video); + + v_SDP_Media_Desc_VideoTx.attributes := f_SDP_Attributes_Add_TX(v_SDP_Media_Desc_VideoTx.attributes, cs_SDP_Attribute_acfg(1, "t=1"), p_TcapPcfg); + + v_SDP_Media_Desc_List := { v_SDP_Media_Desc_AudioTx, v_SDP_Media_Desc_VideoTx }; + + return cs_SDP_Message_Common(cs_SDP_Origin(-, -, v_AddrType, v_IPAddrOrigin), cs_SDP_Connection(v_AddrType, v_IPAddrConnection), -, cs_SDP_Bandwidth_List_AS(30), -, v_SDP_Media_Desc_List); /* @sic R5-144402: v_Sessionname removed sic@ */ + } + + function f_IMS_BuildSDP_AnnexC25_Step5or7(charstring p_FmtAudio, + charstring p_FmtVideo) runs on IMS_PTC return template (present) SDP_Message + { /* to receive 2nd SDP answer sent by the UE in C.25 step 5/7 */ + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var template (present) charstring v_IPAddrOrigin := ?; + var template (present) charstring v_IPAddrAudio := ?; + var template (present) charstring v_IPAddrVideo := ?; + var template (present) SDP_media_desc v_SDP_Media_Desc_Audio; + var template (present) SDP_media_desc v_SDP_Media_Desc_Video; + var template (present) SDP_media_desc_list v_SDP_Media_Desc_List; + + var template (present) SDP_attribute_list v_SDP_Attribute_List_Audio := { + // media attributes: + cr_SDP_Attribute_rtpmap(p_FmtAudio, cr_RTPMAP_AMR_8000), // @sic R5s130681 change 2 sic@ + cr_SDP_Attribute_fmtp(p_FmtAudio), + cr_SDP_Attribute_sendrecv, + // precondition attributes: + cr_SDP_Attribute_curr_qos(c_local, c_sendrecv), + cr_SDP_Attribute_curr_qos(c_remote), + cr_SDP_Attribute_des_qos(c_mandatory, c_local), + cr_SDP_Attribute_des_qos((c_optional, c_mandatory), c_remote), /* @sic R5-142951: (c_optional, c_mandatory) instead of c_optional sic@ */ + * + }; + var template (present) SDP_attribute_list v_SDP_Attribute_List_Video := { + // media attributes: + cr_SDP_Attribute_rtpmap(p_FmtVideo, cr_RTPMAP_H264_90000), + cr_SDP_Attribute_fmtp(p_FmtVideo, cr_Video_Fmtp_DefaultParameters), + // precondition attributes: + cr_SDP_Attribute_curr_qos(c_local, c_sendrecv), + cr_SDP_Attribute_curr_qos(c_remote), + cr_SDP_Attribute_des_qos(c_mandatory, c_local), + cr_SDP_Attribute_des_qos(c_optional, c_remote), + * + }; + + v_SDP_Media_Desc_Audio := cr_SDP_Media_Desc(cr_SDP_Media_Audio(p_FmtAudio), + cr_SDP_Connection(v_AddrType, v_IPAddrAudio), + cr_SDP_Bandwidth_List_Media(?, ?, ?), + v_SDP_Attribute_List_Audio); + v_SDP_Media_Desc_Video := cr_SDP_Media_Desc(cr_SDP_Media_Video(p_FmtVideo), + cr_SDP_Connection(v_AddrType, v_IPAddrVideo), + cr_SDP_Bandwidth_List_Media(?, ?, ?), + v_SDP_Attribute_List_Video); + v_SDP_Media_Desc_List := { v_SDP_Media_Desc_Audio, v_SDP_Media_Desc_Video }; + + return cr_SDP_Message_Common(v_AddrType, v_IPAddrOrigin, ?, -, -, cr_SDP_Time_Any, v_SDP_Media_Desc_List); + } + + //============================================================================ + // Annex C25 - Steps + //---------------------------------------------------------------------------- + + function fl_CheckRTPAVP_TcapPcfg (SDP_media_desc p_SDP_Media_Desc) runs on IMS_PTC return boolean + { + var boolean v_Result := false; + var template (omit) SDP_attribute v_Attribute; + + if (p_SDP_Media_Desc.media_field.transport == "RTP/AVP") { + v_Attribute := f_SDP_AttributeList_GetAttribute (p_SDP_Media_Desc.attributes, cr_SDP_Attribute_tcap(1, "RTP/AVPF")); + if (not isvalue (v_Attribute)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "missing tcap attribute"); + } else { + v_Result := true; + } + v_Attribute := f_SDP_AttributeList_GetAttribute (p_SDP_Media_Desc.attributes, cr_SDP_Attribute_pcfg(1, "t=1")); + if (not isvalue (v_Attribute)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "missing pcfg attribute"); + } + } + return v_Result; + } + + //---------------------------------------------------------------------------- + + function f_IMS_MOCallSetup_AnnexC25_Step2() runs on IMS_PTC return IMS_InviteRequestWithSdp_Type + { /* @sic R5w140112: return type changed to IMS_InviteRequestWithSdp_Type to carry decoded SDP offer */ + var template (present) SDP_Message v_SDP_Message_Step2 := f_IMS_BuildSDP_AnnexC25_Step2(); + var IMS_DATA_REQ v_IMS_INVITE_REQ; + var SDP_Message v_SDP_Message; + var boolean v_A12 := false; // as we have video but not voice + + // Step 2. Receive INVITE Request + v_IMS_INVITE_REQ := f_IMS_INVITE_ReceiveRequest(A_2_1_A4, tsc_OptionTagList_precondition, -, -, -, -, -, -, v_A12); + v_SDP_Message := f_IMS_SIP_SdpMessageBody_DecodeMatchAndCheckSDP(v_IMS_INVITE_REQ.Request.Invite.messageBody, v_SDP_Message_Step2); + + // check media description: + f_IMS_SDP_CheckMediaDescr_AMR_8000_1(v_SDP_Message.media_list[0]); + f_IMS_SDP_CheckMediaDescr_H264_90000(v_SDP_Message.media_list[1]); + + return f_IMS_InviteRequestWithSdpMO(v_IMS_INVITE_REQ, v_SDP_Message); + } + + //---------------------------------------------------------------------------- + + function f_IMS_MOCallSetup_AnnexC25_Step3_4(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp, + boolean p_TcapPcfg) runs on IMS_PTC return MessageHeader + { /* return MessageHeader of the 183 response */ + var template (value) IMS_RoutingInfo_Type v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(p_InviteRequestWithSdp.RoutingInfo); + var INVITE_Request v_InviteRequest := p_InviteRequestWithSdp.Invite; + var SDP_Message v_SDP_MessageStep2 := p_InviteRequestWithSdp.SdpOffer; + var template (value) SDP_Message v_SDP_MessageStep4 := f_IMS_BuildSDP_AnnexC25_Step4(v_SDP_MessageStep2.media_list[0], v_SDP_MessageStep2.media_list[1], p_TcapPcfg); + var template (value) MessageHeader v_MessageHeader_Response183; + + // Step 3. SS sends a 100 Trying provisional response. + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine100, f_IMS_InviteResponse_100_MessageHeaderTX(v_InviteRequest)))); + + // Step 4. Send 183 Session In Progress. + v_MessageHeader_Response183 := f_IMS_InviteResponse_183_MessageHeaderTX(v_InviteRequest, tsc_OptionTagList_precondition); /* @sic R5-142951 sic@ */ + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine183, v_MessageHeader_Response183, cs_MessageBody_SDP(v_SDP_MessageStep4)))); + + return valueof(v_MessageHeader_Response183); + } + + function f_IMS_MOCallSetup_AnnexC25_Steps5_13(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp, + MessageHeader p_MessageHeader_Prev183Response) runs on IMS_PTC + { + var SDP_Message v_SDP_Offer := p_InviteRequestWithSdp.SdpOffer; + var charstring v_FmtAudio := f_SDP_MediaDescr_GetAMR_8000_1(v_SDP_Offer.media_list[0]); + var charstring v_FmtVideo := f_SDP_MediaDescr_GetH264_90000(v_SDP_Offer.media_list[1]); + var template (present) SDP_Message v_SDP_Message_Step5or7 := f_IMS_BuildSDP_AnnexC25_Step5or7(v_FmtAudio, v_FmtVideo); + var boolean v_SrvccAlerting := false; /* as we have no voice call */ + + f_IMS_MOCallSetup_AnnexC21_Steps5_8(p_InviteRequestWithSdp, p_MessageHeader_Prev183Response, -, v_SDP_Message_Step5or7); + f_IMS_MOCallSetup_AnnexC21C25_Step9_11(p_InviteRequestWithSdp, -, v_SrvccAlerting); + f_IMS_MOCallSetup_AnnexC21C25_Step12_13(p_InviteRequestWithSdp); + } + + //============================================================================ + // Annex C26 - SDP Messages + //---------------------------------------------------------------------------- + + function f_IMS_BuildSDP_AnnexC26_Step1or7(charstring p_Step, + charstring p_FmtAudio, + charstring p_FmtVideo, + template (value) SDP_attribute p_SDP_Attribute_curr_qos_remote := cs_SDP_Attribute_curr_qos(c_remote)) + runs on IMS_PTC return template (value) SDP_Message + { /* Build SDP record to be sent to the UE at step 1 according to 34.229-1 Annex C.26 */ + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var charstring v_IPAddrOrigin := f_IMS_PTC_RemoteAddress_GetAddrStr(); + var template (value) SDP_media_desc v_SDP_Media_Desc_Audio; + var template (value) SDP_media_desc v_SDP_Media_Desc_Video; + var template (value) SDP_media_desc_list v_SDP_Media_Desc_List; + var template (omit) SDP_attribute_list v_SDP_Attribute_List_Audio; + var template (omit) SDP_attribute_list v_SDP_Attribute_List_Video; + var charstring v_SessionVersion := tsc_SDP_SessionVersion1; + var charstring v_Direction := c_none; + var boolean v_IsStep7 := (p_Step == "step 7"); + + if (v_IsStep7) { + v_Direction := c_sendrecv; + } + v_SDP_Attribute_List_Audio := { + // media attributes: + cs_SDP_Attribute_rtpmap(p_FmtAudio, cs_RTPMAP_AMR_8000), + cs_SDP_Attribute_fmtp(p_FmtAudio, cs_AMR_Fmtp_DefaultParameters), + cs_SDP_Attribute_ptime, + cs_SDP_Attribute_maxptime, + // precondition attributes: + cs_SDP_Attribute_curr_qos(c_local, v_Direction), + p_SDP_Attribute_curr_qos_remote, + cs_SDP_Attribute_des_qos(c_mandatory, c_local), + cs_SDP_Attribute_des_qos(c_optional, c_remote) + }; + v_SDP_Attribute_List_Video := { + // media attributes: + cs_SDP_Attribute_rtpmap(p_FmtVideo, cs_RTPMAP_H264_90000), + cs_SDP_Attribute_fmtp(p_FmtVideo, cs_Fmtp_ParamList(cs_Fmtp_VideoParamsWithPacketizationMode)), + cs_SDP_Attribute_rtcp_fb("*", "trr-int 5000"), + cs_SDP_Attribute_rtcp_fb("*", "nack"), + cs_SDP_Attribute_rtcp_fb("*", "nack pli"), + cs_SDP_Attribute_rtcp_fb("*", "ccm fir"), + cs_SDP_Attribute_rtcp_fb("*", "ccm tmmbr"), + // precondition attributes: + cs_SDP_Attribute_curr_qos(c_local, v_Direction), + p_SDP_Attribute_curr_qos_remote, + cs_SDP_Attribute_des_qos(c_mandatory, c_local), + cs_SDP_Attribute_des_qos(c_optional, c_remote) + }; + v_SDP_Attribute_List_Audio := f_SDP_Attributes_Add_TX(v_SDP_Attribute_List_Audio, cs_SDP_Attribute_sendrecv, v_IsStep7); + v_SDP_Attribute_List_Video := f_SDP_Attributes_Add_TX(v_SDP_Attribute_List_Video, cs_SDP_Attribute_sendrecv, v_IsStep7); + + v_SDP_Media_Desc_Audio := cs_SDP_Media_Desc(cs_SDP_Media_Audio(p_FmtAudio), + cs_SDP_Bandwidth_List_Media(30, 0, 2000), + v_SDP_Attribute_List_Audio); + v_SDP_Media_Desc_Video := cs_SDP_Media_Desc(cs_SDP_Media_Video(p_FmtVideo), + cs_SDP_Bandwidth_List_Media(315, 0, 2500), + v_SDP_Attribute_List_Video); + v_SDP_Media_Desc_List := { v_SDP_Media_Desc_Audio, v_SDP_Media_Desc_Video }; + + if (v_IsStep7) {v_SessionVersion := tsc_SDP_SessionVersion2; } + + return cs_SDP_Message_Common(cs_SDP_Origin(-, v_SessionVersion, v_AddrType, v_IPAddrOrigin), cs_SDP_Connection(v_AddrType, v_IPAddrOrigin), -, cs_SDP_Bandwidth_List_AS(30), -, v_SDP_Media_Desc_List); + } + + function f_IMS_BuildSDP_AnnexC26_Step4(charstring p_FmtAudio, + charstring p_FmtVideo) runs on IMS_PTC return template (present) SDP_Message + { /* to receive SDP answer sent by the UE in C.26 step 4 */ + /* @sic R5-123077 change 3: 'inactive' removed from 'Attributes for media' for step 4 sic@ */ + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var template (present) charstring v_IPAddrOrigin := ?; + var template (present) charstring v_IPAddrAudio := ?; + var template (present) charstring v_IPAddrVideo := ?; + var template (present) SDP_attribute_list v_SDP_Attribute_List_Audio; + var template (present) SDP_attribute_list v_SDP_Attribute_List_Video; + var template (present) SDP_media_desc v_SDP_Media_Desc_Audio; + var template (present) SDP_media_desc v_SDP_Media_Desc_Video; + var template (present) SDP_media_desc_list v_SDP_Media_Desc_List; + + v_SDP_Attribute_List_Audio := { + cr_SDP_Attribute_rtpmap(p_FmtAudio, cr_RTPMAP_AMR_8000), // @sic R5s130681 change 2 sic@ + cr_SDP_Attribute_fmtp(p_FmtAudio), + // precondition attributes: + cr_SDP_Attribute_curr_qos(c_local, (c_none, c_sendrecv)), + cr_SDP_Attribute_curr_qos(c_remote, c_none), + cr_SDP_Attribute_des_qos(c_mandatory, c_local), + cr_SDP_Attribute_des_qos(c_mandatory, c_remote), + cr_SDP_Attribute_conf_qos, + * + }; + v_SDP_Attribute_List_Video := { + cr_SDP_Attribute_rtpmap(p_FmtVideo, cr_RTPMAP_H264_90000), + cr_SDP_Attribute_fmtp(p_FmtVideo, cr_Fmtp_ParamList(cr_Fmtp_VideoParamsWithPacketizationMode)), + // precondition attributes: + cr_SDP_Attribute_curr_qos(c_local, (c_none, c_sendrecv)), + cr_SDP_Attribute_curr_qos(c_remote, c_none), + cr_SDP_Attribute_des_qos(c_mandatory, c_local), + cr_SDP_Attribute_des_qos(c_mandatory, c_remote), + cr_SDP_Attribute_conf_qos, + * + }; + v_SDP_Media_Desc_Audio := cr_SDP_Media_Desc(cr_SDP_Media_Audio(p_FmtAudio), + cr_SDP_Connection(v_AddrType, v_IPAddrAudio), + cr_SDP_Bandwidth_List_Media(?, ?, ?), + v_SDP_Attribute_List_Audio); + v_SDP_Media_Desc_Video := cr_SDP_Media_Desc(cr_SDP_Media_Video(p_FmtVideo), + cr_SDP_Connection(v_AddrType, v_IPAddrVideo), + cr_SDP_Bandwidth_List_Media(?, ?, ?), + v_SDP_Attribute_List_Video); + v_SDP_Media_Desc_List := { v_SDP_Media_Desc_Audio, v_SDP_Media_Desc_Video }; + return cr_SDP_Message_Common(v_AddrType, v_IPAddrOrigin, ?, -, -, cr_SDP_Time_Any, v_SDP_Media_Desc_List); + } + + function f_IMS_BuildSDP_AnnexC26_Step8(charstring p_FmtAudio, + charstring p_FmtVideo) runs on IMS_PTC return template (present) SDP_Message + { /* to receive SDP answer sent by the UE in C.26 steps 4 or 8 (200 OK sent by the SS) or 2nd SDP sent by the UE in C.21 step 5/7 */ + /* @sic R5-123077 change 3: 'inactive' removed from 'Attributes for media' for step 4 sic@ */ + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var template (present) charstring v_IPAddrOrigin := ?; + var template (present) charstring v_IPAddrAudio := ?; + var template (present) charstring v_IPAddrVideo := ?; + var template (present) SDP_attribute_list v_SDP_Attribute_List_Audio; + var template (present) SDP_attribute_list v_SDP_Attribute_List_Video; + var template (present) SDP_media_desc v_SDP_Media_Desc_Audio; + var template (present) SDP_media_desc v_SDP_Media_Desc_Video; + var template (present) SDP_media_desc_list v_SDP_Media_Desc_List; + + v_SDP_Attribute_List_Audio := { + cr_SDP_Attribute_rtpmap(p_FmtAudio, cr_RTPMAP_AMR_8000), // @sic R5s130681 change 2 sic@ + cr_SDP_Attribute_fmtp(p_FmtAudio), + // precondition attributes: + cr_SDP_Attribute_curr_qos(c_local, c_sendrecv), + cr_SDP_Attribute_curr_qos(c_remote, c_sendrecv), + cr_SDP_Attribute_des_qos(c_mandatory, c_local), + cr_SDP_Attribute_des_qos(c_mandatory, c_remote), + cs_SDP_Attribute_sendrecv, + * + }; + v_SDP_Attribute_List_Video := { + cr_SDP_Attribute_rtpmap(p_FmtVideo, cr_RTPMAP_H264_90000), + cr_SDP_Attribute_fmtp(p_FmtVideo, cr_Fmtp_ParamList(cr_Fmtp_VideoParamsWithPacketizationMode)), + // precondition attributes: + cr_SDP_Attribute_curr_qos(c_local, c_sendrecv), + cr_SDP_Attribute_curr_qos(c_remote, c_sendrecv), + cr_SDP_Attribute_des_qos(c_mandatory, c_local), + cr_SDP_Attribute_des_qos(c_mandatory, c_remote), + cs_SDP_Attribute_sendrecv, + * + }; + v_SDP_Media_Desc_Audio := cr_SDP_Media_Desc(cr_SDP_Media_Audio(p_FmtAudio), + cr_SDP_Connection(v_AddrType, v_IPAddrAudio), + cr_SDP_Bandwidth_List_Media(?, ?, ?), + v_SDP_Attribute_List_Audio); + v_SDP_Media_Desc_Video := cr_SDP_Media_Desc(cr_SDP_Media_Video(p_FmtVideo), + cr_SDP_Connection(v_AddrType, v_IPAddrVideo), + cr_SDP_Bandwidth_List_Media(?, ?, ?), + v_SDP_Attribute_List_Video); + v_SDP_Media_Desc_List := { v_SDP_Media_Desc_Audio, v_SDP_Media_Desc_Video }; + return cr_SDP_Message_Common(v_AddrType, v_IPAddrOrigin, ?, -, -, cr_SDP_Time_Any, v_SDP_Media_Desc_List); + } + + //============================================================================ + // Annex C26 - Steps + //---------------------------------------------------------------------------- + + function f_IMS_MTCallSetup_AnnexC26_Steps1_4(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp, + charstring p_FmtAudio, + charstring p_FmtVideo) runs on IMS_PTC return IMS_ResponseWithSdp_Type + { /* MT video call setup according to 34.229-1 Annex C.26, steps 1 to 4. + return SessionInProgress183 and its SDP message received in step 4 */ + var template (present) SDP_Message v_SDP_MessageStep4; + var INVITE_Request v_InviteRequest := p_InviteRequestWithSdp.Invite; + var InternetProtocol_Type v_Protocol := p_InviteRequestWithSdp.RoutingInfo.Protocol; + + // Step 1 - Send INVITE + IMS_Client.send(cas_IMS_Invite_Request(p_InviteRequestWithSdp.RoutingInfo, v_InviteRequest)); + + // Step 2 - Void + + // Step 3 .. 4 + v_SDP_MessageStep4 := f_IMS_BuildSDP_AnnexC26_Step4(p_FmtAudio, p_FmtVideo); + return f_IMS_MTCallSetup_Common_Steps3_4(v_InviteRequest, v_SDP_MessageStep4, v_Protocol); + } + + function f_IMS_MTCallSetup_AnnexC26_Steps5_13(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp, + charstring p_FmtAudio, + charstring p_FmtVideo, + IMS_Response_Type p_SessionInProgress183, + SDP_Message p_SDP_MessageStep4) runs on IMS_PTC + { // Signalling according 34.229-1 Annex C.26 steps 5 to 13 + var MessageHeader v_MessageHeader_PrevReliableResponse := p_SessionInProgress183.msgHeader; + var InternetProtocol_Type v_Protocol := p_InviteRequestWithSdp.RoutingInfo.Protocol; + var INVITE_Request v_InviteRequest := p_InviteRequestWithSdp.Invite; + var SDP_Message v_SDP_MessageStep1 := p_InviteRequestWithSdp.SdpOffer; + var charstring v_Direction; + var template (value) SDP_Message v_SDP_MessageStep7; + var template (present) SDP_Message v_SDP_MessageStep8; + + // Step 5 - 6. Send PRACK, Receive 200 OK + f_IMS_MTCallSetup_SendPRACK_ReceiveOK(v_InviteRequest, v_MessageHeader_PrevReliableResponse); + + // Step 7 - 8. Send UPDATE, Receive 200 OK, Receive optional 180 Ringing and send PRACK if requested + // get curr:qos remote for SDP message in step 7 + if (isvalue(v_SDP_MessageStep1.media_list[0]) and f_SDP_AttributeList_CheckAttribute(p_SDP_MessageStep4.media_list[0].attributes, cr_SDP_Attribute_curr_qos(c_local, c_none))) { + v_Direction := c_none; + } else { + v_Direction := c_sendrecv; + } + v_SDP_MessageStep7 := f_IMS_BuildSDP_AnnexC26_Step1or7("step 7", p_FmtAudio, p_FmtVideo, cs_SDP_Attribute_curr_qos(c_remote, v_Direction)); + v_SDP_MessageStep8 := f_IMS_BuildSDP_AnnexC26_Step8(p_FmtAudio, p_FmtVideo); + f_IMS_MTCallSetup_Common_Steps7_11(v_InviteRequest, v_SDP_MessageStep7, v_SDP_MessageStep8, v_Protocol); + + // Step 11A - Make UE accept the speech AMR offer + f_UT_AnswerCall(MMI); // @sic R5-134070 sic@ + + // Step 12. Receive 200 OK, Send ACK + f_IMS_MTCallSetup_Common_Steps12_13(p_InviteRequestWithSdp); + } + + //============================================================================ + /* + * @desc 504 Server Time-out (see TS 34.229, A.4.6) + * @param p_MessageHeader_Request + * @return template (value) MessageHeader + * @status APPROVED (IMS) + */ + function f_IMS_CommonResponse_504_MessageHeaderTX(MessageHeader p_MessageHeader_Request) runs on IMS_PTC return template (value) MessageHeader + { + var template (value) MessageHeader v_MessageHeader_Response := cs_MessageHeader_Dummy; + + v_MessageHeader_Response.via := p_MessageHeader_Request.via; + v_MessageHeader_Response.fromField := p_MessageHeader_Request.fromField; + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderTX(p_MessageHeader_Request); + v_MessageHeader_Response.pAssertedID := cs_PAssertedId(cs_SipUri_HostPort_lr(px_IMS_Scscf)); + v_MessageHeader_Response.callId := p_MessageHeader_Request.callId; + v_MessageHeader_Response.sessionId := p_MessageHeader_Request.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := p_MessageHeader_Request.cSeq; + v_MessageHeader_Response.contentType := cs_ContentType("application/3gpp-ims+xml"); + + return v_MessageHeader_Response; + } + + //---------------------------------------------------------------------------- + /* + * @desc REFERENCE TS 34.229-1 clause 12.2 + * @status APPROVED (IMS) + */ + function f_TC_12_2_IMS() runs on IMS_PTC + { + var template (present) MessageHeader v_MessageHeader_Ack; + var template (value) IMS_RoutingInfo_Type v_RoutingInfo_DL; + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: IMS_InviteRequestWithSdp_Type instead of IMS_DATA_REQ */ + var INVITE_Request v_InviteRequest; + var template (present) SipUrl v_RequestSipUrl := f_SIP_BuildSipUri_RX(px_IMS_CalleeUri); // @sic R5s130580 sic@ + var integer v_RetryAfter := 60; // seconds + var float v_RetryAfterMin := f_IMS_SetTimerToleranceMin(int2float(v_RetryAfter)); + var float v_RetryAfterMax := f_IMS_SetTimerToleranceMax(int2float(v_RetryAfter)); + + f_IMS_CC_Preamble(IPCAN_SpeechCall, IMS_REGISTERED); + + f_IMS_TestBody_Set(true); + + // Step 1 - Make the UE attempt an IMS speech call + // @siclog "Step 1" siclog@ + f_IMS_CC_StartCall(IPCAN_MO_SpeechCall); + + // Step 2. Receive INVITE Request + // @siclog "Step 2 - 3" siclog@ + v_InviteRequestWithSdp := f_IMS_MOCallSetup_AnnexC21_Step2_Common(-, A_2_1_A4); + v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(v_InviteRequestWithSdp.RoutingInfo); + v_InviteRequest := v_InviteRequestWithSdp.Invite; + + // Step 4. SS sends 503 Service Unavailable. + // @siclog "Step 4" siclog@ + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine503, f_IMS_CommonResponse_503_MessageHeaderTX(v_InviteRequest.msgHeader, cs_RetryAfter(v_RetryAfter))))); + + // Step 5. Receive ACK + // @siclog "Step 5" siclog@ + v_MessageHeader_Ack := f_IMS_AckRequest_MessageHeaderRX(v_InviteRequest, c_statusLine503); + IMS_Server.receive(car_IMS_Ack_Request(cr_ACK_Request(v_RequestSipUrl, v_MessageHeader_Ack))); + + // @siclog "Step 6" siclog@ + f_Delay(v_RetryAfterMin); + f_IMS_PreliminaryPass(__FILE__, __LINE__, "Step6"); + + // Step 7. Receive INVITE (optional) + // @siclog "Step 7" siclog@ + f_IMS_MOCallSetup_AnnexC21_Step2_Optional(-, A_2_1_A4, (v_RetryAfterMax - v_RetryAfterMin)); // @sic R5s130580 - additional change sic@ + + f_IMS_CC_AbortCall(); // to abort call establishment procedure + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(IPCAN_MO_SpeechCall); + } + + //---------------------------------------------------------------------------- + /* + * @desc REFERENCE TS 34.229-1 clause 12.2a + * @status APPROVED (IMS) + */ + function f_TC_12_2a_IMS() runs on IMS_PTC + { + var template (present) MessageHeader v_MessageHeader_Ack; + var template (value) IMS_RoutingInfo_Type v_RoutingInfo_DL; + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: IMS_InviteRequestWithSdp_Type instead of IMS_DATA_REQ */ + var INVITE_Request v_InviteRequest; + var template (present) SipUrl v_RequestSipUrl := f_SIP_BuildSipUri_RX(px_IMS_CalleeUri); + + f_IMS_CC_Preamble(IPCAN_SpeechCall, IMS_REGISTERED, IMS_Security); // prose specifies only Annex C.2 => not applicable for GIBA + + f_IMS_TestBody_Set(true); + + // Step 1 - Make the UE attempt an IMS speech call + // @siclog "Step 1" siclog@ + f_IMS_CC_StartCall(IPCAN_MO_SpeechCall); + + // Step 2. Receive INVITE Request + // @siclog "Step 2" siclog@ + v_InviteRequestWithSdp := f_IMS_MOCallSetup_AnnexC21_Step2_A4(); + v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(v_InviteRequestWithSdp.RoutingInfo); + v_InviteRequest := v_InviteRequestWithSdp.Invite; + + // Step 3. SS sends 504 Server Time-out. + // @siclog "Step 3" siclog@ + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine504, + f_IMS_CommonResponse_504_MessageHeaderTX(v_InviteRequest.msgHeader), + cs_MessageBody_XML(cs_TIMS3GPP_Restoration)))); + // Step 4. Receive ACK + // @siclog "Step 4" siclog@ + v_MessageHeader_Ack := f_IMS_AckRequest_MessageHeaderRX(v_InviteRequest, c_statusLine504); + IMS_Server.receive(car_IMS_Ack_Request(cr_ACK_Request(v_RequestSipUrl, v_MessageHeader_Ack))); + + f_IMS_CC_AbortCall(); // to abort call establishment procedure + + f_IMS_RegisterInfo_Release(); // release registration information at IPCAN + f_IMS_PTC_ImsInfo_Reset(); // reset ImsInfo + f_IMS_PTC_Security_Release(); // release security + + // Steps 5 to 12. UE performs initial registration Annex C.2 + // @siclog "Step 5 - 12" siclog@ + f_IMS_Registration(); + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(IPCAN_MO_SpeechCall); + } + + //---------------------------------------------------------------------------- + /* + * @desc REFERENCE TS 34.229-1 clause 12.12 + * @status APPROVED (IMS) + */ + function f_TC_12_12_IMS() runs on IMS_PTC + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: IMS_InviteRequestWithSdp_Type instead of IMS_DATA_REQ */ + var MessageHeader v_MessageHeader_Response183; + + f_IMS_CC_Preamble(IPCAN_SpeechCall, IMS_REGISTERED); + + f_IMS_TestBody_Set(true); + + // @siclog "Step 1" siclog@ + f_IMS_CC_StartCall(IPCAN_MO_SpeechCall); + + // @siclog "Step 2" siclog@ + v_InviteRequestWithSdp := f_IMS_MOCallSetup_AnnexC21_Step2_A4(); + + // @siclog "Step 3 - 4" siclog@ + v_MessageHeader_Response183 := f_IMS_MOCallSetup_AnnexC21_Step3_4(v_InviteRequestWithSdp); /* @sic R5w140112 sic@ */ + + // See TS. 36.508 EUTRA/EPS signalling for IMS MO speech call Table 4.5A.6.3-1 Step 9-11 + f_IMS_CC_TriggerDedicatedBearerActivation(IPCAN_MO_SpeechCall); // trigger IPCAN to continue with activation of secondary PDP context or dedicated EPS bearer + + // @siclog "Step 5 - 13" siclog@ + f_IMS_MOCallSetup_AnnexC21_Steps5_13(v_InviteRequestWithSdp, v_MessageHeader_Response183); + + // @siclog "Step 14 - 15" siclog@ + f_IMS_CallReleaseMO(v_InviteRequestWithSdp.Invite); /* @sic R5-134116: parameter p_RecordRouteOfPrevResponse removed sic@ */ + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(IPCAN_MO_SpeechCall); + } + + //---------------------------------------------------------------------------- + /* + * @desc REFERENCE TS 34.229-1 clause 12.13 + * @status APPROVED (IMS) + */ + function f_TC_12_13_IMS() runs on IMS_PTC + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: v_InviteRequestWithSdp instead of v_InviteRequest sic@ */ + var IMS_ResponseWithSdp_Type v_ResponseWithSdp; /* @sic R5w140112 sic@ */ + var IMS_Response_Type v_SessionInProgress183; + var SipUrl v_ContactUrl; + + f_IMS_CC_Preamble(IPCAN_SpeechCall, IMS_REGISTERED); + + f_IMS_TestBody_Set(true); + + f_IMS_CC_StartCall(IPCAN_MT_SpeechCall); + + // Steps 1 to 4 as defined in Annex C.11 + // @siclog "Step 1 - 4" siclog@ + v_InviteRequestWithSdp := f_IMS_MTCallSetup_AnnexC11_INVITE(); + v_ResponseWithSdp := f_IMS_MTCallSetup_AnnexC11_Steps1_4(v_InviteRequestWithSdp); + v_SessionInProgress183 := v_ResponseWithSdp.Response; + v_ContactUrl := f_MessageHeader_GetContactSipUrl(v_SessionInProgress183.msgHeader); + + // Establish Dedicated EPS bearer + // See TS. 36.508 EUTRA/EPS signalling for IMS MT speech call Table 4.5A.7.3-1 Step 9-12 + f_IMS_CC_TriggerDedicatedBearerActivation(IPCAN_MT_SpeechCall); // trigger IPCAN to continue with activation of secondary PDP context or dedicated EPS bearer + + // Steps 5 to 13 as defined in Annex C.11 + // @siclog "Step 5 -13" siclog@ + f_IMS_MTCallSetup_AnnexC11_Steps5_13(v_InviteRequestWithSdp, v_SessionInProgress183); + + // MT Call is now established + f_Delay(3.0); /* @sic R5s130510 change 1; draft prose CR sic@ */ + + // Step 14-15. SS sends BYE to release the call; UE sends 200 OK for the BYE request and ends the call + // @siclog "Step 14 -15" siclog@ + f_IMS_CallReleaseMT(v_InviteRequestWithSdp.Invite, v_ContactUrl); + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(IPCAN_MT_SpeechCall); + } + + //---------------------------------------------------------------------------- + // See 34.229-1 clause 12.16 - MO MTSI Text call + function f_TC_12_16_IMS() runs on IMS_PTC + { + var IMS_TestProcedure_Type v_TestProcedure := IPCAN_MO_IMS_Signalling; // NOTE: new value IPCAN_MO_TextCall may be introduced; FFS + var INVITE_Request v_InviteRequest; + + f_IMS_CC_Preamble(IPCAN_SignallingOnly, IMS_REGISTERED); + + f_IMS_TestBody_Set(true); + + // Steps defined in Annex C.15 + // @siclog "Step 1" siclog@ + f_IMS_CC_StartCall(v_TestProcedure); + + // @siclog "Step 2 -6" siclog@ + v_InviteRequest := f_IMS_MOCallSetup_AnnexC15_Steps2to6(); + + // @siclog "Step 7 - 8" siclog@ + f_IMS_CallReleaseMO(v_InviteRequest); + f_IMS_TestBody_Set(false); + f_IMS_CC_Postamble(v_TestProcedure); + } + + //---------------------------------------------------------------------------- + + + function f_IMS_MTCallSetup_AnnexC13_Steps1to10(IMS_TestProcedure_Type p_TestProcedure, + template (value) SDP_Message p_SDP_Message_Step1, + template (present) SDP_Message p_SDP_Message_Step4or7) runs on IMS_PTC //return INVITE_Request + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; + var IMS_ResponseWithSdp_Type v_ResponseWithSdp; + var Response v_Response; + var InternetProtocol_Type v_Protocol; + var IMS_DATA_RSP v_IMS_DATA_RSP; + var template (value) MessageHeader v_MessageHeader_Invite; + var template (value) INVITE_Request v_InviteRequest; + var template (present) MessageHeader v_MessageHeader_180RX_Template; + var MessageHeader v_MessageHeader; + var SipUrl v_ContactUrl := f_IMS_PTC_ImsInfo_GetContactUrl(); + var template SDP_Message v_SDP_Message_Step7 := omit; + var SDP_Message v_SDP_Message_Step4or7; + var boolean v_Trying := false; + var boolean v_SrvccAlerting := false; + + timer t_Timer := 5.0; // as for C.11 (-> f_IMS_MTCallSetup_Common_Steps7_11) + + f_IMS_CC_StartCall(p_TestProcedure); + + // Step 1 - Send INVITE + v_MessageHeader_Invite := f_IMS_InviteRequest_MessageHeaderTX(tsc_OptionTagList_precondition, -, v_SrvccAlerting); + v_InviteRequest := cs_INVITE_Request(v_ContactUrl, v_MessageHeader_Invite, cs_MessageBody_SDP(p_SDP_Message_Step1)); + v_InviteRequestWithSdp := f_IMS_InviteRequestWithSdpMT(v_InviteRequest, p_SDP_Message_Step1); + v_Protocol := v_InviteRequestWithSdp.RoutingInfo.Protocol; + + IMS_Client.send(cas_IMS_Invite_Request(v_InviteRequestWithSdp.RoutingInfo, v_InviteRequest)); + + // Step 2 - Void + + v_MessageHeader_180RX_Template := f_IMS_InviteResponse_180_MessageHeaderRX(v_InviteRequest); + v_MessageHeader_180RX_Template.contentType := cr_ContentTypeSDP ifpresent; + + t_Timer.start; + alt { + // Step 3 - Receive optional 100 Trying + [not v_Trying] a_IMS_ReceiveResponse(v_InviteRequest.msgHeader, + v_Protocol, + cr_Response(c_statusLine100, f_IMS_InviteResponse_100_MessageHeaderRX(v_InviteRequest)), + v_IMS_DATA_RSP) /* @sic R5s140350: v_IMS_DATA_RSP is 'out' parameter sic@ */ + { + v_Trying := true; + repeat; + } + // Step 4 - Receive optional 180 Ringing + [] a_IMS_ReceiveResponse(v_InviteRequest.msgHeader, + v_Protocol, + cr_Response(c_statusLine180, v_MessageHeader_180RX_Template, cr_MessageBody_SDP ifpresent), + v_IMS_DATA_RSP) /* @sic R5s140350: v_IMS_DATA_RSP is 'out' parameter sic@ */ + { + t_Timer.stop; + v_Response := v_IMS_DATA_RSP.Response; + v_MessageHeader := v_Response.msgHeader; + f_IMS_Dialog_SetRemoteTag(v_MessageHeader); + if (ispresent(v_Response.messageBody)) { + v_SDP_Message_Step4or7 := f_IMS_SIP_SdpMessageBody_DecodeMatchAndCheckSDP(v_Response.messageBody, p_SDP_Message_Step4or7); + if (not ispresent(v_MessageHeader.contentType)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 4: missing content type"); + } + } + } + [] t_Timer.timeout {} + } + + if (isbound(v_MessageHeader)) { // i.e. tehre has been a 180 Ringing + f_IMS_MessageHeader_CheckContactAddr(v_MessageHeader); // check whether contact contains "SIP URI with IP address or FQDN" (see @sic R5s120727 sic@) + + if (f_MessageHeader_CheckRequire(v_MessageHeader, c_tag100rel)) { + // Step 5 - 6. Send PRACK, Receive 200 OK if the 180 response contains 100rel option tag within the Require header + f_IMS_MTCallSetup_SendPRACK_ReceiveOK(v_InviteRequest, v_MessageHeader); + } + } + + if (p_TestProcedure == IPCAN_MT_SpeechCall) { + f_IMS_CC_TriggerDedicatedBearerActivation(IPCAN_MT_SpeechCall); // trigger IPCAN to continue with activation of secondary PDP context or dedicated EPS bearer + } + + if (not isbound(v_SDP_Message_Step4or7)) { + v_SDP_Message_Step7 := p_SDP_Message_Step4or7; + } + + // Step 6A - Make UE accept the SDP offer + f_UT_AnswerCall(MMI); // @sic R5-134070, R5-134796, R5-134797 sic@ */ + + // Step 7 - 8. Receive OK for INVITE, Send ACK. The SS acknowledges the receipt of 200 OK for INVITE. + v_ResponseWithSdp := f_IMS_MTCallSetup_Common_Steps12_13(v_InviteRequestWithSdp, v_SDP_Message_Step7); + v_Response := v_ResponseWithSdp.Response; + v_MessageHeader := v_Response.msgHeader; + v_ContactUrl := f_MessageHeader_GetContactSipUrl(v_MessageHeader); + + // f_Delay(3.0); /* as for 12.13 a delay may be useful but that requires prose CR */ + + // Step 9-10 + f_IMS_CallReleaseMT(v_InviteRequest, v_ContactUrl); + f_IMS_CC_ReleaseConnection(p_TestProcedure); + } + + // See 34.229-1 clause 12.17 - MT MTSI Text call + function f_TC_12_17_IMS() runs on IMS_PTC + { + var IMS_TestProcedure_Type v_TestProcedure := IPCAN_MT_IMS_Signalling; // NOTE: new value IPCAN_MT_TextCall may be introduced; FFS + var template (value) SDP_Message v_SDP_MessageStep1; + var template (present) SDP_Message v_SDP_MessageStep4; + var charstring v_Fmt1 := "99"; + var charstring v_Fmt2 := "101"; + + f_IMS_CC_Preamble(IPCAN_SignallingOnly, IMS_REGISTERED); + + f_IMS_TestBody_Set(true); + + v_SDP_MessageStep1 := f_IMS_BuildSDP_AnnexC13_Step1(v_Fmt1, v_Fmt2); + v_SDP_MessageStep4 := f_IMS_BuildSDP_AnnexC13_Step4(v_Fmt1, v_Fmt2); + + f_IMS_MTCallSetup_AnnexC13_Steps1to10(v_TestProcedure, v_SDP_MessageStep1, v_SDP_MessageStep4); + + f_IMS_TestBody_Set(false); + f_IMS_CC_Postamble(v_TestProcedure); + } + + //---------------------------------------------------------------------------- + /* + * @desc REFERENCE TS 34.229-1 clause 12.18 + * @status APPROVED (IMS) + */ + function f_TC_12_18_IMS() runs on IMS_PTC + { /* MTSI MO speech call / SSAC / 0% access probability for MTSI MO speech call */ + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: IMS_InviteRequestWithSdp_Type instead of IMS_DATA_REQ */ + var MessageHeader v_MessageHeader_Response183; + + // Initial conditions + f_IMS_CC_Preamble(IPCAN_SpeechCall, IMS_NULL); // @sic R5s140334 sic@ + // @sic R5s140334 sic@ + f_IMS_CC_StartSignalling(IPCAN_InitialRegistration); + f_IMS_IPCAN_ModifyConfig(IPCAN, SIB2_TC_12_18); // @sic R5s140577 sic@ + f_IMS_Registration(); + f_IMS_CC_ReleaseConnection(IPCAN_InitialRegistration); + + f_IMS_TestBody_Set(true); + + // @siclog "Step 1" siclog@ + f_UT_RequestIMSCall(MMI, px_IMS_CalleeUri); // @sic R5-134070 sic@ + + // Step 2 - Ue does not send INVITE + // @siclog "Step 2" siclog@ + f_Delay(10.0); + + // @siclog "Step 3 - 4" siclog@ + f_IMS_IPCAN_ModifyConfig(IPCAN, SIB2_Normal); + + // @siclog "Step 5" siclog@ + f_Delay(15.0); + + // @siclog "Step 6" siclog@ + f_UT_RequestIMSCall(MMI, px_IMS_CalleeUri); // @sic R5-134070 sic@ + + // Step 7 + 8 - Ue does not send INVITE and Wait 49s to expire timer Ty + // @siclog "Step 7 - 8" siclog@ + f_Delay(59.0); + + // Steps 9 to 21 - MTSI MO speech call for EPS + // @siclog "Step 9 - 21" siclog@ + f_IMS_CC_StartCall(IPCAN_MO_SpeechCall); + + v_InviteRequestWithSdp := f_IMS_MOCallSetup_AnnexC21_Step2_A4(); + + v_MessageHeader_Response183 := f_IMS_MOCallSetup_AnnexC21_Step3_4(v_InviteRequestWithSdp); /* @sic R5w140112 sic@ */ + + // See TS. 36.508 EUTRA/EPS signalling for IMS MO speech call Table 4.5A.6.3-1 Step 9-11 + f_IMS_CC_TriggerDedicatedBearerActivation(IPCAN_MO_SpeechCall); // trigger IPCAN to continue with activation of secondary PDP context or dedicated EPS bearer + + f_IMS_MOCallSetup_AnnexC21_Steps5_13(v_InviteRequestWithSdp, v_MessageHeader_Response183); + + f_IMS_CallReleaseMO(v_InviteRequestWithSdp.Invite); + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(IPCAN_MO_SpeechCall); + } + + //---------------------------------------------------------------------------- + /* + * @desc REFERENCE TS 34.229-1 clause 12.18a + * + */ + function f_TC_12_18a_IMS() runs on IMS_PTC + { /* MTSI MO speech call / SSAC in Connected mode/ 0% access probability for MTSI MO speech call */ + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; + var MessageHeader v_MessageHeader_Response183; + + // Initial conditions + f_IMS_CC_Preamble(IPCAN_SpeechCall, IMS_NULL); + f_IMS_CC_StartSignalling(IPCAN_InitialRegistration); + f_IMS_IPCAN_ModifyConfig(IPCAN, SIB2_TC_12_18); // same TC 12_18 // @sic R5s140577 sic@ + f_IMS_Registration(); + + f_IMS_TestBody_Set(true); + + // @siclog "Step 9" siclog@ + f_UT_RequestIMSCall(MMI, px_IMS_CalleeUri); + + // @siclog "Step 10" siclog@ + f_Delay(10.0); + + // @siclog "Step 11-12" siclog@ + f_IMS_IPCAN_ModifyConfig(IPCAN, SIB2_Normal); + + // @siclog "Step 13" siclog@ + f_Delay(15.0); + + // @siclog "Step 14" siclog@ + f_UT_RequestIMSCall(MMI, px_IMS_CalleeUri); + + // Step 15 + 16 - Ue does not send INVITE and Wait 49s to expire timer Ty + // @siclog "Step 15 + 16" siclog@ + f_Delay(59.0); + + // Steps 17 to 22 - MTSI MO speech call for EPS + // @siclog "Step 17 - 22" siclog@ + + // @sic R5-144279 sic@ + v_InviteRequestWithSdp := f_IMS_MOCallSetup_AnnexC21_Step2_A4(); + + v_MessageHeader_Response183 := f_IMS_MOCallSetup_AnnexC21_Step3_4(v_InviteRequestWithSdp); + + // See TS. 36.508 EUTRA/EPS signalling for IMS MO speech call Table 4.5A.6.3-1 Step 12-14 + f_IMS_CC_TriggerDedicatedBearerActivation(IPCAN_MO_SpeechCall); // trigger IPCAN to continue with activation of secondary PDP context or dedicated EPS bearer + + f_IMS_MOCallSetup_AnnexC21_Steps5_13(v_InviteRequestWithSdp, v_MessageHeader_Response183); + + f_IMS_CallReleaseMO(v_InviteRequestWithSdp.Invite); + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(IPCAN_MO_SpeechCall); + } + + //---------------------------------------------------------------------------- + /* + * @desc REFERENCE TS 34.229-1 clause 12.18b + * + */ + function f_TC_12_18b_IMS() runs on IMS_PTC + { /* MTSI MO speech call / SSAC in Connected mode/ 0% access probability for MTSI MO speech call */ + + // Initial conditions + f_IMS_CC_Preamble(IPCAN_SpeechCall, IMS_NULL); + f_IMS_CC_StartSignalling(IPCAN_InitialRegistration); + f_IMS_Registration(); + + f_IMS_TestBody_Set(true); + + // @siclog "Step 10-11" siclog@ + f_IMS_IPCAN_ModifyConfig(IPCAN, SIB2_TC_12_18b); // same TC 12_18 + + // @siclog "Step 12" siclog@ + f_Delay(15.0); + + // @siclog "Step 13" siclog@ + f_IMS_CC_StartCall(IPCAN_MO_SpeechCall); + + // Ue does not send INVITE and Wait 10s to expire timer + // @siclog "Step14" siclog@ + f_Delay(10.0); + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(IPCAN_InitialRegistration); + } + + //---------------------------------------------------------------------------- + // See 34.229-1 clause 12.19 - MTSI MO video call / SSAC / 0% access probability for MTSI MO video call + function f_TC_12_19_IMS() runs on IMS_PTC + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; + var MessageHeader v_MessageHeader_Response183; + var INVITE_Request v_InviteRequest; + var SDP_Message v_SDP_MessageStep2; + var boolean v_TcapPcfg; + + // Initial conditions + f_IMS_CC_Preamble(IPCAN_SpeechCall, IMS_NULL); // @sic R5s140334 sic@ + // @sic R5s140334 sic@ + f_IMS_CC_StartSignalling(IPCAN_InitialRegistration); + f_IMS_IPCAN_ModifyConfig(IPCAN, SIB2_TC_12_19); // @sic R5s140577 sic@ + f_IMS_Registration(); + f_IMS_CC_ReleaseConnection(IPCAN_InitialRegistration); + + f_IMS_TestBody_Set(true); + + // @siclog "Step 1" siclog@ + f_UT_RequestIMSVideoCall(MMI, px_IMS_CalleeUri); + + // Step 2 - Ue does not send INVITE + // @siclog "Step 2" siclog@ + f_Delay(10.0); + + // @siclog "Step 3 - 4" siclog@ + f_IMS_IPCAN_ModifyConfig(IPCAN, SIB2_Normal); + + // @siclog "Step 5" siclog@ + f_Delay(15.0); + + // @siclog "Step 6" siclog@ + f_UT_RequestIMSVideoCall(MMI, px_IMS_CalleeUri); + + // Step 7 + 8 - UE does not send INVITE and Wait 49s to expire timer Ty + // @siclog "Step 7 - 8" siclog@ + f_Delay(59.0); + + // Steps 9 to 21 - MTSI MO video call for EPS + // @siclog "Step 9 - 21" siclog@ + f_IMS_CC_StartCall(IPCAN_MO_VideoCall); + + v_InviteRequestWithSdp := f_IMS_MOCallSetup_AnnexC25_Step2(); + v_InviteRequest := v_InviteRequestWithSdp.Invite; + v_SDP_MessageStep2 := v_InviteRequestWithSdp.SdpOffer; + v_TcapPcfg := fl_CheckRTPAVP_TcapPcfg(v_SDP_MessageStep2.media_list[1]); + + v_MessageHeader_Response183 := f_IMS_MOCallSetup_AnnexC25_Step3_4(v_InviteRequestWithSdp, v_TcapPcfg); + + // See TS. 36.508 EUTRA/EPS signalling for IMS MO video call Table 4.5A.8.3-1 Step 12-15 + f_IMS_CC_TriggerDedicatedBearerActivation(IPCAN_MO_VideoCall); // trigger IPCAN to continue with activation of secondary PDP context or dedicated EPS bearers + + f_IMS_MOCallSetup_AnnexC25_Steps5_13(v_InviteRequestWithSdp, v_MessageHeader_Response183); + + f_IMS_CallReleaseMO(v_InviteRequest); + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(IPCAN_MO_SpeechCall); + } + + //---------------------------------------------------------------------------- + + // See 34.229-1 clause 12.19a - MTSI MO video call / SSAC in Connected mode / 0% access probability for MTSI MO video call // @sic R5-144688 sic@ + + function f_TC_12_19a_IMS() runs on IMS_PTC + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; + var MessageHeader v_MessageHeader_Response183; + var INVITE_Request v_InviteRequest; + var SDP_Message v_SDP_MessageStep2; + var boolean v_TcapPcfg; + + // Initial conditions + f_IMS_CC_Preamble(IPCAN_SpeechCall, IMS_NULL); // @sic R5s140334 sic@ + f_IMS_CC_StartSignalling(IPCAN_InitialRegistration); + f_IMS_IPCAN_ModifyConfig(IPCAN, SIB2_TC_12_19); // same TC_12_19 // @sic R5s140577 sic@ + f_IMS_Registration(); + + f_IMS_TestBody_Set(true); + + // @siclog "Step 9" siclog@ + f_UT_RequestIMSVideoCall(MMI, px_IMS_CalleeUri); + + // @siclog "Step 10" siclog@ + f_Delay(10.0); + + // @siclog "Step 11 - 12" siclog@ + f_IMS_IPCAN_ModifyConfig(IPCAN, SIB2_Normal); + + // @siclog "Step 13" siclog@ + f_Delay(15.0); + + // @siclog "Step 14" siclog@ + f_UT_RequestIMSVideoCall(MMI, px_IMS_CalleeUri); + + // Step 15 + 16 - UE does not send INVITE and Wait 49s to expire timer Ty + // @siclog "Step 15 + 16" siclog@ + f_Delay(59.0); + + // Steps 17 to 23 - MTSI MO video call for EPS + // @siclog "Step 17 - 23" siclog@ + + // @sic R5-144279 sic@ + v_InviteRequestWithSdp := f_IMS_MOCallSetup_AnnexC25_Step2(); + v_InviteRequest := v_InviteRequestWithSdp.Invite; + v_SDP_MessageStep2 := v_InviteRequestWithSdp.SdpOffer; + v_TcapPcfg := fl_CheckRTPAVP_TcapPcfg(v_SDP_MessageStep2.media_list[1]); + + v_MessageHeader_Response183 := f_IMS_MOCallSetup_AnnexC25_Step3_4(v_InviteRequestWithSdp, v_TcapPcfg); + + // See TS. 36.508 EUTRA/EPS signalling for IMS MO video call Table 4.5A.8.3-1 Step 12-15 + f_IMS_CC_TriggerDedicatedBearerActivation(IPCAN_MO_VideoCall); // trigger IPCAN to continue with activation of secondary PDP context or dedicated EPS bearers + + f_IMS_MOCallSetup_AnnexC25_Steps5_13(v_InviteRequestWithSdp, v_MessageHeader_Response183); + + f_IMS_CallReleaseMO(v_InviteRequest); + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(IPCAN_MO_VideoCall); + } + + //---------------------------------------------------------------------------- + + // See 34.229-1 clause 12.19b - MTSI MO video call / SSAC in Connected mode / access probability for MTSI MO video call //@sic R5-144688 sic@ + + function f_TC_12_19b_IMS() runs on IMS_PTC + { + // Initial conditions + f_IMS_CC_Preamble(IPCAN_SpeechCall, IMS_NULL); + f_IMS_CC_StartSignalling(IPCAN_InitialRegistration); + f_IMS_Registration(); + + f_IMS_TestBody_Set(true); + + // @siclog "Step 10 + 11" siclog@ + f_IMS_IPCAN_ModifyConfig(IPCAN, SIB2_TC_12_19b); + + // Step 12- Ue does not send INVITE + // @siclog "Step 12" siclog@ + f_Delay(15.0); + + // @siclog "Step 13" siclog@ + f_UT_RequestIMSVideoCall(MMI, px_IMS_CalleeUri); + + // Step 14 - Ue does not send INVITE + // @siclog "Step 14" siclog@ + f_Delay(10.0); + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(IPCAN_InitialRegistration); + } + + //---------------------------------------------------------------------------- + /* + * @desc REFERENCE TS 34.229-1 clause 12.20 + * @status APPROVED (IMS) + */ + function f_TC_12_20_IMS1() runs on IMS_PTC + { /* Emergency call / Success / SSAC / 0% access probability for MTSI MO speech call */ + + // Initial conditions + f_IMS_CC_Preamble(IPCAN_EmergencyCall, IMS_NULL, IMS_Security); // prose specifies only Annex C.2 => not applicable for GIBA @sic R5s140334 sic@ + // @sic R5s140334 sic@ + f_IMS_CC_StartSignalling(IPCAN_InitialRegistration); + f_IMS_IPCAN_ModifyConfig(IPCAN, SIB2_TC_12_20); // @sic R5s140577 sic@ + f_IMS_Registration(); + f_IMS_CC_ReleaseConnection(IPCAN_InitialRegistration); + + f_IMS_IMS_SendCoOrdMsg(OtherPDN); + f_IMS_IMS_WaitForTrigger(OtherPDN); /* @sic R5s140137 sic@ */ + f_IMS_CC_Postamble(IPCAN_EmergencyCall_NormalService); /* @sic R5s140137 sic@ */ + } + + /* + * @desc REFERENCE TS 34.229-1 clause 12.20 + * @status APPROVED (IMS) + */ + function f_TC_12_20_IMS2() runs on IMS_PTC + { + var REGISTER_Request v_RegisterRequest; + var INVITE_Request v_InviteRequest; + + f_IMS_PTC_Init(PDN_2); + + f_IMS_IMS_WaitForTrigger(OtherPDN); + + f_IMS_TestBody_Set(true); + + // @siclog "Step 1 - 12" siclog@ + f_IMS_CC_StartCall(IPCAN_EmergencyCall_NormalService); + + // @siclog "Step 13 - 16" siclog@ + v_RegisterRequest := f_IMS_EmergencyRegistration_C20(); + + // Steps 17-19 - Are executed concurrently on the SS / IPCanEmu + // @siclog "Step 17 - 19" siclog@ + + // @siclog "Step 20 - 24" siclog@ + v_InviteRequest := f_IMS_EmergencyCallSetup_AnnexC22(); + + // @siclog "Step 25 - 26" siclog@ + f_IMS_EmergencyCallRelease(v_InviteRequest); + + f_IMS_TestBody_Set(false); + + f_IMS_IMS_SendCoOrdMsg(OtherPDN); /* @sic R5s140137 sic@ */ + } + + //---------------------------------------------------------------------------- + /* + * @desc REFERENCE TS 34.229-1 clause 12.20a + * + */ + function f_TC_12_20a_IMS1() runs on IMS_PTC + { /* Emergency call / Success / SSAC in connected mode / 0% access probability for MTSI MO speech call */ + //@sic R5-144688 sic@ + + // Initial conditions + f_IMS_CC_Preamble(IPCAN_EmergencyCall, IMS_NULL, IMS_Security); // prose specifies only Annex C.2 => not applicable for GIBA @sic R5s140334 sic@ + f_IMS_CC_StartSignalling(IPCAN_InitialRegistration); + f_IMS_IPCAN_ModifyConfig(IPCAN, SIB2_TC_12_20a); // @sic R5s140577 sic@ + f_IMS_Registration(); + + f_IMS_IMS_SendCoOrdMsg(OtherPDN); + f_IMS_IMS_WaitForTrigger(OtherPDN); + f_IMS_CC_Postamble(IPCAN_EmergencyCall_NormalService); + } + + /* + * @desc REFERENCE TS 34.229-1 clause 12.20a + * + */ + function f_TC_12_20a_IMS2() runs on IMS_PTC + { + var REGISTER_Request v_RegisterRequest; + var INVITE_Request v_InviteRequest; + + f_IMS_PTC_Init(PDN_2); + + f_IMS_IMS_WaitForTrigger(OtherPDN); + + f_IMS_TestBody_Set(true); + + // @siclog "Step 10 - 13" siclog@ + f_IMS_CC_StartCall(IPCAN_EmergencyCall_NormalService); + + // @siclog "Step 14 - 17" siclog@ + v_RegisterRequest := f_IMS_EmergencyRegistration_C20(); + + // Steps 18-20 - Are executed concurrently on the SS / IPCanEmu + // @siclog "Step 18 - 20" siclog@ + + // @siclog "Step 21 - 25" siclog@ + v_InviteRequest := f_IMS_EmergencyCallSetup_AnnexC22(); + + // @siclog "Step 26 - 27" siclog@ + f_IMS_EmergencyCallRelease(v_InviteRequest); + + f_IMS_TestBody_Set(false); + + f_IMS_IMS_SendCoOrdMsg(OtherPDN); + } + + //---------------------------------------------------------------------------- + // See 34.229-1 clause 12.21 - MO MTSI Video call + function f_TC_12_21_IMS() runs on IMS_PTC + { // Steps 1 to 13 as defined in Annex C.25 + + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; + var INVITE_Request v_InviteRequest; + var MessageHeader v_MessageHeader_Response183; + var SDP_Message v_SDP_MessageStep2; + var boolean v_TcapPcfg; + + f_IMS_CC_Preamble(IPCAN_VideoCall, IMS_REGISTERED); + + f_IMS_TestBody_Set(true); + + // @siclog "Step 1" siclog@ + f_IMS_CC_StartCall(IPCAN_MO_VideoCall); + + // @siclog "Step 2" siclog@ + v_InviteRequestWithSdp := f_IMS_MOCallSetup_AnnexC25_Step2(); + v_InviteRequest := v_InviteRequestWithSdp.Invite; + v_SDP_MessageStep2 := v_InviteRequestWithSdp.SdpOffer; + + // @siclog "Step 3 - 4" siclog@ + v_TcapPcfg := fl_CheckRTPAVP_TcapPcfg(v_SDP_MessageStep2.media_list[1]); + v_MessageHeader_Response183 := f_IMS_MOCallSetup_AnnexC25_Step3_4(v_InviteRequestWithSdp, v_TcapPcfg); + + // See TS. 36.508 EUTRA/EPS signalling for IMS MO video call Table 4.5A.8.3-1 Step 12-15 + f_IMS_CC_TriggerDedicatedBearerActivation(IPCAN_MO_VideoCall); // trigger IPCAN to continue with activation of secondary PDP context or dedicated EPS bearers + + // @siclog "Step 5 - 13" siclog@ + f_IMS_MOCallSetup_AnnexC25_Steps5_13(v_InviteRequestWithSdp, v_MessageHeader_Response183); + + // @siclog "Step 14 - 15" siclog@ + f_IMS_CallReleaseMO(v_InviteRequest); + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(IPCAN_MO_VideoCall); + } + + //---------------------------------------------------------------------------- + // See 34.229-1 clause 12.22 - MT MTSI Video call + function f_TC_12_22_IMS() runs on IMS_PTC + { + var IMS_Response_Type v_SessionInProgress183; + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; + var IMS_ResponseWithSdp_Type v_ResponseWithSdp; + var template (value) MessageHeader v_MessageHeader_Invite; + var template (value) INVITE_Request v_InviteRequest; + var template (value) SDP_Message v_SDP_MessageStep1; + var SDP_Message v_SDP_MessageStep4; + var charstring v_FmtAudio := tsc_SDP_FmtAudio; + var charstring v_FmtVideo := tsc_SDP_FmtVideo; + var SipUrl v_ContactUrl; + var boolean v_SrvccAlerting := false; + + f_IMS_CC_Preamble(IPCAN_VideoCall, IMS_REGISTERED); + + f_IMS_TestBody_Set(true); + + f_IMS_CC_StartCall(IPCAN_MT_VideoCall); + + // Steps 1 to 15 as defined in Annex C.26 + v_ContactUrl := f_IMS_PTC_ImsInfo_GetContactUrl(); + + v_SDP_MessageStep1 := f_IMS_BuildSDP_AnnexC26_Step1or7("step 1", v_FmtAudio, v_FmtVideo); + + // Prepare INVITE message to be sent in step 1. + v_MessageHeader_Invite := f_IMS_InviteRequest_MessageHeaderTX(tsc_OptionTagList_precondition, -, v_SrvccAlerting); + v_InviteRequest := cs_INVITE_Request(v_ContactUrl, v_MessageHeader_Invite, cs_MessageBody_SDP(v_SDP_MessageStep1)); + v_InviteRequestWithSdp := f_IMS_InviteRequestWithSdpMT(v_InviteRequest, v_SDP_MessageStep1); + + // @siclog "Step 1 - 4" siclog@ + v_ResponseWithSdp := f_IMS_MTCallSetup_AnnexC26_Steps1_4(v_InviteRequestWithSdp, v_FmtAudio, v_FmtVideo); + v_SessionInProgress183 := v_ResponseWithSdp.Response; + v_SDP_MessageStep4 := v_ResponseWithSdp.SdpMessage; + v_ContactUrl := f_MessageHeader_GetContactSipUrl(v_SessionInProgress183.msgHeader); + + // Establish Dedicated EPS bearer + // See TS. 36.508 EUTRA/EPS signalling for IMS MT video call Table 4.5A.9.3-1 Step 13-16 + f_IMS_CC_TriggerDedicatedBearerActivation(IPCAN_MT_VideoCall); // trigger IPCAN to continue with activation of secondary PDP context or dedicated EPS bearer + + // @siclog "Step 5 - 13" siclog@ + f_IMS_MTCallSetup_AnnexC26_Steps5_13(v_InviteRequestWithSdp, v_FmtAudio, v_FmtVideo, v_SessionInProgress183, v_SDP_MessageStep4); + + // MT Call is now established + + // Step 14-15. SS sends BYE to release the call; UE sends 200 OK for the BYE request and ends the call + // @siclog "Step 14 - 15" siclog@ + f_IMS_CallReleaseMT(v_InviteRequest, v_ContactUrl); + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(IPCAN_MT_VideoCall); + } +} diff --git a/IMS_PART4_IWD_14wk37/IMS/13/IMS_CC_SigCompTestcases.ttcn b/IMS_PART4_IWD_14wk37/IMS/13/IMS_CC_SigCompTestcases.ttcn new file mode 100644 index 0000000..1225593 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/13/IMS_CC_SigCompTestcases.ttcn @@ -0,0 +1,110 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-11 16:21:07 +0200 (Thu, 11 Sep 2014) $ +// $Rev: 12211 $ +/******************************************************************************/ +module IMS_CC_SigCompTestcases { + + import from LibSip_SIPTypesAndValues all; + import from LibSip_SDPTypes all; + import from IMS_Component all; + import from IMS_ASP_TypeDefs all; + import from IMS_SIP_Templates all; + import from IMS_MessageBody_Templates all; + import from IMS_SDP_Messages all; + import from IMS_CC_CommonFunctions all; + import from IMS_Procedures_CallControl all; + import from IMS_PTC_CoordMsg all; + + /****************************************************************************/ + function f_TC_13_2_IMS() runs on IMS_PTC + { // Steps 1 to 13 as defined in Annex C.21 + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: IMS_InviteRequestWithSdp_Type instead of IMS_DATA_REQ */ + var MessageHeader v_MessageHeader_Response183; + var boolean v_SigCompIsActive := true; + + f_IMS_CC_Preamble(IPCAN_SpeechCall, IMS_REGISTERED, IMS_Security, v_SigCompIsActive); + + f_IMS_TestBody_Set(true); + + // @siclog "Step 1" siclog@ + f_IMS_CC_StartCall(IPCAN_MO_SpeechCall); + + // @siclog "Step 2" siclog@ + v_InviteRequestWithSdp := f_IMS_MOCallSetup_AnnexC21_Step2_A4(); + + // @siclog "Step 3 - 4" siclog@ + v_MessageHeader_Response183 := f_IMS_MOCallSetup_AnnexC21_Step3_4(v_InviteRequestWithSdp); + + // See TS. 36.508 EUTRA/EPS signalling for IMS MO speech call Table 4.5A.6.3-1 Step 9-11 + f_IMS_CC_TriggerDedicatedBearerActivation(IPCAN_MO_SpeechCall); // trigger IPCAN to continue with activation of secondary PDP context or dedicated EPS bearer + + // @siclog "Step 5 - 13" siclog@ + f_IMS_MOCallSetup_AnnexC21_Steps5_13(v_InviteRequestWithSdp, v_MessageHeader_Response183); + + // @siclog "Step 14 - 15" siclog@ + f_IMS_CallReleaseMO(v_InviteRequestWithSdp.Invite); + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(IPCAN_MO_SpeechCall); + } + + /* ************************************************************************** */ + // See 34.229-1 clause 13.3 SigComp in the MT Call + // Note: DL sigComp is initialized when starting the test and handled at lower layers + function f_TC_13_3_IMS() runs on IMS_PTC + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; + var IMS_ResponseWithSdp_Type v_ResponseWithSdp; + var IMS_Response_Type v_SessionInProgress183; + var template (value) MessageHeader v_MessageHeader_Invite; + var template (value) INVITE_Request v_InviteRequest; + var template (value) SDP_Message v_Tx_SDP; + var SipUrl v_ContactUrl; + var boolean v_SigCompIsActive := true; + + f_IMS_CC_Preamble(IPCAN_SpeechCall, IMS_REGISTERED, IMS_Security, v_SigCompIsActive); + + f_IMS_TestBody_Set(true); + + f_IMS_CC_StartCall(IPCAN_MT_SpeechCall); + + // Steps 1 to 15 as defined in Annex C.11 + v_ContactUrl := f_IMS_PTC_ImsInfo_GetContactUrl(); + // Determine SS server secure port number + v_Tx_SDP := f_IMS_BuildSDP_AnnexC11_Step1or7("step 1"); + + // Prepare INVITE message to be sent in step 1. + v_MessageHeader_Invite := f_IMS_InviteRequest_MessageHeaderTX(); + v_InviteRequest := cs_INVITE_Request(v_ContactUrl, v_MessageHeader_Invite, cs_MessageBody_SDP(v_Tx_SDP)); + v_InviteRequestWithSdp := f_IMS_InviteRequestWithSdpMT(v_InviteRequest, v_Tx_SDP); + + // @siclog "Step 1 - 4" siclog@ + v_ResponseWithSdp := f_IMS_MTCallSetup_AnnexC11_Steps1_4(v_InviteRequestWithSdp); // !!!! CHECK: INVITE !!!! + v_SessionInProgress183 := v_ResponseWithSdp.Response; + v_ContactUrl := f_MessageHeader_GetContactSipUrl(v_SessionInProgress183.msgHeader); + + // Establish Dedicated EPS bearer + // See TS. 36.508 EUTRA/EPS signalling for IMS MT speech call Table 4.5A.7.3-1 Step 9-12 + f_IMS_CC_TriggerDedicatedBearerActivation(IPCAN_MT_SpeechCall); // trigger IPCAN to continue with activation of secondary PDP context or dedicated EPS bearer + + // @siclog "Step 5 - 12" siclog@ + f_IMS_MTCallSetup_AnnexC11_Steps5_13(v_InviteRequestWithSdp, v_SessionInProgress183); + + // MT Call is now established + + // @siclog "Step 13 - 14" siclog@ + f_IMS_CallReleaseMT(v_InviteRequest, v_ContactUrl); + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(IPCAN_MT_SpeechCall); + } + +} diff --git a/IMS_PART4_IWD_14wk37/IMS/15/IMS_CC_SSConferencingTestcases.ttcn b/IMS_PART4_IWD_14wk37/IMS/15/IMS_CC_SSConferencingTestcases.ttcn new file mode 100644 index 0000000..7f91148 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/15/IMS_CC_SSConferencingTestcases.ttcn @@ -0,0 +1,1032 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 17:10:15 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12171 $ +/******************************************************************************/ + +module IMS_CC_SSConferencingTestcases { + import from CommonDefs all; + import from IP_ASP_TypeDefs all; + import from LibSip_Common all; + import from LibSip_MessageBodyTypes all; + import from LibSip_SIPTypesAndValues all; + import from LibSip_SDPTypes all; + import from IMS_Component all; + import from IMS_ASP_TypeDefs all; + import from IMS_ASP_Templates all; + import from IMS_CommonParameters all; + import from IMS_CommonTemplates all; + import from IMS_CommonDefs all; + import from IMS_SIP_Templates all; + import from IMS_MessageBody_Templates all; + import from IMS_SDP_Templates all; + import from IMS_SDP_Messages all; + import from IMS_CC_CommonFunctions all; + import from IMS_Procedures_Registration all; + import from IMS_Procedures_CallControl all; + import from IMS_Procedures_Common all; + import from UpperTesterFunctions all; + import from IMS_PTC_CoordMsg all; + import from IMS_CommonFunctions all; + import from urn_ietf_params_xml_ns_conference_info all; +// import from urn_ietf_params_xml_ns_conference_info language "XSD" all; + + const float tsc_WaitForConferenceSubscription := 3.0; + const integer tsc_IMS_CseqValue_A53 := 4321; + + //---------------------------------------------------------------------------- + + template (value) Media_type cs_Media(charstring p_Label, + charstring p_SsrcId) := { + id := "1", + attr := omit, + display_text := omit, + type_ := "audio", + label_ := p_Label, + src_id := p_SsrcId, + status := sendrecv, + elem_list := {} + }; + + template (value) Endpoint_type cs_Endpoint(charstring p_EndPointEntity, + template (value) Media_type p_Media) := + { + entity := p_EndPointEntity, + state := omit, + attr := omit, + display_text := omit, + referred := omit, + status := connected, // Endpoint_status_type status optional, + joining_method := dialed_in, // Joining_type joining_method optional, + joining_info := omit, // Execution_type joining_info optional, + disconnection_method := omit, // Disconnection_type disconnection_method optional, + disconnection_info := omit, // Execution_type disconnection_info optional, + media_list := {p_Media}, // record of Media_type media_list, + call_info := omit, // Call_type call_info optional, + elem_list := {} + }; + + template (value) Conference_type cs_XmlBody_ConfInfo(charstring p_ConferenceUri, + charstring p_UserEntity, // User's URI + charstring p_EndPointEntity, // e.g. User's contact URI + State_type p_State := full, + integer p_Version := 0, + template (value) Media_type p_Media := cs_Media("34567", "34568")) := + { + entity := p_ConferenceUri, // XSD.AnyURI entity, + state := p_State, // state_type state optional, + version := p_Version, // XSD.UnsignedInt version optional, + attr := omit, // record (1..infinity) of XSD.String attr optional, + conference_description := omit, // Conference_description_type conference_description optional, + host_info := omit, // optional, + conference_state := omit, // Conference_state_type conference_state optional, + users := { + state := omit, + attr := omit, + user_list := { + { + entity := p_UserEntity, + state := omit, + attr := omit, + display_text := omit, + associated_aors := omit, + roles := omit, + languages := omit, + cascaded_focus := omit, + endpoint_list := {cs_Endpoint(p_EndPointEntity, p_Media)}, + elem_list := {} + } + }, + elem_list := {} + }, + sidebars_by_ref := omit, // Uris_type sidebars_by_ref optional, + sidebars_by_val := omit, // Sidebars_by_val_type sidebars_by_val optional, + elem_list := {} // record of XSD.String elem_list + }; + + template (value) MessageBody cs_MessageBody_Conference(template (value) Conference_type p_Conference) := + { + xmlBody := oct2char(bit2oct(encvalue(p_Conference))) + }; + + //============================================================================ + + function f_IMS_ReferRequest_MessageHeaderRX(boolean p_ReferCreatingDialog := true, + template (present) SipUrl p_RequestUri, + template (present) SipUrl p_ReferToUri, + boolean p_SessionIdSupported := false) runs on IMS_PTC return template (present) MessageHeader + { /* MO REFER (see TS 34.229, A.2.10, C.19): + creates new dialog for C.19, 15.18 and 15.19; uses existing dialog acc. A.2.10 in 15.23 and 15.25 */ + var boolean v_IsGiba := f_IMS_PTC_SecurityScheme_IsGiba(); // => A1/A2 + var template (present) MessageHeader v_MessageHeader_Refer := cr_MessageHeader_Dummy; + var template (present) RouteBody_List v_RouteBodyList; + var template (present) SipUrl v_SipUrlFrom := ?; + var template (present) integer v_CSeqValue := ?; + var template (present) From v_From; + var template (present) To v_To; + var template SessionId v_SessionId; + var template (present) CallId v_CallId; + var IMS_ProtectedPorts_Type v_Protected; + var template integer v_Port_us := ?; // Acc. A.2.10 mandatory even for GIBA + var template integer v_Port_ps := *; + + if (not v_IsGiba) { + v_Protected := f_IMS_PTC_Security_GetProtectedPorts(); + v_Port_us := v_Protected.Port_us; + v_Port_ps := v_Protected.Port_ps; + } + // As in INVITE: + v_RouteBodyList := { + cr_RouteBody(*, cr_SipUri_HostPort_lr(f_IMS_PTC_Pcscf_Get(), v_Port_ps)), + cr_RouteBody(*, cr_SipUri_HostPort_lr(px_IMS_Scscf)) + }; + + + if (p_ReferCreatingDialog) { + v_From := cr_From(*, v_SipUrlFrom); + v_To := cr_ToDef(p_RequestUri); + v_CallId := cr_CallId(?); + v_SessionId := f_IMS_SessionId_RX_IfSupported(p_SessionIdSupported); + + } else { + // T.B.D. (used by 15.23 and 15.25 only) + v_From := f_IMS_RequestInDialog_FromHeaderRX(); + v_To := f_IMS_RequestInDialog_ToHeaderRX(); + v_CallId := f_IMS_PTC_ImsInfo_DialogGetCallId(); + v_SessionId := f_IMS_PTC_ImsInfo_DialogGetSessionId(); + v_CSeqValue := f_IMS_RequestInDialog_CSeqValueRX(dialogRemote); + } + v_MessageHeader_Refer.via := f_IMS_InviteRequest_ViaRX(); // same as for INVITE; PROSE ISSUE: acc. to A.2.10 in case of GIBA the unprotected port is mandatory but it is optional for the INVITE + v_MessageHeader_Refer.route := cr_Route(v_RouteBodyList); + v_MessageHeader_Refer.toField := v_To; + v_MessageHeader_Refer.fromField := v_From; + v_MessageHeader_Refer.callId := v_CallId; + v_MessageHeader_Refer.sessionId := v_SessionId; + v_MessageHeader_Refer.cSeq := cr_CseqDef(v_CSeqValue, "REFER"); + + v_MessageHeader_Refer.maxForwards := cr_MaxForwardsDef; + v_MessageHeader_Refer.contact := cr_Contact(cr_SipUri_HostPort(?, v_Port_us)); + v_MessageHeader_Refer.referTo := cr_ReferTo(p_ReferToUri); + + if (not v_IsGiba) { + v_MessageHeader_Refer.require := cr_RequireSecAgree; + v_MessageHeader_Refer.proxyRequire := cr_ProxyRequireDef; + v_MessageHeader_Refer.securityVerify := f_IMS_PTC_BuildSecurityVerifyHeader(); + v_MessageHeader_Refer.pAccessNetworkInfo := cr_PAccessNetworkInfoDef(f_IMS_PTC_RanType_GetString()); + } else { + v_MessageHeader_Refer.securityVerify := omit; + } + + return v_MessageHeader_Refer; + } + + //---------------------------------------------------------------------------- + + function f_IMS_A_2_10_Refer_CommonChecks(IMS_DATA_REQ p_IMS_REFER_REQ, + boolean p_ReferCreatingDialog := true) runs on IMS_PTC + { + var MessageHeader v_MessageHeader := p_IMS_REFER_REQ.Request.Refer.msgHeader; + var InternetProtocol_Type v_Protocol := p_IMS_REFER_REQ.RoutingInfo.Protocol; + var SipUrl v_SipUrlFrom := f_Addr_Union_GetSipUrl(v_MessageHeader.fromField.addressField); + + f_IMS_MessageHeader_Request_CheckVia(v_MessageHeader, v_Protocol); // check whether via contains "SIP URI with IP address or FQDN" (see @sic R5s120727 sic@) + f_IMS_MessageHeader_CheckContactAddr(v_MessageHeader); // check whether contact contains "SIP URI with IP address or FQDN" (see @sic R5s120727 sic@) + if (p_ReferCreatingDialog) { + f_IMS_MessageHeader_CheckTo(v_MessageHeader, noToTag); // check that there is no To tag + + // Additional checks regarding SIP URI in the From header @sic R5-130750 change 3 sic@ + if (not f_IMS_PublicUserId_Match(f_IMS_PTC_ImsInfo_GetAllIMPUs(), v_SipUrlFrom)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "invalid 'From'"); + } + // Check Call-Id + if (match(v_MessageHeader.callId, f_IMS_PTC_ImsInfo_DialogGetCallId())) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "invalid 'CallId' in REFER (has to be different than in previous INVITE)"); + } + } + } + + //---------------------------------------------------------------------------- + + function f_IMS_ReferRequest_MessageHeaderTX(boolean p_ReferCreatingDialog := true, + charstring p_CallerSipAddrStr, + charstring p_ConferenceURI, + template (omit) charstring p_ReferredByURI := omit, + boolean p_SessionIdSupported := false, + integer p_CSeqValue := 1234) runs on IMS_PTC return template (value) MessageHeader + { /* REFER acc. to see TS 34.229, A.2.12 - MT REFER: + p_CallerSipAddrStr .. Address of the remote UE + p_ConferenceURI .. URI of the conference focus as defined in RFC 4353 */ + /* Prose issues (-> A.2.12): + * - acc to prose there shall be P-Access-Network-Info (does not make sense for MT) + * - Via is not exactly the same as for INVITE (A.2.9) but there seems to be nor reason for any difference + */ + var template (value) MessageHeader v_MessageHeader_Refer := cs_MessageHeader_Dummy; + var template (value) SipUrl v_PublicUserId_SipUrl := f_IMS_PTC_ImsInfo_GetSipUriTX(defaultId); // as for INVITE + var template (omit) SessionId v_SessionId := omit; + var charstring v_CallIdString; + var template (value) From v_From; + var template (value) To v_To; + var template (value) CallId v_CallId; + var integer v_CSeqValue; + + if (p_ReferCreatingDialog) { + v_CSeqValue := p_CSeqValue; + v_From := cs_From(f_SIP_BuildSipUri_TX(p_CallerSipAddrStr), f_IMS_GenerateTag("REFER", "From")); + v_To := cs_ToDef(v_PublicUserId_SipUrl); + v_CallIdString := f_IMS_PTC_GenerateCallId("REFER"); + v_CallId := cs_CallId(v_CallIdString); + if (p_SessionIdSupported) { + v_SessionId := cs_SessionId(f_IMS_SessionId_TX_Generate(v_CallIdString)); + } + } else { /* no dialog is active => there has been no previous INVITE (e.g. test case 15.21) + => REFER creates dialog between the remote UE (p_CallerSipAddrStr) and the UE (addressed with default IMPU) - see RFC 3515 clause 2 */ + // !!!! this branch needs to be checked !!!! + v_CSeqValue := f_IMS_PTC_ImsInfo_CseqIncr(dialogLocal); + v_To := f_IMS_RequestInDialog_ToHeaderTX(); + v_From := f_IMS_RequestInDialog_FromHeaderTX(); + v_CallId := f_IMS_PTC_ImsInfo_DialogGetCallId(); + v_SessionId := f_IMS_PTC_ImsInfo_DialogGetSessionId(); + } + + v_MessageHeader_Refer.via := f_IMS_InviteRequest_ViaTX(); // same as for INVITE + v_MessageHeader_Refer.fromField := v_From; + v_MessageHeader_Refer.toField := v_To; + v_MessageHeader_Refer.callId := v_CallId; + v_MessageHeader_Refer.sessionId := v_SessionId; + v_MessageHeader_Refer.cSeq := cs_CseqDef(v_CSeqValue, "REFER"); + v_MessageHeader_Refer.contact := cs_Contact(f_SIP_BuildSipUri_TX(p_CallerSipAddrStr, tsc_IMS_CallerPort)); /* same as for INVITE: this is the address to which the UE shall send the notifications */ + v_MessageHeader_Refer.referTo := cs_ReferTo(f_SIP_BuildSipUri_TX(p_ConferenceURI)); /* NOTE: acc. to 24.147 cl. 5.3.1.5.2 when inviting another user there shall be a "method=INVITE" + * or the "method parameter shall be omitted => we don't need to include the "method" parameter */ + v_MessageHeader_Refer.maxForwards := cs_MaxForwardsDef; + + if (ispresent(p_ReferredByURI)) { + v_MessageHeader_Refer.referredBy := cs_ReferredBy(f_SIP_BuildSipUri_TX(valueof(p_ReferredByURI))); /* NOTE: acc. to 24.147 cl. 5.3.1.5.2 this shall be the "URI of the conference participant that is sending the REFER request" + * => it might not be necessary to use a different URI than as for the From header */ + } + return v_MessageHeader_Refer; + } + + function f_IMS_NotifyRequest_MessageHeader_A211(template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex := omit, + template (value) SipUrl p_ContactUri, + template (value) SubscriptionState p_SubscriptionState) runs on IMS_PTC return template (value) MessageHeader + { /* Send NOTIFY acc. to 34.229-1 Annex A.2.11 */ + /* NOTE: this function requires a second "REFER" dialog being establisehed at the IMS PTC */ + var template (value) MessageHeader v_MessageHeader_Notify := cs_MessageHeader_Dummy; + var integer v_CseqValue := f_IMS_PTC_ImsInfo_CseqIncr(dialogLocal, p_DialogIndex); + + v_MessageHeader_Notify.via := f_IMS_InviteRequest_ViaTX(); // same as for INVITE + v_MessageHeader_Notify.toField := f_IMS_RequestInDialog_ToHeaderTX(p_DialogIndex); + v_MessageHeader_Notify.fromField := f_IMS_RequestInDialog_FromHeaderTX(p_DialogIndex); + v_MessageHeader_Notify.callId := f_IMS_PTC_ImsInfo_DialogGetCallId(p_DialogIndex); + v_MessageHeader_Notify.sessionId := f_IMS_PTC_ImsInfo_DialogGetSessionId(referDialog); + v_MessageHeader_Notify.cSeq := cs_CseqDef(v_CseqValue, "NOTIFY"); + v_MessageHeader_Notify.contact := cs_Contact(p_ContactUri); + v_MessageHeader_Notify.contentType := cs_ContentType("message/sipfrag"); + v_MessageHeader_Notify.event := cs_EventDef("refer"); + v_MessageHeader_Notify.maxForwards := cs_MaxForwardsDef(69); + v_MessageHeader_Notify.subscriptionState := p_SubscriptionState; + + return v_MessageHeader_Notify; + } + + function f_IMS_NotifyRequest_MessageHeader_A213(charstring p_SubscriptionState_SubstateValue, + template SemicolonParam_List p_SubscriptionState_SubexpParams) runs on IMS_PTC return template (present) MessageHeader + { /* A.2.13 MO NOTIFY for refer package */ + /* NOTE: this function requires a second "REFER" dialog being establisehed at the IMS PTC */ + var template (present) MessageHeader v_MessageHeader_Notify := cr_MessageHeader_Dummy; + var template (present) integer v_CSeqValue := f_IMS_RequestInDialog_CSeqValueRX(dialogRemote, referDialog); + var template integer v_Port_ps := *; + var template integer v_Port_us := *; + var template (present) RouteBody_List v_RouteBodyList; + var IMS_ProtectedPorts_Type v_Protected; + + if (f_IMS_PTC_Security_IsStarted()) { + v_Protected := f_IMS_PTC_Security_GetProtectedPorts(); + v_Port_us := v_Protected.Port_us; + v_Port_ps := v_Protected.Port_ps; + } + v_RouteBodyList := { + cr_RouteBody(*, cr_SipUri_HostPort_lr(f_IMS_PTC_Pcscf_Get(), v_Port_ps)), + cr_RouteBody(*, cr_SipUri_HostPort_lr(px_IMS_Scscf)) + }; + + v_MessageHeader_Notify.via := f_IMS_InviteRequest_ViaRX(); /* additional checks required after message has been received (-> a_IMS_ReceiveNotifyForReferAndSendOK) */ + v_MessageHeader_Notify.route := cr_Route(v_RouteBodyList); + v_MessageHeader_Notify.toField := f_IMS_RequestInDialog_ToHeaderRX(referDialog); + v_MessageHeader_Notify.fromField := f_IMS_RequestInDialog_FromHeaderRX(referDialog); + v_MessageHeader_Notify.callId := f_IMS_PTC_ImsInfo_DialogGetCallId(referDialog); + v_MessageHeader_Notify.sessionId := f_IMS_PTC_ImsInfo_DialogGetSessionId(referDialog); + v_MessageHeader_Notify.cSeq := cr_CseqDef(v_CSeqValue, "NOTIFY"); + + v_MessageHeader_Notify.contact := cr_Contact(cr_SipUri_HostPort(?, v_Port_us)); /* additional checks required after message has been received (-> a_IMS_ReceiveNotifyForReferAndSendOK) */ + v_MessageHeader_Notify.contentType := cr_ContentType("message/sipfrag"); + v_MessageHeader_Notify.event := cr_EventDef("refer"); + + v_MessageHeader_Notify.maxForwards := cr_MaxForwardsDef; + v_MessageHeader_Notify.subscriptionState := cr_SubscriptionState(p_SubscriptionState_SubstateValue, p_SubscriptionState_SubexpParams); + + return v_MessageHeader_Notify; + } + + function f_IMS_NotifyRequest_MessageHeader_A53(SUBSCRIBE_Request p_SubscribeRequest, + charstring p_ConferenceUri, + integer p_CseqValue, + template (value) SubscriptionState p_SubscriptionState) runs on IMS_PTC return template (value) MessageHeader + { /* Prepare NOTIFY header according. to 34.229-1 Annex A.5.3 */ + var charstring v_NW_AddrStr := f_IMS_PTC_NW_Address_GetAddrStr(); + var charstring v_Scscf := px_IMS_Scscf; + var CharStringList_Type v_ViaAddressList := {v_NW_AddrStr, v_Scscf}; + var template (value) SipUrl v_ContactSipUrl := f_SIP_BuildSipUri_TX(p_ConferenceUri); + var EventType v_EventType := "conference"; + + return f_IMS_NotifyRequest_MessageHeader_Common(p_SubscribeRequest, v_ViaAddressList, v_ContactSipUrl, v_EventType, p_CseqValue, p_SubscriptionState); + } + + altstep a_IMS_ReceiveNotifyForReferAndSendOK(charstring p_CallerSipAddrStr, + charstring p_SubscriptionState_SubstateValue, + template SemicolonParam_List p_SubscriptionState_SubexpParams := *, + boolean p_SubscriptionState_NoExpires := false, + boolean p_RepeatFlag := false) runs on IMS_PTC + { /* receive NOTIFY acc. to A.2.13 and respond with 200 OK */ + var template (present) MessageHeader v_MessageHeader_Template := f_IMS_NotifyRequest_MessageHeader_A213(p_SubscriptionState_SubstateValue, p_SubscriptionState_SubexpParams); + var template (present) MessageBody v_MessageBody := cr_MessageBody_SipFrag("SIP/2.0 100 Trying"); + var MessageHeader v_MessageHeader_Notify; + var template (value) IMS_RoutingInfo_Type v_RoutingInfo; + var template (value) MessageHeader v_MessageHeader_200; + var template (omit) GenericParam v_ExpiresParam; + var IMS_DATA_REQ v_IMS_DATA_REQ; + + [] IMS_Server.receive(car_IMS_Notify_Request(cr_NOTIFY_Request(f_SIP_BuildSipUri_RX(p_CallerSipAddrStr), v_MessageHeader_Template, v_MessageBody))) -> value v_IMS_DATA_REQ + { + v_MessageHeader_Notify := v_IMS_DATA_REQ.Request.Notify.msgHeader; + // additional checks: + f_IMS_MessageHeader_CheckContactAddr(v_MessageHeader_Notify); // check whether contact contains "SIP URI with IP address or FQDN" + f_IMS_MessageHeader_Request_CheckVia(v_MessageHeader_Notify, v_IMS_DATA_REQ.RoutingInfo.Protocol); + if (p_SubscriptionState_NoExpires) { + v_ExpiresParam := f_SIP_SemicolonParamList_GetParam(v_MessageHeader_Notify.subscriptionState.substateParams, "expires"); + if (ispresent(v_ExpiresParam)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "'expires' shall be omitted in NOTIFY.subscriptionState"); + } + } + v_RoutingInfo := f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo); + v_MessageHeader_200 := f_IMS_OtherResponse_200_MessageHeaderTX(v_MessageHeader_Notify); + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo, cs_Response(c_statusLine200, v_MessageHeader_200))); + if (p_RepeatFlag) {repeat;} + } + } + + altstep a_IMS_Conference_ReceiveSubscribeA53SendOK(out IMS_DATA_REQ p_IMS_SUBSCRIBE_REQ, + charstring p_ConferenceUri) runs on IMS_PTC + { /* UE subscribes to conference event package acc. to 34.229-1 A.5.1 and A.5.2 */ + var template (present) SipUrl v_ConferenceSipUrlRX := f_SIP_BuildSipUri_RX(p_ConferenceUri); + var template (present) MessageHeader v_MessageHeader_Subscribe := f_IMS_SubscribeRequest_MessageHeaderRX("conference", v_ConferenceSipUrlRX, ?); + var MessageHeader v_MessageHeader_SubscribeValue; + var IMS_DATA_REQ v_IMS_SUBSCRIBE_REQ; + + [] IMS_Server.receive(car_IMS_Subscribe_Request(cr_SUBSCRIBE_Request(v_ConferenceSipUrlRX, v_MessageHeader_Subscribe))) -> value v_IMS_SUBSCRIBE_REQ + { + p_IMS_SUBSCRIBE_REQ := v_IMS_SUBSCRIBE_REQ; + v_MessageHeader_SubscribeValue := v_IMS_SUBSCRIBE_REQ.Request.Subscribe.msgHeader; + f_IMS_MessageHeader_CheckTo(v_MessageHeader_SubscribeValue, noToTag); + f_IMS_MessageHeader_Request_CheckVia(v_MessageHeader_SubscribeValue, v_IMS_SUBSCRIBE_REQ.RoutingInfo.Protocol); + f_IMS_MessageHeader_CheckContactAddr(v_MessageHeader_SubscribeValue, true); + + f_IMS_SUBSCRIBE_Response(v_IMS_SUBSCRIBE_REQ, "7200", p_ConferenceUri); + } + } + + function f_IMS_Conference_SendNotifyReceiveOK(template (value) SipUrl p_ContactUrl, + template (value) MessageHeader p_MessageHeader_Notify, + template (value) MessageBody p_MessageBody) runs on IMS_PTC + { /* common function to send NOTIFY and wait for 200 OK */ + var InternetProtocol_Type v_Protocol := f_IMS_PTC_ImsInfo_GetTransportProtocol(); + var template (present) MessageHeader v_MessageHeader_Response := f_IMS_OtherResponse_200_MessageHeaderRX(p_MessageHeader_Notify); + + IMS_Client.send(cas_IMS_Notify_Request(cs_IMS_RoutingInfo(v_Protocol), cs_NOTIFY_Request(p_ContactUrl, p_MessageHeader_Notify, p_MessageBody))); + f_IMS_ReceiveResponse(p_MessageHeader_Notify, v_Protocol, cr_Response(c_statusLine200, v_MessageHeader_Response)); + } + + + function f_IMS_Conference_SendNotifyA53ReceiveOK(SUBSCRIBE_Request p_SubscribeRequest, + charstring p_ConferenceUri, + integer p_CseqValue, + template (value) SubscriptionState p_SubscriptionState, + template (value) Conference_type p_ConferenceBody) runs on IMS_PTC + { /* When the UE has subscribed to conference event package: send NOTIFY acc. to 34.229-1 A.5.3 and wait for OK */ + var SipUrl v_ContactUrl := f_MessageHeader_GetContactSipUrl(p_SubscribeRequest.msgHeader); + var template (value) MessageHeader v_MessageHeader_Notify := f_IMS_NotifyRequest_MessageHeader_A53(p_SubscribeRequest, p_ConferenceUri, p_CseqValue, p_SubscriptionState); + + f_IMS_Conference_SendNotifyReceiveOK(v_ContactUrl, v_MessageHeader_Notify, cs_MessageBody_Conference(p_ConferenceBody)); + } + + //============================================================================ + // TS 34.229-1 Annex C.10 + //---------------------------------------------------------------------------- + + function f_IMS_ConferenceCreation_AnnexC10_Step2_3(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp, + charstring p_ContactURI := tsc_IMS_TemporaryConferenceUri) + runs on IMS_PTC return MessageHeader + { /* return MessageHeader of the 183 response */ + var template (omit) SemicolonParam_List v_AditionalContactParams := omit; + + v_AditionalContactParams := f_SemicolonParam_List_Add_TX(v_AditionalContactParams, cs_GenericParam("isfocus")); // As per C.10 + + return f_IMS_MOCallSetup_AnnexC21_Step3_4(p_InviteRequestWithSdp, p_ContactURI, v_AditionalContactParams); + } + + function f_IMS_ConferenceCreation_AnnexC10_Steps1_9(charstring p_ConferenceFactoryUri, + charstring p_TemporaryConferenceUri, + charstring p_FinalConferenceUri, + boolean p_RadioBearersEstablished := false) runs on IMS_PTC return IMS_InviteRequestWithSdp_Type + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; + var INVITE_Request v_InviteRequest; + var MessageHeader v_MessageHeader_183; + var template (value) SipUrl v_ContactUrl; + var template (value) MessageHeader v_MessageHeader_InviteResponse_200; + var template (value) IMS_RoutingInfo_Type v_RoutingInfo_DL; + var template (present) MessageHeader v_MessageHeader_Ack; + + // @siclog "Step 1" siclog@ UE sends INVITE + v_InviteRequestWithSdp := f_IMS_MOCallSetup_AnnexC21_Step2_Common(p_ConferenceFactoryUri); + v_InviteRequest := v_InviteRequestWithSdp.Invite; + + // @siclog "Step 2 - 3" siclog@ same steps as for C.10 what in fact are steps 3 - 4 of C.21 + v_MessageHeader_183 := f_IMS_ConferenceCreation_AnnexC10_Step2_3(v_InviteRequestWithSdp, p_TemporaryConferenceUri); + + if (not p_RadioBearersEstablished) { + // See TS. 36.508 EUTRA/EPS signalling for IMS MO speech call Table 4.5A.6.3-1 Step 9-11 + f_IMS_CC_TriggerDedicatedBearerActivation(IPCAN_MO_SpeechCall); // trigger IPCAN to continue with activation of secondary PDP context or dedicated EPS bearer + } + + // @siclog "Step 4 - 7" siclog@ same steps as steps 5 - 8 of C.21 + f_IMS_MOCallSetup_AnnexC21_Steps5_8(v_InviteRequestWithSdp, v_MessageHeader_183); + + // @siclog "Step 8" siclog@ Send 200 OK (response to INVITE) + v_MessageHeader_InviteResponse_200 := f_IMS_OtherResponse_200_MessageHeaderTX(v_InviteRequest.msgHeader); + v_ContactUrl := f_SIP_BuildSipUri_TX(p_FinalConferenceUri); + v_MessageHeader_InviteResponse_200.contact := cs_Contact(v_ContactUrl, {cs_GenericParam("isfocus")}); /* !!!! PROSE ISSUE: this is missing for C10 + but is included in 15.17 and seems to be necessary acc. to 24.147 clause 5.3.1.3 !!!! */ + + + v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(v_InviteRequestWithSdp.RoutingInfo); + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine200, v_MessageHeader_InviteResponse_200))); + + // @siclog "Step 9" siclog@ UE sends an ACK to acknowledge receipt of the 200 OK for INVITE + v_MessageHeader_Ack := f_IMS_AckRequest_MessageHeaderRX(v_InviteRequest, c_statusLine200); + IMS_Server.receive(car_IMS_Ack_Request(cr_ACK_Request(v_ContactUrl, v_MessageHeader_Ack))); + + return v_InviteRequestWithSdp; + } + + function f_IMS_ConferenceCreation_AnnexC10_Steps12_13(SUBSCRIBE_Request p_SubscribeRequest, + charstring p_ConferenceUri, + integer p_CseqValue := tsc_IMS_CseqValue_A53) runs on IMS_PTC + { /* send NOTIFY acc. to A.5.3 and wait for OK */ + var SipUrl v_ContactUrl := f_MessageHeader_GetContactSipUrl(p_SubscribeRequest.msgHeader); + var template (value) SubscriptionState v_SubscriptionState := cs_SubscriptionState_Active("7200"); + var template (value) Conference_type v_ConferenceBody := cs_XmlBody_ConfInfo(p_ConferenceUri, + px_IMS_PublicUserIdentity1, + f_SIP_SipUrl2Str(v_ContactUrl)); + + f_IMS_Conference_SendNotifyA53ReceiveOK(p_SubscribeRequest, p_ConferenceUri, p_CseqValue, v_SubscriptionState, v_ConferenceBody); + } + + function f_IMS_ConferenceCreation_AnnexC10_Steps10_13(charstring p_FinalConferenceUri, + integer p_CseqValue := tsc_IMS_CseqValue_A53) runs on IMS_PTC return template (omit) SUBSCRIBE_Request + { + var IMS_DATA_REQ v_IMS_SUBSCRIBE_REQ_ByRef; + var IMS_DATA_REQ v_IMS_SUBSCRIBE_REQ; + timer t_Timer; + + t_Timer.start(tsc_WaitForConferenceSubscription); // !!!! PROSE ISSUE: needs to be specified in the prose !!!! + + // @siclog "Step 10 - 11" siclog@ Receive SUBSCRIBE, send OK + alt { + [] a_IMS_Conference_ReceiveSubscribeA53SendOK(v_IMS_SUBSCRIBE_REQ_ByRef, p_FinalConferenceUri) { + v_IMS_SUBSCRIBE_REQ := v_IMS_SUBSCRIBE_REQ_ByRef; + t_Timer.stop; + } + [] t_Timer.timeout {} + } + // @siclog "Step 12 - 13" siclog@ If the UE has sent SUBSCRIBE at step 10: SS sends NOTIFY and waits for 200 OK by the UE + if (isbound(v_IMS_SUBSCRIBE_REQ)) { + f_IMS_ConferenceCreation_AnnexC10_Steps12_13(v_IMS_SUBSCRIBE_REQ.Request.Subscribe, p_FinalConferenceUri, p_CseqValue); + return v_IMS_SUBSCRIBE_REQ.Request.Subscribe; + } + return omit; + } + + function f_IMS_ConferenceCreation_AnnexC10(charstring p_ConferenceFactoryUri, + charstring p_TemporaryConferenceUri, + charstring p_FinalConferenceUri, + boolean p_RadioBearersEstablished := false) runs on IMS_PTC return IMS_InviteRequestWithSdp_Type + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; + + v_InviteRequestWithSdp := f_IMS_ConferenceCreation_AnnexC10_Steps1_9(p_ConferenceFactoryUri, p_TemporaryConferenceUri, p_FinalConferenceUri, p_RadioBearersEstablished); + f_IMS_ConferenceCreation_AnnexC10_Steps10_13(p_FinalConferenceUri); + + return v_InviteRequestWithSdp; + } + + //============================================================================ + // TS 34.229-1 Annex C.19 + //---------------------------------------------------------------------------- + + function f_IMS_InviteUserToConference_AnnexC19_Steps1_6(boolean p_ReferCreatingDialog := true, + charstring p_RequestUriString, + charstring p_ReferToUriString) runs on IMS_PTC + { /* p_RequestUriString ... URI to which UE shall send the Refer: conference URI (annex C.19, testcase 15.19) or remote URI (test case 15.18) + p_ReferToUriString ... URI to be used in the refer-to header of the REFER message: remote URI (annex C.19, testcase 15.19) or conference URI (test case 15.18) */ + var template (present) MessageHeader v_MessageHeader_ReferTemplate; + var MessageHeader v_MessageHeader_ReferValue; + var IMS_DATA_REQ v_IMS_REFER_REQ; + var REFER_Request v_ReferRequest; + var template (value) MessageHeader v_MessageHeader_Notify; + var template (value) MessageHeader v_MessageHeader_Response; + var template (value) IMS_RoutingInfo_Type v_RoutingInfo_DL; + var template (omit) IMS_PTC_DialogIndex_Type v_DialogIndex := omit; + var template (present) SipUrl v_RequestUriRefer := f_SIP_BuildSipUri_RX(p_RequestUriString); + var template (present) SipUrl v_ReferToUri := f_SIP_BuildSipUri_RX(p_ReferToUriString); + var template (value) SipUrl v_RequestUrlNotify; + var template (value) SipUrl v_ContactUrlNotify := f_SIP_BuildSipUri_TX(p_RequestUriString, f_IMS_PTC_GetPort_ps()); + var charstring v_ToTag; + + // Step 1. UE sends REFER to SS + v_MessageHeader_ReferTemplate := f_IMS_ReferRequest_MessageHeaderRX(p_ReferCreatingDialog, v_RequestUriRefer, v_ReferToUri); + IMS_Server.receive(car_IMS_Refer_Request(cr_REFER_Request(v_RequestUriRefer, v_MessageHeader_ReferTemplate))) -> value v_IMS_REFER_REQ; + f_IMS_A_2_10_Refer_CommonChecks(v_IMS_REFER_REQ); + v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(v_IMS_REFER_REQ.RoutingInfo); + v_MessageHeader_ReferValue := v_IMS_REFER_REQ.Request.Refer.msgHeader; + v_RequestUrlNotify := f_MessageHeader_GetContactSipUrl(v_MessageHeader_ReferValue); + if (p_ReferCreatingDialog) { + v_DialogIndex := referDialog; + f_IMS_PTC_ImsInfo_DialogInit(dialogRemote, v_MessageHeader_ReferValue, v_DialogIndex); + } + + // Step 2. The SS responds with 202 Accepted + v_MessageHeader_Response := f_IMS_Accepted_202_MessageHeaderTX(v_MessageHeader_ReferValue); + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine202, v_MessageHeader_Response))); + if (p_ReferCreatingDialog) { + v_ToTag := valueof(f_MessageHeader_GetToTag(v_MessageHeader_Response)); // v_MessageHeader_Response has a to-tag (as by f_IMS_Accepted_202_MessageHeaderTX) + f_IMS_PTC_ImsInfo_DialogSetLocalTag(v_ToTag, v_DialogIndex); + } + + // Step 3 - 4. The SS sends initial NOTIFY for the implicit subscription created by the REFER request; UE responds with 200 OK + v_MessageHeader_Notify := f_IMS_NotifyRequest_MessageHeader_A211(v_DialogIndex, v_ContactUrlNotify, cs_SubscriptionState_Active("300")); + f_IMS_Conference_SendNotifyReceiveOK(v_RequestUrlNotify, v_MessageHeader_Notify, cs_MessageBody_SipFrag("SIP/2.0 100 Trying")); + + // Step 5 - 6. The SS sends a NOTIFY related to REFER request to confirm that the invited user was able to join the conference; UE responds with 200 OK + v_ReferRequest := v_IMS_REFER_REQ.Request.Refer; + v_MessageHeader_Notify := f_IMS_NotifyRequest_MessageHeader_A211(v_DialogIndex, v_ContactUrlNotify, cs_SubscriptionState_Terminated); + f_IMS_Conference_SendNotifyReceiveOK(v_RequestUrlNotify, v_MessageHeader_Notify, cs_MessageBody_SipFrag("SIP/2.0 200 OK")); + } + + + function f_IMS_InviteUserToConference_AnnexC19_Steps7_8(charstring p_ConferenceUri, + template (omit) SUBSCRIBE_Request p_SubscribeRequest, + charstring p_ParticipantUri, + charstring p_ParticipantContactUri, + integer p_UserCnt := 1) runs on IMS_PTC + { /* Step 7 - 8. The SS sends a NOTIFY for conference event package; UE responds with 200 OK */ + /* PROSE ISSUE: prose specifies hard-coded value for the label of the NOTIFY's message body but it seems that the label shall be different for different users (-> RFC 4575 clause 5.8.3) + => parameter p_UserCnt (starting with 1) to distinguish subsequent users joining the conference call */ + var SUBSCRIBE_Request v_SubscribeRequest; + var integer v_CseqValue := tsc_IMS_CseqValue_A53 + p_UserCnt; + var integer v_Version := p_UserCnt; // assuming the version to be 0 for the user creating the conference + var template (value) SubscriptionState v_SubscriptionState; + var template (value) Media_type v_Media; + var template (value) Conference_type v_ConferenceBody; + + if (isvalue(p_SubscribeRequest)) { + v_SubscribeRequest := valueof(p_SubscribeRequest); + + select (p_UserCnt) { + case (1) { v_Media := cs_Media("11223", "11224"); } + case (1) { v_Media := cs_Media("22334", "22335"); } // PROSE ISSUE !!! + case else { FatalError(__FILE__, __LINE__, ""); } + } + v_SubscriptionState := cs_SubscriptionState_Active("7200"); + v_ConferenceBody := cs_XmlBody_ConfInfo(p_ConferenceUri, p_ParticipantUri, p_ParticipantContactUri, partial, v_Version, v_Media); + + f_IMS_Conference_SendNotifyA53ReceiveOK(v_SubscribeRequest, p_ConferenceUri, v_CseqValue, v_SubscriptionState, v_ConferenceBody); + } + } + + //**************************************************************************** + // Test case 15.17 + //---------------------------------------------------------------------------- + + function f_TC_15_17_IMS() runs on IMS_PTC + { /* PROSE ISSUEs: + * - steps 1-7 refer to 1-7 of clause 12.12.4; in older releases of 34.229-1 12.12.4 has been referring to C.7 where steps 1-7 are similar to steps 2-8 od C.21; + * => steps 1-7 shall refer to steps 2-8 of C.21 and an additional step 0 is needed to trigger the MMI to create the conference call + */ + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: IMS_InviteRequestWithSdp_Type instead of IMS_DATA_REQ */ + + f_IMS_CC_Preamble(IPCAN_SpeechCall, IMS_REGISTERED); + + f_IMS_TestBody_Set(true); + + // @siclog "Step 0" siclog@ Trigger UE to create conference call + f_IMS_CC_StartCall(IPCAN_MO_SpeechCall, -, conferenceCall); + + // @siclog "Step 1 - 13" siclog@ same steps as for C.10 + v_InviteRequestWithSdp := f_IMS_ConferenceCreation_AnnexC10(tsc_IMS_ConferenceFactoryUri, tsc_IMS_TemporaryConferenceUri, tsc_IMS_FinalConferenceUri); + + // @siclog "Step 14 - 15" siclog@ + f_IMS_CallReleaseMO(v_InviteRequestWithSdp.Invite, f_SIP_BuildSipUri_RX(tsc_IMS_FinalConferenceUri)); + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(IPCAN_MO_SpeechCall); + } + + /* ************************************************************************** */ + // See 34.229-1 clause 15.18 + + function f_TC_15_18_TC_15_19_Common(charstring p_RequestUriString, + charstring p_ReferToUriString) runs on IMS_PTC + { /* p_RequestUriString ... URI to which UE shall send the Refer: conference URI (testcase 15.19) or remote URI (test case 15.18) + p_ReferToUriString ... URI to be used in the refer-to header of the REFER message: remote URI (testcase 15.19) or conference URI (test case 15.18) */ + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; + var template (omit) SUBSCRIBE_Request v_SubscribeRequest; + + f_IMS_CC_Preamble(IPCAN_SpeechCall, IMS_REGISTERED); + + // Trigger UE to create conference call + f_IMS_CC_StartCall(IPCAN_MO_SpeechCall, -, conferenceCall); + + // procedure C.10 + v_InviteRequestWithSdp := f_IMS_ConferenceCreation_AnnexC10_Steps1_9(tsc_IMS_ConferenceFactoryUri, tsc_IMS_TemporaryConferenceUri, tsc_IMS_FinalConferenceUri); + v_SubscribeRequest := f_IMS_ConferenceCreation_AnnexC10_Steps10_13(tsc_IMS_FinalConferenceUri); + + f_IMS_TestBody_Set(true); + + // @siclog "Step 1 - 6" siclog@ + f_IMS_InviteUserToConference_AnnexC19_Steps1_6(-, p_RequestUriString, p_ReferToUriString); + // @siclog "Step 7 - 8" siclog@ + f_IMS_InviteUserToConference_AnnexC19_Steps7_8(tsc_IMS_FinalConferenceUri, v_SubscribeRequest, px_IMS_CalleeUri, px_IMS_CalleeContactUri); + + f_IMS_TestBody_Set(false); + + f_IMS_CallReleaseMO(v_InviteRequestWithSdp.Invite); + + f_IMS_CC_Postamble(IPCAN_MO_SpeechCall); + } + + function f_TC_15_18_IMS() runs on IMS_PTC + { + f_TC_15_18_TC_15_19_Common(px_IMS_CalleeUri, tsc_IMS_FinalConferenceUri); + } + + function f_TC_15_19_IMS() runs on IMS_PTC + { + f_TC_15_18_TC_15_19_Common(tsc_IMS_FinalConferenceUri, px_IMS_CalleeUri); + } + + //**************************************************************************** + // Test case 15.21 + //---------------------------------------------------------------------------- + + function fl_TC_15_21_Step3(charstring p_ConferenceUri, + charstring p_ReferredByUri, + boolean p_GeolocationInfoAvailable := pc_IMS_Geolocation) runs on IMS_PTC return IMS_InviteRequestWithSdp_Type + { + var template (omit) float v_WaitDuration := omit; // no wait duration + var IMS_DATA_REQ v_IMS_DATA_REQ; + var SDP_Message v_SDP_Message; + + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var template (present) charstring v_IPAddrOrigin := ?; + var template (present) charstring v_IPAddrConnection := ?; + var template (present) SDP_attribute_list v_SDP_Attribute_List := { + // media attributes: + cr_SDP_Attribute_rtpmap(-, cr_RTPMAP_AMR_8000), + cr_SDP_Attribute_fmtp(-, cr_AMR_Fmtp_DefaultParameters), + cr_SDP_Attribute_sendrecv, + // precondition attributes: + cr_SDP_Attribute_curr_qos(c_local, (c_none, c_sendrecv)), + cr_SDP_Attribute_curr_qos(c_remote), + cr_SDP_Attribute_des_qos(c_mandatory, c_local), + cr_SDP_Attribute_des_qos(c_optional, c_remote), + * + }; + var template (present) SDP_media_desc v_SDP_Media_Desc := cr_SDP_Media_Desc(cr_SDP_Media_Audio, + cr_SDP_Connection(v_AddrType, v_IPAddrConnection), + cr_SDP_Bandwidth_List_Media, + v_SDP_Attribute_List); + var template (present) SDP_Message v_SDP_MessageRX := cr_SDP_Message_AnySession(v_AddrType, v_IPAddrOrigin, v_IPAddrConnection, v_SDP_Media_Desc); + + var template (present) MessageHeader v_MessageHeader := cr_MessageHeader_Dummy; + + v_MessageHeader.referredBy := cr_ReferredBy(f_SIP_BuildSipUri_RX(p_ReferredByUri)); + + v_IMS_DATA_REQ := valueof(f_IMS_INVITE_ReceiveRequest_Common(-, v_MessageHeader, tsc_OptionTagList_precondition, p_ConferenceUri, v_WaitDuration, -, p_GeolocationInfoAvailable)); + v_SDP_Message := f_IMS_MessageBody_CheckSdpMessageAndGeolocation(v_IMS_DATA_REQ.Request.Invite.messageBody, v_SDP_MessageRX, p_GeolocationInfoAvailable); + + // check media description: + f_IMS_SDP_CheckMediaDescr_AMR_8000_1(v_SDP_Message.media_list[0]); + + return f_IMS_InviteRequestWithSdpMO(v_IMS_DATA_REQ, v_SDP_Message); + } + + function fl_TC_15_21_Step5_6(charstring p_InvitingUri) runs on IMS_PTC + { + var template (present) charstring v_NonZeroValue := pattern "[1-9][0-9]#(,)"; + var template (present) SemicolonParam_List v_SubscriptionState_SubexpParams := cr_SemicolonParam_List_OneSpecificParamWithValue("expires", v_NonZeroValue); + + a_IMS_ReceiveNotifyForReferAndSendOK(p_InvitingUri, "active", v_SubscriptionState_SubexpParams); + } + + function fl_TC_15_21_Step7(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp, + charstring p_ContactUri) runs on IMS_PTC return MessageHeader + { /* p_ContactUri shall be the conference URI */ + var template (value) IMS_RoutingInfo_Type v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(p_InviteRequestWithSdp.RoutingInfo); + var INVITE_Request v_InviteRequest := p_InviteRequestWithSdp.Invite; + var SDP_Message v_SDP_MessageInvite := p_InviteRequestWithSdp.SdpOffer; + var template (value) MessageHeader v_MessageHeader_183; + var template (value) SDP_Message v_SDP_Message := f_IMS_BuildSDP_CommonResponseToOfferTX(v_SDP_MessageInvite); + var template (omit) SDP_attribute_list v_AttributeList; + + // build SDP message + if (lengthof(v_SDP_MessageInvite.media_list) > 1) { + FatalError(__FILE__, __LINE__, "SDP offer contains more than one media description - not supported yet"); + } + v_AttributeList := f_SDP_ExchangeAttribute(v_SDP_Message.media_list[0].attributes, cr_SDP_Attribute_des_qos(c_optional, c_remote), cs_SDP_Attribute_des_qos(c_mandatory, c_remote)); + v_AttributeList := f_SDP_Attributes_Add_TX(v_AttributeList, cs_SDP_Attribute_conf_qos(c_remote, c_sendrecv)); + v_SDP_Message.media_list[0].attributes := v_AttributeList; + + // Send 183 Session In Progress. + v_MessageHeader_183 := f_IMS_InviteResponse_183_MessageHeaderTX(v_InviteRequest, tsc_OptionTagList_precondition, p_ContactUri); + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine183, v_MessageHeader_183, cs_MessageBody_SDP(v_SDP_Message)))); + + return valueof(v_MessageHeader_183); + } + + function fl_TC_15_21_Step8_12(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp, + template (value) MessageHeader p_MessageHeader_Prev183Response) runs on IMS_PTC + { + var template (value) IMS_RoutingInfo_Type v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(p_InviteRequestWithSdp.RoutingInfo); + var INVITE_Request v_InviteRequest := p_InviteRequestWithSdp.Invite; + var template (value) MessageHeader v_MessageHeader_InviteResponse_200; + + // Steps 8 to 12 + f_IMS_MOCallSetup_AnnexC21_Steps5_8(p_InviteRequestWithSdp, p_MessageHeader_Prev183Response); + + // Step 12. Send 200 OK (response to INVITE) + v_MessageHeader_InviteResponse_200 := f_IMS_OtherResponse_200_MessageHeaderTX(v_InviteRequest.msgHeader); + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine200, v_MessageHeader_InviteResponse_200))); + } + + //---------------------------------------------------------------------------- + + function f_TC_15_21_IMS() runs on IMS_PTC + { /* TC 15.21 - Joining a conference after being invited to it */ + /* Implementation: + test case needs three dialogs: + 1. dialog created by REFER between remote (inviting) UE (tsc_IMS_CallerSipAddrStr) and UE under test: UE notifies remote UE of state changes while joining the conference (-> RFC 3515 clause 2.4) + 2. dialog created by INVITE between UE under test and SS (conference URI) + 3. dialog created by SUBSCRIBE between UE under test and SS (conference URI): conference focus may notify UE about state changes of the conference call + The 3rd dialog can be handled straight forward, the 2nd dialog is the "normal" dialog for the (conference) call - i.e. uses state variables to be stored at the IMS PTC as usual, + and the 1st dialog needs also to store state variables at the IMS PTC as additional NOTIFY messages may occur referring to this dialog + => We use the IMS PTC's first dialog for the call establishment (as usual) and the IMS PTC's second dialog for the "refer" dialog */ + var charstring v_InvitingUri := tsc_IMS_CallerSipAddrStr; + var charstring v_ConferenceUri := tsc_IMS_FinalConferenceUri; + var charstring v_ReferredByUri := "sip:master@conference.com"; + var template (present) SipUrl v_ConferenceSipUrlRX := f_SIP_BuildSipUri_RX(v_ConferenceUri); + var IMS_DATA_REQ v_IMS_SUBSCRIBE_REQ_ByRef; + var IMS_DATA_REQ v_IMS_SUBSCRIBE_REQ; + var IMS_DATA_RSP v_IMS_DATA_RSP; + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; + var INVITE_Request v_InviteRequest; + var MessageHeader v_MessageHeader_183; + var template (value) MessageHeader v_MessageHeader_Refer; + var template (value) REFER_Request v_ReferRequest; + var template (value) IMS_RoutingInfo_Type v_RoutingInfo_DL; + var SipUrl v_ContactUrl; + var InternetProtocol_Type v_Protocol; + var template (present) MessageHeader v_MessageHeader_Ack; + var template (present) MessageHeader v_MessageHeader_Subscribe; + var template (present) SemicolonParam_List v_SubscriptionState_SubexpParams; + var boolean v_SubscriptionState_NoExpires; + var boolean v_WaitingForAck; + var boolean v_WaitingForNotify; + var boolean v_WaitingForSubscribe; + var default v_DefaultVar := null; + timer t_Timer; + + // Initial conditions + f_IMS_CC_Preamble(IPCAN_SpeechCall, IMS_REGISTERED); + + f_IMS_CC_StartCall(IPCAN_MT_SpeechCall); // IPCAN behaviour is as for MT call + + f_IMS_TestBody_Set(true); + v_Protocol := f_IMS_PTC_ImsInfo_GetTransportProtocol(); + v_ContactUrl := f_IMS_PTC_ImsInfo_GetContactUrl(); + + // @siclog "Step 1" siclog@ SS sends REFER to UE referring to the conference + v_MessageHeader_Refer := f_IMS_ReferRequest_MessageHeaderTX(-, v_InvitingUri, v_ConferenceUri, v_ReferredByUri); + f_IMS_PTC_ImsInfo_DialogInit(dialogLocal, valueof(v_MessageHeader_Refer), referDialog); + v_ReferRequest := cs_REFER_Request(v_ContactUrl, v_MessageHeader_Refer); + IMS_Client.send(cas_IMS_Refer_Request(cs_IMS_RoutingInfo(v_Protocol), v_ReferRequest)); + + // @siclog "Step 2" siclog@ UE responds with a with a 202 Accepted response + v_IMS_DATA_RSP := f_IMS_ReceiveResponse(v_MessageHeader_Refer, v_Protocol, cr_Response(c_statusLine202, f_IMS_Accepted_202_MessageHeaderRX(v_MessageHeader_Refer))); + f_IMS_Dialog_SetRemoteTag(v_IMS_DATA_RSP.Response.msgHeader, referDialog); + + // @siclog "Step 3" siclog@ Receive INVITE + v_InviteRequestWithSdp := fl_TC_15_21_Step3(v_ConferenceUri, v_ReferredByUri); + v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(v_InviteRequestWithSdp.RoutingInfo); + v_InviteRequest := v_InviteRequestWithSdp.Invite; + + // @siclog "Step 4" siclog@ SS sends 100 Trying + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine100, f_IMS_InviteResponse_100_MessageHeaderTX(v_InviteRequest)))); + + // @siclog "Step 5 - 6" siclog@ UE sends NOTIFY, SS respondes with 200 OK + fl_TC_15_21_Step5_6(v_InvitingUri); + + v_DefaultVar := activate(a_IMS_ReceiveNotifyForReferAndSendOK(v_InvitingUri, "active", -, -, true)); + + // @siclog "Step 7" siclog@ SS sends 183 Session in Progress + v_MessageHeader_183 := fl_TC_15_21_Step7(v_InviteRequestWithSdp, v_ConferenceUri); + + f_IMS_CC_TriggerDedicatedBearerActivation(IPCAN_MT_SpeechCall); /* trigger IPCAN to continue with activation of secondary PDP context or dedicated EPS bearer; + as we have started the IPCAN as for MT call we also need to continue as if it is an MT call */ + // @siclog "Step 8 - 12" siclog@ UE sends PRACK, SS sends 200 OK; optionally: UE sends UPDATE, SS sends 200 OK; SS sends final 200 OK for INVITE + fl_TC_15_21_Step8_12(v_InviteRequestWithSdp, v_MessageHeader_183); + + // @siclog "Step 13 - 15" siclog@ UE sends ACK, NOTIFY and optionally SUBSCRIBE, SS response to ACK with 200 OK and to optionally to SUBSCRIBE with 200 OK + v_MessageHeader_Ack := f_IMS_AckRequest_MessageHeaderRX(v_InviteRequest, c_statusLine200); + v_MessageHeader_Subscribe := f_IMS_SubscribeRequest_MessageHeaderRX("conference", v_ConferenceSipUrlRX, ?); + + v_WaitingForAck := true; + v_WaitingForNotify := true; + v_WaitingForSubscribe := true; + v_SubscriptionState_SubexpParams := cr_SemicolonParam_List_OneSpecificParamWithValue("reason", "noresource"); + v_SubscriptionState_NoExpires := true; // there shall be no "expires" in the Subscription-State + + t_Timer.start(tsc_WaitForConferenceSubscription); // !!!! PROSE ISSUE: needs to be documented in the prose !!!! + while (v_WaitingForAck or v_WaitingForNotify or v_WaitingForSubscribe) { + alt { + [] IMS_Server.receive(car_IMS_Ack_Request(cr_ACK_Request(v_ConferenceSipUrlRX, v_MessageHeader_Ack))) { + v_WaitingForAck := false; + } + [] a_IMS_ReceiveNotifyForReferAndSendOK(v_InvitingUri, "terminated", v_SubscriptionState_SubexpParams, v_SubscriptionState_NoExpires) { + v_WaitingForNotify := false; + deactivate(v_DefaultVar); + } + [] a_IMS_Conference_ReceiveSubscribeA53SendOK(v_IMS_SUBSCRIBE_REQ_ByRef, v_ConferenceUri) { + v_IMS_SUBSCRIBE_REQ := v_IMS_SUBSCRIBE_REQ_ByRef; + v_WaitingForSubscribe := false; + t_Timer.stop; + } + [] t_Timer.timeout { + v_WaitingForSubscribe := false; + } + } + } + // @siclog "Step 15 - 17" siclog@ If the UE has sent SUBSCRIBE at step 13: SS sends NOTIFY and waits for 200 OK by the UE + if (isbound(v_IMS_SUBSCRIBE_REQ)) { + f_IMS_ConferenceCreation_AnnexC10_Steps12_13(v_IMS_SUBSCRIBE_REQ.Request.Subscribe, v_ConferenceUri); + } + + // @siclog "Step 18 - 19" siclog@ + v_ContactUrl := f_MessageHeader_GetContactSipUrl(v_MessageHeader_183); + f_IMS_CallReleaseMT(v_InviteRequestWithSdp.Invite, v_ContactUrl); + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(IPCAN_MT_SpeechCall); + } + + /* ************************************************************************** */ + + altstep a_TC_15_21a_ReceiveByeSendOK(IMS_PTC_DialogIndex_Type p_DialogIndex, + template (present) SipUrl p_ContactSipUrl, + template (present) MessageHeader p_MessageHeader) runs on IMS_PTC + { /* !!!! to be merged with f_IMS_CallReleaseMO !!!! */ + var IMS_DATA_REQ v_IMS_DATA_REQ; + var template (value) IMS_RoutingInfo_Type v_RoutingInfo; + + [] IMS_Server.receive(car_IMS_Bye_Request(cr_BYE_Request(p_ContactSipUrl, p_MessageHeader))) -> value v_IMS_DATA_REQ + { + if (f_IMS_PTC_ImsInfo_DialogIsReleased(p_DialogIndex)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Dialog has already been released"); + } + f_IMS_MessageHeader_Request_CheckVia(v_IMS_DATA_REQ.Request.Bye.msgHeader, v_IMS_DATA_REQ.RoutingInfo.Protocol); + v_RoutingInfo := f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo); + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo, cs_Response(c_statusLine200, f_IMS_OtherResponse_200_MessageHeaderTX(v_IMS_DATA_REQ.Request.Bye.msgHeader)))); + + f_IMS_PTC_ImsInfo_DialogRelease(); + } + } + + + // See 34.229-1 clause 15.21a - Three way session creation + function f_TC_15_21a_IMS() runs on IMS_PTC + { /* PROSE ISSUES: + - PIXIT needed for 2nd callee + - the same contact URI is used for 2nd call as for the 1st call but both should be the same + - acc. to 24.147 it seems that the UE shall send a BYE for each dialog for which it has got notification about the user has joined the conference (clause 5.3.1.3.3) + - prose is very unlear about when the BYE(s) may occur (there are contradictions in the different notes) and to which dialogs the respective BYE refers + - it is not specified how long the test case shall wiat for the 2nd BYE (it is also not clear why the 2nd BYE is optional) */ + var charstring v_CalleeUri_Dialog1 := px_IMS_CalleeUri; + var charstring v_CalleeContactUri_Dialog1 := px_IMS_CalleeContactUri; + var charstring v_CalleeUri_Dialog2 := "sip:User-C@3gpp.org"; // !!!! PIXIT ??? !!!! + var charstring v_CalleeContactUri_Dialog2 := "sip:User-C-Contact@3gpp.org"; // !!!! PIXIT ??? !!!! + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp_Dialog1; + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp_Dialog2; + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp_Dialog3; + var MessageHeader v_MessageHeader_183_Dialog1; + var MessageHeader v_MessageHeader_183_Dialog2; + var SipUrl v_ContactUrl_Dialog1; + var SipUrl v_ContactUrl_Dialog2; + var SipUrl v_ContactUrl_UE; + var template (omit) SUBSCRIBE_Request v_SubscribeRequest; + var template (present) MessageHeader v_MessageHeader_Bye_Dialog1; + var template (present) MessageHeader v_MessageHeader_Bye_Dialog2; + var SDP_Message v_SDP_OriginalOffer; + var boolean v_RadioBearersEstablished; + + var default v_DefaultVar_Dialog1 := null; + var default v_DefaultVar_Dialog2 := null; + + // Initial conditions + f_IMS_CC_Preamble(IPCAN_SpeechCall, IMS_REGISTERED); + + // Setup MO speech call + f_IMS_CC_StartCall(IPCAN_MO_SpeechCall, v_CalleeUri_Dialog1); // C.21 Step 1 + + v_InviteRequestWithSdp_Dialog1 := f_IMS_MOCallSetup_AnnexC21_Step2_A4(v_CalleeUri_Dialog1); // C.21 Step 2 + v_MessageHeader_183_Dialog1 := f_IMS_MOCallSetup_AnnexC21_Step3_4(v_InviteRequestWithSdp_Dialog1, v_CalleeContactUri_Dialog1); // C.21 Step 3, 4 + v_ContactUrl_Dialog1 := f_MessageHeader_GetContactSipUrl(v_MessageHeader_183_Dialog1); + f_IMS_CC_TriggerDedicatedBearerActivation(IPCAN_MO_SpeechCall); // trigger IPCAN to continue with activation of secondary PDP context or dedicated EPS bearer + v_RadioBearersEstablished := true; + v_SDP_OriginalOffer := f_IMS_MOCallSetup_AnnexC21_Steps5_13(v_InviteRequestWithSdp_Dialog1, v_MessageHeader_183_Dialog1); // C.21 Step 5 .. 13 + + f_IMS_TestBody_Set(true); + + //Steps 1 to 4 - Messages in Annex C.8 - Set ongoing call on hold + // @siclog "Step 1 - 4" siclog@ + f_UT_CallHold(MMI); + f_IMS_MOCallHoldResume_AnnexC8(HOLD, v_InviteRequestWithSdp_Dialog1.Invite, v_MessageHeader_183_Dialog1, v_SDP_OriginalOffer); + f_IMS_PreliminaryPass(__FILE__, __LINE__, ""); + + v_MessageHeader_Bye_Dialog1 := f_IMS_ByeRequest_MessageHeaderRX(v_InviteRequestWithSdp_Dialog1.Invite); + v_DefaultVar_Dialog1 := activate(a_TC_15_21a_ReceiveByeSendOK(firstDialog, v_ContactUrl_Dialog1, v_MessageHeader_Bye_Dialog1)); + + + // @siclog "Step 5 - 17" siclog@ Steps defined in Annex C.21 - MO call + f_IMS_PTC_ImsInfo_ActivateDialog(secondDialog); + f_IMS_CC_StartCall(IPCAN_MO_SpeechCall, v_CalleeUri_Dialog2); // C.21 Step 1 + v_InviteRequestWithSdp_Dialog2 := f_IMS_MOCallSetup_AnnexC21_Step2_A4(v_CalleeUri_Dialog2); // C.21 Step 2 + v_MessageHeader_183_Dialog2 := f_IMS_MOCallSetup_AnnexC21_Step3_4(v_InviteRequestWithSdp_Dialog2, v_CalleeContactUri_Dialog2); // C.21 Step 3, 4; PROSE ISSUE: there should be a different contact URI than for the 1st dialog + v_ContactUrl_Dialog2 := f_MessageHeader_GetContactSipUrl(v_MessageHeader_183_Dialog2); + // NOTE: the radio bearers are already established + f_IMS_MOCallSetup_AnnexC21_Steps5_13(v_InviteRequestWithSdp_Dialog2, v_MessageHeader_183_Dialog2); // C.21 Step 5 .. 13 + f_IMS_PreliminaryPass(__FILE__, __LINE__, ""); + + v_MessageHeader_Bye_Dialog2 := f_IMS_ByeRequest_MessageHeaderRX(v_InviteRequestWithSdp_Dialog2.Invite); + v_DefaultVar_Dialog2 := activate(a_TC_15_21a_ReceiveByeSendOK(firstDialog, v_ContactUrl_Dialog2, v_MessageHeader_Bye_Dialog2)); + + // @siclog "Step 18 - 30" siclog@ Steps defined in Annex C.10 + f_IMS_PTC_ImsInfo_ActivateDialog(thirdDialog); + f_IMS_CC_StartCall(IPCAN_MO_SpeechCall, -, conferenceCall); + v_InviteRequestWithSdp_Dialog3 := f_IMS_ConferenceCreation_AnnexC10_Steps1_9(tsc_IMS_ConferenceFactoryUri, tsc_IMS_TemporaryConferenceUri, tsc_IMS_FinalConferenceUri, v_RadioBearersEstablished); + v_ContactUrl_UE := f_MessageHeader_GetContactSipUrl(v_InviteRequestWithSdp_Dialog3.Invite.msgHeader); + v_SubscribeRequest := f_IMS_ConferenceCreation_AnnexC10_Steps10_13(tsc_IMS_FinalConferenceUri); + f_IMS_PreliminaryPass(__FILE__, __LINE__, ""); + + // @siclog "Step 31 - 38" siclog@ Steps defined in Annex C.19 + // !!!! Any MMI needed to invite the 1st callee ??? !!!! + f_IMS_PTC_ImsInfo_DialogRelease(referDialog); // re-intitialise "referDialog" + f_IMS_InviteUserToConference_AnnexC19_Steps1_6(-, tsc_IMS_FinalConferenceUri, v_CalleeUri_Dialog1); // PROSE ISSUE: it is not clear whether to use callee uri or the callee's contact uri + f_IMS_InviteUserToConference_AnnexC19_Steps7_8(tsc_IMS_FinalConferenceUri, v_SubscribeRequest, v_CalleeUri_Dialog1, v_CalleeContactUri_Dialog1, 1); + f_IMS_PreliminaryPass(__FILE__, __LINE__, ""); + + // @siclog "Step 39 - 46" siclog@ Steps defined in Annex C.19 + // !!!! Any MMI needed to invite the 2nd callee ??? !!!! + f_IMS_PTC_ImsInfo_DialogRelease(referDialog); // re-intitialise "referDialog" + f_IMS_InviteUserToConference_AnnexC19_Steps1_6(-, tsc_IMS_FinalConferenceUri, v_CalleeUri_Dialog2); + f_IMS_InviteUserToConference_AnnexC19_Steps7_8(tsc_IMS_FinalConferenceUri, v_SubscribeRequest, v_CalleeUri_Dialog2, v_CalleeContactUri_Dialog2, 2); + f_IMS_PreliminaryPass(__FILE__, __LINE__, ""); + + f_Delay(5.0); // PROSE ISSUE: how long to wait for BYE(s) ?? + deactivate(v_DefaultVar_Dialog1); + deactivate(v_DefaultVar_Dialog2); + + // @siclog "Step 47 - 48" siclog@ Terminate conference + f_IMS_CallReleaseMT(v_InviteRequestWithSdp_Dialog3.Invite, v_ContactUrl_UE); + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(IPCAN_MO_SpeechCall); + } +} diff --git a/IMS_PART4_IWD_14wk37/IMS/15/IMS_CC_SSTestcases.ttcn b/IMS_PART4_IWD_14wk37/IMS/15/IMS_CC_SSTestcases.ttcn new file mode 100644 index 0000000..cbabdb3 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/15/IMS_CC_SSTestcases.ttcn @@ -0,0 +1,682 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-05 19:27:02 +0200 (Fri, 05 Sep 2014) $ +// $Rev: 12079 $ +/******************************************************************************/ + +module IMS_CC_SSTestcases { + import from CommonDefs all; + import from IP_ASP_TypeDefs all; + import from LibSip_MessageBodyTypes all; + import from LibSip_SIPTypesAndValues all; + import from LibSip_SimpleMsgSummaryTypes all; + import from LibSip_SDPTypes all; + import from IMS_Component all; + import from IMS_ASP_TypeDefs all; + import from IMS_ASP_Templates all; + import from IMS_CommonParameters all; + import from IMS_CC_Parameters all; + import from IMS_CommonDefs all; + import from IMS_SIP_Templates all; + import from IMS_MessageBody_Templates all; + import from IMS_SDP_Templates all; + import from IMS_SDP_Messages all; + import from IMS_CC_CommonFunctions all; + import from IMS_Procedures_Registration all; + import from IMS_Procedures_CallControl all; + import from IMS_Procedures_Common all; + import from UpperTesterFunctions all; + import from IMS_PTC_CoordMsg all; + import from IMS_CommonFunctions all; + + //---------------------------------------------------------------------------- + /* + * @desc REFERENCE TS 34.229-1 clause 15.8 + * @status APPROVED (IMS) + */ + function f_TC_15_8_IMS() runs on IMS_PTC + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: IMS_InviteRequestWithSdp_Type instead of IMS_DATA_REQ */ + var MessageHeader v_MessageHeader_183; + var template (present) SipUrl v_NewContactUri; + + f_IMS_CC_Preamble(IPCAN_SpeechCall, IMS_REGISTERED); + + f_IMS_TestBody_Set(true); + + // @siclog "Step 1" siclog@ + f_IMS_CC_StartCall(IPCAN_MO_SpeechCall); + + // @siclog "Step 2" siclog@ + v_InviteRequestWithSdp := f_IMS_MOCallSetup_AnnexC21_Step2_A4(); + + // @siclog "Step 3 - 4" siclog@ + v_MessageHeader_183 := f_IMS_MOCallSetup_AnnexC21_Step3_4(v_InviteRequestWithSdp); + + // See TS. 36.508 EUTRA/EPS signalling for IMS MO speech call Table 4.5A.6.3-1 Step 9-11 + f_IMS_CC_TriggerDedicatedBearerActivation(IPCAN_MO_SpeechCall); // trigger IPCAN to continue with activation of secondary PDP context or dedicated EPS bearer + + // @siclog "Step 5 - 8" siclog@ + f_IMS_MOCallSetup_AnnexC21_Steps5_8(v_InviteRequestWithSdp, v_MessageHeader_183); + + // @siclog "Step 9 - 9B" siclog@ + f_IMS_MOCallSetup_AnnexC21C25_Step9_11(v_InviteRequestWithSdp); + + // @siclog "Step 10 - 16" siclog@ + v_NewContactUri := fl_TC_15_8_Steps10_17(v_InviteRequestWithSdp); + + // @siclog "Step 17 -18" siclog@ + f_IMS_CallReleaseMO(v_InviteRequestWithSdp.Invite, v_NewContactUri); + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(IPCAN_MO_SpeechCall); + } + + /* + * @desc steps 10..17 of TC_15_8 + * @param p_InviteRequestWithSdp + * @return template (present) SipUrl + * @status APPROVED (IMS) + */ + function fl_TC_15_8_Steps10_17(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp) runs on IMS_PTC return template (present) SipUrl + { /* return contact of the callee to which the call is forwarded to */ + var template (value) IMS_RoutingInfo_Type v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(p_InviteRequestWithSdp.RoutingInfo); + var INVITE_Request v_InviteRequest := p_InviteRequestWithSdp.Invite; + var SDP_Message v_SDP_MessageStep2 := p_InviteRequestWithSdp.SdpOffer; + var charstring v_ForwardedToCalleeContactUri := "sip:15.8@" & tsc_IMS_CallerDomain; + var template (present) SipUrl v_NewContactUriRX := f_SIP_BuildSipUri_RX(v_ForwardedToCalleeContactUri); + var template (value) SipUrl v_TargetedTo := f_SIP_BuildSipUri_TX("sip:user@company.com"); + var IMS_DATA_REQ v_IMS_DATA_REQ; + var template (value) MessageHeader v_MessageHeader_Response; + var template (present) MessageHeader v_MessageHeader_Request; + var PRACK_Request v_PrackRequest; + + // 15.8 Step 10 Send 181 Call is being forwarded + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine181, f_IMS_InviteResponse_181_MessageHeaderTX(v_InviteRequest, v_TargetedTo)))); + + // set new tag for the dialog: + f_IMS_PTC_ImsInfo_DialogSetLocalTag(f_IMS_GenerateTag("INVITE-FORWARDED")); /* @sic R5s140621 1st change: in terms of the response the To-tag in the local tag here sic@ */ + // cseq needs to be reset to the value of the INVITE (@sic R5s140621 2nd change sic@) + f_IMS_PTC_ImsInfo_CseqSet(dialogRemote, v_InviteRequest.msgHeader.cSeq.seqNumber); + + // 15.8 Step 11 Send 183 Session in Progress + v_MessageHeader_Response := f_IMS_InviteResponse_183_MessageHeaderTX(v_InviteRequest, tsc_OptionTagList_precondition, v_ForwardedToCalleeContactUri); + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine183, + v_MessageHeader_Response, + cs_MessageBody_SDP(f_IMS_BuildSDP_AnnexC21_Step4(v_SDP_MessageStep2))))); /* @sic R5-144402 sic@ */ + + // 15.8 Step 12 - 13B (same as steps 5 - 8 of C.21) + f_IMS_MOCallSetup_AnnexC21_Steps5_8(p_InviteRequestWithSdp, v_MessageHeader_Response); /* the procedure uses the (remote) contact address as in the 183 response (v_MessageHeader_Response) + => in fact v_ForwardedToCalleeContactUri is used */ + // 15.8 Step 14. 180 Ringing + v_MessageHeader_Response := f_IMS_InviteResponse_180_MessageHeaderTX(v_InviteRequest, v_ForwardedToCalleeContactUri); + v_MessageHeader_Response.historyInfo := cs_HistoryInfo(v_TargetedTo); + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine180, v_MessageHeader_Response))); + + // 15.8 Step 14A. Receive PRACK + v_MessageHeader_Request := f_IMS_PrackRequest_MessageHeaderRX(v_InviteRequest, v_MessageHeader_Response, omit); + IMS_Server.receive(car_IMS_Prack_Request(cr_PRACK_Request(v_NewContactUriRX, v_MessageHeader_Request))) -> value v_IMS_DATA_REQ; + v_PrackRequest := v_IMS_DATA_REQ.Request.Prack; + + // 15.8 Step 14B. Send 200 OK for PRACK + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine200, f_IMS_OtherResponse_200_MessageHeaderTX(v_PrackRequest.msgHeader)))); + + // Step 15. Send 200 OK for INVITE + v_MessageHeader_Response := f_IMS_OtherResponse_200_MessageHeaderTX(v_InviteRequest.msgHeader, -, -, v_ForwardedToCalleeContactUri); + v_MessageHeader_Response.historyInfo := cs_HistoryInfo(v_TargetedTo); + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine200, v_MessageHeader_Response))); + + // Step 16. Finally, UE acknowledges call setup. + v_MessageHeader_Request := f_IMS_AckRequest_MessageHeaderRX(v_InviteRequest, c_statusLine200); + IMS_Server.receive(car_IMS_Ack_Request(cr_ACK_Request(v_NewContactUriRX, v_MessageHeader_Request))); + + return v_NewContactUriRX; + } + + /* ************************************************************************** */ + /* + * @desc REFERENCE TS 34.229-1 clause 15.11 + * @status APPROVED (IMS) + */ + function f_TC_15_11_IMS() runs on IMS_PTC + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: IMS_InviteRequestWithSdp_Type instead of IMS_DATA_REQ */ + var INVITE_Request v_InviteRequest; + var MessageHeader v_MessageHeader_Response183; + var SDP_Message v_SDP_OriginalOffer; + var SDP_Message v_SDP_HoldResumeOffer; + + f_IMS_CC_Preamble(IPCAN_SpeechCall, IMS_REGISTERED); + + // setup MO speech call + f_IMS_CC_StartCall(IPCAN_MO_SpeechCall); + + v_InviteRequestWithSdp := f_IMS_MOCallSetup_AnnexC21_Step2_A4(); + v_InviteRequest := v_InviteRequestWithSdp.Invite; + + v_MessageHeader_Response183 := f_IMS_MOCallSetup_AnnexC21_Step3_4(v_InviteRequestWithSdp); /* @sic R5w140112 sic@ */ + f_IMS_CC_TriggerDedicatedBearerActivation(IPCAN_MO_SpeechCall); // trigger IPCAN to continue with activation of secondary PDP context or dedicated EPS bearer + v_SDP_OriginalOffer := f_IMS_MOCallSetup_AnnexC21_Steps5_13(v_InviteRequestWithSdp, v_MessageHeader_Response183); // v_SDP_OriginalOffer: SDP offer sent by the UE in step 5 or 7 of C.21 + + f_IMS_TestBody_Set(true); + + // @siclog "Step 1 - 4" siclog@ + f_UT_CallHold(MMI); + v_SDP_HoldResumeOffer := f_IMS_MOCallHoldResume_AnnexC8(HOLD, v_InviteRequest, v_MessageHeader_Response183, v_SDP_OriginalOffer); + f_IMS_PreliminaryPass(__FILE__, __LINE__, ""); + + // @siclog "Step 5 - 8" siclog@ + f_UT_CallResume(MMI); + f_IMS_MOCallHoldResume_AnnexC8(RESUME, v_InviteRequest, v_MessageHeader_Response183, v_SDP_OriginalOffer, str2int(v_SDP_HoldResumeOffer.origin.session_version)); + f_IMS_PreliminaryPass(__FILE__, __LINE__, ""); + + // @siclog "Step 9 -10" siclog@ + f_IMS_CallReleaseMO(v_InviteRequest); + + f_IMS_TestBody_Set(false); + f_IMS_CC_Postamble(IPCAN_MO_SpeechCall); + } + + /****************************************************************************/ + /* + * @desc change bandwidth for hold/resume acc. to C.9 + * @param p_BandwidthList + * @param p_Modifier + * @param p_Value + * @return template (value) SDP_bandwidth_list + * @status APPROVED (IMS) + */ + function fl_IMS_CallHoldResume_AnnexC9_ChangeBandwidth(template (omit) SDP_bandwidth_list p_BandwidthList, + charstring p_Modifier, + integer p_Value) return template (value) SDP_bandwidth_list + { // @sic R5-142993: New function sic@ + var template (value) SDP_bandwidth_list v_BandwidthList; + var template (value) SDP_bandwidth_list v_NewBandwidthList; + var integer i; + var integer k := 0; + + if (isvalue(p_BandwidthList)) { + v_BandwidthList := valueof(p_BandwidthList); + for (i := 0; i < lengthof(v_BandwidthList); i := i+1) { + if (not match(p_Modifier, v_BandwidthList[i].modifier)) { // NOTE: p_BandwidthList may or may not include a bandwidth with the given modifier + v_NewBandwidthList[k] := v_BandwidthList[i]; + k:=k+1; + } + } + } + v_NewBandwidthList[k] := cs_SDP_Bandwidth(p_Modifier, p_Value); + return v_NewBandwidthList; + } + + /* + * @desc build up SDP message for step 1 of C.9 + * @param p_HoldResume + * @param p_SDP_LatestMessageBySSBeforeHold + * @param p_RtcpDuringHold (default value: pc_SendRTCPOnlyOnHold) + * @return template (value) SDP_Message + * @status APPROVED (IMS) + */ + function fl_IMS_BuildSDP_AnnexC9_Step1(IMS_CallHoldResume_Type p_HoldResume, + template (value) SDP_Message p_SDP_LatestMessageBySSBeforeHold, + boolean p_RtcpDuringHold := pc_SendRTCPOnlyOnHold) return template (value) SDP_Message + { + var template (value) SDP_Message v_SDP_Message := p_SDP_LatestMessageBySSBeforeHold; + var integer v_SessionVersion := str2int(valueof(p_SDP_LatestMessageBySSBeforeHold.origin.session_version)); + var template (omit) SDP_bandwidth_list v_BandwidthList := v_SDP_Message.bandwidth; + var template (omit) SDP_media_desc_list v_SDP_Media_Desc_List; + var integer v_BandwidthRR; + + select (p_HoldResume) { + case (HOLD) { + v_SessionVersion := v_SessionVersion + 1; + v_BandwidthRR := 200; // @sic R5-142993 sic@ + v_SDP_Media_Desc_List := f_IMS_SDP_MediaList_ExchangeAttribute(v_SDP_Message.media_list, cr_SDP_Attribute_AnySendRecvMode, cs_SDP_Attribute_sendonly); // @sic R5-142993: -> cr_SDP_Attribute_AnySendRecvMode sic@ + } + case (RESUME) { + v_SessionVersion := v_SessionVersion + 2; + v_BandwidthRR := 0; // @sic R5-142993 sic@ + v_SDP_Media_Desc_List := f_IMS_SDP_MediaList_ExchangeAttribute(v_SDP_Message.media_list, cr_SDP_Attribute_AnySendRecvMode, cs_SDP_Attribute_sendrecv); // @sic R5-142993: -> cr_SDP_Attribute_AnySendRecvMode sic@ + v_BandwidthList := v_SDP_Message.bandwidth; + } + } + if (p_RtcpDuringHold) { + v_BandwidthList := fl_IMS_CallHoldResume_AnnexC9_ChangeBandwidth(v_BandwidthList, "RR", v_BandwidthRR); // @sic R5-142993 sic@ + } + v_SDP_Message.origin.session_version := int2str(v_SessionVersion); + v_SDP_Message.bandwidth := v_BandwidthList; + v_SDP_Message.media_list := v_SDP_Media_Desc_List; + + return v_SDP_Message; + } + + /* + * @desc build up SDP message for step 3 of C.9 + * @return template (present) SDP_Message + * @status APPROVED (IMS) + */ + function fl_IMS_BuildSDP_AnnexC9_Step3() runs on IMS_PTC return template (present) SDP_Message + { + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var template (present) charstring v_IPAddrOrigin := ?; + var template (present) charstring v_IPAddrConnection := ?; + var template SDP_bandwidth_list v_SDP_bandwidth_list := *; + var template SDP_attribute_list v_SDP_Attribute_List := *; + var template (present) SDP_media_desc v_SDP_Media_Desc := cr_SDP_Media_Desc(cr_SDP_Media_Audio(cr_SDP_AnyMediaFormatDescr, ?, ?), + cr_SDP_Connection(v_AddrType, ?), + v_SDP_bandwidth_list, + v_SDP_Attribute_List); + + return cr_SDP_Message_Def(v_AddrType, v_IPAddrOrigin, v_IPAddrConnection, v_SDP_Media_Desc); + } + + /* + * @desc Check recv mode for call hold/resume acc. to C.9 + * @param p_HoldResume + * @param p_SDP_Message + * @status APPROVED (IMS) + */ + function fl_IMS_MTCallHoldResume_AnnexC9_CheckSendRecvMode(IMS_CallHoldResume_Type p_HoldResume, + SDP_Message p_SDP_Message) runs on IMS_PTC + { + var template (present) SDP_attribute v_ExpectedDirectionAttribute; + + select (p_HoldResume) { + case (HOLD) { v_ExpectedDirectionAttribute := cr_SDP_Attribute_recvonly; } + case (RESUME) { v_ExpectedDirectionAttribute := cr_SDP_Attribute_sendrecv; } + } + + if (not f_IMS_SDP_CheckMediaListAttributes(p_SDP_Message.media_list, v_ExpectedDirectionAttribute) and + not f_SDP_AttributeList_CheckAttribute(p_SDP_Message.attributes, v_ExpectedDirectionAttribute)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "missing expected direction attribute"); + } + } + + /* + * @desc MT call hold according to Annex C.9 (TS 34.229-1) + * @param p_HoldResume + * @param p_ContactUrl + * @param p_SDP_LatestMessageBySSBeforeHold + * @status APPROVED (IMS) + */ + function f_IMS_MTCallHoldResume_AnnexC9(IMS_CallHoldResume_Type p_HoldResume, + SipUrl p_ContactUrl, + template (value) SDP_Message p_SDP_LatestMessageBySSBeforeHold) runs on IMS_PTC + { + var template (value) MessageHeader v_MessageHeader_Invite := f_IMS_InviteRequest_MessageHeaderTX(-, A_2_1_A5); + var template (value) SDP_Message v_SDP_MessageTX := fl_IMS_BuildSDP_AnnexC9_Step1(p_HoldResume, p_SDP_LatestMessageBySSBeforeHold); + var template (value) INVITE_Request v_InviteRequest := cs_INVITE_Request(p_ContactUrl, v_MessageHeader_Invite, cs_MessageBody_SDP(v_SDP_MessageTX)); + var template (value) MessageHeader v_MessageHeader_Ack := f_IMS_AckRequest_MessageHeaderTX(v_InviteRequest); + var InternetProtocol_Type v_Protocol := f_IMS_PTC_ImsInfo_GetTransportProtocol(); + var IMS_DATA_RSP v_IMS_DATA_RSP; + var SDP_Message v_SDP_MessageRX; + var boolean v_Trying := false; + + // Step 1 - Send INVITE + IMS_Client.send(cas_IMS_Invite_Request(cs_IMS_RoutingInfo(v_Protocol), v_InviteRequest)); + alt { + // Step 2 - Receive optional 100 Trying + [not v_Trying] a_IMS_ReceiveResponse(v_MessageHeader_Invite, + v_Protocol, + cr_Response(c_statusLine100, f_IMS_InviteResponse_100_MessageHeaderRX(v_InviteRequest)), + v_IMS_DATA_RSP) /* @sic R5s140350: v_IMS_DATA_RSP is 'out' parameter sic@ */ + { + v_Trying := true; + repeat; + } + // Step 3 - Receive 200 OK + [] a_IMS_ReceiveResponse(v_MessageHeader_Invite, + v_Protocol, + cr_Response(c_statusLine200, f_IMS_OtherResponse_200_MessageHeaderRX(v_MessageHeader_Invite, cr_ContentTypeSDP), cr_MessageBody_SDP), // @sic R5s140571: cr_MessageBody_SDP sic@ + v_IMS_DATA_RSP) /* @sic R5s140350: v_IMS_DATA_RSP is 'out' parameter sic@ */ + { + v_SDP_MessageRX := f_IMS_SIP_SdpMessageBody_DecodeMatchAndCheckSDP(v_IMS_DATA_RSP.Response.messageBody, fl_IMS_BuildSDP_AnnexC9_Step3()); /* @sic R5s140324 - additional change 1 sic@ */ + fl_IMS_MTCallHoldResume_AnnexC9_CheckSendRecvMode(p_HoldResume, v_SDP_MessageRX); + // @sic R5-142993: no bandwidth to be checked sic@ + } + } + // Step 4. Send ACK. The SS acknowledges the receipt of 200 OK for INVITE. + IMS_Client.send(cas_IMS_Ack_Request(cs_IMS_RoutingInfo(v_Protocol), cs_ACK_Request(p_ContactUrl, v_MessageHeader_Ack))); + } + + /* ************************************************************************** */ + /* + * @desc REFERENCE TS 34.229-1 clause 15.12 + * @status APPROVED (IMS) + */ + function f_TC_15_12_IMS() runs on IMS_PTC + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: IMS_InviteRequestWithSdp_Type instead of IMS_DATA_REQ */ + var INVITE_Request v_InviteRequest; + var MessageHeader v_MessageHeader_183; + var SDP_Message v_SDP_LatestMessageByUE; + var template (value) SDP_Message v_SDP_LatestMessageBySS; + var SipUrl v_ContactUrl; + + f_IMS_CC_Preamble(IPCAN_SpeechCall, IMS_REGISTERED); + + // setup MO speech call + f_IMS_CC_StartCall(IPCAN_MO_SpeechCall); // C.21 Step 1 + + v_InviteRequestWithSdp := f_IMS_MOCallSetup_AnnexC21_Step2_A4(); // C.21 Step 2 + v_InviteRequest := v_InviteRequestWithSdp.Invite; + v_ContactUrl := f_Addr_Union_GetSipUrl(v_InviteRequest.msgHeader.contact.contactBody.contactAddresses[0].addressField); + + v_MessageHeader_183 := f_IMS_MOCallSetup_AnnexC21_Step3_4(v_InviteRequestWithSdp); // C.21 Step 3, 4 + f_IMS_CC_TriggerDedicatedBearerActivation(IPCAN_MO_SpeechCall); // trigger IPCAN to continue with activation of secondary PDP context or dedicated EPS bearer + v_SDP_LatestMessageByUE := f_IMS_MOCallSetup_AnnexC21_Steps5_13(v_InviteRequestWithSdp, v_MessageHeader_183); // @sic R5s120609 sic@ + v_SDP_LatestMessageBySS := f_IMS_BuildSDP_AnnexC21_Step6or8(v_SDP_LatestMessageByUE); // as in f_IMS_MOCallSetup_AnnexC21_Steps5_13 + + f_IMS_TestBody_Set(true); + + // @siclog "Step 1 - 4" siclog@ + f_IMS_MTCallHoldResume_AnnexC9(HOLD, v_ContactUrl, v_SDP_LatestMessageBySS); + f_IMS_PreliminaryPass(__FILE__, __LINE__, ""); + + // @siclog "Step 5 - 8" siclog@ + f_IMS_MTCallHoldResume_AnnexC9(RESUME, v_ContactUrl, v_SDP_LatestMessageBySS); + f_IMS_PreliminaryPass(__FILE__, __LINE__, ""); + + // @siclog "Step 9 -10" siclog@ + f_IMS_CallReleaseMT(v_InviteRequest, v_ContactUrl); + + f_IMS_TestBody_Set(false); + f_IMS_CC_Postamble(IPCAN_MO_SpeechCall); + } + + //============================================================================ + + template (value) MessageBody cs_MessageBody_SimpleMsgSummary(template (value) SimpleMsgSummary p_SimpleMsgSummary) := + { + simpleMsgSummary := p_SimpleMsgSummary + }; + + template (value) SimpleMsgSummary cs_SimpleMsgSummary_MessageWaiting(charstring p_Status, + charstring p_AccountURI, + template (omit) Msg_summary_line_list p_MsgSummaryLineList := omit, + template (omit) Opt_msg_headers p_SetOfOptionalLines := omit) := + { // RFC 3842 + msg_status_line := { + msg_type := c_messageWaiting, + msg_status := p_Status + }, + msg_account := { + msg_type_account := c_messageAccount, + account_URI := p_AccountURI + }, + msg_summary_line_list := p_MsgSummaryLineList, + opt_msg_headers := p_SetOfOptionalLines + }; + + template (value) Msg_summary_line cs_MsgSummaryLine_VoiceMessage(charstring p_Msgs, + charstring p_UrgentMsgs := "0/0") := + { + msg_context_class := c_voiceMessage, + msgs := p_Msgs, + urgent_msgs := p_UrgentMsgs + }; + + function fl_IMS_Notify_15_15(SUBSCRIBE_Request p_SubscribeRequest, + charstring p_MessageServerDomain, + template (value) SimpleMsgSummary p_SimpleMsgSummary, + integer p_CseqValue := 1) runs on IMS_PTC + { + var template (value) MessageHeader v_MessageHeader_Notify; + var template (present) MessageHeader v_MessageHeader_Response; + var charstring v_NW_AddrStr := f_IMS_PTC_NW_Address_GetAddrStr(); + var InternetProtocol_Type v_Protocol := f_IMS_PTC_ImsInfo_GetTransportProtocol(); + var CharStringList_Type v_ViaAddressList := { v_NW_AddrStr, px_IMS_Scscf, p_MessageServerDomain }; + var template (value) SipUrl v_ContactSipUrl := cs_SipUri_HostPort("Contact@" & p_MessageServerDomain); // !!!! needs clarification in the prose; there is no reason to have yet-another-PIXIT !!!! + var template (value) SipUrl v_RequestLineUrl := f_IMS_PTC_ImsInfo_GetContactUrl(); + var EventType v_EventType := "message-summary"; + + v_MessageHeader_Notify := f_IMS_NotifyRequest_MessageHeader_Common(p_SubscribeRequest, v_ViaAddressList, v_ContactSipUrl, v_EventType, p_CseqValue, cs_SubscriptionState_Active("7200")); + IMS_Client.send(cas_IMS_Notify_Request(cs_IMS_RoutingInfo(v_Protocol), cs_NOTIFY_Request(v_RequestLineUrl, v_MessageHeader_Notify, cs_MessageBody_SimpleMsgSummary(p_SimpleMsgSummary)))); + + v_MessageHeader_Response := f_IMS_OtherResponse_200_MessageHeaderRX(v_MessageHeader_Notify); + f_IMS_ReceiveResponse(v_MessageHeader_Notify, v_Protocol, cr_Response(c_statusLine200, v_MessageHeader_Response)); /* @sic R5s140350 sic@ */ + } + + /* + * @desc REFERENCE TS 34.229-1 clause 15.15 + * @status CHECKED + */ + function f_TC_15_15_IMS() runs on IMS_PTC + { /* !!!! Prose CR required as prose refers to PDP context but not to EPS bearer !!!! */ + var SUBSCRIBE_Request v_SubscribeReq; + var IMS_DATA_REQ v_IMS_DATA_REQ; + var template (present) charstring v_ExpireTime := ?; // value not to be checked acc. to A.6.1 + var charstring v_AccountURI; + var charstring v_MessageServerDomain; + var template (value) SimpleMsgSummary v_SimpleMsgSummary; + var Opt_msg_headers v_SetOfOptionalLines; + + f_IMS_CC_Preamble(IPCAN_SpeechCall, IMS_REGISTERED); + + v_MessageServerDomain := f_IMS_PTC_ImsInfo_GetHomeDomainName(); // !!!! acc. to the prose there is yet-another-PIXIT => needs to be changed !!!! + + // Step 1. UE subscribes to the Message Waiting Indication event package. + f_IMS_CC_StartSignalling(IPCAN_MO_IMS_Signalling); + f_UT_IMS_ActivateMWI(MMI); // !!!! prose CR needed: MMI command is missing in the prose !!!! + + // @siclog "Step 1 - 2" siclog@ + v_IMS_DATA_REQ := f_IMS_SUBSCRIBE_Request("message-summary", -, v_ExpireTime); + f_IMS_SUBSCRIBE_Response(v_IMS_DATA_REQ); + v_SubscribeReq := v_IMS_DATA_REQ.Request.Subscribe; + v_AccountURI := f_SIP_SipUrl2Str(f_Addr_Union_GetSipUrl(v_SubscribeReq.msgHeader.fromField.addressField)); + + // @siclog "Step 3 - 4" siclog@ + v_SimpleMsgSummary := cs_SimpleMsgSummary_MessageWaiting("no", v_AccountURI); + fl_IMS_Notify_15_15(v_SubscribeReq, v_MessageServerDomain, v_SimpleMsgSummary, 1); + + /* Step 5 and 6. The SS sends another NOTIFY for Message Waiting Indication event package, + * now referring to one voice message waiting. + */ + v_SetOfOptionalLines := { + "To: " & f_IMS_PTC_ImsInfo_GetURI(defaultId), + "From: ", + "Message-ID: 27775334485@" & v_MessageServerDomain, + "Message-Context: voice-message" + }; + // @siclog "Step 5 - 6" siclog@ + v_SimpleMsgSummary := cs_SimpleMsgSummary_MessageWaiting("yes", v_AccountURI, {cs_MsgSummaryLine_VoiceMessage("1/0")}, v_SetOfOptionalLines); + fl_IMS_Notify_15_15(v_SubscribeReq, v_MessageServerDomain, v_SimpleMsgSummary, 2); + + f_IMS_TestBody_Set(false); + f_IMS_CC_Postamble(IPCAN_MO_IMS_Signalling); + } + + /* ************************************************************************** */ + /* + * @desc used in 15.27 and 15.28 to check alertInfo + * @param p_MessageHeader_Ringing + * @param p_AlertInfoUrl + * @status APPROVED (IMS) + */ + function fl_IMS_CW_180Ringing_CheckAlertInfo(template (omit) MessageHeader p_MessageHeader_Ringing, + charstring p_AlertInfoUrl) runs on IMS_PTC + { + var template (present) charstring v_AlertInfoUrl := p_AlertInfoUrl; /* @sic R5s140092 change 1.2 - temporary solution: (p_AlertInfoUrl, "<" & p_AlertInfoUrl &">") sic@ + @sic R5w140111, slide 8: "<", ">" shall be handled by the codec sic@ */ + + if (not ispresent(p_MessageHeader_Ringing)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "No 180 Ringing"); + } + if (not match(valueof(p_MessageHeader_Ringing.alertInfo), cr_AlertInfo(v_AlertInfoUrl))) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid 'alertInfo'"); + } + } + + /* + * @desc function for 15.27 and 15.28 to establish incoming call for CW + * @return INVITE_Request + * @status APPROVED (IMS) + */ + function fl_IMS_CW_IncomingCall() runs on IMS_PTC return INVITE_Request + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: v_InviteRequestWithSdp instead of v_InviteRequest sic@ */ + var IMS_ResponseWithSdp_Type v_ResponseWithSdp; /* @sic R5w140112 sic@ */ + var IMS_Response_Type v_SessionInProgress183; + var MessageHeader v_MessageHeader_PrevReliableResponse; + var template (omit) MessageHeader v_MessageHeader_Ringing; + + v_InviteRequestWithSdp := f_IMS_MTCallSetup_AnnexC11_INVITE(); + v_ResponseWithSdp := f_IMS_MTCallSetup_AnnexC11_Steps1_4(v_InviteRequestWithSdp); + v_SessionInProgress183 := v_ResponseWithSdp.Response; + // Establish Dedicated EPS bearer + // See TS. 36.508 EUTRA/EPS signalling for IMS MT speech call Table 4.5A.7.3-1 Step 9-12 + + // Step 5 - 6. Send PRACK, Receive 200 OK + v_MessageHeader_PrevReliableResponse := v_SessionInProgress183.msgHeader; + f_IMS_MTCallSetup_SendPRACK_ReceiveOK(v_InviteRequestWithSdp.Invite, v_MessageHeader_PrevReliableResponse); + + // Step 7 - 11. Send UPDATE, Receive 200 OK, Receive 180 Ringing and send PRACK if requested + v_MessageHeader_Ringing := f_IMS_MTCallSetup_AnnexC11_Steps7_11(v_InviteRequestWithSdp); + fl_IMS_CW_180Ringing_CheckAlertInfo(v_MessageHeader_Ringing, "urn:alert:service:call-waiting"); // Requirement step 9 + + return v_InviteRequestWithSdp.Invite; + } + + //**************************************************************************** + /* + * @desc REFERENCE TS 34.229-1 clause 15.27 + * @status APPROVED (IMS) + */ + function f_TC_15_27_IMS() runs on IMS_PTC + { /* @sic R5-142955: sequence changed for steps 12..15 sic@ */ + var template (value) INVITE_Request v_InviteRequest_Dialog1; + var template (value) INVITE_Request v_InviteRequest_Dialog2; + var template (present) MessageHeader v_MessageHeader_ExpectedBye_Dialog1; + var template (present) MessageHeader v_MessageHeader_Expected200_Dialog2; + var template (present) SipUrl v_ContactUrl_Dialog1; + var SipUrl v_ContactUrl_Dialog2; + var template (value) MessageHeader v_MessageHeader; + var MessageHeader v_MessageHeader_ReceivedBye; + var InternetProtocol_Type v_Protocol; + var IMS_DATA_RSP v_IMS_DATA_RSP; + var IMS_DATA_REQ v_IMS_DATA_REQ; + + f_IMS_CC_Preamble(IPCAN_SpeechCall, IMS_REGISTERED); + + // Initial conditions - Setup an MO Call according to Annex C.7 + // FFS - we use here the procedures for MO Call Annex C.21 which is identical to Annex C.7 + // => prose shall refer to C.21 instead of C.7 as this is done for 15.28 already + + v_InviteRequest_Dialog1 := f_IMS_CC_MO_SpeechCall(); + + f_IMS_TestBody_Set(true); + + // @siclog "Step 1 - 11" siclog@ + f_IMS_PTC_ImsInfo_ActivateDialog(secondDialog); + v_InviteRequest_Dialog2 := fl_IMS_CW_IncomingCall(); + + // @siclog "Step 11a: terminate previous session and take over waiting call" + f_UT_HangupIMSCall(MMI); // @sic R5-142955, R5s140307 sic@ + + // @siclog "Step 12: Receive BYE corresponding to first call" + /* @sic R5-142955: the BYE comes as reaction of the UE on the UT command at ste 11a sic@ */ + f_IMS_PTC_ImsInfo_ActivateDialog(firstDialog); + v_MessageHeader_ExpectedBye_Dialog1 := f_IMS_ByeRequest_MessageHeaderRX(v_InviteRequest_Dialog1); + v_ContactUrl_Dialog1 := f_SIP_BuildSipUri_RX(px_IMS_CalleeContactUri); /* as used in the C.21 procedure */ + IMS_Server.receive(car_IMS_Bye_Request(cr_BYE_Request(v_ContactUrl_Dialog1, v_MessageHeader_ExpectedBye_Dialog1))) -> value v_IMS_DATA_REQ; + v_MessageHeader_ReceivedBye := v_IMS_DATA_REQ.Request.Bye.msgHeader; + f_IMS_MessageHeader_Request_CheckVia(v_MessageHeader_ReceivedBye, v_IMS_DATA_REQ.RoutingInfo.Protocol); + + // @siclog "Step 13: Send 200 OK" + v_MessageHeader := f_IMS_OtherResponse_200_MessageHeaderTX(v_MessageHeader_ReceivedBye); + IMS_Server.send(cas_IMS_DATA_RSP(f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo), cs_Response(c_statusLine200, v_MessageHeader))); + f_IMS_PTC_ImsInfo_DialogRelease(); + + // @siclog "Step 13a: Accept incoming call" + f_UT_AnswerCall(MMI); // @sic R5-142955, R5s140307 sic@ + + // @siclog "Step 14: SS expects and receives 200 OK for INVITE from the UE" + f_IMS_PTC_ImsInfo_ActivateDialog(secondDialog); + v_MessageHeader_Expected200_Dialog2 := f_IMS_OtherResponse_200_MessageHeaderRX(v_InviteRequest_Dialog2.msgHeader); + v_ContactUrl_Dialog2 := f_IMS_PTC_ImsInfo_GetContactUrl(); + v_Protocol := f_IMS_PTC_ImsInfo_GetTransportProtocol(); + v_IMS_DATA_RSP := f_IMS_ReceiveResponse(v_InviteRequest_Dialog2.msgHeader, + v_Protocol, + cr_Response(c_statusLine200, v_MessageHeader_Expected200_Dialog2)); + + // @siclog "Step 15: SS sends ACK to the UE" + v_MessageHeader := f_IMS_AckRequest_MessageHeaderTX(v_InviteRequest_Dialog2); + IMS_Client.send(cas_IMS_Ack_Request(cs_IMS_RoutingInfo(v_Protocol), cs_ACK_Request(v_ContactUrl_Dialog2, v_MessageHeader))); + + f_IMS_TestBody_Set(false); + + f_IMS_CallReleaseMT(v_InviteRequest_Dialog2, v_ContactUrl_Dialog2); // @sic R5s140606 sic@ + + f_IMS_CC_Postamble(IPCAN_MO_SpeechCall); + } + + //**************************************************************************** + /* + * @desc REFERENCE TS 34.229-1 clause 15.28 + * @status APPROVED (IMS) + */ + function f_TC_15_28_IMS() runs on IMS_PTC + { /* 34.229-1 clause 15.28 - Communication Waiting and cancelling the call */ + var IMS_DATA_RSP v_IMS_DATA_RSP; + var INVITE_Request v_InviteRequest_Dialog1; + var template (value) INVITE_Request v_InviteRequest_Dialog2; + var template (value) MessageHeader v_MessageHeader_Cancel; + var template (value) MessageHeader v_MessageHeader_Ack; + var InternetProtocol_Type v_Protocol; + var SipUrl v_ContactUrl; + var boolean v_WaitingFor200 := true; + var boolean v_WaitingFor487 := true; + + f_IMS_CC_Preamble(IPCAN_SpeechCall, IMS_REGISTERED); + + // Initial conditions - Setup an MO Call according to Annex C.21 + v_InviteRequest_Dialog1 := f_IMS_CC_MO_SpeechCall(); // @sic R5-140909 sic@ + + f_IMS_TestBody_Set(true); + + // @siclog "Step 1 - 11" siclog@ + f_IMS_PTC_ImsInfo_ActivateDialog(secondDialog); /* @sic R5s140092 change 1.5 sic@ */ + v_InviteRequest_Dialog2 := fl_IMS_CW_IncomingCall(); /* @sic R5-140909 sic@ */ + + // Step 12 - SS sends CANCEL request to terminate the INVITE transaction + v_MessageHeader_Cancel := f_IMS_CancelRequest_MessageHeaderTX(v_InviteRequest_Dialog2); /* @sic R5s140178 sic@ */ + v_ContactUrl := f_IMS_PTC_ImsInfo_GetContactUrl(); + v_Protocol := f_IMS_PTC_ImsInfo_GetTransportProtocol(); + IMS_Client.send(cas_IMS_Cancel_Request(cs_IMS_RoutingInfo(v_Protocol), cs_CANCEL_Request(v_ContactUrl, v_MessageHeader_Cancel))); + + while (v_WaitingFor200 or v_WaitingFor487) { + alt { // @sic R5-125773, R5s140350: interleave is not allowed for altsteps sic@ + // Step 13 - The UE acknowledges the CANCEL with 200 OK. + [v_WaitingFor200] a_IMS_ReceiveResponse(v_MessageHeader_Cancel, + v_Protocol, + cr_Response(c_statusLine200, f_IMS_OtherResponse_200_MessageHeaderRX(v_MessageHeader_Cancel)), + v_IMS_DATA_RSP) { + v_WaitingFor200 := false; + } + // Step 14. The UE responds to INVITE with a 487 Request Terminated final response after transaction was terminated. + [v_WaitingFor487] a_IMS_ReceiveResponse(v_InviteRequest_Dialog2.msgHeader, + v_Protocol, + cr_Response(c_statusLine487, f_IMS_InviteResponse_4XX_MessageHeaderRX(v_InviteRequest_Dialog2.msgHeader)), /* @sic R5s140178 sic@ */ + v_IMS_DATA_RSP) { + v_WaitingFor487 := false; + } + } + } + // Step 15. Send ACK. The SS acknowledges the receipt of 200 OK for INVITE. + v_MessageHeader_Ack := f_IMS_AckRequest_MessageHeaderTX(v_InviteRequest_Dialog2, c_statusLine487); /* @sic R5s140092 change 1.3; R5s140178 sic@ */ + IMS_Client.send(cas_IMS_Ack_Request(cs_IMS_RoutingInfo(v_Protocol), cs_ACK_Request(v_ContactUrl, v_MessageHeader_Ack))); + + f_IMS_PTC_ImsInfo_DialogRelease(); /* @sic R5s140092 change 1.5 sic@ */ + f_IMS_PTC_ImsInfo_ActivateDialog(firstDialog); /* @sic R5s140092 change 1.5 sic@ */ + + f_IMS_TestBody_Set(false); + f_IMS_CallReleaseMO(v_InviteRequest_Dialog1); + + f_IMS_CC_Postamble(IPCAN_MO_SpeechCall); + } +} diff --git a/IMS_PART4_IWD_14wk37/IMS/15/IMS_CC_SSXcapTestcases.ttcn b/IMS_PART4_IWD_14wk37/IMS/15/IMS_CC_SSXcapTestcases.ttcn new file mode 100644 index 0000000..113c85d --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/15/IMS_CC_SSXcapTestcases.ttcn @@ -0,0 +1,1184 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-11 16:21:14 +0200 (Thu, 11 Sep 2014) $ +// $Rev: 12212 $ +/******************************************************************************/ + +module IMS_CC_SSXcapTestcases { + + import from CommonDefs all; + import from NAS_AuthenticationCommon all; + import from IP_ASP_TypeDefs all; + import from IP_PTC_CtrlMsgs all; + import from IP_PTC_Templates all; + import from IMS_Component all; + import from IMS_CC_Component all; + import from IMS_CommonFunctions all; + import from IMS_CC_Parameters all; + import from IMS_CommonDefs all; + import from IMS_CC_CommonFunctions all; + import from HTTP_ASP_TypeDefs all; + import from HTTP_PTC_CoordMsg all; + import from UpperTesterFunctions all; + + import from XSD all; + import from urn_ietf_params_xml_ns_common_policy all; + import from http_uri_etsi_org_ngn_params_xml_simservs_xcap all; +// import from urn_ietf_params_xml_ns_common_policy language "XSD" all; +// import from http_uri_etsi_org_ngn_params_xml_simservs_xcap language "XSD" all; + + const PortNumber_Type tsc_PortNumberHTTP := 80; /* @status APPROVED (IMS) */ + const PortNumber_Type tsc_PortNumberHTTPS := 443; /* @status APPROVED (IMS) */ + + type enumerated HTTP_TransactionType_Type { initial, subsequent }; /* @status APPROVED (IMS) */ + + const XSD.AnyURI tsc_AnyUserId := "sip:user@domain.com"; /* @status APPROVED (IMS) */ + + type Simservs.absService_list Simservs_ServiceList_Type; /* @status APPROVED (IMS) */ + + type record SupplementaryServiceInfo_Type + { /* to simplify checks */ + /* @status APPROVED (IMS) */ + AbsService_group service, + boolean active, + Ruleset ruleset + }; + + type record of SupplementaryServiceInfo_Type SupplementaryServiceInfoList_Type; /* @status APPROVED (IMS) */ + + + template (present) ConditionsType cr_ConditionsType_Empty := {choice_list := {{identity_list := {}}}}; /* @status APPROVED (IMS) */ + + template (value) Ruleset cs_Ruleset_Empty := { rule_list := {} }; /* @status APPROVED (IMS) */ + + template (value) SupplementaryServiceInfo_Type cs_SupplementaryService_Info(AbsService_group p_Service, + boolean p_Active, + Ruleset p_Ruleset) := + { /* @status APPROVED (IMS) */ + service := p_Service, + active := p_Active, + ruleset := p_Ruleset + }; + + //---------------------------------------------------------------------------- + + template (present) AbsService_group cr_Communication_diversion(template boolean p_Active := *) := + { /* @status APPROVED (IMS) */ + communication_diversion := { + active := p_Active, + attr := *, + noReplyTimer := *, + ruleset := * + } + }; + + template (present) AbsService_group cr_Originating_identity_presentation_restriction(template boolean p_Active := *) := + { /* @status APPROVED (IMS) */ + originating_identity_presentation_restriction := { + active := p_Active, + attr := *, + default_behaviour := * + } + }; + + template (present) AbsService_group cr_Originating_identity_presentation(template boolean p_Active := *) := + { /* @status APPROVED (IMS) */ + originating_identity_presentation := { + active := p_Active, + attr := * + } + }; + + template (present) AbsService_group cr_Terminating_identity_presentation_restriction(template boolean p_Active := *) := + { /* @status APPROVED (IMS) */ + terminating_identity_presentation_restriction := { + active := p_Active, + attr := *, + default_behaviour := * + } + }; + + template (present) AbsService_group cr_Terminating_identity_presentation(template boolean p_Active := *) := + { /* @status APPROVED (IMS) */ + terminating_identity_presentation := { + active := p_Active, + attr := * + } + }; + + template (present) AbsService_group cr_Incoming_communication_barring(template boolean p_Active := *) := + { /* @status APPROVED (IMS) */ + incoming_communication_barring := { + active := p_Active, + attr := *, + ruleset := * + } + }; + + template (present) AbsService_group cr_Outgoing_communication_barring(template boolean p_Active := *) := + { /* @status APPROVED (IMS) */ + outgoing_communication_barring := { + active := p_Active, + attr := *, + ruleset := * + } + }; + + //---------------------------------------------------------------------------- + + template (value) Simservs cs_Simservs(template (value) Simservs_ServiceList_Type p_AbsServiceList) := + { /* @status APPROVED (IMS) */ + attr := omit, + absService_list := p_AbsServiceList, + extensions := omit + }; + + template (value) AbsService_group cs_Communication_diversion(boolean p_Active := false) := + { /* @status APPROVED (IMS) */ + communication_diversion := { + active := p_Active, + attr := omit, + noReplyTimer := omit, + ruleset := omit + } + }; + + template (value) AbsService_group cs_Originating_identity_presentation_restriction(boolean p_Active := false) := + { /* @status APPROVED (IMS) */ + originating_identity_presentation_restriction := { + active := p_Active, + attr := omit, + default_behaviour := omit + } + }; + + template (value) AbsService_group cs_Originating_identity_presentation(boolean p_Active := false) := + { /* @status APPROVED (IMS) */ + originating_identity_presentation := { + active := p_Active, + attr := omit + } + }; + + template (value) AbsService_group cs_Terminating_identity_presentation_restriction(boolean p_Active := false) := + { /* @status APPROVED (IMS) */ + terminating_identity_presentation_restriction := { + active := p_Active, + attr := omit, + default_behaviour := omit + } + }; + + template (value) AbsService_group cs_Terminating_identity_presentation(boolean p_Active := false) := + { /* @status APPROVED (IMS) */ + terminating_identity_presentation := { + active := p_Active, + attr := omit + } + }; + + template (value) AbsService_group cs_Incoming_communication_barring(boolean p_Active := false) := + { /* @status APPROVED (IMS) */ + incoming_communication_barring := { + active := p_Active, + attr := omit, + ruleset := omit + } + }; + + template (value) AbsService_group cs_Outgoing_communication_barring(boolean p_Active := false) := + { /* @status APPROVED (IMS) */ + outgoing_communication_barring := { + active := p_Active, + attr := omit, + ruleset := omit + } + }; + + //---------------------------------------------------------------------------- + + template (value) HTTP_ConfigurationParams_Type cs_HTTP_ConfigurationParams(HttpAuthenticationMechanism_Type p_HttpAuthenticationMechanism, + template (value) IP_Socket_Type p_XcapServerAddrAndPort, + template (omit) IP_Socket_Type p_BsfServerAddrAndPort, + template (value) IP_DrbInfo_Type p_DrbRoutingInfo, + charstring p_HomeDomainName, + charstring p_XcapUsername, + charstring p_XcapUserId, + charstring p_XcapRootUri := px_XCAP_RootUri) := + { /* @status APPROVED (IMS) */ + HttpAuthenticationMechanism := p_HttpAuthenticationMechanism, + XcapServerAddrAndPort := p_XcapServerAddrAndPort, + BsfServerAddrAndPort := p_BsfServerAddrAndPort, + DrbRoutingInfo := p_DrbRoutingInfo, + HomeDomainName := p_HomeDomainName, + XcapUsername := p_XcapUsername, + XcapUserId := p_XcapUserId, + XcapRootUri := p_XcapRootUri + }; + + template (value) HTTP_TransactionParams_Type cs_HTTP_TransactionParams(float p_MaxDuration, + float p_InactivityDuration, + template (omit) Common_AuthenticationParams_Type p_AuthenticationParams) := + { /* @status APPROVED (IMS) */ + MaxDuration := p_MaxDuration, + InactivityDuration := p_InactivityDuration, + AuthenticationParams := p_AuthenticationParams + }; + + //---------------------------------------------------------------------------- + /* + * @desc send command to the HTTP/XCAP PTC and wait until it has been done + * @param p_FileName + * @param p_LineNo + * @param p_Command + * @return charstring + * @status APPROVED (IMS) + */ + function f_IMS_HTTP_RunCommand(charstring p_FileName, + LineNo_Type p_LineNo, + template (value) IMS_HTTP_Command_Type p_Command) runs on IMS_XCAP_PTC return charstring + { + var template (present) IMS_HTTP_Response_Type v_ExpectedResponse := ?; + var IMS_HTTP_Response_Type v_Response; + var charstring v_Result := ""; + + XCAP.send(p_Command); + XCAP.receive(v_ExpectedResponse) -> value v_Response; + + if (ischosen(v_Response.Error)) { + f_IMS_SetVerdictFailOrInconc(p_FileName, p_LineNo, v_Response.Error); + } else { + v_Result := v_Response.Result; + } + return v_Result; + } + + //---------------------------------------------------------------------------- + /* + * @desc return HttpAuthenticationMechanism_Type acc. to PICS setting + * @return HttpAuthenticationMechanism_Type + * @status APPROVED (IMS) + */ + function fl_HTTP_AuthenticationMechanism() return HttpAuthenticationMechanism_Type + { + var HttpAuthenticationMechanism_Type v_AuthMech; + + if (pc_HttpGAAAuthentication) { v_AuthMech := gaaAuthentication; } + else if (pc_HttpDigestAuthentication) { v_AuthMech := httpDigestAuthentication; } + else { v_AuthMech := noAuthentication; } + + return v_AuthMech; + } + + /* + * @desc configure HTTP/XCAP PTC + * @param p_XcapUserId + * @param p_XcapUsername + * @status APPROVED (IMS) + */ + function f_IMS_HTTP_Configure(charstring p_XcapUserId, + charstring p_XcapUsername) runs on IMS_XCAP_PTC + { + var template (value) IMS_HTTP_Command_Type v_Command; + var HttpAuthenticationMechanism_Type v_HttpAuthenticationMechanism := fl_HTTP_AuthenticationMechanism(); + var IP_AddrInfo_Type v_PCSCF_Address := f_IMS_PTC_NW_Address_Get(); + var template (value) IP_Socket_Type v_XcapServerAddrAndPort; + var template (omit) IP_Socket_Type v_BsfServerAddrAndPort; + var template (value) IP_DrbInfo_Type v_DrbRoutingInfo; + var charstring v_HomeDomainName := f_IMS_PTC_ImsInfo_GetHomeDomainName(); + var template (present) charstring v_RanType := f_IMS_PTC_RanType_GetString(); + var IP_DrbId_Type v_DrbId; + + if (isvalue(v_RanType) and match(valueof(v_RanType), pattern "3GPP-E-UTRAN-*")) { + v_DrbId := 2; /* we use DRB2 as XCAP signalling happens at 2nd PDN (see 36.508 cl. 4.5A.14) */ + v_DrbRoutingInfo := cs_DrbInfo_EUTRA(eutra_Cell1, v_DrbId); + } else { + FatalError(__FILE__, __LINE__, "Unknown RAN type"); + } + select (v_HttpAuthenticationMechanism) { + case (noAuthentication, httpDigestAuthentication) { + v_XcapServerAddrAndPort := cs_IP_Socket(v_PCSCF_Address, tsc_PortNumberHTTP); + v_BsfServerAddrAndPort := omit; + } + case (gaaAuthentication) { + v_XcapServerAddrAndPort := cs_IP_Socket(v_PCSCF_Address, tsc_PortNumberHTTPS); + v_BsfServerAddrAndPort := cs_IP_Socket(v_PCSCF_Address, tsc_PortNumberHTTP); + } + case else { + FatalError(__FILE__, __LINE__, "invalid HttpAuthenticationMechanism_Type"); + } + } + v_Command := { + Configure := cs_HTTP_ConfigurationParams(v_HttpAuthenticationMechanism, + v_XcapServerAddrAndPort, + v_BsfServerAddrAndPort, + v_DrbRoutingInfo, + v_HomeDomainName, + p_XcapUsername, + p_XcapUserId) + }; + f_IMS_HTTP_RunCommand(__FILE__, __LINE__, v_Command); + } + + //---------------------------------------------------------------------------- + /* + * @desc set simservs document at the XCAP server + * @param p_Document + * @status APPROVED (IMS) + */ + function f_IMS_XCAP_SetDocument(charstring p_Document) runs on IMS_XCAP_PTC + { + var template (value) IMS_HTTP_Command_Type v_Command := { DocumentSet := p_Document }; + f_IMS_HTTP_RunCommand(__FILE__, __LINE__, v_Command); + } + + /* + * @desc initialise simservs document for all supplementary services being not activated + * @status APPROVED (IMS) + */ + function f_IMS_XCAP_InitialiseSuplementaryServices() runs on IMS_XCAP_PTC + { + var template (value) Simservs_ServiceList_Type v_AbsServiceList := { + cs_Communication_diversion, + cs_Originating_identity_presentation_restriction, + cs_Originating_identity_presentation, + cs_Terminating_identity_presentation_restriction, + cs_Terminating_identity_presentation, + cs_Incoming_communication_barring, + cs_Outgoing_communication_barring + }; + var template (value) Simservs v_Simservs := cs_Simservs(v_AbsServiceList); + var bitstring v_Bitstring := encvalue(v_Simservs); + var charstring v_Document := oct2char(bit2oct(v_Bitstring)); + f_IMS_XCAP_SetDocument(v_Document); + } + + //---------------------------------------------------------------------------- + /* + * @desc get simservs document from the XCAP server + * @return Simservs + * @status APPROVED (IMS) + */ + function f_IMS_XCAP_GetDocument() runs on IMS_XCAP_PTC return Simservs + { + var Simservs v_Simservs; + var template (value) IMS_HTTP_Command_Type v_Command := {DocumentGet := true}; + var charstring v_Document := f_IMS_HTTP_RunCommand(__FILE__, __LINE__, v_Command); + var bitstring v_Bitstring := oct2bit(char2oct(v_Document)); + if (decvalue(v_Bitstring, v_Simservs) != 0) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "cannot decode simservs document"); + } + return v_Simservs; + } + + //---------------------------------------------------------------------------- + /* + * @desc start transaction and wait until it is done: the UE shall exchange all necessary HTTP messages with the XCAP server + * @param p_TransactionType + * @param p_MaxDuration + * @param p_InactivityDuration (default value: 20.0) + * @status APPROVED (IMS) + */ + function f_IMS_HTTP_Transaction(HTTP_TransactionType_Type p_TransactionType, + float p_MaxDuration, + float p_InactivityDuration := 20.0) runs on IMS_XCAP_PTC + { /* @sic R5s130794 change 20: p_InactivityDuration increased to 20.0 sic@ */ + var template (value) IMS_HTTP_Command_Type v_Command; + var template (omit) Common_AuthenticationParams_Type v_AuthenticationParams := omit; + var charstring v_Password := "xcap"; /* @sic R5s130794 Change 25 sic@ */ + + if (p_TransactionType == initial) { + v_AuthenticationParams := f_IMS_AuthenticationInit(tsc_IMS_AuthRAND); + v_AuthenticationParams.XRES := oct2bit(char2oct(v_Password)); + v_AuthenticationParams.XRESLength := lengthof(v_Password); + } + v_Command := { + TransactionStart := cs_HTTP_TransactionParams(p_MaxDuration, p_InactivityDuration, v_AuthenticationParams) + }; + f_IMS_HTTP_RunCommand(__FILE__, __LINE__, v_Command); + } + + //============================================================================ + /* + * @desc return entry for given supplementary service from the given simservs document + * @param p_Simservs + * @param p_RequiredService + * @param p_DefaultForRequiredService + * @return AbsService_group + * @status APPROVED (IMS) + */ + function fl_Simservs_GetService(Simservs p_Simservs, + template (present) AbsService_group p_RequiredService, + template (value) AbsService_group p_DefaultForRequiredService) return AbsService_group + { + var integer i; + var Simservs_ServiceList_Type v_ServiceList := p_Simservs.absService_list; + + for (i:=0; i < lengthof(v_ServiceList); i:=i+1) { + if (match(v_ServiceList[i], p_RequiredService)) { + return v_ServiceList[i]; + } + } + return valueof(p_DefaultForRequiredService); + } + + /* + * @desc return either given ruleset if present or empty ruleset + * @param p_Ruleset + * @return Ruleset + * @status APPROVED (IMS) + */ + function fl_Ruleset(template (omit) Ruleset p_Ruleset) return Ruleset + { + var template (omit) Ruleset v_Ruleset; + if (isvalue(p_Ruleset)) { + v_Ruleset := p_Ruleset; + } else { + v_Ruleset := cs_Ruleset_Empty; + } + return valueof(v_Ruleset); + } + + /* + * @desc return list of SupplementaryServiceInfo_Type which are relevant for a supplementary service; + * in general this list contains only one element but for COMMUNICATION_BARRING_WHILE_ROAMING we need two; + * Note: function always returns specific value even when information is omitted in the given document + * @param p_Simservs + * @param p_SupplementaryService + * @return SupplementaryServiceInfoList_Type + * @status APPROVED (IMS) + */ + function fl_Simservs_GetSpecificService(Simservs p_Simservs, + SS_Type p_SupplementaryService) return SupplementaryServiceInfoList_Type + { + var template (value) SupplementaryServiceInfoList_Type v_ServiceList := {}; + var Ruleset v_Ruleset := fl_Ruleset(omit); + var AbsService_group v_AbsService; + var boolean v_Active; + + select (p_SupplementaryService) { + case (SS_CLIP) { + v_AbsService := fl_Simservs_GetService(p_Simservs, cr_Originating_identity_presentation, cs_Originating_identity_presentation); + v_Active := match(v_AbsService, cr_Originating_identity_presentation(true)); + v_ServiceList[0] := cs_SupplementaryService_Info(v_AbsService, v_Active, v_Ruleset); + } + case (SS_CLIR) { + v_AbsService := fl_Simservs_GetService(p_Simservs, cr_Originating_identity_presentation_restriction, cs_Originating_identity_presentation_restriction); + v_Active := match(v_AbsService, cr_Originating_identity_presentation_restriction(true)); + v_ServiceList[0] := cs_SupplementaryService_Info(v_AbsService, v_Active, v_Ruleset); + } + case (SS_COLP) { + v_AbsService := fl_Simservs_GetService(p_Simservs, cr_Terminating_identity_presentation, cs_Terminating_identity_presentation); + v_Active := match(v_AbsService, cr_Terminating_identity_presentation(true)); + v_ServiceList[0] := cs_SupplementaryService_Info(v_AbsService, v_Active, v_Ruleset); + } + case (SS_TIR) { + v_AbsService := fl_Simservs_GetService(p_Simservs, cr_Terminating_identity_presentation_restriction, cs_Terminating_identity_presentation_restriction); + v_Active := match(v_AbsService, cr_Terminating_identity_presentation_restriction(true)); + v_ServiceList[0] := cs_SupplementaryService_Info(v_AbsService, v_Active, v_Ruleset); + } + case (SS_CFU, + SS_CFNRy, + SS_CFB, + SS_CFNL, + SS_CFNRc) { + v_AbsService := fl_Simservs_GetService(p_Simservs, cr_Communication_diversion, cs_Communication_diversion); + v_Active := match(v_AbsService, cr_Communication_diversion(true)); + v_Ruleset := fl_Ruleset(v_AbsService.communication_diversion.ruleset); + v_ServiceList[0] := cs_SupplementaryService_Info(v_AbsService, v_Active, v_Ruleset); + } + case (SS_BAIC, + SS_BAIC_ANONYMOUS, + SS_BAIC_EXCEPT_SPECIFIC_USER) { + v_AbsService := fl_Simservs_GetService(p_Simservs, cr_Incoming_communication_barring, cs_Incoming_communication_barring); + v_Active := match(v_AbsService, cr_Incoming_communication_barring(true)); + v_Ruleset := fl_Ruleset(v_AbsService.incoming_communication_barring.ruleset); + v_ServiceList[0] := cs_SupplementaryService_Info(v_AbsService, v_Active, v_Ruleset); + } + case (SS_BARRING_IN_AND_OUT_ROAM) { + v_AbsService := fl_Simservs_GetService(p_Simservs, cr_Incoming_communication_barring, cs_Incoming_communication_barring); + v_Active := match(v_AbsService, cr_Incoming_communication_barring(true)); + v_Ruleset := fl_Ruleset(v_AbsService.incoming_communication_barring.ruleset); + v_ServiceList[0] := cs_SupplementaryService_Info(v_AbsService, v_Active, v_Ruleset); + v_AbsService := fl_Simservs_GetService(p_Simservs, cr_Outgoing_communication_barring, cs_Outgoing_communication_barring); + v_Active := match(v_AbsService, cr_Outgoing_communication_barring(true)); + v_Ruleset := fl_Ruleset(v_AbsService.outgoing_communication_barring.ruleset); + v_ServiceList[1] := cs_SupplementaryService_Info(v_AbsService, v_Active, v_Ruleset); + } + case else { + FatalError(__FILE__, __LINE__, "unknown supplementatry service"); + } + } + return valueof(v_ServiceList); + } + + /* + * @desc return true if all given supplementary services are active or not active acc. to parameter p_Activated, false else + * @param p_ServiceList + * @param p_Activated + * @return boolean + * @status APPROVED (IMS) + */ + function fl_SupplementaryService_CheckActivated(SupplementaryServiceInfoList_Type p_ServiceList, + boolean p_Activated) return boolean + { + var integer i; + + for (i:=0; i < lengthof(p_ServiceList); i:=i+1) { + if (p_ServiceList[i].active != p_Activated) { + return false; + } + } + return true; + } + + + //---------------------------------------------------------------------------- + /* + * @desc check condition in given rule + * @param p_Rule + * @param p_Condition + * @return boolean + * @status APPROVED (IMS) + */ + function fl_Rule_CheckCondition(RuleType p_Rule, + template (omit) XSD.String p_Condition) return boolean + { + var XSD.String v_Element; + var XSD.String v_Condition; + var XSD.String v_PatternString1; + var XSD.String v_PatternString2; + var template (present) XSD.String v_PatternTemplate; + var integer i; + var integer k; + + if (not ispresent(p_Condition)) { // => "unconditional" + if (match(p_Rule.conditions, cr_ConditionsType_Empty ifpresent)) { // @sic R5s130794 change 26 sic@ + return true; + } + } else { + v_Condition := valueof(p_Condition); + if (ispresent(p_Rule.conditions)) { + for (i := 0; i < lengthof(p_Rule.conditions.choice_list); i := i + 1) { + if (ischosen(p_Rule.conditions.choice_list[i].elem_list)) { + for (k := 0; k < lengthof(p_Rule.conditions.choice_list[i].elem_list); k := k + 1) { + v_Element := p_Rule.conditions.choice_list[i].elem_list[k]; + v_PatternString1 := "<" & v_Condition & "/>"; + v_PatternString2 := "<" & v_Condition & ">"; + v_PatternTemplate := (pattern v_PatternString1, pattern v_PatternString2); + if (match(v_Element, v_PatternTemplate)) { + return true; + } + } + } + } + } + } + return false; + } + + /* + * @desc check forward-to + * @param p_Rule + * @param p_TargetAddress + * @return boolean + * @status APPROVED (IMS) + */ + function fl_ForwardingRule_CheckForwardTo(RuleType p_Rule, + XSD.AnyURI p_TargetAddress) return boolean + { + var integer i; + var bitstring v_Bitstring; + var Forward_to v_Forward_to; + + for (i := 0; i < lengthof(p_Rule.actions.elem_list); i := i + 1) { + v_Bitstring := oct2bit(char2oct(p_Rule.actions.elem_list[i])); + if (decvalue(v_Bitstring, v_Forward_to) == 0) { + if (match(v_Forward_to.target, p_TargetAddress)) { + return true; + } + } + } + return false; + } + + /* + * @desc check condition in given ruleset + * @param p_Ruleset + * @param p_Condition + * @param p_TargetAddress (default value: tsc_AnyUserId) + * @return boolean + * @status APPROVED (IMS) + */ + function fl_ForwardingRuleset_CheckCondition(Ruleset p_Ruleset, + template (omit) XSD.String p_Condition, + XSD.AnyURI p_TargetAddress := tsc_AnyUserId) return boolean + { + var integer i; + var RuleType v_Rule; + + for (i := 0; i < lengthof(p_Ruleset.rule_list); i := i + 1) { + v_Rule := p_Ruleset.rule_list[i]; + + if (fl_Rule_CheckCondition(v_Rule, p_Condition) and fl_ForwardingRule_CheckForwardTo(v_Rule, p_TargetAddress)) { + return true; + } + } + return false; + } + + /* + * @desc check ruleset regarding forwarding + * @param p_Condition + * @param p_Ruleset + * @return boolean + * @status APPROVED (IMS) + */ + function fl_CommunicationForwarding_CheckRuleset(SS_Type p_Condition, + Ruleset p_Ruleset) return boolean + { + var boolean v_Result := true; + + select (p_Condition) { + case (SS_CFU) { + v_Result := fl_ForwardingRuleset_CheckCondition(p_Ruleset, omit); + } + case (SS_CFNRy) { + v_Result := fl_ForwardingRuleset_CheckCondition(p_Ruleset, "no-answer"); + } + case (SS_CFB) { + v_Result := fl_ForwardingRuleset_CheckCondition(p_Ruleset, "busy"); + } + case (SS_CFNL) { + v_Result := fl_ForwardingRuleset_CheckCondition(p_Ruleset, "not-registered"); + } + case (SS_CFNRc) { + v_Result := fl_ForwardingRuleset_CheckCondition(p_Ruleset, "not-reachable"); + } + } + return v_Result; + } + + //---------------------------------------------------------------------------- + /* + * @desc check allow + * @param p_Rule + * @param p_AllowValue + * @return boolean + * @status APPROVED (IMS) + */ + function fl_BarringRule_CheckAllow(RuleType p_Rule, + boolean p_AllowValue) return boolean + { + var integer i; + var bitstring v_Bitstring; + var Allow v_Allow; + + for (i := 0; i < lengthof(p_Rule.actions.elem_list); i := i + 1) { + v_Bitstring := oct2bit(char2oct(p_Rule.actions.elem_list[i])); + if (decvalue(v_Bitstring, v_Allow) == 0) { + if (v_Allow == p_AllowValue) { + return true; + } + } + } + return false; + } + + /* + * @desc check for excepted user + * @param p_Rule + * @param p_UserId + * @return boolean + * @status APPROVED (IMS) + */ + function fl_BarringRule_CheckExceptSpecificUser(RuleType p_Rule, + XSD.AnyURI p_UserId) return boolean + { + var IdentityType v_Identity; + var ManyType v_Many; + var integer i; + var integer k; + var integer l; + + if (ispresent(p_Rule.conditions)) { + for (i := 0; i < lengthof(p_Rule.conditions.choice_list); i := i + 1) { + if (ischosen(p_Rule.conditions.choice_list[i].identity_list)) { + if (ispresent(p_Rule.conditions.choice_list[i].identity_list[0])) { + v_Identity := p_Rule.conditions.choice_list[i].identity_list[0]; + + for (k := 0; k < lengthof(v_Identity.choice_list); k := k + 1) { + if (ischosen(v_Identity.choice_list[k].many)) { + v_Many := v_Identity.choice_list[k].many; + for (l := 0; l < lengthof(v_Many.choice_list); l := l + 1) { + if (ischosen(v_Many.choice_list[l].except_)) { + if (v_Many.choice_list[l].except_.id == p_UserId) { + return true; + } + } + } + } + } + } + } + } + } + return false; + } + + /* + * @desc check for specific user + * @param p_Rule + * @param p_UserId + * @return boolean + * @status APPROVED (IMS) + */ + function fl_BarringRule_CheckOneSpecificUser(RuleType p_Rule, + XSD.AnyURI p_UserId) return boolean + { + var IdentityType v_Identity; + var OneType v_One; + var integer i; + var integer k; + + if (ispresent(p_Rule.conditions)) { + for (i := 0; i < lengthof(p_Rule.conditions.choice_list); i := i + 1) { + if (ischosen(p_Rule.conditions.choice_list[i].identity_list)) { + if (ispresent(p_Rule.conditions.choice_list[i].identity_list[0])) { + v_Identity := p_Rule.conditions.choice_list[i].identity_list[0]; + + for (k := 0; k < lengthof(v_Identity.choice_list); k := k + 1) { + if (ischosen(v_Identity.choice_list[k].one)) { + v_One := v_Identity.choice_list[k].one; + if (v_One.id == p_UserId) { + return true; + } + } + } + } + } + } + } + return false; + } + + /* + * @desc check for "other-identity" + * @param p_Rule + * @return boolean + * @status APPROVED (IMS) + */ + function fl_BarringRule_CheckOtherIdentity(RuleType p_Rule) return boolean + { + var XSD.String v_Element; + var template (present) XSD.String v_PatternTemplate := pattern ""; + var integer i; + var integer k; + + if (ispresent(p_Rule.conditions)) { + for (i := 0; i < lengthof(p_Rule.conditions.choice_list); i := i + 1) { + if (ischosen(p_Rule.conditions.choice_list[i].elem_list)) { + for (k := 0; k < lengthof(p_Rule.conditions.choice_list[i].elem_list); k := k + 1) { + v_Element := p_Rule.conditions.choice_list[i].elem_list[k]; + if (match(v_Element, v_PatternTemplate)) { + return true; + } + } + } + } + } + return false; + } + + /* + * @desc check option 1 at step 2 for testcase 15.13 + * @param p_Ruleset + * @param p_UserId (default value: tsc_AnyUserId) + * @return boolean + * @status APPROVED (IMS) + */ + function fl_IncomingCommunicationBarringExceptSpecificUser_CheckRuleset_Option1(Ruleset p_Ruleset, + XSD.AnyURI p_UserId := tsc_AnyUserId) return boolean + { + var integer i; + var RuleType v_Rule; + + for (i := 0; i < lengthof(p_Ruleset.rule_list); i := i + 1) { + v_Rule := p_Ruleset.rule_list[i]; + if (fl_BarringRule_CheckAllow(v_Rule, false) and fl_BarringRule_CheckExceptSpecificUser(v_Rule, p_UserId)) { + return true; + } + } + return false; + } + + /* + * @desc check 1st rule of option 2 at step 2 for testcase 15.13 + * @param p_Ruleset + * @param p_UserId (default value: tsc_AnyUserId) + * @return boolean + * @status APPROVED (IMS) + */ + function fl_IncomingCommunicationBarringExceptSpecificUser_CheckRuleset_Option2_Rule1(Ruleset p_Ruleset, + XSD.AnyURI p_UserId := tsc_AnyUserId) return boolean + { + var integer i; + var RuleType v_Rule; + + for (i := 0; i < lengthof(p_Ruleset.rule_list); i := i + 1) { + v_Rule := p_Ruleset.rule_list[i]; + if (fl_BarringRule_CheckAllow(v_Rule, true) and fl_BarringRule_CheckOneSpecificUser(v_Rule, p_UserId)) { + return true; + } + } + return false; + } + + /* + * @desc check 2nd rule of option 2 at step 2 for testcase 15.13 + * @param p_Ruleset + * @return boolean + * @status APPROVED (IMS) + */ + function fl_IncomingCommunicationBarringExceptSpecificUser_CheckRuleset_Option2_Rule2(Ruleset p_Ruleset) return boolean + { + var integer i; + var RuleType v_Rule; + + for (i := 0; i < lengthof(p_Ruleset.rule_list); i := i + 1) { + v_Rule := p_Ruleset.rule_list[i]; + if (fl_BarringRule_CheckAllow(v_Rule, false) and fl_BarringRule_CheckOtherIdentity(v_Rule)) { + return true; + } + } + return false; + } + + /* + * @desc check rule at step 2 for testcase 15.14 + * @param p_Ruleset + * @return boolean + * @status APPROVED (IMS) + */ + function fl_IncomingCommunicationBarringAnonymousUser_CheckRuleset(Ruleset p_Ruleset) return boolean + { + var integer i; + var RuleType v_Rule; + + for (i := 0; i < lengthof(p_Ruleset.rule_list); i := i + 1) { + v_Rule := p_Ruleset.rule_list[i]; + if (fl_BarringRule_CheckAllow(v_Rule, false) and fl_Rule_CheckCondition(v_Rule, "anonymous")) { + return true; + } + } + return false; + } + + /* + * @desc check ruleset + * @param p_Condition + * @param p_Ruleset + * @return boolean + * @status APPROVED (IMS) + */ + function fl_IncomingCommunicationBarring_CheckRuleset(SS_Type p_Condition, + Ruleset p_Ruleset) return boolean + { + var boolean v_Result := true; + + select (p_Condition) { + case (SS_BAIC_EXCEPT_SPECIFIC_USER) { + v_Result := (fl_IncomingCommunicationBarringExceptSpecificUser_CheckRuleset_Option1(p_Ruleset) or + (fl_IncomingCommunicationBarringExceptSpecificUser_CheckRuleset_Option2_Rule1(p_Ruleset) and + fl_IncomingCommunicationBarringExceptSpecificUser_CheckRuleset_Option2_Rule2(p_Ruleset))); + } + case (SS_BAIC_ANONYMOUS) { + v_Result := fl_IncomingCommunicationBarringAnonymousUser_CheckRuleset(p_Ruleset); + } + } + return v_Result; + } + + /* + * @desc check rule at step 2 for testcase 15.14a + * @param p_Ruleset + * @return boolean + * @status APPROVED (IMS) + */ + function fl_CommunicationBarringWhileRoaming_CheckRuleset(Ruleset p_Ruleset) return boolean + { + var integer i; + var RuleType v_Rule; + + for (i := 0; i < lengthof(p_Ruleset.rule_list); i := i + 1) { + v_Rule := p_Ruleset.rule_list[i]; + if (fl_BarringRule_CheckAllow(v_Rule, false) and fl_Rule_CheckCondition(v_Rule, "roaming")) { + return true; + } + } + return false; + } + + //============================================================================ + /* + * @desc preamble for XCAP test cases; returns XCAP user id (XUI) + * @return charstring + * @status APPROVED (IMS) + */ + function fl_XCAP_Preamble() runs on IMS_XCAP_PTC return charstring + { + var charstring v_XcapUserId; + var charstring v_XcapUsername; + + f_IMS_CC_Preamble(IPCAN_XCAP, IMS_REGISTERED); + + /* NOTE: f_IMS_CC_StartSignalling triggers IPCAN to start the XCAP signalling but it does not wait for it + * => we can start this in the preamble even though the UE will get triggered later on in the test body */ + f_IMS_CC_StartSignalling(IPCAN_XCAP_Signalling); + + if (pc_XCAP_XUIisDefaultPublicUserId) { /* @sic R5-144689, R5-144531 sic@ */ + v_XcapUserId := f_IMS_PTC_ImsInfo_GetURI(defaultId); + } else { + FatalError(__FILE__, __LINE__, "non-IR.92 configuration not supported yet: XUI has to be default public user id)"); + } + if (pc_XCAP_UsernameIsConfiguredInUE) { /* @sic R5-144689, R5-144531 sic@ */ + v_XcapUsername := px_XCAP_Username; + } else { + v_XcapUsername := v_XcapUserId; + } + + + f_IMS_HTTP_Configure(v_XcapUserId, v_XcapUsername); + + return v_XcapUserId; + } + + //---------------------------------------------------------------------------- + /* + * @desc common test body for XCAP test cases + * @param p_SupplementaryService + * @param p_PublicUserIdentity + * @status APPROVED (IMS) + */ + function fl_XCAP_SupplementaryService_CommonTestBody(SS_Type p_SupplementaryService, + charstring p_PublicUserIdentity) runs on IMS_XCAP_PTC + { + const boolean tsc_Activated := true; + var float v_MaxDuration := 300.0; /* @sic R5s130794 change 21: increased to 300.0 sic@ */ + var Simservs v_SimservsDocument; + var SupplementaryServiceInfoList_Type v_ServiceList; + + f_IMS_XCAP_InitialiseSuplementaryServices(); + + f_IMS_TestBody_Set(true); + + // Step 1 - Activate the service + f_UT_IMS_ActivateDeactivateSupplementaryService(MMI, true, p_PublicUserIdentity, p_SupplementaryService); + + // Step 2 - HTTP Request / Response exchange + f_IMS_HTTP_Transaction(initial, v_MaxDuration); + v_SimservsDocument := f_IMS_XCAP_GetDocument(); + v_ServiceList := fl_Simservs_GetSpecificService(v_SimservsDocument, p_SupplementaryService); + + if (not fl_SupplementaryService_CheckActivated(v_ServiceList, tsc_Activated)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 2 - supplementary service is not activated"); + } + // check ruleset for communication forwarding, communication barring + select (p_SupplementaryService) { + case (SS_CFU, + SS_CFNRy, + SS_CFB, + SS_CFNL, + SS_CFNRc) { + if (not fl_CommunicationForwarding_CheckRuleset(p_SupplementaryService, v_ServiceList[0].ruleset)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 2 - supplementary service: invalid rule set for communication forwarding"); + } + } + case (SS_BAIC_ANONYMOUS, + SS_BAIC_EXCEPT_SPECIFIC_USER) { + if (not fl_IncomingCommunicationBarring_CheckRuleset(p_SupplementaryService, v_ServiceList[0].ruleset)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 2 - supplementary service: invalid rule set for incoming communication barring"); + } + } + case (SS_BARRING_IN_AND_OUT_ROAM) { + if (not fl_CommunicationBarringWhileRoaming_CheckRuleset(v_ServiceList[0].ruleset)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 2 - supplementary service: invalid rule set for incoming communication barring"); + } + if (not fl_CommunicationBarringWhileRoaming_CheckRuleset(v_ServiceList[1].ruleset)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 2 - supplementary service: invalid rule set for outgoing communication barring"); + } + } + } + f_IMS_PreliminaryPass(__FILE__, __LINE__, "Step 2"); + + // Step 3 - Deactivate the service + f_UT_IMS_ActivateDeactivateSupplementaryService(MMI, false, p_PublicUserIdentity, p_SupplementaryService); + + // Step 4 + f_IMS_HTTP_Transaction(subsequent, v_MaxDuration); + v_SimservsDocument := f_IMS_XCAP_GetDocument(); + v_ServiceList := fl_Simservs_GetSpecificService(v_SimservsDocument, p_SupplementaryService); + + if (not fl_SupplementaryService_CheckActivated(v_ServiceList, not tsc_Activated)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 4 - supplementary service is still activated"); + } + f_IMS_PreliminaryPass(__FILE__, __LINE__, "Step 4"); + + f_IMS_TestBody_Set(false); + } + + //============================================================================ + + function f_TC_15_1_IMS() runs on IMS_XCAP_PTC + { + var charstring v_XcapUserId := fl_XCAP_Preamble(); + var SS_Type v_SupplementaryService := SS_CLIP; + + // @siclog "Step 1 - 4" siclog@ + fl_XCAP_SupplementaryService_CommonTestBody(v_SupplementaryService, v_XcapUserId); + + f_IMS_CC_Postamble(IPCAN_MO_IMS_Signalling); + } + + function f_TC_15_2_IMS() runs on IMS_XCAP_PTC + { + var charstring v_XcapUserId := fl_XCAP_Preamble(); + var SS_Type v_SupplementaryService := SS_CLIR; + + // @siclog "Step 1 - 4" siclog@ + fl_XCAP_SupplementaryService_CommonTestBody(v_SupplementaryService, v_XcapUserId); + + f_IMS_CC_Postamble(IPCAN_MO_IMS_Signalling); + } + + function f_TC_15_3_IMS() runs on IMS_XCAP_PTC + { + var charstring v_XcapUserId := fl_XCAP_Preamble(); + var SS_Type v_SupplementaryService := SS_COLP; + + // @siclog "Step 1 - 4" siclog@ + fl_XCAP_SupplementaryService_CommonTestBody(v_SupplementaryService, v_XcapUserId); + + f_IMS_CC_Postamble(IPCAN_MO_IMS_Signalling); + } + + function f_TC_15_4_IMS() runs on IMS_XCAP_PTC + { + var charstring v_XcapUserId := fl_XCAP_Preamble(); + var SS_Type v_SupplementaryService := SS_TIR; + + // @siclog "Step 1 - 4" siclog@ + fl_XCAP_SupplementaryService_CommonTestBody(v_SupplementaryService, v_XcapUserId); + + f_IMS_CC_Postamble(IPCAN_MO_IMS_Signalling); + } + + /* + * @desc REFERENCE TS 34.229-1 clause 15.5 + * @status APPROVED (IMS) + */ + function f_TC_15_5_IMS() runs on IMS_XCAP_PTC + { + var charstring v_XcapUserId := fl_XCAP_Preamble(); + var SS_Type v_SupplementaryService := SS_CFU; + + // @siclog "Step 1 - 4" siclog@ + fl_XCAP_SupplementaryService_CommonTestBody(v_SupplementaryService, v_XcapUserId); + + f_IMS_CC_Postamble(IPCAN_MO_IMS_Signalling); + } + + /* + * @desc REFERENCE TS 34.229-1 clause 15.7 + * @status APPROVED (IMS) + */ + function f_TC_15_7_IMS() runs on IMS_XCAP_PTC + { + var charstring v_XcapUserId := fl_XCAP_Preamble(); + var SS_Type v_SupplementaryService := SS_CFNRy; + + // @siclog "Step 1 - 4" siclog@ + fl_XCAP_SupplementaryService_CommonTestBody(v_SupplementaryService, v_XcapUserId); + + f_IMS_CC_Postamble(IPCAN_MO_IMS_Signalling); + } + + /* + * @desc REFERENCE TS 34.229-1 clause 15.9 + * @status APPROVED (IMS) + */ + function f_TC_15_9_IMS() runs on IMS_XCAP_PTC + { + var charstring v_XcapUserId := fl_XCAP_Preamble(); + var SS_Type v_SupplementaryService := SS_CFB; + + // @siclog "Step 1 - 4" siclog@ + fl_XCAP_SupplementaryService_CommonTestBody(v_SupplementaryService, v_XcapUserId); + + f_IMS_CC_Postamble(IPCAN_MO_IMS_Signalling); + } + + function f_TC_15_10_IMS() runs on IMS_XCAP_PTC + { + var charstring v_XcapUserId := fl_XCAP_Preamble(); + var SS_Type v_SupplementaryService := SS_CFNL; + + // @siclog "Step 1 - 4" siclog@ + fl_XCAP_SupplementaryService_CommonTestBody(v_SupplementaryService, v_XcapUserId); + + f_IMS_CC_Postamble(IPCAN_MO_IMS_Signalling); + } + + /* + * @desc REFERENCE TS 34.229-1 clause 15.10a + * @status APPROVED (IMS) + */ + function f_TC_15_10a_IMS() runs on IMS_XCAP_PTC + { + var charstring v_XcapUserId := fl_XCAP_Preamble(); + var SS_Type v_SupplementaryService := SS_CFNRc; + + // @siclog "Step 1 - 4" siclog@ + fl_XCAP_SupplementaryService_CommonTestBody(v_SupplementaryService, v_XcapUserId); + + f_IMS_CC_Postamble(IPCAN_MO_IMS_Signalling); + } + + function f_TC_15_13_IMS() runs on IMS_XCAP_PTC + { + var charstring v_XcapUserId := fl_XCAP_Preamble(); + var SS_Type v_SupplementaryService := SS_BAIC_EXCEPT_SPECIFIC_USER; + + // @siclog "Step 1 - 4" siclog@ + fl_XCAP_SupplementaryService_CommonTestBody(v_SupplementaryService, v_XcapUserId); + + f_IMS_CC_Postamble(IPCAN_MO_IMS_Signalling); + } + + function f_TC_15_14_IMS() runs on IMS_XCAP_PTC + { + var charstring v_XcapUserId := fl_XCAP_Preamble(); + var SS_Type v_SupplementaryService := SS_BAIC_ANONYMOUS; + + // @siclog "Step 1 - 4" siclog@ + fl_XCAP_SupplementaryService_CommonTestBody(v_SupplementaryService, v_XcapUserId); + + f_IMS_CC_Postamble(IPCAN_MO_IMS_Signalling); + } + + function f_TC_15_14a_IMS() runs on IMS_XCAP_PTC + { + var charstring v_XcapUserId := fl_XCAP_Preamble(); + var SS_Type v_SupplementaryService := SS_BARRING_IN_AND_OUT_ROAM; + + // @siclog "Step 1 - 4" siclog@ + fl_XCAP_SupplementaryService_CommonTestBody(v_SupplementaryService, v_XcapUserId); + + f_IMS_CC_Postamble(IPCAN_MO_IMS_Signalling); + } +} diff --git a/IMS_PART4_IWD_14wk37/IMS/16/IMS_CC_CodecSelecting.ttcn b/IMS_PART4_IWD_14wk37/IMS/16/IMS_CC_CodecSelecting.ttcn new file mode 100644 index 0000000..1799e3e --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/16/IMS_CC_CodecSelecting.ttcn @@ -0,0 +1,397 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-08-25 13:04:25 +0200 (Mon, 25 Aug 2014) $ +// $Rev: 11894 $ +/******************************************************************************/ +module IMS_CC_CodecSelecting { + + import from LibSip_SIPTypesAndValues all; + import from LibSip_SDPTypes all; + import from LibSip_Common all; + import from IP_ASP_TypeDefs all; + import from IMS_Component all; + import from IMS_CommonTemplates all; + import from IMS_ASP_TypeDefs all; + import from IMS_ASP_Templates all; + import from IMS_SIP_Templates all; + import from IMS_MessageBody_Templates all; + import from IMS_SDP_Templates all; + import from IMS_SDP_Messages all; + import from IMS_CC_CommonFunctions all; + import from IMS_Procedures_CallControl all; + import from IMS_Procedures_Common all; + import from UpperTesterFunctions all; + import from IMS_PTC_CoordMsg all; + + template (value) GenericParam cs_Fmtp_ModesetParam(charstring p_ModeSet) := cs_GenericParam("mode-set", p_ModeSet); /* @status APPROVED (IMS) */ + template (present) GenericParam cr_Fmtp_ModesetParam(charstring p_ModeSet) := cr_GenericParam("mode-set", p_ModeSet); /* @status APPROVED (IMS) */ + + /* + * @desc build SDP message to be used in step 1 of test cases 16.X + * @param p_BandwidthAS + * @param p_Fmts + * @param p_SDP_RtpmapFmtpAttribs + * @param p_ConnectionInSessionDesc (default value: true) + * @return template (value) SDP_Message + * @status APPROVED (IMS) + */ + function fl_IMS_BuildSDP_16_X_Step1(integer p_BandwidthAS, + SDP_fmt_list p_Fmts, + template (value) SDP_attribute_list p_SDP_RtpmapFmtpAttribs, + boolean p_ConnectionInSessionDesc := true) runs on IMS_PTC + return template (value) SDP_Message + { /* @sic R5w140113, R5w140009: enhanced SDP type definitions sic@ */ + /* @sic R5-144700: new parameter p_BandwidthAS sic@ */ + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var charstring v_IPAddrOrigin := f_IMS_PTC_RemoteAddress_GetAddrStr(); + var charstring v_IPAddrConnection := v_IPAddrOrigin; + var template (value) SDP_connection v_SDP_Connection := cs_SDP_Connection(v_AddrType, v_IPAddrConnection); + var template (omit) SDP_connection v_SDP_ConnectionInSession := omit; + var template (omit) SDP_connection_list v_SDP_ConnectionInMediaList := omit; + var template (omit) SDP_attribute_list v_SDP_Attribute_List := p_SDP_RtpmapFmtpAttribs; + var template (value) SDP_media_desc v_SDP_Media_Desc; + + // further media attributes: + v_SDP_Attribute_List := f_SDP_Attributes_Add_TX(v_SDP_Attribute_List, cs_SDP_Attribute_ptime); // "20" per default + v_SDP_Attribute_List := f_SDP_Attributes_Add_TX(v_SDP_Attribute_List, cs_SDP_Attribute_maxptime); // "240" per default + // precondition attributes: + v_SDP_Attribute_List := f_SDP_Attributes_Add_TX(v_SDP_Attribute_List, cs_SDP_Attribute_curr_qos(c_local, c_sendrecv)); + v_SDP_Attribute_List := f_SDP_Attributes_Add_TX(v_SDP_Attribute_List, cs_SDP_Attribute_curr_qos(c_remote, c_none)); + v_SDP_Attribute_List := f_SDP_Attributes_Add_TX(v_SDP_Attribute_List, cs_SDP_Attribute_des_qos(c_mandatory, c_local)); + v_SDP_Attribute_List := f_SDP_Attributes_Add_TX(v_SDP_Attribute_List, cs_SDP_Attribute_des_qos(c_optional, c_remote)); + + if (p_ConnectionInSessionDesc) { + v_SDP_ConnectionInSession := v_SDP_Connection; + } else { + v_SDP_ConnectionInMediaList := { v_SDP_Connection }; + } + + v_SDP_Media_Desc := cs_SDP_Media_Desc(cs_SDP_Media_MultiAudio(p_Fmts), + cs_SDP_Bandwidth_List_Media(p_BandwidthAS, 0, 2000), + v_SDP_Attribute_List, + v_SDP_ConnectionInMediaList); + + return cs_SDP_Message_Def(cs_SDP_Origin(-, -, v_AddrType, v_IPAddrOrigin), v_SDP_ConnectionInSession, -, p_BandwidthAS, v_SDP_Media_Desc); + } + + /* + * @desc build SDP message to be used in step 1 of test cases 16.2 + * @param p_ModeSet + * @return template (value) SDP_Message + * @status APPROVED (IMS) + */ + function fl_IMS_BuildSDP_16_2_Step1(charstring p_ModeSet) runs on IMS_PTC return template (value) SDP_Message + { + var integer v_BandwidthAS := 37; /* @sic R5-144700 sic@ */ + var charstring v_Fmt := "99"; + var template (value) SemicolonParam_List v_MediaFormatParametersTX := f_SemicolonParam_List_Concat_TX({cs_Fmtp_ModesetParam(p_ModeSet)}, cs_Fmtp_AudioParamsDef); + var template (value) SDP_attribute_list v_SDP_RtpmapFmtpAttribsTX := { + cs_SDP_Attribute_rtpmap(v_Fmt, cs_RTPMAP_AMR_8000), + cs_SDP_Attribute_fmtp(v_Fmt, cs_Fmtp_ParamList(v_MediaFormatParametersTX)) + }; + + return fl_IMS_BuildSDP_16_X_Step1(v_BandwidthAS, {v_Fmt}, v_SDP_RtpmapFmtpAttribsTX); /* @sic R5-144700: use default bandwidth for AS sic@ */ + } + + /* + * @desc build SDP message to be used in step 1 of test cases 16.3 and 16.4 + * @param p_BandwidthAS + * @param p_SemicolonParam_List_ModeSet1 (default value: omit) + * @param p_SemicolonParam_List_ModeSet2 (default value: omit) + * @param p_ConnectionInSessionDesc (default value: true) + * @return template (value) SDP_Message + * @status APPROVED (IMS) + */ + function fl_IMS_BuildSDP_16_3and4_Step1(integer p_BandwidthAS, + template (omit) SemicolonParam_List p_SemicolonParam_List_ModeSet1 := omit, + template (omit) SemicolonParam_List p_SemicolonParam_List_ModeSet2 := omit, + boolean p_ConnectionInSessionDesc := true) runs on IMS_PTC return template (value) SDP_Message + { /* @sic R5-144700: new parameter p_BandwidthAS sic@ */ + var charstring v_Fmt1 := "97"; + var charstring v_Fmt2 := "99"; + var template (value) SemicolonParam_List v_MediaFormatParametersTX1 := f_SemicolonParam_List_Concat_TX(p_SemicolonParam_List_ModeSet1, cs_Fmtp_AudioParamsDef); + var template (value) SemicolonParam_List v_MediaFormatParametersTX2 := f_SemicolonParam_List_Concat_TX(p_SemicolonParam_List_ModeSet2, cs_Fmtp_AudioParamsDef); + var template (value) SDP_attribute_list v_SDP_RtpmapFmtpAttribsTX := { + cs_SDP_Attribute_rtpmap(v_Fmt1, cs_RTPMAP_AMR_16000), + cs_SDP_Attribute_fmtp(v_Fmt1, cs_Fmtp_ParamList(v_MediaFormatParametersTX1)), + cs_SDP_Attribute_rtpmap(v_Fmt2, cs_RTPMAP_AMR_8000), + cs_SDP_Attribute_fmtp(v_Fmt2, cs_Fmtp_ParamList(v_MediaFormatParametersTX2)) + }; + + return fl_IMS_BuildSDP_16_X_Step1(p_BandwidthAS, {v_Fmt1, v_Fmt2}, v_SDP_RtpmapFmtpAttribsTX, p_ConnectionInSessionDesc); + } + + /* + * @desc build SDP message to be used in step 4/7 of test cases 16.1 and 16.2 + * @param p_RtpmapCodec + * @param p_MediaFormatParameters (default value: {*}) + * @param p_Direction_curr_qos_local + * @return template (present) SDP_Message + * @status APPROVED (IMS) + */ + function f_IMS_BuildSDP_16_X_RX(template (present) SDP_attribute_rtpmap_codec p_RtpmapCodec, + template (present) SemicolonParam_List p_MediaFormatParameters := {*}, + template (present) charstring p_Direction_curr_qos_local) runs on IMS_PTC + return template (present) SDP_Message + { // @sic R5-134233 has been withdrawn => p_MediaFormatParameters := {"*"} sic@ + /* @sic R5w140113, R5w140009: enhanced SDP type definitions sic@ */ + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var template (present) charstring v_IPAddrOrigin := ?; + var template (present) charstring v_IPAddrConnection := ?; + + var template (present) SDP_media_desc v_SDP_Media_Desc; + var template (present) SDP_attribute_list v_SDP_Attribute_List := { + // media attributes: + cr_SDP_Attribute_rtpmap(-, p_RtpmapCodec), + cr_SDP_Attribute_fmtp(-, cr_Fmtp_ParamList(p_MediaFormatParameters)), + // precondition attributes: + cr_SDP_Attribute_curr_qos(c_local, p_Direction_curr_qos_local), + cr_SDP_Attribute_curr_qos(c_remote, c_sendrecv), + cr_SDP_Attribute_des_qos(c_mandatory, c_local), + cr_SDP_Attribute_des_qos(c_mandatory, c_remote), // @sic R5s120530 change 3.4 sic@ + * + }; + + v_SDP_Media_Desc := cr_SDP_Media_Desc(cr_SDP_Media_Audio, + cr_SDP_Connection(v_AddrType, v_IPAddrConnection), + cr_SDP_Bandwidth_List_Media(?, ?, ?), + v_SDP_Attribute_List); + return cr_SDP_Message_Def(v_AddrType, v_IPAddrOrigin, v_IPAddrConnection, v_SDP_Media_Desc); + } + + /****************************************************************************/ + /* + * @desc common test procedure for 16.X test cases + * @param p_SDP_Message_Invite + * @param p_SDP_Message_183 + * @param p_SDP_Message_180or200 + * @status APPROVED (IMS) + */ + function fl_TC_16_X_CommonProcedure(template (value) SDP_Message p_SDP_Message_Invite, + template (present) SDP_Message p_SDP_Message_183, + template (present) SDP_Message p_SDP_Message_180or200) runs on IMS_PTC + { /* @sic R5-142994: Reimplementation - in fact there is the same sequence for 16.2 and 16.3/4 sic@ */ + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; + var SipUrl v_ContactUrl := f_IMS_PTC_ImsInfo_GetContactUrl(); + var InternetProtocol_Type v_Protocol; + var IMS_DATA_RSP v_IMS_DATA_RSP; + var IMS_ResponseWithSdp_Type v_ResponseWithSdp; /* @sic R5w140112 sic@ */ + var template (value) INVITE_Request v_InviteRequest; + var template (value) MessageHeader v_MessageHeader_Invite; + var template (present) MessageHeader v_MessageHeader_183RX; + var template (present) MessageHeader v_MessageHeader_180RX; + var template (present) Response v_ExpectedResponse_183RX; + var template (present) Response v_ExpectedResponse_180RX; + var Response v_Response; + var Response v_Response183; + var Response v_Response180; + var template (omit) Response v_OptionalResponse180; + var MessageHeader v_MessageHeader; + var template SDP_Message v_ExpectedSDP_200 := omit; + var SDP_Message v_SDP_Message180; + + var boolean v_Trying := false; + var boolean v_SrvccAlerting := false; + + timer t_Timer := 5.0; // as for C.11 (-> f_IMS_MTCallSetup_Common_Steps7_11) + + f_IMS_CC_StartCall(IPCAN_MT_SpeechCall); // @sic R5s140567 sic@ + + // Step 1 - Send INVITE + v_MessageHeader_Invite := f_IMS_InviteRequest_MessageHeaderTX(tsc_OptionTagList_precondition, -, v_SrvccAlerting); + + v_InviteRequest := cs_INVITE_Request(v_ContactUrl, v_MessageHeader_Invite, cs_MessageBody_SDP(p_SDP_Message_Invite)); + v_InviteRequestWithSdp := f_IMS_InviteRequestWithSdpMT(v_InviteRequest, p_SDP_Message_Invite); + v_Protocol := v_InviteRequestWithSdp.RoutingInfo.Protocol; + + IMS_Client.send(cas_IMS_Invite_Request(v_InviteRequestWithSdp.RoutingInfo, v_InviteRequest)); + + // Step 2 - Void + v_MessageHeader_183RX := f_IMS_InviteResponse_183_MessageHeaderRX(v_InviteRequest, tsc_OptionTagList_precondition); + v_MessageHeader_180RX := f_IMS_InviteResponse_180_MessageHeaderRX(v_InviteRequest, -, cr_ContentTypeSDP ifpresent); + v_ExpectedResponse_183RX := cr_Response(c_statusLine183, v_MessageHeader_183RX, cr_MessageBody_SDP); + v_ExpectedResponse_180RX := cr_Response(c_statusLine180, v_MessageHeader_180RX, cr_MessageBody_SDP ifpresent); + + t_Timer.start; + alt { + // @siclog "Step 3" siclog@ + [not v_Trying] a_IMS_ReceiveResponse(v_InviteRequest.msgHeader, + v_Protocol, + cr_Response(c_statusLine100, f_IMS_InviteResponse_100_MessageHeaderRX(v_InviteRequest)), + v_IMS_DATA_RSP) /* @sic R5s140350: v_IMS_DATA_RSP is 'out' parameter sic@ */ + { + v_Trying := true; + repeat; + } + // @siclog "Step 3A or 4" siclog@ + [] a_IMS_ReceiveResponse(v_InviteRequest.msgHeader, + v_Protocol, + (v_ExpectedResponse_183RX, v_ExpectedResponse_180RX), + v_IMS_DATA_RSP) + { + v_Response := v_IMS_DATA_RSP.Response; + v_MessageHeader := v_IMS_DATA_RSP.Response.msgHeader; + f_IMS_Dialog_SetRemoteTag(v_MessageHeader); + f_IMS_MessageHeader_CheckContactAddr(v_MessageHeader); // check whether contact contains "SIP URI with IP address or FQDN" (see @sic R5s120727 sic@) + } + [] t_Timer.timeout + { + } + } + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); /* trigger IPCAN to continue with activation of secondary PDP context or dedicated EPS bearer + @sic R5s140646 sic@ */ + + if (isbound(v_Response)) { // => either 183 or 180 response has been received + select (v_Response.statusLine.statusCode) { + case (183) { + v_Response183 := v_Response; + f_IMS_SIP_SdpMessageBody_DecodeMatchAndCheckSDP(v_Response183.messageBody, p_SDP_Message_183); + // @siclog "Step 3B - 3C (optionally 4)" siclog@ + v_OptionalResponse180 := f_IMS_MTCallSetup_SendPRACK_ReceiveOK(v_InviteRequest, v_Response183.msgHeader, v_ExpectedResponse_180RX); // send PRACK, wait for 200 Ok; in parallel the 180 Ringing may come (optionally) + if (ispresent(v_OptionalResponse180)) { + v_Response180 := valueof(v_OptionalResponse180); + } + } + case (180) { + v_Response180 := v_Response; + } + } + if (not isbound(v_Response180)) { // .. still not got any 180 Ringing ... + // @siclog "Step 4" siclog@ + alt { + [] a_IMS_ReceiveResponse(v_InviteRequest.msgHeader, v_Protocol, v_ExpectedResponse_180RX, v_IMS_DATA_RSP) + { + v_Response180 := v_IMS_DATA_RSP.Response; + } + [] t_Timer.timeout + { + } + } + } + t_Timer.stop; + } + f_IMS_IPCAN_WaitForTrigger(IPCAN); /* wait for completion of RRC/NAS signalling + NOTE: as the coordination ports are not covered by the default behaviour we can just collect the trigger here + @sic R5s140646 sic@ */ + + // @siclog "Step 5 - 6" siclog@ + if (isbound(v_Response180)) { + f_IMS_MessageHeader_CheckContactAddr(v_Response180.msgHeader); // check whether contact contains "SIP URI with IP address or FQDN" (see @sic R5s120727 sic@) + if (not isbound(v_Response183)) { + f_IMS_Dialog_SetRemoteTag(v_Response180.msgHeader); + } + if (ispresent(v_Response180.messageBody)) { + v_SDP_Message180 := f_IMS_SIP_SdpMessageBody_DecodeMatchAndCheckSDP(v_Response180.messageBody, p_SDP_Message_180or200); + } + if (f_MessageHeader_CheckRequire(v_Response180.msgHeader, c_tag100rel)) { + f_IMS_MTCallSetup_SendPRACK_ReceiveOK(v_InviteRequest, v_Response180.msgHeader); + } + } + + // @siclog "Step 6A" siclog@ + f_UT_AnswerCall(MMI); + + // @siclog "Step 7 - 8" siclog@ Receive OK for INVITE, Send ACK + if (not isbound(v_SDP_Message180) and not isbound(v_Response183)) { // @sic R5s140580 change 1 sic@ + v_ExpectedSDP_200 := p_SDP_Message_180or200; + } + v_ResponseWithSdp := f_IMS_MTCallSetup_Common_Steps12_13(v_InviteRequestWithSdp, v_ExpectedSDP_200); + v_ContactUrl := f_MessageHeader_GetContactSipUrl(v_ResponseWithSdp.Response.msgHeader); + + // Step 14-15 + f_IMS_CallReleaseMT(v_InviteRequest, v_ContactUrl); + // f_IMS_CC_ReleaseConnection(IPCAN_MT_SpeechCall); @sic R5s140580 additional change by R&S sic@ + } + + /****************************************************************************/ + /* + * @desc REFERENCE TS 34.229-1 clause 16.2 + * @status APPROVED (IMS) + */ + function f_TC_16_2_IMS() runs on IMS_PTC + { /* @sic R5w140113, R5w140009: enhanced SDP type definitions sic@ */ + /* @sic R5-142994: Reimplementation sic@ */ + var charstring v_ModeSet := "0,2,4,7"; /* @sic R5-140916 sic@ */ + var template (present) SemicolonParam_List v_MediaFormatParametersRX := {cr_Fmtp_ModesetParam(v_ModeSet), *}; + var template (value) SDP_Message v_SDP_Message_Invite; + var template (present) SDP_Message v_SDP_Message_183; + var template (present) SDP_Message v_SDP_Message_180or200; + + + f_IMS_CC_Preamble(IPCAN_SpeechCall, IMS_REGISTERED); + f_IMS_TestBody_Set(true); + + v_SDP_Message_Invite := fl_IMS_BuildSDP_16_2_Step1(v_ModeSet); + v_SDP_Message_183 := f_IMS_BuildSDP_16_X_RX(cr_RTPMAP_AMR_8000, -, c_none); + v_SDP_Message_180or200 := f_IMS_BuildSDP_16_X_RX(cr_RTPMAP_AMR_8000, v_MediaFormatParametersRX, c_sendrecv); + + fl_TC_16_X_CommonProcedure(v_SDP_Message_Invite, v_SDP_Message_183, v_SDP_Message_180or200); + + f_IMS_TestBody_Set(false); + f_IMS_CC_Postamble(IPCAN_MT_SpeechCall); + } + + /****************************************************************************/ + /* + * @desc REFERENCE TS 34.229-1 clause 16.3 + * @status APPROVED (IMS) + */ + function f_TC_16_3_IMS() runs on IMS_PTC + { /* @sic R5-142994: Reimplementation sic@ */ + var integer v_BandwidthAS := 49; /* @sic R5-144700 sic@ */ + var template (value) SDP_Message v_SDP_Message_Invite; + var template (present) SDP_Message v_SDP_Message_183; + var template (present) SDP_Message v_SDP_Message_180or200; + + f_IMS_CC_Preamble(IPCAN_SpeechCall, IMS_REGISTERED); + f_IMS_TestBody_Set(true); + + v_SDP_Message_Invite := fl_IMS_BuildSDP_16_3and4_Step1(v_BandwidthAS); + v_SDP_Message_183 := f_IMS_BuildSDP_16_X_RX(cr_RTPMAP_AMR_16000, -, (c_none, c_sendrecv)); + v_SDP_Message_180or200 := f_IMS_BuildSDP_16_X_RX(cr_RTPMAP_AMR_16000, -, c_sendrecv); + + fl_TC_16_X_CommonProcedure(v_SDP_Message_Invite, v_SDP_Message_183, v_SDP_Message_180or200); + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(IPCAN_MT_SpeechCall); + } + + /****************************************************************************/ + /* + * @desc REFERENCE TS 34.229-1 clause 16.4 + * @status APPROVED (IMS) + */ + function f_TC_16_4_IMS() runs on IMS_PTC + { /* @sic R5-142994: Reimplementation sic@ */ + var integer v_BandwidthAS := 38; /* @sic R5-144700 sic@ */ + var boolean v_ConnectionInSessionDesc := false; + var charstring v_ModeSet1 := "0,1,2"; /* @sic R5-140917: mode-set changed from "0,2,5,7,8" to "0,1,2" sic@ */ + var charstring v_ModeSet2 := "0,2,4,7"; /* @sic R5-140917: mode-set changed from "0,2,5,7" to "0,2,4,7" sic@ */ + var template (value) SemicolonParam_List v_SemicolonParam_List_ModeSet1 := {cs_Fmtp_ModesetParam(v_ModeSet1)}; + var template (value) SemicolonParam_List v_SemicolonParam_List_ModeSet2 := {cs_Fmtp_ModesetParam(v_ModeSet2)}; + var template (present) SemicolonParam_List v_MediaFormatParametersRX := {cr_Fmtp_ModesetParam(v_ModeSet1), *}; + var template (value) SDP_Message v_SDP_Message_Invite; + var template (present) SDP_Message v_SDP_Message_183; + var template (present) SDP_Message v_SDP_Message_180or200; + + f_IMS_CC_Preamble(IPCAN_SpeechCall, IMS_REGISTERED); + f_IMS_TestBody_Set(true); + + v_SDP_Message_Invite := fl_IMS_BuildSDP_16_3and4_Step1(v_BandwidthAS, v_SemicolonParam_List_ModeSet1, v_SemicolonParam_List_ModeSet2, v_ConnectionInSessionDesc); + v_SDP_Message_183 := f_IMS_BuildSDP_16_X_RX(cr_RTPMAP_AMR_16000, v_MediaFormatParametersRX, (c_none, c_sendrecv)); + v_SDP_Message_180or200 := f_IMS_BuildSDP_16_X_RX(cr_RTPMAP_AMR_16000, v_MediaFormatParametersRX, c_sendrecv); + + fl_TC_16_X_CommonProcedure(v_SDP_Message_Invite, v_SDP_Message_183, v_SDP_Message_180or200); + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(IPCAN_MT_SpeechCall); + } + +} diff --git a/IMS_PART4_IWD_14wk37/IMS/17/IMS_CC_MediaTestcases.ttcn b/IMS_PART4_IWD_14wk37/IMS/17/IMS_CC_MediaTestcases.ttcn new file mode 100644 index 0000000..9f1c4fb --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/17/IMS_CC_MediaTestcases.ttcn @@ -0,0 +1,523 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-08-27 20:03:42 +0200 (Wed, 27 Aug 2014) $ +// $Rev: 11936 $ +/******************************************************************************/ +module IMS_CC_MediaTestcases { + + import from LibSip_SIPTypesAndValues all; + import from LibSip_SDPTypes all; + import from IP_ASP_TypeDefs all; + import from IMS_Component all; + import from IMS_ASP_TypeDefs all; + import from IMS_ASP_Templates all; + import from IMS_CommonParameters all; + import from IMS_CommonTemplates all; + import from IMS_SIP_Templates all; + import from IMS_MessageBody_Templates all; + import from IMS_SDP_Templates all; + import from IMS_SDP_Messages all; + import from IMS_CC_CommonFunctions all; + import from IMS_Procedures_CallControl all; + import from IMS_PTC_CoordMsg all; + import from UpperTesterFunctions all; + import from IMS_CommonFunctions all; + import from IMS_CC_CallControlTestcases all; + import from IMS_Procedures_Common all; + + /****************************************************************************/ + function f_IMS_BuildSDP_SpeechVideoRx_MO() runs on IMS_PTC return template (present) SDP_Message + { /* Build SDP record to be received from the UE at step 2 according to 34.229-1 17.1 */ + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var template (present) charstring v_IPAddrOrigin := ?; + var template (present) charstring v_IPAddrAudio := ?; + var template (present) charstring v_IPAddrVideo := ?; + var charstring v_FmtAudio := tsc_SDP_FmtAudio; + var template (present) SDP_media_desc v_SDP_Media_Desc_Audio; + var template (present) SDP_media_desc v_SDP_Media_Desc_Video; + var template (present) SDP_media_desc_list v_SDP_Media_Desc_List; + + var template (present) SDP_attribute_list v_SDP_Attribute_List_Audio := { + // media attributes: + cr_SDP_Attribute_rtpmap(v_FmtAudio, cr_RTPMAP_AMR_8000), // @sic R5s130681 change 2 sic@ + cr_SDP_Attribute_fmtp(v_FmtAudio), + // precondition attributes: + cr_SDP_Attribute_curr_qos(c_local, c_sendrecv), + cr_SDP_Attribute_curr_qos(c_remote, c_sendrecv), + cr_SDP_Attribute_des_qos(c_mandatory, c_local), + cr_SDP_Attribute_des_qos(c_mandatory, c_remote), + * + }; + var template (present) SDP_attribute_list v_SDP_Attribute_List_Video := { + // media attributes: + cr_SDP_Attribute_rtpmap(-, cr_RTPMAP_H264_90000), + cr_SDP_Attribute_fmtp(-, cr_Fmtp_ParamList(cr_Fmtp_VideoParamsDef)), + // precondition attributes: + cr_SDP_Attribute_curr_qos(c_local), + cr_SDP_Attribute_curr_qos(c_remote), + cr_SDP_Attribute_des_qos(c_mandatory, c_local), + cr_SDP_Attribute_des_qos(c_optional, c_remote), + * + }; + + v_SDP_Media_Desc_Audio := cr_SDP_Media_Desc(cr_SDP_Media_Audio, + cr_SDP_Connection(v_AddrType, v_IPAddrAudio), + cr_SDP_Bandwidth_List_Media(?, ?, ?), + v_SDP_Attribute_List_Audio); + v_SDP_Media_Desc_Video := cr_SDP_Media_Desc(cr_SDP_Media_Video, + cr_SDP_Connection(v_AddrType, v_IPAddrVideo), + cr_SDP_Bandwidth_List_Media(?, ?, ?), + v_SDP_Attribute_List_Video); + v_SDP_Media_Desc_List := { v_SDP_Media_Desc_Audio, v_SDP_Media_Desc_Video }; + + return cr_SDP_Message_Common(v_AddrType, v_IPAddrOrigin, ?, -, -, cr_SDP_Time_Any, v_SDP_Media_Desc_List); + } + + function f_IMS_BuildSDP_SpeechVideoTx_MO(SDP_media_desc p_SDP_Media_AudioRx, + SDP_media_desc p_SDP_Media_VideoRx, + charstring p_IPAddrOrigin, + boolean p_TcapPcfg) runs on IMS_PTC return template (value) SDP_Message + { /* Build SDP record to be sent to the UE at step 4 according to 34.229-1 17.1 */ + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var charstring v_IPAddrConnection := f_IMS_PTC_RemoteAddress_GetAddrStr(); + var template (value) SDP_media_desc v_SDP_Media_Desc_AudioTx; + var template (value) SDP_media_desc v_SDP_Media_Desc_VideoTx; + var template (value) SDP_media_desc_list v_SDP_Media_Desc_List; + var template (value) SDP_bandwidth_list v_Bandwidth_List_Audio := p_SDP_Media_AudioRx.bandwidth; + var template (value) SDP_bandwidth_list v_Bandwidth_List_Video := p_SDP_Media_VideoRx.bandwidth; + var charstring v_FmtAudio := f_SDP_MediaDescr_GetAMR_8000_1(p_SDP_Media_AudioRx); + var charstring v_FmtVideo := f_SDP_MediaDescr_GetH264_90000(p_SDP_Media_VideoRx); + + var template (value) SDP_attribute_list v_SDP_Attribute_List_Audio := { + // media attributes: + cs_SDP_Attribute_rtpmap(v_FmtAudio, cs_RTPMAP_AMR_8000), + cs_SDP_Attribute_fmtp(v_FmtAudio, cs_AMR_Fmtp_DefaultParameters), + cs_SDP_Attribute_ptime, + cs_SDP_Attribute_maxptime, + // precondition attributes: + cs_SDP_Attribute_curr_qos(c_local, c_sendrecv), + cs_SDP_Attribute_curr_qos(c_remote, c_sendrecv), + cs_SDP_Attribute_des_qos(c_mandatory, c_local), + cs_SDP_Attribute_des_qos(c_mandatory, c_remote) + }; + var template (value) SDP_attribute_list v_SDP_Attribute_List_Video := { + // media attributes: + cs_SDP_Attribute_rtpmap(v_FmtVideo, cs_RTPMAP_Codec("", "")), // !!!! codec need to be specified in the prose !!!! + cs_SDP_Attribute_fmtp(v_FmtVideo, cs_Fmtp_ParamList({cs_GenericParam("", "")})), // !!!! parameters need to be specified in the prose !!!! + cs_SDP_Attribute_ptime, + cs_SDP_Attribute_maxptime, + // precondition attributes: + cs_SDP_Attribute_curr_qos(c_local), + cs_SDP_Attribute_curr_qos(c_remote), + cs_SDP_Attribute_des_qos(c_mandatory, c_local), + cs_SDP_Attribute_des_qos(c_mandatory, c_remote), + cs_SDP_Attribute_conf_qos + }; + v_SDP_Media_Desc_AudioTx := cs_SDP_Media_Desc(cs_SDP_Media_Audio(v_FmtAudio), + v_Bandwidth_List_Audio, + v_SDP_Attribute_List_Audio); + v_SDP_Media_Desc_VideoTx := cs_SDP_Media_Desc(cs_SDP_Media_Video(v_FmtVideo), + v_Bandwidth_List_Video, + v_SDP_Attribute_List_Video); + + v_SDP_Media_Desc_VideoTx.attributes := f_SDP_Attributes_Add_TX(v_SDP_Media_Desc_VideoTx.attributes, cs_SDP_Attribute_acfg(1, "t=1"), p_TcapPcfg); + + v_SDP_Media_Desc_List := { v_SDP_Media_Desc_AudioTx, v_SDP_Media_Desc_VideoTx }; + + return cs_SDP_Message_Common(cs_SDP_Origin(-, -, v_AddrType, p_IPAddrOrigin), cs_SDP_Connection(v_AddrType, v_IPAddrConnection), -, cs_SDP_Bandwidth_List_AS(30), -, v_SDP_Media_Desc_List); + } + + function f_IMS_BuildSDP_SpeechVideoTx_MT(charstring p_FmtAudio, + charstring p_PayloadAudio, + charstring p_StepNo := "Step 1") + runs on IMS_PTC return template (value) SDP_Message + { /* Build SDP record to be sent to the UE at step 1 according to 34.229-1 17.2 */ + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var charstring v_IPAddrOrigin := f_IMS_PTC_RemoteAddress_GetAddrStr(); + var template (value) SDP_media_desc v_SDP_Media_Desc_Audio; + var template (value) SDP_media_desc v_SDP_Media_Desc_Video; + var template (value) SDP_media_desc_list v_SDP_Media_Desc_List; + var template (omit) SDP_attribute_list v_SDP_Attribute_List_Audio; + var template (omit) SDP_attribute_list v_SDP_Attribute_List_Video; + var charstring v_SessionVersion := tsc_SDP_SessionVersion1; + var template (value) SDP_attribute v_FMTP := cs_SDP_Attribute_fmtp(p_FmtAudio, cs_AMR_Fmtp_DefaultParameters); + var charstring v_VideoMedia := tsc_SDP_FmtVideo; + + if (p_StepNo == "Step 1") { + v_FMTP := cs_SDP_Attribute_fmtp(p_FmtAudio, cs_Fmtp_ParamList({cs_GenericParam("", "")})); // !!!! parameters need to be specified in the prose !!!! + } + + v_SDP_Attribute_List_Audio := { + // media attributes: + cs_SDP_Attribute_rtpmap(p_PayloadAudio, cs_RTPMAP_AMR_8000), + v_FMTP, + // precondition attributes: + cs_SDP_Attribute_curr_qos(c_local, c_sendrecv), + cs_SDP_Attribute_curr_qos(c_remote, c_sendrecv), + cs_SDP_Attribute_des_qos(c_mandatory, c_local), + cs_SDP_Attribute_des_qos(c_optional, c_remote) + }; + if (p_StepNo == "Step 10") { + v_SDP_Attribute_List_Video := { + // media attributes: + cs_SDP_Attribute_rtpmap(tsc_SDP_FmtVideo, cs_RTPMAP_H264_90000), + cs_SDP_Attribute_fmtp(tsc_SDP_FmtVideo, cs_Fmtp_ParamList({cs_GenericParam("", "")})) // !!!! parameters need to be specified in the prose !!!! + }; + v_VideoMedia := "0"; + } else { + v_SDP_Attribute_List_Video := { + // media attributes: + cs_SDP_Attribute_rtpmap(tsc_SDP_FmtVideo, cs_RTPMAP_H264_90000), + cs_SDP_Attribute_fmtp(tsc_SDP_FmtVideo, cs_Fmtp_ParamList(cs_Fmtp_VideoParamsWithPacketizationMode)), + cs_SDP_Attribute_rtcp_fb("*", "trr-int 5000"), + cs_SDP_Attribute_rtcp_fb("*", "nack"), + cs_SDP_Attribute_rtcp_fb("*", "nack pli"), + cs_SDP_Attribute_rtcp_fb("*", "ccm fir"), + cs_SDP_Attribute_rtcp_fb("*", "ccm tmmbr"), + // precondition attributes: + cs_SDP_Attribute_curr_qos(c_local), + cs_SDP_Attribute_curr_qos (c_remote), + cs_SDP_Attribute_des_qos(c_mandatory, c_local), + cs_SDP_Attribute_des_qos(c_optional, c_remote) + }; + } + v_SDP_Attribute_List_Audio := f_SDP_Attributes_Add_TX(v_SDP_Attribute_List_Audio, cs_SDP_Attribute_sendrecv); + v_SDP_Attribute_List_Video := f_SDP_Attributes_Add_TX(v_SDP_Attribute_List_Video, cs_SDP_Attribute_sendrecv); + + v_SDP_Media_Desc_Audio := cs_SDP_Media_Desc(cs_SDP_Media_Audio(p_FmtAudio), + cs_SDP_Bandwidth_List_Media(30, 0, 2000), + v_SDP_Attribute_List_Audio); + v_SDP_Media_Desc_Video := cs_SDP_Media_Desc(cs_SDP_Media_Video(v_VideoMedia), + cs_SDP_Bandwidth_List_Media(315, 0, 2500), + v_SDP_Attribute_List_Video); + v_SDP_Media_Desc_List := { v_SDP_Media_Desc_Audio, v_SDP_Media_Desc_Video }; + + return cs_SDP_Message_Common(cs_SDP_Origin(-, v_SessionVersion, v_AddrType, v_IPAddrOrigin), cs_SDP_Connection(v_AddrType, v_IPAddrOrigin), -, cs_SDP_Bandwidth_List_AS(30), -, v_SDP_Media_Desc_List); + } + + function f_IMS_BuildSDP_SpeechVideoRx_MT(charstring p_FmtAudio, + charstring p_PayloadAudio) runs on IMS_PTC return template (present) SDP_Message + { /* to receive SDP answer sent by the UE in 17.2 step 3 and 6*/ + /* @sic R5-123077 change 3: 'inactive' removed from 'Attributes for media' for step 4 sic@ */ + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var template (present) charstring v_IPAddrOrigin := ?; + var template (present) charstring v_IPAddrAudio := ?; + var template (present) charstring v_IPAddrVideo := ?; + var template (present) SDP_attribute_list v_SDP_Attribute_List_Audio; + var template (present) SDP_attribute_list v_SDP_Attribute_List_Video; + var template (present) SDP_media_desc v_SDP_Media_Desc_Audio; + var template (present) SDP_media_desc v_SDP_Media_Desc_Video; + var template (present) SDP_media_desc_list v_SDP_Media_Desc_List; + + v_SDP_Attribute_List_Audio := { + cr_SDP_Attribute_rtpmap(p_PayloadAudio, cr_RTPMAP_AMR_8000), // @sic R5s130681 change 2 sic@ + cr_SDP_Attribute_fmtp(p_FmtAudio), + // precondition attributes: + cr_SDP_Attribute_curr_qos(c_local, c_sendrecv), + cr_SDP_Attribute_curr_qos(c_remote, c_sendrecv), + cr_SDP_Attribute_des_qos(c_mandatory, c_local), + cr_SDP_Attribute_des_qos(c_mandatory, c_remote), + * + }; + v_SDP_Attribute_List_Video := { + cr_SDP_Attribute_rtpmap(tsc_SDP_FmtVideo, cr_RTPMAP_H264_90000), + cr_SDP_Attribute_fmtp(tsc_SDP_FmtVideo, cr_Fmtp_ParamList(cr_Fmtp_VideoParamsWithPacketizationMode)), + // precondition attributes: + cr_SDP_Attribute_curr_qos(c_local, (c_none, c_sendrecv)), + cr_SDP_Attribute_curr_qos(c_remote, c_none), + cr_SDP_Attribute_des_qos(c_mandatory, c_local), + cr_SDP_Attribute_des_qos(c_mandatory, c_remote), + cr_SDP_Attribute_conf_qos, + * + }; + v_SDP_Media_Desc_Audio := cr_SDP_Media_Desc(cr_SDP_Media_Audio(p_FmtAudio), + cr_SDP_Connection(v_AddrType, v_IPAddrAudio), + cr_SDP_Bandwidth_List_Media(?, ?, ?), + v_SDP_Attribute_List_Audio); + v_SDP_Media_Desc_Video := cr_SDP_Media_Desc(cr_SDP_Media_Video(tsc_SDP_FmtVideo), + cr_SDP_Connection(v_AddrType, v_IPAddrVideo), + cr_SDP_Bandwidth_List_Media(?, ?, ?), + v_SDP_Attribute_List_Video); + + v_SDP_Media_Desc_List := { v_SDP_Media_Desc_Audio, v_SDP_Media_Desc_Video }; + return cr_SDP_Message_Common(v_AddrType, v_IPAddrOrigin, ?, -, -, cr_SDP_Time_Any, v_SDP_Media_Desc_List); + } + + /****************************************************************************/ + /* + * @desc REFERENCE TS 34.229-1 clause 17.1 + */ + function f_TC_17_1_IMS() runs on IMS_PTC + { + var IMS_DATA_REQ v_IMS_INVITE_REQ; + var INVITE_Request v_ReInviteRequest; + var template (value) MessageHeader v_MessageHeader_Response183; + var template (value) MessageHeader v_MessageHeader_Response; + var template (present) MessageHeader v_MessageHeader_Request; + var template (value) IMS_RoutingInfo_Type v_RoutingInfo_DL; + var template (present) MessageHeader v_MessageHeader_Prack; + var template (present) MessageHeader v_MessageHeader_Update; + var boolean v_TcapPcfg := false; + var boolean v_MediaConfigured := false; + var template (omit) ContentType v_ContentType := omit; + var SipUrl v_ContactUrl; + var IMS_DATA_REQ v_IMS_DATA_REQ; + var PRACK_Request v_PrackRequest; + var UPDATE_Request v_UpdateRequest; + var template (present) SipUrl v_NewContactUriRX := f_SIP_BuildSipUri_RX(px_IMS_CalleeUri); + var SDP_Message v_SDP_Message; + var SDP_Message v_SDP_LatestOffer; + var template (present) SDP_Message v_SDP_MessageTemplateRx := f_IMS_BuildSDP_SpeechVideoRx_MO(); + var template (value) SDP_Message v_SDP_MessageTemplateTx; + + f_IMS_CC_Preamble(IPCAN_SpeechCall, IMS_REGISTERED); + + // setup MO speech call + f_IMS_CC_MO_SpeechCall(); + + f_IMS_TestBody_Set(true); + + // @siclog "Step 1" siclog@ + f_UT_RequestIMSVideoCall(MMI, px_IMS_CalleeUri); + + // !!!! FFS - What dedicated bearer do we need to (re)configure??? !!!! + // @siclog "Step 2" siclog@ + // Receive INVITE Request + v_IMS_INVITE_REQ := f_IMS_INVITE_ReceiveRequest(A_2_1_A5, tsc_OptionTagList_precondition, px_IMS_CalleeUri); // from ConfCallFunctions + v_ReInviteRequest := v_IMS_INVITE_REQ.Request.Invite; + v_SDP_Message := f_IMS_SIP_SdpMessageBody_DecodeMatchAndCheckSDP(v_ReInviteRequest.messageBody, v_SDP_MessageTemplateRx); + + // check media description: audio and video + f_IMS_SDP_CheckMediaDescr_AMR_8000_1(v_SDP_Message.media_list[0]); + f_IMS_SDP_CheckMediaDescr_H264_90000(v_SDP_Message.media_list[1]); + v_TcapPcfg := fl_CheckRTPAVP_TcapPcfg(v_SDP_Message.media_list[1]); + v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(v_IMS_INVITE_REQ.RoutingInfo); + + // Step 3. SS sends a 100 Trying provisional response. + // @siclog "Step 3" siclog@ + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine100, f_IMS_InviteResponse_100_MessageHeaderTX(v_ReInviteRequest)))); + + // Step 4. Send 183 Session In Progress. + // @siclog "Step 4" siclog@ + v_MessageHeader_Response183 := f_IMS_InviteResponse_183_MessageHeaderTX(v_ReInviteRequest); + v_MessageHeader_Response183.supported := cs_Supported(tsc_OptionTagList_precondition); + v_SDP_MessageTemplateTx := f_IMS_BuildSDP_SpeechVideoTx_MO(v_SDP_Message.media_list[0], v_SDP_Message.media_list[1], v_SDP_Message.origin.addr, v_TcapPcfg); + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine183, v_MessageHeader_Response183, cs_MessageBody_SDP(v_SDP_MessageTemplateTx)))); + + // update local precondition to sendrecv + v_SDP_MessageTemplateRx.media_list[1].attributes := f_SDP_ExchangeAttribute(v_SDP_Message.media_list[1].attributes, + cr_SDP_Attribute_curr_qos(c_local), + cs_SDP_Attribute_curr_qos(c_local, c_sendrecv)); + v_ContactUrl := f_MessageHeader_GetContactSipUrl(v_MessageHeader_Response183); + + // Step 5. Receive PRACK + // @siclog "Step 5" siclog@ + v_MessageHeader_Prack := f_IMS_PrackRequest_MessageHeaderRX(v_ReInviteRequest, v_MessageHeader_Response183); + IMS_Server.receive(car_IMS_Prack_Request(cr_PRACK_Request(v_ContactUrl, v_MessageHeader_Prack, cr_MessageBody_SDP ifpresent))) -> value v_IMS_DATA_REQ; + v_PrackRequest := v_IMS_DATA_REQ.Request.Prack; + v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo); + + // fl_IMS_Params_CheckSigComp(v_PrackRequest.msgHeader.route.routeBody[0].rrParam); // acc. to 34.229-1 cl. 13.2.4 step 4 (PRACK) "comp=sigcomp" is optional for Via and Route + + // Step 6. Send 200 OK + // @siclog "Step 6" siclog@ + if (ispresent(v_PrackRequest.messageBody)) { + v_SDP_LatestOffer := f_IMS_SIP_SdpMessageBody_DecodeMatchAndCheckSDP(v_PrackRequest.messageBody, v_SDP_MessageTemplateRx); + + // check session version increased + f_IMS_SDP_CheckSessionVersion(v_SDP_LatestOffer, v_SDP_Message); + + v_ContentType := cs_ContentTypeSDP; + v_SDP_MessageTemplateTx := f_IMS_BuildSDP_AnnexC21_Step6or8(v_SDP_LatestOffer); + v_MediaConfigured := true; + } + + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine200, f_IMS_OtherResponse_200_MessageHeaderTX(v_PrackRequest.msgHeader, v_ContentType), cs_MessageBody_SDP(v_SDP_MessageTemplateTx)))); + + // Step 7 Optional. Receive Update + // @siclog "Step 7" siclog@ + // Note: UE will send Update if Media is not yet configured + if (not v_MediaConfigured) { + v_MessageHeader_Update := f_IMS_UpdateRequest_MessageHeaderRX(v_ReInviteRequest); + + IMS_Server.receive(car_IMS_Update_Request(cr_UPDATE_Request(v_ContactUrl, v_MessageHeader_Update, cr_MessageBody_SDP))) -> value v_IMS_DATA_REQ; + v_UpdateRequest := v_IMS_DATA_REQ.Request.Update; + v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo); + v_SDP_LatestOffer := f_IMS_SIP_SdpMessageBody_DecodeMatchAndCheckSDP(v_UpdateRequest.messageBody, v_SDP_MessageTemplateRx); + + //fl_IMS_Params_CheckSigComp(v_UpdateRequest.msgHeader.route.routeBody[0].rrParam); // acc. to 34.229-1 cl. 13.2.4 step 6 (UPDATE) "comp=sigcomp" is optional for Via and Route + + // check session version increased + f_IMS_SDP_CheckSessionVersion(v_SDP_LatestOffer, v_SDP_Message); + + v_ContentType := cs_ContentTypeSDP; + v_SDP_MessageTemplateTx := f_IMS_BuildSDP_AnnexC21_Step6or8(v_SDP_LatestOffer); + v_MediaConfigured := true; + // Step 8 Optional. Send 200 OK + // @siclog "Step 8" siclog@ + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine200, f_IMS_OtherResponse_200_MessageHeaderTX(v_UpdateRequest.msgHeader, v_ContentType), cs_MessageBody_SDP(v_SDP_MessageTemplateTx)))); + } + + // @siclog "Step 9" siclog@ + v_MessageHeader_Response := f_IMS_OtherResponse_200_MessageHeaderTX(v_ReInviteRequest.msgHeader, -, -, px_IMS_CalleeUri); + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine200, v_MessageHeader_Response))); + + // Step 10. Finally, UE acknowledges call setup. + // @siclog "Step 10" siclog@ + v_MessageHeader_Request := f_IMS_AckRequest_MessageHeaderRX(v_ReInviteRequest, c_statusLine200); + IMS_Server.receive(car_IMS_Ack_Request(cr_ACK_Request(v_NewContactUriRX, v_MessageHeader_Request))); + + // Step 11 + // @siclog "Step 11" siclog@ + f_UT_IMS_RemoveVideoCall(MMI); + v_IMS_INVITE_REQ := f_IMS_INVITE_ReceiveRequest(A_2_1_A5, tsc_OptionTagList_precondition, px_IMS_CalleeUri); + v_ReInviteRequest := v_IMS_INVITE_REQ.Request.Invite; + v_SDP_Message := f_IMS_SIP_SdpMessageBody_DecodeMatchAndCheckSDP(v_ReInviteRequest.messageBody, v_SDP_MessageTemplateRx); + // check removal of video stream + if (v_SDP_Message.media_list[1].media_field.ports.port_number != 0){ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "video 0 not found in given media description"); + } + + // @siclog "Step 12" siclog@ + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine100, f_IMS_InviteResponse_100_MessageHeaderTX(v_ReInviteRequest)))); + + // @siclog "Step 13" siclog@ + v_MessageHeader_Response := f_IMS_OtherResponse_200_MessageHeaderTX(v_ReInviteRequest.msgHeader, -, -, px_IMS_CalleeUri); + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine200, v_MessageHeader_Response))); + + // Step 14. Finally, UE acknowledges call setup. + // @siclog "Step 14" siclog@ + v_MessageHeader_Request := f_IMS_AckRequest_MessageHeaderRX(v_ReInviteRequest, c_statusLine200); + IMS_Server.receive(car_IMS_Ack_Request(cr_ACK_Request(v_NewContactUriRX, v_MessageHeader_Request))); + + // @siclog "Step 15 - 16" siclog@ + f_IMS_CallReleaseMO(v_ReInviteRequest); + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(IPCAN_MO_SpeechCall); + } + + /****************************************************************************/ + /* + * @desc REFERENCE TS 34.229-1 clause 17.2 + */ + function f_TC_17_2_IMS() runs on IMS_PTC + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: v_InviteRequestWithSdp instead of v_InviteRequest sic@ */ + var IMS_ResponseWithSdp_Type v_ResponseWithSdp; + var IMS_InviteRequestWithSdp_Type v_ReInviteRequestWithSdp; + var IMS_Response_Type v_SessionInProgress183; + var SipUrl v_ContactUrl; + var template (value) SDP_Message v_Tx_SDP; + var template (present) SDP_Message v_Rx_SDP; + var template (value) MessageHeader v_MessageHeader_Invite; + var template (value) MessageHeader v_MessageHeader_Update; + var template (value) INVITE_Request v_ReInviteRequest; + var integer v_CSeq; + var integer i; + var InternetProtocol_Type v_Protocol := f_IMS_PTC_ImsInfo_GetTransportProtocol(); + var IMS_DATA_RSP v_IMS_DATA_RSP; + + // preamble MT speech call setup + f_IMS_CC_Preamble(IPCAN_SpeechCall, IMS_REGISTERED); + f_IMS_CC_StartCall(IPCAN_MT_SpeechCall); + // Steps 1 to 4 as defined in Annex C.11 + v_InviteRequestWithSdp := f_IMS_MTCallSetup_AnnexC11_INVITE(); + v_ResponseWithSdp := f_IMS_MTCallSetup_AnnexC11_Steps1_4(v_InviteRequestWithSdp); + v_SessionInProgress183 := v_ResponseWithSdp.Response; + v_ContactUrl := f_MessageHeader_GetContactSipUrl(v_SessionInProgress183.msgHeader); + // Establish Dedicated EPS bearer + // See TS. 36.508 EUTRA/EPS signalling for IMS MT speech call Table 4.5A.7.3-1 Step 9-12 + f_IMS_CC_TriggerDedicatedBearerActivation(IPCAN_MT_SpeechCall); // trigger IPCAN to continue with activation of secondary PDP context or dedicated EPS bearer + // Steps 5 to 13 as defined in Annex C.11 + v_CSeq := valueof(v_InviteRequestWithSdp.Invite.msgHeader.cSeq.seqNumber); // Initial value + f_IMS_MTCallSetup_AnnexC11_Steps5_13(v_InviteRequestWithSdp, v_SessionInProgress183); + // MT Call is now established + f_IMS_TestBody_Set(true); + + + // @siclog "Step 1" siclog@ + // Step 1 SS sends re-INVITE with second SDP offer to add video. + // Step 2 void // @sic R5-134646 sic@ + // Step 3 The UE responds to re-INVITE by sending 183 response reliably with the SDP answer + v_Tx_SDP := f_IMS_BuildSDP_SpeechVideoTx_MT(tsc_SDP_FmtAudio, tsc_SDP_FmtAudio); + v_MessageHeader_Invite := f_IMS_InviteRequest_MessageHeaderTX(tsc_OptionTagList_precondition); + v_MessageHeader_Invite.cSeq.seqNumber := v_CSeq; + v_ReInviteRequest := cs_INVITE_Request(v_ContactUrl, v_MessageHeader_Invite, cs_MessageBody_SDP(v_Tx_SDP)); + v_ReInviteRequestWithSdp := f_IMS_InviteRequestWithSdpMT(v_ReInviteRequest, v_Tx_SDP); + + IMS_Client.send(cas_IMS_Invite_Request(cs_IMS_RoutingInfo(v_Protocol), v_ReInviteRequest)); + + // @siclog "Step 2 Void" siclog@ + // @siclog "Step 3" siclog@ + v_Rx_SDP := f_IMS_BuildSDP_SpeechVideoRx_MT(tsc_SDP_FmtAudio, tsc_SDP_FmtAudio); + v_ResponseWithSdp := f_IMS_MTCallSetup_Common_Steps3_4(v_ReInviteRequest, v_Rx_SDP, v_Protocol); + v_SessionInProgress183 := v_ResponseWithSdp.Response; + + // @siclog "Step 4 - 5" siclog@ + // Step 4 (Optional) SS acknowledges the receipt of 183 response from the UE + // Step 5 (Optional) The UE acknowledges the PRACK with 200 OK. + f_IMS_MTCallSetup_SendPRACK_ReceiveOK(v_ReInviteRequest, v_SessionInProgress183.msgHeader); + + // @siclog "Step 6" siclog@ + // Step 6 SS sends an UPDATE with SDP offer indicating SS reserved resources. + v_Tx_SDP := f_IMS_BuildSDP_SpeechVideoTx_MT(tsc_SDP_FmtAudio, tsc_SDP_FmtAudio, "Step 6"); + v_MessageHeader_Update := f_IMS_UpdateRequest_MessageHeaderTX (v_ReInviteRequest); + IMS_Client.send(cas_IMS_Update_Request(cs_IMS_RoutingInfo(v_Protocol), cs_UPDATE_Request(v_ContactUrl, v_MessageHeader_Update, cs_MessageBody_SDP(v_Tx_SDP)))); + + // @siclog "Step 7" siclog@ + // Step 7 The UE acknowledges the UPDATE with 200 OK and includes SDP answer to acknowledge its current precondition status. + for (i := 0; i + emergency + + emergency-registration + + */ + v_MessageHeader_AltService_380 := f_IMS_InviteResponse_380_MessageHeaderTX(v_InviteRequest); + v_MessageHeader_AltService_380.contact := cs_Contact(f_SIP_BuildSipUri_TX(v_CallerUri)); // @sic R5-140920 sic@ + v_MessageBody := cs_MessageBody_XML(cs_TIMS3GPP_Emergency("emergency-registration")); // XSD schema needed according to 24.229 section 7.6.2. + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine380, v_MessageHeader_AltService_380, v_MessageBody))); + + // Step 4. The UE acknowledges the receipt of 380 Alternative Service for INVITE + v_MessageHeader_Ack := f_IMS_AckRequest_MessageHeaderRX(p_InviteRequest, c_statusLine380); + IMS_Server.receive(car_IMS_Ack_Request(cr_ACK_Request(v_RequestSipUrl, v_MessageHeader_Ack))); // @sic R5s140490 sic@ + } + + /* + * @desc REFERENCE TS 34.229-1 clause 19.3.3 + * @status APPROVED (IMS) + */ + function f_TC_19_3_3_IMS1() runs on IMS_PTC + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; + var INVITE_Request v_InviteRequest; + var template (value) IMS_RoutingInfo_Type v_RoutingInfo_DL; + var boolean v_GeolocationUsage := f_IMS_GetGeolocationUsage (); // the test case intends to use GeoLocationInformation if supported by the UE (PICS) + + //Though the Speech is invoked, but DRB2 is never established as MO Call is redirected to emergency call + //with Speech call, DRB2 is established as UM + f_IMS_CC_Preamble(IPCAN_EmergencyCall, IMS_REGISTERED); // @sic R5s140490 sic@ + + // Trigger SS to execute location related functions to allow UE to get its position + if (v_GeolocationUsage) { + f_IMS_IPCAN_ModifyConfig (IPCAN, IPCAN_UpdateUELocationInformation); + } + + f_IMS_TestBody_Set(true); + + //@siclog "Step 1" siclog@ + // MO call is initiated on the UE by dialling a "non emergency" number. + f_IMS_CC_StartCall(IPCAN_MO_SpeechCall); + + //@siclog "Step 2" siclog@ + // UE sends INVITE. Request-URI of the INVITE request matches with the "non emergency" number dialled. + v_InviteRequestWithSdp := f_IMS_MOCallSetup_AnnexC21_Step2_Common(-); // !!!! what shall be the CalleeUri ??? !!!! + v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(v_InviteRequestWithSdp.RoutingInfo); + v_InviteRequest := v_InviteRequestWithSdp.Invite; + + f_IMS_CC_AbortCall(); // MO call aborted, redirected to emergency call @sic R5s140490 sic@ + + f_IMS_IMS_SendCoOrdMsg(OtherPDN); // procedures may run in parallel, thus coordination message needed at this point @sic R5s140490 sic@ + + //@siclog "Steps 3-4" siclog@ + // 380 Alternative Service / ACK + fl_TC_19_3_3_Steps3To4(v_RoutingInfo_DL, v_InviteRequest); + + f_IMS_IMS_WaitForTrigger(OtherPDN); + f_IMS_CC_Postamble(IPCAN_EmergencyCall_NormalService); + } + + /* + * @desc REFERENCE TS 34.229-1 clause 19.3.3 + * @status APPROVED (IMS) + */ + function f_TC_19_3_3_IMS2() runs on IMS_PTC + { + var INVITE_Request v_InviteRequest; + var REGISTER_Request v_RegisterRequest; + var boolean v_GeolocationUsage := f_IMS_GetGeolocationUsage (); // the test case intends to use GeoLocationInformation if supported by the UE (PICS) + var charstring v_CalleeUri := tsc_IMS_UrnServiceSos_Ambulance; // @sic R5-140920 sic@ @sic R5s140490 sic@ + + f_IMS_PTC_Init(PDN_2); + + f_IMS_IMS_WaitForTrigger(OtherPDN); + + f_IMS_CC_StartCall(IPCAN_EmergencyCall_NormalService); // steps 1-15 of 4.5A.4 @sic R5s140490 sic@ + + //@siclog "Steps 5-19" siclog@ + // Note: Emergency call tests apply only to UEs supporting full IMS security + v_RegisterRequest := f_IMS_EmergencyRegistration_C20(); + + v_InviteRequest := f_IMS_EmergencyCallSetup_AnnexC22(-, v_GeolocationUsage, v_CalleeUri); // geolocation information to be used @sic R5-140920 sic@ + + //@siclog "Steps 20-21" siclog@ + f_IMS_EmergencyCallRelease(v_InviteRequest); + + f_IMS_TestBody_Set(false); + + f_IMS_IMS_SendCoOrdMsg(OtherPDN); + } + + //============================================================================ + + function fl_TC_19_3_4_Steps20To21(template(value) IMS_RoutingInfo_Type p_RoutingInfo_DL, + INVITE_Request p_InviteRequest) runs on IMS_PTC + { + var template (omit) MessageBody v_MessageBody := omit; + var template (present) MessageHeader v_MessageHeader_Ack; + var INVITE_Request v_InviteRequest := p_InviteRequest; + var template (value) MessageHeader v_MessageHeader_AltService_380; + var template(value) IMS_RoutingInfo_Type v_RoutingInfo_DL := p_RoutingInfo_DL; + + // Step 20. The SS responds with a 380 Alternative Service response + /* Send XML contents according to Annex A.4.1 + + emergency + + emergency-registration + + */ + v_MessageHeader_AltService_380 := f_IMS_InviteResponse_380_MessageHeaderTX(v_InviteRequest); + v_MessageBody := cs_MessageBody_XML(cs_TIMS3GPP_Emergency("emergency-registration")); // XSD schema needed according to 24.229 section 7.6.2. + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine380, v_MessageHeader_AltService_380, v_MessageBody))); + + // Step 21. The UE acknowledges the receipt of 380 Alternative Service for INVITE + v_MessageHeader_Ack := f_IMS_AckRequest_MessageHeaderRX(p_InviteRequest, c_statusLine380); + IMS_Server.receive(car_IMS_Ack_Request(cr_ACK_Request(f_MessageHeader_GetContactSipUrl(p_InviteRequest.msgHeader), v_MessageHeader_Ack))); + } + + function f_TC_19_3_4_IMS1() runs on IMS_PTC + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; + var INVITE_Request v_InviteRequest; + var template (value) IMS_RoutingInfo_Type v_RoutingInfo_DL; + var boolean v_GeolocationUsage := f_IMS_GetGeolocationUsage (); // the test case intends to use GeoLocationInformation if supported by the UE (PICS) + var charstring v_CalleeUri := px_IMS_CalleeUri; // !!!! what shall be the CalleeUri ??? !!!! + + f_IMS_CC_Preamble(IPCAN_EmergencyCall, IMS_REGISTERED); + + // Trigger SS to execute location related functions to allow UE to get its position + if (v_GeolocationUsage) { + f_IMS_IPCAN_ModifyConfig (IPCAN, IPCAN_UpdateUELocationInformation); + } + + f_IMS_TestBody_Set(true); + + f_IMS_IMS_SendCoOrdMsg(OtherPDN); + f_IMS_IMS_WaitForTrigger(OtherPDN); + + //@siclog "Step 18" siclog@ + // MO call is initiated on the UE by dialling a "non emergency" number. + f_UT_RequestIMSCall(MMI, v_CalleeUri); // @sic R5-134070 sic@ + //@siclog "Step 19" siclog@ + // UE sends INVITE. Request-URI of the INVITE request matches with the "non emergency" number dialled. + v_InviteRequestWithSdp := f_IMS_MOCallSetup_AnnexC21_Step2_Common(v_CalleeUri); + v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(v_InviteRequestWithSdp.RoutingInfo); + v_InviteRequest := v_InviteRequestWithSdp.Invite; + //@siclog "Step 20-21" siclog@ + // 380 Alternative Service / ACK + fl_TC_19_3_4_Steps20To21(v_RoutingInfo_DL, v_InviteRequest); + + f_IMS_IMS_SendCoOrdMsg(OtherPDN); + + f_IMS_IMS_WaitForTrigger(OtherPDN); + f_IMS_CC_Postamble(IPCAN_EmergencyCall_NormalService); + } + + function f_TC_19_3_4_IMS2() runs on IMS_PTC + { + var INVITE_Request v_InviteRequest; + var REGISTER_Request v_RegisterRequest; + var boolean v_GeolocationUsage := f_IMS_GetGeolocationUsage (); // the test case intends to use GeoLocationInformation if supported by the UE (PICS) + + f_IMS_PTC_Init(PDN_2); + + f_IMS_IMS_WaitForTrigger(OtherPDN); + + f_IMS_TestBody_Set(true); + + //@siclog "Steps 1-15" siclog@ + f_IMS_CC_StartCall(IPCAN_EmergencyCall_NormalService); // steps 1-15 of 4.5A.4 + + v_RegisterRequest := f_IMS_EmergencyRegistration_C20(); + + v_InviteRequest := f_IMS_EmergencyCallSetup_AnnexC22(-, v_GeolocationUsage); // geolocation information to be used + + //@siclog "Steps 16-17" siclog@ + f_IMS_EmergencyCallRelease(v_InviteRequest); + + f_IMS_IMS_SendCoOrdMsg(OtherPDN); + f_IMS_IMS_WaitForTrigger(OtherPDN); + + //@siclog "Steps 22-25" siclog@ + f_IMS_CC_StartCall(IPCAN_EmergencyCall_NormalService); // optional procedure step 22: steps 1-15 of 4.5A.4 Prose issue: which option ?? + v_RegisterRequest := f_IMS_EmergencyRegistration_C20(); + + //@siclog "Steps 26-37" siclog@ + v_InviteRequest := f_IMS_EmergencyCallSetup_AnnexC22(-, v_GeolocationUsage); + + //@siclog "Steps 38-39" siclog@ + f_IMS_EmergencyCallRelease(v_InviteRequest); + + f_IMS_TestBody_Set(false); + + f_IMS_IMS_SendCoOrdMsg(OtherPDN); + } + //============================================================================ + + /* + * @desc REFERENCE TS 34.229-1 clause 19.5.6 + * @status APPROVED (IMS) + */ + function f_TC_19_5_6_IMS1() runs on IMS_PTC + { /* IMS implementation for PDN1 - Registration */ + f_IMS_CC_Preamble(IPCAN_EmergencyCall, IMS_REGISTERED); + f_IMS_IMS_SendCoOrdMsg(OtherPDN); + + f_IMS_IMS_WaitForTrigger(OtherPDN); // @sic R5-140037 sic@ + f_IMS_CC_Postamble(IPCAN_EmergencyCall_NormalService); // @sic R5-140037 sic@ + } + + /* + * @desc REFERENCE TS 34.229-1 clause 19.5.6 + * @status APPROVED (IMS) + */ + function f_TC_19_5_6_IMS2() runs on IMS_PTC + { /* IMS implementation for PDN2 - Emergency call */ + var IMS_DATA_REQ v_IMS_DATA_REQ; + var INVITE_Request v_InviteRequest; + var REGISTER_Request v_RegisterRequest; + var integer v_Expiry := 120; + var float v_ReRegistrationTime := int2float(v_Expiry / 2); + + timer t_RegExpireMin := f_IMS_SetTimerToleranceMin(v_ReRegistrationTime); + timer t_RegExpireMax := f_IMS_SetTimerToleranceMax(v_ReRegistrationTime); + + f_IMS_PTC_Init(PDN_2); + + f_IMS_IMS_WaitForTrigger(OtherPDN); + + f_IMS_CC_StartCall(IPCAN_EmergencyCall_NormalService); // steps 1-15 of 4.5A.4 + + // Initial condition: Emergency registration, expiration time is set to 120 seconds + IMS_Server.receive(car_IMS_Register_Request(cr_REGISTER_Request(?))) -> value v_IMS_DATA_REQ; // receive any REGISTER // @sic R5-140037 sic@ + t_RegExpireMin.start; + t_RegExpireMax.start; + v_RegisterRequest := f_IMS_EmergencyRegistration_C20(v_IMS_DATA_REQ, int2str(v_Expiry)); + + // Initial condition: Call setup + v_InviteRequest := f_IMS_EmergencyCallSetup_AnnexC22(); + + f_IMS_TestBody_Set(true); + + //@siclog "Steps 1-4" siclog@ + // re-registration + // The UE shall perform user-initiated emergency reregistration ... if half of the time for the emergency registration has expired and: + // - the UE has emergency related ongoing dialog; or ... + t_RegExpireMin.timeout; // re-registration shall not happen before expiry of TRegExpireMin + v_RegisterRequest := fl_IMS_EmergencyReRegistration(); // @sic R5-140037 sic@ + t_RegExpireMax.stop; // RegExpireMax shall not timeout before re-registration + + f_IMS_TestBody_Set(false); + f_IMS_EmergencyCallRelease(v_InviteRequest); + + f_IMS_IMS_SendCoOrdMsg(OtherPDN); // @sic R5-140037 sic@ + } + + /* + * @desc REFERENCE TS 34.229-1 clause 19.5.7 + * @status + */ + function f_TC_19_5_7_IMS1() runs on IMS_PTC + { /* IMS implementation for PDN1 - Registration */ + f_IMS_CC_Preamble(IPCAN_EmergencyCall, IMS_REGISTERED); + f_IMS_IMS_SendCoOrdMsg(OtherPDN); + + f_IMS_IMS_WaitForTrigger(OtherPDN); + f_IMS_CC_Postamble(IPCAN_EmergencyCall_NormalService); + } + + /* + * @desc REFERENCE TS 34.229-1 clause 19.5.7 + * @status + */ + function f_TC_19_5_7_IMS2() runs on IMS_PTC + { /* IMS implementation for PDN2 - Emergency call */ + var INVITE_Request v_InviteRequest; + var REGISTER_Request v_RegisterRequest; + var integer v_Expiry := 10; // 10 sec used per step 1 of the Expected sequence // @sic R5s140791 sic@ + var float v_ReRegistrationTime := int2float(v_Expiry / 2); // @sic R5s140647 change 1 sic@ + var IMS_DATA_REQ v_IMS_DATA_REQ; + var template(value) IMS_RoutingInfo_Type v_RoutingInfo_DL; + var template (present) SDP_Message v_SDP_Message_Step1; + var SDP_Message v_SDP_Message; + var boolean v_IsEmergency := true; + var boolean v_PrackRequiredFor180Ringing := false; /* => there is no PRACK expected to acknowledge the 180 response */ + var charstring v_FmtAudio; + var float v_DelayBeforeSending; + var float v_ReRegistrationElapsedTime; // time elapsed after registration (C.20) and reception of INVITE Request + var boolean v_GeolocationInfoAvailable := false; + timer t_RegExpireMax := f_IMS_SetTimerToleranceMax(v_ReRegistrationTime); // more than half of the expiration time + + f_IMS_PTC_Init(PDN_2); + + f_IMS_IMS_WaitForTrigger(OtherPDN); + + f_IMS_CC_StartCall(IPCAN_EmergencyCall_NormalService); // steps 1-15 of 4.5A.4 + + f_IMS_TestBody_Set(true); + //@siclog "Step 1" siclog@ + v_RegisterRequest := f_IMS_EmergencyRegistration_C20(-, int2str(v_Expiry)); // Initial condition: Emergency registration, expiration time is set to 10 seconds // @sic R5s140791 sic@ + + //@siclog "Step 2" siclog@ + t_RegExpireMax.start; // more than half of the expiration time shall elapse, used as well to calculate the elapsed time + v_SDP_Message_Step1 := f_IMS_BuildSDP_AnnexC22_Step1(); + + //@siclog "Step 1 of C.22" siclog@ + // Receive INVITE for an Emergency call + v_IMS_DATA_REQ := f_IMS_INVITE_ReceiveRequest(A_2_1_A7, -, -, -, v_GeolocationInfoAvailable); + v_ReRegistrationElapsedTime := t_RegExpireMax.read; + t_RegExpireMax.stop; // not needed any more + // If INVITE takes too long, t_RegExpireMax will time out and this will fail the TC + + v_InviteRequest := v_IMS_DATA_REQ.Request.Invite; + v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo); + + v_SDP_Message := f_IMS_MessageBody_CheckSdpMessageAndGeolocation(v_InviteRequest.messageBody, v_SDP_Message_Step1, v_GeolocationInfoAvailable); + + v_FmtAudio := f_SDP_MediaDescr_GetAMR_8000_1(v_SDP_Message.media_list[0], omit); // !!!! PROSE ISSUE: prose does not specify how to get the correct fmt !!!! + if (v_FmtAudio == "") { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "no AMR codec found in given media description"); + } + if (v_ReRegistrationElapsedTime > v_ReRegistrationTime) { + FatalError (__FILE__, __LINE__, "Time from Registration to INVITE insufficient for the test case - Reregistation time should be increased"); // @sic R5s140791 sic@ + } + + v_DelayBeforeSending := f_IMS_SetTimerToleranceMin((v_ReRegistrationTime - v_ReRegistrationElapsedTime) / 3.0); // calculate delay before sending before 100 Trying and 180 Ringing @sic R5s140338 sic@ + // total time left before Reregistration divided equally for both messages to be sent after a delay @sic R5s140791 sic@ + + //@siclog "Step 2 of C.22" siclog@ + // SS sends a 100 Trying provisional response. + f_Delay(v_DelayBeforeSending); // delayed sending + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine100, f_IMS_InviteResponse_100_MessageHeaderTX(v_InviteRequest)))); + + //@siclog "Step 3 of C.22" siclog@ + // SS sends a 180 Ringing response. + f_Delay(v_DelayBeforeSending); // delayed sending + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine180, f_IMS_InviteResponse_180_MessageHeaderTX(v_InviteRequest, -, v_PrackRequiredFor180Ringing, v_IsEmergency)))); + + //@siclog "Step 1-4 Parallel behaviour" siclog@ + // Parallel behaviour Steps 1 to 4 re-registration + v_RegisterRequest := fl_IMS_EmergencyReRegistration(); // @sic R5s140338 sic@ + t_RegExpireMax.stop; + + f_IMS_TestBody_Set(false); + + f_IMS_IMS_SendCoOrdMsg(OtherPDN); + } + + //============================================================================ + function f_TC_19_5_8_IMS1() runs on IMS_PTC + { /* IMS implementation for PDN1 - Registration */ + f_IMS_CC_Preamble(IPCAN_EmergencyCall, IMS_REGISTERED); + + f_IMS_IMS_SendCoOrdMsg(OtherPDN); + + f_IMS_IMS_WaitForTrigger(OtherPDN); + f_IMS_CC_Postamble(IPCAN_EmergencyCall_NormalService); + } + + function f_TC_19_5_8_IMS2() runs on IMS_PTC + { /* IMS implementation for PDN2 - Emergency call */ + var IMS_DATA_REQ v_IMS_DATA_REQ; + var IMS_DATA_REQ v_IMS_DATA_REQ_BYE; // to save for later use + var INVITE_Request v_InviteRequest; + var REGISTER_Request v_RegisterRequest; + var BYE_Request v_ByeRequest; + var template (value) IMS_RoutingInfo_Type v_RoutingInfo; + var template (present) MessageHeader v_MessageHeader_Bye; + var InternetProtocol_Type v_Protocol; + var template (value) MessageHeader v_MessageHeader_MessageMT; + var MESSAGE_Request v_MESSAGE_RequestRX; + var SipUrl v_ContactUrl; // !!!! NOT INITIALIZED needs further checking (EW) + var RP_ACK_Type v_RPAck; + var octetstring v_EncodedSMS; + var template (value) RP_DATA_dl_Type v_SMSdl; + var SipUrl v_PAssertedIDUrl; + var CallidString v_PrevCallId; + var CharStringList_Type v_PrevCallIdList := {}; + var integer v_TimestampRegSeconds; + var integer v_TimestampSMStxSeconds; + var H2_Type v_TimestampRegHexSeconds; + var H2_Type v_TimestampSMStxHexSeconds; + var H14_Type v_TimestampReg; + var H14_Type v_TimestampSMStx; + + timer t_WaitForBYE := 7.0; + + f_IMS_PTC_Init(PDN_2); + + f_IMS_IMS_WaitForTrigger(OtherPDN); + + f_IMS_CC_StartCall(IPCAN_EmergencyCall_NormalService); // steps 1-15 of 4.5A.4 + + // Initial condition: Emergency registration + v_RegisterRequest := f_IMS_EmergencyRegistration_C20(-, "20"); // Register expiration time of 20 seconds + t_WaitForBYE.start; + v_TimestampReg := f_BCD_TimestampWithTimezone (); + // Initial condition: Call setup + v_InviteRequest := f_IMS_EmergencyCallSetup_AnnexC22(); + v_ContactUrl := f_MessageHeader_GetContactSipUrl(v_RegisterRequest.msgHeader); + + f_IMS_TestBody_Set(true); + t_WaitForBYE.timeout; + f_IMS_EmergencyCallRelease(v_InviteRequest); // is this ok ? what does abort do ? special warning to test operator ???? how fast can this be achieved ? + + //@siclog "Step 1" siclog@ + // BYE + v_MessageHeader_Bye := f_IMS_ByeRequest_MessageHeaderRX(v_InviteRequest, true); /* p_IsEmergency := true */ + IMS_Server.receive(car_IMS_Bye_Request(cr_BYE_Request(v_InviteRequest.requestLine.requestUri, v_MessageHeader_Bye))) -> value v_IMS_DATA_REQ_BYE; // !!!! most likely requestUri is wrong (has to be "same URI value as the recipient of BYE has earlier sent in its Contact header within the same dialog"; A.2.8) !!!! + v_ByeRequest := v_IMS_DATA_REQ_BYE.Request.Bye; + + //@siclog "Step 2" siclog@ + // The SS sends an MT Short Message 9 seconds after initiation of the emergency call. + // Build MT SMS - copied from 18_2 + f_Delay (1.5); + v_Protocol := f_IMS_PTC_ImsInfo_GetTransportProtocol(); + v_SMSdl := cs_RP_DATA_dl_DELIVER('7788996655'O); + v_EncodedSMS := f_SMS_PDU_EncodeRPDATA(v_SMSdl); + v_MessageHeader_MessageMT := f_IMS_MessageRequest_MessageHeaderTX_MT_SMS(v_Protocol); + IMS_Client.send(cas_IMS_Message_Request(cs_IMS_RoutingInfo(v_Protocol), cs_MESSAGE_Request(v_ContactUrl, v_MessageHeader_MessageMT, cs_MessageBody_SMS(v_EncodedSMS)))); + v_PrevCallId := valueof(v_MessageHeader_MessageMT.callId.callid); + v_PrevCallIdList := f_CharStringList_Add(v_PrevCallIdList, v_PrevCallId); + v_TimestampSMStx := f_BCD_TimestampWithTimezone (); + // Plausibility check: less than 10 sec may elapse in order to satisfy the timely requirements of the test case + v_TimestampRegHexSeconds := substr (v_TimestampReg, 10,2); + v_TimestampSMStxHexSeconds := substr (v_TimestampSMStx, 10,2); + v_TimestampRegSeconds := hex2int(v_TimestampRegHexSeconds); + v_TimestampSMStxSeconds := hex2int(v_TimestampSMStxHexSeconds); + if (v_TimestampSMStxSeconds > v_TimestampRegSeconds) { + if ((v_TimestampSMStxSeconds - v_TimestampRegSeconds) > 10 ) { + f_IMS_CC_SetVerdictInconc(__FILE__, __LINE__, "Time restrictions not satisfied"); + } + } + else + if (v_TimestampRegSeconds > v_TimestampSMStxSeconds) { // measurement stretches over 2 minutes + if (((v_TimestampSMStxSeconds + 60) - v_TimestampRegSeconds) > 10 ) { + f_IMS_CC_SetVerdictInconc(__FILE__, __LINE__, "Time restrictions not satisfied"); + } + } + + //@siclog "Step 2A" siclog@ + // The UE responds with 200 OK. + f_IMS_ReceiveResponse(v_MessageHeader_MessageMT, v_Protocol, cr_Response(c_statusLine200, f_IMS_OtherResponse_200_MessageHeaderRX(v_MessageHeader_MessageMT))); + + //@siclog "Step 2B" siclog@ + // The UE responds with a delivery report. + // Contents in 34.229-1 Annex A.7.2 + v_PAssertedIDUrl := f_Addr_Union_GetSipUrl(v_MessageHeader_MessageMT.pAssertedID.pAssertedIDValueList[0]); + + v_IMS_DATA_REQ := f_IMS_MessageRequest_Receive(v_PAssertedIDUrl, + f_IMS_MessageRequest_MessageHeaderRX_DeliveryReport(v_PAssertedIDUrl, v_PrevCallId), + v_PrevCallIdList); + v_MESSAGE_RequestRX := v_IMS_DATA_REQ.Request.Message; + v_EncodedSMS := v_MESSAGE_RequestRX.messageBody.smsMessage; + v_RPAck := f_SMS_PDU_DecodeAndMatchRPACK(v_EncodedSMS, cr_RP_ACK_ul); + f_IMS_PreliminaryPass(__FILE__, __LINE__, "Step 2A"); + + //@siclog "Step 3" siclog@ + // The SS sends 200 OK for BYE + v_RoutingInfo := f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ_BYE.RoutingInfo); + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo, cs_Response(c_statusLine200, f_IMS_OtherResponse_200_MessageHeaderTX(v_IMS_DATA_REQ_BYE.Request.Bye.msgHeader)))); + + // up to now 9 sec have elapsed after the emergency registration + // After half of the expiration time (=10 sec) the UE performs an emergency reregistration (parallel behaviour) + + // Parallel behaviour Steps 1 to 4 emergency re-registration + v_RegisterRequest := f_IMS_EmergencyRegistration_C20(); // new security information, is reinitialized in this function + + //@siclog "Step 4" siclog@ + // 1 second after the emergency reregistration SIP Timer T1 times out and the SMS delivery report is retransmitted by the UE + // UE resends the SIP MESSAGE request after the timeout as SS did not send a reply + // Contents in 34.229-1 Annex A.7.2 + v_PAssertedIDUrl := f_Addr_Union_GetSipUrl(v_MessageHeader_MessageMT.pAssertedID.pAssertedIDValueList[0]); + + v_IMS_DATA_REQ := f_IMS_MessageRequest_Receive(v_PAssertedIDUrl, + f_IMS_MessageRequest_MessageHeaderRX_DeliveryReport(v_PAssertedIDUrl, v_PrevCallId), + v_PrevCallIdList); + v_MESSAGE_RequestRX := v_IMS_DATA_REQ.Request.Message; + v_EncodedSMS := v_MESSAGE_RequestRX.messageBody.smsMessage; + v_RPAck := f_SMS_PDU_DecodeAndMatchRPACK(v_EncodedSMS, cr_RP_ACK_ul); + f_IMS_PreliminaryPass(__FILE__, __LINE__, "Step 4"); + + //@siclog "Step 5" siclog@ + // The SS sends a 202 Accepted + IMS_Server.send(cas_IMS_DATA_RSP(f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo), cs_Response(c_statusLine202, f_IMS_Accepted_202_MessageHeaderTX(v_MESSAGE_RequestRX.msgHeader)))); + + f_IMS_TestBody_Set(false); + + f_IMS_EmergencyCallRelease(v_InviteRequest); + f_IMS_IMS_SendCoOrdMsg(OtherPDN); // IMS call has been released + + } + + //============================================================================ + /* + * @desc Sending of Notify Request and reception 200 response + * @param p_ContactUrl + * @param p_SubscribeRequest + * @param p_XmlMessage + * @status APPROVED (IMS) + */ + function fl_TC_19_5_9_Steps16To17_Notify(SipUrl p_ContactUrl, + SUBSCRIBE_Request p_SubscribeRequest, + template (value) Reginfo_Type p_XmlMessage) runs on IMS_PTC + { + var template (value) MessageHeader v_MessageHeader_Notify; + var template (present) MessageHeader v_MessageHeader_Response; + + v_MessageHeader_Notify := f_IMS_NotifyRequest_MessageHeader_A16(p_SubscribeRequest, 2, cs_SubscriptionState_Active); + IMS_Client.send(cas_IMS_Notify_Request(cs_IMS_RoutingInfo(udp), + cs_NOTIFY_Request(p_ContactUrl, v_MessageHeader_Notify, cs_MessageBody_RegInfo(p_XmlMessage)))); + v_MessageHeader_Response := f_IMS_OtherResponse_200_MessageHeaderRX(v_MessageHeader_Notify); + f_IMS_ReceiveResponse(v_MessageHeader_Notify, udp, cr_Response(c_statusLine200, v_MessageHeader_Response)); /* @sic R5s140350 sic@ */ + } + + /* + * @desc Construction of XML message for Notify + * @param p_RegisterRequest + * @return template (value) Reginfo_Type + * @status APPROVED (IMS) + */ + function fl_TC_19_5_9_XmlMessageForNotify(REGISTER_Request p_RegisterRequest) runs on IMS_PTC return template (value) Reginfo_Type + { + var template (value) RegInfo_Registration_Type v_Registration1 := f_XML_RegistrationInfo(p_RegisterRequest, px_IMS_PublicUserIdentity2, "a102", "980", terminated, rejected); + var template (value) RegInfo_Registration_Type v_Registration2 := f_XML_RegistrationInfo(p_RegisterRequest, px_IMS_AssociatedTelUri, "a101", "981", terminated, rejected, -, -, true); + var template (value) RegInfo_RegistrationList_Type v_RegistrationList := {v_Registration1, v_Registration2}; + return f_XML_RegInfo(partial, 1, v_RegistrationList); + } + + /* + * @desc REFERENCE TS 34.229-1 clause 19.5.9 + * @status APPROVED (IMS) + */ + function f_TC_19_5_9_IMS1() runs on IMS_PTC + { /* IMS implementation for PDN1 - Registration */ + var REGISTER_Request v_RegisterRequest; + var SUBSCRIBE_Request v_SubscribeReq; + var SipUrl v_ContactUrl; + var template (value) Reginfo_Type v_XmlMessage; + + f_IMS_PTC_Init(PDN_1); // @sic R5s140329 sic@ + f_IMS_IPCAN_Init(IPCAN, IPCAN_EmergencyCall); // @sic R5s140329 sic@ + + f_IMS_IPCAN_StartProcedure(IPCAN, IPCAN_InitialRegistration); + v_RegisterRequest := f_IMS_Register(); + v_SubscribeReq := f_IMS_Register_SubscribeNotify(v_RegisterRequest); + f_IMS_CC_ReleaseConnection(IPCAN_InitialRegistration); // @sic R5s140329 sic@ + + f_IMS_IMS_SendCoOrdMsg(OtherPDN); + f_IMS_IMS_WaitForTrigger(OtherPDN); // Wait for sync message from other IMS PTC + + //@siclog "Steps 16-17" siclog@ + v_ContactUrl := f_MessageHeader_GetContactSipUrl(v_RegisterRequest.msgHeader); // check and compare with 19.5.8 (EW) + v_XmlMessage := fl_TC_19_5_9_XmlMessageForNotify(v_RegisterRequest); + fl_TC_19_5_9_Steps16To17_Notify(v_ContactUrl, v_SubscribeReq, v_XmlMessage); + + f_IMS_IMS_SendCoOrdMsg(OtherPDN); // to release IMS call + + f_IMS_IMS_WaitForTrigger(OtherPDN); + f_IMS_CC_Postamble(IPCAN_EmergencyCall_NormalService); + + } + + /* + * @desc REFERENCE TS 34.229-1 clause 19.5.9 + * @status APPROVED (IMS) + */ + function f_TC_19_5_9_IMS2() runs on IMS_PTC + { /* IMS implementation for PDN2 - Emergency call */ + var INVITE_Request v_InviteRequest; + var REGISTER_Request v_RegisterRequest; + + f_IMS_PTC_Init(PDN_2); + + f_IMS_IMS_WaitForTrigger(OtherPDN); + + f_IMS_TestBody_Set(true); + + //@siclog "Steps 1-15" siclog@ + f_IMS_CC_StartCall(IPCAN_EmergencyCall_NormalService); // steps 1-15 of 4.5A.4 + v_RegisterRequest := f_IMS_EmergencyRegistration_C20(); + v_InviteRequest := f_IMS_EmergencyCallSetup_AnnexC22(); + + f_IMS_IMS_SendCoOrdMsg(OtherPDN); // Send sync message to other IMS PTC (for steps 16/17) + f_IMS_IMS_WaitForTrigger(OtherPDN); // Wait for sync message from other IMS PTC + + //@siclog "Steps 16-17" siclog@ + f_IMS_EmergencyCallRelease(v_InviteRequest); + + f_IMS_TestBody_Set(false); + + f_IMS_IMS_SendCoOrdMsg(OtherPDN); // IMS call has been released + } + + //============================================================================ + /* + * @desc REFERENCE TS 34.229-1 clause 19.5.10 + * @status APPROVED (IMS) + */ + function f_TC_19_5_10_IMS1() runs on IMS_PTC + { /* IMS implementation for PDN1 - Registration */ + f_IMS_CC_Preamble(IPCAN_EmergencyCall, IMS_REGISTERED); + f_IMS_IMS_SendCoOrdMsg(OtherPDN); + f_IMS_IMS_WaitForTrigger(OtherPDN); // @sic R5-140039 sic@ + f_IMS_CC_Postamble(IPCAN_EmergencyCall_NormalService); // @sic R5-140039 sic@ + } + + /* + * @desc REFERENCE TS 34.229-1 clause 19.5.10 + * @status APPROVED (IMS) + */ + function f_TC_19_5_10_IMS2() runs on IMS_PTC + { /* IMS implementation for PDN2 - Emergency call */ + var INVITE_Request v_InviteRequest; + timer t_RegExpire; + + f_IMS_PTC_Init(PDN_2); + + f_IMS_IMS_WaitForTrigger(OtherPDN); + + f_IMS_TestBody_Set(true); + + //@siclog "Steps 1-15" siclog@ + f_IMS_CC_StartCall(IPCAN_EmergencyCall_NormalService); // steps 1-15 of 4.5A.4 + + t_RegExpire.start(f_IMS_SetTimerToleranceMax(100.0)); + // The UE shall not send IMS emergency reregistration within 110 seconds from the IMS emergency registration done within step 1. + f_IMS_EmergencyRegistration_C20(-, "100"); + v_InviteRequest := f_IMS_EmergencyCallSetup_AnnexC22(); + + // Wait 20 seconds + f_Delay(20.0); + //@siclog "Steps 16-17" siclog@ + f_IMS_EmergencyCallRelease(v_InviteRequest); + + // Wait for checking that the UE does not attempt a new re-registration (see 19.10.5) + t_RegExpire.timeout; + f_IMS_PreliminaryPass(__FILE__, __LINE__, ""); + + f_IMS_TestBody_Set(false); + + f_IMS_IMS_SendCoOrdMsg(OtherPDN); // @sic R5-140039 sic@ + } +} diff --git a/IMS_PART4_IWD_14wk37/IMS/6/IMS_CC_PDPContextActivationTestcases.ttcn b/IMS_PART4_IWD_14wk37/IMS/6/IMS_CC_PDPContextActivationTestcases.ttcn new file mode 100644 index 0000000..29ec2d6 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/6/IMS_CC_PDPContextActivationTestcases.ttcn @@ -0,0 +1,65 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-08 15:01:26 +0200 (Mon, 08 Sep 2014) $ +// $Rev: 12103 $ +/******************************************************************************/ + +module IMS_CC_PDPContextActivationTestcases { + + import from NAS_CommonTypeDefs all; + import from IMS_Component all; + import from IMS_Procedures_Registration all; + import from IMS_CommonParameters all; + import from IMS_CommonDefs all; + import from IMS_PTC_CoordMsg all; + + import from IMS_CC_Parameters all; + import from IMS_CC_CommonFunctions all; + import from IMS_CC_IPCAN_Coordination all; + import from IMS_CC_PCO_Handling all; + + /* ************************************************************************** */ + // See 34.229-1 clause 6.3 + function f_TC_6_3_IMS() runs on IMS_PTC + { + var NAS_ProtocolConfigOptions_Type v_ConfigOptionsRx; + var NAS_ProtocolConfigOptions_Type v_ConfigOptionsTx; + var IMS_SecurityScheme_Type v_SecurityScheme := f_IMS_SecurityScheme((pc_IMS_GIBA_Sec and not pc_IMS_Sec) or px_UEwithSIM); + + f_IMS_CC_Preamble(IPCAN_SignallingOnly, IMS_NULL, v_SecurityScheme); + f_IMS_CC_StartSignalling(IPCAN_InitialRegistration); + + + f_IMS_TestBody_Set(true); + v_ConfigOptionsRx := f_IMS_IPCAN_WaitForPCOs(IPCAN); + // Step 1 - UE sends this PDU by setting the IM CN Subsystem Signalling Flag + // to the GGSN within theProtocol Configuration Options IE + // @siclog "Step 1" siclog@ + if (not f_ProtocolConfigOptions_Check(v_ConfigOptionsRx, tsc_ConfigOptions_IM_CN_SubsystemFlag)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 1"); + } else { + f_IMS_PreliminaryPass(__FILE__, __LINE__, "Step 1"); + } + // Step 2 - IM CN Subsystem Signalling Flag is provided to the UE + // Note: Setting this flag in the PCOs is the only difference to test 6.2. + // @siclog "Step 2" siclog@ + v_ConfigOptionsTx := f_ProtocolConfigOption_GetResponse(v_ConfigOptionsRx); + f_IMS_IPCAN_SendPCOs(IPCAN, v_ConfigOptionsTx); + + // Steps 3 to 5 - Implicitly tested + // @siclog "Step 3 - 5" siclog@ + f_IMS_Registration(); + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(IPCAN_InitialRegistration); + } + + + +} diff --git a/IMS_PART4_IWD_14wk37/IMS/7/IMS_CC_P_CSCFDiscoveryTestcases.ttcn b/IMS_PART4_IWD_14wk37/IMS/7/IMS_CC_P_CSCFDiscoveryTestcases.ttcn new file mode 100644 index 0000000..0532b3d --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/7/IMS_CC_P_CSCFDiscoveryTestcases.ttcn @@ -0,0 +1,63 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-08 15:02:54 +0200 (Mon, 08 Sep 2014) $ +// $Rev: 12104 $ +/******************************************************************************/ + +module IMS_CC_P_CSCFDiscoveryTestcases { + + import from NAS_CommonTypeDefs all; + import from IMS_Component all; + import from IMS_Procedures_Registration all; + import from IMS_CommonParameters all; + import from IMS_CommonDefs all; + import from IMS_PTC_CoordMsg all; + + import from IMS_CC_Parameters all; + import from IMS_CC_CommonFunctions all; + import from IMS_CC_IPCAN_Coordination all; + import from IMS_CC_PCO_Handling all; + + /****************************************************************************/ + // See 34.229-1 clause 7.1 + function f_TC_7_1_IMS() runs on IMS_PTC + { + var NAS_ProtocolConfigOptions_Type v_ConfigOptionsRx; + var NAS_ProtocolConfigOptions_Type v_ConfigOptionsTx; + var IMS_SecurityScheme_Type v_SecurityScheme := f_IMS_SecurityScheme((pc_IMS_GIBA_Sec and not pc_IMS_Sec) or px_UEwithSIM); + + f_IMS_CC_Preamble(IPCAN_SignallingOnly, IMS_NULL, v_SecurityScheme); + f_IMS_CC_StartSignalling(IPCAN_InitialRegistration); + + + f_IMS_TestBody_Set(true); + // @siclog "Step 1" siclog@ + v_ConfigOptionsRx := f_IMS_IPCAN_WaitForPCOs(IPCAN); + // Step 1 + if ( + (not f_ProtocolConfigOptions_Check(v_ConfigOptionsRx, tsc_ConfigOptions_P_CSCF_IPv6_Request)) and + (not f_ProtocolConfigOptions_Check(v_ConfigOptionsRx, tsc_ConfigOptions_P_CSCF_IPv4_Request))) { // @sic CR R5s120530 TODO: Prose CR needed sic@ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 1"); + } else { + f_IMS_PreliminaryPass(__FILE__, __LINE__, "Step 1"); + } + // Step 2 + // @siclog "Step 2" siclog@ + v_ConfigOptionsTx := f_ProtocolConfigOption_GetResponse(v_ConfigOptionsRx); + f_IMS_IPCAN_SendPCOs(IPCAN, v_ConfigOptionsTx); + + // Steps 3 to 4 + // @siclog "Step 3 - 4" siclog@ + f_IMS_Registration(); + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(IPCAN_InitialRegistration); + } + +} diff --git a/IMS_PART4_IWD_14wk37/IMS/8/IMS_CC_RegistrationTestcases.ttcn b/IMS_PART4_IWD_14wk37/IMS/8/IMS_CC_RegistrationTestcases.ttcn new file mode 100644 index 0000000..6fb36b0 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/8/IMS_CC_RegistrationTestcases.ttcn @@ -0,0 +1,395 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-08 15:08:45 +0200 (Mon, 08 Sep 2014) $ +// $Rev: 12106 $ +/******************************************************************************/ + +module IMS_CC_RegistrationTestcases { + + import from LibSip_SIPTypesAndValues all; + import from IMS_Component all; + import from IMS_ASP_TypeDefs all; + import from IMS_ASP_Templates all; + import from IMS_CommonDefs all; + import from IMS_SIP_Templates all; + import from IMS_XML_Templates all; + import from IMS_CC_CommonFunctions all; + import from IMS_CommonFunctions all; + import from IMS_Procedures_Registration all; + import from IMS_Procedures_Common all; + import from UpperTesterFunctions all; + import from IMS_PTC_CoordMsg all; + import from IMS_CommonParameters all; + import from IMS_CC_Parameters all; + import from CommonDefs all; + + //============================================================================ + + template (value) MinExpires cs_MinExpires (DeltaSec p_DeltaSec) := + { /* @status APPROVED (IMS) */ + fieldName := MIN_EXPIRES_E, + deltaSec := p_DeltaSec + }; + + /* + * @desc 423 Interval Too Brief for REGISTER (see TS 34.229, A.1.7) + * @param p_RegisterRequest + * @param p_DeltaSec + * @return template (value) MessageHeader + * @status APPROVED (IMS) + */ + function f_IMS_RegisterResponse_423_MessageHeaderTX(REGISTER_Request p_RegisterRequest, + DeltaSec p_DeltaSec) runs on IMS_PTC return template (value) MessageHeader + { + var MessageHeader v_MessageHeader_Register := p_RegisterRequest.msgHeader; + var template (value) MessageHeader v_MessageHeader_Response := cs_MessageHeader_Dummy; + + v_MessageHeader_Response.via := v_MessageHeader_Register.via; + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderTX(v_MessageHeader_Register); /* @sic R5-131897, R5-132063 - generic handling of to-tags sic@ */ + v_MessageHeader_Response.fromField := v_MessageHeader_Register.fromField; + v_MessageHeader_Response.callId := v_MessageHeader_Register.callId; + v_MessageHeader_Response.sessionId := v_MessageHeader_Register.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := v_MessageHeader_Register.cSeq; + v_MessageHeader_Response.minExpires := cs_MinExpires(p_DeltaSec); + + return v_MessageHeader_Response; + } + + template (value) Unsupported cs_Unsupported := + { + fieldName := UNSUPPORTED_E, + optionsTags := {"sec-agree"} + }; + + /****************************************************************************/ + /* + * @desc REFERENCE TS 34.229-1 clause 8.1 + * @status APPROVED (IMS) + */ + function f_TC_8_1_IMS() runs on IMS_PTC + { + var REGISTER_Request v_RegisterReq; + + f_IMS_CC_Preamble(IPCAN_SignallingOnly, IMS_NULL, IMS_Security); + f_IMS_CC_StartSignalling(IPCAN_InitialRegistration); + + f_IMS_TestBody_Set(true); + // Steps 1 to 4 + // @siclog "Step 1 - 4" siclog@ + v_RegisterReq := f_IMS_Register_NonGIBA(); + // Steps 5 to 8 + // @siclog "Step 5 - 8" siclog@ + f_IMS_Register_SubscribeNotify(v_RegisterReq); + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(IPCAN_InitialRegistration); + } + + /****************************************************************************/ + /* + * @desc Re-registration for test case 8.2 + * @param p_TRegExpireMin + * @param p_TRegExpireMax + * @param p_PrevSecurityClientParams + * @param p_Nc + * @param p_NextExpiration + * @param p_ReRegistrationTime + * @return SecurityClientParams_Type + * @status APPROVED (IMS) + */ + function fl_TC_8_2_ReRegistration(timer p_TRegExpireMin, + timer p_TRegExpireMax, + SecurityClientParams_Type p_PrevSecurityClientParams, + integer p_Nc, + charstring p_NextExpiration, + template (omit) float p_ReRegistrationTime := omit) runs on IMS_PTC return SecurityClientParams_Type + { /* @sic R5s130266 change 1.2 - MCC160 Implementation: upper, lower bound for TRegExpire sic@ */ + /* @sic R5-132038 sic@ */ + var IMS_DATA_REQ v_IMS_DATA_REQ; + var REGISTER_Request v_RegisterReq; + var SecurityClientParams_Type v_SecurityClientParams; + var float v_ReRegistrationTime; + + f_IMS_CC_StartSignalling(IPCAN_MO_IMS_Signalling); + + v_IMS_DATA_REQ := f_IMS_PTC_ReRegistration_WaitForRegistration(p_TRegExpireMin, p_TRegExpireMax, p_Nc); + v_RegisterReq := v_IMS_DATA_REQ.Request.Register; + v_SecurityClientParams := f_IMS_PTC_ReRegistration_SecurityClientParamsCheck(v_RegisterReq, p_PrevSecurityClientParams); + + IMS_Server.send(cas_IMS_DATA_RSP(f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo), + cs_Response(c_statusLine200, f_IMS_RegisterResponse_200_MessageHeaderTX(v_RegisterReq, -, p_NextExpiration)))); + + if (isvalue(p_ReRegistrationTime)) { + v_ReRegistrationTime := valueof(p_ReRegistrationTime); + p_TRegExpireMin.start(f_IMS_SetTimerToleranceMin(v_ReRegistrationTime)); + p_TRegExpireMax.start(f_IMS_SetTimerToleranceMax(v_ReRegistrationTime)); + } + f_IMS_CC_ReleaseConnection(IPCAN_MO_IMS_Signalling); + + return v_SecurityClientParams; + } + + //---------------------------------------------------------------------------- + /* + * @desc REFERENCE TS 34.229-1 clause 8.2 + * @status APPROVED (IMS) + */ + function f_TC_8_2_IMS() runs on IMS_PTC + { + var REGISTER_Request v_RegisterReq; + var SecurityClientParams_Type v_SecurityClientParams; + var charstring v_Expiration; + var integer v_Nc; + var float v_ReRegistrationTime; + timer t_TRegExpireMin; // @sic R5s130266 change 1.2 - MCC160 Implementation sic@ + timer t_TRegExpireMax; // @sic R5s130266 change 1.2 - MCC160 Implementation sic@ + + f_IMS_CC_Preamble(IPCAN_SignallingOnly, IMS_NULL, IMS_Security); + + f_IMS_TestBody_Set(true); + + f_IMS_CC_StartSignalling(IPCAN_InitialRegistration); + + // STEP 1 - 8 + v_Expiration := "120"; + v_ReRegistrationTime := 60.0; + // @siclog "Step 1 - 4" siclog@ + v_RegisterReq := f_IMS_Register_NonGIBA(-, v_Expiration); // Steps 1-4 + t_TRegExpireMin.start(f_IMS_SetTimerToleranceMin(v_ReRegistrationTime)); + t_TRegExpireMax.start(f_IMS_SetTimerToleranceMax(v_ReRegistrationTime)); + // @siclog "Step 5 - 8" siclog@ + f_IMS_Register_SubscribeNotify(v_RegisterReq); // Steps 5-8 + + v_SecurityClientParams := f_IMS_PTC_ReRegistration_SecurityClientParamsGet(); /* security parameters as used due to authentication + @sic R5-132038: there is no re-authentication i.e. security parameters are as configured after step 3 sic@ */ + f_IMS_CC_ReleaseConnection(IPCAN_InitialRegistration); + + // STEP 9, 10 + v_Nc := 2; + v_Expiration := "1200"; + v_ReRegistrationTime := 600.0; + // @siclog "Step 9 - 10" siclog@ + fl_TC_8_2_ReRegistration(t_TRegExpireMin, t_TRegExpireMax, v_SecurityClientParams, v_Nc, v_Expiration, v_ReRegistrationTime); /* @sic R5-132038: v_SecurityClientParams does not get re-assigned sic@ */ + + // STEP 11, 12 + v_Nc := 3; + v_Expiration := "1800"; + v_ReRegistrationTime := 1200.0; + // @siclog "Step 11 - 12" siclog@ + fl_TC_8_2_ReRegistration(t_TRegExpireMin, t_TRegExpireMax, v_SecurityClientParams, v_Nc, v_Expiration, v_ReRegistrationTime); /* @sic R5-132038: v_SecurityClientParams does not get re-assigned sic@ */ + + // STEP 13, 14 + v_Nc := 4; + // @siclog "Step 13 -14" siclog@ + fl_TC_8_2_ReRegistration(t_TRegExpireMin, t_TRegExpireMax, v_SecurityClientParams, v_Nc, tsc_IMS_RegisterExpiration); + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(); // NOTE: conection is already released in fl_TC_8_2_ReRegistration + } + + /****************************************************************************/ + /* + * @desc REFERENCE TS 34.229-1 clause 8.3 + * @status APPROVED (IMS) + */ + function f_TC_8_3_IMS() runs on IMS_PTC + { + f_IMS_CC_Preamble(IPCAN_SignallingOnly, IMS_REGISTERED, IMS_Security); + + f_IMS_TestBody_Set(true); + + f_IMS_CC_StartSignalling(IPCAN_MO_IMS_Signalling); // prepare IPCAN to wait for RRC connection establishment + f_UT_IMS_Deregister(MMI); + + // Steps 1 and 2 + // Receive REGISTER with Expires header set to 0 + // @siclog "Step 1 - 2" siclog@ + f_IMS_PTC_Deregistration(); + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(IPCAN_MO_IMS_Signalling, false); /* @sic R5s130901: handling of de-registration sic@ */ + } + + /****************************************************************************/ + /* + * @desc REFERENCE TS 34.229-1 clause 8.4 + * @status APPROVED (IMS) + */ + function f_TC_8_4_IMS() runs on IMS_PTC + { + var IMS_DATA_REQ v_IMS_DATA_REQ; + var REGISTER_Request v_RegisterReq; + var SUBSCRIBE_Request v_SubscribeReq; + var charstring v_RegisterExpiration := "800000"; + var integer v_CseqStep1; + var integer v_CseqStep3; + var SipUrl v_ContactUrl; + + f_IMS_CC_Preamble(IPCAN_SignallingOnly, IMS_NULL, IMS_Security); + f_IMS_CC_StartSignalling(IPCAN_InitialRegistration); + + f_IMS_TestBody_Set(true); + + // Step 1 + // @siclog "Step 1" siclog@ + v_IMS_DATA_REQ := f_IMS_REGISTER_InitialRequest(); + v_RegisterReq := v_IMS_DATA_REQ.Request.Register; + v_CseqStep1 := v_RegisterReq.msgHeader.cSeq.seqNumber; + + // Step 2 + // @siclog "Step 2" siclog@ + IMS_Server.send(cas_IMS_DATA_RSP(f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo), cs_Response(c_statusLine423, f_IMS_RegisterResponse_423_MessageHeaderTX(v_RegisterReq, v_RegisterExpiration)))); + + // Step 3 - UE repeats the Register Request + // @siclog "Step 3" siclog@ + v_IMS_DATA_REQ := f_IMS_REGISTER_InitialRequest(-, v_RegisterExpiration); // @sic R5s120945 sic@ + v_RegisterReq := v_IMS_DATA_REQ.Request.Register; + v_CseqStep3 := v_RegisterReq.msgHeader.cSeq.seqNumber; + + if (v_CseqStep1 + 1 != v_CseqStep3) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "invalid 'seqNumber'"); + } + + // Continue with Annex C.2 steps 5 to 11 + // @siclog "Step 11 - 18" siclog@ + f_IMS_Register_SecurityInit(v_RegisterReq); + IMS_Server.send(cas_IMS_DATA_RSP(f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo), cs_Response(c_statusLine401, f_IMS_RegisterResponse_401_MessageHeaderTX(v_RegisterReq)))); + + v_IMS_DATA_REQ := f_IMS_REGISTER_SubsequentRequest(-, -, -, v_RegisterExpiration); // @sic R5s120945 sic@ + v_RegisterReq := v_IMS_DATA_REQ.Request.Register; + IMS_Server.send(cas_IMS_DATA_RSP(f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo), cs_Response(c_statusLine200, f_IMS_RegisterResponse_200_MessageHeaderTX(v_RegisterReq, -, v_RegisterExpiration)))); // @sic R5-130548 sic@ + + // Complete the registratrion procedure + v_ContactUrl := f_MessageHeader_GetContactSipUrl(v_RegisterReq.msgHeader); + + // Steps 8 and 9 + v_IMS_DATA_REQ := f_IMS_SUBSCRIBE_Request(); // @sic R5-130548 R5-131875 sic@ + f_IMS_SUBSCRIBE_Response(v_IMS_DATA_REQ); // @sic R5-130548 R5-131875 sic@ + v_SubscribeReq := v_IMS_DATA_REQ.Request.Subscribe; + + // Steps 10 and 11 + f_IMS_Register_Notify(v_ContactUrl, v_SubscribeReq, f_IMS_XmlMessageForNotify_Def(v_RegisterReq)); // @sic R5-130548 R5-131875 sic@ + + f_IMS_TestBody_Set(false); + f_IMS_CC_Postamble(IPCAN_InitialRegistration); + } + + /* ************************************************************************** */ + // Test case 8.14 - See 34.229-1 clause 8.14 + function f_TC_8_14_IMS() runs on IMS_PTC + { + var REGISTER_Request v_RegisterReq; + var SUBSCRIBE_Request v_SubscribeReq; + var SipUrl v_ContactUrl; + var template (value) RegInfo_Registration_Type v_Registration; + + // @siclog "Step 1" siclog@ + f_IMS_CC_Preamble(IPCAN_SignallingOnly, IMS_NULL, IMS_Security); + f_IMS_CC_StartSignalling(IPCAN_InitialRegistration); + + f_IMS_TestBody_Set(true); + + // Steps 2. Register only the first IMPU + v_RegisterReq := f_IMS_Register_NonGIBA(); + v_SubscribeReq := f_IMS_Register_Subscribe(); + v_ContactUrl := f_MessageHeader_GetContactSipUrl(v_RegisterReq.msgHeader); + // @siclog "Step 2" siclog@ + v_Registration := f_XML_RegistrationInfo(v_RegisterReq, f_IMS_PTC_ImsInfo_GetURI(firstId), "a100", "980", active, registered); + f_IMS_Register_Notify(v_ContactUrl, v_SubscribeReq, f_XML_RegInfo(full, 0, {v_Registration})); + + // Steps 3 and 4. Registration of second IMPU + f_UT_IMS_Trigger2ndIMPU(MMI); + v_RegisterReq := f_IMS_Register_NonGIBA(); + v_SubscribeReq := f_IMS_Register_Subscribe(); + v_ContactUrl := f_MessageHeader_GetContactSipUrl(v_RegisterReq.msgHeader); + // @siclog "Step 3 -4" siclog@ + v_Registration := f_XML_RegistrationInfo(v_RegisterReq, f_IMS_PTC_ImsInfo_GetURI(secondId), "a102", "982", active, registered); + f_IMS_Register_Notify(v_ContactUrl, v_SubscribeReq, f_XML_RegInfo(partial, 1, {v_Registration})); + + // Steps 5 and 6. Registration of third IMPU + // @siclog "Step 5 - 6" siclog@ + f_UT_IMS_Trigger3rdIMPU(MMI); + v_RegisterReq := f_IMS_Register_NonGIBA(); + v_SubscribeReq := f_IMS_Register_Subscribe(); + v_ContactUrl := f_MessageHeader_GetContactSipUrl(v_RegisterReq.msgHeader); + + v_Registration := f_XML_RegistrationInfo(v_RegisterReq, f_IMS_PTC_ImsInfo_GetURI(thirdId), "a103", "983", active, registered); + f_IMS_Register_Notify(v_ContactUrl, v_SubscribeReq, f_XML_RegInfo(partial, 2, {v_Registration})); + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(IPCAN_InitialRegistration); + } + + + /****************************************************************************/ + /* + * @desc return Reginfo for NOTIFY message after REFRESH + * @param p_RegisterRequest + * @return template (value) Reginfo_Type + */ + function fl_TC_8_2_Notify_Refresh(REGISTER_Request p_RegisterRequest) runs on IMS_PTC return template (value) Reginfo_Type + { /* @sic R5-130750 sic@ */ + var CharStringList_Type v_PublicUserIdList := f_IMS_PTC_ImsInfo_GetAllIMPUs(); + var template (value) RegInfo_Registration_Type v_Registration1 := f_XML_RegistrationInfo(p_RegisterRequest, v_PublicUserIdList[0], "a100", "980", terminated, deactivated); + var template (value) RegInfo_Registration_Type v_Registration2 := f_XML_RegistrationInfo(p_RegisterRequest, px_IMS_AssociatedTelUri, "a101", "981", terminated, deactivated, -, -, true); + var template (value) RegInfo_Registration_Type v_Registration3 := f_XML_RegistrationInfo(p_RegisterRequest, v_PublicUserIdList[1], "a102", "982", terminated, deactivated); + + return f_XML_RegInfo(-, -, cs_RegistrationListOf3 (v_Registration1, v_Registration2, v_Registration3)); + } + + + function f_TC_8_15_IMS() runs on IMS_PTC + { + var REGISTER_Request v_RegisterReq; + var SUBSCRIBE_Request v_SubscribeReq; + var SipUrl v_ContactUrl; + var CharStringList_Type v_PublicUserIdList := f_IMS_PTC_ImsInfo_GetAllIMPUs(); + + f_IMS_CC_Preamble(IPCAN_SignallingOnly, IMS_NULL, IMS_Security); + f_IMS_CC_StartSignalling(IPCAN_InitialRegistration); + + // Initial conditions (generic test procedure in annex C.2) + // Steps: receive REGISTER, send 401, receive REGISTER, send 200 OK + v_RegisterReq := f_IMS_Register_NonGIBA(); + v_ContactUrl := f_MessageHeader_GetContactSipUrl(v_RegisterReq.msgHeader); + + // Steps: receive SUBSCRIBE, send 200 OK + v_SubscribeReq := f_IMS_Register_Subscribe(); + + // Steps: send NOTIFY, receive 200 OK + f_IMS_Register_Notify(v_ContactUrl, v_SubscribeReq, f_IMS_XmlMessageForNotify_Def(v_RegisterReq)); + + f_IMS_TestBody_Set(true); + + // Step 1 + // UT triggers UICC to perform REFRESH + f_UT_IMS_Refresh(MMI, px_IMS_HomeDomainName_Refreshed, px_IMS_Private_UserId_Refreshed, px_IMS_PublicUserIdentity1_Refreshed); + f_Delay(10.0); + + // Steps 2 to 3 + f_IMS_Register_Notify(v_ContactUrl, v_SubscribeReq, fl_TC_8_2_Notify_Refresh(v_RegisterReq), 2, cs_SubscriptionState_Terminated); + + // Step 4 consider new updated IMPU according to clause 8.15.5 + v_PublicUserIdList[0] := px_IMS_PublicUserIdentity1_Refreshed; + f_IMS_PTC_ImsInfo_Refresh(px_IMS_HomeDomainName_Refreshed, px_IMS_Private_UserId_Refreshed, v_PublicUserIdList); + + // Steps: receive REGISTER, send 401, receive REGISTER, send 200 OK + v_RegisterReq := f_IMS_Register_NonGIBA(); + // Steps: receive SUBSCRIBE, send 200 OK + f_IMS_Register_SubscribeNotify(v_RegisterReq); + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(IPCAN_InitialRegistration); + } + +} diff --git a/IMS_PART4_IWD_14wk37/IMS/9/IMS_CC_AuthenticationTestcases.ttcn b/IMS_PART4_IWD_14wk37/IMS/9/IMS_CC_AuthenticationTestcases.ttcn new file mode 100644 index 0000000..20261fd --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/9/IMS_CC_AuthenticationTestcases.ttcn @@ -0,0 +1,291 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-07 18:37:49 +0200 (Sun, 07 Sep 2014) $ +// $Rev: 12081 $ +/******************************************************************************/ + +module IMS_CC_AuthenticationTestcases { + + import from LibSip_Common all; + import from LibSip_SIPTypesAndValues all; + import from IP_ASP_TypeDefs all; + + import from IMS_Component all; + import from IMS_ASP_TypeDefs all; + import from IMS_ASP_Templates all; + import from IMS_CommonDefs all; + import from IMS_SIP_Templates all; + import from NAS_AuthenticationCommon all; + import from IMS_CommonFunctions all; + import from IMS_CommonTemplates all; + import from IMS_Procedures_Registration all; + + import from IMS_PTC_CoordMsg all; + import from IMS_CC_CommonFunctions all; + + + type record of SecurityClientParams_Type SecurityClientParamsList_Type; /* @status APPROVED (IMS) */ + + //---------------------------------------------------------------------------- + + template (present) Authorization cr_Authorization_9_1 := + { /* @status APPROVED (IMS) */ + fieldName := AUTHORIZATION_E, + body := { + { + digestResponse := { + cr_GenericParam_Common("response", cr_GenValue_None), + * + } + } + } + }; + + template (present) Authorization cr_Authorization_9_2(charstring p_Nonce, + charstring p_Opaque) := + { /* @status APPROVED (IMS) */ + fieldName := AUTHORIZATION_E, + body := { + { + digestResponse := { + cr_GenericParam("nonce", p_Nonce), + cr_GenericParam("opaque", p_Opaque), + cr_GenericParam("response", ?), + cr_GenericParam("auts", ?), + * + } + } + } + }; + + //---------------------------------------------------------------------------- + /* + * @desc generate an invalid NONCE + * @param p_AuthenticationError + * @return charstring + * @status APPROVED (IMS) + */ + function fl_GenerateInvalidNonce(AuthenticationError_Type p_AuthenticationError) return charstring + { + var Common_AuthenticationParams_Type v_AuthenticationParams; + + v_AuthenticationParams := f_IMS_AuthenticationInit(tsc_IMS_AuthRAND, p_AuthenticationError); + return f_Bitstring2Base64(v_AuthenticationParams.RandValue & v_AuthenticationParams.AUTN); + } + + /* + * @desc check that spi-c, spi-s and port-c are different than in previous REGISTER requests + * @param p_ListOfPreviousSecurityClientParams + * @param p_RegisterRequest + * @return SecurityClientParamsList_Type + * @status APPROVED (IMS) + */ + function fl_CheckSecurityClientParams(SecurityClientParamsList_Type p_ListOfPreviousSecurityClientParams, + REGISTER_Request p_RegisterRequest) runs on IMS_PTC return SecurityClientParamsList_Type + { + var SecurityClientParams_Type v_CurrentSecurityClientParams := f_IMS_Register_GetSecurityClientParams(p_RegisterRequest); + var SecurityClientParamsList_Type v_ListOfPreviousSecurityClientParams := p_ListOfPreviousSecurityClientParams; + var integer v_NoOfPreviousSecurityClientParams := lengthof(v_ListOfPreviousSecurityClientParams); + var SecurityClientParams_Type v_SecurityClientParams; + var integer i; + + for (i:=0; i < v_NoOfPreviousSecurityClientParams; i:=i+1) { + v_SecurityClientParams := v_ListOfPreviousSecurityClientParams[i]; + if (v_SecurityClientParams.SPI_us == v_CurrentSecurityClientParams.SPI_us or + v_SecurityClientParams.SPI_uc == v_CurrentSecurityClientParams.SPI_uc or + v_SecurityClientParams.Port_uc == v_CurrentSecurityClientParams.Port_uc) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "spi-c, spi-s and port-c shall be different than in previous REGISTER request"); + } + } + v_ListOfPreviousSecurityClientParams[v_NoOfPreviousSecurityClientParams] := v_CurrentSecurityClientParams; + return v_ListOfPreviousSecurityClientParams; + } + + /* + * @desc receive REGISTER with a specific Authorization (given by p_Authorization) + * @param p_CallId + * @param p_Authorization + * @return IMS_DATA_REQ + * @status APPROVED (IMS) + */ + function f_IMS_REGISTER_RequestWithSpecificAuth(charstring p_CallId, + template (present) Authorization p_Authorization) runs on IMS_PTC return IMS_DATA_REQ + { + var IMS_DATA_REQ v_IMS_DATA_REQ; + var MessageHeader v_MessageHeader; + var InternetProtocol_Type v_Protocol; + var template (present) MessageHeader v_MessageHeader_Template; + var integer v_CseqValue := f_IMS_PTC_ImsInfo_CseqIncr(register); + var IP_AddrInfo_Type v_UE_Address := f_IMS_PTC_UE_Address_Get(); + var template (present) SipUrl v_SipUrl := cr_SipUri_HostPort(f_IMS_PTC_ImsInfo_GetHomeDomainName()); + var boolean v_CheckAuthorization; + var boolean v_Match := false; + + IMS_Server.receive(car_IMS_Register_Request(cr_REGISTER_Request(v_SipUrl))) -> value v_IMS_DATA_REQ; // receive any REGISTER + v_MessageHeader := v_IMS_DATA_REQ.Request.Register.msgHeader; + v_Protocol := v_IMS_DATA_REQ.RoutingInfo.Protocol; + + v_MessageHeader_Template := f_IMS_RegisterRequest_MessageHeaderRX_Initial(v_Protocol); // @sic R5s130369 sic@ + // test case specific message contents: + v_MessageHeader_Template.cSeq := cr_CseqDef(v_CseqValue, "REGISTER"); + v_MessageHeader_Template.callId := cr_CallId(p_CallId); + v_MessageHeader_Template.securityVerify := omit; + v_MessageHeader_Template.authorization := p_Authorization; + + v_Match := match(v_MessageHeader, v_MessageHeader_Template); + if (not v_Match) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "invalid REGISTER Request"); + } + else { + v_CheckAuthorization := false; // Authorization needs to be checked separately + f_IMS_A_1_1_MessageHeader_CommonChecks(v_MessageHeader, v_Protocol, -, v_UE_Address, -, v_CheckAuthorization); + f_IMS_A_1_1_MessageHeader_CheckPublicUserIdentity(v_MessageHeader); // check 'To' and 'From' field (needed for initial registration only) + } + return v_IMS_DATA_REQ; + } + + //---------------------------------------------------------------------------- + /* + * @desc default behaviour to ignore additional Registration Requests at the end of 9.1 (see 34.229-1 cl. 9.1.4) + * @status APPROVED (IMS) + */ + altstep a_IgnoreFurtherRegistration() runs on IMS_PTC + { + [] IMS_Server.receive(car_IMS_Register_Request(?)) { + repeat; // @sic R5s140136 sic@ + } + } + + /****************************************************************************/ + /* + * @desc REFERENCE TS 34.229-1 clause 9.1 + * @status APPROVED (IMS) + */ + function f_TC_9_1_IMS() runs on IMS_PTC + { + var charstring v_InvalidNonce := fl_GenerateInvalidNonce(macError); // Nonce with invalid MAC + var IMS_DATA_REQ v_IMS_DATA_REQ; + var template (value) IMS_RoutingInfo_Type v_RoutingInfo_DL; + var REGISTER_Request v_RegisterReq; + var charstring v_CallId; + var integer i; + var SecurityClientParamsList_Type v_SecurityClientParamsList; + var template CommaParam_List v_DigestResponseContainingAuts := {cr_GenericParam("auts", ?), *}; + var default v_Default; + + f_IMS_CC_Preamble(IPCAN_SignallingOnly, IMS_NULL, IMS_Security); + f_IMS_CC_StartSignalling(IPCAN_InitialRegistration); + + f_IMS_TestBody_Set(true); + + // Step 1 + // @siclog "Step 1" siclog@ + v_IMS_DATA_REQ := f_IMS_REGISTER_InitialRequest(); + v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo); + v_RegisterReq := v_IMS_DATA_REQ.Request.Register; + v_CallId := v_RegisterReq.msgHeader.callId.callid; + + f_IMS_Register_SecurityInit(v_RegisterReq); // @sic R5s120947 sic@ + v_SecurityClientParamsList[0] := f_IMS_Register_GetSecurityClientParams(v_RegisterReq); /* @sic R5-144754 sic@ */ + + for (i:=0; i<2; i:=i+1) { + // Step 2/4 + // @siclog "Step 2/4" siclog@ + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine401, f_IMS_RegisterResponse_401_MessageHeaderTX(v_RegisterReq, v_InvalidNonce)))); + + // Step 3/5 + // @siclog "Step 3/5" siclog@ + v_IMS_DATA_REQ := f_IMS_REGISTER_RequestWithSpecificAuth(v_CallId, cr_Authorization_9_1); + v_RegisterReq := v_IMS_DATA_REQ.Request.Register; + v_SecurityClientParamsList := fl_CheckSecurityClientParams(v_SecurityClientParamsList, v_RegisterReq); /* @sic R5-144754 sic@ */ + + // Check that digestResponse does not contain (non-empty) "auts" parameter + if (match(v_RegisterReq.msgHeader.authorization.body[0].digestResponse, v_DigestResponseContainingAuts)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, ""); + } else { + f_IMS_PreliminaryPass(__FILE__, __LINE__, ""); + } + } + + v_Default := activate(a_IgnoreFurtherRegistration()); // acc. to note between step 5 and 6 (34.229-1 cl. 9.1.4) + + // Step 6 + // @siclog "Step 6" siclog@ + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine403, f_IMS_RegisterResponse_403_MessageHeaderTX(v_RegisterReq)))); + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(IPCAN_InitialRegistration, false); // @sic R5s140136, R5s140176: no de-registration for this test case sic@ + + deactivate(v_Default); + } + + /****************************************************************************/ + /* + * @desc REFERENCE TS 34.229-1 clause 9.2 + * @status APPROVED (IMS) + */ + function f_TC_9_2_IMS() runs on IMS_PTC + { + var charstring v_InvalidNonce := fl_GenerateInvalidNonce(sqnFailure); + var IMS_DATA_REQ v_IMS_DATA_REQ; + var Common_AuthenticationParams_Type v_AuthenticationParams; + var SecurityClientParamsList_Type v_SecurityClientParamsList; + var template (value) IMS_RoutingInfo_Type v_RoutingInfo_DL; + var REGISTER_Request v_RegisterReq; + var charstring v_CallId; + + f_IMS_CC_Preamble(IPCAN_SignallingOnly, IMS_NULL, IMS_Security); + f_IMS_CC_StartSignalling(IPCAN_InitialRegistration); + + f_IMS_TestBody_Set(true); + + // Step 1 + // @siclog "Step 1" siclog@ + v_IMS_DATA_REQ := f_IMS_REGISTER_InitialRequest(); + v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo); + v_RegisterReq := v_IMS_DATA_REQ.Request.Register; + v_CallId := v_RegisterReq.msgHeader.callId.callid; + v_SecurityClientParamsList[0] := f_IMS_Register_GetSecurityClientParams(v_RegisterReq); /* @sic R5-144754 sic@ */ + + // Step 2 + // @siclog "Step 2" siclog@ + /* f_IMS_Register_SecurityInit(v_RegisterReq); @sic R5s130264 Change 2.1: security needs to be initialised just before (first) 401 response is sent sic@ */ + v_AuthenticationParams := f_IMS_AuthenticationInit(tsc_IMS_AuthRAND); + f_IMS_Register_SecurityInitPortsAndSPIs(v_RegisterReq, v_AuthenticationParams); /* @sic R5s131004 - MCC160 implementation sic@ + security needs to be initialised at the IMS PTC otherwise f_IMS_PTC_BuildSecurityServerParam will cause a runtime errror */ + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine401, f_IMS_RegisterResponse_401_MessageHeaderTX(v_RegisterReq, v_InvalidNonce)))); + + // Step 3 + // @siclog "Step 3" siclog@ + v_IMS_DATA_REQ := f_IMS_REGISTER_RequestWithSpecificAuth(v_CallId, cr_Authorization_9_2(v_InvalidNonce, tsc_IMS_Opaque)); + v_RegisterReq := v_IMS_DATA_REQ.Request.Register; + v_SecurityClientParamsList := fl_CheckSecurityClientParams(v_SecurityClientParamsList, v_RegisterReq); /* @sic R5-144754 sic@ */ + + // Step 4 + // @siclog "Step 4" siclog@ + f_IMS_Register_SecurityInit(v_RegisterReq); /* @sic R5s130573: IPSec layer needs to be updated acc. to new Security client header sent by the UE sic@ */ + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine401, f_IMS_RegisterResponse_401_MessageHeaderTX(v_RegisterReq)))); + + // Step 5 + // @siclog "Step 5" siclog@ + v_IMS_DATA_REQ := f_IMS_REGISTER_SubsequentRequest(); + v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo); /* @sic R5s130264 Change 2.2: security has changed to "protected" now sic@ */ + v_RegisterReq := v_IMS_DATA_REQ.Request.Register; + + // Step 6 + // @siclog "Step 6" siclog@ + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine200, f_IMS_RegisterResponse_200_MessageHeaderTX(v_RegisterReq)))); + + f_IMS_Register_SubscribeNotify(v_RegisterReq); + + f_IMS_TestBody_Set(false); + + f_IMS_CC_Postamble(IPCAN_InitialRegistration); + } +} diff --git a/IMS_PART4_IWD_14wk37/IMS/Common/IMS_CC_CommonFunctions.ttcn b/IMS_PART4_IWD_14wk37/IMS/Common/IMS_CC_CommonFunctions.ttcn new file mode 100644 index 0000000..8e220b1 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/Common/IMS_CC_CommonFunctions.ttcn @@ -0,0 +1,278 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-10 18:07:49 +0200 (Wed, 10 Sep 2014) $ +// $Rev: 12192 $ +/******************************************************************************/ + +module IMS_CC_CommonFunctions { + + import from CommonDefs all; + import from IMS_Component all; + import from IMS_CC_IPCAN_Coordination all; + import from IMS_Procedures_Registration all; + import from IMS_Procedures_CallControl all; + import from IMS_Procedures_Common all; + import from IMS_PTC_CoordMsg all; + import from UpperTesterFunctions all; + import from IMS_CommonParameters all; + import from Parameters all; + import from IMS_CommonDefs all; + import from LibSip_SIPTypesAndValues all; + + type enumerated CallType_Type {normalCall, conferenceCall}; /* @status APPROVED (IMS) */ + + //============================================================================ + // verdict assignment + //---------------------------------------------------------------------------- + /* + * @desc Set verdict to pass and output a log line + * @param p_FileName + * @param p_LineNo + * @param p_Msg + * @status APPROVED (IMS_34229) + */ + function f_IMS_CC_SetPreliminaryPass(charstring p_FileName, + integer p_LineNo, + charstring p_Msg) + { + // log("Pass at " & p_FileName & ":" & int2str(p_LineNo) & " - " & p_Msg); + setverdict(pass, "PASS at " & p_FileName & ":" & int2str(p_LineNo) & " - " & p_Msg); + + } + //---------------------------------------------------------------------------- + /* + * @desc Set verdict to inconc and output a log line + * @param p_FileName + * @param p_LineNo + * @param p_Msg (default value: "") + * @status APPROVED (IMS_34229) + */ + function f_IMS_CC_SetVerdictInconc(charstring p_FileName, + integer p_LineNo, + charstring p_Msg := "") + { + // log("Inconc at " & p_FileName & ":" & int2str(p_LineNo) & " - " & p_Msg); + setverdict(inconc, "INCONC at " & p_FileName & ":" & int2str(p_LineNo) & " - " & p_Msg); + self.kill; + } + //---------------------------------------------------------------------------- + /* + * @desc Set verdict to fail and output a log line + */ + function f_IMS_CC_SetVerdictFail(charstring p_FileName, + integer p_LineNo, + charstring p_Msg) + { + // log("Fail at " & p_FileName & ":" & int2str(p_LineNo) & " - " & p_Msg); + setverdict(fail, "FAIL at " & p_FileName & ":" & int2str(p_LineNo) & " - " & p_Msg); + } + + //============================================================================ + // postamble / preamble / wrapper functions + //---------------------------------------------------------------------------- + + type enumerated IMS_InitState_Type {IMS_NULL, IMS_REGISTERED}; /* @status APPROVED (IMS) */ + + /* + * @desc common preamble for IMS test cases + * @param p_TestConfiguration + * @param p_InitState + * @param p_SecurityScheme (default value: omit) + * @param p_SigCompIsActive (default value: false) + * @status APPROVED (IMS) + */ + function f_IMS_CC_Preamble(IMS_TestConfiguration_Type p_TestConfiguration, + IMS_InitState_Type p_InitState, + template (omit) IMS_SecurityScheme_Type p_SecurityScheme := omit, + boolean p_SigCompIsActive := false) runs on IMS_PTC + { /* p_TestProcedure .. major test procedure of the test case (=> number/type of DRBs to be configured at SS + * p_InitState .. IDLE => intitial registration including IMS registration is done; RRC connection is released + * NULL => intitial registration is started at the IPCAN but IMS registration shall be controled by the test case */ + /* @sic R5s130133 additional changes: XRES length shall be queried by the IMS PTC i.e. is not returned by f_IMS_IPCAN_StartProcedure_Preamble anymore sic@ */ + /* @sic R5s130347: local GuardTimer sic@ */ + /* @sic R5s130756 additional changes: p_IsGIBA replaced by p_SecurityScheme sic@ */ + + timer t_GuardTimer := tsc_GuardTimePreamble; + + t_GuardTimer.start; + + f_IMS_PTC_Init(PDN_1, -, p_SecurityScheme); /* local initialisation */ + f_IMS_IPCAN_Init(IPCAN, p_TestConfiguration); /* initialisation of IPCAN: + - RAN type is selected by IPCAN PTC acc. to the PIXITs + - cell is created acc. to the RAN type and PIXITs + - Test procedure is handed over as for e.g. EUTRA we need to know in advance which DRBs need to be (pre-)configured at the SS + p_TestcaseName is present If the test case requires a specific IPCAN initialisation e.g. for cell barring */ + if (p_InitState == IMS_REGISTERED) { + f_IMS_IPCAN_StartProcedure(IPCAN, IPCAN_InitialRegistration); + f_IMS_Registration(-, p_SigCompIsActive); + f_IMS_CC_ReleaseConnection(IPCAN_InitialRegistration); + } + + t_GuardTimer.stop; + } + + //---------------------------------------------------------------------------- + /* + * @desc trigger IPCAN to start signalling given for given test procedure + * @param p_TestProcedure + * @status APPROVED (IMS) + */ + function f_IMS_CC_StartSignalling(IMS_TestProcedure_Type p_TestProcedure) runs on IMS_PTC + { /* @sic R5s130133 additional changes: XRES length shall be queried by the IMS PTC i.e. is not returned by f_IMS_IPCAN_StartProcedure_Preamble anymore sic@ */ + + select (p_TestProcedure) { + case (IPCAN_InitialRegistration, IPCAN_MO_IMS_Signalling, IPCAN_XCAP_Signalling) { + f_IMS_IPCAN_StartProcedure(IPCAN, p_TestProcedure); + } + case (IPCAN_MT_IMS_Signalling) { + f_IMS_IPCAN_StartProcedure(IPCAN, p_TestProcedure); + f_IMS_IPCAN_WaitForTrigger(IPCAN); // wait for RRC connection to be established @sic R5s130183 change 3 sic@ + } + case else { + FatalError(__FILE__, __LINE__, ""); + } + } + } + + /* + * @desc Start MO, MT or emergency call (interworking with IPCAN, MMI) + * @param p_TestProcedure + * @param p_SpeechAndVideoCallUri (default value: px_IMS_CalleeUri) + * @param p_CallType (default value: omit) + * @status APPROVED (IMS) + */ + function f_IMS_CC_StartCall(IMS_TestProcedure_Type p_TestProcedure, + charstring p_SpeechAndVideoCallUri := px_IMS_CalleeUri, + CallType_Type p_CallType := normalCall) runs on IMS_PTC + { /* @sic new parameters p_SpeechAndVideoCallUri and p_CallType to support conference calls sic@ */ + f_IMS_IPCAN_StartProcedure(IPCAN, p_TestProcedure); + + select (p_TestProcedure) { + case (IPCAN_MO_SpeechCall) { + select (p_CallType) { + case (normalCall) { + f_UT_RequestIMSCall(MMI, p_SpeechAndVideoCallUri); // @sic R5s130333, R5-134070 sic@ + } + case (conferenceCall) { + f_UT_CallMPTY(MMI); + } + } + } + case (IPCAN_MO_VideoCall) { + f_UT_RequestIMSVideoCall(MMI, p_SpeechAndVideoCallUri); // @sic R5-134070 sic@ + } + case (IPCAN_MT_SpeechCall, IPCAN_MT_VideoCall) { + f_IMS_IPCAN_WaitForTrigger(IPCAN); // wait for RRC connection to be established + } + case (IPCAN_EmergencyCall_NormalService) { + f_UT_RequestIMSEmergencyCall(MMI, px_EmergencyCallNumber); // @sic R5-134070 sic@ + } + case else { + FatalError(__FILE__, __LINE__, ""); + } + } + } + + /* + * @desc send trigger to IPCAN to abort the ongoing call establishment + * (e.g. when IPCAN is waiting for trigger to continue with bearer establishment but that shall be aborted) + * @status APPROVED (IMS) + */ + function f_IMS_CC_AbortCall() runs on IMS_PTC + { + f_IMS_IPCAN_SendCoOrdMsg(IPCAN, cms_IMS_IPCAN_Abort); + } + + /* + * @desc trigger activation of dedicated bearer at the IPCAN PTC + * @param p_TestProcedure + * @status APPROVED (IMS) + */ + function f_IMS_CC_TriggerDedicatedBearerActivation(IMS_TestProcedure_Type p_TestProcedure) runs on IMS_PTC + { + select (p_TestProcedure) { + case (IPCAN_MO_SpeechCall, IPCAN_MO_VideoCall) { + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // trigger IPCAN to continue with activation of secondary PDP context or dedicated EPS bearer + } + case (IPCAN_MT_SpeechCall, IPCAN_MT_VideoCall) { + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // trigger IPCAN to continue with activation of secondary PDP context or dedicated EPS bearer + f_IMS_IPCAN_WaitForTrigger(IPCAN); // wait for completion of RRC/NAS signalling + } + case else { + FatalError(__FILE__, __LINE__, ""); + } + } + } + + //---------------------------------------------------------------------------- + /* + * @desc Release RRC connection + * @param p_TestProcedure + * @status APPROVED (IMS) + */ + function f_IMS_CC_ReleaseConnection(IMS_TestProcedure_Type p_TestProcedure) runs on IMS_PTC + { + select (p_TestProcedure) { + case (IPCAN_InitialRegistration) { /* @sic R5s140219 - MCC160 implementation: wait for possible TCP close of unprotected connection but don't close any further TCP connection sic@ */ + f_IMS_TCP_CloseHandling(justWait); + } + case else { + f_Delay(2.0); /* @sic R5s140779: delay to ensure that latest DL SIP message (if any) is sent out before releasing the RRC connection sic@ */ + } + } + f_IMS_IPCAN_EndProcedure(IPCAN, p_TestProcedure); + } + + //---------------------------------------------------------------------------- + /* + * @desc common postamble for IMS test cases + * @param p_TestProcedure (default value: omit) + * @param p_WaitForDeRegistration (default value: true) + * @status APPROVED (IMS) + */ + function f_IMS_CC_Postamble(template (omit) IMS_TestProcedure_Type p_TestProcedure := omit, + boolean p_WaitForDeRegistration := true) runs on IMS_PTC + { + var boolean v_WaitForDeRegistration := pc_SwitchOnOff and p_WaitForDeRegistration; + + if (isvalue(p_TestProcedure)) { + f_IMS_CC_ReleaseConnection(valueof(p_TestProcedure)); + } + IPCAN.send(cms_IMS_IPCAN_ReleaseReq); + + f_IMS_IpcanReleaseWithOptionalDeregistration(v_WaitForDeRegistration); /* @sic R5s140346 - MCC160 implementation: new function f_IMS_CC_IpcanReleaseWithOptionalDeregistrationOr sic@ */ + + } + + //---------------------------------------------------------------------------- + /* + * @desc common call establishement for speech call + * @return INVITE_Request + * @status APPROVED (IMS) + */ + function f_IMS_CC_MO_SpeechCall() runs on IMS_PTC return INVITE_Request + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: IMS_InviteRequestWithSdp_Type instead of IMS_DATA_REQ */ + var MessageHeader v_MessageHeader_Response183; + + // Step 1 + f_IMS_CC_StartCall(IPCAN_MO_SpeechCall); + + // Step 2 + v_InviteRequestWithSdp := f_IMS_MOCallSetup_AnnexC21_Step2_A4(); + + // Step 3, 4 + v_MessageHeader_Response183 := f_IMS_MOCallSetup_AnnexC21_Step3_4(v_InviteRequestWithSdp); /* @sic R5w140112 sic@ */ + + // See TS. 36.508 EUTRA/EPS signalling for IMS MO speech call Table 4.5A.6.3-1 Step 9-11 + f_IMS_CC_TriggerDedicatedBearerActivation(IPCAN_MO_SpeechCall); // trigger IPCAN to continue with activation of secondary PDP context or dedicated EPS bearer + + f_IMS_MOCallSetup_AnnexC21_Steps5_13(v_InviteRequestWithSdp, v_MessageHeader_Response183); + return v_InviteRequestWithSdp.Invite; + } +} diff --git a/IMS_PART4_IWD_14wk37/IMS/Common/IMS_CC_Component.ttcn b/IMS_PART4_IWD_14wk37/IMS/Common/IMS_CC_Component.ttcn new file mode 100644 index 0000000..f0b213a --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/Common/IMS_CC_Component.ttcn @@ -0,0 +1,21 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-02-01 22:22:56 +0100 (Sat, 01 Feb 2014) $ +// $Rev: 10474 $ +/******************************************************************************/ + +module IMS_CC_Component { + import from IMS_Component all; + import from HTTP_PTC_CoordMsg all; + + type component IMS_XCAP_PTC extends IMS_PTC { /* @status APPROVED (IMS) */ + // ports for XCAP (used by IMS test suite) + port IMS_XCAP_CO_ORD_PORT XCAP; + }; + +} diff --git a/IMS_PART4_IWD_14wk37/IMS/Common/IMS_CC_IPCAN_Coordination.ttcn b/IMS_PART4_IWD_14wk37/IMS/Common/IMS_CC_IPCAN_Coordination.ttcn new file mode 100644 index 0000000..16588ba --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/Common/IMS_CC_IPCAN_Coordination.ttcn @@ -0,0 +1,147 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 22:08:20 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12181 $ +/******************************************************************************/ + +module IMS_CC_IPCAN_Coordination { + + import from NAS_CommonTypeDefs all; + import from IMS_PTC_CoordMsg all; + import from IMS_CC_PCO_Handling all; + import from TestcaseProperties all; + + //============================================================================ + + template (value) IMS_IPCAN_Coordination_MSG cms_IMS_IPCAN_InitReq(IMS_TestConfiguration_Type p_TestConfiguration) := cms_IMS_IPCAN_Command(IPCAN_INIT, p_TestConfiguration); /* @status APPROVED (IMS) */ + template (value) IMS_IPCAN_Coordination_MSG cms_IMS_IPCAN_ConfigReq(IMS_CellConfiguration_Type p_CellConfiguration) := cms_IMS_IPCAN_Command(IPCAN_CONFIG, -, -, p_CellConfiguration); /* @status APPROVED (IMS) */ + template (value) IMS_IPCAN_Coordination_MSG cms_IMS_IPCAN_StartProcedureReq(IMS_TestProcedure_Type p_TestProcedure) := cms_IMS_IPCAN_Command(IPCAN_STARTPROCEDURE, -, p_TestProcedure); /* @status APPROVED (IMS) */ + template (value) IMS_IPCAN_Coordination_MSG cms_IMS_IPCAN_EndProcedureReq(IMS_TestProcedure_Type p_TestProcedure) := cms_IMS_IPCAN_Command(IPCAN_ENDPROCEDURE, -, p_TestProcedure); /* @status APPROVED (IMS) */ + template (value) IMS_IPCAN_Coordination_MSG cms_IMS_IPCAN_ReleaseReq := cms_IMS_IPCAN_Command(IPCAN_RELEASE); /* @status APPROVED (IMS) */ + + //---------------------------------------------------------------------------- + + template (value) IMS_IPCAN_Coordination_MSG cms_IMS_ProtocolConfigurationOptions(template (value) NAS_ProtocolConfigOptions_Type p_ProtocolConfigurationOptions) := + { + ProtocolConfigOptions := p_ProtocolConfigurationOptions + }; + + template (present) IMS_IPCAN_Coordination_MSG cmr_IMS_ProtocolConfigurationOptions := + { + ProtocolConfigOptions := ? + }; + + //============================================================================ + /* + * @desc Initialise IPCAN + * @param p_Port + * @param p_TestConfiguration + * @status APPROVED (IMS) + */ + function f_IMS_IPCAN_Init(IMS_IPCAN_CO_ORD_PORT p_Port, + IMS_TestConfiguration_Type p_TestConfiguration) + { /* p_TestConfiguration specifies the DRBs needed by the test cases so that IPCAN can do pre-configuration of DRBs accordingly */ + p_Port.send(cms_IMS_IPCAN_InitReq(p_TestConfiguration)); + alt { + [] p_Port.receive(cmr_IPCAN_IMS_Response) {} + [] a_IMS_IPCAN_Default(p_Port) {} + } + } + + //---------------------------------------------------------------------------- + /* + * @desc trigger IPCAN to modify e.g. SIBs + * @param p_Port + * @param p_CellConfiguration + * @status APPROVED (IMS) + */ + function f_IMS_IPCAN_ModifyConfig(IMS_IPCAN_CO_ORD_PORT p_Port, + IMS_CellConfiguration_Type p_CellConfiguration) + { + p_Port.send(cms_IMS_IPCAN_ConfigReq(p_CellConfiguration)); + f_IMS_IPCAN_WaitForTrigger(p_Port); + } + + //---------------------------------------------------------------------------- + /* + * @desc trigger start of test procedure at the IPCAN PTC (e.g. InitialRegistration, MO Speech Call, etc.) + * @param p_Port + * @param p_TestProcedure + * @status APPROVED (IMS) + */ + function f_IMS_IPCAN_StartProcedure(IMS_IPCAN_CO_ORD_PORT p_Port, + IMS_TestProcedure_Type p_TestProcedure) + { + p_Port.send(cms_IMS_IPCAN_StartProcedureReq(p_TestProcedure)); + } + + //---------------------------------------------------------------------------- + /* + * @desc terminate a (current) test procedure + * @param p_Port + * @param p_TestProcedure + * @status APPROVED (IMS) + */ + function f_IMS_IPCAN_EndProcedure(IMS_IPCAN_CO_ORD_PORT p_Port, + IMS_TestProcedure_Type p_TestProcedure) + { + p_Port.send(cms_IMS_IPCAN_EndProcedureReq(p_TestProcedure)); + f_IMS_IPCAN_WaitForTrigger(p_Port); + } + + //============================================================================ + /* + * @desc Wait for PCOs from IMS/IPCAN PTC + * @param p_Port + * @return NAS_ProtocolConfigOptions_Type + */ + function f_IMS_IPCAN_WaitForPCOs(IMS_IPCAN_CO_ORD_PORT p_Port) return NAS_ProtocolConfigOptions_Type + { + var IMS_IPCAN_Coordination_MSG v_CoordinationMsg; + + alt { + [] p_Port.receive(cmr_IMS_ProtocolConfigurationOptions) -> value v_CoordinationMsg {} + [] a_IMS_IPCAN_Default(p_Port) {} + } + return v_CoordinationMsg.ProtocolConfigOptions; + } + + /* + * @desc Send PCOs to the other side (IPCAN PTC) + * @param p_Port + * @param p_ProtocolConfigOptions + */ + function f_IMS_IPCAN_SendPCOs(IMS_IPCAN_CO_ORD_PORT p_Port, + template (value) NAS_ProtocolConfigOptions_Type p_ProtocolConfigOptions) + { + f_IMS_IPCAN_SendCoOrdMsg(p_Port, cms_IMS_ProtocolConfigurationOptions(p_ProtocolConfigOptions)); + } + + /* + * @desc get PCOs either from the IMS PTC or as sent by the UE + * @param p_Port + * @param p_ProtocolConfigOptions + * @return NAS_ProtocolConfigOptions_Type + */ + function f_IPCAN_GetPCOs(IMS_IPCAN_CO_ORD_PORT p_Port, + template (omit) NAS_ProtocolConfigOptions_Type p_ProtocolConfigOptions) return NAS_ProtocolConfigOptions_Type + { + var NAS_ProtocolConfigOptions_Type v_ProtocolConfigOptions := {}; + + if (isvalue(p_ProtocolConfigOptions)) { + v_ProtocolConfigOptions := valueof(p_ProtocolConfigOptions); + } + if (f_GetTestcaseAttrib_SpecificPCO(testcasename())) { + f_IMS_IPCAN_SendPCOs(p_Port, v_ProtocolConfigOptions); + v_ProtocolConfigOptions := f_IMS_IPCAN_WaitForPCOs(p_Port); + } else { + v_ProtocolConfigOptions := f_ProtocolConfigOption_GetResponse(v_ProtocolConfigOptions); + } + return v_ProtocolConfigOptions; + } +} diff --git a/IMS_PART4_IWD_14wk37/IMS/Common/IMS_CC_PCO_Handling.ttcn b/IMS_PART4_IWD_14wk37/IMS/Common/IMS_CC_PCO_Handling.ttcn new file mode 100644 index 0000000..4e848e4 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/Common/IMS_CC_PCO_Handling.ttcn @@ -0,0 +1,176 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-08 15:09:28 +0200 (Mon, 08 Sep 2014) $ +// $Rev: 12107 $ +/******************************************************************************/ + +module IMS_CC_PCO_Handling { + import from CommonDefs all; + import from CommonIP all; + import from NAS_CommonTypeDefs all; + import from IMS_CC_Parameters all; + + const O2_Type tsc_ConfigOptions_P_CSCF_IPv6_Request := '0001'O; + const O2_Type tsc_ConfigOptions_IM_CN_SubsystemFlag := '0002'O; + const O2_Type tsc_ConfigOptions_P_CSCF_IPv4_Request := '000C'O; + + //---------------------------------------------------------------------------- + + template (value) ProtocolContainer cs_ConfigOpt(O2_Type p_ContainerId, + integer p_ContainerLength, + template (omit) octetstring p_Content) := + { /* @status APPROVED (IMS) */ + protocolID := p_ContainerId, + protocolLength := int2oct(p_ContainerLength, 1), + content := p_Content + }; + + //============================================================================ + + function f_ProtocolConfigOptions_Check(NAS_ProtocolConfigOptions_Type p_ConfigOptions, + O2_Type p_ContainerId) return boolean + { + var integer i; + + for (i := 0; i < lengthof(p_ConfigOptions); i := i + 1) { + if (p_ConfigOptions[i].protocolID == p_ContainerId) { + return true; + } + } + return false; + } + + //---------------------------------------------------------------------------- + + function fl_GetIPv4AddrFromPIXIT(charstring p_IPAddr) return template (omit) octetstring + { // !!!!!!!!! workaround as long as there is only one set of PIXITs for either IPv4 or IPv6 addresses !!!!!!!!!!! + if (f_IpAddressIsIPv4(p_IPAddr)) { + return f_Convert_IPv4Addr2OctString(p_IPAddr); + } + return omit; + } + + function f_GetIPv6AddrFromPIXIT(charstring p_IPAddr) return template (omit) octetstring + { // !!!!!!!!! workaround as long as there is only one set of PIXITs for either IPv4 or IPv6 addresses !!!!!!!!!!! + if (not f_IpAddressIsIPv4(p_IPAddr)) { + return f_Convert_IPv6Addr2OctString(p_IPAddr); + } + return omit; + } + + //---------------------------------------------------------------------------- + + function fl_ProtocolConfigOption_Get(O2_Type p_ContainerId) return template (omit) ProtocolContainer + { /* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * "old" implementation: + * - there are only PIXITs for either IPv4 or IPv6 addresses but quite likely a real network will support both + * => there seems to be no reason why to embed an IPv4 address into an IPv6 address anymore + * - since (e.g.) rel-5 24.008 Table 10.5.154 has been enhanced and there are options for both IPv4 and IPv6 addresses + * => some statements in 23.981 clause 5.2.1 seem to be not valid anymore => the same is in 34.229-1 cl. 7.1.2 + * => we need to have separate sets of PIXIT parameters for IPv4 and IPv6 and serve the UE for IPv4 and IPv6 + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */ + + var O2_Type v_ContainerId; + var integer v_ContentLen := 0; + var template (omit) octetstring v_Content := omit; + + select (p_ContainerId) { // container identifier acc. to 24.008 Table 10.5.154 + case ('0001'O) { // P-CSCF IPv6 address + v_ContainerId := '0001'O; + v_Content := f_GetIPv6AddrFromPIXIT(px_P_CSCF_IPAddr); + if (not isvalue(v_Content)) { + return omit; + } + } + case ('0002'O) { // IM CN Subsystem Signalling Flag, reply with an empty container + v_ContainerId := '0002'O; + } + case ('0003'O) { // DNS Server IPv6 Address + v_ContainerId := '0003'O; + v_Content := f_GetIPv6AddrFromPIXIT(px_DNSServer_IPAddr); + if (not isvalue(v_Content)) { + return omit; + } + } + case ('000C'O) { // P-CSCF IPv4 address + v_ContainerId := '000C'O; + v_Content := fl_GetIPv4AddrFromPIXIT(px_P_CSCF_IPAddr); + if (not isvalue(v_Content)) { + return omit; + } + } + case ('000D'O) { // DNS Server IPv4 Address + v_ContainerId := '000D'O; + v_Content := fl_GetIPv4AddrFromPIXIT(px_DNSServer_IPAddr); + if (not isvalue(v_Content)) { + return omit; + } + } + case else { + // Other containerIDs not supported + return omit; + } + } + if (isvalue(v_Content)) { + v_ContentLen := lengthof(v_Content); + } + return cs_ConfigOpt(v_ContainerId, v_ContentLen, v_Content); + } + + //---------------------------------------------------------------------------- + /* + * @desc Evaluate PCOs sent by the UE + * @param p_ConfigOptionsRX + * @return NAS_ProtocolConfigOptions_Type + * @status APPROVED (IMS) + */ + function f_ProtocolConfigOption_GetResponse(NAS_ProtocolConfigOptions_Type p_ConfigOptionsRX) return NAS_ProtocolConfigOptions_Type + { + var NAS_ProtocolConfigOptions_Type v_ConfigOptListTX := {}; + var template (omit) ProtocolContainer v_ConfigOpt; + var integer i; + var integer k := 0; + + for (i := 0; i < lengthof(p_ConfigOptionsRX); i := i + 1) { + v_ConfigOpt := fl_ProtocolConfigOption_Get(p_ConfigOptionsRX[i].protocolID); + if (isvalue(v_ConfigOpt)) { + v_ConfigOptListTX[k] := valueof(v_ConfigOpt); + k := k + 1; + } + } + return v_ConfigOptListTX; + } + + //---------------------------------------------------------------------------- + + function f_ProtocolConfigOption_Remove(NAS_ProtocolConfigOptions_Type p_ConfigOptList, + O2_Type p_ContainerId) return NAS_ProtocolConfigOptions_Type + { + var NAS_ProtocolConfigOptions_Type v_ConfigOptList := {}; + var integer i; + var integer k := 0; + + for (i := 0; i < lengthof(p_ConfigOptList); i := i + 1) { + if (p_ConfigOptList[i].protocolID != p_ContainerId) { + v_ConfigOptList[k] := p_ConfigOptList[i]; + k := k + 1; + } + } + return v_ConfigOptList; + } + + + function f_ProtocolConfigOption_GetResponse_No_P_CSCF_Addr(NAS_ProtocolConfigOptions_Type p_ConfigOptionsRx) return NAS_ProtocolConfigOptions_Type + { + var NAS_ProtocolConfigOptions_Type v_ConfigOptList := f_ProtocolConfigOption_GetResponse(p_ConfigOptionsRx); + v_ConfigOptList := f_ProtocolConfigOption_Remove(v_ConfigOptList, tsc_ConfigOptions_P_CSCF_IPv6_Request); + v_ConfigOptList := f_ProtocolConfigOption_Remove(v_ConfigOptList, tsc_ConfigOptions_P_CSCF_IPv4_Request); // @sic CR R5s120530 change 1.11 TODO: Prose CR needed sic@ + return v_ConfigOptList; + } + +} diff --git a/IMS_PART4_IWD_14wk37/IMS/Common/TestcaseProperties.ttcn b/IMS_PART4_IWD_14wk37/IMS/Common/TestcaseProperties.ttcn new file mode 100644 index 0000000..533349a --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/Common/TestcaseProperties.ttcn @@ -0,0 +1,122 @@ +/******************************************************************************/ +// AUTOMATICLLY GENERATED MODULE - DO NOT MODIFY +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-07-05 16:52:20 +0200 (Sat, 05 Jul 2014) $ +// $Rev: 11811 $ +/******************************************************************************/ + +module TestcaseProperties { + + function f_GetTestcaseAttrib_3IntraFreq(charstring p_Testcase) return boolean + { + return false; + } + + function f_GetTestcaseAttrib_Mimo(charstring p_Testcase) return boolean + { + return false; + } + + function f_GetTestcaseAttrib_DciFormat1A(charstring p_Testcase) return boolean + { + return false; + } + + function f_GetTestcaseAttrib_DlCcchMsgInSeparateMacPdu(charstring p_Testcase) return boolean + { + return false; + } + + function f_GetTestcaseAttrib_Qbased_Rsrq(charstring p_Testcase) return boolean + { + return false; + } + + function f_GetTestcaseAttrib_Mbms(charstring p_Testcase) return boolean + { + return false; + } + + function f_GetTestcaseAttrib_RetrieveEutraCapabilities(charstring p_Testcase) return boolean + { + return false; + } + + function f_GetTestcaseAttrib_NullIntegrityAlgorithmAllowed(charstring p_Testcase) return boolean + { + return false; + } + + function f_GetTestcaseAttrib_CA_Configured(charstring p_Testcase) return boolean + { + return false; + } + + function f_GetTestcaseAttrib_Eutra_SRVCC(charstring p_Testcase) return boolean + { + return false; + } + + function f_GetTestcaseAttrib_Eutra_Release(charstring p_Testcase) return charstring + { + select (p_Testcase) { + case ("TC_12_18") { return "rel_9"; } + case ("TC_12_18a") { return "rel_12"; } + case ("TC_12_18b") { return "rel_12"; } + case ("TC_12_19") { return "rel_9"; } + case ("TC_12_19a") { return "rel_12"; } + case ("TC_12_19b") { return "rel_12"; } + case ("TC_12_20") { return "rel_9"; } + case ("TC_12_20a") { return "rel_12"; } + case ("TC_19_1_1") { return "rel_9"; } + case ("TC_19_1_2") { return "rel_9"; } + case ("TC_19_1_5") { return "rel_9"; } + case ("TC_19_3_1") { return "rel_9"; } + case ("TC_19_3_3") { return "rel_9"; } + case ("TC_19_3_4") { return "rel_9"; } + case ("TC_19_5_10") { return "rel_9"; } + case ("TC_19_5_6") { return "rel_9"; } + case ("TC_19_5_7") { return "rel_9"; } + case ("TC_19_5_8") { return "rel_9"; } + case ("TC_19_5_9") { return "rel_9"; } + case ("TC_8_15") { return "rel_10"; } + } + return ""; + } + + function f_GetTestcaseAttrib_UtraFDD_Release(charstring p_Testcase) return charstring + { + return ""; + } + + function f_GetTestcaseAttrib_UtraTDD_Release(charstring p_Testcase) return charstring + { + return ""; + } + + function f_GetTestcaseAttrib_SpecificPCO(charstring p_Testcase) return boolean + { + select (p_Testcase) { + case ("TC_6_3") { return true; } + case ("TC_7_1") { return true; } + } + return false; + } + + function f_GetTestcaseAttrib_GeolocationInformation(charstring p_Testcase) return boolean + { + select (p_Testcase) { + case ("TC_19_1_1") { return true; } + case ("TC_19_1_5") { return true; } + case ("TC_19_3_1") { return true; } + case ("TC_19_3_3") { return true; } + case ("TC_19_3_4") { return true; } + } + return false; + } +} diff --git a/IMS_PART4_IWD_14wk37/IMS/PART4_Stubs/MTC_Component_IMS_PART4.ttcn b/IMS_PART4_IWD_14wk37/IMS/PART4_Stubs/MTC_Component_IMS_PART4.ttcn new file mode 100644 index 0000000..c561bcb --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/PART4_Stubs/MTC_Component_IMS_PART4.ttcn @@ -0,0 +1,35 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +/******************************************************************************/ + +module MTC_Component_IMS_PART4 { + + import from CommonDefs all; + + import from IMS_Component all; + + import from PART4_Adaptor all; + + import from UpperTesterPtcToMtcDefs all; + + import from HTTP_Component all; + + type component MTC_IMS { + var PART4_ADAPTOR_PTC ptc_PART4_ADAPTOR; + var HTTP_PTC ptc_HTTP; + var IMS_PTC ptc_IMS1; + var IMS_PTC ptc_IMS2; + + // Ports: + port UT_MTC_PTC_PORT IMS_MMI[tsc_NoOfPDNs]; + port UT_MTC_PTC_PORT IPCAN_MMI; + + }; + type component SYSTEM_IMS extends HTTP_SYSTEM {}; + +} diff --git a/IMS_PART4_IWD_14wk37/IMS/PART4_Stubs/MTC_Main_IMS_PART4.ttcn b/IMS_PART4_IWD_14wk37/IMS/PART4_Stubs/MTC_Main_IMS_PART4.ttcn new file mode 100644 index 0000000..ee1e788 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/PART4_Stubs/MTC_Main_IMS_PART4.ttcn @@ -0,0 +1,157 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +/******************************************************************************/ + +module MTC_Main_IMS_PART4 { + import from CommonDefs all; + + import from IMS_Component all; + import from IMS_CC_Component all; + + import from MTC_Component_IMS_PART4 all; + import from PART4_Adaptor all; + + import from HTTP_Component all; + import from HTTP_XCAP_Main all; // f_HTTP_XCAP_Main + + import from UpperTesterPtcToMtcDefs all; + + //-------------------------------------------------------------------------- + /* + * @desc Create parallel test components and connect all MTC ports to the system ports + * @param p_IMS1 + * @param p_IMS2 + */ + function f_MTC_IMS_CreateMapAndConnectPTCs(IMS_PTC p_IMS1, + IMS_PTC p_IMS2, + HTTP_PTC p_HTTP_PTC := null) runs on MTC_IMS + { + f_MTC_IMS_Map(); + + ptc_PART4_ADAPTOR := f_PART4_ADAPTOR_PTC_CreateAndMap(); + ptc_IMS1 := p_IMS1; + ptc_IMS2 := p_IMS2; + ptc_HTTP := null; + + connect(ptc_PART4_ADAPTOR:IMS_CTRL[tsc_Index_PDN1], ptc_IMS1:IMS_CTRL); + connect(ptc_PART4_ADAPTOR:IMS_Server[tsc_Index_PDN1], ptc_IMS1:IMS_Server); + connect(ptc_PART4_ADAPTOR:IMS_Client[tsc_Index_PDN1], ptc_IMS1:IMS_Client); + + connect(ptc_PART4_ADAPTOR:IMS[tsc_Index_PDN1], ptc_IMS1:IPCAN); + + connect(mtc:IMS_MMI[tsc_Index_PDN1], ptc_IMS1:MMI); + + if (p_IMS2 != null) { + connect(ptc_PART4_ADAPTOR:IMS_CTRL[tsc_Index_PDN2], ptc_IMS2:IMS_CTRL); + connect(ptc_PART4_ADAPTOR:IMS_Server[tsc_Index_PDN2], ptc_IMS2:IMS_Server); + connect(ptc_PART4_ADAPTOR:IMS_Client[tsc_Index_PDN2], ptc_IMS2:IMS_Client); + + connect(ptc_PART4_ADAPTOR:IMS[tsc_Index_PDN2], ptc_IMS2:IPCAN); + + connect(mtc:IMS_MMI[tsc_Index_PDN2], ptc_IMS2:MMI); + + connect(ptc_IMS2:OtherPDN, ptc_IMS2:OtherPDN); + } + + connect(mtc:IPCAN_MMI, ptc_PART4_ADAPTOR:MMI); + + if (p_HTTP_PTC != null) { + connect(ptc_PART4_ADAPTOR:HTTPCTRL, p_HTTP_PTC:HTTPCTRL); + connect(ptc_PART4_ADAPTOR:HTTPDATA, p_HTTP_PTC:HTTPDATA); + } + + ptc_PART4_ADAPTOR.start(f_PART4_ADAPTOR_MainLoop()); + f_MTC_IMS_FurtherInitialisation(); + } + + //-------------------------------------------------------------------------- + /* + * @desc Extension for XCAP test cases + * @param p_IMS1 + * @param p_IMS2 + */ + function f_MTC_IMS_XCAP_CreateMapAndConnectPTCs(IMS_XCAP_PTC p_IMS1, + IMS_XCAP_PTC p_IMS2) runs on MTC_IMS + { + ptc_HTTP := f_HTTP_PTC_CreateAndMap(); + connect(p_IMS1:XCAP, ptc_HTTP:IMS); + ptc_HTTP.start(f_HTTP_XCAP_Main()); + + f_MTC_IMS_CreateMapAndConnectPTCs(p_IMS1, p_IMS2, ptc_HTTP); + } + + /* + * @desc stop the IMS PTC + * @param p_Verdict + */ + function f_MTC_IMS_Stop(verdicttype p_Verdict) + { + setverdict(p_Verdict); + all component.stop; + mtc.stop; + } + + //============================================================================ + /* + * @desc MTC main loop; called from the testcases + * NOTE: it is assumed that the IMS_PTC is started just before calling this loop + * @param p_GuardTimer + */ + function f_MTC_IMS_MainLoop(timer p_GuardTimer) runs on MTC_IMS + { + var boolean v_IMS1_Done := (ptc_IMS1 == null); + var boolean v_IMS2_Done := (ptc_IMS2 == null); + + while (not (v_IMS1_Done and v_IMS2_Done)) { + alt { + [not v_IMS1_Done] ptc_IMS1.done { // terminate the loop when the IMS PTC(s) have done its work + v_IMS1_Done := true; + } + [not v_IMS2_Done] ptc_IMS2.done { // terminate the loop when the IMS PTC(s) have done its work + v_IMS2_Done := true; + } + [] a_MTC_IMS_UpperTester(); + [] p_GuardTimer.timeout { + f_MTC_IMS_Stop(inconc); + } + [] any component.killed { + f_MTC_IMS_Stop(inconc); + } + } + } + f_MTC_IMS_Stop(pass); /* Note: "pass" overrules "none" only */ + } + + //============================================================================ + // TO BE IMPLEMENTED: + //-------------------------------------------------------------------------- + + template (present) UT_COMMON_CMD cr_UT_CMD_Any := ?; + + + function f_MTC_IMS_Map() runs on MTC_IMS + { + } + + function f_MTC_IMS_FurtherInitialisation() runs on MTC_IMS + { + } + + altstep a_MTC_IMS_UpperTester() runs on MTC_IMS + { + [] IMS_MMI[tsc_Index_PDN1].receive(cr_UT_CMD_Any) { + + } + [] IMS_MMI[tsc_Index_PDN2].receive(cr_UT_CMD_Any) { + + } + [] IPCAN_MMI.receive(cr_UT_CMD_Any) { + + } + } +} diff --git a/IMS_PART4_IWD_14wk37/IMS/PART4_Stubs/PART4_Adaptor.ttcn b/IMS_PART4_IWD_14wk37/IMS/PART4_Stubs/PART4_Adaptor.ttcn new file mode 100644 index 0000000..e61adea --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/PART4_Stubs/PART4_Adaptor.ttcn @@ -0,0 +1,48 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +/******************************************************************************/ + +module PART4_Adaptor { + import from CommonDefs all; + import from IMS_PTC_CoordMsg all; + import from IMS_ASP_TypeDefs all; + import from HTTP_ASP_TypeDefs all; + import from UpperTesterPtcToMtcDefs all; + + type component PART4_ADAPTOR_PTC { + // IMS interface to IMS PTC: + port IP_IMS_CTRL_PORT IMS_CTRL[tsc_NoOfPDNs]; + port IP_IMS_SERVER_PORT IMS_Server[tsc_NoOfPDNs]; + port IP_IMS_CLIENT_PORT IMS_Client[tsc_NoOfPDNs]; + + // coordination ports to HTTP_PTC + port IP_HTTP_CTRL_PORT HTTPCTRL; + port IP_HTTP_DATA_PORT HTTPDATA; + + // IPCAN interface to IMS PTC: + port IMS_IPCAN_CO_ORD_PORT IMS[tsc_NoOfPDNs]; + + // MMI interface + port UT_PTC_MTC_PORT MMI; + }; + + function f_PART4_ADAPTOR_PTC_CreateAndMap() return PART4_ADAPTOR_PTC + { + var PART4_ADAPTOR_PTC v_PART4_ADAPTOR_PTC := PART4_ADAPTOR_PTC.create alive; + + // insert mapping of system ports here + + return v_PART4_ADAPTOR_PTC; + } + + function f_PART4_ADAPTOR_MainLoop() runs on PART4_ADAPTOR_PTC + { + while (true) { + } + } +} diff --git a/IMS_PART4_IWD_14wk37/IMS/XCAP_HTTP/HTTP_Component.ttcn b/IMS_PART4_IWD_14wk37/IMS/XCAP_HTTP/HTTP_Component.ttcn new file mode 100644 index 0000000..e3872a2 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/XCAP_HTTP/HTTP_Component.ttcn @@ -0,0 +1,53 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-05-26 19:34:53 +0200 (Mon, 26 May 2014) $ +// $Rev: 11335 $ +/******************************************************************************/ + +module HTTP_Component { + import from HTTP_PTC_CoordMsg all; + import from HTTP_ASP_TypeDefs all; + import from XCAP_ASP_TypeDefs all; + + type component HTTP_PTC { /* @status APPROVED (IMS) */ + + // port to IMS components + port XCAP_IMS_CO_ORD_PORT IMS; + + port HTTP_CTRL_PORT HTTPCTRL; + port HTTP_DATA_PORT HTTPDATA; + + port XCAP_PORT XCAP; /* Simulates XCAP Server in the NW. See TS 24.623 clause 5.1 */ + }; + + type component HTTP_SYSTEM { /* @status APPROVED (IMS) */ + port XCAP_PORT Xcap; + }; + + //**************************************************************************** + /* + * @desc create and map HTTP PTC + * @return HTTP_PTC + * @status APPROVED (IMS) + */ + function f_HTTP_PTC_CreateAndMap() return HTTP_PTC + { + var HTTP_PTC v_HTTP_PTC := HTTP_PTC.create alive; + + map(v_HTTP_PTC:XCAP, system:Xcap); + + return v_HTTP_PTC; + } + + //---------------------------------------------------------------------------- + + + + + +} diff --git a/IMS_PART4_IWD_14wk37/IMS/XCAP_HTTP/HTTP_PTC_CoordMsg.ttcn b/IMS_PART4_IWD_14wk37/IMS/XCAP_HTTP/HTTP_PTC_CoordMsg.ttcn new file mode 100644 index 0000000..e6d215c --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/XCAP_HTTP/HTTP_PTC_CoordMsg.ttcn @@ -0,0 +1,61 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-03 16:13:28 +0200 (Wed, 03 Sep 2014) $ +// $Rev: 12004 $ +/******************************************************************************/ + +module HTTP_PTC_CoordMsg { + + import from CommonDefs all; + import from HTTP_ASP_TypeDefs all; + import from IP_ASP_TypeDefs all; + import from NAS_AuthenticationCommon all; + + type record HTTP_ConfigurationParams_Type { /* @status APPROVED (IMS) */ + HttpAuthenticationMechanism_Type HttpAuthenticationMechanism, + IP_Socket_Type XcapServerAddrAndPort, + IP_Socket_Type BsfServerAddrAndPort optional, + IP_DrbInfo_Type DrbRoutingInfo, + charstring HomeDomainName, + charstring XcapUsername, /* Username to be used for Authorisation */ + charstring XcapUserId, /* public user indentity to be used for XCAP signalling (XUI) */ + charstring XcapRootUri + }; + + type record HTTP_TransactionParams_Type { /* @status APPROVED (IMS) */ + float MaxDuration, + float InactivityDuration, + Common_AuthenticationParams_Type AuthenticationParams optional + }; + + type union IMS_HTTP_Command_Type { /* @status APPROVED (IMS) */ + HTTP_ConfigurationParams_Type Configure, + HTTP_TransactionParams_Type TransactionStart, + Null_Type DocumentGet, + charstring DocumentSet + }; + + type union IMS_HTTP_Response_Type { /* @status APPROVED (IMS) */ + charstring Error, + charstring Result + }; + + type port IMS_XCAP_CO_ORD_PORT message + { /* @status APPROVED (IMS) */ + out IMS_HTTP_Command_Type; + in IMS_HTTP_Response_Type; + }; + + + type port XCAP_IMS_CO_ORD_PORT message + { /* @status APPROVED (IMS) */ + in IMS_HTTP_Command_Type; + out IMS_HTTP_Response_Type; + }; + +} diff --git a/IMS_PART4_IWD_14wk37/IMS/XCAP_HTTP/HTTP_TemplatesAndFunctions.ttcn b/IMS_PART4_IWD_14wk37/IMS/XCAP_HTTP/HTTP_TemplatesAndFunctions.ttcn new file mode 100644 index 0000000..a5e46fa --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/XCAP_HTTP/HTTP_TemplatesAndFunctions.ttcn @@ -0,0 +1,385 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-03 16:13:28 +0200 (Wed, 03 Sep 2014) $ +// $Rev: 12004 $ +/******************************************************************************/ + +module HTTP_TemplatesAndFunctions { + + import from CommonDefs all; + import from HTTP_ASP_TypeDefs all; + import from LibSip_SIPTypesAndValues all; // NOTE: the same header definitions are used for HTTP as for SIP (Authorization, ContentType, WwwAuthenticate, AuthenticationInfo, Expires) + import from NAS_AuthenticationCommon all; + import from IMS_CommonFunctions all; + import from IMS_SIP_Templates all; // NOTE: the same header definitions are used for HTTP as for SIP (cr_AuthorizationDef, cs_WwwAuthChallenge) + import from IP_ASP_TypeDefs all; + import from IP_ASP_Common all; + + const charstring tsc_HTTP_Version_1_1 := "HTTP/1.1"; /* @status APPROVED (IMS) */ + const charstring tsc_Simservs_ContentType_Document := "application/vnd.etsi.simservs+xml"; /* @status APPROVED (IMS) */ + const charstring tsc_Simservs_ContentType_Element := "application/xcap-el+xml"; /* @status APPROVED (IMS) */ + const charstring tsc_Simservs_ContentType_Attribute := "application/xcap-att+xml"; /* @status APPROVED (IMS) */ + + type union HTTP_AuthenticationResult_Type { /* @status APPROVED (IMS) */ + charstring Error, + HTTP_DATA_IND InitialRequest, + Null_Type NoError + }; + + //---------------------------------------------------------------------------- + + template (value) TLSInfo_Type cs_TLSInfo_PSK(template (omit) octetstring p_Psk := omit, + template (omit) TLS_CIPHER_Type p_CipherSuite := psk_3DES_EDE_CBC_SHA) := + { /* @status APPROVED (IMS) */ + tlsType := pskTLS, + psk := p_Psk, + cipherSuite := p_CipherSuite + }; + + template (value) HTTP_CTRL_REQ cs_HttpCtlReq(template (omit) HttpAuthenticationMechanism_Type p_HttpAuthenticationMechanism, + template (omit) TLSInfo_Type p_TLSInfo, + template (omit) HttpRoutingInfo_Type p_XcapServer, + template (omit) HttpRoutingInfo_Type p_BsfServer, + template (omit) IP_DrbInfo_Type p_DrbInfo) := + { /* @status APPROVED (IMS) */ + authenticationMechanism := p_HttpAuthenticationMechanism, + tlsInfo := p_TLSInfo, + xcapServer := p_XcapServer, + bsfServer := p_BsfServer, + drbInfo := p_DrbInfo + }; + + template (present) HTTP_CTRL_CNF cr_HttpCtlCnf := { errorInfo := omit }; /* @status APPROVED (IMS) */ + + //---------------------------------------------------------------------------- + + template (present) HttpRequestLine_Type cr_HttpRequestLine(template (present) charstring p_Uri := ?) := + { /* @status APPROVED (IMS) */ + method := ("GET", "PUT", "DELETE"), + uri := p_Uri, // XCAP selection expression, RFC 4825 + version := tsc_HTTP_Version_1_1 + }; + + //---------------------------------------------------------------------------- + + template (present) HttpRequest_Type cr_HttpRequest(template (present) HttpRequestLine_Type p_HttpRequestLine := cr_HttpRequestLine, + template Authorization p_Authorization := *) := + { /* @status APPROVED (IMS) */ + requestLine := p_HttpRequestLine, + authorization := p_Authorization, + contentType := *, + x3GPPIntendedIdentity := *, + messageBody := * + }; + + template (present) HTTP_DATA_IND cr_HttpDataInd(template (present) HttpRoutingInfo_Type p_HttpRoutingInfo, + template (present) HttpRequest_Type p_HttpRequest) := + { /* @status APPROVED (IMS) */ + routingInfo := p_HttpRoutingInfo, + httpRequest := p_HttpRequest + }; + + //---------------------------------------------------------------------------- + + template (value) HttpStatusLine_Type cs_HttpStatusLine(integer p_Code, + charstring p_ReasonPhrase) := + { /* @status APPROVED (IMS) */ + version := tsc_HTTP_Version_1_1, + code := p_Code, + reasonPhrase := p_ReasonPhrase + }; + + template (value) HttpStatusLine_Type cs_HttpStatusLine_200 := cs_HttpStatusLine(200, "OK"); /* @status APPROVED (IMS) */ + template (value) HttpStatusLine_Type cs_HttpStatusLine_401 := cs_HttpStatusLine(401, "Unauthorized"); /* @status APPROVED (IMS) */ + template (value) HttpStatusLine_Type cs_HttpStatusLine_404 := cs_HttpStatusLine(404, "File Not Found"); /* @status APPROVED (IMS) */ + + template (value) HttpResponse_Type cs_HttpResponse(template (value) HttpStatusLine_Type p_HttpStatusLine, + template (omit) WwwAuthenticate p_WwwAuthenticate := omit, + template (omit) AuthenticationInfo p_AuthenticationInfo := omit, + template (omit) Expires p_Expires := omit, + template (omit) ContentType p_ContentType := omit, + template (omit) charstring p_MessageBody := omit) := + { /* @status APPROVED (IMS) */ + statusLine := p_HttpStatusLine, + wwwauthenticate := p_WwwAuthenticate, + authenticationInfo := p_AuthenticationInfo, + contentType := p_ContentType, + expires := p_Expires, + messageBody := p_MessageBody + }; + + template (value) HttpResponse_Type cs_HttpResponse_200(template (omit) ContentType p_ContentType := omit, /* @status APPROVED (IMS) */ + template (omit) charstring p_MessageBody := omit) := cs_HttpResponse(cs_HttpStatusLine_200, -, -, -, p_ContentType, p_MessageBody); + template (value) HttpResponse_Type cs_HttpResponse_401(template (omit) WwwAuthenticate p_Authorization) := cs_HttpResponse(cs_HttpStatusLine_401, p_Authorization); /* @status APPROVED (IMS) */ + template (value) HttpResponse_Type cs_HttpResponse_404 := cs_HttpResponse(cs_HttpStatusLine_404); /* @status APPROVED (IMS) */ + + /* + * @desc build HTTP 200 response + * @param p_MediaType (default value: omit) + * @param p_MessageBody (default value: omit) + * @return template (value) HttpResponse_Type + * @status APPROVED (IMS) + */ + function f_HttpResponse_200(template (omit) charstring p_MediaType := omit, + template (omit) charstring p_MessageBody := omit) return template (value) HttpResponse_Type + { + var template (omit) ContentType v_ContentType := omit; + + if (ispresent(p_MediaType)) { + v_ContentType := cs_ContentType(valueof(p_MediaType)); + } + return cs_HttpResponse_200(v_ContentType, p_MessageBody); + } + + template (value) HTTP_DATA_REQ cs_HttpDataReq(template (value) HttpRoutingInfo_Type p_HttpRoutingInfo, + template (value) HttpResponse_Type p_HttpResponse) := + { /* @status APPROVED (IMS) */ + routingInfo := p_HttpRoutingInfo, + httpResponse := p_HttpResponse + }; + + //============================================================================ + /* + * @desc Configure the http server + * @param p_HttpCtrl + * @param p_AuthMech (default value: omit) + * @param p_XcapServerAddrAndPort (default value: omit) + * @param p_BsfServerAddrAndPort (default value: omit) + * @param p_DrbRoutingInfo (default value: omit) + * @param p_TLSInfo (default value: omit) + * @status APPROVED (IMS) + */ + function f_HTTP_Configure(HTTP_CTRL_PORT p_HttpCtrl, + template (omit) HttpAuthenticationMechanism_Type p_AuthMech := omit, + template (omit) IP_Socket_Type p_XcapServerAddrAndPort := omit, + template (omit) IP_Socket_Type p_BsfServerAddrAndPort := omit, + template (omit) IP_DrbInfo_Type p_DrbRoutingInfo := omit, + template (omit) TLSInfo_Type p_TLSInfo := omit) + { + var IP_Socket_Type v_XcapServerAddrAndPort; + var IP_Socket_Type v_BsfServerAddrAndPort; + var template (omit) HttpRoutingInfo_Type v_XcapServer := omit; + var template (omit) HttpRoutingInfo_Type v_BsfServer := omit; + + if (isvalue(p_XcapServerAddrAndPort)) { + v_XcapServerAddrAndPort := valueof(p_XcapServerAddrAndPort); + v_XcapServer := cs_HttpRoutingInfo(f_IP_AddrInfo_AddrStr(v_XcapServerAddrAndPort.IpAddr), v_XcapServerAddrAndPort.Port); + } + if (isvalue(p_BsfServerAddrAndPort)) { + v_BsfServerAddrAndPort := valueof(p_BsfServerAddrAndPort); + v_BsfServer := cs_HttpRoutingInfo(f_IP_AddrInfo_AddrStr(v_BsfServerAddrAndPort.IpAddr), v_BsfServerAddrAndPort.Port); + } + + p_HttpCtrl.send(cs_HttpCtlReq(p_AuthMech, p_TLSInfo, v_XcapServer, v_BsfServer, p_DrbRoutingInfo)); + p_HttpCtrl.receive(cr_HttpCtlCnf) + } + + //============================================================================ + /* + * @desc Receive Http Request from UE + * @param p_Port + * @param p_Watchdog + * @param p_InactivityDuration (default value: 9999.0) + * @param p_HttpRequest (default value: cr_HttpRequest) + * @return template (omit) HTTP_DATA_IND + * @status APPROVED (IMS) + */ + function f_HTTP_ReceiveRequest(HTTP_DATA_PORT p_Port, + timer p_Watchdog, + float p_InactivityDuration := 9999.0, + template (present) HttpRequest_Type p_HttpRequest := cr_HttpRequest) return template (omit) HTTP_DATA_IND + { + var HTTP_DATA_IND v_DataInd; + var template (omit) HTTP_DATA_IND v_HTTP_DATA_IND := omit; + timer t_InactivityTimer; + + t_InactivityTimer.start(p_InactivityDuration); + + alt { + [] p_Port.receive(cr_HttpDataInd(cr_HttpRoutingInfo, p_HttpRequest)) -> value v_DataInd + { + v_HTTP_DATA_IND := v_DataInd; + } + [] p_Port.receive(cr_HttpDataInd(?, ?)) + { + repeat; // ignore any unexpected messages + } + [] t_InactivityTimer.timeout {} + [] p_Watchdog.timeout {} + } + t_InactivityTimer.stop; + return v_HTTP_DATA_IND; + } + + //---------------------------------------------------------------------------- + /* + * @desc Send Http Response to UE + * @param p_Port + * @param p_HttpRoutingInfo + * @param p_HttpResponse + * @status APPROVED (IMS) + */ + function f_HTTP_SendResponse(HTTP_DATA_PORT p_Port, + template (value) HttpRoutingInfo_Type p_HttpRoutingInfo, + template (value) HttpResponse_Type p_HttpResponse) + { + p_Port.send(cs_HttpDataReq(p_HttpRoutingInfo, p_HttpResponse)); + } + + //============================================================================ + /* + * @desc Compute key material for GAA Authentication according to TS 33.220 clause 4.5.2, TS 34.222, TS 23.003 clause 16.2 + * @param p_AuthenticationParams + * @return Common_AuthenticationParams_Type + * @status APPROVED (IMS) + */ + function fl_GAA_AuthenticationInit(Common_AuthenticationParams_Type p_AuthenticationParams) return Common_AuthenticationParams_Type + { + var Common_AuthenticationParams_Type v_AuthenticationParams := p_AuthenticationParams; + /* TODO compute key material, + * see TS 33.220 clause 4.5.2, TS 34.222, TS 23.003 clause 16.2 + */ + return v_AuthenticationParams; + } + + /* + * @desc build up PSK for GAA + * @param p_AuthenticationParams + * @return octetstring + * @status APPROVED (IMS) + */ + function fl_ComputeGAAPsk(Common_AuthenticationParams_Type p_AuthenticationParams) return octetstring + { + var octetstring v_Psk; + v_Psk := bit2oct(p_AuthenticationParams.CK); // FFS + return v_Psk; + } + + //---------------------------------------------------------------------------- + /* + * @desc Common Authentication Procedure: return omit in case of any error or failure + * @param p_HttpData + * @param p_Watchdog + * @param p_AuthenticationParams + * @param p_HomeDomainName + * @param p_Username + * @return HTTP_AuthenticationResult_Type + * @status APPROVED (IMS) + */ + function fl_HTTP_CommonAuthenticationProcedure(HTTP_DATA_PORT p_HttpData, + timer p_Watchdog, + Common_AuthenticationParams_Type p_AuthenticationParams, + charstring p_HomeDomainName, + charstring p_Username) return HTTP_AuthenticationResult_Type + { + var HTTP_AuthenticationResult_Type v_AuthenticationResult; + var charstring v_Nonce; + var charstring v_RequestLineUri; + var template (omit) HTTP_DATA_IND v_HTTP_DATA_IND; + var HttpRoutingInfo_Type v_RoutingInfo; + var HttpRequest_Type v_HttpRequest; + + v_Nonce := f_Bitstring2Base64(p_AuthenticationParams.RandValue & p_AuthenticationParams.AUTN); + + // Get any initial request + v_HTTP_DATA_IND := f_HTTP_ReceiveRequest(p_HttpData, p_Watchdog); + + + if (isvalue(v_HTTP_DATA_IND)) { + v_RoutingInfo := valueof(v_HTTP_DATA_IND.routingInfo); + v_HttpRequest := valueof(v_HTTP_DATA_IND.httpRequest); + v_RequestLineUri := v_HttpRequest.requestLine.uri; // gets checked in f_HTTP_XCAP_Main + + // Send 401 Unauthorized + f_HTTP_SendResponse(p_HttpData, v_RoutingInfo, cs_HttpResponse_401(cs_WwwAuthChallenge(p_HomeDomainName, v_Nonce, -, tsc_HTTP_MD5))); + + // UE repeats the request including Authorization header + v_HTTP_DATA_IND := f_HTTP_ReceiveRequest(p_HttpData, + p_Watchdog, + -, + cr_HttpRequest(cr_HttpRequestLine(v_RequestLineUri), // same URI as in previous request + cr_AuthorizationCommon(p_Username, p_HomeDomainName, v_Nonce, v_RequestLineUri, tsc_HTTP_MD5))); + if (isvalue(v_HTTP_DATA_IND)) { + v_HttpRequest := valueof(v_HTTP_DATA_IND.httpRequest); + + // Check digest response + if (not ischosen(v_HttpRequest.authorization.body[0].digestResponse)) { + v_AuthenticationResult.Error := "No digestResponse sent in the authorization header"; + } + else if (not f_IMS_Authorization_CheckDigestResponse(v_HttpRequest.requestLine.method, v_HttpRequest.authorization.body[0].digestResponse, p_AuthenticationParams.XRES, p_AuthenticationParams.XRESLength)) { + v_AuthenticationResult.Error := "DigestResponse check failed"; + } + else { + v_AuthenticationResult.InitialRequest := valueof(v_HTTP_DATA_IND); + } + return v_AuthenticationResult; + } + } + v_AuthenticationResult.Error := "timeout during HTTP authentication"; + return v_AuthenticationResult; + } + + //---------------------------------------------------------------------------- + /* + * @desc HTTP authentication + * @param p_HttpCtrl + * @param p_HttpData + * @param p_Watchdog + * @param p_HttpAuthenticationMechanism + * @param p_AuthenticationParams + * @param p_HomeDomainName + * @param p_Username + * @return HTTP_AuthenticationResult_Type + * @status APPROVED (IMS) + */ + function f_HTTP_Authentication(HTTP_CTRL_PORT p_HttpCtrl, + HTTP_DATA_PORT p_HttpData, + timer p_Watchdog, + HttpAuthenticationMechanism_Type p_HttpAuthenticationMechanism, + Common_AuthenticationParams_Type p_AuthenticationParams, + charstring p_HomeDomainName, + charstring p_Username) return HTTP_AuthenticationResult_Type + { + var HTTP_AuthenticationResult_Type v_AuthenticationResult; + var Common_AuthenticationParams_Type v_AuthenticationParams; + var octetstring v_Psk; + + v_AuthenticationResult.NoError := true; + + select (p_HttpAuthenticationMechanism) { + case (noAuthentication) { + // nothing to be done + } + case (httpDigestAuthentication) { + v_AuthenticationParams := p_AuthenticationParams; // !!!! any modification needed ?? !!!! + v_AuthenticationResult := fl_HTTP_CommonAuthenticationProcedure(p_HttpData, p_Watchdog, v_AuthenticationParams, p_HomeDomainName, p_Username); + } + case (gaaAuthentication) { + /* NOTE: + original implementation was using port HttpBsfServer to receive and send the HTTP primitives regarding Authorization + but as the port is of the same type as HttpXcapServer and there seems to be no parallel behaviour, + there is no need to have different ports */ + v_AuthenticationParams := fl_GAA_AuthenticationInit(p_AuthenticationParams); + v_AuthenticationResult := fl_HTTP_CommonAuthenticationProcedure(p_HttpData, p_Watchdog, v_AuthenticationParams, p_HomeDomainName, p_Username); + + if (not ischosen(v_AuthenticationResult.Error)) { + // Send 200 OK to BSF server + f_HTTP_SendResponse(p_HttpData, v_AuthenticationResult.InitialRequest.routingInfo, cs_HttpResponse_200); + + // Configure XCAP server with new key material + v_Psk := fl_ComputeGAAPsk(v_AuthenticationParams); + f_HTTP_Configure(p_HttpCtrl, gaaAuthentication, -, -, -, cs_TLSInfo_PSK(v_Psk)); + } + } + case else { + FatalError(__FILE__, __LINE__, "invalid HttpAuthenticationMechanism_Type"); + } + } + return v_AuthenticationResult; + } +} diff --git a/IMS_PART4_IWD_14wk37/IMS/XCAP_HTTP/HTTP_XCAP_Main.ttcn b/IMS_PART4_IWD_14wk37/IMS/XCAP_HTTP/HTTP_XCAP_Main.ttcn new file mode 100644 index 0000000..0a4fe8f --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/XCAP_HTTP/HTTP_XCAP_Main.ttcn @@ -0,0 +1,331 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-03 16:13:28 +0200 (Wed, 03 Sep 2014) $ +// $Rev: 12004 $ +/******************************************************************************/ + +module HTTP_XCAP_Main { + import from CommonDefs all; + import from IMS_CommonDefs all; + import from HTTP_Component all; + import from HTTP_PTC_CoordMsg all; + import from HTTP_ASP_TypeDefs all; + import from HTTP_TemplatesAndFunctions all; + import from XCAP_ASP_TypeDefs all; + import from XCAP_TemplatesAndFunctions all; + + //---------------------------------------------------------------------------- + /* + * @desc Gets the document selector received in the Http Request line + * @param p_RequestUri + * @return charstring - document selector + * @status APPROVED (IMS) + */ + function fl_DocSelector_FromHttpRequestUri(charstring p_RequestUri) return charstring + { + var charstring v_DocumentSelector; + + v_DocumentSelector := regexp(p_RequestUri, "(*)/~~*", 0); // "~~" is the separator, See RFC 4825 + if (v_DocumentSelector == "") { // i.e. URI does not have any node selector @sic R5s130794 change 18 sic@ + v_DocumentSelector := p_RequestUri + } + return f_URL_Decoding(v_DocumentSelector); + } + + /* + * @desc Calculates the document selector (path) for accessing the XCAP XML document associated with the UserId + * @param p_XcapRootUri + * @param p_UserId + * @return charstring + * @status APPROVED (IMS) + */ + function fl_DocSelector_Build(charstring p_XcapRootUri, + charstring p_UserId) return charstring + { + var charstring v_DocSelector := p_XcapRootUri & "/simservs.ngn.etsi.org/users/" & p_UserId & "/simservs.xml"; + // FFS convert character ':' to %3A and character '@' to %40 according to the url encoding rules + return v_DocSelector; + } + + /* + * @desc build URI for XCAP server + * @param p_DocSelector + * @param p_NodeSelector (default value: omit) + * @return charstring + * @status APPROVED (IMS) + */ + function fl_XcapUri_Build(charstring p_DocSelector, + template (omit) charstring p_NodeSelector := omit) return charstring + { + var charstring v_XcapUri := p_DocSelector; + + if (ispresent(p_NodeSelector)) { + v_XcapUri := v_XcapUri & "/~~/" & valueof(p_NodeSelector); + } + + return v_XcapUri; + } + + //---------------------------------------------------------------------------- + /* + * @desc get command IMS PTC + * @param p_Port + * @return IMS_HTTP_Command_Type + * @status APPROVED (IMS) + */ + function f_HTTP_IMS_CoordMsg_ReceiveCommand(XCAP_IMS_CO_ORD_PORT p_Port) return IMS_HTTP_Command_Type + { + var template (present) IMS_HTTP_Command_Type v_ExpectedCommand := ?; + var IMS_HTTP_Command_Type v_Command; + + p_Port.receive(v_ExpectedCommand) -> value v_Command; + return v_Command; + } + + /* + * @desc send response to IMS PTC + * @param p_Port + * @param p_Result (default value: "") + * @param p_Error (default value: omit) + * @status APPROVED (IMS) + */ + function f_HTTP_IMS_CoordMsg_SendResponse(XCAP_IMS_CO_ORD_PORT p_Port, + charstring p_Result := "", + template (omit) charstring p_Error := omit) + { + var IMS_HTTP_Response_Type v_Response; + + if (isvalue(p_Error)) { + v_Response.Error := valueof(p_Error); + } else { + v_Response.Result := p_Result; + } + p_Port.send(v_Response); + } + + + //---------------------------------------------------------------------------- + /* + * @desc check validity of the request line of an HTTP request + * @param p_RequestUri + * @param p_DocSelector + * @return template (omit) charstring + * @status APPROVED (IMS) + */ + function fl_HTTP_CheckRequestUri(charstring p_RequestUri, + charstring p_DocSelector) return template (omit) charstring + { + var template (omit) charstring v_Error := omit; + + if (p_DocSelector != fl_DocSelector_FromHttpRequestUri(p_RequestUri)) { + v_Error := "invalid doc selector"; + } + return v_Error; + } + + //---------------------------------------------------------------------------- + /* + * @desc check validity of HTTP request + * @param p_HttpRequest + * @param p_DocSelector + * @return template (omit) charstring + * @status APPROVED (IMS) + */ + function fl_HTTP_CheckRequest(HttpRequest_Type p_HttpRequest, + charstring p_DocSelector) return template (omit) charstring + { + var template (omit) charstring v_Error := omit; + var charstring v_RequestUri := p_HttpRequest.requestLine.uri; + var boolean v_UriHasNodeSelector := match(v_RequestUri, pattern "*~~*"); + + v_Error := fl_HTTP_CheckRequestUri(v_RequestUri, p_DocSelector); + if (not isvalue(v_Error)) { + if (p_HttpRequest.requestLine.method == "PUT") { + if (not isvalue(p_HttpRequest.messageBody)) { + v_Error := "missing message body for HTTP PUT"; + } + else if (not isvalue(p_HttpRequest.contentType)) { + v_Error := "missing content type for HTTP PUT"; + } else { /* @sic R5s130794 change 16 sic@ */ + select (valueof(p_HttpRequest.contentType.mediaType)) { + case (tsc_Simservs_ContentType_Document) { + if (v_UriHasNodeSelector) { + v_Error := "invalid content type for HTTP PUT: uri has node selector but content type refers to document"; + } + } + case (tsc_Simservs_ContentType_Element, tsc_Simservs_ContentType_Attribute) { + if (not v_UriHasNodeSelector) { + v_Error := "invalid content type for HTTP PUT: uri has no node selector but content type refers to element/attribute"; + } + } + case else { + v_Error := "invalid content type for HTTP PUT"; + } + } + } + } + } + return v_Error; + } + + /* + * @desc loop to receive HTTP requests and send the respective reponse + * @param p_Watchdog + * @param p_InactivityDuration + * @param p_DocSelector + * @param p_InitialHttpRequest (default value: omit) + * @return template (omit) charstring + * @status APPROVED (IMS) + */ + function fl_HTTP_SendReceiveLoop(timer p_Watchdog, + float p_InactivityDuration, + charstring p_DocSelector, + template (omit) HTTP_DATA_IND p_InitialHttpRequest := omit) runs on HTTP_PTC return template (omit) charstring + { + var template (omit) HTTP_DATA_IND v_HTTP_DATA_IND := p_InitialHttpRequest; + var template (omit) charstring v_Error := omit; + var boolean v_Finished := false; + var float v_InactivityDuration := 9999.0; // => in fact infinity (for first message only) @sic R5s130794 change 20 sic@ + var charstring v_Method; + var template (omit) charstring v_ContentType; + var template (omit) charstring v_XmlBody; + var HttpRequest_Type v_HttpRequest; + var HttpRoutingInfo_Type v_HttpRoutingInfo; + var XCAP_RSP v_XcapResponse; + + while (not v_Finished) { + if (not isvalue(v_HTTP_DATA_IND)) { + v_HTTP_DATA_IND := f_HTTP_ReceiveRequest(HTTPDATA, p_Watchdog, p_InactivityDuration); // returns omit in case of timeout + } + v_InactivityDuration := p_InactivityDuration; // => apply inactivity timer for all subsequent messages + if (not isvalue(v_HTTP_DATA_IND)) { // timeout + v_Finished := true; + } + else { + v_HttpRequest := valueof(v_HTTP_DATA_IND.httpRequest); + v_HttpRoutingInfo := valueof(v_HTTP_DATA_IND.routingInfo); + v_Error := fl_HTTP_CheckRequest(v_HttpRequest, p_DocSelector); + if (isvalue(v_Error)) { + v_Finished := true; + } + else { + v_Method := v_HttpRequest.requestLine.method; + if (ispresent(v_HttpRequest.contentType)) { + v_ContentType := v_HttpRequest.contentType.mediaType; + v_XmlBody := v_HttpRequest.messageBody; + } else { + v_ContentType := omit; + v_XmlBody := omit; + } + + v_XcapResponse := f_XCAP_GetResponse(XCAP, + v_Method, + v_HttpRequest.requestLine.uri, + v_ContentType, + v_XmlBody); + v_XmlBody := v_XcapResponse.xmlBody; + if ((v_Method == "GET") and not ispresent(v_XmlBody)) { + f_HTTP_SendResponse(HTTPDATA, v_HttpRoutingInfo, cs_HttpResponse_404); // 404 - File Not Found + } + else { // Send Http Response 200 OK to the UE + f_HTTP_SendResponse(HTTPDATA, v_HttpRoutingInfo, f_HttpResponse_200(v_XcapResponse.contentType, v_XmlBody)); + } + } + } + v_HTTP_DATA_IND := omit; + } + return v_Error; + } + + /* + * @desc Main loop for the HTTP_PTC + * @status APPROVED (IMS) + */ + function f_HTTP_XCAP_Main() runs on HTTP_PTC + { + var IMS_HTTP_Command_Type v_IMS_Command; + var HTTP_ConfigurationParams_Type v_ConfigurationParams; + var HTTP_AuthenticationResult_Type v_AuthenticationResult; + var XCAP_RSP v_XcapResponse; + var charstring v_SimservsDocument; + var charstring v_DocSelector; + var template (omit) charstring v_Error; + var template (omit) HTTP_DATA_IND v_InitialHttpRequest; + timer t_Watchdog; + + v_IMS_Command := f_HTTP_IMS_CoordMsg_ReceiveCommand(IMS); + if (not ischosen(v_IMS_Command.Configure)) { + FatalError(__FILE__, __LINE__, "invalid command"); // at the beginning HTTP needs to be configured + } + v_ConfigurationParams := v_IMS_Command.Configure; + + // Configure HTTP server + f_HTTP_Configure(HTTPCTRL, + v_ConfigurationParams.HttpAuthenticationMechanism, + v_ConfigurationParams.XcapServerAddrAndPort, + v_ConfigurationParams.BsfServerAddrAndPort, + v_ConfigurationParams.DrbRoutingInfo); + + // Configure XCAP Server + v_DocSelector := fl_DocSelector_Build(v_ConfigurationParams.XcapRootUri, + v_ConfigurationParams.XcapUserId); + f_XCAP_Initialise(XCAP, v_DocSelector); + f_HTTP_IMS_CoordMsg_SendResponse(IMS); + + while (true) { + + v_IMS_Command := f_HTTP_IMS_CoordMsg_ReceiveCommand(IMS); // Get command from IMS PTC + + if (ischosen(v_IMS_Command.DocumentSet)) { // Set document + v_SimservsDocument := v_IMS_Command.DocumentSet; + f_XCAP_Put(XCAP, fl_XcapUri_Build(v_DocSelector), tsc_Simservs_ContentType_Document, v_SimservsDocument); + f_HTTP_IMS_CoordMsg_SendResponse(IMS); + } + else if (ischosen(v_IMS_Command.DocumentGet)) { // Get document + v_XcapResponse := f_XCAP_Get(XCAP, fl_XcapUri_Build(v_DocSelector)); + if (not ispresent(v_XcapResponse.xmlBody)) { + FatalError(__FILE__, __LINE__, "File Not Found"); + } else { + v_SimservsDocument := v_XcapResponse.xmlBody; + f_HTTP_IMS_CoordMsg_SendResponse(IMS, v_SimservsDocument); + } + } + else if (ischosen(v_IMS_Command.TransactionStart)) { // Start transaction: HTTP requests and responses acc. to 34.229 C.29 + + t_Watchdog.start(v_IMS_Command.TransactionStart.MaxDuration); + v_InitialHttpRequest := omit; + v_Error := omit; + + if (ispresent(v_IMS_Command.TransactionStart.AuthenticationParams)) { + v_AuthenticationResult := f_HTTP_Authentication(HTTPCTRL, + HTTPDATA, + t_Watchdog, + v_ConfigurationParams.HttpAuthenticationMechanism, + v_IMS_Command.TransactionStart.AuthenticationParams, + v_ConfigurationParams.HomeDomainName, + v_ConfigurationParams.XcapUsername); + if (ischosen(v_AuthenticationResult.Error)) { + v_Error := v_AuthenticationResult.Error; + } + if (ischosen(v_AuthenticationResult.InitialRequest)) { + v_InitialHttpRequest := v_AuthenticationResult.InitialRequest; + v_Error := fl_HTTP_CheckRequestUri(valueof(v_InitialHttpRequest.httpRequest.requestLine.uri), v_DocSelector); + } + } + if (not isvalue(v_Error)) { + v_Error := fl_HTTP_SendReceiveLoop(t_Watchdog, v_IMS_Command.TransactionStart.InactivityDuration, v_DocSelector, v_InitialHttpRequest); + } + t_Watchdog.stop; + f_HTTP_IMS_CoordMsg_SendResponse(IMS, -, v_Error); + } + else { + FatalError(__FILE__, __LINE__, "invalid command"); + } + } + } +} diff --git a/IMS_PART4_IWD_14wk37/IMS/XCAP_HTTP/XCAP_ASP_TypeDefs.ttcn b/IMS_PART4_IWD_14wk37/IMS/XCAP_HTTP/XCAP_ASP_TypeDefs.ttcn new file mode 100644 index 0000000..cff0f9d --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/XCAP_HTTP/XCAP_ASP_TypeDefs.ttcn @@ -0,0 +1,39 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-07-24 19:05:45 +0200 (Thu, 24 Jul 2014) $ +// $Rev: 11846 $ +/******************************************************************************/ +module XCAP_ASP_TypeDefs { + + group XCAP_ASP_Definitions { + + type record XCAP_REQ { /* ASP type for sending a request to the external XCAP server according to RFC 4825 [26] */ + charstring method, /* GET, PUT, DELETE or RESET */ + charstring xcapExpression, /* XCAP expression sent by the UE in its http request line */ + charstring contentType optional, /* media type as contained in the HTTP content type header */ + charstring xmlBody optional /* XML fragment sent by the UE in its http body or simservs document initialised by the test cases */ + }; + + type record XCAP_RSP { /* ASP type for sending the response to the XCAP_REQ from the XCAP server to TTCN */ + charstring errorInfo optional, /* string indicating a system error */ + charstring contentType optional, /* media type as contained in the HTTP content type header */ + charstring xmlBody optional /* Result returned by the XCAP server */ + }; + + } with { encode "XCAPCodec" } + + //============================================================================ + // Port definitions + + type port XCAP_PORT message + { + in XCAP_RSP; + out XCAP_REQ; + }; + +} diff --git a/IMS_PART4_IWD_14wk37/IMS/XCAP_HTTP/XCAP_TemplatesAndFunctions.ttcn b/IMS_PART4_IWD_14wk37/IMS/XCAP_HTTP/XCAP_TemplatesAndFunctions.ttcn new file mode 100644 index 0000000..d7f9c33 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/XCAP_HTTP/XCAP_TemplatesAndFunctions.ttcn @@ -0,0 +1,119 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-03-05 19:20:41 +0100 (Wed, 05 Mar 2014) $ +// $Rev: 10922 $ +/******************************************************************************/ + +module XCAP_TemplatesAndFunctions { + import from CommonDefs all; + import from XCAP_ASP_TypeDefs all; + + template (value) XCAP_REQ cs_XcapRequest(charstring p_Method, + charstring p_XcapUri, + template (omit) charstring p_ContentType := omit, + template (omit) charstring p_XmlBody := omit) := + { /* @status APPROVED (IMS) */ + method := p_Method, + xcapExpression := p_XcapUri, + contentType := p_ContentType, + xmlBody := p_XmlBody + }; + + template (value) XCAP_REQ cs_XcapResetReq(charstring p_DocSelector) := cs_XcapRequest("RESET", p_DocSelector); /* @status APPROVED (IMS) */ + + template (present) XCAP_RSP cr_XcapRsp := + { /* @status APPROVED (IMS) */ + errorInfo := *, + contentType := *, + xmlBody := * + }; + + //============================================================================ + /* + * @desc receive response from XCAP server + * @param p_XcapPort + * @return XCAP_RSP + * @status APPROVED (IMS) + */ + function f_XCAP_ReceiveResponse(XCAP_PORT p_XcapPort) return XCAP_RSP + { + var XCAP_RSP v_XCAP_RSP; + p_XcapPort.receive(cr_XcapRsp) -> value v_XCAP_RSP; + if (ispresent(v_XCAP_RSP.errorInfo)) { + FatalError(__FILE__, __LINE__, v_XCAP_RSP.errorInfo); + } + return v_XCAP_RSP; + } + + /* + * @desc get response from XCAP server + * @param p_XcapPort + * @param p_Method + * @param p_XcapUri + * @param p_ContentType (default value: omit) + * @param p_XmlBody (default value: omit) + * @return XCAP_RSP + * @status APPROVED (IMS) + */ + function f_XCAP_GetResponse(XCAP_PORT p_XcapPort, + charstring p_Method, + charstring p_XcapUri, + template (omit) charstring p_ContentType := omit, + template (omit) charstring p_XmlBody := omit) return XCAP_RSP + { + var XCAP_RSP v_XcapResponse; + + p_XcapPort.send(cs_XcapRequest(p_Method, p_XcapUri, p_ContentType, p_XmlBody)); + v_XcapResponse := f_XCAP_ReceiveResponse(p_XcapPort); + return v_XcapResponse; + } + + /* + * @desc Send PUT to XCAP server + * @param p_XcapPort + * @param p_XcapUri + * @param p_ContentType (default value: omit) + * @param p_XmlBody (default value: omit) + * @status APPROVED (IMS) + */ + function f_XCAP_Put(XCAP_PORT p_XcapPort, + charstring p_XcapUri, + template (omit) charstring p_ContentType := omit, + template (omit) charstring p_XmlBody := omit) + { + f_XCAP_GetResponse(p_XcapPort, "PUT", p_XcapUri, p_ContentType, p_XmlBody); + } + + /* + * @desc Send GET to XCAP server + * @param p_XcapPort + * @param p_XcapUri + * @return XCAP_RSP + * @status APPROVED (IMS) + */ + function f_XCAP_Get(XCAP_PORT p_XcapPort, + charstring p_XcapUri) return XCAP_RSP + { + return f_XCAP_GetResponse(p_XcapPort, "GET", p_XcapUri); + } + + //---------------------------------------------------------------------------- + /* + * @desc Initialises the XCAP server with an initial document + * @param p_XcapPort + * @param p_DocSelector + * @status APPROVED (IMS) + */ + function f_XCAP_Initialise(XCAP_PORT p_XcapPort, + charstring p_DocSelector) + { + p_XcapPort.send(cs_XcapResetReq(p_DocSelector)); + f_XCAP_ReceiveResponse(p_XcapPort); + } + +} diff --git a/IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/RFC4745-common-policy.xsd b/IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/RFC4745-common-policy.xsd new file mode 100644 index 0000000..17f8991 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/RFC4745-common-policy.xsd @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/TS24604.xsd b/IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/TS24604.xsd new file mode 100644 index 0000000..102e239 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/TS24604.xsd @@ -0,0 +1,64 @@ + + + + + + + + + + + + + This is the communication diversion configuration document. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/TS24607-OIP-OIR.xsd b/IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/TS24607-OIP-OIR.xsd new file mode 100644 index 0000000..21e6292 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/TS24607-OIP-OIR.xsd @@ -0,0 +1,31 @@ + + + + + Originating Identity presentation Restriction + + + + + + + + + + + + + + + + + + + + + + Originating Identity Presentation + + + + \ No newline at end of file diff --git a/IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/TS24608-TIP-TIR R2.xsd b/IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/TS24608-TIP-TIR R2.xsd new file mode 100644 index 0000000..556b4a3 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/TS24608-TIP-TIR R2.xsd @@ -0,0 +1,31 @@ + + + + + Terminating Identity presentation Restriction + + + + + + + + + + + + + + + + + + + + + + Terminating Identity Presentation + + + + \ No newline at end of file diff --git a/IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/TS24611.xsd b/IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/TS24611.xsd new file mode 100644 index 0000000..842e53f --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/TS24611.xsd @@ -0,0 +1,50 @@ + + + + + + + + + + + + This is the incoming communication barring configuration document. + + + + + + + + + + + + + + + + + This is the outgoing communication barring configuration document. + + + + + + + + + + + + + + + + + + + + diff --git a/IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/XCAP.xsd b/IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/XCAP.xsd new file mode 100644 index 0000000..3c2ef20 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/XCAP.xsd @@ -0,0 +1,71 @@ + + + + + + XML Schema for data manipulation of Supplementary Services + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn b/IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn new file mode 100644 index 0000000..d4d744e --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn @@ -0,0 +1,270 @@ +module http_uri_etsi_org_ngn_params_xml_simservs_xcap { + + import from XSD all; + import from urn_ietf_params_xml_ns_common_policy all; /* import common policy definitions */ + import from urn_oma_xml_xdm_common_policy all; /* import OMA common policy extensions */ + + + + + +/* import 24.623 supplementary service schema */ + + +/* communication diversion specific extensions to IETF common policy conditions. The cp:conditionsType is expanded with the elements: ss:not-registered, ss:busy, ss:no-answer, ss:not-reachable, ss:media as optional elements */ + + +/* communication diversion rule set based on the common policy rule set. */ + + +/* This is the communication diversion configuration document. */ +/* add service specific elements here */ +/* service specific attributes can be defined here */ +type record Communication_diversion +{ + XSD.Boolean active optional, + record length (1..infinity) of XSD.String attr optional, + NoReplyTimer noReplyTimer optional, + Ruleset ruleset optional +}; + + +/* communication diversion specific extensions to IETF common policy actions */ + + +type Forward_to_type Forward_to; + + +type enumerated Reveal_URI_options_type +{ + false_, + not_reveal_GRUU, + true_ +}; + + +/* communication diversion specific type declarations */ + + +type record Forward_to_type +{ + XSD.AnyURI target, + XSD.Boolean notify_caller optional, + Reveal_URI_options_type reveal_identity_to_caller optional, + Reveal_URI_options_type reveal_served_user_identity_to_caller optional, + XSD.Boolean notify_served_user optional, + XSD.Boolean notify_served_user_on_outbound_call optional, + Reveal_URI_options_type reveal_identity_to_target optional +}; + + +type XSD.PositiveInteger NoReplyTimer (5 .. 180); + + +/* Originating Identity presentation Restriction */ +type record Originating_identity_presentation_restriction +{ + XSD.Boolean active optional, + record length (1..infinity) of XSD.String attr optional, + enumerated { + presentation_restricted, + presentation_not_restricted + } default_behaviour optional +}; + + +/* Originating Identity Presentation */ +type SimservType Originating_identity_presentation; + + +/* Terminating Identity presentation Restriction */ +type record Terminating_identity_presentation_restriction +{ + XSD.Boolean active optional, + record length (1..infinity) of XSD.String attr optional, + enumerated { + presentation_restricted, + presentation_not_restricted + } default_behaviour optional +}; + + +/* Terminating Identity Presentation */ +type SimservType Terminating_identity_presentation; + + +/* import common policy definitions */ + + +/* import OMA common policy extensions */ + + +/* import 24.623 supplementary service schema */ + + +/* incoming communication barring rule set based on the common policy rule set. */ + + +/* This is the incoming communication barring configuration document. */ +/* add service specific elements here */ +/* service specific attributes can be defined here */ +type record Incoming_communication_barring +{ + XSD.Boolean active optional, + record length (1..infinity) of XSD.String attr optional, + Ruleset ruleset optional +}; + + +/* outgoing communication barring rule set based on the common policy rule set. */ + + +/* This is the outgoing communication barring configuration document. */ +/* add service specific elements here */ +/* service specific attributes can be defined here */ +type record Outgoing_communication_barring +{ + XSD.Boolean active optional, + record length (1..infinity) of XSD.String attr optional, + Ruleset ruleset optional +}; + + +/* communication barring specific extensions to IETF common policy actions */ + + +type Allow_action_type Allow; + + +/* communication barring specific type declarations */ + + +type XSD.Boolean Allow_action_type; + + +/* The element "simservs" maps to the Common Parts of a supplementary services document */ + + +/* XML Schema for data manipulation of Supplementary Services */ +type record Simservs +{ + record length (1..infinity) of XSD.String attr optional, + //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + //record of AbsService absService_list, + record of AbsService_group absService_list, + //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + record { + record of XSD.String elem_list + } extensions optional +}; + + +type SimservType AbsService; + + +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +type union AbsService_group { + AbsService absService, + Communication_diversion communication_diversion, + Originating_identity_presentation_restriction originating_identity_presentation_restriction, + Originating_identity_presentation originating_identity_presentation, + Terminating_identity_presentation_restriction terminating_identity_presentation_restriction, + Terminating_identity_presentation terminating_identity_presentation, + Incoming_communication_barring incoming_communication_barring, + Outgoing_communication_barring outgoing_communication_barring +}; +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + +type record SimservType +{ + XSD.Boolean active optional, + record length (1..infinity) of XSD.String attr optional +}; + + +type record Provisioned_type +{ + record length (1..infinity) of XSD.String attr optional, + XSD.Boolean provisioned optional +}; + + +type record Supported_media_type +{ + union { + Empty_element_type all_media, + Empty_element_type no_media, + record length(1 .. infinity) of record { + Media_type media + } sequence_list, + XSD.String elem + } choice +}; + + +type record Provisioned_target_type +{ + union { + Empty_element_type any_target_type, + Empty_element_type telephony_type, + XSD.String elem + } choice +}; + + +/* service specific IETF common policy condition elements */ + + +type Empty_element_type Anonymous; + + +type Presence_status_activity_type Presence_status; + + +type Media_type Media; + + +type Empty_element_type Communication_diverted; + + +type Empty_element_type Rule_deactivated; + + +type Empty_element_type Not_registered; + + +type Empty_element_type Busy; + + +type Empty_element_type No_answer; + + +type Empty_element_type Not_reachable; + + +type Empty_element_type Roaming; + + +type Empty_element_type International; + + +type Empty_element_type International_exHC; + + +/* service specific type declarations */ + + +type XSD.String Media_type; + + +type XSD.String Presence_status_activity_type; + + +type record Empty_element_type +{ + +}; + + +} diff --git a/IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/urn_ietf_params_xml_ns_common_policy.ttcn b/IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/urn_ietf_params_xml_ns_common_policy.ttcn new file mode 100644 index 0000000..ee3011e --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/urn_ietf_params_xml_ns_common_policy.ttcn @@ -0,0 +1,118 @@ +module urn_ietf_params_xml_ns_common_policy { + + +import from XSD all; + + +/* /ruleset */ + + +type record Ruleset +{ + record of RuleType rule_list +}; + + +/* /ruleset/rule */ + + +type record RuleType +{ + XSD.ID id, + ConditionsType conditions optional, + ExtensibleType actions optional, + ExtensibleType transformations optional +}; + + +/* //rule/conditions */ + + +type record ConditionsType +{ + record length(1 .. infinity) of union { + record length(0 .. 1) of IdentityType identity_list, + record length(1) of SphereType sphere_list, + record length(1) of ValidityType validity_list, + record length(1 .. infinity) of XSD.String elem_list + } choice_list +}; + + +/* //conditions/identity */ + + +type record IdentityType +{ + record length(1 .. infinity) of union { + OneType one, + ManyType many, + XSD.String elem + } choice_list +}; + + +/* //identity/one */ + + +type record OneType +{ + XSD.AnyURI id, + XSD.String elem optional +}; + + +/* //identity/many */ + + +type record ManyType +{ + XSD.String domain optional, + record of union { + ExceptType except_, + record length(0 .. 1) of XSD.String elem_list + } choice_list +}; + + +/* //many/except */ + + +type record ExceptType +{ + XSD.String domain optional, + XSD.AnyURI id optional +}; + + +/* //conditions/sphere */ + + +type record SphereType +{ + XSD.String value_ +}; + + +/* //conditions/validity */ + + +type record ValidityType +{ + record length(1 .. infinity) of record { + XSD.DateTime from_, + XSD.DateTime until + } sequence_list +}; + + +/* //rule/actions or //rule/transformations */ + + +type record ExtensibleType +{ + record of XSD.String elem_list +}; + + +} diff --git a/IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/urn_oma_xml_xdm_common_policy.ttcn b/IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/urn_oma_xml_xdm_common_policy.ttcn new file mode 100644 index 0000000..fb40c5c --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/urn_oma_xml_xdm_common_policy.ttcn @@ -0,0 +1,35 @@ +module urn_oma_xml_xdm_common_policy { + + +import from XSD all; + + +/* OMA specific "conditions" child elements */ + + +type EmptyType Other_identity; + + +type record External_list +{ + record of AnchorType entry_list +}; + + +type EmptyType Anonymous_request; + + +type record AnchorType +{ + XSD.AnyURI anc optional, + record length ( 1 .. infinity ) of XSD.String attr optional +}; + + +type record EmptyType +{ + +}; + + +} diff --git a/IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/xdm_commonPolicy-V1_0.xsd b/IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/xdm_commonPolicy-V1_0.xsd new file mode 100644 index 0000000..74b0004 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS/XCAP_XSD/xdm_commonPolicy-V1_0.xsd @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/IMS_PART4_IWD_14wk37/IMS_Testsuite_PART4.ttcn b/IMS_PART4_IWD_14wk37/IMS_Testsuite_PART4.ttcn new file mode 100644 index 0000000..e10a126 --- /dev/null +++ b/IMS_PART4_IWD_14wk37/IMS_Testsuite_PART4.ttcn @@ -0,0 +1,1643 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +/******************************************************************************/ + +module IMS_Testsuite_PART4 { + + import from MTC_Main_IMS_PART4 all; + import from MTC_Component_IMS_PART4 all; + import from IMS_34229_SelectionExpressions all; + import from IMS_Component all; + import from IMS_CC_Component all; + import from IMS_CC_AuthenticationTestcases all; + import from IMS_CC_CallControlTestcases all; + import from IMS_CC_CodecSelecting all; + import from IMS_CC_EmergencyCallTestcases all; + import from IMS_CC_MediaTestcases all; + import from IMS_CC_NotificationTestcases all; + import from IMS_CC_PDPContextActivationTestcases all; + import from IMS_CC_P_CSCFDiscoveryTestcases all; + import from IMS_CC_RegistrationTestcases all; + import from IMS_CC_SMSTestcases all; + import from IMS_CC_SSConferencingTestcases all; + import from IMS_CC_SSTestcases all; + import from IMS_CC_SSXcapTestcases all; + import from IMS_CC_SigCompTestcases all; + import from IMS_CC_SubscriptionTestcases all; + + //---------------------------------------------------------------------------- + testcase TC_10_1() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Invalid Behaviour – 503 Service Unavailable + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_10_1_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_11_1() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Network-initiated deregistration + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_11_1_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_11_2() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Network initiated re-authentication + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_11_2_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_12_12() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // MO MTSI Voice Call Successful with preconditions + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_12_12_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_12_13() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // MT MTSI Speech call + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_12_13_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_12_16() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // MO MTSI Text call + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_12_16_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_12_17() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // MT MTSI Text call + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_12_17_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_12_18() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // MTSI MO speech call / SSAC / 0% access probability for MTSI MO speech call + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_12_18_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_12_18a() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // MTSI MO speech call / SSAC in Connected mode / 0% access probability for MTSI MO speech call + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_12_18a_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_12_18b() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // MTSI MO speech call / SSAC in Connected mode / access probability changed for MTSI MO speech call + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_12_18b_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_12_19() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // MTSI MO video call / SSAC / 0% access probability for MTSI MO video call + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_12_19_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_12_19a() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // MTSI MO video call / SSAC in connected mode / 0% access probability for MTSI MO video call + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_12_19a_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_12_19b() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // MTSI MO speech call / SSAC in Connected mode / access probability changed for MTSI MO video call + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_12_19b_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_12_2() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // MO Call – 503 Service Unavailable + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_12_2_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_12_20() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Emergency call / Success / SSAC / 0% access propability for MTSI MO speech call + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + v_IMS2 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_12_20_IMS1()); + v_IMS2.start(f_TC_12_20_IMS2()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_12_20a() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Emergency call / Success / SSAC in connected mode / 0% access probability for MTSI MO speech call + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + v_IMS2 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_12_20a_IMS1()); + v_IMS2.start(f_TC_12_20a_IMS2()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_12_21() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // MO MTSI Video call + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_12_21_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_12_22() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // MT MTSI Video call + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_12_22_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_12_2a() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // MO Call – 504 Server Time-out + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_12_2a_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_13_2() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // SigComp in the MO Call + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_13_2_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_13_3() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // SigComp in the MT Call + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_13_3_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_15_1() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Originating Identification Presentation + + var IMS_XCAP_PTC v_IMS1 := null; + var IMS_XCAP_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(720); + + v_IMS1 := IMS_XCAP_PTC.create alive; + + f_MTC_IMS_XCAP_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_15_1_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_15_10() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Communication Forwarding on Not logged-in + + var IMS_XCAP_PTC v_IMS1 := null; + var IMS_XCAP_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(720); + + v_IMS1 := IMS_XCAP_PTC.create alive; + + f_MTC_IMS_XCAP_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_15_10_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_15_10a() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Communication Forwarding on Not reachable + + var IMS_XCAP_PTC v_IMS1 := null; + var IMS_XCAP_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(720); + + v_IMS1 := IMS_XCAP_PTC.create alive; + + f_MTC_IMS_XCAP_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_15_10a_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_15_11() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // MO Call Hold without announcement + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_15_11_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_15_12() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // MT Call Hold without announcement + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_15_12_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_15_13() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Incoming Communication Barring except for a specific user + + var IMS_XCAP_PTC v_IMS1 := null; + var IMS_XCAP_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(720); + + v_IMS1 := IMS_XCAP_PTC.create alive; + + f_MTC_IMS_XCAP_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_15_13_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_15_14() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Incoming Communication Barring for anonymous users + + var IMS_XCAP_PTC v_IMS1 := null; + var IMS_XCAP_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(720); + + v_IMS1 := IMS_XCAP_PTC.create alive; + + f_MTC_IMS_XCAP_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_15_14_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_15_14a() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Communication Barring while roaming + + var IMS_XCAP_PTC v_IMS1 := null; + var IMS_XCAP_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(720); + + v_IMS1 := IMS_XCAP_PTC.create alive; + + f_MTC_IMS_XCAP_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_15_14a_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_15_15() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Subscription to the MWI event package + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_15_15_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_15_17() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Creating and leaving a conference + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_15_17_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_15_18() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Inviting user to conference by sending a REFER request to the user + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_15_18_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_15_19() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Inviting user to conference by sending a REFER request to the conference focus + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_15_19_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_15_2() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Originating Identification Restriction + + var IMS_XCAP_PTC v_IMS1 := null; + var IMS_XCAP_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(720); + + v_IMS1 := IMS_XCAP_PTC.create alive; + + f_MTC_IMS_XCAP_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_15_2_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_15_21() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Joining a conference after being invited to it + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_15_21_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_15_21a() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Three way session creation + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_15_21a_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_15_27() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Communication Waiting and answering the call + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_15_27_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_15_28() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Communication Waiting and cancelling the call + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_15_28_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_15_3() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Terminating Identification Presentation + + var IMS_XCAP_PTC v_IMS1 := null; + var IMS_XCAP_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(720); + + v_IMS1 := IMS_XCAP_PTC.create alive; + + f_MTC_IMS_XCAP_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_15_3_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_15_4() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Terminating Identification Restriction + + var IMS_XCAP_PTC v_IMS1 := null; + var IMS_XCAP_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(720); + + v_IMS1 := IMS_XCAP_PTC.create alive; + + f_MTC_IMS_XCAP_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_15_4_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_15_5() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Communication Forwarding unconditional + + var IMS_XCAP_PTC v_IMS1 := null; + var IMS_XCAP_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(720); + + v_IMS1 := IMS_XCAP_PTC.create alive; + + f_MTC_IMS_XCAP_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_15_5_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_15_7() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Communication Forwarding on non Reply: activation + + var IMS_XCAP_PTC v_IMS1 := null; + var IMS_XCAP_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(720); + + v_IMS1 := IMS_XCAP_PTC.create alive; + + f_MTC_IMS_XCAP_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_15_7_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_15_8() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Communication Forwarding on non reply: MO call initiation + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_15_8_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_15_9() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Communication Forwarding on Busy + + var IMS_XCAP_PTC v_IMS1 := null; + var IMS_XCAP_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(720); + + v_IMS1 := IMS_XCAP_PTC.create alive; + + f_MTC_IMS_XCAP_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_15_9_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_16_2() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Speech AMR, indicate selective codec modes + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_16_2_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_16_3() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Speech AMR-WB, indicate all codec modes + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_16_3_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_16_4() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Speech AMR-WB, indicate all codec modes + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_16_4_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_17_1() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // MO Speech, add video remove video + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_17_1_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_17_2() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // MT Speech, add video remove video + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_17_2_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_18_1() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Mobile Originating SMS + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_18_1_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_18_2() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Mobile Terminating SMS + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_18_2_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_19_1_1() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Emergency call with emergency registration / Success / Location information available + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + v_IMS2 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_19_1_1_IMS1()); + v_IMS2.start(f_TC_19_1_1_IMS2()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_19_1_2() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Emergency call with emergency registration / Success / Location information not available + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + v_IMS2 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_19_1_2_IMS1()); + v_IMS2.start(f_TC_19_1_2_IMS2()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_19_1_5() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Emergency call with emergency registration / Emergency SIP signalling and media in parallel with an other ongoing IM CN subsystem signalling and media + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + v_IMS2 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_19_1_5_IMS1()); + v_IMS2.start(f_TC_19_1_5_IMS2()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_19_3_1() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Non-UE detectable emergency call / IM CN sends a 1xx response / UE geographical location information available + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_19_3_1_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_19_3_3() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Non-UE detectable emergency call / IM CN sends 380 Alternative Service / Emergency IMS registration + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + v_IMS2 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_19_3_3_IMS1()); + v_IMS2.start(f_TC_19_3_3_IMS2()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_19_3_4() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Non-UE detectable emergency call / IM CN sends 380 with an Alternative Service / Previous emergency IMS registration not expired + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + v_IMS2 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_19_3_4_IMS1()); + v_IMS2.start(f_TC_19_3_4_IMS2()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_19_5_10() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Deregistration upon emergency registration expiration + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + v_IMS2 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_19_5_10_IMS1()); + v_IMS2.start(f_TC_19_5_10_IMS2()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_19_5_6() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // User-initiated emergency reregistration / UE has emergency related ongoing dialog + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + v_IMS2 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_19_5_6_IMS1()); + v_IMS2.start(f_TC_19_5_6_IMS2()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_19_5_7() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // User-initiated emergency reregistration / The user initiates an emergency call + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + v_IMS2 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_19_5_7_IMS1()); + v_IMS2.start(f_TC_19_5_7_IMS2()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_19_5_8() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // User-initiated emergency reregistration / Standalone transactions exist + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + v_IMS2 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_19_5_8_IMS1()); + v_IMS2.start(f_TC_19_5_8_IMS2()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_19_5_9() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // In parallel emergency and non-emergency registrations + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + v_IMS2 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_19_5_9_IMS1()); + v_IMS2.start(f_TC_19_5_9_IMS2()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_6_3() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Dedicated PDP Context Establishment + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_6_3_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_7_1() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // P-CSCF Discovery via PDP Context + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_7_1_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_1() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Initial registration + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_8_1_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_14() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Initial registration for three implicit registration sets + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_8_14_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_15() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Refresh for ISIM parameters + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_8_15_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // User Initiated Re-Registration + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(3600); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_8_2_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_3() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Mobile Initiated Deregistration + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_8_3_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_4() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Invalid Behaviour – 423 Interval Too Brief + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_8_4_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_9_1() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Invalid Behaviour – MAC Parameter Invalid + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_9_1_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_9_2() runs on MTC_IMS system SYSTEM_IMS { + // @purpose + // Invalid Behaviour – SQN out of range + + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(300); + + v_IMS1 := IMS_PTC.create alive; + + f_MTC_IMS_CreateMapAndConnectPTCs(v_IMS1, v_IMS2); + + v_IMS1.start(f_TC_9_2_IMS()); + + t_GuardTimer.start; + + f_MTC_IMS_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + control { + if (f_SelectionExpr(IMS34_R)) { execute(TC_10_1()); } + if (f_SelectionExpr(IMS34_R)) { execute(TC_11_1()); } + if (f_SelectionExpr(IMS34_C17)) { execute(TC_11_2()); } + if (f_SelectionExpr(IMS34_C22)) { execute(TC_12_12()); } + if (f_SelectionExpr(IMS34_C27)) { execute(TC_12_13()); } + if (f_SelectionExpr(IMS34_C26)) { execute(TC_12_16()); } + if (f_SelectionExpr(IMS34_C37)) { execute(TC_12_17()); } + if (f_SelectionExpr(IMS34_C68)) { execute(TC_12_18()); } + if (f_SelectionExpr(IMS34_C68)) { execute(TC_12_18a()); } + if (f_SelectionExpr(IMS34_C68)) { execute(TC_12_18b()); } + if (f_SelectionExpr(IMS34_C69)) { execute(TC_12_19()); } + if (f_SelectionExpr(IMS34_C69)) { execute(TC_12_19a()); } + if (f_SelectionExpr(IMS34_C69)) { execute(TC_12_19b()); } + if (f_SelectionExpr(IMS34_C22)) { execute(TC_12_2()); } + if (f_SelectionExpr(IMS34_C64)) { execute(TC_12_20()); } + if (f_SelectionExpr(IMS34_C64)) { execute(TC_12_20a()); } + if (f_SelectionExpr(IMS34_C71)) { execute(TC_12_21()); } + if (f_SelectionExpr(IMS34_C70)) { execute(TC_12_22()); } + if (f_SelectionExpr(IMS34_C22)) { execute(TC_12_2a()); } + if (f_SelectionExpr(IMS34_R)) { execute(TC_13_2()); } + if (f_SelectionExpr(IMS34_R)) { execute(TC_13_3()); } + if (f_SelectionExpr(IMS34_C43)) { execute(TC_15_1()); } + if (f_SelectionExpr(IMS34_C30)) { execute(TC_15_10()); } + if (f_SelectionExpr(IMS34_C30)) { execute(TC_15_10a()); } + if (f_SelectionExpr(IMS34_C23)) { execute(TC_15_11()); } + if (f_SelectionExpr(IMS34_C23)) { execute(TC_15_12()); } + if (f_SelectionExpr(IMS34_C24)) { execute(TC_15_13()); } + if (f_SelectionExpr(IMS34_C45)) { execute(TC_15_14()); } + if (f_SelectionExpr(IMS34_C24)) { execute(TC_15_14a()); } + if (f_SelectionExpr(IMS34_C50)) { execute(TC_15_15()); } + if (f_SelectionExpr(IMS34_C32)) { execute(TC_15_17()); } + if (f_SelectionExpr(IMS34_C32)) { execute(TC_15_18()); } + if (f_SelectionExpr(IMS34_C32)) { execute(TC_15_19()); } + if (f_SelectionExpr(IMS34_C44)) { execute(TC_15_2()); } + if (f_SelectionExpr(IMS34_C32)) { execute(TC_15_21()); } + if (f_SelectionExpr(IMS34_C61)) { execute(TC_15_21a()); } + if (f_SelectionExpr(IMS34_C57)) { execute(TC_15_27()); } + if (f_SelectionExpr(IMS34_C57)) { execute(TC_15_28()); } + if (f_SelectionExpr(IMS34_C48)) { execute(TC_15_3()); } + if (f_SelectionExpr(IMS34_C49)) { execute(TC_15_4()); } + if (f_SelectionExpr(IMS34_C30)) { execute(TC_15_5()); } + if (f_SelectionExpr(IMS34_C30)) { execute(TC_15_7()); } + if (f_SelectionExpr(IMS34_C31)) { execute(TC_15_8()); } + if (f_SelectionExpr(IMS34_C30)) { execute(TC_15_9()); } + if (f_SelectionExpr(IMS34_C27)) { execute(TC_16_2()); } + if (f_SelectionExpr(IMS34_C28)) { execute(TC_16_3()); } + if (f_SelectionExpr(IMS34_C28)) { execute(TC_16_4()); } + if (f_SelectionExpr(IMS34_C71)) { execute(TC_17_1()); } + if (f_SelectionExpr(IMS34_C70)) { execute(TC_17_2()); } + if (f_SelectionExpr(IMS34_C55)) { execute(TC_18_1()); } + if (f_SelectionExpr(IMS34_C56)) { execute(TC_18_2()); } + if (f_SelectionExpr(IMS34_C76)) { execute(TC_19_1_1()); } + if (f_SelectionExpr(IMS34_C59)) { execute(TC_19_1_2()); } + if (f_SelectionExpr(IMS34_C72)) { execute(TC_19_1_5()); } + if (f_SelectionExpr(IMS34_C73)) { execute(TC_19_3_1()); } + if (f_SelectionExpr(IMS34_C59)) { execute(TC_19_3_3()); } + if (f_SelectionExpr(IMS34_C59)) { execute(TC_19_3_4()); } + if (f_SelectionExpr(IMS34_C59)) { execute(TC_19_5_10()); } + if (f_SelectionExpr(IMS34_C59)) { execute(TC_19_5_6()); } + if (f_SelectionExpr(IMS34_C59)) { execute(TC_19_5_7()); } + if (f_SelectionExpr(IMS34_C57)) { execute(TC_19_5_8()); } + if (f_SelectionExpr(IMS34_C59)) { execute(TC_19_5_9()); } + if (f_SelectionExpr(IMS34_C04)) { execute(TC_6_3()); } + if (f_SelectionExpr(IMS34_C05)) { execute(TC_7_1()); } + if (f_SelectionExpr(IMS34_C17)) { execute(TC_8_1()); } + if (f_SelectionExpr(IMS34_C17)) { execute(TC_8_14()); } + if (f_SelectionExpr(IMS34_C17)) { execute(TC_8_15()); } + if (f_SelectionExpr(IMS34_C17)) { execute(TC_8_2()); } + if (f_SelectionExpr(IMS34_C17)) { execute(TC_8_3()); } + if (f_SelectionExpr(IMS34_C17)) { execute(TC_8_4()); } + if (f_SelectionExpr(IMS34_C17)) { execute(TC_9_1()); } + if (f_SelectionExpr(IMS34_C17)) { execute(TC_9_2()); } + } +} diff --git a/IMS_PART4_IWD_14wk37/PicsPixit/IMS_CC_Parameters.ttcn b/IMS_PART4_IWD_14wk37/PicsPixit/IMS_CC_Parameters.ttcn new file mode 100644 index 0000000..4c6de2f --- /dev/null +++ b/IMS_PART4_IWD_14wk37/PicsPixit/IMS_CC_Parameters.ttcn @@ -0,0 +1,182 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +/******************************************************************************/ + +/******************************************************************************/ +// AUTOMATICALLY GENERATED MODULE - DO NOT MODIFY +// $Date: +// $Author: +// $Rev: +/******************************************************************************/ + +module IMS_CC_Parameters { + + import from CommonDefs all; + + //**************************************************************************** + // PIXIT Parameters + //---------------------------------------------------------------------------- + modulepar charstring px_DNSServer_IPAddr := "10.122.11.23"; // @desc DNS Server address + // Supported values: IPv4 or IPv6 + // Reference to other Spec: 34.229-3 + + modulepar charstring px_IMS_HomeDomainName_Refreshed := "refreshed3gpp.org"; + // @desc Used in 8.15 + + modulepar charstring px_IMS_Private_UserId_Refreshed := "privateuser@refreshed3gpp.org"; + // @desc Used in 8.15 + + modulepar charstring px_IMS_PublicUserIdentity1_Refreshed := "sip:PublicId1@refreshed3gpp.org"; + // @desc Used in 8.15 + + modulepar charstring px_P_CSCF_IPAddr := "10.122.11.22"; // @desc P-CSCF address + // Supported values: IPv4 or IPv6 + // Reference to other Spec: 34.229-3 + + modulepar charstring px_PeerUE_IPAddr := "10.122.11.25"; // @desc Peer UE address + // Supported values: IPv4 or IPv6 + // Reference to other Spec: 34.229-3 + + modulepar charstring px_SMS_SMSC_InternationalNumber; // @desc international number of the SMSC: + // It is set to the same value as used in EFPSISMSC if the EF is present on the ISIM (or the USIM ) + // Otherwise it is set to the same value as EFSMSP + // Reference to other Spec: 34.229-3 + + modulepar boolean px_UEwithSIM := false; // @desc UE has a SIM inserted + // Supported values: true,false + // Reference to other Spec: 34.229-3 + + modulepar charstring px_XCAPServerAddress := "10.122.11.26"; // @desc XCAP Server address + // Supported values: IPv4 or IPv6 + // Reference to other Spec: 34.229-3 + + modulepar charstring px_XCAP_RootUri := "XCAP.3gpp.org"; // @desc XCAP Root URI + + modulepar charstring px_XCAP_Username; // @desc username to be used for HTTP authentication in case of pc_XCAP_UsernameIsConfiguredInUE==true + + + //**************************************************************************** + // PICS Parameters + //---------------------------------------------------------------------------- + modulepar boolean pc_BidirecVoiceOverIMS := false; // @desc UE capable of initiating a bidirectional voice session over IMS + // Reference: 34.229-2 Table A.12/12 + + modulepar boolean pc_CommunicationHold_DuringEmergencyCall := false; + // @desc UE supports Communication Hold during emergency call + // Reference: 34.229-2, Table A.12/nn + + modulepar boolean pc_HttpDigestAuthentication := false; // @desc HTTP Digest XCAP Authentication + // Reference: 34.229-2, Table A.6a/4 + + modulepar boolean pc_HttpGAAAuthentication := false; // @desc GAA XCAP Authentication + // Reference: 34.229-2, Table A.6a/3 + + modulepar boolean pc_IMS_EmergencyCall := false; // @desc UE supports IMS emergency services + // Reference: 34.229-2 Table A.12/26 + + modulepar boolean pc_IMS_TWS := false; // @desc Three way session + // Reference: 34.229-2, Table A.16/14 + + modulepar boolean pc_IndicateSigcomp := false; // @desc Indicate the willingness to receive the responses and requests compressed from initial REGISTER onwards by using the "comp=sigcomp" parameter + // Reference: 34.229-2 Table A.8/5 + + modulepar boolean pc_InitiateP_CSCFDiscovery_viaDHCPv4 := false; // @desc UE capable of being configured to initiate P-CSCF discovery via DHCPv4 + // Reference: 34.229-2 Table A.13/1 + + modulepar boolean pc_InitiateP_CSCFDiscovery_viaDHCPv6 := false; // @desc UE capable of being configured to initiate P-CSCF discovery via DHCPv6 + // Reference: 34.229-2 Table A.12/7 + + modulepar boolean pc_InitiateP_CSCFDiscovery_viaPCO := false; // @desc UE capable of being configured to initiate P-CSCF discovery via PCO + // Reference: 34.229-2 Table A.12/5 + + modulepar boolean pc_InitiateSession := false; // @desc Initiating a session + // Reference: 34.229-2 Table A.4/2B + + modulepar boolean pc_InitiatesDedicatedPDPContext := false; // @desc UE capable of being configured to initiate Dedicated PDP Context + // Reference: 34.229-2 Table A.12/4 + + modulepar boolean pc_MTSI_ACR := false; // @desc MTSI supplementary services - Anonymous Communication Rejection + // Reference: 34.229-2 Table A.16/12 + + modulepar boolean pc_MTSI_CB := false; // @desc MTSI supplementary services - Communication Barring + // Reference: 34.229-2 Table A.16/7 + + modulepar boolean pc_MTSI_CommDivert := false; // @desc MTSI supplementary services - Communication Diversion + // Reference: 34.229-2 Table A.16/5 + + modulepar boolean pc_MTSI_CommHold := false; // @desc Communication Hold + // Reference: 34.229-2 Table A.16/6 + + modulepar boolean pc_MTSI_CommWaiting := false; // @desc MTSI supplementary services - Communication Waiting + // Reference: 34.229-2 Table A.16/13 + + modulepar boolean pc_MTSI_Conference := false; // @desc MTSI supplementary services - Conference + // Reference: 34.229-2 Table A.16/9 + + modulepar boolean pc_MTSI_MessageWait := false; // @desc MTSI supplementary services - Message Waiting Indication + // Reference: 34.229-2 Table A.16/8 + + modulepar boolean pc_MTSI_OIP := false; // @desc MTSI supplementary services - Originating Identification Presentation + // Reference: 34.229-2 Table A.16/1 + + modulepar boolean pc_MTSI_OIR := false; // @desc MTSI supplementary services - Originating Identification Restriction + // Reference: 34.229-2 Table A.16/2 + + modulepar boolean pc_MTSI_Speech := false; // @desc MTSI media - Speech + // Reference: 34.229-2 Table A.15/1 + + modulepar boolean pc_MTSI_Speech_AMRWB := false; // @desc MTSI media - Speech, AMR wideband + // Reference: 34.229-2 Table A.15/2 + + modulepar boolean pc_MTSI_TIP := false; // @desc MTSI supplementary services - Terminating Identification Presentation + // Reference: 34.229-2 Table A.16/3 + + modulepar boolean pc_MTSI_TIR := false; // @desc MTSI supplementary services - Terminating Identification Restriction + // Reference: 34.229-2 Table A.16/4 + + modulepar boolean pc_MTSI_Text_RTP := false; // @desc MTSI media - Text, RTP + // Reference: 34.229-2 Table A.15/7 + + modulepar boolean pc_MTSI_Video := false; // @desc MTSI media - Video + // Reference: 34.229-2 Table A.15/3 + + modulepar boolean pc_P_CSCFDiscovery_viaDHCP := false; // @desc UE supports P-CSCF Discovery via DHCP + // Reference: 34.229-2 Table A.12/9 + + modulepar boolean pc_P_CSCFDiscovery_viaDHCPv4 := false; // @desc UE supports P-CSCF discovery via DHCPv4 + // Reference: 34.229-2 Table A.13/2 + + modulepar boolean pc_P_CSCFDiscovery_viaDHCPv6 := false; // @desc UE supports P-CSCF discovery via DHCPv6 + // Reference: 34.229-2 Table A.12/10 + + modulepar boolean pc_P_CSCFDiscovery_viaPCO := false; // @desc UE supports P-CSCF Discovery via PCO + // Reference: 34.229-2 Table A.12/8 + + modulepar boolean pc_Preconditions := false; // @desc Integration of resource management and SIP? (use of preconditions) + // Reference: 34.229-2 Table A.4/16 + + modulepar boolean pc_SMS_MO := false; // @desc UE supports SM-over-IP sender + // Reference: 34.229-2 Table A.3A/61 + + modulepar boolean pc_SMS_MT := false; // @desc UE supports SM-over-IP receiver + // Reference: 34.229-2 Table A.3A/62 + + modulepar boolean pc_SendRTCPOnlyOnHold := true; // @desc UE supports sending RTCP only while call is put on hold + // Reference: 34.229-2 Table A.12/23 + + modulepar boolean pc_VideoCodecH264CBP := false; // @desc MTSI media - Video codec H.264 CBP Level 1.2 + // Reference: 34.229-2 Table A.15/9 + + modulepar boolean pc_XCAP_UsernameIsConfiguredInUE := false; // @desc UE indicated OMA-TS-XDM_MO-V1_1-20080627-A.doc, section 5.2.8 "Node: //AAUTHNAME" is configured + // Reference: 34.229-2 Table A.12/nn + + modulepar boolean pc_XCAP_XUIisDefaultPublicUserId := false; // @desc UE uses the default public user id received in P-Associated-URI header in 200 OK for REGISTER as XCAP User Identity (XUI) + // Reference: 34.229-2 Table A.12/mm + + +} diff --git a/IMS_PART4_IWD_14wk37/PicsPixit/IMS_CommonParameters.ttcn b/IMS_PART4_IWD_14wk37/PicsPixit/IMS_CommonParameters.ttcn new file mode 100644 index 0000000..fee818a --- /dev/null +++ b/IMS_PART4_IWD_14wk37/PicsPixit/IMS_CommonParameters.ttcn @@ -0,0 +1,102 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +/******************************************************************************/ + +/******************************************************************************/ +// AUTOMATICALLY GENERATED MODULE - DO NOT MODIFY +// $Date: +// $Author: +// $Rev: +/******************************************************************************/ + +module IMS_CommonParameters { + + import from IP_ASP_TypeDefs all; + + //**************************************************************************** + // PIXIT Parameters + //---------------------------------------------------------------------------- + modulepar charstring px_IMS_AssociatedTelUri := "tel:+4989364072"; + // @desc Set as record 3 in EFIMPU as defined in TS 34.229-1[5] + // Reference to other Spec: 34.229-3 + + modulepar charstring px_IMS_CalleeContactUri := "sip:User-B-Contact@3gpp.org"; + // @desc URI provided by the remote side (i.e. by SS) to be used by the UE as contact address in further SIP signalling of the dialog + // NOTE: in general this URI shall be different than the one in px_CalleeUri + // Reference to other Spec: 34.229-3 + + modulepar charstring px_IMS_CalleeUri := "sip:User-B@3gpp.org"; + // @desc URI of Callee, sent by the UE in INVITE (MO call establishment) to address the remote UE + // Reference to other Spec: 34.229-3 + + modulepar IPsec_CipheringAlgorithm_Type px_IMS_CiphAlgo_Def := des_ede3_cbc; // @desc Ciphering Algorithm + // Supported values: + // des_ede3_cbc, + // aes_cbc, + // nociph + // Reference to other Spec: 34.229-3 + + modulepar charstring px_IMS_HomeDomainName := "3gpp.org"; // @desc Home Domain Name. + // When using an ISIM it is set to the same value as EFDOMAIN. + // When not using ISIM just USIM the home domain name is derived from px_IMSI (preceded by 'sip:') + // Reference to other Spec: 34.229-3 + + modulepar IPsec_IntegrityAlgorithm_Type px_IMS_IPSecAlgorithm := hmac_sha_1_96; // @desc Integrity Algorithm + // Supported values: + // hmac_md5_96, + // hmac_sha_1_96 + // Reference to other Spec: 34.229-3 + + modulepar charstring px_IMS_Private_UserId := "privateuser@3gpp.org"; + // @desc Private User Identity.When usingan ISIM this is set to the same value as EFIMPI.When ISIM is not used just USIM the private user identity is derived from px_IMSI. + // + // Reference to other Spec: 34.229-3 + + modulepar charstring px_IMS_PublicUserIdentity1 := "sip:PublicId1@3gpp.org"; + // @desc Public User Identity. It is set to the same value as the first record in EFIMPU. + // Reference to other Spec: 34.229-3 + + modulepar charstring px_IMS_PublicUserIdentity2 := "sip:PublicId2@3gpp.org"; + // @desc Public User Identity. It is set to the same value as the second record in EFIMPU. + // Reference to other Spec: 34.229-3 + + modulepar charstring px_IMS_PublicUserIdentity3 := "sip:PublicId3@3gpp.org"; + // @desc Public User Identity. It is set to the same value as the third record in EFIMPU. + // Reference to other Spec: 34.229-3 + + modulepar charstring px_IMS_Scscf := "scscf.3gpp.org"; + // @desc S-CSCF fully qualified domain name that resolves to the IP address of SS + // Reference to other Spec: 34.229-3 + + modulepar boolean px_UEwithISIM := true; // @desc true - UE has ISIM; false - UE has USIM only + // Reference to other Spec: 34.229-3 + + + //**************************************************************************** + // PICS Parameters + //---------------------------------------------------------------------------- + modulepar boolean pc_IMS_GIBA_Sec := false; // @desc UE supports GIBA security only + // Reference: 34.229-2 Table A.6a/1 + + modulepar boolean pc_IMS_GRUUsInSIP := false; // @desc UE supports obtaining and using GRUUs in the Session Initiation Protocol (SIP) + // Reference: 34.229-2 Table A.4/53 + + modulepar boolean pc_IMS_Geolocation := false; // @desc UE uses Geolocation header to provide its geographical location for emergency session setup + // Reference: 34.229-2 Table A.12/27 + + modulepar boolean pc_IMS_RtcpDuringVoiceSession := false; // @desc RTCP used during voice session + // Reference: 34.229 ??? + + modulepar boolean pc_IMS_Sec := false; // @desc UE supports full IMS security + // Reference: 34.229-2 Table A.6a/2 + + modulepar boolean pc_MultimediaTelephonyService := false; // @desc Multimedia telephony service participant + // Reference: 34.229-2 Table A.3A/50 + + +} diff --git a/IMS_PART4_IWD_14wk37/PicsPixit/Parameters.ttcn b/IMS_PART4_IWD_14wk37/PicsPixit/Parameters.ttcn new file mode 100644 index 0000000..3a448df --- /dev/null +++ b/IMS_PART4_IWD_14wk37/PicsPixit/Parameters.ttcn @@ -0,0 +1,1127 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +/******************************************************************************/ + +/******************************************************************************/ +// AUTOMATICALLY GENERATED MODULE - DO NOT MODIFY +// $Date: +// $Author: +// $Rev: +/******************************************************************************/ + +module Parameters { + + import from CommonDefs all; + import from NAS_CommonTypeDefs all; + + //**************************************************************************** + // PIXIT Parameters + //---------------------------------------------------------------------------- + modulepar octetstring px_AccessPointName; // @desc Access Point Name + + modulepar EUTRA_ATTACH_TESTED_Type px_AttachTypeTested := EPS_ATTACH_ONLY; // @desc Attach Type to be tested, if UE supports both pc_Attach and pc_Combined_Attach + // Supported values: EPS_ATTACH_ONLY, COMBINED_ATTACH + + modulepar B16_Type px_AuthAMF; // @desc Authentication Management Field (16 bits). The value shall be different from '1111 1111 1111 111'B (AMFresynch). + // Default value: no default value can be proposed + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar B128_Type px_AuthK := oct2bit('000102030405060708090A0B0C0D0E0F'O); + // @desc Authentication Key + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar O43_Type px_ETWS_DigitalSignature; // @desc ETWS Digital Signature + + modulepar O8_Type px_EllipsoidPointWithAltitude; // @desc Ellipsoid Point With Altitude value to be provided in Update UE location information (see 36.509 cl 6.12) + + modulepar charstring px_EmergencyCallNumber := "112"; // @desc Emergency Number used by UE to initiate an emergency call + // Reference to other Spec: 34.123-3, Table B.1.2 + + modulepar integer px_FDD_OperationBand; // @desc The operation band under test, as defined in 34.108 clause 5.1.1. Value 1 means Band 1, 2 means Band 2 etc.This pixit shall be set in synchronisation with the values that are being set to 6 other Pixits viz: px_UARFCN_D_High, px_UARFCN_D_Mid,px_UARFCN_L_Mid + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar O3_Type px_HorizontalVelocity; // @desc Horizontal Velocity to be provided in Update UE location information (see 36.509 cl 6.12) + + modulepar hexstring px_IMEISV_Def; // @desc Default IMEISV value. No default can be proposed as this is a manufacturer defined value + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar hexstring px_IMEI_Def; // @desc Default IMEI value. No default can be proposed as this is a manufacturer defined value + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar hexstring px_IMSI_Def := '001010123456063'H; + // @desc Default IMSI + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar integer px_IP_MTU_Size := 65535; // @desc MTU size + + modulepar charstring px_IPv4_Address1_NW; // @desc IPv4 Gateway Address in PDN1 + + modulepar charstring px_IPv4_Address1_RemoteUE; // @desc IPv4 Address of remote UE connected to PDN1 + + modulepar charstring px_IPv4_Address1_UE; // @desc IPv4 Address connected to PDN1 + + modulepar charstring px_IPv4_Address2_NW; // @desc IPv4 Gateway Address in PDN2 + + modulepar charstring px_IPv4_Address2_RemoteUE; // @desc IPv4 Address of remote UE connected to PDN2 + + modulepar charstring px_IPv4_Address2_UE; // @desc IPv4 Address connected to PDN2 + + modulepar charstring px_IPv4_Address_HomeAgent; // @desc IPv4 Home Address Agent + + modulepar charstring px_IPv6_Address1_NW; // @desc IPv6 Gateway Address in PDN1 + + modulepar charstring px_IPv6_Address1_RemoteUE; // @desc IPv6 Address of remote UE in PDN1 + + modulepar charstring px_IPv6_Address1_UE; // @desc IPv6 Address in PDN1 + + modulepar charstring px_IPv6_Address2_NW; // @desc IPv6 Gateway Address in PDN2 + + modulepar charstring px_IPv6_Address2_RemoteUE; // @desc IPv6 Address of remote UE in PDN2 + + modulepar charstring px_IPv6_Address2_UE; // @desc IPv6 Address in PDN2 + + modulepar charstring px_IPv6_Address_HomeAgent; // @desc IPv6 Home Address Agent + + modulepar octetstring px_PTMSI_Def := 'C2345678'O; // @desc Default PTMSI + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar octetstring px_PTMSI_SigDef := 'AB1234'O; // @desc Default PTMSI signature (3 octets, 3GPP 24.008 / 10.5.5.8). + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar charstring px_PWS_CB_DataPage1; // @desc ETWS or CMAS Page 1 warning data message + + modulepar charstring px_PWS_CB_DataPage2; // @desc ETWS or CMAS Page 2 warning data message + + modulepar charstring px_PWS_CB_DataPage3; // @desc CMAS or ETWS Page 3 warning data message + + modulepar charstring px_PWS_CB_DataPage4; // @desc CMAS or ETWS Page 4 warning data message + + modulepar RATComb_Tested_Type px_RATComb_Tested := EUTRA_UTRA; // @desc This parameter represents the network RAT capability/preference and indicates which, if any is supported, RAT combination is to be tested + // Supported values: EUTRA_UTRA, EUTRA_GERAN, EUTRA_Only + + modulepar boolean px_SMS_ChkMsgReceived := true; // @desc Whether the operator can check an MT Short Message received + + modulepar integer px_SMS_IndexOffset := 0; // @desc Memory location index at UE for SMS storage, used in +CMSS command + // Reference to other Spec: 34.123-3, Table B.1.2 + + modulepar charstring px_SMS_MsgFrmt := "1"; // @desc Either PDU (0) mode or Text mode (1) @sic R5s110750 sic@ + + modulepar charstring px_SMS_PrefMem1 := "SM"; // @desc SMS Preferred Memory 1 of TS 27.005 [31], clause 3.2.2 + // Reference to other Spec: 34.123-3, Table B.1.2 + + modulepar charstring px_SMS_PrefMem2 := "SM"; // @desc SMS Preferred Memory 2 of TS 27.005 [31], clause 3.2.2 + // Reference to other Spec: 34.123-3, Table B.1.2 + + modulepar charstring px_SMS_PrefMem3 := "MT"; // @desc SMS Preferred Memory 3 of TS 27.005 [31], clause 3.2.2 + // Reference to other Spec: 34.123-3, Table B.1.2 + + modulepar charstring px_SMS_Service := "0"; // @desc SMS Service of TS 27.005 [31], clause 3.2.1 + // Reference to other Spec: 34.123-3, Table B.1.2 + + modulepar SinglePLMN_TestedType px_SinglePLMN_Tested := MultiPLMN; // @desc This parameter represents the network capability/preference to support multi PLMNs on the same test Band and indicates the preference of multi PLMNs or single PLMN test environment + // Supported values: SinglePLMN, MultiPLMN, MultiPLMNinPrimaryBand, MultiPLMNinSecondaryBand + + modulepar octetstring px_TMSI_Def := '12345678'O; // @desc Default TMSI + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar O1_Type px_TestLoopModeB_Delay := '5A'O; // @desc This parameter represents the IP PDU delay to be used for UE test loop mode B intest cases, where long delay may be needed e.g. because of user interaction. + + modulepar CS_PS_MODE px_UE_CS_PS_UsageSetting_Tested := VOICE_CENTRIC; + // @desc specifies which CS/PS mode is under test @sic R5s120274 sic@ + // Supported values: VOICE_CENTRIC, DATA_CENTRIC + + modulepar PS_MODE px_UE_PS_UsageSetting_Tested := VOICE_CENTRIC; // @desc specifies which PS mode is under test @sic R5s120274 sic@ + // Supported values: VOICE_CENTRIC, DATA_CENTRIC + + modulepar UTRAN_FDD_TDD_Type px_UTRAN_ModeUnderTest := UTRAN_FDD; // @desc specifies which radio access technology is being tested in UTRAN + // Supported values: UTRAN_FDD, UTRAN_TDD + + modulepar B128_Type px_eAuthRAND := oct2bit('A3DE0C6D363E30C364A4078F1BF8D577'O); + // @desc Random Challenge + + modulepar NAS_Mcc px_eJapanMCC_Band6 := '442'H; // @desc Japan MCC code to be used for Band 6. The same value will be used for E-UTRAN and Inter-RAT cells. Type is different to that defined in 34.123-3. + + + //**************************************************************************** + // PICS Parameters + //---------------------------------------------------------------------------- + modulepar boolean pc_1xCSfallback := false; // @desc Support of 1xCS fallback + // Reference: 36.523-2, A.4.2.1.1-1/3 + + modulepar boolean pc_1xRTT := false; // @desc UE supports CDMA2000 1xRTT band class + // Reference: 36.523-2, A.4.1-1/4 + + modulepar boolean pc_Allowed_CSG_list := false; // @desc Support of Allowed CSG list + // Reference: 36.523-2 A.4.4-1/2 + + modulepar boolean pc_Attach := false; // @desc Support EPS attach (with or without pre-configuration) + // Reference: 36.523-2 A.4.4-2/1 + + modulepar boolean pc_Auto_PDN_Connectivity := false; // @desc Support of automatic PDN Connectivity in EUTRAN + // Reference: 36.523-2 A.4.4-1/68 + + modulepar boolean pc_Automatic_EPS_Re_Attach := false; // @desc Support of automatic re-activation of the EPS bearer(s) + // Reference: 36.523-2 A.4.4-1/64 + + modulepar boolean pc_Automatic_Re_Attach := false; // @desc Support of automatic re-activation of the EPS bearer(s) during Network Initiated Detach with detach type set to re-attach required + // Reference: 36.523-2 A.4.4-1/27 + + modulepar boolean pc_Available_PLMNs_AcT_Ind := false; // @desc Support of AccessTechnology indication in available PLMNs list + // Reference: 36.523-2 A.4.4.1-x + + modulepar boolean pc_BSRVCC := false; // @desc UE indicates g.3gpp.ps2cs-srvcc-orig-pre-alerting media feature tag in INVITE request + // Reference: 34.229-2 A.12/36 + + modulepar boolean pc_CMAS_Message := false; // @desc Support of CMAS message + // Reference: 36.523-2 A.4.4-1/58 + + modulepar boolean pc_CS := false; // @desc UE supports CS domain services + // Reference: 34.123-2 A.3/1 + + modulepar boolean pc_CS_Em_Call_in_1xRTT := false; // @desc Support for establishing the emergency call using the CS domain in 1xRTT + // Reference: 36.523-2 A.4.4-1/37 + + modulepar boolean pc_CS_Em_Call_in_GERAN := false; // @desc Support for establishing the emergency call using the CS domain in GERAN + // Reference: 36.523-2 A.4.4-1/36 + + modulepar boolean pc_CS_Em_Call_in_UTRA := false; // @desc Support for establishing the emergency call using the CS domain in UTRA + // Reference: 36.523-2 A.4.4-1/35 + + modulepar boolean pc_CS_Fallback := false; // @desc The UE supports CS fallback for voice calls. If true, pc_CS and at least one of pc_FDD, pc_TDD_HCR, pc_TDD_LCR, pc_TDD_VHCR or pc_UMTS_GSM is also true. + // Reference: 36.523-2, A.4.2.1.1-1/1 + + modulepar boolean pc_CS_PS_data_centric := false; // @desc Support of CS/PS mode 2 + // Reference: 36.523-2 A.4.4-2/5 + + modulepar boolean pc_CS_PS_voice_centric := false; // @desc Support of configuring the UE to voice centric + // Reference: 36.523-2 A.4.4-2/4 + + modulepar boolean pc_Combined_Attach := false; // @desc Support combined EPS/IMSI attach (with or without pre-configuration) + // Reference: 36.523-2 A.4.4-2/2 + + modulepar boolean pc_DL_IntraBand_ContCaBWclassB := false; // @desc DL Intra-band contiguous CA BW class B + // Reference: 36.523-2 A.4.3.3.1-1/1 + + modulepar boolean pc_DL_IntraBand_ContCaBWclassC := false; // @desc DL Intra-band contiguous CA BW class C + // Reference: 36.523-2 A.4.3.3.1-1/2 + + modulepar boolean pc_DL_interBand_CaBwClassComb_AA + := false; // @desc DL Inter-band contiguous CA BW class A-A + // Reference: 36.523-2 A.4.3.3.3-1/1 + + modulepar boolean pc_DL_intraBand_nonContCaBwClassComb_AA := false; + // @desc Support of DL intra-band non-contiguous CA BW Class Combination A-A + // Reference: 36.523-2 A.4.3.3.2-1/1 + + modulepar boolean pc_DSMIPv6 := false; // @desc Support of Mobility management based on Dual-Stack Mobile IPv6 + // Reference: 36.523-2 A.4.4-1/6 + + modulepar boolean pc_DaylightSavingTime := false; // @desc UE stores/updates the daylight saving time when receives information + // Reference: 36.523-2 A.4.4-1/xx + + modulepar boolean pc_DualRM_Coding := false; // @desc Dual RM Coding + // Reference: 36.523/2 ???? + + modulepar boolean pc_EAB := false; // @desc Support of Extended Access Barring + // Reference: 36.523-2 A.4.4-1/89 + + modulepar boolean pc_EAB_override := false; // @desc Support of Extended Access Barring Override + // Reference: 36.523-2 A.4.4-1/91 + + modulepar boolean pc_EDTM := false; // @desc Support for EDTM + // Reference: 36.523-2 A.4.4-1/38 + + modulepar boolean pc_EMM_Information := false; // @desc Support of EMM Information message + // Reference: 36.523-2 A.4.4-1/9 + + modulepar boolean pc_EPS_Services_Disable := false; // @desc Support of disabling of EPS services + // Reference: 36.523-2 A.4.4-1/26 + + modulepar boolean pc_ESM_MO_Bearer_Allocation := false; // @desc Support of ESM UE requested bearer resource allocation procedure + // Reference: 36.523-2 A.4.4-1/10 + + modulepar boolean pc_ESM_MO_Bearer_Modification := false; // @desc Support of ESM UE requested bearer resource modification procedure + // Reference: 36.523-2 A.4.4-1/11 + + modulepar boolean pc_ESM_Notification := false; // @desc Support of ESM Notification procedure + // Reference: 36.523-2 A.4.4.1-71 + + modulepar boolean pc_ESM_UE_Modification_NW_TFT := false; // @desc Support for UE requested modification of network allocated TFTs + // Reference: 36.523-2 A.4.4-1/54 + + modulepar boolean pc_ETWS_message := false; // @desc Support of ETWS message + // Reference: 36.523-2 A.4.4-1/20 + + modulepar boolean pc_E_UTRAN_2_GERAN_PSHO := false; // @desc Support for inter-RAT PS handover from E_UTRAN to GERAN + // Reference: 36.523-2 A.4.4-1/52 + + modulepar boolean pc_Enhanced_1xCSfallback := false; // @desc Support of Enhanced 1xCS fallback + // Reference: 36.523-2, A.4.2.1.1-1/x + + modulepar boolean pc_FDD := false; // @desc UE supports UTRA band as defined in TS 25.101 + // Reference: 34.123-2 A.1/1 + + modulepar boolean pc_FeatrGrp_1 := false; // @desc Support of Intra-subframe frequency hopping for PUSCH scheduled by UL grant, Extended cyclic prefix with f = 7.5kHz for DL resource block, DCI format 3a (TPC commands for PUCCH and PUSCH with single bit power adjustments), Multi-user MIMO for PDSCH, Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-0 - UE selected subband CQI without PMI, Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-2 - UE selected subband CQI with multiple PMI + // Reference: 36.523-2 A.4.5-1/1 + + modulepar boolean pc_FeatrGrp_10 := false; // @desc Support of EUTRA RRC_CONNECTED to GERAN (Packet_)Idle by Cell Change Order, EUTRA RRC_CONNECTED to GERAN (Packet_)Idle by Cell Change Order with NACC (Network Assisted Cell Change) + // Reference: 36.523-2 A.4.5-1/10 + + modulepar boolean pc_FeatrGrp_101 := false; // @desc DMRS with OCC (orthogonal cover code) and SGH (sequence group hopping) disabling + // Reference: 36.523-2 A.4.5-3/1 + + modulepar boolean pc_FeatrGrp_101_F := false; // @desc DMRS with OCC (orthogonal cover code) and SGH (sequence group hopping) disabling + // Reference: 36.523-2 A.4.5-3a/1 + + modulepar boolean pc_FeatrGrp_101_T := false; // @desc DMRS with OCC (orthogonal cover code) and SGH (sequence group hopping) disabling + // Reference: 36.523-2 A.4.5-3b/1 + + modulepar boolean pc_FeatrGrp_102 := false; // @desc Trigger type 1 SRS (aperiodic SRS) transmission (Up to X ports) + // Reference: 36.523-2 A.4.5-3/2 + + modulepar boolean pc_FeatrGrp_102_F := false; // @desc Trigger type 1 SRS (aperiodic SRS) transmission (Up to X ports) + // Reference: 36.523-2 A.4.5-3a/2 + + modulepar boolean pc_FeatrGrp_102_T := false; // @desc Trigger type 1 SRS (aperiodic SRS) transmission (Up to X ports) + // Reference: 36.523-2 A.4.5-3b/2 + + modulepar boolean pc_FeatrGrp_103 := false; // @desc PDSCH transmission mode 9 when up to 4 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3/3 + + modulepar boolean pc_FeatrGrp_103_F := false; // @desc PDSCH transmission mode 9 when up to 4 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3a/3 + + modulepar boolean pc_FeatrGrp_103_T := false; // @desc PDSCH transmission mode 9 when up to 4 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3b/3 + + modulepar boolean pc_FeatrGrp_104 := false; // @desc PDSCH transmission mode 9 for TDD when 8 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3/4 + + modulepar boolean pc_FeatrGrp_104_F := false; // @desc PDSCH transmission mode 9 for TDD when 8 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3a/4 + + modulepar boolean pc_FeatrGrp_104_T := false; // @desc PDSCH transmission mode 9 for TDD when 8 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3b/4 + + modulepar boolean pc_FeatrGrp_105 := false; // @desc Periodic CQI/PMI/RI reporting on PUCCH: Mode 2-0:UE selected subband CQI without PMI, when PDSCH transmission mode 9 is configured.Periodic CQI/PMI/RI reporting on PUCCH: Mode 2-1:UE selected subband CQI with single PMI, when PDSCH transmission mode 9 and up to 4 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3/5 + + modulepar boolean pc_FeatrGrp_105_F := false; // @desc Periodic CQI/PMI/RI reporting on PUCCH: Mode 2-0:UE selected subband CQI without PMI, when PDSCH transmission mode 9 is configured.Periodic CQI/PMI/RI reporting on PUCCH: Mode 2-1:UE selected subband CQI with single PMI, when PDSCH transmission mode 9 and up to 4 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3a/5 + + modulepar boolean pc_FeatrGrp_105_T := false; // @desc Periodic CQI/PMI/RI reporting on PUCCH: Mode 2-0:UE selected subband CQI without PMI, when PDSCH transmission mode 9 is configured.Periodic CQI/PMI/RI reporting on PUCCH: Mode 2-1:UE selected subband CQI with single PMI, when PDSCH transmission mode 9 and up to 4 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3b/5 + + modulepar boolean pc_FeatrGrp_106 := false; // @desc Periodic CQI/PMI/RI/PTI reporting on PUCCH: Mode 2-1: UE selected subband CQI with single PMI, when PDSCH transmission mode 9 and 8 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3/6 + + modulepar boolean pc_FeatrGrp_106_F := false; // @desc Periodic CQI/PMI/RI/PTI reporting on PUCCH: Mode 2-1: UE selected subband CQI with single PMI, when PDSCH transmission mode 9 and 8 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3a/6 + + modulepar boolean pc_FeatrGrp_106_T := false; // @desc Periodic CQI/PMI/RI/PTI reporting on PUCCH: Mode 2-1: UE selected subband CQI with single PMI, when PDSCH transmission mode 9 and 8 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3b/6 + + modulepar boolean pc_FeatrGrp_107 := false; // @desc Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-0: UE selected subband CQI without PMI, when PDSCH transmission mode 9 is configured. Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-2: UE selected subband CQI with multiple PMI, when PDSCH transmission mode 9 and up to 4 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3/7 + + modulepar boolean pc_FeatrGrp_107_F := false; // @desc Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-0: UE selected subband CQI without PMI, when PDSCH transmission mode 9 is configured. Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-2: UE selected subband CQI with multiple PMI, when PDSCH transmission mode 9 and up to 4 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3a/7 + + modulepar boolean pc_FeatrGrp_107_T := false; // @desc Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-0: UE selected subband CQI without PMI, when PDSCH transmission mode 9 is configured. Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-2: UE selected subband CQI with multiple PMI, when PDSCH transmission mode 9 and up to 4 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3b/7 + + modulepar boolean pc_FeatrGrp_108 := false; // @desc Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-2: UE selected subband CQI with multiple PMI, when PDSCH transmission mode 9 and 8 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3/8 + + modulepar boolean pc_FeatrGrp_108_F := false; // @desc Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-2: UE selected subband CQI with multiple PMI, when PDSCH transmission mode 9 and 8 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3a/8 + + modulepar boolean pc_FeatrGrp_108_T := false; // @desc Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-2: UE selected subband CQI with multiple PMI, when PDSCH transmission mode 9 and 8 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3b/8 + + modulepar boolean pc_FeatrGrp_109 := false; // @desc Periodic CQI/PMI/RI reporting on PUCCH Mode 1-1, submode 1 + // Reference: 36.523-2 A.4.5-3/9 + + modulepar boolean pc_FeatrGrp_109_F := false; // @desc Periodic CQI/PMI/RI reporting on PUCCH Mode 1-1, submode 1 + // Reference: 36.523-2 A.4.5-3a/9 + + modulepar boolean pc_FeatrGrp_109_T := false; // @desc Periodic CQI/PMI/RI reporting on PUCCH Mode 1-1, submode 1 + // Reference: 36.523-2 A.4.5-3b/9 + + modulepar boolean pc_FeatrGrp_10_F := false; // @desc Support of EUTRA RRC_CONNECTED to GERAN (Packet_)Idle by Cell Change Order, EUTRA RRC_CONNECTED to GERAN (Packet_)Idle by Cell Change Order with NACC (Network Assisted Cell Change) + // Reference: 36.523-2 A.4.5-1a/10 + + modulepar boolean pc_FeatrGrp_10_T := false; // @desc Support of EUTRA RRC_CONNECTED to GERAN (Packet_)Idle by Cell Change Order, EUTRA RRC_CONNECTED to GERAN (Packet_)Idle by Cell Change Order with NACC (Network Assisted Cell Change) + // Reference: 36.523-2 A.4.5-1b/10 + + modulepar boolean pc_FeatrGrp_11 := false; // @desc Support of EUTRA RRC_CONNECTED to 1xRTT CS Active handover + // Reference: 36.523-2 A.4.5-1/11 + + modulepar boolean pc_FeatrGrp_110 := false; // @desc Periodic CQI/PMI/RI reporting on PUCCH Mode 1-1, submode 2 + // Reference: 36.523-2 A.4.5-3/10 + + modulepar boolean pc_FeatrGrp_110_F := false; // @desc Periodic CQI/PMI/RI reporting on PUCCH Mode 1-1, submode 2 + // Reference: 36.523-2 A.4.5-3a/10 + + modulepar boolean pc_FeatrGrp_110_T := false; // @desc Periodic CQI/PMI/RI reporting on PUCCH Mode 1-1, submode 2 + // Reference: 36.523-2 A.4.5-3b/10 + + modulepar boolean pc_FeatrGrp_111 := false; // @desc Measurement reporting trigger Event A6 + // Reference: 36.523-2 A.4.5-3/11 + + modulepar boolean pc_FeatrGrp_111_F := false; // @desc Measurement reporting trigger Event A6 + // Reference: 36.523-2 A.4.5-3a/11 + + modulepar boolean pc_FeatrGrp_111_T := false; // @desc Measurement reporting trigger Event A6 + // Reference: 36.523-2 A.4.5-3b/11 + + modulepar boolean pc_FeatrGrp_112 := false; // @desc SCell addition within the Handover to EUTRA procedure + // Reference: 36.523-2 A.4.5-3/12 + + modulepar boolean pc_FeatrGrp_112_F := false; // @desc SCell addition within the Handover to EUTRA procedure + // Reference: 36.523-2 A.4.5-3a/12 + + modulepar boolean pc_FeatrGrp_112_T := false; // @desc SCell addition within the Handover to EUTRA procedure + // Reference: 36.523-2 A.4.5-3b/12 + + modulepar boolean pc_FeatrGrp_113 := false; // @desc Trigger type 0 SRS (periodic SRS) transmission on X Serving Cells + // Reference: 36.523-2 A.4.5-3/13 + + modulepar boolean pc_FeatrGrp_113_F := false; // @desc Trigger type 0 SRS (periodic SRS) transmission on X Serving Cells + // Reference: 36.523-2 A.4.5-3a/13 + + modulepar boolean pc_FeatrGrp_113_T := false; // @desc Trigger type 0 SRS (periodic SRS) transmission on X Serving Cells + // Reference: 36.523-2 A.4.5-3b/13 + + modulepar boolean pc_FeatrGrp_114 := false; // @desc Reporting of both UTRA CPICH RSCP and Ec/N0 in a Measurement Report + // Reference: 36.523-2 A.4.5-3/14 + + modulepar boolean pc_FeatrGrp_114_F := false; // @desc Reporting of both UTRA CPICH RSCP and Ec/N0 in a Measurement Report + // Reference: 36.523-2 A.4.5-3a/14 + + modulepar boolean pc_FeatrGrp_114_T := false; // @desc Reporting of both UTRA CPICH RSCP and Ec/N0 in a Measurement Report + // Reference: 36.523-2 A.4.5-3b/14 + + modulepar boolean pc_FeatrGrp_115 := false; // @desc time domain ICIC RLM/RRM measurement subframe restriction for the serving cell. time domain ICIC RRM measurement subframe restriction for neighbour cells. time domain ICIC CSI measurement subframe restriction + // Reference: 36.523-2 A.4.5-3/15 + + modulepar boolean pc_FeatrGrp_115_F := false; // @desc time domain ICIC RLM/RRM measurement subframe restriction for the serving cell. time domain ICIC RRM measurement subframe restriction for neighbour cells. time domain ICIC CSI measurement subframe restriction + // Reference: 36.523-2 A.4.5-3a/15 + + modulepar boolean pc_FeatrGrp_115_T := false; // @desc time domain ICIC RLM/RRM measurement subframe restriction for the serving cell. time domain ICIC RRM measurement subframe restriction for neighbour cells. time domain ICIC CSI measurement subframe restriction + // Reference: 36.523-2 A.4.5-3b/15 + + modulepar boolean pc_FeatrGrp_116 := false; // @desc Relative transmit phase continuity for spatial multiplexing in UL + // Reference: 36.523-2 A.4.5-3/16 + + modulepar boolean pc_FeatrGrp_116_F := false; // @desc Relative transmit phase continuity for spatial multiplexing in UL + // Reference: 36.523-2 A.4.5-3a/16 + + modulepar boolean pc_FeatrGrp_116_T := false; // @desc Relative transmit phase continuity for spatial multiplexing in UL + // Reference: 36.523-2 A.4.5-3b/16 + + modulepar boolean pc_FeatrGrp_11_F := false; // @desc Support of EUTRA RRC_CONNECTED to 1xRTT CS Active handover + // Reference: 36.523-2 A.4.5-1a/11 + + modulepar boolean pc_FeatrGrp_11_T := false; // @desc Support of EUTRA RRC_CONNECTED to 1xRTT CS Active handover + // Reference: 36.523-2 A.4.5-1b/11 + + modulepar boolean pc_FeatrGrp_12 := false; // @desc Support of EUTRA RRC_CONNECTED to HRPD Active handover + // Reference: 36.523-2 A.4.5-1/12 + + modulepar boolean pc_FeatrGrp_12_F := false; // @desc Support of EUTRA RRC_CONNECTED to HRPD Active handover + // Reference: 36.523-2 A.4.5-1a/12 + + modulepar boolean pc_FeatrGrp_12_T := false; // @desc Support of EUTRA RRC_CONNECTED to HRPD Active handover + // Reference: 36.523-2 A.4.5-1b/12 + + modulepar boolean pc_FeatrGrp_13 := false; // @desc Support of Inter-frequency handover (within FDD or TDD) + // Reference: 36.523-2 A.4.5-1/13 + + modulepar boolean pc_FeatrGrp_13_F := false; // @desc Support of Inter-frequency handover (within FDD or TDD) + // Reference: 36.523-2 A.4.5-1a/13 + + modulepar boolean pc_FeatrGrp_13_T := false; // @desc Support of Inter-frequency handover (within FDD or TDD) + // Reference: 36.523-2 A.4.5-1b/13 + + modulepar boolean pc_FeatrGrp_14 := false; // @desc Support of Measurement reporting event: Event A4 - Neighbour > threshold, Measurement reporting event: Event A5 - Serving < threshold1 & Neighbour > threshold2 + // Reference: 36.523-2 A.4.5-1/14 + + modulepar boolean pc_FeatrGrp_14_F := false; // @desc Support of Measurement reporting event: Event A4 - Neighbour > threshold, Measurement reporting event: Event A5 - Serving < threshold1 & Neighbour > threshold2 + // Reference: 36.523-2 A.4.5-1a/14 + + modulepar boolean pc_FeatrGrp_14_T := false; // @desc Support of Measurement reporting event: Event A4 - Neighbour > threshold, Measurement reporting event: Event A5 - Serving < threshold1 & Neighbour > threshold2 + // Reference: 36.523-2 A.4.5-1b/14 + + modulepar boolean pc_FeatrGrp_15 := false; // @desc Support of Measurement reporting event: Event B1 - Neighbour > threshold + // Reference: 36.523-2 A.4.5-1/15 + + modulepar boolean pc_FeatrGrp_15_F := false; // @desc Support of Measurement reporting event: Event B1 - Neighbour > threshold + // Reference: 36.523-2 A.4.5-1a/15 + + modulepar boolean pc_FeatrGrp_15_T := false; // @desc Support of Measurement reporting event: Event B1 - Neighbour > threshold + // Reference: 36.523-2 A.4.5-1b/15 + + modulepar boolean pc_FeatrGrp_16 := false; // @desc Support of Periodical measurement reporting for non-ANR related measurements + // Reference: 36.523-2 A.4.5-1/16 + + modulepar boolean pc_FeatrGrp_16_F := false; // @desc Support of Periodical measurement reporting for non-ANR related measurements + // Reference: 36.523-2 A.4.5-1a/16 + + modulepar boolean pc_FeatrGrp_16_T := false; // @desc Support of Periodical measurement reporting for non-ANR related measurements + // Reference: 36.523-2 A.4.5-1b/16 + + modulepar boolean pc_FeatrGrp_17 := false; // @desc Support of Periodical measurement reporting for SON / ANR and ANR related intra-frequency measurement reporting events + // Reference: 36.523-2 A.4.5-1/17 + + modulepar boolean pc_FeatrGrp_17_F := false; // @desc Support of Periodical measurement reporting for SON / ANR and ANR related intra-frequency measurement reporting events + // Reference: 36.523-2 A.4.5-1a/17 + + modulepar boolean pc_FeatrGrp_17_T := false; // @desc Support of Periodical measurement reporting for SON / ANR and ANR related intra-frequency measurement reporting events + // Reference: 36.523-2 A.4.5-1b/17 + + modulepar boolean pc_FeatrGrp_18 := false; // @desc Support of ANR related inter-frequency measurement reporting events + // Reference: 36.523-2 A.4.5-1/18 + + modulepar boolean pc_FeatrGrp_18_F := false; // @desc Support of ANR related inter-frequency measurement reporting events + // Reference: 36.523-2 A.4.5-1a/18 + + modulepar boolean pc_FeatrGrp_18_T := false; // @desc Support of ANR related inter-frequency measurement reporting events + // Reference: 36.523-2 A.4.5-1b/18 + + modulepar boolean pc_FeatrGrp_19 := false; // @desc Support of ANR related inter-RAT measurement reporting events + // Reference: 36.523-2 A.4.5-1/19 + + modulepar boolean pc_FeatrGrp_19_F := false; // @desc Support of ANR related inter-RAT measurement reporting events + // Reference: 36.523-2 A.4.5-1a/19 + + modulepar boolean pc_FeatrGrp_19_T := false; // @desc Support of ANR related inter-RAT measurement reporting events + // Reference: 36.523-2 A.4.5-1b/19 + + modulepar boolean pc_FeatrGrp_1_F := false; // @desc Support of Intra-subframe frequency hopping for PUSCH scheduled by UL grant, Extended cyclic prefix with f = 7.5kHz for DL resource block, DCI format 3a (TPC commands for PUCCH and PUSCH with single bit power adjustments), Multi-user MIMO for PDSCH, Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-0 - UE selected subband CQI without PMI, Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-2 - UE selected subband CQI with multiple PMI + // Reference: 36.523-2 A.4.5-1a/1 + + modulepar boolean pc_FeatrGrp_1_T := false; // @desc Support of Intra-subframe frequency hopping for PUSCH scheduled by UL grant, Extended cyclic prefix with f = 7.5kHz for DL resource block, DCI format 3a (TPC commands for PUCCH and PUSCH with single bit power adjustments), Multi-user MIMO for PDSCH, Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-0 - UE selected subband CQI without PMI, Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-2 - UE selected subband CQI with multiple PMI + // Reference: 36.523-2 A.4.5-1b/1 + + modulepar boolean pc_FeatrGrp_2 := false; // @desc Support of Simultaneous CQI and ACK/NACK on PUCCH, i.e. PUCCH format 2a and 2b, Absolute TPC command for PUSCH, Resource allocation type 1 for PDSCH, Periodic CQI/PMI/RI reporting on PUCCH: Mode 2- 0 - UE selected subband CQI without PMI, Periodic CQI/PMI/RI reporting on PUCCH: Mode 2-1 - UE selected subband CQI with single PMI + // Reference: 36.523-2 A.4.5-1/2 + + modulepar boolean pc_FeatrGrp_20 := false; // @desc Support of RB combination: SRB1 and SRB2 for DCCH + x AM DRB + x UM DRB + // Reference: 36.523-2 A.4.5-1/20 + + modulepar boolean pc_FeatrGrp_20_F := false; // @desc Support of RB combination: SRB1 and SRB2 for DCCH + x AM DRB + x UM DRB + // Reference: 36.523-2 A.4.5-1a/20 + + modulepar boolean pc_FeatrGrp_20_T := false; // @desc Support of RB combination: SRB1 and SRB2 for DCCH + x AM DRB + x UM DRB + // Reference: 36.523-2 A.4.5-1b/20 + + modulepar boolean pc_FeatrGrp_21 := false; // @desc Support of Predefined intra-subframe frequency hopping for PUSCH with N_sb > 1, Predefined inter-subframe frequency hopping for PUSCH with N_sb > 1 + // Reference: 36.523-2 A.4.5-1/21 + + modulepar boolean pc_FeatrGrp_21_F := false; // @desc Support of Predefined intra-subframe frequency hopping for PUSCH with N_sb > 1, Predefined inter-subframe frequency hopping for PUSCH with N_sb > 1 + // Reference: 36.523-2 A.4.5-1a/21 + + modulepar boolean pc_FeatrGrp_21_T := false; // @desc Support of Predefined intra-subframe frequency hopping for PUSCH with N_sb > 1, Predefined inter-subframe frequency hopping for PUSCH with N_sb > 1 + // Reference: 36.523-2 A.4.5-1b/21 + + modulepar boolean pc_FeatrGrp_22 := false; // @desc Support of UTRAN measurements and reporting in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1/22 + + modulepar boolean pc_FeatrGrp_22_F := false; // @desc Support of UTRAN measurements and reporting in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1a/22 + + modulepar boolean pc_FeatrGrp_22_T := false; // @desc Support of UTRAN measurements and reporting in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1b/22 + + modulepar boolean pc_FeatrGrp_23 := false; // @desc Support of GERAN measurements and reporting in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1/23 + + modulepar boolean pc_FeatrGrp_23_F := false; // @desc Support of GERAN measurements and reporting in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1a/23 + + modulepar boolean pc_FeatrGrp_23_T := false; // @desc Support of GERAN measurements and reporting in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1b/23 + + modulepar boolean pc_FeatrGrp_24 := false; // @desc Support of cdma2000 measurements and reporting in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1/24 + + modulepar boolean pc_FeatrGrp_24_F := false; // @desc Support of cdma2000 measurements and reporting in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1a/24 + + modulepar boolean pc_FeatrGrp_24_T := false; // @desc Support of cdma2000 measurements and reporting in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1b/24 + + modulepar boolean pc_FeatrGrp_25 := false; // @desc Support of Inter-frequency measurements and reporting in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1/25 + + modulepar boolean pc_FeatrGrp_25_F := false; // @desc Support of Inter-frequency measurements and reporting in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1a/25 + + modulepar boolean pc_FeatrGrp_25_T := false; // @desc Support of Inter-frequency measurements and reporting in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1b/25 + + modulepar boolean pc_FeatrGrp_26 := false; // @desc Support of HRPD measurements, reporting and measurement reporting event B2 in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1/26 + + modulepar boolean pc_FeatrGrp_26_F := false; // @desc Support of HRPD measurements, reporting and measurement reporting event B2 in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1a/26 + + modulepar boolean pc_FeatrGrp_26_T := false; // @desc Support of HRPD measurements, reporting and measurement reporting event B2 in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1b/26 + + modulepar boolean pc_FeatrGrp_27 := false; // @desc Support of EUTRA RRC_CONNECTED to UTRA CELL_DCH CS handover + // Reference: 36.523-2 A.4.5-1/27 + + modulepar boolean pc_FeatrGrp_27_F := false; // @desc Support of EUTRA RRC_CONNECTED to UTRA CELL_DCH CS handover + // Reference: 36.523-2 A.4.5-1a/27 + + modulepar boolean pc_FeatrGrp_27_T := false; // @desc Support of EUTRA RRC_CONNECTED to UTRA CELL_DCH CS handover + // Reference: 36.523-2 A.4.5-1b/27 + + modulepar boolean pc_FeatrGrp_28 := false; // @desc Support of TTI bundling + // Reference: 36.523-2 A.4.5-1/28 + + modulepar boolean pc_FeatrGrp_28_F := false; // @desc Support of TTI bundling + // Reference: 36.523-2 A.4.5-1a/28 + + modulepar boolean pc_FeatrGrp_28_T := false; // @desc Support of TTI bundling + // Reference: 36.523-2 A.4.5-1b/28 + + modulepar boolean pc_FeatrGrp_29 := false; // @desc Support of Semi-Persistent Scheduling + // Reference: 36.523-2 A.4.5-1/29 + + modulepar boolean pc_FeatrGrp_29_F := false; // @desc Support of Semi-Persistent Scheduling + // Reference: 36.523-2 A.4.5-1a/29 + + modulepar boolean pc_FeatrGrp_29_T := false; // @desc Support of Semi-Persistent Scheduling + // Reference: 36.523-2 A.4.5-1b/29 + + modulepar boolean pc_FeatrGrp_2_F := false; // @desc Support of Simultaneous CQI and ACK/NACK on PUCCH, i.e. PUCCH format 2a and 2b, Absolute TPC command for PUSCH, Resource allocation type 1 for PDSCH, Periodic CQI/PMI/RI reporting on PUCCH: Mode 2- 0 - UE selected subband CQI without PMI, Periodic CQI/PMI/RI reporting on PUCCH: Mode 2-1 - UE selected subband CQI with single PMI + // Reference: 36.523-2 A.4.5-1a/2 + + modulepar boolean pc_FeatrGrp_2_T := false; // @desc Support of Simultaneous CQI and ACK/NACK on PUCCH, i.e. PUCCH format 2a and 2b, Absolute TPC command for PUSCH, Resource allocation type 1 for PDSCH, Periodic CQI/PMI/RI reporting on PUCCH: Mode 2- 0 - UE selected subband CQI without PMI, Periodic CQI/PMI/RI reporting on PUCCH: Mode 2-1 - UE selected subband CQI with single PMI + // Reference: 36.523-2 A.4.5-1b/2 + + modulepar boolean pc_FeatrGrp_3 := false; // @desc Support of Semi-persistent scheduling, TTI bundling, 5bit RLC UM SN, 7bit PDCP SN + // Reference: 36.523-2 A.4.5-1/3 + + modulepar boolean pc_FeatrGrp_30 := false; // @desc Support of Handover between FDD and TDD + // Reference: 36.523-2 A.4.5-1/30 + + modulepar boolean pc_FeatrGrp_30_F := false; // @desc Support of Handover between FDD and TDD + // Reference: 36.523-2 A.4.5-1a/30 + + modulepar boolean pc_FeatrGrp_30_T := false; // @desc Support of Handover between FDD and TDD + // Reference: 36.523-2 A.4.5-1b/30 + + modulepar boolean pc_FeatrGrp_31 := false; // @desc Support of the mechanisms defined for cells broadcasting multi band information i.e. comprehending multiBandInfoList + // Reference: 36.523-2 A.4.5-1/31 + + modulepar boolean pc_FeatrGrp_31_F := false; // @desc Support of the mechanisms defined for cells broadcasting multi band information i.e. comprehending multiBandInfoList + // Reference: 36.523-2 A.4.5-1a/31 + + modulepar boolean pc_FeatrGrp_31_T := false; // @desc Support of the mechanisms defined for cells broadcasting multi band information i.e. comprehending multiBandInfoList + // Reference: 36.523-2 A.4.5-1b/31 + + modulepar boolean pc_FeatrGrp_33 := false; // @desc Inter-RAT ANR features for UTRAN including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCellsForSON + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1c/1 + + modulepar boolean pc_FeatrGrp_33_F := false; // @desc Inter-RAT ANR features for UTRAN including: Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCellsForSON + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1d/1 + + modulepar boolean pc_FeatrGrp_33_T := false; // @desc Inter-RAT ANR features for UTRAN including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCellsForSON + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1e/1 + + modulepar boolean pc_FeatrGrp_34 := false; // @desc Inter-RAT ANR features for GERAN including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCells + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1c/2 + + modulepar boolean pc_FeatrGrp_34_F := false; // @desc Inter-RAT ANR features for GERAN including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCells + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1d/2 + + modulepar boolean pc_FeatrGrp_34_T := false; // @desc Inter-RAT ANR features for GERAN including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCells + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1e/2 + + modulepar boolean pc_FeatrGrp_35 := false; // @desc Inter-RAT ANR features for 1xRTT including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCellsForSON + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1c/3 + + modulepar boolean pc_FeatrGrp_35_F := false; // @desc Inter-RAT ANR features for 1xRTT including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCellsForSON + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1d/3 + + modulepar boolean pc_FeatrGrp_35_T := false; // @desc Inter-RAT ANR features for 1xRTT including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCellsForSON + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1e/3 + + modulepar boolean pc_FeatrGrp_36 := false; // @desc Inter-RAT ANR features for HRPD including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCellsForSON + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1c/4 + + modulepar boolean pc_FeatrGrp_36_F := false; // @desc Inter-RAT ANR features for HRPD including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCellsForSON + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1d/4 + + modulepar boolean pc_FeatrGrp_36_T := false; // @desc Inter-RAT ANR features for HRPD including: Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to portStrongestCellsForSON + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1e/4 + + modulepar boolean pc_FeatrGrp_37 := false; // @desc Inter-RAT ANR features for UTRAN TDD including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCellsForSON + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1c/5 + + modulepar boolean pc_FeatrGrp_37_F := false; // @desc Inter-RAT ANR features for UTRAN TDD including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCellsForSON + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1d/5 + + modulepar boolean pc_FeatrGrp_37_T := false; // @desc Inter-RAT ANR features for UTRAN TDD including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCellsForSON + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1e/5 + + modulepar boolean pc_FeatrGrp_38 := false; // @desc EUTRA RRC_CONNECTED to UTRA TDD CELL_DCH PS handover, if the UE supports both UTRAN FDD and UTRAN TDD + // Reference: 36.523-2 A.4.5-1c/6 + + modulepar boolean pc_FeatrGrp_38_F := false; // @desc EUTRA RRC_CONNECTED to UTRA TDD CELL_DCH PS handover, if the UE supports both UTRAN FDD and UTRAN TDD + // Reference: 36.523-2 A.4.5-1d/6 + + modulepar boolean pc_FeatrGrp_38_T := false; // @desc EUTRA RRC_CONNECTED to UTRA TDD CELL_DCH PS handover, if the UE supports both UTRAN FDD and UTRAN TDD + // Reference: 36.523-2 A.4.5-1e/6 + + modulepar boolean pc_FeatrGrp_39 := false; // @desc UTRAN TDD measurements, reporting and measurement reporting event B2 in E-UTRA connected mode, if the UE supports both UTRAN FDD and UTRAN TDD + // Reference: 36.523-2 A.4.5-1c/7 + + modulepar boolean pc_FeatrGrp_39_F := false; // @desc UTRAN TDD measurements, reporting and measurement reporting event B2 in E-UTRA connected mode, if the UE supports both UTRAN FDD and UTRAN TDD + // Reference: 36.523-2 A.4.5-1d/7 + + modulepar boolean pc_FeatrGrp_39_T := false; // @desc UTRAN TDD measurements, reporting and measurement reporting event B2 in E-UTRA connected mode, if the UE supports both UTRAN FDD and UTRAN TDD + // Reference: 36.523-2 A.4.5-1e/7 + + modulepar boolean pc_FeatrGrp_3_F := false; // @desc Support of Semi-persistent scheduling, TTI bundling, 5bit RLC UM SN, 7bit PDCP SN + // Reference: 36.523-2 A.4.5-1a/3 + + modulepar boolean pc_FeatrGrp_3_T := false; // @desc Support of Semi-persistent scheduling, TTI bundling, 5bit RLC UM SN, 7bit PDCP SN + // Reference: 36.523-2 A.4.5-1b/3 + + modulepar boolean pc_FeatrGrp_4 := false; // @desc Support of Short DRX cycle + // Reference: 36.523-2 A.4.5-1/4 + + modulepar boolean pc_FeatrGrp_40 := false; // @desc EUTRA RRC_CONNECTED to UTRA TDD CELL_DCH CS handover, if the UE supports both UTRAN FDD and UTRAN TDD + // Reference: 36.523-2 A.4.5-1c/8 + + modulepar boolean pc_FeatrGrp_40_F := false; // @desc EUTRA RRC_CONNECTED to UTRA TDD CELL_DCH CS handover, if the UE supports both UTRAN FDD and UTRAN TDD + // Reference: 36.523-2 A.4.5-1d/8 + + modulepar boolean pc_FeatrGrp_40_T := false; // @desc EUTRA RRC_CONNECTED to UTRA TDD CELL_DCH CS handover, if the UE supports both UTRAN FDD and UTRAN TDD + // Reference: 36.523-2 A.4.5-1e/8 + + modulepar boolean pc_FeatrGrp_41 := false; // @desc Measurement reporting event: Event B1 – Neighbour > threshold for UTRAN FDD, if the UE supports UTRAN FDD and has set bit number 22 to 1 + // Reference: 36.523-2 A.4.5-1c/9 + + modulepar boolean pc_FeatrGrp_41_F := false; // @desc Measurement reporting event: Event B1 – Neighbour > threshold for UTRAN FDD, if the UE supports UTRAN FDD and has set bit number 22 to 1 + // Reference: 36.523-2 A.4.5-1d/9 + + modulepar boolean pc_FeatrGrp_41_T := false; // @desc Measurement reporting event: Event B1 – Neighbour > threshold for UTRAN FDD, if the UE supports UTRAN FDD and has set bit number 22 to 1 + // Reference: 36.523-2 A.4.5-1e/9 + + modulepar boolean pc_FeatrGrp_4_F := false; // @desc Support of Short DRX cycle + // Reference: 36.523-2 A.4.5-1a/4 + + modulepar boolean pc_FeatrGrp_4_T := false; // @desc Support of Short DRX cycle + // Reference: 36.523-2 A.4.5-1b/4 + + modulepar boolean pc_FeatrGrp_5 := false; // @desc Support of Long DRX cycle, DRX command MAC control element + // Reference: 36.523-2 A.4.5-1/5 + + modulepar boolean pc_FeatrGrp_5_F := false; // @desc Support of Long DRX cycle, DRX command MAC control element + // Reference: 36.523-2 A.4.5-1a/5 + + modulepar boolean pc_FeatrGrp_5_T := false; // @desc Support of Long DRX cycle, DRX command MAC control element + // Reference: 36.523-2 A.4.5-1b/5 + + modulepar boolean pc_FeatrGrp_6 := false; // @desc Support of Piroritized bit rate + // Reference: 36.523-2 A.4.5-1/6 + + modulepar boolean pc_FeatrGrp_6_F := false; // @desc Support of Piroritized bit rate + // Reference: 36.523-2 A.4.5-1a/6 + + modulepar boolean pc_FeatrGrp_6_T := false; // @desc Support of Piroritized bit rate + // Reference: 36.523-2 A.4.5-1b/6 + + modulepar boolean pc_FeatrGrp_7 := false; // @desc Support of RLC UM + // Reference: 36.523-2 A.4.5-1/7 + + modulepar boolean pc_FeatrGrp_7_F := false; // @desc Support of RLC UM + // Reference: 36.523-2 A.4.5-1a/7 + + modulepar boolean pc_FeatrGrp_7_T := false; // @desc Support of RLC UM + // Reference: 36.523-2 A.4.5-1b/7 + + modulepar boolean pc_FeatrGrp_8 := false; // @desc Support of EUTRA RRC_CONNECTED to UTRA CELL_DCH PS handover + // Reference: 36.523-2 A.4.5-1/8 + + modulepar boolean pc_FeatrGrp_8_F := false; // @desc Support of EUTRA RRC_CONNECTED to UTRA CELL_DCH PS handover + // Reference: 36.523-2 A.4.5-1a/8 + + modulepar boolean pc_FeatrGrp_8_T := false; // @desc Support of EUTRA RRC_CONNECTED to UTRA CELL_DCH PS handover + // Reference: 36.523-2 A.4.5-1b/8 + + modulepar boolean pc_FeatrGrp_9 := false; // @desc Support of EUTRA RRC_CONNECTED to GERAN GSM_Dedicated handover + // Reference: 36.523-2 A.4.5-1/9 + + modulepar boolean pc_FeatrGrp_9_F := false; // @desc Support of EUTRA RRC_CONNECTED to GERAN GSM_Dedicated handover + // Reference: 36.523-2 A.4.5-1a/9 + + modulepar boolean pc_FeatrGrp_9_T := false; // @desc Support of EUTRA RRC_CONNECTED to GERAN GSM_Dedicated handover + // Reference: 36.523-2 A.4.5-1b/9 + + modulepar boolean pc_FullNameNetwork := false; // @desc Support of storage of the network full name + // Reference: 36.523-2 A.4.4-1/12 + + modulepar boolean pc_GERAN := false; // @desc UE Supports GSM and/or GPRS + // Reference: 36.523-2 A.4.1-1/7 + + modulepar boolean pc_GERAN_2_E_UTRAN_PSHO := false; // @desc Support of GERAN to E-UTRAN PS Handover + // Reference: 36.523-2 A.4.4-1/29 + + modulepar boolean pc_GERAN_2_E_UTRAN_meas + := false; // @desc Supports Neighbour Cell measurements and Network controlled & autonomous cell reselection to E-UTRAN + // Reference: 36.523-2 A.4.4-1/21 + + modulepar boolean pc_GERAN_2_E_UTRAN_measreporting_CCN := false; // @desc Supports CCN towards E-UTRAN, E-UTRAN Neighbour cell measurement reporting and Network controlled cell reselection to E-UTRAN + // Reference: 36.523-2 A.4.4-1/39 + + modulepar boolean pc_HO_from_UTRA_to_eFDD := false; // @desc Support of Inter-RAT PS handover to E-UTRA from UTRA (FDD) + // Reference: 36.523-2 A.4.4-1/8 + + modulepar boolean pc_HO_from_UTRA_to_eTDD := false; // @desc Support of Inter-RAT PS handover to E-UTRA from UTRA (TDD) + // Reference: 36.523-2 A.4.4-1/aa + + modulepar boolean pc_HRPD := false; // @desc UE supports CDMA2000 HRPD band class + // Reference: 36.523-2, A.4.1-1/3 + + modulepar boolean pc_IMS := false; // @desc Support of IMS + // Reference: 36.523-2 A.4.4-1/25 + + modulepar boolean pc_IMSI_Detach := false; // @desc Support of detach for non-EPS services + // Reference: 36.523-2 A.4.4-1/34 + + modulepar boolean pc_IMS_SRVCCAlert := false; // @desc UE indicates g.3gpp.srvcc-alerting media feature tag in INVITE request or 180 response + // Reference: 34.229-2 Table A.12/34 + + modulepar boolean pc_IMS_emergency_call := false; // @desc Support of MS emergency call + // Reference: 36.523-2, A.4.2.1.1-1/4 + + modulepar boolean pc_IPv4 := false; // @desc UE supports IPv4 (used IMS PICS as currently not defined in LTE) + // Reference: 34.229-2 A.7/1 + + modulepar boolean pc_IPv6 := false; // @desc UE supports IPv6 (used IMS PICS as currently not defined in LTE) + // Reference: 34.229-2 A.7/2 + + modulepar boolean pc_ISR := false; // @desc Support of ISR + // Reference: 36.523-2 A.4.4-1/5 + + modulepar boolean pc_ImmConnect := false; // @desc Immediate connection supported for all circuit switched basic services + // Reference: 34.123-2 A.20/6 + + modulepar boolean pc_InterFreq_ProximityIndication := false; // @desc Support of Inter Frequency Proximity Indication + // Reference: 36.523-2 A.4.4.1-b + + modulepar boolean pc_IntraFreq_ProximityIndication := false; // @desc Support of Intra Frequency Proximity Indication + // Reference: 36.523-2 A.4.4.1-a + + modulepar boolean pc_KeepEpsBearerParametersAfterNormalDetach := false; + // @desc If the UE supports this, then the next ATTACH after DETACH shall be done using AT command AT+CGATT=1. + // Otherwise it shall be done using AT+CGDCONT=1,”IP” followed by AT+CGACT=1 + // Reference: 36.523-2 A.4.4.2-n + + modulepar boolean pc_LAP_override := false; // @desc Support of Low Access Prioirty Override + // Reference: 36.523-2 A.4.4-1/90 + + modulepar boolean pc_LocalTimeZone := false; // @desc Support of storage of the local time zone + // Reference: 36.523-2 A.4.4-1/14 + + modulepar boolean pc_LoggedMeasurementsIdle := false; // @desc Support of logged measurements in RRC_IDLE + // Reference: 36.523-2 A.4.4-1/62 + + modulepar boolean pc_Manual_CSG_Selection := false; // @desc Support of Manual CSG selection + // Reference: 36.523-2 A.4.4-1/49 + + modulepar boolean pc_Multiple_PDN := false; // @desc Support for multiple PDN connections + // Reference: 36.523-2 A.4.4-1/29 + + modulepar boolean pc_PS := false; // @desc Packet Switched + // Reference: 34.123-2 A.3/2 + + modulepar boolean pc_PS_data_centric := false; // @desc Support of configuring the UE to PS data centric + // Reference: 36.523-2 A.4.4-2/8 + + modulepar boolean pc_PS_voice_centric := false; // @desc Support of configuring the UE to PS voice centric + // Reference: 36.523-2 A.4.4-2/7 + + modulepar boolean pc_PWS_UpperLayer := false; // @desc Presence of PWS upper layer for functions like duplicate definition + // Reference: 36.523-2 A.4.4-1/67 + + modulepar boolean pc_Provide_IMS_APN := false; // @desc Configured to provide IMS APN during initial attach + // Reference: 36.523-2 A.4.4-2/nn + + modulepar boolean pc_Provide_IMS_as_second_APN := false; // @desc Configured to provide IMS APN as the 2nd PDN connection + // Reference: 36.523-2 A.4.4-2/mm + + modulepar boolean pc_Provide_Internet_as_second_APN := false; // @desc Configured to provide Internet APN as the 2nd PDN connection + // Reference: 36.523-2 A.4.4-2/oo + + modulepar boolean pc_RLF_ReportForInterRAT_MRO := false; // @desc Support of Radio Link Failure Report for InterRAT MRO + // Reference: 36.523-2 A.4.4-1/xx + + modulepar boolean pc_ROHC_profile0x0001 := false; // @desc Support for ROHC profile0x0001 + // Reference: 36.523-2 A.4.4-1/40 + + modulepar boolean pc_ROHC_profile0x0002 := false; // @desc Support for ROHC profile0x0002 + // Reference: 36.523-2 A.4.4-1/41 + + modulepar boolean pc_ROHC_profile0x0003 := false; // @desc Support for ROHC profile0x0003 + // Reference: 36.523-2 A.4.4-1/42 + + modulepar boolean pc_ROHC_profile0x0004 := false; // @desc Support for ROHC profile0x0004 + // Reference: 36.523-2 A.4.4-1/43 + + modulepar boolean pc_ROHC_profile0x0006 := false; // @desc Support for ROHC profile0x0006 + // Reference: 36.523-2 A.4.4-1/44 + + modulepar boolean pc_ROHC_profile0x0101 := false; // @desc Support for ROHC profile0x0101 + // Reference: 36.523-2 A.4.4-1/45 + + modulepar boolean pc_ROHC_profile0x0102 := false; // @desc Support for ROHC profile0x0102 + // Reference: 36.523-2 A.4.4-1/46 + + modulepar boolean pc_ROHC_profile0x0103 := false; // @desc Support for ROHC profile0x0103 + // Reference: 36.523-2 A.4.4-1/47 + + modulepar boolean pc_ROHC_profile0x0104 := false; // @desc Support for ROHC profile0x0104 + // Reference: 36.523-2 A.4.4-1/48 + + modulepar boolean pc_Rach_Report := false; // @desc Support of delivery of rachReport upon request from the network + // Reference: 36.523-2 A.4.4-1/85 + + modulepar boolean pc_Re_Attach_AfterDetachColl := false; // @desc Support of automatic re-activation of the EPS bearers during network initiated detach, even though UE has initiated a detach procedure with detach type set to EPS detach or combined EPS/IMSI detach + // Reference: 36.523-2 A.4.4-1/55 + + modulepar boolean pc_RequestIPv4HAAddress_DuringAttach := false; // @desc Support for being configured to request the IPv4 address of the Home Agent during Attach procedure + // Reference: 36.523-2 A.4.4-1/23 + + modulepar boolean pc_RequestIPv6HAAddress_DuringAttach := false; // @desc Support for being configured to request the IPv6 address of the Home Agent during Attach procedure + // Reference: 36.523-2 A.4.4-1/22 + + modulepar boolean pc_SMS_SGs := false; // @desc The UE supports SMS over SGs and is configured for SMS over SGs. If true, at least one of pc_SMS_SGs_MT and pc_SMS_SGs_MO is true. If it is set to true, pc_combined_attach shall be set to true + // + // Reference: 36.523-2, A.4.2.1.1-1/2 + + modulepar boolean pc_SMS_SGs_MO := false; // @desc Support of Short Message Service (SMS) MO over SGs + // Reference: 36.523-2 A.4.4-1/4 + + modulepar boolean pc_SMS_SGs_MT := false; // @desc Support of Short Message Service (SMS) MT over SGs + // Reference: 36.523-2 A.4.4-1/3 + + modulepar boolean pc_SMS_SGs_Multi_MO := false; // @desc Support of sending concatenated multiple short message over SGs + // Reference: 36.523-2 A.4.4.1-72 + + modulepar boolean pc_SRVCC_GERAN_UTRAN := false; // @desc Support for SRVCC from E-UTRAN to GERAN/UTRAN + // Reference: 36.523-2 A.4.4-1/32 + + modulepar boolean pc_Semi_Persistence_Scheduling := false; // @desc Support of semi persistance scheduling + // Reference: 36.523-2 A.4.4-1/50 + + modulepar boolean pc_ShortNameNetwork := false; // @desc Support of storage of the network short name + // Reference: 36.523-2 A.4.4-1/13 + + modulepar boolean pc_Speech := false; // @desc UE supports Speech + // Reference: 34.123-2 A.2/1 + + modulepar boolean pc_Squal_based_CellReselection_between_E_UTRAN_and_GERAN := false; + // @desc Support of Squal based cell reselection to E-UTRAN from GERAN + // Reference: 36.523-2 A.4.4-1/79 + + modulepar boolean pc_Squal_based_CellReselection_to_E_UTRAN_from_UTRAN := false; + // @desc Support of Squal based cell reselection to E-UTRAN from UTRAN + // Reference: 36.523-2 A.4.4-1/57 + + modulepar boolean pc_Squal_based_CellReselection_to_UTRAN_from_E_UTRAN := false; + // @desc Support of Squal based cell reselection to UTRAN from E-UTRAN + // Reference: 36.523-2 A.4.4-1/56 + + modulepar boolean pc_StandaloneGNSS_Location := false; // @desc Support of standalone GNSS receiver to provide detailed location information in RRC measurement report and logged measurements in RRC_IDLE + // Reference: 36.523-2 A.4.4-1/63 + + modulepar boolean pc_SupportOpModeA := false; // @desc UE supports Operation Mode A + // Reference: 34.123-2 A.3/3 + + modulepar boolean pc_SwitchOnOff := false; // @desc switch on/off supported + // Reference: 36.523-2, A4.4-1/10 + + modulepar boolean pc_TAU_connected_in_IMS := false; // @desc Support of TAU in connected mode. Applicable when configured to pc_voice_PS_1_CS_2 and pc_Attach + // Reference: 36.523-2 A.4.4.1-73 + + modulepar boolean pc_TAU_idle_in_IMS := false; // @desc Support of TAU in idle mode. Applicable when configured to pc_voice_PS_1_CS_2 and pc_Attach + // Reference: 36.523-2 A.4.4.1-74 + + modulepar boolean pc_TDD_HCR := false; // @desc UE supports UTRA band as defined in TS 25.102 + // Reference: 34.123-2 A.1/2 + + modulepar boolean pc_TDD_LCR := false; // @desc UE supports UTRA band as defined in TS 25.102 + // Reference: 34.123-2 A.1/3 + + modulepar boolean pc_TDD_VHCR := false; // @desc UE supports UTRA band as defined in TS 25.102 + // Reference: 34.123-2 A.1/8 + + modulepar boolean pc_TTI_Bundling := false; // @desc Support of TTI Bundling + // Reference: 36.523-2 A.4.4-1/51 + + modulepar boolean pc_TestModeforCSGproximity := false; // @desc Support of UE radio bearer test mode for CSG proximity testing + // Reference: 36.523-2 A.4.4-1/XX + + modulepar boolean pc_UE_supports_user_initiated_PDN_disconnect := false; + // @desc UE supports user initiated PDN disconnect + // Reference: 36.523-2 A.4.4-2/pp + + modulepar boolean pc_UL_CA := false; // @desc Support of UL CA + // Reference: 36.523-2, ??? + + modulepar boolean pc_UL_IntraBand_ContCaBWclassB := false; // @desc UL Intra-band contiguous CA BW class B + // Reference: 36.523-2 A.4.3.3.1-2/1 + + modulepar boolean pc_UL_IntraBand_ContCaBWclassC := false; // @desc UL Intra-band contiguous CA BW class C + // Reference: 36.523-2 A.4.3.3.1-2/2 + + modulepar boolean pc_UL_MIMO := false; // @desc Support of UL MIMO + // Reference: 36.523-2 A.4.4-170 + + modulepar boolean pc_UL_interBand_CaBwClassComb_AA + := false; // @desc UL Inter-band contiguous CA BW class A-A + // Reference: 36.523-2 A.4.3.3.3-2/1 + + modulepar boolean pc_UL_intraBand_nonContCaBwClassComb_AA := false; + // @desc Support of UL intra-band non-contiguous CA BW Class Combination A-A + // Reference: 36.523-2 A.4.3.3.2-2/1 + + modulepar boolean pc_UMI_ProcNeeded_DuringCSFB := false; // @desc Requiring UMI proceeding to paging response + // Reference: 36.523-2 A.4.4-2/6 + + modulepar boolean pc_USIM_Removal := false; // @desc USIM removable without power down supported + // Reference: 36.523-2, A4.4-1/1 + + modulepar boolean pc_UTRA := false; // @desc UE supports UTRA + // Reference: 36.523-2 A.4.1-1/6 + + modulepar boolean pc_UTRAN_ANR := false; // @desc Support of UTRAN ANR + // Reference: 36.523-2 A.4.4-1/65 + + modulepar boolean pc_UTRAN_ProximityIndication := false; // @desc Support of UTRAN Proximity Indication + // Reference: 36.523-2 A.4.4.1-c + + modulepar boolean pc_UTRA_FeatrGrp_1 := false; // @desc Support of UTRA CELL_PCH and URA_PCH to RRC_IDLE cell reselection + // Reference: 36.523-2 A.4.5-2/1 + + modulepar boolean pc_UTRA_FeatrGrp_2 := false; // @desc Support of EUTRAN measurements and reporting in connected mode + // Reference: 36.523-2 A.4.5-2/2 + + modulepar boolean pc_UeAssistedAgps := false; // @desc Support of UE assisted Network Assisted GPS L1 C/A + // Reference: 37.571-3 Table A.4.3-1/11 + + modulepar boolean pc_UeBasedAgps := false; // @desc Support of UE based Network Assisted GPS L1 C/A + // Reference: 37.571-3 Table A.4.3-1/10 + + modulepar boolean pc_UniversalAndLocalTimeZone := false; // @desc Support of storage of the universal time and local time zone + // Reference: 36.523-2 A.4.4-1/15 + + modulepar boolean pc_UpdateUE_LocationInformation := false; // @desc Update UE Location Information + // Reference: 36.523-2 A.4.3-2/3 + + modulepar boolean pc_UserInitiatedPLMN_Reselection := false; // @desc Support user initiated PLMN reselection in automatic mode + // Reference: 36.523-2 A.4.4-1/69 + + modulepar boolean pc_VoLTE := false; // @desc Support of VoLTE in GSMA PRD IR.92: "IMS profile for Voice and SMS" + // Reference: 36.523-2 A.4.4-1/33 + + modulepar boolean pc_eFDD := false; // @desc UE supports EUTRA FDD + // Reference: 36.523-2 A.4.1-1/1 + + modulepar boolean pc_eFDD_MultiBand := false; // @desc Support of multiple E-UTRA FDD bands + // Reference: 36.523-2 A.4.1-2/1 + + modulepar boolean pc_eMBMS := false; // @desc Support of eMBMS + // Reference: 36.523-2 A.4.2.1.1.-1/5 + + modulepar boolean pc_eMBMS_SC := false; // @desc Support of eMBMS service continuity + // Reference: 36.523-2 A.4.2.1.1.-1/7 + + modulepar boolean pc_eRedirectionUTRA := false; // @desc Support of use of the UTRA system information provided by RRCConnectionRelease upon redirection + // Reference: 36.523-2 A.4.4-1/31 + + modulepar boolean pc_eTDD := false; // @desc UE supports EUTRA TDD + // Reference: 36.523-2 A.4.1-1/2 + + modulepar boolean pc_eTDD_MultiBand := false; // @desc Support of multiple E-UTRA TDD bands + // Reference: 36.523-2 A.4.1-2/2 + + modulepar boolean pc_multipleTimingAdvance := false; // @desc Support of multiple timing advances + // Reference: 36.523-2 A.4.4-1/88 + + modulepar boolean pc_ue_Category_1 := false; // @desc UE Category 1 + // Reference: 36.523-2 A.4.3.2-1/1 + + modulepar boolean pc_ue_Category_10 := false; // @desc UE Category 10 + // Reference: 36.523-2 A.4.3.2-1/10 + + modulepar boolean pc_ue_Category_2 := false; // @desc UE Category 2 + // Reference: 36.523-2 A.4.3.2-1/2 + + modulepar boolean pc_ue_Category_3 := false; // @desc UE Category 3 + // Reference: 36.523-2 A.4.3.2-1/3 + + modulepar boolean pc_ue_Category_4 := false; // @desc UE Category 4 + // Reference: 36.523-2 A.4.3.2-1/4 + + modulepar boolean pc_ue_Category_5 := false; // @desc UE Category 5 + // Reference: 36.523-2 A.4.3.2-1/5 + + modulepar boolean pc_ue_Category_6 := false; // @desc UE Category 6 + // Reference: 36.523-2 A.4.3.2-1/6 + + modulepar boolean pc_ue_Category_7 := false; // @desc UE Category 7 + // Reference: 36.523-2 A.4.3.2-1/7 + + modulepar boolean pc_ue_Category_8 := false; // @desc UE Category 8 + // Reference: 36.523-2 A.4.3.2-1/8 + + modulepar boolean pc_ue_Category_9 := false; // @desc UE Category 9 + // Reference: 36.523-2 A.4.3.2-1/9 + + modulepar boolean pc_voice_PS_1_CS_2 := false; // @desc Configured voice domain preference + // Reference: 36.523-2 A.4.4.2-n + + +} diff --git a/IMS_PART4_IWD_14wk37/PicsPixit/UTRAN_Parameters.ttcn b/IMS_PART4_IWD_14wk37/PicsPixit/UTRAN_Parameters.ttcn new file mode 100644 index 0000000..5dfbefc --- /dev/null +++ b/IMS_PART4_IWD_14wk37/PicsPixit/UTRAN_Parameters.ttcn @@ -0,0 +1,208 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +/******************************************************************************/ + +/******************************************************************************/ +// AUTOMATICALLY GENERATED MODULE - DO NOT MODIFY +// $Date: +// $Author: +// $Rev: +/******************************************************************************/ + +module UTRAN_Parameters { + + import from CommonDefs all; + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_ASP_Definitions language "ASN.1:2002" all; + import from UTRAN_CommonDefs all; + + //**************************************************************************** + // PIXIT Parameters + //---------------------------------------------------------------------------- + modulepar B1_Type px_BcapDataCompression := '0'B; // @desc Data compression supported (used in the Bearer Capability).Default value: Default IMSI + // Reference to other Spec: 34.123-3, Table B.2 + + modulepar B5_Type px_BcapFNUR := '00001'B; // @desc Fixed Network User rate supported: '00001'B: FNUR 9.6 kbit/s '00010'B: FNUR 14.4 kbit/s '00011'B: FNUR 19.2 kbit/s '00100'B: FNUR 28.8 kbit/s '00101'B: FNUR 38.4 kbit/s '00110'B: FNUR 48.0 kbit/s '00111'B: FNUR 56.0 kbit/s '01000'B: FNUR 64.0 kbit/s '01001'B: FNUR 33.6 kbit/s '01010'B: FNUR 32.0 kbit/s. + // Reference to other Spec: 34.123-3, Table B.2 + + modulepar B32_Type px_FRESH; // @desc no default value can be proposed + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar GPRS_CipheringAlgorithm_Type px_GPRS_CipheringAlgorithm := gea2; // @desc NAS Ciphering Algorithm, Default value: (GEA/2) + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar integer px_MFBI_UTRAN_FrequencyBand; // @desc A supported UTRAN MFBI frequency band. + // Reference to other Spec: 34.123-3, Table B.1.20 + + modulepar B1_Type px_MS_ClsmkESIND := '0'B; // @desc Default Early Sending Indication + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar B2_Type px_MS_ClsmkRevLvl := '10'B; // @desc Default Revision Level + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar RRC_ServTested px_RRC_PS_ServTested := ps_Interactive; // @desc PS Service to be tested + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar SRNC_Identity px_SRNC_Id := '000000000001'B; // @desc SRNC Id + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar S_RNTI px_SRNTI := '00000000000000000001'B; + // @desc S RNTI + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar charstring px_TDD_OperationBand; // @desc LCR TDD Operation Band + + modulepar integer px_UARFCN_D_High := 10837; // @desc High Range downlink UARFCN value + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar integer px_UARFCN_D_Low := 10563; // @desc Low Range downlink UARFCN value + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar integer px_UARFCN_D_Mid := 10700; // @desc Mid Range downlink UARFCN value + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar integer px_UARFCN_High_TDD := 9596; // @desc High Range downlink UARFCN value for LCR TDD + + modulepar integer px_UARFCN_Low_TDD := 9504; // @desc Low Range downlink UARFCN value for LCR TDD + + modulepar integer px_UARFCN_Mid_TDD := 9550; // @desc Mid Range downlink UARFCN value for LCR TDD + + modulepar CipheringAlgorithm_r7 px_UTRAN_CipheringAlgorithm := uea2; // @desc UTRAN Ciphering algorithm + // Supported values: uea0, uea1, uea2 + // Reference to other Spec: 34.123-3, Table B.1.20 + + modulepar integer px_UTRAN_OverlappingNotSupportedFrequencyBandMFBI; + // @desc A not supported UTRAN frequency band that is overlapping with a supported MFBI band (px_MFBI_UTRAN_FrequencyBand). This pixit shall be set also in accordance with the values of the 3 Pixits: px_UARFCN_D_High, px_UARFCN_D_Mid,px_UARFCN_L_Mid. + // Reference to other Spec: 34.123-3, Table B.1.20 + + + //**************************************************************************** + // PICS Parameters + //---------------------------------------------------------------------------- + modulepar boolean pc_AttachWithIMSI := false; // @desc Support of Attach With IMSI + // Reference: 34.123-2 A.10/x4 + + modulepar boolean pc_AutomaticAttachSwitchON := false; // @desc Support of automatic PS attach procedure at switch on. + // Reference: 34.123-2 A.20/38 + + modulepar boolean pc_Background := false; // @desc UE Supports Background QoS class + // Reference: 34.123-2 A.6/4 + + modulepar boolean pc_Band10_Supp := false; // @desc UE supports Frequency Band 10 + // Reference: 34.123-2 A.15/22 + + modulepar boolean pc_Band11_Supp := false; // @desc TRUE if UE supports Frequency Band 11 + // Reference: 34.123-2 Table A.15/23 + + modulepar boolean pc_Band12_Supp := false; // @desc TRUE if UE supports Frequency Band 12 + // Reference: 34.123-2 Table A.15/24 + + modulepar boolean pc_Band13_Supp := false; // @desc TRUE if UE supports Frequency Band 13 + // Reference: 34.123-2 Table A.15/25 + + modulepar boolean pc_Band14_Supp := false; // @desc TRUE if UE supports Frequency Band 14 + // Reference: 34.123-2 Table A.15/26 + + modulepar boolean pc_Band19_Supp := false; // @desc TRUE if UE supports Frequency Band 19 + // Reference: 34.123-2 Table A.15/27 + + modulepar boolean pc_Band1_Supp := false; // @desc UE supports Frequency Band 1 + // Reference: 34.123-2 A.15/2 + + modulepar boolean pc_Band20_Supp := false; // @desc TRUE if UE supports Frequency Band 20 + // Reference: 34.123-2 Table A.15/30 + + modulepar boolean pc_Band21_Supp := false; // @desc TRUE if UE supports Frequency Band 21 + // Reference: 34.123-2 Table A.15/28 + + modulepar boolean pc_Band22_Supp := false; // @desc TRUE if UE supports Frequency Band 22 + // Reference: 34.123-2 Table A.15/29 + + modulepar boolean pc_Band25_Supp := false; // @desc TRUE if UE supports Frequency Band 25 + // Reference: 34.123-2 Table A.15/31 + + modulepar boolean pc_Band26_Supp := false; // @desc TRUE if UE supports Frequency Band 26 + // Reference: 34.123-2 Table A.15/32 + + modulepar boolean pc_Band2_Supp := false; // @desc UE supports Frequency Band 2 + // Reference: 34.123-2 A.15/3 + + modulepar boolean pc_Band3_Supp := false; // @desc UE supports Frequency Band 3 + // Reference: 34.123-2 A.15/14 + + modulepar boolean pc_Band4_Supp := false; // @desc UE supports Frequency Band 4 + // Reference: 34.123-2 A.15/15 + + modulepar boolean pc_Band5_Supp := false; // @desc UE supports Frequency Band 5 + // Reference: 34.123-2 A.15/16 + + modulepar boolean pc_Band6_Supp := false; // @desc UE supports Frequency Band 6 + // Reference: 34.123-2 A.15/17 + + modulepar boolean pc_Band7_Supp := false; // @desc UE supports Frequency Band 7 + // Reference: 34.123-2 A.15/18 + + modulepar boolean pc_Band8_Supp := false; // @desc UE supports Frequency Band 8 + // Reference: 34.123-2 A.15/19 + + modulepar boolean pc_Band9_Supp := false; // @desc UE supports Frequency Band 9 + // Reference: 34.123-2 A.15/20 + + modulepar integer pc_EDCH_UE_Category_FDD; // @desc FDD E-DCH physical layer categories + // Reference: 34.123-2 Table A.18a.2 + + modulepar integer pc_EDCH_UE_Category_TDD; // @desc LCR TDD E-DCH physical layer categories + // Reference: 34.123-2 Table A.18b.2 + + modulepar boolean pc_EmergSpeech := false; // @desc Emergency Call + // Reference: 34.123-2 ??/2 + + modulepar boolean pc_HSDPA_FDD := false; // @desc UE Supports HSDPA - FDD + // Reference: 34.123-2 A.18a/14 + + modulepar boolean pc_HSDPA_TDD := false; // @desc UE Supports HSDPA - TDD + // Reference: 34.123-2 A.18b/10 + + modulepar HSDSCH_physical_layer_category pc_HSDSCH_UE_Category_FDD; // @desc FDD HS-DSCH physical layer categories + // Reference: 34.123-2 Table A.18a.1 + + modulepar HSDSCH_physical_layer_category pc_HSDSCH_UE_Category_TDD; // @desc LCR TDD HS-DSCH physical layer categories + // Reference: 34.123-2 Table A.18b.1 + + modulepar boolean pc_HSUPA_FDD := false; // @desc UE Supports HSUPA - FDD + // Reference: 34.123-2 A.18a/18 + + modulepar boolean pc_HSUPA_TDD := false; // @desc UE Supports HSUPA - TDD + // Reference: 34.123-2 A.18b/14 + + modulepar boolean pc_InterRAT_DL_CompressedModeRequired := false; // @desc UE supports DL DPCH compressed mode + // Reference: 34.123-2 A.18a/9a + + modulepar boolean pc_InterRAT_UL_CompressedModeRequired := false; // @desc UE supports UL DPCH compressed mode + // Reference: 34.123-2 A.18a/8a + + modulepar boolean pc_Interactive := false; // @desc UE Supports Interactive QoS class + // Reference: 34.123-2 A.6/3 + + modulepar boolean pc_LAP := false; // @desc Support of Low Access Priority Indication + // Reference: 34.123-2 A.10/x1 + + modulepar boolean pc_MinimumPeriodicSearchTimer := false; // @desc Support of Minimum Periodic Search Timer + // Reference: 34.123-2 A.10/x2 + + modulepar boolean pc_NMO_I_Behaviour := false; // @desc Support of the extended NMO I system information + // Reference: 34.123-2 A.10/x3 + + modulepar boolean pc_Streaming := false; // @desc UE Supports Streaming QoS class + // Reference: 34.123-2 A.6/2 + + modulepar boolean pc_UTRA_CompressedModeRequired := false; // @desc Support of Compressed Mode + // Reference: 36.523-2 A.4.4-1/28 + + +} diff --git a/LTE_A_IWD_14wk37/Common/C2K/CDMA2000_ASP_TypeDefs.ttcn b/LTE_A_IWD_14wk37/Common/C2K/CDMA2000_ASP_TypeDefs.ttcn new file mode 100644 index 0000000..2ec77bf --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/C2K/CDMA2000_ASP_TypeDefs.ttcn @@ -0,0 +1,993 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-04-01 15:09:57 +0200 (Mon, 01 Apr 2013) $ +// $Rev: 8395 $ +/******************************************************************************/ + +module CDMA2000_ASP_TypeDefs { + + import from CommonDefs all; + import from CDMA2000_CommonDefs all; + + //============================================================================ + + group CDMA2000_Common { /* Common definitions for CDMA2000 and CDMA2000 ASPs */ + + group CDMA2000_SystemContants { + + const integer tsc_CDMA2000_MaxNumberOfCells := 8; /* Maximum number of CDMA2000 cells; + * in TS 36.508 in, clause 6.3.1.5 and 6.3.1.6 define 4 cells each for HRPD and 1XRTT; + * hence total is 8 */ + + } // End of sub-group CDMA2000_SystemContants + + //---------------------------------------------------------------------------- + + group CDMA2000_Routing { + + type integer RLP_FlowId_Type (0..30); /* As per S.0024, clause 4.8.2.10 both MaxNumRLPFlowsFwd and MaxNumRLPFlowsRvs need to be in the range of 0x06(6) to 0x1F(31) + * As per x.s007 clause 10, the PDN ID and Flow ID identify a flow*/ + type record of RLP_FlowId_Type RLP_FlowIdList_Type; + + type union CDMA2000_RoutingInfo_Type { + Null_Type None, + RLP_FlowId_Type RLP_FlowId + }; + + } // End of sub-group CDMA2000_Routing + + //---------------------------------------------------------------------------- + + group CDMA2000_TimingInfo { + + type integer HRPD_FrameNumber_Type; /* CDMA system time specified in units of 16 slots i.e. 26.66 ms. */ + type integer SubFrameNumber_Type (0..3); /* A sub-frame is a group of four contiguous slots. + * The start of a sub-frame is specified by (T - FrameOffset) mod 4 = 0, where T is the CDMA System Time in slots */ + + type union HRPD_SubFrameInfo_Type { + SubFrameNumber_Type Number, + Null_Type Any /* no specific sub-frame (valid for REQ ASPs only) */ + }; + + type union HRPD_Frame_Type{ + HRPD_FrameNumber_Type Number, + Null_Type Any /* no specific TimeStamp (valid for REQ ASPs only) */ + }; + + type integer RTT1X_FrameNumber_Type; /* CDMA System Time, in integer multiples of 20 ms */ + + type union RTT1X_Frame_Type{ + RTT1X_FrameNumber_Type Number, + Null_Type Any /* no specific TimeStamp (valid for REQ ASPs only) */ + }; + + type record HRPD_SubFrameTiming_Type { + HRPD_Frame_Type Frame, + HRPD_SubFrameInfo_Type Subframe + }; + + type union CDMA2000_SubFrameTiming_Type { + HRPD_SubFrameTiming_Type HRPD, /* HRPD Timing */ + RTT1X_Frame_Type RTT1X /* RTT1X Timing specified in terms of Frames only*/ + }; + + type union CDMA2000_TimingInfo_Type { + CDMA2000_SubFrameTiming_Type SubFrame, + Null_Type Now, /* to be used in REQ ASPs when there is no 'activation time' */ + Null_Type None /* only to be used in SYSTEM_CTRL_CNF but not for EnquireTiming */ + }; + + } // End of sub-group CDMA2000_Timing_Info + + //---------------------------------------------------------------------------- + + group CDMA2000_ReqAspCommonPart { + + type record CDMA2000_ReqAspControlInfo_Type { + boolean CnfFlag, /* true => SS shall send CNF: + * when the REQ is with no timing information (no activation time), SS shall send the confirmation when the configuration is done, i.e. when the test case may continue. + * Example: + * when there is a configuration follow by a send event it shall not be necessary to have a wait timer in between but the CNF triggers the send event or system Command. + * If there are other triggers e.g. like the UE sending a message, CnfFlag shall be set to false by the test case to avoid racing conditions with the CNF and the signalling message. + * When there is an activation time SS shall send the CNF after the configuration has been scheduled; + * that means SS shall not wait until the activation time has been expired. + */ + boolean FollowOnFlag /* false => no further (related) information + * true: further related information will be sent to SS ; Currently this value is not foreseen to be used. + */ + }; + + type record CDMA2000_ReqAspCommonPart_Type { + CDMA2000_CellId_Type CellId, + CDMA2000_RoutingInfo_Type RoutingInfo, + CDMA2000_TimingInfo_Type TimingInfo, + CDMA2000_ReqAspControlInfo_Type ControlInfo + }; + + } // End of sub-group CDMA2000_ReqAspCommonPart + + //---------------------------------------------------------------------------- + + group CDMA2000_IndAspCommonPart { + + type record CDMA2000_ErrorIndication_Type { + integer System /* any other error: may be SS specific error code; this will not be evaluated by TTCN; + * e.g. an error shall be raised when the UE requests retransmission of an RLC PDU */ + }; + + type union CDMA2000_IndicationStatus_Type { + Null_Type Ok, + CDMA2000_ErrorIndication_Type Error + }; + + type record CDMA2000_IndAspCommonPart_Type { + CDMA2000_CellId_Type CellId, + CDMA2000_RoutingInfo_Type RoutingInfo, + CDMA2000_TimingInfo_Type TimingInfo, + CDMA2000_IndicationStatus_Type Status + }; + + } // End of sub-group CDMA2000_IndAspCommonPart + + //---------------------------------------------------------------------------- + + group CDMA2000_CnfAspCommonPart { + + type union CDMA2000_ConfirmationResult_Type { + Null_Type Success, + integer Error /* may contain SS specific error code; this will not be evaluated by TTCN */ + }; + + type record CDMA2000_CnfAspCommonPart_Type { + CDMA2000_CellId_Type CellId, + CDMA2000_RoutingInfo_Type RoutingInfo, + CDMA2000_TimingInfo_Type TimingInfo, + CDMA2000_ConfirmationResult_Type Result /* Similar definition as EUTRA */ + }; + + } // End of sub-group CDMA2000_CnfAspCommonPart + + } // End of group CDMA2000_Common + + //============================================================================ + + group CDMA2000_PowerLevel { + + type union CDMA2000_Attenuation_Type { /* attenuation of the reference power */ + Attenuation_Type Value, /* cell power reference power reduced by the given attenuation (value is in dB) */ + Null_Type Off /* for non suitable off cell we specify an explicit "Off" value here */ + }; + + type record CDMA2000_CellAttenuation_Type { + CDMA2000_CellId_Type CellId, + CDMA2000_Attenuation_Type Attenuation + }; + + type record length(1..tsc_CDMA2000_MaxNumberOfCells) of CDMA2000_CellAttenuation_Type CDMA2000_CellAttenuationList_Type; + + const CDMA2000_Attenuation_Type tsc_CDMA2000_Attenuation_Off := {Off:=true}; + + type CDMA2000_Attenuation_Type CDMA2000_InitialAttenuation_Type (tsc_CDMA2000_Attenuation_Off); /* Attenuation restricted to 'Off' */ + + type record CDMA2000_AbsoluteCellPower_Type { + PowerIoc_Type PowerIoc, /* TTCN writer Shall set same vale in all cells; SS shall have only one AWGN channel for all configured cells per frequency + * SS shall create a AWGN channel in first cell per frequency and ignore this in later cell creations on the same frequency; + * i.e. this channel is created along once for Cell 15 or 16 and one each per 17 and 19 + * similary for RTT1X once for 19 or 20 and one each per 21 and 22 */ + PowerIor_Type PowerIor, /* Total Transmit power in cell before attenuation */ + PilotOffset_Type PilotOffset /* Default -7 */ + }; + + + type record CDMA2000_InitialCellPower_Type { + CDMA2000_AbsoluteCellPower_Type MaxReferencePower, /* maximum value of cell reference power corresponding to Max Ior/Ioc in power level table; + * a cell is initialised with this reference power; + * its value is the upper bound of the cell power during the test case */ + CDMA2000_InitialAttenuation_Type Attenuation /* initial attenuation Cell is off */ + }; + + } // end of group CDMA2000_PowerLevel + + //============================================================================ + + group CDMA2000_Data { /* Data primitives sent/received at CDMA2000_RLP_FLOW_PORT */ + + type octetstring RLP_SDU_Type; + type record of RLP_SDU_Type RLP_SDUList_Type; + + type union CDMA2000_U_PlaneData_Type { /* Union structure is provided for future possible enhancements */ + RLP_SDUList_Type RLP_Sdu /* RLP SDU's */ + }; + + type record RLPFlow_DataPerSubframe_DL_Type { /* common definition for one or several SDUs to be sent in the subframe given by the subframe offset; + * SS shall raise an error indication (using SYSTEM_IND) when that is not possible + * NOTE 1: + * For RLP the data may be spread over more than one subframe ; + * the TTCN implemetation is responsible to calculate appropriate offsets accordingly */ + integer SubframeOffset, /* subframe offset relative to the absolute timing information given in the common part of the ASP; + * NOTE : + * if a RLP SDU takes more than one subframe, SubframeOffset specifies the first TTI */ + CDMA2000_U_PlaneData_Type SduList /* list of PDUs/SDUs to be sent in one subframe */ + }; + + + type record of RLPFlow_DataPerSubframe_DL_Type + RLPFlow_DataPerSubframeList_DL_Type; /* list of user plane data to be sent in sub-frames given by the SubframeOffset in the single elements of the list; + * Timing: + * the start time for the whole sequence is given by the timing info of the ASP (common information); + * the timing for the respective data pdus is given by the SubframeOffset relative to the common timing info; + * design consideration: + * repetitions of this sequence are not foreseen + * (in which case the subframe offset could not be related to the timing info of the ASP) */ + + type record CDMA2000_U_Plane_Request_Type { /* NOTE: formal type definition to allow later enhancements; + * CDMA2000_U_Plane_Request_Type defines a sequence of subframes in which data shall be sent */ + RLPFlow_DataPerSubframeList_DL_Type SubframeDataList + }; + + } // End of group CDMA2000_Data + + //============================================================================ + + group CDMA2000_CellConfiguration { + + type record HRPD_CellParameters_Type { /* Parameters specific to HRPD */ + SystemType_Type SystemType, /* Specifies the sytem type of Channel + * As per Table 13.1-1 of C.S0024 0, 1, 2 are defined values and 3 to 255 are reserved + */ + B8_Type SubNetMask, /* 7.11.6.2.2 of C.S0024 + * Sector Subnet identifier + * set this field to the number of consecutive 1s in the subnet mask of the subnet to which this sector belongs + */ + ColorCode_Type ColorCode, /* 7.11.6.2.1 of C.S0024 + * set to the color code corresponding to this sector part of QuickConfig Over head message + */ + MCC_Type CountryCode, /* 7.11.6.2.2 of C.S0024 + * three-digit BCD (binary coded decimal) encoded representation of the Mobile Country Code associated with this sector + */ + OpenLoopAdjust_Type OpenLoopAdjust, /* 9.4.6.2.6 of C.S0024; + * The negative of the nominal power to be used by access terminals in the open loop power estimate, expressed as an unsigned value in units of 1 dB. + * The value used by the access terminal is -1 times the value of this field + */ + ReverseRateLimit_Type ReverseRateLimit, /* Table 9.9.6.3-2 of C.S0024; + * set to the highest data rate that the access terminal is allowed to use on the Reverse Traffic Channel + */ + ReverseLinkMACIndex_Type MACIndex, /* C.S0024 clause 12.4.1.3.2.2 + * Forward channel MAC is derivered from this based on table 12.4.1.3.2.2-1 + */ + PacketApplication_Type PacketApp, /* Multi Flow Packet Application to be used + * Enhanced Multi-Flow Packet Application subtype(0x0009) defined in C.S0087 or + * as per C.S0087, clause 2.3 the UE Shalll not propose AEMPA during stream protocol negotiation (0xFFFE) in C.R1001 + */ + ControlChannelRate_Type ControlChannelRate, /* MAC index to be used for the Control Channel + */ + PDN_Id_Type PDN_Id, /* PDN_ID of the bearer */ + PDN_Address_Type PDN_Address, /* the PDN Address to be provided to the UE in VSNCP ConfigAck */ + UATI_Type UATI /* UATI to be Assigned to the UE */ + }; + + type record RTT1X_CellParameters_Type { /* Parameters specific to 1XRTT */ + B12_Type Reg_Zone, /* C.S005 clause 3.7.2.3.2.1 and 2.6.5.1.5 + * Registration Zone of the base station + * Reg_Zone, SID and NID shall be unique for each base station + */ + B4_Type Base_Class, /* C.S0005 clause 3.7.2.3.2.1 + * Base station class. + * The base station shall set this field as follows: + * For Band Class 1 and 4, the base station shall set this field to '0001'; otherwise, the base station shall set this field to '0000' + */ + /*B1_Type Nom_Pwr_Ext, C.S0005 clause 3.7.2.3.2.2 + * Extended 1 nominal transmit power. + * If the base station is operating in Band Class 0 or Band Class 3, it shall set this field to 0; otherwise, it shall set this field as follows: + * If the correction factor to be used by mobile stations in the open loop power estimate is between -24 dB and -9 dB inclusive, the base station shall set this field to 1; otherwise (the correction factor is in the range -8 dB to 7 dB inclusive), the base station shall set this field to 0 + */ + + B10_Type MCC, /* 3.7.2.3.2.13 and 2.3.1.1 of C.S0005 + * encoding is int2bit (100*D1+10*D2+D3 -111,10) with digit 0 being maped to 10 + * binary representation of the Mobile Country Code associated with this sector + */ + B7_Type IMSI_11_12, /* 3.7.2.3.2.13 and 2.3.1.2 of C.S0005 + * encoding is int2bit (10*D2+D3 -11,7) with digit 0 being maped to 10 + * binary representation of the Mobile Network Code associated with this sector + */ + TMSI_Type TMSI , /* the TMSI to be assigned to the MS */ + ProtRev_Type ProtRev, /* Protocol Revision */ + ProtRev_Type Min_ProtRev, /* the minimum protocol revision supported by Base station */ + EncryptionMode_Type Sig_EncryptionMode, /* Encryption mode for Common and dedicated signalling + */ + EncryptionMode_Type USerInfo_EncryptionMode /* User information Encryption mode + */ + }; + + type union ModeSpecificCellParams_Type { + RTT1X_CellParameters_Type RTT1X, + HRPD_CellParameters_Type HRPD + }; + + type record CDMA2000_CellParameters_Type { + CDMA2K_Type Type, /* Gives if cell is EHRPD or RTT1X */ + CarrierFreqCDMA2000_Type CarrierFreq, /* Contains bandclass (5 bit) and arfcn i.e. 11 bit channel number */ + PhysCellIdCDMA2000_Type PhysCellId, /* PN offset of pilot 0..511 */ + CellGlobalIdCDMA2000_Type CellGlobalId, /* Contains the 128 bit cell ID for HRPD and 47 bit cell ID for 1XRTT */ + SearchWindowSizeRecord_Type SearchWindow /* contains the SearchWindow for Active, Neighbor & Remaining cells */ + }; + + type record CDMA2000_CellConfigInfo_Type { + CDMA2000_CellParameters_Type CellParameters, /* Parameters common to HRPD and RTT1X */ + CDMA2000_InitialCellPower_Type InitialCellPower, /* Power level parameters */ + ModeSpecificCellParams_Type ModeSpecificCellParams /* Parameters specific to RTT1X or HRPD */ + }; + + type union CDMA2000_CellConfigRequest_Type{ + CDMA2000_CellConfigInfo_Type AddOrReconfigure, /* for cell configuration: + * CellId : identifier of the cell to be configured + * RoutingInfo : None + * TimingInfo : Now (for initial configuration and for reconfiguration in general) + * ControlInfo : CnfFlag:=true; FollowOnFlag:=false (in general) + */ + Null_Type Release /* to remove a cell completely - + * CellId : identifier of the cell to be released; eutra_Cell_NonSpecific, in case all cells shall be released + * RoutingInfo : None + * TimingInfo : Now + * ControlInfo : CnfFlag:=true; FollowOnFlag:=false (in general) + */ + }; + + } // end of group CDMA2000_CellConfiguration + + //============================================================================ + + group CDMA2000_HRPD { + + group CDMA2000_PDN_Defs { + + type O3_Type CDMA2000_AttachType; /* Defined values: + * 1: Initial Attach to a PDN, + * 3: Handover attach to a PDN. + * Rest undefined and not used + */ + type O4_Type IPv4_Address_Type; /* represents the IPv4 address as per 24.301 clause 9.9.4.9 */ + type O8_Type IPv6_Address_Type; /* represents the IPv6 interface identifier as per 24.301 clause 9.9.4.9 */ + type record IPv4v6_Address_Type { + IPv4_Address_Type IPv4, /* IP v4 address to be allocated */ + IPv6_Address_Type IPv6 /* IP v6 interface identifier to be allocated */ + }; + + + type union PDN_Address_Type { /* based on 24.301 cl. 9.9.4.9 */ + IPv4_Address_Type IPv4, /* only IP v4 address to be allocated */ + IPv6_Address_Type IPv6, /* only IP v6 interface identifier to be allocated */ + IPv4v6_Address_Type IPv4v6 /* both IP v4 address and IP v6 interface identifier to be allocated */ + }; + + type B4_Type PDN_Id_Type; /* indicates the PDN Id associated with the bearer PDN Identifier of the PDN for which the user data is sent. + * it is the low order 4 bits of, containing the PDN-ID identifies the PDN (i.e. one per default bearer) + * Reference x.s0057 clause 10.1.5; gives only low order 4 bits, and high order 4 bits are added as all zero's*/ + type record of PDN_Id_Type PDN_IdList_Type; + type B4_Type Flow_Id_Type; /* the lower 4 bits of the Flow Identifier, as defined in Table 15 of x.s0057 + * identify each reservation that is requested to be added or deleted + * the complete 8 bit flow Identifier is formed by PDN-ID and Flow-Id */ + type record of Flow_Id_Type Flow_IdList_Type; + + } //end of sub-group CDMA2000_PDN_Defs + + //---------------------------------------------------------------------------- + + group CDMA2000_SubProtocols { + + type record VSNCP_ConfigInd_Type { + PDN_Id_Type PDN_Id /* PDN_ID associated with the bearer provided by UE in VSNCP configuration request*/ + }; + +/* type enumerated PDN_DisconectInit_Type { */ +/* networkInitiated, /\* x.s0057 clause 11.3 *\/ */ +/* UEInitiated /\* x.s0057 clause 11.1.1 *\/ */ +/* }; */ + + type enumerated LCP_DetachInit_Type { + networkInitiated, /* x.s0057 clause 11.2 */ + UEInitiated /* x.s0057 clause 11.1.2 */ + }; + +/* type record VSNCP_TerminateInd_Type { */ +/* PDN_Id_Type PDN_Id, /\* PDN_ID associated with the bearer *\/ */ +/* PDN_DisconectInit_Type UE_NW_Initiated /\* If initiated by UE or Network *\/ */ +/* }; */ + +/* type record DedicatedBearerEstInd_Type { */ +/* Null_Type VSNP_ConfigCmpl, /\* VSNP procedured for Dedicated Bearer is completed *\/ */ +/* Null_Type EMPA_ConfigCmpl /\* Enhanced Multi flow Packet application ConfigurationRequest message is received */ +/* * Enhanced Multi flow Packet application ConfigurationComplete message is received *\/ */ +/* }; */ + + type record DHCP_Ind_Type { + boolean RapidCommit /* indicates if Rapid Comit option of DHCP is used */ + }; + + type union UATI104_Type { + O13_Type Value, + Null_Type None + }; + + type record UATI_Type { + O3_Type UATI24, /* Represents UATI (0:23), as per clause 6.3.7.2.2 of C.S0024 */ + UATI104_Type UATI104 /* Represents UATI (127:24), as per clause 6.3.7.2.2 of C.S0024 if has to be assigned */ + }; + +/* type record UATI_Ind_Type { */ +/* UATI_Type UATI /\* UATI to be Assigned to the UE *\/ */ +/* }; */ + + } // end of group CDMA2000_SubProtocols + + //---------------------------------------------------------------------------- + + group HRPD_Indications { + + type record RegAndDefBearerEstInd_Type { + Null_Type UATI_AssignmentCmpl, /* UATIAssignment is received + * UATIComplete is received + */ + Null_Type InitialChAssignCmpl, /* Initial Traffic/Extended Channel/AlternateLink(Pre-registration) Assignment procedure started UE has sent ConnectionRequest/AlternateLinkOpen message + * Traffic/Extended Channel /AlternateLink(Pre-registration) assignment is completedUE has sent TrafficChannelComplete( Route update protocol)/ AlternateLinkOpenComplete. + * In the registration and Default bearer establishment procedure, UE initiated Channel/Alternate Link can be released and configured, only first assignment is reported. + */ + + Null_Type SCP_ConfigCmpl, /* SCP (Session Configuration Protocol )ConfigurationRequest mesage is received + * SCP (Session Configuration Protocol )ConfigurationResponse mesage is transmitted + */ + Null_Type Stream_ConfigCmpl, /* Stream Protocol Configuration ConfigurationRequest mesage is received + * Stream Protocol Configuration ConfigurationResponse mesage is transmitted + */ + Null_Type EMPA_MMPA_ConfigCmpl, /* Enhanced Multi flow/Multi flow Packet application ConfigurationRequest mesage is received + * Enhanced Multi flow/Multi flow Packet application ConfigurationComplete mesage is received + * EMPA ConfigurationResponse message or MMPA ConfigurationResponse is received corresponding to steps 30A TO 30C of table 4.5.2B.3-2 + */ + + Null_Type SessionNegotiationCmpl optional, /* SS initiated Session Negotiation has started; Session Negotiation has completed + */ + Null_Type DeviceAuthCmpl optional, /* Device level authentication has started; Device level authentication has completed + */ + Null_Type LocationUpdateCmpl optional, /* Location Update started; Location Update completed + */ + Null_Type EAP_AKA_Cmpl, /* Improved Extensible Authentication protocol for Authentication and Key agreement started RFC 5448 + * Message flow in x.s0057 clause 5.2.5.1 Authentication and Key agreement Completed + optionally After entering PPP LCP Open State, PPP Version Capability Indicaiton and/or Max PPP Inactivity Timer negotiation are completed + */ + Null_Type VSNCP_ConfigCmpl, /* PDN connection establishment started and UE has sent + * PPP Vendor Specific Network Control Protocol Configuration Request PDN Connection and default bearer establishment is completed + * with possible IPV4 address (optional) and or IPv6 interface ID (Mandatory) provided + * Attach type shall be Handover Attach + */ + DHCP_Ind_Type DHCP_ConfigCmpl optional, /* UE and SS decided for IPv4 address allocation by DHCP IPv4 address allocation completed by UE and SS + * Completion of IP Address through DHCP + */ + Null_Type ICMPv6_ConfigCmpl optional /* UE optionally sent IPv6 stateless autoconfiguration Router solitation message and SS has responded with IPv6 Router Advertisement message + */ + }; + + type record HRPD_ZoneRegistrationInd_Type { + Null_Type UATI_AssignmentCmpl, /* UATIAssignment is received + * UATIComplete is received + */ + Null_Type EAP_AKA_Cmpl, /* Improved Extensible Authentication protocol for Authentication and Key agreement started RFC 5448 + * Message flow in x.s0057 clause 5.2.5.1 Authentication and Key agreement Completed + * optionally After entering PPP LCP Open State, PPP Version Capability Indicaiton and/or Max PPP Inactivity Timer negotiation are completed + */ + Null_Type VSNCP_ConfigCmpl, /* PDN connection establishment started and UE has sent + * PPP Vendor Specific Network Control Protocol Configuration Request PDN Connection and default bearer establishment is completed + * with possible IPV4 address (optional) and or IPv6 interface ID (Mandatory) provided + * Attach type shall be Handover Attach + */ + DHCP_Ind_Type DHCP_ConfigCmpl optional, /* UE and SS decided for IPv4 address allocation by DHCP IPv4 address allocation completed by UE and SS + * Completion of IP Address through DHCP + */ + Null_Type ICMPv6_ConfigCmpl optional /* UE optionally sent ICMPv6 Router solitation message and SS has responded with IPv6 Router Advertisement message + */ + }; + + type record DedicatedBearerRelInd_Type { + Null_Type VSNP_TerminateCmpl, /* Dedicated bearers are deactivated/ released + */ + Null_Type SCP_ReleaseCmpl optional /* Session Configuration Protocol to relase the reservations exclusively associated with the deleated bearer + * Reservation deletion completed + */ + }; + + type record DefaultBearerRelDetachInd_Type { + Null_Type VSNCP_TerminateCmpl optional, /* To Released configured default bearer and hense associated Dedicated bearer x.s0057 clause 11.3 and 11.1.1 + * To indicate the default bearer is released + */ + Null_Type LCP_TerminateCmpl /* To detach the UE x.s0057 clause 11.2 Detach completed + */ + }; + + type record MobilityFromEUTRACmpl_Type{ + Null_Type ConnectionReqRcvd, /* Received Tunneled HRPD Connection Request Message */ + Null_Type RouteUpdateInd, /* Received Tunneled HRPD Route Update Message */ + Null_Type TrafficChCmplRcvd /* Received HRPD Traffic Channel Complete in HRPD RAT, after transmission of tunneled Traffic Channel Assignment, + * HRPD Silence Parameters and HRPD Open Loop Parameters */ + }; + + type record AdditionalDefBearerEstInd_Type { + Null_Type VSNCP_ConfigCmpl, /* PDN connection establishment started and UE has sent + * PPP Vendor Specific Network Control Protocol Configuration Request PDN Connection and default bearer establishment is completed + * with possible IPV4 address (optional) and or IPv6 interface ID (Mandatory) provided + * Attach type shall be Handover Attach(pre-registration) or Initial Attach (if normal registration in HRPD cell) */ + DHCP_Ind_Type DHCP_ConfigCmpl optional, /* UE and SS decided for IPv4 address allocation by DHCP IPv4 address allocation completed by UE and SS + * Completion of IP Address through DHCP + */ + Null_Type ICMPv6_ConfigCmpl optional /* UE optionally sent ICMPv6 Router solitation message and SS has responded with IPv6 Router Advertisement message + */ + }; + + type union HRPD_SystemIndication_Type { + Null_Type Error, /* Used by SS to indicate any error; + * the Actual Error types reported in ASP common part in CDMA2000_IndicationStatus_Type + */ + Null_Type InitialAccessProbeRcvd, /* Initial Access probe is received; + */ + RegAndDefBearerEstInd_Type RegAndDefBearerEstInd, /* UE has succesfully performed registration and default bearer esablishment + */ + Null_Type DedicatedBearerEstInd, /* Vendor specific network protocol (RFC 3772) procedures to re-establish Dedicated bearer as defined in S.0057 clause 5.5.3.1 (BCM is MS/NW) + * or clause 5.5.4.1.1 (BCM = MS-Only) Bearer Configuration Mode + * Dedicated bearers are (re) established + */ + DedicatedBearerRelInd_Type DedicatedBearerRelInd, /* To indicate the Dedicated bearer is released + */ + DefaultBearerRelDetachInd_Type DefaultBearerRelDetachInd, /* To Release configured default bearer and hense associated Dedicated bearer x.s0057 clause 11.3 and 11.1.1 + * Dedicated bearers are deactivated/released + * To detach the UE x.s0057 clause 11.2 Detach completed + */ + Null_Type MovedToDormantMode, /* The channels are released and UE is moved to PPP dormant mode/Air interface Idle. + */ + MobilityFromEUTRACmpl_Type MobilityFromEUTRACmpl, /* To confirm that Handover from EUTRAN is completed by receiving Traffic Channel Complete + * and the MessageSequence is same as in Traffic Channel Assignment + */ + AdditionalDefBearerEstInd_Type AdditionalDefBearerEstInd, /* UE has successfully performed additional default bearer establishment (additional PDN) + */ + HRPD_ZoneRegistrationInd_Type HRPD_ZoneRegistrationInd /* Initially pre-registered UE detects change in HRPD Zone ID in SIB and hence updates registration + */ + }; + + } // End of sub-group HRPD_Indications + + //---------------------------------------------------------------------------- + + group HRPD_Commands { + + type enumerated HRPD_UE_InitStateType { /* HRPD UE states as defined in C.S0057 clause 3.1 */ + idle_Null, /* In the Inactive/Null State, + * 1. there is no physical traffic channel between the UE and the eAN, and no connection exists between the eAN and the ePCF + * 2. no PPP link between the UE and the HSGW . + * 3. The UE may have a Universal Access Terminal Identifier (UATI) that has been assigned by an eHRPD eAN + */ + dormant, /* In the Dormant State, + * 1. no physical traffic channel exists between the UE and the eAN and no connection exists between the eAN and the ePCF. + * 2. PPP link between the UE and the HSGW + * 3. eHRPD DORMANT state equates to the "idle" state referred to in TS 23.402 + */ + active_Connected, /* In the Active/Connected State, + * 1. a physical traffic channel exists between the UE and the eAN over which data may be sent. + * A connection exists between the eAN and the ePCF, and between the ePCF and the HSGW, + * 2. there is a PPP link between the UE and the HSGW + */ + preregister /* The UE is performing pre-register though a different Access network + */ + }; + + type record RegAndDefBearerEst_Type { + HRPD_UE_InitStateType InitState, + RLP_FlowId_Type RLP_FlowId, /* Associated RLP Flow ID */ + CDMA2000_AttachType AttachType /* The Attach Type to be expected in VSNCP procedure */ + }; + + type record DefaultBearerRelDetach_Type { + HRPD_UE_InitStateType InitState, + PDN_Id_Type PDN_Id, /* PDN_ID of the bearer */ + RLP_FlowId_Type RLP_FlowId, /* Associated RLP Folw ID */ + LCP_DetachInit_Type UE_NW_Initiated /* If initiated by UE or Network */ + }; + + type record DedicatedBearerEstRel_Type { + HRPD_UE_InitStateType InitState, /* PPP and Air Interface state of UE when the procedure is being executed */ + PDN_Id_Type AssociatedDefaultBearer,/* the PDN ID of the associated default bearer; + * Gives the APN with which addititonal Dedicated Bearer needs to be established */ + Flow_IdList_Type Flow_Ids, /* Flow_ID's of the multiple dedicated bearers to be Activated/Deactivated */ + RLP_FlowIdList_Type RLP_FlowIds /* Associated RLP Folw ID; There is one to one association between elements + * in Flow_IdList_Type and RLP_FlowIdList_Type; ITs a TTCN programing error otherwise */ + }; + + type record MoveToActiveState_Type { + RLP_FlowIdList_Type RLP_FlowIds /* The list of flow ID's for which RLP Multi flows need to be re started; */ + }; + type record MobilityFromEUTRA_Type{ + octetstring TrafficChannelAssignment /* provides the octet encoded Traffic Channel Assignment sent to the UE through EUTRAN cell */ + }; + + type record AdditionalDefBearerEst_Type { /* used for multiple PDN connections */ + HRPD_UE_InitStateType InitState, + RLP_FlowId_Type RLP_FlowId /* Associated RLP Flow ID */ + }; + + + type union HRPD_SystemCommand_Type { + Null_Type ReportInitialAccesProbe,/* SS is expected to report any possible Access probes received on HRPD Cell; + * will be used in situations where UE is not expected to camp on a HRPD Cell */ + /* HRPD system commands that will be used by TTCN to execute certain HRPD procedures on UE */ + RegAndDefBearerEst_Type RegAndDefBearerEst, /* To complete registeration and establish Default bearer; + * Initial UE State is Idle_Null State + * Indications upto VSNCP protocol and possible IP signalling over DHCPv4 and/or ICMPv6 is performed + * At the end of procedure, UE is still in Active/Connected state (not pre-registration); + * SS is expected to send InitialAccessProbeRcvd(only if initial state is not Active and not pre-registration) and RegAndDefBearerEstInd as an indication for succesful completion of procedure + */ + DedicatedBearerEstRel_Type DedicatedBearerEst, /* Dedicated bearers are established/Activated by VSNP/EMPA protocol; + * PDN ID and RLP flow ID pairs are provided for each Dedicated bearer + * At the end of procedure, UE is still in Active/Connected state + * SS is expected to send InitialAccessProbeRcvd (only if initial state is not Active) and DedicatedBearerEstInd as an indication for succesful completion of procedure + */ + Null_Type MoveToDormantState, /* UE is Active_Connected state and is moved to Dormant state + * SS is expected to send MovedToDormantMode + */ + RLP_FlowIdList_Type MoveToActiveState, /* UE is initially Dormant state; + * UE is made to Move to Active_Connected State + * List of RLP flow Id's (associated with default + dedicated bearer), need to be established are provided + * SS is expected to send InitialAccessProbeRcvd + */ + DedicatedBearerEstRel_Type DedicatedBearerRel, /* Dedicated bearers are released/De-Activated by VSNP terminate and SCP release protocol; + * At the end of procedure, UE is still in Active/Connected state (not pre-registration) + * SS is expected to send InitialAccessProbeRcvd (only if initial state is not Active and not pre-registration) and DedicatedBearerRelInd as an indication for succesful completion of procedure + */ + DefaultBearerRelDetach_Type DefaultBearerRelDetach, /* Default bearer is released by VSNCP terminate and SCP release protocol + * UE is made to detach by LCP protocol and Possible Channels are released + * At the end of procedure, UE is in Idle_Null state + * Notes: + * When Detach is network initiated the sequence is + * 1. Default bearer (and hence all associated Dedicated bearers) released by VSNCP termintate + * 2. UE is detached by LCP terminate procedure + * When Detach is UE initiatated, UE may only perform LCP terminate procedure + * SS is expected to send InitialAccessProbeRcvd (only if initial state is not Active) and DefaultBearerRelDetachInd as an indication for succesful completion of procedure + */ + Null_Type MobilityFromEUTRA, /* Prepare CDMA SS for receiving tunneled HRPD Connection Request and Route Update tunneled in ULHandoverPreparationTransfer + * Respond with GCSNA encapsulated HRPD Silence Parameters and HRPD Open Loop Parameters, HRPD Traffic Channel Assignment to be sent tunneled in MobilityFromEUTRACommand + * Receive Traffic Channel Complete in the HRPD Cell; + * After Receiving Traffic Channel Assignment , HRPD Silence Parameters and HRPD Open Loop Parameters embedded in EUTRA message MobilityFromEUTRACommand, UE has + * Tuned to HRPD Radio and transmitted Traffic Channel Complete in the HRPD Cell + * SS is expected to send MobilityFromEUTRACmpl as an indication for succesful completion of procedure + */ + + AdditionalDefBearerEst_Type AdditionalDefBearerEst, /* To establish an additional PDN connection + * Initial UE State is Idle_Null State or procedure performed through pre-registration + * Indications upto VSNCP protocol and possible IP signaling over DHCPv4 and/or ICMPv6 is performed + * At the end of procedure, UE is still in Active/Connected state(not pre-registration); + * SS is expected to send InitialAccessProbeRcvd (only if initial state is not Active and not pre-registration) and AdditionalDefBearerEstInd as an indication for successful completion of procedure + */ + RegAndDefBearerEst_Type HRPDZoneRegister /* To update registeration by a UE already registered and established Default bearer; + * Initial UE State is Idle_Null State + * Indications upto VSNCP protocol and possible IP signalling over DHCPv4 and/or ICMPv6 is performed + * At the end of procedure, UE is still in Active/Connected state (not pre-registration); + * SS is expected to send InitialAccessProbeRcvd(only if initial state is not Active and not pre-registration) and RegAndDefBearerEstInd as an indication for succesful completion of procedure + */ + }; + + } // End of sub-group HRPD_Commands + + } // End of group CDMA2000_HRPD + + //============================================================================ + + group CDMA2000_RTT1X { + type enumerated RTT1X_UE_StateType { /* RTT1X UE L3 states as defined in C.S0005 clause 2.6 */ + idle, /* In the Mobile station Idle State, + * 1. UE selects and acquires a system + * 2. UE is monitoring messages in f-csch. + * 3. The UE may have a Universal Access Terminal Identifier (UATI) that has been assigned by an eHRPD eAN + */ + connected, /* In the Mobile station Control on the Traffic Channel State, + * 1. Mobile communicates with the base station using f/r-dsch and f/r-dtch + * 2. PPP link between the UE and the HSGW + * 3. eHRPD DORMANT state equates to the "idle" state referred to in TS 23.402 + */ + preregister /* The UE is performing pre-register though a different Access network + */ + }; + + group RTT1X_Indications { /* RTT1X call flows in RTT1x cell + * Expected Sequence for Attach (Power Up Attach) + * 1. Initial AccessProbeRcvd + * 2. CS_RegistrationStart (Powerup) + * 3. CS_RegistrationCmpl + * Expected Sequence for Detach (Power Down Attach) + * 1. Initial AccessProbeRcvd + * 2. CS_RegistrationStart (PowerDown) + * 3. CS_RegistrationCmpl + * Expected Sequence for CSFB Call Establishment + * 1. Initial AccessProbeRcvd + * 2. CS_CallEstStart (Origination/ PageResponse) + * 3. ChAssignCmpl (Extended Channel Assignment is sent) + * 4. CS_CallEstCompleted (Acknowledgement Order Sent, Service Connect sent, Service Connect Completion received, Alert Sent/Received and ConnectOrder is received) + * Expected Sequence for SRVCC call handover + * 1. HandoffCmpl + */ + type enumerated RTT1X_CS_CallType { + mo, /* Call is UE oringinated */ + mt, /* Call is UE Terminated */ + mo_Emergency /* UE originated Emergency Call */ + }; + + type record CS_CallEstStart_Type { + RTT1X_CS_CallType CallType + }; + + type enumerated RTT1XAttachType { /* Ref C.S005 Table 2.7.1.3.2.1-1 */ + powerUpAttach, /* UE is doing Power up attach REG_Type = '0001'B; it was not previously attached */ + powerDownAttach, /* UE is doing power down attach REG_Type = '0011'B; it was previously attached */ + zoneBasedAttach, /* UE is doing Zone based attach REG_Type = '0010'B */ + orderedAttach, /* UE is doing Ordered attach REG_Type = '0101'B */ + OtherAttach /* Any other Attach REG_Type does not equal above values*/ + }; + + type record CS_RegCmplInd_Type { + RTT1XAttachType CS_RegistrationCmpl /* CS power up/down registration is completed + UE Sent Registration message and received an L2 Acknowledgement + Optionally SS can perform Authentication and and has sent Registration Accepted order*/ + }; + + type record CS_Reg_CallCmplInd_Type { + RTT1XAttachType CS_RegistrationCmpl optional, /* CS power up/down registration is completed; This is omit if implicit registration is done + * UE Sent Registration message and received an L2 Acknowledgement + * Optionally SS can perform Authentication and and has sent Registration Accepted order + * UE can also do a implicit registration; i.e. reception of Origination/reconnect/CallRecovery/Page message + * by Base station is treated as implicit registration*/ + RTT1X_CS_CallType CS_CallEstStarted, /* Received Origination message for MO and Page Response for MT */ + Null_Type ChAssignCmpl, /* (Extended) Channel Assignment procedure started UE has sent ConnectionRequestTraffic + * Extended Channel assignment is completedUE has sent TrafficChannelComplete */ + Null_Type CS_CallEstCompleted /* SS received Service Connect Completion (Mo) or ConnectOrder(MT) (i.e User Accepted call) */ + }; + + type record CS_CallCmplInd_Type { + RTT1X_CS_CallType CS_CallEstStarted, /* Received Origination message for MO and Page Response for MT */ + Null_Type ChAssignCmpl, /* (Extended) Channel Assignment procedure started completed */ + Null_Type CS_CallEstCompleted, /* SS received Service Connect Completion (MO) or ConnectOrder (MT) (i.e User Accepted call) */ + boolean IsEmergencyCall /* True indicates the established call is emergency call, false indicates a normal voice has been established */ + }; + + type record ECSFB_CallCmplInd_Type { + RTT1X_CS_CallType CS_CallEstStarted, /* Received Tunneled GCSNA encapsulated Origination message for MO and Page Response for MT call */ + Null_Type HandoffCmpl, /* indicates SS has received HandoffComplete message and the call is established */ + Null_Type CS_CallEstCompleted, /* SS received Service Connect Completion (MO) or ConnectOrder (MT) (i.e User Accepted call) */ + boolean IsEmergencyCall /* True indicates the established call is emergency call, false indicates a normal voice has been established */ + }; + type record ECAM_CS_CallCmplInd_Type { + RTT1X_CS_CallType CS_TunneledCallEstStarted, /* Received Tunneled GCSNA encapsulated Origination message for MO and Page Response for MT call */ + RTT1X_CS_CallType CS_CallEstStarted, /* Received Origination message for MO and Page Response for MT */ + Null_Type ChAssignCmpl, /* Extended Channel Assignment procedure started completed */ + Null_Type CS_CallEstCompleted, /* SS received Service Connect (i.e User Accepted call) */ + boolean IsEmergencyCall /* True indicates the established call is emergency call, false indicates a normal voice has been established */ + }; + + +type record ECSFB_CallRejInd_Type { + RTT1X_CS_CallType CS_CallEstRejected, /* SS Received tunneled 1xRTT Origination (M0)/Page Response (MT) message + * Respond with 1xRTT Release Order message */ + boolean IsEmergencyCall /* True indicates the established call is emergency call, false indicates a normal voice has been established */ + }; + + type union RTT1X_SystemIndication_Type { + Null_Type Error, /* Used by SS to indicate any error; the Actual Error types reported in ASP common part in CDMA2000_IndicationStatus_Type */ + Null_Type InitialAccessProbeRcvd, /* Initial Access probe is received */ + CS_RegCmplInd_Type CS_RegistrationCmpl, /* CS power up/down registration is completed + * As registration message, and possible Authentication Registration accepted order are all + * sent received on f/r-csch UE at end is in Idle state*/ + CS_Reg_CallCmplInd_Type CS_Reg_CallCmplInd, /* CS Registration /implicit registration and Call Indication MO or MT + * UE is in connected state with f/r dtch configured */ + CS_CallCmplInd_Type CS_CallCmplInd, /* CS Call Indication MO or MT + * UE is in connected state with f/r dtch configured */ + Null_Type HandoffCmpl, /* needed for SRVCC handover of an IMS voice call on LTE to 1XRTT + * indicates SS has received HandoffComplete message and the call is established */ + Null_Type MovedToIdleState, /* The channels are released and UE is moved to Idle state. + * CS Call is released by exchange of Release order in both directions C.S0005 figure B3 and B4 */ + ECSFB_CallCmplInd_Type ECSFB_CallCmplInd, /* eCSFB Call Indication MO or MT + * UE is in connected state with f/r dtch configured */ + ECAM_CS_CallCmplInd_Type ECSFB_ECAM_CallCmplInd, /* eCSFB ECAM based Call Indication MO or MT + * UE is in connected state with f/r dtch configured */ + ECSFB_CallRejInd_Type ECSFB_CallRejInd /* eCSFB Call Rejected MO or MT + * UE is not camping in 1xRTT */ + }; + + } // End of sub-group RTT1X_Indications + + //---------------------------------------------------------------------------- + + group RTT1X_Commands { + + type record CS_Registration_Type { + RTT1XAttachType AttachType, + boolean IsPreRegistration, /* Indicates if it is done as pre registration + * Value is ignored if Attach Type is Power down + * (Assumption detach happens only in 1XRTT cell) + */ + B32_Type RAND optional /* RAND [From eNB] to be included in CSFBParametersResponseCDMA2000, HandoverFromEUTRAPreparationRequest + * Value not present for power down registration*/ + }; + type record MobilityFromEUTRA_1XRTT_Type{ + octetstring HandoverAssignment /* provides the octet encoded HandoverAssignment sent to the UE through EUTRAN cell */ + }; + + type union RTT1X_SystemCommand_Type { + Null_Type ReportInitialAccesProbe, /* SS is expected to report any possible Access probes received on 1XRTT Cell; + * will be used in situations where UE is not expected to camp on a 1XRTT Cell + */ + CS_Registration_Type CS_Registration, /* Power up attach/ power down attach in 1xRTT cell or Pre registration (Power up attach) + * tunelled through a different RAT + * in case of pre-registration attach, the CDMA SS starts by sending mobilityParameters to be tunneled in CSFBParametersRequestCDMA2000 + * SS is expected to send InitialAccessProbeRcvd (only if initial state is not pre-registration) and CS_RegistrationCmpl as an indication for succesful completion of procedure + */ + RTT1X_CS_CallType CSFB_Call, /* CSFB by a (pre-)registered UE + * If the call Type is mt, CDMA SS sends 1x RTT GCSNA encapsulated General Page to be tunneled in DLInformation Transfer + * SS is expected to send InitialAccessProbeRcvd and CS_CallCmplInd as an indication for succesful completion of procedure + */ + RTT1X_CS_CallType CS_Reg_CSFB_Call, /* UE not previously pre-registered hence performs registration (Power up attach) and CSFB call + * Registration can be implicit registration + * SS is expected to send InitialAccessProbeRcvd and CS_Reg_CallCmplInd as an indication for succesful completion of procedure + */ + Null_Type MobilityFromEUTRA_1XRTT, /* Prepare SS for Mobility from Eutra + * CDMA SS sends mobilityParameters to be tunneled in HandoverFromEUTRAPreparationRequest + * Receive tunneled 1xRTT GCSNA Encapsulated Origination message and MEID in ULHandoverPreparationTransfer + * Respond with GCSNA encapsulated 1xRTT Handoff Direction message to be sent tunneled in MobilityFromEUTRACommand + * Receive HandoffCmpl in the 1xRTT Cell; + * SS is expected to send HandoffCmpl as an indication for succesful completion of procedure + */ + CS_Registration_Type CS_OrderedRegistration, /* ordered registration on (already registered) 1xRTT cell or Pre registration + * Power up attach) through a different RAT. SS triggers the procedure by sending + * Registration Request order (GCSNA encapsulated in case of pre-registration) + * and sends mobilityParameters to be tunneled in CSFBParametersRequestCDMA2000 + * SS is expected to send InitialAccessProbeRcvd (only if initial state is not pre-registration) and CS_RegistrationCmpl as an indication for succesful completion of procedure + */ + RTT1X_CS_CallType E_CSFB_Call, /* Prepare SS for Enhanced CSFB call + * If the call Type is mt, CDMA SS sends 1x RTT GCSNA encapsulated General Page to be tunneled in DLInformation Transfer + * CDMA SS sends mobilityParameters to be tunneled in HandoverFromEUTRAPreparationRequest + * Receive tunneled 1xRTT GCSNA Encapsulated Origination (M0)/Page Response (MT) message and MEID in ULHandoverPreparationTransfer + * Respond with GCSNA encapsulated 1xRTT Handoff Direction message to be sent tunneled in MobilityFromEUTRACommand + * Receive HandoffCmpl in the 1xRTT Cell; + * SS responds with Alert With Information (MT)/Sevice connect (MO) in the 1xRTT cell. + * SS receives Connect order (MT)/Service Connect Completion (MO) + * SS is expected to send ECSFB_CallCmplInd as an indication for succesful completion of procedure + */ + RTT1X_CS_CallType E_CSFB_Call_ECAM, /* Prepare SS for Enhanced CSFB call with Extended channel assignment + * If the call Type is mt, CDMA SS sends 1x RTT GCSNA encapsulated General Page to be tunneled in DLInformation Transfer + * CDMA SS sends mobilityParameters to be tunneled in HandoverFromEUTRAPreparationRequest + * Receive tunneled 1xRTT GCSNA Encapsulated Origination (M0)/Page Response (MT) message and MEID in ULHandoverPreparationTransfer + * Respond with GCSNA Encapsulated ECAM message to be sent tunneled in MobilityFromEUTRACommand + * Receive Origination in the 1xRTT Cell; + * After extended channel assignment, SS receives Connect order (MT)/Service Connect Completion (MO) + * SS is expected to send ECSFB_ECAM_CallCmplInd as an indication for succesful completion of procedure + */ + RTT1X_CS_CallType E_CSFB_Call_Reject /* Prepare SS for Enhanced CSFB call, which needs to be rejected + * If the call Type is mt, CDMA SS sends 1x RTT GCSNA encapsulated General Page to be tunneled in DLInformation Transfer + * CDMA SS sends mobilityParameters to be tunneled in HandoverFromEUTRAPreparationRequest + * Receive tunneled 1xRTT GCSNA Encapsulated Origination (M0)/Page Response (MT) message and MEID in ULHandoverPreparationTransfer + * Respond with GCSNA encapsulated 1xRTT Release Order message to be sent tunneled in DLInformation Transfer + * SS is expected to send ECSFB_CallRejInd as an indication for succesful completion of procedure + */ + }; + + } // End of sub-group RTT1X_Commands + + } // end of group CDMA2000_RTT1X + + //============================================================================ + + group System_Interface { + + type union CDMA2000_SystemRequest_Type { + CDMA2000_CellConfigRequest_Type Cell, /* configure/release a cell */ + CDMA2000_CellAttenuationList_Type CellAttenuationList + }; + + type union CDMA2000_SystemConfirm_Type { /* confirmations for system configuration; in general to be sent after the configuration has been done */ + Null_Type Cell, /* (no further parameters from SS) */ + Null_Type CellAttenuationList /* (no further parameters from SS) + * NOTE 1: the confirmation shall be sent when all cells have changed power levels + * NOTE 2: for the CellId in the common ASP part the same rules are applied as for the CDMA2000 SYSTEM REQ */ + }; + + type record CDMA2000_SYSTEM_CTRL_REQ { + CDMA2000_ReqAspCommonPart_Type Common, /* TimingInfo depends on respective primitive: */ + CDMA2000_SystemRequest_Type Request /* - Cell + * TimingInfo: 'now' (in general) + * - CellAttenuationList + * TimingInfo: 'now' (in general, but activation time may be used also) + */ + }; + + type record CDMA2000_SYSTEM_CTRL_CNF { + CDMA2000_CnfAspCommonPart_Type Common, /* TimingInfo is ignored by TTCN + * => SS may set TimingInfo to "None" + */ + CDMA2000_SystemConfirm_Type Confirm + }; + + //---------------------------------------------------------------------------- + + type union CDMA2000_SystemCommand_Type { + HRPD_SystemCommand_Type HRPD, /* HRPD Specific System commands */ + RTT1X_SystemCommand_Type RTT1X /* 1XRTT specific System commands */ + }; + + type record CDMA2000_SYSTEM_CMD { + CDMA2000_ReqAspCommonPart_Type Common, /* Routing info will be none generally; + * TimingInfo is generally now but activation time may be used also for all System commands + * Cnf and Follow on flags are both false + */ + CDMA2000_SystemCommand_Type Command /* HRPD or 1XRTT System commands + */ + }; + + type union CDMA2000_SystemIndication_Type { + HRPD_SystemIndication_Type HRPD, + RTT1X_SystemIndication_Type RTT1X + }; + + type record CDMA2000_SYSTEM_IND { + CDMA2000_IndAspCommonPart_Type Common, /* The SS shall provide TimingInfo depending on the respective indication: */ + CDMA2000_SystemIndication_Type Indication /* - Error + * TimingInfo: related to the error (if available) + * - HRPD/RTT1X Procedure completion + * The timing info corresponding to logical completion of the complete procedure + * includes completion of all sub protocols + */ + }; + + //---------------------------------------------------------------------------- + + type record CDMA2000_RLP_FLOW_COMMON_IND { /* ASP to receive PDUs from RLP Packet Flows */ + CDMA2000_IndAspCommonPart_Type Common, /* CellId : identifier of the cell + * RoutingInfo : RLP Flow id + * TimingInfo : time when RLP SDU's has been completely received + */ + CDMA2000_U_PlaneData_Type Data + }; + + type record CDMA2000_RLP_FLOW_COMMON_REQ { /* ASP to send PDUs to RLP Packet flows */ + CDMA2000_ReqAspCommonPart_Type Common, /* CellId : identifier of the cell + * RoutingInfo : RLP Flow id + * TimingInfo : starting point when to start sending sequence of data PDUs + * e.g. + * TimeStampLong_Type = X, subframe number = x; + * U_Plane.SubframeDataList (i).SubframeOffset := offset_i; + * => U_Plane.SubframeDataList(i).PduSduList shall be sent out at + * TimeStampLong_Type = X + ((x + offset_i) / 4); + * subframe number = (x + offset_i) mod 4 + * ControlInfo : CnfFlag:=false; FollowOnFlag:=false + */ + CDMA2000_U_Plane_Request_Type U_Plane + + }; + + //---------------------------------------------------------------------------- + + type port CDMA2000_SYSTEM_PORT message { /* CDMA2000 PTC: Port for system configuration */ + out CDMA2000_SYSTEM_CTRL_REQ; + in CDMA2000_SYSTEM_CTRL_CNF; + }; + + type port CDMA2000_SYSCMD_IND_PORT message { /* CDMA2000 PTC: Port for system indications/Commands */ + out CDMA2000_SYSTEM_CMD; + in CDMA2000_SYSTEM_IND; + }; + + type port CDMA2000_RLP_FLOW_PORT message { /* CDMA2000 PTC: Port for RLP SDU's to be sent on RLP packet data streams */ + out CDMA2000_RLP_FLOW_COMMON_REQ; + in CDMA2000_RLP_FLOW_COMMON_IND; + }; + + } //end of group System_Interface + +} + diff --git a/LTE_A_IWD_14wk37/Common/C2K/CDMA2000_CellInfo.ttcn b/LTE_A_IWD_14wk37/Common/C2K/CDMA2000_CellInfo.ttcn new file mode 100644 index 0000000..208fbd0 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/C2K/CDMA2000_CellInfo.ttcn @@ -0,0 +1,865 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-10-19 22:32:42 +0200 (Sat, 19 Oct 2013) $ +// $Rev: 9788 $ +/******************************************************************************/ + +module CDMA2000_CellInfo { + import from CommonDefs all; + import from CommonIratDefs all; + import from CDMA2000_CommonDefs all; + import from CDMA2000_ASP_TypeDefs all; + import from CDMA2000_Constants all; + import from CDMA2000_Parameters all; + import from CDMA2000_Templates all; + + //---------------------------------------------------------------------------- + + type record CDMA2000_CommonCellInfo_Type { /* @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT) */ + CDMA2000_CellParameters_Type CommonCellParams + }; + + type record CDMA2000_ReferenceCellPower_Type { /* @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT) */ + CDMA2000_AbsoluteCellPower_Type CellPower, + CDMA2000_Attenuation_Type CellAttenuation + }; + + type record CDMA2000_CellInfo_Type { /* @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT) */ + CDMA2000_CommonCellInfo_Type CommonCellInfo, + CDMA2000_ReferenceCellPower_Type ReferenceCellPower, + ModeSpecificCellParams_Type ModeSpecificParams + }; + + type record length (tsc_CDMA2000_MaxNumberOfCells) of CDMA2000_CellInfo_Type CDMA2000_CellArray_Type; /* @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT) */ + + template (value) CDMA2000_Attenuation_Type cs_CDMA2000_Attenuation_Def ( Attenuation_Type p_Attenuation := tsc_AttenuationDef) := + { /* @status APPROVED (LTE_IRAT) */ + Value := p_Attenuation + }; + + template (value) CDMA2000_ReferenceCellPower_Type cs_CDMA2000_ReferenceCellPower_Def( template (value) CDMA2000_AbsoluteCellPower_Type p_CellPower, + template (value) CDMA2000_Attenuation_Type p_Attenuation) := + { /* @status APPROVED (LTE_IRAT) */ + CellPower := p_CellPower, + CellAttenuation := p_Attenuation + }; + + template (value) CarrierFreqCDMA2000_Type cs_CarrierFreqCDMA2000_Def(BandclassCDMA2000_Type p_Bandclass := px_HRPD_BandClass, + ARFCN_ValueCDMA2000_Type p_ChannelNum ):= //@sic R5-110332 sic@ + { /* @status APPROVED (LTE_IRAT) */ + BandClass := p_Bandclass, + ARFCN := p_ChannelNum + }; + + template (value) CDMA2000_AbsoluteCellPower_Type cs_CDMA2000_AbsoluteCellPowerDef (PowerIoc_Type p_PowerIoc := tsc_PowerIocDef, + PowerIor_Type p_PowerIor := tsc_PowerIorDef, + template (value) PilotOffset_Type p_PilotOffset := tsc_PilotOffsetHRPDDef) := + { /* @status APPROVED (LTE_IRAT) */ + PowerIoc := p_PowerIoc, + PowerIor := p_PowerIor, + PilotOffset := p_PilotOffset + }; + + template (value) CDMA2000_InitialCellPower_Type cs_CDMA2000_InitialCellPowerDef (PowerIoc_Type p_PowerIoc := tsc_PowerIocDef, + PowerIor_Type p_PowerIor := tsc_PowerIorDef, + PilotOffset_Type p_PilotOffset := tsc_PilotOffsetHRPDDef ) := + { + MaxReferencePower := cs_CDMA2000_AbsoluteCellPowerDef (p_PowerIoc, p_PowerIor, p_PilotOffset), + Attenuation := tsc_CDMA2000_Attenuation_Off + }; + + template (value) CDMA2000_CellParameters_Type cs_CDMA2000_CellParameters_HRPD_Def (PhysCellIdCDMA2000_Type p_PNOffset := tsc_PNOffsetDef, + SectorID_HRPD_Type p_SectorID := px_HRPD_SectorID_Cell15, + ARFCN_ValueCDMA2000_Type p_ChannelNum , //@sic R5-110332 sic@ + BandclassCDMA2000_Type p_Bandclass := px_HRPD_BandClass, + template (value) SearchWindowSizeRecord_Type p_SearchWindow := cs_SearchWindow_Def) := + { /* @status APPROVED (LTE_IRAT) */ + Type := typeHRPD, + CarrierFreq := cs_CarrierFreqCDMA2000_Def(p_Bandclass, p_ChannelNum), // Contains bandclass and arfcn i.e. 11 bit channel number + PhysCellId := p_PNOffset, // PN offset of pilot 0..511 + CellGlobalId := { + HRPD := p_SectorID // Contains the 128 bit cell ID for HRPD and 47 bit cell ID for 1XRTT + }, + SearchWindow := p_SearchWindow + }; + + template (value) SectorID_RTT1X_Type cs_SectorID_RTT1X_Def (B16_Type p_BaseId := px_1XRTT_BaseId_Cell19, + B16_Type p_NID := px_1XRTT_NID, + B15_Type p_SID :=int2bit (200,15)):= //@sic R5-133365 sic@ + { /* @status APPROVED (LTE_IRAT) */ + BaseId := p_BaseId, + NID := p_NID, + SID := p_SID + }; + + template (value) CDMA2000_CellParameters_Type cs_CDMA2000_CellParameters_RTT1X_Def (PhysCellIdCDMA2000_Type p_PNOffset := tsc_PNOffsetDef, + template (value) SectorID_RTT1X_Type p_SectorID := cs_SectorID_RTT1X_Def, + ARFCN_ValueCDMA2000_Type p_ChannelNum , //@sic R5-110332 sic@ + BandclassCDMA2000_Type p_Bandclass := px_1XRTT_BandClass, + template (value) SearchWindowSizeRecord_Type p_SearchWindow := cs_SearchWindow_Def) := + { /* @status APPROVED (LTE_IRAT) */ + Type := type1XRTT, + CarrierFreq := cs_CarrierFreqCDMA2000_Def(p_Bandclass, p_ChannelNum), // Contains bandclass and arfcn i.e. 11 bit channel number + PhysCellId := p_PNOffset, // PN offset of pilot 0..511 + CellGlobalId := { + RTT1X := p_SectorID // Contains the 128 bit cell ID for HRPD and 47 bit cell ID for 1XRTT + }, + SearchWindow := p_SearchWindow + }; + + template (value) SearchWindowSizeRecord_Type cs_SearchWindow_Def (SearchWindowSize_Type p_SearchWindow_Active := tsc_SearchWindowDef, + SearchWindowSize_Type p_SearchWindow_Neighbor := tsc_SearchWindowDef, + SearchWindowSize_Type p_SearchWindow_Remaining := tsc_SearchWindowDef) := + { /* @status APPROVED (LTE_IRAT) */ + SearchWindow_Active := p_SearchWindow_Active, /* Search Window for Active Cells */ + SearchWindow_Neighbor := p_SearchWindow_Neighbor, /* Search Window for Neighbor Cells */ + SearchWindow_Remaining := p_SearchWindow_Remaining /* Search Window for Rest Cells */ + }; + + template (value) CDMA2000_CommonCellInfo_Type cs_CDMA2000_CommonCellInfo_Def (template (value) CDMA2000_CellParameters_Type p_CDMA2000_CellParameters) := + { /* @status APPROVED (LTE_IRAT) */ + CommonCellParams := p_CDMA2000_CellParameters + }; + + template (value) HRPD_CellParameters_Type cs_HRPD_CellParametersDef (SystemType_Type p_SystemType := tsc_SystemTypeDef, + B8_Type p_SubNetMask := tsc_SubNetMaskDef, + ColorCode_Type p_ColorCode := px_ColorCode, + MCC_Type p_CountryCode := tsc_CountryCodeDef, + OpenLoopAdjust_Type p_OpenLoopAdjust := px_OpenLoopAdjust, + ReverseRateLimit_Type p_ReverseRateLimit := tsc_ReverseRateLimitDef, + ReverseLinkMACIndex_Type p_MACIndex := px_MACIndex, //@sic R5-120721 sic@ + PacketApplication_Type p_PacketApp := tsc_PacketAppDef, + ControlChannelRate_Type p_ControlChannelRate := tsc_ControlChannelRateDef, + PDN_Id_Type p_PDN_Id := tsc_PDN_Id, + template (value) PDN_Address_Type p_PDN_Address := cs_PDN_Address_Def, + template (value) UATI_Type p_UATI := cs_UATI_Def) := + { /* @status APPROVED (LTE_IRAT) */ + SystemType := p_SystemType, + SubNetMask := p_SubNetMask, + ColorCode := p_ColorCode, + CountryCode := p_CountryCode, // 7.11.6.2.2 of C.S0024 + OpenLoopAdjust := p_OpenLoopAdjust, + ReverseRateLimit := p_ReverseRateLimit,// + MACIndex := p_MACIndex , + PacketApp := p_PacketApp, + ControlChannelRate := p_ControlChannelRate, + PDN_Id := p_PDN_Id, + PDN_Address := p_PDN_Address, + UATI := p_UATI + }; + + template (value) TMSI_Type cs_TMSI_Def (TMSI_Zone_Type p_TMSI_Zone :=tsc_TMSI_ZoneDef, + TMSI_Code_Type p_TMSI_Code := px_1XRTT_TMSI_Def):= /* Globally unique TMSI as defined in C.s0005 clause 3.7.2.3.2.19 */ + { /* @status APPROVED (LTE_IRAT) */ + TMSI_ZoneLen := lengthof (p_TMSI_Zone), /* Length of TMSI_Zone 1..8 */ + TMSI_Zone := p_TMSI_Zone, /* TMSI_ZoneLen octets of TMSI_Zone */ + TMSI_Code := p_TMSI_Code /* TMSI code */ + }; + + template (value) RTT1X_CellParameters_Type cs_RTT1X_CellParametersDef (B10_Type p_MCC, + B7_Type p_IMSI_11_12, + B12_Type p_Reg_Zone :=tsc_Reg_ZoneDef, + B4_Type p_Base_Class :=tsc_BaseClassDef, + template (value) TMSI_Type p_TMSI :=cs_TMSI_Def, + ProtRev_Type p_ProtRev := tsc_ProtRevDef , + ProtRev_Type p_Min_ProtRev :=px_1XRTT_MinProtRev , + EncryptionMode_Type p_Sig_EncryptionMode :=px_1XRTT_Sig_EncMode, + EncryptionMode_Type p_USerInfo_EncryptionMode :=px_1XRTT_UserInfo_EncMode) := + { /* @status APPROVED (LTE_IRAT) */ + Reg_Zone := p_Reg_Zone, + Base_Class := p_Base_Class, + MCC := p_MCC, + IMSI_11_12 := p_IMSI_11_12, + TMSI := p_TMSI , + ProtRev := p_ProtRev, + Min_ProtRev := p_Min_ProtRev , + Sig_EncryptionMode := p_Sig_EncryptionMode, + USerInfo_EncryptionMode := p_USerInfo_EncryptionMode + }; + + template (value) ModeSpecificCellParams_Type cs_ModeSpecificCellParams_HRPD_Def (template (value) HRPD_CellParameters_Type p_HRPD_CellParameters) := + { /* @status APPROVED (LTE_IRAT) */ + HRPD := p_HRPD_CellParameters + }; + + template (value) ModeSpecificCellParams_Type cs_ModeSpecificCellParams_RTT1X_Def (template (value) RTT1X_CellParameters_Type p_RTT1X_CellParameters) := + { /* @status APPROVED (LTE_IRAT) */ + RTT1X := p_RTT1X_CellParameters + }; + + template (value) CDMA2000_AbsoluteCellPower_Type cs_CDMA2000_AbsoluteCellPower_Def (PowerIor_Type p_PowerIor := tsc_PowerIorDef, + PowerIoc_Type p_PowerIoc := tsc_PowerIocDef, + PilotOffset_Type p_PilotOffset := tsc_PilotOffsetHRPDDef) := + { /* @status APPROVED (LTE_IRAT) */ + PowerIoc := p_PowerIoc, + PowerIor := p_PowerIor, + PilotOffset := p_PilotOffset + }; + + template (value) CDMA2000_CellInfo_Type cs_CDMA2000_CellInfo_Def (template (value) CDMA2000_CellParameters_Type p_CDMA2000_CellParameters, + template (value) ModeSpecificCellParams_Type p_ModeSpecificCellParams, + PowerIor_Type p_PowerIor := tsc_PowerIorDef, + PowerIoc_Type p_PowerIoc := tsc_PowerIocDef, + PilotOffset_Type p_PilotOffset:= tsc_PilotOffsetHRPDDef) := + { /* @status APPROVED (LTE_IRAT) */ + CommonCellInfo := cs_CDMA2000_CommonCellInfo_Def (p_CDMA2000_CellParameters), + ReferenceCellPower := cs_CDMA2000_ReferenceCellPower_Def(cs_CDMA2000_AbsoluteCellPower_Def (p_PowerIor, p_PowerIoc, p_PilotOffset), + cs_CDMA2000_Attenuation_Def), + ModeSpecificParams := p_ModeSpecificCellParams + }; + + //---------------------------------------------------------------------------- + /* + * @desc Access to Cell Array + * @param p_CellId + * @return integer + * @status APPROVED (LTE_IRAT) + */ + function f_CDMA2000_CellInfo_GetIndex (CDMA2000_CellId_Type p_CellId) return integer + { + select (p_CellId) + { + case (cdma2000_Cell15) { + return 0; + } case (cdma2000_Cell16) { + return 1; + } case (cdma2000_Cell17) { + return 2; + } case (cdma2000_Cell18) { + return 3; + } case (cdma2000_Cell19) { + return 4; + } case (cdma2000_Cell20) { + return 5; + } case (cdma2000_Cell21) { + return 6; + } case (cdma2000_Cell22) { + return 7; + } case else { + FatalError (__FILE__, __LINE__, "Invalid CellId"); + return 0; + } + } + } + + /* function f_CDMA2000_CellInfo_GetCellIdentity(CDMA2000_CellId_Type p_CellId) return O2_Type + { + select (p_CellId) + { + case (cdma2000_Cell15) { + return '0001'O; + } case (cdma2000_Cell16) { + return '0002'O; + } case (cdma2000_Cell17) { + return '0003'O; + } case (cdma2000_Cell18) { + return '0004'O; + } case else { + FatalError (__FILE__, __LINE__, "Invalid CellId"); + return '0000'O; + } + } + } */ + + + //============================================================================ + /* + * @desc Function to convert BCD MCC to 10 binary bits: Reference C.S0005 clause 2.3.1.1 + * @param p_MCC + * @return B10_Type + * @status APPROVED (LTE_IRAT) + */ + function fl_ConvertMCC_T0_B10 (MCC_Type p_MCC) return B10_Type + { + var integer i, j; + var integer v_Result := 0; + var integer v_Multiplier := 100; + + for (i:=0; i<3; i:=i+1) + { + j:= p_MCC[i]; + if (j == 0) { j :=10;} + v_Result := v_Result + (j * v_Multiplier); + v_Multiplier := v_Multiplier /10; + } + v_Result := v_Result-111; + return int2bit (v_Result, 10); + }; + + /* + * @desc Function to convert BCD MNC to 7 binary bits: as per C.S0005 clause 2.3.1.2 + * @param p_MNC + * @return B7_Type + * @status APPROVED (LTE_IRAT) + */ + function fl_ConvertMNC_T0_B7 (MNC_Type p_MNC) return B7_Type + { + var integer i, j; + var integer v_Result := 0; + var integer v_Multiplier := 10; + + for (i:=0; i<2; i:=i+1) + { + j:= p_MNC[i]; + if (j == 0) { j :=10;} + v_Result := v_Result + (j * v_Multiplier); + v_Multiplier := v_Multiplier /10; + } + v_Result := v_Result-11; + return int2bit(v_Result,7); + }; + + /* + * @desc Function to initialise the channel number as per 36.508 clause 4.3.1.3 + * @param p_CellId + * @param p_BandClass + * @return ARFCN_ValueCDMA2000_Type + * @status APPROVED (LTE_IRAT) + */ + function f_HRPD_CalculateChannelNumber(CDMA2000_CellId_Type p_CellId, + BandclassCDMA2000_Type p_BandClass) return ARFCN_ValueCDMA2000_Type + { + //@sic R5-120734 sic@ + var ARFCN_ValueCDMA2000_Type v_ARFCN ; + select (p_BandClass) { + case (0) + { + select (p_CellId) + { + case (cdma2000_Cell15,cdma2000_Cell16) // f14 Mid Frequency + { + v_ARFCN := 356; + } + case (cdma2000_Cell17) //f15 High Frequency + { + v_ARFCN := 779; + } + case (cdma2000_Cell18) // f16 Low Frequency + { + v_ARFCN := 1013; + } + } + } + case (1) + { + select (p_CellId) + { + case (cdma2000_Cell15,cdma2000_Cell16) // f14 Mid Frequency + { + v_ARFCN := 600; + } + case (cdma2000_Cell17) // f15 High Frequency + { + v_ARFCN := 1175; + } + case (cdma2000_Cell18) // f16 Low Frequency + { + v_ARFCN := 25; + } + } + } + case (3) + { + select (p_CellId) + { + case (cdma2000_Cell15,cdma2000_Cell16) //f14 Mid Frequency + { + v_ARFCN := 872; + } + case (cdma2000_Cell17) // f15 High Frequency + { + v_ARFCN := 76; + } + case (cdma2000_Cell18) // f16 Low Frequency + { + v_ARFCN := 1120; + } + } + } + case (4) + { + select (p_CellId) + { + case (cdma2000_Cell15,cdma2000_Cell16) // f14 Mid Frequency + { + v_ARFCN := 300; + } + case (cdma2000_Cell17) //f15 High Frequency + { + v_ARFCN := 525; + } + case (cdma2000_Cell18) // f16 Low Frequency + { + v_ARFCN := 100; + } + } + } + case (6) //@sic R5-113659 sic@ + { + select (p_CellId) + { + case (cdma2000_Cell15,cdma2000_Cell16) //f14 Mid Frequency + { + v_ARFCN := 200; + } + case (cdma2000_Cell17) //f15 High Frequency + { + v_ARFCN := 350; + } + case (cdma2000_Cell18) //f16 Low Frequency + { + v_ARFCN := 125; + } + } + } + case (10) + { + select (p_CellId) + { + case (cdma2000_Cell15,cdma2000_Cell16) //f14 Mid Frequency + { + v_ARFCN := 500; + } + case (cdma2000_Cell17) //f15 High Frequency + { + v_ARFCN := 820; + } + case (cdma2000_Cell18) //f16 Low Frequency + { + v_ARFCN := 100; + } + } + } + case (15) + { + select (p_CellId) + { + case (cdma2000_Cell15,cdma2000_Cell16) //f14 Mid Frequency + { + v_ARFCN := 450; + } + case (cdma2000_Cell17) //f15 High Frequency + { + v_ARFCN := 800; + } + case (cdma2000_Cell18) //f16 Low Frequency + { + v_ARFCN := 75; + } + } + } + case else + { + FatalError (__FILE__, __LINE__, "Band class FFS or not defined"); + } + + } + return v_ARFCN; + } + + /* + * @desc Function to initialise the channel number as per 36.508 clause 4.3.1.4 + * @param p_CellId + * @param p_BandClass + * @return ARFCN_ValueCDMA2000_Type + * @status APPROVED (LTE_IRAT) + */ + function f_RTT1X_CalculateChannelNumber(CDMA2000_CellId_Type p_CellId, + BandclassCDMA2000_Type p_BandClass) return ARFCN_ValueCDMA2000_Type + { + //@sic R5-120734 sic@ + var ARFCN_ValueCDMA2000_Type v_ARFCN ; + select ( p_BandClass) + { + case (0) + { + select (p_CellId) + { + case (cdma2000_Cell19,cdma2000_Cell20) // Mid Frequency + { + v_ARFCN := 356; + } + case (cdma2000_Cell21) // High Frequency + { + v_ARFCN := 779; + } + case (cdma2000_Cell22) // Low Frequency + { + v_ARFCN := 1013; + } + } + } + case (1) + { + select (p_CellId) + { + case (cdma2000_Cell19,cdma2000_Cell20) // Mid Frequency + { + v_ARFCN := 600; + } + case (cdma2000_Cell21) // High Frequency + { + v_ARFCN := 1175; + } + case (cdma2000_Cell22) // Low Frequency + { + v_ARFCN := 25; + } + } + } + case (3) + { + select (p_CellId) + { + case (cdma2000_Cell19,cdma2000_Cell20) // Mid Frequency + { + v_ARFCN := 872; + } + case (cdma2000_Cell21) // High Frequency + { + v_ARFCN := 76; + } + case (cdma2000_Cell22) // Low Frequency + { + v_ARFCN := 1120; + } + } + } + case (4) + { + select (p_CellId) + { + case (cdma2000_Cell21,cdma2000_Cell20) // Mid Frequency + { + v_ARFCN := 300; + } + case (cdma2000_Cell21) // High Frequency + { + v_ARFCN := 525; + } + case (cdma2000_Cell22) // Low Frequency + { + v_ARFCN := 100; + } + } + } + case (6) //@sic R5-113659 sic@ + { + select (p_CellId) + { + case (cdma2000_Cell19,cdma2000_Cell20) // Mid Frequency + { + v_ARFCN := 275; + } + case (cdma2000_Cell21) // High Frequency + { + v_ARFCN := 375; + } + case (cdma2000_Cell22) // Low Frequency + { + v_ARFCN := 225; + } + } + } + case (10) + { + select (p_CellId) + { + case (cdma2000_Cell19,cdma2000_Cell20) // Mid Frequency + { + v_ARFCN := 500; + } + case (cdma2000_Cell21) // High Frequency + { + v_ARFCN := 820; + } + case (cdma2000_Cell22) // Low Frequency + { + v_ARFCN := 100; + } + } + } + case (15) + { + select (p_CellId) + { + case (cdma2000_Cell19,cdma2000_Cell20) // Mid Frequency + { + v_ARFCN := 450; + } + case (cdma2000_Cell21) // High Frequency + { + v_ARFCN := 800; + } + case (cdma2000_Cell22) // Low Frequency + { + v_ARFCN := 75; + } + } + } + case else + { + FatalError (__FILE__, __LINE__, "Band class FFS or not defined"); + } + + } + return v_ARFCN; + } + + /* + * @desc Function to initialise cell info for a cell + * @param p_CellId + * @return CDMA2000_CellInfo_Type + * @status APPROVED (LTE_IRAT) + */ + function f_CDMA2000_CellInfo_Init (CDMA2000_CellId_Type p_CellId) return CDMA2000_CellInfo_Type + { + var template (value) CDMA2000_CellInfo_Type v_CellInfo; + var PhysCellIdCDMA2000_Type v_PNOffset; + var SectorID_HRPD_Type v_SectorID_HRPD; + var template (value) SectorID_RTT1X_Type v_SectorID_RTT1X; + var ARFCN_ValueCDMA2000_Type v_ChannelNum; + var template (value) ModeSpecificCellParams_Type v_ModeSpecificCellParams; + var B10_Type v_MCC := fl_ConvertMCC_T0_B10(tsc_CountryCodeDef); + var B7_Type v_MNC := fl_ConvertMNC_T0_B7(tsc_MNC_Def); + var B12_Type v_Reg_Zone; + var B4_Type v_BaseClass := int2bit(0,4); + + select (p_CellId) { + case(cdma2000_Cell15, + cdma2000_Cell16, + cdma2000_Cell17, + cdma2000_Cell18) // HRPD Cells + { + v_ModeSpecificCellParams := cs_ModeSpecificCellParams_HRPD_Def(cs_HRPD_CellParametersDef); + v_ChannelNum := f_HRPD_CalculateChannelNumber(p_CellId,px_HRPD_BandClass); + select (p_CellId ) { + case ( cdma2000_Cell15 ) + { + v_PNOffset := tsc_PNOffsetDef; + v_SectorID_HRPD := px_HRPD_SectorID_Cell15; + } + case ( cdma2000_Cell16 ) + { + v_PNOffset := tsc_PNOffset2; + v_SectorID_HRPD := px_HRPD_SectorID_Cell16; + } + case ( cdma2000_Cell17 ) + { + v_PNOffset := tsc_PNOffset3; + v_SectorID_HRPD := px_HRPD_SectorID_Cell17; + } + case ( cdma2000_Cell18 ) + { + v_PNOffset := tsc_PNOffset4; + v_SectorID_HRPD := px_HRPD_SectorID_Cell18; + } + } + v_CellInfo := cs_CDMA2000_CellInfo_Def(cs_CDMA2000_CellParameters_HRPD_Def(v_PNOffset, v_SectorID_HRPD, v_ChannelNum), + v_ModeSpecificCellParams); + } + case(cdma2000_Cell19, + cdma2000_Cell20, + cdma2000_Cell21, + cdma2000_Cell22) // RTT1X Cells + { + if ((px_1XRTT_BandClass == 1) or (px_1XRTT_BandClass == 4)) { + v_BaseClass:= int2bit(1,4); + }; + v_ChannelNum := f_RTT1X_CalculateChannelNumber(p_CellId,px_1XRTT_BandClass); + select (p_CellId ) { + case ( cdma2000_Cell19 ) + { + v_Reg_Zone := tsc_Reg_ZoneDef; + v_PNOffset := tsc_PNOffsetDef; + v_SectorID_RTT1X := cs_SectorID_RTT1X_Def ; + + } + case ( cdma2000_Cell20 ) + { + v_Reg_Zone := tsc_Reg_Zone2; + v_PNOffset := tsc_PNOffset2; + v_SectorID_RTT1X := cs_SectorID_RTT1X_Def (px_1XRTT_BaseId_Cell20); + } + case ( cdma2000_Cell21 ) + { + v_Reg_Zone := tsc_Reg_Zone3; + v_PNOffset := tsc_PNOffset3; + v_SectorID_RTT1X := cs_SectorID_RTT1X_Def ( px_1XRTT_BaseId_Cell21); + } + case ( cdma2000_Cell22 ) + { + v_Reg_Zone := tsc_Reg_Zone4; + v_PNOffset := tsc_PNOffset4; + v_SectorID_RTT1X := cs_SectorID_RTT1X_Def (px_1XRTT_BaseId_Cell22) ; + } + } + v_ModeSpecificCellParams := cs_ModeSpecificCellParams_RTT1X_Def(cs_RTT1X_CellParametersDef (v_MCC, v_MNC,v_Reg_Zone,v_BaseClass)); + v_CellInfo := cs_CDMA2000_CellInfo_Def (cs_CDMA2000_CellParameters_RTT1X_Def(v_PNOffset, v_SectorID_RTT1X, v_ChannelNum), + v_ModeSpecificCellParams); + } + case else { + FatalError (__FILE__, __LINE__, "invalid C2k cell Identity"); + } + } + return valueof(v_CellInfo); + } + + /* + * @desc initialises the CDMA 2000 cell arrays for 8 cells + * @return CDMA2000_CellArray_Type + * @status APPROVED (LTE_IRAT) + */ + function f_CDMA2000_CellArray_Init () return CDMA2000_CellArray_Type + { + var template (value) CDMA2000_CellArray_Type v_CDMA2000_Cells; + var integer v_Index; + + v_Index := f_CDMA2000_CellInfo_GetIndex (cdma2000_Cell15); + v_CDMA2000_Cells[v_Index] := f_CDMA2000_CellInfo_Init(cdma2000_Cell15); + + v_Index := f_CDMA2000_CellInfo_GetIndex (cdma2000_Cell16); + v_CDMA2000_Cells[v_Index] := f_CDMA2000_CellInfo_Init (cdma2000_Cell16); + + v_Index := f_CDMA2000_CellInfo_GetIndex (cdma2000_Cell17); + v_CDMA2000_Cells[v_Index] := f_CDMA2000_CellInfo_Init(cdma2000_Cell17); + + v_Index := f_CDMA2000_CellInfo_GetIndex (cdma2000_Cell18); + v_CDMA2000_Cells[v_Index] := f_CDMA2000_CellInfo_Init (cdma2000_Cell18); + + v_Index := f_CDMA2000_CellInfo_GetIndex (cdma2000_Cell19); + v_CDMA2000_Cells[v_Index] := f_CDMA2000_CellInfo_Init(cdma2000_Cell19); + + v_Index := f_CDMA2000_CellInfo_GetIndex (cdma2000_Cell20); + v_CDMA2000_Cells[v_Index] := f_CDMA2000_CellInfo_Init (cdma2000_Cell20); + + v_Index := f_CDMA2000_CellInfo_GetIndex (cdma2000_Cell21); + v_CDMA2000_Cells[v_Index] := f_CDMA2000_CellInfo_Init(cdma2000_Cell21); + + v_Index := f_CDMA2000_CellInfo_GetIndex (cdma2000_Cell22); + v_CDMA2000_Cells[v_Index] := f_CDMA2000_CellInfo_Init (cdma2000_Cell22); + + return valueof(v_CDMA2000_Cells); + } + + //---------------------------------------------------------------------------- + /*function fl_ConvertBandClassToInteger (BandclassCDMA2000_Type p_Enum) return integer +{ + var integer v_Value := -1; + select (p_Enum) { + case (bc0) { + v_Value := 0; + } case (bc1) { + v_Value := 1; + } case (bc2) { + v_Value := 2; + } case (bc3) { + v_Value := 3; + } case (bc4) { + v_Value := 4; + } case (bc5) { + v_Value := 5; + } case (bc6) { + v_Value := 6; + } case (bc7) { + v_Value := 7; + } case (bc8) { + v_Value := 8; + } case (bc9) { + v_Value := 9; + } case (bc10) { + v_Value := 10; + } case (bc11) { + v_Value := 11; + } case (bc12) { + v_Value := 12; + } case (bc13) { + v_Value := 13; + } case (bc14) { + v_Value := 14; + } case (bc15) { + v_Value := 15; + } case (bc16) { + v_Value := 16; + } case (bc17){ + v_Value := 17; + } + } + return v_Value; + } */ + + //---------------------------------------------------------------------------- + /* + * @desc To initilise a co-ordination message for a single CDMA200 cell + * @param p_CellInfo + * @return template (value) CoOrd_CDMA2000SysInfo_Type + * @status APPROVED (LTE_IRAT) + */ + function f_CDMA2000_IR_InitSingleSysInfo (CDMA2000_CellInfo_Type p_CellInfo) return template (value) CoOrd_CDMA2000SysInfo_Type + { //@sic R5s100848 sic@ + if (p_CellInfo.CommonCellInfo.CommonCellParams.Type == typeHRPD) { + return cs_CoOrdCDMA2000_SysInfoSingleCell (true, + p_CellInfo.CommonCellInfo.CommonCellParams.CarrierFreq.ARFCN, + p_CellInfo.CommonCellInfo.CommonCellParams.CarrierFreq.BandClass, + p_CellInfo.CommonCellInfo.CommonCellParams.PhysCellId, + p_CellInfo.ModeSpecificParams.HRPD.ColorCode , + p_CellInfo.CommonCellInfo.CommonCellParams.CellGlobalId.HRPD, + tsc_BaseId_Dummy, // Dummy value as HRPD cell + tsc_NID_Dummy, // Dummy value as HRPD cell + tsc_SID_Dummy, + tsc_RegZone_Dummy); // Dummy value as HRPD cell + } else { + return cs_CoOrdCDMA2000_SysInfoSingleCell (false, + p_CellInfo.CommonCellInfo.CommonCellParams.CarrierFreq.ARFCN, + p_CellInfo.CommonCellInfo.CommonCellParams.CarrierFreq.BandClass, + p_CellInfo.CommonCellInfo.CommonCellParams.PhysCellId, + tsc_ColorCode_Dummy,// Dummy value as RTT1X cell + tsc_HRPD_SectorID_Dummy, // Dummy value as RTT1X cell + p_CellInfo.CommonCellInfo.CommonCellParams.CellGlobalId.RTT1X.BaseId, + p_CellInfo.CommonCellInfo.CommonCellParams.CellGlobalId.RTT1X.NID, + p_CellInfo.CommonCellInfo.CommonCellParams.CellGlobalId.RTT1X.SID, + p_CellInfo.ModeSpecificParams.RTT1X.Reg_Zone ); + } + } + + //---------------------------------------------------------------------------- + /* + * @desc To initilise a co-ordination message for a all HRPD or 1XRTT cells + * @param p_CellInfo + * @param p_CDMA2K_Type (default value: typeHRPD) + * @return template (value) IRAT_CoOrd_SysInfo_Type + * @status APPROVED (LTE_IRAT) + */ + function f_CDMA2000_IR_SysInfoInit (CDMA2000_CellArray_Type p_CellInfo, + CDMA2K_Type p_CDMA2K_Type := typeHRPD) + return template (value) IRAT_CoOrd_SysInfo_Type + { //@sic R5s100848 sic@ + var integer v_CellIndex1,v_CellIndex2,v_CellIndex3,v_CellIndex4; + select (p_CDMA2K_Type) { + case (typeHRPD) { + v_CellIndex1 := f_CDMA2000_CellInfo_GetIndex(cdma2000_Cell15); + v_CellIndex2 := f_CDMA2000_CellInfo_GetIndex(cdma2000_Cell16); + v_CellIndex3 := f_CDMA2000_CellInfo_GetIndex(cdma2000_Cell17); + v_CellIndex4 := f_CDMA2000_CellInfo_GetIndex(cdma2000_Cell18); + } + case (type1XRTT) { + v_CellIndex1 := f_CDMA2000_CellInfo_GetIndex(cdma2000_Cell19); + v_CellIndex2 := f_CDMA2000_CellInfo_GetIndex(cdma2000_Cell20); + v_CellIndex3 := f_CDMA2000_CellInfo_GetIndex(cdma2000_Cell21); + v_CellIndex4 := f_CDMA2000_CellInfo_GetIndex(cdma2000_Cell22); + } + }; + return cs_CoOrdCDMA2000_SysInfo(f_CDMA2000_IR_InitSingleSysInfo (p_CellInfo[v_CellIndex1]), + f_CDMA2000_IR_InitSingleSysInfo (p_CellInfo[v_CellIndex2]), + f_CDMA2000_IR_InitSingleSysInfo (p_CellInfo[v_CellIndex3]), + f_CDMA2000_IR_InitSingleSysInfo (p_CellInfo[v_CellIndex4])); + } + + //---------------------------------------------------------------------------- + +} // End of module diff --git a/LTE_A_IWD_14wk37/Common/C2K/CDMA2000_CommonDefs.ttcn b/LTE_A_IWD_14wk37/Common/C2K/CDMA2000_CommonDefs.ttcn new file mode 100644 index 0000000..e9c2066 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/C2K/CDMA2000_CommonDefs.ttcn @@ -0,0 +1,128 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-06-22 12:16:53 +0200 (Sat, 22 Jun 2013) $ +// $Rev: 9022 $ +/******************************************************************************/ + +module CDMA2000_CommonDefs { /* type definitions used by CDMA2000 and EUTRA */ + + import from CommonDefs all; + + type integer SearchWindowSize_Type (0..15); /* Search Window as in 36.331 ASN.1 definition for SystemInformationBlockType8.searchWindowSize */ + type integer BandclassCDMA2000_Type (0..31); /* Band class defined as in 36.331 ASN.1 definition for BandclassCDMA2000 */ + type integer ARFCN_ValueCDMA2000_Type (0..2047); /* ARFCN for CDMA2000 cell as in 36.331 ASN.1 definition for ARFCN_ValueCDMA2000 */ + type integer PhysCellIdCDMA2000_Type (0..511); /* PN offset for CDMA2000 cell as in 36.331 ASN.1 definition for PhysCellIdCDMA2000 */ + type integer ProtRev_Type (0..255); /* protocol revision */ + type integer OpenLoopAdjust_Type (0..255); /* 9.4.6.2.6 of C.S0024 */ + + type integer BCD_Digit_Type (0..9); /* To represent BCD digit of MCC */ + type record length (3) of BCD_Digit_Type MCC_Type ; /* Represents Mobile Country Code */ + type record length (2) of BCD_Digit_Type MNC_Type ; /* Represents Mobile Network Code i.e. the 11 and 12 digits in IMSI*/ + type record length (1..8) of B8_Type TMSI_Zone_Type; /* TMSI Zone 1 to 8 octets */ + type O4_Type TMSI_Code_Type; + type integer EncryptionMode_Type (0..7); /* C.S0005 table 3.7.4.5-1 & 3.7.5.7-3 + * 0 ... Encryption disabled + * 1 ... Encryption with ORYX algorithm for User Info and + * Enhanced Cellular Msg Encryption Algorithm for Signalling + * 2 ... Encryption with Rijndael algorithm + * 3-7 ... reserved + */ + + + type integer TMSI_ZoneLen_Type (1..8); /* TMSI Zone Lenght; On encoding this is encoded to B4_Type */ + type record TMSI_Type { /* Globally unique TMSI as defined in C.s0005 clause 3.7.2.3.2.19 */ + TMSI_ZoneLen_Type TMSI_ZoneLen, /* Length of TMSI_Zone 1..8 */ + TMSI_Zone_Type TMSI_Zone, /* TMSI_ZoneLen octets of TMSI_Zone */ + TMSI_Code_Type TMSI_Code /* TMSI code */ + } + + + type B128_Type SectorID_HRPD_Type; /* Sector ID for HRPD as in 36.331 ASN.1 definition for CellGlobalIdCDMA2000.cellGlobalIdHRPD */ + + type record SectorID_RTT1X_Type { /* Sector ID for 1XRTT acc. to C.S0005 clause 3.7.2.3.2.1 and as in 36.331 ASN.1 clause 6.3.4, + * definition of CellGlobalIdCDMA2000.cellGlobalId1XRTT */ + B16_Type BaseId, /* Base station identification. + * The base station shall set this field to its identification number */ + B16_Type NID, /* Network identification + * This field serves as a sub-identifier of a system as defined by the owner of the SID. + * The base station shall set this field to the network identification number for this network */ + B15_Type SID /* System identification. set to the system identification number for this system */ + }; + + type record CarrierFreqCDMA2000_Type { /* Carrier Frequency for CDMA2000 cell as in 36.331 ASN.1 definition for CarrierFreqCDMA2000; + * contains Band class 5 bit and Channel number 11 bit part of Sector Channel over head message contained in 24 bit Channel IE */ + BandclassCDMA2000_Type BandClass, + ARFCN_ValueCDMA2000_Type ARFCN + }; + + type enumerated CDMA2K_Type { /* CDMA 2000 Type for CDMA2000 cell as in 36.331 ASN.1 definition for CDMA2000-Type */ + type1XRTT, + typeHRPD + }; + + type union CellGlobalIdCDMA2000_Type { /* CDMA 2000 Type Sector ID of the Cell as in 36.331 ASN.1 definition CellGlobalIdCDMA2000*/ + SectorID_RTT1X_Type RTT1X, + SectorID_HRPD_Type HRPD + }; + + //--------------------------------------------------------------------------------------------------------------------------------------------- + + type integer PilotOffset_Type (-31..0); /* Represents the offset i.e. Pilot Channel power to total cell power(dB); + * By default shall be set to -7 + * 127 selected Max value by 7 bits */ + type integer PowerIor_Type (-127..0); /* Represets the cell total Tx power Ior (dBm/1.23 MHz) */ + type integer PowerIoc_Type (-127..0); /* Represets the cell total AWGN power Ioc (dBm/1.23 MHz) which is independent of cell */ + type integer Attenuation_Type (0..127); + type integer SystemType_Type (0..255); /* 0 to 2 are allowed and 3 to 255 are reserved 13.1 of C.S0024 */ + type integer ColorCode_Type (0..255); /* 7.11.6.2.1 of C.S0024 */ + + type integer ReverseLinkMACIndex_Type (0..383); /* C.S0024 clause 12.4.1.3.2.2 */ + + + type enumerated ReverseRateLimit_Type { /* Table 9.9.6.3-2 of C.S0024; + * set to the highest data rate that the access terminal is allowed to use on the Reverse Traffic Channel; + * 10 Reserved values */ + kbps0, + kbps9_6, + kbps19_2, + kbps38_4, + kbps76_8, + kbps153_6, + resrv1, resrv2, resrv3, resrv4, resrv5, + resrv6, resrv7, resrv8, resrv9, resrv10 + }; + + type enumerated PacketApplication_Type { /* Type of Packet Application to be used in Stream protocol */ + enhMultiFlowPacketApp + }; + + type enumerated ControlChannelRate_Type { /* Determines the MAC configuration for Control Channel */ + macIndex2, + macIndex3 + }; + + type enumerated CDMA2000_CellId_Type { + cdma2000_Cell_NonSpecific, + cdma2000_Cell15, //HRDP Cell + cdma2000_Cell16, //HRDP Cell + cdma2000_Cell17, //HRDP Cell + cdma2000_Cell18, //HRDP Cell + cdma2000_Cell19, //RTT1X Cell + cdma2000_Cell20, //RTT1X Cell + cdma2000_Cell21, //RTT1X Cell + cdma2000_Cell22 //RTT1X Cell + }; + + type record SearchWindowSizeRecord_Type { + SearchWindowSize_Type SearchWindow_Active, /* Search Window for Active Cells */ + SearchWindowSize_Type SearchWindow_Neighbor, /* Search Window for Neighbor Cells */ + SearchWindowSize_Type SearchWindow_Remaining /* Search Window for Rest Cells */ + }; + +} + diff --git a/LTE_A_IWD_14wk37/Common/C2K/CDMA2000_CommonFunctions.ttcn b/LTE_A_IWD_14wk37/Common/C2K/CDMA2000_CommonFunctions.ttcn new file mode 100644 index 0000000..808a922 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/C2K/CDMA2000_CommonFunctions.ttcn @@ -0,0 +1,793 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-06-05 09:48:39 +0200 (Thu, 05 Jun 2014) $ +// $Rev: 11544 $ +/******************************************************************************/ + +module CDMA2000_CommonFunctions +{ + import from CommonDefs all; + import from CDMA2000_CellInfo all; + import from CDMA2000_Component all; + import from CDMA2000_CommonDefs all; + import from CDMA2000_Templates all; + import from CDMA2000_ASP_TypeDefs all; + import from CDMA2000_Constants all; + import from CommonIratDefs all; + import from UpperTesterFunctions all; + import from Parameters all; + import from CDMA2000_Parameters all; + + //============================================================================ + /* + * @desc Generic function for HRPD/RTT1X Cell Configuration + * @param p_CellId + * @param p_SYSTEM_CTRL_REQ + * @status APPROVED (LTE_IRAT) + */ + function f_CDMA2000_SS_CommonCellConfig(CDMA2000_CellId_Type p_CellId, + template (value) CDMA2000_SYSTEM_CTRL_REQ p_SYSTEM_CTRL_REQ) runs on CDMA2000_PTC + { + SYS.send( p_SYSTEM_CTRL_REQ ); + if (valueof(p_SYSTEM_CTRL_REQ.Common.ControlInfo.CnfFlag) == true) { + SYS.receive ( car_CDMA2000_CellConfig_CNF ( p_CellId ) ); + } + } + + //---------------------------------------------------------------------------- + /* + * @desc Configures HRPD cell + * @param p_CellId + * @status APPROVED (LTE_IRAT) + */ + function f_CreateCell_HRPD (CDMA2000_CellId_Type p_CellId) runs on CDMA2000_PTC + { + var template (value) CDMA2000_CellParameters_Type v_CellParameters := f_CDMA2000_CommonCellParameters_Get(p_CellId); + var template (value) HRPD_CellParameters_Type v_HRPD_CellParameters := f_CDMA2000_HRPD_CellParameters_Get(p_CellId); + var template (value) CDMA2000_AbsoluteCellPower_Type v_CDMA2000_AbsoluteCellPower := f_CDMA2000_CellPower_Get(p_CellId); + f_CDMA2000_SS_CommonCellConfig (p_CellId, cas_HRPD_CellConfig_REQ (p_CellId, v_CellParameters, v_HRPD_CellParameters, v_CDMA2000_AbsoluteCellPower)); + } + + //---------------------------------------------------------------------------- + /* + * @desc Configures HRPD cell + * @param p_CellId + * @status APPROVED (LTE_IRAT) + */ + function f_CreateCell_RTT1X (CDMA2000_CellId_Type p_CellId) runs on CDMA2000_PTC + { + var template (value) CDMA2000_CellParameters_Type v_CellParameters := f_CDMA2000_CommonCellParameters_Get(p_CellId); + var template (value) RTT1X_CellParameters_Type v_RTT1X_CellParameters := f_CDMA2000_RTT1X_CellParameters_Get(p_CellId); + var template (value) CDMA2000_AbsoluteCellPower_Type v_CDMA2000_AbsoluteCellPower := f_CDMA2000_CellPower_Get(p_CellId); + f_CDMA2000_SS_CommonCellConfig (p_CellId, cas_RTT1X_CellConfig_REQ (p_CellId, v_CellParameters, v_RTT1X_CellParameters, v_CDMA2000_AbsoluteCellPower)); + } + + //---------------------------------------------------------------------------- + /* + * @desc Function that will be called in test cases to create a CDMA2000 cell + * @param p_CellId + * @status APPROVED (LTE_IRAT) + */ + function f_CDMA2000CreateCell (CDMA2000_CellId_Type p_CellId) runs on CDMA2000_PTC + { + if (match (f_CDMA2000_Type_Get(p_CellId), typeHRPD)) + { // HRPD Cell + f_CreateCell_HRPD (p_CellId); + } + else + { // RTT1X Cell; + f_CreateCell_RTT1X (p_CellId); + } + + // Other initializations to be done here + + } // end of f_CDMA2000CreateCell + + //---------------------------------------------------------------------------- + /* + * @desc Function that will release one or/all configired CDMA2000 cells [HRPD and RTT1X] + * @param p_CellId : if individual cell ID is provided the cell with cell ID is released; + * if cell non specific ID is used all configured cells will be released + * (default value: cdma2000_Cell_NonSpecific) + * @param p_TimingInfo (default value: cs_CDMA2000_TimingInfoNow) + * @status APPROVED (LTE_IRAT) + */ + function f_CDMA2000_ReleaseCells (CDMA2000_CellId_Type p_CellId := cdma2000_Cell_NonSpecific, + template (value) CDMA2000_TimingInfo_Type p_TimingInfo := cs_CDMA2000_TimingInfoNow) runs on CDMA2000_PTC + { + f_CDMA2000_SS_CommonCellConfig( p_CellId, cas_CDMA2000_CellRel_REQ (p_CellId, p_TimingInfo)); + } + + //============================================================================ + // Function to set cell power level + //---------------------------------------------------------------------------- + /* + * @desc calculate new attenuation for a cell based on the previous attenuation and the given absolute cell power; + * the attenuation is written back to the global TTCN-3 EUTRA_CellInfo but no configuration is performed at SS + * @param p_CellId + * @param p_NewPowerLevel absolute (negative) value of Ior calcualted at time instance + * @return CDMA2000_Attenuation_Type + * @status APPROVED (LTE_IRAT) + */ + function fl_CDMA2000_ChangeCellAttenuation(CDMA2000_CellId_Type p_CellId, + PowerIor_Type p_NewPowerLevel) runs on CDMA2000_PTC return CDMA2000_Attenuation_Type + { + var CDMA2000_ReferenceCellPower_Type v_CurrentCellPower := f_CDMA2000_CellInfo_GetCellPower( p_CellId ); + var PowerIor_Type v_CurrentRefPowerLevel := v_CurrentCellPower.CellPower.PowerIor; + var CDMA2000_Attenuation_Type v_Attenuation; + var integer v_AttenuationValue; + + if (p_NewPowerLevel == tsc_NonSuitableOffCellPowerIor) { + v_Attenuation.Off := true; + } else { + v_AttenuationValue := v_CurrentRefPowerLevel - p_NewPowerLevel; // v_CurrentRefPowerLevel and p_NewPowerLevel both are negative values + + if (v_AttenuationValue < 0) { // i.e. |p_NewPowerLevel| < |v_CurrentRefPowerLevel| + FatalError (__FILE__, __LINE__, "Initial reference power has invalid value"); + } else { + v_Attenuation.Value := v_AttenuationValue; + } + } + + v_CurrentCellPower.CellAttenuation := v_Attenuation; + f_CDMA2000_CellInfo_SetCellPower (p_CellId, v_CurrentCellPower); + + return v_Attenuation; + } + + //---------------------------------------------------------------------------- + + type record CDMA2000_CellPower_Type { /* @status APPROVED (LTE_IRAT) */ + CDMA2000_CellId_Type CellId, + PowerIor_Type NewPowerLevel + }; + + type record length(1..tsc_CDMA2000_MaxNumberOfCells) of CDMA2000_CellPower_Type CDMA2000_CellPowerList_Type; /* used together with f_CDMA2000_SetCellPowerList + @status APPROVED (LTE_IRAT) */ + + template (value) CDMA2000_CellPower_Type cs_CDMA2000_CellPower(CDMA2000_CellId_Type p_CellId, + PowerIor_Type p_NewPowerLevel) := + { /* @status APPROVED (LTE_IRAT) */ + CellId := p_CellId, + NewPowerLevel := p_NewPowerLevel + }; + + /* + * @desc to configure power of several cells in one go + * @param p_CellPowerList + * @param p_TimingInfo (default value: cs_CDMA2000_TimingInfoNow) + * @status APPROVED (LTE_IRAT) + */ + function f_CDMA2000_SetCellPowerList (template (value) CDMA2000_CellPowerList_Type p_CellPowerList, + template (value) CDMA2000_TimingInfo_Type p_TimingInfo := cs_CDMA2000_TimingInfoNow) runs on CDMA2000_PTC + { /* @status APPROVED (LTE_IRAT) */ + var integer i; + var CDMA2000_CellPower_Type v_CellPower; + var CDMA2000_CellAttenuationList_Type v_CellAttenuationList; + + for (i:=0; i testcase will terminate immediately + } + + /* + * @desc set correct verdict: prelininary PASS is only be assigned when being in the test body + * @param p_FileName + * @param p_LineNo + * @param p_Msg + * @status APPROVED (LTE_IRAT) + */ + function f_CDMA2000_PreliminaryPass(charstring p_FileName, + LineNo_Type p_LineNo, + charstring p_Msg) runs on CDMA2000_PTC + { + if (fl_CDMA2000_TestBody_Check()) { + f_SetVerdict(pass, p_FileName, p_LineNo, p_Msg); + } + } + + //============================================================================ + + /* + * @desc initialisation of the CDMA2000 PTC + * @param p_ConfiguredPTCs + * @param p_CDMA2K_Type (default value: typeHRPD) + * @status APPROVED (LTE_IRAT) + */ + function f_CDMA2000_Init(IRAT_ConfiguredPTCs_Type p_ConfiguredPTCs, + CDMA2K_Type p_CDMA2K_Type := typeHRPD) runs on CDMA2000_PTC + { + //var IRAT_CoOrd_SysInfo_List_Type v_IR_SysInfoList; + + vc_CDMA2000_Global.Ctrl.Default := null; + vc_CDMA2000_Global.Ctrl.TestBody := false; + vc_CDMA2000_Global.CellArray := f_CDMA2000_CellArray_Init(); + + // Now initialize sys info, together with EUTRA inter RAT parameters, for all cells + select (p_ConfiguredPTCs) + { + case (EUTRA_CDMA2000) { + //v_IR_SysInfoList[0] := f_IRAT_InitialCoOrd(EUTRA, f_CDMA2000_IR_SysInfoInit (vc_CDMA2000_Global.CellArray, p_CDMA2K_Type)); + f_IRAT_InitialCoOrd(EUTRA, f_CDMA2000_IR_SysInfoInit (vc_CDMA2000_Global.CellArray, p_CDMA2K_Type)); + } + case else { + FatalError (__FILE__, __LINE__, "wrong PTC configuration specified in test case"); + } + } + f_CDMA2000_ActivateDefault(StandardDefault); + } + + //---------------------------------------------------------------------------- + /* + * @desc To get the index in cell info variable for a given cell ID + * @param p_CellId + * @return integer + * @status APPROVED (LTE_IRAT) + */ + function f_CDMA2000_CellInfo_GetIndex (CDMA2000_CellId_Type p_CellId) return integer + { + select (p_CellId) + { + case (cdma2000_Cell15) { + return 0; + } case (cdma2000_Cell16) { + return 1; + } case (cdma2000_Cell17) { + return 2; + } case (cdma2000_Cell18) { + return 3; + } case (cdma2000_Cell18) { + return 3; + } case (cdma2000_Cell19) { + return 4; + } case (cdma2000_Cell20) { + return 5; + } case (cdma2000_Cell21) { + return 6; + } case (cdma2000_Cell22) { + return 7; + } case else { + FatalError (__FILE__, __LINE__, "Invalid CellId"); + return 0; + } + } + } + + //---------------------------------------------------------------------------- + // Access to Power Parameters: + + /* + * @desc Assign the parameterised Attenuation in the CDMA2000_CellInfo + * @param p_CellId + * @param p_ReferenceCellPower + * @status APPROVED (LTE_IRAT) + */ + function f_CDMA2000_CellInfo_SetCellPower ( CDMA2000_CellId_Type p_CellId, + template (value) CDMA2000_ReferenceCellPower_Type p_ReferenceCellPower ) runs on CDMA2000_PTC + { + var template (value) CDMA2000_CellInfo_Type v_CellInfo := f_CDMA2000_CellInfo_Get(p_CellId); // template variable to avoid valueof + + v_CellInfo.ReferenceCellPower := p_ReferenceCellPower; + f_CDMA2000_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Return the Cell power parameters stored in the CDMA2000_CellInfo + * @param p_CellId + * @return CDMA2000_ReferenceCellPower_Type + * @status APPROVED (LTE_IRAT) + */ + function f_CDMA2000_CellInfo_GetCellPower ( CDMA2000_CellId_Type p_CellId ) runs on CDMA2000_PTC return CDMA2000_ReferenceCellPower_Type + { + var CDMA2000_CellInfo_Type v_CellInfo := f_CDMA2000_CellInfo_Get(p_CellId); + return v_CellInfo.ReferenceCellPower; + } + + /* + * @desc set max. reference power for a cell before the cell is created; the attenuation is "Off" in this case + * @param p_CellId + * @param p_PowerIoc (default value: tsc_PowerIocDef) + * @param p_PowerIor (default value: tsc_PowerIorDef) + * @param p_PilotOffset + * @status APPROVED (LTE_IRAT) + */ + function f_CDMA2000_CellInfo_InitMaxReferencePower ( CDMA2000_CellId_Type p_CellId, + PowerIoc_Type p_PowerIoc := tsc_PowerIocDef, + PowerIor_Type p_PowerIor := tsc_PowerIorDef, + template (omit) PilotOffset_Type p_PilotOffset ) runs on CDMA2000_PTC + { + var template (value) CDMA2000_CellInfo_Type v_CellInfo := f_CDMA2000_CellInfo_Get(p_CellId); // template variable to avoid valueof + var template (value) PilotOffset_Type v_PilotOffset; + if (isvalue (p_PilotOffset)) + { + v_PilotOffset := valueof(p_PilotOffset); + } + else + { + if (match (f_CDMA2000_Type_Get(p_CellId), typeHRPD)) // HRPD default offset to be applied + { + v_PilotOffset := tsc_PilotOffsetHRPDDef; + } + else // RTT1X default offset to be applied + { + v_PilotOffset := tsc_PilotOffsetDef; + } + } + + v_CellInfo.ReferenceCellPower.CellPower := cs_CDMA2000_AbsoluteCellPowerDef(p_PowerIoc,p_PowerIor,v_PilotOffset); + v_CellInfo.ReferenceCellPower.CellAttenuation.Off := true; + f_CDMA2000_CellInfo_Set (p_CellId, v_CellInfo); + } + + //---------------------------------------------------------------------------- + + group Get_SetFunctions { /* Group of functions for setting or geting elements in cell specific cell info */ + /* + * @desc Set info of cell with given index (p_CellId) + * @param p_CellId + * @param p_CellInfo + * @status APPROVED (LTE_IRAT) + */ + function f_CDMA2000_CellInfo_Set(CDMA2000_CellId_Type p_CellId, + template (value) CDMA2000_CellInfo_Type p_CellInfo) runs on CDMA2000_PTC + { + var integer v_Index := f_CDMA2000_CellInfo_GetIndex(p_CellId); + vc_CDMA2000_Global.CellArray[v_Index] := valueof (p_CellInfo); /* valueof cannot be avoided here */ + } + + /* + * @desc Set info of cell with given index (p_CellId) + * @param p_CellId + * @param p_CellInfo + * @status + */ + function f_CDMA2000_HRPD_ColorCode_Set(CDMA2000_CellId_Type p_CellId, + ColorCode_Type p_ColorCode) runs on CDMA2000_PTC + { + var CDMA2000_CellInfo_Type v_CellInfo := f_CDMA2000_CellInfo_Get(p_CellId); + v_CellInfo.ModeSpecificParams.HRPD.ColorCode := p_ColorCode; + f_CDMA2000_CellInfo_Set(p_CellId, v_CellInfo); + } + + /* + * @desc get info of cell with given index (p_CellId) + * @param p_CellId + * @return CDMA2000_CellInfo_Type + * @status APPROVED (LTE_IRAT) + */ + function f_CDMA2000_CellInfo_Get(CDMA2000_CellId_Type p_CellId) runs on CDMA2000_PTC return CDMA2000_CellInfo_Type + { + var integer v_Index := f_CDMA2000_CellInfo_GetIndex(p_CellId); + return vc_CDMA2000_Global.CellArray[v_Index]; + } + + /* + * @desc To find if the cell is of Type HRPD or 1XRTT + * @param p_CellId + * @return CDMA2K_Type + * @status APPROVED (LTE_IRAT) + */ + function f_CDMA2000_Type_Get (CDMA2000_CellId_Type p_CellId) runs on CDMA2000_PTC return CDMA2K_Type + { + var CDMA2000_CellInfo_Type v_CellInfo := f_CDMA2000_CellInfo_Get(p_CellId); + return v_CellInfo.CommonCellInfo.CommonCellParams.Type; + } + + /* + * @desc To get Mode specific parameters of a HRPD cell + * @param p_CellId + * @return HRPD_CellParameters_Type + * @status APPROVED (LTE_IRAT) + */ + function f_CDMA2000_HRPD_CellParameters_Get (CDMA2000_CellId_Type p_CellId) runs on CDMA2000_PTC return HRPD_CellParameters_Type + { + var CDMA2000_CellInfo_Type v_CellInfo := f_CDMA2000_CellInfo_Get(p_CellId); + if (not (match (f_CDMA2000_Type_Get(p_CellId), typeHRPD))) + { + FatalError (__FILE__, __LINE__, "Non HRPD Cell Id passed "); + } + return v_CellInfo.ModeSpecificParams.HRPD; + } + + /* + * @desc To get Mode specific parameters of a 1xRTT cell + * @param p_CellId + * @return RTT1X_CellParameters_Type + * @status APPROVED (LTE_IRAT) + */ + function f_CDMA2000_RTT1X_CellParameters_Get (CDMA2000_CellId_Type p_CellId) runs on CDMA2000_PTC return RTT1X_CellParameters_Type + { + var CDMA2000_CellInfo_Type v_CellInfo := f_CDMA2000_CellInfo_Get(p_CellId); + if (not (match (f_CDMA2000_Type_Get(p_CellId), type1XRTT))) + { + FatalError (__FILE__, __LINE__, "Non RTT1X Cell Id passed "); + } + return v_CellInfo.ModeSpecificParams.RTT1X; + + } + + /* + * @desc read the cell power + * @param p_CellId + * @return CDMA2000_AbsoluteCellPower_Type + * @status APPROVED (LTE_IRAT) + */ + function f_CDMA2000_CellPower_Get (CDMA2000_CellId_Type p_CellId) runs on CDMA2000_PTC return CDMA2000_AbsoluteCellPower_Type + { + var CDMA2000_CellInfo_Type v_CellInfo := f_CDMA2000_CellInfo_Get(p_CellId); + return v_CellInfo.ReferenceCellPower.CellPower; + } + + /* + * @desc get the common cell info parameters of a cell + * @param p_CellId + * @return CDMA2000_CellParameters_Type + * @status APPROVED (LTE_IRAT) + */ + function f_CDMA2000_CommonCellParameters_Get (CDMA2000_CellId_Type p_CellId) runs on CDMA2000_PTC return CDMA2000_CellParameters_Type + { + var CDMA2000_CellInfo_Type v_CellInfo := f_CDMA2000_CellInfo_Get(p_CellId); + return v_CellInfo.CommonCellInfo.CommonCellParams; + } + + /* + * @desc get common CDMA2000 info + * @param p_CellId + * @return CDMA2000_CommonCellInfo_Type + * @status (APPROVED) + */ + function f_CDMA2000_CommonCellInfo_Get (CDMA2000_CellId_Type p_CellId) runs on CDMA2000_PTC return CDMA2000_CommonCellInfo_Type + { + var CDMA2000_CellInfo_Type v_CellInfo := f_CDMA2000_CellInfo_Get(p_CellId); + return v_CellInfo.CommonCellInfo; + } + /* + * @desc get PN offset of the cell + * @param p_CellId + * @return integer + * @status + */ + + function f_CDMA2000_PNOffset_Get (CDMA2000_CellId_Type p_CellId) runs on CDMA2000_PTC return integer + { + var CDMA2000_CellInfo_Type v_CellInfo := f_CDMA2000_CellInfo_Get(p_CellId); + return v_CellInfo.CommonCellInfo.CommonCellParams.PhysCellId; + } + /* + * @desc get Sector ID of the HRPD cell + * @param p_CellId + * @return SectorID_HRPD_Type + * @status + */ + function f_HRPD_sectorID_Get (CDMA2000_CellId_Type p_CellId) runs on CDMA2000_PTC return SectorID_HRPD_Type + { + var CDMA2000_CellInfo_Type v_CellInfo := f_CDMA2000_CellInfo_Get(p_CellId); + return v_CellInfo.CommonCellInfo.CommonCellParams.CellGlobalId.HRPD; + } + + } // end of group Get_SetFunctions +} diff --git a/LTE_A_IWD_14wk37/Common/C2K/CDMA2000_Constants.ttcn b/LTE_A_IWD_14wk37/Common/C2K/CDMA2000_Constants.ttcn new file mode 100644 index 0000000..b9d9fc9 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/C2K/CDMA2000_Constants.ttcn @@ -0,0 +1,72 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-04-07 21:15:34 +0200 (Sun, 07 Apr 2013) $ +// $Rev: 8465 $ +/******************************************************************************/ + +module CDMA2000_Constants { + + import from CommonDefs all; + import from CDMA2000_CommonDefs all; + import from CDMA2000_ASP_TypeDefs all; + + const PhysCellIdCDMA2000_Type tsc_PNOffsetDef := 50; /* Arbitrarily Selected */ + const PhysCellIdCDMA2000_Type tsc_PNOffset2 := 100; /* Arbitrarily Selected */ + const PhysCellIdCDMA2000_Type tsc_PNOffset3 := 150; /* Arbitrarily Selected */ + const PhysCellIdCDMA2000_Type tsc_PNOffset4 := 200; /* Arbitrarily Selected */ + const SearchWindowSize_Type tsc_SearchWindowDef := 8; /* @sic R5-115761 sic@ */ + const SystemType_Type tsc_SystemTypeDef := 0; // Arbitrarily Selected + const B8_Type tsc_SubNetMaskDef := oct2bit('40'O); // Arbitrarily Selected + //@sic R5s100848 sic@ + const MCC_Type tsc_CountryCodeDef := { 0, 0, 1 }; // default home PLMN MCC + const MNC_Type tsc_MNC_Def := { 0, 1 }; // default home PLMN MNC + const ReverseRateLimit_Type tsc_ReverseRateLimitDef := kbps153_6; // Arbitrarily Selected + //const ReverseLinkMACIndex_Type tsc_MACIndexDef := px_MACIndex; //@sic R5-120721 sic@ + const PacketApplication_Type tsc_PacketAppDef := enhMultiFlowPacketApp; // Arbitrarily Selected + const ControlChannelRate_Type tsc_ControlChannelRateDef := macIndex2; // Arbitrarily Selected + const PilotOffset_Type tsc_PilotOffsetDef := -7; // Used for 1XRTT + const PilotOffset_Type tsc_PilotOffsetHRPDDef := 0; // In HRPD pilot is time multiplexed hence ofset is 0 + //@sic R5-104718 sic@ + const PowerIor_Type tsc_NonSuitableOffCellPowerIor := -121; // Corresponding to off cell + const PowerIor_Type tsc_PowerIorDef := -55; // Corresponding to Ior/Ioc =0 and Ioc =-55 + const PowerIoc_Type tsc_PowerIocDef := -55; + const Attenuation_Type tsc_AttenuationDef := 0; + const O3_Type tsc_HandoverAttach := int2oct(3, 3); // 3: Handover attach to a PDN. + const O3_Type tsc_InitialAttach := int2oct(1, 3); //@sic R5s120051 sic@ + //const O3_Type tsc_UATI24 := px_UATI24; //@sic R5-120721 sic@ + const PDN_Id_Type tsc_PDN_Id := '0000'B; // Indicates the first PDN association; + const RLP_FlowId_Type tsc_RLP_FlowId1 := 1; // corresponding to DRB ID 1 + const RLP_FlowId_Type tsc_RLP_FlowId2 := 2; // corresponding to DRB ID 2 + const float tsc_WatchDogDef := 60.0; // 60 seconds to allow UE to complete the procedure on CDMA2000 cell + const HRPD_UE_InitStateType tsc_HRPD_UE_InitState_Active := active_Connected ; // UE is in PPP Active state and Radio access connected + const LCP_DetachInit_Type tsc_UEInitDetach := UEInitiated ; // Suitable at switch of UE + + // The dummy values defined here are to pass in the CoOrd_CDMA2000SysInfo_Type + const SectorID_HRPD_Type tsc_HRPD_SectorID_Dummy := oct2bit('00000000000000000000000000000000'O); + // Will be used in CoOrd_CDMA2000SysInfo_Type when cell is a RTT1X cell + const B16_Type tsc_BaseId_Dummy :='0000000000000000'B; + // Will be used in CoOrd_CDMA2000SysInfo_Type when cell is a HRPD cell + const B16_Type tsc_NID_Dummy :='0000000000000000'B ; + // Will be used in CoOrd_CDMA2000SysInfo_Type when cell is a HRPD cell + const B15_Type tsc_SID_Dummy :='000000000000000'B ; + // Will be used in CoOrd_CDMA2000SysInfo_Type when cell is a HRPD cell + const B12_Type tsc_RegZone_Dummy :='000000000000'B ; + // Will be used in CoOrd_CDMA2000SysInfo_Type when cell is a HRPD cell + const ColorCode_Type tsc_ColorCode_Dummy := 0; + // Will be used in CoOrd_CDMA2000SysInfo_Type when cell is a RTT1X cell + const B12_Type tsc_Reg_ZoneDef := int2bit(1,12); // Registration zone 1 + const B12_Type tsc_Reg_Zone2 := int2bit(2,12); // Registration zone 1 + const B12_Type tsc_Reg_Zone3 := int2bit(3,12); // Registration zone 1 + const B12_Type tsc_Reg_Zone4 := int2bit(4,12); // Registration zone 1 + const B4_Type tsc_BaseClassDef := int2bit (0,4); //Base class when Band class is not 1 and 4 + const B4_Type tsc_BaseClass1_4 := int2bit (1,4); //Base class when Band class is 1 0r 4 + const TMSI_Zone_Type tsc_TMSI_ZoneDef := {int2bit(1,8)}; //Default TMSI Zone + const ProtRev_Type tsc_ProtRevDef := 6; //Default Protocol revision + + +}// end of module diff --git a/LTE_A_IWD_14wk37/Common/C2K/CDMA2000_Templates.ttcn b/LTE_A_IWD_14wk37/Common/C2K/CDMA2000_Templates.ttcn new file mode 100644 index 0000000..4dcb1db --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/C2K/CDMA2000_Templates.ttcn @@ -0,0 +1,563 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-08-28 00:36:51 +0200 (Wed, 28 Aug 2013) $ +// $Rev: 9473 $ +/******************************************************************************/ + +module CDMA2000_Templates { + import from CDMA2000_CommonDefs all; + import from CDMA2000_ASP_TypeDefs all; + import from CDMA2000_Constants all; + import from CommonDefs all; + import from Parameters all; + import from CommonIP all; + import from CDMA2000_Parameters all; + + const RTT1X_CS_CallType tsc_RTT1X_CS_Call_MO := mo; /* @status APPROVED (LTE_IRAT) */ + const RTT1X_CS_CallType tsc_RTT1X_CS_Call_MT := mt; /* @status APPROVED (LTE_IRAT) */ + const RTT1X_CS_CallType tsc_RTT1X_CS_Call_Emergency := mo_Emergency; /* @status APPROVED (LTE_IRAT) */ + + //============================================================================ + template (value) PDN_Address_Type cs_PDN_Address_IPv4 (IPv4_Address_Type p_Address) := + { /* @status APPROVED (LTE_IRAT) */ + IPv4 := p_Address + }; + + template (value) PDN_Address_Type cs_PDN_Address_IPv6 (IPv6_Address_Type p_Address) := + { /* @status APPROVED (LTE_IRAT) */ + IPv6 := p_Address + }; + + template (value) PDN_Address_Type cs_PDN_Address_IPv4v6 (IPv4_Address_Type p_AddressV4, + IPv6_Address_Type p_AddressV6) := + { /* @status APPROVED (LTE_IRAT) */ + IPv4v6 := { + IPv4 := p_AddressV4, + IPv6 := p_AddressV6 + } + }; + + /* + * @desc To generate the PDN address based on PIXITS and UE capability for IPv6 and IPv4 + * @return template (value) PDN_Address_Type + * @status APPROVED (LTE_IRAT) + */ + function fl_GeneratePDN_Address () return template (value) PDN_Address_Type + { /* @sic R5s130362 - MCC160 Implementation: tsc_PDN_AddressInfo sic@ */ + var charstring v_IPv4_Address_UE := tsc_PDN1_AddressInfo.UE_IPAddressIPv4; + var charstring v_IPv6_Address_UE := tsc_PDN1_AddressInfo.UE_IPAddressIPv6; + var template (value) PDN_Address_Type v_PDN_Address; + + if ( pc_IPv4 and (not pc_IPv6)) { + v_PDN_Address := cs_PDN_Address_IPv4(f_Convert_IPv4Addr2OctString(v_IPv4_Address_UE)); // @sic R5-113734 sic@ + } + + if ( pc_IPv6 and (not pc_IPv4)) { + v_PDN_Address := cs_PDN_Address_IPv6 (substr( f_Convert_IPv6Addr2OctString(v_IPv6_Address_UE), 8, 8 )); // @sic R5-113734 sic@ + } + + if ( pc_IPv6 and pc_IPv4) { + // Address info consists of 8 octets IPv6 interface identifier followed with the 4 octets IPv4 address + // See TS 24.301 clause 9.9.4.9 + v_PDN_Address := cs_PDN_Address_IPv4v6 (f_Convert_IPv4Addr2OctString(v_IPv4_Address_UE), // @sic R5-113734 sic@ + substr( f_Convert_IPv6Addr2OctString(v_IPv6_Address_UE), 8, 8 )); // @sic R5-113734 sic@ + } + + return v_PDN_Address; + }; + + template (value) PDN_Address_Type cs_PDN_Address_Def := fl_GeneratePDN_Address (); /* @status APPROVED (LTE_IRAT) */ + + //============================================================================ + + template (value) CDMA2000_RoutingInfo_Type crs_RoutingInfoNone := + { /* @status APPROVED (LTE_IRAT) */ + None := true + }; + + template (value) CDMA2000_TimingInfo_Type cs_CDMA2000_TimingInfoNow := + { /* @status APPROVED (LTE_IRAT) */ + Now := true + }; + + template (present) CDMA2000_TimingInfo_Type cr_CDMA2000_TimingInfo_HRPD_Any := + { /* @status APPROVED (LTE_IRAT) */ + SubFrame := { + HRPD := { + Frame := { Number := ?}, + Subframe := { Number := ?} + } + } + }; + + template (present) CDMA2000_TimingInfo_Type cr_CDMA2000_TimingInfo_RTT1X_Any := + { /* @status APPROVED (LTE_IRAT) */ + SubFrame := { + RTT1X := { Number := ? } + } + }; + + template (present) CDMA2000_TimingInfo_Type cr_CDMA2000_TimingInfoNone := + { + None := true + }; + + template (present) CDMA2000_CnfAspCommonPart_Type cr_CDMA2000_CnfAspCommonPart_CellCfg (CDMA2000_CellId_Type p_CellId) := + { /* @status APPROVED (LTE_IRAT) */ + CellId := p_CellId, + RoutingInfo := { None := true }, + TimingInfo := ?, + Result := { Success := true } + }; + + template (value) CDMA2000_ReqAspCommonPart_Type cs_CDMA2000_ReqAspCommonPart_Common (CDMA2000_CellId_Type p_CellId, + template (value) CDMA2000_TimingInfo_Type p_TimingInfo := cs_CDMA2000_TimingInfoNow, + boolean p_CnfFlag := true) := + { /* @status APPROVED (LTE_IRAT) */ + CellId := p_CellId, + RoutingInfo := crs_RoutingInfoNone, + TimingInfo := p_TimingInfo, + ControlInfo := { + CnfFlag := p_CnfFlag, + FollowOnFlag := false + } + }; + + template (value) CDMA2000_InitialCellPower_Type cs_CDMA2000_InitialCellPower (template (value) CDMA2000_AbsoluteCellPower_Type p_MaxReferencePower) := + { /* @status APPROVED (LTE_IRAT) */ + MaxReferencePower := p_MaxReferencePower, + Attenuation := tsc_CDMA2000_Attenuation_Off + }; + + template (value) CDMA2000_SYSTEM_CTRL_REQ cas_HRPD_CellConfig_REQ (CDMA2000_CellId_Type p_CellId, + template (value) CDMA2000_CellParameters_Type p_CellParameters, + template (value) HRPD_CellParameters_Type p_HRPD_CellParameters, + template (value) CDMA2000_AbsoluteCellPower_Type p_ReferencePower, + template (value) CDMA2000_TimingInfo_Type p_TimingInfo := cs_CDMA2000_TimingInfoNow):= + { /* @status APPROVED (LTE_IRAT) */ + Common := cs_CDMA2000_ReqAspCommonPart_Common (p_CellId, p_TimingInfo), + Request := { + Cell := { + AddOrReconfigure := { + CellParameters := p_CellParameters, + InitialCellPower := cs_CDMA2000_InitialCellPower(p_ReferencePower), + ModeSpecificCellParams := { + HRPD := p_HRPD_CellParameters + } + } + } + } + }; + + template (value) CDMA2000_SYSTEM_CTRL_REQ cas_RTT1X_CellConfig_REQ (CDMA2000_CellId_Type p_CellId, + template (value) CDMA2000_CellParameters_Type p_CellParameters, + template (value) RTT1X_CellParameters_Type p_RTT1X_CellParameters, + template (value) CDMA2000_AbsoluteCellPower_Type p_ReferencePower, + template (value) CDMA2000_TimingInfo_Type p_TimingInfo := cs_CDMA2000_TimingInfoNow):= + { /* @status APPROVED (LTE_IRAT) */ + Common := cs_CDMA2000_ReqAspCommonPart_Common (p_CellId, p_TimingInfo), + Request := { + Cell := { + AddOrReconfigure := { + CellParameters := p_CellParameters, + InitialCellPower := cs_CDMA2000_InitialCellPower(p_ReferencePower), + ModeSpecificCellParams := { + RTT1X := p_RTT1X_CellParameters + } + } + } + } + }; + + template (value) CDMA2000_SYSTEM_CTRL_REQ cas_CDMA2000_CellRel_REQ (CDMA2000_CellId_Type p_CellId := cdma2000_Cell_NonSpecific, // Release all cells + template (value) CDMA2000_TimingInfo_Type p_TimingInfo := cs_CDMA2000_TimingInfoNow) := + { /* @status APPROVED (LTE_IRAT) */ + Common := cs_CDMA2000_ReqAspCommonPart_Common (p_CellId, p_TimingInfo), + Request := { + Cell := { + Release := true + } + } + }; + + template (value) CDMA2000_SYSTEM_CTRL_REQ cas_CDMA2000_CellConfig_Power_REQ (template (value) CDMA2000_CellAttenuationList_Type p_CellAttenuationList, + template (value) CDMA2000_TimingInfo_Type p_TimingInfo) := + { /* ASPs to modify cell power */ + /* @status APPROVED (LTE_IRAT) */ + Common := cs_CDMA2000_ReqAspCommonPart_Common (cdma2000_Cell_NonSpecific, p_TimingInfo), + Request := { + CellAttenuationList := p_CellAttenuationList + } + }; + + template (present) CDMA2000_SYSTEM_CTRL_CNF car_CDMA2000_CellConfig_CNF (CDMA2000_CellId_Type p_CellId) := + { /* @status APPROVED (LTE_IRAT) */ + Common := cr_CDMA2000_CnfAspCommonPart_CellCfg(p_CellId), + Confirm := { + Cell := true + } + }; + + template (present) CDMA2000_SYSTEM_CTRL_CNF car_CDMA2000_CellConfig_Power_CNF := + { /* @status APPROVED (LTE_IRAT) */ + Common := cr_CDMA2000_CnfAspCommonPart_CellCfg(cdma2000_Cell_NonSpecific), + Confirm := { + CellAttenuationList := true + } + }; + + group HRPD_SysIndicationAndCommands { + + template (value) UATI104_Type cs_UATI104_None := + { /* @status APPROVED (LTE_IRAT) */ + None := true + }; + + template (value) UATI_Type cs_UATI_Def(O3_Type p_UATI24 := px_UATI24, //@sic R5-120721 sic@ + template (value) UATI104_Type p_UATI104 := cs_UATI104_None) := + { /* @status APPROVED (LTE_IRAT) */ + UATI24 := p_UATI24, + UATI104 := p_UATI104 + }; + + template (value) HRPD_SystemCommand_Type cs_HRPD_SysCmd_RegAndDefBearerEst_Def(RLP_FlowId_Type p_RLP_FlowId := tsc_RLP_FlowId1, + HRPD_UE_InitStateType p_HRPD_UE_InitState := idle_Null, + CDMA2000_AttachType p_CDMA2000_AttachType := tsc_HandoverAttach) := + { /* @status APPROVED (LTE_IRAT) */ + RegAndDefBearerEst := { + InitState := p_HRPD_UE_InitState, + RLP_FlowId := p_RLP_FlowId, /* Associated RLP Flow ID */ + AttachType := p_CDMA2000_AttachType /* The Attach Type to be expected in VSNCP procedure */ + } + }; + + template (value) HRPD_SystemCommand_Type cs_HRPD_SysCmd_ZoneRegister_Def(RLP_FlowId_Type p_RLP_FlowId := tsc_RLP_FlowId1, + HRPD_UE_InitStateType p_HRPD_UE_InitState := idle_Null, + CDMA2000_AttachType p_CDMA2000_AttachType := tsc_HandoverAttach) := + { /* @status */ + HRPDZoneRegister := { + InitState := p_HRPD_UE_InitState, + RLP_FlowId := p_RLP_FlowId, /* Associated RLP Flow ID */ + AttachType := p_CDMA2000_AttachType /* The Attach Type to be expected in VSNCP procedure */ + } + }; + + template (value) HRPD_SystemCommand_Type cs_HRPD_AdditionalDefBearerEst_Def(RLP_FlowId_Type p_RLP_FlowId := tsc_RLP_FlowId2, + HRPD_UE_InitStateType p_HRPD_UE_InitState := idle_Null) := + { /* @status */ + AdditionalDefBearerEst := { + InitState := p_HRPD_UE_InitState, + RLP_FlowId := p_RLP_FlowId /* Associated RLP Flow ID */ + } + }; + + template (value) HRPD_SystemCommand_Type cs_HRPD_SysCmd_MobilityFromEUTRA_Def := + { + MobilityFromEUTRA:= true + }; + + template (value) RTT1X_SystemCommand_Type cs_RTT1X_SysCmd_CSFB_Call_Def(template (value) RTT1X_CS_CallType p_RTT1X_CS_CallType) := + { /* @status APPROVED (LTE_IRAT) */ + CSFB_Call := p_RTT1X_CS_CallType + }; + + template (value) RTT1X_SystemCommand_Type cs_RTT1X_SysCmd_E_CSFB_Call_Def(template (value) RTT1X_CS_CallType p_RTT1X_CS_CallType) := + { /* @status APPROVED (LTE_IRAT) */ + E_CSFB_Call := p_RTT1X_CS_CallType + }; + + template (value) RTT1X_SystemCommand_Type cs_RTT1X_SysCmd_E_CSFB_CallRej_Def(template (value) RTT1X_CS_CallType p_RTT1X_CS_CallType) := + { + E_CSFB_Call_Reject := p_RTT1X_CS_CallType + }; + + template (value) RTT1X_SystemCommand_Type cs_RTT1X_SysCmd_E_CSFB_ECAM_Call_Def(template (value) RTT1X_CS_CallType p_RTT1X_CS_CallType) := + { /* @status APPROVED (LTE_IRAT) */ + E_CSFB_Call_ECAM := p_RTT1X_CS_CallType + }; + + template (value) RTT1X_SystemCommand_Type cs_RTT1X_SysCmd_MobilityFromEUTRA_Def := + { + MobilityFromEUTRA_1XRTT := true + }; + + template (value) RTT1X_SystemCommand_Type cs_RTT1X_SysCmd_OrderedReg_Def(RTT1XAttachType p_AttachType, + boolean p_PreReg := false, // no pre registration + B32_Type p_RAND) := + { + CS_OrderedRegistration := { + AttachType := p_AttachType, + IsPreRegistration := p_PreReg, + RAND := p_RAND + } + }; + + template (value) RTT1X_SystemCommand_Type cs_RTT1X_SysCmd_Reg_Def(RTT1XAttachType p_AttachType, + boolean p_PreReg := false, // no pre registration + template (omit) B32_Type p_RAND := omit) := // Not present for power down + { /* @status APPROVED (LTE_IRAT) */ + CS_Registration := { + AttachType := p_AttachType, + IsPreRegistration := p_PreReg, + RAND := p_RAND + } + }; + + template (value) CDMA2000_SystemCommand_Type cs_CDMA2000_SystemCommand_HRPD (template (value) HRPD_SystemCommand_Type p_HRPD_SystemCommand) := + { /* @status APPROVED (LTE_IRAT) */ + HRPD := p_HRPD_SystemCommand + }; + + template (value) CDMA2000_SystemCommand_Type cs_CDMA2000_SystemCommand_RTT1X (template (value) RTT1X_SystemCommand_Type p_RTT1X_SystemCommand) := + { /* @status APPROVED (LTE_IRAT) */ + RTT1X := p_RTT1X_SystemCommand + }; + + template (value) CDMA2000_SYSTEM_CMD cas_HRPD_SYSTEM_CMD (CDMA2000_CellId_Type p_CellId, + template (value) CDMA2000_TimingInfo_Type p_TimingInfo := cs_CDMA2000_TimingInfoNow, + template (value) HRPD_SystemCommand_Type p_HRPD_SystemCommand):= + { /* @status APPROVED (LTE_IRAT) */ + Common := cs_CDMA2000_ReqAspCommonPart_Common(p_CellId, p_TimingInfo, false), // CnfFlag := false + Command := cs_CDMA2000_SystemCommand_HRPD(p_HRPD_SystemCommand) + }; + + template (value) CDMA2000_SYSTEM_CMD cas_RTT1X_SYSTEM_CMD (CDMA2000_CellId_Type p_CellId, + template (value) CDMA2000_TimingInfo_Type p_TimingInfo := cs_CDMA2000_TimingInfoNow, + template (value) RTT1X_SystemCommand_Type p_RTT1X_SystemCommand):= + { /* @status APPROVED (LTE_IRAT) */ + Common := cs_CDMA2000_ReqAspCommonPart_Common(p_CellId, p_TimingInfo, false), // CnfFlag := false + Command := cs_CDMA2000_SystemCommand_RTT1X(p_RTT1X_SystemCommand) + }; + + template (present) HRPD_SystemIndication_Type cr_SysInd_RegAndDefBearer (template (present) RegAndDefBearerEstInd_Type p_RegAndDefBearerEstInd := cr_RegAndDefBearerEstInd_Def) := + { /* @status APPROVED (LTE_IRAT) */ + RegAndDefBearerEstInd := p_RegAndDefBearerEstInd + }; + + template (present) HRPD_SystemIndication_Type cr_SysInd_HRPD_ZoneReg (template (present) HRPD_ZoneRegistrationInd_Type p_HRPD_ZoneRegistrationInd := cr_HRPD_ZoneRegistrationInd_Def) := + { /* @status */ + HRPD_ZoneRegistrationInd := p_HRPD_ZoneRegistrationInd + }; + + template (present) HRPD_SystemIndication_Type cr_AdditionalDefBearerEstInd (template (present) AdditionalDefBearerEstInd_Type p_AdditionalDefBearerEstInd := cr_AdditionalDefBearerEstInd_Def) := + { /* @status */ + AdditionalDefBearerEstInd := p_AdditionalDefBearerEstInd + }; + + template (present) CS_RegCmplInd_Type cr_CS_RegCmplInd_Def (RTT1XAttachType p_RTT1XAttach) := + { /* @status APPROVED (LTE_IRAT) */ + CS_RegistrationCmpl := p_RTT1XAttach + }; + + template (present) RTT1X_SystemIndication_Type cr_SysInd_CS_RegCmpl(template (present) CS_RegCmplInd_Type p_CS_RegCmplInd := cr_CS_RegCmplInd_Def(powerUpAttach)) := + { /* @status APPROVED (LTE_IRAT) */ + CS_RegistrationCmpl := p_CS_RegCmplInd + }; + + template (present) HRPD_SystemIndication_Type cr_HRPD_SysInd_InitialAccesProbRcvd := + { /* @status APPROVED (LTE_IRAT) */ + InitialAccessProbeRcvd := true + }; + + template (present) MobilityFromEUTRACmpl_Type cr_MobilityFromEUTRACmpl := + { + ConnectionReqRcvd := true, /* Received Tunneled HRPD Connection Request Message */ + RouteUpdateInd := true, /* Received Tunneled HRPD Route Update Message */ + TrafficChCmplRcvd := true /* Received HRPD Traffic Channel Complete in HRPD RAT, after transmission of tunneled Traffic Channel Assignment, + * HRPD Silence Parameters and HRPD Open Loop Parameters */ + }; + + template (present) HRPD_SystemIndication_Type cr_HRPD_SysInd_MobilityFromEUTRACmpl(template (present) MobilityFromEUTRACmpl_Type p_MobilityFromEUTRACmpl) := + { + MobilityFromEUTRACmpl := p_MobilityFromEUTRACmpl + }; + + template (present) RTT1X_SystemIndication_Type cr_RTT1X_SysInd_HandoffCmpl := + { + HandoffCmpl := true + }; + + template (present) RTT1X_SystemIndication_Type cr_RTT1X_SysInd_CS_CallCmpl(template (present) CS_CallCmplInd_Type p_CS_CallCmplInd) := + { /* @status APPROVED (LTE_IRAT) */ + CS_CallCmplInd := p_CS_CallCmplInd + }; + + template (present) RTT1X_SystemIndication_Type cr_RTT1X_SysInd_ECSFB_ECAM_CallCmpl(template (present) ECAM_CS_CallCmplInd_Type p_ECAM_CS_CallCmplInd) := + { /* @status APPROVED (LTE_IRAT) */ + ECSFB_ECAM_CallCmplInd := p_ECAM_CS_CallCmplInd + }; + + template (present) RTT1X_SystemIndication_Type cr_RTT1X_SysInd_E_CSFB_CallRej(template (present) ECSFB_CallRejInd_Type p_ECSFB_CallRejInd) := + { + ECSFB_CallRejInd := p_ECSFB_CallRejInd + }; + + template (present) RTT1X_SystemIndication_Type cr_RTT1X_SysInd_ECSFB_CallCmpl (template (present) ECSFB_CallCmplInd_Type p_ECSFB_CallCmplInd) := + { /* @status APPROVED (LTE_IRAT) */ + ECSFB_CallCmplInd := p_ECSFB_CallCmplInd + }; + + template (present) CS_CallCmplInd_Type cr_CS_CallCmplInd (template (present) RTT1X_CS_CallType p_RTT1X_CS_CallType, + boolean p_EmergCall := false) := + { /* @status APPROVED (LTE_IRAT) */ + CS_CallEstStarted := p_RTT1X_CS_CallType, /* Received Origination message for MO and Page Response for MT */ + ChAssignCmpl := true, /* [Extended] Channel Assignment procedure started UE has sent ConnectionRequestTraffic + * Extended Channel assignment is completedUE has sent TrafficChannelComplete */ + CS_CallEstCompleted :=true, /* SS received Service Connect Completion[Mo] or ConnectOrder[MT] [i.e User Accepted call] */ + IsEmergencyCall := p_EmergCall + }; + + template (present) ECAM_CS_CallCmplInd_Type cr_ECAM_CS_CallCmplInd (template (present) RTT1X_CS_CallType p_RTT1X_CS_CallType, + boolean p_EmergCall := false) := + { /* @status APPROVED (LTE_IRAT) */ + CS_TunneledCallEstStarted := p_RTT1X_CS_CallType, /* Received Tunneled GCSNA encapsulated Origination message for MO and Page Response for MT call */ + CS_CallEstStarted := p_RTT1X_CS_CallType, /* Received Origination message for MO and Page Response for MT */ + ChAssignCmpl := true, /* [Extended] Channel Assignment procedure started UE has sent ConnectionRequestTraffic + * Extended Channel assignment is completedUE has sent TrafficChannelComplete */ + CS_CallEstCompleted := true, /* SS received Service Connect Completion[Mo] or ConnectOrder[MT] [i.e User Accepted call] */ + IsEmergencyCall := p_EmergCall + }; + + template (present) ECSFB_CallRejInd_Type cr_CS_CallRejInd(template (present) RTT1X_CS_CallType p_RTT1X_CS_CallType, + boolean p_EmergCall := false) := + { + CS_CallEstRejected := p_RTT1X_CS_CallType, /* Received Origination message for MO and Page Response for MT, Respond with 1xRTT Release Order message */ + IsEmergencyCall := p_EmergCall + }; + + template (present) ECSFB_CallCmplInd_Type cr_ECSFB_CallCmplInd_Type(template (present) RTT1X_CS_CallType p_RTT1X_CS_CallType, + boolean p_EmergCall := false) := + { /* @status APPROVED (LTE_IRAT) */ + CS_CallEstStarted := p_RTT1X_CS_CallType, /* Received Tunneled GCSNA encapsulated Origination message for MO and Page Response for MT call */ + HandoffCmpl := true, /* indicates SS has received HandoffComplete message and the call is established */ + CS_CallEstCompleted := true, /* SS received Service Connect Completion (Mo) or ConnectOrder (MT) (i.e User Accepted call) */ + IsEmergencyCall := p_EmergCall /* True indicates the established call is emergency call, false indicates a normal voice has been established */ + }; + + template (present) RTT1X_SystemIndication_Type cr_RTT1X_SysInd_InitialAccesProbRcvd := + { /* @status APPROVED (LTE_IRAT) */ + InitialAccessProbeRcvd := true + }; + + template (present) CDMA2000_IndicationStatus_Type cr_CDMA2000_IndicationStatus_Ok := + { /* @status APPROVED (LTE_IRAT) */ + Ok := true + }; + + template (present) CDMA2000_IndAspCommonPart_Type cr_CDMA2000_IndAspCommonPart_HRPD_Common(CDMA2000_CellId_Type p_CellId, + template (present) CDMA2000_RoutingInfo_Type p_RoutingInfo := crs_RoutingInfoNone, + template (present) CDMA2000_TimingInfo_Type p_TimingInfo := cr_CDMA2000_TimingInfo_HRPD_Any) := + { /* @status APPROVED (LTE_IRAT) */ + CellId := p_CellId, + RoutingInfo := p_RoutingInfo, + TimingInfo := p_TimingInfo, + Status := cr_CDMA2000_IndicationStatus_Ok + }; + + template (present) CDMA2000_IndAspCommonPart_Type cr_CDMA2000_IndAspCommonPart_RTT1X_Common(CDMA2000_CellId_Type p_CellId, + template (present) CDMA2000_RoutingInfo_Type p_RoutingInfo := crs_RoutingInfoNone, + template (present) CDMA2000_TimingInfo_Type p_TimingInfo := cr_CDMA2000_TimingInfo_RTT1X_Any) := + { /* @status APPROVED (LTE_IRAT) */ + CellId := p_CellId, + RoutingInfo := p_RoutingInfo, + TimingInfo := p_TimingInfo, + Status := cr_CDMA2000_IndicationStatus_Ok + }; + + template (present) RegAndDefBearerEstInd_Type cr_RegAndDefBearerEstInd_Def := + { /* @status APPROVED (LTE_IRAT) */ + UATI_AssignmentCmpl := true, // UATI Assignment procedure is completed + InitialChAssignCmpl := true, // Channel Assignment procedure is completed + SCP_ConfigCmpl := true, // Session configuration procedure is completed + Stream_ConfigCmpl := true, // Stream configuration procedure is completed + EMPA_MMPA_ConfigCmpl := true, // Eanhanced multi flow packet application procedure is completed + SessionNegotiationCmpl := *, // Session negotiation procedure is optionally completed + DeviceAuthCmpl := *, // Device authectication procedure is optionally completed + LocationUpdateCmpl := *, // Location update procedure is optionally completed + EAP_AKA_Cmpl := true, // AKA procedure is completed + VSNCP_ConfigCmpl := true, // VSNCP procedure is completed + DHCP_ConfigCmpl := * , // DHCP IPv4 address allocatione is optionally completed + ICMPv6_ConfigCmpl := * + }; + + template (present) HRPD_ZoneRegistrationInd_Type cr_HRPD_ZoneRegistrationInd_Def := + { /* @status */ + UATI_AssignmentCmpl := true, // UATI Assignment procedure is completed + EAP_AKA_Cmpl := true, // AKA procedure is completed + VSNCP_ConfigCmpl := true, // VSNCP procedure is completed + DHCP_ConfigCmpl := *, // DHCP IPv4 address allocatione is optionally completed + ICMPv6_ConfigCmpl := omit + }; + + template (present) AdditionalDefBearerEstInd_Type cr_AdditionalDefBearerEstInd_Def := + { /* @status */ + VSNCP_ConfigCmpl := true, // VSNCP procedure is completed + DHCP_ConfigCmpl := *, // DHCP IPv4 address allocatione is optionally completed + ICMPv6_ConfigCmpl := omit + }; + + template (present) HRPD_SystemIndication_Type cr_HRPD_DetachOnSwitchOffInd := + { /* @status APPROVED (LTE_IRAT) */ + DefaultBearerRelDetachInd := { + VSNCP_TerminateCmpl := omit, /* Default bearer is not released before Detach as switch off*/ + LCP_TerminateCmpl := true /* To detach the UE x.s0057 clause 11.2 Detach completed */ + } + }; + + template (present) RTT1X_SystemIndication_Type cr_RTT1X_DetachOnSwitchOffInd := + { /* @status APPROVED (LTE_IRAT) */ + CS_RegistrationCmpl := cr_CS_RegCmplInd_Def(powerDownAttach) + }; + + template (present) CDMA2000_SYSTEM_IND car_HRPD_SYSTEM_IND(CDMA2000_CellId_Type p_CellId, + template (present) CDMA2000_RoutingInfo_Type p_RoutingInfo := crs_RoutingInfoNone, + template (present) CDMA2000_TimingInfo_Type p_TimingInfo := cr_CDMA2000_TimingInfo_HRPD_Any, + template (present) HRPD_SystemIndication_Type p_HRPD_SystemIndication) := + { /* @status APPROVED (LTE_IRAT) */ + Common := cr_CDMA2000_IndAspCommonPart_HRPD_Common(p_CellId, p_RoutingInfo, p_TimingInfo), + Indication := { HRPD := p_HRPD_SystemIndication} + }; + + template (present) CDMA2000_SYSTEM_IND car_RTT1X_SYSTEM_IND(CDMA2000_CellId_Type p_CellId, + template (present) CDMA2000_RoutingInfo_Type p_RoutingInfo := crs_RoutingInfoNone, + template (present) CDMA2000_TimingInfo_Type p_TimingInfo := cr_CDMA2000_TimingInfo_RTT1X_Any, + template (present) RTT1X_SystemIndication_Type p_RTT1X_SystemIndication) := + { /* @status APPROVED (LTE_IRAT) */ + Common := cr_CDMA2000_IndAspCommonPart_RTT1X_Common(p_CellId, p_RoutingInfo, p_TimingInfo), + Indication := { RTT1X := p_RTT1X_SystemIndication} + }; + + template (value) HRPD_SystemCommand_Type cs_HRPD_DetachOnSwitchOff(HRPD_UE_InitStateType p_InitState := tsc_HRPD_UE_InitState_Active, + PDN_Id_Type p_PDN_Id := tsc_PDN_Id, + RLP_FlowId_Type p_RLP_FlowId := tsc_RLP_FlowId1) := + { /* @status APPROVED (LTE_IRAT) */ + DefaultBearerRelDetach := { + InitState := p_InitState, + PDN_Id := p_PDN_Id, + RLP_FlowId := p_RLP_FlowId, + UE_NW_Initiated := tsc_UEInitDetach + } + }; + + template (value) RTT1X_SystemCommand_Type cs_RTT1X_DetachOnSwitchOff (boolean p_IsPreReg := false) := + /* @status APPROVED (LTE_IRAT) */ + cs_RTT1X_SysCmd_Reg_Def (powerDownAttach, p_IsPreReg, omit); + + template (value) HRPD_SystemCommand_Type cs_ConfigReportInitAccesProbe_HRPD := + { /* @status APPROVED (LTE_IRAT) */ + ReportInitialAccesProbe := true + }; + + template (value) RTT1X_SystemCommand_Type cs_ConfigReportInitAccesProbe_RTT1X := + { /* @status APPROVED (LTE_IRAT) */ + ReportInitialAccesProbe := true + }; + + } //end of group HRPD_SysIndicationAndCommands + +} // end of module diff --git a/LTE_A_IWD_14wk37/Common/Common/CommonDefs.ttcn b/LTE_A_IWD_14wk37/Common/Common/CommonDefs.ttcn new file mode 100644 index 0000000..47f1330 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/Common/CommonDefs.ttcn @@ -0,0 +1,1033 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 12:44:18 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12148 $ +/******************************************************************************/ + +module CommonDefs { + + //---------------------------------------------------------------------------- + // type definitions: + + type bitstring B1_Type length(1); + type bitstring B2_Type length(2); + type bitstring B3_Type length(3); + type bitstring B4_Type length(4); + type bitstring B5_Type length(5); + type bitstring B6_Type length(6); + type bitstring B7_Type length(7); + type bitstring B7_15_Type length(7..15); // NOTE: length restriction can only be a range but not two destinct lengths + type bitstring B8_Type length(8); + type bitstring B9_Type length(9); + type bitstring B10_Type length(10); + type bitstring B11_Type length(11); + type bitstring B12_Type length(12); + type bitstring B13_Type length(13); + type bitstring B14_Type length(14); + type bitstring B15_Type length(15); + type bitstring B16_Type length(16); + type bitstring B20_Type length(20); + type bitstring B24_Type length(24); + type bitstring B27_Type length(27); + type bitstring B28_Type length(28); + type bitstring B32_Type length(32); + type bitstring B36_Type length(36); + type bitstring B40_Type length(40); + type bitstring B41_Type length(41); + type bitstring B43_Type length(43); + type bitstring B47_Type length(47); + type bitstring B48_Type length(48); + type bitstring B56_Type length(56); + type bitstring B64_Type length(64); + type bitstring B80_Type length(80); + type bitstring B112_Type length(112); + type bitstring B128_Type length(128); + type bitstring B160_Type length(160); + type bitstring B192_Type length(192); + type bitstring B256_Type length(256); + type bitstring B32_128_Type length(32..128); + + type B128_Type B128_Key_Type; /* 128 bit security key */ + type B256_Type B256_Key_Type; /* 256 bit security key */ + + type octetstring O1_Type length(1); + type octetstring O2_Type length(2); + type octetstring O3_Type length(3); + type octetstring O4_Type length(4); + type octetstring O5_Type length(5); + type octetstring O6_Type length(6); + type octetstring O8_Type length(8); + type octetstring O9_Type length(9); + type octetstring O10_Type length(10); + type octetstring O13_Type length(13); + type octetstring O14_Type length(14); + type octetstring O15_Type length(15); + type octetstring O16_Type length(16); + type octetstring O32_Type length(32); + type octetstring O43_Type length(43); + + type hexstring H2_Type length(2); + type hexstring H4_Type length(4); + type hexstring H12_Type length(12); + type hexstring H14_Type length(14); + + type boolean Null_Type (true); // dummy type for 'typeless' fields in unions + type boolean Dummy_Type (true); // dummy type for temporary purposes only + + const integer tsc_UInt8Max := 255; + const integer tsc_UInt16Max := 65535; + const integer tsc_UInt20Max := 1048575; + const integer tsc_UInt32Max := 4294967295; + + type integer UInt_Type (0 .. infinity); + type integer UInt8_Type (0 .. tsc_UInt8Max); + type integer UInt16_Type (0 .. tsc_UInt16Max); + type integer UInt20_Type (0 .. tsc_UInt20Max); + type integer UInt32_Type (0 .. tsc_UInt32Max); + + type charstring Char1_Type length (1); + type record of Char1_Type Char1List_Type; + type record of charstring CharStringList_Type; + + type record of integer IntegerList_Type; + + type enumerated SinglePLMN_TestedType {SinglePLMN, MultiPLMN, MultiPLMNinPrimaryBand, MultiPLMNinSecondaryBand}; // @sic R5-123667 sic@ + type enumerated EUTRA_ATTACH_TESTED_Type { EPS_ATTACH_ONLY, COMBINED_ATTACH}; + type enumerated NAS_ATTACH_STATE_Type {ATTACHED, DETACHED}; + type enumerated UTRAN_FDD_TDD_Type {UTRAN_FDD, UTRAN_TDD}; + type enumerated RATComb_Tested_Type {EUTRA_UTRA, EUTRA_GERAN, EUTRA_Only}; + + type enumerated EUTRA_CellId_Type { + eutra_Cell_NonSpecific, + eutra_Cell1, + eutra_Cell2, + eutra_Cell3, + eutra_Cell4, + eutra_Cell6, + eutra_Cell10, + eutra_Cell11, + eutra_Cell12, + eutra_Cell13, + eutra_Cell14, + eutra_Cell23, + eutra_Cell28, + eutra_Cell29, + eutra_Cell30, + eutra_Cell31, + eutra_CellA, + eutra_CellB, + eutra_CellC, + eutra_CellD, + eutra_CellE, + eutra_CellG, + eutra_CellH, + eutra_CellI, + eutra_CellJ, + eutra_CellK, + eutra_CellL, + eutra_CellM + }; + + type record length (0..7) of EUTRA_CellId_Type EUTRA_CellIdList_Type; + + type enumerated UTRAN_CellId_Type { + utran_CellDedicated (-1), + utran_Cell5 (5), + utran_Cell7 (7), + utran_Cell8 (8), + utran_Cell9 (9), + utran34_Cell1 (1000), + utran34_Cell2 (1001), + utran34_Cell3 (1002), + utran34_Cell4 (1003), + utran34_Cell5 (1004), + utran34_Cell6 (1005), + utran34_Cell7 (1006), + utran34_Cell8 (1007), + utran34_CellA (2000), + utran34_CellB (2001), + utran34_CellC (2002), + utran34_CellD (2003), + utran34_CellE (2004), + utran34_CellF (2005), + utran34_CellG (2006), + utran34_CellH (2007) + }; // @sic R5-133563: added utran34_CellA/B/C... for 34.123-1 NAS tc sic@ + + type record of UTRAN_CellId_Type UTRAN_CellIdList_Type; + + type integer IP_DrbId_Type; /* DRB identity type common for all RATs: + * - for EUTRA it corrensponds to the ASN.1 type DRB-Identity + * - for UTRAN it corrensponds to the ASN.1 type RB-Identity and values are as defined in TS 34.123-3 Table 8.2.4.1 + * - for GERAN the NSAPI value (type record NSAPI) may be used (FFS) + * NOTE: this is introduced to simplify the dependencies (i.e. to keep IP_ASP_TypeDefs independent from any RAT specific type definitions) */ + + type record IP_EUTRA_DrbInfo_Type { + EUTRA_CellId_Type CellId, /* data is routed to a specific cell regardless of whether the same DRB is configured in any other cell */ + IP_DrbId_Type DrbId optional /* mandatory at the system interface */ + }; + type record IP_UTRAN_GERAN_DrbInfo_Type { + integer CellId, + IP_DrbId_Type DrbId optional /* mandatory at the system interface */ + }; + type union IP_DrbInfo_Type { + IP_EUTRA_DrbInfo_Type Eutra, + IP_UTRAN_GERAN_DrbInfo_Type Utran, + IP_UTRAN_GERAN_DrbInfo_Type Geran + }; + + type enumerated GPRS_CipheringAlgorithm_Type { + gea0(0), + gea2(2), + gea3(3), + gea4(4) + }; + + type enumerated IPCAN_RAN_Type { /* radio access network technology used by the IPCAN PTC */ + GERAN, + UTRAN_FDD, + UTRAN_TDD, + EUTRA_FDD, + EUTRA_TDD + }; + type IPCAN_RAN_Type RANTech; /* alias to cope with (old) 34.229 implementation */ + + // To indicate which PTCs are configured (EUTRA alone is included for completeness) + type enumerated IRAT_ConfiguredPTCs_Type { EUTRA_Only, EUTRA_UTRAN, EUTRA_GERAN, EUTRA_UTRAN_GERAN, EUTRA_CDMA2000, UTRAN_Only, UTRAN_GERAN } + + const float tsc_GuardTimePreamble := 180.0; + const float tsc_GuardTimePreamble_EmptyCSG := tsc_GuardTimePreamble * int2float(4); + + // definitions needed for IP and IMS handling + const integer tsc_NoOfPDNs := 2; + const integer tsc_Index_PDN1 := 0; + const integer tsc_Index_PDN2 := 1; + type enumerated PDN_Index_Type { PDN_1 (0), PDN_2 (1), PDN_2a, PDN_Internet }; + + //---------------------------------------------------------------------------- + // constant to generate PRBS sequence + const octetstring tsc_RandomPRBS := + 'FFE665A5C5CA3452085408ABEECE4B0B813FD337873F2CD1E29AE91BD6C8E14F'O + & 'DE630F8195688EBE465F09816A8EEB1B83953DD362DAE3B06D5B76D8E3E53087'O + & 'EA645A09017FD99C3CACBB46DF1CD61DA9C435F89943DF9CC34ADEE31AD6E24F'O + & 'A1903D53778D949742750DD49DE9CE9E430AD448A14575D89C16025508814020'O //octets 0 .. 127 + & '0555DDC9CBCB9EC31F833F866A5BA390680EAB11282EAE44F5E7658F6B247A0C'O + & '54A21057F73278595C235077F267A59097E8CEB4EDE49A16FDB36D2485EA3107'O + & 'D59DC360700D5488BEB9B96C24AF44DF498BC135788C14A8BBEC64A5EF64DA1C'O + & '5608FEB312D7B738D3E2CFB4C74A7458A3EF9B3C79F3CD348740DFE330780C01'O //octets 128 .. 255 + & 'FFCCCB4B8B9468A410A81157DD9C9617027FA66F0E7E59A3C535D237AD91C29F'O + & 'BCC61F032AD11D7C8CBE1302D51DD637072A7BA6C5B5C760DAB6EDB1C7CA610F'O + & 'D4C8B41202FFB3387959768DBE39AC3B53886BF13287BF398695BDC635ADC49F'O + & '43207AA6EF1B292E84EA1BA93BD39D3C8615A891428AEBB1382C04AA11028040'O //octets 256 .. 383 + & '0AABBB9397973D863F067F0CD4B74720D01D5622505D5C89EBCECB1ED648F418'O + & 'A94420AFEE64F0B2B846A0EFE4CF4B212FD19D69DBC9342DFB66DA490BD4620F'O + & 'AB3B86C0E01AA9117D7372D8495E89BE9317826AF118295177D8C94BDEC9B438'O + & 'AC11FD6625AF6E71A7C59F698E94E8B147DF3678F3E79A690E81BFC660F01803'O //octets 384 .. 511 + & 'FF9996971728D148215022AFBB392C2E04FF4CDE1CFCB3478A6BA46F5B23853F'O + & '798C3E0655A23AF9197C2605AA3BAC6E0E54F74D8B6B8EC1B56DDB638F94C21F'O + & 'A991682405FF6670F2B2ED1B7C735876A710D7E2650F7E730D2B7B8C6B5B893E'O + & '8640F54DDE36525D09D4375277A73A790C2B51228515D7627058095422050080'O //octets 512 .. 639 + & '155777272F2E7B0C7E0CFE19A96E8E41A03AAC44A0BAB913D79D963DAC91E831'O + & '5288415FDCC9E165708D41DFC99E96425FA33AD3B792685BF6CDB49217A8C41F'O + & '56770D81C0355222FAE6E5B092BD137D262F04D5E23052A2EFB19297BD936871'O + & '5823FACC4B5EDCE34F8B3ED31D29D1628FBE6CF1E7CF34D21D037F8CC1E03007'O //octets 640 .. 767 + & 'FF332D2E2E51A29042A0455F7672585C09FE99BC39F9668F14D748DEB6470A7E'O + & 'F3187C0CAB4475F232F84C0B547758DC1CA9EE9B16D71D836ADBB6C71F29843F'O + & '5322D0480BFECCE1E565DA36F8E6B0ED4E21AFC4CA1EFCE61A56F718D6B7127D'O + & '0C81EA9BBC6CA4BA13A86EA4EF4E74F21856A2450A2BAEC4E0B012A8440A0100'O //octets 768 .. 895 + & '2AAEEE4E5E5CF618FC19FC3352DD1C834075588941757227AF3B2C7B5923D062'O + & 'A51082BFB993C2CAE11A83BF933D2C84BF4675A76F24D0B7ED9B69242F51883E'O + & 'ACEE1B03806AA445F5CDCB61257A26FA4C5E09ABC460A545DF63252F7B26D0E2'O + & 'B047F59896BDB9C69F167DA63A53A2C51F7CD9E3CF9E69A43A06FF1983C0600F'O //octets 896 .. 1023 + & 'FE665A5C5CA3452085408ABEECE4B0B813FD337873F2CD1E29AE91BD6C8E14FD'O + & 'E630F8195688EBE465F09816A8EEB1B83953DD362DAE3B06D5B76D8E3E53087E'O + & 'A645A09017FD99C3CACBB46DF1CD61DA9C435F89943DF9CC34ADEE31AD6E24FA'O + & '1903D53778D949742750DD49DE9CE9E430AD448A14575D89C160255088140200'O //octets 1024 .. 1151 + & '555DDC9CBCB9EC31F833F866A5BA390680EAB11282EAE44F5E7658F6B247A0C5'O + & '4A21057F73278595C235077F267A59097E8CEB4EDE49A16FDB36D2485EA3107D'O + & '59DC360700D5488BEB9B96C24AF44DF498BC135788C14A8BBEC64A5EF64DA1C5'O + & '608FEB312D7B738D3E2CFB4C74A7458A3EF9B3C79F3CD348740DFE330780C01F'O //octets 1152 .. 1279 + & 'FCCCB4B8B9468A410A81157DD9C9617027FA66F0E7E59A3C535D237AD91C29FB'O + & 'CC61F032AD11D7C8CBE1302D51DD637072A7BA6C5B5C760DAB6EDB1C7CA610FD'O + & '4C8B41202FFB3387959768DBE39AC3B53886BF13287BF398695BDC635ADC49F4'O + & '3207AA6EF1B292E84EA1BA93BD39D3C8615A891428AEBB1382C04AA110280400'O //octets 1280 .. 1407 + & 'AABBB9397973D863F067F0CD4B74720D01D5622505D5C89EBCECB1ED648F418A'O + & '94420AFEE64F0B2B846A0EFE4CF4B212FD19D69DBC9342DFB66DA490BD4620FA'O + & 'B3B86C0E01AA9117D7372D8495E89BE9317826AF118295177D8C94BDEC9B438A'O + & 'C11FD6625AF6E71A7C59F698E94E8B147DF3678F3E79A690E81BFC660F01803F'O //octets 1408 .. 1535 + & 'F9996971728D148215022AFBB392C2E04FF4CDE1CFCB3478A6BA46F5B23853F7'O + & '98C3E0655A23AF9197C2605AA3BAC6E0E54F74D8B6B8EC1B56DDB638F94C21FA'O + & '991682405FF6670F2B2ED1B7C735876A710D7E2650F7E730D2B7B8C6B5B893E8'O + & '640F54DDE36525D09D4375277A73A790C2B51228515D76270580954220500801'O //octets 1536 .. 1663 + & '55777272F2E7B0C7E0CFE19A96E8E41A03AAC44A0BAB913D79D963DAC91E8315'O + & '288415FDCC9E165708D41DFC99E96425FA33AD3B792685BF6CDB49217A8C41F5'O + & '6770D81C0355222FAE6E5B092BD137D262F04D5E23052A2EFB19297BD9368715'O + & '823FACC4B5EDCE34F8B3ED31D29D1628FBE6CF1E7CF34D21D037F8CC1E03007F'O //octets 1664 .. 1791 + & 'F332D2E2E51A29042A0455F7672585C09FE99BC39F9668F14D748DEB6470A7EF'O + & '3187C0CAB4475F232F84C0B547758DC1CA9EE9B16D71D836ADBB6C71F29843F5'O + & '322D0480BFECCE1E565DA36F8E6B0ED4E21AFC4CA1EFCE61A56F718D6B7127D0'O + & 'C81EA9BBC6CA4BA13A86EA4EF4E74F21856A2450A2BAEC4E0B012A8440A01002'O //octets 1792 .. 1919 + & 'AAEEE4E5E5CF618FC19FC3352DD1C834075588941757227AF3B2C7B5923D062A'O + & '51082BFB993C2CAE11A83BF933D2C84BF4675A76F24D0B7ED9B69242F51883EA'O + & 'CEE1B03806AA445F5CDCB61257A26FA4C5E09ABC460A545DF63252F7B26D0E2B'O + & '047F59896BDB9C69F167DA63A53A2C51F7CD9E3CF9E69A43A06FF1983C0600'O; //octets 1920 .. 2046 + + const charstring tsc_AT_ResultOK := "OK"; + const charstring tsc_Fox := "The quick brown fox jumps over the lazy dog's back. Kaufen Sie Ihrer Frau vier bequeme Pelze. - 0123456789 - THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG'S BACK."; + const charstring tsc_Fox_PDU := "06812222222222" + & "11000A9174097538740000A7a054741914afa7c76b9058febebb41e6371ea4aeb7e173d0db5e9683" + & "e8e832881dd6e741e4f7f9340789c3e3b50bb40cd7cd6537689a2e83926879590e32cac375903d5d" + & "9683c4e578bddc2e83a065b6beec02b540b0986c46abd96eb81ca805a2228ba06835395c8284d2e7" + & "d509323eb12065b5099d829ed6a21444451641cca0360b223e8fa72948181c2e5d"; + + //---------------------------------------------------------------------------- + // common functions: + + type integer LineNo_Type; + + /* + * @desc local function + * @param p_FileName + * @param p_LineNo + * @param p_Msg + * @return charstring + */ + function fl_FormatLog(charstring p_FileName, + LineNo_Type p_LineNo, + charstring p_Msg) return charstring + { + var charstring v_LineNoStr := int2str(p_LineNo); + + return p_FileName & ":" & v_LineNoStr & ": " & p_Msg; /* common "UNIX style" format as e.g. used by grep; + * the final format for this output is FFS */ + + } + + //---------------------------------------------------------------------------- + /* + * @desc function for common error logging + * @param p_FileName + * @param p_LineNo + * @param p_Msg + */ + function f_ErrorLog(charstring p_FileName, + LineNo_Type p_LineNo, + charstring p_Msg) + { + log(fl_FormatLog(p_FileName, p_LineNo, p_Msg)); + }; + + //---------------------------------------------------------------------------- + /* + * @desc common function for verdict assignment + * @param p_Verdict + * @param p_FileName + * @param p_LineNo + * @param p_Msg + */ + function f_SetVerdict(verdicttype p_Verdict, + charstring p_FileName, + LineNo_Type p_LineNo, + charstring p_Msg) + { + var charstring v_OutputLine := fl_FormatLog(p_FileName, p_LineNo, p_Msg); + setverdict(p_Verdict, v_OutputLine); + } + + //---------------------------------------------------------------------------- + /* + * @desc Common functions to be called in case unrecoverable errors + * (i.e. runtimer errors generated by TTCN) + * @param p_FileName + * @param p_LineNo + * @param p_Msg + */ + function FatalError(charstring p_FileName, + LineNo_Type p_LineNo, + charstring p_Msg) + { + // setverdict(inconc); // setverdict causes problems when FatalError is used in a function called from within a template + f_ErrorLog(p_FileName, p_LineNo, p_Msg); + testcase.stop (p_Msg); // This operation now defined in TTCN3 v4.2.1 + }; + + /* + * @desc set verdict inconc in cases when no pass/fail is possible e.g. due to wrong PICS/PIXIT + * NOTE: as there is no need to evaluate any component specific information ans as "self.kill" can be used to terminate the test case + * (resulting in the final verdict 'inconc') this function is independent from any component and can be call from everywhere where 'setverdict' or 'self.kill' are allowed + * @param p_FileName + * @param p_LineNo + * @param p_Msg + */ + function f_SetVerdictInconc(charstring p_FileName, + LineNo_Type p_LineNo, + charstring p_Msg) + { + f_SetVerdict(inconc, p_FileName, p_LineNo, p_Msg); + self.kill; // => test case will be terminated immediately + } + + + + //---------------------------------------------------------------------------- + /* + * @desc Common function to delay the test case for the given time + * @param p_DelayTime + */ + function f_Delay ( float p_DelayTime ) + { + timer t_Delay; + + t_Delay.start ( p_DelayTime ); + t_Delay.timeout; + }; + + //---------------------------------------------------------------------------- + + function f_TemplateBit2Int(template (present) integer p_Val, + integer p_Length) return template bitstring + { /* Auxiliary function + * note: there is no possibility in TTCN-3 to check whether a template parameter + * which is not a value is "*", "?" or omit + * => we restrict p_Val to "template (present)", i.e it shall be a value or "?" */ + if (isvalue(p_Val)) { + return int2bit(valueof(p_Val), p_Length); + } else { + return ?; + } + } + + //---------------------------------------------------------------------------- + /* + * @desc returns index of first occurency of any char of p_CharList in p_String starting from p_StartIndex; + * returns -1 if there is no occurency + * @param p_String + * @param p_CharList + * @param p_StartIndex + * @return integer + */ + function f_StringFindChar(charstring p_String, + Char1List_Type p_CharList, + UInt_Type p_StartIndex := 0) return integer + { + var integer v_NoOfChars := lengthof(p_CharList); + var integer v_Index; + var integer i; + var Char1_Type v_Char; + + if (v_NoOfChars == 0) { + return -1; + } + + for (v_Index:=p_StartIndex; v_Index 0) { + for (i:=0; i < k - 1; i := i+1) { + v_String := v_String & v_StringList[i] & p_JoinString; + } + v_String := v_String & v_StringList[i]; + } + return v_String; + } + + function f_CharStringList_Concat(CharStringList_Type p_StringList1, + CharStringList_Type p_StringList2) return CharStringList_Type + { + return p_StringList1 & p_StringList2; + } + + + function f_CharStringList_Add(CharStringList_Type p_StringList, + charstring p_NewString) return CharStringList_Type + { + var integer v_Length := lengthof(p_StringList); + var CharStringList_Type v_StringList := p_StringList; + + v_StringList[v_Length] := p_NewString; + return v_StringList; + } + + //---------------------------------------------------------------------------- + + function f_ConvertBoolToBit(boolean p_Bool) return B1_Type + { + var B1_Type v_Bit := '0'B; + if (p_Bool) { + v_Bit := '1'B; + } + return v_Bit; + } + + //---------------------------------------------------------------------------- + /* + * @desc return octet-aligned bitstring + * @param p_Bitstring + * @return bitstring + */ + function f_OctetAlignedBitString( bitstring p_Bitstring) return bitstring + { // @sic R5s100324 change 3 sic@ + var bitstring v_Bitstring := p_Bitstring; + var integer v_BitLength := lengthof(p_Bitstring); + var integer v_PaddingLength; + var integer i; + + if ((v_BitLength mod 8) > 0) { // if not already byte aligned + v_PaddingLength := 8 - (v_BitLength mod 8); + for (i:=0; i < v_PaddingLength; i := i+1) { + v_Bitstring := v_Bitstring & '0'B; + } + } + + return v_Bitstring; + } + + //---------------------------------------------------------------------------- + /* + * @desc function to extract output string from random test pattern of a certain length and at a starting point + * @param p_Start + * @param p_N + * @return octetstring + */ + function f_GetN_OctetsFromPRBS(UInt_Type p_Start, + UInt_Type p_N) + return octetstring + { + var integer i; + var integer k; + var octetstring v_Noctets :=''O; // output string to be extracted from random test pattern + + for (i:= 0; i< p_N; i := i+1) { + k := p_Start + i; + k := k mod 2047; + v_Noctets := v_Noctets & tsc_RandomPRBS[k]; + } + return v_Noctets; + } + + //---------------------------------------------------------------------------- + /* + * @desc check whether given testase name fits L2 test case + * @return boolean + */ + function f_TestcaseIsL2Testcase() return boolean + { + var charstring v_TestcaseName := testcasename(); // This operation now defined in TTCN3 v4.2.1 + var template charstring v_L2TestcasePattern := pattern "TC_7_*"; /* @sic R5s100136 sic@ */ + return (match(v_TestcaseName, v_L2TestcasePattern)); + } + + //---------------------------------------------------------------------------- + + function f_TestcaseIsDrbTestcase() return boolean + { + var charstring v_TestcaseName := testcasename(); // This operation now defined in TTCN3 v4.2.1 + var template charstring v_L2TestcasePattern := pattern "TC_12_*"; + return (match(v_TestcaseName, v_L2TestcasePattern)); + } + + //---------------------------------------------------------------------------- + + type enumerated Gsm7BitPacking_Type { SMS_Packing, CBS_Packing, USSD_Packing }; + + const integer tsc_Gsm7BitLookup[32..126][0..1] := { /* ASCII to GSM 7 bit char conversion table + Self indexing lookup table per ASCII integer value + 1st field - status + 0 => no change + 1 => basic table - no translation required + 2 => escape to ext table 23.038 6.2.1.1 + 3 => char does not exist in gsm char table + 2nd field - translation integer value per 23.038 6.2.1/6.2.1.1 + range 0-127 & dummy entry 256 */ + { 0, 256 }, // 32 - space - no xlat + { 0, 256 }, // 33 - "!" - no xlat + { 0, 256 }, // 34 - """ - no xlat + { 0, 256 }, // 35 - "#" - no xlat + { 1, 2 }, // 36 - "$" - gsm 23.038 6.2.1 - 02 + { 0, 256 }, // 37 - "%" - no xlat + { 0, 256 }, // 38 - "&" - no xlat + { 0, 256 }, // 39 - "'" - no xlat + { 0, 256 }, // 40 - "(" - no xlat + { 0, 256 }, // 41 - ")" - no xlat + { 0, 256 }, // 42 - "*" - no xlat + { 0, 256 }, // 43 - "+" - no xlat + { 0, 256 }, // 44 - "," - no xlat + { 0, 256 }, // 45 - "-" - no xlat + { 0, 256 }, // 46 - "." - no xlat + { 0, 256 }, // 47 - "/" - no xlat + { 0, 256 }, // 48 - "0" - no xlat + { 0, 256 }, // 49 - "1" - no xlat + { 0, 256 }, // 50 - "2" - no xlat + { 0, 256 }, // 51 - "3" - no xlat + { 0, 256 }, // 52 - "4" - no xlat + { 0, 256 }, // 53 - "5" - no xlat + { 0, 256 }, // 54 - "6" - no xlat + { 0, 256 }, // 55 - "7" - no xlat + { 0, 256 }, // 56 - "8" - no xlat + { 0, 256 }, // 57 - "9" - no xlat + { 0, 256 }, // 58 - ":" - no xlat + { 0, 256 }, // 59 - ";" - no xlat + { 0, 256 }, // 60 - "<" - no xlat + { 0, 256 }, // 61 - "=" - no xlat + { 0, 256 }, // 62 - ">" - no xlat + { 0, 256 }, // 63 - "9" - no xlat + { 1, 0 }, // 64 - "@" - gsm 23.038 6.2.1 - 00 + { 0, 256 }, // 65 - "A" - no xlat + { 0, 256 }, // 66 - "B" - no xlat + { 0, 256 }, // 67 - "C" - no xlat + { 0, 256 }, // 68 - "D" - no xlat + { 0, 256 }, // 69 - "E" - no xlat + { 0, 256 }, // 70 - "F" - no xlat + { 0, 256 }, // 71 - "G" - no xlat + { 0, 256 }, // 72 - "H" - no xlat + { 0, 256 }, // 73 - "I" - no xlat + { 0, 256 }, // 74 - "J" - no xlat + { 0, 256 }, // 75 - "K" - no xlat + { 0, 256 }, // 76 - "L" - no xlat + { 0, 256 }, // 77 - "M" - no xlat + { 0, 256 }, // 78 - "N" - no xlat + { 0, 256 }, // 79 - "0" - no xlat + { 0, 256 }, // 80 - "P" - no xlat + { 0, 256 }, // 81 - "Q" - no xlat + { 0, 256 }, // 82 - "R" - no xlat + { 0, 256 }, // 83 - "S" - no xlat + { 0, 256 }, // 84 - "T" - no xlat + { 0, 256 }, // 85 - "U" - no xlat + { 0, 256 }, // 86 - "V" - no xlat + { 0, 256 }, // 87 - "W" - no xlat + { 0, 256 }, // 88 - "X" - no xlat + { 0, 256 }, // 89 - "Y" - no xlat + { 0, 256 }, // 90 - "Z" - no xlat + { 2, 60 }, // 91 - "[" - gsm 23.038 6.2.1.1 ext. - 3C + { 2, 47 }, // 92 - "\" - gsm 23.038 6.2.1.1 ext. - 2F + { 2, 62 }, // 93 - "]" - gsm 23.038 6.2.1.1 ext. - 3E + { 2, 20 }, // 94 - "^" - gsm 23.038 6.2.1.1 ext. - 14 + { 1, 17 }, // 95 - "_" - gsm 23.038 6.2.1 - 11 + { 3, 256 }, // 96 - "`" - char does not exist in gsm 23.038 6.2.1/6.2.1.1 + { 0, 256 }, // 97 - "a" - no xlat + { 0, 256 }, // 98 - "b" - no xlat + { 0, 256 }, // 99 - "c" - no xlat + { 0, 256 }, // 100 - "d" - no xlat + { 0, 256 }, // 101 - "e" - no xlat + { 0, 256 }, // 102 - "f" - no xlat + { 0, 256 }, // 103 - "g" - no xlat + { 0, 256 }, // 104 - "h" - no xlat + { 0, 256 }, // 105 - "i" - no xlat + { 0, 256 }, // 106 - "j" - no xlat + { 0, 256 }, // 107 - "k" - no xlat + { 0, 256 }, // 108 - "l" - no xlat + { 0, 256 }, // 109 - "m" - no xlat + { 0, 256 }, // 110 - "n" - no xlat + { 0, 256 }, // 111 - "o" - no xlat + { 0, 256 }, // 112 - "p" - no xlat + { 0, 256 }, // 113 - "q" - no xlat + { 0, 256 }, // 114 - "r" - no xlat + { 0, 256 }, // 115 - "s" - no xlat + { 0, 256 }, // 116 - "t" - no xlat + { 0, 256 }, // 117 - "u" - no xlat + { 0, 256 }, // 118 - "v" - no xlat + { 0, 256 }, // 119 - "w" - no xlat + { 0, 256 }, // 120 - "x" - no xlat + { 0, 256 }, // 121 - "y" - no xlat + { 0, 256 }, // 122 - "z" - no xlat + { 2, 40 }, // 123 - "{" - gsm 23.038 6.2.1.1 ext. - 28 + { 2, 64 }, // 124 - "|" - gsm 23.038 6.2.1.1 ext. - 40 + { 2, 41 }, // 125 - "}" - gsm 23.038 6.2.1.1 ext. - 29 + { 2, 61 } // 126 - "~" - gsm 23.038 6.2.1.1 ext. - 3D + }; + + function fl_XlatAcsiiToGsm7Bit(octetstring p_AsciiOctetString) return octetstring + { + var octetstring v_GsmOctetString; + var integer v_XlatStatus; + var integer v_AsciiIndex; + var integer i; + var integer j := 0; + + for (i:=0; i '48616C6C6F'O + var bitstring v_BitString := ''B; + var bitstring v_Padding := ''B; + var integer v_TextLength; + var integer v_BitStringLength := 0; + var integer v_IntValue; + var integer v_NoOfOctets; + var integer v_NoOfPaddingBits; + var integer v_Index; + var integer i; + + // convert ascii table to GSM 7 bit table + v_OctetString := fl_XlatAcsiiToGsm7Bit(v_OctetString); // @sic R5s130103 change 3 sic@ + v_TextLength := lengthof(v_OctetString); + + if (((p_Packing == SMS_Packing) and (v_TextLength > 160)) or // a maximum of 160 characters for SMS (i.e. 140 octets) + ((p_Packing == CBS_Packing) and (v_TextLength > 93)) or // a maximum of 93 characters for CBS (i.e. 82 octets) + ((p_Packing == USSD_Packing) and (v_TextLength > 182))) { // a maximum of 182 characters for USSD (i.e. 160 octets) + FatalError(__FILE__, __LINE__, "input string is too long"); + } + + for (i:=0; i 0) { + if ((p_Packing == USSD_Packing) and (v_NoOfPaddingBits == 7)) { + v_Padding := '0001101'B; // use instead of the @ character; see TS 23.038 cl. 6.1.2.3.1 + } else { + v_Padding := int2bit(0, v_NoOfPaddingBits); // 1..7 padding bits, all 0 + } + } + v_BitString := v_Padding & v_BitString; + + // convert bitstring back to octetstring: the first character is at the end of the bitstring + // => we need to take the octets from the end of the bitstring + v_OctetString := ''O; + for (i:=0; i < v_NoOfOctets; i:=i+1) { + v_Index := (v_NoOfOctets - (i+1)) * 8; // get start index of the next octet + v_OctetString[i] := bit2oct(substr(v_BitString, v_Index, 8)); + } + return v_OctetString; + } + + function f_CharPacking_IA5toBCD(charstring p_ASCII_String) return octetstring + { /* Packed BCD coding with "swaping of nibbles" as required e.g. for encoding of called and calling party numbers in NAS messages (e.g. TS 24.004 cl. 10.5.4.7 and 10.5.4.9); + when the length of the input string is odd 'F' is aded as padding: + "0613454120" -> '6031541402'O - even number of digits + "06134541209" -> '6031541402F9'O - odd number of digits (padding) + "A6134541209" -> error */ + var integer i; + var charstring v_BcdString; + var integer v_Length := lengthof(p_ASCII_String); + var charstring v_ASCII_String := p_ASCII_String; + + // check input string + for (i := 0; i < v_Length; i := i+1) { + if (not match(p_ASCII_String[i], pattern "[0-9]")) { + FatalError(__FILE__, __LINE__, "invalid character for BCD string"); + } + } + + // add padding (if needed) + if (v_Length mod 2 != 0) { + v_ASCII_String := v_ASCII_String & "F"; + } + + // swap digits + for (i := 0; i < v_Length; i := i+2) { + v_BcdString[i] := v_ASCII_String[i+1]; + v_BcdString[i+1] := v_ASCII_String[i]; + } + + return str2oct(v_BcdString); + } + + //---------------------------------------------------------------------------- + + function f_BitstringReplaceMSB(bitstring p_Bitstring, + B1_Type p_NewMSB) return bitstring + { + return replace(p_Bitstring, 0, 1, p_NewMSB); + } + + //---------------------------------------------------------------------------- + + function f_Bitstring_BitIsSet(bitstring p_Bitstring, + integer p_Index) return boolean + { + if (p_Index >= lengthof(p_Bitstring)) { + FatalError(__FILE__, __LINE__, "invalid bit position"); + } + return (substr(p_Bitstring, p_Index, 1) == '1'B); + } + + //---------------------------------------------------------------------------- + /* system time acc. to default C library (see time.h) */ + + type record Struct_tm_Type { /* TTCN-3 equivalent for the "struct tm" as defined on C standard library (time.h or ctime.h for C or C++) */ + integer tm_sec, /* seconds after the minute 0..61 (tm_sec is generally 0-59. Extra range to accommodate for leap seconds in certain systems) */ + integer tm_min, /* minutes after the hour 0..59 */ + integer tm_hour, /* hours since midnight 0..23 */ + integer tm_mday, /* day of the month 1..31 */ + integer tm_mon, /* months since January 0..11 */ + integer tm_year, /* years since 1900 */ + integer tm_wday, /* days since Sunday 0..6 */ + integer tm_yday, /* days since January 1 0..365 */ + integer tm_isdst /* Daylight Saving Time flag */ + }; + + external function fx_GetSystemTime(out Struct_tm_Type p_Struct_tm, /* p_Struct_tm returns local system time; + * C implementation: + * time_t v_Now = time(NULL); + * struct tm *v_Tm = localtime(&v_Now); + */ + out integer p_TimezoneInfo); /* p_TimezoneInfo returns the difference (in seconds) between the UTC time (GMT) and the local time; + * C implementation: + * int timezone = (int)difftime(mktime(gmtime(&v_Now)), v_Now); + * NOTE: p_TimezoneInfo does not consider daylight saving e.g. it is always 3600 for CET independent of summer/winter + */ + + /* + * @desc auxiliary function for f_BCD_TimestampWithTimezone + * @param p_Val + * @return H2_Type + */ + function f_SwappedNibbles(integer p_Val) return H2_Type + { + var integer v_LowNibble := p_Val mod 10; + var integer v_HighNibble := (p_Val / 10) mod 10; + + return int2hex(v_LowNibble, 1) & int2hex(v_HighNibble, 1); + } + + /* + * @desc returns the timestamp as e.g. used as ServiceCentreTimeStamp for SMS with current time + * (see e.g. calculation of the TP Service Centre Time Stamp acc. to TS 23.040 cl. 9.2.3.11) + * Example: + * 2002 April 18, 15:32:46, timezone=4 + * f_BCD_TimestampWithTimezone returns 20408151236440 + * @return H14_Type + */ + function f_BCD_TimestampWithTimezone() return H14_Type + { /* @sic R5-1307270: common function to provide timestamp for MDT test cases too sic@ */ + var Struct_tm_Type v_LocalTime; + var integer v_TimezoneSeconds; + var integer v_TimezoneVal; + var integer v_SignVal := 0; // positive value per default + var H2_Type v_Year; + var H2_Type v_Month; + var H2_Type v_Day; + var H2_Type v_Hour; + var H2_Type v_Minute; + var H2_Type v_Second; + var H2_Type v_Timezone; + + fx_GetSystemTime(v_LocalTime, v_TimezoneSeconds); + + v_Year := f_SwappedNibbles(v_LocalTime.tm_year + 1900); /* acc. to definition of struct tm */ + v_Month := f_SwappedNibbles(v_LocalTime.tm_mon + 1); /* acc. to definition of struct tm */ + v_Day := f_SwappedNibbles(v_LocalTime.tm_mday); + v_Hour := f_SwappedNibbles(v_LocalTime.tm_hour); + v_Minute := f_SwappedNibbles(v_LocalTime.tm_min mod 60); /* v_LocalTime.tm_min can be 0..61 on some systems */ + v_Second := f_SwappedNibbles(v_LocalTime.tm_sec); + + /* Calculation of the timezone (-> 23.040): */ + if (v_LocalTime.tm_isdst > 0) { /* The value contained in the Time Zone field must take into account daylight saving time, such that when the sending entity changes from regular + (winter) time to daylight saving (summer) time, there is a change to the value in the Time Zone field, + for example in the UK the winter setting is 00000000 and the summer setting is 01000000. */ + v_TimezoneSeconds := v_TimezoneSeconds + 3600; + } + + if (v_TimezoneSeconds < 0) { + v_TimezoneSeconds := -v_TimezoneSeconds; + v_SignVal := 128; /* In the first of the two semi octets, the first bit (bit 3 of the seventh octet of the TP Service Centre Time Stamp field) + represents the algebraic sign of this difference (0: positive, 1: negative) */ + } + v_TimezoneVal := v_TimezoneSeconds / (60 * 15); /* The Time Zone indicates the difference, expressed in quarters of an hour, between the local time and GMT. */ + v_TimezoneVal := v_TimezoneVal mod 128; /* ... just to be sure */ + v_TimezoneVal := v_TimezoneVal + v_SignVal; /* set the upper bit */ + + v_Timezone := f_SwappedNibbles(v_TimezoneVal); + + return v_Year & v_Month & v_Day & v_Hour & v_Minute & v_Second & v_Timezone; + } + /* + * @desc wrapper function to strip the timezone (e.g. for 'AbsoluteTimeInfo' acc. to 36.331 cl. 6.3.6) + * @return H12_Type + * @status + */ + function f_BCD_TimestampWithoutTimezone() return H12_Type + { + var H14_Type v_TimestampWithTimezone := f_BCD_TimestampWithTimezone(); + return substr(v_TimestampWithTimezone, 0, 12); + } + + /* + * @desc wrapper function to convert f_BCD_TimestampWithoutTimezone() to bitstring as needed for MDT + * @return B48_Type + * @status + */ + + function f_MDT_GetAbsolute_TimeStamp() return B48_Type + { + return hex2bit(f_BCD_TimestampWithoutTimezone()); + } + + /* + * @desc To convert UTRAN cell ID acc to 34.123-3 clause 8.5 + * @param p_CellId - enumerated type + * @return integer + * @status + */ + function f_UtranCellId2Int(UTRAN_CellId_Type p_CellId) return integer + { // @sic R5s130195 Baseline moving to rel-11: UTRAN cellID enhanced sic@ + var integer v_CellId := enum2int(p_CellId); + + // @sic R5-133563: added utran34_CellA/B/C... for 34.123-1 NAS tc sic@ + if (v_CellId >= 2000) { + v_CellId := v_CellId - 2000; + } else if (v_CellId >= 1000) { + v_CellId := v_CellId - 1000; + } + return v_CellId; + } + + //---------------------------------------------------------------------------- + /* + * @desc check that the result string starts with specific sub-string + * @param p_SourceString + * @param p_StartString + * @return boolean + */ + function f_CheckStringStartWith(charstring p_SourceString, + charstring p_StartString) + return boolean + { + var integer v_Length := lengthof(p_StartString); + var charstring v_SubStr; + var boolean v_Result := false; + + if (v_Length <= lengthof(p_SourceString)) { + v_SubStr := substr(p_SourceString, 0, v_Length); + v_Result := (v_SubStr == p_StartString); + } + return v_Result; + } + +} diff --git a/LTE_A_IWD_14wk37/Common/Common/CommonIratDefs.ttcn b/LTE_A_IWD_14wk37/Common/Common/CommonIratDefs.ttcn new file mode 100644 index 0000000..d8b364f --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/Common/CommonIratDefs.ttcn @@ -0,0 +1,599 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-07-06 21:15:13 +0200 (Sun, 06 Jul 2014) $ +// $Rev: 11812 $ +/******************************************************************************/ + +module CommonIratDefs { + import from CommonDefs all; + import from NAS_AuthenticationCommon all; + import from Parameters all; + + type union IRAT_Coordination_MSG { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + IRAT_CoOrd_SysInfo_Type SysInfo, + IRAT_CoOrd_Auth_Type Authentication, + Null_Type TriggerEvent, + Null_Type Confirmation, + octetstring OctetData + }; + + type union IRAT_CoOrd_SysInfo_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + CoOrd_GERANSysInfo_List_Type Geran, + CoOrd_UTRANSysInfo_List_Type Utran, + CoOrd_EUTRASysInfo_List_Type Eutra, + CoOrd_CDMA2000SysInfo_List_Type Cdma2000, + Null_Type noParams + }; + + type record IRAT_CoOrd_Auth_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + Common_AuthenticationParams_Type AuthPS, + Common_AuthenticationParams_Type AuthCS optional, + CoOrd_GUTIParam_Type GutiParams optional, + boolean CSinOtherRAT, // Set to true if either LAU or Combined RAU was done in UTRAN or GERAN cell; @sic R5-110746 sic@ + CoOrd_UEACap_Type UEACap optional, // Used to pass the UEA capabilities from E to U found in UE Network Capability // @sic R5s130506 sic@ + CoOrd_UIACap_Type UIACap optional, // Used to pass the UIA capabilities from E to U found in UE Network Capability // @sic R5s130680 sic@ + B20_Type StartPS optional, // Used to pass startPS value from E to U after UE capability, before a Handover @sic R5-120764 sic@ + B20_Type StartCS optional // Used to pass startPS value from E to U after UE capability, before a Handover @sic R5-120764 sic@ + }; + + type record CoOrd_UEACap_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + B1_Type Uea0, + B1_Type Uea1, + B1_Type Uea2 + }; + + type record CoOrd_UIACap_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + B1_Type Uia0, + B1_Type Uia1, + B1_Type Uia2 + }; + + type record CoOrd_GUTIParam_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + B16_Type MME_GroupId, + B8_Type MME_Code, + B32_Type M_TMSI, + B16_Type PTMSI_Sig optional // @sic R5-140761 sic@ + }; + + type record of CoOrd_GERANSysInfo_Type CoOrd_GERANSysInfo_List_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + type record CoOrd_GERANSysInfo_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + integer Arfcn, +// CoOrd_GERANNeighCell_Type NeighCells, @sic R5-120604 sic@ + B3_Type Ncc, + B3_Type Bcc, + O2_Type Cell_Identity, + B1_Type BandIndicator, // This can't be an ASN.1 type because it's sent to EUTRA too + O3_Type PLMN, // the PLMN of the cell, defined in octets + B16_Type LAC, + B8_Type RAC, + integer GPRSArfcn, + integer TCHArfcn optional + + }; + type record of integer CoOrd_GERANNeighCell_Type; /* the ARFCN of the cells, defined as an integer; + @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT, UTRAN) */ + + type record of CoOrd_UTRANSysInfo_Type CoOrd_UTRANSysInfo_List_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + type union CoOrd_UTRANSysInfo_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + CoOrd_UTRANSysInfoFDD_Type FDD, + CoOrd_UTRANSysInfoTDD_Type TDD + } + + type record CoOrd_UTRANSysInfoTDD_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + integer Freq, // the ARFCN of a cell + integer CellParametersID, + B1_Type Tstd, + B1_Type Diversity, + O3_Type PLMN, // the PLMN of the cell, defined in octets + B28_Type CellIdentity, // the identity of the cell (as transmitted in SIB3) use fl_UTRAN_GetCellIndentity + B16_Type LAC, + B8_Type RAC + } + + type record CoOrd_UTRANSysInfoFDD_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + integer Freq, // the ARFCN of a cell, defined as an integer + integer Band, // the band of a cell, defined as an integer @sic R5s130268 sic@ + integer ScramblingCode, // the primary scrambling code of a cell, defined as an integer + integer UplinkScrambingCode, // the uplink scrambling code of a cell, defined as an integer; @sic R5-110771 sic@ + O3_Type PLMN, // the PLMN of the cell, defined in octets + B28_Type CellIdentity, // the identity of the cell (as transmitted in SIB3) + B16_Type LAC, + B8_Type RAC + }; + + type record of CoOrd_CDMA2000SysInfo_Type CoOrd_CDMA2000SysInfo_List_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + type record CoOrd_CDMA2000SysInfo_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + boolean IsHRPD, + integer Arfcn, + integer BandClass, + integer PNOffset, + integer ColorCode_HRPD, //Color code, to be used as PreRegistrationZoneIdHRPD + B128_Type SectorID_HRPD, + B16_Type BaseId, + B16_Type NID, + B15_Type SID, + B12_Type RegZone_1XRTT + }; + + type record of CoOrd_EUTRASysInfo_Type CoOrd_EUTRASysInfo_List_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + + type record CoOrd_EUTRASysInfo_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + integer Arfcn, + integer DL_Bandwidth, // @sic R5s100871 Need to pass this through the co-ord msg sic@ + EUTRA_HOInfo_Type HO optional, // extended for HO test cases + integer CA_Tested_Integer optional, + O3_Type PLMN optional, // the PLMN of the cell, defined in octets + B28_Type CellId optional, // the EUTRA cell identity + B16_Type TAC optional + + }; + + type record EUTRA_HOInfo_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + integer UL_Bandwidth, + integer PhysCellId, + integer RootSequenceIndex + }; + + type record of IRAT_CoOrd_SysInfo_Type IRAT_CoOrd_SysInfo_List_Type; /* used as return type for f_IRAT_InitialCoOrd_2Ports + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + + // All Messages can go in both directions: + type port IRAT_CO_ORD_PORT message { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + out IRAT_Coordination_MSG; + in IRAT_Coordination_MSG; + }; + + //---------------------------------------------------------------------------- + + group IRAT_Templates { + + //------------------------------------ + // Coordination messages: + template (value) IRAT_Coordination_MSG cms_IRAT_SysInfo(template (value) IRAT_CoOrd_SysInfo_Type p_SysInfo) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + SysInfo := p_SysInfo + }; + + template (present) IRAT_Coordination_MSG cmr_IRAT_SysInfo := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + SysInfo := ? + }; + + template (value) IRAT_Coordination_MSG cms_IRAT_Trigger := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + TriggerEvent := true + }; + + template (present) IRAT_Coordination_MSG cmr_IRAT_Trigger := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + TriggerEvent := true + }; + + template (value) IRAT_Coordination_MSG cms_IRAT_OctetData (octetstring p_Data) := + { /* @status APPROVED (LTE_IRAT) */ + OctetData := p_Data + }; + + template (present) IRAT_Coordination_MSG cmr_IRAT_OctetData := + { /* @status APPROVED (LTE_IRAT) */ + OctetData := ? + }; + + template (value) IRAT_Coordination_MSG cms_IRAT_AuthInfo (template (value) Common_AuthenticationParams_Type p_PS, + template (omit) Common_AuthenticationParams_Type p_CS, + template (omit) CoOrd_GUTIParam_Type p_GUTIParams, + boolean p_Combined := false, + template (omit) CoOrd_UEACap_Type p_UEACap := omit, // @sic R5s130506 sic@ + template (omit) CoOrd_UIACap_Type p_UIACap := omit, // @sic R5s130680 sic@ + template (omit) B20_Type p_StartPS := omit, + template (omit) B20_Type p_StartCS := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + Authentication := { + AuthPS := p_PS, + AuthCS := p_CS, + GutiParams := p_GUTIParams, + CSinOtherRAT := p_Combined, + UEACap := p_UEACap, // @sic R5s130506 sic@ + UIACap := p_UIACap, // @sic R5s130680 sic@ + StartPS := p_StartPS, // @sic R5-120764 sic@ + StartCS := p_StartCS // @sic R5-120764 sic@ + } + }; + + template (present) IRAT_Coordination_MSG cmr_IRAT_AuthInfo := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + Authentication := ? + }; + + template (value) CoOrd_GUTIParam_Type cs_IRAT_GUTIStuff (B16_Type p_MME_GroupId, + B8_Type p_MME_Code, + B32_Type p_M_TMSI, + template (omit) B16_Type p_PTMSISig := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + MME_GroupId := p_MME_GroupId, + MME_Code := p_MME_Code, + M_TMSI := p_M_TMSI, + PTMSI_Sig := p_PTMSISig + }; + + //------------------------------------ + // UTRAN Sys info used in coordination: + template (value) CoOrd_UTRANSysInfoFDD_Type cs_CoOrdUTRANSysInfo_FDD (integer p_Freq, + integer p_Band, // @sic R5s130268: adding p_Band sic@ + integer p_Code, + integer p_UlScramb, + O3_Type p_PLMN, + B28_Type p_CellIdentity, + B16_Type p_LAC, + B8_Type p_RAC) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + Freq := p_Freq, + Band := p_Band, // @sic R5s130268: adding p_Band sic@ + ScramblingCode := p_Code, + UplinkScrambingCode := p_UlScramb, + PLMN := p_PLMN, // the PLMN of the cell, defined in octets + CellIdentity := p_CellIdentity, + LAC := p_LAC, + RAC := p_RAC + }; + + template (value) CoOrd_UTRANSysInfoTDD_Type cs_CoOrdUTRANSysInfo_TDD (integer p_Freq, + integer p_CellParametersID, + B1_Type p_Tstd, + B1_Type p_Diversity, + O3_Type p_PLMN, + B28_Type p_CellIdentity, + B16_Type p_LAC, + B8_Type p_RAC) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + Freq := p_Freq, + CellParametersID := p_CellParametersID, + Tstd := p_Tstd, + Diversity := p_Diversity, + PLMN := p_PLMN, // the PLMN of the cell, defined in octets + CellIdentity := p_CellIdentity, + LAC := p_LAC, + RAC := p_RAC + }; + + + template (value) IRAT_CoOrd_SysInfo_Type cs_CoOrdUTRAN_SysInfo(template (value) CoOrd_UTRANSysInfo_Type p_Cell5, + template (value) CoOrd_UTRANSysInfo_Type p_Cell7, + template (value) CoOrd_UTRANSysInfo_Type p_Cell8, + template (value) CoOrd_UTRANSysInfo_Type p_Cell9) := + { /* UTRAN sys info to be sent from UTRAN-PTC to EUTRA-PTC */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + Utran := { + p_Cell5, + p_Cell7, + p_Cell8, + p_Cell9 + } + }; + + template (value) IRAT_CoOrd_SysInfo_Type cs_CoOrdC2K_NoParams := + { /* no parameters to be sent from EUTRAN-PTC to C2K-PTC */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + noParams := true + }; + + //------------------------------------ + // GERAN Sys info used in coordination: + template (value) CoOrd_GERANSysInfo_Type cs_CoOrdGERANSysInfo(integer p_Arfcn, + B3_Type p_Ncc, + B3_Type p_Bcc, + O2_Type p_CellId, + B1_Type p_BandInd, + O3_Type p_PLMN, + B16_Type p_LAC, + B8_Type p_RAC, + integer p_GPRSArfcn, + template (omit) integer p_TCHArfcn := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + Arfcn := p_Arfcn, + // NeighCells := p_Neigh, @sic R5-120604 sic@ + Ncc := p_Ncc, + Bcc := p_Bcc, + Cell_Identity := p_CellId, + BandIndicator := p_BandInd, + PLMN := p_PLMN, + LAC := p_LAC, + RAC := p_RAC, + GPRSArfcn := p_GPRSArfcn, + TCHArfcn := p_TCHArfcn + }; + + template (value) IRAT_CoOrd_SysInfo_Type cs_CoOrdGERAN_SysInfo (template (value) CoOrd_GERANSysInfo_Type p_Cell24, + template (value) CoOrd_GERANSysInfo_Type p_Cell25, + template (value) CoOrd_GERANSysInfo_Type p_Cell26) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + Geran := { + p_Cell24, + p_Cell25, + p_Cell26 + } + }; + + //------------------------------------ + // CDMA2000 Sys info used in coordination: + + //@sic R5s100848 sic@ + template (value) CoOrd_CDMA2000SysInfo_Type cs_CoOrdCDMA2000_SysInfoSingleCell (boolean p_IsHRPD, + integer p_ARFCN, + integer p_BandClass, + integer p_PNOffset, + integer p_ColorCode_HRPD, + B128_Type p_SectorID_HRPD, + B16_Type p_BaseId, + B16_Type p_NID, + B15_Type p_SID, + B12_Type p_RegZone_1XRTT) := + { /* @status APPROVED (LTE_IRAT) */ + IsHRPD := p_IsHRPD, + Arfcn := p_ARFCN, + BandClass := p_BandClass, + PNOffset := p_PNOffset, + ColorCode_HRPD := p_ColorCode_HRPD, + SectorID_HRPD := p_SectorID_HRPD, + BaseId := p_BaseId, + NID := p_NID, + SID := p_SID, + RegZone_1XRTT := p_RegZone_1XRTT + }; + + template (value) IRAT_CoOrd_SysInfo_Type cs_CoOrdCDMA2000_SysInfoOneCell (template (value) CoOrd_CDMA2000SysInfo_Type p_Cell) := + { /* @status APPROVED (LTE_IRAT) */ + Cdma2000 := {p_Cell} + }; + + template (value) IRAT_CoOrd_SysInfo_Type cs_CoOrdCDMA2000_SysInfoTwoCell (template (value) CoOrd_CDMA2000SysInfo_Type p_Cell1, + template (value) CoOrd_CDMA2000SysInfo_Type p_Cell2) := + { + Cdma2000 := {p_Cell1, p_Cell2} + }; + + template (value) IRAT_CoOrd_SysInfo_Type cs_CoOrdCDMA2000_SysInfo (template (value) CoOrd_CDMA2000SysInfo_Type p_Cell15, + template (value) CoOrd_CDMA2000SysInfo_Type p_Cell16, + template (value) CoOrd_CDMA2000SysInfo_Type p_Cell17, + template (value) CoOrd_CDMA2000SysInfo_Type p_Cell18) := + { /* @status APPROVED (LTE_IRAT) */ + Cdma2000 := { + p_Cell15, + p_Cell16, + p_Cell17, + p_Cell18 + } + }; + + //------------------------------------ + // EUTRA Sys info used in coordination: + + template (value) EUTRA_HOInfo_Type cs_EUTRA_HOInfo (integer p_ULBW, + integer p_PhysCellId, + integer p_RootSequenceIndex) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + UL_Bandwidth := p_ULBW, + PhysCellId := p_PhysCellId, + RootSequenceIndex := p_RootSequenceIndex + }; + + template (value) CoOrd_EUTRASysInfo_Type cs_CoOrdEUTRASysInfo(integer p_Arfcn, + integer p_DLBW, + template (omit) EUTRA_HOInfo_Type p_HOInfo := omit, + template (omit) integer p_CATested := omit, + template (omit) O3_Type p_PLMN := omit, + template (omit) B28_Type p_CellId := omit, + template (omit) B16_Type p_TAC := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Arfcn := p_Arfcn, + DL_Bandwidth := p_DLBW, + HO := p_HOInfo, + CA_Tested_Integer := p_CATested, + PLMN := p_PLMN, + CellId := p_CellId, + TAC := p_TAC + }; + + template (value) IRAT_CoOrd_SysInfo_Type cs_CoOrdEUTRA_SysInfo (template (value) CoOrd_EUTRASysInfo_List_Type p_CoOrd_EUTRASysInfo_List) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Eutra := p_CoOrd_EUTRASysInfo_List + }; + + template (value) IRAT_CoOrd_SysInfo_Type cs_CoOrdEUTRA_SysInfoSingleCell ( template (value) CoOrd_EUTRASysInfo_Type p_Cell) := + { /* EUTRA sys info to be sent from EUTRA-PTC to other PTCs */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + Eutra := { p_Cell } + }; + + template (value) IRAT_CoOrd_SysInfo_Type cs_CoOrdUTRAN_SysInfoSingleCell ( template (value) CoOrd_UTRANSysInfo_Type p_Cell ) := + { // UTRAN sys info to be sent from UTRAN-PTC to EUTRA-PTC + /* @status APPROVED (LTE_A, LTE_IRAT) */ + Utran := { p_Cell } + }; + + template (value) IRAT_CoOrd_SysInfo_Type cs_CoOrdGERAN_SysInfoSingleCell ( template (value) CoOrd_GERANSysInfo_Type p_Cell ) := + { // GERAN sys info to be sent from GERAN-PTC to EUTRA-PTC + /* @status APPROVED (LTE_A, LTE_IRAT) */ + Geran := { p_Cell } + }; + + } // end of group + + //============================================================================ + /* + * @desc to immediately detect programming errors (shall normally not happen) + * @param p_Port + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + altstep a_IRAT_Default(IRAT_CO_ORD_PORT p_Port) + { + [] p_Port.receive { + FatalError(__FILE__, __LINE__, "unexpected coordination message"); + } + } + + //---------------------------------------------------------------------------- + /* + * @desc send message to the other RAT + * @param p_Port + * @param p_Msg + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_IRAT_SendCoOrd(IRAT_CO_ORD_PORT p_Port, + template (value) IRAT_Coordination_MSG p_Msg) + { + p_Port.send (p_Msg); + } + + //---------------------------------------------- + /* + * @desc Wait for a coordination meessage from other PTC at the given port + * @param p_Port + * @return IRAT_CoOrd_SysInfo_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_IRAT_WaitForCoOrd_SysInfo (IRAT_CO_ORD_PORT p_Port) return IRAT_CoOrd_SysInfo_Type + { + var IRAT_Coordination_MSG v_ReceivedMsg; + var IRAT_CoOrd_SysInfo_Type v_SysInfoRx; + + alt { + [] p_Port.receive(cmr_IRAT_SysInfo) -> value v_ReceivedMsg { + v_SysInfoRx := v_ReceivedMsg.SysInfo; + } + [] a_IRAT_Default(p_Port) {} /* @sic R5s120178 BASELINE MOVING 2012 (additional changes) sic@ */ + } + return v_SysInfoRx; + } + + /* + * @desc wait for trigger sent by the other RAT + * @param p_Port + * @status APPROVED (LTE_A, LTE_IRAT) + */ + altstep a_IRAT_WaitForCoOrd_Trigger (IRAT_CO_ORD_PORT p_Port) + { + [] p_Port.receive(cmr_IRAT_Trigger) {} + [] a_IRAT_Default(p_Port) {} /* @sic R5s120178 BASELINE MOVING 2012 (additional changes) sic@ */ + } + + /* + * @desc wait for trigger sent by the other RAT + * @param p_Port + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_IRAT_WaitForCoOrd_Trigger (IRAT_CO_ORD_PORT p_Port) + { + alt { + [] a_IRAT_WaitForCoOrd_Trigger(p_Port) {} /* @sic C2K TUNNELLING sic@ */ + } + } + + /* + * @desc wait for coordination message containing authentication iformation from the other RAT + * @param p_Port + * @return IRAT_CoOrd_Auth_Type + * @status APPROVED (LTE_IRAT) + */ + function f_IRAT_WaitForCoOrd_AuthParams(IRAT_CO_ORD_PORT p_Port) return IRAT_CoOrd_Auth_Type + { + var IRAT_Coordination_MSG v_RxdMsg; + + alt { + [] p_Port.receive (cmr_IRAT_AuthInfo) -> value v_RxdMsg {} + [] a_IRAT_Default(p_Port) {} /* @sic R5s120178 BASELINE MOVING 2012 (additional changes) sic@ */ + } + return v_RxdMsg.Authentication; + } + + //---------------------------------------------- + /* + * @desc send system information of this PTC to the other PTC and wait for the system information from the other side + * @param p_Port + * @param p_SysInfoTx + * @return IRAT_CoOrd_SysInfo_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_IRAT_InitialCoOrd(IRAT_CO_ORD_PORT p_Port, + template (value) IRAT_CoOrd_SysInfo_Type p_SysInfoTx) return IRAT_CoOrd_SysInfo_Type + { + var IRAT_CoOrd_SysInfo_Type v_SysInfoRx; + + p_Port.send(cms_IRAT_SysInfo(p_SysInfoTx)); + v_SysInfoRx := f_IRAT_WaitForCoOrd_SysInfo (p_Port); + + return v_SysInfoRx; + } + + //---------------------------------------------------------------------------- + /* + * @desc send system information of this PTC to the other PTCs and wait for the system information from the other sides + * @param p_Port1 + * @param p_Port2 + * @param p_SysInfoTx + * @return IRAT_CoOrd_SysInfo_List_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_IRAT_InitialCoOrd_2Ports(IRAT_CO_ORD_PORT p_Port1, + IRAT_CO_ORD_PORT p_Port2, + template (value) IRAT_CoOrd_SysInfo_Type p_SysInfoTx) return IRAT_CoOrd_SysInfo_List_Type + { + var IRAT_CoOrd_SysInfo_List_Type v_SysInfoRxList; + + p_Port1.send(cms_IRAT_SysInfo(p_SysInfoTx)); + p_Port2.send(cms_IRAT_SysInfo(p_SysInfoTx)); + v_SysInfoRxList[0] := f_IRAT_WaitForCoOrd_SysInfo (p_Port1); + v_SysInfoRxList[1] := f_IRAT_WaitForCoOrd_SysInfo (p_Port2); /* Note: that works since the coordination ports are not handled by the default behaviour + * i.e. there is a blocking receive for port1 and if the response for port2 + * is faster it remains in port2's input queue */ + return v_SysInfoRxList; + } + + //---------------------------------------------------------------------------- + /* + * @desc Function that sends the EUTRA sys info params (already converted to integers) to another PTC + * Extended with optional parameters for Handover test cases + * @param p_Irat_Coord_Port + * @param p_Arfcn + * @param p_DLBW + * @param p_EUTRA_HOInfo (default value: omit) + * @param p_CATested (default value: omit) + * @param p_PLMN (default value: omit) + * @param p_CellId (default value: omit) + * @param p_TAC (default value: omit) + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_IRAT_Send_EUTRA_SysInfoToOtherPort(IRAT_CO_ORD_PORT p_Irat_Coord_Port, + integer p_Arfcn, + integer p_DLBW, + template (omit) EUTRA_HOInfo_Type p_EUTRA_HOInfo := omit, + template (omit) integer p_CATested := omit, + template (omit) O3_Type p_PLMN := omit, + template (omit) B28_Type p_CellId := omit, + template (omit) B16_Type p_TAC := omit) + { + var template (value) CoOrd_EUTRASysInfo_Type v_Cell := cs_CoOrdEUTRASysInfo(p_Arfcn, p_DLBW, p_EUTRA_HOInfo, p_CATested, p_PLMN, p_CellId, p_TAC); + f_IRAT_SendCoOrd(p_Irat_Coord_Port, cms_IRAT_SysInfo(cs_CoOrdEUTRA_SysInfoSingleCell(v_Cell))); + } + + //---------------------------------------------------------------------------- + /* + * @desc Function that returns the UTRAN FFD/TDD Mode - now based on a pixit and not necessarily the same as the LTE mode + * @return UTRAN_FDD_TDD_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_IRAT_GetUTRAN_FDD_TDD_Mode () return UTRAN_FDD_TDD_Type + { + return px_UTRAN_ModeUnderTest; + } + +} // end of module diff --git a/LTE_A_IWD_14wk37/Common/Common/UpperTesterCommon.ttcn b/LTE_A_IWD_14wk37/Common/Common/UpperTesterCommon.ttcn new file mode 100644 index 0000000..630d9ae --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/Common/UpperTesterCommon.ttcn @@ -0,0 +1,118 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-06-28 13:27:35 +0200 (Sat, 28 Jun 2014) $ +// $Rev: 11783 $ +/******************************************************************************/ + +module UpperTesterCommon { + + group TypeDefs_Common { /* common types being used at the PTC <-> UpperTester interface as well as at the UpperTester <-> System interface */ + + type record Ut_Parameter_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + charstring Name, // name of the parameter/attribute + charstring Value // value (may need to be converted e.g. to integer) + }; + + type record of Ut_Parameter_Type Ut_ParameterList_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + type enumerated Ut_CnfReq_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + NO_CNF_REQUIRED, + CNF_REQUIRED, /* to request CNF as got from the UE */ + LOCAL_CNF_REQUIRED, /* to request immediate CNF after SS has submitted the command to the UE (SS shall not wait for the UE is responding) + @sic R5s110176 BASELINE MOVING 2011 sic@ */ + MULTIPLE_CNF // @sic R5s140316 sic@ + }; + + type record UT_COMMON_CNF { /* Common confirmation triggered by the UE; + used at the system interface as well as at the inter PTC interface; + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + boolean Result, // true: success; false: failure + charstring ResultString optional // contains response from the UE (if there is any) + }; + + } // end of group TypeDefs_Common + + //---------------------------------------------------------------------------- + + group TypeDefs_UT_System { // types being used at the UpperTester <-> System interface + + type record MMI_Cmd_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + charstring Cmd, /* commands corresponding to Ut_Common_Req_Type (e.g. "SelectPLMN"); + it is a charstring rather than a enumerated to allow generic implementation in the system adaptor */ + Ut_ParameterList_Type ParameterList optional /* additional information to perform the MMI: + e.g. for "SelectPLMN" this is {"MCC" }, {"MNC" } */ + + }; + type union Ut_System_Cmd_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + charstring AT, /* to carry mandatory and optional AT commands */ + MMI_Cmd_Type MMI /* to carry MMI commands and optional AT commands */ + }; + type record UT_SYSTEM_REQ { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + Ut_System_Cmd_Type Cmd, + Ut_CnfReq_Type CnfRequired /* Notes: a confirmation shall only be requested in cases when there is no signalling + * from the UE being triggered by the MMI/AT command + * @sic R5s110176 BASELINE MOVING 2011 sic@ */ + }; + } // end of group TypeDefs_UT_System + + //---------------------------------------------------------------------------- + + type port MTC_System_Ut message { /* Upper Tester: Port at MTC to be connected with system + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + out UT_SYSTEM_REQ; + in UT_COMMON_CNF; + }; + + //---------------------------------------------------------------------------- + + template (present) UT_COMMON_CNF car_UT_COMMON_CNF := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + Result := ?, // result is a mandatory field + ResultString := * + }; + + template (value) UT_SYSTEM_REQ cas_UT_SYSTEM_REQ(template (value) Ut_System_Cmd_Type p_ATorMMI_Cmd, + Ut_CnfReq_Type p_CnfRequired) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + Cmd := p_ATorMMI_Cmd, + CnfRequired := p_CnfRequired + }; + + template (value) Ut_Parameter_Type cs_Ut_Parameter_Common(charstring p_Name, + template (value) charstring p_Value) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + Name := p_Name, + Value := p_Value + }; + + template (value) Ut_System_Cmd_Type cs_AT_Cmd(charstring p_AtCmd) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + AT := p_AtCmd + }; + + template (value) Ut_System_Cmd_Type cs_MMI_Cmd(charstring p_MmiCmd, + template (omit) Ut_ParameterList_Type p_ParamList) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + MMI := { + Cmd := p_MmiCmd, + ParameterList := p_ParamList + } + }; + + /* + * @desc Check if a UT command is confirmed as expected + * @param p_CnfReq + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UT_CommandRequiresCnf(template (value) Ut_CnfReq_Type p_CnfReq) return boolean + { + return (match(CNF_REQUIRED, p_CnfReq) or match(LOCAL_CNF_REQUIRED, p_CnfReq) or match(MULTIPLE_CNF, p_CnfReq)); + } + +} diff --git a/LTE_A_IWD_14wk37/Common/Common/UpperTesterFunctions.ttcn b/LTE_A_IWD_14wk37/Common/Common/UpperTesterFunctions.ttcn new file mode 100644 index 0000000..df49bc3 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/Common/UpperTesterFunctions.ttcn @@ -0,0 +1,2708 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-10 10:55:39 +0200 (Wed, 10 Sep 2014) $ +// $Rev: 12185 $ +/******************************************************************************/ + +module UpperTesterFunctions { + import from UpperTesterCommon all; + import from UpperTesterPtcToMtcDefs all; + import from CommonDefs all; + import from Parameters all; + import from EPS_NAS_TypeDefs all; // EPS_QualityOfService + import from NAS_CommonTypeDefs all; + + const integer tsc_ManualPLMN_GERAN := 0; /* @status APPROVED (LTE_IRAT) */ + const integer tsc_ManualPLMN_UTRAN := 2; + const integer tsc_ManualPLMN_EUTRA := 7; + const integer tsc_ManualPLMN_None := -1; /* @status APPROVED (LTE, LTE_IRAT) */ + + + //============================================================================ + // TEMPLATES (used in this module only) + //----------------------------------------------------------------------------- + + template (value) UT_COMMON_CMD cas_UT_Req(template (value) Ut_Common_Req_Type p_Cmd, + template (value) Ut_CnfReq_Type p_Cnf, + template (omit) Ut_ParameterList_Type p_Parameters := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + Cmd := p_Cmd, + CnfReq := p_Cnf, + ParameterList := p_Parameters + }; + + //============================================================================ + // Common Parameters/Attributes + //----------------------------------------------------------------------------- + + template (value) Ut_Parameter_Type cs_Ut_Parameter_Cid(charstring p_Value) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_Ut_Parameter_Common("Cid", p_Value); + + template (value) Ut_Parameter_Type cs_Ut_Parameter_QoS(charstring p_Value) := + /* @status APPROVED (LTE, LTE_IRAT, UTRAN) */ + cs_Ut_Parameter_Common("QoS", p_Value); + + template (value) Ut_Parameter_Type cs_Ut_Parameter_PLMN(charstring p_Value) := + /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + cs_Ut_Parameter_Common("PLMN", p_Value); + + //============================================================================ + // Parameter lists for UT primitives + //----------------------------------------------------------------------------- + + template (value) Ut_ParameterList_Type cs_CEMode(charstring p_Value) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + cs_Ut_Parameter_Common("CE MODE", p_Value) + }; + + template (value) Ut_ParameterList_Type cs_OpMode(charstring p_Value) := + { /* @status */ + cs_Ut_Parameter_Common("OPERATION MODE", p_Value) + }; + + template (value) Ut_ParameterList_Type cs_CheckPlmn(charstring p_Value) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + cs_Ut_Parameter_PLMN(p_Value) + }; + + template (value) Ut_ParameterList_Type cs_CheckETWS(charstring p_Value1, + charstring p_Value2) := + { /* @status APPROVED (LTE) */ + cs_Ut_Parameter_Common("WARNING1", p_Value1), + cs_Ut_Parameter_Common("WARNING2", p_Value2) + }; + + template (value) Ut_ParameterList_Type cs_UplinkData(charstring p_Data, + charstring p_Sapi) := + { /* @status APPROVED (LTE_IRAT) */ + cs_Ut_Parameter_Common("DATA", p_Data), + cs_Ut_Parameter_Common("SAPI", p_Sapi) + }; + + template (value) Ut_ParameterList_Type cs_ManualPlmn(charstring p_Value) := + { /* @status APPROVED (LTE, LTE_IRAT) */ + /* @sic R5-106675 sic@ */ + cs_Ut_Parameter_PLMN(p_Value) + }; + + template (value) Ut_ParameterList_Type cs_PlmnCSG(charstring p_PLMN, + charstring p_CSG) := + { /* @status APPROVED (LTE, LTE_IRAT) */ + /* @sic R5-106675 sic@ */ + cs_Ut_Parameter_PLMN(p_PLMN), + cs_Ut_Parameter_Common("CSG", p_CSG) + }; + + template (value) Ut_ParameterList_Type cs_CheckCSG(charstring p_CSG, + charstring p_Included) := + { /* @status APPROVED (LTE) */ + cs_Ut_Parameter_Common("CSG", p_CSG), + cs_Ut_Parameter_Common("INCLUDED IN LIST", p_Included) + }; + + template (value) Ut_ParameterList_Type cs_DialNumber(charstring p_Value) := + { /* @status APPROVED (LTE, LTE_IRAT, SSNITZ, UTRAN) */ + cs_Ut_Parameter_Common("DIAL", p_Value) + }; + + template (value) Ut_ParameterList_Type cs_IMSMode := + { + cs_Ut_Parameter_Common("VOICE_CALL_MODE", "VOIP_ONLY") + }; + + template (value) Ut_ParameterList_Type cs_InsertUsim(template (value) charstring p_Value) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + cs_Ut_Parameter_Common("USIM", p_Value) + }; + + template (value) Ut_ParameterList_Type cs_SecondaryPDP(charstring p_DedId, + charstring p_DefId) := + { /* @status APPROVED (LTE) */ + cs_Ut_Parameter_Cid(p_DedId), + cs_Ut_Parameter_Common("DefId", p_DefId) + }; + + template (value) Ut_ParameterList_Type cs_PDP_Cid(charstring p_Cid) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_Ut_Parameter_Cid(p_Cid) + }; + + template (value) Ut_ParameterList_Type cs_EPSQoS(charstring p_QoSParams) := + { /* @status APPROVED (LTE) */ + cs_Ut_Parameter_QoS(p_QoSParams) + }; + + template (value) Ut_ParameterList_Type cs_TFT(charstring p_TFTParams) := + { /* @status APPROVED (LTE) */ + cs_Ut_Parameter_Common("TFT", p_TFTParams) + }; + + template (value) Ut_ParameterList_Type cs_RequestPDP(charstring p_PDPParams) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT, UTRAN) */ + cs_Ut_Parameter_Common("RequestPDP", p_PDPParams) + }; + + template (value) Ut_ParameterList_Type cs_PowerPreference(charstring p_PowerPreference) := + { + cs_Ut_Parameter_Common("PowerPreference", p_PowerPreference) + }; + + template (value) Ut_ParameterList_Type cs_DeleteMessage_Withflag(charstring p_Index, + charstring p_Delflag) := + { /* @status APPROVED (LTE) */ + cs_Ut_Parameter_Common("Index", p_Index), + cs_Ut_Parameter_Common("Delflag", p_Delflag) + }; + + template (value) Ut_ParameterList_Type cs_MessageService(charstring p_Service) := + { /* @status APPROVED (LTE) */ + cs_Ut_Parameter_Common("Service", p_Service) + }; + + template (value) Ut_ParameterList_Type cs_PreferredStorage(charstring p_Mem1, + charstring p_Mem2, + charstring p_Mem3) := + { /* @status APPROVED (LTE) */ + cs_Ut_Parameter_Common("Mem1", p_Mem1), + cs_Ut_Parameter_Common("Mem2", p_Mem2), + cs_Ut_Parameter_Common("Mem3", p_Mem3) + }; + + template (value) Ut_ParameterList_Type cs_MessageFormat(charstring p_Mode) := + { /* @status APPROVED (LTE) */ + cs_Ut_Parameter_Common("Mode", p_Mode) + }; + + template (value) Ut_ParameterList_Type cs_SelectCharacterSet(charstring p_Chset) := + { /* @status APPROVED (LTE) */ + cs_Ut_Parameter_Common("Chset", p_Chset) + }; + + template (value) Ut_ParameterList_Type cs_TriggerMolr(charstring p_TypeMolr) := + { /* @status */ + cs_Ut_Parameter_Common("TypeMolr", p_TypeMolr) + }; + + template (value) Ut_ParameterList_Type cs_LocationTime(charstring p_Time) := + { + cs_Ut_Parameter_Common("LocationOnTime", p_Time) + }; + + template (value) Ut_ParameterList_Type cs_LocationAnswer(charstring p_Permission, charstring p_HandleId) := + { /* @status APPROVED (POS) */ + cs_Ut_Parameter_Common("Permission", p_Permission), + cs_Ut_Parameter_Common("Handle Id", p_HandleId) + }; + + template (value) Ut_ParameterList_Type cs_LocationNotify(charstring p_Msg) := + { + cs_Ut_Parameter_Common("LocationNotify", p_Msg) + }; + + template (value) Ut_ParameterList_Type cs_ServiceCentreAddress(charstring p_Sca, + charstring p_Tosca) := + { /* @status APPROVED (LTE) */ + cs_Ut_Parameter_Common("Sca", p_Sca), + cs_Ut_Parameter_Common("Tosca", p_Tosca) + }; + + template (value) Ut_ParameterList_Type cs_WriteMessageToMemory_Text(charstring p_Da, + charstring p_Toda, + charstring p_Text) := + { // @sic R5s110750 sic@ + /* @status APPROVED (LTE, UTRAN) */ + cs_Ut_Parameter_Common("Da", p_Da), + cs_Ut_Parameter_Common("Toda", p_Toda), + cs_Ut_Parameter_Common("Text", p_Text) + }; + + template (value) Ut_ParameterList_Type cs_WriteMessageToMemory_PDU(charstring p_Len, + charstring p_Pdu) := + { /* @status APPROVED (LTE, UTRAN) */ + cs_Ut_Parameter_Common("Len", p_Len), + cs_Ut_Parameter_Common("Text", p_Pdu) + }; + + template (value) Ut_ParameterList_Type cs_SendMessageFromStorage(charstring p_Index) := + { /* @status APPROVED (LTE, UTRAN) */ + cs_Ut_Parameter_Common("Index", p_Index) + }; + + template (value) Ut_ParameterList_Type cs_Send_3_MessageFromStorage(charstring p_Index, + charstring p_Index1, + charstring p_Index2) := + { /* @status APPROVED (LTE) */ + cs_Ut_Parameter_Common("Index", p_Index), + cs_Ut_Parameter_Common("Index", p_Index1), + cs_Ut_Parameter_Common("Index", p_Index2) + }; + + template (value) Ut_ParameterList_Type cs_ChkMsgDisplayed(charstring p_Length, + charstring p_Msg) := + { /* @status APPROVED (LTE) */ + cs_Ut_Parameter_Common("Length", p_Length), + cs_Ut_Parameter_Common("Msg", p_Msg) + }; + + template (value) Ut_ParameterList_Type cs_SetTextModeParameters(charstring p_Fo, + charstring p_Vp, + charstring p_Pid) := + { /* @status APPROVED (LTE, UTRAN) */ + /* @sic R5s100606 sic@ */ + cs_Ut_Parameter_Common("Fo", p_Fo), + cs_Ut_Parameter_Common("Vp", p_Vp), + cs_Ut_Parameter_Common("Pid", p_Pid) + }; + + template (value) Ut_ParameterList_Type cs_ChkCallDisplayed(charstring p_ToDisplay) := + { /* @status APPROVED (SSNITZ) */ + cs_Ut_Parameter_Common("ToDisplay", p_ToDisplay) + }; + + template (value) Ut_ParameterList_Type cs_Chk_SSUserInd(charstring p_SuppService, charstring p_ToDisplay) := + { + cs_Ut_Parameter_Common("Supplementary Service", p_SuppService), + cs_Ut_Parameter_Common("ToDisplay", p_ToDisplay) + }; + + template (value) Ut_ParameterList_Type cs_QoS_Profile(charstring p_Cid, + charstring p_QoSParams) := + { /* @status APPROVED (LTE_IRAT, UTRAN) */ + cs_Ut_Parameter_Cid(p_Cid), + cs_Ut_Parameter_QoS(p_QoSParams) + }; + + template (value) Ut_ParameterList_Type cs_OperatorFormat(charstring p_Format) := + { /* @status APPROVED (LTE) */ + cs_Ut_Parameter_Common("Format", p_Format) + }; + + template (value) Ut_ParameterList_Type cs_ChangePassword(charstring p_SSToBarr, + charstring p_OldPassword, + charstring p_NewPassword) := + { + cs_Ut_Parameter_Common("Service To Barr", p_SSToBarr), + cs_Ut_Parameter_Common("Old Password", p_OldPassword), + cs_Ut_Parameter_Common("New Password", p_NewPassword) + }; + + template (value) Ut_ParameterList_Type cs_MBMSServiceInterest(charstring p_PLMN, + charstring p_ServiceId, + charstring p_Interest, + charstring p_SAI) := + { /* @status APPROVED (LTE_A) */ + cs_Ut_Parameter_PLMN(p_PLMN), + cs_Ut_Parameter_Common("Service Id", p_ServiceId), + cs_Ut_Parameter_Common("Interest", p_Interest), + cs_Ut_Parameter_Common("SAI", p_SAI) + }; + + template (value) Ut_ParameterList_Type cs_MBMSServiceActive(charstring p_ServiceId, + charstring p_SAI, + charstring p_Active) := + { /* @status */ + cs_Ut_Parameter_Common("Service Id", p_ServiceId), + cs_Ut_Parameter_Common("SAI", p_SAI), + cs_Ut_Parameter_Common("Active", p_Active) + }; + + template (value) Ut_ParameterList_Type cs_MBMSPriority(charstring p_PriorityOverUnicast) := + { /* @status */ + cs_Ut_Parameter_Common("Priority Over Unicast", p_PriorityOverUnicast) + }; + template (value) Ut_ParameterList_Type cs_CallIdNumber(charstring p_CallId) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A) */ + cs_Ut_Parameter_Common("Call Id", p_CallId) + }; + + template (value) Ut_ParameterList_Type cs_IntegerString(charstring p_Value) := + { /* @status APPROVED (POS) */ + cs_Ut_Parameter_Common("Integer", p_Value) + }; + + template (value) Ut_Parameter_Type cs_Ut_Parameter_Uri(charstring p_Value) := cs_Ut_Parameter_Common("Uri", p_Value); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (value) Ut_Parameter_Type cs_Ut_Parameter_SS_Mode(charstring p_Value) := cs_Ut_Parameter_Common("Mode", p_Value); /* @status APPROVED (IMS, SSNITZ) */ + template (value) Ut_Parameter_Type cs_Ut_Parameter_Number(charstring p_Value) := cs_Ut_Parameter_Common("Number", p_Value); + template (value) Ut_Parameter_Type cs_Ut_Parameter_Password(charstring p_Value) := cs_Ut_Parameter_Common("Password", p_Value); + template (value) Ut_Parameter_Type cs_Ut_Parameter_USSD(charstring p_Value) := cs_Ut_Parameter_Common("USSD", p_Value); + template (value) Ut_Parameter_Type cs_Ut_Parameter_SupplementaryService(charstring p_Value) := cs_Ut_Parameter_Common("SupplementaryService", p_Value); /* @status APPROVED (IMS, SSNITZ) */ + template (value) Ut_Parameter_Type cs_Ut_Parameter_SupplementaryServiceCondition(charstring p_Value) := cs_Ut_Parameter_Common("SupplementaryServiceCondition", p_Value); + template (value) Ut_Parameter_Type cs_Ut_Parameter_SupplementaryServiceTime(charstring p_Value) := cs_Ut_Parameter_Common("SupplementaryServiceTime", p_Value); + template (value) Ut_Parameter_Type cs_Ut_Parameter_PublicUserId(charstring p_Value) := cs_Ut_Parameter_Common("PublicUserId", p_Value); + template (value) Ut_Parameter_Type cs_Ut_Parameter_HomeDomain(charstring p_Value) := cs_Ut_Parameter_Common("HomeDomain", p_Value); + template (value) Ut_Parameter_Type cs_Ut_Parameter_PrivateUserId(charstring p_Value) := cs_Ut_Parameter_Common("PrivateUSerId", p_Value); + + template (value) Ut_Parameter_Type cs_Ut_Parameter_NITZ_Check(charstring p_Value) := cs_Ut_Parameter_Common("Year: ", p_Value); // Value may not be needed, empty for now + template (value) Ut_Parameter_Type cs_Ut_Parameter_NITZ_Confirm(charstring p_Value) := cs_Ut_Parameter_Common("Year: ", p_Value); // Value may not be needed, empty for now + template (value) Ut_Parameter_Type cs_Ut_Parameter_NITZ_Year(charstring p_Value) := cs_Ut_Parameter_Common("Year: ", p_Value); /* @status APPROVED (LTE) */ + template (value) Ut_Parameter_Type cs_Ut_Parameter_NITZ_Month(charstring p_Value) := cs_Ut_Parameter_Common("Month: ", p_Value); /* @status APPROVED (LTE) */ + template (value) Ut_Parameter_Type cs_Ut_Parameter_NITZ_Day(charstring p_Value) := cs_Ut_Parameter_Common("Day: ", p_Value); /* @status APPROVED (LTE) */ + template (value) Ut_Parameter_Type cs_Ut_Parameter_NITZ_Hour(charstring p_Value) := cs_Ut_Parameter_Common("Hour: ", p_Value); /* @status APPROVED (LTE) */ + template (value) Ut_Parameter_Type cs_Ut_Parameter_NITZ_Minutes(charstring p_Value) := cs_Ut_Parameter_Common("Minutes: ", p_Value); /* @status APPROVED (LTE) */ + template (value) Ut_Parameter_Type cs_Ut_Parameter_NITZ_Seconds(charstring p_Value) := cs_Ut_Parameter_Common("Seconds: ", p_Value); /* @status APPROVED (LTE) */ + template (value) Ut_Parameter_Type cs_Ut_Parameter_NITZ_TimeZone(charstring p_Value) := cs_Ut_Parameter_Common("TimeZone: ", p_Value); /* @status APPROVED (LTE) */ + template (value) Ut_Parameter_Type cs_Ut_Parameter_NITZ_LocalTimeZone(charstring p_Value) := cs_Ut_Parameter_Common("LocalTimeZone: ", p_Value); /* @status APPROVED (LTE) */ + template (value) Ut_Parameter_Type cs_Ut_Parameter_NITZ_DaylightSavingTime(charstring p_Value) := cs_Ut_Parameter_Common("DaylightSavingTime: ", p_Value); + template (value) Ut_Parameter_Type cs_Ut_Parameter_NITZ_FullNetworkName(charstring p_Value) := cs_Ut_Parameter_Common("FullNetworkName: ", p_Value); /* @status APPROVED (LTE) */ + template (value) Ut_Parameter_Type cs_Ut_Parameter_NITZ_ShortNetworkName(charstring p_Value) := cs_Ut_Parameter_Common("ShortNetworkName: ", p_Value); /* @status APPROVED (LTE) */ + + //============================================================================ + // local functions + //---------------------------------------------------------------------------- + /* + * @desc local function to send command and get confirmation + * @param p_Port + * @param p_Cmd + * @param p_DontWaitForCnf (default value: false) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function fl_UT_ApplyCommand(UT_PTC_MTC_PORT p_Port, + template (value) UT_COMMON_CMD p_Cmd, + boolean p_DontWaitForCnf := false) // @sic R5-140347 sic@ + { + p_Port.send(p_Cmd); + if (f_UT_CommandRequiresCnf(p_Cmd.CnfReq) and not p_DontWaitForCnf) { // @sic R5s110275 sic@ + p_Port.receive(car_UT_COMMON_CNF); + } + } + + /* + * @desc To send the command to the MTC, wait for a response and return the result string + * @param p_Port + * @param p_Cmd + * @return UT_COMMON_CNF + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function fl_UT_ApplyCommandRetCnf(UT_PTC_MTC_PORT p_Port, + template (value) UT_COMMON_CMD p_Cmd) return UT_COMMON_CNF + { + p_Port.send(p_Cmd); + return fl_UT_RetCnf (p_Port); // @sic R5-140347 sic@ + } + + /* + * @desc To wait for a response and return the CNF + * @param p_Port + * @return UT_COMMON_CNF + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function fl_UT_RetCnf(UT_PTC_MTC_PORT p_Port) return UT_COMMON_CNF + { + var UT_COMMON_CNF v_Cnf; + + p_Port.receive(car_UT_COMMON_CNF) -> value v_Cnf; + return v_Cnf; + } + + //============================================================================ + // public functions + //---------------------------------------------------------------------------- + /* + * @desc To ask the UE to configure Combined Attach + * TTCN waits until operation is confirmed before continuing + * TTCN waits until operation is confirmed before continuing. + * If the CS PS mode to which p_UE_CS_PS_UsageSetting_Tested is set is supported then this mode is chosen. + * If it does not matter which mode is selected then a supported mode is chosen. + * If the prose requests a specific mode it should be indicated as explicit parameter. + * To be used when the UE is switched off. + * @param p_Port + * @param p_UE_CS_PS_UsageSetting_Tested Whether UE is voice or data centric + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_UT_ConfigureCombinedAttach(UT_PTC_MTC_PORT p_Port, + CS_PS_MODE p_UE_CS_PS_UsageSetting_Tested := px_UE_CS_PS_UsageSetting_Tested) + { + var integer v_Mode := 1; // PS/CS Mode 1 // @sic R5-106675 sic@ @sic R5s120511 sic@ + var CS_PS_MODE v_UE_CS_PS_UsageSetting_Tested := p_UE_CS_PS_UsageSetting_Tested; + + // The attach mode is configured in the preamble. The UE is switched on to reach a mode where AT command setting is possible. + f_UT_SwitchOnUE(p_Port, false, CNF_REQUIRED); // @sic R5s120597r1 sic@ + + if ((v_UE_CS_PS_UsageSetting_Tested == DATA_CENTRIC) and pc_CS_PS_data_centric) { + v_UE_CS_PS_UsageSetting_Tested := DATA_CENTRIC; + } + else if ((v_UE_CS_PS_UsageSetting_Tested == VOICE_CENTRIC) and pc_CS_PS_voice_centric) { + v_UE_CS_PS_UsageSetting_Tested := VOICE_CENTRIC; + } + else { + FatalError(__FILE__, __LINE__, "Invalid Usage Settings, please check pc_CS_PS_data_centric, pc_CS_PS_voice_centric and px_UE_CS_PS_UsageSetting_Tested"); // @sic R5s130828 add. change sic@ + } + if (pc_Combined_Attach) { // The message is only needed if both options are supported; @sic R5-103815 sic@ @sic R5s120079r1 sic@ + if (v_UE_CS_PS_UsageSetting_Tested == DATA_CENTRIC) {// @sic R5-106675 sic@ + v_Mode := 2; // PS/CS Mode 2 + } + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CONFIGURE_CEMODE, CNF_REQUIRED, cs_CEMode(int2str(v_Mode)))); // @sic R5-106675 sic@ + } + else { + FatalError(__FILE__, __LINE__, "inconsistent parameter setting"); + } + + // The attach mode is configured in the preamble. At the end the UE is switched off properly. + f_UT_SwitchOffUE(p_Port, false, CNF_REQUIRED); // @sic R5s120597r1 sic@ + + } // f_UT_ConfigureCombinedAttach + + //---------------------------------------------------------------------------- + /* + * @desc To ask the UE to configure EPS Attach + * TTCN waits until operation is confirmed before continuing. + * If the PS mode to which p_UE_PS_UsageSetting_Tested is set is supported then this mode is chosen. + * If it does not matter which mode is chosen then a supported mode is chosen. + * If the prose requests a specific mode it should be indicated as explicit parameter. + * To be used when the UE is switched off. + * @param p_Port + * @param p_UE_PS_UsageSetting_Tested Whether UE is voice or data centric + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_UT_ConfigureEPSAttach(UT_PTC_MTC_PORT p_Port, + PS_MODE p_UE_PS_UsageSetting_Tested := px_UE_PS_UsageSetting_Tested) + { + var integer v_Mode := 0; // PSMode 2 // @sic R5-106675 sic@ @sic R5s120511r1 sic@ + var PS_MODE v_UE_PS_UsageSetting_Tested := p_UE_PS_UsageSetting_Tested; + + // The attach mode is configured in the preamble. The UE is switched on to reach a mode where AT command setting is possible. + f_UT_SwitchOnUE(p_Port, false, CNF_REQUIRED); // @sic R5s120597r1 sic@ + + if ((v_UE_PS_UsageSetting_Tested == DATA_CENTRIC) and (pc_PS_data_centric == true)) { + v_UE_PS_UsageSetting_Tested := DATA_CENTRIC; + } + else if ((v_UE_PS_UsageSetting_Tested == VOICE_CENTRIC) and (pc_PS_voice_centric == true)) { + v_UE_PS_UsageSetting_Tested := VOICE_CENTRIC; + } + else { + FatalError(__FILE__, __LINE__, "Invalid Usage Settings, please check pc_PS_data_centric, pc_PS_voice_centric and px_UE_PS_UsageSetting_Tested"); // @sic R5s130828 add. change sic@ + } + if (pc_Attach) { // The message is only needed if both options are supported; @sic R5-103815 sic@ @sic R5s120079r1 sic@ + if (v_UE_PS_UsageSetting_Tested == VOICE_CENTRIC) {// @sic R5-106675 sic@ + v_Mode := 3; // PS Mode 1 + } + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CONFIGURE_CEMODE, CNF_REQUIRED, cs_CEMode(int2str(v_Mode)))); // @sic R5-106675 sic@ + } + else { + FatalError(__FILE__, __LINE__, "inconsistent parameter setting"); + } + // The attach mode is configured in the preamble. At the end the UE is switched off properly. + f_UT_SwitchOffUE(p_Port, false, CNF_REQUIRED); // @sic R5s120597r1 sic@ + + } // f_UT_ConfigureEPSAttach + + //---------------------------------------------------------------------------- + /* + * @desc To ask the configure the UTRAN Operation Mode + * @param p_Port + * @param p_UE_OperationMode + * @status + */ + function f_UT_ConfigureUTRANOperationMode(UT_PTC_MTC_PORT p_Port, charstring p_UE_OperationMode) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CONFIGURE_OPERATIONMODE, CNF_REQUIRED, cs_OpMode(p_UE_OperationMode))); + } + + //---------------------------------------------------------------------------- + /* + * @desc To ask the operator disable EPS in the UE + * TTCN does not wait until operation is confirmed before continuing + * because the UE may send a DETACH immediately @sic R5s110694 sic@ + * @param p_Port + * @status APPROVED (LTE_IRAT) + */ + function f_UT_DisableEPS(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(DISABLE_EPS, NO_CNF_REQUIRED)); + } + + //---------------------------------------------------------------------------- + /* + * @desc Objective: To make the operator remove the USIM card + * TTCN waits until operation is confirmed before continuing + * @param p_Port + * @status APPROVED (IMS_IRAT, LTE, LTE_IRAT) + */ + function f_UT_USIM_Remove(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(REMOVE_USIM, CNF_REQUIRED)); + } + + //---------------------------------------------------------------------------- + /* + * @desc Objective: To make the operator insert the USIM card + * TTCN waits until operation is confirmed before continuing + * @param p_Port + * @param p_USIM_ID + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_UT_USIM_Insert(UT_PTC_MTC_PORT p_Port, + template (omit) charstring p_USIM_ID) + { + if (isvalue(p_USIM_ID)) { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(INSERT_USIM, CNF_REQUIRED, cs_InsertUsim(valueof(p_USIM_ID)))); + } else { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(INSERT_USIM, CNF_REQUIRED)); + } + } + + //---------------------------------------------------------------------------- + /* + * @desc Objective: To power off the UE + * TTCN waits until operation is confirmed before continuing + * @param p_Port + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UT_PowerOffUE(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(POWER_OFF, CNF_REQUIRED)); + } + + //---------------------------------------------------------------------------- + /* + * @desc switch on the UE + * @param p_Port + * @param p_USIM_Rmvd + * @param p_CnfRequired (default: NO_CNF_REQUIRED) @sic R5s110498 sic@ + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UT_SwitchOnUE(UT_PTC_MTC_PORT p_Port, + boolean p_USIM_Rmvd, + Ut_CnfReq_Type p_CnfRequired := NO_CNF_REQUIRED) + { + var Ut_Common_Req_Type v_Request; + + if (pc_SwitchOnOff) { // switch on the UE + v_Request := SWITCH_ON; + } else if (p_USIM_Rmvd and pc_USIM_Removal) { // USIM needs to be removed @sic R5s120597r1 sic@ + v_Request := INSERT_USIM; + } else { // power on the UE + v_Request := POWER_ON; + } + fl_UT_ApplyCommand(p_Port, cas_UT_Req(v_Request, p_CnfRequired)); + } // f_UT_SwitchOnUE + + //---------------------------------------------------------------------------- + /* + * @desc switch off the UE + * @param p_Port + * @param p_USIM_Rmvd + * @param p_CnfRequired (default: NO_CNF_REQUIRED) @sic R5s110395 sic@ + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UT_SwitchOffUE(UT_PTC_MTC_PORT p_Port, + boolean p_USIM_Rmvd, + Ut_CnfReq_Type p_CnfRequired := NO_CNF_REQUIRED) + { + if (pc_SwitchOnOff) { // switch off the UE + fl_UT_ApplyCommand(p_Port, cas_UT_Req(SWITCH_OFF, p_CnfRequired)); // @sic R5s110395 sic@ + } else if (p_USIM_Rmvd and pc_USIM_Removal) { // UE doesn't support switch off, but does support SIM removal, so remove it; @sic R5-104083 sic@ @sic R5s120597r1 sic@ + fl_UT_ApplyCommand(p_Port, cas_UT_Req(REMOVE_USIM, CNF_REQUIRED)); + } else { // power off the UE - last resort + fl_UT_ApplyCommand(p_Port, cas_UT_Req(POWER_OFF, CNF_REQUIRED)); + } + } // f_UT_SwitchOffUE + + //---------------------------------------------------------------------------- + /* + * @desc Objective: To ask the operator to check the ETWS/CMAS Warning Indication is displayed + * TTCN waits until operation is confirmed before continuing + * @param p_Port + * @param p_WarningMsg1 + * @param p_WarningMsg2 + * @param p_CMAS (default: false) set to true if need to send a CMAS rather than ETWS message + * @return boolean + * @status APPROVED (LTE) + */ + function f_UT_CheckETWS_CMAS(UT_PTC_MTC_PORT p_Port, + charstring p_WarningMsg1, + charstring p_WarningMsg2, + boolean p_CMAS := false) return boolean + { + // To make the operator check if the ETWS/CMAS warning indication is displayed + var Ut_Common_Req_Type v_Type; // @sic R5s130376 sic@ + var UT_COMMON_CNF v_Cnf; + if (p_CMAS) { // for PWS message check + if(p_WarningMsg1 & p_WarningMsg2 != ""){ // @sic R5s130376 sic@ + v_Type := CHECK_CMAS_INDICATION; + } else { + v_Type := CHECK_CMAS_NO_INDICATION; + } + } else { // for ETWS message check + if(p_WarningMsg1 & p_WarningMsg2 != ""){ // @sic R5s130376 sic@ + v_Type := CHECK_ETWS_INDICATION; + } else { + v_Type := CHECK_ETWS_NO_INDICATION; + } + } + v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(v_Type, CNF_REQUIRED, cs_CheckETWS(p_WarningMsg1, p_WarningMsg2))); // @sic R5-140347 sic@ + return v_Cnf.Result; + } + + //---------------------------------------------------------------------------- + /* + * @desc Objective: To ask the operator to check if the ETWS/CMAS Alert is used + * TTCN waits until operation is confirmed before continuing + * @param p_Port + * @param p_CMAS (default: false) set to true if need to send a CMAS rather than ETWS message + * @return boolean + * @status APPROVED (LTE) + */ + function f_UT_CheckETWS_CMAS_Alert(UT_PTC_MTC_PORT p_Port, + boolean p_CMAS := false) return boolean + { + // To make the operator check if the alert is used + var Ut_Common_Req_Type v_Type := CHECK_ETWS_ALERT; + var UT_COMMON_CNF v_Cnf; + + if (p_CMAS) { + v_Type := CHECK_CMAS_ALERT; + } + v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(v_Type, CNF_REQUIRED)); // @sic R5-140347 sic@ + return v_Cnf.Result; + } + + //---------------------------------------------------------------------------- + /* + * @desc Objective: To ask the operator to check if the ETWS/CMAS Alert is not used + * TTCN waits until operation is confirmed before continuing + * @param p_Port + * @param p_CMAS (default: false) set to true if need to send a CMAS rather than ETWS message + * @return boolean + * @status APPROVED (LTE) + */ + function f_UT_CheckETWS_CMAS_NoAlert(UT_PTC_MTC_PORT p_Port, + boolean p_CMAS := false) return boolean + { + var Ut_Common_Req_Type v_Type := CHECK_ETWS_NO_ALERT; // @sic R5s130537 sic@ + var UT_COMMON_CNF v_Cnf; + + if (p_CMAS) { + v_Type := CHECK_CMAS_NO_ALERT; + } + v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(v_Type, CNF_REQUIRED)); // @sic R5-140347 sic@ + return v_Cnf.Result; + } + + //---------------------------------------------------------------------------- + /* + * @desc Objective: To check the DTCH is through connected + * TTCN waits until operation is confirmed before continuing + * @param p_Port + * @return boolean + * @status + */ + function f_UT_CheckDTCH_ThroughConn(UT_PTC_MTC_PORT p_Port) return boolean + { + var UT_COMMON_CNF v_Cnf; + v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(CHECK_DTCH_THROUGHCONNECTED, CNF_REQUIRED)); // @sic R5-140347 sic@ + return v_Cnf.Result; + } + + //---------------------------------------------------------------------------- + /* + * @desc To convert all TFT parameters into the correct charstring format for the AT command + * @param p_DedicatedId + * @param p_Filter + * @return charstring + * @status APPROVED (LTE) + */ + function fl_GenerateATForTFTPacketFilter(integer p_DedicatedId, + PacketFilter p_Filter) return charstring + { + var charstring v_IPAddress := ""; + var charstring v_ProtIdNextHeader := ""; + var charstring v_LocalPort := ""; + var charstring v_RemotePort := ""; + var charstring v_SecurityIndex := ""; + var charstring v_ToS := ""; + var charstring v_FlowLabel := ""; + var integer v_Direction; + var charstring v_Filterstring := ""; + var PacketFilter v_Filter := p_Filter; + var integer v_LengthOfContents := lengthof(v_Filter.contents); + var integer i; + + v_Filterstring := int2str(p_DedicatedId); + v_Filterstring := v_Filterstring & "," & int2str(hex2int(v_Filter.iei)+1); // identifier @sic R5s100557, R5s130195 Baseline Moving sic@ + v_Direction := bit2int(v_Filter.direction); // @sic R5s130195 Baseline Moving sic@ + v_Filterstring := v_Filterstring & "," & int2str(bit2int(v_Filter.precedence)); // precedence + + for (i := 0; i < v_LengthOfContents; i := i + 1) { + if (ischosen(v_Filter.contents[i].packetFilterComponentValue.ipv4RemoteAddress)) { //IPv4 + v_IPAddress := fl_TFTIPAdd(v_Filter.contents[i].packetFilterComponentValue.ipv4RemoteAddress); + } + else if (ischosen(v_Filter.contents[i].packetFilterComponentValue.ipv6RemoteAddress)) { //IPv6 + v_IPAddress := fl_TFTIPAdd(v_Filter.contents[i].packetFilterComponentValue.ipv6RemoteAddress); + } + else if (ischosen(v_Filter.contents[i].packetFilterComponentValue.protocolIdNextHeader)) { //Protocol id/next header + v_ProtIdNextHeader := fl_TFTProtHeader(v_Filter.contents[i].packetFilterComponentValue.protocolIdNextHeader); + } + else if (ischosen(v_Filter.contents[i].packetFilterComponentValue.singleLocalPort)) { //single local port + v_LocalPort := fl_TFTPort(v_Filter.contents[i].packetFilterComponentValue.singleLocalPort); + } + else if (ischosen(v_Filter.contents[i].packetFilterComponentValue.localPortRange)) { //local port range + v_LocalPort := fl_TFTPort(v_Filter.contents[i].packetFilterComponentValue.localPortRange); + } + else if (ischosen(v_Filter.contents[i].packetFilterComponentValue.singleRemotePort)) { //Single remote port + v_RemotePort := fl_TFTPort(v_Filter.contents[i].packetFilterComponentValue.singleRemotePort); + } + else if (ischosen(v_Filter.contents[i].packetFilterComponentValue.remotePortRange)) { //remote port range + v_RemotePort := fl_TFTPort(v_Filter.contents[i].packetFilterComponentValue.remotePortRange); + } + else if (ischosen(v_Filter.contents[i].packetFilterComponentValue.securityParameterIndex)) { //Security parameter index + v_SecurityIndex := fl_TFTSecurity(v_Filter.contents[i].packetFilterComponentValue.securityParameterIndex); + } + else if (ischosen(v_Filter.contents[i].packetFilterComponentValue.typeOfServiceTrafficClass)) { //Type of Service + v_ToS := fl_TFTToS(v_Filter.contents[i].packetFilterComponentValue.typeOfServiceTrafficClass); + } + else if (ischosen(v_Filter.contents[i].packetFilterComponentValue.flowLabel)) { //Flow Label + v_FlowLabel := fl_TFTFlow(v_Filter.contents[i].packetFilterComponentValue.flowLabel); + } + } + + if (v_IPAddress == "") { + v_Filterstring := v_Filterstring & ","; + } else { + v_Filterstring := v_Filterstring & "," & v_IPAddress; + } + if (v_ProtIdNextHeader == "") { + v_Filterstring := v_Filterstring & ","; + } else { + v_Filterstring := v_Filterstring & "," & v_ProtIdNextHeader; + } + if (v_LocalPort == "") { // @sic R5s100557 sic@ + v_Filterstring := v_Filterstring & ","; + } else { + v_Filterstring := v_Filterstring & "," & v_LocalPort; + } + if (v_RemotePort == "") { + v_Filterstring := v_Filterstring & ","; + } else { + v_Filterstring := v_Filterstring & "," & v_RemotePort; + } + if (v_SecurityIndex == "") { + v_Filterstring := v_Filterstring & ","; + } else { + v_Filterstring := v_Filterstring & "," & v_SecurityIndex; + } + if (v_ToS == "") { + v_Filterstring := v_Filterstring & ","; + } else { + v_Filterstring := v_Filterstring & "," & v_ToS; + } + if (v_FlowLabel == "") { + v_Filterstring := v_Filterstring & ","; + } else { + v_Filterstring := v_Filterstring & "," & v_FlowLabel; + } + if (v_Direction == 1) { // Uplink and downlink are different values in AT cmd + v_Direction := 2; + } else if (v_Direction == 2) { + v_Direction := 1; + } + v_Filterstring := v_Filterstring & "," & int2str(v_Direction); + return v_Filterstring; + } + + //---------------------------------------------------------------------------- + /* + * @desc To convert a TFT parameter into the correct charstring format for the AT command + * @param p_Input + * @return charstring + * @status APPROVED (LTE) + */ + function fl_TFTIPAdd(octetstring p_Input) return charstring + { + var integer v_Length := lengthof(p_Input); + var charstring v_Result:= """"; + var integer i; + + for (i := 0; i < v_Length; i := i + 1) { + v_Result := v_Result & int2str(oct2int(p_Input[i])); + if (i != (v_Length-1)) { + v_Result := v_Result & "."; + } + } + v_Result := v_Result & """"; + return v_Result; + } + + //---------------------------------------------------------------------------- + /* + * @desc To convert a TFT parameter into the correct charstring format for the AT command + * @param p_Input + * @return charstring + * @status APPROVED (LTE) + */ + function fl_TFTProtHeader(octetstring p_Input) return charstring + { + return int2str(oct2int(p_Input)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To convert a TFT parameter into the correct charstring format for the AT command + * @param p_Input + * @return charstring + * @status APPROVED (LTE) + */ + function fl_TFTPort(octetstring p_Input) return charstring + { + var integer v_Length := lengthof(p_Input); + var charstring v_Result := ""; + + v_Result := """"; + + if (v_Length == 4) { + v_Result := v_Result & int2str(oct2int(substr(p_Input, 0, 2))); // @sic R5s100362 sic@ + v_Result := v_Result & "." & int2str(oct2int(substr(p_Input, 2, 2))); + } else { // @sic R5s100362 sic@ + v_Result := v_Result & int2str(oct2int(p_Input)) & "." & int2str(oct2int(p_Input)); // only given one value, so put the same in both + } + + v_Result := v_Result & """"; + return v_Result; + } + + //---------------------------------------------------------------------------- + /* + * @desc To convert a TFT parameter into the correct charstring format for the AT command + * @param p_Input + * @return charstring + * @status APPROVED (LTE) + */ + function fl_TFTSecurity(octetstring p_Input) return charstring + { + return oct2str(p_Input); + } + + //---------------------------------------------------------------------------- + /* + * @desc To convert a TFT parameter into the correct charstring format for the AT command + * @param p_Input + * @return charstring + * @status APPROVED (LTE) + */ + function fl_TFTToS(octetstring p_Input) return charstring + { + var charstring v_Result := ""; + v_Result := int2str(oct2int(substr(p_Input, 0, 1))); + v_Result := v_Result & "." & int2str(oct2int(substr(p_Input, 1, 1))); + return v_Result; + } + + //---------------------------------------------------------------------------- + /* + * @desc To convert a TFT parameter into the correct charstring format for the AT command + * @param p_Input + * @return charstring + * @status APPROVED (LTE) + */ + function fl_TFTFlow(octetstring p_Input) return charstring + { + return hex2str(substr(oct2hex(p_Input), 1, 5)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To ask the operator to dial a CS call + * @param p_Port + * @param p_NumToDial (default value: "01234567890") + * @status APPROVED (LTE, LTE_IRAT, SSNITZ, UTRAN) + */ + function f_UT_RequestCSCall(UT_PTC_MTC_PORT p_Port, + charstring p_NumToDial := "01234567890") + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(REQUEST_CALL, NO_CNF_REQUIRED, cs_DialNumber(p_NumToDial))); + } + + //---------------------------------------------------------------------------- + /* + * @desc To ask the operator to dial an IMS call + * @param p_Port + * @param p_NumToDial (default value: "01234567890") + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_UT_RequestIMSCall(UT_PTC_MTC_PORT p_Port, + charstring p_NumToDial := "01234567890") + { +// fl_UT_ApplyCommand(p_Port, cas_UT_Req(VOICE_CALL_MODE, CNF_REQUIRED, cs_IMSMode)); + fl_UT_ApplyCommand(p_Port, cas_UT_Req(REQUEST_IMS_VOICE_CALL, NO_CNF_REQUIRED, {cs_Ut_Parameter_Uri(p_NumToDial)})); // @sic R5-134290 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc To ask the operator to dial an IMS call + * @param p_Port + * @param p_NumToDial (default value: px_EmergencyCallNumber) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_IRAT) + */ + function f_UT_RequestIMSEmergencyCall(UT_PTC_MTC_PORT p_Port, + charstring p_NumToDial := px_EmergencyCallNumber) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(REQUEST_IMS_VOICE_CALL, NO_CNF_REQUIRED, {cs_Ut_Parameter_Uri(p_NumToDial)})); // @sic R5-134290 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc Initiate a video call + * @param p_Port + * @param p_CalleeUri + * @status APPROVED (IMS) + */ + function f_UT_RequestIMSVideoCall(UT_PTC_MTC_PORT p_Port, + charstring p_CalleeUri) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(INITIATE_VIDEO_CALL, NO_CNF_REQUIRED, {cs_Ut_Parameter_Uri(p_CalleeUri)})); + } + + //---------------------------------------------------------------------------- + /* + * @desc To ask the operator to clear the stored assistance data + * To be used if the UE does not support the RESET command defined in 34.109 + * @param p_Port + * @status + */ + function f_UT_ClearStoredData(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CLEAR_STORED_ASSISTANCE_DATA, CNF_REQUIRED)); + } + + //---------------------------------------------------------------------------- + /* + * @desc Objective: To make the operator check the indicated PLMN + * TTCN waits until operation is confirmed before continuing + * @param p_Port + * @param p_PLMN_ID + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_UT_PLMN_Check(UT_PTC_MTC_PORT p_Port, + charstring p_PLMN_ID) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CHECK_PLMN, CNF_REQUIRED, cs_CheckPlmn(p_PLMN_ID))); + } + + //---------------------------------------------------------------------------- + /* + * @desc To set manual PLMN selection and select PLMNN (i.e. both of the above in 1 function) + * @param p_Port + * @param p_PLMN_ID + * @param p_Cell_AccessTechnology (default value: tsc_ManualPLMN_None) + * only set this if the prose says e.g. 'select PLMN9 (UTRAN)'; options are _GERAN, _UTRAN or _EUTRA + * @param p_Ut_CnfReq_Type (default value: NO_CNF_REQUIRED) + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_UT_ManualPLMN_Select(UT_PTC_MTC_PORT p_Port, + NAS_PlmnId p_PLMN_ID, + integer p_Cell_AccessTechnology := tsc_ManualPLMN_None, // @sic R5-106675 sic@ + Ut_CnfReq_Type p_Ut_CnfReq_Type := NO_CNF_REQUIRED) // @sic R5s110633 sic@ + { /* Objective: To manually select the specified PLMN + * TTCN waits until operation is confirmed before continuing */ + /* @sic R5-106675 sic@ */ + var charstring v_AT := fl_ConvertPLMN(p_PLMN_ID); + + if (p_Cell_AccessTechnology != tsc_ManualPLMN_None) { + v_AT := v_AT & "," & int2str(p_Cell_AccessTechnology); + } + fl_UT_ApplyCommand(p_Port, cas_UT_Req(PLMN_MANUAL, p_Ut_CnfReq_Type, cs_ManualPlmn(v_AT))); // @sic R5s110633 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc To convert the PLMN in NAS format into that required by the AT command + * @param p_PLMN_ID + * @return charstring + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function fl_ConvertPLMN(NAS_PlmnId p_PLMN_ID) return charstring + { /* @sic R5-106675 sic@ */ + var hexstring v_PLMN_Hex := oct2hex(p_PLMN_ID); // Now re-order it for the AT command + var hexstring v_PLMN_ForAT := v_PLMN_Hex[1] & v_PLMN_Hex[0] & v_PLMN_Hex[3] & v_PLMN_Hex[5] & v_PLMN_Hex[4]; + + if (v_PLMN_Hex[2] != 'F'H) { // @sic R5s120576 sic@ + v_PLMN_ForAT := v_PLMN_ForAT & v_PLMN_Hex[2]; + } + return """" & hex2str(v_PLMN_ForAT) & """"; + } + + //---------------------------------------------------------------------------- + /* + * @desc To request manual PLMN selection of a CSG + * @param p_Port + * @param p_PLMN_ID + * @param p_CSG_ID + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_UT_ManualPLMN_CSG(UT_PTC_MTC_PORT p_Port, + NAS_PlmnId p_PLMN_ID, + bitstring p_CSG_ID) + { /* Objective: To ask the operator to manually select the specified CSG cell TTCN waits until operation is confirmed before continuing */ + fl_UT_ApplyCommand(p_Port, cas_UT_Req(SELECT_CSG, NO_CNF_REQUIRED, cs_PlmnCSG(fl_ConvertPLMN(p_PLMN_ID), int2str(bit2int(p_CSG_ID))))); // @sic R5s120298 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc To check CSG id is/is not included in the list + * @param p_Port + * @param p_CSG_ID + * @param p_IncludedInList + * @status APPROVED (LTE) + */ + function f_UT_Check_CSG(UT_PTC_MTC_PORT p_Port, + bitstring p_CSG_ID, + boolean p_IncludedInList) + { /* Objective: To ask the operator to check if the specified CSG cell is (not) included in the list. TTCN waits until operation is confirmed before continuing */ + var charstring v_Included := "FALSE"; + if (p_IncludedInList) { + v_Included := "TRUE"; + } + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CHECK_CSG, NO_CNF_REQUIRED, cs_CheckCSG(int2str(bit2int(p_CSG_ID)), v_Included))); + } + + //---------------------------------------------------------------------------- + /* + * @desc To request automatic PLMN selection + * @param p_Port + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_UT_AutomaticPLMN_Select(UT_PTC_MTC_PORT p_Port) + { /* Objective: To change the UE into automatic mode */ + fl_UT_ApplyCommand(p_Port, cas_UT_Req(PLMN_AUTOMATIC, NO_CNF_REQUIRED)); // @sic R5-106675 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc To request to join MBMS Service + * @param p_Port + * @param p_PLMN_ID + * @param p_Service_ID + * @param p_Interest (allowed values: ON, OFF) + * @param p_MBMS_SAI (default: omit) + * @status APPROVED (LTE_A) + */ + function f_UT_MBMS_SERVICE_Interest(UT_PTC_MTC_PORT p_Port, + template (omit) NAS_PlmnId p_PLMN_ID, + charstring p_Service_ID, + boolean p_Interest, + template (omit) integer p_MBMS_SAI := omit) // @sic R5-135000 sic@ + { /* Objective: To ask the operator to join MBMS service */ + var charstring v_Interest := "ON"; + var charstring v_SAI := ""; + var charstring v_PLMN_ID := ""; + + if (isvalue(p_PLMN_ID)) { + v_PLMN_ID := fl_ConvertPLMN(valueof(p_PLMN_ID)); + } + if (not p_Interest) { + v_Interest := "OFF"; + } + if (isvalue(p_MBMS_SAI)) { + v_SAI := int2str (valueof(p_MBMS_SAI)); + } + + fl_UT_ApplyCommand(p_Port, cas_UT_Req(MBMS_SERVICE_INTEREST, CNF_REQUIRED, cs_MBMSServiceInterest(v_PLMN_ID, p_Service_ID, v_Interest, v_SAI))); // @sic R5-135000, R5-142985 sic@ + } + + /* + * @desc To request to activate MBMS Service + * @param p_Port + * @param p_Service_ID + * @param p_MBMS_SAI (default: omit) + * @param p_Active (allowed values: ON, OFF) + * @status + */ + function f_UT_MBMS_SERVICE_Active(UT_PTC_MTC_PORT p_Port, + charstring p_Service_ID, + boolean p_Active, + template (omit) integer p_MBMS_SAI := omit) // @sic R5-135000 sic@ + { /* Objective: To ask the operator to join MBMS service */ + var charstring v_Active := "ON"; + var charstring v_SAI := ""; + + if (not p_Active) { + v_Active := "OFF"; + } + if (isvalue(p_MBMS_SAI)) { + v_SAI := int2str (valueof(p_MBMS_SAI)); + } + + fl_UT_ApplyCommand(p_Port, cas_UT_Req(MBMS_SERVICE_ACTIVE, CNF_REQUIRED, cs_MBMSServiceActive(p_Service_ID, v_SAI, v_Active))); + } + + /* + * @desc To request that the UE is configured such that MBMS services takes priority over unicast bearer transmissions + * @param p_Port + * @param p_PriorityOverUnicast + * @status + */ + function f_UT_MBMS_Unicast(UT_PTC_MTC_PORT p_Port, + boolean p_PriorityOverUnicast) + { + var charstring v_PriorityOverUnicast := "FALSE"; + + if (p_PriorityOverUnicast) { + v_PriorityOverUnicast := "TRUE"; + } + fl_UT_ApplyCommand(p_Port, cas_UT_Req(MBMS_PRIORITY_OVER_UNICAST, CNF_REQUIRED, cs_MBMSPriority(v_PriorityOverUnicast))); + } + + //---------------------------------------------------------------------------- + /* + * @desc To activate a dedicated LTE EPS bearer + * @param p_Port + * @param p_ActivateOrModify + * @param p_DedicatedId + * @param p_DefaultId + * @param p_QoS + * @param p_Tft + * @param p_Ut_CnfReq_Type (default value: NO_CNF_REQUIRED) + * @status APPROVED (LTE) + */ + function fl_UT_RequestActivateOrModifyDedicatedBearer(UT_PTC_MTC_PORT p_Port, + template (value) Ut_Common_Req_Type p_ActivateOrModify, + integer p_DedicatedId, + integer p_DefaultId, + template (value) EPS_QualityOfService p_QoS, + template (value) TrafficFlowTemplate p_Tft, + Ut_CnfReq_Type p_Ut_CnfReq_Type := NO_CNF_REQUIRED) + { + // @sic R5s100470 change 3 sic@ + var EPS_QualityOfService v_QoS := valueof(p_QoS); // need to do this to then manipulate it in the charstring + var TrafficFlowTemplate v_Tft := valueof(p_Tft); // need to do this to then manipulate it in the charstring + var charstring v_QoSstring := ""; + var integer v_NoOfPacketFilters := bit2int(v_Tft.noOfPktFilter); + var integer i; + + v_QoSstring := int2str(p_DedicatedId); + v_QoSstring := v_QoSstring &","& int2str(bit2int(v_QoS.qci)); + v_QoSstring := v_QoSstring &","& int2str(fl_QoS_MaximumBitRate(v_QoS.guaranteedBitRateDl)); // @sic R5s100557 sic@ + v_QoSstring := v_QoSstring &","& int2str(fl_QoS_MaximumBitRate(v_QoS.guaranteedBitRateUl)); // @sic R5s100557 sic@ + v_QoSstring := v_QoSstring &","& int2str(fl_QoS_MaximumBitRate(v_QoS.maxBitRateDl)); // @sic R5s100557 sic@ + v_QoSstring := v_QoSstring &","& int2str(fl_QoS_MaximumBitRate(v_QoS.maxBitRateUl)); // @sic R5s100557 sic@ + // Extended rates are not dealt with at the moment (all set to 0 in current 36.508) FFS + + fl_UT_ApplyCommand(p_Port, cas_UT_Req(REQUEST_DED_BEARER, CNF_REQUIRED, cs_SecondaryPDP(int2str(p_DedicatedId), int2str(p_DefaultId)))); // @sic R5s110570 sic@ + fl_UT_ApplyCommand(p_Port, cas_UT_Req(DEFINE_EPS_QOS, CNF_REQUIRED, cs_EPSQoS(v_QoSstring))); // @sic R5s110570 sic@ + + if (v_NoOfPacketFilters != 0) { + for (i := 0; i < v_NoOfPacketFilters; i := i + 1) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(DEFINE_TFT, CNF_REQUIRED, cs_TFT(fl_GenerateATForTFTPacketFilter(p_DedicatedId, v_Tft.packetFilterList[i])))); // @sic R5s110570 sic@ + } + } + fl_UT_ApplyCommand(p_Port, cas_UT_Req(p_ActivateOrModify, p_Ut_CnfReq_Type, cs_PDP_Cid(int2str(p_DedicatedId)))); + } + + /* + * @desc To convert the maximum bit rate for the QoS + * @param p_Val + * @return integer + * @status APPROVED (LTE, LTE_IRAT, UTRAN) + */ + function fl_QoS_MaximumBitRate(B8_Type p_Val) return integer + { + var integer v_Val := bit2int(p_Val); + if ((v_Val >= bit2int('00000001'B)) and (v_Val <= bit2int('00111111'B))) { + return v_Val; + } + if ((v_Val >= bit2int('01000000'B)) and (v_Val <= bit2int('01111111'B))) { + return (64 + ((v_Val - 64)*8)); + } + if ((v_Val >= bit2int('10000000'B)) and (v_Val <= bit2int('11111110'B))) { + return (576 + ((v_Val - 128)*64)); + } + if (v_Val == bit2int('11111111'B)) { + return 0; + } + return 0; + } + + /* + * @desc To convert the extended maximum bit rate for the QoS + * @param p_Val + * @return integer + * @status + */ + function fl_QoS_ExtendedMaxBitRate(B8_Type p_Val) return integer + { + var integer v_Val := bit2int(p_Val); + if ((v_Val >= bit2int('00000001'B)) and (v_Val <= bit2int('01001010'B))) { + return (8600 + (v_Val*100)); + } + if ((v_Val >= bit2int('01001011'B)) and (v_Val <= bit2int('10111010'B))) { + return (16000 + ((v_Val - 74)*1000)); + } + if ((v_Val >= bit2int('10111011'B)) and (v_Val <= bit2int('11111010'B))) { + return (128000 + ((v_Val - 186)*2000)); + } + return 0; + } + + /* + * @desc To convert the transfer delay for the QoS + * @param p_Val + * @return integer + * @status APPROVED (LTE_IRAT, UTRAN) + */ + function fl_QoS_TransferDelay(B6_Type p_Val) return integer + { + var integer v_Val := bit2int(p_Val); + if ((v_Val >= bit2int('000001'B)) and (v_Val <= bit2int('001111'B))) { + return (v_Val*10); + } + if ((v_Val >= bit2int('010000'B)) and (v_Val <= bit2int('011111'B))) { + return (200 + ((v_Val - 16)*50)); + } + if ((v_Val >= bit2int('100000'B)) and (v_Val <= bit2int('111110'B))) { + return (1000 + ((v_Val - 32)*100)); + } + return 0; + } + + /* + * @desc To convert the SDU Error Ratio for the QoS + * @param p_Val + * @return charstring + * @status APPROVED (LTE_IRAT, UTRAN) + */ + function fl_QoS_SDUErrorRatio(B4_Type p_Val) return charstring + { + select (p_Val) { + case ('0001'B) { return ("1E2"); } + case ('0010'B) { return ("7E3"); } + case ('0011'B) { return ("1E3"); } + case ('0100'B) { return ("1E4"); } + case ('0101'B) { return ("1E5"); } + case ('0110'B) { return ("1E6"); } + case ('0111'B) { return ("1E1"); } + } + return ""; + } + + /* + * @desc To convert the Residual BER for the QoS + * @param p_Val + * @return charstring + * @status APPROVED (LTE_IRAT, UTRAN) + */ + function fl_QoS_ResidualBER(B4_Type p_Val) return charstring + { + select (p_Val) { + case ('0001'B) { return ("5E2"); } + case ('0010'B) { return ("1E2"); } + case ('0011'B) { return ("5E3"); } + case ('0100'B) { return ("4E3"); } + case ('0101'B) { return ("1E3"); } + case ('0110'B) { return ("1E4"); } + case ('0111'B) { return ("1E5"); } + case ('1000'B) { return ("1E6"); } + case ('1001'B) { return ("6E8"); } + } + return ""; + } + + //---------------------------------------------------------------------------- + /* + * @desc To activate a dedicated LTE EPS bearer + * @param p_Port + * @param p_DedicatedId + * @param p_DefaultId + * @param p_QoS + * @param p_Tft + * @status APPROVED (LTE) + */ + function f_UT_RequestModifyDedicatedBearer(UT_PTC_MTC_PORT p_Port, + integer p_DedicatedId, + integer p_DefaultId, + template (value) EPS_QualityOfService p_QoS, + template (value) TrafficFlowTemplate p_Tft) + { + fl_UT_RequestActivateOrModifyDedicatedBearer(p_Port, MODIFY_BEARER, p_DedicatedId, p_DefaultId, p_QoS, p_Tft); + } + + //---------------------------------------------------------------------------- + /* + * @desc To activate a dedicated LTE EPS bearer + * @param p_Port + * @param p_DedicatedId + * @param p_DefaultId + * @param p_QoS + * @param p_Tft + * @param p_Ut_CnfReq_Type (default value: NO_CNF_REQUIRED) + * @status APPROVED (LTE) + */ + function f_UT_RequestActivateDedicatedBearer(UT_PTC_MTC_PORT p_Port, + integer p_DedicatedId, + integer p_DefaultId, + template (value) EPS_QualityOfService p_QoS, + template (value) TrafficFlowTemplate p_Tft, + Ut_CnfReq_Type p_Ut_CnfReq_Type := NO_CNF_REQUIRED) + { + fl_UT_RequestActivateOrModifyDedicatedBearer(p_Port, ACTIVATE_BEARER, p_DedicatedId, p_DefaultId, p_QoS, p_Tft, p_Ut_CnfReq_Type); + } + + //---------------------------------------------------------------------------- + /* + * @desc To deactivate either an EPS bearer or UTRAN/GERAN PDP context + * @param p_Port + * @param p_DedicatedId + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_UT_DeactivateBearer(UT_PTC_MTC_PORT p_Port, + integer p_DedicatedId) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(DEACTIVATE_BEARER, NO_CNF_REQUIRED, cs_PDP_Cid(int2str(p_DedicatedId)))); + } + //---------------------------------------------------------------------------- + /* + * @desc To create a PDP context on either UTRAN or GERAN + * @param p_Port + * @param p_CId + * @param p_QoSParams + * @param p_APN (default value: "") + * @param p_NSLPI + * @status APPROVED (LTE_IRAT, UTRAN) + */ + function f_UT_ActivatePDPContextUG(UT_PTC_MTC_PORT p_Port, + integer p_CId, + template (value) QualityOfService p_QoSParams, + charstring p_APN := "", + integer p_NSLPI := -1) + { + var QualityOfService v_QoS := valueof(p_QoSParams); // need to do this to then manipulate the string + var charstring v_QoSstring := ""; + var charstring v_PDP_CtxtString := ""; + var integer v_SSDesc := bit2int(v_QoS.sourceStatisticsDescriptor); + var integer v_TrafficClass := bit2int(v_QoS.trafficClass); + var integer v_DelOrder := bit2int(v_QoS.deliveryOrder); + var integer v_DeliveryErrorSDU := bit2int(v_QoS.deliveryErrorSDU); + + // string produced: "p_PDP_Type","p_AccessPointName","p_PDP_Address" - this field is no longer included + if (p_APN != "") { + v_PDP_CtxtString := """" & p_APN & """"; + } + + if (p_NSLPI >= 0) { // @sic R5-140628 sic@ + v_PDP_CtxtString := v_PDP_CtxtString & ",,,,,,,," & int2str (p_NSLPI) ; + } + // @sic C1-141830 sic@ + if (v_SSDesc > 1) { + v_SSDesc := 1; // Only allowed values are 0 or 1 + } + + v_TrafficClass := v_TrafficClass - 1; // in AT command value is one less than in PDP Context + if (v_TrafficClass < 0) { + v_TrafficClass := 0; + } + + select (v_DelOrder) { + case (1) { v_DelOrder := 1; } + case (2) { v_DelOrder := 0; } + case else { v_DelOrder := 2; } + } + + select (v_DeliveryErrorSDU) { + case (1) { v_DeliveryErrorSDU := 2; } + case (2) { v_DeliveryErrorSDU := 1; } + case (3) { v_DeliveryErrorSDU := 0; } + case else { v_DeliveryErrorSDU := 3; } + } + + v_QoSstring := v_QoSstring & int2str(v_TrafficClass); + v_QoSstring := v_QoSstring & "," & int2str(fl_QoS_MaximumBitRate(v_QoS.maxBitRateUL)); + v_QoSstring := v_QoSstring & "," & int2str(fl_QoS_MaximumBitRate(v_QoS.maxBitRateDL)); + v_QoSstring := v_QoSstring & "," & "," & "," & int2str(v_DelOrder); + v_QoSstring := v_QoSstring & "," & int2str(bit2int(v_QoS.maxSduSize)*10); + v_QoSstring := v_QoSstring & ",""" & fl_QoS_SDUErrorRatio(v_QoS.sduErrorRatio)& """"; + v_QoSstring := v_QoSstring & ",""" & fl_QoS_ResidualBER(v_QoS.residualBER)& """"; + v_QoSstring := v_QoSstring & "," & int2str(v_DeliveryErrorSDU); + v_QoSstring := v_QoSstring & "," & int2str(fl_QoS_TransferDelay(v_QoS.transferDelay)); + v_QoSstring := v_QoSstring & "," & int2str(bit2int(v_QoS.trafficHandlingPrio)); + v_QoSstring := v_QoSstring & "," & int2str(v_SSDesc); + v_QoSstring := v_QoSstring & "," & int2str(bit2int(v_QoS.signallingInd)); + + fl_RequestPDPContext(p_Port, p_CId, v_PDP_CtxtString); + fl_UT_ApplyCommand(p_Port, cas_UT_Req(DEFINE_QOS, CNF_REQUIRED, cs_QoS_Profile(int2str(p_CId), v_QoSstring))); // @sic R5s110570 sic@ + fl_UT_ApplyCommand(p_Port, cas_UT_Req(ACTIVATE_BEARER, NO_CNF_REQUIRED, cs_PDP_Cid(int2str(p_CId)))); + } + + //---------------------------------------------------------------------------- + /* + * @desc To configure SIMTC parameters on an existing bearer + * @param p_Port + * @param p_BearerId + * @param p_NSLPI + * @param p_EAB + * @status + */ + function f_UT_ConfigureSIMTCParams(UT_PTC_MTC_PORT p_Port, + integer p_BearerId, + integer p_NSLPI := -1, + integer p_EAB := -1) + { + var charstring v_PDP_CtxtString := int2str(p_BearerId) & ",,,,,,,,,,"; + + // most parameters are left blank - as bearer is already configured, only SIMTC params are included at the end FFS + if (p_NSLPI >= 0) { + v_PDP_CtxtString := v_PDP_CtxtString & int2str(p_NSLPI); + } + if (p_EAB >= 0) { + v_PDP_CtxtString := v_PDP_CtxtString & "," & int2str(p_EAB); + } + + fl_UT_ApplyCommand(p_Port, cas_UT_Req(REQUEST_PDPCONTEXT, CNF_REQUIRED, cs_RequestPDP(v_PDP_CtxtString))); + } + + //---------------------------------------------------------------------------- + /* + * @desc To modify a PDP Context + * @param p_Port + * @param p_PDPContextId + * @status + */ + function f_UT_RequestModifyPDPContext(UT_PTC_MTC_PORT p_Port, + integer p_PDPContextId) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(MODIFY_BEARER, NO_CNF_REQUIRED, cs_PDP_Cid(int2str(p_PDPContextId)))); + } + + //---------------------------------------------------------------------------- + /* + * @desc To request an additional PDN connection - to be associated with an already existing bearer (p_BearerId) + * @param p_Port + * @param p_BearerId - The id of the already existing bearer + * @param p_APN + * @param p_EmergencyBearer (default: false) - set to true if need an additional PDN for an emergency bearer @sic R5-120403 sic@ + * @param p_Ut_CnfReq_Type (default value: NO_CNF_REQUIRED) + * @param p_NSLPI + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_UT_RequestAdditionalPDNConnectivity(UT_PTC_MTC_PORT p_Port, + integer p_BearerId, + charstring p_APN := "", // @sic R5s100466 sic@ + boolean p_EmergencyBearer := false, // @sic R5-120403 sic@ + Ut_CnfReq_Type p_Ut_CnfReq_Type := NO_CNF_REQUIRED, + integer p_NSLPI := -1) // @sic R5s130330 sic@ + { + var charstring v_Cmd := ""; + var charstring v_CommasToReqType := ",,,,,"; + + if (p_APN != "") { + v_Cmd := """" & p_APN & """"; // @sic R5s100466, R5s100538 sic@ + } + if (p_EmergencyBearer) { // @sic R5-120403 sic@ + v_Cmd := v_Cmd & v_CommasToReqType & "1"; + } + if (p_NSLPI >= 0) { // @sic R5-140628 sic@ + if (not p_EmergencyBearer) { + v_Cmd := v_Cmd & v_CommasToReqType & ",,,"; + } + v_Cmd := v_Cmd & int2str(p_NSLPI); + } + // @sic C1-141830 sic@ + + fl_RequestPDPContext(p_Port, p_BearerId, v_Cmd); + fl_UT_ApplyCommand(p_Port, cas_UT_Req(ACTIVATE_BEARER, p_Ut_CnfReq_Type, cs_PDP_Cid(int2str(p_BearerId)))); + } + + //---------------------------------------------------------------------------- + /* + * @desc Used by LTE, UTRAN and GERAN to send the DCONT AT command + * @param p_Port + * @param p_BearerId + * @param p_RestOfCmd + * @status APPROVED (LTE, LTE_A, LTE_IRAT, UTRAN) + */ + function fl_RequestPDPContext(UT_PTC_MTC_PORT p_Port, + integer p_BearerId, + charstring p_RestOfCmd) + { // @sic R5s100466 change 5 sic@ + var charstring v_Cmd := ""; + var charstring v_Type := """IP"""; + + if (pc_IPv6 and (not pc_IPv4)) { + v_Type := """IPV6"""; + } + if (pc_IPv6 and pc_IPv4) { + v_Type := """IPV4V6"""; + } + v_Cmd := v_Cmd & int2str(p_BearerId); + v_Cmd := v_Cmd & "," & v_Type; + + if (p_RestOfCmd != "") { // @sic R5s120002 sic@ + v_Cmd := v_Cmd & "," & p_RestOfCmd; // @sic R5s100520 sic@ + } + fl_UT_ApplyCommand(p_Port, cas_UT_Req(REQUEST_PDPCONTEXT, CNF_REQUIRED, cs_RequestPDP(v_Cmd))); // @sic R5s110570 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc To attach for PS services + * @param p_Port + * @status APPROVED (LTE, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UT_TriggerAttach(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(ATTACH, NO_CNF_REQUIRED)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To detach + * @param p_Port + * @status APPROVED (LTE) + */ + function f_UT_InitiateDetach(UT_PTC_MTC_PORT p_Port) // @sic R5-113807 sic@ + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(DETACH, NO_CNF_REQUIRED)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To detach + * @param p_Port + * @status APPROVED (LTE) + */ + function f_UT_InitiateDetach_NonEPSOnly(UT_PTC_MTC_PORT p_Port) // @sic R5-113807 sic@ + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(DETACH_NON_EPS, NO_CNF_REQUIRED)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To trigger the transmission of a UE Assistance Information messag + * @param p_Port + * @param p_PowerPreference (default: 1 - low power consumption) + * @status + */ + function f_UT_PowerPreferenceIndication(UT_PTC_MTC_PORT p_Port, B1_Type p_PowerPreference := '1'B ) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(POWER_PREFERENCE, NO_CNF_REQUIRED, cs_PowerPreference (int2str(bit2int(p_PowerPreference))))); + } + + //---------------------------------------------------------------------------- + /* + * @desc To Select the SMS message service + * @param p_Port + * @param p_Service + * @return charstring + * @status APPROVED (LTE) + */ + function f_UT_SelectMessageService(UT_PTC_MTC_PORT p_Port, + charstring p_Service) return charstring + { + var UT_COMMON_CNF v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(SELECT_MESSAGE_SERVICE, + CNF_REQUIRED, + cs_MessageService(p_Service))); + return v_Cnf.ResultString; // @sic R5-140347 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc To set the preferred message storage for SMS + * @param p_Port + * @param p_Mem1 + * @param p_Mem2 + * @param p_Mem3 + * @return charstring + * @status APPROVED (LTE) + */ + function f_UT_SetPreferredMessageStorage(UT_PTC_MTC_PORT p_Port, + charstring p_Mem1, + charstring p_Mem2, + charstring p_Mem3) return charstring + { + var UT_COMMON_CNF v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(SET_PREFERRED_STORAGE, + CNF_REQUIRED, + cs_PreferredStorage(p_Mem1, p_Mem2, p_Mem3))); + return v_Cnf.ResultString; // @sic R5-140347 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc to set the message format for SMS + * @param p_Port + * @param p_Mode + * @return charstring + * @status APPROVED (LTE) + */ + function f_UT_SetMessageFormat(UT_PTC_MTC_PORT p_Port, + charstring p_Mode) return charstring + { + var UT_COMMON_CNF v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(MESSAGE_FORMAT, + CNF_REQUIRED, + cs_MessageFormat(p_Mode))); + return v_Cnf.ResultString; // @sic R5-140347 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc To select the character set for SMS + * @param p_Port + * @param p_Chset + * @return charstring + * @status APPROVED (LTE) + */ + function f_UT_SelectCharacterSet(UT_PTC_MTC_PORT p_Port, + charstring p_Chset) return charstring + { + var UT_COMMON_CNF v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(SELECT_CHARACTER_SET, + CNF_REQUIRED, + cs_SelectCharacterSet(p_Chset))); + return v_Cnf.ResultString; // @sic R5-140347 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc To delete the SMS message from storage + * @param p_Port + * @param p_Index + * @param p_Delflag + * @return charstring + * @status APPROVED (LTE) + */ + function f_UT_DeleteMessageFromStorage_DELFLAG(UT_PTC_MTC_PORT p_Port, + integer p_Index, + integer p_Delflag) return charstring + { + var UT_COMMON_CNF v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(DELETE_MESSAGE_WITHFLAG, + CNF_REQUIRED, + cs_DeleteMessage_Withflag(int2str(p_Index), int2str(p_Delflag)))); + return v_Cnf.ResultString; // @sic R5-140347 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc To request the service centre address for SMS + * @param p_Port + * @param p_Sca + * @param p_Tosca + * @return charstring + * @status APPROVED (LTE) + */ + function f_UT_ServiceCentreAddress(UT_PTC_MTC_PORT p_Port, + charstring p_Sca, + integer p_Tosca) return charstring + { + var UT_COMMON_CNF v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(SERVICE_CENTRE_ADDRESS, + CNF_REQUIRED, + cs_ServiceCentreAddress(p_Sca, int2str(p_Tosca)))); + return v_Cnf.ResultString; // @sic R5-140347 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc to write an SMS message to memory + * @param p_Port + * @param p_Da + * @param p_Toda + * @param p_Text + * @return charstring + * @status APPROVED (LTE, UTRAN) + */ + function f_UT_WriteMessageToMemoryText(UT_PTC_MTC_PORT p_Port, + charstring p_Da, + charstring p_Toda, + charstring p_Text) return charstring + { + var UT_COMMON_CNF v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(WRITE_MESSAGE_TOMEMORY_TEXTMODE, + CNF_REQUIRED, + cs_WriteMessageToMemory_Text(p_Da, p_Toda, p_Text))); // @sic R5s110750 sic@ + return v_Cnf.ResultString; // @sic R5-140347 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc to write an SMS message to memory + * @param p_Port + * @param p_Len + * @param p_Pdu + * @return charstring + * @status APPROVED (LTE, UTRAN) + */ + function f_UT_WriteMessageToMemoryPDU(UT_PTC_MTC_PORT p_Port, + charstring p_Len, + charstring p_Pdu) return charstring + { + var UT_COMMON_CNF v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(WRITE_MESSAGE_TOMEMORY_PDUMODE, + CNF_REQUIRED, + cs_WriteMessageToMemory_PDU(p_Len, p_Pdu))); + return v_Cnf.ResultString; // @sic R5-140347 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc To send a stored SMS message + * @param p_Port + * @param p_Index + * @status APPROVED (LTE, UTRAN) + */ + function f_UT_SendStoredOneMessage(UT_PTC_MTC_PORT p_Port, + integer p_Index) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(SEND_STORED_MESSAGE_ONE, + NO_CNF_REQUIRED, // @sic R5s110091 sic@ + cs_SendMessageFromStorage(int2str(p_Index)))); + } + + //---------------------------------------------------------------------------- + /* + * @desc To send a stored 3 stored SMS messages, concatenated + * @param p_Port + * @param p_Index + * @status APPROVED (LTE) + */ + function f_UT_SendStored_3_Messages(UT_PTC_MTC_PORT p_Port, + integer p_Index) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(SEND_3_STORED_MESSAGES, + NO_CNF_REQUIRED, + cs_Send_3_MessageFromStorage(int2str(p_Index), int2str(p_Index + 1), int2str(p_Index + 2)))); + } + + //---------------------------------------------------------------------------- + /* + * @desc To set text mode parameters for SMS + * @param p_Port + * @param p_Fo + * @param p_Vp + * @param p_Pid + * @return charstring + * @status APPROVED (LTE, UTRAN) + */ + function f_UT_SetTextModeParameters(UT_PTC_MTC_PORT p_Port, + integer p_Fo, + integer p_Vp, + integer p_Pid) return charstring + { + var UT_COMMON_CNF v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(SET_TEXTMODE_PARAMETERS, + CNF_REQUIRED, + cs_SetTextModeParameters(int2str(p_Fo), int2str(p_Vp), int2str(p_Pid)))); // @sic R5s100606 sic@ + return v_Cnf.ResultString; // @sic R5-140347 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc To check the SMS message displayed + * @param p_Port + * @param p_Length + * @param p_Msg + * @return boolean + * @status APPROVED (LTE) + */ + function f_UT_ChkMsgDisplayed(UT_PTC_MTC_PORT p_Port, + integer p_Length, + charstring p_Msg) return boolean + { + // To make the operator check an MT Short Message received + var UT_COMMON_CNF v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(CHECK_MESSAGE_DISPLAYED, + CNF_REQUIRED, + cs_ChkMsgDisplayed(int2str(p_Length), p_Msg))); + + return v_Cnf.Result; + } + + //---------------------------------------------------------------------------- + /* + * @desc To check the UE displays the string provided (number/name) + * @param p_Port + * @param p_ToDisplay + * @return boolean + * @status APPROVED (SSNITZ) + */ + function f_UT_ChkCallDisplayed(UT_PTC_MTC_PORT p_Port, + charstring p_ToDisplay) return boolean + { // To make the operator check the number/name of the call is displayed + + var UT_COMMON_CNF v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(CHECK_CALL_DISPLAY, + CNF_REQUIRED, + cs_ChkCallDisplayed(p_ToDisplay))); + + return v_Cnf.Result; + } + + //---------------------------------------------------------------------------- + /* + * @desc To check the UE displays the string provided + * @param p_Port + * @param p_ToDisplay + * @return boolean + * @status + */ + function f_UT_ChkResponseDisplayed(UT_PTC_MTC_PORT p_Port, + charstring p_ToDisplay) return boolean + { + // To make the operator check the response displayed by the SS + var UT_COMMON_CNF v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(CHECK_RESPONSE_DISPLAY, + CNF_REQUIRED, + cs_ChkCallDisplayed(p_ToDisplay))); + + return v_Cnf.Result; + } + + //---------------------------------------------------------------------------- + /* + * @desc To check the UE provides the correct user indication + * @param p_Port + * @param p_SuppService + * @param p_ToDisplay + * @return boolean + * @status + */ + function f_UT_ChkSuppServiceUserIndication(UT_PTC_MTC_PORT p_Port, + charstring p_SuppService, + charstring p_ToDisplay := "") return boolean + { + // To make the operator check the response displayed by the SS + var UT_COMMON_CNF v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(CHECK_SS_USER_IND, + CNF_REQUIRED, + cs_Chk_SSUserInd(p_SuppService, p_ToDisplay))); + + return v_Cnf.Result; + } + + //---------------------------------------------------------------------------- + /* + * @desc To request the current time - returned in the format "yy/MM/dd,hh:mm:ss?zz", + * where characters indicate year (two last digits), month, day, hour, minutes, seconds and time zone + * @param p_Port + * @return charstring + * @status APPROVED (LTE) + */ + function f_UT_ChkTimeZone(UT_PTC_MTC_PORT p_Port) return charstring + { + var UT_COMMON_CNF v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(CHECK_CLOCK, CNF_REQUIRED)); + return v_Cnf.ResultString; // @sic R5-140347 sic@ + } + + //---------------------------------------------------------------------------- + + type enumerated UT_OPERATOR_FORMAT { LONG_NAME, SHORT_NAME, NUMERIC_ONLY}; /* @status APPROVED (LTE) */ + + /* + * @desc To request the name of the operator currently camped on + * @param p_Port + * @param p_Format - Use the enumerated type defined just above to select the UE to return the operator name in long short or numeric only format + * @return charstring + * @status APPROVED (LTE) + */ + function f_UT_ChkOperatorName(UT_PTC_MTC_PORT p_Port, + UT_OPERATOR_FORMAT p_Format) return charstring + { + var UT_COMMON_CNF v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(CHECK_OPERATOR_NAME, + CNF_REQUIRED, + cs_OperatorFormat(int2str(enum2int(p_Format))))); // @sic R5s110439 sic@ + return v_Cnf.ResultString; // @sic R5-140347 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc To request the operator to check that the UE displays the correct NITZ information: Universal Time + * @param p_Port + * @param p_NITZ_Year + * @param p_NITZ_Month + * @param p_NITZ_Day + * @param p_NITZ_Hour + * @param p_NITZ_Minutes + * @param p_NITZ_Seconds + * @param p_NITZ_TimeZone + * @status APPROVED (LTE) + */ + function f_UT_MMI_CheckNITZ_UniversalTime(UT_PTC_MTC_PORT p_Port, + charstring p_NITZ_Year, + charstring p_NITZ_Month, + charstring p_NITZ_Day, + charstring p_NITZ_Hour, + charstring p_NITZ_Minutes, + charstring p_NITZ_Seconds, + charstring p_NITZ_TimeZone) + { + var template (value) Ut_ParameterList_Type v_ParameterList; + v_ParameterList[0] := cs_Ut_Parameter_NITZ_Year(p_NITZ_Year); + v_ParameterList[1] := cs_Ut_Parameter_NITZ_Month(p_NITZ_Month); + v_ParameterList[2] := cs_Ut_Parameter_NITZ_Day(p_NITZ_Day); + v_ParameterList[3] := cs_Ut_Parameter_NITZ_Hour(p_NITZ_Hour); + v_ParameterList[4] := cs_Ut_Parameter_NITZ_Minutes(p_NITZ_Minutes); + v_ParameterList[5] := cs_Ut_Parameter_NITZ_Seconds(p_NITZ_Seconds); + v_ParameterList[6] := cs_Ut_Parameter_NITZ_TimeZone(p_NITZ_TimeZone); + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CHECK_NITZ_UT, CNF_REQUIRED, v_ParameterList)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To request the operator to check that the UE displays the correct NITZ information: Local Time and Timezone + * @param p_Port + * @param p_NITZ_LocalTimeZone + * @status APPROVED (LTE) + */ + function f_UT_MMI_CheckNITZ_LocalTimeAndTimeZone(UT_PTC_MTC_PORT p_Port, + charstring p_NITZ_LocalTimeZone) + { + var template (value) Ut_ParameterList_Type v_ParameterList; + v_ParameterList[0] := cs_Ut_Parameter_NITZ_LocalTimeZone(p_NITZ_LocalTimeZone); + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CHECK_NITZ_LTZ, CNF_REQUIRED, v_ParameterList)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To request the operator to check that the UE displays the correct NITZ information: Local Time and Timezone + * @param p_Port + * @status + */ + function f_UT_MMI_CheckNITZ_DaylightSavingTime(UT_PTC_MTC_PORT p_Port, + charstring p_NITZ_DaylightSavingTime) + { + var template (value) Ut_ParameterList_Type v_ParameterList; + v_ParameterList[0] := cs_Ut_Parameter_NITZ_DaylightSavingTime(p_NITZ_DaylightSavingTime); + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CHECK_NITZ_DST, CNF_REQUIRED, v_ParameterList)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To request the operator to check that the UE displays the correct NITZ information: Full Network Name + * @param p_Port + * @param p_NITZ_FullNetworkName + * @status APPROVED (LTE) + */ + function f_UT_MMI_CheckNITZ_FullNetworkName(UT_PTC_MTC_PORT p_Port, + charstring p_NITZ_FullNetworkName) + { + var template (value) Ut_ParameterList_Type v_ParameterList; + v_ParameterList[0] := cs_Ut_Parameter_NITZ_FullNetworkName(p_NITZ_FullNetworkName); + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CHECK_NITZ_FULL_NETWORK_NAME, CNF_REQUIRED, v_ParameterList)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To request the operator to check that the UE displays the correct NITZ information: Short Network Name + * @param p_Port + * @param p_NITZ_ShortNetworkName + * @status APPROVED (LTE) + */ + function f_UT_MMI_CheckNITZ_ShortNetworkName(UT_PTC_MTC_PORT p_Port, + charstring p_NITZ_ShortNetworkName) + { + var template (value) Ut_ParameterList_Type v_ParameterList; + v_ParameterList[0] := cs_Ut_Parameter_NITZ_ShortNetworkName(p_NITZ_ShortNetworkName); + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CHECK_NITZ_SHORT_NETWORK_NAME, CNF_REQUIRED, v_ParameterList)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To answer a call + * @param p_Port + * @status APPROVED (IMS, LTE, LTE_A, LTE_IRAT) + */ + function f_UT_AnswerCall(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(ANSWER_CALL, NO_CNF_REQUIRED)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To hang up a call + * @param p_Port + * @status + */ + function f_UT_HangupCall(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(RELEASE_CALL, NO_CNF_REQUIRED)); + } + + /* + * @desc To hang up an IMS call + * @param p_Port + * @param p_CallId (default value: 1) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A) + */ + function f_UT_HangupIMSCall(UT_PTC_MTC_PORT p_Port, + integer p_CallId := 1) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(RELEASE_IMS_CALL, NO_CNF_REQUIRED, cs_CallIdNumber(int2str (p_CallId)))); + } + + function f_UT_IMS_AcceptText(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(ACCEPT_MTSI_TEXT, NO_CNF_REQUIRED)); + } + + function f_UT_IMS_ActivateMWI(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(ACTIVATE_MESSAGE_WAIT_INDICATION, NO_CNF_REQUIRED)); + } + + /* + * @desc trigger UE to send refresh USIM parameters + * @param p_Port + * @status + */ + function f_UT_IMS_Refresh(UT_PTC_MTC_PORT p_Port, + charstring p_HomeDomainName, + charstring p_PrivateUserIdentity, + charstring p_PublicUserIdentity) + { + var template (value) Ut_ParameterList_Type v_ParameterList; + v_ParameterList[0] := cs_Ut_Parameter_HomeDomain(p_HomeDomainName); + v_ParameterList[1] := cs_Ut_Parameter_PrivateUserId(p_PrivateUserIdentity); + v_ParameterList[2] := cs_Ut_Parameter_PublicUserId(p_PublicUserIdentity); + fl_UT_ApplyCommand(p_Port, cas_UT_Req(REFRESH, CNF_REQUIRED, v_ParameterList)); + } + + /* + * @desc trigger UE to send short message + * @param p_Port + * @status APPROVED (IMS) + */ + function f_UT_IMS_TriggerSMS(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(TRIGGER_SMS, NO_CNF_REQUIRED)); + } + + function f_UT_IMS_Trigger2ndIMPU(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(TRIGGER_2ND_IMPU, NO_CNF_REQUIRED)); + } + + function f_UT_IMS_Trigger3rdIMPU(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(TRIGGER_3RD_IMPU, NO_CNF_REQUIRED)); + } + + /* + * @desc Remove a video call + * @param p_Port + * @param p_CalleeUri + */ + function f_UT_IMS_RemoveVideoCall(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(REMOVE_VIDEO_CALL, NO_CNF_REQUIRED)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To trigger the UE to send data uplink on the GERAN GPRS Sapi specified + * @param p_Port + * @param p_Data - the amount of uplink data to send + * @param p_Sapi = the GPRS SAPI to send the data on + * @status APPROVED (LTE_IRAT) + */ + function f_UT_GeranUplinkData(UT_PTC_MTC_PORT p_Port, + charstring p_Data, + charstring p_Sapi) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(GERAN_UPLINK_DATA, NO_CNF_REQUIRED, cs_UplinkData(p_Data, p_Sapi))); + } + + //---------------------------------------------------------------------------- + /* + * @desc To request the operator to configure UE to use SMS Only service for SIMTC + * @param p_Port + * @status + */ + function f_UT_MMI_ConfigureSMSOnly(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CONFIGURE_SMS_ONLY, CNF_REQUIRED, omit)); + } + //---------------------------------------------------------------------------- + type enumerated MOLR_Type {ASSISTED_GPS, ASSISTED_GANSS, ASSISTED_GPS_GANSS, POSITION_ESTIMATE} + /* + * @desc To request the operator to trigger MO-LR for position estimate or assistance data + * @param p_Port + * @param p_TypeOfMolr + * @status + */ + + function f_UT_InitMOLR(UT_PTC_MTC_PORT p_Port, + MOLR_Type p_TypeOfMolr) + { + var charstring v_Method; + select (p_TypeOfMolr) { + case (ASSISTED_GPS) { + v_Method := "1"; + } + case (ASSISTED_GANSS) { + v_Method := "2"; + } + case (ASSISTED_GPS_GANSS) { + v_Method := "3"; + } + case (POSITION_ESTIMATE) { + v_Method := "4"; + } + } + fl_UT_ApplyCommand(p_Port, cas_UT_Req(TRIGGER_MOLR, NO_CNF_REQUIRED, cs_TriggerMolr(v_Method))); + } + + //---------------------------------------------------------------------------- + /* @desc To either allow or deny the previously received Location Request + * @param p_Port + * @param p_HandleId + * @param p_Allow + * @status APPROVED (POS) + */ + function f_UT_AT_AnswerLocationRequest(UT_PTC_MTC_PORT p_Port, + integer p_HandleId, + boolean p_Allow) + { + var charstring v_Permission; + + if (p_Allow) { + v_Permission := "0"; + } else { + v_Permission := "1"; + } + fl_UT_ApplyCommand(p_Port, cas_UT_Req(LOCATION_ANSWER, NO_CNF_REQUIRED, cs_LocationAnswer(v_Permission, int2str(p_HandleId)))); + } + + //---------------------------------------------------------------------------- + /* + * @desc To subscribe to AT response location request notifications. + * To be called at the beginning of appropriate positioning test case bodies + * @param p_Port + * @param p_Enable (default value: true) + * @status APPROVED (POS) + */ + function f_UT_AT_SubscribeLocationRequestNotifications(UT_PTC_MTC_PORT p_Port, + boolean p_Enable := true) + { + var template (value) Ut_ParameterList_Type v_Enable := cs_IntegerString ("3"); // enable everything + + if (not p_Enable) { + v_Enable := cs_IntegerString ("0"); + } + fl_UT_ApplyCommand(p_Port, cas_UT_Req(LOCATION_SUBSCRIBE, MULTIPLE_CNF, v_Enable)); + } + + //---------------------------------------------------------------------------- + + type enumerated LOCATION_REQUEST_Type { LOCATION_NOTIFICATION, LOCATION_REQ_ALLOWED, LOCATION_REQ_FORBIDDEN }; /* @status APPROVED (POS) */ + + /* + * @desc To check the UE displays the correct notification + * @param p_Port + * @param p_LR_Type + * @return integer + * @status APPROVED (POS) + */ + function f_UT_AT_NotifyLocationRequest(UT_PTC_MTC_PORT p_Port, + LOCATION_REQUEST_Type p_LR_Type) return integer + { + var UT_COMMON_CNF v_Cnf; + var integer v_HandleId := -1; // value of -1 means location request notification request received, but of wrong type, so test case should fail + var charstring v_NotificationType := ""; + var charstring v_HandleChar := ""; + + // v_Cnf := fl_UT_RetCnf(p_Port); + // Although no AT command is sent at this time, need to provide a dummy MMI prompt for when AT cmd not supported + v_Cnf := fl_UT_ApplyCommandRetCnf (p_Port, cas_UT_Req(LOCATION_MULTIPLE, CNF_REQUIRED)); // @sic R5s140777 sic@ + v_HandleChar := regexp(v_Cnf.ResultString, "*CMTLR: (*),", 0); + v_NotificationType := regexp(v_Cnf.ResultString, "*CMTLR: [0-9]+,(*)", 0); + + if (enum2int(p_LR_Type) == str2int(v_NotificationType)) { + v_HandleId := str2int(v_HandleChar); + } + return v_HandleId; + } + + //---------------------------------------------------------------------------- + /* + * @desc To request the operator to provide location information to the UE + * @param p_Port + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A) + */ + function f_UT_MMI_ProvideLocationInfoToUE(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(LOCATION_INFO, CNF_REQUIRED)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To subscribe to AT response time zone reporting + * @param p_Port + * @param p_Msg + * @status + */ + function f_UT_AT_SubscribeTimeZoneReporting(UT_PTC_MTC_PORT p_Port, boolean p_Enable := true) + { + var template (value) Ut_ParameterList_Type v_Enable := cs_IntegerString ("2"); // enable everything + + if (not p_Enable) { + v_Enable := cs_IntegerString ("0"); + } + fl_UT_ApplyCommand(p_Port, cas_UT_Req(TIMEZONE_SUBSCRIBE, MULTIPLE_CNF, v_Enable)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To receive a timezone report + * @param p_Port + * @return charstring + * @status APPROVED (LTE) + */ + function f_UT_AT_TimezoneReport(UT_PTC_MTC_PORT p_Port) return charstring + { + var UT_COMMON_CNF v_Cnf; + + // v_Cnf := fl_UT_RetCnf(p_Port); + // Although no AT command is sent at this time, need to provide a dummy MMI prompt for when AT cmd not supported + v_Cnf := fl_UT_ApplyCommandRetCnf (p_Port, cas_UT_Req(TIMEZONE_MULTIPLE, CNF_REQUIRED)); // @sic R5s140777 sic@ + return v_Cnf.ResultString; + } + + //---------------------------------------------------------------------------- + /* + * @desc To get the existing emergency numbers already in the UE + * @param p_Port + * @return EmergencyNumList + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_UT_GetEmergencyNumbers(UT_PTC_MTC_PORT p_Port) return EmergencyNumList + { + var charstring v_Num; + var charstring v_Answer; + var EmergencyNumList v_ExistingNums; + var integer i := 0; + var UT_COMMON_CNF v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(GET_EMERGENCY_NUMS_1, CNF_REQUIRED)); + + v_ExistingNums[i] := 'F'H; // Just to set a default value + + v_Cnf := fl_UT_ApplyCommandRetCnf(p_Port, cas_UT_Req(GET_EMERGENCY_NUMS_2, CNF_REQUIRED)); + v_Answer := v_Cnf.ResultString; // @sic R5-140347 sic@ + + do { + v_Answer := regexp(v_Answer, "*[+]CEN2:(*)", 0); + if (v_Answer != "") { // Another number + v_Num := regexp(v_Answer, "*[+]CEN2: [0-9]+,""[0-9]+""(*)", 0); + v_ExistingNums[i] := str2hex(v_Num); + i := i + 1; + } + } while (v_Answer != ""); + + return v_ExistingNums; + } + + //---------------------------------------------------------------------------- + /* + * @desc To trigger an HRPD PDN Connection + * @param p_Port + * @status APPROVED (LTE_IRAT) + */ + function f_UT_Trigger_HRPD_PDN_Connection(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(HRPD_PDN_CONNECTION, NO_CNF_REQUIRED)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To trigger User Reselection + * @param p_Port + * @status APPROVED (LTE) + */ + function f_UT_TriggerUserReselection(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(TRIGGER_USER_RESELECTION, NO_CNF_REQUIRED)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To trigger non call related SS + * @param p_Port + * @status APPROVED (UTRAN) + */ + function f_UT_RequestNonCallRelatedSS(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(REQUEST_NON_CALL_RELATED_SS, NO_CNF_REQUIRED)); + } + + //---------------------------------------------------------------------------- + /* + * @desc send coordination message to activate/deactivate supplementary service + * @param p_Port + * @param p_Activate + * @param p_PublicUserIdentity + * @param p_SupplementaryService + * @status APPROVED (IMS) + */ + function f_UT_IMS_ActivateDeactivateSupplementaryService(UT_PTC_MTC_PORT p_Port, + boolean p_Activate, + charstring p_PublicUserIdentity, + SS_Type p_SupplementaryService) + { + var template (value) Ut_ParameterList_Type v_ParameterList; + var Ut_Common_Req_Type v_Command := SUPPLEMENTARY_SERVICE; + + if (p_Activate) { + v_ParameterList[1] := cs_Ut_Parameter_SS_Mode(tsc_UT_SS_ACTIVATE); + } else { + v_ParameterList[1] := cs_Ut_Parameter_SS_Mode(tsc_UT_SS_DEACTIVATE); + } + v_ParameterList[2] := cs_Ut_Parameter_Uri(p_PublicUserIdentity); + v_ParameterList[0] := cs_Ut_Parameter_SupplementaryService(fl_Convert_SS_Type (p_SupplementaryService)); + fl_UT_ApplyCommand(p_Port, cas_UT_Req(v_Command, NO_CNF_REQUIRED, v_ParameterList)); + } + + type enumerated SS_Type { SS_CLIP, SS_CLIR, SS_COLP, SS_TIR, SS_CNAP, SS_CALL_WAITING, SS_BAIC, SS_BAIC_ANONYMOUS, SS_BAIC_EXCEPT_SPECIFIC_USER, + SS_BIC_ROAM, SS_BAOC, SS_BOIC, SS_BOIC_EXHC, SS_ALL_BARRING_AB, SS_ALL_OUTGOING_BARRING_AG, SS_ALL_INCOMING_BARRING_AC, SS_BARRING_IN_AND_OUT_ROAM, + SS_CFU, SS_CFNRy, SS_CFB, SS_CFNL, SS_CFNRc, SS_CF_ALL, SS_CF_ALL_CONDITIONAL, SS_CD, SS_CDIVN, SS_USSD }; /* @status APPROVED (IMS) */ + + type enumerated SS_Mode_Type {DEACTIVATE_MODE, ACTIVATE_MODE, QUERY_MODE, REGISTER_MODE, DELETE_MODE}; /* @status APPROVED (SSNITZ) */ + + type enumerated SS_SERVICE_TYPE {SS_ALLSERVICES, SS_SPEECH, SS_SYNC} // There are others, but as not yet added as all UTRAN SS should only be relevant for speech + + /* + * @desc Converts the supplementary service service enum to a charstring + * @param p_Service + * @return charstring + * @status + */ + function fl_Convert_SS_Service (SS_SERVICE_TYPE p_Service) return charstring + { + var charstring v_Service := "7"; + select (p_Service) { + case (SS_SPEECH) { + v_Service := "1"; + } + case (SS_SYNC) { + v_Service := "17"; + } + } + return v_Service; + } + + /* + * @desc Converts the supplementary service mode enum to a charstring + * @param p_Mode + * @return charstring + * @status APPROVED (SSNITZ) + */ + function fl_Convert_SS_Mode(SS_Mode_Type p_Mode) return charstring + { + var charstring v_Mode := ""; + select (p_Mode) { + case (DEACTIVATE_MODE) { + v_Mode := tsc_UT_SS_DEACTIVATE; + } case (ACTIVATE_MODE) { + v_Mode := tsc_UT_SS_ACTIVATE; + } case (REGISTER_MODE) { + v_Mode := tsc_UT_SS_REGISTER; + } case (QUERY_MODE) { + v_Mode := tsc_UT_SS_QUERY; + } case (DELETE_MODE) { + v_Mode := tsc_UT_SS_DELETE + } + } + return v_Mode; + } + + /* + * @desc Converts the supplementary service type enum to a charstring + * @param p_SS_Type + * @return charstring + * @status APPROVED (IMS) + */ + function fl_Convert_SS_Type (SS_Type p_SS_Type) return charstring + { + var charstring v_Type := ""; + select (p_SS_Type) { + case (SS_CLIP) { + v_Type := tsc_UT_SS_CLIP; + } case (SS_CLIR) { + v_Type := tsc_UT_SS_CLIR; + } case (SS_COLP) { + v_Type := tsc_UT_SS_COLP; + } case (SS_TIR) { + v_Type := tsc_UT_SS_TERMINATING_IDENTIFICATION_RESTRICTION; + } case (SS_CNAP) { + v_Type := tsc_UT_SS_CNAP; + } case (SS_CALL_WAITING) { + v_Type := tsc_UT_SS_CALL_WAITING; + } case (SS_BAIC) { + v_Type := tsc_UT_SS_INCOMING_COMMUNICATION_BARRING; + } case (SS_BAIC_ANONYMOUS) { + v_Type := tsc_UT_SS_INCOMING_COMMUNICATION_BARRING_ANONYMOUS; + } case (SS_BAIC_EXCEPT_SPECIFIC_USER) { + v_Type := tsc_UT_SS_INCOMING_COMMUNICATION_BARRING_EXCEPT_SPECIFIC_USER; + } case (SS_BIC_ROAM) { + v_Type := tsc_UT_SS_INCOMING_COMMUNICATION_BARRING_ROAMING; + } case (SS_BAOC) { + v_Type := tsc_UT_SS_OUTGOING_COMMUNICATION_BARRING; + } case (SS_BOIC) { + v_Type := tsc_UT_SS_OUTGOING_INTERNATIONAL_BARRING; + } case (SS_BOIC_EXHC) { + v_Type := tsc_UT_SS_OUTGOING_INTERNATIONAL_EX_HC_BARRING; + } case (SS_ALL_BARRING_AB) { + v_Type := tsc_UT_SS_ALL_BARRING_SERVICES_AB; + } case (SS_ALL_OUTGOING_BARRING_AG) { + v_Type := tsc_UT_SS_ALL_OUTGOING_BARRING_SERVICES_AG; + } case (SS_ALL_INCOMING_BARRING_AC) { + v_Type := tsc_UT_SS_ALL_INCOMING_BARRING_SERVICES_AC; + } case (SS_BARRING_IN_AND_OUT_ROAM) { + v_Type := tsc_UT_SS_COMMUNICATION_BARRING_WHILE_ROAMING; + } case (SS_CFU) { + v_Type := tsc_UT_SS_CALL_FORWARDING_UNCONDITIONAL; + } case (SS_CFNRy) { + v_Type := tsc_UT_SS_CALL_FORWARDING_NO_REPLY; + } case (SS_CFB) { + v_Type := tsc_UT_SS_CALL_FORWARDING_BUSY; + } case (SS_CFNL) { + v_Type := tsc_UT_SS_CALL_FORWARDING_NOT_LOGGED_IN; + } case (SS_CFNRc) { + v_Type := tsc_UT_SS_CALL_FORWARDING_NOT_REACHABLE; + } case (SS_CF_ALL) { + v_Type := tsc_UT_SS_CALL_FORWARDING_ALL; + } case (SS_CF_ALL_CONDITIONAL) { + v_Type := tsc_UT_SS_CALL_FORWARDING_ALL_CONDITIONAL; + } case (SS_CD) { + v_Type := tsc_UT_SS_CALL_FORWARDING_DEFLECTION; + } case (SS_CDIVN) { + v_Type := tsc_UT_SS_CALL_FORWARDING_DIVERSION_NOTIFICATION; + } case (SS_USSD) { + v_Type := tsc_UT_SS_USSD; + } + } + return v_Type; + } + + /* + * @desc send coordination message to activate/deactivate supplementary service CLIR + * @param p_Port + * @param p_Mode + * @status APPROVED (SSNITZ) + */ + function f_UT_SupplementaryService_CLIR(UT_PTC_MTC_PORT p_Port, + SS_Mode_Type p_Mode) + { + var template (value) Ut_ParameterList_Type v_ParameterList; + var Ut_Common_Req_Type v_Command := SUPPLEMENTARY_SERVICE; + + v_ParameterList[1] := cs_Ut_Parameter_SS_Mode(fl_Convert_SS_Mode(p_Mode)); + v_ParameterList[0] := cs_Ut_Parameter_SupplementaryService(tsc_UT_SS_CLIR); + fl_UT_ApplyCommand(p_Port, cas_UT_Req(v_Command, NO_CNF_REQUIRED, v_ParameterList)); + } + + /* + * @desc send coordination message to activate/deactivate supplementary service CNAP + * @param p_Port + * @param p_Mode + * @status + */ + function f_UT_SupplementaryService_CNAP(UT_PTC_MTC_PORT p_Port, + SS_Mode_Type p_Mode) + { + var template (value) Ut_ParameterList_Type v_ParameterList; + var Ut_Common_Req_Type v_Command := SUPPLEMENTARY_SERVICE; + + v_ParameterList[1] := cs_Ut_Parameter_SS_Mode(fl_Convert_SS_Mode(p_Mode)); + v_ParameterList[0] := cs_Ut_Parameter_SupplementaryService(tsc_UT_SS_CNAP); + fl_UT_ApplyCommand(p_Port, cas_UT_Req(v_Command, NO_CNF_REQUIRED, v_ParameterList)); + } + + /* + * @desc send coordination message to activate/deactivate supplementary service CF + * @param p_Port + * @param p_Mode + * @param p_CallForwardType + * @param p_Number + * @param p_Time (used for CFNRy, default value: omit) + * @status + */ + function f_UT_SupplementaryService_CallForward(UT_PTC_MTC_PORT p_Port, + SS_Mode_Type p_Mode, + SS_Type p_CallForwardType, + charstring p_Number, + template (omit) charstring p_Time := omit, + template (omit) SS_SERVICE_TYPE p_Service := omit) + { + var template (value) Ut_ParameterList_Type v_ParameterList; + var Ut_Common_Req_Type v_Command := SUPPLEMENTARY_SERVICE; + var integer i:= 3; + + v_ParameterList[0] := cs_Ut_Parameter_SupplementaryService(fl_Convert_SS_Type(p_CallForwardType)); + v_ParameterList[1] := cs_Ut_Parameter_SS_Mode(fl_Convert_SS_Mode(p_Mode)); + v_ParameterList[2] := cs_Ut_Parameter_Number(p_Number); + if (isvalue(p_Service)) { + v_ParameterList[i] := cs_Ut_Parameter_Common ( "Service", fl_Convert_SS_Service (valueof(p_Service))); + i := i+1; + } + if (isvalue(p_Time)) { + v_ParameterList[i] := cs_Ut_Parameter_SupplementaryServiceTime(valueof(p_Time)); + } + fl_UT_ApplyCommand(p_Port, cas_UT_Req(v_Command, NO_CNF_REQUIRED, v_ParameterList)); + } + + function f_UT_SupplementaryService_CallWaiting(UT_PTC_MTC_PORT p_Port, + SS_Mode_Type p_Mode, + SS_SERVICE_TYPE p_Service := SS_ALLSERVICES) + { + var template (value) Ut_ParameterList_Type v_ParameterList; + var Ut_Common_Req_Type v_Command := SUPPLEMENTARY_SERVICE; + + v_ParameterList[2] := cs_Ut_Parameter_Common ( "Service", fl_Convert_SS_Service (p_Service)); + v_ParameterList[1] := cs_Ut_Parameter_SS_Mode(fl_Convert_SS_Mode(p_Mode)); + v_ParameterList[0] := cs_Ut_Parameter_SupplementaryService(tsc_UT_SS_CALL_WAITING); + fl_UT_ApplyCommand(p_Port, cas_UT_Req(v_Command, NO_CNF_REQUIRED, v_ParameterList)); + } + + function f_UT_SupplementaryService_CallBarring(UT_PTC_MTC_PORT p_Port, + SS_Mode_Type p_Mode, + SS_Type p_CallBarringType, + template (omit) charstring p_NewPassword := omit, + template (omit) SS_SERVICE_TYPE p_Service := omit) + { + var template (value) Ut_ParameterList_Type v_ParameterList; + var Ut_Common_Req_Type v_Command := SUPPLEMENTARY_SERVICE; + var integer i := 2; + + v_ParameterList[0] := cs_Ut_Parameter_SupplementaryService(fl_Convert_SS_Type(p_CallBarringType)); + v_ParameterList[1] := cs_Ut_Parameter_SS_Mode(fl_Convert_SS_Mode(p_Mode)); + if (isvalue(p_NewPassword)) { + v_ParameterList[i] := cs_Ut_Parameter_Password(valueof(p_NewPassword)); + i := i+1; + } + if (isvalue(p_Service)) { + v_ParameterList[i] := cs_Ut_Parameter_Common ( "Service", fl_Convert_SS_Service (valueof(p_Service))); + } + fl_UT_ApplyCommand(p_Port, cas_UT_Req(v_Command, NO_CNF_REQUIRED, v_ParameterList)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To trigger SS to change password + * @param p_Port + * @status + */ + function f_UT_SS_ChangePassword(UT_PTC_MTC_PORT p_Port, + SS_Type p_CallBarringType, + charstring p_OldPassword, + charstring p_NewPassword) + { + var Ut_Common_Req_Type v_Command := SUPPLEMENTARY_SERVICE; + var template (value) Ut_ParameterList_Type v_ParameterList; + + v_ParameterList[0] := cs_Ut_Parameter_SupplementaryService(tsc_UT_SS_PASSWORD); + v_ParameterList[1] := cs_Ut_Parameter_SupplementaryService(fl_Convert_SS_Type(p_CallBarringType)); + v_ParameterList[2] := cs_Ut_Parameter_Password(p_OldPassword); + v_ParameterList[3] := cs_Ut_Parameter_Password(p_NewPassword); + + fl_UT_ApplyCommand(p_Port, cas_UT_Req(v_Command, NO_CNF_REQUIRED, v_ParameterList)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To send SS USSD + * @param p_Port + * @param p_USSDString + * @param p_CnfRequired (default: CNF_REQUIRED) Only set to NO_CNF_REQUIRED in 15.9.5 when UE to answer SS message + * @status + */ + function f_UT_SupplementaryService_SendUSSD(UT_PTC_MTC_PORT p_Port, + charstring p_USSDString := "Network Triggered", + Ut_CnfReq_Type p_CnfRequired := CNF_REQUIRED) + { + var Ut_Common_Req_Type v_Command := SUPPLEMENTARY_SERVICE; + var template (value) Ut_ParameterList_Type v_ParameterList; + var boolean v_DontWaitForCnf := false; + + v_ParameterList[0] := cs_Ut_Parameter_SupplementaryService(tsc_UT_SS_USSD); + v_ParameterList[1] := cs_Ut_Parameter_SS_Mode(tsc_UT_SS_ACTIVATE); + v_ParameterList[2] := cs_Ut_Parameter_USSD(p_USSDString); + + if (p_USSDString == "Network Triggered") { + v_DontWaitForCnf := true; + } + + fl_UT_ApplyCommand(p_Port, cas_UT_Req(v_Command, p_CnfRequired, v_ParameterList), v_DontWaitForCnf); + } + + /* + * @desc To send SS USSD + * @param p_Port + * @status + */ + function f_UT_SupplementaryService_USSDResponse(UT_PTC_MTC_PORT p_Port) return charstring + { + var UT_COMMON_CNF v_Cnf := fl_UT_RetCnf(p_Port); + return v_Cnf.ResultString; + } + //---------------------------------------------------------------------------- + /* + * @desc SS to trigger release of held call (actually uses AT command call hold = 0) + * @param p_Port + * @status + */ + function f_UT_CallHoldRelease(UT_PTC_MTC_PORT p_Port) + { + + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CALL_HOLD_RELEASE, NO_CNF_REQUIRED, omit)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To trigger SS call hold + * @param p_Port + * @param p_CallToHold (default value: omit) + * @status APPROVED (IMS) + */ + function f_UT_CallHold(UT_PTC_MTC_PORT p_Port, + template (omit) integer p_CallToHold := omit) + { + var template (omit) Ut_ParameterList_Type v_Params := omit; + if (isvalue(p_CallToHold)) { + v_Params := cs_CallIdNumber(int2str(valueof(p_CallToHold))); + } + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CALL_HOLD, NO_CNF_REQUIRED, v_Params)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To trigger SS call resume (actually uses AT command call hold) + * @param p_Port + * @param p_CallToHold (default value: omit) + * @status APPROVED (IMS) + */ + function f_UT_CallResume(UT_PTC_MTC_PORT p_Port, + template (omit) integer p_CallToHold := omit) + { + var template (omit) Ut_ParameterList_Type v_Params := omit; + if (isvalue(p_CallToHold)) { + v_Params := cs_CallIdNumber(int2str(valueof(p_CallToHold))); + } + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CALL_RESUME, NO_CNF_REQUIRED, v_Params)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To trigger SS Multiparty call (actually uses AT command call hold) + * @param p_Port + * @status APPROVED (IMS) + */ + function f_UT_CallMPTY(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CALL_MPTY, NO_CNF_REQUIRED, omit)); + } + + //---------------------------------------------------------------------------- + /* + * @desc To trigger SS Explicit Call Transfer (actually uses AT command call hold) + * @param p_Port + * @status + */ + function f_UT_ExplicitCallTransfer(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(CALL_ECT, NO_CNF_REQUIRED, omit)); + } + //---------------------------------------------------------------------------- + + /* + * @desc De-register UE + * @param p_Port + * @status APPROVED (IMS) + */ + function f_UT_IMS_Deregister(UT_PTC_MTC_PORT p_Port) + { + fl_UT_ApplyCommand(p_Port, cas_UT_Req(DEREGISTER, NO_CNF_REQUIRED)); // @sic R5-134290 sic@ + } + +} diff --git a/LTE_A_IWD_14wk37/Common/Common/UpperTesterPtcToMtcDefs.ttcn b/LTE_A_IWD_14wk37/Common/Common/UpperTesterPtcToMtcDefs.ttcn new file mode 100644 index 0000000..aa25a95 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/Common/UpperTesterPtcToMtcDefs.ttcn @@ -0,0 +1,236 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-10 10:55:39 +0200 (Wed, 10 Sep 2014) $ +// $Rev: 12185 $ +/******************************************************************************/ +// Common type definitions, e.g. being used in ASP definitions as well as for NAS +//------------------------------------------------------------------------------ +//* History: +//* @sic R5-096657 sic@ Added SMS command DELETE_MESSAGE_WITHFLAG +//------------------------------------------------------------------------------ + +module UpperTesterPtcToMtcDefs { + import from UpperTesterCommon all; + + //---------------------------------------------------------------------------- + group TypeDefs_PTC_UT { // types being used at the PTC <-> UpperTester interface + + type enumerated Ut_Common_Req_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ACCEPT_MTSI_TEXT, + ACTIVATE_BEARER, + ACTIVATE_MESSAGE_WAIT_INDICATION, + ANSWER_CALL, + ATTACH, + CALL_HOLD, + CALL_HOLD_RELEASE, + CALL_RESUME, + CALL_MPTY, + CALL_ECT, + CHECK_CALL_DISPLAY, + CHECK_CSG, + CHECK_CLOCK, + CHECK_CMAS_ALERT, + CHECK_CMAS_INDICATION, + CHECK_CMAS_NO_ALERT, + CHECK_CMAS_NO_INDICATION, //@sic R5s130376 sic@ + CHECK_DTCH_THROUGHCONNECTED, + CHECK_ETWS_ALERT, + CHECK_ETWS_INDICATION, + CHECK_ETWS_NO_ALERT, + CHECK_ETWS_NO_INDICATION, //@sic R5s130376 sic@ + CHECK_LCS_CLIENT, + CHECK_MESSAGE_DISPLAYED, + CHECK_OPERATOR_NAME, + CHECK_PLMN, + CHECK_RESPONSE_DISPLAY, + CHECK_SS_USER_IND, + CHECK_NITZ_DST, + CHECK_NITZ_FULL_NETWORK_NAME, + CHECK_NITZ_LTZ, + CHECK_NITZ_SHORT_NETWORK_NAME, + CHECK_NITZ_UT, + CLEAR_STORED_ASSISTANCE_DATA, + CONFIGURE_CEMODE, + CONFIGURE_OPERATIONMODE, + CONFIGURE_SMS_ONLY, + DEACTIVATE_BEARER, + DEFINE_EPS_QOS, + DEFINE_QOS, + DEFINE_TFT, + DELETE_MESSAGE_WITHFLAG, + DEREGISTER, + DETACH, + DETACH_NON_EPS, + DISABLE_EPS, + GERAN_UPLINK_DATA, + GET_EMERGENCY_NUMS_1, + GET_EMERGENCY_NUMS_2, + HRPD_PDN_CONNECTION, + INITIATE_VIDEO_CALL, + INSERT_USIM, + LOCATION_ANSWER, + LOCATION_INFO, + LOCATION_MULTIPLE, + LOCATION_SUBSCRIBE, + MBMS_PRIORITY_OVER_UNICAST, + MBMS_SERVICE_ACTIVE, + MBMS_SERVICE_INTEREST, + MESSAGE_FORMAT, + MODIFY_BEARER, + PLMN_AUTOMATIC, + PLMN_MANUAL, + POWER_OFF, + POWER_ON, + POWER_PREFERENCE, + REFRESH, + RELEASE_CALL, + RELEASE_IMS_CALL, + REMOVE_USIM, + REMOVE_VIDEO_CALL, + REQUEST_CALL, + REQUEST_DED_BEARER, + REQUEST_IMS_EMERGENCY_CALL, + REQUEST_IMS_VOICE_CALL, + REQUEST_NON_CALL_RELATED_SS, + REQUEST_PDPCONTEXT, + SELECT_CHARACTER_SET, + SELECT_CSG, + SELECT_MESSAGE_SERVICE, + SEND_3_STORED_MESSAGES, + SEND_STORED_MESSAGE_ONE, + SERVICE_CENTRE_ADDRESS, + SET_PREFERRED_STORAGE, + SET_TEXTMODE_PARAMETERS, + SUPPLEMENTARY_SERVICE, + SWITCH_OFF, + SWITCH_ON, + TIMEZONE_SUBSCRIBE, + TIMEZONE_MULTIPLE, + TRIGGER_2ND_IMPU, + TRIGGER_3RD_IMPU, + TRIGGER_MOLR, + TRIGGER_SMS, + TRIGGER_USER_RESELECTION, + WRITE_MESSAGE_TOMEMORY_PDUMODE, // @sic R5s110750 sic@ + WRITE_MESSAGE_TOMEMORY_TEXTMODE // DO NOT ADD FIELDS TO THIS TYPE, TO BE EXTENDED BY FILE OWNER ONLY + }; + + const charstring tsc_UT_SS_CLIP := "ORIGINATING IDENTIFICATION PRESENTATION"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_CLIR := "ORIGINATING IDENTIFICATION RESTRICTION"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_COLP := "TERMINATING IDENTIFICATION PRESENTATION"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_TERMINATING_IDENTIFICATION_RESTRICTION := "TERMINATING IDENTIFICATION RESTRICTION"; /* @status APPROVED (IMS) */ + const charstring tsc_UT_SS_CNAP := "CALLING NAME PRESENTATION"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_CALL_WAITING := "CALL WAITING"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_INCOMING_COMMUNICATION_BARRING := "INCOMING COMMUNICATION BARRING"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_INCOMING_COMMUNICATION_BARRING_ANONYMOUS := "INCOMING COMMUNICATION BARRING ANONYMOUS"; /* @status APPROVED (IMS) */ + const charstring tsc_UT_SS_INCOMING_COMMUNICATION_BARRING_ROAMING := "INCOMING COMMUNICATION BARRING WHILE ROAMING"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_COMMUNICATION_BARRING_WHILE_ROAMING := "COMMUNICATION BARRING WHILE ROAMING"; /* @status APPROVED (IMS) */ + const charstring tsc_UT_SS_OUTGOING_COMMUNICATION_BARRING := "OUTGOING COMMUNICATION BARRING"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_OUTGOING_INTERNATIONAL_BARRING := "OUTGOING INTERNATIONAL BARRING"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_OUTGOING_INTERNATIONAL_EX_HC_BARRING := "OUTGOING INTERNATIONAL EXCEPT HOME COUNTRY BARRING"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_ALL_BARRING_SERVICES_AB := "ALL BARRING SERVICES"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_ALL_OUTGOING_BARRING_SERVICES_AG := "ALL OUTGOING BARRING SERVICES"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_ALL_INCOMING_BARRING_SERVICES_AC := "ALL INCOMING BARRING SERVICES"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_CALL_FORWARDING_UNCONDITIONAL := "CALL FORWARDING UNCONDITIONAL"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_CALL_FORWARDING_NO_REPLY := "CALL FORWARDING NO ANSWER"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_CALL_FORWARDING_BUSY := "CALL FORWARDING BUSY"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_CALL_FORWARDING_NOT_LOGGED_IN := "CALL FORWARDING NOT REGISTERED"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_CALL_FORWARDING_NOT_REACHABLE := "CALL FORWARDING NOT REACHABLE"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_CALL_FORWARDING_ALL := "ALL CALL FORWARDING"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_CALL_FORWARDING_ALL_CONDITIONAL := "ALL CONDITIONAL CALL FORWARDING"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_CALL_FORWARDING_DEFLECTION := "COMMUNICATION DEFLECTION"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_CALL_FORWARDING_DIVERSION_NOTIFICATION := "COMMUNICATION DIVERSION NOTIFICATION"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_INCOMING_COMMUNICATION_BARRING_EXCEPT_SPECIFIC_USER := "INCOMING COMMUNICATION BARRING EXCEPT SPECIFIC USER"; /* @status APPROVED (IMS) */ + const charstring tsc_UT_SS_ALL_CALL_TYPES := "ALL CALL TYPES"; + const charstring tsc_UT_SS_CALL_TYPE_VOICE := "CALL TYPE VOICE"; + const charstring tsc_UT_SS_USSD := "USSD"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_PASSWORD := "CHANGE PASSWORD"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_DEACTIVATE := "DEACTIVATE"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_ACTIVATE := "ACTIVATE"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_REGISTER := "REGISTER"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_QUERY := "QUERY"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const charstring tsc_UT_SS_DELETE := "DELETE"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + type record UT_COMMON_CMD { /* Common ASP to be sent by a PTC to the upper tester (MTC); + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + Ut_Common_Req_Type Cmd, + Ut_CnfReq_Type CnfReq, + Ut_ParameterList_Type ParameterList optional // to be used to include any additional information required + }; + + } // end of group TypeDefs_PTC_UT + + //---------------------------------------------------------------------------- + // Ports: + + type port UT_PTC_MTC_PORT message { /* port at a PTC to communicated with the upper tester (MTC) + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + out UT_COMMON_CMD; + in UT_COMMON_CNF; + }; + + type port UT_MTC_PTC_PORT message { /* port at the upper tester (MTC) to communicated with a PTC + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + out UT_COMMON_CNF; + in UT_COMMON_CMD; + }; + + // ----------------------------------------------------------------------------- + //Templates: + + template (value) Ut_ParameterList_Type cs_EPSBearerParams ( charstring p_Id, + charstring p_Type, + charstring p_AccessPointName, + charstring p_DComp, + charstring p_HComp, + charstring p_PDL, + charstring p_PDN, + charstring p_IPv4Alloc ) := + { + {// Minimum value 1 + Name := "EPS ID", + Value := p_Id + }, + { // values: X.25, IP, IPV6, IPV4V6, PPP + Name := "PDP TYPE", + Value := p_Type + }, + { + Name := "APN", + Value := p_AccessPointName + }, + { + Name := "D COMP", + Value := p_DComp + }, + { + Name := "H COMP", + Value := p_HComp + }, + { + Name := "PD L", + Value := p_PDL + }, + { + Name := "PD N", + Value := p_PDN + }, + { + Name := "IPv4ADDR", + Value := p_IPv4Alloc + } + }; + + template (present) UT_COMMON_CMD car_UT_ReqAny := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + Cmd := ?, + CnfReq := ?, + ParameterList := * + }; + +} diff --git a/LTE_A_IWD_14wk37/Common/Common/UpperTesterSystemCmds.ttcn b/LTE_A_IWD_14wk37/Common/Common/UpperTesterSystemCmds.ttcn new file mode 100644 index 0000000..76b0ec7 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/Common/UpperTesterSystemCmds.ttcn @@ -0,0 +1,189 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-10 10:55:39 +0200 (Wed, 10 Sep 2014) $ +// $Rev: 12185 $ +/******************************************************************************/ + +module UpperTesterSystemCmds { + import from UpperTesterCommon all; + + template (value) Ut_System_Cmd_Type cs_AT_CEMODE (charstring p_Mode) := cs_AT_Cmd("AT+CEMODE=" & p_Mode &""); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) @sic R5-106675 sic@ */ + template (value) Ut_System_Cmd_Type cs_MMI_DISABLE_EPS := cs_MMI_Cmd("DISABLE_EPS_CAPABILITY", omit); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_CONFIGURE_SMS_ONLY := cs_MMI_Cmd("CONFIGURE_SMS_ONLY", omit); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_DETACH_NON_EPS := cs_MMI_Cmd("DETACH_NON_EPS", omit); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_CLEAR_STORED_DATA := cs_MMI_Cmd("CLEAR_STORED_ASSISTANCE_DATA", omit);/* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_POWER_OFF := cs_MMI_Cmd("POWER_OFF", omit); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_POWER_ON := cs_MMI_Cmd("POWER_ON", omit); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_SWITCH_OFF := cs_MMI_Cmd("SWITCH_OFF", omit); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_SWITCH_ON := cs_MMI_Cmd("SWITCH_ON", omit); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_HRPD_PDN_CONNECTION := cs_MMI_Cmd("HRPD_PDN_CONNECTION", omit); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_TRIGGER_USER_RESELECTION := cs_MMI_Cmd("TRIGGER_USER_RESELECTION", omit); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_REQUEST_NON_CALL_RELATED_SS := cs_MMI_Cmd("REQUEST_NON_CALL_RELATED_SS", omit); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_CHECK_DTCH := cs_MMI_Cmd("CHECK_DTCH_THROUGHCONNECTED", omit); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_GERAN_DATA := cs_MMI_Cmd("GERAN_UPLINK_DATA", omit); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_INSERT_USIM (template (omit) Ut_ParameterList_Type p_ParamList) := + cs_MMI_Cmd("INSERT_USIM", p_ParamList); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN); + @sic R5-123085 harmonisation of IMS: "template (omit)" instead of "template (value)" sic@ */ + template (value) Ut_System_Cmd_Type cs_MMI_ACTIVATE_SS (template (omit) Ut_ParameterList_Type p_ParamList) := + cs_MMI_Cmd("ACTIVATE_SUPPLEMENTARY_SERVICE", p_ParamList); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_TRIGGER_SMS := cs_MMI_Cmd("TRIGGER_SMS", omit); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_TRIGGER_2ND_IMPU := cs_MMI_Cmd("TRIGGER_2ND_IMPU", omit); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_TRIGGER_3RD_IMPU := cs_MMI_Cmd("TRIGGER_3RD_IMPU", omit); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_REFRESH := cs_MMI_Cmd("REFRESH", omit); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_REMOVE_VIDEO_CALL := cs_MMI_Cmd("REMOVE_VIDEO_CALL", omit); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_ACCEPT_MTSI_TEXT := cs_MMI_Cmd("ACCEPT_MTSI_TEXT", omit); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_DEREGISTER := cs_MMI_Cmd("DEREGISTER", omit); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_MBMS_SERVICE_INTEREST (template (value) Ut_ParameterList_Type p_ParamList) := + cs_MMI_Cmd("MBMS_SERVICE_INTEREST", p_ParamList); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_MBMS_SERVICE_ACTIVE (template (value) Ut_ParameterList_Type p_ParamList) := + cs_MMI_Cmd("MBMS_SERVICE_ACTIVE", p_ParamList); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_MBMS_PRIORITY_OVER_UNICAST (template (value) Ut_ParameterList_Type p_ParamList) := + cs_MMI_Cmd("MBMS_PRIORITY_OVER_UNICAST", p_ParamList); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_AT_TRIGGER_MOLR (Ut_ParameterList_Type p_ParamList) := + cs_AT_Cmd("AT+CMOLR=3," & p_ParamList[0].Value & ""); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_CHECK_NITZ_DST (template (value) Ut_ParameterList_Type p_ParamList) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_MMI_Cmd("CHECK_NITZ_DST", p_ParamList); + template (value) Ut_System_Cmd_Type cs_MMI_CHECK_NITZ_FULL_NETWORK_NAME (template (value) Ut_ParameterList_Type p_ParamList) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_MMI_Cmd("CHECK_NITZ_FULL_NETWORK_NAME", p_ParamList); + template (value) Ut_System_Cmd_Type cs_MMI_CHECK_NITZ_LTZ (template (value) Ut_ParameterList_Type p_ParamList) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_MMI_Cmd("CHECK_NITZ_LTZ", p_ParamList); + template (value) Ut_System_Cmd_Type cs_MMI_CHECK_NITZ_SHORT_NETWORK_NAME (template (value) Ut_ParameterList_Type p_ParamList) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_MMI_Cmd("CHECK_NITZ_SHORT_NETWORK_NAME", p_ParamList); + template (value) Ut_System_Cmd_Type cs_MMI_CHECK_NITZ_UT (template (value) Ut_ParameterList_Type p_ParamList) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_MMI_Cmd("CHECK_NITZ_UT", p_ParamList); + template (value) Ut_System_Cmd_Type cs_MMI_LOCATION_INFO := cs_MMI_Cmd("LOCATION_INFO", omit); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_REMOVE_USIM := cs_MMI_Cmd("REMOVE_USIM", omit); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_AT_LOCATION_SUBSCRIBE(Ut_ParameterList_Type p_ParamList) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_AT_Cmd("AT+CMTLR=" & p_ParamList[0].Value & ""); + template (value) Ut_System_Cmd_Type cs_AT_LOCATION_ANSWER (Ut_ParameterList_Type p_ParamList) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_AT_Cmd("AT+CMTLRA=" & p_ParamList[0].Value & "," & p_ParamList[1].Value & ""); + template (value) Ut_System_Cmd_Type cs_AT_TIMEZONE_SUBSCRIBE (Ut_ParameterList_Type p_ParamList) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_AT_Cmd("AT+CTZR=" & p_ParamList[0].Value & ""); + template (value) Ut_System_Cmd_Type cs_AT_DIAL_CALL (charstring p_Dial) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) @sic R5s110489 sic@ */ + cs_AT_Cmd("ATD"&p_Dial&";"); + template (value) Ut_System_Cmd_Type cs_AT_IMS_VOICE_CALL (charstring p_URI) := + cs_AT_Cmd("AT+CDU=1,"& p_URI & ""); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_AT_RELEASE_IMS_CALL (charstring p_CallId) := + cs_AT_Cmd("AT+CHCCS="& p_CallId & ""); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_AT_IMS_VIDEO_CALL (charstring p_URI) := + cs_AT_Cmd("AT+CDEFMP=1,""m=video"";+CDU=1," & p_URI & "1,1"); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_AT_ANSWER_CALL := cs_AT_Cmd("ATA"); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_AT_RELEASE_CALL := cs_AT_Cmd("ATH"); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_AT_DEFINE_EPS_QOS (charstring p_QoS) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_AT_Cmd("AT+CGEQOS="& p_QoS &""); + template (value) Ut_System_Cmd_Type cs_AT_DEFINE_TFT (charstring p_TFT) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_AT_Cmd("AT+CGTFT="& p_TFT &""); + template (value) Ut_System_Cmd_Type cs_AT_REQUEST_DED_BEARER (Ut_ParameterList_Type p_ParamList) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_AT_Cmd("AT+CGDSCONT="& p_ParamList[0].Value& "," & p_ParamList[1].Value & ""); + template (value) Ut_System_Cmd_Type cs_AT_ACTIVATEBEARER (Ut_ParameterList_Type p_ParamList) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_AT_Cmd("AT+CGACT=1,"& p_ParamList[0].Value &""); + template (value) Ut_System_Cmd_Type cs_AT_DEACTIVATEBEARER (Ut_ParameterList_Type p_ParamList) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_AT_Cmd("AT+CGACT=0,"& p_ParamList[0].Value &""); + template (value) Ut_System_Cmd_Type cs_AT_MODIFYBEARER (Ut_ParameterList_Type p_ParamList) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_AT_Cmd("AT+CGCMOD="& p_ParamList[0].Value &""); // @sic R5s100470 sic@ + template (value) Ut_System_Cmd_Type cs_MMI_CONFIGURE_OPERATIONMODE (template (omit) Ut_ParameterList_Type p_ParamList) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_MMI_Cmd("CONFIGURE_OPERATIONMODE", p_ParamList); + template (value) Ut_System_Cmd_Type cs_MMI_CHECK_PLMN (template (omit) Ut_ParameterList_Type p_ParamList) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_MMI_Cmd("CHECK_PLMN", p_ParamList); + template (value) Ut_System_Cmd_Type cs_MMI_CHECK_CSG (template (omit) Ut_ParameterList_Type p_ParamList) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_MMI_Cmd("CHECK_CSG", p_ParamList); + template (value) Ut_System_Cmd_Type cs_MMI_CSG_PLMN (template (value) Ut_ParameterList_Type p_ParamList) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_MMI_Cmd("SELECT_CSG", p_ParamList); + + template (value) Ut_System_Cmd_Type cs_AT_SET_PLMN_MANUAL (charstring p_PLMN) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) @sic R5-106675 sic@ */ + cs_AT_Cmd("AT+COPS=3,2;+COPS=1,2,"& p_PLMN & ""); + template (value) Ut_System_Cmd_Type cs_AT_PLMN_AUTOMATIC := cs_AT_Cmd("AT+COPS=0"); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) @sic R5-106675 sic@ */ + template (value) Ut_System_Cmd_Type cs_AT_REQUEST_PDPCONTEXT (Ut_ParameterList_Type p_ParamList) := + cs_AT_Cmd("AT+CGDCONT=" & p_ParamList[0].Value &""); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_AT_REQUEST_ATTACH := cs_AT_Cmd("AT+CGATT=1"); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_AT_REQUEST_DETACH := cs_AT_Cmd("AT+CGATT=0"); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_AT_DELETE_MESSAGE_DELFLAG (Ut_ParameterList_Type p_ParamList) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_AT_Cmd("AT+CMGD="& p_ParamList[0].Value& "," & p_ParamList[1].Value & ""); + template (value) Ut_System_Cmd_Type cs_AT_SELECT_MESSAGE_SERVICE (charstring p_Service) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_AT_Cmd("AT+CSMS="& p_Service &""); + template (value) Ut_System_Cmd_Type cs_AT_SET_PREFERRED_STORAGE (Ut_ParameterList_Type p_ParamList) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) @sic R5s100773 R5s110064 sic@ */ + cs_AT_Cmd("AT+CPMS=" &""""& p_ParamList[0].Value& """"&"," &""""& p_ParamList[1].Value &""""& "," &""""& p_ParamList[2].Value &""""& ""); + template (value) Ut_System_Cmd_Type cs_AT_MESSAGE_FORMAT (charstring p_Mode) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_AT_Cmd("AT+CMGF="& p_Mode & ""); + template (value) Ut_System_Cmd_Type cs_AT_SELECT_CHARACTER_SET (charstring p_Chset) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_AT_Cmd("AT+CSCS="& p_Chset & ""); + template (value) Ut_System_Cmd_Type cs_AT_SERVICE_CENTRE_ADDRESS (Ut_ParameterList_Type p_ParamList) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_AT_Cmd("AT+CSCA="& p_ParamList[0].Value& "," & p_ParamList[1].Value & ""); + template (value) Ut_System_Cmd_Type cs_AT_MESSAGE_WRITE_TEXTMODE (Ut_ParameterList_Type p_ParamList) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_AT_Cmd("AT+CMGW="& p_ParamList[0].Value& "," & p_ParamList[1].Value & "" & p_ParamList[2].Value & ""); + template (value) Ut_System_Cmd_Type cs_AT_MESSAGE_WRITE_PDUMODE (Ut_ParameterList_Type p_ParamList) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_AT_Cmd("AT+CMGW="& p_ParamList[0].Value& "" & p_ParamList[1].Value & ""); + template (value) Ut_System_Cmd_Type cs_AT_SEND_STORED_ONEMESSAGE (charstring p_Index) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_AT_Cmd("AT+CMSS="& p_Index &""); + template (value) Ut_System_Cmd_Type cs_AT_SEND_STORED_3_MESSAGES (Ut_ParameterList_Type p_ParamList) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_AT_Cmd("AT+CMMS=1;+CMSS=" & p_ParamList[0].Value & ";+CMSS=" & p_ParamList[1].Value & ";+CMSS=" & p_ParamList[2].Value & ""); + template (value) Ut_System_Cmd_Type cs_AT_SET_TEXTMODE_PARAMETERS (Ut_ParameterList_Type p_ParamList) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) @sic R5s100604 sic@ @sic R5s100773 sic@*/ + cs_AT_Cmd("AT+CSMP="& p_ParamList[0].Value & "," & p_ParamList[1].Value & "," & p_ParamList[2].Value & ""); + template (value) Ut_System_Cmd_Type cs_AT_GET_EMERGENCY_NUMS_1 := cs_AT_Cmd("AT+CEN=1"); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_AT_GET_EMERGENCY_NUMS_2 := cs_AT_Cmd("AT+CEN?"); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_CHECK_ETWS_INDICATION (Ut_ParameterList_Type p_ParamList) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) @sic R5-120721 sic@ */ + cs_MMI_Cmd("CHECK_ETWS_INDICATION", p_ParamList); + template (value) Ut_System_Cmd_Type cs_MMI_CHECK_ETWS_ALERT := cs_MMI_Cmd("CHECK_ETWS_ALERT", omit); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_CHECK_ETWS_NO_ALERT := cs_MMI_Cmd("CHECK_ETWS_NO_ALERT", omit); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) @sic R5s120119 sic@ */ + template (value) Ut_System_Cmd_Type cs_MMI_CHECK_CMAS_INDICATION (Ut_ParameterList_Type p_ParamList) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_MMI_Cmd("CHECK_CMAS_INDICATION", p_ParamList); + template (value) Ut_System_Cmd_Type cs_MMI_CHECK_CMAS_ALERT := cs_MMI_Cmd("CHECK_CMAS_ALERT", omit); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_CHECK_CMAS_NO_ALERT := cs_MMI_Cmd("CHECK_CMAS_NO_ALERT", omit); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_CHECK_MESSAGE_DISPLAYED (Ut_ParameterList_Type p_ParamList) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_MMI_Cmd("CHECK_SMS_LENGTH_CONTENTS", p_ParamList); + template (value) Ut_System_Cmd_Type cs_AT_CHECK_CLOCK := cs_AT_Cmd("AT+CCLK?"); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_AT_CHECK_OPERATOR_NAME (Ut_ParameterList_Type p_ParamList) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_AT_Cmd("AT+COPS=3,"& p_ParamList[0].Value &";+COPS?"); + + template (value) Ut_System_Cmd_Type cs_AT_QOS_PROFILE_REQUESTED (Ut_ParameterList_Type p_ParamList) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_AT_Cmd("AT+CGEQREQ="& p_ParamList[0].Value& "," & p_ParamList[1].Value &""); + template (value) Ut_System_Cmd_Type cs_AT_POWER_PREFERENCE (Ut_ParameterList_Type p_ParamList) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_AT_Cmd("AT+CEPPI="& p_ParamList[0].Value&""); + + template (value) Ut_System_Cmd_Type cs_MMI_CHECK_CMAS_NO_INDICATION (Ut_ParameterList_Type p_ParamList) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) @sic R5s130376 sic@ */ + cs_MMI_Cmd("CHECK_CMAS_NO_INDICATION", p_ParamList); + template (value) Ut_System_Cmd_Type cs_MMI_CHECK_ETWS_NO_INDICATION (Ut_ParameterList_Type p_ParamList) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) @sic R5s130376 sic@ */ + cs_MMI_Cmd("CHECK_ETWS_NO_INDICATION", p_ParamList); + template (value) Ut_System_Cmd_Type cs_AT_SS_CLIP (charstring p_Params) := cs_AT_Cmd("AT+CLIP"& p_Params&""); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_AT_SS_CLIR (charstring p_Params) := cs_AT_Cmd("AT+CLIR"& p_Params&""); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_AT_SS_COLP (charstring p_Params) := cs_AT_Cmd("AT+COLP"& p_Params&""); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_AT_SS_COLR := cs_AT_Cmd("AT+COLR="); + template (value) Ut_System_Cmd_Type cs_AT_SS_CALL_FORWARD (charstring p_Params) := cs_AT_Cmd("AT+CCFCU="& p_Params&""); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_AT_SS_CALL_HOLD (charstring p_Params) := cs_AT_Cmd("AT+CHLD="& p_Params&""); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_AT_SS_CALL_WAITING (charstring p_Params) := cs_AT_Cmd("AT+CCWA="& p_Params&""); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_AT_SS_CNAP (charstring p_Params) := cs_AT_Cmd("AT+CNAP"& p_Params&""); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_AT_SS_LOCK (charstring p_Params) := cs_AT_Cmd("AT+CLCK="& p_Params&""); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_AT_SS_PASSWORD (charstring p_Params) := cs_AT_Cmd("AT+CPWD="& p_Params&""); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_AT_SS_USSD (charstring p_Params) := cs_AT_Cmd("AT+CUSD=1,"& p_Params&""); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_CHECK_CALL_DISPLAY (template (omit) Ut_ParameterList_Type p_ParamList) := + cs_MMI_Cmd("CHECK_CALL_DISPLAY", p_ParamList); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_CHECK_RESPONSE_DISPLAY (template (omit) Ut_ParameterList_Type p_ParamList) := + cs_MMI_Cmd("CHECK_RESPONSE_DISPLAY", p_ParamList); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_CHECK_SS_USER_IND (template (omit) Ut_ParameterList_Type p_ParamList) := + cs_MMI_Cmd("CHECK_SS_USER_IND", p_ParamList); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_LOCATION_MULTIPLE := cs_MMI_Cmd("LOCATION_MULTIPLE", omit); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_MMI_TIMEZONE_MULTIPLE := cs_MMI_Cmd("TIMEZONE_MULTIPLE", omit); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) Ut_System_Cmd_Type cs_SystemCmd_Dummy := + { + AT := "Dummy" + }; + + + //---------------------------------------------------------------------------- + /* + * @desc cause the UE to be switched off at the beginning of a teat case + * @param p_Port + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UT_InitialPowerOffUE(MTC_System_Ut p_Port) + { /* @sic R5-113037: Introduction of positioning test cases - system port handed over as parameter to get function independent from component definitions sic@ */ + p_Port.send(cas_UT_SYSTEM_REQ(cs_MMI_POWER_OFF, CNF_REQUIRED)); + p_Port.receive(car_UT_COMMON_CNF); + } + +} diff --git a/LTE_A_IWD_14wk37/Common/CommonIP/CommonIP.ttcn b/LTE_A_IWD_14wk37/Common/CommonIP/CommonIP.ttcn new file mode 100644 index 0000000..f222ac6 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/CommonIP/CommonIP.ttcn @@ -0,0 +1,302 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 12:44:18 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12148 $ +/******************************************************************************/ + +module CommonIP { + + import from CommonDefs all; + import from Parameters all; + + const UInt8_Type tsc_IP_Protocol_ICMP := 1; /* @status APPROVED (LTE, LTE_IRAT) */ + const UInt8_Type tsc_IP_Protocol_UDP := 17; /* @status APPROVED (LTE) */ + const UInt8_Type tsc_ICMP_Type_EchoReply := 0; /* @status APPROVED (LTE, LTE_IRAT) */ + const UInt8_Type tsc_ICMPv6_Type_EchoReply := 129; /* @status APPROVED (LTE, LTE_IRAT) */ + const UInt8_Type tsc_ICMP_Type_EchoRequest := 8; + const UInt8_Type tsc_IP_Protocol_TCP := 6; /* @status APPROVED (LTE) */ + const UInt8_Type tsc_IP_Protocol_IPSec := 50; /* @status APPROVED (LTE) */ + const UInt8_Type tsc_IP_Protocol_ICMPv6 := 58; /* @status APPROVED (LTE, LTE_IRAT) */ + const integer tsc_IMS_PortNumber_5060 := 5060; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + + const octetstring tsc_IP_AnyData := '00112233445566778899AABBCCDDEEFF'O; /* @status APPROVED (LTE, LTE_IRAT) */ + + type record PDN_AddressInfo_Type /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + { + charstring UE_IPAddressIPv4, + charstring UE_IPAddressIPv6, + charstring Remote_IPAddressIPv4, /* @sic R5s130681 additional change sic@ */ + charstring Remote_IPAddressIPv6, /* @sic R5s130681 additional change sic@ */ + charstring DHCP_ServerAddress, + charstring ICMPv6_ServerAddress, + charstring PCSCF_IPAddressIPv4, + charstring PCSCF_IPAddressIPv6, + //charstring PCSCF_DomainName, + charstring DNS_ServerAddressIPv4, + charstring DNS_ServerAddressIPv6 + }; + + const PDN_AddressInfo_Type tsc_PDN1_AddressInfo := { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + UE_IPAddressIPv4 := px_IPv4_Address1_UE, + UE_IPAddressIPv6 := px_IPv6_Address1_UE, + Remote_IPAddressIPv4 := px_IPv4_Address1_RemoteUE, + Remote_IPAddressIPv6 := px_IPv6_Address1_RemoteUE, + DHCP_ServerAddress := px_IPv4_Address1_NW, + ICMPv6_ServerAddress := px_IPv6_Address1_NW, + PCSCF_IPAddressIPv4 := px_IPv4_Address1_NW, + PCSCF_IPAddressIPv6 := px_IPv6_Address1_NW, + DNS_ServerAddressIPv4 := px_IPv4_Address1_NW, + DNS_ServerAddressIPv6 := px_IPv6_Address1_NW + }; + const PDN_AddressInfo_Type tsc_PDN2_AddressInfo := { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + UE_IPAddressIPv4 := px_IPv4_Address2_UE, + UE_IPAddressIPv6 := px_IPv6_Address2_UE, + Remote_IPAddressIPv4 := px_IPv4_Address2_RemoteUE, + Remote_IPAddressIPv6 := px_IPv6_Address2_RemoteUE, + DHCP_ServerAddress := px_IPv4_Address2_NW, + ICMPv6_ServerAddress := px_IPv6_Address2_NW, + PCSCF_IPAddressIPv4 := px_IPv4_Address2_NW, + PCSCF_IPAddressIPv6 := px_IPv6_Address2_NW, + DNS_ServerAddressIPv4 := px_IPv4_Address2_NW, + DNS_ServerAddressIPv6 := px_IPv6_Address2_NW + }; + + const PDN_AddressInfo_Type tsc_PDN_AddressInfo[2] := { tsc_PDN1_AddressInfo, tsc_PDN2_AddressInfo}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + + /* + * @desc return PDN_AddressInfo corresponding to the given PdnIndex + * @param p_PdnIndex + * @return PDN_AddressInfo_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_PDN_AddressInfo_Get(PDN_Index_Type p_PdnIndex) return PDN_AddressInfo_Type + { /* PDN_2a to support change of the IP address for IMS test case 19.5.1 */ + var PDN_AddressInfo_Type v_PDN_AddressInfo; + var integer v_Index; + + select (p_PdnIndex) { + case (PDN_1, PDN_2, PDN_Internet) { + v_Index := enum2int(p_PdnIndex); + v_PDN_AddressInfo := tsc_PDN_AddressInfo[v_Index]; + } + case (PDN_2a) { + FatalError(__FILE__, __LINE__, "PDN_2a is not supported yet"); + } + case else { + FatalError(__FILE__, __LINE__, "Invalid PDN index"); + } + } + return v_PDN_AddressInfo; + } + + //---------------------------------------------------------------------------- + /* + * @desc Check whether given string is IPv4 address + * @param p_IpAddress + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_IpAddressIsIPv4(charstring p_IpAddress) return boolean + { + var template charstring v_Pattern := pattern "[0-9]+[.][0-9]+[.][0-9]+[.][0-9]+"; + return match(p_IpAddress, v_Pattern); + }; + + //---------------------------------------------------------------------------- + /* + * @desc Check whether given string is IPv6 address + * @param p_IpAddress + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IpAddressIsIPv6(charstring p_IpAddress) return boolean + { + var Char1List_Type v_SplitCharList := {":"}; + var CharStringList_Type v_FieldList := f_StringSplit(p_IpAddress, v_SplitCharList); + var integer v_FieldCnt := lengthof(v_FieldList); + var charstring v_Field; + var charstring v_Pattern; + var integer v_FieldLength; + var integer i; + + if ((v_FieldCnt == 1) or (v_FieldCnt > 8)) { return false; } + + for (i:=0; i 4) { return false; } + if (not match(v_Field, pattern v_Pattern)) { return false; } + } + return true; + } + + //---------------------------------------------------------------------------- + /* + * @desc convert IP address in dot notation into octetstring; + * e.g. "10.11.12.13" results in '0A0B0C0D'O + * @param p_IPv4AddrChar + * @return O4_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_Convert_IPv4Addr2OctString(charstring p_IPv4AddrChar) return O4_Type + { + var Char1List_Type v_SplitCharList := {"."}; + var CharStringList_Type v_FieldList := f_StringSplit(p_IPv4AddrChar, v_SplitCharList); + var octetstring v_IPv4AddrOct := ''O; + var integer v_FieldCnt := lengthof(v_FieldList); + var integer v_IntVal; + var integer i; + + if (v_FieldCnt != 4) { + FatalError(__FILE__, __LINE__, "invalid IP Address"); + } + for (i:=0; i subsequent empty fields will just be replaced by '0000' */ + var charstring v_Field; + var integer v_NoOfEmptyBlocks; + var integer i; + var integer k; + + if (v_FieldCnt > 8) { + FatalError(__FILE__, __LINE__, "invalid IP Address"); + } + for (i:=0; i tsc_UInt16Max) { + v_Sum := (v_Sum mod (tsc_UInt16Max+1)) + (v_Sum / (tsc_UInt16Max+1)); + } + // get complement + v_Sum := tsc_UInt16Max - v_Sum; + return int2oct(v_Sum, 2); + } +} diff --git a/LTE_A_IWD_14wk37/Common/CommonIP/LoopbackIP.ttcn b/LTE_A_IWD_14wk37/Common/CommonIP/LoopbackIP.ttcn new file mode 100644 index 0000000..4abc255 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/CommonIP/LoopbackIP.ttcn @@ -0,0 +1,461 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-09-30 16:05:43 +0200 (Mon, 30 Sep 2013) $ +// $Rev: 9688 $ +/******************************************************************************/ + +module LoopbackIP { + + import from CommonDefs all; + import from CommonIP all; + import from Parameters all; + + //---------------------------------------------------------------------------- + /* + * @desc auxiliary function + * @param p_UseIPv4 + * @param p_IPv4Addr + * @param p_IPv6Addr + * @return charstring + * @status APPROVED (LTE, LTE_IRAT) + */ + function fl_LoopbackModeB_IPv4IPv6Address(boolean p_UseIPv4, + charstring p_IPv4Addr, + charstring p_IPv6Addr) return charstring + { + if (p_UseIPv4) { return p_IPv4Addr; } + else { return p_IPv6Addr; } + } + + /* + * @desc returns IP address to be used for IP packets in loopback mode B depending on IPv4/v6 for the given PDN + * @param p_UseIPv4 (default value: pc_IPv4) + * @param p_PdnIndex (default value: PDN_1) + * @return charstring + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_LoopbackModeB_IP_Address_UE(boolean p_UseIPv4 := pc_IPv4, + PDN_Index_Type p_PdnIndex := PDN_1) return charstring + { /* @sic R5s130362 - MCC160 Implementation: tsc_PDN_AddressInfo sic@ */ + var PDN_AddressInfo_Type v_PDN_AddressInfo := f_PDN_AddressInfo_Get(p_PdnIndex); + return fl_LoopbackModeB_IPv4IPv6Address(p_UseIPv4, v_PDN_AddressInfo.UE_IPAddressIPv4, v_PDN_AddressInfo.UE_IPAddressIPv6); + } + + /* + * @desc returns IP address to be used for IP packets in loopback mode B depending on IPv4/v6 for the given PDN + * @param p_UseIPv4 (default value: pc_IPv4) + * @param p_PdnIndex (default value: PDN_1) + * @return charstring + * @status APPROVED (LTE) + */ + function f_LoopbackModeB_IP_Address_NW(boolean p_UseIPv4 := pc_IPv4, + PDN_Index_Type p_PdnIndex := PDN_1) return charstring + { /* @sic R5s130362 - MCC160 Implementation: tsc_PDN_AddressInfo sic@ */ + var PDN_AddressInfo_Type v_PDN_AddressInfo := f_PDN_AddressInfo_Get(p_PdnIndex); + return fl_LoopbackModeB_IPv4IPv6Address(p_UseIPv4, v_PDN_AddressInfo.PCSCF_IPAddressIPv4, v_PDN_AddressInfo.PCSCF_IPAddressIPv6); + } + + //---------------------------------------------------------------------------- + /* + * @desc create an IPv4 packet ( currently with typical settings for UDP or ICMP packet) + * @param p_Identification (default value: '6d7d'O) + * @param p_TOS (default value: '00'O) + * @param p_Protocol + * @param p_SourceAddr + * @param p_DestAddr + * @param p_IPPayload + * @return octetstring + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_IPv4Packet_Create(O2_Type p_Identification := '6d7d'O, // Identification; random value (can be used to generate different packets + O1_Type p_TOS := '00'O, // Differentiated services (RFC 2474), Explicit Congestion Notification (ECN, RFC 3168), former TOS (RFC 791) + UInt8_Type p_Protocol, + charstring p_SourceAddr, + charstring p_DestAddr, + octetstring p_IPPayload) + return octetstring + { + var integer v_TotalLength := lengthof(p_IPPayload) + 20; // 20 bytes IP header + var O4_Type v_SourceAddrStr := f_Convert_IPv4Addr2OctString(p_SourceAddr); + var O4_Type v_DestAddrStr := f_Convert_IPv4Addr2OctString(p_DestAddr); + var octetstring v_OctetString; + + // IP header + v_OctetString := '45'O; // version and header length + v_OctetString := v_OctetString & p_TOS; + v_OctetString := v_OctetString & int2oct(v_TotalLength, 2); + v_OctetString := v_OctetString & p_Identification; + v_OctetString := v_OctetString & '0000'O; // flags (3 bits; typically 0 for UDP) and fragment offset (13 bits; typically 0 for UDP) + v_OctetString := v_OctetString & '80'O; // Time to live (random value) + v_OctetString := v_OctetString & int2oct(p_Protocol, 1); + v_OctetString := v_OctetString & f_IpChecksum(v_OctetString & '0000'O & v_SourceAddrStr & v_DestAddrStr); + v_OctetString := v_OctetString & v_SourceAddrStr; + v_OctetString := v_OctetString & v_DestAddrStr; + v_OctetString := v_OctetString & p_IPPayload; + + return v_OctetString; + } + + //---------------------------------------------------------------------------- + /* + * @desc create an IPv6 packet (currently with typical settings for an UDP packet) + * For IPv6 packet format, see RFC 2460 + * @param p_TrafficClass (default value: '00'O) + * @param p_FlowLabel (default value: 0) + * @param p_Protocol + * @param p_SourceAddr + * @param p_DestAddr + * @param p_IPPayload + * @return octetstring + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_IPv6Packet_Create(O1_Type p_TrafficClass := '00'O, + UInt20_Type p_FlowLabel := 0, + UInt8_Type p_Protocol, + charstring p_SourceAddr, + charstring p_DestAddr, + octetstring p_IPPayload) + return octetstring + { + var hexstring v_Version := '6'H; + var hexstring v_TrafficClass := oct2hex (p_TrafficClass); + var hexstring v_FlowLabel := int2hex (p_FlowLabel, 5); + var O16_Type v_SourceAddrStr := f_Convert_IPv6Addr2OctString(p_SourceAddr); + var O16_Type v_DestAddrStr := f_Convert_IPv6Addr2OctString(p_DestAddr); + var octetstring v_OctetString; + + // IP header + v_OctetString := hex2oct(v_Version & v_TrafficClass & v_FlowLabel); // Version, Traffic Class and Flow Label to be revised + v_OctetString := v_OctetString & int2oct (lengthof(p_IPPayload), 2); // Payload Length + v_OctetString := v_OctetString & int2oct(p_Protocol, 1); // Next header + v_OctetString := v_OctetString & '40'O; // Hop Limit + v_OctetString := v_OctetString & v_SourceAddrStr; + v_OctetString := v_OctetString & v_DestAddrStr; + v_OctetString := v_OctetString & p_IPPayload; + return v_OctetString; + } + + //---------------------------------------------------------------------------- + /* + * @desc build an IPv4 UDP datagram + * @param p_SourceAddr + * @param p_DestAddr + * @param p_SourcePort + * @param p_DestPort + * @param p_UdpPayload + * @return octetstring + * @status APPROVED (LTE) + */ + function f_IPv4UdpDatagram_Create(charstring p_SourceAddr, + charstring p_DestAddr, + UInt16_Type p_SourcePort, + UInt16_Type p_DestPort, + octetstring p_UdpPayload) + return octetstring + { /* @desc create UDP datagram */ + var integer v_UdpDatagramLength := lengthof(p_UdpPayload) + 8; // 8 bytes UDP header + // Pseudo Header: + var O4_Type v_SourceAddrStr := f_Convert_IPv4Addr2OctString(p_SourceAddr); + var O4_Type v_DestAddrStr := f_Convert_IPv4Addr2OctString(p_DestAddr); + var O2_Type v_LengthStr := int2oct(v_UdpDatagramLength, 2); + var O1_Type v_Protocol := '11'O; // UDP + var octetstring v_PseudoHeader := v_SourceAddrStr & v_DestAddrStr &'00'O & v_Protocol & v_LengthStr; + var O2_Type v_ChecksumDummy := '0000'O; + var octetstring v_OctetString := ''O; + + v_OctetString := v_OctetString & int2oct(p_SourcePort, 2); + v_OctetString := v_OctetString & int2oct(p_DestPort, 2); + v_OctetString := v_OctetString & v_LengthStr; + v_OctetString := v_OctetString & f_IpChecksum(v_PseudoHeader & v_OctetString & v_ChecksumDummy & p_UdpPayload); /* Note: the UDP checksum can also be '0000'O what means "no chcksum"; but that is not the usual case */ + v_OctetString := v_OctetString & p_UdpPayload; + + return v_OctetString; + } + + //---------------------------------------------------------------------------- + /* + * @desc create UDP datagram + * @param p_SourceAddr + * @param p_DestAddr + * @param p_SourcePort + * @param p_DestPort + * @param p_UdpPayload + * @return octetstring + * @status APPROVED (LTE) + */ + function f_IPv6UdpDatagram_Create(charstring p_SourceAddr, + charstring p_DestAddr, + UInt16_Type p_SourcePort, + UInt16_Type p_DestPort, + octetstring p_UdpPayload) + return octetstring + { + var integer v_UdpDatagramLength := lengthof(p_UdpPayload) + 8; // 8 bytes UDP header + var O16_Type v_SourceAddrStr := f_Convert_IPv6Addr2OctString(p_SourceAddr); + var O16_Type v_DestAddrStr := f_Convert_IPv6Addr2OctString(p_DestAddr); + var O4_Type v_LengthStr := int2oct(v_UdpDatagramLength, 4); // RFC 2460 clause 8.1 + var octetstring v_PseudoHeader; + var octetstring v_OctetString; + + // Prepare the pseudo header, see RFC 2460 and illustration in Wikipedia + v_PseudoHeader := v_SourceAddrStr & v_DestAddrStr & v_LengthStr; + v_PseudoHeader := v_PseudoHeader & v_LengthStr; // UDP length + v_PseudoHeader := v_PseudoHeader & '000000'O & '11'O; // Zeros and Next header (= Protocol) + v_PseudoHeader := v_PseudoHeader & int2oct(p_SourcePort, 2) & int2oct(p_DestPort, 2) & int2oct(v_UdpDatagramLength, 2) & '0000'O; + v_PseudoHeader := v_PseudoHeader & p_UdpPayload; + + // Now set the UDP packet + v_OctetString := int2oct(p_SourcePort, 2); + v_OctetString := v_OctetString & int2oct(p_DestPort, 2); + v_OctetString := v_OctetString & int2oct(v_UdpDatagramLength, 2); + v_OctetString := v_OctetString & f_IpChecksum(v_PseudoHeader); + v_OctetString := v_OctetString & p_UdpPayload; + + return v_OctetString; + } + + //---------------------------------------------------------------------------- + /* + * @desc create TCP datagram + * @param p_SourceAddr + * @param p_DestAddr + * @param p_SourcePort + * @param p_DestPort + * @param p_TcpPayload + * @return octetstring + * @status APPROVED (LTE) + */ + function f_IPv4TcpDatagram_Create(charstring p_SourceAddr, + charstring p_DestAddr, + UInt16_Type p_SourcePort, + UInt16_Type p_DestPort, + octetstring p_TcpPayload) + return octetstring + { + var integer v_TcpDatagramLength := lengthof(p_TcpPayload) + 20; // 20 bytes TCP header + // Pseudo Header: + var O4_Type v_SourceAddrStr := f_Convert_IPv4Addr2OctString(p_SourceAddr); + var O4_Type v_DestAddrStr := f_Convert_IPv4Addr2OctString(p_DestAddr); + var O2_Type v_LengthStr := int2oct(v_TcpDatagramLength, 2); + var O1_Type v_Protocol := int2oct(tsc_IP_Protocol_TCP, 1); + var octetstring v_PseudoHeader := v_SourceAddrStr & v_DestAddrStr &'00'O & v_Protocol & v_LengthStr; + var O2_Type v_ChecksumDummy := '0000'O; + var octetstring v_UrgPointer := '0000'O; + var octetstring v_OctetString := ''O; + + v_OctetString := v_OctetString & int2oct(p_SourcePort, 2); + v_OctetString := v_OctetString & int2oct(p_DestPort, 2); + v_OctetString := v_OctetString & int2oct(0, 4); // Sequence Number + v_OctetString := v_OctetString & int2oct(0, 4); // Acknowledgment Number + v_OctetString := v_OctetString & '5011'O; // 4bits HeaderLen/6bits Reserved/URG/ACK/PSH/RST/SYN/FIN + v_OctetString := v_OctetString & int2oct(256, 4); // How to set the windows size? + v_OctetString := v_OctetString & f_IpChecksum(v_PseudoHeader & v_OctetString & v_ChecksumDummy & v_UrgPointer & p_TcpPayload); /* Note: the TCP checksum can also be '0000'O what means "no chcksum"; but that is not the usual case */ + v_OctetString := v_OctetString & v_UrgPointer; + v_OctetString := v_OctetString & p_TcpPayload; + + return v_OctetString; + } + + //---------------------------------------------------------------------------- + /* + * @desc Datagram acc. RFC2406 + * @param p_NextHeader + * @param p_SPI + * @param p_Payload + * @return octetstring + * @status APPROVED (LTE) + */ + function f_IPSecESPDatagram_Create(integer p_NextHeader, + O4_Type p_SPI, + octetstring p_Payload) + return octetstring + { + var octetstring v_OctetString := ''O; + var O4_Type v_SequenceNumber := int2oct(1, 4); + var integer v_PayloadLen := lengthof(p_Payload); + var integer v_PaddingLen := 0; + var integer i; + + v_OctetString := v_OctetString & p_SPI; // Security Parameters Index + v_OctetString := v_OctetString & v_SequenceNumber; // Sequence Number + v_OctetString := v_OctetString & p_Payload; + + // Padding to ensure that the resulting text terminates on a 4-byte boundary. RFC 2406 cl2.4 + select (v_PayloadLen mod 4) { + case (0) { v_PaddingLen := 2; } + case (1) { v_PaddingLen := 1; } + case (2) { v_PaddingLen := 0; } + case (3) { v_PaddingLen := 3; } + } + for (i:=0; i 21) { + FatalError(__FILE__, __LINE__, "invalid length of IMSI"); + } + for (I := 0; I < v_Length; I := I + 1) { + v_ReturnValue[I] := hex2int(p_Hex[I]); + } + return v_ReturnValue; + } + + //------------------------------------------------------------------------------------------ + /* + * @desc Converts between NAS internal representation of MCC to the MCC ASN.1 type + * @param p_MCC MCC as plain string of 3 decimal digits + * @return MCC as ASN.1 type (defined as array of 3 integers) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_ConvertMCC_Nas2Asn(NAS_Mcc p_MCC) return MCC + { // Note: there is a UTRAN variant of this function too + return { hex2int(p_MCC[0]), hex2int(p_MCC[1]), hex2int(p_MCC[2]) }; //@sic R5s130498 R5s130730 sic@ + } + + function f_ConvertMCC_Asn2Nas(MCC p_MCC) return NAS_Mcc + { /* @desc Converts MCC ASN.1 type to NAS internal representation + * @param p_MCC MCC as ASN.1 type (defined as array of 3 integers) + * @return MCC as plain string of 3 decimal digits */ + return int2hex(p_MCC[2], 1) & int2hex(p_MCC[1], 1) & int2hex(p_MCC[0], 1); + } + + //------------------------------------------------------------------------------------------ + /* + * @desc Converts a PLMN ID from ASN.1 to NAS representation. + * @param p_PlmnId .. PLMN ID as defined in LTE RRC ASN.1. + * @return NAS_PlmnId .. NAS representation of the PLMN ID (O3_Type). + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_Asn2Nas_PlmnId(PLMN_Identity p_PlmnId) return NAS_PlmnId + { + var hexstring v_MCC := '000'H; // initialised with 3 digits which will be overwritten + var hexstring v_MNC := 'FFF'H; // initialised with 3 'F'H => if lengthof(p_PlmnId.mnc) < 3 the remaining digits are 'F'H + var MCC_MNC_Digit v_Digit; // MCC-MNC-Digit ::= INTEGER (0..9) + var integer I; + + for (I := 0; (I < lengthof(p_PlmnId.mcc)) and (I < lengthof(v_MCC)); I := I + 1) { + /* p_PlmnId.mcc consists of 3 digits; nevertheless to be sure v_MCC is checked as well */ + v_Digit := p_PlmnId.mcc[I]; + v_MCC[I] := int2hex(v_Digit, 1); + } + + for (I := 0; (I < lengthof(p_PlmnId.mnc)) and (I < lengthof(v_MNC)); I := I + 1) { + /* p_PlmnId.mcc consists of 2 or 3 digits; nevertheless to be sure v_MNC is checked as well */ + v_Digit := p_PlmnId.mnc[I]; + v_MNC[I] := int2hex(v_Digit, 1); + } + + // build PLMN ID representation as used in NAS + // TAI/TAI list/MobileIdentity[GUTI]/... + return hex2oct(v_MCC[1] & v_MCC[0] & + v_MNC[2] & v_MCC[2] & + v_MNC[1] & v_MNC[0]); + } + + //------------------------------------------------------------------------------------------ + /* + * @desc Creates a new unique M-TMSI based on the current one. + * @param p_M_Tmsi Current M-TMSI value. + * @return M_TMSI_Type New M-TMSI (which is guarantied to be different from p_M_Tmsi). + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_CreateNewM_Tmsi(M_TMSI_Type p_M_Tmsi) return M_TMSI_Type + { + return p_M_Tmsi <@ 1; + } + + //------------------------------------------------------------------------------------------ + /* + * @desc Creates a new unique S-TMSI based on the current one by + * incrementing MMEC and changing S-TMSI to a new value. + * @param p_S_Tmsi Current S-TMSI value. + * @return S_TMSI New S-TMSI (which is guarantied to be different from p_S_Tmsi). + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_CreateNewS_Tmsi(S_TMSI p_S_Tmsi) return S_TMSI + { + var S_TMSI v_S_TMSI := { + mmec := int2bit(((bit2int(p_S_Tmsi.mmec) + 1) mod 255), 8), + m_TMSI := f_CreateNewM_Tmsi(p_S_Tmsi.m_TMSI) + }; + return v_S_TMSI; + } + + //------------------------------------------------------------------------------------------ + /* + * @desc Creates a new GutiParameters_Type variable which is identical to the given GUTI + * except that both MMEC and M-TMSI (i.e. S-TMSI) will be updated to new values. + * @param p_GutiParams Current GUTI. + * @return GutiParameters_Type New GUTI. + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_CreateGutiParamsWithUpdatedSTmsi(GutiParameters_Type p_GutiParams) return GutiParameters_Type + { + var GutiParameters_Type v_NewGutiParams := p_GutiParams; + var S_TMSI v_S_Tmsi := { + mmec := p_GutiParams.MME_Code, + m_TMSI := p_GutiParams.M_TMSI + }; + + v_S_Tmsi := f_CreateNewS_Tmsi(v_S_Tmsi); + + v_NewGutiParams.MME_Code := v_S_Tmsi.mmec; + v_NewGutiParams.M_TMSI := v_S_Tmsi.m_TMSI; + + return v_NewGutiParams; + } + + //------------------------------------ + /* + * @desc check esmInfoTransferFlag in PDN_CONNECTIVITY_REQUEST + * @param p_PDN_CONNECTIVITY_REQUEST + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_CheckEsmInfoTransferFlag(PDN_CONNECTIVITY_REQUEST p_PDN_CONNECTIVITY_REQUEST) return boolean + { + if (ispresent(p_PDN_CONNECTIVITY_REQUEST.esmInfoTransferFlag)) { + if (p_PDN_CONNECTIVITY_REQUEST.esmInfoTransferFlag.eitValue == '1'B) { + return true; + } + } + return false; + } + + /* + * @desc function to convert integer value of band class to enumerated type BandclassCDMA2000 + * @param p_Integer + * @return BandclassCDMA2000 + * @status APPROVED (LTE_IRAT) + */ + function f_ConvertFromIntegerToBandClass (integer p_Integer) return BandclassCDMA2000 + { + var BandclassCDMA2000 v_Value; + select (p_Integer) { + case (0) { + v_Value := bc0; + } case (1) { + v_Value := bc1; + } case (2) { + v_Value := bc2; + } case (3) { + v_Value := bc3; + } case (4) { + v_Value := bc4; + } case (5) { + v_Value := bc5; + } case (6) { + v_Value := bc6; + } case (7) { + v_Value := bc7; + } case (8) { + v_Value := bc8; + } case (9) { + v_Value := bc9; + } case (10) { + v_Value := bc10; + } case (11) { + v_Value := bc11; + } case (12) { + v_Value := bc12; + } case (13) { + v_Value := bc13; + } case (14) { + v_Value := bc14; + } case (15) { + v_Value := bc15; + } case (16) { + v_Value := bc16; + } case (17){ + v_Value := bc17; + } case else { + FatalError (__FILE__, __LINE__, "wrong Band Class"); + } + } + return v_Value; + } + + /* + * @desc to convert ASN.1 AccessStratumRelease type to integer (e.g. rel8 -> 8) + * @param p_AccessStratumRelease + * @return template (omit) integer + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_ConvertAccessStratumReleaseToInteger(AccessStratumRelease p_AccessStratumRelease) return template (omit) integer + { + var template (omit) integer v_UE_Release := omit; + select (p_AccessStratumRelease) { + case (rel8) {v_UE_Release := 8;} + case (rel9) {v_UE_Release := 9;} + case (rel10) {v_UE_Release := 10;} + case (rel11) {v_UE_Release := 11;} + case (spare4, spare3, spare2, spare1) { } // => we will get syntax errors for new baseline + case else {FatalError (__FILE__, __LINE__, "invalid release");} + } + return v_UE_Release; + } + +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_BandDependentParam.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_BandDependentParam.ttcn new file mode 100644 index 0000000..b715200 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_BandDependentParam.ttcn @@ -0,0 +1,229 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-02-20 17:26:19 +0100 (Thu, 20 Feb 2014) $ +// $Rev: 10594 $ +/******************************************************************************/ + +module EUTRA_BandDependentParam { + + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from EUTRA_ASP_TypeDefs all; + + //============================================================================ + // Channel bandwidth dependent parameters Type + + type record ChannelBandwidthDependency_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* type defined to hold the bandwidth dependant parameters + for the implementation of: + - table 4.4.3.4-1 in 36.508 + - table 4.3.4.1-1 and 4.3.4.1-2 in 36.508 cl 4.3.4 and + - table 4.6.8-1 in 36.508 cl 4.6.8 */ + SiPeriodicity_Type SIB3_periodicity, + SiPeriodicity_Type SIB4_periodicity, + SiPeriodicity_Type SIB5_periodicity, + SiPeriodicity_Type SIB6_periodicity, + SiPeriodicity_Type SIB7_periodicity, + SiPeriodicity_Type SIB8_periodicity, + SiPeriodicity_Type SIB9_periodicity, // @sic R5-110472 sic@ + SiPeriodicity_Type SIB10_periodicity, // @sic R5-100112 sic@ + SiPeriodicity_Type SIB11_periodicity, // @sic R5-100112 sic@ + SiPeriodicity_Type SIB12_periodicity, // @sic R5-121854 sic@ + SiPeriodicity_Type SIB13_periodicity, // MBMS + SiPeriodicity_Type SIB14_periodicity, // SIMTC @sic R5-140075 sic@ + SiPeriodicity_Type SIB15_periodicity, // MBMS @sic R5-140075 sic@ + AllowedMeasBandwidth AllowedMeasBandwidth, + Prach_FrequencyOffset_Type Prach_FrequencyOffset, + N_RB_CQI_Type N_RB_CQI, + PUSCH_HoppingOffset_Type Pusch_HoppingOffset, + SR_PUCCH_ResourceIndex_Type sr_PUCCH_ResourceIndex, // @sic R5s090312 sic@ + SrsBandwidthConfiguration_Type SrsBandwidthConfiguration, //inline type ENUMERATED {bw0, bw1, bw2, bw3, bw4, bw5, bw6, bw7}srsBandwidth + CfiValue_Type Cfi // @sic R5s090180: CFI value dependant on the bandwidth sic@ + }; + + //------------------------------------------------------------------------------------------ + /* + * @desc Return dependants parameters for the parameterised bandwidth as per 36.508: + * - table 4.4.3.4-1 in 36.508 cl 4.4.3.4 + * - table 4.3.4.1-1 in 36.508 cl 4.3.4 + * - table 4.6.8-1 in 36.508 cl 4.6.8 + * - CFI vlaue acc. to 36.508 cl 4.3.3 + * @param p_DL_ChBandwidth + * @param p_UL_ChBandwidth + * @return ChannelBandwidthDependency_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_BandDependentParam(Dl_Bandwidth_Type p_DL_ChBandwidth, + Ul_Bandwidth_Type p_UL_ChBandwidth) + return ChannelBandwidthDependency_Type + { + var ChannelBandwidthDependency_Type v_ChBandDependency; + + // Initialise parameters related to DL Bandwidth + select (p_DL_ChBandwidth ) + { + case (n6){ //1.4MHz + v_ChBandDependency.SIB3_periodicity := rf64; + v_ChBandDependency.SIB4_periodicity := rf128; + v_ChBandDependency.SIB5_periodicity := rf128; + v_ChBandDependency.SIB6_periodicity := rf128; + v_ChBandDependency.SIB7_periodicity := rf128; + v_ChBandDependency.SIB8_periodicity := rf128; + v_ChBandDependency.SIB9_periodicity := rf128; + v_ChBandDependency.SIB10_periodicity := rf64; + v_ChBandDependency.SIB11_periodicity := rf64; + v_ChBandDependency.SIB12_periodicity := rf64; + v_ChBandDependency.SIB13_periodicity := rf64; //MBMS + v_ChBandDependency.SIB14_periodicity := rf64; //SIMTC + v_ChBandDependency.SIB15_periodicity := rf64; //MBMS + v_ChBandDependency.AllowedMeasBandwidth := mbw6; //AllowedMeasBandwidth + v_ChBandDependency.Cfi := 3; // @sic R5s090180 sic@ + } + case (n15){ //3MHz + v_ChBandDependency.SIB3_periodicity := rf64; + v_ChBandDependency.SIB4_periodicity := rf128; + v_ChBandDependency.SIB5_periodicity := rf128; + v_ChBandDependency.SIB6_periodicity := rf128; + v_ChBandDependency.SIB7_periodicity := rf128; + v_ChBandDependency.SIB8_periodicity := rf128; + v_ChBandDependency.SIB9_periodicity := rf128; + v_ChBandDependency.SIB10_periodicity := rf64; + v_ChBandDependency.SIB11_periodicity := rf64; + v_ChBandDependency.SIB12_periodicity := rf64; + v_ChBandDependency.SIB13_periodicity := rf64; //MBMS + v_ChBandDependency.SIB14_periodicity := rf64; //SIMTC + v_ChBandDependency.SIB15_periodicity := rf64; //MBMS + v_ChBandDependency.AllowedMeasBandwidth := mbw15; //AllowedMeasBandwidth + v_ChBandDependency.Cfi := 3; // @sic R5s090180 sic@ + } + case (n25){ //5MHz + v_ChBandDependency.SIB3_periodicity := rf32; + v_ChBandDependency.SIB4_periodicity := rf64; + v_ChBandDependency.SIB5_periodicity := rf64; + v_ChBandDependency.SIB6_periodicity := rf64; + v_ChBandDependency.SIB7_periodicity := rf64; + v_ChBandDependency.SIB8_periodicity := rf64; + v_ChBandDependency.SIB9_periodicity := rf64; + v_ChBandDependency.SIB10_periodicity := rf32; + v_ChBandDependency.SIB11_periodicity := rf32; + v_ChBandDependency.SIB12_periodicity := rf32; + v_ChBandDependency.SIB13_periodicity := rf32; //MBMS + v_ChBandDependency.SIB14_periodicity := rf32; //SIMTC + v_ChBandDependency.SIB15_periodicity := rf32; //MBMS + v_ChBandDependency.AllowedMeasBandwidth := mbw25; + v_ChBandDependency.Cfi := 3; // @sic R5s090180 sic@ + } + case (n50){ //10MHz + v_ChBandDependency.SIB3_periodicity := rf32; + v_ChBandDependency.SIB4_periodicity := rf64; + v_ChBandDependency.SIB5_periodicity := rf64; + v_ChBandDependency.SIB6_periodicity := rf64; + v_ChBandDependency.SIB7_periodicity := rf64; + v_ChBandDependency.SIB8_periodicity := rf64; + v_ChBandDependency.SIB9_periodicity := rf64; + v_ChBandDependency.SIB10_periodicity := rf32; + v_ChBandDependency.SIB11_periodicity := rf32; + v_ChBandDependency.SIB12_periodicity := rf32; + v_ChBandDependency.SIB13_periodicity := rf32; //MBMS + v_ChBandDependency.SIB14_periodicity := rf32; //SIMTC + v_ChBandDependency.SIB15_periodicity := rf32; //MBMS + v_ChBandDependency.AllowedMeasBandwidth := mbw50; //AllowedMeasBandwidth + v_ChBandDependency.Cfi := 2; // @sic R5s090180 sic@ + } + case (n75){ //15MHz + v_ChBandDependency.SIB3_periodicity := rf32; + v_ChBandDependency.SIB4_periodicity := rf64; + v_ChBandDependency.SIB5_periodicity := rf64; + v_ChBandDependency.SIB6_periodicity := rf64; + v_ChBandDependency.SIB7_periodicity := rf64; + v_ChBandDependency.SIB8_periodicity := rf64; + v_ChBandDependency.SIB9_periodicity := rf64; + v_ChBandDependency.SIB10_periodicity := rf32; + v_ChBandDependency.SIB11_periodicity := rf32; + v_ChBandDependency.SIB12_periodicity := rf32; + v_ChBandDependency.SIB13_periodicity := rf32; //MBMS + v_ChBandDependency.SIB14_periodicity := rf32; //SIMTC + v_ChBandDependency.SIB15_periodicity := rf32; //MBMS + v_ChBandDependency.AllowedMeasBandwidth := mbw75; //AllowedMeasBandwidth + v_ChBandDependency.Cfi := 2; // @sic R5s090180 sic@ + } + case (n100){ //20MHz + v_ChBandDependency.SIB3_periodicity := rf32; + v_ChBandDependency.SIB4_periodicity := rf64; + v_ChBandDependency.SIB5_periodicity := rf64; + v_ChBandDependency.SIB6_periodicity := rf64; + v_ChBandDependency.SIB7_periodicity := rf64; + v_ChBandDependency.SIB8_periodicity := rf64; + v_ChBandDependency.SIB9_periodicity := rf64; + v_ChBandDependency.SIB10_periodicity := rf32; + v_ChBandDependency.SIB11_periodicity := rf32; + v_ChBandDependency.SIB12_periodicity := rf32; + v_ChBandDependency.SIB13_periodicity := rf32; //MBMS + v_ChBandDependency.SIB14_periodicity := rf32; //SIMTC + v_ChBandDependency.SIB15_periodicity := rf32; //MBMS + v_ChBandDependency.AllowedMeasBandwidth := mbw100; //AllowedMeasBandwidth + v_ChBandDependency.Cfi := 2; // @sic R5s090180 sic@ + } + case else { + FatalError (__FILE__, __LINE__, "invalid value for ChannelBandwidth"); + } + } + + // Initialise parameters related to UL Bandwidth + // @sic R5s100029 sic@ + select (p_UL_ChBandwidth) { + case (n6){ //1.4MHz + //v_ChBandDependency.Prach_FrequencyOffset := valueFFS; //integer + //v_ChBandDependency.N_RB_CQI := valueFFS; + //v_ChBandDependency.Pusch_HoppingOffset := valueFFS ; //PUCCH_ConfigCommon + //v_ChBandDependency.sr_PUCCH_ResourceIndex := valueFFS; + //v_ChBandDependency.SrsBandwidthConfiguration := valueFFS; //SoundingRS_UL_ConfigCommon.srs_BandwidthConfig + } + case (n15){ //3MHz + //v_ChBandDependency.Prach_FrequencyOffset := valueFFS; //integer + //v_ChBandDependency.N_RB_CQI := valueFFS; //PUCCH_ConfigCommon.nRB_CQI inline type - FFS in 36.331 ENUMERATED {ffs} + //v_ChBandDependency.Pusch_HoppingOffset valueFFS ; + //v_ChBandDependency.sr_PUCCH_ResourceIndex := valueFFS; + //v_ChBandDependency.SrsBandwidthConfiguration := valueFFS; //SoundingRS_UL_ConfigCommon.srs_BandwidthConfig + } + case (n25){ //5MHz + v_ChBandDependency.Prach_FrequencyOffset := 2; + v_ChBandDependency.N_RB_CQI := 2; //type PUCCH_ConfigCommon.nRB_CQI inline type + v_ChBandDependency.Pusch_HoppingOffset := 4 ; + v_ChBandDependency.sr_PUCCH_ResourceIndex := 20; + v_ChBandDependency.SrsBandwidthConfiguration := bw3; //SoundingRS_UL_ConfigCommon.srs_BandwidthConfig + } + case (n50){ //10MHz + v_ChBandDependency.Prach_FrequencyOffset := 4; //integer + v_ChBandDependency.N_RB_CQI := 4; //PUCCH_ConfigCommon.nRB_CQI inline type + v_ChBandDependency.Pusch_HoppingOffset := 8 ; + v_ChBandDependency.sr_PUCCH_ResourceIndex := 41; + v_ChBandDependency.SrsBandwidthConfiguration := bw2; //SoundingRS_UL_ConfigCommon.srs_BandwidthConfig + } + case (n75){ //15MHz + v_ChBandDependency.Prach_FrequencyOffset := 6; //integer + v_ChBandDependency.N_RB_CQI := 6; //PUCCH_ConfigCommon.nRB_CQI inline type + v_ChBandDependency.Pusch_HoppingOffset := 12 ; + v_ChBandDependency.sr_PUCCH_ResourceIndex := 62; + v_ChBandDependency.SrsBandwidthConfiguration := bw2; //SoundingRS_UL_ConfigCommon.srs_BandwidthConfig + } + case (n100){ //20MHz + v_ChBandDependency.Prach_FrequencyOffset := 8; //integer + v_ChBandDependency.N_RB_CQI := 8; //PUCCH_ConfigCommon.nRB_CQI inline type + v_ChBandDependency.Pusch_HoppingOffset := 16 ; + v_ChBandDependency.sr_PUCCH_ResourceIndex := 84; + v_ChBandDependency.SrsBandwidthConfiguration := bw2; //SoundingRS_UL_ConfigCommon.srs_BandwidthConfig + } + case else { + FatalError (__FILE__, __LINE__, "invalid value for ChannelBandwidth"); + } + } + return v_ChBandDependency; + }; +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_CDMA2000Tunnelling.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_CDMA2000Tunnelling.ttcn new file mode 100644 index 0000000..5512cbe --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_CDMA2000Tunnelling.ttcn @@ -0,0 +1,422 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-06-07 00:13:03 +0200 (Sat, 07 Jun 2014) $ +// $Rev: 11664 $ +/******************************************************************************/ + +module EUTRA_ASP_EUTRA_CDMA2000Tunnelling { + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from CommonDefs all; + import from EUTRA_ASP_CDMA2000TunnellingDefs all; + import from EUTRA_ASP_SrbDefs all; + import from EUTRA_CommonDefs all; + import from EUTRA_AspCommon_Templates all; + import from EUTRA_SRB_Templates all; + import from EUTRA_Component all; + import from CommonIratDefs all; + import from EUTRA_RRC_Templates all; + import from CDMA2000_Parameters all; + + type ULInformationTransfer_r8_IEs.dedicatedInfoType ULInformationTransfer_DedicatedInfo_Type; /* @status APPROVED (LTE, LTE_IRAT) */ + type DLInformationTransfer_r8_IEs.dedicatedInfoType DLInformationTransfer_DedicatedInfo_Type; /* @status APPROVED (LTE, LTE_IRAT) */ + const TunneledInfoCDMA2000 tsc_NullInfoCDMA := ''O; + + //**************************************************************************** + // Templates + //---------------------------------------------------------------------------- + + template (present) CDMA2000_MSG_IND car_CDMA2000_MSG_IND := + { /* @status APPROVED (LTE, LTE_IRAT) */ + CDMA2000Type := ?, + DL_Msg := { + Msg := ? + } + }; + + template (value) CDMA2000_MSG_REQ cas_CDMA2000_MSG_REQ(CDMA2000_Type p_CDMA2000Type, + TunneledInfoCDMA2000 p_Msg, + template (omit) MEID_Type p_MEID := omit) := + { /* @status APPROVED (LTE, LTE_IRAT) */ + CDMA2000Type := p_CDMA2000Type, + UL_Msg := { + Msg := p_Msg, + Meid := p_MEID + } + }; + + //---------------------------------------------------------------------------- + + template (present) UL_DCCH_Message cr_ULInformationTransfer_Common(template ULInformationTransfer_DedicatedInfo_Type p_DedicatedInfoType) := + { /* @status APPROVED (LTE, LTE_IRAT) */ + message_ := { + c1 := { + ulInformationTransfer := { + criticalExtensions := { + c1 := { + ulInformationTransfer_r8 := { + dedicatedInfoType := p_DedicatedInfoType, + nonCriticalExtension := * + } + } + } + } + } + } + }; + + template (present) UL_DCCH_Message cr_ULInformationTransfer_1XRTT := cr_ULInformationTransfer_Common({dedicatedInfoCDMA2000_1XRTT := ?}); /* @status APPROVED (LTE, LTE_IRAT) */ + template (present) UL_DCCH_Message cr_ULInformationTransfer_HRPD := cr_ULInformationTransfer_Common({dedicatedInfoCDMA2000_HRPD := ?}); /* @status APPROVED (LTE, LTE_IRAT) */ + + template (value) DL_DCCH_Message cs_DLInformationTransfer_Common(RRC_TransactionIdentifier p_RRC_TI := tsc_RRC_TI_Def, + template (value) DLInformationTransfer_DedicatedInfo_Type p_DedicatedInfoType) := + { /* @status APPROVED (LTE, LTE_IRAT) */ + message_ := { + c1 := { + dlInformationTransfer := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + c1 := { + dlInformationTransfer_r8 := { + dedicatedInfoType := p_DedicatedInfoType, + nonCriticalExtension := omit + } + } + } + } + } + } + }; + + template (value) DLInformationTransfer_DedicatedInfo_Type cs_DedicatedInfoType_1XRTT(DedicatedInfoCDMA2000 p_DedicatedInfoCDMA2000) := + { /* @status APPROVED (LTE, LTE_IRAT) */ + dedicatedInfoCDMA2000_1XRTT := p_DedicatedInfoCDMA2000 + }; + + template (value) DLInformationTransfer_DedicatedInfo_Type cs_DedicatedInfoType_HRPD(DedicatedInfoCDMA2000 p_DedicatedInfoCDMA2000) := + { /* @status APPROVED (LTE, LTE_IRAT) */ + dedicatedInfoCDMA2000_HRPD := p_DedicatedInfoCDMA2000 + }; + + template (value) DL_DCCH_Message cs_DLInformationTransfer_1XRTT(DedicatedInfoCDMA2000 p_DedicatedInfoCDMA2000) := + /* @status APPROVED (LTE, LTE_IRAT) */ + cs_DLInformationTransfer_Common(-, cs_DedicatedInfoType_1XRTT(p_DedicatedInfoCDMA2000)); + + template (value) DL_DCCH_Message cs_DLInformationTransfer_HRPD(DedicatedInfoCDMA2000 p_DedicatedInfoCDMA2000) := + /* @status */ + cs_DLInformationTransfer_Common(-, cs_DedicatedInfoType_HRPD(p_DedicatedInfoCDMA2000)); + + + // Needs to be merged with cs_MobilityFromEutraCommand + template (value) DL_DCCH_Message cs_MobilityFromEutraCommand_C2K(RRC_TransactionIdentifier p_RRC_TI, + TargetRAT_Type p_TargetRAT, + octetstring p_TargetRAT_MessageContainer, + template (omit) octetstring p_Nas_SecurityParamFromEUTRA) := + cs_MobilityFromEutraCommand_Handover(p_RRC_TI, false, p_TargetRAT, p_TargetRAT_MessageContainer, p_Nas_SecurityParamFromEUTRA); + + //---------------------------------------------------------------------------- + // MobilityFromEUTRACommand (36.331 cl. 6.2.2) + + template (value) DL_DCCH_Message cs_MobilityFromEutraCommand_E_CSFB_1xRTT(RRC_TransactionIdentifier p_RRC_TI, + octetstring p_TargetRAT_MessageContainer, + boolean p_CSFallbackInd := false) := + { /* @status APPROVED (LTE_IRAT) */ + message_ := { + c1 := { + mobilityFromEUTRACommand := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + c1 := { + mobilityFromEUTRACommand_r9 := { + cs_FallbackIndicator := p_CSFallbackInd, + purpose := { + e_CSFB_r9 := { + messageContCDMA2000_1XRTT_r9 := p_TargetRAT_MessageContainer, + mobilityCDMA2000_HRPD_r9 := omit, + messageContCDMA2000_HRPD_r9 := omit, + redirectCarrierCDMA2000_HRPD_r9 := omit + } + }, + nonCriticalExtension := omit + } + } + } + } + } + } + }; + + //============================================================================ + /* + * @desc Function to handled tunneled pre-registration procedure + * @param p_CellId + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_CDMA2000_PreRegistration(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { /* NOTE: implementation requires that the SS can cope with subsequent CDMA2000_MSG_REQ + * (=> we don't need to wait for the response before we can send another request) */ + var SRB_COMMON_IND v_SRB_COMMON_IND; + var CDMA2000_MSG_IND v_CDMA2000_MSG_IND; + var CDMA2000_Type v_CDMA2000Type; + var ULInformationTransfer_DedicatedInfo_Type v_DedicatedInfoUL; + var template (value) DLInformationTransfer_DedicatedInfo_Type v_DedicatedInfoDL; + var DedicatedInfoCDMA2000 v_DedicatedInfoCDMA2000; + var boolean v_EndOfProcedure := false; + + while (not v_EndOfProcedure) { + alt { + [] SRB.receive(car_SRB2_RrcPdu_IND(p_CellId, (cr_ULInformationTransfer_1XRTT, cr_ULInformationTransfer_HRPD))) -> value v_SRB_COMMON_IND { + v_DedicatedInfoUL := v_SRB_COMMON_IND.Signalling.Rrc.Dcch.message_.c1.ulInformationTransfer.criticalExtensions.c1.ulInformationTransfer_r8.dedicatedInfoType; + if (ischosen(v_DedicatedInfoUL.dedicatedInfoCDMA2000_1XRTT)) { + v_CDMA2000Type := type1XRTT; + v_DedicatedInfoCDMA2000 := v_DedicatedInfoUL.dedicatedInfoCDMA2000_1XRTT; + } else { + v_CDMA2000Type := typeHRPD; + v_DedicatedInfoCDMA2000 := v_DedicatedInfoUL.dedicatedInfoCDMA2000_HRPD; + } + C2KTUNNEL.send(cas_CDMA2000_MSG_REQ(v_CDMA2000Type, v_DedicatedInfoCDMA2000)); //@sic R5s120891 sic@ + } + [] C2KTUNNEL.receive(car_CDMA2000_MSG_IND) -> value v_CDMA2000_MSG_IND { + v_CDMA2000Type := v_CDMA2000_MSG_IND.CDMA2000Type; + v_DedicatedInfoCDMA2000 := v_CDMA2000_MSG_IND.DL_Msg.Msg; + select (v_CDMA2000Type) { + case (type1XRTT) { v_DedicatedInfoDL := cs_DedicatedInfoType_1XRTT(v_DedicatedInfoCDMA2000); } + case (typeHRPD) { v_DedicatedInfoDL := cs_DedicatedInfoType_HRPD(v_DedicatedInfoCDMA2000); } + } + SRB.send(cas_SRB2_RrcPdu_REQ(p_CellId, cs_TimingInfo_Now, cs_DLInformationTransfer_Common(tsc_RRC_TI_Def, v_DedicatedInfoDL))); + } + [] a_IRAT_WaitForCoOrd_Trigger(CDMA2000) { /* get trigger from the C2K PTC that pre-registration has been finished */ + v_EndOfProcedure := true; + } + } + } + } + //============================================================================ + /* + * @desc Function to handled tunneled pre-registration procedure + * @param p_CellId + * @status APPROVED (LTE) + */ + function f_CDMA2000_RegistrationOrder(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { /* NOTE: implementation requires that the SS can cope with subsequent CDMA2000_MSG_REQ + * (=> we don't need to wait for the response before we can send another request) */ + var CDMA2000_MSG_IND v_CDMA2000_MSG_IND; + var CDMA2000_Type v_CDMA2000Type; + var template (value) DLInformationTransfer_DedicatedInfo_Type v_DedicatedInfoDL; + var DedicatedInfoCDMA2000 v_DedicatedInfoCDMA2000; + + + C2KTUNNEL.receive(car_CDMA2000_MSG_IND) -> value v_CDMA2000_MSG_IND ; + v_CDMA2000Type := v_CDMA2000_MSG_IND.CDMA2000Type; + v_DedicatedInfoCDMA2000 := v_CDMA2000_MSG_IND.DL_Msg.Msg; + select (v_CDMA2000Type) { + case (type1XRTT) { v_DedicatedInfoDL := cs_DedicatedInfoType_1XRTT(v_DedicatedInfoCDMA2000); } + case (typeHRPD) { v_DedicatedInfoDL := cs_DedicatedInfoType_HRPD(v_DedicatedInfoCDMA2000); } + } + SRB.send(cas_SRB2_RrcPdu_REQ(p_CellId, cs_TimingInfo_Now, cs_DLInformationTransfer_Common(tsc_RRC_TI_Def, v_DedicatedInfoDL))); + + + } + //============================================================================ + /* + * @desc function to execute CSFB Parameters procedure + * @param p_CellId + * @param p_RAND_CDMA2000 (default value: omit) + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_CSFBParametersProc_1xRTT(EUTRA_CellId_Type p_CellId, + template (omit) RAND_CDMA2000 p_RAND_CDMA2000 := omit) runs on EUTRA_PTC + { + var CDMA2000_MSG_IND v_CDMA2000_MSG_IND; + var template (value) MobilityParametersCDMA2000 v_MobilityParametersCDMA2000; + var RAND_CDMA2000 v_RAND_CDMA2000 := px_RAND; + + if (isvalue(p_RAND_CDMA2000)) { + v_RAND_CDMA2000 := valueof(p_RAND_CDMA2000); + } + + interleave { + [] SRB.receive(car_SRB1_RrcPdu_IND(p_CellId, cr_508_CSFBParametersRequestCDMA2000)) {} + [] C2KTUNNEL.receive(car_CDMA2000_MSG_IND) -> value v_CDMA2000_MSG_IND {} + + } + + v_MobilityParametersCDMA2000 := v_CDMA2000_MSG_IND.DL_Msg.Msg; + SRB.send(cas_SRB1_RrcPdu_REQ(p_CellId, cs_TimingInfo_Now, cs_508_CSFBParametersResponseCDMA2000(tsc_RRC_TI_Def, v_RAND_CDMA2000, v_MobilityParametersCDMA2000))); + } + + + function f_HandoverEUTRA_HRPD (EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { + var TunneledInfoCDMA2000 v_Msg_C2K; + var SRB_COMMON_IND v_SRB_COMMON_IND; + var CDMA2000_MSG_IND v_CDMA2000_MSG_IND; + + // step 5 + SRB.send(cas_SRB1_RrcPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_508_HandoverFromEUTRAPreparationRequest_HRPD(tsc_RRC_TI_Def))); + // step 6 + SRB.receive (car_SRB1_RrcPdu_IND(p_CellId, + cr_508_ULHandoverPreparationTransfer_HRPD)) -> value v_SRB_COMMON_IND; + v_Msg_C2K := v_SRB_COMMON_IND.Signalling.Rrc.Dcch.message_.c1.ulHandoverPreparationTransfer.criticalExtensions.c1.ulHandoverPreparationTransfer_r8.dedicatedInfo ; + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 6"); + C2KTUNNEL.send(cas_CDMA2000_MSG_REQ(typeHRPD, v_Msg_C2K)); + C2KTUNNEL.receive(car_CDMA2000_MSG_IND) -> value v_CDMA2000_MSG_IND; + v_Msg_C2K := v_CDMA2000_MSG_IND.DL_Msg.Msg; + + // step 7 + SRB.send(cas_SRB1_RrcPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_MobilityFromEutraCommand_C2K(tsc_RRC_TI_Def, cdma2000_HRPD, + v_Msg_C2K, + omit))); + } + + function f_HandoverEUTRA_1xRTT (EUTRA_CellId_Type p_CellId, + template (value) RAND_CDMA2000 p_RAND_CDMA2000 := px_RAND) runs on EUTRA_PTC + { + var TunneledInfoCDMA2000 v_Msg_C2K; + var SRB_COMMON_IND v_SRB_COMMON_IND; + var CDMA2000_MSG_IND v_CDMA2000_MSG_IND; + var MEID_Type v_MEID; + + C2KTUNNEL.receive(car_CDMA2000_MSG_IND) -> value v_CDMA2000_MSG_IND; + v_Msg_C2K := v_CDMA2000_MSG_IND.DL_Msg.Msg; + // step 5 + SRB.send(cas_SRB1_RrcPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_508_HandoverFromEUTRAPreparationRequest_1xRTT(tsc_RRC_TI_Def,p_RAND_CDMA2000, v_Msg_C2K))); + // step 6 + SRB.receive (car_SRB1_RrcPdu_IND(p_CellId, + cr_508_ULHandoverPreparationTransfer_1xRTT)) -> value v_SRB_COMMON_IND; + v_Msg_C2K := v_SRB_COMMON_IND.Signalling.Rrc.Dcch.message_.c1.ulHandoverPreparationTransfer.criticalExtensions.c1.ulHandoverPreparationTransfer_r8.dedicatedInfo; + v_MEID := v_SRB_COMMON_IND.Signalling.Rrc.Dcch.message_.c1.ulHandoverPreparationTransfer.criticalExtensions.c1.ulHandoverPreparationTransfer_r8.meid; + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 6"); + C2KTUNNEL.send(cas_CDMA2000_MSG_REQ(typeHRPD,v_Msg_C2K,v_MEID)); + C2KTUNNEL.receive(car_CDMA2000_MSG_IND) -> value v_CDMA2000_MSG_IND; + v_Msg_C2K := v_CDMA2000_MSG_IND.DL_Msg.Msg; + + // step 7 + SRB.send(cas_SRB1_RrcPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_MobilityFromEutraCommand_C2K(tsc_RRC_TI_Def, cdma2000_1XRTT, + v_Msg_C2K, + omit))); + } + + /* + * @desc perform Tunneled GSCNA encapsulated sequence for E_CSFB sequence + * @param p_CellId + * @param p_RAND_CDMA2000 (default value: px_RAND) + * @status APPROVED (LTE_IRAT) + */ + function f_E_CSFB_EUTRA_1xRTT(EUTRA_CellId_Type p_CellId, + template (value) RAND_CDMA2000 p_RAND_CDMA2000 := px_RAND) runs on EUTRA_PTC + { + var TunneledInfoCDMA2000 v_Msg_C2K; + var SRB_COMMON_IND v_SRB_COMMON_IND; + var CDMA2000_MSG_IND v_CDMA2000_MSG_IND; + var MEID_Type v_MEID; + + C2KTUNNEL.receive(car_CDMA2000_MSG_IND) -> value v_CDMA2000_MSG_IND; + v_Msg_C2K := v_CDMA2000_MSG_IND.DL_Msg.Msg; + // step 5 + SRB.send(cas_SRB1_RrcPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_508_HandoverFromEUTRAPreparationRequest_1xRTT(tsc_RRC_TI_Def,p_RAND_CDMA2000, v_Msg_C2K))); + // step 6 + SRB.receive (car_SRB1_RrcPdu_IND(p_CellId, + cr_508_ULHandoverPreparationTransfer_1xRTT)) -> value v_SRB_COMMON_IND; + v_Msg_C2K := v_SRB_COMMON_IND.Signalling.Rrc.Dcch.message_.c1.ulHandoverPreparationTransfer.criticalExtensions.c1.ulHandoverPreparationTransfer_r8.dedicatedInfo; + v_MEID := v_SRB_COMMON_IND.Signalling.Rrc.Dcch.message_.c1.ulHandoverPreparationTransfer.criticalExtensions.c1.ulHandoverPreparationTransfer_r8.meid; + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 6"); + C2KTUNNEL.send(cas_CDMA2000_MSG_REQ(type1XRTT,v_Msg_C2K,v_MEID)); //@sic R5s130600 sic@ + C2KTUNNEL.receive(car_CDMA2000_MSG_IND) -> value v_CDMA2000_MSG_IND; + v_Msg_C2K := v_CDMA2000_MSG_IND.DL_Msg.Msg; + + // step 7 + SRB.send(cas_SRB1_RrcPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_MobilityFromEutraCommand_E_CSFB_1xRTT(tsc_RRC_TI_Def, v_Msg_C2K))); + } + + function f_E_CSFB_Fail_EUTRA_1xRTT(EUTRA_CellId_Type p_CellId, + template (value) RAND_CDMA2000 p_RAND_CDMA2000 := px_RAND) runs on EUTRA_PTC + { + var TunneledInfoCDMA2000 v_Msg_C2K; + var SRB_COMMON_IND v_SRB_COMMON_IND; + var CDMA2000_MSG_IND v_CDMA2000_MSG_IND; + var MEID_Type v_MEID; + + C2KTUNNEL.receive(car_CDMA2000_MSG_IND) -> value v_CDMA2000_MSG_IND; + v_Msg_C2K := v_CDMA2000_MSG_IND.DL_Msg.Msg; + // step 6 + SRB.send(cas_SRB1_RrcPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_508_HandoverFromEUTRAPreparationRequest_1xRTT(tsc_RRC_TI_Def,p_RAND_CDMA2000, v_Msg_C2K))); + // step 7 + SRB.receive (car_SRB1_RrcPdu_IND(p_CellId, + cr_508_ULHandoverPreparationTransfer_1xRTT)) -> value v_SRB_COMMON_IND; + v_Msg_C2K := v_SRB_COMMON_IND.Signalling.Rrc.Dcch.message_.c1.ulHandoverPreparationTransfer.criticalExtensions.c1.ulHandoverPreparationTransfer_r8.dedicatedInfo; + v_MEID := v_SRB_COMMON_IND.Signalling.Rrc.Dcch.message_.c1.ulHandoverPreparationTransfer.criticalExtensions.c1.ulHandoverPreparationTransfer_r8.meid; + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 6"); + C2KTUNNEL.send(cas_CDMA2000_MSG_REQ(typeHRPD,v_Msg_C2K,v_MEID)); + C2KTUNNEL.receive(car_CDMA2000_MSG_IND) -> value v_CDMA2000_MSG_IND; + v_Msg_C2K := v_CDMA2000_MSG_IND.DL_Msg.Msg; + + // step 8 + SRB.send(cas_SRB2_RrcPdu_REQ(p_CellId, cs_TimingInfo_Now, cs_DLInformationTransfer_Common(tsc_RRC_TI_Def, cs_DedicatedInfoType_1XRTT(v_Msg_C2K)))); + } + + /* + * @desc function to handle tunneled MT CSFB to 1xRTT + * @param p_CellId + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_MTCSFB_EUTRA_1xRTT (EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { + var TunneledInfoCDMA2000 v_Msg_C2K; + var CDMA2000_MSG_IND v_CDMA2000_MSG_IND; + + C2KTUNNEL.receive(car_CDMA2000_MSG_IND) -> value v_CDMA2000_MSG_IND; + v_Msg_C2K := v_CDMA2000_MSG_IND.DL_Msg.Msg; + SRB.send(cas_SRB2_RrcPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_DLInformationTransfer_1XRTT(v_Msg_C2K))); + } + + //============================================================================ + /* + * @desc perform Tunneled GSCNA encapsulated power down detach + * @param p_CellId + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_CDMA2000_PowerDownDetach_1xRTT(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { + var SRB_COMMON_IND v_SRB_COMMON_IND; + var TunneledInfoCDMA2000 v_Msg_C2K; + var CDMA2000_MSG_IND v_CDMA2000_MSG_IND; + //Receive GCSNA encapsulated Power-Down Registration message + + SRB.receive(car_SRB2_RrcPdu_IND(p_CellId, cr_ULInformationTransfer_1XRTT)) -> value v_SRB_COMMON_IND; + C2KTUNNEL.send(cas_CDMA2000_MSG_REQ(type1XRTT, v_SRB_COMMON_IND.Signalling.Rrc.Dcch.message_.c1.ulInformationTransfer.criticalExtensions.c1.ulInformationTransfer_r8.dedicatedInfoType.dedicatedInfoCDMA2000_1XRTT)); + //Send GCSNAL2Ack as per C.s0097 clause 2.5.2 + //@sic R5s142283 sic@ + C2KTUNNEL.receive(car_CDMA2000_MSG_IND) -> value v_CDMA2000_MSG_IND; //@sic R5s120898 sic@ + v_Msg_C2K := v_CDMA2000_MSG_IND.DL_Msg.Msg; + SRB.send(cas_SRB2_RrcPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_DLInformationTransfer_1XRTT(v_Msg_C2K))); + //Send Registration Accept Order as per C.s0097 + C2KTUNNEL.receive(car_CDMA2000_MSG_IND) -> value v_CDMA2000_MSG_IND; //@sic R5142283 sic@ + v_Msg_C2K := v_CDMA2000_MSG_IND.DL_Msg.Msg; + SRB.send(cas_SRB2_RrcPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_DLInformationTransfer_1XRTT(v_Msg_C2K))); + } +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_CellInfo.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_CellInfo.ttcn new file mode 100644 index 0000000..8b53485 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_CellInfo.ttcn @@ -0,0 +1,5118 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 22:08:20 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12181 $ +/******************************************************************************/ +module EUTRA_CellInfo { + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from EUTRA_ASP_TypeDefs all; + import from NAS_CommonTypeDefs all; + import from EPS_NAS_TypeDefs all; + import from CommonIratDefs all; + + import from Parameters all; + import from EUTRA_Parameters all; + import from EUTRA_Component all; + + import from EUTRA_SecurityFunctions all; + + import from EUTRA_RRC_Templates all; + import from EUTRA_SysInfo_Templates all; + + import from EUTRA_CellInfoFrequency all; + import from EUTRA_AuxiliaryFunctions all; + import from EUTRA_BandDependentParam all; + import from TestcaseProperties all; + + // ------------------------------------------------------ + // EUTRA cell info type + // ------------------------------------------------------ + const M_TMSI_Type tsc_M_TMSI1 := oct2bit('C2345678'O); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + @sic R5s120728 sic@ */ + const AbsoluteCellPower_Type tsc_ServingCellRS_EPRE := -85; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + const AbsoluteCellPower_Type tsc_SuitableCellRS_EPRE := -97; /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + const AbsoluteCellPower_Type tsc_NonSuitableCellRS_EPRE := -115; /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + const AbsoluteCellPower_Type tsc_NonSuitableOffCellRS_EPRE := -145; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + const AbsoluteCellPower_Type tsc_Suitable_NeighbourIntraFreq_CellRS_EPRE := -91; /* @status APPROVED (LTE, LTE_A, LTE_IRAT, POS) */ + const AbsoluteCellPower_Type tsc_CellRS_EPRE_65 := -65; /* @status APPROVED (LTE) */ + + const RACH_TimingAdvance_Type tsc_RACH_TA_Def := 0; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + @sic R5s090180 sic@ */ + const P_b_Type tsc_P_b_2Tx := 1; /* acc. to 36.508 Table Table 4.6.3-5; + @status APPROVED (LTE) */ + + /******************************************************************************/ + // -------------------------- TEMPLATES -------------------------------------- + /*******************************************************************************/ + + template (value) PLMN_IdentityList cs_PlmnIdList_1Entry (template (value) PLMN_Identity p_PLMN_Id):= + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + { + plmn_Identity := p_PLMN_Id, + cellReservedForOperatorUse := notReserved + } + }; + + template (value) EUTRA_CellInfo_Type cs_EUTRA_CellInfoDef(template (value) CellIdentities_Type p_CellIds, + template (value) Combination_Type p_Combination, + template (value) FreqBandIndicator p_FrequencyBand, + template (value) CarrierFreqEUTRA p_UL_DL_Earfcn, + Dl_Bandwidth_Type p_DL_ChBandwidth, + template (omit) Ul_Bandwidth_Type p_UL_ChBandwidth, + template (value) NAS_Parameter_Type p_NAS_Param, + template (value) BcchInfo_Type p_BCCH_Info, + template (value) CellTimingInfo_Type p_CellTimingInfo, + template (value) EUTRA_FDD_TDD_CellInfo_Type p_FDD_TDD_Info, + CfiValue_Type p_CfiValue, + RACH_TimingAdvance_Type p_RAR_TA, + SR_PUCCH_ResourceIndex_Type p_SR_PUCCH_ResourceIndex) := // @sic R5s090312 sic@ + { /* @desc Default cell info value + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + CellIds := p_CellIds, + Frequency := { + FrequencyBandIndicator := p_FrequencyBand, + DL_ChBandwidth := p_DL_ChBandwidth, + UL_ChBandwidth := p_UL_ChBandwidth, + UL_DL_Earfcn := p_UL_DL_Earfcn + }, + + FDD_TDD_Info := p_FDD_TDD_Info, + Sysinfo := { + BCCH_Info := p_BCCH_Info, + Combination := p_Combination, + SB1_ValueTagChanged := false + }, + NAS_Parameters := p_NAS_Param, + CellTimingInfo := p_CellTimingInfo, + ReferencePower := { + MaxReferencePower := tsc_ServingCellRS_EPRE, + Attenuation := {Off := true} + }, + CellConfigCapability := fullCell, // all cells are intialised by default with fullCell + RNTI := { C_RNTI := tsc_C_RNTI_Def }, + PhysicalParameters := { + Cfi := p_CfiValue, + RAR_TA := p_RAR_TA, + sr_PUCCH_ResourceIndex := p_SR_PUCCH_ResourceIndex, + PDSCH_p_b := tsc_P_b_1Tx // acc to 36.508 Table 4.6.3-5: PDSCH-ConfigCommon-DEFAULT @sic R5-100786 sic@ + }, + AntennaInfo := { // default value for 1TX @sic R5-100786 sic@ + SS_AntennaInfoCommon := cs_AntennaInfoCommon_1Port, + AntennaInfoCommon := omit, + SS_AntennaInfoDedicated := cs_AntennaInfoDedicated_Def, + AntennaInfoDedicated := cs_PhysicalConfigDedicated_AntennaInfo_Def + }, + DrxCtrl := { // @sic R5-104796 DRX support sic@ + None := true + }, + MeasGapCtrl := { // @sic R5s110743 sic@ + None := true + }, + NoUL_Frequency := false + }; + + template (value) PLMN_Identity cs_HPLMN_Def := { mcc := {0,0,1}, mnc :={0,1} }; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + template (value) PLMN_Identity cs_HPLMN_001_11 := { mcc := {0,0,1}, mnc :={1,1} }; /* @status APPROVED (LTE, LTE_A) */ + template (value) PLMN_Identity cs_HPLMN_001_21 := { mcc := {0,0,1}, mnc :={2,1} }; /* @status APPROVED (LTE, LTE_A) */ + template (value) PLMN_Identity cs_HPLMN_001_31 := { mcc := {0,0,1}, mnc :={3,1} }; /* @status APPROVED (LTE) */ + template (value) PLMN_Identity cs_HPLMN_001_41 := { mcc := {0,0,1}, mnc :={4,1} }; /* @status APPROVED (LTE) */ + template (value) PLMN_Identity cs_HPLMN_002_11 := { mcc := {0,0,2}, mnc :={1,1} }; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + template (value) PLMN_Identity cs_HPLMN_003_21 := { mcc := {0,0,3}, mnc :={2,1} }; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + template (value) PLMN_Identity cs_HPLMN_004_31 := { mcc := {0,0,4}, mnc :={3,1} }; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + template (value) PLMN_Identity cs_HPLMN_001_02 := { mcc := {0,0,1}, mnc :={0,2} }; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + template (value) PLMN_Identity cs_HPLMN_002_101 := { mcc := {0,0,2}, mnc :={1,0,1} }; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + template (value) PLMN_Identity cs_HPLMN_003_101 := { mcc := {0,0,3}, mnc :={1,0,1} }; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + template (value) PLMN_Identity cs_HPLMN_010_12 := { mcc := {0,1,0}, mnc :={1,2} }; /* @status (APPROVED) */ + + template (value) GutiParameters_Type cs_Guti(template (value) PLMN_Identity p_PLMN, + integer p_MmeGroupId, + integer p_MmeCode) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + PLMN_Identity := p_PLMN, + MME_GroupId := int2bit(p_MmeGroupId,16), + MME_Code := int2bit(p_MmeCode,8), + M_TMSI := tsc_M_TMSI1 + }; + + + template (value) EUTRA_FDD_TDD_CellInfo_Type cs_EUTRA_FDD_Info := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + FDD_TDD := FDD, + cqi_ReportConfig := cs_CQI_ReportingPeriodic_FDD, + soundingRS_UL_Config := cs_508_SoundingRsUl_ConfigDedicated_Default_FDD, + pucch_Config := cs_508_PUCCH_ConfigDedicated_Default_FDD, + TDD_SubframeAssignment := omit, // Applicable for TDD only + sr_ConfigIndex := 30 // @sic R5-102177 sic@ + }; + + + template (value) EUTRA_FDD_TDD_CellInfo_Type cs_EUTRA_TDD_Info(TDD_SubframeAssignment_Type p_TDD_SubframeAssignment) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + FDD_TDD := TDD, + cqi_ReportConfig := cds_CQI_ReportingPeriodic_TDD, + soundingRS_UL_Config := cds_508_SoundingRsUl_ConfigDedicated_Default_TDD, + pucch_Config := cds_508_PUCCH_ConfigDedicated_Default_TDD, + TDD_SubframeAssignment := p_TDD_SubframeAssignment, + sr_ConfigIndex := 27 // @sic R5-102177 sic@ + }; + + /******************************************************************************/ + // -------------------------- FUNCTIONS -------------------------------------- + /*******************************************************************************/ + /* + * @desc Return the index corresponding to p_CellId + * local function used only in that module + * @param p_CellId + * @return integer + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_GetIndex(EUTRA_CellId_Type p_CellId) return integer + { /* @sic R5096440 sic@ */ + var integer v_Index := 0; + + select (p_CellId) { + case (eutra_CellA, eutra_Cell1) { + v_Index := 0; + } + case (eutra_CellB, eutra_Cell2) { + v_Index := 1; + } + case (eutra_CellC, eutra_Cell3) { + v_Index := 2; + } + case (eutra_CellD, eutra_Cell4) { + v_Index := 3; + } + case (eutra_CellE, eutra_Cell6) { + v_Index := 4; + } + case (eutra_Cell10) { + v_Index := 5; + } + case (eutra_CellG, eutra_Cell11) { + v_Index := 6; + } + case (eutra_CellH, eutra_Cell12) { + v_Index := 7; + } + case (eutra_CellI, eutra_Cell13) { + v_Index := 8; + } + case (eutra_CellJ, eutra_Cell14) { + v_Index := 9; + } + case (eutra_CellK, eutra_Cell23) { + v_Index := 10; + } + case (eutra_CellL, eutra_Cell28) { + v_Index := 11; + } + case (eutra_CellM, eutra_Cell29) { + v_Index := 12; + } + case (eutra_Cell30) { + v_Index := 13; + } + case (eutra_Cell31) { + v_Index := 14; + } case else { + FatalError (__FILE__, __LINE__, "Invalid CellId"); + } + } + return v_Index; + }; + + + /*******************************************************************************/ + // ============================ Initialisation functions ================= + /* + * @desc Initialise the cell physical ID according to 36.508 Table 4.4.2-1A and 36.523-3 cl 7.4.4 + * @param p_CellId + * @return PhysCellId + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + * @sic R5096440 sic@ + */ + function fl_EUTRA_InitPhysicalCellId (EUTRA_CellId_Type p_CellId) return PhysCellId + { + var PhysCellId v_PhysicalCellId; + select (p_CellId) { + case (eutra_Cell1) { + v_PhysicalCellId := 0; + } + case (eutra_CellA) { + v_PhysicalCellId := 1; + } + case (eutra_CellB, eutra_Cell2) { + v_PhysicalCellId := 2; + } + case (eutra_CellC, eutra_Cell3) { + v_PhysicalCellId := 3; + } + case (eutra_CellD, eutra_Cell4) { + v_PhysicalCellId := 4; + } + case (eutra_Cell6) { + v_PhysicalCellId := 6; + } + case (eutra_Cell10) { + v_PhysicalCellId := 10; // @sic R5s100392 sic@ + } + case (eutra_CellG, eutra_Cell11) { + v_PhysicalCellId := 11; + } + case (eutra_CellH, eutra_Cell12) { + v_PhysicalCellId := 12; + } + case (eutra_CellI, eutra_Cell13) { + v_PhysicalCellId := 13; + } + case (eutra_CellJ, eutra_Cell14) { + v_PhysicalCellId := 14; + } + case (eutra_CellK) { + v_PhysicalCellId := 15; + } + case (eutra_CellL) { + v_PhysicalCellId := 16; + } + case (eutra_CellM) { + v_PhysicalCellId := 17; + } + case (eutra_CellE, eutra_Cell23) { + v_PhysicalCellId := 23; + } + case (eutra_Cell28) { + v_PhysicalCellId := 28; + } + case (eutra_Cell29) { + v_PhysicalCellId := 29; + } + case (eutra_Cell30) { + v_PhysicalCellId := 30; + } + case (eutra_Cell31) { + v_PhysicalCellId := 31; + } + case else { + FatalError (__FILE__, __LINE__, "Invalid CellId"); + } + } + return v_PhysicalCellId; + } + + //------------------------------------------------------------------------------------------ + /* + * @desc Initialise the physical cell identity and the E-UTRAN cell identity according to 36.508 table 4.4.2-1A + * @param p_CellId + * @return CellIdentities_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function fl_EUTRA_InitCellIdentities(EUTRA_CellId_Type p_CellId) return CellIdentities_Type + { /* @sic R5096440 sic@ */ + + var CellIdentities_Type v_CellIds; + + // Initialise the physical cell indentiy + v_CellIds.PhysicalCellId := fl_EUTRA_InitPhysicalCellId (p_CellId); + + // Initialise the cell Identity: E-NodeB (20 bits) + Cell Identity (8 bits) + // Values according to 36.508 Table 4.4.2-1A + select (p_CellId) { + case (eutra_Cell1) { + v_CellIds.CellIdentity := int2bit(1, 20) & int2bit(0, 8); + } + case (eutra_Cell2) { + v_CellIds.CellIdentity := int2bit(1, 20) & int2bit(2, 8); + } + case (eutra_Cell3) { + v_CellIds.CellIdentity := int2bit(2, 20) & int2bit(3, 8); + } + case (eutra_Cell4) { + v_CellIds.CellIdentity := int2bit(3, 20) & int2bit(4, 8); + } + case (eutra_Cell6) { + v_CellIds.CellIdentity := int2bit(4, 20) & int2bit(6, 8); + } + case (eutra_Cell10) { + v_CellIds.CellIdentity := int2bit(5, 20) & int2bit(10, 8); + } + case (eutra_Cell11) { + v_CellIds.CellIdentity := int2bit(6, 20) & int2bit(11, 8); + } + case (eutra_Cell12) { + v_CellIds.CellIdentity := int2bit(2, 20) & int2bit(12, 8); + } + case (eutra_Cell13) { + v_CellIds.CellIdentity := int2bit(4, 20) & int2bit(13, 8); + } + case (eutra_Cell14) { + v_CellIds.CellIdentity := int2bit(7, 20) & int2bit(14, 8); + } + case (eutra_Cell23) { + v_CellIds.CellIdentity := int2bit(6, 20) & int2bit(23, 8); + } + case (eutra_Cell28) { + v_CellIds.CellIdentity := int2bit(6, 20) & int2bit(28, 8); + } + case (eutra_Cell29) { + v_CellIds.CellIdentity := int2bit(6, 20) & int2bit(29, 8); + } + case (eutra_Cell30) { + v_CellIds.CellIdentity := int2bit(6, 20) & int2bit(30, 8); + } + case (eutra_Cell31) { + v_CellIds.CellIdentity := int2bit(6, 20) & int2bit(31, 8); + } + case else { + FatalError (__FILE__, __LINE__, "Invalid CellId"); + } + } + return v_CellIds; + }; + + // --------------------------------------------------------------------------------- + /* + * @desc Return the FDD or TDD mode based on the parameterised Band + * @param p_FrequencyBand + * @return EUTRA_FDD_TDD_CellInfo_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function fl_EUTRA_InitFDD_TDD_FromBand (FreqBandIndicator p_FrequencyBand) return EUTRA_FDD_TDD_CellInfo_Type + { + var template (value) EUTRA_FDD_TDD_CellInfo_Type v_FDD_TDD_Info; + + if (p_FrequencyBand < 33) { // Bands below 33 are reserved for FDD + v_FDD_TDD_Info := cs_EUTRA_FDD_Info; + } else { // Bands above 33 are reserved for TDD + v_FDD_TDD_Info := cs_EUTRA_TDD_Info(px_eTDDsubframeConfig); //@sic R5-096691 sic@ + } + return valueof(v_FDD_TDD_Info); // Note: valueof cannot be avoided here + }; + + //------------------------------------------------------------------------------------------ + /* + * @desc Initialise the physical cell identity and the E-UTRAN cell identity according to 36.523-3 clause 7.4.4 + * @param p_CellId + * @param p_CellsOnPLMN + * @return CellIdentities_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function fl_EUTRA_InitCellIdentities_NAS(EUTRA_CellId_Type p_CellId, + EUTRA_NAS_NumOfPLMN_Type p_CellsOnPLMN) return CellIdentities_Type + { /* @sic R5096440 sic@ */ + + var CellIdentities_Type v_CellIds; + + // Initialise the physical cell indentiy + v_CellIds.PhysicalCellId := fl_EUTRA_InitPhysicalCellId (p_CellId); + + // Initialise the cell Identity: E-NodeB (20 bits) + Cell Identity (8 bits) + + select (p_CellsOnPLMN) { + case (LTE_CellsOnDifferentPLMN) { + // Values according to 36.523-3 Table 7.4.4-1 + select (p_CellId) { + case (eutra_CellA) { + v_CellIds.CellIdentity := int2bit(33, 20) & int2bit(1, 8); + } + case (eutra_CellB) { + v_CellIds.CellIdentity := int2bit(33, 20) & int2bit(2, 8); + } + case (eutra_CellC) { + v_CellIds.CellIdentity := int2bit(33, 20) & int2bit(3, 8); + } + case (eutra_CellD) { + v_CellIds.CellIdentity := int2bit(33, 20) & int2bit(4, 8); + } + case (eutra_CellE) { + v_CellIds.CellIdentity := int2bit(53, 20) & int2bit(23, 8); + } + case (eutra_CellG) { + v_CellIds.CellIdentity := int2bit(34, 20) & int2bit(11, 8); + } + case (eutra_CellH) { + v_CellIds.CellIdentity := int2bit(34, 20) & int2bit(12, 8); + } + case (eutra_CellI) { + v_CellIds.CellIdentity := int2bit(35, 20) & int2bit(13, 8); + } + case (eutra_CellJ) { + v_CellIds.CellIdentity := int2bit(36, 20) & int2bit(14, 8); + } + case (eutra_CellK) { + v_CellIds.CellIdentity := int2bit(35, 20) & int2bit(15, 8); + } + case (eutra_CellL) { + v_CellIds.CellIdentity := int2bit(35, 20) & int2bit(16, 8); + } + case (eutra_CellM) { + v_CellIds.CellIdentity := int2bit(33, 20) & int2bit(17, 8); + } + case else { + FatalError (__FILE__, __LINE__, "Invalid CellId"); + } + } + } + case (LTE_AllCellsOnSamePLMN) { + // Values according to 36.508 Table 6.3.2.2-2 + select (p_CellId) { + case (eutra_CellA) { + v_CellIds.CellIdentity := int2bit(17, 20) & int2bit(1, 8); + } + case (eutra_CellB) { + v_CellIds.CellIdentity := int2bit(17, 20) & int2bit(2, 8); + } + case (eutra_CellC) { + v_CellIds.CellIdentity := int2bit(18, 20) & int2bit(3, 8); + } + case (eutra_CellD) { + v_CellIds.CellIdentity := int2bit(17, 20) & int2bit(4, 8); + } + case (eutra_CellM) { + v_CellIds.CellIdentity := int2bit(33, 20) & int2bit(17, 8); + } + case else { + FatalError (__FILE__, __LINE__, "Invalid CellId for NAS cells on the same PLMN"); + } + } + } + case else { + FatalError (__FILE__, __LINE__, "Invalid EUTRA_NAS_NumOfPLMN"); + } + } + return v_CellIds; + }; + + // --------------------------------------------------------------------------------- + /* + * @desc return the cell timing info according to 36.253-3 clause 7.4.3 + * @param p_CellId + * @param p_FddOrTdd + * @param p_CellsOnPLMN Parameter to be used for NAS cells + * @return CellTimingInfo_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function fl_EUTRA_InitialiseCellTiming(EUTRA_CellId_Type p_CellId, + EUTRA_FDD_TDD_Mode_Type p_FddOrTdd, + EUTRA_NAS_NumOfPLMN_Type p_CellsOnPLMN) return CellTimingInfo_Type + { /* @sic R5-096691 R5-121777 sic@ */ + var CellTimingInfo_Type v_CellTiming; + var integer v_TcellTDD := 0; // (0..307199) acc. to 36.523-3 Table 7.4.3.1-1 + var integer v_TcellFDD := 0; // (0..307199) acc. to 36.523-3 Table 7.4.3.1-1 + var integer v_SfnOffset:= 0; // (0..1023) acc. to 36.523-3 Table 7.4.3.1-1 + + select (p_CellId) { + case (eutra_Cell1, eutra_CellA) { + v_SfnOffset := 0; + v_TcellFDD := 0; + v_TcellTDD := 0; + } + case (eutra_Cell2){ + v_SfnOffset := 124; + v_TcellFDD := 30720; + v_TcellTDD := 154; + } + case (eutra_Cell3){ + v_SfnOffset := 257; + v_TcellFDD := 150897; + v_TcellTDD := 77; + } + case (eutra_Cell4){ + v_SfnOffset := 1000; + v_TcellFDD := 61440; + v_TcellTDD := 307; + } + case (eutra_Cell6){ + v_SfnOffset := 657; + v_TcellFDD := 524; + v_TcellTDD := 77; + } + case (eutra_Cell10){ + v_SfnOffset := 129; + v_TcellFDD := 43658; + v_TcellTDD := 77; + } + case (eutra_Cell11){ + v_SfnOffset := 957; + v_TcellFDD := 92160; + v_TcellTDD := 154; + } + case (eutra_Cell12){ + v_SfnOffset := 1015; + v_TcellFDD := 181617; + v_TcellTDD := 154; + } + case (eutra_Cell13){ + v_SfnOffset := 890; + v_TcellFDD := 31244; + v_TcellTDD := 154; + } + case (eutra_Cell14){ + v_SfnOffset := 680; + v_TcellFDD := 300501; + v_TcellTDD := 77; + } + case (eutra_Cell23) { + v_SfnOffset := 383; + v_TcellFDD := 212337; + v_TcellTDD := 154; + } + case (eutra_Cell28) { + v_SfnOffset := 890; + v_TcellFDD := 31244; + v_TcellTDD := 154; + } + case (eutra_Cell29) { + v_SfnOffset := 680; + v_TcellFDD := 300501; + v_TcellTDD := 77; + } + case (eutra_Cell30) { + v_SfnOffset := 1015; + v_TcellFDD := 181617; + v_TcellTDD := 154; + } + case (eutra_Cell31) { + v_SfnOffset := 383; + v_TcellFDD := 212337; + v_TcellTDD := 154; + } + case (eutra_CellB) { + v_SfnOffset := 124; + v_TcellFDD := 30720; + v_TcellTDD := 154; + } + case (eutra_CellC) { + v_SfnOffset := 257; + if (p_CellsOnPLMN == LTE_CellsOnDifferentPLMN) { + v_TcellFDD := 61440; + v_TcellTDD := 307; + } else { + v_TcellFDD := 150897; + v_TcellTDD := 77; + }; + } + case (eutra_CellD) { + v_SfnOffset := 1000; + if (p_CellsOnPLMN == LTE_CellsOnDifferentPLMN) { + v_TcellFDD := 92160; + v_TcellTDD := 154; + } else { + v_TcellFDD := 61440; + v_TcellTDD := 307; + }; + } + case (eutra_CellE) { + v_SfnOffset := 657; + if (p_CellsOnPLMN == LTE_CellsOnDifferentPLMN) {v_TcellFDD := 92160} else {v_TcellFDD := 524}; + v_TcellTDD := 77; + } + case (eutra_CellG) { + v_SfnOffset := 957; + v_TcellFDD := 631; + v_TcellTDD := 77; + } + case (eutra_CellH) { + v_SfnOffset := 1015; + v_TcellFDD := 31351; + v_TcellTDD := 154 + } + case (eutra_CellI) { + v_SfnOffset := 890; + v_TcellFDD := 127200; + v_TcellTDD := 77; + } + case (eutra_CellJ) { + v_SfnOffset := 680; + v_TcellFDD := 1327; + v_TcellTDD := 77; + } + case (eutra_CellK) { + v_SfnOffset := 383; + v_TcellFDD := 157920; + v_TcellTDD := 154; + } + case (eutra_CellL) { + v_SfnOffset := 562; + v_TcellFDD := 188640; + v_TcellTDD := 307; + } + case (eutra_CellM) { + v_SfnOffset := 471; + if (p_CellsOnPLMN == LTE_CellsOnDifferentPLMN) { + v_TcellFDD := 122880; + v_TcellTDD := 307; + } else { + v_TcellFDD := 31244; + v_TcellTDD := 154; + }; + } + case else { + FatalError (__FILE__, __LINE__, "invalid cell Idendtity"); + } + } + + v_CellTiming.SfnOffset := v_SfnOffset; + + select (p_FddOrTdd) { + case (TDD) { + v_CellTiming.Tcell := v_TcellTDD; + } + case (FDD) { + v_CellTiming.Tcell := v_TcellFDD; + } + case else { + FatalError (__FILE__, __LINE__, "invalid mode"); + } + } + return v_CellTiming; + } + + //------------------------------------------------------------------------------------------ + /* + * @desc Return PRACH Root sequence index according to + * - table 4.4.2-1A in 36.508 cl 4.4.2 + * - table 6.3.2.2-2 and 6.3.2.2-3 in 36.508 cl 6.3.2.2 + * @param p_CellId + * @param p_FddOrTdd + * @param p_CellsOnPLMN + * @return RootSequenceIndex_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_InitialisePRACH_RootSequenceIndex(EUTRA_CellId_Type p_CellId, + EUTRA_FDD_TDD_Mode_Type p_FddOrTdd, + EUTRA_NAS_NumOfPLMN_Type p_CellsOnPLMN) + return RootSequenceIndex_Type + { /* @sic R5096641 R5-104732 sic@ */ + var RootSequenceIndex_Type v_RootSequenceIndexFDD := 0; + var RootSequenceIndex_Type v_RootSequenceIndexTDD := 0; + + select (p_CellId) { + case (eutra_Cell1) {v_RootSequenceIndexFDD:=22; v_RootSequenceIndexTDD:=0} + case (eutra_Cell2) {v_RootSequenceIndexFDD:=86; v_RootSequenceIndexTDD:=8} + case (eutra_Cell3) {v_RootSequenceIndexFDD:=22; v_RootSequenceIndexTDD:=0} + case (eutra_Cell4) {v_RootSequenceIndexFDD:=150; v_RootSequenceIndexTDD:=16} + case (eutra_Cell6) {v_RootSequenceIndexFDD:=22; v_RootSequenceIndexTDD:=0} + case (eutra_Cell10) {v_RootSequenceIndexFDD:=22; v_RootSequenceIndexTDD:=0} + case (eutra_Cell11) {v_RootSequenceIndexFDD:=214; v_RootSequenceIndexTDD:=24} + case (eutra_Cell12) {v_RootSequenceIndexFDD:=86; v_RootSequenceIndexTDD:=8} + case (eutra_Cell13) {v_RootSequenceIndexFDD:=86; v_RootSequenceIndexTDD:=8} + case (eutra_Cell14) {v_RootSequenceIndexFDD:=22; v_RootSequenceIndexTDD:=0} + case (eutra_Cell23) {v_RootSequenceIndexFDD:=150; v_RootSequenceIndexTDD:=16} + case (eutra_Cell28) {v_RootSequenceIndexFDD:=86; v_RootSequenceIndexTDD:=8} + case (eutra_Cell29) {v_RootSequenceIndexFDD:=86; v_RootSequenceIndexTDD:=8} + case (eutra_Cell30) {v_RootSequenceIndexFDD:=22; v_RootSequenceIndexTDD:=0} + case (eutra_Cell31) {v_RootSequenceIndexFDD:=214; v_RootSequenceIndexTDD:=24} + case (eutra_CellA) {v_RootSequenceIndexFDD:=22; v_RootSequenceIndexTDD:=0} + case (eutra_CellB) {v_RootSequenceIndexFDD:=86; v_RootSequenceIndexTDD:=8} + case (eutra_CellC) { + if (p_CellsOnPLMN==LTE_AllCellsOnSamePLMN) { + v_RootSequenceIndexFDD:=22; + v_RootSequenceIndexTDD:=0; + } else { + v_RootSequenceIndexFDD:=150; + v_RootSequenceIndexTDD:=16; + } + } + case (eutra_CellD) { + if (p_CellsOnPLMN==LTE_AllCellsOnSamePLMN) { + v_RootSequenceIndexFDD:=150; + v_RootSequenceIndexTDD:=16; + } else { + v_RootSequenceIndexFDD:=214; + v_RootSequenceIndexTDD:=24; + } + } + case (eutra_CellE) { + v_RootSequenceIndexFDD:=22; + v_RootSequenceIndexTDD:=0; + } + case (eutra_CellG) { + v_RootSequenceIndexFDD:=86; + v_RootSequenceIndexTDD:=8; + } + case (eutra_CellH) { + v_RootSequenceIndexFDD:=150; + v_RootSequenceIndexTDD:=16; + } + case (eutra_CellI) { + v_RootSequenceIndexFDD:=22; + v_RootSequenceIndexTDD:=0; + } + case (eutra_CellJ) { + v_RootSequenceIndexFDD:=22; + v_RootSequenceIndexTDD:=0; + } + case (eutra_CellK) { + v_RootSequenceIndexFDD:=86; + v_RootSequenceIndexTDD:=8; + } + case (eutra_CellL) { + v_RootSequenceIndexFDD:=150; + v_RootSequenceIndexTDD:=16; + } + case (eutra_CellM) { + if (p_CellsOnPLMN==LTE_AllCellsOnSamePLMN) { + v_RootSequenceIndexFDD:=86; + v_RootSequenceIndexTDD:=8; + } else { + v_RootSequenceIndexFDD:=278; + v_RootSequenceIndexTDD:=32; + } + } + case else { + FatalError (__FILE__, __LINE__, "invalid cellId value"); + } + } + if (p_FddOrTdd == FDD) { + return v_RootSequenceIndexFDD; + } else { + return v_RootSequenceIndexTDD; + } + } + + //------------------------------------------------------------------------------------------ + /* + * @desc Return the Random Access Request Timing Advance according to 36.523-3 cl 7.4.3 + * - table 7.4.3.1-1, 7.4.3.1-1 and 7.4.3.1-3 in 36.523-3 cl 7.4.3 + * @param p_FddOrTdd + * @param p_CellTiming + * @return RACH_TimingAdvance_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function fl_EUTRA_InitialiseRAR_TA(EUTRA_FDD_TDD_Mode_Type p_FddOrTdd, + CellTimingInfo_Type p_CellTiming) // @sic R5-121777 sic@ + return RACH_TimingAdvance_Type + { /* @sic R5096691 sic@ */ + + var RACH_TimingAdvance_Type v_RAR_TA:= tsc_RACH_TA_Def; + + if (p_FddOrTdd == FDD) { + v_RAR_TA := tsc_RACH_TA_Def; + } else { + // for RAR TA = FLOOR((Tcell) mod 30720 / 16) + // @sic R5-121777 sic@ + v_RAR_TA := (p_CellTiming.Tcell mod 30720)/16; + } + return v_RAR_TA; + } + + //---------------------------------------------------------------------------- + // ----------------- Initialise SYSINFO -------------------------------------- + + /* + * @desc Convert the DL bandwidth value from Dl_Bandwidth_Type to EUTRA_SysinfoDL_Bandwidth_Type + * @param p_DL_ChBandwidth + * @return EUTRA_SysinfoDL_Bandwidth_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function fl_EUTRA_ConvertDL_Bandwidth_ToSysinfoType(Dl_Bandwidth_Type p_DL_ChBandwidth) return EUTRA_SysinfoDL_Bandwidth_Type + { + var EUTRA_SysinfoDL_Bandwidth_Type v_SysinfoBandwith; + + select (p_DL_ChBandwidth){ + case (n6){ v_SysinfoBandwith := n6 } + case (n15){ v_SysinfoBandwith := n15 } + case (n25){ v_SysinfoBandwith := n25 } + case (n50){ v_SysinfoBandwith := n50 } + case (n75){ v_SysinfoBandwith := n75 } + case (n100){ v_SysinfoBandwith := n100 } + case else { + FatalError (__FILE__, __LINE__, "invalid value for ChannelBandwidth"); + } + } + return v_SysinfoBandwith; + }; + + /* + * @desc Convert the UL bandwidth value from Ul_Bandwidth_Type to EUTRA_SysinfoUL_Bandwidth_Type + * @param p_UL_ChBandwidth + * @return EUTRA_SysinfoUL_Bandwidth_Type + * @status + */ + function fl_EUTRA_ConvertUL_Bandwidth_ToSysinfoType(Ul_Bandwidth_Type p_UL_ChBandwidth) return EUTRA_SysinfoUL_Bandwidth_Type + { /* Convert the UL bandwidth value from Ul_Bandwidth_Type to EUTRA_SysinfoUL_Bandwidth_Type */ + var EUTRA_SysinfoUL_Bandwidth_Type v_SysinfoBandwith; + + select (p_UL_ChBandwidth){ + case (n6) { + v_SysinfoBandwith := n6; + } + case (n15) { + v_SysinfoBandwith := n15; + } + case (n25) { + v_SysinfoBandwith := n25; + } + case (n50) { + v_SysinfoBandwith := n50; + } + case (n75) { + v_SysinfoBandwith := n75; + } + case (n100) { + v_SysinfoBandwith := n100; + } + case else { + FatalError (__FILE__, __LINE__, "invalid value for ChannelBandwidth"); + } + }; + return v_SysinfoBandwith; + }; + + //------------------------------------------------------------------------------------------ + /* + * @desc return sysinfo combination + * @param p_CellId + * @param p_SysinfoCombination + * @return Combination_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function fl_EUTRA_CheckSysinfoCombination(EUTRA_CellId_Type p_CellId, + Combination_Type p_SysinfoCombination) return Combination_Type + { /* @sic R5s120178 BASELINE MOVING 2012 (additional changes) sic@ */ + var Combination_Type v_SysinfoCombination := p_SysinfoCombination; + + // Some cells ()14, 12, 13, 28, 29, 30) cannot be assigned to combination c3/c9/c10a as no content is specified for SIB5 in 36.508 + + if (p_CellId == eutra_Cell14 or p_CellId == eutra_Cell12 or p_CellId == eutra_Cell13 or p_CellId == eutra_Cell28 or p_CellId == eutra_Cell29 or p_CellId == eutra_Cell30 or p_CellId == eutra_Cell31 ) { + select (p_SysinfoCombination) { + case (c3) {v_SysinfoCombination := c1} + case (c9) {v_SysinfoCombination := c4} + case (c12) {v_SysinfoCombination := c5} + case (c13) {v_SysinfoCombination := c2} // @sic R5s110166 sic@ + } + } + return v_SysinfoCombination; + }; + + + //------------------------------------------------------------------------------------------ + /* + * @desc Assign SIB5 for InterMode tc acc. to 36.508 Table 6.3.1.2-2 + * @param p_CellId + * @status APPROVED (LTE) + */ + function f_EUTRA_SetSIB5_InterMode(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { // @sic R5-121888 sic@ + var template (value) InterFreqCarrierFreqList v_InterFreqCarrierList; + var Frequency_fList_Type v_Frequency_PrimaryBand := f_EUTRA_InitFrequency_f1Tof4(px_ePrimaryFrequencyBand, + px_ePrimaryBandChannelBandwidth, + f_ConvertDL_BandwidthToUL(px_ePrimaryBandChannelBandwidth)); + var Frequency_fList_Type v_Frequency_SecondaryBand := f_EUTRA_InitFrequency_f1Tof4(px_eSecondaryFrequencyBand, + px_eSecondaryBandChannelBandwidth, + f_ConvertDL_BandwidthToUL(px_eSecondaryBandChannelBandwidth)); + var ChannelBandwidthDependency_Type v_PrimaryChannelBandwidthDependency := f_EUTRA_BandDependentParam(px_ePrimaryBandChannelBandwidth, + f_ConvertDL_BandwidthToUL(px_ePrimaryBandChannelBandwidth)); + var ChannelBandwidthDependency_Type v_SecondaryChannelBandwidthDependency := f_EUTRA_BandDependentParam(px_eSecondaryBandChannelBandwidth, + f_ConvertDL_BandwidthToUL(px_eSecondaryBandChannelBandwidth)); //@sic R5s120057 px_ePrimaryBandChannelBandwidth-> px_eSecondaryBandChannelBandwidth sic@ + var Combination_Type v_SysinfoCombination := f_EUTRA_CellInfo_GetCombination(p_CellId); + + select (p_CellId) { + case (eutra_Cell1, eutra_Cell2, eutra_Cell4) { + // For cell frequency of f1: v_Frequency_PrimaryBand.f1 + // SIB5 contents: f2, f5(f1 in secondary band), f6 (f2 in secondary band) + if (v_Frequency_PrimaryBand.f2.dl_CarrierFreq != tsc_DummyFrequency) { // f2 is defined for the Band px_ePrimaryFrequencyBand + if (v_Frequency_SecondaryBand.f2.dl_CarrierFreq != tsc_DummyFrequency) { // f6 is defined for the secondary band + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq (v_Frequency_PrimaryBand.f2, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth), //f2 + cs_InterFreqCarrierFreq (v_Frequency_SecondaryBand.f1, v_SecondaryChannelBandwidthDependency.AllowedMeasBandwidth), //f5 + cs_InterFreqCarrierFreq (v_Frequency_SecondaryBand.f2, v_SecondaryChannelBandwidthDependency.AllowedMeasBandwidth) //f6 + }; + } else { + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq (v_Frequency_PrimaryBand.f2, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth), //f2 + cs_InterFreqCarrierFreq (v_Frequency_SecondaryBand.f1, v_SecondaryChannelBandwidthDependency.AllowedMeasBandwidth) //f5 + }; + } + } else { // f2 not defined (e.g. band 13) + if (v_Frequency_SecondaryBand.f2.dl_CarrierFreq != tsc_DummyFrequency) { // f6 is defined for the secondary band + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq (v_Frequency_SecondaryBand.f1, v_SecondaryChannelBandwidthDependency.AllowedMeasBandwidth), //f5 + cs_InterFreqCarrierFreq (v_Frequency_SecondaryBand.f2, v_SecondaryChannelBandwidthDependency.AllowedMeasBandwidth) //f6 + }; + } else { + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq (v_Frequency_SecondaryBand.f1, v_SecondaryChannelBandwidthDependency.AllowedMeasBandwidth) //f5 + }; + } + } + } + case (eutra_Cell3) { + // For cell frequency of f2: v_Frequency_PrimaryBand.f2 + // SIB5 contents: f1, f5 (f1 in secondary band), f6 (f2 in secondary band) + if (v_Frequency_SecondaryBand.f2.dl_CarrierFreq != tsc_DummyFrequency) { // f6 is defined for the Band + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq(v_Frequency_PrimaryBand.f1, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth), //f1 + cs_InterFreqCarrierFreq(v_Frequency_SecondaryBand.f1, v_SecondaryChannelBandwidthDependency.AllowedMeasBandwidth), //f5 + cs_InterFreqCarrierFreq(v_Frequency_SecondaryBand.f2, v_SecondaryChannelBandwidthDependency.AllowedMeasBandwidth) //f6 + }; + } else { // f6 not defined for the band + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq(v_Frequency_PrimaryBand.f1, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth), //f1 + cs_InterFreqCarrierFreq(v_Frequency_SecondaryBand.f1, v_SecondaryChannelBandwidthDependency.AllowedMeasBandwidth) //f5 + }; + } + } + case (eutra_Cell10, eutra_Cell30, eutra_Cell31) { + // For cell frequency of f5: v_Frequency_SecondaryBand.f1 + // SIB5 contents: f1, f2, f6 + if (v_Frequency_PrimaryBand.f2.dl_CarrierFreq != tsc_DummyFrequency) { // f2 is defined for the Band + if (v_Frequency_SecondaryBand.f2.dl_CarrierFreq != tsc_DummyFrequency) { // f6 is defined for the Band + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq(v_Frequency_PrimaryBand.f1, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth), //f1 + cs_InterFreqCarrierFreq(v_Frequency_PrimaryBand.f2, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth), //f2 @sic R5s120647 sic@ + cs_InterFreqCarrierFreq(v_Frequency_SecondaryBand.f2, v_SecondaryChannelBandwidthDependency.AllowedMeasBandwidth) //f6 + }; + } else { // f6 not defined for the band + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq(v_Frequency_PrimaryBand.f1, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth), //f1 + cs_InterFreqCarrierFreq(v_Frequency_PrimaryBand.f2, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth) //f2 @sic R5s120647 sic@ + }; + } + } else { // f2 not defined + if (v_Frequency_SecondaryBand.f2.dl_CarrierFreq != tsc_DummyFrequency) { // f6 is defined for the Band + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq(v_Frequency_PrimaryBand.f1, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth), //f1 + cs_InterFreqCarrierFreq(v_Frequency_SecondaryBand.f2, v_SecondaryChannelBandwidthDependency.AllowedMeasBandwidth) //f6 + }; + } else { // f6 not defined for the band + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq(v_Frequency_PrimaryBand.f1, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth) //f1 + }; + } + } + } + case (eutra_Cell28, eutra_Cell29) { + // For cell frequency of f6: v_Frequency_SecondaryBand.f2 (f6) + // SIB5 contents: f1, f2, f5 + if (v_Frequency_PrimaryBand.f2.dl_CarrierFreq != tsc_DummyFrequency) { // f2 is defined for the primaryBand + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq (v_Frequency_PrimaryBand.f1, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth), //f1 + cs_InterFreqCarrierFreq (v_Frequency_PrimaryBand.f2, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth), //f2 + cs_InterFreqCarrierFreq (v_Frequency_SecondaryBand.f1, v_SecondaryChannelBandwidthDependency.AllowedMeasBandwidth) //f5 + }; + } else { // f2 not defined for the band + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq (v_Frequency_PrimaryBand.f1, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth), //f1 + cs_InterFreqCarrierFreq (v_Frequency_SecondaryBand.f1, v_SecondaryChannelBandwidthDependency.AllowedMeasBandwidth) //f5 + }; + } + } + case else { + FatalError (__FILE__, __LINE__, "invalid value Cell Id for SIB5 intialisation"); + } + } + + select (v_SysinfoCombination) { + case (c1) { + f_EUTRA_ChangeSysinfoCombinationC3 (p_CellId, cs_508_SystemInformationBlockType5_Def (v_InterFreqCarrierList)); + } + case else { + f_EUTRA_CellInfo_SetSIB5(p_CellId, cs_508_SystemInformationBlockType5_Def (v_InterFreqCarrierList)); + } + } + } + + //------------------------------------------------------------------------------------------ + /* + * @desc function initialising SIB5 for all cells except cell G,H,I,J,K,L,M and cell14 + * Acc. To 36.508 Table 6.3.1.2-1 anf for NAS tables 6.3.2.3.2-1 and 6.3.2.3.2-2 + * @param p_CellId + * @param p_AllowedMeasBandwidth + * @param p_DL_Bandwidth + * @param p_UL_Bandwidth + * @return template (value) SystemInformationBlockType5 + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_InitSystemInformation5(EUTRA_CellId_Type p_CellId, + AllowedMeasBandwidth p_AllowedMeasBandwidth, + Dl_Bandwidth_Type p_DL_Bandwidth, + Ul_Bandwidth_Type p_UL_Bandwidth) return template (value) SystemInformationBlockType5 + { /* @sic R5-096641 R5-104169 sic@ */ + + var template (value) InterFreqCarrierFreqList v_InterFreqCarrierList; + var Frequency_fList_Type v_Frequency_PrimaryBand := f_EUTRA_InitFrequency_f1Tof4 (px_ePrimaryFrequencyBand, p_DL_Bandwidth, p_UL_Bandwidth); + var boolean v_QbasedTestCase := f_GetTestcaseAttrib_Qbased_Rsrq(testcasename()); // Set to TRUE if QBASED test case @sic R5-121384 sic@ + var integer v_InterFreq :=0 ; // Counter used to assign QBASED inter freq parameters + + select (p_CellId) { + case (eutra_Cell1, eutra_Cell2, eutra_Cell4, eutra_Cell11) { + // For cell frequency of f1: v_Frequency_PrimaryBand.f1 + // SIB5 contents: f2, f3 + if (v_Frequency_PrimaryBand.f3.dl_CarrierFreq != tsc_DummyFrequency) { // f3 is defined for the Band px_ePrimaryFrequencyBand + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq(v_Frequency_PrimaryBand.f2, p_AllowedMeasBandwidth), + cs_InterFreqCarrierFreq(v_Frequency_PrimaryBand.f3, p_AllowedMeasBandwidth) + }; + } else { // f3 not defined for the band + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq(v_Frequency_PrimaryBand.f2, p_AllowedMeasBandwidth) + }; + } + } + case (eutra_Cell3, eutra_Cell23) { + // For cell frequency of f2: v_Frequency_PrimaryBand.f2 + // SIB5 contents: f1, f3 + if (v_Frequency_PrimaryBand.f3.dl_CarrierFreq != tsc_DummyFrequency) { // f3 is defined for the Band px_ePrimaryFrequencyBand + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq(v_Frequency_PrimaryBand.f1, p_AllowedMeasBandwidth), + cs_InterFreqCarrierFreq(v_Frequency_PrimaryBand.f3, p_AllowedMeasBandwidth) + }; + } else { // f3 not defined for the band + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq(v_Frequency_PrimaryBand.f1, p_AllowedMeasBandwidth) + }; + } + } + case (eutra_Cell6) { + // For cell frequency of f3: v_Frequency_PrimaryBand.f3 + // SIB5 contents: f1, f2 + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq(v_Frequency_PrimaryBand.f1, p_AllowedMeasBandwidth), + cs_InterFreqCarrierFreq(v_Frequency_PrimaryBand.f2, p_AllowedMeasBandwidth) + }; + } + case (eutra_Cell10) { + // For cell frequency of f5: v_Frequency_SecondaryBand.f1 (f5) + // SIB5 contents: f2, f3 + if (v_Frequency_PrimaryBand.f3.dl_CarrierFreq != tsc_DummyFrequency) { // f3 is defined for the Band px_ePrimaryFrequencyBand + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq(v_Frequency_PrimaryBand.f2, p_AllowedMeasBandwidth), + cs_InterFreqCarrierFreq(v_Frequency_PrimaryBand.f3, p_AllowedMeasBandwidth) + }; + } else { // f3 not defined for the band + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq(v_Frequency_PrimaryBand.f2, p_AllowedMeasBandwidth) + }; + } + } + case (eutra_CellA, eutra_CellB, eutra_CellD) { + // For cell frequency of f1: v_Frequency_PrimaryBand.f1 + // SIB5 contents: f2 + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq(v_Frequency_PrimaryBand.f2, p_AllowedMeasBandwidth) + }; + } + case (eutra_CellC, eutra_CellM) { + // For cell frequency of f2: v_Frequency_PrimaryBand.f2 + // SIB5 contents: f1 + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq(v_Frequency_PrimaryBand.f1, p_AllowedMeasBandwidth) + }; + } + case (eutra_CellI, eutra_CellK, eutra_CellL) { // when cell E is used + // For cell frequency of f3: v_Frequency_PrimaryBand.f3 + // SIB5 contents: f2 + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq(v_Frequency_PrimaryBand.f2, p_AllowedMeasBandwidth) + }; + } + case (eutra_CellE) { + // For cell frequency of f2: v_Frequency_PrimaryBand.f2 + // SIB5 contents: f3 + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq(v_Frequency_PrimaryBand.f3, p_AllowedMeasBandwidth) + }; + } + case else { + FatalError (__FILE__, __LINE__, "invalid value Cell Id for SIB5 intialisation"); + } + } + + if (v_QbasedTestCase) { + // For a QBASED test case + // Assign q-QualMin-r9 and threshX-Q-r9 acc to 36.508 Table 4.4.3.3-4 + // @sic R5-121384 sic@ + for (v_InterFreq := 0; v_InterFreq < lengthof(v_InterFreqCarrierList); v_InterFreq := v_InterFreq + 1) { + v_InterFreqCarrierList[v_InterFreq].q_QualMin_r9 := -20; + v_InterFreqCarrierList[v_InterFreq].threshX_Q_r9.threshX_HighQ_r9 := 5; + v_InterFreqCarrierList[v_InterFreq].threshX_Q_r9.threshX_LowQ_r9 := 5; + } + } // For a non QBASED tc do nothing + + return cs_508_SystemInformationBlockType5_Def(v_InterFreqCarrierList); + } + + /* + * @desc Return the SIB6 content with the appropriate FDD or TDD UTRA frequency list + * function to be used only after coordination with UTRA PTC + * @param p_SysInfoRx + * @return template (value) SystemInformationBlockType6 + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_IRAT_InitSIB6(IRAT_CoOrd_SysInfo_Type p_SysInfoRx) return template (value) SystemInformationBlockType6 + { + var template (omit) CarrierFreqListUTRA_FDD v_CarrierFreqListUTRA_FDD := omit; + var template (omit) CarrierFreqListUTRA_TDD v_CarrierFreqListUTRA_TDD := omit; + var boolean v_QbasedTestCase := f_GetTestcaseAttrib_Qbased_Rsrq(testcasename()); // Set to TRUE if QBASED test case @sic R5-121384 sic@ + var integer v_CountCarrierFreq :=0 ; // Counter used to assign QBASED inter freq parameters + + if (ischosen(p_SysInfoRx.Utran[0].FDD)) { + if (p_SysInfoRx.Utran[0].FDD.Band == 6) { //@sic R5s130268 R5s140506 sic@ + v_CarrierFreqListUTRA_FDD := cs_CarrierFreqListUTRA_FDD_1Entry(cs_CarrierFreqUTRA_FDD(p_SysInfoRx.Utran[0].FDD.Freq)); + } else { + v_CarrierFreqListUTRA_FDD := cs_CarrierFreqListUTRA_FDD( + cs_CarrierFreqUTRA_FDD(p_SysInfoRx.Utran[0].FDD.Freq), + cs_CarrierFreqUTRA_FDD(p_SysInfoRx.Utran[2].FDD.Freq), + cs_CarrierFreqUTRA_FDD(p_SysInfoRx.Utran[3].FDD.Freq)); + } + } else { // TDD + v_CarrierFreqListUTRA_TDD := cs_CarrierFreqListUTRA_TDD(cs_CarrierFreqUTRA_TDD(p_SysInfoRx.Utran[0].TDD.Freq), + cs_CarrierFreqUTRA_TDD(p_SysInfoRx.Utran[2].TDD.Freq), + cs_CarrierFreqUTRA_TDD(p_SysInfoRx.Utran[3].TDD.Freq)); + } + + if (ischosen(p_SysInfoRx.Utran[0].FDD) and v_QbasedTestCase) { + // For a QBASED test case: assign threshX-Q-r9 acc to 36.508 Table 4.4.3.3-5 + // @sic R5-121384 sic@ + for (v_CountCarrierFreq := 0; v_CountCarrierFreq < lengthof(v_CarrierFreqListUTRA_FDD); v_CountCarrierFreq := v_CountCarrierFreq + 1) { + v_CarrierFreqListUTRA_FDD[v_CountCarrierFreq].threshX_Q_r9.threshX_HighQ_r9 := 5; + v_CarrierFreqListUTRA_FDD[v_CountCarrierFreq].threshX_Q_r9.threshX_LowQ_r9 := 5; + } + } // For a non QBASED tc do nothing + + return cs_508_SystemInformationBlockType6_Def(v_CarrierFreqListUTRA_FDD, v_CarrierFreqListUTRA_TDD); + } + + /* + * @desc Return the SIB7 content with the appropriate GERAN frequency list + * function to be used only after coordination with GERAN PTC + * @param p_SysInfoRx + * @return template (value) SystemInformationBlockType7 + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_IRAT_InitSIB7 (IRAT_CoOrd_SysInfo_Type p_SysInfoRx) return template (value) SystemInformationBlockType7 + { + return cs_508_SystemInformationBlockType7_Def({cs_CarrierFreqsInfoGERAN(cs_CarrierFreqsGERAN(p_SysInfoRx.Geran[0].Arfcn, + f_ConvertGERAN_Band(p_SysInfoRx.Geran[0].BandIndicator), + f_ConvertGERANNeighCell(p_SysInfoRx.Geran[1].Arfcn, + p_SysInfoRx.Geran[2].Arfcn)))}); //@sic R5s120290 sic@ + } + + /* + * @desc Return the SIB8 content with the appropriate CDMA2000 parameters + * function to be used only after coordination with CDMA2000 PTC + * @param p_SysInfoRx + * @return template (value) SystemInformationBlockType8 + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_IRAT_InitSIB8(IRAT_CoOrd_SysInfo_Type p_SysInfoRx) return template (value) SystemInformationBlockType8 + { + // It is assumed that the coordination message received from C2K PTC will include 4 entries: all 4 for HRPD or all 4 for 1xRTT + var template (value) SystemInformationBlockType8 v_SIB8; + var template (value) BandClassListCDMA2000 v_BandClassListCDMA2000 := fl_EUTRA_GetBandClassListCDMA2000(p_SysInfoRx); + var template (value) NeighCellListCDMA2000 v_NeighCellListCDMA2000 := fl_EUTRA_GetNeighCellsList( p_SysInfoRx); + var template (omit) ParametersHRPD_Type v_ParametersHRPD := omit; + var template (omit) Parameters1XRTT_Type v_Parameters1XRTT := omit; + + if (p_SysInfoRx.Cdma2000[0].IsHRPD == true) { // CDMA2000 HRPD cell environment + // all 4 cells included in SIB8 are HRPD cells + v_ParametersHRPD := cs_ParametersHRPD (v_BandClassListCDMA2000, v_NeighCellListCDMA2000); + } + else { // CDMA2000 1XRTT cell environment + // all 4 cells are 1xRTT cells + v_Parameters1XRTT := cs_Parameters1xRTT (v_BandClassListCDMA2000, v_NeighCellListCDMA2000); + } + + v_SIB8 := cs_508_SystemInformationBlockType8_Def (v_ParametersHRPD, v_Parameters1XRTT); + return v_SIB8; + } + + /* + * @desc Return the Neighbourg cell list to include in SIB8 with the appropriate CDMA2000 (HRPD or 1xRTT) parameters. + * the content of the neigbourg cell list is according to 36.508 table 6.3.1.5-1 and table 6.3.1.6-1 + * It is assumed that the coordination message received from C2K PTC will include 4 entries: all 4 for HRPD or all 4 for 1xRTT + * @param p_SysInfoRx + * @return template (value) NeighCellListCDMA2000 + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function fl_EUTRA_GetNeighCellsList (IRAT_CoOrd_SysInfo_Type p_SysInfoRx) return template (value) NeighCellListCDMA2000 + { + var template (value) NeighCellListCDMA2000 v_NeighCellListCDMA2000; + var template (value) NeighCellsPerBandclassListCDMA2000 v_NeighCellsPerBandclassListCDMA2000 := { + cs_NeighCellsPerBandclassC2K (p_SysInfoRx.Cdma2000[0].Arfcn, {p_SysInfoRx.Cdma2000[0].PNOffset, p_SysInfoRx.Cdma2000[1].PNOffset}), + cs_NeighCellsPerBandclassC2K (p_SysInfoRx.Cdma2000[2].Arfcn, {p_SysInfoRx.Cdma2000[2].PNOffset}), + cs_NeighCellsPerBandclassC2K (p_SysInfoRx.Cdma2000[3].Arfcn, {p_SysInfoRx.Cdma2000[3].PNOffset}) + }; + + v_NeighCellListCDMA2000 := { + cs_NeighCellCDMA2000(f_EUTRA_ConvertBandClassInteger_ToCDMA2000(p_SysInfoRx.Cdma2000[0].BandClass), + v_NeighCellsPerBandclassListCDMA2000) + }; + return v_NeighCellListCDMA2000; + }; + + /* + * @desc Return the band class list to include in SIB8. + * the content of the neigbourg cell list is according to 36.508 table 6.3.1.5-1 and table 6.3.1.6-1 + * @param p_SysInfoRx + * @return template (value) BandClassListCDMA2000 + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function fl_EUTRA_GetBandClassListCDMA2000 (IRAT_CoOrd_SysInfo_Type p_SysInfoRx) return template (value) BandClassListCDMA2000 + { + var template (value) BandClassListCDMA2000 v_BandClassListCDMA2000; + + // We shall include only one instance per value e.g. {bc0, bc1} AND NOT {bc0, bc1, bc0} + // acc to 36.508 there is only 1 bandclass + v_BandClassListCDMA2000 := { + cs_BandClassInfoCDMA2000(f_EUTRA_ConvertBandClassInteger_ToCDMA2000(p_SysInfoRx.Cdma2000[0].BandClass)) + }; + return v_BandClassListCDMA2000; + }; + + /* + * @desc To convert the BandClass from Integer to teh ans.1 type BandclassCDMA2000 + * the content of the neigbourg cell list is according to 36.508 table 6.3.1.5-1 and table 6.3.1.6-1 + * @param p_BandClassInteger + * @return BandclassCDMA2000 + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_ConvertBandClassInteger_ToCDMA2000(integer p_BandClassInteger) return BandclassCDMA2000 + { + var BandclassCDMA2000 v_BandclassCDMA2000 := bc0; + + select (p_BandClassInteger) { + case (0) {v_BandclassCDMA2000 := bc0} + case (1) {v_BandclassCDMA2000 := bc1} + case (2) {v_BandclassCDMA2000 := bc2} + case (3) {v_BandclassCDMA2000 := bc3} + case (4) {v_BandclassCDMA2000 := bc4} + case (5) {v_BandclassCDMA2000 := bc5} + case (6) {v_BandclassCDMA2000 := bc6} + case (7) {v_BandclassCDMA2000 := bc7} + case (8) {v_BandclassCDMA2000 := bc8} + case (9) {v_BandclassCDMA2000 := bc9} + case (10) {v_BandclassCDMA2000 := bc10} + case (11) {v_BandclassCDMA2000 := bc11} + case (12) {v_BandclassCDMA2000 := bc12} + case (13) {v_BandclassCDMA2000 := bc13} + case (14) {v_BandclassCDMA2000 := bc14} + case (15) {v_BandclassCDMA2000 := bc15} + case (16) {v_BandclassCDMA2000 := bc16} + case (17) {v_BandclassCDMA2000 := bc17} + case else { FatalError (__FILE__, __LINE__, "invalid BandClass value");} + } + return v_BandclassCDMA2000; + } + + //------------------------------------------------------------------------------------------ + /* + * @desc function initialising the default sysinfo as per 36.508 + * @param p_CellId + * @param p_CellIdentity + * @param p_Combination + * @param p_FrequencyBand + * @param p_DL_ChBandwidth + * @param p_UL_ChBandwidth + * @param p_PLMN_Identity + * @param p_TrackingAreaCode + * @param p_FDD_TDD + * @param p_RootSequenceIndex + * @return template (value) BcchInfo_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_InitSystemInformation(EUTRA_CellId_Type p_CellId, + CellIdentity p_CellIdentity, + Combination_Type p_Combination, + FreqBandIndicator p_FrequencyBand, + Dl_Bandwidth_Type p_DL_ChBandwidth, + Ul_Bandwidth_Type p_UL_ChBandwidth, + template (value) PLMN_IdentityList p_PLMN_Identity, + TrackingAreaCode p_TrackingAreaCode, + EUTRA_FDD_TDD_CellInfo_Type p_FDD_TDD, + RootSequenceIndex_Type p_RootSequenceIndex) + return template (value) BcchInfo_Type + { /* @sic R5-096641: parameterise RootSequenceIndex sic@ */ + + var ChannelBandwidthDependency_Type v_ChannelBandwidthDependency := f_EUTRA_BandDependentParam(p_DL_ChBandwidth, p_UL_ChBandwidth); + var EUTRA_SysinfoDL_Bandwidth_Type v_SysinfoDL_Bandwidth := fl_EUTRA_ConvertDL_Bandwidth_ToSysinfoType (p_DL_ChBandwidth); + var template(omit) TDD_Config v_TDD_Config := omit; // omitted in FDD + var boolean v_QbasedTestCase := f_GetTestcaseAttrib_Qbased_Rsrq(testcasename()); // Set to TRUE if QBASED test case @sic R5-121384 sic@ + + var template (value) BcchInfo_Type v_CellBcchInfo; + var template (value) BCCH_BCH_Message v_MIB; + var template (value) BCCH_DL_SCH_Message v_SIB1; + var template (value) SystemInformation_r8_IEs v_SIB2; + var template (value) SystemInformation_r8_IEs v_SIB3; + var template (value) SystemInformation_r8_IEs v_SIB5; + var template (value) SystemInformation_r8_IEs v_SIB6; + var template (value) SystemInformation_r8_IEs v_SIB7; + var template (value) SystemInformation_r8_IEs v_SIB8; + var template (value) SystemInformation_r8_IEs v_TwoSIBs; + var template (value) SystemInformationBlockType5 v_SystemInformation5; + var template (value) SoundingRS_UL_ConfigCommon v_SoundingRS_UL_ConfigCommon; + var template (value) PRACH_ConfigSIB v_PRACH_ConfigSIB; + + // --- Initialise MIB --- + v_MIB := cs_508_MasterInformationBlock_Init(v_SysinfoDL_Bandwidth); + + // --- Initialise variables for SIB1 --- + if (p_FDD_TDD.FDD_TDD == TDD) { // initialise tdd-Configuration to be used in SIB1 + v_TDD_Config := cs_TDD_ConfigDef(p_FDD_TDD.TDD_SubframeAssignment); // Value omitted in FDD + } + + // --- Initialise SIB1 --- + // -- A default scheduling assigned ---------- + if (v_QbasedTestCase) { // @sic R5-121384 sic@ + v_SIB1 := cds_508_SystemInformationBlockType1_QBased(p_PLMN_Identity, + p_TrackingAreaCode, + p_CellIdentity, + p_FrequencyBand, + cs_SchedulingInfo_2SI( v_ChannelBandwidthDependency.SIB3_periodicity), + v_TDD_Config); + } else { + v_SIB1 := cs_508_SystemInformationBlockType1_Def(p_PLMN_Identity, + p_TrackingAreaCode, + p_CellIdentity, + p_FrequencyBand, + cs_SchedulingInfo_2SI( v_ChannelBandwidthDependency.SIB3_periodicity), + v_TDD_Config); + } + + // --- Initialise SIB2 --- + if (p_FDD_TDD.FDD_TDD == FDD) { // FDD + v_SoundingRS_UL_ConfigCommon := cs_508_SoundingRS_UL_ConfigCommon_FDD(v_ChannelBandwidthDependency.SrsBandwidthConfiguration); + v_PRACH_ConfigSIB := cs_508_PRACH_ConfigSIB_FDD(v_ChannelBandwidthDependency.Prach_FrequencyOffset, p_RootSequenceIndex); + } else { // TDD + v_SoundingRS_UL_ConfigCommon := cs_508_SoundingRS_UL_ConfigCommon_TDD(v_ChannelBandwidthDependency.SrsBandwidthConfiguration); + v_PRACH_ConfigSIB := cs_508_PRACH_ConfigSIB_TDD(v_ChannelBandwidthDependency.Prach_FrequencyOffset, p_RootSequenceIndex); + } + v_SIB2 := cs_SI_SIB2(cs_508_SystemInformationBlockType2_Def(omit, + v_ChannelBandwidthDependency.N_RB_CQI, + v_ChannelBandwidthDependency.Pusch_HoppingOffset, + v_SoundingRS_UL_ConfigCommon, + v_PRACH_ConfigSIB, + tsc_P_b_1Tx)); + // --- Initialise SIB3 --- + if (v_QbasedTestCase) { // @sic R5-121384 sic@ + v_SIB3 := cs_SI_SIB3 (cds_508_SystemInformationBlockType3_Qbased); + } else { + v_SIB3 := cs_SI_SIB3 (cs_508_SystemInformationBlockType3_Def); + } + + // --- Initialise all SYSINFO -- + select (p_Combination) { + case (c1) { + v_SIB1.message_.c1.systemInformationBlockType1.schedulingInfoList := cs_SchedulingInfo_2SI( v_ChannelBandwidthDependency.SIB3_periodicity); + v_CellBcchInfo := cs_BCCHInfo_C1(v_MIB, + v_SIB1, + { cs_SystemInformation_Common(v_SIB2), cs_SystemInformation_Common(v_SIB3) }); + } + case (c2) { // SIB4 Intra-Frequency + v_SIB1.message_.c1.systemInformationBlockType1.schedulingInfoList := cs_SchedulingInfo_3SI(v_ChannelBandwidthDependency.SIB3_periodicity, + {sibType3}, + v_ChannelBandwidthDependency.SIB4_periodicity, + {sibType4}); + v_CellBcchInfo := cs_BCCHInfo_C1(v_MIB, + v_SIB1, + { cs_SystemInformation_Common(v_SIB2), + cs_SystemInformation_Common(v_SIB3), + cs_SystemInformation_Common(cs_SI_SIB4( cs_508_SystemInformationBlockType4_Def)) } + ); + } + case (c3) { // SIB5 Inter-Frequency + v_SystemInformation5 := f_EUTRA_InitSystemInformation5 (p_CellId , v_ChannelBandwidthDependency.AllowedMeasBandwidth, p_DL_ChBandwidth, p_UL_ChBandwidth); + v_SIB5 := cs_SI_SIB5(v_SystemInformation5); + v_SIB1.message_.c1.systemInformationBlockType1.schedulingInfoList := cs_SchedulingInfo_3SI(v_ChannelBandwidthDependency.SIB3_periodicity, + {sibType3}, + v_ChannelBandwidthDependency.SIB5_periodicity, + {sibType5}); + v_CellBcchInfo := cs_BCCHInfo_C1(v_MIB, + v_SIB1, + { cs_SystemInformation_Common(v_SIB2), + cs_SystemInformation_Common(v_SIB3), + cs_SystemInformation_Common(v_SIB5) } + ); + } + case (c4) { // SIB6 UTRAN + v_SIB6 := cs_SI_SIB6( cs_508_SystemInformationBlockType6_Def(omit, omit)); // Initialise first UTRA FDD and TDD frequency list with OMIT + v_SIB1.message_.c1.systemInformationBlockType1.schedulingInfoList := cs_SchedulingInfo_3SI(v_ChannelBandwidthDependency.SIB3_periodicity, + {sibType3}, + v_ChannelBandwidthDependency.SIB6_periodicity, + {sibType6}); + v_CellBcchInfo := cs_BCCHInfo_C1(v_MIB, + v_SIB1, + { cs_SystemInformation_Common(v_SIB2), + cs_SystemInformation_Common(v_SIB3), + cs_SystemInformation_Common(v_SIB6) } + ); + } + case (c5) { // SIB7 GERAN + v_SIB7 := cs_SI_SIB7( cs_508_SystemInformationBlockType7_Def(omit)); // List of GERAN frequencies assigned later after synchronisation with GERAN PTC + v_SIB1.message_.c1.systemInformationBlockType1.schedulingInfoList := cs_SchedulingInfo_3SI(v_ChannelBandwidthDependency.SIB3_periodicity, + {sibType3}, + v_ChannelBandwidthDependency.SIB7_periodicity, + {sibType7}); + v_CellBcchInfo := cs_BCCHInfo_C1(v_MIB, + v_SIB1, + { cs_SystemInformation_Common(v_SIB2), + cs_SystemInformation_Common(v_SIB3), + cs_SystemInformation_Common(v_SIB7) } + ); + } + case (c6) { // SIB2/SIB3/SIB8 for CDMA2000 @sic R5-103870 sic@ + v_SIB8 := cs_SI_SIB8( cs_508_SystemInformationBlockType8_Def(omit, omit)); // 1XRTT or HRPD parameters assigned later after synchronisation with GERAN PTC + v_SIB1.message_.c1.systemInformationBlockType1.schedulingInfoList := cs_SchedulingInfo_3SI(v_ChannelBandwidthDependency.SIB3_periodicity, + {sibType3}, + v_ChannelBandwidthDependency.SIB8_periodicity, + {sibType8}); + v_CellBcchInfo := cs_BCCHInfo_C1(v_MIB, + v_SIB1, + { cs_SystemInformation_Common(v_SIB2), + cs_SystemInformation_Common(v_SIB3), + cs_SystemInformation_Common(v_SIB8) } + ); + + } + case (c7) { // for eNodeB: broadcast SIB2/SIB3/SIB4/SIB9 + v_SIB1.message_.c1.systemInformationBlockType1.schedulingInfoList := cs_SchedulingInfo_4SI(v_ChannelBandwidthDependency.SIB3_periodicity, + {sibType3}, + v_ChannelBandwidthDependency.SIB4_periodicity, + {sibType4}, + v_ChannelBandwidthDependency.SIB9_periodicity, + {sibType9}); + v_CellBcchInfo := cs_BCCHInfo_C1(v_MIB, + v_SIB1, + { cs_SystemInformation_Common(v_SIB2), + cs_SystemInformation_Common(v_SIB3), + cs_SystemInformation_Common(cs_SI_SIB4( cs_508_SystemInformationBlockType4_Def)), + cs_SystemInformation_Common(cs_SI_SIB9(cs_SystemInformationBlockType9_Def(char2oct ("3gppTest")))) } + ); + } + case (c8) { // for ETWS: broadcast SIB2/SIB3/SIB10/SIB11 + // Test cases using c8 shall be initialised with C1, C8 is started after the preamble + FatalError (__FILE__, __LINE__, "invalid sysinfo combination c8 shall be started inside the test case"); + } + case (c9) { // SIB2/SIB3/SIB5 Inter-Frequency + SIB6 UTRAN + v_SystemInformation5 := f_EUTRA_InitSystemInformation5 (p_CellId , v_ChannelBandwidthDependency.AllowedMeasBandwidth,p_DL_ChBandwidth, p_UL_ChBandwidth); + v_TwoSIBs := cs_SI_SIB5_SIB6( v_SystemInformation5, + cs_508_SystemInformationBlockType6_Def(omit, omit)); // Initialise first UTRA FDD and TDD frequency list with OMIT + v_SIB1.message_.c1.systemInformationBlockType1.schedulingInfoList := cs_SchedulingInfo_3SI(v_ChannelBandwidthDependency.SIB3_periodicity, + {sibType3}, + v_ChannelBandwidthDependency.SIB5_periodicity, // SIB5 and SIB6 have the same periodicity + {sibType5, sibType6}); // SIB5 and SIB6 in the same SI + v_CellBcchInfo := cs_BCCHInfo_C1(v_MIB, + v_SIB1, + { cs_SystemInformation_Common(v_SIB2), + cs_SystemInformation_Common(v_SIB3), + cs_SystemInformation_Common(v_TwoSIBs) } + ); + } + case (c10) { // SIB2/SIB3/SIB6 UTRAN + SIB7 GERAN + v_SIB6 := cs_SI_SIB6( cs_508_SystemInformationBlockType6_Def(omit, omit)); // Initialise first UTRA FDD and TDD frequency list with OMIT + v_SIB7 := cs_SI_SIB7( cs_508_SystemInformationBlockType7_Def(omit)); // List of GERAN frequencies assigned later after synchronisation with GERAN PTC + v_SIB1.message_.c1.systemInformationBlockType1.schedulingInfoList := cs_SchedulingInfo_4SI(v_ChannelBandwidthDependency.SIB3_periodicity, + {sibType3}, + v_ChannelBandwidthDependency.SIB6_periodicity, + {sibType6}, + v_ChannelBandwidthDependency.SIB7_periodicity, + {sibType7}); + v_CellBcchInfo := cs_BCCHInfo_C1(v_MIB, + v_SIB1, + { cs_SystemInformation_Common(v_SIB2), + cs_SystemInformation_Common(v_SIB3), + cs_SystemInformation_Common(v_SIB6), + cs_SystemInformation_Common(v_SIB7) } + ); + } + case (c10a) { // SIB2/SIB3/SIB5/SIB6 UTRAN + SIB7 GERAN + v_SystemInformation5 := f_EUTRA_InitSystemInformation5(p_CellId , v_ChannelBandwidthDependency.AllowedMeasBandwidth,p_DL_ChBandwidth, p_UL_ChBandwidth); + v_TwoSIBs := cs_SI_SIB5_SIB6(v_SystemInformation5, + cs_508_SystemInformationBlockType6_Def(omit, omit)); // Initialise first UTRA FDD and TDD frequency list with OMIT + v_SIB7 := cs_SI_SIB7(cs_508_SystemInformationBlockType7_Def(omit)); // List of GERAN frequencies assigned later after synchronisation with GERAN PTC + v_SIB1.message_.c1.systemInformationBlockType1.schedulingInfoList := cs_SchedulingInfo_4SI(v_ChannelBandwidthDependency.SIB3_periodicity, + {sibType3}, + v_ChannelBandwidthDependency.SIB5_periodicity, // SIB5 and SIB6 have the same periodicity + {sibType5, sibType6}, + v_ChannelBandwidthDependency.SIB7_periodicity, + {sibType7}); + v_CellBcchInfo := cs_BCCHInfo_C1(v_MIB, + v_SIB1, + { cs_SystemInformation_Common(v_SIB2), + cs_SystemInformation_Common(v_SIB3), + cs_SystemInformation_Common(v_TwoSIBs), + cs_SystemInformation_Common(v_SIB7) } + ); + } + case (c11) { // SIB2 + SIB3 + SIB4 + SIB6 UTRAN + SIB9 + v_SIB6 := cs_SI_SIB6( cs_508_SystemInformationBlockType6_Def(omit, omit)); // Initialise first UTRA FDD and TDD frequency list with OMIT + v_SIB1.message_.c1.systemInformationBlockType1.schedulingInfoList := cs_SchedulingInfo_5SI(v_ChannelBandwidthDependency.SIB3_periodicity, + {sibType3}, + v_ChannelBandwidthDependency.SIB4_periodicity, + {sibType4}, + v_ChannelBandwidthDependency.SIB6_periodicity, + {sibType6}, + v_ChannelBandwidthDependency.SIB9_periodicity, + {sibType9}); + v_CellBcchInfo := cs_BCCHInfo_C1(v_MIB, + v_SIB1, + { cs_SystemInformation_Common(v_SIB2), + cs_SystemInformation_Common(v_SIB3), + cs_SystemInformation_Common(cs_SI_SIB4( cs_508_SystemInformationBlockType4_Def)), + cs_SystemInformation_Common(v_SIB6), + cs_SystemInformation_Common(cs_SI_SIB9(cs_SystemInformationBlockType9_Def(char2oct ("3gppTest")))) } + ); + } + case (c12) { // SIB2 + SIB3 + SIB5 + SIB7 GERAN @sic R5-106551 sic@ + v_SystemInformation5 := f_EUTRA_InitSystemInformation5(p_CellId, v_ChannelBandwidthDependency.AllowedMeasBandwidth, p_DL_ChBandwidth, p_UL_ChBandwidth); + v_SIB5 := cs_SI_SIB5(v_SystemInformation5); + v_SIB7 := cs_SI_SIB7(cs_508_SystemInformationBlockType7_Def(omit)); // List of GERAN frequencies assigned later after synchronisation with GERAN PTC + + v_SIB1.message_.c1.systemInformationBlockType1.schedulingInfoList := cs_SchedulingInfo_4SI(v_ChannelBandwidthDependency.SIB3_periodicity, + {sibType3}, + v_ChannelBandwidthDependency.SIB5_periodicity, + {sibType5}, + v_ChannelBandwidthDependency.SIB7_periodicity, + {sibType7}); + v_CellBcchInfo := cs_BCCHInfo_C1(v_MIB, + v_SIB1, + { cs_SystemInformation_Common(v_SIB2), + cs_SystemInformation_Common(v_SIB3), + cs_SystemInformation_Common(v_SIB5), + cs_SystemInformation_Common(v_SIB7) } + ); + } + case (c13) { // SIB2 + SIB3 + SIB4 + SIB5 + SIB9 @sic R5-106551 R5-110471 sic@ + v_SystemInformation5 := f_EUTRA_InitSystemInformation5(p_CellId , v_ChannelBandwidthDependency.AllowedMeasBandwidth, p_DL_ChBandwidth, p_UL_ChBandwidth); + v_SIB5 := cs_SI_SIB5(v_SystemInformation5); + + v_SIB1.message_.c1.systemInformationBlockType1.schedulingInfoList := cs_SchedulingInfo_5SI(v_ChannelBandwidthDependency.SIB3_periodicity, + {sibType3}, + v_ChannelBandwidthDependency.SIB4_periodicity, + {sibType4}, + v_ChannelBandwidthDependency.SIB5_periodicity, + {sibType5}, + v_ChannelBandwidthDependency.SIB9_periodicity, + {sibType9}); + v_CellBcchInfo := cs_BCCHInfo_C1(v_MIB, + v_SIB1, + { cs_SystemInformation_Common(v_SIB2), + cs_SystemInformation_Common(v_SIB3), + cs_SystemInformation_Common(cs_SI_SIB4( cs_508_SystemInformationBlockType4_Def)), + cs_SystemInformation_Common(v_SIB5), + cs_SystemInformation_Common(cs_SI_SIB9(cs_SystemInformationBlockType9_Def(char2oct ("3gppTest")))) } + ); + } + case (c14) { // SIB2 + SIB3 + SIB4 + SIB7 + SIB9 @sic R5-110471 sic@ + v_SIB7 := cs_SI_SIB7(cs_508_SystemInformationBlockType7_Def(omit)); // List of GERAN frequencies assigned later after synchronisation with GERAN PTC + + v_SIB1.message_.c1.systemInformationBlockType1.schedulingInfoList := cs_SchedulingInfo_5SI(v_ChannelBandwidthDependency.SIB3_periodicity, + {sibType3}, + v_ChannelBandwidthDependency.SIB4_periodicity, + {sibType4}, + v_ChannelBandwidthDependency.SIB7_periodicity, + {sibType7}, + v_ChannelBandwidthDependency.SIB9_periodicity, + {sibType9}); + v_CellBcchInfo := cs_BCCHInfo_C1(v_MIB, + v_SIB1, + { cs_SystemInformation_Common(v_SIB2), + cs_SystemInformation_Common(v_SIB3), + cs_SystemInformation_Common(cs_SI_SIB4( cs_508_SystemInformationBlockType4_Def)), + cs_SystemInformation_Common(v_SIB7), + cs_SystemInformation_Common(cs_SI_SIB9(cs_SystemInformationBlockType9_Def(char2oct ("3gppTest")))) } + ); + } + case (c15, c16, c18, c19, c20) { + // for MBMS + // Test cases using c15/c16/c18/c19/c20 shall be initialised with C1. c15/c16/c18/c19/c20 are initialised after the preamble + FatalError(__FILE__, __LINE__, "invalid sysinfo combination c15/c16/c18/c19/c20 shall be started inside the test case"); + } + case (c17) { // for CMAS: broadcast SIB2/SIB3/SIB12 + // Test cases using c17 shall be initialised with C1, C17 is started after the preamble + FatalError(__FILE__, __LINE__, "invalid sysinfo combination c17 shall be started inside the test case"); + } + case (c21) { // for SIMTC - SIB2/SIB3/SIB14 @sic R5-140075 sic@ + v_SIB1.message_.c1.systemInformationBlockType1.schedulingInfoList := cs_SchedulingInfo_3SI(v_ChannelBandwidthDependency.SIB3_periodicity, + {sibType3}, + v_ChannelBandwidthDependency.SIB14_periodicity, + {sibType14_v1130}); + v_CellBcchInfo := cs_BCCHInfo_C1(v_MIB, + v_SIB1, + { cs_SystemInformation_Common(v_SIB2), + cs_SystemInformation_Common(v_SIB3), + cs_SystemInformation_Common(cs_SI_SIB14( cs_SystemInformationBlockType14_Def)) } + ); + + } + case else { + FatalError(__FILE__, __LINE__, "invalid sysinfo combination"); + } + } + return v_CellBcchInfo; + } + + //------------------------------------------------------------------------------------------ + // --------------------- Initialise EUTRA NAS parameters cells info ----- ---------------- + + //------------------- Init NAS parameters for RRC test cases ----------------------------- + /* + * @desc Initialise NAS parameters for RRC cells as per 36.508 Table 4.4.2-2 + * @param p_CellId + * @param p_FrequencyBand + * @param p_SysinfoCombination + * @return NAS_Parameter_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function fl_EUTRA_InitNAS_forRRC_Cells(EUTRA_CellId_Type p_CellId, + FreqBandIndicator p_FrequencyBand, + Combination_Type p_SysinfoCombination) //@sic R5s130498 sic@ + + return NAS_Parameter_Type + { /* @sic R5-096440 R5s10163 R5-102229 sic@ */ + var template (value) NAS_Parameter_Type v_NAS_Param; + var integer v_MmeGroupId := 32769; + var integer v_MmeCode := 1; + + select (p_CellId){ + case (eutra_Cell1, eutra_Cell2, eutra_Cell3, eutra_Cell4, eutra_Cell6, eutra_Cell10) { + v_NAS_Param.TrackingAreaCode := int2bit (1, 16); + v_NAS_Param.Guti_Parameters := cs_Guti(cs_HPLMN_Def, v_MmeGroupId, v_MmeCode); + } + case (eutra_Cell11, eutra_Cell23, eutra_Cell31) { + v_NAS_Param.TrackingAreaCode := int2bit (2, 16); + v_NAS_Param.Guti_Parameters := cs_Guti(cs_HPLMN_Def, v_MmeGroupId, v_MmeCode); // @sic R5s100466 sic@ + } + case (eutra_Cell12, eutra_Cell28){ + v_NAS_Param.TrackingAreaCode := int2bit (1, 16); + v_NAS_Param.Guti_Parameters := cs_Guti(cs_HPLMN_002_11, v_MmeGroupId, v_MmeCode); + } + case (eutra_Cell13, eutra_Cell29){ + v_NAS_Param.TrackingAreaCode := int2bit (1, 16); + v_NAS_Param.Guti_Parameters := cs_Guti(cs_HPLMN_003_21, v_MmeGroupId, v_MmeCode); + } + case (eutra_Cell14, eutra_Cell30){ + v_NAS_Param.TrackingAreaCode := int2bit (1, 16); + v_NAS_Param.Guti_Parameters := cs_Guti(cs_HPLMN_004_31, v_MmeGroupId, v_MmeCode); + } + case else { + FatalError(__FILE__, __LINE__, "invalid cell Identity"); + } + } + if ( (p_FrequencyBand == 6) or // E-UTRA band=6 @sic R5s130498 sic@ + (px_FDD_OperationBand==6 and ((p_SysinfoCombination == c4) or ( p_SysinfoCombination == c9) or ( p_SysinfoCombination == c10) or ( p_SysinfoCombination == c10a) or ( p_SysinfoCombination == c11))) // or UTRAN band=6 and UTRAN is included in sysinfo + ) { + // Set Japan MCC according to 36.508 cl 4.3.1.1.6 and 34.108 cl 5.1.1.6 + v_NAS_Param.Guti_Parameters.PLMN_Identity.mcc := f_EUTRA_ConvertMCC_Nas2Asn(px_eJapanMCC_Band6); + }; + + // Initialise Location Area Id + v_NAS_Param.LocationAreaCode := tsc_LAC_Def; + + return valueof(v_NAS_Param); // Note: valueof cannot be avoided here + }; + + //------------------- Init NAS parameters for NAS test cases ----------------------------- + /* + * @desc Initialise NAS parameters for NAS cells as per 36.508 Table + * @param p_CellId + * @param p_FrequencyBand + * @param p_SysinfoCombination + * @return NAS_Parameter_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function fl_EUTRA_InitNAS_forNAS_Cells(EUTRA_CellId_Type p_CellId, + FreqBandIndicator p_FrequencyBand, + Combination_Type p_SysinfoCombination) //@sic R5s130498 sic@ + return NAS_Parameter_Type + { /* @sic R5-096440 R5s10163 R5-102229 sic@ */ + var template (value) NAS_Parameter_Type v_NAS_Param; + + select (p_CellId){ + case (eutra_CellA) { + v_NAS_Param.TrackingAreaCode := int2bit (1, 16); + v_NAS_Param.Guti_Parameters := cs_Guti(cs_HPLMN_Def, 32769, 1); + } + case (eutra_CellB) { + v_NAS_Param.TrackingAreaCode := int2bit (2, 16); + v_NAS_Param.Guti_Parameters := cs_Guti(cs_HPLMN_Def, 32770, 1); + } + case (eutra_CellC) { + v_NAS_Param.TrackingAreaCode := int2bit (3, 16); + v_NAS_Param.Guti_Parameters := cs_Guti(cs_HPLMN_Def, 32771, 1); + } + case (eutra_CellD) { + v_NAS_Param.TrackingAreaCode := int2bit (4, 16); + v_NAS_Param.Guti_Parameters := cs_Guti(cs_HPLMN_Def, 32772, 1); + } + case (eutra_CellE) { + v_NAS_Param.TrackingAreaCode := int2bit (3, 16); + v_NAS_Param.Guti_Parameters := cs_Guti(cs_HPLMN_002_101, 32777, 1); + } + case (eutra_CellG) { + v_NAS_Param.TrackingAreaCode := int2bit (1, 16); + v_NAS_Param.Guti_Parameters := cs_Guti(cs_HPLMN_001_02, 32775, 1); + } + case (eutra_CellH) { + v_NAS_Param.TrackingAreaCode := int2bit (2, 16); + v_NAS_Param.Guti_Parameters := cs_Guti(cs_HPLMN_001_02, 32776, 1); + } + case (eutra_CellI) { + v_NAS_Param.TrackingAreaCode := int2bit (1, 16); + v_NAS_Param.Guti_Parameters := cs_Guti(cs_HPLMN_002_101, 32777, 1); + } + case (eutra_CellJ) { + v_NAS_Param.TrackingAreaCode := int2bit (1, 16); + v_NAS_Param.Guti_Parameters := cs_Guti(cs_HPLMN_003_101, 32778, 1); + } + case (eutra_CellK) { + v_NAS_Param.TrackingAreaCode := int2bit (1, 16); + v_NAS_Param.Guti_Parameters := cs_Guti(cs_HPLMN_002_101, 32777, 1); + } + case (eutra_CellL) { + v_NAS_Param.TrackingAreaCode := int2bit (2, 16); + v_NAS_Param.Guti_Parameters := cs_Guti(cs_HPLMN_002_101, 32779, 1); + } + case (eutra_CellM) { + v_NAS_Param.TrackingAreaCode := int2bit (1, 16); + v_NAS_Param.Guti_Parameters := cs_Guti(cs_HPLMN_Def, 32769, 1); + } + + case else { + FatalError(__FILE__, __LINE__, "invalid cell Idendtity"); + } + } + + if ( (p_FrequencyBand == 6) or // E-UTRA band=6 @sic R5s130498 sic@ + (px_FDD_OperationBand==6 and ((p_SysinfoCombination == c4) or ( p_SysinfoCombination == c9) or ( p_SysinfoCombination == c10) or ( p_SysinfoCombination == c10a) or ( p_SysinfoCombination == c11))) // or UTRAN band=6 and UTRAN is included in sysinfo + ) { + // Set Japan MCC according to 36.508 cl 4.3.1.1.6 and 34.108 cl 5.1.1.6 + v_NAS_Param.Guti_Parameters.PLMN_Identity.mcc := f_EUTRA_ConvertMCC_Nas2Asn(px_eJapanMCC_Band6); + }; + + // Initialise Location Area Id + v_NAS_Param.LocationAreaCode := tsc_LAC_Def; + + return valueof(v_NAS_Param); // Note: valueof cannot be avoided here + }; + + /*******************************************************************************************/ + //------------------------------------------------------------------------------------------ + // --------------------- Initialise EUTRA cells info ------------------------------------- + /* + * @desc Initialise cell info for one cell + * @param p_CellId + * @param p_FrequencyBand + * @param p_SysinfoCombination + * @param p_DL_Bandwidth + * @param p_UL_Bandwidth + * @return EUTRA_CellInfo_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_Init(EUTRA_CellId_Type p_CellId, + FreqBandIndicator p_FrequencyBand, + Combination_Type p_SysinfoCombination, + Dl_Bandwidth_Type p_DL_Bandwidth, + Ul_Bandwidth_Type p_UL_Bandwidth) return EUTRA_CellInfo_Type + { /* @sic R5-096641 sic@ */ + var CellIdentities_Type v_CellIds := fl_EUTRA_InitCellIdentities(p_CellId); + var EUTRA_FDD_TDD_CellInfo_Type v_FDD_TDD_Info := fl_EUTRA_InitFDD_TDD_FromBand(p_FrequencyBand); + var EUTRA_FDD_TDD_Mode_Type v_FDD_TDD := v_FDD_TDD_Info.FDD_TDD; + var CellTimingInfo_Type v_Celltiming := fl_EUTRA_InitialiseCellTiming (p_CellId, v_FDD_TDD, LTE_AllCellsOnSamePLMN); //the parameter "LTE_AllCellsOnSamePLMN" is dummy for RRC cells, it is used only for NAS test cases + var Combination_Type v_SysinfoCombination := fl_EUTRA_CheckSysinfoCombination(p_CellId, p_SysinfoCombination); + var RootSequenceIndex_Type v_RootSequenceIndex_Type := f_EUTRA_InitialisePRACH_RootSequenceIndex(p_CellId, v_FDD_TDD, LTE_AllCellsOnSamePLMN); + var RACH_TimingAdvance_Type v_RAR_TA := fl_EUTRA_InitialiseRAR_TA(v_FDD_TDD, v_Celltiming); // @sic R5-121777 sic@ + var CarrierFreqEUTRA v_UL_DL_Earfcn; + var NAS_Parameter_Type v_NAS_Param; + var template (value) BcchInfo_Type v_BCCH_Info; + var template (value) EUTRA_CellInfo_Type v_CellInfo; + var Frequency_fList_Type v_Freq; + var ChannelBandwidthDependency_Type v_ChannelBandwidthDependency := f_EUTRA_BandDependentParam(p_DL_Bandwidth, p_UL_Bandwidth); //@sic R5s090180: return CFI value sic@ + + // Initialise Frequencies f1/f2/f3/f4 + v_Freq := f_EUTRA_InitFrequency_f1Tof4(p_FrequencyBand, p_DL_Bandwidth, p_UL_Bandwidth); + + // Initialised Frequency per cell. See 36.508 Table 6.2.3.1-1 + // Cell 1/2/4/11 -> Frequency f1 + // Cell 3/12 -> Frequency f2 + // Cell 6/13 -> Frequency f3 + // Cell 14 -> Frequency f4 + select (p_CellId) { + case (eutra_Cell1, + eutra_Cell2, + eutra_Cell4, + eutra_Cell11, + eutra_Cell10, + eutra_Cell30, + eutra_Cell31) { + v_UL_DL_Earfcn := v_Freq.f1; //f1 or f5 + } + case (eutra_Cell3, + eutra_Cell12, + eutra_Cell23, + eutra_Cell28, + eutra_Cell29) { // @sic R5-121888 sic@ + v_UL_DL_Earfcn := v_Freq.f2; // f2 + } + case (eutra_Cell6, + eutra_Cell13) { + v_UL_DL_Earfcn := v_Freq.f3; // f3 + } + case (eutra_Cell14) { + v_UL_DL_Earfcn := v_Freq.f4; // f4 + } + case else { + FatalError (__FILE__, __LINE__, "invalid cell Idendtity"); + } + } + + // Initialise NAS parameters + v_NAS_Param := fl_EUTRA_InitNAS_forRRC_Cells( p_CellId, p_FrequencyBand, p_SysinfoCombination); //@sic R5s130498 sic@ + + // Initialise SYSINFO + v_BCCH_Info := f_EUTRA_InitSystemInformation(p_CellId, + v_CellIds.CellIdentity, + v_SysinfoCombination, + p_FrequencyBand, + p_DL_Bandwidth, + p_UL_Bandwidth, + cs_PlmnIdList_1Entry(v_NAS_Param.Guti_Parameters.PLMN_Identity), + v_NAS_Param.TrackingAreaCode, + v_FDD_TDD_Info, + v_RootSequenceIndex_Type); + + v_CellInfo := cs_EUTRA_CellInfoDef(v_CellIds, + v_SysinfoCombination, + p_FrequencyBand, + v_UL_DL_Earfcn, + p_DL_Bandwidth, + p_UL_Bandwidth, + v_NAS_Param, + v_BCCH_Info, + v_Celltiming, + v_FDD_TDD_Info, + v_ChannelBandwidthDependency.Cfi, + v_RAR_TA, + v_ChannelBandwidthDependency.sr_PUCCH_ResourceIndex // @sic R5s090312 sic@ + ); // @sic R5s090180 sic@ + return valueof(v_CellInfo); // Note: valueof cannot be avoided here + }; + + //---------------------------------------------------------------------------------------------------------- + /* + * @desc Initialise all EUTRA cell info + * @param p_SysinfoCombination + * @return EUTRA_CellInfoList_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellArray_Init(Combination_Type p_SysinfoCombination) return EUTRA_CellInfoList_Type + { + /* @sic R5-102223 : replace px_eDL_ChannelBandwidth to px_ePrimaryBandChannelBandwidth and px_eSecondaryBandChannelBandwidth sic@ + @sic R5-102223 : delete px_eUL_ChannelBandwidth sic@ */ + var EUTRA_CellInfoList_Type v_EUTRA_Cells; + var integer v_Index; + var Ul_Bandwidth_Type v_PrimaryBandChBandwidth_UL := f_ConvertDL_BandwidthToUL (px_ePrimaryBandChannelBandwidth); + var Ul_Bandwidth_Type v_SecondaryBandChBandwidth_UL := f_ConvertDL_BandwidthToUL (px_eSecondaryBandChannelBandwidth); + + + v_Index := f_EUTRA_CellInfo_GetIndex (eutra_Cell1); + v_EUTRA_Cells[v_Index] := f_EUTRA_CellInfo_Init(eutra_Cell1, + px_ePrimaryFrequencyBand, + p_SysinfoCombination, + px_ePrimaryBandChannelBandwidth, + v_PrimaryBandChBandwidth_UL); + + v_Index := f_EUTRA_CellInfo_GetIndex (eutra_Cell2); + v_EUTRA_Cells[v_Index] := f_EUTRA_CellInfo_Init(eutra_Cell2, + px_ePrimaryFrequencyBand, + p_SysinfoCombination, + px_ePrimaryBandChannelBandwidth, + v_PrimaryBandChBandwidth_UL); + + v_Index := f_EUTRA_CellInfo_GetIndex (eutra_Cell3); + v_EUTRA_Cells[v_Index] := f_EUTRA_CellInfo_Init(eutra_Cell3, + px_ePrimaryFrequencyBand, + p_SysinfoCombination, + px_ePrimaryBandChannelBandwidth, + v_PrimaryBandChBandwidth_UL); + + v_Index := f_EUTRA_CellInfo_GetIndex (eutra_Cell4); + v_EUTRA_Cells[v_Index] := f_EUTRA_CellInfo_Init(eutra_Cell4, + px_ePrimaryFrequencyBand, + p_SysinfoCombination, + px_ePrimaryBandChannelBandwidth, + v_PrimaryBandChBandwidth_UL); + + v_Index := f_EUTRA_CellInfo_GetIndex (eutra_Cell6); + v_EUTRA_Cells[v_Index] := f_EUTRA_CellInfo_Init(eutra_Cell6, + px_ePrimaryFrequencyBand, + p_SysinfoCombination, + px_ePrimaryBandChannelBandwidth, + v_PrimaryBandChBandwidth_UL); + + v_Index := f_EUTRA_CellInfo_GetIndex (eutra_Cell10); + v_EUTRA_Cells[v_Index] := f_EUTRA_CellInfo_Init(eutra_Cell10, + px_eSecondaryFrequencyBand, + p_SysinfoCombination, + px_eSecondaryBandChannelBandwidth, + v_SecondaryBandChBandwidth_UL); + + v_Index := f_EUTRA_CellInfo_GetIndex (eutra_Cell11); + v_EUTRA_Cells[v_Index] := f_EUTRA_CellInfo_Init(eutra_Cell11, + px_ePrimaryFrequencyBand, + p_SysinfoCombination, + px_ePrimaryBandChannelBandwidth, + v_PrimaryBandChBandwidth_UL); + + v_Index := f_EUTRA_CellInfo_GetIndex (eutra_Cell12); + v_EUTRA_Cells[v_Index] := f_EUTRA_CellInfo_Init(eutra_Cell12, + px_ePrimaryFrequencyBand, + p_SysinfoCombination, + px_ePrimaryBandChannelBandwidth, + v_PrimaryBandChBandwidth_UL); + + v_Index := f_EUTRA_CellInfo_GetIndex (eutra_Cell13); + v_EUTRA_Cells[v_Index] := f_EUTRA_CellInfo_Init(eutra_Cell13, + px_ePrimaryFrequencyBand, + p_SysinfoCombination, + px_ePrimaryBandChannelBandwidth, + v_PrimaryBandChBandwidth_UL); + + v_Index := f_EUTRA_CellInfo_GetIndex (eutra_Cell14); + v_EUTRA_Cells[v_Index] := f_EUTRA_CellInfo_Init(eutra_Cell14, + px_ePrimaryFrequencyBand, + p_SysinfoCombination, + px_ePrimaryBandChannelBandwidth, + v_PrimaryBandChBandwidth_UL); + + v_Index := f_EUTRA_CellInfo_GetIndex (eutra_Cell23); + v_EUTRA_Cells[v_Index] := f_EUTRA_CellInfo_Init(eutra_Cell23, + px_ePrimaryFrequencyBand, + p_SysinfoCombination, + px_ePrimaryBandChannelBandwidth, + v_PrimaryBandChBandwidth_UL); + v_Index := f_EUTRA_CellInfo_GetIndex (eutra_Cell28); + v_EUTRA_Cells[v_Index] := f_EUTRA_CellInfo_Init(eutra_Cell28, + px_eSecondaryFrequencyBand, + p_SysinfoCombination, + px_eSecondaryBandChannelBandwidth, + v_SecondaryBandChBandwidth_UL); + v_Index := f_EUTRA_CellInfo_GetIndex (eutra_Cell29); + v_EUTRA_Cells[v_Index] := f_EUTRA_CellInfo_Init(eutra_Cell29, + px_eSecondaryFrequencyBand, + p_SysinfoCombination, + px_eSecondaryBandChannelBandwidth, + v_SecondaryBandChBandwidth_UL); + v_Index := f_EUTRA_CellInfo_GetIndex (eutra_Cell30); + v_EUTRA_Cells[v_Index] := f_EUTRA_CellInfo_Init(eutra_Cell30, + px_eSecondaryFrequencyBand, + p_SysinfoCombination, + px_eSecondaryBandChannelBandwidth, + v_SecondaryBandChBandwidth_UL); + v_Index := f_EUTRA_CellInfo_GetIndex (eutra_Cell31); + v_EUTRA_Cells[v_Index] := f_EUTRA_CellInfo_Init(eutra_Cell31, + px_eSecondaryFrequencyBand, + p_SysinfoCombination, + px_eSecondaryBandChannelBandwidth, + v_SecondaryBandChBandwidth_UL); + return v_EUTRA_Cells; + } + + //------------------------------------------------------------------------------------------ + // --------------------- Initialise EUTRA cells info for NAS test cases ------------------- + /* + * @desc Initialise cell info for one NAS cell + * @param p_CellId + * @param p_CellsOnPLMN + * @param p_SysinfoCombination + * @param p_FrequencyBand + * @param p_DL_Bandwidth + * @param p_UL_Bandwidth + * @param p_CellSpecialFreq + * @return EUTRA_CellInfo_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + * @sic R5-096641 sic@ + */ + function fl_EUTRA_NAS_CellInfo_Init(EUTRA_CellId_Type p_CellId, + EUTRA_NAS_NumOfPLMN_Type p_CellsOnPLMN, + Combination_Type p_SysinfoCombination, + FreqBandIndicator p_FrequencyBand, + Dl_Bandwidth_Type p_DL_Bandwidth, + Ul_Bandwidth_Type p_UL_Bandwidth, + EUTRA_NAS_CellSpecialFreq p_CellSpecialFreq) return EUTRA_CellInfo_Type + { + /* @sic R5-106627 : delete p_CellTC_Type and replace it with p_SysinfoCombination sic@ + */ + var CellIdentities_Type v_CellIds := fl_EUTRA_InitCellIdentities_NAS(p_CellId, p_CellsOnPLMN); + var EUTRA_FDD_TDD_CellInfo_Type v_FDD_TDD_Info:= fl_EUTRA_InitFDD_TDD_FromBand (p_FrequencyBand); + var EUTRA_FDD_TDD_Mode_Type v_FDD_TDD := v_FDD_TDD_Info.FDD_TDD; + var CellTimingInfo_Type v_Celltiming := fl_EUTRA_InitialiseCellTiming (p_CellId, v_FDD_TDD, p_CellsOnPLMN); + var RootSequenceIndex_Type v_RootSequenceIndex_Type := f_EUTRA_InitialisePRACH_RootSequenceIndex (p_CellId, v_FDD_TDD, p_CellsOnPLMN); + var RACH_TimingAdvance_Type v_RAR_TA := fl_EUTRA_InitialiseRAR_TA(v_FDD_TDD, v_Celltiming); //@sic R5-121777 sic@ + + var CarrierFreqEUTRA v_UL_DL_Earfcn; + var NAS_Parameter_Type v_NAS_Param; + var template (value) BcchInfo_Type v_BCCH_Info; + var template (value) EUTRA_CellInfo_Type v_CellInfo; + var Frequency_fList_Type v_Freq; + var ChannelBandwidthDependency_Type v_ChannelBandwidthDependency := f_EUTRA_BandDependentParam(p_DL_Bandwidth, p_UL_Bandwidth); //@sic R5s090180: return CFI value sic@ + var Combination_Type v_SysinfoCombination := p_SysinfoCombination; + + // Initialise Frequencies f1/f2/f3/f4 + v_Freq:= f_EUTRA_InitFrequency_f1Tof4(p_FrequencyBand, p_DL_Bandwidth, p_UL_Bandwidth); + + // Initialise the Frequency of the cell. + select (p_CellsOnPLMN) { + case (LTE_AllCellsOnSamePLMN) { + // If all cells in the test case are on the same PLMN + // Acc. 36.508 Table 6.3.2.2-2 + // Cell A/B/D -> frequency f1 + // Cell C/M -> Frequency f2 + // others Cells: any value as other cells are on a different PLMN + select (p_CellId) { + case (eutra_CellA, eutra_CellB,eutra_CellD) { + v_UL_DL_Earfcn := v_Freq.f1; //f1 + } + case (eutra_CellC, eutra_CellM) { + v_UL_DL_Earfcn := v_Freq.f2; //f2 + } + case else { // others Cells: not applicable as other cells are on a different PLMN + v_UL_DL_Earfcn := v_Freq.f3; //f3 Dummy value + } + } + } + case (LTE_CellsOnDifferentPLMN) { + // If all cells in the test case are on the same PLMN + select (p_CellSpecialFreq) { // @sic R5-102140 sic@ + case (LTE_NAS_NormalFreq) { } + case (LTE_NAS_Usef1_f2) { + // Assign freq according to NOTE1 in 36.508 Table 6.3.2.2-3 + // f1 and f2 not being allocated to any cell in the test case, f1 or f2 is allocated, instead of f3 and f4 + v_Freq.f3 := v_Freq.f1; + v_Freq.f4:=v_Freq.f2; + } + case (LTE_NAS_Replacef3_f1) { // @sic R5-121081 sic@ + // Assign freq according to NOTE1 in 36.508 Table 6.3.2.2-3 + // except that f3 is replaced by f1 + v_Freq.f3 := v_Freq.f1; + } + case (LTE_NAS_Replacef4_f1) { // @sic R5-121081 sic@ + // Assign freq according to NOTE1 in 36.508 Table 6.3.2.2-3 + // except that f4 is replaced by f1 + v_Freq.f4 := v_Freq.f1; + } + case (LTE_NAS_Replacef3_f2) { // @sic R5-121081 sic@ + // Assign freq according to NOTE1 in 36.508 Table 6.3.2.2-3 + // except that f3 is replaced by f2 + v_Freq.f3 := v_Freq.f2; + } + case else { + FatalError (__FILE__, __LINE__, "invalid value in p_CellSpecialFreq"); + } + } + // Acc. 36.508 Table 6.3.2.2-3 + // Cell A/B/C/D/M -> frequency f1 + // Cell E/G/H -> Frequency f2 + // Cell I/K/L -> Frequency f3 + // Cell J -> Frequency f4 + // others Cells: no Other cells + // The test frequency f3 or f4 is allocated to the cell if f1 and f2 are already allocated to the cells in the test. + select (p_CellId) { + case (eutra_CellA, eutra_CellB, eutra_CellC, eutra_CellD, eutra_CellM) { + v_UL_DL_Earfcn := v_Freq.f1; //f1 + } + case (eutra_CellE, eutra_CellG, eutra_CellH) { + v_UL_DL_Earfcn := v_Freq.f2; //f2 + } + case (eutra_CellI, eutra_CellK, eutra_CellL) { + v_UL_DL_Earfcn := v_Freq.f3; //f3 + } + case else { // CellJ f4 + v_UL_DL_Earfcn := v_Freq.f4; + } + } + } + case else { + FatalError (__FILE__, __LINE__, "invalid value in p_CellSpecialFreq"); + } + } + + // Initialise NAS parameters + v_NAS_Param := fl_EUTRA_InitNAS_forNAS_Cells( p_CellId, p_FrequencyBand, p_SysinfoCombination); //@sic R5s130498 sic@ + + // SIB5 is not valid for NAS cells G, H & J + // @sic R5s110046 sic@ + if (p_CellId == eutra_CellG or + p_CellId == eutra_CellH or + p_CellId == eutra_CellJ) { + select (p_SysinfoCombination){ + case (c3) {v_SysinfoCombination := c1} + case (c9) {v_SysinfoCombination := c4} // @sic R5s110593 sic@ + case (c10a) {v_SysinfoCombination := c10} + case (c12) {v_SysinfoCombination := c5} + case (c13) {v_SysinfoCombination := c2} + } + } + + // Initialise BCCH info + v_BCCH_Info := f_EUTRA_InitSystemInformation(p_CellId, + v_CellIds.CellIdentity, + v_SysinfoCombination, //All cells are by default intitialise with the same sysinfo combination + p_FrequencyBand, + p_DL_Bandwidth, + p_UL_Bandwidth, + cs_PlmnIdList_1Entry(v_NAS_Param.Guti_Parameters.PLMN_Identity), + v_NAS_Param.TrackingAreaCode, + v_FDD_TDD_Info, + v_RootSequenceIndex_Type); // @sic R5s090180 sic@ + + + v_CellInfo := cs_EUTRA_CellInfoDef(v_CellIds, + v_SysinfoCombination, + p_FrequencyBand, + v_UL_DL_Earfcn, + p_DL_Bandwidth, + p_UL_Bandwidth, + v_NAS_Param, + v_BCCH_Info, + v_Celltiming, + v_FDD_TDD_Info, + v_ChannelBandwidthDependency.Cfi, + v_RAR_TA, + v_ChannelBandwidthDependency.sr_PUCCH_ResourceIndex); // @sic R5s090312 sic@ + return valueof(v_CellInfo); // Note: valueof cannot be avoided here + }; + + //---------------------------------------------------------------------------------------------------------- + /* + * @desc Initialise all EUTRA cell info for NAS test cases + * @param p_CellsOnPLMN + * @param p_SysinfoCombination + * @param p_CellSpecialFreq + * @return EUTRA_CellInfoList_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_NAS_CellArray_Init(EUTRA_NAS_NumOfPLMN_Type p_CellsOnPLMN, + Combination_Type p_SysinfoCombination, + EUTRA_NAS_CellSpecialFreq p_CellSpecialFreq) return EUTRA_CellInfoList_Type + { + /* @sic R5-102223 : replace px_eDL_ChannelBandwidth to px_ePrimaryBandChannelBandwidth and px_eSecondaryBandChannelBandwidth sic@ + * @sic R5-102223 : delete px_eUL_ChannelBandwidth sic@ + * @sic R5-106627 : delete p_CellTC_Type and replace it with p_SysinfoCombination sic@ + */ + var EUTRA_CellInfoList_Type v_EUTRA_Cells; + var integer v_Index; + var Ul_Bandwidth_Type v_PrimaryBandChBandwidth_UL := f_ConvertDL_BandwidthToUL (px_ePrimaryBandChannelBandwidth); + var Combination_Type v_SysinfoCombination := p_SysinfoCombination; + + // Check SYSINFO combination for Band 13 + // In band 13, only f1 is available, then SIB5 shall not be broadcast + // @sic R5-106627 sic@ + if (px_ePrimaryFrequencyBand == 13) { + select (p_SysinfoCombination){ + case (c3) {v_SysinfoCombination := c1} + case (c9) {v_SysinfoCombination := c4} + case (c10a) {v_SysinfoCombination := c10} // @sic R5s110593 sic@ + case (c12) {v_SysinfoCombination := c5} + case (c13) {v_SysinfoCombination := c2} + } + } + + v_Index := f_EUTRA_CellInfo_GetIndex (eutra_CellA); + v_EUTRA_Cells[v_Index] := fl_EUTRA_NAS_CellInfo_Init(eutra_CellA, + p_CellsOnPLMN, + v_SysinfoCombination, + px_ePrimaryFrequencyBand, + px_ePrimaryBandChannelBandwidth, + v_PrimaryBandChBandwidth_UL, + p_CellSpecialFreq); + v_Index := f_EUTRA_CellInfo_GetIndex (eutra_CellB); + v_EUTRA_Cells[v_Index] := fl_EUTRA_NAS_CellInfo_Init(eutra_CellB, + p_CellsOnPLMN, + v_SysinfoCombination, + px_ePrimaryFrequencyBand, + px_ePrimaryBandChannelBandwidth, + v_PrimaryBandChBandwidth_UL, + p_CellSpecialFreq); + v_Index := f_EUTRA_CellInfo_GetIndex (eutra_CellC); + v_EUTRA_Cells[v_Index] := fl_EUTRA_NAS_CellInfo_Init(eutra_CellC, + p_CellsOnPLMN, + v_SysinfoCombination, + px_ePrimaryFrequencyBand, + px_ePrimaryBandChannelBandwidth, + v_PrimaryBandChBandwidth_UL, + p_CellSpecialFreq); + v_Index := f_EUTRA_CellInfo_GetIndex (eutra_CellD); + v_EUTRA_Cells[v_Index] := fl_EUTRA_NAS_CellInfo_Init(eutra_CellD, + p_CellsOnPLMN, + v_SysinfoCombination, + px_ePrimaryFrequencyBand, + px_ePrimaryBandChannelBandwidth, + v_PrimaryBandChBandwidth_UL, + p_CellSpecialFreq); + v_Index := f_EUTRA_CellInfo_GetIndex (eutra_CellM); + v_EUTRA_Cells[v_Index] := fl_EUTRA_NAS_CellInfo_Init(eutra_CellM, + p_CellsOnPLMN, + v_SysinfoCombination, + px_ePrimaryFrequencyBand, + px_ePrimaryBandChannelBandwidth, + v_PrimaryBandChBandwidth_UL, + p_CellSpecialFreq); + if (p_CellsOnPLMN == LTE_CellsOnDifferentPLMN) { + v_Index := f_EUTRA_CellInfo_GetIndex (eutra_CellE); + v_EUTRA_Cells[v_Index] := fl_EUTRA_NAS_CellInfo_Init(eutra_CellE, // @sic R5s090310 sic@ + p_CellsOnPLMN, + v_SysinfoCombination, + px_ePrimaryFrequencyBand, + px_ePrimaryBandChannelBandwidth, + v_PrimaryBandChBandwidth_UL, + p_CellSpecialFreq); + v_Index := f_EUTRA_CellInfo_GetIndex (eutra_CellG); + v_EUTRA_Cells[v_Index] := fl_EUTRA_NAS_CellInfo_Init(eutra_CellG, + p_CellsOnPLMN, + v_SysinfoCombination, + px_ePrimaryFrequencyBand, + px_ePrimaryBandChannelBandwidth, + v_PrimaryBandChBandwidth_UL, + p_CellSpecialFreq); + v_Index := f_EUTRA_CellInfo_GetIndex (eutra_CellH); + v_EUTRA_Cells[v_Index] := fl_EUTRA_NAS_CellInfo_Init(eutra_CellH, + p_CellsOnPLMN, + v_SysinfoCombination, + px_ePrimaryFrequencyBand, + px_ePrimaryBandChannelBandwidth, + v_PrimaryBandChBandwidth_UL, + p_CellSpecialFreq); + v_Index := f_EUTRA_CellInfo_GetIndex (eutra_CellI); + v_EUTRA_Cells[v_Index] := fl_EUTRA_NAS_CellInfo_Init(eutra_CellI, + p_CellsOnPLMN, + v_SysinfoCombination, + px_ePrimaryFrequencyBand, + px_ePrimaryBandChannelBandwidth, + v_PrimaryBandChBandwidth_UL, + p_CellSpecialFreq); + v_Index := f_EUTRA_CellInfo_GetIndex (eutra_CellJ); + v_EUTRA_Cells[v_Index] := fl_EUTRA_NAS_CellInfo_Init(eutra_CellJ, + p_CellsOnPLMN, + v_SysinfoCombination, + px_ePrimaryFrequencyBand, + px_ePrimaryBandChannelBandwidth, + v_PrimaryBandChBandwidth_UL, + p_CellSpecialFreq); + v_Index := f_EUTRA_CellInfo_GetIndex (eutra_CellK); + v_EUTRA_Cells[v_Index] := fl_EUTRA_NAS_CellInfo_Init(eutra_CellK, + p_CellsOnPLMN, + v_SysinfoCombination, + px_ePrimaryFrequencyBand, + px_ePrimaryBandChannelBandwidth, + v_PrimaryBandChBandwidth_UL, + p_CellSpecialFreq); + v_Index := f_EUTRA_CellInfo_GetIndex (eutra_CellL); + v_EUTRA_Cells[v_Index] := fl_EUTRA_NAS_CellInfo_Init(eutra_CellL, + p_CellsOnPLMN, + v_SysinfoCombination, + px_ePrimaryFrequencyBand, + px_ePrimaryBandChannelBandwidth, + v_PrimaryBandChBandwidth_UL, + p_CellSpecialFreq); + } + return v_EUTRA_Cells; + } + + //---------------------------------------------------------------------------- + // Access to Cell Array: GET functions + + /* + * @desc get info of cell with given index (p_CellId) + * @param p_CellId + * @return EUTRA_CellInfo_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_Get(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return EUTRA_CellInfo_Type + { + var integer v_Index := f_EUTRA_CellInfo_GetIndex(p_CellId); + return vc_EUTRA_Global.CellArray[v_Index]; + } + + /* + * @desc get information about the DRX configuration; this shall be the same configuration as configured at the SS + * @param p_CellId + * @return DrxCtrl_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_GetDrxCtrl(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return DrxCtrl_Type + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + return v_CellInfo.DrxCtrl; + } + + /* + * @desc auxiliary function to check whether DRX is configured or whether it is "None" + * @param p_CellId + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_DrxIsConfigured(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return boolean + { + var DrxCtrl_Type v_DrxCtrl := f_EUTRA_CellInfo_GetDrxCtrl(p_CellId); + return not ischosen(v_DrxCtrl.None); /* @sic R5110303 sic@ */ + } + + /* + * @desc get information about the measurement gap configuration; this shall be the same configuration as configured at the SS + * @param p_CellId + * @return MeasGapCtrl_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_GetMeasGapCtrl(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return MeasGapCtrl_Type + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + return v_CellInfo.MeasGapCtrl; + } + + /* + * @desc auxiliary function to check whether measurement gaps are configured or whether it is "None" + * @param p_CellId + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_MeasGapIsConfigured(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return boolean + { + var MeasGapCtrl_Type v_MeasGapCtrl := f_EUTRA_CellInfo_GetMeasGapCtrl(p_CellId); + return not ischosen(v_MeasGapCtrl.None); + } + + /* + * @desc get fdd/tdd for given cell + * @param p_CellId + * @return EUTRA_FDD_TDD_Mode_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_GetFDD_TDD(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return EUTRA_FDD_TDD_Mode_Type + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + return v_CellInfo.FDD_TDD_Info.FDD_TDD; + } + + /* + * @desc return the FDD/TDD information stored in EUTRA_CellInfo + * @param p_CellId + * @return EUTRA_FDD_TDD_CellInfo_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_GetFDD_TDD_Info(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return EUTRA_FDD_TDD_CellInfo_Type + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + return v_CellInfo.FDD_TDD_Info; + } + + /* + * @desc return the FDD/TDD SR configIndex information stored in EUTRA_CellInfo + * @param p_CellId + * @return SR_ConfigIndex_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_GetSR_ConfigIndex(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return SR_ConfigIndex_Type + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + return v_CellInfo.FDD_TDD_Info.sr_ConfigIndex; + } + + /* + * @desc get PCCH_Config from the system info as stored for the given cell + * @param p_CellId + * @return PCCH_Config + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_GetPCCH_ConfigInSYSINFO(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return PCCH_Config + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + return v_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon.pcch_Config; + } + + /* + * @desc get sys info for given cell + * @param p_CellId + * @return EUTRA_CellSysInfo_Type + * @status APPROVED (IMS, LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_CellInfo_GetSYSINFO(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return EUTRA_CellSysInfo_Type + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + return v_CellInfo.Sysinfo; + } + + /* + * @desc get systeminformationBlockType6 info for given cell + * @param p_CellId + * @return template (value) SystemInformationBlockType6 + * @status APPROVED (LTE_IRAT) + */ +function f_EUTRA_CellInfo_GetSib6(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return template (value) SystemInformationBlockType6 + { + var EUTRA_CellSysInfo_Type v_SysInfo := f_EUTRA_CellInfo_GetSYSINFO(p_CellId); + var template (value) SystemInformationBlockType6 v_SIB6; + + select (v_SysInfo.Combination) { //@sic R5s130922 sic@ + case (c4, c10) { + v_SIB6 := v_SysInfo.BCCH_Info.SIs[2].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib6; + } + case (c9, c10a) { + v_SIB6 := v_SysInfo.BCCH_Info.SIs[2].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[1].sib6; + } + case (c11) { + v_SIB6 := v_SysInfo.BCCH_Info.SIs[3].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib6; + } + } + return v_SIB6; + } + + /* + * @desc get systeminformationBlockType7 info for given cell + * @param p_CellId + * @return SystemInformationBlockType7 + * @status APPROVED (LTE_IRAT) + */ + function f_EUTRA_CellInfo_GetSib7(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return SystemInformationBlockType7 + { + var SystemInformationBlockType7 v_SystemInformationBlockType7; + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + // SIB7 is only available in combination 5, 10 and 12 + select (v_CellInfo.Sysinfo.Combination) { + case (c5){ + v_SystemInformationBlockType7 := v_CellInfo.Sysinfo.BCCH_Info.SIs[2].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib7; + } + case (c10, c12, c10a){ + v_SystemInformationBlockType7 := v_CellInfo.Sysinfo.BCCH_Info.SIs[3].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib7; + } + case else {//Other combinations: nothing to return + FatalError(__FILE__, __LINE__, "SIB7 is not availabe in cell"); + } + } + return v_SystemInformationBlockType7; + } + + /* + * @desc Return the T300 timer value (in milli seconds) sent in the SIB2 of the cell + * @param p_CellId + * @return integer + * @status APPROVED (LTE) + */ + function f_EUTRA_CellInfo_GetT300(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return integer + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + var T300_Type v_T300; + var integer v_T300_Integer; + // current enumerated type in asn.1 ENUMERATED {ms100, ms200, ms400, ms600, ms1000, ms1500, ms2000, spare1}, + v_T300 := v_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.ue_TimersAndConstants.t300; + select (v_T300) { + case (ms100) {v_T300_Integer := 100;} + case (ms200) {v_T300_Integer := 200;} + case (ms400) {v_T300_Integer := 400;} + case (ms600) {v_T300_Integer := 600;} + case (ms1000) {v_T300_Integer := 1000;} + case (ms1500) {v_T300_Integer := 1500;} + case (ms2000) {v_T300_Integer := 2000;} + case else { FatalError(__FILE__, __LINE__, "T300 has unrecognizable value");} + }; + return v_T300_Integer; + } + + /* + * @desc get GUTI for given cell: Guti parameters stored in the EUTRA_CellInfo + * The returned PLMN is of ans.1 type PLMN_Identity + * @param p_CellId + * @return GutiParameters_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_GetGuti (EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return GutiParameters_Type + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + return v_CellInfo.NAS_Parameters.Guti_Parameters; + } + + /* + * @desc Return the PLMN in the Guti parameters stored in the EUTRA_CellInfo + * The returned PLMN is of ans.1 type PLMN_Identity + * @param p_CellId + * @return PLMN_Identity + * @status APPROVED (LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_GetGutiPLMN (EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return PLMN_Identity + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + return v_CellInfo.NAS_Parameters.Guti_Parameters.PLMN_Identity; + } + + /* + * @desc Return the TAC parameter stored in the EUTRA_CellInfo + * @param p_CellId + * @return TrackingAreaCode + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_GetTAC (EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return TrackingAreaCode + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + return v_CellInfo.NAS_Parameters.TrackingAreaCode; + } + + /* + * @desc Return the EARFCN parameters (DL and UL) stored in the EUTRA_CellInfo + * @param p_CellId + * @return CarrierFreqEUTRA + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_CellInfo_GetEARFCN (EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return CarrierFreqEUTRA + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + return v_CellInfo.Frequency.UL_DL_Earfcn; + } + + /* + * @desc Return the DL EARFCN parameters DL stored in the EUTRA_CellInfo + * @param p_CellId + * @return ARFCN_ValueEUTRA + * @status APPROVED (IMS, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_GetEARFCN_DL (EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return ARFCN_ValueEUTRA + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + return v_CellInfo.Frequency.UL_DL_Earfcn.dl_CarrierFreq; + } + + /* + * @desc Return the EARFCN parameters (DL and UL) stored in the EUTRA_CellInfo + * @param p_CellId + * @return PhysCellId + * @status APPROVED (LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_GetPhyCellId (EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return PhysCellId + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + return v_CellInfo.CellIds.PhysicalCellId; + } + + /* + * @desc Return the EARFCN parameters (DL and UL) stored in the EUTRA_CellInfo + * @param p_CellId + * @return Frequency_IE_Type + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_CellInfo_GetFrequencyIEs (EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return Frequency_IE_Type + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + return v_CellInfo.Frequency; + } + + /* + * @desc return the additionalSpectrumEmission stored in SIB2 of EUTRA_CellInfo + * @param p_CellId + * @return AdditionalSpectrumEmission_Type + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_CellInfo_GetAddSpectrumEmission (EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return AdditionalSpectrumEmission_Type + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + return v_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.freqInfo.additionalSpectrumEmission; + } + + /* + * @desc return the location area id stored in EUTRA_CellInfo + * @param p_CellId + * @return NAS_Lac + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_GetLocationAreaCode(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return NAS_Lac + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + return v_CellInfo.NAS_Parameters.LocationAreaCode; + } + + /* + * @desc return the C-RNTI stored in EUTRA_CellInfo + * @param p_CellId + * @return C_RNTI + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_CellInfo_GetC_RNTI(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return C_RNTI + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + return v_CellInfo.RNTI.C_RNTI; + } + + /* + * @desc Return the combination stored in the EUTRA_CellInfo + * @param p_CellId + * @return Combination_Type + * @status APPROVED (LTE, IMS_IRAT, LTE_A, LTE_IRAT) + */ + function f_EUTRA_CellInfo_GetCombination(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return Combination_Type + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + return v_CellInfo.Sysinfo.Combination; + } + + /* + * @desc Return the combination stored in the EUTRA_CellInfo + * @param p_CellId + * @return Dl_Bandwidth_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_GetDL_ChBandwidth(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return Dl_Bandwidth_Type + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + return v_CellInfo.Frequency.DL_ChBandwidth; + } + + /* + * @desc Return the combination stored in the EUTRA_CellInfo + * @param p_CellId + * @return Ul_Bandwidth_Type + * @status APPROVED (IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_CellInfo_GetUL_ChBandwidth(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return Ul_Bandwidth_Type + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + return v_CellInfo.Frequency.UL_ChBandwidth; + } + + /* + * @desc Return the EARFCN parameters (DL and UL) stored in the EUTRA_CellInfo + * @param p_CellId + * @return FreqBandIndicator + * @status APPROVED (IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_CellInfo_GetBand (EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return FreqBandIndicator + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + return v_CellInfo.Frequency.FrequencyBandIndicator; + } + + /* + * @desc Return the RootSequenceIndex in SIB2 stored in the EUTRA_CellInfo + * @param p_CellId + * @return RootSequenceIndex_Type + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_CellInfo_GetRootSequenceIndex (EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return RootSequenceIndex_Type + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + return v_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon.prach_Config.rootSequenceIndex; + } + + /* + * @desc Return the Radom Access Request Timing Advance stored in the EUTRA_CellInfo + * @param p_CellId + * @return RACH_TimingAdvance_Type + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_CellInfo_GetRAR_TA (EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return RACH_TimingAdvance_Type + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + return v_CellInfo.PhysicalParameters.RAR_TA; + } + + /* + * @desc get SR PUCCH ResourceIndex for given cell + * @param p_CellId + * @return SR_PUCCH_ResourceIndex_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_GetSR_PUCCH_ResourceIndex(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return SR_PUCCH_ResourceIndex_Type + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + return v_CellInfo.PhysicalParameters.sr_PUCCH_ResourceIndex; + } + + /* + * @desc get Cell Identity for given cell + * @param p_CellId + * @return CellIdentity + * @status APPROVED (LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_GetCellIdentity (EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return CellIdentity + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + return v_CellInfo.CellIds.CellIdentity; + } + + /* + * @desc get AntennaInfoCommon from the cell info as stored for the given cell + * @param p_CellId + * @return template (omit) AntennaInfoCommon + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_CellInfo_GetAntennaInfoCommon (EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return template (omit) AntennaInfoCommon + { + // @sic R5s110314 sic@ + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + return v_CellInfo.AntennaInfo.AntennaInfoCommon; + } + + /* + * @desc get AntennaInfoDedicated from the cell info as stored for the given cell + * @param p_CellId + * @return PhysicalConfigDedicated_AntennaInfo_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_GetAntennaInfoDedicated (EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return PhysicalConfigDedicated_AntennaInfo_Type + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + return v_CellInfo.AntennaInfo.AntennaInfoDedicated; + } + + /* + * @desc get timing info (SNF offset, Tcell) from the cell info as stored for the given cell + * @param p_CellId + * @return CellTimingInfo_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_GetCellTimingInfo(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return CellTimingInfo_Type + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + return v_CellInfo.CellTimingInfo; + } + + /* + * @desc return the soundingRSUL-ConfigCommon stored in SIB1 of EUTRA_CellInfo + * @param p_CellId + * @return SoundingRS_UL_ConfigCommon + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_CellInfo_GetSounding_ConfigCommon(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return SoundingRS_UL_ConfigCommon + { + var EUTRA_CellSysInfo_Type v_EUTRA_CellSysInfo_Type := f_EUTRA_CellInfo_GetSYSINFO(p_CellId); + return v_EUTRA_CellSysInfo_Type.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon.soundingRS_UL_ConfigCommon; + } + + /* + * @desc return the Pusch ConfigCommon stored in SIB1 of EUTRA_CellInfo + * @param p_CellId + * @return PUSCH_ConfigCommon + * @status APPROVED (LTE) + */ + function f_EUTRA_CellInfo_GetPusch_ConfigCommon(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return PUSCH_ConfigCommon + { + var EUTRA_CellSysInfo_Type v_EUTRA_CellSysInfo_Type := f_EUTRA_CellInfo_GetSYSINFO(p_CellId); + return v_EUTRA_CellSysInfo_Type.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon.pusch_ConfigCommon; + } + + /* + * @desc return the Prach Config stored in SIB1 of EUTRA_CellInfo + * @param p_CellId + * @return PRACH_ConfigSIB + * @status APPROVED (LTE) + */ + function f_EUTRA_CellInfo_GetPrach_Config(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return PRACH_ConfigSIB + { + var EUTRA_CellSysInfo_Type v_EUTRA_CellSysInfo_Type := f_EUTRA_CellInfo_GetSYSINFO(p_CellId); + return v_EUTRA_CellSysInfo_Type.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon.prach_Config; + } + + /* + * @desc return the stored TDD_Config in SIB1 of EUTRA_CellInfo + * @param p_CellId + * @return template (omit) TDD_Config + * @status APPROVED (LTE) + */ + function f_EUTRA_CellInfo_GetTDD_Config(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return template (omit) TDD_Config + { + var EUTRA_CellSysInfo_Type v_EUTRA_CellSysInfo_Type := f_EUTRA_CellInfo_GetSYSINFO(p_CellId); + return v_EUTRA_CellSysInfo_Type.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.tdd_Config; + } + + /* + * @desc return the Rach ConfigCommon stored in SIB1 of EUTRA_CellInfo + * @param p_CellId + * @return RACH_ConfigCommon + * @status APPROVED (LTE) + */ + function f_EUTRA_CellInfo_GetRach_ConfigCommon(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return RACH_ConfigCommon + { + var EUTRA_CellSysInfo_Type v_EUTRA_CellSysInfo_Type := f_EUTRA_CellInfo_GetSYSINFO(p_CellId); + return v_EUTRA_CellSysInfo_Type.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon.rach_ConfigCommon; + } + + //---------------------------------------------------------------------------- + // Access to Cell Array: SET functions + + /* + * @desc set cell info for given cell + * @param p_CellId + * @param p_CellInfo + * note: "template (value)" to allow a formal template being handed over; + * this is to cope with parameters of set-functions being "template (omit)" + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_Set(EUTRA_CellId_Type p_CellId, + template (value) EUTRA_CellInfo_Type p_CellInfo) runs on EUTRA_PTC + { + var integer v_Index := f_EUTRA_CellInfo_GetIndex(p_CellId); + vc_EUTRA_Global.CellArray[v_Index] := valueof (p_CellInfo); /* valueof cannot be avoided here */ + } + + /* + * @desc set DrxCtrl + * @param p_CellId + * @param p_DrxCtrl + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_SetDrxCtrl(EUTRA_CellId_Type p_CellId, + DrxCtrl_Type p_DrxCtrl) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + v_CellInfo.DrxCtrl := p_DrxCtrl; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc set MeasGapCtrl + * @param p_CellId + * @param p_MeasGapCtrl + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_SetMeasGapCtrl(EUTRA_CellId_Type p_CellId, + MeasGapCtrl_Type p_MeasGapCtrl) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + v_CellInfo.MeasGapCtrl := p_MeasGapCtrl; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Assign the parameterised Qrxlevmin value in SIB1 of the cell + * @param p_CellId + * @param p_Q_Rxlevmin + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_EUTRA_CellInfo_SetSysInfo_Q_Rxlevmin(EUTRA_CellId_Type p_CellId, + Q_Rxlevmin_Type p_Q_Rxlevmin) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.cellSelectionInfo.q_RxLevMin := p_Q_Rxlevmin; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc set TAC parameter in EUTRA_CellInfo + * @param p_CellId + * @param p_TAC + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_CellInfo_SetTAC(EUTRA_CellId_Type p_CellId, + TrackingAreaCode p_TAC) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.NAS_Parameters.TrackingAreaCode := p_TAC; + v_CellInfo.Sysinfo.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.cellAccessRelatedInfo.trackingAreaCode := p_TAC; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Set the Guti parameters in the EUTRA_CellInfo + * @param p_CellId + * @param p_Guti + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_CellInfo_SetGuti(EUTRA_CellId_Type p_CellId, + template (value) GutiParameters_Type p_Guti) runs on EUTRA_PTC + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + var template (value) EUTRA_CellInfo_Type v_NewCellInfo := v_CellInfo; + + if (v_CellInfo.Frequency.FrequencyBandIndicator == 6) { + // For Band 6: set MCC to the Japan MCC value + v_NewCellInfo.NAS_Parameters.Guti_Parameters := p_Guti; + v_NewCellInfo.NAS_Parameters.Guti_Parameters.PLMN_Identity.mcc := f_EUTRA_ConvertMCC_Nas2Asn(px_eJapanMCC_Band6); + v_NewCellInfo.Sysinfo.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.cellAccessRelatedInfo.plmn_IdentityList[0].plmn_Identity.mcc := f_EUTRA_ConvertMCC_Nas2Asn(px_eJapanMCC_Band6); + v_NewCellInfo.Sysinfo.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.cellAccessRelatedInfo.plmn_IdentityList[0].plmn_Identity.mnc := p_Guti.PLMN_Identity.mnc; + } else { + v_NewCellInfo.NAS_Parameters.Guti_Parameters := p_Guti; + v_NewCellInfo.Sysinfo.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.cellAccessRelatedInfo.plmn_IdentityList[0].plmn_Identity.mcc := p_Guti.PLMN_Identity.mcc; // @sic R5s100008 sic@ + v_NewCellInfo.Sysinfo.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.cellAccessRelatedInfo.plmn_IdentityList[0].plmn_Identity.mnc := p_Guti.PLMN_Identity.mnc; // @sic R5s100008 sic@ + } + f_EUTRA_CellInfo_Set (p_CellId, v_NewCellInfo); + } + + /* + * @desc Set the EARFCN parameters (DL and UL) in the EUTRA_CellInfo + * @param p_CellId + * @param p_CarrierFreqEUTRA + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_CellInfo_SetEARFCN(EUTRA_CellId_Type p_CellId, + CarrierFreqEUTRA p_CarrierFreqEUTRA) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + v_CellInfo.Frequency.UL_DL_Earfcn := p_CarrierFreqEUTRA; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Set the band in EUTRA_CellInfo and in MIB + * @param p_CellId + * @param p_Band + * @status APPROVED (LTE) + */ + function f_EUTRA_CellInfo_SetBand(EUTRA_CellId_Type p_CellId, + FreqBandIndicator p_Band) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + v_CellInfo.Frequency.FrequencyBandIndicator:= p_Band; + v_CellInfo.Sysinfo.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.freqBandIndicator := p_Band; + f_EUTRA_CellInfo_Set(p_CellId, v_CellInfo); + } + + /* + * @desc Assign the parameterised T300 value in SIB2 of the cell + * @param p_CellId + * @param p_T300 + * @status APPROVED (LTE) + */ + function f_EUTRA_CellInfo_SetSysInfo_T300(EUTRA_CellId_Type p_CellId, + T300_Type p_T300) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.ue_TimersAndConstants.t300 := p_T300; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Assign the parameterised T301 value in SIB2 of the cell + * @param p_CellId + * @param p_T301 + * @status APPROVED (LTE) + */ + function f_EUTRA_CellInfo_SetSysInfo_T301(EUTRA_CellId_Type p_CellId, + T301_Type p_T301) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.ue_TimersAndConstants.t301 := p_T301; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Assign the parameterised T310 value in SIB2 of the cell + * @param p_CellId + * @param p_T310 + * @status APPROVED (LTE) + */ + function f_EUTRA_CellInfo_SetSysInfo_T310(EUTRA_CellId_Type p_CellId, + T310_Type p_T310) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.ue_TimersAndConstants.t310 := p_T310; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Assign the parameterised T311 value in SIB2 of the cell + * @param p_CellId + * @param p_T311 + * @status APPROVED (LTE) + */ + function f_EUTRA_CellInfo_SetSysInfo_T311(EUTRA_CellId_Type p_CellId, + T311_Type p_T311) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + v_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.ue_TimersAndConstants.t311 := p_T311; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Assign the parameterised q-QualMin-r9 value in SIB3 of the cell + * Should be moved to module EUTRA_Component + * @param p_CellId + * @param p_Q_QualMin_r9 + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_EUTRA_CellInfo_SetSysInfoSIB3_Q_QualMin_r9(EUTRA_CellId_Type p_CellId, + template (omit) Q_QualMin_r9 p_Q_QualMin_r9) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[1].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib3.q_QualMin_r9 := p_Q_QualMin_r9; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + }; + + /* + * @desc Assign the parameterised nonCriticalExtension value in SIB1 of the cell + * Should be moved to module EUTRA_Component + * @param p_CellId + * @param p_SystemInformationBlockType1_v890_IEs + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_EUTRA_CellInfo_SetSysInfo_NCEinSIB1 (EUTRA_CellId_Type p_CellId, + template (omit) SystemInformationBlockType1_v890_IEs p_SystemInformationBlockType1_v890_IEs) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.nonCriticalExtension := p_SystemInformationBlockType1_v890_IEs; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + }; + + /* + * @desc Assign the parameterised nonCriticalExtension SystemInformationBlockType1_v8h0_IEs value in SIB1 of the cell + * @param p_CellId + * @param p_SystemInformationBlockType1_v8h0_IEs + * @status APPROVED (LTE) + */ + function f_EUTRA_CellInfo_SetSysInfo_SIB1_v8h0_IEs(EUTRA_CellId_Type p_CellId, + template(value) SystemInformationBlockType1_v8h0_IEs p_SystemInformationBlockType1_v8h0_IEs) runs on EUTRA_PTC + { /* Assign the parameterised SystemInformationBlockType1_v8h0_IEs value in SIB1 of the cell */ + var bitstring v_SystemInformationBlockType1_v8h0_IEs := encvalue(p_SystemInformationBlockType1_v8h0_IEs); + var octetstring v_SIB1_v8h0_IEs_Octetstring := bit2oct(f_OctetAlignedBitString(v_SystemInformationBlockType1_v8h0_IEs)); + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.nonCriticalExtension.lateNonCriticalExtension := v_SIB1_v8h0_IEs_Octetstring; + f_EUTRA_CellInfo_Set(p_CellId, v_CellInfo); + } + + /* + * @desc Assign the parameterised nonCriticalExtension SystemInformationBlockType2_v8h0_IEs value in SIB2 of the cell + * @param p_CellId + * @param p_SystemInformationBlockType2_v8h0_IEs + * @status APPROVED (LTE) + */ + function f_EUTRA_CellInfo_SetSysInfo_SIB2_v8h0_IEs(EUTRA_CellId_Type p_CellId, + template(value) SystemInformationBlockType2_v8h0_IEs p_SystemInformationBlockType2_v8h0_IEs) runs on EUTRA_PTC + { /* Assign the parameterised SystemInformationBlockType2_v8h0_IEs value in SIB2 of the cell */ + var bitstring v_SystemInformationBlockType2_v8h0_IEs := encvalue(p_SystemInformationBlockType2_v8h0_IEs); + var octetstring v_SIB2_v8h0_IEs_Octetstring := bit2oct(f_OctetAlignedBitString(v_SystemInformationBlockType2_v8h0_IEs)); + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.lateNonCriticalExtension := v_SIB2_v8h0_IEs_Octetstring; + f_EUTRA_CellInfo_Set(p_CellId, v_CellInfo); + } + + /* + * @desc Assign the parameterised additional spectrum emission in SIB2 of the cell + * @param p_CellId + * @param p_AdditionalSpectrumEmission + * @status APPROVED (LTE) + */ + function f_EUTRA_CellInfo_SetSysInfo_SIB2_AdditionalSpectrumEmission_IEs(EUTRA_CellId_Type p_CellId, + AdditionalSpectrumEmission p_AdditionalSpectrumEmission) runs on EUTRA_PTC + { /* Assign the parameterised SystemInformationBlockType2_v8h0_IEs value in SIB2 of the cell */ + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.freqInfo.additionalSpectrumEmission := p_AdditionalSpectrumEmission; + f_EUTRA_CellInfo_Set(p_CellId, v_CellInfo); + } + + /* + * @desc Assign the parameterised nonCriticalExtension SystemInformationBlockType5_v8h0_IEs value in SIB5 of the cell + * @param p_CellId + * @param p_SystemInformationBlockType5_v8h0_IEs + * @status APPROVED (LTE) + */ + function f_EUTRA_CellInfo_SetSysInfo_SIB5_v8h0_IEs(EUTRA_CellId_Type p_CellId, + template (value) SystemInformationBlockType5_v8h0_IEs p_SystemInformationBlockType5_v8h0_IEs) runs on EUTRA_PTC + { /* Assign the parameterised SystemInformationBlockType5_v8h0_IEs value in SIB5 of the cell */ + var bitstring v_SystemInformationBlockType5_v8h0_IEs := encvalue(p_SystemInformationBlockType5_v8h0_IEs); + var octetstring v_SIB5_v8h0_IEs_Octetstring := bit2oct(f_OctetAlignedBitString(v_SystemInformationBlockType5_v8h0_IEs)); + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + select (valueof(v_CellInfo.Sysinfo.Combination)) { + case (c3, c9) { + v_CellInfo.Sysinfo.BCCH_Info.SIs[2].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib5.lateNonCriticalExtension := v_SIB5_v8h0_IEs_Octetstring; + f_EUTRA_CellInfo_Set(p_CellId, v_CellInfo); + } + } + } + + /* + * @desc Assign the parameterised Preamble Transmission in the SIB2 of the cell + * @param p_CellId + * @param p_PreambleTransMax + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_CellInfo_SetPreambleTransMax(EUTRA_CellId_Type p_CellId, + PreambleTransMax p_PreambleTransMax) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon.rach_ConfigCommon.ra_SupervisionInfo.preambleTransMax := p_PreambleTransMax; /* @sic R5s100135 sic@ */ + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Assign the parameterised ra-ResponseWindowSize in the SIB2 of the cell + * @param p_CellId + * @param p_Ra_RespWinSize + * @status APPROVED (LTE) + */ + function f_EUTRA_CellInfo_SetRa_ResponseWindowSize(EUTRA_CellId_Type p_CellId, + Ra_ResponseWindowSize_Type p_Ra_RespWinSize) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon.rach_ConfigCommon.ra_SupervisionInfo.ra_ResponseWindowSize := p_Ra_RespWinSize; /* @sic R5s100135 sic@ */ + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Assign the parameterised Q-Hyst value in SIB3 of the cell + * @param p_CellId + * @param p_Q_Hyst + * @status APPROVED (LTE) + */ + function f_EUTRA_CellInfo_SetSysInfo_Q_Hyst(EUTRA_CellId_Type p_CellId, + Q_Hyst_Type p_Q_Hyst) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[1].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib3.cellReselectionInfoCommon.q_Hyst := p_Q_Hyst; // @sic R5s100281 sic@ + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Assign the parameter IMS emergency support in SIB1 of the cell + * @param p_CellId + * @param p_Ims_EmergencySupport + * @status APPROVED (LTE_IRAT) + */ + function f_EUTRA_CellInfo_SetSysInfo_EmergencySupport(EUTRA_CellId_Type p_CellId, template (omit) Ims_EmergencySupport_r9 p_Ims_EmergencySupport) runs on EUTRA_PTC // @sic R5s140731 R5-144741 sic@ + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.nonCriticalExtension.nonCriticalExtension.ims_EmergencySupport_r9:= p_Ims_EmergencySupport; + + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Assign the cell configuration type of the cell + * @param p_CellId + * @param p_CellConfigCapability + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_SetCellConfigCapability(EUTRA_CellId_Type p_CellId, + CellConfigCapability_Type p_CellConfigCapability) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.CellConfigCapability := p_CellConfigCapability; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Assign the cell configuration type of the cell + * @param p_CellId + * @param p_SB1_ValueTagChanged + * @status APPROVED (IMS, LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_SetSB1_ValueTag(EUTRA_CellId_Type p_CellId, + boolean p_SB1_ValueTagChanged) runs on EUTRA_PTC + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.SB1_ValueTagChanged := p_SB1_ValueTagChanged; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Assign the cell configuration type of the cell + * @param p_CellId + * @param p_CellSysInfo + * @status APPROVED (IMS, LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_SetSysinfo(EUTRA_CellId_Type p_CellId, + EUTRA_CellSysInfo_Type p_CellSysInfo) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo := p_CellSysInfo; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + function f_EUTRA_CellInfo_SetSysInfo_Q_RxLevMinOffset(EUTRA_CellId_Type p_CellId, + Q_RxLevMinOffset_Type p_Q_RxLevMinOffset) runs on EUTRA_PTC + { + /* Assign the parameterised q-RxLevMinOffset value in SIB1 of the cell */ + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.cellSelectionInfo.q_RxLevMinOffset := p_Q_RxLevMinOffset; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Assign the parameterised t-ReselectionEUTRAN value in SIB3 of the cell + * @param p_CellId + * @param p_T_ReselectionEutran + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_CellInfo_SetSysInfo_T_Reselection(EUTRA_CellId_Type p_CellId, + T_ReselectionEutran_Type p_T_ReselectionEutran) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[1].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib3.intraFreqCellReselectionInfo.t_ReselectionEUTRA := p_T_ReselectionEutran; // @sic R5s100281 sic@ + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + type record of PLMN_Identity PLMN_IdentityList_Type; /* local type definition; @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + + /* + * @desc Set the parameterised PLMN value in EUTRA Cellinfo + * @param p_CellId + * @param p_PlmnList + * @param p_PlmnIndex (default value: 0) ... index of of the PLMN in p_PlmnList to be used for PLMN_Identity + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_CellInfo_SetPLMN_Common(EUTRA_CellId_Type p_CellId, + template (value) PLMN_IdentityList_Type p_PlmnList, + integer p_PlmnIndex := 0) runs on EUTRA_PTC + { // @sic R5s110468: adding parameter p_PlmnIndex sic@ + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + var template (value) EUTRA_CellInfo_Type v_NewCellInfo := v_CellInfo; + var integer v_NoOfPlmns := lengthof(p_PlmnList); + var MCC v_MCC_JapanBand6; + var integer i; + + v_NewCellInfo.NAS_Parameters.Guti_Parameters.PLMN_Identity := p_PlmnList[p_PlmnIndex]; // @sic R5s110468 sic@ + for (i:=0; i 63) or (p_PRACH_ConfigInd < 0)) { + FatalError (__FILE__, __LINE__, "Parameter PRACH Config Index out of range(0..63)"); + } + + v_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon.prach_Config.prach_ConfigInfo.prach_ConfigIndex := p_PRACH_ConfigInd; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Assign the parameterised Preamble Transmission in the SIB2 of the cell + * @param p_CellId + * @param p_MAC_ContResTimer + * @status APPROVED (LTE) + */ + function f_EUTRA_CellInfo_SetMAC_ContResTimer(EUTRA_CellId_Type p_CellId, + MAC_ContentionResolutionTimer_Type p_MAC_ContResTimer) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon.rach_ConfigCommon.ra_SupervisionInfo.mac_ContentionResolutionTimer := p_MAC_ContResTimer; /* @sic R5s100135 sic@ */ + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Assign the parameterised UplinkPowerControlCommon_v1020 in the SIB2 of the cell + * @param p_CellId + * @param p_UplinkPowerControlCommon_v1020 + * @status APPROVED (LTE_A) + */ + function f_EUTRA_CellInfo_SetUplinkUplinkPowerControlCommon(EUTRA_CellId_Type p_CellId, + template (value) UplinkPowerControlCommon_v1020 p_UplinkPowerControlCommon_v1020) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon.uplinkPowerControlCommon_v1020 := p_UplinkPowerControlCommon_v1020; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Assign the parameterised cellBarred value in SIB1 of the cell + * @param p_CellId + * @param p_CellBarred + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_EUTRA_CellInfo_SetSysInfo_CellBarred(EUTRA_CellId_Type p_CellId, + CellBarred_Type p_CellBarred) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.cellAccessRelatedInfo.cellBarred := p_CellBarred; + f_EUTRA_CellInfo_Set(p_CellId, v_CellInfo); + } + + /* + * @desc Assign DefaultPagingCycle in SIB2 of the cell + * @param p_CellId + * @param p_DefaultPagingCycle + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_EUTRA_CellInfo_SetSysInfo_DefaultPagingCycle(EUTRA_CellId_Type p_CellId, + DefaultPagingCycle_Type p_DefaultPagingCycle) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon.pcch_Config.defaultPagingCycle := p_DefaultPagingCycle; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Assign the parameterised cellReselectionPriority value in SIB3 of the cell + * @param p_CellId + * @param p_CellRes_Prio + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_EUTRA_CellInfo_SetSysInfo_CellRes_Prio(EUTRA_CellId_Type p_CellId, + CellRes_Prio_Type p_CellRes_Prio) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[1].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib3.cellReselectionServingFreqInfo.cellReselectionPriority := p_CellRes_Prio; // @sic R5s100281 sic@ + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Assign the parameterised AccessBarring in SIB2 of the cell + * @param p_CellId + * @param p_AccessBarring + * @status APPROVED (IMS, LTE) + */ + function f_EUTRA_CellInfo_SetSysInfo_AccessBarring(EUTRA_CellId_Type p_CellId, + template (value) AccessBarringInformation_Type p_AccessBarring) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.ac_BarringInfo := p_AccessBarring; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Assign the parameterised SSAC barring infor for Voice in SIB2 of the cell + * @param p_CellId + * @param p_BarringForMMTEL_Voice + * @status APPROVED (IMS) + */ + function f_EUTRA_CellInfo_SetSIB2_SSAC_BarringForMMTEL_Voice( EUTRA_CellId_Type p_CellId, + template (omit) AC_BarringConfig p_BarringForMMTEL_Voice) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.ssac_BarringForMMTEL_Voice_r9 := p_BarringForMMTEL_Voice; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Assign the parameterised SSAC barring infor for video in SIB2 of the cell + * @param p_CellId + * @param p_BarringForMMTEL_Video + * @status APPROVED (IMS) + */ + function f_EUTRA_CellInfo_SetSIB2_SSAC_BarringForMMTEL_Video(EUTRA_CellId_Type p_CellId, + template (omit) AC_BarringConfig p_BarringForMMTEL_Video) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.ssac_BarringForMMTEL_Video_r9 := p_BarringForMMTEL_Video; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Assign the parameterised threshServingLow value in SIB3 of the cell + * @param p_CellId + * @param p_ThreshX_LowQ_r9 (default value: omit) + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_EUTRA_CellInfo_SetSysInfo_ThreshServingLowQ_r9(EUTRA_CellId_Type p_CellId, + template (omit) integer p_ThreshX_LowQ_r9 := omit) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[1].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib3.threshServingLowQ_r9 := p_ThreshX_LowQ_r9; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Assign the parameterised threshServingLow value in SIB3 of the cell + * @param p_CellId + * @param p_ReselectionThreshold + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_EUTRA_CellInfo_SetSysInfo_ThreshServingLow(EUTRA_CellId_Type p_CellId, + ReselectionThreshold p_ReselectionThreshold) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[1].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib3.cellReselectionServingFreqInfo.threshServingLow := p_ReselectionThreshold; // @sic R5s100281 sic@ + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Assign the parameterised Qrxlevmin value in SIB3 of the cell + * @param p_CellId + * @param p_Q_Rxlevmin + * @status APPROVED (LTE) + */ + function f_EUTRA_CellInfo_SetSysInfo_Intra_QRxlevmin(EUTRA_CellId_Type p_CellId, + Q_Rxlevmin_Type p_Q_Rxlevmin) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[1].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib3.intraFreqCellReselectionInfo.q_RxLevMin := p_Q_Rxlevmin; // @sic R5s100281 sic@ + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Assign the parameterised intraFreqReselection value in SIB1 of the cell + * @param p_CellId + * @param p_IntraFreqRes_Type + * @status APPROVED (LTE) + */ + function f_EUTRA_Cellinfo_SetSysInfo_IntraFreqRes(EUTRA_CellId_Type p_CellId, + IntraFreqRes_Type p_IntraFreqRes_Type) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.cellAccessRelatedInfo.intraFreqReselection := p_IntraFreqRes_Type; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Assign SIB3 for all combinations (C1..C10) for p_CellId + * @param p_CellId + * @param p_SIB3 + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_EUTRA_CellInfo_SetSIB3 (EUTRA_CellId_Type p_CellId, + template (value) SystemInformationBlockType3 p_SIB3) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[1].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib3 := p_SIB3; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Assign the parameterised SIB4 for p_CellId + * @param p_CellId + * @param p_Sib4 + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_CellInfo_SetSIB4(EUTRA_CellId_Type p_CellId, + template (value) SystemInformationBlockType4 p_Sib4) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + // SIB4 is only present in combination c2 and c7 (see 36.508 cl. 4.4.3 Table 4.4.3.1.1-1 for more information) + select (valueof(v_CellInfo.Sysinfo.Combination)) { + case (c2, c7, c11, c13) { // @sic R5s110166 sic@ + //The combination initiation can be found in f_EUTRA_InitSystemInformation + v_CellInfo.Sysinfo.BCCH_Info.SIs[2].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib4 := p_Sib4; + f_EUTRA_CellInfo_Set(p_CellId, v_CellInfo); + } + } + } + + /* + * @desc Assign the parameterised cellReservedForOperatorUse value in SIB1 of the cell + * @param p_CellId + * @param p_CellReservedForOpUse_Type + * @status APPROVED (LTE) + */ + function f_EUTRA_CellInfo_SetSysInfo_CellReservedForOpUse(EUTRA_CellId_Type p_CellId, + CellReservedForOpUse_Type p_CellReservedForOpUse_Type) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.cellAccessRelatedInfo.plmn_IdentityList[0].cellReservedForOperatorUse := p_CellReservedForOpUse_Type; + f_EUTRA_CellInfo_Set(p_CellId, v_CellInfo); + } + + /* + * @desc Assign the parameterised SIB5 for p_CellId + * @param p_CellId + * @param p_SIB5 + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_CellInfo_SetSIB5(EUTRA_CellId_Type p_CellId, + template (value) SystemInformationBlockType5 p_SIB5) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + // SIB5 is only present in combination c3 and c9 (see 36.508 cl. 4.4.3 Table 4.4.3.1.1-1 for more information) + select (valueof(v_CellInfo.Sysinfo.Combination)) { + case (c3, c9) { + v_CellInfo.Sysinfo.BCCH_Info.SIs[2].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib5 := p_SIB5; + f_EUTRA_CellInfo_Set(p_CellId, v_CellInfo); + } + } + } + + /* + * @desc function initialising SIB5 for multiband test cases + * @param p_CellId + * @status APPROVED (LTE) + */ + function f_EUTRA_SetDefaultSIB5_MultiBand(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { + var template (value) InterFreqCarrierFreqList v_InterFreqCarrierList; + var Frequency_fList_Type v_Frequency_PrimaryBand := f_EUTRA_InitFrequency_f1Tof4(px_ePrimaryFrequencyBand, + px_ePrimaryBandChannelBandwidth, + f_ConvertDL_BandwidthToUL(px_ePrimaryBandChannelBandwidth)); + var Frequency_fList_Type v_Frequency_SecondaryBand := f_EUTRA_InitFrequency_f1Tof4(px_eSecondaryFrequencyBand, + px_eSecondaryBandChannelBandwidth, + f_ConvertDL_BandwidthToUL(px_eSecondaryBandChannelBandwidth)); + var ChannelBandwidthDependency_Type v_PrimaryChannelBandwidthDependency := f_EUTRA_BandDependentParam(px_ePrimaryBandChannelBandwidth, + f_ConvertDL_BandwidthToUL(px_ePrimaryBandChannelBandwidth)); + var ChannelBandwidthDependency_Type v_SecondaryChannelBandwidthDependency := f_EUTRA_BandDependentParam(px_eSecondaryBandChannelBandwidth, + f_ConvertDL_BandwidthToUL(px_eSecondaryBandChannelBandwidth)); //@sic R5s120057 px_ePrimaryBandChannelBandwidth-> px_eSecondaryBandChannelBandwidth sic@ + select (p_CellId) { + case (eutra_Cell1, eutra_Cell2, eutra_Cell4, eutra_Cell11) { + // For cell frequency of f1: v_Frequency_PrimaryBand.f1 + // SIB5 contents: f2, f3, f5 (f1 in secondary band) + if (v_Frequency_PrimaryBand.f2.dl_CarrierFreq != tsc_DummyFrequency) { // f2 is defined for the Band px_ePrimaryFrequencyBand + if (v_Frequency_PrimaryBand.f3.dl_CarrierFreq != tsc_DummyFrequency) { // f3 is defined for the Band px_ePrimaryFrequencyBand + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq (v_Frequency_PrimaryBand.f2, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth), //f2 + cs_InterFreqCarrierFreq (v_Frequency_PrimaryBand.f3, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth), //f3 + cs_InterFreqCarrierFreq (v_Frequency_SecondaryBand.f1, v_SecondaryChannelBandwidthDependency.AllowedMeasBandwidth) //f5 + }; + } else { // f2 defined but f3 not defined for the band + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq (v_Frequency_PrimaryBand.f2, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth), //f2 + cs_InterFreqCarrierFreq (v_Frequency_SecondaryBand.f1, v_SecondaryChannelBandwidthDependency.AllowedMeasBandwidth) //f5 + }; + } + } else { // f2 and f3 not defined (e.g. band 13) + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq (v_Frequency_SecondaryBand.f1, v_SecondaryChannelBandwidthDependency.AllowedMeasBandwidth) //f5 + }; + } + } + case (eutra_Cell3, eutra_Cell23) { + // For cell frequency of f2: v_Frequency_PrimaryBand.f2 + // SIB5 contents: f1, f3, f5 (f1 in secondary band) + if (v_Frequency_PrimaryBand.f3.dl_CarrierFreq != tsc_DummyFrequency) { // f3 is defined for the Band + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq(v_Frequency_PrimaryBand.f1, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth), //f1 + cs_InterFreqCarrierFreq(v_Frequency_PrimaryBand.f3, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth), //f3 + cs_InterFreqCarrierFreq(v_Frequency_SecondaryBand.f1, v_SecondaryChannelBandwidthDependency.AllowedMeasBandwidth) //f5 + }; + } else { // f3 not defined for the band + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq(v_Frequency_PrimaryBand.f1, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth), //f1 + cs_InterFreqCarrierFreq(v_Frequency_SecondaryBand.f1, v_SecondaryChannelBandwidthDependency.AllowedMeasBandwidth) //f5 + }; + } + } + case (eutra_Cell6) { + // For cell frequency of f3: v_Frequency_PrimaryBand.f3 + // SIB5 contents: f1, f2, f5 (f1 in secondary band) + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq(v_Frequency_PrimaryBand.f1, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth), //f1 + cs_InterFreqCarrierFreq(v_Frequency_PrimaryBand.f2, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth), //f2 + cs_InterFreqCarrierFreq(v_Frequency_SecondaryBand.f1, v_SecondaryChannelBandwidthDependency.AllowedMeasBandwidth) //f5 + }; + } + case (eutra_Cell10) { + // For cell frequency of f5: v_Frequency_SecondaryBand.f1 (f5) + // SIB5 contents: f1, f2, f3 + if (v_Frequency_PrimaryBand.f2.dl_CarrierFreq != tsc_DummyFrequency) { // f2 is defined for the primaryBand + if (v_Frequency_PrimaryBand.f3.dl_CarrierFreq != tsc_DummyFrequency) { // f3 is defined for the primary + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq (v_Frequency_PrimaryBand.f1, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth), //f1 + cs_InterFreqCarrierFreq (v_Frequency_PrimaryBand.f2, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth), //f2 + cs_InterFreqCarrierFreq (v_Frequency_PrimaryBand.f3, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth) //f3 + }; + } else { // f3 not defined for the band + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq (v_Frequency_PrimaryBand.f1, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth), //f1 + cs_InterFreqCarrierFreq (v_Frequency_PrimaryBand.f2, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth) + }; + } + } else { // f2 and f3 not defined in the primary band + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq (v_Frequency_PrimaryBand.f1, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth) //f1 + }; + } + } + case else { + FatalError (__FILE__, __LINE__, "invalid value Cell Id for SIB5 intialisation"); + } + } + f_EUTRA_CellInfo_SetSIB5(p_CellId, cs_508_SystemInformationBlockType5_Def (v_InterFreqCarrierList)); + } + + /* + * @desc Assign SIB6 for p_CellId + * @param p_CellId + * @param p_SIB6 + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_SetSIB6(EUTRA_CellId_Type p_CellId, + template (value) SystemInformationBlockType6 p_SIB6) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + select (valueof(v_CellInfo.Sysinfo.Combination)) { + case (c4, c10) { // @sic R5s120377 sic@ + v_CellInfo.Sysinfo.BCCH_Info.SIs[2].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib6 := p_SIB6; + f_EUTRA_CellInfo_Set(p_CellId, v_CellInfo); + } + case (c9, c10a) { + v_CellInfo.Sysinfo.BCCH_Info.SIs[2].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[1].sib6 := p_SIB6; + f_EUTRA_CellInfo_Set(p_CellId, v_CellInfo); + } + case (c11) { // @sic R5-103363 sic@ + v_CellInfo.Sysinfo.BCCH_Info.SIs[3].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib6 := p_SIB6; + f_EUTRA_CellInfo_Set(p_CellId, v_CellInfo); + } + case else {} // Other combinations: no change needed + } + } + + /* + * @desc Assign SIB6 in all eutra cell + * @param p_SIB6 + * @status APPROVED (IMS, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_SetSIB6_FreqListFDD_AllCells(template (value) SystemInformationBlockType6 p_SIB6) runs on EUTRA_PTC + { + f_EUTRA_CellInfo_SetSIB6(eutra_Cell1, p_SIB6); + f_EUTRA_CellInfo_SetSIB6(eutra_Cell2, p_SIB6); + f_EUTRA_CellInfo_SetSIB6(eutra_Cell3, p_SIB6); + f_EUTRA_CellInfo_SetSIB6(eutra_Cell4, p_SIB6); + f_EUTRA_CellInfo_SetSIB6(eutra_Cell6, p_SIB6); + f_EUTRA_CellInfo_SetSIB6(eutra_Cell10, p_SIB6); + f_EUTRA_CellInfo_SetSIB6(eutra_Cell11, p_SIB6); + f_EUTRA_CellInfo_SetSIB6(eutra_Cell12, p_SIB6); + f_EUTRA_CellInfo_SetSIB6(eutra_Cell14, p_SIB6); + f_EUTRA_CellInfo_SetSIB6(eutra_Cell23, p_SIB6); + f_EUTRA_CellInfo_SetSIB6(eutra_Cell28, p_SIB6); + f_EUTRA_CellInfo_SetSIB6(eutra_Cell29, p_SIB6); + f_EUTRA_CellInfo_SetSIB6(eutra_Cell30, p_SIB6); + f_EUTRA_CellInfo_SetSIB6(eutra_Cell31, p_SIB6); + } + + /* + * @desc Assign SIB6 in all eutra cell + * @param p_SIB6 + * @param p_CellsOnSamePLMN + * @status APPROVED (IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_CellInfo_SetSIB6_FreqListFDD_AllNAS_Cells(template (value) SystemInformationBlockType6 p_SIB6, + EUTRA_NAS_NumOfPLMN_Type p_CellsOnSamePLMN) runs on EUTRA_PTC + { + f_EUTRA_CellInfo_SetSIB6(eutra_CellA, p_SIB6); + f_EUTRA_CellInfo_SetSIB6(eutra_CellB, p_SIB6); + f_EUTRA_CellInfo_SetSIB6(eutra_CellC, p_SIB6); + f_EUTRA_CellInfo_SetSIB6(eutra_CellD, p_SIB6); + f_EUTRA_CellInfo_SetSIB6(eutra_CellM, p_SIB6); + + if (p_CellsOnSamePLMN == LTE_CellsOnDifferentPLMN) { + f_EUTRA_CellInfo_SetSIB6(eutra_CellE, p_SIB6); + f_EUTRA_CellInfo_SetSIB6(eutra_CellG, p_SIB6); + f_EUTRA_CellInfo_SetSIB6(eutra_CellH, p_SIB6); + f_EUTRA_CellInfo_SetSIB6(eutra_CellI, p_SIB6); + f_EUTRA_CellInfo_SetSIB6(eutra_CellJ, p_SIB6); + f_EUTRA_CellInfo_SetSIB6(eutra_CellK, p_SIB6); + f_EUTRA_CellInfo_SetSIB6(eutra_CellL, p_SIB6); + } + } + + /* + * @desc Assign SIB7 for p_CellId + * @param p_CellId + * @param p_SIB7 + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_SetSIB7(EUTRA_CellId_Type p_CellId, + template (value) SystemInformationBlockType7 p_SIB7) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + select (valueof(v_CellInfo.Sysinfo.Combination)) { + case (c5) { + v_CellInfo.Sysinfo.BCCH_Info.SIs[2].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib7 := p_SIB7; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + case (c10, c10a, c12) { // @sic R5-106551 sic@ + v_CellInfo.Sysinfo.BCCH_Info.SIs[3].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib7 := p_SIB7; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + case else {} // Other combinations: no change needed + } + } + + /* + * @desc Assign SIB8 for p_CellId + * @param p_CellId + * @param p_SIB8 + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_SetSIB8(EUTRA_CellId_Type p_CellId, + template (value) SystemInformationBlockType8 p_SIB8) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[2].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib8 := p_SIB8; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Assign SIB7 in all eutra cell + * @param p_SIB7 + * @status APPROVED (IMS, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_SetSIB7_FreqListFDD_AllCells(template (value) SystemInformationBlockType7 p_SIB7) runs on EUTRA_PTC + { + f_EUTRA_CellInfo_SetSIB7(eutra_Cell1, p_SIB7); + f_EUTRA_CellInfo_SetSIB7(eutra_Cell2, p_SIB7); + f_EUTRA_CellInfo_SetSIB7(eutra_Cell3, p_SIB7); + f_EUTRA_CellInfo_SetSIB7(eutra_Cell4, p_SIB7); + f_EUTRA_CellInfo_SetSIB7(eutra_Cell6, p_SIB7); + f_EUTRA_CellInfo_SetSIB7(eutra_Cell10, p_SIB7); + f_EUTRA_CellInfo_SetSIB7(eutra_Cell11, p_SIB7); + f_EUTRA_CellInfo_SetSIB7(eutra_Cell12, p_SIB7); + f_EUTRA_CellInfo_SetSIB7(eutra_Cell14, p_SIB7); + f_EUTRA_CellInfo_SetSIB7(eutra_Cell23, p_SIB7); + f_EUTRA_CellInfo_SetSIB7(eutra_Cell28, p_SIB7); + f_EUTRA_CellInfo_SetSIB7(eutra_Cell29, p_SIB7); + f_EUTRA_CellInfo_SetSIB7(eutra_Cell30, p_SIB7); + f_EUTRA_CellInfo_SetSIB7(eutra_Cell31, p_SIB7); + } + + /* + * @desc Assign SIB7 in all eutra cell + * @param p_SIB7 + * @param p_CellsOnSamePLMN + * @status APPROVED (IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_CellInfo_SetSIB7_FreqListFDD_AllNAS_Cells(template (value) SystemInformationBlockType7 p_SIB7, + EUTRA_NAS_NumOfPLMN_Type p_CellsOnSamePLMN) runs on EUTRA_PTC + { + f_EUTRA_CellInfo_SetSIB7(eutra_CellA, p_SIB7); + f_EUTRA_CellInfo_SetSIB7(eutra_CellB, p_SIB7); + f_EUTRA_CellInfo_SetSIB7(eutra_CellC, p_SIB7); + f_EUTRA_CellInfo_SetSIB7(eutra_CellD, p_SIB7); + f_EUTRA_CellInfo_SetSIB7(eutra_CellM, p_SIB7); + + if (p_CellsOnSamePLMN == LTE_CellsOnDifferentPLMN) { + f_EUTRA_CellInfo_SetSIB7(eutra_CellE, p_SIB7); + f_EUTRA_CellInfo_SetSIB7(eutra_CellG, p_SIB7); + f_EUTRA_CellInfo_SetSIB7(eutra_CellH, p_SIB7); + f_EUTRA_CellInfo_SetSIB7(eutra_CellI, p_SIB7); + f_EUTRA_CellInfo_SetSIB7(eutra_CellJ, p_SIB7); + f_EUTRA_CellInfo_SetSIB7(eutra_CellK, p_SIB7); + f_EUTRA_CellInfo_SetSIB7(eutra_CellL, p_SIB7); + } + } + + /* + * @desc Assign SIB8 in all eutra cell + * @param p_SIB8 + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_SetSIB8_FreqListFDD_AllCells(template (value) SystemInformationBlockType8 p_SIB8) runs on EUTRA_PTC + { + f_EUTRA_CellInfo_SetSIB8(eutra_Cell1, p_SIB8); + f_EUTRA_CellInfo_SetSIB8(eutra_Cell2, p_SIB8); + f_EUTRA_CellInfo_SetSIB8(eutra_Cell3, p_SIB8); + f_EUTRA_CellInfo_SetSIB8(eutra_Cell4, p_SIB8); + f_EUTRA_CellInfo_SetSIB8(eutra_Cell6, p_SIB8); + f_EUTRA_CellInfo_SetSIB8(eutra_Cell10, p_SIB8); + f_EUTRA_CellInfo_SetSIB8(eutra_Cell11, p_SIB8); + f_EUTRA_CellInfo_SetSIB8(eutra_Cell12, p_SIB8); + f_EUTRA_CellInfo_SetSIB8(eutra_Cell14, p_SIB8); + f_EUTRA_CellInfo_SetSIB8(eutra_Cell23, p_SIB8); + f_EUTRA_CellInfo_SetSIB8(eutra_Cell28, p_SIB8); + f_EUTRA_CellInfo_SetSIB8(eutra_Cell29, p_SIB8); + f_EUTRA_CellInfo_SetSIB8(eutra_Cell30, p_SIB8); + f_EUTRA_CellInfo_SetSIB8(eutra_Cell31, p_SIB8); + } + + /* + * @desc Assign the parameterised csg-Indication value in SIB1 of the cell + * @param p_CellId + * @param p_Csg_Indication + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_EUTRA_CellInfo_SetSysInfo_Csg_Ind(EUTRA_CellId_Type p_CellId, + boolean p_Csg_Indication) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.cellAccessRelatedInfo.csg_Indication := p_Csg_Indication; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Assign the parameterised csg-Identity value in SIB1 of the cell + * @param p_CellId + * @param p_Csg_Identity + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_EUTRA_CellInfo_SetSysInfo_Csg_Id(EUTRA_CellId_Type p_CellId, + CSG_Identity p_Csg_Identity) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.cellAccessRelatedInfo.csg_Identity := p_Csg_Identity; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Assign the parameterised s_NonIntraSearch_v920 value in SIB3 of the cell + * @param p_CellId + * @param p_S_NonIntraSearch_v920 + * @status APPROVED (LTE) + */ + function f_EUTRA_CellInfo_SetSysInfo_S_NonIntraSearch_v920(EUTRA_CellId_Type p_CellId, + template (omit) S_NonIntraSearch_v920_Type p_S_NonIntraSearch_v920) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[1].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib3.s_NonIntraSearch_v920 := p_S_NonIntraSearch_v920; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + }; + + /* + * @desc Assign the parameterised s_IntraSearch_v920 value in SIB3 of the cell + * @param p_CellId + * @param p_S_IntraSearch_v920 + * @status APPROVED (LTE) + */ + function f_EUTRA_CellInfo_SetSysInfo_S_IntraSearch_v920(EUTRA_CellId_Type p_CellId, + template (omit) S_IntraSearch_v920_Type p_S_IntraSearch_v920) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[1].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib3.s_IntraSearch_v920 := p_S_IntraSearch_v920; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + }; + + /* + * @desc Assign the CellInformation of the parameterized cell to the highest bandwidth (UL and DL) according to the parameterised band + * @param p_CellId + * @status APPROVED (LTE) + */ + function f_EUTRA_CellInfo_SetHighestBandwidth (EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { + var FreqBandIndicator v_FrequencyBand := f_EUTRA_CellInfo_GetBand(p_CellId); + var Dl_Bandwidth_Type v_Dl_Bandwidth := f_EUTRA_GetHighestDL_Bandwidth(v_FrequencyBand); + var Ul_Bandwidth_Type v_Ul_Bandwidth := f_EUTRA_GetHighestUL_Bandwidth(v_FrequencyBand); + var Combination_Type v_Combination := f_EUTRA_CellInfo_GetCombination(p_CellId); + + f_EUTRA_CellInfo_Set(p_CellId, + f_EUTRA_CellInfo_Init( p_CellId, + v_FrequencyBand, + v_Combination, + v_Dl_Bandwidth, + v_Ul_Bandwidth)); + } + + /* + * @desc Assign the CellInformation of the parameterized cell to the default 2TX parameters + * @param p_CellId + * @status APPROVED (LTE) + */ + function f_EUTRA_CellInfo_SetMIMO_2TX (EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + /* Update the antenna information in the cell Array */ + v_CellInfo.AntennaInfo.SS_AntennaInfoCommon := cs_AntennaInfoCommon_2Port; + v_CellInfo.AntennaInfo.AntennaInfoCommon := cs_AntennaInfoCommon_2Port; + v_CellInfo.AntennaInfo.SS_AntennaInfoDedicated := cs_AntennaInfoDedicated_2TX; + v_CellInfo.AntennaInfo.AntennaInfoDedicated := cs_PhysicalConfigDedicated_AntennaInfo_2TX; + + /* Update p_B parameter in the cell array */ + v_CellInfo.PhysicalParameters.PDSCH_p_b := tsc_P_b_2Tx; + + /* Modify p_b in SIB2 */ + v_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon.pdsch_ConfigCommon.p_b := tsc_P_b_2Tx; + + f_EUTRA_CellInfo_Set(p_CellId, v_CellInfo); + } + + //---------------------------------------------------------------------------- + // Access to Power Parameters: + + /* + * @desc Assign the parameterised Attenuation in the EUTRA_CellInfo + * @param p_CellId + * @param p_ReferenceCellPower + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_SetCellPower(EUTRA_CellId_Type p_CellId, + template (value) ReferenceCellPower_Type p_ReferenceCellPower) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.ReferencePower := p_ReferenceCellPower; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Return the Cell power parameters stored in the EUTRA_CellInfo + * @param p_CellId + * @return ReferenceCellPower_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_GetCellPower(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return ReferenceCellPower_Type + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + return v_CellInfo.ReferencePower; + }; + + /* + * @desc Return the NoUL_Frequency parameter stored in the EUTRA_CellInfo + * @param p_CellId + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellInfo_GetNoUL_Frequency(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return boolean + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + return v_CellInfo.NoUL_Frequency; + }; + + /* + * @desc set max. reference power for a cell before the cell is created; the attenuation is "Off" in this case + * @param p_CellId + * @param p_MaxReferencePower + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_CellInfo_InitMaxReferencePower(EUTRA_CellId_Type p_CellId, + AbsoluteCellPower_Type p_MaxReferencePower) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + v_CellInfo.ReferencePower.MaxReferencePower := p_MaxReferencePower; + v_CellInfo.ReferencePower.Attenuation.Off := true; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc set cell priority in sib8 + * @param p_CellId + * @param p_CellReselectionPriority + * @status APPROVED (LTE_IRAT) + */ + function f_EUTRA_CellInfo_SetCellPrioritySIB8_HRPD(EUTRA_CellId_Type p_CellId, + CellReselectionPriority p_CellReselectionPriority) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[2].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib8.parametersHRPD.cellReselectionParametersHRPD.bandClassList[0].cellReselectionPriority := p_CellReselectionPriority; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc To set the Priority of the RTT1X cell into SIB8 + * @param p_CellId + * @param p_CellReselectionPriority + * @status APPROVED (LTE_IRAT) + */ + function f_EUTRA_CellInfo_SetCellPrioritySIB8_RTT1X (EUTRA_CellId_Type p_CellId, + CellReselectionPriority p_CellReselectionPriority) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[2].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib8.parameters1XRTT.cellReselectionParameters1XRTT.bandClassList[0].cellReselectionPriority := p_CellReselectionPriority; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* Not currently used + function f_EUTRA_CellInfo_SetThreshXHigh_HRPD (EUTRA_CellId_Type p_CellId, + ThreshX_High_Type p_ThreshX_High) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[2].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib8.parametersHRPD.cellReselectionParametersHRPD.bandClassList[0].threshX_High := p_ThreshX_High; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + function f_EUTRA_CellInfo_SetThreshXLow_HRPD (EUTRA_CellId_Type p_CellId, + ThreshX_Low_Type p_ThreshX_Low) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[2].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib8.parametersHRPD.cellReselectionParametersHRPD.bandClassList[0].threshX_Low := p_ThreshX_Low; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } +*/ + + /* + * @desc Set T_ReselectionCDMA in SIB8 for HRPD + * @param p_CellId + * @param p_T_Reselection + * @status APPROVED (LTE_IRAT) + */ + function f_EUTRA_CellInfo_SetT_ReselectionCDMA_SIB8_HRPD(EUTRA_CellId_Type p_CellId, + T_Reselection p_T_Reselection) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[2].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib8.parametersHRPD.cellReselectionParametersHRPD.t_ReselectionCDMA2000 := p_T_Reselection; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Set T_Reselection in SystemInformationBlockType8 + * @param p_CellId + * @param p_T_Reselection + * @status APPROVED (LTE_IRAT) + */ + function f_EUTRA_CellInfo_SetT_ReselectionCDMA_SIB8_RTT1X(EUTRA_CellId_Type p_CellId, + T_Reselection p_T_Reselection) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[2].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib8.parameters1XRTT.cellReselectionParameters1XRTT.t_ReselectionCDMA2000 := p_T_Reselection; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Set preRegistrationInfoHRPD in SystemInformationBlockType8 + * @param p_CellId + * @param p_PreRegistrationInfoHRPD + * @status + */ + function f_EUTRA_CellInfo_SetPreRegistrationInfo_SIB8_HRPD(EUTRA_CellId_Type p_CellId, + template (value) PreRegistrationInfoHRPD p_PreRegistrationInfoHRPD) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[2].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib8.parametersHRPD.preRegistrationInfoHRPD := p_PreRegistrationInfoHRPD; + f_EUTRA_CellInfo_Set(p_CellId, v_CellInfo); + } + + /* + * @desc Set csfb_RegistrationParam1XRTT in SystemInformationBlockType8 + * @param p_CellId + * @param p_CSFB_RegistrationParam1XRTT + * @status APPROVED (LTE_IRAT) + * @status + */ + function f_EUTRA_CellInfo_SetCSFB_RegistrationParam_SIB8_RTT1X(EUTRA_CellId_Type p_CellId, + template (value) CSFB_RegistrationParam1XRTT p_CSFB_RegistrationParam1XRTT) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[2].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib8.parameters1XRTT.csfb_RegistrationParam1XRTT := p_CSFB_RegistrationParam1XRTT; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc to initialise SIB T-Reselection + * @param p_CellId + * @param p_CellReselectionPriority + * @status + */ + function f_EUTRA_CellInfo_Set_T_Reselection_HRPD(EUTRA_CellId_Type p_CellId, + T_ReselectionCDMA2000_Type p_T_ReselectionCDMA2000) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[2].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib8.parametersHRPD.cellReselectionParametersHRPD.t_ReselectionCDMA2000 := p_T_ReselectionCDMA2000; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc to initialise Bandclass + * @param p_CellId + * @param p_BandclassCDMA2000 + * @status + */ + function f_EUTRA_CellInfo_Set_Bandclass_HRPD(EUTRA_CellId_Type p_CellId, + BandclassCDMA2000 p_BandclassCDMA2000) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[2].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib8.parametersHRPD.cellReselectionParametersHRPD.bandClassList[0].bandClass := p_BandclassCDMA2000; + v_CellInfo.Sysinfo.BCCH_Info.SIs[2].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib8.parametersHRPD.cellReselectionParametersHRPD.neighCellList[0].bandClass := p_BandclassCDMA2000; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* @desc To initialise SIB 8 as per 36.508 table 4.5.2B.2-2 + * @param p_CellId + * @param p_CDMA2000SysInfo + * @status + */ + function f_InitialiseSib8_HRPD_PreRegistration(EUTRA_CellId_Type p_CellId, + IRAT_CoOrd_SysInfo_Type p_CDMA2000SysInfo)runs on EUTRA_PTC + { + f_EUTRA_CellInfo_SetPreRegistrationInfo_SIB8_HRPD(p_CellId,cs_508_PreRegistrationInfoHRPD( p_CDMA2000SysInfo.Cdma2000[0].ColorCode_HRPD)); + f_EUTRA_CellInfo_Set_Bandclass_HRPD(p_CellId, f_ConvertFromIntegerToBandClass(p_CDMA2000SysInfo.Cdma2000[0].BandClass)); + f_EUTRA_CellInfo_SetCellPrioritySIB8_HRPD(p_CellId, 3); + //the specific values of threshX-High =30, threshX-L0w =32 are same as default + f_EUTRA_CellInfo_Set_T_Reselection_HRPD(p_CellId,3); + // Set T_Reselection_HRPD =3 + } + + /* @desc to initialise Bandclass + * @param p_CellId + * @param p_BandclassCDMA2000 + * @status APPROVED (LTE_IRAT) + */ + function f_EUTRA_CellInfo_Set_Bandclass_1XRTT(EUTRA_CellId_Type p_CellId, + BandclassCDMA2000 p_BandclassCDMA2000) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[2].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib8.parameters1XRTT.cellReselectionParameters1XRTT.bandClassList[0].bandClass := p_BandclassCDMA2000; + v_CellInfo.Sysinfo.BCCH_Info.SIs[2].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib8.parameters1XRTT.cellReselectionParameters1XRTT.neighCellList[0].bandClass := p_BandclassCDMA2000; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* @desc to initialise Power Down Reg + * @param p_CellId + * @param p_PowerDownReg + * @status APPROVED (LTE_IRAT) + */ + function f_EUTRA_CellInfo_Set_PowerDownReg_1XRTT(EUTRA_CellId_Type p_CellId, + PowerDownReg_Type p_PowerDownReg) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[2].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib8.csfb_RegistrationParam1XRTT_v920.powerDownReg_r9 := p_PowerDownReg; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* @desc To initialise SIB 8 as per 36.508 table 4.5.2C.2-2 + * @param p_CellId + * @param p_CDMA2000SysInfo + * @param p_ZoneTimer + * @status APPROVED (LTE_IRAT) + */ + function f_InitialiseSib8_1XRTT_PreRegistration(EUTRA_CellId_Type p_CellId, + IRAT_CoOrd_SysInfo_Type p_CDMA2000SysInfo, + B3_Type p_ZoneTimer)runs on EUTRA_PTC + { + f_EUTRA_CellInfo_SetCSFB_RegistrationParam_SIB8_RTT1X (p_CellId, cs_508_CSFB_RegistrationParam1XRTT(p_CDMA2000SysInfo.Cdma2000[0].SID, + p_CDMA2000SysInfo.Cdma2000[0].NID, + p_CDMA2000SysInfo.Cdma2000[0].RegZone_1XRTT, + p_ZoneTimer)); + f_EUTRA_CellInfo_Set_Bandclass_1XRTT(p_CellId, f_ConvertFromIntegerToBandClass(p_CDMA2000SysInfo.Cdma2000[0].BandClass)); + f_EUTRA_CellInfo_SetCellPrioritySIB8_RTT1X(p_CellId, 3); + //the specific values of threshX-High =30, threshX-L0w =32 are same as default + f_EUTRA_CellInfo_Set_PowerDownReg_1XRTT(p_CellId,true_); //@sic R5s130105 sic@ + // Set poer Don reg = true + } + + //---------------------------------------------------------------------------- + // Access to Security Parameters: + + /* + * @desc Return security parameters + * @return EUTRA_SecurityParams_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_Security_Get() runs on EUTRA_PTC return EUTRA_SecurityParams_Type + { + return vc_EUTRA_Global.Security; + } + + /* + * @desc set security parameters + * @param p_Auth_Params + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_Security_Set(EUTRA_SecurityParams_Type p_Auth_Params) runs on EUTRA_PTC + { + vc_EUTRA_Global.Security := p_Auth_Params; + } + + /* + * @desc Access to the Security Parameter KSIasme + * @return NAS_KsiValue + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_SecurityKSIasme_Get() runs on EUTRA_PTC return NAS_KsiValue + { + return vc_EUTRA_Global.Security.KSIasme; + } + + /* + * @desc Access to the Security Parameter KSIsgsn + * @return NAS_KsiValue + * @status APPROVED (LTE_IRAT) + */ + function f_EUTRA_SecurityKSIsgsn_Get() runs on EUTRA_PTC return NAS_KsiValue + { + return vc_EUTRA_Global.Security.KSIsgsn; + } + + //---------------------------------------------------------------------------- + // Access to Mobile info Parameters: + //---------------------------------------------------------------------------- + /* + * @desc Set UE TMSI in the MobileInfo + * @param p_NAS_Tmsi + * @status + */ + function f_EUTRA_MobileInfo_SetTmsi(NAS_Tmsi p_NAS_Tmsi) runs on EUTRA_PTC + { + vc_EUTRA_Global.MobileInfo.Tmsi := p_NAS_Tmsi; + } + + /* + * @desc Set UE P-TMSI in the MobileInfo + * @param p_NAS_P_Tmsi + * @status + */ + function f_EUTRA_MobileInfo_SetP_Tmsi(NAS_Tmsi p_NAS_P_Tmsi) runs on EUTRA_PTC + { + vc_EUTRA_Global.MobileInfo.P_Tmsi := p_NAS_P_Tmsi; + } + + /* + * @desc Set UECapability in the MobileInfo variable + * @param p_Cap + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_MobileInfo_SetUECapability(UE_EUTRA_Capability p_Cap) runs on EUTRA_PTC + { + vc_EUTRA_Global.MobileInfo.EUTRA_Capability := p_Cap; + } + + /* + * @desc Set LocalEmergencyNumberList in the MobileInfo variable + * @param p_EmergencyNumberList + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_MobileInfo_SetLocalEmergencyNumberList(EmergencyNumList p_EmergencyNumberList) runs on EUTRA_PTC + { + vc_EUTRA_Global.MobileInfo.LocalEmergencyNumberList := p_EmergencyNumberList; + } + + /* + * @desc Set PDN Type as assigned to the UE + * @param p_PdnType + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_MobileInfo_SetAssignedPdnType(B3_Type p_PdnType) runs on EUTRA_PTC + { + vc_EUTRA_Global.MobileInfo.AssignedPdnType := p_PdnType; + } + + /* + * @desc Get UE T-MSI + * @return NAS_Tmsi + * @status + */ + function f_EUTRA_MobileInfo_GetTmsi() runs on EUTRA_PTC return NAS_Tmsi + { + return vc_EUTRA_Global.MobileInfo.Tmsi; + } + + /* + * @desc Get UE P-TMSI + * @return NAS_P_Tmsi + * @status + */ + function f_EUTRA_MobileInfo_GetP_Tmsi() runs on EUTRA_PTC return NAS_P_Tmsi + { + return vc_EUTRA_Global.MobileInfo.P_Tmsi; + } + + /* + * @desc Get UE E-UTRA category + * @return integer + */ + function f_EUTRA_MobileInfo_GetUECapability_UECategory() runs on EUTRA_PTC return integer + { + return vc_EUTRA_Global.MobileInfo.EUTRA_Capability.ue_Category; + } + + /* + * @desc Get UE E-UTRA category + * @return integer + * @status APPROVED (LTE) + */ + function f_EUTRA_MobileInfo_GetUECapability_UECategoryExtn() runs on EUTRA_PTC return integer + { /* @sic R5-142669, R5-142681, R5-142690 sic@ */ + var integer v_UE_Cat := vc_EUTRA_Global.MobileInfo.EUTRA_Capability.ue_Category; + + if (isvalue(vc_EUTRA_Global.MobileInfo.EUTRA_Capability.nonCriticalExtension.nonCriticalExtension.nonCriticalExtension.ue_Category_v1020)) { + v_UE_Cat := vc_EUTRA_Global.MobileInfo.EUTRA_Capability.nonCriticalExtension.nonCriticalExtension.nonCriticalExtension.ue_Category_v1020; + } + if (isvalue(vc_EUTRA_Global.MobileInfo.EUTRA_Capability.nonCriticalExtension.nonCriticalExtension.nonCriticalExtension.nonCriticalExtension.nonCriticalExtension.nonCriticalExtension.nonCriticalExtension.ue_Category_v1170)) { + v_UE_Cat := vc_EUTRA_Global.MobileInfo.EUTRA_Capability.nonCriticalExtension.nonCriticalExtension.nonCriticalExtension.nonCriticalExtension.nonCriticalExtension.nonCriticalExtension.nonCriticalExtension.ue_Category_v1170; + } + return v_UE_Cat; + } + + /* + * @desc Get UE E-UTRA release + * @return AccessStratumRelease + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_MobileInfo_GetUECapability_AccessStratumRelease() runs on EUTRA_PTC return AccessStratumRelease + { + return vc_EUTRA_Global.MobileInfo.EUTRA_Capability.accessStratumRelease; + } + + + /* + * @desc Get UECapability + * @return UE_EUTRA_Capability + * @status APPROVED (LTE) + */ + function f_EUTRA_MobileInfo_GetUECapability() runs on EUTRA_PTC return UE_EUTRA_Capability + { + return vc_EUTRA_Global.MobileInfo.EUTRA_Capability; + } + + /* + * @desc Get UE LocalEmergencyNumberList in the MobileInfo variable + * @return EmergencyNumList + * @status APPROVED (LTE) + * @status + */ + function f_EUTRA_MobileInfo_GetLocalEmergencyNumberList() runs on EUTRA_PTC return EmergencyNumList + { + return vc_EUTRA_Global.MobileInfo.LocalEmergencyNumberList; + } + + + /* + * @desc Get PDN Type as assigned to the UE + * @return B3_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_MobileInfo_GetAssignedPdnType() runs on EUTRA_PTC return B3_Type + { + return vc_EUTRA_Global.MobileInfo.AssignedPdnType; + } + + + //---------------------------------------------------------------------------- + // Access to Cell Timing Parameters: + + /* @desc to set the value of Tcell + * @param p_CellId + * @param p_Tcell + * @status APPROVED (LTE_A, POS) + */ + function f_EUTRA_CellInfo_Set_Tcell(EUTRA_CellId_Type p_CellId, + integer p_Tcell) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.CellTimingInfo.Tcell := p_Tcell; + f_EUTRA_CellInfo_Set(p_CellId, v_CellInfo); + } + + /* @desc to set the value of SFNoffset + * @param p_CellId + * @param p_SfnOffset + * @status APPROVED (LTE_A, POS) + */ + function f_EUTRA_CellInfo_Set_SfnOffset(EUTRA_CellId_Type p_CellId, + integer p_SfnOffset) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.CellTimingInfo.SfnOffset := p_SfnOffset; + f_EUTRA_CellInfo_Set(p_CellId, v_CellInfo); + } + + //**************************************************************************** + // Initialisation + //---------------------------------------------------------------------------- + + type record NasInitParams_Local_Type { /* local type definition; @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + EUTRA_NAS_NumOfPLMN_Type CellsOnSamePLMN, + Combination_Type SysinfoCombination, //@sic R5-106627 : delete p_CellTC_Type and replace it with p_SysinfoCombination sic@ + EUTRA_NAS_CellSpecialFreq CellFreq // @sic R5-102140 sic@ + }; + + type record RrcInitParams_Local_Type { /* local type definition; @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Combination_Type SysinfoCombination + }; + + type union InitParams_Local_Type { /* local type definition; @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + NasInitParams_Local_Type Nas, + RrcInitParams_Local_Type NonNas + }; + + /* + * @desc Initialise and return coordination information for the given cell to be transfered to the other RAT + * @param p_CellId + * @return template (value) CoOrd_EUTRASysInfo_Type + * @status APPROVED (IMS, LTE, LTE_A, LTE_IRAT, POS) + */ + function fl_EUTRA_CoOrdSysInfo(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return template (value) CoOrd_EUTRASysInfo_Type + { + var integer v_Arfcn := f_EUTRA_CellInfo_GetEARFCN_DL(p_CellId); + var integer v_DLBW := f_ConvertDL_BandwidthToInteger(f_EUTRA_CellInfo_GetDL_ChBandwidth(p_CellId)); + + return cs_CoOrdEUTRASysInfo(v_Arfcn, v_DLBW); + } + + //---------------------------------------------------------------------------- + /* + * @desc Return the defined frequencies f1 to f4 depending on the band + * function to be used only before coordination with UTRA PTC + * @return template (value) IRAT_CoOrd_SysInfo_Type + * @status APPROVED (IMS, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_IRAT_ListOfFrequencies() runs on EUTRA_PTC return template (value) IRAT_CoOrd_SysInfo_Type + { /* @sic R5-096440 R5-104169, R5s100871, R5-110788 sic@ */ + var template (value) CoOrd_EUTRASysInfo_List_Type v_CoOrd_EUTRASysInfo_List; + + v_CoOrd_EUTRASysInfo_List[0] := fl_EUTRA_CoOrdSysInfo(eutra_Cell1); // f1 + + if (f_EUTRA_CellInfo_GetEARFCN_DL(eutra_Cell3) != tsc_DummyFrequency) { // f2 is applicable for the band @sic R5s120129 sic@ + v_CoOrd_EUTRASysInfo_List[1] := fl_EUTRA_CoOrdSysInfo(eutra_Cell3); // f2 + + if (f_EUTRA_CellInfo_GetEARFCN_DL(eutra_Cell6) != tsc_DummyFrequency) { // f3 is applicable for the band + v_CoOrd_EUTRASysInfo_List[2] := fl_EUTRA_CoOrdSysInfo(eutra_Cell6); // f3 + + if (f_EUTRA_CellInfo_GetEARFCN_DL(eutra_Cell14) != tsc_DummyFrequency) { // f4 is applicable for the band + v_CoOrd_EUTRASysInfo_List[3] := fl_EUTRA_CoOrdSysInfo(eutra_Cell14); // f4 + } + } + } + return cs_CoOrdEUTRA_SysInfo(v_CoOrd_EUTRASysInfo_List); + } + + //---------------------------------------------------------------------------- + /* + * @desc Return the defined frequencies f1 to f4 depending on the band + * function to be used only before coordination with UTRA PTC + * @return template (value) IRAT_CoOrd_SysInfo_Type + * @status APPROVED (IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_IRAT_NAS_ListOfFrequencies() runs on EUTRA_PTC return template (value) IRAT_CoOrd_SysInfo_Type + { + var Frequency_fList_Type v_Frequency := f_EUTRA_InitFrequency_f1Tof4(f_EUTRA_CellInfo_GetBand(eutra_CellA), + f_EUTRA_CellInfo_GetDL_ChBandwidth(eutra_CellA), + f_EUTRA_CellInfo_GetUL_ChBandwidth(eutra_CellA)); + var integer v_DL_Bandwidth := f_ConvertDL_BandwidthToInteger(f_EUTRA_CellInfo_GetDL_ChBandwidth(eutra_CellA)); + var template (value) CoOrd_EUTRASysInfo_List_Type v_CoOrd_EUTRASysInfo_List; + + v_CoOrd_EUTRASysInfo_List[0] := cs_CoOrdEUTRASysInfo(v_Frequency.f1.dl_CarrierFreq, v_DL_Bandwidth); // f1 + + if (v_Frequency.f2.dl_CarrierFreq != tsc_DummyFrequency) { // f2 defined for the band + v_CoOrd_EUTRASysInfo_List[1] := cs_CoOrdEUTRASysInfo(v_Frequency.f2.dl_CarrierFreq, v_DL_Bandwidth); // f2 + + if (v_Frequency.f3.dl_CarrierFreq != tsc_DummyFrequency) { // f3 defined for the band + v_CoOrd_EUTRASysInfo_List[2] := cs_CoOrdEUTRASysInfo(v_Frequency.f3.dl_CarrierFreq, v_DL_Bandwidth); // f3 + + if (v_Frequency.f4.dl_CarrierFreq != tsc_DummyFrequency) { // f4 defined for the band + v_CoOrd_EUTRASysInfo_List[3] := cs_CoOrdEUTRASysInfo(v_Frequency.f4.dl_CarrierFreq, v_DL_Bandwidth); // f4 + } + } + } + + return cs_CoOrdEUTRA_SysInfo(v_CoOrd_EUTRASysInfo_List); + } + + /* + * @desc Reinitialise SIBs for I-RAT combinations + * @param p_SysinfoCombination + * @status APPROVED (IMS, LTE, LTE_A, LTE_IRAT, POS) + */ + function fl_EUTRA_IRAT_Init(Combination_Type p_SysinfoCombination) runs on EUTRA_PTC + { /* @sic R5-095514 sic@ */ + var IRAT_CoOrd_SysInfo_List_Type v_SysInfo_List; + var IRAT_CoOrd_SysInfo_Type v_SysInfoOtherRAT; + var template (value) IRAT_CoOrd_SysInfo_Type v_SysInfoEUTRA := f_IRAT_ListOfFrequencies(); // f1/f2/f3/f4 or f1/f2/f3 or f1/f2 depending on the band + + select (p_SysinfoCombination) { + case (c4, c9, c11) { // EUTRA-UTRA SIB6 @sic R5-103363 sic@ + // Assign new SIB6 in cellArray for all cells + v_SysInfoOtherRAT := f_IRAT_InitialCoOrd(UTRAN, v_SysInfoEUTRA); // Coordinate with UTRA PTC: send EUTRA frequencies and return UTRA frequencies + f_EUTRA_CellInfo_SetSIB6_FreqListFDD_AllCells(f_EUTRA_IRAT_InitSIB6(v_SysInfoOtherRAT)); // Assign SIB6 with new UTRAN FDD or TDD frequency list + } + case (c5, c12) { // EUTRA-GERAN SIB7 @sic R5-106551 sic@ + // Assign new SIB7 in cellArray for all cells + v_SysInfoOtherRAT := f_IRAT_InitialCoOrd(GERAN, v_SysInfoEUTRA); // Coordinate with GERAN PTC: send EUTRA frequencies and return GERAN frequencies + f_EUTRA_CellInfo_SetSIB7_FreqListFDD_AllCells(f_EUTRA_IRAT_InitSIB7(v_SysInfoOtherRAT)); // Assign SIB7 with new GERAN frequency list + } + case (c6) { // EUTRA-CDMA2000 + v_SysInfoOtherRAT := f_IRAT_InitialCoOrd(CDMA2000, cs_CoOrdC2K_NoParams); // Coordinate with CDMA2000 PTC: send EUTRA frequencies and return CDMA parameters + // (C2K PTC does not need to receive any information from the LTE PTC) + f_EUTRA_CellInfo_SetSIB8_FreqListFDD_AllCells(f_EUTRA_IRAT_InitSIB8(v_SysInfoOtherRAT)); // Assign new SIB8 in cellArray for all cells + } + case (c10, c10a) { // EUTRA-UTRAN-GERAN SIB6 SIB7 + v_SysInfo_List := f_IRAT_InitialCoOrd_2Ports(UTRAN, GERAN, v_SysInfoEUTRA); // Coordinate with UTRAN and GERAN PTCs: send EUTRA frequencies and return UTRAN and GERAN info + f_EUTRA_CellInfo_SetSIB6_FreqListFDD_AllCells(f_EUTRA_IRAT_InitSIB6(v_SysInfo_List[0])); // Assign SIB6 with new UTRAN FDD or TDD frequency list + f_EUTRA_CellInfo_SetSIB7_FreqListFDD_AllCells(f_EUTRA_IRAT_InitSIB7(v_SysInfo_List[1])); // Assign SIB7 with new GERAN frequency list @sic r5s120315 sic@ + } + case else {} // Other combinations: no change needed + } + }; + + /* + * @desc Reinitialise SIBs for I-RAT combinations + * @param p_SysinfoCombination + * @param p_CellsOnSamePLMN + * @status APPROVED (IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_EUTRA_NAS_IRAT_Init(Combination_Type p_SysinfoCombination, + EUTRA_NAS_NumOfPLMN_Type p_CellsOnSamePLMN) runs on EUTRA_PTC + { /* @sic R5-095514 sic@ */ + var IRAT_CoOrd_SysInfo_List_Type v_SysInfo_List; + var IRAT_CoOrd_SysInfo_Type v_SysInfoOtherRAT; + var template (value) IRAT_CoOrd_SysInfo_Type v_SysInfoEUTRA := fl_IRAT_NAS_ListOfFrequencies(); // f1/f2/f3/f4 or f1/f2/f3 or f1/f2 depending on the band + + select (p_SysinfoCombination) { + case (c4, c9, c11) { // EUTRA-UTRA SIB6 @sic R5-103363 sic@ + // Assign new SIB6 in cellArray for all cells + v_SysInfoOtherRAT := f_IRAT_InitialCoOrd(UTRAN, v_SysInfoEUTRA); // Coordinate with UTRA PTC: send EUTRA frequencies and return UTRA frequencies + f_EUTRA_CellInfo_SetSIB6_FreqListFDD_AllNAS_Cells(f_EUTRA_IRAT_InitSIB6(v_SysInfoOtherRAT), p_CellsOnSamePLMN); + } + case (c5, c12) { // EUTRA-GERAN SIB7 @sic r5-106551 sic@ + // Assign new SIB7 in cellArray for all cells + v_SysInfoOtherRAT := f_IRAT_InitialCoOrd(GERAN, v_SysInfoEUTRA); // Coordinate with GERAN PTC: send EUTRA frequencies and return GERAN frequencies + f_EUTRA_CellInfo_SetSIB7_FreqListFDD_AllNAS_Cells(f_EUTRA_IRAT_InitSIB7(v_SysInfoOtherRAT), p_CellsOnSamePLMN); + } + case (c6) { // EUTRA-CDMA2000 + // Assign new SIB8 in cellArray for all cells + v_SysInfoOtherRAT := f_IRAT_InitialCoOrd(CDMA2000, cs_CoOrdC2K_NoParams); // Coordinate with CDMA2000 PTC: send EUTRA frequencies and return CDMA parameters + // C2K PTC does not need to receive any information from the LTE PTC + f_EUTRA_CellInfo_SetSIB8_FreqListFDD_AllCells(f_EUTRA_IRAT_InitSIB8(v_SysInfoOtherRAT)); + } + case (c10, c10a) { // EUTRA-UTRAN-GERAN SIB6 SIB7 + v_SysInfo_List := f_IRAT_InitialCoOrd_2Ports(UTRAN, GERAN, v_SysInfoEUTRA); // Coordinate with UTRAN and GERAN PTCs: send EUTRA frequencies and return UTRAN and GERAN info + f_EUTRA_CellInfo_SetSIB6_FreqListFDD_AllNAS_Cells(f_EUTRA_IRAT_InitSIB6(v_SysInfo_List[0]), p_CellsOnSamePLMN); // Assign SIB6 with new UTRAN FDD or TDD frequency list + f_EUTRA_CellInfo_SetSIB7_FreqListFDD_AllNAS_Cells(f_EUTRA_IRAT_InitSIB7(v_SysInfo_List[1]), p_CellsOnSamePLMN); // Return SIB7 with new GERAN frequency list + } + case else {} // Other combinations: no change needed + } + } + + //---------------------------------------------------------------------------- + /* + * @desc local initilisation + * @param p_Params local parameters + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function fl_EUTRA_Common_Init(InitParams_Local_Type p_Params) runs on EUTRA_PTC + { + vc_EUTRA_Global.Ctrl.Default := null; + vc_EUTRA_Global.Ctrl.TestBody := false; + vc_EUTRA_Global.Ctrl.VerdictCtrl := normal; + vc_EUTRA_Global.Ctrl.HarqErrorHandling := ignore; /* @sic R5-106675 change 1 sic@ */ + vc_EUTRA_Global.Ctrl.GrantType := USE_DEF_GRANTS; /* @sic R5s140676 Change 2 sic@ */ + + // Initialise security parameters + vc_EUTRA_Global.Security := f_EUTRA_Security_Init(); + + // Initialise Cell array + if (ischosen(p_Params.NonNas)) { + vc_EUTRA_Global.CellArray := f_EUTRA_CellArray_Init(p_Params.NonNas.SysinfoCombination); + } else { + vc_EUTRA_Global.CellArray := f_EUTRA_NAS_CellArray_Init(p_Params.Nas.CellsOnSamePLMN, p_Params.Nas.SysinfoCombination, p_Params.Nas.CellFreq); + } + + //Initialise Mobile Info + vc_EUTRA_Global.MobileInfo.Tmsi := '00000000'O; + vc_EUTRA_Global.MobileInfo.P_Tmsi := '00000000'O; + vc_EUTRA_Global.MobileInfo.AssignedPdnType := '000'B; + + f_EUTRA_ActivateDefault(StandardDefault); + } + + //---------------------------------------------------------------------------- + /* + * @desc common initialisation of the EUTRA_PTC + * @param p_SysinfoCombination Combinations of system information blocks (36.508 cl. 4.4.3.1.1) + * @status APPROVED (IMS, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_Init( Combination_Type p_SysinfoCombination) runs on EUTRA_PTC + { + var InitParams_Local_Type v_Params := { NonNas := {SysinfoCombination := p_SysinfoCombination} }; + + fl_EUTRA_Common_Init(v_Params); + fl_EUTRA_IRAT_Init(p_SysinfoCombination); + } + + /* + * @desc Initialise global variable for NAS test cases + * @param p_CellsOnSamePLMN + * @param p_SysinfoCombination + * @param p_CellSpecialFreq (default value: LTE_NAS_NormalFreq) + * @status APPROVED (IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_NAS_Init(EUTRA_NAS_NumOfPLMN_Type p_CellsOnSamePLMN, + Combination_Type p_SysinfoCombination, //@sic R5-106627 : delete p_CellTC_Type and replace it with p_SysinfoCombination sic@ + EUTRA_NAS_CellSpecialFreq p_CellSpecialFreq:=LTE_NAS_NormalFreq) runs on EUTRA_PTC + { + var InitParams_Local_Type v_Params := {Nas := { CellsOnSamePLMN := p_CellsOnSamePLMN, + SysinfoCombination := p_SysinfoCombination, + CellFreq := p_CellSpecialFreq }}; // @sic R5-102140 sic@ + fl_EUTRA_Common_Init(v_Params); + fl_EUTRA_NAS_IRAT_Init(f_EUTRA_CellInfo_GetCombination (eutra_CellA), p_CellsOnSamePLMN); /* Sysinfo combination from cell A + All cells are initalised with the same combination */ + } + + /* + * @desc Change the sysinfo combination of the cell to combination 17 + * Store SIB12 in the BCCH info of the cell + * This function is used to start CMAS + * This function does not broadcast the sysinfo + * @param p_CellId + * @param p_SegmentedSiList (SIB12 segments) + * @status APPROVED (LTE) + */ + function f_EUTRA_SetSysinfoCombinationC17_CMAS(EUTRA_CellId_Type p_CellId, + template (value) SegmentedSI_List_Type p_SegmentedSiList) runs on EUTRA_PTC + { + var template (value) BcchInfo_Type v_CellBcchInfo; + var EUTRA_CellSysInfo_Type v_EUTRA_CellSysInfo := f_EUTRA_CellInfo_GetSYSINFO(p_CellId); + var template (value) BCCH_BCH_Message v_MIB := v_EUTRA_CellSysInfo.BCCH_Info.MIB; + var template (value) BCCH_DL_SCH_Message v_SI_SIB2 := v_EUTRA_CellSysInfo.BCCH_Info.SIs[0]; + var template (value) BCCH_DL_SCH_Message v_SI_SIB3 := v_EUTRA_CellSysInfo.BCCH_Info.SIs[1]; + var template (value) BCCH_DL_SCH_Message v_SIB1; + var GutiParameters_Type v_Guti_Params := f_EUTRA_CellInfo_GetGuti(p_CellId); + var EUTRA_FDD_TDD_CellInfo_Type v_FDD_TDDInfo := f_EUTRA_CellInfo_GetFDD_TDD_Info (p_CellId); + var template(omit) TDD_Config v_TDD_Config := omit; // omitted in FDD + var ChannelBandwidthDependency_Type v_ChannelBandwidthDependency := f_EUTRA_BandDependentParam(f_EUTRA_CellInfo_GetDL_ChBandwidth(p_CellId), + f_EUTRA_CellInfo_GetUL_ChBandwidth(p_CellId)); + var template (value) SI_List_Type v_SI_List; + + if (v_FDD_TDDInfo.FDD_TDD == TDD) { // initialise tdd-Configuration to be used in SIB1 + v_TDD_Config := cs_TDD_ConfigDef(v_FDD_TDDInfo.TDD_SubframeAssignment); // Value omitted in FDD + } + + v_SIB1 := cs_508_SystemInformationBlockType1_Def(cs_PlmnIdList_1Entry(v_Guti_Params.PLMN_Identity), + f_EUTRA_CellInfo_GetTAC(p_CellId), + f_EUTRA_CellInfo_GetCellIdentity (p_CellId), + f_EUTRA_CellInfo_GetBand (p_CellId), + cs_SchedulingInfo_3SI(v_ChannelBandwidthDependency.SIB3_periodicity, + {sibType3}, + v_ChannelBandwidthDependency.SIB12_periodicity, + {sibType12_v920}), + v_TDD_Config); + v_SI_List := { + v_SI_SIB2, + v_SI_SIB3 + }; + v_CellBcchInfo := cs_BCCHInfo_C1(v_MIB, v_SIB1, v_SI_List, p_SegmentedSiList); + + f_EUTRA_CellInfo_SetBCCH_Info (p_CellId, v_CellBcchInfo); + f_EUTRA_CellInfo_SetCombination (p_CellId, c17); + } + +} // End of module diff --git a/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_CellInfoFrequency.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_CellInfoFrequency.ttcn new file mode 100644 index 0000000..3c089e4 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_CellInfoFrequency.ttcn @@ -0,0 +1,2077 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-06-05 09:48:39 +0200 (Thu, 05 Jun 2014) $ +// $Rev: 11544 $ +/******************************************************************************/ +module EUTRA_CellInfoFrequency { + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from CommonDefs all; + import from EUTRA_CommonDefs all; + + type record FrequencyLowMidHigh_Type { + /* This structure is used to contain the different EARFCN as per 36.508 cl 4.3.1 + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + CarrierFreqEUTRA FrequencyLow, + CarrierFreqEUTRA FrequencyMid, + CarrierFreqEUTRA FrequencyHigh + }; + + type record Frequency_fList_Type { + /* This structure is used to contain the different frequencies f1, f2, f3, f4 as per 36.508 cl 6.2.3.1 + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + CarrierFreqEUTRA f1, + CarrierFreqEUTRA f2, + CarrierFreqEUTRA f3, + CarrierFreqEUTRA f4 + }; + + const ARFCN_ValueEUTRA tsc_DummyFrequency := 0; /* Dummy frequency value to be used when the frequency is Not Applicable for the band; + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + + template (value) Frequency_fList_Type cs_FrequencyInitDummy:= + { /* To initialise f1,f2,f3,f4 with dummy frequency values */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + f1 := {dl_CarrierFreq := tsc_DummyFrequency, ul_CarrierFreq := tsc_DummyFrequency }, + f2 := {dl_CarrierFreq := tsc_DummyFrequency, ul_CarrierFreq := tsc_DummyFrequency }, + f3 := {dl_CarrierFreq := tsc_DummyFrequency, ul_CarrierFreq := tsc_DummyFrequency }, + f4 := {dl_CarrierFreq := tsc_DummyFrequency, ul_CarrierFreq := tsc_DummyFrequency } + }; + + //------------------------------------------------------------------------------------------- + // --------------------- Initialise EUTRA frequency parameters ----------------------------- + /* + * @desc Function used to return the Highest DL bandwidth value of a band + * @param p_Band + * @return Dl_Bandwidth_Type + * @status APPROVED (LTE) + */ + function f_EUTRA_GetHighestDL_Bandwidth(FreqBandIndicator p_Band) return Dl_Bandwidth_Type + { + var Dl_Bandwidth_Type v_Dl_Bandwidth; + + select (p_Band){ + case (1,2,3,4,7,9,10,20,22,28,33,35,36,37,38,39,40,41,42,43) { //@sic R5s110709 R5-125778 sic@ + v_Dl_Bandwidth := n100; // Max ChBandwidth = 20 + } + case (5,6,8,11,12,13,14,17,18,19,24,25,27) { // @sic R5-115722 R5-121738 R5-125832 R5-126021 sic@ + v_Dl_Bandwidth := n50; // Max ChBandwidth = 10 + } + case (21,26,34) { // @sic R5-121905 sic@ + v_Dl_Bandwidth := n75; // Max ChBandwidth = 15 + } + case (31) { // @sic R5-140509 sic@ + v_Dl_Bandwidth := n25; // Max ChBandwidth = 5 + } + case else{ + FatalError (__FILE__, __LINE__, "invalid Band"); + } + }; + return v_Dl_Bandwidth; + } + + /* + * @desc Function used to return the Highest UL bandwidth value of a band + * @param p_Band + * @return Ul_Bandwidth_Type + * @status APPROVED (LTE) + */ + function f_EUTRA_GetHighestUL_Bandwidth(FreqBandIndicator p_Band) return Ul_Bandwidth_Type + { + var Ul_Bandwidth_Type v_Ul_Bandwidth; + + select (p_Band){ + case (1,2,3,4,7,9,10,20,22,28, 33,35,36,37,38,39,40,41,42,43) { //@sic R5s110709 R5-125778 sic@ + v_Ul_Bandwidth := n100; // Max ChBandwidth = 20 + } + case (5,6,8,11,12,13,14,17,18, 19, 24, 25, 27) { // @sic R5-115722 R5s120822 R5-125832 R5-126021 sic@ + v_Ul_Bandwidth := n50; // Max ChBandwidth = 10 + } + case (21,26,34) { //@sic R5-121905 sic@ + v_Ul_Bandwidth := n75; // Max ChBandwidth = 15 + } + case (31) { // @sic R5-140509 sic@ + v_Ul_Bandwidth := n25; // Max ChBandwidth = 5 + } + case else{ + FatalError (__FILE__, __LINE__, "invalid Band"); + } + }; + return v_Ul_Bandwidth; + } + + /* + * @desc Function used to define the Frequency Low/Mid/High based on the Frequency band and channel bandwidth as per 36.508 cl 4.3.1. + * @param p_Band + * @param p_DL_ChBandwidth + * @param p_UL_ChBandwidth + * @return FrequencyLowMidHigh_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_InitFrequencyLowMidHigh(FreqBandIndicator p_Band, + Dl_Bandwidth_Type p_DL_ChBandwidth, + Ul_Bandwidth_Type p_UL_ChBandwidth ) return FrequencyLowMidHigh_Type + { + var FrequencyLowMidHigh_Type v_FreqLMH; + + select (p_Band){ + case (1) { // Band 1 + select (p_DL_ChBandwidth){ + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 25; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 300; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 575; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 50; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 300; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 550; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 75; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 300; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 525; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 100; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 300; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 500; + } + case else{ // ChBandwidth = 1.4 or 3 or else + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + }; + select (p_UL_ChBandwidth){ + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 18025; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 18300; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 18575; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 18050; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 18300; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 18550; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 18075; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 18300; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 18525; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 18100; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 18300; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 18500; + } + case else{ // ChBandwidth = 1.4 or 3 or else + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (2) { // Band 2 + select (p_DL_ChBandwidth){ + case (n6){ // ChBandwidth = 1.4 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 607; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 900; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 1193; + } + case (n15){ // ChBandwidth = 3 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 615; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 900; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 1185; + } + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 625; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 900; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 1175; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 650; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 900; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 1150; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 675; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 900; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 1125; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 700; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 900; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 1100; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + }; + select (p_UL_ChBandwidth){ + case (n6){ // ChBandwidth = 1.4 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 18607; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 18900; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 19193; + } + case (n15){ // ChBandwidth = 3 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 18615; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 18900; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 19185; + } + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 18625; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 18900; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 19175; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 18650; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 18900; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 19150; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 18675; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 18900; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 19125; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 18700; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 18900; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 19100; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (3) { // Band 3 + select (p_DL_ChBandwidth){ + case (n6){ // ChBandwidth = 1.4 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 1207; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 1575; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 1943; + } + case (n15){ // ChBandwidth = 3 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 1215; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 1575; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 1935; + } + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 1225; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 1575; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 1925; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 1250; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 1575; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 1900; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 1275; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 1575; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 1875; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 1300; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 1575; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 1850; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + }; + select (p_UL_ChBandwidth) { + case (n6){ // ChBandwidth = 1.4 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 19207; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 19575; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 19943; + } + case (n15){ // ChBandwidth = 3 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 19215; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 19575; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 19935; + } + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 19225; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 19575; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 19925; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 19250; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 19575; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 19900; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 19275; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 19575; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 19875; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 19300; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 19575; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 19850; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (4) { // Band 4 + select (p_DL_ChBandwidth){ + case (n6){ // ChBandwidth = 1.4 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 1957; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 2175; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 2393; + } + case (n15){ // ChBandwidth = 3 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 1965; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 2175; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 2385; + } + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 1975; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 2175; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 2375; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 2000; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 2175; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 2350; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 2025; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 2175; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 2325; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 2050; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 2175; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 2300; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + }; + select (p_UL_ChBandwidth) { + case (n6){ // ChBandwidth = 1.4 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 19957; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 20175; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 20393; + } + case (n15){ // ChBandwidth = 3 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 19965; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 20175; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 20385; + } + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 19975; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 20175; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 20375; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 20000; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 20175; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 20350; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 20025; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 20175; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 20325; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 20050; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 20175; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 20300; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (5) { // Band 5 + select (p_DL_ChBandwidth){ + case (n6){ // ChBandwidth = 1.4 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 2407; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 2525; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 2643; + } + case (n15){ // ChBandwidth = 3 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 2415; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 2525; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 2635; + } + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 2425; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 2525; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 2625; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 2450; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 2525; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 2600; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + select (p_UL_ChBandwidth) { + case (n6){ // ChBandwidth = 1.4 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 20407; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 20525; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 20643; + } + case (n15){ // ChBandwidth = 3 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 20415; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 20525; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 20635; + } + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 20425; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 20525; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 20625; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 20450; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 20525; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 20600; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (6) { // Band 6 + select (p_DL_ChBandwidth){ + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 2675; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 2700; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 2725; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 2700; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 2700; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 2700; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + }; + select (p_UL_ChBandwidth) { + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 20675; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 20700; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 20725; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 20700; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 20700; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 20700; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (7) { // Band 7 + select (p_DL_ChBandwidth){ + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 2775; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 3100; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 3425; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 2800; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 3100; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 3400; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 2825; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 3100; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 3375; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 2850; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 3100; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 3350; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + }; + select (p_UL_ChBandwidth) { + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 20775; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 21100; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 21425; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 20800; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 21100; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 21400; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 20825; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 21100; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 21375; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 20850; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 21100; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 21350; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (8) { // Band 8 + select (p_DL_ChBandwidth){ + case (n6){ // ChBandwidth = 1.4 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 3457; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 3625; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 3793; + } + case (n15){ // ChBandwidth = 3 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 3465; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 3625; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 3785; + } + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 3475; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 3625; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 3775; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 3500; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 3625; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 3750; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + select (p_UL_ChBandwidth) { + case (n6){ // ChBandwidth = 1.4 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 21457; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 21625; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 21793; + } + case (n15){ // ChBandwidth = 3 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 21465; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 21625; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 21785; + } + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 21475; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 21625; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 21775; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 21500; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 21625; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 21750; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (9) { // Band 9 + select (p_DL_ChBandwidth){ + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 3825; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 3975; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 4125; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 3850; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 3975; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 4100; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 3875; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 3975; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 4075; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 3900; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 3975; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 4050; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + select (p_UL_ChBandwidth) { + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 21825; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 21975; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 22125; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 21850; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 21975; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 22100; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 21875; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 21975; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 22075; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 21900; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 21975; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 22050; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (10) { // Band 10 + select (p_DL_ChBandwidth){ + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 4175; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 4450; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 4725; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 4200; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 4450; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 4700; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 4225; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 4450; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 4675; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 4250; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 4450; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 4650; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + select (p_UL_ChBandwidth) { + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 22175; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 22450; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 22725; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 22200; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 22450; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 22700; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 22225; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 22450; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 22675; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 22250; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 22450; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 22650; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (11) { // Band 11 @sic R5-100847 sic@ + select (p_DL_ChBandwidth){ + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 4775; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 4850; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 4925; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 4800; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 4850; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 4900; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + select (p_UL_ChBandwidth) { + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 22775; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 22850; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 22925; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 22800; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 22850; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 22900; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (12) { // Band 12 @sic R5-110846 sic@ + select (p_DL_ChBandwidth){ + case (n6){ // ChBandwidth = 1.4 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 5017; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 5095; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 5173; + } + case (n15){ // ChBandwidth = 3 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 5025; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 5095; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 5165; + } + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 5035; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 5095; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 5155; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 5060; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 5095; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 5130; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + select (p_UL_ChBandwidth) { + case (n6){ // ChBandwidth = 1.4 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 23017; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 23095; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 23173; + } + case (n15){ // ChBandwidth = 3 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 23025; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 23095; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 23165; + } + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 23035; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 23095; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 23155; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 23060; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 23095; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 23130; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (13) { // Band 13 + select (p_DL_ChBandwidth){ // @sic R5-104089 sic@ + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 5205; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 5230; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 5255; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 5230; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 5230; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 5230; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + select (p_UL_ChBandwidth) { + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 23205; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 23230; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 23255; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 23230; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 23230; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 23230; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (14) { // Band 14 + select (p_DL_ChBandwidth){ // @sic R5-104089 sic@ + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 5305; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 5330; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 5355; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 5330; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 5330; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 5330; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + select (p_UL_ChBandwidth) { + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 23305; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 23330; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 23355; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 23330; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 23330; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 23330; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (15) { // Band 15 + //FFS in 36.508 + } + case (16) { // Band 16 + //FFS in 36.508 + } + case (17) { // Band 17 + select (p_DL_ChBandwidth){ // @sic R5-104089 sic@ + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 5755; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 5790; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 5825; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 5780; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 5790; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 5800; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + select (p_UL_ChBandwidth) { + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 23755; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 23790; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 23825; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 23780; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 23790; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 23800; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (18) { // Band 18 + select (p_DL_ChBandwidth){ + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 5875; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 5925; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 5975; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 5900; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 5925; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 5950; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 5925; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 5925; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 5925; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + select (p_UL_ChBandwidth) { + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 23875; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 23925; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 23975; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 23900; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 23925; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 23950; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 23925; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 23925; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 23925; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (19) { // Band 19 + select (p_DL_ChBandwidth){ + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 6025; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 6075; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 6125; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 6050; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 6075; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 6100; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 6075; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 6075; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 6075; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + select (p_UL_ChBandwidth) { + case (n25){ // ChBandwidth = 5 @sic R5s110235 sic@ + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 24025; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 24075; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 24125; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 24050; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 24075; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 24100; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 24075; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 24075; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 24075; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (20) { // Band 20 @sic R5-100846 sic@ + select (p_DL_ChBandwidth){ + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 6175; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 6300; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 6425; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 6200; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 6300; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 6400; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 6225; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 6300; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 6375; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 6250; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 6300; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 6350; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + select (p_UL_ChBandwidth) {// @sic R5s100485 sic@ + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 24175; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 24300; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 24425; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 24200; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 24300; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 24400; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 24225; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 24300; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 24375; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 24250; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 24300; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 24350; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (21) { // Band 21 @sic R5-100847 sic@ + select (p_DL_ChBandwidth){ + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 6475; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 6525; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 6575; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 6500; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 6525; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 6550; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 6525; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 6525; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 6525; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + select (p_UL_ChBandwidth) { + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 24475; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 24525; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 24575; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 24500; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 24525; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 24550; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 24525; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 24525; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 24525; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (22) { // Band 22 @sic R5-115185 sic@ + select (p_DL_ChBandwidth){ + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 6625; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 7000; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 7375; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 6650; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 7000; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 7350; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 6675; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 7000; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 7325; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 6700; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 7000; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 7300; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + select (p_UL_ChBandwidth) { + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 24625; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 25000; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 25375; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 24650; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 25000; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 25350; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 24675; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 25000; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 25325; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 24700; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 25000; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 25300; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (23) { // Band 23 @sic R5-113749sic@ + select (p_DL_ChBandwidth){ + case (n6){ // ChBandwidth = 1.4 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 7507; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 7600; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 7693; + } + case (n15){ // ChBandwidth = 3 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 7515; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 7600; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 7685; + } + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 7525; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 7600; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 7675; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 7550; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 7600; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 7650; + } + case (n75){ // ChBandwidth = 15 @sic R5-131462 sic@ + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 7575; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 7600; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 7625; + } + case (n100){ // ChBandwidth = 20 @sic R5-131462 sic@ + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 7600; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 7600; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 7600; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + }; + select (p_UL_ChBandwidth) { + case (n6){ // ChBandwidth = 1.4 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 25507; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 25600; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 25693; + } + case (n15){ // ChBandwidth = 3 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 25515; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 25600; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 25685; + } + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 25525; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 25600; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 25675; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 25550; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 25600; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 25650; + } + case (n75){ // ChBandwidth = 15 @sic R5-131462 sic@ + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 25575; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 25600; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 25625; + } + case (n100){ // ChBandwidth = 20 @sic R5-131462 sic@ + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 25600; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 25600; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 25600; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (24) { // Band 21 @sic R5-112381 sic@ + select (p_DL_ChBandwidth){ + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 7725; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 7870; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 8015; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 7750; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 7870; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 7990; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + select (p_UL_ChBandwidth) { + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 25725; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 25870; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 26015; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 25750; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 25870; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 25990; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (25) { // Band 25 @sic R5-113500 sic@ + select (p_DL_ChBandwidth){ + case (n6){ // ChBandwidth = 1.4 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 8047; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 8365; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 8683; + } + case (n15){ // ChBandwidth = 3 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 8055; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 8365; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 8675; + } + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 8065; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 8365; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 8665; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 8090; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 8365; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 8640; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 8115; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 8365; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 8615; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 8140; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 8365; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 8590; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + }; + select (p_UL_ChBandwidth) { + case (n6){ // ChBandwidth = 1.4 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 26047; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 26365; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 26683; + } + case (n15){ // ChBandwidth = 3 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 26055; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 26365; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 26675; + } + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 26065; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 26365; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 26665; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 26090; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 26365; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 26640; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 26115; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 26365; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 26615; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 26140; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 26365; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 26590; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (26) { // Band 26 @sic R5-121905 sic@ + select (p_DL_ChBandwidth){ + case (n6){ // ChBandwidth = 1.4 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 8697; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 8865; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 9033; + } + case (n15){ // ChBandwidth = 3 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 8705; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 8865; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 9025; + } + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 8715; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 8865; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 9015; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 8800; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 8865; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 8990; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 8825; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 8865; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 8965; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + }; + select (p_UL_ChBandwidth) { + case (n6){ // ChBandwidth = 1.4 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 26697; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 26865; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 27033; + } + case (n15){ // ChBandwidth = 3 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 26705; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 26865; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 27025; + } + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 26715; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 26865; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 27015; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 26800; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 26865; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 26990; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 26825; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 26865; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 26965; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (27) { // Band 27 @sic R5-125832 sic@ + select (p_DL_ChBandwidth){ + case (n6){ // ChBandwidth = 1.4 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 9047; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 9125; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 9203; + } + case (n15){ // ChBandwidth = 3 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 9055; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 9125; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 9195; + } + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 9065; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 9125; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 9185; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 9090; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 9125; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 9160; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + }; + select (p_UL_ChBandwidth) { + case (n6){ // ChBandwidth = 1.4 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 27047; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 27125; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 27203; + } + case (n15){ // ChBandwidth = 3 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 27055; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 27125; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 27195; + } + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 27065; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 27125; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 27185; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 27090; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 27125; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 27160; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (28) { // Band 28 @sic R5-125778 R5-141039 sic@ + // Acc. to 36.508 Table 4.3.1.1.28-1 + select (p_DL_ChBandwidth){ + case (n15){ // ChBandwidth = 3 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 9225; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 9375; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 9645; + } + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 9235; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 9385; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 9635; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 9260; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 9410; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 9610; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 9285; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 9435; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 9585; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 9310; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 9460; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 9560; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + }; + select (p_UL_ChBandwidth) { //@sic R5s140202 sic@ + case (n15){ // ChBandwidth = 3 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 27225; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 27375; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 27645; + } + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 27235; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 27385; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 27635; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 27260; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 27410; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 27610; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 27285; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 27435; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 27585; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 27310; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 27460; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 27560; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (29) { // Band 29 @sic R5s131041 sic@ + select (p_DL_ChBandwidth){ + case (n15){ // ChBandwidth = 3 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 9675; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 9715; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 9755; + } + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 9685; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 9715; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 9745; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 9710; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 9715; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 9720; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (31) { // Band 31 @sic R5-133246 sic@ + select (p_DL_ChBandwidth){ + case (n6){ // ChBandwidth = 1.4 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 9877; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 9895; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 9913; + } + case (n15){ // ChBandwidth = 3 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 9885; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 9895; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 9905; + } + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 9895; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 9895; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 9895; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + }; + select (p_UL_ChBandwidth) { + case (n6){ // ChBandwidth = 3 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 27767; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 27785; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 27803; + } + case (n15){ // ChBandwidth = 3 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 27775; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 27785; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 27795; + } + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.ul_CarrierFreq := 27785; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := 27785; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := 27785; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (33) { // Band 33 + select (p_DL_ChBandwidth){ + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 36025; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 36100; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 36175; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 36050; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 36100; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 36150; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 36075; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 36100; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 36125; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 36100; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 36100; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 36100; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (34) { // Band 34 + select (p_DL_ChBandwidth){ + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 36225; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 36275; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 36325; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 36250; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 36275; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 36300; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 36275; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 36275; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 36275; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (35) { // Band 35 + select (p_DL_ChBandwidth){ + case (n6){ // ChBandwidth = 1.4 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 36357; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 36650; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 36943; + } + case (n15){ // ChBandwidth = 3 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 36365; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 36650; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 36935; + } + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 36375; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 36650; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 36925; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 36400; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 36650; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 36900; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 36425; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 36650; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 36875; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 36450; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 36650; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 36850; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (36) { // Band 36 + select (p_DL_ChBandwidth){ + case (n6){ // ChBandwidth = 1.4 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 36957; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 37250; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 37543; + } + case (n15){ // ChBandwidth = 3 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 36965; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 37250; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 37535; + } + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 36975; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 37250; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 37525; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 37000; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 37250; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 37500; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 37025; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 37250; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 37475; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 37050; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 37250; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 37450; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (37) { // Band 37 + select (p_DL_ChBandwidth){ + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 37575; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 37650; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 37725; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 37600; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 37650; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 37700; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 37625; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 37650; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 37675; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 37650; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 37650; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 37650; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (38) { // Band 38 + select (p_DL_ChBandwidth){ + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 37775; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 38000; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 38225; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 37800; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 38000; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 38200; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 37825; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 38000; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 38175; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 37850; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 38000; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 38150; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (39) { // Band 39 + select (p_DL_ChBandwidth){ + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 38275; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 38450; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 38625; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 38300; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 38450; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 38600; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 38325; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 38450; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 38575; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 38350; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 38450; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 38550; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (40) { // Band 40 + select (p_DL_ChBandwidth){ + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 38675; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 39150; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 39625; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 38700; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 39150; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 39600; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 38725; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 39150; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 39575; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 38750; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 39150; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 39550; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (41) { // Band 41 @sic R5106116 R5-110542 sic@ + select (p_DL_ChBandwidth){ + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 39675; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 40620; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 41565; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 39700; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 40620; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 41540; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 39725; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 40620; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 41515; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 39750; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 40620; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 41490; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (42) { // Band 42 @sic R5-110968 sic@ + select (p_DL_ChBandwidth){ + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 41615; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 42590; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 43565; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 41640; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 42590; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 43540; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 41665; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 42590; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 43515; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 41690; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 42590; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 43490; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (43) { // Band 43 @sic R5-110968 sic@ + select (p_DL_ChBandwidth){ + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 43615; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 44590; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 45565; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 43640; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 44590; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 45540; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 43665; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 44590; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 45515; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 43690; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 44590; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 45490; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case (44) { // Band 44 @sic R5-130710 sic@ + select (p_DL_ChBandwidth){ + case (n15){ // ChBandwidth = 3 @sic R5-131611 sic@ + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 36965; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 37250; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 37535; + } + case (n25){ // ChBandwidth = 5 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 45605; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 46090; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 46575; + } + case (n50){ // ChBandwidth = 10 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 45640; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 46090; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 46540; + } + case (n75){ // ChBandwidth = 15 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 45665; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 46090; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 46515; + } + case (n100){ // ChBandwidth = 20 + v_FreqLMH.FrequencyLow.dl_CarrierFreq := 45690; + v_FreqLMH.FrequencyMid.dl_CarrierFreq := 46090; + v_FreqLMH.FrequencyHigh.dl_CarrierFreq := 46490; + } + case else{ + FatalError (__FILE__, __LINE__, "invalid ChannelBandwidth"); + } + } + } + case else{ + FatalError (__FILE__, __LINE__, "invalid Band"); + } + } + + // Assign UL EARFCN to omit for TDD mode + if ( p_Band >= 33 ) { + // TDD mode + // UL EARFCN = DL EARFCN + v_FreqLMH.FrequencyLow.ul_CarrierFreq := omit; + v_FreqLMH.FrequencyMid.ul_CarrierFreq := omit; + v_FreqLMH.FrequencyHigh.ul_CarrierFreq := omit; + } + return v_FreqLMH; + }; + + + /* + * @desc Function used to define the Frequency f1/f2/f3/f4 based on the Frequency band and channel bandwidth as per 36.508 cl 6.3.2.1 and Table 6.2.3.1-1 + * @param p_Band + * @param p_DL_ChBandwidth + * @param p_UL_ChBandwidth + * @return Frequency_fList_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_InitFrequency_f1Tof4(FreqBandIndicator p_Band, + Dl_Bandwidth_Type p_DL_ChBandwidth, + Ul_Bandwidth_Type p_UL_ChBandwidth) return Frequency_fList_Type + { /* @sic R5-096440 sic@ */ + var FrequencyLowMidHigh_Type v_FreqLMH; + var template(value) Frequency_fList_Type v_Freq := cs_FrequencyInitDummy; //Initialise with Dummy value + + // Initialise Frequencies Low/Mid/High for the primary Band + v_FreqLMH:= f_EUTRA_InitFrequencyLowMidHigh(p_Band, p_DL_ChBandwidth, p_UL_ChBandwidth ); + + // Most of the bands assigns f1->Mid f2->High f3->Low + v_Freq.f1 := v_FreqLMH.FrequencyMid; + v_Freq.f2 := v_FreqLMH.FrequencyHigh; + v_Freq.f3 := v_FreqLMH.FrequencyLow; + + // Assign f4 and update f1/f2/f3 for specific bands + select (p_Band){ + case (1) { // Band 1 + v_Freq.f4.dl_CarrierFreq := 350; + v_Freq.f4.ul_CarrierFreq := 18350; + } + case (2) { // Band 2 + v_Freq.f4.dl_CarrierFreq := 950; + v_Freq.f4.ul_CarrierFreq := 18950; + } + case (3) { // Band 3 + v_Freq.f4.dl_CarrierFreq := 1625; + v_Freq.f4.ul_CarrierFreq := 19625; + } + case (4) { // Band 4 + v_Freq.f4.dl_CarrierFreq := 2225; + v_Freq.f4.ul_CarrierFreq := 20225; + } + case (5) { // Band 5 + v_Freq.f4.dl_CarrierFreq := 2575; + v_Freq.f4.ul_CarrierFreq := 20575; // @sic R5s120383 sic@ + } + case (6, 14, 17) { // Band 6, 14, 17 + if (p_DL_ChBandwidth == n25) { + v_Freq.f1 := v_FreqLMH.FrequencyLow; + v_Freq.f2 := v_FreqLMH.FrequencyHigh; + v_Freq.f3 := {dl_CarrierFreq := tsc_DummyFrequency, ul_CarrierFreq := tsc_DummyFrequency }; // @sic R5s110353 sic@ + } else { + // Signalling test with channel bandwidth different from 5 MHz, Mid Range defined in clause 4.3.1 is applied. + v_Freq.f1 := v_FreqLMH.FrequencyMid; + v_Freq.f2 := {dl_CarrierFreq := tsc_DummyFrequency, ul_CarrierFreq := tsc_DummyFrequency }; // @sic R5s110353 sic@ + v_Freq.f3 := {dl_CarrierFreq := tsc_DummyFrequency, ul_CarrierFreq := tsc_DummyFrequency }; // @sic R5s110353 sic@ + }; + } + case (7) { // Band 7 + v_Freq.f4.dl_CarrierFreq := 3150; + v_Freq.f4.ul_CarrierFreq := 21150; + } + case (8) { // Band 8 + v_Freq.f4.dl_CarrierFreq := 3675; + v_Freq.f4.ul_CarrierFreq := 21675; + } + case (9) { // Band 9 + v_Freq.f4.dl_CarrierFreq := 4025; + v_Freq.f4.ul_CarrierFreq := 22025; + } + case (10) { // Band 10 + v_Freq.f4.dl_CarrierFreq := 4500; + v_Freq.f4.ul_CarrierFreq := 22500; + } + case (11) { // Band 11 @sic R5-100847 R5s120206 sic@ + v_Freq.f1 := v_FreqLMH.FrequencyLow; + v_Freq.f2 := v_FreqLMH.FrequencyHigh; + v_Freq.f3 := {dl_CarrierFreq := tsc_DummyFrequency, ul_CarrierFreq := tsc_DummyFrequency }; + } + case (12, 19, 20, 21, 29, 34) { // Band 12, 18, 19, 20, 21, 34 @sic R5-100847 R5-104685 R5s131041 sic@ + // do nothing f4 is already initialised with the dummy value + } + case (13) { // Band 13 @sic R5-101207 sic@ + v_Freq.f1 := v_FreqLMH.FrequencyMid; + v_Freq.f2 := {dl_CarrierFreq := tsc_DummyFrequency, ul_CarrierFreq := tsc_DummyFrequency }; // @sic R5s110353 sic@ + v_Freq.f3 := {dl_CarrierFreq := tsc_DummyFrequency, ul_CarrierFreq := tsc_DummyFrequency }; // @sic R5s110353 sic@ + } + case (18) { // Band 18 @sic R5s120206 R5-121712 sic@ + v_Freq.f1 := v_FreqLMH.FrequencyLow; + v_Freq.f2 := {dl_CarrierFreq := tsc_DummyFrequency, ul_CarrierFreq := tsc_DummyFrequency }; + v_Freq.f3 := {dl_CarrierFreq := tsc_DummyFrequency, ul_CarrierFreq := tsc_DummyFrequency }; + } + case (22) { // Band 22 @sic R5-115185 sic@ + v_Freq.f4.dl_CarrierFreq := 6950; + v_Freq.f4.ul_CarrierFreq := 24950; + } + case (23) { // Band 23 @sic R5-113749 sic@ + if (p_DL_ChBandwidth == n25) { + v_Freq.f1.dl_CarrierFreq := 7575; + v_Freq.f1.ul_CarrierFreq := 25575; + v_Freq.f4.dl_CarrierFreq := 7625; + v_Freq.f4.ul_CarrierFreq := 25625; + } else { + // Signalling test with channel bandwidth different from 5 MHz, Mid Range defined in clause 4.3.1 is applied. + v_Freq.f1 := v_FreqLMH.FrequencyLow; + v_Freq.f2 := v_FreqLMH.FrequencyHigh; + v_Freq.f3 := {dl_CarrierFreq := tsc_DummyFrequency, ul_CarrierFreq := tsc_DummyFrequency }; + v_Freq.f4 := {dl_CarrierFreq := tsc_DummyFrequency, ul_CarrierFreq := tsc_DummyFrequency }; + }; + } + case (24) { // Band 24 @sic R5-113521 sic@ + v_Freq.f4.dl_CarrierFreq := 7920; + v_Freq.f4.ul_CarrierFreq := 25920; + } + case (25) { // Band 25 @sic R5-113500 sic@ + v_Freq.f4.dl_CarrierFreq := 8390; + v_Freq.f4.ul_CarrierFreq := 26390; + } + case (26) { // Band 26 @sic R5-121905 sic@ + v_Freq.f4.dl_CarrierFreq := 8865; + v_Freq.f4.ul_CarrierFreq := 26865; + } + case (27) { // Band 27 @sic R5-125832 sic@ + // do nothing f4 is already initialised with dummy value + } + case (28) { // Band 28 @sic R5-125778 sic@ + v_Freq.f4.dl_CarrierFreq := 9560; + v_Freq.f4.ul_CarrierFreq := 27560; + } + case (31) { // Band 31 @sic R5-133246 sic@ + v_Freq.f1 := v_FreqLMH.FrequencyMid; + v_Freq.f2 := {dl_CarrierFreq := tsc_DummyFrequency, ul_CarrierFreq := tsc_DummyFrequency }; + v_Freq.f3 := {dl_CarrierFreq := tsc_DummyFrequency, ul_CarrierFreq := tsc_DummyFrequency }; + } + case (33) { // Band 33 + if (p_DL_ChBandwidth == n25) { + v_Freq.f1.dl_CarrierFreq := 36075; + v_Freq.f4.dl_CarrierFreq := 36125; + } else { + // Signalling test with channel bandwidth different from 5 MHz, Mid Range defined in clause 4.3.1 is applied. + v_Freq.f1 := v_FreqLMH.FrequencyMid; + }; + } + case (35) { // Band 35 + v_Freq.f4.dl_CarrierFreq := 36700; + } + case (36) { // Band 36 + v_Freq.f4.dl_CarrierFreq := 37300; + } + case (37) { // Band 37 + if (p_DL_ChBandwidth == n25) { + v_Freq.f1.dl_CarrierFreq := 37625; + v_Freq.f4.dl_CarrierFreq := 37675; + } else { + // Signalling test with channel bandwidth different from 5 MHz, Mid Range defined in clause 4.3.1 is applied. + v_Freq.f1 := v_FreqLMH.FrequencyMid; + } + } + case (38) { // Band 38 + if (p_DL_ChBandwidth == n100) { // default bandwidth = 20Mhz @sic R5-103813 sic@ + v_Freq.f1 := v_FreqLMH.FrequencyLow; + v_Freq.f2 := v_FreqLMH.FrequencyHigh; + v_Freq.f3 := {dl_CarrierFreq := tsc_DummyFrequency, ul_CarrierFreq := tsc_DummyFrequency }; // @sic R5s110353 sic@ + } else { + // Signalling test with channel bandwidth different from 20 MHz, Mid Range defined in clause 4.3.1 is applied. + v_Freq.f1 := v_FreqLMH.FrequencyMid; + v_Freq.f2 := {dl_CarrierFreq := tsc_DummyFrequency, ul_CarrierFreq := tsc_DummyFrequency }; // @sic R5s110353 sic@ + v_Freq.f3 := {dl_CarrierFreq := tsc_DummyFrequency, ul_CarrierFreq := tsc_DummyFrequency }; // @sic R5s110353 sic@ + }; + } + case (39) { // Band 39 + if (p_DL_ChBandwidth == n100) { // default bandwidth = 20Mhz @sic R5-120617 sic@ + v_Freq.f1 := v_FreqLMH.FrequencyLow; + v_Freq.f2 := v_FreqLMH.FrequencyHigh; + v_Freq.f3 := {dl_CarrierFreq := tsc_DummyFrequency, ul_CarrierFreq := tsc_DummyFrequency }; + }else { + // Signalling test with channel bandwidth different from 20 MHz, Mid Range defined in clause 4.3.1 is applied. + v_Freq.f1 := v_FreqLMH.FrequencyMid; + v_Freq.f2 := {dl_CarrierFreq := tsc_DummyFrequency, ul_CarrierFreq := tsc_DummyFrequency }; // @sic R5s110353 sic@ + v_Freq.f3 := {dl_CarrierFreq := tsc_DummyFrequency, ul_CarrierFreq := tsc_DummyFrequency }; // @sic R5s110353 sic@ + }; + } + case (40) { // Band 40 @sic R5-101207 sic@ + v_Freq.f4.dl_CarrierFreq := 39350; + } + case (41) { // Band 41 @sic R5-106116 sic@ + v_Freq.f4.dl_CarrierFreq := 40970; + } + case (42) { // Band 42 @sic R5-110968 sic@ + v_Freq.f4.dl_CarrierFreq := 42640; + } + case (43) { // Band 43 @sic R5-110968 sic@ + v_Freq.f4.dl_CarrierFreq := 44640; + } + case (44) { // Band 43 @sic R5-130710 sic@ + v_Freq.f4.dl_CarrierFreq := 46115; + } + case else { FatalError (__FILE__, __LINE__, "invalid Band"); } + } + return valueof(v_Freq); + }; + +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_CellInfoInit_CA.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_CellInfoInit_CA.ttcn new file mode 100644 index 0000000..3656814 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_CellInfoInit_CA.ttcn @@ -0,0 +1,794 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-05 19:27:02 +0200 (Fri, 05 Sep 2014) $ +// $Rev: 12079 $ +/******************************************************************************/ + +module EUTRA_CellInfoInit_CA { + + import from EUTRA_CellInfo all; + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from CommonDefs all; + import from EUTRA_ASP_TypeDefs all; + import from CommonIratDefs all; + import from EUTRA_Parameters all; + import from EUTRA_Component all; + import from EUTRA_SysInfo_Templates all; + import from EUTRA_CellInfoFrequency all; + import from EUTRA_AuxiliaryFunctions all; + import from EUTRA_BandDependentParam all; + import from Parameters all; + import from EUTRA_RRC_Templates all; + + + type enumerated CA_Tested_Type { CA_IntraBand, CA_InterBand }; /* @sic R5-141113 sic@ @status APPROVED (LTE_A) */ + + type record Frequency_fList_CAInterBand_Type { + /* This structure is used to contain the different frequencies f1, f2, f5, f6 */ + /* @status APPROVED (LTE_A) */ + CarrierFreqEUTRA f1, + CarrierFreqEUTRA f2, //@sic R5-132027 sic@ + CarrierFreqEUTRA f5, + CarrierFreqEUTRA f6 + }; + + // ------------------------------------------------------------------------------------- + // TEMPLATES + // ------------------------------------------------------------------------------------- + template (value) Frequency_fList_CAInterBand_Type cs_FrequencyCAInterBand_Dummy:= + { /* To initialise f1,f2,f3,f4 with dummy frequency values */ + /* @status APPROVED (LTE_A) */ + f1 := { dl_CarrierFreq := tsc_DummyFrequency, ul_CarrierFreq := tsc_DummyFrequency }, + f2 := { dl_CarrierFreq := tsc_DummyFrequency, ul_CarrierFreq := tsc_DummyFrequency }, + f5 := { dl_CarrierFreq := tsc_DummyFrequency, ul_CarrierFreq := tsc_DummyFrequency }, + f6 := { dl_CarrierFreq := tsc_DummyFrequency, ul_CarrierFreq := tsc_DummyFrequency } + }; + + /* + * @desc Initialise frquencies for CA intra contiguous band + * Refer to 36.508 Table 6.2.3.2-1: Test frequencies for E-UTRA PCell and SCell for CA contiguous Intra-band operation + * @param p_FrequencyBand + * @return Frequency_fList_Type + * @status APPROVED (LTE_A) + */ + function f_EUTRA_CA_InitFrequenciesIntraBand(FreqBandIndicator p_FrequencyBand) return Frequency_fList_Type + { //@sic R5-141113 sic@ + var template(value) Frequency_fList_Type v_Freq := cs_FrequencyInitDummy; //Initialise with Dummy value + + // acc to 36.508 Table 6.2.3.2-1: Test frequencies for E-UTRA PCell and SCell for CA contiguous Intra-band operation + select (p_FrequencyBand) { + case (1) { // CA_1C + v_Freq.f1.dl_CarrierFreq := 300; + v_Freq.f1.ul_CarrierFreq := 18300; + v_Freq.f2.dl_CarrierFreq := 498; + v_Freq.f2.ul_CarrierFreq := 18498; + v_Freq.f3.dl_CarrierFreq := 102; + v_Freq.f3.ul_CarrierFreq := 18102; + } + case (3) { // CA_3C @sic R5-134791 sic@ + v_Freq.f1.dl_CarrierFreq := 1475; + v_Freq.f1.ul_CarrierFreq := 19475; + v_Freq.f2.dl_CarrierFreq := 1673; + v_Freq.f2.ul_CarrierFreq := 19673; + v_Freq.f3.dl_CarrierFreq := 1277; + v_Freq.f3.ul_CarrierFreq := 19277; + } + case (7) { // CA_7C + v_Freq.f1.dl_CarrierFreq := 3000; + v_Freq.f1.ul_CarrierFreq := 21000; + v_Freq.f2.dl_CarrierFreq := 3198; + v_Freq.f2.ul_CarrierFreq := 21198; + v_Freq.f3.dl_CarrierFreq := 2802; + v_Freq.f3.ul_CarrierFreq := 20802; + } + case (27) { // CA_27B @sic R5-142930 sic@ + v_Freq.f1.dl_CarrierFreq := 9100; + v_Freq.f1.ul_CarrierFreq := 27100; + v_Freq.f2.dl_CarrierFreq := 9148; + v_Freq.f2.ul_CarrierFreq := 27148; + v_Freq.f3.dl_CarrierFreq := 9050; + v_Freq.f3.ul_CarrierFreq := 27050; + } + case (38) { // CA_38C + v_Freq.f1.dl_CarrierFreq := 37900; + v_Freq.f2.dl_CarrierFreq := 38098; + } + case (40) { // CA_40C + v_Freq.f1.dl_CarrierFreq := 39050; + v_Freq.f2.dl_CarrierFreq := 39248; + v_Freq.f3.dl_CarrierFreq := 38852; + } + case (41) { // CA_41C + v_Freq.f1.dl_CarrierFreq := 40520; + v_Freq.f2.dl_CarrierFreq := 40718; + v_Freq.f3.dl_CarrierFreq := 40322; + } + case else { FatalError (__FILE__, __LINE__, "invalid Band"); } + } + return valueof(v_Freq); + } + + /* + * @desc Initialise frquencies for CA intra contiguous band + * Refer to 36.508 Table 6.2.3.2-2 and 6.2.3.2-3: Test frequencies PCell and SCell for CA Inter-band operat + * @param p_PrimaryBandFrequencyBand + * @param p_SecondaryBandFrequencyBand + * @return Frequency_fList_CAInterBand_Type + * @status APPROVED (LTE_A) + */ + function f_EUTRA_CA_InitFrequenciesInterBand(FreqBandIndicator p_PrimaryBandFrequencyBand, + FreqBandIndicator p_SecondaryBandFrequencyBand) return Frequency_fList_CAInterBand_Type + { + var template(value) Frequency_fList_CAInterBand_Type v_Freq := cs_FrequencyCAInterBand_Dummy; + + select (p_PrimaryBandFrequencyBand) { + case (1) { + select (p_SecondaryBandFrequencyBand) { + case (5) { // CA_1A-5A + v_Freq.f1.dl_CarrierFreq := 300; + v_Freq.f1.ul_CarrierFreq := 18300; + v_Freq.f2.dl_CarrierFreq := 450; + v_Freq.f2.ul_CarrierFreq := 18450; + v_Freq.f5.dl_CarrierFreq := 2450; + v_Freq.f5.ul_CarrierFreq := 20450; + v_Freq.f6.dl_CarrierFreq := 2600; + v_Freq.f6.ul_CarrierFreq := 20600; + } + case (8) { // CA_1A-8A @sic R5-140406 R5-140744 sic@ + v_Freq.f1.dl_CarrierFreq := 300; + v_Freq.f1.ul_CarrierFreq := 18300; + v_Freq.f2.dl_CarrierFreq := 550; + v_Freq.f2.ul_CarrierFreq := 18550; + v_Freq.f5.dl_CarrierFreq := 3625; + v_Freq.f5.ul_CarrierFreq := 21625; + v_Freq.f6.dl_CarrierFreq := 3750; + v_Freq.f6.ul_CarrierFreq := 21750; + } + case (18) { // CA_1A-18A @sic R5s130898 sic@ + v_Freq.f1.dl_CarrierFreq := 300; + v_Freq.f1.ul_CarrierFreq := 18300; + v_Freq.f2.dl_CarrierFreq := 550; + v_Freq.f2.ul_CarrierFreq := 18550; + v_Freq.f5.dl_CarrierFreq := 5900; + v_Freq.f5.ul_CarrierFreq := 23900; + } + case (19) { // CA_1A-19A + v_Freq.f1.dl_CarrierFreq := 324; + v_Freq.f1.ul_CarrierFreq := 18324; + v_Freq.f2.dl_CarrierFreq := 525; + v_Freq.f2.ul_CarrierFreq := 18525; + v_Freq.f5.dl_CarrierFreq := 6100; + v_Freq.f5.ul_CarrierFreq := 24100; + } + case (21) { // CA_1A-21A + v_Freq.f1.dl_CarrierFreq := 324; + v_Freq.f1.ul_CarrierFreq := 18324; + v_Freq.f2.dl_CarrierFreq := 525; + v_Freq.f2.ul_CarrierFreq := 18525; + v_Freq.f5.dl_CarrierFreq := 6525; + v_Freq.f5.ul_CarrierFreq := 24525; + } + case (26) { // CA_1A-26A //@sic R5s140241 sic@ + v_Freq.f1.dl_CarrierFreq := 300; + v_Freq.f1.ul_CarrierFreq := 18300; + v_Freq.f2.dl_CarrierFreq := 550; + v_Freq.f2.ul_CarrierFreq := 18550; + v_Freq.f5.dl_CarrierFreq := 8865; + v_Freq.f5.ul_CarrierFreq := 26865; + v_Freq.f6.dl_CarrierFreq := 8990; + v_Freq.f6.ul_CarrierFreq := 26990; + } + case else { FatalError (__FILE__, __LINE__, "invalid Band"); } + } + } + case (2) { + select (p_SecondaryBandFrequencyBand) { + case (4) { // CA_2A-4A @sic R5-142768 sic@ + v_Freq.f1.dl_CarrierFreq := 900; + v_Freq.f1.ul_CarrierFreq := 18900; + v_Freq.f2.dl_CarrierFreq := 1150; + v_Freq.f2.ul_CarrierFreq := 19150; + v_Freq.f5.dl_CarrierFreq := 2175; + v_Freq.f5.ul_CarrierFreq := 20175; + v_Freq.f6.dl_CarrierFreq := 2350; + v_Freq.f6.ul_CarrierFreq := 20350; + } + case (5) { // CA_2A-5A @sic R5-134426 sic@ + v_Freq.f1.dl_CarrierFreq := 900; + v_Freq.f1.ul_CarrierFreq := 18900; + v_Freq.f2.dl_CarrierFreq := 1150; + v_Freq.f2.ul_CarrierFreq := 19150; + v_Freq.f5.dl_CarrierFreq := 2450; + v_Freq.f5.ul_CarrierFreq := 20450; + v_Freq.f6.dl_CarrierFreq := 2600; + v_Freq.f6.ul_CarrierFreq := 20600; + } + case (17) { // CA_2A-17A + v_Freq.f1.dl_CarrierFreq := 900; + v_Freq.f1.ul_CarrierFreq := 18900; + v_Freq.f5.dl_CarrierFreq := 5790; + v_Freq.f5.ul_CarrierFreq := 23790; + } + case (29) { // CA_2A-29A @sic R5-134786 sic@ + v_Freq.f1.dl_CarrierFreq := 900; + v_Freq.f1.ul_CarrierFreq := 18900; + v_Freq.f2.dl_CarrierFreq := 1150; + v_Freq.f2.ul_CarrierFreq := 19150; + v_Freq.f5.dl_CarrierFreq := 9720; + } + case else { FatalError (__FILE__, __LINE__, "invalid Band"); } + } + } + case (3) { + select (p_SecondaryBandFrequencyBand) { + case (5) { // CA_3A-5A @sic R5-133614 sic@ + v_Freq.f1.dl_CarrierFreq := 1575; + v_Freq.f1.ul_CarrierFreq := 19575; + v_Freq.f2.dl_CarrierFreq := 1900; + v_Freq.f2.ul_CarrierFreq := 19900; + v_Freq.f5.dl_CarrierFreq := 2450; + v_Freq.f5.ul_CarrierFreq := 20450; + v_Freq.f6.dl_CarrierFreq := 2600; + v_Freq.f6.ul_CarrierFreq := 20600; + } + case (7) { // CA_3A-7A + v_Freq.f1.dl_CarrierFreq := 1575; + v_Freq.f1.ul_CarrierFreq := 19575; + v_Freq.f2.dl_CarrierFreq := 1900; + v_Freq.f2.ul_CarrierFreq := 19900; + v_Freq.f5.dl_CarrierFreq := 2800; + v_Freq.f5.ul_CarrierFreq := 20800; + v_Freq.f6.dl_CarrierFreq := 3400; + v_Freq.f6.ul_CarrierFreq := 21400; + } + case (8) { // CA_3A-8A @sic R5-133113 sic@ + v_Freq.f1.dl_CarrierFreq := 1575; + v_Freq.f1.ul_CarrierFreq := 19575; + v_Freq.f2.dl_CarrierFreq := 1900; + v_Freq.f2.ul_CarrierFreq := 19900; + v_Freq.f5.dl_CarrierFreq := 3625; + v_Freq.f5.ul_CarrierFreq := 21625; + v_Freq.f6.dl_CarrierFreq := 3750; + v_Freq.f6.ul_CarrierFreq := 21750; + } + case (19) { // CA_3A-19A @sic R5-134790 R5-142928 sic@ + v_Freq.f1.dl_CarrierFreq := 1575; + v_Freq.f1.ul_CarrierFreq := 19575; + v_Freq.f2.dl_CarrierFreq := 1850; + v_Freq.f2.ul_CarrierFreq := 19850; + v_Freq.f5.dl_CarrierFreq := 6100; + v_Freq.f5.ul_CarrierFreq := 24100; + } + case (26) { // CA_3A-26A @sic R5-142299 sic@ + v_Freq.f1.dl_CarrierFreq := 1575; + v_Freq.f1.ul_CarrierFreq := 19575; + v_Freq.f2.dl_CarrierFreq := 1900; + v_Freq.f2.ul_CarrierFreq := 19900; + v_Freq.f5.dl_CarrierFreq := 8865; + v_Freq.f5.ul_CarrierFreq := 26865; + v_Freq.f6.dl_CarrierFreq := 8990; + v_Freq.f6.ul_CarrierFreq := 26990; + } + case (27) { // CA_3A-27A @sic R5-142299 sic@ + v_Freq.f1.dl_CarrierFreq := 1575; + v_Freq.f1.ul_CarrierFreq := 19575; + v_Freq.f2.dl_CarrierFreq := 1900; + v_Freq.f2.ul_CarrierFreq := 19900; + v_Freq.f5.dl_CarrierFreq := 9125; + v_Freq.f5.ul_CarrierFreq := 27125; + v_Freq.f6.dl_CarrierFreq := 9160; + v_Freq.f6.ul_CarrierFreq := 27160; + } + case (28) { // CA_3A-28A @sic R5-142114 sic@ + v_Freq.f1.dl_CarrierFreq := 1575; + v_Freq.f1.ul_CarrierFreq := 19575; + v_Freq.f2.dl_CarrierFreq := 1900; + v_Freq.f2.ul_CarrierFreq := 19900; + v_Freq.f5.dl_CarrierFreq := 9435; + v_Freq.f5.ul_CarrierFreq := 27435; + v_Freq.f6.dl_CarrierFreq := 9610; + v_Freq.f6.ul_CarrierFreq := 27610; + } + case else { FatalError (__FILE__, __LINE__, "invalid Band"); } + } + } + case (4) { + select (p_SecondaryBandFrequencyBand) { + case (5) { // CA_4A-5A + v_Freq.f1.dl_CarrierFreq := 2175; + v_Freq.f1.ul_CarrierFreq := 20175; + v_Freq.f2.dl_CarrierFreq := 2350; + v_Freq.f2.ul_CarrierFreq := 20350; + v_Freq.f5.dl_CarrierFreq := 2450; + v_Freq.f5.ul_CarrierFreq := 20450; + v_Freq.f6.dl_CarrierFreq := 2600; + v_Freq.f6.ul_CarrierFreq := 20600; + } + case (12) { // CA_4A-12A @sic R5-142928 sic@ + v_Freq.f1.dl_CarrierFreq := 2175; + v_Freq.f1.ul_CarrierFreq := 20175; + v_Freq.f2.dl_CarrierFreq := 2350; + v_Freq.f2.ul_CarrierFreq := 20350; + v_Freq.f5.dl_CarrierFreq := 5130; + v_Freq.f5.ul_CarrierFreq := 23130; + } + case (13) { //CA_4A-13A + v_Freq.f1.dl_CarrierFreq := 2175; + v_Freq.f1.ul_CarrierFreq := 20175; + v_Freq.f2.dl_CarrierFreq := 2350; + v_Freq.f2.ul_CarrierFreq := 20350; + v_Freq.f5.dl_CarrierFreq := 5230; + v_Freq.f5.ul_CarrierFreq := 23230; + } + case (17) { //CA_4A-17A + v_Freq.f1.dl_CarrierFreq := 2175; + v_Freq.f1.ul_CarrierFreq := 20175; + v_Freq.f5.dl_CarrierFreq := 5790; + v_Freq.f5.ul_CarrierFreq := 23790; + } + case (29) { // CA_4A-29A @sic R5-134786 sic@ + v_Freq.f1.dl_CarrierFreq := 2175; + v_Freq.f1.ul_CarrierFreq := 20175; + v_Freq.f2.dl_CarrierFreq := 2350; + v_Freq.f2.ul_CarrierFreq := 20350; + v_Freq.f5.dl_CarrierFreq := 9720; + } + case else { FatalError (__FILE__, __LINE__, "invalid Band"); } + } + } + case (5) { + select (p_SecondaryBandFrequencyBand) { + case (2) { // CA_2A-5A_Rev (reverse) Table 6.2.3.2-3 @sic R5-140789 sic@ + v_Freq.f5.dl_CarrierFreq := 900; + v_Freq.f5.ul_CarrierFreq := 18900; + v_Freq.f6.dl_CarrierFreq := 1150; + v_Freq.f6.ul_CarrierFreq := 19150; + v_Freq.f1.dl_CarrierFreq := 2450; + v_Freq.f1.ul_CarrierFreq := 20450; + v_Freq.f2.dl_CarrierFreq := 2600; + v_Freq.f2.ul_CarrierFreq := 20600; + } + case (4) { // CA_4A-5A_Rev (reverse) Table 6.2.3.2-3 @sic R5-140998 R5s140241 sic@ + v_Freq.f5.dl_CarrierFreq := 2175; + v_Freq.f5.ul_CarrierFreq := 20175; + v_Freq.f6.dl_CarrierFreq := 2350; + v_Freq.f6.ul_CarrierFreq := 20350; + v_Freq.f1.dl_CarrierFreq := 2450; + v_Freq.f1.ul_CarrierFreq := 20450; + v_Freq.f2.dl_CarrierFreq := 2600; + v_Freq.f2.ul_CarrierFreq := 20600; + } + case (7) { // CA_5A-7A @sic R5-142768 sic@ + v_Freq.f1.dl_CarrierFreq := 2450; + v_Freq.f1.ul_CarrierFreq := 20450; + v_Freq.f2.dl_CarrierFreq := 2600; + v_Freq.f2.ul_CarrierFreq := 20600; + v_Freq.f5.dl_CarrierFreq := 2800; + v_Freq.f5.ul_CarrierFreq := 20800; + v_Freq.f6.dl_CarrierFreq := 3400; + v_Freq.f6.ul_CarrierFreq := 21400; + } + case (12) { // CA_5A-12A @sic R5-142928 sic@ + v_Freq.f1.dl_CarrierFreq := 2525; + v_Freq.f1.ul_CarrierFreq := 20525; + v_Freq.f2.dl_CarrierFreq := 2600; + v_Freq.f2.ul_CarrierFreq := 20600; + v_Freq.f5.dl_CarrierFreq := 5130; + v_Freq.f5.ul_CarrierFreq := 23130; + } + case (17) { // CA_5A-17A @sic R5-134876 sic@ + v_Freq.f1.dl_CarrierFreq := 2525; + v_Freq.f1.ul_CarrierFreq := 20525; + v_Freq.f2.dl_CarrierFreq := 2600; + v_Freq.f2.ul_CarrierFreq := 20600; + v_Freq.f5.dl_CarrierFreq := 5790; + v_Freq.f5.ul_CarrierFreq := 23790; + } + case else { FatalError (__FILE__, __LINE__, "invalid Band"); } + } + } + case (7) { + select (p_SecondaryBandFrequencyBand) { + case (20) { // CA_7A-20A + v_Freq.f1.dl_CarrierFreq := 3100; + v_Freq.f1.ul_CarrierFreq := 21100; + v_Freq.f2.dl_CarrierFreq := 3400; + v_Freq.f2.ul_CarrierFreq := 21400; + v_Freq.f5.dl_CarrierFreq := 6200; + v_Freq.f5.ul_CarrierFreq := 24200; + v_Freq.f6.dl_CarrierFreq := 6400; + v_Freq.f6.ul_CarrierFreq := 24400; + } + case else { FatalError (__FILE__, __LINE__, "invalid Band"); } + } + } + case (11) { + select (p_SecondaryBandFrequencyBand) { + case (18) { // CA_11A-18A @sic R5s130898 sic@ + v_Freq.f1.dl_CarrierFreq := 4800; + v_Freq.f1.ul_CarrierFreq := 22800; + v_Freq.f2.dl_CarrierFreq := 4900; + v_Freq.f2.ul_CarrierFreq := 22900; + v_Freq.f5.dl_CarrierFreq := 5900; + v_Freq.f5.ul_CarrierFreq := 23900; + } + case else { FatalError (__FILE__, __LINE__, "invalid Band"); } + } + } + case (13) { + select (p_SecondaryBandFrequencyBand) { + case (4) { // CA_4A-13A_Rev (reverse) Table 6.2.3.2-3 @sic R5-140745 sic@ + v_Freq.f5.dl_CarrierFreq := 2175; + v_Freq.f5.ul_CarrierFreq := 20175; + v_Freq.f6.dl_CarrierFreq := 2350; + v_Freq.f6.ul_CarrierFreq := 20350; + v_Freq.f1.dl_CarrierFreq := 5230; + v_Freq.f1.ul_CarrierFreq := 23230; + } + case else { FatalError (__FILE__, __LINE__, "invalid Band"); } + } + } + case (17) { + select (p_SecondaryBandFrequencyBand) { + case (2) { // CA_2A-17A_Rev (reverse) Table 6.2.3.2-3 @sic R5-133615 sic@ + v_Freq.f5.dl_CarrierFreq := 900; + v_Freq.f5.ul_CarrierFreq := 18900; + v_Freq.f6.dl_CarrierFreq := 1150; + v_Freq.f6.ul_CarrierFreq := 19150; + v_Freq.f1.dl_CarrierFreq := 5790; + v_Freq.f1.ul_CarrierFreq := 23790; + } + case (4) { // CA_4A-17A_Rev (reverse) Table 6.2.3.2-3 @sic R5-133615 sic@ + v_Freq.f5.dl_CarrierFreq := 2175; + v_Freq.f5.ul_CarrierFreq := 20175; + v_Freq.f6.dl_CarrierFreq := 2350; + v_Freq.f6.ul_CarrierFreq := 20350; + v_Freq.f1.dl_CarrierFreq := 5790; + v_Freq.f1.ul_CarrierFreq := 23790; + } + case (5) { // CA_5A-17A_Rev (reverse) Table 6.2.3.2-3 @sic R5-140998 R5s140241 sic@ + v_Freq.f5.dl_CarrierFreq := 2525; + v_Freq.f5.ul_CarrierFreq := 20525; + v_Freq.f6.dl_CarrierFreq := 2600; + v_Freq.f6.ul_CarrierFreq := 20600; + v_Freq.f1.dl_CarrierFreq := 5790; + v_Freq.f1.ul_CarrierFreq := 23790; + } + case else { FatalError (__FILE__, __LINE__, "invalid Band"); } + } + } + case (18) { + select (p_SecondaryBandFrequencyBand) { + case (1) { // CA_1A-18A_Rev @sic R5-144543 sic@ + v_Freq.f5.dl_CarrierFreq := 300; + v_Freq.f5.ul_CarrierFreq := 18300; + v_Freq.f6.dl_CarrierFreq := 500; + v_Freq.f6.ul_CarrierFreq := 18500; + v_Freq.f1.dl_CarrierFreq := 5900; + v_Freq.f1.ul_CarrierFreq := 23900; + } + case (11) { // CA_11A-18A_Rev @sic R5-144543 sic@ + v_Freq.f5.dl_CarrierFreq := 4800; + v_Freq.f5.ul_CarrierFreq := 22800; + v_Freq.f6.dl_CarrierFreq := 4900; + v_Freq.f6.ul_CarrierFreq := 22900; + v_Freq.f1.dl_CarrierFreq := 5900; + v_Freq.f1.ul_CarrierFreq := 23900; + } + case else { FatalError (__FILE__, __LINE__, "invalid Band"); } + } + } + case (19) { + select (p_SecondaryBandFrequencyBand) { + case (1) { // CA_1A-19A_Rev @sic R5-144685 sic@ + v_Freq.f5.dl_CarrierFreq := 324; + v_Freq.f5.ul_CarrierFreq := 18324; + v_Freq.f6.dl_CarrierFreq := 525; + v_Freq.f6.ul_CarrierFreq := 18525; + v_Freq.f1.dl_CarrierFreq := 6100; + v_Freq.f1.ul_CarrierFreq := 24100; + } + case (3) { // CA_3A-19A_Rev @sic R5-144685 sic@ + v_Freq.f5.dl_CarrierFreq := 1575; + v_Freq.f5.ul_CarrierFreq := 19575; + v_Freq.f6.dl_CarrierFreq := 1850; + v_Freq.f6.ul_CarrierFreq := 19850; + v_Freq.f1.dl_CarrierFreq := 61075; + v_Freq.f1.ul_CarrierFreq := 24075; + } + case (21) { // CA_19A-21A @sic R5-134790 sic@ + v_Freq.f1.dl_CarrierFreq := 6075; + v_Freq.f1.ul_CarrierFreq := 24075; + v_Freq.f2.dl_CarrierFreq := 6100; + v_Freq.f2.ul_CarrierFreq := 24100; + v_Freq.f5.dl_CarrierFreq := 6525; + v_Freq.f5.ul_CarrierFreq := 24525; + } + case else { FatalError (__FILE__, __LINE__, "invalid Band"); } + } + } + case (21) { + select (p_SecondaryBandFrequencyBand) { + case (1) { // CA_1A-21A_Rev //@sic R5-144685 sic@ + v_Freq.f5.dl_CarrierFreq := 324; + v_Freq.f5.ul_CarrierFreq := 18324; + v_Freq.f6.dl_CarrierFreq := 525; + v_Freq.f6.ul_CarrierFreq := 18525; + v_Freq.f1.dl_CarrierFreq := 6525; + v_Freq.f1.ul_CarrierFreq := 24525; + } + case (19) { // CA_19A-21A_Rev @sic R5-144865 sic@ + v_Freq.f5.dl_CarrierFreq := 6075; + v_Freq.f5.ul_CarrierFreq := 24075; + v_Freq.f6.dl_CarrierFreq := 6100; + v_Freq.f6.ul_CarrierFreq := 24100; + v_Freq.f1.dl_CarrierFreq := 6525; + v_Freq.f1.ul_CarrierFreq := 24525; + } + case else { FatalError (__FILE__, __LINE__, "invalid Band"); } + } + } + case (26) { + select (p_SecondaryBandFrequencyBand) { + case (1) { // CA_1A-26A_Rev //@sic R5-144544 sic@ + v_Freq.f5.dl_CarrierFreq := 300; + v_Freq.f5.ul_CarrierFreq := 18300; + v_Freq.f6.dl_CarrierFreq := 550; + v_Freq.f6.ul_CarrierFreq := 18550; + v_Freq.f1.dl_CarrierFreq := 8865; + v_Freq.f1.ul_CarrierFreq := 26865; + v_Freq.f2.dl_CarrierFreq := 8990; + v_Freq.f2.ul_CarrierFreq := 26990; + } + case else { FatalError (__FILE__, __LINE__, "invalid Band"); } + } + } + // TDD + case (39) { + select (p_SecondaryBandFrequencyBand) { + case (41) { // CA_39A-41A @sic R5-142928 sic@ + v_Freq.f1.dl_CarrierFreq := 38350; + v_Freq.f1.ul_CarrierFreq := 38350; + v_Freq.f2.dl_CarrierFreq := 38550; + v_Freq.f2.ul_CarrierFreq := 38550; + v_Freq.f5.dl_CarrierFreq := 40620; + v_Freq.f5.ul_CarrierFreq := 40620; + v_Freq.f6.dl_CarrierFreq := 41490; + v_Freq.f6.ul_CarrierFreq := 41490; + } + case else { FatalError (__FILE__, __LINE__, "invalid Band"); } + } + } + case (41) { + select (p_SecondaryBandFrequencyBand) { + case (39) { // CA_39A-41A_Rev @sic R5-142928 sic@ + v_Freq.f5.dl_CarrierFreq := 38350; + v_Freq.f5.ul_CarrierFreq := 38350; + v_Freq.f6.dl_CarrierFreq := 38550; + v_Freq.f6.ul_CarrierFreq := 38550; + v_Freq.f1.dl_CarrierFreq := 40620; + v_Freq.f1.ul_CarrierFreq := 40620; + v_Freq.f2.dl_CarrierFreq := 41490; + v_Freq.f2.ul_CarrierFreq := 41490; + } + case else { FatalError (__FILE__, __LINE__, "invalid Band"); } + } + } + case else { FatalError (__FILE__, __LINE__, "invalid Band"); } + } + return valueof(v_Freq); + } + + /* + * @desc Initialise SFN and Tcell of S-cells to the values used in the P-Cell + * @param p_EUTRA_CellList .. The first cell in the list is the Pcell, other cells are Scells + * @status APPROVED (LTE_A) + */ + function f_EUTRA_CA_InitialiseTiming(EUTRA_CellIdList_Type p_EUTRA_CellList) runs on EUTRA_PTC + { + var integer i; + var integer v_CellListLength := lengthof (p_EUTRA_CellList); + var CellTimingInfo_Type v_PcellTiming := f_EUTRA_CellInfo_GetCellTimingInfo( p_EUTRA_CellList[0] ); // the first cell is the Pcell + + // Initialise SFN and Tcell of S-cells to the values used in the P-Cell + for (i:=1; i Frequency f1 + f_EUTRA_CellInfo_SetEARFCN(eutra_Cell1, v_FreqIntraBandCA.f1); + f_EUTRA_CellInfo_SetEARFCN(eutra_Cell2, v_FreqIntraBandCA.f1); + f_EUTRA_CellInfo_SetEARFCN(eutra_Cell4, v_FreqIntraBandCA.f1); + f_EUTRA_CellInfo_SetEARFCN(eutra_Cell11, v_FreqIntraBandCA.f1); + // Cell 3/12/23 -> Frequency f2 + f_EUTRA_CellInfo_SetEARFCN(eutra_Cell3, v_FreqIntraBandCA.f2); + f_EUTRA_CellInfo_SetEARFCN(eutra_Cell12, v_FreqIntraBandCA.f2); + f_EUTRA_CellInfo_SetEARFCN(eutra_Cell23, v_FreqIntraBandCA.f2); + // Cell 6/13 -> Frequency f3 + f_EUTRA_CellInfo_SetEARFCN(eutra_Cell6, v_FreqIntraBandCA.f3); + f_EUTRA_CellInfo_SetEARFCN(eutra_Cell13, v_FreqIntraBandCA.f3); + + // Update SIB5 content + if (p_SysinfoCombination == c3 or p_SysinfoCombination == c9) { + // Frequencies list for cells on f1 + if (v_FreqIntraBandCA.f3.dl_CarrierFreq != tsc_DummyFrequency) { // f3 is defined for the Band px_ePrimaryFrequencyBand + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq(v_FreqIntraBandCA.f2, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth), + cs_InterFreqCarrierFreq(v_FreqIntraBandCA.f3, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth) + }; + } else { // f3 not defined for the band + v_InterFreqCarrierList := { cs_InterFreqCarrierFreq(v_FreqIntraBandCA.f2, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth) }; + } + f_EUTRA_CellInfo_SetSIB5(eutra_Cell1, cs_508_SystemInformationBlockType5_Def(v_InterFreqCarrierList)); + f_EUTRA_CellInfo_SetSIB5(eutra_Cell2, cs_508_SystemInformationBlockType5_Def(v_InterFreqCarrierList)); + f_EUTRA_CellInfo_SetSIB5(eutra_Cell4, cs_508_SystemInformationBlockType5_Def(v_InterFreqCarrierList)); + f_EUTRA_CellInfo_SetSIB5(eutra_Cell11, cs_508_SystemInformationBlockType5_Def(v_InterFreqCarrierList)); + + // Frequencies list for cells on f2 + if (v_FreqIntraBandCA.f3.dl_CarrierFreq != tsc_DummyFrequency) { // f3 is defined for the Band px_ePrimaryFrequencyBand + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq(v_FreqIntraBandCA.f1, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth), + cs_InterFreqCarrierFreq(v_FreqIntraBandCA.f3, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth) + }; + } else { // f3 not defined for the band + v_InterFreqCarrierList := { cs_InterFreqCarrierFreq(v_FreqIntraBandCA.f1, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth) }; + } + f_EUTRA_CellInfo_SetSIB5(eutra_Cell3, cs_508_SystemInformationBlockType5_Def(v_InterFreqCarrierList)); + f_EUTRA_CellInfo_SetSIB5(eutra_Cell12, cs_508_SystemInformationBlockType5_Def(v_InterFreqCarrierList)); + f_EUTRA_CellInfo_SetSIB5(eutra_Cell23, cs_508_SystemInformationBlockType5_Def(v_InterFreqCarrierList)); + + // Frequencies list for cells on f3 + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq(v_FreqIntraBandCA.f1, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth), + cs_InterFreqCarrierFreq(v_FreqIntraBandCA.f2, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth) + }; + f_EUTRA_CellInfo_SetSIB5(eutra_Cell6, cs_508_SystemInformationBlockType5_Def(v_InterFreqCarrierList)); + f_EUTRA_CellInfo_SetSIB5(eutra_Cell13, cs_508_SystemInformationBlockType5_Def(v_InterFreqCarrierList)); + } + // Update SIB19 + if (p_SysinfoCombination == c9) { + v_SysInfoEUTRA := f_IRAT_ListOfFrequencies(); + v_SysInfoOtherRAT := f_IRAT_InitialCoOrd(UTRAN, v_SysInfoEUTRA); // Coordinate with UTRA PTC: send EUTRA frequencies and return UTRA frequencies + } + } + case (CA_InterBand) { + v_FreqInterCA := f_EUTRA_CA_InitFrequenciesInterBand ( px_ePrimaryFrequencyBand, px_eSecondaryFrequencyBand ); + // Initialised Frequency per cell. See 36.508 Table 6.2.3.2-2 + // Cell 1/2/4/11 -> Frequency f1 + f_EUTRA_CellInfo_SetEARFCN(eutra_Cell1, v_FreqInterCA.f1); + f_EUTRA_CellInfo_SetEARFCN(eutra_Cell2, v_FreqInterCA.f1); + f_EUTRA_CellInfo_SetEARFCN(eutra_Cell4, v_FreqInterCA.f1); + f_EUTRA_CellInfo_SetEARFCN(eutra_Cell11, v_FreqInterCA.f1); + // Cell 10/30/31 -> Frequency f5 + f_EUTRA_CellInfo_SetEARFCN(eutra_Cell10, v_FreqInterCA.f5); + f_EUTRA_CellInfo_SetEARFCN(eutra_Cell30, v_FreqInterCA.f5); + f_EUTRA_CellInfo_SetEARFCN(eutra_Cell31, v_FreqInterCA.f5); + // Cell 28/29 -> Frequency f6 + f_EUTRA_CellInfo_SetEARFCN(eutra_Cell28, v_FreqInterCA.f6); + f_EUTRA_CellInfo_SetEARFCN(eutra_Cell29, v_FreqInterCA.f6); + + if (px_eSecondaryFrequencyBand == 29) { + // No UL frequency is applied to the band @sic R5-134786 sic@ + f_EUTRA_CellInfo_SetNoUL_Frequency(eutra_Cell10, true); + f_EUTRA_CellInfo_SetNoUL_Frequency(eutra_Cell30, true); + f_EUTRA_CellInfo_SetNoUL_Frequency(eutra_Cell31, true); + f_EUTRA_CellInfo_SetNoUL_Frequency(eutra_Cell28, true); + f_EUTRA_CellInfo_SetNoUL_Frequency(eutra_Cell29, true); + } + // Update SIB5 content + if (p_SysinfoCombination == c3 or p_SysinfoCombination == c9) { + // Frequencies list for cells on f1 + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq(v_FreqInterCA.f5, v_SecondaryChannelBandwidthDependency.AllowedMeasBandwidth), + cs_InterFreqCarrierFreq(v_FreqInterCA.f6, v_SecondaryChannelBandwidthDependency.AllowedMeasBandwidth) + }; + f_EUTRA_CellInfo_SetSIB5(eutra_Cell1, cs_508_SystemInformationBlockType5_Def(v_InterFreqCarrierList)); + f_EUTRA_CellInfo_SetSIB5(eutra_Cell2, cs_508_SystemInformationBlockType5_Def(v_InterFreqCarrierList)); + f_EUTRA_CellInfo_SetSIB5(eutra_Cell4, cs_508_SystemInformationBlockType5_Def(v_InterFreqCarrierList)); + f_EUTRA_CellInfo_SetSIB5(eutra_Cell11, cs_508_SystemInformationBlockType5_Def(v_InterFreqCarrierList)); + + // Frequencies list for cells on f5 + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq(v_FreqInterCA.f1, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth), + cs_InterFreqCarrierFreq(v_FreqInterCA.f6, v_SecondaryChannelBandwidthDependency.AllowedMeasBandwidth) + }; + f_EUTRA_CellInfo_SetSIB5(eutra_Cell10, cs_508_SystemInformationBlockType5_Def(v_InterFreqCarrierList)); + f_EUTRA_CellInfo_SetSIB5(eutra_Cell30, cs_508_SystemInformationBlockType5_Def(v_InterFreqCarrierList)); + f_EUTRA_CellInfo_SetSIB5(eutra_Cell31, cs_508_SystemInformationBlockType5_Def(v_InterFreqCarrierList)); + + // Frequencies list for cells on f6 + v_InterFreqCarrierList := { + cs_InterFreqCarrierFreq(v_FreqInterCA.f1, v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth), + cs_InterFreqCarrierFreq(v_FreqInterCA.f5, v_SecondaryChannelBandwidthDependency.AllowedMeasBandwidth) + }; + f_EUTRA_CellInfo_SetSIB5(eutra_Cell28, cs_508_SystemInformationBlockType5_Def(v_InterFreqCarrierList)); + f_EUTRA_CellInfo_SetSIB5(eutra_Cell29, cs_508_SystemInformationBlockType5_Def(v_InterFreqCarrierList)); + } + // Update SIB19 content + // Update SIB19 + if (p_SysinfoCombination == c9) { + v_CoOrd_EUTRASysInfo_List := { + cs_CoOrdEUTRASysInfo(f_EUTRA_CellInfo_GetEARFCN_DL(eutra_Cell1), + f_ConvertDL_BandwidthToInteger(f_EUTRA_CellInfo_GetDL_ChBandwidth(eutra_Cell1))), + cs_CoOrdEUTRASysInfo(f_EUTRA_CellInfo_GetEARFCN_DL(eutra_Cell10), + f_ConvertDL_BandwidthToInteger(f_EUTRA_CellInfo_GetDL_ChBandwidth(eutra_Cell10))), + cs_CoOrdEUTRASysInfo(f_EUTRA_CellInfo_GetEARFCN_DL(eutra_Cell28), + f_ConvertDL_BandwidthToInteger(f_EUTRA_CellInfo_GetDL_ChBandwidth(eutra_Cell28))) + }; + v_SysInfoEUTRA := cs_CoOrdEUTRA_SysInfo(v_CoOrd_EUTRASysInfo_List); + v_SysInfoOtherRAT := f_IRAT_InitialCoOrd(UTRAN, v_SysInfoEUTRA); // Coordinate with UTRA PTC: send EUTRA frequencies and return UTRA frequencies + } + } + case else { //Other combinations + FatalError(__FILE__, __LINE__, "CA type not supported"); + } + } + } + +} // End of module + + diff --git a/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_CommonProcedures.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_CommonProcedures.ttcn new file mode 100644 index 0000000..7a03f23 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_CommonProcedures.ttcn @@ -0,0 +1,2542 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-11 16:20:32 +0200 (Thu, 11 Sep 2014) $ +// $Rev: 12208 $ +/******************************************************************************/ + +module EUTRA_CommonProcedures { + + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from NAS_CommonTypeDefs all; + import from EUTRA_ASP_SrbDefs all; + import from EPS_NAS_TypeDefs all; + import from EPS_NAS_MsgContainers all; + import from EPS_NAS_Constants all; + import from EUTRA_Component all; + import from EUTRA_CellInfo all; + import from EUTRA_AspCommon_Templates all; + import from EUTRA_SecurityFunctions all; + import from EUTRA_SecuritySteps all; + import from UpperTesterCommon all; + import from UpperTesterFunctions all; + import from IP_PTC_CtrlMsgs all; + import from EUTRA_RRC_Templates all; + import from EPS_NAS_Templates all; + import from NAS_CommonTemplates all; + import from EUTRA_NASCommonTemplates all; + import from NAS_AuxiliaryDefsAndFunctions all; + import from Parameters all; + import from EUTRA_SRB_Templates all; + import from EUTRA_DRB_Templates all; + import from EUTRA_LoopBack all; + import from EUTRA_LoopBack_TypeDefs all; + import from EUTRA_NASSteps all; + import from EUTRA_RRCSteps all; + import from EUTRA_Paging all; + import from EUTRA_AuxiliaryFunctions all; + import from EUTRA_ConfigurationSteps all; + import from EUTRA_Timing all; + import from CommonIP all; + import from EUTRA_CapabilityFunctions all; + import from EUTRA_ASP_NasCtrl all; + import from TestcaseProperties all; + import from EUTRA_ASP_TypeDefs all; + + type enumerated PDN_TypeToBeUsed_Type { forceIPv4only, forceIPv6only, pdnTypeAsSupportedByUE }; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + + /* + * @desc return PDN index for first or second PDN connectivity + * @param p_InitialRegistrationPDN + * @return PDN_Index_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_InitialRegistrationPdnIndex(EUTRA_InitialRegistrationPDN_Type p_InitialRegistrationPDN) return PDN_Index_Type + { + var PDN_Index_Type v_PdnIndex; + + if (not tsc_EUTRA_Registration_MultiplePDN or + ((p_InitialRegistrationPDN == firstPDN) and tsc_EUTRA_Registration_PDN1isIMS) or + ((p_InitialRegistrationPDN == secondPDN) and tsc_EUTRA_Registration_PDN2isIMS)) { + v_PdnIndex := PDN_1; + } else { + v_PdnIndex := PDN_Internet; + } + return v_PdnIndex; + } + + /* + * @desc return EpsBearerId for first or second PDN connectivity + * @param p_InitialRegistrationPDN + * @return EPS_BearerIdentity + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_InitialRegistrationEpsBearerId(EUTRA_InitialRegistrationPDN_Type p_InitialRegistrationPDN) return EPS_BearerIdentity + { + var EPS_BearerIdentity v_EpsBearerId; + + if (f_EUTRA_InitialRegistrationPdnIndex(p_InitialRegistrationPDN) == PDN_1) { + v_EpsBearerId := tsc_EpsDefaultBearerId; + } else { + v_EpsBearerId := tsc_EpsDefaultBearerId2ndPDN; + } + return v_EpsBearerId; + } + + //---------------------------------------------------------------------------- + /* + * @desc start DHCP/ICMPv6 server for 2nd PDN + * @param p_CellId + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A) + */ + function f_EUTRA_StartIPfor2ndPDN(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { + f_IP_Handling_Start(IP, PDN_2, cs_DrbInfo_EUTRA(p_CellId, tsc_DRB2)); + }; + + //---------------------------------------------------------------------------- + /* + * @desc start DHCP/ICMPv6 server for 2nd PDN + * @param p_CellId + * @param p_CnfRequired (default: NO_CNF_REQUIRED) + * @param p_USIM_Rmvd (default: false) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_SwitchOnUEandStartIP(EUTRA_CellId_Type p_CellId, + Ut_CnfReq_Type p_CnfRequired := NO_CNF_REQUIRED, + boolean p_USIM_Rmvd := false) runs on EUTRA_PTC + { + f_IP_Handling_Start(IP, PDN_1, cs_DrbInfo_EUTRA(p_CellId, tsc_DRB1)); + f_UT_SwitchOnUE(UT, p_USIM_Rmvd, p_CnfRequired); + } + + //============================================================================ + // Auxiliary Functions + //---------------------------------------------------------------------------- + + /* + * @desc PDN Address TS 24.301 clause 9.9.4.9 (TV version IEI is omit) + * Default value according to TS 36.508 table 6.6.1-1 (which requires a 'static' value) and table 4.7.3-6 + * NOTE: Acc. to table 4.7.3-6 conditions IPv4 and IPv6 are corresponding to the PDN type sent in the previous PDN CONNECTIVITY REQUEST; + * but this is checked against f_GetPdnType what evaluates pc_IPv4 and pc_IPv6 i.e. the UE shall send the PDN type as expected acc. to pc_IPv4 and pc_IPv6 + * @param p_IPv4AllocationViaNas + * @param p_PdnIndex (default value: PDN_1) + * @param p_PDN_TypeToBeUsed (default value: pdnTypeAsSupportedByUE) + * @return PDN_Address + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_GetPDNAddress(boolean p_IPv4AllocationViaNas, + PDN_Index_Type p_PdnIndex := PDN_1, + PDN_TypeToBeUsed_Type p_PDN_TypeToBeUsed := pdnTypeAsSupportedByUE) runs on EUTRA_PTC return PDN_Address + { /* @sic R5-112600: Clarification to conditions for IP address configuration over user plane sic@ */ + /* @sic R5s130362 - MCC160 Implementation: tsc_PDN_AddressInfo; p_UseSecondAddress changed to p_PDN_Index sic@ */ + var PDN_AddressInfo_Type v_PDN_AddressInfo := f_PDN_AddressInfo_Get(p_PdnIndex); + var O4_Type v_Addr4 := f_Convert_IPv4Addr2OctString(v_PDN_AddressInfo.UE_IPAddressIPv4); // @sic R5-113734, R5s130362sic@ + var octetstring v_Addr6:= f_Convert_IPv6Addr2OctString(v_PDN_AddressInfo.UE_IPAddressIPv6); // @sic R5-113734, R5s130362 sic@ + var Type4Length_Type v_IeLength; + var B3_Type v_TypeValue; + var octetstring v_AddressInfo; + var PDN_Address v_PDN_Address; + + // set IP addresses + v_Addr6 := substr(v_Addr6, 8, 8); // Use only the IPv6 interface identifier, which are the 8 least significant octets of theIPv6 address + + if (not p_IPv4AllocationViaNas) { // => IPv4 address via DHCP signalling (if IPv4) + v_Addr4 := '00000000'O; + } + + // set PDN TypeValue + select (p_PDN_TypeToBeUsed) { /* @sic R5-120234, R5-120541, R5-120542 sic@ */ + case (forceIPv4only) { + v_TypeValue := tsc_PdnType_IPv4; + } + case (forceIPv6only) { + v_TypeValue := tsc_PdnType_IPv6; + } + case (pdnTypeAsSupportedByUE) { + if (pc_IPv4 and pc_IPv6) { + v_TypeValue := tsc_PdnType_IPv4v6; + } + else if (pc_IPv4) { + v_TypeValue := tsc_PdnType_IPv4; + } + else if (pc_IPv6) { + v_TypeValue := tsc_PdnType_IPv6; + } + else { + FatalError(__FILE__, __LINE__, "neither IPv4 nor IPv6 are supported"); + } + } + } + + // set IE + select (v_TypeValue) { + case (tsc_PdnType_IPv4) { + v_IeLength := '05'O; + v_AddressInfo := v_Addr4; + } + case (tsc_PdnType_IPv6) { + v_IeLength := '09'O; + v_AddressInfo := v_Addr6; + } + case (tsc_PdnType_IPv4v6) { + v_IeLength := '0D'O; + v_AddressInfo := v_Addr6 & v_Addr4; + } + } + + f_EUTRA_MobileInfo_SetAssignedPdnType(v_TypeValue); + + v_PDN_Address := { + iei := omit, // '59'O, + iel := v_IeLength, + spare := tsc_Spare5, + typeValue := v_TypeValue, + adressInfo := v_AddressInfo + }; + + return v_PDN_Address; + }; + + //---------------------------------------------------------------------------- + + /* + * @desc Create TFT acc. to 36.508 Table 6.6.2-1 + * @param p_BearerContext .. Reference dedicated EPS bearer context #1, #2 + * @param p_EPS_BearerId (default value: tsc_EpsDedicatedBearerId) + * @param p_PdnTypeValue (default value: omit) + * @param p_PdnIndex (default value: PDN_1) + * @return template (value) TrafficFlowTemplate + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_Get_508_TrafficFlowTemplate(integer p_BearerContext, + EPS_BearerIdentity p_EPS_BearerId := tsc_EpsDedicatedBearerId, + template (omit) B3_Type p_PdnTypeValue := omit, + PDN_Index_Type p_PdnIndex := PDN_1) runs on EUTRA_PTC return template (value) TrafficFlowTemplate + { /* @sic R5-112600: to replace cs_508_Tft_Dedicated_1 and cs_508_Tft_Dedicated_2 sic@ */ + var integer v_PacketFilterLen1ByRef; + var integer v_PacketFilterLen2ByRef; + var template (value) PacketFilter v_PacketFilter1ByRef; + var template (value) PacketFilter v_PacketFilter2ByRef; + var template (value) TrafficFlowTemplate.packetFilterList v_PacketFilterList; + var integer v_IeLength; + var B3_Type v_PdnTypeValue; + + if (isvalue(p_PdnTypeValue)) { + v_PdnTypeValue := valueof(p_PdnTypeValue); + } else { + v_PdnTypeValue := f_EUTRA_MobileInfo_GetAssignedPdnType(); + } + select (p_BearerContext) { + case (1) { // @sic R5-123632 sic@ + f_Get_508_PacketFilter(v_PacketFilter1ByRef, v_PacketFilterLen1ByRef, 1, p_EPS_BearerId, v_PdnTypeValue, p_PdnIndex); // get packet filter #1 acc. to 36.508 Table 6.6.2-2 @sic R5s130495 sic@ + f_Get_508_PacketFilter(v_PacketFilter2ByRef, v_PacketFilterLen2ByRef, 2, p_EPS_BearerId, v_PdnTypeValue, p_PdnIndex); // get packet filter #2 acc. to 36.508 Table 6.6.2-3 @sic R5s130495 sic@ + + v_IeLength := v_PacketFilterLen1ByRef + v_PacketFilterLen2ByRef + 1; // packet filter 1 + packet filter 2 + one octet for tftOperationCode, eBit and noOfPktFilter + v_PacketFilterList := {v_PacketFilter1ByRef, v_PacketFilter2ByRef}; + } + case (2) { // @sic R5-123632, R5-132085 sic@ + f_Get_508_PacketFilter(v_PacketFilter1ByRef, v_PacketFilterLen1ByRef, 3, p_EPS_BearerId, v_PdnTypeValue, p_PdnIndex); // get packet filter #3 acc. to 36.508 Table 6.6.2-4 @sic R5s130495 sic@ + + v_IeLength := v_PacketFilterLen1ByRef + 1; // packet filter 1 + one octet for tftOperationCode, eBit and noOfPktFilter + v_PacketFilterList := {v_PacketFilter1ByRef}; + } + case (3) { // @sic R5-132085 sic@ + f_Get_508_PacketFilter(v_PacketFilter1ByRef, v_PacketFilterLen1ByRef, 5, p_EPS_BearerId, v_PdnTypeValue, p_PdnIndex); // get packet filter #3 acc. to 36.508 Table 6.6.2-4 @sic R5s130495 sic@ + + v_IeLength := v_PacketFilterLen1ByRef + 1; // packet filter 1 + one octet for tftOperationCode, eBit and noOfPktFilter + v_PacketFilterList := {v_PacketFilter1ByRef}; + } + case (4) { // @sic R5-132085 sic@ + f_Get_508_PacketFilter(v_PacketFilter1ByRef, v_PacketFilterLen1ByRef, 4, p_EPS_BearerId, v_PdnTypeValue, p_PdnIndex); // get packet filter #4 acc. to 36.508 Table 6.6.2-4 @sic R5s130495 sic@ + + v_IeLength := v_PacketFilterLen1ByRef + 1; // packet filter 1 + one octet for tftOperationCode, eBit and noOfPktFilter + v_PacketFilterList := {v_PacketFilter1ByRef}; + } + case else { + FatalError(__FILE__, __LINE__, "invalid bearer context"); + } + } + return cs_TrafficFlowTemplate(v_IeLength, v_PacketFilterList); + } + + /* + * @desc Create template to modify TrafficFlowTemplate + * @param p_EPS_BearerId + * @param p_PdnTypeValue (default value: omit) + * @return template (value) TrafficFlowTemplate + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_EUTRA_Get_508_TrafficFlowTemplate_2_Modify(EPS_BearerIdentity p_EPS_BearerId, + template (omit) B3_Type p_PdnTypeValue := omit) runs on EUTRA_PTC return template (value) TrafficFlowTemplate + { /* @sic R5-112600: to replace cds_Tft_Dedicated_2_Modify sic@ */ + var template (value) TrafficFlowTemplate v_TrafficFlowTemplate := f_EUTRA_Get_508_TrafficFlowTemplate(2, p_EPS_BearerId, p_PdnTypeValue); + + v_TrafficFlowTemplate.iei := '36'O; + v_TrafficFlowTemplate.tftOperationCode := '100'B; // Replace TFT + v_TrafficFlowTemplate.packetFilterList[0].spare := '00'B; // @sic R5s130195 Baseline Moving sic@ + v_TrafficFlowTemplate.packetFilterList[0].direction := '11'B; // @sic R5s130195 Baseline Moving sic@ + v_TrafficFlowTemplate.packetFilterList[0].iei := '0'H; // @sic R5s130195 Baseline Moving sic@ + + return v_TrafficFlowTemplate; + } + + /* + * @desc Create template to add TrafficFlowTemplate + * @param p_EPS_BearerId + * @param p_PdnTypeValue (default value: omit) + * @return template (value) TrafficFlowTemplate + * @status APPROVED (LTE) + */ + function f_EUTRA_Get_508_TrafficFlowTemplate_2_Add(EPS_BearerIdentity p_EPS_BearerId, + template (omit) B3_Type p_PdnTypeValue := omit) runs on EUTRA_PTC return template (value) TrafficFlowTemplate + { /* @sic R5-112600: to replace cds_Tft_Dedicated_2_Modify sic@ */ + var template (value) TrafficFlowTemplate v_TrafficFlowTemplate := f_EUTRA_Get_508_TrafficFlowTemplate(2, p_EPS_BearerId, p_PdnTypeValue); + + v_TrafficFlowTemplate.iei := '36'O; + v_TrafficFlowTemplate.tftOperationCode := '011'B; // Add new TFT @sic R5s110008 sic@ + + return v_TrafficFlowTemplate; + } + + //============================================================================ + // Pre-/Postambles + //---------------------------------------------------------------------------- + /* + * @desc to be used in the test case preamble + * N.B. The power level used in this function is tsc_ServingCellRS_EPRE, if you need this cell to be + * set to a different level for your test, please adjust the level after this function. + * @param p_CellId + * @param p_State + * @param p_ForcedAttach (optional) + * @param p_NoOfEmergencyNumbers (default := 0) Only set this if the list of local emergency numbers should be included in Attach Accept (only for Emergency Call Tests) + * @param p_NtwkFeatSupport (default value: cs_EPS_NwkFtSup_IMSVoice) + * @param p_PDN_TypeToBeUsed (default value: pdnTypeAsSupportedByUE) @sic R5-106611 R5-120234 sic@ + * @status APPROVED (IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_Preamble(EUTRA_CellId_Type p_CellId, + IDLEUPDATED_STATE_Type p_State, + EUTRA_ATTACH_Type p_ForcedAttach := NORMAL, + integer p_NoOfEmergencyNumbers := 0, // @sic R5-115673 sic@ + template (omit) EPS_NetworkFeatureSupport p_NtwkFeatSupport := cs_EPS_NwkFtSup_IMSVoice, // @sic R5-130620 sic@ + PDN_TypeToBeUsed_Type p_PDN_TypeToBeUsed := pdnTypeAsSupportedByUE) runs on EUTRA_PTC + { /* @sic R5s130347: local GuardTimer sic@ */ + timer t_GuardTimer := tsc_GuardTimePreamble; + + t_GuardTimer.start; + + // First switch cell back on + f_EUTRA_SetCellPower(p_CellId, tsc_ServingCellRS_EPRE); + + // Switch on UE + f_EUTRA_SwitchOnUEandStartIP(p_CellId); // @sic R5s120065 sic@ + + // Now continue with the procedure + f_EUTRA_IdleUpdated(p_CellId, PREAMBLE, p_State, p_ForcedAttach, p_NoOfEmergencyNumbers, p_NtwkFeatSupport, p_PDN_TypeToBeUsed); + + t_GuardTimer.stop; + } + + //---------------------------------------------------------------------------- + /* + * @desc step 5 .. 17 of UE Registration acc. to 36.508 cl. 4.5.2 + * @param p_CellId + * @param p_State + * @param p_ForcedAttach + * @param p_NAS_Ind + * @param p_ReleaseConnection - default value is to release the connection at the end (i.e. complete step 17) @sic R5-105005 sic@ + * @param p_NoOfEmergencyNumbers (default := 0) Only set this if the list of local emergency numbers should be included in Attach Accept (only for Emergency Call Tests) + * @param p_NtwkFeatSupport (default value: cs_EPS_NwkFtSup_IMSVoice) + * @param p_PDN_TypeToBeUsed (default value: pdnTypeAsSupportedByUE) @sic R5-106611 R5-120234 sic@ + * @status APPROVED (IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_IdleUpdated_Step5_17(EUTRA_CellId_Type p_CellId, + IDLEUPDATED_STATE_Type p_State, + EUTRA_ATTACH_Type p_ForcedAttach, + NAS_MSG_Indication_Type p_NAS_Ind, + boolean p_ReleaseConnection := true, + integer p_NoOfEmergencyNumbers := 0, // @sic R5-115673 sic@ + template (omit) EPS_NetworkFeatureSupport p_NtwkFeatSupport := cs_EPS_NwkFtSup_IMSVoice, // @sic R5-130620 sic@ + PDN_TypeToBeUsed_Type p_PDN_TypeToBeUsed := pdnTypeAsSupportedByUE) runs on EUTRA_PTC // @sic R5-106611 sic@ + { /* @sic R5s100780 sic@ */ + + f_EUTRA_IdleUpdated_Step5_15(p_CellId, + p_State, + p_ForcedAttach, + p_NAS_Ind, + p_PDN_TypeToBeUsed, + -, + -, + -, + -, + p_NoOfEmergencyNumbers, // @sic R5s130681 sic@ + p_NtwkFeatSupport); // @sic R5s130681 sic@ + + f_EUTRA_IdleUpdated_Step16_17(p_CellId, + p_ReleaseConnection, + -, + p_NtwkFeatSupport); // @sic R5-144797: additional change - p_NtwkFeatSupport to be handed over sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc step 15 .. 17 of UE Registration acc. to 36.508 cl. 4.5.2 + * @param p_CellId + * @param p_ReleaseConnection (default value: true) - default value is to release the connection at the end (i.e. complete step 17) @sic R5-105005 sic@ + * @param p_WaitForIMS (default value: waitForIMS) + * @param p_NtwkFeatSupport (default value: cs_EPS_NwkFtSup_IMSVoice) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_IdleUpdated_Step16_17(EUTRA_CellId_Type p_CellId, + boolean p_ReleaseConnection := true, + EUTRA_DelayForUserPlaneSignalling_Type p_WaitForIMS := waitForIMS, + template (omit) EPS_NetworkFeatureSupport p_NtwkFeatSupport := cs_EPS_NwkFtSup_IMSVoice) runs on EUTRA_PTC // @sic R5-130620 sic@ + { /* @sic R5-112600: always delay of 1.2s (i.e. p_WaitForIMS := waitForIMS when calling f_EUTRA_NAS_AttachComplete) sic@ */ + /* @sic R5s130133 change 8: p_WaitForIMS added sic@ */ + var EPS_BearerIdentity v_EpsBearerId := f_EUTRA_InitialRegistrationEpsBearerId(firstPDN); // @sic R5-144797 sic@ + var EUTRA_DelayForUserPlaneSignalling_Type v_WaitForIMS := p_WaitForIMS; + var boolean v_IMSVoiceSupported := false; + var boolean v_SecondPdnToBeReleased := false; + var template (value) B1_Type v_IMSSupport := '0'B; + var template (value) RadioBearerList_Type v_DrbReleaseList := { cs_OneDRB_ConfigAM(tsc_DRB1) }; // @sic R5-144797 sic@ + + if (isvalue(p_NtwkFeatSupport)) { // @sic R5-130620 sic@ + v_IMSSupport := valueof(p_NtwkFeatSupport.imsVoPS); + if (match ('1'B, v_IMSSupport)) { + v_IMSVoiceSupported := true; + } + } + if (not v_IMSVoiceSupported and pc_voice_PS_1_CS_2 and pc_Attach) { // @sic R5-130620 sic@ + v_WaitForIMS := dontWaitForIMS; // @sic R5-144797: NOTE: acc. to the prose in this case there is no second PDN at all sic@ */ + } else if (tsc_EUTRA_Registration_MultiplePDN) { /* @sic R5-144797: multiple PDN sic@ */ + v_WaitForIMS := noDelay; /* In case of a second PDN connectivity request this may be sent immediately by the UE + => we cannot wait after the ATTACH_COMPLETE for any trigger from the IMS_PTC but need to do that after the second PDN connectivity is over */ + } + + f_EUTRA_NAS_AttachComplete(p_CellId, v_EpsBearerId, v_WaitForIMS); // step 16 @sic R5s110449 sic@ + + if (not v_IMSVoiceSupported and pc_voice_PS_1_CS_2 and pc_Attach) { // @sic R5-130620 sic@ + if (pc_TAU_connected_in_IMS) { // Steps 16a1-3 @sic R5-131455 sic@ + f_EUTRA_ConnectedMode_TAU(p_CellId, -, Combined, tsc_EpsUpdate_Combined_TaLaUpdate); + } + else if (pc_TAU_idle_in_IMS) { // Steps 16b1-6 @sic R5-131455 sic@ + f_EUTRA_RRC_ConnectionRelease(p_CellId); + f_EUTRA_TrackingAreaUpdate_Step1_5 (p_CellId, tsc_RRC_TI_Def, Combined, -, -, tsc_EpsUpdate_Combined_TaLaUpdate); + } + } else if (tsc_EUTRA_Registration_MultiplePDN) { // @sic R5-144797: support of multiple PDN registration sic@ + f_EUTRA_IdleUpdated_ConnectToAdditionalPDN(p_CellId, p_WaitForIMS); + v_SecondPdnToBeReleased := true; + v_DrbReleaseList[1] := cs_OneDRB_ConfigAM(f_EUTRA_EpsBearerAssociatedDRB(tsc_EpsDefaultBearerId2ndPDN)); + } + + if (p_ReleaseConnection) { // @sic R5-105005 Some tests only want to do up to step 16 sic@ + f_EUTRA_RRC_ConnectionRelease(p_CellId, -, -, -, v_DrbReleaseList); // step 17 + if (v_SecondPdnToBeReleased) { // @sic R5-144797: support of multiple PDN registration sic@ + f_EUTRA_IdleUpdated_ReleaseSecondPDN(p_CellId); + } + } + } + + //---------------------------------------------------------------------------- + /* + * @desc step 5 .. 15 of UE Registration acc. to 36.508 cl. 4.5.2 + * @param p_CellId + * @param p_State + * @param p_ForcedAttach + * @param p_NAS_Ind + * @param p_PDN_TypeToBeUsed (default value: pdnTypeAsSupportedByUE) @sic R5-106611 R5-120234 sic@ + * @param p_T3412 (default value: cs_GprsTimer_v_deact); @sic R5s100780 Default values for Attach Accept sic@ + * @param p_T3402 (default value: omit); @sic R5s100780 Default values for Attach Accept sic@ + * @param p_T3423 (default value: omit); @sic R5s100780 Default values for Attach Accept sic@ + * @param p_EquivalentPlmnList (default value: omit); @sic R5s100780 Default values for Attach Accept sic@ + * @param p_NoOfEmergencyNumbers (default value: 0); @sic R5s100780 Default values for Attach Accept sic@ + * @param p_NtwkFeatSupport (default value: cs_EPS_NwkFtSup_IMSVoice); @sic R5s100780 Default values for Attach Accept sic@ + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_IdleUpdated_Step5_15(EUTRA_CellId_Type p_CellId, + IDLEUPDATED_STATE_Type p_State, + EUTRA_ATTACH_Type p_ForcedAttach, + NAS_MSG_Indication_Type p_NAS_Ind, + PDN_TypeToBeUsed_Type p_PDN_TypeToBeUsed := pdnTypeAsSupportedByUE, + template (value) GPRS_Timer p_T3412 := cs_GprsTimer_v_deact, + template (omit) GPRS_Timer p_T3402 := omit, + template (omit) GPRS_Timer p_T3423 := omit, + template (omit) PLMN_List p_EquivalentPlmnList := omit, + integer p_NoOfEmergencyNumbers := 0, // @sic R5s130681 sic@ + template (omit) EPS_NetworkFeatureSupport p_NtwkFeatSupport := cs_EPS_NwkFtSup_IMSVoice) runs on EUTRA_PTC return APNandPCOs_Type + { /* @sic R5-110796: split into f_EUTRA_IdleUpdated_Step5_13 and f_EUTRA_IdleUpdated_Step14_15 sic@ */ + /* @sic R5s140560: return value sic@ */ + var template (omit) AdditionalUpdateType v_AdditionalUpdateType := p_NAS_Ind.Pdu.Msg.aTTACH_REQUEST.addUpdateType; /* @sic R5s110342 sic@ */ + var NAS_UL_Message_Type v_PdnConnectivityRequest := p_NAS_Ind.Pdu.PiggybackedPduList[0].Msg; + var ProcedureTransactionIdentifier v_EPS_TI := v_PdnConnectivityRequest.pDN_CONNECTIVITY_REQUEST.procedureTransactionIdentifier; + var template (value) ProtocolConfigOptions v_PcoToUE; + var template (omit) ProtocolConfigOptions v_PcoFromUE := v_PdnConnectivityRequest.pDN_CONNECTIVITY_REQUEST.protocolConfigurationOptions; // may be omit + var boolean v_IPv4AllocationViaNasFlag := f_CheckPCOforIPallocationViaNas(v_PcoFromUE); // See TS 36.508 v.8.2.2 Table 4.7.3-6 + var APNandPCOs_Type v_APNandPCOs := f_EUTRA_IdleUpdated_Step5_13(p_CellId, p_State, p_NAS_Ind); // @sic R5s130382 sic@ + var PDN_Index_Type v_PdnIndex := f_EUTRA_InitialRegistrationPdnIndex(firstPDN); // @sic R5-144797 sic@ + + if (ispresent(v_APNandPCOs.protocolConfigurationOptions)) { // @sic R5-133116 sic@ + v_PcoFromUE := v_APNandPCOs.protocolConfigurationOptions; + v_IPv4AllocationViaNasFlag := v_IPv4AllocationViaNasFlag and f_CheckPCOforIPallocationViaNas(v_PcoFromUE); + } + v_PcoToUE := f_GetDefaultProtocolConfigOptions(v_PcoFromUE, v_PdnIndex); // @sic R5-104703 sic@ + + f_EUTRA_IdleUpdated_Step14_15(p_CellId, + p_ForcedAttach, + v_AdditionalUpdateType, + v_EPS_TI, + v_IPv4AllocationViaNasFlag, + v_PcoToUE, + v_APNandPCOs.accessPointName, + p_PDN_TypeToBeUsed, + p_T3412, + p_T3402, + p_T3423, + p_EquivalentPlmnList, + p_NoOfEmergencyNumbers, + p_NtwkFeatSupport); + return v_APNandPCOs; /* @sic R5s140560 sic@ */ + } + + + /* + * @desc step 5 .. 13 of UE Registration acc. to 36.508 cl. 4.5.2 + * @param p_CellId + * @param p_State + * @param p_NAS_Ind + * @return APNandPCOs_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_IdleUpdated_Step5_13(EUTRA_CellId_Type p_CellId, + IDLEUPDATED_STATE_Type p_State, + NAS_MSG_Indication_Type p_NAS_Ind) runs on EUTRA_PTC return APNandPCOs_Type + { /* @sic R5-110796: split into f_EUTRA_IdleUpdated_Step5_13 and f_EUTRA_IdleUpdated_Step14_15 sic@ + the returned APNandPCOs_Type contains the valid APN (i.e. accessPointName is present) */ + var ProcedureTransactionIdentifier v_EPS_TI; + var NAS_UL_Message_Type v_PdnConnectivityRequest; + var template (present) SecurityHeaderType v_ExpectedSecurityHeader; // @sic R5s090373 sic@ + var NasCount_Type v_NasCountUL; + var EUTRA_SecurityParams_Type v_AuthParams := f_EUTRA_Security_Get(); + var APNandPCOs_Type v_APNandPCOs; + var GutiParameters_Type v_GutiParams := f_EUTRA_CellInfo_GetGuti(p_CellId); + var NAS_PlmnId v_PLMN := f_Asn2Nas_PlmnId (v_GutiParams.PLMN_Identity); + + // Set UE network capabilities as sent by the UE to be used later (see TS 24.301 clause 5.4.3.3) + v_AuthParams.NAS_SecurityCap := f_EUTRA_FillNAS_SecurityCapability(p_NAS_Ind.Pdu.Msg.aTTACH_REQUEST); // @sic R5s100135 sic@ + f_EUTRA_Security_Set(v_AuthParams); + + if (p_NAS_Ind.SecurityProtection.Status == tsc_SHT_NoSecurityProtection) { // @sic R5s090210, R5s090373 sic@ + v_ExpectedSecurityHeader := tsc_SHT_NoSecurityProtection; + } else { + v_ExpectedSecurityHeader := (tsc_SHT_NoSecurityProtection, tsc_SHT_IntegrityProtected); + } + + v_PdnConnectivityRequest := p_NAS_Ind.Pdu.PiggybackedPduList[0].Msg; + v_EPS_TI := v_PdnConnectivityRequest.pDN_CONNECTIVITY_REQUEST.procedureTransactionIdentifier; + + // Step 5-6: Authentication + v_AuthParams := f_EUTRA_NAS_Authentication(p_CellId, + tsc_SRB1, + v_AuthParams, + tsc_SHT_NoSecurityProtection, + v_ExpectedSecurityHeader, // @sic R5s090210, R5s090373 sic@ + v_PLMN); // AUTHENTICATION REQUEST & RESPONSE + // Step 7-8: NAS Security + v_NasCountUL := f_EUTRA_NAS_ActivateSecurity(p_CellId, v_AuthParams); // NAS SECURITY COMMAND & COMPLETE + + // Step 9a1 & 2 - ESM information optionally transferred; @sic R5-110708 sic@ + v_APNandPCOs := f_ESM_InitAPNandPCOs(p_CellId, f_CheckEsmInfoTransferFlag(v_PdnConnectivityRequest.pDN_CONNECTIVITY_REQUEST), v_EPS_TI); // @sic R5s130382 sic@ + + // optional + if (p_State == STATE2A_TESTLOOP_ModeA) { + f_EUTRA_Activate_TestMode (p_CellId, tsc_UE_TestLoopMode_TypeA); + } + else if (p_State == STATE2A_TESTLOOP_ModeB) { + f_EUTRA_Activate_TestMode (p_CellId, tsc_UE_TestLoopMode_TypeB); + } + else if (p_State == STATE2A_TESTLOOP_ModeC) { + f_EUTRA_Activate_TestMode (p_CellId, tsc_UE_TestLoopMode_TypeC); //@sic eMBMS sic@ + } + + // Step 10-11: RRC Security Mode procedures + v_AuthParams := f_EUTRA_RRC_ActivateSecurity(p_CellId, v_AuthParams, v_NasCountUL); // RRC SECURITY COMMAND & COMPLETE + f_EUTRA_Security_Set(v_AuthParams); //Saving security parameters + + // Step 12-13 UE Capability check + f_EUTRA_Capability(p_CellId, tsc_RRC_TI_Def); // This enquires for the eutra capability but does not check the contents of the message received + + return v_APNandPCOs; + } + + /* + * @desc step 14 and 15 of UE Registration acc. to 36.508 cl. 4.5.2 + * @param p_CellId + * @param p_ForcedAttach + * @param p_AdditionalUpdateType + * @param p_EPS_TI + * @param p_IPv4AllocationViaNasFlag + * @param p_PcoToUE + * @param p_APN + * @param p_PDN_TypeToBeUsed (default value: pdnTypeAsSupportedByUE) + * @param p_T3412 (default value: cs_GprsTimer_v_deact + * @param p_T3402 (default value: omit) + * @param p_T3423 (default value: omit) + * @param p_EquivalentPlmnList (default value: omit) + * @param p_NoOfEmergencyNumbers (default value: 0) + * @param p_NtwkFeatSupport (default value: cs_EPS_NwkFtSup_IMSVoice) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_IdleUpdated_Step14_15(EUTRA_CellId_Type p_CellId, + EUTRA_ATTACH_Type p_ForcedAttach, + template (omit) AdditionalUpdateType p_AdditionalUpdateType, + ProcedureTransactionIdentifier p_EPS_TI, + boolean p_IPv4AllocationViaNasFlag, + template (omit) ProtocolConfigOptions p_PcoToUE, + AccessPointName p_APN, + PDN_TypeToBeUsed_Type p_PDN_TypeToBeUsed := pdnTypeAsSupportedByUE, + template (value) GPRS_Timer p_T3412 := cs_GprsTimer_v_deact, + template (omit) GPRS_Timer p_T3402 := omit, + template (omit) GPRS_Timer p_T3423 := omit, + template (omit) PLMN_List p_EquivalentPlmnList := omit, + integer p_NoOfEmergencyNumbers := 0, // @sic R5-115673 sic@ + template (omit) EPS_NetworkFeatureSupport p_NtwkFeatSupport := cs_EPS_NwkFtSup_IMSVoice) runs on EUTRA_PTC + { /* @sic R5-112600: IP address allocation sic@ */ + /* @sic R5-110796: split into f_EUTRA_IdleUpdated_Step5_13 and f_EUTRA_IdleUpdated_Step14_15 sic@ */ + /* @sic R5-120234, R5-120541, R5-120542 sic@ */ + /* @sic R5-144370, R5-144797: p_APN shall not be omit sic@ */ + var NAS_AttDetValue_Type v_AttachType := f_GetEAttachType(p_ForcedAttach); // @sic R5-103673, R5s100795 sic@ + + var GutiParameters_Type v_GutiParams := f_EUTRA_CellInfo_GetGuti(p_CellId); + var template (value) MobileIdentity v_Guti := f_GutiParameters2MobileIdentity(tsc_IEI_Guti, v_GutiParams); + var NAS_PlmnId v_PLMN := f_Asn2Nas_PlmnId (v_GutiParams.PLMN_Identity); + + var NAS_Lac v_LAC := f_EUTRA_CellInfo_GetLocationAreaCode(p_CellId); + var template (omit) LocAreaId v_LAI := f_GetLAI(v_PLMN, v_LAC, p_ForcedAttach); // @sic R5s110176 sic@ + var TrackingAreaCode v_TAC := f_EUTRA_CellInfo_GetTAC(p_CellId); + + var template (omit) EPS_NetworkFeatureSupport v_NtwkFeatSupport := p_NtwkFeatSupport; + var template (omit) EmergNumList v_EmergNumList := omit; + var template (omit) MobileIdentity v_MSId := f_GetMSId(p_ForcedAttach); // @sic R5-103673 sic@ + var PDN_Index_Type v_PdnIndex := f_EUTRA_InitialRegistrationPdnIndex(firstPDN); // @sic R5-144797 sic@ + var EPS_BearerIdentity v_EpsDefaultBearerId := f_EUTRA_InitialRegistrationEpsBearerId(firstPDN); // @sic R5-144797 sic@ + var DRB_Identity v_DrbForInternet := f_EUTRA_EpsBearerAssociatedDRB(tsc_EpsDefaultBearerId2ndPDN); + var template (omit) ESM_Cause v_ESM_Cause := omit; // @sic R5s120136 sic@ + var template (value) PDN_Address v_PDN_Address; + var EmergencyNumList v_EmergencyNumList; + + var BEARER_CONTEXT_TYPE v_BearerContextNumber := DEF_1; + + + if (pc_IPv6 and pc_IPv4) { /* @sic R5-120234, R5-120541, R5-120542 sic@ */ + select (p_PDN_TypeToBeUsed) { + case (forceIPv4only) { v_ESM_Cause := cs_ESM_Cause_tv('00110010'B); } // PDN type IPv4 only allowed + case (forceIPv6only) { v_ESM_Cause := cs_ESM_Cause_tv('00110011'B); } // PDN type IPv6 only allowed + case (pdnTypeAsSupportedByUE) { v_ESM_Cause := omit; } + } + } + + // @sic R5s130681 sic@ + select (f_GetTestcaseAttrib_Eutra_Release(testcasename())) { // @sic R5s130508 sic@ + case ("","rel_10") { // rel8 or rel-10 - 36.508 just says rel-9 + } + case ("rel_9") { + v_NtwkFeatSupport.imsVoPS := '1'B; // @sic R5s130902 sic@ + v_NtwkFeatSupport.emcBS := '1'B; // @sic R5s130977 sic@ + } + case else {} + } + + if (p_NoOfEmergencyNumbers > 0) { + v_EmergencyNumList := f_Get_EmergencyNumList (p_NoOfEmergencyNumbers, f_UT_GetEmergencyNumbers(UT)); + f_EUTRA_MobileInfo_SetLocalEmergencyNumberList (v_EmergencyNumList); // save the list of locally usable emergency numbers + v_EmergNumList := f_Build_EmergNumList(p_NoOfEmergencyNumbers, v_EmergencyNumList); + } + if (not tsc_EUTRA_Registration_PDN1isIMS) { // @sic R5-144797 sic@ + v_BearerContextNumber := DEF_2; + } + if (tsc_EUTRA_Registration_MultiplePDN) { /* @sic R5-144797 sic@ */ + f_IP_Handling_Start(IP, PDN_Internet, cs_DrbInfo_EUTRA(p_CellId, v_DrbForInternet)); + f_EUTRA_SS_CommonRadioBearerConfig_SingleDRB(p_CellId, cs_OneDRB_ConfigAM(v_DrbForInternet)); + } + + v_PDN_Address := f_EUTRA_GetPDNAddress(p_IPv4AllocationViaNasFlag, v_PdnIndex, p_PDN_TypeToBeUsed); + + f_EUTRA_RRCConnectionReconfigurationWithAttachAcceptAllParams(p_CellId, + v_EpsDefaultBearerId, // @sic R5-144797 sic@ + tsc_RRC_TI_Def, + p_EPS_TI, + v_AttachType, + v_PDN_Address, + v_Guti, + cs_TAIListNonConsecutive_lv(v_PLMN, {bit2oct(v_TAC)}), + v_LAI, + v_MSId, + v_ESM_Cause, // @sic R5-104703 sic@ + p_APN, + p_PcoToUE, + f_GetAdditionalUpdateResult(p_AdditionalUpdateType, p_ForcedAttach), // @sic R5s110176 sic@ + p_T3412, + p_T3402, + p_T3423, + p_EquivalentPlmnList, + v_EmergNumList, // @sic R5s130681 sic@ + v_NtwkFeatSupport, // @sic R5s130681 sic@ + -, + -, + v_BearerContextNumber); // @sic R5-144797 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc UE Registration steps 1 - 4 acc. to 36.508 cl. 4.5.2 + * @param p_CellId + * @param p_Type + * @param p_ForcedAttach + * @return NAS_MSG_Indication_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_IdleUpdated_Step1_4(EUTRA_CellId_Type p_CellId, + IDLEUPDATED_Type p_Type, + EUTRA_ATTACH_Type p_ForcedAttach) runs on EUTRA_PTC return NAS_MSG_Indication_Type + { /* @sic R5s100780 sic@ */ + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var NAS_AttDetValue_Type v_AttachType := f_GetEAttachType(p_ForcedAttach); // @sic R5s110176 sic@ + var B3_Type v_PDNType := f_GetPdnType(); + var NAS_MSG_Indication_Type v_NAS_Ind; + var template (present) NAS_UL_Message_Type v_AttachReq; + var template AdditionalUpdateType v_AdditionalUpdateType := f_GetAdditionalUpdateType (p_ForcedAttach); //used to follow TTCN3 v411 standard @sic R5s110176 sic@ + var template (present) SecurityHeaderType v_AttReqSecurityHeader; + + if (p_Type == PREAMBLE) + { + v_AttReqSecurityHeader := (tsc_SHT_NoSecurityProtection, tsc_SHT_IntegrityProtected); + } + else + { + v_AttReqSecurityHeader := tsc_SHT_IntegrityProtected; + } + + if (f_GetTestcaseAttrib_Eutra_SRVCC(testcasename())) { // @sic R5-142882 sic@ + v_AttachReq := cdr_ATTACH_REQUEST_SRVCC(v_AttachType, v_AdditionalUpdateType); // @sic R5-103681, R5s140074, R5-142882 sic@ + } else { + v_AttachReq := cr_508_ATTACH_REQUEST(v_AttachType, v_AdditionalUpdateType); // @sic R5-103681 sic@ + } + // Receive RRC Connection Setup Complete with + v_NAS_Ind := f_EUTRA_RRC_ConnEst_DefWithNas(p_CellId, + v_RRC_TI, + cr_EstablishmentCause_Any, + cr_NAS_IndicationWithPiggybacking(v_AttReqSecurityHeader, + v_AttachReq, + cr_508_PDN_CONNECTIVITY_REQUEST(tsc_PdnRequest_InitialAttach, v_PDNType))); + + return v_NAS_Ind; + } + + //---------------------------------------------------------------------------- + /* + * @desc UE Registration acc. to 36.508 cl. 4.5.2 + * @param p_CellId + * @param p_Type + * @param p_State + * @param p_ForcedAttach (optional) + * @param p_NoOfEmergencyNumbers (default := 0) Only set this if the list of local emergency numbers should be included in Attach Accept (only for Emergency Call Tests) + * @param p_NtwkFeatSupport (default value: cs_EPS_NwkFtSup_IMSVoice) + * @param p_PDN_TypeToBeUsed (default value: pdnTypeAsSupportedByUE) @sic R5-106611 R5-120234 sic@ + * @status APPROVED (IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_IdleUpdated(EUTRA_CellId_Type p_CellId, + IDLEUPDATED_Type p_Type, + IDLEUPDATED_STATE_Type p_State, + EUTRA_ATTACH_Type p_ForcedAttach, + integer p_NoOfEmergencyNumbers := 0, // @sic R5-115673 sic@ + template (omit) EPS_NetworkFeatureSupport p_NtwkFeatSupport := cs_EPS_NwkFtSup_IMSVoice, // @sic R5-130620 sic@ + PDN_TypeToBeUsed_Type p_PDN_TypeToBeUsed := pdnTypeAsSupportedByUE) runs on EUTRA_PTC + { /* @sic R5-106611 sic@ */ + var NAS_MSG_Indication_Type v_NAS_Ind; + + v_NAS_Ind := f_EUTRA_IdleUpdated_Step1_4 (p_CellId, p_Type, p_ForcedAttach); // @sic R5s100780, R5s110176 sic@ + + f_EUTRA_IdleUpdated_Step5_17 (p_CellId, p_State, p_ForcedAttach, v_NAS_Ind, true, p_NoOfEmergencyNumbers, p_NtwkFeatSupport, p_PDN_TypeToBeUsed); + } + + //---------------------------------------------------------------------------- + /* + * @desc This function should be used at the end of every test case to ensure the UE + * detaches and release the RRC connection as it is turned off and only then will it + * take down the cell the UE is currently camped on + * @param p_CellId + * @param p_E_State values: E1_IDLE, E2_CONNECTED, E3_TESTMODE, E4_DEREGISTERED + * @param p_ForcedAttach (default value: NORMAL) + * @param p_RRC_TI (default value: tsc_RRC_TI_Def) + * @param p_SelectedPlmnId (default value: 1) .. selectedPLMN-Identity as used in RRCConnectionSetupComplete (starting with 1) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_Postamble(EUTRA_CellId_Type p_CellId, + EUTRA_POSTAMBLE_STATE_Type p_E_State, + EUTRA_ATTACH_Type p_ForcedAttach := NORMAL, + RRC_TransactionIdentifier p_RRC_TI := tsc_RRC_TI_Def, + integer p_SelectedPlmnId := 1) runs on EUTRA_PTC + { /* @sic This function has been completely changed in R5-103847 sic@ */ + // @sic R5s11046: new parameter p_SelectedPlmnId sic@ + if (pc_SwitchOnOff) // The UE can actually be switched off + { + select (p_E_State) { + case (E1_IDLE) + { + //Expect the UE to detach and release RRC connection + f_EUTRA_UE_Detach_SwitchOffUe(p_CellId, RRC_IDLE, p_RRC_TI, p_ForcedAttach, omit, p_SelectedPlmnId); // @sic R5s110176, R5s110468 sic@ + } + case (E2_CONNECTED, E3_TESTMODE) + { + //Expect the UE to detach and release RRC connection + f_EUTRA_UE_Detach_SwitchOffUe(p_CellId, RRC_CONNECTED, p_RRC_TI, p_ForcedAttach, omit, p_SelectedPlmnId); // @sic R5s110176, R5s110468 sic@ + } + case (E2_T3440) // @sic R5s110007 sic@ + { + //Expect the UE to release RRC connection + f_EUTRA_RRC_ConnectionRelease(p_CellId); + f_Delay (5.0); // @sic R5-110803 sic@ + //Expect the UE to detach and release RRC connection + f_EUTRA_UE_Detach_SwitchOffUe(p_CellId, RRC_IDLE, p_RRC_TI, p_ForcedAttach, omit, p_SelectedPlmnId); // @sic R5s110176, R5s110468 sic@ + } + case (E4_DEREGISTERED) + { + f_UT_SwitchOffUE (UT, false); + } + } + } + else + {// The power must be removed from the UE + f_UT_PowerOffUE (UT); + } + //And now remove the cell(s) + f_EUTRA_ReleaseAllCells(); + + } // end of f_EUTRA_Postamble + + //---------------------------------------------------------------------------- + /* + * @desc Generic Radio Bearer Establishment (State 3) + * If no Dedicated bearers are required, set p_NoOfAddDRBs_AM and p_NoOfAddDRBs_UM to 0 and p_QoS and p_Tft to omit + * Otherwise, at least 1 AM DRB will be configured + * @param p_CellId + * @param p_NoOfAddDRBs_AM + * @param p_NoOfAddDRBs_UM + * @param p_DRB_ToAddModList (default value: omit) + * p_NoOfAddDRBs_AM+p_NoOfAddDRBs_UM+1 elements or omit; + * omit => default setting acc. 36.508 cl. 4.8.2.1.7 + * @param p_MAC_MainConfig (default value: omit) + * omit => default setting acc. 36.508 cl. 4.8.2.1.5 + * @param p_PhysicalConfigDedicated (default value: omit) + * omit => default setting acc. 36.508 4.8.2.1.6 + * @param p_QoS (default value: omit) + * @param p_Tft (default value: omit) + * @param p_PDCP_StatusReportRequired (default value: true) + * @param p_RLF_TimersAndConstants_r9 (default value: omit) + * @param p_DownlinkAntennaGroupConfig (default value: omit) + * @param p_DrbFor2ndPDN (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_GenericRbEst_Common(EUTRA_CellId_Type p_CellId, + integer p_NoOfAddDRBs_AM, + integer p_NoOfAddDRBs_UM, + template (omit) DRB_ToAddModList p_DRB_ToAddModList := omit, + template (omit) MAC_MainConfig_Type p_MAC_MainConfig := omit, + template (omit) PhysicalConfigDedicated p_PhysicalConfigDedicated := omit, + template (omit) EPS_QoSList_Type p_QoS := omit, + template (omit) Tft_List_Type p_Tft := omit, + boolean p_PDCP_StatusReportRequired := true, + template (omit) RLF_TimersAndConstants_r9 p_RLF_TimersAndConstants_r9 := omit, + template (omit) DownlinkAntennaGroupConfig_Type p_DownlinkAntennaGroupConfig := omit, + template (omit) DRB_Identity p_DrbFor2ndPDN := omit) + runs on EUTRA_PTC + { /* @sic R5s130703 additional change: parameters p_DRB_ToAddModList, p_MAC_MainConfig, p_PhysicalConfigDedicated, p_QoS, p_Tft made optional sic@ */ + /* @sic R5-144797: new parameter p_DrbFor2ndPDN sic@ */ + var GutiParameters_Type v_GutiParameters := f_EUTRA_CellInfo_GetGuti(p_CellId); + + /* Step 2 */ + f_EUTRA_UE_Page(p_CellId, + cs_NasPaging_OneRecord(cs_PagingUE_Identity_S_TMSI(v_GutiParameters.MME_Code, v_GutiParameters.M_TMSI))); //@sic R5s100398 sic@ + + // Steps 3 - 10 + f_EUTRA_ServiceRequestAndActivate_SRB2_DRB(p_CellId, + p_NoOfAddDRBs_AM, + p_NoOfAddDRBs_UM, + p_DRB_ToAddModList, + p_MAC_MainConfig, + p_PhysicalConfigDedicated, + p_QoS, + p_Tft, + p_PDCP_StatusReportRequired, + -, + p_RLF_TimersAndConstants_r9, // @sic R5s120808 sic@ + p_DownlinkAntennaGroupConfig, + p_DrbFor2ndPDN); + } + + //------------------------------------ + /* + * @desc Generic Radio Bearer Establishment (State 3) with exception that Time alignment timer is set to infinity + * @param p_CellId + * @status APPROVED (LTE) + */ + function f_EUTRA_GenericRbEst_TAInfinity(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { + var template (omit) DRB_ToAddModList v_DRB_ToAddModList := omit; // => apply default setting acc. 36.508 cl. 4.8.2.1.7 */ + var template (omit) MAC_MainConfig_Type v_MAC_MainConfig := cs_MAC_MainConfig_Explicit_TA_Infinity; // => apply MAC_Mainconfig_with_TAInfinity + var template (omit) PhysicalConfigDedicated v_PhysicalConfigDedicated := omit; // => apply default setting acc. 36.508 cl. 4.8.2.1.6 */ + + f_EUTRA_GenericRbEst_Common(p_CellId, + 0, + 0, + v_DRB_ToAddModList, + v_MAC_MainConfig, + v_PhysicalConfigDedicated); + } + + //------------------------------------ + /* + * @desc common generic function + * @param p_CellId + * @param p_NoOfAddDRBs_AM + * @param p_NoOfAddDRBs_UM + * @param p_QoS + * @param p_Tft + * @param p_RLF_TimersAndConstants_r9 (default value: omit) + * @status APPROVED (IMS, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_GenericRbEst(EUTRA_CellId_Type p_CellId, + integer p_NoOfAddDRBs_AM, + integer p_NoOfAddDRBs_UM, + template (omit) EPS_QoSList_Type p_QoS, + template (omit) Tft_List_Type p_Tft, + template (omit) RLF_TimersAndConstants_r9 p_RLF_TimersAndConstants_r9 := omit) runs on EUTRA_PTC + { + var template (omit) DRB_ToAddModList v_DRB_ToAddModList := omit; // => apply default setting acc. 36.508 cl. 4.8.2.1.7 */ + var template (omit) MAC_MainConfig_Type v_MAC_MainConfig := omit; // => apply default setting acc. 36.508 cl. 4.8.2.1.5 */ + var template (omit) PhysicalConfigDedicated v_PhysicalConfigDedicated := omit; // => apply default setting acc. 36.508 cl. 4.8.2.1.6 */ + f_EUTRA_GenericRbEst_Common(p_CellId, + p_NoOfAddDRBs_AM, + p_NoOfAddDRBs_UM, + v_DRB_ToAddModList, + v_MAC_MainConfig, + v_PhysicalConfigDedicated, + p_QoS, + p_Tft, + -, + p_RLF_TimersAndConstants_r9); // @sic R5s120808 sic@ + } + + //------------------------------------ + // wrapper functions + /* + * @desc no additional bearer will be configured + * @param p_CellId + * @param p_RLF_TimersAndConstants_r9 (default value: omit) + * @status APPROVED (IMS, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_RbEst_Def(EUTRA_CellId_Type p_CellId, + template (omit) RLF_TimersAndConstants_r9 p_RLF_TimersAndConstants_r9 := omit) runs on EUTRA_PTC + { + f_EUTRA_GenericRbEst(p_CellId, 0, 0, omit, omit, p_RLF_TimersAndConstants_r9); // @sic R5s120808 sic@ + } + + //------------------------------------ + /* + * @desc Steps 6-9 of 4.5.3.3 will be performed as a postamble, and no dedicated bearers will be activated + * @param p_CellId + * @param p_NAS_Ind + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_ServiceReqPostamble_508Steps6_9(EUTRA_CellId_Type p_CellId, + NAS_MSG_Indication_Type p_NAS_Ind) runs on EUTRA_PTC + { + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + + f_EUTRA_Activate_SRB2_DRB_SendRrcMsg(p_CellId, v_RRC_TI, p_NAS_Ind.SecurityProtection.NasCount); /* @sic R5s100315 sic@ */ + f_EUTRA_Activate_SRB2_DRB_ReceiveRrcAndNasMsg(p_CellId, v_RRC_TI); /* @sic R5s100315 sic@ */ + } + + //------------------------------------ + /* + * @desc additional UM bearer will be established + * @param p_CellId + * @status (APPROVED) + */ + function f_EUTRA_RbEst_508_UM(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { + var template (value) EPS_QoSList_Type v_Qos_List := {cs_508_EPS_QoS_Dedicated_1}; + var template (value) Tft_List_Type v_Tft_List := {f_EUTRA_Get_508_TrafficFlowTemplate(1, tsc_EpsDedicatedBearerId)}; + f_EUTRA_GenericRbEst(p_CellId, 0, 1, v_Qos_List, v_Tft_List); + } + + //------------------------------------ + /* + * @desc additional AM bearer will be established + * @param p_CellId + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_EUTRA_RbEst_508_AM(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { + var template (value) EPS_QoSList_Type v_Qos_List := {cs_508_EPS_QoS_Dedicated_1}; + var template (value) Tft_List_Type v_Tft_List := {f_EUTRA_Get_508_TrafficFlowTemplate(1, tsc_EpsDedicatedBearerId)}; + f_EUTRA_GenericRbEst(p_CellId, 1, 0, v_Qos_List, v_Tft_List); + } + + //---------------------------------------------------------------------------- + /* + * @desc Brings UE to state 4, with default DRB (AM) and an additional AM bearer being established; + * SRBs and the default bearer are expected to be established at the SS beforehand; + * Put UE in Loop Back Mode A. + * Configures SS in normal mode + * @param p_CellId + * @param p_UE_TestLoopModeA_LB_Setup + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_LoopBackActivation_State4_Def(EUTRA_CellId_Type p_CellId, + template (value) UE_TestLoopModeA_LB_Setup_Type p_UE_TestLoopModeA_LB_Setup) runs on EUTRA_PTC + { + f_EUTRA_RbEst_Def(p_CellId); // bring UE to State 3 + f_EUTRA_CloseUE_TestLoopModeA(p_CellId, p_UE_TestLoopModeA_LB_Setup); // Step 1-2 + } + + //------------------------------------ + function f_EUTRA_LoopBackActivation_State4_508_UM(EUTRA_CellId_Type p_CellId, + template (value) UE_TestLoopModeA_LB_Setup_Type p_UE_TestLoopModeA_LB_Setup) runs on EUTRA_PTC + { /* Brings UE to state 4, with default DRB (AM) and an additional UM bearer being established; + SRBs and DRBs are expected to be established at the SS beforehand; + Put UE in Loop Back Mode A. + Configures SS in normal mode */ + f_EUTRA_RbEst_508_UM(p_CellId); // bring UE to State 3 + f_EUTRA_CloseUE_TestLoopModeA(p_CellId, p_UE_TestLoopModeA_LB_Setup); // Step 1-2 + } + + //------------------------------------ + function f_EUTRA_LoopBackActivation_State4_508_AM(EUTRA_CellId_Type p_CellId, + template (value) UE_TestLoopModeA_LB_Setup_Type p_UE_TestLoopModeA_LB_Setup) runs on EUTRA_PTC + { /* Brings UE to state 4, with default DRB (AM) and an additional AM bearer being established; + SRBs and DRBs are expected to be established at the SS beforehand; + Put UE in Loop Back Mode A. + Configures SS in normal mode */ + f_EUTRA_RbEst_508_AM(p_CellId); // bring UE to State 3 + f_EUTRA_CloseUE_TestLoopModeA(p_CellId, p_UE_TestLoopModeA_LB_Setup); // Step 1-2 + } + + //**************************************************************************** + // Check functions acc. to TS 36.508 + //---------------------------------------------------------------------------- + + group Checkfunctions { + + /* + * @desc Test procedure to check Idle state, see TS 36.508 clause 6.4.2.2 + * @param p_CellId + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_508Check_IdleState(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { + // Step 1- 10 this is the same as the generic bearer establishment procedure, but without configuring any additional bearers @sic R5-102082 sic@ + f_EUTRA_RbEst_Def(p_CellId); + + f_EUTRA_RRC_ConnectionRelease(p_CellId); + f_EUTRA_PreliminaryPass (__FILE__, __LINE__, "508Check IdleState"); + } // f_EUTRA_508Check_IdleState + + /* + * @desc Test procedure to check Connected state, see TS 36.508 clause 6.4.2.3 + * @param p_CellId + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_508Check_ConnectedState(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now) runs on EUTRA_PTC + { /* @sic R5s110219 change 4 sic@ */ + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + + SRB.send(cas_SRB1_RrcPdu_REQ( p_CellId, + p_TimingInfo, + cs_508_UeCapabilityEnquiry(v_RRC_TI))); + + SRB.receive(car_SRB1_RrcPdu_IND(p_CellId, cr_508_UeCapabilityInformation(v_RRC_TI, cr_EutraCapInfo))); + + f_EUTRA_PreliminaryPass (__FILE__, __LINE__, "508Check ConnectedState"); + } + + /* + * @desc Test procedure to check that UE is camped on a new E-UTRAN cell, see TS 36.508 clause 6.4.2.7 + * @param p_CellId + * @param p_RRC_TI (default value: tsc_RRC_TI_Def) + * @param p_EstablishmentCause (default value: ?) + * @status APPROVED (LTE) + */ + function f_EUTRA_508CheckCampOnNewEutraCell(EUTRA_CellId_Type p_CellId, + RRC_TransactionIdentifier p_RRC_TI := tsc_RRC_TI_Def, + template (present) EstablishmentCause p_EstablishmentCause := ? //@sic R5-110062 sic@ + ) runs on EUTRA_PTC + { + /* Checks whether the UE is camping on a new E-UTRAN cell with different TAI of a test case or not. + Procedure is defined in 36.508 cl. 6.4.2.7*/ + f_EUTRA_TrackingAreaUpdate(p_CellId, p_RRC_TI, -, p_EstablishmentCause); //@sic R5-110062 sic@ + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "508Check CampOnNewEutraCell"); + } + + /* + * @desc Test procedure to check that UE is camped on a new E-UTRAN cell, see TS 36.508 clause 6.4.2.7A; @sic R5-110746 sic@ + * @param p_CellId + * @param p_CSInOtherRAT Set to true if the UE has done either an LAU or Combined RAU in the other RAT + * @param p_PDPContext Set to true if UE has earlier established PDP context on other RAT + * @param p_PreambleOnLTE Set to true if UE performed the preamble on the LTE cell (and so configured the default bearer) + * @param p_EUTRA_Cap + * @param p_ForcedAttach + * @param p_RRC_TI (default value: tsc_RRC_TI_Def) + * @status APPROVED (LTE_IRAT) + */ + function f_EUTRA_508CheckCampOnNewEutraCellUponMobilityFromAnotherRAT(EUTRA_CellId_Type p_CellId, + boolean p_CSInOtherRAT, + boolean p_PDPContext, + boolean p_PreambleOnLTE, + template (omit) octetstring p_EUTRA_Cap, // @sic R5-123734 sic@ + EUTRA_ATTACH_Type p_ForcedAttach, + RRC_TransactionIdentifier p_RRC_TI := tsc_RRC_TI_Def) runs on EUTRA_PTC + { /* Checks whether the UE is camping on a new E-UTRAN cell with different TAI of a test case or not. + Procedure is defined in 36.508 cl. 6.4.2.7A */ + // @sic CR R5-102241 sic@ + f_EUTRA_TrackingAreaUpdateFromAnotherRAT(p_CellId, p_RRC_TI, p_CSInOtherRAT, p_PDPContext, p_PreambleOnLTE, p_EUTRA_Cap, -, p_ForcedAttach); // @sic R5s110176, R5-135074, R5-140325 sic@ + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "508Check CampOnNewEutraCellUponMobilityfromAnotherRAT"); + } + + + //---------------------------------------------------------------------------- + } // end of group Checkfunctions + /* + * @desc To trigger the UE to establish a Dedicated EPS bearer context + * see 36.508 clause 6.4.3.1 + * @param p_CellId + * @param p_RRCState + * @param p_EpsBearerId .. Identity of the Dedicated Bearer that will be configured + * @status + * + */ + function f_EUTRA_508_EstablishDedicatedEPSContext(EUTRA_CellId_Type p_CellId, + EUTRA_RRC_STATE_Type p_RRCState, + EPS_BearerIdentity p_EpsBearerId := tsc_EpsDedicatedBearerId) runs on EUTRA_PTC + { + var BEARER_RESOURCE_ALLOCATION_REQUEST v_BEARER_RESOURCE_ALLOCATION_Req; + var ProcedureTransactionIdentifier v_EpsTi := tsc_PTI_Unassigned; + var NAS_MSG_Indication_Type v_NasInd; + var NasCount_Type v_NasCountUL; + var EUTRA_SecurityParams_Type v_SecurityParams := f_EUTRA_Security_Get(); + var template (value) EUTRA_FDD_TDD_CellInfo_Type v_EUTRA_FDD_TDD_Info := f_EUTRA_CellInfo_GetFDD_TDD_Info (p_CellId); //Get FDD or TDD mode from Cell-configuration + + // Cause the UE to request bearer resource allocation of + // dedicated EPS bearer associated with first PDN connectivity + f_UT_RequestActivateDedicatedBearer(UT, + hex2int(p_EpsBearerId), + hex2int(tsc_EpsDefaultBearerId), + cs_508_EPS_QoS_Dedicated_1, + f_EUTRA_Get_508_TrafficFlowTemplate(1, p_EpsBearerId)); + + if (p_RRCState == RRC_IDLE) { + // UE is in RRC Idle mode + // Steps 2a1 to 2a7 + v_NasInd := f_EUTRA_RRC_ConnEst_DefWithNas(p_CellId, + tsc_RRC_TI_Def, + ?, // @sic R5s100326 sic@ + cr_NAS_Indication (tsc_SHT_IntegrityProtected, + cr_508_SERVICE_REQUEST(f_EUTRA_SecurityKSIasme_Get()))); + + // activate security in AS with parameters from AKA performed in preamble + v_NasCountUL := v_NasInd.SecurityProtection.NasCount; + v_SecurityParams := f_EUTRA_Authentication_InitAS(v_SecurityParams, v_NasCountUL); + v_SecurityParams := f_EUTRA_RRC_ActivateSecurity(p_CellId, + v_SecurityParams, + v_NasCountUL); + f_EUTRA_Security_Set(v_SecurityParams); + + SRB.send(cas_SRB1_RrcPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_RRCConnectionReconfiguration_Common(tsc_RRC_TI_Def, + omit, + omit, + cs_508_RadioResourceConfigDedicated_SRB2( {cs_508_DRB_ToAddMod_DEFAULT_AM (tsc_DRB1)}, + cs_508_MAC_MainConfig_Explicit_RBC_DrxL, + cs_508_PhysicalConfigDedicated_Default_RBC(v_EUTRA_FDD_TDD_Info.cqi_ReportConfig, + v_EUTRA_FDD_TDD_Info.soundingRS_UL_Config, + f_EUTRA_CellInfo_GetAntennaInfoDedicated (p_CellId))), + omit))); + + // receive RRCConnectionReconfigurationComplete + SRB.receive(car_SRB1_RrcPdu_IND(p_CellId, + cr_508_RRCConnectionReconfigurationComplete(tsc_RRC_TI_Def))); + + } // end of if RRC_Idle + // UE is now in RRC connected mode + + // Step 3. The UE transmits a BEARER RESOURCE ALLOCATION REQUEST message + SRB.receive(car_SRB2_NasPdu_IND(p_CellId, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_BearerResourceAllocReq(?, + tsc_EpsDefaultBearerId)))); + + // store PTI received + v_BEARER_RESOURCE_ALLOCATION_Req := v_NasInd.Pdu.Msg.bEARER_RESOURCE_ALLOCATION_REQUEST; + v_EpsTi := v_BEARER_RESOURCE_ALLOCATION_Req.procedureTransactionIdentifier; + // The SS transmits an ACTIVATE DEDICATED EPS BEARER CONTEXT REQUEST message. + f_EUTRA_TxDedicatedEpsBearerCtxtReq(p_CellId, + tsc_DRB2, + p_EpsBearerId, + v_EpsTi, + cs_LinkedId(hex2bit( tsc_EpsDefaultBearerId)), + cs_508_EPS_QoS_Dedicated_1, + f_EUTRA_Get_508_TrafficFlowTemplate(1, p_EpsBearerId)); + + + //The UE transmits an ACTIVATE DEDICATED EPS BEARER CONTEXT ACCEPT message + SRB.receive(car_SRB2_NasPdu_IND(p_CellId, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_ActDedicatedEPSBearerCxtAccept(p_EpsBearerId)))); + } + + + //---------------------------------------------------------------------------- + /* + * @desc Tracking area update upon mobility from another RAT + * this function does not receive the RRC Connection Request message + * @param p_CellId + * @param p_RRC_TI + * @param p_CSInOtherRAT Set to true if the UE has done either an LAU or Combined RAU in the other RAT + * @param p_PDPContext Set to true if UE has earlier established PDP context on other RAT + * @param p_PreambleOnLTE Set to true if UE performed the preamble on the LTE cell (and so configured the default bearer) + * @param p_EUTRA_Cap + * @param p_ReleaseRequired (default value: true) Set to false if you don't want the RRC connection to be released at the end of the function + * @param p_ForcedAttach (default value: NORMAL) + * @return template (omit) NasCount_Type @sic R5s120774, R5s120944 sic@ + * @status APPROVED (LTE_IRAT) + */ + function f_EUTRA_TrackingAreaUpdateFromAnotherRAT_WithoutRRCConneReq(EUTRA_CellId_Type p_CellId, + RRC_TransactionIdentifier p_RRC_TI, + boolean p_CSInOtherRAT, + boolean p_PDPContext, + boolean p_PreambleOnLTE, + template (omit) octetstring p_EUTRA_Cap, // @sic R5-123734 sic@ + boolean p_ReleaseRequired := true, + EUTRA_ATTACH_Type p_ForcedAttach := NORMAL) runs on EUTRA_PTC return template (omit) NasCount_Type + { /* @sic R5s120027 Additional Changes sic@ */ + var NAS_MSG_Indication_Type v_NasInd; + var EUTRA_SecurityParams_Type v_SecurityParams := f_EUTRA_Security_Get(); + var template (omit) NasCount_Type v_NasCountUL := omit; // @sic R5s120944 sic@ + var NasCountInfo_Type v_NasCountInfo; + var SRB_COMMON_IND v_ReceivedAsp; + var GutiParameters_Type v_GutiParams:= f_EUTRA_CellInfo_GetGuti(p_CellId); + var B3_Type v_EpsUpdate_Result := f_GetEPSTAUType(p_ForcedAttach); // @sic R5s100029, R5s110176 sic@ + var template (present) B3_Type v_EpsUpdate_TypeValue := v_EpsUpdate_Result; // To be used in Request message + var template (present) EPS_BearerContextStatus v_EPS_ContextStatus_Rx := cr_508_EPS_BearerContextStatusTAUReq; // @sic R5s100608, R5-110746 sic@ + var template (omit) EPS_BearerContextStatus v_EPS_ContextStatus_Tx; + var template (present) NAS_AttDetValue_Type v_AttachType := f_GetEAttachType(p_ForcedAttach); // @sic R5s110176 sic@ + var template AdditionalUpdateType v_AdditionalUpdateType_Expected := f_GetAdditionalUpdateType (p_ForcedAttach); // @sic R5s110176 sic@ + var template (present) NAS_MSG_Indication_Type v_NAS_Expected, v_TAU_Expected, v_TAU_NoProtection, v_TAU_StartInOtherRAT, v_TAU_ForcedMapped; + var boolean v_NoAuthSincePowerOn; + var template (omit) AccessStratumRelease v_Rel := omit; + var UE_EUTRA_Capability v_EUTRA_Cap; + var boolean v_Rel8_9 := false; + var template AdditionalUpdateType v_AdditionalUpdateType := f_GetAdditionalUpdateType (p_ForcedAttach); + var B3_Type v_PDNType := f_GetPdnType(); + var template CiphKeySeqNum v_CiphKeySeqNum := cr_CiphKeySeqNum('8'H, ?) ifpresent; + timer t_WaitforAttach := f_EUTRA_SetTimerToleranceMax( p_CellId, nonProtocolTimer, tsc_WaitforAttach); // @sic R5-134358 sic@ + + if (p_PreambleOnLTE) { // @sic R5-123734 sic@ + v_Rel := f_EUTRA_MobileInfo_GetUECapability_AccessStratumRelease (); + } else { + if (ispresent(p_EUTRA_Cap)) { + v_EUTRA_Cap := f_EUTRA_DecodeEutraCapMsg(valueof(p_EUTRA_Cap)); // This needs to be a template as it can be omitted + v_Rel := v_EUTRA_Cap.accessStratumRelease; + } + } + + if (not p_PDPContext and not p_PreambleOnLTE) { // no bearer has previously been established + v_EPS_ContextStatus_Rx.ebi5_7 := '000'B; // so set all bearer indications to 0 + } + + if (not match(tsc_EpsUpdate_TaUpdate, v_EpsUpdate_TypeValue)) { // TA Only; @sic R5-110746 sic@ + if (p_CSInOtherRAT) { + v_EpsUpdate_TypeValue := tsc_EpsUpdate_Combined_IMSIAttach; + } else { + v_EpsUpdate_TypeValue := (tsc_EpsUpdate_Combined_TaLaUpdate, tsc_EpsUpdate_Combined_IMSIAttach); // @sic R5s120943, R5-140325 sic@ + } + } + + // @sic R5s110168 change 8.5 sic@ + v_TAU_NoProtection := cr_NAS_Indication(tsc_SHT_NoSecurityProtection, + cr_TAU_RequestIdleMobilityDiffRAT(v_EpsUpdate_TypeValue, + '111'B, + v_EPS_ContextStatus_Rx, + v_AdditionalUpdateType_Expected, + ?, + v_CiphKeySeqNum)); + v_TAU_StartInOtherRAT := cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_TAU_RequestIdleMobilityDiffRAT(v_EpsUpdate_TypeValue, + ?, + v_EPS_ContextStatus_Rx, + v_AdditionalUpdateType_Expected, + ?, + v_CiphKeySeqNum)); + v_TAU_ForcedMapped := cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_TAU_RequestIdleMobilityDiffRAT(v_EpsUpdate_TypeValue, + f_EUTRA_SecurityKSIsgsn_Get (), + v_EPS_ContextStatus_Rx, + v_AdditionalUpdateType_Expected, + tsc_NasKsi_MappedSecurityContext, + v_CiphKeySeqNum)); + /* Step 1 - 3 */ + /* ( 33.401 cl. 9.1.2 Idle mode procedures in E-UTRAN ) + Check that TRACKING AREA UPDATE REQUEST message is present and conforms + with default message ( 36.508 Table 4.7.2-27: TRACKING AREA UPDATE REQUEST ) */ + if (v_SecurityParams.KSIasme == '111'B) { // Did not do authentication on EUTRA cell since power on + v_NoAuthSincePowerOn := true; + if (v_SecurityParams.KSIsgsn == '111'B) {// No current EPS security context stored + //@sic R5-110746 Don't care if UE is sending mapped or native sic@ + v_TAU_Expected := (v_TAU_NoProtection, v_TAU_StartInOtherRAT); + } + else { /* This should be when: - UE started on 3G/2G, + * - came to LTE and was forced to use the mapped context in an SMC on LTE + * - went back to 3G/2G + * - is now back on LTE */ + v_TAU_Expected := v_TAU_ForcedMapped; + } + } + else { // UE and SS still have current EPS NAS Security Context because previously registered on LTE so should have a valid native context + v_NoAuthSincePowerOn := false; + v_TAU_Expected := cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_TAU_RequestIdleMobilityDiffRAT(v_EpsUpdate_TypeValue, + f_EUTRA_SecurityKSIasme_Get(), + v_EPS_ContextStatus_Rx, + v_AdditionalUpdateType_Expected, + tsc_NasKsi_NativeSecurityContext)); // @sic R5-110746 sic@ + } + + if (p_PDPContext or p_PreambleOnLTE) { // bearer has previously been established + v_NAS_Expected := v_TAU_Expected; + } else { // no bearer established, so behaviour is optional + if (ispresent(v_Rel)) { // @sic R5-123734 sic@ + if (valueof(v_Rel) == rel8 or valueof(v_Rel) == rel9) { + v_NAS_Expected := (v_TAU_Expected, cr_NAS_IndicationWithPiggybacking((tsc_SHT_NoSecurityProtection, tsc_SHT_IntegrityProtected), + cr_508_ATTACH_REQUEST(v_AttachType, v_AdditionalUpdateType), + cr_508_PDN_CONNECTIVITY_REQUEST(tsc_PdnRequest_InitialAttach, v_PDNType))); // @sic R5s120659 sic@ + } else { // rel10 and above + v_NAS_Expected := cr_NAS_IndicationWithPiggybacking((tsc_SHT_NoSecurityProtection, tsc_SHT_IntegrityProtected), + cr_508_ATTACH_REQUEST(v_AttachType, v_AdditionalUpdateType), + cr_508_PDN_CONNECTIVITY_REQUEST(tsc_PdnRequest_InitialAttach, v_PDNType)); // @sic R5s120659 sic@ + } + } else { // started on GERAN so expect anything for now + v_NAS_Expected := (v_TAU_Expected, cr_NAS_IndicationWithPiggybacking((tsc_SHT_NoSecurityProtection, tsc_SHT_IntegrityProtected), + cr_508_ATTACH_REQUEST(v_AttachType, v_AdditionalUpdateType), + cr_508_PDN_CONNECTIVITY_REQUEST(tsc_PdnRequest_InitialAttach, v_PDNType))); // @sic R5s120659 sic@ + } + } + + //Send RRC Connection Setup on SRB0 (CCCH) and switch on UL grant assignments: + f_EUTRA_RRC_ConnectionSetup_Def (p_CellId, -, p_RRC_TI); + + //Receive RRC Connection Setup Complete with piggy-backed NAS message on SRB1 (DCCH): + v_NasInd := f_EUTRA_RRCConnectionSetupComplete_Def(p_CellId, // @sic R5s120121 MCC160 implementation sic@ + cr_508_RRCConnectionSetupComplete(p_RRC_TI, ?, -, 1), + v_NAS_Expected); // @sic R5-123734 sic@ + if (ischosen (v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST)) { // @sic R5-123734 sic@ + v_SecurityParams.NonceUE := oct2bit(v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.nonce.nonceValue); + } + if (p_PDPContext or p_PreambleOnLTE) { // bearer already established, so go ahead and complete the TAU; @sic R5-110746, R5s110087 sic@ + if (v_NoAuthSincePowerOn) { + v_SecurityParams := f_EUTRA_MappedContext_InitNAS(v_SecurityParams, v_SecurityParams.AuthParams); + v_SecurityParams.NAS_SecurityCap := f_EUTRA_FillNAS_SecurityCapability_TAU(v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST); // @sic R5s110210 sic@ + /* Step 4, 5: NAS Security Mode Command / NAS Security Mode Complete */ + v_NasCountUL := f_EUTRA_NAS_ActivateSecurity_MappedContext(p_CellId, v_SecurityParams); + } else { // @sic R5s130238 sic@ + v_NasCountInfo := f_EUTRA_SS_NAS_CountGet(); + v_NasCountUL := v_NasCountInfo.UL; + } + + v_EPS_ContextStatus_Tx := v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.epsBearerContextStatus; // Send this back in the Accept + v_SecurityParams.NAS_SecurityCap := f_EUTRA_FillNAS_SecurityCapability_TAU(v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST); + f_EUTRA_Security_Set(v_SecurityParams); + + /* Step 6: Transmit TRACKING AREA UPDATE ACCEPT message */ + /* Step 7: Receive TRACKING AREA UPDATE COMPLETE */ + f_EUTRA_TrackingAreaUpdate_Accept_Complete(p_CellId, + v_GutiParams, + v_EpsUpdate_Result, + v_EPS_ContextStatus_Tx, + v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.addUpdateType, + p_ForcedAttach); + + /* Step 8: Release RRC connection */ + if (p_ReleaseRequired) { // @sic R5s110127 sic@ + f_EUTRA_RRC_ConnectionRelease(p_CellId, p_RRC_TI); + } + } else { // No bearer established so follow table 2; @sic R5-110746 sic@ + if (ischosen (v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST)) { // @sic R5-123734 sic@ + // Step 4: The SS transmits a TRACKING AREA UPDATE REJECT message with EMM cause = "No EPS Bearer Activated". + v_Rel8_9 := true; // @sic R5-123734 sic@ + SRB.send(cas_SRB1_NasPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_NoSecurityProtection, + cs_508_TRACKING_AREA_UPDATE_REJECT(tsc_Cause_NoEPSBearerActive)))); + // Step 5: SS waits for tsc_WaitforAttach seconds to receive the Attach Request on the existing RRC Connection + t_WaitforAttach.start; + alt { + [] SRB.receive(car_SRB1_NasPdu_IND(p_CellId, + cr_NAS_IndicationWithPiggybacking((tsc_SHT_NoSecurityProtection, tsc_SHT_IntegrityProtected), + cr_508_ATTACH_REQUEST(v_AttachType, v_AdditionalUpdateType), + cr_508_PDN_CONNECTIVITY_REQUEST(tsc_PdnRequest_InitialAttach, v_PDNType)))) + -> value v_ReceivedAsp + { + v_NasInd := v_ReceivedAsp.Signalling.Nas[0]; + t_WaitforAttach.stop; + } + [] t_WaitforAttach.timeout + { + // Step 5 : The SS releases the RRC connection. + f_EUTRA_RRC_ConnectionRelease(p_CellId); /* @sic R5-110803 change 13 sic@ */ + + // Step 6: + if (not pc_Auto_PDN_Connectivity) { // @sic R5-120754, R5-125117 sic@ + f_UT_RequestAdditionalPDNConnectivity (UT, 6); // @sic R5-125116 sic@ + } + v_NasInd := f_EUTRA_RRC_ConnEst_DefWithNas(p_CellId, + tsc_RRC_TI_Def, + cr_EstablishmentCause_Any, + cr_NAS_IndicationWithPiggybacking((tsc_SHT_NoSecurityProtection, tsc_SHT_IntegrityProtected), + cr_508_ATTACH_REQUEST(v_AttachType, v_AdditionalUpdateType), + cr_508_PDN_CONNECTIVITY_REQUEST(tsc_PdnRequest_InitialAttach, v_PDNType))); + } + } + } // end of TAU received, so Attach Req must have been received first + // Activate DHCP and ICMPv6 + f_IP_Handling_Start(IP, PDN_1, cs_DrbInfo_EUTRA(p_CellId, tsc_DRB1)); /* @sic R5s110776 sic@ */ + + // Steps 7 - 22 + f_EUTRA_IdleUpdated_Step5_17(p_CellId, STATE2_IDLEUPDATE, p_ForcedAttach, v_NasInd, p_ReleaseRequired); // @sic R5s110395 sic@ + + if (not ispresent (v_Rel)) { // @sic R5-123734 sic@ + v_Rel := f_EUTRA_MobileInfo_GetUECapability_AccessStratumRelease (); // can get value now, so can now check behaviour correct for release of UE + if ((not(valueof(v_Rel) == rel8 or valueof(v_Rel) == rel9)) and v_Rel8_9 ) { // @sic R5s120659 sic@ @sic R5s130275 sic@ + f_SetVerdictInconc(__FILE__, __LINE__, "Rel8/9 behaviour not allowed for higher release UE"); + } + } + } + return v_NasCountUL; // @sic R5s120774 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc Tracking area update upon mobility from another RAT + * @param p_CellId + * @param p_RRC_TI + * @param p_CSInOtherRAT Set to true if the UE has done either an LAU or Combined RAU in the other RAT + * @param p_PDPContext Set to true if UE has earlier established PDP context on other RAT + * @param p_PreambleOnLTE Set to true if UE performed the preamble on the LTE cell (and so configured the default bearer) + * @param p_EUTRA_Cap + * @param p_ReleaseRequired (default value: true) Set to false if you don't want the RRC connection to be released at the end of the function + * @param p_ForcedAttach (default value: NORMAL) + * @status APPROVED (LTE_IRAT) + */ + function f_EUTRA_TrackingAreaUpdateFromAnotherRAT(EUTRA_CellId_Type p_CellId, + RRC_TransactionIdentifier p_RRC_TI, + boolean p_CSInOtherRAT, + boolean p_PDPContext, + boolean p_PreambleOnLTE, + template (omit) octetstring p_EUTRA_Cap, // @sic R5-123734 sic@ + boolean p_ReleaseRequired := true, + EUTRA_ATTACH_Type p_ForcedAttach := NORMAL) runs on EUTRA_PTC + { /* @sic R5s120027 Additional Changes sic@ */ + var EstablishmentCause v_EstablishmentCause := mo_Signalling; + + // receive RRC Connection Request on SRB0 (CCCH): + f_EUTRA_RRC_ConnectionRequest_Def(p_CellId, v_EstablishmentCause); // @sic R5-120721 change 3 sic@ + + f_EUTRA_TrackingAreaUpdateFromAnotherRAT_WithoutRRCConneReq(p_CellId, + p_RRC_TI, + p_CSInOtherRAT, + p_PDPContext, + p_PreambleOnLTE, + p_EUTRA_Cap, // @sic R5-123734 sic@ + p_ReleaseRequired, + p_ForcedAttach); + } + + template (present) MS_NetworkCap cdr_MS_NetworkCap_Srvcc modifies cr_MS_NetworkCap_Any := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + srvccToGERAN_UTRANCap := '1'B + }; + + template (present) NAS_UL_Message_Type cdr_ATTACH_REQUEST_SRVCC(template (present) NAS_AttDetValue_Type p_AttachTypeValue, + template AdditionalUpdateType p_AdditionalUpdateType, + template GUTI_Type p_OldGUTIType := cr_GUTI_Type_Any ifpresent) // @sic R5s140074, R5-142882 sic@ + modifies cr_508_ATTACH_REQUEST := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + aTTACH_REQUEST := { + msNetworkCapability := cdr_MS_NetworkCap_Srvcc, + msClassmark2 := cr_MS_Clsmk2_Any_tlv, + supportedCodecList := cr_CodecListAny, + oldGUTI_Type := p_OldGUTIType + } + }; + + //---------------------------------------------------------------------------- + + altstep a_EUTRA_PdnConnectivityRejectAnyFurtherRequest(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { + var SRB_COMMON_IND v_ReceivedAsp; + var PDN_CONNECTIVITY_REQUEST v_PDNConnReq; + var ProcedureTransactionIdentifier v_PTId_UE; + var template (value) ESM_Cause v_EsmCause26; + var template (value) GPRS_Timer3 v_T3396_Deact; + + [] SRB.receive(car_SRB2_NasPdu_IND(p_CellId, cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_PDNConnReqAdditionalPDN(?)))) -> value v_ReceivedAsp + { + + v_PDNConnReq := v_ReceivedAsp.Signalling.Nas[0].Pdu.Msg.pDN_CONNECTIVITY_REQUEST; + v_PTId_UE := v_PDNConnReq.procedureTransactionIdentifier; + v_EsmCause26 := cs_ESM_Cause_v ('00011010'B); + v_T3396_Deact := cs_GprsTimer3(tsc_GprsTimerUnit_deact, '11111'B); + SRB.send(cas_SRB2_NasPdu_REQ(p_CellId, cs_TimingInfo_Now, cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, cs_PdnConnectReject('0'H, v_PTId_UE, v_EsmCause26, v_T3396_Deact)))); + } + } + + function f_EUTRA_PdnConnectivityReject(EUTRA_CellId_Type p_CellId, + template (omit) float p_WaitDuration := omit) runs on EUTRA_PTC + { + var boolean v_TimerControl := ispresent(p_WaitDuration); + timer t_Timer; + + if (v_TimerControl) { + t_Timer.start(valueof(p_WaitDuration)); + } + alt { + [] a_EUTRA_PdnConnectivityRejectAnyFurtherRequest(p_CellId) {} + [v_TimerControl] t_Timer.timeout {} + } + } + + //---------------------------------------------------------------------------- + /* + * @desc Activate a default DRB connected to an additional DRB + * see 36.508 clause 6.4.3.2 / 4.5.A.4 + * This is called by f_EUTRA_508_ActivateAdditionalPDN + * @param p_CellId + * @param p_EpsBearerId2 .. Identity of the 2nd Default Bearer that will be configured to connect to the additional PDN + * @param p_RRCState (default value: RRC_IDLE) + * @param p_EstablishmentCause (default value: ?) Set to emergency to establish a PDN for an emergency bearer + * @param p_PDN_RequestType (default value: 001) Set to 100 to establish a PDN for an emergency bearer + * @param p_ExpectedAccessPointName (default value: cr_AccessPointName(v_APN_Value)) Set to omit to establish a PDN for an emergency bearer + * @param p_StepNo (default value: "") Set to the verdict step no if required after the RRC Connection Establishment + * @status APPROVED (IMS, LTE) + */ + function f_EUTRA_ActivateAdditionalPDNOnDef(EUTRA_CellId_Type p_CellId, + EPS_BearerIdentity p_EpsBearerId2, + EUTRA_RRC_STATE_Type p_RRCState := RRC_IDLE, + template (present) EstablishmentCause p_EstablishmentCause := ?, + B3_Type p_PDN_RequestType := '001'B, + template AccessPointName p_ExpectedAccessPointName := cr_AccessPointName(tsc_APN1), + charstring p_StepNo := "") runs on EUTRA_PTC + { // @sic R5s100326 sic@ @sic R5s100520 sic@ + var ProcedureTransactionIdentifier v_PTId_UE; + var template (omit) ProtocolConfigOptions v_Pco; // @sic R5s100761 sic@ + var PDN_Address v_PDN_Address2; + var NAS_MSG_Indication_Type v_NasInd; + var PDN_CONNECTIVITY_REQUEST v_PDNConnReq; + var SRB_COMMON_IND v_ReceivedAsp; + var template (value) EUTRA_FDD_TDD_CellInfo_Type v_EUTRA_FDD_TDD_Info := f_EUTRA_CellInfo_GetFDD_TDD_Info (p_CellId); //Get FDD or TDD mode from Cell-configuration + var EUTRA_SecurityParams_Type v_SecurityParams := f_EUTRA_Security_Get(); + var NasCount_Type v_NasCountUL; + var template (value) PhysicalConfigDedicated_AntennaInfo_Type v_AntennaInfo := f_EUTRA_CellInfo_GetAntennaInfoDedicated (p_CellId); //@sic R5-100786 sic@ + var template (value) DRB_ToAddModList v_DRB_ToAddModList; + var template (value) AccessPointName v_AccessPointNameToSend := cs_AccessPointName(tsc_APN1); + + // RRC configuration for first default EPS bearer context is released during RRC connection release procedure at the end of preamble, + // and therefore needs to be restored during the additional PDN procedure. + v_DRB_ToAddModList[0] := cs_508_DRB_ToAddMod_DEFAULT_AM (tsc_DRB1); // @sic R5s130648 sic@ @sic R5s130880 sic@ + + // The UE transmits a SERVICE REQUEST + // The UE transmits a PDN CONNECTIVITY REQUEST message as specified to request an additional PDN. + if (p_RRCState == RRC_IDLE) { + // UE is in RRC Idle mode + // Steps 2a1 to 2a7 + v_NasInd := f_EUTRA_RRC_ConnEst_DefWithNas(p_CellId, + tsc_RRC_TI_Def, + p_EstablishmentCause, // @sic R5-131807 sic@ + cr_NAS_Indication (tsc_SHT_IntegrityProtected, + cr_508_SERVICE_REQUEST(f_EUTRA_SecurityKSIasme_Get()))); + if (p_StepNo != "") { // @sic R5-115673 sic@ + f_EUTRA_PreliminaryPass (__FILE__, __LINE__, p_StepNo); + } + + // activate security in AS with parameters from AKA performed in preamble + v_NasCountUL := v_NasInd.SecurityProtection.NasCount; + v_SecurityParams := f_EUTRA_Authentication_InitAS(v_SecurityParams, v_NasCountUL); + v_SecurityParams := f_EUTRA_RRC_ActivateSecurity(p_CellId, + v_SecurityParams, + v_NasCountUL); + f_EUTRA_Security_Set(v_SecurityParams); + + SRB.send(cas_SRB1_RrcPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_RRCConnectionReconfiguration_Common(tsc_RRC_TI_Def, + omit, + omit, + cs_508_RadioResourceConfigDedicated_SRB2( v_DRB_ToAddModList, + cs_508_MAC_MainConfig_Explicit_RBC_DrxL, + cs_508_PhysicalConfigDedicated_Default_RBC(v_EUTRA_FDD_TDD_Info.cqi_ReportConfig, + v_EUTRA_FDD_TDD_Info.soundingRS_UL_Config, + v_AntennaInfo)), + omit))); + + // receive RRCConnectionReconfigurationComplete + SRB.receive(car_SRB1_RrcPdu_IND(p_CellId, + cr_508_RRCConnectionReconfigurationComplete(tsc_RRC_TI_Def))); + + } // end of if RRC_Idle + // UE is now in RRC connected mode + + // Step 3. The UE transmits an ULInformationTransfer message including the PDN CONNECTIVITY REQUEST message. + SRB.receive(car_SRB2_NasPdu_IND(p_CellId, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_PDNConnReqAdditionalPDN(f_GetPdnType(), p_ExpectedAccessPointName, p_PDN_RequestType))))-> value v_ReceivedAsp; // @sic R5-131807 sic@ + + v_NasInd := v_ReceivedAsp.Signalling.Nas[0]; + v_PDNConnReq := v_NasInd.Pdu.Msg.pDN_CONNECTIVITY_REQUEST; + v_PTId_UE := v_PDNConnReq.procedureTransactionIdentifier; + v_Pco := v_PDNConnReq.protocolConfigurationOptions; + if (ispresent(v_PDNConnReq.accessPointName)) { // @sic R5-131807 sic@ + v_AccessPointNameToSend := v_PDNConnReq.accessPointName; + v_AccessPointNameToSend.iei := omit; // @sic R5s130431 sic@ + } + + // Change from DRB1 to DRB2 to handle U Plane data + f_EUTRA_StartIPfor2ndPDN(p_CellId); // @sic R5s110449, R5-113734 change 8, R5-115673 sic@ + + // Step 4 and 5. The SS transmits an RRCConnectionReconfiguration message including + // the ACTIVATE DEFAULT EPS BEARER CONTEXT REQUEST message to establish the + // default EPS bearer context. + v_PDN_Address2 := f_EUTRA_GetPDNAddress (f_CheckPCOforIPallocationViaNas (v_Pco), PDN_2); // @sic R5s110011 R5-120234 sic@ + f_EUTRA_TxActivateDefaultEpsBearerCtxtReq_DrbReconfig(p_CellId, + tsc_RRC_TI_Def, + p_EpsBearerId2, // Default bearer ID to additional PDN + v_PTId_UE, // use value as defined by the UE + v_AccessPointNameToSend, + v_PDN_Address2, + f_GetDefaultProtocolConfigOptions(v_Pco)); + + // Step 6. The UE transmits an ULInformationTransfer message including the ACTIVATE DEFAULT EPS BEARER CONTEXT ACCEPT message + SRB.receive(car_SRB2_NasPdu_IND(p_CellId, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_ActivateDefEpsBearerContextAccept(p_EpsBearerId2)))); + } + + //---------------------------------------------------------------------------- + /* + * @desc Establish an IMS Emergency Call in EUTRA + * see 36.508 4.5A.4 + * @param p_CellId + * @param p_NumToDial (default value: px_EmergencyCallNumber) + * @param p_StepNo (default value: "") Set to the verdict step no if required after the RRC Connection Establishment + * @param p_EpsDefBearerId2 (default value: '6'H) in the default case the default AM bearer is 6; in any case the UM bearer is defaulted to p_EpsBearerId2 + 1 + * @param p_EstablishmentCause (default value: ?) + * @param p_StartIPfor2ndPDN (default value: true) + * @status APPROVED (IMS_IRAT, LTE) + */ + function f_EUTRA_508_EstablishIMSEmergencyCall(EUTRA_CellId_Type p_CellId, + charstring p_NumToDial := px_EmergencyCallNumber, + charstring p_StepNo := "", + EPS_BearerIdentity p_EpsDefBearerId2 := '6'H, + template (present) EstablishmentCause p_EstablishmentCause := ?, + boolean p_StartIPfor2ndPDN := true) runs on EUTRA_PTC + { + // Step 1 + f_UT_RequestIMSEmergencyCall (UT, p_NumToDial); + + // Steps 2 - 15 + f_EUTRA_508_EstablishIMSEmergencyCall_Steps2_15(p_CellId, p_StepNo, p_EpsDefBearerId2, p_EstablishmentCause, p_StartIPfor2ndPDN); + } + + + //---------------------------------------------------------------------------- + /* + * @desc Establish an IMS Emergency Call in EUTRA + * see 36.508 4.5A.4 steps 2-15 + * @param p_CellId + * @param p_StepNo (default value: "") .. Set to the verdict step no if required after the RRC Connection Establishment + * @param p_EpsDefBearerId2 (default value: '6'H) .. in the default case the default AM bearer is 6; in any case the UM bearer is defaulted to p_EpsBearerId2 + 1 + * @param p_EstablishmentCause (default value: ?) + * @param p_StartIPfor2ndPDN (default value: true) + * @status APPROVED (IMS, IMS_IRAT, LTE) + */ + function f_EUTRA_508_EstablishIMSEmergencyCall_Steps2_15(EUTRA_CellId_Type p_CellId, + charstring p_StepNo := "", + EPS_BearerIdentity p_EpsDefBearerId2 := '6'H, + template (present) EstablishmentCause p_EstablishmentCause := ?, + boolean p_StartIPfor2ndPDN := true) runs on EUTRA_PTC + { + var NAS_MSG_Indication_Type v_NasInd; + + // Steps 2 - 4 + v_NasInd := f_EUTRA_508_EstablishIMSEmergencyCall_Steps2_4(p_CellId, p_StepNo, p_EstablishmentCause); + + // Steps 5 - 8 + f_EUTRA_508_EstablishIMSEmergencyCall_Steps5_8(p_CellId, v_NasInd); + + // Step 9 - 15 + f_EUTRA_508_EstablishIMSEmergencyCall_Steps9_15(p_CellId, p_EpsDefBearerId2, p_StartIPfor2ndPDN); /* @sic R5s140490 change 7 MCC160 implementation sic@ */ + } + + /* + * @desc Establishment of an IMS Emergency Call, Normal Service, according to 36.58 cl. 4.5A.4 Steps 2-4 + * @param p_CellId + * @param p_StepNo (default value: "") + * @param p_EstablishmentCause (default value: ?) + * @return NAS_MSG_Indication_Type + * @status APPROVED (IMS, IMS_IRAT, LTE) + */ + function f_EUTRA_508_EstablishIMSEmergencyCall_Steps2_4(EUTRA_CellId_Type p_CellId, + charstring p_StepNo := "", + template (present) EstablishmentCause p_EstablishmentCause := ?) runs on EUTRA_PTC return NAS_MSG_Indication_Type + { + var NAS_MSG_Indication_Type v_NasInd; + var template (present) EstablishmentCause v_EstablishmentCause := p_EstablishmentCause; // emergency; // @sic R5-120693, 694 sic@ + + v_NasInd := f_EUTRA_RRC_ConnEst_DefWithNas(p_CellId, + tsc_RRC_TI_Def, + v_EstablishmentCause, + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_508_SERVICE_REQUEST(f_EUTRA_SecurityKSIasme_Get()))); + if (p_StepNo != "") { // @sic R5-115673 sic@ + f_EUTRA_PreliminaryPass (__FILE__, __LINE__, p_StepNo); + } + return v_NasInd; + } + + /* + * @desc Establishment of an IMS Emergency Call, Normal Service, according to 36.58 cl. 4.5A.4 Steps 5-8 + * @param p_CellId + * @param p_NasInd + * @status APPROVED (IMS, IMS_IRAT, LTE) + */ + function f_EUTRA_508_EstablishIMSEmergencyCall_Steps5_8(EUTRA_CellId_Type p_CellId, + NAS_MSG_Indication_Type p_NasInd) runs on EUTRA_PTC + { + var NAS_MSG_Indication_Type v_NasInd; + var template (value) EUTRA_FDD_TDD_CellInfo_Type v_EUTRA_FDD_TDD_Info := f_EUTRA_CellInfo_GetFDD_TDD_Info(p_CellId); //Get FDD or TDD mode from Cell-configuration + var EUTRA_SecurityParams_Type v_SecurityParams := f_EUTRA_Security_Get(); + var NasCount_Type v_NasCountUL; + var template (value) PhysicalConfigDedicated_AntennaInfo_Type v_AntennaInfo := f_EUTRA_CellInfo_GetAntennaInfoDedicated(p_CellId); //@sic R5-100786 sic@ + var template (value) DRB_ToAddModList v_DRB_ToAddModList; + + v_NasInd := p_NasInd; + v_DRB_ToAddModList[0] := cs_508_DRB_ToAddMod_DEFAULT_AM(tsc_DRB1); //@sic R5s140169 change 1 sic@ + + // activate security in AS with parameters from AKA performed in preamble + v_NasCountUL := v_NasInd.SecurityProtection.NasCount; + v_SecurityParams := f_EUTRA_Authentication_InitAS(v_SecurityParams, v_NasCountUL); + v_SecurityParams := f_EUTRA_RRC_ActivateSecurity(p_CellId, + v_SecurityParams, + v_NasCountUL); + f_EUTRA_Security_Set(v_SecurityParams); + + SRB.send(cas_SRB1_RrcPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_RRCConnectionReconfiguration_Common(tsc_RRC_TI_Def, + omit, + omit, + cs_508_RadioResourceConfigDedicated_SRB2(v_DRB_ToAddModList, + cs_508_MAC_MainConfig_Explicit_RBC_DrxL, + cs_508_PhysicalConfigDedicated_Default_RBC(v_EUTRA_FDD_TDD_Info.cqi_ReportConfig, + v_EUTRA_FDD_TDD_Info.soundingRS_UL_Config, + v_AntennaInfo)), + omit))); + + // receive RRCConnectionReconfigurationComplete + SRB.receive(car_SRB1_RrcPdu_IND(p_CellId, + cr_508_RRCConnectionReconfigurationComplete(tsc_RRC_TI_Def))); + } + + //---------------------------------------------------------------------------- + /* + * @desc Establishment of an IMS Emergency Call, Normal Service, according to 36.58 cl. 4.5A.4 Steps 9-15 + * @param p_CellId + * @param p_EpsDefBearerId2 (default value: '6'H) .. in the default case the default AM bearer is 6; in any case the UM bearer is defaulted to p_EpsBearerId2 + 1 + * @param p_StartIPfor2ndPDN (default value: true) + * @status APPROVED (IMS, IMS_IRAT, LTE) + */ + function f_EUTRA_508_EstablishIMSEmergencyCall_Steps9_15(EUTRA_CellId_Type p_CellId, + EPS_BearerIdentity p_EpsDefBearerId2 := '6'H, + boolean p_StartIPfor2ndPDN := true) runs on EUTRA_PTC + { + var NAS_MSG_Indication_Type v_NasInd; + var EPS_BearerIdentity v_EpsDefBearerId2 := p_EpsDefBearerId2; + var EPS_BearerIdentity v_EpsDedicatedBearerId := int2hex((hex2int(v_EpsDefBearerId2) + 1), 1); // the bearer id following the EPS default bearer + + // Step 9 + v_NasInd := f_EUTRA_508_EstablishIMSEmergencyCall_Step9(p_CellId); + + // Steps 10 - 14 + f_EUTRA_508_EstablishIMSEmergencyCall_Steps10_14(p_CellId, v_EpsDefBearerId2, v_NasInd, p_StartIPfor2ndPDN); + + // Step 15 + f_EUTRA_508_EstablishIMSEmergencyCall_Step15(p_CellId, v_EpsDedicatedBearerId); + } + + /* + * @desc Establishment of an IMS Emergency Call, Normal Service, according to 36.58 cl. 4.5A.4 Step 9 + * @param p_CellId + * @return NAS_MSG_Indication_Type + * @status APPROVED (IMS, IMS_IRAT, LTE) + */ + function f_EUTRA_508_EstablishIMSEmergencyCall_Step9(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return NAS_MSG_Indication_Type + { + var NAS_MSG_Indication_Type v_NasInd; + var SRB_COMMON_IND v_ReceivedAsp; + var B3_Type v_PDN_RequestType := '100'B; // @sic R5s130561 sic@ + + // Step 9. The UE transmits an ULInformationTransfer message including the PDN CONNECTIVITY REQUEST message. + SRB.receive(car_SRB2_NasPdu_IND(p_CellId, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_PDNConnReqAdditionalPDN(f_GetPdnType(), omit, v_PDN_RequestType))))-> value v_ReceivedAsp; // @sic R5s130561 sic@ + + v_NasInd := v_ReceivedAsp.Signalling.Nas[0]; + return v_NasInd; + } + + /* + * @desc Establishment of an IMS Emergency Call, Normal Service, according to 36.58 cl. 4.5A.4 Steps 10-14 + * @param p_CellId + * @param p_EpsDefBearerId2 + * @param p_NasInd + * @param p_StartIPfor2ndPDN (default value: true) + * @status APPROVED (IMS, IMS_IRAT, LTE) + */ + function f_EUTRA_508_EstablishIMSEmergencyCall_Steps10_14(EUTRA_CellId_Type p_CellId, + EPS_BearerIdentity p_EpsDefBearerId2, + NAS_MSG_Indication_Type p_NasInd, + boolean p_StartIPfor2ndPDN := true) runs on EUTRA_PTC + { + var EPS_BearerIdentity v_EpsDedicatedBearerId := int2hex((hex2int(p_EpsDefBearerId2) + 1), 1); // the bearer id following the EPS default bearer + + f_EUTRA_508_EstablishIMSEmergencyCall_Steps10_12(p_CellId, + p_EpsDefBearerId2, + p_NasInd, + p_StartIPfor2ndPDN); + f_EUTRA_508_EstablishIMSEmergencyCall_Steps13_14(p_CellId, + p_EpsDefBearerId2, + v_EpsDedicatedBearerId); + } + + /* + * @desc Establishment of an IMS Emergency Call, Normal Service, according to 36.58 cl. 4.5A.4 Steps 10-12 + * @param p_CellId + * @param p_EpsDefBearerId2 + * @param p_NasInd + * @param p_StartIPfor2ndPDN (default value: true) + * @status APPROVED (IMS, IMS_IRAT, LTE) + */ + function f_EUTRA_508_EstablishIMSEmergencyCall_Steps10_12(EUTRA_CellId_Type p_CellId, + EPS_BearerIdentity p_EpsDefBearerId2, + NAS_MSG_Indication_Type p_NasInd, + boolean p_StartIPfor2ndPDN := true) runs on EUTRA_PTC + { + var ProcedureTransactionIdentifier v_PTId_UE; + var template (omit) ProtocolConfigOptions v_Pco; // @sic R5s100761 sic@ + var PDN_Address v_PDN_Address2; + var NAS_MSG_Indication_Type v_NasInd; + var PDN_CONNECTIVITY_REQUEST v_PDNConnReq; + var octetstring v_APN_Value := tsc_APN1; // APN-1(New PDN name), different from default + + v_NasInd := p_NasInd; + v_PDNConnReq := v_NasInd.Pdu.Msg.pDN_CONNECTIVITY_REQUEST; + v_PTId_UE := v_PDNConnReq.procedureTransactionIdentifier; + v_Pco := v_PDNConnReq.protocolConfigurationOptions; + + // Change from DRB1 to DRB2 to handle U Plane data + if (p_StartIPfor2ndPDN == true) { + f_EUTRA_StartIPfor2ndPDN(p_CellId); // @sic R5s110449, R5-113734 change 8, R5-115673 sic@ + } + + // Step 10 and 11. The SS transmits an RRCConnectionReconfiguration message including + // the ACTIVATE DEFAULT EPS BEARER CONTEXT REQUEST message to establish the + // default EPS bearer context. + v_PDN_Address2 := f_EUTRA_GetPDNAddress(f_CheckPCOforIPallocationViaNas (v_Pco), PDN_2); // @sic R5s110011 R5-120234 sic@ + f_EUTRA_TxActivateDefaultEpsBearerCtxtReq_DrbReconfig(p_CellId, + tsc_RRC_TI_Def, + p_EpsDefBearerId2, // Default bearer ID to additional PDN + v_PTId_UE, // use value as defined by the UE + cs_AccessPointName(v_APN_Value), + v_PDN_Address2, + f_GetDefaultProtocolConfigOptions(v_Pco, PDN_2)); // @sic R5s130561 sic@ + + // Step 12 The UE transmits an ULInformationTransfer message including the ACTIVATE DEFAULT EPS BEARER CONTEXT ACCEPT message + SRB.receive(car_SRB2_NasPdu_IND(p_CellId, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_ActivateDefEpsBearerContextAccept(p_EpsDefBearerId2)))); + + // EXCEPTION: (IP address allocation), steps 1 - 4 of annex C.20 and steps 1 - 5 of annex C.22 should be performed in parallel + + } + + /* + * @desc Establishment of an IMS Emergency Call, Normal Service, according to 36.58 cl. 4.5A.4 Steps 13-14 + * @param p_CellId + * @param p_EpsDefBearerId2 + * @param p_EpsDedicatedBearerId + * @status APPROVED (IMS, IMS_IRAT, LTE) + */ + function f_EUTRA_508_EstablishIMSEmergencyCall_Steps13_14(EUTRA_CellId_Type p_CellId, + EPS_BearerIdentity p_EpsDefBearerId2, + EPS_BearerIdentity p_EpsDedicatedBearerId) runs on EUTRA_PTC + { + var DRB_IdentityList_Type v_DrbList := { f_EUTRA_EpsBearerAssociatedDRB(p_EpsDedicatedBearerId) }; // mapping: DRB Id := EPS BeareId - 4 + var template (value) NAS_DL_Message_Type v_ActDedicatedEPSBearerCxtReq := + cs_508_ActDedicatedEPSBearerCxtReq(p_EpsDedicatedBearerId, + tsc_PTI_Unassigned, + cs_LinkedId(hex2bit( p_EpsDefBearerId2)), + cs_508_EPS_QoS_Dedicated_1, + f_EUTRA_Get_508_TrafficFlowTemplate(4, p_EpsDefBearerId2, -, PDN_2)); // EPS bearer context #4 (QCI 1) according to table 6.6.2-1 @sic R5s130495 sic@ + + var template (value) NAS_MSG_RequestList_Type v_NAS_MsgList := { + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, v_ActDedicatedEPSBearerCxtReq) + }; + + // Steps 13-14 + f_EUTRA_RRCConnectionReconfigurationWithPiggyNAS_DrbReconfig(p_CellId, + tsc_RRC_TI_Def, + v_DrbList, + v_NAS_MsgList, + UM_Mode); + } + + /* + * @desc Establishment of an IMS Emergency Call, Normal Service, according to 36.58 cl. 4.5A.4 Step 15 + * @param p_CellId + * @param p_EpsDedicatedBearerId + * @status APPROVED (IMS, IMS_IRAT, LTE) + */ + function f_EUTRA_508_EstablishIMSEmergencyCall_Step15(EUTRA_CellId_Type p_CellId, + EPS_BearerIdentity p_EpsDedicatedBearerId) runs on EUTRA_PTC + { + var EPS_BearerIdentity v_EpsDedicatedBearerId := p_EpsDedicatedBearerId; + + // Step 15 + SRB.receive(car_SRB2_NasPdu_IND(p_CellId, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_ActDedicatedEPSBearerCxtAccept(v_EpsDedicatedBearerId)))); + } + + //---------------------------------------------------------------------------- + /* + * @desc Establish an IMS Emergency Call in EUTRA in limited service + * see 36.508 4.5.A.5 + * @param p_CellId + * @param p_NumToDial + * @param p_Type + * @param p_ForcedAttach (default value: NORMAL) + * @param p_StepNo (default value: "") Set to the verdict step no if required after the RRC Connection Establishment + * @param p_Authenticate (default value: true) perform authentication + * @status APPROVED (IMS_IRAT, LTE) + */ + function f_EUTRA_508_IMSEmergencyCallLimitedService(EUTRA_CellId_Type p_CellId, + charstring p_NumToDial, + IDLEUPDATED_Type p_Type, + EUTRA_ATTACH_Type p_ForcedAttach := NORMAL, + charstring p_StepNo := "", + boolean p_Authenticate := true) runs on EUTRA_PTC + { + f_UT_RequestIMSEmergencyCall (UT, p_NumToDial); + + f_EUTRA_508_IMSEmergencyCallLimitedService_Steps2_19(p_CellId, + p_Type, + p_ForcedAttach, + p_StepNo, + p_Authenticate); + } + + //---------------------------------------------------------------------------- + /* + * @desc Establish an IMS Emergency Call in EUTRA in limited service + * see 36.508 4.5.A.5 steps 2-19 + * @param p_CellId + * @param p_Type + * @param p_ForcedAttach (default value: NORMAL) + * @param p_StepNo (default value: "") .. Set to the verdict step no if required after the RRC Connection Establishment + * @param p_Authenticate (default value: true) .. perform authentication + * @status APPROVED (IMS_IRAT, LTE) + */ + function f_EUTRA_508_IMSEmergencyCallLimitedService_Steps2_19(EUTRA_CellId_Type p_CellId, + IDLEUPDATED_Type p_Type, + EUTRA_ATTACH_Type p_ForcedAttach := NORMAL, + charstring p_StepNo := "", + boolean p_Authenticate := true) runs on EUTRA_PTC + { + var NAS_MSG_Indication_Type v_NAS_Ind; + + v_NAS_Ind := f_EUTRA_508_IMSEmergencyCallLimitedService_Steps2_4(p_CellId, + p_Type, + p_ForcedAttach, + p_StepNo); + + f_EUTRA_508_IMSEmergencyCallLimitedService5a1_19(p_CellId, + v_NAS_Ind, + p_Authenticate); + } + + //---------------------------------------------------------------------------- + /* + * @desc Establish an IMS Emergency Call in EUTRA in limited service + * see 36.508 4.5.A.5 steps 7-16 + * @param p_CellId + * @param p_NAS_Ind + * @status APPROVED (IMS_IRAT, LTE, LTE_IRAT) + */ + function f_EUTRA_508_IMSEmergencyCallLimitedService_Steps7_16(EUTRA_CellId_Type p_CellId, + NAS_MSG_Indication_Type p_NAS_Ind) runs on EUTRA_PTC + { + var NAS_MSG_Indication_Type v_NAS_Ind := p_NAS_Ind; + + f_EUTRA_508_IMSEmergencyCallLimitedService_Steps7_15(p_CellId, + v_NAS_Ind); + + f_EUTRA_508_IMSEmergencyCallLimitedService_Step16(p_CellId); + } + + //---------------------------------------------------------------------------- + /* + * @desc Establish an IMS Emergency Call in EUTRA in limited service + * see 36.508 4.5.A.5 steps 5a1-19 + * @param p_CellId + * @param p_NAS_Ind + * @param p_Authenticate (default value: true) perform authentication + * @status APPROVED (IMS_IRAT, LTE, LTE_IRAT) + */ + function f_EUTRA_508_IMSEmergencyCallLimitedService5a1_19(EUTRA_CellId_Type p_CellId, // @sic R5-134956r1 sic@ + NAS_MSG_Indication_Type p_NAS_Ind, + boolean p_Authenticate := true) runs on EUTRA_PTC + { + var NAS_MSG_Indication_Type v_NAS_Ind := p_NAS_Ind; + + f_EUTRA_508_IMSEmergencyCallLimitedService_Steps5a1_5a2a2(p_CellId, // @sic R5-134956r1 sic@ + v_NAS_Ind, + p_Authenticate); + + f_EUTRA_508_IMSEmergencyCallLimitedService_Steps7_16(p_CellId, + v_NAS_Ind); + + f_EUTRA_508_IMSEmergencyCallLimitedService_Steps17_19(p_CellId); + } + + /* + * @desc Establish an IMS Emergency Call in EUTRA in limited service + * see 36.508 4.5.A.5 steps 2-4 + * @param p_CellId + * @param p_Type + * @param p_ForcedAttach (default value: NORMAL) + * @param p_StepNo (default value: "") + * @return NAS_MSG_Indication_Type + * @status APPROVED (IMS_IRAT, LTE) + */ + function f_EUTRA_508_IMSEmergencyCallLimitedService_Steps2_4(EUTRA_CellId_Type p_CellId, + IDLEUPDATED_Type p_Type, + EUTRA_ATTACH_Type p_ForcedAttach := NORMAL, + charstring p_StepNo := "") runs on EUTRA_PTC return NAS_MSG_Indication_Type + { + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var NAS_AttDetValue_Type v_AttachType := '110'B; + var B3_Type v_PDNType := f_GetPdnType(); + var NAS_MSG_Indication_Type v_NAS_Ind; + var template AdditionalUpdateType v_AdditionalUpdateType := f_GetAdditionalUpdateType (p_ForcedAttach); //used to follow TTCN3 v411 standard @sic R5s110176 sic@ + var template (present) SecurityHeaderType v_AttReqSecurityHeader; + + if (p_Type == PREAMBLE) { + v_AttReqSecurityHeader := (tsc_SHT_NoSecurityProtection, tsc_SHT_IntegrityProtected); + } else { + v_AttReqSecurityHeader := tsc_SHT_IntegrityProtected; + } + + // Receive RRC Connection Setup Complete with + v_NAS_Ind := f_EUTRA_RRC_ConnEst_DefWithNas(p_CellId, + v_RRC_TI, + emergency, + cr_NAS_IndicationWithPiggybacking(v_AttReqSecurityHeader, + cr_508_ATTACH_REQUEST(v_AttachType, v_AdditionalUpdateType), // @sic R5-103681 sic@ + cr_508_PDN_CONNECTIVITY_REQUEST('100'B, v_PDNType))); + + if (p_StepNo != "") { // @sic R5-115673 sic@ + f_EUTRA_PreliminaryPass (__FILE__, __LINE__, p_StepNo); + } + return v_NAS_Ind; + + } + + /* + * @desc Establish an IMS Emergency Call in EUTRA in limited service + * see 36.508 4.5.A.5 steps 5a1-5a2a2 + * @param p_CellId + * @param p_NAS_Ind + * @param p_Authenticate (default value: true) + * @status APPROVED (IMS_IRAT, LTE, LTE_IRAT) + */ + function f_EUTRA_508_IMSEmergencyCallLimitedService_Steps5a1_5a2a2(EUTRA_CellId_Type p_CellId, // @sic R5-134956r1 sic@ + NAS_MSG_Indication_Type p_NAS_Ind, + boolean p_Authenticate := true) runs on EUTRA_PTC + { + var NAS_MSG_Indication_Type v_NAS_Ind; + var template (present) SecurityHeaderType v_ExpectedSecurityHeader; // @sic R5s090373 sic@ + var EUTRA_SecurityParams_Type v_AuthParams := f_EUTRA_Security_Get(); + var GutiParameters_Type v_GutiParams := f_EUTRA_CellInfo_GetGuti(p_CellId); + var NAS_PlmnId v_PLMN := f_Asn2Nas_PlmnId (v_GutiParams.PLMN_Identity); + var SRB_COMMON_IND v_ReceivedAsp; + var B32_128_Type v_ReceivedRES; + + v_NAS_Ind := p_NAS_Ind; + // Set UE network capabilities as sent by the UE to be used later (see TS 24.301 clause 5.4.3.3) + v_AuthParams.NAS_SecurityCap := f_EUTRA_FillNAS_SecurityCapability(v_NAS_Ind.Pdu.Msg.aTTACH_REQUEST); // @sic R5s100135 sic@ + f_EUTRA_Security_Set(v_AuthParams); + + if (v_NAS_Ind.SecurityProtection.Status == tsc_SHT_NoSecurityProtection) { + v_ExpectedSecurityHeader := tsc_SHT_NoSecurityProtection; + } else { + v_ExpectedSecurityHeader := (tsc_SHT_NoSecurityProtection, tsc_SHT_IntegrityProtected); + } + + if (p_Authenticate) { + // Step 5-6: Authentication + // Evaluate Authentication parameters and generate new keys + v_AuthParams := f_EUTRA_Authentication_InitNAS(v_AuthParams, v_PLMN); + + SRB.send(cas_SRB_NasPdu_REQ(p_CellId, + tsc_SRB1, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_NoSecurityProtection, cs_AUTHENTICATION_REQUEST(v_AuthParams.KSIasme, + v_AuthParams.AuthParams.RandValue, + v_AuthParams.AuthParams.AUTN)))); + // receive AUTHENTICATION RESPONSE: + alt { + [] SRB.receive(car_SRB_NasPdu_IND(p_CellId, + tsc_SRB1, + cr_NAS_Indication(v_ExpectedSecurityHeader, cr_AUTHENTICATION_RESPONSE))) -> value v_ReceivedAsp + { // @sic R5s130756 change 5 sic@ + v_ReceivedRES := v_ReceivedAsp.Signalling.Nas[0].Pdu.Msg.aUTHENTICATION_RESPONSE.authenticationResponseParameter.res; + if (v_ReceivedRES != substr(v_AuthParams.AuthParams.XRES, 0, lengthof(v_ReceivedRES))) { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Authentication Failed"); + } + v_AuthParams.AuthParams.XRESLength := lengthof(v_ReceivedRES) / 8; + f_EUTRA_Security_Set(v_AuthParams); + } + [] SRB.receive(car_SRB_NasPdu_IND(p_CellId, + tsc_SRB1, + cr_NAS_Indication(?, (cr_AUTHENTICATION_FAIL_synch, cr_AUTHENTICATION_FAIL_mac)))) + { + v_AuthParams.NAS_Integrity.Algorithm := '000'B; // EIA0 + v_AuthParams.NAS_Ciphering.Algorithm := '000'B; // EEA0 + v_AuthParams.AS_Integrity.Algorithm := eia0_v920; + v_AuthParams.AS_Ciphering.Algorithm := eea0; + v_AuthParams.KSIasme := '000'B; + f_EUTRA_Security_Set(v_AuthParams); + } + } + } + else { + // Set NAS Key Identifier IE to "000" during attach procedure for emergency bearer + v_AuthParams.NAS_Integrity.Algorithm := '000'B; // EIA0 + v_AuthParams.NAS_Ciphering.Algorithm := '000'B; // EEA0 + v_AuthParams.AS_Integrity.Algorithm := eia0_v920; + v_AuthParams.AS_Ciphering.Algorithm := eea0; + v_AuthParams.KSIasme := '000'B; + f_EUTRA_Security_Set(v_AuthParams); + } + } + + /* + * @desc Establish an IMS Emergency Call in EUTRA in limited service + * see 36.508 4.5.A.5 steps 7-15 + * @param p_CellId + * @param p_NAS_Ind + * @param p_ForcedAttach (default value: EPS_Only) + * @param p_T3412 (default value: cs_GprsTimer_v_deact) + * @status APPROVED (IMS_IRAT, LTE, LTE_IRAT) + */ + function f_EUTRA_508_IMSEmergencyCallLimitedService_Steps7_15(EUTRA_CellId_Type p_CellId, + NAS_MSG_Indication_Type p_NAS_Ind, + EUTRA_ATTACH_Type p_ForcedAttach := EPS_Only, // @sic R5-135069 sic@ + template (value) GPRS_Timer p_T3412 := cs_GprsTimer_v_deact) runs on EUTRA_PTC + { + var NAS_MSG_Indication_Type v_NAS_Ind; + var ProcedureTransactionIdentifier v_EPS_TI; + var NAS_UL_Message_Type v_PdnConnectivityRequest; + var EUTRA_SecurityParams_Type v_AuthParams := f_EUTRA_Security_Get(); + var NasCount_Type v_NasCountUL; + var AccessPointName v_APN; + var template (omit) ProtocolConfigOptions v_PcoFromUE; + var template (omit) ProtocolConfigOptions v_PcoToUE; + + v_NAS_Ind := p_NAS_Ind; + v_PdnConnectivityRequest := v_NAS_Ind.Pdu.PiggybackedPduList[0].Msg; + v_EPS_TI := v_PdnConnectivityRequest.pDN_CONNECTIVITY_REQUEST.procedureTransactionIdentifier; + + // Step 7-8: NAS Security + v_NasCountUL := f_EUTRA_NAS_ActivateSecurity(p_CellId, v_AuthParams); // NAS SECURITY COMMAND & COMPLETE + + // Step 9a1 & 2 - ESM information optionally transferred; @sic R5-110708 sic@ + v_APN := f_ESM_InitAPN (p_CellId, f_CheckEsmInfoTransferFlag(v_PdnConnectivityRequest.pDN_CONNECTIVITY_REQUEST), v_EPS_TI); + + // Step 10-11: RRC Security Mode procedures + v_AuthParams := f_EUTRA_RRC_ActivateSecurity(p_CellId, v_AuthParams, v_NasCountUL); // RRC SECURITY COMMAND & COMPLETE + f_EUTRA_Security_Set(v_AuthParams); //Saving security parameters + + // Step 12-13 UE Capability check + f_EUTRA_Capability (p_CellId, tsc_RRC_TI_Def); // This enquires for the eutra capability but does not check the contents of the message received + + // Step 14 - 15 Activate Def Bearer + v_PcoFromUE := v_PdnConnectivityRequest.pDN_CONNECTIVITY_REQUEST.protocolConfigurationOptions; // may be omit + v_PcoToUE := f_GetDefaultProtocolConfigOptions (v_PcoFromUE); // @sic R5-104703 sic@ + f_EUTRA_IdleUpdated_Step14_15(p_CellId, + p_ForcedAttach, + v_NAS_Ind.Pdu.Msg.aTTACH_REQUEST.addUpdateType, + v_EPS_TI, + f_CheckPCOforIPallocationViaNas (v_PcoFromUE), + v_PcoToUE, + v_APN, + -, + p_T3412); // @sic R5s130758 sic@ + + // EXCEPTION: (IP address allocation), steps 1 - 5 of annex C.22 should be performed in parallel + } + + /* + * @desc Establish an IMS Emergency Call in EUTRA in limited service + * see 36.508 4.5.A.5 steps 5a1_15 + * @param p_CellId + * @param p_NAS_Ind + * @param p_ForcedAttach (default value: NORMAL) + * @param p_Authenticate (default value: true) + * @param p_T3412 (default value: cs_GprsTimer_v_deact) + * @status APPROVED (LTE) + */ + function f_EUTRA_508_IMSEmergencyCallLimitedService_Steps5a1_15(EUTRA_CellId_Type p_CellId, // @sic R5-134956r1 sic@ + NAS_MSG_Indication_Type p_NAS_Ind, + EUTRA_ATTACH_Type p_ForcedAttach := NORMAL, + boolean p_Authenticate := true, + template (value) GPRS_Timer p_T3412 := cs_GprsTimer_v_deact) runs on EUTRA_PTC // @sic R5s130758 sic@ + { + f_EUTRA_508_IMSEmergencyCallLimitedService_Steps5a1_5a2a2(p_CellId, p_NAS_Ind, p_Authenticate); + f_EUTRA_508_IMSEmergencyCallLimitedService_Steps7_15(p_CellId, p_NAS_Ind, p_ForcedAttach, p_T3412); // @sic R5s130758 sic@ + } + + + /* + * @desc Establish an IMS Emergency Call in EUTRA in limited service + * see 36.508 4.5.A.5 step 16 + * @param p_CellId + * @status APPROVED (IMS_IRAT, LTE, LTE_IRAT) + */ + function f_EUTRA_508_IMSEmergencyCallLimitedService_Step16(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { + // Step 16 + f_EUTRA_NAS_AttachComplete(p_CellId, tsc_EpsDefaultBearerId, noDelay); // @sic R5s130756 change 7 sic@ + } + + /* + * @desc Establish an IMS Emergency Call in EUTRA in limited service + * see 36.508 4.5.A.5 steps 17-19 + * @param p_CellId + * @status APPROVED (IMS_IRAT, LTE, LTE_IRAT) + */ + function f_EUTRA_508_IMSEmergencyCallLimitedService_Steps17_19(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { + // Step 17 - 18 + f_EUTRA_RRCConnectionReconfigurationWithPiggyNAS_DrbReconfig(p_CellId, + tsc_RRC_TI_Def, + {tsc_DRB2}, + {cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_508_ActDedicatedEPSBearerCxtReq(tsc_EpsDedicatedBearerId, + tsc_PTI_Unassigned, + cs_LinkedId(hex2bit( tsc_EpsDefaultBearerId)), + cs_508_EPS_QoS_Dedicated_1, + f_EUTRA_Get_508_TrafficFlowTemplate(4, tsc_EpsDedicatedBearerId)))}, // @sic R5-132085 sic@ + UM_Mode); + // Step 19 + SRB.receive(car_SRB2_NasPdu_IND(p_CellId, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_ActDedicatedEPSBearerCxtAccept(tsc_EpsDedicatedBearerId)))); + } + + // =========================================================================== + /* + * @desc UE registers on nonCSG cell, then performs manual CSG selection to the CSG cell + * (procedure as per test case 9.2.3.1.9), and finally UE deregisters from CSG cell + * @param p_CellId_CSG target cell id where manual CSG selection is to be done + * @param p_CellId_nonCSG target cell id where initial registration is to be done + * @param p_ForcedAttach (default value: NORMAL) + * attach type applied in the test case using the present function + * @status + */ + function f_EUTRA_Manual_CSG_Select(EUTRA_CellId_Type p_CellId_CSG, + EUTRA_CellId_Type p_CellId_nonCSG, + EUTRA_ATTACH_Type p_ForcedAttach := NORMAL) runs on EUTRA_PTC + { + var template (value) CellPowerList_Type v_CellPowerList; + var GutiParameters_Type v_Guti1_Params := f_EUTRA_CellInfo_GetGuti(p_CellId_nonCSG); + var GutiParameters_Type v_Guti2_Params := f_EUTRA_CellInfo_GetGuti(p_CellId_CSG); + var NAS_PlmnId v_HomePlmn:= f_Asn2Nas_PlmnId(v_Guti1_Params.PLMN_Identity); + var NAS_Tac v_Tac1 := bit2oct(f_EUTRA_CellInfo_GetTAC(p_CellId_nonCSG)); + var NAS_Tac v_Tac2 := bit2oct(f_EUTRA_CellInfo_GetTAC(p_CellId_CSG)); + var template (omit) MobileIdentity v_MsId := f_GetMSId (p_ForcedAttach); + var EPS_UpdateTypeValue v_UpdateType := f_GetEPSTAUType(p_ForcedAttach); + var template (omit) EPS_BearerContextStatus v_EpsBearerCtxtStatus; + var NAS_MSG_Indication_Type v_NasInd; + var CSG_Identity v_CSG_Identity; + var template AdditionalUpdateType v_AdditionalUpdateType := f_GetAdditionalUpdateType (p_ForcedAttach); + + // this could be changed: appropriate conversion function needed + if (p_CellId_CSG == eutra_CellA) { + v_CSG_Identity := '000000000000000000000000001'B; + } + if (p_CellId_CSG == eutra_CellB) { + v_CSG_Identity := '000000000000000000000000010'B; + } + else if (p_CellId_CSG == eutra_CellC) { + v_CSG_Identity := '000000000000000000000000100'B; + } + else { + FatalError(__FILE__, __LINE__, "unforeseen cell"); + } + + v_CellPowerList := { + cs_CellPower(p_CellId_nonCSG, tsc_ServingCellRS_EPRE) + }; + f_EUTRA_SetCellPowerList(v_CellPowerList); + + if (not f_EUTRA_AttachTypeCheck(p_ForcedAttach)) { + f_UT_ConfigureEPSAttach (UT); + } else { + f_UT_ConfigureCombinedAttach (UT); + } + + // Preamble: UE is in state Registered, Idle Mode (state 2) on nonCSG Cell + f_EUTRA_Preamble(p_CellId_nonCSG, STATE2_IDLEUPDATE, p_ForcedAttach); + //+ manual CSG selection so that TAU procedure initiated to includes CSG ID of CSG cell in the allowed CSG list + v_CellPowerList := { + cs_CellPower(p_CellId_nonCSG, tsc_NonSuitableCellRS_EPRE), + cs_CellPower(p_CellId_CSG, tsc_ServingCellRS_EPRE) + }; + f_EUTRA_SetCellPowerList(v_CellPowerList); + + // delete the UE's CSG whitelist, supported per test case selection expression + f_UT_USIM_Insert (UT, "Please delete the UE's CSG whitelist"); + + // perform the manual CSG selection + f_UT_ManualPLMN_CSG(UT, v_HomePlmn, v_CSG_Identity); + + v_NasInd := f_EUTRA_RRC_ConnEst_DefWithNas(p_CellId_CSG, + tsc_RRC_TI_Def, + cr_EstablishmentCause_Any, + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cdr_TAU_Request_OldGuti(v_UpdateType, + f_EUTRA_SecurityKSIasme_Get(), + cr_DRXparameter_Any ('5C'O) ifpresent, // @sic R5s120210, R5-123117 sic@ + v_AdditionalUpdateType, + f_GutiParameters2MobileIdentity(omit, v_Guti1_Params), + cr_TAI(v_HomePlmn, v_Tac1)))); + v_EpsBearerCtxtStatus := v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.epsBearerContextStatus; + + SRB.send(cas_SRB1_NasPdu_REQ(p_CellId_CSG, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_508_TAU_Accept(v_UpdateType, + f_GutiParameters2MobileIdentity(tsc_IEI_Guti, v_Guti2_Params), + cds_TAIListNonConsecutive_tlv(v_HomePlmn, {v_Tac2}), + v_EpsBearerCtxtStatus, + f_EUTRA_GetCellLAI(p_CellId_CSG, p_ForcedAttach), + v_MsId, + f_GetAdditionalUpdateResult(v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.addUpdateType, + p_ForcedAttach))))); + + SRB.receive(car_SRB1_NasPdu_IND(p_CellId_CSG, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_TAU_Complete))); + + f_EUTRA_RRC_ConnectionRelease(p_CellId_CSG); + f_EUTRA_UE_Detach_SwitchOffUe (p_CellId_CSG, RRC_IDLE, -, p_ForcedAttach); // @sic R5s120013 sic@ + // Now the allowed CSG list includes CSG ID of cell p_CellId_CSG + } + + //============================================================================ + /* + * @desc Generic Test Procedure to establish additional PDN connectivity (36.508 clause 4.5A.X) + * @param p_CellId + * @param p_WaitForIMS (default value: waitForIMS) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_IdleUpdated_ConnectToAdditionalPDN(EUTRA_CellId_Type p_CellId, + EUTRA_DelayForUserPlaneSignalling_Type p_WaitForIMS := waitForIMS) runs on EUTRA_PTC + { /* preconditions: + - connected mode: SRB1, SRB2 and one DRB + - DRB: either DRB1 (if IMS is first PDN) or DRB8 (if IMS is second PDN) + - IP routing is done for PDN_1 (as usual) and PDN_Internet (-> f_EUTRA_IdleUpdated_Step14_15) + - PDN_Internet is mapped to PDN_2 i.e. uses second set of AddressInfo */ + var B3_Type v_PDNType := f_GetPdnType(); /* IPv4, IPv6 or IPv4v6 */ + var SRB_COMMON_IND v_ReceivedAsp; + var NAS_MSG_Indication_Type v_NasInd; + var PDN_CONNECTIVITY_REQUEST v_PDNConnReq; + var ProcedureTransactionIdentifier v_PTId_UE; + var template (omit) ProtocolConfigOptions v_Pco; + var template (value) AccessPointName v_APN; + var PDN_Index_Type v_PdnIndex := f_EUTRA_InitialRegistrationPdnIndex(secondPDN); /* PDN_1 if IMS is second PDN, PDN_internet else */ + var EPS_BearerIdentity v_EpsBearerId := f_EUTRA_InitialRegistrationEpsBearerId(secondPDN); /* tsc_EpsDefaultBearerId or tsc_EpsDefaultBearerId2ndPDN */ + var DRB_Identity v_DRB_Id := f_EUTRA_EpsBearerAssociatedDRB(v_EpsBearerId); /* DRB1 or DRB8 */ + var PDN_Address v_PDN_Address; + var template (value) DRB_ToAddModList v_DRB_ToAddModList := { cs_508_DRB_ToAddMod_DEFAULT_AM(v_DRB_Id) }; + var BEARER_CONTEXT_TYPE v_BearerContextNumber := DEF_1; /* for IMS */ + + if (not tsc_EUTRA_Registration_PDN2isIMS) { /* non-IMS */ + v_BearerContextNumber := DEF_2; + } + + // Step 1. The UE transmits a PDN CONNECTIVITY REQUEST message to request an additional PDN. + SRB.receive(car_SRB2_NasPdu_IND(p_CellId, cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, cr_PDNConnReqAdditionalPDN(v_PDNType, + -, + -, + cr_ESMInfoTransferFlag_Any ifpresent)))) + -> value v_ReceivedAsp; /* NOTE: acc. to the prose the ESM information transfer flag is still "Not present or any allowed value" + * nevertheless if the UE sets the ESM information transfer flag to true this may cause issues + * as the generic procedure does not handle any requested ESM information transfer */ + + v_NasInd := v_ReceivedAsp.Signalling.Nas[0]; + v_PDNConnReq := v_NasInd.Pdu.Msg.pDN_CONNECTIVITY_REQUEST; + v_PTId_UE := v_PDNConnReq.procedureTransactionIdentifier; + v_APN := f_ESM_EvaluateAPN(p_CellId, secondPDN, v_PDNConnReq.accessPointName); /* get APN without any ESM information transfer */ + v_Pco := v_PDNConnReq.protocolConfigurationOptions; + v_PDN_Address := f_EUTRA_GetPDNAddress(f_CheckPCOforIPallocationViaNas(v_Pco), v_PdnIndex); + v_Pco := f_GetDefaultProtocolConfigOptions(v_Pco, v_PdnIndex); + + // Step 2. RRCConnectionReconfiguration message contains the ACTIVATE DEFAULT EPS BEARER CONTEXT REQUEST message. + SRB.send(cas_SRB1_RrcNasPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_RRCConnectionReconfiguration_DRB_Reconfig(tsc_RRC_TI_Def, v_DRB_ToAddModList), + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_508_ActivateDefEpsBearerContextRequest(v_EpsBearerId, + v_PTId_UE, + v_APN, + v_PDN_Address, + -, + v_Pco, + v_BearerContextNumber)))); + // Step 3. Receive RRCConnectionReconfigurationComplete + SRB.receive(car_SRB1_RrcPdu_IND (p_CellId, + cr_508_RRCConnectionReconfigurationComplete(tsc_RRC_TI_Def))); + + // Step 4. The UE transmits an ACTIVATE DEFAULT EPS BEARER CONTEXT ACCEPT message + SRB.receive(car_SRB2_NasPdu_IND(p_CellId, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_ActivateDefEpsBearerContextAccept(v_EpsBearerId)))); + // EXCEPTION: IP address allocation and/or IMS registration + f_EUTRA_DelayForUserPlaneSignalling(p_WaitForIMS); /* NOTE1: for multiple PDN if IMS is first PDN the IMS signalling will happen in parallel to the 2nd PDN connectivity procedure + * => we cannot wait after the ATTCH_COMPLETE but need to wait here for the trigger of the IMS_PDN + * NOTE2: in case of IMS test cases in general p_WaitForIMS is dontWaitForIMS and the RRC connection release is controlled by the IMS test case */ + } + + //============================================================================ + // Generic Test Procedure to release additional PDN connectivity (36.508 clause 4.5A.Y, 4.5A.Z) + + /* + * @desc rejection of an IMS Call using a specific establishment cause + * @param p_CellId + * @param p_EpsDefBearerId (default value: tsc_EpsDefaultBearerId) + * @param p_PTId_UE (default value: tsc_PTI_Unassigned) + * @param p_EsmCauseValue (default value: tsc_ESM_Cause36_RegularDeactivation) + * @param p_T3396 (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_DeactivateEPS_BearerContext(EUTRA_CellId_Type p_CellId, + EPS_BearerIdentity p_EpsDefBearerId := tsc_EpsDefaultBearerId, + ProcedureTransactionIdentifier p_PTId_UE := tsc_PTI_Unassigned, + B8_Type p_EsmCauseValue := tsc_ESM_Cause36_RegularDeactivation, + template (omit) GPRS_Timer3 p_T3396 := omit) + runs on EUTRA_PTC + { // @sic R5-140747 sic@ + /* @sic R5-144797: new parameters p_EsmCauseValue, p_T3396 sic@ */ + var EPS_BearerIdentity v_EpsBearerId := p_EpsDefBearerId; + var DRB_Identity v_DrbId := f_EUTRA_EpsBearerAssociatedDRB(v_EpsBearerId); + var template (value) ESM_Cause v_EsmCause := cs_ESM_Cause_v(p_EsmCauseValue); + + // The SS transmits a DEACTIVATE EPS BEARER CONTEXT REQUEST. + SRB.send(cas_SRB1_RrcNasPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_RRCConnectionReconfiguration_DRB_Release(tsc_RRC_TI_Def, v_DrbId), + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_508_DeactivateEPSBearerCxtReq(v_EpsBearerId, + p_PTId_UE, + v_EsmCause)))); + // receive RRCConnectionReconfigurationComplete + SRB.receive(car_SRB1_RrcPdu_IND(p_CellId, + cr_508_RRCConnectionReconfigurationComplete(tsc_RRC_TI_Def))); + + // The UE transmits a DEACTIVATE EPS BEARER CONTEXT ACCEPT message. + SRB.receive(car_SRB2_NasPdu_IND(p_CellId, // @sic R5s140579 sic@ + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_DeactivateEPSBearerCxtAccept(v_EpsBearerId)))); + + } + + /* + * @desc Generic Test Procedure to establish additional PDN connectivity (36.508 clause 4.5A.Y and 4.5A.Z) + * @param p_CellId + * @param p_EpsBearerId (default value: tsc_EpsDefaultBearerId2ndPDN) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_IdleUpdated_ReleaseSecondPDN(EUTRA_CellId_Type p_CellId, + EPS_BearerIdentity p_EpsBearerId := tsc_EpsDefaultBearerId2ndPDN) runs on EUTRA_PTC + { + var DRB_Identity v_DrbForInternet := f_EUTRA_EpsBearerAssociatedDRB(p_EpsBearerId); + var LinkedEpsBearerIdentity v_LinkedEpsBearerId := {idValue := hex2bit(p_EpsBearerId)}; + var SRB_COMMON_IND v_ReceivedAsp; + var ProcedureTransactionIdentifier v_EpsTi; + var B8_Type v_EsmCauseValue; + var AccessStratumRelease v_Release; + var template (omit) GPRS_Timer3 v_T3396 := omit; + + if (pc_UE_supports_user_initiated_PDN_disconnect) { + // Step 1 + f_UT_DeactivateBearer(UT, hex2int(p_EpsBearerId)); + + // Step 2-8 + f_EUTRA_ServiceRequestAndActivate_SRB2_DRB(p_CellId, -, -, -, -, -, -, -, -, -, -, -, v_DrbForInternet); + + // Step 9: The UE transmits PDN DISCONNECT REQUEST + SRB.receive(car_SRB2_NasPdu_IND(p_CellId, cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, cr_PDNDisconnectReq(v_LinkedEpsBearerId)))) -> value v_ReceivedAsp; + v_EpsTi := v_ReceivedAsp.Signalling.Nas[0].Pdu.Msg.pDN_DISCONNECT_REQUEST.procedureTransactionIdentifier; + v_EsmCauseValue := tsc_ESM_Cause36_RegularDeactivation; + } + else { + // Step 1-9 + f_EUTRA_GenericRbEst_Common(p_CellId, 0, 0, -, -, -, -, -, -, -, -, v_DrbForInternet); + + v_EpsTi := tsc_PTI_Unassigned; + v_EsmCauseValue := tsc_ESM_Cause26_InsufficientResources; + + v_Release := f_EUTRA_MobileInfo_GetUECapability_AccessStratumRelease(); + select (v_Release) { + case (rel8, rel9) {} + case else { v_T3396 := cs_GprsTimer3(tsc_GprsTimerUnit_deact, '11111'B); } + } + } + + f_EUTRA_DeactivateEPS_BearerContext(p_CellId, p_EpsBearerId, v_EpsTi, v_EsmCauseValue, v_T3396); + f_EUTRA_SS_SRBs_DRBs_Release(p_CellId, -, {v_DrbForInternet}); // local release of 2nd default DRB + f_IP_Handling_Stop(IP, cs_IP_StopPDN(PDN_Internet)); + + f_EUTRA_RRC_ConnectionRelease(p_CellId); + } +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_CommonProcedures_C2K.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_CommonProcedures_C2K.ttcn new file mode 100644 index 0000000..6a3c5ed --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_CommonProcedures_C2K.ttcn @@ -0,0 +1,82 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-08-27 17:48:26 +0200 (Tue, 27 Aug 2013) $ +// $Rev: 9461 $ +/******************************************************************************/ + +module EUTRA_CommonProcedures_C2K { + + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from EPS_NAS_MsgContainers all; + import from EPS_NAS_Constants all; + import from EUTRA_Component all; + import from EUTRA_CellInfo all; + import from EUTRA_NASSteps all; + import from EUTRA_RRCSteps all; + import from EUTRA_ConfigurationSteps all; + import from CommonIratDefs all; // for C2k procedure + import from EUTRA_ASP_EUTRA_CDMA2000Tunnelling all; + import from EUTRA_CommonProcedures all; + + //============================================================================ + /* + * @desc to be used in the test case preamble to perform Idle update and preregistration + * N.B. The power level used in this function is tsc_ServingCellRS_EPRE, if you need this cell to be + * set to a different level for your test, please adjust the level after this function. + * @param p_CellId + * @param p_State + * @param p_Is_1XRTT (default value: false) + * @param p_RAND_CDMA2000 (default value: omit) + * @param p_ForcedAttach (default value: NORMAL) + * @param p_PDN_TypeToBeUsed (default value: pdnTypeAsSupportedByUE) @sic R5-106611 R5-120234 sic@ + * @status APPROVED (LTE_IRAT) + */ + function f_EUTRA_Preamble_CDMA2000_PreRegistration(EUTRA_CellId_Type p_CellId, + IDLEUPDATED_STATE_Type p_State, + boolean p_Is_1XRTT := false, + template (omit) RAND_CDMA2000 p_RAND_CDMA2000 := omit, + EUTRA_ATTACH_Type p_ForcedAttach := NORMAL, + PDN_TypeToBeUsed_Type p_PDN_TypeToBeUsed := pdnTypeAsSupportedByUE) runs on EUTRA_PTC + { /* @sic R5s130347: local GuardTimer sic@ */ + var NAS_MSG_Indication_Type v_NAS_Ind; + timer t_GuardTimer := tsc_GuardTimePreamble; + + t_GuardTimer.start; + + // First switch cell back on + f_EUTRA_SetCellPower(p_CellId, tsc_ServingCellRS_EPRE); + + // Switch on UE + f_EUTRA_SwitchOnUEandStartIP(p_CellId); // @sic R5s120065 sic@ + + // Now continue with the procedure + + v_NAS_Ind := f_EUTRA_IdleUpdated_Step1_4(p_CellId, PREAMBLE, NORMAL); // @sic R5s110176 sic@ + //Send co-ordination message for the Preparing C2K SS for pre-registration + f_IRAT_SendCoOrd(CDMA2000, cms_IRAT_Trigger); + f_EUTRA_IdleUpdated_Step5_15(p_CellId, + p_State, + p_ForcedAttach, + v_NAS_Ind, + p_PDN_TypeToBeUsed); + f_EUTRA_NAS_AttachComplete(p_CellId, tsc_EpsDefaultBearerId, noDelay); //@sic R5-121276 R5s120891 sic@ + // steps 16A-16B + if (p_Is_1XRTT) { + f_CSFBParametersProc_1xRTT(p_CellId, p_RAND_CDMA2000); + } + // steps 17-end of preregistration + f_CDMA2000_PreRegistration (p_CellId); + f_EUTRA_DelayForUserPlaneSignalling(); //@sic R5s120891 sic@ + f_EUTRA_RRC_ConnectionRelease(p_CellId); + + t_GuardTimer.stop; + } + +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_CommonSRVCC.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_CommonSRVCC.ttcn new file mode 100644 index 0000000..ed379f5 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_CommonSRVCC.ttcn @@ -0,0 +1,320 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-07 18:37:49 +0200 (Sun, 07 Sep 2014) $ +// $Rev: 12081 $ +/******************************************************************************/ + +module EUTRA_CommonSRVCC { + + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_Component all; + import from EUTRA_CommonDefs all; + import from EUTRA_CommonProcedures all; + import from EPS_NAS_Constants all; + import from EPS_NAS_Templates all; + import from CommonDefs all; + import from EUTRA_Measurement_Templates all; + import from EUTRA_DRB_Templates all; + import from IMS_PTC_CoordMsg all; + import from EUTRA_RRC_Templates all; + import from EUTRA_SRB_Templates all; + import from EUTRA_AspCommon_Templates all; + import from EPS_NAS_TypeDefs all; + import from EUTRA_ConfigurationSteps all; + import from EUTRA_RRCSteps all; + import from EUTRA_ASP_TypeDefs all; + import from EUTRA_SecuritySteps all; + import from EUTRA_NASSteps all; + import from EUTRA_Timing all; + import from EUTRA_CellCfg_Templates all; + + template (value) PDCP_Config cds_PDCP_Config_DRB_UM_RoHC modifies cs_508_PDCP_Config_DRB_UM:= + { /* Default values according to 36.508 cl. 4.8.2.1.2.1 Table 4.8.2.1.2.1-1 + HARQ profiles */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + headerCompression := { + rohc := { + maxCID := 15, + profiles := { + profile0x0001 := true, + profile0x0002 := true, + profile0x0003 := false, + profile0x0004 := false, + profile0x0006 := false, + profile0x0101 := false, + profile0x0102 := false, + profile0x0103 := false, + profile0x0104 := false + } + } + } + }; + + //@sic R5s140022 sic@ + template (value) RadioBearerList_Type cs_DrbConfigList_SRVCC_Def := {cs_OneDRB_ConfigAM(tsc_DRB1), cs_OneDRB_ConfigUM(tsc_DRB2, cds_PDCP_Config_DRB_UM_RoHC, -, true)}; /* @status APPROVED (LTE_A, LTE_IRAT) */ + + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_SRVCC_FDD(RRC_TransactionIdentifier p_RRC_TI, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq1, + AllowedMeasBandwidth p_MeasurementBandwidth1, + ARFCN_ValueUTRA p_CarrierFreq, + PhysCellIdUTRA_FDD p_PhysCellIdUTRA_FDD) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_508_RRCConnectionReconfiguration_ConditionMEAS(p_RRC_TI, + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_2Entries(1, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq1, p_MeasurementBandwidth1), + tsc_IdMeasObject_f8, + cs_MeasObject_measObjectUTRA(p_CarrierFreq, + 0, + omit, + cs_MeasObjectUTRA_cellsToAddModList_FDD(cs_CellsToAddModListUTRA_FDD_1Entry(1, p_PhysCellIdUTRA_FDD)), + omit)), + omit, + cs_ReportConfigToAddModList_1Entry(1, cs_ReportConfig_reportConfigInterRAT_eventB2_UTRA_RSCP(-72, -76, 3, ms0, 6, ms1024, r1)), // @sic R5s140020 sic@ + omit, + cs_MeasIdToAddModList_1Entry(1, tsc_IdMeasObject_f8, 1), + cs_QuantityConfig(cs_QuantityConfigEUTRA(omit, omit), + cs_QuantityConfigUTRA(cpich_RSCP, pccpch_RSCP, fc3), + omit, + omit), + cs_508_MeasGapConfig_GP1)); + + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_SRVCC_TDD(RRC_TransactionIdentifier p_RRC_TI, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq1, + AllowedMeasBandwidth p_MeasurementBandwidth1, + ARFCN_ValueUTRA p_CarrierFreq, + PhysCellIdUTRA_TDD p_PhysCellIdUTRA_TDD) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_508_RRCConnectionReconfiguration_ConditionMEAS(p_RRC_TI, + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_2Entries(1, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq1, p_MeasurementBandwidth1), + tsc_IdMeasObject_f8, + cs_MeasObject_measObjectUTRA(p_CarrierFreq, + 0, + omit, + cs_MeasObjectUTRA_cellsToAddModList_TDD(cs_CellsToAddModListUTRA_TDD_1Entry(1, p_PhysCellIdUTRA_TDD)), + omit)), + omit, + cs_ReportConfigToAddModList_1Entry(1, cs_ReportConfig_reportConfigInterRAT_eventB2_UTRA_RSCP(-72, -76, 3, ms0, 6, ms1024, r1)), // @sic R5s140020 sic@ + omit, + cs_MeasIdToAddModList_1Entry(1, tsc_IdMeasObject_f8, 1), + cs_QuantityConfig(cs_QuantityConfigEUTRA(omit, omit), + cs_QuantityConfigUTRA(cpich_RSCP, pccpch_RSCP, fc3), + omit, + omit), + cs_508_MeasGapConfig_GP1)); + + + template (present) RRCConnectionReestablishmentComplete_v8a0_IEs cr_RRCConnectionReestablishmentComplete_v8a0_IEsAny := + { /* @status APPROVED (LTE_A) */ + lateNonCriticalExtension := *, + nonCriticalExtension := cr_RRCConnectionReestablishmentComplete_v1020_IEsAny ifpresent + }; + + template (present) RRCConnectionReestablishmentComplete_v1020_IEs cr_RRCConnectionReestablishmentComplete_v1020_IEsAny := + { /* @status APPROVED (LTE_A) */ + logMeasAvailable_r10 := *, + nonCriticalExtension := cr_RRCConnectionReestablishmentComplete_v1130_IEsAny ifpresent + }; + + template (present) RRCConnectionReestablishmentComplete_v1130_IEs cr_RRCConnectionReestablishmentComplete_v1130_IEsAny := + { /* @status APPROVED (LTE_A) */ + connEstFailInfoAvailable_r11 := *, + nonCriticalExtension := * + }; + + template (value) DRB_ToAddModList cs_DRB_ToAddMod_DEFAULT_UM_RoHC(DRB_Identity p_DRB_Id) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_508_DRB_ToAddMod_Common(p_DRB_Id, + cds_PDCP_Config_DRB_UM_RoHC, + cs_508_RLC_Config_DRB_UM, + cs_508_LogicalChannelConfig_DRB_UM) + }; + + + + + //---------------------------------------------------------------------------- + + /* + * @desc + * @param p_CellId + * @status APPROVED (LTE_A) + */ + function f_EUTRA_RbEst_NoPaging(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { + f_EUTRA_ServiceRequestAndActivate_SRB2_DRB(p_CellId, + 0, + 0, + omit, + omit, + omit, + omit, + omit, + false, + -, + omit); + + } + + /* + * @desc Common function to extablish MO IMS speech call over LTE + * @param p_CellId + * @status APPROVED (LTE_A) + */ + function f_EUTRA_GenericIMS_MO_SpeechCallInitiation(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { + // Trigger the UE to make the call + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); + + //@siclog "Steps 1-8" siclog@ + f_EUTRA_RbEst_NoPaging(p_CellId); + // Send trigger to IMS PTC + // Steps 9 to 11 are executed in IMS PTC + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); // @sic R5s140572 sic@ + } + + /* + * @desc Common function to extablish MT IMS speech call over LTE + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_EUTRA_GenericIMS_MT_SpeechCall(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { + var ProcedureTransactionIdentifier v_EpsProcedureTransactionId := '00'O; + var template (value) RadioResourceConfigDedicated v_RadioResourceConfigDedicated; + var template (omit) DRX_Config v_DRX_Config := f_GetUeDrxConfig(DRX_S); // @sic R5s140618 change 1 sic@ + var SubFrameTiming_Type v_SubFrameTiming; + var template (value) MAC_MainConfig_Type v_MAC_MainConfig := cs_MAC_MainConfig_Explicit(cs_MAC_MainConfig_Common(-, v_DRX_Config)); // @sic R5s140618 change 1 sic@ + + v_RadioResourceConfigDedicated := cs_RadioResourceConfig_DRB_RECONFIG(cs_DRB_ToAddMod_DEFAULT_UM_RoHC(tsc_DRB2), + v_MAC_MainConfig); + /* @sic R5s140161 sic@ */ + + //Steps 1-8 + f_EUTRA_RbEst_Def(p_CellId); + // Send trigger to IMS PTC + // Steps 9 to 12 are executed in IMS PTC + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); + + //Wait Trigger from IMS PTC + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); + // DRX Activation on SS side. + if (isvalue(v_DRX_Config)) { // @sic R5s140618 change 1 sic@ + f_EUTRA_SS_DrxCtrlConfig(p_CellId, cs_DrxCtrl_Config(valueof(v_DRX_Config))); /* configure DRX at the SS; @sic R5s100630 R5s120054 sic@ */ + } + v_SubFrameTiming := f_EUTRA_GetNextSendOccasion (p_CellId, 100 + 20); + + + //Steps 13-15 + SRB.send(cas_SRB1_RrcNasPdu_REQ(eutra_Cell1, + cs_TimingInfo(v_SubFrameTiming.SFN.Number, v_SubFrameTiming.Subframe.Number), + cs_RRCConnectionReconfiguration_Common(tsc_RRC_TI_Def, + omit, + omit, + v_RadioResourceConfigDedicated , + omit), + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_508_ActDedicatedEPSBearerCxtReq_SRVCC(tsc_EpsDedicatedBearerId, //@sic R5s140161 sic@ + v_EpsProcedureTransactionId, + cs_LinkedId(hex2bit(tsc_EpsDefaultBearerId)), + cds_EPS_QoS_Dedicated_4, // According to Context#4 in TS 36.508 + f_EUTRA_Get_508_TrafficFlowTemplate(4))))); // According to Context#4 in TS 36.508 + + //Step 2 + //Check: Does the UE transmit an RRCConnectionReconfigurationComplete message? + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, + cr_508_RRCConnectionReconfigurationComplete(tsc_RRC_TI_Def))); + + //Receive ActDedicatedEPSBearerCxtAccept + //@sic R5s130807 sic@ + SRB.receive(car_SRB2_NasPdu_IND(eutra_Cell1, cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_ActDedicatedEPSBearerCxtAccept(tsc_EpsDedicatedBearerId)))); + + + + + // Send trigger to IMS PTC + // Steps 16 to 26 are executed in IMS PTC + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); + + //Wait Trigger from IMS PTC + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); + } + + /* + * @desc create cell and send out system information The UM bearer is configured for RoHC profiles + * @param p_CellId + * @param p_DiscardULDataUM (default value: DISCARD_UM_DATA) + * @param p_UseBigGrants (default value: USE_BIG_GRANTS) + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_EUTRA_CellConfig_DefPlusUM_RoHC(EUTRA_CellId_Type p_CellId, + template (omit) EUTRA_DiscardUlDataUM_Type p_DiscardULDataUM := DISCARD_UM_DATA, + template (omit) EUTRA_UseBigGrants_Type p_UseBigGrants := USE_BIG_GRANTS) runs on EUTRA_PTC + { /* @sic R5s130681: optional parameter p_DiscardULDataUM sic@ */ + /* @sic R5s140160, R5w140109: optional parameter p_DiscardULDataUM sic@ */ + f_EUTRA_CellConfig_DefPlusUM(p_CellId, cds_PDCP_Config_DRB_UM_RoHC, p_DiscardULDataUM, p_UseBigGrants); + } + + /* + * @desc Stop Default UL Grant transmission, stop transmission of TA commands and reset of SRB[0..2] and DRB's with maintain of PDCP Count + * @param p_CellId + * @param p_DrbConfigList (default value: cs_DrbConfigList_SRVCC_Def) + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @param p_DelayBeforeResetInMilliSec (default value: 0) + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_EUTRA_SS_SRBs_DRBs_Reset_StopULGrant_noPUCCHSync_PDCP_CountMaintian(EUTRA_CellId_Type p_CellId, + template (value) RadioBearerList_Type p_DrbConfigList := cs_DrbConfigList_SRVCC_Def, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now, + integer p_DelayBeforeResetInMilliSec := 0) runs on EUTRA_PTC + { + var PdcpCountInfoList_Type v_PdcpCountInfoListAmDrbs; // SNs for the AM DRBs only + var DRB_IdentityList_AllAndAMonly_Type v_DRB_IdentityList; + var DRB_IdentityList_Type v_DRB_IdentityUM_List := {}; + var RadioBearerList_Type v_RBList_AM; + var DRB_Identity v_DRB_Identity; + var integer k; + var integer i := 0; + var integer j := 0; + + // Get list of ALL DRB's and AM DRB's + v_DRB_IdentityList := f_EUTRA_DRB_IdentityList(p_DrbConfigList); + + v_PdcpCountInfoListAmDrbs := f_EUTRA_SS_PdcpCount_GetAmDrbs(p_CellId, v_DRB_IdentityList.AMonly); + + //Generate UM DRB list and AM RB List + for (k:=0; k < lengthof(p_DrbConfigList); k:= k+1) { + v_DRB_Identity := valueof(p_DrbConfigList[k].Id.Drb); + if (ischosen(p_DrbConfigList[k].Config.AddOrReconfigure.Rlc.Rb.UM )) { + v_DRB_IdentityUM_List[i] := v_DRB_Identity; + i := i+1; + } + else if (ischosen(p_DrbConfigList[k].Config.AddOrReconfigure.Rlc.Rb.AM)) { + v_RBList_AM[j] := valueof(p_DrbConfigList[k]); + j := j+1; + } + } + + if (p_DelayBeforeResetInMilliSec > 0) { + f_Delay (int2float(p_DelayBeforeResetInMilliSec) / 1000.0); + } + f_EUTRA_StopULGrantTransmission(p_CellId, cs_TimingInfo_Now); + // Release all SRB's and DRB's + f_EUTRA_SS_SRBs_DRBs_Release(p_CellId, -, v_DRB_IdentityList.All); + // Configure all SRB's and AM DRB's + f_EUTRA_SS_SRBs_DRBs_Config(p_CellId, -, v_RBList_AM ); + // Configure all UM DRB's + for (k:=0; k < lengthof(v_DRB_IdentityUM_List); k:= k+1) { + f_EUTRA_SS_CommonRadioBearerConfig_SingleDRB(p_CellId, cs_OneDRB_ConfigUM(v_DRB_IdentityUM_List[k], cds_PDCP_Config_DRB_UM_RoHC, -, true)); + } + f_EUTRA_SS_PdcpCount_Set(p_CellId, v_PdcpCountInfoListAmDrbs, p_TimingInfo); + } +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_Component.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_Component.ttcn new file mode 100644 index 0000000..f8eb44c --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_Component.ttcn @@ -0,0 +1,517 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-07 18:37:49 +0200 (Sun, 07 Sep 2014) $ +// $Rev: 12081 $ +/******************************************************************************/ + +module EUTRA_Component { + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from CommonDefs all; + import from TestcaseProperties all; + import from EUTRA_CommonDefs all; + import from EUTRA_ASP_TypeDefs all; // EUTRA ASPs and port definitions + import from EUTRA_ASP_DrbDefs all; // EUTRA ASPs and port definitions + import from EUTRA_ASP_SrbDefs all; // EUTRA ASPs and port definitions + import from EUTRA_ASP_NasCtrl all; // EUTRA ASPs and port definitions + import from EUTRA_ASP_VirtualNoiseDefs all; + import from EUTRA_ASP_CDMA2000TunnellingDefs all; + import from UpperTesterCommon all; + import from UpperTesterPtcToMtcDefs all; // all messages being defined to communicate with the upper tester; port definitions + import from CommonIratDefs all; // all messages being defined to communicate Geran/Utran components; port definitions + import from IP_PTC_CtrlMsgs all; + import from IMS_PTC_CoordMsg all; + import from EUTRA_SecurityFunctions all; + import from NAS_CommonTypeDefs all; + import from EUTRA_SRB_Templates all; + import from EUTRA_Parameters all; + import from EUTRA_AuxiliaryFunctions all; + + //============================================================================ + // cell info: + //---------------------------------------------------------------------------- + + type enumerated Combination_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + /* Combinations of system information blocks acc. to 36.508 Table 4.4.3.1.1-1; */ + /* @sic R5-113658 R5-140075: new combination sic@ */ + c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c10a, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21 + }; + + type record RNTI_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + C_RNTI C_RNTI + }; + + type record EUTRA_CellSysInfo_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + // type defined to contain all sysinfo related to a cell + BcchInfo_Type BCCH_Info, // BCCH PDUs + Combination_Type Combination, // Combinations of system information blocks (combinition acc. 36.508 cl. 4.4.3.1.1) + boolean SB1_ValueTagChanged // set to TRUE after SB1ValueTag changed, set to FALSE after SB1 delivered to SS. + }; + + type record NAS_Parameter_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + GutiParameters_Type Guti_Parameters, // Guti parameters: MME groupId, MME code, M_TMSI + TrackingAreaCode TrackingAreaCode, // TAC applied in the cell + NAS_Lac LocationAreaCode // Location Area Id, to be used in combined procedures and CS fallback + }; + + type record EUTRA_FDD_TDD_CellInfo_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + EUTRA_FDD_TDD_Mode_Type FDD_TDD, // FDD or TDD mode + CQI_ReportPeriodic cqi_ReportConfig, + SoundingRS_UL_ConfigDedicated soundingRS_UL_Config, + PUCCH_ConfigDedicated pucch_Config, + TDD_SubframeAssignment_Type TDD_SubframeAssignment optional, // @sic R5-096691 sic@ + SR_ConfigIndex_Type sr_ConfigIndex // @sic R5-102177 sic@ + }; + + type record Frequency_IE_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + FreqBandIndicator FrequencyBandIndicator, // Frequency band indicator + Dl_Bandwidth_Type DL_ChBandwidth, // DL channel bandwidth + Ul_Bandwidth_Type UL_ChBandwidth optional, // UL channel bandwidth + CarrierFreqEUTRA UL_DL_Earfcn // UL and DL EARFCN + }; + + type record CellIdentities_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + CellIdentity CellIdentity, // Cell ID + PhysCellId PhysicalCellId // Physical cell ID + }; + + type record ReferenceCellPower_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + AbsoluteCellPower_Type MaxReferencePower, + Attenuation_Type Attenuation + }; + + type record PhysicalParameters_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + @sic R5s090180 sic@ */ + CfiValue_Type Cfi, + RACH_TimingAdvance_Type RAR_TA, // Random access response Timing Advance @sic R5-096691 sic@ + SR_PUCCH_ResourceIndex_Type sr_PUCCH_ResourceIndex, // @sic R5s090312 sic@ + P_b_Type PDSCH_p_b // @sic R5-100786 sic@ + }; + + type record AntennaInfo_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + AntennaInfoCommon SS_AntennaInfoCommon, + AntennaInfoCommon AntennaInfoCommon optional, + AntennaInfoDedicated SS_AntennaInfoDedicated, + PhysicalConfigDedicated_AntennaInfo_Type AntennaInfoDedicated + }; + + type record EUTRA_CellInfo_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + // this structure contain the information describing an EUTRA cell configuration + CellIdentities_Type CellIds, // cell ID + physical cell ID + Frequency_IE_Type Frequency, // Band, Bandwidth, UL EARFCN, DL EARFCN + EUTRA_FDD_TDD_CellInfo_Type FDD_TDD_Info, // Include all FDD/TDD related cell information + EUTRA_CellSysInfo_Type Sysinfo, // Sysinfo + NAS_Parameter_Type NAS_Parameters, // PLMN_List, TAC, Guti @sic R5s100240 delete PcchConfiguration field sic@ + CellTimingInfo_Type CellTimingInfo, // Tcell and SFN offset + ReferenceCellPower_Type ReferencePower, // Cell power configuration + CellConfigCapability_Type CellConfigCapability, // broadcastOnlyCell, minimumUplinkCell, fullCell + RNTI_Type RNTI, // RNTI associated to the cell + PhysicalParameters_Type PhysicalParameters, // Additional physical parameters + AntennaInfo_Type AntennaInfo, // Parameters for antenna info @sic R5-100786 sic@ + DrxCtrl_Type DrxCtrl, // @sic R5-104796 DRX support sic@ + MeasGapCtrl_Type MeasGapCtrl, // @sic R5s110743 sic@ + boolean NoUL_Frequency // Set to TRUE when no UL frequency is applied in the band (e.g. band 29) @sic R5-134786 sic@ + }; + + type record length(tsc_EUTRA_MaxNumberOfCells) of EUTRA_CellInfo_Type EUTRA_CellInfoList_Type; /* array of Cells; @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + + //============================================================================ + // EUTRA PTC: + //---------------------------------------------------------------------------- + + type enumerated EUTRA_Default_Enum_Type { /* refers to common default alt_EUTRA_Standard_Default; + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + StandardDefault + }; + + type record EUTRA_MobileInfo_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + NAS_Tmsi Tmsi, + NAS_P_Tmsi P_Tmsi, + UE_EUTRA_Capability EUTRA_Capability, + B3_Type AssignedPdnType, /* tsc_PdnType_IPv4v6, tsc_PdnType_IPv4v6, tsc_PdnType_IPv4v6 as assigned to the UE; + @sic R5-112600 sic@ */ + EmergencyNumList LocalEmergencyNumberList /* emergency number list sent by UE in the ATTACH in the preamble @sic R5-125276 sic@ */ + }; + + type enumerated EUTRA_VerdictCtrl_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + normal, /* verdict assignments as for normal L3 signalling test */ + layer2 /* verdict assignments for layer2 test: FAIL for unexpected events on DRB ports */ + }; + + type enumerated EUTRA_HarqErrorHandling_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + ignore, /* ignore HARQ error indications */ + raiseInconc, /* assign INCONC when there is a HARQ error indication */ + allowOneRetransmission /* allow up-to one harq retransmission + @sic R5s110176 BASELINE MOVING 2011 sic@ */ + }; + + type record EUTRA_Ctrl_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + default Default, /* default behaviour being activated on EUTRA */ + boolean TestBody, /* true: => fail may be assigend + false: => inconc is assigned instead of fail */ + EUTRA_VerdictCtrl_Type VerdictCtrl, /* Control the assignment of FAIL/INCOCN in default behaviour */ + EUTRA_HarqErrorHandling_Type HarqErrorHandling, /* @sic R5-106675 change 1 sic@ */ + EUTRA_UseBigGrants_Type GrantType /* @sic R5s140676 Change 2 sic@ */ + }; + + type record EUTRA_Global_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + EUTRA_Ctrl_Type Ctrl, + EUTRA_SecurityParams_Type Security, + EUTRA_CellInfoList_Type CellArray, + EUTRA_MobileInfo_Type MobileInfo + }; + + type component EUTRA_PTC { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + var EUTRA_Global_Type vc_EUTRA_Global; + + port EUTRA_SYSTEM_PORT SYS; + port EUTRA_SYSIND_PORT SYSIND; + port EUTRA_VNG_PORT VNG; + port CDMA2000_TUNNELLING_PORT C2KTUNNEL; /* @sic C2K TUNNELLING sic@ */ + port EUTRA_SRB_PORT SRB; + port EUTRA_NASCTRL_PORT NASCTRL; + port EUTRA_DRB_PORT DRB; + port EUTRA_MRB_PORT MRB; + + port UT_PTC_MTC_PORT UT; + + port IRAT_CO_ORD_PORT UTRAN; + port IRAT_CO_ORD_PORT GERAN; + port IRAT_CO_ORD_PORT CDMA2000; + + port IP_RAT_CTRL_PORT IP; /* @sic R5s100135 sic@ */ + port IMS_IPCAN_CO_ORD_PORT IMS[tsc_NoOfPDNs]; + }; + + type component EUTRA_SYSTEM { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + port EUTRA_SYSTEM_PORT E_SYS; + port EUTRA_SYSIND_PORT E_SYSIND; + port EUTRA_VNG_PORT E_VNG; + port CDMA2000_TUNNELLING_PORT E_C2KTUNNEL; /* @sic C2K TUNNELLING sic@ */ + port EUTRA_DRB_PORT E_DRB; + port EUTRA_MRB_PORT E_MRB; + }; + + //============================================================================ + /* + * @desc Map EUTRA's system ports + * @param p_Eutra + * @param p_C2KTunneling (default value: false) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_EUTRA_PTC_Map(EUTRA_PTC p_Eutra, + boolean p_C2KTunneling := false) + { + map(p_Eutra:SYS, system:E_SYS); + map(p_Eutra:SYSIND, system:E_SYSIND); + map(p_Eutra:DRB, system:E_DRB); + + if (f_GetTestcaseAttrib_Qbased_Rsrq(testcasename())) { /* virtual noise generator for RSRQ test cases */ + map(p_Eutra:VNG, system:E_VNG); + } + if (f_GetTestcaseAttrib_Mbms(testcasename())) { /* Map the MRB port only for MBMS test cases */ + map(p_Eutra:MRB, system:E_MRB); + } + if (p_C2KTunneling) { + map(p_Eutra:C2KTUNNEL, system:E_C2KTUNNEL); + } + } + + //============================================================================ + /* + * @desc send back IPCAN specific information to the IMS PTC + * @return template (value) IPCAN_INFO_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_IMS_IpcanInfo() runs on EUTRA_PTC return template (value) IPCAN_INFO_Type + { + var IPCAN_RAN_Type v_RanType; + var template (omit) integer v_AuthResLength; + var AccessStratumRelease v_AccessStratumRelease := vc_EUTRA_Global.MobileInfo.EUTRA_Capability.accessStratumRelease; + var template (omit) integer v_UE_Release := f_ConvertAccessStratumReleaseToInteger(v_AccessStratumRelease); + + if (px_ePrimaryFrequencyBand < 33) { v_RanType := EUTRA_FDD; } + else { v_RanType := EUTRA_TDD; } + + v_AuthResLength := vc_EUTRA_Global.Security.AuthParams.XRESLength; + + return cs_IPCAN_INFO(v_RanType, v_UE_Release, v_AuthResLength); + } + + /* + * @desc Handling of async. queries sent from the IMS PTC + * @param p_ImsCoorPort + * @status APPROVED (IMS,IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + altstep a_EUTRA_IMS_QueryHandler(IMS_IPCAN_CO_ORD_PORT p_ImsCoorPort) runs on EUTRA_PTC + { + [] p_ImsCoorPort.receive(cmr_IMS_IPCAN_Command(IPCAN_QUERY)) + { + p_ImsCoorPort.send(cms_IPCAN_IMS_QueryResponse(f_EUTRA_IMS_IpcanInfo())); + } + } + + //============================================================================ + // standard default behaviour: + + template (present) SYSTEM_CTRL_CNF cr_SYSTEM_CTRL_CNF_Any := ?; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + template (present) SYSTEM_IND cr_SYSTEM_IND_Any := ?; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + template (present) SRB_COMMON_IND cr_SRB_COMMON_IND_Any := ?; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + template (present) NAS_CTRL_CNF cr_NAS_CTRL_CNF_Any := ?; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + template (present) DRB_COMMON_IND cr_DRB_COMMON_IND_Any := ?; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + template (present) UT_COMMON_CNF cr_UT_COMMON_CNF_Any := ?; + + + /* + * @desc default behaviour does not cover coordination ports to other PTCs; + * this is to allow other PTCs to send sync mssages at any time: + * these messages are in the port's queue until being handled by the EUTRA PTC + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + altstep a_EUTRA_StandardDefault() runs on EUTRA_PTC + { /* @sic R5-101050: New clause in 36.523-3 "B.4.5 Verdict Assignment" => classification of FAIL/INCONC sic@ */ + /* @sic R5s130133 additional changes: handling of queries from the IMS PTC sic@ */ + var SYSTEM_IND v_SYSTEM_IND; + var SRB_COMMON_IND v_SRB_COMMON_IND; + var charstring v_Msg; + var integer v_CURRENT_TX_NB; + + [] SYS.receive (cr_SYSTEM_CTRL_CNF_Any) { + /* unexpected CNF shall always result in INCONC */ + all timer.stop; + f_SetVerdictInconc(__FILE__, __LINE__, "unexpected receive event at port SYS"); + } + + [] SYSIND.receive (cr_SYSTEM_IND_Any) -> value v_SYSTEM_IND { + if (ischosen(v_SYSTEM_IND.Indication.HarqError)) { + + select (vc_EUTRA_Global.Ctrl.HarqErrorHandling) { /* @sic R5-106675 change 1 sic@ */ + case (ignore) { + repeat; + } + case (allowOneRetransmission) { + if (ischosen(v_SYSTEM_IND.Indication.HarqError.UL)) { + v_CURRENT_TX_NB := v_SYSTEM_IND.Indication.HarqError.UL.CURRENT_TX_NB; + } else { + v_CURRENT_TX_NB := v_SYSTEM_IND.Indication.HarqError.DL.CURRENT_TX_NB; + } + if (not (v_CURRENT_TX_NB > 1)) { /* not more than one retransmission */ + repeat; + } + } + case else { + // don't repeat but terminate test case + } + } + } + all timer.stop; + if (ischosen(v_SYSTEM_IND.Indication.Error)) { + /* error indicated by the system simulator shall always result in INCONC */ + f_SetVerdictInconc(__FILE__, __LINE__, "error indicated at port SYS"); + } else { + /* L1/MAC indications: all of these indications occur only when being activated by TTCN before */ + if (ischosen(v_SYSTEM_IND.Indication.RachPreamble) or + ischosen(v_SYSTEM_IND.Indication.SchedReq) or + ischosen(v_SYSTEM_IND.Indication.UL_HARQ) or + ischosen(v_SYSTEM_IND.Indication.HarqError)) { /* @sic R5s100135 sic@ */ + /* L1 indications: + * at layer 1 transmission errors may occur; therefore in general this is an unspecific behaviour */ + f_SetVerdictInconc(__FILE__, __LINE__, "unexpected L1 indication at port SYSIND"); + } else { + /* MAC indications: + * BSR, C_RNTI, PHR: within the test body a FAIL shall be assigned */ + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "unexpected MAC indication at port SYSIND"); + } + } + } + [] SRB.receive (cr_SRB_COMMON_IND_Any) -> value v_SRB_COMMON_IND { + /* unexpected L3 signalling message */ + all timer.stop; + if (not ispresent(v_SRB_COMMON_IND.Signalling.Rrc)) { + /* unexpected NAS message received in ULInformationTransfer => shall cause a FAIL when received in the test body */ + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "unexpected NAS PDU at port SRB"); + } else if (not ispresent(v_SRB_COMMON_IND.Signalling.Nas)) { + /* unexpected RRC message received => shall cause a FAIL when received in the test body */ + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "unexpected RRC PDU at port SRB"); + } else { + /* unexpected RRC message with piggybacked NAS PDU received => shall cause a FAIL when received in the test body */ + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "unexpected RRC PDU with piggybacked NAS PDU at port SRB"); + } + } + [] NASCTRL.receive (cr_NAS_CTRL_CNF_Any) { + /* unexpected CNF shall always result in INCONC */ + all timer.stop; + f_SetVerdictInconc(__FILE__, __LINE__, "unexpected receive event at port NASCTRL"); + } + [] DRB.receive (cr_DRB_COMMON_IND_Any) { + /* unexpected data at the DRB port */ + all timer.stop; + + v_Msg := "unexpected data at port DRB"; + if (vc_EUTRA_Global.Ctrl.VerdictCtrl == layer2) { /* user plane data is part of the test purpose */ + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, v_Msg); + } else { /* user plane data is not part of the test purpose */ + f_SetVerdictInconc(__FILE__, __LINE__, v_Msg); + } + } + // @sic R5s140316 sic@ + [] a_EUTRA_IMS_QueryHandler(IMS[tsc_Index_PDN1]) { /* @sic R5s130133 additional changes sic@ */ + repeat; + } + [] a_EUTRA_IMS_QueryHandler(IMS[tsc_Index_PDN2]) { /* @sic R5s130133 additional changes sic@ */ + repeat; + } + [] any timer.timeout { + /* Note: there is no way to distinguish local timers in the default behaviour + * => there can be either an INCONC or a FAIL in the default behaviour; + * => we assign an INCONC - when there shall be FAIL in case of a timeout + * this needs to be handled where the timer is declared */ + all timer.stop; + f_SetVerdictInconc(__FILE__, __LINE__, "unexpected timeout"); + } + } + + //---------------------------------------------------------------------------- + /* + * @desc to activate the standard default behaviour + * @param p_Default identifies a standard behaviour to be activated + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_ActivateDefault(EUTRA_Default_Enum_Type p_Default) runs on EUTRA_PTC + { + deactivate(vc_EUTRA_Global.Ctrl.Default); + + select (p_Default) { + case (StandardDefault) { + vc_EUTRA_Global.Ctrl.Default := activate(a_EUTRA_StandardDefault()); + } + case else { + FatalError (__FILE__, __LINE__, "unknown default behaviour"); + } + } + } + //---------------------------------------------------------------------------- + /* + * @desc additional default behaviour to be activated on top of the standard default behaviour + * when periodical MeasurmentReports shall be ignored + * @param p_CellId + * @param p_RrcPdu .. shall be a periodical MeasurmentReport + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + altstep a_EUTRA_AddDefault_PeriodicalMeasurmentReport(EUTRA_CellId_Type p_CellId, + template (present) UL_DCCH_Message p_RrcPdu) runs on EUTRA_PTC + { + [] SRB.receive( car_SRB1_RrcPdu_IND( p_CellId, p_RrcPdu ) ) + { + repeat; + }; + }; + + //============================================================================ + // common functions: + /* + * @desc to deal with entry and exit of the test body + * @param p_TestBodyFlag + * @param p_VerdictCtrl (optional) + * @status APPROVED (IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_TestBody_Set(boolean p_TestBodyFlag, + EUTRA_VerdictCtrl_Type p_VerdictCtrl := normal) runs on EUTRA_PTC + { + vc_EUTRA_Global.Ctrl.TestBody := p_TestBodyFlag; + vc_EUTRA_Global.Ctrl.VerdictCtrl := p_VerdictCtrl; + if (p_TestBodyFlag) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "initial preliminary pass"); + } + } + + /* + * @desc Enable error handling for HARQ + * @param p_HarqErrorHandling + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_HarqErrorHandling_Set(EUTRA_HarqErrorHandling_Type p_HarqErrorHandling) runs on EUTRA_PTC + { + vc_EUTRA_Global.Ctrl.HarqErrorHandling := p_HarqErrorHandling; + } + + /* + * @desc set which grant type to be used + * @param p_GrantType + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_GrantType_Set(EUTRA_UseBigGrants_Type p_GrantType) runs on EUTRA_PTC + { + vc_EUTRA_Global.Ctrl.GrantType := p_GrantType; + } + + /* + * @desc get current grant type + * @param p_GrantType + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_GrantType_Get() runs on EUTRA_PTC return EUTRA_UseBigGrants_Type + { + return vc_EUTRA_Global.Ctrl.GrantType; + } + + + + /* + * @desc check whether test body is active + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function fl_EUTRA_TestBody_Check() runs on EUTRA_PTC return boolean { + return vc_EUTRA_Global.Ctrl.TestBody; + } + + /* + * @desc set correct verdict: FAIL is assigned only when being in the test body + * @param p_FileName + * @param p_LineNo + * @param p_Msg + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_SetVerdictFailOrInconc(charstring p_FileName, + LineNo_Type p_LineNo, + charstring p_Msg) runs on EUTRA_PTC + { + if (fl_EUTRA_TestBody_Check()) { + f_SetVerdict(fail, p_FileName, p_LineNo, p_Msg); + } else { + f_SetVerdict(inconc, p_FileName, p_LineNo, p_Msg); + } + self.kill; // => test case will be terminated immediately + } + + /* + * @desc set correct verdict: prelininary PASS is only be assigned when being in the test body + * @param p_FileName + * @param p_LineNo + * @param p_Msg + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_PreliminaryPass(charstring p_FileName, + LineNo_Type p_LineNo, + charstring p_Msg) runs on EUTRA_PTC + { + if (fl_EUTRA_TestBody_Check()) { + f_SetVerdict(pass, p_FileName, p_LineNo, p_Msg); + } + } + + altstep a_WatchdogTimeout_FailOrInconc(timer p_Watchdog, + charstring p_FileName, + LineNo_Type p_LineNo, + charstring p_Msg := "") runs on EUTRA_PTC + { + [] p_Watchdog.timeout { + f_EUTRA_SetVerdictFailOrInconc(p_FileName, p_LineNo, p_Msg); + } + } +} // End of module diff --git a/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_ConfigurationSteps.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_ConfigurationSteps.ttcn new file mode 100644 index 0000000..8aa6a82 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_ConfigurationSteps.ttcn @@ -0,0 +1,1116 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 22:08:20 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12181 $ +/******************************************************************************/ + +module EUTRA_ConfigurationSteps { + + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from CommonDefs all; + import from EUTRA_ASP_TypeDefs all; + import from EUTRA_DRB_Templates all; + import from EUTRA_Component all; + import from EUTRA_CommonDefs all; + import from EUTRA_CellInfo all; + import from EUTRA_SRB_Templates all; + import from EUTRA_CellCfg_Templates all; + import from EUTRA_RRC_Templates all; + import from EUTRA_AspCommon_Templates all; + import from TestcaseProperties all; + + /* + * @desc return true when for the current test case DL CCCH messages shall not be sent with the preconfigured RACH procedure but shall be sent autonomously from TTCN + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_DlCcchMsgInSeparateMacPdu() return boolean + { + var charstring v_TestcaseName := testcasename(); + return f_GetTestcaseAttrib_DlCcchMsgInSeparateMacPdu(v_TestcaseName); + } + + //------------------------------------------------------------------------------------------ + // basic functions: + + /* + * @desc Readio Bearer configuration + * @param p_CellId + * @param p_RadioBearerList + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @param p_CnfFlag (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_SS_CommonRadioBearerConfig(EUTRA_CellId_Type p_CellId, + template (value) RadioBearerList_Type p_RadioBearerList, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now, + template (omit) boolean p_CnfFlag := omit) runs on EUTRA_PTC + { /* @sic R5s100135 sic@ */ + /* @sic R5s100801, R5s110634 additional comments: optional parameter p_CnfFlag sic@ */ + var boolean v_CnfFlag := f_CnfFlag_Set(p_TimingInfo, p_CnfFlag); + + SYS.send(cas_CommonRadioBearerConfig_REQ(p_CellId, p_TimingInfo, p_RadioBearerList, v_CnfFlag)); + if (v_CnfFlag == tsc_CnfReq) { + SYS.receive(car_CommonRadioBearerConfig_CNF(p_CellId)); + } + } + + /* + * @desc Readio Bearer configuration for one DRB + * @param p_CellId + * @param p_RadioBearer + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_SS_CommonRadioBearerConfig_SingleDRB(EUTRA_CellId_Type p_CellId, + template (value) RadioBearer_Type p_RadioBearer, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now) runs on EUTRA_PTC + { /* @sic R5s100072 sic@ */ + var template (value) RadioBearerList_Type v_RadioBearerList := { p_RadioBearer }; + f_EUTRA_SS_CommonRadioBearerConfig(p_CellId, v_RadioBearerList, p_TimingInfo); + } + + /* + * @desc Cell Configuration + * @param p_CellId + * @param p_SYSTEM_CTRL_REQ + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_SS_CommonCellConfig(EUTRA_CellId_Type p_CellId, + template (value) SYSTEM_CTRL_REQ p_SYSTEM_CTRL_REQ) runs on EUTRA_PTC + { /* @sic R5-104796 DRX support sic@ + Note: function updates DRX parameters in cell configuration; in the future the TA period may need to be taken into account too (FFS) */ + var CellConfigInfo_Type v_CellConfigInfo; + var DrxCtrl_Type v_DrxCtrl; + var MeasGapCtrl_Type v_MeasGapCtrl; + + if (not ischosen(p_SYSTEM_CTRL_REQ.Request.Cell)) { + FatalError(__FILE__, __LINE__, "f_EUTRA_SS_CommonCellConfig shall get handed over CellConfigRequest"); + } + if (ischosen(p_SYSTEM_CTRL_REQ.Request.Cell.AddOrReconfigure)) { + v_CellConfigInfo := valueof(p_SYSTEM_CTRL_REQ.Request.Cell.AddOrReconfigure); + if (ispresent(v_CellConfigInfo.Active)) { + if (ispresent(v_CellConfigInfo.Active.CcchDcchDtchConfig)) { + if (ispresent(v_CellConfigInfo.Active.CcchDcchDtchConfig.DrxCtrl)) { + v_DrxCtrl := v_CellConfigInfo.Active.CcchDcchDtchConfig.DrxCtrl; + f_EUTRA_CellInfo_SetDrxCtrl(p_CellId, v_DrxCtrl); + } + if (ispresent(v_CellConfigInfo.Active.CcchDcchDtchConfig.MeasGapCtrl)) { // @sic R5s110743 sic@ + v_MeasGapCtrl := v_CellConfigInfo.Active.CcchDcchDtchConfig.MeasGapCtrl; + f_EUTRA_CellInfo_SetMeasGapCtrl(p_CellId, v_MeasGapCtrl); + } + } + } + } + + SYS.send(p_SYSTEM_CTRL_REQ); + if (valueof(p_SYSTEM_CTRL_REQ.Common.ControlInfo.CnfFlag) == true) { /* @sic R5s100135 sic@ */ + SYS.receive(car_CellConfig_CNF(p_CellId)); + } + } + + /* + * @desc Configuration of DRX for the given cell + * @param p_CellId + * @param p_NewDrxCtrl + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @param p_CnfFlag (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_SS_DrxCtrlConfig(EUTRA_CellId_Type p_CellId, + template (value) DrxCtrl_Type p_NewDrxCtrl, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now, + template (omit) boolean p_CnfFlag := omit) runs on EUTRA_PTC + { /* @sic R5s100801, R5s110634 addtional changes: optional parameter p_CnfFlag sic@ */ + var DrxCtrl_Type v_OldDrxCtrl := f_EUTRA_CellInfo_GetDrxCtrl(p_CellId); + + if (ischosen(p_NewDrxCtrl.None) and ischosen(v_OldDrxCtrl.None)) { + return; + } + if (not ischosen(p_NewDrxCtrl.None) and not ischosen(v_OldDrxCtrl.None)) { + FatalError(__FILE__, __LINE__, "Reconfiguration of DRX - not supported (yet)"); + } + f_EUTRA_SS_CommonCellConfig(p_CellId, cas_DrxCtrl_REQ(p_CellId, p_TimingInfo, p_NewDrxCtrl, p_CnfFlag)); + } + + /* + * @desc Configuration of measurement gaps for the given cell + * @param p_CellId + * @param p_NewMeasGapCtrl + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @param p_CnfFlag (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_SS_MeasGapCtrlConfig(EUTRA_CellId_Type p_CellId, + template (value) MeasGapCtrl_Type p_NewMeasGapCtrl, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now, + template (omit) boolean p_CnfFlag := omit) runs on EUTRA_PTC + { /* Reconfiguration of measurement gaps: + when measurement gaps are already configured SS will only be re-configured when the measurement gap configuration really changes; + in this case since RRCConnectionReconfiguration is scheduled in general (-> f_EUTRA_RRCConnectionReconfiguration_MeasConfig) + the RRCConnectionReconfiguration follows the requirments for the old configuration and then 5ms later SS changes to the new configuration + (i.e. for sending the RLC STATUS PDU to acknowledge the RRCConnectionReconfigurationComplete SS shall already consider the new configuration) + @sic R5s110776 change 2.2 sic@ */ + + var MeasGapCtrl_Type v_OldMeasGapCtrl := f_EUTRA_CellInfo_GetMeasGapCtrl(p_CellId); + + if (match(v_OldMeasGapCtrl, p_NewMeasGapCtrl)) { + return; + } + + f_EUTRA_SS_CommonCellConfig(p_CellId, cas_MeasGapCtrl_REQ(p_CellId, p_TimingInfo, p_NewMeasGapCtrl, p_CnfFlag)); + } + + /* + * @desc Cell Configuration: enable/disable L1 and MAC indications + * @param p_CellId + * @param p_SYSTEM_CTRL_REQ + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_SS_CommonL1MacIndCtrlConfig(EUTRA_CellId_Type p_CellId, + template (value) SYSTEM_CTRL_REQ p_SYSTEM_CTRL_REQ) runs on EUTRA_PTC + { + SYS.send(p_SYSTEM_CTRL_REQ); + if (valueof(p_SYSTEM_CTRL_REQ.Common.ControlInfo.CnfFlag) == true) { + SYS.receive(car_SYSTEM_CTRL_L1MACInd_CNF(p_CellId)); + } + } + + + /* + * @desc Handover configuration + * @param p_CellId + * @param p_SYSTEM_CTRL_REQ + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_SS_PdcpHandoverCtrl(EUTRA_CellId_Type p_CellId, + template (value) SYSTEM_CTRL_REQ p_SYSTEM_CTRL_REQ) runs on EUTRA_PTC + { + SYS.send(p_SYSTEM_CTRL_REQ); + if (valueof(p_SYSTEM_CTRL_REQ.Common.ControlInfo.CnfFlag) == true) { + SYS.receive(car_PdcpHandoverControl_CNF(p_CellId)); + } + } + + //---------------------------------------------------------------------------- + // SRB Configuration + + /* + * @desc SRB Configuration + * @param p_CellId + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_SS_ConfigureSRBs(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now) runs on EUTRA_PTC + { /* @sic R5s100072 sic@ */ + var template (value) RadioBearerList_Type v_SrbList := { + cs_SRB0_ConfigDef, + cs_SRB1_ConfigDef, + cs_SRB2_ConfigDef + }; + f_EUTRA_SS_CommonRadioBearerConfig(p_CellId, v_SrbList, p_TimingInfo); + }; + + + /* + * @desc SRB Configuration + * @param p_CellId + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @status (APPROVED) + */ + function f_EUTRA_SS_ReleaseSRBs(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now) runs on EUTRA_PTC + { /* @sic R5s100072 sic@ */ + var template (value) RadioBearerList_Type v_SrbList := { + cs_SRB_Release(tsc_SRB0), + cs_SRB_Release(tsc_SRB1), + cs_SRB_Release(tsc_SRB2) + }; + f_EUTRA_SS_CommonRadioBearerConfig(p_CellId, v_SrbList, p_TimingInfo); + }; + /* + * @desc SRB Configuration + * @param p_CellId + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @status + */ + function f_EUTRA_SS_ReleaseSRBs1_2(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now) runs on EUTRA_PTC + { /* @sic R5s100072 sic@ */ + var template (value) RadioBearerList_Type v_SrbList := { + cs_SRB_Release(tsc_SRB1), + cs_SRB_Release(tsc_SRB2) + }; + f_EUTRA_SS_CommonRadioBearerConfig(p_CellId, v_SrbList, p_TimingInfo); + }; + //---------------------------------------------------------------------------- + // DRB Configuration + + /* + * @desc DRB Configuration + * @param p_CellId + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_SS_DRB1_DefConfig(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now) runs on EUTRA_PTC + { /* @sic R5s100072 sic@ */ + var template (value) RadioBearerList_Type v_DrbList := { + cs_OneDRB_ConfigAM(tsc_DRB1) + }; + + f_EUTRA_SS_CommonRadioBearerConfig(p_CellId, v_DrbList, p_TimingInfo); + } + + /* + * @desc DRB Configuration + * @param p_CellId + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @status (APPROVED) + */ + function f_EUTRA_SS_DRB1_Release(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now) runs on EUTRA_PTC + { /* @sic R5s100072 sic@ */ + var template (value) RadioBearerList_Type v_DrbList := { + cs_DRB_Release(tsc_DRB1) + }; + + f_EUTRA_SS_CommonRadioBearerConfig(p_CellId, v_DrbList, p_TimingInfo); + } + + /* + * @desc generic configuration for multiple DRBs; + * configures additional DRBs; it is assumed that DRB1 is reserved for the default bearer which is already configured + * @param p_CellId + * @param p_NoOfAddDRBs_AM + * @param p_NoOfAddDRBs_UM + * @param p_DiscardULDataUM (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_SS_DRB_AddConfig(EUTRA_CellId_Type p_CellId, + integer p_NoOfAddDRBs_AM, + integer p_NoOfAddDRBs_UM, + template (omit) EUTRA_DiscardUlDataUM_Type p_DiscardULDataUM := omit) runs on EUTRA_PTC + { /* @sic R5s130681: optional parameter p_DiscardULDataUM sic@ */ + var template (value) RadioBearerList_Type v_DRB_ToAddModList; + var template (omit) boolean v_DiscardULDataUM := omit; + var integer v_DRB_Id; + var integer n, m; + + if (ispresent(p_DiscardULDataUM)) {v_DiscardULDataUM := true;} + + if (p_NoOfAddDRBs_AM + p_NoOfAddDRBs_UM > 0) { // @sic R5s100100 sic@ + v_DRB_Id := tsc_DRB1 + 1; // DRB1 is the default bearer + for (n := 0; n < p_NoOfAddDRBs_AM; n := n + 1) { + v_DRB_ToAddModList[n] := cs_OneDRB_ConfigAM(v_DRB_Id); + v_DRB_Id := v_DRB_Id + 1; + } + for (m := 0; m < p_NoOfAddDRBs_UM; m := m + 1) { + v_DRB_ToAddModList[n+m] := cs_OneDRB_ConfigUM(v_DRB_Id, -, -, v_DiscardULDataUM); + v_DRB_Id := v_DRB_Id + 1; + } + + f_EUTRA_SS_CommonRadioBearerConfig(p_CellId, v_DRB_ToAddModList); + } + }; + + //---------------------------------------------------------------------------- + /* + * @desc Release SRB[0..2] and all given DRBs + * @param p_CellId + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @param p_DrbList (default value: tsc_DrbList_Def) + * @param p_CnfFlag (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_SS_SRBs_DRBs_Release(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now, + DRB_IdentityList_Type p_DrbList := tsc_DrbList_Def, + template (omit) boolean p_CnfFlag := omit) runs on EUTRA_PTC + { /* @sic R5s100801, R5s110634 additional comments: optional parameter p_CnfFlag, R5s110602 sic@ */ + var template (value) RadioBearerList_Type v_SrbDrbList := { + cs_SRB_Release(tsc_SRB1), + cs_SRB_Release(tsc_SRB2) + }; + var integer i := lengthof(v_SrbDrbList); + var integer k; + + for (k:=0; k < lengthof(p_DrbList); k:= k+1) { + v_SrbDrbList[i+k] := cs_DRB_Release(p_DrbList[k]); /* @sic R5s100279 change 1 sic@ */ + } + + f_EUTRA_SS_CommonRadioBearerConfig(p_CellId, v_SrbDrbList, p_TimingInfo, p_CnfFlag); + } + + /* + * @desc Configure SRB[1..2] and given DRBs + * @param p_CellId + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @param p_DrbConfigList (default value: cs_DrbConfigList_Def) + * @param p_CnfFlag (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_SS_SRBs_DRBs_Config(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now, + template (value) RadioBearerList_Type p_DrbConfigList := cs_DrbConfigList_Def, + template (omit) boolean p_CnfFlag := omit) runs on EUTRA_PTC + { /* @sic R5s100801, R5s110634 additional comments: optional parameter p_CnfFlag, R5s110602 sic@ */ + var template (value) RadioBearerList_Type v_SrbDrbList := { + cs_SRB1_ConfigDef, + cs_SRB2_ConfigDef + }; + var integer i := lengthof(v_SrbDrbList); + var integer k; + + for (k:=0; k < lengthof(p_DrbConfigList); k:= k+1) { + v_SrbDrbList[i+k] := p_DrbConfigList[k]; /* @sic R5s100279 change 2 sic@ */ + } + + f_EUTRA_SS_CommonRadioBearerConfig(p_CellId, v_SrbDrbList, p_TimingInfo, p_CnfFlag); + } + + /* + * @desc Reset SRB[0..2] and default DRB + * @param p_CellId + * @param p_DelayBeforeResetInMilliSec (default value: 0) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_SS_SRBs_DRBs_Reset(EUTRA_CellId_Type p_CellId, + integer p_DelayBeforeResetInMilliSec := 0) runs on EUTRA_PTC + { /* Note: this function shall use timing info "Now" only otherwise between release and config there have to be at least 5ms */ + /* @sic R5s100803: new parameter for the delay sic@ */ + if (p_DelayBeforeResetInMilliSec > 0) { + f_Delay (int2float(p_DelayBeforeResetInMilliSec) / 1000.0); + } + f_EUTRA_SS_SRBs_DRBs_Release(p_CellId); + f_EUTRA_SS_SRBs_DRBs_Config(p_CellId); + } + + /* + * @desc Stop Default UL Grant transmission, stop transmission of TA commands and reset of SRB[0..2] and default DRB + * @param p_CellId + * @param p_DelayBeforeResetInMilliSec (default value: 0) + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_SS_SRBs_DRBs_Reset_StopULGrant_noPUCCHSync(EUTRA_CellId_Type p_CellId, + integer p_DelayBeforeResetInMilliSec := 0) runs on EUTRA_PTC + { + if (p_DelayBeforeResetInMilliSec > 0) { + f_Delay (int2float(p_DelayBeforeResetInMilliSec) / 1000.0); + } + f_EUTRA_StopULGrantTransmission(p_CellId, cs_TimingInfo_Now); + f_EUTRA_SS_SRBs_DRBs_Release(p_CellId); + f_EUTRA_SS_SRBs_DRBs_Config(p_CellId); + } + + /* + * @desc return DciUlInfo depending on the current grant type + * @return template (value) DciUlInfo_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_DciUlInfo_Get() runs on EUTRA_PTC return template (value) DciUlInfo_Type + { + var EUTRA_UseBigGrants_Type v_GrantType := f_EUTRA_GrantType_Get(); + var template (value) DciUlInfo_Type v_ULDCIInfo; + select (v_GrantType) { + case (USE_BIG_GRANTS) { + v_ULDCIInfo := cs_DciInfo_CcchDcchDtchUL_BigGrant; + } + case else { + v_ULDCIInfo := cs_DciInfo_CcchDcchDtchUL_Def; + } + } + return v_ULDCIInfo; + } + + /* + * @desc configure "big" UL grants + * @param p_CellId + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_ConfigureBigULGrant(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { + var template (value) DciUlInfo_Type v_ULDCIInfo; + + f_EUTRA_GrantType_Set(USE_BIG_GRANTS); /* @sic R5s140676 Change 2 sic@ */ + v_ULDCIInfo := f_EUTRA_DciUlInfo_Get(); + + f_EUTRA_SS_CommonCellConfig(p_CellId, cas_ULGrantAllocation_REQ(p_CellId, + cs_TimingInfo_Now, + v_ULDCIInfo, + cs_PUCCH_Synch_KeepAsItIs, + cs_UL_GrantConfig_Def)); + } + + //---------------------------------------------------------------------------- + // Cell configurations: + + /* + * @desc create cell and send out system information + * @param p_CellId + * @param p_CA_CellInitialConfig (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_CellConfig_Def(EUTRA_CellId_Type p_CellId, + template (omit) CA_CellInitialConfig_Type p_CA_CellInitialConfig := omit) runs on EUTRA_PTC + { + f_EUTRA_SS_ConfigureActiveCell(p_CellId, p_CA_CellInitialConfig); + f_EUTRA_SS_ConfigureSRBs(p_CellId); + f_EUTRA_SS_DRB1_DefConfig(p_CellId); + } + + /* + * @desc create cell and send out system information: default configuration (SRBs + default DRB) + additional DRBs + * @param p_CellId + * @param p_NoOfAddDRBs_AM + * @param p_NoOfAddDRBs_UM + * @param p_DiscardULDataUM (default value: omit) + * @param p_UseBigGrants (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_CellConfig_DRB_Common(EUTRA_CellId_Type p_CellId, + integer p_NoOfAddDRBs_AM, + integer p_NoOfAddDRBs_UM, + template (omit) EUTRA_DiscardUlDataUM_Type p_DiscardULDataUM := omit, + template (omit) EUTRA_UseBigGrants_Type p_UseBigGrants := omit) runs on EUTRA_PTC + { /* @sic R5s130681: optional parameter p_DiscardULDataUM sic@ */ + /* @sic R5s140160, R5w140109: optional parameter p_DiscardULDataUM sic@ */ + f_EUTRA_CellConfig_Def(p_CellId); + f_EUTRA_SS_DRB_AddConfig(p_CellId, p_NoOfAddDRBs_AM, p_NoOfAddDRBs_UM, p_DiscardULDataUM); + if (ispresent(p_UseBigGrants)) { + f_EUTRA_ConfigureBigULGrant(p_CellId); + } + } + + /* + * @desc create cell and send out system information + * @param p_CellId + * @param p_PdcpConfig (default value: cs_508_PDCP_Config_DRB_UM) + * @param p_DiscardULDataUM (default value: omit) + * @param p_UseBigGrants (default value: omit) + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_CellConfig_DefPlusUM(EUTRA_CellId_Type p_CellId, + template (value) PDCP_Config p_PdcpConfig := cs_508_PDCP_Config_DRB_UM, + template (omit) EUTRA_DiscardUlDataUM_Type p_DiscardULDataUM := omit, + template (omit) EUTRA_UseBigGrants_Type p_UseBigGrants := omit) runs on EUTRA_PTC + { /* @sic R5-120666 sic@ */ + /* @sic R5s130681: optional parameter p_DiscardULDataUM sic@ */ + /* @sic R5s140160, R5w140109: optional parameter p_DiscardULDataUM sic@ */ + var template (omit) boolean v_DiscardULDataUM := omit; + + if (ispresent(p_DiscardULDataUM)) {v_DiscardULDataUM := true;} + + f_EUTRA_CellConfig_Def(p_CellId); + f_EUTRA_SS_CommonRadioBearerConfig_SingleDRB(p_CellId, cs_OneDRB_ConfigUM(tsc_DRB2, p_PdcpConfig, -, v_DiscardULDataUM)); + + if (ispresent(p_UseBigGrants)) { + f_EUTRA_ConfigureBigULGrant(p_CellId); + } + } + + /* + * @desc create cell with SRBs being preconfigured + * @param p_CellId + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_EUTRA_CellConfig_SRBs_Only (EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { + // create cell and send out system information + f_EUTRA_SS_ConfigureActiveCell(p_CellId); + f_EUTRA_SS_ConfigureSRBs(p_CellId); + } + + //---------------------------------------------------------------------------- + /* + * @desc check whether MappingInfo contains given SIB + * @param p_SIB_MappingInfo + * @param p_SIB_Type + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function fl_SibMappingInfo_Check(SIB_MappingInfo p_SIB_MappingInfo, + SIB_Type p_SIB_Type) + return boolean + { + var integer i; + + for (i:=0; i < lengthof(p_SIB_MappingInfo); i := i+1) { + if (p_SIB_MappingInfo[i] == p_SIB_Type) { + return true; + } + } + return false; + } + + /* + * @desc extract scheduling info from SIB1; => whenever SIB scheduling is setup or changed + * this function returns required SS configuration + * @param p_SIB1 + * @param p_FDD_TDD + * @return template (value) AllSiSchedul_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_SS_SetupSchedulingInfo(SystemInformationBlockType1 p_SIB1, + EUTRA_FDD_TDD_Mode_Type p_FDD_TDD) + return template (value) AllSiSchedul_Type + { + var template (value) SiSchedulList_Type v_SiSchedulList; + var template (omit) SiSchedulList_Type v_SiSchedulSegmentList := omit; // @sic R5s110341 sic@ + var integer v_NoOfSIs := lengthof(p_SIB1.schedulingInfoList); // TTCN-3 3.4.1: sizeof replaced by lengthof + var integer v_SubframeOffset; /* offset within the SI-window */ + var integer v_RV; /* @sic R5s100302 change 9; R5s110295 sic@ */ + var integer v_SI_I:=0; /* @sic R5s110341 sic@ */ + var integer v_Segment_I := 0; /* @sic R5-112161 sic@ */ + var integer I; + + for (I := 0; I < v_NoOfSIs; I:= I + 1) { + /* Assigne the subframe offset according to 36.523-3 Table 7.7.2.2; + mapping of the SIBs to the SIs is specified in 36.508 cl. 4.4.3.1.2 "Scheduling of system information blocks" + => there is a maximum of 4 SIs */ + select (p_FDD_TDD) { + case (FDD) { + select (I) { + case (0) { // Subframe offset for SI1 + v_SubframeOffset := 1; + v_RV := 2; + } + case (1) { // Subframe offset for SI2 + v_SubframeOffset := 1; + v_RV := 2; + } + // @sic R5-096691: 3 -> 1 sic@ + case (2) { // Subframe offset for SI3 + v_SubframeOffset := 3; + v_RV := 1; /* @sic R5s100302 change 9 sic@ */ + } + case (3) { // Subframe offset for SI4 + v_SubframeOffset := 7; + v_RV := 1; /* @sic R5s100302 change 9 R5s110016 sic@ */ + } + case (4) { // Subframe offset for SI5 + v_SubframeOffset := 7; + v_RV := 1; /* @sic R5-110471 sic@ */ + } + case else { + FatalError (__FILE__, __LINE__, "No subframe offset defined for that SI"); + } + } + } + case (TDD) { // @sic R5-096691 sic@ + select (I) { + case (0) { // Subframe offset for SI1 + v_SubframeOffset := 0; + v_RV := 0; /* @sic R5s110016 sic@ */ + } + case (1) { // Subframe offset for SI2 + v_SubframeOffset := 0; + v_RV := 0; /* @sic R5s110016 sic@ */ + } + case (2) { // Subframe offset for SI3 + v_SubframeOffset := 15; + v_RV := 1; /* @sic R5s130210 sic@ */ + } + case (3) { + v_SubframeOffset := 15; + v_RV := 1; /* @sic R5s130210 sic@ */ + } // Subframe offset for SI4 + case (4) { + v_SubframeOffset := 15; // @sic r5-110471 sic@ + v_RV := 1; /* @sic R5s130210 sic@ */ + } // Subframe offset for SI5 + case else { + FatalError (__FILE__, __LINE__, "No subframe offset defined for that SI"); + } + } + } + } + + // For SibType11 and SibType12: add the sheduling information to the segmented sheduling List: v_SiSchedulSegmentList + // For other SibTypes add the sheduling in the scheduling list v_SiSchedulList + // @sic R5-112161 sic@ + if (fl_SibMappingInfo_Check(p_SIB1.schedulingInfoList[I].sib_MappingInfo, sibType11) or + fl_SibMappingInfo_Check(p_SIB1.schedulingInfoList[I].sib_MappingInfo, sibType12_v920)) // @sic R5s110342 sic@ + { + v_SiSchedulSegmentList[v_Segment_I] := cs_SiSchedul_Def(p_SIB1.schedulingInfoList[I].si_Periodicity, v_SubframeOffset); + /* @sic R5s100302 change 9 sic@ */ + if (match(dci_1C, v_SiSchedulSegmentList[v_Segment_I].Window[0].DciInfo.Format)) { // @sic R5s110341 sic@ + v_SiSchedulSegmentList[v_Segment_I].Window[0].DciInfo.RedundancyVersionList[0] := v_RV; + } + v_Segment_I := v_Segment_I+1; + } + else + { + v_SiSchedulList[v_SI_I] := cs_SiSchedul_Def(p_SIB1.schedulingInfoList[I].si_Periodicity, v_SubframeOffset); + /* @sic R5s100302 change 9 sic@ */ + if (match(dci_1C, v_SiSchedulList[v_SI_I].Window[0].DciInfo.Format)) { + v_SiSchedulList[v_SI_I].Window[0].DciInfo.RedundancyVersionList[0] := v_RV; + } + v_SI_I := v_SI_I+1; + } + } + return cs_SiSchedulList_Def(p_SIB1.si_WindowLength, v_SiSchedulList, v_SiSchedulSegmentList); + } + + //---------------------------------------------------------------------------- + /* + * @desc basic cell configuration (active cell) + * @param p_CellId + * @param p_CA_CellInitialConfig (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_SS_ConfigureActiveCell(EUTRA_CellId_Type p_CellId, + template (omit) CA_CellInitialConfig_Type p_CA_CellInitialConfig := omit) runs on EUTRA_PTC + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get (p_CellId); + var template (value) AllSiSchedul_Type v_SiSchedul; + var template (value) ContentionResolution_ContainedRlcPdu_Type v_ContentionResolution_ContainedRlcPdu; + var template (value) DL_CCCH_Message v_RrcConnSetup; + var octetstring v_EncodedRrcConnSetup; + //Get FDD or TDD mode from Cell-configuration + var EUTRA_FDD_TDD_Mode_Type v_EUTRA_FDD_TDD_Mode := f_EUTRA_CellInfo_GetFDD_TDD (p_CellId); + + var template (value) StaticCellInfo_Type v_StaticCellInfo; + var template (omit) TDD_Config_v1130 v_TDD_Config_v1130 := omit; + + v_SiSchedul := f_EUTRA_SS_SetupSchedulingInfo(v_CellInfo.Sysinfo.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1, v_EUTRA_FDD_TDD_Mode); /* derive SS's scheduling information from SIB1 */ + + select (v_EUTRA_FDD_TDD_Mode) { + case (FDD) { + if (f_EUTRA_CellInfo_GetNoUL_Frequency(p_CellId)) { + // UL frequency NOT defined in the band @sic R5-134786 sic@ + v_StaticCellInfo := cs_StaticCellInfo_FDD(v_CellInfo.CellIds.PhysicalCellId, + v_CellInfo.Frequency.FrequencyBandIndicator, + v_CellInfo.Frequency.UL_DL_Earfcn.dl_CarrierFreq, + v_CellInfo.Frequency.DL_ChBandwidth, + v_CellInfo.CellTimingInfo.Tcell, /* @sic R5s100029 change 3 sic@ */ + v_CellInfo.CellTimingInfo.SfnOffset, + omit); + + } else { + // UL frequency defined in the band + v_StaticCellInfo := cs_StaticCellInfo_FDD(v_CellInfo.CellIds.PhysicalCellId, + v_CellInfo.Frequency.FrequencyBandIndicator, + v_CellInfo.Frequency.UL_DL_Earfcn.dl_CarrierFreq, + v_CellInfo.Frequency.DL_ChBandwidth, + v_CellInfo.CellTimingInfo.Tcell, /* @sic R5s100029 change 3 sic@ */ + v_CellInfo.CellTimingInfo.SfnOffset, + cs_UplinkStaticCellInfo( // @sic R5134786 sic@ + v_CellInfo.Frequency.UL_DL_Earfcn.ul_CarrierFreq, + v_CellInfo.Frequency.UL_ChBandwidth)); /* @sic R5s100029 change 3 sic@ */ + } + } + + case (TDD) { + if(ispresent(v_CellInfo.Sysinfo.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.nonCriticalExtension.nonCriticalExtension.nonCriticalExtension.tdd_Config_v1130)){ + v_TDD_Config_v1130 := v_CellInfo.Sysinfo.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.nonCriticalExtension.nonCriticalExtension.nonCriticalExtension.tdd_Config_v1130; + } + v_StaticCellInfo := cs_StaticCellInfo_TDD (v_CellInfo.CellIds.PhysicalCellId, + v_CellInfo.Frequency.FrequencyBandIndicator, + v_CellInfo.Frequency.UL_DL_Earfcn.dl_CarrierFreq, + v_CellInfo.Frequency.DL_ChBandwidth, // @sic R5s100190 sic@ + v_CellInfo.CellTimingInfo.Tcell, // @sic R5s100513 sic@ + v_CellInfo.CellTimingInfo.SfnOffset, // @sic R5s100513 sic@ + v_CellInfo.Sysinfo.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.tdd_Config, + v_TDD_Config_v1130); + } + } + + if (f_EUTRA_DlCcchMsgInSeparateMacPdu()) { /* @sic R5-120721 change 3 sic@ */ + v_ContentionResolution_ContainedRlcPdu := cs_ContentionResolution_RlcPdu_None; + } else { + v_RrcConnSetup := f_EUTRA_508_RRCConnectionSetup(p_CellId); + v_EncodedRrcConnSetup := f_RRC_DL_CCCH_Encvalue(v_RrcConnSetup); + v_ContentionResolution_ContainedRlcPdu := cs_ContentionResolution_RlcPdu(v_EncodedRrcConnSetup); + } + + if (f_EUTRA_CellInfo_GetNoUL_Frequency(p_CellId)) { + // UL frequency NOT defined in the band @sic R5-134786 sic@ + f_EUTRA_SS_CommonCellConfig(p_CellId, cas_CellConfig_NoULFreq_REQ(p_CellId, + cs_TimingInfo_Now, + v_StaticCellInfo, + v_SiSchedul, + v_CellInfo, + p_CA_CellInitialConfig)); + } else { + // UL frequency defined in the band @sic R5-134786 sic@ + f_EUTRA_SS_CommonCellConfig(p_CellId, cas_CellConfig_Def_REQ(p_CellId, + cs_TimingInfo_Now, + v_StaticCellInfo, + v_SiSchedul, + v_CellInfo, + v_ContentionResolution_ContainedRlcPdu, + p_CA_CellInitialConfig)); + } + if (f_TestcaseIsL2Testcase() or f_TestcaseIsDrbTestcase()) { /* @sic R5s100135, R5-106675 change 1 sic@ */ + f_EUTRA_SS_CommonL1MacIndCtrlConfig(p_CellId, cas_HarqErrorIndication_REQ(p_CellId)); + } + } + + /* + * @desc Function to Config/Reconfig Active cell info of a cell + * For example new C-RNTI + * @param p_CellId + * @param p_TimingInfo + * @param p_ActiveCellConfig + * @status APPROVED (LTE) + */ + function f_SS_ConfigActiveCellInfo(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (value) ActiveCellConfig_Type p_ActiveCellConfig) runs on EUTRA_PTC + { + f_EUTRA_SS_CommonCellConfig(p_CellId, cas_ActiveCellConfig_REQ(p_CellId, p_TimingInfo, p_ActiveCellConfig)); + } + + //============================================================================ + // Function to Config SS for reporting Preamble Reception + //---------------------------------------------------------------------------- + + /* + * @desc To configure SS to start or stop reporting indication of Rach preamble + * @param p_CellId + * @param p_RachPreambleMode + * @status APPROVED (LTE) + */ + function f_EUTRA_SS_ConfigRachPreambleIndMode(EUTRA_CellId_Type p_CellId, + L1Mac_IndicationMode_Type p_RachPreambleMode) runs on EUTRA_PTC + { + f_EUTRA_SS_CommonL1MacIndCtrlConfig(p_CellId, cas_RachPreambleIndConfig_REQ (p_CellId, p_RachPreambleMode)); + } + + //============================================================================ + // Function to config special RACH Response + //---------------------------------------------------------------------------- + /* + * @desc Function to config special RACH Response + * @param p_CellId + * @param p_CRNTI + * @param p_RachProcedureConfig + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @param p_CnfFlag (default value: omit) + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_SS_ConfigRachProcedure(EUTRA_CellId_Type p_CellId, + template (omit) C_RNTI p_CRNTI, + template (value) RachProcedureConfig_Type p_RachProcedureConfig, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now, // @sic R5s100178 sic@ + template (omit) boolean p_CnfFlag := omit) runs on EUTRA_PTC + { /* @sic R5s100801, R5s110634 addtional changes: optional parameter p_CnfFlag sic@ */ + f_EUTRA_SS_CommonCellConfig(p_CellId, cas_RachProcedureConfig_REQ(p_CellId, p_CRNTI, p_RachProcedureConfig, p_TimingInfo, p_CnfFlag)); + } + + /* + * @desc To PER encode and DL CCCH ASN.1 type message + * @param p_CCCH_Message + * @return octetstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_RRC_DL_CCCH_Encvalue(template (value) DL_CCCH_Message p_CCCH_Message) return octetstring + { + var bitstring v_Bitstring := encvalue(p_CCCH_Message); + var octetstring v_Octetstring := bit2oct(f_OctetAlignedBitString(v_Bitstring)); + return v_Octetstring; + } + + /* + * @desc function to build up the RRC connection setup depending on the cell configuration + * @param p_CellId + * @param p_RRC_TI (default value: tsc_RRC_TI_Def) + * @param p_TimeAlignmentTimer (default value: sf750) + * @return template (value) DL_CCCH_Message + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_508_RRCConnectionSetup(EUTRA_CellId_Type p_CellId, + RRC_TransactionIdentifier p_RRC_TI := tsc_RRC_TI_Def, + TimeAlignmentTimer p_TimeAlignmentTimer := sf750) runs on EUTRA_PTC return template (value) DL_CCCH_Message + { /* @sic function introduced for implementation of R5-120721 change 3 sic@ */ + var EUTRA_FDD_TDD_CellInfo_Type v_EUTRA_FDD_TDD_Info := f_EUTRA_CellInfo_GetFDD_TDD_Info(p_CellId); + var SR_PUCCH_ResourceIndex_Type v_Sr_PUCCH_ResourceIndex := f_EUTRA_CellInfo_GetSR_PUCCH_ResourceIndex(p_CellId); + var PhysicalConfigDedicated_AntennaInfo_Type v_AntennaInfo := f_EUTRA_CellInfo_GetAntennaInfoDedicated(p_CellId); + var SR_ConfigIndex_Type v_SR_ConfigIndex := f_EUTRA_CellInfo_GetSR_ConfigIndex(p_CellId); + + return cs_508_RRCConnectionSetup(p_RRC_TI, + v_EUTRA_FDD_TDD_Info.pucch_Config, + v_EUTRA_FDD_TDD_Info.cqi_ReportConfig, // @sic R5-120497 sic@ + v_EUTRA_FDD_TDD_Info.soundingRS_UL_Config, // @sic R5-120497 sic@ + v_Sr_PUCCH_ResourceIndex, + v_AntennaInfo, + v_SR_ConfigIndex, + p_TimeAlignmentTimer); + } + + /* + * @desc Default function to be used in comon cases to configure the RACH procedure at the SS + * @param p_CellId + * @param p_CRNTI (default value: omit) + * @param p_RACH_ConfigCommon (default value: omit) + * @param p_RAR_TA (default value: omit) + * @param p_DL_CCCH_Message (default value: omit) + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @param p_CnfFlag (default value: omit) + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_SS_ConfigRachProcedure_Def(EUTRA_CellId_Type p_CellId, + template (omit) C_RNTI p_CRNTI := omit, + template (omit) RACH_ConfigCommon_Type p_RACH_ConfigCommon := omit, + template (omit) RACH_TimingAdvance_Type p_RAR_TA := omit, + template (omit) DL_CCCH_Message p_DL_CCCH_Message := omit, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now, + template (omit) boolean p_CnfFlag := omit) runs on EUTRA_PTC + { /* p_RAR_TA if omit, the TA is taken from the configuration of the given cell + * p_DL_CCCH_Message if omit, depending on the test case attribute 'DlCcchMsgInSeparateMacPdu' + * either there is no DL CCCH msg sent together with the contention resolution MAC-CE + * or the default RRC Conection Setup is sent together with the contention resolution MAC-CE @sic acc. to R5s100029 change 3 sic@ */ + var Dl_Bandwidth_Type v_Dl_Bandwidth := f_EUTRA_CellInfo_GetDL_ChBandwidth(p_CellId); + var RACH_TimingAdvance_Type v_RAR_TA; + var octetstring v_EncodedDlCcchMsg; + var template (value) ContentionResolution_ContainedRlcPdu_Type v_ContentionResolution_ContainedRlcPdu; + var template (omit) DL_CCCH_Message v_DL_CCCH_Message := omit; + + if (isvalue(p_RAR_TA)) { + v_RAR_TA := valueof(p_RAR_TA); + } else { + v_RAR_TA := f_EUTRA_CellInfo_GetRAR_TA(p_CellId); + } + + if (isvalue(p_DL_CCCH_Message)) { + v_DL_CCCH_Message := p_DL_CCCH_Message; + } + else if (not f_EUTRA_DlCcchMsgInSeparateMacPdu()) { + v_DL_CCCH_Message := f_EUTRA_508_RRCConnectionSetup(p_CellId); + } + if (isvalue(v_DL_CCCH_Message)) { + v_EncodedDlCcchMsg := f_RRC_DL_CCCH_Encvalue(valueof(v_DL_CCCH_Message)); + v_ContentionResolution_ContainedRlcPdu := cs_ContentionResolution_RlcPdu(v_EncodedDlCcchMsg); + } else { + v_ContentionResolution_ContainedRlcPdu := cs_ContentionResolution_RlcPdu_None; + } + + f_EUTRA_SS_ConfigRachProcedure (p_CellId, + p_CRNTI, + cs_RachProcedureConfig_Def(p_RACH_ConfigCommon, + v_RAR_TA, + v_Dl_Bandwidth, + v_ContentionResolution_ContainedRlcPdu), + p_TimingInfo, + p_CnfFlag); + } + + //============================================================================ + // Function to set cell power level + //---------------------------------------------------------------------------- + /* + * @desc calculate new attenuation for a cell based on the previous attenuation and the given absolute cell power; + * the attenuation is written back to the global TTCN-3 EUTRA_CellInfo but no configuration is performed at SS + * @param p_CellId + * @param p_NewPowerLevel absolute (negative) value as specified in the test prose + * @return Attenuation_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function fl_EUTRA_ChangeCellAttenuation(EUTRA_CellId_Type p_CellId, + AbsoluteCellPower_Type p_NewPowerLevel) runs on EUTRA_PTC return Attenuation_Type + { + var ReferenceCellPower_Type v_CurrentCellPower := f_EUTRA_CellInfo_GetCellPower(p_CellId); + var AbsoluteCellPower_Type v_CurrentRefPowerLevel := v_CurrentCellPower.MaxReferencePower; + var Attenuation_Type v_Attenuation; + var integer v_AttenuationValue; + + if (p_NewPowerLevel == tsc_NonSuitableOffCellRS_EPRE) { + v_Attenuation.Off := true; + } else { + v_AttenuationValue := v_CurrentRefPowerLevel - p_NewPowerLevel; // v_CurrentRefPowerLevel and p_NewPowerLevel both are negative values + + if (v_AttenuationValue < 0) { // i.e. |p_NewPowerLevel| < |v_CurrentRefPowerLevel| + FatalError (__FILE__, __LINE__, "Initial reference power has invalid value"); + } else { + v_Attenuation.Value := v_AttenuationValue; + } + } + + v_CurrentCellPower.Attenuation := v_Attenuation; + f_EUTRA_CellInfo_SetCellPower(p_CellId, v_CurrentCellPower); + + return v_Attenuation; + } + + type record CellPower_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + EUTRA_CellId_Type CellId, + AbsoluteCellPower_Type NewPowerLevel + }; + type record length(1..tsc_EUTRA_MaxNumberOfCells) of CellPower_Type CellPowerList_Type; /* used together with f_EUTRA_SetCellPowerList + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + + template (value) CellPower_Type cs_CellPower(EUTRA_CellId_Type p_CellId, + AbsoluteCellPower_Type p_NewPowerLevel) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + CellId := p_CellId, + NewPowerLevel := p_NewPowerLevel + } + + /* + * @desc Calculate timing info based on timing info of the given cell and the SFN offset and Tcell of the given cells + * @param p_CellId1 + * @param p_TimingInfo1 + * @param p_CellId2 + * @return template (value) TimingInfo_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_TimingOtherCell(EUTRA_CellId_Type p_CellId1, + template (value) TimingInfo_Type p_TimingInfo1, + EUTRA_CellId_Type p_CellId2) runs on EUTRA_PTC return template (value) TimingInfo_Type + { + const integer tsc_Tf := 307200; // frame duration Tf = 307200 * Ts = 10ms; System Time Unit Ts = 1/(15000 * 2048) + + var SubFrameTiming_Type v_SubFrameTiming; + var SubFrameNumber_Type v_SubFrameNumber; + var SystemFrameNumber_Type v_SFN; + var CellTimingInfo_Type v_CellTimingInfo1; + var CellTimingInfo_Type v_CellTimingInfo2; + var integer v_SystemTimeUnits; + var integer v_Subframes; + + if (not f_TimingInfo_IsNow(p_TimingInfo1)) { + v_SubFrameTiming := valueof(p_TimingInfo1.SubFrame); + if (ischosen(v_SubFrameTiming.SFN.Any) or ischosen(v_SubFrameTiming.Subframe.Any)) { + FatalError(__FILE__, __LINE__, "cannot convert any SFN or any subframe for other cell"); + } + v_SFN := v_SubFrameTiming.SFN.Number; + v_SubFrameNumber := v_SubFrameTiming.Subframe.Number; + v_CellTimingInfo1 := f_EUTRA_CellInfo_GetCellTimingInfo(p_CellId1); + v_CellTimingInfo2 := f_EUTRA_CellInfo_GetCellTimingInfo(p_CellId2); + + // TimingInfo of cell 1 as SystemTimeUnits + v_SystemTimeUnits := ((v_SFN * 10) + v_SubFrameNumber) * tsc_Tf/10; + + // TimingInfo converted for cell 2 + v_SystemTimeUnits := v_SystemTimeUnits // SystemTimeUnits for cell 1 @sic R5s120289 sic@ + + ((v_CellTimingInfo1.SfnOffset * tsc_Tf) + v_CellTimingInfo1.Tcell) // subtract SNF offset and TCell of cell 1 (=> normalised time) + - ((v_CellTimingInfo2.SfnOffset * tsc_Tf) + v_CellTimingInfo2.Tcell); // add SNF offset and TCell of cell 2 + + v_SystemTimeUnits := (v_SystemTimeUnits + tsc_Tf * 1024) mod (tsc_Tf * 1024); // to avoid negative values @sic R5s120289 sic@ + v_Subframes := ((v_SystemTimeUnits * 10) + (tsc_Tf / 2)) / tsc_Tf; // total number of subframes in cell 2 (rounded) @sic r5s120289 sic@ + + v_SubFrameNumber := v_Subframes mod 10; + v_SFN := v_Subframes / 10; + + return cs_TimingInfo(v_SFN, v_SubFrameNumber); + } + else { + return cs_TimingInfo_Now; + } + } + + /* + * @desc to configure power of several cells in one go + * @param p_CellPowerList + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @param p_CellId (default value: eutra_Cell_NonSpecific) + * p_CellId has to refer to specific cell when p_TimingInfo is not cs_TimingInfo_Now + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_SetCellPowerList(template (value) CellPowerList_Type p_CellPowerList, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now, + EUTRA_CellId_Type p_CellId := eutra_Cell_NonSpecific) runs on EUTRA_PTC + { /* @sic R5-110877: in context with adjusting power levels of multiple cells usage of cas_CellConfig_Power_REQ is corrected acc. to ASP documentation sic@ */ + var integer i; + var boolean v_CnfFlag; + var CellPower_Type v_CellPower; + var template (value) CellAttenuationList_Type v_CellAttenuationList; + + v_CnfFlag := f_TimingInfo_IsNow(p_TimingInfo); + + if (v_CnfFlag and (p_CellId != eutra_Cell_NonSpecific)) { + FatalError(__FILE__, __LINE__, "p_CellId shall be eutra_Cell_NonSpecific when p_TimingInfo is cs_TimingInfo_Now"); + } + if (not v_CnfFlag and (p_CellId == eutra_Cell_NonSpecific)) { + FatalError(__FILE__, __LINE__, "p_CellId shall refer to cell related to given p_TimingInfo"); + } + + for (i:=0; i value v_RxdMsg; + + v_SecurityParams.AuthParams := v_RxdMsg.Authentication.AuthPS; + f_EUTRA_Security_Set (v_SecurityParams); + return v_RxdMsg.Authentication.CSinOtherRAT; + } + + /* + * @desc return RAT combination for the respective test run depending on px_RATComb_Tested + * @return charstring + * @status APPROVED (LTE_IRAT) + */ + function f_EUTRA_GetOtherRAT() return charstring + { + select (px_RATComb_Tested) { + case (EUTRA_UTRA) { + return "UTRAN"; + } + case (EUTRA_GERAN) { + return "GERAN"; + } + case else { + return "NONE"; + } + } + } + + /* + * @desc Call Preamble_InterRAT for UTRAN or GERAN RAT and possibly wait for the pre-preamble to finish first + * @param p_CellsOnSamePLMN + * @param p_SibCombinationUTRANorGERAN (default value: c10; can be c10 or c10a) + * @param p_SibCombinationEUTRAonly (default value: c1) + * @param p_CellSpecialFreq (default value: LTE_NAS_NormalFreq) + * @status APPROVED (LTE_IRAT) + */ + function f_EUTRA_NAS_InitIRATorEUTRAonly (EUTRA_NAS_NumOfPLMN_Type p_CellsOnSamePLMN, + Combination_Type p_SibCombinationUTRANorGERAN := c10, + Combination_Type p_SibCombinationEUTRAonly := c1, + EUTRA_NAS_CellSpecialFreq p_CellSpecialFreq := LTE_NAS_NormalFreq) runs on EUTRA_PTC + { /* NOTE: Consistency check of px_RATComb_Tested and pc_UTRA/pc_GERAN will be done at top-level */ + /* @sic R5-113805, R5-113696, R5-113734 sic@ */ + var charstring v_OtherRAT := f_EUTRA_GetOtherRAT(); + var Combination_Type v_Combination; + + if (v_OtherRAT == "NONE") { + v_Combination := p_SibCombinationEUTRAonly; + } else { + v_Combination := p_SibCombinationUTRANorGERAN; + } + f_EUTRA_NAS_Init(p_CellsOnSamePLMN, v_Combination, p_CellSpecialFreq); + } + + + /* + * @desc wrapper function using charstring as parameter instead of port + * @param p_OtherRat + * @status APPROVED (LTE_IRAT) + */ + function f_EUTRA_WaitForFriggerFromOtherRAT(charstring p_OtherRat) runs on EUTRA_PTC + { + select (p_OtherRat) { + case ("UTRAN") { + f_IRAT_WaitForCoOrd_Trigger(UTRAN); // wait for trigger from UTRAN side + } + case ("GERAN") { + f_IRAT_WaitForCoOrd_Trigger(GERAN); // wait for trigger from GERAN side + } + case else {} // @sic R5s140189 sic@ + + } + } + + /* + * @desc Send Trigger to UTRAN or GERAN RAT and possibly wait for a response + * @param p_WaitForTrigger (default value: false; set if need to wait for a trigger back afterwards) + * @status APPROVED (LTE_IRAT) + */ + function f_EUTRA_SendTriggerToOtherRAT (boolean p_WaitForTrigger := false) runs on EUTRA_PTC + { /* @sic R5s110232 sic@ */ + /* @sic R5-113805, R5-113696, R5-113734 sic@ */ + /* @sic R5s140072: additional changes sic@ */ + + var charstring v_OtherRAT := f_EUTRA_GetOtherRAT(); + + f_EUTRA_SendCoOrdToOtherRAT(v_OtherRAT, cms_IRAT_Trigger); + if (p_WaitForTrigger) { + f_EUTRA_WaitForFriggerFromOtherRAT(v_OtherRAT); + } + } + + /* + * @desc Call Preamble_InterRAT for UTRAN or GERAN RAT and possibly wait for the pre-preamble to finish first + * @param p_CellId + * @param p_ForcedAttach (default value: NORMAL) + * @param p_WaitForTrigger (default value: false) Set if need to wait for a trigger back first + * @param p_State (default value: STATE2_IDLEUPDATE) + * @status APPROVED (LTE_IRAT) + */ + function f_EUTRA_PreambleOtherRAT (EUTRA_CellId_Type p_CellId, + EUTRA_ATTACH_Type p_ForcedAttach := NORMAL, + boolean p_WaitForTrigger := false, + IDLEUPDATED_STATE_Type p_State := STATE2_IDLEUPDATE) runs on EUTRA_PTC + { /* @sic R5-113805, R5-113696, R5-113734 sic@ */ + var charstring v_OtherRAT := f_EUTRA_GetOtherRAT(); + + select (v_OtherRAT) { + case ("UTRAN") { + if (p_WaitForTrigger) { + f_IRAT_WaitForCoOrd_Trigger(UTRAN); // wait for trigger from UTRAN side + } + f_EUTRA_Preamble_InterRAT(p_CellId, p_State, UTRAN, p_ForcedAttach); + } + case ("GERAN") { + if (p_WaitForTrigger) { + f_IRAT_WaitForCoOrd_Trigger(GERAN); // wait for trigger from GERAN side + } + f_EUTRA_Preamble_InterRAT(p_CellId, p_State, GERAN, p_ForcedAttach); + } + case else { + f_EUTRA_Preamble(p_CellId, p_State, p_ForcedAttach); + } + } + } + + /* + * @desc To get the UE Capability Information and then send the start-CS and start-PS values to UTRAN @sic R5-120764 sic@ + * @param p_CellId + * @param p_StartCS (default value: false) ... set to true if the start-CS value is also required + * @param p_CS_PS_ComHO (default value: false)- set to true if used in SRVCC test cases is PS domain is also handed over + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_EUTRA_UTRA_Capability(EUTRA_CellId_Type p_CellId, + boolean p_StartCS := false, + //@sic R5s140096 sic@ + boolean p_CS_PS_ComHO := false) runs on EUTRA_PTC + + { + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var SRB_COMMON_IND v_RxdAsp; + var B20_Type v_UTRAN_StartPS; + var template (omit) B20_Type v_UTRAN_StartCS := omit; + + SRB.send(cas_SRB1_RrcPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_508_UeCapabilityEnquiry(v_RRC_TI, cs_UE_CapabilityRequest_EUTRA_UTRA))); + + SRB.receive(car_SRB1_RrcPdu_IND(p_CellId, cr_508_UeCapabilityInformation(v_RRC_TI, cr_EutraCapInfo_EUTRA_UTRA))) -> value v_RxdAsp; // @sic R5s120138 sic@ + + v_UTRAN_StartPS := f_U_DecodeInterRatHandoverInfo_AndGetStartPSValue (v_RxdAsp.Signalling.Rrc.Dcch.message_.c1.ueCapabilityInformation.criticalExtensions.c1.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList[1].ueCapabilityRAT_Container); + if (p_StartCS) { + v_UTRAN_StartCS := f_U_DecodeInterRatHandoverInfo_AndGetStartCSValue (v_RxdAsp.Signalling.Rrc.Dcch.message_.c1.ueCapabilityInformation.criticalExtensions.c1.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList[1].ueCapabilityRAT_Container); + } + // then get latest security params and send them over + f_EUTRA_SendAuthParameters(p_CellId, UTRAN, false, p_StartCS, v_UTRAN_StartPS, v_UTRAN_StartCS, p_CS_PS_ComHO); //@sic R5s140096 sic@ + } +} + diff --git a/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_IdleMode.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_IdleMode.ttcn new file mode 100644 index 0000000..bb562e7 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_IdleMode.ttcn @@ -0,0 +1,828 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-04-13 23:38:21 +0200 (Sun, 13 Apr 2014) $ +// $Rev: 11181 $ +/******************************************************************************/ + +module EUTRA_IdleMode +{ +//========================================================================= +// Imports +//========================================================================= + + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_ASP_SrbDefs all; + import from EUTRA_Component all; + import from EUTRA_CommonDefs all; + import from EUTRA_CommonProcedures all; + import from EUTRA_NASSteps all; + import from EUTRA_RRCSteps all; + import from EUTRA_SRB_Templates all; + import from EUTRA_RRC_Templates all; + import from EUTRA_CellInfoFrequency all; + import from EUTRA_CellInfo all; + import from EUTRA_BandDependentParam all; + import from EUTRA_AuxiliaryFunctions all; + import from EUTRA_SysInfo_Templates all; + import from NAS_CommonTypeDefs all; + import from EPS_NAS_TypeDefs all; + import from EPS_NAS_Constants all; + import from EPS_NAS_MsgContainers all; + import from EPS_NAS_Templates all; + import from CommonDefs all; + import from EUTRA_Parameters all; + import from NAS_CommonTemplates all; + import from CommonIratDefs all; + import from UpperTesterFunctions all; + +//============================================================================== +// Types +//============================================================================== + + type CarrierFreqUTRA_FDD.p_MaxUTRA P_MaxUTRA_FDD; /* @status APPROVED (LTE_A, LTE_IRAT) */ + type CarrierFreqUTRA_FDD.q_QualMin Q_QualMin_FDD; /* @status APPROVED (LTE_A, LTE_IRAT) */ + +//============================================================================== +// Constants +//============================================================================== + + //Idle mode generic timer according to 36.523-3 cl. 7.8 + //* If timer expires, the default will catch it, fail and abort the test case + const float tsc_IdleMode_GenericTimer := 360.0; /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + + //Tracking Area Codes used in Idle Mode Operations. + //* Default values according to 36.523-1 cl. 6.0.1 Table 6.0.1-2 + const TrackingAreaCode tsc_IdleMode_TAC_Cell2 := int2bit (2, 16); /* @status APPROVED (LTE, LTE_IRAT) */ + const TrackingAreaCode tsc_IdleMode_TAC_Cell3 := int2bit (3, 16); /* @status APPROVED (LTE) */ + const TrackingAreaCode tsc_IdleMode_TAC_Cell4 := int2bit (4, 16); /* @status APPROVED (LTE) */ + const TrackingAreaCode tsc_IdleMode_TAC_Cell6 := int2bit (6, 16); /* @status APPROVED (LTE) */ + const TrackingAreaCode tsc_IdleMode_TAC_Cell10 := int2bit (10, 16); /* @status APPROVED (LTE) */ + const TrackingAreaCode tsc_IdleMode_TAC_Cell11 := int2bit (11, 16); /* @status APPROVED (LTE) */ + const TrackingAreaCode tsc_IdleMode_TAC_Cell12 := int2bit (12, 16); /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + const TrackingAreaCode tsc_IdleMode_TAC_Cell13 := int2bit (13, 16); /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + const TrackingAreaCode tsc_IdleMode_TAC_Cell14 := int2bit (14, 16); /* @status APPROVED (LTE, LTE_IRAT) */ + const TrackingAreaCode tsc_IdleMode_TAC_Cell23 := int2bit (23, 16); /* @status APPROVED (LTE) */ + const TrackingAreaCode tsc_IdleMode_TAC_Cell28 := int2bit (28, 16); /* @status APPROVED (LTE) */ + const TrackingAreaCode tsc_IdleMode_TAC_Cell29 := int2bit (29, 16); /* @status APPROVED (LTE) */ + const TrackingAreaCode tsc_IdleMode_TAC_Cell30 := int2bit (30, 16); /* @status APPROVED (LTE) */ + const TrackingAreaCode tsc_IdleMode_TAC_Cell1 := int2bit (1, 16); /* @status APPROVED (LTE) */ + + // TAI for all PLMN in Idle test cases defined as charstring + // According to 36.523-1 Table 6.0.1-1 + // @sic R5s120078 sic@ + const charstring tsc_UT_PLMN1 := "00101"; /* @status APPROVED (LTE) */ + const charstring tsc_UT_PLMN2 := "00211"; /* @status APPROVED (LTE, LTE_IRAT) */ + const charstring tsc_UT_PLMN3 := "00321"; /* @status APPROVED (LTE) */ + const charstring tsc_UT_PLMN4 := "00431"; /* @status APPROVED (LTE) */ + const charstring tsc_UT_PLMN5 := "00541"; + const charstring tsc_UT_PLMN6 := "00651"; + const charstring tsc_UT_PLMN7 := "00761"; + const charstring tsc_UT_PLMN8 := "00871"; + const charstring tsc_UT_PLMN9 := "00902"; + const charstring tsc_UT_PLMN10 := "01012"; + const charstring tsc_UT_PLMN11 := "01122"; + const charstring tsc_UT_PLMN12 := "01232"; + const charstring tsc_UT_PLMN13 := "00281"; /* @status APPROVED (LTE_IRAT) */ + const charstring tsc_UT_PLMN14 := "00291"; + const charstring tsc_UT_PLMN15 := "00111"; + const charstring tsc_UT_PLMN16 := "00121"; + +//============================================================================== +// Templates +//============================================================================== + + template (value) InterFreqCarrierFreqInfo cs_InterFreqCarrierFreq_Common(CarrierFreqEUTRA p_EUTRA_CarrierFreq, + Q_RxLevMin p_Q_RxLevMin, + template (omit) P_Max p_P_Max, + T_Reselection p_T_Reselection, + template (omit) SpeedStateScaleFactors p_T_ReselectionEUTRA_Sf, + ReselectionThreshold p_ThreshX_High, + ReselectionThreshold p_ThreshX_Low, + AllowedMeasBandwidth p_AllowedMeasBandwidth, + PresenceAntennaPort1 p_PresenceAntennaPort1, + template (omit) CellReselectionPriority p_CellReselectionPriority, + NeighCellConfig p_NeighCellConfig := '01'B, + Q_OffsetRange p_Q_OffsetRange := dB0, + template (omit) InterFreqNeighCellList p_InterFreqNeighCellList := omit, + template (omit) InterFreqBlackCellList p_InterFreqBlackCellList := omit, + template (omit) Q_QualMin_r9 p_Q_QualMin_r9 := omit, + template (omit) ThreshX_Q_r9_Type p_ThreshX_Q_r9 := omit, + template (omit) Q_QualMin_r9 p_Q_QualMinWB_r11 := omit) := + { /* @status APPROVED (LTE) */ + /* @sic R5s120883: p_Q_QualMin_r9 and p_ThreshX_Q_r9 as additinal change sic@ */ + dl_CarrierFreq := p_EUTRA_CarrierFreq.dl_CarrierFreq, + q_RxLevMin := p_Q_RxLevMin, + p_Max := p_P_Max, + t_ReselectionEUTRA := p_T_Reselection, + t_ReselectionEUTRA_SF := p_T_ReselectionEUTRA_Sf, + threshX_High := p_ThreshX_High, + threshX_Low := p_ThreshX_Low, + allowedMeasBandwidth := p_AllowedMeasBandwidth, + presenceAntennaPort1 := p_PresenceAntennaPort1, + cellReselectionPriority := p_CellReselectionPriority, + neighCellConfig := p_NeighCellConfig, + q_OffsetFreq := p_Q_OffsetRange, + interFreqNeighCellList := p_InterFreqNeighCellList, + interFreqBlackCellList := p_InterFreqBlackCellList, + q_QualMin_r9 := p_Q_QualMin_r9, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + threshX_Q_r9 := p_ThreshX_Q_r9, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + q_QualMinWB_r11 := p_Q_QualMinWB_r11 /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + }; + + template (value) InterFreqCarrierFreqInfo cs_InterFreqCarrierFreq_TRes_ThreshXHigh_CRPri(CarrierFreqEUTRA p_EUTRA_CarrierFreq, + AllowedMeasBandwidth p_AllowedMeasBandwidth, + T_Reselection p_T_Reselection, + ReselectionThreshold p_ThreshX_High, + template (omit) CellReselectionPriority p_CellReselectionPriority) := + /* @status APPROVED (LTE) */ + cs_InterFreqCarrierFreq_Common(p_EUTRA_CarrierFreq, + -53, + omit, + p_T_Reselection, + omit, + p_ThreshX_High, + 1, + p_AllowedMeasBandwidth, + false, + p_CellReselectionPriority); + + template (value) InterFreqCarrierFreqInfo cs_InterFreqCarrierFreq_CRPri(CarrierFreqEUTRA p_EUTRA_CarrierFreq, + AllowedMeasBandwidth p_AllowedMeasBandwidth, + template (omit) CellReselectionPriority p_CellReselectionPriority) := + /* @status APPROVED (LTE) */ + cs_InterFreqCarrierFreq_Common(p_EUTRA_CarrierFreq, + -53,//@sic R5s100725 : as per 36.508 Table 4.4.3.3-4, the default value is -53 sic@ + omit, + 0, + omit, + 2, + 1, + p_AllowedMeasBandwidth, + false, + p_CellReselectionPriority); + + template (value) InterFreqCarrierFreqInfo cs_InterFreqCarrierFreq_ThreshXHigh_CRPri(CarrierFreqEUTRA p_EUTRA_CarrierFreq, + AllowedMeasBandwidth p_AllowedMeasBandwidth, + ReselectionThreshold p_ThreshX_High, + template (omit) CellReselectionPriority p_CellReselectionPriority) := + /* @status APPROVED (LTE) */ + cs_InterFreqCarrierFreq_Common(p_EUTRA_CarrierFreq, + -53,//@sic R5s100725 : as per 36.508 Table 4.4.3.3-4, the default value is -53 sic@ + omit, + 0, + omit, + p_ThreshX_High, + 1, + p_AllowedMeasBandwidth, + false, + p_CellReselectionPriority); + + template (value) InterFreqCarrierFreqInfo cs_InterFreqCarrierFreq_ThreshXHigh(CarrierFreqEUTRA p_EUTRA_CarrierFreq, + AllowedMeasBandwidth p_AllowedMeasBandwidth, + ReselectionThreshold p_ThreshX_High) := + /* @status APPROVED (LTE) */ + cs_InterFreqCarrierFreq_Common(p_EUTRA_CarrierFreq, + -53,//@sic R5s100725 : as per 36.508 Table 4.4.3.3-4, the default value is -53 sic@ + omit, + 0, + omit, + p_ThreshX_High, + 1, + p_AllowedMeasBandwidth, + false, + 4); + + template (value) InterFreqCarrierFreqInfo cs_InterFreqCarrierFreq_ThreshXLow(CarrierFreqEUTRA p_EUTRA_CarrierFreq, + AllowedMeasBandwidth p_AllowedMeasBandwidth, + ReselectionThreshold p_ThreshX_Low) := + /* @status APPROVED (LTE) */ + cs_InterFreqCarrierFreq_Common(p_EUTRA_CarrierFreq, + -53,//@sic R5s100725 : as per 36.508 Table 4.4.3.3-4, the default value is -53 sic@ + omit, + 0, + omit, + 2, + p_ThreshX_Low, + p_AllowedMeasBandwidth, + false, + 4); + + template (value) CarrierFreqUTRA_FDD cs_CarrierFreqUTRA_FDD_Common(ARFCN_ValueUTRA p_ARFCN_ValueUTRA, + template (omit) CellReselectionPriority p_CellReselectionPriority := 3, + ReselectionThreshold p_ThreshX_High := 2, + ReselectionThreshold p_ThreshX_Low := 1, + Q_RxLevMin p_Q_RxLevMin := -40, + P_MaxUTRA_FDD p_P_MaxUTRA := 21, + Q_QualMin_FDD p_Q_QualMin := -24, + template (omit) CarrierFreqUTRA_FDD_threshX_Q_r9_Type p_CarrierFreqUTRA_FDD_threshX_Q_r9 := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + /* @sic R5s120964: new parameter p_CarrierFreqUTRA_FDD_threshX_Q_r9 sic@ */ + carrierFreq := p_ARFCN_ValueUTRA, + cellReselectionPriority := p_CellReselectionPriority, + threshX_High := p_ThreshX_High, + threshX_Low := p_ThreshX_Low, + q_RxLevMin := p_Q_RxLevMin, + p_MaxUTRA := p_P_MaxUTRA, + q_QualMin := p_Q_QualMin, + threshX_Q_r9 := p_CarrierFreqUTRA_FDD_threshX_Q_r9 /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + }; + + template (value) CarrierFreqUTRA_TDD cs_CarrierFreqUTRA_TDD_Common(ARFCN_ValueUTRA p_ARFCN_ValueUTRA, + template (omit) CellReselectionPriority p_CellReselectionPriority := 3, + ReselectionThreshold p_ThreshX_High := 2, + ReselectionThreshold p_ThreshX_Low := 1, + Q_RxLevMin p_Q_RxLevMin := -40, + P_MaxUTRA_FDD p_P_MaxUTRA := 21) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + carrierFreq := p_ARFCN_ValueUTRA, + cellReselectionPriority := p_CellReselectionPriority, + threshX_High := p_ThreshX_High, + threshX_Low := p_ThreshX_Low, + q_RxLevMin := p_Q_RxLevMin, + p_MaxUTRA := p_P_MaxUTRA + }; + + template (value) CarrierFreqUTRA_FDD cs_CarrierFreqUTRA_FDD_CRPrio(ARFCN_ValueUTRA p_ARFCN_ValueUTRA, + template (omit) CellReselectionPriority p_CellReselectionPriority) := + /* @status APPROVED (LTE_IRAT) */ + cs_CarrierFreqUTRA_FDD_Common(p_ARFCN_ValueUTRA, p_CellReselectionPriority); + + template (value) CarrierFreqUTRA_FDD cs_CarrierFreqUTRA_FDD_CRPrio_PMax(ARFCN_ValueUTRA p_ARFCN_ValueUTRA, + template (omit) CellReselectionPriority p_CellReselectionPriority, + P_MaxUTRA_FDD p_P_MaxUTRA) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_CarrierFreqUTRA_FDD_Common(p_ARFCN_ValueUTRA, p_CellReselectionPriority, -, -, -, p_P_MaxUTRA); //@sic R5s110168 sic@ + + template (value) CarrierFreqUTRA_TDD cs_CarrierFreqUTRA_TDD_CRPrio_PMax(ARFCN_ValueUTRA p_ARFCN_ValueUTRA, + template (omit) CellReselectionPriority p_CellReselectionPriority, + P_MaxUTRA_FDD p_P_MaxUTRA) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_CarrierFreqUTRA_TDD_Common(p_ARFCN_ValueUTRA, p_CellReselectionPriority, -, -, -, p_P_MaxUTRA); + + template (value) CarrierFreqUTRA_TDD cs_CarrierFreqUTRA_TDD_CRPrio(ARFCN_ValueUTRA p_ARFCN_ValueUTRA, + template (omit) CellReselectionPriority p_CellReselectionPriority) := + /* @status APPROVED (LTE_IRAT) */ + cs_CarrierFreqUTRA_TDD_Common(p_ARFCN_ValueUTRA, p_CellReselectionPriority); + + template (value) CarrierFreqUTRA_FDD cs_CarrierFreqUTRA_FDD_ReselectionThreshold(ARFCN_ValueUTRA p_ARFCN_ValueUTRA, + ReselectionThreshold p_ReselectionThreshold) := + /* @status APPROVED (LTE_IRAT) */ + cs_CarrierFreqUTRA_FDD_Common(p_ARFCN_ValueUTRA, -, p_ReselectionThreshold, p_ReselectionThreshold); + + template (value) CarrierFreqUTRA_TDD cs_CarrierFreqUTRA_TDD_ReselectionThreshold(ARFCN_ValueUTRA p_ARFCN_ValueUTRA, + ReselectionThreshold p_ReselectionThreshold) := + /* @status APPROVED (LTE_IRAT) */ + cs_CarrierFreqUTRA_TDD_Common(p_ARFCN_ValueUTRA, -, p_ReselectionThreshold, p_ReselectionThreshold); + + //Template ASPs to receive RRC message on SRB0 on any cell + template (present) SRB_COMMON_IND car_SRB0_RrcPdu_IND_AnyCell(template (present) UL_CCCH_Message p_RrcPdu) := + { + Common := cr_IndAspCommonPart_SRB(?, tsc_SRB0), + Signalling := { + Rrc := { + Ccch := p_RrcPdu + }, + Nas := omit + } + }; + + template (value) PhysCellIdRange cs_PhysCellIdRange(PhysCellId p_Start, + template (omit) PhysCellIdRange_Type p_Range) := + { /* @status APPROVED (LTE, LTE_IRAT) */ + start_ := p_Start, + range := p_Range + }; + + template (value) SystemInformationBlockType1_v890_IEs cs_SystemInformationBlockType1_v890_CellSelInfo(template (omit) CellSelectionInfo_v920 p_CellSelectionInfo := omit) := + { /* @status APPROVED (LTE, LTE_IRAT) */ + lateNonCriticalExtension := omit, + nonCriticalExtension := { + ims_EmergencySupport_r9 := omit, + cellSelectionInfo_v920 := p_CellSelectionInfo, + nonCriticalExtension := omit + } + }; + + template (value) CellSelectionInfo_v920 cs_CellSelectionInfo_v920(template (omit) Q_QualMin_r9 p_Q_QualMin_r9 := omit, + template (omit) integer p_Q_QualMinOffset_r9 := omit) := + { /* @status APPROVED (LTE, LTE_IRAT) */ + q_QualMin_r9 := p_Q_QualMin_r9, + q_QualMinOffset_r9 := p_Q_QualMinOffset_r9 + }; + + template (value) SystemInformationBlockType4 cs_SIB4_AllParameters(template (omit) IntraFreqNeighCellList p_IntraFreqNeighCellList, + template (omit) IntraFreqBlackCellList p_IntraFreqBlackCellList, + template (omit) PhysCellIdRange p_PhysCellIdRange) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + intraFreqNeighCellList := p_IntraFreqNeighCellList, + intraFreqBlackCellList := p_IntraFreqBlackCellList, + csg_PhysCellIdRange := p_PhysCellIdRange, + lateNonCriticalExtension := omit /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + }; + + template (value) SystemInformationBlockType4 cs_SIB4_Csg_PhysCellIdRange_StartOnly(PhysCellId p_Start) := + /* @status APPROVED (LTE, LTE_IRAT) */ + cs_SIB4_AllParameters(omit, omit, cs_PhysCellIdRange(p_Start, omit)); + + template (value) SystemInformationBlockType4 cs_SIB4_NeighCellList(template (value) IntraFreqNeighCellList p_IntraFreqNeighCellList) := + /* @status APPROVED (LTE, LTE_A) */ + cs_SIB4_AllParameters (p_IntraFreqNeighCellList, omit, omit); + + template (value) SystemInformationBlockType4 cs_SIB4_Neigh_BlackCellList_1Entry(template (omit) IntraFreqNeighCellList p_IntraFreqNeighCellList, //@sic R5-141101 sic@ + template (value) IntraFreqBlackCellList p_IntraFreqBlackCellList) := + /* @status APPROVED (LTE) */ + cs_SIB4_AllParameters (p_IntraFreqNeighCellList, p_IntraFreqBlackCellList, omit); + + + template (value) S_NonIntraSearch_v920_Type cs_S_NonIntraSearch_v920(template (value) ReselectionThreshold p_ReselectionThreshold := 0, + template (value) ReselectionThresholdQ_r9 p_ReselectionThresholdQ_r9 := 20) := + { /* @status APPROVED (LTE) */ + s_NonIntraSearchP_r9 := p_ReselectionThreshold, + s_NonIntraSearchQ_r9 := p_ReselectionThresholdQ_r9 + }; + + //============================================================================== + // Functions + //============================================================================== + + /* + * @desc Function used in Idle Mode test cases to perform Tracking Area Update on the new EUTRA cell. + * @param p_CellId .. The EUTRA cell on which the random access request and the TAU will happen + * @param p_EstablishmentCause (default value: ?) + * @status APPROVED (LTE) + */ + function f_EUTRA_IdleMode_TAU(EUTRA_CellId_Type p_CellId, + template (present) EstablishmentCause p_EstablishmentCause := ?) //@sic R5-110062 sic@ + runs on EUTRA_PTC + { + timer t_IdleMode_GenericTimer := tsc_IdleMode_GenericTimer; + + t_IdleMode_GenericTimer.start; + f_EUTRA_508CheckCampOnNewEutraCell(p_CellId, -, p_EstablishmentCause); //@sic R5-110062 sic@ + t_IdleMode_GenericTimer.stop; + } + + /* + * @desc Function used in Idle Mode test cases to perform Tracking Area Update on the new EUTRA cell upon + * mobility from another RAT + * @param p_CellId .. The EUTRA cell on which the random access request and the TAU will happen + * @param p_CSInOtherRAT Set to true if the UE has done either an LAU or Combined RAU in the other RAT + * @param p_PDPContext Set to true if UE has earlier established PDP context on other RAT + * @param p_PreambleOnLTE Set to true if UE performed the preamble on the LTE cell (and so configured the default bearer) + * @param p_EUTRA_Cap + * @param p_ForcedAttach (default value: NORMAL) + * @status APPROVED (LTE_IRAT) + */ + function f_EUTRA_IdleMode_TAU_UponMobility_FromOtherRAT(EUTRA_CellId_Type p_CellId, + boolean p_CSInOtherRAT, + boolean p_PDPContext, + boolean p_PreambleOnLTE, + template (omit) octetstring p_EUTRA_Cap, // @sic R5-123734 sic@ + EUTRA_ATTACH_Type p_ForcedAttach := NORMAL) runs on EUTRA_PTC + { /* @sic R5-110746 sic@ */ + timer t_IdleMode_GenericTimer := tsc_IdleMode_GenericTimer; + + t_IdleMode_GenericTimer.start; + f_EUTRA_508CheckCampOnNewEutraCellUponMobilityFromAnotherRAT(p_CellId, p_CSInOtherRAT, p_PDPContext, p_PreambleOnLTE, p_EUTRA_Cap, p_ForcedAttach); // @sic R5s110176, R5-135075, R5-140325 sic@ + t_IdleMode_GenericTimer.stop; + } + + /* + * @desc Tracking area update procedure according to 36.523-1 cl. 6.0.3 but without release of the RRC connection at the end of the procedure + * @param p_CellId + * @param p_RRC_TI (default value: tsc_RRC_TI_Def) + * @param p_ForcedAttach (default value: NORMAL) + * @status APPROVED (LTE) + */ + function f_EUTRA_TrackingAreaUpdate_WithoutRelease(EUTRA_CellId_Type p_CellId, + RRC_TransactionIdentifier p_RRC_TI := tsc_RRC_TI_Def, + EUTRA_ATTACH_Type p_ForcedAttach := NORMAL) runs on EUTRA_PTC + { /* @sic R5s100707 additional MCC160 comments sic@ */ + var EstablishmentCause v_EstablishmentCause := mo_Signalling; + f_EUTRA_TrackingAreaUpdate_Step1_5(p_CellId, p_RRC_TI, p_ForcedAttach, v_EstablishmentCause); + } + + /* + * @desc Tracking area update behaviour according to 36.508 cl. 6.4.2.7 + * @param p_CellId + * @param p_RRC_TI (default value: tsc_RRC_TI_Def) + * @param p_ForcedAttach (default value: NORMAL) + * @param p_SelectedPlmnId (default value: 1) .. selectedPLMN-Identity as used in RRCConnectionSetupComplete (starting with 1) + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_TrackingAreaUpdate_WithoutRrcConnReq(EUTRA_CellId_Type p_CellId, + RRC_TransactionIdentifier p_RRC_TI := tsc_RRC_TI_Def, + EUTRA_ATTACH_Type p_ForcedAttach := NORMAL, + integer p_SelectedPlmnId := 1) runs on EUTRA_PTC //@sic R5s110511 change 3 sic@ + { /* @sic R5s100707 additional MCC160 comments sic@ */ + var NAS_MSG_Indication_Type v_NasInd; + var NAS_KsiValue v_KsiValue := f_EUTRA_SecurityKSIasme_Get(); + var GutiParameters_Type v_GutiParams:= f_EUTRA_CellInfo_GetGuti(p_CellId); + var B3_Type v_EpsUpdate_TypeValue := f_GetEPSTAUType (p_ForcedAttach); // @sic R5s110176 sic@ + var template (omit) EPS_BearerContextStatus v_EPS_ContextStatus; // @sic R5s100608 sic@ + var template AdditionalUpdateType v_AdditionalUpdateType_Expected := f_GetAdditionalUpdateType (p_ForcedAttach); // @sic R5s110176 sic@ + + //Step 2: Send RRC Connection Setup on SRB0 (CCCH) and switch on UL grant assignments: + f_EUTRA_RRC_ConnectionSetup_Def(p_CellId, -, p_RRC_TI); + + // UE shall establish SRB1 acc. to 36.331 cl. 5.3.3.4 and 5.3.9 + // UE enters RRC_CONNECTED state + // SRB1 is established: no ciphering, no integrity protection for NAS/RRC + + //Step 3: Receive RRCConnectionSetupComplete which includes a TRACKING AREA UPDATE REQUEST message + v_NasInd := f_EUTRA_RRCConnectionSetupComplete_Def(p_CellId, // @sic R5s120121 MCC160 implementation sic@ + cr_508_RRCConnectionSetupComplete (p_RRC_TI, ?, -, p_SelectedPlmnId), //@sic R5s110511 change 3 sic@ + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_508_TAU_Request(v_EpsUpdate_TypeValue, + v_KsiValue, + cr_DRXparameter_Any ('5C'O) ifpresent, // @sic R5s120210, R5-123117 sic@ + v_AdditionalUpdateType_Expected))); + v_EPS_ContextStatus := v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.epsBearerContextStatus; // Send this back in the Accept + + /* Step 4 - 5: send TAU ACCEPT and receive TAU COMPLETE; @sic R5s110078 sic@ */ + f_EUTRA_TrackingAreaUpdate_Accept_Complete(p_CellId, v_GutiParams, v_EpsUpdate_TypeValue, v_EPS_ContextStatus, v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.addUpdateType, p_ForcedAttach); + + //Step 6: Release RRC connection + f_EUTRA_RRC_ConnectionRelease(p_CellId, p_RRC_TI); + } + + /* + * @desc This procedure aims at checking whether the UE is camping on a new E-UTRAN cell with different TAI of a test case or not. + * The procedure is similar as the one defined in 36.508 cl. 6.4.2.7 table 6.4.2.7-1 with the exception + * that the parameterised list of PLMNs are indicated to UE as Equivalent PLMN in the Tracking Area Update Accept message + * @param p_CellId + * @param p_RRC_TI + * @param p_EPLMNlist + * @param p_ForcedAttach (default value: NORMAL) + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_TrackingAreaUpdate_WithEplmn(EUTRA_CellId_Type p_CellId, + RRC_TransactionIdentifier p_RRC_TI, + template (value) PLMN_List p_EPLMNlist, + EUTRA_ATTACH_Type p_ForcedAttach := NORMAL) runs on EUTRA_PTC + { + var template (present) EstablishmentCause v_EstablishmentCause := cr_EstablishmentCause_MoSignalling; + + /* Step 1..5: */ + f_EUTRA_TrackingAreaUpdate_Step1_5(p_CellId, p_RRC_TI, p_ForcedAttach, v_EstablishmentCause, p_EPLMNlist); + + //* @verdict pass UE transmits a TRACKING AREA UPDATE COMPLETE + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "UE transmits a TRACKING AREA UPDATE COMPLETE"); + + //Step 6: Release RRC connection + f_EUTRA_RRC_ConnectionRelease(p_CellId, p_RRC_TI); + } + + /* + * @desc UE Registration acc. to 36.508 cl. 4.5.2 with the exception that a Equivalent PLMN list is given to UE in Attach Accept messages. + * Function to be used in test case preamble when Equivalent PLMN is listed. + * @param p_CellId + * @param p_Type + * @param p_EPLMNlist - the listed Equivalent PLMNs to be sent to UE in Attach Accept message + * @param p_ForcedAttach (default value: NORMAL) + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_IdleUpdated_WithEplmn(EUTRA_CellId_Type p_CellId, + IDLEUPDATED_Type p_Type, + template (value) PLMN_List p_EPLMNlist, + EUTRA_ATTACH_Type p_ForcedAttach := NORMAL) runs on EUTRA_PTC + { /* @sic R5-120234, R5-120541, R5-120542 sic@ */ + var NAS_MSG_Indication_Type v_NasInd; + + v_NasInd := f_EUTRA_IdleUpdated_Step1_4(p_CellId, p_Type, p_ForcedAttach); // @sic R5s110176, R5s100780 sic@ + + f_EUTRA_IdleUpdated_Step5_15(p_CellId, // @sic R5s100780 sic@ + STATE2_IDLEUPDATE, + p_ForcedAttach, + v_NasInd, + -, + cs_GprsTimer_v_deact, + -, + -, + p_EPLMNlist); + + f_EUTRA_IdleUpdated_Step16_17(p_CellId); // @sic R5s100780 sic@ + } + + /* + * @desc step 3 .. 17 of UE Registration acc. to 36.508 cl. 4.5.2 + * @param p_CellId + * @param p_State + * @param p_ForcedAttach (default value: NORMAL) + * @param p_AttReqSecurityHeader (default value: tsc_SHT_IntegrityProtected) + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_EUTRA_IdleUpdated_WithoutRRCConnReq(EUTRA_CellId_Type p_CellId, + IDLEUPDATED_STATE_Type p_State, + EUTRA_ATTACH_Type p_ForcedAttach := NORMAL, + template (present) SecurityHeaderType p_AttReqSecurityHeader := tsc_SHT_IntegrityProtected) //@sic R5s110371 Change 4 sic@ + runs on EUTRA_PTC + { + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var NAS_AttDetValue_Type v_AttachType :=f_GetEAttachType(p_ForcedAttach); // @sic R5s110176, R5-103673 : Removed paramater sic@ + var B3_Type v_PDNType := f_GetPdnType(); + var NAS_MSG_Indication_Type v_NasInd; + //v_AdditionalUpdateType defined to follow TTCN3 v411 standard + var template AdditionalUpdateType v_AdditionalUpdateType := f_GetAdditionalUpdateType (p_ForcedAttach); // @sic R5s110176, R5-103681 sic@ + + // send RRC Connection Setup on SRB0 (CCCH) and switch on UL grant assignments: + f_EUTRA_RRC_ConnectionSetup_Def (p_CellId); + + // UE shall establish SRB1 acc. to 36.331 cl. 5.3.3.4 and 5.3.9 + // UE enters RRC_CONNECTED state + // SRB1 is established: no ciphering, no integrity protection for NAS/RRC + + // receive RRC Connection Setup Complete with piggy-backed NAS message on SRB1 (DCCH): + v_NasInd := f_EUTRA_RRCConnectionSetupComplete_Def(p_CellId, // @sic R5s120121 MCC160 implementation sic@ + cr_508_RRCConnectionSetupComplete(v_RRC_TI, ?), + cr_NAS_IndicationWithPiggybacking(p_AttReqSecurityHeader, //@sic R5s110371 Change 4 sic@ + cr_508_ATTACH_REQUEST(v_AttachType, + v_AdditionalUpdateType),//@sic R5-103681 sic@ + cr_508_PDN_CONNECTIVITY_REQUEST(tsc_PdnRequest_InitialAttach, v_PDNType))); + f_EUTRA_IdleUpdated_Step5_17 (p_CellId, p_State, p_ForcedAttach, v_NasInd); + } + + /* + * @desc Function for setting the index for f1 in SIB5 interFreqCarrierFreqList. + * The other indexes will be set to default according to 36.508 cl. 6.3.1.2 + * @param p_CellId + * @param p_InterFreqCarrierFreqInfo + * @param p_IncludeInterFreqCarrierFreqInfo_f3 (default value: true) + * @status APPROVED (LTE) + */ + function f_EUTRA_SetSIB5_InterFreqCarrierFreqList_F1(EUTRA_CellId_Type p_CellId, + template (value) InterFreqCarrierFreqInfo p_InterFreqCarrierFreqInfo, + boolean p_IncludeInterFreqCarrierFreqInfo_f3 := true) //@sic R5s130365 sic@ + runs on EUTRA_PTC + { + var template (value) SystemInformationBlockType5 v_SIB5; + var Frequency_fList_Type v_Frequency_PrimaryBand := f_EUTRA_InitFrequency_f1Tof4(px_ePrimaryFrequencyBand, + px_ePrimaryBandChannelBandwidth, + f_ConvertDL_BandwidthToUL(px_ePrimaryBandChannelBandwidth)); + var ChannelBandwidthDependency_Type v_PrimaryChannelBandwidthDependency := f_EUTRA_BandDependentParam(px_ePrimaryBandChannelBandwidth, + f_ConvertDL_BandwidthToUL(px_ePrimaryBandChannelBandwidth)); + + select (p_CellId) { + case (eutra_Cell1, eutra_Cell2, eutra_Cell4, eutra_Cell11) { + // For cell frequency of f1: v_Frequency_PrimaryBand.f1 + // SIB5 contents: f2, f3, f5 (f1 in secondary band) + // However, f5 (f1 in secondary band) is not present in this case since f5 as part + // of inter-frequency list is applicable only in case of multi-band scenarios (ref: 36.508 Table 6.3.1.2-1 Note 3). + FatalError (__FILE__, __LINE__, "f1 is not included in SIB5 interFreqCarrierFreqList because cell is on f1"); + } + case (eutra_Cell3, eutra_Cell23) { + // For cell frequency of f2: v_Frequency_PrimaryBand.f2 + // SIB5 contents: f1, f3, f5 (f1 in secondary band) + // However, f5 (f1 in secondary band) is not present in this case since f5 as part + // of inter-frequency list is applicable only in case of multi-band scenarios (ref: 36.508 Table 6.3.1.2-1 Note 3). + if (v_Frequency_PrimaryBand.f3.dl_CarrierFreq != tsc_DummyFrequency and p_IncludeInterFreqCarrierFreqInfo_f3) { // f3 is defined for the Band px_ePrimaryFrequencyBand + v_SIB5 := cs_508_SystemInformationBlockType5_Def({ p_InterFreqCarrierFreqInfo, //f1 + cs_InterFreqCarrierFreq (v_Frequency_PrimaryBand.f3,//f3 + v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth) }); + } + else { //f3 not defined (e.g. band 6, 13, 14, 17 & 38) + v_SIB5 := cs_508_SystemInformationBlockType5_Def({ p_InterFreqCarrierFreqInfo }); //f1 + } + } + case (eutra_Cell6) { + // For cell frequency of f3: v_Frequency_PrimaryBand.f3 + // SIB5 contents: f1, f2, f5 (f1 in secondary band) + // However, f5 (f1 in secondary band) is not present in this case since f5 as part + // of inter-frequency list is applicable only in case of multi-band scenarios (ref: 36.508 Table 6.3.1.2-1 Note 3). + if (v_Frequency_PrimaryBand.f2.dl_CarrierFreq != tsc_DummyFrequency) { // f2 is defined for the Band px_ePrimaryFrequencyBand + v_SIB5 := cs_508_SystemInformationBlockType5_Def({ p_InterFreqCarrierFreqInfo, //f1 + cs_InterFreqCarrierFreq (v_Frequency_PrimaryBand.f2,//f2 + v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth) }); + } + else { //f2 not defined (e.g. band 13) + v_SIB5 := cs_508_SystemInformationBlockType5_Def({ p_InterFreqCarrierFreqInfo }); //f1 + } + } + case else { + FatalError (__FILE__, __LINE__, "invalid value Cell Id for SIB5 intialisation"); + } + } + f_EUTRA_CellInfo_SetSIB5(p_CellId, v_SIB5); + } + + /* + * @desc Function for setting the index for f2 in SIB5 interFreqCarrierFreqList. + * The other indexes will be set to default according to 36.508 cl. 6.3.1.2 + * @param p_CellId + * @param p_InterFreqCarrierFreqInfo + * @param p_IncludeInterFreqCarrierFreqInfo_f3 (default value: true) + * @status APPROVED (LTE) + */ + function f_EUTRA_SetSIB5_InterFreqCarrierFreqList_F2(EUTRA_CellId_Type p_CellId, + template (value) InterFreqCarrierFreqInfo p_InterFreqCarrierFreqInfo, + boolean p_IncludeInterFreqCarrierFreqInfo_f3 := true) //@sic R5s130365 sic@ + runs on EUTRA_PTC + { + var template (value) SystemInformationBlockType5 v_SIB5; + var Frequency_fList_Type v_Frequency_PrimaryBand := f_EUTRA_InitFrequency_f1Tof4(px_ePrimaryFrequencyBand, + px_ePrimaryBandChannelBandwidth, + f_ConvertDL_BandwidthToUL(px_ePrimaryBandChannelBandwidth)); + var ChannelBandwidthDependency_Type v_PrimaryChannelBandwidthDependency := f_EUTRA_BandDependentParam(px_ePrimaryBandChannelBandwidth, + f_ConvertDL_BandwidthToUL(px_ePrimaryBandChannelBandwidth)); + + select (p_CellId) { + case (eutra_Cell1, eutra_Cell2, eutra_Cell4, eutra_Cell11) { + // For cell frequency of f1: v_Frequency_PrimaryBand.f1 + // SIB5 contents: f2, f3, f5 (f1 in secondary band) + // However, f5 (f1 in secondary band) is not present in this case since f5 as part + // of inter-frequency list is applicable only in case of multi-band scenarios (ref: 36.508 Table 6.3.1.2-1 Note 3). + if (v_Frequency_PrimaryBand.f2.dl_CarrierFreq != tsc_DummyFrequency) { // f2 is defined for the Band px_ePrimaryFrequencyBand + if (v_Frequency_PrimaryBand.f3.dl_CarrierFreq != tsc_DummyFrequency and p_IncludeInterFreqCarrierFreqInfo_f3) { // f3 is defined for the Band px_ePrimaryFrequencyBand + v_SIB5 := cs_508_SystemInformationBlockType5_Def({ p_InterFreqCarrierFreqInfo, + cs_InterFreqCarrierFreq (v_Frequency_PrimaryBand.f3,//f3 + v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth) }); + } + else { // f2 defined but f3 not defined for the band (e.g. band 6, 14, 17 & 38) + v_SIB5 := cs_508_SystemInformationBlockType5_Def({ p_InterFreqCarrierFreqInfo }); + } + } + else { //f2 (and f3) not defined (e.g. band 13) + FatalError (__FILE__, __LINE__, "Test case can not run on then chosen band"); + } + } + case (eutra_Cell3, eutra_Cell23) { + // For cell frequency of f2: v_Frequency_PrimaryBand.f2 + // SIB5 contents: f1, f3, f5 (f1 in secondary band) + // However, f5 (f1 in secondary band) is not present in this case since f5 as part + // of inter-frequency list is applicable only in case of multi-band scenarios (ref: 36.508 Table 6.3.1.2-1 Note 3). + FatalError (__FILE__, __LINE__, "f2 is not included in SIB5 interFreqCarrierFreqList because cell is on f2"); + } + case (eutra_Cell6) { + // For cell frequency of f3: v_Frequency_PrimaryBand.f3 + // SIB5 contents: f1, f2, f5 (f1 in secondary band) + // However, f5 (f1 in secondary band) is not present in this case since f5 as part + // of inter-frequency list is applicable only in case of multi-band scenarios (ref: 36.508 Table 6.3.1.2-1 Note 3). + if (v_Frequency_PrimaryBand.f2.dl_CarrierFreq != tsc_DummyFrequency) { // f2 is defined for the Band px_ePrimaryFrequencyBand + v_SIB5 := cs_508_SystemInformationBlockType5_Def({ cs_InterFreqCarrierFreq(v_Frequency_PrimaryBand.f1,//f1 + v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth), + p_InterFreqCarrierFreqInfo }); //f2 + } + else { //f2 (and f3) not defined (e.g. band 13) + FatalError (__FILE__, __LINE__, "index for f2 can not be set since f2 is not defined for this band"); + } + } + case else { + FatalError (__FILE__, __LINE__, "invalid value Cell Id for SIB5 intialisation"); + } + } + f_EUTRA_CellInfo_SetSIB5(p_CellId, v_SIB5); + } + + /* + * @desc Function for setting the index for f3 in SIB5 interFreqCarrierFreqList. + * The other indexes will be set to default according to 36.508 cl. 6.3.1.2 + * @param p_CellId + * @param p_InterFreqCarrierFreqInfo + * @status APPROVED (LTE) + */ + function f_EUTRA_SetSIB5_InterFreqCarrierFreqList_F3(EUTRA_CellId_Type p_CellId, + template (value) InterFreqCarrierFreqInfo p_InterFreqCarrierFreqInfo) runs on EUTRA_PTC + { + var template (value) SystemInformationBlockType5 v_SIB5; + var Frequency_fList_Type v_Frequency_PrimaryBand := f_EUTRA_InitFrequency_f1Tof4(px_ePrimaryFrequencyBand, + px_ePrimaryBandChannelBandwidth, + f_ConvertDL_BandwidthToUL(px_ePrimaryBandChannelBandwidth)); + var ChannelBandwidthDependency_Type v_PrimaryChannelBandwidthDependency := f_EUTRA_BandDependentParam(px_ePrimaryBandChannelBandwidth, + f_ConvertDL_BandwidthToUL(px_ePrimaryBandChannelBandwidth)); + + select (p_CellId) { + case (eutra_Cell1, eutra_Cell2, eutra_Cell4, eutra_Cell11) { + // For cell frequency of f1: v_Frequency_PrimaryBand.f1 + // SIB5 contents: f2, f3, f5 (f1 in secondary band) + // However, f5 (f1 in secondary band) is not present in this case since f5 as part + // of inter-frequency list is applicable only in case of multi-band scenarios (ref: 36.508 Table 6.3.1.2-1 Note 3). + if (v_Frequency_PrimaryBand.f2.dl_CarrierFreq != tsc_DummyFrequency) { // f2 is defined for the Band px_ePrimaryFrequencyBand + if (v_Frequency_PrimaryBand.f3.dl_CarrierFreq != tsc_DummyFrequency) { // f3 is defined for the Band px_ePrimaryFrequencyBand + v_SIB5 := cs_508_SystemInformationBlockType5_Def({ cs_InterFreqCarrierFreq(v_Frequency_PrimaryBand.f2, //f2 + v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth), + p_InterFreqCarrierFreqInfo }); //f3 + } + else { // f2 defined but f3 not defined for the band (e.g. band 6, 14, 17 & 38) + FatalError (__FILE__, __LINE__, "f3 is not defined for this band and index can not be set"); + } + } + else { //f2 (and f3) not defined (e.g. band 13) + FatalError (__FILE__, __LINE__, "Test case can not run on the chosen band"); + } + } + case (eutra_Cell3, eutra_Cell23) { + // For cell frequency of f2: v_Frequency_PrimaryBand.f2 + // SIB5 contents: f1, f3, f5 (f1 in secondary band) + // However, f5 (f1 in secondary band) is not present in this case since f5 as part + // of inter-frequency list is applicable only in case of multi-band scenarios (ref: 36.508 Table 6.3.1.2-1 Note 3). + if (v_Frequency_PrimaryBand.f3.dl_CarrierFreq != tsc_DummyFrequency) { // f3 is defined for the Band px_ePrimaryFrequencyBand + v_SIB5 := cs_508_SystemInformationBlockType5_Def({ cs_InterFreqCarrierFreq(v_Frequency_PrimaryBand.f1,//f1 + v_PrimaryChannelBandwidthDependency.AllowedMeasBandwidth), + p_InterFreqCarrierFreqInfo }); //f3 + } + else { //f3 not defined (e.g. band 6, 13, 14, 17 & 38) + FatalError (__FILE__, __LINE__, "index for f3 can not be set since f3 is not defined for this band"); + } + } + case (eutra_Cell6) { + // For cell frequency of f3: v_Frequency_PrimaryBand.f3 + // SIB5 contents: f1, f2, f5 (f1 in secondary band) + // However, f5 (f1 in secondary band) is not present in this case since f5 as part + // of inter-frequency list is applicable only in case of multi-band scenarios (ref: 36.508 Table 6.3.1.2-1 Note 3). + FatalError (__FILE__, __LINE__, "f3 is not included in SIB5 interFreqCarrierFreqList because cell is on f3"); + } + case else { + FatalError (__FILE__, __LINE__, "invalid value Cell Id for SIB5 intialisation"); + } + } + f_EUTRA_CellInfo_SetSIB5(p_CellId, v_SIB5); + } + + /* + * @desc Function for setting the index for f8 in SIB6 carrierFreqListUTRA. + * The other indexes will be set to default according to 36.508 Table 4.4.3.3-5 & cl. 6.3.1.3 + * @param p_CellId + * @param p_CarrierFreqUTRA_FDD (default value: omit) + * @param p_CarrierFreqUTRA_TDD (default value: omit) + * @status APPROVED (LTE_IRAT) + */ + function f_EUTRA_SetSIB6_InterFreqCarrierFreqList_F8(EUTRA_CellId_Type p_CellId, + template (omit) CarrierFreqUTRA_FDD p_CarrierFreqUTRA_FDD := omit, //@sic R5s110062 sic@ + template (omit) CarrierFreqUTRA_TDD p_CarrierFreqUTRA_TDD := omit) //@sic R5s110062 sic@ + runs on EUTRA_PTC + { + var template (value) SystemInformationBlockType6 v_Sib6 := f_EUTRA_CellInfo_GetSib6 (p_CellId); //@sic R5s110062 sic@ + + if (f_IRAT_GetUTRAN_FDD_TDD_Mode () == UTRAN_FDD) {// @sic R5-115770 sic@ + if (isvalue(p_CarrierFreqUTRA_FDD) and + ispresent(v_Sib6.carrierFreqListUTRA_FDD)){ //@sic R5s110062 sic@ + v_Sib6.carrierFreqListUTRA_FDD[0] := p_CarrierFreqUTRA_FDD; //@sic R5s110062 sic@ + } + else{ + FatalError (__FILE__, __LINE__, "FDD template for frequency f8 cannot be set"); //@sic R5s110062 sic@ + } + } + else { + if(isvalue(p_CarrierFreqUTRA_TDD) and + ispresent(v_Sib6.carrierFreqListUTRA_TDD)){ //@sic R5s110062 sic@ + v_Sib6.carrierFreqListUTRA_TDD[0] := p_CarrierFreqUTRA_TDD; //@sic R5s110062 sic@ + } + else{ + FatalError (__FILE__, __LINE__, "TDD template for frequency f8 cannot be set"); //@sic R5s110062 sic@ + } + } + f_EUTRA_CellInfo_SetSIB6 (p_CellId, v_Sib6); //@sic R5s110062 sic@ + } + + /* + * @desc Function for setting the UE in manual mode + * UE may optionnaly initiate a TRAU + * @param p_CellId + * @param p_EquivalentPLMN (default value: omit) + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_EUTRA_SetUEManualMode(EUTRA_CellId_Type p_CellId, + template (omit) PLMN_List p_EquivalentPLMN := omit) + runs on EUTRA_PTC + { + var NAS_MSG_Indication_Type v_NasInd; + var B3_Type v_EpsUpdate_TypeValue; + var boolean v_RRCConnectionRequested; // @sic R5s120791 sic@ + timer t_Watchdog := 30.0; // 30 seconds + + // Set UE in manual mode by selecting a PLMN Id + f_UT_ManualPLMN_Select (UT, + f_Asn2Nas_PlmnId (f_EUTRA_CellInfo_GetGutiPLMN (p_CellId)), + -, + CNF_REQUIRED); + + t_Watchdog.start; + v_RRCConnectionRequested := f_EUTRA_RRC_ConnectionRequest_Common(p_CellId, t_Watchdog); // @sic R5s120791 sic@ + if (v_RRCConnectionRequested) { // @sic R5s120791 sic@ + // UE may optionally send a TAU + f_EUTRA_RRC_ConnectionSetup_Def (p_CellId, -, tsc_RRC_TI_Def); + v_EpsUpdate_TypeValue := f_GetEPSTAUType(NORMAL); + v_NasInd := f_EUTRA_RRCConnectionSetupComplete_Def(p_CellId, + cr_508_RRCConnectionSetupComplete(tsc_RRC_TI_Def, ?, -, 1), + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_508_TAU_Request (v_EpsUpdate_TypeValue, + f_EUTRA_SecurityKSIasme_Get(), + cr_DRXparameter_Any ('5C'O) ifpresent, + f_GetAdditionalUpdateType (NORMAL)))); + f_EUTRA_TrackingAreaUpdate_Accept_Complete(p_CellId, + f_EUTRA_CellInfo_GetGuti(p_CellId), + v_EpsUpdate_TypeValue, + v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.epsBearerContextStatus, + v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.addUpdateType, + NORMAL, + p_EquivalentPLMN); + f_EUTRA_RRC_ConnectionRelease(p_CellId, tsc_RRC_TI_Def); + } + } + +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_LoopBack.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_LoopBack.ttcn new file mode 100644 index 0000000..c7a11f0 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_LoopBack.ttcn @@ -0,0 +1,386 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-06-16 21:35:57 +0200 (Mon, 16 Jun 2014) $ +// $Rev: 11742 $ +/******************************************************************************/ +module EUTRA_LoopBack { + import from CommonDefs all; + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; // to get definition of the DRB-Identity + import from EPS_NAS_MsgContainers all; + import from NAS_CommonTypeDefs all; + import from EUTRA_LoopBack_TypeDefs all; + import from EPS_NAS_Templates all; + import from EUTRA_SRB_Templates all; + import from EUTRA_AspCommon_Templates all; + import from EUTRA_Component all; + import from EPS_NAS_Constants all; + import from IP_PTC_CtrlMsgs all; + import from EUTRA_ASP_SrbDefs all; + + //---------------------------------------------------------------------------- + // Constant defintitions Elements (36.509) + //---------------------------------------------------------------------------- + + // Mesage Type definitions from 36.509 clause 6.X + const MessageType tsc_MsgType_CloseUE_TestLoop := oct2bit ('80'O); /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + const MessageType tsc_MsgType_CloseUE_TestLoopCmpl := oct2bit ('81'O); /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + const MessageType tsc_MsgType_OpenUE_TestLoop := oct2bit ('82'O); /* @status APPROVED (LTE) */ + const MessageType tsc_MsgType_OpenUE_TestLoopCmpl := oct2bit ('83'O); /* @status APPROVED (LTE) */ + const MessageType tsc_MsgType_Activate_TestMode := oct2bit ('84'O); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + const MessageType tsc_MsgType_Activate_TestModeCmpl := oct2bit ('85'O); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + const MessageType tsc_MsgType_Deactivate_TestMode := oct2bit ('86'O); /* @status APPROVED (LTE) */ + const MessageType tsc_MsgType_Deactivate_TestModeCmpl := oct2bit ('87'O); /* @status APPROVED (LTE) */ + const MessageType tsc_MsgType_MBMS_PACKETCOUNTERREQUEST :=oct2bit ('89'O); /* @status APPROVED (LTE_A) */ + const MessageType tsc_MsgType_MBMS_PACKETCOUNTERRESPONSE :=oct2bit ('8A'O); /* @status APPROVED (LTE_A) */ + + + const SkipIndicator tsc_Gen_SkipIndicator := '0000'B; /* Skip Indicator field consists of latter half byte + after Protocol discriminator field. + Its value is '0000'B in all the messages. + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + const ProtocolDiscriminator tsc_LB_ProtocolDiscriminator := '1111'B; /* Protocol descriminator for test procedures + 24.007 Table 11.2 + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + const UE_TestLoopMode_Type tsc_UE_TestLoopMode_TypeA := '00'O; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + const UE_TestLoopMode_Type tsc_UE_TestLoopMode_TypeB := '01'O; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + const UE_TestLoopMode_Type tsc_UE_TestLoopMode_TypeC := '02'O; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) @sic R5s140139 R5s140440 sic@*/ + + + //---------------------------------------------------------------------------- + // Templates for Loop Back PDU's + //---------------------------------------------------------------------------- + + template (value) LB_SetupDRB_IE_Type cs_LB_SetupDRB_IE(integer p_PDCP_SDU_Size, + DRB_Identity p_DRB_Id) := + { /* @status APPROVED (LTE) */ + uplinkPdcpSduSize := int2bit (p_PDCP_SDU_Size,16), /* Uplink PDCP SDU size */ + reserved := '000'B, + drbIdentity := int2bit (p_DRB_Id-1, 5) /* Note: acc. to ASN.1 DRB_Identity is 1..32 but the DRB-Identity of LB setup DRB IE has just 5 bits + => assumption: binary coded DRB identity means ASN.1 coded (i.e. "p_DRB_Id-1") */ + }; + + template (value) UE_TestLoopModeA_LB_Setup_Type cs_UE_TestLoopModeA_LB_Setup_1DRB(integer p_PDCP_SDU_Size, + DRB_Identity p_DRB_Id) := + { /* @status APPROVED (LTE) */ + iel := '03'O, // 3 octets, i.e. one element in LB_SetupDRB_IE_List + lbSetupDrbList := { + cs_LB_SetupDRB_IE (p_PDCP_SDU_Size,p_DRB_Id) + } + }; + + template (value) UE_TestLoopModeA_LB_Setup_Type cs_UE_TestLoopModeA_LB_Setup_NoScaling := + { /* @status APPROVED (LTE, LTE_A) */ + iel := '00'O, // 0 octets, i.e. no element in LB_SetupDRB_IE_List + lbSetupDrbList := omit + }; + + template (value) UE_TestLoopModeC_LB_Setup_Type cs_UE_TestLoopModeC_LB_Setup(B8_Type p_MBSFN_AreaId := int2bit(0,8), + B4_Type p_PMCHIdentity := int2bit(0,4), + B5_Type p_LogChId := int2bit(1,5)) := + { /* @status APPROVED (LTE_A) */ + mBSFN_AreaId := p_MBSFN_AreaId, //MBSFN area Identity 0.. 255 Binary coded + reservedB1 := '0000'B, + pMCHIdentity := p_PMCHIdentity, // MCH identity 0.. 14 (binary coded) + reservedB2 := '000'B, + logChId := p_LogChId //Logical channel identity 0..28 (binary coded) + }; + + template (value) NAS_DL_Message_Type cs_CLOSE_UE_TEST_LOOP_ModeA(template (value) UE_TestLoopModeA_LB_Setup_Type p_UE_TestLoopModeA_LB_Setup) := + { /* parameter is mandatory since "UE_TestLoopMode := tsc_UE_TestLoopMode_TypeA */ + /* @status APPROVED (LTE, LTE_A) */ + cLOSE_UE_TEST_LOOP:= { + skipIndicator := tsc_Gen_SkipIndicator, /* M V 1/2 */ + protocolDiscriminator := tsc_LB_ProtocolDiscriminator, /* M V 1/2 */ + messageType := tsc_MsgType_CloseUE_TestLoop, /* M V 1 */ + ueTestLoopMode := tsc_UE_TestLoopMode_TypeA, /* M V 1 */ + ueTestLoopModeA_LB_Setup := p_UE_TestLoopModeA_LB_Setup, /* C LV 1-16 */ + ueTestLoopModeB_LB_Setup := omit, /* C V 1 */ + ueTestLoopModeC_LB_Setup := omit //@sic eMBMS sic@ + } + }; + + template (value) NAS_DL_Message_Type cs_CLOSE_UE_TEST_LOOP_ModeB(UE_TestLoopModeB_LB_Setup_Type p_TlModeB_Setup) := + { /* parameter is mandatory since "UE_TestLoopMode := tsc_UE_TestLoopMode_TypeB */ + /* @status APPROVED (LTE, LTE_IRAT) */ + cLOSE_UE_TEST_LOOP:= { + skipIndicator := tsc_Gen_SkipIndicator, + protocolDiscriminator := tsc_LB_ProtocolDiscriminator, + messageType := tsc_MsgType_CloseUE_TestLoop, + ueTestLoopMode := tsc_UE_TestLoopMode_TypeB, + ueTestLoopModeA_LB_Setup := omit, + ueTestLoopModeB_LB_Setup := p_TlModeB_Setup, + ueTestLoopModeC_LB_Setup := omit //@sic eMBMS sic@ + } + }; + + template (value) NAS_DL_Message_Type cs_CLOSE_UE_TEST_LOOP_ModeC(template (value) UE_TestLoopModeC_LB_Setup_Type p_UE_TestLoopModeC_LB_Setup):= + { /* parameter is mandatory since "UE_TestLoopMode := tsc_UE_TestLoopMode_TypeC */ + /* @status APPROVED (LTE_A) */ + cLOSE_UE_TEST_LOOP:= { + skipIndicator := tsc_Gen_SkipIndicator, /* M V 1/2 */ + protocolDiscriminator := tsc_LB_ProtocolDiscriminator, /* M V 1/2 */ + messageType := tsc_MsgType_CloseUE_TestLoop, /* M V 1 */ + ueTestLoopMode := tsc_UE_TestLoopMode_TypeC, /* M V 1 */ + ueTestLoopModeA_LB_Setup := omit, /* C LV 1-16 */ + ueTestLoopModeB_LB_Setup := omit, /* C V 1 */ + ueTestLoopModeC_LB_Setup := p_UE_TestLoopModeC_LB_Setup //@sic eMBMS sic@ + } + }; + + template (present) NAS_UL_Message_Type cr_CLOSE_UE_TEST_LOOP_COMPLETE := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + cLOSE_UE_TEST_LOOP_COMPLETE:= { + skipIndicator := tsc_Gen_SkipIndicator, /* M V 1/2 */ + protocolDiscriminator := tsc_LB_ProtocolDiscriminator, /* M V 1/2 */ + messageType := tsc_MsgType_CloseUE_TestLoopCmpl /* M V 1 */ + } + }; + + template (value) NAS_DL_Message_Type cs_ACTIVATE_TEST_MODE (UE_TestLoopMode_Type p_UE_TestLoopMode) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + aCTIVATE_TEST_MODE:= { + skipIndicator := tsc_Gen_SkipIndicator, /* M V 1/2 */ + protocolDiscriminator := tsc_LB_ProtocolDiscriminator, /* M V 1/2 */ + messageType := tsc_MsgType_Activate_TestMode, /* M V 1 */ + ueTestLoopMode := p_UE_TestLoopMode /* M V 1 */ + } + }; + + template (present) NAS_UL_Message_Type cr_ACTIVATE_TEST_MODE_COMPLETE := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + aCTIVATE_TEST_MODE_COMPLETE:= { + skipIndicator := tsc_Gen_SkipIndicator, /* M V 1/2 */ + protocolDiscriminator := tsc_LB_ProtocolDiscriminator, /* M V 1/2 */ + messageType := tsc_MsgType_Activate_TestModeCmpl /* M V 1 */ + } + }; + + template (value) NAS_DL_Message_Type cs_DEACTIVATE_TEST_MODE := + { /* @status APPROVED (LTE) */ + dEACTIVATE_TEST_MODE:= { + skipIndicator := tsc_Gen_SkipIndicator, /* M V 1/2 */ + protocolDiscriminator := tsc_LB_ProtocolDiscriminator, /* M V 1/2 */ + messageType := tsc_MsgType_Deactivate_TestMode /* M V 1 */ + } + }; + + template (present) NAS_UL_Message_Type cr_DEACTIVATE_TEST_MODE_COMPLETE := + { /* @status APPROVED (LTE) */ + dEACTIVATE_TEST_MODE_COMPLETE:= { + skipIndicator := tsc_Gen_SkipIndicator, /* M V 1/2 */ + protocolDiscriminator := tsc_LB_ProtocolDiscriminator, /* M V 1/2 */ + messageType := tsc_MsgType_Deactivate_TestModeCmpl /* M V 1 */ + } + }; + + template (value) NAS_DL_Message_Type cs_OPEN_UE_TEST_LOOP := + { /* @status APPROVED (LTE) */ + oPEN_UE_TEST_LOOP:= { + skipIndicator := tsc_Gen_SkipIndicator, /* M V 1/2 */ + protocolDiscriminator := tsc_LB_ProtocolDiscriminator, /* M V 1/2 */ + messageType := tsc_MsgType_OpenUE_TestLoop /* M V 1 */ + } + }; + + template (present) NAS_UL_Message_Type cr_OPEN_UE_TEST_LOOP_COMPLETE := + { /* @status APPROVED (LTE) */ + oPEN_UE_TEST_LOOP_COMPLETE:= { + skipIndicator := tsc_Gen_SkipIndicator, /* M V 1/2 */ + protocolDiscriminator := tsc_LB_ProtocolDiscriminator, /* M V 1/2 */ + messageType := tsc_MsgType_OpenUE_TestLoopCmpl /* M V 1 */ + } + }; + + template (value) NAS_DL_Message_Type cs_MBMS_PACKETCOUNTERREQUEST := + { /* @status APPROVED (LTE_A) */ + uE_TESTLOOPMODEC_MBMS_PACKETCOUNTERREQUEST:= { + skipIndicator := tsc_Gen_SkipIndicator, /* M V 1/2 */ + protocolDiscriminator := tsc_LB_ProtocolDiscriminator, /* M V 1/2 */ + messageType := tsc_MsgType_MBMS_PACKETCOUNTERREQUEST /* M V 1 */ + } + }; + + template (present) NAS_UL_Message_Type cr_MBMS_PACKETCOUNTERRESPONSE := + { /* @status APPROVED (LTE_A) */ + uE_TESTLOOPMODEC_MBMS_PACKETCOUNTERRESPONSE:= { + skipIndicator := tsc_Gen_SkipIndicator, /* M V 1/2 */ + protocolDiscriminator := tsc_LB_ProtocolDiscriminator, /* M V 1/2 */ + messageType := tsc_MsgType_MBMS_PACKETCOUNTERRESPONSE, /* M V 1 */ + MBMS_PacketCounterValue := ? + } + }; + + //---------------------------------------------------------------------------- + // Function definition; Loop back specific + //---------------------------------------------------------------------------- + + /* + * @desc Close test loop mode A at the UE + * @param p_CellId + * @param p_UE_TestLoopModeA_LB_Setup + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_CloseUE_TestLoopModeA(EUTRA_CellId_Type p_CellId, + template (value) UE_TestLoopModeA_LB_Setup_Type p_UE_TestLoopModeA_LB_Setup) + runs on EUTRA_PTC + { /* @sic R5-090700: TT01 has been removed from 36.509 sic@ */ + + f_IP_Handling_Stop(IP); /* @sic R5s100135: stop DHCP and routing of DRB1 to the IP PTC sic@ + @sic R5-106675 IP and IMS support sic@ + @sic R5-113734 change 8 sic@ */ + + SRB.send (cas_SRB2_NasPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, cs_CLOSE_UE_TEST_LOOP_ModeA(p_UE_TestLoopModeA_LB_Setup)))); + + SRB.receive (car_SRB2_NasPdu_IND( p_CellId, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_CLOSE_UE_TEST_LOOP_COMPLETE))); + } + + /* + * @desc Close test loop mode B at the UE + * @param p_CellId + * @param p_IpPduDelayTime + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_EUTRA_CloseUE_TestLoopModeB(EUTRA_CellId_Type p_CellId, + UE_TestLoopModeB_LB_Setup_Type p_IpPduDelayTime) + runs on EUTRA_PTC + { /* @sic R5-090700: TT01 has been removed from 36.509 sic@ */ + + f_IP_Handling_Stop(IP); /* @sic R5s100135: stop DHCP and routing of DRB1 to the IP PTC sic@ + @sic R5-106675 IP and IMS support sic@ + @sic R5-113734 change 8 sic@ */ + + SRB.send (cas_SRB2_NasPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_CLOSE_UE_TEST_LOOP_ModeB(p_IpPduDelayTime)))); + + SRB.receive(car_SRB2_NasPdu_IND(p_CellId, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_CLOSE_UE_TEST_LOOP_COMPLETE))); + } + + + /* + * @desc Close test loop mode C at the UE + * @param p_CellId + * @param p_UE_TestLoopModeC_LB_Setup + * @status APPROVED (LTE_A) + */ + function f_EUTRA_CloseUE_TestLoopModeC(EUTRA_CellId_Type p_CellId, + template (value) UE_TestLoopModeC_LB_Setup_Type p_UE_TestLoopModeC_LB_Setup) + runs on EUTRA_PTC + { /* @sic R5-090700: TT01 has been removed from 36.509 sic@ */ + + f_IP_Handling_Stop(IP); /* @sic R5s100135: stop DHCP and routing of DRB1 to the IP PTC sic@ + @sic R5-106675 IP and IMS support sic@ + @sic R5-113734 change 8 sic@ */ + + SRB.send (cas_SRB2_NasPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, cs_CLOSE_UE_TEST_LOOP_ModeC(p_UE_TestLoopModeC_LB_Setup)))); + + SRB.receive (car_SRB2_NasPdu_IND( p_CellId, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_CLOSE_UE_TEST_LOOP_COMPLETE))); + } + + /* + * @desc open test loop at the UE (independent from mode A or B) + * @param p_CellId + * @status APPROVED (LTE) + */ + function f_EUTRA_OpenUE_TestLoopMode(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { // @sic R5-103847 Deactivate test loop and open test loop is removed sic@ + // @sic R5-106566 sic@ + + SRB.send (cas_SRB2_NasPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_OPEN_UE_TEST_LOOP))); + SRB.receive (car_SRB2_NasPdu_IND(p_CellId, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_OPEN_UE_TEST_LOOP_COMPLETE))); + } + + /* + * @desc activate test mode at the UE side + * @param p_CellId + * @param p_UE_TestLoopMode + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_Activate_TestMode (EUTRA_CellId_Type p_CellId, + UE_TestLoopMode_Type p_UE_TestLoopMode) runs on EUTRA_PTC + { /* @sic R5-090700: TT01 has been removed from 36.509 sic@ */ + + SRB.send (cas_SRB1_NasPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_ACTIVATE_TEST_MODE(p_UE_TestLoopMode)))); + + SRB.receive (car_SRB1_NasPdu_IND(p_CellId, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_ACTIVATE_TEST_MODE_COMPLETE))); + } + + /* + * @desc deactivate test mode + * @param p_CellId + * @status APPROVED (LTE) + */ + function f_EUTRA_Deactivate_TestMode(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { //@sic R5-090700: TT01 has been removed from 36.509 sic@ + //@sic R5-103847 Deactivate test loop and open test loop is removed sic@ + //@sic R5-113714 re introduces usage of deactivate test loop sic@ + + SRB.send (cas_SRB2_NasPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_DEACTIVATE_TEST_MODE))); + + SRB.receive (car_SRB2_NasPdu_IND(p_CellId, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_DEACTIVATE_TEST_MODE_COMPLETE))); + } + + /* + * @desc open test loop and deactivate test mode + * @param p_CellId + * @status APPROVED (LTE) + */ + function f_EUTRA_OpenUE_TestLoopMode_Deactivate_TestMode(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { // @sic R5-103847 Deactivate test loop and open test loop is removed sic@ + // @sic R5-113714 re introduces usage of deactivate test loop sic@ + f_EUTRA_OpenUE_TestLoopMode(p_CellId); + f_EUTRA_Deactivate_TestMode(p_CellId); + } + + /* + * @desc To send MBMS counter Request and receive MBMS counter Response + * @param p_CellId + * @return integer + * @status APPROVED (LTE_A) + */ + function f_EUTRA_MBMS_CounterProcedure(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return integer + { // @sic R5-103847 Deactivate test loop and open test loop is removed sic@ + var integer v_MBMSCounterValue; + var SRB_COMMON_IND v_ReceivedRrcMsg; + SRB.send (cas_SRB2_NasPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_MBMS_PACKETCOUNTERREQUEST))); + SRB.receive (car_SRB2_NasPdu_IND( p_CellId, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_MBMS_PACKETCOUNTERRESPONSE))) -> value v_ReceivedRrcMsg; + v_MBMSCounterValue := oct2int ( v_ReceivedRrcMsg.Signalling.Nas[0].Pdu.Msg.uE_TESTLOOPMODEC_MBMS_PACKETCOUNTERRESPONSE.MBMS_PacketCounterValue); + return v_MBMSCounterValue; + } +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_Measurement_Functions.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_Measurement_Functions.ttcn new file mode 100644 index 0000000..81c8551 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_Measurement_Functions.ttcn @@ -0,0 +1,406 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-03-05 17:49:33 +0100 (Wed, 05 Mar 2014) $ +// $Rev: 10914 $ +/******************************************************************************/ + +module EUTRA_Measurement_Functions +{ + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from CommonDefs all; + import from EUTRA_Component all; + import from EUTRA_SRB_Templates all; + import from NAS_CommonTypeDefs all; + import from EUTRA_ASP_SrbDefs all; + + + //---------------------------------------------------------------------------- + /* + * @desc Check that Measurement report is received within a certain time and assign verdicts + * @param p_CellId + * @param p_Timer + * @param p_MeasurementReport + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_EUTRA_Check_Timer_MeasurementReport(EUTRA_CellId_Type p_CellId, + float p_Timer, + template (present) UL_DCCH_Message p_MeasurementReport ) runs on EUTRA_PTC + { + timer t_Wait; + t_Wait.start(p_Timer); + alt { + [] t_Wait.timeout + { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Check failed: No MeasurementReport message received within certain time"); + } + [] SRB.receive(car_SRB1_RrcPdu_IND(p_CellId, p_MeasurementReport)) + { + t_Wait.stop; //@sic R5s100580 Change2 sic@ + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Preliminary pass: MeasurementReport message received within a certain time" ); + } + } + } + + //---------------------------------------------------------------------------- + /* + * @desc Check that no uplink message is received within certain time + * @param p_Timer + * @param p_SRB_COMMON_IND (default value: ?) + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_Check_NoUplinkMessage(float p_Timer, + template (present) SRB_COMMON_IND p_SRB_COMMON_IND := ?) runs on EUTRA_PTC + { + timer t_Wait; + t_Wait.start(p_Timer); + alt { + [] t_Wait.timeout + { + } + [] SRB.receive(p_SRB_COMMON_IND) + { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Check failed: Uplink message received within a certain time"); + } + } + } + + //---------------------------------------------------------------------------- + /* + * @desc Check that no measurement report is received within certain time1 + * @param p_CellId + * @param p_Timer + * @param p_MeasurementReport + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_NoMeasurementReport(EUTRA_CellId_Type p_CellId, + float p_Timer, + template (present) UL_DCCH_Message p_MeasurementReport) runs on EUTRA_PTC + { + f_EUTRA_Check_NoUplinkMessage(p_Timer, car_SRB1_RrcPdu_IND(p_CellId, p_MeasurementReport)); + } + + //---------------------------------------------------------------------------- + /* + * @desc Wait for the given time and ignore measurement reports + * @param p_CellId + * @param p_Timer + * @param p_MeasurementReport + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_WaitAndIgnoreMeasurementReport(EUTRA_CellId_Type p_CellId, + float p_Timer, + template (present) UL_DCCH_Message p_MeasurementReport) runs on EUTRA_PTC + { + timer t_Wait; + t_Wait.start(p_Timer); + alt { + [] t_Wait.timeout + { + } + [] SRB.receive(car_SRB1_RrcPdu_IND(p_CellId, p_MeasurementReport)) + { + repeat; + } + } + } + + //---------------------------------------------------------------------------- + /* + * @desc Receive periodical measurement report and check every report interval within a certain period + * (Only applicable to high frequency report (report interval less than or equal to ms1024)) + * @param p_CellId + * @param p_TotalTimer + * @param p_MeasurementReport + * @param p_ReportInterval + * @status APPROVED (LTE_IRAT) + */ + function f_Check_EUTRA_HighFreq_PeriodicalMeasurmentReport(EUTRA_CellId_Type p_CellId, + float p_TotalTimer, + template (present) UL_DCCH_Message p_MeasurementReport, + float p_ReportInterval) runs on EUTRA_PTC + { + var SRB_COMMON_IND v_ReceivedAsp; + var integer v_PreviousSFN := 0; + var integer v_CurrentSFN := 0; + var integer v_SFNLapse; + var boolean v_MeasRpt1stFlag := true; + + timer t_TotalTimer; + timer t_TimeoutTimer; + + t_TotalTimer.start(p_TotalTimer); + t_TimeoutTimer.start(5.0); + + alt { + []SRB.receive(car_SRB1_RrcPdu_IND(p_CellId, p_MeasurementReport)) -> value v_ReceivedAsp + { + t_TimeoutTimer.stop; + t_TimeoutTimer.start(2.0); + v_CurrentSFN := v_ReceivedAsp.Common.TimingInfo.SubFrame.SFN.Number; + + if (v_MeasRpt1stFlag == true) //the 1st MeasurementReport message + { + v_MeasRpt1stFlag := false; + } + else //subsequent MeasurementReport messages + { + v_SFNLapse := (v_CurrentSFN - v_PreviousSFN) mod 1024; + + if ((int2float(v_SFNLapse) > p_ReportInterval * 110.0) or //v_SFNLapse * 10 > p_ReportInterval * 110% * 1000 + (int2float(v_SFNLapse) < p_ReportInterval * 90.0)) //v_SFNLapse * 10 < p_ReportInterval * 90% * 1000 + { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Abnormal report interval!"); + } + else + { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Preliminary pass: periodical MeasurementReport message received"); + } + } + + v_PreviousSFN := v_CurrentSFN; + repeat; + } + + []t_TimeoutTimer.timeout + { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Timeout when receiving periodical MeasurementReport message!"); + } + + []t_TotalTimer.timeout + { + t_TimeoutTimer.stop; + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Periodical MeasurementReport test pass!"); + } + } + } //end of f_Check_EUTRA_HighFreq_PeriodicalMeasurmentReport + + //---------------------------------------------------------------------------- + /* + * @desc This function is used to convert PLMN from NAS type to ASN1 type. + * @param p_NAS_PlmnId + * @return PLMN_Identity + * @status APPROVED (LTE_IRAT) + */ + function f_EUTRA_Nas2Asn_PlmnId(NAS_PlmnId p_NAS_PlmnId) return PLMN_Identity + { + var PLMN_Identity v_PLMN_Identity; + var hexstring v_PLMN_hexstring := oct2hex(p_NAS_PlmnId); + + v_PLMN_Identity := { + mcc := { + hex2int(v_PLMN_hexstring[1]), + hex2int(v_PLMN_hexstring[0]), + hex2int(v_PLMN_hexstring[3]) + }, + mnc := { + hex2int(v_PLMN_hexstring[5]), + hex2int(v_PLMN_hexstring[4]) + } + } + + if (v_PLMN_hexstring[2] != 'F'H) { + v_PLMN_Identity.mnc[2] := hex2int(v_PLMN_hexstring[2]); + } + + return v_PLMN_Identity; + } + + //---------------------------------------------------------------------------- + /* + * @desc Receive two periodical measurement reports and check every report interval within a certain period + * (Only applicable to high frequency report (report interval less than or equal to ms1024) for TC8.3.1.13) + * @param p_CellId + * @param p_TotalTimer + * @param p_MeasurementReport_1 + * @param p_MeasurementReport_2 + * @param p_MeasurementReport_1Alt (default value: omit) + * @param p_ReportInterval_1 (default value: 1.024) + * @param p_ReportInterval_2 (default value: 1.024) + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_Check_EUTRA_HighFreq_PeriodicalMeasurmentReport_2Meas(EUTRA_CellId_Type p_CellId, + float p_TotalTimer, + template (present) UL_DCCH_Message p_MeasurementReport_1, + template (present) UL_DCCH_Message p_MeasurementReport_2, + template UL_DCCH_Message p_MeasurementReport_1Alt := omit, + float p_ReportInterval_1 := 1.024, + float p_ReportInterval_2 := 1.024) runs on EUTRA_PTC + { + var SRB_COMMON_IND v_ReceivedAsp_1; + var integer v_PreviousSFN_1 := 0; + var integer v_CurrentSFN_1 := 0; + var integer v_SFNLapse_1; + var boolean v_MeasRpt1stFlag_1 := true; + + var SRB_COMMON_IND v_ReceivedAsp_2; + var integer v_PreviousSFN_2 := 0; + var integer v_CurrentSFN_2 := 0; + var integer v_SFNLapse_2; + var boolean v_MeasRpt1stFlag_2 := true; + + timer t_TotalTimer; + timer t_TimeoutTimer_1; + timer t_TimeoutTimer_2; + + t_TotalTimer.start(p_TotalTimer); + t_TimeoutTimer_1.start(5.0); + t_TimeoutTimer_2.start(5.0); + + alt { + //Accept p_MeasurementReport_1Alt template first time only + [(v_MeasRpt1stFlag_1) and (ispresent(p_MeasurementReport_1Alt))] SRB.receive(car_SRB1_RrcPdu_IND(p_CellId, p_MeasurementReport_1Alt)) -> value v_ReceivedAsp_1 // compiler warning for p_MeasurementReport_1Alt cannot be avoided + { + t_TimeoutTimer_1.stop; + t_TimeoutTimer_1.start(2.0); + v_CurrentSFN_1 := v_ReceivedAsp_1.Common.TimingInfo.SubFrame.SFN.Number; + + // this is the 1st MeasurementReport message + v_MeasRpt1stFlag_1 := false; + + v_PreviousSFN_1 := v_CurrentSFN_1; + repeat; + } //@sic R5s130695 sic@ + + [] SRB.receive(car_SRB1_RrcPdu_IND(p_CellId, p_MeasurementReport_1)) -> value v_ReceivedAsp_1 + { + t_TimeoutTimer_1.stop; + t_TimeoutTimer_1.start(2.0); + v_CurrentSFN_1 := v_ReceivedAsp_1.Common.TimingInfo.SubFrame.SFN.Number; + + if (v_MeasRpt1stFlag_1 == true) { // the 1st MeasurementReport message + v_MeasRpt1stFlag_1 := false; + } + else { // subsequent MeasurementReport messages + v_SFNLapse_1 := (v_CurrentSFN_1 - v_PreviousSFN_1) mod 1024; + + if ((int2float(v_SFNLapse_1) > p_ReportInterval_1 * 110.0) or // v_SFNLapse * 10 > p_ReportInterval * 110% * 1000 + (int2float(v_SFNLapse_1) < p_ReportInterval_1 * 90.0)) { // v_SFNLapse * 10 < p_ReportInterval * 90% * 1000 + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Abnormal report interval of MeasurementReport_1!"); + } + else { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Preliminary pass: periodical MeasurementReport_1 message received"); + } + } + v_PreviousSFN_1 := v_CurrentSFN_1; + repeat; + } + [] SRB.receive(car_SRB1_RrcPdu_IND(p_CellId, p_MeasurementReport_2)) -> value v_ReceivedAsp_2 + { + t_TimeoutTimer_2.stop; + t_TimeoutTimer_2.start(2.0); + v_CurrentSFN_2 := v_ReceivedAsp_2.Common.TimingInfo.SubFrame.SFN.Number; + + if (v_MeasRpt1stFlag_2 == true) { // the 1st MeasurementReport message + v_MeasRpt1stFlag_2 := false; + } + else { //subsequent MeasurementReport messages + v_SFNLapse_2 := (v_CurrentSFN_2 - v_PreviousSFN_2) mod 1024; + + if ((int2float(v_SFNLapse_2) > p_ReportInterval_2 * 110.0) or // v_SFNLapse * 10 > p_ReportInterval * 110% * 1000 + (int2float(v_SFNLapse_2) < p_ReportInterval_2 * 90.0)) { // v_SFNLapse * 10 < p_ReportInterval * 90% * 1000 + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Abnormal report interval of MeasurementReport_2!"); + } + else { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Preliminary pass: periodical MeasurementReport_2 message received"); + } + } + v_PreviousSFN_2 := v_CurrentSFN_2; + repeat; + } + [] t_TimeoutTimer_1.timeout + { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Timeout when receiving periodical MeasurementReport_1 message!"); + } + [] t_TimeoutTimer_2.timeout + { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Timeout when receiving periodical MeasurementReport_2 message!"); + } + [] t_TotalTimer.timeout + { + t_TimeoutTimer_1.stop; + t_TimeoutTimer_2.stop; + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Periodical MeasurementReport test pass!"); + } + } + } //end of f_Check_EUTRA_HighFreq_PeriodicalMeasurmentReport_2Meas + + //@sic R5s120552 sic@ + //---------------------------------------------------------------------------- + /* + * @desc Receive two periodical measurement reports and check every report interval within a certain period + * (Only applicable to high frequency report (report interval less than or equal to ms1024)) + * @param p_CellId + * @param p_TotalTimer + * @param p_MeasurementReport_1 + * @param p_MeasurementReport_2 + * @param p_ReportInterval_1 (default value: 1.024) + * @status APPROVED (LTE_IRAT) + */ + function f_Check_EUTRA_HighFreq_PeriodicalMeasurmentReport_2Meas_2Opt(EUTRA_CellId_Type p_CellId, + float p_TotalTimer, + template (present) UL_DCCH_Message p_MeasurementReport_1, + template (present) UL_DCCH_Message p_MeasurementReport_2, + float p_ReportInterval_1 := 1.024) runs on EUTRA_PTC + { // @sic R5s120552 sic@ + var SRB_COMMON_IND v_ReceivedAsp_1; + var integer v_PreviousSFN_1 := 0; + var integer v_CurrentSFN_1 := 0; + var integer v_SFNLapse_1; + var boolean v_MeasRpt1stFlag_1 := true; + + var SRB_COMMON_IND v_ReceivedAsp_2; + + timer t_TotalTimer; + timer t_TimeoutTimer_1; + + t_TotalTimer.start(p_TotalTimer); + t_TimeoutTimer_1.start(5.0); + + alt { + [] SRB.receive(car_SRB1_RrcPdu_IND(p_CellId, p_MeasurementReport_1)) -> value v_ReceivedAsp_1 + { + t_TimeoutTimer_1.stop; + t_TimeoutTimer_1.start(2.0); + v_CurrentSFN_1 := v_ReceivedAsp_1.Common.TimingInfo.SubFrame.SFN.Number; + + if (v_MeasRpt1stFlag_1 == true) { //the 1st MeasurementReport message + v_MeasRpt1stFlag_1 := false; + } + else { //subsequent MeasurementReport messages + v_SFNLapse_1 := (v_CurrentSFN_1 - v_PreviousSFN_1) mod 1024; + + if ((int2float(v_SFNLapse_1) > p_ReportInterval_1 * 110.0) or //v_SFNLapse * 10 > p_ReportInterval * 110% * 1000 + (int2float(v_SFNLapse_1) < p_ReportInterval_1 * 90.0)) { //v_SFNLapse * 10 < p_ReportInterval * 90% * 1000 + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Abnormal report interval of MeasurementReport_1!"); + } + else { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Preliminary pass: periodical MeasurementReport_1 message received"); + } + } + v_PreviousSFN_1 := v_CurrentSFN_1; + repeat; + } + + [] SRB.receive(car_SRB1_RrcPdu_IND(p_CellId, p_MeasurementReport_2)) -> value v_ReceivedAsp_2 + { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Preliminary pass: periodical MeasurementReport_2 message received"); + repeat; + } + [] t_TimeoutTimer_1.timeout + { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Timeout when receiving periodical MeasurementReport_1 message!"); + } + [] t_TotalTimer.timeout + { + t_TimeoutTimer_1.stop; + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Periodical MeasurementReport test pass!"); + } + } + } + +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_NASSteps.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_NASSteps.ttcn new file mode 100644 index 0000000..6724c45 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_NASSteps.ttcn @@ -0,0 +1,2011 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-11 15:45:32 +0200 (Thu, 11 Sep 2014) $ +// $Rev: 12206 $ +/******************************************************************************/ + +module EUTRA_NASSteps { + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from EUTRA_ASP_SrbDefs all; + import from EUTRA_ASP_DrbDefs all; + import from NAS_CommonTypeDefs all; + import from EPS_NAS_MsgContainers all; + import from EPS_NAS_TypeDefs all; + import from EPS_NAS_Constants all; + import from EUTRA_Component all; + import from EUTRA_CellInfo all; + import from EUTRA_AspCommon_Templates all; + import from EUTRA_CellCfg_Templates all; + import from EUTRA_SRB_Templates all; + import from EUTRA_RRCSteps all; + import from EUTRA_Timing all; + import from UpperTesterFunctions all; + import from EUTRA_RRC_Templates all; + import from EUTRA_DRB_Templates all; + import from EPS_NAS_Templates all; + import from NAS_CommonTemplates all; + import from Parameters all; + import from EUTRA_SecuritySteps all; + import from EUTRA_SecurityFunctions all; + import from EUTRA_AuxiliaryFunctions all; + import from EUTRA_ConfigurationSteps all; + import from IP_PTC_CtrlMsgs all; + import from IMS_PTC_CoordMsg all; + import from EUTRA_ASP_NasCtrl all; + import from EUTRA_ASP_TypeDefs all; + + // =========================================================================== + + const boolean tsc_EUTRA_Registration_MultiplePDN := pc_IMS and (pc_Provide_IMS_as_second_APN or pc_Provide_Internet_as_second_APN); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + const boolean tsc_EUTRA_Registration_PDN1isIMS := pc_IMS and not pc_Provide_IMS_as_second_APN; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + const boolean tsc_EUTRA_Registration_PDN2isIMS := tsc_EUTRA_Registration_MultiplePDN and pc_Provide_IMS_as_second_APN; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + + type enumerated EUTRA_ATTACH_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5-101021, R5s110176, R5s110549 sic@ */ + NORMAL, + EPS_Only, + Combined + }; + + type enumerated EUTRA_DelayForUserPlaneSignalling_Type { noDelay, waitForIMS, dontWaitForIMS }; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + + type enumerated EUTRA_InitialRegistrationPDN_Type { firstPDN, secondPDN }; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + + type record APNandPCOs_Type { /* @sic R5s130382 change 2 sic@ + as the APN the PCOs may be sent by the UE in PDN CONNECTIVITY REQUEST or ESM INFORMATION RESPONSE + => when the PCOs are included in the PDN CONNECTIVITY REQUEST f_EUTRA_IdleUpdated_Step5_13 needs to return both + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + AccessPointName accessPointName optional, + ProtocolConfigOptions protocolConfigurationOptions optional + }; + + template (present) NAS_UL_Message_Type cdr_TAU_Request_HO(template (present) EPS_UpdateTypeValue p_EpsUpdate_TypeValue, + NAS_KsiValue p_KsiValue, + template DRXparameter p_DRXparameter, // @sic R5s120210 sic@ + template AdditionalUpdateType p_AdditionalUpdateType) + modifies cr_508_TAU_Request := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + tRACKING_AREA_UPDATE_REQUEST := { + asmeNasKeySetId := cr_NAS_KeySetIdentifier ('000'B, tsc_NasKsi_MappedSecurityContext), + nonCurrentNativeNasKeySetId := cdr_NAS_KeySetIdentifier_tlv ('000'B, '0'B), + oldPtmsiSignature := cr_PTMSI_SignatureAny, + additionalGuti := cr_MobileIdAny ('50'O) + } + }; + + template (value) APNandPCOs_Type cs_APNandPCOs(template (omit) AccessPointName p_AccessPointName, + template (omit) ProtocolConfigOptions p_ProtocolConfigOptions) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + accessPointName := p_AccessPointName, + protocolConfigurationOptions := p_ProtocolConfigOptions + }; + + /* + * @desc wrapper function + * @param p_AccessPointName (default value: omit) + * @param p_ProtocolConfigOptions (default value: omit) + * @return APNandPCOs_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_APNandPCOs_Init(template (omit) AccessPointName p_AccessPointName := omit, + template (omit) ProtocolConfigOptions p_ProtocolConfigOptions := omit) return APNandPCOs_Type + { + return valueof(cs_APNandPCOs(p_AccessPointName, p_ProtocolConfigOptions)); + } + + /* + * @desc calculation of DRB_Identity associated to EpsBearerId + * @param p_EpsBearerId + * @return DRB_Identity + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_EpsBearerAssociatedDRB(HalfOctet_Type p_EpsBearerId) return DRB_Identity + { + return (hex2int(p_EpsBearerId) - 4); + } + + // =========================================================================== + /* + * @desc Check correct setting of PICS and return true combined attach shall be applied + * @param p_ForcedAttach + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_AttachTypeCheck(EUTRA_ATTACH_Type p_ForcedAttach) runs on EUTRA_PTC return boolean + { + var boolean v_IsCombined := false; + select (p_ForcedAttach) { + case (Combined) { + v_IsCombined := true; + } + case (EPS_Only) { + v_IsCombined := false; + } + case (NORMAL) { + if (pc_Combined_Attach) { + if (pc_Attach) { // So both set to true + if (px_AttachTypeTested == COMBINED_ATTACH) { // only now check the PIXIT value + v_IsCombined := true; + } + } else { // only combined set to true + v_IsCombined := true; + } + } else if (not pc_Attach) { // so neither set to true + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Neither pc_Attach nor pc_Combined_Attach set to true"); + } + } + } + return v_IsCombined; + } + + /* + * @desc Check PICS and return corresponding EPS Attach Type value. + * @param p_ForcedAttach (default value: NORMAL) + * @return NAS_AttDetValue_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_GetEAttachType(EUTRA_ATTACH_Type p_ForcedAttach) runs on EUTRA_PTC return NAS_AttDetValue_Type + { /* @sic R5-101021, R5-103673, R5s100795 sic@ */ + var NAS_AttDetValue_Type v_EAttachType; + + if (p_ForcedAttach == EPS_Only) { //@sic R5s100795 sic@ + v_EAttachType := tsc_EAttachType_EpsOnly; // Note at the end of attach procedure in 36.508 says that if required EpsOnly can be forced + } + else if (f_EUTRA_AttachTypeCheck (p_ForcedAttach)) { // @sic R5s110176 sic@ + v_EAttachType := tsc_EAttachType_Combined; + } + else { + v_EAttachType := tsc_EAttachType_EpsOnly; + } + return v_EAttachType; + } + + // =========================================================================== + /* + * @desc Check PICS and return corresponding EPS Detach Type value. + * @param p_ForcedAttach + * @return NAS_AttDetValue_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_GetEDetachType(EUTRA_ATTACH_Type p_ForcedAttach) runs on EUTRA_PTC return NAS_AttDetValue_Type + { + var NAS_AttDetValue_Type v_EDetachType := tsc_DetachMO_EpsOnly; + + if (f_EUTRA_AttachTypeCheck (p_ForcedAttach)) { // @sic R5s110176 sic@ + v_EDetachType := tsc_DetachMO_Combined; + } + return v_EDetachType; + } + + // =========================================================================== + /* + * @desc Check PICS and return corresponding EPS TAU Type value usef in the TAU Request message. + * @param p_ForcedAttach + * @return EPS_UpdateTypeValue + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_GetEPSTAUType(EUTRA_ATTACH_Type p_ForcedAttach) runs on EUTRA_PTC return EPS_UpdateTypeValue + { // @sic R5s100029, R5-101021, R5-103673 sic@ + var EPS_UpdateTypeValue v_TAUType := tsc_EpsUpdate_TaUpdate; + + if (f_EUTRA_AttachTypeCheck (p_ForcedAttach)) { // @sic R5s110176 sic@ + v_TAUType := tsc_EpsUpdate_Combined_TaLaUpdate; + } + return v_TAUType; + } + + //---------------------------------------------------------------------------- + /* + * @desc Check PICS and return corresponding Additonal Update Type + * @param p_ForcedAttach (default value: NORMAL) + * @return template AdditionalUpdateType + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_GetAdditionalUpdateType(EUTRA_ATTACH_Type p_ForcedAttach := NORMAL) runs on EUTRA_PTC return template AdditionalUpdateType + { /* @sic R5-103681 sic@ */ + var template AdditionalUpdateType v_AdditionalUpdateType := omit; + if (f_EUTRA_AttachTypeCheck (p_ForcedAttach)) { // @sic R5s110176 sic@ + v_AdditionalUpdateType := cr_AdditionalUpdateTypeAny ifpresent; + } + return v_AdditionalUpdateType; + } + //---------------------------------------------------------------------------- + /* + * @desc Check PICS and return corresponding Additonal Update Result + * @param p_RcvdAddUpdateType + * @param p_ForcedAttach (default value: NORMAL) + * @return template (omit) AdditionalUpdateResult + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_GetAdditionalUpdateResult(template (omit) AdditionalUpdateType p_RcvdAddUpdateType, + EUTRA_ATTACH_Type p_ForcedAttach := NORMAL) runs on EUTRA_PTC return template (omit) AdditionalUpdateResult + { /* @sic R5-103681 sic@ */ + var template (omit) AdditionalUpdateResult v_AdditionalUpdateResult := omit; + var AdditionalUpdateType v_RcvdAddUpdateType; + + if (isvalue(p_RcvdAddUpdateType)) { // @sic R5s110078 sic@ + v_RcvdAddUpdateType := valueof(p_RcvdAddUpdateType); + if (f_EUTRA_AttachTypeCheck (p_ForcedAttach) and (v_RcvdAddUpdateType.addUpdateTypeValue == '1'B)) { // SMS Only and Combined @sic R5s110176 sic@ + v_AdditionalUpdateResult := cs_AdditionalUpdateResult_SMSOnly; + } + } + + return v_AdditionalUpdateResult; + } + //---------------------------------------------------------------------------- + /* + * @desc Check PICS and return corresponding LAI value. @sic R5-103673 sic@ + * @param p_PLMN + * @param p_LAC + * @param p_ForcedAttach + * @return template (omit) LocAreaId + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_GetLAI(NAS_PlmnId p_PLMN, + NAS_Lac p_LAC, + EUTRA_ATTACH_Type p_ForcedAttach) runs on EUTRA_PTC return template (omit) LocAreaId + { + var template (omit) LocAreaId v_LAI := omit; + if (f_EUTRA_AttachTypeCheck (p_ForcedAttach)) { // @sic R5s110176 sic@ + v_LAI := cs_LAI ('13'O, p_PLMN, p_LAC); + } + return v_LAI; + } + + //---------------------------------------------------------------------------- + /* + * @desc Get Location Area Identitiy of a particular cell. + * Note: Depending on the attach mode EPS only or combined, the resulting template may be omit + * @param p_CellId + * @param p_ForcedAttach + * @return template (omit) LocAreaId + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_GetCellLAI(EUTRA_CellId_Type p_CellId, + EUTRA_ATTACH_Type p_ForcedAttach) runs on EUTRA_PTC return template (omit) LocAreaId + { + var GutiParameters_Type v_GutiParams := f_EUTRA_CellInfo_GetGuti(p_CellId); + var NAS_Lac v_LAC := f_EUTRA_CellInfo_GetLocationAreaCode(p_CellId); + var NAS_PlmnId v_PLMN := f_Asn2Nas_PlmnId (v_GutiParams.PLMN_Identity); + return f_GetLAI(v_PLMN,v_LAC, p_ForcedAttach); // @sic R5s110176 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc Check PICS and return corresponding Mobile Id value. + * @param p_ForcedAttach + * @return template (omit) MobileIdentity + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_GetMSId(EUTRA_ATTACH_Type p_ForcedAttach) runs on EUTRA_PTC return template (omit) MobileIdentity + { /* @sic R5-103763 sic@ */ + var template(omit) MobileIdentity v_MSId := omit; + if (f_EUTRA_AttachTypeCheck(p_ForcedAttach)) { // @sic R5s110176 sic@ + v_MSId := cs_MobileIdTMSIorPTMSI('23'O, px_TMSI_Def); // @sic R5s110549 sic@ + } + return v_MSId; + } + //---------------------------------------------------------------------------- + /* + * @desc Check pc_IPv6/pc_IPv4 and return corresponding PDN Type. + * @return PdnTypeValue + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_GetPdnType() return PdnTypeValue + { + var PdnTypeValue v_PdnType := tsc_PdnType_IPv4; + if (pc_IPv6) { + if (pc_IPv4) { + v_PdnType := tsc_PdnType_IPv4v6; + } else { + v_PdnType := tsc_PdnType_IPv6; + } + } + return v_PdnType; + } + + /*---------------------------------------------------------------------------- + * @desc Extract UE security capabilities from TAU Request message and store for use later + * @param p_TAU_REQUEST + * @return UE_SecurityCapability + * @status APPROVED (LTE_IRAT) + */ + function f_EUTRA_FillNAS_SecurityCapability_TAU (TRACKING_AREA_UPDATE_REQUEST p_TAU_REQUEST) return UE_SecurityCapability + { /* @sic R5s110014 sic@ */ + var UE_SecurityCapability v_SecurityCapability; + var template (omit) MS_NetworkCap v_MS_NetworkCap := omit; + + v_SecurityCapability.eiaCap := p_TAU_REQUEST.ueNetworkCapability.eiaCap; + + if (ispresent(p_TAU_REQUEST.msNetworkCapability)) { + v_MS_NetworkCap := p_TAU_REQUEST.msNetworkCapability; + } + v_SecurityCapability := f_EUTRA_FillNAS_SecurityCapability_Common(p_TAU_REQUEST.ueNetworkCapability, v_MS_NetworkCap); + + return v_SecurityCapability; + } + + /*---------------------------------------------------------------------------- + * @desc Extract UE security capabilities from Attach Request message and store for use later + * @param p_ATTACH_REQUEST + * @return UE_SecurityCapability + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_FillNAS_SecurityCapability (ATTACH_REQUEST p_ATTACH_REQUEST) return UE_SecurityCapability + { /* @sic R5s110014 sic@ */ + var UE_SecurityCapability v_SecurityCapability; + var template (omit) MS_NetworkCap v_MS_NetworkCap := omit; + + v_SecurityCapability.eiaCap := p_ATTACH_REQUEST.ueNetworkCapability.eiaCap; + + if (ispresent(p_ATTACH_REQUEST.msNetworkCapability)) { + v_MS_NetworkCap := p_ATTACH_REQUEST.msNetworkCapability; + } + v_SecurityCapability := f_EUTRA_FillNAS_SecurityCapability_Common (p_ATTACH_REQUEST.ueNetworkCapability, v_MS_NetworkCap); + + return v_SecurityCapability; + } + + /*---------------------------------------------------------------------------- + * @desc Extract UE security capabilities from IEs and store for use later + * @param p_UeNetworkCapability + * @param p_MsNetworkCapability + * @return UE_SecurityCapability + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_FillNAS_SecurityCapability_Common(UE_NetworkCap p_UeNetworkCapability, + template (omit) MS_NetworkCap p_MsNetworkCapability) return UE_SecurityCapability + { /* @sic R5s110014 sic@ */ + var UE_SecurityCapability v_SecurityCapability; + var MS_NetworkCap v_MS_NetworkCap; + var B8_Type v_GEA := '00000000'B; + var integer v_Length := 2; + + v_SecurityCapability.eeaCap := p_UeNetworkCapability.eeaCap; + v_SecurityCapability.eiaCap := p_UeNetworkCapability.eiaCap; + + if (ispresent(p_UeNetworkCapability.ueaCap)) { + v_SecurityCapability.ueaCap := p_UeNetworkCapability.ueaCap; + v_Length := v_Length + 2; // if octet 5 is present, 6 will be too @sic R5s100485 sic@ + if (ispresent(p_UeNetworkCapability.uiaCap)) { + v_SecurityCapability.uiaCap := p_UeNetworkCapability.uiaCap and4b '7f'O; // @sic R5s100520 sic@ + } else { + v_SecurityCapability.uiaCap := '00'O; // @sic R5s100485 sic@ + } + } else { + v_SecurityCapability.ueaCap := omit; + v_SecurityCapability.uiaCap := omit; // @sic R5s100184 sic@ + } + + if (isvalue (p_MsNetworkCapability)) { + v_MS_NetworkCap := valueof(p_MsNetworkCapability); + if (v_MS_NetworkCap.gea1 == '1'B) { + v_GEA := v_GEA or4b '01000000'B; // error corrected in delivery + } + if (v_MS_NetworkCap.gea2 == '1'B) { + v_GEA := v_GEA or4b '00100000'B; // error corrected in delivery + } + if (v_MS_NetworkCap.gea3 == '1'B) { + v_GEA := v_GEA or4b '00010000'B; // error corrected in delivery + } + if (v_MS_NetworkCap.gea4 == '1'B) { + v_GEA := v_GEA or4b '00001000'B; // error corrected in delivery + } + if (v_MS_NetworkCap.gea5 == '1'B) { + v_GEA := v_GEA or4b '00000100'B; // error corrected in delivery + } + if (v_MS_NetworkCap.gea6 == '1'B) { + v_GEA := v_GEA or4b '00000010'B; // error corrected in delivery + } + if (v_MS_NetworkCap.gea7 == '1'B) { + v_GEA := v_GEA or4b '00000001'B; // error corrected in delivery + } + v_Length := v_Length + 1; + v_SecurityCapability.geaCap := bit2oct (v_GEA); // Now store the completed GEA octet + if (v_Length == 3) { // UE didn't report any UTRAN capabilities, so set them to 0 @sic R5s100485 sic@ + v_Length := 5; + v_SecurityCapability.ueaCap := '00'O; + v_SecurityCapability.uiaCap := '00'O; + } + } else {// MS Network Capability not present @sic R5s100184 sic@ + v_SecurityCapability.geaCap := omit; + // if UE included UTRAN capabilities but they're all zero + if (v_SecurityCapability.ueaCap == '00'O and v_SecurityCapability.uiaCap == '00'O) { // @sic R5s130107 sic@ + v_SecurityCapability.ueaCap := omit; + v_SecurityCapability.uiaCap := omit; + v_Length := 2; + } + } + + v_SecurityCapability.iel := int2oct (v_Length, 1); // Now store the length + + return v_SecurityCapability; + } + + //---------------------------------------------------------------------------- + /* + * @desc This function calls NAS Security and RRC Security + * So in the majority of test cases, you don't need to do anything else + * @param p_CellId + * @param p_EIT_Flag - true if UE requested ESM Information Transfer procedure + * @param p_PTI - current ESM Procedure Transaction Identifier to be used + * @param p_SRB + * @return template (value) AccessPointName + * @status (APPROVED) + */ + function f_EUTRA_NAS_AS_Security(EUTRA_CellId_Type p_CellId, + boolean p_EIT_Flag, + ProcedureTransactionIdentifier p_PTI, + SRB_Identity_Type p_SRB) runs on EUTRA_PTC return template (value) AccessPointName + { + var NasCount_Type v_NasCountUL; + var EUTRA_SecurityParams_Type v_AuthParams := f_EUTRA_Security_Get(); + var template (value) AccessPointName v_APN; + + v_NasCountUL := f_EUTRA_NAS_ActivateSecurity(p_CellId,v_AuthParams, p_SRB); // NAS SECURITY COMMAND & COMPLETE + v_APN := f_ESM_InitAPN(p_CellId, p_EIT_Flag, p_PTI); // @sic R5s100751 Additional changes sic@ + + v_AuthParams := f_EUTRA_RRC_ActivateSecurity(p_CellId, v_AuthParams, v_NasCountUL); // RRC SECURITY COMMAND & COMPLETE + f_EUTRA_Security_Set(v_AuthParams); //Saving security parameters + return v_APN; + } + + // =========================================================================== + /* + * @desc This function calls NAS Authentication, NAS Security and RRC Security + * @param p_CellId + * @param p_EIT_Flag - true if UE requested ESM Information Transfer procedure + * @param p_PTI - current ESM Procedure Transaction Identifier to be used + * @param p_SecurityContextActive (default value: true) + * @return AccessPointName + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_Authentication_NAS_AS_Security(EUTRA_CellId_Type p_CellId, + boolean p_EIT_Flag, + ProcedureTransactionIdentifier p_PTI, + boolean p_SecurityContextActive := true) + runs on EUTRA_PTC return AccessPointName + { + var NasCount_Type v_NasCountUL; + var EUTRA_SecurityParams_Type v_AuthParams := f_EUTRA_Security_Get(); + var GutiParameters_Type v_Guti := f_EUTRA_CellInfo_GetGuti(p_CellId); + var NAS_PlmnId v_PLMN := f_Asn2Nas_PlmnId (v_Guti.PLMN_Identity); + var AccessPointName v_APN; + + // Authentication Request / Authentication Response + if (p_SecurityContextActive) { // @sic R5s100008 sic@ + v_AuthParams := f_EUTRA_NAS_Authentication(p_CellId, + tsc_SRB1, + v_AuthParams, + tsc_SHT_IntegrityProtected_Ciphered, + tsc_SHT_IntegrityProtected_Ciphered, + v_PLMN); + } else { + v_AuthParams := f_EUTRA_NAS_Authentication(p_CellId, + tsc_SRB1, + v_AuthParams, + tsc_SHT_NoSecurityProtection, + (tsc_SHT_NoSecurityProtection, tsc_SHT_IntegrityProtected), // @sic R5-102226 sic@ + v_PLMN); + } + + // NAS Security Mode Command / NAS Security Mode Complete + v_NasCountUL := f_EUTRA_NAS_ActivateSecurity(p_CellId, v_AuthParams); + v_APN := f_ESM_InitAPN(p_CellId, p_EIT_Flag, p_PTI); // @sic R5s100751 Additional changes sic@ + + // RRC Security Command / RRC Security Complete + v_AuthParams := f_EUTRA_RRC_ActivateSecurity(p_CellId, v_AuthParams, v_NasCountUL); + f_EUTRA_Security_Set(v_AuthParams);//Saving security parameters + + return v_APN; + } + + //---------------------------------------------------------------------------- + /* + * @desc 1.2s delay acc. to 36.508 cl. 4.5A.1 to allow user-plane signalling + * or waiting 10s for IMS REGISTRATION acc. parallel behaviour of 36.508 cl. 4.5A.3 + * @param p_WaitForIMS (default value: waitForIMS) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_DelayForUserPlaneSignalling(EUTRA_DelayForUserPlaneSignalling_Type p_WaitForIMS := waitForIMS) runs on EUTRA_PTC + { /* NOTE: there is no reason to apply any tolerances for the delay */ + /* @sic R5-123731 "Addition of guard timer to the procedure for IMS signalling" sic@ */ + /* @sic R5s120891 - noDelay sic@ */ + var boolean v_WaitForFirstTrigger := true; + timer t_WaitForIMS; + + if (p_WaitForIMS != noDelay) { + if (pc_IMS and (p_WaitForIMS == waitForIMS)) { // 36.508 cl. 4.5A.3 @sic R5-123731 sic@ + t_WaitForIMS.start(10.0); + alt { + [] t_WaitForIMS.timeout { + // just continue + } + [] IMS[tsc_Index_PDN1].receive(cmr_IMS_IPCAN_Trigger) { + if (v_WaitForFirstTrigger) { // @sic R5s120727 change 1 sic@ + t_WaitForIMS.stop; + v_WaitForFirstTrigger := false; + repeat; // receive second trigger sent by IMS after registration has finished + } + } + } + } else { + f_Delay(1.2); + } + } + } + + //---------------------------------------------------------------------------- + /* + * @desc receive ATTACH COMPLETE from SRB2; ATTACH COMPLETE contains piggybacked ACTIVATE DEFAULT EPS BEARER CONTEXT ACCEPT (within ESM Message Container) + * @param p_CellId + * @param p_EpsBearerId + * @param p_WaitForIMS (default value: waitForIMS) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_NAS_AttachComplete(EUTRA_CellId_Type p_CellId, + HalfOctet_Type p_EpsBearerId, + EUTRA_DelayForUserPlaneSignalling_Type p_WaitForIMS := waitForIMS) runs on EUTRA_PTC + { + SRB.receive(car_SRB2_NasPdu_IND(p_CellId, + cr_NAS_IndicationWithPiggybacking(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_ATTACH_COMPLETE, + cr_508_ActivateDefEpsBearerContextAccept(p_EpsBearerId)))); + f_EUTRA_DelayForUserPlaneSignalling(p_WaitForIMS); // @sic R5s110449 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc RRC connection setup procedure with optional check of + * piggybacked NAS message in RRC Connection Setup Complete. To + * perform the check, provide a receive constraint in + * p_NasMsgIndication (NAS_MSG_Indication_Type). Using a '?' + * here, just accepts any NAS message or even a RRC Connection + * Setup Complete without a piggybacked NAS message. + * @param p_CellId + * @param p_RRC_TI + * @param p_EstablishmentCause .. expected establishment cause (RRC Connection Request) + * @param p_ExpectedNasMsg .. expected NAS PDU (RRC Connection Setup Complete) or '?' + * @param p_SelectedPlmnId (default value: 1) .. selectedPLMN-Identity as used in RRCConnectionSetupComplete (starting with 1) + * @return NAS_MSG_Indication_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_RRC_ConnEst_DefWithNas(EUTRA_CellId_Type p_CellId, + RRC_TransactionIdentifier p_RRC_TI, + template (present) EstablishmentCause p_EstablishmentCause, + template (present) NAS_MSG_Indication_Type p_ExpectedNasMsg, + template (present) integer p_SelectedPlmnId := 1) runs on EUTRA_PTC return NAS_MSG_Indication_Type + { // @sic R5s110468: new parameter p_SelectedPlmnId sic@ + var NAS_MSG_Indication_Type v_NasInd; + + // receive RRC Connection Request on SRB0 (CCCH): + f_EUTRA_RRC_ConnectionRequest_Def(p_CellId, p_EstablishmentCause); // @sic R5-120721 change 3 sic@ + + // send RRC Connection Setup on SRB0 (CCCH) and switch on UL grant assignments: + f_EUTRA_RRC_ConnectionSetup_Def (p_CellId, -, p_RRC_TI); + + // UE shall establish SRB1 acc. to 36.331 cl. 5.3.3.4 and 5.3.9 + // UE enters RRC_CONNECTED state + + // receive RRC Connection Setup Complete with piggy-backed NAS message on SRB1 (DCCH): + v_NasInd := f_EUTRA_RRCConnectionSetupComplete_Def(p_CellId, // @sic R5s120121 MCC160 implementation sic@ + cr_508_RRCConnectionSetupComplete(p_RRC_TI, ?, -, p_SelectedPlmnId), // @sic R5s110468 sic@ + p_ExpectedNasMsg); + return v_NasInd; + }; + + + //---------------------------------------------------------------------------- + /* + * @desc configure a DRB at the UE: send RRCConnectionReconfiguration with piggy-backed ACTIVATE DEDICATED EPS BEARER CONTEXT REQUEST + * @param p_CellId + * @param p_DRB_Id + * @param p_Id + * @param p_ProcTi + * @param p_LinkedId + * @param p_QoS + * @param p_Tft + * @param p_RLC_Mode_Type + * @status APPROVED (IMS, LTE) + */ + function f_EUTRA_TxDedicatedEpsBearerCtxtReq(EUTRA_CellId_Type p_CellId, + DRB_Identity p_DRB_Id, + EPS_BearerIdentity p_Id, + template (value) ProcedureTransactionIdentifier p_ProcTi, // octet + template (value) LinkedEpsBearerIdentity p_LinkedId, // 1/2 octet + template (value) EPS_QualityOfService p_QoS, + template (value) TrafficFlowTemplate p_Tft, + RLC_Mode_Type p_RLC_Mode_Type := AM_Mode) + runs on EUTRA_PTC + { /* RRC connection reconfiguration acc. to 36.331 cl. 5.3.5 */ + var template (omit) DRX_Config v_DRX_Config; + var template (value) NAS_DL_Message_Type v_ActDedicatedEPSBearerCxtReq := + cs_508_ActDedicatedEPSBearerCxtReq(p_Id, + p_ProcTi, + p_LinkedId, + p_QoS, + p_Tft); + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var template (value) RadioResourceConfigDedicated v_RadioResourceConfigDedicated; + + if (p_RLC_Mode_Type == AM_Mode) { + v_RadioResourceConfigDedicated := cs_508_RadioResourceConfigDedicated_AddAmDrb(p_DRB_Id); + } + else { + v_RadioResourceConfigDedicated := cs_508_RadioResourceConfigDedicated_AddUmDrb(p_DRB_Id); + v_DRX_Config := f_GetUeDrxConfig(DRX_S); + if (isvalue(v_DRX_Config)) { + f_EUTRA_SS_DrxCtrlConfig(p_CellId, cs_DrxCtrl_Config(valueof(v_DRX_Config))); /* configure DRX at the SS; @sic R5s140618 change 3 sic@ */ + } + } + + SRB.send(cas_SRB1_RrcNasPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_RRCConnectionReconfiguration_Common(v_RRC_TI, + omit, + omit, + v_RadioResourceConfigDedicated, + omit), + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + v_ActDedicatedEPSBearerCxtReq))); + + // receive RRCConnectionReconfigurationComplete + SRB.receive(car_SRB1_RrcPdu_IND(p_CellId, + cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + } + + //---------------------------------------------------------------------------- + /* + * @desc This function turns the UE off, waits for a Detach message and releases the RRC connection + * @param p_CellId + * @param p_RRCState + * @param p_RRC_TI (default value: tsc_RRC_TI_Def) + * @param p_ForcedAttach (default value: NORMAL) + * @param p_DetachType (default value: omit - which means it will be determind by the function); @sic R5-103675 sic@ + * @param p_SelectedPlmnId (default value: 1) .. selectedPLMN-Identity as used in RRCConnectionSetupComplete (starting with 1) + * @param p_USIM_Rmvd + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_UE_Detach_SwitchOffUe(EUTRA_CellId_Type p_CellId, + EUTRA_RRC_STATE_Type p_RRCState, + RRC_TransactionIdentifier p_RRC_TI := tsc_RRC_TI_Def, + EUTRA_ATTACH_Type p_ForcedAttach := NORMAL, + template DetachType p_DetachType := omit, + integer p_SelectedPlmnId := 1, + boolean p_USIM_Rmvd := false) runs on EUTRA_PTC + { // @sic R5s11046: new parameter p_SelectedPlmnId sic@ + var GutiParameters_Type v_Guti := f_EUTRA_CellInfo_GetGuti(p_CellId); + var template (present) NAS_MSG_Indication_Type v_ExpectedDetachRequest, v_ExpectedServiceRequest; + var NAS_MSG_Indication_Type v_NasInd; + var template (present) DetachType v_DetachType; + var NAS_AttDetValue_Type v_AttachType := f_GetEDetachType(p_ForcedAttach); // @sic R5s100538, R5s110176 sic@ + var NAS_KsiValue v_KsiValue := f_EUTRA_SecurityKSIasme_Get(); + + if (ispresent(p_DetachType.typeOfDetach)) { // @sic R5-103675 sic@ + v_DetachType := p_DetachType; // compiler warning cannot be suppressed as there is no way to convert 'template' to 'template (present)' + } else { + v_DetachType := cr_DetachType('1'B, v_AttachType); + } + + v_ExpectedDetachRequest := + cr_NAS_Indication((tsc_SHT_IntegrityProtected, tsc_SHT_IntegrityProtected_Ciphered), + cr_508_DETACH_REQUEST_MO(cr_NAS_KeySetIdentifier (?, ?), // @sic R5s110031 sic@ + f_GutiParameters2MobileIdentity(omit, v_Guti), // @sic R5s090225, R5s090310 sic@ + v_DetachType)); // @sic R5-103675 sic@ + + v_ExpectedServiceRequest := cr_NAS_Indication(tsc_SHT_IntegrityProtected, cr_508_SERVICE_REQUEST(v_KsiValue)); + + if (pc_SwitchOnOff or p_USIM_Rmvd and pc_USIM_Removal) // The UE can be switched off @sic R5s09225 sic@ or USIM removed @sic R5s120597r1 sic@ + { + f_UT_SwitchOffUE (UT, p_USIM_Rmvd); // @sic R5s100584 sic@ + select (p_RRCState) { + case (RRC_IDLE) { + v_NasInd := f_EUTRA_RRC_ConnEst_DefWithNas(p_CellId, + p_RRC_TI, ?, // @sic R5s100766 sic@ + (v_ExpectedDetachRequest, v_ExpectedServiceRequest), // @sic R5-131868 sic@ + p_SelectedPlmnId); // @sic R5s110468 sic@ + if (ischosen(v_NasInd.Pdu.Msg.sERVICE_REQUEST)) { // @sic R5-131868 sic@ + f_EUTRA_Activate_SRB2_DRB_SendRrcMsg(p_CellId, + p_RRC_TI, + v_NasInd.SecurityProtection.NasCount, + 0, + 0, + omit, + omit, + omit, + omit, + omit, + true, + omit); + f_EUTRA_Activate_SRB2_DRB_ReceiveRrcAndNasMsg(p_CellId, + p_RRC_TI, + 0, + 0); + // DRB configured, so when the UE has finished Deregistration on IMS, it will then send the Detach.. + SRB.receive(car_SRB2_NasPdu_IND(p_CellId, v_ExpectedDetachRequest)); + } + } + case (RRC_CONNECTED) { + alt { + [] SRB.receive(car_SRB1_NasPdu_IND(p_CellId, v_ExpectedDetachRequest)) { } + [] SRB.receive(car_SRB2_NasPdu_IND(p_CellId, v_ExpectedDetachRequest)) { } + } + } + } + //Now the connection can be released + f_EUTRA_RRC_ConnectionRelease(p_CellId, p_RRC_TI); + } + else // @sic R5s100584 sic@ + {// The power must be removed from the UE + f_UT_PowerOffUE (UT); + //Reset all RBs + f_EUTRA_SS_SRBs_DRBs_Reset(p_CellId); // @sic R5s110423 sic@ + } + + } //end of f_EUTRA_UE_Detach_SwitchOffUe + //---------------------------------------------------------------------------- + /* + * @desc Transmit TRACKING AREA UPDATE ACCEPT message and receive TRACKING AREA UPDATE COMPLETE + * @param p_CellId + * @param p_GutiParams + * @param p_EpsUpdate_TypeValue + * @param p_EPS_ContextStatus + * @param p_AdditionalUpdateType + * @param p_ForcedAttach + * @param p_EPLMNlist (default value: omit) + * @param p_NwkFeatSup (default value: cs_EPS_NwkFtSup_IMSVoice) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_TrackingAreaUpdate_Accept_Complete(EUTRA_CellId_Type p_CellId, + GutiParameters_Type p_GutiParams, + B3_Type p_EpsUpdate_TypeValue, + template (omit) EPS_BearerContextStatus p_EPS_ContextStatus, + AdditionalUpdateType p_AdditionalUpdateType, + EUTRA_ATTACH_Type p_ForcedAttach, + template (omit) PLMN_List p_EPLMNlist := omit, + template (omit) EPS_NetworkFeatureSupport p_NwkFeatSup := cs_EPS_NwkFtSup_IMSVoice) runs on EUTRA_PTC + { + var NAS_PlmnId v_PLMN := f_Asn2Nas_PlmnId(p_GutiParams.PLMN_Identity); + var NAS_Lac v_LAC := f_EUTRA_CellInfo_GetLocationAreaCode(p_CellId); + var TrackingAreaCode v_Tac := f_EUTRA_CellInfo_GetTAC(p_CellId); + var template (omit) LocAreaId v_LAI := f_GetLAI(v_PLMN, v_LAC, p_ForcedAttach); // @sic R5s110176 sic@ + var template (value) TrackingAreaIdList v_TaiList := cds_TAIListNonConsecutive_tlv(v_PLMN, { bit2oct(v_Tac) }); // @sic R5s100029 sic@ + var template (omit) MobileIdentity v_MSId := f_GetMSId(p_ForcedAttach); // @sic R5-103673 sic@ + // var template (omit) EPS_BearerContextStatus v_EPS_ContextStatus; // @sic R5s100608 sic@ + + /* Transmit TRACKING AREA UPDATE ACCEPT message */ + /* In case MME has the cached security context it verifies the TAU Request message + and replies with TAU Accept message protected with the cached security context + ( 33.401 cl. 9.1.2 Idle mode procedures in E-UTRAN ) */ + SRB.send(cas_SRB1_NasPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_TAU_Accept_Common(p_EpsUpdate_TypeValue, + f_GutiParameters2MobileIdentity (tsc_IEI_Guti, p_GutiParams), + v_TaiList, + p_EPS_ContextStatus, + v_LAI, + v_MSId, + f_GetAdditionalUpdateResult(p_AdditionalUpdateType, p_ForcedAttach), // @sic R5s110176 sic@ + -, + -, + p_EPLMNlist, + p_NwkFeatSup)))); // @sic R5-110771 sic@ + + /* Receive TRACKING AREA UPDATE COMPLETE */ + /* According to 24.301 cl: 5.5.3.2.4: + If the TRACKING AREA UPDATE ACCEPT message contained a GUTI, + the UE shall return a TRACKING AREA UPDATE COMPLETE message to + the MME to acknowledge the received GUTI */ + SRB.receive(car_SRB1_NasPdu_IND(p_CellId, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_TAU_Complete))); + } + + /* + * @desc Step 1-5 of Tracking area update procedure according to 36.508 cl. 4.5A.2.1 + * @param p_CellId + * @param p_RRC_TI (default value: tsc_RRC_TI_Def) + * @param p_ForcedAttach (default value: NORMAL) + * @param p_EstablishmentCause (default value: ?) + * @param p_EPLMNlist (default value: omit) + * @param p_EpsUpdate_TypeValue (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_TrackingAreaUpdate_Step1_5(EUTRA_CellId_Type p_CellId, + RRC_TransactionIdentifier p_RRC_TI := tsc_RRC_TI_Def, + EUTRA_ATTACH_Type p_ForcedAttach := NORMAL, + template (present) EstablishmentCause p_EstablishmentCause := ?, + template (omit) PLMN_List p_EPLMNlist := omit, + template B3_Type p_EpsUpdate_TypeValue := omit) // @sic R5s120617 sic@ + runs on EUTRA_PTC + { + var NAS_MSG_Indication_Type v_NasInd; + var GutiParameters_Type v_GutiParams:= f_EUTRA_CellInfo_GetGuti(p_CellId); + var B3_Type v_EpsUpdate_TypeValue := f_GetEPSTAUType(p_ForcedAttach); // @sic R5s100029, R5s110176 sic@ + var template (omit) EPS_BearerContextStatus v_EPS_ContextStatus; // @sic R5s100608 sic@ + + /* Step 1 - 3 */ + /* The TAU Request shall be integrity-protected, but not confidentiality-protected. + UE uses the cached security context algorithms to protect the TAU Request message. + ( reuse of keys allocated during attach procedure ) + ( 33.401 cl. 9.1.2 Idle mode procedures in E-UTRAN ) */ + /* Check that TRACKING AREA UPDATE REQUEST message is present and conforms + with default message ( 36.508 Table 4.7.2-27: TRACKING AREA UPDATE REQUEST ) */ + v_NasInd := f_EUTRA_TrackingAreaUpdate_Step1_3(p_CellId, // @sic R5s110632 sic@ + p_RRC_TI, + p_ForcedAttach, + p_EstablishmentCause, + p_EpsUpdate_TypeValue ); + v_EPS_ContextStatus := v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.epsBearerContextStatus; // Send this back in the Accept + + /* Step 4 - 5: send TAU ACCEPT and receive TAU COMPLETE */ + f_EUTRA_TrackingAreaUpdate_Accept_Complete(p_CellId, + v_GutiParams, + v_EpsUpdate_TypeValue, + v_EPS_ContextStatus, + v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.addUpdateType, // @sic R5s110078 sic@ + p_ForcedAttach, + p_EPLMNlist); + } + + //---------------------------------------------------------------------------- + /* + * @desc Tracking area update behaviour according to 36.508 cl. 4.5A.2.1 + * @param p_CellId + * @param p_RRC_TI (default value: tsc_RRC_TI_Def) + * @param p_ForcedAttach (default value: NORMAL) + * @param p_EstablishmentCause (default value: ?) + * @param p_EpsUpdate_TypeValue (default value: omit) + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_TrackingAreaUpdate(EUTRA_CellId_Type p_CellId, + RRC_TransactionIdentifier p_RRC_TI := tsc_RRC_TI_Def, + EUTRA_ATTACH_Type p_ForcedAttach := NORMAL, + template (present) EstablishmentCause p_EstablishmentCause := ?, //@sic R5s100539 sic@ + template B3_Type p_EpsUpdate_TypeValue := omit) // @sic R5s120617 sic@ + runs on EUTRA_PTC + { /* @sic R5s100707 additional MCC160 comments sic@ */ + + /* Step 1..5: */ + f_EUTRA_TrackingAreaUpdate_Step1_5(p_CellId, p_RRC_TI, p_ForcedAttach, p_EstablishmentCause, -, p_EpsUpdate_TypeValue); + + /* Step 6: Release RRC connection */ + f_EUTRA_RRC_ConnectionRelease(p_CellId, p_RRC_TI); + } + + /* + * @desc Step 1-3 of Tracking area update procedure according to 36.508 cl. 4.5A.2.1; + * step 4 Tracking area update accept with GUTI omitted + * @param p_CellId + * @param p_RRC_TI + * @param p_ForcedAttach + * @param p_EstablishmentCause + * @param p_EPLMNlist (default value: omit) + * @status APPROVED (LTE) + */ + function f_EUTRA_TrackingAreaUpdate_Step1_4_WithRelease(EUTRA_CellId_Type p_CellId, + RRC_TransactionIdentifier p_RRC_TI, + EUTRA_ATTACH_Type p_ForcedAttach, + template (present) EstablishmentCause p_EstablishmentCause, + template (omit) PLMN_List p_EPLMNlist := omit) runs on EUTRA_PTC + { + var GutiParameters_Type v_GutiParams:= f_EUTRA_CellInfo_GetGuti(p_CellId); + var B3_Type v_EpsUpdate_TypeValue := f_GetEPSTAUType(p_ForcedAttach); + var NAS_PlmnId v_PLMN := f_Asn2Nas_PlmnId(v_GutiParams.PLMN_Identity); + var NAS_Lac v_LAC := f_EUTRA_CellInfo_GetLocationAreaCode(p_CellId); + var TrackingAreaCode v_Tac := f_EUTRA_CellInfo_GetTAC(p_CellId); + var NAS_MSG_Indication_Type v_NasInd; + var template (omit) AdditionalUpdateType v_AdditionalUpdateType; + var template (omit) EPS_BearerContextStatus v_EPS_ContextStatus; + var template (omit) LocAreaId v_LAI := f_GetLAI(v_PLMN, v_LAC, p_ForcedAttach); + var template (value) TrackingAreaIdList v_TaiList := cds_TAIListNonConsecutive_tlv(v_PLMN, { bit2oct(v_Tac) }); + + v_NasInd := f_EUTRA_TrackingAreaUpdate_Step1_3(p_CellId, + p_RRC_TI, + p_ForcedAttach, + p_EstablishmentCause); + v_EPS_ContextStatus := v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.epsBearerContextStatus; // Send this back in the Accept + v_AdditionalUpdateType := v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.addUpdateType; // Send this back in the Accept + + /* Step 4: send TAU ACCEPT */ + /* Transmit TRACKING AREA UPDATE ACCEPT message with the GUTI not present */ + /* In case MME has the cached security context it verifies the TAU Request message + and replies with TAU Accept message protected with the cached security context + ( 33.401 cl. 9.1.2 Idle mode procedures in E-UTRAN ) */ + SRB.send(cas_SRB1_NasPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_TAU_Accept_Common(v_EpsUpdate_TypeValue, + omit, + v_TaiList, + v_EPS_ContextStatus, + v_LAI, + omit, + f_GetAdditionalUpdateResult(v_AdditionalUpdateType, p_ForcedAttach), + -, + -, + p_EPLMNlist)))); + // The SS releases the RRC connection + f_EUTRA_RRC_ConnectionRelease(p_CellId, tsc_RRC_TI_Def); // @sic R5s110777 sic@ + } + + /* + * @desc Step 1-3 of Tracking area update procedure according to 36.508 cl. 4.5A.2.1; + * @param p_CellId + * @param p_RRC_TI + * @param p_ForcedAttach + * @param p_EstablishmentCause + * @param p_EpsUpdate_TypeValue (default value: omit) + * @return NAS_MSG_Indication_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_TrackingAreaUpdate_Step1_3(EUTRA_CellId_Type p_CellId, + RRC_TransactionIdentifier p_RRC_TI, + EUTRA_ATTACH_Type p_ForcedAttach, + template (present) EstablishmentCause p_EstablishmentCause, + template B3_Type p_EpsUpdate_TypeValue := omit) // @sic R5s120617 sic@ + runs on EUTRA_PTC return NAS_MSG_Indication_Type + { + var NAS_MSG_Indication_Type v_NasInd; + var NAS_KsiValue v_KsiValue := f_EUTRA_SecurityKSIasme_Get(); + var template (present) B3_Type v_EpsUpdate_TypeValue := f_GetEPSTAUType(p_ForcedAttach); // @sic R5s100029, R5s110176 sic@ + var template AdditionalUpdateType v_AdditionalUpdateType := f_GetAdditionalUpdateType (p_ForcedAttach); // @sic R5s110176 sic@ + + if (ispresent(p_EpsUpdate_TypeValue)) { + // if p_EpsUpdate_TypeValue is omit f_GetEPSTAUType shall be used otherwise use p_EpsUpdate_TypeValue. + v_EpsUpdate_TypeValue := p_EpsUpdate_TypeValue; // compiler warning cannot be suppressed as there is no way to convert 'template' to 'template (present)' + } + + /* Step 1 - 3 */ + /* The TAU Request shall be integrity-protected, but not confidentiality-protected. + UE uses the cached security context algorithms to protect the TAU Request message. + ( reuse of keys allocated during attach procedure ) + ( 33.401 cl. 9.1.2 Idle mode procedures in E-UTRAN ) */ + /* Check that TRACKING AREA UPDATE REQUEST message is present and conforms + with default message ( 36.508 Table 4.7.2-27: TRACKING AREA UPDATE REQUEST ) */ + v_NasInd := f_EUTRA_RRC_ConnEst_DefWithNas(p_CellId, + p_RRC_TI, + p_EstablishmentCause, //@sic R5s100539 sic@ + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_508_TAU_Request (v_EpsUpdate_TypeValue, + v_KsiValue, + cr_DRXparameter_Any ('5C'O) ifpresent, // @sic R5s120210, R5-123117 sic@ + v_AdditionalUpdateType))); // @sic R5-103681 sic@ + // UE has now establish SRB1 acc. to 36.331 cl. 5.3.3.4 and entered RRC_CONNECTED state + return v_NasInd; + } // f_EUTRA_TrackingAreaUpdate_Step1_3 + + /* + * @desc The SS waits for 60 sec. During this period a TA procedure may happen in parallel. + * @param p_CellId + * @status APPROVED (LTE) + */ + function f_EUTRA_TAU_Check(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { + timer t_T3442 := f_EUTRA_SetTimerToleranceMax(p_CellId, nasTimer, 60.0); + + t_T3442.start; + alt { + [] t_T3442.timeout {} + [] SRB.check(receive(car_SRB0_RrcPdu_IND(?, cr_RRCConnectionRequest(cr_EstablishmentCause_Any)))) + { + // there is an RRCConnectionRequest sent by the UE which can be received by TTCN-3 in a sub-sequent function + // Exception Steps 1-3 TAU Request, Accept and RRC Connection Release + f_EUTRA_TrackingAreaUpdate_Step1_4_WithRelease(p_CellId, tsc_RRC_TI_Def, Combined, mo_Signalling); //@sic R5s110757 sic@ + repeat; + } + } + } // f_EUTRA_TAU_Check + + //---------------------------------------------------------------------------- + /* + * @desc Send the ESM Information_Request and receive the Response + * @param p_CellId + * @param p_PTI + * @return ESM_INFORMATION_RESPONSE + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_ESM_InformationTransfer(EUTRA_CellId_Type p_CellId, + ProcedureTransactionIdentifier p_PTI) runs on EUTRA_PTC return ESM_INFORMATION_RESPONSE + { + var SRB_COMMON_IND v_ReceivedMsg; + + SRB.send(cas_SRB1_NasPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_508_Esm_Information_Request(p_PTI)))); + + SRB.receive(car_SRB1_NasPdu_IND(p_CellId, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_Esm_Information_Response(p_PTI)))) + -> value v_ReceivedMsg; + return v_ReceivedMsg.Signalling.Nas[0].Pdu.Msg.eSM_INFORMATION_RESPONSE; + } + //---------------------------------------------------------------------------- + /* + * @desc Send the ESM Information_Request and receive the Response + * rather than f_ESM_InformationTransfer this function returns the AccessPointName (or omit) + * @param p_CellId + * @param p_PTI + * @return APNandPCOs_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_ESM_InformationTransfer_GetAPNandPCOs(EUTRA_CellId_Type p_CellId, + ProcedureTransactionIdentifier p_PTI) runs on EUTRA_PTC return APNandPCOs_Type + { /* @sic R5s130382: replaces former f_ESM_InformationTransfer_GetAPN sic@ */ + var APNandPCOs_Type v_APNandPCOs; + var template (omit) AccessPointName v_APN := omit; + var template (omit) ProtocolConfigOptions v_PCOs := omit; + var ESM_INFORMATION_RESPONSE v_ESM_INFORMATION_RESPONSE; + + v_ESM_INFORMATION_RESPONSE := f_ESM_InformationTransfer(p_CellId, p_PTI); + if (ispresent(v_ESM_INFORMATION_RESPONSE.accessPointName)) { + v_APN := v_ESM_INFORMATION_RESPONSE.accessPointName; + v_APN.iei := omit; // @sic R5s100140 sic@ + } + if (ispresent(v_ESM_INFORMATION_RESPONSE.protocolConfigurationOptions)) { + v_PCOs := v_ESM_INFORMATION_RESPONSE.protocolConfigurationOptions; + } + v_APNandPCOs := f_APNandPCOs_Init(v_APN, v_PCOs); + return v_APNandPCOs; + } + + //---------------------------------------------------------------------------- + /* + * @desc evalute APN depending on various PICS + * @param p_CellId + * @param p_InitialRegistrationPDN + * @param p_APN (default value: omit) + * @return template (value) AccessPointName + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_ESM_EvaluateAPN(EUTRA_CellId_Type p_CellId, + EUTRA_InitialRegistrationPDN_Type p_InitialRegistrationPDN, + template (omit) AccessPointName p_APN := omit) runs on EUTRA_PTC return template (value) AccessPointName + { + var template (value) AccessPointName v_APN; + var octetstring v_APN_NetworkId; + + if ((p_InitialRegistrationPDN == firstPDN) and tsc_EUTRA_Registration_PDN1isIMS) { // @sic R5-110708 R5-144797 sic@ + if (ispresent(p_APN)) { + v_APN_NetworkId := valueof(p_APN.nameValue); // @sic R5-144370 sic@ + } else if (not pc_Provide_IMS_APN) { + v_APN_NetworkId := ''O; + } else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "invalid PICS setting for pc_Provide_IMS_APN"); // @sic R5-144370 sic@ + } + // the template works out the length of the overall field + v_APN := cs_AccessPointName(f_EUTRA_GetAPNForIMS(p_CellId, v_APN_NetworkId)); + } else if ((p_InitialRegistrationPDN == secondPDN) and tsc_EUTRA_Registration_PDN2isIMS) { // @sic R5-144797 sic@ + v_APN := cs_AccessPointName(f_EUTRA_GetAPNForIMS(p_CellId)); + } else { + if (ispresent(v_APN)) { + v_APN := valueof(p_APN); + } else { + v_APN := cs_AccessPointName(px_AccessPointName); + } + } + return v_APN; + } + + //---------------------------------------------------------------------------- + /* + * @desc function to get/initialise AccessPointName + * @param p_CellId + * @param p_EIT_Flag + * @param p_PTI + * @return APNandPCOs_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_ESM_InitAPNandPCOs(EUTRA_CellId_Type p_CellId, + boolean p_EIT_Flag, + ProcedureTransactionIdentifier p_PTI) runs on EUTRA_PTC return APNandPCOs_Type + { /* @sic R5s130382: replaces former f_ESM_InitAPN sic@ */ + /* @sic R5-144797 - additional change: parameter p_APN removed (not used anywhere) sic@ */ + var APNandPCOs_Type v_APNandPCOs; + var template (omit) AccessPointName v_APN := omit; + var template (omit) ProtocolConfigOptions v_PCOs := omit; + + if (p_EIT_Flag) { + v_APNandPCOs := f_ESM_InformationTransfer_GetAPNandPCOs(p_CellId, p_PTI); + v_APN := v_APNandPCOs.accessPointName; + v_PCOs := v_APNandPCOs.protocolConfigurationOptions; + } + v_APN := f_ESM_EvaluateAPN(p_CellId, firstPDN, v_APN); + return f_APNandPCOs_Init(v_APN, v_PCOs); // NOTE: v_APN is not omit anymore + } + + /* + * @desc function to get/initialise AccessPointName + * @param p_CellId + * @param p_EIT_Flag + * @param p_PTI + * @return AccessPointName + * @status APPROVED (IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_ESM_InitAPN(EUTRA_CellId_Type p_CellId, + boolean p_EIT_Flag, + ProcedureTransactionIdentifier p_PTI) runs on EUTRA_PTC return AccessPointName + { /* @sic R5s130382: changed to wrapper function sic@ */ + /* @sic R5-144797 - addtional change: parameter p_APN removed (not used anywhere) sic@ */ + + var APNandPCOs_Type v_APNandPCOs := f_ESM_InitAPNandPCOs(p_CellId, p_EIT_Flag, p_PTI); + return v_APNandPCOs.accessPointName; // NOTE: f_ESM_InitAPNandPCOs returns with accessPointName being present + } + + //---------------------------------------------------------------------------- + /* + * @desc return label for MCC or MNC to be used in APN + * @param p_MncMcc + * @param p_Digits + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_APN_MccMncLabel(charstring p_MncMcc, + charstring p_Digits) return charstring + { /* in case of the MCC there are 3 digits; for MNC it may be 2 or 3 digits */ + var integer v_DigitCnt := lengthof(p_Digits); + var charstring v_Label := ""; + + select (v_DigitCnt) { + case (2) { v_Label := p_MncMcc & "0" & p_Digits; } + case (3) { v_Label := p_MncMcc & p_Digits; } + case else { FatalError(__FILE__, __LINE__, ""); } + } + return v_Label; + } + + /* + * @desc Encode APN acc. to TS 23.003 cl. 9.1 + * @param p_LabelList + * @return octetstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_APN_Encode(CharStringList_Type p_LabelList) return octetstring + { + var octetstring v_EncodedAPN := ''O; + var octetstring v_LabelOctets; + var integer v_Length; + var integer i; + + for (i := 0; i < lengthof(p_LabelList); i := i + 1) { + v_LabelOctets := char2oct(p_LabelList[i]); + v_Length := lengthof(v_LabelOctets); + v_EncodedAPN := v_EncodedAPN & int2oct(v_Length, 1) & v_LabelOctets; + } + return v_EncodedAPN; + } + + /* + * @desc Creates the APN Name to be used if UE supports IMS, as defined in 36.508, Table 4.7.3-6 + * @param p_CellId to get the PLMN Id of the cell + * @return octetstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_GetAPNForIMS(EUTRA_CellId_Type p_CellId, + octetstring p_APN_NetworkId := ''O) runs on EUTRA_PTC return octetstring + { /* @sic R5s130364: re-implementation sic@ */ + /* @sic R5-144370: new parameter p_APN_NetworkId sic@ */ + var GutiParameters_Type v_Guti_Params := f_EUTRA_CellInfo_GetGuti(p_CellId); + var PLMN_Identity v_PLMN := v_Guti_Params.PLMN_Identity; + var charstring v_MNC := ""; + var charstring v_MCC := ""; + var octetstring v_APN_NetworkId; + var octetstring v_APN_OperatorId; + var CharStringList_Type v_LabelList; + var integer i; + + if (lengthof(p_APN_NetworkId) > 0) { /* @sic R5-144370 sic@ */ + v_APN_NetworkId := p_APN_NetworkId; + } else { + v_LabelList := {"IMS", "apn", "epc"}; + v_APN_NetworkId := f_APN_Encode(v_LabelList); + } + + for (i := 0; i < lengthof(v_PLMN.mnc); i := i + 1) { v_MNC := v_MNC & int2str(v_PLMN.mnc[i]); } + for (i := 0; i < lengthof(v_PLMN.mcc); i := i + 1) { v_MCC := v_MCC & int2str(v_PLMN.mnc[i]); } + + v_LabelList := {f_APN_MccMncLabel("mnc", v_MNC), f_APN_MccMncLabel("mcc", v_MCC), "3gppnetwork", "org" }; /* @sic R5-144370 sic@ */ + v_APN_OperatorId := f_APN_Encode(v_LabelList); + + return v_APN_NetworkId & v_APN_OperatorId; /* @sic R5-144370 sic@ */ + } + + //---------------------------------------------------------------------------- + // New types/templates for this function + + type record length (1..8) of EPS_QualityOfService EPS_QoSList_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + type record length (1..8) of TrafficFlowTemplate Tft_List_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + + /* + * @desc Establishment of SRB1 + default DRB + n AM DRBs + m UM DRBs acc. to 36.508 cl. 4.5.3.2; + * This function starts by setting up an RRC Connection to receive a Service Request, + * then performs RRC Security and sends RRC Connection Reconfiguration to configure SRB2 and at least 1 AM DRB, + * with optionally activating up to 8 Dedictated Bearers + * This function DOES NOT configure the SS, but expects the appropriate DRBs to be already configured + * @params + * If no Dedicated bearers are required, set p_NoOfAddDRBs_AM and p_NoOfAddDRBs_UM to 0 and p_QoS and p_Tft to omit + * in this case only SRB2 and 1 AM DRB (for the already activated Default Bearer) are configured + * Otherwise, SRB2 and 1 AM DRB will be configured + p_NoOfAddDRBs_AMs and p_NoOfAddDRBs_UMs + * Note: + * usage of n and N in 36.508 is confusing: + * - acc. to Table 4.6.3-16 n is the total number of AM DRBs - including the default DRB; + * - in cl. 4.5.3.2 N is the number of add. DRBs (UM and AM), n = no of add. AM bearers, m = no of add. UM bearers (=> N = n+m; 0<=N<=7) + * but here the default DRB is not taken into account + * @param p_CellId + * @param p_NoOfAddDRBs_AM no of add. AM bearers not including the default DRB + * @param p_NoOfAddDRBs_UM no of add. UM bearers + * @param p_DRB_ToAddModList p_NoOfAddDRBs_AM+p_NoOfAddDRBs_UM+1 elements or omit; + * omit => default setiing acc. 36.508 cl. 4.8.2.1.7 + * @param p_MAC_MainConfig omit => default setting acc. 36.508 cl. 4.8.2.1.5 + * @param p_PhysicalConfigDedicated omit => default setting acc. 36.508 4.8.2.1.6 + * @param p_QoS + * @param p_Tft + * @param p_PDCP_StatusReportRequired (default value: true) + * @param p_EstablishmentCause (default value: ?) + * @param p_RLF_TimersAndConstants_r9 (default value: omit) + * @param p_DownlinkAntennaGroupConfig (default value: omit) + * @param p_DrbFor2ndPDN (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_ServiceRequestAndActivate_SRB2_DRB(EUTRA_CellId_Type p_CellId, + UInt_Type p_NoOfAddDRBs_AM := 0, + UInt_Type p_NoOfAddDRBs_UM := 0, + template (omit) DRB_ToAddModList p_DRB_ToAddModList := omit, + template (omit) MAC_MainConfig_Type p_MAC_MainConfig := omit, + template (omit) PhysicalConfigDedicated p_PhysicalConfigDedicated := omit, + template (omit) EPS_QoSList_Type p_QoS := omit, + template (omit) Tft_List_Type p_Tft := omit, + boolean p_PDCP_StatusReportRequired := true, + template (present) EstablishmentCause p_EstablishmentCause := ?, + template (omit) RLF_TimersAndConstants_r9 p_RLF_TimersAndConstants_r9 := omit, + template (omit) DownlinkAntennaGroupConfig_Type p_DownlinkAntennaGroupConfig := omit, + template (omit) DRB_Identity p_DrbFor2ndPDN := omit) runs on EUTRA_PTC + { /* @sic R5-144797: new parameter p_DrbFor2ndPDN sic@ */ + + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var NAS_MSG_Indication_Type v_NasInd; + var NAS_KsiValue v_KsiValue; + + // ===================================================== + // step 3-10 of procedure in 36.508 cl. 4.5.3.3 + + // Step 3 - 5 of Generic RB establishment procedure + //Check the Service Request message + v_KsiValue := f_EUTRA_SecurityKSIasme_Get(); + v_NasInd := f_EUTRA_RRC_ConnEst_DefWithNas(p_CellId, + v_RRC_TI, + p_EstablishmentCause, //@sic R5s100539 sic@ + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_508_SERVICE_REQUEST(v_KsiValue))); + + /* Step 6 - 8 */ + f_EUTRA_Activate_SRB2_DRB_SendRrcMsg(p_CellId, + v_RRC_TI, + v_NasInd.SecurityProtection.NasCount, + p_NoOfAddDRBs_AM, + p_NoOfAddDRBs_UM, + p_DRB_ToAddModList, + p_MAC_MainConfig, + p_PhysicalConfigDedicated, + p_QoS, + p_Tft, + p_PDCP_StatusReportRequired, + p_RLF_TimersAndConstants_r9, // @sic R5s120808 sic@ + p_DownlinkAntennaGroupConfig, + p_DrbFor2ndPDN); + + /* Step 9 - 10 */ + f_EUTRA_Activate_SRB2_DRB_ReceiveRrcAndNasMsg(p_CellId, + v_RRC_TI, + p_NoOfAddDRBs_AM, + p_NoOfAddDRBs_UM); /* @sic R5s100315 sic@ */ + } + + //---------------------------------------------------------------------------- + /* + * @desc Establishment of SRB2 + default DRB + n AM DRBs + m UM DRBs acc. to 36.508 cl. 4.5.3.2; + * This function expects the Service Request to already be received. + * It starts with RRC Security and sends RRC Connection Reconfiguration to configure SRB2 and at least 1 AM DRB, + * with optionally activating up to 8 Dedictated Bearers + * This function DOES NOT configure the SS, but expects the appropriate DRBs to be already configured + * The function does only send the RRCConnectionReconfiguration; + * receiption of RRCConnectionReconfigurationComplete and optionally further NAS PDUs is done outside this function; @sic R5s100315 sic@ + * @params + * If no Dedicated bearers are required, set p_NoOfAddDRBs_AM and p_NoOfAddDRBs_UM to 0 and p_QoS and p_Tft to omit + * in this case only SRB2 and 1 AM DRB (for the already activated Default Bearer) are configured + * Otherwise, SRB2 and 1 AM DRB will be configured + p_NoOfAddDRBs_AMs and p_NoOfAddDRBs_UMs + * Note: + * usage of n and N in 36.508 is confusing: + * - acc. to Table 4.6.3-16 n is the total number of AM DRBs - including the default DRB; + * - in cl. 4.5.3.2 N is the number of add. DRBs (UM and AM), n = no of add. AM bearers, m = no of add. UM bearers (=> N = n+m; 0<=N<=7) + * but here the default DRB is not taken into account + * @param p_CellId + * @param p_RRC_TI tsc_RRC_TI_Def in general + * @param p_NasCountUL needed for RRC Security + * @param p_NoOfAddDRBs_AM no of add. AM bearers not including the default DRB + * @param p_NoOfAddDRBs_UM no of add. UM bearers + * @param p_DRB_ToAddModList p_NoOfAddDRBs_AM+p_NoOfAddDRBs_UM+1 elements or omit; + * omit => default setiing acc. 36.508 cl. 4.8.2.1.7 + * @param p_MAC_MainConfig omit => default setting acc. 36.508 cl. 4.8.2.1.5 + * @param p_PhysicalConfigDedicated omit => default setting acc. 36.508 4.8.2.1.6 + * @param p_QoS + * @param p_Tft + * @param p_PDCP_StatusReportRequired (default value: true) + * @param p_RLF_TimersAndConstants_r9 (default value: omit) + * @param p_DownlinkAntennaGroupConfig (default value: omit) + * @param p_DrbFor2ndPDN (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_Activate_SRB2_DRB_SendRrcMsg(EUTRA_CellId_Type p_CellId, + RRC_TransactionIdentifier p_RRC_TI, + NasCount_Type p_NasCountUL, + UInt_Type p_NoOfAddDRBs_AM := 0, + UInt_Type p_NoOfAddDRBs_UM := 0, + template (omit) DRB_ToAddModList p_DRB_ToAddModList := omit, + template (omit) MAC_MainConfig_Type p_MAC_MainConfig := omit, + template (omit) PhysicalConfigDedicated p_PhysicalConfigDedicated := omit, + template (omit) EPS_QoSList_Type p_QoS := omit, + template (omit) Tft_List_Type p_Tft := omit, + boolean p_PDCP_StatusReportRequired := true, + template (omit) RLF_TimersAndConstants_r9 p_RLF_TimersAndConstants_r9 := omit, + template (omit) DownlinkAntennaGroupConfig_Type p_DownlinkAntennaGroupConfig := omit, + template (omit) DRB_Identity p_DrbFor2ndPDN := omit) runs on EUTRA_PTC + { /* @sic R5-102180: Establishment of SRB2 and DRBs is split into 2 procedures for sending/receiving sic@ */ + /* @sic R5-144797: new parameter p_DrbFor2ndPDN sic@ */ + + var EUTRA_SecurityParams_Type v_AuthParams := f_EUTRA_Security_Get(); + + // ===================================================== + // + + /* step 6-8 of procedure in 36.508 cl. 4.5.3.3 */ + v_AuthParams := f_EUTRA_Authentication_InitAS(v_AuthParams, p_NasCountUL); + v_AuthParams := f_EUTRA_RRC_ActivateSecurity(p_CellId, v_AuthParams, p_NasCountUL); + f_EUTRA_Security_Set(v_AuthParams); + + /* Step 8 of procedure in 36.508 cl. 4.5.3.3 */ + f_EUTRA_RRCConnectionReconfiguration_Common(p_CellId, + p_RRC_TI, + p_NoOfAddDRBs_AM, + p_NoOfAddDRBs_UM, + {cs_508_SRB2_ToAddMod_DEFAULT}, + p_DRB_ToAddModList, + p_MAC_MainConfig, + p_PhysicalConfigDedicated, + p_QoS, + p_Tft, + p_PDCP_StatusReportRequired, + p_RLF_TimersAndConstants_r9,// @sic R5s120808 sic@ + p_DownlinkAntennaGroupConfig, + p_DrbFor2ndPDN); + } + + //---------------------------------------------------------------------------- + /* + * @desc Step 8 of 36.508 cl. 4.5.3.2 + * @param p_CellId + * @param p_RRC_TI tsc_RRC_TI_Def in general + * @param p_NoOfAddDRBs_AM (default value: 0) no of add. AM bearers not including the default DRB + * @param p_NoOfAddDRBs_UM (default value: 0) no of add. UM bearers + * @param p_SRB_ToAddModList (default value: omit) + * @param p_DRB_ToAddModList (default value: omit) p_NoOfAddDRBs_AM+p_NoOfAddDRBs_UM+1 elements or omit; + * omit => default setiing acc. 36.508 cl. 4.8.2.1.7 + * @param p_MAC_MainConfig (default value: omit) omit => default setting acc. 36.508 cl. 4.8.2.1.5 + * @param p_PhysicalConfigDedicated (default value: omit) omit => default setting acc. 36.508 4.8.2.1.6 + * @param p_QoS (default value: omit) + * @param p_Tft (default value: omit) + * @param p_PDCP_StatusReportRequired (default value: true) + * @param p_RLF_TimersAndConstants_r9 (default value: omit) + * @param p_DownlinkAntennaGroupConfig (default value: omit) + * @param p_DrbFor2ndPDN (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_RRCConnectionReconfiguration_Common(EUTRA_CellId_Type p_CellId, + RRC_TransactionIdentifier p_RRC_TI, + UInt_Type p_NoOfAddDRBs_AM := 0, + UInt_Type p_NoOfAddDRBs_UM := 0, + template (omit) SRB_ToAddModList p_SRB_ToAddModList := omit, + template (omit) DRB_ToAddModList p_DRB_ToAddModList := omit, + template (omit) MAC_MainConfig_Type p_MAC_MainConfig := omit, + template (omit) PhysicalConfigDedicated p_PhysicalConfigDedicated := omit, + template (omit) EPS_QoSList_Type p_QoS := omit, + template (omit) Tft_List_Type p_Tft := omit, + boolean p_PDCP_StatusReportRequired := true, + template (omit) RLF_TimersAndConstants_r9 p_RLF_TimersAndConstants_r9 := omit, + template (omit) DownlinkAntennaGroupConfig_Type p_DownlinkAntennaGroupConfig := omit, + template (omit) DRB_Identity p_DrbFor2ndPDN := omit) runs on EUTRA_PTC + { /* @sic R5-130491, R5-121736, R5-121737 - support of MO, MT video call: new parameter p_SRB_ToAddModList; function renamed to f_EUTRA_RRCConnectionReconfiguration_Common sic@ */ + /* @sic R5-144797: new parameter p_DrbFor2ndPDN sic@ */ + var integer n, m, i, v_DRB_Id; + var DRB_Identity v_DrbFor2ndPDN; + var EPS_BearerIdentity v_EpsBearerId; + var integer v_NoOfDefaultBearers := 1; /* @sic R5-144797 sic@ */ + var integer v_NoOfQos := 0; + var integer v_NoOfTft := 0; + var integer v_NoOfAddDRBs := p_NoOfAddDRBs_AM + p_NoOfAddDRBs_UM; /* number of bearers to be configured additionally (i.e. apart from the default bearer) + if v_NoOfAddDRBs=0 => only the default DRB is established */ + var template (value) EUTRA_FDD_TDD_CellInfo_Type v_EUTRA_FDD_TDD_Info := f_EUTRA_CellInfo_GetFDD_TDD_Info (p_CellId); //Get FDD or TDD mode from Cell-configuration + var template (value) DRB_ToAddModList v_DRB_ToAddModList; + var template (value) MAC_MainConfig_Type v_MAC_MainConfig; + var template (omit) PhysicalConfigDedicated v_PhysicalConfigDedicated; + var template (omit) NAS_MSG_RequestList_Type v_NAS_MsgList; + var template (value) RadioResourceConfigDedicated v_RadioResourceConfigDedicated; + var template (value) DRX_Config v_DRX_Config; + var template (value) PhysicalConfigDedicated_AntennaInfo_Type v_AntennaInfo := f_EUTRA_CellInfo_GetAntennaInfoDedicated (p_CellId); //@sic R5-100786 sic@ + var template (value) TimingInfo_Type v_TimingInfo := cs_TimingInfo_Now; /* @sic R5-104796 DRX support sic@ */ + var SubFrameTiming_Type v_SubFrameTiming; + + if (isvalue(p_DrbFor2ndPDN)) { v_NoOfDefaultBearers := v_NoOfDefaultBearers + 1; } /* @sic R5-144797 sic@ */ + + // ----------------------------------------------------- + // Check parameters are valid + if (isvalue(p_QoS)) { + v_NoOfQos := lengthof(p_QoS); + } + if (isvalue(p_Tft)) { + v_NoOfTft := lengthof(p_Tft); + } + if (v_NoOfQos != v_NoOfAddDRBs) { + FatalError (__FILE__, __LINE__, "invalid no. of QoS"); + } + if (v_NoOfTft != v_NoOfAddDRBs) { + FatalError (__FILE__, __LINE__, "invalid no. of TFT"); + } + + // ----------------------------------------------------- + // initialise v_DRB_ToAddModList + + if (isvalue(p_DRB_ToAddModList)) { // explicit setting for DRB_ToAddMod + if (lengthof(p_DRB_ToAddModList) != v_NoOfAddDRBs + v_NoOfDefaultBearers) { + FatalError (__FILE__, __LINE__, "invalid no. of DRB_ToAddMod"); + } + v_DRB_ToAddModList := valueof(p_DRB_ToAddModList); + } else { // use default configuration + v_DRB_Id := tsc_DRB1; // default bearer + for (n := 0; n < (p_NoOfAddDRBs_AM + 1); n := n + 1) { // default bearer included in the list (=> p_NoOfAddDRBs_AM + 1) + if (p_PDCP_StatusReportRequired == true) { + v_DRB_ToAddModList[n] := cs_508_DRB_ToAddMod_DEFAULT_AM(v_DRB_Id); + } + else { + v_DRB_ToAddModList[n] := cs_DRB_ToAddMod_NoPDCP_StatusReport(v_DRB_Id); + } + v_DRB_Id := v_DRB_Id + 1; + } + for (m := 0; m < p_NoOfAddDRBs_UM; m := m + 1) { + v_DRB_ToAddModList[n+m] := cs_508_DRB_ToAddMod_DEFAULT_UM (v_DRB_Id); + v_DRB_Id := v_DRB_Id + 1; + } + } + if (isvalue(p_DrbFor2ndPDN)) { /* @sic R5-144797 sic@ */ + v_DrbFor2ndPDN := valueof(p_DrbFor2ndPDN); + if (v_DrbFor2ndPDN < v_DRB_Id) { + FatalError (__FILE__, __LINE__, "2nd default bearer is within the range of dedicated bearers"); + } + v_DRB_ToAddModList[v_NoOfAddDRBs+1] := cs_508_DRB_ToAddMod_DEFAULT_AM(v_DrbFor2ndPDN); + } + + // ----------------------------------------------------- + // initialise RRCConnectionReconfiguration + + if (isvalue(p_MAC_MainConfig)) { + v_MAC_MainConfig := valueof(p_MAC_MainConfig); + } + else { + if (p_NoOfAddDRBs_UM > 0) { /* @sic R5-104796 DRX support sic@ */ + v_MAC_MainConfig := cs_508_MAC_MainConfig_Explicit_RBC_DrxS; // short DRX cycle acc. to note in 36.508 table 4.6.3-16 + } + else { + v_MAC_MainConfig := cs_508_MAC_MainConfig_Explicit_RBC_DrxL; // long DRX cycle acc. to note in 36.508 table 4.6.3-16 + } + } + + if (isvalue(p_PhysicalConfigDedicated)) { + v_PhysicalConfigDedicated := valueof(p_PhysicalConfigDedicated); + } else { + if (isvalue(p_SRB_ToAddModList)) { // @sic R5-130491, R5-121736, R5-121737 - support of MO, MT video call: per default PhysicalConfigDedicated are needed only if SRB2 is configured too sic@ + v_PhysicalConfigDedicated := cs_508_PhysicalConfigDedicated_Default_RBC(v_EUTRA_FDD_TDD_Info.cqi_ReportConfig, + v_EUTRA_FDD_TDD_Info.soundingRS_UL_Config, + v_AntennaInfo); + } else { + v_PhysicalConfigDedicated := omit; + } + } + + v_RadioResourceConfigDedicated := cs_RadioResourceConfigDedicated_SrbDrbConfig(p_SRB_ToAddModList, // @sic R5-130491, R5-121736, R5-121737 - support of MO, MT video call sic@ + v_DRB_ToAddModList, + v_MAC_MainConfig, + v_PhysicalConfigDedicated, + p_RLF_TimersAndConstants_r9); // @sic R5s120808 sic@ + // ----------------------------------------------------- + // initialise NAS messages + + if (v_NoOfAddDRBs == 0) { + v_NAS_MsgList := omit; // no NAS messages to be sent + } else { + for (i := 0; i < v_NoOfAddDRBs; i := i+1) { // only for the additional DRBs (there is no ActDedEPSBearerCxtReq for the already existing default bearer) + // get EpsBearerId from the corresponding DRB_ToAddModList; DRB_ToAddModList[0] is the default bearer which needs to be skipped + v_EpsBearerId := int2hex(valueof(v_DRB_ToAddModList[i+1].eps_BearerIdentity), 1); // i+1 to skip default DRB; valueof cannot be avoided here + + v_NAS_MsgList[i] := cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_ActDedEPSBearerCxtReq_QoS(v_EpsBearerId, valueof(p_QoS[i]), valueof(p_Tft[i]))); // valueof to avoid compiler warnings: neither p_QoS nor p_Tft can be omit as v_NoOfAddDRBs > 0 + } + } + + if (p_NoOfAddDRBs_UM > 0) { /* @sic R5-104796 DRX support sic@ */ + if (ispresent(v_MAC_MainConfig.explicitValue.drx_Config)) { /* @sic R5120095 sic@ */ + v_DRX_Config := valueof(v_MAC_MainConfig.explicitValue.drx_Config); /* valueof is ok as v_MAC_MainConfig.explicitValue.drx_Config is checked with 'ispresent' beforehand */ + f_EUTRA_SS_DrxCtrlConfig(p_CellId, cs_DrxCtrl_Config(v_DRX_Config)); /* configure DRX at the SS; @sic R5s100630 R5s120054 sic@ */ + + v_SubFrameTiming := f_EUTRA_GetNextSendOccasion (p_CellId, 100 + ((v_NoOfAddDRBs - 1) * 20)); /* @sic R5-115770 change 5 sic@ */ + v_TimingInfo := cs_TimingInfo(v_SubFrameTiming.SFN.Number, v_SubFrameTiming.Subframe.Number); + } + } + else { + /* do nothing; for the time being we don't need any DRX configuration at the SS for DRX_L */ + } + + /* Step 8 */ + SRB.send(cas_SRB1_RrcNasPduList_REQ(p_CellId, + v_TimingInfo, + cs_RRCConnectionReconfiguration_Common(p_RRC_TI, + omit, + omit, + v_RadioResourceConfigDedicated, + omit), + v_NAS_MsgList)); + + if (ischosen(v_AntennaInfo.explicitValue)) { + f_EUTRA_SS_CommonCellConfig(p_CellId, cas_PhysicalLayerConfigDL_CcchDcchDtchDL_Config_REQ(p_CellId, + cs_TimingInfo_Now, + cs_PhysicalLayerConfigDL_AntennaInfo(p_DownlinkAntennaGroupConfig), + cs_DciDLInfo_Auto(cs_DciInfo_CcchDcchDtchDL_Dci1A(f_EUTRA_CellInfo_GetDL_ChBandwidth(p_CellId))), + cs_AntennaInfoDedicated_r8andLater(v_AntennaInfo.explicitValue))) + } + + } + + //---------------------------------------------------------------------------- + /* + * @desc Establishment of SRB1 + default DRB + n AM DRBs + m UM DRBs acc. to 36.508 cl. 4.5.3.2; + * This function receives the RRCConnectionReconfigurationComplete and - depending on the number of additional AM and UM bearers - + * additional NAS messages (ActDedicatedEPSBearerCxtAccept) + * @param p_CellId + * @param p_RRC_TI tsc_RRC_TI_Def in general + * @param p_NoOfAddDRBs_AM no of add. AM bearers not including the default DRB + * @param p_NoOfAddDRBs_UM no of add. UM bearers + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_Activate_SRB2_DRB_ReceiveRrcAndNasMsg(EUTRA_CellId_Type p_CellId, + RRC_TransactionIdentifier p_RRC_TI, + UInt_Type p_NoOfAddDRBs_AM := 0, + UInt_Type p_NoOfAddDRBs_UM := 0) runs on EUTRA_PTC + { /* @sic R5s100315 sic@ */ + var integer v_NoOfExpectedRrcMsgs := 1; + var integer v_NoOfExpectedNasMsgs := p_NoOfAddDRBs_AM + p_NoOfAddDRBs_UM; /* number of bearers to be configured additionally (i.e. apart from the default bearer) + if v_NoOfAddDRBs=0 => only the default DRB is established */ + // ===================================================== + // step 9-10 of procedure in 36.508 cl. 4.5.3.3: + // Step 9 and 10 can occur in any order. Step 10 only occurs for number of Activate messages sent + while (v_NoOfExpectedRrcMsgs + v_NoOfExpectedNasMsgs > 0) { + alt { + [v_NoOfExpectedRrcMsgs > 0] SRB.receive(car_SRB1_RrcPdu_IND(p_CellId, + cr_508_RRCConnectionReconfigurationComplete(p_RRC_TI))) + { + v_NoOfExpectedRrcMsgs := v_NoOfExpectedRrcMsgs - 1; + } + [v_NoOfExpectedNasMsgs > 0] SRB.receive(car_SRB2_NasPdu_IND(p_CellId, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_ActDedicatedEPSBearerCxtAccept(?)))) + { + v_NoOfExpectedNasMsgs := v_NoOfExpectedNasMsgs - 1; + } + } + } + } + + //---------------------------------------------------------------------------- + /* + * @desc Send RRCConnectionReconfiguration (with piggy-backed ATTACH_ACCEPT) and wait for RRCConnectionReconfigurationComplete + * @param p_CellId + * @param p_EpsBearerId + * @param p_RRC_TI + * @param p_EPS_TI + * @param p_EpsAttachResultValue + * @param p_PDN_Address + * @param p_Guti + * @param p_TaiList + * @param p_LAI + * @param p_MSId + * @param p_Cause + * @param p_APN + * @param p_Pco + * @param p_AdditionalUpdateResult + * @param p_T3412 (default value: cs_GprsTimer_v_deact; @sic R5s100780 Default values for Attach Accept sic@ + * @param p_T3402 (default value: omit); @sic R5s100780 Default values for Attach Accept sic@ + * @param p_T3423 (default value: omit); @sic R5s100780 Default values for Attach Accept sic@ + * @param p_EquivalentPlmnList (default value: omit); @sic R5s100780 Default values for Attach Accept sic@ + * @param p_EmergNumList (default value: omit); @sic R5s100780 Default values for Attach Accept sic@ + * @param p_NtwkFeatSupport (default value: cs_EPS_NwkFtSup_IMSVoice); @sic R5s100780 Default values for Attach Accept sic@ + * @param p_T3412Extd (default value: omit) + * @param p_SecurityStatus (default value: tsc_SHT_IntegrityProtected_Ciphered) + * @param p_BearerContextNumber (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_RRCConnectionReconfigurationWithAttachAcceptAllParams(EUTRA_CellId_Type p_CellId, + HalfOctet_Type p_EpsBearerId, + RRC_TransactionIdentifier p_RRC_TI, + ProcedureTransactionIdentifier p_EPS_TI, + NAS_AttDetValue_Type p_EpsAttachResultValue, + template (omit) PDN_Address p_PDN_Address, + template (omit) MobileIdentity p_Guti, + template (value) TrackingAreaIdList p_TaiList, + template (omit) LocAreaId p_LAI, + template (omit) MobileIdentity p_MSId, + template (omit) ESM_Cause p_Cause, // @sic R5-104703 sic@ + template (value) AccessPointName p_APN, + template (omit) ProtocolConfigOptions p_Pco, // @sic R5-104703 sic@ Default value is PPP + template (omit) AdditionalUpdateResult p_AdditionalUpdateResult, // @sic R5-110796 sic@ + template (value) GPRS_Timer p_T3412 := cs_GprsTimer_v_deact, // @sic R5s100780 sic@ + template (omit) GPRS_Timer p_T3402 := omit, // @sic R5s100780 sic@ + template (omit) GPRS_Timer p_T3423 := omit, // @sic R5s100780 sic@ + template (omit) PLMN_List p_EquivalentPlmnList := omit, // @sic R5s100780 sic@ + template (omit) EmergNumList p_EmergNumList := omit, // @sic R5s100780 sic@ + template (omit) EPS_NetworkFeatureSupport p_NtwkFeatSupport := cs_EPS_NwkFtSup_IMSVoice, // @sic R5s100780 sic@ + template (omit) GPRS_Timer3 p_T3412Extd := omit, + SecurityHeaderType p_SecurityStatus := tsc_SHT_IntegrityProtected_Ciphered, + template (omit) BEARER_CONTEXT_TYPE p_BearerContextNumber := omit) + runs on EUTRA_PTC + { /* RRC connection reconfiguration acc. to 36.331 cl. 5.3.5 */ + /* @sic R5-110796 Addition of 9.2.1.2.1d: f_GetAdditionalUpdateResult(p_RcvdAddUpdateType, p_ForcedAttach) replaced by p_AdditionalUpdateResult (p_RcvdAddUpdateType, p_ForcedAttach removed sic@ */ + /* @sic R5-144370: p_APN mandatory; has to be handed over => f_ESM_InitAPN or f_ESM_InitAPNandPCOs shall be used to initialise the APN sic@ */ + /* @sic R5-144797: new parameter p_BearerContextNumber sic@ */ + var template (value) NAS_MSG_Request_Type v_NAS_MSG_Request; + var template (value) AccessPointName v_APN := p_APN; /* @sic R5-144370: no evaluation of the APN in this function anymore sic@ */ + var DRB_Identity v_DRB_Id := f_EUTRA_EpsBearerAssociatedDRB(p_EpsBearerId); /* @sic R5-144797 sic@ */ + + v_NAS_MSG_Request := cs_NAS_RequestWithPiggybacking(p_SecurityStatus, + cs_ATTACH_ACCEPT_Common(p_EpsAttachResultValue, + p_T3412, + p_TaiList, + p_Guti, + p_LAI, + p_MSId, + omit, // @sic R5-104703 sic@ + p_T3402, + p_T3423, + p_EquivalentPlmnList, + p_EmergNumList, + p_NtwkFeatSupport, // @sic R5-103674 sic@ + p_AdditionalUpdateResult, + p_T3412Extd), // @sic R5s1120178 Baseline Moving sic@ + cs_508_ActivateDefEpsBearerContextRequest(p_EpsBearerId, + p_EPS_TI, + v_APN, + p_PDN_Address, + p_Cause, // @sic R5-104703 sic@ + p_Pco, + p_BearerContextNumber)); + f_IP_ChangeEutraCell(IP, p_CellId); /* @sic R5-113734 change 8 sic@ */ + f_EUTRA_RRCConnectionReconfiguration_SRB2_1AM_DRB_Est(p_CellId, + p_RRC_TI, + v_NAS_MSG_Request, + v_DRB_Id); + }; + + /* + * @desc reconfigure one ore more DRBs + * @param p_CellId + * @param p_RRC_TI + * @param p_DrbList .. DRBs to be reconfigured + * @param p_NAS_MsgList .. NAS messages corresponding to the DRBs + * @param p_RLC_Mode_Type .. all DRBs are either AM or UM DRBs + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_RRCConnectionReconfigurationWithPiggyNAS_DrbReconfig(EUTRA_CellId_Type p_CellId, + RRC_TransactionIdentifier p_RRC_TI, + DRB_IdentityList_Type p_DrbList, + template (value) NAS_MSG_RequestList_Type p_NAS_MsgList, + RLC_Mode_Type p_RLC_Mode_Type := AM_Mode) + runs on EUTRA_PTC + { + var template (omit) DRX_Config v_DRX_Config; + var template (omit) MAC_MainConfig_Type v_MAC_MainConfig := omit; + var template (value) DRB_ToAddModList v_DRB_ToAddModList; + var integer i; + + // EPS bearer contexts are to be activated with default parameters. + if (p_RLC_Mode_Type == AM_Mode) { // @sic R5s110340 ch. 8 sic@ + for (i:=0; i value v_ReceivedAsp; + + // Transmit DLInformationTransfer containing a TRACKING AREA UPDATE ACCEPT message + SRB.send (cas_SRB2_NasPdu_REQ (p_CellId, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_TAU_Accept_Common(v_EpsUpdate_ResultValue, // @sic R5-130620 sic@ + f_GutiParameters2MobileIdentity (tsc_IEI_Guti, v_GutiParams), + v_TaiList, + v_ReceivedAsp.Signalling.Nas[0].Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.epsBearerContextStatus, + f_EUTRA_GetCellLAI(p_CellId, NORMAL), + f_GetMSId (NORMAL), + f_GetAdditionalUpdateResult(v_ReceivedAsp.Signalling.Nas[0].Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.addUpdateType), + -, + -, + p_EPLMNlist)))); + + // Receive ULInformationTransfer containing a TRACKING AREA UPDATE COMPLETE message + SRB.receive(car_SRB2_NasPdu_IND(p_CellId, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_TAU_Complete))); + } + + /* + * @desc Test procedure to check that UE performs tracking area updating procedure + * without ISR and security reconfiguration after successful completion of handover from UTRA, + * see TS 36.508 subclause 6.4.2.10 + * @param p_CellId + * @param p_Auth_Params_Native + * @param p_NasCountInfo + * @param p_CSInOtherRAT (default value: true) + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_EUTRA_508Check_TrackingAreaUpdating_AfterHO(EUTRA_CellId_Type p_CellId, + EUTRA_SecurityParams_Type p_Auth_Params_Native, + NasCountInfo_Type p_NasCountInfo, + boolean p_CSInOtherRAT := true) runs on EUTRA_PTC + { + var GutiParameters_Type v_GutiParams := f_EUTRA_CellInfo_GetGuti(p_CellId); + var NAS_PlmnId v_PLMN := f_Asn2Nas_PlmnId (v_GutiParams.PLMN_Identity); + var template (omit) EPS_BearerContextStatus v_EPS_ContextStatus; + var SRB_COMMON_IND v_ReceivedAsp; + var template (value) TrackingAreaIdList v_TaiList; + var EUTRA_SecurityParams_Type v_SecurityParams := f_EUTRA_Security_Get(); + var NasCount_Type v_NasCountUL; + var Frequency_IE_Type v_Frequency_IE := f_EUTRA_CellInfo_GetFrequencyIEs(p_CellId); + var CarrierFreqEUTRA v_EUTRA_CarrierFreq := v_Frequency_IE.UL_DL_Earfcn; + var template (value) CarrierBandwidthEUTRA v_EUTRA_CarrierBandwidth := cs_CarrierBandwidthEUTRA(v_Frequency_IE.DL_ChBandwidth, v_Frequency_IE.UL_ChBandwidth); + var EPS_UpdateTypeValue v_UpdateType := f_GetEPSTAUType(NORMAL); + var EPS_UpdateTypeValue v_UpdateResult := v_UpdateType; + var template (omit) MobileIdentity v_MSId := f_GetMSId(NORMAL); + var template (omit) LocAreaId v_LAI := f_EUTRA_GetCellLAI(p_CellId, NORMAL); + var SubFrameTiming_Type v_Timing; + + var template AdditionalUpdateType v_AdditionalUpdateType := f_GetAdditionalUpdateType (); + + v_TaiList := cds_TAIListNonConsecutive_tlv(f_Asn2Nas_PlmnId(v_GutiParams.PLMN_Identity), + { bit2oct(f_EUTRA_CellInfo_GetTAC(p_CellId)) } ); + + if (v_UpdateType != tsc_EpsUpdate_TaUpdate) { // TA Only; @sic R5s120490 sic@ + if (p_CSInOtherRAT) { + v_UpdateType := tsc_EpsUpdate_Combined_IMSIAttach; + } else { + v_UpdateType := tsc_EpsUpdate_Combined_TaLaUpdate; + } + } + + /* Step 1: Does the UE transmit an ULInformationTransfer message? + This includes a TRACKING AREA UPDATE REQUEST message */ + SRB.receive(car_SRB2_NasPdu_IND(p_CellId, + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cdr_TAU_Request_HO(v_UpdateType, // @sic R5-123720 sic@ + f_EUTRA_SecurityKSIasme_Get(), + cr_DRXparameter_Any ('5C'O) ifpresent, // @sic R5s120210, R5-123117 sic@ + v_AdditionalUpdateType)))) + -> value v_ReceivedAsp; + + // Send this back in the Accept + v_EPS_ContextStatus := v_ReceivedAsp.Signalling.Nas[0].Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.epsBearerContextStatus; + + /* Step 2: The SS transmits a DLInformationTransfer message + This includes a TRACKING AREA UPDATE ACCEPT message */ + SRB.send(cas_SRB2_NasPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_508_TAU_Accept(v_UpdateResult, // @sic R5s120490 sic@ + f_GutiParameters2MobileIdentity (tsc_IEI_Guti, v_GutiParams), + v_TaiList, + v_EPS_ContextStatus, + v_LAI, + v_MSId, + f_GetAdditionalUpdateResult(v_ReceivedAsp.Signalling.Nas[0].Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.addUpdateType))))); + + + /* Step 3: The UE transmits a ULInformationTransfer message + This includes a TRACKING AREA UPDATE COMPLETE message */ + SRB.receive(car_SRB2_NasPdu_IND(p_CellId, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_TAU_Complete))); + + /* Now complete Authentication process if the UE comes from UTRAN cell + without proper authentication parameters */ + if (f_EUTRA_SecurityKSIasme_Get() == '111'B) { + //4a1 4a2: Authentication Procedure + /* Authentication Procedure according to 24.301 cl. 5.4.2 */ + v_SecurityParams := f_EUTRA_NAS_Authentication(p_CellId, + tsc_SRB2, + v_SecurityParams, + tsc_SHT_IntegrityProtected_Ciphered, + tsc_SHT_IntegrityProtected_Ciphered, + v_PLMN); + } + + /* StepS 5&6: + The SS transmits a NAS SECURITY MODE COMMAND message to activate NAS + security. <-- SECURITY MODE COMMAND + + The UE transmits a NAS SECURITY MODE COMPLETE message and establishes + the initial security configuration. --> SECURITY MODE COMPLETE + */ + f_EUTRA_SS_NAS_CountSet (p_NasCountInfo.DL, p_NasCountInfo.UL); // @sic R5s102535 sic@ + f_EUTRA_Security_Set(p_Auth_Params_Native); // @sic R5s102535 sic@ + v_NasCountUL := f_EUTRA_NAS_ActivateSecurity(p_CellId, p_Auth_Params_Native, tsc_SRB2, omit); // @sic R5s102535 sic@ + v_SecurityParams := f_EUTRA_Security_Get (); // @sic R5s102535 sic@ + + // Step7 + /* SS performs an RRC Connection Reconfiguration procedure with intra cell handover + and security reconfiguration on the cell */ + v_Timing := f_EUTRA_GetNextSendOccasion(p_CellId, tsc_EUTRA_DelayBeforeIntraCellHO); // @sic R5s120686 sic@ + f_EUTRA_RRC_ConnReconfigHO_IntraLTE_MobilitySecurity(p_CellId, + p_CellId, + f_Generate_cs_MobilityControlInfo_HO(p_CellId, + v_EUTRA_CarrierFreq, + omit, + v_EUTRA_CarrierBandwidth, + 1), + cs_508SecurityConfigHO_IntraLTE_Native, // @sic R5s120535 sic@ + cs_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number)); + + /* Note: current implementation releases SRBs and reconfigures C-RNTI 5ms after sending the RRCConnectionReconfiguration + => RLC ACK is not taken into consideration */ + + v_Timing := f_EUTRA_TimingInfoAdd(v_Timing, 5); // add 5ms + + // Release SRBs and DRBs + f_EUTRA_SS_SRBs_DRBs_Release(p_CellId, cs_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number)); + + // Configure C-RNTI based contention resolution in cell + /* f_EUTRA_SS_ConfigRachProcedure ( p_CellId, + tsc_C_RNTI_Def2, + cs_RachProcedureConfig_CRNTI ( f_EUTRA_CellInfo_GetRAR_TA ( p_CellId ), + f_EUTRA_CellInfo_GetDL_ChBandwidth(p_CellId)),// @sic R5-103846 sic@ + cs_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number));*/ + + // @sic R5s100516 change 10 sic@ + f_EUTRA_SS_ConfigRachProcedure_HO(p_CellId, + cs_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number), + tsc_C_RNTI_Def2); + + // Save new C-RNTI in cell configuration for the cell + f_EUTRA_CellInfo_SetC_RNTI(p_CellId, tsc_C_RNTI_Def2); + + // Setup SRBs and DRBs again + v_Timing := f_EUTRA_TimingInfoAdd(v_Timing, 5); // add 5ms + f_EUTRA_SS_SRBs_DRBs_Config(p_CellId, cs_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number)); + + // Enable RRC Integrity and Ciphering at SS target cell + v_SecurityParams := f_EUTRA_AS_ActivateSecurity_NewAKA(p_CellId, + v_SecurityParams, + v_NasCountUL, + cs_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number)); + f_EUTRA_Security_Set(v_SecurityParams); + + /* Step 8: Receive RRCConnectionReconfigurationComplete */ + SRB.receive(car_SRB1_RrcPdu_IND(p_CellId, cr_508_RRCConnectionReconfigurationComplete(tsc_RRC_TI_Def))); + + /* RRCConnectionReconfigurationComplete correctly received on the cell */ + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "36.508 Subclause 6.4.2.10 Step 8"); + + // @sic R5s100520 change 11 sic@ + // configure RACH procedure for target cell back to default + f_EUTRA_SS_ConfigRachProcedure_Def(p_CellId); /* @sic acc. to R5s100029 change 3 sic@ */ + } + +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_NasSecurityProcedures.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_NasSecurityProcedures.ttcn new file mode 100644 index 0000000..dae0fc7 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_NasSecurityProcedures.ttcn @@ -0,0 +1,190 @@ +// *************************************************************************** +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// * $Date: 2014-09-05 19:10:47 +0200 (Fri, 05 Sep 2014) $ +// * $Rev: 12078 $ +// *************************************************************************** + +module EUTRA_NasSecurityProcedures { + + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_Component all; + import from Parameters all; + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from EUTRA_RRC_Templates all; + import from EUTRA_SRB_Templates all; + import from EUTRA_AspCommon_Templates all; + import from EUTRA_SecurityFunctions all; + import from EUTRA_SecuritySteps all; + import from EUTRA_CommonProcedures all; + import from NAS_CommonTypeDefs all; + import from EPS_NAS_TypeDefs all; + import from EPS_NAS_Constants all; + import from EPS_NAS_Templates all; + import from NAS_CommonTemplates all; + import from EPS_NAS_MsgContainers all; + import from EUTRA_NASSteps all; + import from NAS_AuxiliaryDefsAndFunctions all; + import from EUTRA_AuxiliaryFunctions all; + import from EUTRA_Timing all; + import from EUTRA_CellInfo all; + + const B3_Type tsc_EPS_Integerity_Snow3G := '001'B; /* @status APPROVED (LTE) */ + const B3_Type tsc_EPS_Integerity_AES := '010'B; /* @status APPROVED (LTE) */ + const B3_Type tsc_EPS_Encryption_Snow3G := '001'B; /* @status APPROVED (LTE) */ + const B3_Type tsc_EPS_Encryption_AES := '010'B; /* @status APPROVED (LTE) */ + const B3_Type tsc_EPS_Integerity_ZUC := '011'B; /* @status APPROVED (LTE_A) */ + const B3_Type tsc_EPS_Encryption_ZUC := '011'B; /* @status APPROVED (LTE_A) */ + + //---------------------------------------------------------------------------- + /* + * @desc step 1..12 of test cases 9.4.* + * @param p_NAS_IntegrityProtAlgorithm + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_PdcpScurityProcedure_Integrity_9_4(B3_Type p_NAS_IntegrityProtAlgorithm) runs on EUTRA_PTC + { + timer t_WaitTimer := f_EUTRA_SetTimerToleranceMin(eutra_CellA, nasTTCNTimer, 5.0) ; //5 seconds timer acc. to the test case prose @sic R5w100302, R5-106675 sic@ + // Initialise the integrity algorithm to test + f_EUTRA_NAS_IntegrityAlgorithm_Set (p_NAS_IntegrityProtAlgorithm); + //steps 1 to 10 + f_EUTRA_PdcpScurityProcedure_Common_9_4(); + + //+ The SS Transmits an IDENTITY REQUEST message [Not integrity protected] <- IDENTITY REQUEST + //@siclog "Step 11" siclog@ + SRB.send(cas_SRB2_NasPdu_REQ(eutra_CellA, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_NoSecurityProtection, + cs_IDENTITY_REQUEST(tsc_IdType_IMEI)))); + //+ Check: Does the UE transmit an IDENTIY RESPONSE message + //+ in 5 seonds ? -> IDENTITY RESPONSE [2,F] + //@siclog "Step 12" siclog@ + t_WaitTimer.start; + alt { + []SRB.receive(car_SRB2_NasPdu_IND(eutra_CellA, + cr_NAS_Indication(?, + cr_IDENTITY_RESPONSE(f_Imei2MobileIdentity(px_IMEI_Def))))) + { + t_WaitTimer.stop; + f_EUTRA_SetVerdictFailOrInconc (__FILE__, __LINE__, "Step 12: UE is responding to non integrity protected SMC"); + } + [] t_WaitTimer.timeout {} + } + + } + + //---------------------------------------------------------------------------- + /* + * @desc step 1..10 of test cases 9.4.* + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_PdcpScurityProcedure_Common_9_4() runs on EUTRA_PTC + { + var HalfOctet_Type v_EpsBearerId := tsc_EpsDefaultBearerId; + var ProcedureTransactionIdentifier v_EpsPti := tsc_PTI_1; + var GutiParameters_Type v_GutiParams := f_EUTRA_CellInfo_GetGuti(eutra_CellA); // get all data which are required for a GUTI + var NAS_MSG_Indication_Type v_NasInd; // temporary variable which is used when receiving NAS ASPs + // initialize security parameters + var NasCount_Type v_NasCountUL; + var EUTRA_SecurityParams_Type v_SecurityParams := f_EUTRA_Security_Get(); + //v_AdditionalUpdateType is defined to follow TTCN3 v411 standard + var template AdditionalUpdateType v_AdditionalUpdateType := f_GetAdditionalUpdateType (); // @sic R5-103681 sic@ + var NAS_AttDetValue_Type v_AttachType := f_GetEAttachType(NORMAL); // @sic R5s110176 sic@ + var AccessPointName v_APN; + var template (omit) ProtocolConfigOptions v_Pco := omit; + var NAS_PlmnId v_PLMN := f_Asn2Nas_PlmnId(v_GutiParams.PLMN_Identity); + var NAS_Lac v_LAC := f_EUTRA_CellInfo_GetLocationAreaCode ( eutra_CellA ); + var template (omit) LocAreaId v_LAI := f_GetLAI ( v_PLMN, v_LAC, NORMAL); // @sic R5s110427 sic@ + var template (omit) MobileIdentity v_MSId := f_GetMSId (NORMAL); // @sic R5s110427 sic@ + + //+ The UE is switched on. + //@siclog "Step 1" siclog@ + f_EUTRA_SwitchOnUEandStartIP(eutra_CellA); // @sic R5s120065 sic@ + + //+ The UE transmits an ATTACH REQUEST message --> ATTACH REQUEST + //@siclog "Step 2" siclog@ + v_NasInd := f_EUTRA_RRC_ConnEst_DefWithNas(eutra_CellA, + tsc_RRC_TI_Def, + cr_EstablishmentCause_Any, + cr_NAS_IndicationWithPiggybacking(tsc_SHT_IntegrityProtected, + cr_508_ATTACH_REQUEST(v_AttachType, v_AdditionalUpdateType), // @sic R5-103681 sic@ + cr_508_PDN_CONNECTIVITY_REQUEST(tsc_PdnRequest_InitialAttach, + f_GetPdnType()))); + v_EpsPti := v_NasInd.Pdu.PiggybackedPduList[0].Msg.pDN_CONNECTIVITY_REQUEST.procedureTransactionIdentifier; // Use this value in SS responses + if (ispresent( v_NasInd.Pdu.PiggybackedPduList[0].Msg.pDN_CONNECTIVITY_REQUEST.protocolConfigurationOptions)) { // @sic R5s100084 sic@ + v_Pco := v_NasInd.Pdu.PiggybackedPduList[0].Msg.pDN_CONNECTIVITY_REQUEST.protocolConfigurationOptions; + } + //+ The SS transmits an AUTHENTICATION REQUEST message to initiate + //+ the EPS authentication and AKA procedure. <-- AUTHENTICATION + //+ REQUEST + //+ The UE transmits an AUTHENTICATION RESPONSE message and + //+ establishes mutual authentication. --> AUTHENTICATION RESPONSE + //@siclog "Steps 3 - 4" siclog@ + v_SecurityParams := f_EUTRA_NAS_Authentication(eutra_CellA, tsc_SRB1, + v_SecurityParams, + tsc_SHT_IntegrityProtected_Ciphered, // @sic R5-102226 sic@, + tsc_SHT_IntegrityProtected_Ciphered, // @sic R5-102226 sic@, + f_Asn2Nas_PlmnId(v_GutiParams.PLMN_Identity)); + + //+ The SS transmits a SECURITY MODE COMMAND message to activate NAS + //+ security. It is integrity protected and includes request to + //+ include IMEISV <-- SECURITY MODE COMMAND + //+ Check: Does the UE transmit a SECURITY MODE COMPLETE message and + //+ does it establish the initial security configuration? --> + //+ SECURITY MODE COMPLETE [1,P] + //@siclog "Steps 5 - 6" siclog@ + v_NasCountUL := f_EUTRA_NAS_ActivateSecurity(eutra_CellA, v_SecurityParams); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 6"); + + //@siclog "Steps 6a1 - 6a2" siclog@ + v_APN := f_ESM_InitAPN(eutra_CellA, f_CheckEsmInfoTransferFlag(v_NasInd.Pdu.PiggybackedPduList[0].Msg.pDN_CONNECTIVITY_REQUEST), v_EpsPti); // @sic R5-110708 sic@ + + v_SecurityParams := f_EUTRA_RRC_ActivateSecurity(eutra_CellA, + v_SecurityParams, + v_NasCountUL); + f_EUTRA_Security_Set(v_SecurityParams); + + //+ The SS transmits an ATTACH ACCEPT message. <-- ATTACH ACCEPT + //@siclog "Step 7" siclog@ + f_EUTRA_RRCConnectionReconfigurationWithAttachAcceptAllParams(eutra_CellA, + v_EpsBearerId, + tsc_RRC_TI_Def, + v_EpsPti, + v_AttachType, // @sic R5s110228 sic@ + f_EUTRA_GetPDNAddress (f_CheckPCOforIPallocationViaNas (v_Pco)), + f_GutiParameters2MobileIdentity(tsc_IEI_Guti, v_GutiParams), + cs_TrackingAreaIdListDef_lv, + v_LAI, // @sic R5s110427 sic@ + v_MSId, + omit, + v_APN, + f_GetDefaultProtocolConfigOptions (v_Pco), // @sic R5-104703 sic@ + f_GetAdditionalUpdateResult(v_NasInd.Pdu.Msg.aTTACH_REQUEST.addUpdateType, // @sic R5-103681 sic@ + NORMAL)); // @sic R5s110176 sic@ + + //+ The UE transmits an ATTACH COMPLETE message --> ATTACH COMPLETE + //@siclog "Step 8" siclog@ + f_EUTRA_NAS_AttachComplete(eutra_CellA, v_EpsBearerId); + + //+ The SS Transmits an IDENTITY REQUEST message [Security + //+ protected] <- IDENTITY REQUEST + //@siclog "Step 9" siclog@ + SRB.send(cas_SRB2_NasPdu_REQ(eutra_CellA, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_IDENTITY_REQUEST(tsc_IdType_IMSI)))); + //+ Check: Does the UE transmit an IDENTIY RESPONSE message + //+ [Security Protected]? -> IDENTITY RESPONSE [1,P] + //@siclog "Step 10" siclog@ + SRB.receive(car_SRB2_NasPdu_IND(eutra_CellA, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_IDENTITY_RESPONSE(f_Imsi2MobileIdentity(px_IMSI_Def))))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 10"); + } + +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_Paging.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_Paging.ttcn new file mode 100644 index 0000000..9271fef --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_Paging.ttcn @@ -0,0 +1,428 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-02-02 20:48:35 +0100 (Sun, 02 Feb 2014) $ +// $Rev: 10477 $ +/******************************************************************************/ + +module EUTRA_Paging +{ +//========================================================================= +// Import Part +//========================================================================= + + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_ASP_TypeDefs all; + import from EUTRA_SRB_Templates all; + import from EUTRA_RRC_Templates all; + + import from EUTRA_Component all; + import from EUTRA_CellInfo all; + import from EUTRA_Timing all; + + import from Parameters all; + +//========================================================================= +// Types and constants +//========================================================================= + + const integer tsc_SfnDelay := 13; /* @desc tsc_SfnDelay: Delay for calculation of the next paging frame. + * Value set to 10+3 to give a minimum of 100ms (Ref: 36-523-3 cl. 7.3) to allow SS to configure the PAGING + * and also to calculate for possible delay in SS & TTCN (30ms). + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + + const integer tsc_SfnDelayConnected := 256; /* @desc tsc_SfnDelayConnected: Delay for calculation of the next paging frame when UE is in connected mode. + * Value set to 256 to give a minimum of 2560ms (2*PagingCycle) to allow SS to configure the PAGING + * and also to calculate for possible delay in SS & TTCN. + * @status APPROVED (IMS, LTE, LTE_A, LTE_IRAT) */ + +//========================================================================= +// Templates +//========================================================================= + + template (value) PagingUE_Identity cs_PagingUE_Identity_S_TMSI(MMEC p_Mmec, + M_TMSI_Type p_M_Tmsi) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + s_TMSI := { + mmec := p_Mmec, + m_TMSI := p_M_Tmsi + } + }; + + template (value) PagingRecordList cs_NasPaging_OneRecord(template (value) PagingUE_Identity p_PagingUE_Identity) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + { + ue_Identity := p_PagingUE_Identity, + cn_Domain := ps + } + }; + + template (value) PagingRecordList cs_DomainNasPaging_OneRecord(template (value) PagingUE_Identity p_PagingUE_Identity, + CN_Domain_Type p_Cn_Domain) := + { /* @status APPROVED (LTE, LTE_IRAT) */ + { + ue_Identity := p_PagingUE_Identity, + cn_Domain := p_Cn_Domain + } + }; + + + template (value) PCCH_Message cs_RRC_Paging(template (omit) PagingRecordList p_PagingRecordList, + template (omit) Paging_SystemInfoModification_Type p_SystemInfoModification, + template (omit) Paging_ETWS_Indication p_EtwsIndication := omit, + template (omit) Paging_v890_IEs p_CMAS_Paging := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + + message_ := { + c1 := { + paging := { + pagingRecordList := p_PagingRecordList, + systemInfoModification := p_SystemInfoModification, + etws_Indication := p_EtwsIndication, // @sic R5-112161: add p_EtwsIndication parameter sic@ + nonCriticalExtension := p_CMAS_Paging // @sic R5-121854 sic@ + } + } + } + }; + + template (value) SYSTEM_CTRL_REQ cas_CellConfig_Paging_REQ_Common(EUTRA_CellId_Type p_CellId, + template (value) SubFrameTiming_Type p_PagingOccassion, + template (value) PCCH_Message p_PCCH_Message, + template (omit) SubframeOffsetList_Type p_SubframeOffsetList := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5-110803 change 4: new parameter sic@ */ + Common := { + CellId := p_CellId, + RoutingInfo := { None := true }, + TimingInfo := { + SubFrame := p_PagingOccassion + }, + ControlInfo := { + CnfFlag := false, /* @sic R5s100135 sic@ */ + FollowOnFlag := false + }, + CA_Info := omit + }, + Request := { + Paging := { + Paging := p_PCCH_Message, + SubframeOffsetList := p_SubframeOffsetList + } + } + }; + + template (value) SYSTEM_CTRL_REQ cas_CellConfig_Paging_REQ(EUTRA_CellId_Type p_CellId, + template (value) SubFrameTiming_Type p_PagingOccassion, + template (value) PagingRecordList p_PagingRecordList) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + cas_CellConfig_Paging_REQ_Common( p_CellId, p_PagingOccassion, cs_RRC_Paging( p_PagingRecordList, omit)); + + template (value) SYSTEM_CTRL_REQ cas_CellConfig_PagingSysinfoMod_REQ(EUTRA_CellId_Type p_CellId, + template (value) SubFrameTiming_Type p_PagingOccassion, + template (omit) PagingRecordList p_PagingRecordList, + template (omit) SubframeOffsetList_Type p_SubframeOffsetList := omit, + template (omit) Paging_SystemInfoModification_Type p_SystemInfoModification := true_, + template (omit) Paging_ETWS_Indication p_EtwsIndication := omit, + template (omit) Paging_v890_IEs p_CMAS_Paging := omit) := // @sic R5-121854 sic@ + /* @status APPROVED (IMS, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5-110803 change 4: new parameter sic@ */ + cas_CellConfig_Paging_REQ_Common( p_CellId, p_PagingOccassion, cs_RRC_Paging( p_PagingRecordList, p_SystemInfoModification, p_EtwsIndication, p_CMAS_Paging), p_SubframeOffsetList); + + //========================================================================= + // Functions + //========================================================================= + /* + * @desc Function used to convert the paging cycle from the ans.1 enumerated type to integer. + * @param p_PagingCycle A value of the enumerated type DefaultPagingCycle_Type (which is derived from the asn.1 PCCH-Config.defaultPagingCycle) + * @return integer Number of radio frames which corresponds to the paging cycle + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_GetPagingCycleValue(DefaultPagingCycle_Type p_PagingCycle) return integer + { + var integer v_PagingCycleValue; + + select (p_PagingCycle) { + case (rf32) { v_PagingCycleValue := 32; } + case (rf64) { v_PagingCycleValue := 64; } + case (rf128) { v_PagingCycleValue := 128;} + case (rf256) { v_PagingCycleValue := 256;} + case else { FatalError(__FILE__, __LINE__, "PagingCycle has unrecognizable value");} + } + return v_PagingCycleValue; + } + + /* + * @desc Calculates and returns next available Paging frames and occasions + * Calulations are according to 36.304 clause 7 + * @param p_Sfn + * @param p_T + * @param p_Nb + * @param p_Imsi + * @param p_Fdd_Tdd + * @return SubFrameTimingList_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_Calculate_PF_PO(SystemFrameNumber_Type p_Sfn, + DefaultPagingCycle_Type p_T, + PCCH_Config.nB p_Nb, + hexstring p_Imsi, + EUTRA_FDD_TDD_Mode_Type p_Fdd_Tdd) return SubFrameTimingList_Type + { + var integer v_T := 0;//Range of DRX values 32, 64, 128, 256 radioframes. The UE specific DRX parameter, if allocated and having shorter DRX than T, shall override T + var integer v_Nb := 0;//4T, 2T, T, 1/2T, 1/4T, 1/8T, 1/16T, 1/32T + var integer v_N := 0;//min(T,nB) + var integer v_Ns := 0;//max(1,nB/T) + var charstring v_Imsi_String := hex2str(p_Imsi); + var integer v_Imsi_Integer := str2int(v_Imsi_String); + var integer v_Ue_Id := v_Imsi_Integer mod 1024; + var SubFrameNumber_Type v_Po := 0; + var SubFrameTimingList_Type v_PagingOccasionList; + var integer v_SfnModT; + var integer v_NextSfn := (p_Sfn + tsc_SfnDelay) mod 1024; + var integer v_FirstPagingFrame; + var integer v_I_s;//i_s = floor(UE_ID/N) mod Ns + var integer v_I3; + var integer v_NextPagingFrame; + + //* @desc Derive integer type T from enumerated type defaultPagingCycle + v_T := f_EUTRA_GetPagingCycleValue(p_T); + + //* @desc Calculate integer type nB based on enumerated type p_Nb and integer type T + select (p_Nb) { + case (fourT) { + v_Nb := 4*v_T; + } + case (twoT) { + v_Nb := 2*v_T; + } + case (oneT) { + v_Nb := v_T; + } + case (halfT) { + v_Nb := v_T/2; + } + case (quarterT) { + v_Nb := v_T/4; + } + case (oneEighthT) { + v_Nb := v_T/8; + } + case (oneSixteenthT) { + v_Nb := v_T/16; + } + case (oneThirtySecondT) { + v_Nb := v_T/32; + } + case else { + FatalError(__FILE__, __LINE__, "Provided value for nB is unrecognizable"); + } + } + + //* @desc Derive N and Ns based on values on nB and T + if (v_T <= v_Nb) { v_N := v_T } else { v_N := v_Nb } + if (1 >= ( v_Nb/v_T)) { v_Ns := 1 } else { v_Ns := v_Nb/v_T } + + //* @desc Calculate next available PF based on v_NextSfn and SFN mod T = (T div N)*(UE_ID mod N) + v_SfnModT := (v_T / v_N) * (v_Ue_Id mod v_N); + + if ((v_NextSfn mod v_T) < v_SfnModT) { + v_FirstPagingFrame := ((v_NextSfn - v_NextSfn mod v_T) + v_SfnModT) mod 1024 + } + else { + v_FirstPagingFrame := (v_T * (((v_NextSfn - v_NextSfn mod v_T) / v_T) + 1) + v_SfnModT) mod 1024 + } + + //* @desc Calculate i_s = floor(UE_ID/N) mod Ns + v_I_s := (v_Ue_Id / v_N) mod v_Ns; + + //* @desc Derive PO based on i_s, Ns and FDD or TDD + select (v_I_s) { + case (0) { + if (v_Ns == 1 and p_Fdd_Tdd == FDD) { + v_Po := 9; + } + else if (v_Ns == 2 and p_Fdd_Tdd == FDD) { + v_Po := 4; + } + } + case (1) { + if (v_Ns == 2) { + if (p_Fdd_Tdd == FDD) { + v_Po := 9; + } + else { + v_Po := 5; + } + } + else if (v_Ns == 4) { + if (p_Fdd_Tdd == FDD) { + v_Po := 4; + } + else { + v_Po := 1; + } + } + else { + FatalError(__FILE__, __LINE__, "PO is calculated to N/A"); + } + } + case (2) { + if (v_Ns == 4) { + v_Po := 5; + } + else { + FatalError(__FILE__, __LINE__, "PO is calculated to N/A"); + } + } + case (3) { + if (v_Ns == 4) { + if (p_Fdd_Tdd == FDD) { + v_Po := 9; + } + else { + v_Po := 6; + } + } + else { + FatalError(__FILE__, __LINE__, "PO is calculated to N/A"); + } + } + case else { + FatalError(__FILE__, __LINE__, "Provided value for i_s is unrecognizable"); + } + } + + //* @desc Fill and save PagingOccasionList + for (v_I3 := 0; v_I3 < 10; v_I3 := v_I3 + 1) { + v_NextPagingFrame := (v_FirstPagingFrame + (v_I3*v_T) ) mod 1024; + v_PagingOccasionList[v_I3] := { + SFN := { + Number := v_NextPagingFrame + }, + Subframe := { + Number := v_Po + } + } + } + + return v_PagingOccasionList; + } + + /* + * @desc Trigger SS to send paging request to UE with but expects no answer (i.e. RRCConnectionRequest from UE. + * @param p_CellId + * @param p_PagingRecordList + * @param p_NoReactionTimer + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_EUTRA_UE_Page_NoReaction(EUTRA_CellId_Type p_CellId, + template (value) PagingRecordList p_PagingRecordList, + float p_NoReactionTimer) runs on EUTRA_PTC + { + var PCCH_Config v_SI_Pcch_Configuration; + var PCCH_Config.defaultPagingCycle v_PagingCycle; + var EUTRA_FDD_TDD_Mode_Type v_EUTRA_FDD_TDD_Mode; + var SubFrameTiming_Type v_CurrentTiming; + var SubFrameTimingList_Type v_PoList; + var hexstring v_Imsi := px_IMSI_Def; + timer t_NoReaction; + + f_Delay(tsc_EUTRA_DelayForCellSelection); // @sic R5s110306 sic@ + + //Derive FDD or TDD mode from Cell-configuration + v_EUTRA_FDD_TDD_Mode := f_EUTRA_CellInfo_GetFDD_TDD(p_CellId); + + //Derive DRX params from SYS Info + v_SI_Pcch_Configuration := f_EUTRA_CellInfo_GetPCCH_ConfigInSYSINFO(p_CellId); + + // @sic R5s100240 : Removed derivation of UE specicif drx parameters. Calculation of smallest paging cycle is modified. sic@ + + //Set the Pagingcycle + v_PagingCycle := v_SI_Pcch_Configuration.defaultPagingCycle; + + //Get current SFN and subframe + v_CurrentTiming := f_EUTRA_GetCurrentTiming(p_CellId); + + //Calculate next Paging Occassion + v_PoList := f_EUTRA_Calculate_PF_PO(v_CurrentTiming.SFN.Number, v_PagingCycle, v_SI_Pcch_Configuration.nB, v_Imsi, v_EUTRA_FDD_TDD_Mode); + + SYS.send(cas_CellConfig_Paging_REQ(p_CellId, v_PoList[0], p_PagingRecordList)); + + if (v_PoList[0].SFN.Number > v_CurrentTiming.SFN.Number) { + p_NoReactionTimer := p_NoReactionTimer + 0.01 * (int2float(v_PoList[0].SFN.Number - v_CurrentTiming.SFN.Number)); + } + else { + p_NoReactionTimer := p_NoReactionTimer + 0.01 * (int2float(1024 - v_CurrentTiming.SFN.Number + v_PoList[0].SFN.Number)); + } + + t_NoReaction.start(p_NoReactionTimer); + + alt { /* @sic R5s100135: CNF removed sic@ */ + [] SRB.receive(car_SRB0_RrcPdu_IND(p_CellId, cr_508_RRCConnectionRequest)) + { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Page NoReaction"); + } + [] t_NoReaction.timeout {} + } + } + + /* + * @desc Wrapper function to initialise proper GUTI variables and page in the cell + * @param p_CellId + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_UE_Page_Def(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { + var GutiParameters_Type v_GutiParameters := f_EUTRA_CellInfo_GetGuti(p_CellId); + + f_EUTRA_UE_Page(p_CellId, + cs_NasPaging_OneRecord(cs_PagingUE_Identity_S_TMSI(v_GutiParameters.MME_Code, v_GutiParameters.M_TMSI))); + } + + /* + * @desc Trigger SS to send paging request to UE + * @param p_CellId + * @param p_PagingRecordList + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_UE_Page(EUTRA_CellId_Type p_CellId, + template (value) PagingRecordList p_PagingRecordList) runs on EUTRA_PTC + { + var PCCH_Config v_SI_Pcch_Configuration; + var EUTRA_FDD_TDD_Mode_Type v_EUTRA_FDD_TDD_Mode; + var PCCH_Config.defaultPagingCycle v_PagingCycle; + var SubFrameTiming_Type v_CurrentTiming; + var SubFrameTimingList_Type v_PoList; + var hexstring v_Imsi := px_IMSI_Def; + + f_Delay(tsc_EUTRA_DelayForCellSelection); // @sic R5s110306 sic@ + + //Derive FDD or TDD mode from Cell-configuration + v_EUTRA_FDD_TDD_Mode := f_EUTRA_CellInfo_GetFDD_TDD(p_CellId); + + //Derive DRX params from SYS Info + v_SI_Pcch_Configuration := f_EUTRA_CellInfo_GetPCCH_ConfigInSYSINFO(p_CellId); + + // @sic R5s100240 : Removed derivation of UE specicif drx parameters. Calculation of smallest paging cycle is modified. sic@ + + //Set the Pagingcycle + v_PagingCycle := v_SI_Pcch_Configuration.defaultPagingCycle; + + //Get current SFN and subframe + v_CurrentTiming := f_EUTRA_GetCurrentTiming(p_CellId); + + //Calculate next Paging Occassion + v_PoList := f_EUTRA_Calculate_PF_PO(v_CurrentTiming.SFN.Number, v_PagingCycle, v_SI_Pcch_Configuration.nB, v_Imsi, v_EUTRA_FDD_TDD_Mode); + + SYS.send(cas_CellConfig_Paging_REQ(p_CellId, v_PoList[0], p_PagingRecordList)); + + /* @sic R5s100135 CNF removed sic@ */ + } + +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_PdcchConfig.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_PdcchConfig.ttcn new file mode 100644 index 0000000..00e964a --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_PdcchConfig.ttcn @@ -0,0 +1,928 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-03-04 17:24:59 +0100 (Tue, 04 Mar 2014) $ +// $Rev: 10861 $ +/******************************************************************************/ + +module EUTRA_PdcchConfig { + + import from EUTRA_CommonDefs all; + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_ASP_TypeDefs all; + import from CommonDefs all; + + template (value) CCE_StartIndex_DL_UL_Type cs_CCE_StartIndex_DL_UL(integer p_DL_StartIndex, + integer p_UL_StartIndex) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + CCE_StartIndex_DL := p_DL_StartIndex, + CCE_StartIndex_UL := p_UL_StartIndex + }; + + template (value) PdcchCandidateList_Type cs_PdcchCandidateList_FDD_5MHz := + { /* @sic R5-101050: introduction of candidates for 10MHz sic@ + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + { + tsc_C_RNTI_Def, // 4097 ('1001'H) + { + cs_CCE_StartIndex_DL_UL(12, 14), // subframe 0 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 1 + cs_CCE_StartIndex_DL_UL(14, 16), // subframe 2 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 3 + cs_CCE_StartIndex_DL_UL(12, 14), // subframe 4 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 5 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 6 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 7 + cs_CCE_StartIndex_DL_UL(14, 16), // subframe 8 + cs_CCE_StartIndex_DL_UL(10, 12) // subframe 9 + } + }, + { + tsc_C_RNTI_Def2, // 4148 ('1034'H) + { + cs_CCE_StartIndex_DL_UL(12, 14), // subframe 0 + cs_CCE_StartIndex_DL_UL(16, 18), // subframe 1 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 2 + cs_CCE_StartIndex_DL_UL(14, 16), // subframe 3 + cs_CCE_StartIndex_DL_UL(10, 12), // subframe 4 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 5 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 6 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 7 + cs_CCE_StartIndex_DL_UL(18, 8), // subframe 8 + cs_CCE_StartIndex_DL_UL(16, 18) // subframe 9 + } + }, + { + tsc_C_RNTI_Def3, // 4369 ('1111'H) + { + cs_CCE_StartIndex_DL_UL(16, 18), // subframe 0 + cs_CCE_StartIndex_DL_UL(10, 12), // subframe 1 + cs_CCE_StartIndex_DL_UL(14, 16), // subframe 2 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 3 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 4 + cs_CCE_StartIndex_DL_UL(10, 12), // subframe 5 + cs_CCE_StartIndex_DL_UL(14, 16), // subframe 6 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 7 + cs_CCE_StartIndex_DL_UL(18, 8), // subframe 8 + cs_CCE_StartIndex_DL_UL( 8, 10) // subframe 9 + } + }, + { + tsc_C_RNTI_Def4, // 8177 ('1FF1'H) + { + cs_CCE_StartIndex_DL_UL(12, 14), // subframe 0 + cs_CCE_StartIndex_DL_UL(12, 14), // subframe 1 + cs_CCE_StartIndex_DL_UL(18, 8), // subframe 2 + cs_CCE_StartIndex_DL_UL(16, 18), // subframe 3 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 4 + cs_CCE_StartIndex_DL_UL(18, 8), // subframe 5 + cs_CCE_StartIndex_DL_UL(18, 8), // subframe 6 + cs_CCE_StartIndex_DL_UL(18, 8), // subframe 7 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 8 + cs_CCE_StartIndex_DL_UL( 8, 10) // subframe 9 + } + }, + { + tsc_C_RNTI_Def5, // 1234 ('04D2'H) + { + cs_CCE_StartIndex_DL_UL(10, 12), // subframe 0 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 1 + cs_CCE_StartIndex_DL_UL(10, 12), // subframe 2 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 3 + cs_CCE_StartIndex_DL_UL(14, 16), // subframe 4 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 5 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 6 + cs_CCE_StartIndex_DL_UL(14, 16), // subframe 7 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 8 + cs_CCE_StartIndex_DL_UL(10, 12) // subframe 9 + } + }, + { + tsc_C_RNTI_Def6, // 2345 ('0929'H) + { + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 0 + cs_CCE_StartIndex_DL_UL(10, 12), // subframe 1 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 2 + cs_CCE_StartIndex_DL_UL(12, 14), // subframe 3 + cs_CCE_StartIndex_DL_UL(14, 16), // subframe 4 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 5 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 6 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 7 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 8 + cs_CCE_StartIndex_DL_UL( 8, 10) // subframe 9 + } + }, + { + tsc_C_RNTI_Def7, // 3456 ('0D80'H) + { + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 0 + cs_CCE_StartIndex_DL_UL(16, 18), // subframe 1 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 2 + cs_CCE_StartIndex_DL_UL(18, 8), // subframe 3 + cs_CCE_StartIndex_DL_UL(14, 16), // subframe 4 + cs_CCE_StartIndex_DL_UL(14, 16), // subframe 5 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 6 + cs_CCE_StartIndex_DL_UL(16, 18), // subframe 7 + cs_CCE_StartIndex_DL_UL(14, 16), // subframe 8 + cs_CCE_StartIndex_DL_UL( 8, 10) // subframe 9 + } + }, + { + tsc_C_RNTI_Def8, // 4567 ('11D7'H) + { + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 0 + cs_CCE_StartIndex_DL_UL(16, 18), // subframe 1 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 2 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 3 + cs_CCE_StartIndex_DL_UL(14, 16), // subframe 4 + cs_CCE_StartIndex_DL_UL(16, 18), // subframe 5 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 6 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 7 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 8 + cs_CCE_StartIndex_DL_UL( 8, 10) // subframe 9 + } + }, + { + tsc_C_RNTI_Def9, // 5678 ('162E'H) + { + cs_CCE_StartIndex_DL_UL(12, 14), // subframe 0 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 1 + cs_CCE_StartIndex_DL_UL(12, 14), // subframe 2 + cs_CCE_StartIndex_DL_UL(16, 18), // subframe 3 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 4 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 5 + cs_CCE_StartIndex_DL_UL(16, 18), // subframe 6 + cs_CCE_StartIndex_DL_UL(18, 8), // subframe 7 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 8 + cs_CCE_StartIndex_DL_UL( 8, 10) // subframe 9 + } + }, + { + tsc_C_RNTI_Def10, // 6789 ('1A85'H) + { + cs_CCE_StartIndex_DL_UL(16, 18), // subframe 0 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 1 + cs_CCE_StartIndex_DL_UL(16, 18), // subframe 2 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 3 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 4 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 5 + cs_CCE_StartIndex_DL_UL(16, 18), // subframe 6 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 7 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 8 + cs_CCE_StartIndex_DL_UL( 8, 10) // subframe 9 + } + } + }; + + + template (value) PdcchCandidateList_Type cs_PdcchCandidateList_FDD_10MHz := + { /* @sic R5-101050: introduction of candidates for 10MHz sic@ + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + { + tsc_C_RNTI_Def, // 4097 ('1001'H) + { + cs_CCE_StartIndex_DL_UL(12, 14), // subframe 0 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 1 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 2 + cs_CCE_StartIndex_DL_UL(20, 22), // subframe 3 + cs_CCE_StartIndex_DL_UL(16, 18), // subframe 4 + cs_CCE_StartIndex_DL_UL(18, 20), // subframe 5 + cs_CCE_StartIndex_DL_UL(16, 18), // subframe 6 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 7 + cs_CCE_StartIndex_DL_UL(14, 16), // subframe 8 + cs_CCE_StartIndex_DL_UL(18, 20) // subframe 9 + } + }, + { + tsc_C_RNTI_Def2, // 4148 ('1034'H) + { + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 0 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 1 + cs_CCE_StartIndex_DL_UL(20, 22), // subframe 2 + cs_CCE_StartIndex_DL_UL(10, 12), // subframe 3 + cs_CCE_StartIndex_DL_UL(14, 16), // subframe 4 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 5 + cs_CCE_StartIndex_DL_UL(20, 22), // subframe 6 + cs_CCE_StartIndex_DL_UL(22, 8), // subframe 7 + cs_CCE_StartIndex_DL_UL(18, 20), // subframe 8 + cs_CCE_StartIndex_DL_UL( 8, 10) // subframe 9 + } + }, + { + tsc_C_RNTI_Def3, // 4369 ('1111'H) + { + cs_CCE_StartIndex_DL_UL(16, 18), // subframe 0 + cs_CCE_StartIndex_DL_UL(10, 12), // subframe 1 + cs_CCE_StartIndex_DL_UL(10, 12), // subframe 2 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 3 + cs_CCE_StartIndex_DL_UL(22, 8), // subframe 4 + cs_CCE_StartIndex_DL_UL(22, 8), // subframe 5 + cs_CCE_StartIndex_DL_UL(22, 8), // subframe 6 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 7 + cs_CCE_StartIndex_DL_UL(10, 12), // subframe 8 + cs_CCE_StartIndex_DL_UL(16, 18) // subframe 9 + } + }, + { + tsc_C_RNTI_Def4, // 8177 ('1FF1'H) + { + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 0 + cs_CCE_StartIndex_DL_UL(20, 22), // subframe 1 + cs_CCE_StartIndex_DL_UL(14, 16), // subframe 2 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 3 + cs_CCE_StartIndex_DL_UL(10, 12), // subframe 4 + cs_CCE_StartIndex_DL_UL(18, 20), // subframe 5 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 6 + cs_CCE_StartIndex_DL_UL(22, 8), // subframe 7 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 8 + cs_CCE_StartIndex_DL_UL(12, 14) // subframe 9 + } + }, + { + tsc_C_RNTI_Def5, // 1234 ('04D2'H) + { + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 0 + cs_CCE_StartIndex_DL_UL(16, 18), // subframe 1 + cs_CCE_StartIndex_DL_UL(22, 8), // subframe 2 + cs_CCE_StartIndex_DL_UL(12, 14), // subframe 3 + cs_CCE_StartIndex_DL_UL(22, 8), // subframe 4 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 5 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 6 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 7 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 8 + cs_CCE_StartIndex_DL_UL(22, 8) // subframe 9 + } + }, + { + tsc_C_RNTI_Def6, // 2345 ('0929'H) + { + cs_CCE_StartIndex_DL_UL(20, 22), // subframe 0 + cs_CCE_StartIndex_DL_UL(18, 20), // subframe 1 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 2 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 3 + cs_CCE_StartIndex_DL_UL(18, 20), // subframe 4 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 5 + cs_CCE_StartIndex_DL_UL(18, 20), // subframe 6 + cs_CCE_StartIndex_DL_UL(22, 8), // subframe 7 + cs_CCE_StartIndex_DL_UL(12, 14), // subframe 8 + cs_CCE_StartIndex_DL_UL( 8, 10) // subframe 9 + } + }, + { + tsc_C_RNTI_Def7, // 3456 ('0D80'H) + { + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 0 + cs_CCE_StartIndex_DL_UL(20, 22), // subframe 1 + cs_CCE_StartIndex_DL_UL(20, 22), // subframe 2 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 3 + cs_CCE_StartIndex_DL_UL(14, 16), // subframe 4 + cs_CCE_StartIndex_DL_UL(22, 8), // subframe 5 + cs_CCE_StartIndex_DL_UL(10, 12), // subframe 6 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 7 + cs_CCE_StartIndex_DL_UL(18, 20), // subframe 8 + cs_CCE_StartIndex_DL_UL( 8, 10) // subframe 9 + } + }, + { + tsc_C_RNTI_Def8, // 4567 ('11D7'H) + { + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 0 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 1 + cs_CCE_StartIndex_DL_UL(12, 14), // subframe 2 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 3 + cs_CCE_StartIndex_DL_UL(10, 12), // subframe 4 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 5 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 6 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 7 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 8 + cs_CCE_StartIndex_DL_UL(20, 22) // subframe 9 + } + }, + { + tsc_C_RNTI_Def9, // 5678 ('162E'H) + { + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 0 + cs_CCE_StartIndex_DL_UL(10, 12), // subframe 1 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 2 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 3 + cs_CCE_StartIndex_DL_UL(16, 18), // subframe 4 + cs_CCE_StartIndex_DL_UL(16, 18), // subframe 5 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 6 + cs_CCE_StartIndex_DL_UL(14, 16), // subframe 7 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 8 + cs_CCE_StartIndex_DL_UL(16, 18) // subframe 9 + } + }, + { + tsc_C_RNTI_Def10, // 6789 ('1A85'H) + { + cs_CCE_StartIndex_DL_UL(12, 14), // subframe 0 + cs_CCE_StartIndex_DL_UL(12, 14), // subframe 1 + cs_CCE_StartIndex_DL_UL(20, 22), // subframe 2 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 3 + cs_CCE_StartIndex_DL_UL(12, 14), // subframe 4 + cs_CCE_StartIndex_DL_UL(18, 20), // subframe 5 + cs_CCE_StartIndex_DL_UL(20, 22), // subframe 6 + cs_CCE_StartIndex_DL_UL(10, 12), // subframe 7 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 8 + cs_CCE_StartIndex_DL_UL(12, 14) // subframe 9 + } + } + }; + + template (value) PdcchCandidateList_Type cs_PdcchCandidateList_FDD_15MHz := + { /* @sic R5s120135: introduction of candidates for 15MHz sic@ + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + { + tsc_C_RNTI_Def, // 4097 ('1001'H) + { + cs_CCE_StartIndex_DL_UL(8, 10), // subframe 0 + cs_CCE_StartIndex_DL_UL(14, 16), // subframe 1 + cs_CCE_StartIndex_DL_UL(14, 16), // subframe 2 + cs_CCE_StartIndex_DL_UL(20, 22), // subframe 3 + cs_CCE_StartIndex_DL_UL(16, 18), // subframe 4 + cs_CCE_StartIndex_DL_UL(18, 20), // subframe 5 + cs_CCE_StartIndex_DL_UL(28, 30), // subframe 6 + cs_CCE_StartIndex_DL_UL( 20, 22), // subframe 7 + cs_CCE_StartIndex_DL_UL( 26, 28), // subframe 8 + cs_CCE_StartIndex_DL_UL(30, 32) // subframe 9 + } + }, //@sic R5-141113 2 more default C-RNTI's introduced sic@ + { + tsc_C_RNTI_Def2, // 4148 ('1034'H) + { + cs_CCE_StartIndex_DL_UL( 32, 34), // subframe 0 + cs_CCE_StartIndex_DL_UL( 12, 14), // subframe 1 + cs_CCE_StartIndex_DL_UL(20, 22), // subframe 2 + cs_CCE_StartIndex_DL_UL(34, 8), // subframe 3 + cs_CCE_StartIndex_DL_UL(14, 16), // subframe 4 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 5 + cs_CCE_StartIndex_DL_UL(8, 10), // subframe 6 + cs_CCE_StartIndex_DL_UL(10, 12), // subframe 7 + cs_CCE_StartIndex_DL_UL(30, 32), // subframe 8 + cs_CCE_StartIndex_DL_UL(32, 34) // subframe 9 + } + }, + { + tsc_C_RNTI_Def3, // 4369 ('1111'H) + { + cs_CCE_StartIndex_DL_UL(16, 18), // subframe 0 + cs_CCE_StartIndex_DL_UL(22, 24), // subframe 1 + cs_CCE_StartIndex_DL_UL(22, 24), // subframe 2 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 3 + cs_CCE_StartIndex_DL_UL(10, 12), // subframe 4 + cs_CCE_StartIndex_DL_UL(22, 24), // subframe 5 + cs_CCE_StartIndex_DL_UL(34, 8), // subframe 6 + cs_CCE_StartIndex_DL_UL(28, 30), // subframe 7 + cs_CCE_StartIndex_DL_UL(34, 8), // subframe 8 + cs_CCE_StartIndex_DL_UL(28, 30) // subframe 9 + } + } + }; + + template (value) PdcchCandidateList_Type cs_PdcchCandidateList_FDD_20MHz := + { /* @sic R5s100137: introduction of candidates for 20MHz sic@ + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + { + tsc_C_RNTI_Def, // 4097 ('1001'H) + { + cs_CCE_StartIndex_DL_UL(8, 10), // subframe 0 + cs_CCE_StartIndex_DL_UL(36, 38), // subframe 1 + cs_CCE_StartIndex_DL_UL(34, 36), // subframe 2 + cs_CCE_StartIndex_DL_UL(38, 40), // subframe 3 + cs_CCE_StartIndex_DL_UL(42, 44), // subframe 4 + cs_CCE_StartIndex_DL_UL(22, 24), // subframe 5 + cs_CCE_StartIndex_DL_UL(10, 12), // subframe 6 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 7 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 8 + cs_CCE_StartIndex_DL_UL(20, 22) // subframe 9 + } + }, //@sic R5-141113 2 more default C-RNTI's introduced sic@ + { + tsc_C_RNTI_Def2, // 4148 ('1034'H) + { + cs_CCE_StartIndex_DL_UL(12, 14), // subframe 0 + cs_CCE_StartIndex_DL_UL(46, 48), // subframe 1 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 2 + cs_CCE_StartIndex_DL_UL(34, 36), // subframe 3 + cs_CCE_StartIndex_DL_UL(20, 22), // subframe 4 + cs_CCE_StartIndex_DL_UL(10, 12), // subframe 5 + cs_CCE_StartIndex_DL_UL(10, 12), // subframe 6 + cs_CCE_StartIndex_DL_UL(26, 28), // subframe 7 + cs_CCE_StartIndex_DL_UL(28, 30), // subframe 8 + cs_CCE_StartIndex_DL_UL( 8, 10) // subframe 9 + } + }, + { + tsc_C_RNTI_Def3, // 4369 ('1111'H) + { + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 0 + cs_CCE_StartIndex_DL_UL(20, 22), // subframe 1 + cs_CCE_StartIndex_DL_UL(24, 26), // subframe 2 + cs_CCE_StartIndex_DL_UL(34, 36), // subframe 3 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 4 + cs_CCE_StartIndex_DL_UL(10, 12), // subframe 5 + cs_CCE_StartIndex_DL_UL( 8, 10), // subframe 6 + cs_CCE_StartIndex_DL_UL(38, 40), // subframe 7 + cs_CCE_StartIndex_DL_UL(48, 8), // subframe 8 + cs_CCE_StartIndex_DL_UL(20, 22) // subframe 9 + } + } + }; + + template (value) PdcchCandidateList_Type cs_PdcchCandidateList_TDD_5MHz := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + + { + //@sic R5-125755 sic@ + tsc_C_RNTI_Def, // 4097 ('1001'H) + { + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 0 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 1 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 2 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 3 + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 4 + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 5 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 6 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 7 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 8 + cs_CCE_StartIndex_DL_UL( 8, 0) // subframe 9 + } + }, + { + tsc_C_RNTI_Def2, // 4148 ('1034'H) + { + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 0 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 1 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 2 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 3 + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 4 + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 5 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 6 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 7 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 8 + cs_CCE_StartIndex_DL_UL( 8, 0) // subframe 9 + } + }, + { + tsc_C_RNTI_Def3, // 4369 ('1111'H) + { + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 0 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 1 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 2 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 3 + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 4 + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 5 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 6 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 7 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 8 + cs_CCE_StartIndex_DL_UL( 8, 0) // subframe 9 + } + }, + { + tsc_C_RNTI_Def4, // 8177 ('1FF1'H) + { + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 0 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 1 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 2 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 3 + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 4 + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 5 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 6 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 7 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 8 + cs_CCE_StartIndex_DL_UL( 8, 0) // subframe 9 + } + }, + { + tsc_C_RNTI_Def5, // 1234 ('04D2'H) + { + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 0 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 1 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 2 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 3 + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 4 + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 5 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 6 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 7 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 8 + cs_CCE_StartIndex_DL_UL( 8, 0) // subframe 9 + } + }, + { + tsc_C_RNTI_Def6, // 2345 ('0929'H) + { + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 0 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 1 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 2 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 3 + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 4 + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 5 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 6 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 7 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 8 + cs_CCE_StartIndex_DL_UL( 8, 0) // subframe 9 + } + }, + { + tsc_C_RNTI_Def7, // 3456 ('0D80'H) + { + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 0 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 1 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 2 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 3 + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 4 + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 5 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 6 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 7 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 8 + cs_CCE_StartIndex_DL_UL( 8, 0) // subframe 9 + } + }, + { + tsc_C_RNTI_Def8, // 4567 ('11D7'H) + { + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 0 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 1 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 2 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 3 + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 4 + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 5 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 6 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 7 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 8 + cs_CCE_StartIndex_DL_UL( 8, 0) // subframe 9 + } + }, + { + tsc_C_RNTI_Def9, // 5678 ('162E'H) + { + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 0 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 1 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 2 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 3 + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 4 + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 5 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 6 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 7 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 8 + cs_CCE_StartIndex_DL_UL( 8, 0) // subframe 9 + } + }, + { + tsc_C_RNTI_Def10, // 6789 ('1A85'H) + { + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 0 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 1 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 2 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 3 + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 4 + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 5 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 6 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 7 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 8 + cs_CCE_StartIndex_DL_UL( 8, 0) // subframe 9 + } + } + }; + + template (value) PdcchCandidateList_Type cs_PdcchCandidateList_TDD_20MHz := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + { + tsc_C_RNTI_Def, // 4097 ('1001'H) + { + //@sic R5-125755 sic@ + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 0 + cs_CCE_StartIndex_DL_UL( 0, 8), // subframe 1 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 2 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 3 + cs_CCE_StartIndex_DL_UL(16, 24), // subframe 4 + cs_CCE_StartIndex_DL_UL( 24, 0), // subframe 5 + cs_CCE_StartIndex_DL_UL( 0, 16), // subframe 6 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 7 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 8 + cs_CCE_StartIndex_DL_UL(24, 32) // subframe 9 + } + }, + { + tsc_C_RNTI_Def2, // 4148 ('1034'H) + { + cs_CCE_StartIndex_DL_UL(32, 0), // subframe 0 + cs_CCE_StartIndex_DL_UL( 0,0), // subframe 1 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 2 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 3 + cs_CCE_StartIndex_DL_UL(8,16), // subframe 4 + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 5 + cs_CCE_StartIndex_DL_UL( 0,32), // subframe 6 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 7 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 8 + cs_CCE_StartIndex_DL_UL( 32,40) // subframe 9 + } + }, + { + tsc_C_RNTI_Def3, // 4369 ('1111'H) + { + cs_CCE_StartIndex_DL_UL(16, 0), // subframe 0 + cs_CCE_StartIndex_DL_UL( 0,40), // subframe 1 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 2 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 3 + cs_CCE_StartIndex_DL_UL( 40,0), // subframe 4 + cs_CCE_StartIndex_DL_UL( 40, 0), // subframe 5 + cs_CCE_StartIndex_DL_UL( 0,40), // subframe 6 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 7 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 8 + cs_CCE_StartIndex_DL_UL(16,24) // subframe 9 + } + }, + { + tsc_C_RNTI_Def4, // 8177 ('1FF1'H) + { + cs_CCE_StartIndex_DL_UL(16, 0), // subframe 0 + cs_CCE_StartIndex_DL_UL( 0,32), // subframe 1 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 2 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 3 + cs_CCE_StartIndex_DL_UL(40,0), // subframe 4 + cs_CCE_StartIndex_DL_UL(24, 0), // subframe 5 + cs_CCE_StartIndex_DL_UL( 0,8), // subframe 6 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 7 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 8 + cs_CCE_StartIndex_DL_UL(8,0) // subframe 9 + } + }, + { + tsc_C_RNTI_Def5, // 1234 ('04D2'H) + { + cs_CCE_StartIndex_DL_UL(8, 0), // subframe 0 + cs_CCE_StartIndex_DL_UL( 0,16), // subframe 1 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 2 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 3 + cs_CCE_StartIndex_DL_UL(40,0), // subframe 4 + cs_CCE_StartIndex_DL_UL(16, 0), // subframe 5 + cs_CCE_StartIndex_DL_UL( 0,8), // subframe 6 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 7 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 8 + cs_CCE_StartIndex_DL_UL(40,0) // subframe 9 + } + }, + { + tsc_C_RNTI_Def6, // 2345 ('0929'H) + { + cs_CCE_StartIndex_DL_UL(32, 0), // subframe 0 + cs_CCE_StartIndex_DL_UL( 0,24), // subframe 1 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 2 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 3 + cs_CCE_StartIndex_DL_UL(24,32), // subframe 4 + cs_CCE_StartIndex_DL_UL( 24, 0), // subframe 5 + cs_CCE_StartIndex_DL_UL( 0,24), // subframe 6 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 7 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 8 + cs_CCE_StartIndex_DL_UL( 16,24) // subframe 9 + } + }, + { + tsc_C_RNTI_Def7, // 3456 ('0D80'H) + { + cs_CCE_StartIndex_DL_UL(8, 0), // subframe 0 + cs_CCE_StartIndex_DL_UL( 0,32), // subframe 1 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 2 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 3 + cs_CCE_StartIndex_DL_UL(8,16), // subframe 4 + cs_CCE_StartIndex_DL_UL(40, 0), // subframe 5 + cs_CCE_StartIndex_DL_UL( 0,40), // subframe 6 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 7 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 8 + cs_CCE_StartIndex_DL_UL(8,0) // subframe 9 + } + }, + { + tsc_C_RNTI_Def8, // 4567 ('11D7'H) + { + cs_CCE_StartIndex_DL_UL( 16, 0), // subframe 0 + cs_CCE_StartIndex_DL_UL( 0,32), // subframe 1 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 2 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 3 + cs_CCE_StartIndex_DL_UL( 40,0), // subframe 4 + cs_CCE_StartIndex_DL_UL(8, 0), // subframe 5 + cs_CCE_StartIndex_DL_UL( 0,8), // subframe 6 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 7 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 8 + cs_CCE_StartIndex_DL_UL(32,40) // subframe 9 + } + }, + { + tsc_C_RNTI_Def9, // 5678 ('162E'H) + { + cs_CCE_StartIndex_DL_UL(32, 0), // subframe 0 + cs_CCE_StartIndex_DL_UL( 0,40), // subframe 1 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 2 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 3 + cs_CCE_StartIndex_DL_UL(16, 24), // subframe 4 + cs_CCE_StartIndex_DL_UL(16, 0), // subframe 5 + cs_CCE_StartIndex_DL_UL( 0,16), // subframe 6 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 7 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 8 + cs_CCE_StartIndex_DL_UL(16,24) // subframe 9 + } + }, + { + tsc_C_RNTI_Def10, // 6789 ('1A85'H) + { + cs_CCE_StartIndex_DL_UL(8, 0), // subframe 0 + cs_CCE_StartIndex_DL_UL( 0,0), // subframe 1 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 2 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 3 + cs_CCE_StartIndex_DL_UL(8, 0), // subframe 4 + cs_CCE_StartIndex_DL_UL(24, 0), // subframe 5 + cs_CCE_StartIndex_DL_UL( 0,32), // subframe 6 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 7 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 8 + cs_CCE_StartIndex_DL_UL(8,0) // subframe 9 + } + } + }; + + template (value) PdcchCandidateList_Type cs_PdcchCandidateList_TDD_10MHz := + { /* @sic R5s120135: introduction of candidates for 15MHz sic@ + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + { + //@sic R5-125755 sic@ + tsc_C_RNTI_Def, // 4097 ('1001'H) + { + cs_CCE_StartIndex_DL_UL(8, 0), // subframe 0 + cs_CCE_StartIndex_DL_UL(0, 8), // subframe 1 + cs_CCE_StartIndex_DL_UL(0, 0), // subframe 2 + cs_CCE_StartIndex_DL_UL(0, 0), // subframe 3 + cs_CCE_StartIndex_DL_UL(16, 0), // subframe 4 + cs_CCE_StartIndex_DL_UL(8, 0), // subframe 5 + cs_CCE_StartIndex_DL_UL(0,16), // subframe 6 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 7 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 8 + cs_CCE_StartIndex_DL_UL(8, 0) // subframe 9 + } + }, + { //@sic R5-141113 added 2 additional C-RNTI's sic@ + tsc_C_RNTI_Def2, // 4148 ('1034'H) + { + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 0 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 1 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 2 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 3 + cs_CCE_StartIndex_DL_UL(8, 16), // subframe 4 + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 5 + cs_CCE_StartIndex_DL_UL( 0,8), // subframe 6 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 7 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 8 + cs_CCE_StartIndex_DL_UL( 8, 16) // subframe 9 + } + }, + { + tsc_C_RNTI_Def3, // 4369 ('1111'H) + { + cs_CCE_StartIndex_DL_UL(16, 0), // subframe 0 + cs_CCE_StartIndex_DL_UL( 0,16), // subframe 1 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 2 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 3 + cs_CCE_StartIndex_DL_UL(16, 0), // subframe 4 + cs_CCE_StartIndex_DL_UL(16, 0), // subframe 5 + cs_CCE_StartIndex_DL_UL( 0,16), // subframe 6 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 7 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 8 + cs_CCE_StartIndex_DL_UL(16, 0) // subframe 9 + } + } + }; + + template (value) PdcchCandidateList_Type cs_PdcchCandidateList_TDD_15MHz := + { /* @sic R5s120135: introduction of candidates for 15MHz sic@ + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + { + //@sic R5-125755 sic@ + tsc_C_RNTI_Def, // 4097 ('1001'H) + { + cs_CCE_StartIndex_DL_UL(8, 0), // subframe 0 + cs_CCE_StartIndex_DL_UL(0, 8), // subframe 1 + cs_CCE_StartIndex_DL_UL(0, 0), // subframe 2 + cs_CCE_StartIndex_DL_UL(0, 0), // subframe 3 + cs_CCE_StartIndex_DL_UL(8, 0), // subframe 4 + cs_CCE_StartIndex_DL_UL(8, 0), // subframe 5 + cs_CCE_StartIndex_DL_UL(0, 0), // subframe 6 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 7 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 8 + cs_CCE_StartIndex_DL_UL(8, 16) // subframe 9 + } + }, + { //@sic R5-141113 added 2 additional C-RNTI's sic@ + tsc_C_RNTI_Def2, // 4148 ('1034'H) + { + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 0 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 1 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 2 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 3 + cs_CCE_StartIndex_DL_UL(24, 0), // subframe 4 + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 5 + cs_CCE_StartIndex_DL_UL( 0,16), // subframe 6 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 7 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 8 + cs_CCE_StartIndex_DL_UL( 8, 0) // subframe 9 + } + }, + { + tsc_C_RNTI_Def3, // 4369 ('1111'H) + { + cs_CCE_StartIndex_DL_UL(24, 0), // subframe 0 + cs_CCE_StartIndex_DL_UL( 0,8), // subframe 1 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 2 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 3 + cs_CCE_StartIndex_DL_UL(24, 0), // subframe 4 + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 5 + cs_CCE_StartIndex_DL_UL( 0,24), // subframe 6 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 7 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 8 + cs_CCE_StartIndex_DL_UL( 8, 0) // subframe 9 + } + } + }; + + /* + * @desc initialise PDCCH configuration + * @param p_FDD_TDD + * @param p_Dl_Bandwidth + * @param p_RelativeTxPower + * @return template (value) PdcchConfig_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_PdcchConfig_Init(EUTRA_FDD_TDD_Mode_Type p_FDD_TDD, + Dl_Bandwidth_Type p_Dl_Bandwidth, /* p_Dl_Bandwidth = n6, n15, n25, n50, n75, n100 */ + template (value) ToRS_EPRE_Ratios_Type p_RelativeTxPower) return template (value) PdcchConfig_Type + { + /* @sic R5-101050: additional parameter to support other bandwidth than 5MHz sic@ */ + var template (value) PdcchConfig_Type v_PdcchConfig; + var template (value) PdcchCandidateList_Type v_PdcchCandidateList; + + select (p_FDD_TDD) { + case (FDD) { + select (p_Dl_Bandwidth) { + case (n25) { // 5MHz + v_PdcchCandidateList := cs_PdcchCandidateList_FDD_5MHz; + } + case (n50) { // 10MHz + v_PdcchCandidateList := cs_PdcchCandidateList_FDD_10MHz; + } + case (n75) { // 15MHz; @sic R5s120135 sic@ + v_PdcchCandidateList := cs_PdcchCandidateList_FDD_15MHz; + } + case (n100) { // 20MHz; @sic R5s100137 sic@ + v_PdcchCandidateList := cs_PdcchCandidateList_FDD_20MHz; + } + case else { + FatalError(__FILE__, __LINE__, "fl_PdcchCandidateList_FDD: bandwidth not supported"); + } + } + } + case (TDD) { + select (p_Dl_Bandwidth) { + case (n25) { // 5MHz + v_PdcchCandidateList := cs_PdcchCandidateList_TDD_5MHz; + } + //@sic R5-141113 sic@ + case (n50) { // 10MHz + v_PdcchCandidateList := cs_PdcchCandidateList_TDD_10MHz; + } + case (n75) { // 15MHz; @sic R5s120135 sic@ + v_PdcchCandidateList := cs_PdcchCandidateList_TDD_15MHz; + } + case (n100) { // 20MHz; @sic R5-102223 sic@ + v_PdcchCandidateList := cs_PdcchCandidateList_TDD_20MHz; + } + case else { + FatalError(__FILE__, __LINE__, "fl_PdcchCandidateList_FDD: bandwidth not supported"); + } + } + } + } + //@sic R5-125755 sic@ + if (p_FDD_TDD == FDD) + { + v_PdcchConfig := { + CommonSearchSpaceFormat := 2, + UeSpecificSearchSpaceFormat := 1, + PdcchCandidateList := v_PdcchCandidateList, + RelativeTxPower := p_RelativeTxPower + }; + } else // TDD + { + v_PdcchConfig := { + CommonSearchSpaceFormat := 3, + UeSpecificSearchSpaceFormat := 3, + PdcchCandidateList := v_PdcchCandidateList, + RelativeTxPower := p_RelativeTxPower + }; + } + return v_PdcchConfig; + }; + +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_RRCSteps.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_RRCSteps.ttcn new file mode 100644 index 0000000..76fae8d --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_RRCSteps.ttcn @@ -0,0 +1,1857 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-07 18:37:49 +0200 (Sun, 07 Sep 2014) $ +// $Rev: 12081 $ +/******************************************************************************/ + +module EUTRA_RRCSteps { + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from EUTRA_ASP_SrbDefs all; + import from EUTRA_ASP_TypeDefs all; + import from EPS_NAS_MsgContainers all; + import from EUTRA_Component all; + import from EUTRA_CellInfo all; + import from EUTRA_AspCommon_Templates all; + import from EUTRA_SRB_Templates all; + import from EUTRA_SecuritySteps all; + import from EUTRA_RRC_Templates all; + import from EUTRA_CellCfg_Templates all; + import from Parameters all; + import from EUTRA_ConfigurationSteps all; + import from EUTRA_Paging all; + import from EUTRA_Timing all; + import from EUTRA_DRB_Templates all; + import from EUTRA_SecurityFunctions all; + import from EUTRA_CapabilityFunctions all; + import from TestcaseProperties all; + + //---------------------------------------------------------------------------- + type record DRB_IdentityList_AllAndAMonly_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + DRB_IdentityList_Type All, + DRB_IdentityList_Type AMonly + }; + + type record length(63) of octetstring WarningMessageSegment_List; /* @status APPROVED (LTE) */ + + const WarningType_Type tsc_WarningType_EartQ_Tsunami := '0580'O; /* ETWS warning type: Earthquake and Tsunami, Activate emergency user alert, Activate Popup + @status APPROVED (LTE) */ + + /* + * @desc local function to get list of all DRBs and list of AM DRBs + * @param p_DrbConfigList + * @return DRB_IdentityList_AllAndAMonly_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_DRB_IdentityList(template (value) RadioBearerList_Type p_DrbConfigList) return DRB_IdentityList_AllAndAMonly_Type + { + var DRB_IdentityList_AllAndAMonly_Type v_DRB_IdentityList; + var DRB_Identity v_DRB_Identity; + var integer k; + var integer i := 0; + + v_DRB_IdentityList.All := {}; // @sic R5s120207 sic@ + v_DRB_IdentityList.AMonly := {}; // @sic R5s120207 sic@ + + for (k:=0; k < lengthof(p_DrbConfigList); k:= k+1) { + v_DRB_Identity := valueof(p_DrbConfigList[k].Id.Drb); + v_DRB_IdentityList.All[k] := v_DRB_Identity; + if (ischosen(p_DrbConfigList[k].Config.AddOrReconfigure.Rlc.Rb.AM)) { + v_DRB_IdentityList.AMonly[i] := v_DRB_Identity; + i := i+1; + } + } + return v_DRB_IdentityList; + } + + //---------------------------------------------------------------------------- + /* + * @desc common function to await RRC Connection Request sent by the UE; + * when a running timer is handed over, this is used as watchdog. + * @param p_CellId + * @param p_Timer (by reference) + * @param p_EstablishmentCause (default value: cr_EstablishmentCause_Any) + * @param p_InitialUE_Identity (default value: ?) + * @return boolean .. true when the RRC Connection Request has been received (before expiry of the timer) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_RRC_ConnectionRequest_Common(EUTRA_CellId_Type p_CellId, + timer p_Timer, + template (present) EstablishmentCause p_EstablishmentCause := cr_EstablishmentCause_Any, + template InitialUE_Identity p_InitialUE_Identity := ?) runs on EUTRA_PTC return boolean + { /* common procedure to receive the initial RRC connection request for an expected RRC connection establishment procedure; + when RRC connection setup is not explicitly sent from TTCN but is preconfigured at the SS to be sent together with the contention resolution, + the default UL grant configuration is configured at the SS */ + var template (value) PUCCH_Synch_Type v_PUCCH_Synch; + var template (value) DciUlInfo_Type v_ULDCIInfo; + var boolean v_TimerIsRunning := p_Timer.running; + + if (not f_EUTRA_DlCcchMsgInSeparateMacPdu()) { + v_PUCCH_Synch := cs_PUCCH_Synch_None; /* @sic R5s120121 sic@ */ + v_ULDCIInfo := f_EUTRA_DciUlInfo_Get(); + f_EUTRA_SS_CommonCellConfig(p_CellId, cas_ULGrantAllocation_REQ(p_CellId, cs_TimingInfo_Now, v_ULDCIInfo, v_PUCCH_Synch, -, tsc_NoCnfReq)); /* @sic R5s140676 Change 2: v_ULDCIInfo sic@ */ + } + + alt { + [] SRB.receive(car_SRB0_RrcPdu_IND(p_CellId, + cr_RRCConnectionRequest(p_EstablishmentCause, p_InitialUE_Identity))) + { + p_Timer.stop; /* NOTE: acc. to ES 201 873-1 cl. 23.3 the timer can be stopped even if it has not been started before */ + return true; + } + [v_TimerIsRunning] p_Timer.timeout + { + } + } + return false; + } + + /* + * @desc await RRC Connection Request sent by the UE; staight foreward case without watchdog timer + * @param p_CellId + * @param p_EstablishmentCause (default value: cr_EstablishmentCause_Any) + * @param p_InitialUE_Identity (default value: ?) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_RRC_ConnectionRequest_Def(EUTRA_CellId_Type p_CellId, + template (present) EstablishmentCause p_EstablishmentCause := cr_EstablishmentCause_Any, + template InitialUE_Identity p_InitialUE_Identity := ?) runs on EUTRA_PTC + { + timer t_Dummy; // timer which is not started + f_EUTRA_RRC_ConnectionRequest_Common(p_CellId, t_Dummy, p_EstablishmentCause, p_InitialUE_Identity); + } + + //---------------------------------------------------------------------------- + /* + * @desc Check whether RRCConnectionRequest is received in the given cell within the given time + * NOTE: this function shall be used in general when it shall be checked that there is no RRCConnectionRequest; + * therefore the p_CellId id "template (present)"; + * to receive the initial RRCConnectionRequest for an expected RRC connection establishment procedure + * f_EUTRA_RRC_ConnectionRequest_Def or f_EUTRA_RRC_ConnectionRequest_Common shall be used + * @param p_CellId + * @param p_TimerValue .. time to wait for RRCConnectionRequest in milleseconds + * @param p_EstablishmentCause (default value: cr_EstablishmentCause_Any) + * @param p_JustCheck .. just check for RRCConnectionRequest - don't receive it from the input queue + * @return boolean .. true when there has been a RRCConnectionRequest in the given time + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_RRC_RRCConnectionRequest_Check(template (present) EUTRA_CellId_Type p_CellId, + float p_TimerValue, + template (present) EstablishmentCause p_EstablishmentCause := cr_EstablishmentCause_Any, + boolean p_JustCheck := false) + runs on EUTRA_PTC return boolean + { /* @sic R5s120483 sic@ */ + var template SRB_COMMON_IND v_SRB0_RrcPdu_IND := car_SRB0_RrcPdu_IND(p_CellId, cr_RRCConnectionRequest(p_EstablishmentCause)); + + timer t_Wait; + t_Wait.start(p_TimerValue); + alt { + // receive RRC Connection Request on SRB0 (CCCH): + [not p_JustCheck] SRB.receive(v_SRB0_RrcPdu_IND) + { + t_Wait.stop; + return true; + } + [p_JustCheck] SRB.check(receive(v_SRB0_RrcPdu_IND)) + { + t_Wait.stop; + return true; + } + [] t_Wait.timeout + { + } + } + return false; + } + + //---------------------------------------------------------------------------- + /* + * @desc send RRC connection setup + * @param p_CellId + * @param p_TimingInfo + * @param p_RRC_TI + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_RRC_ConnectionSetup_Def(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now, + RRC_TransactionIdentifier p_RRC_TI := tsc_RRC_TI_Def) runs on EUTRA_PTC + { + if (f_EUTRA_DlCcchMsgInSeparateMacPdu()) { /* @sic R5-120721 change 3 sic@ */ + + // switch on UL grant assignments + f_EUTRA_StartDefULGrantTransmission(p_CellId); + + SRB.send(cas_SRB0_RrcPdu_REQ(p_CellId, + p_TimingInfo, + f_EUTRA_508_RRCConnectionSetup(p_CellId, p_RRC_TI))); /* @sic R5-120721 change 3 sic@ */ + } + } + + //---------------------------------------------------------------------------- + /* + * @desc receive RRCConnectionSetupComplete + * @param p_CellId + * @param p_ExpectedRRCConnectionSetupComplete + * @param p_ExpectedNasIndication + * @return NAS_MSG_Indication_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_RRCConnectionSetupComplete_Def(EUTRA_CellId_Type p_CellId, + template (present) UL_DCCH_Message p_ExpectedRRCConnectionSetupComplete, + template (present) NAS_MSG_Indication_Type p_ExpectedNasIndication) + runs on EUTRA_PTC return NAS_MSG_Indication_Type + { + var NAS_MSG_Indication_Type v_NAS_Ind; + var SRB_COMMON_IND v_ReceivedAsp; + + SRB.receive(car_SRB1_RrcNasPdu_IND(p_CellId, p_ExpectedRRCConnectionSetupComplete, p_ExpectedNasIndication)) -> value v_ReceivedAsp; + v_NAS_Ind := v_ReceivedAsp.Signalling.Nas[0]; + + if (not f_EUTRA_DlCcchMsgInSeparateMacPdu()) { // @sic R5s120121 sic@ + f_EUTRA_SS_CommonCellConfig(p_CellId, cas_PUCCH_Synch_Config_REQ(p_CellId, cs_TimingInfo_Now, cs_PUCCH_Synch_Auto_Def)); // start automatic TA + } + + return v_NAS_Ind; + } + + //---------------------------------------------------------------------------- + + /* + * @desc send RRC connection reconfiguration + * @param p_CellId + * @param p_RRC_TI (default value: tsc_RRC_TI_Def) + * @param p_NAS_MSG_Request (default value: omit) + * @param p_DRB_Id (default value: tsc_DRB1) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_RRCConnectionReconfiguration_SRB2_1AM_DRB_Send(EUTRA_CellId_Type p_CellId, + RRC_TransactionIdentifier p_RRC_TI := tsc_RRC_TI_Def, + template (omit) NAS_MSG_Request_Type p_NAS_MSG_Request := omit, + DRB_Identity p_DRB_Id := tsc_DRB1) + runs on EUTRA_PTC + { /* @sic R5-144797: parameter p_DRB_Id sic@ */ + var template (value) EUTRA_FDD_TDD_CellInfo_Type v_EUTRA_FDD_TDD_CellInfo := f_EUTRA_CellInfo_GetFDD_TDD_Info(p_CellId); + var template (value) PhysicalConfigDedicated_AntennaInfo_Type v_AntennaInfo := f_EUTRA_CellInfo_GetAntennaInfoDedicated (p_CellId); + var template (omit) NAS_MSG_RequestList_Type v_NasMsgList := omit; + + if (isvalue(p_NAS_MSG_Request)) { + v_NasMsgList := {p_NAS_MSG_Request}; + } + + SRB.send(cas_SRB1_RrcNasPduList_REQ(p_CellId, + cs_TimingInfo_Now, + cs_RRCConnectionReconfiguration_SRB2_1AM_DRB_Est(p_RRC_TI, + v_EUTRA_FDD_TDD_CellInfo.cqi_ReportConfig, + v_EUTRA_FDD_TDD_CellInfo.soundingRS_UL_Config, + v_AntennaInfo, + p_DRB_Id), + v_NasMsgList)); + } + + /* + * @desc send RRC connection reconfiguration and receive RRC connection reconfiguration complete + * @param p_CellId + * @param p_RRC_TI (default value: tsc_RRC_TI_Def) + * @param p_NAS_MSG_Request (default value: omit) + * @param p_DRB_Id (default value: tsc_DRB1) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_RRCConnectionReconfiguration_SRB2_1AM_DRB_Est(EUTRA_CellId_Type p_CellId, + RRC_TransactionIdentifier p_RRC_TI := tsc_RRC_TI_Def, + template (omit) NAS_MSG_Request_Type p_NAS_MSG_Request := omit, + DRB_Identity p_DRB_Id := tsc_DRB1) + runs on EUTRA_PTC + { /* @sic R5s120092 Additional Changes sic@ */ + /* @sic R5s130201 Additional Changes sic@ */ + /* @sic R5-144797: parameter p_DRB_Id sic@ */ + + f_EUTRA_RRCConnectionReconfiguration_SRB2_1AM_DRB_Send(p_CellId, p_RRC_TI, p_NAS_MSG_Request, p_DRB_Id); + SRB.receive(car_SRB1_RrcPdu_IND(p_CellId, cr_508_RRCConnectionReconfigurationComplete(p_RRC_TI))); + } + + //---------------------------------------------------------------------------- + /* + * @desc Send RRC PDU containing RadioResourceConfigDedicated to reconfigure the radio bearers + * and wait for confirmation by the UE + * @param p_CellId + * @param p_RRC_TI + * @param p_RadioResourceConfigDedicated + * @status APPROVED (LTE) + */ + function f_EUTRA_RRCConnectionReconfiguration_RadioResConfig(EUTRA_CellId_Type p_CellId, + RRC_TransactionIdentifier p_RRC_TI, + template (value) RadioResourceConfigDedicated p_RadioResourceConfigDedicated) + runs on EUTRA_PTC + { + + SRB.send(cas_SRB1_RrcPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_RRCConnectionReconfiguration_RadioResConfig(p_RRC_TI, + p_RadioResourceConfigDedicated))); + + SRB.receive(car_SRB1_RrcPdu_IND(p_CellId, + cr_508_RRCConnectionReconfigurationComplete(p_RRC_TI))); + } + + function f_EUTRA_RRCConnectionReconfiguration_DRB_Release(EUTRA_CellId_Type p_CellId, + RRC_TransactionIdentifier p_RRC_TI, + DRB_Identity p_DRB_Id) + runs on EUTRA_PTC + { /* @desc + Send RRC PDU containing RadioResourceConfigDedicated to release DRB and + wait for confirmation by the UE */ + SRB.send(cas_SRB1_RrcPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_RRCConnectionReconfiguration_DRB_Release(tsc_RRC_TI_Def, p_DRB_Id))); + SRB.receive(car_SRB1_RrcPdu_IND(p_CellId, + cr_508_RRCConnectionReconfigurationComplete(p_RRC_TI))); + }; + + // --------------------------------------------------------------------------------------------- + // ----------------------------FUNCTIONs for Handover during a test execution ------------------ + /* + * @desc configuration of ConfigRachProcedure in case of HO + * @param p_TargetCellId + * @param p_TimingInfo + * @param p_C_RNTI + * @param p_CnfFlag (default value: omit) + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_SS_ConfigRachProcedure_HO(EUTRA_CellId_Type p_TargetCellId, + template (value) TimingInfo_Type p_TimingInfo, + C_RNTI p_C_RNTI, + template (omit) boolean p_CnfFlag := omit) runs on EUTRA_PTC + { /* @sic R5-106063: grants acc. to 36.523-3 cl. 7.16.3 sic@ */ + /* @sic R5s110019/R5s110030/R5s110634 additional changes: parameter to request/suppress CNF sic@ */ + /* @sic R5s120709 additional change: new template cs_RachProcedureConfig_CRNTI_HO sic@ */ + f_EUTRA_SS_ConfigRachProcedure(p_TargetCellId, + p_C_RNTI, + cs_RachProcedureConfig_CRNTI_HO(f_EUTRA_CellInfo_GetRAR_TA(p_TargetCellId), + f_EUTRA_CellInfo_GetDL_ChBandwidth(p_TargetCellId)), + p_TimingInfo, + p_CnfFlag); + } + + /* @desc Function for performing SS and UE configuration at IntraLTE IntraCell handover. + * The function implements step 1..5 of 36.523-3 cl. 7.16.2 + * @param p_CellId + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @param p_DrbConfigList (default value: cs_DrbConfigList_Def) + * @param p_C_RNTI (default value: tsc_C_RNTI_Def2) + * @param p_MeasConfig (default value: p_MeasConfig) + * @param p_Dsr_TransMax (default value: n4) + * @param p_SecurityActTimeList (default value: omit) + * @status APPROVED (LTE) + */ + function f_EUTRA_508RRC_IntraLTE_HO_IntraCell_Step1_5(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now, + template (value) RadioBearerList_Type p_DrbConfigList := cs_DrbConfigList_Def, + C_RNTI p_C_RNTI := tsc_C_RNTI_Def2, + template (omit) MeasConfig p_MeasConfig := omit, + Dsr_TransMax_Type p_Dsr_TransMax := n4, + template (omit) SecurityActTimeList_Type p_SecurityActTimeList := omit) runs on EUTRA_PTC + { /* @sic R5s110019/R5s110030: suppress CNFs in f_EUTRA_SS_SRBs_DRBs_Release, f_EUTRA_SS_ConfigRachProcedure_HO, f_EUTRA_SS_SRBs_DRBs_Config sic@ */ + /* @sic R5-112122: UL_DL_Earfcn is omit in case of intra-cell HO sic@ */ + var DRB_IdentityList_AllAndAMonly_Type v_DRB_IdentityList; + var SubFrameTiming_Type v_Timing; + var EUTRA_SecurityParams_Type v_Auth_Params := f_EUTRA_Security_Get(); + var NextHopChainingCount v_NextHopChainingCount := 0; //According to 36.508 cl. 4.6.1 RRCConnectionReestablishment + var template (omit) CarrierFreqEUTRA v_CarrierFreqEutra := omit; // no change of frequency in case of intra-cell HO + var template (value) MobilityControlInfo v_MobilityControlInfo := f_Generate_cs_MobilityControlInfo_HO_CRNTI(p_CellId, p_C_RNTI, v_CarrierFreqEutra); + var template (value) RadioResourceConfigDedicated v_RadioResourceConfigDedicated := f_Generate_cs_508_RadioResourceConfigDedicated_HO (p_CellId, p_Dsr_TransMax); + var boolean v_MeasGapConfigIsPresent := isvalue(p_MeasConfig) and ispresent(p_MeasConfig.measGapConfig); + + // Build DRB identity list from inputed radiobearer config list + v_DRB_IdentityList := f_EUTRA_DRB_IdentityList(p_DrbConfigList); + + /* for intra cell HO the HO procedure and the SS configuration must be executed with timing info. + * This is to make sure SS reconfiguration is done properly and in time before UE access the new cell. + * @sic R5s100178 sic@ */ + if (f_TimingInfo_IsNow(p_TimingInfo)) { + v_Timing := f_EUTRA_GetNextSendOccasion(p_CellId, tsc_EUTRA_DelayBeforeIntraCellHO); // @sic R5-106675 sic@ + } + else { + v_Timing := valueof(p_TimingInfo.SubFrame); + } + + // Step 1: Transmit RRCConnectionReconfiguration/HO command to UE + f_EUTRA_RRC_ConnReconfigHO_Common(p_CellId, + p_MeasConfig, + v_MobilityControlInfo, + v_RadioResourceConfigDedicated, + cs_508SecurityConfigHO_IntraLTE, + cs_TimingInfo (v_Timing.SFN.Number, v_Timing.Subframe.Number)); + + /* Note: current implementation releases SRBs and reconfigures C-RNTI 5ms after sending the RRCConnectionReconfiguration + => RLC ACK is not taken into consideration */ + + v_Timing := f_EUTRA_TimingInfoAdd(v_Timing, 5); // add 5ms + + // Step 2: Release SRBs and DRBs + f_EUTRA_SS_SRBs_DRBs_Release(p_CellId, + cs_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number), + v_DRB_IdentityList.All); /* @sic R5s110634: Additional MCC160 Changes sic@ */ + + // Step 3: Configure C-RNTI based contention resolution in target cell 1 and assign new C-RNTI to the cell + f_EUTRA_SS_ConfigRachProcedure_HO(p_CellId, cs_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number), p_C_RNTI); + + // Save new C-RNTI in cell configuration for target cell (which is also source cell) + f_EUTRA_CellInfo_SetC_RNTI(p_CellId, p_C_RNTI); + + // Step 3a: Release MeasGapConfig configuration + + if (v_MeasGapConfigIsPresent) { // @sic R5-121779 sic@ + f_EUTRA_SS_MeasGapCtrlConfig(p_CellId, cs_MeasGapCtrl_Config(valueof(p_MeasConfig.measGapConfig))); // valueof to avoid compiler warnings: ok as p_MeasConfig.measGapConfig is checked to be present + } else { + f_EUTRA_SS_MeasGapCtrlConfig(p_CellId, cs_MeasGapCtrl_None); // @sic R5s110039 Additional Changes sic@ + } + + // Step 4: Setup SRBs and DRBs again + v_Timing := f_EUTRA_TimingInfoAdd(v_Timing, 5); // add 5ms + f_EUTRA_SS_SRBs_DRBs_Config(p_CellId, + cs_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number), + p_DrbConfigList); /* @sic R5s110634: Additional MCC160 Changes sic@ */ + + // Step 5: Reestablish security, disable TA transmission + v_Auth_Params := f_EUTRA_SS_AS_ActivateSecurity_HO_Reest(p_CellId, + v_Auth_Params, + v_NextHopChainingCount, + cs_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number), + v_DRB_IdentityList.AMonly, + p_SecurityActTimeList); + + f_EUTRA_Security_Set(v_Auth_Params); + // disable TA transmission @sic R5-113734 Change 11 sic@ + f_EUTRA_SS_CommonCellConfig(p_CellId, + cas_PUCCH_Synch_Config_REQ(p_CellId, + cs_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number), + cs_PUCCH_Synch_None)); /* @sic R5s110634: Additional MCC160 Changes sic@ */ + } + + /* @desc Function for performing SS and UE configuration at IntraLTE IntraCell handover. + * The function implements step 6..7 of 36.523-3 cl. 7.16.2 + * @param p_CellId + * @status APPROVED (LTE) + */ + function f_EUTRA_508RRC_IntraLTE_HO_IntraCell_Step6_7(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { + // Step 6: + SRB.receive(car_SRB1_RrcPdu_IND(p_CellId, cr_508_RRCConnectionReconfigurationComplete(tsc_RRC_TI_Def))); // @sic R5s100430 Change 2 sic@ + + // Step 7: configure RACH procedure back to default @sic R5s100520 change 11 sic@ + f_EUTRA_SS_ConfigRachProcedure_Def(p_CellId); /* @sic acc. to R5s100029 change 3 sic@ */ + + // enable TA transmissions @sic R5-113734 Change 11 sic@ + f_EUTRA_SS_CommonCellConfig(p_CellId, cas_PUCCH_Synch_Config_REQ(p_CellId, cs_TimingInfo_Now, cs_PUCCH_Synch_Auto_Def)); + } + + /* @desc Function for performing SS and UE configuration at IntraLTE IntraCell handover. + * The function implements 36.523-3 cl. 7.16.2 + * @param p_CellId + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @param p_DrbConfigList (default value: cs_DrbConfigList_Def) + * @param p_C_RNTI (default value: tsc_C_RNTI_Def2) + * @param p_MeasConfig (default value: p_MeasConfig) + * @param p_Dsr_TransMax (default value: n4) + * @status APPROVED (LTE) + */ + function f_EUTRA_508RRC_IntraLTE_HO_IntraCell(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now, + template (value) RadioBearerList_Type p_DrbConfigList := cs_DrbConfigList_Def, + C_RNTI p_C_RNTI := tsc_C_RNTI_Def2, + template (omit) MeasConfig p_MeasConfig := omit, + Dsr_TransMax_Type p_Dsr_TransMax := n4) runs on EUTRA_PTC + { /* @sic R5s100491: enhancement to support MeasConfig sic@ */ + /* @sic R5s100524: common change of HO functions sic@ */ + /* @sic R5s100473: additional parameter p_Dsr_TransMax sic@ */ + /* @sic R5s110019/R5s110030: additional parameter p_SecurityActTimeList, split into step 1-5 and step 6-7 sic@ */ + /* @sic R5-120721 change 7: restore PDCP Count for AM DRBs after the HO; parameter p_SecurityActTimeList removed; SecurityActTimeList determined in this function sic@ */ + var PdcpCountInfoList_Type v_PdcpCountInfoListAll; + var PdcpCountInfoList_Type v_PdcpCountInfoListAmOnly; + var DRB_IdentityList_AllAndAMonly_Type v_DRB_IdentityList; + var template (value) SecurityActTimeList_Type v_SecurityActTimeList; + + /* step 0: get PDCP Count for AM DRBs @sic R5-120721 change 7 sic@ */ + v_DRB_IdentityList := f_EUTRA_DRB_IdentityList(p_DrbConfigList); + v_PdcpCountInfoListAll := f_EUTRA_SS_PdcpCount_GetAll(p_CellId); + v_PdcpCountInfoListAmOnly := f_EUTRA_SS_PdcpCount_GetAmDrbs(p_CellId, v_DRB_IdentityList.AMonly, v_PdcpCountInfoListAll); + v_SecurityActTimeList := f_EUTRA_RRC_CipherActTime_GetForHO(p_CellId, v_DRB_IdentityList.AMonly, v_PdcpCountInfoListAll); + + f_EUTRA_508RRC_IntraLTE_HO_IntraCell_Step1_5(p_CellId, + p_TimingInfo, + p_DrbConfigList, + p_C_RNTI, + p_MeasConfig, + p_Dsr_TransMax, + v_SecurityActTimeList); + f_EUTRA_508RRC_IntraLTE_HO_IntraCell_Step6_7(p_CellId); + + /* step 8: restore PDCP Count for AM DRBs @sic R5-120721 change 7 sic@ */ + f_EUTRA_SS_PdcpCount_Set(p_CellId, v_PdcpCountInfoListAmOnly); + } + + /* @desc Function for performing SS and UE configuration at IntraLTE InterCell handover. + * The function implements step 2-14 of 36.523-3 cl. 7.16.1 with + * 1. configure C-RNTI based contention resolution in SS with minimal grant + * i.e. the UE will have to raise SR to send additional/user data. + * 2. activate security at target cell according to 36.508 cl. 4.6.4 Table 4.6.4-1 + * with keyChangeIndicator set to FALSE and nextHopChainingCount set to 0 + * 3. send the RRCConnectionReconfiguration to UE. This message will include + * 3a. Measurement configuration if specified. + * 3b. MobilityControlInfo according to 36.508 cl. 4.6.5 Table 4.6.5-1 + * with newUE-Identity set to tsc_C_RNTI_Def2 or p_C_R_NTI + * 3c. RadioResourceConfigDedicated according to 36.508 cl. 4.6.3 Table 4.6.3-19 + * 3d. SecurityConfigHO according to 36.508 cl. 4.6.4 Table 4.6.4-1 + * with keyChangeIndicator set to FALSE and nextHopChainingCount set to 0 + * @param p_SourceCellId + * @param p_TargetCellId + * @param p_RRC_ConnRecongMsg + * @param p_RachProcedureConfig + * @param p_DrbConfigList (default value: cs_DrbConfigList_Def) + * @param p_C_RNTI (default value: tsc_C_RNTI_Def2) + * @param p_DciUlInfo_TargetCell (default value: cs_DciInfo_CcchDcchDtchUL_Def) + * @param p_UL_GrantConfig_SourceCell (default value: cs_UL_GrantConfig_Def) + * @param p_UL_GrantConfig_TargetCell (default value: cs_UL_GrantConfig_Def) + * @param p_CnfFlag (default value: tsc_NoCnfReq) + * @param p_RRCConnReconfigComplete (default value: cr_508_RRCConnectionReconfigurationComplete) + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_508RRC_IntraLTE_HO_InterCell_Common(EUTRA_CellId_Type p_SourceCellId, + EUTRA_CellId_Type p_TargetCellId, + template (value) DL_DCCH_Message p_RRC_ConnRecongMsg, + template (value) RachProcedureConfig_Type p_RachProcedureConfig, + template (value) RadioBearerList_Type p_DrbConfigList := cs_DrbConfigList_Def, + C_RNTI p_C_RNTI := tsc_C_RNTI_Def2, + template (omit) DciUlInfo_Type p_DciUlInfo_TargetCell := cs_DciInfo_CcchDcchDtchUL_Def, + template (value) UL_GrantConfig_Type p_UL_GrantConfig_SourceCell := cs_UL_GrantConfig_Def, + template (value) UL_GrantConfig_Type p_UL_GrantConfig_TargetCell := cs_UL_GrantConfig_Def, + boolean p_CnfFlag := tsc_NoCnfReq, + template (present) UL_DCCH_Message p_RRCConnReconfigComplete := cr_508_RRCConnectionReconfigurationComplete) + runs on EUTRA_PTC + { /* @sic R5s120709 function introduced to cope with "Full Handover" as needed for TC_13_4_1_5 sic@ */ + /* @sic R5s140147: additional parameter p_RRCConnReconfigComplete sic@ */ + + var DRB_IdentityList_AllAndAMonly_Type v_DRB_IdentityList; + var EUTRA_SecurityParams_Type v_Auth_Params := f_EUTRA_Security_Get(); + var NextHopChainingCount v_NextHopChainingCount := 0; //According to 36.508 cl. 4.6.1 RRCConnectionReestablishment + var template (omit) MeasConfig v_MeasConfig := p_RRC_ConnRecongMsg.message_.c1.rrcConnectionReconfiguration.criticalExtensions.c1.rrcConnectionReconfiguration_r8.measConfig; + var boolean v_MeasGapConfigIsPresent := isvalue(v_MeasConfig) and ispresent(v_MeasConfig.measGapConfig); + var DrxCtrl_Type v_DrxCtrl; + + // Build DRB identity list from inputed radiobearer config list + v_DRB_IdentityList := f_EUTRA_DRB_IdentityList(p_DrbConfigList); + + // Step 1: Transfer of the PDCP Count for AM DRBs from source to target cell @sic R5-120721 change 7 sic@ + f_EUTRA_SS_PdcpCount_Handover(p_SourceCellId, p_TargetCellId, v_DRB_IdentityList.AMonly); + + // Step 2: Tell the SS about the HO @sic R5w100212 sic@ + f_EUTRA_SS_PdcpHandoverCtrl(p_TargetCellId, cas_PdcpHandoverInit_REQ(p_SourceCellId, p_TargetCellId)); // @sic R5s100556, R5s100560 sic@ + + // Step 3: Configure C-RNTI based contention resolution in target cell + f_EUTRA_SS_ConfigRachProcedure(p_TargetCellId, p_C_RNTI, p_RachProcedureConfig); + + // Save new C-RNTI in cell configuration for p_TargetCellId + f_EUTRA_CellInfo_SetC_RNTI(p_TargetCellId, p_C_RNTI); + + // Step 4: activate RRC security at SS target cell for SRB 1, 2 and 1 AM DRB + v_Auth_Params := f_EUTRA_SS_AS_ActivateSecurity_HO_Reest(p_TargetCellId, + v_Auth_Params, + v_NextHopChainingCount, + -, + v_DRB_IdentityList.AMonly); + f_EUTRA_Security_Set(v_Auth_Params); + + // Step 5: configure DRX and MeasGap at the target cell (if necessary) + if (f_EUTRA_CellInfo_DrxIsConfigured(p_SourceCellId)) { + v_DrxCtrl := f_EUTRA_CellInfo_GetDrxCtrl(p_SourceCellId); + f_EUTRA_SS_DrxCtrlConfig(p_TargetCellId, v_DrxCtrl); + } + + if (v_MeasGapConfigIsPresent) { + f_EUTRA_SS_MeasGapCtrlConfig(p_TargetCellId, cs_MeasGapCtrl_Config(valueof(v_MeasConfig.measGapConfig))); // valueof to avoid compiler warnings: ok as v_MeasConfig.measGapConfig is checked to be present + } + + // Step 6: stop periodic TA on source cell @sic R5s100520 change 10 sic@ + f_EUTRA_SS_CommonCellConfig(p_SourceCellId, cas_ULGrantAllocation_REQ(p_SourceCellId, cs_TimingInfo_Now, -, cs_PUCCH_Synch_None, p_UL_GrantConfig_SourceCell)); + + // Step 7: configure UL grant configuration on target cell @sic R5s100515 sic@ + f_EUTRA_SS_CommonCellConfig(p_TargetCellId, cas_ULGrantAllocation_REQ(p_TargetCellId, cs_TimingInfo_Now, p_DciUlInfo_TargetCell, cs_PUCCH_Synch_None, p_UL_GrantConfig_TargetCell)); + + // Step 8: Transmit RRCConnectionReconfiguration/HO command to UE + SRB.send(cas_SRB1_RrcPdu_REQ(p_SourceCellId, cs_TimingInfo_Now, p_RRC_ConnRecongMsg)); + + // Step 9: + SRB.receive(car_SRB1_RrcPdu_IND(p_TargetCellId, p_RRCConnReconfigComplete)); // @sic R5s100430 Change 2, R5s140147 sic@ + + // Step 10: configure periodic TA on target cell @sic R5s100525 change 1.3 sic@ + f_EUTRA_SS_CommonCellConfig(p_TargetCellId, cas_PUCCH_Synch_Config_REQ(p_TargetCellId, cs_TimingInfo_Now, cs_PUCCH_Synch_Auto_Def, tsc_NoCnfReq)); // @sic R5s100801 sic@ + + // Step 11: Tell the SS about the HO @sic R5w100212 sic@ + f_EUTRA_SS_PdcpHandoverCtrl(p_TargetCellId, cas_PdcpHandoverComplete_REQ(p_TargetCellId)); // @sic R5s100556, R5s100560 sic@ + + // Step 12: configure RACH procedure for target cell back to default @sic R5s100520 change 11 sic@ + f_EUTRA_SS_ConfigRachProcedure_Def(p_TargetCellId, -, -, -, -, -, p_CnfFlag); /* @sic acc. to R5s100029 change 3 sic@ */ + + // Step 13: Re-establish SRBs and DRB(s) in source cell + f_EUTRA_SS_SRBs_DRBs_Release(p_SourceCellId, -, v_DRB_IdentityList.All, p_CnfFlag); // @sic R5s100801 sic@ + f_EUTRA_SS_SRBs_DRBs_Config(p_SourceCellId, -, p_DrbConfigList, p_CnfFlag); // @sic R5s100801 sic@ + + // Step 14: Release DRX and MeasGap configuration + f_EUTRA_SS_DrxCtrlConfig(p_SourceCellId, cs_DrxCtrl_None, -, p_CnfFlag); // @sic R5s100801 sic@ + f_EUTRA_SS_MeasGapCtrlConfig(p_SourceCellId, cs_MeasGapCtrl_None, -, p_CnfFlag); // @sic R5s110743 sic@ + } + + /* @desc Function to generate RRCConnectionReconfiguration to be used for intra-LTE inter-call HO + * @param p_SourceCellId + * @param p_TargetCellId + * @param p_C_RNTI (default value: tsc_C_RNTI_Def2) + * @param p_MeasConfig (default value: omit) + * @param p_Dsr_TransMax (default value: n4) + * @param p_CarrierFreqEutra (default value: omit); omit means that the CarrierFreqEutra is determined within the function, + * i.e. it is omitted when the frequency is the same on source and target cell + * Note: when frequency is different on source and target cell there always needs to be a valid CarrierFreqEutra + * @param p_AddAdditionalSpectrumEmission (default value: false) + * @param p_RRCConnectionReconfiguration_v890_IEs (default value: omit) + * @return template (value) DL_DCCH_Message + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_RRCConnectionReconfiguration_IntraLTE_HO_InterCell(EUTRA_CellId_Type p_SourceCellId, + EUTRA_CellId_Type p_TargetCellId, + C_RNTI p_C_RNTI := tsc_C_RNTI_Def2, + template (omit) MeasConfig p_MeasConfig := omit, + Dsr_TransMax_Type p_Dsr_TransMax := n4, + template (omit) CarrierFreqEUTRA p_CarrierFreqEutra := omit, + boolean p_AddAdditionalSpectrumEmission := false, + template (omit) RRCConnectionReconfiguration_v890_IEs p_RRCConnectionReconfiguration_v890_IEs := omit) + runs on EUTRA_PTC return template (value) DL_DCCH_Message + { + var Frequency_IE_Type v_Frequency_IE_SourceCell := f_EUTRA_CellInfo_GetFrequencyIEs (p_SourceCellId); + var Frequency_IE_Type v_Frequency_IE_TargetCell := f_EUTRA_CellInfo_GetFrequencyIEs (p_TargetCellId); + var CarrierFreqEUTRA v_CarrierFreqEutra_SourceCell := v_Frequency_IE_SourceCell.UL_DL_Earfcn; + var CarrierFreqEUTRA v_CarrierFreqEutra_TargetCell := v_Frequency_IE_TargetCell.UL_DL_Earfcn; + var template (omit) CarrierFreqEUTRA v_CarrierFreqEutra := omit; + var template (omit) CarrierBandwidthEUTRA v_CarrierBandwidthEUTRA := omit; + var template (value) MobilityControlInfo v_MobilityControlInfo; + var template (value) RadioResourceConfigDedicated v_RadioResourceConfigDedicated; + var template (omit) AdditionalSpectrumEmission_Type v_AdditionalSpectrumEmission := omit; // @sic R5s120655 sic@ + var template (value) DL_DCCH_Message v_RRCConnectionReconfiguration; + var boolean v_PucchConfigCommon_Needed := false; + + if (isvalue(p_CarrierFreqEutra)) { // use the give CarrierFreqEutra; @sic R5s110279 change 1 sic@ + v_CarrierFreqEutra := p_CarrierFreqEutra; + } + else { // => determine the CarrierFreqEutra depending on cell information stored for sourece and target cell + if (v_CarrierFreqEutra_SourceCell != v_CarrierFreqEutra_TargetCell) { // only if CarrierFreqEUTRA is different in both cells the CarrierFreqEUTRA of the target cell is handed over @sic R5-112122 sic@ + v_CarrierFreqEutra := v_CarrierFreqEutra_TargetCell; + } + } + if (v_Frequency_IE_SourceCell.DL_ChBandwidth != v_Frequency_IE_TargetCell.DL_ChBandwidth) { // @sic R5s120057 sic@ + v_PucchConfigCommon_Needed := true; // @sic R5s120209 change 1 sic@ + v_CarrierBandwidthEUTRA := cs_CarrierBandwidthEUTRA(v_Frequency_IE_TargetCell.DL_ChBandwidth); + } + + if (p_AddAdditionalSpectrumEmission) { + v_AdditionalSpectrumEmission := f_EUTRA_CellInfo_GetAddSpectrumEmission(p_TargetCellId); // @sic R5s120655 sic@ + } + v_MobilityControlInfo := f_Generate_cs_MobilityControlInfo_HO(p_TargetCellId, + v_CarrierFreqEutra, + -, + v_CarrierBandwidthEUTRA, + v_AdditionalSpectrumEmission, // @sic R5s120655 sic@ + -, + p_C_RNTI, + -, + v_PucchConfigCommon_Needed); + + v_RadioResourceConfigDedicated := f_Generate_cs_508_RadioResourceConfigDedicated_HO (p_TargetCellId, p_Dsr_TransMax); + + v_RRCConnectionReconfiguration := cs_RRCConnectionReconfiguration_Common(tsc_RRC_TI_Def, + p_MeasConfig, + v_MobilityControlInfo, + v_RadioResourceConfigDedicated, + cs_508SecurityConfigHO_IntraLTE, + p_RRCConnectionReconfiguration_v890_IEs); + return v_RRCConnectionReconfiguration; + } + + /* @desc Function for performing SS and UE configuration at IntraLTE InterCell handover. + * The function implements step 2-14 of 36.523-3 cl. 7.16.1 with + * 1. configure C-RNTI based contention resolution in SS with minimal grant + * i.e. the UE will have to raise SR to send additional/user data. + * 2. activate security at target cell according to 36.508 cl. 4.6.4 Table 4.6.4-1 + * with keyChangeIndicator set to FALSE and nextHopChainingCount set to 0 + * 3. send the RRCConnectionReconfiguration to UE. This message will include + * 3a. Measurement configuration if specified. + * 3b. MobilityControlInfo according to 36.508 cl. 4.6.5 Table 4.6.5-1 + * with newUE-Identity set to tsc_C_RNTI_Def2 or p_C_R_NTI + * 3c. RadioResourceConfigDedicated according to 36.508 cl. 4.6.3 Table 4.6.3-19 + * 3d. SecurityConfigHO according to 36.508 cl. 4.6.4 Table 4.6.4-1 + * with keyChangeIndicator set to FALSE and nextHopChainingCount set to 0 + * @param p_SourceCellId + * @param p_TargetCellId + * @param p_DrbConfigList (default value: cs_DrbConfigList_Def) + * @param p_C_RNTI (default value: tsc_C_RNTI_Def2) + * @param p_MeasConfig (default value: omit) + * @param p_DciUlInfo_TargetCell (default value: cs_DciInfo_CcchDcchDtchUL_Def) + * @param p_UL_GrantConfig_SourceCell (default value: cs_UL_GrantConfig_Def) + * @param p_UL_GrantConfig_TargetCell (default value: cs_UL_GrantConfig_Def) + * @param p_Dsr_TransMax (default value: n4) + * @param p_CarrierFreqEutra (default value: omit); omit means that the CarrierFreqEutra is determined within the function, + * i.e. it is omitted when the frequency is the same on source and target cell + * Note: when frequency is different on source and target cell there always needs to be a valid CarrierFreqEutra + * @param p_CnfFlag (default value: tsc_NoCnfReq) + * @param p_AddAdditionalSpectrumEmission (default value: false) + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_508RRC_IntraLTE_HO_InterCell(EUTRA_CellId_Type p_SourceCellId, + EUTRA_CellId_Type p_TargetCellId, + template (value) RadioBearerList_Type p_DrbConfigList := cs_DrbConfigList_Def, + C_RNTI p_C_RNTI := tsc_C_RNTI_Def2, + template (omit) MeasConfig p_MeasConfig := omit, + template (omit) DciUlInfo_Type p_DciUlInfo_TargetCell := cs_DciInfo_CcchDcchDtchUL_Def, + template (value) UL_GrantConfig_Type p_UL_GrantConfig_SourceCell := cs_UL_GrantConfig_Def, + template (value) UL_GrantConfig_Type p_UL_GrantConfig_TargetCell := cs_UL_GrantConfig_Def, + Dsr_TransMax_Type p_Dsr_TransMax := n4, + template (omit) CarrierFreqEUTRA p_CarrierFreqEutra := omit, + boolean p_CnfFlag := tsc_NoCnfReq, + boolean p_AddAdditionalSpectrumEmission := false) runs on EUTRA_PTC + { /* @sic R5s100491: enhancement to support MeasConfig sic@ */ + /* @sic R5s100524: common change of HO functions sic@ */ + /* @sic R5-106063: Sequence of inter-cell handover sic@ */ + /* @sic R5s100801: No CNF for SS configuration of steps 10..14 sic@ + * when there is data pending at the UE the UE may send this data immediately after the HO; + * this would collide with CNFs sent during reconfigurations of source and target call after the HO; + * on the other hand none of the reconfigurations in source or target cell should have impact in cases the test case sends data after the HO + * => reconfiguration steps 10..14 are done without request of CNF as proposed in the CR */ + /* @sic R5s100772: p_UL_GrantConfig_SourceCell sic@ */ + /* @sic R5s110168: additional parameter p_Dsr_TransMax sic@ */ + /* @sic R5-112122: UL_DL_Earfcn is omit in case of inter-cell HO when there is no change of frequency sic@ */ + /* @sic R5s110279 change 1: new optional parameter p_CarrierFreqEutra to force the CarrierFreqEutra e.g. to omit the ul-CarrierFreq as requested for TC_8_2_4_9 sic@ */ + /* @sic R5s110743, R5s120039: handling of MeasGapConfig sic@ */ + /* @sic R5s120057, R5-120677: In case of multiband scenarios the bandwidth can be different for source and target cell sic@ */ + /* @sic R5-120721 change 7: handover of PDCP Count for AM DRBs from source cell to target cell sic@ */ + /* @sic R5s120313 change 2: optional parameter p_CnfFlag sic@ */ + /* @sic R5s120655 add. change by Agilent: new parameter p_AddAdditionalSpectrumEmission to add additionalSpectrumEmission element to MobilityControlInfo sic@ */ + /* @sic R5s120709 new common function f_EUTRA_508RRC_IntraLTE_HO_InterCell_Common sic@ */ + /* @sic R5s130750 new function f_EUTRA_RRCConnectionReconfiguration_IntraLTE_HO_InterCell sic@ */ + + var template (value) RachProcedureConfig_Type v_RachProcedureConfig := cs_RachProcedureConfig_CRNTI_HO(f_EUTRA_CellInfo_GetRAR_TA(p_TargetCellId), + f_EUTRA_CellInfo_GetDL_ChBandwidth(p_TargetCellId)); + + var template (value) DL_DCCH_Message v_RRCConnectionReconfiguration := f_EUTRA_RRCConnectionReconfiguration_IntraLTE_HO_InterCell(p_SourceCellId, + p_TargetCellId, + p_C_RNTI, + p_MeasConfig, + p_Dsr_TransMax, + p_CarrierFreqEutra, + p_AddAdditionalSpectrumEmission); + f_EUTRA_508RRC_IntraLTE_HO_InterCell_Common(p_SourceCellId, + p_TargetCellId, + v_RRCConnectionReconfiguration, + v_RachProcedureConfig, + p_DrbConfigList, + p_C_RNTI, + p_DciUlInfo_TargetCell, + p_UL_GrantConfig_SourceCell, + p_UL_GrantConfig_TargetCell, + p_CnfFlag); + } + + /* @desc Function for sending IntraLTE HO command (as per 36.508) to UE + * i.e MobilityControlInfo is according to 36.508 cl. 4.6.5 Table 4.6.5-1 with newUE-Identity set to tsc_C_RNTI_Def2 + * i.e RadioResourceConfigDedicated is according to 36.508 cl. 4.6.3 Table 4.6.3-19 + * i.e SecurityConfigHO is according to 36.508 cl. 4.6.4 Table 4.6.4-1 with keyChangeIndicator set to FALSE and nextHopChainingCount set to 0 + * @param p_SourceCellId + * @param p_TargetCellId + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @status APPROVED (LTE) + */ + function f_EUTRA_508RRC_ConnReconfigHO_IntraLTE(EUTRA_CellId_Type p_SourceCellId, + EUTRA_CellId_Type p_TargetCellId, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now) runs on EUTRA_PTC + { + f_EUTRA_RRC_ConnReconfigHO_Common(p_SourceCellId, + omit, + f_Generate_cs_508_MobilityControlInfo_HO (p_TargetCellId), + f_Generate_cs_508_RadioResourceConfigDedicated_HO (p_TargetCellId), + cs_508SecurityConfigHO_IntraLTE, + p_TimingInfo); + } + + /* @desc Function for sending IntraLTE HO command to UE with non-default parameters for SecurityConfigHO + * i.e MobilityControlInfo is according to 36.508 cl. 4.6.5 Table 4.6.5-1 with newUE-Identity set to tsc_C_RNTI_Def2 + * i.e RadioResourceConfigDedicated is according to 36.508 cl. 4.6.3 Table 4.6.3-19 + * i.e SecurityConfigHO is according to p_SecurityConfigHO + * @param p_SourceCellId + * @param p_TargetCellId + * @param p_SecurityConfigHO + * @param p_TimingInfo + * @status APPROVED (LTE) + * + */ + function f_EUTRA_RRC_ConnReconfigHO_IntraLTE_Security(EUTRA_CellId_Type p_SourceCellId, + EUTRA_CellId_Type p_TargetCellId, + template (value) SecurityConfigHO p_SecurityConfigHO, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now) runs on EUTRA_PTC + { + f_EUTRA_RRC_ConnReconfigHO_Common(p_SourceCellId, + omit, + f_Generate_cs_508_MobilityControlInfo_HO (p_TargetCellId), + f_Generate_cs_508_RadioResourceConfigDedicated_HO (p_TargetCellId), + p_SecurityConfigHO, + p_TimingInfo); + } + + /* + * @desc Generates the default RadioresourceConfigDedicated template (according to 36.508) and returns the template + * @param p_TargetCellId + * @param p_Dsr_TransMax (default value: n4) + * @return template (value) RadioResourceConfigDedicated + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_Generate_cs_508_RadioResourceConfigDedicated_HO(EUTRA_CellId_Type p_TargetCellId, + Dsr_TransMax_Type p_Dsr_TransMax := n4) runs on EUTRA_PTC return template (value) RadioResourceConfigDedicated + { /* @sic R5s100473 additional parameter p_Dsr_TransMax sic@ */ + var template (value) EUTRA_FDD_TDD_CellInfo_Type v_EUTRA_FDD_TDD_CellInfo := f_EUTRA_CellInfo_GetFDD_TDD_Info (p_TargetCellId); + var SR_PUCCH_ResourceIndex_Type v_Sr_PUCCH_ResourceIndex := f_EUTRA_CellInfo_GetSR_PUCCH_ResourceIndex (p_TargetCellId); + var SR_ConfigIndex_Type v_SR_ConfigIndex := f_EUTRA_CellInfo_GetSR_ConfigIndex (p_TargetCellId); + var template (value) PhysicalConfigDedicated_AntennaInfo_Type v_AntennaInfo := f_EUTRA_CellInfo_GetAntennaInfoDedicated (p_TargetCellId); + + return cs_508_RadioResourceConfigDedicated_HO(v_EUTRA_FDD_TDD_CellInfo.pucch_Config, // @sic R5s120663 change 6 sic@ + v_EUTRA_FDD_TDD_CellInfo.cqi_ReportConfig, + v_EUTRA_FDD_TDD_CellInfo.soundingRS_UL_Config, + v_AntennaInfo, + v_Sr_PUCCH_ResourceIndex, + v_SR_ConfigIndex, + p_Dsr_TransMax); + } + + /* @desc Generates a MobilityControlInfo template based on the input parameters + * If parameters are not input, default values (according to 36.508) will be used. + * @param p_TargetCellId + * @param p_CarrierFreqEutra (default value: omit) + * @param p_RadioResourceConfigCommon (default value: omit) + * @param p_EUTRA_CarrierBandwidth (default value: omit) + * @param p_AdditionalSpectrumEmission (default value: omit) + * @param p_T304 (default value: ms1000) + * @param p_C_RNTI (default value: tsc_C_RNTI_Def2) + * @param p_RACH_ConfigDedicated (default value: omit) + * @param p_PucchConfigCommon_Needed (default value: false) + * @return template (value) MobilityControlInfo + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_Generate_cs_MobilityControlInfo_HO(EUTRA_CellId_Type p_TargetCellId, + template (omit) CarrierFreqEUTRA p_CarrierFreqEutra := omit, + template (omit) RadioResourceConfigCommon p_RadioResourceConfigCommon := omit, + template (omit) CarrierBandwidthEUTRA p_EUTRA_CarrierBandwidth := omit, + template (omit) integer p_AdditionalSpectrumEmission := omit, + MobilityControlInfo.t304 p_T304 := ms1000, + C_RNTI p_C_RNTI := tsc_C_RNTI_Def2, + template (omit) RACH_ConfigDedicated p_RACH_ConfigDedicated := omit, + boolean p_PucchConfigCommon_Needed := false) + runs on EUTRA_PTC return template (value) MobilityControlInfo + { /* @sic R5s120209 change 3: parameter p_PucchConfigCommon_Needed sic@ */ + var template (omit) AntennaInfoCommon v_AntennaInfoCommon := f_EUTRA_CellInfo_GetAntennaInfoCommon (p_TargetCellId); + var EUTRA_CellSysInfo_Type v_EUTRA_CellSysInfo_Type := f_EUTRA_CellInfo_GetSYSINFO(p_TargetCellId); + var RadioResourceConfigCommonSIB v_RadioResourceConfigCommonSIB := v_EUTRA_CellSysInfo_Type.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon; + var PhysCellId v_PhysicalCellIdentity := f_EUTRA_CellInfo_GetPhyCellId(p_TargetCellId); + var template (value) RadioResourceConfigCommon v_RadioResourceConfigCommon; + var template (omit) TDD_Config v_Tdd_Configuration := v_EUTRA_CellSysInfo_Type.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.tdd_Config; + var template (omit) PUCCH_ConfigCommon v_PUCCH_ConfigCommon := omit; + + if (p_PucchConfigCommon_Needed) { + v_PUCCH_ConfigCommon := v_RadioResourceConfigCommonSIB.pucch_ConfigCommon; /* @sic R5s120209 change 3 sic@ */ + } + + if (isvalue(p_RadioResourceConfigCommon)) { + //If non default RadioResourceConfigCommon has been specified, use those values + v_RadioResourceConfigCommon := valueof(p_RadioResourceConfigCommon); + } + else { + //If no RadioResourceConfigCommon-template has been passed in to function generate default one + v_RadioResourceConfigCommon := cs_RadioResourceConfigCommon_Def(v_RadioResourceConfigCommonSIB.rach_ConfigCommon, + cs_PRACH_Config_Def(v_RadioResourceConfigCommonSIB.prach_Config), + v_RadioResourceConfigCommonSIB.pusch_ConfigCommon, + v_RadioResourceConfigCommonSIB.soundingRS_UL_ConfigCommon, + v_Tdd_Configuration, + v_AntennaInfoCommon, + v_PUCCH_ConfigCommon); + if (f_GetTestcaseAttrib_CA_Configured(testcasename())) { // @sic R5-132002 sic@ + if (pc_DualRM_Coding) { + // Dual Reed-Muller coding + v_RadioResourceConfigCommon.uplinkPowerControlCommon_v1020 := cs_UplinkPowerControlUL_CA(deltaF4); + } else { + // Reed-Muller coding + v_RadioResourceConfigCommon.uplinkPowerControlCommon_v1020 := cs_UplinkPowerControlUL_CA(deltaF0); + } + } + } + return cs_MobilityControlInfo(v_PhysicalCellIdentity, + p_CarrierFreqEutra, + p_EUTRA_CarrierBandwidth, + p_AdditionalSpectrumEmission, + p_T304, + p_C_RNTI, + v_RadioResourceConfigCommon, + p_RACH_ConfigDedicated); + } + + /* @desc Wrapper function to generate a MobilityControlInfo template with a specific C-RNTI. + * @param p_TargetCellId + * @param p_C_RNTI + * @param p_CarrierFreqEutra (default value: omit) + * @param p_CarrierBandwidthEUTRA (default value: omit) + * @param p_PucchConfigCommon_Needed (default value: omit) + * @return template (value) MobilityControlInfo + * @status APPROVED (LTE) + */ + function f_Generate_cs_MobilityControlInfo_HO_CRNTI(EUTRA_CellId_Type p_TargetCellId, + C_RNTI p_C_RNTI, + template (omit) CarrierFreqEUTRA p_CarrierFreqEutra := omit, + template (omit) CarrierBandwidthEUTRA p_CarrierBandwidthEUTRA := omit, + boolean p_PucchConfigCommon_Needed := false) + runs on EUTRA_PTC return template (value) MobilityControlInfo + { /* @sic R5s120209 change 3: parameter p_PucchConfigCommon_Needed sic@ */ + return f_Generate_cs_MobilityControlInfo_HO(p_TargetCellId, p_CarrierFreqEutra, -, p_CarrierBandwidthEUTRA, -, -, p_C_RNTI, -, p_PucchConfigCommon_Needed); + } + + /* @desc Wrapper function to generate a MobilityControlInfo template with dedicated resources for RACH procedure. + * @param p_TargetCellId + * @param p_CarrierFreqEutra + * @param p_RACH_ConfigDedicated + * @return template (value) MobilityControlInfo + * @status APPROVED (LTE) + */ + function f_Generate_cs_MobilityControlInfo_HO_RACH(EUTRA_CellId_Type p_TargetCellId, + template (omit) CarrierFreqEUTRA p_CarrierFreqEutra, + template (value) RACH_ConfigDedicated p_RACH_ConfigDedicated, + template (omit) CarrierBandwidthEUTRA p_EUTRA_CarrierBandwidth := omit) runs on EUTRA_PTC return template (value) MobilityControlInfo + { + return f_Generate_cs_MobilityControlInfo_HO(p_TargetCellId, p_CarrierFreqEutra, omit, p_EUTRA_CarrierBandwidth, -, -, -, p_RACH_ConfigDedicated); + } + + /* @desc Wrapper function to generate a MobilityControlInfo template with dedicated resources for RACH procedure and a specific C-RNTI. + * @param p_TargetCellId + * @param p_CarrierFreqEutra + * @param p_C_RNTI + * @param p_RACH_ConfigDedicated + * @return template (value) MobilityControlInfo + * @status APPROVED (LTE) + * + */ + function f_Generate_cs_MobilityControlInfo_HO_CRNTI_RACH(EUTRA_CellId_Type p_TargetCellId, + template (omit) CarrierFreqEUTRA p_CarrierFreqEutra, + C_RNTI p_C_RNTI, + template (value) RACH_ConfigDedicated p_RACH_ConfigDedicated) runs on EUTRA_PTC return template (value) MobilityControlInfo + { + return f_Generate_cs_MobilityControlInfo_HO(p_TargetCellId, p_CarrierFreqEutra, omit, -, -, -, p_C_RNTI, p_RACH_ConfigDedicated); + } + + /* @desc Generates the default MobilityControlInfo template (according to 36.508) and returns the template + * @param p_TargetCellId + * @return template (value) MobilityControlInfo + * @status APPROVED (LTE, LTE_A) + */ + function f_Generate_cs_508_MobilityControlInfo_HO(EUTRA_CellId_Type p_TargetCellId) runs on EUTRA_PTC return template (value) MobilityControlInfo + { + var Frequency_IE_Type v_Frequency_IE := f_EUTRA_CellInfo_GetFrequencyIEs(p_TargetCellId); + var CarrierFreqEUTRA v_CarrierFreqEutra := v_Frequency_IE.UL_DL_Earfcn; + return f_Generate_cs_MobilityControlInfo_HO(p_TargetCellId, v_CarrierFreqEutra, omit); + } + + /* @desc Function for sending IntraLTE HO command to UE with non-default parameters for SecurityConfigHO + * @param p_SourceCellId + * @param p_TargetCellId + * @param p_MobilityControlInfo + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_RRC_ConnReconfigHO_IntraLTE_Mobility(EUTRA_CellId_Type p_SourceCellId, + EUTRA_CellId_Type p_TargetCellId, + template (value) MobilityControlInfo p_MobilityControlInfo, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now) runs on EUTRA_PTC + { + f_EUTRA_RRC_ConnReconfigHO_Common(p_SourceCellId, + omit, + p_MobilityControlInfo, + f_Generate_cs_508_RadioResourceConfigDedicated_HO (p_TargetCellId), + cs_508SecurityConfigHO_IntraLTE, + p_TimingInfo); + } + + /* @desc Function for sending IntraLTE HO command to UE with non-default parameters for SecurityConfigHO MobilityControlInfo + * @param p_SourceCellId + * @param p_TargetCellId + * @param p_MobilityControlInfo + * @param p_SecurityConfigHO + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_RRC_ConnReconfigHO_IntraLTE_MobilitySecurity(EUTRA_CellId_Type p_SourceCellId, + EUTRA_CellId_Type p_TargetCellId, + template (value) MobilityControlInfo p_MobilityControlInfo, + template (value) SecurityConfigHO p_SecurityConfigHO, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now) runs on EUTRA_PTC + { + f_EUTRA_RRC_ConnReconfigHO_Common(p_SourceCellId, + omit, + p_MobilityControlInfo, + f_Generate_cs_508_RadioResourceConfigDedicated_HO (p_TargetCellId), + p_SecurityConfigHO, + p_TimingInfo); + } + + + /* @desc Generic function for IntraLTE HO + * @param p_SourceCellId + * @param p_MeasurementConfiguration + * @param p_MobilityControlInfo + * @param p_RadioResourceConfigDedicated + * @param p_SecurityConfigHO + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_RRC_ConnReconfigHO_Common(EUTRA_CellId_Type p_SourceCellId, + template (omit) MeasConfig p_MeasurementConfiguration, + template (omit) MobilityControlInfo p_MobilityControlInfo, + template (omit) RadioResourceConfigDedicated p_RadioResourceConfigDedicated, + template (omit) SecurityConfigHO p_SecurityConfigHO, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now) runs on EUTRA_PTC + { + SRB.send(cas_SRB1_RrcPdu_REQ(p_SourceCellId, + p_TimingInfo, + cs_RRCConnectionReconfiguration_Common(tsc_RRC_TI_Def, + p_MeasurementConfiguration, + p_MobilityControlInfo, + p_RadioResourceConfigDedicated, + p_SecurityConfigHO))); + } + + //---------------------------------------------------------------------------- + /* + * @desc Common function to send RRCConnectionReconfiguration which contains MeasConfig and to receive RRCConnectionReconfiguration + * The function takes care of whether measurement gaps need to be configured at the SS or not + * @param p_CellId + * @param p_RRCConnectionReconfiguration + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_RRCConnectionReconfiguration_MeasConfig(EUTRA_CellId_Type p_CellId, + template (value) DL_DCCH_Message p_RRCConnectionReconfiguration) runs on EUTRA_PTC + { /* NOTE: this function shall be applied for all cases when measConfig is contained in the RRCConnectionReconfiguration + * i.e. even when the MeasConfig does not contain any measGapConfig (for the time being) the function shall be used to be future proven */ + var RRC_TransactionIdentifier v_RRC_TI := valueof(p_RRCConnectionReconfiguration.message_.c1.rrcConnectionReconfiguration.rrc_TransactionIdentifier); + var template (value) MeasGapCtrl_Type v_MeasGapCtrl; + var template (value) MeasGapConfig v_MeasGapConfig; + var SubFrameTiming_Type v_Timing; + + if (ispresent(p_RRCConnectionReconfiguration.message_.c1.rrcConnectionReconfiguration.criticalExtensions.c1.rrcConnectionReconfiguration_r8.measConfig.measGapConfig)) { + + v_MeasGapConfig := valueof(p_RRCConnectionReconfiguration.message_.c1.rrcConnectionReconfiguration.criticalExtensions.c1.rrcConnectionReconfiguration_r8.measConfig.measGapConfig); // valueof ok due to previous check with ispresent + + if (ischosen(v_MeasGapConfig.setup)) { + v_MeasGapCtrl := cs_MeasGapCtrl_Config(v_MeasGapConfig); + } else { + v_MeasGapCtrl := cs_MeasGapCtrl_None; + } + + v_Timing := f_EUTRA_GetNextSendOccasion(p_CellId); + SRB.send(cas_SRB1_RrcPdu_REQ(p_CellId, cs_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number), p_RRCConnectionReconfiguration)); + + v_Timing := f_EUTRA_TimingInfoAdd(v_Timing, 5); // add 5ms + f_EUTRA_SS_MeasGapCtrlConfig(p_CellId, v_MeasGapCtrl, cs_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number)); + } + else { + SRB.send(cas_SRB1_RrcPdu_REQ(p_CellId, cs_TimingInfo_Now, p_RRCConnectionReconfiguration)); + } + SRB.receive(car_SRB1_RrcPdu_IND(p_CellId, cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + } + + //---------------------------------------------------------------------------- + /* + * @desc RRC connection release acc. to 36.523-3 clause 7.18 + * @param p_CellId + * @param p_TimingAtT + * @param p_DrbConfigList (default value: cs_DrbConfigList_Def) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_RRC_ConnectionRelease_Local(EUTRA_CellId_Type p_CellId, + SubFrameTiming_Type p_TimingAtT, + template (value) RadioBearerList_Type p_DrbConfigList := cs_DrbConfigList_Def) runs on EUTRA_PTC + { /* NOTE: the function schedules all steps to release and reconfigure the SRBs and (default) DRB + * => this will in fact happen in the future */ + /* @sic R5-110803 change 13 sic@ */ + /* @sic R5s110634 MCC160 implementation of change 1.1: new parameter p_DrbConfigList sic@ */ + /* @sic R5s110743: release MeasGapConfig sic@ */ + var SubFrameTiming_Type v_Timing := p_TimingAtT; + var DRB_IdentityList_AllAndAMonly_Type v_DRB_IdentityList; + + // Build DRB identity list from inputed radiobearer config list + v_DRB_IdentityList := f_EUTRA_DRB_IdentityList(p_DrbConfigList); + + /* Step 1 at T: disable the UL grant + * => it is not possible for the UE to send any ACK for the RRC Connecion Release) + * => UE has to wait until 60ms timer has timed out (-> 36.331 cl. 5.3.8.3) */ + f_EUTRA_StopULGrantTransmission(p_CellId, cs_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number)); + + /* Step 2 at T+5ms: release security */ + v_Timing := f_EUTRA_TimingInfoAdd(p_TimingAtT, 5); + f_EUTRA_SS_RRC_ReleaseSecurity(p_CellId, cs_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number)); + + /* Step 3 at T+10ms: release DRX */ + v_Timing := f_EUTRA_TimingInfoAdd(p_TimingAtT, 10); + f_EUTRA_SS_DrxCtrlConfig(p_CellId, cs_DrxCtrl_None, cs_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number)); + + /* Step 3A at T+15ms: release MeasGapConfig */ + v_Timing := f_EUTRA_TimingInfoAdd(p_TimingAtT, 15); + f_EUTRA_SS_MeasGapCtrlConfig(p_CellId, cs_MeasGapCtrl_None, cs_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number)); + + /* Step 4 (obsolete) */ + + /* Step 5 at T+55ms: Release SRBs and DRBs */ + v_Timing := f_EUTRA_TimingInfoAdd(p_TimingAtT, 55); + f_EUTRA_SS_SRBs_DRBs_Release(p_CellId, cs_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number), v_DRB_IdentityList.All); + + /* Step 6 at T+60ms: Configure SRBs and DRBs */ + v_Timing := f_EUTRA_TimingInfoAdd(p_TimingAtT, 60); + f_EUTRA_SS_SRBs_DRBs_Config(p_CellId, cs_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number), p_DrbConfigList); + } + + //---------------------------------------------------------------------------- + /* + * @desc RRC connection release acc. to 36.331 cl. 5.3.8; 36.523-3 cl. 7.4.2 + * @param p_CellId + * @param p_RRCConnectionRelease + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @param p_DrbConfigList (default value: cs_DrbConfigList_Def) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_RRC_ConnectionRelease_Common(EUTRA_CellId_Type p_CellId, + template (value) DL_DCCH_Message p_RRCConnectionRelease, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now, + template (value) RadioBearerList_Type p_DrbConfigList := cs_DrbConfigList_Def) runs on EUTRA_PTC + { /* @sic R5-110803 change 13 sic@ */ + /* @sic R5s110634 MCC160 implementation of change 1.1: new parameter p_DrbConfigList sic@ */ + /* @sic R5-123740 change 2: additional delay of 640ms at the end of the generic RRC Connection Release procedure (result of AP#55.04, replacing R5-1421779 change 14) sic@ */ + var SubFrameTiming_Type v_TimingAtT; // time T: sending of RRCConnectionRelease acc. to 36.523-3 clause 7.18 + var SubFrameTiming_Type v_TimingNow; + var integer v_MilliSecondsDelay := tsc_EUTRA_DelayBeforeIntraCellHO; + var integer v_Duration; + + timer t_Timer; + + if (f_TimingInfo_IsNow(p_TimingInfo)) { + v_TimingAtT := f_EUTRA_GetNextSendOccasion(p_CellId, v_MilliSecondsDelay); + v_Duration := v_MilliSecondsDelay; + } + else { + // dedicated timing info is given + v_TimingAtT := valueof(p_TimingInfo.SubFrame); + v_TimingNow := f_EUTRA_GetCurrentTiming(p_CellId); + v_Duration := f_EUTRA_SubFrameTimingDuration(v_TimingNow, v_TimingAtT); + } + v_Duration := v_Duration + tsc_EUTRA_DelayAfterRRCConnectionRelease; // @sic R5s120683 sic@ + t_Timer.start (int2float(v_Duration) / 1000.0); + + SRB.send(cas_SRB1_RrcPdu_REQ(p_CellId, + cs_TimingInfo(v_TimingAtT.SFN.Number, v_TimingAtT.Subframe.Number), + p_RRCConnectionRelease)); + + f_EUTRA_RRC_ConnectionRelease_Local(p_CellId, v_TimingAtT, p_DrbConfigList); + + alt { + [] t_Timer.timeout {} + [] SRB.check(receive(car_SRB0_RrcPdu_IND(?, cr_RRCConnectionRequest(cr_EstablishmentCause_Any)))) { + // there is an RRCConnectionRequest sent by the UE which can be received by TTCN-3 in a sub-sequent function + t_Timer.stop; + } + } + } + + /* + * @desc RRC connection release acc. to 36.331 cl. 5.3.8 + * @param p_CellId + * @param p_RRC_TI (default value: tsc_RRC_TI_Def) + * @param p_ReleaseCause (default value: other) + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @param p_DrbConfigList (default value: cs_DrbConfigList_Def) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_RRC_ConnectionRelease(EUTRA_CellId_Type p_CellId, + RRC_TransactionIdentifier p_RRC_TI := tsc_RRC_TI_Def, + ReleaseCause p_ReleaseCause := other, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now, + template (value) RadioBearerList_Type p_DrbConfigList := cs_DrbConfigList_Def) runs on EUTRA_PTC + { /* @sic R5-110803 change 13 sic@ */ + /* @sic R5s110634 MCC160 implementation of change 1.1: new parameter p_DrbConfigList sic@ */ + f_EUTRA_RRC_ConnectionRelease_Common(p_CellId, cs_RRCConnectionRelease(p_RRC_TI, p_ReleaseCause), p_TimingInfo, p_DrbConfigList); + } + + //---------------------------------------------------------------------------- + /* + * @desc Function that acquires the FDD/TDD specific templates and sends RRCConnectionReestablishment + * according to 36.508 cl. 4.6.1 Table 4.6.1-10 + * @param p_CellId + * @param p_RRC_TI (default value: tsc_RRC_TI_Def) + * @param p_NextHopChainingCount (default value: 0) + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_RRC_RRCConnectionReestablishment_Def(EUTRA_CellId_Type p_CellId, + RRC_TransactionIdentifier p_RRC_TI := tsc_RRC_TI_Def, + NextHopChainingCount p_NextHopChainingCount := 0) runs on EUTRA_PTC + { /* @sic R5-120497: parameters p_CQI_ReportingPeriodic and p_SoundingRsUl_ConfigDedicated for cs_508_PhysicalConfigDedicated_Default_SRB1 sic@ + * Note: the previous branching depending on p_NextHopChainingCount is not needed */ + var template (value) EUTRA_FDD_TDD_CellInfo_Type v_EUTRA_FDD_TDD_Info := f_EUTRA_CellInfo_GetFDD_TDD_Info( p_CellId); + var SR_PUCCH_ResourceIndex_Type v_Sr_PUCCH_ResourceIndex := f_EUTRA_CellInfo_GetSR_PUCCH_ResourceIndex(p_CellId); + var template (value) PhysicalConfigDedicated_AntennaInfo_Type v_AntennaInfo := f_EUTRA_CellInfo_GetAntennaInfoDedicated (p_CellId); + var SR_ConfigIndex_Type v_SR_ConfigIndex := f_EUTRA_CellInfo_GetSR_ConfigIndex (p_CellId); + var template (value) RadioResourceConfigDedicated v_RadioResourceConfigDedicated_SRB1; + + v_RadioResourceConfigDedicated_SRB1 := cs_508_RadioResourceConfigDedicated_SRB1(cs_MAC_MainConfig_SRB1, + cs_508_PhysicalConfigDedicated_Default_SRB1(v_EUTRA_FDD_TDD_Info.pucch_Config, + v_EUTRA_FDD_TDD_Info.cqi_ReportConfig, // @sic R5-120497 sic@ + v_EUTRA_FDD_TDD_Info.soundingRS_UL_Config, // @sic R5-120497 sic@ + v_Sr_PUCCH_ResourceIndex, + v_AntennaInfo, + v_SR_ConfigIndex)); + f_EUTRA_StartDefULGrantTransmission(p_CellId); /* @sic R5-120721 change 3 sic@ */ + + SRB.send (cas_SRB0_RrcPdu_REQ(p_CellId, cs_TimingInfo_Now, cs_RRCConnectionReestablishment_Common(p_RRC_TI, + v_RadioResourceConfigDedicated_SRB1, + p_NextHopChainingCount))); + } + + //---------------------------------------------------------------------------- + /* + * @desc Function for resuming SRB2 and existing DRBs after successful completion of the RRC Connection Re-establishment procedure. + * Procedure is according to 36.330 cl. 5.3.5.3 with default values according to + * - for RRCConnectionReconfiguration : 36.508 Table 4.6.1-8 using value RadioResourceConfigDedicated-HO + * - for RRCConnectionReconfigurationComplete : 36.508 Table 4.6.1-9 + * @param p_CellId + * @param p_RRC_TI + * @param p_MeasConfig (default value: omit) + * @param p_PUCCH_ConfigIncluded (default value: false) + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_RRC_RRCConnectionReconfiguration_Resume_SRB2_DRBs(EUTRA_CellId_Type p_CellId, + RRC_TransactionIdentifier p_RRC_TI, + template (omit) MeasConfig p_MeasConfig := omit, + boolean p_PUCCH_ConfigIncluded := false) // @sic R5s130367 sic@ + runs on EUTRA_PTC + { + //Get FDD or TDD mode from Cell-configuration + var template (value) EUTRA_FDD_TDD_CellInfo_Type v_EUTRA_FDD_TDD_Info := f_EUTRA_CellInfo_GetFDD_TDD_Info( p_CellId); + var template (value) PhysicalConfigDedicated_AntennaInfo_Type v_AntennaInfo := f_EUTRA_CellInfo_GetAntennaInfoDedicated (p_CellId); + var SR_PUCCH_ResourceIndex_Type v_Sr_PUCCH_ResourceIndex := f_EUTRA_CellInfo_GetSR_PUCCH_ResourceIndex(p_CellId); + var SR_ConfigIndex_Type v_SR_ConfigIndex := f_EUTRA_CellInfo_GetSR_ConfigIndex(p_CellId); + var template (omit) PUCCH_ConfigDedicated v_PucchConfigDedicated := omit; // @sic R5s130367 sic@ + + if(p_PUCCH_ConfigIncluded) { // @sic R5s130367 sic@ + v_PucchConfigDedicated := v_EUTRA_FDD_TDD_Info.pucch_Config; + } + + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(p_CellId, + cs_RRCConnReconfig_Resume_SRB2_DRBs(p_RRC_TI, + v_EUTRA_FDD_TDD_Info.cqi_ReportConfig, + v_EUTRA_FDD_TDD_Info.soundingRS_UL_Config, + v_AntennaInfo, + v_Sr_PUCCH_ResourceIndex, + v_SR_ConfigIndex, + p_MeasConfig, + v_PucchConfigDedicated)); // @sic R5s130367 sic@ @sic R5s130442 sic @sic R5s130982 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc To check the EUTRA release reported by UE against the tc release + * @param p_ReleaseIndicator_UE + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRAN_CheckReleaseIndicator(AccessStratumRelease p_ReleaseIndicator_UE) + { // @sic R5-123750 sic@ + select (f_GetTestcaseAttrib_Eutra_Release (testcasename())) { + case ("") { // rel8 + } + case ("rel_9") { // >= rel9 + if (not match(p_ReleaseIndicator_UE, complement(rel8))) { + f_SetVerdictInconc (__FILE__, __LINE__, "Wrong Access Stratum release indicator"); + } + } + case ("rel_10") { // >= rel10 + if (not match(p_ReleaseIndicator_UE, complement(rel8, rel9))) { + f_SetVerdictInconc (__FILE__, __LINE__, "Wrong Access Stratum release indicator"); + } + } + case ("rel_11") { // >= rel11 + if (not match(p_ReleaseIndicator_UE, complement(rel8, rel9, rel10))) { //@sic R5-142980 sic@ + f_SetVerdictInconc (__FILE__, __LINE__, "Wrong Access Stratum release indicator"); + } + } + case ("rel_12") { // >= rel12 //@sic R5-142980: added rel-12 tc sic@ + if (not match(p_ReleaseIndicator_UE, complement(rel8, rel9, rel10, rel11))) { + f_SetVerdictInconc (__FILE__, __LINE__, "Wrong Access Stratum release indicator"); + } + } + case else { + FatalError(__FILE__, __LINE__, ""); + } + } + } + + //---------------------------------------------------------------------------- + /* + * @desc Send UECapabilityEnquiry message and receives UECapabilityInformation message. + * The received UE Capabilities are decoded and stored in the structure for the Mobile Info. + * @param p_CellId + * @param p_RRC_TI + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_Capability(EUTRA_CellId_Type p_CellId, + RRC_TransactionIdentifier p_RRC_TI) runs on EUTRA_PTC + { + var SRB_COMMON_IND v_ReceivedAspForUeCapabilityInfo; + var UE_EUTRA_Capability v_EutraCapability; + + SRB.send(cas_SRB1_RrcPdu_REQ(p_CellId, cs_TimingInfo_Now, cs_508_UeCapabilityEnquiry(p_RRC_TI))); + SRB.receive(car_SRB1_RrcPdu_IND(p_CellId, cr_UeCapabilityInformation_Any(p_RRC_TI))) + -> value v_ReceivedAspForUeCapabilityInfo; + + // Decode and store the ueCapabilitiesRAT-Container + v_EutraCapability := f_EUTRA_DecodeEutraCapMsg(v_ReceivedAspForUeCapabilityInfo.Signalling.Rrc.Dcch.message_.c1.ueCapabilityInformation.criticalExtensions.c1.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList[0].ueCapabilityRAT_Container); + f_EUTRA_MobileInfo_SetUECapability (v_EutraCapability); + + // Check the UE release + // @sic R5-123750 sic@ + f_EUTRAN_CheckReleaseIndicator (v_EutraCapability.accessStratumRelease); + + select (v_EutraCapability.accessStratumRelease) { // @sic R5-121847 sic@ @sic R5-123750 sic@ + case (rel8) { + if (f_Bitstring_BitIsSet(v_EutraCapability.featureGroupIndicators, 30)) { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "FGI bit 31 not set to 0"); + } + if (f_Bitstring_BitIsSet(v_EutraCapability.featureGroupIndicators, 31)) { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "FGI bit 32 not set to 0"); + } + } + case (rel9) { // @sic R5-123750 sic@ + /* @sic R5s120653 sic@ + if (not f_Bitstring_BitIsSet(v_EutraCapability.featureGroupIndicators, 4)) { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "FGI bit 5 not set to 1"); + } + if (not f_Bitstring_BitIsSet(v_EutraCapability.featureGroupIndicators, 5)) { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "FGI bit 6 not set to 1"); + } + if (not f_Bitstring_BitIsSet(v_EutraCapability.featureGroupIndicators, 15)) { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "FGI bit 16 not set to 1"); + } + if (not f_Bitstring_BitIsSet(v_EutraCapability.featureGroupIndicators, 16)) { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "FGI bit 17 not set to 1"); + } + if (not f_Bitstring_BitIsSet(v_EutraCapability.featureGroupIndicators, 17)) { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "FGI bit 18 not set to 1"); + } + if (not f_Bitstring_BitIsSet(v_EutraCapability.featureGroupIndicators, 19)) { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "FGI bit 20 not set to 1"); + } + if (f_Bitstring_BitIsSet(v_EutraCapability.featureGroupIndicators, 30)) { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "FGI bit 31 not set to 0"); + } + if (f_Bitstring_BitIsSet(v_EutraCapability.featureGroupIndicators, 31)) { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "FGI bit 32 not set to 0"); + } + */ + } + case (rel10) { // @sic R5s130064 sic@ + } + case (rel11) { // @sic R5s130195 sic@ + } + case else{ + FatalError (__FILE__, __LINE__, "accessStratumRelease not yet considered"); + } + } + } + + //============================================================================ + + /* + * @desc Calculate the BCCH modification period length in radio frames as per 36.331 cl 6.3.2 + * @param p_CellId + * @return integer + * @status APPROVED (IMS, LTE, LTE_A, LTE_IRAT) + */ + function f_CalculateModificationPeriod(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return integer + { + var integer v_PagingCycle; + var integer v_ModPeriodcoef; + var integer v_ModificationPeriodFrames; + var EUTRA_CellSysInfo_Type v_Sysinfo := f_EUTRA_CellInfo_GetSYSINFO (p_CellId); + var PCCH_Config v_PcchConfig := f_EUTRA_CellInfo_GetPCCH_ConfigInSYSINFO(p_CellId); + + // Get the modification period coefficient from sysinfo + select (v_Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon.bcch_Config.modificationPeriodCoeff){ + case (n2) {v_ModPeriodcoef:=2} + case (n4) {v_ModPeriodcoef:=4} + case (n8) {v_ModPeriodcoef:=8} + case else{ + FatalError (__FILE__, __LINE__, "invalid modification period coefficient"); + } + } + + // Get paging cycle from sysinfo + v_PagingCycle := f_EUTRA_GetPagingCycleValue (v_PcchConfig.defaultPagingCycle); + + // As per 36.331 cl 6.3.2: modification period in radio frames= modificationPeriodCoeff * defaultPagingCycle. + v_ModificationPeriodFrames := v_PagingCycle*v_ModPeriodcoef; /* @sic R5s100020 sic@ */ + + return v_ModificationPeriodFrames; + } + + //---------------------------------------------------------------------------- + /* + * @desc Trigger SS to send paging request to indicate sysinfo modification to UE from a given SFN + * @param p_CellId + * @param p_StartSFN + * @param p_UE_State (default value: RRC_IDLE) + * @param p_SystemInfoModification (default value: true_) + * @param p_EtwsIndication (default value: omit) + * @param p_CMAS_Paging (default value: omit) + * @status APPROVED (IMS, LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_UE_PageSysinfoMod(EUTRA_CellId_Type p_CellId, + SystemFrameNumber_Type p_StartSFN, + EUTRA_RRC_STATE_Type p_UE_State := RRC_IDLE, // @sic R5-110803 change 4: add new parameter sic@ + template (omit) Paging_SystemInfoModification_Type p_SystemInfoModification := true_, + template (omit) Paging_ETWS_Indication p_EtwsIndication := omit, + template (omit) Paging_v890_IEs p_CMAS_Paging := omit) // @sic R5-121854 sic@ + runs on EUTRA_PTC + { + // @sic R5-110803 change 4 sic@ + var PCCH_Config v_SI_Pcch_Configuration := f_EUTRA_CellInfo_GetPCCH_ConfigInSYSINFO(p_CellId); // Derive DRX params from SYS Info + var EUTRA_FDD_TDD_Mode_Type v_EUTRA_FDD_TDD_Mode := f_EUTRA_CellInfo_GetFDD_TDD(p_CellId); // Derive FDD or TDD mode from Cell-configuration + var SubFrameTimingList_Type v_PoList; + var template (value) SubframeOffsetList_Type v_SubframeOffsetList; + var template (value) SubFrameTiming_Type v_SubFrameTiming; + var integer v_T := f_EUTRA_GetPagingCycleValue(v_SI_Pcch_Configuration.defaultPagingCycle); + var EUTRA_CellSysInfo_Type v_Sysinfo := f_EUTRA_CellInfo_GetSYSINFO (p_CellId); + var integer v_ModPeriodcoef, v_Nb, v_Ns, i, k; + + // Get the modification period coefficient from sysinfo + select (v_Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon.bcch_Config.modificationPeriodCoeff){ + case (n2) {v_ModPeriodcoef:=2} + case (n4) {v_ModPeriodcoef:=4} + case (n8) {v_ModPeriodcoef:=8} + case else{ FatalError (__FILE__, __LINE__, "invalid modification period coefficient");} + } + + select (p_UE_State) { + case (RRC_IDLE) { + // When UE is in IDLE mode: page UE at PF/PO calulated as per 36.304 cl 9 + // Paging is sent at PF/PO during the modification Period: paging is sent modificationPeriodCoef times + + // Calculate next Paging Occassion + v_PoList := f_EUTRA_Calculate_PF_PO(p_StartSFN, v_SI_Pcch_Configuration.defaultPagingCycle, v_SI_Pcch_Configuration.nB, px_IMSI_Def, v_EUTRA_FDD_TDD_Mode); + // Calculate the subframe offset list + // Page UE in each pagingCycle + // The first offset is 0: the first reference time is the PagingOccassion + v_SubFrameTiming := v_PoList[0]; + for (i := 0; i < v_ModPeriodcoef; i := i + 1) { + v_SubframeOffsetList[i] := i*v_T*10; + } + } + case (RRC_CONNECTED) { + // When UE is in CONNECTED mode, page UE during the complete modification period + //* @desc Calculate integer type nB based on enumerated type p_Nb and integer type T + select (v_SI_Pcch_Configuration.nB) { + case (fourT) { v_Nb := 4*v_T; } + case (twoT) { v_Nb := 2*v_T; } + case (oneT) { v_Nb := v_T; } + case (halfT) { v_Nb := v_T/2; } + case (quarterT) { v_Nb := v_T/4; } + case (oneEighthT) { v_Nb := v_T/8; } + case (oneSixteenthT) { v_Nb := v_T/16; } + case (oneThirtySecondT) { v_Nb := v_T/32; } + case else { FatalError(__FILE__, __LINE__, "Provided value for nB is unrecognizable"); } + } + + // Derive N and Ns based on values on nB and T + if (1 >= (v_Nb/v_T)) { + v_Ns := 1; + } else { + v_Ns := v_Nb/v_T; + } + + // When UE supports ETWS or CMAS, then Paging message is send during a Paging cycle only + // Acc. 36.331 cl 5.2.1.3 + if (pc_ETWS_message or pc_CMAS_Message) { // @sic R5-121854 sic@ + v_ModPeriodcoef := 1; + } + // Calculate the subframe offset list + // Page UE at each SFN of the modification period or pagyingCycle for ETWS/CMAS capable UE + select (v_Ns) { + case (1) { + // Calculate the first Paging Frame and Paging Occassion + if (v_EUTRA_FDD_TDD_Mode == FDD) { + v_SubFrameTiming := cs_SubFrameTiming(p_StartSFN, 9); + } else { // TDD + v_SubFrameTiming := cs_SubFrameTiming(p_StartSFN, 0); + }; + // Calculate the offset list + // for FDD page at subframes 9 (offset 10) + // for TDD page at subframes 0 (offset 10) + // The first offset is 0: the first reference time is the PagingOccassion + for (i := 0; i < (v_ModPeriodcoef*v_T) ; i := i + 1) { + v_SubframeOffsetList[i] := i*10; + } + } + case (2) { + // Calculate the first Paging Frame and Paging Occassion + if (v_EUTRA_FDD_TDD_Mode == FDD) { + v_SubFrameTiming := cs_SubFrameTiming(p_StartSFN, 4); + } else { // TDD + v_SubFrameTiming := cs_SubFrameTiming(p_StartSFN, 0); + }; + // Calculate the offset acc to 36.304 cl 7.2 + // for FDD page at subframes 4,9 (offset 5) + // for TDD page at subframes 0,5 (offset 5) + // The first offset is 0: the first reference time is the PagingOccassion + for (i := 0; i < (v_ModPeriodcoef*v_T*2); i := i + 1) { + v_SubframeOffsetList[i] := i*5; + } + } + case (4) { + // Calculate the first Paging Frame and Paging Occassion + v_SubFrameTiming := cs_SubFrameTiming(p_StartSFN, 0); + // Calculate all subframe offsets acc to 36.304 cl 7.2 + // The first offset is 0: the first reference time is the PagingOccassion + k:=0; // Used to calculate the frame offset + for (i := 1; i < (v_ModPeriodcoef*v_T*4); i := i + 4) { + // i is used to point the elements in the list + if (v_EUTRA_FDD_TDD_Mode == FDD) { + // For FDD page at subframes 0,4,5,9 + v_SubframeOffsetList[i] := k*10; + v_SubframeOffsetList[i+1] := k*10+4; + v_SubframeOffsetList[i+2] := k*10+5; + v_SubframeOffsetList[i+3] := k*10+9; + } else { + // For TDD page at subframes 0,1,5,6 + v_SubframeOffsetList[i] := k*10; + v_SubframeOffsetList[i+1] := k*10+1; + v_SubframeOffsetList[i+2] := k*10+5; + v_SubframeOffsetList[i+3] := k*10+6; + } + k := k+1; + } + } + case else {FatalError(__FILE__, __LINE__, "Ns has unrecognizable value");} + } + } + case else {FatalError(__FILE__, __LINE__, "UE State has unrecognizable value");} + } + // Send Paging indicating SysinfoModification + SYS.send(cas_CellConfig_PagingSysinfoMod_REQ(p_CellId, v_SubFrameTiming, omit, v_SubframeOffsetList, p_SystemInfoModification, p_EtwsIndication, p_CMAS_Paging)); + + /* @sic R5s100135 CNF removed sic@ */ + } + + // --------------------------------------------------------------------------------------------- + //----------------------------FUNCTION to modify SYSINFO during a test execution --------------- + + /* + * @desc Modify sysinfo without activation time or with a specific activaionTime + * No Paging - no valueTag change + * To be used when the cell is switched off or when sysinfo shall be modified immediately (e.g. ETWS) + * @param p_CellId + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @param p_ChangeValueTag (default value: true; @sic R5s130076 sic@) + * @param p_StopSib1Transmission (default value: omit) + * @status APPROVED (IMS, LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_SS_ConfigureSysinfo(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now, + boolean p_ChangeValueTag := true, + template (omit) Null_Type p_StopSib1Transmission := omit) //@sic R5-142409 sic@ + runs on EUTRA_PTC + { + var template (value) AllSiSchedul_Type v_SiSchedul; + var EUTRA_CellSysInfo_Type v_Sysinfo:= f_EUTRA_CellInfo_GetSYSINFO (p_CellId); // Get SYSINFO to be sent + var EUTRA_FDD_TDD_Mode_Type v_EUTRA_FDD_TDD_Mode := f_EUTRA_CellInfo_GetFDD_TDD(p_CellId); + + // Increment the VALUE TAG if neeeded + //@sic R5s130076 sic@ + if (p_ChangeValueTag) { + v_Sysinfo.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.systemInfoValueTag := + (v_Sysinfo.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.systemInfoValueTag + 1) mod 32; + f_EUTRA_SetSysinfo (p_CellId,v_Sysinfo); // Save SYSINFO with the new valueTag in the record + f_EUTRA_SetSB1_ValueTag (p_CellId, false); // Set the flag to FALSE + } + + v_SiSchedul := f_EUTRA_SS_SetupSchedulingInfo(v_Sysinfo.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1, v_EUTRA_FDD_TDD_Mode); /* derive SS's scheduling information from SIB1 */ + + f_EUTRA_SS_CommonCellConfig(p_CellId, + cas_ModifySysinfo_Def_REQ(p_CellId, + p_TimingInfo, + v_SiSchedul, /* scheduling of SIs */ + v_Sysinfo.BCCH_Info, /* system information to be scheduled */ + f_EUTRA_CellInfo_GetDL_ChBandwidth (p_CellId), + p_StopSib1Transmission) + ); + } + + /* + * @desc - Change SB1_ValueTagChanged == true + * - Page UE and Send the modified SYSINFO + * @param p_CellId + * @param p_ChangeValueTag (default value: true) + * @param p_PagingFlag (default value: true) + * @param p_UE_State (default value: RRC_IDLE) + * @param p_EtwsIndication (default value: omit) + * @param p_CMAS_Paging (default value: omit) + * @status APPROVED (LTE) + */ + function f_EUTRA_ModifySysinfo_PWS(EUTRA_CellId_Type p_CellId, + boolean p_ChangeValueTag := true, + boolean p_PagingFlag := true, + EUTRA_RRC_STATE_Type p_UE_State := RRC_IDLE, + template (omit) Paging_ETWS_Indication p_EtwsIndication := omit, // @sic R5-121854 sic@ + template (omit) Paging_v890_IEs p_CMAS_Paging := omit) runs on EUTRA_PTC + { + var SystemFrameNumber_Type v_Timing_SFN, v_TimeOfPaging; + var SubFrameTiming_Type v_Timing; + var PCCH_Config v_PcchConfig := f_EUTRA_CellInfo_GetPCCH_ConfigInSYSINFO(p_CellId); // @sic R5-123740 sic@ + var integer v_PagingCycle := f_EUTRA_GetPagingCycleValue (v_PcchConfig.defaultPagingCycle); // @sic R5-123740 sic@ + + + // Increment the VALUE TAG in f_EUTRA_SS_ConfigureSysinfo @sic R5s130513 sic@ + + //Get the current SFN and subframe + v_Timing := f_EUTRA_GetCurrentTiming(p_CellId); + + //Add processing delay to current SFN + v_Timing_SFN := (v_Timing.SFN.Number + tsc_SfnDelay) mod 1024; + + // Send Paging is required + if (p_PagingFlag) { + v_Timing_SFN := (v_Timing_SFN + (v_PagingCycle - v_Timing_SFN mod v_PagingCycle)) mod 1024; // @sic R5-123740 sic@ + v_TimeOfPaging := v_Timing_SFN; + + //Page UE from the start of v_TimeOfPaging + //based on above calculation + f_EUTRA_UE_PageSysinfoMod( p_CellId, v_TimeOfPaging, p_UE_State, omit, p_EtwsIndication, p_CMAS_Paging); + } + + f_EUTRA_SS_ConfigureSysinfo (p_CellId, cs_TimingInfo_SFN(v_Timing_SFN), p_ChangeValueTag); // @sic R5s120130 sic@ + } + + /* + * @desc - Change SB1_ValueTagChanged == true + * - Page UE and Send the modified SYSINFO + * @param p_CellId + * @param p_PagingFlag (default value: true) + * @param p_UE_State (default value: RRC_IDLE) + * @status APPROVED (IMS, LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_ModifySysinfo(EUTRA_CellId_Type p_CellId, + boolean p_PagingFlag := true, + EUTRA_RRC_STATE_Type p_UE_State := RRC_IDLE) // @sic R5-110803 change 4: add new parameter sic@ + runs on EUTRA_PTC + { // @sic R5-110803 change 4: add new parameters sic@ + f_EUTRA_SetSB1_ValueTag (p_CellId, true); + f_EUTRA_ModifySysinfo_ValueTag(p_CellId, p_PagingFlag, p_UE_State); + } + + /* + * @desc - Increment the valueTag in SIB1(if SB1_ValueTagChanged == true) + * - Page UE (depending on p_PagingFlag) + * - Send the modified SYSINFO + * @param p_CellId + * @param p_PagingFlag (default value: true) + * @param p_UE_State (default value: RRC_IDLE) + * @param p_StopSib1Transmission (default value: omit) + * @return SystemFrameNumber_Type (time at which the paging will happen) + * @status APPROVED (IMS, LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_ModifySysinfo_ValueTag(EUTRA_CellId_Type p_CellId, + boolean p_PagingFlag := true, + EUTRA_RRC_STATE_Type p_UE_State := RRC_IDLE, + template (omit) Null_Type p_StopSib1Transmission := omit //@sic R5-142409 sic@ + ) // @sic R5-110803 change 4: add new parameter sic@ + runs on EUTRA_PTC return SystemFrameNumber_Type + { //@sic R5-104157 return SystemFrameNumber_Type sic@ + var SubFrameTiming_Type v_Timing; + var SystemFrameNumber_Type v_StartNextModPeriod, v_Timing_SFN, v_TimeOfPaging, v_StartNextPagingCycle; //@sic R5s100475 cl. 4.3 Additional changes sic@ + var EUTRA_CellSysInfo_Type v_Sysinfo:= f_EUTRA_CellInfo_GetSYSINFO (p_CellId); // Get SYSINFO to be sent + var integer v_ModificationPeriodFrames := f_CalculateModificationPeriod (p_CellId); + var PCCH_Config v_PcchConfig := f_EUTRA_CellInfo_GetPCCH_ConfigInSYSINFO(p_CellId); //@sic R5s100475 cl. 4.3 Additional changes sic@ + var integer v_PagingCycle := f_EUTRA_GetPagingCycleValue (v_PcchConfig.defaultPagingCycle); //@sic R5s100475 cl. 4.3 Additional changes sic@ + + // Increment the VALUE TAG in f_EUTRA_SS_ConfigureSysinfo @sic R5s130513 sic@ + + //Get the current SFN and subframe + v_Timing := f_EUTRA_GetCurrentTiming(p_CellId); + + //Add processing delay to current SFN + v_Timing_SFN := (v_Timing.SFN.Number + tsc_SfnDelay) mod 1024; //@sic R5s100475 cl. 4.3 Additional changes sic@ + + // Calculate the next Modification Period + // @sic R5s100475 cl. 4.3 Additional changes sic@ + v_StartNextModPeriod := (v_Timing_SFN + (v_ModificationPeriodFrames -(v_Timing_SFN mod v_ModificationPeriodFrames)))mod 1024; + + //@sic R5s100475 cl. 4.3 Additional changes sic@ + if (p_PagingFlag) { + v_TimeOfPaging := v_StartNextModPeriod; + v_StartNextModPeriod := (v_StartNextModPeriod + v_ModificationPeriodFrames) mod 1024; + + if ((p_UE_State == RRC_CONNECTED) and not(pc_ETWS_message or pc_CMAS_Message)) { + // When UE is in connected mode, paging message will be sent during a complete modification period + // Add a longer processing delay to current SFN + v_Timing_SFN := (v_Timing.SFN.Number + tsc_SfnDelayConnected) mod 1024; // @sic R5s100475 cl. 4.3 Additional changes sic@ + v_StartNextModPeriod := (v_Timing_SFN + (v_ModificationPeriodFrames -(v_Timing_SFN mod v_ModificationPeriodFrames)))mod 1024; + v_TimeOfPaging := v_StartNextModPeriod; + v_StartNextModPeriod := (v_StartNextModPeriod + v_ModificationPeriodFrames) mod 1024; + } + + if ((p_UE_State == RRC_CONNECTED) and (pc_ETWS_message or pc_CMAS_Message)) { + // When UE is in connected mode and UE suppports ETWS/CMAS, the paging is sent during a pagingCycle + // Send Paging messages at the next PagingCycle + // Send SYSINFO at the next modificationPeriod + v_StartNextPagingCycle := (v_Timing_SFN + (v_PagingCycle -(v_Timing_SFN mod v_PagingCycle)))mod 1024; + v_TimeOfPaging := v_StartNextPagingCycle; + v_StartNextModPeriod := (v_StartNextPagingCycle + (v_ModificationPeriodFrames -(v_StartNextPagingCycle mod v_ModificationPeriodFrames)))mod 1024; + } + // Delay to ensure the sequencing of Scheduling of SIB modification and Paging @sic R5s130949 sic@ + f_Delay(int2float((v_TimeOfPaging-v_Timing.SFN.Number+1024) mod 1024)/1000.0); + + //Page UE from the start of v_TimeOfPaging + //based on above calculation + f_EUTRA_UE_PageSysinfoMod(p_CellId, v_TimeOfPaging, p_UE_State); // @sic R5-110803 change 4: add new parameter sic@ + } + + f_EUTRA_SS_ConfigureSysinfo (p_CellId, cs_TimingInfo_SFN(v_StartNextModPeriod), v_Sysinfo.SB1_ValueTagChanged, p_StopSib1Transmission); // @sic R5s120130 sic@ + + return v_StartNextModPeriod; + } + + /* + * @desc - Increment the valueTag in SIB1(if SB1_ValueTagChanged == true) + * - No Paging message is sent (e.g. when UE is not in the cell) + * - Send the modified SYSINFO + * @param p_CellId + * @status APPROVED (LTE) + */ + function f_EUTRA_ModifySysinfo_ValueTag_NoPaging(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { + var boolean v_PagingFlag := false; + f_EUTRA_ModifySysinfo_ValueTag(p_CellId, v_PagingFlag); + } + + /* + * @desc - Increment the valueTag in SIB1(if SB1_ValueTagChanged == true) + * - No Paging message is sent (e.g. when UE is OFF) + * - Send the modified SYSINFO + * - Wait the duration of one modification period to ensure SYSINFO is broadcasted + * @param p_CellId + * @param p_StopSib1Transmission (default value: omit) + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_ModifySysinfoUE_Off(EUTRA_CellId_Type p_CellId, + template (omit) Null_Type p_StopSib1Transmission := omit) //@sic R5-142409 sic@ + runs on EUTRA_PTC + { // @sic R5s100008 sic@ + var boolean v_PagingFlag := false; + var float v_ModificationPeriod_s := int2float(f_CalculateModificationPeriod (p_CellId))/100.0; // Modification period in second + + f_EUTRA_ModifySysinfo_ValueTag(p_CellId, v_PagingFlag, -, p_StopSib1Transmission); + + //Wait the duration of 1.1 modification periods to ensure new SYSINFO takes effect + f_Delay (1.1 * v_ModificationPeriod_s); //@sic R5s100466 Change 13 & R5s100475 cl. 4.4 Additional changes sic@ + } + + /* + * @desc To set SYSINFO back to the default value (as per 36.508), the ValueTag value is kept (not reinitialised to 0) + * @param p_CellId + * @status APPROVED (LTE) + */ + function f_EUTRA_ChangeSystemInformation_ToDefault(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + var template (value) EUTRA_CellInfo_Type v_NewCellInfo := v_CellInfo; + var template (value) BcchInfo_Type v_BCCH_Info; + // Save the current ValueTag + var integer v_ValueTag := v_CellInfo.Sysinfo.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.systemInfoValueTag; + var RootSequenceIndex_Type v_RootSequenceIndex := f_EUTRA_CellInfo_GetRootSequenceIndex(p_CellId); + + // Initialise SYSINFO to default value + // ValueTag is reinitialise to 0 + v_BCCH_Info := f_EUTRA_InitSystemInformation(p_CellId, + v_CellInfo.CellIds.CellIdentity, + v_CellInfo.Sysinfo.Combination, + v_CellInfo.Frequency.FrequencyBandIndicator, + v_CellInfo.Frequency.DL_ChBandwidth, + v_CellInfo.Frequency.UL_ChBandwidth, + cs_PlmnIdList_1Entry(v_CellInfo.NAS_Parameters.Guti_Parameters.PLMN_Identity), + v_CellInfo.NAS_Parameters.TrackingAreaCode, + v_CellInfo.FDD_TDD_Info, + v_RootSequenceIndex); + // Restore ValueTag + v_BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.systemInfoValueTag:= v_ValueTag; + + v_NewCellInfo.Sysinfo.BCCH_Info := v_BCCH_Info; + f_EUTRA_CellInfo_Set (p_CellId, v_NewCellInfo); + } + + /* + * @desc Prepare the CB-Data information page according to 23.041 cl 9.4.2.2.5 + * @param p_Page + * @return octetstring + * @status APPROVED (LTE) + */ + function f_GetCB_DataInformation(charstring p_Page) return octetstring + { + var octetstring v_CB_DataMsg:= f_CharPacking_IA5toGsm7Bit(p_Page, CBS_Packing); // CBS Message Information Page + var integer v_OctetStringLength := lengthof(v_CB_DataMsg); + + // Add Padding if CBS Message Information is < 82 + if (v_OctetStringLength < 82) { + v_CB_DataMsg := v_CB_DataMsg & int2oct(0, 82 - v_OctetStringLength); //@sic R5s110667 sic@ + } + v_CB_DataMsg := v_CB_DataMsg & int2oct(v_OctetStringLength, 1); // CBS Message Information Length 1 + + return v_CB_DataMsg; + } + + /* + * @desc Prepare the CB-Data message according to 23.041 cl 9.4.2.2.5 + * Then segment it in 3. + * @param p_Page1 + * @param p_Page2 + * @return WarningMessageSegment_List + * @status APPROVED (LTE) + */ + function f_SegmentWarningCB_Data(charstring p_Page1, + charstring p_Page2) return WarningMessageSegment_List + { + var WarningMessageSegment_List v_WarningMsgSegList ; + var octetstring v_CB_DataMsg; + var integer v_CB_DataLength; + + // Prepare the CB-Data message according to 23.041 cl 9.4.2.2.5 + v_CB_DataMsg := '02'O ; // Number of Pages + // Concatenate first page information + v_CB_DataMsg := v_CB_DataMsg & f_GetCB_DataInformation(p_Page1); + // Concatenate second page information + v_CB_DataMsg := v_CB_DataMsg & f_GetCB_DataInformation(p_Page2); + + // Segment the CB-Data message in 3 segments + v_CB_DataLength := lengthof(v_CB_DataMsg); + v_WarningMsgSegList[0] := substr(v_CB_DataMsg, 0, v_CB_DataLength/3); + v_WarningMsgSegList[1] := substr(v_CB_DataMsg, v_CB_DataLength/3, v_CB_DataLength/3); + v_WarningMsgSegList[2] := substr(v_CB_DataMsg, 2*(v_CB_DataLength/3), (v_CB_DataLength/3+v_CB_DataLength rem 3)); + + return v_WarningMsgSegList; + } +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_RSRQ_Functions.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_RSRQ_Functions.ttcn new file mode 100644 index 0000000..fabe362 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_RSRQ_Functions.ttcn @@ -0,0 +1,81 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-07-01 02:17:54 +0200 (Mon, 01 Jul 2013) $ +// $Rev: 9064 $ +/******************************************************************************/ +module EUTRA_RSRQ_Functions +{ + import from EUTRA_ASP_VirtualNoiseDefs all; + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from EUTRA_AspCommon_Templates all; + import from EUTRA_Component all; + import from EUTRA_CellInfo all; + + template (value) EUTRA_VNG_CTRL_REQ cas_EUTRA_VNG_Configure_REQ(EUTRA_CellId_Type p_CellId, + Dl_Bandwidth_Type p_DL_Bandwidth, + integer p_NocLevel ):= + { /* @status APPROVED (LTE, LTE_IRAT) */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, cs_TimingInfo_Now), + Request := { + Configure := { + Bandwidth := p_DL_Bandwidth, + NocLevel := p_NocLevel + } + } + }; + + template (value) EUTRA_VNG_CTRL_REQ cas_EUTRA_VNG_Activate_REQ (EUTRA_CellId_Type p_CellId) := + { /* @status APPROVED (LTE, LTE_IRAT) */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, cs_TimingInfo_Now), + Request := { + Activate := true + } + }; + + template (value) EUTRA_VNG_CTRL_REQ cas_EUTRA_VNG_Deactivate_REQ (EUTRA_CellId_Type p_CellId) := + { /* @status APPROVED (LTE) */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, cs_TimingInfo_Now), + Request := { + Deactivate := true + } + }; + + /* + * @desc configuration of the virtual noise generator, regardless of the power level the noise generator is off before it gets activated for this cell + * @param p_CellId + * @param p_NocLevel + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_EUTRA_ConfigureVNG(EUTRA_CellId_Type p_CellId, + integer p_NocLevel) runs on EUTRA_PTC + { + VNG.send (cas_EUTRA_VNG_Configure_REQ ( p_CellId, f_EUTRA_CellInfo_GetDL_ChBandwidth(p_CellId), p_NocLevel)) ; + } + + /* + * @desc Activate the noise (switched on) for the given cell + * @param p_CellId + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_EUTRA_ActivateVNG ( EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { + VNG.send (cas_EUTRA_VNG_Activate_REQ ( p_CellId)) ; + } + + /* + * @desc deactivate noise for given cell + * @param p_CellId + * @status APPROVED (LTE) + */ + function f_EUTRA_DeactivateVNG ( EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { + VNG.send(cas_EUTRA_VNG_Deactivate_REQ(p_CellId)); + } + +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_SecurityFunctions.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_SecurityFunctions.ttcn new file mode 100644 index 0000000..22a7457 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_SecurityFunctions.ttcn @@ -0,0 +1,873 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-07-05 14:12:35 +0200 (Sat, 05 Jul 2014) $ +// $Rev: 11810 $ +/******************************************************************************/ +module EUTRA_SecurityFunctions { + import from CommonDefs all; + import from TestcaseProperties all; + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_CommonDefs all; + import from EUTRA_ASP_TypeDefs all; + import from EPS_NAS_TypeDefs all; + import from EUTRA_ASP_NasCtrl all; + import from EUTRA_Security_Templates all; + import from Parameters all; + import from EUTRA_Parameters all; + import from NAS_CommonTypeDefs all; + import from NAS_AuthenticationCommon all; + import from EUTRA_SecurityDefinitionsAndExternalFunctions all; + import from EUTRA_RRC_Templates all; + + + //============================================================================ + // constants and types + + const integer tsc_NAS_Enc_Alg := 1; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + const integer tsc_NAS_Int_Alg := 2; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + const integer tsc_RRC_Enc_Alg := 3; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + const integer tsc_RRC_Int_Alg := 4; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + const integer tsc_UP_Enc_Alg := 5; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + + type integer KDF_Type ( tsc_KDF_HMAC_SHA_256 .. tsc_KDF_Spare3 ); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + type integer AlgTypeDistg_Type (tsc_NAS_Enc_Alg, + tsc_NAS_Int_Alg, + tsc_RRC_Enc_Alg, + tsc_RRC_Int_Alg, + tsc_UP_Enc_Alg); /* As per Table A.8-1 of 33.401; @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + + type record EUTRA_SecurityParams_Type { /* parameters related/used to/by EUTRA authentication and security + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + KDF_Type KDF, + B3_Type KSIasme, // 3 bit KSIasme used when Authentication is performed by MME. + B3_Type KSIsgsn, // USEd to store when KASME is derived from Ck,IK due to GMM Authentication at handover to LTE + B256_Type Ks, // = Ck || IK + // NAS keys + B256_Type KASME, + B256_Type KENB, + B256_Type NH, //@sic R5s100496 sic@ + NextHopChainingCount NCC, + B32_Type NonceMME, + B32_Type NonceUE, + // NAS Security structures + NAS_SecurityInfo_Type NAS_Integrity, + NAS_SecurityInfo_Type NAS_Ciphering, + // AS Security structures + AS_IntegrityInfo_Type AS_Integrity, + AS_CipheringInfo_Type AS_Ciphering, + UE_SecurityCapability NAS_SecurityCap, + Common_AuthenticationParams_Type AuthParams + + // Note the Keys in the above NAS/AS_Integrity/Ciphering is the truncated 128 bit keys + // More fields to be added here + }; + + type record VarShortMAC_Input_Type { /* 36.331 cl. 7.1; @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + CellIdentity cellIdentity, // Bit string (28) + PhysCellId physCellId, // Integer (0..503) + C_RNTI c_RNTI // Bit string (16) + }; + + //============================================================================ + // TEMPLATES + + //---------------------------------------------------------------------------- + // internal templates: + + template (value) NAS_SecurityInfo_Type cs_NAS_SecurityInfo(B3_Type p_Algo, + B128_Key_Type p_Key) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Algorithm := p_Algo, + K_NAS := p_Key + }; + + template (value) AS_IntegrityInfo_Type cs_AS_IntegrityInfo(IntegrityProtAlgorithm_Type p_Algo, + B128_Key_Type p_Key) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Algorithm := p_Algo, /* IntegrityProtAlgorithm_Type being defined in RRC ASN.1 */ + KRRCint := p_Key, + ActTimeList := omit /* => all SRBs shall be configured immediately */ + }; + + template (value) SecurityActTime_Type cs_CipherAct_Null(RadioBearerId_Type p_RBID) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + RadioBearerId := p_RBID, + UL := { None := true }, + DL := { None := true } + }; + + template (value) EUTRA_SecurityParams_Type cs_AuthParams_Init(B128_Type p_Rand, + B3_Type p_NAS_IntegrityProtAlgorithm, + B3_Type p_NAS_CipheringAlgorithm, + IntegrityProtAlgorithm_Type p_RRC_IntegrityProtAlgorithm, + CipheringAlgorithm_Type p_RRC_CipheringAlgorithm) := + { /* @desc to Store all parameters related/used to Authentication + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + KDF := tsc_KDF_HMAC_SHA_256, //33401 defined KDF + KSIasme := '111'B, //un initialised + KSIsgsn := '111'B, //un initialised, + Ks := tsc_AuthUndefinedB256, + KASME := tsc_AuthUndefinedB256, + KENB := tsc_AuthUndefinedB256, + NH := tsc_AuthUndefinedB256, //@sic R5s100496 sic@ + NCC := 0, // undefined value is not specified + NonceMME := tsc_AuthUndefinedB32, + NonceUE := tsc_AuthUndefinedB32, + NAS_Integrity := cs_NAS_SecurityInfo (p_NAS_IntegrityProtAlgorithm, tsc_AuthUndefinedB128), + NAS_Ciphering := cs_NAS_SecurityInfo (p_NAS_CipheringAlgorithm, tsc_AuthUndefinedB128), + // AS Security structures + AS_Integrity := cs_AS_IntegrityInfo (p_RRC_IntegrityProtAlgorithm, tsc_AuthUndefinedB128), + AS_Ciphering := cs_AS_CipheringInfo(p_RRC_CipheringAlgorithm, + tsc_AuthUndefinedB128, + tsc_AuthUndefinedB128, + { cs_CipherAct_Null(tsc_RbId_SRB1), + cs_CipherAct_Null(tsc_RbId_SRB2) } ), + NAS_SecurityCap := cs_NAS_SecurityCapabilityInit, // @sic R5s100135 sic@ + AuthParams := cs_CommonAuthParams_Init (p_Rand) + + }; + + template (value) UE_SecurityCapability cs_NAS_SecurityCapabilityInit := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + // @sic R5s100135 sic@ + iel := '02'O, + eeaCap := '00'O, + eiaCap := '00'O, + ueaCap := omit, + uiaCap := omit, + geaCap := omit + }; + + + //============================================================================ + + group Auth_S_Function { // Group of S funcions defined in Annex A of 33.401 + + /* + * @desc KASME derivation function (S10); As per annex A.2 of 33.401 + * @param p_Auth_Params + * @param p_PLMN + * @return B256_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function fl_EUTRA_Authentication_S10(EUTRA_SecurityParams_Type p_Auth_Params, + NAS_PlmnId p_PLMN) return B256_Type + { + const octetstring const_S10_FC := '10'O; + var octetstring v_S; + + // Generation of String + v_S := const_S10_FC; + //FC = 0x10 + v_S := (v_S & p_PLMN); + //P0 = serving network ID + v_S := (v_S & '0003'O) ; + //L0 = length of serving network ID (i.e. 0x00 0x03) + v_S := ( v_S & ( substr (( bit2oct ( p_Auth_Params.AuthParams.AUTN )) , 0,6 ))); + //P1 = SQN XOR AK + // to have MSB 6 bytes which is SQN xor AK and truncated as SQN xor AK is first 6 bytes of AUTN + v_S := ( v_S & '0006'O ); + //L1 = length of SQN XOR AK (i.e. 0x00 0x06) + return fx_KeyDerivationFunction( p_Auth_Params.KDF, p_Auth_Params.Ks, v_S ); + }; + + //-------------------------------------------------------------------------- + /* + * @desc Converts ASN.1 CipheringAlgorithm_Type to bit string representation + * @param p_Alg + * @return B3_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function fl_ConvertCiphAlg2Bitstring(CipheringAlgorithm_Type p_Alg) return B3_Type + { + var B3_Type v_B3 := '111'B; + select (p_Alg) { + case (eea0) { + v_B3 := '000'B; + } + case (eea1) { + v_B3 := '001'B; + } + case (eea2) { + v_B3 := '010'B; + } + case (eea3_v1130) { + v_B3 := '011'B; + } + case else { + FatalError (__FILE__, __LINE__, "Non defined AS Ciphering algorithm Selected"); + } + } + return v_B3; + } + + //-------------------------------------------------------------------------- + /* + * @desc Converts ASN.1 IntegrityProtAlgorithm_Type to bit string representation + * @param p_Alg + * @return B3_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function fl_ConvertIntAlg2Bitstring (IntegrityProtAlgorithm_Type p_Alg) return B3_Type + { + var B3_Type v_B3 := '111'B; + select (p_Alg) { + case (eia1) { + v_B3 := '001'B; + } + case (eia2) { + v_B3 := '010'B; + } + case (eia3_v1130) { + v_B3 := '011'B; + } + case else { + FatalError (__FILE__, __LINE__, "Non defined AS Integrity algorithm Selected"); + } + } + return v_B3; + } + + /* + * @desc Converts ASN.1 IntegrityProtAlgorithm_Type to bit string representation + * considering the test case attribute "NullIntegrityAlgorithmAllowed" + * @param p_AS_Integrity + * @return B3_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function fl_AS_IntegrityInfo_GetIntAlg(AS_IntegrityInfo_Type p_AS_Integrity) return B3_Type + { + var B3_Type v_IntAlg; + + if ((f_GetTestcaseAttrib_NullIntegrityAlgorithmAllowed(testcasename())) and (p_AS_Integrity.Algorithm == eia0_v920 )) { // @sic R5-126020 sic@ @sic R5s130201 sic@ + v_IntAlg := '000'B; + } else { + v_IntAlg := fl_ConvertIntAlg2Bitstring(p_AS_Integrity.Algorithm); + } + return v_IntAlg; + } + + //-------------------------------------------------------------------------- + /* + * @desc KeNB derivation function used at ECM-IDLE to ECM CONNECTED transition, + * ECM-IDLE mode mobility, transition away from EMM-DEREGISTERED to EMM-REGISTERED/ECM-CONNECTED + * and key change on the-fly (S11) + * As per annex A.3 of 33.401 + * @param p_Auth_Params + * @param p_UL_NAS_Count + * @return B256_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function fl_EUTRA_Authentication_S11(EUTRA_SecurityParams_Type p_Auth_Params, + O4_Type p_UL_NAS_Count) return B256_Type + { + const octetstring const_S11_FC :='11'O; + var octetstring v_S; + // Generation of String + v_S := const_S11_FC; + //FC = 0x11 + v_S := ( v_S & p_UL_NAS_Count); + //P0 = Uplink NAS COUNT + v_S := ( v_S & '0004'O ); + //L0 = length of uplink NAS COUNT (i.e. 0x00 0x04) + return fx_KeyDerivationFunction ( p_Auth_Params.KDF, p_Auth_Params.KASME, v_S ); + }; + + //-------------------------------------------------------------------------- + /* + * @desc NH* derivation function (S12) + * As per annex A.4 of 33.401 + * The SYNC-input parameter shall be the newly derived KeNB for the initial NH derivation, + * and the previous NH for all subsequent derivations. + * @param p_Auth_Params + * @param p_Synch + * @return B256_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function fl_EUTRA_Authentication_S12(EUTRA_SecurityParams_Type p_Auth_Params, + B256_Type p_Synch ) return B256_Type + { + const octetstring const_S12_FC :='12'O; + var octetstring v_S; + // Generation of String + v_S := const_S12_FC; + // FC = 0x12 + v_S := ( v_S & bit2oct ( p_Synch ) ); + // P0 = SYNC-input + v_S := ( v_S & '0020'O ); + //L0 = length of SYNC-input (i.e. 0x00 0x20) + + return fx_KeyDerivationFunction ( p_Auth_Params.KDF, p_Auth_Params.KASME, v_S ); + }; + + //-------------------------------------------------------------------------- + /* + * @desc KeNB* derivation function (S13) + * As per annex A.5 of 33.401 + * @param p_Auth_Params + * @param p_PhyCellId + * @param p_EARFCN_DL + * @param p_FromNH (default value: false) + * @return B256_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function fl_EUTRA_Authentication_S13(EUTRA_SecurityParams_Type p_Auth_Params, + PhysCellId p_PhyCellId, + ARFCN_ValueEUTRA p_EARFCN_DL, + boolean p_FromNH := false // False for Deriving Kenb* from Kenb, else from NH + ) return B256_Type //@sic R5s100496 sic@ + { // @sic R5s100138 sic@ + const octetstring const_S13_FC :='13'O; //@sic R5s100178 sic@ + var octetstring v_S; + var B256_Type v_SourceKey; + // Generation of String + v_S := const_S13_FC; + //FC = 0x13 + v_S := ( v_S & int2oct ( p_PhyCellId , 2 ) ); + //P0 = PCI (target physical cell id) + v_S := ( v_S & '0002'O ); + //L0 = length of PCI (i.e. 0x00 0x02) + v_S := ( v_S & int2oct ( p_EARFCN_DL , 2 ) ); + //P1 = EARFCN-DL (target physical cell downlink frequency) + v_S := ( v_S & '0002'O ); + //L1 = length of EARFCN-DL (i.e. 0x00 0x02) + if ( p_FromNH == false) // @sic R5s100496 sic@ Kenb* derived from Kenb + { + v_SourceKey := p_Auth_Params.KENB; + } + else // Kenb* derived from Fresh Derived NH + { + v_SourceKey := p_Auth_Params.NH; + }; + return fx_KeyDerivationFunction ( p_Auth_Params.KDF, v_SourceKey, v_S );//@sic R5s100496 sic@ + }; + + //-------------------------------------------------------------------------- + + /*function fl_EUTRA_Authentication_S6(EUTRA_SecurityParams_Type p_Auth_Params, + C_RNTI p_C_RNTI) return B256_Type { */ + /* New KeNB** derivation function used at handover when index increases from the previous handover (S6) + As per annex A.6 of 33.401 */ + /*var octetstring v_S; + const octetstring const_S6_FC :='06'O; + // Generation of String + v_S := const_S6_FC; + //FC = 0x06 + v_S := ( v_S & bit2oct ( p_C_RNTI ) ); + //P0 = C-RNTI + v_S := ( v_S & '0002'O ); + //L0 = length of C_RNTI (i.e. 0x00 0x02) + //The input key shall be the 256-bit KeNB*, KeNB*+, KeNB***. + // Needs Further work on above + + return fx_KeyDerivationFunction ( p_Auth_Params.KDF, p_Auth_Params.KENB, // Needs relookThe input key shall be the 256-bit KeNB*, KeNB*+, KeNB***. + v_S ); + }; // removed in v821 */ + + //-------------------------------------------------------------------------- + /* + * @desc Algorithm key derivation functions (S15) + * As per annex A.7 of 33.401 + * @param p_AlgTypeDistg + * @param p_Alg + * @param p_Key + * @param p_KDF_Type + * @return B128_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function fl_EUTRA_Authentication_S15(AlgTypeDistg_Type p_AlgTypeDistg, + B3_Type p_Alg, + B256_Type p_Key, + KDF_Type p_KDF_Type) return B128_Type + { + const octetstring const_S15_FC :='15'O; + var octetstring v_S; + // Generation of String + v_S := const_S15_FC; + //FC = 0x15 + v_S := ( v_S & int2oct ( p_AlgTypeDistg, 1 ) ); + //P0 = algorithm type distinguisher + v_S := ( v_S & '0001'O ); + //L0 = length of algorithm type distinguisher (i.e. 0x00 0x01)) + v_S := ( v_S & bit2oct ( p_Alg ) ); + //P1 = algorithm identity + v_S := ( v_S & '0001'O ); + //L1 = length of algorithm identity (i.e. 0x00 0x01) + + return substr(fx_KeyDerivationFunction(p_KDF_Type, p_Key, v_S), 128, 128); + // returns LSB 128 bits[truncated] of the key generated + }; + + //-------------------------------------------------------------------------- + /* + * @desc KASME to CK, IK derivation (S16) + * As per annex A.8 of 33.401 + * @param p_Auth_Params + * @param p_DL_NAS_Count + * @return B256_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_EUTRA_Authentication_S16(EUTRA_SecurityParams_Type p_Auth_Params, + O4_Type p_DL_NAS_Count) return B256_Type + { + const octetstring const_S16_FC :='16'O; + var octetstring v_S; + + // Generation of String + v_S := const_S16_FC; + //FC = 0x16 + v_S := ( v_S & p_DL_NAS_Count ); + //P0 = NAS downlink COUNT value + v_S := ( v_S & '0004'O ); + //L0 = length of NAS downlink COUNT value (i.e. 0x00 0x04) + + return fx_KeyDerivationFunction ( p_Auth_Params.KDF, p_Auth_Params.KASME, v_S ); + // The result is 256 bit CK ll IK each of 128 bits + }; + + //-------------------------------------------------------------------------- + /* + * @desc NAS token derivation for inter-RAT mobility (S17) + * As per annex A.9 of 33.401 + * @param p_Auth_Params + * @param p_UL_NAS_Count + * @return B256_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function fl_EUTRA_Authentication_S17(EUTRA_SecurityParams_Type p_Auth_Params, + O4_Type p_UL_NAS_Count) return B256_Type + { + const octetstring const_S17_FC :='17'O; + var octetstring v_S; + // Generation of String + v_S := const_S17_FC; + //FC = 0x17 + v_S := (v_S & p_UL_NAS_Count); + //P0 = uplink NAS COUNT + v_S := (v_S & '0004'O); + //L0 = length of downlink NAS COUNT (i.e. 0x00 0x04) + + return fx_KeyDerivationFunction(p_Auth_Params.KDF, p_Auth_Params.KASME, v_S); + }; + + //-------------------------------------------------------------------------- + /* + * @desc KASME from CK, IK derivation during handover (S18) + * As per annex A.10 of 33.401 + * @param p_Auth_Params + * @return B256_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function fl_EUTRA_Authentication_S18(EUTRA_SecurityParams_Type p_Auth_Params) return B256_Type + { + const octetstring const_S18_FC :='18'O; + var octetstring v_S; + + // Generation of String + v_S := const_S18_FC; //FC = 0x18 + v_S := (v_S & bit2oct(p_Auth_Params.NonceMME)); //P0 = NONCEMME + v_S := (v_S & '0004'O); //L0 = length of NONCEMME (i.e. 0x00 0x04) + + return fx_KeyDerivationFunction(p_Auth_Params.KDF, (p_Auth_Params.AuthParams.CK & p_Auth_Params.AuthParams.IK), v_S); //The input key shall be the concatenation of CK || IK. + }; + + //-------------------------------------------------------------------------- + /* + * @desc KASME from CK, IK derivation during idle mode mobility (S19) + * As per annex A.11 of 33.401 + * @param p_Auth_Params + * @return B256_Type + * @status APPROVED (LTE_IRAT) + */ + function fl_EUTRA_Authentication_S19(EUTRA_SecurityParams_Type p_Auth_Params) return B256_Type + { + const octetstring const_S19_FC :='19'O; + var octetstring v_S; + + // Generation of String + v_S := const_S19_FC; + //FC = 0x14 + v_S := ( v_S & bit2oct ( p_Auth_Params.NonceUE ) ); + //P0 = NONCEUE + v_S := ( v_S & '0004'O ); + //L0 = length of NONCEUE (i.e. 0x00 0x04) + v_S := ( v_S & bit2oct ( p_Auth_Params.NonceMME ) ); + //P1 = NONCEMME + v_S := ( v_S & '0004'O ); + //L1 = length of NONCEMME (i.e. 0x00 0x04) + + return fx_KeyDerivationFunction(p_Auth_Params.KDF, (p_Auth_Params.AuthParams.CK & p_Auth_Params.AuthParams.IK), v_S); + //The input key shall be the concatenation of CK || IK. + }; + + //-------------------------------------------------------------------------- + /* + * @desc KASME to CKSRVCC, IKSRVCC derivation (S1A) + * As per annex A.12 of 33.401 + * @param p_Auth_Params + * @param p_DL_NAS_Count + * @return B256_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_EUTRA_Authentication_S1A(EUTRA_SecurityParams_Type p_Auth_Params, + O4_Type p_DL_NAS_Count) return B256_Type + { + const octetstring const_S1A_FC :='1A'O; + var octetstring v_S; + + // Generation of String + v_S := const_S1A_FC; + //FC = 0x1A + v_S := ( v_S & p_DL_NAS_Count ); + //P0 = NAS downlink COUNT value + v_S := ( v_S & '0004'O ); + //L0 = length of NAS downlink COUNT value (i.e. 0x00 0x04) + + return fx_KeyDerivationFunction ( p_Auth_Params.KDF, p_Auth_Params.KASME, v_S ); + // The result is 256 bit CKSRVCC ll IKSRVCC each of 128 bits + }; + + //-------------------------------------------------------------------------- + /* + * @desc KASME to CK', IK' derivation at idle mobility(S1B) + * As per annex A.13 of 33.401 + * @param p_Auth_Params + * @param p_UL_NAS_Count + * @return B256_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_EUTRA_Authentication_S1B(EUTRA_SecurityParams_Type p_Auth_Params, + O4_Type p_UL_NAS_Count) return B256_Type + { + const octetstring const_S1B_FC :='1B'O; + var octetstring v_S; + + // Generation of String + v_S := const_S1B_FC; + //FC = 0x1B + v_S := ( v_S & p_UL_NAS_Count ); + //P0 = NAS uplink COUNT value + v_S := ( v_S & '0004'O ); + //L0 = length of NAS uplink COUNT value (i.e. 0x00 0x04) + + return fx_KeyDerivationFunction( p_Auth_Params.KDF, p_Auth_Params.KASME, v_S ); + // The result is 256 bit CK ll IK each of 128 bits + }; + + + } /* End of group Auth_S_Function */ + + //============================================================================ + // Initialisations: + + /* + * @desc Function to be used before executing Authentication procedure in EUTRA. + * The structure for EUTRA_SecurityParams_Type passed as parameter shall have at least valid parameters for: + * IMSI, PLMN, NAS_IntegrityInfo_Type.NAS_IntAlgo, NAS_CipheringInfo_Type.NAS_CipherAlgo + * Execution of this fucntion will initialise following parameters + * randValue, CK, IK, Ks, aUTN, XRES,KSIasme, KASME, KNASenc & KNASint + * @param p_Auth_Params + * @param p_PLMN + * @param p_Common_AuthenticationParams (default value: omit) + * @return EUTRA_SecurityParams_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_Authentication_InitNAS(EUTRA_SecurityParams_Type p_Auth_Params, + NAS_PlmnId p_PLMN, + template (omit) Common_AuthenticationParams_Type p_Common_AuthenticationParams := omit) return EUTRA_SecurityParams_Type + { /* @sic R5s100086 cl. 5.3.1 sic@ */ + var EUTRA_SecurityParams_Type v_Auth_Params := p_Auth_Params; + + if (isvalue(p_Common_AuthenticationParams)) { + v_Auth_Params.AuthParams := valueof(p_Common_AuthenticationParams); //@sic R5s100182 sic@ + } else { + v_Auth_Params.AuthParams := f_AuthenticationInit(v_Auth_Params.AuthParams); //@sic R5s100182 sic@ + } + + + // Generates Ck, Ik, AUTN, XRES + v_Auth_Params.Ks := v_Auth_Params.AuthParams.CK & v_Auth_Params.AuthParams.IK; + // As per 33401 clause 6.2 + v_Auth_Params.KASME := fl_EUTRA_Authentication_S10 (v_Auth_Params, p_PLMN); + // Generates KASME + v_Auth_Params.KSIasme:= int2bit(((bit2int(v_Auth_Params.KSIasme)+1) mod 8), 3); //@sic R5s140298 R5s140503 sic@ + // The mod 8 is used as initial value is 7, hence results in first value of 0. + // But if in a test case authentication is performed 7th time, it becomes 7 which is an undefined value, hence the check below added to avoid it. + if (v_Auth_Params.KSIasme == '111'B) { + v_Auth_Params.KSIasme := '000'B; + } + // updates KSI + v_Auth_Params.KSIsgsn := '111'B; + // Invalidate KSIsgsn which is useful only in case of if KSIASME is derived from SGSN keys Ck and Ik. + v_Auth_Params.NAS_Ciphering.K_NAS := fl_EUTRA_Authentication_S15 (tsc_NAS_Enc_Alg,v_Auth_Params.NAS_Ciphering.Algorithm, + v_Auth_Params.KASME, + v_Auth_Params.KDF); + // Derives KNASenc key + v_Auth_Params.NAS_Integrity.K_NAS := fl_EUTRA_Authentication_S15 (tsc_NAS_Int_Alg,v_Auth_Params.NAS_Integrity.Algorithm, + v_Auth_Params.KASME, + v_Auth_Params.KDF); + // Derives KNASint key + return v_Auth_Params; + }; + //---------------------------------------------------------------------------- + /* + * @desc Function to be used for AS KEy deriviation before AS SMC in EUTRA [p_IsSMC_Procedure := true] + * or + * Re-keying of Kenb[derivation of a new KeNB from a new KASME (i.e., after an AKA has taken place)] + * i.e.to be called after sending RRCConnection reconfiguration for handover or + * RRC Connection Re-establishment when keyChangeIndicator received in the securityConfiguration is set to TRUE [p_IsSMC_Procedure := false] + * The parameter p_UL_NAS_Count shall be the NAS count of + * if [AUTN procedure is executed] + * then: The UL NAS Count of NAS SMC Complete, of the NAS SMC procedure executed after AUTN Proc. + * else + * then: The UL NAS count of the NAS UL message[which shall be security protected] received which triggered the RRC Connection establishment + * i.e. Attach Req[ in special cases], TAU Req, Service Req etc. + * The structure for EUTRA_SecurityParams_Type passed as parameter shall have atleast valid parameters for: + * KASME, AS_IntegrityInfo_Type.IntProtAlgo AS_CipheringInfo_Type.CiphAlgo. + * Execution of this fucntion will initialise following parameters + * KENB,KRRCenc, KRRCint & KUPenc; + * @param p_Auth_Params + * @param p_UL_NAS_Count + * @param p_IsSMC_Procedure (default value: true) + * @param p_TargetPhysicalCellIdentity (default value: omit) + * @param p_EARFCN_DL (default value: omit) + * @return EUTRA_SecurityParams_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_Authentication_InitAS(EUTRA_SecurityParams_Type p_Auth_Params, + O4_Type p_UL_NAS_Count, + boolean p_IsSMC_Procedure := true, // @sic R5s100178 sic@ + template (omit) PhysCellId p_TargetPhysicalCellIdentity := omit, // @sic R5s100178 sic@ + template (omit) ARFCN_ValueEUTRA p_EARFCN_DL := omit // @sic R5s100178 sic@ + ) return EUTRA_SecurityParams_Type + { + var EUTRA_SecurityParams_Type v_Auth_Params := p_Auth_Params; + // initialise to received as parameter + v_Auth_Params.KENB := fl_EUTRA_Authentication_S11 (v_Auth_Params, p_UL_NAS_Count); + // Derives KENB + v_Auth_Params.NH := fl_EUTRA_Authentication_S12 (v_Auth_Params, v_Auth_Params.KENB); // @sic R5s100496 sic@ + //Derives NH corresponding to NCC =1; + if (p_IsSMC_Procedure == false) { // @sic R5s100178 sic@ + if (not (isvalue(p_TargetPhysicalCellIdentity) and isvalue(p_EARFCN_DL))) + { + FatalError (__FILE__, __LINE__, + "New key is to be used at RRC Connection Re-establishment or Reconfiguration but no Physical Cell ID and/or ARFCN value is provided"); + } + else + // Refresh of KeNB; horizontal key derivation + { + v_Auth_Params.KENB := fl_EUTRA_Authentication_S13 (v_Auth_Params, + valueof(p_TargetPhysicalCellIdentity), + valueof(p_EARFCN_DL)); + //TBD Valueof cannot be avoided + }; + }; + + //intraNB handover by RRC Connection Reconfiguration or RRC Connection Re-establishment + // Derives KENB + v_Auth_Params.NCC := 0; + // NCC is set to default/initial value of 0 + v_Auth_Params.AS_Ciphering.KRRCenc := fl_EUTRA_Authentication_S15 (tsc_RRC_Enc_Alg, + fl_ConvertCiphAlg2Bitstring(v_Auth_Params.AS_Ciphering.Algorithm), + v_Auth_Params.KENB, + v_Auth_Params.KDF); + // Derives KRRCenc key + v_Auth_Params.AS_Integrity.KRRCint := fl_EUTRA_Authentication_S15 (tsc_RRC_Int_Alg, + fl_AS_IntegrityInfo_GetIntAlg(v_Auth_Params.AS_Integrity), // @sic R5-126020 sic@ + v_Auth_Params.KENB, + v_Auth_Params.KDF); + // Derives KRRCenc key + v_Auth_Params.AS_Ciphering.KUPenc := fl_EUTRA_Authentication_S15 (tsc_UP_Enc_Alg, + fl_ConvertCiphAlg2Bitstring(v_Auth_Params.AS_Ciphering.Algorithm), + v_Auth_Params.KENB, + v_Auth_Params.KDF); + // Derives KRRCenc key; + // Ciphering algorithm for UP is same as RRC + return v_Auth_Params; + }; + + //---------------------------------------------------------------------------- + /* + * @desc Function to be used for AS KEy deriviation before AS SMC in EUTRA. + * for Chaining and Re-keying of an existing KeNB when no fresh Authentication has taken. + * + * the parameter p_NCC will decide if it is chainnig [p_NCC != NCC associated with Kenb], + * or if Re-keying [p_NCC == NCC associated with Kenb] . + * This function needs to be called after sending RRCConnection reconfiguration for handover or + * RRC Connection Re-establishment when keyChangeIndicator received in the securityConfiguration is not set to TRUE + * The structure for EUTRA_SecurityParams_Type passed as parameter shall have all AS keys set. + * Execution of this fucntion will re-initialise following parameters + * NH, KENB* == KENB,KRRCenc, KRRCint & KUPenc + * + * @param p_TargetPhysicalCellIdentity + * @param p_EARFCN_DL + * @param p_Auth_Params + * @param p_NCC + * @return EUTRA_SecurityParams_Type + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_InitAS_KeyChaining_KeyRefresh(PhysCellId p_TargetPhysicalCellIdentity, + ARFCN_ValueEUTRA p_EARFCN_DL, // @sic R5s100138 sic@ + EUTRA_SecurityParams_Type p_Auth_Params, + NextHopChainingCount p_NCC) return EUTRA_SecurityParams_Type + { // @sic R5s100138 sic@ + var EUTRA_SecurityParams_Type v_Auth_Params := p_Auth_Params; + // initialise to received as parameter + if (v_Auth_Params.NCC == p_NCC) + // Refresh of KeNB; Horizontol key derivation + { + v_Auth_Params.KENB := fl_EUTRA_Authentication_S13 (v_Auth_Params,p_TargetPhysicalCellIdentity,p_EARFCN_DL); // @sic R5s100138 sic@ + } + else + //Chaining of KeNB; Vertical Key derivation + { + while (v_Auth_Params.NCC != p_NCC) + { + if ( v_Auth_Params.NCC != 0) // NH for NCC =1 is already derived in initial AS Key derivition + { + v_Auth_Params.NH := fl_EUTRA_Authentication_S12 (v_Auth_Params,v_Auth_Params.NH); //@sic R5s100496 sic@ + // Derive NH and store in v_Auth_Params.KENB + }; + v_Auth_Params.NCC := (v_Auth_Params.NCC +1) mod 4; + }// end of while loop + v_Auth_Params.KENB := fl_EUTRA_Authentication_S13 (v_Auth_Params,p_TargetPhysicalCellIdentity,p_EARFCN_DL, true); // @sic R5s100138 R5s100496 sic@ + //Derive KENB* which will be KENB from NH stored in v_Auth_Params.KENB + } + v_Auth_Params.AS_Ciphering.KRRCenc := fl_EUTRA_Authentication_S15 (tsc_RRC_Enc_Alg, + fl_ConvertCiphAlg2Bitstring(v_Auth_Params.AS_Ciphering.Algorithm), + v_Auth_Params.KENB, + v_Auth_Params.KDF); + // Derives KRRCenc key + v_Auth_Params.AS_Integrity.KRRCint := fl_EUTRA_Authentication_S15 (tsc_RRC_Int_Alg, + fl_AS_IntegrityInfo_GetIntAlg(v_Auth_Params.AS_Integrity), // @sic R5-126020 sic@ + v_Auth_Params.KENB, + v_Auth_Params.KDF); + // Derives KRRCenc key + v_Auth_Params.AS_Ciphering.KUPenc := fl_EUTRA_Authentication_S15 (tsc_UP_Enc_Alg, + fl_ConvertCiphAlg2Bitstring(v_Auth_Params.AS_Ciphering.Algorithm), + v_Auth_Params.KENB, + v_Auth_Params.KDF); + // Derives KRRCenc key; + // Ciphering algorithm for UP is same as RRC + return v_Auth_Params; + }; + + //============================================================================ + /* + * @desc to be called during initialisiation of the EUTRA PTC + * @return EUTRA_SecurityParams_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_Security_Init() return EUTRA_SecurityParams_Type + { + return valueof(cs_AuthParams_Init(px_eAuthRAND, + px_NAS_IntegrityProtAlgorithm, + px_NAS_CipheringAlgorithm, + px_RRC_IntegrityProtAlgorithm, + px_RRC_CipheringAlgorithm)); + } + + //============================================================================ + /* + * @desc Function to be used before executing Authentication procedure in EUTRA. + * The structure for EUTRA_SecurityParams_Type passed as parameter shall have at least valid parameters for: + * IMSI, PLMN, NAS_IntegrityInfo_Type.NAS_IntAlgo, NAS_CipheringInfo_Type.NAS_CipherAlgo, NonceUE + * Execution of this fucntion will initialise following parameters + * randValue, CK, IK, Ks, aUTN, XRES,KSIasme, KASME, KNASenc & KNASint + * @param p_Auth_Params + * @param p_Common_AuthenticationParams + * @return EUTRA_SecurityParams_Type + * @status APPROVED (LTE_IRAT) + */ + function f_EUTRA_MappedContext_InitNAS(EUTRA_SecurityParams_Type p_Auth_Params, + Common_AuthenticationParams_Type p_Common_AuthenticationParams ) return EUTRA_SecurityParams_Type + { /* @sic R5s100086 cl. 5.3.1 sic@ */ + // @sic R5-102227 sic@ + var EUTRA_SecurityParams_Type v_Auth_Params := p_Auth_Params; + + v_Auth_Params.AuthParams := p_Common_AuthenticationParams; // @sic R5s110031 sic@ + + // Init NonceMMM@ + v_Auth_Params.NonceMME := tsc_NonceMME; + + v_Auth_Params.KASME := fl_EUTRA_Authentication_S19 (v_Auth_Params ); + // Generates KASME :=K'ASME + v_Auth_Params.KSIasme:= '111'B;// invalid as Mapped Security context + // updates KSI + v_Auth_Params.KSIsgsn := v_Auth_Params.AuthParams.KeySeq ; + // update to KSN of otherRAT KSN as KSIASME is derived from SGSN keys Ck and Ik. + v_Auth_Params.NAS_Ciphering.K_NAS := fl_EUTRA_Authentication_S15 (tsc_NAS_Enc_Alg,v_Auth_Params.NAS_Ciphering.Algorithm, + v_Auth_Params.KASME, + v_Auth_Params.KDF); + // Derives KNASenc key + v_Auth_Params.NAS_Integrity.K_NAS := fl_EUTRA_Authentication_S15 (tsc_NAS_Int_Alg,v_Auth_Params.NAS_Integrity.Algorithm, + v_Auth_Params.KASME, + v_Auth_Params.KDF); + // Derives KNASint key + return v_Auth_Params; + }; + //============================================================================ + /* + * @desc Function to be used at handover from UTRAN to EUTRA. + * The structure for EUTRA_SecurityParams_Type passed as parameter shall have at least valid parameters for: + * IMSI, PLMN, NAS_IntegrityInfo_Type.NAS_IntAlgo, NAS_CipheringInfo_Type.NAS_CipherAlgo, NonceUE + * Execution of this fucntion will initialise following parameters + * randValue, CK, IK, Ks, aUTN, XRES,KSIasme, KASME, KNASenc & KNASint + * @param p_Auth_Params + * @param p_Common_AuthenticationParams + * @return EUTRA_SecurityParams_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_EUTRA_MappedContext_HO_Init(EUTRA_SecurityParams_Type p_Auth_Params, + Common_AuthenticationParams_Type p_Common_AuthenticationParams ) return EUTRA_SecurityParams_Type + { + var EUTRA_SecurityParams_Type v_Auth_Params := p_Auth_Params; + var NasCount_Type v_NasCountUL; + v_Auth_Params.AuthParams := p_Common_AuthenticationParams; + + // Init NonceMMM@ + v_Auth_Params.NonceMME := tsc_NonceMME; + v_Auth_Params.KASME := fl_EUTRA_Authentication_S18 (v_Auth_Params ); + // Generates KASME :=K'ASME + // v_Auth_Params.KSIasme:= '111'B;// invalid as Mapped Security context + // updates KSI + v_Auth_Params.KSIsgsn := v_Auth_Params.AuthParams.KeySeq ; + // update to KSN of otherRAT KSN as KSIASME is derived from SGSN keys Ck and Ik. + v_Auth_Params.NAS_Ciphering.K_NAS := fl_EUTRA_Authentication_S15 (tsc_NAS_Enc_Alg,v_Auth_Params.NAS_Ciphering.Algorithm, + v_Auth_Params.KASME, + v_Auth_Params.KDF); + // Derives KNASenc key + v_Auth_Params.NAS_Integrity.K_NAS := fl_EUTRA_Authentication_S15 (tsc_NAS_Int_Alg,v_Auth_Params.NAS_Integrity.Algorithm, + v_Auth_Params.KASME, + v_Auth_Params.KDF); + // Derives KNASint key + //As per 33.401 clause 9.2.2.2 + v_NasCountUL := 'FFFFFFFF'O; + v_Auth_Params.KENB := fl_EUTRA_Authentication_S11 (v_Auth_Params, v_NasCountUL); + //Derive KenB + v_Auth_Params.AS_Ciphering.KRRCenc := fl_EUTRA_Authentication_S15 (tsc_RRC_Enc_Alg, + fl_ConvertCiphAlg2Bitstring(v_Auth_Params.AS_Ciphering.Algorithm), + v_Auth_Params.KENB, + v_Auth_Params.KDF); + // Derives KRRCenc key + v_Auth_Params.AS_Integrity.KRRCint := fl_EUTRA_Authentication_S15 (tsc_RRC_Int_Alg, + fl_AS_IntegrityInfo_GetIntAlg(v_Auth_Params.AS_Integrity), // @sic R5-126020 sic@ + v_Auth_Params.KENB, + v_Auth_Params.KDF); + // Derives KRRCenc key + v_Auth_Params.AS_Ciphering.KUPenc := fl_EUTRA_Authentication_S15 (tsc_UP_Enc_Alg, + fl_ConvertCiphAlg2Bitstring(v_Auth_Params.AS_Ciphering.Algorithm), + v_Auth_Params.KENB, + v_Auth_Params.KDF); + //v_Auth_Params.AS_Ciphering.ActTimeList[1].UL.SQN.Value := 0; // PDCP count to 0 + //v_Auth_Params.AS_Ciphering.ActTimeList[1].DL.SQN.Value := 0; + // Derives KRRCenc key; + // Ciphering algorithm for UP is same as RRC + return v_Auth_Params; + } +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_SecuritySteps.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_SecuritySteps.ttcn new file mode 100644 index 0000000..3bfd3c2 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_SecuritySteps.ttcn @@ -0,0 +1,1052 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-03-01 18:20:39 +0100 (Sat, 01 Mar 2014) $ +// $Rev: 10766 $ +/******************************************************************************/ +module EUTRA_SecuritySteps { + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_RRC_Templates all; + import from EUTRA_ASP_TypeDefs all; + import from EUTRA_ASP_SrbDefs all; + import from EUTRA_ASP_NasCtrl all; + import from EUTRA_AspCommon_Templates all; + import from EUTRA_Security_Templates all; + import from EUTRA_SRB_Templates all; + import from EPS_NAS_Constants all; + import from EPS_NAS_TypeDefs all; + import from NAS_CommonTypeDefs all; + import from EPS_NAS_Templates all; + import from EUTRA_SecurityFunctions all; + import from EUTRA_Component all; + import from EUTRA_CellInfo all; + import from EUTRA_SecurityDefinitionsAndExternalFunctions all; + import from EUTRA_NASCommonTemplates all; + + //============================================================================ + // AUTHENTICATION and SECURITY + //============================================================================ + // Common Security Configuration Steps: + /* + * @desc Common function to configure NAS security + * @param p_NAS_CTRL_REQ + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_SS_NAS_SecurityConfig(template (value) NAS_CTRL_REQ p_NAS_CTRL_REQ) runs on EUTRA_PTC + { + NASCTRL.send(p_NAS_CTRL_REQ); + if (valueof(p_NAS_CTRL_REQ.Common.ControlInfo.CnfFlag) == true) { + NASCTRL.receive(car_NasSecurity_CNF); + } + } + + //---------------------------------------------------------------------------- + /* + * @desc configure NAS security at the NasEmu + * @param p_NAS_Integrity + * @param p_NAS_Ciphering + * @param p_NasCountReset (optional) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_SS_NAS_ConfigureSecurity(NAS_SecurityInfo_Type p_NAS_Integrity, + NAS_SecurityInfo_Type p_NAS_Ciphering, + template (omit) Null_Type p_NasCountReset := true) runs on EUTRA_PTC + { /* @sic R5s100135 R5s120535 sic@ */ + f_EUTRA_SS_NAS_SecurityConfig(cas_NasSecurityStart_REQ(cs_NAS_SecurityInit(p_NAS_Integrity.Algorithm, + p_NAS_Integrity.K_NAS, + p_NAS_Ciphering.Algorithm, + p_NAS_Ciphering.K_NAS, + p_NasCountReset))); //@sic R5s120535 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc common function to query NAS COUNT from the NAS emulator + * @return NasCountInfo_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_EUTRA_SS_NAS_CountGet() runs on EUTRA_PTC return NasCountInfo_Type + { + var NAS_CTRL_CNF v_NAS_CTRL_CNF; + + NASCTRL.send(cas_NasCountGet_REQ); + NASCTRL.receive(car_NasCountGet_CNF) -> value v_NAS_CTRL_CNF; + return v_NAS_CTRL_CNF.Confirm.NasCount.Get; + } + + //---------------------------------------------------------------------------- + /* + * @desc common function to set NAS COUNT at the NAS emulator + * @param p_NASDLCount + * @param p_NASULCount (default: omit) added as per @sic R5s120331 sic@ + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_EUTRA_SS_NAS_CountSet(template (omit) NasCount_Type p_NASDLCount, + template (omit) NasCount_Type p_NASULCount := omit) runs on EUTRA_PTC + { + NASCTRL.send(cas_NasCountSet_REQ(p_NASULCount, p_NASDLCount)); + NASCTRL.receive(car_NasCountSet_CNF); + } + + /* + * @desc function to query DL NAS COUNT from the NAS emulator // @sic R5s110382 sic@ + * @return O4_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_EUTRA_SS_NAS_CountGetDLNext() runs on EUTRA_PTC return O4_Type + { + var NasCountInfo_Type v_NasCountInfo := f_EUTRA_SS_NAS_CountGet(); + return f_NasSecurity_IncrementCOUNT (v_NasCountInfo.DL); + } + + /* + * @desc function to query UL NAS COUNT from the NAS emulator // @sic R5s110382 sic@ + * @return O4_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_EUTRA_SS_NAS_CountGetULNext() runs on EUTRA_PTC return O4_Type + { + var NasCountInfo_Type v_NasCountInfo := f_EUTRA_SS_NAS_CountGet(); + return f_NasSecurity_IncrementCOUNT(v_NasCountInfo.UL);// @sic R5s110382 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc Common function to configure AS security + * @param p_CellId + * @param p_SYSTEM_CTRL_REQ + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_SS_AS_SecurityConfig(EUTRA_CellId_Type p_CellId, + template (value) SYSTEM_CTRL_REQ p_SYSTEM_CTRL_REQ) runs on EUTRA_PTC + { + SYS.send(p_SYSTEM_CTRL_REQ); + if (valueof(p_SYSTEM_CTRL_REQ.Common.ControlInfo.CnfFlag) == true) { + SYS.receive(car_AsSecurity_CNF(p_CellId)); + } + } + + //---------------------------------------------------------------------------- + /* + * @desc configure AS integrity protection at the SS + * @param p_CellId + * @param p_AS_IntegrityInfo + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_SS_RRC_EnableIntegrityProtection(EUTRA_CellId_Type p_CellId, + AS_IntegrityInfo_Type p_AS_IntegrityInfo, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now) runs on EUTRA_PTC + { /* @sic R5s100135, R5-100178 sic@ */ + /* PDCP sequence Number needs to be queried from PDCP; */ + /* @sic R5s110634 additional changes: v_CnfFlag removed sic@ */ + f_EUTRA_SS_AS_SecurityConfig(p_CellId, cas_AsSecurityStart_REQ(p_CellId, cs_AS_IntProtActivate(p_AS_IntegrityInfo), p_TimingInfo)); + } + + //---------------------------------------------------------------------------- + /* + * @desc enable PDCP integrity and ciphering at the SS + * @param p_CellId + * @param p_AS_IntegrityInfo + * @param p_AS_CipheringInfo + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_SS_RRC_EnableIntProt_CiphULandDL(EUTRA_CellId_Type p_CellId, + AS_IntegrityInfo_Type p_AS_IntegrityInfo, + AS_CipheringInfo_Type p_AS_CipheringInfo, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now) runs on EUTRA_PTC + { /* @sic R5s100135, R5-100178 sic@ */ + /* @sic R5s110634 additional changes: v_CnfFlag removed sic@ */ + f_EUTRA_SS_AS_SecurityConfig(p_CellId, cas_AsSecurityStart_REQ(p_CellId, cs_AS_IntProt_CiphActivate(p_AS_IntegrityInfo, p_AS_CipheringInfo), p_TimingInfo)); + } + + //---------------------------------------------------------------------------- + /* + * @desc enable ciphering at the SS + * @param p_CellId + * @param p_AS_CipheringInfo + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @status APPROVED (LTE) + */ + function f_EUTRA_SS_RRC_EnableCipheringULandDL(EUTRA_CellId_Type p_CellId, + AS_CipheringInfo_Type p_AS_CipheringInfo, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now) runs on EUTRA_PTC + { /* @sic R5s100135, R5-100178 sic@ */ + /* @sic R5s110634 additional changes: v_CnfFlag removed sic@ */ + f_EUTRA_SS_AS_SecurityConfig(p_CellId, cas_AsSecurityStart_REQ(p_CellId, cs_AS_CipheringActivate(p_AS_CipheringInfo), p_TimingInfo)); + } + + //---------------------------------------------------------------------------- + /* + * @desc release AS security at the SS + * @param p_CellId + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_SS_RRC_ReleaseSecurity(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now) runs on EUTRA_PTC + { /* @sic R5s100072 sic@ */ + /* @sic R5s100135 sic@ */ + /* @sic R5s110634 additional changes: v_CnfFlag removed sic@ */ + f_EUTRA_SS_AS_SecurityConfig(p_CellId, cas_AsSecurityRelease_REQ(p_CellId, p_TimingInfo)); + } + + //---------------------------------------------------------------------------- + /* + * @desc depending on the given format p_PdcpCount is converted to integer + * @param p_PdcpCount + * @return PdcpSQN_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function fl_EUTRA_SQN_ConvertFromPdcpCount(PdcpCount_Type p_PdcpCount) return PdcpSQN_Type + { + var PdcpSQN_Type v_PdcpSQN; + var bitstring v_Bitstring := p_PdcpCount.Value; + + select (p_PdcpCount.Format) { + case (PdcpCount_Srb) { + v_Bitstring := substr(v_Bitstring, 27, 5); + } + case (PdcpCount_DrbLongSQN) { + v_Bitstring := substr(v_Bitstring, 20, 12); + } + case (PdcpCount_DrbShortSQN) { + v_Bitstring := substr(v_Bitstring, 25, 7); + } + } + v_PdcpSQN.Format := p_PdcpCount.Format; + v_PdcpSQN.Value := bit2int(v_Bitstring); + return v_PdcpSQN; + } + + //---------------------------------------------------------------------------- + /* + * @desc increment PDCP SQN + * @param p_PdcpSQN + * @return PdcpSQN_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function fl_EUTRA_SQN_Increment(PdcpSQN_Type p_PdcpSQN) return PdcpSQN_Type + { + var PdcpSQN_Type v_PdcpSQN := p_PdcpSQN; + + select (p_PdcpSQN.Format) { + case (PdcpCount_Srb) { + v_PdcpSQN.Value := (p_PdcpSQN.Value + 1) mod 32; + } + case (PdcpCount_DrbLongSQN) { + v_PdcpSQN.Value := (p_PdcpSQN.Value + 1) mod 4096; + } + case (PdcpCount_DrbShortSQN) { + v_PdcpSQN.Value := (p_PdcpSQN.Value + 1) mod 128 + } + } + return v_PdcpSQN; + } + + //---------------------------------------------------------------------------- + /* + * @desc Common functon to enquire PDCP sequence numbers + * @param p_CellId + * @return PdcpCountInfoList_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_SS_PdcpCount_GetAll(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return PdcpCountInfoList_Type + { + var SYSTEM_CTRL_CNF v_ReceivedAsp; + + SYS.send (cas_PdcpCount_REQ (p_CellId, cs_PDCP_CountGet_AllRBs)); + SYS.receive(car_PdcpCount_CNF(p_CellId, {Get := ?})) -> value v_ReceivedAsp; + + return v_ReceivedAsp.Confirm.PdcpCount.Get; + } + + //---------------------------------------------------------------------------- + /* + * @desc set pdcp count at the given cell + * @param p_CellId + * @param p_PdcpCountInfoList + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_SS_PdcpCount_Set(EUTRA_CellId_Type p_CellId, + PdcpCountInfoList_Type p_PdcpCountInfoList, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now) runs on EUTRA_PTC + { /* @sic R5-133623: p_TimingInfo sic@ */ + var boolean v_CnfFlag := f_TimingInfo_IsNow(p_TimingInfo); /* @sic R5s130782, R5s130784, R5s130788 change 1, 2 sic@ */ + SYS.send (cas_PdcpCount_REQ(p_CellId, cs_PDCP_CountSet(p_PdcpCountInfoList), p_TimingInfo)); + if (v_CnfFlag) { + SYS.receive(car_PdcpCount_CNF(p_CellId, {Set := true})); + } + } + + //---------------------------------------------------------------------------- + /* + * @desc check whether given PdcpCountInfo is for a DRB and whether this DRB is in the given DrbList + * @param p_PdcpCountInfo + * @param p_AM_DrbList + * @return boolean + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function fl_PdcpCount_CheckAmDrb(PdcpCountInfo_Type p_PdcpCountInfo, + DRB_IdentityList_Type p_AM_DrbList) return boolean + { + var integer k; + var DRB_Identity v_Drb; + + if (match(p_PdcpCountInfo, cr_PdcpCountInfo_DRB(?))) { // check whether it is a DRB + v_Drb := p_PdcpCountInfo.RadioBearerId.Drb; // and + for (k := 0; k < lengthof(p_AM_DrbList); k := k + 1) { // check the given list of AM DRBs + if (v_Drb == p_AM_DrbList[k]) { // ... whether it contains that DRB + return true; + } + } + } + return false; + } + + /* + * @desc Query all PDCP counts and give back list of the AM DRBs only + * (needed for handover) + * @param p_CellId + * @param p_AM_DrbList + * @param p_PdcpCountInfoList (default value: omit) + * @return PdcpCountInfoList_Type + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_SS_PdcpCount_GetAmDrbs(EUTRA_CellId_Type p_CellId, + DRB_IdentityList_Type p_AM_DrbList, + template (omit) PdcpCountInfoList_Type p_PdcpCountInfoList := omit) runs on EUTRA_PTC return PdcpCountInfoList_Type + { /* @sic R5-120721 change 7: new optional parameter to hand over PdcpCounts instead of getting it from the SS sic@ */ + var PdcpCountInfoList_Type v_PdcpCountInfoListAll; // SNs for all bearers + var PdcpCountInfoList_Type v_PdcpCountInfoListAmDrbs; // SNs for the AM DRBs only + var integer i; + var integer n := 0; + + if (isvalue(p_PdcpCountInfoList)) { + v_PdcpCountInfoListAll := valueof(p_PdcpCountInfoList); // @sic R5-120721 change 7 sic@ + } else { + v_PdcpCountInfoListAll := f_EUTRA_SS_PdcpCount_GetAll(p_CellId); + } + + for (i := 0; i < lengthof(v_PdcpCountInfoListAll); i:= i + 1) { + if (fl_PdcpCount_CheckAmDrb(v_PdcpCountInfoListAll[i], p_AM_DrbList)) { + v_PdcpCountInfoListAmDrbs[n] := v_PdcpCountInfoListAll[i]; + } + } + return v_PdcpCountInfoListAmDrbs; + } + + //---------------------------------------------------------------------------- + /* + * @desc check whether given PdcpCountInfo is for a SRB + * @param p_PdcpCountInfo + * @param p_SRB_Identity + * @return boolean + * @status APPROVED (LTE, LTE_A) + */ + function fl_PdcpCount_CheckSRB(PdcpCountInfo_Type p_PdcpCountInfo, + SRB_Identity_Type p_SRB_Identity) return boolean + { + var SRB_Identity_Type v_Srb; + + if (match(p_PdcpCountInfo, cr_PdcpCountInfo_SRB(?))) { // check whether it is a SRB + v_Srb := p_PdcpCountInfo.RadioBearerId.Srb; // and + if (v_Srb == p_SRB_Identity) { // ... whether it contains that SRB + return true; + } + } + return false; + } + + /* + * @desc Query all PDCP counts and give back SRB count only + * (needed for Triggering MAC-I Failure) + * @param p_CellId + * @param p_SRB_Identity + * @return PdcpCountInfoList_Type + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_SS_PdcpCount_GetSRB(EUTRA_CellId_Type p_CellId, + SRB_Identity_Type p_SRB_Identity) runs on EUTRA_PTC return PdcpCountInfoList_Type + { + var PdcpCountInfoList_Type v_PdcpCountInfoListAll; // SNs for all bearers + var PdcpCountInfoList_Type v_PdcpCountInfoListSRB; // SNs for the AM DRBs only + var integer i; + v_PdcpCountInfoListAll := f_EUTRA_SS_PdcpCount_GetAll(p_CellId); + + for (i := 0; i < lengthof(v_PdcpCountInfoListAll); i:= i + 1) { + if (fl_PdcpCount_CheckSRB(v_PdcpCountInfoListAll[i], p_SRB_Identity)) { + v_PdcpCountInfoListSRB[0] := v_PdcpCountInfoListAll[i]; + break ; + } + } + return v_PdcpCountInfoListSRB; + } + + //---------------------------------------------------------------------------- + /* + * @desc Common functon to enquire PDCP sequence numbers and generate a Integrity activation time for SRB with SNs ; + * @param p_CellId + * @param p_SRB_Identity (default value: tsc_SRB1) + * @return SecurityActTimeList_Type + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_RRC_IntActTime_GetSRB(EUTRA_CellId_Type p_CellId, + SRB_Identity_Type p_SRB_Identity := tsc_SRB1) runs on EUTRA_PTC return SecurityActTimeList_Type + { /* Common functon to enquire PDCP sequence numbers and generate a Integrity activation list for SRB1 */ + + var PdcpCountInfoList_Type v_PdcpCountInfoList; + var SecurityActTimeList_Type v_SecurityActTimeList; + + v_PdcpCountInfoList := f_EUTRA_SS_PdcpCount_GetSRB(p_CellId,p_SRB_Identity); + + v_SecurityActTimeList[0].RadioBearerId := v_PdcpCountInfoList[0].RadioBearerId; + v_SecurityActTimeList[0].UL.SQN := fl_EUTRA_SQN_ConvertFromPdcpCount(v_PdcpCountInfoList[0].UL); + v_SecurityActTimeList[0].DL.SQN := fl_EUTRA_SQN_ConvertFromPdcpCount(v_PdcpCountInfoList[0].DL); + + return v_SecurityActTimeList; + } + + /* + * @desc to hand over PDCP count of AM bearers from one cell to another (in case of HO the count values of the other bearers - SRBs and UM DRBs - are reset to 0) + * @param p_SourceCellId + * @param p_DestCellId + * @param p_AM_DrbList .. list of AM DRBs for which the SNs shall be handed over + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_SS_PdcpCount_Handover(EUTRA_CellId_Type p_SourceCellId, + EUTRA_CellId_Type p_DestCellId, + DRB_IdentityList_Type p_AM_DrbList, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now) runs on EUTRA_PTC + { /* @sic R5-133623: p_TimingInfo sic@ */ + var PdcpCountInfoList_Type v_PdcpCountInfoListAmDrbs; // SNs for the AM DRBs only + + v_PdcpCountInfoListAmDrbs := f_EUTRA_SS_PdcpCount_GetAmDrbs(p_SourceCellId, p_AM_DrbList); + f_EUTRA_SS_PdcpCount_Set(p_DestCellId, v_PdcpCountInfoListAmDrbs, p_TimingInfo); + } + + //---------------------------------------------------------------------------- + /* + * @desc Common functon to enquire PDCP sequence numbers and generate a ciphering activation list for SRB1, SRB2 and DRBs + * @param p_CellId + * @return SecurityActTimeList_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_RRC_CipherActTime_Get(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return SecurityActTimeList_Type + { + var PdcpCountInfoList_Type v_PdcpCountInfoList; + var PdcpCountInfo_Type v_PdcpCountInfo; + var PDCP_ActTime_Type v_PDCP_ActTimeUL; + var PDCP_ActTime_Type v_PDCP_ActTimeDL; + var RadioBearerId_Type v_RadioBearerId; + var SecurityActTime_Type v_SecurityActTime; + var integer I; + var SecurityActTimeList_Type v_SecurityActTimeList; + + v_PdcpCountInfoList := f_EUTRA_SS_PdcpCount_GetAll(p_CellId); /* @sic R5s100240: additional improvement sic@ */ + + for (I:=0; I < lengthof(v_PdcpCountInfoList); I:=I+1) { + v_PdcpCountInfo := v_PdcpCountInfoList[I]; + if ((not ispresent(v_PdcpCountInfo.UL)) or (not ispresent(v_PdcpCountInfo.DL))) { + FatalError(__FILE__, __LINE__, "missing PdcpCountInfo for UL or DL"); + } + v_RadioBearerId := v_PdcpCountInfo.RadioBearerId; + // Convert PdcpCount to integer value (UL an DL) + v_PDCP_ActTimeUL.SQN := fl_EUTRA_SQN_ConvertFromPdcpCount(v_PdcpCountInfo.UL); + v_PDCP_ActTimeDL.SQN := fl_EUTRA_SQN_ConvertFromPdcpCount(v_PdcpCountInfo.DL); + + // increment SQN for SRB1 (UL and DL) + if (ischosen(v_RadioBearerId.Srb) and (v_RadioBearerId.Srb == tsc_SRB1)) { + v_PDCP_ActTimeUL.SQN := fl_EUTRA_SQN_Increment(v_PDCP_ActTimeUL.SQN); + v_PDCP_ActTimeDL.SQN := fl_EUTRA_SQN_Increment(v_PDCP_ActTimeDL.SQN); + } + // set activation time + v_SecurityActTime.RadioBearerId := v_RadioBearerId; + v_SecurityActTime.UL := v_PDCP_ActTimeUL; + v_SecurityActTime.DL := v_PDCP_ActTimeDL; + + v_SecurityActTimeList[I] := v_SecurityActTime; + } + return v_SecurityActTimeList; + } + + //---------------------------------------------------------------------------- + /* + * @desc Common functon to enquire PDCP sequence numbers and generate a ciphering activation list for SRB1, SRB2 and DRBs with SNs reset to 0 for SRBs and UM DRBs; + * Note: this is done immediately i.e. without timing info but HO scenarios may require timing info; + * therefore between calling this function and reconfiguring ciphering there shall be no data on any of the given AM bearers in UL or DL + * @param p_CellId + * @param p_AM_DrbList + * @param p_PdcpCountInfoList (default value: omit) + * @return SecurityActTimeList_Type + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_RRC_CipherActTime_GetForHO(EUTRA_CellId_Type p_CellId, + DRB_IdentityList_Type p_AM_DrbList, + template (omit) PdcpCountInfoList_Type p_PdcpCountInfoList := omit) runs on EUTRA_PTC return SecurityActTimeList_Type + { /* Common functon to enquire PDCP sequence numbers and generate a ciphering activation list for SRB1, SRB2 and DRBs with SNs reset to 0 for SRBs and UM DRBs; + * Note: this is done immediately i.e. without timing info but HO scenarios may require timing info; + * therefore between calling this function and reconfiguring ciphering there shall be no data on any of the given AM bearers in UL or DL */ + /* @sic R5-120721 change 7: new optional parameter to hand over PdcpCounts instead of getting it from the SS sic@ */ + + var PdcpCountInfoList_Type v_PdcpCountInfoList; + var PdcpCountInfo_Type v_PdcpCountInfo; + var SecurityActTime_Type v_SecurityActTime; + var SecurityActTimeList_Type v_SecurityActTimeList; + var integer i; + + if (isvalue(p_PdcpCountInfoList)) { + v_PdcpCountInfoList := valueof(p_PdcpCountInfoList); // @sic R5-120721 change 7 sic@ + } else { + v_PdcpCountInfoList := f_EUTRA_SS_PdcpCount_GetAll(p_CellId); // @sic R5s120207 sic@ + } + + for (i := 0; i < lengthof(v_PdcpCountInfoList); i:= i + 1) { + v_PdcpCountInfo := v_PdcpCountInfoList[i]; + + if (not fl_PdcpCount_CheckAmDrb(v_PdcpCountInfo, p_AM_DrbList)) { + v_PdcpCountInfo.UL.Value := int2bit(0, 32); + v_PdcpCountInfo.DL.Value := int2bit(0, 32); + } + + v_SecurityActTime.RadioBearerId := v_PdcpCountInfo.RadioBearerId; + v_SecurityActTime.UL.SQN := fl_EUTRA_SQN_ConvertFromPdcpCount(v_PdcpCountInfo.UL); + v_SecurityActTime.DL.SQN := fl_EUTRA_SQN_ConvertFromPdcpCount(v_PdcpCountInfo.DL); + + v_SecurityActTimeList[i] := v_SecurityActTime; + } + return v_SecurityActTimeList; + } + + //============================================================================ + // Common RRC Steps: + + /* + * @desc Initial security activation (36.331 cl. 5.3.4) + * @param p_CellId + * @param p_IntegrityProtAlgorithm + * @param p_CipheringAlgorithm + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_RRC_InitialSecurityActivation(EUTRA_CellId_Type p_CellId, + IntegrityProtAlgorithm_Type p_IntegrityProtAlgorithm, + CipheringAlgorithm_Type p_CipheringAlgorithm) runs on EUTRA_PTC + { + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + + // send SecurityModeCommand on SRB1: + SRB.send(cas_SRB1_RrcPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_508_SecurityModeCommand(v_RRC_TI, p_IntegrityProtAlgorithm, p_CipheringAlgorithm))); + // receive SecurityModeComplete on SRB1: + SRB.receive(car_SRB1_RrcPdu_IND(p_CellId, + cr_508_SecurityModeComplete(v_RRC_TI))); + } + + //---------------------------------------------------------------------------- + /* + * @desc Activation of Initial security at SS[SRB 1,2 and DRB 1] and at the UE + * (36.331 cl. 5.3.4 Initial security activation) + * The parameter p_UL_NAS_Count shall be the NAS count of + * if [AUTN procedure is executed] + * then: The UL NAS Count of NAS SMC Complete, of the NAS SMC procedure executed after AUTN Proc. + * else + * then: The UL NAS count of the NAS UL message[which shall be security protected] received which triggered the RRC Connection establishment + * i.e. Attach Req[ in special cases], TAU Req, Service Req etc. + * + * @param p_CellId + * @param p_SecurityParams + * @param p_NasCountUL + * @return EUTRA_SecurityParams_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_RRC_ActivateSecurity(EUTRA_CellId_Type p_CellId, + EUTRA_SecurityParams_Type p_SecurityParams, + NasCount_Type p_NasCountUL) runs on EUTRA_PTC + return EUTRA_SecurityParams_Type + { + var EUTRA_SecurityParams_Type v_SecurityParams := f_EUTRA_Authentication_InitAS(p_SecurityParams, + p_NasCountUL); /* Calculate Kenb and KRRCenc, KRRCint, KUPenc */ + + // Read PDCP SQN for SRB1 and calcuate Ciphering Activation times + v_SecurityParams.AS_Ciphering.ActTimeList := f_EUTRA_RRC_CipherActTime_Get(p_CellId); /* note: this works only when timing info is now */ + // Note by default DRB is also pre-configured on SS side + + f_EUTRA_SS_RRC_EnableIntProt_CiphULandDL (p_CellId, + v_SecurityParams.AS_Integrity , + v_SecurityParams.AS_Ciphering); //@sic R5s110149 sic@ + f_EUTRA_RRC_InitialSecurityActivation(p_CellId, + v_SecurityParams.AS_Integrity.Algorithm, + v_SecurityParams.AS_Ciphering.Algorithm); /* SecurityModeComplete is not ciphered + acc. to 36.331 cl. 5.3.4.3 and 5.3.1.1 */ + return (v_SecurityParams); + } + + //---------------------------------------------------------------------------- + /* + * @desc This function needs to be called when new Authentication procedure is executed and new Access stratum keys need to be taken into account + * This function does not send and receive RRCConnection Reconfiguration procedure + * @param p_TargetCellId + * @param p_SecurityParams + * @param p_NasCountUL + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @param p_DrbList (default value: tsc_DrbList_Def) + * @return EUTRA_SecurityParams_Type + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_AS_ActivateSecurity_NewAKA(EUTRA_CellId_Type p_TargetCellId, + EUTRA_SecurityParams_Type p_SecurityParams, + NasCount_Type p_NasCountUL, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now, + DRB_IdentityList_Type p_DrbList := tsc_DrbList_Def) runs on EUTRA_PTC + return EUTRA_SecurityParams_Type + { + var EUTRA_SecurityParams_Type v_SecurityParams; + var PhysCellId v_PhysicalCellId := f_EUTRA_CellInfo_GetPhyCellId(p_TargetCellId); + var Frequency_IE_Type v_Frequency_IE_Cell := f_EUTRA_CellInfo_GetFrequencyIEs(p_TargetCellId); + var ARFCN_ValueEUTRA v_EARFCN_DL := v_Frequency_IE_Cell.UL_DL_Earfcn.dl_CarrierFreq; + var boolean v_IsSMC_Procedure := false; // => Security is (re-)initialised for the non-SECURITY-MODE-COMMAND case + + v_SecurityParams := f_EUTRA_Authentication_InitAS(p_SecurityParams, + p_NasCountUL, + v_IsSMC_Procedure, + v_PhysicalCellId, + v_EARFCN_DL); /* Calculate Kenb and KRRCenc, KRRCint, KUPenc */ + + // get list of activation times: + // NOTE: this function queries the PDCP SNs now, i.e. without taking into account the p_TimingInfo; + // thats works fine for SRBs and UM DRBs since those are reset to 0; for AM DRBs there shall be no data until the HO is completed + v_SecurityParams.AS_Ciphering.ActTimeList := f_EUTRA_RRC_CipherActTime_GetForHO(p_TargetCellId, p_DrbList); + + f_EUTRA_SS_RRC_EnableIntProt_CiphULandDL(p_TargetCellId, + v_SecurityParams.AS_Integrity, //@sic R5s110149 sic@ + v_SecurityParams.AS_Ciphering, + p_TimingInfo); + return (v_SecurityParams); + } + + /* + * @desc Activation of RRC security at SS (SRB 1,2 and DRBs) for Chaining and Re-keying of KeNB. + * The parameter p_NCC will decide if it is chainnig (p_NCC != NCC associated with Kenb), + * or if Re-keying (p_NCC == NCC associated with Kenb). + * This function needs to be called after sending RRCConnection reconfiguration for handover or + * RRC Connection Re-establishment when keyChangeIndicator received in the securityConfiguration is not set to TRUE + * + * @param p_TargetCellId + * @param p_Auth_Params + * @param p_NCC + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @param p_AM_DrbList (default value: tsc_DrbList_Def) + * @param p_SecurityActTimeList (default value: omit) + * @return EUTRA_SecurityParams_Type + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_SS_AS_ActivateSecurity_HO_Reest(EUTRA_CellId_Type p_TargetCellId, + EUTRA_SecurityParams_Type p_Auth_Params, + NextHopChainingCount p_NCC, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now, + DRB_IdentityList_Type p_AM_DrbList := tsc_DrbList_Def, + template (omit) SecurityActTimeList_Type p_SecurityActTimeList := omit) runs on EUTRA_PTC + return EUTRA_SecurityParams_Type + { /* @sic R5s110019/R5s110030: add. parameter p_SecurityActTimeList; this may be used to avoid async. query of PDCP count when security activation is scheduled sic@ */ + var PhysCellId v_TargetPhysicalCellIdentity := f_EUTRA_CellInfo_GetPhyCellId(p_TargetCellId); + var ARFCN_ValueEUTRA v_TargetCellEARFCN_DL := f_EUTRA_CellInfo_GetEARFCN_DL(p_TargetCellId); // @sic R5s100138 sic@ + var EUTRA_SecurityParams_Type v_SecurityParams := f_EUTRA_InitAS_KeyChaining_KeyRefresh(v_TargetPhysicalCellIdentity, + v_TargetCellEARFCN_DL, + p_Auth_Params, + p_NCC); /* Calculate Kenb and KRRCenc, KRRCint, KUPenc */ + // @sic R5s100138 sic@ + // Read PDCP SQN for SRB1 and calcuate Ciphering Activation times + if (isvalue(p_SecurityActTimeList)) { + v_SecurityParams.AS_Ciphering.ActTimeList := valueof(p_SecurityActTimeList); + } else { + v_SecurityParams.AS_Ciphering.ActTimeList := f_EUTRA_RRC_CipherActTime_GetForHO (p_TargetCellId, p_AM_DrbList); + } + // Note by default DRB is also pre-configured on SS side + + f_EUTRA_SS_RRC_EnableIntProt_CiphULandDL (p_TargetCellId, + v_SecurityParams.AS_Integrity, //@sic R5s110149 sic@ + v_SecurityParams.AS_Ciphering, + p_TimingInfo); + return v_SecurityParams; + } + + /* + * @desc Confihuring SS to use a differnt Integrity algorithm than already configured [assumed], so as to trigger + * MAC-I failure at UE on SRB 1 + * + * @param p_TargetCellId + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_SS_TriggerMAC_I_Failure(EUTRA_CellId_Type p_TargetCellId, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now) runs on EUTRA_PTC + { + + var EUTRA_SecurityParams_Type v_SecurityParams := f_EUTRA_Security_Get(); + // @sic R5s100138 sic@ + // Toggle the Integrity Algorithm + if (v_SecurityParams.AS_Integrity.Algorithm == eia1) + { + v_SecurityParams.AS_Integrity.Algorithm := eia2; + } else + { + v_SecurityParams.AS_Integrity.Algorithm := eia1; + } + // Read PDCP SQN for SRB1 and calcuate Integrity Activation times + v_SecurityParams.AS_Integrity.ActTimeList := f_EUTRA_RRC_IntActTime_GetSRB (p_TargetCellId); // Default value for p_SRB_ID = tsc_SRB1 + // Note by default DRB is also pre-configured on SS side + + f_EUTRA_SS_RRC_EnableIntegrityProtection(p_TargetCellId, + v_SecurityParams.AS_Integrity, + p_TimingInfo); /* SecurityModeCommand is integrity protected with the algorithm + being contained in the message; all sub-sequent RRC messages */ + } + + //============================================================================ + // Common NAS Steps: + + /* + * @desc 24.301 cl. 5.4.2 Authentication procedure + * The parameter p_UL_NAS_Count shall be the NAS count of UL NAS message if security protected [i.e. Attach message] + * or the reseted NAS count. + * The structure for EUTRA_SecurityParams_Type passed as parameter shall have at least valid parameters for: + * IMSI, PLMN, NAS_IntegrityInfo_Type.NAS_IntAlgo, AS_IntegrityInfo_Type.IntProtAlgo + * NAS_CipheringInfo_Type.NAS_CipherAlgo, AS_CipheringInfo_Type.CiphAlgo. + * parameter shall be passed as TRUE if AUTHENTICATION_REQUEST & AUTHENTICATION_RESPONSE are to be NAS security protected + * else it shall be false. + * + * @param p_CellId + * @param p_SRB + * @param p_SecurityParams + * @param p_SecurityStatusAuthRequest - Security header to be used in Auth Request + * @param p_SecurityStatusAuthResponse - Security heaser expected in Auth Response + * @param p_PLMN + * @return EUTRA_SecurityParams_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_NAS_Authentication(EUTRA_CellId_Type p_CellId, + SRB_Identity_Type p_SRB, + EUTRA_SecurityParams_Type p_SecurityParams, + SecurityHeaderType p_SecurityStatusAuthRequest, + template (present) SecurityHeaderType p_SecurityStatusAuthResponse, // @sic R5s090373 sic@ + NAS_PlmnId p_PLMN) + runs on EUTRA_PTC + return EUTRA_SecurityParams_Type + { + var SRB_COMMON_IND v_ReceivedAsp; + var B32_128_Type v_ReceivedRES; + var EUTRA_SecurityParams_Type v_SecurityParams; + + // Evaluate Authentication parameters and generate new keys + v_SecurityParams := f_EUTRA_Authentication_InitNAS(p_SecurityParams,p_PLMN); + + SRB.send(cas_SRB_NasPdu_REQ(p_CellId, + p_SRB, + cs_TimingInfo_Now, + cs_NAS_Request(p_SecurityStatusAuthRequest, cs_AUTHENTICATION_REQUEST(v_SecurityParams.KSIasme, + v_SecurityParams.AuthParams.RandValue, + v_SecurityParams.AuthParams.AUTN)))); + // receive AUTHENTICATION RESPONSE: @sic R5s090210 sic@ + alt { + [] SRB.receive(car_SRB_NasPdu_IND(p_CellId, + p_SRB, + cr_NAS_Indication(p_SecurityStatusAuthResponse, cr_AUTHENTICATION_RESPONSE))) + -> value v_ReceivedAsp { + v_ReceivedRES := v_ReceivedAsp.Signalling.Nas[0].Pdu.Msg.aUTHENTICATION_RESPONSE.authenticationResponseParameter.res; + if (v_ReceivedRES != substr(v_SecurityParams.AuthParams.XRES, 0, lengthof(v_ReceivedRES))) { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Authentication Failed"); + } + v_SecurityParams.AuthParams.XRESLength := lengthof(v_ReceivedRES) / 8; // @sic R5s120907 sic@ + } + [] SRB.receive(car_SRB_NasPdu_IND(p_CellId, + p_SRB, + cr_NAS_Indication(?, cr_AUTHENTICATION_FAIL_Any))) + { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Authentication Fail Message"); + } + } + return v_SecurityParams; + } + + //---------------------------------------------------------------------------- + /* + * @desc send SECURITY_MODE_COMMAND to the UE and wait for SECURITY_MODE_COMPLETE + * @param p_CellId + * @param p_SecurityParams + * @param p_SRB (default value: tsc_SRB1) + * @return NasCount_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_NAS_SecurityModeControl(EUTRA_CellId_Type p_CellId, + EUTRA_SecurityParams_Type p_SecurityParams, + SRB_Identity_Type p_SRB := tsc_SRB1) + runs on EUTRA_PTC return NasCount_Type + { /* @sic R5-101147 - no parameter p_NewSecurityCxt sic@ */ + var SRB_COMMON_IND v_ReceivedAsp; + var NasCount_Type v_NasCountUL; + + // send NAS SECURITY MODE COMMAND (integrity protected acc. 24.301 cl. 5.4.3.2): + SRB.send(cas_SRB_NasPdu_REQ(p_CellId, + p_SRB, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_IntegrityProtected_NewSecurityContext, + cs_508_SECURITY_MODE_COMMAND(p_SecurityParams.NAS_Ciphering.Algorithm, + p_SecurityParams.NAS_Integrity.Algorithm, + p_SecurityParams.KSIasme, + p_SecurityParams.NAS_SecurityCap)))); + // receive NAS SECURITY MODE COMPLETE (integrity protected and ciphered acc. 24.301 cl. 5.4.3.3): + SRB.receive(car_SRB_NasPdu_IND(p_CellId, + p_SRB, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered_NewSecurityContext, cr_508_SECURITY_MODE_COMPLETE))) + -> value v_ReceivedAsp; + + v_NasCountUL := v_ReceivedAsp.Signalling.Nas[0].SecurityProtection.NasCount; + return v_NasCountUL; + } + + //---------------------------------------------------------------------------- + /* + * @desc Activation of NAS security at SS and at the UE (24.301 cl. 5.4.3) + * @param p_CellId + * @param p_SecurityParams + * @param p_SRB (optional) + * @param p_NasCountReset (optional) + * @return NasCount_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_NAS_ActivateSecurity(EUTRA_CellId_Type p_CellId, + EUTRA_SecurityParams_Type p_SecurityParams, + SRB_Identity_Type p_SRB := tsc_SRB1, + template (omit) Null_Type p_NasCountReset := true) runs on EUTRA_PTC return NasCount_Type + { //@sic R5s120535 sic@ + var NasCount_Type v_NasCountUL; + + f_EUTRA_SS_NAS_ConfigureSecurity(p_SecurityParams.NAS_Integrity, p_SecurityParams.NAS_Ciphering, p_NasCountReset); /* download security keys and reset NAS COUNT @sic R5s120535 sic@*/ + + v_NasCountUL := f_EUTRA_NAS_SecurityModeControl(p_CellId, p_SecurityParams, p_SRB); // @sic R5-101147 sic@ + /* all NAS messages are ciphered from now on */ + return v_NasCountUL; + } + + //============================================================================ + // Functions to selectively set Ciphering or Integrity Algorithms + + /* + * @desc To Set the AS Integrity Algorithm + * @param p_AS_IntegrityProtAlgorithm + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_AS_IntegrityAlgorithm_Set(IntegrityProtAlgorithm_Type p_AS_IntegrityProtAlgorithm) runs on EUTRA_PTC + { + var EUTRA_SecurityParams_Type v_Auth_Params := f_EUTRA_Security_Get(); + v_Auth_Params.AS_Integrity.Algorithm :=p_AS_IntegrityProtAlgorithm; + f_EUTRA_Security_Set (v_Auth_Params); + } + + /* + * @desc To Set the AS Ciphering Algorithm + * @param p_AS_CipheringAlgorithm + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_AS_CipheringAlgorithm_Set(CipheringAlgorithm_Type p_AS_CipheringAlgorithm) runs on EUTRA_PTC + { + var EUTRA_SecurityParams_Type v_Auth_Params := f_EUTRA_Security_Get(); + v_Auth_Params.AS_Ciphering.Algorithm := p_AS_CipheringAlgorithm; + f_EUTRA_Security_Set (v_Auth_Params); + } + + /* + * @desc To Set the NAS Integrity Algorithm + * @param p_NAS_IntegrityProtAlgorithm + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_NAS_IntegrityAlgorithm_Set(B3_Type p_NAS_IntegrityProtAlgorithm) runs on EUTRA_PTC + { + var EUTRA_SecurityParams_Type v_Auth_Params := f_EUTRA_Security_Get(); + v_Auth_Params.NAS_Integrity.Algorithm := p_NAS_IntegrityProtAlgorithm; + f_EUTRA_Security_Set (v_Auth_Params); + } + + /* + * @desc To Set the NAS Ciphering Algorithm + * @param p_NAS_CipheringAlgorithm + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_NAS_CipheringAlgorithm_Set(B3_Type p_NAS_CipheringAlgorithm) runs on EUTRA_PTC + { + var EUTRA_SecurityParams_Type v_Auth_Params := f_EUTRA_Security_Get(); + v_Auth_Params.NAS_Ciphering.Algorithm := p_NAS_CipheringAlgorithm; + f_EUTRA_Security_Set (v_Auth_Params); + } + + //============================================================================ + /* + * @desc Function to encode VarShortMAC from ASN.1 to octetstring + * @param p_VarShortMAC_Input + * @return octetstring + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function fl_Encode_VarShortMAC(VarShortMAC_Input_Type p_VarShortMAC_Input) return octetstring + { + var bitstring v_PhysCellId; + var bitstring v_Bitstring_VarShortMAC_Input; + var octetstring v_Octetstring_VarShortMAC_Input; + + v_PhysCellId := int2bit(p_VarShortMAC_Input.physCellId, 9); + + //Place IEs of VarShortMAC_Input into single bitstring + v_Bitstring_VarShortMAC_Input := p_VarShortMAC_Input.cellIdentity & v_PhysCellId & p_VarShortMAC_Input.c_RNTI; + + //Octet align the bit string + v_Bitstring_VarShortMAC_Input := f_OctetAlignedBitString(v_Bitstring_VarShortMAC_Input); // @sic R5s100324 sic@ + + //Convert bitstring to octet aligned octetstring + v_Octetstring_VarShortMAC_Input := bit2oct(v_Bitstring_VarShortMAC_Input); + + return (v_Octetstring_VarShortMAC_Input); + } + + /* + * @desc Function to calculate shortMAC-I that is used as a parameter in RRCConnectionReestablishmentRequest + * @param p_CellId_Source + * @param p_CellId_Current + * @return ShortMAC_I + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_Calculate_ShortMAC(EUTRA_CellId_Type p_CellId_Source, + EUTRA_CellId_Type p_CellId_Current) runs on EUTRA_PTC return ShortMAC_I + { + var ShortMAC_I v_ShortMAC_I; + var O4_Type v_CalculatedMac; + var EUTRA_SecurityParams_Type v_SecurityParams := f_EUTRA_Security_Get(); + var VarShortMAC_Input_Type v_VarShortMAC_Input; + var octetstring v_Encoded_VarShortMAC_Input; + var O4_Type v_PdcpCount := 'FFFFFFFF'O; + var B5_Type v_BearerId := '11111'B; /* @sic R5-101050: BearerId changed to 5 bits sic@ */ + var integer v_Direction := 1; + + v_VarShortMAC_Input.cellIdentity := f_EUTRA_CellInfo_GetCellIdentity(p_CellId_Current);/* Acc. 36.331 ch. 7.1 Set to CellIdentity of the current cell. */ + v_VarShortMAC_Input.physCellId := f_EUTRA_CellInfo_GetPhyCellId(p_CellId_Source); /* Set to the physical cell identity of the cell the UE was connected to prior to the failure. */ + v_VarShortMAC_Input.c_RNTI := f_EUTRA_CellInfo_GetC_RNTI(p_CellId_Source); /* Set to C-RNTI that the UE had in the cell it was connected to prior to the failure. */ + + /* According to 36.331 cl. 5.3.7.4 + 2> set the shortMAC-I to the 16 least significant bits of the MAC-I calculated: + 3> over the ASN.1 encoded VarShortMAC-Input; + 3> with the KRRCint key and integrity protection algorithm that was used in the + source cell (handover and mobility from E-UTRA failure) or of the cell in which + the trigger for the re-establishment occurred (other cases); and + 3> with all input bits for COUNT, BEARER and DIRECTION set to binary ones; */ + + v_Encoded_VarShortMAC_Input := fl_Encode_VarShortMAC (v_VarShortMAC_Input); + + v_CalculatedMac := fx_AsIntegrityAlgorithm(v_Encoded_VarShortMAC_Input, + v_SecurityParams.AS_Integrity.Algorithm, + v_SecurityParams.AS_Integrity.KRRCint, + v_PdcpCount, + v_BearerId, + v_Direction); + + v_ShortMAC_I := substr(oct2bit(v_CalculatedMac),16,16); /* According to 36.331 ch. 5.3.7.4 2 Set the shortMAC-I to the 16 least significant bits of the MAC-I calculated */ + + return v_ShortMAC_I; + } + + //============================================================================ + /* + * @desc to be called during TAU after mobility from other RAT to store NONCEUE sent by UE + * @status + */ + function f_EUTRA_Security_NonceUE_Set(B32_Type p_NonceUE) runs on EUTRA_PTC + { + var EUTRA_SecurityParams_Type v_AuthParams := f_EUTRA_Security_Get(); + + v_AuthParams.NonceUE := p_NonceUE; + f_EUTRA_Security_Set(v_AuthParams); + } + + //============================================================================ + /* + * @desc to be called during TAU after mobility from other RAT to initialise NONCEMME + * @status + */ + function f_EUTRA_Security_NonceMME_Init(B32_Type p_NonceMME := tsc_NonceMME) runs on EUTRA_PTC + { + var EUTRA_SecurityParams_Type v_AuthParams := f_EUTRA_Security_Get(); + + v_AuthParams.NonceMME := p_NonceMME; + f_EUTRA_Security_Set(v_AuthParams); + } + + //---------------------------------------------------------------------------- + /* + * @desc send SECURITY_MODE_COMMAND to the UE and wait for SECURITY_MODE_COMPLETE + * to be used in TAU procedure after UE has reselected from Other RAT cell and Native security context is not available + * @param p_CellId + * @param p_SecurityParams + * @param p_SRB (default value: tsc_SRB1) + * @return NasCount_Type + * @status APPROVED (LTE_IRAT) + */ + function f_EUTRA_NAS_SecurityModeControl_MappedContext(EUTRA_CellId_Type p_CellId, + EUTRA_SecurityParams_Type p_SecurityParams, + SRB_Identity_Type p_SRB := tsc_SRB1) runs on EUTRA_PTC return NasCount_Type + { // @sic R5-102227 sic@ + var SRB_COMMON_IND v_ReceivedAsp; + var NasCount_Type v_NasCountUL; + + // send NAS SECURITY MODE COMMAND (integrity protected acc. 24.301 cl. 5.4.3.2): + // Include SGSN KSN, replayed nonce UE and Nonce MME. + SRB.send(cas_SRB_NasPdu_REQ(p_CellId, + p_SRB, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_IntegrityProtected_NewSecurityContext, + cds_SECURITY_MODE_COMMAND_MappedContext(p_SecurityParams.NAS_Ciphering.Algorithm, + p_SecurityParams.NAS_Integrity.Algorithm, + p_SecurityParams.KSIsgsn, + p_SecurityParams.NAS_SecurityCap, + p_SecurityParams.NonceUE, + p_SecurityParams.NonceMME)))); + // receive NAS SECURITY MODE COMPLETE (integrity protected and ciphered acc. 24.301 cl. 5.4.3.3): + SRB.receive(car_SRB_NasPdu_IND(p_CellId, + p_SRB, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered_NewSecurityContext, cr_508_SECURITY_MODE_COMPLETE))) + -> value v_ReceivedAsp; + + v_NasCountUL := v_ReceivedAsp.Signalling.Nas[0].SecurityProtection.NasCount; + return v_NasCountUL; + } + + //---------------------------------------------------------------------------- + /* + * @desc Activation of NAS security at SS and at the UE (24.301 cl. 5.4.3) + * to be used in TAU procedure after UE has reselected from Other RAT cell and Native security context is not available + * @param p_CellId + * @param p_SecurityParams + * @param p_SRB (default value: tsc_SRB1) + * @return NasCount_Type + * @status APPROVED (LTE_IRAT) + */ + function f_EUTRA_NAS_ActivateSecurity_MappedContext(EUTRA_CellId_Type p_CellId, + EUTRA_SecurityParams_Type p_SecurityParams, + SRB_Identity_Type p_SRB := tsc_SRB1) runs on EUTRA_PTC return NasCount_Type + { // @sic R5-102227 sic@ + var NasCount_Type v_NasCountUL; + + f_EUTRA_SS_NAS_ConfigureSecurity(p_SecurityParams.NAS_Integrity, p_SecurityParams.NAS_Ciphering); /* download security keys and reset NAS COUNT */ + + v_NasCountUL := f_EUTRA_NAS_SecurityModeControl_MappedContext(p_CellId, p_SecurityParams, p_SRB); // @sic R5-101147 sic@ + /* all NAS messages are ciphered from now on */ + return v_NasCountUL; + } + +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_Timing.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_Timing.ttcn new file mode 100644 index 0000000..e6f431c --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_Timing.ttcn @@ -0,0 +1,758 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-10-19 22:32:42 +0200 (Sat, 19 Oct 2013) $ +// $Rev: 9788 $ +/******************************************************************************/ + +module EUTRA_Timing { + import from CommonDefs all; + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_CommonDefs all; + import from EUTRA_ASP_TypeDefs all; + import from EUTRA_ASP_SrbDefs all; + import from EUTRA_CellInfo all; + import from EUTRA_Component all; + import from EUTRA_SRB_Templates all; + import from EUTRA_AspCommon_Templates all; + + //**************************************************************************** + // Handling Timers + //---------------------------------------------------------------------------- + group TimersAndTimerValues { + + type enumerated ProtocolTimer_Type { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + l2Timer, /* layer 2 timer */ + rrcTimer, /* RRC timer (T3xx) */ + nasTimer, /* NAS timer */ + nasTTCNTimer, /* NAS TTCN timer */ + nonProtocolTimer /* e.g. timer in test case prose not related to protocol timer */ + }; + + //============================================================================ + + /* + * @desc auxiliary function to get max. of two values + * @param p_Value1 + * @param p_Value2 + * @return float .. Max(p_Value1, p_Value2) + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_Max(float p_Value1, + float p_Value2) return float + { + var float v_MaxValue; + if (p_Value1 > p_Value2) { + v_MaxValue := p_Value1; + } else { + v_MaxValue := p_Value2; + } + return v_MaxValue; + } + + /* + * @desc calculate timer tolerance acc. to 36.508 cl. 6.7 + * @param p_CellId + * @param p_ProtocolTimer .. kind of timer + * @param p_Timer + * @return float .. timer value + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function fl_EUTRA_TimerTolerance(EUTRA_CellId_Type p_CellId, + ProtocolTimer_Type p_ProtocolTimer, + float p_Timer) runs on EUTRA_PTC return float + { /* calculate timer tolerance acc. to 36.508 cl. 6.7 */ + /* @sic R5-110803 Change 11 sic@ */ + var EUTRA_FDD_TDD_Mode_Type v_FDD_TDD := f_EUTRA_CellInfo_GetFDD_TDD(p_CellId); + var EUTRA_CellSysInfo_Type v_EUTRA_CellSysInfo; + var TDD_Config v_Tdd_Configuration; + var float v_Tolerance; + var float v_Rtt_x_5; + var integer v_RTT; + + v_Tolerance := p_Timer * 0.1; + + select (p_ProtocolTimer) { + case (rrcTimer) { /* @sic R5-106675 change 2 - timer tolerance for RRC timers sic@ */ + if (v_FDD_TDD == FDD) { + v_Tolerance := f_Max(v_Tolerance, 0.140); + } else { + v_Tolerance := f_Max(v_Tolerance, 0.155); + } + } + case (l2Timer, nasTimer) { + if (v_FDD_TDD == FDD) { + v_RTT := 8; + } else { + v_EUTRA_CellSysInfo := f_EUTRA_CellInfo_GetSYSINFO(p_CellId); + v_Tdd_Configuration := v_EUTRA_CellSysInfo.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.tdd_Config; + + select (v_Tdd_Configuration.subframeAssignment) { /* Maximum RTT acc. to 36.508 Table 6.7-1 */ + + case (sa0) { v_RTT := 10; } + case (sa1) { v_RTT := 11; } + case (sa2) { v_RTT := 12; } + case (sa3) { v_RTT := 15; } + case (sa4) { v_RTT := 16; } + case (sa5) { FatalError(__FILE__, __LINE__, "RTT not specified yet for subframeAssignment=sa5"); } + case (sa6) { v_RTT := 11; } + case else { FatalError(__FILE__, __LINE__, "invalid subframeAssignment"); } + } + } + v_Rtt_x_5 := int2float(v_RTT) * 0.001 * 5.0; /* RTT * TTI * 5 */ + v_Tolerance := f_Max(v_Tolerance, v_Rtt_x_5); + } + case else { /* non-protocol timers; see 36.523-3 clause 7.8.4 */ + v_Tolerance := 0.0; /* no tolerance */ + } + } + return v_Tolerance; + } + + //---------------------------------------------------------------------------- + /* + * @desc to calculate lower bound of timer tolerance acc. to 36.508 cl. 6.7 + * @param p_CellId + * @param p_ProtocolTimer .. kind of timer + * @param p_Timer + * @return float + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_SetTimerToleranceMin(EUTRA_CellId_Type p_CellId, + ProtocolTimer_Type p_ProtocolTimer, + float p_Timer) runs on EUTRA_PTC return float + { /* @sic R5-106675 change 2 - timer tolerance for RRC timers sic@ */ + var float v_Tolerance := fl_EUTRA_TimerTolerance(p_CellId, p_ProtocolTimer, p_Timer); + if (p_Timer < v_Tolerance) { + return 0.0; + } + return p_Timer - v_Tolerance; + } + + //---------------------------------------------------------------------------- + /* + * @desc calculate upper bound of timer tolerance acc. to 36.508 cl. 6.7 + * @param p_CellId + * @param p_ProtocolTimer .. kind of timer + * @param p_Timer + * @return float .. timer value + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_SetTimerToleranceMax(EUTRA_CellId_Type p_CellId, + ProtocolTimer_Type p_ProtocolTimer, + float p_Timer) runs on EUTRA_PTC return float + { /* @sic R5-106675 change 2 - timer tolerance for RRC timers sic@ */ + var float v_Tolerance := fl_EUTRA_TimerTolerance(p_CellId, p_ProtocolTimer, p_Timer); + return p_Timer + v_Tolerance; + } + + //---------------------------------------------------------------------------- + /* + * @desc calculate difference between p_T1 and p_T2 (in milliseconds) + * @param p_T1 + * @param p_T2 + * @return integer + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_SubFrameTimingDuration(SubFrameTiming_Type p_T1, + SubFrameTiming_Type p_T2) return integer + { + var integer v_MillisecondsT1; + var integer v_MillisecondsT2; + var integer v_SubframeNumberT1 := 0; + var integer v_SubframeNumberT2 := 0; + var integer v_MaxValue := 10240; // SFN is 0..1023 in steps of 10ms + var integer v_Duration; + + if (ischosen(p_T1.Subframe.Number) and + ischosen(p_T2.Subframe.Number)) { + v_SubframeNumberT1 := p_T1.Subframe.Number; + v_SubframeNumberT2 := p_T2.Subframe.Number; + } + v_MillisecondsT1 := (p_T1.SFN.Number * 10) + v_SubframeNumberT1; + v_MillisecondsT2 := (p_T2.SFN.Number * 10) + v_SubframeNumberT2; + + v_Duration := (v_MaxValue + v_MillisecondsT2 - v_MillisecondsT1) mod v_MaxValue; // calculation considers wrap-around + + return v_Duration; + } + + //---------------------------------------------------------------------------- + + /* + * @desc same as f_EUTRA_SubFrameTimingDuration but returns difference as float + * @param p_T1 .. first (earlier) value + * @param p_T2 .. second (later) value + * @return float .. difference in milliseconds + * @status APPROVED (LTE) + */ + function f_EUTRA_SubFrameTimingDuration_Float(SubFrameTiming_Type p_T1, + SubFrameTiming_Type p_T2) return float + { + return int2float(f_EUTRA_SubFrameTimingDuration(p_T1, p_T2)) / 1000.0; + } + + //---------------------------------------------------------------------------- + /* + * @desc check whether given duration is valid considering expected duration and given tolerance + * @param p_CellId + * @param p_ProtocolTimer .. kind of timer + * @param p_Duration .. messured duration (in milliseconds) + * @param p_ExpectedDuration .. duration as specified by the standard (in milliseconds) + * @return boolean + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_SubFrameTimingCheckDuration(EUTRA_CellId_Type p_CellId, + ProtocolTimer_Type p_ProtocolTimer, + integer p_Duration, + integer p_ExpectedDuration) runs on EUTRA_PTC return boolean + { /* @sic R5s100535: comparison based on int rather than on float to avoid wrong results due to not exact values sic@ */ + /* @sic R5-106675 change 2 - timer tolerance for RRC timers sic@ */ + var float v_ToleranceFloat := fl_EUTRA_TimerTolerance(p_CellId, p_ProtocolTimer, int2float(p_ExpectedDuration)/1000.0); + var integer v_ToleranceInt := float2int(v_ToleranceFloat * 1000.0); + var integer v_Min := p_ExpectedDuration - v_ToleranceInt; + var integer v_Max := p_ExpectedDuration + v_ToleranceInt; + + return ((v_Min <= p_Duration) and (p_Duration <= v_Max)); + }; + + //---------------------------------------------------------------------------- + /* + * @desc To calculate the timestamp which is p_MilliSeconds after the given timestamp + * If this function is used to calculate timestamps for DL scheduling of data or + * UL grants the subframe number incoming must be a valid one for the intended purpose. + * This cannot be checked by the present function. + * @param p_TimingInfo + * @param p_MilliSeconds + * @return SubFrameTiming_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_TimingInfoAdd(SubFrameTiming_Type p_TimingInfo, + UInt_Type p_MilliSeconds) return SubFrameTiming_Type + { + var SubFrameTiming_Type v_TimingInfo; + var UInt_Type v_SubframeNumber; + var UInt_Type v_Subframes; + + if (ischosen(p_TimingInfo.Subframe.Number)) { + v_SubframeNumber := p_TimingInfo.Subframe.Number; + } else { + v_SubframeNumber := tsc_EUTRA_SN4; + } + v_Subframes := v_SubframeNumber + p_MilliSeconds; + v_TimingInfo.Subframe.Number := v_Subframes mod 10; + v_TimingInfo.SFN.Number := (p_TimingInfo.SFN.Number + (v_Subframes / 10)) mod 1024; + + return v_TimingInfo; + } + + //---------------------------------------------------------------------------- + /* + * @desc To calculate a send timing which is suitable for TDD. Automatically valid for FDD. + * Basis for the calculation is a received timing which may not be suitable. + * Finds the next suitable subframe offset. + * If DRX is to be considered this is to be done separately. + * @param p_TimingInfo + * @return SubFrameTiming_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_TimingInfoAdjust(SubFrameTiming_Type p_TimingInfo) return SubFrameTiming_Type + { /* @sic R5s110474 sic@ */ + var SubFrameTiming_Type v_AdjustedTiming; + + v_AdjustedTiming := p_TimingInfo; + + if (p_TimingInfo.Subframe.Number > tsc_EUTRA_SN4) { + v_AdjustedTiming.SFN.Number := (v_AdjustedTiming.SFN.Number + 1) mod 1024; + } + v_AdjustedTiming.Subframe.Number := tsc_EUTRA_SN4; // SN4 to serve FDD and TDD + + return v_AdjustedTiming; + } + + //---------------------------------------------------------------------------- + /* + * @desc 1. To calculate a send timing which is suitable for TDD. Automatically valid for FDD. + * Basis for the calculation is a received timing which may not be suitable. + * Finds the next suitable subframe offset. + * If DRX is to be considered this is to be done separately. + * 2. Add a timing to the previously calculated adjusted time. + * The user of this function needs to ensure that the resulting time remains suitable. + * @param p_TimingInfo + * @param p_MilliSeconds + * @return SubFrameTiming_Type + * @status APPROVED (LTE) + */ + function f_EUTRA_TimingInfoAdjustAndAdd(SubFrameTiming_Type p_TimingInfo, + UInt_Type p_MilliSeconds) return SubFrameTiming_Type + { /* @sic R5s110474 sic@ */ + var SubFrameTiming_Type v_Timing; + + // adjust time to be suitable for both FDD and TDD + v_Timing := f_EUTRA_TimingInfoAdjust(p_TimingInfo); + + // now add the time => new TimingInfo will be >= old TimingInfo + p_MilliSeconds, and suitable for TDD + v_Timing := f_EUTRA_TimingInfoAdd(v_Timing, p_MilliSeconds); // add time + + return v_Timing; + } + + //---------------------------------------------------------------------------- + } // end of group TimersAndTimerValues + //============================================================================ + + //**************************************************************************** + // System Timing + //---------------------------------------------------------------------------- + group SystemTiming { + //============================================================================ + /* + * @desc Return the current SFN and subframe + * @param p_CellId + * @return SubFrameTiming_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_GetCurrentTiming(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return SubFrameTiming_Type + { + var SYSTEM_CTRL_CNF v_ReceivedCnf; + var SubFrameTiming_Type v_Timing; + + SYS.send(cas_EnquireTiming(p_CellId)); + SYS.receive(car_EnquireTiming(p_CellId)) -> value v_ReceivedCnf; + v_Timing := v_ReceivedCnf.Common.TimingInfo.SubFrame; + + return v_Timing; + } + + /* + * @desc local function to do calculation to get start of next on-duration + * @param p_SubFrameTiming + * @param p_DrxCycle + * @param p_DrxOffset + * @return SubFrameTiming_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function fl_EUTRA_CalculateDrxOnDuration(SubFrameTiming_Type p_SubFrameTiming, + UInt_Type p_DrxCycle, + UInt_Type p_DrxOffset) return SubFrameTiming_Type + { + var SubFrameTiming_Type v_SubFrameTiming := p_SubFrameTiming; + var UInt_Type v_Subframes; + + if ((p_DrxOffset mod 10) != tsc_EUTRA_SN4) { // SN4 to serve FDD and TDD + FatalError(__FILE__, __LINE__, "fl_EUTRA_CalculateDrxOnDuration: invalid DRX offset"); + } + v_Subframes := (p_SubFrameTiming.SFN.Number * 10) + p_SubFrameTiming.Subframe.Number; + v_Subframes := ((v_Subframes - p_DrxOffset + p_DrxCycle - 1) / p_DrxCycle) * p_DrxCycle + p_DrxOffset; // @sic R5s110219 change 4 sic@ + v_SubFrameTiming.SFN.Number := (v_Subframes / 10) mod 1024; + v_SubFrameTiming.Subframe.Number := v_Subframes mod 10; + + return v_SubFrameTiming; + } + + /* + * @desc get the next subframe in which the UE will be DRX active + * Note: in case of DRX_L per default nothing is done since we assume that the UE is always active (due to TA) + * nevertheless when TA is set to infinitive DRX may need to be considered for DRX_L too + * @param p_CellId + * @param p_SubFrameTiming + * @param p_DRX_Config (default value: omit) + * @return SubFrameTiming_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_GetDrxOnDuration(EUTRA_CellId_Type p_CellId, + SubFrameTiming_Type p_SubFrameTiming, + template (omit) DRX_Config p_DRX_Config := omit) runs on EUTRA_PTC return SubFrameTiming_Type + { /* @sic R5s110219 change 4 sic@ */ + var DrxCtrl_Type v_DrxCtrl; + var LongDrxCycleAndOffset_Type v_DrxCycleAndOffset; + var SubFrameTiming_Type v_SubFrameTiming := p_SubFrameTiming; // => per default the timing is not changed + var template (omit) DRX_Config v_DRX_Config := p_DRX_Config; + var UInt_Type v_DrxOffset; + var UInt_Type v_DrxCycle; + + if (not isvalue(p_DRX_Config)) { // DRX configuration not given by parameter => get DRX configuration from Cell configuration + v_DrxCtrl := f_EUTRA_CellInfo_GetDrxCtrl(p_CellId); + if (ischosen(v_DrxCtrl.Config)) { // DRX configuration is stored in Cell configuration + if (not ischosen(v_DrxCtrl.Config.R8)) { + FatalError(__FILE__, __LINE__, "f_EUTRA_GetDrxOnDuration: unknown release for DRX_Config"); + } + v_DRX_Config := v_DrxCtrl.Config.R8; + } else { + v_DRX_Config := omit; // DRX configuration is "None"; note: DRX configuration is configured as "None" for DRX_L too + } + } + + if (isvalue(v_DRX_Config)) { // => DRX configuration needs to be considered + if (ischosen(v_DRX_Config.setup)) { + v_DrxCycleAndOffset := valueof(v_DRX_Config.setup.longDRX_CycleStartOffset); + if (ischosen(v_DrxCycleAndOffset.sf40)) { // DRX_S + v_DrxCycle := 40; + v_DrxOffset := v_DrxCycleAndOffset.sf40; + } + else if (ischosen(v_DrxCycleAndOffset.sf1280)) { // DRX_L + v_DrxCycle := 1280; + v_DrxOffset := v_DrxCycleAndOffset.sf1280; + } + else if (ischosen(v_DrxCycleAndOffset.sf2560)) { // special case for 8.3.3.2 @sic R5s110738 change 3 sic@ + v_DrxCycle := 2560; + v_DrxOffset := v_DrxCycleAndOffset.sf2560; + } + else { + FatalError(__FILE__, __LINE__, "f_EUTRA_GetDrxOnDuration: unknown DRX configuration"); + } + v_SubFrameTiming := fl_EUTRA_CalculateDrxOnDuration(p_SubFrameTiming, v_DrxCycle, v_DrxOffset); /* @sic R5s110219 sic@ */ + } + } + return v_SubFrameTiming; + } + + /* + * @desc skip measurement gaps to avoid sending of messages during measurement gaps + * @param p_CellId + * @param p_SubFrameTiming + * @return SubFrameTiming_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_SkipMeasGap(EUTRA_CellId_Type p_CellId, + SubFrameTiming_Type p_SubFrameTiming) runs on EUTRA_PTC return SubFrameTiming_Type + { /* calculation of measurment gap acc to 36.331 cl. 5.5.2.9 depending on configuration as defined in 36.133 Table 8.1.2.1-1 */ + var MeasGapCtrl_Type v_MeasGapCtrl := f_EUTRA_CellInfo_GetMeasGapCtrl(p_CellId); + var SubFrameTiming_Type v_SubFrameTiming := p_SubFrameTiming; // => per default the timing is not changed + var MeasGapConfig.setup.gapOffset v_MeasGapOffset; + var UInt_Type v_GapSfnPeriod; + var UInt_Type v_GapOffset; + var UInt_Type v_SfnBase; + var UInt_Type v_GapStart; + var UInt_Type v_GapEnd; + var UInt_Type v_SFN; + var UInt_Type v_Subframes; + + if (ischosen(v_MeasGapCtrl.Config.R8.setup)) { + v_MeasGapOffset := v_MeasGapCtrl.Config.R8.setup.gapOffset; + if (ischosen(v_MeasGapOffset.gp0)) { + v_GapSfnPeriod := 4; + v_GapOffset := v_MeasGapOffset.gp0; + } + else if (ischosen(v_MeasGapOffset.gp1)) { + v_GapSfnPeriod := 8; + v_GapOffset := v_MeasGapOffset.gp1; + } + else { + FatalError(__FILE__, __LINE__, "f_EUTRA_SkipMeasGap: unknown MeasGap configuration"); + } + + v_SFN := p_SubFrameTiming.SFN.Number; + v_Subframes := (v_SFN * 10) + p_SubFrameTiming.Subframe.Number; + v_SfnBase := (v_SFN / v_GapSfnPeriod) * v_GapSfnPeriod; // SFN rounded down to the next multiple of v_GapSfnPeriod + v_GapStart := (v_SfnBase * 10) + v_GapOffset; // start of the next gap in subframes + v_GapEnd := v_GapStart + 6; // end of the next gap in subframes (acc. 36.133 Table 8.1.2.1-1 MeasurementGapLength is 6ms for bothe configurations) + if ((v_GapStart <= v_Subframes) and (v_Subframes < v_GapEnd)) { + v_SFN := (v_SFN + 1) mod 1024; + v_SubFrameTiming.SFN.Number := v_SFN; + } + } + return v_SubFrameTiming; + } + + /* + * @desc get the next send occasion; + * in case of TDD when the resulting subframe number is not 0 + * it will be reset to 0 and the SFN is incremented by 1 + * @param p_CellId + * @param p_MilliSeconds (default value: 100) ... minimum time (in ms) before the next send occasion + * @return SubFrameTiming_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_EUTRA_GetNextSendOccasion(EUTRA_CellId_Type p_CellId, + UInt_Type p_MilliSeconds := 100) runs on EUTRA_PTC return SubFrameTiming_Type + { /* Notes: + * - independent of FDD or TDD the Subframe Number is rese to 0 if necessary, so the the returned timing info is 100 <= timing info < 110 ms in advance + * - when connect mode DRX needs to be supported, this can be done within this function + * - the same is with measurement gaps */ + /* @sic R5s090368 sic@ */ + /* @sic R5s100172 sic@ */ + /* @sic R5s100224: SF4 to be used as it is valid for both TDD and FDD and different bandwidths sic@ */ + /* @sic R5-104796: DRX support sic@ */ + /* @sic R5s110168 change 4.1: DRX handling moved to separate function sic@ */ + /* @sic R5s110743: handling of measurment gaps sic@ */ + /* @sic R5-120235: change of measurement gap offsets to avoid overlapping of measurement gaps and DRX on-duration sic@ */ + var SubFrameTiming_Type v_Timing; + var SubFrameTiming_Type v_NextSendOccasion; + var boolean v_MeasGapIsConfigured := f_EUTRA_CellInfo_MeasGapIsConfigured(p_CellId); + var boolean v_DrxIsConfigured := f_EUTRA_CellInfo_DrxIsConfigured(p_CellId); + + if (p_MilliSeconds < 100) { + FatalError(__FILE__, __LINE__, "next send occasion shall be at least 100ms in advance"); + } + + v_Timing := f_EUTRA_GetCurrentTiming(p_CellId); + v_NextSendOccasion := f_EUTRA_TimingInfoAdd(v_Timing, p_MilliSeconds); + v_NextSendOccasion := f_EUTRA_TimingInfoAdjust(v_NextSendOccasion); // @sic R5s110474 sic@ + if (v_DrxIsConfigured) { + v_NextSendOccasion := f_EUTRA_GetDrxOnDuration(p_CellId, v_NextSendOccasion); + if (v_MeasGapIsConfigured) { // @sic R5s110743 R5-120235 sic@ + v_Timing := f_EUTRA_SkipMeasGap(p_CellId, v_NextSendOccasion); + if (v_Timing != v_NextSendOccasion) { + FatalError(__FILE__, __LINE__, "measurement gap overlaps DRX on-duration"); + } + } + } + else if (v_MeasGapIsConfigured) { // @sic R5s110743 sic@ + v_NextSendOccasion := f_EUTRA_SkipMeasGap(p_CellId, v_NextSendOccasion); + } + + return v_NextSendOccasion; + } + + //---------------------------------------------------------------------------- + } // end of group SystemTiming + //============================================================================ + + //**************************************************************************** + // Handling Racing conditions + //---------------------------------------------------------------------------- + group RacingConditionHandling { + + type enumerated RacingCond_ExpectedSequence_Type { RrcMsgBeforeSysInd, SysIndBeforeRrcMsg, AnyOrder }; /* @status APPROVED (LTE) */ + + //---------------------------------------------------------------------------- + /* + * @desc check whether p_Event1 has been before p_Event2 + * @param p_Event1 + * @param p_Event2 + * @return boolean + * @status APPROVED (LTE) + */ + function f_EUTRA_RacingCond_CheckTwoEvents(SubFrameTiming_Type p_Event1, + SubFrameTiming_Type p_Event2) return boolean + { // @sic R5s100116 Change 11 sic@ + var integer v_MilliSeconds; + var boolean v_Result := true; + + v_MilliSeconds := f_EUTRA_SubFrameTimingDuration(p_Event1, p_Event2); + if (v_MilliSeconds > 5120) { + /* the wrap-around of the SFN is 10.24 seconds => + * if v_MilliSeconds is too big we assume Event2 has been occured before Event1 */ + v_Result := false; + } + return v_Result; + } + + //============================================================================ + /* + * @desc check whether the given sequence of timestamps are "one after the other" in terms of racing conditions + * @param p_TimestampList + * @return boolean true: all events are in the expected order + * @status APPROVED (LTE) + */ + function f_EUTRA_RacingCond_CheckSequence(SubFrameTimingList_Type p_TimestampList) return boolean + { // @sic R5s100116 Change 11 sic@ + var integer i; + var integer v_NoOfEvents := lengthof(p_TimestampList); + var boolean v_Result := true; + + for (i:=0; i < v_NoOfEvents-1; i:=i+1) { + if (not f_EUTRA_RacingCond_CheckTwoEvents(p_TimestampList[i], p_TimestampList[i+1])) { + v_Result := false; + break; + } + } + return v_Result; + } + + //============================================================================ + /* + * @desc check whether SYSTEM_IND and SRB_COMMON_IND have been in the correct sequence + * @param p_ExpectedSequence + * @param p_Timing_SrbInd + * @param p_Timing_SysInd + * @status APPROVED (LTE) + */ + function fl_EUTRA_RacingCond_CheckSequence(RacingCond_ExpectedSequence_Type p_ExpectedSequence, + SubFrameTiming_Type p_Timing_SrbInd, + SubFrameTiming_Type p_Timing_SysInd) + { /* @sic R5s100138 Change 1 Note 5 sic@ */ + var SubFrameTiming_Type v_FirstEvent; + var SubFrameTiming_Type v_SecondEvent; + + select (p_ExpectedSequence) { + case (RrcMsgBeforeSysInd) { + v_FirstEvent := p_Timing_SrbInd; + v_SecondEvent := p_Timing_SysInd; + } + case (SysIndBeforeRrcMsg) { + v_FirstEvent := p_Timing_SysInd; + v_SecondEvent := p_Timing_SrbInd; + } + case (AnyOrder) { + return; + } + } + if (not f_EUTRA_RacingCond_CheckTwoEvents(v_FirstEvent, v_SecondEvent)) { + f_SetVerdictInconc(__FILE__, __LINE__, "SYSTEM_IND and RRC message are in the wrong order"); // @sic R5-101050: Verdict assignment sic@ + } + } + + /* + * @desc to deal with racing conditions: + * SYSTEM_IND and SRB_COMMON_IND are just stored and returned to the caller; + * there may be one or no SYSTEM_IND before the RRC message is received; + * if there is a SYSTEM_IND before the SRB_COMMON_IND the timing info is checked + * (i.e. it is checked that the RRC message has been received before the SYSTEM_IND) + * NOTE: p_SrbIndByRef and p_SysIndByRef shall be initialised as omit by the caller + * (that cannot be done within the altstep) + * @param p_ExpectedSequence + * @param p_SrbIndByRef (by reference) + * @param p_SysIndByRef (by reference) + * @param p_ExpectedSrbInd (default value: car_SRB_IND_Any) + * @param p_ExpectedSysInd (default value: car_SYSTEM_IND_Any) + * @status APPROVED (LTE) + */ + altstep a_EUTRA_RacingCond_AwaitRrcMessageAndSysInd(RacingCond_ExpectedSequence_Type p_ExpectedSequence, + inout template (omit) SRB_COMMON_IND p_SrbIndByRef, + inout template (omit) SYSTEM_IND p_SysIndByRef, + template (present) SRB_COMMON_IND p_ExpectedSrbInd := car_SRB_IND_Any, + template (present) SYSTEM_IND p_ExpectedSysInd := car_SYSTEM_IND_Any) runs on EUTRA_PTC + { /* note: since this is an altstep 'interleave' cannot be used */ + /* note: since the altstep uses repeat to receive the second message the altstep is left and re-entered again + * => local variables are uninitialised; the only way to store information of subsequent messages is by the inout parameters + * (which for that reason have to be "inout"; "out" would not work */ + /* @sic R5s100138 Change 1 Note 5 sic@ */ + /* @sic R5s100189 Change 13 sic@ */ + var SRB_COMMON_IND v_SRB_COMMON_IND; + var SYSTEM_IND v_SYSTEM_IND; + var SubFrameTiming_Type v_Timing_SysInd; + var SubFrameTiming_Type v_Timing_SrbInd; + + [not isvalue(p_SrbIndByRef)] SRB.receive (p_ExpectedSrbInd) -> value v_SRB_COMMON_IND + { + p_SrbIndByRef := v_SRB_COMMON_IND; + if (not isvalue(p_SysIndByRef)) { // SYSTEM_IND has not been received yet + repeat; // => wait for SYSTEM_IND + } else { + v_Timing_SrbInd := valueof(p_SrbIndByRef.Common.TimingInfo.SubFrame); + v_Timing_SysInd := valueof(p_SysIndByRef.Common.TimingInfo.SubFrame); // @sic R5s100189 sic@ + fl_EUTRA_RacingCond_CheckSequence(p_ExpectedSequence, v_Timing_SrbInd, v_Timing_SysInd); + } + } + [not isvalue(p_SysIndByRef)] SYSIND.receive (p_ExpectedSysInd) -> value v_SYSTEM_IND + { + p_SysIndByRef := v_SYSTEM_IND; + if (not isvalue(p_SrbIndByRef)) { // RRC message has not been received yet + repeat; // => wait for RRC PDU + } else { + v_Timing_SrbInd := valueof(p_SrbIndByRef.Common.TimingInfo.SubFrame); // @sic R5s100189 sic@ + v_Timing_SysInd := valueof(p_SysIndByRef.Common.TimingInfo.SubFrame); + fl_EUTRA_RacingCond_CheckSequence(p_ExpectedSequence, v_Timing_SrbInd, v_Timing_SysInd); + } + } + } + + /* + * @desc wrapper function to be used when there is no further parallel behaviour + * RRC message is expecetd to be before the SYSTEM_IND + * SYSTEM_IND is just received, stored in p_SysIndByRef but needs to be matched in a second step + * @param p_ExpectedSrbInd + * @param p_SrbIndByRef (by reference) + * @param p_SysIndByRef (by reference) + * @status APPROVED (LTE) + */ + function f_EUTRA_RacingCond_AwaitRrcMessageBeforeSysInd(template (present) SRB_COMMON_IND p_ExpectedSrbInd, + out template (omit) SRB_COMMON_IND p_SrbIndByRef, + out template (omit) SYSTEM_IND p_SysIndByRef) runs on EUTRA_PTC + { /* @sic R5s100138 Change 1 Note 5 sic@ */ + p_SrbIndByRef := omit; + p_SysIndByRef := omit; + + alt { + [] a_EUTRA_RacingCond_AwaitRrcMessageAndSysInd(RrcMsgBeforeSysInd, + p_SrbIndByRef, + p_SysIndByRef, + p_ExpectedSrbInd); + } + } + /* + * @desc wrapper function to be used when there is no further parallel behaviour + * SYSTEM_IND is expecetd to be before the RRC message + * RRC message is just received, stored in p_SysIndByRef but needs to be matched in a second step + * @param p_ExpectedSysInd + * @param p_SrbIndByRef (by reference) + * @param p_SysIndByRef (by reference) + * @status APPROVED (LTE) + */ + function f_EUTRA_RacingCond_AwaitSysIndBeforeSrbMsg(template (present) SYSTEM_IND p_ExpectedSysInd, + out template (omit) SRB_COMMON_IND p_SrbIndByRef, + out template (omit) SYSTEM_IND p_SysIndByRef) runs on EUTRA_PTC + { + p_SrbIndByRef := omit; + p_SysIndByRef := omit; + + alt { + [] a_EUTRA_RacingCond_AwaitRrcMessageAndSysInd(SysIndBeforeRrcMsg, + p_SrbIndByRef, + p_SysIndByRef, + -, + p_ExpectedSysInd); + } + } + + /* + * @desc match SYS_IND + * @param p_ReceivedSysInd + * @param p_ExpectedSysInd + * @status APPROVED (LTE) + */ + function f_EUTRA_RacingCond_MatchSysInd(template (omit) SYSTEM_IND p_ReceivedSysInd, + template SYSTEM_IND p_ExpectedSysInd) runs on EUTRA_PTC + { /* @sic R5s100138 Change 1 Note 5 sic@ */ + var boolean v_Match; + + if (not isvalue(p_ReceivedSysInd)) { + v_Match := false; + } else { + if (not match(valueof(p_ReceivedSysInd), p_ExpectedSysInd)) { + v_Match := false; + } else { + v_Match := true; + } + } + if (not v_Match) { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "SYSTEM_IND does not match"); + } + } + + /* + * @desc match RRC message + * @param p_ReceivedRrcInd + * @param p_ExpectedRrcInd + * @status APPROVED (LTE) + */ + function f_EUTRA_RacingCond_MatchRrcMsg(template (omit) SRB_COMMON_IND p_ReceivedRrcInd, + template SRB_COMMON_IND p_ExpectedRrcInd) runs on EUTRA_PTC + { + var boolean v_Match; + + if (not isvalue(p_ReceivedRrcInd)) { + v_Match := false; + } else { + if (not match(valueof(p_ReceivedRrcInd), p_ExpectedRrcInd)) { + v_Match := false; + } else { + v_Match := true; + } + } + if (not v_Match) { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "received RRC message does not match"); + } + } + + //---------------------------------------------------------------------------- + } // end of group RacingConditionHandling + //============================================================================ + +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_UE_Location.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_UE_Location.ttcn new file mode 100644 index 0000000..c81e709 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA/EUTRA_UE_Location.ttcn @@ -0,0 +1,121 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-05-24 23:07:55 +0200 (Sat, 24 May 2014) $ +// $Rev: 11321 $ +/******************************************************************************/ +module EUTRA_UE_Location +{ + import from CommonDefs all; + import from NAS_CommonTypeDefs all; + import from EPS_NAS_TypeDefs all; + import from EUTRA_CommonDefs all; + import from EPS_NAS_MsgContainers all; + import from EUTRA_LoopBack all; + import from EUTRA_Component all; + import from EUTRA_CellInfo all; + import from EUTRA_SRB_Templates all; + import from EUTRA_AspCommon_Templates all; + import from EUTRA_RRC_Templates all; + import from EPS_NAS_Templates all; + import from EPS_NAS_Constants all; + import from EUTRA_SecurityFunctions all; + import from EUTRA_Paging all; + import from EUTRA_NASSteps all; + import from EUTRA_SecuritySteps all; + import from EUTRA_RRCSteps all; + import from Parameters all; + import from UpperTesterFunctions all; + + + // Mesage Type definitions from 36.509 clause 6.12 + const MessageType tsc_MsgType_Update_UE_LocationInformation := oct2bit ('8B'O); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A) */ + const integer tsc_Gnss_TOD_msec := 1800000; /* Set to the value: 0h30min00s000ms - Should be enough to cover the tset case duration + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A) */ + + template (value) NAS_DL_Message_Type cs_Update_UE_LocationInformation(EllipsoidPointWithAltitude_Type p_EllipsoidPointWithAltitude, + HorizontalVelocity_Type p_HorizontalVelocity, + Gnss_TOD_msec_Type p_Gnss_TOD_msec) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A) */ + uPDATE_UE_LOCATION_INFORMATION := { + skipIndicator := tsc_Gen_SkipIndicator, + protocolDiscriminator := tsc_LB_ProtocolDiscriminator, + messageType := tsc_MsgType_Update_UE_LocationInformation, + ellipsoidPointWithAltitude := p_EllipsoidPointWithAltitude, + horizontalVelocity := p_HorizontalVelocity, + gnss_TOD_msec := p_Gnss_TOD_msec + } + }; + + + // This shall be done by use of the test function Update UE Location Information defined in TS 36.509 [25]. In addition any other suitable method may also be used. + /* + * @desc Function to send LOCATION INFRMATION to UE using the Update_UE_LocationInformation message defined in 36.509 + * To be used when UE is either in CONNECTED state or in IDLE state + * @param p_CellId + * @param p_State + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A) + */ + function f_EUTRA_SendUE_LocationInformation(EUTRA_CellId_Type p_CellId, + EUTRA_RRC_STATE_Type p_State) + runs on EUTRA_PTC + { + var Gnss_TOD_msec_Type v_Gnss_TOD_msec; + var NAS_MSG_Indication_Type v_NasInd; + var EUTRA_SecurityParams_Type v_SecurityParams := f_EUTRA_Security_Get(); + + if (p_State == RRC_IDLE) { + //SS sends a Paging message to the UE on the appropriate paging block, and including the UE identity in one entry of the IE pagingRecordLists + f_EUTRA_UE_Page_Def(p_CellId); + v_NasInd := f_EUTRA_RRC_ConnEst_DefWithNas(p_CellId, + tsc_RRC_TI_Def, + cr_EstablishmentCause_mt_Access, + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_508_SERVICE_REQUEST(f_EUTRA_SecurityKSIasme_Get()))); + v_SecurityParams := f_EUTRA_Security_Get(); + + v_SecurityParams := f_EUTRA_Authentication_InitAS(v_SecurityParams, v_NasInd.SecurityProtection.NasCount); + v_SecurityParams := f_EUTRA_RRC_ActivateSecurity(eutra_Cell2, v_SecurityParams, v_NasInd.SecurityProtection.NasCount); + f_EUTRA_Security_Set(v_SecurityParams); + } + + // Acc. to 36.355 cl 6.5.2.6: + // This field specifies the GNSS TOD for which the measurements and/or location estimate are valid. + // Scale factor 1 millisecond. + v_Gnss_TOD_msec := bit2oct(int2bit(tsc_Gnss_TOD_msec, 22)); // set to the value: 0h30min00s000ms + + SRB.send (cas_SRB2_NasPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_Update_UE_LocationInformation(px_EllipsoidPointWithAltitude, + px_HorizontalVelocity, + v_Gnss_TOD_msec)))); + + if (p_State == RRC_IDLE) { + // The SS releases the RRC connection. + f_EUTRA_RRC_ConnectionRelease(p_CellId); + } + } + + // ------------------------------------------------------------------------------------------------------ + /* + * @desc Function to provide LOCATION INFRMATION to UE + * To be used when UE is either in CONNECTED state or in IDLE state + * @param p_CellId + * @param p_State + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A) + */ + function f_EUTRA_ProvideUE_LocationInformation(EUTRA_CellId_Type p_CellId, + EUTRA_RRC_STATE_Type p_State) runs on EUTRA_PTC + { + if (pc_UpdateUE_LocationInformation) { + f_EUTRA_SendUE_LocationInformation(p_CellId, p_State); + } else { + f_UT_MMI_ProvideLocationInfoToUE(UT); + } + } +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA/LTE_36523_SelectionExpressions.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA/LTE_36523_SelectionExpressions.ttcn new file mode 100644 index 0000000..fd61fa7 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA/LTE_36523_SelectionExpressions.ttcn @@ -0,0 +1,1842 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 10:44:16 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12139 $ +/******************************************************************************/ +module LTE_36523_SelectionExpressions { + + import from Parameters all; + import from UTRAN_Parameters all; + import from EUTRA_Parameters all; + + type enumerated Condition_Type { + R, + C01, + C01a, + C02, + C03, + C04, + C05, + C06, + C07, + C08, + // C09 void + C10, + C11, + // C12 void + C13, + C14, + C15, + C16, + C17, + // C18 void + C19, + C20, + C21, + C22, + C23, + C24, + C25, + C26, + C27, + // C28 void + C29, + C30, + C31, + C32, + C33, + C34, + C35, + C36, + C37, + C38, + C39, + C40, + C40_C206, + C41, + C42, + //C43 void + C44, + //C45 void + C46, + C47, + C48, + C49, + C50, + C51, + C52, + C53, + C54, + C55, + C56, + C57, + C58, + C59, + C60, + C61, + // C62 void + C63, + C64, + C65, + C66, + // C67 void + C68, + C69, + // C70 void + C71, + // C72 void + // C73 void + C74, + C75, + C76, + C77, + // C78 void + // C79 void + C80, + C81, + C82, + // C83 void + C84, + // C85 void + C86, + C87, + C88, + C89, + C94, + C95, + C97, + // C102 void + C90, + C91, + C92, + C93, + C98, + C96, + C99, + C100, + // C102 void + C103, + C104, + C105, + C106, + C107, + // C108 void + C109, + C110, + C111, + C112, + C113, + C113a, + C113b, + C113c, + C113d, + C113e, + C113f, + C114, + C115, + C118, + C119, + C116, + C117, + C120, + C121, + // C122 void + C123, + // C124 void + C125, + C126, + C127, + C128, + C129, + C130, + C131, + C132, + C132a, + C133, + C134, + C134a, + C137, + C138, + C139, + C140, + C141, + C142, + C143, + C144, + C145, + C146, + C147, + C148, + C150, + C151, + C152, + C153, + C154, + C155, + C155a, + C155b, + C156, + C157, + C158, + C159, + C161, + C162, + C163, + C164, + C165, + C166, + C167, + C168, +// C169 void + C170, + C171, + C172, + C173, + C174, + C175, + C176, + C177, + C178, + C179, + C180, + C181, + C182, + C183, + C184, + C185, + C186, + C187, + C189, + C189a, + C190, + C191, + C192, + C193, + C194, + C195, + C196, + C197, + C198, + C199, + C200, + C201, + C202, + C207, + C203, + C204, + C205, + Cxx1_R5144726 + } + + function f_SelectionExpr ( Condition_Type p_Condition) return boolean { + /* Set the applicability conditions according to 36.523-2 Table 4-1a: Applicability of tests Conditions */ + + var boolean v_ApplCond; + + select (p_Condition) { + //R: UEs supporting E-UTRA + case (R) { + v_ApplCond := true; + } + //C01: UEs supporting E-UTRA and UTRA + case (C01) { + v_ApplCond := pc_UTRA; //@sic R5s140528 sic@ + } + //C01a: UEs supporting E-UTRA and UTRA FDD + case(C01a){ + v_ApplCond := pc_FDD; //@sic R5-142484 R5s140528 sic@ + } + //C02: UEs supporting E-UTRA and combined EPS/IMSI attach (with or without pre-configuration) + case (C02) { + v_ApplCond := pc_Combined_Attach; + } + //C03: UEs supporting USIM removal without power down + case (C03) { + v_ApplCond := pc_USIM_Removal; + } + //C04: UEs supporting E-UTRA and EPS attach (with or without pre-configuration) + case (C04) { + v_ApplCond := pc_Attach; + } + //C05: UEs supporting GERAN + case (C05) { + v_ApplCond := pc_GERAN; + } + //C06: UEs supporting E-UTRA and HRPD + case (C06) { + v_ApplCond := pc_HRPD; + } + //C07: UEs supporting E-UTRA and 1xRTT + case (C07) { + v_ApplCond := pc_1xRTT; + } + //C08: UEs supporting E-UTRA and Feature Group 5 + case (C08) { + v_ApplCond := pc_FeatrGrp_5; + } + //C10: UEs supporting E-UTRA and Feature Group Indicator 25 + case (C10) { + v_ApplCond := pc_FeatrGrp_25; + } + //C11: UEs supporting E-UTRA and Feature Group Indicator 16 and Feature Group Indicator 25 + case (C11) { + v_ApplCond := pc_FeatrGrp_16 and pc_FeatrGrp_25; + } + //C13: UEs supporting E-UTRA and UTRA and Feature Group Indicator 16 and Feature Group Indicator 22 + case (C13) { + v_ApplCond := pc_UTRA and pc_FeatrGrp_16 and pc_FeatrGrp_22; + } + //C14: UEs supporting E-UTRA and Feature Group Indicator 5 and Feature Group Indicator 17 + case (C14) { + v_ApplCond := pc_FeatrGrp_5 and pc_FeatrGrp_17; + } + //C15: UEs supporting E-UTRA and Feature Group Indicator 3 and Feature Group Indicator 7 + case (C15) { + v_ApplCond := pc_FeatrGrp_3 and pc_FeatrGrp_7; + } + //C16: UEs supporting E-UTRA and Feature Group Indicator 7 + case (C16) { + v_ApplCond := pc_FeatrGrp_7; + } + //C17: UEs supporting E-UTRA, UTRAN, GERAN and Feature Group Indicators 22 and 23 + case (C17) { + v_ApplCond := pc_UTRA and pc_GERAN and pc_FeatrGrp_22 and pc_FeatrGrp_23; + } + //C19: UEs supporting E-UTRA and Feature Group Indicator 6 and 7 + case (C19) { + v_ApplCond := pc_FeatrGrp_6 and pc_FeatrGrp_7; // @sic R5-103314 sic@ + } + //C20: UEs supporting E-UTRA and GERAN and Feature Group Indicator 16 and Feature Group Indicator 23 + case (C20) { + v_ApplCond := pc_GERAN and pc_FeatrGrp_16 and pc_FeatrGrp_23; + } + //C21: UEs supporting E-UTRA and Feature Group Indicator 13 and Feature Group Indicator 25 + case (C21) { + v_ApplCond := pc_FeatrGrp_13 and pc_FeatrGrp_25; + } + //C22: UEs supporting E-UTRA and MT SMS over SGs, and combined EPS/IMSI attach (with or without pre-configuration) + case (C22) { + v_ApplCond := pc_SMS_SGs_MT and pc_Combined_Attach; //@sic R5s130507 sic@ + } + //C23: UEs supporting E-UTRA and MO SMS over SGs, and combined EPS/IMSI attach (with or without pre-configuration) + case (C23) { + v_ApplCond := pc_SMS_SGs_MO and pc_Combined_Attach; //@sic R5s130507 sic@ + } + //C24: UEs supporting E-UTRA and HRPD and Feature Group Indicator 16 and Feature Group Indicator 26 + case (C24) { + v_ApplCond := pc_HRPD and pc_FeatrGrp_16 and pc_FeatrGrp_26; + } + //C25: UEs supporting E-UTRA and 1xRTT and Feature Group Indicator 16 and Feature Group Indicator 24 + case (C25) { + v_ApplCond := pc_1xRTT and pc_FeatrGrp_16 and pc_FeatrGrp_24; + } + //C26: UEs supporting E-UTRA and CS fallback + case (C26) { + v_ApplCond := pc_CS_Fallback; + } + //C27: UEs supporting E-UTRA and UTRAN or GERAN and ISR + case (C27) { + v_ApplCond := (pc_UTRA or pc_GERAN) and pc_ISR; + } + //C28: Void + //C29: UEs supporting E-UTRA and Feature Group Indicator 7 and (UE Category 2 or UE Category 3 or UE Category 4 or UE Category 5) + case (C29) { + v_ApplCond := pc_FeatrGrp_7 and (pc_ue_Category_2 or pc_ue_Category_3 or pc_ue_Category_4 or pc_ue_Category_5) ; + } + //C30: UEs supporting E-UTRA and Feature Group Indicator 20 and (UE Category 2 or UE Category 3 or UE Category 4 or UE Category 5) + case (C30) { + v_ApplCond := pc_FeatrGrp_20 and (pc_ue_Category_2 or pc_ue_Category_3 or pc_ue_Category_4 or pc_ue_Category_5) ; + } + //C31: UEs supporting E-UTRA and Feature Group Indicator 7 and Feature Group Indicator 20 and (UE Category 2 or UE Category 3 or UE Category 4 or UE Category 5) + case (C31) { + v_ApplCond := (pc_FeatrGrp_7 and pc_FeatrGrp_20) and (pc_ue_Category_2 or pc_ue_Category_3 or pc_ue_Category_4 or pc_ue_Category_5) ; + } + //C32: UEs supporting E-UTRA and Feature Group Indicator 7 and Feature Group Indicator 20 + case (C32) { + v_ApplCond := pc_FeatrGrp_7 and pc_FeatrGrp_20; + } + //C33: UEs supporting E-UTRA and Feature Group Indicator 20 + case (C33) { + v_ApplCond := pc_FeatrGrp_20; + } + //C34: UEs supporting E-UTRA, UTRA and GERAN + case (C34) { + v_ApplCond := pc_UTRA and pc_GERAN; + } + //C35: UEs supporting E-UTRA, and UTRA + case (C35) { + v_ApplCond := pc_UTRA; + } + //C36: UEs supporting E-UTRA and UTRA and Feature Group Indicator 8 and Feature Group Indicator 22 + case (C36) { + v_ApplCond := pc_UTRA and pc_FeatrGrp_8 and pc_FeatrGrp_22; + } + //C37: UEs supporting E-UTRA and UTRA and inter-RAT PS handover to E-UTRA from UTRA and EUTRA Feature Group Indicator 2 + case (C37) { + v_ApplCond := pc_UTRA and (pc_HO_from_UTRA_to_eFDD or pc_HO_from_UTRA_to_eTDD) and pc_UTRA_FeatrGrp_2; + } + //C38: UEs supporting E-UTRA and GSM and Feature Group Indicator 10 and Feature Group Indicator 23 + case (C38) { + v_ApplCond := pc_GERAN and pc_FeatrGrp_10 and pc_FeatrGrp_23; + } + //C39: UEs supporting E-UTRA and UTRA and Feature Group Indicator 5 and Feature Group Indicator 19 and Feature Group 22 + case (C39) { + v_ApplCond := pc_UTRA and pc_FeatrGrp_5 and pc_FeatrGrp_19 and pc_FeatrGrp_22; + } + //C40: UEs supporting E-UTRA and GERAN and Feature Group Indicator 5 and Feature Group Indicator 19 and Feature Group 23 + case (C40) { + v_ApplCond := pc_GERAN and pc_FeatrGrp_5 and pc_FeatrGrp_19 and pc_FeatrGrp_23; + } + //C41: UEs supporting E-UTRA and 1xRTT and 1xCS fallback + case (C41) { + v_ApplCond := pc_1xRTT and pc_Combined_Attach and pc_1xCSfallback; //@sic R5-142894 sic@ + } + //C42: UEs supporting E-UTRA and HRPD and Feature Group Indicator 12 and Feature Group Indicator 26 + case (C42) { + v_ApplCond := pc_HRPD and pc_FeatrGrp_12 and pc_FeatrGrp_26; + } + //C44: UEs supporting E-UTRA and HRPD and Feature Group Indicator 5 and Feature Group Indicator 19 and Feature Group Indicator 26 + case (C44) { + v_ApplCond := pc_HRPD and pc_FeatrGrp_5 and pc_FeatrGrp_19 and pc_FeatrGrp_26; + } + //C46: UEs supporting E-UTRA FDD and TDD and not supporting eEMM INFORMATION + case (C46) { + v_ApplCond := (pc_eFDD or pc_eTDD) and not pc_EMM_Information; + } + //C47: UEs supporting E-UTRA and allowed CSG list and EPS attach (with or without pre-configuration) + case (C47) { + v_ApplCond := pc_Allowed_CSG_list and pc_Attach; + } + //C48: UE supporting UTRA and CS fallback and speech + case (C48) { + v_ApplCond := pc_UTRA and pc_Combined_Attach and pc_CS_Fallback and pc_Speech; //@sic R5-142894 sic@ + } + //C49: UEs supporting E-UTRA and Mobility management based on Dual-Stack Mobile IPv6 and being configured to discover the Home Agent address via DHCPv6 + case (C49) { + v_ApplCond := false;//pc_DSMIPv6 and pc_HAAddress_via_DHCPv6 + } + //C50: UEs supporting E-UTRA and Mobility management based on Dual-Stack Mobile IPv6 and being configured to discover the Home Agent address via IKEv2 + case (C50) { + v_ApplCond := false;//pc_DSMIPv6 and pc_HAAddress_via_IKEv2 + } + //C51: UEs supporting E-UTRA and supporting the EMM information message + case (C51) { + v_ApplCond := (pc_eFDD or pc_eTDD) and pc_EMM_Information and (pc_FullNameNetwork or pc_ShortNameNetwork or pc_LocalTimeZone or pc_UniversalAndLocalTimeZone); + } + //C52: UEs supporting E-UTRA and 1xRTT and SRVCC from E-UTRA to 1xRTT (CS) + case (C52) { + v_ApplCond := false;//pc_1xRTT and pc_SRVCC_1xRTT_CS; + } + //C53: UEs supporting E-UTRA and switch on/off + case (C53) { + v_ApplCond := pc_SwitchOnOff; + } + //C54: UEs supporting E-UTRA and ESM UE requested bearer resource allocation procedure + case (C54) { + v_ApplCond := pc_ESM_MO_Bearer_Allocation; + } + //C55: Ues supporting E-UTRA and ESM UE requested bearer resource modification procedure and UE requested modification of network allocated TFTs + case (C55) { + v_ApplCond := pc_ESM_MO_Bearer_Modification and pc_ESM_UE_Modification_NW_TFT; + } + //C56: UEs supporting E-UTRA and (UE Category 2 to UE Category 10) + case (C56) { + v_ApplCond := (pc_ue_Category_2 or pc_ue_Category_3 or pc_ue_Category_4 or pc_ue_Category_5 or pc_ue_Category_6 or pc_ue_Category_7 or pc_ue_Category_8 or pc_ue_Category_9 or pc_ue_Category_10); //@sic R5-142898 sic@ + } + //C57: UEs supporting E-UTRA and GERAN an CS fallback and speech + case (C57) { + v_ApplCond := (pc_eFDD or pc_eTDD) and pc_GERAN and pc_CS_Fallback and pc_Combined_Attach and pc_Speech; //@sic R5-142894 sic@ + } + //C58: UEs supporting E-UTRA and Feature Group Indicator 21 + case (C58) { + v_ApplCond := pc_FeatrGrp_21; + } + //C59: UEs supporting E-UTRAN and UTRAN and ISR + case (C59) { + v_ApplCond := pc_UTRA and pc_ISR; + } + //C60: UEs supporting E-UTRA and GERAN an CS fallback and speech + case (C60) { + v_ApplCond := pc_GERAN and pc_Combined_Attach and pc_CS_Fallback and pc_Speech; //@sic R5-142894 sic@ + } + //C61: UEs supporting E-UTRA, UTRA, GERAN and Feature Group Indicators 16, Feature Group Indicators 22 and Feature Group Indicators 23 + case (C61) { + v_ApplCond := pc_UTRA and pc_GERAN and pc_FeatrGrp_16 and pc_FeatrGrp_22 and pc_FeatrGrp_23; + } + //C62 void + //C63: UEs supporting E-UTRA FDD and E-UTRA TDD and Feature Group Indicator 25 and Feature Group Indicator 30 + case (C63) { + v_ApplCond := pc_eFDD and pc_eTDD and pc_FeatrGrp_25 and pc_FeatrGrp_30; //@sic R5s140146 sic@ + } + //C64: UEs supporting E-UTRA and ETWS reception + case (C64) { + v_ApplCond := pc_ETWS_message; + } + //C65: Void + case (C65) { + v_ApplCond := false; + } + //C66: UEs supporting E-UTRA and GSM and GERAN to E-UTRAN neighbour cell measurements + case (C66) { + v_ApplCond := pc_GERAN and pc_GERAN_2_E_UTRAN_meas; + } + //C67 void + //C68: UEs supporting E-UTRA and Mobility management based on Dual-Stack Mobile IPv6 and being configured to request the IPv6 address of the Home Agent during Attach procedure + case (C68) { + v_ApplCond := pc_DSMIPv6 and pc_RequestIPv6HAAddress_DuringAttach; + } + //C69: UEs supporting E-UTRA and Mobility management based on Dual-Stack Mobile IPv6 and being configured to request the IPv4 address of the Home Agent during Attach procedure + case (C69) { + v_ApplCond := pc_DSMIPv6 and pc_RequestIPv4HAAddress_DuringAttach; + } + //C70 void + //C71: UEs supporting E-UTRA and IMS emergency call + case (C71) { + v_ApplCond := pc_IMS_emergency_call; + } + //C74: UEs supporting E-UTRA and Disable EPS capability. + case (C74) { + v_ApplCond := pc_EPS_Services_Disable; + } + //C75: UEs supporting E-UTRA and UTRA and allowed CSG + case (C75) { + v_ApplCond := pc_UTRA and pc_Allowed_CSG_list; + } + //C76: UEs supporting E-UTRA and UTRA and allowed CSG list and manual CSG selection + case (C76) { + v_ApplCond := pc_UTRA and pc_Allowed_CSG_list and pc_Manual_CSG_Selection ; + } + //C77: UEs supporting E-UTRA and UTRA and EUTRA Feature Group Indicator 1 + case (C77) { + v_ApplCond := pc_UTRA and pc_UTRA_FeatrGrp_1; + } + //C78 void + //C80: UEs supporting E-UTRA and allowed CSG list and manual CSG selection + case (C80) { + v_ApplCond := pc_Allowed_CSG_list and pc_Manual_CSG_Selection; + } + //C81: UEs supporting E-UTRA, UTRA, CS fallback and Feature Group Indicator 8 and speech and PS domain services and CS domain services simultaneously + case (C81) { + v_ApplCond := pc_UTRA and pc_CS_Fallback and pc_Combined_Attach and pc_FeatrGrp_8 and pc_Speech and pc_SupportOpModeA; //@sic R5s140411 R5-142323 R5-142894 sic@ + } + //C82: UEs supporting E-UTRA and UTRA and allowed CSG list and EUTRA Feature Group Indicator 1 + case (C82) { + v_ApplCond := pc_UTRA and pc_Allowed_CSG_list and pc_UTRA_FeatrGrp_1; + } + //C84: UEs supporting E-UTRA and UTRA and CS fallback and speech and PS domain services and CS domain services simultaneously + case (C84) { + // @sic R5s120531 sic@ + v_ApplCond := pc_UTRA and pc_Combined_Attach and pc_CS_Fallback and pc_Speech and pc_SupportOpModeA; //@sic R5-142894 sic@ + } + //C85 void + //C86: UEs supporting E-UTRA and UTRA and combined EPS/IMSI attach (with or without pre-configuration) and CS fallback and configured to CS/PS mode 1 (voice centric) + case (C86) { + v_ApplCond := pc_UTRA and pc_Combined_Attach and pc_CS_Fallback and pc_CS_PS_voice_centric ; + } + //C87: UEs supporting E-UTRA and UTRA and combined EPS/IMSI attach (with or without pre-configuration) and CS fallback (and implicitly SMSoverSGs) and configured to CS/PS mode 2 (data centric) + case (C87) { + v_ApplCond := pc_UTRA and pc_Combined_Attach and pc_CS_Fallback and pc_CS_PS_data_centric ; + } + //C88: UEs supporting E-UTRA and UTRA or/and E-UTRA and GERAN, and combined EPS/IMSI attach + case (C88) { + v_ApplCond := (pc_SMS_SGs or pc_1xCSfallback) and (pc_UTRA or pc_GERAN) and pc_Combined_Attach; //@sic R5-130371 sic@ + } + // C89: UEs supporting E-UTRA and GSM and GERAN to E-UTRAN PS Handover + case (C89) { + v_ApplCond := pc_GERAN and pc_GERAN_2_E_UTRAN_PSHO ; + } + //C90: UEs supporting E-UTRA and GERAN and Feature Group Indicator 23 + case (C90) { + v_ApplCond := pc_GERAN and pc_FeatrGrp_23; + } + //C91: UEs supporting E-UTRA and UTRA and Feature Group Indicator 22 + case (C91) { + v_ApplCond := pc_UTRA and pc_FeatrGrp_22; + } + //C92: UEs supporting E-UTRA and HRPD and Feature Group Indicator 26 + case (C92) { + v_ApplCond := pc_HRPD and pc_FeatrGrp_26; + } + //C93: UEs supporting E-UTRA and 1xRTT and Feature Group Indicator 24 + case (C93) { + v_ApplCond := pc_1xRTT and pc_FeatrGrp_24; + } + //C95: UEs supporting E-UTRA and GERAN and allowed CSG list and manual CSG selection + case (C95) { + v_ApplCond := pc_GERAN and pc_Allowed_CSG_list and pc_Manual_CSG_Selection; + } + //C96: UEs supporting E-UTRA and GERAN and CS fallback and Feature Group Indicator 10 and speech + case (C96) { + v_ApplCond := pc_FeatrGrp_10 and pc_Combined_Attach and pc_GERAN and pc_CS_Fallback and pc_Speech; //@sic R5-142894 sic@ + } + //C97: UEs supporting E-UTRA and Multiple PDN + case (C97) { + v_ApplCond := pc_Multiple_PDN; + } + //C98: UEs supporting E-UTRA and ESM UE requested bearer resource allocation procedure and Multiple PDN + case (C98) { + v_ApplCond := pc_ESM_MO_Bearer_Allocation and pc_Multiple_PDN; + } + //C99:UEs supporting E-UTRA and TTI bundling and Feature Group Indicator 7 + case (C99) { + v_ApplCond := pc_TTI_Bundling and pc_FeatrGrp_7; + } + //C100: UEs supporting E-UTRA and semi-persistence scheduling and Feature Group Indicator 3 and 7 + case (C100) { + v_ApplCond := pc_Semi_Persistence_Scheduling and pc_FeatrGrp_7; + } + //C103: UEs supporting E-UTRA and UE Category 1 + case (C103) { + v_ApplCond := (pc_eFDD or pc_eTDD) and pc_ue_Category_1; + } + // UEs supporting E-UTRA and UTRA and CS fallback and use of the UTRA system information provided by RRCConnectionRelease upon redirection and speech + case (C104) { + v_ApplCond := pc_UTRA and pc_Combined_Attach and pc_CS_Fallback and pc_eRedirectionUTRA and pc_Speech; //@sic R5-142894 sic@ + } + // C105: UEs supporting E-UTRA, UTRA, CS fallback and Feature Group Indicator 8 and speech + case (C105) { + v_ApplCond := pc_UTRA and pc_CS_Fallback and pc_Combined_Attach and pc_FeatrGrp_8 and pc_Speech; //@sic R5-142894 sic@ + } + // C106: UEs supporting E-UTRA and detach for non-EPS services and, combined EPS/IMSI attach. + case (C106) { + v_ApplCond := (pc_IMSI_Detach and pc_Combined_Attach); // @sic R5s120265 sic@ + } + // C107: UEs supporting E-UTRA and GSM and PS handover from E-UTRAN to GERAN and Feature Group Indicator 23 + case (C107){ + v_ApplCond := pc_GERAN and pc_E_UTRAN_2_GERAN_PSHO and pc_FeatrGrp_23; + } + // C109: UEs supporting E-UTRA and IMS emergency call and establishing the emergency call using the CS domain in UTRA or GERAN + case (C109){ + v_ApplCond := pc_IMS_emergency_call and (pc_CS_Em_Call_in_UTRA or pc_CS_Em_Call_in_GERAN); + } + // C110: UEs supporting E-UTRA and GERAN and CS fallback and PS handover from E-UTRAN to GERAN and Feature Group Indicator 23 and speech + case (C110){ + v_ApplCond := pc_E_UTRAN_2_GERAN_PSHO and pc_Combined_Attach and pc_FeatrGrp_23 and pc_GERAN and pc_CS_Fallback and pc_Speech; //@sic R5-142894 sic@ + } + // C111: UEs supporting E-UTRA and GERAN and EDTM and CS fallback and PS handover from E-UTRAN to GERAN and Feature Group Indicator 23 and speech + case (C111){ + v_ApplCond := pc_EDTM and pc_Combined_Attach and pc_E_UTRAN_2_GERAN_PSHO and pc_FeatrGrp_23 and pc_GERAN and pc_CS_Fallback and pc_Speech; //@sic R5-142894 sic@ + } + // C112: UEs supporting E-UTRA and UTRA and Feature Group Indicator 7, 8 and 22 and SRVCC and IMS voice + case (C112){ + v_ApplCond := pc_UTRA and pc_FeatrGrp_7 and pc_FeatrGrp_8 and pc_FeatrGrp_22 and pc_FeatrGrp_27 and pc_SRVCC_GERAN_UTRAN and pc_VoLTE; + } + // C113: UEs supporting E-UTRA and MBMS + case (C113){ + v_ApplCond := (pc_eFDD or pc_eTDD) and pc_eMBMS; + } + // C113a: UEs supporting E-UTRA and MBMS and MBMS service continuity + case (C113a){ + v_ApplCond := (pc_eFDD or pc_eTDD) and pc_eMBMS and pc_eMBMS_SC; + } + // C113b: UEs supporting E-UTRA and Feature Group Indicator 13 and Feature Group Indicator 25 and MBMS and MBMS service continuity + case (C113b){ + v_ApplCond := (pc_eFDD or pc_eTDD) and pc_FeatrGrp_13 and pc_FeatrGrp_25 and pc_eMBMS and pc_eMBMS_SC; + } + // C113c: UEs supporting E-UTRA and Intra-band contiguous Carrier Aggregation and Feature Group Indicator 13 and Feature Group Indicator 25 and MBMS and MBMS service continuity + case (C113c) { + v_ApplCond := (pc_eFDD or pc_eTDD) and (pc_DL_IntraBand_ContCaBWclassB or pc_DL_IntraBand_ContCaBWclassC) and pc_FeatrGrp_13 and pc_FeatrGrp_25 and pc_eMBMS and pc_eMBMS_SC; + } + // C113d: UEs supporting E-UTRA and Inter-band Carrier Aggregation and Feature Group Indicator 13 and Feature Group Indicator 25 and MBMS and MBMS service continuity + case (C113d) { + v_ApplCond := (pc_eFDD or pc_eTDD) and pc_DL_interBand_CaBwClassComb_AA and pc_FeatrGrp_13 and pc_FeatrGrp_25 and pc_eMBMS and pc_eMBMS_SC; + } + // C113e: UEs supporting E-UTRA and Intra-band contiguous Carrier Aggregation and MBMS and MBMS service continuity + case (C113e) { + v_ApplCond := (pc_eFDD or pc_eTDD) and (pc_DL_IntraBand_ContCaBWclassB or pc_DL_IntraBand_ContCaBWclassC) and pc_eMBMS and pc_eMBMS_SC; + } + // C113f: UEs supporting E-UTRA and Inter-band Carrier Aggregation and MBMS and MBMS service continuity + case (C113f) { + v_ApplCond := (pc_eFDD or pc_eTDD) and pc_DL_interBand_CaBwClassComb_AA and pc_eMBMS and pc_eMBMS_SC; + } + // C114: UEs supporting E-UTRA and GSM and CCN towards E-UTRAN, E-UTRAN Neighbour Cell measurement reporting and Network controlled cell reselection to E-UTRAN + case (C114){ + v_ApplCond := pc_GERAN and pc_GERAN_2_E_UTRAN_measreporting_CCN; + } + // C115: UEs supporting E-UTRA and GERAN and speech + case (C115){ + v_ApplCond := ( pc_GERAN and pc_Speech); + } + // C118: UEs supporting E-UTRA and allowed CSG list and Feature Group Indicator 25 + // C116: UEs supporting E-UTRA and 1xRTT and 1xCS fallback + case (C116) { + v_ApplCond := pc_1xRTT and pc_Combined_Attach and pc_Enhanced_1xCSfallback; //@sic R5-142894 sic@ + } + // C117: UEs supporting E-UTRA and UTRA and HS-PDSCH and E-DPDCH and Feature Group Indicator 8 and Feature Group Indicator 22 + case (C117) { + v_ApplCond := ( pc_UTRA and (( pc_HSDPA_FDD and pc_HSUPA_FDD) or ( pc_HSDPA_TDD and pc_HSUPA_TDD)) and pc_FeatrGrp_8 and pc_FeatrGrp_22); //@sic R5w140207 sic@ + } + case (C118) { + v_ApplCond := ( pc_Allowed_CSG_list and pc_FeatrGrp_25); + } + // C119: UEs supporting E-UTRA and UTRA and allowed CSG list and Feature Group Indicator 22 + case (C119) { + v_ApplCond := ( pc_UTRA and pc_Allowed_CSG_list and pc_FeatrGrp_22); + } + // C120: UEs supporting E-UTRA and Feature Group Indicator 3 and Feature Group Indicator 7 and ROHC profile0x0001 and ROHC profile0x0002 + case (C120) { + v_ApplCond := (pc_FeatrGrp_3 and pc_FeatrGrp_7 and pc_ROHC_profile0x0001 and pc_ROHC_profile0x0002); + } + // C121: UEs supporting E-UTRA and combined EPS/IMSI attach (with or without pre-configuration) and UTRA + case (C121) { + v_ApplCond := (pc_Combined_Attach and pc_UTRA); + } + // C122 void + // C123: UEs supporting E-UTRA and allowed CSG list and combined EPS/IMSI attach (with or without pre-configuration) + case (C123) { + v_ApplCond := (pc_Allowed_CSG_list and pc_Combined_Attach); + } + // C124 void + // C125: UEs supporting E-UTRA and combined EPS/IMSI attach (with or without pre-configuration) and (CS/PS Mode 2 or CS/PS Mode 1 with IMS Support + case (C125) { + v_ApplCond := (pc_Combined_Attach and (pc_CS_PS_data_centric or (pc_CS_PS_voice_centric and pc_VoLTE))); + } + // C126:UEs supporting E-UTRA and UTRA and supporting Squal based cell reselection to UTRAN from E-UTRAN + case (C126) { + v_ApplCond := (pc_UTRA and pc_Squal_based_CellReselection_to_UTRAN_from_E_UTRAN ); + } + // C127: UEs supporting E-UTRA and UTRA and supporting Squal based cell reselection to E-UTRAN from UTRAN + case (C127) { + v_ApplCond := (pc_UTRA and pc_Squal_based_CellReselection_to_E_UTRAN_from_UTRAN ); + } + // C128: UEs supporting E-UTRA and UTRAN or/and E-UTRA and GERAN, and combined EPS/IMSI attach (with or without pre-configuration + case (C128) { + v_ApplCond := (pc_Combined_Attach and (pc_UTRA or pc_GERAN)); + } + // C129: UEs supporting E-UTRA and CMAS + case (C129) { + v_ApplCond := pc_CMAS_Message; + } + // C130: UEs supporting E-UTRA FDD and E-UTRA TDD and Feature Group Indicator 25 + case (C130) { + v_ApplCond := pc_eFDD and pc_eTDD and pc_FeatrGrp_25; //@sic R5s140146 sic@ + } + // C131: UEs supporting E-UTRA and UTRA and not supporting Squal based cell reselection to E-UTRAN from UTRAN + case (C131) { + v_ApplCond := (pc_UTRA and not(pc_Squal_based_CellReselection_to_E_UTRAN_from_UTRAN)); + } + // C132: UEs supporting E-UTRA and Intra-band contiguous Carrier Aggregation + case (C132){ + v_ApplCond := (pc_eFDD or pc_eTDD) and (pc_DL_IntraBand_ContCaBWclassB or pc_DL_IntraBand_ContCaBWclassC); + } + // C132a: UEs supporting E-UTRA and Downlink Intra-band non-contiguous Carrier Aggregation + case (C132a){ + v_ApplCond := (pc_eFDD or pc_eTDD) and pc_DL_intraBand_nonContCaBwClassComb_AA; + } + // C133:UEs supporting E-UTRA and Intra-band contiguous Uplink Carrier Aggregation + case (C133){ + v_ApplCond := (pc_eFDD or pc_eTDD) and (pc_DL_IntraBand_ContCaBWclassB or pc_DL_IntraBand_ContCaBWclassC) and (pc_UL_IntraBand_ContCaBWclassB or pc_UL_IntraBand_ContCaBWclassC); + } + // C134: UEs supporting E-UTRA and Intra-band contiguous Carrier Aggregation and Feature Group Indictor 111 + case (C134){ + v_ApplCond := (pc_eFDD or pc_eTDD) and ( pc_DL_IntraBand_ContCaBWclassB or pc_DL_IntraBand_ContCaBWclassC) and pc_FeatrGrp_111; + } + // C134a: UEs supporting E-UTRA and Downlink Intra-band non-contiguous Carrier Aggregation and Feature Group Indicator 111 + case (C134a){ + v_ApplCond := (pc_eFDD or pc_eTDD) and pc_DL_intraBand_nonContCaBwClassComb_AA and pc_FeatrGrp_111; + } + // C137: UEs supporting E-UTRA and logged measurements in RRC_IDLE + case (C137){ + v_ApplCond := pc_LoggedMeasurementsIdle; + } + // C138:UEs supporting E-UTRA and UTRA and logged measurements in RRC_IDLE and inter-RAT PS handover to E-UTRA from UTRA and EUTRA Feature Group Indicator 2 + case (C138){ + v_ApplCond := pc_UTRA and (pc_HO_from_UTRA_to_eFDD or pc_HO_from_UTRA_to_eTDD) and pc_LoggedMeasurementsIdle and pc_UTRA_FeatrGrp_2 ; + } + // C139: UEs supporting E-UTRA and UTRA and SRVCC and IMS emergency call + case (C139) { + v_ApplCond := pc_UTRA and pc_SRVCC_GERAN_UTRAN and pc_IMS_emergency_call; + } + // C140: UEs supporting E-UTRA and UTRA and emergency speech + case (C140) { + v_ApplCond := pc_UTRA and pc_EmergSpeech; + } + // C141: UEs supporting E-UTRA and combined EPS/IMSI attach (with or without pre-configuration) and CS/PS Mode 2 (data centric) + case (C141) { + v_ApplCond := (pc_Combined_Attach and pc_CS_PS_data_centric); + } + // C142: UEs supporting E-UTRA FDD and E-UTRA TDD + case (C142) { + v_ApplCond := pc_eFDD and pc_eTDD; + } + // C143: UEs supporting E-UTRA and allowed CSG list and manual CSG selection and EPS attach + case (C143) { + v_ApplCond := (pc_Allowed_CSG_list and pc_Manual_CSG_Selection and pc_Attach); + } + //C144:UEs supporting E-UTRA and GERAN and Feature Group Indicator 7 and Feature Group Indicator 9 and Feature Group Indicator 23 and SRVCC from E-UTRAN to GERAN/UTRAN and VoLTE in GSMA PRD IR.92: "IMS Profile for Voice and SMS" + case (C144) { + v_ApplCond := pc_GERAN and pc_FeatrGrp_7 and pc_FeatrGrp_9 and pc_FeatrGrp_23 and pc_SRVCC_GERAN_UTRAN and pc_VoLTE; + } + //C145: UEs supporting E-UTRA and supporting UTRAN ANR + case (C145){ + v_ApplCond := pc_UTRAN_ANR; + } + //C146: UEs supporting E-UTRA and UTRA and inter-RAT PS handover to E-UTRA from UTRA + case (C146){ + v_ApplCond := pc_UTRA and (pc_HO_from_UTRA_to_eFDD or pc_E_UTRAN_2_GERAN_PSHO); + } + //C147:UEs supporting E-UTRA and standalone GNSS receiver to provide detailed location information in RRC measurement report and logged measurements in RRC_IDLE + case (C147){ + v_ApplCond := (pc_eFDD or pc_eTDD) and pc_StandaloneGNSS_Location; + } + //C148:UEs supporting E-UTRA and Feature Group Indicator 23 @sic R5-144338 sic@ + case (C148){ + v_ApplCond := (pc_eFDD or pc_eTDD) and pc_FeatrGrp_23 and pc_GERAN_2_E_UTRAN_PSHO ; + } + // C150: UEs supporting E-UTRA and UTRA, or, E-UTRA and UTRA and GERAN + case (C150){ + v_ApplCond := pc_UTRA or (pc_UTRA and pc_GERAN); // @sic R5-133701 sic@ + } + // C151:UEs supporting E-UTRA and Inter-band Carrier Aggregation + case(C151){ + v_ApplCond := (pc_eFDD or pc_eTDD) and pc_DL_interBand_CaBwClassComb_AA; // @sic R5133229 R5s130629 sic@ + } + // C152:UEs supporting E-UTRA and Inter-band Carrier Aggregation and Feature Group Indictor 111 + case(C152){ + v_ApplCond := (pc_eFDD or pc_eTDD) and pc_DL_interBand_CaBwClassComb_AA and pc_FeatrGrp_111; // @sic R5133229 R5s130629 sic@ + } + // C153: UEs supporting E-UTRA and UTRA or/and E-UTRA and GERAN, and, combined EPS/IMSI attach (with or without pre-configuration) and disabling the EPS services + case (C153) { + v_ApplCond := pc_Combined_Attach and pc_EPS_Services_Disable; + } + //C154: UEs supporting E-UTRA and Feature Group Indictor 115 + case (C154){ + v_ApplCond := (pc_eFDD or pc_eTDD) and pc_FeatrGrp_115 ; + } + //c155: UEs supporting E-UTRA and UTRA and Intra-band Contiguous CA Carrier Aggregation and Feature Group Indicator 112 and inter-RAT PS handover to E-UTRA from UTRA and EUTRA Feature Group Indicator 2 + case (C155){ + //@sic R5-134783 sic@ + v_ApplCond := (pc_eFDD or pc_eTDD) and pc_UTRA and pc_FeatrGrp_112 and (pc_HO_from_UTRA_to_eFDD or pc_HO_from_UTRA_to_eTDD) and pc_UTRA_FeatrGrp_2 and (pc_DL_IntraBand_ContCaBWclassB or pc_DL_IntraBand_ContCaBWclassC); + } + //C155a: UEs supporting E-UTRA and UTRA and Inter-band Contiguous CA Carrier Aggregation and Feature Group Indicator 112 and inter-RAT PS handover to E-UTRA from UTRA and EUTRA Feature Group Indicator 2 + case (C155a){ + v_ApplCond := (pc_eFDD or pc_eTDD) and pc_UTRA and pc_FeatrGrp_112 and (pc_HO_from_UTRA_to_eFDD or pc_HO_from_UTRA_to_eTDD) and pc_UTRA_FeatrGrp_2 and pc_DL_interBand_CaBwClassComb_AA; + } + //C155b: UEs supporting E-UTRA and UTRA and Downlink Intra-band non-contiguous Carrier Aggregation and Feature Group Indicator 112 and inter-RAT PS handover to E-UTRA from UTRA and EUTRA Feature Group Indicator 2 + case (C155b){ + v_ApplCond :=(pc_eFDD or pc_eTDD) and pc_UTRA and pc_FeatrGrp_112 and (pc_HO_from_UTRA_to_eFDD or pc_HO_from_UTRA_to_eTDD) and pc_UTRA_FeatrGrp_2 and pc_DL_intraBand_nonContCaBwClassComb_AA; + } + // C156: UEs supporting E-UTRA and allowed CSG list + case (C156) { + v_ApplCond := pc_Allowed_CSG_list; + } + // C157: UEs supporting E-UTRA and user initiated PLMN reselection in automatic mode + case (C157){ + v_ApplCond := pc_UserInitiatedPLMN_Reselection; + } + //C158: UE supporting E-UTRA and UL MIMO + case(C158){ + v_ApplCond := (pc_eFDD or pc_eTDD) and pc_UL_MIMO; + } + //C159:UEs supporting E-UTRA and UTRA and Feature Group Indicator 27 and IMS voice and aSRVCC + case(C159){ + v_ApplCond := pc_UTRA and pc_FeatrGrp_27 and pc_VoLTE and pc_IMS_SRVCCAlert; + } + //C161: UEs supporting E-UTRA and UTRA and Feature Group Indicator 27 and IMS voice and aSRVCC and Notification procedure + case(C161){ + v_ApplCond := pc_UTRA and pc_FeatrGrp_27 and pc_VoLTE and pc_ESM_Notification and pc_IMS_SRVCCAlert; + } + //C162: UEs supporting E-UTRA and Inter-band Uplink Carrier Aggregation + case(C162){ + v_ApplCond := (pc_eFDD or pc_eTDD) and pc_DL_interBand_CaBwClassComb_AA and pc_UL_interBand_CaBwClassComb_AA; // @sic R5133229 sic@ + } + // C163: UEs supporting E-UTRA and GSM and logged measurements in RRC_IDLE and inter-RAT PS handover to E-UTRA from GSM + case (C163){ + v_ApplCond := pc_GERAN and pc_GERAN_2_E_UTRAN_PSHO and pc_LoggedMeasurementsIdle; + } + // C164: UEs supporting E-UTRA and concatenated multiple MO SMS over SGs + case (C164) { + v_ApplCond := pc_SMS_SGs_Multi_MO and pc_Combined_Attach; //@sic R5s130507 sic@ + } + // C165: UEs supporting E-UTRA and HRPD and logged measurements in RRC_IDLE + case (C165){ + v_ApplCond := pc_HRPD and pc_LoggedMeasurementsIdle; + } + // C166: UEs supporting E-UTRA and Feature Group Indicator 14 + case (C166){ + v_ApplCond := pc_FeatrGrp_14; + } + // C167 UEs supporting E-UTRA and Feature Group Indicator 14 and 25 + case (C167){ + v_ApplCond := pc_FeatrGrp_14 and pc_FeatrGrp_25 ; + } + // C168: UEs supporting E-UTRA and UTRA and Feature Group Indicator 15 + case (C168){ //@sic R5s140461 sic@ + v_ApplCond := pc_UTRA and pc_FeatrGrp_15 ; + } + //C169: void @sic R5-144733 sic@ + //C170: UEs supporting FDD E-UTRA and Inter Frequency Proximity Indication + case (C170){ + v_ApplCond := pc_eFDD and pc_InterFreq_ProximityIndication; + } + //C171: UEs supporting E-UTRA and GERAN and Squal based cell reselection between E-UTRAN and GERAN + case (C171) { + v_ApplCond := pc_GERAN and pc_Squal_based_CellReselection_between_E_UTRAN_and_GERAN + } + //C172: UEs supporting E-UTRA and IMS emergency call and establishing the emergency call using the CS domain in 1xRTT + case (C172) { + v_ApplCond := pc_IMS_emergency_call and pc_CS_Em_Call_in_1xRTT; + } + //C173: UEs supporting E-UTRA and AttachWithIMSI + case (C173) { + v_ApplCond := pc_AttachWithIMSI; + } + //C174: UEs supporting E-UTRA and T3412 Extended IE + case (C174) { + v_ApplCond := pc_T3412Extended; + } + // C175 :UEs supporting E-UTRA TDD and TDD special subframe config + case (C175) { + v_ApplCond := pc_eTDD and pc_TDD_SpecialSubframe; + } + //C176: UEs supporting E-UTRA and Intra-band contiguous Carrier Aggregation and does not support Category 1 + case (C176) { + v_ApplCond := (pc_eFDD or pc_eTDD) and (pc_DL_IntraBand_ContCaBWclassB or pc_DL_IntraBand_ContCaBWclassC) and not(pc_ue_Category_1); + } + //C177: UEs supporting E-UTRA and Inter-band Carrier Aggregation and does not support Category 1 + case (C177) { + v_ApplCond := (pc_eFDD or pc_eTDD) and pc_DL_interBand_CaBwClassComb_AA and not(pc_ue_Category_1); // @sic R5133229 sic@ + } + //C178: UEs supporting E-UTRA and LAP + case (C178) { + v_ApplCond := pc_LAP; + } + //C179: UEs supporting E-UTRA and MinimumPeriodicSearchTimer + case (C179) { + v_ApplCond := pc_MinimumPeriodicSearchTimer; + } + //C180: UEs supporting E-UTRA and UTRA and standalone GNSS receiver to provide detailed location information in RRC measurement report and logged measurements in RRC_IDLE + case (C180) { + v_ApplCond := (pc_eFDD or pc_eTDD) and pc_UTRA and pc_StandaloneGNSS_Location; + } + //C181: UEs supporting E-UTRA and delivery of rachReport upon request from the network + case (C181) { + v_ApplCond := (pc_eFDD or pc_eTDD) and pc_Rach_Report; + } + //C182: UEs supporting E-UTRA and UTRA and emergency speech and not supporting IMS + case (C182){ + v_ApplCond := pc_UTRA and pc_EmergSpeech and not (pc_IMS); + } + //C183: UEs supporting E-UTRA and VoLTE in GSMA PRD IR.92: "IMS Profile for Voice and SMS" + case (C183){ + v_ApplCond := pc_VoLTE; //@sic R5s131000 sic@ + } + //C184: UEs supporting E-UTRA and more than 1 FDD or TDD E-UTRA band + case (C184 ) { + v_ApplCond := (pc_eFDD and pc_eFDD_MultiBand) or (pc_eTDD and pc_eTDD_MultiBand); + } + // C185: UEs supporting E-UTRA and Feature Group Indicator 13 and Feature Group Indicator 25 and more than 1 FDD or TDD E-UTRA band + case ( C185) { + v_ApplCond := (pc_FeatrGrp_13 and pc_FeatrGrp_25) and ((pc_eFDD and pc_eFDD_MultiBand) or (pc_eTDD and pc_eTDD_MultiBand)); + } + // C186 + case (C186) { + v_ApplCond := pc_FeatrGrp_25 and ((pc_eFDD and pc_eFDD_MultiBand) or (pc_eTDD and pc_eTDD_MultiBand)); + } + // C187 + case (C187) { + v_ApplCond := (pc_eFDD or pc_eTDD) and pc_PPI_Support; + } + //C189: UEs supporting E-UTRA and MFBI feature indicated by Feature Group Indicator 31 + case ( C189) { + v_ApplCond := pc_FeatrGrp_31; + } + //C189a: UEs supporting E-UTRA and UTRA FDD and MFBI feature indicated by Feature Group Indicator 31 + case (C189a){ //@sic R5-144652 sic@ + v_ApplCond := pc_FeatrGrp_31 and pc_FDD; + } + //C190: UEs supporting E-UTRA and Intra-band contiguous Uplink Carrier Aggregation and multiple timing advances + case ( C190) { + v_ApplCond := (pc_eFDD or pc_eTDD) and (pc_DL_IntraBand_ContCaBWclassB or pc_DL_IntraBand_ContCaBWclassC) and (pc_UL_IntraBand_ContCaBWclassB or pc_UL_IntraBand_ContCaBWclassC) and pc_multipleTimingAdvance; + } + //C191: UEs supporting E-UTRA and Inter-band Carrier Aggregation and multiple timing advances + case ( C191) { + v_ApplCond := (pc_eFDD or pc_eTDD) and pc_DL_interBand_CaBwClassComb_AA and pc_UL_interBand_CaBwClassComb_AA and pc_multipleTimingAdvance; + } + //C192: UEs supporting E-UTRA and Intra-band non-contiguous Uplink Carrier Aggregation and multiple timing advances + case ( C192) { + v_ApplCond := (pc_eFDD or pc_eTDD) and pc_DL_intraBand_nonContCaBwClassComb_AA and pc_UL_intraBand_nonContCaBwClassComb_AA and pc_multipleTimingAdvance; + } + //C193: UEs supporting E-UTRA and GERAN and Feature Group Indicator 7, 9 and 23 and SRVCC from E-UTRAN to GERAN/UTRAN and VoLTE in GSMA PRD IR.92: "IMS Profile for Voice and SMS" AND aSRVCC + case (C193) { + v_ApplCond := pc_GERAN and pc_FeatrGrp_7 and pc_FeatrGrp_9 and pc_FeatrGrp_23 and pc_SRVCC_GERAN_UTRAN and pc_VoLTE and pc_IMS_SRVCCAlert; + } + // C194: UEs supporting E-UTRA and EAB + case (C194) { + v_ApplCond := pc_EAB; + } + // C195: UEs supporting E-UTRA and EAB and EAB override + case (C195) { + v_ApplCond := pc_EAB and pc_EAB_override; + } + // C196: UEs supporting E-UTRA and LAP and LAP override + case (C196) { + v_ApplCond := pc_LAP and pc_LAP_override; + } + // C197: UEs supporting E-UTRA and ESM UE requested bearer resource modification procedure and UE requested modification of network allocated TFTs and LAP and LAP override + case (C197) { + v_ApplCond := pc_ESM_MO_Bearer_Modification and pc_ESM_UE_Modification_NW_TFT and pc_LAP and pc_LAP_override; + } + // C198: UEs supporting E-UTRA and GERAN and Feature Group Indicator 7, 9 and 23 and SRVCC from E-UTRAN to GERAN/UTRAN and VoLTE in GSMA PRD IR.92: "IMS Profile for Voice and SMS" AND bSRVCC + case (C198) { + v_ApplCond := pc_GERAN and pc_FeatrGrp_7 and pc_FeatrGrp_9 and pc_FeatrGrp_23 and pc_SRVCC_GERAN_UTRAN and pc_VoLTE and pc_BSRVCC; + } + // C199: Feature Group Indicator 7, 9 and 23 and SRVCC from E-UTRAN to GERAN/UTRAN and VoLTE in GSMA PRD IR.92: "IMS Profile for Voice and SMS" AND bSRVCC AND Notification procedure + case (C199) { + v_ApplCond := pc_GERAN and pc_FeatrGrp_7 and pc_FeatrGrp_9 and pc_FeatrGrp_23 and pc_SRVCC_GERAN_UTRAN and pc_VoLTE and pc_ESM_Notification and pc_BSRVCC; + } + //C200: UEs supporting E-UTRA and GERAN and Feature Group Indicator 7, 9 and 23 and SRVCC from E-UTRAN to GERAN/UTRAN and VoLTE in GSMA PRD IR.92: "IMS Profile for Voice and SMS" AND aSRVCC AND Notification procedure + case (C200) { + v_ApplCond := pc_GERAN and pc_FeatrGrp_7 and pc_FeatrGrp_9 and pc_FeatrGrp_23 and pc_SRVCC_GERAN_UTRAN and pc_VoLTE and pc_ESM_Notification and pc_IMS_SRVCCAlert; + } + // C201: UEs supporting E-UTRA and UTRA and Feature Group Indicator 27 and IMS voice and bSRVCC + case (C201){ + v_ApplCond := pc_UTRA and pc_FeatrGrp_27 and pc_VoLTE and pc_BSRVCC; + } + // C202: UEs supporting E-UTRA and UTRA and Feature Group Indicator 27 and IMS voice and bSRVCC and Notification procedure + case(C202) { + v_ApplCond := pc_UTRA and pc_FeatrGrp_27 and pc_VoLTE and pc_ESM_Notification and pc_BSRVCC; + } + //C207: UEs supporting E-UTRA and Uplink Intra-band non-Contiguous CA + case(C207){ + v_ApplCond := (pc_eFDD or pc_eTDD) and pc_DL_intraBand_nonContCaBwClassComb_AA and pc_UL_intraBand_nonContCaBwClassComb_AA; + } + //C203:UEs supporting E-UTRA and logged measurements in RRC_IDLE and standalone GNSS receiver to provide detailed location information + case(C203) { + v_ApplCond := (pc_eFDD or pc_eTDD) and pc_LoggedMeasurementsIdle and pc_StandaloneGNSS_Location; + } + //C204: UEs supporting E-UTRA and Multiple PDN and LAP and LAP override + case(C204){ + v_ApplCond := pc_Multiple_PDN and pc_LAP and pc_LAP_override; + } + //C205: UEs supporting E-UTRA and UTRA and inter-RAT PS handover to E-UTRA from UTRA and Radio Link Failure Report for inter-RAT MRO + case(C205){ + v_ApplCond := pc_UTRA and (pc_HO_from_UTRA_to_eFDD or pc_HO_from_UTRA_to_eTDD) and pc_RLF_ReportForInterRAT_MRO; + } + //C40_C206: UEs supporting E-UTRA and GERAN and Feature Group Indicator 5 and Feature Group Indicator 19 and Feature Group Indicator 23 + // or UEs supporting E-UTRA and GERAN and Feature Group Indicator 5 and Feature Group Indicator 34 and Feature Group Indicator 23 + case (C40_C206){ + v_ApplCond := (pc_GERAN and pc_FeatrGrp_5 and pc_FeatrGrp_19 and pc_FeatrGrp_23) or (pc_GERAN and pc_FeatrGrp_5 and pc_FeatrGrp_34 and pc_FeatrGrp_23); + } + //Cxx1_R5144726: UEs supporting E-UTRA and UL CoMP + case(Cxx1_R5144726){ + v_ApplCond := (pc_eFDD or pc_eTDD) and pc_UL_CoordinatedMultiPointOperation; + } + case else { + v_ApplCond := false; + } + } + return v_ApplCond; + } + + function f_ExecutionGuideline ( charstring p_TestCase ) return boolean + { /* Set the execution to TRUE or FALSE according to 36.523-3 clause 11 */ + // @sic R5-101050 R5-106675 R5-110803 R5-122121 sic@ + var boolean v_ExecutionGuideline := true; + + v_ExecutionGuideline := ( f_ExecutionGuidelineEUTRA ( p_TestCase ) and // execution guideline from cl 11.1 + f_ExecutionGuidelineEUTRA_UTRA_GERAN ( p_TestCase ) and // execution guideline from cl 11.2 + f_ExecutionGuideline_InterBand ( p_TestCase ) and // execution guideline from cl 11.3 + f_ExecutionGuideline_EUTRA_CA( p_TestCase ) and // execution guideline from cl 11.4 @sic R5-133612 sic@ + f_ExecutionGuideline_EUTRA_MFBI( p_TestCase ) // execution guideline from cl 11.5 @sic R5-14 sic@ + ); + return v_ExecutionGuideline; + } + + function f_ExecutionGuidelineEUTRA ( charstring p_TestCase ) return boolean + { /* Set the execution to TRUE or FALSE according to 36.523-3 clause 11.1 */ + // @sic R5-110803 R5s120227 R5-122121 R5-130670 R5-142985 sic@ + var boolean v_ExecutionGuideline := true; + + if ((px_ePrimaryFrequencyBand == 12 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 13) or + (px_ePrimaryFrequencyBand == 17 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 18) or + (px_ePrimaryFrequencyBand == 31)) //@sic R5-135000 sic@ + { // Test cases using more than one radio frequency (acc to 36.523-3 cl 11.1) + select (p_TestCase) { + case ("TC_6_1_1_1", + "TC_6_1_1_2", + "TC_6_1_1_3", + "TC_6_1_1_6", + "TC_6_1_1_7", + "TC_6_1_2_7", + "TC_6_1_2_8", + "TC_6_1_2_9", + "TC_6_1_2_11", + "TC_6_1_2_13", + "TC_6_1_2_15", + "TC_6_1_2_17", + "TC_6_1_2_18", + "TC_6_1_2_20", + "TC_6_3_1", + "TC_6_3_5", + "TC_6_3_6", + "TC_6_3_9", + "TC_8_1_3_4", + "TC_8_1_3_5", + "TC_8_2_2_6_2", + "TC_8_2_4_6", + "TC_8_3_1_3", + "TC_8_3_1_3a", + "TC_8_3_1_4", + "TC_8_3_1_6", + "TC_8_3_1_9", + "TC_8_3_1_10", + "TC_8_3_1_11", + "TC_8_3_1_26", + "TC_8_3_1_27", + "TC_8_3_1_28", + "TC_8_3_4_2", + "TC_8_3_4_3", + "TC_8_3_4_5", + "TC_8_6_2_2", + "TC_8_6_2_3a", + "TC_8_6_2_8", + "TC_8_6_2_10", + "TC_8_6_2_11", + "TC_8_6_2_12", + "TC_8_6_4_2", + "TC_8_6_4_3", + "TC_8_6_4_4", //@sic R5-144219 sic@ + "TC_8_6_4_8", + "TC_8_6_4_9", + "TC_8_6_4_10", + "TC_8_6_6_2", + "TC_8_6_6_5", + "TC_8_6_6_6", + "TC_8_6_6_7", + "TC_8_6_8_2", + "TC_8_6_8_6", + "TC_9_2_1_1_1a", + "TC_9_2_1_1_7", + "TC_9_2_1_1_13", + "TC_9_2_1_1_15", + "TC_9_2_1_1_16", + "TC_9_2_1_2_1", + "TC_9_2_1_2_10", + "TC_9_2_1_2_12", + "TC_9_2_1_2_14", + "TC_9_2_3_2_1", + "TC_9_2_3_2_12", + "TC_9_2_3_2_15", + "TC_9_2_3_2_16", + "TC_11_2_6", + "TC_11_2_7", + "TC_13_4_1_2", + "TC_17_4_1", + "TC_17_4_2", + "TC_17_4_3" + ) { v_ExecutionGuideline := false;} + } }; + if ((px_ePrimaryFrequencyBand == 6) or + (px_ePrimaryFrequencyBand == 11) or + (px_ePrimaryFrequencyBand == 14) or + (px_ePrimaryFrequencyBand == 17 and px_ePrimaryBandChannelBandwidth == n25 ) or + (px_ePrimaryFrequencyBand == 23 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 38 ) or // @sic R5-103813 R5-104796 sic@ + (px_ePrimaryFrequencyBand == 39 ) // @sic R5-120721 sic@ + ) + { // Test cases using more than two radio frequencies (acc to 36.523-3 cl 11.1) + select (p_TestCase) { + case ("TC_6_1_1_1", + "TC_6_1_1_2", + "TC_6_1_1_3", + "TC_6_1_1_6", + "TC_6_1_1_7", + "TC_6_1_2_7", + "TC_6_1_2_8", + "TC_6_1_2_9", + "TC_6_1_2_15", + "TC_3_3_1", //@sic R5-144219 sic@ + "TC_8_1_3_5", + "TC_8_3_1_4", + "TC_8_6_4_3", + "TC_9_1_2_6", + "TC_9_2_1_1_1a", + "TC_9_2_1_1_7", + "TC_9_2_1_1_15" ) { v_ExecutionGuideline := false; } + } + }; // @sic R5s120334 sic@ + if ((px_ePrimaryFrequencyBand == 12 and px_ePrimaryBandChannelBandwidth == n25) or + (px_ePrimaryFrequencyBand == 19) or + (px_ePrimaryFrequencyBand == 20) or + (px_ePrimaryFrequencyBand == 21) or + (px_ePrimaryFrequencyBand == 27) or + (px_ePrimaryFrequencyBand == 34 )) // @sic R5-104796 sic@ + { // Test cases using more than three radio frequencies (acc to 36.523-3 cl 11.1) + select (p_TestCase) { + case ("TC_6_1_1_1", + "TC_6_1_1_2", + "TC_6_1_1_6", + "TC_9_2_1_1_7") { v_ExecutionGuideline := false; } + } + }; // @sic R5s120334 sic@ + + // ---------------------------------------------------------------------- + // REPLACEMENT OF TC EXECUTION cl 11.1.1 + // ---------------------------------------------------------------------- + if (not( + (px_ePrimaryFrequencyBand == 12 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 13) or + (px_ePrimaryFrequencyBand == 17 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 18) + ) + ) // @sic R5s120334 sic@ + { // Acc to 36.523-3 Table 11.1.1-1 + select (p_TestCase) { + case ("TC_8_3_1_9a", + "TC_8_3_1_11a", + "TC_9_2_1_1_13a", + "TC_9_2_1_1_16a" + ){ v_ExecutionGuideline := false; } + } }; + + if (not((px_ePrimaryFrequencyBand == 12 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 13) or + (px_ePrimaryFrequencyBand == 17 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 18) or + (px_ePrimaryFrequencyBand == 6) or + (px_ePrimaryFrequencyBand == 11) or + (px_ePrimaryFrequencyBand == 14) or + (px_ePrimaryFrequencyBand == 17 and px_ePrimaryBandChannelBandwidth == n25 ) or + (px_ePrimaryFrequencyBand == 23 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 38 ) or + (px_ePrimaryFrequencyBand == 39 ) + )) + { // Test cases using more than three radio frequencies (acc to 36.523-3 cl 11.1) + select (p_TestCase) { + case ("TC_6_1_1_3b", + "TC_6_1_2_7a", + "TC_6_1_2_8a", + "TC_6_1_2_9a", + "TC_9_2_1_1_1b", + "TC_9_2_1_1_15a" + ) { v_ExecutionGuideline := false; } + } + }; + + if (not( + (px_ePrimaryFrequencyBand == 12 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 13) or + (px_ePrimaryFrequencyBand == 17 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 18) or + (px_ePrimaryFrequencyBand == 6) or + (px_ePrimaryFrequencyBand == 11) or + (px_ePrimaryFrequencyBand == 14) or + (px_ePrimaryFrequencyBand == 17 and px_ePrimaryBandChannelBandwidth == n25 ) or + (px_ePrimaryFrequencyBand == 23 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 38 ) or + (px_ePrimaryFrequencyBand == 39 ) or + (px_ePrimaryFrequencyBand == 12 and px_ePrimaryBandChannelBandwidth == n25) or + (px_ePrimaryFrequencyBand == 19) or + (px_ePrimaryFrequencyBand == 20) or + (px_ePrimaryFrequencyBand == 21) or + (px_ePrimaryFrequencyBand == 34 ) + ) + ) // @sic R5s120334 sic@ + { // Test cases using more than three radio frequencies (acc to 36.523-3 cl 11.1) + select (p_TestCase) { + case ("TC_6_1_1_1b", + "TC_6_1_1_2a", + "TC_6_1_1_6a", + "TC_9_2_1_1_7a" + ) { v_ExecutionGuideline := false; } + } }; + return v_ExecutionGuideline; + } + + + function f_ExecutionGuidelineEUTRA_UTRA_GERAN (charstring p_TestCase ) return boolean + { /* Set the execution to TRUE or FALSE according to 36.523-3 clause cl 11.2 */ + // @sic R5-130670 sic@ + var boolean v_ExecutionGuideline := true; + + select (p_TestCase) { + // Test cases using px_RATComb_Tested: execution depends on px_RATComb_Tested value used + case ( "TC_9_2_1_1_11", + "TC_9_2_1_1_12", + "TC_9_2_1_2_1b", + "TC_9_2_1_2_5", + "TC_9_2_1_2_8", + "TC_9_2_1_2_9", + "TC_9_2_1_2_11", + "TC_9_2_1_2_13", + "TC_9_2_1_2_15", + "TC_9_2_3_1_6", + "TC_9_2_3_1_10", + "TC_9_2_3_1_11", + "TC_9_2_3_1_12", + "TC_9_2_3_1_15", + "TC_9_2_3_1_15a", + "TC_9_2_3_1_17", + "TC_9_2_3_1_18", + "TC_9_2_3_1_18a", + "TC_9_2_3_2_1b", + "TC_9_2_3_2_3", + "TC_9_2_3_2_5", + "TC_9_2_3_2_6", + "TC_9_2_3_2_7", + "TC_9_2_3_2_8", + "TC_9_2_3_2_9", + "TC_9_2_3_2_11", + "TC_9_2_3_2_13", + "TC_9_2_3_2_14", + "TC_9_2_3_3_5", + "TC_9_2_3_3_5a", + "TC_9_3_1_4", + "TC_9_3_1_5", + "TC_9_3_1_6") { + if (px_RATComb_Tested==EUTRA_UTRA) {v_ExecutionGuideline := f_ExecutionGuidelineUTRA(p_TestCase);} + if (px_RATComb_Tested==EUTRA_GERAN) {v_ExecutionGuideline := f_ExecutionGuidelineGERAN(p_TestCase);} + if (px_RATComb_Tested==EUTRA_Only) {v_ExecutionGuideline := f_ExecutionGuidelineNoUTRA_NoGERAN(p_TestCase);} + // ---------------------------------------------------------------------- + // REPLACEMENT OF TC EXECUTION cl 11.2.5 + // ---------------------------------------------------------------------- + if ( px_ePrimaryFrequencyBand == px_FDD_OperationBand ) { // Execution with overlapped bands E-UTRA/UTRA + if (not( (px_ePrimaryFrequencyBand == 12 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 13) or + (px_ePrimaryFrequencyBand == 17 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 18) or + (px_ePrimaryFrequencyBand == 6 ) or + (px_ePrimaryFrequencyBand == 11 ) or + (px_ePrimaryFrequencyBand == 14 ) or + (px_ePrimaryFrequencyBand == 17 and px_ePrimaryBandChannelBandwidth == n25 ) or + (px_ePrimaryFrequencyBand == 23 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 38 ) or + (px_ePrimaryFrequencyBand == 39 ))) + { // Acc to 36.523-3 Table 11.2.5 + select (p_TestCase) { + case ("TC_9_2_3_1_15a", "TC_9_2_3_1_18a") { v_ExecutionGuideline := false; } + } } + } else { // Execution with no overlapped bands E-UTRA/UTRA + if ( not( (px_ePrimaryFrequencyBand == 12 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 13) or + (px_ePrimaryFrequencyBand == 17 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 18) )) { + select (p_TestCase) { + case ("TC_9_2_3_1_15a", "TC_9_2_3_1_18a") { v_ExecutionGuideline := false; } + } + } + } + } + case else { + v_ExecutionGuideline := ( f_ExecutionGuidelineUTRA ( p_TestCase ) and // execution guideline from cl 11.2.1 + f_ExecutionGuidelineGERAN ( p_TestCase ) and // execution guideline from cl 11.2.2 + f_ExecutionGuidelineUTRA_GERAN (p_TestCase) // execution guideline from cl 11.2.4 + ); + + if (not((px_ePrimaryFrequencyBand == 12 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 13) or + (px_ePrimaryFrequencyBand == 17 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 18) or + (px_ePrimaryFrequencyBand == 6) or + (px_ePrimaryFrequencyBand == 11) or + (px_ePrimaryFrequencyBand == 14) or + (px_ePrimaryFrequencyBand == 17 and px_ePrimaryBandChannelBandwidth == n25 ) or + (px_ePrimaryFrequencyBand == 23 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 38 ) or + (px_ePrimaryFrequencyBand == 39 ) + )) + { // Test cases using more than three radio frequencies (acc to 36.523-3 cl 11.1) + select (p_TestCase) { + case ("TC_6_1_1_3b", + "TC_6_1_2_7a", + "TC_6_1_2_8a", + "TC_6_1_2_9a", + "TC_9_2_1_1_1b", + "TC_9_2_1_1_15a" + ) { v_ExecutionGuideline := false; } + } }; + + + } + } + return v_ExecutionGuideline; + } + + + function f_ExecutionGuidelineUTRA ( charstring p_TestCase ) return boolean + { /* Set the execution to TRUE or FALSE according to 36.523-3 clause 11.2.1 */ + // @sic R5-110803 R5-113734 R5-130670 sic@ + var boolean v_ExecutionGuideline := true; + + if ( px_ePrimaryFrequencyBand == px_FDD_OperationBand ) { + // OVERLAPPED BANDS cl 11.2.1.1 + if ( (px_ePrimaryFrequencyBand == 12 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 13 ) or + (px_ePrimaryFrequencyBand == 17 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 18 ) or + (px_ePrimaryFrequencyBand == 31 )) //@sic R5-135000 sic@ + { // UTRA I-RAT test cases using more than 1 frequency (acc to 36.523-3 cl 11.2.1.1) + select (p_TestCase) { + case ("TC_6_2_1_2", + "TC_6_2_1_3", + "TC_6_2_2_1", + "TC_6_2_2_5", + "TC_6_2_2_8", + "TC_6_2_3_3", + "TC_6_2_3_3a", + "TC_6_2_3_4", + "TC_6_2_3_4a", + "TC_6_2_3_5", + "TC_6_2_3_5a", + "TC_6_2_3_6", + "TC_6_2_3_13", + "TC_6_2_3_31", + "TC_6_2_3_32", + "TC_6_2_3_33", + "TC_6_2_4_1", + "TC_6_2_4_3", + "TC_6_2_4_4", + "TC_6_2_4_5", //@sic R5-144219 sic@ + "TC_6_2_4_6", //@sic R5-144219 sic@ + "TC_6_2_4_7", + "TC_6_3_3", + "TC_6_3_4", + "TC_6_3_7", + "TC_6_3_8", + "TC_8_1_3_6", + "TC_8_1_3_6a", + "TC_8_1_3_7", + "TC_8_3_2_3", + "TC_8_3_2_3a", + "TC_8_3_2_4", + "TC_8_3_3_2", + "TC_8_3_4_4", + "TC_8_4_1_2", + "TC_8_4_1_4", + "TC_8_4_1_5", + "TC_8_4_2_2", + "TC_8_4_2_4", + "TC_8_5_2_1", + "TC_8_6_3_1", + "TC_8_6_3_4", + "TC_8_6_5_1", + "TC_8_6_5_1a", + "TC_8_6_5_4", + "TC_8_6_7_1", + "TC_8_6_7_4", + "TC_8_6_9_1", + "TC_8_6_9_2", + "TC_8_6_10_1", + "TC_8_7_1", + "TC_9_2_1_1_11", + "TC_9_2_1_1_12", + "TC_9_2_1_2_1b", + "TC_9_2_1_2_1c", + "TC_9_2_1_2_1d", + "TC_9_2_1_2_5", + "TC_9_2_1_2_8", + "TC_9_2_1_2_9", + "TC_9_2_1_2_11", + "TC_9_2_1_2_13", + "TC_9_2_1_2_15", + "tc_9_2_2_1_3", + "tc_9_2_2_1_10", + "TC_9_2_3_1_6", + "TC_9_2_3_1_10", + "TC_9_2_3_1_11", + "TC_9_2_3_1_12", + "TC_9_2_3_1_15", + "TC_9_2_3_1_15a", + "TC_9_2_3_1_17", + "TC_9_2_3_1_18", + "TC_9_2_3_1_18a", + "TC_9_2_3_2_1a", + "TC_9_2_3_2_1b", + "TC_9_2_3_2_1c", + "TC_9_2_3_2_3", + "TC_9_2_3_2_5", + "TC_9_2_3_2_6", + "TC_9_2_3_2_7", + "TC_9_2_3_2_8", + "TC_9_2_3_2_9", + "TC_9_2_3_2_11", + "TC_9_2_3_2_13", + "TC_9_2_3_2_14", + "TC_9_2_3_3_1", + "TC_9_2_3_3_2", + "TC_9_2_3_3_3", + "TC_9_2_3_3_4", + "TC_9_2_3_3_5", + "TC_9_2_3_3_5a", + "TC_9_3_1_4", + "TC_9_3_1_5", + "TC_9_3_1_6", + "tc_11_2_10", + "tc_11_2_11", + "TC_13_1_2", + "TC_13_1_2a", + "TC_13_1_3", + "TC_13_1_4", + "TC_13_1_5", + "TC_13_1_15", + "TC_13_1_16", + "TC_13_3_2_1", + "TC_13_4_2_1", + "TC_13_4_2_4", + "TC_13_4_2_6", + "TC_13_4_3_1", + "TC_13_4_3_2", + "TC_13_4_3_4", + "TC_13_4_3_6", + "TC_13_4_3_7", + "TC_13_4_3_8", + "TC_13_4_3_9", + "TC_13_4_3_10", + "TC_13_4_3_11", + "TC_13_4_3_12", + "TC_13_4_3_13", + "TC_13_4_3_14", + "TC_13_4_3_15", + "TC_13_4_3_16", + "TC_13_4_3_18", + "TC_13_4_3_19", + "TC_13_4_3_20" + ) { v_ExecutionGuideline := false; } + } + }; + if ((px_ePrimaryFrequencyBand == 6 ) or + (px_ePrimaryFrequencyBand == 11 ) or + (px_ePrimaryFrequencyBand == 14 ) or + (px_ePrimaryFrequencyBand == 17 and px_ePrimaryBandChannelBandwidth == n25 ) or + (px_ePrimaryFrequencyBand == 23 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 38 ) or // @sic R5-103813 R5-104796 sic@ + (px_ePrimaryFrequencyBand == 39 ) // @sic R5-120721 sic@ + ) + { // Test cases using more than two radio frequencies (acc to 36.523-3 cl 11.2.1.1) + select (p_TestCase) { + case ( + "TC_6_2_1_2", + "TC_6_2_1_3", + "TC_8_6_3_4", + "TC_8_6_5_1a", + "TC_8_6_7_4", + "TC_9_2_1_2_9", + "TC_9_2_1_2_11", + "TC_9_2_1_2_13", + "TC_9_2_1_2_15", + "TC_9_2_1_2_18", + "TC_9_2_3_2_5", + "TC_9_2_3_2_6", + "TC_9_2_3_2_7", + "TC_9_2_3_2_8", + "TC_9_2_3_2_11", + "TC_9_2_3_2_13", + "TC_9_2_3_2_14") { v_ExecutionGuideline := false;} + } + }; + if ((px_ePrimaryFrequencyBand == 12 and px_ePrimaryBandChannelBandwidth == n25 ) or + (px_ePrimaryFrequencyBand == 19 ) or + (px_ePrimaryFrequencyBand == 20 ) or + (px_ePrimaryFrequencyBand == 21 ) or + (px_ePrimaryFrequencyBand == 27 ) or + (px_ePrimaryFrequencyBand == 34 )) + { // Test cases using more than three radio frequencies (acc to 36.523-3 cl 11.2) + select (p_TestCase) { + case ("TC_9_2_1_2_13","TC_9_2_3_2_13") { v_ExecutionGuideline := false; } + } + }; + } else { + // NON OVERLAPPED BANDS cl 11.2.1.2 + // px_ePrimaryFrequencyBand != px_FDD_OperationBand + if ( (px_ePrimaryFrequencyBand == 12 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 13 ) or + (px_ePrimaryFrequencyBand == 17 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 18 ) or + (px_ePrimaryFrequencyBand == 31 )) //@sic R5-135000 sic@ + { // UTRA I-RAT test cases using more than 1 frequency (acc to 36.523-3 cl 11.2.1.2) + select (p_TestCase) { + case ("TC_6_2_1_2", + "TC_6_2_1_3", + "TC_8_6_3_4", + "TC_8_6_5_1a", + "TC_8_6_7_4", + "TC_9_2_1_2_9", + "TC_9_2_1_2_11", + "TC_9_2_1_2_13", + "TC_9_2_1_2_15", + "TC_9_2_3_1_18", + "TC_9_2_3_2_5", + "TC_9_2_3_2_6", + "TC_9_2_3_2_7", + "TC_9_2_3_2_8", + "TC_9_2_3_2_11", + "TC_9_2_3_2_13", + "TC_9_2_3_2_14" ) { v_ExecutionGuideline := false;} + } + }; + if ((px_ePrimaryFrequencyBand == 6 ) or + (px_ePrimaryFrequencyBand == 11 ) or + (px_ePrimaryFrequencyBand == 14 ) or + (px_ePrimaryFrequencyBand == 17 and px_ePrimaryBandChannelBandwidth == n25 ) or + (px_ePrimaryFrequencyBand == 23 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 38 ) or + (px_ePrimaryFrequencyBand == 39 ) + ) + { // Test cases using more than two radio frequencies (acc to 36.523-3 cl 11.2.2) + select (p_TestCase) { + case ("TC_9_2_1_2_13","TC_9_2_3_2_13") { v_ExecutionGuideline := false;} + } + }; + } + return v_ExecutionGuideline; +} + + function f_ExecutionGuidelineGERAN (charstring p_TestCase ) return boolean + { + /* Set the execution to TRUE or FALSE according to 36.523-3 clause 11.2.2 */ + // @sic R5-130670 sic@ + var boolean v_ExecutionGuideline := true; + + if ((px_ePrimaryFrequencyBand == 12 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 13) or + (px_ePrimaryFrequencyBand == 17 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 18) or + (px_ePrimaryFrequencyBand == 31)) //@sic R5-135000 sic@ + { // Test cases using more than one radio frequency (acc to 36.523-3 cl 11.2.2) + select (p_TestCase) { + case ("TC_6_2_1_4", + "TC_6_2_3_17", + "TC_6_2_3_18", + "TC_8_3_2_2", + "TC_9_2_1_2_9", + "TC_9_2_1_2_11", + "TC_9_2_1_2_13", + "TC_9_2_3_1_15", + "TC_9_2_3_1_18", + "TC_9_2_3_2_5", + "TC_9_2_3_2_6", + "TC_9_2_3_2_7", + "TC_9_2_3_2_8", + "TC_9_2_3_2_11", + "TC_9_2_3_2_13", + "TC_9_2_3_2_14 ") { v_ExecutionGuideline := false;} + } + }; + + if ((px_ePrimaryFrequencyBand == 6 ) or + (px_ePrimaryFrequencyBand == 11 ) or + (px_ePrimaryFrequencyBand == 14 ) or + (px_ePrimaryFrequencyBand == 17 and px_ePrimaryBandChannelBandwidth == n25 ) or + (px_ePrimaryFrequencyBand == 23 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 38 ) or + (px_ePrimaryFrequencyBand == 39 )) + { // Test cases using more than one radio frequency (acc to 36.523-3 cl 11.2.2) + select (p_TestCase) { + case ( "TC_9_2_1_2_13","TC_9_2_3_2_13" ) { v_ExecutionGuideline := false;} + } + }; + + return v_ExecutionGuideline; + } + + function f_ExecutionGuidelineNoUTRA_NoGERAN (charstring p_TestCase ) return boolean + { + /* Set the execution to TRUE or FALSE according to 36.523-3 clause 11.2.3 */ + var boolean v_ExecutionGuideline := true; + + if ((px_ePrimaryFrequencyBand == 12 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 13) or + (px_ePrimaryFrequencyBand == 17 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 18) or + (px_ePrimaryFrequencyBand == 31)) //@sic R5-135000 sic@ + { // Test cases using more than one radio frequency (acc to 36.523-3 cl 11.2.3) + select (p_TestCase) { + case ( "TC_9_2_3_1_15", "TC_9_2_3_1_18") { v_ExecutionGuideline := false;} + } + }; + + return v_ExecutionGuideline; + } + + function f_ExecutionGuidelineUTRA_GERAN (charstring p_TestCase ) return boolean + { + /* Set the execution to TRUE or FALSE according to 36.523-3 clause 11.2.4 */ + var boolean v_ExecutionGuideline := true; + + // OVERLAPPED BANDS cl 11.2.4.1 + if ( px_ePrimaryFrequencyBand == px_FDD_OperationBand ) { + if ((px_ePrimaryFrequencyBand == 12 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 13) or + (px_ePrimaryFrequencyBand == 17 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 18) or + (px_ePrimaryFrequencyBand == 31)) //@sic R5-135000 sic@ + { // Test cases using more than one radio frequency (acc to 36.523-3 cl 11.2.4.1) + select (p_TestCase) { + case ( "TC_6_2_1_1", + "TC_8_3_2_5", + "TC_8_3_2_6", + "TC_9_2_1_2_6", + "TC_9_2_1_2_7", + "TC_11_2_8") { v_ExecutionGuideline := false;} + } + }; + if ((px_ePrimaryFrequencyBand == 6 ) or + (px_ePrimaryFrequencyBand == 11 ) or + (px_ePrimaryFrequencyBand == 14 ) or + (px_ePrimaryFrequencyBand == 17 and px_ePrimaryBandChannelBandwidth == n25 ) or + (px_ePrimaryFrequencyBand == 23 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 38 ) or + (px_ePrimaryFrequencyBand == 39 )) + { // Test cases using more than one radio frequency (acc to 36.523-3 cl 11.2.3) + select (p_TestCase) { + case ( "TC_6_2_1_1") { v_ExecutionGuideline := false;} + } + }; + } else { + // NON OVERLAPPED BANDS cl 11.2.4.2 + if ((px_ePrimaryFrequencyBand == 12 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 13) or + (px_ePrimaryFrequencyBand == 17 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 18) or + (px_ePrimaryFrequencyBand == 31)) //@sic R5-135000 sic@ + { // Test cases using more than one radio frequency (acc to 36.523-3 cl 11.2.4.2) + select (p_TestCase) { + case ( "TC_6_2_1_1") { v_ExecutionGuideline := false;} + } + }; + } + return v_ExecutionGuideline; + } + + function f_ExecutionGuideline_InterBand (charstring p_TestCase ) return boolean + { /* Set the execution to TRUE or FALSE according to 36.523-3 clause 11.3 */ + var boolean v_ExecutionGuideline := true; + + if ((px_ePrimaryFrequencyBand == 12 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 13) or + (px_ePrimaryFrequencyBand == 17 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 18) or + (px_ePrimaryFrequencyBand == 31)) //@sic R5-135000 sic@ + { // Test cases using more than one radio frequency (acc to 36.523-3 cl 11.3) + select (p_TestCase) { + case ("TC_6_1_2_15a", "TC_8_1_3_12" ) { v_ExecutionGuideline := false;} + } + }; + + if ((px_eSecondaryFrequencyBand == 12 and px_eSecondaryBandChannelBandwidth == n50 ) or + (px_eSecondaryFrequencyBand == 13) or + (px_eSecondaryFrequencyBand == 17 and px_eSecondaryBandChannelBandwidth == n50 ) or + (px_eSecondaryFrequencyBand == 18) or + (px_ePrimaryFrequencyBand == 31)) //@sic R5-135000 sic@ + { // Test cases using more than one radio frequency (acc to 36.523-3 cl 11.3) + select (p_TestCase) { + case ( + "TC_6_1_1_1a", + "TC_6_1_1_3a", + "TC_6_1_1_4a", + "TC_6_1_2_16", + "TC_8_1_3_11a", + "TC_8_1_3_12b", + "TC_8_2_4_13a", + "TC_8_2_4_14a", + "TC_8_3_1_12a", + "TC_8_3_1_14a", + "TC_8_6_4_4" + ) { v_ExecutionGuideline := false;} + } + }; + + // ---------------------------------------------------------------------- + // REPLACEMENT OF TC EXECUTION cl 11.3.3 + // ---------------------------------------------------------------------- + if (not((px_ePrimaryFrequencyBand == 12 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 13) or + (px_ePrimaryFrequencyBand == 17 and px_ePrimaryBandChannelBandwidth == n50 ) or + (px_ePrimaryFrequencyBand == 18) or + (px_ePrimaryFrequencyBand == 31))) //@sic R5-135000 sic@ + { // Test cases using more than one radio frequency (acc to 36.523-3 cl 11.3) + select (p_TestCase) { + case ("TC_8_1_3_12b" ) { v_ExecutionGuideline := false;} + } + }; + + return v_ExecutionGuideline; + } + + function f_ExecutionGuideline_EUTRA_CA (charstring p_TestCase ) return boolean + { /* Set the execution to TRUE or FALSE according to 36.523-3 clause 11.4 */ + var boolean v_ExecutionGuideline := true; + + // CA contiguous Intra-band operation (acc to 36.523-3 cl 11.4.1) + if ( (px_ePrimaryFrequencyBand == 38) ) + { + // Test cases using more than one radio frequency + select (p_TestCase) { //@sic R5-141113 sic@ + case ( + "TC_7_1_2_10_3", + "TC_7_1_2_11_3", + "TC_8_2_2_7_3", + "TC_8_2_4_19_1", + "TC_8_2_4_21_1" ) { v_ExecutionGuideline := false;} + } + }; + + // CA Inter-band operation (acc to 36.523-3 cl 11.4.2) + if ( ((px_ePrimaryFrequencyBand == 2) and (px_eSecondaryFrequencyBand==29) ) or + ((px_ePrimaryFrequencyBand == 4) and (px_eSecondaryFrequencyBand==29)) + ) //@sic R5-140787 R5-142985 sic@ + { // Test case using more than one radio frequency on the primary band (acc to 36.523-3 cl 11.4.2) + select (p_TestCase) { + case ( + "TC_7_1_2_10_2", + "TC_7_1_2_11_2", + "TC_7_1_4_20_2", + "TC_8_2_2_7_2", + "TC_8_2_4_17_2", + "TC_8_2_4_20_2", + "TC_8_2_4_21_2", + "TC_8_3_1_17_2", //@sic R5-144399 sic@ + "TC_8_3_1_18_2", //@sic R5-144399 sic@ + "TC_8_2_4_23_2" //@sic R5-144219 sic@ + ) { v_ExecutionGuideline := false;} + } + }; + return v_ExecutionGuideline; + } + + + function f_ExecutionGuideline_EUTRA_MFBI ( charstring p_TestCase ) return boolean + { /* Set the execution to TRUE or FALSE according to 36.523-3 clause 11.5 */ + // @sic R5-142917 sic@ + var boolean v_ExecutionGuideline := true; + + //List of MFBI bands according to 36.523-3 Table 11.5-1 + if (not( + ( px_OverlappingNotSupportedFrequencyBand_MFBI == 2 and px_MFBI_FrequencyBand == 25) or + ( px_OverlappingNotSupportedFrequencyBand_MFBI == 3 and px_MFBI_FrequencyBand == 9) or + ( px_OverlappingNotSupportedFrequencyBand_MFBI == 4 and px_MFBI_FrequencyBand == 10) or + ( px_OverlappingNotSupportedFrequencyBand_MFBI == 5 and (px_MFBI_FrequencyBand == 18 or px_MFBI_FrequencyBand == 19 or px_MFBI_FrequencyBand == 26)) or + ( px_OverlappingNotSupportedFrequencyBand_MFBI == 9 and px_MFBI_FrequencyBand == 3) or + ( px_OverlappingNotSupportedFrequencyBand_MFBI == 10 and px_MFBI_FrequencyBand == 4) or + ( px_OverlappingNotSupportedFrequencyBand_MFBI == 12 and px_MFBI_FrequencyBand == 17) or + ( px_OverlappingNotSupportedFrequencyBand_MFBI == 17 and px_MFBI_FrequencyBand == 12) or + ( px_OverlappingNotSupportedFrequencyBand_MFBI == 18 and (px_MFBI_FrequencyBand == 5 or px_MFBI_FrequencyBand == 26 or px_MFBI_FrequencyBand == 27)) or + ( px_OverlappingNotSupportedFrequencyBand_MFBI == 19 and (px_MFBI_FrequencyBand == 5 or px_MFBI_FrequencyBand == 26)) or + ( px_OverlappingNotSupportedFrequencyBand_MFBI == 25 and px_MFBI_FrequencyBand == 2) or + ( px_OverlappingNotSupportedFrequencyBand_MFBI == 26 and (px_MFBI_FrequencyBand == 5 or px_MFBI_FrequencyBand == 18 or px_MFBI_FrequencyBand == 19 or px_MFBI_FrequencyBand == 27)) or + ( px_OverlappingNotSupportedFrequencyBand_MFBI == 27 and (px_MFBI_FrequencyBand == 18 or px_MFBI_FrequencyBand == 26)) or + ( px_OverlappingNotSupportedFrequencyBand_MFBI == 33 and px_MFBI_FrequencyBand == 39) or + ( px_OverlappingNotSupportedFrequencyBand_MFBI == 38 and px_MFBI_FrequencyBand == 41) or + ( px_OverlappingNotSupportedFrequencyBand_MFBI == 39 and px_MFBI_FrequencyBand == 33) or + ( px_OverlappingNotSupportedFrequencyBand_MFBI == 41 and px_MFBI_FrequencyBand == 38) + )) + { + select (p_TestCase) { + case ("TC_6_1_2_19", + "TC_6_1_2_20", + "TC_6_1_2_21", + "TC_8_2_4_22" + ) { v_ExecutionGuideline := false;} + } + }; + return v_ExecutionGuideline; + }; +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EPS_NAS_Constants.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EPS_NAS_Constants.ttcn new file mode 100644 index 0000000..1e0d5d3 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EPS_NAS_Constants.ttcn @@ -0,0 +1,223 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-10 14:07:59 +0200 (Wed, 10 Sep 2014) $ +// $Rev: 12187 $ +/******************************************************************************/ + +module EPS_NAS_Constants { + +import from CommonDefs all; +import from NAS_CommonTypeDefs all; +import from EPS_NAS_TypeDefs all; + +const SecurityHeaderType tsc_SHT_NoSecurityProtection := '0000'B; +const SecurityHeaderType tsc_SHT_IntegrityProtected := '0001'B; +const SecurityHeaderType tsc_SHT_IntegrityProtected_Ciphered := '0010'B; +const SecurityHeaderType tsc_SHT_IntegrityProtected_NewSecurityContext := '0011'B; +const SecurityHeaderType tsc_SHT_IntegrityProtected_Ciphered_NewSecurityContext := '0100'B; +const SecurityHeaderType tsc_SHT_ServiceRequest := '1100'B; + +const ProtocolDiscriminator tsc_PD_EMM := '0111'B; // from CR C1-085163 for 24.007 +const ProtocolDiscriminator tsc_PD_ESM := '0010'B; // from CR C1-085163 for 24.007 + +// NAS message types acc. 24.301 cl.9.8 +const MessageType tsc_MT_AttachRequest := '01000001'B; +const MessageType tsc_MT_AttachAccept := '01000010'B; +const MessageType tsc_MT_AttachComplete := '01000011'B; +const MessageType tsc_MT_AttachReject := '01000100'B; +const MessageType tsc_MT_DetachRequest := '01000101'B; +const MessageType tsc_MT_DetachAccept := '01000110'B; +const MessageType tsc_MT_TauRequest := '01001000'B; +const MessageType tsc_MT_TauAccept := '01001001'B; +const MessageType tsc_MT_TauComplete := '01001010'B; +const MessageType tsc_MT_TauReject := '01001011'B; +const MessageType tsc_MT_ExtServiceRequest := '01001100'B; +const MessageType tsc_MT_ServiceReject := '01001110'B; +const MessageType tsc_MT_GutiReallocCommand := '01010000'B; +const MessageType tsc_MT_GutiReallocComplete := '01010001'B; +const MessageType tsc_MT_AuthenticationRequest := '01010010'B; +const MessageType tsc_MT_AuthenticationResponse := '01010011'B; +const MessageType tsc_MT_AuthenticationReject := '01010100'B; +const MessageType tsc_MT_AuthenticationFailure := '01011100'B; +const MessageType tsc_MT_IdentityRequest := '01010101'B; +const MessageType tsc_MT_IdentityResponse := '01010110'B; +const MessageType tsc_MT_SecurityModeCommand := '01011101'B; +const MessageType tsc_MT_SecurityModeComplete := '01011110'B; +const MessageType tsc_MT_SecurityModeReject := '01011111'B; +const MessageType tsc_MT_EmmStatus := '01100000'B; +const MessageType tsc_MT_EmmInfo := '01100001'B; +const MessageType tsc_MT_DL_NASTransport := '01100010'B; +const MessageType tsc_MT_UL_NASTransport := '01100011'B; +const MessageType tsc_MT_CSServiceNotification := '01100100'B; +const MessageType tsc_MT_DL_GenericNASTransport := '01101000'B; +const MessageType tsc_MT_UL_GenericNASTransport := '01101001'B; + +const MessageType tsc_MT_ActivateDefaultEpsBearerContextRequest := '11000001'B; +const MessageType tsc_MT_ActivateDefaultEpsBearerContextAccept := '11000010'B; +const MessageType tsc_MT_ActivateDefaultEpsBearerContextReject := '11000011'B; +const MessageType tsc_MT_ActivateDedicatedEpsBearerContextRequest := '11000101'B; +const MessageType tsc_MT_ActivateDedicatedEpsBearerContextAccept := '11000110'B; +const MessageType tsc_MT_ActivateDedicatedEpsBearerContextReject := '11000111'B; +const MessageType tsc_MT_ModifyEpsBearerContextRequest := '11001001'B; +const MessageType tsc_MT_ModifyEpsBearerContextAccept := '11001010'B; +const MessageType tsc_MT_ModifyEpsBearerContextReject := '11001011'B; +const MessageType tsc_MT_DeactivateEpsBearerContextRequest := '11001101'B; +const MessageType tsc_MT_DeactivateEpsBearerContextAccept := '11001110'B; +const MessageType tsc_MT_PdnConnectivityRequest := '11010000'B; +const MessageType tsc_MT_PdnConnectivityReject := '11010001'B; +const MessageType tsc_MT_PdnDisconnectRequest := '11010010'B; +const MessageType tsc_MT_PdnDisconnectReject := '11010011'B; +const MessageType tsc_MT_BearerResourceAllocationRequest := '11010100'B; +const MessageType tsc_MT_BearerResourceAllocationReject := '11010101'B; +const MessageType tsc_MT_BearerResourceModificationRequest := '11010110'B; +const MessageType tsc_MT_BearerResourceModificationReject := '11010111'B; +const MessageType tsc_MT_EsmInformationRequest := '11011001'B; +const MessageType tsc_MT_EsmInformationResponse := '11011010'B; +const MessageType tsc_MT_EsmStatus := '11101000'B; +const MessageType tsc_MT_EsmNotification := '11011011'B; + + +const B8_Type tsc_SRVCC_HO_Canceled := '00000001'B; + +const IEI8_Type tsc_IEI_Guti := '50'O; // The same IEI value is used throughout 24.301 + +const ProcedureTransactionIdentifier tsc_PTI_1 := '01'O; + +const HalfOctet_Type tsc_EpsDefaultBearerId := '5'H; // EPS bearer identity (24.301 cl. 9.3.2); +const HalfOctet_Type tsc_EpsDefaultBearerId2ndPDN := 'C'H; +const HalfOctet_Type tsc_EpsDedicatedBearerId := '6'H; +const HalfOctet_Type tsc_EpsDedicatedBearerId2 := '7'H; +const HalfOctet_Type tsc_EpsDedicatedBearerId3 := '8'H; +const HalfOctet_Type tsc_EpsDedicatedBearerId4 := '9'H; +const HalfOctet_Type tsc_EpsDedicatedBearerId5 := 'A'H; +const HalfOctet_Type tsc_EpsDedicatedBearerId6 := 'B'H; +const HalfOctet_Type tsc_EpsDedicatedBearerId7 := 'C'H; +const HalfOctet_Type tsc_EpsDedicatedBearerId8 := 'D'H; +const HalfOctet_Type tsc_EpsDedicatedBearerId9 := 'E'H; +const HalfOctet_Type tsc_EpsDedicatedBearerId10 := 'F'H; + +const NAS_AttDetValue_Type tsc_EAttachType_EpsOnly := '001'B; +const NAS_AttDetValue_Type tsc_EAttachType_Combined := '010'B; +const NAS_AttDetValue_Type tsc_EAttachType_Emergency := '110'B; + +const EPS_UpdateTypeValue tsc_EpsUpdate_TaUpdate := '000'B; // TA updating +const EPS_UpdateTypeValue tsc_EpsUpdate_Combined_TaLaUpdate := '001'B; // Combined TA/LA updating +const EPS_UpdateTypeValue tsc_EpsUpdate_Combined_IMSIAttach := '010'B; // combined TA/LA updating with IMSI attach +const EPS_UpdateTypeValue tsc_EpsUpdate_Periodic := '011'B; // Periodic updating +const EPS_UpdateTypeValue tsc_EpsUpdate_TaLaUpdate_ISRActivated := '100'B; // TA updating with ISR activated +const EPS_UpdateTypeValue tsc_EpsUpdate_Combined_TaLaUpdate_ISRActivated := '101'B; // Combined TA/LA updating with ISR activated + +const B1_Type tsc_EpsUpdate_Active := '1'B; +const B1_Type tsc_EpsUpdate_NotActive := '0'B; + +// GprsOnly & EpsOnly share the same value +const NAS_AttDetValue_Type tsc_DetachMO_GprsOnly := '001'B; +const NAS_AttDetValue_Type tsc_DetachMO_EpsOnly := '001'B; +const NAS_AttDetValue_Type tsc_DetachMO_Imsi := '010'B; +const NAS_AttDetValue_Type tsc_DetachMO_Combined := '011'B; +const NAS_AttDetValue_Type tsc_DetachMT_ReAttach := '001'B; +const NAS_AttDetValue_Type tsc_DetachMT_NoReAttach := '010'B; +const NAS_AttDetValue_Type tsc_DetachMT_Imsi := '011'B; + +const NAS_CauseValue_Type tsc_EmmCause_UnknownIMSI := '00000010'B; +const NAS_CauseValue_Type tsc_EmmCause_IllegalUe := '00000011'B; +const NAS_CauseValue_Type tsc_EmmCause_IllegalMe := '00000110'B; +const NAS_CauseValue_Type tsc_Cause_IMEINotAccepted := '00000101'B; +const NAS_CauseValue_Type tsc_Cause_EPSServNotAllowed := '00000111'B; +const NAS_CauseValue_Type tsc_Cause_EPSandNonEPSServNotAllowed := '00001000'B; +const NAS_CauseValue_Type tsc_EmmCause_UEIdentityNotDerived := '00001001'B; +const NAS_CauseValue_Type tsc_EmmCause_ImplicitlyDetached := '00001010'B; +const NAS_CauseValue_Type tsc_Cause_TA_NotAllowed := '00001100'B; +const NAS_CauseValue_Type tsc_Cause_Roaming_NotAllowed := '00001101'B; +const NAS_CauseValue_Type tsc_Cause_PLMN_NotAllowed := '00001011'B; +const NAS_CauseValue_Type tsc_Cause_EPSServNotAllowedInThisPLMN := '00001110'B; +const NAS_CauseValue_Type tsc_Cause_NoSuitableCells := '00001111'B; +const NAS_CauseValue_Type tsc_EmmCause_MSCnotReachable := '00010000'B; +const NAS_CauseValue_Type tsc_EmmCause_NetworkFailure := '00010001'B; +const NAS_CauseValue_Type tsc_Cause_CSDomainNotAvailable := '00010010'B; +const NAS_CauseValue_Type tsc_Cause_ESMFailure := '00010011'B; +const NAS_CauseValue_Type tsc_Cause_MAC_Failure := '00010100'B; // #20 +const NAS_CauseValue_Type tsc_Cause_SQN_Failure := '00010101'B; // #21 +const NAS_CauseValue_Type tsc_Cause_Congestion := '00010110'B; +const NAS_CauseValue_Type tsc_UeSecurityCapsMismatch := '00010111'B; +const NAS_CauseValue_Type tsc_SecurityModeRejUnspecified := '00011000'B; +const NAS_CauseValue_Type tsc_Cause_NotAuthorizedCSG := '00011001'B; +const NAS_CauseValue_Type tsc_Cause_nonEPS_AuthUnacceptable := '00011010'B; // #26 +const NAS_CauseValue_Type tsc_EmmCause_CsFbCallEstNotAllowed := '00100110'B; // @desc EMM Cause: CS fallback call establishment not allowed. +const NAS_CauseValue_Type tsc_Cause_CSDomainNotTemporarilyAvailable := '00100111'B; // #39 'CS domain temporarily not available' +const NAS_CauseValue_Type tsc_Cause_NoEPSBearerActive := '00101000'B; // #40 +const NAS_CauseValue_Type tsc_EmmCause_SemanticallyIncorrect := '01011111'B; +const NAS_CauseValue_Type tsc_EmmCause_InvalidMandatoryInformation := '01100000'B; +const NAS_CauseValue_Type tsc_EmmCause_MessageTypeNonExistentOrNotImplemented := '01100001'B; +const NAS_CauseValue_Type tsc_EmmCause_IENonExistentOrNotImplemented := '01100011'B; +const NAS_CauseValue_Type tsc_EmmCause_ProtocolErrorUnspecified := '01101111'B; + +const NAS_KsiValue tsc_NasKsi_NoKey := '111'B; +const B1_Type tsc_NasKsi_NativeSecurityContext := '0'B; +const B1_Type tsc_NasKsi_MappedSecurityContext := '1'B; + +const B3_Type tsc_PdnRequest_InitialAttach := '001'B; +const B3_Type tsc_PdnRequest_Handover := '010'B; +const B3_Type tsc_PdnRequest_Emergency := '100'B; + +// PLMN identities acc. to 36.508 Table 6.3.2.2-1 +const NAS_PlmnId tsc_PLMN1 := '00F110'O; // @desc NAS PLMN ID (MCC=001, MNC= 01) for NAS Cell(s) A-F,M. +const NAS_PlmnId tsc_PLMN2 := '00F120'O; // @desc NAS PLMN ID (MCC=001, MNC= 02) for NAS Cell(s) G,H. +const NAS_PlmnId tsc_PLMN3 := '001201'O; // @desc NAS PLMN ID (MCC=002, MNC=101) for NAS Cell(s) I,K,L. +const NAS_PlmnId tsc_PLMN4 := '001301'O; // @desc NAS PLMN ID (MCC=003, MNC=101) for NAS Cell(s) J. + +const EPS_MmeGi tsc_MMEGI1 := '0001'O; +const EPS_MmeGi tsc_MMEGI2 := '0002'O; +const EPS_MmeGi tsc_MMEGI3 := '0003'O; +const EPS_MmeGi tsc_MMEGI4 := '0004'O; +const EPS_MmeGi tsc_MMEGI5 := '0005'O; +const EPS_MmeGi tsc_MMEGI6 := '0006'O; +const EPS_MmeGi tsc_MMEGI7 := '0007'O; +const EPS_MmeGi tsc_MMEGI8 := '0008'O; +const EPS_MmeGi tsc_MMEGI9 := '0009'O; +const EPS_MmeGi tsc_MMEGI10 := '000A'O; + +const EPS_Mmec tsc_MMEC1to10 := '01'O; + +const NAS_Tac tsc_TAC1 := '0001'O; +const NAS_Tac tsc_TAC2 := '0002'O; +const NAS_Tac tsc_TAC3 := '0003'O; +const NAS_Tac tsc_TAC4 := '0004'O; +const NAS_Tac tsc_TAC5 := '0005'O; +const NAS_Tac tsc_TAC6 := '0006'O; + +const EPS_PartialTaiListType tsc_NonConsecutiveTacs := '00'B; +const EPS_PartialTaiListType tsc_ConsecutiveTacs := '01'B; +const EPS_PartialTaiListType tsc_MultiplePlmns := '10'B; + +const EPS_ServiceTypeValue tsc_EST_CsFallback_MO := '0000'B; // @desc Service Type: Mobile originating CS fallback or 1xCS fallback. +const EPS_ServiceTypeValue tsc_EST_CsFallback_MT := '0001'B; // @desc Service Type: Mobile terminating CS fallback or 1xCS fallback. +const EPS_ServiceTypeValue tsc_EST_CsFallback_EC := '0010'B; // @desc Service Type: Mobile originating CS fallback emergency call or 1xCS fallback emergency call. + +const ProcedureTransactionIdentifier tsc_PTI_Unassigned := '00'O; // TS 24.007 clause 11.2.3.1a + +const octetstring tsc_APN1 := '0541504E2D31'O; /* Access Point Name APN-1; + @status APPROVED (LTE) */ +const charstring tsc_APN1_string := "APN-1"; /* Access Point Name APN-1; @sic R5s100466 sic@ + @status APPROVED (LTE) */ +const octetstring tsc_APN2 := '0541504E2D32'O; /* Access Point Name APN-2; + @status APPROVED (LTE) */ +const charstring tsc_APN2_string := "APN-2"; /* Access Point Name APN-2; @sic R5s100748 sic@ + @status APPROVED (LTE) */ +const octetstring tsc_APN3 := '0541504E2D33'O; /* Access Point Name APN-3; + @status */ +const charstring tsc_APN3_string := "APN-3"; /* Access Point Name APN-3; @sic R5-143213 sic@ + @status */ + +const B8_Type tsc_ESM_Cause36_RegularDeactivation := '00101011'B; +const B8_Type tsc_ESM_Cause26_InsufficientResources := '00011010'B; + + +const float tsc_WaitforAttach := 1.5; // @sic R5s130634 sic@ + +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EPS_NAS_MsgContainers.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EPS_NAS_MsgContainers.ttcn new file mode 100644 index 0000000..0fda846 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EPS_NAS_MsgContainers.ttcn @@ -0,0 +1,221 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-10-23 08:07:30 +0200 (Wed, 23 Oct 2013) $ +// $Rev: 9855 $ +/******************************************************************************/ + +module EPS_NAS_MsgContainers +{ + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; // needed to get definition of maxDRB */ + import from EPS_NAS_TypeDefs all; + import from EUTRA_LoopBack_TypeDefs all; + import from NAS_CommonTypeDefs all; + + type union NAS_UL_Message_Type { /* NAS message with direction 'UE to network ' or 'both' */ + ATTACH_COMPLETE aTTACH_COMPLETE, + ATTACH_REQUEST aTTACH_REQUEST, + + AUTHENTICATION_FAILURE aUTHENTICATION_FAILURE, + AUTHENTICATION_RESPONSE aUTHENTICATION_RESPONSE, + + DETACH_ACCEPT dETACH_ACCEPT, /* direction: both */ + DETACH_REQUEST_MO dETACH_REQUEST_MO, + + EMM_STATUS eMM_STATUS, /* direction: both */ + + EXT_SERVICE_REQUEST eXT_SERVICE_REQUEST, + + GUTI_REALLOCATION_COMPLETE gUTI_REALLOCATION_COMPLETE, + + IDENTITY_RESPONSE iDENTITY_RESPONSE, + + SECURITY_MODE_COMPLETE sECURITY_MODE_COMPLETE, + SECURITY_MODE_REJECT sECURITY_MODE_REJECT, + + SECURITY_PROTECTED_NAS_MESSAGE sECURITY_PROTECTED_NAS_MESSAGE, + + SERVICE_REQUEST sERVICE_REQUEST, + + TRACKING_AREA_UPDATE_COMPLETE tRACKING_AREA_UPDATE_COMPLETE, + TRACKING_AREA_UPDATE_REQUEST tRACKING_AREA_UPDATE_REQUEST, + + UL_NAS_TRANSPORT ul_NAS_TRANSPORT, + UL_GENERIC_NAS_TRANSPORT ul_GENERIC_NAS_TRANSPORT, + + ACTIVATE_DEDICATED_EPS_BEARER_CONTEXT_ACCEPT aCTIVATE_DEDICATED_EPS_BEARER_CONTEXT_ACCEPT, + ACTIVATE_DEDICATED_EPS_BEARER_CONTEXT_REJECT aCTIVATE_DEDICATED_EPS_BEARER_CONTEXT_REJECT, + + ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_ACCEPT aCTIVATE_DEFAULT_EPS_BEARER_CONTEXT_ACCEPT, + ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REJECT aCTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REJECT, + + BEARER_RESOURCE_ALLOCATION_REQUEST bEARER_RESOURCE_ALLOCATION_REQUEST, + BEARER_RESOURCE_MODIFICATION_REQUEST bEARER_RESOURCE_MODIFICATION_REQUEST, + + DEACTIVATE_EPS_BEARER_CONTEXT_ACCEPT dEACTIVATE_EPS_BEARER_CONTEXT_ACCEPT, + + ESM_INFORMATION_RESPONSE eSM_INFORMATION_RESPONSE, + + ESM_STATUS eSM_STATUS, /* direction: both */ + + MODIFY_EPS_BEARER_CONTEXT_ACCEPT mODIFY_EPS_BEARER_CONTEXT_ACCEPT, + MODIFY_EPS_BEARER_CONTEXT_REJECT mODIFY_EPS_BEARER_CONTEXT_REJECT, + + PDN_CONNECTIVITY_REQUEST pDN_CONNECTIVITY_REQUEST, + + PDN_DISCONNECT_REQUEST pDN_DISCONNECT_REQUEST, + + ACTIVATE_TEST_MODE_COMPLETE aCTIVATE_TEST_MODE_COMPLETE, + DEACTIVATE_TEST_MODE_COMPLETE dEACTIVATE_TEST_MODE_COMPLETE, + + CLOSE_UE_TEST_LOOP_COMPLETE cLOSE_UE_TEST_LOOP_COMPLETE, + OPEN_UE_TEST_LOOP_COMPLETE oPEN_UE_TEST_LOOP_COMPLETE, + UE_TESTLOOPMODEC_MBMS_PACKETCOUNTERRESPONSE uE_TESTLOOPMODEC_MBMS_PACKETCOUNTERRESPONSE //@sic eMBMS sic@ + }; + + type union NAS_DL_Message_Type { /* NAS message with direction 'network to UE' or 'both' */ + ATTACH_ACCEPT aTTACH_ACCEPT, + ATTACH_REJECT aTTACH_REJECT, + + AUTHENTICATION_REJECT aUTHENTICATION_REJECT, + AUTHENTICATION_REQUEST aUTHENTICATION_REQUEST, + + CS_SERVICE_NOTIFICATION cS_SERVICE_NOTIFICATION, + + DETACH_ACCEPT dETACH_ACCEPT, /* direction: both */ + DETACH_REQUEST_MT dETACH_REQUEST_MT, + + DL_NAS_TRANSPORT dl_NAS_TRANSPORT, + DL_GENERIC_NAS_TRANSPORT dl_GENERIC_NAS_TRANSPORT, + + EMM_INFORMATION eMM_INFORMATION, + EMM_STATUS eMM_STATUS, /* direction: both */ + + GUTI_REALLOCATION_COMMAND gUTI_REALLOCATION_COMMAND, + + IDENTITY_REQUEST iDENTITY_REQUEST, + + RESETUEPOSITIONINGSTOREDINFORMATION rESETUEPOSITIONINGSTOREDINFORMATION, // For AGNSS + SECURITY_MODE_COMMAND sECURITY_MODE_COMMAND, + + SECURITY_PROTECTED_NAS_MESSAGE sECURITY_PROTECTED_NAS_MESSAGE, + + SERVICE_REJECT sERVICE_REJECT, + + TRACKING_AREA_UPDATE_ACCEPT tRACKING_AREA_UPDATE_ACCEPT, + TRACKING_AREA_UPDATE_REJECT tRACKING_AREA_UPDATE_REJECT, + + ACTIVATE_DEDICATED_EPS_BEARER_CONTEXT_REQUEST aCTIVATE_DEDICATED_EPS_BEARER_CONTEXT_REQUEST, + + ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REQUEST aCTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REQUEST, + + BEARER_RESOURCE_ALLOCATION_REJECT bEARER_RESOURCE_ALLOCATION_REJECT, + BEARER_RESOURCE_MODIFICATION_REJECT bEARER_RESOURCE_MODIFICATION_REJECT, + + DEACTIVATE_EPS_BEARER_CONTEXT_REQUEST dEACTIVATE_EPS_BEARER_CONTEXT_REQUEST, + + ESM_INFORMATION_REQUEST eSM_INFORMATION_REQUEST, + + ESM_STATUS eSM_STATUS, /* direction: both */ + + MODIFY_EPS_BEARER_CONTEXT_REQUEST mODIFY_EPS_BEARER_CONTEXT_REQUEST, + + PDN_CONNECTIVITY_REJECT pDN_CONNECTIVITY_REJECT, + + PDN_DISCONNECT_REJECT pDN_DISCONNECT_REJECT, + NOTIFICATION nOTIFICATION, + + ACTIVATE_TEST_MODE aCTIVATE_TEST_MODE, + DEACTIVATE_TEST_MODE dEACTIVATE_TEST_MODE, + + CLOSE_UE_TEST_LOOP cLOSE_UE_TEST_LOOP, + OPEN_UE_TEST_LOOP oPEN_UE_TEST_LOOP, + UPDATE_UE_LOCATION_INFORMATION uPDATE_UE_LOCATION_INFORMATION , // UE location information + UE_TESTLOOPMODEC_MBMS_PACKETCOUNTERREQUEST uE_TESTLOOPMODEC_MBMS_PACKETCOUNTERREQUEST //@sic eMBMS sic@ + }; + + //**************************************************************************** + // NAS SECURITY PROTECTION + //**************************************************************************** + // acc. to 24.301 cl. 9.1 there are different kinds of NAS messages: + // - NAS messages being security protected: + // in this case the NAS message is contained in SECURITY PROTECTED NAS MESSAGE (i.e. SECURITY PROTECTED NAS MESSAGE is the NAS PDU) + // - NAS messages not being security protected: + // in this case the NAS message is not contained in SECURITY PROTECTED NAS MESSAGE (i.e. the NAS message is the NAS PDU) + // - SERVICE REQUEST (UE -> network): + // SERVICE REQUEST is always already a NAS PDU i.e. never contained in a SECURITY PROTECTED NAS MESSAGE + // (assumptions: SERVICE REQUEST is not ciphered; (short) MAC needs not to be evaluated) + // in oder to allow easy handling of NAS messages in the testcases and to allow straight forward codec implementation + // TTCN (normally) shall deal with the pure NAS messages rather than with the SECURITY PROTECTED NAS MESSAGE (which is more or less a container only) + // => SecurityHeaderType, ProtocolDiscriminator, MessageAuthenticationCode and NAS_SequenceNumber are treated as separated information and the + // NAS emulation is responsible to + // - encode/decode the SECURITY PROTECTED NAS MESSAGE (if necessary) + // - apply NAS security (if necessary) + // - manage NAS sequence numbers + + type record NAS_SecurityProtectionInfoUL_Type { + SecurityHeaderType Status, + NasCount_Type NasCount + }; + + type record NAS_SecurityProtectionInfoDL_Type { + SecurityHeaderType Status, + boolean ForceMacError /* Force the NAS emulator to send NAS PDU with erroneous MAC + @sic R5s100358 additional changes sic@ */ + }; + + //**************************************************************************** + // Generic definition of NAS PDUs containing other piggy-backed PDUs + //**************************************************************************** + // Note: the type definition allows much more combinitions than being valid acc. to the NAS standard + // appropriate templates shall restrict the generic type definitions + // Working Assumptions: + // - acc. to DEC 08 ASN.1 in RRCConnectionReconfiguration there can be up to maxDRB times DedicatedInfoNAS + // => several EMM messages can be contained each having its own security protection + // - within any DedicatedInfoNAS there is one security protected NAS PDU + // (i.e. the assumption is that the security container contains just one PDU) + // - the EMM PDU being contained in the DedicatedInfoNAS may contain further piggy-backing: + // even though in 24.301 V8.0.0 it is stated that + // "The purpose of the ESM message container information element is to enable piggybacked transfer of + // a single ESM message within an EMM message" (cl. 9.9.3.15) + // the type definition allows even more than one piggy-backed PDU and as well further levels of piggybacking + // => type definitions can be applied even when the standard will be enhanced in the future + + // recursive type definition: + type record NAS_UL_Pdu_Type { + NAS_UL_Message_Type Msg, + NAS_UL_PduList_Type PiggybackedPduList optional + }; + + type record of NAS_UL_Pdu_Type NAS_UL_PduList_Type; + + // recursive type definition: + type record NAS_DL_Pdu_Type { + NAS_DL_Message_Type Msg, + NAS_DL_PduList_Type PiggybackedPduList optional + }; + + type record of NAS_DL_Pdu_Type NAS_DL_PduList_Type; + + type record NAS_MSG_Indication_Type { + NAS_SecurityProtectionInfoUL_Type SecurityProtection, /* contains security status and NAS COUNT */ + NAS_UL_Pdu_Type Pdu /* => only one NAS PDU on top level */ + }; + + type record length(1) of NAS_MSG_Indication_Type NAS_MSG_IndicationList_Type; /* acc. to DEC 08 ASN.1 max. one DedicatedInfoNAS + may be contained in any UL RRC message */ + + type record NAS_MSG_Request_Type { + NAS_SecurityProtectionInfoDL_Type SecurityProtection, /* contains security status */ + NAS_DL_Pdu_Type Pdu /* => only one NAS PDU on top level */ + }; + + type record length(1..maxDRB) of NAS_MSG_Request_Type NAS_MSG_RequestList_Type; /* acc. to DEC 08 ASN.1 in RRCConnectionReconfiguration + there can be up to maxDRB times DedicatedInfoNAS */ + +// The encoding rule is needed because the types in this file are part of the overall message sent over the air +} with { encode "NAS Types"} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EPS_NAS_TypeDefs.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EPS_NAS_TypeDefs.ttcn new file mode 100644 index 0000000..53109b1 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EPS_NAS_TypeDefs.ttcn @@ -0,0 +1,1122 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-04-09 21:44:58 +0200 (Tue, 09 Apr 2013) $ +// $Rev: 8515 $ +/******************************************************************************/ + +module EPS_NAS_TypeDefs { + +import from CommonDefs all; +import from NAS_CommonTypeDefs all; + +//**************************************************************************** +// NAS PROTOCOL DEFINITIONS: IEs +//---------------------------------------------------------------------------- +// General Info Elements (24.301 cl. 9) +//---------------------------------------------------------------------------- + +type B4_Type SecurityHeaderType; /* 24.301 cl. 9.3.1 */ +type HalfOctet_Type EPS_BearerIdentity; /* 24.301 cl. 9.3.2 */ +type Octet_Type ProcedureTransactionIdentifier; /* 24.301 cl. 9.4 */ +type O4_Type MessageAuthenticationCode; /* 24.301 cl. 9.5 */ +type Octet_Type NAS_SequenceNumber; /* 24.301 cl. 9.6 */ + +type O4_Type NasCount_Type; + +// Note: This IE is not needed when SECURITY PROTECTED NAS MESSAGE is +// handled by the NAS emulation An alternative approach would be to +// implement NAS_Message as a union of all NAS messages except +// SECURITY PROTECTED NAS MESSAGE and SERVICE REQUEST - but this would +// have impact on codec implementation and may reduce readability */ +type octetstring NAS_Message; /* 24.301 cl. 9.7 */ + +type O2_Type EPS_MmeGi; +type O1_Type EPS_Mmec; +type O4_Type EPS_M_Tmsi; +type O5_Type EPS_S_Tmsi; + +type B2_Type EPS_PartialTaiListType; +type B3_Type NAS_KsiValue; +type B4_Type EPS_ServiceTypeValue; +type B3_Type PdnTypeValue; +type B3_Type EPS_UpdateTypeValue; + +type O2_Type NAS_Tac; + +//---------------------------------------------------------------------------- +// Common Info Elements (24.301 cl. 9.9.2) +//---------------------------------------------------------------------------- + +type record PDN_Address { /* 24.301 cl. 9.9.4.9 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B5_Type spare, + B3_Type typeValue, + octetstring adressInfo length(4..12) +}; + + +type record TrackingAreaId { /* 24.301 cl. 9.9.3.32 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + NAS_PlmnId plmnId, /* MCC + MNC 3 digits each */ + NAS_Tac tac /* TAC */ +}; + +type record length (1..16) of NAS_Tac NAS_TacList; + +type record PartialTai { + NAS_PlmnId plmnId, /* MCC + MNC 3 digits each */ + NAS_Tac tac +}; + +type record Type0Element { // @sic R5s100184 sic@ + NAS_PlmnId plmnId, /* MCC + MNC 3 digits each */ + NAS_TacList tacList +}; + +type record Type1Element { // @sic R5s100184 sic@ + PartialTai partialTac +}; + +type record length (1..16) of PartialTai PlmnAndTacs; + +type record Type2Element { // @sic R5s100184 sic@ + PlmnAndTacs plmnAndTacs +}; + +type record length (1..16) of Type0Element Type0List; +type record length (1..16) of Type1Element Type1List; +type record length (1..16) of Type2Element Type2List; + +type union PartialTaiType { + Type0List type0List, + Type1List type1List, + Type2List type2List +}; + +type record ListOfPartialTaiList { + B1_Type spareBit, + EPS_PartialTaiListType typeOfList, + B5_Type numberOfElements, + PartialTaiType partialTaiList // @sic R5s100184 sic@ +}; + +type record TrackingAreaIdList { /* 24.301 cl. 9.9.3.33 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel, + record length (1..16) of ListOfPartialTaiList listOfPartialTais +}; + +//**************************************************************************** +// NAS PROTOCOL DEFINITIONS: PDUs +//---------------------------------------------------------------------------- +// EPS mobility management messages (24.301 cl. 8.2) +//---------------------------------------------------------------------------- + +type record ATTACH_ACCEPT { /* 24.301 cl. 8.2.1 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.9.2.9 M V 1/2 */ + EPS_AttachResult epsAttachResult, /* cl. 9.9.3.10 M V 1/2 */ + GPRS_Timer t3412, /* cl. 9.9.3.16 M V 1 */ + TrackingAreaIdList taiList, /* cl. 9.9.3.33 M LV 7-97 */ + ESM_MessageContainer esmMessage, /* cl. 9.9.3.15 M LV-E 5-n @sic R5s110176 Baseline Moving sic@ */ + MobileIdentity guti optional, /* cl. 9.9.3.12 O TLV 13 IEI=0x50 */ + LocAreaId lai optional, /* cl. 9.9.2.2 O TV 6 IEI=0x13 */ + MobileIdentity msIdentity optional, /* cl. 9.9.2.3 O TLV 7-10 IEI=0x23 */ + EMM_Cause emmCause optional, /* cl. 9.9.3.9 O TV 2 IEI=0x53 */ + GPRS_Timer t3402 optional, /* cl. 9.9.3.16 O TV 2 IEI=0x17 */ + GPRS_Timer t3423 optional, /* cl. 9.9.3.16 O TV 2 IEI=0x59 */ + PLMN_List equivalentPlmns optional, /* cl. 9.9.2.8 O TLV 5-47 IEI=0x4a */ + EmergNumList emergencyNumberList optional, /* cl. 9.9.3.37 O TLV 5-50 IEI=0x34 */ + EPS_NetworkFeatureSupport epsNetworkFeatureSupport optional, /* cl.9.9.3.12A O TLV 3 IEI=0x64 @sic R5s100135 sic@ */ + AdditionalUpdateResult addUpdateResult optional, /* cl.9.9.3.0A O TV 1 IEI=0xF @sic R5s100135 sic@ */ + GPRS_Timer3 t3412ExtdValue optional /* cl. 9.9.3.16B O TLV 3 IEI=0x5E @sic R5s120178 Baseline Moving sic@*/ +}; + +type record ATTACH_COMPLETE { /* 24.301 cl. 8.2.2 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ESM_MessageContainer esmMessage /* cl. 9.9.3.15 M LV-E 5-n @sic R5s110176 Baseline Moving sic@ */ +}; + +type record ATTACH_REJECT { /* 24.301 cl. 8.2.3 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + EMM_Cause emmCause, /* cl. 9.9.3.9 M V 1 */ + ESM_MessageContainer esmMessage optional, /* cl. 9.9.3.15 M TLV-E 6-n IEI=0x78 @sic R5s110176 Baseline Moving sic@ */ + GPRS_Timer2 t3346 optional, /* cl. 9.9.3.16A O TLV 3 IEI=0x5F @sic R5s120178 Baseline Moving sic@*/ + GPRS_Timer2 t3402 optional /* cl. 9.9.3.16A O TLV 3 IEI=0x16 @sic R5s120178 Baseline Moving sic@*/ +}; + +type record ATTACH_REQUEST { /* 24.301 cl. 8.2.4 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + NAS_KeySetIdentifier nasKeySetId, /* cl. 9.9.3.21 M V 1/2 */ + EPS_AttachType epsAttachType, /* cl. 9.9.3.11 M V 1/2 */ + MobileIdentity epsMobileIdentity, /* cl. 9.9.3.12 M LV 5-12 @sic R5s110176 Baseline Moving sic@ */ + UE_NetworkCap ueNetworkCapability, /* cl. 9.9.3.34 M LV 3-14 */ + ESM_MessageContainer esmMessage, /* cl. 9.9.3.15 M LV-E 5-n */ + PTMSI_Signature oldPtmsiSignature optional, /* cl 10.5.5.8 of 24.008 O TV 4 IEI=Ox19*/ + MobileIdentity additionalGuti optional, /* cl 9.9.3.12 O TLV 13 IEI=Ox50*/ + TrackingAreaId lastVisitedRegisteredTai optional, /* cl. 9.9.3.32 O TV 6 IEI=0x52 */ + DRXparameter drxParameter optional, /* cl. 9.9.3.8 O TV 3 IEI=Ox5c */ + MS_NetworkCap msNetworkCapability optional, /* cl. 9.9.3.20 O TLV 4-10 IEI=Ox31 */ + LocAreaId oldLai optional, /* cl. 9.9.2.2 O TV 6 IEI=0x13 */ + TMSI_Status tmsiStatus optional, /* cl. 9.9.2.31 O TV 1 IEI=0x9- */ + MS_Clsmk2 msClassmark2 optional, /* cl. 9.9.2.4 O TLV 5 IEI=0x11 */ + MS_Clsmk3 msClassmark3 optional, /* cl. 9.9.2.5 O TLV 2-34 IEI=0x20 */ + CodecList supportedCodecList optional, /* cl. 9.9.2.10 O TLV 5-n IEI=0x40 */ + AdditionalUpdateType addUpdateType optional, /* cl.9.9.3.0B O TV 1 IEI=0xF @sic R5s100135 sic@ */ + VoiceDomainPref voiceDomainPref optional, /* cl.9.9.3.44 O TLV 3 IEI=0x5D @sic R5s110176 Baseline Moving sic@ */ + DeviceProperties deviceProperties optional, /* cl. 9.9.2.0A O TV 1 IEI=0xD- @sic R5s120178 Baseline Moving sic@*/ + GUTI_Type oldGUTI_Type optional, /* cl. 9.9.3.45 O TV 1 IEI=0xE- @sic R5s120178 Baseline Moving sic@*/ + MS_NetworkFeatureSupport msNetworkFeatureSupport optional, /* cl. 9.9.2.0A O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/ + NwkResourceId tmsiBasedNRIContainer optional /* cl. 10.5.5.31 O TLV 4 IEI=0x10 @sic R5s130195 Baseline Moving sic@*/ +}; + +type record AUTHENTICATION_FAILURE { /* 24.301 cl. 8.2.5 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + EMM_Cause emmCause, /* cl. 9.9.3.9 M V 1 */ + AuthenticationFailureParameter authenticationFailureParameter optional /* cl. 9.9.3.1 O TLV 16 IEI=0x30 */ +}; + +type record AUTHENTICATION_REJECT { /* 24.301 cl. 8.2.6 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType /* cl. 9.8 M V 1 */ +}; + +type record AUTHENTICATION_REQUEST { /* 24.301 cl. 8.2.7 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.9.2.9 M V 1/2 */ + NAS_KeySetIdentifier asmeNasKeySetId, /* cl. 9.9.3.21 M V 1/2 */ + RAND rand, /* cl. 9.9.3.3 M V 16 */ + AUTN autn /* cl. 9.9.3.2 M LV 17 */ +}; + +type record AUTHENTICATION_RESPONSE { /* 24.301 cl. 8.2.8 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + AuthenticationResponseParameter authenticationResponseParameter /* cl. 9.9.3.4 M LV 5-17 */ +}; + +type record CS_SERVICE_NOTIFICATION { /* 24.301 cl. 8.2.9 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + PagingIdentity pagingIdentity, /* cl. 9.9.3.25A M V 1 @sic R5s100135 sic@ */ + CLI cli optional, /* cl. 9.9.3.38 O TLV 3-14 IEI=0x60 */ + SsCode ssCode optional, /* cl. 9.9.3.39 O TV 2 IEI=0x61 */ + LcsIndicator lcsIndicator optional, /* cl. 9.9.3.40 O TV 2 IEI=0x62 */ + LcsClientIdentity lcsClientIdentity optional /* cl. 9.9.3.41 O TLV 3-257 IEI=0x63 */ +}; + +type record DETACH_ACCEPT { /* 24.301 cl. 8.2.10.1/2 (both directions) + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType /* cl. 9.8 M V 1 */ +}; + +type record DETACH_REQUEST_MO { /* 24.301 cl. 8.2.11.1 (UE originating detach) + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + NAS_KeySetIdentifier asmeNasKeySetId, /* cl. 9.9.3.21 M V 1/2 */ + DetachType detachType, /* cl. 9.9.3.7 M V 1/2 */ + MobileIdentity epsMobileIdentity /* cl. 9.9.3.12 M LV 5-12 @sic R5s110176 Baseline Moving sic@ */ +}; + +type record DETACH_REQUEST_MT { /* 24.301 cl. 8.2.11.2 (UE terminated detach) + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.9.2.9 M V 1/2 */ + DetachType detachType, /* cl. 9.9.3.7 M V 1/2 */ + EMM_Cause emmCause optional /* cl. 9.9.3.9 O TV 2 IEI=0x53 */ +}; + +type record DL_NAS_TRANSPORT { /* 24.301 cl. 8.2.12 + Significance: local + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + NAS_MessageContainer nasMessage /* cl. 9.9.3.22 M LV 3-252 */ +}; + +type record EMM_INFORMATION { /* 24.301 cl. 8.2.13 + Significance: local + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + NetworkName fullNetworkName optional, /* cl. 9.9.3.24 O TLV 3-? IEI=0x43 */ + NetworkName shortNetworkName optional, /* cl. 9.9.3.24 O TLV 3-? IEI=0x45 */ + TimeZone localTimeZone optional, /* cl. 9.9.3.29 O TV 2 IEI=0x46 */ + TimeZoneAndTime localTimeZoneAndTime optional, /* cl. 9.9.3.30 O TV 8 IEI=0x47 */ + DaylightSavingTime daylightSavingTime optional /* cl. 9.9.3.6 O TLV 3 IEI=0x49 */ +}; + +type record EMM_STATUS { /* 24.301 cl. 8.2.14 + Significance: local + Direction: both */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + EMM_Cause emmCause /* cl. 9.9.3.9 M V 1 */ +}; + +type record EXT_SERVICE_REQUEST { /* 24.301 cl. 8.2.15 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + NAS_KeySetIdentifier nasKeySetId, /* cl. 9.9.3.21 M V 1/2 */ + EPS_ServiceType serviceType, /* cl. 9.9.3.27 M V 1/2 */ + MobileIdentity mTMSI, /* cl. 9.9.2.3 M LV 6 */ + CSFBResponse csfbResponse optional, /* cl. 9.9.3.5 C TV 1 IEI=0xB- */ + EPS_BearerContextStatus epsBearerContextStatus optional, /* cl. 9.9.2.1 O TLV 4 IEI=0x57 @sic R5s110176 Baseline Moving sic@ */ + DeviceProperties deviceProperties optional /* cl. 9.9.2.0A O TV 1 IEI=0xD- @sic R5s120178 Baseline Moving sic@*/ +}; + +type record GUTI_REALLOCATION_COMMAND { /* 24.301 cl. 8.2.16 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + MobileIdentity guti, /* cl. 9.9.3.12 M LV 12 */ + TrackingAreaIdList taiList optional /* cl. 9.9.3.33 O TLV 8-98 IEI=0x54 */ +}; + +type record GUTI_REALLOCATION_COMPLETE { /* 24.301 cl. 8.2.17 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType /* cl. 9.8 M V 1 */ +}; + +type record IDENTITY_REQUEST { /* 24.301 cl. 8.2.18 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.9.2.9 M V 1/2 */ + IdentityType identityType2 /* cl. 9.9.3.17 M V 1/2 */ +}; + +type record IDENTITY_RESPONSE { /* 24.301 cl. 8.2.19 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + MobileIdentity mobileIdentity /* cl. 9.9.2.3 M LV 4-10 */ +}; + +type record SECURITY_MODE_COMMAND { /* 24.301 cl. 8.2.20 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + NAS_SecurityAlgorithms nasSecurityAlgorithms, /* cl. 9.9.3.23 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.9.2.9 M V 1/2 */ + NAS_KeySetIdentifier asmeNasKeySetId, /* cl. 9.9.3.21 M V 1/2 */ + UE_SecurityCapability replayedSecurityCapability, /* cl. 9.9.3.36 M LV 3-6 */ + IMEISV_Request imeisvRequest optional, /* cl. 9.9.3.18 O TV 1 IEI=0xC- */ + Nonce replayedNonceUe optional, /* cl. 9.9.3.25 O TV 5 IEI=0x55 */ + Nonce nonceMme optional /* cl. 9.9.3.25 O TV 5 IEI=0x56 */ +}; + +type record SECURITY_MODE_COMPLETE { /* 24.301 cl. 8.2.21 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + MobileIdentity imeisv optional /* cl. 9.9.2.3 O TLV 11 IEI=0x23 */ +}; + +type record SECURITY_MODE_REJECT { /* 24.301 cl. 8.2.22 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + EMM_Cause emmCause /* cl. 9.9.3.9 M V 1 */ +}; + +type record SECURITY_PROTECTED_NAS_MESSAGE { /* 24.301 cl. 8.2.23 + Significance: dual + Direction: both */ + /* Note: it is FFS whether this PDU is realy used in TTCN */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageAuthenticationCode messageAuthenticationCode, /* cl. 9.5 M V 4 */ + NAS_SequenceNumber sequenceNumber, /* cl. 9.6 M V 1 */ + NAS_Message nasMessage /* cl. 9.7 M V 1-n */ +}; + +type record SERVICE_REJECT { /* 24.301 cl. 8.2.24 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + EMM_Cause emmCause, /* cl. 9.9.3.9 M V 1 */ + GPRS_Timer t3442 optional,/* cl. 9.9.3.16 C TV 2 IEI=0x5b */ + GPRS_Timer2 t3346 optional /* cl. 9.9.3.16A O TLV 3 IEI=0x5F @sic R5s120178 Baseline Moving sic@ */ +}; + +type record SERVICE_REQUEST { /* 24.301 cl. 8.2.25 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + KSIandSN ksiAndSN, /* cl. 9.9.3.19 M V 1 */ + ShortMAC shortMAC /* cl. 9.9.3.28 M V 2 */ +}; + +type record TRACKING_AREA_UPDATE_ACCEPT { /* 24.301 cl. 8.2.26 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.9.2.9 M V 1/2 */ + EPS_UpdateResult epsUpdateResult, /* cl. 9.9.3.13 M V 1/2 */ + GPRS_Timer t3412 optional, /* cl. 9.9.3.16 O TV 2 IEI=0x5a */ + MobileIdentity guti optional, /* cl. 9.9.3.12 O TLV 13 IEI=0x50 */ + TrackingAreaIdList taiList optional, /* cl. 9.9.3.33 O TLV 8-98 IEI=0x54 */ + EPS_BearerContextStatus epsBearerContextStatus optional, /* cl. 9.9.2.1 O TLV 4 IEI=0x57 */ + LocAreaId lai optional, /* cl. 9.9.2.2 O TV 6 IEI=0x13 */ + MobileIdentity msIdentity optional, /* cl. 9.9.2.3 O TLV 7-10 IEI=0x23 */ + EMM_Cause emmCause optional, /* cl. 9.9.3.9 O TV 2 IEI=0x53 */ + GPRS_Timer t3402 optional, /* cl. 9.9.3.16 O TV 2 IEI=0x17 */ + GPRS_Timer t3423 optional, /* cl. 9.9.3.16 O TV 2 IEI=0x59 */ + PLMN_List equivalentPlmns optional, /* cl. 9.9.2.8 O TLV 5-47 IEI=0x4a */ + NAS_KeySetIdentifier asmeNasKeySetId optional, /* cl. 9.9.3.21 O TV 1 IEI=0x8-*/ + EmergNumList emergencyNumberList optional, /* cl. 9.9.3.37 O TLV 5-50 IEI=0x34 */ + EPS_NetworkFeatureSupport epsNetworkFeatureSupport optional, /* cl.9.9.3.12A O TLV 3 IEI=0x64 @sic R5s100135 sic@ */ + AdditionalUpdateResult addUpdateResult optional, /* cl.9.9.3.0A O TV IEI=0xF @sic R5s100135 sic@ */ + GPRS_Timer3 t3412ExtdValue optional /* cl. 9.9.3.16B O TLV 3 IEI=0x5E @sic R5s120178 Baseline Moving sic@*/ +}; + +type record TRACKING_AREA_UPDATE_COMPLETE { /* 24.301 cl. 8.2.27 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType /* cl. 9.8 M V 1 */ +}; + +type record TRACKING_AREA_UPDATE_REJECT { /* 24.301 cl. 8.2.28 + Significance: dual + Direction: network to UE */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + EMM_Cause emmCause, /* cl. 9.9.3.9 M V 1 */ + GPRS_Timer2 t3346 optional /* cl. 9.9.3.16A O TLV 3 IEI=0x5F @sic R5s120178 Baseline Moving sic@*/ +}; + +type record TRACKING_AREA_UPDATE_REQUEST { /* 24.301 cl. 8.2.29 + Significance: dual + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + NAS_KeySetIdentifier asmeNasKeySetId, /* cl. 9.9.3.21 M V 1/2 */ + EPS_UpdateType epsUpdateType, /* cl. 9.9.3.14 M V 1/2 */ + MobileIdentity oldGuti, /* cl. 9.9.3.12 M LV 12 */ + NAS_KeySetIdentifier nonCurrentNativeNasKeySetId optional, /* cl. 9.9.3.21 O TV 1 IEI=0xB- */ + CiphKeySeqNum gprsCipheringKeySeqNum optional, /* cl. 9.9.3.4a O TV 1 IEI=0x8- @sic R5s100135 sic@ */ + PTMSI_Signature oldPtmsiSignature optional, /* cl. 9.9.3.26 O TV 4 IEI=0x19 */ + MobileIdentity additionalGuti optional, /* cl. 9.9.3.12 O TLV 13 IEI=0x50 */ + Nonce nonce optional, /* cl. 9.9.3.25 O TV 5 IEI=0x55 */ + UE_NetworkCap ueNetworkCapability optional, /* cl. 9.9.3.34 O TLV 4-10 IEI=0x58 */ + TrackingAreaId lastVisitedRegisteredTai optional, /* cl. 9.9.3.32 O TV 6 IEI=0x52 */ + DRXparameter drxParameter optional, /* cl. 9.9.3.8 O TV 3 IEI=Ox5c */ + UERadioCapInfoUpdateNeeded ueRadioCapNeeded optional, /* cl. 9.9.3.35 O TV 1 IEI=OxA- */ + EPS_BearerContextStatus epsBearerContextStatus optional, /* cl. 9.9.2.1 O TLV 4 IEI=0x57 */ + MS_NetworkCap msNetworkCapability optional, /* cl. 9.9.3.20 O TLV 4-10 IEI=0x31 */ + LocAreaId oldLai optional, /* cl. 9.9.2.2 O TV 6 IEI=0x13 */ + TMSI_Status tmsiStatus optional, /* cl. 9.9.2.31 O TV 1 IEI=0x9- */ + MS_Clsmk2 msClassmark2 optional, /* cl. 9.9.2.4 O TLV 5 IEI=0x11 */ + MS_Clsmk3 msClassmark3 optional, /* cl. 9.9.2.5 O TLV 2-34 IEI=0x20 */ + CodecList supportedCodecList optional, /* cl. 9.9.2.10 O TLV 5-n IEI=0x40 */ + AdditionalUpdateType addUpdateType optional, /* cl.9.9.3.0B O TV IEI=0xF @sic R5s100135 sic@ */ + VoiceDomainPref voiceDomainPref optional, /* cl.9.9.3.44 O TLV 3 IEI=0x5D @sic R5s110176 Baseline Moving sic@ */ + GUTI_Type oldGUTI_Type optional, /* cl. 9.9.3.45 O TV 1 IEI=0xE- @sic R5s120178 Baseline Moving sic@*/ + DeviceProperties deviceProperties optional, /* cl. 9.9.2.0A O TV 1 IEI=0xD- @sic R5s120178 Baseline Moving sic@*/ + MS_NetworkFeatureSupport msNetworkFeatureSupport optional, /* cl. 9.9.2.0A O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/ + NwkResourceId tmsiBasedNRIContainer optional /* cl. 10.5.5.31 O TLV 4 IEI=0x10 @sic R5s130195 Baseline Moving sic@*/ +}; + +type record UL_NAS_TRANSPORT { /* 24.301 cl. 8.2.30 + Significance: local + Direction: UE to network */ + SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + NAS_MessageContainer nasMessage /* cl. 9.9.3.22 M LV 3-252 */ +}; + +type record DL_GENERIC_NAS_TRANSPORT{ /* 24.301 cl. 8.2.31 + Significance: dual + Direction: network to UE @sic R5s110176 Baseline Moving sic@ */ +SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ +ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ +MessageType messageType, /* cl. 9.8 M V 1 */ +GenericMessageContainerType genericMessageContainerType, /* cl. 9.9.3.42 M V 1 */ +GenericMessageContainer genericMessageContainer, /* cl. 9.9.3.43 M LV-E 3-n */ +AdditionalInformation additionalInformation optional /* cl. 9.9.2.0 O TLV 3-n IEI=65 */ +}; + +type record UL_GENERIC_NAS_TRANSPORT{ /* 24.301 cl. 8.2.32 + Significance: dual + Direction: UE to network @sic R5s110176 Baseline Moving sic@ */ +SecurityHeaderType securityHeaderType, /* cl. 9.3.1 M V 1/2 */ +ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ +MessageType messageType, /* cl. 9.8 M V 1 */ +GenericMessageContainerType genericMessageContainerType, /* cl. 9.9.3.42 M V 1 */ +GenericMessageContainer genericMessageContainer, /* cl. 9.9.3.43 M LV-E 3-n */ +AdditionalInformation additionalInformation optional /* cl. 9.9.2.0 O TLV 3-n IEI=65 */ +}; + +//---------------------------------------------------------------------------- +// EPS session management messages (24.301 cl. 8.3) +//---------------------------------------------------------------------------- + +type record ACTIVATE_DEDICATED_EPS_BEARER_CONTEXT_ACCEPT { /* 24.301 cl. 8.3.1 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27*/ +}; + +type record ACTIVATE_DEDICATED_EPS_BEARER_CONTEXT_REJECT { /* 24.301 cl. 8.3.2 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ESM_Cause esmCause, /* cl. 9.9.4.4 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ +}; + +type record ACTIVATE_DEDICATED_EPS_BEARER_CONTEXT_REQUEST { /* 24.301 cl. 8.3.3 + Significance: dual + Direction: network to UE */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.9.2.9 M V 1/2 */ + LinkedEpsBearerIdentity linkedEpsBearerId, /* cl. 9.9.4.6 M V 1/2 */ + EPS_QualityOfService epsQos, /* cl. 9.9.4.3 M LV 2-14 */ + TrafficFlowTemplate tft, /* cl. 9.9.4.16 M LV 2-256 */ + TransactionIdentifier transactionIdentifier optional, /* cl. 9.9.4.17 O TLV 3-4 IEI=0x5d */ + QualityOfService negotiatedQos optional, /* cl. 9.9.4.12 O TLV 14-22 IEI=0x30 */ + LLC_SAPI negotiatedLlcSapi optional, /* cl. 9.9.4.7 O TV 2 IEI=0x32 */ + RadioPriority radioPriority optional, /* cl. 9.9.4.13 O TV 1 IEI=0x8- */ + PacketFlowIdentifier packetFlowIdentifier optional, /* cl. 9.9.4.8 O TLV 3 IEI=0x34 */ + ProtocolConfigOptions protocolConfigurationOptions optional /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ +}; + +type record ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_ACCEPT { /* 24.301 cl. 8.3.4 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ +}; + +type record ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REJECT { /* 24.301 cl. 8.3.5 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ESM_Cause esmCause, /* cl. 9.9.4.4 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ +}; + +type record ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REQUEST { /* 24.301 cl. 8.3.6 + Significance: dual + Direction: network to UE */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + EPS_QualityOfService epsQos, /* cl. 9.9.4.3 M LV 2-14 */ + AccessPointName accessPointName, /* cl. 9.9.4.1 M LV 2-101 */ + PDN_Address pdnAdress, /* cl. 9.9.4.9 M LV 6-14 */ + TransactionIdentifier transactionIdentifier optional, /* cl. 9.9.4.17 O TLV 3-4 IEI=0x5d */ + QualityOfService negotiatedQos optional, /* cl. 9.9.4.12 O TLV 14-22 IEI=0x30 */ + LLC_SAPI negotiatedLlcSapi optional, /* cl. 9.9.4.7 O TV 2 IEI=0x32 */ + RadioPriority radioPriority optional, /* cl. 9.9.4.13 O TV 1 IEI=0x8- */ + PacketFlowIdentifier packetFlowIdentifier optional, /* cl. 9.9.4.8 O TLV 3 IEI=0x34 */ + APN_AMBR apnAggMaxBitRate optional, /* cl. 9.9.4.2 O TLV 4-8 IEI=0x5e */ + ESM_Cause esmCause optional, /* cl. 9.9.4.4 O TV 2 IEI=0x58 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ + ConnectivityType connectivityType optional /* cl. 9.9.2.0A O TV 1 IEI=0xB- @sic R5s120178 Baseline Moving sic@*/ +}; + +type record BEARER_RESOURCE_ALLOCATION_REJECT { /* 24.301 cl. 8.3.7 + Significance: dual + Direction: network to UE */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ESM_Cause esmCause, /* cl. 9.9.4.4 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ + GPRS_Timer3 t3396 optional /* cl. 9.9.3.16B O TLV 3 IEI=0x37 @sic R5s120178 Baseline Moving sic@*/ +}; + +type record BEARER_RESOURCE_ALLOCATION_REQUEST { /* 24.301 cl. 8.3.8 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.9.2.9 M V 1/2 */ + LinkedEpsBearerIdentity linkedEpsBearerId, /* cl. 9.9.4.6 M V 1/2 */ + TrafficFlowTemplate trafficFlowAgg, /* cl. 9.9.4.15 M LV 2-256 */ + EPS_QualityOfService requiredTrafficFlowQoS, /* cl. 9.9.4.3 M LV 2-14 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ + DeviceProperties deviceProperties optional /* cl. 9.9.2.0A O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/ +}; + +type record BEARER_RESOURCE_MODIFICATION_REJECT { /* 24.301 cl. 8.3.9 + Significance: dual + Direction: network to UE */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ESM_Cause esmCause, /* cl. 9.9.4.4 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ + GPRS_Timer3 t3396 optional /* cl. 9.9.3.16B O TLV 3 IEI=0x37 @sic R5s120178 Baseline Moving sic@*/ +}; + +type record BEARER_RESOURCE_MODIFICATION_REQUEST { /* 24.301 cl. 8.3.10 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.9.2.9 M V 1/2 */ + LinkedEpsBearerIdentity epsBearerIdentityforPacketFilter, /* cl. 9.9.4.6 M V 1/2 */ + TrafficFlowTemplate trafficFlowAgg, /* cl. 9.9.4.15 M LV 2-256 */ + EPS_QualityOfService requiredTrafficFlowQoS optional, /* cl. 9.9.4.3 O TLV 3-15 IEI=0x5b @sic R5s100692 sic@ */ + ESM_Cause esmCause optional, /* cl. 9.9.4.4 O TV 2 IEI=0x58 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ + DeviceProperties deviceProperties optional /* cl. 9.9.2.0A O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/ +}; + +type record DEACTIVATE_EPS_BEARER_CONTEXT_ACCEPT { /* 24.301 cl. 8.3.11 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ +}; + +type record DEACTIVATE_EPS_BEARER_CONTEXT_REQUEST { /* 24.301 cl. 8.3.12 + Significance: dual + Direction: network to UE */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ESM_Cause esmCause, /* cl. 9.9.4.4 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.8 O TLV 3-253 IEI=0x27 */ + GPRS_Timer3 t3396Value optional /* cl. 10.5.7.4a O TLV 3 IEI=0x37 @sic R5s130195 Baseline Moving sic@*/ +}; + +type record ESM_INFORMATION_REQUEST { /* 24.301 cl. 8.3.13 + Significance: dual + Direction: network to UE */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType /* cl. 9.8 M V 1 */ +}; + +type record ESM_INFORMATION_RESPONSE { /* 24.301 cl. 8.3.14 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + AccessPointName accessPointName optional, /* cl. 9.9.4.1 O TLV 3-102 IEI=0x28 */ + ProtocolConfigOptions protocolConfigurationOptions optional /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ +}; + +type record ESM_STATUS { /* 24.301 cl. 8.3.15 + Significance: dual + Direction: both */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ESM_Cause esmCause /* cl. 9.9.4.4 M V 1 */ +}; + +type record MODIFY_EPS_BEARER_CONTEXT_ACCEPT { /* 24.301 cl. 8.3.16 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ +}; + +type record MODIFY_EPS_BEARER_CONTEXT_REJECT { /* 24.301 cl. 8.3.17 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ESM_Cause esmCause, /* cl. 9.9.4.4 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ +}; + +type record MODIFY_EPS_BEARER_CONTEXT_REQUEST { /* 24.301 cl. 8.3.18 + Significance: dual + Direction: network to UE */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + EPS_QualityOfService newEPSQos optional, /* cl. 9.9.4.3 O TLV 3-15 IEI=0x5b */ + TrafficFlowTemplate tft optional, /* cl. 9.9.4.16 O TLV 3-257 IEI=0x36 */ + QualityOfService newQos optional, /* cl. 9.9.4.12 O TLV 14-22 IEI=0x30 */ + LLC_SAPI negotiatedLlcSapi optional, /* cl. 9.9.4.7 O TV 2 IEI=0x32 */ + RadioPriority radioPriority optional, /* cl. 9.9.4.13 O TV 1 IEI=0x8- */ + PacketFlowIdentifier packetFlowIdentifier optional, /* cl. 9.9.4.5 O TLV 3 IEI=0x34 */ + APN_AMBR apnAggMaxBitRate optional, /* cl. 9.9.4.2 O TLV 4-8 IEI=0x5e */ + ProtocolConfigOptions protocolConfigurationOptions optional /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ +}; + + +type record NOTIFICATION { /* 24.301 cl. 8.3.18A + Significance: local + Direction: network to UE @sic R5s110176 Baseline Moving sic@ */ + + + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + NotificationIndicator notificationIndicator /* cl. 9.9.4.7A M LV 2 */ +}; + + +type record PDN_CONNECTIVITY_REJECT { /* 24.301 cl. 8.3.19 + Significance: dual + Direction: network to UE */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ESM_Cause esmCause, /* cl. 9.9.4.4 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ + GPRS_Timer3 t3396 optional /* cl. 9.9.3.16B O TLV 3 IEI=0x37 @sic R5s120178 Baseline Moving sic@*/ +}; + +type record PDN_CONNECTIVITY_REQUEST { /* 24.301 cl. 8.3.20 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + PDN_Type pdnType, /* cl. 9.9.4.10 M V 1/2 */ + Request_Type requestType, /* cl. 9.9.4.14 M V 1/2 */ + ESM_InfoTransferFlag esmInfoTransferFlag optional, /* cl. 9.9.4.5 O TV 1 IEI=0xD- */ + AccessPointName accessPointName optional, /* cl. 9.9.4.1 O TLV 3-102 IEI=0x28 */ + ProtocolConfigOptions protocolConfigurationOptions optional, /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ + DeviceProperties deviceProperties optional /* cl. 9.9.2.0A O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/ +}; + +type record PDN_DISCONNECT_REJECT { /* 24.301 cl. 8.3.21 + Significance: dual + Direction: network to UE */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + ESM_Cause esmCause, /* cl. 9.9.4.2 M V 1 */ + ProtocolConfigOptions protocolConfigurationOptions optional /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ +}; + +type record PDN_DISCONNECT_REQUEST { /* 24.301 cl. 8.3.22 + Significance: dual + Direction: UE to network */ + EPS_BearerIdentity epsBearerId, /* cl. 9.3.2 M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* cl. 9.2 M V 1/2 */ + ProcedureTransactionIdentifier procedureTransactionIdentifier, /* cl. 9.4 M V 1 */ + MessageType messageType, /* cl. 9.8 M V 1 */ + SpareHalfOctet spareHalfOctet, /* cl. 9.9.2.9 M V 1/2 */ + LinkedEpsBearerIdentity linkedEpsBearerId, /* cl. 9.9.4.6 M V 1/2 */ + ProtocolConfigOptions protocolConfigurationOptions optional /* cl. 9.9.4.11 O TLV 3-253 IEI=0x27 */ +}; + +//---------------------------------------------------------------------------- +// Common Info Elements (24.301 cl. 9.9.2) +//---------------------------------------------------------------------------- + +type record AdditionalInformation{ /* 24.301 cl. 9.9.2.0 @sic R5s110176 Baseline Moving sic@ */ + IEI8_Type iei, + Type4Length_Type iel, + octetstring additionalInfo +}; +type record EPS_BearerContextStatus { /* 24.301 cl. 9.9.2.1 */ + IEI8_Type iei optional, /* present in case of TV or TLV; omit in case of V */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B3_Type ebi5_7, /* EBI(5)- EBI(7) */ + B5_Type spare, /* EBI(0)- EBI(4) are spare and shall be coded as zero*/ + B8_Type ebi8_15 /* EBI(8)- EBI(15)*/ +}; + +type record NAS_SecurityParametersfromEUTRA { /* 24.301 cl. 9.9.2.6 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + B4_Type spare, /* 8-5 are spare and shall be coded as zero */ + B4_Type dl_nasCountValue /* contains the 4 least significant bits of the binary representation of the downlink NAS COUNT value applicable when + this information element is sent*/ +}; + +type record NAS_SecurityParameterstoEUTRA { /* 24.301 cl. 9.9.2.7 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + O4_Type noncevalue, /*NonceMME value */ + B1_Type spare1, /* are spare and shall be coded as zero */ + B3_Type cipherAlgorithmType, /* type of ciphering algorithm in the NAS security algorithms information element */ + B1_Type spare2, /* are spare and shall be coded as zero */ + B3_Type integrityAlgorithmType, /* as the type of integrity protection algorithm */ + B4_Type spare3, /* are spare and shall be coded as zero*/ + B1_Type tsc, /* type of security context flag (TSC) */ + B3_Type naskeysetid /* Nas key set identifier*/ + }; + + +//---------------------------------------------------------------------------- +// EPS Mobility Management (EMM) information elements (24.301 cl. 9.9.3) +//---------------------------------------------------------------------------- + +type record AuthenticationResponseParameter { /* 24.301 cl. 9.9.3.4 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B32_128_Type res /* 4..16 octets */ +}; + +type record CSFBResponse { // 24.301 cl. 9.9.3.5 + IEI4_Type iei, // currently only used as TV + B1_Type spare, + B3_Type csfbValue //0 = CS fallback rejected, 1 = accepted by UE +}; + +type record EMM_Cause { /* 24.301 cl. 9.9.3.9 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + NAS_CauseValue_Type causeValue +}; + +type record EPS_AttachResult { /* 24.301 cl. 9.9.3.10 */ + // IEI is always skipped + B1_Type spare, + NAS_AttDetValue_Type resultValue +}; + +type record EPS_AttachType { /* 24.301 cl. 9.9.3.11 */ + // IEI is always skipped + B1_Type spare, + NAS_AttDetValue_Type typeValue +}; + +type record EPS_NetworkFeatureSupport { /* 24.301 cl 9.9.3.12A @sic R5s100135 sic@ */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B2_Type spareBits, /* @sic R5s110176 Baseline Moving sic@ */ + B1_Type esrps, /* @sic R5s120178 Baseline Moving sic@ */ + B2_Type csLCS, /* @sic R5s110176, R5s120178 Baseline Moving sic@ */ + B1_Type epcLCS, /* @sic R5s110176 Baseline Moving sic@ */ + B1_Type emcBS, /* @sic R5s110176, R5s120178 Baseline Moving sic@ */ + B1_Type imsVoPS +}; + +type record PagingIdentity { /* 24.301 cl. 9.9.93.25A @sic R5s100135 sic@ */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + B7_Type spareBits, + B1_Type pagingId +}; + +type record AdditionalUpdateResult { /* 24.301 cl. 9.9.3.0A @sic R5s100135 sic@ */ + IEI4_Type iei, // currently only used as TV + B2_Type spare2, + B2_Type addUpdateResultValue +}; + +type record EPS_UpdateResult { /* 24.301 cl. 9.9.3.13 */ + // IEI is always skipped + B1_Type spare, + NAS_AttDetValue_Type resultValue +}; + +type record EPS_UpdateType { /* 24.301 cl. 9.9.3.14 */ + // IEI is always skipped + B1_Type activeFlag, + NAS_AttDetValue_Type typeValue +}; + +type record ESM_MessageContainer { /* 24.301 cl. 9.9.3.15 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type6Length_Type iel, + octetstring esmPdu /* ESM PDU without NAS security header; + type is FFS */ +}; + +type record KSIandSN { /* 24.301 cl. 9.9.3.19 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + B3_Type ksi, + B5_Type sn +}; + +type record NAS_KeySetIdentifier { /* 24.301 cl. 9.9.3.21 */ + IEI4_Type iei optional, /* present in case of TV; omit in case of V */ + B1_Type tsc, // Type of security context: 0 = cached, 1 = mapped + NAS_KsiValue nasKeySetId +}; + +type record NAS_MessageContainer { // 24.301 cl. 9.9.3.22 + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel, + octetstring smsmessage length(2..251) /* can contain an SMS message (i.e. CP-DATA, CP-ACK or CP-ERROR) + as defined in subclause 7.2 in 3GPP TS 24.011 */ +}; + +type record NAS_SecurityAlgorithms { /* 24.301 cl. 9.9.3.23 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + B1_Type spare1, + B3_Type cipheringType, /* Type of ciphering algorithm */ + B1_Type spare2, + B3_Type integrityType /* Type of integrity protection algorithm */ +}; + +type record Nonce { /* 24.301 cl. 9.9.3.25 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + O4_Type nonceValue +}; + +type record EPS_ServiceType { // 24.301 cl. 9.9.3.27 + IEI4_Type iei optional, /* present in case of TV; omit in case of V */ + EPS_ServiceTypeValue serviceValue +}; + +type record ShortMAC { /* 24.301 cl. 9.9.3.28 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + B16_Type macValue +}; + +type record UERadioCapInfoUpdateNeeded { // 24.301 cl. 9.9.3.35 + IEI4_Type iei optional, /* present in case of TV; omit in case of V */ + B3_Type spare, + B1_Type urcUpdate +}; + +type record UE_SecurityCapability { /* 24.301 cl. 9.9.3.36 */ + Type4Length_Type iel, // @sic R5s10035 iei never used, so removed sic@ + O1_Type eeaCap, // @sic R5s100135 sic@ + O1_Type eiaCap, // @sic R5s100135 sic@ + O1_Type ueaCap optional, // @sic R5s100135 sic@ + O1_Type uiaCap optional, // @sic R5s100135 sic@ + O1_Type geaCap optional // @sic R5s100135 sic@ +}; + +type record CLI { /* 24.301 cl. 9.9.3.38 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel, + octetstring cliValue length(1..12) /* The coding of the CLI value part is the same as for octets 3 to + 14 of the Calling party BCD number information element defined + in subclause 10.5.4.9 of 3GPP TS 24.008 */ +}; + +type record SsCode { /* 24.301 cl. 9.9.3.39 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + O1_Type ssCodeValue /*The coding of the SS Code value is given in subclause 17.7.5 of 3GPP TS 29.002 */ +}; + +type record LcsIndicator { /* 24.301 cl. 9.9.3.40 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + O1_Type lcsIndicator +}; + +type record LcsClientIdentity { /* 24.301 cl. 9.9.3.41 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel, + octetstring lcsClientIdentityValue length(1..255) /* The coding of the value part of the LCS client + identity is given in subclause 17.7.13 of 3GPP TS 29.002 */ +}; + +type B8_Type GenericMessageContainerType; /* 24.301 cl. 9.9.3.42 M V 1 @sic R5s110176 Baseline Moving sic@ */ + +type record GenericMessageContainer{ /* 24.301 cl. 9.9.3.43 M LV-E 3-n @sic R5s110176 Baseline Moving sic@*/ + IEI8_Type iei optional, + Type6Length_Type iel, + octetstring genericMsgContainerValue +}; + +type record GUTI_Type{ /* 24.301 cl. 9.9.3.45 @sic R5s110178 Baseline Moving sic@*/ + IEI4_Type iei, + B3_Type spare, + B1_Type gutiType +}; + +//---------------------------------------------------------------------------- +// EPS Session Management (ESM) information elements (24.301 cl. 9.9.4) +//---------------------------------------------------------------------------- + +type record APN_AMBR { // 24.301 cl. 9.9.4.2 + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B8_Type downlink, + B8_Type uplink, + B8_Type downlinkExt optional, + B8_Type uplinkExt optional, + B8_Type downlinkExt2 optional, + B8_Type uplinkExt2 optional +}; + +type record EPS_QualityOfService { /* 24.301 cl. 9.9.4.3 */ + IEI8_Type iei optional, + Type4Length_Type iel, + B8_Type qci, + B8_Type maxBitRateUl optional, + B8_Type maxBitRateDl optional, + B8_Type guaranteedBitRateUl optional, + B8_Type guaranteedBitRateDl optional, + B8_Type maxBitRateUlExt optional, + B8_Type maxBitRateDlExt optional, + B8_Type guaranteedBitRateUlExt optional, + B8_Type guaranteedBitRateDlExt optional, + B8_Type maxBitRateDL_Ext2 optional, // @sic R5s1300195 Baseline Moving sic@ + B8_Type guaranteedBitRateDL_Ext2 optional, // @sic R5s1300195 Baseline Moving sic@ + B8_Type maxBitRateUL_Ext2 optional, // @sic R5s1300195 Baseline Moving sic@ + B8_Type guaranteedBitRateUL_Ext2 optional // @sic R5s1300195 Baseline Moving sic@ +}; + +type record ESM_Cause { /* 24.301 cl. 9.9.4.4 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + NAS_CauseValue_Type causeValue +}; + +type record ESM_InfoTransferFlag { /* 24.301 cl. 9.9.4.5 */ + IEI4_Type iei optional, + B3_Type spare, + B1_Type eitValue +}; + +type record LinkedEpsBearerIdentity { /* 24.301 cl. 9.9.4.6 */ + // IEI is always skipped + B4_Type idValue +}; + +type record NotificationIndicator{ /* 24.301 cl. 9.9.4.7A @sic R5s110176 Baseline Moving sic@ */ + IEI8_Type iei optional, + Type4Length_Type iel, + B8_Type notificationInd +}; + +type record PDN_Type { /* 24.301 cl. 9.9.4.10 */ + // IEI is always skipped + B1_Type spare, + PdnTypeValue typeValue +}; + +type record TransactionIdentifier { /* 24.301 cl. 9.9.4.17 */ + IEI8_Type iei optional, + Type4Length_Type iel, + B1_Type tiFlag, + B3_Type tiValue, + B4_Type spare, + B1_Type ext optional, // @sic R5s110176 sic@ + B7_Type tiValue_2 optional // @sic R5s110176 sic@ +}; + + type O8_Type EllipsoidPointWithAltitude_Type; + type O3_Type HorizontalVelocity_Type; + type O3_Type Gnss_TOD_msec_Type; + + // ============================================================================= + // Update UE Location Information + // 3G TS 36.509 cl. 6.12 + // Direction: SS to UE + // ----------------------------------------------------------------------------- + type record UPDATE_UE_LOCATION_INFORMATION { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType, /* M V 1 */ + EllipsoidPointWithAltitude_Type ellipsoidPointWithAltitude, /* M V 8 */ + HorizontalVelocity_Type horizontalVelocity, /* M V 3 */ + Gnss_TOD_msec_Type gnss_TOD_msec /* M V 3 */ + }; + +} with { encode "NAS Types"} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_ASP_CDMA2000TunnellingDefs.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_ASP_CDMA2000TunnellingDefs.ttcn new file mode 100644 index 0000000..bc57188 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_ASP_CDMA2000TunnellingDefs.ttcn @@ -0,0 +1,49 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-06-07 22:51:07 +0200 (Fri, 07 Jun 2013) $ +// $Rev: 8820 $ +/******************************************************************************/ + +module EUTRA_ASP_CDMA2000TunnellingDefs { + /* ASP definitions for tunnelling of CDMA2000 messages e.g. during CDMA2000 pre-registration */ + + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + type octetstring TunneledInfoCDMA2000; + type ULHandoverPreparationTransfer_r8_IEs.meid MEID_Type; + + type record UL_TunneledInfoCDMA2000 { + TunneledInfoCDMA2000 Msg, /* OCTET STRING */ + MEID_Type Meid optional /* ASN.1 type: BIT STRING (SIZE (56)) + * used to tunnel meid received from UE in ULHandoverPreparationTransfer for 1xRTT, + * not present other wise*/ + } + + type record CDMA2000_UL_Container_Type { + CDMA2000_Type CDMA2000Type, /* ASN.1 type: type1XRTT, typeHRPD */ + UL_TunneledInfoCDMA2000 UL_Msg + }; + + type record DL_TunneledInfoCDMA2000 { + TunneledInfoCDMA2000 Msg /* OCTET STRING */ + } + + type record CDMA2000_DL_Container_Type { + CDMA2000_Type CDMA2000Type, /* ASN.1 type: type1XRTT, typeHRPD */ + DL_TunneledInfoCDMA2000 DL_Msg /* OCTET STRING */ + }; + + type CDMA2000_UL_Container_Type CDMA2000_MSG_REQ; + + type CDMA2000_DL_Container_Type CDMA2000_MSG_IND; + + type port CDMA2000_TUNNELLING_PORT message { /* EUTRA PTC: Port to deal with tunnelling of CDMA2000 messages */ + out CDMA2000_MSG_REQ; + in CDMA2000_MSG_IND; + }; + +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_ASP_DrbDefs.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_ASP_DrbDefs.ttcn new file mode 100644 index 0000000..7e41724 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_ASP_DrbDefs.ttcn @@ -0,0 +1,624 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-08-27 17:48:26 +0200 (Tue, 27 Aug 2013) $ +// $Rev: 9461 $ +/******************************************************************************/ + +module EUTRA_ASP_DrbDefs { + //**************************************************************************** + // ASP interface for DRBs + //**************************************************************************** + + import from CommonDefs all; + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_CommonDefs all; + + //**************************************************************************** + + group PDU_TypeDefs { + + group MAC_PDU { + + //**************************************************************************** + // MAC PDU definitions + //---------------------------------------------------------------------------- + // MAC PDU SubHeader (TS 36.321, clause 6.1.2) + + type record MAC_PDU_Length_Type { /* NOTE: + * since F and L field are either both present or both omitted they are put into this record; + * to allow homogeneous (direct) encoding the PDU length is not defined as union; + * TTCN-3 does allow length restrictions to one lenght or a range of length but not to two specific lengthes; + * further restriction may be achieved by appropriate templates (parameter either 7 or 15 bit) */ + B1_Type Format, /* F: + * The Format field indicates the size of the Length field as indicated in table 6.2.1-3. + * There is one F field per MAC PDU subheader except for the last subheader and sub-headers corresponding to fixed-sized MAC control elements. The size of the F field is 1 bit. + * If the size of the MAC SDU or MAC control element is less than 128 bytes, the UE shall set the value of the F field to 0, otherwise the UE shall set it to 1 */ + B7_15_Type Value /* L: + * The Length field indicates the length of the corresponding MAC SDU or MAC control element in bytes. + * There is one L field per MAC PDU subheader except for the last subheader and sub-headers corresponding to fixed-sized MAC control elements. + * The size of the L field is indicated by the F field */ + }; + + type record MAC_PDU_SubHeader_Type{ + B2_Type Reserved, /* Reserved bits */ + B1_Type Extension, /* E: + * The Extension field is a flag indicating if more fields are present in the MAC header or not. + * The E field is set to "1" to indicate another set of at least R/R/E/LCID fields. + * The E field is set to "0" to indicate that either a MAC SDU, a MAC control element or padding starts at the next byte */ + B5_Type LCID, /* LCID: + * The Logical Channel ID field identifies the logical channel instance of the corresponding MAC SDU or the type of the corresponding MAC control element or padding as described in tables 6.2.1-1 and 6.2.1-2 for the DL and UL-SCH respectively. + * There is one LCID field for each MAC SDU, MAC control element or padding included in the MAC PDU. The LCID field size is 5 bits; + * NOTE: In case of DRX command the sub-header corresponds to a control element of length zero (i.e. there is no control element) */ + MAC_PDU_Length_Type Length optional + }; + + type record of MAC_PDU_SubHeader_Type MAC_Header_Type; + + //---------------------------------------------------------------------------- + // MAC PDU Payload (TS 36.321, clause 6.1.2): MAC SDU and MAC control elements (cl. 6.1.3) + // NOTE: Rather than in C-ASPs all fields are coded as bitstrings to allow direct encoding + + type record MAC_CTRL_ShortBSR_Type { /* TS 36.321, clause 6.1.3.1 */ + B2_Type LCG, + B6_Type Value + }; + + type record MAC_CTRL_LongBSR_Type { /* TS 36.321, clause 6.1.3.1 */ + B6_Type Value_LCG1, + B6_Type Value_LCG2, + B6_Type Value_LCG3, + B6_Type Value_LCG4 + }; + + type C_RNTI MAC_CTRL_C_RNTI_Type; /* TS 36.321, clause 6.1.3.2 */ + + /* DRX Command MAC Control Element: zero bits TS 36.321, clause 6.1.3.3 + * (DRX command is coded with LCID='11110'B acc. to Table 6.2.1-1); + * NOTE: + * zero bits cannot be detected by a decoder and information is available in the header + * => possible definition of a dummy element seems to redundant */ + + type ContentionResolutionId_Type MAC_CTRL_ContentionResolutionId_Type; /* TS 36.321, clause 6.1.3.4 + * fix 48-bit size; + * consists of a single field defined UE Contention Resolution Identity + * (uplink CCCH SDU transmitted by MAC) */ + + type B8_Type MAC_CTRL_TimingAdvance_Type; /* TS 36.321, clause 6.1.3.5 + * indicates the amount of timing adjustment in 0.5 ms that the UE has to apply; + * the length of the field is [8] bits */ + + type record MAC_CTRL_PowerHeadRoom_Type { /* TS 36.321, clause 6.1.3.6 */ + B2_Type Reserved, + B6_Type Value + }; + + type set MAC_CTRL_ElementList_Type { + /* NOTE 1: + * for simplicication UL and DL are not distiguished even though the control elements are either UL or DL + * NOTE 2: + * type is defined as set: the ordering is not signifficant; + * nevertheless the ordering is well-defined by the sub-headers; + * for codec implementations it is in any case necessary to evaluate the sub-header information in order to encode/decode the payload */ + MAC_CTRL_ShortBSR_Type ShortBSR optional, /* UL only */ + MAC_CTRL_LongBSR_Type LongBSR optional, /* UL only */ + MAC_CTRL_C_RNTI_Type C_RNTI optional, /* UL only */ + // DRX command CTRL Elem is 0 bits length + MAC_CTRL_ContentionResolutionId_Type ContentionResolutionID optional, /* DL only */ + MAC_CTRL_TimingAdvance_Type TimingAdvance optional, /* DL only */ + MAC_CTRL_PowerHeadRoom_Type PowerHeadRoom optional, /* UL only */ + // Introduced for CA + MAC_CTRL_ScellActDeact_Type ScellActDeact optional, /* DL only */ + MAC_CTRL_ExtPowerHeadRoom_Type ExtPowerHeadRoom optional /* UL only. Only one among PowerHeadroom and ExtPowerHeadroom may be present */ + }; + + //---------------------------------------------------------------------------- + // MAC PDU: + + type octetstring MAC_SDU_Type; + type record of MAC_SDU_Type MAC_SDUList_Type; + + type record MAC_PDU_Type { + MAC_Header_Type Header, /* list of MAC PDU SubHeaders corresponding to MAC control elements and MAC SDUs */ + MAC_CTRL_ElementList_Type CtrlElementList optional, /* Mac control elements; + * acc. to TS 36.321, clause 6.1.2 "MAC control elements, are always placed before any MAC SDU." */ + MAC_SDUList_Type SduList optional, /* MAC SDUs, which can typically be RLC PDUs */ + octetstring Padding optional /* Octet aligned Padding if more than or equal to 2 bytes */ + }; + + type record of MAC_PDU_Type MAC_PDUList_Type; + + } // End sub-group MAC_PDU + + //**************************************************************************** + // RLC PDU definition: TM + //---------------------------------------------------------------------------- + + group RLC_PDU { + + //**************************************************************************** + + group Common { /* RLC PDU definition: common AM/UM field definitions */ + + type B2_Type RLC_FramingInfo_Type; /* 00 - + * First byte of the Data field corresponds to the first byte of a RLC SDU. + * Last byte of the Data field corresponds to the last byte of a RLC SDU. + * 01 - + * First byte of the Data field corresponds to the first byte of a RLC SDU. + * Last byte of the Data field does not correspond to the last byte of a RLC SDU. + * 10 - + * First byte of the Data field does not correspond to the first byte of a RLC SDU. + * Last byte of the Data field corresponds to the last byte of a RLC SDU. + * 11 - + * First byte of the Data field does not correspond to the first byte of a RLC SDU. + * Last byte of the Data field does not correspond to the last byte of a RLC SDU. */ + + type record RLC_LengthIndicator_Type{ + B1_Type Extension, /* 0 - Data field follows from the octet following the LI field following this E field + * 1 - A set of E field and LI field follows from the bit following the LI field following this E field */ + B11_Type LengthIndicator /* Length Indicator */ + }; + type record of RLC_LengthIndicator_Type + RLC_LI_List_Type; + + type record RLC_PDU_Header_FlexPart_Type { /* Flexible part of the header with a number of K LIs */ + RLC_LI_List_Type LengthIndicator, /* List of E, LI fields */ + B4_Type Padding optional /* optional 4 bit padding present in case of odd number of LI's */ + }; + + } // End sub-sub-group Common + + //**************************************************************************** + + group TM_Data { /* RLC PDU definition: UM (TS 36.322, clause 6.2.1.2) */ + + type octetstring RLC_TMD_PDU_Type; /* TS 36.322, clause 6.2.1.2 */ + + } // End sub-sub-group + + //**************************************************************************** + + group UM_Data { /* RLC PDU definition: UM (TS 36.322, clause 6.2.1.3) + * NOTE: + * To allow direct encoding the definition for RLC UM Data PDU is split into data PDU with 5/10 bit sequence number */ + + type record RLC_UMD_Header_FixPartShortSN_Type { /* TS 36.322, clause 6.2.1.3 Figure 6.2.1.3-1, 6.2.1.3-3 and 6.2.1.3-4); + one octet */ + RLC_FramingInfo_Type FramingInfo, /* 2 bits FI */ + B1_Type Extension, /* 1 bit E */ + B5_Type SequenceNumber /* 5 bits SN */ + }; + + type record RLC_UMD_Header_FixPartLongSN_Type { /* TS 36.322, clause 6.2.1.3 Figure 6.2.1.3-2, 6.2.1.3-5 and 6.2.1.3-6); + two octets */ + B3_Type Reserved, /* 3 bits reserved */ + RLC_FramingInfo_Type FramingInfo, /* 2 bits FI */ + B1_Type Extension, /* 1 bit E */ + B10_Type SequenceNumber /* 10 bits SN */ + }; + + type record RLC_UMD_HeaderShortSN_Type { + RLC_UMD_Header_FixPartShortSN_Type FixPart, + RLC_PDU_Header_FlexPart_Type FlexPart optional + }; + + type record RLC_UMD_HeaderLongSN_Type { + RLC_UMD_Header_FixPartLongSN_Type FixPart, + RLC_PDU_Header_FlexPart_Type FlexPart optional + }; + + type octetstring RLC_DataField_Type; /* restrictions imposed from LI size of 11 bits is not applicable when the LI's are not present */ + type record of RLC_DataField_Type + RLC_DataFieldList_Type; /* One to one correspondence with sub headers (LengthIndicatorList_Type) */ + + + // UMD PDU definitions: + + type record RLC_UMD_PDU_ShortSN_Type { + RLC_UMD_HeaderShortSN_Type Header, + RLC_DataFieldList_Type Data + }; + + type record RLC_UMD_PDU_LongSN_Type { + RLC_UMD_HeaderLongSN_Type Header, + RLC_DataFieldList_Type Data + }; + + type union RLC_UMD_PDU_Type { + RLC_UMD_PDU_ShortSN_Type ShortSN, + RLC_UMD_PDU_LongSN_Type LongSN + }; + + } // End sub-sub-group UM_Data + + //**************************************************************************** + + group AM_Data { /* RLC PDU definition: AM (TS 36.322, clause 6.2.1.4 and 6.2.1.5) */ + + type record RLC_AMD_Header_FixPart_Type { /* TS 36.322, clause 6.2.1.4 Figure 6.2.1.4-1, 6.2.1.4-2 and 6.2.1.4-3); + 2 or 4 octets */ + B1_Type D_C, /* 0 - Control PDU + 1 - Data PDU */ + B1_Type ReSeg, /* 0 - AMD PDU + 1 - AMD PDU segment */ + B1_Type Poll, /* 0 - Status report not requested + 1 - Status report is requested */ + RLC_FramingInfo_Type FramingInfo, /* 2 bit FI */ + B1_Type Extension, /* 1 bit E */ + B10_Type SN /* Sequence numbers */ + }; + + type record RLC_AMD_Header_SegmentPart_Type { /* AMD PDU segment related info in PDU header acc. TS 36.322, clause 6.2.1.5 */ + B1_Type LastSegmentFlag, /* 0 - Last byte of the AMD PDU segment does not correspond to the last byte of an AMD PDU + * 1 - Last byte of the AMD PDU segment corresponds to the last byte of an AMD PDU */ + B15_Type SegOffset /* The SO field indicates the position of the AMD PDU segment in bytes within the original AMD PDU. + * Specifically, the SO field indicates the position within the Data field of the original AMD PDU + * to which the first byte of the Data field of the AMD PDU segment corresponds to. */ + }; + + type record RLC_AMD_Header_Type { + RLC_AMD_Header_FixPart_Type FixPart, + RLC_AMD_Header_SegmentPart_Type SegmentPart optional, /* present in case of AMD Seg PDU only */ + RLC_PDU_Header_FlexPart_Type FlexPart optional + }; + + type record RLC_AMD_PDU_Type { + RLC_AMD_Header_Type Header, + RLC_DataFieldList_Type Data + }; + + } // End sub-sub-group AM_Data + + //**************************************************************************** + + group AM_Status { /* AM Status PDU (TS 36.322, clause 6.2.1.6) */ + + type record RLC_Status_ACK_Type { + B10_Type ACK_SN, /* Acknowledgement SN (TS 36.322, clause 6.2.2.14) */ + B1_Type Extn1 /* 0 - a set of NACK_SN, E1 and E2 does not follow. + * 1 - a set of NACK_SN, E1 and E2 follows. */ + }; + + type record RLC_Status_SegOffset_Type { + B15_Type Start, /* SOstart field indicates the position of the first byte of the portion + * of the AMD PDU in bytes within the Data field of the AMD PDU */ + B15_Type End /* SOend field indicates the position of the last byte of the portion of the AMD PDU in bytes + * within the Data field of the AMD PDU. The special SOend value '111111111111111'B is used to + * indicate that the missing portion of the AMD PDU includes all bytes to the last byte of the AMD PDU */ + }; + + type record RLC_Status_NACK_Type { + B10_Type NACK_SN, + B1_Type Extn1, /* 0 - A set of NACK_SN, E1 and E2 does not follow. + * 1 - A set of NACK_SN, E1 and E2 follows. */ + B1_Type Extn2, /* 0 - A set of SOstart and SOend does not follow for this NACK_SN. + * 1 - A set of SOstart and SOend follows for this NACK_SN. */ + RLC_Status_SegOffset_Type SO optional + }; + + type record of RLC_Status_NACK_Type + RLC_Status_NACK_List_Type; + + type bitstring RLC_Status_Padding_Type length (1..7); /* NOTE: + * in TTCN-3 length restriction cannot be done inline in record definition + * => explicit type definition necessary */ + type record RLC_AM_StatusPDU_Type { + B1_Type D_C, /* 0 - Control PDU + * 1 - Data PDU */ + B3_Type Type, /* 000 - STATUS PDU + * 001..111 - Reserved (=> PDU to be discarded by the receiving entity for this release of the protocol) */ + RLC_Status_ACK_Type Ack, /* ACK_SN and E1 bit */ + RLC_Status_NACK_List_Type NackList optional, /* presence depends on Extn1 bit of Ack filed (RLC_Status_ACK_Type) */ + RLC_Status_Padding_Type Padding optional /* 1..7 bit padding if needed for octet alignment */ + }; + + } // End sub-sub-group AM_Status + + //**************************************************************************** + + type enumerated RLC_Mode_Type { // RLC modes, see TS 36.322, clause 4.2 + TM_Mode, + UM_Mode, + AM_Mode + }; + + type union RLC_PDU_Type { + RLC_TMD_PDU_Type TMD, + RLC_UMD_PDU_Type UMD, + RLC_AMD_PDU_Type AMD, + RLC_AM_StatusPDU_Type Status + }; + + type record of RLC_PDU_Type RLC_PDUList_Type; + + type octetstring RLC_SDU_Type; + type record of RLC_SDU_Type RLC_SDUList_Type; + + } // End sub-group RLC + + //**************************************************************************** + + group PDCP { /* PDCP user plane SDU and PDU definitions + * NOTE: + * To allow direct encoding the definition for PDCP Data PDU is split into data PDU with long/short sequence number */ + + type octetstring PDCP_SDU_Type; + type record of PDCP_SDU_Type + PDCP_SDUList_Type; + + //---------------------------------------------------------------------------- + // PDCP user plane PDU definitions + // + + type record PDCP_DataPdu_LongSN_Type { /* User plane PDCP Data PDU with long sequence number (TS 36.323, clause 6.2.3) */ + B1_Type D_C, /* 0 - Control PDU + * 1 - Data PDU */ + B3_Type Reserved, + B12_Type SequenceNumber, /* 12 bit sequence number */ + PDCP_SDU_Type SDU /* content (octetstring) */ + }; + + type record PDCP_DataPdu_ShortSN_Type { /* User plane PDCP Data PDU with short sequence number (TS 36.323, clause 6.2.4) */ + B1_Type D_C, /* 0 - Control PDU + * 1 - Data PDU */ + B7_Type SequenceNumber, /* 7 bit sequence number */ + PDCP_SDU_Type SDU /* content (octetstring) */ + }; + + type record PDCP_DataPdu_ExtSN_Type { /* User plane PDCP Data PDU with extended sequence number (TS 36.323, clause 6.2.9) */ + B1_Type D_C, /* 0 - Control PDU + * 1 - Data PDU */ + B15_Type SequenceNumber, /* 15 bit sequence number */ + PDCP_SDU_Type SDU /* content (octetstring) */ + }; + + type record PDCP_Ctrl_ROHC_FB_PDU_Type { /* PDCP Control PDU for interspersed ROHC feedback packet (TS 36.323, clause 6.2.5) */ + B1_Type D_C, /* 0 - Control PDU + * 1 - Data PDU */ + B3_Type Type, /* 000 - PDCP status report + * 001 - Header Compression Feedback Information + * 010..111 - reserved */ + B4_Type Reserved, + octetstring ROHC_FB /* Contains one ROHC packet with only feedback, i.e. a ROHC packet that is not associated with a PDCP */ + }; + + type record PDCP_Ctrl_StatusReport_Type { /* PDCP Control PDU for PDCP status report (TS 36.323, clause 6.2.6) */ + B1_Type D_C, /* 0 - Control PDU + * 1 - Data PDU */ + B3_Type Type, /* 000 - PDCP status report + * 001 - Header Compression Feedback Information + * 010..111 - reserved */ + B12_Type FMS, /* PDCP SN of the first missing PDCP SDU. */ + octetstring Bitmap optional /* The MSB of the first octet of the type "Bitmap" indicates whether or not the PDCP SDU with the SN (FMS + 1) modulo 4096 has been received and, optionally decompressed correctly. + * 0 - + * PDCP SDU with PDCP SN = (FMS + bit position) modulo 4096 is missing in the receiver. + * The bit position of Nth bit in the Bitmap is N, i.e. the bit position of the first bit in the Bitmap is 1. + * 1 - + * PDCP SDU with PDCP SN = (FMS + bit position) modulo 4096 does not need to be retransmitted. + * The bit position of Nth bit in the Bitmap is N, i.e. the bit position of the first bit in the Bitmap is 1. */ + }; + + + type record PDCP_Ctrl_StatusReportExt_Type { /* PDCP Control PDU for PDCP status report using a 15 bit SN (TS 36.323, clause 6.2.6) */ + B1_Type D_C, /* 0 - Control PDU + * 1 - Data PDU */ + B3_Type Type, /* 000 - PDCP status report + * 001 - Header Compression Feedback Information + * 010..111 - reserved */ + B5_Type Reserved, /* 5 reserved bits */ + B15_Type FMS_Ext, /* PDCP SN of the first missing PDCP SDU. */ + octetstring Bitmap optional /* The MSB of the first octet of the type "Bitmap" indicates whether or not the PDCP SDU with the SN (FMS + 1) modulo (Maximum_PDCP_SN + 1) has been received and, + * optionally decompressed correctly. + * 0 - + * PDCP SDU with PDCP SN = (FMS + bit position) modulo (Maximum_PDCP_SN + 1) is missing in the receiver. + * The bit position of Nth bit in the Bitmap is N, i.e. the bit position of the first bit in the Bitmap is 1. + * 1 - + * PDCP SDU with PDCP SN = (FMS + bit position) modulo (Maximum_PDCP_SN + 1) does not need to be retransmitted. + * The bit position of Nth bit in the Bitmap is N, i.e. the bit position of the first bit in the Bitmap is 1. */ + }; + + type union PDCP_PDU_Type { + PDCP_DataPdu_LongSN_Type DataLongSN, /* user plane PDCP data PDU with 12 Bit Seq Number */ + PDCP_DataPdu_ShortSN_Type DataShortSN, /* user plane PDCP data PDU with 7 Bit Seq Number */ + PDCP_DataPdu_ExtSN_Type DataExtSN, /* user plane PDCP data PDU with 15 Bit Seq Number */ + PDCP_Ctrl_ROHC_FB_PDU_Type RohcFeedback, /* PDCP Control PDU for interspersed ROHC feedback packet */ + PDCP_Ctrl_StatusReport_Type StatusReport, /* PDCP Control PDU for PDCP status report */ + PDCP_Ctrl_StatusReportExt_Type StatusReportExt /* PDCP Control PDU for PDCP status report using a 15 bit SN */ + }; + + type record of PDCP_PDU_Type PDCP_PDUList_Type; + + } // End sub-group PDCP + + } with { encode "DRB Types"} // End group PDU_TypeDefs + + //**************************************************************************** + + group DRB_Primitive_Definitions { // Primitive definitions to send/receive data PDUs over DRB's + + group DRB_Common { + + type union U_PlaneDataList_Type { /* MAC: + * acc. to rel-8 protocols there is not more than one MAC PDU per TTI; + * any MAC PDU is completely included in one subframe + * RLC: + * one or more RLC PDUs per TTI + * (e.g. RLC Data + Status PDU on a logical channel; + * more than one RLC Data PDU in one MAC PDU is valid too) + * any RLC PDU is completely included in one subframe + * PDCP: + * one or more PDUs per TTI; one PDCP PDU may be included in more than one subframe */ + + MAC_PDUList_Type MacPdu, /* SS configuration: RLC TM mode, MAC no header removal (PDCP is not configured) */ + RLC_PDUList_Type RlcPdu, /* SS configuration: RLC TM mode, MAC header removal (PDCP is not configured) */ + PDCP_PDUList_Type PdcpPdu, /* SS configuration: RLC AM/UM mode, PDCP no header removal */ + PDCP_SDUList_Type PdcpSdu, /* SS configuration: RLC AM/UM mode, PDCP header removal */ + RLC_SDUList_Type RlcSdu /* SS configuration: RLC UM mode with no PDCP, for example MRB */ + }; + + type union HarqProcessAssignment_Type { /* in DL the HARQ process id may be specified by the test case or automatically assigned by SS */ + HarqProcessId_Type Id, /* HARQ process as specified by the test case + * NOTE1: + * the scope of this type is only for data being sent in one TTI; + * if data needs more than one TTI the HarqProcessId is undefined for the 2nd TTI onward what shall be handled as an error at the SS; SS may send a SYSTEM_IND indicating an error in this case; + * NOTE2: + * The initial value of the NDI shall be the same for all HARQ processes and cells */ + Null_Type Automatic /* HARQ process id automatically assigned by SS */ + }; + + } // End sub-group DRB_Common + + //---------------------------------------------------------------------------- + + group Downlink { + + type record DRB_DataPerSubframe_DL_Type { /* common definition for one or several PDUs/SDUs to be sent in the subframe given by the subframe offset; + * NOTE 1: + * For MAC and RLC PDUs a single PDU is always sent in one subframe; + * SS shall raise an error indication (using SYSTEM_IND) when that is not possible + * NOTE 2: + * For PDCP the data may be spread over more than one subframe (segmented by the RLC); + * the TTCN implemetation is responsible to calculate appropriate offsets accordingly; + * the exact timing depends on (and is exactly specified by) configuration of the DL scheduling; + * SS shall raise an error when there is any conflict */ + integer SubframeOffset, /* subframe offset relative to the absolute timing information given in the common part of the ASP; + * NOTE 1: + * Notes: + * Acc. to TS 36.523-3, clause 7.3.3 in case of TDD or half-duplex configuration only subframes available for DL are taken into consideration + * NOTE 2: + * if a PDCP PDU or SDU takes more than one subframe, SubframeOffset specifies the first TTI */ + HarqProcessAssignment_Type HarqProcess, /* HARQ process to be used: specific value (0..7) or automatically assigned by SS; + * in automatic mode SS chooses HARQ process out of the set configured by CcchDcchDtchConfigDL_Type.HarqProcessConfig + * NOTE: + * for PDCP SDUs or PDUs automatic mode shall be used; otherwise SS shall raise an error */ + U_PlaneDataList_Type PduSduList /* list of PDUs/SDUs to be sent in one TTI */ + }; + + + type record of DRB_DataPerSubframe_DL_Type + DRB_DataPerSubframeList_DL_Type; /* list of user plane data to be sent in sub-frames given by the SubframeOffset in the single elements of the list; + * Timing: + * the start time for the whole sequence is given by the timing info of the ASP (common information); + * the timing for the respective data pdus is given by the SubframeOffset relative to the common timing info; + * design consideration: + * repetitions of this sequence are not foreseen + * (in which case the subframe offset could not be related to the timing info of the ASP) */ + + type record U_Plane_Request_Type { /* NOTE: formal type definition to allow later enhancements; + * U_Plane_Request_Type defines a sequence of subframes in which data shall be sent */ + DRB_DataPerSubframeList_DL_Type SubframeDataList + }; + + + } // End sub-group Downlink + + //---------------------------------------------------------------------------- + + group Uplink { + + type record DRB_DataPerSubframe_UL_Type { /* common definition for one or several PDUs/SDUs being received in one subframe + * or to receive one PDCP PDU or SDU being spread over more than one TTI; + * NOTE: + * There is a fix relation between HARQ process id and subframe in UL + * => it is not necessary to include HARQ process id for UL data */ + U_PlaneDataList_Type PduSduList, /* list of PDUs/SDUs being received in one TTI; + * elements of the list appear in the same order as the PDUs/SDUs in the MAC PDU; + * for PDCP when a PDU or SDU takes more than one TTI the list only contains this PDU or SDU */ + integer NoOfTTIs /* in case of PDCP: + * number of TTIs the SDU or PDU has taken + * NOTE 1: for the time being the NoOfTTIs is not checked by TTCN-3 and may be set to 1 by SS; + * NOTE 2: the timing info in common part of the ASP refers to the last TTI + * NOTE 3: when NoOfTTIs > 1 => PduSduList shall only contain one PDCP PDU or SDU + * in case of MAC or RLC PDUs: + * NoOfTTIs shall always be 1 + * (acc. to TS 36.321 MAC is not doing segmentation of RLC PDUs and acc. to TS 36.322, clause 6.2.2.2 the maximum RLC data is calculated to fit into a MAC PDU and RLC does segmentation accordingly) */ + }; + + type record U_Plane_Indication_Type { /* NOTE: formal type definition to allow later enhancements; + * U_Plane_Indication_Type defines data being received in a single subframe + * i.e. PDUs of subsequent TTIs are indicated in separated ASPs */ + DRB_DataPerSubframe_UL_Type SubframeData + }; + + } // End sub-group Uplink + + } // End group DRB_Primitive_Definitions + + //**************************************************************************** + group MBMS_MRB_Primitive_Definitions { + + type port EUTRA_MRB_PORT message { + out MRB_COMMON_REQ; + }; + + type record MRB_COMMON_REQ { /* common ASP to send PDUs to MRBs */ + ReqAspCommonPart_Type Common, /* CellId : identifier of the cell + * RoutingInfo : set to Mrb + * TimingInfo : starting point when to start sending sequence of data PDUs + * e.g. + * SFN = X, subframe number = x; + * U_Plane.SubframeDataList[i].SubframeOffset := offset_i; + * => U_Plane.SubframeDataList[i].PduSduList shall be sent out at + * SFN = X + ((x + offset_i) / 10); + * subframe number = (x + offset_i) % 10 + * ControlInfo : CnfFlag:=false; FollowOnFlag:=false */ + U_Plane_Request_Type U_Plane + }; + + } //End group MBMS_MRB_Primitive_Definitions + + //**************************************************************************** + + group System_Interface { + + //**************************************************************************** + // ASP definitions + //**************************************************************************** + + type record DRB_COMMON_REQ { /* common ASP to send PDUs to DRBs */ + ReqAspCommonPart_Type Common, /* CellId : identifier of the cell + * RoutingInfo : DRB id + * TimingInfo : starting point when to start sending sequence of data PDUs + * e.g. + * SFN = X, subframe number = x; + * U_Plane.SubframeDataList[i].SubframeOffset := offset_i; + * => U_Plane.SubframeDataList[i].PduSduList shall be sent out at + * SFN = X + ((x + offset_i) / 10); + * subframe number = (x + offset_i) % 10 + * ControlInfo : CnfFlag:=false; FollowOnFlag:=false */ + U_Plane_Request_Type U_Plane, + Null_Type SuppressPdcchForC_RNTI optional /* By default all DRB_COMMON_REQ scheduled DL PDU's are associated with an appropriate explicit configured or SS selected DL assignment allocation on PDCCH. + * For SuppressPdcch:=true in the sub frame in which DL PDU's are transmitted, there is no associated DL assignment allocation for configured C-RNTI. This will be used for SPS assignment based transmission or in any error scenarios; + * NOTE: this flag has no impact on PDCCH messages required for SPS activation */ + }; + + type record DRB_COMMON_IND { /* common ASP to receive PDUs from DRBs */ + IndAspCommonPart_Type Common, /* CellId : identifier of the cell + * RoutingInfo : DRB id + * TimingInfo : time when message has been received + * NOTE 1: + * For MAC and RCL PDUs per definition U_Plane_Indication_Type corresponse to exactly one subframe + * => TimingInfo refers to this subframe + * NOTE 2: + * For PDCP a single PDU or SDU may take more than one TTI + * => TimingInfo refers to the end of the PDU/SDU and the length is given by NoOfTTIs in U_Plane_Indication_Type + * (the end of the PDU/SDU is the last RLC PDU being received; in case of retransmissins this is not necessarily the RLC PDU with the last SN) */ + U_Plane_Indication_Type U_Plane + }; + + //**************************************************************************** + // Port definitions + //**************************************************************************** + + type port EUTRA_DRB_PORT message { + out DRB_COMMON_REQ; + in DRB_COMMON_IND; + }; + + } // End group System_Interface + +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_ASP_NasCtrl.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_ASP_NasCtrl.ttcn new file mode 100644 index 0000000..847a7c9 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_ASP_NasCtrl.ttcn @@ -0,0 +1,109 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-04-01 15:09:57 +0200 (Mon, 01 Apr 2013) $ +// $Rev: 8395 $ +/******************************************************************************/ + +module EUTRA_ASP_NasCtrl { + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from EPS_NAS_TypeDefs all; // to get NasCount_Type + + //**************************************************************************** + + group NAS_Security { /* Primitive for Configuration and Control of NAS Security */ + // Note: + // In the primitives only the COUNT is handled (rather than SQN and NasOverflowCounter); + // to deal with SQN and NasOverflowCounter there are common TTCN functions: + // function f_EutranNasCount_GetSQN(NasCount_Type p_Count) return integer; + // function f_EutranPdcpCount_GetOverflowCounter(NasCount_Type) return integer; + // function f_EutranPdcpCount_Set(integer p_OverflowCounter, integer p_SQN) return NasCount_Type; + + type record NAS_SecurityInfo_Type { /* ciphering/integrity algorithm and key */ + B3_Type Algorithm, /* acc. to 24.301 cl. 9.9.3.20 NAS security algorithms */ + B128_Key_Type K_NAS /* key acc. 33.401 Figure 6.2-2 (K_NASint, K_NASenc) */ + }; + + type record NAS_SecurityStartRestart_Type { + NAS_SecurityInfo_Type Integrity optional, /* omit: keep integrity protection as it is */ + NAS_SecurityInfo_Type Ciphering optional, /* omit: keep ciphering as it is */ + Null_Type NasCountReset optional /* omit: maintain NAS COUNT */ + }; + + type union NAS_Security_Type { /* to download or reset NAS security algorithms and keys and to reset NAS COUNT; + in DL security protection is applied acc. to the SecurityProtection info of + the NAS_MSG_Request_Type; + in the UL if a security protected NAS PDU is received it is assumed to be ciphered + (this is because the SECURITY MODE COMMAND is already ciphered for NAS); + (Note: if the latter assumption is not applicable, ciphering needs to be started explicitly); + the NAS emulation shall distinguish between security protected and non-security protected NAS PDUs */ + NAS_SecurityStartRestart_Type StartRestart, + Null_Type Release + }; + + type record NasCountInfo_Type { + NasCount_Type UL optional, /* UL NAS COUNT is the value corresponding to the latest PDU sent by the UE; + acc. 24.301 cl. 4.4.3.1 at the UE the NAS COUNT is initialised with 0; + => in TTCN (NAS emulation) NAS COUNT is initialised with its max. value; + omit: keep as it is */ + NasCount_Type DL optional /* DL NAS COUNT is the value corresponding to the latest PDU sent to the UE; + acc. 24.301 cl. 4.4.3.1 at the UE the NAS COUNT is initialised with 0; + => in TTCN (NAS emulation) NAS COUNT is initialised with its max. value; + omit: keep as it is */ + }; + + type union NAS_CountReq_Type { + Null_Type Get, + NasCountInfo_Type Set + }; + + type union NAS_CountCnf_Type { + NasCountInfo_Type Get, + Null_Type Set + }; + + type union NasCtrlRequest_Type { + NAS_Security_Type Security, /* StartRestart/Release of NAS security */ + NAS_CountReq_Type NasCount /* to set or enquire NAS COUNT */ + }; + + type union NasCtrlConfirm_Type { + Null_Type Security, + NAS_CountCnf_Type NasCount + }; + + type record NAS_CTRL_REQ { + ReqAspCommonPart_Type Common, /* Note: the common part is ignored by the NAS emulator */ + NasCtrlRequest_Type Request + }; + + type record NAS_CTRL_CNF { + CnfAspCommonPart_Type Common, /* Note: in the common part cell id shall be eutra_Cell_NonSpecific + * and RoutingInfo and TiminInfo are set to 'None' */ + NasCtrlConfirm_Type Confirm + }; + + } // End group NAS_Security + + //**************************************************************************** + + group Port_Definitions { + + type port EUTRA_NASCTRL_PORT message { /* EUTRA PTC: Port for configuration of NAS emulation */ + out NAS_CTRL_REQ; + in NAS_CTRL_CNF; + }; + + type port NASEMU_CTRL_PORT message { /* NASEMU PTC: Port for configuration of NAS emulation */ + out NAS_CTRL_CNF; + in NAS_CTRL_REQ; + }; + + } // End group Port_Definitions + +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_ASP_SrbDefs.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_ASP_SrbDefs.ttcn new file mode 100644 index 0000000..4737270 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_ASP_SrbDefs.ttcn @@ -0,0 +1,93 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-04-01 15:09:57 +0200 (Mon, 01 Apr 2013) $ +// $Rev: 8395 $ +/******************************************************************************/ + +module EUTRA_ASP_SrbDefs { + import from EUTRA_CommonDefs all; + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EPS_NAS_MsgContainers all; + + //**************************************************************************** + + group SRB_DATA_ASPs { /* ASP Definitions to send/receive peer-to-peer messages on SRBs */ + + type record C_Plane_Request_Type { /* RRC and/or NAS PDU to be send to the UE; + Note: it may be necessary to allow more than one NAS PDU (-> "record of") => FFS */ + + RRC_MSG_Request_Type Rrc optional, /* omit: NAS message shall be present; NAS message shall be sent in DLInformationTransfer + * present: if NAS message is present also, (piggybacked) NAS PDU shall be security protected + * (if necessary) and inserted in RRC PDU's DedicatedInfoNAS */ + NAS_MSG_RequestList_Type Nas optional /* omit: RRC message shall be present; RRC message does not contain (piggybacked) NAS PDU + * present: if RRC message is omitted => NAS message shall be sent embedded in DLInformationTransfer + * if RRC message is present => NAS message is piggybacked in RRC message + * in case of RRC message is sent on CCCH, NAS message shall be omitted + * NOTE: + * acc. DEC 08 ASN.1 RRCConnectionReconfiguration may contain DedicatedInfoNAS several times */ + }; + + type record C_Plane_Indication_Type { /* RRC and/or NAS PDU to be received from the UE; + Note: it may be necessary to allow more than one NAS PDU (-> "record of") => FFS */ + + RRC_MSG_Indication_Type Rrc optional, /* omit: NAS message shall be present; NAS message is received in ULInformationTransfer + * present: if NAS message is present also, DedicatedInfoNAS contains unstructured and + * ciphered NAS message and the NAS message is the deciphered message in structured format */ + NAS_MSG_IndicationList_Type Nas optional /* omit: RRC message shall be present; RRC message does not contain (piggybacked) NAS PDU + * present: if RRC message is omitted => NAS message has been received in ULInformationTransfer + * if RRC message is present => NAS message has been piggybacked in RRC message + * NOTE: + * even though currently (DEC 08 ASN.1) there is no RRC PDU in UL containing more than one + * DedicatedInfoNAS we provide a list to allow extendability */ + }; + + type record SRB_COMMON_REQ { /* common ASP to send PDUs to SRB0, SRB1 or SRB2 */ + ReqAspCommonPart_Type Common, /* CellId identifier of the cell + * RoutingInfo SRB0, SRB1, SRB2 + * TimingInfo Now in normal cases; + * For latency tests TimingInfo can be set to the SFN/subframe + * in which the RRC messages shall be sent out (in this case and + * if the RRC PDU is too long to be sent in one TTI + * the TimingInfo corresponds to the first TTI) + * ControlInfo + * CnfFlag:=false; + * FollowOnFlag + * true: Indicates that the message(s) to be sent on the same TTI will follow + * NOTE 1: When FollowOnFlag is true, TimingInfo shall always be "Now". Otherwise SS shall produce an error + * NOTE 2: the follow on flag applies only for messages of the same SRB + * false: Indicates that no more message(s) will follow + */ + C_Plane_Request_Type Signalling + }; + + type record SRB_COMMON_IND { /* common ASP to receive PDUs from SRB0, SRB1 or SRB2 */ + IndAspCommonPart_Type Common, /* CellId identifier of the cell + * RoutingInfo SRB0, SRB1, SRB2 + * TimingInfo time when message has been received + * (as received from the SS by the NAS emulator) */ + C_Plane_Indication_Type Signalling + }; + + } // End group SRB_DATA_ASPs + + //**************************************************************************** + + group Port_Definitions { + + type port EUTRA_SRB_PORT message { /* EUTRA PTC: Port for Sending/Receiving data on SRBs */ + out SRB_COMMON_REQ; + in SRB_COMMON_IND; + }; + + type port NASEMU_SRB_PORT message { /* NASEMU PTC: Port for Sending/Receiving data on SRBs (interface to EUTRA PTC) */ + out SRB_COMMON_IND; + in SRB_COMMON_REQ; + }; + + } // End group Port_Definitions +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_ASP_TypeDefs.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_ASP_TypeDefs.ttcn new file mode 100644 index 0000000..b4e26b9 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_ASP_TypeDefs.ttcn @@ -0,0 +1,2210 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-06-06 19:54:44 +0200 (Fri, 06 Jun 2014) $ +// $Rev: 11662 $ +/******************************************************************************/ + +module EUTRA_ASP_TypeDefs { + /* Type definitions for configuration of the system simulator; + * Common design principles: + * Semantics of OMIT: for all TTCN-3 type definitions used in ASPs omit means "keep as it is" => + * - on initial configuration in general all fields shall be provided + * - no default values for fields are foreseen + * - if necessary non-existence of information shall be explicitly configured + * (e.g. with a union of "no configuration" and "configuration parameters" + * - fields within structures imported from the core spec are excepted from this rule */ + + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + + //**************************************************************************** + + group ASN1_Container { /* Definitions containing ASN.1 types for backward compatibility; + * NOTE 1: PCCH_Message and BCCH_DL_SCH_Message already have a critical extension mechanism by RRC type definition + * NOTE 2: BCCH_BCH_Message contains the MIB and therefore is considered to be not extendable + * NOTE 3: "simple types" are not considered: C_RNTI, PhysCellId, CellIdentity, ARFCN_ValueEUTRA + */ + + type record AntennaInfoDedicated_R8andLater_Type { + AntennaInfoDedicated antennaInfo, + AntennaInfoDedicated_v920 antennaInfo_v920 optional + }; + type record AntennaInfoDedicated_R10andLater_Type { + AntennaInfoDedicated_r10 antennaInfo, + AntennaInfoUL_r10 antennaInfoUL optional + }; + type record CQI_ReportConfig_R8andLater_Type { + CQI_ReportConfig cqi_ReportConfig, + CQI_ReportConfig_v920 cqi_ReportConfig_v920 optional + }; + type record CQI_ReportConfig_R10andLater_Type { + CQI_ReportConfig_r10 cqi_ReportConfig_r10, /* NOTE: field 'csi-SubframePatternConfig-r10' is not relevant as long as a cell is configured as SCell */ + CQI_ReportConfig_v1130 cqi_ReportConfig_v1130 optional + }; + type record PUCCH_ConfigDedicated_R8andLater_Type { + PUCCH_ConfigDedicated pucch_ConfigDedicated, + PUCCH_ConfigDedicated_v1020 pucch_ConfigDedicated_v1020 optional, + PUCCH_ConfigDedicated_v1130 pucch_ConfigDedicated_v1130 optional + }; + type record PUSCH_ConfigDedicated_R8andLater_Type { + PUSCH_ConfigDedicated pusch_ConfigDedicated, /* in case of CA beta offset shall be the same for the PCell and the associated SCells */ + PUSCH_ConfigDedicated_v1020 pusch_ConfigDedicated_v1020 optional, /* optionally present for Rel 10 cells (normal or CA); in case of CA beta offset shall be the same for the PCell and the associated SCells */ + PUSCH_ConfigDedicated_v1130 pusch_ConfigDedicated_v1130 optional + }; + type record UplinkPowerControlCommon_R8andLater_Type { + UplinkPowerControlCommon uplinkPowerControlCommon, + UplinkPowerControlCommon_v1020 uplinkPowerControlCommon_v1020 optional, /* optionally present for Rel 10 cells (normal or CA); + NOTE: 'p0-NominalPUCCH', 'deltaFList-PUCCH', 'deltaPreambleMsg3' and 'UplinkPowerControlCommon-v1020' are not relevant as long as a cell is configured as SCell */ + UplinkPowerControlCommonSCell_v1130 uplinkPowerControlCommonSCell_v1130 optional /* only present when cell is configured as Rel 11 or later Scell */ + }; + type record UplinkPowerControlDedicated_R8andLater_Type { + UplinkPowerControlDedicated uplinkPowerControlDedicated, + UplinkPowerControlDedicated_v1020 uplinkPowerControlDedicated_v1020 optional, /* optionally present for Rel 10 cells (normal or CA); + NOTE: field 'p0-UE-PUCCH' is not relevant as long as a cell is configured as SCell */ + SCellPathlossReferenceLinking_Type pathlossReferenceLinking optional, /* NOTE: relevant only as long as a cell is configured as SCell */ + UplinkPowerControlDedicated_v1130 uplinkPowerControlDedicated_v1130 optional + }; + type record SoundingRS_UL_ConfigDedicated_R8andLater_Type { + SoundingRS_UL_ConfigDedicated soundingRS_UL_ConfigDedicated, + SoundingRS_UL_ConfigDedicated_v1020 soundingRS_UL_ConfigDedicated_v1020 optional, + SoundingRS_UL_ConfigDedicatedAperiodic_r10 soundingRS_UL_ConfigDedicatedAperiodic_r10 optional + }; + type record SchedulingRequestConfig_R8andLater_Type { + SchedulingRequestConfig schedulingRequestConfig, + SchedulingRequestConfig_v1020 schedulingRequestConfig_v1020 optional + }; + type record TDD_Config_R8andLater { + TDD_Config R8, + TDD_Config_v1130 tdd_Config_v1130 optional + }; + type union TDD_Config_Type { + TDD_Config_R8andLater R8andLater + }; + type union AntennaInfoCommon_Type { + AntennaInfoCommon R8 + }; + type union AntennaInfoDedicated_Type { /* NOTE: acc. to Cond AI-r8/AI-r10 of PhysicalConfigDedicated 'antennaInfo'/'antennaInfo-v920' and 'antennaInfo-r10' are mutual exclusive */ + AntennaInfoDedicated_R8andLater_Type R8andLater, + AntennaInfoDedicated_R10andLater_Type R10andLater + }; + type union PHICH_Config_Type { + PHICH_Config R8 + }; + type union PRACH_Config_Type { + PRACH_Config R8 + }; + type union PUCCH_ConfigCommon_Type { + PUCCH_ConfigCommon R8 + }; + type union PUCCH_ConfigDedicated_Type { + PUCCH_ConfigDedicated_R8andLater_Type R8andLater + }; + type union PUSCH_ConfigCommon_Type { + PUSCH_ConfigCommon R8 + }; + type union PUSCH_ConfigDedicated_Type { + PUSCH_ConfigDedicated_R8andLater_Type R8andLater + }; + type union SoundingRS_UL_ConfigCommon_Type { + SoundingRS_UL_ConfigCommon R8 + }; + type union SoundingRS_UL_ConfigDedicated_Type { + SoundingRS_UL_ConfigDedicated_R8andLater_Type R8andLater + }; + type union SchedulingRequestConfig_Type { + SchedulingRequestConfig_R8andLater_Type R8andLater + }; + type union CQI_ReportConfig_Type { /* NOTE: acc. to Cond CQI-r8/CQI-r10 of PhysicalConfigDedicated 'cqi-ReportConfig'/'cqi-ReportConfig-v920' and 'cqi-ReportConfig-r10' are mutual exclusive */ + CQI_ReportConfig_R8andLater_Type R8andLater, + CQI_ReportConfig_R10andLater_Type R10andLater + }; + type union RACH_ConfigCommon_Type { + RACH_ConfigCommon R8 /* In an active Scell, the SS uses the necessary parameters defined in RACH-ConfigCommonSCell-r11 and ignores additional parameters; + * The additional parameters will be applicable when the cell seizes to exist as scell */ + }; + type union RACH_ConfigDedicated_Type { + RACH_ConfigDedicated R8 + }; + type union MeasGapConfig_Type { + MeasGapConfig R8 + }; + type union PDCP_Config_Type { + PDCP_Config R8 + }; + type union UL_AM_RLC_Type { + UL_AM_RLC R8 + }; + type union DL_AM_RLC_Type { + DL_AM_RLC R8 + }; + type union UL_UM_RLC_Type { + UL_UM_RLC R8 + }; + type union DL_UM_RLC_Type { + DL_UM_RLC R8 + }; + type union TTI_BundlingConfig_Type { + boolean R8 + }; + type union DRX_Config_Type { + DRX_Config R8 + }; + type union SpsConfigurationDL_Type { + SPS_ConfigDL.setup R8 + }; + type union SpsConfigurationUL_Type { + SPS_ConfigUL.setup R8 + }; + type union UplinkPowerControlCommon_Type { + UplinkPowerControlCommon_R8andLater_Type R8andLater + }; + type union UplinkPowerControlDedicated_Type { + UplinkPowerControlDedicated_R8andLater_Type R8andLater + }; + type record CSI_RS_Config_Type { + CSI_RS_Config_r10 R10 + }; + } // End group System_Configuration + + //**************************************************************************** + + group System_Configuration { + //**************************************************************************** + // Formal ASP Definitions for system configuration + //**************************************************************************** + + type union SystemRequest_Type { + CellConfigRequest_Type Cell, /* configure/release a cell */ + CellAttenuationList_Type CellAttenuationList, /* power attenuation for one or several cells; + * all cells included in the list shall be changed at the same time; + * all cells in the list shall reach the new cell power within a maximum of 100ms (10 frames) + * acc. to the tolerances given in TS 36.508 + * NOTE: In the common ASP part the CellId shall be set + * - to the cell the timing information refers to if activation time shall be applied + * - to eutra_Cell_NonSpecific when there is no activation time */ + RadioBearerList_Type RadioBearerList, /* configure/release one or several SRBs and/or DRBs + * NOTE: RBs are not configured in an SCell */ + Null_Type EnquireTiming, /* get SFN and sub-frame number for this cell */ + AS_Security_Type AS_Security, /* StartRestart/Release of AS security */ + SpsConfig_Type Sps, /* to configure/activate or release semi-persistent scheduling */ + PagingTrigger_Type Paging, /* to trigger SS to send paging at the given paging occasion (as calculated in TTCN) */ + L1Mac_IndicationControl_Type L1MacIndCtrl, /* to configure SS to generate indications for L1/MAC events */ + Rlc_IndicationControl_Type RlcIndCtrl, /* to configure SS to generate indications for RLC events */ + PDCP_CountReq_Type PdcpCount, /* to set or enquire PDCP COUNT for one ore more RBs */ + PDCP_HandoverControlReq_Type PdcpHandoverControl, /* to inform the target cell about the handover */ + L1_TestMode_Type L1_TestMode, /* To Set L1/MAC in special Test modes eg. DL CRC, PHICH etc */ + RA_PDCCH_Order_Type PdcchOrder, /* to configure SS to transmit a PDCCH order with configured C-RNTI to the UE + to trigger RA procedure; + result in DCI Format 1A transmission as in TS 36.212, clause 5.3.3.1.3 */ + ActivateScell_Type ActivateScell, /* to configure SS to transmit a MAC control Element to activate an Scell */ + MBMS_Config_Type MbmsConfig, /* Configuration of PMCH/MCCH/MTCH for eMBMS */ + PDCCH_MCCH_ChangeNotification_Type PDCCH_MCCH_ChangeNotification, /* To trigger SS to send MCCH change notification at the given SFN/subframe (as calculated in TTCN) */ + MSI_Config_Type MSI_Config, /* Configuration of MSI in MBMS normal mode to be included by the SS in the first subframe allocated to the MCH within the MCH scheduling period; + * uses MRB_ID option in routing info and logical channel ID is omitted */ + UE_CategoryInfo_Type UE_Cat_Info /* provides UE category info to SS to be used for determination of Nsoft bits for rate matching + * To be configured in SS after preamble in MAC TBS test cases*/ + }; + + type union SystemConfirm_Type { /* confirmations for system configuration; + in general to be sent after the configuration has been done */ + Null_Type Cell, /* (no further parameters from SS) */ + Null_Type CellAttenuationList, /* (no further parameters from SS) + * NOTE 1: + * the confirmation shall be sent when all cells have changed power levels + * NOTE 2: + * for the CellId in the common ASP part the same rules are applied as for the SYSTEM REQ */ + Null_Type RadioBearerList, /* (no further parameters from SS) */ + Null_Type EnquireTiming, /* SFN and sub-frame number are included in the TimingInfo */ + Null_Type AS_Security, /* (no further parameters from SS) */ + Null_Type Sps, /* (no further parameters from SS) */ + Null_Type Paging, /* normally not needed but defined for completeness */ + Null_Type L1MacIndCtrl, /* (no further parameters from SS) */ + Null_Type RlcIndCtrl, /* (no further parameters from SS) */ + PDCP_CountCnf_Type PdcpCount, /* as response to 'Get' a list is returned containing COUNT information for the requested RBs */ + Null_Type PdcpHandoverControl, /* confirmation for PDCP handover control */ + Null_Type L1_TestMode, /* confirmation for L1 test mode */ + Null_Type PdcchOrder, /* confirmation for PDCCH Order */ + Null_Type ActivateScell, /* confirmation for ActivateScell */ + Null_Type MbmsConfig, /* confirmation for MbmsConfig */ + Null_Type PDCCH_MCCH_ChangeNotification, /* normally not needed but defined for completeness */ + Null_Type MSI_Config /* confirmation for explicit MSI Configuration */ + }; + + type union SystemIndication_Type { + charstring Error, /* indicates an error situation in SS; + * is not explicitly handled in TTCN but causes an INCONC due to default behaviour; + * an additional error code can be signalled in the common part of the ASP; + * SS shall raise an error in case of + * - Invalid TimingInfo for TDD + * - Contradiction of periodic UL grants and TDD configuration + * - Data scheduled for the same TTI does not fit into an available transport block + * (NOTE: additional cases may occur) */ + RachPreamble_Type RachPreamble, /* RACH preamble being sent by the UE */ + Null_Type SchedReq, /* indication for scheduling request sent by the UE */ + BSR_Type BSR, /* to report the Buffer/Extended Buffer status report being received */ + HARQ_Type UL_HARQ, /* to report the UL HARQ as received on PUCCH[TTI] for corresponding DL transmission in TTI-x, + * where x is normally 4 */ + C_RNTI C_RNTI, /* indicates C-RNTI being contained in a MAC PDU sent by the UE */ + PHR_Type PHR, /* to report the Power headroom report received */ + HarqError_Type HarqError, /* indicates detection of HARQ error: + * 1. HARQ CRC error for UL data + * 2. HARQ NACK from the UE unless SS is configured to report HARQ ACK/NACK */ + RlcDiscardInd_Type RlcDiscardInd, /* indicates e.g. discarded PDUs */ + RI_Type PeriodicRI, /* indicates periodic Rank Indicator (RI) reported by the UE on PUCCH or PUSCH; + * periodic CQI/PMI/RI Reporting is semi-statically configured at the UE by higher layers (see TS 36.213 clause 7.2.2); + * aperiodic reporting acc. to TS 36.213 clause 7.2.1 shall not be indicated + * NOTE: + * Acc. to TS 36.213 clause 7.2 aperiodic reporting has higher precedence than periodic reporting; + * => as working assumption the CQI request field in DCI format 0 is expected to be 0 for UL grants assigned by the SS i.e. aperiodic reporting acc. to TS 213 clause 7.2.1 does not happen */ + MAC_CTRL_ExtPowerHeadRoom_Type EPHR, /* indicates Extended Power headroom report reported by the UE */ + Null_Type CqiInd, /* indicates periodic CQI reported by the UE - NOTE: Report CQI value is currently not required */ + SRSInd_Type SrsInd /* Indicates start or stop of Type 0 SRS reception on configured periodic SRS resources */ + }; + + } // End group System_Configuration + + //**************************************************************************** + + group Cell_Configuration { /* Specific Info for Cell Configuration Primitive */ + + // Primitive definition covers: + // - Initial cell configuration + // - Cell reconfigurations, mainly: + // - Cell Power configuration + // - System information + // - (to be continued) + // - Release of a cell + + //---------------------------------------------------------------------------- + + group Cell_Configuration_Common { + + type union CellConfigRequest_Type { + + CellConfigInfo_Type AddOrReconfigure, /* for cell configuration: + * CellId : identifier of the cell to be configured + * RoutingInfo : None + * TimingInfo : Now (for initial configuration and for reconfiguration in general) + * ControlInfo : CnfFlag:=true; FollowOnFlag:=false (in general) */ + Null_Type Release /* to remove a cell completely - + * CellId : identifier of the cell to be released; eutra_Cell_NonSpecific, in case all cells shall be released + * RoutingInfo : None + * TimingInfo : Now + * ControlInfo : CnfFlag:=true; FollowOnFlag:=false (in general) */ + }; + + type record CellConfigInfo_Type { + /* common information for initial cell configuration or reconfiguration; + in case of reconfiguration OMIT means 'keep configuration as it is' */ + BasicCellConfig_Type Basic optional, /* basic information for a cell (e.g. broadcasting) */ + ActiveCellConfig_Type Active optional /* add. configuration for active cell (i.e. cell being capable to receive RACH preamble) */ + }; + + type enumerated CellConfigCapability_Type { /* capabilities af a cell acc. to the initial condition of a test case */ + broadcastOnlyCell, /* no detection of RACH preables required; cell is only broadcasting */ + minimumUplinkCell, /* detection of RACH preables required but not any further RX capability */ + fullCell /* full TX and RX capabilities */ + }; + + type enumerated CA_CellInitialConfig_Type { + PCell, /* The cell when added as a CC in CA scenario for first time will be configured as an PCell */ + Scell_Active, /* The cell when added as a CC in CA scenario for first time will be configured as an SCell, and when configured as Scell, it may be activated, 36.508 clause 6.3.4 */ + Scell_Inactive /* The cell when added as a CC in CA scenario for first time will be configured as an SCell, and when configured as Scell, it will never be activated, 36.508 clause 6.3.4 */ + }; + + type record BasicCellConfig_Type { + CellConfigCapability_Type ConfigCapability optional, /* mandatory for the initial configuration; to be omitted afterwards */ + StaticCellInfo_Type StaticCellInfo optional, /* Common information which does not change during a test */ + // Physical layer: + PhysicalLayerConfigDL_Type PhysicalLayerConfigDL optional, /* default settings regarding physical control channels: PCFICH, PHICH, PDCCH */ + InitialCellPower_Type InitialCellPower optional, /* reference cell power for the RS of each antenna in DL + * NOTE 1: + * the power of the RS of an antenna may be reduced by antenna specific configuration + * NOTE 2: + * in general the power may be adjusted on a per resource element basis + * => all physical channel/signal power settings shall be ajusted relatively to the RS; + * if there are more than one TX antennas each one may have its own attenuation; + * independently from those relative power settings the cell power can easily be adjusted by just changing the reference power */ + // MAC: locical channels shared by all UEs + BcchConfig_Type BcchConfig optional, /* configuration of BCCH/BCH; SS is triggered to configure RLC/MAC regardingly; + * BCCH data on the PDSCH is distiguished by the SI-RNTI + * PBCH: MIB; + * PDSCH: scheduling and resource allocation; SIBs */ + PcchConfig_Type PcchConfig optional, /* configuration of PCCH/PCH; SS is triggered to configure RLC/MAC regardingly; + * PCCH data on the PDSCH is distiguished by the P-RNTI + * (needed even to modify SI => shall be configured for CELL_BROADCASTING) */ + CA_CellInitialConfig_Type CA_CellInitialConfig optional /* capability of a cell when added as a CC in CA scenario. + * 1. Provided at the initial configuration of a cell in CA test cases; to be omitted afterwards; + * 2. Always omit for a cell which remains normal non CA cell */ + }; + + type record ActiveCellConfig_Type { + C_RNTI C_RNTI optional, /* (pre-)configured C-RNTI; + * affects scrambling of PDSCH/PUSCH and CRC of PDCCH(s); + * shall be used implicitly in RACH procedure (i.e. as CE in RAR) */ + // Physical layer: + PhysicalLayerConfigUL_Type PhysicalLayerConfigUL optional, /* parameters for PRACH, PUCCH, PUSCH + Omitted when no UL frequency is applied to the band */ + // MAC: RACH procedure + RachProcedureConfig_Type RachProcedureConfig optional, /* to configure the SS's behaviour for the RACH procedure + Omitted when no UL frequency is applied to the band */ + // MAC: UE-specific logical channels and related information + CcchDcchDtchConfig_Type CcchDcchDtchConfig optional, /* Parameters related to CCCH/DCCH/DTCH in UL and DL */ + ServingCellConfig_Type ServingCellConfig optional /* not present as long as the cell is 'normal' cell (i.e. does not act as a carrier component in CA); + * present to configure cell for CA (Pcell or SCell); + * in general at initial configuration 'ServingCellInfo' is omit; + * after sending/scheduling the RRCConnectionReconfiguration adding 1 or more cells for CA 'ServingCellInfo' is provided for the cell which gets Pcell and for the cell which gets SCell */ + }; + + //---------------------------------------------------------------------------- + // Static cell info + //---------------------------------------------------------------------------- + + type record StaticCellInfo_Type { + /* Common information which (normally) does not change during a test; + therefore all fields are mandatory */ + CommonStaticCellInfo_Type Common, + DownlinkStaticCellInfo_Type Downlink, + UplinkStaticCellInfo_Type Uplink optional /* NOTE: for TDD UL and DL are using the same parameters + Omitted when no UL frequency is applied to the band */ + }; + //-------------------------------------------------------- + // Common Static Cell Info + type record CommonStaticCellInfo_Type { + /* information common for UL and DL; all fields are mandatory */ + EUTRA_RAT_Type RAT, /* FDD or TDD; FDD/TDD specific parameters */ + PhysCellId PhysicalCellId, /* N(cell, ID): imported from core spec; + * -> cell specific reference signals (non-MBSFN) + * -> scrambling of all DL physical channels: + * PBCH, PCFICH, PDCCH, PHICH and PDSCH (together with nRNTI) */ + CellIdentity eNB_CellId optional, /* Placeholder for Cell identity (28 bits): eNB (20bits) and cell identity (8bits). + * The use of that field is for future usage and omit for the time being */ + FreqBandIndicator EutraBand, /* NOTE: + * in 3G there are overlapping bands therefore the band needs to be provided; + * in EUTRA it is provided as well to be extendable in the future */ + CellTimingInfo_Type CellTimingInfo + }; + + // ***** RAT types: FDD, TDD, HalfDuplexFDD + type Null_Type EUTRA_FDD_Info_Type; /* no further parameters defined for FDD */ + + type record EUTRA_TDD_Info_Type { + TDD_Config_Type Configuration /* TDD_Config acc. to RRC ASN.1 (acc. TS 36.331, clause 6.3.2 ) */ + }; + + type record EUTRA_HalfDuplexFDD_Info_Type { + /* NOTE: + * for the time being there is no test case or test configuration using half duplex FDD; + * (type definition is used as place holder only) */ + }; + + type union EUTRA_RAT_Type { + /* specifies RAT type and frame structure (TS 36.211, clause 4) */ + EUTRA_FDD_Info_Type FDD, + EUTRA_TDD_Info_Type TDD, + EUTRA_HalfDuplexFDD_Info_Type HalfDuplexFDD + }; + + // ***** Cell Timing + type record CellTimingInfo_Type { /* Cell Timing */ + integer Tcell (0..307199), /* frame duration Tf = 307200 * Ts = 10ms; System Time Unit Ts = 1/(15000 * 2048) */ + integer SfnOffset (0..1023) /* (assuming 10 bit SFN) */ + }; + + //-------------------------------------------------------- + + type record DownlinkStaticCellInfo_Type { /* DL Static Info */ + ARFCN_ValueEUTRA Earfcn, /* DL-EARFCN as defined in TS 36.101 */ + Dl_Bandwidth_Type Bandwidth, /* N(DL, RB) = 6..110 (6, 15, 25, 50, 75, 100) */ + EUTRA_RBSize_Type RBSize, /* may be skipped assuming normal sub-carrier spacing => N(RB, SC) = 12 */ + EUTRA_CyclicPrefix_Type CyclicPrefix + }; + + //-------------------------------------------------------- + + type record UplinkStaticCellInfo_Type { /* UL Static Info */ + ARFCN_ValueEUTRA Earfcn, /* UL-EARFCN as defined in TS 36.101 */ + Ul_Bandwidth_Type Bandwidth, /* N(DL, RB) = 6..110 (6, 15, 25, 50, 75, 100) */ + EUTRA_CyclicPrefix_Type CyclicPrefix + } + + //---------------------------------------------------------------------------- + // Common Types + type enumerated EUTRA_RBSize_Type {n_RB_SC_12, n_RB_SC_24}; /* Resource Block Size in freq domain; + N(RB,SC) is 12 for normal sub-carrier spacing */ + type enumerated EUTRA_CyclicPrefix_Type {normal, extended}; /* NOTE: in DL extended cyclic prefix depends on sub-carrier spacing */ + type enumerated Modulation_Type {unused, qpsk, qam16, qam64}; /* 'unused' e.g. for 2nd codeword when there is no spatial multiplexing */ + + type integer CfiValue_Type (1..3); + + // Reference Cell Power + type integer AbsoluteCellPower_Type (-145..0); /* absolute cell power (dBm) */ + type union Attenuation_Type { /* attenuation of the reference power */ + integer Value (0..144), /* cell power reference power reduced by the given attenuation (value is in dB) */ + Null_Type Off /* even though in TS 36.508 -145dBm is given for a non suitable cell we specify an explicit "Off" value here */ + }; + + const Attenuation_Type tsc_CellAttenuation_Off := {Off:=true}; + type Attenuation_Type InitialAttenuation_Type (tsc_CellAttenuation_Off); /* Attenuation restricted to 'Off' */ + + type integer ToRS_EPRE_Ratio_Type (-35..0); /* any-resource-element to RS ratio in dB (e.g. PDSCH-to-RS ratio; see TS 36.213, clause 5.2) */ + + type record ToRS_EPRE_Ratios_Type { /* RA and RB ratios according to see TS 36.213, clause 5.2 */ + ToRS_EPRE_Ratio_Type RA optional, + ToRS_EPRE_Ratio_Type RB optional + }; + + type record InitialCellPower_Type { + AbsoluteCellPower_Type MaxReferencePower, /* maximum value of cell reference power (RS EPRE in dBm/15kHz as per TS 36.508, clause 4.3.4.1); + * a cell is initialised with this reference power; + * its value is the upper bound of the cell power during the test case */ + InitialAttenuation_Type Attenuation /* initial attenuation */ + }; + + type record UE_CategoryInfo_Type { + UE_Category_Type ue_Category, + UE_Category_v1020_Type ue_Category_V1020 optional + }; + + + } // End sub-group Cell_Configuration_Common + + //---------------------------------------------------------------------------- + + group Downlink_Physical_Layer_Configuration { + /* Downlink physical layer configuration: + - DL antenna configuration + - control region (PCFICH, PHICH, PDCCH) + - primary/secondary sync signals + - power control for physical channels and signals */ + + //---------------------------------------------------------------------------- + + group Antenna_Configuration { + + type integer AntennaPortId_Type (0, 1, 2, 3, 4, 5, 6, 7, 8); /* Antenna port 0..3: Cell specific reference signals + Antenna port 4: MBSFN reference signals + Antenna port 5: UE specific reference signals + Antenna port 6: Positioning reference signals + Antenna port 7: UE specific reference signals for dual layer beamforming + Antenna port 8: UE specific reference signals for dual layer beamforming + (Antenna ports in DL acc. to 36.211 cl. 6.2.1) */ + type record AntennaPortInfo_Type { + /* NOTE: + * for conformance tests it may not be necessary to consider propagation pathes for different antennas; + * => fields of AntennaPortInfo_Type are used as place holders for future usage and are of 'Dummy_Type' for the time being */ + Dummy_Type PowerAttenuation, /* even though eNb shall send with the same power on all antennas at the UE there may be different signal strength + * => RS will have reduced power + * NOTE: the EPRE ratios (e.g. PDSCH-to-RS ratio) are assumed to be equal for all antennas */ + Dummy_Type PropagationDelay /* signal from different antennas may have different propagation delay */ + }; + + + type union AntennaPortConfig_Type { + AntennaPortInfo_Type AddOrReconfigure, /* add / re-configure antenna port */ + Null_Type Release /* release antenna port */ + }; + + type record AntennaPort_Type { + AntennaPortId_Type Id, + AntennaPortConfig_Type Config + }; + + type record DownlinkAntennaGroupConfig_Type { + AntennaInfoCommon_Type AntennaInfoCommon, /* acc. to TS 36.331, clause 6.3.2; contains antennaPortsCount = an1, an2, an4; + * static parameter; will (normally) not be modified whilst a test; + * NOTE: + * information is redundant since number of antenna ports may implicitly be determined by the number of ports being configured */ + record length (1..4) of + AntennaPort_Type AntennaPort /* 1, 2 or 4 antennas; + * from the UE's point of view each antenna may have a different power level and a different propagation delay */ + }; + + } // End sub-sub-group Antenna_Configuration + + //---------------------------------------------------------------------------- + + group Physical_Channels { + + //****** PBCH + type record PbchConfig_Type { + ToRS_EPRE_Ratios_Type RelativeTxPower optional /* power ratio for PBCH's resource elements relative to the RS */ + }; + + //****** PFICH + type record PcfichConfig_Type { + CfiValue_Type CfiValue optional, /* control format indicator signalled on PCFICH */ + ToRS_EPRE_Ratios_Type RelativeTxPower optional /* power ratio for PFCICH's resource elements relative to the RS */ + }; + + //****** PHICH + type record PhichConfig_Type { + PHICH_Config_Type PhichConfig optional, /* parameters acc. TS 36.331, clause 6.3.2: + * phich-Duration, phich-Resource; + * may have impact on Cfi */ + ToRS_EPRE_Ratios_Type RelativeTxPower optional /* power ratio for PHICH's resource elements relative to the RS */ + }; + + //****** PDCCH + type record CCE_StartIndex_DL_UL_Type { /* CCE_St_Ind' or CCE_St_Ind'' acc. to table 7.1.1-1 in TS 36.523-3 */ + integer CCE_StartIndex_DL, + integer CCE_StartIndex_UL + }; + + type record length(10) of CCE_StartIndex_DL_UL_Type CCE_StartIndexList_Type; /* describes PDCCH candidates for all sub-frames */ + + type record PdcchCandidate_Type { /* CCE start indeces for a given RNTI value acc. to table 7.1.1-1 in TS 36.523-3 */ + C_RNTI RNTI, /* RNTI value as per table 7.1.1-1 */ + CCE_StartIndexList_Type CCE_StartIndexList /* CCE Start Indices corresponding to the RNTI */ + }; + + type record of PdcchCandidate_Type PdcchCandidateList_Type; /* list of RNTIs and their corresponding CCE Start Indices */ + + type record PdcchConfig_Type { + /* UE performs blind detection for common and UE specific search spaces for different aggregation levels (PDCCH formats acc. TS 36.211, clause 6.8.1) */ + /* content of the PDCCHs (DCI formats acc. TS 36.212, clause 5.3.3) shall be controlled together with scheduling and resource allocation */ + integer CommonSearchSpaceFormat (2, 3) optional, /* PDCCH format for common search space; + acc. to TS 36.213, clause 9.1.1 only aggregation level 4 and 8 are allowed (i.e. PDCCH format 2 and 3*/ + integer UeSpecificSearchSpaceFormat (0, 1, 2, 3) optional, /* UE specific search space: corresponding aggregation levels 1, 2, 4, 8 */ + PdcchCandidateList_Type PdcchCandidateList optional, /* PDCCH candidate list acc. to table 7.1.1-1 in TS 36.523-3 */ + ToRS_EPRE_Ratios_Type RelativeTxPower optional /* power ratio for PDCCH's resource elements relative to the RS */ + }; + + //****** PDSCH + type record PdschRelativeTxPower_Type { + /* NOTE 1: + * the power control for the PDSCH is assumed to be (semi-)static for signalling conformance tests acc. to TS 36.323; + * nevertheless for different channels and purposes with the PDSCH there may be different power settings; + * NOTE 2: + * acc. to TS 36.213, clause 5.2 the EPRE ratio is different in time domain for OFDM symbols containing or not containing reference signals; + * this needs to be considered by SS */ + ToRS_EPRE_Ratios_Type RachResponse optional, + ToRS_EPRE_Ratios_Type BcchOnPdsch optional, + ToRS_EPRE_Ratios_Type PcchOnPdsch optional, + ToRS_EPRE_Ratios_Type CcchOnPdsch optional, + ToRS_EPRE_Ratios_Type DcchDtchOnPdsch optional + }; + + type record PdschConfig_Type { + PdschRelativeTxPower_Type RelativeTxPower optional + }; + + type record EpdcchConfig_Type { + ToRS_EPRE_Ratios_Type RelativeTxPower optional, /* power ratio for ePDCCH's resource elements relative to the RS */ + EPDCCH_Config_r11 EPDCCH_Config optional + // further elements are FFS + }; + + + } // End sub-sub-group Physical_Channels + + //---------------------------------------------------------------------------- + + group Physical_Signals { + + type record PrimarySyncSignal_Type { + ToRS_EPRE_Ratios_Type RelativeTxPower optional /* power ratio for PSS's resource elements relative to the RS */ + }; + + type record SecondarySyncSignal_Type { + ToRS_EPRE_Ratios_Type RelativeTxPower optional /* power ratio for PSS's resource elements relative to the RS */ + }; + + type record CSI_ReferenceSIgnal_Type { /* CSI (Channel-State Information) reference signal configuration + * Note: there is no additional RelativeTXPower as p-C-r10 acc. to 36.213 cl. 7.2.5 Pc is the assumed ratio of PDSCH EPRE to CSI-RS EPRE. */ + CSI_RS_Config_Type CSI_RS_Config + }; + + type record SRS_UL_Config_Type { + SoundingRS_UL_ConfigCommon_Type Common, + SoundingRS_UL_ConfigDedicated_Type Dedicated + }; + + } // End sub-sub-group Physical_Signals + + //---------------------------------------------------------------------------- + + type record PhysicalLayerConfigDL_Type { + /* all fields are declared as optional to allow single reconfigurations; in this case omit means "keep as it is" */ + DownlinkAntennaGroupConfig_Type AntennaGroup optional, + PbchConfig_Type Pbch optional, + PcfichConfig_Type Pcfich optional, + PhichConfig_Type Phich optional, + PdcchConfig_Type Pdcch optional, + PdschConfig_Type Pdsch optional, + PrimarySyncSignal_Type Pss optional, + SecondarySyncSignal_Type Sss optional, + CSI_RS_Config_Type CSI_RS_Config optional, /* Mandatory to be configured in CA PCell; in other cells if present SS shall ignore it but shall apply the configuration if the cell is promoted as PCell later on. */ + PmchConfig_Type Pmch optional, /* Same power offset for all PMCH carrying MCCH or MTCH */ + EpdcchConfig_Type Epdcch optional + }; + + } // End sub-group Downlink_Physical_Layer_Configuration + + //---------------------------------------------------------------------------- + + group Uplink_Physical_Layer_Configuration { + // Uplink physical channel configuration: PRACH, PUCCH, PUSCH and UL RS + + type record PUCCH_Configuration_Type { + PUCCH_ConfigCommon_Type Common optional, + PUCCH_ConfigDedicated_Type Dedicated optional + }; + + type record PUSCH_Configuration_Type { + PUSCH_ConfigCommon_Type Common optional, + PUSCH_ConfigDedicated_Type Dedicated optional + }; + + type union SS_TimingAdvanceConfig_Type { + RACH_TimingAdvance_Type InitialValue, /* initial value corresponding to what is sent to the UE in RACH response + * (range acc. 11 bit value; 0 in normal cases) */ + TimingAdvanceIndex_Type Relative /* timing advance command to adjust changes of timing advance acc. to TS 36.213, clause 4.2.3; + * (range acc. 6 bit value: -31..32) */ + }; + + type record PhysicalLayerConfigUL_Type { + /* NOTE: + * For the time being there is no requirement to configure the SS with TPC-PDCCH-Config; + * In general SS is required to keep the UE's UL power constant */ + PRACH_Config_Type Prach optional, /* parameters acc. TS 36.331, clause 6.3.2; + * in general depending on FDD/TDD (see TS 36.211, clause 5.7) */ + PUCCH_Configuration_Type Pucch optional, /* parameters acc. TS 36.331, clause 6.3.2 */ + PUSCH_Configuration_Type Pusch optional, /* parameters acc. TS 36.331, clause 6.3.2 + * (including configuration of RS) */ + SS_TimingAdvanceConfig_Type TimingAdvance optional, /* to adjust timing advance; + * normally timing advance is configured as 0 at the beginning and never changed during the test case; + * in some MAC test cases timing advance may be configured to a non-zero (11 bit value) at the beginning and modified by (6 bit) timing advance commands during the test */ + SRS_UL_Config_Type SRS_UL_Config optional, /* sounding reference symbol (SRS); -> TS 36.213, clause 8.2, TS 36.211, clause 5.5.3 */ + SchedulingRequestConfig_Type SR_Config optional, /* PUCCH resources for scheduling requests acc. to TS 36.213 table 10.15; + * as signalled to the UE acc. to TS 36.331, clause 6.3.2 */ + CQI_ReportConfig_Type CQI_ReportConfig optional, + + UplinkPowerControlCommon_Type UplinkPowerControlCommon optional, + UplinkPowerControlDedicated_Type UplinkPowerControlDedicated optional + }; + + } // End sub-group Uplink_Physical_Layer_Configuration + + //---------------------------------------------------------------------------- + + group Common_MAC_Configuration { + /* Transport channel and MAC related procedures and configuration */ + + //---------------------------------------------------------------------------- + // common types + + type record length (1..28) of RedundancyVersion_Type RedundancyVersionListDL_Type; /* NOTE: + * in general the list shall contain maxHARQ-Tx elements; + * if there are not enough elements specified SS shall raise an error; + * per default the list is configured to 0,2,3,1,0 (TS 36.321, clause 5.4.2.2) */ + + type union UL_TransRetransmission_Type { + Null_Type NewTransmission, /* new transmission of data with redundancy version RV=0 (acc. to TS 36.321 clause 5.4.2.2); NDI is toggled */ + RedundancyVersion_Type ReTransmissionAdaptive, /* SS assigns grant to requests retransmission of data with given redundancy version; NDI is not toggled */ + Null_Type ReTransmissionNonAdaptive /* place holder for non-adaptive retransmissions; SS does not send any grant */ + }; + type record length (1..28) of UL_TransRetransmission_Type UL_TransRetransmissionList_Type; /* list of transmission and subsequent retransmissions: + * in UL retransmissions are synchronous (every 8 TTIs for FDD); + * independent from the HARQ_ModeList SS shall send grants for every adaptive retransmissions; + * in case of non-adaptive retransmissions SS simply does not sent a grant (i.e. ReTransmissionNonAdaptive elements are used to adjust timing of the adaptive restransmissions only) */ + + type integer ImcsValue_Type (0..31); /* Modulation and coding scheme index coding */ + type union Imcs_Type { + ImcsValue_Type Value, + Null_Type NotUsed + }; + + type integer TimingAdvanceIndex_Type (0..63); /* acc. to TS 36.321, clause 6.1.3.5 "Timing Advance Command MAC Control Element" + and TS 36.213, clause 4.2.3 "Transmission timing adjustments" */ + type integer TimingAdvance_Period_Type + (400, 600, 1020, 1530, 2040, 4090, 8190); /* the values correspond to 80 % of TimeAlignmentTimer (acc. to TS 36.523-3, clause 7.2) + * (TS 36.331, clause 6.3.2: sf500, sf750, sf1280, sf1920, sf2560, sf5120, sf10240) rounded to nearest multiple of 10 */ + + type union ULGrant_Period_Type { + Null_Type OnlyOnce, /* grant is sent out only once; no period */ + integer Duration (1..infinity) /* duration of the grant period (TTI=1ms); + * for TDD the starting time and periodicity need to be chosen in TTCN so that the grants are assigned at valid subframes only; otherwise SS shall raise an error */ + }; + + type union TransmissionRepetition_Type { + Null_Type Continuous, + integer NumOfCycles (1..infinity) + }; + + type record PUCCH_AutoSynch_Type { + TimingAdvanceIndex_Type TimingAdvance, + TimingAdvance_Period_Type TA_Period, /* time period after which TA MAC control elements need to be automatically transmitted */ + TransmissionRepetition_Type TA_Repetition /* number of TA MAC control element repetitions to be automatically transmitted or 'Continuous' */ + }; + + type union PUCCH_Synch_Type { + Null_Type None, /* no PUCCH Synchronisation applied */ + PUCCH_AutoSynch_Type Auto /* SS automatically maintains PUCCH synchronization at UE + * If the cell is a + * - Rel 10 or earlier cell + * - or Rel 11 or later Pcell + * - or the Rel-11 or later scell with no STAG-ID configured, + * the TAG-ID is set to '00' i.e. P-TAG in Timing advance MCE + * If the cell is Rel 11 scell with STAG-ID configured, the configured stag-ID is used as TAG-ID in Timing advance MCE + */ + }; + + type record FreqDomainSchedulCommon_Type { + /* common type to specify restrictions for frequency domain scheduling by a start index and a maximum range of RBs; + * in general the resource allocation refers to virtual resource blocks: + * - format 1A (localised): + * FirstRbIndex refers to the first physical RB; the RBs are subsequent (upto MaxRbCnt RBs); + * may be applied for all kind of channels + * - format 1C (distributed): + * FirstRbIndex refers to the first virtual RB; the virtual RBs are subsequent (upto MaxRbCnt RBs) + * but mapped (distributed) to physical resource; typically applied on BCCH, PCCH and RAR + * - format 1 (localised): + * FirstRbIndex refers to the first physical RB; RBs are not consecutive; + * SS needs to provided bitmap of RBs (see TS 36.523-3) to cope with mapping of virtual resource allocation (format 1C) applied on other channels; + * typically there are either + * - all channels having format 1A (localised) + * - BCCH, PCCH and RAR having format 1C (distributed) + DTCH/DCCH having format 1 */ + integer FirstRbIndex, /* index of the first (vitual) resource block in frequency domain; + * 0 .. N(UL/DL, RB) - 1; + * NOTE: + * DCI format 1C refers to a virtual RB allocation i.e. the resource block index; + * differs from the physical resource allocation + * where the RBs are distributed over the whole frequency bandwidth (TS 36.213, clause 7.1.6.3) */ + integer MaxRbCnt /* max. number of resource blocks to be assigned; + * FirstRbIndex + MaxRbCnt <= N(UL/DL, RB); + * SS shall not assigned more than the given resource blocks to the respective channel + * (i.e. MaxRbCnt is the upper bound); + * if the the configuration for a channel exceeds the total bandwidth this is a TTCN error + * (=> SS shall raise an error) */ + }; + + type record FreqDomainSchedulExplicit_Type { + /* type used for explicit DL scheduling; Nprb is the exact nunber of RBs whereas in FreqDomainSchedulCommon_Type MaxRbCnt is the upper bound */ + integer FirstRbIndex, /* index of the first resource block in frequency domain; + * 0 .. N(UL/DL, RB) - 1 */ + integer Nprb /* number of resource blocks to be assigned; */ + }; + + type enumerated PdcchDciFormat_Type { /* DCI format acc. to TS 36.212, clause 5.3.3.1; + * SS shall apply physical parameters accordingly as specified in TS 36.508, clause 4.3.6 */ + dci_0, /* physical layer parameters acc. TS 36.508 Table 4.3.6.1.1-1 */ + dci_1, /* physical layer parameters acc. TS 36.508 Table 4.3.6.1.2-1 */ + dci_1A, /* physical layer parameters acc. TS 36.508 Table 4.3.6.1.3-1 */ + dci_1B, + dci_1C, /* physical layer parameters acc. TS 36.508 Table 4.3.6.1.4-1 */ + dci_1D, + dci_2, /* physical layer parameters acc. TS 36.508 Table 4.3.6.1.5-1 */ + dci_2A, /* physical layer parameters acc. TS 36.508 Table 4.3.6.1.6-1 */ + dci_2B, + dci_2C, + dci_2D, + dci_3, + dci_3A, + dci_4 + }; + + type enumerated PdcchResourceAllocation_Type { /* Resource allocation acc. TS 36.213, clause 7.1.6 */ + ra_0, + ra_1, + ra_2_Localised, /* => physical and virtual RB index are identical */ + ra_2_Distributed /* => virtual resource allocation */ + }; + + type union MIMO_PrecodingBits_Type { /* Number of bits for precoding information acc. TS 36.212, table 5.3.3.1.5-3 and 5.3.3.1.5A-1 */ + Null_Type None, /* DCI 2A: 2 antenna ports at eNodeB (table 5.3.3.1.5A-1) */ + B2_Type Bit2, /* DCI 2A: 4 antenna ports at eNodeB (table 5.3.3.1.5A-1) */ + B3_Type Bit3, /* DCI 2: 2 antenna ports at eNodeB (table 5.3.3.1.5-3) */ + B6_Type Bit6 /* DCI 2: 4 antenna ports at eNodeB (table 5.3.3.1.5-3) */ + }; + + type record MIMO_DciDlInfo_Type { /* additional information for DL DCI in case of MIMO (i.e. when a 2nd CW is specified) */ + RedundancyVersionListDL_Type RedundancyVersionList_2ndCW optional, /* list of Redundancy version for 2nd code word; + * shall have the same length as RedundancyVersionList_1stCW; + * if omit, for the 2nd CW the same RedundancyVersionList shall be applied as for the 1st CW */ + B1_Type CodeWordSwapFlag, /* transport block to codeword mapping acc. to TS 36.212 Table 5.3.3.1.5-1 */ + MIMO_PrecodingBits_Type PrecodingBits /* precoding information acc. TS 36.212, table 5.3.3.1.5-3 and 5.3.3.1.5A-1 */ + }; + + type record DciDlInfoCommon_Type { + /* used for normal DL scheduling acc. to TS 36.523-3, clause 7.3 */ + PdcchDciFormat_Type Format, /* BCCH, PCCH and RACH Response: 1A or 1C (TS 36.213, clause 7.1) + * CCCH: 1A since transmission mode is not (may not be) configured at the UE yet (TS 36.213, clause 7.1) + * DTCH/DCCH: depending on transmission mode */ + PdcchResourceAllocation_Type ResourceAllocType, /* depends on DCI format, e.g. ra_2_Localised or + * ra_2_Distributed for DCI format 1A */ + Modulation_Type Modulation_1stCW, /* max. modulation scheme for the 1st code word; + * depending on the amount of data a lower modulation scheme may be by SS but not a higher one; + * BCCH, PCCH and RACH Response: QPSK only */ + Modulation_Type Modulation_2ndCW, /* modulation scheme for 2nd code word in case of spatial multiplexing; + * can be different than 1st code word (see TS 36.211, clause 6.3.2; TS 36.212, clause 5.3.3.1.5); + * 'unused' when there is no spatial multiplexing; + * NOTE: + * Acc. to 36.523-3 cl. 7.3.3.4 in normal mode MIMO shall not be used + * => for the time being Modulation_2ndCW is always "unused" */ + FreqDomainSchedulCommon_Type FreqDomainSchedul, /* index of 1st RB; max. number of RBs per TTI; + * NOTE: + * in case of DCI format 1C the first RB index has no meaning since distributed virtual resource blocks assigned in this case (TS 36.213, clause 7.1.6.3) */ + RedundancyVersionListDL_Type RedundancyVersionList /* list of Redundancy version to be used in case of retransmission; + * the number of elements in the list provides the maxHARQ-Tx */ + }; + + type record DciDlInfoExplicit_Type { + /* used for explicit DL scheduling acc. to TS 36.523-3, clause 7.3 */ + Imcs_Type Imcs_1stCW, /* MCS index of table 7.1.7.1-1 of TS 36.213 */ + Imcs_Type Imcs_2ndCW, /* MCS index for the 2nd code word in case of MIMO; + 'NotUsed' when MIMO is not used */ + PdcchDciFormat_Type Format, + PdcchResourceAllocation_Type ResourceAllocType, + FreqDomainSchedulExplicit_Type FreqDomainSchedul, + RedundancyVersionListDL_Type RedundancyVersionList, /* list of Redundancy version to be used in case of retransmission the number of elements in the list provides the maxHARQ-Tx */ + MIMO_DciDlInfo_Type MimoInfo optional /* shall be present when Imcs_2ndCW specifies a 2nd CW to be used; + * shall be omit when Imcs_2ndCW is 'NotUsed' */ + }; + + type union DciDlInfo_Type { + DciDlInfoCommon_Type Auto, /* SS shall chose the appropriate TBS up to the maximim number of resource blocks */ + DciDlInfoExplicit_Type Explicit /* used in MAC or RAB tests where exact TBS needs to be specified */ + }; + + type record DciUlInfo_Type { + Imcs_Type Imcs, /* MCS index of table 8.6.1-1 of TS 36.213 */ + UL_TransRetransmissionList_Type TransRetransmissionList,/* list of possible retransmissions and their redundancy versions (depending on being adapive or non-adaptive); + * the list shall + * - start with + * - "New Transmission" (normal case) or + * - "Adaptive Retransmission" (e.g. to request a retransmission even when the data has been acknowledged with a HARQ ACK) + * - end with "Adaptive Retransmission" (if there are retransmissions) + * NOTE1: TTCN implementation shall ensure that a reconfiguration is done not before the previous list has been fully processed + * NOTE2: for normal operation the list contains only one NewTransmission element (i.e. possible retransmissions are non-adaptive) */ + FreqDomainSchedulExplicit_Type FreqDomainSchedul + }; + + type record PeriodicGrant_Type { + ULGrant_Period_Type Period, /* time period after which UL Grant need to be automatically transmitted or 'OnlyOnce' */ + TransmissionRepetition_Type NoOfRepetitions /* number of UL Grant repetitions to be automatically transmitted or continuous repetition */ + }; + + type union UL_GrantConfig_Type { + Null_Type OnSR_Reception, /* SS tranmits UL Grant as configured by CommonDciInfoUL_Type at every reception of SR; + * to be used in non L2 Test */ + PeriodicGrant_Type Periodic, /* SS tranmits UL Grant as configured by CommonDciInfoUL_Type periodically; + * to be used in L2 tests; + * MAC tests testing Grants might set the period as infinite and num grant as 1 */ + Null_Type None /* disable any grant transmission */ + }; + + } // End sub-group Common_MAC_Configuration + + //---------------------------------------------------------------------------- + + group Random_Access_Procedure { + + type record UplinkGrant_Type { /* TS 36.213, clause 6.2 */ + B1_Type HoppingFlag, /* Hopping flag */ + B10_Type RB_Allocation, /* Fixed size resource block assignment */ + B4_Type ModAndCodScheme, /* Truncated modulation and coding scheme */ + B3_Type TPC_Command, /* TPC command for scheduled PUSCH */ + B1_Type UL_Delay, /* UL delay */ + B1_Type CQI_Req /* CQI request */ + }; + type integer RACH_TimingAdvance_Type (0..2047); /* 11 bit timing advance as used in RACH response (absolute value) */ + + const ContentionResolutionId_Type tsc_ContentionResolutionId_Unchanged := int2bit(0, 48); + const ContentionResolutionId_Type tsc_ContentionResolutionId_Unmatch := (int2bit(1, 48) << 20); + + type union ContentionResolution_ContainedRlcPdu_Type { + octetstring RlcPdu, /* octetstring of an RLC PDU containing e.g. the RRC Connection Setup; + * to be sent in the same MAC PDU as the MAC Contention Resolution Control Element */ + Null_Type None /* MAC PDU containing the MAC Contention Resolution Control Element does not contain an RLC PDU + * (i.e. RRC Connection Setup is sent in another PDU) */ + }; + + type union ContentionResolution_ContainedId_Type { + ContentionResolutionId_Type XorMask, /* When SS receives Contention Resolution ID from the UE, + * SS shall XOR it with the given mask and use this as Contention Resolution ID; + * this allows to get an unmatching Contention Resolution ID; + * in normal cases mask shall be set to tsc_ContentionResolutionId_Unchanged + * (i.e. the Contention Resolution ID remains unchanged) */ + Null_Type None /* MAC Contention Resolution Control Element is not contained in the MAC PDU sent out as response on Msg3 */ + }; + + type record TCRNTI_ContentionResolutionMacPdu_Type { /* NOTE: + * Either ContainedId or ContainedRlcPdu (or both) shall not be 'none'; + * (if no Contention Resolution Mac Pdu shall be sent, TCRNTI_ContentionResolutionCtrl_Type.NoContResolID shall be used instead) */ + ContentionResolution_ContainedId_Type ContainedId, /* Either the Contention Resolution ID as received from the UE + * or a modified Contention Resolution ID (XorMask != tsc_ContentionResolutionId_Unchanged) + * or no Contention Resolution ID at all */ + ContentionResolution_ContainedRlcPdu_Type ContainedRlcPdu /* the MAC PDU containing the MAC Contention Resolution Control Element may contain the RRC Connection Setup; + * in this case the RRC PDU shall be completely encoded been contained in an RLC PDU */ + }; + + type union TCRNTI_ContentionResolutionCtrl_Type { /* when the UE responds on a Random Access Response with a RRC Connection Request on CCCH + * and not with a C-RNTI SS shall assume initial Random Access Procedure (TS 36.300, clause 10.1.5.1), + * i.e. sends a ContentionResolutionId back to the UE */ + TCRNTI_ContentionResolutionMacPdu_Type MacPdu, /* MAC PDU containing the Contention Resolution ID and optionally an RRC PDU (RRC Connection Setup) */ + TCRNTI_ContentionResolutionMacPdu_Type MacPdu_CRC_Error, /* same as MacPdu (see above), + * but SS shall generate CRC error by toggling CRC bits; + * no retransmissions shall be made as UE shall not send a NACK */ + Null_Type NoContResolID /* SS shall not include contention resolution ID (i.e. no MAC PDU shall be sent); + * used for contention resolution fail case */ + }; + + type union CRNTI_ContentionResolutionCtrl_Type { /* configuration for Random Access Procedure in RRC_CONNECTED (see TS 36.300, clause 10.1.5.1); + * when SS receives C-RNTI MAC element sent by the UE after Random Access Response, + * SS shall deal with the C-RNTI as specified in this structure */ + DciUlInfo_Type AutomaticGrant, /* before expiry of the contention resolution timer SS shall automatically address PDCCH + * using C-RNTI as sent by the UE; the UL grant is specified acc. to DciUlInfo_Type */ + Null_Type None /* Used in case of dedicated preamble transmission or to simulate failure cases; + * SS shall not address PDCCH using C-RNTI + * => expiry of contention resolution timer on UE side */ + }; + + type union ContentionResolutionCtrl_Type { /* NOTE: SS only needs to consider one kind of contention resolution at one time; + * in the initial configuration of a cell TCRNTI_Based shall be configured and + * the common assuption is that in RRC_CONNECTED normally there are no RACH procedures + * (i.e. no CRNTI_Based configuration needed) + * whereas e.g. in case of handover scenarios CRNTI_Based shall be configured */ + TCRNTI_ContentionResolutionCtrl_Type TCRNTI_Based, /* TCRNTI based contention resolution (e.g. initial access), + * hence involves inclusion contention resolution identity in DL message 4 of RACH procedure */ + CRNTI_ContentionResolutionCtrl_Type CRNTI_Based /* CRNTI based contention resolution (e.g. in case UE is being in RRC_CONNECTED): + * hence uplink message in step 3 (of RACH procedure) is followed by PDCCH transmission with UE C-RNTI to end procedure */ + }; + + type union RapIdCtrl_Type { + Null_Type Automatic, /* SS shall automatically use same RAPID as received from the UE */ + Null_Type Unmatched /* SS shall use RAPID being different from preamble sent by the UE; + * SS shall calculate this RAPID acc. to RAPID := (RAPID + 3..63) mod 64 + * if single RAR is transmitted in a MAC PDU then only 3 is added + * if multiple RAR's are transmitted in MAC PDU, then for first unmatched RAR 3 is added, second unmatched 4 is added, third unmatched 5 is added and so on */ + }; + + type union TempC_RNTI_Type { + Null_Type SameAsC_RNTI, /* in the RA response SS shall use the same C-RNTI as configured in ActiveCellConfig_Type; + * this is useful for initial random access */ + C_RNTI Explicit /* in the RA response SS shall use different value as configured in ActiveCellConfig_Type; + * this can be used when the UE already is in RRC_CONNECTED to have a temporary C-RNTI different from the one used by the UE; + * NOTE: when the UE is not in RRC_CONNECTED there shall be no explicit temp. C-RNTI since then the UE would assume this value as C-RNTI */ + }; + + type record RandomAccessResponseParameters_Type { /* paramenters to control content of RAR sent to the UE */ + RapIdCtrl_Type RapId, /* to control Random Access Preamble Id to be sent back to the UE; used in RAR MAC sub-header */ + UplinkGrant_Type InitialGrant, /* initial UL grant */ + RACH_TimingAdvance_Type TimingAdvance, /* timing advance: granularity of 0.52 micro sec (16*Ts); + * see TS 36.300, clause 5.2.7.3, TS 36.321, clause 6.1.3.5; + * NOTE: + * timing advance has impact not only on the RA procedure; + * SS in general needs to adjust its timing accordingly */ + TempC_RNTI_Type TempC_RNTI /* NOTE: + * For initial Random Access Procedure at network (SS) side there is no temporary C-RNTI: + * network assigns the C-RNTI which is used by any UE as being temporary; + * the UE which 'wins' the contention resolution keeps the (temporary) C-RNTI; + * other UEs need to repeat the RACH procedure; + * => at the SS the TempC_RNTI shall be 'SameAsC_RNTI' + * For Random Access Procedure in RRC_CONNECTED state the NW assigns a temporary C-RNTI which is replaced by the one stored at the UE; + * => TempC_RNTI may be 'SameAsC_RNTI' (in this case temp. C-RNTI and C-RNTI are equal what is not likely in a real network), + * or there is an explicit temp. C-RNTI what is used during RA procedure only (as in a real network) */ + }; + type record of RandomAccessResponseParameters_Type RarList_Type; /* in general MAC PDU may contain one or several RARs; + * normally only one RAR is contained */ + + type union RandomAccessResponse_Type { + Null_Type None, /* used for unsuccessful RA procedure */ + RarList_Type List /* normally one RAR to be sent to the UE; in general there can be more than one RAR */ + }; + + type union RandomAccessBackoffIndicator_Type { + Null_Type None, /* normal case, no back off indicator included */ + integer Index (0..15) /* Backoff Parameter values acc. TS 36.321, clause 7.2; + * values 0..12 are defined, 13..15 may be used in error case */ + }; + + type record RandomAccessResponseCtrl_Type { /* configuration for Random Access Response mapped to DL-SCH mapped to PDSCH */ + /* TransmissionMode: single antenna mode when there is only one antenna configured, transmit diversit else; + RNTI: RA-RNTI (TS 36.321, clause 7.1); + if both RAR msg and backoff indicator are 'None' SS shall not respond on RAP */ + DciDlInfoCommon_Type DciInfo, /* DCI format: 1A or 1C (TS 36.213, clause 7.1) + * ResourceAllocType: 2 (acc. to DCI format) + * Modulation: QPSK + * Frequency domain schedule: index of 1st RB; max. number of RBs per TTI */ + RandomAccessResponse_Type Rar, /* RAR to be sent to the UE */ + RandomAccessBackoffIndicator_Type BackoffInd /* possible backoff indicator; 'None' for normal cases */ + }; + + type union RandomAccessResponseConfig_Type { + RandomAccessResponseCtrl_Type Ctrl, /* contains information to control sending of RAR */ + RandomAccessResponseCtrl_Type Ctrl_CRC_Error, /* same as Ctrl (see above), but MAC PDU transmitted will contain CRC bits (0-3) being toggled; + * no retransmissions shall be made as UE shall not send a NACK */ + Null_Type None /* to be used when there is no RAR to be sent at all */ + }; + + type record RachProcedure_Type { + RandomAccessResponseConfig_Type RAResponse, /* control of how the SS shall react on RA preamble; + * this may be + * - the RAP id as expected by the UE + * - a RAP id not matching to the UE's RAP + * - a backoff indicator + * - nothing at all */ + ContentionResolutionCtrl_Type ContentionResolutionCtrl + /* control of how the SS shall react on (first) scheduled transmission from UE: + * 1. UE sends CCCH SDU => contention resulation based on contention resolution id + * 1.a) successful contention resolution: contention resolution id matched to CCCH SDU + * 1.b) unsuccessful contention resolution: contention resolution id does not match + * 2. UE sends C-RNTI => contention resolution based on C-RNTI + * 2.a) successful contention resolution: SS addresses C-RNTI (e.g. UL-grant) + * 2.b) unsuccessful contention resolution: SS does not address C-RNTI (timeout at UE) */ + }; + + const integer tsc_RandomAccessResponseListSize := 10; /* arbitrary value (needs to be extended, if necessary); + * in case of RACH in idle, UE will keep on making RACH attempts until t300 expires + * => number of PRACH preambles maybe even greater than maximum value of PREAMBLE_TRANS_MAX */ + + type record length(1..tsc_RandomAccessResponseListSize) of + RachProcedure_Type RachProcedureList_Type; /* to simulate RACH procedure with one or more than one attempt by the UE: + * 1. Normal cases: + * one single RandomAccessResponse is sent to the UE matching the UE's RACH preamble; + * contention resolution is successful immediately + * => list contains only one element which is used for any RA procedure + * (Even if a RACH procedure is repeated by the UE for any reason this element shall be used; + * e.g. it needs not to be handled as error when the UE sends another RACH preamble instead of the RRC connection request message) + * 2. Special cases: + * there are upto tsc_RandomAccessResponseListSize preambles sent by the UE + * => there are upto tsc_RandomAccessResponseListSize responses to be configured as elements of the list; + * SS shall start with the first element in the list and use the RAR as specified in this element; + * if the RAR matches at the UE side the UE will send UL data and contention resolution is performed as configured for this element; + * if the RAR does not match the UE sends another RAP and SS continues with the next element in the list; + * in this case the contention resolution of the respective element is not used; + * if the end of the list is reached and further RACH preambles are sent by the UE SS shall repeatively apply the last element of the list + * (this is necessary because there might be not enough time to reconfigure SS after the end of the list has been reached and there shall be well-defined behaviour after the list has been processed); + * + * to change from a special mode to normal mode the RachProcedureList is reconfigured by TTCN to achieve transparency and readability of the code; + * + * NOTE: + * when there are RACH_ConfigDedicated configured (see below) and the RA preamble matches with one the configured ones the contention resolution ctrl is obsolete (non contention based random access procedure) */ + + type record RachProcedureConfig_Type { + /* parameters to control the random access procedure; TS 36.321, clause 5.1 */ + RACH_ConfigCommon_Type RACH_ConfigCommon optional, /* acc. TS 36.331, clause 6.3.2; may not be necessary for SS; + * omit: "keep as it is" */ + RACH_ConfigDedicated_Type RACH_ConfigDedicated optional, /* acc. TS 36.331, clause 6.3.2; + * when random access preamble sent by the UE matches with the configured one, + * SS shall assume the random access procedure being non-contention based; + * initial configuration: no RACH_ConfigDedicated are configured; + * omit means "keep as it is" */ + RachProcedureList_Type RachProcedureList optional /* in normal cases there is one element which is used for any RA procedure; + * special cases are used in MAC test cases; + * omit means "keep as it is" + * If the cell is an Active Scell, the RACH procedure configuration in the Active Scell controls + * the RAR transmission in the associated Pcell, for received PRACH preamble in Scell + */ + }; + + } // End sub-group Random_Access_Procedure + + //---------------------------------------------------------------------------- + + group System_Information_Control { /* Primitive to configuration BCCH/BCH */ + + // ***** PBCH (MIB) + type Null_Type BcchToPbchConfig_Type; /* place holder for BCCH mapped to BCH mapped to PBCH: + * MIB using fixed scheduling (periodicity: 40ms); + * transmission mode: + * single antenna port configuration (layer mapping acc. TS 36.211, clause 6.3.3.1) + * or transmit diversity (layer mapping acc. TS 36.211, clause 6.3.3.3) depending on antenna configuration */ + // ***** PDSCH (SIB1) + type record Sib1Schedul_Type { /* SIB1: fixed scheduling in time domain acc. TS 36.331, clause 5.2.1.2 (periodicity: 80ms; repetitions every 20ms) */ + DciDlInfoCommon_Type DciInfo optional /* DCI format: 1A or 1C (TS 36.213, clause 7.1) + * ResourceAllocType: 2 (acc. to DCI format) + * Modulation: QPSK + * Frequency domain schedule: index of 1st RB; max. number of RBs per TTI */ + }; + + // ***** PDSCH (all other SIs) + type record SingleSiSchedul_Type { /* specifies scheduling for a single SI in freq and time domain */ + DciDlInfoCommon_Type DciInfo optional, /* DCI format: 1A or 1C (TS 36.213, clause 7.1) + * ResourceAllocType: 2 (acc. to DCI format) + * Modulation: QPSK + * Frequency domain schedule: index of 1st RB; max. number of RBs per TTI */ + integer SubframeOffset optional /* offset within the SI-window; + * NOTE: SI-window may span more than one frame */ + }; + + type record SiSchedul_Type { /* specifies for a specific SI scheduling and repetitions within as SI window */ + SiPeriodicity_Type Periodicity optional, + record of + SingleSiSchedul_Type Window optional /* NOTE: + * acc. to TS 36.331, clause 5.2.1.2 the same SI may occur more than once in an SI-window; + * to allow this there is a "record of" even though acc. to TS 36.508, clause 4.4.3.3 all SIs are sent only once within the window */ + }; + + type record length(1..maxSI_Message) of SiSchedul_Type SiSchedulList_Type; + + type record AllSiSchedul_Type { + SiWindowLength_Type WindowLength optional, /* to calculate start of each SI window acc. TS 36.331, clause 5.2.3 */ + SiSchedulList_Type SiList optional, /* list of scheduling info for the SIs containing one ore more SIBs */ + SiSchedulList_Type SegmentedSiList optional /* list of scheduling info for segmented SIs (e.g. SI containing SIB11); + * corresponds to SegmentedSIs in BcchInfo_Type: SS shall subsequently schedule the elements of the corresponding SegmentedSIs (BcchInfo_Type); + * e.g. SegmentedSiList[i] provided scheduling info for BcchInfo_Type's SegmentedSIs[i] and the kth element of SegmentedSIs[i] is sent at + * T0 + ((K * N) + k) * periodicity + * with + * K: number for segments + * k = 0 .. K-1 + * N = 0, 1, 2, ... + * T0, peridicity: scheduling info as given by SegmentedSiList[i] */ + }; + + // ***** PDSCH (SIB1 + SIs) + type record BcchToPdschConfig_Type { /* configuration for BCCH mapped to DL-SCH mapped to PDSCH */ + /* TransmissionMode: single antenna mode when there is only one antenna configured, transmit diversity else; + RNTI: SI-RNTI (TS 36.321, clause 7.1) */ + Sib1Schedul_Type Sib1Schedul optional, /* scheduling of SIB1 in frequency domain */ + AllSiSchedul_Type SiSchedul optional /* scheduling of SIs in frequency and time domain */ + }; + + type record of BCCH_DL_SCH_Message SI_List_Type; /* TS 36.331, clause 6.2.1 BCCH-DL-SCH-Message and clause 6.2.2 SystemInformation */ + type record of SI_List_Type SegmentedSI_List_Type; /* Each element is a list of segments; + used for SIB11/12 segmentation */ + + // ***** content of system information + type record BcchInfo_Type { + /* all fields are declared as optional to allow modification of single field; + * acc. to TS 36.331, clause 9.1.1.1 "RRC will perform padding, if required due to the granularity of the TF signalling, as defined in 8.5."; + * therefore this needs to be done by the system simulator */ + BCCH_BCH_Message MIB optional, /* TS 36.331, clause 6.2.1 BCCH-BCH-Message and clause 6.2.2 MasterInformationBlock; + * NOTE: + * the sequence number included in MIB needs to be handled and maintained by the system simulator; + * that means that the sequence number being setup by TTCN will be overwritten by SS */ + BCCH_DL_SCH_Message SIB1 optional, /* TS 36.331, clause 6.2.1 BCCH-DL-SCH-Message and clause 6.2.2 SystemInformationBlockType1 */ + SI_List_Type SIs optional, /* list of SIs corresponding to SiList of AllSiSchedul_Type + * (i.e. element i of AllSiSchedul_Type's SiList specifies the scheduling for SIs[i]) */ + SegmentedSI_List_Type SegmentedSIs optional /* list of SIs containing segmented SIBs; + * corresponds to SegmentedSiList in AllSiSchedul_Type */ + }; + + // ***** configuration for BCCH + type record BcchConfig_Type { + /* all fields are optional to allow single modifications; + * activation time may be applied in the common part of the ASP; + * NOTE 1: + * acc. to TS 36.331, clause 9.1.1.1 there is no PDCP and RLC/MAC are in TM + * NOTE 2: + * mapping/scheduling and contents of the System Information in general is done in one go + * (i.e. there are no separate ports for SIB data and configuration) */ + BcchToPbchConfig_Type Pbch optional, + BcchToPdschConfig_Type Pdsch optional, + BcchInfo_Type BcchInfo optional, + Null_Type StopSib1Transmission optional /* if omitted: + * SS transmits SIB1 last provided in BcchInfo and associated DCI. + * + * if set: + * SS shall stop transmission of SIB1 and associated DCI. + * + * To resume SIB1 transmission, this flag shall be omitted and SIB1 shall be provided in BcchInfo. */ + }; + + } // End sub-group System_Information_Control + + //---------------------------------------------------------------------------- + + group Paging_Control { /* Primitive to configuration PCCH/PCH */ + + type record PcchConfig_Type { /* configuration for PCCH mapped to PCH mapped to PDSCH */ + /* TransmissionMode: single antenna mode when there is only one antenna configured, transmit diversity else; + * RNTI: P-RNTI (TS 36.321, clause 7.1) + * NOTE: acc. to TS 36.331, clause 9.1.1.3 there is no PDCP and RLC/MAC are in TM */ + DciDlInfoCommon_Type DciInfo optional /* DCI format: 1A or 1C (TS 36.213, clause 7.1) + * ResourceAllocType: 2 (acc. to DCI format) + * Modulation: QPSK + * Frequency domain schedule: index of 1st RB; max. number of RBs per TTI */ + }; + + } // End sub-group Paging_Control + + //---------------------------------------------------------------------------- + + group UE_Specific_Channel_Configuration { + + group UE_Specific_Channel_Configuration_DL { /* Scheduling and other information for CCCH/DCCH/DTCH mapped to DL-SCH mapped to PDSCH */ + + group MIMO_Configuration { /* Precoding information for spatial multiplexing (DCI format 2) */ + + type union PrecodingInfoForOneCodeWord_Type { + /* NOTE: not all index values may make sense (e.g. the indices refering to the values reported by the UE) */ + integer TwoAntennasClosedLoop (0..6), /* index acc. to TS 36.212 Table 5.3.3.1.5-2; + * RI = 1; transmit diversity or code book index 0..3 acc. TS 36.211 Table 6.3.4.2.3-1 */ + integer FourAntennasClosedLoop (0..34), /* index acc. to TS 36.212 Table 5.3.3.1.5-3; + * RI = 1..2; transmit diversity or code book index 0..15 acc. TS 36.211 Table 6.3.4.2.3-2 */ + Null_Type TwoAntennasOpenLoop, /* no precoding info; RI=1 when only codeword 1 is enabled */ + integer FourAntennasOpenLoop (0..1) /* index acc. to TS 36.212 Table 5.3.3.1.5-4 + * RI = 1..2; RI=1 => transmit diversity; RI=2 => large delay CDD */ + }; + type union PrecodingInfoForTwoCodeWords_Type { + /* NOTE: not all index values may make sense (e.g. the indices refering to the values reported by the UE) */ + integer TwoAntennasClosedLoop (0..2), /* index acc. to TS 36.212 Table 5.3.3.1.5-2; + * RI = 2; code book index 1, 2 acc. TS 36.211 Table 6.3.4.2.3-1 */ + integer FourAntennasClosedLoop (0..50), /* index acc. to TS 36.212 Table 5.3.3.1.5-3; + * RI = 2..4; code book index 0..15 acc. TS 36.211 Table 6.3.4.2.3-2 */ + Null_Type TwoAntennasOpenLoop, /* no precoding info; RI=2 when both codewords are enabled */ + integer FourAntennasOpenLoop (0..2) /* index acc. to TS 36.212 Table 5.3.3.1.5-4 + * RI = 2..4; large delay CDD */ + }; + type union PrecodingInfoIndex_Type { + PrecodingInfoForOneCodeWord_Type OneCodeWord, /* only codeword 1 shall be enabled in the DCI */ + PrecodingInfoForTwoCodeWords_Type TwoCodeWords /* both codewords shall be enabled in the DCI */ + }; + + type enumerated PrecodingOperationMode_Type { /* how to determine precoding information for spatial multiplexing is signalled on PDCCH with DCI format 2 and 2A (TS 36.212, clause 5.3.3.1.5) */ + hardcoded, /* SS shall apply configured precoding info as configured regardless RI and PMI reported by the UE */ + automatic /* SS shall apply configured precoding info as long as there are no RI and PMI reported by the UE; + * when there are RI and PMI reported by the UE these shall be used */ + }; + + type record SpatialMultiplexingInfo_Type { + /* NOTE: there may be codebookSubsetRestriction as signalled to the UE (TS 36.331, clause 6.3.2 AntennaInfoDedicated) to be considered */ + PrecodingOperationMode_Type OperationMode, + PrecodingInfoIndex_Type PrecodingIndex /* NOTE: contains information about number of code words to be used in DCI format 2 */ + }; + + type union MimoInfo_Type { + Null_Type NoMimo, + SpatialMultiplexingInfo_Type Spatial + }; + + } // End sub-sub-sub-group MIMO_Configuration + + //============================================================================ + + type union HarqProcessConfigDL_Type { /* HARQ processes to be used automatically for DL assignments */ + Null_Type AllProcesses, /* all HARQ processes shall be used for automatic assignmnet; this is the normal case */ + HarqProcessList_Type SpecificSubset /* only the HARQ processes of this list shall be used automatically, other processes are excluded from automatic assignments; + * nevertheless all HARQ processes may be addressed explicitly by DRB_DataPerSubframe_DL_Type.HarqProcess */ + }; + + type record CcchDcchDtchConfigDL_Type { /* configuration for CCCH/DCCH/DTCH mapped to DL-SCH mapped to PDSCH */ + /* TransmissionMode: as signalled to the UE (AntennaInfoDedicated in RRCConnectionSetup); + * RNTI: C-RNTI (TS 36.321, clause 7.1); + * all fields optional (omit = "keep as it is") since DCI format and modulation may be changed during a test; + * for initial configuration all fields are mandatory */ + DciDlInfo_Type DciInfo optional, /* DCI format: 1A per default since for CCCH mimo cannot be applied in general + * ResourceAllocType: (depending on DCI format) + * Modulation: QPSK for signalling + * Frequency domain schedule: index of 1st RB; max. number of RBs per TTI; + * in case of spatial multiplexing if there are 2 code words FreqDomainSchedul shall be applied to both */ + AntennaInfoDedicated_Type AntennaInfo optional, /* as signalled to the UE (TS 36.331, clause 6.3.2): transmissionMode, codebookSubsetRestriction */ + HarqProcessConfigDL_Type HarqProcessConfig optional /* HARQ processes automatically used by the SS in DL */ + }; + + } // End sub-sub-group UE_Specific_Channel_Configuration_DL + + //============================================================================ + + group UE_Specific_Channel_Configuration_UL { /* Scheduling information for CCCH/DCCH/DTCH mapped to UL-SCH mapped to PUSCH */ + + type union PucchHoppingBits_Type { /* Number of hopping bits acc. to TS 36.213 table 8.4-2 */ + B1_Type OneBit, /* N(UL, RB) = 6..49 i.e. default system bandwid this less than 10 MHz (does not include 10 MHz) */ + B2_Type TwoBits /* N(UL, RB) = 50..110 i.e. default system bandwidth is 10 MHz or above */ + }; + + type record UplinkHoppingResourceParameters_Type { + PucchHoppingBits_Type PucchHopping /* to control hopping resource allocation as signalled in DCI format 0 (TS 36.212, clause 5.3.3.1.1) */ + }; + + type union UplinkHoppingControl_Type { /* shall be considered by SS to fill in the information needed for DCI format 0 (TS 36.213, clause 7.1) */ + Null_Type Deactivated, + UplinkHoppingResourceParameters_Type Activated + }; + + type record CcchDcchDtchConfigUL_Type { /* scheduling for CCCH/DCCH/DTCH mapped to UL-SCH mapped to PUSCH */ + /* NOTE 1: + * for definition of the possible UL grants the location of the PUCCH (TS 36.211, clause 5.4.3) + * and the PRACH (TS 36.211, clause 5.7.3) need to be taken into account; + * NOTE 2: + * In contrast to the DL where the scheduling can be done (with consideration of some restrictions) by SS on a per need basis in the UL the scheduling depends on information provided by the UE: e.g. BSR (buffer status report), SR (scheduling request) + * see TS 36.523-3 clause 7.2 for further information. */ + DciUlInfo_Type DciInfo optional, /* DCI format: 0 (TS 36.213, clause 7.1) + * ResourceAllocType: 2 (acc. to DCI format) + * Modulation: QPSK per default + * Frequency domain schedule: index of 1st RB; max. number of RBs per TTI + * (upper bound up to which SS may assign grants to the UE) */ + UplinkHoppingControl_Type Hopping optional, /* when Hopping = 'Activated' SS shall set hopping flag in DCI format 0 */ + PUCCH_Synch_Type PUCCH_Synch optional, /* parameters to control automatic control of timing advance */ + UL_GrantConfig_Type UL_GrantConfig optional /* UL grant allocation to be applied */ + + // for TDD there will be additional parameters like configuration of HARQ processes (see TS 36.213, clause 8) + }; + + } // End sub-sub-group UE_Specific_Channel_Configuration_UL + + //============================================================================ + + type union DrxCtrl_Type { /* DRX configuration for connected mode (TS 36.321, clause 5.7) */ + Null_Type None, /* DRX not configured */ + DRX_Config_Type Config /* DRX is configured as signalled to the UE; + NOTE: the release branch of DRX-Config in general is not used for configuration of the SS */ + }; + + type union MeasGapCtrl_Type { /* support of measurement gap configuration */ + Null_Type None, /* no measurement gap configuration */ + MeasGapConfig_Type Config /* measurement gap configuration acc. to TS 36.331, clause 6.3.5 and gap pattern acc. TS 36.133 Table 8.1.2.1-1; + NOTE: the release branch of MeasGapConfig in general is not used for configuration of the SS */ + }; + + type record CcchDcchDtchConfig_Type { + MeasGapCtrl_Type MeasGapCtrl optional, /* to tell the SS when no assignments/grants shall be assigned to the UE */ + CcchDcchDtchConfigDL_Type DL optional, /* Scheduling, parameters related to CCCH, DCCH and DTCH in DL */ + CcchDcchDtchConfigUL_Type UL optional, /* Scheduling, parameters related to CCCH, DCCH and DTCH in UL */ + DrxCtrl_Type DrxCtrl optional, /* DRX configuration as sent to the UE (or 'None' when the UE does not support connected mode DRX) */ + TTI_BundlingConfig_Type TtiBundling optional, /* TTI bundling as configured at the UE */ + boolean CifPresence optional /* corresponds to PhysicalConfigDedicated.cif_Presence_r10: + * The CIF field is applied for dedicated search space scheduling i.e. DCCH/DTCH. + * Not present for common search space scheduling. + * CIF indicator as true may be configured even in non CA cell, to facilitate the future + * false: no serving cell is cross scheduled by this cell + * true: carrier indicator field is present when the PDCCH CRC is scrambled by C-RNTI or SPS C-RNTI + * omit means "keep as it is" */ + }; + + } // End sub-group UE_Specific_Channel_Configuration + + //---------------------------------------------------------------------------- + + group Carrier_Aggregation { + + type record ActivateScell_Type { + ScellBitMap_Type ScellActivation, /* 36.321 clause 6.1.3.8; B0=C7, B1=C6 .. B6=C1, B7 is reserved. + * B0 to B6, 1 means Activate associated Scell */ + boolean SendMCE /* If true the SS sends a MAC Control Element to the UE */ + }; + + type enumerated Scell_Capability_Type { + DlOnly, /* the CC is configured in DL only, no aggregation in this cell in UL */ + UL_DL /* the aggregation is configured in both UL and DL */ + }; + + type union ScellDeactivationTimer_Type { /* NOTE: this type is a union to allow semantic of "keep as it is" for optional fields of this type */ + MAC_MainConfig_ScellDeactivationTimer_Type NumberOfRadioFrames, /* SCell deactivation timer acc. to TS 36.321 */ + Null_Type Infinity /* ininity as when 'sCellDeactivationTimer' is omitted in 'MAC-MainConfig' sent to the UE */ + }; + + type record length (1..7) of SCellIndex_r10 SCellIndexList_List; + + type union CrossCarrierScheduledCellsList_Type { + Null_Type None, /* No Cells Cross Scheduled by this Cell; CIF can still be true.*/ + SCellIndexList_List CrossScheduledCells /* List of Scells Scheduled by this Scell; CIF field shall be true; Pcell cannot be cross scheduled */ + }; + + type union SchedulingCarrierConfig_Type { + CrossCarrierScheduledCellsList_Type Own, /* Cell is scheduled by itself and possible cross schedules other Scells */ + CrossSchedulingCarrierInfo_Type CrossScheduled /* Cell is cross Scheduled by other carrier; the CIF field shall be configured in the serving cell scheduling this scell */ + }; + + type union CrossCarrierSchedulingConfig_Type { + SchedulingCarrierConfig_Type Config, /* When cross carrier scheduling is enabled then the CIF field shall be configured in the serving cell scheduling this scell */ + Null_Type None + }; + + type record PrimaryCellInfo_Type { + EUTRA_CellIdList_Type AssociatedScellList, /* List of Scells associated with the Pcell (needs to be consistent with AssociatedPcellId in Scell) */ + MeasSubframePatternPCell_r10 MeasSubframePatternPCell optional, + CrossCarrierScheduledCellsList_Type CrossCarrierScheduledCellsList optional /* Information of possible Cells Cross Scheduled by this cell */ + }; + + type record SecondaryCellInfo_Type { + EUTRA_CellId_Type AssociatedPcellId, /* cell ID of associated Pcell (eutra_Cell_NonSpecific is not allowed) */ + SCellIndex_r10 SCellIndex, + Scell_Capability_Type Scell_Capability optional, /* if DL only or both UL and DL (omit means "keep as it is") */ + ScellDeactivationTimer_Type ScellDeactivationTimer optional, /* SCell deactivation timer; omit means "keep as it is"; + when there is more than one SCell associated to the same PCell this field shall be set to the same value for each SCell */ + CrossCarrierSchedulingConfig_Type CrossCarrierSchedulingConfig optional, /* omit means "keep as it is"*/ + STAG_Id_r11 STAG_Id optional /* if IE is never configured then scell is part of PTAG. + * Uses the STAG_ID or PTAG in Auto PUCCH synchronization when transmitting periodically Timing Advance MCE */ + }; + + type union ServingCellConfig_Type { + PrimaryCellInfo_Type PCell, /* cell shall become PCell */ + SecondaryCellInfo_Type SCell, /* cell shall become SCell */ + Null_Type Release /* cell is changed back to normal non CA cell */ + }; + + } // End group Carrier_Aggregation + + } // End group Cell_Configuration + + //**************************************************************************** + + group Cell_Power_Attenuation { + + type record CellAttenuationConfig_Type { + EUTRA_CellId_Type CellId, + Attenuation_Type Attenuation, + TimingInfo_Type TimingInfo optional + }; + + type record length(1..tsc_EUTRA_MaxNumberOfCells) of CellAttenuationConfig_Type CellAttenuationList_Type; + + } // End group Cell_Power_Attenuation + + //**************************************************************************** + + group Radio_Bearer_Configuration { /* Radio Bearer Configuration: SRBs/DRBs */ + + group PDCP_Configuration { + + type enumerated PDCP_SNLength_Type { + // PDCP Sequence Number + PDCP_SNLength5, // TS 36.323 clause 6.2.2 + PDCP_SNLength7, // TS 36.323 clause 6.2.3 + PDCP_SNLength12 // TS 36.323 clause 6.2.4 + }; + + type record PDCP_ROHC_Mode_Type { + PDCP_SNLength_Type SN_Size + }; + + type record PDCP_NonROHC_Mode_Type { + PDCP_SNLength_Type SN_Size + }; + + type union PDCP_TestModeInfo_Type { + PDCP_ROHC_Mode_Type PDCP_ROHC_Mode, /* ROHC test mode acc. to TS 36.523-3, clause 4.2.1.3.1; + * requires PDCP to be configured for this RB => + * - SS applies ciphering in UL and DL + * - SS maintains PDCP sequence numbers and state variables + * Furthermore in this mode + * - SS does not add/remove PDCP headers + * (in UL the PDCP PDUs are decoded depending on SN_Size) + * - SS applies ROHC in DL only */ + PDCP_NonROHC_Mode_Type PDCP_NonROHC_Mode /* PDCP test mode acc. to TS 36.523-3, clause 4.2.1.3.2 (non-ROCH test mode); + * requires PDCP to be configured as transparant => + * - SS does not apply ciphering in UL and DL + * - SS does not interpret, insert or remove PDCP headers + * (in UL PDCP PDUs are decoded depending on SN_Size) + * - SS does not maintain PDCP sequence numbers and state variables */ + }; + + type union PDCP_TestModeConfig_Type { + Null_Type None, + PDCP_TestModeInfo_Type Info + }; + + type union PDCP_RbConfig_Type { + Null_Type Srb, /* for SRB1/2 there are no PDCP_Parameters; + * SN is always 5 bits */ + PDCP_Config_Type Drb, /* PDCP-Configuration acc. to TS 36.331, clause 6.3.2; + * among others for UM here pdcp-SN-Size is configured to be either len7bits or len12bits; + * for AM it always is 12bit */ + Null_Type Transparent /* used for PDCP tests (TS 36.523-3, clause 4.2.1.3.2): + * the SS does not apply ciphering and does not maintain + * PDCP sequence numbers and state variables; + * in UL the PDCP PDUs are decoded acc. to the TestMode; + * Note: a reconfiguration of a RB from transparent mode to 'normal' mode is not foreseen + * (i.e. there is no mechanism to restore Ciphering, + * PDCP sequence numbers and state variables at the SS) */ + }; + + type record PDCP_ConfigInfo_Type { + PDCP_RbConfig_Type Rb optional, /* mandatory for initial configuration; omit means "keep as it is" */ + PDCP_TestModeConfig_Type TestMode optional /* mandatory for initial configuration; omit means "keep as it is" */ + }; + + type union PDCP_Configuration_Type { + Null_Type None, /* for SRB0 no PDCP is configured; furthermore the PDCP may not be configured e.g. for DRBs tested in MAC test cases */ + PDCP_ConfigInfo_Type Config + }; + + } // End sub-group PDCP_Configuration + + //---------------------------------------------------------------------------- + + group RLC_Configuration { /* RLC configuration: radio bearer specific */ + + type enumerated RLC_ACK_Prohibit_Type { + Prohibit, /* cause SS RLC layer to stop any ACK transmission for UL PDU's received from UE */ + Continue /* bring back the SS RLC in normal mode, where ACK/NACK are transmitted at polling */ + }; + + + type enumerated RLC_NotACK_NextRLC_PDU_Type { + Start /* cause SS RLC layer not to ACK the next received RLC PDU; + * this is done regardless of whether the poll bit is set or not; + * Example [from UMTS]: + * when the UE gets new security information in a SECURITY MODE COMMAND + * the response (SECURITY MODE COMPLETE) sent by the UE is not acknowledged at the RLC level; + * this causes the UE to continue using the "old" security information */ + }; + + type integer RLC_AM_SequenceNumber_Type (0..1023); /* RLC AM sequence number */ + + type union RLC_TestModeInfo_Type { + RLC_ACK_Prohibit_Type AckProhibit, /* valid only when the RLC is configured in AM */ + RLC_NotACK_NextRLC_PDU_Type NotACK_NextRLC_PDU, /* valid only when the RLC is configured in AM */ + RLC_AM_SequenceNumber_Type ModifyVTS, /* to modify the VT(S) at SS: VT(S) at the SS side is set to this (absolute) value; + valid only when the RLC is configured in AM */ + Null_Type TransparentMode_UMDwith5BitSN, /* shall be set when TTCN expects RLC PDUs as UMD in UL with an SN of 5 bits; + valid only when the RLC is configured in TM */ + Null_Type TransparentMode_UMDwith10BitSN, /* shall be set when TTCN expects RLC PDUs as UMD in UL with an SN of 10 bits; + valid only when the RLC is configured in TM */ + Null_Type TransparentMode_AMD /* shall be set when TTCN expects RLC PDUs as AMD in UL; + valid only when the RLC is configured in TM */ + }; + + type union RLC_TestModeConfig_Type { + Null_Type None, + RLC_TestModeInfo_Type Info + }; + + type record SS_RLC_AM_Type { + UL_AM_RLC_Type Tx optional, /* the UE's UL setting to be used in SS's tx direction */ + DL_AM_RLC_Type Rx optional /* the UE's DL setting to be used in SS's rx direction */ + }; + type record SS_RLC_UM_Bi_Directional_Type { + UL_UM_RLC_Type Tx optional, /* the UE's UL setting to be used in SS's tx direction */ + DL_UM_RLC_Type Rx optional /* the UE's DL setting to be used in SS's rx direction */ + }; + type record SS_RLC_UM_Uni_Directional_UL_Type { + DL_UM_RLC_Type Rx optional /* the UE's DL setting to be used in SS's rx direction */ + }; + type record SS_RLC_UM_Uni_Directional_DL_Type { + UL_UM_RLC_Type Tx optional /* the UE's UL setting to be used in SS's tx direction */ + }; + type Null_Type SS_RLC_TM_Type; /* TM to configure SRB0; no parameters to be defined */ + + type union RLC_RbConfig_Type { + SS_RLC_AM_Type AM, + SS_RLC_UM_Bi_Directional_Type UM, + SS_RLC_UM_Uni_Directional_UL_Type UM_OnlyUL, + SS_RLC_UM_Uni_Directional_DL_Type UM_OnlyDL, + SS_RLC_TM_Type TM /* normally SRB0 only; may be used for test purposes also */ + }; + + type record RLC_Configuration_Type { + RLC_RbConfig_Type Rb optional, /* mandatory for initial configuration; omit means "keep as it is" */ + RLC_TestModeConfig_Type TestMode optional /* mandatory for initial configuration; omit means "keep as it is" */ + }; + + } // End sub-group RLC_Configuration + + //---------------------------------------------------------------------------- + + group MAC_Configuration { /* MAC configuration: radio bearer specific configuration */ + + // Types for test mode configuration: + type union MAC_Test_DLLogChID_Type { + TestLogicalChannelId_Type LogChId, /* Specifies to over write the logical channel ID in MAC header in all the DL messages sent on the configured logical channel */ + Null_Type ConfigLchId /* Specifies that the normal mode of correct logical channel ID to be used in DL MAc header. + * This will be the default mode, when SS is initially configured. */ + }; + + type enumerated MAC_Test_DL_SCH_CRC_Mode_Type { + Normal, /* default mode, the CRC generation is correct */ + Erroneous, /* SS shall generate CRC error by toggling CRC bits; + * the CRC error shall be applied for all PDUs of the given RNTI and their retransmission until SS is configured back to 'normal' operation */ + Error1AndNormal /* the SS generates wrong CRC for first transmission and correct CRC on first retransmission. + * Later SS operates in normal mode. The retransmission is automatically triggered by reception of HARQ NACK */ + }; + + type enumerated MAC_Test_SCH_NoHeaderManipulation_Type { + NormalMode, /* MAC header is fully controlled by the SS */ + DL_SCH_Only, /* TTCN can submit a final MAC PDU including header and payloads; + * SS does not do anything with this MAC PDU i.e. no header is added for the DL SCH transport channel. + * It is possible that data belonging to multiple DRBs is sent in one MAC PDU and from one special RB configured. + * NOTE: SRBs shall work as in normal mode and data can be sent/received on SRBs but sending on SRBs shall be in differnt TTIs than sending data PDUs. */ + DL_UL_SCH /* In UL and DL the SS' MAC layer is transparent i.e. SS does not add or remove any MAC header */ + }; + + const integer tsc_MaxHarqRetransmission := 28; /* maximum value for maxHARQ-Msg3Tx as being signalled to the UE */ + type record length (1..tsc_MaxHarqRetransmission) of HARQ_Type HARQ_ModeList_Type; + type union PhichTestMode_Type { + Null_Type NormalMode, /* PHICH is configured to operate in normal mode */ + HARQ_ModeList_Type ExplicitMode /* the number of elements in explicit list shall match the number of retransmissions being expected */ + }; + + type record MAC_TestModeInfo_Type { + /* Parameters/Configuration for MAC tests */ + MAC_Test_DLLogChID_Type DiffLogChId, /* to be used in test cases 7.1.1.1 and 7.1.1.2 for using a different logical channel ID in MAC-heaader on DL-SCH channel */ + MAC_Test_SCH_NoHeaderManipulation_Type No_HeaderManipulation /* to configure mode for no header manipulation in SS MAC layer for DL/UL SCH */ + }; + + type union MAC_TestModeConfig_Type { + Null_Type None, + MAC_TestModeInfo_Type Info + }; + + type record MAC_LogicalChannelConfig_Type { + integer Priority, /* logical channel priority for the DL as described in TS 36.321, clause 5.4.3.1 for the UL */ + PrioritizedBitRate_Type PrioritizedBitRate /* PBR as described for the UL; probably not needed at SS */ + }; + + type record MAC_Configuration_Type { + MAC_LogicalChannelConfig_Type LogicalChannel optional, /* mandatory for initial configuration; omit means "keep as it is" */ + MAC_TestModeConfig_Type TestMode optional /* mandatory for initial configuration; omit means "keep as it is"; + * for none MAC tests "TestMode.None:=true" */ + }; + + } // End sub-group MAC_Configuration + + //---------------------------------------------------------------------------- + + type integer LogicalChannelId_Type (0..10); /* acc. TS 36.331, clause 6.3.2 for DRBs DTCH-LogicalChannelIdentity is INTEGER (3..10); + * additionally we have 0..2 for the SRBs */ + type integer TestLogicalChannelId_Type (0..31); /* To be used in MAC test mode for reserved values of Logicall channels;*/ + + type record RadioBearerConfigInfo_Type { + /* semantics of omit: "keep as it is" */ + PDCP_Configuration_Type Pdcp optional, /* for SRB0: "Pdcp.None:=true" + * mandatory for initial configuration; omit means "keep as it is" */ + RLC_Configuration_Type Rlc optional, /* mandatory for initial configuration; omit means "keep as it is" */ + LogicalChannelId_Type LogicalChannelId optional, /* DRBs: DTCH-LogicalChannelIdentity as for rb-MappingInfo in DRB-ToAddModifyList; + * SRBs: for SRBs specified configurations acc. to TS 36.331, clause 9.1.2 shall be applied: + * SRB1: ul-LogicalChannel-Identity = dl-LogicalChannel-Identity = 1 + * SRB2: ul-LogicalChannel-Identity = dl-LogicalChannel-Identity = 2 + * for SRB0 being mapped to CCCH the LCID is '00000'B acc. to TS 36.321, clause 6.2.1; + * mandatory for initial configuration; omit means "keep as it is" */ + MAC_Configuration_Type Mac optional, + boolean DiscardULData optional /* if omitted: + * initial configuration: data is handed over to TTCN as usual + * re-configuration: "keep as it is" + * if set: + * true - SS shall discard any data in UL for this radio bearer + * false - (re)configuration back to normal mode + * NOTE: typically applicable for UM DRBs only */ + }; + + type union RadioBearerConfig_Type { + RadioBearerConfigInfo_Type AddOrReconfigure, /* add / re-configure RB - + * CellId : identifier of the cell being configured + * RoutingInfo : None + * TimingInfo : 'Now' in common cases + * ControlInfo : CnfFlag:=true; FollowOnFlag:=false (in general) */ + Null_Type Release /* release RB - + * CellId : identifier of the cell being configured + * RoutingInfo : None + * TimingInfo : 'Now' in common cases + * ControlInfo : CnfFlag:=true; FollowOnFlag:=false (in general) */ + }; + + type record RadioBearer_Type { + RadioBearerId_Type Id, /* either for SRB or DRB */ + RadioBearerConfig_Type Config + }; + + type record length (1..tsc_MaxRB) of RadioBearer_Type RadioBearerList_Type; /* array of SRBs and/or DRBs (DRBs + 3 SRBs) */ + + } // End group Radio_Bearer_Configuration + + //**************************************************************************** + + group AS_Security { /* Primitive for control of AS security */ + + type record PdcpSQN_Type { + PdcpCountFormat_Type Format, /* 5 bit, 7 bit or 12 bit SQN */ + integer Value /* SQN value (5 bit, 7 bit or 12 bit SQN) + * NOTE: + * in TTCN the test case writer is responsible to deal with potential overflows + * (e.g. there shall be a "mod 32", "mod 128" or "mod 4096" according to the format) */ + }; + + type union PDCP_ActTime_Type { + /* The sequence number in UL and DL for SRB1 should be one more than the present SQN, as Ciphering starts in UL and DL soon after SMC and SMComp; + * For other SRB/DRB it should be the present SQN. */ + Null_Type None, /* No Activation time; to be used if Ciphering is not applied */ + PdcpSQN_Type SQN /* PDCP sequence number */ + }; + + type record SecurityActTime_Type { + RadioBearerId_Type RadioBearerId, + PDCP_ActTime_Type UL, + PDCP_ActTime_Type DL + }; + + type record length (1..tsc_MaxRB) of SecurityActTime_Type SecurityActTimeList_Type; + + type record AS_IntegrityInfo_Type { + /* for initial configuration activation time is not needed for integrity protection as all messages in DL after security activation are integrity protected; + * this means this ASP is invoked before transmission of Security mode command; + * if there is a integrity violation in UL SS shall set the IndicationStatus in the common ASP part to flag the integrity error + * (IndicationStatus.Error.Integrity.Pdcp := true); + * integrity to be provided for each SRB as per core spec */ + IntegrityProtAlgorithm_Type Algorithm, /* IntegrityProtAlgorithm_Type being defined in RRC ASN.1 */ + B128_Key_Type KRRCint, + SecurityActTimeList_Type ActTimeList optional /* omit for initial configuration (i.e. all SRBs to be integrity protected immediately); + * in HO scenarios activation time may be needed e.g. for SRB1 */ + }; + + type record AS_CipheringInfo_Type { + CipheringAlgorithm_Type Algorithm, /* CipheringAlgorithm_Type being defined in RRC ASN.1 */ + B128_Key_Type KRRCenc, + B128_Key_Type KUPenc, /* KUPenc is mandatory; and SS uses it when DRB are configured */ + SecurityActTimeList_Type ActTimeList + }; + + type record AS_SecStartRestart_Type { + AS_IntegrityInfo_Type Integrity optional, /* optional to allow separated activation of integrity and ciphering; omit: keep as it is */ + AS_CipheringInfo_Type Ciphering optional /* optional to allow separated activation of integrity and ciphering; omit: keep as it is */ + }; + + type union AS_Security_Type { /* Security mode command procedure (TS 36.331, clause 5.3.4): + * both SMC and SMComp are integrity protected + * (nevertheless SS shall be able to cope with unprotected SM reject); + * ciphering is started just after SMComp (acc. to TS 36.331, clause 5.3.4.3 and 5.3.1.1) */ + AS_SecStartRestart_Type StartRestart, /* information to start/restart AS security protection in the PDCP */ + Null_Type Release /* to release AS security protection in the PDCP */ + }; + + } // End group AS_Security + + //**************************************************************************** + + group Semi_Persistent_Scheduling { + /* Semi-persistent scheduling (SPS) + * NOTE 1: + * configuration of SPS cannot be done completely in advance but needs to be activated by PDCCH signalling + * => SPS is configured/activated in an own primitive which may be sent to SS during RBs are being configured + * NOTE 2: + * semi-persistent (configured) scheduling is per UE (as well as 'normal' scheduling; see e.g. TS 36.300, clause 11.1) */ + + type record SpsAssignmentUL_Type { + /* information to assign semi-persistent scheduls in UL */ + DciUlInfo_Type DciInfo optional, /* to apply a grant */ + SpsConfigurationUL_Type SchedulInterval optional, /* as in TS 36.331, clause 6.3.2 SPS-ConfigUL */ + Null_Type SetNDI_1 optional /* if present then NDI is set as 1 indicating a retransmission; If absent then NDI is set as 0 indicating a new transmission */ + }; + + type record SpsAssignmentDL_Type { + /* information to assign semi-persistent scheduls in DL */ + DciDlInfo_Type DciInfo optional, /* to apply a assignment */ + SpsConfigurationDL_Type SchedulInterval optional, /* as in TS 36.331, clause 6.3.2 SPS-ConfigDL */ + Null_Type SetNDI_1 optional /* if present then NDI is set as 1 indicating a retransmission; If absent then NDI is set as 0 indicating a new transmission */ + }; + + type record SpsActivateInfo_Type { + /* Semi-persistent scheduling (SPS): + * Even though SPS is pre-configured at the UE (e.g. RRCConnectionSetup->RadioResourceConfiguration->MAC_MainConfig) it needs to be activated by L1 signalling + * => SS shall 'activate' SPS by sending appropriate assignments/grants to the UE; this shall be done with an activation time. + * If SPS is already configured and new Activate command is received, at the activation time SS locally deactivates old SPS configuration, sends UE an PDCCH assignment for new SPS assignment and locally activates new SPS configuration. + * In DL, in addition to SS SPS assignment configuration with activation time 'T', TTCN writer shall also schedule a DL MAC PDU with same activation time 'T' and at every SPS ScheduleInterval (NOTE: in general it is an error when TTCN does not provide data for a SchedulInterval; SS shall send no data in this case). + * Special fields of PDCCH assignment are filled as per table 9.2-1 of 36.213 */ + C_RNTI SPS_C_RNTI, /* SPS C-RNTI as signalled to UE */ + SpsAssignmentUL_Type UplinkGrant optional, + SpsAssignmentDL_Type DownlinkAssignment optional + }; + + type record SpsPdcchRelease_Type { + /* On reception of this information SS shall send an SPS release indicated by PDCCH transmission with indicated DCI format (0 or 1A) at the activation time. + * Special fields of PDCCH assignment are filled as per table 9.2-1A of 36.213 */ + C_RNTI SPS_C_RNTI, + PdcchDciFormat_Type DCI_Format /* only formats 0 (UL release) and 1A (DL release) are applicable. It is a TTCN error if any other formats are used. */ + }; + + type union SpsDeactivateInfo_Type { + Null_Type LocalRelease, /* SPS configuration shall be released at the SS, that means as well that the SS shall not address SPS_C_RNTI anymore from the given TimingInfo onward; + * NOTE: there is no SPS release to be signalled on PDCCH (this is done with PdcchExplicitRelease - see below) */ + SpsPdcchRelease_Type PdcchExplicitRelease /* SS transmits PDCCH content indicating SPS release but holds the local SPS configuration until it is locally released */ + }; + + type union SpsConfig_Type { + SpsActivateInfo_Type Activate, /* CellId : identifier of the cell where the UE is active + * RoutingInfo : None + * TimingInfo : activation time for SPS assignment/grant transmission; NOTE: the first SPS DL data packet shall be sent with the same timing information + * ControlInfo : CnfFlag:=false; FollowOnFlag:=false + */ + SpsDeactivateInfo_Type Deactivate /* CellId : identifier of the cell where the UE is active + * RoutingInfo : None + * TimingInfo : activation time for SPS release indicated by PDCCH transmission or SS local deactivation + * ControlInfo : CnfFlag:=false; FollowOnFlag:=false + */ + }; + + } // End group Semi_Persistent_Scheduling + + //**************************************************************************** + + group Paging_Trigger { + + type record length (1..infinity) of integer SubframeOffsetList_Type; + + type record PagingTrigger_Type { /* CellId : identifier of the cell where the UE is active + RoutingInfo : None + TimingInfo : Calculated paging occassion + ControlInfo : CnfFlag:=false; FollowOnFlag:=false */ + /* primitive to trigger transmission of a paging on the PCCH at a calculated paging occasion (TS 36.304, clause 7); + * the paging occasion is calculated by TTCN and activation time is applied; + * as for BCCH Infor acc. to TS 36.331, clause 9.1.1.3 "RRC will perform padding, if required due to the granularity of the TF signalling, as defined in 8.5."; + * therefore this needs to be done by the system simulator */ + PCCH_Message Paging, /* paging to be send out at paging occasion and being announced on PDCCH using P-RNTI */ + SubframeOffsetList_Type SubframeOffsetList optional /* list of subframe offsets relative to the absolute timing information given in the common part of the ASP; + if present, multiple pagings are sent out at all occasions given by the list; + if omitted only a single paging is sent at the occasion given timing information given in the common part of the ASP */ + }; + + } // End group Paging_Trigger + + //**************************************************************************** + + group L1_MAC_Indication_Control { /* Primitive for control of L1/MAC indication for special purposes */ + + type enumerated L1Mac_IndicationMode_Type {enable, disable}; + + type record L1Mac_IndicationControl_Type { + /* NOTE: + Initially all indications are disabled in SS (i.e. it shall not be nacessary in 'normal' test cases to use this primitive but only if a specific indication is needed); omit means indication mode is not changed */ + L1Mac_IndicationMode_Type RachPreamble optional, /* To enable/disable reporting of PRACH preamble received. */ + L1Mac_IndicationMode_Type SchedReq optional, /* To enable/disable reporting of reception of Scheduling Request on PUCCH. */ + L1Mac_IndicationMode_Type BSR optional, /* To enable/disable reporting of Buffer/Extended Buffer Status Report. + * NOTE: + * this is applicable only when MAC is configured in normal mode in UL; + * MAC configured in test mode, results in over writing the report. */ + L1Mac_IndicationMode_Type UL_HARQ optional, /* To enable/disable reporting of reception of HARQ ACK/NACK. */ + L1Mac_IndicationMode_Type C_RNTI optional, /* To enable/disable reporting of C-RNTI sent by the UE within MAC PDU */ + L1Mac_IndicationMode_Type PHR optional, /* To enable/disable reporting of Power Headroom Report. + * NOTE: + * this is applicable only when MAC is configured in normal mode in UL; + * MAC configured in test mode, results in over writing the report. */ + L1Mac_IndicationMode_Type HarqError optional, /* To enable/disable reporting of HARQ errors */ + L1Mac_IndicationMode_Type PeriodicRI optional, /* To enable/disable reporting of reception of periodic Rank Indicators */ + L1Mac_IndicationMode_Type EPHR optional, /* To enable/disable reporting of Extended Power Headroom Report. + * NOTE: + * this is applicable only when MAC is configured in normal mode for UL; + * MAC configured in test mode, results in overwriting the report. */ + L1Mac_IndicationMode_Type PeriodicCQI optional, /* To enable/disable reporting of reception of periodic CQI */ + L1Mac_IndicationMode_Type SRS optional /* To enable/disable reporting of start and stop of reception of Type 0 (Configured by Higher Layer) SRS in frames meant for periodic SRS transmission by UE. + * SS reports an indication every time when SRS reception from UE has toggled in the frames configured for periodic SRS reception i.e. + * 'No periodic SRS' reception -> 'periodic SRS' reception or + * 'periodic SRS' reception -> 'No periodic' SRS reception.*/ + }; + + } // End group L1_MAC_Indication_Control + + //**************************************************************************** + + group Rlc_Indication_Control { /* Primitive for control of RLC indication for special purposes */ + + type enumerated Rlc_IndicationMode_Type {enable, disable}; + + type record Rlc_IndicationControl_Type { + Rlc_IndicationMode_Type Discard optional /* To enable/disable reporting of discarded RLC PDUs */ + }; + + } // End group RLC_Indication_Control + + //**************************************************************************** + + group PDCP_Count { /* Primitives to enquire PDCP COUNT */ + + type B32_Type PdcpCountValue_Type; + type enumerated PdcpCountFormat_Type { + PdcpCount_Srb, /* 27 bit HFN; 5 bit SQF */ + PdcpCount_DrbLongSQN, /* 20 bit HFN; 12 bit SQF */ + PdcpCount_DrbShortSQN /* 25 bit HFN; 7 bit SQF */ + }; + type record PdcpCount_Type { + PdcpCountFormat_Type Format, + PdcpCountValue_Type Value + }; + type record PdcpCountInfo_Type { + RadioBearerId_Type RadioBearerId, + PdcpCount_Type UL optional, /* omit: keep as it is */ + PdcpCount_Type DL optional /* omit: keep as it is */ + }; + + type record length (1..tsc_MaxRB) of PdcpCountInfo_Type PdcpCountInfoList_Type; + + type union PdcpCountGetReq_Type { + Null_Type AllRBs, /* return COUNT values for all RBs being configured */ + RadioBearerId_Type SingleRB + }; + + type union PDCP_CountReq_Type { + PdcpCountGetReq_Type Get, /* Request PDCP count for one or all RBs being configured at the PDCP */ + PdcpCountInfoList_Type Set /* Set PDCP count for one or all RBs being configured at the PDCP; + * list for RBs which's COUNT shall be manipulated */ + }; + + type union PDCP_CountCnf_Type { + PdcpCountInfoList_Type Get, /* RBs in ascending order; SRBs first */ + Null_Type Set + }; + + } // End group PDCP_Count + + //**************************************************************************** + + group PDCP_Handover { /* Primitives to control PDCP regarding handover */ + + type record PDCP_HandoverInit_Type { + EUTRA_CellId_Type SourceCellId + }; + + type union PDCP_HandoverControlReq_Type { + PDCP_HandoverInit_Type HandoverInit, /* to inform SS that a handover will follow: + * in the common ASP part the CellId shall be set to the id of the target cell */ + Null_Type HandoverComplete /* to inform SS that the handover has successfully been performed by the UE; + * this shall trigger the SS to sent a PDCP Status Report to the UE; + * in the common ASP part the CellId shall be set to the id of the target cell */ + }; + + } // End group PDCP_Handover + + //**************************************************************************** + + group L1_MAC_Test_Mode { /* Primitive for control of L1/MAC Test Modes */ + + type record L1_TestMode_Type { + // L1 test mode; in general RACH is handled separately + DL_SCH_CRC_Type DL_SCH_CRC, /* Manipulation of CRC bit generation for DL-SCH */ + PhichTestMode_Type Phich /* HARQ feedback mode on the PHICH */ + }; + + type union DL_SCH_CRC_Type { + /* NOTE: + * CRC error mode for RA_RNTI is not addressed as it will be configured in RACHProcedureConfig */ + MAC_Test_DL_SCH_CRC_Mode_Type C_RNTI, /* to configure mode for CRC bit for all MAC PDU's for which C-RNTI is used in PDCCH transmission */ + MAC_Test_DL_SCH_CRC_Mode_Type SI_RNTI, /* to configure mode for CRC bit for all MAC PDU's for which SI-RNTI is used in PDCCH transmission */ + MAC_Test_DL_SCH_CRC_Mode_Type SPS_RNTI /* to configure mode for CRC bit for all MAC PDU's for which SPS-RNTI is used in PDCCH transmission */ + }; + + } // End group L1_MAC_Test_Mode + + //**************************************************************************** + + group PDCCH_Order { /* Primitive to trigger SS to send PDCCH order to initiate RA procedure (TS 36.321, clause 5.1.1) */ + + type Ra_PreambleIndex_Type PrachPreambleIndex_Type; + type integer PrachMaskIndex_Type (0..15); /* TS 36.321, clause 7.3 */ + + type record RA_PDCCH_Order_Type { /* see also TS 36.212, clause 5.3.3.1.3 */ + PrachPreambleIndex_Type PreambleIndex, /* naming acc. TS 36.212, clause 5.3.3.1.3 */ + PrachMaskIndex_Type PrachMaskIndex /* naming acc. TS 36.212, clause 5.3.3.1.3 */ + }; + + } // End group PDCCH_Order + + //**************************************************************************** + + group System_Indications { /* Primitives for System indications */ + + type Dummy_Type PRTPower_Type; /* needs to define appropriately the power level report of PREAMBLE_RECEIVED_TARGET_POWER; + * NOTE: for the time being this is just a place holder for enhancements in the future. */ + + type integer LogicalChannelGroup_Type (0..3); + type integer BSR_Value_Type (0..63); + type integer PHR_Type (0..63); + + type record HarqProcessInfo_Type { + HarqProcessId_Type Id, + integer CURRENT_TX_NB /* acc. to TS 36.321 clause 5.4.2.2 */ + }; + + type union HarqError_Type { + HarqProcessInfo_Type UL, /* indicates HARQ error detected at the SS side (error at UL transmission) */ + HarqProcessInfo_Type DL /* indicates HARQ NACK sent by the UE (error at DL transmission) */ + }; + + type record RachPreamble_Type { + PrachPreambleIndex_Type RAPID, /* indicates the RAPID of the preamble used (integer (0..63)) */ + PRTPower_Type PRTPower /* represents the PREAMBLE_RECEIVED_TARGET_POWER */ + }; + + type record Short_BSR_Type { + LogicalChannelGroup_Type LCG, /* Logical channel Group */ + BSR_Value_Type Value /* BSR or Extended BSR value */ + }; + type record Long_BSR_Type { + BSR_Value_Type Value_LCG1, /* BSR or Extended BSR value for LCG 1 */ + BSR_Value_Type Value_LCG2, /* BSR or Extended BSR value for LCG 2 */ + BSR_Value_Type Value_LCG3, /* BSR or Extended BSR value for LCG 3 */ + BSR_Value_Type Value_LCG4 /* BSR or Extended BSR value for LCG 4 */ + }; + type union BSR_Type { + Short_BSR_Type Short, + Short_BSR_Type Truncated, + Long_BSR_Type Long + }; + + type enumerated HARQ_Type {ack, nack}; /* ack represents HARQ ACK; nack represents HARQ_NACK */ + + type record RlcDiscardInd_Type { /* SS shall send this indication if it discards a received RLC AMD PDU as specified in TS 36.322 cl. 5.1.3.2.2. */ + integer SequenceNumber /* sequence number of the PDU being discarded */ + }; + + type integer RI_Type (1..4); /* Rank indicator reported acc. to TS 36.212 Table 5.2.2.6-6 */ + + type enumerated SRSInd_Type { + SRS_Start, /* SS was not receiving SRS in the frames configured for periodic SRS, and SS has started reception of higher layer configured SRS in frame meant for periodic SRS transmission */ + SRS_Stop /* SS was receiving SRS in the frames configured for periodic SRS, and SS has stopped reception of higher layer configured SRS in frame meant for periodic SRS transmission */ + }; + + } // End group System_Indications + + //**************************************************************************** + + group System_Interface { + + type record SYSTEM_CTRL_REQ { + ReqAspCommonPart_Type Common, /* TimingInfo depends on respective primitive: */ + SystemRequest_Type Request /* - Cell + * TimingInfo: 'now' (in general) + * - CellAttenuationList + * TimingInfo: 'now' (in general, but activation time may be used also) + * - RadioBearerList + * TimingInfo: 'now' in general; + * activation time may be used in special case for release and/or reconfiguration of one or several RBs; + * the following rules shall be considered: + * - release/Reconfiguration of an RB shall not be scheduled ealier than 5ms after a previous data transmission on this RB + * - subsequent release and reconfiguration(s) shall be scheduled with an interval of at least 5ms + * - a subsequent data transmission on an RB shall not be scheduled ealier than 5ms after the last reconfiguration of the RB + * the configuration shall be performed exactly at the given time + * - EnquireTiming + * TimingInfo: 'now' + * - AS_Security + * TimingInfo: 'now'; + * NOTE: "activation time" may be specified in the primitive based on PDCP SQN + * - Sps + * TimingInfo: activation time for SPS assignment transmission + * - Paging + * TimingInfo: Calculated paging occassion + * - L1MacIndCtrl + * TimingInfo: 'now' (in general) + * - PdcpCount + * TimingInfo: 'now' (in general) + * activation time may be used in case of CA inter cell handover to set the PdcpCount + * - L1_TestMode + * TimingInfo: depends on the test mode; + * activation time is used e.g. for manipulation of the CRC + * - PdcchOrder + * TimingInfo: 'now' (in general) + */ + }; + + type record SYSTEM_CTRL_CNF { + CnfAspCommonPart_Type Common, /* TimingInfo is ignored by TTCN (apart from EnquireTiming) + * => SS may set TimingInfo to "None" */ + SystemConfirm_Type Confirm + }; + + type record SYSTEM_IND { + IndAspCommonPart_Type Common, /* The SS shall provide TimingInfo (SFN + subframe number) depending on the respective indication: */ + SystemIndication_Type Indication /* - Error/HarqError + * TimingInfo: related to the error (if available) + * - RachPreamble + * TimingInfo: shall indicate start of the RACH preamble + * - SchedReq + * TimingInfo: subframe containing the SR + * - BSR + * TimingInfo: subframe in which the MAC PDU contains the BSR + * - UL_HARQ + * TimingInfo: subframe containing the UL HARQ + * - C_RNTI + * TimingInfo: subframe in which the MAC PDU contains the C_RNTI + * - PHR + * TimingInfo: subframe in which the MAC PDU contains the PHR + */ + }; + + type port EUTRA_SYSTEM_PORT message { /* EUTRA PTC: Port for system configuration */ + out SYSTEM_CTRL_REQ; + in SYSTEM_CTRL_CNF; + }; + + type port EUTRA_SYSIND_PORT message { /* EUTRA PTC: Port for system indications */ + in SYSTEM_IND; + + }; + } // End group System_Interface + + group MBMS_Configuration { + + type record MBMS_Config_Type { + /* all fields are optional to allow single modifications; + * activation time is applied in the common part of the ASP */ + MBSFN_SubframeConfigList Mbsfn_SubframeConfigList optional, /* Configure subframes reserved for MBSFN */ + MbsfnAreaList_Type MbsfnAreaList optional /* Configure all MBSFN areas */ + }; + + type record length(1..maxMBSFN_Area) of MbsfnArea_Type MbsfnAreaList_Type; + + type record MbsfnArea_Type { + MBSFN_AreaInfo_r9 Mbsfn_AreaInfo optional, /* Configure MCCH scheduling + * acc. to TS 36. 331 cl 9.1.1.4 there is no PDCP and MCCH use the RLC-UM mode + * configuration/scheduling and contents of the MCCH Information is done in one go + * (i.e. there are no separate ports for MCCH data and configuration) */ + MCCH_Data_Type McchData optional, /* MCCH information to be broadcasted */ + MBSFNAreaConfiguration_r9 MbsfnAreaConfiguration optional, /* Configuration parameters for CommonCSA/PMCH/MTCH */ + MRB_List_Type MRB_List optional /* Configure/release MTCH MRBs */ + }; + + type record MCCH_Data_Type { + Mbsfn_AreaId_r9_Type Mbsfn_AreaId optional, /* Used only for modification of MCCH info. + * Omitted if Mbsfn_AreaInfo is present and mandatory present otherwise */ + MCCH_MessageList_Type MsgList + }; + + type record length(1..2) of MCCH_Message MCCH_MessageList_Type; /* Includes mbsfnAreaConfiguration-r9 and optionally mbmsCountingRequest-r10. */ + + type record length(1.. tsc_MaxMRB) of MRB_Type MRB_List_Type; + + const integer tsc_MaxMRB := 32; /* maximum MRB used in test cases - Value arbitrarily set to 32 (5bits) + * Theorical the maximum value is maxPMCH-PerMBSFN * maxSessionPerPMCH i.e. 15*29 */ + type record MRB_Type { + PmchLogicalChannel_Type PmchLogicalChannel, + MTCH_Config_Type Config optional /* present for MRB_COMMON_REQ for MTCH data scheduling; + not present for SystemRequest_Type MSI_Conf */ + }; + + type union MSI_Config_Type { + Null_Type None, /* no MSI MCE included */ + MSI_MCE_Type Auto /* SS automatically includes configured MSI in the first subframes allocated to the MCH within the MCH scheduling period */ + }; + + type record MSI_Type { /* 36.321 clause 6.1.3.7 */ + integer LchID (0..31), /* MRB Logical Channel ID */ + integer StopMTCH (0..2047) /* Stop MTCH */ + }; + + type record of MSI_Type MSI_MCE_Type; + + type union MTCH_Config_Type { + MTCH_ConfigInfo_Type AddOrReconfigure, /* Add/re-configure RB - + * CellId : identifier of the cell being configured + * RoutingInfo : none + * TimingInfo : 'Now' in common cases + * ControlInfo : CnfFlag:=true; FollowOnFlag:=false (in general) */ + Null_Type Release /* release RB - + * CellId : identifier of the cell being configured + * RoutingInfo : none + * TimingInfo : 'Now' in common cases + * ControlInfo : CnfFlag:=true; FollowOnFlag:=false (in general) */ + }; + + type record MTCH_ConfigInfo_Type { /* Acc. to TS 36. 331 cl 9.1.1.4 there is no PDCP and MTCH use the RLC-UM mode */ + RLC_Configuration_Type Rlc optional, /* Mandatory for initial configuration; omit means "keep as it is" + * Note RLC DL only UM mode with SN 5 bits is only valid */ + MAC_MCH_TestModeConfig_Type Mac optional + }; + + type union MAC_MCH_TestModeConfig_Type { + Null_Type None, /* MAC operation in normal mode for MCH */ + Null_Type Config /* MAC is configured in no header manipulation in DL [MTCH is DL only channel] - FFS*/ + }; + + type record PDCCH_MCCH_ChangeNotification_Type { + NotificationIndicator_r9_Type NotificationIndicator_r9, + SubframeOffsetList_Type SubframeOffsetList optional /* list of subframe offsets relative to the absolute timing information given in the + * common part of the ASP; + * if present, multiple MCCH Change Notifications are sent out at all occasions given by the list; + * if omitted only a single MCCH Change Notifications is sent at the occasion given timing information given in + * the common part of the ASP */ + }; + + type record PmchConfig_Type { + ToRS_EPRE_Ratios_Type RelativeTxPower optional /* power ratio for MBSFN-RS and PMCH's resource elements relative to the CRS */ + }; + } // End group MBMS_Configuration + +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_ASP_VirtualNoiseDefs.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_ASP_VirtualNoiseDefs.ttcn new file mode 100644 index 0000000..e2c42f8 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_ASP_VirtualNoiseDefs.ttcn @@ -0,0 +1,57 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-04-01 15:09:57 +0200 (Mon, 01 Apr 2013) $ +// $Rev: 8395 $ +/******************************************************************************/ + +module EUTRA_ASP_VirtualNoiseDefs { + /* ASP definitions for virtual noise generation in EUTRA cells. + The noise is configurated for an already existing EUTRA cell. + For UEs with 2 antenna connectors the AWGN (Additive white Gaussian noise) signals applied to each receiver antenna connector shall be uncorrelated. */ + + import from CommonDefs all; + import from EUTRA_CommonDefs all; + + type record EUTRA_VngConfigInfo_Type { + Dl_Bandwidth_Type Bandwidth, /* Bandwidth to be used for the noise + * (in general the same bandwidth as for the associated EUTRA cell) */ + integer NocLevel /* Noc level; calculation is FFS */ + }; + + type union EUTRA_VngConfigRequest_Type { /* configure/activate noise for a given cell; + * NOTE: it is assumed the the associated EUTRA cell has been created beforehand */ + EUTRA_VngConfigInfo_Type Configure, /* configuration of the virtual noise generator; + * regardless of the power level the noise generator is off before it gets activated for this cell; + * whether the configuration can be changed during a test is FFS but if so the noise generator shall be deactivated for this cell */ + Null_Type Activate, /* noise is activated (switched on) for the given cell acc. to the previous configuration; + * while being active the configuration shall not be modified */ + Null_Type Deactivate /* deactivate noise for given cell */ + }; + + type Null_Type EUTRA_VngConfigConfirm_Type; + + type record EUTRA_VNG_CTRL_REQ { + ReqAspCommonPart_Type Common, /* CellId : as for the assiciated EUTRA cell + * RoutingInfo : None + * TimingInfo : Now + * ControlInfo : CnfFlag:=true; FollowOnFlag:=false */ + EUTRA_VngConfigRequest_Type Request + }; + + + type record EUTRA_VNG_CTRL_CNF { + CnfAspCommonPart_Type Common, /* TimingInfo is ignored by TTCN (apart from EnquireTiming) + * => SS may set TimingInfo to "None" */ + EUTRA_VngConfigConfirm_Type Confirm + }; + + type port EUTRA_VNG_PORT message { /* EUTRA PTC: Port for virtual noise generator */ + out EUTRA_VNG_CTRL_REQ; + in EUTRA_VNG_CTRL_CNF; + }; +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_CommonDefs.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_CommonDefs.ttcn new file mode 100644 index 0000000..3bfb3f8 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_CommonDefs.ttcn @@ -0,0 +1,455 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-08-27 12:20:17 +0200 (Wed, 27 Aug 2014) $ +// $Rev: 11929 $ +/******************************************************************************/ + +module EUTRA_CommonDefs { + import from CommonDefs all; + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + + group Common_Types { + + type enumerated EUTRA_RRC_STATE_Type {RRC_IDLE, RRC_CONNECTED}; + type enumerated IDLEUPDATED_Type {PREAMBLE, NORMAL}; + type enumerated IDLEUPDATED_STATE_Type {STATE2_IDLEUPDATE, STATE2A_TESTLOOP_ModeA, STATE2A_TESTLOOP_ModeB, STATE2A_TESTLOOP_ModeC};//@sic eMBMS sic@ + type enumerated EUTRA_POSTAMBLE_STATE_Type {E1_IDLE, E2_CONNECTED, E2_T3440, E3_TESTMODE, E4_DEREGISTERED}; + type enumerated EUTRA_FDD_TDD_Mode_Type {FDD, TDD}; + type enumerated EUTRA_NAS_NumOfPLMN_Type {LTE_AllCellsOnSamePLMN, LTE_CellsOnDifferentPLMN}; + type enumerated EUTRA_DiscardUlDataUM_Type {DISCARD_UM_DATA}; + type enumerated EUTRA_UseBigGrants_Type {USE_BIG_GRANTS, USE_DEF_GRANTS}; /* @sic R5s140676 Change 2 sic@ */ + + type enumerated EUTRA_NAS_CellSpecialFreq { + LTE_NAS_NormalFreq, + LTE_NAS_Usef1_f2, // LTE NAS test case using f1/f2 instead of f3/f4. See 36.508 Table 6.3.2.2-3 Note 1 + LTE_NAS_Replacef3_f1, // LTE NAS test case: replace f3 by f1 + LTE_NAS_Replacef4_f1, // LTE NAS test case: replace f4 by f1 + LTE_NAS_Replacef3_f2 // LTE NAS test case: replace f3 by f2 + }; + + type enumerated EUTRA_ResourceAllocationScheme_Type { + dci1A, /* All channels: DCI Format 1A and Resource allocation type 2, localized. */ + dci1C_dci1 /* BCCH/PCCH/RAR: DCI format 1C, Resource allocation 2, distributed + * E-Specific: DCI format 1, Resource allocation 0 */ + }; + + type enumerated DrxConfigurationCondition_Type { DRX_L, DRX_S, DRX_S_LongOnDuration }; /* @sic R5-101178, R5-104796, R5s120054 (new value DRX_S_LongOnDuration) sic@ */ + + type record GutiParameters_Type { + PLMN_Identity PLMN_Identity, + MME_GroupId_Type MME_GroupId, + MMEC MME_Code, + M_TMSI_Type M_TMSI + }; + + + type integer HarqProcessId_Type (0..14); /* The values 0..7 represent the ID of HARQ process ID; value range 0..14 is for TDD */ + type record length(0..14) of HarqProcessId_Type HarqProcessList_Type; /* list of HARQ processes: each element shall be unique */ + type integer RedundancyVersion_Type (0..3); /* used in EUTRA_ASP_DrbDefs and EUTRA_ASP_Typedefs */ + type bitstring ContentionResolutionId_Type length(48); /* used in EUTRA_ASP_DrbDefs and EUTRA_ASP_Typedefs */ + + type union RRC_MSG_Request_Type { /* DL RRC PDU on CCCH or DCCH */ + DL_CCCH_Message Ccch, + DL_DCCH_Message Dcch + }; + + type union RRC_MSG_Indication_Type { /* UL RRC PDU on CCCH or DCCH */ + UL_CCCH_Message Ccch, + UL_DCCH_Message Dcch + }; + + type record of SystemInformationBlockType11 SystemInformationBlockType11_List_Type; + + } // End group Common_Types + + //---------------------------------------------------------------------------- + + group Common_Constants { + + const Dl_Bandwidth_Type tsc_Bandwidth_Def := n25; /* n6, n15, n25, n50, n75, n100 */ + const RRC_TransactionIdentifier tsc_RRC_TI_Def := 0; /* considering UMTS there seems to be no reason to use a constant for the RRC-TI */ + const integer tsc_EUTRA_MaxNumberOfCells := 20; /* Maximum number of cells; + * in TS 36.508 in, clause 4.4.2 and 6.3.2.2 there are tables for cells + * being used in non-NAS and NAS test cases; + * in both cases less than 20 cells are listed */ + + const C_RNTI tsc_C_RNTI_Def := int2bit(4097, 16); /* '1001'H acc. to TS 36.523-3 table 7.1.1-1 */ + const C_RNTI tsc_C_RNTI_Def2 := int2bit(4148, 16); /* '1034'H acc. to TS 36.523-3 table 7.1.1-1 */ + const C_RNTI tsc_C_RNTI_Def3 := int2bit(4369, 16); /* '1111'H acc. to TS 36.523-3 table 7.1.1-1 */ + const C_RNTI tsc_C_RNTI_Def4 := int2bit(8177, 16); /* '1FF1'H acc. to TS 36.523-3 table 7.1.1-1 */ + const C_RNTI tsc_C_RNTI_Def5 := int2bit(1234, 16); /* '04D2'H acc. to TS 36.523-3 table 7.1.1-1 */ + const C_RNTI tsc_C_RNTI_Def6 := int2bit(2345, 16); /* '0929'H acc. to TS 36.523-3 table 7.1.1-1 */ + const C_RNTI tsc_C_RNTI_Def7 := int2bit(3456, 16); /* '0D80'H acc. to TS 36.523-3 table 7.1.1-1 */ + const C_RNTI tsc_C_RNTI_Def8 := int2bit(4567, 16); /* '11D7'H acc. to TS 36.523-3 table 7.1.1-1 */ + const C_RNTI tsc_C_RNTI_Def9 := int2bit(5678, 16); /* '162E'H acc. to TS 36.523-3 table 7.1.1-1 */ + const C_RNTI tsc_C_RNTI_Def10 := int2bit(6789, 16); /* '1A85'H acc. to TS 36.523-3 table 7.1.1-1 */ + + const Ra_PreambleIndex_Type tsc_EUTRA_PrachPreambleIndex_Dedicated_Def := 52; /* first index for dedicated random access preambles */ + + const SubFrameNumber_Type tsc_EUTRA_SN4 := 4; + + const integer tsc_EUTRA_DelayBeforeIntraCellHO := 300; /* delay before an intra cell handover */ + const float tsc_EUTRA_DelayForCellSelection := 1.0; /* delay to allow the UE to perform cell selection + e.g. before paging or change of power level */ + const integer tsc_EUTRA_DelayAfterRRCConnectionRelease := 920; /* 80ms + 840ms; 80ms to cope with local release and 640ms to let the UE camp on the cell again + @sic R5-125093 delay increased from 640ms to 840ms sic@ */ + + const P_b_Type tsc_P_b_1Tx := 0; /* acc. to 36.508 Table Table 4.6.3-5; + @status APPROVED (LTE) */ + } // End group Common_Constants + + //---------------------------------------------------------------------------- + + group RRC_Nested_Types { + + type MasterInformationBlock.dl_Bandwidth EUTRA_SysinfoDL_Bandwidth_Type; /* Channel bandwidth acc. to TS 36.101, clause 5.4.2 */ + + type SystemInformationBlockType1.si_WindowLength SiWindowLength_Type; + type SystemInformationBlockType1.cellSelectionInfo.q_RxLevMin Q_Rxlevmin_Type; + type SystemInformationBlockType1.cellSelectionInfo.q_RxLevMinOffset Q_RxLevMinOffset_Type; + type SystemInformationBlockType1.cellAccessRelatedInfo.cellBarred CellBarred_Type; + type SystemInformationBlockType1.cellAccessRelatedInfo.intraFreqReselection IntraFreqRes_Type; + type SystemInformationBlockType1.nonCriticalExtension.nonCriticalExtension.ims_EmergencySupport_r9 Ims_EmergencySupport_r9; + + type SystemInformationBlockType2.freqInfo.ul_Bandwidth EUTRA_SysinfoUL_Bandwidth_Type; + type SystemInformationBlockType2.freqInfo.additionalSpectrumEmission AdditionalSpectrumEmission_Type; + type SystemInformationBlockType2.ac_BarringInfo.ac_BarringForEmergency AccessBarringForEmergencyCalls_Type; + type SystemInformationBlockType2.ac_BarringInfo.ac_BarringForMO_Signalling.ac_BarringFactor AccessProbabilityFactor_Type; + type SystemInformationBlockType2.ac_BarringInfo.ac_BarringForMO_Signalling.ac_BarringTime AccessBarringTime_Type; + type SystemInformationBlockType2.ac_BarringInfo AccessBarringInformation_Type; + + type SystemInformationBlockType3.cellReselectionInfoCommon.q_Hyst Q_Hyst_Type; + type SystemInformationBlockType3.intraFreqCellReselectionInfo.t_ReselectionEUTRA T_ReselectionEutran_Type; + type SystemInformationBlockType3.cellReselectionServingFreqInfo.cellReselectionPriority CellRes_Prio_Type; + type SystemInformationBlockType3.cellReselectionInfoCommon.speedStateReselectionPars SpeedStateReselectionPars_Type; + type SystemInformationBlockType3.s_NonIntraSearch_v920 S_NonIntraSearch_v920_Type; + + type SchedulingInfoList[0].si_Periodicity SiPeriodicity_Type; + type SPS_ConfigDL.setup SpsConfigDL_Type; + type SPS_ConfigUL.setup SpsConfigUL_Type; + type PagingRecordList[0].cn_Domain CN_Domain_Type; + type PCCH_Config.nB Paging_nB_Type; + type UE_TimersAndConstants.t300 T300_Type; + type UE_TimersAndConstants.t301 T301_Type; + type UE_TimersAndConstants.t310 T310_Type; + type UE_TimersAndConstants.t311 T311_Type; + type S_TMSI.m_TMSI M_TMSI_Type; + type RegisteredMME.mmegi MME_GroupId_Type; + type RACH_ConfigCommon.ra_SupervisionInfo.mac_ContentionResolutionTimer MAC_ContentionResolutionTimer_Type; + type RACH_ConfigDedicated.ra_PRACH_MaskIndex Ra_PRACH_MaskIndex_Type; + type SoundingRS_UL_ConfigCommon.setup.srs_BandwidthConfig SrsBandwidthConfiguration_Type; + type PUCCH_ConfigCommon.nRB_CQI N_RB_CQI_Type; + type PUSCH_ConfigCommon.pusch_ConfigBasic.pusch_HoppingOffset PUSCH_HoppingOffset_Type; + type PUSCH_ConfigCommon.pusch_ConfigBasic.n_SB PUSCH_N_SB_Type; + type PUSCH_ConfigCommon.pusch_ConfigBasic.hoppingMode PUSCH_HoppingMode_Type; + type SchedulingRequestConfig.setup.sr_PUCCH_ResourceIndex SR_PUCCH_ResourceIndex_Type; + type SchedulingRequestConfig.setup.dsr_TransMax Dsr_TransMax_Type; + type PDSCH_ConfigCommon.referenceSignalPower ReferenceSignalPower_Type; + type PRACH_ConfigInfo.prach_FreqOffset Prach_FrequencyOffset_Type; + type LogicalChannelConfig.ul_SpecificParameters.prioritisedBitRate PrioritizedBitRate_Type; + type CarrierBandwidthEUTRA.dl_Bandwidth Dl_Bandwidth_Type; + type CarrierBandwidthEUTRA.ul_Bandwidth Ul_Bandwidth_Type; + type PCCH_Config.defaultPagingCycle DefaultPagingCycle_Type; + type RACH_ConfigDedicated.ra_PreambleIndex Ra_PreambleIndex_Type; + type RACH_ConfigCommon.ra_SupervisionInfo.ra_ResponseWindowSize Ra_ResponseWindowSize_Type;//@sic R5-095164 sic@ + type MeasResultEUTRA.cgi_Info GlobalCellIdentity_Type; + type SecurityAlgorithmConfig.cipheringAlgorithm CipheringAlgorithm_Type; + type SecurityAlgorithmConfig.integrityProtAlgorithm IntegrityProtAlgorithm_Type; + type PLMN_IdentityInfo.cellReservedForOperatorUse CellReservedForOpUse_Type; + type Paging.systemInfoModification Paging_SystemInfoModification_Type; + type Paging.etws_Indication Paging_ETWS_Indication; + type PhysCellIdRange.range PhysCellIdRange_Type; + + type RadioResourceConfigDedicated.mac_MainConfig.explicitValue.ul_SCH_Config.maxHARQ_Tx MaxHARQ_Tx_Type; + type RadioResourceConfigDedicated.mac_MainConfig.explicitValue.ul_SCH_Config.periodicBSR_Timer PeriodicBSR_Timer_Type; + type RadioResourceConfigDedicated.mac_MainConfig.explicitValue.ul_SCH_Config.retxBSR_Timer RetxBSR_Timer_Type; + + type RadioResourceConfigDedicated.mac_MainConfig MAC_MainConfig_Type; /* NOTE: + * the type name is confusing since there is a ASN.1 type MAC_MainConfig + * which is used as RadioResourceConfigDedicated.mac_MainConfig.explicitValue; + * but that is as per ASN.1 */ + type MAC_MainConfig.ul_SCH_Config UL_SCH_Config_Type; + type MAC_MainConfig.phr_Config PHR_Config_Type; + type MAC_MainConfig.mac_MainConfig_v1020 MAC_MainConfig_v1020_Type; + type MAC_MainConfig.sr_ProhibitTimer_r9 SR_ProhibitTimer_r9_Type; + type UE_EUTRA_Capability.ue_Category UE_Category_Type; + + type TDD_Config.subframeAssignment TDD_SubframeAssignment_Type; + type PRACH_ConfigSIB.rootSequenceIndex RootSequenceIndex_Type; + type PDSCH_ConfigCommon.p_b P_b_Type; + type PhysicalConfigDedicated.antennaInfo PhysicalConfigDedicated_AntennaInfo_Type; + type SchedulingRequestConfig.setup.sr_ConfigIndex SR_ConfigIndex_Type; // @sic R5-102177 sic@ + type SystemInformationBlockType8.parameters1XRTT Parameters1XRTT_Type; + type SystemInformationBlockType8.parametersHRPD ParametersHRPD_Type; + type SystemInformationBlockType8.searchWindowSize SearchWindowSize_Type; + type SystemInformationBlockType9.hnb_Name HnbName_Type; + type SystemInformationBlockType10.messageIdentifier MessageIdentifier_Type; + type SystemInformationBlockType10.serialNumber SerialNumber_Type; + type SystemInformationBlockType10.warningType WarningType_Type; + type SystemInformationBlockType11.warningMessageSegmentType WarningMessageSegmentType_Type; + type SystemInformationBlockType11.warningMessageSegmentNumber WarningMessageSegmentNumber_Type; + type SystemInformationBlockType11.warningMessageSegment WarningMessageSegment_Type; + type SystemInformationBlockType11.dataCodingScheme DataCodingScheme_Type; + type SystemInformationBlockType12_r9.warningMessageSegmentType_r9 WarningMessageSegmentType_SIB12_Type; + type SystemInformationBlockType12_r9.warningMessageSegmentNumber_r9 WarningMessageSegmentNumber_SIB12_Type; + type SystemInformationBlockType12_r9.warningMessageSegment_r9 WarningMessageSegment_SIB12_Type; + type SystemInformationBlockType12_r9.dataCodingScheme_r9 DataCodingScheme_SIB12_Type; + + type InterFreqCarrierFreqInfo.threshX_Q_r9 ThreshX_Q_r9_Type; + type SystemInformationBlockType3.s_IntraSearch_v920 S_IntraSearch_v920_Type; + + type IdleModeMobilityControlInfo.t320 T320_Type; + + type PDCP_Parameters.maxNumberROHC_ContextSessions MaxNumberROHC_ContextSessions_Type; + + type Handover.targetRAT_Type TargetRAT_Type; + + type CellReselectionParametersCDMA2000.t_ReselectionCDMA2000 T_ReselectionCDMA2000_Type; + type SystemInformationBlockType8.csfb_RegistrationParam1XRTT_v920.powerDownReg_r9 PowerDownReg_Type; + + type UplinkPowerControlDedicatedSCell_r10.pathlossReferenceLinking_r10 SCellPathlossReferenceLinking_Type; + type MAC_MainConfig.mac_MainConfig_v1020.sCellDeactivationTimer_r10 MAC_MainConfig_ScellDeactivationTimer_Type; + + type CrossCarrierSchedulingConfig_r10.schedulingCellInfo_r10.other_r10 CrossSchedulingCarrierInfo_Type; + + + type CarrierFreqUTRA_FDD.threshX_Q_r9 CarrierFreqUTRA_FDD_threshX_Q_r9_Type; + type UplinkPowerControlCommon_v1020.deltaF_PUCCH_Format3_r10 UplinkPowerControl_DeltaF_PUCCH_Format3_Type; /* @status APPROVED (LTE_A) */ + + type DRX_Config.setup.longDRX_CycleStartOffset LongDrxCycleAndOffset_Type; + + type RRCConnectionRelease_v920_IEs.cellInfoList_r9 RRCConnectionRelease_CellInfoList_r9_Type; + + type MBSFN_AreaInfo_r9.notificationIndicator_r9 NotificationIndicator_r9_Type; + type MBSFN_AreaInfo_r9.mbsfn_AreaId_r9 Mbsfn_AreaId_r9_Type; + type MBMS_SessionInfo_r9.logicalChannelIdentity_r9 LogicalChannelIdentity_r9_Type; + type UE_EUTRA_Capability_v1020_IEs.ue_Category_v1020 UE_Category_v1020_Type; + + + } // End group RRC_Nested_Types + + //---------------------------------------------------------------------------- + + group ASP_CommonPart { + /* Definition of ASP common parts for REQ-, CNF- and IND-ASPs */ + + //---------------------------------------------------------------------------- + + group ASP_CommonPart_Definitions { + + group Routing_Info { + + const integer tsc_MaxRB := maxDRB + 3; /* DRBs + 3 SRBs */ + const integer tsc_SRB0 := 0; + const integer tsc_SRB1 := 1; + const integer tsc_SRB2 := 2; + const DRB_Identity tsc_DRB1 := 1; + const DRB_Identity tsc_DRB2 := 2; + const DRB_Identity tsc_DRB3 := 3; + const DRB_Identity tsc_DRB4 := 4; + const DRB_Identity tsc_DRB5 := 5; + const DRB_Identity tsc_DRB6 := 6; + const DRB_Identity tsc_DRB7 := 7; + const DRB_Identity tsc_DRB8 := 8; + + type integer SRB_Identity_Type (tsc_SRB0, tsc_SRB1, tsc_SRB2); /* SRB0 to be covered as well */ + + type record of DRB_Identity DRB_IdentityList_Type; + + const DRB_IdentityList_Type tsc_DrbList_Def := {tsc_DRB1}; + + type union RadioBearerId_Type { + SRB_Identity_Type Srb, + DRB_Identity Drb, + MRB_Identity_Type Mrb + }; + const RadioBearerId_Type tsc_RbId_SRB0 := {Srb:=tsc_SRB0}; + const RadioBearerId_Type tsc_RbId_SRB1 := {Srb:=tsc_SRB1}; + const RadioBearerId_Type tsc_RbId_SRB2 := {Srb:=tsc_SRB2}; + + const RadioBearerId_Type tsc_RbId_DRB1 := {Drb:=tsc_DRB1}; + const RadioBearerId_Type tsc_RbId_DRB2 := {Drb:=tsc_DRB2}; + const RadioBearerId_Type tsc_RbId_DRB3 := {Drb:=tsc_DRB3}; + const RadioBearerId_Type tsc_RbId_DRB4 := {Drb:=tsc_DRB4}; + const RadioBearerId_Type tsc_RbId_DRB5 := {Drb:=tsc_DRB5}; + const RadioBearerId_Type tsc_RbId_DRB6 := {Drb:=tsc_DRB6}; + const RadioBearerId_Type tsc_RbId_DRB7 := {Drb:=tsc_DRB7}; + const RadioBearerId_Type tsc_RbId_DRB8 := {Drb:=tsc_DRB8}; + + // type record of RadioBearerId_Type RadioBearerIdList_Type; /* array of SRB Ids and/or DRB Ids (DRBs + 3 SRBs) */ + + type union RoutingInfo_Type { + Null_Type None, + RadioBearerId_Type RadioBearerId + }; + + type Null_Type CarrierAggregationInfo_Type; /* additional routing information for carrier aggregation; FFS */ + + } // End sub-group Routing_Info + + //---------------------------------------------------------------------------- + + group Timing_Info { + + type integer SystemFrameNumber_Type (0..1023); + type integer SubFrameNumber_Type (0..9); + + type union SubFrameInfo_Type { + SubFrameNumber_Type Number, + Null_Type Any /* no specific sub-frame (valid for REQ ASPs only) */ + }; + type union SystemFrameNumberInfo_Type{ + SystemFrameNumber_Type Number, + Null_Type Any /* no specific frame number (valid for REQ ASPs only) */ + }; + type record SubFrameTiming_Type { + SystemFrameNumberInfo_Type SFN, + SubFrameInfo_Type Subframe + }; + type record of SubFrameTiming_Type SubFrameTimingList_Type; + type union TimingInfo_Type { + SubFrameTiming_Type SubFrame, + Null_Type Now, /* to be used in REQ ASPs when there is no 'activation time' */ + Null_Type None /* only to be used in SYSTEM_CTRL_CNF but not for EnquireTiming */ + }; + + } // End sub-group Timing_Info + + } // End sub-group ASP_CommonPart_Definitions + + //---------------------------------------------------------------------------- + + group REQ_ASP_CommonPart { + + const boolean tsc_CnfReq := true; + const boolean tsc_NoCnfReq := false; + + type record ReqAspControlInfo_Type { + boolean CnfFlag, /* true => SS shall send CNF: + * when the REQ is with no timing information (no activation time), SS shall send the confirmation when the configuration is done, i.e. when the test case may continue. + * Example: + * when there is a configuration follow by a send event it shall not be necessary to have a wait timer in between but the CNF triggers the send event. + * If there are other triggers e.g. like the UE sending a message, CnfFlag shall be set to false by the test case to avoid racing conditions with the CNF and the signalling message. + * When there is an activation time SS shall send the CNF after the configuration has been scheduled; + * that means SS shall not wait until the activation time has been expired. */ + boolean FollowOnFlag /* false => no further (related) information + * true: further related information will be sent to SS (semantics depending on respective ASP) */ + }; + + type record ReqAspCommonPart_Type { + EUTRA_CellId_Type CellId, + RoutingInfo_Type RoutingInfo, + TimingInfo_Type TimingInfo, + ReqAspControlInfo_Type ControlInfo, + CarrierAggregationInfo_Type CA_Info optional /* place holder for additional routing information for carrier aggregation */ + }; + + } // End group REQ_ASP_CommonPart + + //---------------------------------------------------------------------------- + + group CNF_ASP_CommonPart { + + type union ConfirmationResult_Type { + Null_Type Success, + integer Error /* may contain SS specific error code; this will not be evaluated by TTCN */ + }; + + type record CnfAspCommonPart_Type { + EUTRA_CellId_Type CellId, + RoutingInfo_Type RoutingInfo, + TimingInfo_Type TimingInfo, + ConfirmationResult_Type Result + }; + + } // End sub-group CNF_ASP_CommonPart + + //---------------------------------------------------------------------------- + + group IND_ASP_CommonPart { + + type record IntegrityErrorIndication_Type { + boolean Nas, /* NAS Integrity: set to true when received MAC does not match calculated MAC */ + boolean Pdcp /* PDCP Integrity: set to true when received MAC does not match calculated MAC */ + }; + + type record ErrorIndication_Type { + IntegrityErrorIndication_Type Integrity, /* Integrity error: received MAC does not match calculated MAC */ + integer System /* any other error: may be SS specific error code; this will not be evaluated by TTCN; + * e.g. an error shall be raised when the UE requests retransmission of an RLC PDU */ + }; + + type union IndicationStatus_Type { + Null_Type Ok, + ErrorIndication_Type Error + }; + + type record IndAspCommonPart_Type { + EUTRA_CellId_Type CellId, + RoutingInfo_Type RoutingInfo, + TimingInfo_Type TimingInfo, + IndicationStatus_Type Status, + CarrierAggregationInfo_Type CA_Info optional /* place holder for additional routing information for carrier aggregation */ + }; + + } // End sub-group IND_ASP_CommonPart + + //---------------------------------------------------------------------------- + + } // End group ASP_CommonPart + + group CA_CommonDefs { /* Common definitions for carrier aggregation needed for configuration of the SS (EUTRA_ASP_TypeDefs) as well as for MAC test cases (EUTRA_ASP_DrbDefs) */ + + type record ScellBitMap_Type { + B1_Type Reserved, /* LSBit Reserved. Shall be set to 0 */ + B7_Type Value /* 7 MSB bits the C Fields C7 to C1. 1 => the corresponding Scell is Active 0 => Inactive */ + }; + + type ScellBitMap_Type MAC_CTRL_ScellActDeact_Type; /* 36.321 clause 6.1.3.8 */ + + type record PH_Record_Type { /* 36.321 clause 6.1.3.6a */ + B1_Type P_Bit, /* P bit: 1 indicates the UE applies power backoff due to power management */ + B1_Type V_Bit, /* V bit: Indicates if the PH value is based on a real transmission or a reference format. + * For Type 1 PH, V=0 indicates real transmission on PUSCH and V=1 indicates that a PUSCH reference format is used */ + B6_Type Valve, /* The power headroom level. Ph Type 2 (if configured) for Pcell and Type 1 for Pcell and Scell */ + B2_Type Reserved optional, /* 2 reservid bits. Present if V=1 */ + B6_Type PCMaxc optional /* Present if V=1 */ + }; + + type record length(1..9) of PH_Record_Type PH_RecordList_Type; /* If simultaneousPUCCH-PUSCH is not configured at least oneType 1 PH record for Pcell is present. + * Additional one record per Scell for which respective 'C' bit is set as 1. + * If simultaneousPUCCH-PUSCH is configured then one PH Type 2 record for P cell followed by PH Type 1 record for P cell is present. + * Additional one record per Scell for which respective 'C' bit is set as 1 */ + + type record MAC_CTRL_ExtPowerHeadRoom_Type { + ScellBitMap_Type EPH_Octet1, + PH_RecordList_Type PH_RecordList /* At least one record for Pcell is present. + * Additional one record per Scell for which respective 'C' bit is set as 1 */ + }; + + } // End sub-group CA_CommonDefs + + group MBMS_CommonDefs { /* Common definitions for MBMS needed for configuration of the SS */ + + type record MRB_Identity_Type { /* MTCH is uniquely identified by: + * - the logicalChannelIdentity in the mbms-SessionInfoList-r9 + * - the MBSFN area identity, + * - the MCH index in the pmch-InfoList-r9 */ + Mbsfn_AreaId_r9_Type Mbsfn_AreaId, + PmchLogicalChannel_Type PmchLogicalChannel + }; + + type record PmchLogicalChannel_Type { + Pmch_InfoIndex_Type Pmch_InfoIndex, + LogicalChannelIdentity_r9_Type LogicalChannelIdentity + }; + + type integer Pmch_InfoIndex_Type (0..maxPMCH_PerMBSFN); + + } // End sub-group MBMS_CommonDefs +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_LoopBack_TypeDefs.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_LoopBack_TypeDefs.ttcn new file mode 100644 index 0000000..fde9fd9 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_LoopBack_TypeDefs.ttcn @@ -0,0 +1,188 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-10-23 08:07:30 +0200 (Wed, 23 Oct 2013) $ +// $Rev: 9855 $ +/******************************************************************************/ +module EUTRA_LoopBack_TypeDefs { + import from CommonDefs all; + import from NAS_CommonTypeDefs all; + + //---------------------------------------------------------------------------- + // General Info Elements (36.509 ) + //---------------------------------------------------------------------------- + + type Octet_Type UE_TestLoopMode_Type; + type Octet_Type UE_TestLoopModeB_LB_Setup_Type; + type Octet_Type UE_PositioningTechnology_Type; + type O4_Type MBMS_PacketCounterValue_Type; + const integer tsc_MAX_ModeA_LB_Entities := 8; + + //**************************************************************************** + // Test Loop PROTOCOL DEFINITIONS: PDUs + //---------------------------------------------------------------------------- + // Special conformance testing functions for User Equipment messages (36.509 cl. 6) + //---------------------------------------------------------------------------- + + // ============================================================================= + // Close UE Test Loop + // 3G TS 36.509 cl. 6.1 + // Direction: SS to UE + // ----------------------------------------------------------------------------- + + type record CLOSE_UE_TEST_LOOP { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType, /* M V 1 */ + UE_TestLoopMode_Type ueTestLoopMode, /* M V 1 */ + UE_TestLoopModeA_LB_Setup_Type ueTestLoopModeA_LB_Setup optional, /* C LV 1-25 */ + /* present if ueTestLoopMode ='00'F */ + UE_TestLoopModeB_LB_Setup_Type ueTestLoopModeB_LB_Setup optional, /* C V 1 */ + /* present if ueTestLoopMode ='01'F */ + /* represents IP PDU delay time 0..255 seconds */ + UE_TestLoopModeC_LB_Setup_Type ueTestLoopModeC_LB_Setup optional /* C V 3 */ + //@sic eMBMS sic@ + /* present if ueTestLoopMode ='02'H */ + }; + // ============================================================================= + // Structured Type Definition + // *** Comments: + // UE Test Loop Mode A LB Setup 36.509 cl. 6.1 + // *** additional Notes: + // The maximum number of LB entities in the LB setup list is less than or equal to 5. + // ----------------------------------------------------------------------------- + type record UE_TestLoopModeA_LB_Setup_Type { + O1_Type iel, + LB_SetupDRB_IE_List_Type lbSetupDrbList optional + }; +// ============================================================================= + // Structured Type Definition + // *** Comments: + // UE Test Loop Mode C LB Setup 36.509 cl. 6.1 + // ============================================================================= + type record UE_TestLoopModeC_LB_Setup_Type { + B8_Type mBSFN_AreaId, //MBSFN area Identity 0.. 255 Binary coded + B4_Type reservedB1, + B4_Type pMCHIdentity, // MCH identity 0.. 14 (binary coded, + B3_Type reservedB2, + B5_Type logChId //Logical channel identity 0..28 (binary coded, + }; + + // ============================================================================= + // LB Setup DRB IE + // 3G TS 36.509 cl. 6.1 + // ----------------------------------------------------------------------------- + type record LB_SetupDRB_IE_Type { + B16_Type uplinkPdcpSduSize, + B3_Type reserved, + B5_Type drbIdentity + }; + + type record length (1..tsc_MAX_ModeA_LB_Entities)of LB_SetupDRB_IE_Type LB_SetupDRB_IE_List_Type; + + // ============================================================================= + // Close UE Test Loop Complete + // 3G TS 36.509 cl. 6.2 + // Direction: UE to SS + // ----------------------------------------------------------------------------- + type record CLOSE_UE_TEST_LOOP_COMPLETE { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType /* M V 1 */ + }; + + // ============================================================================= + // OPEN UE Test Loop + // 3G TS 36.509 cl. 6.3 + // Direction: SS to UE + // ----------------------------------------------------------------------------- + type record OPEN_UE_TEST_LOOP { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType /* M V 1 */ + }; + + // ============================================================================= + // OPEN UE Test Loop Complete + // 3G TS 36.509 cl. 6.4 + // Direction: UE to SS + // ----------------------------------------------------------------------------- + type record OPEN_UE_TEST_LOOP_COMPLETE { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType /* M V 1 */ + }; + + // ============================================================================= + // Activate RB Test Mode + // 3G TS 36.509 cl. 6.5 + // Direction: SS to UE + // ----------------------------------------------------------------------------- + type record ACTIVATE_TEST_MODE { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType, /* M V 1 */ + UE_TestLoopMode_Type ueTestLoopMode /* M V 1 */ + }; + + // ============================================================================= + // Activate RB Test Mode Complete + // 3G TS 36.509 cl. 6.6 + // Direction: UE to SS + // ----------------------------------------------------------------------------- + type record ACTIVATE_TEST_MODE_COMPLETE { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType /* M V 1 */ + }; + + // ============================================================================= + // Deactivate RB Test Mode + // 3G TS 36.509 cl. 6.7 + // Direction: SS to UE + // ----------------------------------------------------------------------------- + type record DEACTIVATE_TEST_MODE { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType /* M V 1 */ + }; + + // ============================================================================= + // Deactivate RB Test Mode Complete + // 3G TS 36.509 cl. 6.8 + // Direction: UE to SS + // ----------------------------------------------------------------------------- + type record DEACTIVATE_TEST_MODE_COMPLETE { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType /* M V 1 */ + }; + + // ============================================================================= + // UE TEST LOOP MODE C MBMS PACKET COUNTER REQUEST + // 3G TS 36.509 cl. 6.10 + // Direction: SS to UE + // ----------------------------------------------------------------------------- + type record UE_TESTLOOPMODEC_MBMS_PACKETCOUNTERREQUEST { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType /* M V 1 */ + }; + + // ============================================================================= + // UE TEST LOOP MODE C MBMS PACKET COUNTER RESPONSE + // 3G TS 36.509 cl. 6.11 + // Direction: UE to SS + // ----------------------------------------------------------------------------- + type record UE_TESTLOOPMODEC_MBMS_PACKETCOUNTERRESPONSE { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType, /* M V 1 */ + MBMS_PacketCounterValue_Type MBMS_PacketCounterValue /* M V 4 */ + }; + +} with { encode "NAS Types"} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_RRC_ASN1_Definitions.asn b/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_RRC_ASN1_Definitions.asn new file mode 100644 index 0000000..8b5418f --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_RRC_ASN1_Definitions.asn @@ -0,0 +1,5328 @@ +EUTRA-RRC-ASN1-Definitions DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN +-- ***** RRC ASN.1 definitions extracted from TS 36.331 (Revision b.7.0) ***** + + +BCCH-BCH-Message ::= SEQUENCE { + message BCCH-BCH-MessageType +} + +BCCH-BCH-MessageType ::= MasterInformationBlock + + +BCCH-DL-SCH-Message ::= SEQUENCE { + message BCCH-DL-SCH-MessageType +} + +BCCH-DL-SCH-MessageType ::= CHOICE { + c1 CHOICE { + systemInformation SystemInformation, + systemInformationBlockType1 SystemInformationBlockType1 + }, + messageClassExtension SEQUENCE {} +} + + +MCCH-Message ::= SEQUENCE { + message MCCH-MessageType +} + +MCCH-MessageType ::= CHOICE { + c1 CHOICE { + mbsfnAreaConfiguration-r9 MBSFNAreaConfiguration-r9 + }, + later CHOICE { + c2 CHOICE{ + mbmsCountingRequest-r10 MBMSCountingRequest-r10 + }, + messageClassExtension SEQUENCE {} + } +} + + +PCCH-Message ::= SEQUENCE { + message PCCH-MessageType +} + +PCCH-MessageType ::= CHOICE { + c1 CHOICE { + paging Paging + }, + messageClassExtension SEQUENCE {} +} + + +DL-CCCH-Message ::= SEQUENCE { + message DL-CCCH-MessageType +} + +DL-CCCH-MessageType ::= CHOICE { + c1 CHOICE { + rrcConnectionReestablishment RRCConnectionReestablishment, + rrcConnectionReestablishmentReject RRCConnectionReestablishmentReject, + rrcConnectionReject RRCConnectionReject, + rrcConnectionSetup RRCConnectionSetup + }, + messageClassExtension SEQUENCE {} +} + + +DL-DCCH-Message ::= SEQUENCE { + message DL-DCCH-MessageType +} + +DL-DCCH-MessageType ::= CHOICE { + c1 CHOICE { + csfbParametersResponseCDMA2000 CSFBParametersResponseCDMA2000, + dlInformationTransfer DLInformationTransfer, + handoverFromEUTRAPreparationRequest HandoverFromEUTRAPreparationRequest, + mobilityFromEUTRACommand MobilityFromEUTRACommand, + rrcConnectionReconfiguration RRCConnectionReconfiguration, + rrcConnectionRelease RRCConnectionRelease, + securityModeCommand SecurityModeCommand, + ueCapabilityEnquiry UECapabilityEnquiry, + counterCheck CounterCheck, + ueInformationRequest-r9 UEInformationRequest-r9, + loggedMeasurementConfiguration-r10 LoggedMeasurementConfiguration-r10, + rnReconfiguration-r10 RNReconfiguration-r10, + spare4 NULL, + spare3 NULL, spare2 NULL, spare1 NULL + }, + messageClassExtension SEQUENCE {} +} + + +UL-CCCH-Message ::= SEQUENCE { + message UL-CCCH-MessageType +} + +UL-CCCH-MessageType ::= CHOICE { + c1 CHOICE { + rrcConnectionReestablishmentRequest RRCConnectionReestablishmentRequest, + rrcConnectionRequest RRCConnectionRequest + }, + messageClassExtension SEQUENCE {} +} + + +UL-DCCH-Message ::= SEQUENCE { + message UL-DCCH-MessageType +} + +UL-DCCH-MessageType ::= CHOICE { + c1 CHOICE { + csfbParametersRequestCDMA2000 CSFBParametersRequestCDMA2000, + measurementReport MeasurementReport, + rrcConnectionReconfigurationComplete RRCConnectionReconfigurationComplete, + rrcConnectionReestablishmentComplete RRCConnectionReestablishmentComplete, + rrcConnectionSetupComplete RRCConnectionSetupComplete, + securityModeComplete SecurityModeComplete, + securityModeFailure SecurityModeFailure, + ueCapabilityInformation UECapabilityInformation, + ulHandoverPreparationTransfer ULHandoverPreparationTransfer, + ulInformationTransfer ULInformationTransfer, + counterCheckResponse CounterCheckResponse, + ueInformationResponse-r9 UEInformationResponse-r9, + proximityIndication-r9 ProximityIndication-r9, + rnReconfigurationComplete-r10 RNReconfigurationComplete-r10, + mbmsCountingResponse-r10 MBMSCountingResponse-r10, + interFreqRSTDMeasurementIndication-r10 InterFreqRSTDMeasurementIndication-r10 + }, + messageClassExtension CHOICE { + c2 CHOICE { + ueAssistanceInformation-r11 UEAssistanceInformation-r11, + inDeviceCoexIndication-r11 InDeviceCoexIndication-r11, + mbmsInterestIndication-r11 MBMSInterestIndication-r11, + spare13 NULL, + spare12 NULL, spare11 NULL, spare10 NULL, + spare9 NULL, spare8 NULL, spare7 NULL, + spare6 NULL, spare5 NULL, spare4 NULL, + spare3 NULL, spare2 NULL, spare1 NULL + }, + messageClassExtensionFuture-r11 SEQUENCE {} + } +} + + +CounterCheck ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + c1 CHOICE { + counterCheck-r8 CounterCheck-r8-IEs, + spare3 NULL, spare2 NULL, spare1 NULL + }, + criticalExtensionsFuture SEQUENCE {} + } +} + +CounterCheck-r8-IEs ::= SEQUENCE { + drb-CountMSB-InfoList DRB-CountMSB-InfoList, + nonCriticalExtension CounterCheck-v8a0-IEs OPTIONAL +} + +CounterCheck-v8a0-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + +DRB-CountMSB-InfoList ::= SEQUENCE (SIZE (1..maxDRB)) OF DRB-CountMSB-Info + +DRB-CountMSB-Info ::= SEQUENCE { + drb-Identity DRB-Identity, + countMSB-Uplink INTEGER(0..33554431), + countMSB-Downlink INTEGER(0..33554431) +} + + +CounterCheckResponse ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + counterCheckResponse-r8 CounterCheckResponse-r8-IEs, + criticalExtensionsFuture SEQUENCE {} + } +} + +CounterCheckResponse-r8-IEs ::= SEQUENCE { + drb-CountInfoList DRB-CountInfoList, + nonCriticalExtension CounterCheckResponse-v8a0-IEs OPTIONAL +} + +CounterCheckResponse-v8a0-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + +DRB-CountInfoList ::= SEQUENCE (SIZE (0..maxDRB)) OF DRB-CountInfo + +DRB-CountInfo ::= SEQUENCE { + drb-Identity DRB-Identity, + count-Uplink INTEGER(0..4294967295), + count-Downlink INTEGER(0..4294967295) +} + + +CSFBParametersRequestCDMA2000 ::= SEQUENCE { + criticalExtensions CHOICE { + csfbParametersRequestCDMA2000-r8 CSFBParametersRequestCDMA2000-r8-IEs, + criticalExtensionsFuture SEQUENCE {} + } +} + +CSFBParametersRequestCDMA2000-r8-IEs ::= SEQUENCE { + nonCriticalExtension CSFBParametersRequestCDMA2000-v8a0-IEs OPTIONAL +} + +CSFBParametersRequestCDMA2000-v8a0-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + + +CSFBParametersResponseCDMA2000 ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + csfbParametersResponseCDMA2000-r8 CSFBParametersResponseCDMA2000-r8-IEs, + criticalExtensionsFuture SEQUENCE {} + } +} + +CSFBParametersResponseCDMA2000-r8-IEs ::= SEQUENCE { + rand RAND-CDMA2000, + mobilityParameters MobilityParametersCDMA2000, + nonCriticalExtension CSFBParametersResponseCDMA2000-v8a0-IEs OPTIONAL +} + +CSFBParametersResponseCDMA2000-v8a0-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + + +DLInformationTransfer ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + c1 CHOICE { + dlInformationTransfer-r8 DLInformationTransfer-r8-IEs, + spare3 NULL, spare2 NULL, spare1 NULL + }, + criticalExtensionsFuture SEQUENCE {} + } +} + +DLInformationTransfer-r8-IEs ::= SEQUENCE { + dedicatedInfoType CHOICE { + dedicatedInfoNAS DedicatedInfoNAS, + dedicatedInfoCDMA2000-1XRTT DedicatedInfoCDMA2000, + dedicatedInfoCDMA2000-HRPD DedicatedInfoCDMA2000 + }, + nonCriticalExtension DLInformationTransfer-v8a0-IEs OPTIONAL +} + +DLInformationTransfer-v8a0-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + + +HandoverFromEUTRAPreparationRequest ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + c1 CHOICE { + handoverFromEUTRAPreparationRequest-r8 + HandoverFromEUTRAPreparationRequest-r8-IEs, + spare3 NULL, spare2 NULL, spare1 NULL + }, + criticalExtensionsFuture SEQUENCE {} + } +} + +HandoverFromEUTRAPreparationRequest-r8-IEs ::= SEQUENCE { + cdma2000-Type CDMA2000-Type, + rand RAND-CDMA2000 OPTIONAL, -- Cond cdma2000-Type + mobilityParameters MobilityParametersCDMA2000 OPTIONAL, -- Cond cdma2000-Type + nonCriticalExtension HandoverFromEUTRAPreparationRequest-v890-IEs OPTIONAL +} + +HandoverFromEUTRAPreparationRequest-v890-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension HandoverFromEUTRAPreparationRequest-v920-IEs OPTIONAL +} + +HandoverFromEUTRAPreparationRequest-v920-IEs ::= SEQUENCE { + concurrPrepCDMA2000-HRPD-r9 BOOLEAN OPTIONAL, -- Cond cdma2000-Type + nonCriticalExtension HandoverFromEUTRAPreparationRequest-v1020-IEs OPTIONAL +} + +HandoverFromEUTRAPreparationRequest-v1020-IEs ::= SEQUENCE { + dualRxTxRedirectIndicator-r10 ENUMERATED {true} OPTIONAL, -- Cond cdma2000-1XRTT + redirectCarrierCDMA2000-1XRTT-r10 CarrierFreqCDMA2000 OPTIONAL, -- Cond dualRxTxRedirect + nonCriticalExtension SEQUENCE {} OPTIONAL +} + + +InDeviceCoexIndication-r11 ::= SEQUENCE { + criticalExtensions CHOICE { + c1 CHOICE { + inDeviceCoexIndication-r11 InDeviceCoexIndication-r11-IEs, + spare3 NULL, spare2 NULL, spare1 NULL + }, + criticalExtensionsFuture SEQUENCE {} + } +} + +InDeviceCoexIndication-r11-IEs ::= SEQUENCE { + affectedCarrierFreqList-r11 AffectedCarrierFreqList-r11 OPTIONAL, + tdm-AssistanceInfo-r11 TDM-AssistanceInfo-r11 OPTIONAL, + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + +AffectedCarrierFreqList-r11 ::= SEQUENCE (SIZE (1..maxFreqIDC-r11)) OF AffectedCarrierFreq-r11 + +AffectedCarrierFreq-r11 ::= SEQUENCE { + carrierFreq-r11 MeasObjectId, + interferenceDirection-r11 ENUMERATED {eutra, other, both, spare} +} + +TDM-AssistanceInfo-r11 ::= CHOICE { + drx-AssistanceInfo-r11 SEQUENCE { + drx-CycleLength-r11 ENUMERATED {sf40, sf64, sf80, sf128, sf160, + sf256, spare2, spare1}, + drx-Offset-r11 INTEGER (0..255) OPTIONAL, + drx-ActiveTime-r11 ENUMERATED {sf20, sf30, sf40, sf60, sf80, + sf100, spare2, spare1} + }, + idc-SubframePatternList-r11 IDC-SubframePatternList-r11, + ... +} + +IDC-SubframePatternList-r11 ::= SEQUENCE (SIZE (1..maxSubframePatternIDC-r11)) OF IDC-SubframePattern-r11 + +IDC-SubframePattern-r11 ::= CHOICE { + subframePatternFDD-r11 BIT STRING (SIZE (4)), + subframePatternTDD-r11 CHOICE { + subframeConfig0-r11 BIT STRING (SIZE (70)), + subframeConfig1-5-r11 BIT STRING (SIZE (10)), + subframeConfig6-r11 BIT STRING (SIZE (60)) + }, + ... +} + + +InterFreqRSTDMeasurementIndication-r10 ::= SEQUENCE { + criticalExtensions CHOICE { + c1 CHOICE { + interFreqRSTDMeasurementIndication-r10 InterFreqRSTDMeasurementIndication-r10-IEs, + spare3 NULL, spare2 NULL, spare1 NULL + }, + criticalExtensionsFuture SEQUENCE {} + } +} + +InterFreqRSTDMeasurementIndication-r10-IEs ::= SEQUENCE { + rstd-InterFreqIndication-r10 CHOICE { + start SEQUENCE { + rstd-InterFreqInfoList-r10 RSTD-InterFreqInfoList-r10 + }, + stop NULL + }, + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + +RSTD-InterFreqInfoList-r10 ::= SEQUENCE (SIZE(1..maxRSTD-Freq-r10)) OF RSTD-InterFreqInfo-r10 + +RSTD-InterFreqInfo-r10 ::= SEQUENCE { + carrierFreq-r10 ARFCN-ValueEUTRA, + measPRS-Offset-r10 INTEGER (0..39), + ..., + [[ carrierFreq-v1090 ARFCN-ValueEUTRA-v9e0 OPTIONAL + ]] +} + + +LoggedMeasurementConfiguration-r10 ::= SEQUENCE { + criticalExtensions CHOICE { + c1 CHOICE { + loggedMeasurementConfiguration-r10 LoggedMeasurementConfiguration-r10-IEs, + spare3 NULL, spare2 NULL, spare1 NULL + }, + criticalExtensionsFuture SEQUENCE {} + } +} + + +LoggedMeasurementConfiguration-r10-IEs ::= SEQUENCE { + traceReference-r10 TraceReference-r10, + traceRecordingSessionRef-r10 OCTET STRING (SIZE (2)), + tce-Id-r10 OCTET STRING (SIZE (1)), + absoluteTimeInfo-r10 AbsoluteTimeInfo-r10, + areaConfiguration-r10 AreaConfiguration-r10 OPTIONAL, -- Need OR + loggingDuration-r10 LoggingDuration-r10, + loggingInterval-r10 LoggingInterval-r10, + nonCriticalExtension LoggedMeasurementConfiguration-v1080-IEs OPTIONAL +} + +LoggedMeasurementConfiguration-v1080-IEs ::= SEQUENCE { + lateNonCriticalExtension-r10 OCTET STRING OPTIONAL, + nonCriticalExtension LoggedMeasurementConfiguration-v1130-IEs OPTIONAL +} + +LoggedMeasurementConfiguration-v1130-IEs ::= SEQUENCE { + plmn-IdentityList-r11 PLMN-IdentityList3-r11 OPTIONAL, -- Need OR + areaConfiguration-v1130 AreaConfiguration-v1130 OPTIONAL, -- Need OR + nonCriticalExtension SEQUENCE {} OPTIONAL +} + + +MasterInformationBlock ::= SEQUENCE { + dl-Bandwidth ENUMERATED { + n6, n15, n25, n50, n75, n100}, + phich-Config PHICH-Config, + systemFrameNumber BIT STRING (SIZE (8)), + spare BIT STRING (SIZE (10)) +} + + + +MBMSCountingRequest-r10 ::= SEQUENCE { + countingRequestList-r10 CountingRequestList-r10, + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + +CountingRequestList-r10 ::= SEQUENCE (SIZE (1..maxServiceCount)) OF CountingRequestInfo-r10 + +CountingRequestInfo-r10 ::= SEQUENCE { + tmgi-r10 TMGI-r9, + ... +} + + +MBMSCountingResponse-r10 ::= SEQUENCE { + criticalExtensions CHOICE { + c1 CHOICE { + countingResponse-r10 MBMSCountingResponse-r10-IEs, + spare3 NULL, spare2 NULL, spare1 NULL + }, + criticalExtensionsFuture SEQUENCE {} + } +} + +MBMSCountingResponse-r10-IEs ::= SEQUENCE { + mbsfn-AreaIndex-r10 INTEGER (0..maxMBSFN-Area-1) OPTIONAL, + countingResponseList-r10 CountingResponseList-r10 OPTIONAL, + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + +CountingResponseList-r10 ::= SEQUENCE (SIZE (1..maxServiceCount)) OF CountingResponseInfo-r10 + +CountingResponseInfo-r10 ::= SEQUENCE { + countingResponseService-r10 INTEGER (0..maxServiceCount-1), + ... +} + + +MBMSInterestIndication-r11 ::= SEQUENCE { + criticalExtensions CHOICE { + c1 CHOICE { + interestIndication-r11 MBMSInterestIndication-r11-IEs, + spare3 NULL, spare2 NULL, spare1 NULL + }, + criticalExtensionsFuture SEQUENCE {} + } +} + +MBMSInterestIndication-r11-IEs ::= SEQUENCE { + mbms-FreqList-r11 CarrierFreqListMBMS-r11 OPTIONAL, + mbms-Priority-r11 ENUMERATED {true} OPTIONAL, + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + + +MBSFNAreaConfiguration-r9 ::= SEQUENCE { + commonSF-Alloc-r9 CommonSF-AllocPatternList-r9, + commonSF-AllocPeriod-r9 ENUMERATED { + rf4, rf8, rf16, rf32, rf64, rf128, rf256}, + pmch-InfoList-r9 PMCH-InfoList-r9, + nonCriticalExtension MBSFNAreaConfiguration-v930-IEs OPTIONAL +} + +MBSFNAreaConfiguration-v930-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + +CommonSF-AllocPatternList-r9 ::= SEQUENCE (SIZE (1..maxMBSFN-Allocations)) OF MBSFN-SubframeConfig + + +MeasurementReport ::= SEQUENCE { + criticalExtensions CHOICE { + c1 CHOICE{ + measurementReport-r8 MeasurementReport-r8-IEs, + spare7 NULL, + spare6 NULL, spare5 NULL, spare4 NULL, + spare3 NULL, spare2 NULL, spare1 NULL + }, + criticalExtensionsFuture SEQUENCE {} + } +} + +MeasurementReport-r8-IEs ::= SEQUENCE { + measResults MeasResults, + nonCriticalExtension MeasurementReport-v8a0-IEs OPTIONAL +} + +MeasurementReport-v8a0-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + + +MobilityFromEUTRACommand ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + c1 CHOICE{ + mobilityFromEUTRACommand-r8 MobilityFromEUTRACommand-r8-IEs, + mobilityFromEUTRACommand-r9 MobilityFromEUTRACommand-r9-IEs, + spare2 NULL, spare1 NULL + }, + criticalExtensionsFuture SEQUENCE {} + } +} + +MobilityFromEUTRACommand-r8-IEs ::= SEQUENCE { + cs-FallbackIndicator BOOLEAN, + purpose CHOICE{ + handover Handover, + cellChangeOrder CellChangeOrder + }, + nonCriticalExtension MobilityFromEUTRACommand-v8a0-IEs OPTIONAL +} + +MobilityFromEUTRACommand-v8a0-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension MobilityFromEUTRACommand-v8d0-IEs OPTIONAL +} + +MobilityFromEUTRACommand-v8d0-IEs ::= SEQUENCE { + bandIndicator BandIndicatorGERAN OPTIONAL, -- Cond GERAN + nonCriticalExtension SEQUENCE {} OPTIONAL +} + +MobilityFromEUTRACommand-r9-IEs ::= SEQUENCE { + cs-FallbackIndicator BOOLEAN, + purpose CHOICE{ + handover Handover, + cellChangeOrder CellChangeOrder, + e-CSFB-r9 E-CSFB-r9, + ... + }, + nonCriticalExtension MobilityFromEUTRACommand-v930-IEs OPTIONAL +} + +MobilityFromEUTRACommand-v930-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension MobilityFromEUTRACommand-v960-IEs OPTIONAL +} + +MobilityFromEUTRACommand-v960-IEs ::= SEQUENCE { + bandIndicator BandIndicatorGERAN OPTIONAL, -- Cond GERAN + nonCriticalExtension SEQUENCE {} OPTIONAL +} + +Handover ::= SEQUENCE { + targetRAT-Type ENUMERATED { + utra, geran, cdma2000-1XRTT, cdma2000-HRPD, + spare4, spare3, spare2, spare1, ...}, + targetRAT-MessageContainer OCTET STRING, + nas-SecurityParamFromEUTRA OCTET STRING (SIZE (1)) OPTIONAL, -- Cond UTRAGERAN + systemInformation SI-OrPSI-GERAN OPTIONAL -- Cond PSHO +} + +CellChangeOrder ::= SEQUENCE { + t304 ENUMERATED { + ms100, ms200, ms500, ms1000, + ms2000, ms4000, ms8000, spare1}, + targetRAT-Type CHOICE { + geran SEQUENCE { + physCellId PhysCellIdGERAN, + carrierFreq CarrierFreqGERAN, + networkControlOrder BIT STRING (SIZE (2)) OPTIONAL, -- Need OP + systemInformation SI-OrPSI-GERAN OPTIONAL -- Need OP + }, + ... + } +} + +SI-OrPSI-GERAN ::= CHOICE { + si SystemInfoListGERAN, + psi SystemInfoListGERAN +} + +E-CSFB-r9 ::= SEQUENCE { + messageContCDMA2000-1XRTT-r9 OCTET STRING OPTIONAL, -- Need ON + mobilityCDMA2000-HRPD-r9 ENUMERATED { + handover, redirection + } OPTIONAL, -- Need OP + messageContCDMA2000-HRPD-r9 OCTET STRING OPTIONAL, -- Cond concHO + redirectCarrierCDMA2000-HRPD-r9 CarrierFreqCDMA2000 OPTIONAL -- Cond concRedir +} + + +Paging ::= SEQUENCE { + pagingRecordList PagingRecordList OPTIONAL, -- Need ON + systemInfoModification ENUMERATED {true} OPTIONAL, -- Need ON + etws-Indication ENUMERATED {true} OPTIONAL, -- Need ON + nonCriticalExtension Paging-v890-IEs OPTIONAL +} + +Paging-v890-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension Paging-v920-IEs OPTIONAL +} + +Paging-v920-IEs ::= SEQUENCE { + cmas-Indication-r9 ENUMERATED {true} OPTIONAL, -- Need ON + nonCriticalExtension Paging-v1130-IEs OPTIONAL +} + +Paging-v1130-IEs ::= SEQUENCE { + eab-ParamModification-r11 ENUMERATED {true} OPTIONAL, -- Need ON + nonCriticalExtension SEQUENCE {} OPTIONAL +} + +PagingRecordList ::= SEQUENCE (SIZE (1..maxPageRec)) OF PagingRecord + +PagingRecord ::= SEQUENCE { + ue-Identity PagingUE-Identity, + cn-Domain ENUMERATED {ps, cs}, + ... +} + +PagingUE-Identity ::= CHOICE { + s-TMSI S-TMSI, + imsi IMSI, + ... +} + +IMSI ::= SEQUENCE (SIZE (6..21)) OF IMSI-Digit + +IMSI-Digit ::= INTEGER (0..9) + + +ProximityIndication-r9 ::= SEQUENCE { + criticalExtensions CHOICE { + c1 CHOICE { + proximityIndication-r9 ProximityIndication-r9-IEs, + spare3 NULL, spare2 NULL, spare1 NULL + }, + criticalExtensionsFuture SEQUENCE {} + } +} + +ProximityIndication-r9-IEs ::= SEQUENCE { + type-r9 ENUMERATED {entering, leaving}, + carrierFreq-r9 CHOICE { + eutra-r9 ARFCN-ValueEUTRA, + utra-r9 ARFCN-ValueUTRA, + ..., + eutra2-v9e0 ARFCN-ValueEUTRA-v9e0 + }, + nonCriticalExtension ProximityIndication-v930-IEs OPTIONAL +} + +ProximityIndication-v930-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + + +RNReconfiguration-r10 ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + c1 CHOICE { + rnReconfiguration-r10 RNReconfiguration-r10-IEs, + spare3 NULL, spare2 NULL, spare1 NULL + }, + criticalExtensionsFuture SEQUENCE {} + } +} + +RNReconfiguration-r10-IEs ::= SEQUENCE { + rn-SystemInfo-r10 RN-SystemInfo-r10 OPTIONAL, -- Need ON + rn-SubframeConfig-r10 RN-SubframeConfig-r10 OPTIONAL, -- Need ON + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + +RN-SystemInfo-r10 ::= SEQUENCE { + systemInformationBlockType1-r10 OCTET STRING (CONTAINING SystemInformationBlockType1) OPTIONAL, -- Need ON + systemInformationBlockType2-r10 SystemInformationBlockType2 OPTIONAL, -- Need ON + ... +} + + +RNReconfigurationComplete-r10 ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + c1 CHOICE{ + rnReconfigurationComplete-r10 RNReconfigurationComplete-r10-IEs, + spare3 NULL, spare2 NULL, spare1 NULL + }, + criticalExtensionsFuture SEQUENCE {} + } +} + +RNReconfigurationComplete-r10-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + + +RRCConnectionReconfiguration ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + c1 CHOICE{ + rrcConnectionReconfiguration-r8 RRCConnectionReconfiguration-r8-IEs, + spare7 NULL, + spare6 NULL, spare5 NULL, spare4 NULL, + spare3 NULL, spare2 NULL, spare1 NULL + }, + criticalExtensionsFuture SEQUENCE {} + } +} + +RRCConnectionReconfiguration-r8-IEs ::= SEQUENCE { + measConfig MeasConfig OPTIONAL, -- Need ON + mobilityControlInfo MobilityControlInfo OPTIONAL, -- Cond HO + dedicatedInfoNASList SEQUENCE (SIZE(1..maxDRB)) OF + DedicatedInfoNAS OPTIONAL, -- Cond nonHO + radioResourceConfigDedicated RadioResourceConfigDedicated OPTIONAL, -- Cond HO-toEUTRA + securityConfigHO SecurityConfigHO OPTIONAL, -- Cond HO + nonCriticalExtension RRCConnectionReconfiguration-v890-IEs OPTIONAL +} + +RRCConnectionReconfiguration-v890-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension RRCConnectionReconfiguration-v920-IEs OPTIONAL +} + +RRCConnectionReconfiguration-v920-IEs ::= SEQUENCE { + otherConfig-r9 OtherConfig-r9 OPTIONAL, -- Need ON + fullConfig-r9 ENUMERATED {true} OPTIONAL, -- Cond HO-Reestab + nonCriticalExtension RRCConnectionReconfiguration-v1020-IEs OPTIONAL +} + +RRCConnectionReconfiguration-v1020-IEs ::= SEQUENCE { + sCellToReleaseList-r10 SCellToReleaseList-r10 OPTIONAL, -- Need ON + sCellToAddModList-r10 SCellToAddModList-r10 OPTIONAL, -- Need ON + nonCriticalExtension RRCConnectionReconfiguration-v1130-IEs OPTIONAL +} + +RRCConnectionReconfiguration-v1130-IEs ::= SEQUENCE { + systemInfomationBlockType1Dedicated-r11 OCTET STRING (CONTAINING SystemInformationBlockType1) OPTIONAL, -- Need ON + nonCriticalExtension SEQUENCE {} OPTIONAL +} + +SCellToAddModList-r10 ::= SEQUENCE (SIZE (1..maxSCell-r10)) OF SCellToAddMod-r10 + +SCellToAddMod-r10 ::= SEQUENCE { + sCellIndex-r10 SCellIndex-r10, + cellIdentification-r10 SEQUENCE { + physCellId-r10 PhysCellId, + dl-CarrierFreq-r10 ARFCN-ValueEUTRA + } OPTIONAL, -- Cond SCellAdd + radioResourceConfigCommonSCell-r10 RadioResourceConfigCommonSCell-r10 OPTIONAL, -- Cond SCellAdd + radioResourceConfigDedicatedSCell-r10 RadioResourceConfigDedicatedSCell-r10 OPTIONAL, -- Cond SCellAdd2 + ..., + [[ dl-CarrierFreq-v1090 ARFCN-ValueEUTRA-v9e0 OPTIONAL -- Cond EARFCN-max + ]] +} + +SCellToReleaseList-r10 ::= SEQUENCE (SIZE (1..maxSCell-r10)) OF SCellIndex-r10 + +SecurityConfigHO ::= SEQUENCE { + handoverType CHOICE { + intraLTE SEQUENCE { + securityAlgorithmConfig SecurityAlgorithmConfig OPTIONAL, -- Cond fullConfig + keyChangeIndicator BOOLEAN, + nextHopChainingCount NextHopChainingCount + }, + interRAT SEQUENCE { + securityAlgorithmConfig SecurityAlgorithmConfig, + nas-SecurityParamToEUTRA OCTET STRING (SIZE(6)) + } + }, + ... +} + + + +RRCConnectionReconfigurationComplete ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + rrcConnectionReconfigurationComplete-r8 + RRCConnectionReconfigurationComplete-r8-IEs, + criticalExtensionsFuture SEQUENCE {} + } +} + +RRCConnectionReconfigurationComplete-r8-IEs ::= SEQUENCE { + nonCriticalExtension RRCConnectionReconfigurationComplete-v8a0-IEs OPTIONAL +} + +RRCConnectionReconfigurationComplete-v8a0-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension RRCConnectionReconfigurationComplete-v1020-IEs OPTIONAL +} + +RRCConnectionReconfigurationComplete-v1020-IEs ::= SEQUENCE { + rlf-InfoAvailable-r10 ENUMERATED {true} OPTIONAL, + logMeasAvailable-r10 ENUMERATED {true} OPTIONAL, + nonCriticalExtension RRCConnectionReconfigurationComplete-v1130-IEs OPTIONAL +} + +RRCConnectionReconfigurationComplete-v1130-IEs ::= SEQUENCE { + connEstFailInfoAvailable-r11 ENUMERATED {true} OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + + +RRCConnectionReestablishment ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + c1 CHOICE{ + rrcConnectionReestablishment-r8 RRCConnectionReestablishment-r8-IEs, + spare7 NULL, + spare6 NULL, spare5 NULL, spare4 NULL, + spare3 NULL, spare2 NULL, spare1 NULL + }, + criticalExtensionsFuture SEQUENCE {} + } +} + +RRCConnectionReestablishment-r8-IEs ::= SEQUENCE { + radioResourceConfigDedicated RadioResourceConfigDedicated, + nextHopChainingCount NextHopChainingCount, + nonCriticalExtension RRCConnectionReestablishment-v8a0-IEs OPTIONAL +} + +RRCConnectionReestablishment-v8a0-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + + +RRCConnectionReestablishmentComplete ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + rrcConnectionReestablishmentComplete-r8 + RRCConnectionReestablishmentComplete-r8-IEs, + criticalExtensionsFuture SEQUENCE {} + } +} + +RRCConnectionReestablishmentComplete-r8-IEs ::= SEQUENCE { + nonCriticalExtension RRCConnectionReestablishmentComplete-v920-IEs OPTIONAL +} + +RRCConnectionReestablishmentComplete-v920-IEs ::= SEQUENCE { + rlf-InfoAvailable-r9 ENUMERATED {true} OPTIONAL, + nonCriticalExtension RRCConnectionReestablishmentComplete-v8a0-IEs OPTIONAL +} + +RRCConnectionReestablishmentComplete-v8a0-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension RRCConnectionReestablishmentComplete-v1020-IEs OPTIONAL +} + +RRCConnectionReestablishmentComplete-v1020-IEs ::= SEQUENCE { + logMeasAvailable-r10 ENUMERATED {true} OPTIONAL, + nonCriticalExtension RRCConnectionReestablishmentComplete-v1130-IEs OPTIONAL +} + +RRCConnectionReestablishmentComplete-v1130-IEs ::= SEQUENCE { + connEstFailInfoAvailable-r11 ENUMERATED {true} OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + + +RRCConnectionReestablishmentReject ::= SEQUENCE { + criticalExtensions CHOICE { + rrcConnectionReestablishmentReject-r8 + RRCConnectionReestablishmentReject-r8-IEs, + criticalExtensionsFuture SEQUENCE {} + } +} + +RRCConnectionReestablishmentReject-r8-IEs ::= SEQUENCE { + nonCriticalExtension RRCConnectionReestablishmentReject-v8a0-IEs OPTIONAL +} + +RRCConnectionReestablishmentReject-v8a0-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + + +RRCConnectionReestablishmentRequest ::= SEQUENCE { + criticalExtensions CHOICE { + rrcConnectionReestablishmentRequest-r8 + RRCConnectionReestablishmentRequest-r8-IEs, + criticalExtensionsFuture SEQUENCE {} + } +} + +RRCConnectionReestablishmentRequest-r8-IEs ::= SEQUENCE { + ue-Identity ReestabUE-Identity, + reestablishmentCause ReestablishmentCause, + spare BIT STRING (SIZE (2)) +} + +ReestabUE-Identity ::= SEQUENCE { + c-RNTI C-RNTI, + physCellId PhysCellId, + shortMAC-I ShortMAC-I +} + +ReestablishmentCause ::= ENUMERATED { + reconfigurationFailure, handoverFailure, + otherFailure, spare1} + + +RRCConnectionReject ::= SEQUENCE { + criticalExtensions CHOICE { + c1 CHOICE { + rrcConnectionReject-r8 RRCConnectionReject-r8-IEs, + spare3 NULL, spare2 NULL, spare1 NULL + }, + criticalExtensionsFuture SEQUENCE {} + } +} + +RRCConnectionReject-r8-IEs ::= SEQUENCE { + waitTime INTEGER (1..16), + nonCriticalExtension RRCConnectionReject-v8a0-IEs OPTIONAL +} + +RRCConnectionReject-v8a0-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension RRCConnectionReject-v1020-IEs OPTIONAL +} + +RRCConnectionReject-v1020-IEs ::= SEQUENCE { + extendedWaitTime-r10 INTEGER (1..1800) OPTIONAL, -- Need ON + nonCriticalExtension RRCConnectionReject-v1130-IEs OPTIONAL +} + +RRCConnectionReject-v1130-IEs ::= SEQUENCE { + deprioritisationReq-r11 SEQUENCE { + deprioritisationType-r11 ENUMERATED {frequency, e-utra}, + deprioritisationTimer-r11 ENUMERATED {min5, min10, min15, min30} + } OPTIONAL, -- Need ON + nonCriticalExtension SEQUENCE {} OPTIONAL +} + + +RRCConnectionRelease ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + c1 CHOICE { + rrcConnectionRelease-r8 RRCConnectionRelease-r8-IEs, + spare3 NULL, spare2 NULL, spare1 NULL + }, + criticalExtensionsFuture SEQUENCE {} + } +} + +RRCConnectionRelease-r8-IEs ::= SEQUENCE { + releaseCause ReleaseCause, + redirectedCarrierInfo RedirectedCarrierInfo OPTIONAL, -- Need ON + idleModeMobilityControlInfo IdleModeMobilityControlInfo OPTIONAL, -- Need OP + nonCriticalExtension RRCConnectionRelease-v890-IEs OPTIONAL +} + +RRCConnectionRelease-v890-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING (CONTAINING RRCConnectionRelease-v9e0-IEs) OPTIONAL, + nonCriticalExtension RRCConnectionRelease-v920-IEs OPTIONAL +} + +-- Late non critical extensions +RRCConnectionRelease-v9e0-IEs ::= SEQUENCE { + redirectedCarrierInfo-v9e0 RedirectedCarrierInfo-v9e0 OPTIONAL, -- Cond NoRedirect-r8 + idleModeMobilityControlInfo-v9e0 IdleModeMobilityControlInfo-v9e0 OPTIONAL, -- Cond IdleInfoEUTRA + nonCriticalExtension SEQUENCE {} OPTIONAL +} + +-- Regular non critical extensions +RRCConnectionRelease-v920-IEs ::= SEQUENCE { + cellInfoList-r9 CHOICE { + geran-r9 CellInfoListGERAN-r9, + utra-FDD-r9 CellInfoListUTRA-FDD-r9, + utra-TDD-r9 CellInfoListUTRA-TDD-r9, + ..., + utra-TDD-r10 CellInfoListUTRA-TDD-r10 + } OPTIONAL, -- Cond Redirection + nonCriticalExtension RRCConnectionRelease-v1020-IEs OPTIONAL +} + +RRCConnectionRelease-v1020-IEs ::= SEQUENCE { + extendedWaitTime-r10 INTEGER (1..1800) OPTIONAL, -- Need ON + nonCriticalExtension SEQUENCE {} OPTIONAL +} + +ReleaseCause ::= ENUMERATED {loadBalancingTAUrequired, + other, cs-FallbackHighPriority-v1020, spare1} + +RedirectedCarrierInfo ::= CHOICE { + eutra ARFCN-ValueEUTRA, + geran CarrierFreqsGERAN, + utra-FDD ARFCN-ValueUTRA, + utra-TDD ARFCN-ValueUTRA, + cdma2000-HRPD CarrierFreqCDMA2000, + cdma2000-1xRTT CarrierFreqCDMA2000, + ..., + utra-TDD-r10 CarrierFreqListUTRA-TDD-r10 +} + +RedirectedCarrierInfo-v9e0 ::= SEQUENCE { + eutra-v9e0 ARFCN-ValueEUTRA-v9e0 +} + +CarrierFreqListUTRA-TDD-r10 ::= SEQUENCE (SIZE (1..maxFreqUTRA-TDD-r10)) OF ARFCN-ValueUTRA + +IdleModeMobilityControlInfo ::= SEQUENCE { + freqPriorityListEUTRA FreqPriorityListEUTRA OPTIONAL, -- Need ON + freqPriorityListGERAN FreqsPriorityListGERAN OPTIONAL, -- Need ON + freqPriorityListUTRA-FDD FreqPriorityListUTRA-FDD OPTIONAL, -- Need ON + freqPriorityListUTRA-TDD FreqPriorityListUTRA-TDD OPTIONAL, -- Need ON + bandClassPriorityListHRPD BandClassPriorityListHRPD OPTIONAL, -- Need ON + bandClassPriorityList1XRTT BandClassPriorityList1XRTT OPTIONAL, -- Need ON + t320 ENUMERATED { + min5, min10, min20, min30, min60, min120, min180, + spare1} OPTIONAL, -- Need OR + ... +} + +IdleModeMobilityControlInfo-v9e0 ::= SEQUENCE { + freqPriorityListEUTRA-v9e0 SEQUENCE (SIZE (1..maxFreq)) OF FreqPriorityEUTRA-v9e0 +} + +FreqPriorityListEUTRA ::= SEQUENCE (SIZE (1..maxFreq)) OF FreqPriorityEUTRA + +FreqPriorityEUTRA ::= SEQUENCE { + carrierFreq ARFCN-ValueEUTRA, + cellReselectionPriority CellReselectionPriority +} + +FreqPriorityEUTRA-v9e0 ::= SEQUENCE { + carrierFreq-v9e0 ARFCN-ValueEUTRA-v9e0 OPTIONAL -- Cond EARFCN-max +} + +FreqsPriorityListGERAN ::= SEQUENCE (SIZE (1..maxGNFG)) OF FreqsPriorityGERAN + +FreqsPriorityGERAN ::= SEQUENCE { + carrierFreqs CarrierFreqsGERAN, + cellReselectionPriority CellReselectionPriority +} + +FreqPriorityListUTRA-FDD ::= SEQUENCE (SIZE (1..maxUTRA-FDD-Carrier)) OF FreqPriorityUTRA-FDD + +FreqPriorityUTRA-FDD ::= SEQUENCE { + carrierFreq ARFCN-ValueUTRA, + cellReselectionPriority CellReselectionPriority +} + +FreqPriorityListUTRA-TDD ::= SEQUENCE (SIZE (1..maxUTRA-TDD-Carrier)) OF FreqPriorityUTRA-TDD + +FreqPriorityUTRA-TDD ::= SEQUENCE { + carrierFreq ARFCN-ValueUTRA, + cellReselectionPriority CellReselectionPriority +} + +BandClassPriorityListHRPD ::= SEQUENCE (SIZE (1..maxCDMA-BandClass)) OF BandClassPriorityHRPD + +BandClassPriorityHRPD ::= SEQUENCE { + bandClass BandclassCDMA2000, + cellReselectionPriority CellReselectionPriority +} + +BandClassPriorityList1XRTT ::= SEQUENCE (SIZE (1..maxCDMA-BandClass)) OF BandClassPriority1XRTT + +BandClassPriority1XRTT ::= SEQUENCE { + bandClass BandclassCDMA2000, + cellReselectionPriority CellReselectionPriority +} + +CellInfoListGERAN-r9 ::= SEQUENCE (SIZE (1..maxCellInfoGERAN-r9)) OF CellInfoGERAN-r9 + +CellInfoGERAN-r9 ::= SEQUENCE { + physCellId-r9 PhysCellIdGERAN, + carrierFreq-r9 CarrierFreqGERAN, + systemInformation-r9 SystemInfoListGERAN +} + +CellInfoListUTRA-FDD-r9 ::= SEQUENCE (SIZE (1..maxCellInfoUTRA-r9)) OF CellInfoUTRA-FDD-r9 + +CellInfoUTRA-FDD-r9 ::= SEQUENCE { + physCellId-r9 PhysCellIdUTRA-FDD, + utra-BCCH-Container-r9 OCTET STRING +} + +CellInfoListUTRA-TDD-r9 ::= SEQUENCE (SIZE (1..maxCellInfoUTRA-r9)) OF CellInfoUTRA-TDD-r9 + +CellInfoUTRA-TDD-r9 ::= SEQUENCE { + physCellId-r9 PhysCellIdUTRA-TDD, + utra-BCCH-Container-r9 OCTET STRING +} + +CellInfoListUTRA-TDD-r10 ::= SEQUENCE (SIZE (1..maxCellInfoUTRA-r9)) OF CellInfoUTRA-TDD-r10 + +CellInfoUTRA-TDD-r10 ::= SEQUENCE { + physCellId-r10 PhysCellIdUTRA-TDD, + carrierFreq-r10 ARFCN-ValueUTRA, + utra-BCCH-Container-r10 OCTET STRING +} + + +RRCConnectionRequest ::= SEQUENCE { + criticalExtensions CHOICE { + rrcConnectionRequest-r8 RRCConnectionRequest-r8-IEs, + criticalExtensionsFuture SEQUENCE {} + } +} + +RRCConnectionRequest-r8-IEs ::= SEQUENCE { + ue-Identity InitialUE-Identity, + establishmentCause EstablishmentCause, + spare BIT STRING (SIZE (1)) +} + +InitialUE-Identity ::= CHOICE { + s-TMSI S-TMSI, + randomValue BIT STRING (SIZE (40)) +} + +EstablishmentCause ::= ENUMERATED { + emergency, highPriorityAccess, mt-Access, mo-Signalling, + mo-Data, delayTolerantAccess-v1020, spare2, spare1} + + +RRCConnectionSetup ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + c1 CHOICE { + rrcConnectionSetup-r8 RRCConnectionSetup-r8-IEs, + spare7 NULL, + spare6 NULL, spare5 NULL, spare4 NULL, + spare3 NULL, spare2 NULL, spare1 NULL + }, + criticalExtensionsFuture SEQUENCE {} + } +} + +RRCConnectionSetup-r8-IEs ::= SEQUENCE { + radioResourceConfigDedicated RadioResourceConfigDedicated, + nonCriticalExtension RRCConnectionSetup-v8a0-IEs OPTIONAL +} + +RRCConnectionSetup-v8a0-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + + +RRCConnectionSetupComplete ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + c1 CHOICE{ + rrcConnectionSetupComplete-r8 RRCConnectionSetupComplete-r8-IEs, + spare3 NULL, spare2 NULL, spare1 NULL + }, + criticalExtensionsFuture SEQUENCE {} + } +} + +RRCConnectionSetupComplete-r8-IEs ::= SEQUENCE { + selectedPLMN-Identity INTEGER (1..maxPLMN-r11), + registeredMME RegisteredMME OPTIONAL, + dedicatedInfoNAS DedicatedInfoNAS, + nonCriticalExtension RRCConnectionSetupComplete-v8a0-IEs OPTIONAL +} + +RRCConnectionSetupComplete-v8a0-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension RRCConnectionSetupComplete-v1020-IEs OPTIONAL +} + +RRCConnectionSetupComplete-v1020-IEs ::= SEQUENCE { + gummei-Type-r10 ENUMERATED {native, mapped} OPTIONAL, + rlf-InfoAvailable-r10 ENUMERATED {true} OPTIONAL, + logMeasAvailable-r10 ENUMERATED {true} OPTIONAL, + rn-SubframeConfigReq-r10 ENUMERATED {required, notRequired} OPTIONAL, + nonCriticalExtension RRCConnectionSetupComplete-v1130-IEs OPTIONAL +} + +RRCConnectionSetupComplete-v1130-IEs ::= SEQUENCE { + connEstFailInfoAvailable-r11 ENUMERATED {true} OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + +RegisteredMME ::= SEQUENCE { + plmn-Identity PLMN-Identity OPTIONAL, + mmegi BIT STRING (SIZE (16)), + mmec MMEC +} + + +SecurityModeCommand ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + c1 CHOICE{ + securityModeCommand-r8 SecurityModeCommand-r8-IEs, + spare3 NULL, spare2 NULL, spare1 NULL + }, + criticalExtensionsFuture SEQUENCE {} + } +} + +SecurityModeCommand-r8-IEs ::= SEQUENCE { + securityConfigSMC SecurityConfigSMC, + nonCriticalExtension SecurityModeCommand-v8a0-IEs OPTIONAL +} + +SecurityModeCommand-v8a0-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + +SecurityConfigSMC ::= SEQUENCE { + securityAlgorithmConfig SecurityAlgorithmConfig, + ... +} + + +SecurityModeComplete ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + securityModeComplete-r8 SecurityModeComplete-r8-IEs, + criticalExtensionsFuture SEQUENCE {} + } +} + +SecurityModeComplete-r8-IEs ::= SEQUENCE { + nonCriticalExtension SecurityModeComplete-v8a0-IEs OPTIONAL +} + +SecurityModeComplete-v8a0-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + + +SecurityModeFailure ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + securityModeFailure-r8 SecurityModeFailure-r8-IEs, + criticalExtensionsFuture SEQUENCE {} + } +} + +SecurityModeFailure-r8-IEs ::= SEQUENCE { + nonCriticalExtension SecurityModeFailure-v8a0-IEs OPTIONAL +} + +SecurityModeFailure-v8a0-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + + +SystemInformation ::= SEQUENCE { + criticalExtensions CHOICE { + systemInformation-r8 SystemInformation-r8-IEs, + criticalExtensionsFuture SEQUENCE {} + } +} +SystemInformation-r8-IEs ::= SEQUENCE { + sib-TypeAndInfo SEQUENCE (SIZE (1..maxSIB)) OF CHOICE { + sib2 SystemInformationBlockType2, + sib3 SystemInformationBlockType3, + sib4 SystemInformationBlockType4, + sib5 SystemInformationBlockType5, + sib6 SystemInformationBlockType6, + sib7 SystemInformationBlockType7, + sib8 SystemInformationBlockType8, + sib9 SystemInformationBlockType9, + sib10 SystemInformationBlockType10, + sib11 SystemInformationBlockType11, + ..., + sib12-v920 SystemInformationBlockType12-r9, + sib13-v920 SystemInformationBlockType13-r9, + sib14-v1130 SystemInformationBlockType14-r11, + sib15-v1130 SystemInformationBlockType15-r11, + sib16-v1130 SystemInformationBlockType16-r11 + }, + nonCriticalExtension SystemInformation-v8a0-IEs OPTIONAL +} + +SystemInformation-v8a0-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + + +SystemInformationBlockType1 ::= SEQUENCE { + cellAccessRelatedInfo SEQUENCE { + plmn-IdentityList PLMN-IdentityList, + trackingAreaCode TrackingAreaCode, + cellIdentity CellIdentity, + cellBarred ENUMERATED {barred, notBarred}, + intraFreqReselection ENUMERATED {allowed, notAllowed}, + csg-Indication BOOLEAN, + csg-Identity CSG-Identity OPTIONAL -- Need OR + }, + cellSelectionInfo SEQUENCE { + q-RxLevMin Q-RxLevMin, + q-RxLevMinOffset INTEGER (1..8) OPTIONAL -- Need OP + }, + p-Max P-Max OPTIONAL, -- Need OP + freqBandIndicator FreqBandIndicator, + schedulingInfoList SchedulingInfoList, + tdd-Config TDD-Config OPTIONAL, -- Cond TDD + si-WindowLength ENUMERATED { + ms1, ms2, ms5, ms10, ms15, ms20, + ms40}, + systemInfoValueTag INTEGER (0..31), + nonCriticalExtension SystemInformationBlockType1-v890-IEs OPTIONAL +} + +SystemInformationBlockType1-v890-IEs::= SEQUENCE { + lateNonCriticalExtension OCTET STRING (CONTAINING SystemInformationBlockType1-v8h0-IEs) OPTIONAL, + nonCriticalExtension SystemInformationBlockType1-v920-IEs OPTIONAL +} + +-- Late non critical extensions +SystemInformationBlockType1-v8h0-IEs ::= SEQUENCE { + multiBandInfoList MultiBandInfoList OPTIONAL, -- Need OR + nonCriticalExtension SystemInformationBlockType1-v9e0-IEs OPTIONAL +} + +SystemInformationBlockType1-v9e0-IEs ::= SEQUENCE { + freqBandIndicator-v9e0 FreqBandIndicator-v9e0 OPTIONAL, -- Cond FBI-max + multiBandInfoList-v9e0 MultiBandInfoList-v9e0 OPTIONAL, -- Cond mFBI-max + nonCriticalExtension SEQUENCE {} OPTIONAL +} + +-- Regular non critical extensions +SystemInformationBlockType1-v920-IEs ::= SEQUENCE { + ims-EmergencySupport-r9 ENUMERATED {true} OPTIONAL, -- Need OR + cellSelectionInfo-v920 CellSelectionInfo-v920 OPTIONAL, -- Cond RSRQ + nonCriticalExtension SystemInformationBlockType1-v1130-IEs OPTIONAL +} + +SystemInformationBlockType1-v1130-IEs ::= SEQUENCE { + tdd-Config-v1130 TDD-Config-v1130 OPTIONAL, -- Cond TDD-OR + cellSelectionInfo-v1130 CellSelectionInfo-v1130 OPTIONAL, -- Cond WB-RSRQ + nonCriticalExtension SEQUENCE {} OPTIONAL +} + +PLMN-IdentityList ::= SEQUENCE (SIZE (1..maxPLMN-r11)) OF PLMN-IdentityInfo + +PLMN-IdentityInfo ::= SEQUENCE { + plmn-Identity PLMN-Identity, + cellReservedForOperatorUse ENUMERATED {reserved, notReserved} +} + +SchedulingInfoList ::= SEQUENCE (SIZE (1..maxSI-Message)) OF SchedulingInfo + +SchedulingInfo ::= SEQUENCE { + si-Periodicity ENUMERATED { + rf8, rf16, rf32, rf64, rf128, rf256, rf512}, + sib-MappingInfo SIB-MappingInfo +} + +SIB-MappingInfo ::= SEQUENCE (SIZE (0..maxSIB-1)) OF SIB-Type + +SIB-Type ::= ENUMERATED { + sibType3, sibType4, sibType5, sibType6, + sibType7, sibType8, sibType9, sibType10, + sibType11, sibType12-v920, sibType13-v920, + sibType14-v1130, sibType15-v1130, + sibType16-v1130, spare2, spare1, ...} + +CellSelectionInfo-v920 ::= SEQUENCE { + q-QualMin-r9 Q-QualMin-r9, + q-QualMinOffset-r9 INTEGER (1..8) OPTIONAL -- Need OP +} + +CellSelectionInfo-v1130 ::= SEQUENCE { + q-QualMinWB-r11 Q-QualMin-r9 +} + + +UEAssistanceInformation-r11 ::= SEQUENCE { + criticalExtensions CHOICE { + c1 CHOICE { + ueAssistanceInformation-r11 UEAssistanceInformation-r11-IEs, + spare3 NULL, spare2 NULL, spare1 NULL + }, + criticalExtensionsFuture SEQUENCE {} + } +} + +UEAssistanceInformation-r11-IEs ::= SEQUENCE { + powerPrefIndication-r11 ENUMERATED {normal, lowPowerConsumption} OPTIONAL, + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + + +UECapabilityEnquiry ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + c1 CHOICE { + ueCapabilityEnquiry-r8 UECapabilityEnquiry-r8-IEs, + spare3 NULL, spare2 NULL, spare1 NULL + }, + criticalExtensionsFuture SEQUENCE {} + } +} + +UECapabilityEnquiry-r8-IEs ::= SEQUENCE { + ue-CapabilityRequest UE-CapabilityRequest, + nonCriticalExtension UECapabilityEnquiry-v8a0-IEs OPTIONAL +} + +UECapabilityEnquiry-v8a0-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + +UE-CapabilityRequest ::= SEQUENCE (SIZE (1..maxRAT-Capabilities)) OF RAT-Type + + +UECapabilityInformation ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + c1 CHOICE{ + ueCapabilityInformation-r8 UECapabilityInformation-r8-IEs, + spare7 NULL, + spare6 NULL, spare5 NULL, spare4 NULL, + spare3 NULL, spare2 NULL, spare1 NULL + }, + criticalExtensionsFuture SEQUENCE {} + } +} + +UECapabilityInformation-r8-IEs ::= SEQUENCE { + ue-CapabilityRAT-ContainerList UE-CapabilityRAT-ContainerList, + nonCriticalExtension UECapabilityInformation-v8a0-IEs OPTIONAL +} + +UECapabilityInformation-v8a0-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + + +UEInformationRequest-r9 ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + c1 CHOICE { + ueInformationRequest-r9 UEInformationRequest-r9-IEs, + spare3 NULL, spare2 NULL, spare1 NULL + }, + criticalExtensionsFuture SEQUENCE {} + } +} + +UEInformationRequest-r9-IEs ::= SEQUENCE { + rach-ReportReq-r9 BOOLEAN, + rlf-ReportReq-r9 BOOLEAN, + nonCriticalExtension UEInformationRequest-v930-IEs OPTIONAL +} + +UEInformationRequest-v930-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension UEInformationRequest-v1020-IEs OPTIONAL +} + +UEInformationRequest-v1020-IEs ::= SEQUENCE { + logMeasReportReq-r10 ENUMERATED {true} OPTIONAL, -- Need ON + nonCriticalExtension UEInformationRequest-v1130-IEs OPTIONAL +} + +UEInformationRequest-v1130-IEs ::= SEQUENCE { + connEstFailReportReq-r11 ENUMERATED {true} OPTIONAL, -- Need ON + nonCriticalExtension SEQUENCE {} OPTIONAL +} + + +UEInformationResponse-r9 ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + c1 CHOICE { + ueInformationResponse-r9 UEInformationResponse-r9-IEs, + spare3 NULL, spare2 NULL, spare1 NULL + }, + criticalExtensionsFuture SEQUENCE {} + } +} + +UEInformationResponse-r9-IEs ::= SEQUENCE { + rach-Report-r9 SEQUENCE { + numberOfPreamblesSent-r9 NumberOfPreamblesSent-r11, + contentionDetected-r9 BOOLEAN + } OPTIONAL, + rlf-Report-r9 RLF-Report-r9 OPTIONAL, + nonCriticalExtension UEInformationResponse-v930-IEs OPTIONAL +} + +-- Late non critical extensions +UEInformationResponse-v9e0-IEs ::= SEQUENCE { + rlf-Report-v9e0 RLF-Report-v9e0 OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + +-- Regular non critical extensions +UEInformationResponse-v930-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING (CONTAINING UEInformationResponse-v9e0-IEs) OPTIONAL, + nonCriticalExtension UEInformationResponse-v1020-IEs OPTIONAL +} + +UEInformationResponse-v1020-IEs ::= SEQUENCE { + logMeasReport-r10 LogMeasReport-r10 OPTIONAL, + nonCriticalExtension UEInformationResponse-v1130-IEs OPTIONAL +} + +UEInformationResponse-v1130-IEs ::= SEQUENCE { + connEstFailReport-r11 ConnEstFailReport-r11 OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + +RLF-Report-r9 ::= SEQUENCE { + measResultLastServCell-r9 SEQUENCE { + rsrpResult-r9 RSRP-Range, + rsrqResult-r9 RSRQ-Range OPTIONAL + }, + measResultNeighCells-r9 SEQUENCE { + measResultListEUTRA-r9 MeasResultList2EUTRA-r9 OPTIONAL, + measResultListUTRA-r9 MeasResultList2UTRA-r9 OPTIONAL, + measResultListGERAN-r9 MeasResultListGERAN OPTIONAL, + measResultsCDMA2000-r9 MeasResultList2CDMA2000-r9 OPTIONAL + } OPTIONAL, + ..., + [[ locationInfo-r10 LocationInfo-r10 OPTIONAL, + failedPCellId-r10 CHOICE { + cellGlobalId-r10 CellGlobalIdEUTRA, + pci-arfcn-r10 SEQUENCE { + physCellId-r10 PhysCellId, + carrierFreq-r10 ARFCN-ValueEUTRA + } + } OPTIONAL, + reestablishmentCellId-r10 CellGlobalIdEUTRA OPTIONAL, + timeConnFailure-r10 INTEGER (0..1023) OPTIONAL, + connectionFailureType-r10 ENUMERATED {rlf, hof} OPTIONAL, + previousPCellId-r10 CellGlobalIdEUTRA OPTIONAL + ]], + [[ failedPCellId-v1090 SEQUENCE { + carrierFreq-v1090 ARFCN-ValueEUTRA-v9e0 + } OPTIONAL + ]], + [[ basicFields-r11 SEQUENCE { + c-RNTI-r11 C-RNTI, + rlf-Cause-r11 ENUMERATED { + t310-Expiry, randomAccessProblem, + rlc-MaxNumRetx, spare1}, + timeSinceFailure-r11 TimeSinceFailure-r11 + } OPTIONAL, + previousUTRA-CellId-r11 SEQUENCE { + carrierFreq-r11 ARFCN-ValueUTRA, + physCellId-r11 CHOICE { + fdd-r11 PhysCellIdUTRA-FDD, + tdd-r11 PhysCellIdUTRA-TDD + }, + cellGlobalId-r11 CellGlobalIdUTRA OPTIONAL + } OPTIONAL, + selectedUTRA-CellId-r11 SEQUENCE { + carrierFreq-r11 ARFCN-ValueUTRA, + physCellId-r11 CHOICE { + fdd-r11 PhysCellIdUTRA-FDD, + tdd-r11 PhysCellIdUTRA-TDD + } + } OPTIONAL + ]] +} + +RLF-Report-v9e0 ::= SEQUENCE { + measResultListEUTRA-v9e0 MeasResultList2EUTRA-v9e0 +} + +MeasResultList2EUTRA-r9 ::= SEQUENCE (SIZE (1..maxFreq)) OF MeasResult2EUTRA-r9 + +MeasResultList2EUTRA-v9e0 ::= SEQUENCE (SIZE (1..maxFreq)) OF MeasResult2EUTRA-v9e0 + +MeasResult2EUTRA-r9 ::= SEQUENCE { + carrierFreq-r9 ARFCN-ValueEUTRA, + measResultList-r9 MeasResultListEUTRA +} + +MeasResult2EUTRA-v9e0 ::= SEQUENCE { + carrierFreq-v9e0 ARFCN-ValueEUTRA-v9e0 OPTIONAL +} + +MeasResultList2UTRA-r9 ::= SEQUENCE (SIZE (1..maxFreq)) OF MeasResult2UTRA-r9 + +MeasResult2UTRA-r9 ::= SEQUENCE { + carrierFreq-r9 ARFCN-ValueUTRA, + measResultList-r9 MeasResultListUTRA +} + +MeasResultList2CDMA2000-r9 ::= SEQUENCE (SIZE (1..maxFreq)) OF MeasResult2CDMA2000-r9 + +MeasResult2CDMA2000-r9 ::= SEQUENCE { + carrierFreq-r9 CarrierFreqCDMA2000, + measResultList-r9 MeasResultsCDMA2000 +} + +LogMeasReport-r10 ::= SEQUENCE { + absoluteTimeStamp-r10 AbsoluteTimeInfo-r10, + traceReference-r10 TraceReference-r10, + traceRecordingSessionRef-r10 OCTET STRING (SIZE (2)), + tce-Id-r10 OCTET STRING (SIZE (1)), + logMeasInfoList-r10 LogMeasInfoList-r10, + logMeasAvailable-r10 ENUMERATED {true} OPTIONAL, + ... +} + +LogMeasInfoList-r10 ::= SEQUENCE (SIZE (1..maxLogMeasReport-r10)) OF LogMeasInfo-r10 + +LogMeasInfo-r10 ::= SEQUENCE { + locationInfo-r10 LocationInfo-r10 OPTIONAL, + relativeTimeStamp-r10 INTEGER (0..7200), + servCellIdentity-r10 CellGlobalIdEUTRA, + measResultServCell-r10 SEQUENCE { + rsrpResult-r10 RSRP-Range, + rsrqResult-r10 RSRQ-Range + }, + measResultNeighCells-r10 SEQUENCE { + measResultListEUTRA-r10 MeasResultList2EUTRA-r9 OPTIONAL, + measResultListUTRA-r10 MeasResultList2UTRA-r9 OPTIONAL, + measResultListGERAN-r10 MeasResultList2GERAN-r10 OPTIONAL, + measResultListCDMA2000-r10 MeasResultList2CDMA2000-r9 OPTIONAL + } OPTIONAL, + ..., + [[ measResultListEUTRA-v1090 MeasResultList2EUTRA-v9e0 OPTIONAL + ]] +} + +MeasResultList2GERAN-r10 ::= SEQUENCE (SIZE (1..maxCellListGERAN)) OF MeasResultListGERAN + +ConnEstFailReport-r11 ::= SEQUENCE { + failedCellId-r11 CellGlobalIdEUTRA, + locationInfo-r11 LocationInfo-r10 OPTIONAL, + measResultFailedCell-r11 SEQUENCE { + rsrpResult-r11 RSRP-Range, + rsrqResult-r11 RSRQ-Range OPTIONAL + }, + measResultNeighCells-r11 SEQUENCE { + measResultListEUTRA-r11 MeasResultList2EUTRA-r9 OPTIONAL, + measResultListUTRA-r11 MeasResultList2UTRA-r9 OPTIONAL, + measResultListGERAN-r11 MeasResultListGERAN OPTIONAL, + measResultsCDMA2000-r11 MeasResultList2CDMA2000-r9 OPTIONAL + } OPTIONAL, + numberOfPreamblesSent-r11 NumberOfPreamblesSent-r11, + contentionDetected-r11 BOOLEAN, + maxTxPowerReached-r11 BOOLEAN, + timeSinceFailure-r11 TimeSinceFailure-r11, + measResultListEUTRA-v1130 MeasResultList2EUTRA-v9e0 OPTIONAL, + ... +} + +NumberOfPreamblesSent-r11::= INTEGER (1..200) + +TimeSinceFailure-r11 ::= INTEGER (0..172800) + + +ULHandoverPreparationTransfer ::= SEQUENCE { + criticalExtensions CHOICE { + c1 CHOICE { + ulHandoverPreparationTransfer-r8 ULHandoverPreparationTransfer-r8-IEs, + spare3 NULL, spare2 NULL, spare1 NULL + }, + criticalExtensionsFuture SEQUENCE {} + } +} + +ULHandoverPreparationTransfer-r8-IEs ::= SEQUENCE { + cdma2000-Type CDMA2000-Type, + meid BIT STRING (SIZE (56)) OPTIONAL, + dedicatedInfo DedicatedInfoCDMA2000, + nonCriticalExtension ULHandoverPreparationTransfer-v8a0-IEs OPTIONAL +} + +ULHandoverPreparationTransfer-v8a0-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + + +ULInformationTransfer ::= SEQUENCE { + criticalExtensions CHOICE { + c1 CHOICE { + ulInformationTransfer-r8 ULInformationTransfer-r8-IEs, + spare3 NULL, spare2 NULL, spare1 NULL + }, + criticalExtensionsFuture SEQUENCE {} + } +} + +ULInformationTransfer-r8-IEs ::= SEQUENCE { + dedicatedInfoType CHOICE { + dedicatedInfoNAS DedicatedInfoNAS, + dedicatedInfoCDMA2000-1XRTT DedicatedInfoCDMA2000, + dedicatedInfoCDMA2000-HRPD DedicatedInfoCDMA2000 + }, + nonCriticalExtension ULInformationTransfer-v8a0-IEs OPTIONAL +} + +ULInformationTransfer-v8a0-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + + +SystemInformationBlockType2 ::= SEQUENCE { + ac-BarringInfo SEQUENCE { + ac-BarringForEmergency BOOLEAN, + ac-BarringForMO-Signalling AC-BarringConfig OPTIONAL, -- Need OP + ac-BarringForMO-Data AC-BarringConfig OPTIONAL -- Need OP + } OPTIONAL, -- Need OP + radioResourceConfigCommon RadioResourceConfigCommonSIB, + ue-TimersAndConstants UE-TimersAndConstants, + freqInfo SEQUENCE { + ul-CarrierFreq ARFCN-ValueEUTRA OPTIONAL, -- Need OP + ul-Bandwidth ENUMERATED {n6, n15, n25, n50, n75, n100} + OPTIONAL, -- Need OP + additionalSpectrumEmission AdditionalSpectrumEmission + }, + mbsfn-SubframeConfigList MBSFN-SubframeConfigList OPTIONAL, -- Need OR + timeAlignmentTimerCommon TimeAlignmentTimer, + ..., + lateNonCriticalExtension OCTET STRING (CONTAINING SystemInformationBlockType2-v8h0-IEs) OPTIONAL, + [[ ssac-BarringForMMTEL-Voice-r9 AC-BarringConfig OPTIONAL, -- Need OP + ssac-BarringForMMTEL-Video-r9 AC-BarringConfig OPTIONAL -- Need OP + ]], + [[ ac-BarringForCSFB-r10 AC-BarringConfig OPTIONAL -- Need OP + ]] +} + +SystemInformationBlockType2-v8h0-IEs ::= SEQUENCE { + multiBandInfoList SEQUENCE (SIZE (1..maxMultiBands)) OF AdditionalSpectrumEmission OPTIONAL, -- Need OR + nonCriticalExtension SystemInformationBlockType2-v9e0-IEs OPTIONAL +} + +SystemInformationBlockType2-v9e0-IEs ::= SEQUENCE { + ul-CarrierFreq-v9e0 ARFCN-ValueEUTRA-v9e0 OPTIONAL, -- Cond ul-FreqMax + nonCriticalExtension SEQUENCE {} OPTIONAL +} + +AC-BarringConfig ::= SEQUENCE { + ac-BarringFactor ENUMERATED { + p00, p05, p10, p15, p20, p25, p30, p40, + p50, p60, p70, p75, p80, p85, p90, p95}, + ac-BarringTime ENUMERATED {s4, s8, s16, s32, s64, s128, s256, s512}, + ac-BarringForSpecialAC BIT STRING (SIZE(5)) +} + +MBSFN-SubframeConfigList ::= SEQUENCE (SIZE (1..maxMBSFN-Allocations)) OF MBSFN-SubframeConfig + + +SystemInformationBlockType3 ::= SEQUENCE { + cellReselectionInfoCommon SEQUENCE { + q-Hyst ENUMERATED { + dB0, dB1, dB2, dB3, dB4, dB5, dB6, dB8, dB10, + dB12, dB14, dB16, dB18, dB20, dB22, dB24}, + speedStateReselectionPars SEQUENCE { + mobilityStateParameters MobilityStateParameters, + q-HystSF SEQUENCE { + sf-Medium ENUMERATED { + dB-6, dB-4, dB-2, dB0}, + sf-High ENUMERATED { + dB-6, dB-4, dB-2, dB0} + } + } OPTIONAL -- Need OP + }, + cellReselectionServingFreqInfo SEQUENCE { + s-NonIntraSearch ReselectionThreshold OPTIONAL, -- Need OP + threshServingLow ReselectionThreshold, + cellReselectionPriority CellReselectionPriority + }, + intraFreqCellReselectionInfo SEQUENCE { + q-RxLevMin Q-RxLevMin, + p-Max P-Max OPTIONAL, -- Need OP + s-IntraSearch ReselectionThreshold OPTIONAL, -- Need OP + allowedMeasBandwidth AllowedMeasBandwidth OPTIONAL, -- Need OP + presenceAntennaPort1 PresenceAntennaPort1, + neighCellConfig NeighCellConfig, + t-ReselectionEUTRA T-Reselection, + t-ReselectionEUTRA-SF SpeedStateScaleFactors OPTIONAL -- Need OP + }, + ..., + lateNonCriticalExtension OCTET STRING OPTIONAL, + [[ s-IntraSearch-v920 SEQUENCE { + s-IntraSearchP-r9 ReselectionThreshold, + s-IntraSearchQ-r9 ReselectionThresholdQ-r9 + } OPTIONAL, -- Need OP + s-NonIntraSearch-v920 SEQUENCE { + s-NonIntraSearchP-r9 ReselectionThreshold, + s-NonIntraSearchQ-r9 ReselectionThresholdQ-r9 + } OPTIONAL, -- Need OP + q-QualMin-r9 Q-QualMin-r9 OPTIONAL, -- Need OP + threshServingLowQ-r9 ReselectionThresholdQ-r9 OPTIONAL -- Need OP + ]], + [[ q-QualMinWB-r11 Q-QualMin-r9 OPTIONAL -- Cond WB-RSRQ + ]] +} + + +SystemInformationBlockType4 ::= SEQUENCE { + intraFreqNeighCellList IntraFreqNeighCellList OPTIONAL, -- Need OR + intraFreqBlackCellList IntraFreqBlackCellList OPTIONAL, -- Need OR + csg-PhysCellIdRange PhysCellIdRange OPTIONAL, -- Cond CSG + ..., + lateNonCriticalExtension OCTET STRING OPTIONAL +} + +IntraFreqNeighCellList ::= SEQUENCE (SIZE (1..maxCellIntra)) OF IntraFreqNeighCellInfo + +IntraFreqNeighCellInfo ::= SEQUENCE { + physCellId PhysCellId, + q-OffsetCell Q-OffsetRange, + ... +} + +IntraFreqBlackCellList ::= SEQUENCE (SIZE (1..maxCellBlack)) OF PhysCellIdRange + + +SystemInformationBlockType5 ::= SEQUENCE { + interFreqCarrierFreqList InterFreqCarrierFreqList, + ..., + lateNonCriticalExtension OCTET STRING (CONTAINING SystemInformationBlockType5-v8h0-IEs) OPTIONAL +} + +SystemInformationBlockType5-v8h0-IEs ::= SEQUENCE { + interFreqCarrierFreqList-v8h0 SEQUENCE (SIZE (1..maxFreq)) OF InterFreqCarrierFreqInfo-v8h0 OPTIONAL, -- Need OP + nonCriticalExtension SystemInformationBlockType5-v9e0-IEs OPTIONAL +} + +SystemInformationBlockType5-v9e0-IEs ::= SEQUENCE { + interFreqCarrierFreqList-v9e0 SEQUENCE (SIZE (1..maxFreq)) OF InterFreqCarrierFreqInfo-v9e0 OPTIONAL, -- Need OR + nonCriticalExtension SEQUENCE {} OPTIONAL +} + +InterFreqCarrierFreqList ::= SEQUENCE (SIZE (1..maxFreq)) OF InterFreqCarrierFreqInfo + +InterFreqCarrierFreqInfo ::= SEQUENCE { + dl-CarrierFreq ARFCN-ValueEUTRA, + q-RxLevMin Q-RxLevMin, + p-Max P-Max OPTIONAL, -- Need OP + t-ReselectionEUTRA T-Reselection, + t-ReselectionEUTRA-SF SpeedStateScaleFactors OPTIONAL, -- Need OP + threshX-High ReselectionThreshold, + threshX-Low ReselectionThreshold, + allowedMeasBandwidth AllowedMeasBandwidth, + presenceAntennaPort1 PresenceAntennaPort1, + cellReselectionPriority CellReselectionPriority OPTIONAL, -- Need OP + neighCellConfig NeighCellConfig, + q-OffsetFreq Q-OffsetRange DEFAULT dB0, + interFreqNeighCellList InterFreqNeighCellList OPTIONAL, -- Need OR + interFreqBlackCellList InterFreqBlackCellList OPTIONAL, -- Need OR + ..., + [[ q-QualMin-r9 Q-QualMin-r9 OPTIONAL, -- Need OP + threshX-Q-r9 SEQUENCE { + threshX-HighQ-r9 ReselectionThresholdQ-r9, + threshX-LowQ-r9 ReselectionThresholdQ-r9 + } OPTIONAL -- Cond RSRQ + ]], + [[ q-QualMinWB-r11 Q-QualMin-r9 OPTIONAL -- Cond WB-RSRQ + ]] +} + +InterFreqCarrierFreqInfo-v8h0 ::= SEQUENCE { + multiBandInfoList MultiBandInfoList OPTIONAL -- Need OR +} + +InterFreqCarrierFreqInfo-v9e0 ::= SEQUENCE { + dl-CarrierFreq-v9e0 ARFCN-ValueEUTRA-v9e0 OPTIONAL, -- Cond dl-FreqMax + multiBandInfoList-v9e0 MultiBandInfoList-v9e0 OPTIONAL -- Need OR +} + +InterFreqNeighCellList ::= SEQUENCE (SIZE (1..maxCellInter)) OF InterFreqNeighCellInfo + +InterFreqNeighCellInfo ::= SEQUENCE { + physCellId PhysCellId, + q-OffsetCell Q-OffsetRange +} + +InterFreqBlackCellList ::= SEQUENCE (SIZE (1..maxCellBlack)) OF PhysCellIdRange + + +SystemInformationBlockType6 ::= SEQUENCE { + carrierFreqListUTRA-FDD CarrierFreqListUTRA-FDD OPTIONAL, -- Need OR + carrierFreqListUTRA-TDD CarrierFreqListUTRA-TDD OPTIONAL, -- Need OR + t-ReselectionUTRA T-Reselection, + t-ReselectionUTRA-SF SpeedStateScaleFactors OPTIONAL, -- Need OP + ..., + lateNonCriticalExtension OCTET STRING (CONTAINING SystemInformationBlockType6-v8h0-IEs) OPTIONAL +} + +SystemInformationBlockType6-v8h0-IEs ::= SEQUENCE { + carrierFreqListUTRA-FDD-v8h0 SEQUENCE (SIZE (1..maxUTRA-FDD-Carrier)) OF CarrierFreqInfoUTRA-FDD-v8h0 OPTIONAL, -- Cond UTRA-FDD + nonCriticalExtension SEQUENCE {} OPTIONAL +} + +CarrierFreqListUTRA-FDD ::= SEQUENCE (SIZE (1..maxUTRA-FDD-Carrier)) OF CarrierFreqUTRA-FDD + +CarrierFreqUTRA-FDD ::= SEQUENCE { + carrierFreq ARFCN-ValueUTRA, + cellReselectionPriority CellReselectionPriority OPTIONAL, -- Need OP + threshX-High ReselectionThreshold, + threshX-Low ReselectionThreshold, + q-RxLevMin INTEGER (-60..-13), + p-MaxUTRA INTEGER (-50..33), + q-QualMin INTEGER (-24..0), + ..., + [[ threshX-Q-r9 SEQUENCE { + threshX-HighQ-r9 ReselectionThresholdQ-r9, + threshX-LowQ-r9 ReselectionThresholdQ-r9 + } OPTIONAL -- Cond RSRQ + ]] +} + +CarrierFreqInfoUTRA-FDD-v8h0 ::= SEQUENCE { + multiBandInfoList SEQUENCE (SIZE (1..maxMultiBands)) OF FreqBandIndicator-UTRA-FDD OPTIONAL -- Need OR +} + +CarrierFreqListUTRA-TDD ::= SEQUENCE (SIZE (1..maxUTRA-TDD-Carrier)) OF CarrierFreqUTRA-TDD + +CarrierFreqUTRA-TDD ::= SEQUENCE { + carrierFreq ARFCN-ValueUTRA, + cellReselectionPriority CellReselectionPriority OPTIONAL, -- Need OP + threshX-High ReselectionThreshold, + threshX-Low ReselectionThreshold, + q-RxLevMin INTEGER (-60..-13), + p-MaxUTRA INTEGER (-50..33), + ... +} + +FreqBandIndicator-UTRA-FDD ::= INTEGER (1..86) + + +SystemInformationBlockType7 ::= SEQUENCE { + t-ReselectionGERAN T-Reselection, + t-ReselectionGERAN-SF SpeedStateScaleFactors OPTIONAL, -- Need OR + carrierFreqsInfoList CarrierFreqsInfoListGERAN OPTIONAL, -- Need OR + ..., + lateNonCriticalExtension OCTET STRING OPTIONAL +} + +CarrierFreqsInfoListGERAN ::= SEQUENCE (SIZE (1..maxGNFG)) OF CarrierFreqsInfoGERAN + +CarrierFreqsInfoGERAN ::= SEQUENCE { + carrierFreqs CarrierFreqsGERAN, + commonInfo SEQUENCE { + cellReselectionPriority CellReselectionPriority OPTIONAL, -- Need OP + ncc-Permitted BIT STRING (SIZE (8)), + q-RxLevMin INTEGER (0..45), + p-MaxGERAN INTEGER (0..39) OPTIONAL, -- Need OP + threshX-High ReselectionThreshold, + threshX-Low ReselectionThreshold + }, + ... +} + + +SystemInformationBlockType8 ::= SEQUENCE { + systemTimeInfo SystemTimeInfoCDMA2000 OPTIONAL, -- Need OR + searchWindowSize INTEGER (0..15) OPTIONAL, -- Need OR + parametersHRPD SEQUENCE { + preRegistrationInfoHRPD PreRegistrationInfoHRPD, + cellReselectionParametersHRPD CellReselectionParametersCDMA2000 OPTIONAL -- Need OR + } OPTIONAL, -- Need OR + parameters1XRTT SEQUENCE { + csfb-RegistrationParam1XRTT CSFB-RegistrationParam1XRTT OPTIONAL, -- Need OP + longCodeState1XRTT BIT STRING (SIZE (42)) OPTIONAL, -- Need OR + cellReselectionParameters1XRTT CellReselectionParametersCDMA2000 OPTIONAL -- Need OR + } OPTIONAL, -- Need OR + ..., + lateNonCriticalExtension OCTET STRING OPTIONAL, + [[ csfb-SupportForDualRxUEs-r9 BOOLEAN OPTIONAL, -- Need OR + cellReselectionParametersHRPD-v920 CellReselectionParametersCDMA2000-v920 OPTIONAL, -- Cond NCL-HRPD + cellReselectionParameters1XRTT-v920 CellReselectionParametersCDMA2000-v920 OPTIONAL, -- Cond NCL-1XRTT + csfb-RegistrationParam1XRTT-v920 CSFB-RegistrationParam1XRTT-v920 OPTIONAL, -- Cond REG-1XRTT + ac-BarringConfig1XRTT-r9 AC-BarringConfig1XRTT-r9 OPTIONAL -- Cond REG-1XRTT + ]], + [[ csfb-DualRxTxSupport-r10 ENUMERATED {true} OPTIONAL -- Cond REG-1XRTT + ]], + [[ sib8-PerPLMN-List-r11 SIB8-PerPLMN-List-r11 OPTIONAL -- Need OR + ]] +} + +CellReselectionParametersCDMA2000 ::= SEQUENCE { + bandClassList BandClassListCDMA2000, + neighCellList NeighCellListCDMA2000, + t-ReselectionCDMA2000 T-Reselection, + t-ReselectionCDMA2000-SF SpeedStateScaleFactors OPTIONAL -- Need OP +} + +CellReselectionParametersCDMA2000-r11 ::= SEQUENCE { + bandClassList BandClassListCDMA2000, + neighCellList-r11 SEQUENCE (SIZE (1..16)) OF NeighCellCDMA2000-r11, + t-ReselectionCDMA2000 T-Reselection, + t-ReselectionCDMA2000-SF SpeedStateScaleFactors OPTIONAL -- Need OP +} + +CellReselectionParametersCDMA2000-v920 ::= SEQUENCE { + neighCellList-v920 NeighCellListCDMA2000-v920 +} + +NeighCellListCDMA2000 ::= SEQUENCE (SIZE (1..16)) OF NeighCellCDMA2000 + +NeighCellCDMA2000 ::= SEQUENCE { + bandClass BandclassCDMA2000, + neighCellsPerFreqList NeighCellsPerBandclassListCDMA2000 +} + +NeighCellCDMA2000-r11 ::= SEQUENCE { + bandClass BandclassCDMA2000, + neighFreqInfoList-r11 SEQUENCE (SIZE (1..16)) OF NeighCellsPerBandclassCDMA2000-r11 +} + +NeighCellsPerBandclassListCDMA2000 ::= SEQUENCE (SIZE (1..16)) OF NeighCellsPerBandclassCDMA2000 + +NeighCellsPerBandclassCDMA2000 ::= SEQUENCE { + arfcn ARFCN-ValueCDMA2000, + physCellIdList PhysCellIdListCDMA2000 +} + +NeighCellsPerBandclassCDMA2000-r11 ::= SEQUENCE { + arfcn ARFCN-ValueCDMA2000, + physCellIdList-r11 SEQUENCE (SIZE (1..40)) OF PhysCellIdCDMA2000 +} + +NeighCellListCDMA2000-v920 ::= SEQUENCE (SIZE (1..16)) OF NeighCellCDMA2000-v920 + +NeighCellCDMA2000-v920 ::= SEQUENCE { + neighCellsPerFreqList-v920 NeighCellsPerBandclassListCDMA2000-v920 +} + +NeighCellsPerBandclassListCDMA2000-v920 ::= SEQUENCE (SIZE (1..16)) OF NeighCellsPerBandclassCDMA2000-v920 + +NeighCellsPerBandclassCDMA2000-v920 ::= SEQUENCE { + physCellIdList-v920 PhysCellIdListCDMA2000-v920 +} + +PhysCellIdListCDMA2000 ::= SEQUENCE (SIZE (1..16)) OF PhysCellIdCDMA2000 + +PhysCellIdListCDMA2000-v920 ::= SEQUENCE (SIZE (0..24)) OF PhysCellIdCDMA2000 + +BandClassListCDMA2000 ::= SEQUENCE (SIZE (1..maxCDMA-BandClass)) OF BandClassInfoCDMA2000 + +BandClassInfoCDMA2000 ::= SEQUENCE { + bandClass BandclassCDMA2000, + cellReselectionPriority CellReselectionPriority OPTIONAL, -- Need OP + threshX-High INTEGER (0..63), + threshX-Low INTEGER (0..63), + ... +} + +AC-BarringConfig1XRTT-r9 ::= SEQUENCE { + ac-Barring0to9-r9 INTEGER (0..63), + ac-Barring10-r9 INTEGER (0..7), + ac-Barring11-r9 INTEGER (0..7), + ac-Barring12-r9 INTEGER (0..7), + ac-Barring13-r9 INTEGER (0..7), + ac-Barring14-r9 INTEGER (0..7), + ac-Barring15-r9 INTEGER (0..7), + ac-BarringMsg-r9 INTEGER (0..7), + ac-BarringReg-r9 INTEGER (0..7), + ac-BarringEmg-r9 INTEGER (0..7) +} + +SIB8-PerPLMN-List-r11 ::= SEQUENCE (SIZE (1..maxPLMN-r11)) OF SIB8-PerPLMN-r11 + +SIB8-PerPLMN-r11 ::= SEQUENCE { + plmn-Identity-r11 INTEGER (1..maxPLMN-r11), + parametersCDMA2000-r11 CHOICE { + explicitValue ParametersCDMA2000-r11, + defaultValue NULL + } +} + +ParametersCDMA2000-r11 ::= SEQUENCE { + systemTimeInfo-r11 CHOICE { + explicitValue SystemTimeInfoCDMA2000, + defaultValue NULL + } OPTIONAL, -- Need OR + searchWindowSize-r11 INTEGER (0..15), + parametersHRPD-r11 SEQUENCE { + preRegistrationInfoHRPD-r11 PreRegistrationInfoHRPD, + cellReselectionParametersHRPD-r11 CellReselectionParametersCDMA2000-r11 OPTIONAL -- Need OR + } OPTIONAL, -- Need OR + parameters1XRTT-r11 SEQUENCE { + csfb-RegistrationParam1XRTT-r11 CSFB-RegistrationParam1XRTT OPTIONAL, -- Need OP + csfb-RegistrationParam1XRTT-Ext-r11 CSFB-RegistrationParam1XRTT-v920 OPTIONAL, -- Cond REG-1XRTT-PerPLMN + longCodeState1XRTT-r11 BIT STRING (SIZE (42)) OPTIONAL, -- Cond PerPLMN-LC + cellReselectionParameters1XRTT-r11 CellReselectionParametersCDMA2000-r11 OPTIONAL, -- Need OR + ac-BarringConfig1XRTT-r11 AC-BarringConfig1XRTT-r9 OPTIONAL, -- Cond REG-1XRTT-PerPLMN + csfb-SupportForDualRxUEs-r11 BOOLEAN OPTIONAL, -- Need OR + csfb-DualRxTxSupport-r11 ENUMERATED {true} OPTIONAL -- Cond REG-1XRTT-PerPLMN + } OPTIONAL, -- Need OR + ... +} + + +SystemInformationBlockType9 ::= SEQUENCE { + hnb-Name OCTET STRING (SIZE(1..48)) OPTIONAL, -- Need OR + ..., + lateNonCriticalExtension OCTET STRING OPTIONAL +} + + +SystemInformationBlockType10 ::= SEQUENCE { + messageIdentifier BIT STRING (SIZE (16)), + serialNumber BIT STRING (SIZE (16)), + warningType OCTET STRING (SIZE (2)), + dummy OCTET STRING (SIZE (50)) OPTIONAL, -- Need OP + ..., + lateNonCriticalExtension OCTET STRING OPTIONAL +} + + +SystemInformationBlockType11 ::= SEQUENCE { + messageIdentifier BIT STRING (SIZE (16)), + serialNumber BIT STRING (SIZE (16)), + warningMessageSegmentType ENUMERATED {notLastSegment, lastSegment}, + warningMessageSegmentNumber INTEGER (0..63), + warningMessageSegment OCTET STRING, + dataCodingScheme OCTET STRING (SIZE (1)) OPTIONAL, -- Cond Segment1 + ..., + lateNonCriticalExtension OCTET STRING OPTIONAL +} + + +SystemInformationBlockType12-r9 ::= SEQUENCE { + messageIdentifier-r9 BIT STRING (SIZE (16)), + serialNumber-r9 BIT STRING (SIZE (16)), + warningMessageSegmentType-r9 ENUMERATED {notLastSegment, lastSegment}, + warningMessageSegmentNumber-r9 INTEGER (0..63), + warningMessageSegment-r9 OCTET STRING, + dataCodingScheme-r9 OCTET STRING (SIZE (1)) OPTIONAL, -- Cond Segment1 + lateNonCriticalExtension OCTET STRING OPTIONAL, + ... +} + + +SystemInformationBlockType13-r9 ::= SEQUENCE { + mbsfn-AreaInfoList-r9 MBSFN-AreaInfoList-r9, + notificationConfig-r9 MBMS-NotificationConfig-r9, + lateNonCriticalExtension OCTET STRING OPTIONAL, + ... +} + + +SystemInformationBlockType14-r11 ::= SEQUENCE { + eab-Param-r11 CHOICE { + eab-Common-r11 EAB-Config-r11, + eab-PerPLMN-List-r11 SEQUENCE (SIZE (1..maxPLMN-r11)) OF EAB-ConfigPLMN-r11 + } OPTIONAL, -- Need OR + lateNonCriticalExtension OCTET STRING OPTIONAL, + ... +} + +EAB-ConfigPLMN-r11 ::= SEQUENCE { + eab-Config-r11 EAB-Config-r11 OPTIONAL -- Need OR +} + +EAB-Config-r11 ::= SEQUENCE { + eab-Category-r11 ENUMERATED {a, b, c}, + eab-BarringBitmap-r11 BIT STRING (SIZE (10)) +} + + +SystemInformationBlockType15-r11 ::= SEQUENCE { + mbms-SAI-IntraFreq-r11 MBMS-SAI-List-r11 OPTIONAL, -- Need OR + mbms-SAI-InterFreqList-r11 MBMS-SAI-InterFreqList-r11 OPTIONAL, -- Need OR + lateNonCriticalExtension OCTET STRING OPTIONAL, + ..., + [[ mbms-SAI-InterFreqList-v1140 MBMS-SAI-InterFreqList-v1140 OPTIONAL -- Cond InterFreq + ]] +} + +MBMS-SAI-List-r11 ::= SEQUENCE (SIZE (1..maxSAI-MBMS-r11)) OF MBMS-SAI-r11 + +MBMS-SAI-r11 ::= INTEGER (0..65535) + +MBMS-SAI-InterFreqList-r11 ::= SEQUENCE (SIZE (1..maxFreq)) OF MBMS-SAI-InterFreq-r11 + +MBMS-SAI-InterFreqList-v1140 ::= SEQUENCE (SIZE (1..maxFreq)) OF MBMS-SAI-InterFreq-v1140 + +MBMS-SAI-InterFreq-r11 ::= SEQUENCE { + dl-CarrierFreq-r11 ARFCN-ValueEUTRA-r9, + mbms-SAI-List-r11 MBMS-SAI-List-r11 +} + +MBMS-SAI-InterFreq-v1140 ::= SEQUENCE { + multiBandInfoList-r11 MultiBandInfoList-r11 OPTIONAL -- Need OR +} + + + +SystemInformationBlockType16-r11 ::= SEQUENCE { + timeInfo-r11 SEQUENCE { + timeInfoUTC-r11 INTEGER (0..549755813887), + dayLightSavingTime-r11 BIT STRING (SIZE (2)) OPTIONAL, -- Need OR + leapSeconds-r11 INTEGER (-127..128) OPTIONAL, -- Need OR + localTimeOffset-r11 INTEGER (-63..64) OPTIONAL -- Need OR + } OPTIONAL, -- Need OR + lateNonCriticalExtension OCTET STRING OPTIONAL, + ... +} + + +AntennaInfoCommon ::= SEQUENCE { + antennaPortsCount ENUMERATED {an1, an2, an4, spare1} +} + +AntennaInfoDedicated ::= SEQUENCE { + transmissionMode ENUMERATED { + tm1, tm2, tm3, tm4, tm5, tm6, + tm7, tm8-v920}, + codebookSubsetRestriction CHOICE { + n2TxAntenna-tm3 BIT STRING (SIZE (2)), + n4TxAntenna-tm3 BIT STRING (SIZE (4)), + n2TxAntenna-tm4 BIT STRING (SIZE (6)), + n4TxAntenna-tm4 BIT STRING (SIZE (64)), + n2TxAntenna-tm5 BIT STRING (SIZE (4)), + n4TxAntenna-tm5 BIT STRING (SIZE (16)), + n2TxAntenna-tm6 BIT STRING (SIZE (4)), + n4TxAntenna-tm6 BIT STRING (SIZE (16)) + } OPTIONAL, -- Cond TM + ue-TransmitAntennaSelection CHOICE{ + release NULL, + setup ENUMERATED {closedLoop, openLoop} + } +} + +AntennaInfoDedicated-v920 ::= SEQUENCE { + codebookSubsetRestriction-v920 CHOICE { + n2TxAntenna-tm8-r9 BIT STRING (SIZE (6)), + n4TxAntenna-tm8-r9 BIT STRING (SIZE (32)) + } OPTIONAL -- Cond TM8 +} + +AntennaInfoDedicated-r10 ::= SEQUENCE { + transmissionMode-r10 ENUMERATED { + tm1, tm2, tm3, tm4, tm5, tm6, tm7, tm8-v920, + tm9-v1020, tm10-v1130, spare6, spare5, spare4, + spare3, spare2, spare1}, + codebookSubsetRestriction-r10 BIT STRING OPTIONAL, -- Cond TMX + ue-TransmitAntennaSelection CHOICE{ + release NULL, + setup ENUMERATED {closedLoop, openLoop} + } +} + + +AntennaInfoUL-r10 ::= SEQUENCE { + transmissionModeUL-r10 ENUMERATED {tm1, tm2, spare6, spare5, + spare4, spare3, spare2, spare1} OPTIONAL, -- Need OR + fourAntennaPortActivated-r10 ENUMERATED {setup} OPTIONAL -- Need OR +} + + +CQI-ReportConfig ::= SEQUENCE { + cqi-ReportModeAperiodic CQI-ReportModeAperiodic OPTIONAL, -- Need OR + nomPDSCH-RS-EPRE-Offset INTEGER (-1..6), + cqi-ReportPeriodic CQI-ReportPeriodic OPTIONAL -- Need ON +} + +CQI-ReportConfig-v920 ::= SEQUENCE { + cqi-Mask-r9 ENUMERATED {setup} OPTIONAL, -- Cond cqi-Setup + pmi-RI-Report-r9 ENUMERATED {setup} OPTIONAL -- Cond PMIRI +} + +CQI-ReportConfig-r10 ::= SEQUENCE { + cqi-ReportAperiodic-r10 CQI-ReportAperiodic-r10 OPTIONAL, -- Need ON + nomPDSCH-RS-EPRE-Offset INTEGER (-1..6), + cqi-ReportPeriodic-r10 CQI-ReportPeriodic-r10 OPTIONAL, -- Need ON + pmi-RI-Report-r9 ENUMERATED {setup} OPTIONAL, -- Cond PMIRIPCell + csi-SubframePatternConfig-r10 CHOICE { + release NULL, + setup SEQUENCE { + csi-MeasSubframeSet1-r10 MeasSubframePattern-r10, + csi-MeasSubframeSet2-r10 MeasSubframePattern-r10 + } + } OPTIONAL -- Need ON +} + +CQI-ReportConfig-v1130 ::= SEQUENCE { + cqi-ReportPeriodic-v1130 CQI-ReportPeriodic-v1130, + cqi-ReportBoth-r11 CQI-ReportBoth-r11 +} + +CQI-ReportConfigSCell-r10 ::= SEQUENCE { + cqi-ReportModeAperiodic-r10 CQI-ReportModeAperiodic OPTIONAL, -- Need OR + nomPDSCH-RS-EPRE-Offset-r10 INTEGER (-1..6), + cqi-ReportPeriodicSCell-r10 CQI-ReportPeriodic-r10 OPTIONAL, -- Need ON + pmi-RI-Report-r10 ENUMERATED {setup} OPTIONAL -- Cond PMIRISCell +} + +CQI-ReportPeriodic ::= CHOICE { + release NULL, + setup SEQUENCE { + cqi-PUCCH-ResourceIndex INTEGER (0..1185), + cqi-pmi-ConfigIndex INTEGER (0..1023), + cqi-FormatIndicatorPeriodic CHOICE { + widebandCQI NULL, + subbandCQI SEQUENCE { + k INTEGER (1..4) + } + }, + ri-ConfigIndex INTEGER (0..1023) OPTIONAL, -- Need OR + simultaneousAckNackAndCQI BOOLEAN + } +} + +CQI-ReportPeriodic-r10 ::= CHOICE { + release NULL, + setup SEQUENCE { + cqi-PUCCH-ResourceIndex-r10 INTEGER (0..1184), + cqi-PUCCH-ResourceIndexP1-r10 INTEGER (0..1184) OPTIONAL, -- Need OR + cqi-pmi-ConfigIndex INTEGER (0..1023), + cqi-FormatIndicatorPeriodic-r10 CHOICE { + widebandCQI-r10 SEQUENCE { + csi-ReportMode-r10 ENUMERATED {submode1, submode2} OPTIONAL -- Need OR + }, + subbandCQI-r10 SEQUENCE { + k INTEGER (1..4), + periodicityFactor-r10 ENUMERATED {n2, n4} + } + }, + ri-ConfigIndex INTEGER (0..1023) OPTIONAL, -- Need OR + simultaneousAckNackAndCQI BOOLEAN, + cqi-Mask-r9 ENUMERATED {setup} OPTIONAL, -- Need OR + csi-ConfigIndex-r10 CHOICE { + release NULL, + setup SEQUENCE { + cqi-pmi-ConfigIndex2-r10 INTEGER (0..1023), + ri-ConfigIndex2-r10 INTEGER (0..1023) OPTIONAL -- Need OR + } + } OPTIONAL -- Need ON + } +} + +CQI-ReportPeriodic-v1130 ::= SEQUENCE { + simultaneousAckNackAndCQI-Format3-r11 ENUMERATED {setup} OPTIONAL, -- Need OR + cqi-ReportPeriodicProcExtToReleaseList-r11 CQI-ReportPeriodicProcExtToReleaseList-r11 OPTIONAL, -- Need ON + cqi-ReportPeriodicProcExtToAddModList-r11 CQI-ReportPeriodicProcExtToAddModList-r11 OPTIONAL -- Need ON +} + +CQI-ReportPeriodicProcExtToAddModList-r11 ::= SEQUENCE (SIZE (1..maxCQI-ProcExt-r11)) OF CQI-ReportPeriodicProcExt-r11 + +CQI-ReportPeriodicProcExtToReleaseList-r11 ::= SEQUENCE (SIZE (1..maxCQI-ProcExt-r11)) OF CQI-ReportPeriodicProcExtId-r11 + +CQI-ReportPeriodicProcExt-r11 ::= SEQUENCE { + cqi-ReportPeriodicProcExtId-r11 CQI-ReportPeriodicProcExtId-r11, + cqi-pmi-ConfigIndex-r11 INTEGER (0..1023), + cqi-FormatIndicatorPeriodic-r11 CHOICE { + widebandCQI-r11 SEQUENCE { + csi-ReportMode-r11 ENUMERATED {submode1, submode2} OPTIONAL -- Need OR + }, + subbandCQI-r11 SEQUENCE { + k INTEGER (1..4), + periodicityFactor-r11 ENUMERATED {n2, n4} + } + }, + ri-ConfigIndex-r11 INTEGER (0..1023) OPTIONAL, -- Need OR + csi-ConfigIndex-r11 CHOICE { + release NULL, + setup SEQUENCE { + cqi-pmi-ConfigIndex2-r11 INTEGER (0..1023), + ri-ConfigIndex2-r11 INTEGER (0..1023) OPTIONAL -- Need OR + } + } OPTIONAL, -- Need ON + ... +} + +CQI-ReportAperiodic-r10 ::= CHOICE { + release NULL, + setup SEQUENCE { + cqi-ReportModeAperiodic-r10 CQI-ReportModeAperiodic, + aperiodicCSI-Trigger-r10 SEQUENCE { + trigger1-r10 BIT STRING (SIZE (8)), + trigger2-r10 BIT STRING (SIZE (8)) + } OPTIONAL -- Need OR + } +} + +CQI-ReportAperiodicProc-r11 ::= SEQUENCE { + cqi-ReportModeAperiodic-r11 CQI-ReportModeAperiodic, + trigger01-r11 BOOLEAN, + trigger10-r11 BOOLEAN, + trigger11-r11 BOOLEAN +} + +CQI-ReportModeAperiodic ::= ENUMERATED { + rm12, rm20, rm22, rm30, rm31, + spare3, spare2, spare1 +} + +CQI-ReportBoth-r11 ::= SEQUENCE { + csi-IM-ConfigToReleaseList-r11 CSI-IM-ConfigToReleaseList-r11 OPTIONAL, -- Need ON + csi-IM-ConfigToAddModList-r11 CSI-IM-ConfigToAddModList-r11 OPTIONAL, -- Need ON + csi-ProcessToReleaseList-r11 CSI-ProcessToReleaseList-r11 OPTIONAL, -- Need ON + csi-ProcessToAddModList-r11 CSI-ProcessToAddModList-r11 OPTIONAL -- Need ON +} + +CSI-IM-ConfigToAddModList-r11 ::= SEQUENCE (SIZE (1..maxCSI-IM-r11)) OF CSI-IM-Config-r11 + +CSI-IM-ConfigToReleaseList-r11 ::= SEQUENCE (SIZE (1..maxCSI-IM-r11)) OF CSI-IM-ConfigId-r11 + +CSI-ProcessToAddModList-r11 ::= SEQUENCE (SIZE (1..maxCSI-Proc-r11)) OF CSI-Process-r11 + +CSI-ProcessToReleaseList-r11 ::= SEQUENCE (SIZE (1..maxCSI-Proc-r11)) OF CSI-ProcessId-r11 + +CQI-ReportBothProc-r11 ::= SEQUENCE { + ri-Ref-CSI-ProcessId-r11 CSI-ProcessId-r11 OPTIONAL, -- Need OR + pmi-RI-Report-r11 ENUMERATED {setup} OPTIONAL -- Need OR +} + + +CQI-ReportPeriodicProcExtId-r11 ::= INTEGER (1..maxCQI-ProcExt-r11) + + +CrossCarrierSchedulingConfig-r10 ::= SEQUENCE { + schedulingCellInfo-r10 CHOICE { + own-r10 SEQUENCE { -- No cross carrier scheduling + cif-Presence-r10 BOOLEAN + }, + other-r10 SEQUENCE { -- Cross carrier scheduling + schedulingCellId-r10 ServCellIndex-r10, + pdsch-Start-r10 INTEGER (1..4) + } + } +} + + +CSI-IM-Config-r11 ::= SEQUENCE { + csi-IM-ConfigId-r11 CSI-IM-ConfigId-r11, + resourceConfig-r11 INTEGER (0..31), + subframeConfig-r11 INTEGER (0..154), + ... +} + + +CSI-IM-ConfigId-r11 ::= INTEGER (1..maxCSI-IM-r11) + + +CSI-Process-r11 ::= SEQUENCE { + csi-ProcessId-r11 CSI-ProcessId-r11, + csi-RS-ConfigNZPId-r11 CSI-RS-ConfigNZPId-r11, + csi-IM-ConfigId-r11 CSI-IM-ConfigId-r11, + p-C-AndCBSRList-r11 SEQUENCE (SIZE (1..2)) OF P-C-AndCBSR-r11, + cqi-ReportBothProc-r11 CQI-ReportBothProc-r11 OPTIONAL, -- Need OR + cqi-ReportPeriodicProcId-r11 INTEGER (0..maxCQI-ProcExt-r11) OPTIONAL, -- Need OR + cqi-ReportAperiodicProc-r11 CQI-ReportAperiodicProc-r11 OPTIONAL, -- Need OR + ... +} + +P-C-AndCBSR-r11 ::= SEQUENCE { + p-C-r11 INTEGER (-8..15), + codebookSubsetRestriction-r11 BIT STRING +} + + +CSI-ProcessId-r11 ::= INTEGER (1..maxCSI-Proc-r11) + + +CSI-RS-Config-r10 ::= SEQUENCE { + csi-RS-r10 CHOICE { + release NULL, + setup SEQUENCE { + antennaPortsCount-r10 ENUMERATED {an1, an2, an4, an8}, + resourceConfig-r10 INTEGER (0..31), + subframeConfig-r10 INTEGER (0..154), + p-C-r10 INTEGER (-8..15) + } + } OPTIONAL, -- Need ON + zeroTxPowerCSI-RS-r10 CHOICE { + release NULL, + setup SEQUENCE { + zeroTxPowerResourceConfigList-r10 BIT STRING (SIZE (16)), + zeroTxPowerSubframeConfig-r10 INTEGER (0..154) + } + } OPTIONAL -- Need ON +} + + +CSI-RS-ConfigNZP-r11 ::= SEQUENCE { + csi-RS-ConfigNZPId-r11 CSI-RS-ConfigNZPId-r11, + antennaPortsCount-r11 ENUMERATED {an1, an2, an4, an8}, + resourceConfig-r11 INTEGER (0..31), + subframeConfig-r11 INTEGER (0..154), + scramblingIdentity-r11 INTEGER (0..503), + qcl-CRS-Info-r11 SEQUENCE { + qcl-ScramblingIdentity-r11 INTEGER (0..503), + crs-PortsCount-r11 ENUMERATED {n1, n2, n4, spare1}, + mbsfn-SubframeConfigList-r11 CHOICE { + release NULL, + setup SEQUENCE { + subframeConfigList MBSFN-SubframeConfigList + } + } OPTIONAL -- Need ON + } OPTIONAL, -- Need OR + ... +} + + +CSI-RS-ConfigNZPId-r11 ::= INTEGER (1..maxCSI-RS-NZP-r11) + + +CSI-RS-ConfigZP-r11 ::= SEQUENCE { + csi-RS-ConfigZPId-r11 CSI-RS-ConfigZPId-r11, + resourceConfigList-r11 BIT STRING (SIZE (16)), + subframeConfig-r11 INTEGER (0..154), + ... +} + + +CSI-RS-ConfigZPId-r11 ::= INTEGER (1..maxCSI-RS-ZP-r11) + + +DMRS-Config-r11 ::= CHOICE { + release NULL, + setup SEQUENCE { + scramblingIdentity-r11 INTEGER (0..503), + scramblingIdentity2-r11 INTEGER (0..503) + } +} + + +DRB-Identity ::= INTEGER (1..32) + + +EPDCCH-Config-r11 ::= SEQUENCE{ + config-r11 CHOICE { + release NULL, + setup SEQUENCE { + subframePatternConfig-r11 CHOICE { + release NULL, + setup SEQUENCE { + subframePattern-r11 MeasSubframePattern-r10 + } + } OPTIONAL, -- Need ON + startSymbol-r11 INTEGER (1..4) OPTIONAL, -- Need OP + setConfigToReleaseList-r11 EPDCCH-SetConfigToReleaseList-r11 OPTIONAL, -- Need ON + setConfigToAddModList-r11 EPDCCH-SetConfigToAddModList-r11 OPTIONAL -- Need ON + } + } +} + +EPDCCH-SetConfigToAddModList-r11 ::= SEQUENCE (SIZE(1..maxEPDCCH-Set-r11)) OF EPDCCH-SetConfig-r11 + +EPDCCH-SetConfigToReleaseList-r11 ::= SEQUENCE (SIZE(1..maxEPDCCH-Set-r11)) OF EPDCCH-SetConfigId-r11 + +EPDCCH-SetConfig-r11 ::= SEQUENCE { + setConfigId-r11 EPDCCH-SetConfigId-r11, + transmissionType-r11 ENUMERATED {localised, distributed}, + resourceBlockAssignment-r11 SEQUENCE{ + numberPRB-Pairs-r11 ENUMERATED {n2, n4, n8}, + resourceBlockAssignment-r11 BIT STRING (SIZE(4..38)) + }, + dmrs-ScramblingSequenceInt-r11 INTEGER (0..503), + pucch-ResourceStartOffset-r11 INTEGER (0..2047), + re-MappingQCL-ConfigId-r11 PDSCH-RE-MappingQCL-ConfigId-r11 OPTIONAL, -- Need OR + ... +} + +EPDCCH-SetConfigId-r11 ::= INTEGER (0..1) + + +LogicalChannelConfig ::= SEQUENCE { + ul-SpecificParameters SEQUENCE { + priority INTEGER (1..16), + prioritisedBitRate ENUMERATED { + kBps0, kBps8, kBps16, kBps32, kBps64, kBps128, + kBps256, infinity, kBps512-v1020, kBps1024-v1020, + kBps2048-v1020, spare5, spare4, spare3, spare2, + spare1}, + bucketSizeDuration ENUMERATED { + ms50, ms100, ms150, ms300, ms500, ms1000, spare2, + spare1}, + logicalChannelGroup INTEGER (0..3) OPTIONAL -- Need OR + } OPTIONAL, -- Cond UL + ..., + [[ logicalChannelSR-Mask-r9 ENUMERATED {setup} OPTIONAL -- Cond SRmask + ]] +} + + +MAC-MainConfig ::= SEQUENCE { + ul-SCH-Config SEQUENCE { + maxHARQ-Tx ENUMERATED { + n1, n2, n3, n4, n5, n6, n7, n8, + n10, n12, n16, n20, n24, n28, + spare2, spare1} OPTIONAL, -- Need ON + periodicBSR-Timer ENUMERATED { + sf5, sf10, sf16, sf20, sf32, sf40, sf64, sf80, + sf128, sf160, sf320, sf640, sf1280, sf2560, + infinity, spare1} OPTIONAL, -- Need ON + retxBSR-Timer ENUMERATED { + sf320, sf640, sf1280, sf2560, sf5120, + sf10240, spare2, spare1}, + ttiBundling BOOLEAN + } OPTIONAL, -- Need ON + drx-Config DRX-Config OPTIONAL, -- Need ON + timeAlignmentTimerDedicated TimeAlignmentTimer, + phr-Config CHOICE { + release NULL, + setup SEQUENCE { + periodicPHR-Timer ENUMERATED {sf10, sf20, sf50, sf100, sf200, + sf500, sf1000, infinity}, + prohibitPHR-Timer ENUMERATED {sf0, sf10, sf20, sf50, sf100, + sf200, sf500, sf1000}, + dl-PathlossChange ENUMERATED {dB1, dB3, dB6, infinity} + } + } OPTIONAL, -- Need ON + ..., + [[ sr-ProhibitTimer-r9 INTEGER (0..7) OPTIONAL -- Need ON + ]], + [[ mac-MainConfig-v1020 SEQUENCE { + sCellDeactivationTimer-r10 ENUMERATED { + rf2, rf4, rf8, rf16, rf32, rf64, rf128, + spare} OPTIONAL, -- Need OP + extendedBSR-Sizes-r10 ENUMERATED {setup} OPTIONAL, -- Need OR + extendedPHR-r10 ENUMERATED {setup} OPTIONAL -- Need OR + } OPTIONAL -- Need ON + ]], + [[ stag-ToReleaseList-r11 STAG-ToReleaseList-r11 OPTIONAL, -- Need ON + stag-ToAddModList-r11 STAG-ToAddModList-r11 OPTIONAL, -- Need ON + drx-Config-v1130 DRX-Config-v1130 OPTIONAL -- Need ON + ]] +} + +MAC-MainConfigSCell-r11 ::= SEQUENCE { + stag-Id-r11 STAG-Id-r11 OPTIONAL, -- Need OP + ... +} + +DRX-Config ::= CHOICE { + release NULL, + setup SEQUENCE { + onDurationTimer ENUMERATED { + psf1, psf2, psf3, psf4, psf5, psf6, + psf8, psf10, psf20, psf30, psf40, + psf50, psf60, psf80, psf100, + psf200}, + drx-InactivityTimer ENUMERATED { + psf1, psf2, psf3, psf4, psf5, psf6, + psf8, psf10, psf20, psf30, psf40, + psf50, psf60, psf80, psf100, + psf200, psf300, psf500, psf750, + psf1280, psf1920, psf2560, psf0-v1020, + spare9, spare8, spare7, spare6, + spare5, spare4, spare3, spare2, + spare1}, + drx-RetransmissionTimer ENUMERATED { + psf1, psf2, psf4, psf6, psf8, psf16, + psf24, psf33}, + longDRX-CycleStartOffset CHOICE { + sf10 INTEGER(0..9), + sf20 INTEGER(0..19), + sf32 INTEGER(0..31), + sf40 INTEGER(0..39), + sf64 INTEGER(0..63), + sf80 INTEGER(0..79), + sf128 INTEGER(0..127), + sf160 INTEGER(0..159), + sf256 INTEGER(0..255), + sf320 INTEGER(0..319), + sf512 INTEGER(0..511), + sf640 INTEGER(0..639), + sf1024 INTEGER(0..1023), + sf1280 INTEGER(0..1279), + sf2048 INTEGER(0..2047), + sf2560 INTEGER(0..2559) + }, + shortDRX SEQUENCE { + shortDRX-Cycle ENUMERATED { + sf2, sf5, sf8, sf10, sf16, sf20, + sf32, sf40, sf64, sf80, sf128, sf160, + sf256, sf320, sf512, sf640}, + drxShortCycleTimer INTEGER (1..16) + } OPTIONAL -- Need OR + } +} + +DRX-Config-v1130 ::= SEQUENCE { + drx-RetransmissionTimer-v1130 ENUMERATED {psf0-v1130} OPTIONAL, --Need OR + longDRX-CycleStartOffset-v1130 CHOICE { + sf60-v1130 INTEGER(0..59), + sf70-v1130 INTEGER(0..69) + } OPTIONAL, --Need OR + shortDRX-Cycle-v1130 ENUMERATED {sf4-v1130} OPTIONAL --Need OR +} + +STAG-ToReleaseList-r11 ::= SEQUENCE (SIZE (1..maxSTAG-r11)) OF STAG-Id-r11 + +STAG-ToAddModList-r11 ::= SEQUENCE (SIZE (1..maxSTAG-r11)) OF STAG-ToAddMod-r11 + +STAG-ToAddMod-r11 ::= SEQUENCE { + stag-Id-r11 STAG-Id-r11, + timeAlignmentTimerSTAG-r11 TimeAlignmentTimer, + ... +} + +STAG-Id-r11::= INTEGER (1..maxSTAG-r11) + + +PDCP-Config ::= SEQUENCE { + discardTimer ENUMERATED { + ms50, ms100, ms150, ms300, ms500, + ms750, ms1500, infinity + } OPTIONAL, -- Cond Setup + rlc-AM SEQUENCE { + statusReportRequired BOOLEAN + } OPTIONAL, -- Cond Rlc-AM + rlc-UM SEQUENCE { + pdcp-SN-Size ENUMERATED {len7bits, len12bits} + } OPTIONAL, -- Cond Rlc-UM + headerCompression CHOICE { + notUsed NULL, + rohc SEQUENCE { + maxCID INTEGER (1..16383) DEFAULT 15, + profiles SEQUENCE { + profile0x0001 BOOLEAN, + profile0x0002 BOOLEAN, + profile0x0003 BOOLEAN, + profile0x0004 BOOLEAN, + profile0x0006 BOOLEAN, + profile0x0101 BOOLEAN, + profile0x0102 BOOLEAN, + profile0x0103 BOOLEAN, + profile0x0104 BOOLEAN + }, + ... + } + }, + ..., + [[ rn-IntegrityProtection-r10 ENUMERATED {enabled} OPTIONAL -- Cond RN + ]], + [[ pdcp-SN-Size-v1130 ENUMERATED {len15bits} OPTIONAL -- Cond Rlc-AM2 + ]] +} + + +PDSCH-ConfigCommon ::= SEQUENCE { + referenceSignalPower INTEGER (-60..50), + p-b INTEGER (0..3) +} + +PDSCH-ConfigDedicated::= SEQUENCE { + p-a ENUMERATED { + dB-6, dB-4dot77, dB-3, dB-1dot77, + dB0, dB1, dB2, dB3} +} + +PDSCH-ConfigDedicated-v1130 ::= SEQUENCE { + dmrs-ConfigPDSCH-r11 DMRS-Config-r11 OPTIONAL, -- Need ON + qcl-Operation ENUMERATED {typeA, typeB} OPTIONAL, -- Need OR + re-MappingQCLConfigToReleaseList-r11 RE-MappingQCLConfigToReleaseList-r11 OPTIONAL, -- Need ON + re-MappingQCLConfigToAddModList-r11 RE-MappingQCLConfigToAddModList-r11 OPTIONAL -- Need ON +} + +RE-MappingQCLConfigToAddModList-r11 ::= SEQUENCE (SIZE (1..maxRE-MapQCL-r11)) OF PDSCH-RE-MappingQCL-Config-r11 + +RE-MappingQCLConfigToReleaseList-r11 ::= SEQUENCE (SIZE (1..maxRE-MapQCL-r11)) OF PDSCH-RE-MappingQCL-ConfigId-r11 + +PDSCH-RE-MappingQCL-Config-r11 ::= SEQUENCE { + pdsch-RE-MappingQCL-ConfigId-r11 PDSCH-RE-MappingQCL-ConfigId-r11, + optionalSetOfFields-r11 SEQUENCE { + crs-PortsCount-r11 ENUMERATED {n1, n2, n4, spare1}, + crs-FreqShift-r11 INTEGER (0..5), + mbsfn-SubframeConfigList-r11 CHOICE { + release NULL, + setup SEQUENCE { + subframeConfigList MBSFN-SubframeConfigList + } + } OPTIONAL, -- Need ON + pdsch-Start-r11 ENUMERATED {reserved, n1, n2, n3, n4, assigned} + } OPTIONAL, -- Need OP + csi-RS-ConfigZPId-r11 CSI-RS-ConfigZPId-r11, + qcl-CSI-RS-ConfigNZPId-r11 CSI-RS-ConfigNZPId-r11 OPTIONAL, -- Need OR + ... +} + + +PDSCH-RE-MappingQCL-ConfigId-r11 ::= INTEGER (1..maxRE-MapQCL-r11) + + +PHICH-Config ::= SEQUENCE { + phich-Duration ENUMERATED {normal, extended}, + phich-Resource ENUMERATED {oneSixth, half, one, two} +} + + +PhysicalConfigDedicated ::= SEQUENCE { + pdsch-ConfigDedicated PDSCH-ConfigDedicated OPTIONAL, -- Need ON + pucch-ConfigDedicated PUCCH-ConfigDedicated OPTIONAL, -- Need ON + pusch-ConfigDedicated PUSCH-ConfigDedicated OPTIONAL, -- Need ON + uplinkPowerControlDedicated UplinkPowerControlDedicated OPTIONAL, -- Need ON + tpc-PDCCH-ConfigPUCCH TPC-PDCCH-Config OPTIONAL, -- Need ON + tpc-PDCCH-ConfigPUSCH TPC-PDCCH-Config OPTIONAL, -- Need ON + cqi-ReportConfig CQI-ReportConfig OPTIONAL, -- Cond CQI-r8 + soundingRS-UL-ConfigDedicated SoundingRS-UL-ConfigDedicated OPTIONAL, -- Need ON + antennaInfo CHOICE { + explicitValue AntennaInfoDedicated, + defaultValue NULL + } OPTIONAL, -- Cond AI-r8 + schedulingRequestConfig SchedulingRequestConfig OPTIONAL, -- Need ON + ..., + [[ cqi-ReportConfig-v920 CQI-ReportConfig-v920 OPTIONAL, -- Cond CQI-r8 + antennaInfo-v920 AntennaInfoDedicated-v920 OPTIONAL -- Cond AI-r8 + ]], + [[ antennaInfo-r10 CHOICE { + explicitValue-r10 AntennaInfoDedicated-r10, + defaultValue NULL + } OPTIONAL, -- Cond AI-r10 + antennaInfoUL-r10 AntennaInfoUL-r10 OPTIONAL, -- Need ON + cif-Presence-r10 BOOLEAN OPTIONAL, -- Need ON + cqi-ReportConfig-r10 CQI-ReportConfig-r10 OPTIONAL, -- Cond CQI-r10 + csi-RS-Config-r10 CSI-RS-Config-r10 OPTIONAL, -- Need ON + pucch-ConfigDedicated-v1020 PUCCH-ConfigDedicated-v1020 OPTIONAL, -- Need ON + pusch-ConfigDedicated-v1020 PUSCH-ConfigDedicated-v1020 OPTIONAL, -- Need ON + schedulingRequestConfig-v1020 SchedulingRequestConfig-v1020 OPTIONAL, -- Need ON + soundingRS-UL-ConfigDedicated-v1020 + SoundingRS-UL-ConfigDedicated-v1020 OPTIONAL, -- Need ON + soundingRS-UL-ConfigDedicatedAperiodic-r10 + SoundingRS-UL-ConfigDedicatedAperiodic-r10 OPTIONAL, -- Need ON + uplinkPowerControlDedicated-v1020 UplinkPowerControlDedicated-v1020 OPTIONAL -- Need ON + ]], + [[ additionalSpectrumEmissionCA-r10 CHOICE { + release NULL, + setup SEQUENCE { + additionalSpectrumEmissionPCell-r10 AdditionalSpectrumEmission + } + } OPTIONAL -- Need ON + ]], + [[ -- DL configuration as well as configuration applicable for DL and UL + csi-RS-ConfigNZPToReleaseList-r11 CSI-RS-ConfigNZPToReleaseList-r11 OPTIONAL, -- Need ON + csi-RS-ConfigNZPToAddModList-r11 CSI-RS-ConfigNZPToAddModList-r11 OPTIONAL, -- Need ON + csi-RS-ConfigZPToReleaseList-r11 CSI-RS-ConfigZPToReleaseList-r11 OPTIONAL, -- Need ON + csi-RS-ConfigZPToAddModList-r11 CSI-RS-ConfigZPToAddModList-r11 OPTIONAL, -- Need ON + epdcch-Config-r11 EPDCCH-Config-r11 OPTIONAL, -- Need ON + pdsch-ConfigDedicated-v1130 PDSCH-ConfigDedicated-v1130 OPTIONAL, -- Need ON + -- UL configuration + cqi-ReportConfig-v1130 CQI-ReportConfig-v1130 OPTIONAL, -- Need ON + pucch-ConfigDedicated-v1130 PUCCH-ConfigDedicated-v1130 OPTIONAL, -- Need ON + pusch-ConfigDedicated-v1130 PUSCH-ConfigDedicated-v1130 OPTIONAL, -- Need ON + uplinkPowerControlDedicated-v1130 UplinkPowerControlDedicated-v1130 OPTIONAL -- Need ON + ]] +} + +PhysicalConfigDedicatedSCell-r10 ::= SEQUENCE { + -- DL configuration as well as configuration applicable for DL and UL + nonUL-Configuration-r10 SEQUENCE { + antennaInfo-r10 AntennaInfoDedicated-r10 OPTIONAL, -- Need ON + crossCarrierSchedulingConfig-r10 CrossCarrierSchedulingConfig-r10 OPTIONAL, -- Need ON + csi-RS-Config-r10 CSI-RS-Config-r10 OPTIONAL, -- Need ON + pdsch-ConfigDedicated-r10 PDSCH-ConfigDedicated OPTIONAL -- Need ON + } OPTIONAL, -- Cond SCellAdd + -- UL configuration + ul-Configuration-r10 SEQUENCE { + antennaInfoUL-r10 AntennaInfoUL-r10 OPTIONAL, -- Need ON + pusch-ConfigDedicatedSCell-r10 PUSCH-ConfigDedicatedSCell-r10 OPTIONAL, -- Need ON + uplinkPowerControlDedicatedSCell-r10 UplinkPowerControlDedicatedSCell-r10 OPTIONAL, -- Need ON + cqi-ReportConfigSCell-r10 CQI-ReportConfigSCell-r10 OPTIONAL, -- Need ON + soundingRS-UL-ConfigDedicated-r10 SoundingRS-UL-ConfigDedicated OPTIONAL, -- Need ON + soundingRS-UL-ConfigDedicated-v1020 + SoundingRS-UL-ConfigDedicated-v1020 OPTIONAL, -- Need ON + soundingRS-UL-ConfigDedicatedAperiodic-r10 + SoundingRS-UL-ConfigDedicatedAperiodic-r10 OPTIONAL -- Need ON + } OPTIONAL, -- Cond CommonUL + ..., + [[ -- DL configuration as well as configuration applicable for DL and UL + csi-RS-ConfigNZPToReleaseList-r11 CSI-RS-ConfigNZPToReleaseList-r11 OPTIONAL, -- Need ON + csi-RS-ConfigNZPToAddModList-r11 CSI-RS-ConfigNZPToAddModList-r11 OPTIONAL, -- Need ON + csi-RS-ConfigZPToReleaseList-r11 CSI-RS-ConfigZPToReleaseList-r11 OPTIONAL, -- Need ON + csi-RS-ConfigZPToAddModList-r11 CSI-RS-ConfigZPToAddModList-r11 OPTIONAL, -- Need ON + epdcch-Config-r11 EPDCCH-Config-r11 OPTIONAL, -- Need ON + pdsch-ConfigDedicated-v1130 PDSCH-ConfigDedicated-v1130 OPTIONAL, -- Need ON + -- UL configuration + cqi-ReportConfig-v1130 CQI-ReportConfig-v1130 OPTIONAL, -- Need ON + pusch-ConfigDedicated-v1130 PUSCH-ConfigDedicated-v1130 OPTIONAL, -- Need ON + uplinkPowerControlDedicatedSCell-v1130 UplinkPowerControlDedicated-v1130 OPTIONAL -- Need ON + ]] +} + +CSI-RS-ConfigNZPToAddModList-r11 ::= SEQUENCE (SIZE (1..maxCSI-RS-NZP-r11)) OF CSI-RS-ConfigNZP-r11 + +CSI-RS-ConfigNZPToReleaseList-r11 ::= SEQUENCE (SIZE (1..maxCSI-RS-NZP-r11)) OF CSI-RS-ConfigNZPId-r11 + +CSI-RS-ConfigZPToAddModList-r11 ::= SEQUENCE (SIZE (1..maxCSI-RS-ZP-r11)) OF CSI-RS-ConfigZP-r11 + +CSI-RS-ConfigZPToReleaseList-r11 ::= SEQUENCE (SIZE (1..maxCSI-RS-ZP-r11)) OF CSI-RS-ConfigZPId-r11 + + +P-Max ::= INTEGER (-30..33) + + +PRACH-ConfigSIB ::= SEQUENCE { + rootSequenceIndex INTEGER (0..837), + prach-ConfigInfo PRACH-ConfigInfo +} + +PRACH-Config ::= SEQUENCE { + rootSequenceIndex INTEGER (0..837), + prach-ConfigInfo PRACH-ConfigInfo OPTIONAL -- Need ON +} + +PRACH-ConfigSCell-r10 ::= SEQUENCE { + prach-ConfigIndex-r10 INTEGER (0..63) +} + +PRACH-ConfigInfo ::= SEQUENCE { + prach-ConfigIndex INTEGER (0..63), + highSpeedFlag BOOLEAN, + zeroCorrelationZoneConfig INTEGER (0..15), + prach-FreqOffset INTEGER (0..94) +} + + +PresenceAntennaPort1 ::= BOOLEAN + + +PUCCH-ConfigCommon ::= SEQUENCE { + deltaPUCCH-Shift ENUMERATED {ds1, ds2, ds3}, + nRB-CQI INTEGER (0..98), + nCS-AN INTEGER (0..7), + n1PUCCH-AN INTEGER (0..2047) +} + +PUCCH-ConfigDedicated ::= SEQUENCE { + ackNackRepetition CHOICE{ + release NULL, + setup SEQUENCE { + repetitionFactor ENUMERATED {n2, n4, n6, spare1}, + n1PUCCH-AN-Rep INTEGER (0..2047) + } + }, + tdd-AckNackFeedbackMode ENUMERATED {bundling, multiplexing} OPTIONAL -- Cond TDD +} + +PUCCH-ConfigDedicated-v1020 ::= SEQUENCE { + pucch-Format-r10 CHOICE { + format3-r10 SEQUENCE { + n3PUCCH-AN-List-r10 SEQUENCE (SIZE (1..4)) OF INTEGER (0..549) OPTIONAL, -- Need ON + twoAntennaPortActivatedPUCCH-Format3-r10 CHOICE { + release NULL, + setup SEQUENCE { + n3PUCCH-AN-ListP1-r10 SEQUENCE (SIZE (1..4)) OF INTEGER (0..549) + } + } OPTIONAL -- Need ON + }, + channelSelection-r10 SEQUENCE { + n1PUCCH-AN-CS-r10 CHOICE { + release NULL, + setup SEQUENCE { + n1PUCCH-AN-CS-List-r10 SEQUENCE (SIZE (1..2)) OF N1PUCCH-AN-CS-r10 + } + } OPTIONAL -- Need ON + } + } OPTIONAL, -- Need OR + twoAntennaPortActivatedPUCCH-Format1a1b-r10 ENUMERATED {true} OPTIONAL, -- Need OR + simultaneousPUCCH-PUSCH-r10 ENUMERATED {true} OPTIONAL, -- Need OR + n1PUCCH-AN-RepP1-r10 INTEGER (0..2047) OPTIONAL -- Need OR +} + +PUCCH-ConfigDedicated-v1130 ::= SEQUENCE { + n1PUCCH-AN-CS-v1130 CHOICE { + release NULL, + setup SEQUENCE { + n1PUCCH-AN-CS-ListP1-r11 SEQUENCE (SIZE (2..4)) OF INTEGER (0..2047) + } + } OPTIONAL, -- Need ON + nPUCCH-Param-r11 CHOICE { + release NULL, + setup SEQUENCE { + nPUCCH-Identity-r11 INTEGER (0..503), + n1PUCCH-AN-r11 INTEGER (0..2047) + } + } OPTIONAL -- Need ON +} + +N1PUCCH-AN-CS-r10 ::= SEQUENCE (SIZE (1..4)) OF INTEGER (0..2047) + + +PUSCH-ConfigCommon ::= SEQUENCE { + pusch-ConfigBasic SEQUENCE { + n-SB INTEGER (1..4), + hoppingMode ENUMERATED {interSubFrame, intraAndInterSubFrame}, + pusch-HoppingOffset INTEGER (0..98), + enable64QAM BOOLEAN + }, + ul-ReferenceSignalsPUSCH UL-ReferenceSignalsPUSCH +} + +PUSCH-ConfigDedicated ::= SEQUENCE { + betaOffset-ACK-Index INTEGER (0..15), + betaOffset-RI-Index INTEGER (0..15), + betaOffset-CQI-Index INTEGER (0..15) +} + +PUSCH-ConfigDedicated-v1020 ::= SEQUENCE { + betaOffsetMC-r10 SEQUENCE { + betaOffset-ACK-Index-MC-r10 INTEGER (0..15), + betaOffset-RI-Index-MC-r10 INTEGER (0..15), + betaOffset-CQI-Index-MC-r10 INTEGER (0..15) + } OPTIONAL, -- Need OR + groupHoppingDisabled-r10 ENUMERATED {true} OPTIONAL, -- Need OR + dmrs-WithOCC-Activated-r10 ENUMERATED {true} OPTIONAL -- Need OR +} + +PUSCH-ConfigDedicated-v1130 ::= SEQUENCE { + pusch-DMRS-r11 CHOICE { + release NULL, + setup SEQUENCE { + nPUSCH-Identity-r11 INTEGER (0..509), + nDMRS-CSH-Identity-r11 INTEGER (0..509) + } + } +} + +PUSCH-ConfigDedicatedSCell-r10 ::= SEQUENCE { + groupHoppingDisabled-r10 ENUMERATED {true} OPTIONAL, -- Need OR + dmrs-WithOCC-Activated-r10 ENUMERATED {true} OPTIONAL -- Need OR +} + +UL-ReferenceSignalsPUSCH ::= SEQUENCE { + groupHoppingEnabled BOOLEAN, + groupAssignmentPUSCH INTEGER (0..29), + sequenceHoppingEnabled BOOLEAN, + cyclicShift INTEGER (0..7) +} + + +RACH-ConfigCommon ::= SEQUENCE { + preambleInfo SEQUENCE { + numberOfRA-Preambles ENUMERATED { + n4, n8, n12, n16 ,n20, n24, n28, + n32, n36, n40, n44, n48, n52, n56, + n60, n64}, + preamblesGroupAConfig SEQUENCE { + sizeOfRA-PreamblesGroupA ENUMERATED { + n4, n8, n12, n16 ,n20, n24, n28, + n32, n36, n40, n44, n48, n52, n56, + n60}, + messageSizeGroupA ENUMERATED {b56, b144, b208, b256}, + messagePowerOffsetGroupB ENUMERATED { + minusinfinity, dB0, dB5, dB8, dB10, dB12, + dB15, dB18}, + ... + } OPTIONAL -- Need OP + }, + powerRampingParameters PowerRampingParameters, + ra-SupervisionInfo SEQUENCE { + preambleTransMax PreambleTransMax, + ra-ResponseWindowSize ENUMERATED { + sf2, sf3, sf4, sf5, sf6, sf7, + sf8, sf10}, + mac-ContentionResolutionTimer ENUMERATED { + sf8, sf16, sf24, sf32, sf40, sf48, + sf56, sf64} + }, + maxHARQ-Msg3Tx INTEGER (1..8), + ... +} + +RACH-ConfigCommonSCell-r11 ::= SEQUENCE { + powerRampingParameters-r11 PowerRampingParameters, + ra-SupervisionInfo-r11 SEQUENCE { + preambleTransMax-r11 PreambleTransMax + }, + ... +} + +PowerRampingParameters ::= SEQUENCE { + powerRampingStep ENUMERATED {dB0, dB2,dB4, dB6}, + preambleInitialReceivedTargetPower ENUMERATED { + dBm-120, dBm-118, dBm-116, dBm-114, dBm-112, + dBm-110, dBm-108, dBm-106, dBm-104, dBm-102, + dBm-100, dBm-98, dBm-96, dBm-94, + dBm-92, dBm-90} +} + +PreambleTransMax ::= ENUMERATED { + n3, n4, n5, n6, n7, n8, n10, n20, n50, + n100, n200} + + +RACH-ConfigDedicated ::= SEQUENCE { + ra-PreambleIndex INTEGER (0..63), + ra-PRACH-MaskIndex INTEGER (0..15) +} + + +RadioResourceConfigCommonSIB ::= SEQUENCE { + rach-ConfigCommon RACH-ConfigCommon, + bcch-Config BCCH-Config, + pcch-Config PCCH-Config, + prach-Config PRACH-ConfigSIB, + pdsch-ConfigCommon PDSCH-ConfigCommon, + pusch-ConfigCommon PUSCH-ConfigCommon, + pucch-ConfigCommon PUCCH-ConfigCommon, + soundingRS-UL-ConfigCommon SoundingRS-UL-ConfigCommon, + uplinkPowerControlCommon UplinkPowerControlCommon, + ul-CyclicPrefixLength UL-CyclicPrefixLength, + ..., + [[ uplinkPowerControlCommon-v1020 UplinkPowerControlCommon-v1020 OPTIONAL -- Need OR + ]] +} + +RadioResourceConfigCommon ::= SEQUENCE { + rach-ConfigCommon RACH-ConfigCommon OPTIONAL, -- Need ON + prach-Config PRACH-Config, + pdsch-ConfigCommon PDSCH-ConfigCommon OPTIONAL, -- Need ON + pusch-ConfigCommon PUSCH-ConfigCommon, + phich-Config PHICH-Config OPTIONAL, -- Need ON + pucch-ConfigCommon PUCCH-ConfigCommon OPTIONAL, -- Need ON + soundingRS-UL-ConfigCommon SoundingRS-UL-ConfigCommon OPTIONAL, -- Need ON + uplinkPowerControlCommon UplinkPowerControlCommon OPTIONAL, -- Need ON + antennaInfoCommon AntennaInfoCommon OPTIONAL, -- Need ON + p-Max P-Max OPTIONAL, -- Need OP + tdd-Config TDD-Config OPTIONAL, -- Cond TDD + ul-CyclicPrefixLength UL-CyclicPrefixLength, + ..., + [[ uplinkPowerControlCommon-v1020 UplinkPowerControlCommon-v1020 OPTIONAL -- Need ON + ]], + [[ tdd-Config-v1130 TDD-Config-v1130 OPTIONAL -- Cond TDD3 + ]] +} + +RadioResourceConfigCommonSCell-r10 ::= SEQUENCE { + -- DL configuration as well as configuration applicable for DL and UL + nonUL-Configuration-r10 SEQUENCE { + -- 1: Cell characteristics + dl-Bandwidth-r10 ENUMERATED {n6, n15, n25, n50, n75, n100}, + -- 2: Physical configuration, general + antennaInfoCommon-r10 AntennaInfoCommon, + mbsfn-SubframeConfigList-r10 MBSFN-SubframeConfigList OPTIONAL, -- Need OR + -- 3: Physical configuration, control + phich-Config-r10 PHICH-Config, + -- 4: Physical configuration, physical channels + pdsch-ConfigCommon-r10 PDSCH-ConfigCommon, + tdd-Config-r10 TDD-Config OPTIONAL -- Cond TDDSCell + }, + -- UL configuration + ul-Configuration-r10 SEQUENCE { + ul-FreqInfo-r10 SEQUENCE { + ul-CarrierFreq-r10 ARFCN-ValueEUTRA OPTIONAL, -- Need OP + ul-Bandwidth-r10 ENUMERATED {n6, n15, + n25, n50, n75, n100} OPTIONAL, -- Need OP + additionalSpectrumEmissionSCell-r10 AdditionalSpectrumEmission + }, + p-Max-r10 P-Max OPTIONAL, -- Need OP + uplinkPowerControlCommonSCell-r10 UplinkPowerControlCommonSCell-r10, + -- A special version of IE UplinkPowerControlCommon may be introduced + -- 3: Physical configuration, control + soundingRS-UL-ConfigCommon-r10 SoundingRS-UL-ConfigCommon, + ul-CyclicPrefixLength-r10 UL-CyclicPrefixLength, + -- 4: Physical configuration, physical channels + prach-ConfigSCell-r10 PRACH-ConfigSCell-r10 OPTIONAL, -- Cond TDD-OR-NoR11 + pusch-ConfigCommon-r10 PUSCH-ConfigCommon + } OPTIONAL, -- Need OR + ..., + [[ ul-CarrierFreq-v1090 ARFCN-ValueEUTRA-v9e0 OPTIONAL -- Need OP + ]], + [[ rach-ConfigCommonSCell-r11 RACH-ConfigCommonSCell-r11 OPTIONAL, -- Cond UL + prach-ConfigSCell-r11 PRACH-Config OPTIONAL, -- Cond UL + tdd-Config-v1130 TDD-Config-v1130 OPTIONAL, -- Cond TDD2 + uplinkPowerControlCommonSCell-v1130 + UplinkPowerControlCommonSCell-v1130 OPTIONAL -- Cond UL + ]] +} + +BCCH-Config ::= SEQUENCE { + modificationPeriodCoeff ENUMERATED {n2, n4, n8, n16} +} + +PCCH-Config ::= SEQUENCE { + defaultPagingCycle ENUMERATED { + rf32, rf64, rf128, rf256}, + nB ENUMERATED { + fourT, twoT, oneT, halfT, quarterT, oneEighthT, + oneSixteenthT, oneThirtySecondT} +} + +UL-CyclicPrefixLength ::= ENUMERATED {len1, len2} + + +RadioResourceConfigDedicated ::= SEQUENCE { + srb-ToAddModList SRB-ToAddModList OPTIONAL, -- Cond HO-Conn + drb-ToAddModList DRB-ToAddModList OPTIONAL, -- Cond HO-toEUTRA + drb-ToReleaseList DRB-ToReleaseList OPTIONAL, -- Need ON + mac-MainConfig CHOICE { + explicitValue MAC-MainConfig, + defaultValue NULL + } OPTIONAL, -- Cond HO-toEUTRA2 + sps-Config SPS-Config OPTIONAL, -- Need ON + physicalConfigDedicated PhysicalConfigDedicated OPTIONAL, -- Need ON + ..., + [[ rlf-TimersAndConstants-r9 RLF-TimersAndConstants-r9 OPTIONAL -- Need ON + ]], + [[ measSubframePatternPCell-r10 MeasSubframePatternPCell-r10 OPTIONAL -- Need ON + ]], + [[ neighCellsCRS-Info-r11 NeighCellsCRS-Info-r11 OPTIONAL -- Need ON + ]] +} + +RadioResourceConfigDedicatedSCell-r10 ::= SEQUENCE { + -- UE specific configuration extensions applicable for an SCell + physicalConfigDedicatedSCell-r10 PhysicalConfigDedicatedSCell-r10 OPTIONAL, -- Need ON + ..., + [[ mac-MainConfigSCell-r11 MAC-MainConfigSCell-r11 OPTIONAL -- Cond SCellAdd + ]] +} + +SRB-ToAddModList ::= SEQUENCE (SIZE (1..2)) OF SRB-ToAddMod + +SRB-ToAddMod ::= SEQUENCE { + srb-Identity INTEGER (1..2), + rlc-Config CHOICE { + explicitValue RLC-Config, + defaultValue NULL + } OPTIONAL, -- Cond Setup + logicalChannelConfig CHOICE { + explicitValue LogicalChannelConfig, + defaultValue NULL + } OPTIONAL, -- Cond Setup + ... +} + +DRB-ToAddModList ::= SEQUENCE (SIZE (1..maxDRB)) OF DRB-ToAddMod + +DRB-ToAddMod ::= SEQUENCE { + eps-BearerIdentity INTEGER (0..15) OPTIONAL, -- Cond DRB-Setup + drb-Identity DRB-Identity, + pdcp-Config PDCP-Config OPTIONAL, -- Cond PDCP + rlc-Config RLC-Config OPTIONAL, -- Cond Setup + logicalChannelIdentity INTEGER (3..10) OPTIONAL, -- Cond DRB-Setup + logicalChannelConfig LogicalChannelConfig OPTIONAL, -- Cond Setup + ... +} + +DRB-ToReleaseList ::= SEQUENCE (SIZE (1..maxDRB)) OF DRB-Identity + +MeasSubframePatternPCell-r10 ::= CHOICE { + release NULL, + setup MeasSubframePattern-r10 +} + +NeighCellsCRS-Info-r11 ::= CHOICE { + release NULL, + setup CRS-AssistanceInfoList-r11 +} + +CRS-AssistanceInfoList-r11 ::= SEQUENCE (SIZE (1..maxCellReport)) OF CRS-AssistanceInfo-r11 + +CRS-AssistanceInfo-r11 ::= SEQUENCE { + physCellId-r11 PhysCellId, + antennaPortsCount-r11 ENUMERATED {an1, an2, an4, spare1}, + mbsfn-SubframeConfigList-r11 MBSFN-SubframeConfigList, + ... +} + + +RLC-Config ::= CHOICE { + am SEQUENCE { + ul-AM-RLC UL-AM-RLC, + dl-AM-RLC DL-AM-RLC + }, + um-Bi-Directional SEQUENCE { + ul-UM-RLC UL-UM-RLC, + dl-UM-RLC DL-UM-RLC + }, + um-Uni-Directional-UL SEQUENCE { + ul-UM-RLC UL-UM-RLC + }, + um-Uni-Directional-DL SEQUENCE { + dl-UM-RLC DL-UM-RLC + }, + ... +} + +UL-AM-RLC ::= SEQUENCE { + t-PollRetransmit T-PollRetransmit, + pollPDU PollPDU, + pollByte PollByte, + maxRetxThreshold ENUMERATED { + t1, t2, t3, t4, t6, t8, t16, t32} +} + +DL-AM-RLC ::= SEQUENCE { + t-Reordering T-Reordering, + t-StatusProhibit T-StatusProhibit +} + +UL-UM-RLC ::= SEQUENCE { + sn-FieldLength SN-FieldLength +} + +DL-UM-RLC ::= SEQUENCE { + sn-FieldLength SN-FieldLength, + t-Reordering T-Reordering +} + +SN-FieldLength ::= ENUMERATED {size5, size10} + +T-PollRetransmit ::= ENUMERATED { + ms5, ms10, ms15, ms20, ms25, ms30, ms35, + ms40, ms45, ms50, ms55, ms60, ms65, ms70, + ms75, ms80, ms85, ms90, ms95, ms100, ms105, + ms110, ms115, ms120, ms125, ms130, ms135, + ms140, ms145, ms150, ms155, ms160, ms165, + ms170, ms175, ms180, ms185, ms190, ms195, + ms200, ms205, ms210, ms215, ms220, ms225, + ms230, ms235, ms240, ms245, ms250, ms300, + ms350, ms400, ms450, ms500, spare9, spare8, + spare7, spare6, spare5, spare4, spare3, + spare2, spare1} + +PollPDU ::= ENUMERATED { + p4, p8, p16, p32, p64, p128, p256, pInfinity} + +PollByte ::= ENUMERATED { + kB25, kB50, kB75, kB100, kB125, kB250, kB375, + kB500, kB750, kB1000, kB1250, kB1500, kB2000, + kB3000, kBinfinity, spare1} + +T-Reordering ::= ENUMERATED { + ms0, ms5, ms10, ms15, ms20, ms25, ms30, ms35, + ms40, ms45, ms50, ms55, ms60, ms65, ms70, + ms75, ms80, ms85, ms90, ms95, ms100, ms110, + ms120, ms130, ms140, ms150, ms160, ms170, + ms180, ms190, ms200, spare1} + +T-StatusProhibit ::= ENUMERATED { + ms0, ms5, ms10, ms15, ms20, ms25, ms30, ms35, + ms40, ms45, ms50, ms55, ms60, ms65, ms70, + ms75, ms80, ms85, ms90, ms95, ms100, ms105, + ms110, ms115, ms120, ms125, ms130, ms135, + ms140, ms145, ms150, ms155, ms160, ms165, + ms170, ms175, ms180, ms185, ms190, ms195, + ms200, ms205, ms210, ms215, ms220, ms225, + ms230, ms235, ms240, ms245, ms250, ms300, + ms350, ms400, ms450, ms500, spare8, spare7, + spare6, spare5, spare4, spare3, spare2, + spare1} + + +RLF-TimersAndConstants-r9 ::= CHOICE { + release NULL, + setup SEQUENCE { + t301-r9 ENUMERATED { + ms100, ms200, ms300, ms400, ms600, ms1000, ms1500, + ms2000}, + t310-r9 ENUMERATED { + ms0, ms50, ms100, ms200, ms500, ms1000, ms2000}, + n310-r9 ENUMERATED { + n1, n2, n3, n4, n6, n8, n10, n20}, + t311-r9 ENUMERATED { + ms1000, ms3000, ms5000, ms10000, ms15000, + ms20000, ms30000}, + n311-r9 ENUMERATED { + n1, n2, n3, n4, n5, n6, n8, n10}, + ... + } +} + + +RN-SubframeConfig-r10 ::= SEQUENCE { + subframeConfigPattern-r10 CHOICE { + subframeConfigPatternFDD-r10 BIT STRING (SIZE(8)), + subframeConfigPatternTDD-r10 INTEGER (0..31) + } OPTIONAL, -- Need ON + rpdcch-Config-r10 SEQUENCE { + resourceAllocationType-r10 ENUMERATED {type0, type1, type2Localized, type2Distributed, + spare4, spare3, spare2, spare1}, + resourceBlockAssignment-r10 CHOICE { + type01-r10 CHOICE { + nrb6-r10 BIT STRING (SIZE(6)), + nrb15-r10 BIT STRING (SIZE(8)), + nrb25-r10 BIT STRING (SIZE(13)), + nrb50-r10 BIT STRING (SIZE(17)), + nrb75-r10 BIT STRING (SIZE(19)), + nrb100-r10 BIT STRING (SIZE(25)) + }, + type2-r10 CHOICE { + nrb6-r10 BIT STRING (SIZE(5)), + nrb15-r10 BIT STRING (SIZE(7)), + nrb25-r10 BIT STRING (SIZE(9)), + nrb50-r10 BIT STRING (SIZE(11)), + nrb75-r10 BIT STRING (SIZE(12)), + nrb100-r10 BIT STRING (SIZE(13)) + }, + ... + }, + demodulationRS-r10 CHOICE { + interleaving-r10 ENUMERATED {crs}, + noInterleaving-r10 ENUMERATED {crs, dmrs} + }, + pdsch-Start-r10 INTEGER (1..3), + pucch-Config-r10 CHOICE { + tdd CHOICE { + channelSelectionMultiplexingBundling SEQUENCE { + n1PUCCH-AN-List-r10 SEQUENCE (SIZE (1..4)) OF INTEGER (0..2047) + }, + fallbackForFormat3 SEQUENCE { + n1PUCCH-AN-P0-r10 INTEGER (0..2047), + n1PUCCH-AN-P1-r10 INTEGER (0..2047) OPTIONAL -- Need OR + } + }, + fdd SEQUENCE { + n1PUCCH-AN-P0-r10 INTEGER (0..2047), + n1PUCCH-AN-P1-r10 INTEGER (0..2047) OPTIONAL -- Need OR + } + }, + ... + } OPTIONAL, -- Need ON + ... +} + + +SchedulingRequestConfig ::= CHOICE { + release NULL, + setup SEQUENCE { + sr-PUCCH-ResourceIndex INTEGER (0..2047), + sr-ConfigIndex INTEGER (0..157), + dsr-TransMax ENUMERATED { + n4, n8, n16, n32, n64, spare3, spare2, spare1} + } +} + +SchedulingRequestConfig-v1020 ::= SEQUENCE { + sr-PUCCH-ResourceIndexP1-r10 INTEGER (0..2047) OPTIONAL -- Need OR +} + + +SoundingRS-UL-ConfigCommon ::= CHOICE { + release NULL, + setup SEQUENCE { + srs-BandwidthConfig ENUMERATED {bw0, bw1, bw2, bw3, bw4, bw5, bw6, bw7}, + srs-SubframeConfig ENUMERATED { + sc0, sc1, sc2, sc3, sc4, sc5, sc6, sc7, + sc8, sc9, sc10, sc11, sc12, sc13, sc14, sc15}, + ackNackSRS-SimultaneousTransmission BOOLEAN, + srs-MaxUpPts ENUMERATED {true} OPTIONAL -- Cond TDD + } +} + +SoundingRS-UL-ConfigDedicated ::= CHOICE{ + release NULL, + setup SEQUENCE { + srs-Bandwidth ENUMERATED {bw0, bw1, bw2, bw3}, + srs-HoppingBandwidth ENUMERATED {hbw0, hbw1, hbw2, hbw3}, + freqDomainPosition INTEGER (0..23), + duration BOOLEAN, + srs-ConfigIndex INTEGER (0..1023), + transmissionComb INTEGER (0..1), + cyclicShift ENUMERATED {cs0, cs1, cs2, cs3, cs4, cs5, cs6, cs7} + } +} + +SoundingRS-UL-ConfigDedicated-v1020 ::= SEQUENCE { + srs-AntennaPort-r10 SRS-AntennaPort +} + +SoundingRS-UL-ConfigDedicatedAperiodic-r10 ::= CHOICE{ + release NULL, + setup SEQUENCE { + srs-ConfigIndexAp-r10 INTEGER (0..31), + srs-ConfigApDCI-Format4-r10 SEQUENCE (SIZE (1..3)) OF SRS-ConfigAp-r10 OPTIONAL,--Need ON + srs-ActivateAp-r10 CHOICE { + release NULL, + setup SEQUENCE { + srs-ConfigApDCI-Format0-r10 SRS-ConfigAp-r10, + srs-ConfigApDCI-Format1a2b2c-r10 SRS-ConfigAp-r10, + ... + } + } OPTIONAL -- Need ON + } +} + +SRS-ConfigAp-r10 ::= SEQUENCE { + srs-AntennaPortAp-r10 SRS-AntennaPort, + srs-BandwidthAp-r10 ENUMERATED {bw0, bw1, bw2, bw3}, + freqDomainPositionAp-r10 INTEGER (0..23), + transmissionCombAp-r10 INTEGER (0..1), + cyclicShiftAp-r10 ENUMERATED {cs0, cs1, cs2, cs3, cs4, cs5, cs6, cs7} +} + +SRS-AntennaPort ::= ENUMERATED {an1, an2, an4, spare1} + + +SPS-Config ::= SEQUENCE { + semiPersistSchedC-RNTI C-RNTI OPTIONAL, -- Need OR + sps-ConfigDL SPS-ConfigDL OPTIONAL, -- Need ON + sps-ConfigUL SPS-ConfigUL OPTIONAL -- Need ON +} + +SPS-ConfigDL ::= CHOICE{ + release NULL, + setup SEQUENCE { + semiPersistSchedIntervalDL ENUMERATED { + sf10, sf20, sf32, sf40, sf64, sf80, + sf128, sf160, sf320, sf640, spare6, + spare5, spare4, spare3, spare2, + spare1}, + numberOfConfSPS-Processes INTEGER (1..8), + n1PUCCH-AN-PersistentList N1PUCCH-AN-PersistentList, + ..., + [[ twoAntennaPortActivated-r10 CHOICE { + release NULL, + setup SEQUENCE { + n1PUCCH-AN-PersistentListP1-r10 N1PUCCH-AN-PersistentList + } + } OPTIONAL -- Need ON + ]] + } +} + +SPS-ConfigUL ::= CHOICE { + release NULL, + setup SEQUENCE { + semiPersistSchedIntervalUL ENUMERATED { + sf10, sf20, sf32, sf40, sf64, sf80, + sf128, sf160, sf320, sf640, spare6, + spare5, spare4, spare3, spare2, + spare1}, + implicitReleaseAfter ENUMERATED {e2, e3, e4, e8}, + p0-Persistent SEQUENCE { + p0-NominalPUSCH-Persistent INTEGER (-126..24), + p0-UE-PUSCH-Persistent INTEGER (-8..7) + } OPTIONAL, -- Need OP + twoIntervalsConfig ENUMERATED {true} OPTIONAL, -- Cond TDD + ... + } +} + +N1PUCCH-AN-PersistentList ::= SEQUENCE (SIZE (1..4)) OF INTEGER (0..2047) + + +TDD-Config ::= SEQUENCE { + subframeAssignment ENUMERATED { + sa0, sa1, sa2, sa3, sa4, sa5, sa6}, + specialSubframePatterns ENUMERATED { + ssp0, ssp1, ssp2, ssp3, ssp4,ssp5, ssp6, ssp7, + ssp8} +} + +TDD-Config-v1130 ::= SEQUENCE { + specialSubframePatterns-v1130 ENUMERATED {ssp7,ssp9} +} + + +TimeAlignmentTimer ::= ENUMERATED { + sf500, sf750, sf1280, sf1920, sf2560, sf5120, + sf10240, infinity} + +TPC-PDCCH-Config ::= CHOICE { + release NULL, + setup SEQUENCE { + tpc-RNTI BIT STRING (SIZE (16)), + tpc-Index TPC-Index + } +} + +TPC-Index ::= CHOICE { + indexOfFormat3 INTEGER (1..15), + indexOfFormat3A INTEGER (1..31) +} + + +UplinkPowerControlCommon ::= SEQUENCE { + p0-NominalPUSCH INTEGER (-126..24), + alpha ENUMERATED {al0, al04, al05, al06, al07, al08, al09, al1}, + p0-NominalPUCCH INTEGER (-127..-96), + deltaFList-PUCCH DeltaFList-PUCCH, + deltaPreambleMsg3 INTEGER (-1..6) +} + +UplinkPowerControlCommon-v1020 ::= SEQUENCE { + deltaF-PUCCH-Format3-r10 ENUMERATED {deltaF-1, deltaF0, deltaF1, deltaF2, + deltaF3, deltaF4, deltaF5, deltaF6}, + deltaF-PUCCH-Format1bCS-r10 ENUMERATED {deltaF1, deltaF2, spare2, spare1} +} + +UplinkPowerControlCommonSCell-r10 ::= SEQUENCE { + p0-NominalPUSCH-r10 INTEGER (-126..24), + alpha-r10 ENUMERATED {al0, al04, al05, al06, al07, al08, al09, al1} +} + +UplinkPowerControlCommonSCell-v1130 ::= SEQUENCE { + deltaPreambleMsg3-r11 INTEGER (-1..6) +} + +UplinkPowerControlDedicated ::= SEQUENCE { + p0-UE-PUSCH INTEGER (-8..7), + deltaMCS-Enabled ENUMERATED {en0, en1}, + accumulationEnabled BOOLEAN, + p0-UE-PUCCH INTEGER (-8..7), + pSRS-Offset INTEGER (0..15), + filterCoefficient FilterCoefficient DEFAULT fc4 +} + +UplinkPowerControlDedicated-v1020 ::= SEQUENCE { + deltaTxD-OffsetListPUCCH-r10 DeltaTxD-OffsetListPUCCH-r10 OPTIONAL, -- Need OR + pSRS-OffsetAp-r10 INTEGER (0..15) OPTIONAL -- Need OR +} + +UplinkPowerControlDedicated-v1130 ::= SEQUENCE { + pSRS-Offset-v1130 INTEGER (16..31) OPTIONAL, -- Need OR + pSRS-OffsetAp-v1130 INTEGER (16..31) OPTIONAL, -- Need OR + deltaTxD-OffsetListPUCCH-v1130 DeltaTxD-OffsetListPUCCH-v1130 OPTIONAL -- Need OR +} + +UplinkPowerControlDedicatedSCell-r10 ::= SEQUENCE { + p0-UE-PUSCH-r10 INTEGER (-8..7), + deltaMCS-Enabled-r10 ENUMERATED {en0, en1}, + accumulationEnabled-r10 BOOLEAN, + pSRS-Offset-r10 INTEGER (0..15), + pSRS-OffsetAp-r10 INTEGER (0..15) OPTIONAL, -- Need OR + filterCoefficient-r10 FilterCoefficient DEFAULT fc4, + pathlossReferenceLinking-r10 ENUMERATED {pCell, sCell} +} + +DeltaFList-PUCCH ::= SEQUENCE { + deltaF-PUCCH-Format1 ENUMERATED {deltaF-2, deltaF0, deltaF2}, + deltaF-PUCCH-Format1b ENUMERATED {deltaF1, deltaF3, deltaF5}, + deltaF-PUCCH-Format2 ENUMERATED {deltaF-2, deltaF0, deltaF1, deltaF2}, + deltaF-PUCCH-Format2a ENUMERATED {deltaF-2, deltaF0, deltaF2}, + deltaF-PUCCH-Format2b ENUMERATED {deltaF-2, deltaF0, deltaF2} +} + +DeltaTxD-OffsetListPUCCH-r10 ::= SEQUENCE { + deltaTxD-OffsetPUCCH-Format1-r10 ENUMERATED {dB0, dB-2}, + deltaTxD-OffsetPUCCH-Format1a1b-r10 ENUMERATED {dB0, dB-2}, + deltaTxD-OffsetPUCCH-Format22a2b-r10 ENUMERATED {dB0, dB-2}, + deltaTxD-OffsetPUCCH-Format3-r10 ENUMERATED {dB0, dB-2}, + ... + +} + +DeltaTxD-OffsetListPUCCH-v1130 ::= SEQUENCE { + deltaTxD-OffsetPUCCH-Format1bCS-r11 ENUMERATED {dB0, dB-1} +} + +NextHopChainingCount ::= INTEGER (0..7) + + +SecurityAlgorithmConfig ::= SEQUENCE { + cipheringAlgorithm ENUMERATED { + eea0, eea1, eea2, eea3-v1130, spare4, spare3, + spare2, spare1, ...}, + integrityProtAlgorithm ENUMERATED { + eia0-v920, eia1, eia2, eia3-v1130, spare4, spare3, + spare2, spare1, ...} +} + + +ShortMAC-I ::= BIT STRING (SIZE (16)) + + +AdditionalSpectrumEmission ::= INTEGER (1..32) + + +ARFCN-ValueCDMA2000 ::= INTEGER (0..2047) + + +ARFCN-ValueEUTRA ::= INTEGER (0..maxEARFCN) + +ARFCN-ValueEUTRA-v9e0 ::= INTEGER (maxEARFCN-Plus1..maxEARFCN2) + +ARFCN-ValueEUTRA-r9 ::= INTEGER (0..maxEARFCN2) + + +ARFCN-ValueGERAN ::= INTEGER (0..1023) + + +ARFCN-ValueUTRA ::= INTEGER (0..16383) + + +BandclassCDMA2000 ::= ENUMERATED { + bc0, bc1, bc2, bc3, bc4, bc5, bc6, bc7, bc8, + bc9, bc10, bc11, bc12, bc13, bc14, bc15, bc16, + bc17, bc18-v9a0, bc19-v9a0, bc20-v9a0, bc21-v9a0, + spare10, spare9, spare8, spare7, spare6, spare5, spare4, + spare3, spare2, spare1, ...} + + +BandIndicatorGERAN ::= ENUMERATED {dcs1800, pcs1900} + + +CarrierFreqCDMA2000 ::= SEQUENCE { + bandClass BandclassCDMA2000, + arfcn ARFCN-ValueCDMA2000 +} + + +CarrierFreqGERAN ::= SEQUENCE { + arfcn ARFCN-ValueGERAN, + bandIndicator BandIndicatorGERAN +} + + +CarrierFreqsGERAN ::= SEQUENCE { + startingARFCN ARFCN-ValueGERAN, + bandIndicator BandIndicatorGERAN, + followingARFCNs CHOICE { + explicitListOfARFCNs ExplicitListOfARFCNs, + equallySpacedARFCNs SEQUENCE { + arfcn-Spacing INTEGER (1..8), + numberOfFollowingARFCNs INTEGER (0..31) + }, + variableBitMapOfARFCNs OCTET STRING (SIZE (1..16)) + } +} + +ExplicitListOfARFCNs ::= SEQUENCE (SIZE (0..31)) OF ARFCN-ValueGERAN + + +CarrierFreqListMBMS-r11 ::= SEQUENCE (SIZE (1..maxFreqMBMS-r11)) OF ARFCN-ValueEUTRA-r9 + + +CDMA2000-Type ::= ENUMERATED {type1XRTT, typeHRPD} + + +CellIdentity ::= BIT STRING (SIZE (28)) + + +CellIndexList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF CellIndex + +CellIndex ::= INTEGER (1..maxCellMeas) + + +CellReselectionPriority ::= INTEGER (0..7) + + +CSFB-RegistrationParam1XRTT ::= SEQUENCE { + sid BIT STRING (SIZE (15)), + nid BIT STRING (SIZE (16)), + multipleSID BOOLEAN, + multipleNID BOOLEAN, + homeReg BOOLEAN, + foreignSIDReg BOOLEAN, + foreignNIDReg BOOLEAN, + parameterReg BOOLEAN, + powerUpReg BOOLEAN, + registrationPeriod BIT STRING (SIZE (7)), + registrationZone BIT STRING (SIZE (12)), + totalZone BIT STRING (SIZE (3)), + zoneTimer BIT STRING (SIZE (3)) +} + +CSFB-RegistrationParam1XRTT-v920 ::= SEQUENCE { + powerDownReg-r9 ENUMERATED {true} +} + + +CellGlobalIdEUTRA ::= SEQUENCE { + plmn-Identity PLMN-Identity, + cellIdentity CellIdentity +} + + +CellGlobalIdUTRA ::= SEQUENCE { + plmn-Identity PLMN-Identity, + cellIdentity BIT STRING (SIZE (28)) +} + + +CellGlobalIdGERAN ::= SEQUENCE { + plmn-Identity PLMN-Identity, + locationAreaCode BIT STRING (SIZE (16)), + cellIdentity BIT STRING (SIZE (16)) +} + + +CellGlobalIdCDMA2000 ::= CHOICE { + cellGlobalId1XRTT BIT STRING (SIZE (47)), + cellGlobalIdHRPD BIT STRING (SIZE (128)) +} + + +CSG-Identity ::= BIT STRING (SIZE (27)) + + +FreqBandIndicator ::= INTEGER (1..maxFBI) + +FreqBandIndicator-v9e0 ::= INTEGER (maxFBI-Plus1..maxFBI2) + +FreqBandIndicator-r11 ::= INTEGER (1..maxFBI2) + + +MobilityControlInfo ::= SEQUENCE { + targetPhysCellId PhysCellId, + carrierFreq CarrierFreqEUTRA OPTIONAL, -- Cond HO-toEUTRA2 + carrierBandwidth CarrierBandwidthEUTRA OPTIONAL, -- Cond HO-toEUTRA + additionalSpectrumEmission AdditionalSpectrumEmission OPTIONAL, -- Cond HO-toEUTRA + t304 ENUMERATED { + ms50, ms100, ms150, ms200, ms500, ms1000, + ms2000, spare1}, + newUE-Identity C-RNTI, + radioResourceConfigCommon RadioResourceConfigCommon, + rach-ConfigDedicated RACH-ConfigDedicated OPTIONAL, -- Need OP + ..., + [[ carrierFreq-v9e0 CarrierFreqEUTRA-v9e0 OPTIONAL -- Need ON + ]], + [[ drb-ContinueROHC-r11 ENUMERATED {true} OPTIONAL -- Cond HO + ]] +} + +CarrierBandwidthEUTRA ::= SEQUENCE { + dl-Bandwidth ENUMERATED { + n6, n15, n25, n50, n75, n100, spare10, + spare9, spare8, spare7, spare6, spare5, + spare4, spare3, spare2, spare1}, + ul-Bandwidth ENUMERATED { + n6, n15, n25, n50, n75, n100, spare10, + spare9, spare8, spare7, spare6, spare5, + spare4, spare3, spare2, spare1} OPTIONAL -- Need OP +} + +CarrierFreqEUTRA ::= SEQUENCE { + dl-CarrierFreq ARFCN-ValueEUTRA, + ul-CarrierFreq ARFCN-ValueEUTRA OPTIONAL -- Cond FDD +} + +CarrierFreqEUTRA-v9e0 ::= SEQUENCE { + dl-CarrierFreq-v9e0 ARFCN-ValueEUTRA-r9, + ul-CarrierFreq-v9e0 ARFCN-ValueEUTRA-r9 OPTIONAL -- Cond FDD +} + + +MobilityParametersCDMA2000 ::= OCTET STRING + + +MobilityStateParameters ::= SEQUENCE { + t-Evaluation ENUMERATED { + s30, s60, s120, s180, s240, spare3, spare2, spare1}, + t-HystNormal ENUMERATED { + s30, s60, s120, s180, s240, spare3, spare2, spare1}, + n-CellChangeMedium INTEGER (1..16), + n-CellChangeHigh INTEGER (1..16) +} + + +MultiBandInfoList ::= SEQUENCE (SIZE (1..maxMultiBands)) OF FreqBandIndicator + +MultiBandInfoList-v9e0 ::= SEQUENCE (SIZE (1..maxMultiBands)) OF MultiBandInfo-v9e0 + +MultiBandInfoList-r11 ::= SEQUENCE (SIZE (1..maxMultiBands)) OF FreqBandIndicator-r11 + +MultiBandInfo-v9e0 ::= SEQUENCE { + freqBandIndicator-v9e0 FreqBandIndicator-v9e0 OPTIONAL -- Need OP +} + + +PhysCellId ::= INTEGER (0..503) + + +PhysCellIdRange ::= SEQUENCE { + start PhysCellId, + range ENUMERATED { + n4, n8, n12, n16, n24, n32, n48, n64, n84, + n96, n128, n168, n252, n504, spare2, + spare1} OPTIONAL -- Need OP +} + + +PhysCellIdRangeUTRA-FDDList-r9::= SEQUENCE (SIZE (1..maxPhysCellIdRange-r9)) OF PhysCellIdRangeUTRA-FDD-r9 + +PhysCellIdRangeUTRA-FDD-r9 ::= SEQUENCE { + start-r9 PhysCellIdUTRA-FDD, + range-r9 INTEGER (2..512) OPTIONAL -- Need OP +} + + +PhysCellIdCDMA2000 ::= INTEGER (0..maxPNOffset) + + +PhysCellIdGERAN ::= SEQUENCE { + networkColourCode BIT STRING (SIZE (3)), + baseStationColourCode BIT STRING (SIZE (3)) +} + + +PhysCellIdUTRA-FDD ::= INTEGER (0..511) + + +PhysCellIdUTRA-TDD ::= INTEGER (0..127) + + +PLMN-Identity ::= SEQUENCE { + mcc MCC OPTIONAL, -- Cond MCC + mnc MNC +} + +MCC ::= SEQUENCE (SIZE (3)) OF + MCC-MNC-Digit + +MNC ::= SEQUENCE (SIZE (2..3)) OF + MCC-MNC-Digit + +MCC-MNC-Digit ::= INTEGER (0..9) + + + +PLMN-IdentityList3-r11 ::= SEQUENCE (SIZE (1..16)) OF PLMN-Identity + + +PreRegistrationInfoHRPD ::= SEQUENCE { + preRegistrationAllowed BOOLEAN, + preRegistrationZoneId PreRegistrationZoneIdHRPD OPTIONAL, -- cond PreRegAllowed + secondaryPreRegistrationZoneIdList SecondaryPreRegistrationZoneIdListHRPD OPTIONAL -- Need OR +} + +SecondaryPreRegistrationZoneIdListHRPD ::= SEQUENCE (SIZE (1..2)) OF PreRegistrationZoneIdHRPD + +PreRegistrationZoneIdHRPD ::= INTEGER (0..255) + + +Q-QualMin-r9 ::= INTEGER (-34..-3) + + +Q-RxLevMin ::= INTEGER (-70..-22) + + +Q-OffsetRange ::= ENUMERATED { + dB-24, dB-22, dB-20, dB-18, dB-16, dB-14, + dB-12, dB-10, dB-8, dB-6, dB-5, dB-4, dB-3, + dB-2, dB-1, dB0, dB1, dB2, dB3, dB4, dB5, + dB6, dB8, dB10, dB12, dB14, dB16, dB18, + dB20, dB22, dB24} + + +Q-OffsetRangeInterRAT ::= INTEGER (-15..15) + + +ReselectionThreshold ::= INTEGER (0..31) + + +ReselectionThresholdQ-r9 ::= INTEGER (0..31) + + +SCellIndex-r10 ::= INTEGER (1..7) + + +ServCellIndex-r10 ::= INTEGER (0..7) + + +SpeedStateScaleFactors ::= SEQUENCE { + sf-Medium ENUMERATED {oDot25, oDot5, oDot75, lDot0}, + sf-High ENUMERATED {oDot25, oDot5, oDot75, lDot0} +} + +SystemInfoListGERAN ::= SEQUENCE (SIZE (1..maxGERAN-SI)) OF + OCTET STRING (SIZE (1..23)) + + +SystemTimeInfoCDMA2000 ::= SEQUENCE { + cdma-EUTRA-Synchronisation BOOLEAN, + cdma-SystemTime CHOICE { + synchronousSystemTime BIT STRING (SIZE (39)), + asynchronousSystemTime BIT STRING (SIZE (49)) + } +} + + +TrackingAreaCode ::= BIT STRING (SIZE (16)) + + +T-Reselection ::= INTEGER (0..7) + + +AllowedMeasBandwidth ::= ENUMERATED {mbw6, mbw15, mbw25, mbw50, mbw75, mbw100} + + +Hysteresis ::= INTEGER (0..30) + + +LocationInfo-r10 ::= SEQUENCE { + locationCoordinates-r10 CHOICE { + ellipsoid-Point-r10 OCTET STRING, + ellipsoidPointWithAltitude-r10 OCTET STRING, + ..., + ellipsoidPointWithUncertaintyCircle-r11 OCTET STRING, + ellipsoidPointWithUncertaintyEllipse-r11 OCTET STRING, + ellipsoidPointWithAltitudeAndUncertaintyEllipsoid-r11 OCTET STRING, + ellipsoidArc-r11 OCTET STRING, + polygon-r11 OCTET STRING + }, + horizontalVelocity-r10 OCTET STRING OPTIONAL, + gnss-TOD-msec-r10 OCTET STRING OPTIONAL, + ... +} + + +MeasConfig ::= SEQUENCE { + -- Measurement objects + measObjectToRemoveList MeasObjectToRemoveList OPTIONAL, -- Need ON + measObjectToAddModList MeasObjectToAddModList OPTIONAL, -- Need ON + -- Reporting configurations + reportConfigToRemoveList ReportConfigToRemoveList OPTIONAL, -- Need ON + reportConfigToAddModList ReportConfigToAddModList OPTIONAL, -- Need ON + -- Measurement identities + measIdToRemoveList MeasIdToRemoveList OPTIONAL, -- Need ON + measIdToAddModList MeasIdToAddModList OPTIONAL, -- Need ON + -- Other parameters + quantityConfig QuantityConfig OPTIONAL, -- Need ON + measGapConfig MeasGapConfig OPTIONAL, -- Need ON + s-Measure RSRP-Range OPTIONAL, -- Need ON + preRegistrationInfoHRPD PreRegistrationInfoHRPD OPTIONAL, -- Need OP + speedStatePars CHOICE { + release NULL, + setup SEQUENCE { + mobilityStateParameters MobilityStateParameters, + timeToTrigger-SF SpeedStateScaleFactors + } + } OPTIONAL, -- Need ON + ..., + [[ measObjectToAddModList-v9e0 MeasObjectToAddModList-v9e0 OPTIONAL -- Need ON + ]] +} + +MeasIdToRemoveList ::= SEQUENCE (SIZE (1..maxMeasId)) OF MeasId + +MeasObjectToRemoveList ::= SEQUENCE (SIZE (1..maxObjectId)) OF MeasObjectId + +ReportConfigToRemoveList ::= SEQUENCE (SIZE (1..maxReportConfigId)) OF ReportConfigId + + +MeasGapConfig ::= CHOICE { + release NULL, + setup SEQUENCE { + gapOffset CHOICE { + gp0 INTEGER (0..39), + gp1 INTEGER (0..79), + ... + } + } +} + + +MeasId ::= INTEGER (1..maxMeasId) + + +MeasIdToAddModList ::= SEQUENCE (SIZE (1..maxMeasId)) OF MeasIdToAddMod + +MeasIdToAddMod ::= SEQUENCE { + measId MeasId, + measObjectId MeasObjectId, + reportConfigId ReportConfigId +} + + +MeasObjectCDMA2000 ::= SEQUENCE { + cdma2000-Type CDMA2000-Type, + carrierFreq CarrierFreqCDMA2000, + searchWindowSize INTEGER (0..15) OPTIONAL, -- Need ON + offsetFreq Q-OffsetRangeInterRAT DEFAULT 0, + cellsToRemoveList CellIndexList OPTIONAL, -- Need ON + cellsToAddModList CellsToAddModListCDMA2000 OPTIONAL, -- Need ON + cellForWhichToReportCGI PhysCellIdCDMA2000 OPTIONAL, -- Need ON + ... +} + +CellsToAddModListCDMA2000 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF CellsToAddModCDMA2000 + +CellsToAddModCDMA2000 ::= SEQUENCE { + cellIndex INTEGER (1..maxCellMeas), + physCellId PhysCellIdCDMA2000 +} + + +MeasObjectEUTRA ::= SEQUENCE { + carrierFreq ARFCN-ValueEUTRA, + allowedMeasBandwidth AllowedMeasBandwidth, + presenceAntennaPort1 PresenceAntennaPort1, + neighCellConfig NeighCellConfig, + offsetFreq Q-OffsetRange DEFAULT dB0, + -- Cell list + cellsToRemoveList CellIndexList OPTIONAL, -- Need ON + cellsToAddModList CellsToAddModList OPTIONAL, -- Need ON + -- Black list + blackCellsToRemoveList CellIndexList OPTIONAL, -- Need ON + blackCellsToAddModList BlackCellsToAddModList OPTIONAL, -- Need ON + cellForWhichToReportCGI PhysCellId OPTIONAL, -- Need ON + ..., + [[measCycleSCell-r10 MeasCycleSCell-r10 OPTIONAL, -- Need ON + measSubframePatternConfigNeigh-r10 MeasSubframePatternConfigNeigh-r10 OPTIONAL -- Need ON + ]], + [[widebandRSRQ-Meas-r11 BOOLEAN OPTIONAL -- Cond WB-RSRQ + ]] +} + +MeasObjectEUTRA-v9e0 ::= SEQUENCE { + carrierFreq-v9e0 ARFCN-ValueEUTRA-v9e0 +} + +CellsToAddModList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF CellsToAddMod + +CellsToAddMod ::= SEQUENCE { + cellIndex INTEGER (1..maxCellMeas), + physCellId PhysCellId, + cellIndividualOffset Q-OffsetRange +} + +BlackCellsToAddModList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF BlackCellsToAddMod + +BlackCellsToAddMod ::= SEQUENCE { + cellIndex INTEGER (1..maxCellMeas), + physCellIdRange PhysCellIdRange +} + +MeasCycleSCell-r10 ::= ENUMERATED {sf160, sf256, sf320, sf512, + sf640, sf1024, sf1280, spare1} + +MeasSubframePatternConfigNeigh-r10 ::= CHOICE { + release NULL, + setup SEQUENCE { + measSubframePatternNeigh-r10 MeasSubframePattern-r10, + measSubframeCellList-r10 MeasSubframeCellList-r10 OPTIONAL -- Cond always + } +} + +MeasSubframeCellList-r10 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF PhysCellIdRange + + +MeasObjectGERAN ::= SEQUENCE { + carrierFreqs CarrierFreqsGERAN, + offsetFreq Q-OffsetRangeInterRAT DEFAULT 0, + ncc-Permitted BIT STRING(SIZE (8)) DEFAULT '11111111'B, + cellForWhichToReportCGI PhysCellIdGERAN OPTIONAL, -- Need ON + ... +} + + +MeasObjectId ::= INTEGER (1..maxObjectId) + + +MeasObjectToAddModList ::= SEQUENCE (SIZE (1..maxObjectId)) OF MeasObjectToAddMod + +MeasObjectToAddModList-v9e0 ::= SEQUENCE (SIZE (1..maxObjectId)) OF MeasObjectToAddMod-v9e0 + +MeasObjectToAddMod ::= SEQUENCE { + measObjectId MeasObjectId, + measObject CHOICE { + measObjectEUTRA MeasObjectEUTRA, + measObjectUTRA MeasObjectUTRA, + measObjectGERAN MeasObjectGERAN, + measObjectCDMA2000 MeasObjectCDMA2000, + ... + } +} + +MeasObjectToAddMod-v9e0 ::= SEQUENCE { + measObjectEUTRA-v9e0 MeasObjectEUTRA-v9e0 OPTIONAL -- Cond eutra +} + + +MeasObjectUTRA ::= SEQUENCE { + carrierFreq ARFCN-ValueUTRA, + offsetFreq Q-OffsetRangeInterRAT DEFAULT 0, + cellsToRemoveList CellIndexList OPTIONAL, -- Need ON + cellsToAddModList CHOICE { + cellsToAddModListUTRA-FDD CellsToAddModListUTRA-FDD, + cellsToAddModListUTRA-TDD CellsToAddModListUTRA-TDD + } OPTIONAL, -- Need ON + cellForWhichToReportCGI CHOICE { + utra-FDD PhysCellIdUTRA-FDD, + utra-TDD PhysCellIdUTRA-TDD + } OPTIONAL, -- Need ON + ..., + [[ csg-allowedReportingCells-v930 CSG-AllowedReportingCells-r9 OPTIONAL -- Need ON + ]] +} + +CellsToAddModListUTRA-FDD ::= SEQUENCE (SIZE (1..maxCellMeas)) OF CellsToAddModUTRA-FDD + +CellsToAddModUTRA-FDD ::= SEQUENCE { + cellIndex INTEGER (1..maxCellMeas), + physCellId PhysCellIdUTRA-FDD +} + +CellsToAddModListUTRA-TDD ::= SEQUENCE (SIZE (1..maxCellMeas)) OF CellsToAddModUTRA-TDD + +CellsToAddModUTRA-TDD ::= SEQUENCE { + cellIndex INTEGER (1..maxCellMeas), + physCellId PhysCellIdUTRA-TDD +} + +CSG-AllowedReportingCells-r9 ::= SEQUENCE { + physCellIdRangeUTRA-FDDList-r9 PhysCellIdRangeUTRA-FDDList-r9 OPTIONAL -- Need OR +} + +MeasResults ::= SEQUENCE { + measId MeasId, + measResultPCell SEQUENCE { + rsrpResult RSRP-Range, + rsrqResult RSRQ-Range + }, + measResultNeighCells CHOICE { + measResultListEUTRA MeasResultListEUTRA, + measResultListUTRA MeasResultListUTRA, + measResultListGERAN MeasResultListGERAN, + measResultsCDMA2000 MeasResultsCDMA2000, + ... + } OPTIONAL, + ..., + [[ measResultForECID-r9 MeasResultForECID-r9 OPTIONAL + ]], + [[ locationInfo-r10 LocationInfo-r10 OPTIONAL, + measResultServFreqList-r10 MeasResultServFreqList-r10 OPTIONAL + ]] +} + +MeasResultListEUTRA ::= SEQUENCE (SIZE (1..maxCellReport)) OF MeasResultEUTRA + +MeasResultEUTRA ::= SEQUENCE { + physCellId PhysCellId, + cgi-Info SEQUENCE { + cellGlobalId CellGlobalIdEUTRA, + trackingAreaCode TrackingAreaCode, + plmn-IdentityList PLMN-IdentityList2 OPTIONAL + } OPTIONAL, + measResult SEQUENCE { + rsrpResult RSRP-Range OPTIONAL, + rsrqResult RSRQ-Range OPTIONAL, + ..., + [[ additionalSI-Info-r9 AdditionalSI-Info-r9 OPTIONAL + ]] + } +} + +MeasResultServFreqList-r10 ::= SEQUENCE (SIZE (1..maxServCell-r10)) OF MeasResultServFreq-r10 + +MeasResultServFreq-r10 ::= SEQUENCE { + servFreqId-r10 ServCellIndex-r10, + measResultSCell-r10 SEQUENCE { + rsrpResultSCell-r10 RSRP-Range, + rsrqResultSCell-r10 RSRQ-Range + } OPTIONAL, + measResultBestNeighCell-r10 SEQUENCE { + physCellId-r10 PhysCellId, + rsrpResultNCell-r10 RSRP-Range, + rsrqResultNCell-r10 RSRQ-Range + } OPTIONAL, + ... +} + +MeasResultListUTRA ::= SEQUENCE (SIZE (1..maxCellReport)) OF MeasResultUTRA + +MeasResultUTRA ::= SEQUENCE { + physCellId CHOICE { + fdd PhysCellIdUTRA-FDD, + tdd PhysCellIdUTRA-TDD + }, + cgi-Info SEQUENCE { + cellGlobalId CellGlobalIdUTRA, + locationAreaCode BIT STRING (SIZE (16)) OPTIONAL, + routingAreaCode BIT STRING (SIZE (8)) OPTIONAL, + plmn-IdentityList PLMN-IdentityList2 OPTIONAL + } OPTIONAL, + measResult SEQUENCE { + utra-RSCP INTEGER (-5..91) OPTIONAL, + utra-EcN0 INTEGER (0..49) OPTIONAL, + ..., + [[ additionalSI-Info-r9 AdditionalSI-Info-r9 OPTIONAL + ]] + } +} + +MeasResultListGERAN ::= SEQUENCE (SIZE (1..maxCellReport)) OF MeasResultGERAN + +MeasResultGERAN ::= SEQUENCE { + carrierFreq CarrierFreqGERAN, + physCellId PhysCellIdGERAN, + cgi-Info SEQUENCE { + cellGlobalId CellGlobalIdGERAN, + routingAreaCode BIT STRING (SIZE (8)) OPTIONAL + } OPTIONAL, + measResult SEQUENCE { + rssi INTEGER (0..63), + ... + } +} + +MeasResultsCDMA2000 ::= SEQUENCE { + preRegistrationStatusHRPD BOOLEAN, + measResultListCDMA2000 MeasResultListCDMA2000 +} + +MeasResultListCDMA2000 ::= SEQUENCE (SIZE (1..maxCellReport)) OF MeasResultCDMA2000 + +MeasResultCDMA2000 ::= SEQUENCE { + physCellId PhysCellIdCDMA2000, + cgi-Info CellGlobalIdCDMA2000 OPTIONAL, + measResult SEQUENCE { + pilotPnPhase INTEGER (0..32767) OPTIONAL, + pilotStrength INTEGER (0..63), + ... + } +} + +MeasResultForECID-r9 ::= SEQUENCE { + ue-RxTxTimeDiffResult-r9 INTEGER (0..4095), + currentSFN-r9 BIT STRING (SIZE (10)) +} + +PLMN-IdentityList2 ::= SEQUENCE (SIZE (1..5)) OF PLMN-Identity + +AdditionalSI-Info-r9 ::= SEQUENCE { + csg-MemberStatus-r9 ENUMERATED {member} OPTIONAL, + csg-Identity-r9 CSG-Identity OPTIONAL +} + + +QuantityConfig ::= SEQUENCE { + quantityConfigEUTRA QuantityConfigEUTRA OPTIONAL, -- Need ON + quantityConfigUTRA QuantityConfigUTRA OPTIONAL, -- Need ON + quantityConfigGERAN QuantityConfigGERAN OPTIONAL, -- Need ON + quantityConfigCDMA2000 QuantityConfigCDMA2000 OPTIONAL, -- Need ON + ..., + [[ quantityConfigUTRA-v1020 QuantityConfigUTRA-v1020 OPTIONAL -- Need ON + ]] +} + +QuantityConfigEUTRA ::= SEQUENCE { + filterCoefficientRSRP FilterCoefficient DEFAULT fc4, + filterCoefficientRSRQ FilterCoefficient DEFAULT fc4 +} + +QuantityConfigUTRA ::= SEQUENCE { + measQuantityUTRA-FDD ENUMERATED {cpich-RSCP, cpich-EcN0}, + measQuantityUTRA-TDD ENUMERATED {pccpch-RSCP}, + filterCoefficient FilterCoefficient DEFAULT fc4 +} + +QuantityConfigUTRA-v1020 ::= SEQUENCE { + filterCoefficient2-FDD-r10 FilterCoefficient DEFAULT fc4 +} + +QuantityConfigGERAN ::= SEQUENCE { + measQuantityGERAN ENUMERATED {rssi}, + filterCoefficient FilterCoefficient DEFAULT fc2 +} + +QuantityConfigCDMA2000 ::= SEQUENCE { + measQuantityCDMA2000 ENUMERATED {pilotStrength, pilotPnPhaseAndPilotStrength} +} + + +ReportConfigEUTRA ::= SEQUENCE { + triggerType CHOICE { + event SEQUENCE { + eventId CHOICE { + eventA1 SEQUENCE { + a1-Threshold ThresholdEUTRA + }, + eventA2 SEQUENCE { + a2-Threshold ThresholdEUTRA + }, + eventA3 SEQUENCE { + a3-Offset INTEGER (-30..30), + reportOnLeave BOOLEAN + }, + eventA4 SEQUENCE { + a4-Threshold ThresholdEUTRA + }, + eventA5 SEQUENCE { + a5-Threshold1 ThresholdEUTRA, + a5-Threshold2 ThresholdEUTRA + }, + ..., + eventA6-r10 SEQUENCE { + a6-Offset-r10 INTEGER (-30..30), + a6-ReportOnLeave-r10 BOOLEAN + } + }, + hysteresis Hysteresis, + timeToTrigger TimeToTrigger + }, + periodical SEQUENCE { + purpose ENUMERATED { + reportStrongestCells, reportCGI} + } + }, + triggerQuantity ENUMERATED {rsrp, rsrq}, + reportQuantity ENUMERATED {sameAsTriggerQuantity, both}, + maxReportCells INTEGER (1..maxCellReport), + reportInterval ReportInterval, + reportAmount ENUMERATED {r1, r2, r4, r8, r16, r32, r64, infinity}, + ..., + [[ si-RequestForHO-r9 ENUMERATED {setup} OPTIONAL, -- Cond reportCGI + ue-RxTxTimeDiffPeriodical-r9 ENUMERATED {setup} OPTIONAL -- Need OR + ]], + [[ includeLocationInfo-r10 ENUMERATED {true} OPTIONAL, -- Need OR + reportAddNeighMeas-r10 ENUMERATED {setup} OPTIONAL -- Need OR + ]] +} + +ThresholdEUTRA ::= CHOICE{ + threshold-RSRP RSRP-Range, + threshold-RSRQ RSRQ-Range +} + + +ReportConfigId ::= INTEGER (1..maxReportConfigId) + + +ReportConfigInterRAT ::= SEQUENCE { + triggerType CHOICE { + event SEQUENCE { + eventId CHOICE { + eventB1 SEQUENCE { + b1-Threshold CHOICE { + b1-ThresholdUTRA ThresholdUTRA, + b1-ThresholdGERAN ThresholdGERAN, + b1-ThresholdCDMA2000 ThresholdCDMA2000 + } + }, + eventB2 SEQUENCE { + b2-Threshold1 ThresholdEUTRA, + b2-Threshold2 CHOICE { + b2-Threshold2UTRA ThresholdUTRA, + b2-Threshold2GERAN ThresholdGERAN, + b2-Threshold2CDMA2000 ThresholdCDMA2000 + } + }, + ... + }, + hysteresis Hysteresis, + timeToTrigger TimeToTrigger + }, + periodical SEQUENCE { + purpose ENUMERATED { + reportStrongestCells, + reportStrongestCellsForSON, + reportCGI} + } + }, + maxReportCells INTEGER (1..maxCellReport), + reportInterval ReportInterval, + reportAmount ENUMERATED {r1, r2, r4, r8, r16, r32, r64, infinity}, + ..., + [[ si-RequestForHO-r9 ENUMERATED {setup} OPTIONAL -- Cond reportCGI + ]], + [[ reportQuantityUTRA-FDD-r10 ENUMERATED {both} OPTIONAL -- Need OR + ]], + [[ includeLocationInfo-r11 BOOLEAN OPTIONAL -- Need ON + ]] +} + +ThresholdUTRA ::= CHOICE{ + utra-RSCP INTEGER (-5..91), + utra-EcN0 INTEGER (0..49) +} + +ThresholdGERAN ::= INTEGER (0..63) + +ThresholdCDMA2000 ::= INTEGER (0..63) + + +ReportConfigToAddModList ::= SEQUENCE (SIZE (1..maxReportConfigId)) OF ReportConfigToAddMod + +ReportConfigToAddMod ::= SEQUENCE { + reportConfigId ReportConfigId, + reportConfig CHOICE { + reportConfigEUTRA ReportConfigEUTRA, + reportConfigInterRAT ReportConfigInterRAT + } +} + + + +ReportInterval ::= ENUMERATED { + ms120, ms240, ms480, ms640, ms1024, ms2048, ms5120, ms10240, + min1, min6, min12, min30, min60, spare3, spare2, spare1} + + +RSRP-Range ::= INTEGER(0..97) + + +RSRQ-Range ::= INTEGER(0..34) + + +TimeToTrigger ::= ENUMERATED { + ms0, ms40, ms64, ms80, ms100, ms128, ms160, ms256, + ms320, ms480, ms512, ms640, ms1024, ms1280, ms2560, + ms5120} + + +AbsoluteTimeInfo-r10 ::= BIT STRING (SIZE (48)) + + +AreaConfiguration-r10 ::= CHOICE { + cellGlobalIdList-r10 CellGlobalIdList-r10, + trackingAreaCodeList-r10 TrackingAreaCodeList-r10 +} + +AreaConfiguration-v1130 ::= SEQUENCE { + trackingAreaCodeList-v1130 TrackingAreaCodeList-v1130 +} + +CellGlobalIdList-r10 ::= SEQUENCE (SIZE (1..32)) OF CellGlobalIdEUTRA + +TrackingAreaCodeList-r10 ::= SEQUENCE (SIZE (1..8)) OF TrackingAreaCode + +TrackingAreaCodeList-v1130 ::= SEQUENCE { + plmn-Identity-perTAC-List-r11 SEQUENCE (SIZE (1..8)) OF PLMN-Identity +} + + +C-RNTI ::= BIT STRING (SIZE (16)) + + +DedicatedInfoCDMA2000 ::= OCTET STRING + + +DedicatedInfoNAS ::= OCTET STRING + + +FilterCoefficient ::= ENUMERATED { + fc0, fc1, fc2, fc3, fc4, fc5, + fc6, fc7, fc8, fc9, fc11, fc13, + fc15, fc17, fc19, spare1, ...} + + +LoggingDuration-r10 ::= ENUMERATED { + min10, min20, min40, min60, min90, min120, spare2, spare1} + + +LoggingInterval-r10 ::= ENUMERATED { + ms1280, ms2560, ms5120, ms10240, ms20480, + ms30720, ms40960, ms61440} + + +MeasSubframePattern-r10 ::= CHOICE { + subframePatternFDD-r10 BIT STRING (SIZE (40)), + subframePatternTDD-r10 CHOICE { + subframeConfig1-5-r10 BIT STRING (SIZE (20)), + subframeConfig0-r10 BIT STRING (SIZE (70)), + subframeConfig6-r10 BIT STRING (SIZE (60)), + ... + }, + ... +} + + +MMEC ::= BIT STRING (SIZE (8)) + + +NeighCellConfig ::= BIT STRING (SIZE (2)) + + +OtherConfig-r9 ::= SEQUENCE { + reportProximityConfig-r9 ReportProximityConfig-r9 OPTIONAL, -- Need ON + ..., + [[ idc-Config-r11 IDC-Config-r11 OPTIONAL, -- Need ON + powerPrefIndicationConfig-r11 PowerPrefIndicationConfig-r11 OPTIONAL, -- Need ON + obtainLocationConfig-r11 ObtainLocationConfig-r11 OPTIONAL -- Need ON + ]] +} + +IDC-Config-r11 ::= SEQUENCE { + idc-Indication-r11 ENUMERATED {setup} OPTIONAL, -- Need OR + autonomousDenialParameters-r11 SEQUENCE { + autonomousDenialSubframes-r11 ENUMERATED {n2, n5, n10, n15, + n20, n30, spare2, spare1}, + autonomousDenialValidity-r11 ENUMERATED { + sf200, sf500, sf1000, sf2000, + spare4, spare3, spare2, spare1} + } OPTIONAL, -- Need OR + ... +} + +ObtainLocationConfig-r11 ::= SEQUENCE { + obtainLocation-r11 ENUMERATED {setup} OPTIONAL -- Need OR +} + +PowerPrefIndicationConfig-r11 ::= CHOICE{ + release NULL, + setup SEQUENCE{ + powerPrefIndicationTimer-r11 ENUMERATED {s0, s0dot5, s1, s2, s5, s10, s20, + s30, s60, s90, s120, s300, s600, spare3, + spare2, spare1} + } +} + +ReportProximityConfig-r9 ::= SEQUENCE { + proximityIndicationEUTRA-r9 ENUMERATED {enabled} OPTIONAL, -- Need OR + proximityIndicationUTRA-r9 ENUMERATED {enabled} OPTIONAL -- Need OR +} + + +RAND-CDMA2000 ::= BIT STRING (SIZE (32)) + + +RAT-Type ::= ENUMERATED { + eutra, utra, geran-cs, geran-ps, cdma2000-1XRTT, + spare3, spare2, spare1, ...} + + +RRC-TransactionIdentifier ::= INTEGER (0..3) + + +S-TMSI ::= SEQUENCE { + mmec MMEC, + m-TMSI BIT STRING (SIZE (32)) +} + + +TraceReference-r10 ::= SEQUENCE { + plmn-Identity-r10 PLMN-Identity, + traceId-r10 OCTET STRING (SIZE (3)) +} + + +UE-CapabilityRAT-ContainerList ::=SEQUENCE (SIZE (0..maxRAT-Capabilities)) OF UE-CapabilityRAT-Container + +UE-CapabilityRAT-Container ::= SEQUENCE { + rat-Type RAT-Type, + ueCapabilityRAT-Container OCTET STRING +} + + +UE-EUTRA-Capability ::= SEQUENCE { + accessStratumRelease AccessStratumRelease, + ue-Category INTEGER (1..5), + pdcp-Parameters PDCP-Parameters, + phyLayerParameters PhyLayerParameters, + rf-Parameters RF-Parameters, + measParameters MeasParameters, + featureGroupIndicators BIT STRING (SIZE (32)) OPTIONAL, + interRAT-Parameters SEQUENCE { + utraFDD IRAT-ParametersUTRA-FDD OPTIONAL, + utraTDD128 IRAT-ParametersUTRA-TDD128 OPTIONAL, + utraTDD384 IRAT-ParametersUTRA-TDD384 OPTIONAL, + utraTDD768 IRAT-ParametersUTRA-TDD768 OPTIONAL, + geran IRAT-ParametersGERAN OPTIONAL, + cdma2000-HRPD IRAT-ParametersCDMA2000-HRPD OPTIONAL, + cdma2000-1xRTT IRAT-ParametersCDMA2000-1XRTT OPTIONAL + }, + nonCriticalExtension UE-EUTRA-Capability-v920-IEs OPTIONAL +} + +-- Late non critical extensions +UE-EUTRA-Capability-v9a0-IEs ::= SEQUENCE { + featureGroupIndRel9Add-r9 BIT STRING (SIZE (32)) OPTIONAL, + fdd-Add-UE-EUTRA-Capabilities-r9 UE-EUTRA-CapabilityAddXDD-Mode-r9 OPTIONAL, + tdd-Add-UE-EUTRA-Capabilities-r9 UE-EUTRA-CapabilityAddXDD-Mode-r9 OPTIONAL, + nonCriticalExtension UE-EUTRA-Capability-v9c0-IEs OPTIONAL +} + +UE-EUTRA-Capability-v9c0-IEs ::= SEQUENCE { + interRAT-ParametersUTRA-v9c0 IRAT-ParametersUTRA-v9c0 OPTIONAL, + nonCriticalExtension UE-EUTRA-Capability-v9d0-IEs OPTIONAL +} + +UE-EUTRA-Capability-v9d0-IEs ::= SEQUENCE { + phyLayerParameters-v9d0 PhyLayerParameters-v9d0 OPTIONAL, + nonCriticalExtension UE-EUTRA-Capability-v9e0-IEs OPTIONAL +} + +UE-EUTRA-Capability-v9e0-IEs ::= SEQUENCE { + rf-Parameters-v9e0 RF-Parameters-v9e0 OPTIONAL, + nonCriticalExtension UE-EUTRA-Capability-v9h0-IEs OPTIONAL +} + +UE-EUTRA-Capability-v9h0-IEs ::= SEQUENCE { + interRAT-ParametersUTRA-v9h0 IRAT-ParametersUTRA-v9h0 OPTIONAL, + -- Following field is only to be used for late REL-9 extensions + lateNonCriticalExtension OCTET STRING OPTIONAL, + nonCriticalExtension UE-EUTRA-Capability-v10c0-IEs OPTIONAL +} + +UE-EUTRA-Capability-v10c0-IEs ::= SEQUENCE { + otdoa-PositioningCapabilities-r10 OTDOA-PositioningCapabilities-r10 OPTIONAL, + --Following field is only to be used for late extensions from REL-10 + nonCriticalExtension SEQUENCE {} OPTIONAL +} + +-- Regular non critical extensions +UE-EUTRA-Capability-v920-IEs ::= SEQUENCE { + phyLayerParameters-v920 PhyLayerParameters-v920, + interRAT-ParametersGERAN-v920 IRAT-ParametersGERAN-v920, + interRAT-ParametersUTRA-v920 IRAT-ParametersUTRA-v920 OPTIONAL, + interRAT-ParametersCDMA2000-v920 IRAT-ParametersCDMA2000-1XRTT-v920 OPTIONAL, + deviceType-r9 ENUMERATED {noBenFromBatConsumpOpt} OPTIONAL, + csg-ProximityIndicationParameters-r9 CSG-ProximityIndicationParameters-r9, + neighCellSI-AcquisitionParameters-r9 NeighCellSI-AcquisitionParameters-r9, + son-Parameters-r9 SON-Parameters-r9, + nonCriticalExtension UE-EUTRA-Capability-v940-IEs OPTIONAL +} + +UE-EUTRA-Capability-v940-IEs ::= SEQUENCE { + lateNonCriticalExtension OCTET STRING (CONTAINING UE-EUTRA-Capability-v9a0-IEs) + OPTIONAL, + nonCriticalExtension UE-EUTRA-Capability-v1020-IEs OPTIONAL +} + +UE-EUTRA-Capability-v1020-IEs ::= SEQUENCE { + ue-Category-v1020 INTEGER (6..8) OPTIONAL, + phyLayerParameters-v1020 PhyLayerParameters-v1020 OPTIONAL, + rf-Parameters-v1020 RF-Parameters-v1020 OPTIONAL, + measParameters-v1020 MeasParameters-v1020 OPTIONAL, + featureGroupIndRel10-r10 BIT STRING (SIZE (32)) OPTIONAL, + interRAT-ParametersCDMA2000-v1020 IRAT-ParametersCDMA2000-1XRTT-v1020 OPTIONAL, + ue-BasedNetwPerfMeasParameters-r10 UE-BasedNetwPerfMeasParameters-r10 OPTIONAL, + interRAT-ParametersUTRA-TDD-v1020 IRAT-ParametersUTRA-TDD-v1020 OPTIONAL, + nonCriticalExtension UE-EUTRA-Capability-v1060-IEs OPTIONAL +} + +UE-EUTRA-Capability-v1060-IEs ::= SEQUENCE { + fdd-Add-UE-EUTRA-Capabilities-v1060 UE-EUTRA-CapabilityAddXDD-Mode-v1060 OPTIONAL, + tdd-Add-UE-EUTRA-Capabilities-v1060 UE-EUTRA-CapabilityAddXDD-Mode-v1060 OPTIONAL, + rf-Parameters-v1060 RF-Parameters-v1060 OPTIONAL, + nonCriticalExtension UE-EUTRA-Capability-v1090-IEs OPTIONAL +} + +UE-EUTRA-Capability-v1090-IEs ::= SEQUENCE { + rf-Parameters-v1090 RF-Parameters-v1090 OPTIONAL, + nonCriticalExtension UE-EUTRA-Capability-v1130-IEs OPTIONAL +} + +UE-EUTRA-Capability-v1130-IEs ::= SEQUENCE { + pdcp-Parameters-v1130 PDCP-Parameters-v1130, + phyLayerParameters-v1130 PhyLayerParameters-v1130 OPTIONAL, + rf-Parameters-v1130 RF-Parameters-v1130, + measParameters-v1130 MeasParameters-v1130, + interRAT-ParametersCDMA2000-v1130 IRAT-ParametersCDMA2000-v1130, + otherParameters-r11 Other-Parameters-r11, + fdd-Add-UE-EUTRA-Capabilities-v1130 UE-EUTRA-CapabilityAddXDD-Mode-v1130 OPTIONAL, + tdd-Add-UE-EUTRA-Capabilities-v1130 UE-EUTRA-CapabilityAddXDD-Mode-v1130 OPTIONAL, + nonCriticalExtension UE-EUTRA-Capability-v1170-IEs OPTIONAL +} + +UE-EUTRA-Capability-v1170-IEs ::= SEQUENCE { + phyLayerParameters-v1170 PhyLayerParameters-v1170 OPTIONAL, + ue-Category-v1170 INTEGER (9..10) OPTIONAL, + nonCriticalExtension SEQUENCE {} OPTIONAL +} + +UE-EUTRA-CapabilityAddXDD-Mode-r9 ::= SEQUENCE { + phyLayerParameters-r9 PhyLayerParameters OPTIONAL, + featureGroupIndicators-r9 BIT STRING (SIZE (32)) OPTIONAL, + featureGroupIndRel9Add-r9 BIT STRING (SIZE (32)) OPTIONAL, + interRAT-ParametersGERAN-r9 IRAT-ParametersGERAN OPTIONAL, + interRAT-ParametersUTRA-r9 IRAT-ParametersUTRA-v920 OPTIONAL, + interRAT-ParametersCDMA2000-r9 IRAT-ParametersCDMA2000-1XRTT-v920 OPTIONAL, + neighCellSI-AcquisitionParameters-r9 NeighCellSI-AcquisitionParameters-r9 OPTIONAL, + ... +} + +UE-EUTRA-CapabilityAddXDD-Mode-v1060 ::= SEQUENCE { + phyLayerParameters-v1060 PhyLayerParameters-v1020 OPTIONAL, + featureGroupIndRel10-v1060 BIT STRING (SIZE (32)) OPTIONAL, + interRAT-ParametersCDMA2000-v1060 IRAT-ParametersCDMA2000-1XRTT-v1020 OPTIONAL, + interRAT-ParametersUTRA-TDD-v1060 IRAT-ParametersUTRA-TDD-v1020 OPTIONAL, + ..., + [[ otdoa-PositioningCapabilities-r10 OTDOA-PositioningCapabilities-r10 OPTIONAL + ]] +} + +UE-EUTRA-CapabilityAddXDD-Mode-v1130 ::= SEQUENCE { + phyLayerParameters-v1130 PhyLayerParameters-v1130 OPTIONAL, + measParameters-v1130 MeasParameters-v1130 OPTIONAL, + otherParameters-r11 Other-Parameters-r11 OPTIONAL, + ... +} + +AccessStratumRelease ::= ENUMERATED { + rel8, rel9, rel10, rel11, spare4, spare3, + spare2, spare1, ...} + +PDCP-Parameters ::= SEQUENCE { + supportedROHC-Profiles SEQUENCE { + profile0x0001 BOOLEAN, + profile0x0002 BOOLEAN, + profile0x0003 BOOLEAN, + profile0x0004 BOOLEAN, + profile0x0006 BOOLEAN, + profile0x0101 BOOLEAN, + profile0x0102 BOOLEAN, + profile0x0103 BOOLEAN, + profile0x0104 BOOLEAN + }, + maxNumberROHC-ContextSessions ENUMERATED { + cs2, cs4, cs8, cs12, cs16, cs24, cs32, + cs48, cs64, cs128, cs256, cs512, cs1024, + cs16384, spare2, spare1} DEFAULT cs16, + ... +} + +PDCP-Parameters-v1130 ::= SEQUENCE { + pdcp-SN-Extension-r11 ENUMERATED {supported} OPTIONAL, + supportRohcContextContinue-r11 ENUMERATED {supported} OPTIONAL +} + +PhyLayerParameters ::= SEQUENCE { + ue-TxAntennaSelectionSupported BOOLEAN, + ue-SpecificRefSigsSupported BOOLEAN +} + +PhyLayerParameters-v920 ::= SEQUENCE { + enhancedDualLayerFDD-r9 ENUMERATED {supported} OPTIONAL, + enhancedDualLayerTDD-r9 ENUMERATED {supported} OPTIONAL +} + +PhyLayerParameters-v9d0 ::= SEQUENCE { + tm5-FDD-r9 ENUMERATED {supported} OPTIONAL, + tm5-TDD-r9 ENUMERATED {supported} OPTIONAL +} + +PhyLayerParameters-v1020 ::= SEQUENCE { + twoAntennaPortsForPUCCH-r10 ENUMERATED {supported} OPTIONAL, + tm9-With-8Tx-FDD-r10 ENUMERATED {supported} OPTIONAL, + pmi-Disabling-r10 ENUMERATED {supported} OPTIONAL, + crossCarrierScheduling-r10 ENUMERATED {supported} OPTIONAL, + simultaneousPUCCH-PUSCH-r10 ENUMERATED {supported} OPTIONAL, + multiClusterPUSCH-WithinCC-r10 ENUMERATED {supported} OPTIONAL, + nonContiguousUL-RA-WithinCC-List-r10 NonContiguousUL-RA-WithinCC-List-r10 OPTIONAL +} + +PhyLayerParameters-v1130 ::= SEQUENCE { + crs-InterfHandl-r11 ENUMERATED {supported} OPTIONAL, + ePDCCH-r11 ENUMERATED {supported} OPTIONAL, + multiACK-CSI-Reporting-r11 ENUMERATED {supported} OPTIONAL, + ss-CCH-InterfHandl-r11 ENUMERATED {supported} OPTIONAL, + tdd-SpecialSubframe-r11 ENUMERATED {supported} OPTIONAL, + txDiv-PUCCH1b-ChSelect-r11 ENUMERATED {supported} OPTIONAL, + ul-CoMP-r11 ENUMERATED {supported} OPTIONAL +} + +PhyLayerParameters-v1170 ::= SEQUENCE { + interBandTDD-CA-WithDifferentConfig-r11 BIT STRING (SIZE (2)) OPTIONAL +} + +NonContiguousUL-RA-WithinCC-List-r10 ::= SEQUENCE (SIZE (1..maxBands)) OF NonContiguousUL-RA-WithinCC-r10 + +NonContiguousUL-RA-WithinCC-r10 ::= SEQUENCE { + nonContiguousUL-RA-WithinCC-Info-r10 ENUMERATED {supported} OPTIONAL +} + +RF-Parameters ::= SEQUENCE { + supportedBandListEUTRA SupportedBandListEUTRA +} + +RF-Parameters-v9e0 ::= SEQUENCE { + supportedBandListEUTRA-v9e0 SupportedBandListEUTRA-v9e0 OPTIONAL +} + +RF-Parameters-v1020 ::= SEQUENCE { + supportedBandCombination-r10 SupportedBandCombination-r10 +} + +RF-Parameters-v1060 ::= SEQUENCE { + supportedBandCombinationExt-r10 SupportedBandCombinationExt-r10 +} + +RF-Parameters-v1090 ::= SEQUENCE { + supportedBandCombination-v1090 SupportedBandCombination-v1090 OPTIONAL +} + +RF-Parameters-v1130 ::= SEQUENCE { + supportedBandCombination-v1130 SupportedBandCombination-v1130 OPTIONAL +} + +SupportedBandCombination-r10 ::= SEQUENCE (SIZE (1..maxBandComb-r10)) OF BandCombinationParameters-r10 + +SupportedBandCombinationExt-r10 ::= SEQUENCE (SIZE (1..maxBandComb-r10)) OF BandCombinationParametersExt-r10 + +SupportedBandCombination-v1090 ::= SEQUENCE (SIZE (1..maxBandComb-r10)) OF BandCombinationParameters-v1090 + +SupportedBandCombination-v1130 ::= SEQUENCE (SIZE (1..maxBandComb-r10)) OF BandCombinationParameters-v1130 + +BandCombinationParameters-r10 ::= SEQUENCE (SIZE (1..maxSimultaneousBands-r10)) OF BandParameters-r10 + +BandCombinationParametersExt-r10 ::= SEQUENCE { + supportedBandwidthCombinationSet-r10 SupportedBandwidthCombinationSet-r10 OPTIONAL +} + +BandCombinationParameters-v1090 ::= SEQUENCE (SIZE (1..maxSimultaneousBands-r10)) OF BandParameters-v1090 + +BandCombinationParameters-v1130 ::= SEQUENCE { + multipleTimingAdvance-r11 ENUMERATED {supported} OPTIONAL, + simultaneousRx-Tx-r11 ENUMERATED {supported} OPTIONAL, + bandParameterList-r11 SEQUENCE (SIZE (1..maxSimultaneousBands-r10)) OF BandParameters-v1130 OPTIONAL, + ... +} + +SupportedBandwidthCombinationSet-r10 ::= BIT STRING (SIZE (1..maxBandwidthCombSet-r10)) + +BandParameters-r10 ::= SEQUENCE { + bandEUTRA-r10 FreqBandIndicator, + bandParametersUL-r10 BandParametersUL-r10 OPTIONAL, + bandParametersDL-r10 BandParametersDL-r10 OPTIONAL +} + +BandParameters-v1090 ::= SEQUENCE { + bandEUTRA-v1090 FreqBandIndicator-v9e0 OPTIONAL, + ... +} + +BandParameters-v1130 ::= SEQUENCE { + supportedCSI-Proc-r11 ENUMERATED {n1, n3, n4} +} + +BandParametersUL-r10 ::= SEQUENCE (SIZE (1..maxBandwidthClass-r10)) OF CA-MIMO-ParametersUL-r10 + +CA-MIMO-ParametersUL-r10 ::= SEQUENCE { + ca-BandwidthClassUL-r10 CA-BandwidthClass-r10, + supportedMIMO-CapabilityUL-r10 MIMO-CapabilityUL-r10 OPTIONAL +} + +BandParametersDL-r10 ::= SEQUENCE (SIZE (1..maxBandwidthClass-r10)) OF CA-MIMO-ParametersDL-r10 + +CA-MIMO-ParametersDL-r10 ::= SEQUENCE { + ca-BandwidthClassDL-r10 CA-BandwidthClass-r10, + supportedMIMO-CapabilityDL-r10 MIMO-CapabilityDL-r10 OPTIONAL +} + +CA-BandwidthClass-r10 ::= ENUMERATED {a, b, c, d, e, f, ...} + +MIMO-CapabilityUL-r10 ::= ENUMERATED {twoLayers, fourLayers} + +MIMO-CapabilityDL-r10 ::= ENUMERATED {twoLayers, fourLayers, eightLayers} + +SupportedBandListEUTRA ::= SEQUENCE (SIZE (1..maxBands)) OF SupportedBandEUTRA + +SupportedBandListEUTRA-v9e0::= SEQUENCE (SIZE (1..maxBands)) OF SupportedBandEUTRA-v9e0 + +SupportedBandEUTRA ::= SEQUENCE { + bandEUTRA FreqBandIndicator, + halfDuplex BOOLEAN +} + +SupportedBandEUTRA-v9e0 ::= SEQUENCE { + bandEUTRA-v9e0 FreqBandIndicator-v9e0 OPTIONAL +} + +MeasParameters ::= SEQUENCE { + bandListEUTRA BandListEUTRA +} + +MeasParameters-v1020 ::= SEQUENCE { + bandCombinationListEUTRA-r10 BandCombinationListEUTRA-r10 +} + +MeasParameters-v1130 ::= SEQUENCE { + rsrqMeasWideband-r11 ENUMERATED {supported} OPTIONAL +} + +BandListEUTRA ::= SEQUENCE (SIZE (1..maxBands)) OF BandInfoEUTRA + +BandCombinationListEUTRA-r10 ::= SEQUENCE (SIZE (1..maxBandComb-r10)) OF BandInfoEUTRA + +BandInfoEUTRA ::= SEQUENCE { + interFreqBandList InterFreqBandList, + interRAT-BandList InterRAT-BandList OPTIONAL +} + +InterFreqBandList ::= SEQUENCE (SIZE (1..maxBands)) OF InterFreqBandInfo + +InterFreqBandInfo ::= SEQUENCE { + interFreqNeedForGaps BOOLEAN +} + +InterRAT-BandList ::= SEQUENCE (SIZE (1..maxBands)) OF InterRAT-BandInfo + +InterRAT-BandInfo ::= SEQUENCE { + interRAT-NeedForGaps BOOLEAN +} + +IRAT-ParametersUTRA-FDD ::= SEQUENCE { + supportedBandListUTRA-FDD SupportedBandListUTRA-FDD +} + +IRAT-ParametersUTRA-v920 ::= SEQUENCE { + e-RedirectionUTRA-r9 ENUMERATED {supported} +} + +IRAT-ParametersUTRA-v9c0 ::= SEQUENCE { + voiceOverPS-HS-UTRA-FDD-r9 ENUMERATED {supported} OPTIONAL, + voiceOverPS-HS-UTRA-TDD128-r9 ENUMERATED {supported} OPTIONAL, + srvcc-FromUTRA-FDD-ToUTRA-FDD-r9 ENUMERATED {supported} OPTIONAL, + srvcc-FromUTRA-FDD-ToGERAN-r9 ENUMERATED {supported} OPTIONAL, + srvcc-FromUTRA-TDD128-ToUTRA-TDD128-r9 ENUMERATED {supported} OPTIONAL, + srvcc-FromUTRA-TDD128-ToGERAN-r9 ENUMERATED {supported} OPTIONAL +} + +IRAT-ParametersUTRA-v9h0 ::= SEQUENCE { + mfbi-UTRA-r9 ENUMERATED {supported} +} + +SupportedBandListUTRA-FDD ::= SEQUENCE (SIZE (1..maxBands)) OF SupportedBandUTRA-FDD + +SupportedBandUTRA-FDD ::= ENUMERATED { + bandI, bandII, bandIII, bandIV, bandV, bandVI, + bandVII, bandVIII, bandIX, bandX, bandXI, + bandXII, bandXIII, bandXIV, bandXV, bandXVI, ..., + bandXVII-8a0, bandXVIII-8a0, bandXIX-8a0, bandXX-8a0, + bandXXI-8a0, bandXXII-8a0, bandXXIII-8a0, bandXXIV-8a0, + bandXXV-8a0, bandXXVI-8a0, bandXXVII-8a0, bandXXVIII-8a0, + bandXXIX-8a0, bandXXX-8a0, bandXXXI-8a0, bandXXXII-8a0} + +IRAT-ParametersUTRA-TDD128 ::= SEQUENCE { + supportedBandListUTRA-TDD128 SupportedBandListUTRA-TDD128 +} + +SupportedBandListUTRA-TDD128 ::= SEQUENCE (SIZE (1..maxBands)) OF SupportedBandUTRA-TDD128 + +SupportedBandUTRA-TDD128 ::= ENUMERATED { + a, b, c, d, e, f, g, h, i, j, k, l, m, n, + o, p, ...} + +IRAT-ParametersUTRA-TDD384 ::= SEQUENCE { + supportedBandListUTRA-TDD384 SupportedBandListUTRA-TDD384 +} + +SupportedBandListUTRA-TDD384 ::= SEQUENCE (SIZE (1..maxBands)) OF SupportedBandUTRA-TDD384 + +SupportedBandUTRA-TDD384 ::= ENUMERATED { + a, b, c, d, e, f, g, h, i, j, k, l, m, n, + o, p, ...} + +IRAT-ParametersUTRA-TDD768 ::= SEQUENCE { + supportedBandListUTRA-TDD768 SupportedBandListUTRA-TDD768 +} + +SupportedBandListUTRA-TDD768 ::= SEQUENCE (SIZE (1..maxBands)) OF SupportedBandUTRA-TDD768 + +SupportedBandUTRA-TDD768 ::= ENUMERATED { + a, b, c, d, e, f, g, h, i, j, k, l, m, n, + o, p, ...} + +IRAT-ParametersUTRA-TDD-v1020 ::= SEQUENCE { + e-RedirectionUTRA-TDD-r10 ENUMERATED {supported} +} + +IRAT-ParametersGERAN ::= SEQUENCE { + supportedBandListGERAN SupportedBandListGERAN, + interRAT-PS-HO-ToGERAN BOOLEAN +} + +IRAT-ParametersGERAN-v920 ::= SEQUENCE { + dtm-r9 ENUMERATED {supported} OPTIONAL, + e-RedirectionGERAN-r9 ENUMERATED {supported} OPTIONAL +} + +SupportedBandListGERAN ::= SEQUENCE (SIZE (1..maxBands)) OF SupportedBandGERAN + +SupportedBandGERAN ::= ENUMERATED { + gsm450, gsm480, gsm710, gsm750, gsm810, gsm850, + gsm900P, gsm900E, gsm900R, gsm1800, gsm1900, + spare5, spare4, spare3, spare2, spare1, ...} + +IRAT-ParametersCDMA2000-HRPD ::= SEQUENCE { + supportedBandListHRPD SupportedBandListHRPD, + tx-ConfigHRPD ENUMERATED {single, dual}, + rx-ConfigHRPD ENUMERATED {single, dual} +} + +SupportedBandListHRPD ::= SEQUENCE (SIZE (1..maxCDMA-BandClass)) OF BandclassCDMA2000 + +IRAT-ParametersCDMA2000-1XRTT ::= SEQUENCE { + supportedBandList1XRTT SupportedBandList1XRTT, + tx-Config1XRTT ENUMERATED {single, dual}, + rx-Config1XRTT ENUMERATED {single, dual} +} + +IRAT-ParametersCDMA2000-1XRTT-v920 ::= SEQUENCE { + e-CSFB-1XRTT-r9 ENUMERATED {supported}, + e-CSFB-ConcPS-Mob1XRTT-r9 ENUMERATED {supported} OPTIONAL +} + +IRAT-ParametersCDMA2000-1XRTT-v1020 ::= SEQUENCE { + e-CSFB-dual-1XRTT-r10 ENUMERATED {supported} +} + +IRAT-ParametersCDMA2000-v1130 ::= SEQUENCE { + cdma2000-NW-Sharing-r11 ENUMERATED {supported} OPTIONAL +} + +SupportedBandList1XRTT ::= SEQUENCE (SIZE (1..maxCDMA-BandClass)) OF BandclassCDMA2000 + +CSG-ProximityIndicationParameters-r9 ::= SEQUENCE { + intraFreqProximityIndication-r9 ENUMERATED {supported} OPTIONAL, + interFreqProximityIndication-r9 ENUMERATED {supported} OPTIONAL, + utran-ProximityIndication-r9 ENUMERATED {supported} OPTIONAL +} + +NeighCellSI-AcquisitionParameters-r9 ::= SEQUENCE { + intraFreqSI-AcquisitionForHO-r9 ENUMERATED {supported} OPTIONAL, + interFreqSI-AcquisitionForHO-r9 ENUMERATED {supported} OPTIONAL, + utran-SI-AcquisitionForHO-r9 ENUMERATED {supported} OPTIONAL +} + +SON-Parameters-r9 ::= SEQUENCE { + rach-Report-r9 ENUMERATED {supported} OPTIONAL +} + +UE-BasedNetwPerfMeasParameters-r10 ::= SEQUENCE { + loggedMeasurementsIdle-r10 ENUMERATED {supported} OPTIONAL, + standaloneGNSS-Location-r10 ENUMERATED {supported} OPTIONAL +} + +OTDOA-PositioningCapabilities-r10 ::= SEQUENCE { + otdoa-UE-Assisted-r10 ENUMERATED {supported}, + interFreqRSTD-Measurement-r10 ENUMERATED {supported} OPTIONAL +} + +Other-Parameters-r11 ::= SEQUENCE { + inDeviceCoexInd-r11 ENUMERATED {supported} OPTIONAL, + powerPrefInd-r11 ENUMERATED {supported} OPTIONAL, + ue-Rx-TxTimeDiffMeasurements-r11 ENUMERATED {supported} OPTIONAL +} + + +UE-TimersAndConstants ::= SEQUENCE { + t300 ENUMERATED { + ms100, ms200, ms300, ms400, ms600, ms1000, ms1500, + ms2000}, + t301 ENUMERATED { + ms100, ms200, ms300, ms400, ms600, ms1000, ms1500, + ms2000}, + t310 ENUMERATED { + ms0, ms50, ms100, ms200, ms500, ms1000, ms2000}, + n310 ENUMERATED { + n1, n2, n3, n4, n6, n8, n10, n20}, + t311 ENUMERATED { + ms1000, ms3000, ms5000, ms10000, ms15000, + ms20000, ms30000}, + n311 ENUMERATED { + n1, n2, n3, n4, n5, n6, n8, n10}, + ... +} + + +MBMS-NotificationConfig-r9 ::= SEQUENCE { + notificationRepetitionCoeff-r9 ENUMERATED {n2, n4}, + notificationOffset-r9 INTEGER (0..10), + notificationSF-Index-r9 INTEGER (1..6) +} + + +MBSFN-AreaInfoList-r9 ::= SEQUENCE (SIZE(1..maxMBSFN-Area)) OF MBSFN-AreaInfo-r9 + +MBSFN-AreaInfo-r9 ::= SEQUENCE { + mbsfn-AreaId-r9 INTEGER (0..255), + non-MBSFNregionLength ENUMERATED {s1, s2}, + notificationIndicator-r9 INTEGER (0..7), + mcch-Config-r9 SEQUENCE { + mcch-RepetitionPeriod-r9 ENUMERATED {rf32, rf64, rf128, rf256}, + mcch-Offset-r9 INTEGER (0..10), + mcch-ModificationPeriod-r9 ENUMERATED {rf512, rf1024}, + sf-AllocInfo-r9 BIT STRING (SIZE(6)), + signallingMCS-r9 ENUMERATED {n2, n7, n13, n19} + }, + ... +} + + +MBSFN-SubframeConfig ::= SEQUENCE { + radioframeAllocationPeriod ENUMERATED {n1, n2, n4, n8, n16, n32}, + radioframeAllocationOffset INTEGER (0..7), + subframeAllocation CHOICE { + oneFrame BIT STRING (SIZE(6)), + fourFrames BIT STRING (SIZE(24)) + } +} + +PMCH-InfoList-r9 ::= SEQUENCE (SIZE (0..maxPMCH-PerMBSFN)) OF PMCH-Info-r9 + +PMCH-Info-r9 ::= SEQUENCE { + pmch-Config-r9 PMCH-Config-r9, + mbms-SessionInfoList-r9 MBMS-SessionInfoList-r9, + ... +} + +MBMS-SessionInfoList-r9 ::= SEQUENCE (SIZE (0..maxSessionPerPMCH)) OF MBMS-SessionInfo-r9 + +MBMS-SessionInfo-r9 ::= SEQUENCE { + tmgi-r9 TMGI-r9, + sessionId-r9 OCTET STRING (SIZE (1)) OPTIONAL, -- Need OR + logicalChannelIdentity-r9 INTEGER (0..maxSessionPerPMCH-1), + ... +} + +PMCH-Config-r9 ::= SEQUENCE { + sf-AllocEnd-r9 INTEGER (0..1535), + dataMCS-r9 INTEGER (0..28), + mch-SchedulingPeriod-r9 ENUMERATED { + rf8, rf16, rf32, rf64, rf128, rf256, rf512, rf1024}, + ... +} + +TMGI-r9 ::= SEQUENCE { + plmn-Id-r9 CHOICE { + plmn-Index-r9 INTEGER (1..maxPLMN-r11), + explicitValue-r9 PLMN-Identity + }, + serviceId-r9 OCTET STRING (SIZE (3)) +} + + +maxBandComb-r10 INTEGER ::= 128 -- Maximum number of band combinations. +maxBands INTEGER ::= 64 -- Maximum number of bands listed in EUTRA UE caps +maxBandwidthClass-r10 INTEGER ::= 16 -- Maximum number of supported CA BW classes per band +maxBandwidthCombSet-r10 INTEGER ::= 32 -- Maximum number of bandwidth combination sets per + -- supported band combination +maxCDMA-BandClass INTEGER ::= 32 -- Maximum value of the CDMA band classes +maxCellBlack INTEGER ::= 16 -- Maximum number of blacklisted physical cell identity + -- ranges listed in SIB type 4 and 5 +maxCellInfoGERAN-r9 INTEGER ::= 32 -- Maximum number of GERAN cells for which system in- + -- formation can be provided as redirection assistance +maxCellInfoUTRA-r9 INTEGER ::= 16 -- Maximum number of UTRA cells for which system + -- information can be provided as redirection + -- assistance +maxCSI-IM-r11 INTEGER ::= 3 -- Maximum number of CSI-IM configurations + -- (per carrier frequency) +maxCSI-Proc-r11 INTEGER ::= 4 -- Maximum number of CSI RS processes (per carrier + -- frequency) +maxCSI-RS-NZP-r11 INTEGER ::= 3 -- Maximum number of CSI RS resource + -- configurations using non-zero Tx power + -- (per carrier frequency) +maxCSI-RS-ZP-r11 INTEGER ::= 4 -- Maximum number of CSI RS resource + -- configurations using zero Tx power(per carrier + -- frequency) +maxCQI-ProcExt-r11 INTEGER ::= 3 -- Maximum number of additional periodic CQI + -- configurations (per carrier frequency) +maxFreqUTRA-TDD-r10 INTEGER ::= 6 -- Maximum number of UTRA TDD carrier frequencies for + -- which system information can be provided as + -- redirection assistance +maxCellInter INTEGER ::= 16 -- Maximum number of neighbouring inter-frequency + -- cells listed in SIB type 5 +maxCellIntra INTEGER ::= 16 -- Maximum number of neighbouring intra-frequency + -- cells listed in SIB type 4 +maxCellListGERAN INTEGER ::= 3 -- Maximum number of lists of GERAN cells +maxCellMeas INTEGER ::= 32 -- Maximum number of entries in each of the + -- cell lists in a measurement object +maxCellReport INTEGER ::= 8 -- Maximum number of reported cells +maxDRB INTEGER ::= 11 -- Maximum number of Data Radio Bearers +maxEARFCN INTEGER ::= 65535 -- Maximum value of EUTRA carrier frequency +maxEARFCN-Plus1 INTEGER ::= 65536 -- Lowest value extended EARFCN range +maxEARFCN2 INTEGER ::= 262143 -- Highest value extended EARFCN range +maxEPDCCH-Set-r11 INTEGER ::= 2 -- Maximum number of EPDCCH sets +maxFBI INTEGER ::= 64 -- Maximum value of fequency band indicator +maxFBI-Plus1 INTEGER ::= 65 -- Lowest value extended FBI range +maxFBI2 INTEGER ::= 256 -- Highest value extended FBI range +maxFreq INTEGER ::= 8 -- Maximum number of carrier frequencies +maxFreqIDC-r11 INTEGER ::= 32 -- Maximum number of carrier frequencies that are + -- affected by the IDC problems +maxFreqMBMS-r11 INTEGER ::= 5 -- Maximum number of carrier frequencies for which an + -- MBMS capable UE may indicate an interest +maxGERAN-SI INTEGER ::= 10 -- Maximum number of GERAN SI blocks that can be + -- provided as part of NACC information +maxGNFG INTEGER ::= 16 -- Maximum number of GERAN neighbour freq groups +maxLogMeasReport-r10 INTEGER ::= 520 -- Maximum number of logged measurement entries + -- that can be reported by the UE in one message +maxMBSFN-Allocations INTEGER ::= 8 -- Maximum number of MBSFN frame allocations with + -- different offset +maxMBSFN-Area INTEGER ::= 8 +maxMBSFN-Area-1 INTEGER ::= 7 +maxMeasId INTEGER ::= 32 +maxMultiBands INTEGER ::= 8 -- Maximum number of additional frequency bands + -- that a cell belongs to +maxObjectId INTEGER ::= 32 +maxPageRec INTEGER ::= 16 -- +maxPhysCellIdRange-r9 INTEGER ::= 4 -- Maximum number of physical cell identity ranges +maxPLMN-r11 INTEGER ::= 6 -- Maximum number of PLMNs +maxPNOffset INTEGER ::= 511 -- Maximum number of CDMA2000 PNOffsets +maxPMCH-PerMBSFN INTEGER ::= 15 +maxRAT-Capabilities INTEGER ::= 8 -- Maximum number of interworking RATs (incl EUTRA) +maxRE-MapQCL-r11 INTEGER ::= 4 -- Maximum number of PDSCH RE Mapping configurations + -- (per carrier frequency) +maxReportConfigId INTEGER ::= 32 +maxRSTD-Freq-r10 INTEGER ::= 3 -- Maximum number of frequency layers for RSTD + -- measurement +maxSAI-MBMS-r11 INTEGER ::= 64 -- Maximum number of MBMS service area identities + -- broadcast per carrier frequency +maxSCell-r10 INTEGER ::= 4 -- Maximum number of SCells +maxSTAG-r11 INTEGER ::= 3 -- Maximum number of STAGs +maxServCell-r10 INTEGER ::= 5 -- Maximum number of Serving cells +maxServiceCount INTEGER ::= 16 -- Maximum number of MBMS services that can be included + -- in an MBMS counting request and response +maxServiceCount-1 INTEGER ::= 15 +maxSessionPerPMCH INTEGER ::= 29 +maxSessionPerPMCH-1 INTEGER ::= 28 +maxSIB INTEGER ::= 32 -- Maximum number of SIBs +maxSIB-1 INTEGER ::= 31 +maxSI-Message INTEGER ::= 32 -- Maximum number of SI messages +maxSimultaneousBands-r10 INTEGER ::= 64 -- Maximum number of simultaneously aggregated bands +maxSubframePatternIDC-r11 INTEGER ::= 8 -- Maximum number of subframe reservation patterns + -- that the UE can simultaneously recommend to the + -- E-UTRAN for use. +maxUTRA-FDD-Carrier INTEGER ::= 16 -- Maximum number of UTRA FDD carrier frequencies +maxUTRA-TDD-Carrier INTEGER ::= 16 -- Maximum number of UTRA TDD carrier frequencies + + +END diff --git a/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_SecurityDefinitionsAndExternalFunctions.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_SecurityDefinitionsAndExternalFunctions.ttcn new file mode 100644 index 0000000..5be3edb --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA_Defs/EUTRA_SecurityDefinitionsAndExternalFunctions.ttcn @@ -0,0 +1,99 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-10-23 11:47:20 +0200 (Wed, 23 Oct 2013) $ +// $Rev: 9858 $ +/******************************************************************************/ + +module EUTRA_SecurityDefinitionsAndExternalFunctions { + + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from EPS_NAS_TypeDefs all; + + const integer tsc_DirectionUL := 0; /* acc. to 33.401 B.1.1 and B.2.1 @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + const integer tsc_DirectionDL := 1; /* acc. to 33.401 B.1.1 and B.2.1 @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + type integer MAC_Direction_Type (tsc_DirectionDL, tsc_DirectionUL); /* direction bit for calculation of MAC acc. to 24.301 cl. 9.5 @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + + const integer tsc_KDF_HMAC_SHA_256 := 1; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + const integer tsc_KDF_Spare1 := 2; + const integer tsc_KDF_Spare2 := 3; + const integer tsc_KDF_Spare3 := 4; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + + type integer KDF_Type ( tsc_KDF_HMAC_SHA_256 .. tsc_KDF_Spare3 ); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + + //============================================================================ + /* + * @desc increment COUNT (in DL) + * @param p_Count + * @return NasCount_Type .. incremented COUNT + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_NasSecurity_IncrementCOUNT(NasCount_Type p_Count) return NasCount_Type + { + var integer v_CountValue := oct2int(p_Count); + v_CountValue := (v_CountValue + 1) mod (65536 * 256); // the 8 most significant bits are 0 (24.301 cl. 4.4.3.1) + return int2oct(v_CountValue, 4); + }; + + //============================================================================ + + external function fx_KeyDerivationFunction(KDF_Type p_KDF, + B256_Type p_Key, + octetstring p_String) return B256_Type; + /* External function to hashing function with algorithm as defined in 33.401; + SHA-256 encoding algorithm used as KEY Description Function + @status APPROVED (LTE) */ + + //---------------------------------------------------------------------------- + external function fx_NasIntegrityAlgorithm(octetstring p_EncodedNasPdu, + B3_Type p_IntegrityAlgorithm, + B128_Key_Type p_KNASint, + NasCount_Type p_NasCount, + B5_Type p_BearerId, /* @sic R5-101050: BearerId changed to 5 bits sic@ */ + MAC_Direction_Type p_Direction) return MessageAuthenticationCode; /* @status APPROVED (LTE) */ + + external function fx_NasCiphering(octetstring p_EncodedNasPdu, + B3_Type p_CipheringAlgorithm, + B128_Key_Type p_KNASenc, + NasCount_Type p_NasCount, + B5_Type p_BearerId) return octetstring; /* @sic R5-101050: BearerId changed to 5 bits sic@ + @status APPROVED (LTE) */ + + external function fx_NasDeciphering(octetstring p_CipheredNasMsg, + B3_Type p_CipheringAlgorithm, + B128_Key_Type p_KNASenc, + NasCount_Type p_NasCount, + B5_Type p_BearerId) return octetstring; /* @sic R5-101050: BearerId changed to 5 bits sic@ + @status APPROVED (LTE) */ + + //---------------------------------------------------------------------------- + + external function fx_AsIntegrityAlgorithm(octetstring p_EncodedPdcpPdu, + IntegrityProtAlgorithm_Type p_IntegrityAlgorithm, + B128_Key_Type p_KRRCint, + O4_Type p_PdcpCount, + B5_Type p_BearerId, + MAC_Direction_Type p_Direction) return MessageAuthenticationCode; /* @sic R5-101050: BearerId changed to 5 bits sic@ + see TS 36.323 clause 5.7 */ + + external function fx_AsCiphering(octetstring p_EncodedSdu, + CipheringAlgorithm_Type p_CipheringAlgorithm, + B128_Key_Type p_Key, + O4_Type p_PdcpCount, + B5_Type p_BearerId) return octetstring; /* @sic R5-101050: BearerId changed to 5 bits sic@ + see TS 36.323 clause 5.6 */ + + external function fx_AsDeciphering(octetstring p_CipheredSdu, + CipheringAlgorithm_Type p_CipheringAlgorithm, + B128_Key_Type p_Key, + O4_Type p_PdcpCount, + B5_Type p_BearerId) return octetstring; /* @sic R5-101050: BearerId changed to 5 bits sic@ + see TS 36.323 clause 5.6 */ + + //---------------------------------------------------------------------------- +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA_L2/EUTRA_PdcpScurityProcedure.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA_L2/EUTRA_PdcpScurityProcedure.ttcn new file mode 100644 index 0000000..c08d75a --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA_L2/EUTRA_PdcpScurityProcedure.ttcn @@ -0,0 +1,314 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-05 19:27:02 +0200 (Fri, 05 Sep 2014) $ +// $Rev: 12079 $ +/******************************************************************************/ + +module EUTRA_PdcpScurityProcedure { + + import from EUTRA_CellInfo all; + import from EUTRA_CommonProcedures all; + import from EUTRA_LoopBack all; + import from EUTRA_AspCommon_Templates all; + import from EUTRA_CommonDefs all; + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_Component all; + import from EUTRA_SecuritySteps all; + import from EUTRA_ConfigurationSteps all; + import from L2_CommonTemplates all; + import from EUTRA_RRC_Templates all; + import from EUTRA_SRB_Templates all; + import from EUTRA_DRB_Templates all; + import from EUTRA_Paging all; + import from EUTRA_NASSteps all; + import from CommonDefs all; + import from EPS_NAS_MsgContainers all; + import from EPS_NAS_TypeDefs all; + import from EUTRA_SecurityFunctions all; + import from EPS_NAS_Templates all; + import from EPS_NAS_Constants all; + import from EUTRA_RRCSteps all; + import from EUTRA_Timing all; + import from L2_CommonFunctions all; + import from EUTRA_CellCfg_Templates all; //@sic R5s140720 sic@ + + //---------------------------------------------------------------------------- + /* + * @desc Generic function suitable as the test body for tests 7.3.3.1 or 7.3.3.3 + * @param p_CellId + * @param p_AS_CipheringAlgorithm + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_PdcpScurityProcedure_EncryptionAS(EUTRA_CellId_Type p_CellId, + CipheringAlgorithm_Type p_AS_CipheringAlgorithm) runs on EUTRA_PTC + { + /////////////////////////////////////////////////////////////////////////////////// + // PREAMBLE + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_Init(c1); + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_AS_CipheringAlgorithm_Set(p_AS_CipheringAlgorithm); // set snow 3G or AES/ZUC as Ciphering algorithm. + f_EUTRA_Preamble(p_CellId, STATE2_IDLEUPDATE); // creates cell and performs registration + + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set(true); + + //@siclog "Step 1" siclog@ + f_EUTRA_RbEst_Def(p_CellId); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "UE has transmitted UE Capability Information with valid Ciphering protected"); + //@siclog "Steps 2 - 3" siclog@ + //fl_CheckUECapability(p_CellId) + f_EUTRA_TestBody_Set(false); + //test body ends + + /////////////////////////////////////////////////////////////////////////////////// + // POSTAMBLE + ////////////////////////////////////////////////////////////////////////////////// + + //Switch off UE and expect a DETACH REQUEST message + f_EUTRA_Postamble(p_CellId, E2_CONNECTED);//@sic R5-103875 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc Generic function suitable as the test body for tests 7.3.3.2 or 7.3.3.4 + * @param p_CellId + * @param p_AS_CipheringAlgorithm + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_PdcpScurityProcedure_EncryptionUP(EUTRA_CellId_Type p_CellId, + CipheringAlgorithm_Type p_AS_CipheringAlgorithm)runs on EUTRA_PTC + { + timer t_WaitTimer := 5.0; + /////////////////////////////////////////////////////////////////////////////////// + // PREAMBLE + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_Init(c1); + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_AS_CipheringAlgorithm_Set(p_AS_CipheringAlgorithm); // set snow 3G or AES as Ciphering algorithm. + f_EUTRA_Preamble(p_CellId, STATE2A_TESTLOOP_ModeA); + // creates cell and performs registration + f_EUTRA_LoopBackActivation_State4_Def(eutra_Cell1, cs_UE_TestLoopModeA_LB_Setup_NoScaling); + + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set(true,layer2); // @sic R5-101050 sic@ + + //@siclog "Step 1" siclog@ + DRB.send(cas_DRB_COMMON_REQ_PDCP_SDU(p_CellId,tsc_RbId_DRB1, cs_TimingInfo_Now, cs_PDCP_SDUList_1(crs_PDCP_SDU_16B))); + t_WaitTimer.start; + //@siclog "Step 2" siclog@ + // Proper application of Ciphering is implicitly tested. + alt { + [] DRB.receive(car_DRB_COMMON_IND_PDCP_SDUList(p_CellId,tsc_RbId_DRB1, ?, cr_PDCP_SDUList_1(crs_PDCP_SDU_16B))) + { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, " UE has loop backed Data"); + t_WaitTimer.stop; + } + [] t_WaitTimer.timeout + { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "UE is not sending loop back data"); + } + } + f_EUTRA_TestBody_Set(false); + + /////////////////////////////////////////////////////////////////////////////////// + // POSTAMBLE + ////////////////////////////////////////////////////////////////////////////////// + + //Switch off UE and expect a DETACH REQUEST message + f_EUTRA_Postamble(p_CellId, E3_TESTMODE);//@sic R5-103875 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc Function to transmit UE Capability Enquiry message and receive UE Capability Information message + * @param p_CellId + * @status + */ + function fl_CheckUECapability(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { //* step 2 Transmit UE Capability Enquiry message to ask for EUTRA Capability information + //@sic R5-1001113 sic@ + timer t_Watchdog := 0.4;// 400 ms should be sufficient to receive HARQ ACK/NACK + SRB.send(cas_SRB1_RrcPdu_REQ(p_CellId, cs_TimingInfo_Now, cs_508_UeCapabilityEnquiry(tsc_RRC_TI_Def))); + t_Watchdog.start; + //* step 3 Receive UE Capability Information message for EUTRA capabilities + SRB.receive(car_SRB1_RrcPdu_IND(p_CellId, cr_508_UeCapabilityInformation(tsc_RRC_TI_Def, cr_EutraCapInfo))); + t_Watchdog.stop; + + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "UE has transmitted UE Capability Information with valid Integrity protected"); + } + + //---------------------------------------------------------------------------- + /* + * @desc Generic function suitable as the test body for tests 7.3.4.1 or 7.3.4.2 + * @param p_CellId + * @param p_AS_IntegrityProtAlgorithm + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_PdcpScurityProcedure_Integrity(EUTRA_CellId_Type p_CellId, + IntegrityProtAlgorithm_Type p_AS_IntegrityProtAlgorithm) runs on EUTRA_PTC + { + var GutiParameters_Type v_GutiParameters; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var NAS_MSG_Indication_Type v_NasInd; + var NAS_KsiValue v_KsiValue; + var EUTRA_SecurityParams_Type v_AuthParams; + var ShortMAC_I v_ShortMAC_I; + var SubFrameTiming_Type v_Timing, v_Timing2, v_Timing3, v_Timing4; //@sic R5s110418 sic@ + + /////////////////////////////////////////////////////////////////////////////////// + // PREAMBLE + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_Init(c1); + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_AS_IntegrityAlgorithm_Set(p_AS_IntegrityProtAlgorithm); // set snow 3G or AES as Ciphering algorithm. + f_EUTRA_Preamble(p_CellId,STATE2_IDLEUPDATE); + v_GutiParameters := f_EUTRA_CellInfo_GetGuti(p_CellId); //@sic R5s110092 sic@ + v_AuthParams := f_EUTRA_Security_Get();//@sic R5s110092 sic@ + + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set(true); + + //@siclog "Step 1" siclog@ + f_EUTRA_UE_Page(p_CellId, + cs_NasPaging_OneRecord(cs_PagingUE_Identity_S_TMSI(v_GutiParameters.MME_Code, v_GutiParameters.M_TMSI))); + //@siclog "Step 2-4" siclog@ + //Check the Service Request message + v_KsiValue := f_EUTRA_SecurityKSIasme_Get(); + v_NasInd := f_EUTRA_RRC_ConnEst_DefWithNas(p_CellId, + v_RRC_TI, + ?, + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_508_SERVICE_REQUEST(v_KsiValue))); + + + //@siclog "Step 5-7" siclog@ + v_AuthParams := f_EUTRA_Authentication_InitAS(v_AuthParams, v_NasInd.SecurityProtection.NasCount); + v_AuthParams := f_EUTRA_RRC_ActivateSecurity(p_CellId, v_AuthParams, v_NasInd.SecurityProtection.NasCount); + f_EUTRA_Security_Set(v_AuthParams); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 6 & 7 TP 1"); + + //@siclog "Step 8" siclog@ + f_EUTRA_RRC_ConnectionRelease(p_CellId); + + //@siclog "Step 9" siclog@ + f_Delay(5.0); + + //@siclog "Step 10" siclog@ + f_EUTRA_UE_Page(p_CellId, + cs_NasPaging_OneRecord(cs_PagingUE_Identity_S_TMSI(v_GutiParameters.MME_Code, v_GutiParameters.M_TMSI))); + //@siclog "Step 11-13" siclog@ + //Check the Service Request message + v_KsiValue := f_EUTRA_SecurityKSIasme_Get(); + v_NasInd := f_EUTRA_RRC_ConnEst_DefWithNas(p_CellId, + v_RRC_TI, + ?, + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_508_SERVICE_REQUEST(v_KsiValue))); + //@siclog "Step 14" siclog@ + // send SecurityModeCommand on SRB1; SS is not configured for Integrity and Security pretection + //This should result in MAC-I failure as SS will set MAC-I as all zeros; + SRB.send(cas_SRB1_RrcPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_508_SecurityModeCommand(v_RRC_TI, + v_AuthParams.AS_Integrity.Algorithm, + v_AuthParams.AS_Ciphering.Algorithm))); + //@siclog "Step 15" siclog@ + //Receive Security Mode Failure + SRB.receive(car_SRB1_RrcPdu_IND(p_CellId, + cr_508_SecurityModeFailure(v_RRC_TI))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 15 TP 2"); + + + //@siclog "Step 16-17" siclog@ + v_AuthParams := f_EUTRA_Authentication_InitAS(v_AuthParams, v_NasInd.SecurityProtection.NasCount); + v_AuthParams := f_EUTRA_RRC_ActivateSecurity(p_CellId, v_AuthParams, v_NasInd.SecurityProtection.NasCount); + f_EUTRA_Security_Set(v_AuthParams); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 16 & 17"); + + + v_ShortMAC_I := f_Calculate_ShortMAC(p_CellId, p_CellId); + //Stop UL grant transmission on cell to avoid TA trasnmission with other desired events + f_EUTRA_StopULGrantTransmission(p_CellId, cs_TimingInfo_Now); + //@sic R5s110418 sic@ + v_Timing := f_EUTRA_GetNextSendOccasion(eutra_Cell1, 200); // >200ms in advance; Subframe.Number = 4 Schedule transmission of MAC_I failure message + v_Timing2 := f_EUTRA_TimingInfoAdd(v_Timing, 20); //To schedule an UL grant for RLC Status PDU by conforment UE or STATUS PDU + UECapabilityInformation by a non conforment UE + // selected to be less than t-PollRetransmit =45ms for SRB1 and greater than latency requirement = 10 ms + // UE transmits 4 TTI after reception of grant + v_Timing3 := f_EUTRA_TimingInfoAdd(v_Timing, 40); // To schedule local SS release + v_Timing4 := f_EUTRA_TimingInfoAdd(v_Timing, 45); // To establish the SS resources + //@sic R5s110418 removed RACH procedure configuration sic@ + //@siclog "Step 18" siclog@ + // Consfigure SS to use differnt algorithm for integrity so that will result in MAC-I failure at UE + f_EUTRA_SS_TriggerMAC_I_Failure(p_CellId); + SRB.send(cas_SRB1_RrcPdu_REQ(p_CellId, cs_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number), cs_508_UeCapabilityEnquiry(tsc_RRC_TI_Def))); + //@sic R5s140720 sic@ + f_EUTRA_ULGrantConfiguration_Common(eutra_Cell1, + cs_TimingInfo(v_Timing2.SFN.Number, v_Timing2.Subframe.Number), + cs_DciInfo_CcchDcchDtchUL_Explicit(5, 10), + cs_PUCCH_Synch_None, + cs_UL_GrantConfig_OneTime);// Nprb =10, Imcs=Itbs=5 => TBsize of 872, sufficiently large for UECapabilityInformation + Status PDU + + // Reconfiguration of SRB0 is not needed because TM mode RLC, + // DRB is not needed as no data sent or received hence seqence numbers are intact. + f_EUTRA_SS_SRBs_DRBs_Release(p_CellId,cs_TimingInfo(v_Timing3.SFN.Number, v_Timing3.Subframe.Number));//@sic R5s110602 sic@ + f_EUTRA_SS_SRBs_DRBs_Config(p_CellId,cs_TimingInfo(v_Timing4.SFN.Number, v_Timing4.Subframe.Number));//@sic R5s110602 sic@ + //@siclog "Step 19" siclog@ + SRB.receive(car_SRB0_RrcPdu_IND(p_CellId, + cr_508_RRCConnectionReestablishmentRequest(tsc_C_RNTI_Def, + f_EUTRA_CellInfo_GetPhyCellId(p_CellId), + cr_ReestablishmentCause_OtherFailure, + v_ShortMAC_I))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, " Step 19, TP 3"); + //Reset SRB SRB's and DRB of source cell (cell 1) + //f_EUTRA_SS_SRBs_DRBs_Reset(p_CellId); + + // Activate RRC security at SS target cell (Cell1) for SRB 1, 2 and 1 AM DRB + v_AuthParams := f_EUTRA_SS_AS_ActivateSecurity_HO_Reest(p_CellId, f_EUTRA_Security_Get(), 0); + f_EUTRA_Security_Set(v_AuthParams); + + //@siclog "Step 20" siclog@ + /* The SS transmits RRCConnectionReestablishment message. */ + f_EUTRA_RRC_RRCConnectionReestablishment_Def(p_CellId); + + //@siclog "Step 21" siclog@ + /* UE transmits an RRCConnectionReestablishmentComplete message */ + SRB.receive(car_SRB1_RrcPdu_IND(p_CellId, cr_508_RRCConnectionReestablishmentComplete(tsc_RRC_TI_Def))); + + //@siclog "step 21a" siclog@ + f_EUTRA_RRCConnectionReconfiguration_Common(eutra_Cell1, + tsc_RRC_TI_Def , + 0, + 0, + {cs_508_SRB2_ToAddMod_DEFAULT}); + /* Step 21b - 21c */ + f_EUTRA_Activate_SRB2_DRB_ReceiveRrcAndNasMsg(eutra_Cell1, + tsc_RRC_TI_Def, + 0, + 0); + + //@siclog "Step 22" siclog@ + //Check UE is in connected state + f_EUTRA_508Check_ConnectedState(p_CellId); + + f_EUTRA_TestBody_Set(false); + + /////////////////////////////////////////////////////////////////////////////////// + // POSTAMBLE + ////////////////////////////////////////////////////////////////////////////////// + + //Switch off UE and expect a DETACH REQUEST message + f_EUTRA_Postamble(p_CellId, E2_CONNECTED);//@sic R5-103875 sic@ + } +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA_L2/L2_CommonFunctions.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA_L2/L2_CommonFunctions.ttcn new file mode 100644 index 0000000..97cdbb7 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA_L2/L2_CommonFunctions.ttcn @@ -0,0 +1,886 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-08-09 21:19:23 +0200 (Sat, 09 Aug 2014) $ +// $Rev: 11868 $ +/******************************************************************************/ + +module L2_CommonFunctions { + + import from CommonDefs all; + import from EUTRA_ASP_TypeDefs all; + import from EUTRA_ASP_DrbDefs all; + import from EUTRA_AspCommon_Templates all; + import from EUTRA_Component all; + import from EUTRA_CommonDefs all; + import from EUTRA_CellCfg_Templates all; + import from EUTRA_DRB_Templates all; + import from EUTRA_RRC_Templates all; + import from L2_CommonTemplates all; + import from EUTRA_ConfigurationSteps all; + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_CommonProcedures all; + import from EPS_NAS_Templates all; + import from EUTRA_NASSteps all; + import from EUTRA_LoopBack_TypeDefs all; + import from EUTRA_LoopBack all; + import from EUTRA_CellInfo all; + + group SubframeTiming { + + /* + * @desc function to calculate subframe numbers for PDU/SDUs to be sent in subsequent TTIs + * This function shall be used to calculate subframe offsets used in the timing info of ASPs; + * the offset is the absolute index of a subframe (in contrast to f_EUTRA_DataListSubframeOffset where relative values are calculated). + * for FDD that are simply subsequent subframes but for TDD not all subframes can be used. + * This function is not suitable for sending UL grants requiring subframes 4, 9, 14, 19, .. + * but it can can be used for this by employing even indices. + * @param p_EUTRA_FDD_TDD_Mode ... FDD/TDD + * @param p_Index ... index of the PDU/SUDs + * @return integer + * @status APPROVED (LTE) + */ + function f_EUTRA_TimingInfoSubframeOffset(EUTRA_FDD_TDD_Mode_Type p_EUTRA_FDD_TDD_Mode, + integer p_Index) + return integer + { + var integer j; + var integer v_SubframeOffset; + + if (p_EUTRA_FDD_TDD_Mode == TDD) + { + // index = 0, 1, 2, 3, 4, 5, 6, .. => + // offset = 4, 5, 9, 10, 14, 15, .. + p_Index := p_Index+1; + j := ((p_Index+1) / 2); + v_SubframeOffset := p_Index + j * 3; + } + else // FDD + { + v_SubframeOffset := p_Index + tsc_EUTRA_SN4; + } + return v_SubframeOffset; + } // f_EUTRA_CalcSubframeOffset + + /* + * @desc function to adjust timing in the following situation: + * - subframe information has been calulated using function f_EUTRA_CalcSubframeOffset; + * - a must when the resulting subframe value becomes > 9 + * Unlike in ASPs there is no adjustment of SFN and subframe of the resulting timing. + * @param p_Timing ... Timing to be adjusted + * @param p_Subframe ... Subframe to be used with the current timing's SFN (possibly adjusted) + * @return SubFrameTiming_Type ... Adjusted timing + * @status APPROVED (LTE) + */ + function f_EUTRA_TimingInfoSubframeOffsetAdjust(SubFrameTiming_Type p_Timing, + integer p_Subframe) + return SubFrameTiming_Type + { + var SubFrameTiming_Type v_Timing; + + v_Timing.SFN.Number := (p_Timing.SFN.Number + (p_Subframe/10)) mod 1024; + v_Timing.Subframe.Number := p_Subframe mod 10; + + return v_Timing; + } + + /* + * @desc function to calculate subframe numbers for PDU/SDUs to be sent in subsequent TTIs. + * This function shall be used to calculate subframe offsets used in PDU/SDU lists (DRB_DataPerSubframeList_DL_Type); + * the offset is relative to the subframe given in the timing info of the ASP. + * For FDD that are simply subsequent subframes but for TDD not all subframes can be used. + * Note: This function shall not be used to calculate the subfame being used in the timing info of the ASP which is an absolute value (as e.g. for UL grants). + * @param p_EUTRA_FDD_TDD_Mode ... FDD/TDD + * @param p_Index ... index of the PDU/SUDs + * @return integer + * @status APPROVED (LTE) + */ + function f_EUTRA_DataListSubframeOffset(EUTRA_FDD_TDD_Mode_Type p_EUTRA_FDD_TDD_Mode, + integer p_Index) return integer + { + var integer j; + var integer v_SubframeOffset; + + if (p_EUTRA_FDD_TDD_Mode == TDD) + { + // index = 0, 1, 2, 3, 4, 5, 6, .. => + // offset = 0, 1, 5, 6, 10, 11, .. + j := ((p_Index) / 2); + v_SubframeOffset := p_Index + j * 3; + } + else // FDD + { + v_SubframeOffset := p_Index; + } + return v_SubframeOffset; + } // f_EUTRA_CalcSubframeOffset_DataList + + } // end of group SubframeTiming + + group ULGRant_DLAllocation { + //============================================================================ + // local common function + //---------------------------------------------------------------------------- + + //---------------------------------------------------------------------------- + /* + * @desc Basic function used in various types of explicit UL grant configuration + * @param p_CellId + * @param p_TimingInfo + * @param p_DciUlInfo + * @param p_PUCCH_Synch + * @param p_UL_GrantConfig + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_ULGrantConfiguration_Common(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (omit) DciUlInfo_Type p_DciUlInfo, + template (omit) PUCCH_Synch_Type p_PUCCH_Synch, + template (value) UL_GrantConfig_Type p_UL_GrantConfig) runs on EUTRA_PTC + { /* @sic R5s110147, R5s110634 additional changes: v_CnfFlag sic@ */ + f_EUTRA_SS_CommonCellConfig(p_CellId, cas_ULGrantAllocation_REQ(p_CellId, p_TimingInfo, p_DciUlInfo, p_PUCCH_Synch, p_UL_GrantConfig)); + } + + //============================================================================ + // + //---------------------------------------------------------------------------- + /* + * @desc Function to start configurable periodic UL grant allocation and auto PUCCH synchronisation + * Configures SS to start periodic UL grant transmission + * Suitable for RLC and MAC test cases. + * @param p_CellId + * @param p_TimingInfo + * @param p_Imcs + * @param p_Nprb + * @param p_Period + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_PeriodicULGrantTransmission(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo , + ImcsValue_Type p_Imcs, + integer p_Nprb, + integer p_Period) runs on EUTRA_PTC + { + f_EUTRA_ULGrantConfiguration_Common(p_CellId, + p_TimingInfo, + cs_DciInfo_CcchDcchDtchUL_Explicit(p_Imcs, p_Nprb), + cs_PUCCH_Synch_Auto_Def, // @sic R5-101177, R5-101178, R5-101050 sic@ + cs_UL_GrantConfig_ContPeriodic(p_Period)); + } + + //============================================================================ + /* + * @desc Function to start configurable UL grant allocation and keep PUCCH synchronisation unchanged + * with period and num of cycles configured + * @param p_CellId + * @param p_TimingInfo + * @param p_Imcs + * @param p_Nprb + * @param p_Period + * @param p_Cycles + * @param p_TransRetransList (default value: cs_TransRetransmissionListUL_Def) + * @status APPROVED (LTE) + */ + function f_EUTRA_PeriodicCyclicULGrantTransmission(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo , + ImcsValue_Type p_Imcs, + integer p_Nprb, + integer p_Period, + integer p_Cycles, + template (value) UL_TransRetransmissionList_Type p_TransRetransList := cs_TransRetransmissionListUL_Def) runs on EUTRA_PTC + { + /* Configures SS to start periodic UL grant transmission + Suitable for RLC and MAC test cases. */ + /* @sic R5s100522: Additional MCC 160 changes sic@ */ + f_EUTRA_ULGrantConfiguration_Common(p_CellId, + p_TimingInfo, + cs_DciInfo_CcchDcchDtchUL_Explicit(p_Imcs, p_Nprb, p_TransRetransList), + cs_PUCCH_Synch_Auto_Def, // @sic R5-101177, R5-101178, R5-101050 sic@ + cs_UL_GrantConfig_NoOfGrants(p_Period, p_Cycles)); + }; + //============================================================================ + /* + * @desc Function to start configurable one time grant allocation and keep PUCCH synchronisation unchanged + * @param p_CellId + * @param p_TimingInfo + * @param p_Imcs + * @param p_Nprb + * @param p_TransRetransList (default value: cs_TransRetransmissionListUL_Def) + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_OneULGrantTransmission(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo , + ImcsValue_Type p_Imcs, + integer p_Nprb, + template (value) UL_TransRetransmissionList_Type p_TransRetransList := cs_TransRetransmissionListUL_Def) runs on EUTRA_PTC + { + /* Configures SS to start periodic UL grant transmission + * Suitable for RLC and MAC test cases. */ + /* @sic R5s100522: Additional MCC 160 changes sic@ */ + f_EUTRA_ULGrantConfiguration_Common(p_CellId, + p_TimingInfo, + cs_DciInfo_CcchDcchDtchUL_Explicit(p_Imcs, p_Nprb, p_TransRetransList), + cs_PUCCH_Synch_Auto_Def, // @sic R5-101177, R5-101178, R5-101050 sic@ + cs_UL_GrantConfig_OneTime); + } + + //============================================================================ + /* + * @desc Function to start configurable UL grant allocation on SR reception and PUCCH synchronisation: + * starts UL grant transmission on SI reception + * configures SS to maintain UE in PUCCH synchronised state + * needs to be called when UE enters connected mode in a cell (after reception of RRCConnectionReq or HandoverComplete) + * @param p_CellId + * @param p_TimingInfo + * @param p_ULDCIInfo + * @status APPROVED (LTE) + */ + function f_EUTRA_StartULGrantTransmissionOnSR_Reception(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (value) DciUlInfo_Type p_ULDCIInfo) runs on EUTRA_PTC + { + f_EUTRA_ULGrantConfiguration_Common(p_CellId, + p_TimingInfo, + p_ULDCIInfo, + cs_PUCCH_Synch_KeepAsItIs, + cs_UL_GrantConfig_Def); + } + //============================================================================ + /* + * @desc Function to start configurable UL grant allocation on SR reception and No PUCCH synchronisation + * suitable when time alignment timer is configured as infinity + * @param p_CellId + * @param p_TimingInfo + * @param p_ULDCIInfo + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_StartULGrantTransmissionOnSR_Reception_No_PUCCH_Sync(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (value) DciUlInfo_Type p_ULDCIInfo) runs on EUTRA_PTC + { /* starts UL grant transmission on SI reception + configures SS to maintain UE in PUCCH synchronised state + needs to be called when UE enters connected mode in a cell [after reception of RRCConnectionReq or HandoverComplete] */ + f_EUTRA_ULGrantConfiguration_Common(p_CellId, + p_TimingInfo, + p_ULDCIInfo, + cs_PUCCH_Synch_None, + cs_UL_GrantConfig_Def); + } + + //============================================================================ + /* + * @desc Function to start configurable UL grant allocation on SR reception and PUCCH synchronisation + * @param p_CellId + * @param p_TimingInfo + * @param p_Imcs + * @param p_Nprb + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_StartExplicitULGrantTransmissionOnSR_Reception(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + ImcsValue_Type p_Imcs, + integer p_Nprb) runs on EUTRA_PTC { + // starts UL grant transmission on SI reception + // configures SS to maintain UE in PUCCH synchronised state + // needs to be called when UE enters connected mode in a cell [after reception of RRCConnectionReq or HandoverComplete] + f_EUTRA_ULGrantConfiguration_Common(p_CellId, + p_TimingInfo, + cs_DciInfo_CcchDcchDtchUL_Explicit(p_Imcs, p_Nprb), + cs_PUCCH_Synch_KeepAsItIs, + cs_UL_GrantConfig_Def); + } + + //============================================================================ + /* + * @desc Function to stop UL Grant transmision but keep PUCCH synchronisation unchanged + * @param p_CellId + * @param p_TimingInfo + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_StopULGrantTransmission_PUCCH_Sync(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo) runs on EUTRA_PTC + { // stops UL grant transmission + // configures SS to not maintain UE in PUCCH synchronised state + // needs to be called when UE enters idle mode in a cell [after RRCConnectionRelease] + f_EUTRA_ULGrantConfiguration_Common(p_CellId, + p_TimingInfo, + omit, // no DCI info + cs_PUCCH_Synch_Auto_Def, // @sic R5-101177, R5-101178, R5-101050 sic@ + cs_UL_GrantConfig_Stop); + } + + //============================================================================ + /* + * @desc Function to stop UL Grant transmision and not maintain PUCCH synchronisation + * @param p_CellId + * @param p_TimingInfo + * @status APPROVED (LTE) + */ + function f_EUTRA_StopULGrantTransmission_No_PUCCH_Sync(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo) runs on EUTRA_PTC + { // stops UL grant transmission + // configures SS to not maintain UE in PUCCH synchronised state + // needs to be called when UE enters idle mode in a cell [after RRCConnectionRelease] + //JKS NOTE:used in tc 7.1.2.6 step 8 + f_EUTRA_ULGrantConfiguration_Common(p_CellId, + p_TimingInfo, + omit, // no DCI info + cs_PUCCH_Synch_None, + cs_UL_GrantConfig_Stop); + } + + } // end of group ULGRant_DLAllocation + + group L2_EncodeDecode { + + /* + * @desc encode PDCP PDU + * @param p_PDCP_PDU + * @return octetstring + * @status APPROVED (LTE, LTE_A) + */ + function f_PDCP_PDU_Encvalue(template (value) PDCP_PDU_Type p_PDCP_PDU) return octetstring + { + var bitstring v_Bitstring := encvalue(p_PDCP_PDU); + var octetstring v_Octetstring := bit2oct(f_OctetAlignedBitString(v_Bitstring)); + return v_Octetstring; + } + + /* + * @desc encode RLC PDU + * @param p_RLC_PDU + * @return octetstring + * @status APPROVED (LTE, LTE_A) + */ + function f_RLC_PDU_Encvalue(template (value) RLC_PDU_Type p_RLC_PDU) return octetstring { + var bitstring v_Bitstring := encvalue(p_RLC_PDU); + var octetstring v_Octetstring := bit2oct(f_OctetAlignedBitString(v_Bitstring)); + return v_Octetstring; + } + + function f_MAC_PDU_Encvalue(template (value) MAC_PDU_Type p_MAC_PDU) return octetstring { + var bitstring v_Bitstring := encvalue(p_MAC_PDU); + var octetstring v_Octetstring := bit2oct(f_OctetAlignedBitString(v_Bitstring)); + return v_Octetstring; + } + + /* + * @desc To check if received MAC SDU is a RLC Status PDU + * @param p_MAC_SDU + * @return boolean + * @status APPROVED (LTE) + */ + function f_CheckIf_MAC_SDU_Is_RLC_AM_StatusPDU(MAC_SDU_Type p_MAC_SDU) return boolean + { + var bitstring v_RLCPDU := oct2bit(p_MAC_SDU); + var boolean v_Result := true; + var integer v_FirstBit := bit2int (substr (v_RLCPDU, 0, 1)); + + if (v_FirstBit != 0) { // D/C bit is not 0 i.e. not a status PDU but data PDU + v_Result := false; + } + return v_Result; + } + + /* + * @desc decode MAC PDU + * @param p_MAC_SDU + * @return RLC_AM_StatusPDU_Type + * @status APPROVED (LTE) + */ + function f_MAC_SDU_Decode_ToRLC_AM_StatusPDU(MAC_SDU_Type p_MAC_SDU) return RLC_AM_StatusPDU_Type + { + var RLC_AM_StatusPDU_Type v_RLC_PDU; + var bitstring v_Bitstring := oct2bit(p_MAC_SDU); + var integer v_Result := decvalue(v_Bitstring, v_RLC_PDU); + if (v_Result != 0) { + FatalError(__FILE__, __LINE__, "RLC PDU cannot be decoded"); + } + return v_RLC_PDU; + } + + } // end of group L2_Encode + + /***************************************************************************************************/ + // Function to Config SS for reporting Scheduling Request Reception + ///////////////////////////////////////////////////////////////////////////////////////////////////// + /* + * @desc To configure Scheduling Request MAC indication Mode + * @param p_CellId + * @param p_SR_Mode + * @status APPROVED (LTE, LTE_A) + */ + function f_SS_ConfigSchedulingRequestIndMode(EUTRA_CellId_Type p_CellId, + L1Mac_IndicationMode_Type p_SR_Mode) runs on EUTRA_PTC + { + f_EUTRA_SS_CommonL1MacIndCtrlConfig(p_CellId, cas_SchedulingReqIndConfig_REQ (p_CellId, p_SR_Mode)); + } + + group DRB_UM { + + /* + * @desc Readio Bearer configuration for one DRB (UM bearer in TM mode) + * @param p_CellId + * @param p_UM_SN_Size + * @status APPROVED (LTE) + */ + function f_EUTRA_SS_DRB2_ConfigUM_TM_Mode(EUTRA_CellId_Type p_CellId, + integer p_UM_SN_Size) + runs on EUTRA_PTC + { // @sic R5w100002r1 sic@ + if (p_UM_SN_Size == tsc_UM_SN_Size_5) { + f_EUTRA_SS_CommonRadioBearerConfig_SingleDRB(p_CellId, cds_DRB2_ConfigUM_TM_Mode_SN5); + + } else { + f_EUTRA_SS_CommonRadioBearerConfig_SingleDRB(p_CellId, cs_DRB2_ConfigUM_TM_Mode_SN10); + } + } + } // end of group DRB_UM + + group L1_MAC_Ind_Functions { // Functions to configure SS in special reporting modes + /* + * @desc Function to Config SS for reporting Buffer Status Report Reception + * @param p_CellId + * @param p_BSR_Mode + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @status APPROVED (LTE, LTE_A) + */ + function f_SS_ConfigBufferStatusReportIndMode(EUTRA_CellId_Type p_CellId, + L1Mac_IndicationMode_Type p_BSR_Mode, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now) runs on EUTRA_PTC + { + f_EUTRA_SS_CommonL1MacIndCtrlConfig(p_CellId, cas_BSR_IndConfig_REQ(p_CellId, p_BSR_Mode, p_TimingInfo)); + } + + /*----------------------------------------------------------------------------------------------*/ + /* + * @desc Function to Config SS for reporting UL HAR ACK/NACK Reception + * @param p_CellId + * @param p_UL_HARQ_Mode + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @param p_CnfFlag (default value: omit) + * @status APPROVED (LTE, LTE_A) + */ + function f_SS_ConfigUL_HARQ_IndMode(EUTRA_CellId_Type p_CellId, + L1Mac_IndicationMode_Type p_UL_HARQ_Mode, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now, + template (omit) boolean p_CnfFlag := omit) runs on EUTRA_PTC + { /* @sic R5s120201: parameter p_CnfFlag sic@ */ + f_EUTRA_SS_CommonL1MacIndCtrlConfig(p_CellId, cas_UL_HARQ_IndConfig_REQ (p_CellId, p_UL_HARQ_Mode, p_TimingInfo, p_CnfFlag)); //@sic R5s120024 sic@) + } + + + }// end of group L1_MAC_Ind_Functions + + group Generic_L2_RRC_ReconfigSteps { + + //***************************************************************************************************/ + /* + * @desc This function is same as f_EUTRA_GenericRbEst except for no_periodic_BSR_or_PHR branch of table + * Table 4.8.2.1.5-1 (@sic result of R5-096458 sic@) + * @param p_CellId + * @param p_NoOfAddDRBs_AM + * @param p_NoOfAddDRBs_UM + * @param p_QoS + * @param p_Tft + * @param p_PDCP_StatusReportRequired (default value: true) + * @status APPROVED (LTE, LTE_A) + */ + function fl_EUTRA_GenericRbEst_DisableBSR_PHR(EUTRA_CellId_Type p_CellId, + integer p_NoOfAddDRBs_AM, + integer p_NoOfAddDRBs_UM, + template (omit) EPS_QoSList_Type p_QoS, + template (omit) Tft_List_Type p_Tft, + boolean p_PDCP_StatusReportRequired := true) runs on EUTRA_PTC + { + var template (omit) DRB_ToAddModList v_DRB_ToAddModList := omit; // => apply default setiing acc. 36.508 cl. 4.8.2.1.7 */ + var template (value) MAC_MainConfig_Type v_MAC_MainConfig ; + var template (omit) PhysicalConfigDedicated v_PhysicalConfigDedicated := omit; // => apply default setting acc. 36.508 cl. 4.8.2.1.6 */ + if (p_NoOfAddDRBs_UM > 0) { + v_MAC_MainConfig := cs_508_MAC_MainConfig_Explicit_RBC_DrxS_DisableBSR_PHR; // short DRX cycle acc. to note in 36.508 table 4.6.3-16 + } else { + v_MAC_MainConfig := cs_508_MAC_MainConfig_Explicit_RBC_DrxL_DisableBSR_PHR; // long DRX cycle acc. to note in 36.508 table 4.6.3-16 + } + f_EUTRA_GenericRbEst_Common(p_CellId, + p_NoOfAddDRBs_AM, + p_NoOfAddDRBs_UM, + v_DRB_ToAddModList, + v_MAC_MainConfig, + v_PhysicalConfigDedicated, + p_QoS, + p_Tft, + p_PDCP_StatusReportRequired); + } + + /***************************************************************************************************/ + /* + * @desc This function is same as f_EUTRA_RbEst_Def except for no_periodic_BSR_or_PHR branch of table + * Table 4.8.2.1.5-1 (@sic result of R5-096458 sic@) + * @param p_CellId + * @param p_PDCP_StatusReportRequired (default value: true) + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_RbEst_Def_DisableBSR_PHR(EUTRA_CellId_Type p_CellId, + boolean p_PDCP_StatusReportRequired := true) runs on EUTRA_PTC + { + fl_EUTRA_GenericRbEst_DisableBSR_PHR(p_CellId, 0, 0, omit, omit, p_PDCP_StatusReportRequired); + } + + ///***************************************************************************************************/ + /* + * @desc This function is same as f_EUTRA_RbEst_508_UM except for no_periodic_BSR_or_PHR branch + * of table Table 4.8.2.1.5-1 (@sic result of R5-096458 sic@) + * @param p_CellId + * @status APPROVED (LTE) + */ + function f_EUTRA_RbEst_508_UM_DisableBSR_PHR(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { /* additional UM bearer will be established */ + var template (value) EPS_QoSList_Type v_Qos_List := {cs_508_EPS_QoS_Dedicated_1}; + var template (value) Tft_List_Type v_Tft_List := {f_EUTRA_Get_508_TrafficFlowTemplate(1)}; + fl_EUTRA_GenericRbEst_DisableBSR_PHR(p_CellId, 0, 1, v_Qos_List, v_Tft_List); + } + + /***************************************************************************************************/ + /* + * @desc This function is same as f_EUTRA_LoopBackActivation_State4_Def except for no_periodic_BSR_or_PHR branch + * of Table 4.8.2.1.5-1 (@sic result of R5-096458 sic@) + * @param p_CellId + * @param p_UE_TestLoopModeA_LB_Setup + * @status APPROVED (LTE) + */ + function f_EUTRA_LoopBackActivation_State4_Def_DisableBSR_PHR(EUTRA_CellId_Type p_CellId, + template (value) UE_TestLoopModeA_LB_Setup_Type p_UE_TestLoopModeA_LB_Setup) runs on EUTRA_PTC + { + f_EUTRA_RbEst_Def_DisableBSR_PHR(p_CellId); // bring UE to State 3 + f_EUTRA_CloseUE_TestLoopModeA(p_CellId, p_UE_TestLoopModeA_LB_Setup); // Step 1-2 + } + + //---------------------------------------------------------------------------- + /* + * @desc To move to state 4 as required for test case 7.1.3.4 + * @param p_PDCP_StatusReportRequired (default value: true) + * @param p_DRB_ToAddModList (default value: omit) + * @param p_CellId (default value: eutra_Cell1) + * @param p_Dsr_TransMax (default value: n64) + * @status APPROVED (LTE_A) + */ + function f_EUTRA_LoopBackActivation_State4_TA_Infinity_LB_NoScaling_DSR(boolean p_PDCP_StatusReportRequired := true , + template (omit) DRB_ToAddModList p_DRB_ToAddModList := omit,//@sic R5s100852 p_PDCP_StatusReportRequired added sic@ + EUTRA_CellId_Type p_CellId :=eutra_Cell1, + Dsr_TransMax_Type p_Dsr_TransMax := n64) //@sic CA test Development) + runs on EUTRA_PTC + { //@sic R5-101183 R5s110576 sic@ + var template (omit) MAC_MainConfig_Type v_MAC_MainConfig := cs_MAC_MainConfig_Explicit_DisableBSR_TA_Infinity; // time alignment timer is infinity + var template (omit) PhysicalConfigDedicated v_PhysicalConfigDedicated := f_PhysicalConfigDedicated_Dsr_TransMax(p_CellId, p_Dsr_TransMax); + var template (omit) DRB_ToAddModList v_DRB_ToAddModList:= p_DRB_ToAddModList; + + f_EUTRA_GenericRbEst_DisableBSR_PHR(p_CellId, + 0, + 0, + v_DRB_ToAddModList, + v_MAC_MainConfig, + v_PhysicalConfigDedicated, + omit, + omit, + p_PDCP_StatusReportRequired); // bring UE to State 3 + f_EUTRA_CloseUE_TestLoopModeA(p_CellId, cs_UE_TestLoopModeA_LB_Setup_NoScaling); // Step 1-2 + } + + /* + * @desc To move to state 4 as required for test case 7.1.3.4 + * @param p_PDCP_StatusReportRequired (default value: true) + * @param p_DRB_ToAddModList (default value: omit) + * @status APPROVED (LTE) + */ + function f_EUTRA_LoopBackActivation_State4_TA_Infinity_LB_NoScaling(boolean p_PDCP_StatusReportRequired := true , + template (omit) DRB_ToAddModList p_DRB_ToAddModList := omit) //@sic R5s100852 p_PDCP_StatusReportRequired added sic@ + runs on EUTRA_PTC + { //@sic R5-101183 R5s110576 sic@ + var template (omit) MAC_MainConfig_Type v_MAC_MainConfig := cs_MAC_MainConfig_Explicit_DisableBSR_TA_Infinity; // time alignment timer is infinity + var template (omit) PhysicalConfigDedicated v_PhysicalConfigDedicated := omit; + var template (omit) DRB_ToAddModList v_DRB_ToAddModList:= p_DRB_ToAddModList; + + f_EUTRA_GenericRbEst_DisableBSR_PHR(eutra_Cell1, + 0, + 0, + v_DRB_ToAddModList, + v_MAC_MainConfig, + v_PhysicalConfigDedicated, + omit, + omit, + p_PDCP_StatusReportRequired); // bring UE to State 3 + f_EUTRA_CloseUE_TestLoopModeA(eutra_Cell1, cs_UE_TestLoopModeA_LB_Setup_NoScaling); // Step 1-2 + } + //---------------------------------------------------------------------------- + /* + * @desc Step to bring UE to state 4, with extended BSR + * @param p_CellId + * @status APPROVED (LTE_A) + */ + function f_EUTRA_LoopBackActivation_State4_ExtendedBSR_Def(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { + var template (omit) MAC_MainConfig_Type v_MAC_MainConfig ; + var template (omit) PhysicalConfigDedicated v_PhysicalConfigDedicated := omit; // @sic R5s100767 additional changes sic@ + var template (omit) DRB_ToAddModList v_DRB_ToAddModList := omit; + + v_MAC_MainConfig := cs_508_MAC_MainConfig_Explicit_RBC_DrxL_DisableBSR_PHR_V1020(cs_508_MAC_MainConfig_v1020); // long DRX cycle acc. to note in 36.508 table 4.6.3-16 + + f_EUTRA_GenericRbEst_DisableBSR_PHR(p_CellId, + 0, + 0, + v_DRB_ToAddModList, + v_MAC_MainConfig, + v_PhysicalConfigDedicated, + omit, + omit, + false); //p_PDCP_StatusReportRequired is set to false @sic R5s100852 and R5-103816 sic@ + f_EUTRA_CloseUE_TestLoopModeA(p_CellId, cs_UE_TestLoopModeA_LB_Setup_NoScaling); // Step 1-2 + } + + //---------------------------------------------------------------------------- + /* + * @desc To move to state 4 as required for test cases 7.1.4.8 + * @param p_CellId (default value: eutra_Cell1) + * @status APPROVED (LTE) + */ + function f_EUTRA_LoopBackActivation_State4_7148(EUTRA_CellId_Type p_CellId :=eutra_Cell1) runs on EUTRA_PTC + { /* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + to be renamed + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */ + + var template (omit) MAC_MainConfig_Type v_MAC_MainConfig := cds_MAC_MainConfig_Explicit_PeriodicBSR_Timer(sf10); + var template (omit) PhysicalConfigDedicated v_PhysicalConfigDedicated := omit; + var template (omit) DRB_ToAddModList v_DRB_ToAddModList:= omit; + v_DRB_ToAddModList[0] := cs_508_DRB_ToAddMod_Common(tsc_DRB1, + cs_508_PDCP_Config_DRB_AM, + cs_508_RLC_Config_DRB_AM, + cs_508_LogicalChannelConfig_DRB_AM(7, kBps0, 2)); //@sic R5s100274 sic@ + v_DRB_ToAddModList[1] := cs_508_DRB_ToAddMod_Common(tsc_DRB2, + cs_508_PDCP_Config_DRB_AM, + cs_508_RLC_Config_DRB_AM, + cs_508_LogicalChannelConfig_DRB_AM(6, kBps0, 1)); //@sic R5s100274 sic@ + + f_EUTRA_GenericRbEst_DisableBSR_PHR(p_CellId, + 1, + 0, + v_DRB_ToAddModList, + v_MAC_MainConfig, + v_PhysicalConfigDedicated, + { cs_508_EPS_QoS_Dedicated_1}, + { f_EUTRA_Get_508_TrafficFlowTemplate(1) } ); // bring UE to State 3 + f_EUTRA_CloseUE_TestLoopModeA(p_CellId, cs_UE_TestLoopModeA_LB_Setup_NoScaling); // Step 1-2 + }; + + ///***************************************************************************************************/ + /* + * @desc Genric function to establsih SRB2 and DRB's but with special L2 option to disable BSR and PHR + * according to the condition no_periodic_BSR_or_PHR as specified in TS 36.508 subclause 4.8.2.1.5 + * @param p_CellId + * @param p_NoOfAddDRBs_AM + * @param p_NoOfAddDRBs_UM + * @param p_DRB_ToAddModList + * @param p_MAC_MainConfig + * @param p_PhysicalConfigDedicated + * @param p_QoS + * @param p_Tft + * @param p_PDCP_StatusReportRequired (default value: true) + * @param p_DownlinkAntennaGroupConfig (default value: omit) + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_GenericRbEst_DisableBSR_PHR(EUTRA_CellId_Type p_CellId, + integer p_NoOfAddDRBs_AM, + integer p_NoOfAddDRBs_UM, + template (omit) DRB_ToAddModList p_DRB_ToAddModList, + template (omit) MAC_MainConfig_Type p_MAC_MainConfig, + template (omit) PhysicalConfigDedicated p_PhysicalConfigDedicated, + template (omit) EPS_QoSList_Type p_QoS, + template (omit) Tft_List_Type p_Tft, + boolean p_PDCP_StatusReportRequired := true, //@sic R5s100852 p_PDCP_StatusReportRequired added sic@ + template (omit) DownlinkAntennaGroupConfig_Type p_DownlinkAntennaGroupConfig := omit) + runs on EUTRA_PTC + { + var template (value) MAC_MainConfig_Type v_MAC_MainConfig ; + if (isvalue(p_MAC_MainConfig)) { + v_MAC_MainConfig := valueof(p_MAC_MainConfig); + } else { + if (p_NoOfAddDRBs_UM > 0) { + v_MAC_MainConfig := cs_508_MAC_MainConfig_Explicit_RBC_DrxS_DisableBSR_PHR; // short DRX cycle acc. to note in 36.508 table 4.6.3-16 + } else { + v_MAC_MainConfig := cs_508_MAC_MainConfig_Explicit_RBC_DrxL_DisableBSR_PHR; // long DRX cycle acc. to note in 36.508 table 4.6.3-16 + } + } + f_EUTRA_GenericRbEst_Common(p_CellId, + p_NoOfAddDRBs_AM, + p_NoOfAddDRBs_UM, + p_DRB_ToAddModList, + v_MAC_MainConfig, + p_PhysicalConfigDedicated, + p_QoS, + p_Tft, + p_PDCP_StatusReportRequired, + -, + p_DownlinkAntennaGroupConfig); + } + + ///***************************************************************************************************/ + /* + * @desc Genric function to establsih SRB2 and DRB's but with special L2 option to PHR + * according to the condition no_periodic_BSR_or_PHR but default value of periodic_BSR as specified in TS 36.508 subclause 4.8.2.1.5 + * @param p_CellId + * @param p_NoOfAddDRBs_AM + * @param p_NoOfAddDRBs_UM + * @param p_DRB_ToAddModList + * @param p_MAC_MainConfig + * @param p_PhysicalConfigDedicated + * @param p_QoS + * @param p_Tft + * @param p_PDCP_StatusReportRequired (default value: true) + * @status APPROVED (LTE) + */ + function f_EUTRA_GenericRbEst_DisablePHR(EUTRA_CellId_Type p_CellId, + integer p_NoOfAddDRBs_AM, + integer p_NoOfAddDRBs_UM, + template (omit) DRB_ToAddModList p_DRB_ToAddModList, + template (omit) MAC_MainConfig_Type p_MAC_MainConfig, + template (omit) PhysicalConfigDedicated p_PhysicalConfigDedicated, + template (omit) EPS_QoSList_Type p_QoS, + template (omit) Tft_List_Type p_Tft, + boolean p_PDCP_StatusReportRequired := true) //@sic R5s100852 p_PDCP_StatusReportRequired added sic@ + runs on EUTRA_PTC + {//@sic R5-110712 sic@ + var template (value) MAC_MainConfig_Type v_MAC_MainConfig ; + if (isvalue(p_MAC_MainConfig)) { + v_MAC_MainConfig := valueof(p_MAC_MainConfig); + } else { + if (p_NoOfAddDRBs_UM > 0) { + v_MAC_MainConfig := cs_MAC_MainConfig_Explicit_ReleasePHR(f_GetUeDrxConfig(DRX_S)); // short DRX cycle acc. to note in 36.508 table 4.6.3-16 + } else { + v_MAC_MainConfig := cs_MAC_MainConfig_Explicit_ReleasePHR(f_GetUeDrxConfig(DRX_L)); // long DRX cycle acc. to note in 36.508 table 4.6.3-16 + } + } + f_EUTRA_GenericRbEst_Common(p_CellId, + p_NoOfAddDRBs_AM, + p_NoOfAddDRBs_UM, + p_DRB_ToAddModList, + v_MAC_MainConfig, + p_PhysicalConfigDedicated, + p_QoS, + p_Tft, + p_PDCP_StatusReportRequired); + } + + /* + * @desc Generic function to establish DRB(1,1) combination with parameterised DRB list, MAC and Physical config + * @param p_CellId + * @param p_DRB_ToAddModList + * @param p_MAC_MainConfig (default value: omit) + * @param p_PhysicalConfigDedicated (default value: omit) + * @status APPROVED (LTE) + */ + function f_EUTRA_GenericRbEst_WithRLC_UM_Params(EUTRA_CellId_Type p_CellId, + template (omit) DRB_ToAddModList p_DRB_ToAddModList, + template (omit) MAC_MainConfig_Type p_MAC_MainConfig := omit, + template (omit) PhysicalConfigDedicated p_PhysicalConfigDedicated := omit) runs on EUTRA_PTC + { + var template (value) EPS_QoSList_Type v_Qos_List := {cs_508_EPS_QoS_Dedicated_1}; + var template (value) Tft_List_Type v_Tft_List := {f_EUTRA_Get_508_TrafficFlowTemplate(1)}; + + f_EUTRA_GenericRbEst_DisableBSR_PHR(p_CellId, + 0, + 1, + p_DRB_ToAddModList, + p_MAC_MainConfig, + p_PhysicalConfigDedicated, + v_Qos_List, + v_Tft_List); + } + + /* + * @desc Generic step to config DRB[1,1] combination with parameterised RLC MAC and physical + * @param p_CellId + * @param p_PDCP_Config + * @param p_UL_UM_RLC + * @param p_DL_UM_RLC + * @param p_MAC_MainConfig (default value: omit) + * @param p_PhysicalConfigDedicated (default value: omit) + * @param p_PDCP_StatusReportRequired (default value: true) + * @status APPROVED (LTE) + */ + function f_EUTRA_GenericRbEst_UM_Params(EUTRA_CellId_Type p_CellId, + template (value) PDCP_Config p_PDCP_Config, + template (value) UL_UM_RLC p_UL_UM_RLC, + template (value) DL_UM_RLC p_DL_UM_RLC, + template (omit) MAC_MainConfig_Type p_MAC_MainConfig := omit, + template (omit) PhysicalConfigDedicated p_PhysicalConfigDedicated := omit, + boolean p_PDCP_StatusReportRequired := true) runs on EUTRA_PTC + { + var template (omit) DRB_ToAddModList v_DRB_ToAddModList:= omit; + + if(p_PDCP_StatusReportRequired) // @sic R5s110207 sic@ + { + v_DRB_ToAddModList[0] := cs_508_DRB_ToAddMod_DEFAULT_AM (tsc_DRB1); + } + else + { + v_DRB_ToAddModList[0] := cs_DRB_ToAddMod_NoPDCP_StatusReport (tsc_DRB1); + } + v_DRB_ToAddModList[1] := cs_DRB_ToAddMod_RLC_UM (tsc_DRB2, + p_PDCP_Config, + p_UL_UM_RLC, + p_DL_UM_RLC); + f_EUTRA_GenericRbEst_WithRLC_UM_Params (p_CellId, + v_DRB_ToAddModList, + p_MAC_MainConfig, + p_PhysicalConfigDedicated); + } + + } // end of group Generic_L2_RBSteps + + group Common_L2Functions { + + /* + * @desc to configure SS to transmit a PDCCH order + * @param p_CellId + * @param p_TimingInfo + * @param p_RA_PDCCH_Order + * @status APPROVED (LTE) + */ + function f_Send_PDCCH_Order(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (value) RA_PDCCH_Order_Type p_RA_PDCCH_Order) runs on EUTRA_PTC + { + SYS.send(cas_RA_PDCCH_Order(p_CellId, p_TimingInfo, p_RA_PDCCH_Order)); //@sic Baseline R5s100135: cas_RA_PDCCH_Order does not require a confirmation sic@ + } + + + /* + * @desc Wrapper function setting cell specific parameters + * @param p_CellId + * @param p_Dsr_TransMax (default value: n64) + * @return template (value) PhysicalConfigDedicated + * @status APPROVED (LTE, LTE_A) + */ + function f_PhysicalConfigDedicated_Dsr_TransMax(EUTRA_CellId_Type p_CellId, + Dsr_TransMax_Type p_Dsr_TransMax := n64) runs on EUTRA_PTC return template (value) PhysicalConfigDedicated + { + var template (value) EUTRA_FDD_TDD_CellInfo_Type v_EUTRA_FDD_TDD_Info := f_EUTRA_CellInfo_GetFDD_TDD_Info(p_CellId); + var SR_PUCCH_ResourceIndex_Type v_Sr_PUCCH_ResourceIndex := f_EUTRA_CellInfo_GetSR_PUCCH_ResourceIndex(p_CellId); + var template (value) PhysicalConfigDedicated_AntennaInfo_Type v_AntennaInfo := f_EUTRA_CellInfo_GetAntennaInfoDedicated (p_CellId); + var SR_ConfigIndex_Type v_SR_ConfigIndex := f_EUTRA_CellInfo_GetSR_ConfigIndex (p_CellId); + return cs_PhysicalConfigDedicated_Default_RBC_Dsr_TransMax(v_EUTRA_FDD_TDD_Info.cqi_ReportConfig, + v_EUTRA_FDD_TDD_Info.soundingRS_UL_Config, + v_AntennaInfo, + v_Sr_PUCCH_ResourceIndex, + v_SR_ConfigIndex, + p_Dsr_TransMax); + } + + + + } // end of group Common_L2Functions + +} // module diff --git a/LTE_A_IWD_14wk37/Common/EUTRA_L2/L2_CommonTemplates.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA_L2/L2_CommonTemplates.ttcn new file mode 100644 index 0000000..7a01477 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA_L2/L2_CommonTemplates.ttcn @@ -0,0 +1,898 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-08-09 21:19:23 +0200 (Sat, 09 Aug 2014) $ +// $Rev: 11868 $ +/******************************************************************************/ + +module L2_CommonTemplates { + import from CommonDefs all; + import from EUTRA_ASP_TypeDefs all; + import from EUTRA_ASP_DrbDefs all; + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_CommonDefs all; + import from EUTRA_AspCommon_Templates all; + import from EUTRA_RRC_Templates all; + import from EUTRA_DRB_Templates all; + import from EUTRA_CellCfg_Templates all; + + /******************************************************************************/ + /******************************************************************************/ + + group L2_CommonTypesAndConstants { + + //========================================================================= + //Constants + //========================================================================= + + const B2_Type tsc_B2_Reserved := '00'B; /* @status APPROVED (LTE, LTE_A) */ + const B3_Type tsc_B3_Reserved := '000'B; /* @status APPROVED (LTE, LTE_A) */ + + + /***** RLC: *****/ + const integer tsc_AM_SN_Size := 10; /* @status APPROVED (LTE, LTE_A) */ + + const integer tsc_UM_SN_Size_5 := 5; /* @desc The number of bits used to represent a 5 bits UM sequence number. + * Ref 3G TS 25.322 clause 6.2.2.3 + * @status APPROVED (LTE) */ + + const integer tsc_UM_SN_Size_10 := 10; /* @desc The number of bits used to represent a 10 bits UM sequence number. + * Ref 3G TS 36.322 clause 6.2.2.3 + * @status APPROVED (LTE) */ + + const B1_Type tsc_D_C_Control:= '0'B; /* @desc Value for D/C field within an AMD Control PDU. + * Ref 3G TS 36.322 clause 6.2.2.9 + * @status APPROVED (LTE, LTE_A) */ + + const B3_Type tsc_CPT_STATUSPDU := '000'B; /* @desc Value for CPT field to indicate that RLC Control PDU is a STATUS PDU. + * Ref 3G TS 36.322 clause 6.2.2.13 + * @status APPROVED (LTE, LTE_A) */ + + const B1_Type tsc_E1_NoNACK_Follows := '0'B; /* @desc Value to indicate that a set of NACK_SN, E1 and E2 does not follow. + * Ref 3G TS 36.322 clause 6.2.2.15 + * @status APPROVED (LTE, LTE_A) */ + + const B1_Type tsc_E_Data := '0'B; /* @desc Value for ExtBit in UMDPDU/AMDPDU/AMDPDUsegment when the next field is data. + * Ref 3G TS 36.322 clause 6.2.2.4 + * @status APPROVED (LTE, LTE_A) */ + + const RLC_FramingInfo_Type tsc_FI_FullSDU := '00'B; /* @desc Value to indicate that PDU contains a complete SDU. Ref 3G TS + * 36.322 clause 6.2.2.6 + * @status APPROVED (LTE) */ + + /***** PDCP: *****/ + const B1_Type tsc_D_C_CtrlPDU := '0'B; /* @desc Value for D/C field within an PDCP Control PDU. + * Ref 3G TS 36.323 clause 6.3.7 + * @status APPROVED (LTE) */ + + const B1_Type tsc_D_C_DataPDU := '1'B; /* @desc Value for D/C field within an PDCP Data PDU. + * Ref 3G TS 36.323 clause 6.3.7 + * @status APPROVED (LTE, LTE_A) */ + + const B1_Type tsc_R_Bit := '0'B; /* @desc Value for R field within an PDCP Data PDU. + * Ref 3G TS 36.323 clause 6.3.6 + * @status APPROVED (LTE) */ + + const integer tsc_PDCP_SN_Size_12 := 12; /* @desc The number of bits used to represent a PDCP sequence number. + * Ref 3G TS 36.323 clause 6.2.2.3 + * @status APPROVED (LTE) */ + const integer tsc_PDCP_SN_Size_7 := 7; /* @desc The number of bits used to represent a PDCP sequence number. + * Ref 3G TS 36.323 clause 6.2.2.3 + * @status APPROVED (LTE) */ + const integer tsc_Maximum_PDCP_SN_12 := 4095; /* @status APPROVED (LTE) */ + const integer tsc_Maximum_PDCP_SN_7 := 127; /* @status APPROVED (LTE) */ + const integer tsc_Maximum_PDCP_SN_5 := 31; /* @status APPROVED (LTE) */ + + const B3_Type tsc_PDU_Type_StatusRep := '000'B; /* @desc Value for PDU type field to indicate that Control PDU is a STATUS REPORT + * Ref 3G TS 36.323 clause 6.3.8 + * @status APPROVED (LTE) */ + + const B3_Type tsc_PDU_Type_ROHC_Fdbk := '001'B; /* @desc Value for PDU type field to indicate that Control PDU is a ROHC Feedback packet + * Ref 3G TS 36.323 clause 6.3.8 + * @status */ + + template (value) PDCP_SDU_Type crs_PDCP_SDU_16B := f_GetN_OctetsFromPRBS(0,16); /* @status APPROVED (LTE, LTE_A) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_17B := f_GetN_OctetsFromPRBS(0,17); /* @status APPROVED (LTE) */ + //@sic R5s110057 sic@ + + } // end of group L2_CommonTypesAndConstants + + /******************************************************************************/ + /******************************************************************************/ + + group Layer2_CommonTemplates { + + template (value) PDCP_Configuration_Type cs_PDCP_Configuration_None := + { /* @status APPROVED (LTE, LTE_A) */ + None := true //PDCP layer is not configured for the RB + }; + + template (value) HarqProcessAssignment_Type cs_HarqProcessAssignment_Specific(HarqProcessId_Type p_HarqProcessId := 0) := + { /* @status APPROVED (LTE, LTE_A) */ + Id := p_HarqProcessId + }; + + template (value) DRB_COMMON_REQ cas_DRB_PDCP_PDU_Req(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + RadioBearerId_Type p_RB_Id, + template (value) PDCP_PDU_Type p_PDU) := + { /* @status APPROVED (LTE) */ + Common := cs_ReqAspCommonPart_RB (p_CellId, p_RB_Id, p_TimingInfo), + U_Plane := { + SubframeDataList := { + { + SubframeOffset := 0, + HarqProcess := {Automatic := true}, + PduSduList := { PdcpPdu := {p_PDU}} + } + } + }, // U_Plane + SuppressPdcchForC_RNTI := omit + }; // cas_PDCPDataReq + + template (value) DRB_COMMON_REQ cas_DRB_COMMON_REQ_SubframeDataList(EUTRA_CellId_Type p_CellId, + RadioBearerId_Type p_RB_Id, + template (value) TimingInfo_Type p_TimingInfo, + template (value) DRB_DataPerSubframeList_DL_Type p_DataPerSubframeList) := + { /* @status APPROVED (LTE) */ + Common := cs_ReqAspCommonPart_RB(p_CellId, p_RB_Id, p_TimingInfo), + U_Plane := { + SubframeDataList := p_DataPerSubframeList + }, + SuppressPdcchForC_RNTI := omit + }; + + template (present) DRB_COMMON_IND car_DRB_PDCP_PDU_Ind(EUTRA_CellId_Type p_CellId, + RadioBearerId_Type p_RB_Id, + template (present) PDCP_PDU_Type p_PDU) := + { /* @status APPROVED (LTE) */ + Common := cr_IndAspCommonPart_RB (p_CellId, p_RB_Id), + U_Plane := { + SubframeData := { + PduSduList := { PdcpPdu := {p_PDU}}, + NoOfTTIs := 1 + // @sic R5w100222 slide 4 - RedundancyVersion removed sic@ + } + } // U_Plane + }; // car_PDCPDataInd + + template (value) PDCP_SDUList_Type cs_PDCP_SDUList_1 (template (value) PDCP_SDU_Type p_PDCP_SDU) := + { /* @status APPROVED (LTE, LTE_A) */ + p_PDCP_SDU + }; + + template (value) PDCP_SDUList_Type cs_PDCP_SDUList_2 (template (value) PDCP_SDU_Type p_PDCP_SDU1, + template (value) PDCP_SDU_Type p_PDCP_SDU2) := + { /* @status APPROVED (LTE) */ + p_PDCP_SDU1, + p_PDCP_SDU2 + }; + + template (present) PDCP_SDUList_Type cr_PDCP_SDUList_1(template (present) PDCP_SDU_Type p_PDCP_SDU) := + { /* @status APPROVED (LTE, LTE_A) */ + p_PDCP_SDU + }; + + template (present) PDCP_SDUList_Type cr_PDCP_SDUList_2(template (present) PDCP_SDU_Type p_PDCP_SDU1, + template (present) PDCP_SDU_Type p_PDCP_SDU2) := + { /* @status APPROVED (LTE) */ + p_PDCP_SDU1, + p_PDCP_SDU2 + }; + + template (value) PDCP_PDU_Type cs_PDCP_PDU_LongSN (template (value) PDCP_DataPdu_LongSN_Type p_PDCPPDU_LongSN):= + { /* @status APPROVED (LTE, LTE_A) */ + DataLongSN := p_PDCPPDU_LongSN + }; + + template (value) PDCP_DataPdu_LongSN_Type cs_PDCP_DataPdu_LongSN(B12_Type p_PDCP_SN_12B, + template (value) PDCP_SDU_Type p_PDCP_SDU) := + { /* @status APPROVED (LTE, LTE_A) */ + D_C := tsc_D_C_DataPDU, /* * 1 .......... Data PDU */ + Reserved := tsc_B3_Reserved, + SequenceNumber := p_PDCP_SN_12B, /* 12 bit sequence number */ + SDU := p_PDCP_SDU /* content (octetstring) */ + }; + + template (value) PDCP_PDU_Type cs_PDCP_DataLongSN(integer p_SN, + PDCP_SDU_Type p_PdcpSdu) := + /* @desc Template used for sending a PDCP PDU with long SN */ + /* @status APPROVED (LTE) */ + cs_PDCP_PDU_LongSN(cs_PDCP_DataPdu_LongSN(int2bit(p_SN, 12), p_PdcpSdu) ); + + template (value) PDCP_PDU_Type cs_PDCP_DataShortSN(integer p_SN, + PDCP_SDU_Type p_PdcpSdu) := + { /* @desc Template used for sending a PDCP PDU with short SN */ + /* @status APPROVED (LTE) */ + DataShortSN := { + D_C := tsc_D_C_DataPDU, + SequenceNumber := int2bit(p_SN, tsc_PDCP_SN_Size_7), + SDU := p_PdcpSdu + } + }; + + template (present) PDCP_PDU_Type cr_PDCP_DataLongSN(template (present) B12_Type p_SN, + template (present) octetstring p_PdcpSdu) := + { /* @desc Template used for receiving a PDCP PDU with long SN */ + /* @status APPROVED (LTE) */ + DataLongSN := { + D_C := tsc_D_C_DataPDU, + Reserved := tsc_R_Bit & tsc_R_Bit & tsc_R_Bit, + SequenceNumber := p_SN, + SDU := p_PdcpSdu + } + }; + + template (present) SYSTEM_IND car_SchedulingReq_IND (EUTRA_CellId_Type p_CellId, + template (present) TimingInfo_Type p_TimingInfo) := + { /* @status APPROVED (LTE, LTE_A) */ + Common := cr_IndAspCommonPart_SysInd (p_CellId,p_TimingInfo ), + Indication := { + SchedReq := true + } + }; + + template (value) DciDlInfoExplicit_Type cs_DciDlInfoExplicit_MIMO(template (value) Imcs_Type p_Imcs1, + template (value) Imcs_Type p_Imcs2, + PdcchDciFormat_Type p_Format, + PdcchResourceAllocation_Type p_ResourceAllocType, + integer p_Nprb, + integer p_FirstRbIndex := 0, + template (value) RedundancyVersionListDL_Type p_RedundancyVersionList := cs_RedundancyVersionListDL_Def, + B1_Type p_CodeWordSwapFlag := '0'B, + template (value) MIMO_PrecodingBits_Type p_PrecodingBits := cs_MIMO_PrecodingBits_None) := + { /* @status APPROVED (LTE) */ + Imcs_1stCW := p_Imcs1, + Imcs_2ndCW := p_Imcs2, + Format := p_Format, + ResourceAllocType := p_ResourceAllocType, + FreqDomainSchedul := cs_FreqDomainSchedulExplicit(p_FirstRbIndex, p_Nprb), //index of the first resource block in frequency domain set to 0 + RedundancyVersionList := p_RedundancyVersionList, + MimoInfo := cs_MIMO_DciDlInfo(p_CodeWordSwapFlag, p_PrecodingBits) // @sic R5-104109, R5w100215 sic@ + }; + + template (value) MIMO_PrecodingBits_Type cs_MIMO_PrecodingBits_None := + { /* @status APPROVED (LTE) */ + None := true /* DCI 2A: 2 antenna ports at eNodeB (table 5.3.3.1.5A-1) */ + }; + + template (value) Imcs_Type cs_Imcs_NotUsed := + { /* @status */ + NotUsed := true + }; + + template (value) Imcs_Type cs_Imcs_Value (ImcsValue_Type p_Imcs):= + { /* @status APPROVED (LTE) */ + Value := p_Imcs + }; + + template (value) MIMO_DciDlInfo_Type cs_MIMO_DciDlInfo(B1_Type p_CodeWordSwapFlag := '0'B, + template (value) MIMO_PrecodingBits_Type p_PrecodingBits := cs_MIMO_PrecodingBits_None) := + { /* @status APPROVED (LTE) */ + RedundancyVersionList_2ndCW := omit, /* omit, for the 2nd CW the same RedundancyVersionList shall be applied as for the 1st CW */ + CodeWordSwapFlag := p_CodeWordSwapFlag, /* transport block to codeword mapping acc. to TS 36.212 Table 5.3.3.1.5-1 */ + PrecodingBits := p_PrecodingBits /* precoding information acc. TS 36.212, table 5.3.3.1.5-3 and 5.3.3.1.5A-1 */ + }; + + } // end of group Layer2_CommonTemplates + + /******************************************************************************/ + /******************************************************************************/ + + group MAC_Constraints { + + template (value) L1Mac_IndicationControl_Type cs_EnableSR_Req(L1Mac_IndicationMode_Type p_SR_Mode) := + { /* @status APPROVED (LTE, LTE_A) */ + RachPreamble := omit, + SchedReq := p_SR_Mode, /* To enable/disable reporting of Scheduling Request received. */ + BSR := omit, + UL_HARQ := omit, + C_RNTI := omit, + PHR := omit, + HarqError := omit, + PeriodicRI := omit, + EPHR := omit, + PeriodicCQI := omit, + SRS := omit + }; + + + template (value) SYSTEM_CTRL_REQ cas_SchedulingReqIndConfig_REQ(EUTRA_CellId_Type p_CellId, + L1Mac_IndicationMode_Type p_SR_Mode) := + { /* @status APPROVED (LTE, LTE_A) */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, cs_TimingInfo_Now), + Request := { + L1MacIndCtrl := cs_EnableSR_Req(p_SR_Mode) + } + }; + } // end of group MAC_Constraints + + /******************************************************************************/ + /******************************************************************************/ + + group UL_Grant_DL_Allocation { + + //---------------------------------------------------------------------------- + + template (value) ULGrant_Period_Type cs_ULGrant_Period_Duration (integer p_Period) := + { /* @desc Configured UL Grant transmission periodic */ + /* @status APPROVED (LTE, LTE_A) */ + Duration := p_Period /* duration of the grant period (TTI=1ms) */ + }; + + template (value) ULGrant_Period_Type cs_ULGrant_EverySubFrame :={ + Duration := 1 /* duration of the grant period (TTI=1ms) */ + }; + + template (value) ULGrant_Period_Type cs_ULGrant_OneTime := + { /* @status APPROVED (LTE, LTE_A) */ + OnlyOnce := true + }; + + //---------------------------------------------------------------------------- + + template (value) TransmissionRepetition_Type cs_TransmissionRepetitionContinous := + { /* @status APPROVED (LTE, LTE_A) */ + Continuous := true + }; + + template (value) TransmissionRepetition_Type cs_TransmissionRepetitionCyclic(integer p_Cycles) := + { /* @status APPROVED (LTE, LTE_A) */ + NumOfCycles := p_Cycles + }; + + template (value) TransmissionRepetition_Type cs_TransmissionCycleOneTime := cs_TransmissionRepetitionCyclic(1); /* @status APPROVED (LTE, LTE_A) */ + + //---------------------------------------------------------------------------- + + template (value) UL_GrantConfig_Type cs_UL_GrantConfig_OneTime := + { /* @status APPROVED (LTE, LTE_A) */ + Periodic := { + Period := cs_ULGrant_OneTime, + NoOfRepetitions := cs_TransmissionCycleOneTime + } + }; + + template (value) UL_GrantConfig_Type cs_UL_GrantConfig_ContPeriodic(integer p_Period) := + { /* @status APPROVED (LTE, LTE_A) */ + Periodic := { + Period := cs_ULGrant_Period_Duration(p_Period), + NoOfRepetitions := cs_TransmissionRepetitionContinous + } + }; + + template (value) UL_GrantConfig_Type cs_UL_GrantConfig_NoOfGrants (integer p_Period, + integer p_Number) := + { /* @status APPROVED (LTE) */ + Periodic := { + Period := cs_ULGrant_Period_Duration(p_Period), + NoOfRepetitions := cs_TransmissionRepetitionCyclic(p_Number) + } + }; + + //============================================================================ + + + } // end of group UL_Grant_DL_Allocation + + /******************************************************************************/ + /******************************************************************************/ + + group RLC_CommonTemplates { + + template (value) RLC_AM_StatusPDU_Type cs_RLC_AM_StatusPDU_ACK_SN (integer p_AckSN) := + { /* @desc serves to transmit one STATUS PDU without NackList */ + /* @status APPROVED (LTE, LTE_A) */ + D_C := tsc_D_C_Control, /* 0 .......... Control PDU + * 1 .......... Data PDU */ + Type := tsc_CPT_STATUSPDU, /* 000 ........ STATUS PDU + * 001-111 .... Reserved (=> PDU to be discarded by the receiving entity + * for this release of the protocol) */ + Ack := { + ACK_SN := int2bit (p_AckSN, tsc_AM_SN_Size), + Extn1 := tsc_E1_NoNACK_Follows + }, + NackList := omit, /* presence depends on Extn1 bit of Ack filed (RLC_Status_ACK_Type) */ + Padding := '1'B /* 1..7 bit padding if needed for octet alignment */ + }; + + template (present) RLC_AM_StatusPDU_Type cr_RLC_AM_StatusPDU_ACK_SN_Bit (template (present) B10_Type p_AckSN_Bits) := + { /* @desc serves to receive one STATUS PDU without NackList and Padding */ + /* @status APPROVED (LTE) */ + D_C := tsc_D_C_Control, /* 0 .......... Control PDU + * 1 .......... Data PDU */ + Type := tsc_CPT_STATUSPDU, /* 000 ........ STATUS PDU + * 001-111 .... Reserved (=> PDU to be discarded by the receiving entity + * for this release of the protocol) */ + Ack := { + ACK_SN := p_AckSN_Bits, + Extn1 := tsc_E1_NoNACK_Follows + }, + NackList := omit, + Padding := '?'B + }; + + template (present) RLC_AM_StatusPDU_Type cr_RLC_AM_StatusPDU_ACK_SN (integer p_AckSN) := + /* @status APPROVED (LTE) */ + cr_RLC_AM_StatusPDU_ACK_SN_Bit (int2bit (p_AckSN, tsc_AM_SN_Size)); + + + template (value) UL_AM_RLC cds_TX_AM_RLC_t_PollRetransmit (T_PollRetransmit p_T_PollRetransmit) + modifies cs_508_DRB_UL_AM_RLC := + { /* @status APPROVED (LTE) */ + t_PollRetransmit := p_T_PollRetransmit + }; + + + } // end of group RLC_CommonTemplates + + /******************************************************************************/ + /******************************************************************************/ + + group DRB_UM { + + template (value) PDCP_Config cds_DRB_PDCP_Conf_UM_ModifyDiscardTime (PDCP_Config.discardTimer p_DiscardTimer) + modifies cs_508_PDCP_Config_DRB_UM := + { /* @status APPROVED (LTE) */ + discardTimer := p_DiscardTimer + }; + + template (value) DRB_ToAddMod cs_508_DRB_ToAddMod_UM_DiscardTimer_300ms (DRB_Identity p_DRB_Id) := + /* According to 36.508 cl. 4.8.2.1.7 Table 4.8.2.1.7-1 (using condition UM) */ + /* @status APPROVED (LTE) */ + cs_508_DRB_ToAddMod_Common(p_DRB_Id, + cds_DRB_PDCP_Conf_UM_ModifyDiscardTime(ms300), + cs_508_RLC_Config_DRB_UM, + cs_508_LogicalChannelConfig_DRB_UM); + + template (value) RadioBearer_Type cs_DRB2_ConfigUM_TM_Mode_SN10 := + { /* @status APPROVED (LTE) */ + Id := { + Drb := tsc_DRB2 + }, + Config := { + AddOrReconfigure := { + Pdcp := cs_PDCP_Configuration_None, + Rlc := { + Rb := { + TM := true + }, + TestMode := { + Info := { + TransparentMode_UMDwith10BitSN := true // @sic R5w100002r1 sic@ + } + } + }, + LogicalChannelId := tsc_DRB2+2, + Mac := cs_MAC_Configuration_UM, // @sic R5s090314: Additional comments sic@ + DiscardULData := omit // @sic RAN5 #55 sidebar meeting sic@ + } + } + }; + + template (value) RadioBearer_Type cds_DRB2_ConfigUM_TM_Mode_SN5 modifies cs_DRB2_ConfigUM_TM_Mode_SN10 := + { /* @status APPROVED (LTE) */ + Config := { + AddOrReconfigure := { + Rlc := { + TestMode := { + Info := { + TransparentMode_UMDwith5BitSN := true // @sic R5w100002r1 sic@ + } + } + } + } + } + }; + + //---------------------------------------------------------------------------- + + template (value) PDCP_Config cds_PDCP_Config_DRB_UM_SN7 + modifies cs_508_PDCP_Config_DRB_UM := + { /* @status APPROVED (LTE) */ + /* @sic R5s100302 sic@ */ + rlc_UM := { + pdcp_SN_Size := len7bits + } + }; + + template (value) UL_UM_RLC cds_TX_UM_RLC_DRB_SN5 modifies cs_508_DRB_UL_UM_RLC := + { /* for the UE the tx direction is the UL, for SS it is the DL */ + /* @status APPROVED (LTE) */ + sn_FieldLength := size5 + }; + + template (value) DL_UM_RLC cds_RX_UM_RLC_DRB_SN5 modifies cs_508_DRB_DL_UM_RLC := + { /* for the UE the rx direction is the DL, for SS it is the UL */ + /* @status APPROVED (LTE) */ + sn_FieldLength := size5 + }; + + + template (value) RLC_UMD_PDU_Type cs_UMD_PDU_NoLIs_SN10(integer p_SN, + RLC_FramingInfo_Type p_FramingInfo, + RLC_DataFieldList_Type p_Data) := + { /* serves to transmit one UMD PDU without Length Indicators */ + /* @status APPROVED (LTE) */ + LongSN := { + Header := { + FixPart := { + Reserved := tsc_B3_Reserved, + FramingInfo := p_FramingInfo, + Extension := tsc_E_Data, + SequenceNumber := int2bit (p_SN, tsc_UM_SN_Size_10) + }, + FlexPart := omit + }, + Data := p_Data + } + }; + + template (value) RLC_UMD_PDU_Type cs_UMD_PDUoneSDU_SN10(integer p_SN, + RLC_DataFieldList_Type p_RLC_SduData) := + /* serves to transmit one SDU in one UMD PDU */ + /* @status APPROVED (LTE) */ + cs_UMD_PDU_NoLIs_SN10(p_SN, tsc_FI_FullSDU, p_RLC_SduData); + + template (present) RLC_UMD_PDU_Type cr_UMD_PDU_SN10 (integer p_SN, + template RLC_FramingInfo_Type p_FI, + template RLC_DataFieldList_Type p_RLC_SduData) := + { /* @status APPROVED (LTE) */ + LongSN := { + Header := { + FixPart := { + Reserved := tsc_B3_Reserved, + FramingInfo := p_FI, + Extension := tsc_E_Data, + SequenceNumber := int2bit (p_SN, tsc_UM_SN_Size_10) + }, + FlexPart := omit + }, + Data := p_RLC_SduData + } + }; + + template (value) DRB_ToAddMod cs_DRB_ToAddMod_RLC_UM (DRB_Identity p_DRB_Id, + template (value) PDCP_Config p_PDCP_Config, + template (value) UL_UM_RLC p_UL_UM_RLC, + template (value) DL_UM_RLC p_DL_UM_RLC) := + /* According to 36.508 cl. 4.8.2.1.7 Table 4.8.2.1.7-1 (using condition AM) */ + /* @status APPROVED (LTE) */ + cs_508_DRB_ToAddMod_Common(p_DRB_Id, + p_PDCP_Config, + cs_RLC_Config_DRB_UM (p_UL_UM_RLC, + p_DL_UM_RLC), + cs_508_LogicalChannelConfig_DRB_UM); + + template (value) RLC_Config cs_RLC_Config_DRB_UM (template (value) UL_UM_RLC p_UL_UM_RLC, + template (value) DL_UM_RLC p_DL_UM_RLC):= + { /* @status APPROVED (LTE) */ + um_Bi_Directional := { + ul_UM_RLC := p_UL_UM_RLC, + dl_UM_RLC := p_DL_UM_RLC + } + }; + + } // end of group DRB_UM + + /******************************************************************************/ + /******************************************************************************/ + + group L1_MAC_Indication { + + template (value) L1Mac_IndicationControl_Type cs_EnableBSR_Req(L1Mac_IndicationMode_Type p_BSR_Mode) := + { /* @status APPROVED (LTE, LTE_A) */ + RachPreamble := omit, + SchedReq := omit, /* To enable/disable reporting of Scheduling Request received. */ + BSR := p_BSR_Mode, + UL_HARQ := omit, + C_RNTI := omit, + PHR := omit, + HarqError := omit, + PeriodicRI := omit, + EPHR := omit, + PeriodicCQI := omit, + SRS := omit + }; + + template (value) SYSTEM_CTRL_REQ cas_BSR_IndConfig_REQ(EUTRA_CellId_Type p_CellId, + L1Mac_IndicationMode_Type p_BSR_Mode, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now) := + { /* @status APPROVED (LTE, LTE_A) */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, p_TimingInfo), + Request := { + L1MacIndCtrl := cs_EnableBSR_Req(p_BSR_Mode) + } + }; + + template (value) SYSTEM_CTRL_REQ cas_PHR_IndConfig_REQ(EUTRA_CellId_Type p_CellId, + L1Mac_IndicationMode_Type p_PHR_Mode) := + { /* @status APPROVED (LTE) */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, cs_TimingInfo_Now), + Request := { + L1MacIndCtrl := cs_EnablePHR_Req(p_PHR_Mode) + } + }; + template (value) SYSTEM_CTRL_REQ cas_EPHR_IndConfig_REQ(EUTRA_CellId_Type p_CellId, + L1Mac_IndicationMode_Type p_EPHR_Mode) := + { /* @status APPROVED (LTE_A) */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, cs_TimingInfo_Now), + Request := { + L1MacIndCtrl := cs_EnableEPHR_Req(p_EPHR_Mode) + } + }; + template (value) SYSTEM_CTRL_REQ cas_UL_HARQ_IndConfig_REQ(EUTRA_CellId_Type p_CellId, + L1Mac_IndicationMode_Type p_UL_HARQ_Mode, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now, //@sic R5s120024 sic@ + template (omit) boolean p_CnfFlag := omit) := + { /* @status APPROVED (LTE, LTE_A) */ + /* @sic R5s120201: parameter p_CnfFlag sic@ */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, p_TimingInfo, p_CnfFlag), + Request := { + L1MacIndCtrl := cs_EnableUL_HARQ_Req(p_UL_HARQ_Mode) + } + }; + + template (value) SYSTEM_CTRL_REQ cas_SRS_IndConfig_REQ(EUTRA_CellId_Type p_CellId, + L1Mac_IndicationMode_Type p_SRS_Mode, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now) := + { + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, p_TimingInfo), + Request := { + L1MacIndCtrl := cs_EnableSRS_Req(p_SRS_Mode) + } + }; + + template (value) L1Mac_IndicationControl_Type cs_EnableUL_HARQ_Req(L1Mac_IndicationMode_Type p_HARQ_Mode) := + { /* @status APPROVED (LTE, LTE_A) */ + RachPreamble := omit, + SchedReq := omit, + BSR := omit, + UL_HARQ := p_HARQ_Mode, + C_RNTI := omit, + PHR := omit, + HarqError := omit, + PeriodicRI := omit, + EPHR := omit, + PeriodicCQI := omit, + SRS := omit + }; + + template (value) L1Mac_IndicationControl_Type cs_EnablePHR_Req(L1Mac_IndicationMode_Type p_PHR_Mode) := + { /* @status APPROVED (LTE) */ + RachPreamble := omit, + SchedReq := omit, + BSR := omit, + UL_HARQ := omit, + C_RNTI := omit, + PHR := p_PHR_Mode, + HarqError := omit, + PeriodicRI := omit, + EPHR := omit, + PeriodicCQI := omit, + SRS := omit + }; + template (value) L1Mac_IndicationControl_Type cs_EnableEPHR_Req(L1Mac_IndicationMode_Type p_EPHR_Mode) := + { /* @status APPROVED (LTE_A) */ + RachPreamble := omit, + SchedReq := omit, + BSR := omit, + UL_HARQ := omit, + C_RNTI := omit, + PHR := omit, + HarqError := omit, + PeriodicRI := omit, + EPHR := p_EPHR_Mode, + PeriodicCQI := omit, + SRS := omit + }; + + template (value) L1Mac_IndicationControl_Type cs_EnableSRS_Req(L1Mac_IndicationMode_Type p_SRS_Mode) := + { /* @status */ + RachPreamble := omit, + SchedReq := omit, + BSR := omit, + UL_HARQ := omit, + C_RNTI := omit, + PHR := omit, + HarqError := omit, + PeriodicRI := omit, + EPHR := omit, + PeriodicCQI := omit, + SRS := p_SRS_Mode + }; + + template (present) BSR_Type cr_LongBSR_Ind(template (present) integer p_BS1, + template (present) integer p_BS2, + template (present) integer p_BS3, + template (present) integer p_BS4) := + { /* @status APPROVED (LTE) */ + Long :={ + Value_LCG1 := p_BS1, /* BSR value for LCG 1 */ + Value_LCG2 := p_BS2, /* BSR value for LCG 2 */ + Value_LCG3 := p_BS3, /* BSR value for LCG 3 */ + Value_LCG4 := p_BS4 /* BSR value for LCG 4 */ + } + }; + + template (present) BSR_Type cr_ShortBSR_Ind(template (present) integer p_LCG, + template (present) integer p_BSR_Value) := + { /* @status APPROVED (LTE) */ + Short := { + LCG := p_LCG, /* Logical channel Group */ + Value := p_BSR_Value /* BSR value */ + } + }; + + template (present) SYSTEM_IND car_BSR_IND(EUTRA_CellId_Type p_CellId, + template (present) TimingInfo_Type p_TimingInfo, + template (present) BSR_Type p_BSR_Type) := + { /* @status APPROVED (LTE, LTE_A) */ + Common := cr_IndAspCommonPart_SysInd (p_CellId,p_TimingInfo ), + Indication := { + BSR := p_BSR_Type + } + }; + + template (present) SYSTEM_IND car_UL_HARQ_IND(EUTRA_CellId_Type p_CellId, + template (present) TimingInfo_Type p_TimingInfo, + template (present) HARQ_Type p_HARQ_Type) := + { /* @status APPROVED (LTE, LTE_A) */ + Common := cr_IndAspCommonPart_SysInd (p_CellId, p_TimingInfo), + Indication := { + UL_HARQ := p_HARQ_Type + } + }; + + template (present) SYSTEM_IND car_SRS_IND(EUTRA_CellId_Type p_CellId, + template (present) TimingInfo_Type p_TimingInfo, + template (present) SRSInd_Type p_SrsInd) := + { + Common := cr_IndAspCommonPart_SysInd (p_CellId, p_TimingInfo), + Indication := { + SrsInd := p_SrsInd + } + }; + } // end of group L1_MAC_Indication + + /******************************************************************************/ + /******************************************************************************/ + + group Generic_L2_RRC_ReconfigTemplates{ + + template (value) MAC_MainConfig_Type cs_508_MAC_MainConfig_Explicit_RBC_DrxL_DisableBSR_PHR := + /* @status APPROVED (LTE, LTE_A) */ + /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + cs_MAC_MainConfig_Explicit_DisableBSR_ReleasePHR(f_GetUeDrxConfig(DRX_L)); + + template (value) MAC_MainConfig_Type cs_508_MAC_MainConfig_Explicit_RBC_DrxS_DisableBSR_PHR := + /* @status APPROVED (LTE, LTE_A) */ + /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + cs_MAC_MainConfig_Explicit_DisableBSR_ReleasePHR(f_GetUeDrxConfig(DRX_S)); + + template (value) MAC_MainConfig_Type cs_MAC_MainConfig_Explicit_DisableBSR_TA_Infinity := + { /* @status APPROVED (LTE, LTE_A) */ + explicitValue := cs_MAC_MainConfig_Common(cs_UL_SCH_Config_DisableBSR, f_GetUeDrxConfig(DRX_L), infinity_, cs_PHR_Config_Release) + }; + + template (value) MAC_MainConfig_Type cs_MAC_MainConfig_Explicit_DisableBSR_ReleasePHR_V1020(template (omit) DRX_Config p_DRX_Config, + TimeAlignmentTimer p_TimeAlignmentTimer := sf750, + template (omit) MAC_MainConfig_v1020_Type p_MAC_MainConfig_v1020 := omit) := + { /* @status APPROVED (LTE_A) */ + explicitValue := cds_MAC_MainConfig_Common_V1020(cs_UL_SCH_Config_DisableBSR, p_DRX_Config, p_TimeAlignmentTimer, cs_PHR_Config_Release, -, p_MAC_MainConfig_v1020) + }; + + template (value) MAC_MainConfig_Type cs_508_MAC_MainConfig_Explicit_RBC_DrxL_DisableBSR_PHR_V1020 (template (omit) MAC_MainConfig_v1020_Type p_MAC_MainConfig_v1020 := omit) := + /* @status APPROVED (LTE_A) */ + cs_MAC_MainConfig_Explicit_DisableBSR_ReleasePHR_V1020(f_GetUeDrxConfig(DRX_L), -, p_MAC_MainConfig_v1020); + + template (value) MAC_MainConfig cds_MAC_MainConfig_Common_V1020(template (omit) UL_SCH_Config_Type p_UL_SCH_Config := cs_508_UL_SCH_Config, + template (omit) DRX_Config p_DRX_Config := omit, + TimeAlignmentTimer p_TimeAlignmentTimer := sf750, + template (omit) PHR_Config_Type p_PHR_Config := cs_508_PHR_Config_Setup, + template (omit) SR_ProhibitTimer_r9_Type p_SR_ProhibitTimer_r9 := omit, + template (omit) MAC_MainConfig_v1020_Type p_MAC_MainConfig_v1020 := omit) + modifies cs_MAC_MainConfig_Common := + { /* @status APPROVED (LTE_A) */ + + mac_MainConfig_v1020 := p_MAC_MainConfig_v1020 + }; + + template (value) MAC_MainConfig_Type cds_MAC_MainConfig_Explicit_PeriodicBSR_Timer (PeriodicBSR_Timer_Type p_PeriodicBSR_Timer) + modifies cs_508_MAC_MainConfig_Explicit_RBC_DrxL_DisableBSR_PHR := + { /* @status APPROVED (LTE) */ + explicitValue := { + ul_SCH_Config := { + // maxHARQ_Tx := n5 + periodicBSR_Timer := p_PeriodicBSR_Timer + // retxBSR_Timer := sf10240 + // ttiBundling := false + } + } + }; + + } // end of group Generic_L2_RRC_ReconfigTemplates + + template (value) PhysicalConfigDedicated cs_PhysicalConfigDedicated_Default_RBC_Dsr_TransMax(template (omit) CQI_ReportPeriodic p_CQI_ReportingPeriodic, + template (omit) SoundingRS_UL_ConfigDedicated p_SoundingRsUl_ConfigDedicated, + template (value) PhysicalConfigDedicated_AntennaInfo_Type p_AntennaInfo, + SR_PUCCH_ResourceIndex_Type p_SR_PUCCH_ResourceIndex, + SR_ConfigIndex_Type p_SR_ConfigIndex, + Dsr_TransMax_Type p_Dsr_TransMax := n64) := + /* @status APPROVED (LTE, LTE_A) */ + /* @sic R5-102177 R5-104798 R5s100473: additional changes sic@ */ + /* @sic R5s120663 change 6: cs_508_PhysicalConfigDedicated_Default_RBC_HO sic@ */ + cs_508_PhysicalConfigDedicated_Default_RBC_HO(-, + p_CQI_ReportingPeriodic, + p_SoundingRsUl_ConfigDedicated, + p_AntennaInfo, + cs_508_SchedulingRequest_Config_Default (p_SR_PUCCH_ResourceIndex, p_SR_ConfigIndex, p_Dsr_TransMax)); + + template (value) PDCP_Config cds_508_PDCP_Config_DRB_AM_NoStatusRep modifies cs_508_PDCP_Config_DRB_AM:= + { /* Default values according to 36.508 cl. 4.8.2.1.2.2 Table 4.8.2.1.2.2-1 + except Status Required is set as false*/ + /* @status APPROVED (LTE) */ + //@sic R5-103816 PDCP Status report made as false sic@ + rlc_AM := { + statusReportRequired := false + } + }; + + template (value) DRB_ToAddMod cs_508_DRB_ToAddMod_AM_NoStatusRep (DRB_Identity p_DRB_Id) := + /* According to 36.508 cl. 4.8.2.1.7 Table 4.8.2.1.7-1 (using condition AM) + except Status Required is set as false*/ + /* @status APPROVED (LTE) */ + //@sic R5-103816 PDCP Status report made as false sic@ + cs_508_DRB_ToAddMod_Common(p_DRB_Id, + cds_508_PDCP_Config_DRB_AM_NoStatusRep, + cs_508_RLC_Config_DRB_AM, + cs_508_LogicalChannelConfig_DRB_AM); + + //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + template (value) DciDlInfo_Type cs_DciDLInfo_Explicit (template (value) DciDlInfoExplicit_Type p_DciDlInfoExplicit) := + { /* @status APPROVED (LTE, LTE_A) */ + Explicit := p_DciDlInfoExplicit + }; + + template (value) SYSTEM_CTRL_REQ cas_CcchDcchDtchDL_Config_REQ(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (omit) DciDlInfo_Type p_DciDlInfo := omit, + template (omit) AntennaInfoDedicated_Type p_AntennaInfoDedicated := omit, + template (omit) HarqProcessConfigDL_Type p_HarqProcessConfigDL:= omit) := + { /* @status APPROVED (LTE, LTE_A) */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, p_TimingInfo), + Request := { + Cell := { + AddOrReconfigure := { + Basic := omit, + Active := { + C_RNTI := omit, + PhysicalLayerConfigUL := omit, + RachProcedureConfig := omit, + CcchDcchDtchConfig := { + MeasGapCtrl := omit, + DL := { + DciInfo := p_DciDlInfo, + AntennaInfo := p_AntennaInfoDedicated, + HarqProcessConfig := p_HarqProcessConfigDL + }, + UL := omit, + DrxCtrl := omit, + TtiBundling := omit, + CifPresence := omit + }, + ServingCellConfig := omit + } + } + } + } + }; + + + +} // module diff --git a/LTE_A_IWD_14wk37/Common/EUTRA_L2/MAC_Common.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA_L2/MAC_Common.ttcn new file mode 100644 index 0000000..16f85b1 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA_L2/MAC_Common.ttcn @@ -0,0 +1,900 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-05 19:27:02 +0200 (Fri, 05 Sep 2014) $ +// $Rev: 12079 $ +/******************************************************************************/ + +module MAC_Common { + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from CommonDefs all; + import from EUTRA_ASP_TypeDefs all; + import from EUTRA_AspCommon_Templates all; + import from EUTRA_CommonDefs all; + import from EUTRA_Component all; + import from EUTRA_ASP_DrbDefs all; + import from EUTRA_DRB_Templates all; + import from EUTRA_RRC_Templates all; + import from EUTRA_CellCfg_Templates all; + import from EUTRA_ConfigurationSteps all; + import from L2_CommonTemplates all; + import from L2_CommonFunctions all; + + const integer tsc_SubframeOffset0 := 0; /* @status APPROVED (LTE, LTE_A) */ + + const B1_Type tsc_ExtensionMoreHeaders := '1'B; /* @status APPROVED (LTE, LTE_A) */ + const B1_Type tsc_ExtensionNoMoreHeaders := '0'B; /* @status APPROVED (LTE, LTE_A) */ + const B5_Type tsc_LchId_TA := '11101'B; /* @status APPROVED (LTE) */ + const B2_Type tsc_Framing00 := '00'B; /* @status APPROVED (LTE, LTE_A) */ + const B5_Type tsc_LchId_DRB1 := '00011'B; /* @status APPROVED (LTE, LTE_A) */ + const B5_Type tsc_LchId_DRB3 := '00101'B; /* @status APPROVED (LTE) */ + const B5_Type tsc_LchId_CRNTI :='11011'B; /* @status APPROVED (LTE) */ + const B5_Type tsc_LchId_TruncatedBSR := '11100'B; /* @status APPROVED (LTE) */ + const B5_Type tsc_LchId_ShortBSR := '11101'B; /* @status APPROVED (LTE) */ + const B5_Type tsc_LchId_LongBSR := '11110'B; /* @status APPROVED (LTE) */ + const B5_Type tsc_LchId_DRX := '11110'B; /* @status APPROVED (LTE) */ + const B1_Type tsc_Poll := '1'B; /* @status APPROVED (LTE) */ + const B1_Type tsc_NoPoll := '0'B; /* @status APPROVED (LTE, LTE_A) */ + const B12_Type tsc_B12_SQN0 := int2bit(0,12); /* @status APPROVED (LTE, LTE_A) */ + const B12_Type tsc_B12_SQN1 := int2bit(1,12); /* @status APPROVED (LTE) */ + const B12_Type tsc_B12_SQN2 := int2bit(2,12); /* @status APPROVED (LTE) */ + const B12_Type tsc_B12_SQN3 := int2bit(3,12); /* @status APPROVED (LTE) */ + const B12_Type tsc_B12_SQN4 := int2bit(4,12); /* @status APPROVED (LTE) */ + const B12_Type tsc_B12_SQN5 := int2bit(5,12); /* @status APPROVED (LTE) */ + const B12_Type tsc_B12_SQN6 := int2bit(6,12); /* @status APPROVED (LTE) */ + const B12_Type tsc_B12_SQN7 := int2bit(7,12); /* @status APPROVED (LTE) */ + const B12_Type tsc_B12_SQN8 := int2bit(8,12); /* @status APPROVED (LTE) */ + const B5_Type tsc_LchId_Padding := '11111'B; /* @status APPROVED (LTE, LTE_A) */ + const B5_Type tsc_LchId_ScellActDeact := '11011'B; /* @status APPROVED (LTE_A) */ + const B5_Type tsc_LchId_DRB2 := '00100'B; /* @status APPROVED (LTE) */ + const PDCP_SDU_Type tsc_Empty := ''O; + const B6_Type tsc_BS_0 :='000000'B; /* @status APPROVED (LTE) */ + const B6_Type tsc_BS_0to10 :='000001'B; + const B6_Type tsc_BS_10to12 :='000010'B; + const B6_Type tsc_BS_12to14 :='000011'B; + const B1_Type tsc_NDI0 := '0'B; + const B1_Type tsc_NDI1 := '1'B; + + //============================================================================ + + template (value) PDCP_SDU_Type crs_PDCP_SDU_12B := f_GetN_OctetsFromPRBS(100,12); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_12B1 := f_GetN_OctetsFromPRBS(200,12); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_13B := f_GetN_OctetsFromPRBS(100,13); + template (value) PDCP_SDU_Type crs_PDCP_SDU_4B := f_GetN_OctetsFromPRBS(120,4); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_6B := f_GetN_OctetsFromPRBS(40,6); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_5B := f_GetN_OctetsFromPRBS(40,5); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_7B := f_GetN_OctetsFromPRBS(40,7); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_9B := f_GetN_OctetsFromPRBS(40,9); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_1B := f_GetN_OctetsFromPRBS(1250,1); + template (value) PDCP_SDU_Type crs_PDCP_SDU_2B := f_GetN_OctetsFromPRBS(1250,2); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_10B := f_GetN_OctetsFromPRBS(0,10); /* @status APPROVED (LTE, LTE_A) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_10B1 := f_GetN_OctetsFromPRBS(100,10); + template (value) PDCP_SDU_Type crs_PDCP_SDU_10B2 := f_GetN_OctetsFromPRBS(200,10); + template (value) PDCP_SDU_Type crs_PDCP_SDU_10B3 := f_GetN_OctetsFromPRBS(300,10); + template (value) PDCP_SDU_Type crs_PDCP_SDU_16B1 := f_GetN_OctetsFromPRBS(10,16); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_16B2 := f_GetN_OctetsFromPRBS(20,16); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_16B3 := f_GetN_OctetsFromPRBS(30,16); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_16B4 := f_GetN_OctetsFromPRBS(40,16); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_16B5 := f_GetN_OctetsFromPRBS(50,16); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_16B6 := f_GetN_OctetsFromPRBS(60,16); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_16B7 := f_GetN_OctetsFromPRBS(70,16); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_16B8 := f_GetN_OctetsFromPRBS(80,16); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_16B9 := f_GetN_OctetsFromPRBS(90,16); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_19B := f_GetN_OctetsFromPRBS(0,19); + template (value) PDCP_SDU_Type crs_PDCP_SDU_29B := f_GetN_OctetsFromPRBS(0,29); + template (value) PDCP_SDU_Type crs_PDCP_SDU_21B := f_GetN_OctetsFromPRBS(0,21); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_23B := f_GetN_OctetsFromPRBS(0,23); + template (value) PDCP_SDU_Type crs_PDCP_SDU_19B1 := f_GetN_OctetsFromPRBS(20,19); + template (value) PDCP_SDU_Type crs_PDCP_SDU_40B := f_GetN_OctetsFromPRBS(20,40); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_36B := f_GetN_OctetsFromPRBS(20,36); /* @status APPROVED (LTE, LTE_A) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_36B1 := f_GetN_OctetsFromPRBS(30,36); /* @status APPROVED (LTE_A) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_36B2 := f_GetN_OctetsFromPRBS(40,36); /* @status APPROVED (LTE_A) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_320B := f_GetN_OctetsFromPRBS(20,320); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_124B := f_GetN_OctetsFromPRBS(0,124); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_Padding_5Bytes := f_GetN_OctetsFromPRBS(1000,5); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_Padding_1Bytes := f_GetN_OctetsFromPRBS(1000,1); + template (value) PDCP_SDU_Type crs_Padding_3Bytes := f_GetN_OctetsFromPRBS(1000,3); /* @status APPROVED (LTE_A) */ + template (value) PDCP_SDU_Type crs_Padding_2Bytes := f_GetN_OctetsFromPRBS(1000,2); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_Padding_4Bytes := f_GetN_OctetsFromPRBS(1000,4); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_Padding_7Bytes := f_GetN_OctetsFromPRBS(1000,7); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_Padding_8Bytes := f_GetN_OctetsFromPRBS(1000,8); /* @status */ + template (value) PDCP_SDU_Type crs_Padding_9Bytes := f_GetN_OctetsFromPRBS(1000,9); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_Padding_6Bytes := f_GetN_OctetsFromPRBS(1000,6); /* @status APPROVED (LTE, LTE_A) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_L37 := f_GetN_OctetsFromPRBS(500,37); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_L36 := f_GetN_OctetsFromPRBS(500,36); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_L38 := f_GetN_OctetsFromPRBS(550,38); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_L38_1 := f_GetN_OctetsFromPRBS(750,38); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_L39 := f_GetN_OctetsFromPRBS(200,39); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_L39_1 := f_GetN_OctetsFromPRBS(500,39); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_L40 := f_GetN_OctetsFromPRBS(300,40); /* @status */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_L41 := f_GetN_OctetsFromPRBS(300,41); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_L42 := f_GetN_OctetsFromPRBS(300,42); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_L50 := f_GetN_OctetsFromPRBS(300,50); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_L128 := f_GetN_OctetsFromPRBS(0,128); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_L125 := f_GetN_OctetsFromPRBS(600,125); + template (value) PDCP_SDU_Type crs_PDCP_SDU_L126 := f_GetN_OctetsFromPRBS(100,126); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_L123 := f_GetN_OctetsFromPRBS(750,123); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_L3 := f_GetN_OctetsFromPRBS(100,3); + template (value) PDCP_SDU_Type crs_PDCP_SDU_L6 := f_GetN_OctetsFromPRBS(500,6); + template (value) PDCP_SDU_Type crs_PDCP_SDU_L8 := f_GetN_OctetsFromPRBS(200,8); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_L9 := f_GetN_OctetsFromPRBS(210,9); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_L10 := f_GetN_OctetsFromPRBS(220,10); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type cs_PDCP_SDU_L318 := f_GetN_OctetsFromPRBS(1200,318); /* @status APPROVED (LTE) */ + template (value) PDCP_SDU_Type crs_PDCP_SDU_L58 := f_GetN_OctetsFromPRBS(1200,58); /* @status APPROVED (LTE_A) */ + + //============================================================================ + template (present) octetstring cr_Octet14_Any := ? length(14); /* @status APPROVED (LTE, LTE_A) */ + //============================================================================ + template (present) MAC_PDU_SubHeader_Type cr_MAC_PDU_PaddingSubHeader_MoreSubHeaders := cds_MAC_PDU_PaddingSubHeader_MoreSubHeaders; /* @status APPROVED (LTE) */ + + template (value) MAC_MainConfig cs_MAC_MainConfig_PHR_Config(template (value) PHR_Config_Type p_PHR_Config) := + /* @status APPROVED (LTE, LTE_A) */ + cs_MAC_MainConfig_Common(omit, omit, sf750, p_PHR_Config); /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + + template (value) MAC_MainConfig cs_MAC_MainConfiguration_PHR_Disable := + /* @status APPROVED (LTE, LTE_A) */ + /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + cs_MAC_MainConfig_PHR_Config(cs_PHR_Config_Release); + + //---------------------------------------------------------------------------- + + template (value) DciDlInfoExplicit_Type cs_DciDlInfoExplicit(ImcsValue_Type p_Imcs, //MCS index of table 8.6.1-1 of 36.213 + PdcchDciFormat_Type p_Format, + PdcchResourceAllocation_Type p_ResourceAllocType, + integer p_Nprb, //number of resource blocks to be assigned + integer p_FirstRbIndex := 0, //index of first resource block, default =0 + template (value) RedundancyVersionListDL_Type p_RedundancyVersionList := cs_RedundancyVersionListDL_Def) := + { /* @status APPROVED (LTE, LTE_A) */ + //@sic R5-104710 new parameter p_RedundancyVersionList added sic@ + Imcs_1stCW := {Value := p_Imcs}, + Imcs_2ndCW := {NotUsed := true}, + Format := p_Format, + ResourceAllocType := p_ResourceAllocType, + FreqDomainSchedul := cs_FreqDomainSchedulExplicit(p_FirstRbIndex, p_Nprb), //index of the first resource block in frequency domain set to 0 + RedundancyVersionList := p_RedundancyVersionList, + MimoInfo := omit // @sic R5-104109, R5w100215 sic@ + }; + + //---------------------------------------------------------------------------- + + template (value) RLC_AMD_Header_FixPart_Type cs_RLC_AMD_Header_FixPart(B1_Type p_Poll, + B10_Type p_SN) := + { /* @status APPROVED (LTE, LTE_A) */ + D_C := tsc_D_C_DataPDU, /* 1 ... Data PDU */ + ReSeg := '0'B, /* 0 ... AMD PDU */ + Poll := p_Poll, + FramingInfo := tsc_Framing00, /* 2 bit FI */ + Extension := tsc_ExtensionNoMoreHeaders, /* 1 bit E */ + SN := p_SN /* Sequence numbers */ + }; + + template (value) RLC_AMD_Header_Type cs_RLC_AMD_Header_1SDU(B1_Type p_Poll, + B10_Type p_SN) := + { /* @status APPROVED (LTE, LTE_A) */ + FixPart := cs_RLC_AMD_Header_FixPart(p_Poll,p_SN), + SegmentPart := omit, + FlexPart := omit + }; + + template (value) RLC_PDU_Type cs_RLC_Status_1PDU(integer p_ACK_SN) := + { /* @status APPROVED (LTE, LTE_A) */ + Status := cs_RLC_AM_StatusPDU_ACK_SN(p_ACK_SN) + }; + + template (value) RLC_PDU_Type cs_RLC_AMD_1PDU(B1_Type p_Poll, + B10_Type p_SN, + RLC_DataField_Type p_RLC_SDU) := + { /* @status APPROVED (LTE, LTE_A) */ + AMD := { + Header := cs_RLC_AMD_Header_1SDU(p_Poll,p_SN), + Data := {p_RLC_SDU} + } + }; + + //---------------------------------------------------------------------------- + + template (value) MAC_PDU_Length_Type cs_MAC_PDU_Length_7Bit(integer p_Length) := + { /* @status APPROVED (LTE, LTE_A) */ + Format := '0'B, // 7 bit Length + Value := int2bit (p_Length,7) + }; + + template (value) MAC_PDU_SubHeader_Type cs_MAC_PDU_SubHeader_Short_SDU_LCID(integer p_Length, + B5_Type p_LchId) := + { /* @status APPROVED (LTE) */ + Reserved := tsc_B2_Reserved, /* Reserved bits */ + Extension := tsc_ExtensionNoMoreHeaders, + LCID := p_LchId, + Length := cs_MAC_PDU_Length_7Bit(p_Length) + }; + + template (value) MAC_PDU_SubHeader_Type cds_MAC_PDU_SubHeader_Short_SDU_MoreHeaders_LCID(integer p_Length, + B5_Type p_LchId) + modifies cs_MAC_PDU_SubHeader_Short_SDU_LCID := + { /* @status APPROVED (LTE) */ + Extension := tsc_ExtensionMoreHeaders + }; + template (present) MAC_PDU_SubHeader_Type cr_MAC_PDU_SubHeader_Short_SDU_LCID_Length(B5_Type p_LchId, + B7_Type p_Length) := + { /* @status APPROVED (LTE) */ + Reserved := tsc_B2_Reserved, /* Reserved bits */ + Extension := tsc_ExtensionNoMoreHeaders, + LCID := p_LchId, + Length := cr_MAC_PDU_Length_7Bit (p_Length) + }; + template (present) MAC_PDU_SubHeader_Type cdr_MAC_PDU_SubHeader_Short_SDU_LCID_Length_MoreSubHeaders(B5_Type p_LchId, + B7_Type p_Length) + modifies cr_MAC_PDU_SubHeader_Short_SDU_LCID_Length := + { /* @status APPROVED (LTE) */ + Extension := tsc_ExtensionMoreHeaders + }; + template (present) MAC_PDU_Length_Type cr_MAC_PDU_Length_7Bit (B7_Type p_Length) := + { /* @status APPROVED (LTE) */ + Format := '0'B, // 7 bit Length + Value := p_Length + }; + template (present) MAC_PDU_SubHeader_Type cr_MAC_PDU_PaddingSubHeader := cs_MAC_PDU_PaddingSubHeader; /* @status APPROVED (LTE) */ + + + template (value) MAC_PDU_SubHeader_Type cs_MAC_PDU_PaddingSubHeader := + { /* @status APPROVED (LTE, LTE_A) */ + Reserved := tsc_B2_Reserved, /* Reserved bits */ + Extension := tsc_ExtensionNoMoreHeaders, + LCID := tsc_LchId_Padding, + Length := omit + }; + + template (value) MAC_PDU_SubHeader_Type cds_MAC_PDU_PaddingSubHeader_MoreSubHeaders modifies cs_MAC_PDU_PaddingSubHeader := + { /* @status APPROVED (LTE) */ + Extension := tsc_ExtensionMoreHeaders + }; + + + template (value) MAC_PDU_SubHeader_Type cs_MAC_PDU_SubHeader_Short_SDU(B5_Type p_LchId, + integer p_Length) := + { /* @status APPROVED (LTE, LTE_A) */ + Reserved := tsc_B2_Reserved, /* Reserved bits */ + Extension := tsc_ExtensionNoMoreHeaders, + LCID := p_LchId, + Length := cs_MAC_PDU_Length_7Bit(p_Length) + }; + + template (value) MAC_PDU_SubHeader_Type cds_MAC_PDU_SubHeader_Short_SDU_MoreHeaders(B5_Type p_LchId, + integer p_Length) + modifies cs_MAC_PDU_SubHeader_Short_SDU := + { /* @status APPROVED (LTE, LTE_A) */ + Extension := tsc_ExtensionMoreHeaders + }; + + template (value) MAC_PDU_SubHeader_Type cs_MAC_PDU_SubHeader_SDU_LCID_NoLength(B5_Type p_LchId) := + { /* @status APPROVED (LTE, LTE_A) */ + Reserved := tsc_B2_Reserved, /* Reserved bits */ + Extension := tsc_ExtensionNoMoreHeaders, + LCID := p_LchId, + Length := omit + }; + + template (value) MAC_PDU_Type cs_MAC_PDU_1SubHeader_Padding_RLCPDU_Short(template (value) PDCP_SDU_Type p_Padding, + B5_Type p_LCh_Id, + MAC_SDU_Type p_MAC_SDU) := + { /* @status APPROVED (LTE, LTE_A) */ + Header := { /* list of MAC PDU SubHeaders corresponding to + * MAC control elements and MAC SDUs */ + cds_MAC_PDU_SubHeader_Short_SDU_MoreHeaders(p_LCh_Id, lengthof (p_MAC_SDU)), + cs_MAC_PDU_PaddingSubHeader + }, + CtrlElementList := omit, /* Mac control elements; acc. to 36.321 cl. 6.1.2 + * "MAC control elements, are always placed before any MAC SDU." */ + SduList := {p_MAC_SDU}, /* MAC SDUs, which can typically be RLC PDUs */ + Padding := p_Padding //padding bytes apart from the last subheader byte + }; + + template (value) MAC_PDU_Type cs_MAC_PDU_NoPadding_RLCPDU_LCID(B5_Type p_LchId, + MAC_SDU_Type p_MAC_SDU) := + { /* @status APPROVED (LTE, LTE_A) */ + Header := { /* list of MAC PDU SubHeaders corresponding to + * MAC control elements and MAC SDUs */ + cs_MAC_PDU_SubHeader_SDU_LCID_NoLength(p_LchId) + }, + CtrlElementList := omit, /* Mac control elements; acc. to 36.321 cl. 6.1.2 + * "MAC control elements, are always placed before any MAC SDU." */ + SduList := {p_MAC_SDU}, /* MAC SDUs, which can typically be RLC PDUs */ + Padding := omit /* padding bytes apart from the last subheader byte */ + }; + + template (value) MAC_PDUList_Type cs_MAC_PDUList_1(template (value) MAC_PDU_Type p_MAC_PDU) := + { /* @status APPROVED (LTE, LTE_A) */ + p_MAC_PDU + }; + + //============================================================================ + + template (present) MAC_PDU_SubHeader_Type cr_MAC_PDU_SubHeader_SDU_LCID_NoLength(template (present) B5_Type p_LchId) := + /* @sic R5-113848 sic@ */ + { /* @status APPROVED (LTE, LTE_A) */ + Reserved := tsc_B2_Reserved, /* Reserved bits */ + Extension := tsc_ExtensionNoMoreHeaders, + LCID := p_LchId, + Length := omit + }; + + template (present) MAC_PDU_SubHeader_Type cr_SubHeader_LongBSR := + { /* @status APPROVED (LTE) */ + Reserved := tsc_B2_Reserved, /* Reserved bits */ + Extension := tsc_ExtensionNoMoreHeaders, + LCID := tsc_LchId_LongBSR, + Length := omit + }; + + template (present) MAC_PDU_SubHeader_Type cdr_SubHeader_LongBSR_MoreSubHeaders + modifies cr_SubHeader_LongBSR := + { /* @status APPROVED (LTE) */ + Extension := tsc_ExtensionMoreHeaders + }; + + template (present) MAC_PDU_SubHeader_Type cr_SubHeader_ShortBSR := + { /* @status APPROVED (LTE) */ + Reserved := tsc_B2_Reserved, /* Reserved bits */ + Extension := tsc_ExtensionNoMoreHeaders, + LCID := tsc_LchId_ShortBSR, + Length := omit + }; + + template (present) MAC_PDU_SubHeader_Type cdr_SubHeader_ShortBSR_MoreSubHeaders + modifies cr_SubHeader_ShortBSR := + { /* @status APPROVED (LTE) */ + Extension := tsc_ExtensionMoreHeaders + }; + + template (present) MAC_CTRL_ShortBSR_Type cr_MAC_BSR_Short(template (present) B2_Type p_LCG, + template (present) B6_Type p_BSR_Value) := + { /* @status APPROVED (LTE) */ + LCG := p_LCG, + Value := p_BSR_Value + }; + + template (present) MAC_CTRL_LongBSR_Type cr_MAC_BSR_Long(template (present) B6_Type p_LCG1, + template (present) B6_Type p_LCG2, + template (present) B6_Type p_LCG3, + template (present) B6_Type p_LCG4) := + { /* @status APPROVED (LTE) */ + Value_LCG1 := p_LCG1, + Value_LCG2 := p_LCG2, + Value_LCG3 := p_LCG3, + Value_LCG4 := p_LCG4 + }; + + template (present) MAC_CTRL_ElementList_Type cr_CTRL_Elem_ShortBSR(template (present) B2_Type p_LCG, + template (present) B6_Type p_BSR_Value) := + { /* @status APPROVED (LTE) */ + ShortBSR := cr_MAC_BSR_Short(p_LCG, p_BSR_Value), /* UL only */ + LongBSR := omit, /* UL only */ + C_RNTI := omit, /* UL only */ + ContentionResolutionID := omit, /* DL only */ + TimingAdvance := omit, + PowerHeadRoom := omit, /* UL only */ + ScellActDeact := omit, // @sic CA ASP implementation sic@ + ExtPowerHeadRoom := omit // @sic CA ASP implementation sic@ + }; + + template (present) MAC_CTRL_ElementList_Type cr_CTRL_Elem_LongBSR(template (present) B6_Type p_LCG1, + template (present) B6_Type p_LCG2, + template (present) B6_Type p_LCG3, + template (present) B6_Type p_LCG4) := + { /* @status APPROVED (LTE) */ + ShortBSR := omit, /* UL only */ + LongBSR := cr_MAC_BSR_Long(p_LCG1, p_LCG2, p_LCG3, p_LCG4), /* UL only */ + C_RNTI := omit, /* UL only */ + ContentionResolutionID := omit, /* DL only */ + TimingAdvance := omit, + PowerHeadRoom := omit, /* UL only */ + ScellActDeact := omit, // @sic CA ASP implementation sic@ + ExtPowerHeadRoom := omit // @sic CA ASP implementation sic@ + }; + + template (present) MAC_PDU_Type cr_MAC_PDU_LongBSR(template (present) B6_Type p_BS1, + template (present) B6_Type p_BS2, + template (present) B6_Type p_BS3, + template (present) B6_Type p_BS4) := + { /* @status APPROVED (LTE) */ + Header := { /* list of MAC PDU SubHeaders corresponding to + * MAC control elements and MAC SDUs */ + cr_SubHeader_LongBSR + }, + CtrlElementList := cr_CTRL_Elem_LongBSR(p_BS1, p_BS2, p_BS3, p_BS4), + /* Mac control elements; acc. to 36.321 cl. 6.1.2 + * "MAC control elements, are always placed before any MAC SDU." */ + + SduList := omit, /* No MAC SDUs*/ + Padding := omit /* padding bytes apart from the last subheader byte */ + }; + + template (present) MAC_PDU_Type cr_MAC_PDU_LongBSR_RLCPDU(template (present) B5_Type p_LCh_Id, /* @sic R5-113848 sic@ */ + template (present) B6_Type p_BS1, + template (present) B6_Type p_BS2, + template (present) B6_Type p_BS3, + template (present) B6_Type p_BS4, + template (present) MAC_SDU_Type p_MAC_SDU) := + { /* @status APPROVED (LTE) */ + Header := { /* list of MAC PDU SubHeaders corresponding to + * MAC control elements and MAC SDUs */ + cdr_SubHeader_LongBSR_MoreSubHeaders, + cr_MAC_PDU_SubHeader_SDU_LCID_NoLength(p_LCh_Id) + }, + CtrlElementList := cr_CTRL_Elem_LongBSR(p_BS1, p_BS2, p_BS3, p_BS4), + /* Mac control elements; acc. to 36.321 cl. 6.1.2 + * "MAC control elements, are always placed before any MAC SDU." */ + + SduList := {p_MAC_SDU}, /* MAC SDUs, which can typically be RLC PDUs */ + Padding := omit //padding bytes apart from the last subheader byte + }; + + template (present) MAC_PDU_Type cr_MAC_PDU_2Padding_LongBSR_RLCPDU(template (present) B5_Type p_LCh_Id, /* @sic R5-113848 sic@ */ + template (present) B6_Type p_BS1, + template (present) B6_Type p_BS2, + template (present) B6_Type p_BS3, + template (present) B6_Type p_BS4, + template (present) MAC_SDU_Type p_MAC_SDU) := + { /* @status */ + Header := { /* list of MAC PDU SubHeaders corresponding to + * MAC control elements and MAC SDUs */ + cr_MAC_PDU_PaddingSubHeader_MoreSubHeaders, + cr_MAC_PDU_PaddingSubHeader_MoreSubHeaders, + cdr_SubHeader_LongBSR_MoreSubHeaders, + cr_MAC_PDU_SubHeader_SDU_LCID_NoLength(p_LCh_Id) + }, + CtrlElementList := cr_CTRL_Elem_LongBSR(p_BS1, p_BS2, p_BS3, p_BS4), + /* Mac control elements; acc. to 36.321 cl. 6.1.2 + * "MAC control elements, are always placed before any MAC SDU." */ + + SduList := {p_MAC_SDU}, /* MAC SDUs, which can typically be RLC PDUs */ + Padding := omit //padding bytes apart from the last subheader byte + }; + + template (present) MAC_PDU_Type cr_MAC_PDU_LongBSR_RLCPDU_Padding(B5_Type p_LCh_Id, + template (present) B6_Type p_BS1, + template (present) B6_Type p_BS2, + template (present) B6_Type p_BS3, + template (present) B6_Type p_BS4, + template (present) MAC_SDU_Type p_MAC_SDU, + B7_Type p_Length, + template (omit) octetstring p_Padding) := + { /* @status */ + Header := { /* list of MAC PDU SubHeaders corresponding to + * MAC control elements and MAC SDUs */ + cdr_SubHeader_LongBSR_MoreSubHeaders, + cdr_MAC_PDU_SubHeader_Short_SDU_LCID_Length_MoreSubHeaders(p_LCh_Id, p_Length), + cr_MAC_PDU_PaddingSubHeader + }, + CtrlElementList := cr_CTRL_Elem_LongBSR(p_BS1, p_BS2, p_BS3, p_BS4), /* Mac control elements; acc. to 36.321 cl. 6.1.2 + * "MAC control elements, are always placed before any MAC SDU." */ + SduList := {p_MAC_SDU}, /* MAC SDUs, which can typically be RLC PDUs */ + Padding := p_Padding /* padding bytes apart from the last subheader byte */ + }; + + template (present) MAC_PDU_Type cr_MAC_PDU_1Subheader_ShortBSR_RLCPDU(template (present) B5_Type p_LCh_Id,/* @sic R5-113848 sic@ */ + template (present) B2_Type p_LCG, + template (present) B6_Type p_BSR_Value, + template (present) MAC_SDU_Type p_MAC_SDU) := + { /* @status APPROVED (LTE) */ + Header := { /* list of MAC PDU SubHeaders corresponding to + * MAC control elements and MAC SDUs */ + cdr_SubHeader_ShortBSR_MoreSubHeaders, + cr_MAC_PDU_SubHeader_SDU_LCID_NoLength(p_LCh_Id) + }, + CtrlElementList := cr_CTRL_Elem_ShortBSR(p_LCG, p_BSR_Value), /* Mac control elements; acc. to 36.321 cl. 6.1.2 + * "MAC control elements, are always placed before any MAC SDU." */ + SduList := {p_MAC_SDU}, /* MAC SDUs, which can typically be RLC PDUs */ + Padding := omit /* padding bytes apart from the last subheader byte */ + }; + + template (present) DRB_COMMON_IND car_DRB_COMMON_IND_MAC(EUTRA_CellId_Type p_CellId, + RadioBearerId_Type p_RbId, + template (present) TimingInfo_Type p_TimingInfo, + template MAC_PDUList_Type p_MAC_PDUList) := + { /* @status APPROVED (LTE, LTE_A) */ + Common := cr_IndAspCommonPart_RB(p_CellId, p_RbId, p_TimingInfo), + U_Plane := { + SubframeData := { + PduSduList := + { + MacPdu := p_MAC_PDUList + }, + NoOfTTIs := 1 + // @sic R5w100222 slide 4 - RedundancyVersion removed sic@ + } + } + }; + + template (present) SYSTEM_IND car_PHR_IND(EUTRA_CellId_Type p_CellId, + template (present) TimingInfo_Type p_TimingInfo, + template (present) PHR_Type p_PHR_Type) := + { /* @status APPROVED (LTE) */ + Common := cr_IndAspCommonPart_SysInd (p_CellId, p_TimingInfo), + Indication := { + PHR := p_PHR_Type + } + }; + + //============================================================================ + + template (value) DRB_COMMON_REQ cas_DRB_COMMOM_REQ_MAC_PDU(EUTRA_CellId_Type p_CellId, + RadioBearerId_Type p_RB_Id, + template (value) TimingInfo_Type p_TimingInfo, + template (value) MAC_PDUList_Type p_MAC_PDUList, + template (value) HarqProcessAssignment_Type p_HarqProcess := cs_HarqProcessAssignment_Automatic, + integer p_SubframeOffset := tsc_SubframeOffset0) := + { /* Template for DRB Data REQ wih PDCP SDU's */ + /* @status APPROVED (LTE, LTE_A) */ + Common := cs_ReqAspCommonPart_RB(p_CellId, p_RB_Id, p_TimingInfo), + U_Plane := { + SubframeDataList := { + { + SubframeOffset := p_SubframeOffset, + HarqProcess := p_HarqProcess, + PduSduList := { + MacPdu := p_MAC_PDUList + } + } + } + }, + SuppressPdcchForC_RNTI := omit + }; + + template (value) RLC_Configuration_Type cs_RLC_MAC_TestMode := + { /* @status APPROVED (LTE, LTE_A) */ + Rb := { + TM := true + }, + TestMode := omit + }; + + template (value) RLC_TestModeConfig_Type cs_RLC_TestMode_TM_UM_SN10 := + { /* @status APPROVED (LTE, LTE_A) */ + Info := { + TransparentMode_UMDwith10BitSN := true + } + }; + + template (value) MAC_TestModeInfo_Type cs_MAC_TestMode_NoHeaderManipulationDLOnly := + { /* @status APPROVED (LTE, LTE_A) */ + DiffLogChId := { + ConfigLchId := true + }, + No_HeaderManipulation := DL_SCH_Only + }; + + template (value) MAC_TestModeInfo_Type cs_MAC_TestMode_NormalMode := + { /* @status APPROVED (LTE, LTE_A) */ + DiffLogChId := { + ConfigLchId := true + }, + No_HeaderManipulation := NormalMode + }; + + template (value) MAC_TestModeInfo_Type cs_MAC_TestMode_NoHeaderManipulationDL_UL := + { /* @status APPROVED (LTE, LTE_A) */ + DiffLogChId := { + ConfigLchId := true + }, + No_HeaderManipulation := DL_UL_SCH + }; + + template (value) RLC_TestModeConfig_Type cs_RLC_TestMode_TM_AMD := + { /* @status APPROVED (LTE, LTE_A) */ + Info := { + TransparentMode_AMD := true + } + }; + + template (value) RadioBearer_Type cs_RB_Reconfig_MACDRBTestMode (RadioBearerId_Type p_RBID, + template (value) MAC_TestModeInfo_Type p_MAC_TestModeInfo) := + { /* @status APPROVED (LTE, LTE_A) */ + Id := p_RBID, + Config := { + AddOrReconfigure := { + Pdcp := cs_PDCP_Configuration_None , // Configure for No PDCP layer + Rlc := cs_RLC_MAC_TestMode, // Configure RLC for MAC test mode + LogicalChannelId := omit, //Keep As it is + Mac := { + LogicalChannel := omit, //Keep As it is + TestMode := { + Info:= p_MAC_TestModeInfo + } + }, + DiscardULData := omit // @sic RAN5 #55 sidebar meeting sic@ + } + } + }; + + template (present) DRB_COMMON_IND car_DRB_COMMON_IND_RLC_PDUList(EUTRA_CellId_Type p_CellId, + RadioBearerId_Type p_RbId, + template (present) TimingInfo_Type p_TimingInfo, + template RLC_PDUList_Type p_RLC_PDUList) := + { /* common ASP to receive PDUs from DRBs */ + /* @status APPROVED (LTE, LTE_A) */ + Common := cr_IndAspCommonPart_RB(p_CellId, p_RbId, p_TimingInfo), + U_Plane := { + SubframeData := { + PduSduList := { + RlcPdu := p_RLC_PDUList + }, + NoOfTTIs := 1 + // @sic R5w100222 slide 4 - RedundancyVersion removed sic@ + } + } + }; + + template (present) RLC_PDU_Type cr_RLC_AMD_1PDU(template (present) B1_Type p_Poll, + template (present) B10_Type p_SN, + template (present) RLC_DataField_Type p_RLC_SDU) := + { /* @status APPROVED (LTE, LTE_A) */ + AMD := { + Header := cr_RLC_AMD_Header_1SDU(p_Poll, p_SN), + Data := {p_RLC_SDU} + } + }; +template (present) RLC_PDU_Type cr_RLC_AMD_2PDU(template (present) B1_Type p_Poll, + template (present) B10_Type p_SN, + template (present) RLC_DataField_Type p_RLC_SDU, + template (present) RLC_DataField_Type p_RLC_SDU2) := + { /* @status A */ + AMD := { + Header := cr_RLC_AMD_Header_1SDU(p_Poll, p_SN), + Data := {p_RLC_SDU,p_RLC_SDU2} + } + }; + template (present) RLC_AMD_Header_Type cr_RLC_AMD_Header_1SDU(template (present) B1_Type p_Poll, + template (present) B10_Type p_SN) := + { /* @status APPROVED (LTE, LTE_A) */ + FixPart := cr_RLC_AMD_Header_FixPart(p_Poll,p_SN), + SegmentPart := omit, + FlexPart := omit + }; + + template (present) RLC_AMD_Header_FixPart_Type cr_RLC_AMD_Header_FixPart(template (present) B1_Type p_Poll, + template (present) B10_Type p_SN) := + { /* @status APPROVED (LTE, LTE_A) */ + D_C := tsc_D_C_DataPDU, /* 1 ... Data PDU */ + ReSeg := '0'B, /* 0 ... AMD PDU */ + Poll := p_Poll, + FramingInfo := tsc_Framing00, /* 2 bit FI */ + Extension := tsc_ExtensionNoMoreHeaders, /* 1 bit E */ + SN := p_SN /* Sequence numbers */ + }; + + template (present) SYSTEM_CTRL_CNF car_SYSTEM_CTRL_L1_TestMode_CNF(EUTRA_CellId_Type p_CellId) := + { /* @status APPROVED (LTE, LTE_A) */ + Common := cr_CnfAspCommonPart_CellCfg(p_CellId), + Confirm := { + L1_TestMode := true + } + }; + template (value) DL_SCH_CRC_Type cs_DL_SCH_CRC_C_RNTI_Error(MAC_Test_DL_SCH_CRC_Mode_Type p_CRC_Mode) := + { /* @status APPROVED (LTE, LTE_A) */ + C_RNTI := p_CRC_Mode + }; + template (value) SYSTEM_CTRL_REQ cas_L1_Test_PhichMode_REQ(EUTRA_CellId_Type p_CellId, + template (value) PhichTestMode_Type p_PhichTestMode) := + { /* @status APPROVED (LTE, LTE_A) */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, cs_TimingInfo_Now), + Request := { + L1_TestMode := { + DL_SCH_CRC := cs_DL_SCH_CRC_C_RNTI_Error(Normal), + Phich := p_PhichTestMode + } + } + }; + template (value) PhichTestMode_Type cs_Phich_ExplicitMode(template (value) HARQ_ModeList_Type p_HARQ_ModeList) := + { /* @status APPROVED (LTE, LTE_A) */ + ExplicitMode := p_HARQ_ModeList + }; + template (value) PhichTestMode_Type cs_PhichTestModeNormal := + { /* @status APPROVED (LTE, LTE_A) */ + NormalMode := true + }; + + template (present) MAC_PDU_Type cr_MAC_PDU_NoPadding_RLCPDU_LCID(template (present) B5_Type p_LchId,/* @sic R5-113848 sic@ */ + template (present) MAC_SDU_Type p_MAC_SDU ) := + { /* @status APPROVED (LTE, LTE_A) */ + Header := { /* list of MAC PDU SubHeaders corresponding to + * MAC control elements and MAC SDUs */ + cr_MAC_PDU_SubHeader_SDU_LCID_NoLength(p_LchId) // length not checked + }, + CtrlElementList := omit, /* Mac control elements; acc. to 36.321 cl. 6.1.2 + * "MAC control elements, are always placed before any MAC SDU." */ + SduList := {p_MAC_SDU}, /* MAC SDUs, which can typically be RLC PDUs */ + Padding := omit /* padding bytes apart from the last subheader byte */ + }; + + template (value) MAC_PDU_SubHeader_Type cs_MAC_PDU_SubHeader_TA := + { /* @status APPROVED (LTE) */ + Reserved := tsc_B2_Reserved, /* Reserved bits */ + Extension := tsc_ExtensionNoMoreHeaders, + LCID := tsc_LchId_TA, + Length := omit + }; + template (value) MAC_CTRL_ElementList_Type cs_CTRL_Elem_TA_0 := + { /* @status APPROVED (LTE) */ + ShortBSR := omit, /* UL only */ + LongBSR := omit, /* UL only */ + C_RNTI := omit, /* UL only */ + // DRX command CTRL Elem is 0 bits length + ContentionResolutionID := omit, /* DL only */ + TimingAdvance := '00011111'B, /* value of 31 36.213 clause 4.2.3 NTA,new = NTA,old + (TA-31)*16 results in NTA,new = NTA,old*/ + PowerHeadRoom := omit, /* UL only */ + ScellActDeact := omit, // @sic CA ASP implementation sic@ + ExtPowerHeadRoom := omit // @sic CA ASP implementation sic@ + }; + + template (value) MAC_PDU_Type cs_MAC_PDU_TimingAdvance_0 := + { /* @status APPROVED (LTE) */ + Header := { cs_MAC_PDU_SubHeader_TA }, /* list of MAC PDU SubHeaders corresponding to + * MAC control elements and MAC SDUs */ + CtrlElementList := cs_CTRL_Elem_TA_0, /* Mac control elements; acc. to 36.321 cl. 6.1.2 + * "MAC control elements, are always placed before any MAC SDU." */ + SduList := omit, /* MAC SDUs, which can typically be RLC PDUs */ + Padding := omit /* Octet aligned Padding if more than or equal to 2 bytes */ + }; + + //============================================================================ + /* + * @desc send RLC status PDU + * @param p_LchId + * @param p_SN + * @param p_CellId (default value: eutra_Cell1) + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @status APPROVED (LTE, LTE_A) + */ + function f_RLC_Status_PDU_Tx(B5_Type p_LchId, + integer p_SN, + EUTRA_CellId_Type p_CellId := eutra_Cell1, // New CA Test case + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now) runs on EUTRA_PTC + { + //cs_MAC_PDU_1RLCPDU_NoPad(p_MAC_SDU) + // Size made 11 bytes so as to be suitable for 20 Mhz, DCI format 1 scheduling + //@sic R5s110571 R5s120629 sic@ + DRB.send(cas_DRB_COMMOM_REQ_MAC_PDU (p_CellId, + tsc_RbId_DRB1, + p_TimingInfo, + cs_MAC_PDUList_1(cs_MAC_PDU_1SubHeader_Padding_RLCPDU_Short(crs_Padding_6Bytes, p_LchId, + f_RLC_PDU_Encvalue(cs_RLC_Status_1PDU(p_SN)))))); + //sent MAC PDU (with RLC Status PDU) + } + + //---------------------------------------------------------------------------- + /* + * @desc Shall configure 1 DRB with RLC in special mode of TM, and MAC to have no header manipulation in DL + * @param p_CellId + * @param p_RBID + * @param p_MAC_TestModeInfo + * @param p_UM_Mode_10b_SN (default value: false) + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @status APPROVED (LTE, LTE_A) + */ + function f_SS_Config1TM_DRB_NoMACHeader(EUTRA_CellId_Type p_CellId, + RadioBearerId_Type p_RBID, + template (value) MAC_TestModeInfo_Type p_MAC_TestModeInfo, + boolean p_UM_Mode_10b_SN := false, //@sic R5s120316 sic@ + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now) runs on EUTRA_PTC + { + var template (value) RadioBearerList_Type v_RbList1 := { + cs_RB_Reconfig_MACDRBTestMode(p_RBID, p_MAC_TestModeInfo) + }; + + if (match(valueof(p_MAC_TestModeInfo), cs_MAC_TestMode_NoHeaderManipulationDLOnly)) { //@sic R5s120316 sic@ + if (p_UM_Mode_10b_SN) { + v_RbList1[0].Config.AddOrReconfigure.Rlc.TestMode := cs_RLC_TestMode_TM_UM_SN10; + } else { + v_RbList1[0].Config.AddOrReconfigure.Rlc.TestMode := cs_RLC_TestMode_TM_AMD; + } + } + f_EUTRA_SS_CommonRadioBearerConfig(p_CellId, v_RbList1, p_TimingInfo); + } + + /***************************************************************************************************/ + /* + * @desc Cell Configuration: L1 test mode + * @param p_CellId + * @param p_SYSTEM_CTRL_REQ + * @status APPROVED (LTE, LTE_A) + */ + function f_EUTRA_SS_L1_TestModeConfig(EUTRA_CellId_Type p_CellId, + template (value) SYSTEM_CTRL_REQ p_SYSTEM_CTRL_REQ) runs on EUTRA_PTC + { + SYS.send( p_SYSTEM_CTRL_REQ ); + if (valueof(p_SYSTEM_CTRL_REQ.Common.ControlInfo.CnfFlag) == true) { + SYS.receive(car_SYSTEM_CTRL_L1_TestMode_CNF( p_CellId ) ); + } + }; + + /***************************************************************************************************/ + /* + * @desc Function to Config SS for PHICH mode + * @param p_CellId + * @param p_PhichTestMode + * @status APPROVED (LTE, LTE_A) + */ + function f_SS_ConfigPhich_TestMode(EUTRA_CellId_Type p_CellId, + template (value) PhichTestMode_Type p_PhichTestMode) runs on EUTRA_PTC + { + f_EUTRA_SS_L1_TestModeConfig(p_CellId, cas_L1_Test_PhichMode_REQ (p_CellId, p_PhichTestMode)); + }; + /* + * @desc calculate timing info for UL data depending on the timing info of the corresponding UL grant + * @param p_EUTRA_FDD_TDD_Mode + * @param p_TimingInfo + * @return SubFrameTiming_Type + * @status APPROVED (LTE, LTE_A) + */ + function f_GetSubFrameNumForULData(EUTRA_FDD_TDD_Mode_Type p_EUTRA_FDD_TDD_Mode, + SubFrameTiming_Type p_TimingInfo) return SubFrameTiming_Type + { + var SubFrameTiming_Type v_TimingInfo := p_TimingInfo; + if (p_EUTRA_FDD_TDD_Mode == FDD) + { + v_TimingInfo.SFN.Number := (p_TimingInfo.SFN.Number + (( p_TimingInfo.Subframe.Number + 4) / 10)) mod 1024; + v_TimingInfo.Subframe.Number:= (p_TimingInfo.Subframe.Number + 4) mod 10; + } + else // case TDD Caters only for def UL/DL Type of 1 + { + select (p_TimingInfo.Subframe.Number) + { + case (6) { + v_TimingInfo.Subframe.Number := 2; + v_TimingInfo.SFN.Number := (p_TimingInfo.SFN.Number + 1) mod 1024; + } + case (9) { + v_TimingInfo.Subframe.Number := 3; + v_TimingInfo.SFN.Number := (p_TimingInfo.SFN.Number + 1) mod 1024; + } + case (1) { + v_TimingInfo.Subframe.Number := 7; + } + case (4) { + v_TimingInfo.Subframe.Number := 8; + } + case else { + FatalError(__FILE__, __LINE__, "subframe number out of range"); + } + } + } + return v_TimingInfo; + };// end of function f_GetFrameNumForULData + + + /* + * @desc To evaluate the timing info for the next UL transmission/retransmission for a given HARQ process; Note UL HARQ process is synchronous + * @param p_Timing + * @param p_EUTRA_FDD_TDD + * @return SubFrameTiming_Type + * @status APPROVED (LTE, LTE_A) + */ + function f_EvaluateNext_UL_TransmissionForHARQ_Process( SubFrameTiming_Type p_Timing, + EUTRA_FDD_TDD_Mode_Type p_EUTRA_FDD_TDD) return SubFrameTiming_Type + { + var SubFrameTiming_Type v_Timing := p_Timing; + + if (p_EUTRA_FDD_TDD == FDD) + { + // From UL TX, PHICH and Grant = 4 sub frame and next Tx =4 Subframe total 8 SF; + v_Timing.SFN.Number := (v_Timing.SFN.Number + ((v_Timing.Subframe.Number + 8) / 10)) mod 1024; + v_Timing.Subframe.Number := (v_Timing.Subframe.Number + 8) mod 10; + } + else // caters only for TDD default UL DL Mode of 1. + { + v_Timing.SFN.Number := (v_Timing.SFN.Number + 1 ) mod 1024; + // 36.213 Table 8.3-1 Table 8-2 + // UL SF =2 => PHICH/Grant = 6 => Next Tx(6) = 2 + // UL SF= 3 => PHICH/Grant = 9 => Next Tx(4) =3 + // UL SF= 7 => PHICH/Grant = 1 => Next Tx(6) =7 + // UL SF= 8 => PHICH/Grant = 4 => Next Tx (4) =8 + } + return v_Timing; + }; + +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA_NAS/EUTRA_NASCommonFunctions.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA_NAS/EUTRA_NASCommonFunctions.ttcn new file mode 100644 index 0000000..d9b43e4 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA_NAS/EUTRA_NASCommonFunctions.ttcn @@ -0,0 +1,430 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 18:45:27 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12178 $ +/******************************************************************************/ + +module EUTRA_NASCommonFunctions { + + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from NAS_CommonTypeDefs all; + import from EPS_NAS_TypeDefs all; + import from EPS_NAS_Constants all; + import from EUTRA_ASP_DrbDefs all; + import from EPS_NAS_MsgContainers all; + import from EUTRA_NASCommonTemplates all; + import from EPS_NAS_Templates all; + import from EUTRA_AspCommon_Templates all; + import from EUTRA_RRC_Templates all; + import from EUTRA_SRB_Templates all; + import from EUTRA_Component all; + import from EUTRA_ConfigurationSteps all; + import from EUTRA_CommonProcedures all; + import from UpperTesterFunctions all; + import from EUTRA_CellInfo all; + import from EUTRA_RRCSteps all; + import from EUTRA_NASSteps all; + import from EUTRA_Paging all; + import from EUTRA_SecurityFunctions all; + import from EUTRA_Timing all; + import from EUTRA_DRB_Templates all; + import from UpperTesterCommon all; + import from EUTRA_AuxiliaryFunctions all; + + /* Currently only referenced in WorkingDrafts files +function f_GetTmsiStatus() + return template (omit) TMSI_Status + { + if( pc_CSfallback ) { + return cr_TMSI_Status(tsc_NoValidTmsi); + } + return omit; + } +*/ + + /* + * @desc Generic test step to reject a registration attempt by the UE. + * This is based on the Preamble function and should be run as an alternative. + * This results in the UE being switched off, and with no valid GUTI + * @param p_CellId + * @param p_RejectCause + * @param p_ForcedAttach + * @param p_SelectedPlmnId (default value: 1) .. selectedPLMN-Identity as used in RRCConnectionSetupComplete (starting with 1) @sic R5s110695 sic@ + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_Preamble_Reject(EUTRA_CellId_Type p_CellId, + NAS_CauseValue_Type p_RejectCause, + EUTRA_ATTACH_Type p_ForcedAttach, + template (present) integer p_SelectedPlmnId := 1) runs on EUTRA_PTC + { + // First switch cell back on + f_EUTRA_SetCellPower(p_CellId, tsc_ServingCellRS_EPRE); + f_EUTRA_AttachReject (p_CellId, p_RejectCause, p_ForcedAttach, p_SelectedPlmnId); // @sic R5s110176, R5s110695 sic@ + + // And then just need to switch UE off + f_UT_SwitchOffUE (UT, false, CNF_REQUIRED); // @sic R5s1100395 sic@ + } + + /* + * @desc Generic test step to reject a registration attempt by the UE. + * This expects the UE to be switched off before calling this function, and leaves the UE switched on at the end + * @param p_CellId + * @param p_RejectCause + * @param p_ForcedAttach + * @param p_SelectedPlmnId (default value: 1) .. selectedPLMN-Identity as used in RRCConnectionSetupComplete (starting with 1) @sic R5s110695 sic@ + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_AttachReject(EUTRA_CellId_Type p_CellId, + NAS_CauseValue_Type p_RejectCause, + EUTRA_ATTACH_Type p_ForcedAttach, + template (present) integer p_SelectedPlmnId := 1) runs on EUTRA_PTC + { + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var NAS_AttDetValue_Type v_AttachType; + var PdnTypeValue v_PDNValue; + var NAS_MSG_Indication_Type v_NAS_Ind; + var EUTRA_SecurityParams_Type v_AuthParams := f_EUTRA_Security_Get(); + var template AdditionalUpdateType v_AdditionalUpdateType := f_GetAdditionalUpdateType (p_ForcedAttach); // @sic R5s110176 sic@ + + // Switch on UE + f_EUTRA_SwitchOnUEandStartIP(p_CellId); // @sic R5s120065 sic@ + + v_AttachType := f_GetEAttachType(p_ForcedAttach); // @sic R5s110176 sic@ + + v_PDNValue := f_GetPdnType(); + + // RRC Connection Establishment, with Attach Request and PDN Connectivity + v_NAS_Ind := f_EUTRA_RRC_ConnEst_DefWithNas(p_CellId, + v_RRC_TI, + cr_EstablishmentCause_Any, + cr_NAS_IndicationWithPiggybacking((tsc_SHT_NoSecurityProtection, tsc_SHT_IntegrityProtected), + cr_508_ATTACH_REQUEST(v_AttachType, v_AdditionalUpdateType), // @sic R5-103681 sic@ + cr_508_PDN_CONNECTIVITY_REQUEST(tsc_PdnRequest_InitialAttach, + v_PDNValue)), + p_SelectedPlmnId); // @sic R5s110695 sic@ + + // Set UE network capabilities as sent by the UE to be used later in the test case(see TS 24.301 clause 5.4.3.3) + v_AuthParams.NAS_SecurityCap := f_EUTRA_FillNAS_SecurityCapability(v_NAS_Ind.Pdu.Msg.aTTACH_REQUEST); // @sic R5s100135 sic@ + f_EUTRA_Security_Set(v_AuthParams); + + // Now send Attach Reject, to get UE to delete GUTI + SRB.send(cas_SRB1_NasPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_NoSecurityProtection, + cs_508_AttachReject(cs_EMM_Cause_v(p_RejectCause), + omit)))); + + f_EUTRA_RRC_ConnectionRelease(p_CellId); + } + + /* + * @desc Send RRCConnectionReconfiguration with piggy-backed MODIFY EPS BEARER CONTEXT REQUEST + * @param p_CellId + * @param p_RRC_TI + * @param p_Id + * @param p_ProcTi + * @param p_QoS + * @param p_Tft + * @param p_RLC_Mode_Type + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_EUTRA_TxModifyEpsBearerCtxtReq(EUTRA_CellId_Type p_CellId, + RRC_TransactionIdentifier p_RRC_TI, + EPS_BearerIdentity p_Id, + ProcedureTransactionIdentifier p_ProcTi, // octet + template (value) EPS_QualityOfService p_QoS, + template (omit) TrafficFlowTemplate p_Tft, + RLC_Mode_Type p_RLC_Mode_Type := AM_Mode) + runs on EUTRA_PTC + { + // send RRCConnectionReconfiguration with piggy-backed MODIFY EPS BEARER CONTEXT REQUEST + var template (value) NAS_DL_Message_Type v_ModifyEPSBearerCxtReq := cs_508_ModifyEPSBearerCxtReq(p_Id, + p_ProcTi, + p_QoS, + p_Tft); // @sic R5-103625 sic@ + + if (p_RLC_Mode_Type == AM_Mode) { + SRB.send(cas_SRB1_RrcNasPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_RRCConnectionReconfiguration_RadioResConfig(p_RRC_TI, cs_RadioResourceConfig_DRB_RECONFIG), + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + v_ModifyEPSBearerCxtReq))); // @sic R5-103626 sic@ + } + else { + SRB.send(cas_SRB1_RrcNasPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_RRCConnectionReconfiguration_RadioResConfig(p_RRC_TI, cs_RadioResourceConfig_DRB_RECONFIG(cs_508_DRB_ToAddModList_RECONFIG_UM)), + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + v_ModifyEPSBearerCxtReq))); // @sic R5-103626 sic@ + } + } + + /* + * @desc Test procedure Paging (for NAS testing) in TS 6.4.2.4 for PS domain + * For CS domain, the the check procedure is still FFS. + * @param p_CellId + * @param p_Cn_Domain + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_EPS_508Check_NAS_Paging(EUTRA_CellId_Type p_CellId, + CN_Domain_Type p_Cn_Domain) runs on EUTRA_PTC + { /* This procedure aims at checking whether the UE is in RRC_IDLE on + * a certain cell of a test case or not. */ + + if (p_Cn_Domain == ps) { // @sic R5s110125 sic@ + f_EUTRA_RbEst_Def(p_CellId); + } + else { // @sic R5-123730 sic@ + FatalError(__FILE__, __LINE__, " For the CS domain the NAS paging test procedure is FFS "); + } + f_EUTRA_RRC_ConnectionRelease(p_CellId); + f_EUTRA_PreliminaryPass (__FILE__, __LINE__, "508Check NASPaging"); + } + + + /* + * @desc Test procedure for no response to paging (for NAS testing) + * See TS 36.508 clause 6.4.2.5. + * @param p_CellId + * @param p_PagingRecordList + * @param p_NoReactionTimer + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_EUTRA_508Check_NASNoResponse(EUTRA_CellId_Type p_CellId, + template (value) PagingRecordList p_PagingRecordList, + float p_NoReactionTimer) runs on EUTRA_PTC + { + f_EUTRA_UE_Page_NoReaction(p_CellId, p_PagingRecordList, p_NoReactionTimer); + } + + /* + * @desc Test procedure to check that a dedicated EPS bearer context is active (for NAS testing) + * See TS 36.508 clause 6.4.2.6. + * @param p_CellId + * @param p_DedicatedEpsBearerId + * @param p_QoS + * @param p_Tft + * @param p_RLC_Mode_Type + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_EUTRA_508Check_DedicatedEPSIsActive(EUTRA_CellId_Type p_CellId, + EPS_BearerIdentity p_DedicatedEpsBearerId, + template (value) EPS_QualityOfService p_QoS, + template (value) TrafficFlowTemplate p_Tft, + RLC_Mode_Type p_RLC_Mode_Type := AM_Mode) + runs on EUTRA_PTC + { + var ProcedureTransactionIdentifier v_EpsProcedureTransactionId := tsc_PTI_Unassigned; // @sic R5s110462 sic@ + + // The SS transmits an MODIFY EPS BEARER CONTEXT REQUEST + + /* Note: This message is included in a RRCConnectionReconfiguration message to + * setup the new radio bearer associated with the dedicated EPS bearer context + * activated by the NAS message + */ + f_EUTRA_TxModifyEpsBearerCtxtReq(p_CellId, + tsc_RRC_TI_Def, + p_DedicatedEpsBearerId, + v_EpsProcedureTransactionId, + p_QoS, + p_Tft, + p_RLC_Mode_Type); /* @sic R5s120178 BASELINE MOVING 2012 (additional changes) sic@ */ + + //Receive RRCConnectionReconfigurationComplete + SRB.receive(car_SRB1_RrcPdu_IND(p_CellId, cr_508_RRCConnectionReconfigurationComplete(tsc_RRC_TI_Def))); // @sic R5s100295 sic@ + + // The UE transmits an MODIFY EPS BEARER CONTEXT ACCEPT message as specified + SRB.receive(car_SRB2_NasPdu_IND(p_CellId, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_ModifyEPSBearerCxtAccept(p_DedicatedEpsBearerId)))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "508Check DedicatedEPSIsActive"); + } + + //---------------------------------------------------------------------------- + /* + * @desc Check whether UE tries to attach in any cell given by p_CellId + * @param p_CellId ... template describing on or more cells + * @param p_TimerValue + * @param p_FailMsg ... message to be used in case of FAIL + * @status APPROVED (LTE, LTE_IRAT) + */ + function fl_EUTRA_CheckNoAttach_Common(template (present) EUTRA_CellId_Type p_CellId, + float p_TimerValue, + charstring p_FailMsg) runs on EUTRA_PTC + { /* @sic R5s110507 additional changes sic@ */ + if (f_EUTRA_RRC_RRCConnectionRequest_Check(p_CellId, p_TimerValue)) { + if (p_FailMsg == "") { // @sic R5s120534 sic@ + p_FailMsg := "Unexpected RRCConnectionRequest before timer expiry"; + } + f_EUTRA_SetVerdictFailOrInconc (__FILE__, __LINE__, p_FailMsg); + } + } + + /* + * @desc Check whether UE tries to attach to given cell + * @param p_CellId + * @param p_Wait ... time to wait before UE may attach again + * @param p_StepNo (default value: "") + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_EUTRA_CheckNoAttachOn1Cell(EUTRA_CellId_Type p_CellId, + float p_Wait, + charstring p_StepNo := "") runs on EUTRA_PTC + { + var float v_TimerValue := f_EUTRA_SetTimerToleranceMin (p_CellId, nonProtocolTimer, p_Wait); + fl_EUTRA_CheckNoAttach_Common(p_CellId, v_TimerValue, p_StepNo); + } + + /* + * @desc Wrapper function to check whether the UE tries to attach to the given cells + * @param p_CellIdA + * @param p_CellIdB + * @param p_Wait + * @param p_StepNo (default value: "") + * @status APPROVED (LTE, LTE_IRAT) + */ + function f_EUTRA_CheckNoAttachOn2Cells(EUTRA_CellId_Type p_CellIdA, + EUTRA_CellId_Type p_CellIdB, + float p_Wait, + charstring p_StepNo := "") runs on EUTRA_PTC + { + var template (present) EUTRA_CellId_Type v_CellId := (p_CellIdA, p_CellIdB); + var float v_TimerValue := f_EUTRA_SetTimerToleranceMin (p_CellIdA, nonProtocolTimer, p_Wait); + fl_EUTRA_CheckNoAttach_Common(v_CellId, v_TimerValue, p_StepNo); + } + + /* + * @desc Wrapper function to check whether the UE tries to attach to the given cells + * @param p_CellIdA + * @param p_CellIdB + * @param p_CellIdC + * @param p_Wait + * @param p_StepNo (default value: "") + * @status APPROVED (LTE) + */ + function f_EUTRA_CheckNoAttachOn3Cells(EUTRA_CellId_Type p_CellIdA, + EUTRA_CellId_Type p_CellIdB, + EUTRA_CellId_Type p_CellIdC, + float p_Wait, + charstring p_StepNo := "") runs on EUTRA_PTC + { + var template (present) EUTRA_CellId_Type v_CellId := (p_CellIdA, p_CellIdB, p_CellIdC); + var float v_TimerValue := f_EUTRA_SetTimerToleranceMin (p_CellIdA, nonProtocolTimer, p_Wait); + fl_EUTRA_CheckNoAttach_Common(v_CellId, v_TimerValue, p_StepNo); + } + + /* + * @desc Wrapper function to check whether the UE tries to attach to the given cells + * @param p_CellIdA + * @param p_CellIdB + * @param p_CellIdC + * @param p_CellIdD + * @param p_Wait + * @param p_StepNo (default value: "") + * @status APPROVED (LTE_IRAT) + */ + function f_EUTRA_CheckNoAttachOn4Cells(EUTRA_CellId_Type p_CellIdA, + EUTRA_CellId_Type p_CellIdB, + EUTRA_CellId_Type p_CellIdC, + EUTRA_CellId_Type p_CellIdD, + float p_Wait, + charstring p_StepNo := "") runs on EUTRA_PTC + { + var template (present) EUTRA_CellId_Type v_CellId := (p_CellIdA, p_CellIdB, p_CellIdC, p_CellIdD); + var float v_TimerValue := f_EUTRA_SetTimerToleranceMin (p_CellIdA, nonProtocolTimer, p_Wait); + fl_EUTRA_CheckNoAttach_Common(v_CellId, v_TimerValue, p_StepNo); + } + + /* + * @desc UE Registration acc. to 36.508 cl. 4.5.2 + * @param p_CellId + * @param p_VerdictComment + * @param p_ForcedAttach (default value: NORMAL) + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_EUTRA_AttachProcedure(EUTRA_CellId_Type p_CellId, + charstring p_VerdictComment, + EUTRA_ATTACH_Type p_ForcedAttach) runs on EUTRA_PTC + { + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var NAS_AttDetValue_Type v_AttachType := f_GetEAttachType(p_ForcedAttach); // @sic R5s110176 sic@ + var B3_Type v_PDNType := f_GetPdnType(); + var template AdditionalUpdateType v_AdditionalUpdateType := f_GetAdditionalUpdateType (p_ForcedAttach); // @sic R5s110176 sic@ + var NAS_MSG_Indication_Type v_NAS_Ind; + + // Receive RRC Connection Setup Complete with + v_NAS_Ind := f_EUTRA_RRC_ConnEst_DefWithNas(p_CellId, + v_RRC_TI, + cr_EstablishmentCause_Any, + cr_NAS_IndicationWithPiggybacking(tsc_SHT_IntegrityProtected, + cr_508_ATTACH_REQUEST(v_AttachType, v_AdditionalUpdateType), + cr_508_PDN_CONNECTIVITY_REQUEST(tsc_PdnRequest_InitialAttach, v_PDNType))); + if (p_VerdictComment != "No Verdict") { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, p_VerdictComment); + } + + f_EUTRA_IdleUpdated_Step5_17 (p_CellId, STATE2_IDLEUPDATE, p_ForcedAttach, v_NAS_Ind); + + } // f_EUTRA_AttachProcedure + + /* + * @desc Removal of forbidden PLMN + * @param p_CellId_Detach + * @param p_CellId_Removal + * @param p_ForcedAttach + * @status APPROVED (LTE) + */ + function f_EUTRA_RmvFbdnPLMN(EUTRA_CellId_Type p_CellId_Detach, // @sic R5s110498 sic@ + EUTRA_CellId_Type p_CellId_Removal, + EUTRA_ATTACH_Type p_ForcedAttach) runs on EUTRA_PTC // @sic R5-106675 sic@ + { + var template (value) CellPowerList_Type v_CellPowerList; + var GutiParameters_Type v_Guti_Params; + v_Guti_Params := f_EUTRA_CellInfo_GetGuti(p_CellId_Removal); + + //release RRC connection to bring UE to a permanently stable state + f_EUTRA_RRC_ConnectionRelease(p_CellId_Detach); // @sic R5s120720 sic@ + //detach UE from last attached cell + f_EUTRA_UE_Detach_SwitchOffUe(p_CellId_Detach, RRC_IDLE, -, p_ForcedAttach); // @sic R5s110176, R5s120720 sic@ + + //configure cells to make cell of forbidden PLMN serving cell + v_CellPowerList := { + cs_CellPower(p_CellId_Detach, tsc_NonSuitableOffCellRS_EPRE), + cs_CellPower(p_CellId_Removal, tsc_ServingCellRS_EPRE) + }; + f_EUTRA_SetCellPowerList(v_CellPowerList); // @sic R5s110498 sic@ + //switch on UE + f_EUTRA_SwitchOnUEandStartIP(p_CellId_Removal, CNF_REQUIRED); // @sic R5s120065 sic@ + //switch to automatic PLMN search + f_UT_ManualPLMN_Select (UT, f_Asn2Nas_PlmnId(v_Guti_Params.PLMN_Identity)); //registration on cell of forbidden PLMN + //registration on cell of forbidden PLMN + f_EUTRA_AttachProcedure (p_CellId_Removal, "No Verdict", p_ForcedAttach); // @sic R5s110176 sic@ + //detach from the cell of formerly forbidden PLMN + f_EUTRA_UE_Detach_SwitchOffUe(p_CellId_Removal, RRC_IDLE, -, p_ForcedAttach); // @sic R5s120480 sic@ + + //configure cells to make last attached cell the serving cell + v_CellPowerList := { + cs_CellPower(p_CellId_Removal, tsc_NonSuitableOffCellRS_EPRE), + cs_CellPower(p_CellId_Detach, tsc_ServingCellRS_EPRE) + }; + f_EUTRA_SetCellPowerList(v_CellPowerList); // @sic R5s110498 sic@ + //switch on UE + f_EUTRA_SwitchOnUEandStartIP(p_CellId_Detach, CNF_REQUIRED); // @sic R5s120065 sic@ + //switch to automatic PLMN search + f_UT_AutomaticPLMN_Select(UT); + //registration on last attached cell + f_EUTRA_AttachProcedure (p_CellId_Detach, "No Verdict", p_ForcedAttach); // @sic R5s110176 sic@ + + } + +} + + + diff --git a/LTE_A_IWD_14wk37/Common/EUTRA_NAS/EUTRA_NASCommonTemplates.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA_NAS/EUTRA_NASCommonTemplates.ttcn new file mode 100644 index 0000000..e987d61 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA_NAS/EUTRA_NASCommonTemplates.ttcn @@ -0,0 +1,645 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-10 14:07:59 +0200 (Wed, 10 Sep 2014) $ +// $Rev: 12187 $ +/******************************************************************************/ + +module EUTRA_NASCommonTemplates { + + import from CommonDefs all; + import from NAS_CommonTypeDefs all; + import from EPS_NAS_TypeDefs all; + import from EPS_NAS_Constants all; + import from EPS_NAS_MsgContainers all; + import from NAS_CommonTemplates all; + import from EPS_NAS_Templates all; + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from Parameters all; + import from CommonIP all; + import from IMS_CommonDefs all; + import from NAS_AuxiliaryDefsAndFunctions all; + + template (value) PagingUE_Identity cs_PagingUE_Identity_IMSI ( IMSI p_IMSI ) := + { /* @status APPROVED (LTE) */ + imsi := p_IMSI + }; + + template (value) PDN_Address cs_IPv4_PDNAddressDHCP := + { + iei := omit, // Mandatory + iel := '05'O, + spare := tsc_Spare5, + typeValue := '001'B, // IPv4 + adressInfo := '00000000'O // DHCP is to be used + }; + + template (value) PDN_Address cs_IPv6_PDNAddressDHCP := + { + iei := omit, // Mandatory + iel := '09'O, + spare := tsc_Spare5, + typeValue := '010'B, // IPv4v6 + adressInfo := int2oct(0, 8) & '00000000'O // what is the IP6 identifier? + }; + + template (value) PDN_Address cs_IPv4v6_PDNAddressDHCP := + { + iei := omit, // Mandatory + iel := '0C'O, + spare := tsc_Spare5, + typeValue := '011'B, // IPv4v6 + adressInfo := int2oct(0, 8) & '00000000'O // DHCP is to be used + }; + + template (present) NAS_UL_Message_Type cdr_ATTACH_REQUEST_AttachType(template (present) NAS_AttDetValue_Type p_AttachTypeValue, + template AdditionalUpdateType p_AdditionalUpdateType, + template (present) MobileIdentity p_MobileId, + template TrackingAreaId p_Tai, + template LocAreaId p_LAI, + template TMSI_Status p_TmsiStatus) + modifies cr_508_ATTACH_REQUEST := + { /* @status APPROVED (LTE, LTE_IRAT) */ + aTTACH_REQUEST := { + epsAttachType := cr_EPS_AttachType(p_AttachTypeValue), + epsMobileIdentity := p_MobileId, // @sic R5s110176 Baseline Moving sic@ + lastVisitedRegisteredTai := p_Tai, + oldLai := p_LAI, + tmsiStatus := p_TmsiStatus + } + }; + + template (present) NAS_UL_Message_Type cdr_ATTACH_REQUEST_AttachTypeAndEPSnativeSecurityCtx(template (present) NAS_AttDetValue_Type p_AttachTypeValue, + template AdditionalUpdateType p_AdditionalUpdateType, + template (present) NAS_KsiValue p_KsiValue, + template (present) MobileIdentity p_MobileId, + template TrackingAreaId p_Tai, + template LocAreaId p_LAI := omit, + template TMSI_Status p_TmsiStatus := omit) + modifies cr_508_ATTACH_REQUEST := + { /* @status APPROVED (LTE_IRAT) */ + aTTACH_REQUEST := { + nasKeySetId := cr_NAS_KeySetIdentifier(p_KsiValue, tsc_NasKsi_NativeSecurityContext), + epsAttachType := cr_EPS_AttachType(p_AttachTypeValue), + epsMobileIdentity := p_MobileId, // @sic R5s110176 Baseline Moving sic@ + lastVisitedRegisteredTai := p_Tai, + oldLai := p_LAI, + tmsiStatus := p_TmsiStatus + } + }; + + template (present) NAS_UL_Message_Type cdr_ATTACH_REQUEST_WithGuti(template (present) NAS_AttDetValue_Type p_AttachTypeValue, + template AdditionalUpdateType p_AdditionalUpdateType, + template (present) NAS_KsiValue p_KsiValue, + template (present) MobileIdentity p_MobileId, + template TrackingAreaId p_Tai) + modifies cr_508_ATTACH_REQUEST := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + aTTACH_REQUEST := { + nasKeySetId := cr_NAS_KeySetIdentifier(p_KsiValue, tsc_Spare1), + epsAttachType := cr_EPS_AttachType(p_AttachTypeValue), + epsMobileIdentity := p_MobileId, // @sic R5s110176 Baseline Moving sic@ + lastVisitedRegisteredTai := p_Tai + } + }; + + template (present) NAS_UL_Message_Type cdr_ATTACH_REQUEST_WithEPSnativeSecurityCtx(template (present) NAS_AttDetValue_Type p_AttachTypeValue, + template AdditionalUpdateType p_AdditionalUpdateType, + template (present) NAS_KsiValue p_KsiValue) + modifies cr_508_ATTACH_REQUEST := + { /* @status APPROVED (LTE) */ + aTTACH_REQUEST := { + nasKeySetId := cr_NAS_KeySetIdentifier(p_KsiValue, tsc_NasKsi_NativeSecurityContext), + epsAttachType := cr_EPS_AttachType(p_AttachTypeValue) + } + }; + + template (present) NAS_UL_Message_Type cdr_ATTACH_REQUEST_WithOldMobileIdNoTAI(template (present) NAS_AttDetValue_Type p_AttachTypeValue, + template AdditionalUpdateType p_AdditionalUpdateType, + template MobileIdentity p_MobileId) + modifies cr_508_ATTACH_REQUEST := + { /* 24.301 cl. 8.2.4 */ + /* @status APPROVED (LTE) */ + aTTACH_REQUEST := { + nasKeySetId := cr_NAS_KeySetIdentifier(tsc_NasKsi_NoKey, tsc_Spare1), + epsMobileIdentity := p_MobileId, // @sic R5s110176 Baseline Moving sic@ + lastVisitedRegisteredTai := omit + + } + }; + + template (present) NAS_UL_Message_Type cdr_ATTACH_REQUEST_IMSIonly(template (present) NAS_AttDetValue_Type p_AttachTypeValue, + template AdditionalUpdateType p_AdditionalUpdateType, + template TrackingAreaId p_Tai := omit) + modifies cr_508_ATTACH_REQUEST := + { /* @status APPROVED (LTE, LTE_A) */ + aTTACH_REQUEST := { + epsMobileIdentity := f_Imsi2MobileIdentity(px_IMSI_Def), // @sic R5s110176 Baseline Moving sic@ + lastVisitedRegisteredTai := p_Tai // @sic R5s140041 sic@ + } + }; + + template (value) NAS_DL_Message_Type cs_508_AttachReject (template (value) EMM_Cause p_Cause, + template (omit) ESM_MessageContainer p_ESM):= + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + aTTACH_REJECT := { + securityHeaderType := tsc_SHT_NoSecurityProtection, + protocolDiscriminator := tsc_PD_EMM, + messageType := tsc_MT_AttachReject, + emmCause := p_Cause, + esmMessage := p_ESM, + t3346 := omit, /* cl. 9.9.3.16A O TLV 3 IEI=0x5F @sic R5s120178 Baseline Moving sic@*/ + t3402 := omit /* cl. 9.9.3.16A O TLV 3 IEI=0x16 @sic R5s120178 Baseline Moving sic@*/ + } + }; + + template (value) NAS_DL_Message_Type cs_508_AUTHENTICATION_REJECT := + { /* @status APPROVED (LTE) */ + aUTHENTICATION_REJECT := { + securityHeaderType := tsc_SHT_NoSecurityProtection, + protocolDiscriminator := tsc_PD_EMM, + messageType := tsc_MT_AuthenticationReject + } + }; + + template (present) NAS_UL_Message_Type cdr_TAU_Request_OldGuti_BearerEst(template (present) EPS_UpdateTypeValue p_EpsUpdate_TypeValue, + NAS_KsiValue p_KsiValue, + template DRXparameter p_DRXparameter, // @sic R5s120210 sic@ + template AdditionalUpdateType p_AdditionalUpdateType, + template (present) MobileIdentity p_OldGuti) + modifies cr_508_TAU_Request := + { /* @status */ + tRACKING_AREA_UPDATE_REQUEST := { + epsUpdateType := cr_EPS_UpdateType(tsc_EpsUpdate_Active, p_EpsUpdate_TypeValue), + oldGuti := p_OldGuti + } + }; + + template (present) NAS_UL_Message_Type cdr_TAU_RequestOldGutiLaiTmsiStatus(template (present) EPS_UpdateTypeValue p_EpsUpdate_TypeValue, + NAS_KsiValue p_KsiValue, + template DRXparameter p_DRXparameter, // @sic R5s120210 sic@ + template AdditionalUpdateType p_AdditionalUpdateType, + template (present) MobileIdentity p_OldGuti, + template LocAreaId p_LAI, + template TrackingAreaId p_TAI, + template TMSI_Status p_TmsiStatus) + modifies cr_508_TAU_Request := + { /* @status APPROVED (LTE, LTE_IRAT) */ + tRACKING_AREA_UPDATE_REQUEST := { + epsUpdateType := cr_EPS_UpdateType('0'B, p_EpsUpdate_TypeValue), + oldGuti := p_OldGuti, + lastVisitedRegisteredTai := p_TAI, + oldLai := p_LAI, + tmsiStatus := p_TmsiStatus + } + }; + + template (present) NAS_UL_Message_Type cdr_TAU_Request_OldGuti_LAI(template (present) EPS_UpdateTypeValue p_EpsUpdate_TypeValue, + NAS_KsiValue p_KsiValue, + template DRXparameter p_DRXparameter, // @sic R5s120210 sic@ + template AdditionalUpdateType p_AdditionalUpdateType, + template (present) MobileIdentity p_OldGuti, + template LocAreaId p_LAI) + + modifies cr_508_TAU_Request := + { /* @status APPROVED (LTE, LTE_IRAT) */ + tRACKING_AREA_UPDATE_REQUEST := { + oldGuti := p_OldGuti, + oldLai := p_LAI, + tmsiStatus := omit, + addUpdateType := p_AdditionalUpdateType + } + }; + + template (present) NAS_UL_Message_Type cdr_TAU_RequestAnyActiveFlag(template (present) EPS_UpdateTypeValue p_EpsUpdate_TypeValue, + NAS_KsiValue p_KsiValue, + template DRXparameter p_DRXparameter, // @sic R5s120210 sic@ + template AdditionalUpdateType p_AdditionalUpdateType) + modifies cr_508_TAU_Request := + { /* @status APPROVED (LTE) */ + tRACKING_AREA_UPDATE_REQUEST := { + epsUpdateType := cr_EPS_UpdateType('?'B, p_EpsUpdate_TypeValue), + epsBearerContextStatus := cr_508_EPS_BearerContextStatusTAUReq(('000'B, '001'B)) ifpresent // @sic R5-113240 sic@ + } + }; + + template (present) NAS_UL_Message_Type cdr_TAU_Request_OldGutiPTMSISig(template (present) EPS_UpdateTypeValue p_EpsUpdate_TypeValue, + NAS_KsiValue p_KsiValue, + template DRXparameter p_DRXparameter, // @sic R5s120210 sic@ + template AdditionalUpdateType p_AdditionalUpdateType, + template (present) MobileIdentity p_OldGuti, + template PTMSI_Signature p_Sig) + modifies cr_508_TAU_Request := + { /* @status APPROVED (LTE, LTE_IRAT) */ + tRACKING_AREA_UPDATE_REQUEST := { + oldGuti := p_OldGuti, + oldPtmsiSignature := p_Sig + } + }; + + template (value) Nonce cs_Nonce (template (omit) IEI8_Type p_IEI, + O4_Type p_NonceValue) := + { /* 24.301 cl. 9.9.3.25 */ + /* @status APPROVED (LTE_IRAT) */ + iei := p_IEI, /* present in case of TV; omit in case of V */ + nonceValue := p_NonceValue + }; + + template (value) NAS_DL_Message_Type cds_SECURITY_MODE_COMMAND_MappedContext(B3_Type p_CipheringType, + B3_Type p_IntegrityType, + NAS_KsiValue p_AsmeKeySetId, + UE_SecurityCapability p_SecurityCap, + B32_Type p_NonceUE, + B32_Type p_NonceMME ) // @sic R5s100135 sic@ + modifies cs_508_SECURITY_MODE_COMMAND := + { /* @status APPROVED (LTE_IRAT) */ + sECURITY_MODE_COMMAND := { + asmeNasKeySetId := cs_NAS_KeySetIdentifier_lv(p_AsmeKeySetId, tsc_NasKsi_MappedSecurityContext), + replayedNonceUe := cs_Nonce ( '55'O, bit2oct (p_NonceUE)), + nonceMme := cs_Nonce ( '56'O, bit2oct (p_NonceMME)) + } + }; + + template (present) NAS_UL_Message_Type cr_PDNDisconnectReq(template (present) LinkedEpsBearerIdentity p_LinkedId):= + { /* @desc PDN DISCONNECT REQUEST + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + pDN_DISCONNECT_REQUEST := { + epsBearerId := '0'H, + protocolDiscriminator := tsc_PD_ESM, + procedureTransactionIdentifier := ?, + messageType := tsc_MT_PdnDisconnectRequest, + spareHalfOctet := ?, + linkedEpsBearerId := p_LinkedId, + protocolConfigurationOptions := cr_ProtocolConfigOptionsAny ifpresent + } + }; + + template (present) NAS_UL_Message_Type cr_DeactivateEPSBearerCxtAccept(EPS_BearerIdentity p_Id, + ProcedureTransactionIdentifier p_ProcTi) := + { /* @status APPROVED (LTE) */ + dEACTIVATE_EPS_BEARER_CONTEXT_ACCEPT := { + epsBearerId := p_Id, + protocolDiscriminator := tsc_PD_ESM, + procedureTransactionIdentifier := p_ProcTi, + messageType := tsc_MT_DeactivateEpsBearerContextAccept, + protocolConfigurationOptions := cr_ProtocolConfigOptionsAny ifpresent + } + }; + + //============================================================================ + // Packet filters + //---------------------------------------------------------------------------- + + template (value) PacketFilterComponent cs_PktFilterCompIPv4RemoteAddress(charstring p_RemoteAddress, + O4_Type p_Mask := tsc_IPv4Mask) := + { // 9 octets + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, UTRAN) */ + /* @sic R5s110604: optional parameters sic@ */ + id := '10'O, // IPv4 remote address + packetFilterComponentValue := { + ipv4RemoteAddress := f_Convert_IPv4Addr2OctString(p_RemoteAddress) & p_Mask // @sic R5s100189, R5-113734 sic@ + } + }; + + template (value) PacketFilterComponent cs_PktFilterCompIPv6RemoteAddress(charstring p_RemoteAddress, + O16_Type p_Mask := tsc_IPv6Mask) := + { // 33 octets + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, UTRAN) */ + id := '20'O, // IPv6 remote address + packetFilterComponentValue := { + ipv6RemoteAddress := f_Convert_IPv6Addr2OctString(p_RemoteAddress) & p_Mask // @sic R5s100189, R5-113734 sic@ + } + }; + + template (value) PacketFilterComponent cs_PktFilterCompProtocolIdNextHeader(O1_Type p_ProtocolIdNextHeader) := + { // 2 octets + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, UTRAN) */ + id := '30'O, // Protocol Identifier / Next header type + packetFilterComponentValue := { + protocolIdNextHeader := p_ProtocolIdNextHeader + } + }; + + template (value) PacketFilterComponent cs_PktFilterCompProtocolIdNextHeaderUDP := cs_PktFilterCompProtocolIdNextHeader('11'O); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, UTRAN) */ + template (value) PacketFilterComponent cs_PktFilterCompProtocolIdNextHeaderIPSec := cs_PktFilterCompProtocolIdNextHeader('32'O); /* @status APPROVED (LTE, UTRAN) */ + + template (value) PacketFilterComponent cs_PktFilterCompSingleLocalPort(UInt16_Type p_PortNumber) := + { // 3 octets + /* @status APPROVED (LTE, UTRAN) */ + id := '40'O, // Single local port + packetFilterComponentValue := { + singleLocalPort := int2oct(p_PortNumber, 2) + } + }; + + template (value) PacketFilterComponent cs_PktFilterCompLocalPortRange(UInt16_Type p_PortLow, + UInt16_Type p_PortHigh) := + { // 3 octets + /* @status APPROVED (LTE, UTRAN) */ + id := '41'O, // Local port range + packetFilterComponentValue := { + localPortRange := int2oct(p_PortLow, 2) & int2oct(p_PortHigh, 2) + } + }; + + template (value) PacketFilterComponent cs_PktFilterCompSingleRemotePort(UInt16_Type p_PortNumber) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, UTRAN) */ + id := '50'O, // Single remote port + packetFilterComponentValue := { + singleRemotePort := int2oct(p_PortNumber, 2) + } + }; + + /* + * @desc local function to calculate single remote port acc. to reference packet filters in 36.508 + * @param p_PortNumber + * @param p_EPS_BearerId + * @return UInt16_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_SingleRemoteport508(UInt16_Type p_PortNumber, + HalfOctet_Type p_EPS_BearerId) return UInt16_Type + { + return (p_PortNumber + hex2int(p_EPS_BearerId) - 6); + } + + template (value) PacketFilterComponent cs_PktFilterCompSingleRemotePort61000(HalfOctet_Type p_EPS_BearerId) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cs_PktFilterCompSingleRemotePort(fl_SingleRemoteport508(61000, p_EPS_BearerId)); + + template (value) PacketFilterComponent cs_PktFilterCompSingleRemotePort31160(HalfOctet_Type p_EPS_BearerId) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cs_PktFilterCompSingleRemotePort(fl_SingleRemoteport508(31160, p_EPS_BearerId)); + + template (value) PacketFilterComponent cs_PktFilterCompRemotePortRange(UInt16_Type p_PortLow, + UInt16_Type p_PortHigh) := + { // 3 octets + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, UTRAN) */ + id := '51'O, // Remote port range + packetFilterComponentValue := { + remotePortRange := int2oct(p_PortLow, 2) & int2oct(p_PortHigh, 2) + } + }; + + template (value) PacketFilterComponent cs_PktFilterCompIPSecSPI(O4_Type p_IPSecSPI) := + { // 5 octets + /* @status APPROVED (LTE, UTRAN) */ + id := '60'O, // Security parameter index type + packetFilterComponentValue := { + securityParameterIndex := p_IPSecSPI + } + }; + + template (value) PacketFilterComponent cs_PktFilterCompTOSTrafficClass(O2_Type p_TOSTrafficClass) := + { // 3 octets + /* @status APPROVED (LTE, UTRAN) */ + id := '70'O, // Type of service / Traffic class type + packetFilterComponentValue := { + typeOfServiceTrafficClass := p_TOSTrafficClass + } + }; + + template (value) PacketFilterComponent cs_PktFilterCompFlowLabel(O3_Type p_FlowLabel) := + { // 4 octets + /* @status APPROVED (LTE, UTRAN) */ + id := '80'O, // Flow label type + packetFilterComponentValue := { + flowLabel := p_FlowLabel + } + }; + + //---------------------------------------------------------------------------- + /* + * @desc Get the Dedicated TFT according to 36.508 clause 6.6.2 + * @param p_PacketFilterByRef (by reference) + * @param p_PacketFilterLengthByRef (by reference) + * @param p_PacketFilterNumber ... is the reference packet filter in Table 6.6.2-2 + * @param p_EPS_BearerId + * @param p_PdnTypeValue + * @param p_PdnIndex + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_Get_508_PacketFilter(out template (value) PacketFilter p_PacketFilterByRef, + out integer p_PacketFilterLengthByRef, + integer p_PacketFilterNumber, + HalfOctet_Type p_EPS_BearerId, + B3_Type p_PdnTypeValue, + PDN_Index_Type p_PdnIndex) + { /* @sic R5-112600 new parameter p_PdnTypeValue to determine whether IPv4 or IPv6 address to be used sic@ */ + /* @sic R5s130362 - MCC160 Implementation: tsc_PDN_AddressInfo; new parameter p_PdnIndex sic@ */ + var integer v_ContentsLength := 0; + var template (value) PacketFilter v_Filter; + var PDN_AddressInfo_Type v_PDN_AddressInfo := f_PDN_AddressInfo_Get(p_PdnIndex); + var charstring v_NetworkIpAddrv4 := v_PDN_AddressInfo.PCSCF_IPAddressIPv4; + var charstring v_NetworkIpAddrv6 := v_PDN_AddressInfo.PCSCF_IPAddressIPv6; + + + if ((p_PacketFilterNumber != 4) and (p_PacketFilterNumber != 5)) { // @sic R5-132085 sic@ in case (4, 5) no addresses used @sic R5s130495 sic@ + if (p_PdnTypeValue == tsc_PdnType_IPv4) { // IPv4 only; @sic R5s110168 change 8.3; R5-112600 sic@ + v_Filter.contents[0] := cs_PktFilterCompIPv4RemoteAddress(v_NetworkIpAddrv4); + v_ContentsLength := v_ContentsLength + 9; + } + else { // IPv4v6 or IPv6 only + v_Filter.contents[0] := cs_PktFilterCompIPv6RemoteAddress(v_NetworkIpAddrv6); + v_ContentsLength := v_ContentsLength + 33; + } + } + + select (p_PacketFilterNumber){ + case (1) { + v_Filter.spare := '00'B; // @sic R5s130195 Baseline Moving sic@ + v_Filter.direction := '01'B; // @sic R5s130195 Baseline Moving sic@ + v_Filter.iei := '0'H; // @sic R5s130195 Baseline Moving sic@ + v_Filter.precedence := int2bit((hex2int(p_EPS_BearerId)-6), 8); + v_Filter.contents[1] := cs_PktFilterCompSingleRemotePort31160(p_EPS_BearerId); + v_ContentsLength := v_ContentsLength + 3; + v_Filter.contents[2] := cs_PktFilterCompProtocolIdNextHeaderUDP; + v_ContentsLength := v_ContentsLength + 2; + } + case (2) { + // Update to values in Reference packet filter #2 + // UL only filter, ID=1 @sic R5-104702 sic@ + v_Filter.spare := '00'B; // @sic R5s130195 Baseline Moving sic@ + v_Filter.direction := '10'B; // @sic R5s130195 Baseline Moving sic@ + v_Filter.iei := '1'H; // @sic R5s130195 Baseline Moving sic@ + v_Filter.precedence := int2bit((hex2int(p_EPS_BearerId)-6+8), 8); // @sic R5-104702 sic@ + v_Filter.contents[1] := cs_PktFilterCompSingleRemotePort61000(p_EPS_BearerId); + v_ContentsLength := v_ContentsLength + 3; + v_Filter.contents[2] := cs_PktFilterCompProtocolIdNextHeaderUDP; + v_ContentsLength := v_ContentsLength + 2; + } + case (3){ + // Update to values in Reference packet filter #3 + // Bidirectional filter, ID=2 @sic R5-104702 sic@ + v_Filter.spare := '00'B; // @sic R5s130195 Baseline Moving sic@ + v_Filter.direction := '11'B; // @sic R5s130195 Baseline Moving sic@ + v_Filter.iei := '2'H; // @sic R5s130195 Baseline Moving sic@ + v_Filter.precedence := '00001111'B; + } + case (4){ // @sic R5-132085 sic@ + // Update to values in Reference packet filter #4 + // Bidirectional filter, ID=3 + v_Filter.spare := '00'B; + v_Filter.direction := '11'B; + v_Filter.iei := '3'H; + v_Filter.precedence := int2bit((hex2int(p_EPS_BearerId)-6), 8); + v_Filter.contents[0] := cs_PktFilterCompRemotePortRange(tsc_IMS_MediaPort_M1, tsc_IMS_MediaPort_M1+1); // @sic R5s130495 sic@ + v_ContentsLength := v_ContentsLength + 5; + v_Filter.contents[1] := cs_PktFilterCompProtocolIdNextHeaderUDP; + v_ContentsLength := v_ContentsLength + 2; + } + case (5){ // @sic R5-132085 sic@ + // Update to values in Reference packet filter #5 + // Bidirectional filter, ID=3 + v_Filter.spare := '00'B; + v_Filter.direction := '11'B; + v_Filter.iei := '4'H; + v_Filter.precedence := int2bit((hex2int(p_EPS_BearerId)-6), 8); + v_Filter.contents[0] := cs_PktFilterCompRemotePortRange(tsc_IMS_MediaPort_M2, tsc_IMS_MediaPort_M2+1); // @sic R5s130495 sic@ + v_ContentsLength := v_ContentsLength + 5; + v_Filter.contents[1] := cs_PktFilterCompProtocolIdNextHeaderUDP; + v_ContentsLength := v_ContentsLength + 2; + } + } + v_Filter.iel := int2oct(v_ContentsLength, 1); + + p_PacketFilterByRef := v_Filter; + p_PacketFilterLengthByRef := v_ContentsLength + 3; // length of the filter contents + 3 octets for iei, precedence and iel + } + + + //---------------------------------------------------------------------------- + /* + * @desc Calculate Packet Filters applied in test case 10.9.1 of 36.523-1 + * @param p_PacketFilterByRef (by reference) + * @param p_PacketFilterLengthByRef (by reference) + * @param p_IpTypeIsIPv4 + * @param p_PacketFilterID + * @status APPROVED (LTE, UTRAN) + */ + function f_Get_PacketFilter_10_9_1(out template (value) PacketFilter p_PacketFilterByRef, + out integer p_PacketFilterLengthByRef, + boolean p_IpTypeIsIPv4, + integer p_PacketFilterID) + { + var charstring v_IPv4RemoteAddress := "172.168.8.0"; // @sic R5s110776 sic@ + var O4_Type v_IPv4SubnetMask := 'FFFFFF00'O; + var charstring v_IPv6RemoteAddress := "2001:0ba0::"; // @sic R5s110776 sic@ + var O16_Type v_IPv6SubnetMask := 'FFFFFFFF000000000000000000000000'O; // @sic R5s110776 sic@ + + var integer v_FilterCount := 0; + var template (value) PacketFilter v_Filter; + + select (p_PacketFilterID) { // @sic R5-110779 sic@ + case (1) { + // UL only filter, ID=1 + v_Filter.spare := '00'B; // @sic R5s130195 Baseline Moving sic@ + v_Filter.direction := '10'B; // @sic R5s130195 Baseline Moving sic@ + v_Filter.iei := '1'H; // @sic R5s130195 Baseline Moving sic@ + v_Filter.precedence := int2bit(6, 8); + v_Filter.contents[0] := cs_PktFilterCompProtocolIdNextHeaderUDP; + v_FilterCount := v_FilterCount + 2; + if (p_IpTypeIsIPv4) { + v_Filter.contents[1] := cs_PktFilterCompIPv4RemoteAddress(v_IPv4RemoteAddress, v_IPv4SubnetMask); + v_FilterCount := v_FilterCount + 9; + } + else { // IPv6 + v_Filter.contents[1] := cs_PktFilterCompIPv6RemoteAddress(v_IPv6RemoteAddress, v_IPv6SubnetMask); + v_FilterCount := v_FilterCount + 33; + } + v_Filter.contents[2] := cs_PktFilterCompSingleLocalPort(60001); + v_FilterCount := v_FilterCount + 3; + v_Filter.contents[3] := cs_PktFilterCompRemotePortRange(60350, 60450); + v_FilterCount := v_FilterCount + 5; + v_Filter.contents[4] := cs_PktFilterCompTOSTrafficClass('A8FC'O); + v_FilterCount := v_FilterCount + 3; + } + case (2) { + v_Filter.spare := '00'B; // @sic R5s130195 Baseline Moving sic@ + v_Filter.direction := '10'B; // @sic R5s130195 Baseline Moving sic@ + v_Filter.iei := '2'H; // @sic R5s130195 Baseline Moving sic@ + v_Filter.precedence := int2bit(7, 8); + v_Filter.contents[0] := cs_PktFilterCompProtocolIdNextHeaderUDP; + v_FilterCount := v_FilterCount + 2; + if (p_IpTypeIsIPv4) { + v_Filter.contents[1] := cs_PktFilterCompIPv4RemoteAddress(v_IPv4RemoteAddress, v_IPv4SubnetMask); + v_FilterCount := v_FilterCount + 9; + } + else { // IPv6 + v_Filter.contents[1] := cs_PktFilterCompIPv6RemoteAddress(v_IPv6RemoteAddress, v_IPv6SubnetMask); + v_FilterCount := v_FilterCount + 33; + } + v_Filter.contents[2] := cs_PktFilterCompLocalPortRange(60000, 60100); + v_FilterCount := v_FilterCount + 5; + v_Filter.contents[3] := cs_PktFilterCompSingleRemotePort(60350); + v_FilterCount := v_FilterCount + 3; + v_Filter.contents[4] := cs_PktFilterCompTOSTrafficClass('A8FC'O); + v_FilterCount := v_FilterCount + 3; + } + case (3) { + v_Filter.spare := '00'B; // @sic R5s130195 Baseline Moving sic@ + v_Filter.direction := '10'B; // @sic R5s130195 Baseline Moving sic@ + v_Filter.iei := '3'H; // @sic R5s130195 Baseline Moving sic@ + v_Filter.precedence := int2bit(5, 8); + v_Filter.contents[0] := cs_PktFilterCompProtocolIdNextHeaderIPSec; + v_FilterCount := v_FilterCount + 2; + if (p_IpTypeIsIPv4) { + v_Filter.contents[1] := cs_PktFilterCompIPv4RemoteAddress(v_IPv4RemoteAddress, v_IPv4SubnetMask); + v_FilterCount := v_FilterCount + 9; + } + else { // IPv6 + v_Filter.contents[1] := cs_PktFilterCompIPv6RemoteAddress(v_IPv6RemoteAddress, v_IPv6SubnetMask); + v_FilterCount := v_FilterCount + 33; + } + v_Filter.contents[2] := cs_PktFilterCompIPSecSPI('0F80F000'O); // @sic R5s110778 sic@ + v_FilterCount := v_FilterCount + 5; + v_Filter.contents[3] := cs_PktFilterCompTOSTrafficClass('A0FC'O); + v_FilterCount := v_FilterCount + 3; + } + case (4) { + v_Filter.spare := '00'B; // @sic R5s130195 Baseline Moving sic@ + v_Filter.direction := '10'B; // @sic R5s130195 Baseline Moving sic@ + v_Filter.iei := '4'H; // @sic R5s130195 Baseline Moving sic@ + v_Filter.precedence := int2bit(2, 8); + if (p_IpTypeIsIPv4) { + v_Filter.contents[0] := cs_PktFilterCompIPv4RemoteAddress(v_IPv4RemoteAddress, v_IPv4SubnetMask); + v_FilterCount := v_FilterCount + 9; + } + else { // IPv6 + v_Filter.contents[0] := cs_PktFilterCompIPv6RemoteAddress(v_IPv6RemoteAddress, v_IPv6SubnetMask); + v_FilterCount := v_FilterCount + 33; + } + v_Filter.contents[1] := cs_PktFilterCompTOSTrafficClass('B0FC'O); + v_FilterCount := v_FilterCount + 3; + v_Filter.contents[2] := cs_PktFilterCompFlowLabel('000005'O); + v_FilterCount := v_FilterCount + 4; + } + case (5) { + v_Filter.spare := '00'B; // @sic R5s130195 Baseline Moving sic@ + v_Filter.direction := '10'B; // @sic R5s130195 Baseline Moving sic@ + v_Filter.iei := '5'H; // @sic R5s130195 Baseline Moving sic@ + v_Filter.precedence := int2bit(255, 8); + if (p_IpTypeIsIPv4) { + v_Filter.contents[0] := cs_PktFilterCompIPv4RemoteAddress(v_IPv4RemoteAddress, v_IPv4SubnetMask); + v_FilterCount := v_FilterCount + 9; + } + else { // IPv6 + v_Filter.contents[0] := cs_PktFilterCompIPv6RemoteAddress(v_IPv6RemoteAddress, v_IPv6SubnetMask); + v_FilterCount := v_FilterCount + 33; + } + } + case else { + // out of supported range + FatalError(__FILE__, __LINE__, "unsupported packet filter id"); + } + } + v_Filter.iel := int2oct(v_FilterCount, 1); + + p_PacketFilterByRef := v_Filter; + p_PacketFilterLengthByRef := v_FilterCount + 3; + } +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA_Templates/EPS_NAS_Templates.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA_Templates/EPS_NAS_Templates.ttcn new file mode 100644 index 0000000..fc5dcdc --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA_Templates/EPS_NAS_Templates.ttcn @@ -0,0 +1,1899 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-10 14:07:59 +0200 (Wed, 10 Sep 2014) $ +// $Rev: 12187 $ +/******************************************************************************/ + +module EPS_NAS_Templates { + + import from CommonDefs all; + import from NAS_CommonTypeDefs all; + import from EPS_NAS_TypeDefs all; + import from EPS_NAS_Constants all; + import from EPS_NAS_MsgContainers all; + import from NAS_CommonTemplates all; + import from Parameters all; + + const PdnTypeValue tsc_PdnType_IPv4 := '001'B; + const PdnTypeValue tsc_PdnType_IPv6 := '010'B; + const PdnTypeValue tsc_PdnType_IPv4v6 := '011'B; + const O4_Type tsc_IPv4Mask := 'FFFFFFFF'O; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, UTRAN) */ + const O16_Type tsc_IPv6Mask := 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'O; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, UTRAN) */ + + type enumerated BEARER_CONTEXT_TYPE { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + DEF_1, // EPS Default Bearer#1 defined in the first column of table 6.6.1 + DEF_2, // EPS Default Bearer#2 defined in the second column of table 6.6.1 + DEF_3, // EPS Default Bearer#3 defined in the third column of table 6.6.1 + DED_1, // EPS Dedicated Bearer#1 defined in the first column of table 6.6.2 + DED_2, // EPS Dedicated Bearer#2 defined in the second column of table 6.6.2 + DED_3, // EPS Dedicated Bearer#3 defined in the third column of table 6.6.2 + DED_4 // EPS Dedicated Bearer#4 defined in the fourth column of table 6.6.2 @sic R5-123632 sic@ + }; + + //**************************************************************************** + // common NAS message (security protected or non security protected) + //---------------------------------------------------------------------------- + // templates for NAS_SecurityProtectionInfo_Type + + template (value) NAS_SecurityProtectionInfoDL_Type cs_NAS_SecurityProtectionInfo(SecurityHeaderType p_Status, + boolean p_ForceMacError := false) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Status := p_Status, + ForceMacError := p_ForceMacError // @sic R5s100358 additional changes sic@ + }; + + template (present) NAS_SecurityProtectionInfoUL_Type cr_NAS_SecurityProtectionInfo(template (present) SecurityHeaderType p_ExpectedStatus) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Status := p_ExpectedStatus, + NasCount := ? + }; + + //---------------------------------------------------------------------------- + // common templates for security-protected or non security-protected NAS messages + + template (value) NAS_MSG_Request_Type cs_NAS_Request(SecurityHeaderType p_SecurityStatus, + template (value) NAS_DL_Message_Type p_Msg) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + SecurityProtection := cs_NAS_SecurityProtectionInfo(p_SecurityStatus), + Pdu := { + Msg := p_Msg, + PiggybackedPduList := omit + } + }; + + template (value) NAS_MSG_Request_Type cs_NAS_Request2PDUs(SecurityHeaderType p_SecurityStatus, + template (value) NAS_DL_Message_Type p_Msg1, + template (value) NAS_DL_Message_Type p_Msg2) := + { // ?????????????????????????? + SecurityProtection := cs_NAS_SecurityProtectionInfo(p_SecurityStatus), + Pdu := { + Msg := p_Msg1, + PiggybackedPduList := { + { + Msg := p_Msg2, + PiggybackedPduList := omit} + } + } + }; + + + template (present) NAS_MSG_Indication_Type cr_NAS_Indication(template (present) SecurityHeaderType p_ExpectedSecurityStatus, + template (present) NAS_UL_Message_Type p_Msg) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + SecurityProtection := cr_NAS_SecurityProtectionInfo(p_ExpectedSecurityStatus), + Pdu := { + Msg := p_Msg, + PiggybackedPduList := omit + } + }; + + template (value) NAS_MSG_Request_Type cs_NAS_RequestWithPiggybacking(SecurityHeaderType p_SecurityStatus, + template (value) NAS_DL_Message_Type p_EmmMsg, + template (value) NAS_DL_Message_Type p_EsmMsg) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + SecurityProtection := cs_NAS_SecurityProtectionInfo(p_SecurityStatus), + Pdu := { + Msg := p_EmmMsg, + PiggybackedPduList := { + { + Msg := p_EsmMsg, + PiggybackedPduList := omit + } + } + } + }; + + // further piggy-backing combinitions may be defined if necessary + + template (present) NAS_MSG_Indication_Type cr_NAS_IndicationWithPiggybacking(template (present) SecurityHeaderType p_ExpectedSecurityStatus, + template (present) NAS_UL_Message_Type p_EmmMsg, + template (present) NAS_UL_Message_Type p_EsmMsg) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + SecurityProtection := cr_NAS_SecurityProtectionInfo(p_ExpectedSecurityStatus), + Pdu := { + Msg := p_EmmMsg, + PiggybackedPduList := { + { + Msg := p_EsmMsg, + PiggybackedPduList := omit + } + } + } + }; + + // further piggy-backing combinitions may be defined if necessary + + //---------------------------------------------------------------------------- + // NAS info elements (24.301 cl. 9) + //---------------------------------------------------------------------------- + + template (value) AdditionalUpdateResult cs_AdditionalUpdateResult(B2_Type p_AddUpdateResultValue) := + { /* 24.301 cl. 9.9.3.0A */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5s120156 Additional Changes sic@ */ + iei := 'F'H, // currently only used as TV + spare2 := tsc_Spare2, + addUpdateResultValue := p_AddUpdateResultValue + }; + + template (value) AdditionalUpdateResult cs_AdditionalUpdateResult_SMSOnly := cs_AdditionalUpdateResult('10'B); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + template (value) AdditionalUpdateResult cs_AdditionalUpdateResult_CSFallbackNotPreferred := cs_AdditionalUpdateResult('01'B); /* @status APPROVED (LTE_IRAT) */ + + template (present) AuthenticationResponseParameter cr_AuthenticationResponseParameter_lv(template (present) B32_128_Type p_ExpectedRES) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + iei := omit, + iel := ?, /* RES has length of 32..128 bits i.e. 4..16 octets */ + res := p_ExpectedRES + }; + + template (present) LinkedEpsBearerIdentity cr_LinkedId (B4_Type p_Id) := + { /* @status APPROVED (LTE) */ + idValue := p_Id + }; + + template (value) LinkedEpsBearerIdentity cs_LinkedId (B4_Type p_Id) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + idValue := p_Id + }; + + template (value) NAS_SecurityAlgorithms cs_NAS_SecurityAlgorithms(B3_Type p_CipheringType, + B3_Type p_IntegrityType) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + iei := omit, + spare1 := tsc_Spare1, + cipheringType := p_CipheringType, + spare2 := tsc_Spare1, + integrityType := p_IntegrityType + }; + + template (value) NAS_KeySetIdentifier cs_NAS_KeySetIdentifier_lv(NAS_KsiValue p_NasKeySetId, + B1_Type p_Tsc) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + iei := omit, + tsc := p_Tsc, + nasKeySetId := p_NasKeySetId + }; + + template (present) NAS_KeySetIdentifier cr_NAS_KeySetIdentifier(template (present) NAS_KsiValue p_KsiValue, + template (present) B1_Type p_Tsc) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + iei := omit, + tsc := p_Tsc, + nasKeySetId := p_KsiValue + }; + + + template (present) NAS_KeySetIdentifier cdr_NAS_KeySetIdentifier_tlv(template (present) NAS_KsiValue p_KsiValue, + template (present) B1_Type p_Tsc) + modifies cr_NAS_KeySetIdentifier := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + iei := 'B'H + }; + + template (present) CSFBResponse cr_CSFBResponse (B3_Type p_Csfb) := // 24.301 cl. 9.9.3.5 + { /* @status APPROVED (LTE, LTE_IRAT) */ + iei := 'B'H, // currently only used as TV + spare := '0'B, + csfbValue := p_Csfb // 0 = CS fallback rejected, 1 = accepted by UE + }; + + template (present) EMM_Cause cr_EMM_Cause_v(template (present) B8_Type p_CauseValue := ?) := + { /* @status APPROVED (IMS_IRAT, LTE, LTE_IRAT) */ + iei := omit, + causeValue := p_CauseValue + }; + + template (value) EMM_Cause cs_EMM_Cause_v(B8_Type p_CauseValue) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + iei := omit, + causeValue := p_CauseValue + }; + + template (value) EMM_Cause cs_EMM_Cause_tv(B8_Type p_CauseValue) := + { /* @status APPROVED (LTE, LTE_IRAT) */ + iei := '53'O, + causeValue := p_CauseValue + }; + + template (value) ESM_Cause cs_ESM_Cause_v(B8_Type p_CauseValue) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + iei := omit, + causeValue := p_CauseValue + }; + + template (value) ESM_Cause cs_ESM_Cause_tv(B8_Type p_CauseValue) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + iei := '58'O, + causeValue := p_CauseValue + }; + + template (present) ESM_Cause cr_ESM_Cause_v(template (present) NAS_CauseValue_Type p_CauseValue) := + { /* @status APPROVED (LTE) */ + iei := omit, + causeValue := p_CauseValue + }; + + template (present) ESM_Cause cr_ESM_Cause_tv(template (present) NAS_CauseValue_Type p_CauseValue) := + { /* @status APPROVED (LTE) */ + iei := '58'O, + causeValue := p_CauseValue + }; + + template (value) ESM_MessageContainer cs_Dummy_ESM_Message := + { /* This is just a dummy to use in the EMM message as the NAS Emulator encodes the ESM message; + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + iei := omit, + iel := '0000'O, + esmPdu := ''O + }; + + template (present) ESM_MessageContainer cr_ESM_MessageContainer := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + iei := omit, // IE is mandatory in all MO messages + iel := ?, + esmPdu := ? + }; + + template (present) ESM_InfoTransferFlag cr_ESMInfoTransferFlag_Any := + { /* 24.301 cl. 9.9.4.5; */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + iei := 'D'H, + spare := tsc_Spare3, + eitValue := ? + }; + + template (present) GUTI_Type cr_GUTI_Type_Any := + { /* 24.301 cl. 9.9.3.45 @sic R5s110178 Baseline Moving sic@ */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + iei := 'E'H, + spare := tsc_Spare3, + gutiType := ? + }; + + template (present) EPS_AttachType cr_EPS_AttachType(template (present) NAS_AttDetValue_Type p_ResultValue) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + spare := tsc_Spare1, + typeValue := p_ResultValue + }; + + template (value) EPS_AttachResult cs_EPS_AttachResult(NAS_AttDetValue_Type p_ResultValue) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + spare := tsc_Spare1, + resultValue := p_ResultValue + }; + + template (value) EPS_NetworkFeatureSupport cs_EPS_NwkFtSup_Common(B1_Type p_Esrps := '0'B, + B2_Type p_CsLCS := '00'B, + B1_Type p_EpcLCS := '0'B, + B1_Type p_EmcBS := '0'B, + B1_Type p_ImsVoPS := '0'B) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + iei := '64'O, /* present in case of TV; omit in case of V */ + iel := '01'O, /* present in case of LV or TLV; omit in case of V */ + spareBits := tsc_Spare2, // @sic R5s110176 Baseline Moving sic@ + esrps := p_Esrps, // @sic R5s120178 Baseline Moving sic@ + csLCS := p_CsLCS, // @sic R5s110176, R5s120178 Baseline Moving sic@ + epcLCS := p_EpcLCS, // @sic R5s110176 Baseline Moving sic@ + emcBS := p_EmcBS, // @sic R5s110176, R5s120178 Baseline Moving; R5-112289: '00'B -> '01'B sic@ + imsVoPS := p_ImsVoPS + }; + + template (value) EPS_NetworkFeatureSupport cs_EPS_NwkFtSup_IMSVoice := cs_EPS_NwkFtSup_Common(-, -, -, -, '1'B); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + template (value) EPS_NetworkFeatureSupport cs_EPS_NwkFtSup_IMSVoiceNotSupport := cs_EPS_NwkFtSup_Common; /* @status APPROVED (LTE_IRAT) */ + template (value) EPS_NetworkFeatureSupport cs_EPS_NwkFtSup_IMSVoice_EMCBS := cs_EPS_NwkFtSup_Common(-, -, -, '1'B, '1'B); /* @status APPROVED (LTE) */ + template (value) EPS_NetworkFeatureSupport cs_EPS_NwkFtSup_IMSVoice_EMCBS_EPCLCS := cs_EPS_NwkFtSup_Common(-, -, '1'B, '1'B, '1'B); /* @status APPROVED (LTE) */ + template (value) EPS_NetworkFeatureSupport cs_EPS_NwkFtSup_CsLCS := cs_EPS_NwkFtSup_Common(-, '01'B, -, '1'B, '1'B); + template (value) EPS_NetworkFeatureSupport cs_EPS_NwkFtSup_CsLCSAndEpcLCS := cs_EPS_NwkFtSup_Common(-, '01'B, '1'B, '1'B, '1'B); /* @status APPROVED (POS) */ + + template (present) EPS_UpdateType cr_EPS_UpdateType(template (present) B1_Type p_ActiveFlag, + template (present) EPS_UpdateTypeValue p_EpsUpdateType) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + activeFlag := p_ActiveFlag, + typeValue := p_EpsUpdateType + }; + + template (value) EPS_UpdateResult cs_EPS_UpdateResult(NAS_AttDetValue_Type p_UpdateValue) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + spare := '0'B, + resultValue := p_UpdateValue + }; + + template (present) Request_Type cr_EPS_PdnRequestType(template (present) B3_Type p_TypeValue) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + spare := tsc_Spare1, + typeValue := p_TypeValue + }; + + template (present) EPS_BearerContextStatus cr_EPS_BearerContextStatus_Any := + { /* 24.301 cl. 9.9.2.1 */ + /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + iei := ?, /* present in case of TV or TLV; omit in case of V */ + iel := ?, /* present in case of LV or TLV; omit in case of V */ + ebi5_7 := ?, /* EBI(5)- EBI(7) */ + spare := tsc_Spare5, /* EBI(0)- EBI(4) are spare and shall be coded as zero*/ + ebi8_15 := ? /* EBI(8)- EBI(15)*/ + }; + + template (present) EPS_BearerContextStatus cr_508_EPS_BearerContextStatusTAUReq(template (present) B3_Type p_EBI5_7 := '001'B) := + { /* See 36.508 clause Table 4.7.2-27 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + iei := '57'O, + iel := '02'O, + ebi5_7 := p_EBI5_7, /* EBI(5)- EBI(7) */ + spare := tsc_Spare5, /* EBI(0)- EBI(4) are spare and shall be coded as zero*/ + ebi8_15 := '00000000'B + }; + + template (value) PagingIdentity cs_PagingIdentity(B1_Type p_PagingId) := + { /* @status APPROVED (LTE, LTE_IRAT) */ + iei := omit, + spareBits := '0000000'B, + pagingId := p_PagingId + }; + + template (value) PDN_Address cs_PDN_Address (B3_Type p_PDNType, + octetstring p_Address) := + { + iei := '59'O, + iel := int2oct (lengthof(p_Address)+1, 1), + spare := tsc_Spare5, + typeValue := p_PDNType, + adressInfo := p_Address + }; + + template (present) PDN_Type cr_PDN_Type(template (present) PdnTypeValue p_TypeValue) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + spare := tsc_Spare1, + typeValue := p_TypeValue + }; + + template (present) TrackingAreaId cr_TAI_Any := + { /* 24.301 cl. 9.9.3.32; + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + iei := '52'O, + plmnId := ?, /* MCC + MNC 3 digits each */ + tac := ? /* TAC */ + }; + + template (present) TrackingAreaId cr_TAI(NAS_PlmnId p_PlmnId, // O3_Type + NAS_Tac p_Tac) := // O2_Type + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + iei := '52'O, + plmnId := p_PlmnId, + tac := p_Tac + }; + + template (value) PartialTaiType cs_NonConsecutivePartialTaiList (NAS_PlmnId p_PlmnId, + NAS_TacList p_TacList):= + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + type0List := { + { + plmnId := p_PlmnId, + tacList := p_TacList + } + } + }; + + template (value) ListOfPartialTaiList cs_ListNonConsecutivePartialTaiList (NAS_PlmnId p_PlmnId, + NAS_TacList p_TacList):= + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + spareBit := tsc_Spare1, + typeOfList := tsc_NonConsecutiveTacs, + numberOfElements := int2bit(lengthof(p_TacList) - 1, 5), + partialTaiList := cs_NonConsecutivePartialTaiList (p_PlmnId, p_TacList) + }; + + template (value) TrackingAreaIdList cs_TAIListNonConsecutive_lv (NAS_PlmnId p_PlmnId, + NAS_TacList p_TacList) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + iei := omit, + iel := int2oct(4 + 2 * lengthof(p_TacList), 1), + listOfPartialTais := {cs_ListNonConsecutivePartialTaiList (p_PlmnId, p_TacList) } + }; + + template (value) TrackingAreaIdList cds_TAIListNonConsecutive_tlv (NAS_PlmnId p_PlmnId, + NAS_TacList p_TacList) + modifies cs_TAIListNonConsecutive_lv := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + iei := '54'O // TS 24.301 clause 8.2.26 + }; + + template (value) TrackingAreaIdList cs_TrackingAreaIdListDef_lv := cs_TAIListNonConsecutive_lv (tsc_PLMN1, {tsc_TAC1}); /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + template (value) TrackingAreaIdList cs_TrackingAreaIdListDef_tlv := cds_TAIListNonConsecutive_tlv (tsc_PLMN1, {tsc_TAC1}); /* @status APPROVED (LTE, LTE_IRAT) */ + + template (value) EPS_QualityOfService cs_508_EPS_QoS_Dedicated_1 := + { /* according to table 6.6.2.1 in 36.508 + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + iei := omit, + iel := '09'O, + qci := '00000001'B, // @sic R5-112698 sic@ + maxBitRateUl := '01101000'B, //384 kbps + maxBitRateDl := '01101000'B, //384 kbps + guaranteedBitRateUl := '01001000'B, //128 kbps + guaranteedBitRateDl := '01001000'B, //128 kbps + maxBitRateUlExt := '00000000'B, + maxBitRateDlExt := '00000000'B, + guaranteedBitRateUlExt := '00000000'B, + guaranteedBitRateDlExt := '00000000'B, + maxBitRateDL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + guaranteedBitRateDL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + maxBitRateUL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + guaranteedBitRateUL_Ext2 := omit // @sic R5s1300195 Baseline Moving sic@ + }; + + template (value) EPS_QualityOfService cds_508_EPS_QoS_Dedicated_1_tlv + modifies cs_508_EPS_QoS_Dedicated_1 := + { /* according to table 6.6.2.1 in 36.508, including iei */ + /* @status APPROVED (LTE, LTE_IRAT) */ + /* @sic R5s100295 sic@ */ + iei := '5B'O + }; + + template (value) EPS_QualityOfService cds_EPS_QoS_Dedi_nonGBR_QCI + modifies cs_508_EPS_QoS_Dedicated_1 := + { /* @status APPROVED (LTE) */ + qci := '00000101'B // Different from the value in cs_508_EPS_QoS_Dedicated_1 + }; + + template (value) EPS_QualityOfService cds_EPS_QoS_Dedi_nonGBR_QCI_tlv // @sic R5-115537 sic@ + modifies cs_508_EPS_QoS_Dedicated_1 := + { /* @status APPROVED (LTE) */ + iei := '5B'O, + qci := '00000101'B // Different from the value in cs_508_EPS_QoS_Dedicated_1 + }; + + template (value) EPS_QualityOfService cds_EPS_QoS_Dedicated_3 modifies cs_508_EPS_QoS_Dedicated_1 := + { // @sic R5-123632 sic@ + /* @status APPROVED (IMS) */ + qci := '00000010'B, // Different from the value in cs_508_EPS_QoS_Dedicated_1 + maxBitRateUl := '01101110'B, //432 kbps + maxBitRateDl := '01101110'B, //432 kbps + guaranteedBitRateUl := '01101110'B, //432 kbps + guaranteedBitRateDl := '01101110'B //432 kbps + }; + + template (value) EPS_QualityOfService cds_EPS_QoS_Dedicated_3_tlv + modifies cs_508_EPS_QoS_Dedicated_1 := + { /* @status */ + iei := '5B'O, + qci := '00000010'B, // Different from the value in cs_508_EPS_QoS_Dedicated_1 + maxBitRateUl := '01101110'B, //432 kbps + maxBitRateDl := '01101110'B, //432 kbps + guaranteedBitRateUl := '01101110'B, //432 kbps + guaranteedBitRateDl := '01101110'B //432 kbps + }; + + template (value) EPS_QualityOfService cds_EPS_QoS_Dedicated_4 modifies cs_508_EPS_QoS_Dedicated_1 := + { // @sic R5-123632 sic@ + /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + qci := '00000001'B // Different from the value in cs_508_EPS_QoS_Dedicated_1 + }; + + template (value) EPS_QualityOfService cds_EPS_QoS_Dedicated_4_tlv + modifies cs_508_EPS_QoS_Dedicated_1 := + { /* @status */ + iei := '5B'O, + qci := '00000001'B // Different from the value in cs_508_EPS_QoS_Dedicated_1 + }; + + template (present) EPS_QualityOfService cr_EPS_QoS_Any_lv := + { /* 24.301 cl. 9.9.4.3 */ + /* @status APPROVED (LTE) */ + iei := omit, + iel := ?, + qci := ?, + maxBitRateUl := *, + maxBitRateDl := *, + guaranteedBitRateUl := *, + guaranteedBitRateDl := *, + maxBitRateUlExt := *, + maxBitRateDlExt := *, + guaranteedBitRateUlExt := *, + guaranteedBitRateDlExt := *, + maxBitRateDL_Ext2 := *, // @sic R5s1300195 Baseline Moving sic@ + guaranteedBitRateDL_Ext2 := *, // @sic R5s1300195 Baseline Moving sic@ + maxBitRateUL_Ext2 := *, // @sic R5s1300195 Baseline Moving sic@ + guaranteedBitRateUL_Ext2 := * // @sic R5s1300195 Baseline Moving sic@ + }; + + template (present) EPS_QualityOfService cdr_EPS_QoS_Any_tlv + modifies cr_EPS_QoS_Any_lv := + { /* @status APPROVED (LTE) */ + iei := '5B'O + }; + + + //**************************************************************************** + // NAS messages (24.301 cl. 8) + //---------------------------------------------------------------------------- + + template (present) NAS_UL_Message_Type cr_508_ATTACH_REQUEST(template (present) NAS_AttDetValue_Type p_AttachTypeValue, + template AdditionalUpdateType p_AdditionalUpdateType) := + { /* 24.301 cl. 8.2.4 + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + aTTACH_REQUEST := { + securityHeaderType := tsc_SHT_NoSecurityProtection, + protocolDiscriminator := tsc_PD_EMM, + messageType := tsc_MT_AttachRequest, + nasKeySetId := cr_NAS_KeySetIdentifier(?, ?), + epsAttachType := cr_EPS_AttachType(p_AttachTypeValue), + epsMobileIdentity := cr_MobileIdAny (omit), // @sic R5s110176 Baseline Moving sic@ + ueNetworkCapability := cr_UENetworkCap_Any (omit), + esmMessage := cr_ESM_MessageContainer, + oldPtmsiSignature := cr_PTMSI_SignatureAny ifpresent, + additionalGuti := cr_MobileIdAny ('50'O) ifpresent, + lastVisitedRegisteredTai := cr_TAI_Any ifpresent, + drxParameter := cr_DRXparameter_Any ('5C'O) ifpresent, + msNetworkCapability := cr_MS_NetworkCap_Any ifpresent, + oldLai := cr_LAI_Any ifpresent, + tmsiStatus := cr_TMSI_Status ifpresent, + msClassmark2 := cr_MS_Clsmk2_Any_tlv ifpresent, // @sic R5s100662 sic@ + msClassmark3 := cr_MSCLSMK3_Any ifpresent, + supportedCodecList := cr_CodecListAny ifpresent, + addUpdateType := p_AdditionalUpdateType, /* @sic R5-103681 sic@ */ + voiceDomainPref := cr_VoiceDomainPref_Any ifpresent, //@sic R5s110176 Baseline Moving sic@ + deviceProperties := cr_DeviceProperties('D'H) ifpresent, /* cl. 9.9.2.0A O TV 1 IEI=0xD- @sic R5s120178 Baseline Moving sic@*/ + oldGUTI_Type := cr_GUTI_Type_Any ifpresent, /* cl. 9.9.3.45 O TV 1 IEI=0xE- @sic R5s120178 Baseline Moving sic@*/ + msNetworkFeatureSupport := cr_MS_NetworkFeatureSupport('C'H) ifpresent, /* cl. 9.9.2.0A O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/ + tmsiBasedNRIContainer := cr_NwkResourceIdAny ifpresent // @sic R5s130195 Baseline Moving sic@ + } + }; + + template (present) NAS_UL_Message_Type cdr_ATTACH_REQUEST_WithIMSIAndnoTAI(template (present) NAS_AttDetValue_Type p_AttachTypeValue, + template AdditionalUpdateType p_AdditionalUpdateType, + template (present) MobileIdentity p_MobileId, + template TMSI_Status p_TmsiStatus := cr_TMSI_Status ifpresent, // @sic R5s110242 sic@ + template LocAreaId p_OldLAI := cr_LAI_Any ifpresent) // @sic R5s110242 sic@ + modifies cr_508_ATTACH_REQUEST := + { /* 24.301 cl. 8.2.4 */ + /* @status APPROVED (LTE, LTE_IRAT) */ + aTTACH_REQUEST := { + nasKeySetId := cr_NAS_KeySetIdentifier(tsc_NasKsi_NoKey, ?), + epsMobileIdentity := p_MobileId, // @sic R5s110176 Baseline Moving sic@ + lastVisitedRegisteredTai := omit, + oldLai := p_OldLAI, // @sic R5s110230 sic@ + tmsiStatus := p_TmsiStatus + } + }; + + template (present) NAS_UL_Message_Type cdr_ATTACH_REQUEST_WithIMSI(template (present) NAS_AttDetValue_Type p_AttachTypeValue, + template AdditionalUpdateType p_AdditionalUpdateType, + template (present) MobileIdentity p_MobileId) + modifies cr_508_ATTACH_REQUEST := + { /* 24.301 cl. 8.2.4 */ + /* @status APPROVED (LTE_IRAT) */ + aTTACH_REQUEST := { + epsMobileIdentity := p_MobileId + } + }; + + template (present) NAS_UL_Message_Type cdr_ATTACH_REQUEST_WithGuti_DeviceProperties(template (present) NAS_AttDetValue_Type p_AttachTypeValue, + template AdditionalUpdateType p_AdditionalUpdateType, + template (present) NAS_KsiValue p_KsiValue, + template (present) MobileIdentity p_MobileId, + template TrackingAreaId p_Tai, + template DeviceProperties p_DeviceProperties) + modifies cr_508_ATTACH_REQUEST := + { /* @status APPROVED (LTE_A) */ + aTTACH_REQUEST := { + nasKeySetId := cr_NAS_KeySetIdentifier(p_KsiValue, tsc_Spare1), + epsAttachType := cr_EPS_AttachType(p_AttachTypeValue), + epsMobileIdentity := p_MobileId, // @sic R5s110176 Baseline Moving sic@ + lastVisitedRegisteredTai := p_Tai, + deviceProperties := p_DeviceProperties + } + }; + + template (present) NAS_UL_Message_Type cdr_ATTACH_REQUEST_WithMSNetworkFeatureSupport(template (present) NAS_AttDetValue_Type p_AttachTypeValue, + template AdditionalUpdateType p_AdditionalUpdateType, + template MS_NetworkFeatureSupport p_MS_NetworkFeatureSupport) + modifies cr_508_ATTACH_REQUEST := + { /* @status APPROVED (LTE_A) */ + aTTACH_REQUEST := { + epsAttachType := cr_EPS_AttachType(p_AttachTypeValue), + msNetworkFeatureSupport := p_MS_NetworkFeatureSupport + } + }; + + template (value) NAS_DL_Message_Type cs_AUTHENTICATION_REQUEST(NAS_KsiValue p_AsmeKeySetId, + B128_Type p_RAND, + B128_Type p_AUTN) := + { /* 24.301 cl. 8.2.7 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + aUTHENTICATION_REQUEST := { + securityHeaderType := tsc_SHT_NoSecurityProtection, + protocolDiscriminator := tsc_PD_EMM, + messageType := tsc_MT_AuthenticationRequest, + spareHalfOctet := tsc_SpareHalfOctet, + asmeNasKeySetId := cs_NAS_KeySetIdentifier_lv(p_AsmeKeySetId, tsc_NasKsi_NativeSecurityContext), + rand := cs_RAND_v(p_RAND), + autn := cs_AUTN_lv(p_AUTN) + } + }; + + template (present) NAS_UL_Message_Type cr_AUTHENTICATION_RESPONSE := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + aUTHENTICATION_RESPONSE := { + securityHeaderType := tsc_SHT_NoSecurityProtection, + protocolDiscriminator := tsc_PD_EMM, + messageType := tsc_MT_AuthenticationResponse, + authenticationResponseParameter := cr_AuthenticationResponseParameter_lv(?) // accept any RES in the first place + } + }; + + template (present) NAS_UL_Message_Type cr_AUTHENTICATION_FAIL_Any (template (present) EMM_Cause p_EMM_Cause := ?, + template AuthenticationFailureParameter p_AuthenticationFailureParameter := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + aUTHENTICATION_FAILURE := { + securityHeaderType := tsc_SHT_NoSecurityProtection, + protocolDiscriminator := tsc_PD_EMM, + messageType := tsc_MT_AuthenticationFailure, + emmCause := ?, /* cl. 9.9.3.7 M V 1 */ + authenticationFailureParameter := omit + } + }; + + template (present) EMM_Cause cr_EMM_Cause_AuthFail_Mac := cr_EMM_Cause_v(tsc_Cause_MAC_Failure); /* @status APPROVED (IMS_IRAT, LTE, LTE_IRAT) */ + + template (present) EMM_Cause cr_EMM_Cause_AuthFail_SQN := cr_EMM_Cause_v(tsc_Cause_SQN_Failure); /* @status APPROVED (IMS_IRAT, LTE, LTE_IRAT) */ + + template (present) EMM_Cause cr_EMM_Cause_AuthFail_nonEPS_AuthUnacceptable := cr_EMM_Cause_v(tsc_Cause_nonEPS_AuthUnacceptable); /* @status */ + + template (present) NAS_UL_Message_Type cr_AUTHENTICATION_FAIL_synch := cr_AUTHENTICATION_FAIL_Any(cr_EMM_Cause_AuthFail_SQN, cr_AuthFailParam_Any); /* @status APPROVED (IMS_IRAT, LTE, LTE_IRAT) */ + template (present) NAS_UL_Message_Type cr_AUTHENTICATION_FAIL_mac := cr_AUTHENTICATION_FAIL_Any (cr_EMM_Cause_AuthFail_Mac); /* @status APPROVED (IMS_IRAT, LTE, LTE_IRAT) */ + template (present) NAS_UL_Message_Type cr_AUTHENTICATION_FAIL_nonEPS_AuthUnacc := cr_AUTHENTICATION_FAIL_Any (cr_EMM_Cause_AuthFail_nonEPS_AuthUnacceptable); + + template (value) NAS_DL_Message_Type cs_508_SECURITY_MODE_COMMAND(B3_Type p_CipheringType, + B3_Type p_IntegrityType, + NAS_KsiValue p_AsmeKeySetId, + UE_SecurityCapability p_SecurityCap) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + sECURITY_MODE_COMMAND := { + securityHeaderType := tsc_SHT_NoSecurityProtection, + protocolDiscriminator := tsc_PD_EMM, + messageType := tsc_MT_SecurityModeCommand, + nasSecurityAlgorithms := cs_NAS_SecurityAlgorithms(p_CipheringType, p_IntegrityType), + spareHalfOctet := tsc_SpareHalfOctet, + asmeNasKeySetId := cs_NAS_KeySetIdentifier_lv(p_AsmeKeySetId, tsc_NasKsi_NativeSecurityContext), + replayedSecurityCapability := p_SecurityCap, // @sic R5s100135 sic@ + imeisvRequest := omit, + replayedNonceUe := omit, + nonceMme := omit + } + }; + + template (present) NAS_UL_Message_Type cr_508_SECURITY_MODE_COMPLETE := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + sECURITY_MODE_COMPLETE := { + securityHeaderType := tsc_SHT_NoSecurityProtection, + protocolDiscriminator := tsc_PD_EMM, + messageType := tsc_MT_SecurityModeComplete, + imeisv := omit + } + }; + + template (value) NAS_DL_Message_Type cs_508_ATTACH_ACCEPT(NAS_AttDetValue_Type p_EpsAttachResultValue, + template (value) TrackingAreaIdList p_TaiList, + template (omit) MobileIdentity p_Guti, + template (omit) LocAreaId p_Lai, + template (omit) MobileIdentity p_MSId, + template (omit) EMM_Cause p_Cause, + template (omit) AdditionalUpdateResult p_AdditionalUpdateResult, + template (value) GPRS_Timer p_T3412 := cs_GprsTimer_v_deact, + template (omit) GPRS_Timer p_T3402 := omit, // @sic R5-115720 sic@ + template (omit) GPRS_Timer3 p_T3412Extd := omit) := // @sic R5s120178 Basleine Moving sic@ + /* @status APPROVED (LTE, LTE_A) */ + /* @sic R5s100780 sic@ */ + cs_ATTACH_ACCEPT_Common (p_EpsAttachResultValue, + p_T3412, + p_TaiList, + p_Guti, + p_Lai, + p_MSId, + p_Cause, + p_T3402, + omit, + omit, + omit, + cs_EPS_NwkFtSup_IMSVoice, // @sic R5-103674 sic@ + p_AdditionalUpdateResult, // @sic R5-103681 sic@ + p_T3412Extd); // @sic R5s120178 Baseline Moving sic@ + + template (value) NAS_DL_Message_Type cs_ATTACH_ACCEPT_Common(NAS_AttDetValue_Type p_EpsAttachResultValue, + template (value) GPRS_Timer p_T3412, + template (value) TrackingAreaIdList p_TaiList, + template (omit) MobileIdentity p_Guti, + template (omit) LocAreaId p_Lai, + template (omit) MobileIdentity p_MSId, + template (omit) EMM_Cause p_Cause, + template (omit) GPRS_Timer p_T3402, + template (omit) GPRS_Timer p_T3423, + template (omit) PLMN_List p_EquivalentPlmnList, + template (omit) EmergNumList p_EmergNumList, + template (omit) EPS_NetworkFeatureSupport p_NtwkFeatSupport, + template (omit) AdditionalUpdateResult p_AdditionalUpdateResult, + template (omit) GPRS_Timer3 p_T3412Extd) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5s100780 sic@ */ + aTTACH_ACCEPT := { + securityHeaderType := tsc_SHT_NoSecurityProtection, + protocolDiscriminator := tsc_PD_EMM, + messageType := tsc_MT_AttachAccept, + spareHalfOctet := tsc_SpareHalfOctet, + epsAttachResult := cs_EPS_AttachResult(p_EpsAttachResultValue), + t3412 := p_T3412, + taiList := p_TaiList, + esmMessage := cs_Dummy_ESM_Message, + guti := p_Guti, + lai := p_Lai, + msIdentity := p_MSId, + emmCause := p_Cause, + t3402 := p_T3402, + t3423 := p_T3423, + equivalentPlmns := p_EquivalentPlmnList, + emergencyNumberList := p_EmergNumList, + epsNetworkFeatureSupport := p_NtwkFeatSupport, // @sic R5-103674 sic@ + addUpdateResult := p_AdditionalUpdateResult, // @sic R5-103681 sic@ + t3412ExtdValue := p_T3412Extd /* cl. 9.9.3.16B O TLV 3 IEI=0x5E @sic R5s120178 Baseline Moving sic@*/ + } + }; + + template (present) NAS_UL_Message_Type cr_508_ATTACH_COMPLETE := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + aTTACH_COMPLETE := { + securityHeaderType := tsc_SHT_NoSecurityProtection, + protocolDiscriminator := tsc_PD_EMM, + messageType := tsc_MT_AttachComplete, + esmMessage := cr_ESM_MessageContainer + } + }; + + template (value) NAS_DL_Message_Type cs_508_DETACH_REQUEST_MT(template (value) DetachType p_DetachType, + template (omit) EMM_Cause p_Cause) := + { /* @status APPROVED (LTE) */ + dETACH_REQUEST_MT := { + securityHeaderType := tsc_SHT_NoSecurityProtection, + protocolDiscriminator := tsc_PD_EMM, + messageType := tsc_MT_DetachRequest, + spareHalfOctet := tsc_SpareHalfOctet, + detachType := p_DetachType, + emmCause := p_Cause + } + }; + + template (value) NAS_DL_Message_Type cs_508_DETACH_ACCEPT := + { /* @status APPROVED (LTE, LTE_IRAT) */ + dETACH_ACCEPT := { + securityHeaderType := tsc_SHT_NoSecurityProtection, + protocolDiscriminator := tsc_PD_EMM, + messageType := tsc_MT_DetachAccept + } + }; + + template (present) NAS_UL_Message_Type cr_508_DETACH_ACCEPT := + { /* @status APPROVED (LTE) */ + dETACH_ACCEPT := { + securityHeaderType := tsc_SHT_NoSecurityProtection, + protocolDiscriminator := tsc_PD_EMM, + messageType := tsc_MT_DetachAccept + } + }; + + template (present) NAS_UL_Message_Type cr_508_DETACH_REQUEST_MO(template (present) NAS_KeySetIdentifier p_NasKeySetId, + template (present) MobileIdentity p_MobileId, + template (present) DetachType p_DetachType) := // @sic R5-103675 sic@ + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + dETACH_REQUEST_MO := { + securityHeaderType := tsc_SHT_NoSecurityProtection, + protocolDiscriminator := tsc_PD_EMM, + messageType := tsc_MT_DetachRequest, + asmeNasKeySetId := p_NasKeySetId, + detachType := p_DetachType, + epsMobileIdentity := p_MobileId // @sic R5s110176 Baseline Moving sic@ + } + }; + + template (value) DL_NAS_TRANSPORT cs_508_DLNASTransport (NAS_MessageContainer p_Msg):= + { + securityHeaderType := tsc_SHT_NoSecurityProtection, + protocolDiscriminator := tsc_PD_EMM, + messageType := tsc_MT_DL_NASTransport, + nasMessage := p_Msg + }; + + template (value) NAS_DL_Message_Type cs_IDENTITY_REQUEST(NAS_IdType p_IdType) := + { /* @status APPROVED (LTE, LTE_A) */ + iDENTITY_REQUEST :={ + securityHeaderType := tsc_SHT_NoSecurityProtection, + protocolDiscriminator := tsc_PD_EMM, + messageType := tsc_MT_IdentityRequest, + spareHalfOctet := tsc_SpareHalfOctet, + identityType2 := cs_IdentityType(p_IdType) + } + }; + + template (present) NAS_UL_Message_Type cr_IDENTITY_RESPONSE(template (present) MobileIdentity p_MobileId) := + { /* @status APPROVED (LTE, LTE_A) */ + iDENTITY_RESPONSE :={ + securityHeaderType := tsc_SHT_NoSecurityProtection, + protocolDiscriminator := tsc_PD_EMM, + messageType := tsc_MT_IdentityResponse, + mobileIdentity := p_MobileId + } + }; + + template (value) NAS_DL_Message_Type cs_508_Service_Notification := + { /* @status APPROVED (LTE, LTE_IRAT) */ + cS_SERVICE_NOTIFICATION := { + securityHeaderType := tsc_SHT_NoSecurityProtection, + protocolDiscriminator := tsc_PD_EMM, + messageType := tsc_MT_CSServiceNotification, + pagingIdentity := cs_PagingIdentity('1'B), + cli := omit, + ssCode := omit, + lcsIndicator := omit, + lcsClientIdentity := omit + } + }; + + template (present) NAS_UL_Message_Type cr_508_SERVICE_REQUEST(template (present) NAS_KsiValue p_AsmeKeySetId) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + sERVICE_REQUEST := { + securityHeaderType := tsc_SHT_ServiceRequest, + protocolDiscriminator := tsc_PD_EMM, + ksiAndSN := { + iei := omit, + ksi := p_AsmeKeySetId, + sn := ? //This is checked in the NAS Emulator + }, + shortMAC := { + iei := omit, + macValue := ? //This is checked in the NAS Emulator + } + } + }; + + template (value) NAS_DL_Message_Type cs_508_SERVICE_REJECT(NAS_CauseValue_Type p_CauseValue, + template (omit) GPRS_Timer p_T3442 := omit, + template (omit) GPRS_Timer2 p_T3346 := omit) := + { /* @status APPROVED (LTE, LTE_IRAT) */ + sERVICE_REJECT := { + securityHeaderType := tsc_SHT_NoSecurityProtection, + protocolDiscriminator := tsc_PD_EMM, + messageType := tsc_MT_ServiceReject, + emmCause := cs_EMM_Cause_v(p_CauseValue), + t3442 := p_T3442, + t3346 := p_T3346 /* cl. 9.9.3.16A O TLV 3 IEI=0x5F @sic R5s120178 Baseline Moving sic@ */ + } + }; + + template (present) NAS_UL_Message_Type cr_EXT_SERVICE_REQUEST_MO(NAS_KsiValue p_KsiValue, + EPS_M_Tmsi p_MTmsi) := + /* @status APPROVED (LTE, LTE_IRAT) */ + cr_EXT_SERVICE_REQUEST_Common(p_KsiValue, tsc_EST_CsFallback_MO, p_MTmsi); + + template (present) NAS_UL_Message_Type cr_508_EXT_SERVICE_REQUEST(NAS_KsiValue p_KsiValue, + EPS_M_Tmsi p_MTmsi) := + /* @status APPROVED (LTE, LTE_IRAT) */ + cr_EXT_SERVICE_REQUEST_Common (p_KsiValue, + tsc_EST_CsFallback_MT, + p_MTmsi, + cr_CSFBResponse('001'B)); + + template (present) NAS_UL_Message_Type cr_EXT_SERVICE_REQUEST_Common(NAS_KsiValue p_KsiValue, + EPS_ServiceTypeValue p_ServiceType, + EPS_M_Tmsi p_MTmsi, + template CSFBResponse p_CSFBResponse := omit, // @sic R5-106574 sic@ + template DeviceProperties p_DeviceProperties := cr_DeviceProperties ('D'H) ifpresent) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + eXT_SERVICE_REQUEST := { + securityHeaderType := tsc_SHT_NoSecurityProtection, + protocolDiscriminator := tsc_PD_EMM, + messageType := tsc_MT_ExtServiceRequest, + nasKeySetId := cr_NAS_KeySetIdentifier(p_KsiValue, + tsc_NasKsi_NativeSecurityContext), + serviceType := { omit, p_ServiceType }, + mTMSI := cr_MobileIdTMSI_lv(p_MTmsi), + csfbResponse := p_CSFBResponse, + epsBearerContextStatus := cr_EPS_BearerContextStatus_Any ifpresent, //@sic R5s110176 Baseline Moving sic@ + deviceProperties := p_DeviceProperties /* cl. 9.9.2.0A O TV 1 IEI=0xD- @sic R5s120178 Baseline Moving sic@*/ + } + }; + + template (value) NAS_DL_Message_Type cs_TAU_Accept_Common(NAS_AttDetValue_Type p_UpdateValue, + template (omit) MobileIdentity p_Guti, + template (omit) TrackingAreaIdList p_TaiList, + template (omit) EPS_BearerContextStatus p_EPSCtxtStatus, // @sic R5s100608 sic@ + template (omit) LocAreaId p_LAI, + template (omit) MobileIdentity p_MS_Id, + template (omit) AdditionalUpdateResult p_AdditionalUpdateResult, + template (omit) EMM_Cause p_EmmCause := omit, + template (omit) GPRS_Timer p_T3402 := omit, + template (omit) PLMN_List p_EPLMNlist := omit, + template (omit) EPS_NetworkFeatureSupport p_NwkFeatSup := cs_EPS_NwkFtSup_IMSVoice, + template (omit) GPRS_Timer p_T3412 := cs_GprsTimer_tv('5A'O, tsc_GprsTimerUnit_deact, '00000'B), + template (omit) EmergNumList p_EmgNumList := omit, // @sic R5s120178 Baseline Moving sic@ + template (omit) GPRS_Timer3 p_T3412Extd := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5s110168 ch 2.2 additional MCC160 comments sic@ */ + tRACKING_AREA_UPDATE_ACCEPT := { + securityHeaderType := tsc_SHT_NoSecurityProtection, + protocolDiscriminator := tsc_PD_EMM, + messageType := tsc_MT_TauAccept, + spareHalfOctet := tsc_SpareHalfOctet, + epsUpdateResult := cs_EPS_UpdateResult(p_UpdateValue), + t3412 := p_T3412, // @sic R5-101147 sic@ @sic R5-115720 sic@ + guti := p_Guti, + taiList := p_TaiList, + epsBearerContextStatus := p_EPSCtxtStatus, + lai := p_LAI, + msIdentity := p_MS_Id, + emmCause := p_EmmCause, + t3402 := p_T3402, + t3423 := omit, + equivalentPlmns := p_EPLMNlist, + asmeNasKeySetId := omit, + emergencyNumberList := p_EmgNumList, + epsNetworkFeatureSupport := p_NwkFeatSup, // @sic R5-110771 sic@ + addUpdateResult := p_AdditionalUpdateResult, // @sic R5-103681 sic@ + t3412ExtdValue := p_T3412Extd /* cl. 9.9.3.16B O TLV 3 IEI=0x5E @sic R5s120178 Baseline Moving sic@*/ + } + }; + + template (value) NAS_DL_Message_Type cs_508_TAU_Accept(NAS_AttDetValue_Type p_UpdateValue, + template (omit) MobileIdentity p_Guti, + template (omit) TrackingAreaIdList p_TaiList, + template (omit) EPS_BearerContextStatus p_EPSCtxtStatus, // @sic R5s100608 sic@ + template (omit) LocAreaId p_LAI, + template (omit) MobileIdentity p_MS_Id, + template (omit) AdditionalUpdateResult p_AdditionalUpdateResult) := + /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + /* @sic R5s100707 additional MCC160 comments sic@ */ + cs_TAU_Accept_Common(p_UpdateValue, + p_Guti, + p_TaiList, + p_EPSCtxtStatus, + p_LAI, + p_MS_Id, + p_AdditionalUpdateResult); + + template (value) NAS_DL_Message_Type cs_TAU_Accept_EPLMN(NAS_AttDetValue_Type p_UpdateValue, + template (value) MobileIdentity p_Guti, + template (omit) TrackingAreaIdList p_TaiList, + template (omit) EPS_BearerContextStatus p_EPSCtxtStatus, // @sic R5s100755 sic@ + template (omit) LocAreaId p_LAI, + template (omit) MobileIdentity p_MS_Id, + template (omit) AdditionalUpdateResult p_AdditionalUpdateResult, + template (omit) PLMN_List p_EPLMNlist) := + /* default TAU accept message with Equivalent PLMN list assignment */ + /* @status APPROVED (LTE) */ + /* @sic R5s100707 additional MCC160 comments sic@ */ + cs_TAU_Accept_Common(p_UpdateValue, + p_Guti, + p_TaiList, + p_EPSCtxtStatus, + p_LAI, + p_MS_Id, + p_AdditionalUpdateResult, + -, + -, + p_EPLMNlist); + + template (value) NAS_DL_Message_Type cs_TAU_Accept_EMM_Cause(NAS_AttDetValue_Type p_UpdateValue, + template (omit) MobileIdentity p_Guti, //@sic R5s110143 value changed to omit sic@ + template (omit) TrackingAreaIdList p_TaiList, + template (omit) EPS_BearerContextStatus p_EPSCtxtStatus, + template (omit) LocAreaId p_LAI, + template (omit) MobileIdentity p_MS_Id, + template (omit) AdditionalUpdateResult p_AdditionalUpdateResult, + template (omit) EMM_Cause p_EmmCause, + template (omit) GPRS_Timer p_T3402 := omit) := + /* @status APPROVED (LTE, LTE_IRAT) */ + /* @sic R5s100707 additional MCC160 comments sic@ */ + /* @sic R5s110168 ch 2.2 additional MCC160 comments sic@ */ + cs_TAU_Accept_Common(p_UpdateValue, + p_Guti, + p_TaiList, + p_EPSCtxtStatus, + p_LAI, + p_MS_Id, + p_AdditionalUpdateResult, + p_EmmCause, + p_T3402); + + template (value) NAS_DL_Message_Type cs_TAU_Accept_T3412Extd(NAS_AttDetValue_Type p_UpdateValue, + template (omit) MobileIdentity p_Guti, + template (omit) TrackingAreaIdList p_TaiList, + template (omit) EPS_BearerContextStatus p_EPSCtxtStatus, + template (omit) LocAreaId p_LAI, + template (omit) MobileIdentity p_MS_Id, + template (omit) AdditionalUpdateResult p_AdditionalUpdateResult, + template (value) GPRS_Timer p_T3412, + template (omit) GPRS_Timer3 p_T3412Extd) := + /* @status APPROVED (LTE_A) */ + cs_TAU_Accept_Common(p_UpdateValue, p_Guti, p_TaiList, p_EPSCtxtStatus, p_LAI, p_MS_Id, p_AdditionalUpdateResult, -, -, -, -, p_T3412, -, p_T3412Extd); + + template (present) NAS_UL_Message_Type cr_508_TAU_Complete := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + tRACKING_AREA_UPDATE_COMPLETE := { + securityHeaderType := tsc_SHT_NoSecurityProtection, + protocolDiscriminator := tsc_PD_EMM, + messageType := tsc_MT_TauComplete + } + }; + + template (present) NAS_UL_Message_Type cr_508_TAU_Request(template (present) EPS_UpdateTypeValue p_EpsUpdate_TypeValue, + NAS_KsiValue p_KsiValue, + template DRXparameter p_DRXparameter, // @sic R5s120210 sic@ + template AdditionalUpdateType p_AdditionalUpdateType) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + tRACKING_AREA_UPDATE_REQUEST := { + securityHeaderType := tsc_SHT_NoSecurityProtection, + protocolDiscriminator := tsc_PD_EMM, + messageType := tsc_MT_TauRequest, + asmeNasKeySetId := cr_NAS_KeySetIdentifier (p_KsiValue, tsc_NasKsi_NativeSecurityContext), + epsUpdateType := cr_EPS_UpdateType(tsc_EpsUpdate_NotActive, p_EpsUpdate_TypeValue), + oldGuti := cr_MobileIdAny(omit), + nonCurrentNativeNasKeySetId := omit, /* @sic R5s100135 sic@ */ + gprsCipheringKeySeqNum := cr_CiphKeySeqNum('8'H, ?) ifpresent, /* @sic R5s100135, R5-135073 sic@ */ + oldPtmsiSignature := omit, + additionalGuti := omit, + nonce := omit, + ueNetworkCapability := cr_UENetworkCap_Any ('58'O) ifpresent, + lastVisitedRegisteredTai := cr_TAI_Any ifpresent, + drxParameter := p_DRXparameter, // @sic R5s100660, R5s120210 sic@ + ueRadioCapNeeded := cr_UeRadioCap ifpresent, // @sic R5-112120 sic@ + epsBearerContextStatus := cr_508_EPS_BearerContextStatusTAUReq(('000'B, '001'B)) ifpresent, + msNetworkCapability := cr_MS_NetworkCap_Any ifpresent, + oldLai := cr_LAI_Any ifpresent, + tmsiStatus := cr_TMSI_Status ifpresent, + msClassmark2 := cr_MS_Clsmk2_Any_tlv ifpresent, // @sic R5s100662 sic@ + msClassmark3 := cr_MSCLSMK3_Any ifpresent, + supportedCodecList := cr_CodecListAny ifpresent, + addUpdateType := p_AdditionalUpdateType, /* @sic R5-103681 sic@ */ + voiceDomainPref := cr_VoiceDomainPref_Any ifpresent, /* @sic R5s110176 Baseline Moving sic@ */ + oldGUTI_Type := cr_GUTI_Type_Any ifpresent, /* cl. 9.9.3.45 O TV 1 IEI=0xE- @sic R5s120178 Baseline Moving sic@*/ + deviceProperties := cr_DeviceProperties('D'H) ifpresent, /* cl. 9.9.2.0A O TV 1 IEI=0xD- @sic R5s120178 Baseline Moving sic@*/ + msNetworkFeatureSupport := cr_MS_NetworkFeatureSupport('C'H) ifpresent, /* cl. 9.9.2.0A O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/ + tmsiBasedNRIContainer := cr_NwkResourceIdAny ifpresent // @sic R5s130195 Baseline Moving sic@ + } + }; + + template (present) NAS_UL_Message_Type cr_TAU_RequestIdleMobilityDiffRAT (template (present) EPS_UpdateTypeValue p_EpsUpdate_TypeValue, + template (present) NAS_KsiValue p_KsiValue, + template (present) EPS_BearerContextStatus p_EPS_BearerContextStatus, + template AdditionalUpdateType p_AdditionalUpdateType, + template (present) B1_Type p_SecurityContextTSC := tsc_NasKsi_MappedSecurityContext, + template CiphKeySeqNum p_CiphKeySeqNum := cr_CiphKeySeqNum('8'H, ?) ifpresent ) := /* @sic R5-110746, R5-135073 sic@ */ + { /* @status APPROVED (LTE_IRAT) */ + tRACKING_AREA_UPDATE_REQUEST := { + securityHeaderType := tsc_SHT_NoSecurityProtection, + protocolDiscriminator := tsc_PD_EMM, + messageType := tsc_MT_TauRequest, + asmeNasKeySetId := cr_NAS_KeySetIdentifier (p_KsiValue, p_SecurityContextTSC), + epsUpdateType := cr_EPS_UpdateType(?, p_EpsUpdate_TypeValue), // @sic R5-110746 sic@ + oldGuti := cr_MobileIdAny(omit), + nonCurrentNativeNasKeySetId := omit, /* @sic R5s100135 sic@ */ + gprsCipheringKeySeqNum := p_CiphKeySeqNum, // @sic R5-135073 sic@ + oldPtmsiSignature := cr_PTMSI_SignatureAny ifpresent, + additionalGuti := cr_MobileIdAny ('50'O) ifpresent, + nonce := cr_NonceUE_Any, //This IE is included if the UE performs an A/Gb mode or Iu mode to S1 mode inter-system change in idle mode. + ueNetworkCapability := cr_UENetworkCap_Any ('58'O) ifpresent, + lastVisitedRegisteredTai := cr_TAI_Any ifpresent, + drxParameter := cr_DRXparameter_Any ('5C'O) ifpresent, // @sic R5s100660 sic@ + ueRadioCapNeeded := cr_UeRadioCap ifpresent, // @sic R5-110746 sic@ + epsBearerContextStatus := p_EPS_BearerContextStatus ifpresent, // @sic R5-110746 sic@ + msNetworkCapability := cr_MS_NetworkCap_Any ifpresent, + oldLai := cr_LAI_Any ifpresent, + tmsiStatus := cr_TMSI_Status ifpresent, + msClassmark2 := cr_MS_Clsmk2_Any_tlv ifpresent, // @sic R5s100662 sic@ + msClassmark3 := cr_MSCLSMK3_Any ifpresent, + supportedCodecList := cr_CodecListAny ifpresent, + addUpdateType := p_AdditionalUpdateType, /* @sic R5-103681 sic@ */ + voiceDomainPref := cr_VoiceDomainPref_Any ifpresent, /* @sic R5s110176 Baseline Moving sic@ */ + oldGUTI_Type := cr_GUTI_Type_Any ifpresent, /* cl. 9.9.3.45 O TV 1 IEI=0xE- @sic R5s120178 Baseline Moving sic@*/ + deviceProperties := cr_DeviceProperties('D'H) ifpresent, /* cl. 9.9.2.0A O TV 1 IEI=0xD- @sic R5s120178 Baseline Moving sic@*/ + msNetworkFeatureSupport := cr_MS_NetworkFeatureSupport('C'H) ifpresent, /* cl. 9.9.2.0A O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/ + tmsiBasedNRIContainer := cr_NwkResourceIdAny ifpresent // @sic R5s130195 Baseline Moving sic@ + } + }; + + template (present) NAS_UL_Message_Type cdr_TAU_Request_OldGuti_MSNetworkFeatureSupport(template (present) EPS_UpdateTypeValue p_EpsUpdate_TypeValue, + NAS_KsiValue p_KsiValue, + template DRXparameter p_DRXparameter, // @sic R5s120210 sic@ + template AdditionalUpdateType p_AdditionalUpdateType, + template (present) MobileIdentity p_OldGuti, + template (present) TrackingAreaId p_LastTai, + template MS_NetworkFeatureSupport p_MS_NetworkFeatureSupport) + modifies cr_508_TAU_Request := + { /* @status APPROVED (LTE_A) */ + tRACKING_AREA_UPDATE_REQUEST := { + oldGuti := p_OldGuti, + lastVisitedRegisteredTai := p_LastTai, + msNetworkFeatureSupport := p_MS_NetworkFeatureSupport + } + }; + + template (value) NAS_DL_Message_Type cs_508_TRACKING_AREA_UPDATE_REJECT(B8_Type p_EmmCause, + template (omit) GPRS_Timer2 p_T3346 := omit) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + tRACKING_AREA_UPDATE_REJECT := { + securityHeaderType := tsc_SHT_NoSecurityProtection, + protocolDiscriminator := tsc_PD_EMM, + messageType := tsc_MT_TauReject, + emmCause := cs_EMM_Cause_v(p_EmmCause), + t3346 := p_T3346 // @sic R5s120178 Baseline Moving sic@ + } + }; + + template (present) Nonce cr_NonceUE_Any := + { /* 24.301 cl. 9.9.3.25 */ + /* @status APPROVED (LTE_IRAT) */ + iei := '55'O , /* present in case of TV; omit in case of V */ + nonceValue := ? + }; + + template (present) UERadioCapInfoUpdateNeeded cr_UeRadioCap := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + iei := 'A'H, + spare := '000'B, + urcUpdate := '1'B + }; + + //---------------------------------------------------------------------------- + + template (present) NAS_UL_Message_Type cr_PDN_CONNECTIVITY_REQUEST_Common(EPS_BearerIdentity p_BearerId := '0'H, + template (present) ProcedureTransactionIdentifier p_TI := ?, + template (present) PdnTypeValue p_PDNTypeValue, + template (present) B3_Type p_RequestTypeValue, + template ESM_InfoTransferFlag p_Flag := omit, + template AccessPointName p_APN := omit, + template ProtocolConfigOptions p_PCO := cr_ProtocolConfigOptionsAny ifpresent, + template DeviceProperties p_DeviceProperties := cr_DeviceProperties ('C'H) ifpresent) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + pDN_CONNECTIVITY_REQUEST := { + epsBearerId := p_BearerId, + protocolDiscriminator := tsc_PD_ESM, + procedureTransactionIdentifier := p_TI, + messageType := tsc_MT_PdnConnectivityRequest, + pdnType := cr_PDN_Type(p_PDNTypeValue), + requestType := cr_EPS_PdnRequestType(p_RequestTypeValue), // TP: initial attach + esmInfoTransferFlag := p_Flag, + accessPointName := p_APN, + protocolConfigurationOptions := p_PCO, + deviceProperties := p_DeviceProperties // @sic R5s120178 Baseline Moving sic@ + } + }; + + template (present) NAS_UL_Message_Type cr_PDNConnReqEmergency(template (present) PdnTypeValue p_TypeValue) := + /* @status APPROVED (LTE) */ + cr_PDN_CONNECTIVITY_REQUEST_Common('0'H, ?, p_TypeValue, '100'B, omit); + + + template (present) NAS_UL_Message_Type cr_508_PDN_CONNECTIVITY_REQUEST(template (present) B3_Type p_RequestTypeValue, + template (present) PdnTypeValue p_PDNTypeValue) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + cr_PDN_CONNECTIVITY_REQUEST_Common ('0'H, + ?, + p_PDNTypeValue, + p_RequestTypeValue, + cr_ESMInfoTransferFlag_Any ifpresent); + + template (value) NAS_DL_Message_Type cs_508_ActivateDefEpsBearerContextRequest(EPS_BearerIdentity p_EpsBearerId, + template (value) ProcedureTransactionIdentifier p_ProcTi, + template (value) AccessPointName p_APN, + template (omit) PDN_Address p_Address, + template (omit) ESM_Cause p_Cause := omit, + template (omit) ProtocolConfigOptions p_PCO, + template (omit) BEARER_CONTEXT_TYPE p_BearerContextNumber := omit) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5-144797: parameter p_BearerContextNumber, new function fl_508_ActivateDefEpsBearerContextRequest sic@ */ + cs_508_ActivateDefEpsBearerContextRequestAll(p_EpsBearerId, + p_ProcTi, + f_Get_508_EPSQoS(p_BearerContextNumber), // @sic R5-115537 sic@ + p_APN, + p_Address, + f_Get_508_EPSBearerTI(p_EpsBearerId), // @sic R5-113662, R5s110593 sic@ + f_Get_508_NegotiatedQualityOfService(DEF_1), // @sic R5-1100746 sic@ + f_Get_508_NegotiatedLLCSAPI(DEF_1), // @sic R5-1100746 sic@ + f_Get_508_RadioPriority(DEF_1), // @sic R5-1100746 sic@ + f_Get_508_PFI(), // // @sic R5-115618 sic@ + omit, + p_Cause, // @sic R5-104703 sic@ + p_PCO); + + template (value) NAS_DL_Message_Type cs_508_ActivateDefEpsBearerContextRequestAll(EPS_BearerIdentity p_EpsBearerId, + template (value) ProcedureTransactionIdentifier p_ProcTi, + template (value) EPS_QualityOfService p_EPS_Qos, + template (value) AccessPointName p_APN, + template (omit) PDN_Address p_Address, + template (omit) TransactionIdentifier p_TI, + template (omit) QualityOfService p_NegQos, + template (omit) LLC_SAPI p_LlcSapi, + template (omit) RadioPriority p_RadioPriority, + template (omit) PacketFlowIdentifier p_PFI, + template (omit) APN_AMBR p_ApnAggMaxBitRate, + template (omit) ESM_Cause p_Cause, + template (omit) ProtocolConfigOptions p_PCO) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + aCTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REQUEST := { + epsBearerId := p_EpsBearerId, + protocolDiscriminator := tsc_PD_ESM, + procedureTransactionIdentifier := p_ProcTi, + messageType := tsc_MT_ActivateDefaultEpsBearerContextRequest, + epsQos := p_EPS_Qos, + accessPointName := p_APN, + pdnAdress := p_Address, + transactionIdentifier := p_TI, + negotiatedQos := p_NegQos, + negotiatedLlcSapi := p_LlcSapi, + radioPriority := p_RadioPriority, + packetFlowIdentifier := p_PFI, + apnAggMaxBitRate := p_ApnAggMaxBitRate, + esmCause := p_Cause, + protocolConfigurationOptions := p_PCO, + connectivityType := omit // @sic R5s120178 Baseline Moving sic@ + } + }; + + template (present) NAS_UL_Message_Type cr_ActivateDefEpsBearerContextAccept_Common(EPS_BearerIdentity p_EpsBearerId, + template (value) ProcedureTransactionIdentifier p_ProcTi) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + aCTIVATE_DEFAULT_EPS_BEARER_CONTEXT_ACCEPT := { + epsBearerId := p_EpsBearerId, + protocolDiscriminator := tsc_PD_ESM, + procedureTransactionIdentifier := p_ProcTi, + messageType := tsc_MT_ActivateDefaultEpsBearerContextAccept, + protocolConfigurationOptions := cr_ProtocolConfigOptionsAny ifpresent + } + }; + + template (present) NAS_UL_Message_Type cr_508_ActivateDefEpsBearerContextAccept(EPS_BearerIdentity p_EpsBearerId) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + cr_ActivateDefEpsBearerContextAccept_Common (p_EpsBearerId, + '00'O); // No procedure TI assigned + + template (value) NAS_DL_Message_Type cs_508_ActDedicatedEPSBearerCxtReq (EPS_BearerIdentity p_Id, + template (value) ProcedureTransactionIdentifier p_ProcTi, // octet + template (value) LinkedEpsBearerIdentity p_LinkedId, // 1/2 octet + template (value) EPS_QualityOfService p_QoS, + template (value) TrafficFlowTemplate p_Tft) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) @sic R5-096464 sic@ */ + cs_508_ActDedicatedEPSBearerCxtReqAll (p_Id, + p_ProcTi, // octet + p_LinkedId, // 1/2 octet + p_QoS, + p_Tft, + f_Get_508_EPSBearerTI (p_Id), // @sic R5-113662 sic@ + omit, /* cl. 9.9.4.12 O TLV 14-18 IEI=0x30 */ + omit, /* cl. 9.9.4.7 O TV 2 IEI=0x32 */ + omit, /* cl. 9.9.4.13 O TV 1 IEI=0x8- */ + f_Get_508_PFI(), // // @sic R5-115618 sic@ + omit); + + template (value) NAS_DL_Message_Type cs_508_ActDedicatedEPSBearerCxtReq_SRVCC(EPS_BearerIdentity p_Id, + template (value) ProcedureTransactionIdentifier p_ProcTi, // octet + template (value) LinkedEpsBearerIdentity p_LinkedId, // 1/2 octet + template (value) EPS_QualityOfService p_QoS, + template (value) TrafficFlowTemplate p_Tft, + BEARER_CONTEXT_TYPE p_BearerContextNumber := DEF_1) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + /* @sic R5s140161 sic@ */ + cs_508_ActDedicatedEPSBearerCxtReqAll(p_Id, + p_ProcTi, // octet + p_LinkedId, // 1/2 octet + p_QoS, + p_Tft, + f_Get_508_EPSBearerTI (p_Id), // @sic R5-113662 sic@ + f_Get_508_NegotiatedQualityOfService(p_BearerContextNumber), /* cl. 9.9.4.12 O TLV 14-18 IEI=0x30 */ + f_Get_508_NegotiatedLLCSAPI (DEF_1), /* cl. 9.9.4.7 O TV 2 IEI=0x32 */ + f_Get_508_RadioPriority (DEF_1), /* cl. 9.9.4.13 O TV 1 IEI=0x8- */ + f_Get_508_PFI(), // @sic R5-115618 sic@ + omit); + + template (value) NAS_DL_Message_Type cs_ActDedEPSBearerCxtReq_QoS (EPS_BearerIdentity p_EpsBearerId, + template (value) EPS_QualityOfService p_QoS, + template (value) TrafficFlowTemplate p_Tft) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) @sic R5-096464 sic@ */ + cs_508_ActDedicatedEPSBearerCxtReq(p_EpsBearerId, + '00'O, + cs_LinkedId(hex2bit(tsc_EpsDefaultBearerId)), // Default Bearer Id as used in Idleupdated + p_QoS, + p_Tft); + + + template (value) NAS_DL_Message_Type cs_508_ActDedicatedEPSBearerCxtReqAll (EPS_BearerIdentity p_Id, + template (value) ProcedureTransactionIdentifier p_ProcTi, // octet + template (value) LinkedEpsBearerIdentity p_LinkedId, // 1/2 octet + template (value) EPS_QualityOfService p_QoS, + template (value) TrafficFlowTemplate p_Tft, + template (omit) TransactionIdentifier p_TI, + template (omit) QualityOfService p_NegQos, /* cl. 9.9.4.12 O TLV 14-18 IEI=0x30 */ + template (omit) LLC_SAPI p_LlcSapi, /* cl. 9.9.4.7 O TV 2 IEI=0x32 */ + template (omit) RadioPriority p_RadioPriority, /* cl. 9.9.4.13 O TV 1 IEI=0x8- */ + template (omit) PacketFlowIdentifier p_PFI, + template (omit) ProtocolConfigOptions p_PCO) := + { /* This version should be used when specifying UTRAN/GERAN parameters too */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + aCTIVATE_DEDICATED_EPS_BEARER_CONTEXT_REQUEST := { + epsBearerId := p_Id, + protocolDiscriminator := tsc_PD_ESM, + procedureTransactionIdentifier := p_ProcTi, + messageType := tsc_MT_ActivateDedicatedEpsBearerContextRequest, + spareHalfOctet := tsc_SpareHalfOctet, + linkedEpsBearerId := p_LinkedId, + epsQos := p_QoS, + tft := p_Tft, + transactionIdentifier := p_TI, + negotiatedQos := p_NegQos, + negotiatedLlcSapi := p_LlcSapi, + radioPriority := p_RadioPriority, + packetFlowIdentifier := p_PFI, + protocolConfigurationOptions := p_PCO + } + }; + + template (present) NAS_UL_Message_Type cr_ActDedicatedEPSBearerCxtAccept_Common(template (present) EPS_BearerIdentity p_Id, + template (present) ProcedureTransactionIdentifier p_ProcTi) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + aCTIVATE_DEDICATED_EPS_BEARER_CONTEXT_ACCEPT := { + epsBearerId := p_Id, + protocolDiscriminator := tsc_PD_ESM, + procedureTransactionIdentifier := p_ProcTi, + messageType := tsc_MT_ActivateDedicatedEpsBearerContextAccept, + protocolConfigurationOptions := cr_ProtocolConfigOptionsAny ifpresent + } + }; + + template (present) NAS_UL_Message_Type cr_508_ActDedicatedEPSBearerCxtAccept(template (present) EPS_BearerIdentity p_Id) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + cr_ActDedicatedEPSBearerCxtAccept_Common (p_Id, '00'O); // No procedure TI assigned + + template (present) NAS_UL_Message_Type cr_508_BearerResourceModReq(template (present) ProcedureTransactionIdentifier p_ProcTi, + EPS_BearerIdentity p_LinkedEpsBearerId, + template ESM_Cause p_Cause) := + { /* @status APPROVED (LTE) */ + bEARER_RESOURCE_MODIFICATION_REQUEST := { + epsBearerId := '0'H, + protocolDiscriminator := tsc_PD_ESM, + procedureTransactionIdentifier := p_ProcTi, + messageType := tsc_MT_BearerResourceModificationRequest, + spareHalfOctet := tsc_SpareHalfOctet, + epsBearerIdentityforPacketFilter := cr_LinkedId(hex2bit(p_LinkedEpsBearerId)), // of the associated dedicated bearer + trafficFlowAgg := cr_Tft(-, '100'B), // Replace packet filters from existing TFT + requiredTrafficFlowQoS := cdr_EPS_QoS_Any_tlv ifpresent, // @sic R5s100692 sic@ @sic R5s110682 sic@ + esmCause := p_Cause, + protocolConfigurationOptions := cr_ProtocolConfigOptionsAny ifpresent, + deviceProperties := cr_DeviceProperties('C'H) ifpresent /* cl. 9.9.2.0A O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/ + } + }; + + template (present) NAS_UL_Message_Type cdr_BearerResourceModReq(template (present) ProcedureTransactionIdentifier p_ProcTi, + EPS_BearerIdentity p_LinkedEpsBearerId, + template ESM_Cause p_Cause, + template TrafficFlowTemplate p_Tft) + modifies cr_508_BearerResourceModReq := + { /* @status APPROVED (LTE) */ + bEARER_RESOURCE_MODIFICATION_REQUEST := { + trafficFlowAgg := p_Tft + } + }; + + template (value) NAS_DL_Message_Type cs_508_DeactivateEPSBearerCxtReq (EPS_BearerIdentity p_Id, + ProcedureTransactionIdentifier p_ProcTi, + template (value) ESM_Cause p_EsmCause, + template (omit) GPRS_Timer3 p_T3396 := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5-144797: new parameter p_T3396 sic@ */ + dEACTIVATE_EPS_BEARER_CONTEXT_REQUEST := { + epsBearerId := p_Id, + protocolDiscriminator := tsc_PD_ESM, + procedureTransactionIdentifier := p_ProcTi, + messageType := tsc_MT_DeactivateEpsBearerContextRequest, + esmCause := p_EsmCause, + protocolConfigurationOptions := omit, + t3396Value := p_T3396 // @sic R5s130195 Baseline Moving sic@ + } + }; + + template (present) NAS_UL_Message_Type cr_508_DeactivateEPSBearerCxtAccept (EPS_BearerIdentity p_Id) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + dEACTIVATE_EPS_BEARER_CONTEXT_ACCEPT := { + epsBearerId := p_Id, + protocolDiscriminator := tsc_PD_ESM, + procedureTransactionIdentifier := '00'O, + messageType := tsc_MT_DeactivateEpsBearerContextAccept, + protocolConfigurationOptions := cr_ProtocolConfigOptionsAny ifpresent /* @sic R5-120572 sic@ */ + } + }; + + template (value) NAS_DL_Message_Type cs_508_Esm_Information_Request(template (value) ProcedureTransactionIdentifier p_ProcTi) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + eSM_INFORMATION_REQUEST := { + epsBearerId := bit2hex('0000'B), + protocolDiscriminator := tsc_PD_ESM, + procedureTransactionIdentifier := p_ProcTi,//The value indicated in PDN CONNECTIVITY REQUEST message. + messageType := tsc_MT_EsmInformationRequest + } + }; + + template (present) NAS_UL_Message_Type cr_508_Esm_Information_Response(template (present) ProcedureTransactionIdentifier p_ProcTi) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + eSM_INFORMATION_RESPONSE := { + epsBearerId := bit2hex('0000'B), + protocolDiscriminator := tsc_PD_ESM, + procedureTransactionIdentifier := p_ProcTi, + messageType := tsc_MT_EsmInformationResponse, + accessPointName := cr_AccessPointName_Any ifpresent, + protocolConfigurationOptions := cr_ProtocolConfigOptionsAny ifpresent + } + }; + + template (present) NAS_UL_Message_Type cr_508_ModifyEPSBearerCxtAccept(EPS_BearerIdentity p_EpsBearerId) := + { /* @status APPROVED (LTE, LTE_IRAT) */ + mODIFY_EPS_BEARER_CONTEXT_ACCEPT := { + epsBearerId := p_EpsBearerId, + protocolDiscriminator := tsc_PD_ESM, + procedureTransactionIdentifier := '00'O, + messageType := tsc_MT_ModifyEpsBearerContextAccept, + protocolConfigurationOptions := cr_ProtocolConfigOptionsAny ifpresent /* @sic R5-120572 sic@ */ + } + }; + + template (present) NAS_UL_Message_Type cr_508_ModifyEPSBearerCxtReject(EPS_BearerIdentity p_Id, + template ESM_Cause p_EsmCause, + ProcedureTransactionIdentifier p_ProcTi := '00'O) := + { /* @status APPROVED (LTE) */ + // @sic R5s100464 sic@ + mODIFY_EPS_BEARER_CONTEXT_REJECT := { + epsBearerId := p_Id, + protocolDiscriminator := tsc_PD_ESM, + procedureTransactionIdentifier := p_ProcTi, + messageType := tsc_MT_ModifyEpsBearerContextReject, + esmCause := p_EsmCause, + protocolConfigurationOptions := cr_ProtocolConfigOptionsAny ifpresent + } + }; + + template (value) NAS_DL_Message_Type cs_508_ModifyEPSBearerCxtReq(EPS_BearerIdentity p_EpsBearerId, + ProcedureTransactionIdentifier p_ProcTi, + template (omit) EPS_QualityOfService p_NewEPSQos, + template (omit) TrafficFlowTemplate p_Tft) := + /* @sic R5-103625 sic@ */ + /* @status APPROVED (LTE, LTE_IRAT) */ + cs_ModifyEPSBearerCxtReq_AllParams (p_EpsBearerId, + p_ProcTi, + p_NewEPSQos, + p_Tft, + omit, + omit, + omit, + f_Get_508_PFI(), // // @sic R5-115618 sic@ + omit, + omit); + + template (value) NAS_DL_Message_Type cs_ModifyEPSBearerCxtReq_AllParams(EPS_BearerIdentity p_EpsBearerId, + ProcedureTransactionIdentifier p_ProcTi, + template (omit) EPS_QualityOfService p_NewEPSQos, + template (omit) TrafficFlowTemplate p_Tft, + template (omit) QualityOfService p_NewQos, + template (omit) LLC_SAPI p_LlcSapi, + template (omit) RadioPriority p_RadioPriority, + template (omit) PacketFlowIdentifier p_PFI, + template (omit) APN_AMBR p_APN_AMBR, + template (omit) ProtocolConfigOptions p_PCO) := + { /* @sic R5-103625 sic@ */ + /* @status APPROVED (LTE, LTE_IRAT) */ + mODIFY_EPS_BEARER_CONTEXT_REQUEST := { + epsBearerId := p_EpsBearerId, + protocolDiscriminator := tsc_PD_ESM, + procedureTransactionIdentifier := p_ProcTi, + messageType := tsc_MT_ModifyEpsBearerContextRequest, + newEPSQos := p_NewEPSQos, + tft := p_Tft, + newQos := p_NewQos, + negotiatedLlcSapi:= p_LlcSapi, + radioPriority := p_RadioPriority, + packetFlowIdentifier := p_PFI, + apnAggMaxBitRate := p_APN_AMBR, + protocolConfigurationOptions := p_PCO + } + }; + + template (present) NAS_UL_Message_Type cr_508_BearerResourceAllocReq(template (present) ProcedureTransactionIdentifier p_ProcTi, + EPS_BearerIdentity p_LinkedEpsBearerId) := + { /* @status APPROVED (LTE) */ + bEARER_RESOURCE_ALLOCATION_REQUEST := { + epsBearerId := '0'H, + protocolDiscriminator := tsc_PD_ESM, + procedureTransactionIdentifier := p_ProcTi, + messageType := tsc_MT_BearerResourceAllocationRequest, + spareHalfOctet := tsc_SpareHalfOctet, + linkedEpsBearerId := cr_LinkedId(hex2bit(p_LinkedEpsBearerId)), // of the associated dedicated bearer + trafficFlowAgg := cr_Tft(-, '001'B), // Create new TFT + requiredTrafficFlowQoS := cr_EPS_QoS_Any_lv, + protocolConfigurationOptions := cr_ProtocolConfigOptionsAny ifpresent, + deviceProperties := cr_DeviceProperties('C'H) ifpresent /* cl. 9.9.2.0A O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/ + } + }; + + template (present) NAS_UL_Message_Type cdr_TAU_Request_OldGuti(template (present) EPS_UpdateTypeValue p_EpsUpdate_TypeValue, + NAS_KsiValue p_KsiValue, + template DRXparameter p_DRXparameter, // @sic R5s120210 sic@ + template AdditionalUpdateType p_AdditionalUpdateType, + template (present) MobileIdentity p_OldGuti, + template (present) TrackingAreaId p_LastTai) + modifies cr_508_TAU_Request := + { /* @status APPROVED (LTE, LTE_IRAT) */ + tRACKING_AREA_UPDATE_REQUEST := { + oldGuti := p_OldGuti, + lastVisitedRegisteredTai := p_LastTai + } + }; + + template (present) NAS_UL_Message_Type cdr_TAU_Request_OldAddGutiTAI(template (present) EPS_UpdateTypeValue p_EpsUpdate_TypeValue, + NAS_KsiValue p_KsiValue, + template DRXparameter p_DRXparameter, // @sic R5s120210 sic@ + template AdditionalUpdateType p_AdditionalUpdateType, + template (present) MobileIdentity p_OldGuti, + template TrackingAreaId p_TAI, + template MobileIdentity p_AdditionalGuti, // @sic R5s120482 sic@ + template PTMSI_Signature p_Sig := omit, + template Nonce p_Nonce := omit, + template CiphKeySeqNum p_CiphKeySeqNum := cr_CiphKeySeqNum('8'H, ?) ifpresent ) // @sic R5-135024 sic@ + modifies cr_508_TAU_Request := + { /* @status APPROVED (LTE_IRAT) */ + tRACKING_AREA_UPDATE_REQUEST := { + asmeNasKeySetId := cr_NAS_KeySetIdentifier (p_KsiValue, tsc_NasKsi_NativeSecurityContext), + oldGuti := p_OldGuti, + gprsCipheringKeySeqNum := p_CiphKeySeqNum, // @sic R5-135024 sic@ + oldPtmsiSignature := p_Sig, + additionalGuti := p_AdditionalGuti, + nonce := p_Nonce, + lastVisitedRegisteredTai := p_TAI + } + }; + + template (value) NAS_DL_Message_Type cs_508_EMMInformation(template (omit) NetworkName p_FullName, + template (omit) NetworkName p_ShortName, + template (omit) TimeZone p_LocalTimeZone, + template (omit) TimeZoneAndTime p_LocalTimeZongAndTime, + template (omit) DaylightSavingTime p_DaylightSavingTime):= + { /* 24.301 cl. 8.2.13 */ + /* @status APPROVED (LTE) */ + eMM_INFORMATION := { + securityHeaderType := tsc_SHT_NoSecurityProtection, + protocolDiscriminator := tsc_PD_EMM, + messageType := tsc_MT_EmmInfo, + fullNetworkName := p_FullName, + shortNetworkName := p_ShortName, + localTimeZone := p_LocalTimeZone, + localTimeZoneAndTime := p_LocalTimeZongAndTime, + daylightSavingTime := p_DaylightSavingTime + } + }; + + template (present) NAS_UL_Message_Type cr_508_EMMStatus (template EMM_Cause p_EmmCause):= + { /* 24.301 cl. 8.2.14 */ + /* @status APPROVED (LTE) */ + eMM_STATUS := { + securityHeaderType := tsc_SHT_NoSecurityProtection, + protocolDiscriminator := tsc_PD_EMM, + messageType := tsc_MT_EmmStatus, + emmCause := p_EmmCause + } + }; + + template (value) NAS_DL_Message_Type cs_508_GUTI_REALLOCATION_COMMAND( template (value) MobileIdentity p_Guti, + template (omit) TrackingAreaIdList p_TaiList) := + { /* 24.301 cl. 8.2.16 */ + /* @status APPROVED (LTE) */ + gUTI_REALLOCATION_COMMAND := { + securityHeaderType := tsc_SHT_NoSecurityProtection, + protocolDiscriminator := tsc_PD_EMM, + messageType := tsc_MT_GutiReallocCommand, + guti := p_Guti, + taiList := p_TaiList + } + }; + + template (present) NAS_UL_Message_Type cr_508_GUTI_REALLOCATION_COMPLETE := + { /* 24.301 cl. 8.2.17 */ + /* @status APPROVED (LTE) */ + gUTI_REALLOCATION_COMPLETE := { + securityHeaderType := tsc_SHT_NoSecurityProtection, + protocolDiscriminator := tsc_PD_EMM, + messageType := tsc_MT_GutiReallocComplete + } + }; + + template (present) NAS_UL_Message_Type cr_PDNConnReqAdditionalPDN(template (present) PdnTypeValue p_PDNTypeValue, + template AccessPointName p_AccessPointName := cr_AccessPointName_Any, + B3_Type p_RequestType := '001'B, + template ESM_InfoTransferFlag p_EsmInfoTransferFlag := omit) := // 'initial request' 24.008 clause 10.5.6.17 + /* @desc PDN CONNECTIVITY REQUEST requesting an additional PDN (used e.g. in test 10.5.1) + @sic R5-115673 sic@ + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + cr_PDN_CONNECTIVITY_REQUEST_Common(-, -, p_PDNTypeValue, p_RequestType, p_EsmInfoTransferFlag, p_AccessPointName); + + template (value) NAS_DL_Message_Type cs_PdnConnectReject(EPS_BearerIdentity p_Id, + ProcedureTransactionIdentifier p_ProcTi, + template (value) ESM_Cause p_EsmCause, + template (omit) GPRS_Timer3 p_T3396 := omit) := + { /* @status APPROVED (LTE) */ + pDN_CONNECTIVITY_REJECT:= { + epsBearerId := p_Id, + protocolDiscriminator := tsc_PD_ESM, + procedureTransactionIdentifier := p_ProcTi, + messageType := tsc_MT_PdnConnectivityReject, + esmCause := p_EsmCause, + protocolConfigurationOptions := omit, + t3396 := p_T3396 /* cl. 9.9.3.16B O TLV 3 IEI=0x37 @sic R5s120178 Baseline Moving sic@*/ + } + }; + + template (value) NAS_DL_Message_Type cs_Notification (EPS_BearerIdentity p_Id, + template (value) ProcedureTransactionIdentifier p_ProcTi := '00'O) := // @sic R5s140020 sic@ + { /* This version should be used when specifying UTRAN/GERAN parameters too */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + nOTIFICATION := { + epsBearerId := p_Id, + protocolDiscriminator := tsc_PD_ESM, + procedureTransactionIdentifier := p_ProcTi, + messageType := tsc_MT_EsmNotification, + notificationIndicator := cs_NotInd_SRVCC_HO_Cancel + } + }; + + template (value) NotificationIndicator cs_NotInd_SRVCC_HO_Cancel := + { /* 24.301 cl. 9.9.4.7A @sic R5s110176 Baseline Moving sic@ */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + iei := omit, + iel := '01'O, + notificationInd := tsc_SRVCC_HO_Canceled + }; + + template (value) TransactionIdentifier cs_TransactionId (B3_Type p_TiValue) := + { /* 24.301 cl. 9.9.4.17 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + iei := '5D'O, + iel := '01'O, + tiFlag := '0'B, + tiValue := p_TiValue, + spare := '0000'B, + ext := omit, + tiValue_2 := omit + }; + + template (value) EPS_QualityOfService cs_508_EPS_QoS_Default_1 := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + iei := omit, + iel := '09'O, + qci := '00001001'B, + maxBitRateUl := '01000000'B, //64 kbps + maxBitRateDl := '01000000'B, //64 kbps + guaranteedBitRateUl := '01000000'B, //64 kbps + guaranteedBitRateDl := '01000000'B, //64 kbps + maxBitRateUlExt := '00000000'B, + maxBitRateDlExt := '00000000'B, + guaranteedBitRateUlExt := '00000000'B, + guaranteedBitRateDlExt := '00000000'B, + maxBitRateDL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + guaranteedBitRateDL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + maxBitRateUL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + guaranteedBitRateUL_Ext2 := omit // @sic R5s1300195 Baseline Moving sic@ + }; + + template (value) EPS_QualityOfService cds_508_EPS_QoS_Default_1_tlv + modifies cs_508_EPS_QoS_Default_1 := + { /* according to table 6.6.2.1 in 36.508, including iei */ + /* @status APPROVED (LTE) */ + iei := '5B'O + }; + + template (value) EPS_QualityOfService cds_EPS_QoS_Def_nonGBR_QCI + modifies cs_508_EPS_QoS_Default_1 := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + qci := '00000101'B // non-GBR QCI + }; + + template (value) EPS_QualityOfService cds_EPS_QoS_Def_nonGBR_QCI_tlv + modifies cs_508_EPS_QoS_Default_1 := + { /* 10.7.2 specifies According to reference default Bearer context#2 except for GCI + * TODO context#2 is still FFS in 36.508 6.6.1 v 8.4.0 using context#1 */ + iei := '5B'O, + qci := '00000101'B // non-GBR QCI + }; + + //---------------------------------------------------------------------------- + /* + * @desc Get the Default or Dedicated NegotiatedQoS according to 36.508 clause 6.6.1 and 2 + * @param p_BearerContextNumber + * @return template (omit) QualityOfService + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_Get_508_NegotiatedQualityOfService(BEARER_CONTEXT_TYPE p_BearerContextNumber) return template (omit) QualityOfService + { + var template (omit) QualityOfService v_QoS := omit; + + if (pc_UTRA){ // @sic R5-115585 sic@ + + select (p_BearerContextNumber){ + case (DEF_1, DEF_2) { + v_QoS := cs_QoS_Negotiated_1; + } + case (DED_1) { + v_QoS := cds_QoS_Converstational; // @sic R5-112698 sic@ + } + case (DED_2) { + v_QoS := cds_QoS_Negotiated_2; + } + case (DED_3) { + v_QoS := cds_QoS_Negotiated_3; + } + case (DED_4) { + v_QoS := cds_QoS_Negotiated_4; + } + // All other values are currently set to FFS, so leave them set to omit + } + } + if (pc_GERAN) { + select (p_BearerContextNumber){ + case (DEF_1, DEF_2) { // @sic R5-120619 sic@ + v_QoS := cs_QoS_PDP2; + } + case (DED_1) { + v_QoS := cds_QoS_Converstational; // @sic R5-112698 sic@ + } + case (DED_2) { + v_QoS := cds_QoS_PDP3; + } + case (DED_3) { // @sic R5-120632 sic@ + v_QoS := cds_QoS_Negotiated_3; + } + case (DED_4) { + v_QoS := cds_QoS_Negotiated_4; + } + // All other values are currently set to FFS, so leave them set to omit + } + } + + return v_QoS; + } + + /* + * @desc Get the Default or Dedicated NegotiatedQoS according to 36.508 clause 6.6.1 and 2 + * @param p_BearerContextNumber + * @return template (omit) LLC_SAPI + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_Get_508_NegotiatedLLCSAPI(BEARER_CONTEXT_TYPE p_BearerContextNumber) return template (omit) LLC_SAPI + { + var template (omit) LLC_SAPI v_LLC_SAPI := omit; + + if (pc_GERAN){ // @sic R5s110168 change 2.16 sic@ + + select (p_BearerContextNumber){ + case (DEF_1, DEF_2, DED_2) { // @sic R5-120619 sic@ + v_LLC_SAPI := cs_LLC_SAPI_11 ('32'O); + } + case (DED_1, DED_4) { // @sic R5-120632 sic@ + v_LLC_SAPI := cs_LLC_SAPI_03 ('32'O); + } + // All other values are currently set to FFS, so leave them set to omit + } + } + + return v_LLC_SAPI; + } + + /* + * @desc Get the Default or Dedicated NegotiatedQoS according to 36.508 clause 4.7.3-3 and -6 + * @param p_BearerId + * @return template (omit) TransactionIdentifier + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_Get_508_EPSBearerTI(EPS_BearerIdentity p_BearerId) return template (omit) TransactionIdentifier + { + var template (omit) TransactionIdentifier v_TI := omit; + + if (pc_GERAN or pc_UTRA){ + v_TI := cs_TransactionId (int2bit ((hex2int(p_BearerId) -5), 3)); // @sic R5s110593 sic@ + } + return v_TI; + } + + /* @desc Get the Default QoS according to 36.508 clause 4.7.3-6 + * @param p_BearerContextNumber + * @return template (value) EPS_QualityOfService + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_Get_508_EPSQoS(template (omit) BEARER_CONTEXT_TYPE p_BearerContextNumber) return template (value) EPS_QualityOfService + { /* @sic R5-144797: parameter p_BearerContextNumber sic@ */ + var template (value) EPS_QualityOfService v_QoS; + var BEARER_CONTEXT_TYPE v_BearerContextNumber; + + if (isvalue(p_BearerContextNumber)) { + v_BearerContextNumber := valueof(p_BearerContextNumber); + } else { + if (pc_IMS) { + v_BearerContextNumber := DEF_1; + } else { + v_BearerContextNumber := DEF_2; + } + } + select (v_BearerContextNumber){ /* @sic R5-144797: v_QoS does not depend on pc_IMS anymore sic@ */ + case (DEF_1) { + v_QoS := cs_508_EPS_QoS_Default_1; + } + case else { + v_QoS := cds_EPS_QoS_Def_nonGBR_QCI; + } + } + return v_QoS; + } + + /* + * @desc Get the Default or Dedicated RadioPriority according to 36.508 clause 6.6.1 and 2 + * @param p_BearerContextNumber + * @return template (omit) RadioPriority + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_Get_508_RadioPriority(BEARER_CONTEXT_TYPE p_BearerContextNumber) return template (omit) RadioPriority + { + var template (omit) RadioPriority v_RadioPriority := omit; + + if (pc_GERAN) { // @sic R5s110168 change 2.16 sic@ + + select (p_BearerContextNumber){ + case (DEF_1, DEF_2, DED_2) { // @sic R5-120619 sic@ + v_RadioPriority := cs_RadioPriority ('8'H, '100'B); + } + // All other values are currently set to FFS, so leave them set to omit + } + } + + return v_RadioPriority; + } + + /* + * @desc Get the PFI according to 36.508 clause 4.7.3 + * @return template (omit) PacketFlowIdentifier + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_Get_508_PFI() return template (omit) PacketFlowIdentifier + { + var template (omit) PacketFlowIdentifier v_PFI := omit; + + if (pc_GERAN){ + v_PFI := cs_PktFlowId; + } + return v_PFI; + } + +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA_Templates/EUTRA_AspCommon_Templates.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA_Templates/EUTRA_AspCommon_Templates.ttcn new file mode 100644 index 0000000..3dfcbf1 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA_Templates/EUTRA_AspCommon_Templates.ttcn @@ -0,0 +1,537 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-05-28 21:30:34 +0200 (Wed, 28 May 2014) $ +// $Rev: 11372 $ +/******************************************************************************/ + +module EUTRA_AspCommon_Templates { + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from EUTRA_ASP_TypeDefs all; + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + + //**************************************************************************** + // timing info + //---------------------------------------------------------------------------- + + template (value) SubFrameTiming_Type cs_SubFrameTiming(SystemFrameNumber_Type p_SystemFrameNumber, + SubFrameNumber_Type p_SubFrameNumber) := + { /* @status APPROVED (IMS, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5s110154 sic@ */ + SFN := { Number := p_SystemFrameNumber }, + Subframe := { Number := p_SubFrameNumber } + }; + + template (value) TimingInfo_Type cs_TimingInfo_Now := {Now := true}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + + template (value) TimingInfo_Type cs_TimingInfo_SFN(SystemFrameNumber_Type p_SFN) := + { /* @status APPROVED (IMS, LTE, LTE_A, LTE_IRAT) */ + SubFrame := { + SFN := { Number := p_SFN }, + Subframe := { Any := true } + } + }; + + template (value) TimingInfo_Type cs_TimingInfo_SubFrame(SubFrameNumber_Type p_Subframe) := + { /* @status APPROVED (LTE, LTE_A) */ + SubFrame := { + SFN := { Any := true }, + Subframe := { Number := p_Subframe } + } + }; + + template (value) TimingInfo_Type cs_TimingInfo(SystemFrameNumber_Type p_SFN, + integer p_SubframeOffset) := + { /* @sic R5s100172 sic@ */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + SubFrame := { + SFN := { Number := (p_SFN + (p_SubframeOffset / 10)) mod 1024}, + Subframe := { Number := p_SubframeOffset mod 10 } + } + }; + + template (present) TimingInfo_Type cr_TimingInfo_Any := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + SubFrame := { + SFN := ? , + Subframe := ? + } + }; + + template (present) TimingInfo_Type cr_TimingInfo(template (present) SystemFrameNumber_Type p_SFN, + template (present) SubFrameNumber_Type p_Subframe) := + { /* @status APPROVED (LTE, LTE_A) */ + SubFrame := { + SFN := { Number := p_SFN }, + Subframe := { Number := p_Subframe } + } + }; + + /* + * @desc auxiliary function to check whether timing info is "now" + * @param p_TimingInfo + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_TimingInfo_IsNow(template (value) TimingInfo_Type p_TimingInfo) return boolean + { + return match(valueof(p_TimingInfo), cs_TimingInfo_Now); + } + + /* + * @desc auxiliary function to set CNF flag for configuration ASPs + * @param p_TimingInfo + * @param p_CnfFlag (default value: omit) + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_CnfFlag_Set(template (value) TimingInfo_Type p_TimingInfo, + template (omit) boolean p_CnfFlag := omit) return boolean + { + var boolean v_CnfFlag; + + if (isvalue(p_CnfFlag)) { + v_CnfFlag := valueof(p_CnfFlag); + } else { + v_CnfFlag := f_TimingInfo_IsNow(p_TimingInfo); + } + return v_CnfFlag; + } + + //**************************************************************************** + // common part of ASPs + //---------------------------------------------------------------------------- + + template (present) CnfAspCommonPart_Type cr_CnfAspCommonPart_CellCfg(EUTRA_CellId_Type p_CellId) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + CellId := p_CellId, + RoutingInfo := { None := true }, + TimingInfo := ?, + Result := { Success := true } + }; + + template (value) ReqAspCommonPart_Type cs_ReqAspCommonPart_CellCfg(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now, + template (omit) boolean p_CnfFlag := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5s110634 additional changes: f_CnfFlag_Set sic@ */ + CellId := p_CellId, + RoutingInfo := { None := true }, + TimingInfo := p_TimingInfo, + ControlInfo := { + CnfFlag := f_CnfFlag_Set(p_TimingInfo, p_CnfFlag), + FollowOnFlag := false + }, + CA_Info := omit + }; + + template (value) ReqAspCommonPart_Type cs_ReqAspCommonPart_RB(EUTRA_CellId_Type p_CellId, + RadioBearerId_Type p_RB_Id, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now, + boolean p_CnfFlag := tsc_NoCnfReq) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + CellId := p_CellId, + RoutingInfo := { + RadioBearerId := p_RB_Id + }, + TimingInfo := p_TimingInfo, + ControlInfo := { + CnfFlag := p_CnfFlag, + FollowOnFlag := false + }, + CA_Info := omit + }; + + + template (present) RoutingInfo_Type cr_RoutingInfo_None := + { /* @status APPROVED (LTE, LTE_A) */ + None := true + }; + + template (present) IndAspCommonPart_Type cr_IndAspCommonPart_Common(template (present) EUTRA_CellId_Type p_CellId, + template (present) RoutingInfo_Type p_RoutingInfo, + template (present) TimingInfo_Type p_TimingInfo := cr_TimingInfo_Any) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + CellId := p_CellId, + RoutingInfo := p_RoutingInfo, + TimingInfo := p_TimingInfo, + Status := { Ok := true }, + CA_Info := omit + }; + + template (present) IndAspCommonPart_Type cr_IndAspCommonPart_SysInd(template (present) EUTRA_CellId_Type p_CellId, + template (present) TimingInfo_Type p_TimingInfo := cr_TimingInfo_Any) := + /* @status APPROVED (LTE, LTE_A) */ + cr_IndAspCommonPart_Common (p_CellId, cr_RoutingInfo_None, p_TimingInfo); + + template (present) IndAspCommonPart_Type cr_IndAspCommonPart_RB(template (present) EUTRA_CellId_Type p_CellId, + template (present) RadioBearerId_Type p_RbId, + template (present) TimingInfo_Type p_TimingInfo := cr_TimingInfo_Any) := + /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + cr_IndAspCommonPart_Common (p_CellId, {RadioBearerId := p_RbId}, p_TimingInfo); + + //**************************************************************************** + // common CNF ASPs + //---------------------------------------------------------------------------- + + template (present) SYSTEM_CTRL_CNF car_CellConfig_Power_CNF := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Common := cr_CnfAspCommonPart_CellCfg(eutra_Cell_NonSpecific), + Confirm := { + CellAttenuationList := true + } + }; + + template (present) SYSTEM_CTRL_CNF car_CellConfig_CNF(EUTRA_CellId_Type p_CellId) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Common := cr_CnfAspCommonPart_CellCfg(p_CellId), + Confirm := { + Cell := true + } + }; + + template (present) SYSTEM_CTRL_CNF car_EnquireTiming(EUTRA_CellId_Type p_CellId) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Common := cr_CnfAspCommonPart_CellCfg(p_CellId), + Confirm := { + EnquireTiming := true + } + }; + + template (present) SYSTEM_CTRL_CNF car_SYSTEM_CTRL_L1MACInd_CNF(EUTRA_CellId_Type p_CellId) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Common := cr_CnfAspCommonPart_CellCfg(p_CellId), + Confirm := { + L1MacIndCtrl := true + } + }; + + //**************************************************************************** + // common REQ ASPs + //---------------------------------------------------------------------------- + + template (value) SYSTEM_CTRL_REQ cas_EnquireTiming(EUTRA_CellId_Type p_CellId) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId), + Request := { + EnquireTiming := true + } + }; + + template (value) SYSTEM_CTRL_REQ cas_ReleaseCell_REQ(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Common := cs_ReqAspCommonPart_CellCfg( p_CellId, p_TimingInfo, tsc_NoCnfReq), // Don't request a confirmation + Request := { + Cell := { + Release := true + } + } + }; + + template (value) SYSTEM_CTRL_REQ cas_RachPreambleIndConfig_REQ(EUTRA_CellId_Type p_CellId, + L1Mac_IndicationMode_Type p_RachPreambleMode) := + { /* @status APPROVED (LTE) */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, cs_TimingInfo_Now, tsc_NoCnfReq), + Request := { + L1MacIndCtrl := cs_EnableRachPreamble_Req(p_RachPreambleMode) + } + }; + + template (value) SYSTEM_CTRL_REQ cas_HarqErrorIndication_REQ(EUTRA_CellId_Type p_CellId, + L1Mac_IndicationMode_Type p_Mode := enable) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, cs_TimingInfo_Now), + Request := { + L1MacIndCtrl := cs_HarqErrorInd_Req(p_Mode) + } + }; + + template (value) SYSTEM_CTRL_REQ cas_PdcpHandoverInit_REQ(EUTRA_CellId_Type p_SourceCellId, + EUTRA_CellId_Type p_TargetCellId, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now) := + { /* @status APPROVED (LTE, LTE_A) */ + /* @sic R5-133623: p_TimingInfo sic@ */ + Common := cs_ReqAspCommonPart_CellCfg(p_TargetCellId, p_TimingInfo), + Request := { + PdcpHandoverControl := { + HandoverInit := { + SourceCellId := p_SourceCellId + } + } + } + }; + + template (value) SYSTEM_CTRL_REQ cas_PdcpHandoverComplete_REQ(EUTRA_CellId_Type p_CellId) := + { /* @status APPROVED (LTE, LTE_A) */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, cs_TimingInfo_Now, tsc_NoCnfReq), // note: there shall be no CNF to avoid race conditions in case of UL data pending + Request := { + PdcpHandoverControl := { + HandoverComplete := true + } + } + }; + + template (present) SYSTEM_CTRL_CNF car_PdcpHandoverControl_CNF(EUTRA_CellId_Type p_CellId) := + { /* @status APPROVED (LTE, LTE_A) */ + Common := cr_CnfAspCommonPart_CellCfg(p_CellId), + Confirm := { + PdcpHandoverControl := true + } + }; + + //**************************************************************************** + // common IND ASPs + //---------------------------------------------------------------------------- + + template (present) SYSTEM_IND car_SYSTEM_IND_Any := + { /* @status APPROVED (LTE) */ + Common := cr_IndAspCommonPart_SysInd(?, cr_TimingInfo_Any), + Indication := ? + }; + + template (present) RachPreamble_Type cr_RachPreamble(template (present) PrachPreambleIndex_Type p_PrachPreambleIndex) := + { /* @status APPROVED (LTE) */ + RAPID := p_PrachPreambleIndex, + PRTPower := ? + }; + + template (present) SYSTEM_IND car_PRACH_Preamble_IND(EUTRA_CellId_Type p_CellId, + template (present) TimingInfo_Type p_TimingInfo, + template (present) RachPreamble_Type p_RachPreamble := cr_RachPreamble(tsc_EUTRA_PrachPreambleIndex_Dedicated_Def)) := + { /* @status APPROVED (LTE) */ + Common := cr_IndAspCommonPart_SysInd (p_CellId, p_TimingInfo), + Indication := { + RachPreamble := p_RachPreamble + } + }; + + template (present) SYSTEM_IND car_PRACH_Preamble_IND_Any(EUTRA_CellId_Type p_CellId, + template (present) TimingInfo_Type p_TimingInfo) := + /* @status APPROVED (LTE) */ + car_PRACH_Preamble_IND(p_CellId, p_TimingInfo, cr_RachPreamble(?)); + + //************************************************************************************ + // IE templates used in cas_RachPreambleIndConfig_REQ and car_SYSTEM_CTRL_L1MACInd_CNF + //------------------------------------------------------------------------------------ + + const L1Mac_IndicationMode_Type tsc_L1Mac_IndicationMode_Enable := enable; /* @status APPROVED (LTE, LTE_A) */ + const L1Mac_IndicationMode_Type tsc_L1Mac_IndicationMode_Disable := disable; /* @status APPROVED (LTE, LTE_A) */ + + template (value) L1Mac_IndicationControl_Type cs_EnableRachPreamble_Req(L1Mac_IndicationMode_Type p_RachPreambleMode) := + { /* @status APPROVED (LTE) */ + RachPreamble := p_RachPreambleMode, /* To enable/disable reporting of PRACH preamble received. */ + SchedReq := omit, + BSR := omit, + UL_HARQ := omit, + C_RNTI := omit, + PHR := omit, + HarqError := omit, + PeriodicRI := omit, + EPHR := omit, + PeriodicCQI := omit, + SRS := omit + }; + + template (value) L1Mac_IndicationControl_Type cs_HarqErrorInd_Req(L1Mac_IndicationMode_Type p_Mode) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + RachPreamble := omit, + SchedReq := omit, + BSR := omit, + UL_HARQ := omit, + C_RNTI := omit, + PHR := omit, + HarqError := p_Mode, + PeriodicRI := omit, + EPHR := omit, + PeriodicCQI := omit, + SRS := omit + }; + + //************************************************************************************ + // R8 wrapper templates + //------------------------------------------------------------------------------------ + + template (value) TDD_Config_Type cs_TDD_Config_r8(template (value) TDD_Config p_TDD_Config, + template (omit) TDD_Config_v1130 p_TDD_Config_v1130 := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + R8andLater := { + R8 := p_TDD_Config, + tdd_Config_v1130 := p_TDD_Config_v1130 + } + }; + + template (value) PHICH_Config_Type cs_PHICH_Config_r8(template (value) PHICH_Config p_PHICH_Config) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + R8 := p_PHICH_Config + }; + + template (value) PRACH_Config_Type cs_PRACH_Config_r8(template (value) PRACH_Config p_PRACH_Config) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + R8 := p_PRACH_Config + }; + + template (value) PUCCH_ConfigCommon_Type cs_PUCCH_ConfigCommon_r8(template (value) PUCCH_ConfigCommon p_PUCCH_ConfigCommon) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + R8 := p_PUCCH_ConfigCommon + }; + + template (value) PUCCH_ConfigDedicated_Type cs_PUCCH_ConfigDedicated_r8(template (value) PUCCH_ConfigDedicated p_PUCCH_ConfigDedicated, + template (omit) PUCCH_ConfigDedicated_v1020 p_PUCCH_ConfigDedicated_v1020 := omit, + template (omit) PUCCH_ConfigDedicated_v1130 p_PUCCH_ConfigDedicated_v1130 := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + R8andLater := { + pucch_ConfigDedicated := p_PUCCH_ConfigDedicated, + pucch_ConfigDedicated_v1020 := p_PUCCH_ConfigDedicated_v1020, + pucch_ConfigDedicated_v1130 := p_PUCCH_ConfigDedicated_v1130 + } + }; + + template (value) PUSCH_ConfigCommon_Type cs_PUSCH_ConfigCommon_r8(template (value) PUSCH_ConfigCommon p_PUSCH_ConfigCommon) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + R8 := p_PUSCH_ConfigCommon + }; + + template (value) PUSCH_ConfigDedicated_Type cs_PUSCH_ConfigDedicated_r8(template (value) PUSCH_ConfigDedicated p_PUSCH_ConfigDedicated, + template (omit) PUSCH_ConfigDedicated_v1020 p_PUSCH_ConfigDedicated_v1020 := omit, + template (omit) PUSCH_ConfigDedicated_v1130 p_PUSCH_ConfigDedicated_v1130 := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + R8andLater := { + pusch_ConfigDedicated := p_PUSCH_ConfigDedicated, + pusch_ConfigDedicated_v1020 := p_PUSCH_ConfigDedicated_v1020, + pusch_ConfigDedicated_v1130 := p_PUSCH_ConfigDedicated_v1130 + } + }; + + template (value) SoundingRS_UL_ConfigCommon_Type cs_SoundingRS_UL_ConfigCommon_r8(template (value) SoundingRS_UL_ConfigCommon p_SoundingRS_UL_ConfigCommon) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + R8 := p_SoundingRS_UL_ConfigCommon + }; + + template (value) SoundingRS_UL_ConfigDedicated_Type cs_SoundingRS_UL_ConfigDedicated_r8(template (value) SoundingRS_UL_ConfigDedicated p_SoundingRS_UL_ConfigDedicated, + template (omit) SoundingRS_UL_ConfigDedicated_v1020 p_SoundingRS_UL_ConfigDedicated_v1020 := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + R8andLater := { + soundingRS_UL_ConfigDedicated := p_SoundingRS_UL_ConfigDedicated, + soundingRS_UL_ConfigDedicated_v1020 := p_SoundingRS_UL_ConfigDedicated_v1020, + soundingRS_UL_ConfigDedicatedAperiodic_r10 := omit + } + }; + + template (value) SchedulingRequestConfig_Type cs_SchedulingRequestConfig_r8(template (value) SchedulingRequestConfig p_SchedulingRequestConfig, + template (omit) SchedulingRequestConfig_v1020 p_SchedulingRequestConfig_v1020 := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + R8andLater := { + schedulingRequestConfig := p_SchedulingRequestConfig, + schedulingRequestConfig_v1020 := p_SchedulingRequestConfig_v1020 + } + }; + + template (value) CQI_ReportConfig_Type cs_CQI_ReportConfig_r8andLater(template (value) CQI_ReportConfig p_CQI_ReportConfig, + template (omit) CQI_ReportConfig_v920 p_CQI_ReportConfig_v920 := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + R8andLater := { + cqi_ReportConfig := p_CQI_ReportConfig, + cqi_ReportConfig_v920 := p_CQI_ReportConfig_v920 + } + }; + + template (value) RACH_ConfigCommon_Type cs_RACH_ConfigCommon_r8(template (value) RACH_ConfigCommon p_RACH_ConfigCommon) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + R8 := p_RACH_ConfigCommon + }; + + template (value) RACH_ConfigDedicated_Type cs_RACH_ConfigDedicated_r8(template (value) RACH_ConfigDedicated p_RACH_ConfigDedicated) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + R8 := p_RACH_ConfigDedicated + }; + + template (value) MeasGapConfig_Type cs_MeasGapConfig_r8(template (value) MeasGapConfig p_MeasGapConfig) := + { /* @status (APPROVED) */ + R8 := p_MeasGapConfig + }; + + template (value) AntennaInfoCommon_Type cs_AntennaInfoCommon_r8(template (value) AntennaInfoCommon p_AntennaInfoCommon) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + R8 := p_AntennaInfoCommon + }; + + template (value) AntennaInfoDedicated_Type cs_AntennaInfoDedicated_r8andLater(template (value) AntennaInfoDedicated p_AntennaInfoDedicated, + template (omit) AntennaInfoDedicated_v920 p_AntennaInfoDedicated_v920 := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5w110104 */ + R8andLater := { + antennaInfo := p_AntennaInfoDedicated, + antennaInfo_v920 := p_AntennaInfoDedicated_v920 + } + }; + + template (value) PDCP_Config_Type cs_PDCP_Config_r8(template (value) PDCP_Config p_PDCP_Config) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + R8 := p_PDCP_Config + }; + + template (value) UL_AM_RLC_Type cs_UL_AM_RLC_r8(template (value) UL_AM_RLC p_UL_AM_RLC) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + R8 := p_UL_AM_RLC + }; + + template (value) DL_AM_RLC_Type cs_DL_AM_RLC_r8(template (value) DL_AM_RLC p_DL_AM_RLC) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + R8 := p_DL_AM_RLC + }; + + template (value) UL_UM_RLC_Type cs_UL_UM_RLC_r8(template (value) UL_UM_RLC p_UL_UM_RLC) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + R8 := p_UL_UM_RLC + }; + + template (value) DL_UM_RLC_Type cs_DL_UM_RLC_r8(template (value) DL_UM_RLC p_DL_UM_RLC) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + R8 := p_DL_UM_RLC + }; + + template (value) TTI_BundlingConfig_Type cs_TTI_BundlingConfig_r8(boolean p_TtiBundling) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + R8 := p_TtiBundling + }; + + template (value) SpsConfigurationDL_Type cs_SpsConfigurationDL_r8(template (value) SPS_ConfigDL.setup p_SpsConfigDL) := + { /* @status APPROVED (LTE) */ + R8 := p_SpsConfigDL + }; + + template (value) SpsConfigurationUL_Type cs_SpsConfigurationUL_r8(template (value) SPS_ConfigUL.setup p_SpsConfigUL) := + { /* @status APPROVED (LTE) */ + R8 := p_SpsConfigUL + }; + + template (value) UplinkPowerControlCommon_Type cs_UplinkPowerControlCommon_r8(template (value) UplinkPowerControlCommon p_UplinkPowerControlCommon, + template (omit) UplinkPowerControlCommon_v1020 p_UplinkPowerControlCommon_v1020 := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + R8andLater := { + uplinkPowerControlCommon := p_UplinkPowerControlCommon, + uplinkPowerControlCommon_v1020 := p_UplinkPowerControlCommon_v1020, + uplinkPowerControlCommonSCell_v1130 := omit + } + }; + + template (value) UplinkPowerControlDedicated_Type cs_UplinkPowerControlDedicated_r8(template (value) UplinkPowerControlDedicated p_UplinkPowerControlDedicated, + template (omit) UplinkPowerControlDedicated_v1020 p_UplinkPowerControlDedicated_v1020 := omit, + template (omit) SCellPathlossReferenceLinking_Type p_SCellPathlossReferenceLinking := omit, + template (omit) UplinkPowerControlDedicated_v1130 p_UplinkPowerControlDedicated_v1130 := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + R8andLater := { + uplinkPowerControlDedicated := p_UplinkPowerControlDedicated, + uplinkPowerControlDedicated_v1020 := p_UplinkPowerControlDedicated_v1020, + pathlossReferenceLinking := p_SCellPathlossReferenceLinking, + uplinkPowerControlDedicated_v1130 := p_UplinkPowerControlDedicated_v1130 + } + }; +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA_Templates/EUTRA_CellCfg_Templates.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA_Templates/EUTRA_CellCfg_Templates.ttcn new file mode 100644 index 0000000..6204e8a --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA_Templates/EUTRA_CellCfg_Templates.ttcn @@ -0,0 +1,1278 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-07 18:37:49 +0200 (Sun, 07 Sep 2014) $ +// $Rev: 12081 $ +/******************************************************************************/ + +module EUTRA_CellCfg_Templates { + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_ASP_TypeDefs all; + import from EUTRA_AspCommon_Templates all; + import from EUTRA_RRC_Templates all; + import from EUTRA_Component all; + import from EUTRA_PdcchConfig all; + import from TestcaseProperties all; + + const Imcs_Type tsc_Imcs_qpskMax := {Value := 9}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + const Imcs_Type tsc_Imcs_16qamMax := {Value := 16}; + const TimingAdvanceIndex_Type tsc_TA_Def := 31; /* by default all timing advance in a typical simulation environment will be zero + * @sic R5s090180: 0->31; sic@ + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + const TimingAdvance_Period_Type tsc_TA_Period_Def := 600; /* corresponding to Default of TimingAlignment timer =SF750 + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + + //**************************************************************************** + // ASP Templates for cell configuration + //---------------------------------------------------------------------------- + // templates for SS configuration: + + template (value) DciDlInfo_Type cs_DciDLInfo_Auto (template (value) DciDlInfoCommon_Type p_DciDlInfoCommon) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Auto := p_DciDlInfoCommon + }; + + template (value) ToRS_EPRE_Ratios_Type cs_PowerRatios_Def := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + RA := 0, + RB := 0 + }; + + template (value) ToRS_EPRE_Ratios_Type cs_PowerRatiosPDSCH_Def := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + RA := -3, + RB := -3 + }; + + template (value) AntennaPort_Type cs_AntennaPort_Configure(AntennaPortId_Type p_Id) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Id := p_Id, + Config := { + AddOrReconfigure := { + PowerAttenuation := true, // FFS + PropagationDelay := true // FFS + } + } + }; + + template (value) DownlinkAntennaGroupConfig_Type cs_DownlinkAntennaGroupConfig_Def (AntennaInfoCommon p_AntennaInfoCommon):= // new MIMO + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + AntennaInfoCommon := cs_AntennaInfoCommon_r8(p_AntennaInfoCommon), + AntennaPort := { /* list of antenna ports */ + cs_AntennaPort_Configure(0) + } + }; + + template (value) PhysicalLayerConfigDL_Type cs_PhysicalLayerConfigDL(EUTRA_FDD_TDD_Mode_Type p_FDD_TDD, + Dl_Bandwidth_Type p_Dl_Bandwidth, /* p_Dl_Bandwidth = n6, n15, n25, n50, n75, n100 */ + template (value) PHICH_Config_Type p_PHICH_Config, + CfiValue_Type p_CfiValue, + AntennaInfoCommon p_AntennaInfoCommon) := + { /* @sic R5-101050: additional parameter to support other bandwidth than 5MHz sic@ */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + AntennaGroup := cs_DownlinkAntennaGroupConfig_Def (p_AntennaInfoCommon), + Pbch := { + RelativeTxPower := cs_PowerRatios_Def + }, + Pcfich := { + CfiValue := p_CfiValue, // @sic R5s090180: replace tsc_CfiValue_Def by a parameter value sic@ + RelativeTxPower := cs_PowerRatios_Def + }, + Phich := { + PhichConfig := p_PHICH_Config, /* as signalled in the MIB */ + RelativeTxPower := cs_PowerRatios_Def + }, + Pdcch := f_EUTRA_PdcchConfig_Init(p_FDD_TDD, p_Dl_Bandwidth, cs_PowerRatios_Def), + Pdsch := { + RelativeTxPower := { // Acc. 36.508 Table 6.2.1.2-1 + RachResponse := cs_PowerRatios_Def, // 0 dB @sic R5-121089 sic@ + BcchOnPdsch := cs_PowerRatios_Def, // 0 dB @sic R5-121089 sic@ + PcchOnPdsch := cs_PowerRatios_Def, // 0 dB @sic R5-121089 sic@ + CcchOnPdsch := cs_PowerRatios_Def, // 0 dB @sic R5-121089 sic@ + DcchDtchOnPdsch := cs_PowerRatiosPDSCH_Def // -3 dB @sic R5-121089 sic@ + } + }, + Pss := { + RelativeTxPower := cs_PowerRatios_Def + }, + Sss := { + RelativeTxPower := cs_PowerRatios_Def + }, + CSI_RS_Config := omit, + Pmch := omit, + Epdcch := omit + }; + + template (value) SYSTEM_CTRL_REQ cas_RachProcedureConfig_REQ(EUTRA_CellId_Type p_CellId, + template (omit) C_RNTI p_CRNTI, + template (value) RachProcedureConfig_Type p_RachProcedureConfig, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now, // @sic R5s100178 sic@ + template (omit) boolean p_CnfFlag := omit) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + /* @sic R5s100801, R5s110634 additional changes: optional parameter p_CnfFlag sic@ */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, p_TimingInfo, p_CnfFlag), + Request := { + Cell := { + AddOrReconfigure := { + Basic := omit, + Active := { + C_RNTI := p_CRNTI, + PhysicalLayerConfigUL := omit, + RachProcedureConfig := p_RachProcedureConfig, + CcchDcchDtchConfig := omit, + ServingCellConfig := omit + } + } + } + } + }; + + //---------------------------------------------------------------------------- + template (value) UplinkStaticCellInfo_Type cs_UplinkStaticCellInfo(ARFCN_ValueEUTRA p_EarfcnUL, + Ul_Bandwidth_Type p_Ul_Bandwidth) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Earfcn := p_EarfcnUL, + Bandwidth := p_Ul_Bandwidth, + CyclicPrefix := normal + }; + + template (value) StaticCellInfo_Type cs_StaticCellInfo_FDD(PhysCellId p_PhysicalCellIdentity, + FreqBandIndicator p_EutraBand, + ARFCN_ValueEUTRA p_EarfcnDL, + Dl_Bandwidth_Type p_Dl_Bandwidth, + integer p_Tcell, + integer p_SfnOffset, + template (omit) UplinkStaticCellInfo_Type p_UplinkStaticCellInfo //@sic R5-134786 sic@ + ) := + { /* @sic R5s100029 change 3: additional parameters p_Tcell, p_SfnOffset sic@ */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Common := { + RAT := { + FDD := true + }, + PhysicalCellId := p_PhysicalCellIdentity, + eNB_CellId := omit, + EutraBand := p_EutraBand, + CellTimingInfo := { + Tcell := p_Tcell, /* @sic R5s100029 sic@ */ + SfnOffset := p_SfnOffset /* @sic R5s100029 sic@ */ + } + }, + Downlink := { + Earfcn := p_EarfcnDL, + Bandwidth := p_Dl_Bandwidth, + RBSize := n_RB_SC_12, /* normal sub-frequency spacing */ + CyclicPrefix := normal + }, + Uplink := p_UplinkStaticCellInfo + }; + + template (value) StaticCellInfo_Type cs_StaticCellInfo_TDD(PhysCellId p_PhysicalCellIdentity, + FreqBandIndicator p_EutraBand, + ARFCN_ValueEUTRA p_EarfcnDL, + Dl_Bandwidth_Type p_Dl_Bandwidth, // @sic R5s100190 sic@ + integer p_Tcell, // @sic R5s100513 sic@ + integer p_SfnOffset, // @sic R5s100513 sic@ + TDD_Config p_TDD_Config, + template (omit) TDD_Config_v1130 p_TDD_Config_v1130 := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Common := { + RAT := { + TDD := { + Configuration := cs_TDD_Config_r8(p_TDD_Config,p_TDD_Config_v1130) + } + }, + PhysicalCellId := p_PhysicalCellIdentity, + eNB_CellId := omit, + EutraBand := p_EutraBand, + CellTimingInfo := { + Tcell := p_Tcell, // @sic R5s100513 sic@ + SfnOffset := p_SfnOffset // @sic R5s100513 sic@ + } + }, + Downlink := { + Earfcn := p_EarfcnDL, + Bandwidth := p_Dl_Bandwidth, // @sic R5s100190 sic@ + RBSize := n_RB_SC_12, /* normal sub-frequency spacing */ + CyclicPrefix := normal + }, + Uplink := omit + }; + + //---------------------------------------------------------------------------- + + group SchedulingInfo_UL_DL { + + template (value) FreqDomainSchedulCommon_Type cs_FreqDomainSchedul(integer p_FirstRbIndex, + integer p_MaxRbCnt) := + { /* Frequency domain scheduling */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + FirstRbIndex := p_FirstRbIndex, + MaxRbCnt := p_MaxRbCnt + }; + + template (value) FreqDomainSchedulExplicit_Type cs_FreqDomainSchedulExplicit(integer p_FirstRbIndex, + integer p_Nprb) := + { /* Frequency domain explicit scheduling */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + FirstRbIndex := p_FirstRbIndex, + Nprb := p_Nprb + }; + + template (value) UL_TransRetransmissionList_Type cs_TransRetransmissionListUL_Def := + { /* default list of possible retransmission and their Redundency versions to be applied in UL; corresponding to maxHARQ-Tx = 5 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5s100135 sic@ */ + /* @sic R5w100214 slide 3/4: non-adapive retransmissions are obsolete sic@ */ + { NewTransmission := true } // new transmission with RV=0 and NDI toggled + }; + + template (value) RedundancyVersionListDL_Type cs_RedundancyVersionListDL_Def := + { /* Redundency version by default to be applied DL; corresponding to maxHARQ-Tx = 5 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + 0, 2, 3, 1, 0 + }; + + template (value) RedundancyVersionListDL_Type cs_RedundancyVersionListDL_OneValue := + { /* Redundency version for BCCH and PCCH - only one value is provided as no retransmission is necessary */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + 0 + }; + + } // end of SchedulingInfo_UL_DL + + //---------------------------------------------------------------------------- + + group SchedulingInfo_UL { + // UL grant assignment: + + template (value) TransmissionRepetition_Type cs_TransmissionRepetition_Continous := + { /* Default UL Auto PUCCH Synch to be continous */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Continuous := true + }; + + template (value) UL_GrantConfig_Type cs_UL_GrantConfig_Def := + { /* Default UL Grant transmission on reception of every SI reception */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + OnSR_Reception := true + }; + + template (value) UL_GrantConfig_Type cs_UL_GrantConfig_Stop := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + None := true + }; + + template (value) PUCCH_AutoSynch_Type cs_PUCCH_AutoSynch_Def(TimingAdvance_Period_Type p_TimingAdvance_Period := tsc_TA_Period_Def) := + { /* PUCCH Synch Auto mode */ + /* @sic R5-101050 change 12: TA period as optional parameter sic@ */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + TimingAdvance := tsc_TA_Def, + TA_Period := p_TimingAdvance_Period, /* time period after which TA MAC control elements need to be automatically transmitted */ + TA_Repetition := cs_TransmissionRepetition_Continous /* number of TA MAC control element repetitions to be automatically transmitted or 'Continuous' */ + }; + + template (value) PUCCH_Synch_Type cs_PUCCH_Synch_Auto_Def(TimingAdvance_Period_Type p_TimingAdvance_Period := tsc_TA_Period_Def) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5-101050 change 12: TA period as optional parameter sic@ */ + Auto := cs_PUCCH_AutoSynch_Def(p_TimingAdvance_Period) + }; + + template (value) PUCCH_Synch_Type cs_PUCCH_Synch_None := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + None := true + }; + + template (omit) PUCCH_Synch_Type cs_PUCCH_Synch_KeepAsItIs := omit; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + template (value) DciUlInfo_Type cs_DciInfo_CcchDcchDtchUL_Def := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Imcs := tsc_Imcs_qpskMax, // Selected Max allowed for QPSK + TransRetransmissionList := cs_TransRetransmissionListUL_Def, + FreqDomainSchedul := cs_FreqDomainSchedulExplicit(0, 25) + }; + + template (value) DciUlInfo_Type cs_DciInfo_CcchDcchDtchUL_Explicit(ImcsValue_Type p_Imcs, + integer p_Nprb, + template (value) UL_TransRetransmissionList_Type p_TransRetransList := cs_TransRetransmissionListUL_Def, + integer p_FirstRbIndex := 0) := /* @sic R5s110573 added p_FirstRbIndex sic@ */ + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5s100522: Additional MCC 160 changes sic@ */ + Imcs := {Value := p_Imcs}, + TransRetransmissionList := p_TransRetransList, + FreqDomainSchedul := cs_FreqDomainSchedulExplicit(p_FirstRbIndex, p_Nprb) + }; + + template (value) DciUlInfo_Type cs_DciInfo_CcchDcchDtchUL_BigGrant := cs_DciInfo_CcchDcchDtchUL_Explicit(20, 25); /* MCS 20, NPRB 25 (5 MHz) + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + + } // end of SchedulingInfo_UL + + //---------------------------------------------------------------------------- + // DL scheduling: + + group SchedulingInfo_DL { + + type enumerated DlSchedulingClass_Type { /* local type only used for fl_DciDlInfo_Init + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + e_DlSchedulingClass_BCCH, + e_DlSchedulingClass_PCCH, + e_DlSchedulingClass_RAR, + e_DlSchedulingClass_UeSpecific + }; + + + /* + * @desc local function + * @return EUTRA_ResourceAllocationScheme_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function fl_GetResourceAllocationScheme () return EUTRA_ResourceAllocationScheme_Type + { // @sic R5s110122: remove p_Dl_Bandwidth sic@ + var charstring v_TestcaseName := testcasename(); // This operation now defined in TTCN3 v4.2.1 + var boolean v_TestcaseDciFormat1A := f_GetTestcaseAttrib_DciFormat1A(v_TestcaseName); // @sic R5s110034; changed due to change of GCR priorities after RAN5 #52 sic@ + var boolean v_Testcase3IntraFreq := f_GetTestcaseAttrib_3IntraFreq(v_TestcaseName); // @sic R5s110034 sic@ + var boolean v_TestcaseMimo := f_GetTestcaseAttrib_Mimo(v_TestcaseName); // @sic R5s110320 sic@ + var boolean v_TestcaseDlCcchMsgInSeparateMacPdu := f_GetTestcaseAttrib_DlCcchMsgInSeparateMacPdu(v_TestcaseName); // @sic R5-120721 change 3 sic@ + + if (v_TestcaseDciFormat1A or // @sic changed due to change of GCR priorities after RAN5 #52 sic@ + v_Testcase3IntraFreq or // @sic R5s110122 sic@ + v_TestcaseMimo or // @sic R5s110320 sic@ + v_TestcaseDlCcchMsgInSeparateMacPdu) // @sic R5-120721 change 3 sic@ + { + return dci1A; + } + return dci1C_dci1; + } + + template (value) DciDlInfoCommon_Type cs_DciDlInfoCommon_Init := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Format := dci_1A, + ResourceAllocType := ra_2_Localised, + Modulation_1stCW := qpsk, + Modulation_2ndCW := unused, + FreqDomainSchedul := cs_FreqDomainSchedul(0, 0), + RedundancyVersionList := cs_RedundancyVersionListDL_Def + }; + + /* + * @desc local function + * @param p_SchedulClass + * @param p_Dl_Bandwidth (default value: n25) + * @return template (value) DciDlInfoCommon_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function fl_DciDlInfo_Init(DlSchedulingClass_Type p_SchedulClass, + Dl_Bandwidth_Type p_Dl_Bandwidth := n25) //@sic R5s110034: delete sysinfoCombination parameter sic@ + return template (value) DciDlInfoCommon_Type + { + var template (value) DciDlInfoCommon_Type v_DciDlInfoCommon := cs_DciDlInfoCommon_Init; + var EUTRA_ResourceAllocationScheme_Type v_ResourceAllocationScheme := fl_GetResourceAllocationScheme(); // @sic R5s110122 sic@ + var charstring v_TestcaseName := testcasename(); + var boolean v_TestcaseAttrib_3IntraFreq := f_GetTestcaseAttrib_3IntraFreq(v_TestcaseName); + + if (p_SchedulClass == e_DlSchedulingClass_UeSpecific) { + v_DciDlInfoCommon.Modulation_1stCW := qam64; + } + + // For BCCH/PCCH, only one redundancy version is initialised as there is no ACK and retransmission + select (p_SchedulClass) { + case (e_DlSchedulingClass_BCCH, e_DlSchedulingClass_PCCH) { + v_DciDlInfoCommon.RedundancyVersionList := cs_RedundancyVersionListDL_OneValue; // No retransmission for BCCH/PCCH, then only one redundancy value is provided + } + } + + select (v_ResourceAllocationScheme) { + case (dci1A) { + // ***** DCI 1A for all channels ***** + // Format and ResourceAllocType are already set correctly + select (p_SchedulClass) { + case (e_DlSchedulingClass_BCCH) { + v_DciDlInfoCommon.FreqDomainSchedul := cs_FreqDomainSchedul(0, 4); // localised allocation + //MaxRbCnt= Max PRB [3] -Rb Start [0] +1 + } + case (e_DlSchedulingClass_PCCH) { + v_DciDlInfoCommon.FreqDomainSchedul := cs_FreqDomainSchedul(4, 1); // localised allocation + // MaxRbCnt = Max PRB [4] -Rb Start [4] +1 + } + case (e_DlSchedulingClass_RAR) { + v_DciDlInfoCommon.FreqDomainSchedul := cs_FreqDomainSchedul(5, 4); // localised allocation + // MaxRbCnt = Max PRB [8] -Rb Start [5] +1 + } + case else { // @sic R5-103846 sic@ + select (p_Dl_Bandwidth) { + case (n25) { // 5 Mhz + if (v_TestcaseAttrib_3IntraFreq) { + v_DciDlInfoCommon.FreqDomainSchedul := cs_FreqDomainSchedul(16, 9); + //MaxRbCnt = Max PRB [24] -Rb Start [16] +1 + } + else { + v_DciDlInfoCommon.FreqDomainSchedul := cs_FreqDomainSchedul(5, 20); + // MaxRbCnt = Max PRB [24] -Rb Start [5] +1 + } + } + case (n50) { // 10 Mhz + v_DciDlInfoCommon.FreqDomainSchedul := cs_FreqDomainSchedul(28, 22); // localised allocation + // MaxRbCnt = Max PRB [49] -Rb Start [28] +1 + } + case else { // 15 Mhz & 20 Mhz + v_DciDlInfoCommon.FreqDomainSchedul := cs_FreqDomainSchedul(9, 22); // localised allocation + // MaxRbCnt = Max PRB [30] -Rb Start [9] +1 + // @sic R5s120101 sic@ + } + } + } + } + } + case (dci1C_dci1) { + // ***** DCI 1C for BCCH, PCCH, RAR and DCI 1 for UE specific channels ***** + v_DciDlInfoCommon.Format := dci_1C; + v_DciDlInfoCommon.ResourceAllocType := ra_2_Distributed; + select (p_SchedulClass) { + case (e_DlSchedulingClass_BCCH) { + v_DciDlInfoCommon.FreqDomainSchedul := cs_FreqDomainSchedul(0, 4); // virtual resource allocation + //MaxRbCnt = Max vPRB [3] -Rb Start [0] +1 + } + case (e_DlSchedulingClass_PCCH) { + select (p_Dl_Bandwidth) { // @sic R5-103846 sic@ + case (n25) { // 5 Mhz + v_DciDlInfoCommon.FreqDomainSchedul := cs_FreqDomainSchedul(4, 2); // virtual resource allocation + //MaxRbCnt = Max vPRB [5] -Rb Start [4] +1 + } + case else { // 10 Mhz, 15Mhz & 20 Mhz + v_DciDlInfoCommon.FreqDomainSchedul := cs_FreqDomainSchedul(4, 4); // virtual resource allocation + // MaxRbCnt = Max vPRB [7] -Rb Start [4] +1 + } + } + } + case (e_DlSchedulingClass_RAR) { + select (p_Dl_Bandwidth) { // @sic R5-103846 sic@ + case (n25) { // 5 Mhz + v_DciDlInfoCommon.FreqDomainSchedul := cs_FreqDomainSchedul(6, 4); // virtual resource allocation + //MaxRbCnt = Max vPRB [9] -Rb Start [6] +1 + } + case else { // 10 Mhz, 15Mhz & 20 Mhz + v_DciDlInfoCommon.FreqDomainSchedul := cs_FreqDomainSchedul(8, 4); // virtual resource allocation + // MaxRbCnt = Max vPRB [11] -Rb Start [8] +1 + } + } + } + case else { + //@sic R5s120101 R5-141113 sic@ + v_DciDlInfoCommon.Format := dci_1; + v_DciDlInfoCommon.ResourceAllocType := ra_0; /* @sic R5s100172 sic@ */ + select (p_Dl_Bandwidth) { // @sic R5-103846 sic@ + case (n25) { // 5 Mhz + v_DciDlInfoCommon.FreqDomainSchedul := cs_FreqDomainSchedul(2, 23); // localised allocation, but not consecutive + //MaxRbCnt = Max PRB [24] -RB Start [2] +1 + } + case (n50) { // 10 Mhz + v_DciDlInfoCommon.FreqDomainSchedul := cs_FreqDomainSchedul(3, 47); // localised allocation, but not consecutive + // MaxRbCnt = Max PRB [49] -RB Start [3] +1 + } + case (n75) { // 15Mhz + v_DciDlInfoCommon.FreqDomainSchedul := cs_FreqDomainSchedul(4, 71); // localised allocation, but not consecutive + // MaxRbCnt = Max PRB [74] -RB Start [4] +1 + } + case else { // 20 Mhz + v_DciDlInfoCommon.FreqDomainSchedul := cs_FreqDomainSchedul(4, 80); // localised allocation, but not consecutive + // MaxRbCnt = Max PRB [83] -RB Start [4] +1 + } + } + } + } + } + } + return v_DciDlInfoCommon; + } + + /* + * @desc local function (configure SS to DCI1A for Ue Specific Scheduling) + * @param p_Dl_Bandwidth + * @return template (value) DciDlInfoCommon_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function fl_DciDlInfo_DlSchedulingClass_UeSpecific_Dci1A(Dl_Bandwidth_Type p_Dl_Bandwidth) + return template (value) DciDlInfoCommon_Type + { + var template (value) DciDlInfoCommon_Type v_DciDlInfoCommon := cs_DciDlInfoCommon_Init; + + v_DciDlInfoCommon.Modulation_1stCW := qam64; + + // ***** DCI 1A for all channels ***** + // Format and ResourceAllocType are already set correctly + select (p_Dl_Bandwidth) { + case (n25) { // 5 Mhz + v_DciDlInfoCommon.FreqDomainSchedul := cs_FreqDomainSchedul(5, 20); + // MaxRbCnt = Max PRB [24] -Rb Start [5] +1 + } + case (n50) { // 10 Mhz + v_DciDlInfoCommon.FreqDomainSchedul := cs_FreqDomainSchedul(28, 22); // localised allocation + // MaxRbCnt = Max PRB [49] -Rb Start [28] +1 + } + case else { // 15 Mhz & 20 Mhz and others + //@sic R5-141113 sic@ + v_DciDlInfoCommon.FreqDomainSchedul := cs_FreqDomainSchedul(9, 22); // localised allocation + // MaxRbCnt = Max PRB [30] -Rb Start [9] +1 + // @sic R5s120101 sic@ + } + } + + return v_DciDlInfoCommon; + } + + // @sic R5-103846: adding Dl_Bandwidth and sysinfo combination parameters sic@ + template (value) DciDlInfoCommon_Type cs_DciInfo_Pcch(Dl_Bandwidth_Type p_Dl_Bandwidth) := fl_DciDlInfo_Init(e_DlSchedulingClass_PCCH, p_Dl_Bandwidth); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + template (value) DciDlInfoCommon_Type cs_DciInfo_Sib1 := fl_DciDlInfo_Init(e_DlSchedulingClass_BCCH); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + template (value) DciDlInfoCommon_Type cs_DciInfo_SI_Def := fl_DciDlInfo_Init(e_DlSchedulingClass_BCCH); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + template (value) DciDlInfoCommon_Type cs_DciInfo_CcchDcchDtchDL( Dl_Bandwidth_Type p_Dl_Bandwidth) := fl_DciDlInfo_Init(e_DlSchedulingClass_UeSpecific, p_Dl_Bandwidth); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) @sic R5s110034: delete sysinfoCombination parameter sic@ */ + template (value) DciDlInfoCommon_Type cs_DciInfo_RandomAccessResponse( Dl_Bandwidth_Type p_Dl_Bandwidth) := fl_DciDlInfo_Init(e_DlSchedulingClass_RAR, p_Dl_Bandwidth); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + + template (value) DciDlInfoCommon_Type cs_DciInfo_CcchDcchDtchDL_Dci1A( Dl_Bandwidth_Type p_Dl_Bandwidth) := fl_DciDlInfo_DlSchedulingClass_UeSpecific_Dci1A(p_Dl_Bandwidth); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + } // end of SchedulingInfo_DL + + //---------------------------------------------------------------------------- + // SI scheduling: + + template (value) SiSchedul_Type cs_SiSchedul_Def(SiPeriodicity_Type p_Periodicity, /* as in Sib1 */ + integer p_SubframeOffset) := + { /* default scheduling for a single scheduling information (SI) which may contain one ore several Sibs; + it is assumed that the SI occurs only once within the window (therefore there is just one parameter for the subframe offset) */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Periodicity := p_Periodicity, + Window := { + { + DciInfo := cs_DciInfo_SI_Def, + SubframeOffset := p_SubframeOffset + } + } + }; + + template (value) AllSiSchedul_Type cs_SiSchedulList_Def(SiWindowLength_Type p_SiWindowLength, /* as in Sib1 */ + template (value) SiSchedulList_Type p_SiSchedulList, + template (omit) SiSchedulList_Type p_SegmentedSiSchedulList := omit) := + { /* common template for one or more SIs */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5-112161: new optional parameter for segmented SIs sic@ */ + WindowLength := p_SiWindowLength, + SiList := p_SiSchedulList, + SegmentedSiList := p_SegmentedSiSchedulList + }; + + //---------------------------------------------------------------------------- + + template (value) UplinkGrant_Type cs_InitialGrant_Def(integer p_RB_Allocation := 0, // Corresponding to RIV = 0 => RBstart =0, Nprb =1 + integer p_MCS := 15) := // Imcs=15 => Itbs=14 => Tbs=256; + { /* @sic R5s100073: change of default values to be independent from bandwidth sic@ */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + HoppingFlag := '0'B, // no hopping + RB_Allocation := int2bit(p_RB_Allocation, 10), + ModAndCodScheme := int2bit(p_MCS, 4), + TPC_Command := int2bit(3,3), // As per table 6.2 of 36.213 results in 0 dB + UL_Delay := '0'B, + CQI_Req := '0'B + }; + + template (value) RapIdCtrl_Type cs_RapIdCtrl_Auto := + { /* @status APPROVED (LTE) */ + Automatic := true /* SS shall automatically use same RAPID as received from the UE */ + }; + + template (value) RandomAccessResponse_Type cs_RAR_None := + { /* @status APPROVED (LTE, LTE_A) */ + None := true + }; + + template (value) RandomAccessBackoffIndicator_Type cs_BI_None := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + None := true + }; + + template (value) TempC_RNTI_Type cs_TempC_RNTI_SameAsC_RNTI := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + SameAsC_RNTI := true /* in the RA response SS shall use the same C-RNTI as configured in ActiveCellConfig_Type; + this is useful for initial random access */ + }; + + template (value) RandomAccessResponseConfig_Type cs_RandomAccessResponseConfig_Def(RACH_TimingAdvance_Type p_RAR_TA, + Dl_Bandwidth_Type p_Dl_Bandwidth, // @sic R5-103846 sic@ + integer p_RA_GrantRIV := 0, + integer p_RA_GrantIMCS := 15) := + { /* ASP for initial configuration of a cell */ + /* @sic R5-103846: adding Dl_Bandwidth and sysinfo combination parameters sic@ */ + /* @sic R5s100430 Additional Changes: merge of cs_RandomAccessResponseConfig_InitialAccess_Def and cs_RandomAccessResponseConfig_InitialAccess_Grant sic@ */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Ctrl := { + DciInfo := cs_DciInfo_RandomAccessResponse(p_Dl_Bandwidth), + Rar := { + List := { + { + RapId := { + Automatic := true + }, + InitialGrant := cs_InitialGrant_Def(p_RA_GrantRIV, p_RA_GrantIMCS), // @sic R5s100430 Additional Changes sic@ + TimingAdvance := p_RAR_TA, + TempC_RNTI := cs_TempC_RNTI_SameAsC_RNTI + } + } + }, + BackoffInd := cs_BI_None + } + }; + + template (value) RandomAccessResponseConfig_Type cs_RandomAccessResponseConfig_None(Dl_Bandwidth_Type p_Dl_Bandwidth):= // @sic R5-103846 sic@ + { /* will cause no RAR tx */ + /* @status APPROVED (LTE, LTE_A) */ + Ctrl := { + DciInfo := cs_DciInfo_RandomAccessResponse(p_Dl_Bandwidth), // May be we can omit this + Rar := cs_RAR_None, + BackoffInd := cs_BI_None + } + }; + + template (value) ContentionResolution_ContainedRlcPdu_Type cs_ContentionResolution_RlcPdu_None := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + None := true + }; + + template (value) ContentionResolution_ContainedRlcPdu_Type cs_ContentionResolution_RlcPdu(octetstring p_RLC_PDU) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + RlcPdu := p_RLC_PDU + }; + + template (value) ContentionResolutionCtrl_Type cs_ContentionResolutionCtrl_Def(template (value) ContentionResolution_ContainedRlcPdu_Type p_ContainedRlcPdu := cs_ContentionResolution_RlcPdu_None) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5-120721 change 3: parameter p_ContainedRlcPdu sic@ */ + TCRNTI_Based := { + MacPdu := { + ContainedId := { + XorMask := tsc_ContentionResolutionId_Unchanged + }, + ContainedRlcPdu := p_ContainedRlcPdu + } + } + }; + + template (value) ContentionResolutionCtrl_Type cs_ContReslCtrl_CRNTI(ImcsValue_Type p_IMCS := 0, + integer p_Nprb:= 1):= + { /* results in Contention resolution for T-CRNTI */ + /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + CRNTI_Based := { + AutomaticGrant := cs_DciInfo_CcchDcchDtchUL_Explicit(p_IMCS, p_Nprb) /* with default parameters (p_IMCS := 0, p_Nprb:= 1) it results in UL GRANT of 16 bits, + with redundency version list for one transmission. + This should result in a grant suitable for MAC to send Padding BSR; + @sic R5w100214 slide 3/4 => cs_DciUlInfo_ContentionResolution replaced by cs_DciInfo_CcchDcchDtchUL_Explicit sic@ */ + } + }; + + template (value) ContentionResolutionCtrl_Type cs_ContReslCtrl_None_TCRNTI := + { /* results in no Contention resolution for T-CRNTI */ + /* @status APPROVED (LTE, LTE_A) */ + TCRNTI_Based := { + NoContResolID := true //SS shall not include contention resolution ID + } + }; + + template (value) RachProcedureConfig_Type cs_RachProcedureConfig_Def(template (omit) RACH_ConfigCommon_Type p_RACH_ConfigCommon, + RACH_TimingAdvance_Type p_RAR_TA, + Dl_Bandwidth_Type p_Dl_Bandwidth, // @sic R5-103846 sic@ + template (value) ContentionResolution_ContainedRlcPdu_Type p_ContainedRlcPdu := cs_ContentionResolution_RlcPdu_None) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5-120721 change 3: parameter p_ContainedRlcPdu sic@ */ + RACH_ConfigCommon := p_RACH_ConfigCommon, + RACH_ConfigDedicated := omit, + RachProcedureList := { + { + RAResponse := cs_RandomAccessResponseConfig_Def (p_RAR_TA, p_Dl_Bandwidth), + ContentionResolutionCtrl := cs_ContentionResolutionCtrl_Def(p_ContainedRlcPdu) + } + } + }; + + template (value) RachProcedureConfig_Type cs_RachProcedureConfig_CRNTI(RACH_TimingAdvance_Type p_RAR_TA, + Dl_Bandwidth_Type p_Dl_Bandwidth, // @sic R5-103846 sic@ + integer p_RA_GrantRIV := 0, // => RB start=0, Nprb=1 + integer p_RA_GrantIMCS := 4, // Imcs=4 => Grant = 56 bits + ImcsValue_Type p_InitalGrantIMCS := 0, // minimum grant per default + integer p_InitalGrantNprb:= 1) := // minimum grant per default + { /* @sic R5s100430 Additional Changes: merge of cs_RachProcedureConfig_CRNTI_Def and cs_RachProcedureConfig_CRNTI_InitialGrant sic@ */ + /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + RACH_ConfigCommon := omit, // not change from initial value + RACH_ConfigDedicated := omit, + RachProcedureList := { + { + RAResponse := cs_RandomAccessResponseConfig_Def(p_RAR_TA, p_Dl_Bandwidth, p_RA_GrantRIV, p_RA_GrantIMCS), + ContentionResolutionCtrl := cs_ContReslCtrl_CRNTI (p_InitalGrantIMCS, p_InitalGrantNprb) + } + } + }; + + template (value) RachProcedureConfig_Type cs_RachProcedureConfig_CRNTI_HO(RACH_TimingAdvance_Type p_RAR_TA, + Dl_Bandwidth_Type p_Dl_Bandwidth) := + /* IMCS := 3, Nprb := 2 => grant of 104 bits (see 36.213 Table 7.1.7.2.1-1 */ + /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + cs_RachProcedureConfig_CRNTI(p_RAR_TA, p_Dl_Bandwidth, -, -, 3, 2); + + + template (value) RachProcedureConfig_Type cs_RachProcedureConfig_NoResponse(Dl_Bandwidth_Type p_Dl_Bandwidth) := + { /* Rach Response config for sending no response to UE */ + /* @status APPROVED (LTE, LTE_A) */ + RACH_ConfigCommon := omit, + RACH_ConfigDedicated := omit, + RachProcedureList := { + { // preamble reception 1. No RAR Tx & no Contention Resolution + RAResponse := cs_RandomAccessResponseConfig_None (p_Dl_Bandwidth), + ContentionResolutionCtrl := cs_ContReslCtrl_None_TCRNTI + } + } + }; + + template (value) DrxCtrl_Type cs_DrxCtrl_None := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + None := true + }; + + template (value) DrxCtrl_Type cs_DrxCtrl_Config(template (value) DRX_Config p_DRX_Config) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Config := { + R8 := p_DRX_Config + } + }; + + template (value) MeasGapCtrl_Type cs_MeasGapCtrl_None := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + None := true + }; + + template (value) MeasGapCtrl_Type cs_MeasGapCtrl_Config(template (value) MeasGapConfig p_MeasGapConfig) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + Config := { + R8 := p_MeasGapConfig + } + }; + + template (value) SYSTEM_CTRL_REQ cas_CellConfig_NoULFreq_REQ(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (value) StaticCellInfo_Type p_StaticCellInfo, + template (value) AllSiSchedul_Type p_SiSchedul, + EUTRA_CellInfo_Type p_CellInfo, + template (omit) CA_CellInitialConfig_Type p_CA_CellInitialConfig := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, p_TimingInfo), + Request := { + Cell := { + AddOrReconfigure := { + Basic := { + ConfigCapability := p_CellInfo.CellConfigCapability, + StaticCellInfo := p_StaticCellInfo, + PhysicalLayerConfigDL := cs_PhysicalLayerConfigDL(p_CellInfo.FDD_TDD_Info.FDD_TDD, + p_CellInfo.Frequency.DL_ChBandwidth, + cs_PHICH_Config_r8(p_CellInfo.Sysinfo.BCCH_Info.MIB.message_.phich_Config), + p_CellInfo.PhysicalParameters.Cfi, + p_CellInfo.AntennaInfo.SS_AntennaInfoCommon), + InitialCellPower := { + MaxReferencePower := p_CellInfo.ReferencePower.MaxReferencePower, + Attenuation := p_CellInfo.ReferencePower.Attenuation + }, + BcchConfig := { + Pbch := true, + Pdsch := { + Sib1Schedul := { + DciInfo := cs_DciInfo_Sib1 + }, + SiSchedul := p_SiSchedul + }, + BcchInfo := p_CellInfo.Sysinfo.BCCH_Info, + StopSib1Transmission := omit + }, + PcchConfig := { + DciInfo := cs_DciInfo_Pcch (p_CellInfo.Frequency.DL_ChBandwidth) + }, + CA_CellInitialConfig := p_CA_CellInitialConfig + }, + Active := { + C_RNTI := p_CellInfo.RNTI.C_RNTI, + PhysicalLayerConfigUL := omit, + RachProcedureConfig := omit, + CcchDcchDtchConfig := { + MeasGapCtrl := cs_MeasGapCtrl_None, + DL := { + DciInfo := { Auto := cs_DciInfo_CcchDcchDtchDL(p_CellInfo.Frequency.DL_ChBandwidth)}, + AntennaInfo := cs_AntennaInfoDedicated_r8andLater( p_CellInfo.AntennaInfo.SS_AntennaInfoDedicated), + HarqProcessConfig := { + AllProcesses := true + } + }, + UL := { + DciInfo := cs_DciInfo_CcchDcchDtchUL_Def, + Hopping := { + Deactivated := true + }, + PUCCH_Synch := { None := true}, + UL_GrantConfig := { None := true} + }, + DrxCtrl := cs_DrxCtrl_None, /* no connected mode DRX configured per default */ + TtiBundling := cs_TTI_BundlingConfig_r8(false), + CifPresence := omit + }, + ServingCellConfig := omit + } + } + } + } + }; + + template (value) SYSTEM_CTRL_REQ cas_CellConfig_Def_REQ(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (value) StaticCellInfo_Type p_StaticCellInfo, + template (value) AllSiSchedul_Type p_SiSchedul, + EUTRA_CellInfo_Type p_CellInfo, + template (value) ContentionResolution_ContainedRlcPdu_Type p_ContentionResolution_ContainedRlcPdu, + template (omit) CA_CellInitialConfig_Type p_CA_CellInitialConfig := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5w110104: MimoInfo removed from CcchDcchDtchConfigDL_Type sic@ */ + /* @sic R5-120721 change 3: parameter p_ContentionResolution_ContainedRlcPdu (either "none" or e.g. RRC Connection Setup to be sent in the sama MAC ODU as the Contention Resolution MAC CE sic@ */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, p_TimingInfo), + Request := { + Cell := { + AddOrReconfigure := { + Basic := { + ConfigCapability := p_CellInfo.CellConfigCapability, + StaticCellInfo := p_StaticCellInfo, + PhysicalLayerConfigDL := cs_PhysicalLayerConfigDL(p_CellInfo.FDD_TDD_Info.FDD_TDD, + p_CellInfo.Frequency.DL_ChBandwidth, + cs_PHICH_Config_r8(p_CellInfo.Sysinfo.BCCH_Info.MIB.message_.phich_Config), + p_CellInfo.PhysicalParameters.Cfi, + p_CellInfo.AntennaInfo.SS_AntennaInfoCommon), + InitialCellPower := { + MaxReferencePower := p_CellInfo.ReferencePower.MaxReferencePower, + Attenuation := p_CellInfo.ReferencePower.Attenuation + }, + BcchConfig := { + //Sib2Config := cs_BCCH_Configuration, + Pbch := true, /* no configuration parameters required */ + Pdsch := { + Sib1Schedul := { + DciInfo := cs_DciInfo_Sib1 + }, + SiSchedul := p_SiSchedul + }, + BcchInfo := p_CellInfo.Sysinfo.BCCH_Info, + StopSib1Transmission := omit + }, + PcchConfig := { + DciInfo := cs_DciInfo_Pcch (p_CellInfo.Frequency.DL_ChBandwidth) + }, + CA_CellInitialConfig := p_CA_CellInitialConfig + }, + Active := { + C_RNTI := p_CellInfo.RNTI.C_RNTI, + PhysicalLayerConfigUL := { + Prach := cs_PRACH_Config_r8( cs_PRACH_Config_Def( p_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon.prach_Config)), + Pucch := { + Common := cs_PUCCH_ConfigCommon_r8( p_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon.pucch_ConfigCommon), /* @sic R5s100135 sic@ */ + Dedicated := cs_PUCCH_ConfigDedicated_r8( p_CellInfo.FDD_TDD_Info.pucch_Config) + }, + Pusch := { + Common := cs_PUSCH_ConfigCommon_r8( p_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon.pusch_ConfigCommon), /* @sic R5s100135 sic@ */ + Dedicated := cs_PUSCH_ConfigDedicated_r8( cs_508_PUSCH_ConfigDedicated_Default) + }, + TimingAdvance := { + InitialValue := 0 + }, + SRS_UL_Config := { + Common := cs_SoundingRS_UL_ConfigCommon_r8( p_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon.soundingRS_UL_ConfigCommon), /* @sic R5s100135 sic@ */ + Dedicated := cs_SoundingRS_UL_ConfigDedicated_r8( p_CellInfo.FDD_TDD_Info.soundingRS_UL_Config) + }, + SR_Config := cs_SchedulingRequestConfig_r8( cs_508_SchedulingRequest_Config_Default (p_CellInfo.PhysicalParameters.sr_PUCCH_ResourceIndex, p_CellInfo.FDD_TDD_Info.sr_ConfigIndex)), // @sic R5s090312 R5-102177 sic@ + CQI_ReportConfig := cs_CQI_ReportConfig_r8andLater( cs_508_CQI_ReportConfig_Default(p_CellInfo.FDD_TDD_Info.cqi_ReportConfig)), + UplinkPowerControlCommon := cs_UplinkPowerControlCommon_r8(p_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon.uplinkPowerControlCommon), /* @sic R5s100135 sic@ */ + UplinkPowerControlDedicated := cs_UplinkPowerControlDedicated_r8(cs_508_UplinkPowerControlDedicated_Default) + }, + RachProcedureConfig := cs_RachProcedureConfig_Def( cs_RACH_ConfigCommon_r8(p_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon.rach_ConfigCommon), + p_CellInfo.PhysicalParameters.RAR_TA, + p_CellInfo.Frequency.DL_ChBandwidth, /* @sic R5s100135 sic@ */ + p_ContentionResolution_ContainedRlcPdu), /* @sic R5-120721 change 3 sic@ */ + CcchDcchDtchConfig := { + MeasGapCtrl := cs_MeasGapCtrl_None, /* @sic R5s110743 sic@ */ + DL := { + DciInfo := { Auto := cs_DciInfo_CcchDcchDtchDL(p_CellInfo.Frequency.DL_ChBandwidth)}, + AntennaInfo := cs_AntennaInfoDedicated_r8andLater( p_CellInfo.AntennaInfo.SS_AntennaInfoDedicated), + HarqProcessConfig := { /* @sic R5w100214, R5w100220 sic@ */ + AllProcesses := true + } + }, + UL := { + DciInfo := cs_DciInfo_CcchDcchDtchUL_Def, + Hopping := { + Deactivated := true // FFS + }, + PUCCH_Synch := { None := true}, + UL_GrantConfig := { None := true} + }, + DrxCtrl := cs_DrxCtrl_None, /* no connected mode DRX configured per default */ + TtiBundling := cs_TTI_BundlingConfig_r8(false), + CifPresence := omit + }, + ServingCellConfig := omit + } + } + } + } + }; + + //---------------------------------------------------------------------------- + + template (value) SYSTEM_CTRL_REQ cas_DrxCtrl_REQ(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (value) DrxCtrl_Type p_DrxCtrl, + template (omit) boolean p_CnfFlag := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5s100801, R5s110634 additional changes: optional parameter p_CnfFlag sic@ */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, p_TimingInfo, p_CnfFlag), + Request := { + Cell := { + AddOrReconfigure := { + Basic := omit, + Active := { + C_RNTI := omit, + PhysicalLayerConfigUL := omit, + RachProcedureConfig := omit, + CcchDcchDtchConfig := { + MeasGapCtrl := omit, + DL := omit, + UL := omit, + DrxCtrl := p_DrxCtrl, + TtiBundling := omit, + CifPresence := omit + }, + ServingCellConfig := omit + } + } + } + } + }; + + //---------------------------------------------------------------------------- + + template (value) SYSTEM_CTRL_REQ cas_MeasGapCtrl_REQ(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (value) MeasGapCtrl_Type p_MeasGapCtrl, + template (omit) boolean p_CnfFlag := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, p_TimingInfo, p_CnfFlag), + Request := { + Cell := { + AddOrReconfigure := { + Basic := omit, + Active := { + C_RNTI := omit, + PhysicalLayerConfigUL := omit, + RachProcedureConfig := omit, + CcchDcchDtchConfig := { + MeasGapCtrl := p_MeasGapCtrl, /* @sic R5s110743 sic@ */ + DL := omit, + UL := omit, + DrxCtrl := omit, + TtiBundling := omit, + CifPresence := omit + }, + ServingCellConfig := omit + } + } + } + } + }; + + //---------------------------------------------------------------------------- + + template (value) ActiveCellConfig_Type cs_NewC_RNTI_ConfigReq(template (value) C_RNTI p_CRNTI) := + { /* @status APPROVED (LTE) */ + C_RNTI := p_CRNTI, + PhysicalLayerConfigUL := omit, + RachProcedureConfig := omit, + CcchDcchDtchConfig := omit, + ServingCellConfig := omit + }; + + template (value) SYSTEM_CTRL_REQ cas_ActiveCellConfig_REQ(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (value) ActiveCellConfig_Type p_ActiveCellConfig) := + { /* @status APPROVED (LTE) */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, p_TimingInfo), + Request := { + Cell := { + AddOrReconfigure := { + Basic := omit, + Active := p_ActiveCellConfig + } + } + } + }; + + //---------------------------------------------------------------------------- + + template (value) SYSTEM_CTRL_REQ cas_ULGrantAllocation_REQ(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (omit) DciUlInfo_Type p_DciUlInfo := cs_DciInfo_CcchDcchDtchUL_Def, + template (omit) PUCCH_Synch_Type p_PUCCH_Synch, + template (omit) UL_GrantConfig_Type p_UL_GrantConfig := cs_UL_GrantConfig_Def, + template (omit) boolean p_CnfFlag := omit) := + { /* @desc common template to be used in all UL grant configurations */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5s110634 additional changes: optional parameter p_CnfFlag sic@ */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, p_TimingInfo, p_CnfFlag), + Request := { + Cell := { + AddOrReconfigure := { + Basic := omit, + Active := { + C_RNTI := omit, + PhysicalLayerConfigUL := omit, + RachProcedureConfig := omit, + CcchDcchDtchConfig := { + MeasGapCtrl := omit, + DL := omit, + UL := { + DciInfo := p_DciUlInfo, + Hopping := { + Deactivated := true + }, + PUCCH_Synch := p_PUCCH_Synch, + UL_GrantConfig := p_UL_GrantConfig + }, + DrxCtrl := omit, + TtiBundling := omit, + CifPresence := omit + }, + ServingCellConfig := omit + } + } + } + } + }; + + //---------------------------------------------------------------------------- + + template (value) SYSTEM_CTRL_REQ cas_ULGrantAllocation_Def_REQ(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (value) PUCCH_Synch_Type p_PUCCH_Synch) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* ASP to configure UL Grant and enable default UL allocation */ + cas_ULGrantAllocation_REQ(p_CellId, p_TimingInfo, -, p_PUCCH_Synch); + + //---------------------------------------------------------------------------- + + template (value) SYSTEM_CTRL_REQ cas_ULGrantAllocation_Stop_REQ(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* ASP to configure disable default UL Grant and PUCCH synchronisation */ + cas_ULGrantAllocation_REQ(p_CellId, p_TimingInfo, omit, cs_PUCCH_Synch_None, cs_UL_GrantConfig_Stop); + + //---------------------------------------------------------------------------- + + template (value) SYSTEM_CTRL_REQ cas_PUCCH_Synch_Config_REQ(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (value) PUCCH_Synch_Type p_PUCCH_Synch, + template (omit) boolean p_CnfFlag := omit) := + /* ASP to configure PUCCH_Synch */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5s100801, R5s110634 additional changes: optional parameter p_CnfFlag sic@ */ + cas_ULGrantAllocation_REQ(p_CellId, p_TimingInfo, omit, p_PUCCH_Synch, omit, p_CnfFlag); + + //---------------------------------------------------------------------------- + + template (value) SYSTEM_CTRL_REQ cas_CellConfig_Power_REQ(template (value) CellAttenuationList_Type p_CellAttenuationList, + template (value) TimingInfo_Type p_TimingInfo, + EUTRA_CellId_Type p_CellId := eutra_Cell_NonSpecific, + template (omit) boolean p_CnfFlag := omit) := + { /* ASPs to modify cell power */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5-110877: in context with adjusting power levels of multiple cells usage of cas_CellConfig_Power_REQ is corrected acc. to ASP documentation sic@ */ + /* @sic R5s110634 additional changes: optional parameter p_CnfFlag sic@ */ + Common := cs_ReqAspCommonPart_CellCfg( p_CellId, p_TimingInfo, p_CnfFlag), + Request := { + CellAttenuationList := p_CellAttenuationList + } + }; + + //---------------------------------------------------------------------------- + + template (value) SYSTEM_CTRL_REQ cas_ModifySysinfo_Def_REQ(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (value) AllSiSchedul_Type p_SiSchedul, /* scheduling of SIs */ + template (value) BcchInfo_Type p_BcchInfo, + Dl_Bandwidth_Type p_Dl_Bandwidth, + template (omit) Null_Type p_StopSib1Transmission := omit //@sic R5-142409 sic@ + ) := // @sic R5-103846 sic@ + { /* ASPs to modify system information */ + /* @status APPROVED (IMS, LTE, LTE_A, LTE_IRAT) */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, p_TimingInfo, tsc_NoCnfReq), + Request := { + Cell := { + AddOrReconfigure := { + Basic := { + ConfigCapability := omit, + StaticCellInfo := omit, + PhysicalLayerConfigDL := omit, + InitialCellPower := omit, + BcchConfig := { + //Sib2Config := cs_BCCH_Configuration, + Pbch := true, /* no configuration parameters required */ + Pdsch := { + Sib1Schedul := { + DciInfo := cs_DciInfo_Sib1 + }, + SiSchedul := p_SiSchedul + }, + BcchInfo := p_BcchInfo, + StopSib1Transmission := p_StopSib1Transmission + }, + PcchConfig := { + DciInfo := cs_DciInfo_Pcch(p_Dl_Bandwidth) + }, + CA_CellInitialConfig := omit + }, + Active := omit + } + } + } + }; + + // ------------------------------------------------------------------- + template (value) SYSTEM_CTRL_REQ cas_CellConfig_UpdatePRACH_Info_REQ(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + PRACH_ConfigSIB p_PRACH_ConfigSIB) := + { /* @status APPROVED (LTE) */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, p_TimingInfo), + Request := { + Cell := { + AddOrReconfigure := { + Basic := omit, + Active := { + C_RNTI := omit, + PhysicalLayerConfigUL := { + Prach := cs_PRACH_Config_r8(cs_PRACH_Config_Def(p_PRACH_ConfigSIB)), + Pucch := omit, + Pusch := omit, + TimingAdvance := omit, + SRS_UL_Config := omit, + SR_Config := omit, + CQI_ReportConfig := omit, + UplinkPowerControlCommon := omit, + UplinkPowerControlDedicated := omit + }, + RachProcedureConfig := omit, + CcchDcchDtchConfig := omit, + ServingCellConfig := omit + } + } + } + } + }; + + template (value) RachProcedureConfig_Type cs_RachProcedureConfig_CRNTI_Dedicated(RACH_TimingAdvance_Type p_RAR_TA, + Dl_Bandwidth_Type p_Dl_Bandwidth, // @sic R5-103846 sic@ + template (value) RACH_ConfigDedicated p_Rach_ConfigDedicated := cs_RACH_ConfigDedicated) := //@sic R5s100496 cl. 4.3 sic@ + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + RACH_ConfigCommon := omit, // not change from initial value + RACH_ConfigDedicated := cs_RACH_ConfigDedicated_r8(p_Rach_ConfigDedicated), + RachProcedureList := { + { + RAResponse := cs_RandomAccessResponseConfig_Def(p_RAR_TA, p_Dl_Bandwidth), + ContentionResolutionCtrl := cs_ContReslCtrl_CRNTI_None // as dedicated resource indicated hence no PDCCH address for UE needed. + } + } + }; + + template (value) RA_PDCCH_Order_Type cs_RA_PDCCH_Order (template (value) PrachPreambleIndex_Type p_PreambleIndex := tsc_EUTRA_PrachPreambleIndex_Dedicated_Def, + template (value) PrachMaskIndex_Type p_PrachMaskIndex := 0) := /* see also 36.212 cl. 5.3.3.1.3 */ + { /* @status APPROVED (LTE) */ + /* @sic R5s100138 change 5: additional comments sic@ */ + PreambleIndex := p_PreambleIndex, /* naming acc. 36.212 cl. 5.3.3.1.3 */ + PrachMaskIndex := p_PrachMaskIndex /* naming acc. 36.212 cl. 5.3.3.1.3 */ + }; + + template (value) SYSTEM_CTRL_REQ cas_RA_PDCCH_Order(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (value) RA_PDCCH_Order_Type p_RA_PDCCH_Order) := + { /* @status APPROVED (LTE) */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, p_TimingInfo, tsc_NoCnfReq), //@sic Baseline R5s100135 sic@ + Request := { + PdcchOrder := p_RA_PDCCH_Order + } + }; + + template (value) ContentionResolutionCtrl_Type cs_ContReslCtrl_CRNTI_None := + { /* results in no Contention resolution for T-CRNTI */ + /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + CRNTI_Based := { + None := true + } + }; + + template (value) PhysicalLayerConfigDL_Type cs_PhysicalLayerConfigDL_AntennaInfo(template (omit) DownlinkAntennaGroupConfig_Type p_DownlinkAntennaGroupConfig) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + AntennaGroup := p_DownlinkAntennaGroupConfig, + Pbch := omit, + Pcfich := omit, + Phich := omit, + Pdcch := omit, + Pdsch := omit, + Pss := omit, + Sss := omit, + CSI_RS_Config := omit, + Pmch := omit, + Epdcch := omit + }; + + template (value) SYSTEM_CTRL_REQ cas_PhysicalLayerConfigDL_CcchDcchDtchDL_Config_REQ(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (value) PhysicalLayerConfigDL_Type p_PhysicalLayerConfigDL, + template (omit) DciDlInfo_Type p_DciDlInfo := omit, + template (omit) AntennaInfoDedicated_Type p_AntennaInfoDedicated_r8andLater := omit, + template (omit) HarqProcessConfigDL_Type p_HarqProcessConfigDL := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, p_TimingInfo), + Request := { + Cell := { + AddOrReconfigure := { + Basic := { + ConfigCapability := omit, + StaticCellInfo := omit, + PhysicalLayerConfigDL := p_PhysicalLayerConfigDL, + InitialCellPower := omit, + BcchConfig := omit, + PcchConfig := omit, + CA_CellInitialConfig := omit + }, + Active := { + C_RNTI := omit, + PhysicalLayerConfigUL := omit, + RachProcedureConfig := omit, + CcchDcchDtchConfig := { + MeasGapCtrl := omit, + DL := { + DciInfo := p_DciDlInfo, + AntennaInfo := p_AntennaInfoDedicated_r8andLater, + HarqProcessConfig := p_HarqProcessConfigDL + }, + UL := omit, + DrxCtrl := omit, + TtiBundling := omit, + CifPresence := omit + }, + ServingCellConfig := omit + } + } + } + } + }; + +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA_Templates/EUTRA_DRB_Templates.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA_Templates/EUTRA_DRB_Templates.ttcn new file mode 100644 index 0000000..8532b55 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA_Templates/EUTRA_DRB_Templates.ttcn @@ -0,0 +1,419 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 22:08:20 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12181 $ +/******************************************************************************/ + +module EUTRA_DRB_Templates +{ + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from EUTRA_ASP_TypeDefs all; + import from EUTRA_ASP_DrbDefs all; + import from EUTRA_AspCommon_Templates all; + + //========================================================================= + // Constants + //========================================================================= + + const integer tsc_LogicalChannelPriorityLo := 13; /* According to 36.508 cl. 4.8.2.1.4 Table 4.8.2.1.4-1; @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + const integer tsc_LogicalChannelPriorityHi := 6; /* According to 36.508 cl. 4.8.2.1.4 Table 4.8.2.1.4-1; @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + + //========================================================================= + // Templates + //========================================================================= + + template (value) PDCP_Config cs_508_PDCP_Config_DRB_UM := + { /* Default values according to 36.508 cl. 4.8.2.1.2.1 Table 4.8.2.1.2.1-1 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + discardTimer := ms100, + rlc_AM := omit, + rlc_UM := { + pdcp_SN_Size := len12bits + }, + headerCompression := { + notUsed := NULL + }, + rn_IntegrityProtection_r10 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ */ + pdcp_SN_Size_v1130 := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + }; + + + + template (value) PDCP_Config cs_508_PDCP_Config_DRB_AM := + { /* Default values according to 36.508 cl. 4.8.2.1.2.2 Table 4.8.2.1.2.2-1 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + discardTimer := infinity_, + rlc_AM := { + statusReportRequired := true + }, + rlc_UM := omit, + headerCompression := { + notUsed := NULL + }, + rn_IntegrityProtection_r10 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ */ + pdcp_SN_Size_v1130 := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + }; + + template (value) UL_AM_RLC cs_508_DRB_UL_AM_RLC := + { /* Default values according to 36.508 cl. 4.8.2.1.3.2 Table 4.8.2.1.3.2-1 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + t_PollRetransmit := ms80, + pollPDU := p128, + pollByte := kB125, + maxRetxThreshold := t4 + }; + + template (value) DL_AM_RLC cs_508_DRB_DL_AM_RLC := + { /* Default values according to 36.508 cl. 4.8.2.1.3.2 Table 4.8.2.1.3.2-1 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + t_Reordering := ms80, + t_StatusProhibit := ms60 + }; + + template (value) UL_UM_RLC cs_508_DRB_UL_UM_RLC := + { /* Default values according to 36.508 cl. 4.8.2.1.3.1 Table 4.8.2.1.3.1-1 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + sn_FieldLength := size10 + }; + + template (value) DL_UM_RLC cs_508_DRB_DL_UM_RLC := + { /* Default values according to 36.508 cl. 4.8.2.1.3.1 Table 4.8.2.1.3.1-1 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + sn_FieldLength := size10, + t_Reordering := ms50 + }; + + template (value) DL_UM_RLC cds_RX_UM_RLC_DRB_SN10_tReord55ms modifies cs_508_DRB_DL_UM_RLC := + { /* @status APPROVED (LTE, LTE_IRAT) */ + t_Reordering := ms55 + }; + + template (value) RLC_Config cs_508_RLC_Config_DRB_UM(template (value) UL_UM_RLC p_DRB_UL_UM_RLC := cs_508_DRB_UL_UM_RLC, + template (value) DL_UM_RLC p_DRB_DL_UM_RLC := cs_508_DRB_DL_UM_RLC) := + + { /* Default values according to 36.508 cl. 4.8.2.1.3.1 Table 4.8.2.1.3.1-1 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5s100469 Additional Changes sic@ */ + um_Bi_Directional := { + ul_UM_RLC := p_DRB_UL_UM_RLC, + dl_UM_RLC := p_DRB_DL_UM_RLC + } + }; + + template (value) RLC_Config cs_508_RLC_Config_DRB_AM(template (value) UL_AM_RLC p_DRB_UL_AM_RLC := cs_508_DRB_UL_AM_RLC, + template (value) DL_AM_RLC p_DRB_DL_AM_RLC := cs_508_DRB_DL_AM_RLC) := + { /* Default values according to 36.508 cl. 4.8.2.1.3.2 Table 4.8.2.1.3.2-1 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5s100469 Additional Changes sic@ */ + am := { + ul_AM_RLC := p_DRB_UL_AM_RLC, + dl_AM_RLC := p_DRB_DL_AM_RLC + } + }; + + template (value) RLC_Configuration_Type cs_RLC_Configuration_AM(template (value) UL_AM_RLC p_DRB_UL_AM_RLC := cs_508_DRB_UL_AM_RLC, + template (value) DL_AM_RLC p_DRB_DL_AM_RLC := cs_508_DRB_DL_AM_RLC) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5s100469 Additional Changes sic@ */ + Rb := { + AM := { + Tx := cs_UL_AM_RLC_r8(p_DRB_UL_AM_RLC), + Rx := cs_DL_AM_RLC_r8(p_DRB_DL_AM_RLC) + } + }, + TestMode := { + None := true //as this template is not to be used for RLC testing + } + }; + + template (value) RLC_Configuration_Type cs_RLC_Configuration_UM(template (value) UL_UM_RLC p_DRB_UL_UM_RLC := cs_508_DRB_UL_UM_RLC, + template (value) DL_UM_RLC p_DRB_DL_UM_RLC := cs_508_DRB_DL_UM_RLC) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5s100469 Additional Changes sic@ */ + Rb := { + UM := { + Tx := cs_UL_UM_RLC_r8(p_DRB_UL_UM_RLC), + Rx := cs_DL_UM_RLC_r8(p_DRB_DL_UM_RLC) + } + }, + TestMode := { + None := true //as this template is not to be used for RLC testing + } + }; + + template (value) LogicalChannelConfig cs_508_LogicalChannelConfig_DRB_AM(integer p_Priority := tsc_LogicalChannelPriorityLo, + PrioritizedBitRate_Type p_PrioritizedBitRate := kBps0, // @sic R5-131806 sic@ + integer p_LCG := 2) := + { /* Default values according to 36.508 cl. 4.8.2.1.4 Table 4.8y.2.1.4-1 (using condition LO) */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + ul_SpecificParameters := { + priority :=p_Priority , + prioritisedBitRate := p_PrioritizedBitRate, + bucketSizeDuration := ms100, + logicalChannelGroup := p_LCG + }, + logicalChannelSR_Mask_r9 := omit /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + }; + + template (value) LogicalChannelConfig cs_508_LogicalChannelConfig_DRB_UM := + { /* Default values according to 36.508 cl. 4.8.2.1.4 Table 4.8.2.1.4-1 (using condition HI) */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + ul_SpecificParameters := { + priority := tsc_LogicalChannelPriorityHi, + prioritisedBitRate := kBps0, // @sic R5-131806 sic@ + bucketSizeDuration := ms100, + logicalChannelGroup := 1 + }, + logicalChannelSR_Mask_r9 := omit /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + }; + + template (value) MAC_Configuration_Type cs_MAC_Configuration(integer p_Priority, + PrioritizedBitRate_Type p_PrioritizedBitRate := kBps0) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + LogicalChannel := { + Priority := p_Priority, + PrioritizedBitRate := p_PrioritizedBitRate // kBps0 per default + }, + TestMode := { + None := true //as this template is not to be used for MAC testing + } + }; + + template (value) MAC_Configuration_Type cs_MAC_Configuration_AM := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + cs_MAC_Configuration(tsc_LogicalChannelPriorityLo); + + template (value) MAC_Configuration_Type cs_MAC_Configuration_UM := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cs_MAC_Configuration(tsc_LogicalChannelPriorityHi); + + template (value) RadioBearer_Type cs_OneDRB_ConfigUM(DRB_Identity p_Drb, + template (value) PDCP_Config p_PdcpConfig := cs_508_PDCP_Config_DRB_UM, + template (value) RLC_Configuration_Type p_RlcConfig := cs_RLC_Configuration_UM, + template (omit) boolean p_DiscardULData := omit) := + { /* To configure 1 UM DRB in SS. Parameters according to 36.508 cl. 4.8.2.1.7 */ + /* @sic R5s100076: optional parameters p_PdcpConfig, p_RlcConfig sic@ */ + /* @sic R5s130681: optional parameter p_DiscardULData sic@ */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + Id := { + Drb := p_Drb + }, + Config := { + AddOrReconfigure := { + Pdcp := { + Config := { + Rb := { + Drb := cs_PDCP_Config_r8(p_PdcpConfig) + }, + TestMode := { + None := true //as this template is not to be used for PDCP testing + } + } + }, + Rlc := p_RlcConfig, // @sic R5s090314: Additional comments sic@ + LogicalChannelId := p_Drb+2, + Mac := cs_MAC_Configuration_UM, // @sic R5s090314: Additional comments sic@ + DiscardULData := p_DiscardULData // @sic RAN5 #55 sidebar meeting sic@ + } + } + }; + + template (value) RadioBearer_Type cs_OneDRB_ConfigAM(DRB_Identity p_Drb, + template (value) PDCP_Config p_PdcpConfig := cs_508_PDCP_Config_DRB_AM, + template (value) RLC_Configuration_Type p_RlcConfig := cs_RLC_Configuration_AM, + template (value) MAC_Configuration_Type p_MacConfig := cs_MAC_Configuration_AM) := + { /* To configure 1 AM DRB in SS. Parameters according to 36.508 cl. 4.8.2.1.7 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5s100469 Additional Changes sic@ */ + Id := { + Drb := p_Drb + }, + Config := { + AddOrReconfigure := { + Pdcp := { + Config := { + Rb := { + Drb := cs_PDCP_Config_r8(p_PdcpConfig) + }, + TestMode := { + None := true //as this template is not to be used for PDCP testing + } + } + }, + Rlc := p_RlcConfig, // @sic R5s090314: Additional comments sic@ + LogicalChannelId := p_Drb+2, + Mac := p_MacConfig, // @sic R5s090314: Additional comments sic@ + DiscardULData := omit // @sic RAN5 #55 sidebar meeting sic@ + } + } + }; + + template (value) RadioBearerList_Type cs_DrbConfigList_Def := { cs_OneDRB_ConfigAM(tsc_DRB1) }; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + + template (value) RadioBearer_Type cs_DRB_Release(DRB_Identity p_Drb) := + { /* To release the configured DRB in SS */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Id := { + Drb := p_Drb + }, + Config := { + Release := true + } + }; + + template (value) DRB_ToAddMod cs_508_DRB_ToAddMod_Common(DRB_Identity p_DRB_Id, + template (omit) PDCP_Config p_PDCP_Config, + template (omit) RLC_Config p_RLC_Config, + template (omit) LogicalChannelConfig p_LogicalChannelConfig) := + { /* common template which deals with assignment of eps_BearerIdentity and logicalChannelIdentity */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + eps_BearerIdentity := p_DRB_Id+4, + drb_Identity := p_DRB_Id, + pdcp_Config := p_PDCP_Config, + rlc_Config := p_RLC_Config, + logicalChannelIdentity := p_DRB_Id+2, + logicalChannelConfig := p_LogicalChannelConfig + }; + + template (value) DRB_ToAddMod cs_508_DRB_ToAddMod_DEFAULT_AM (DRB_Identity p_DRB_Id) := + /* According to 36.508 cl. 4.8.2.1.7 Table 4.8.2.1.7-1 (using condition AM) */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + cs_508_DRB_ToAddMod_Common(p_DRB_Id, + cs_508_PDCP_Config_DRB_AM, + cs_508_RLC_Config_DRB_AM, + cs_508_LogicalChannelConfig_DRB_AM); + + template (value) DRB_ToAddMod cs_508_DRB_ToAddMod_DEFAULT_UM (DRB_Identity p_DRB_Id) := + /* According to 36.508 cl. 4.8.2.1.7 Table 4.8.2.1.7-1 (using condition UM) */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + cs_508_DRB_ToAddMod_Common(p_DRB_Id, + cs_508_PDCP_Config_DRB_UM, + cs_508_RLC_Config_DRB_UM, + cs_508_LogicalChannelConfig_DRB_UM); + + //**************************************************************************** + // RECONFIG DRB templates (36.508 cl. 4.6.3) + //---------------------------------------------------------------------------- + + template (value) PDCP_Config cds_PDCP_Config_DRB_AM_NoPDCP_StatusReport + modifies cs_508_PDCP_Config_DRB_AM := + { /* Default values according to 36.508 cl. 4.8.2.1.2.2 Table 4.8.2.1.2.2-1 */ + /* except PDCP status report NOT required */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + rlc_AM := { + statusReportRequired := false + } + }; + + template (value) DRB_ToAddMod cs_DRB_ToAddMod_NoPDCP_StatusReport (DRB_Identity p_DRB_Id) := + /* According to 36.508 cl. 4.8.2.1.7 Table 4.8.2.1.7-1 (using condition AM) */ + /* except PDCP status report NOT required */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + cs_508_DRB_ToAddMod_Common(p_DRB_Id, + cds_PDCP_Config_DRB_AM_NoPDCP_StatusReport, + cs_508_RLC_Config_DRB_AM, + cs_508_LogicalChannelConfig_DRB_AM); + + template (value) DRB_ToAddMod cs_508_DRB_ToAddMod_RECONFIG(DRB_Identity p_DRB_Id, + template (value) RLC_Config p_RLC_Config) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + eps_BearerIdentity := omit, + drb_Identity := p_DRB_Id, + pdcp_Config := omit, + rlc_Config := p_RLC_Config, + logicalChannelIdentity := omit, + logicalChannelConfig := omit + }; + + template (value) DRB_ToAddModList cs_508_DRB_ToAddModList_RECONFIG := + { /* Default values according to 36.508 cl. 4.6.3 Table 4.6.3-2A */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5s110313 sic@ */ + cs_508_DRB_ToAddMod_RECONFIG(1, cs_508_RLC_Config_DRB_AM_RECONFIG), + cs_508_DRB_ToAddMod_RECONFIG(2, cs_508_RLC_Config_DRB_AM_RECONFIG) // @sic R5-100487 sic@ + }; + + template (value) DRB_ToAddModList cs_508_DRB_ToAddModList_RECONFIG_UM := + { /* @status APPROVED (LTE, LTE_IRAT) */ + cs_508_DRB_ToAddMod_RECONFIG(1, cs_508_RLC_Config_DRB_AM_RECONFIG), + cs_508_DRB_ToAddMod_RECONFIG(2, cs_508_RLC_Config_DRB_UM_RECONFIG) + }; + + template (value) RLC_Config cs_508_RLC_Config_DRB_AM_RECONFIG := + { /* Default values according to 36.508 cl. 4.6.3 Table 4.6.3-19A */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + am := { + ul_AM_RLC := { + t_PollRetransmit := ms85, + pollPDU := p64, + pollByte := kB250, + maxRetxThreshold := t8 + }, + dl_AM_RLC := { + t_Reordering := ms85, + t_StatusProhibit := ms50 + } + } + }; + + template (value) RLC_Config cs_508_RLC_Config_DRB_UM_RECONFIG := + /* According to 36.508 cl. 4.6.3 Table 4.6.3-19B */ + /* @status APPROVED (LTE, LTE_IRAT) */ + cs_508_RLC_Config_DRB_UM(cs_508_DRB_UL_UM_RLC, cds_RX_UM_RLC_DRB_SN10_tReord55ms); + + template (value) HarqProcessAssignment_Type cs_HarqProcessAssignment_Automatic := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + Automatic := true + }; + + template (value) DRB_COMMON_REQ cas_DRB_COMMON_REQ_PDCP_SDU(EUTRA_CellId_Type p_CellId, + RadioBearerId_Type p_RB_Id, + template (value) TimingInfo_Type p_TimingInfo, + template (value) PDCP_SDUList_Type p_PDCP_SDUList, + template (value) HarqProcessAssignment_Type p_HarqProcess := cs_HarqProcessAssignment_Automatic, + integer p_SubframeOffset := 0) := + { /* Template for DRB Data REQ wih PDCP SDUs */ + /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + Common := cs_ReqAspCommonPart_RB(p_CellId, p_RB_Id, p_TimingInfo), + U_Plane := { + SubframeDataList := { + { + SubframeOffset := p_SubframeOffset, + HarqProcess := p_HarqProcess, + PduSduList := + { + PdcpSdu := p_PDCP_SDUList + } + } + } + }, + SuppressPdcchForC_RNTI := omit + }; + + template (present) DRB_COMMON_IND car_DRB_COMMON_IND_PDCP_SDUList(EUTRA_CellId_Type p_CellId, + template (present) RadioBearerId_Type p_RbId, + template (present) TimingInfo_Type p_TimingInfo, + template PDCP_SDUList_Type p_PDCP_SDUList) := + { /* common ASP to receive PDUs from DRBs */ + /* @status APPROVED (LTE, LTE_IRAT, LTE_A) */ + Common := cr_IndAspCommonPart_RB(p_CellId, p_RbId, p_TimingInfo), + U_Plane := { + SubframeData := { + //HarqProcessId := ?, + PduSduList := + { + PdcpSdu := p_PDCP_SDUList + }, + NoOfTTIs := ? + } + } + }; + +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA_Templates/EUTRA_Measurement_Templates.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA_Templates/EUTRA_Measurement_Templates.ttcn new file mode 100644 index 0000000..e79457b --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA_Templates/EUTRA_Measurement_Templates.ttcn @@ -0,0 +1,1741 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-07 18:37:49 +0200 (Sun, 07 Sep 2014) $ +// $Rev: 12081 $ +/******************************************************************************/ + +module EUTRA_Measurement_Templates +{ + +///////////////// +// Import Part // +///////////////// + + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_RRC_Templates all; + import from EUTRA_CommonDefs all; + import from CommonDefs all; + +///////////////////// +// Type Definition // +///////////////////// + + type integer UTRA_RSCP_Type (-5..91); /* @status APPROVED (LTE_A, LTE_IRAT) */ + type integer UTRA_EcN0_Type (0..49); /* @status APPROVED (LTE_A, LTE_IRAT) */ + type integer RSSI_Range_Type (0..63); /* @status APPROVED (LTE_A, LTE_IRAT) */ + type integer EUTRA_RS_EPRE_Type (-141..-44); /* Changed from formerly (-140..-43); @sic R5-090153 sic@ + @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + type integer UTRA_RSCP_dBm_Type (-116..-25); /* @status APPROVED (LTE_A, LTE_IRAT) */ + type integer UTRA_Ec_Io_dB_Type (-24..0); /* in dB + @status APPROVED (LTE_IRAT) */ + type integer GERAN_RSSI_dBm_Type (-110..-47); /* @status APPROVED (LTE_A, LTE_IRAT) */ + type integer A3_Offset_Type (-30..30); /* @status APPROVED (LTE, LTE_A) */ + type integer GapOffset_Gp0_Type (0..39); /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + type integer GapOffset_Gp1_Type (0..79); /* @status APPROVED (LTE_A, LTE_IRAT) */ + + type integer CDMA2000_PilotPnPhase (0..32767); /* @status APPROVED (LTE_IRAT) */ + type integer CDMA2000_PilotStrength (0..63); /* @status APPROVED (LTE_IRAT) */ + +//////////////////// +// Constants Part // +//////////////////// + + const integer tsc_V_Thres := 0; /* FFS dummy value */ + + const integer tsc_IdMeasObject_f1 := 1; /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + const integer tsc_IdMeasObject_f1_CGI := 17; + const integer tsc_IdMeasObject_f2 := 2; /* @status APPROVED (LTE, LTE_A) */ + const integer tsc_IdMeasObject_f3 := 3; /* @status APPROVED (LTE, LTE_A) */ + const integer tsc_IdMeasObject_f5 := 5; /* @status APPROVED (LTE, LTE_A) */ + const integer tsc_IdMeasObject_f6 := 6; /* @status APPROVED (LTE, LTE_A) */ + const integer tsc_IdMeasObject_f8 := 8; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const integer tsc_IdMeasObject_f8_CGI := 24; + const integer tsc_IdMeasObject_f10 := 10; /* @status */ + const integer tsc_IdMeasObject_f11 := 11; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const integer tsc_IdMeasObject_f11_CGI := 27; + const integer tsc_IdMeasObject_f12 := 12; /* @status APPROVED (LTE_IRAT) */ + const integer tsc_IdMeasObject_f13 := 13; /* @status */ + + const integer tsc_IdReportConfig_A1 := 1; /* @status APPROVED (LTE, LTE_A) */ + const integer tsc_IdReportConfig_A2 := 2; /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + const integer tsc_IdReportConfig_A3 := 3; /* @status APPROVED (LTE, LTE_A) */ + const integer tsc_IdReportConfigEUTRA_PERIODICAL := 4; /* @status APPROVED (LTE) */ + const integer tsc_IdReportConfig_B2_GERAN := 11; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const integer tsc_IdReportConfig_B2_UTRA := 12; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const integer tsc_IdReportConfigInterRAT_PERIODICAL := 10; /* @status APPROVED (LTE_IRAT) */ + const integer tsc_ReportConfigId_CGI := 5; /* @status APPROVED (LTE, LTE_IRAT) */ + const integer tsc_IdReportConfig_B1_UTRA := 13; /* @status APPROVED (LTE_IRAT) */ + const integer tsc_IdReportConfig_A4 := 6; /* @status APPROVED (LTE) */ + const integer tsc_IdReportConfig_A5 := 7; /* @status APPROVED (LTE, LTE_A) */ + + const MeasObjectId tsc_IdMeasObject_f14 := 14; /* @status APPROVED (LTE_IRAT) */ + const MeasObjectId tsc_IdMeasObject_f14_CGI := 30; /* Meas object Id for CDMA2000 CGI + @status (APPROVED) */ + const MeasObjectId tsc_IdMeasObject_f17 := 17; /* Meas object Id for CDMA2000 + @status APPROVED (LTE_IRAT) */ + const MeasObjectId tsc_IdMeasObject_f17_CGI := 32; /* Meas object Id for CDMA2000 CGI */ + const MeasId tsc_IdReportConfig_B2_CDMA2000 := 13; /* @status APPROVED (LTE_IRAT) */ + const MeasId tsc_IdReportConfig_f17 := 17; /* Report Config Id for CDMA2000 + @status APPROVED (LTE_IRAT) */ + //////////////////// + // Templates Part // + //////////////////// + + template (value) LongDrxCycleAndOffset_Type cs_LongDrxCycleAndOffset_sf2560_0 := { sf2560 := 0 }; /* @status APPROVED (LTE, LTE_IRAT) */ + template (value) LongDrxCycleAndOffset_Type cs_LongDrxCycleAndOffset_sf2560_4 := { sf2560 := 4 }; /* @status APPROVED (LTE_IRAT) */ + template (value) LongDrxCycleAndOffset_Type cs_LongDrxCycleAndOffset_sf1280_4 := { sf1280 := 4 }; /* @status APPROVED (LTE) */ + + + template (value) DRX_Config cs_DRX_Config_Measurement_Specific(template (value) LongDrxCycleAndOffset_Type p_LongDrxCycleAndOffset := cs_LongDrxCycleAndOffset_sf2560_0) := + { /* @status APPROVED (LTE, LTE_IRAT) */ + /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + setup := { + onDurationTimer := psf6, + drx_InactivityTimer := psf60, + drx_RetransmissionTimer := psf16, + longDRX_CycleStartOffset := p_LongDrxCycleAndOffset, + shortDRX := omit + } + }; + + template (value) DRX_Config cs_DRX_Config_SF1280 := cs_DRX_Config_Measurement_Specific(cs_LongDrxCycleAndOffset_sf1280_4); /* @status APPROVED (LTE) */ + template (value) DRX_Config cs_DRX_Config_SF2560 := cs_DRX_Config_Measurement_Specific(cs_LongDrxCycleAndOffset_sf2560_4); /* @status APPROVED (LTE_IRAT) */ + + //**************************************************************** + //Templates with ASN.1 syntax for common uses + //**************************************************************** + + template (value) DL_DCCH_Message cs_508_RRCConnectionReconfiguration_ConditionMEAS(RRC_TransactionIdentifier p_RRC_TI, + template (value) MeasConfig p_MeasConfig ) := + /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + cs_RRCConnectionReconfiguration_Common( p_RRC_TI, p_MeasConfig, omit, omit, omit ); + + //------------------------------------------------ + template (value) MeasConfig cs_MeasConfig(template (omit) MeasObjectToRemoveList p_MeasObjectToRemoveList, + template (omit) MeasObjectToAddModList p_MeasObjectToAddModList, + template (omit) ReportConfigToRemoveList p_ReportConfigToRemoveList, + template (omit) ReportConfigToAddModList p_ReportConfigToAddModList, + template (omit) MeasIdToRemoveList p_MeasIdToRemoveList, + template (omit) MeasIdToAddModList p_MeasIdToAddModList, + template (omit) QuantityConfig p_QuantityConfig := cs_QuantityConfig_Def, //@sic R5-134645, R5s130965 (R5-140743) sic@ + template (omit) MeasGapConfig p_MeasGapConfig := omit, + template (omit) RSRP_Range p_RSRP_Range := omit, + template (omit) PreRegistrationInfoHRPD p_HRPD_PreRegistrationInfo := omit, + template (omit) MeasConfig.speedStatePars p_SpeedStatePars := omit ) := + { /* @sic R5s100477 Additional Changes: merge of cs_MeasConfig and cs_MeasConfig_Common sic@ */ + /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + measObjectToRemoveList := p_MeasObjectToRemoveList, + measObjectToAddModList := p_MeasObjectToAddModList, + reportConfigToRemoveList := p_ReportConfigToRemoveList, + reportConfigToAddModList := p_ReportConfigToAddModList, + measIdToRemoveList := p_MeasIdToRemoveList, + measIdToAddModList := p_MeasIdToAddModList, + quantityConfig := p_QuantityConfig, + measGapConfig := p_MeasGapConfig, + s_Measure := p_RSRP_Range, + preRegistrationInfoHRPD := p_HRPD_PreRegistrationInfo, + speedStatePars := p_SpeedStatePars, + measObjectToAddModList_v9e0 := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + } + + //------------------------------------------------ + + template (value) MeasObjectToRemoveList cs_MeasObjectToRemoveList_1Entry( MeasObjectId p_MeasObjectId ) := + { /* @status APPROVED (LTE) */ + p_MeasObjectId + }; + + //------------------------------------------------ + + template (value) MeasObjectToAddModList cs_MeasObjectToAddModList_1Entry(MeasObjectId p_MeasObjectId, + template (value) MeasObjectToAddMod.measObject p_MeasObject ) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + { + measObjectId := p_MeasObjectId, + measObject := p_MeasObject + } + }; + + template (value) MeasObjectToAddModList cs_MeasObjectToAddModList_2Entries(MeasObjectId p_MeasObjectId_1, + template (value) MeasObjectToAddMod.measObject p_MeasObject_1, + MeasObjectId p_MeasObjectId_2, + template (value) MeasObjectToAddMod.measObject p_MeasObject_2 ) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + { + measObjectId := p_MeasObjectId_1, + measObject := p_MeasObject_1 + }, + { + measObjectId := p_MeasObjectId_2, + measObject := p_MeasObject_2 + } + }; + + template (value) MeasObjectToAddModList cs_MeasObjectToAddModList_3Entries(MeasObjectId p_MeasObjectId_1, + template (value) MeasObjectToAddMod.measObject p_MeasObject_1, + MeasObjectId p_MeasObjectId_2, + template (value) MeasObjectToAddMod.measObject p_MeasObject_2, + MeasObjectId p_MeasObjectId_3, + template (value) MeasObjectToAddMod.measObject p_MeasObject_3 ) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + { + measObjectId := p_MeasObjectId_1, + measObject := p_MeasObject_1 + }, + { + measObjectId := p_MeasObjectId_2, + measObject := p_MeasObject_2 + }, + { + measObjectId := p_MeasObjectId_3, + measObject := p_MeasObject_3 + } + }; + + //------------------------------------------------ + + template (value) MeasObjectToAddMod.measObject cs_MeasObject_measObjectEUTRA_Common(ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq, + AllowedMeasBandwidth p_MeasurementBandwidth, + template (omit) CellIndexList p_BlackCellsToRemoveList := omit, + template (omit) BlackCellsToAddModList p_BlackCellsToAddModList := omit, + template (omit) PhysCellId p_PhysCellId := omit, + template (omit) MeasSubframePatternConfigNeigh_r10 p_MeasSubframePatternConfigNeigh_r10 := omit, + template (omit) MeasCycleSCell_r10 p_MeasCycleSCell_r10 := omit) := //@sic R5s140009 sic@ + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + /* @sic R5s120925 - additional change: p_BlackCellsToRemoveList, p_BlackCellsToAddModList, p_PhysCellId made optional sic@ */ + /* @sic R5s130764: TC_8_3_1_21 - additional parameter p_MeasSubframePatternConfigNeigh_r10 sic@ */ + measObjectEUTRA := { + carrierFreq := p_EUTRA_DL_CarrierFreq, + allowedMeasBandwidth := p_MeasurementBandwidth, + presenceAntennaPort1 := false, + neighCellConfig := '01'B, + offsetFreq := dB0, + cellsToRemoveList := omit, + cellsToAddModList := omit, + blackCellsToRemoveList := p_BlackCellsToRemoveList, + blackCellsToAddModList := p_BlackCellsToAddModList, + cellForWhichToReportCGI := p_PhysCellId, + measCycleSCell_r10 := p_MeasCycleSCell_r10, //@sic R5s140009 sic@ + measSubframePatternConfigNeigh_r10 := p_MeasSubframePatternConfigNeigh_r10, + widebandRSRQ_Meas_r11 := omit + } + }; + + //------------------------------------------------ + + template (value) CellIndexList cs_CellIndexList_1Entry( integer p_CellIndex ) := + { /* @status APPROVED (LTE) */ + p_CellIndex + }; + + //------------------------------------------------ + + template (value) BlackCellsToAddModList cs_BlackCellsToAddModList_1Entry(integer p_CellIndex, + PhysCellId p_Start, + template (omit) PhysCellIdRange_Type p_Range) := + { /* @status APPROVED (LTE) */ + { + cellIndex := p_CellIndex, + physCellIdRange := { + start_ := p_Start, + range := p_Range + } + } + }; + + //------------------------------------------------ + + template (value) MeasObjectToAddMod.measObject cs_MeasObject_measObjectGERAN(ARFCN_ValueGERAN p_StartingARFCN, + BandIndicatorGERAN p_BandIndicator, + template (value) CarrierFreqsGERAN.followingARFCNs p_FollowingARFCNs, + template (omit) Q_OffsetRangeInterRAT p_OffsetFreq, + template (omit) B8_Type p_NCC_Permitted, + template (omit) PhysCellIdGERAN p_CellForWhichToReportCGI) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + measObjectGERAN := { + carrierFreqs := { + startingARFCN := p_StartingARFCN, + bandIndicator := p_BandIndicator, + followingARFCNs := p_FollowingARFCNs + }, + offsetFreq := p_OffsetFreq, + ncc_Permitted := p_NCC_Permitted, + cellForWhichToReportCGI := p_CellForWhichToReportCGI + } + }; + + //------------------------------------------------ + + template (value) CarrierFreqsGERAN.followingARFCNs cs_FollowingARFCNs_explicitListOfARFCNs(template (value) ExplicitListOfARFCNs p_ExplicitListOfARFCNs) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + explicitListOfARFCNs := p_ExplicitListOfARFCNs + }; + + //------------------------------------------------ + + template (value) CarrierFreqsGERAN.followingARFCNs cs_FollowingARFCNs_equallySpacedARFCNs(integer p_Arfcn_Spacing, + integer p_NumberOfFollowingARFCNs) := + { + equallySpacedARFCNs := { + arfcn_Spacing := p_Arfcn_Spacing, + numberOfFollowingARFCNs := p_NumberOfFollowingARFCNs + } + }; + + //------------------------------------------------ + + template (value) CarrierFreqsGERAN.followingARFCNs cs_FollowingARFCNs_variableBitMapOfARFCNs(octetstring p_VariableBitMapOfARFCNs) := + { + variableBitMapOfARFCNs := p_VariableBitMapOfARFCNs + }; + + //------------------------------------------------ + + template (value) PhysCellIdGERAN cs_PhysCellIdGERAN(B3_Type p_NetworkColourCode, + B3_Type p_BaseStationColourCode) := + { + networkColourCode := p_NetworkColourCode, + baseStationColourCode := p_BaseStationColourCode + }; + + //------------------------------------------------ + + template (value) CellsToAddModUTRA_FDD cs_CellsToAddModUTRA_FDD(template (value) CellsToAddModUTRA_FDD.cellIndex p_CellIndex, + template (value) PhysCellIdUTRA_FDD p_PhysCellId ) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + cellIndex := p_CellIndex, + physCellId := p_PhysCellId + }; + + template (value) CellsToAddModListUTRA_FDD cs_CellsToAddModListUTRA_FDD_1Entry(template (value) CellsToAddModUTRA_FDD.cellIndex p_CellIndex, + template (value) PhysCellIdUTRA_FDD p_PhysCellId ) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_CellsToAddModUTRA_FDD(p_CellIndex, p_PhysCellId) + }; + + template (value) MeasObjectUTRA.cellsToAddModList cs_MeasObjectUTRA_cellsToAddModList_FDD( template (value) CellsToAddModListUTRA_FDD p_CellsToAddModListUTRA_FDD ) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + cellsToAddModListUTRA_FDD := p_CellsToAddModListUTRA_FDD + }; + + template (value) MeasObjectUTRA.cellsToAddModList cs_MeasObjectUTRA_cellsToAddModList_TDD( template (value) CellsToAddModListUTRA_TDD p_CellsToAddModListUTRA_TDD ) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + cellsToAddModListUTRA_TDD := p_CellsToAddModListUTRA_TDD + }; + + template (value) MeasObjectToAddMod.measObject cs_MeasObject_measObjectUTRA(ARFCN_ValueUTRA p_CarrierFreq, + template (omit) Q_OffsetRangeInterRAT p_OffsetFreq, + template (omit) CellIndexList p_CellsToRemoveList, + template (omit) MeasObjectUTRA.cellsToAddModList p_CellsToAddModList, + template (omit) MeasObjectUTRA.cellForWhichToReportCGI p_CellForWhichToReportCGI) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + measObjectUTRA := { + carrierFreq := p_CarrierFreq, + offsetFreq := p_OffsetFreq, + cellsToRemoveList := p_CellsToRemoveList, + cellsToAddModList := p_CellsToAddModList, + cellForWhichToReportCGI := p_CellForWhichToReportCGI, + csg_allowedReportingCells_v930 := omit /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + } + }; + + //------------------------------------------------ + + template (value) ReportConfigToRemoveList cs_ReportConfigToRemoveList_1Entry(ReportConfigId p_ReportConfigId) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + p_ReportConfigId + }; + + //------------------------------------------------ + + template (value) ReportConfigToAddModList cs_ReportConfigToAddModList_1Entry(ReportConfigId p_ReportConfigId, + template (value) ReportConfigToAddMod.reportConfig p_ReportConfig) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + { + reportConfigId := p_ReportConfigId, + reportConfig := p_ReportConfig + } + }; + + template (value) ReportConfigToAddModList cs_ReportConfigToAddModList_2Entries(ReportConfigId p_ReportConfigId_1, + template (value) ReportConfigToAddMod.reportConfig p_ReportConfig_1, + ReportConfigId p_ReportConfigId_2, + template (value) ReportConfigToAddMod.reportConfig p_ReportConfig_2) := + { /* @status APPROVED (LTE, LTE_A) */ + { + reportConfigId := p_ReportConfigId_1, + reportConfig := p_ReportConfig_1 + }, + { + reportConfigId := p_ReportConfigId_2, + reportConfig := p_ReportConfig_2 + } + }; + + template (value) ReportConfigToAddModList cs_ReportConfigToAddModList_3Entries(ReportConfigId p_ReportConfigId_1, + template (value) ReportConfigToAddMod.reportConfig p_ReportConfig_1, + ReportConfigId p_ReportConfigId_2, + template (value) ReportConfigToAddMod.reportConfig p_ReportConfig_2, + ReportConfigId p_ReportConfigId_3, + template (value) ReportConfigToAddMod.reportConfig p_ReportConfig_3) := + { /* @status APPROVED (LTE_IRAT) */ + { + reportConfigId := p_ReportConfigId_1, + reportConfig := p_ReportConfig_1 + }, + { + reportConfigId := p_ReportConfigId_2, + reportConfig := p_ReportConfig_2 + }, + { + reportConfigId := p_ReportConfigId_3, + reportConfig := p_ReportConfig_3 + } + }; + + //------------------------------------------------ + + template (value) ReportConfigToAddMod.reportConfig cs_ReportConfig_reportConfigEUTRA_event(template (value) ReportConfigEUTRA.triggerType.event.eventId p_EventId, + integer p_Hysteresis, + TimeToTrigger p_TimeToTrigger, + ReportConfigEUTRA.triggerQuantity p_TriggerQuantity, + ReportConfigEUTRA.reportQuantity p_ReportQuantity, + integer p_MaxReportCells, + ReportInterval p_ReportInterval, + ReportConfigEUTRA.reportAmount p_ReportAmount, + template (omit) ReportConfigEUTRA.includeLocationInfo_r10 p_IncludeLocationInfo_r10 := omit, + template (omit) ReportConfigEUTRA.reportAddNeighMeas_r10 p_ReportAddNeighMeas_r10 := omit) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + reportConfigEUTRA := { + triggerType := { + event := { + eventId := p_EventId, + hysteresis := p_Hysteresis, + timeToTrigger := p_TimeToTrigger + } + }, + triggerQuantity := p_TriggerQuantity, + reportQuantity := p_ReportQuantity, + maxReportCells := p_MaxReportCells, + reportInterval := p_ReportInterval, + reportAmount := p_ReportAmount, + si_RequestForHO_r9 := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + ue_RxTxTimeDiffPeriodical_r9 := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + includeLocationInfo_r10 := p_IncludeLocationInfo_r10, + reportAddNeighMeas_r10 := p_ReportAddNeighMeas_r10 + } + }; + + template (value) ReportConfigEUTRA.triggerType.event.eventId cs_ReportConfigEUTRA_eventA1_RSRP(EUTRA_RS_EPRE_Type p_Thres) := + { /* @status APPROVED (LTE, LTE_A) */ + eventA1 := { + a1_Threshold := { + threshold_RSRP := p_Thres + 140 //@sic Changed back from 141 (CR R5-0904639) to formerly 140, CR R5-100111 sic@ + } + } + }; + + template (value) ReportConfigEUTRA.triggerType.event.eventId cs_ReportConfigEUTRA_eventA2_RSRP(EUTRA_RS_EPRE_Type p_Thres) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + eventA2 := { + a2_Threshold := { + threshold_RSRP := p_Thres + 140 //@sic Changed back from 141 (CR R5-0904639) to formerly 140, @sic CR R5-100111 sic@ + } + } + }; + + template (value) ReportConfigEUTRA.triggerType.event.eventId cs_ReportConfigEUTRA_eventA3(A3_Offset_Type p_A3_Offset, + boolean p_ReportOnLeave) := + { /* @status APPROVED (LTE, LTE_A) */ + eventA3 := { + a3_Offset := p_A3_Offset, + reportOnLeave := p_ReportOnLeave + } + }; + + template (value) ReportConfigEUTRA.triggerType.event.eventId cs_ReportConfigEUTRA_eventA4_RSRP(EUTRA_RS_EPRE_Type p_Threshold) := + { /* @status APPROVED (LTE) */ + eventA4 := { + a4_Threshold := {threshold_RSRP := p_Threshold + 140} + } + }; + + template (value) ReportConfigEUTRA.triggerType.event.eventId cs_ReportConfigEUTRA_eventA5_RSRP(EUTRA_RS_EPRE_Type p_Threshold1, + EUTRA_RS_EPRE_Type p_Threshold2) := + { /* @status APPROVED (LTE, LTE_A) */ + eventA5 := { + a5_Threshold1 := {threshold_RSRP := p_Threshold1 + 140}, + a5_Threshold2 := {threshold_RSRP := p_Threshold2 + 140} + } + }; + + template (value) ReportConfigEUTRA.triggerType.event.eventId cs_ReportConfigEUTRA_eventA5_RSRQ(integer p_Threshold1, + integer p_Threshold2) := + { /* @status APPROVED (LTE) */ + eventA5 := { + a5_Threshold1 := {threshold_RSRQ := p_Threshold1*2 + 40}, + a5_Threshold2 := {threshold_RSRQ := p_Threshold2*2 + 40} + } + }; + + + template (value) ReportConfigToAddMod.reportConfig cs_ReportConfig_reportConfigEUTRA_eventA1_RSRP(EUTRA_RS_EPRE_Type p_Thres, + integer p_Hysteresis, + TimeToTrigger p_TimeToTrigger, + ReportConfigEUTRA.triggerQuantity p_TriggerQuantity, + ReportConfigEUTRA.reportQuantity p_ReportQuantity, + integer p_MaxReportCells, + ReportInterval p_ReportInterval, + ReportConfigEUTRA.reportAmount p_ReportAmount) := + /* @status APPROVED (LTE, LTE_A) */ + cs_ReportConfig_reportConfigEUTRA_event(cs_ReportConfigEUTRA_eventA1_RSRP(p_Thres), + p_Hysteresis, + p_TimeToTrigger, + p_TriggerQuantity, + p_ReportQuantity, + p_MaxReportCells, + p_ReportInterval, + p_ReportAmount); + + template (value) ReportConfigToAddMod.reportConfig cs_ReportConfig_reportConfigEUTRA_eventA2_RSRP(EUTRA_RS_EPRE_Type p_Thres, + integer p_Hysteresis, + TimeToTrigger p_TimeToTrigger, + ReportConfigEUTRA.triggerQuantity p_TriggerQuantity, + ReportConfigEUTRA.reportQuantity p_ReportQuantity, + integer p_MaxReportCells, + ReportInterval p_ReportInterval, + ReportConfigEUTRA.reportAmount p_ReportAmount, + template (omit) ReportConfigEUTRA.includeLocationInfo_r10 p_IncludeLocationInfo_r10 := omit, + template (omit) ReportConfigEUTRA.reportAddNeighMeas_r10 p_ReportAddNeighMeas_r10 := omit) := + /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + cs_ReportConfig_reportConfigEUTRA_event(cs_ReportConfigEUTRA_eventA2_RSRP(p_Thres), + p_Hysteresis, + p_TimeToTrigger, + p_TriggerQuantity, + p_ReportQuantity, + p_MaxReportCells, + p_ReportInterval, + p_ReportAmount, + p_IncludeLocationInfo_r10, + p_ReportAddNeighMeas_r10); + + + template (value) ReportConfigToAddMod.reportConfig cs_ReportConfig_reportConfigEUTRA_eventA3(A3_Offset_Type p_A3_Offset, + boolean p_ReportOnLeave, + integer p_Hysteresis, + TimeToTrigger p_TimeToTrigger, + ReportConfigEUTRA.triggerQuantity p_TriggerQuantity, + ReportConfigEUTRA.reportQuantity p_ReportQuantity, + integer p_MaxReportCells, + ReportInterval p_ReportInterval, + ReportConfigEUTRA.reportAmount p_ReportAmount) := + /* @status APPROVED (LTE, LTE_A) */ + cs_ReportConfig_reportConfigEUTRA_event(cs_ReportConfigEUTRA_eventA3(p_A3_Offset, p_ReportOnLeave), + p_Hysteresis, + p_TimeToTrigger, + p_TriggerQuantity, + p_ReportQuantity, + p_MaxReportCells, + p_ReportInterval, + p_ReportAmount); + + template (value) ReportConfigToAddMod.reportConfig cs_ReportConfig_reportConfigEUTRA_eventA4_RSRP(EUTRA_RS_EPRE_Type p_Threshold, + integer p_Hysteresis, + TimeToTrigger p_TimeToTrigger, + ReportConfigEUTRA.triggerQuantity p_TriggerQuantity, + ReportConfigEUTRA.reportQuantity p_ReportQuantity, + integer p_MaxReportCells, + ReportInterval p_ReportInterval, + ReportConfigEUTRA.reportAmount p_ReportAmount) := + /* @status APPROVED (LTE) */ + cs_ReportConfig_reportConfigEUTRA_event(cs_ReportConfigEUTRA_eventA4_RSRP(p_Threshold), + p_Hysteresis, + p_TimeToTrigger, + p_TriggerQuantity, + p_ReportQuantity, + p_MaxReportCells, + p_ReportInterval, + p_ReportAmount); + + template (value) ReportConfigToAddMod.reportConfig cs_ReportConfig_reportConfigEUTRA_eventA5_RSRP(EUTRA_RS_EPRE_Type p_Threshold1, + EUTRA_RS_EPRE_Type p_Threshold2, + integer p_Hysteresis, + TimeToTrigger p_TimeToTrigger, + ReportConfigEUTRA.triggerQuantity p_TriggerQuantity, + ReportConfigEUTRA.reportQuantity p_ReportQuantity, + integer p_MaxReportCells, + ReportInterval p_ReportInterval, + ReportConfigEUTRA.reportAmount p_ReportAmount) := + /* @status APPROVED (LTE, LTE_A) */ + cs_ReportConfig_reportConfigEUTRA_event(cs_ReportConfigEUTRA_eventA5_RSRP(p_Threshold1, p_Threshold2), + p_Hysteresis, + p_TimeToTrigger, + p_TriggerQuantity, + p_ReportQuantity, + p_MaxReportCells, + p_ReportInterval, + p_ReportAmount); + + template (value) ReportConfigToAddMod.reportConfig cs_ReportConfig_reportConfigEUTRA_eventA5_RSRQ(integer p_Threshold1, + integer p_Threshold2, + integer p_Hysteresis, + TimeToTrigger p_TimeToTrigger, + ReportConfigEUTRA.triggerQuantity p_TriggerQuantity, + ReportConfigEUTRA.reportQuantity p_ReportQuantity, + integer p_MaxReportCells, + ReportInterval p_ReportInterval, + ReportConfigEUTRA.reportAmount p_ReportAmount) := + /* @status APPROVED (LTE) */ + cs_ReportConfig_reportConfigEUTRA_event(cs_ReportConfigEUTRA_eventA5_RSRQ(p_Threshold1, p_Threshold2), + p_Hysteresis, + p_TimeToTrigger, + p_TriggerQuantity, + p_ReportQuantity, + p_MaxReportCells, + p_ReportInterval, + p_ReportAmount); + + //------------------------------------------------ + + template (value) ThresholdUTRA cs_ThresholdUTRA_RSCP(UTRA_RSCP_dBm_Type p_UTRAN_Thres) := + { /* @status APPROVED (LTE_IRAT) */ + utra_RSCP := p_UTRAN_Thres + 115 + }; + + template (value) ThresholdUTRA cs_ThresholdUTRA_EcN0(UTRA_Ec_Io_dB_Type p_UTRAN_Thres) := + { + utra_EcN0 := p_UTRAN_Thres * 2 + 49 + }; + + template (value) ReportConfigToAddMod.reportConfig cs_ReportConfig_reportConfigInterRAT_eventB1_UTRA(template (value) ThresholdUTRA p_ThresholdUTRA, + Hysteresis p_Hysteresis, + TimeToTrigger p_TimeToTrigger, + integer p_MaxReportCells, + ReportInterval p_ReportInterval, + ReportConfigInterRAT.reportAmount p_ReportAmount) := + { /* @status APPROVED (LTE_IRAT) */ + reportConfigInterRAT := { + triggerType := { + event := { + eventId := { + eventB1 := { + b1_Threshold := { + b1_ThresholdUTRA := p_ThresholdUTRA + } + } + }, + hysteresis := p_Hysteresis, + timeToTrigger := p_TimeToTrigger + } + }, + maxReportCells := p_MaxReportCells, + reportInterval := p_ReportInterval, + reportAmount := p_ReportAmount, + si_RequestForHO_r9 := omit, + reportQuantityUTRA_FDD_r10 := omit, + includeLocationInfo_r11 := omit + } + }; + + //------------------------------------------------ + template (value) ReportConfigToAddMod.reportConfig cs_ReportConfig_reportConfigEUTRA_periodical(ReportConfigEUTRA.triggerType.periodical.purpose p_Purpose, + ReportConfigEUTRA.triggerQuantity p_TriggerQuantity, + ReportConfigEUTRA.reportQuantity p_ReportQuantity, + integer p_MaxReportCells, + ReportInterval p_ReportInterval, + ReportConfigEUTRA.reportAmount p_ReportAmount, + template (omit) ReportConfigEUTRA.ue_RxTxTimeDiffPeriodical_r9 p_Ue_RxTxTimeDiffPeriodical_r9 := omit, + template (omit) ReportConfigEUTRA.si_RequestForHO_r9 p_Si_RequestForHO_r9 := omit) := + { /* @status APPROVED (LTE) */ + //@sic R5s140129 sic@ + reportConfigEUTRA := { + triggerType := { + periodical := { + purpose := p_Purpose //enumerated{ reportStrongestCells, reportCGI } + } + }, + triggerQuantity := p_TriggerQuantity, + reportQuantity := p_ReportQuantity, + maxReportCells := p_MaxReportCells, + reportInterval := p_ReportInterval, + reportAmount := p_ReportAmount, + si_RequestForHO_r9 := p_Si_RequestForHO_r9, //@sic R5s140129 sic@ /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + ue_RxTxTimeDiffPeriodical_r9 := p_Ue_RxTxTimeDiffPeriodical_r9, + includeLocationInfo_r10 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ */ + reportAddNeighMeas_r10 := omit /* @sic R5s120178 BASELINE MOVING 2012 sic@ */ + } + }; + + //------------------------------------------------ + + template (value) ReportConfigToAddMod.reportConfig cs_ReportConfig_reportConfigInterRAT_eventB2_UTRA_RSCP(EUTRA_RS_EPRE_Type p_EUTRA_Thres, + UTRA_RSCP_dBm_Type p_UTRAN_Thres, + Hysteresis p_Hysteresis, + TimeToTrigger p_TimeToTrigger, + integer p_MaxReportCells, + ReportInterval p_ReportInterval, + ReportConfigInterRAT.reportAmount p_ReportAmount) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + reportConfigInterRAT := { + triggerType := { + event := { + eventId := { + eventB2 := { + b2_Threshold1 := { + threshold_RSRP := p_EUTRA_Thres + 140 //@sic Changed back from 141 (CR R5-0904639) to formerly 140, CR R5-100111 sic@ + }, + b2_Threshold2 := { + b2_Threshold2UTRA := { + utra_RSCP := p_UTRAN_Thres + 115 + } + } + } + }, + hysteresis := p_Hysteresis, + timeToTrigger := p_TimeToTrigger + } + }, + maxReportCells := p_MaxReportCells, + reportInterval := p_ReportInterval, + reportAmount := p_ReportAmount, + si_RequestForHO_r9 := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + reportQuantityUTRA_FDD_r10 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ */ + includeLocationInfo_r11 := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + } + }; + + template (value) ReportConfigToAddMod.reportConfig cs_ReportConfig_reportConfigInterRAT_eventB2_UTRA_EcN0(EUTRA_RS_EPRE_Type p_EUTRA_Thres, + UTRA_Ec_Io_dB_Type p_UTRAN_Thres, + Hysteresis p_Hysteresis, + TimeToTrigger p_TimeToTrigger, + integer p_MaxReportCells, + ReportInterval p_ReportInterval, + ReportConfigInterRAT.reportAmount p_ReportAmount) := + { /* @status APPROVED (LTE_IRAT) */ + reportConfigInterRAT := { + triggerType := { + event := { + eventId := { + eventB2 := { + b2_Threshold1 := { + threshold_RSRP := p_EUTRA_Thres + 140 //@sic Changed back from 141 (CR R5-0904639) to formerly 140, CR R5-100111 sic@ + }, + b2_Threshold2 := { + b2_Threshold2UTRA := { + utra_EcN0 := p_UTRAN_Thres * 2 + 49 + } + } + } + }, + hysteresis := p_Hysteresis, + timeToTrigger := p_TimeToTrigger + } + }, + maxReportCells := p_MaxReportCells, + reportInterval := p_ReportInterval, + reportAmount := p_ReportAmount, + si_RequestForHO_r9 := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + reportQuantityUTRA_FDD_r10 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ */ + includeLocationInfo_r11 := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + } + }; + + template (value) ReportConfigToAddMod.reportConfig cs_ReportConfig_reportConfigInterRAT_eventB2_RSRQ(integer p_EUTRA_Thres, + template (value) ThresholdUTRA p_ThresholdUTRA, + Hysteresis p_Hysteresis, + TimeToTrigger p_TimeToTrigger, + integer p_MaxReportCells, + ReportInterval p_ReportInterval, + ReportConfigInterRAT.reportAmount p_ReportAmount) := + { /* @status APPROVED (LTE_IRAT) */ + reportConfigInterRAT := { + triggerType := { + event := { + eventId := { + eventB2 := { + b2_Threshold1 := { + threshold_RSRQ := p_EUTRA_Thres + }, + b2_Threshold2 := { + b2_Threshold2UTRA := p_ThresholdUTRA + } + } + }, + hysteresis := p_Hysteresis, + timeToTrigger := p_TimeToTrigger + } + }, + maxReportCells := p_MaxReportCells, + reportInterval := p_ReportInterval, + reportAmount := p_ReportAmount, + si_RequestForHO_r9 := omit, + reportQuantityUTRA_FDD_r10 := omit, + includeLocationInfo_r11 := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + } + }; + + template (value) ReportConfigToAddMod.reportConfig cs_ReportConfig_reportConfigInterRAT_eventB2_GERAN(EUTRA_RS_EPRE_Type p_EUTRA_Thres, + GERAN_RSSI_dBm_Type p_GERAN_Thres, + Hysteresis p_Hysteresis, + TimeToTrigger p_TimeToTrigger, + integer p_MaxReportCells, + ReportInterval p_ReportInterval, + ReportConfigInterRAT.reportAmount p_ReportAmount) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + reportConfigInterRAT := { + triggerType := { + event := { + eventId := { + eventB2 := { + b2_Threshold1 := { + threshold_RSRP := p_EUTRA_Thres + 140 //@sic Changed back from 141 (CR R5-0904639) to formerly 140, CR R5-100111 sic@ + }, + b2_Threshold2 := { + b2_Threshold2GERAN := p_GERAN_Thres + 110 + } + } + }, + hysteresis := p_Hysteresis, + timeToTrigger := p_TimeToTrigger + } + }, + maxReportCells := p_MaxReportCells, + reportInterval := p_ReportInterval, + reportAmount := p_ReportAmount, + si_RequestForHO_r9 := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + reportQuantityUTRA_FDD_r10 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ */ + includeLocationInfo_r11 := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + } + }; + + template (value) ReportConfigToAddMod.reportConfig cs_ReportConfig_reportConfigInterRAT_periodical(ReportConfigInterRAT.triggerType.periodical.purpose p_Purpose, + integer p_MaxReportCells, + ReportInterval p_ReportInterval, + ReportConfigInterRAT.reportAmount p_ReportAmount := r1, + template (omit) ReportConfigInterRAT.si_RequestForHO_r9 p_Si_RequestForHO_r9 := omit) := + { /* @status APPROVED (LTE_IRAT) */ + reportConfigInterRAT := { + triggerType := { + periodical := { + purpose := p_Purpose //enumerated{ reportStrongestCells, reportStrongestCellsForSON, reportCGI } + } + }, + maxReportCells := p_MaxReportCells, + reportInterval := p_ReportInterval, + reportAmount := p_ReportAmount, + si_RequestForHO_r9 := p_Si_RequestForHO_r9, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + reportQuantityUTRA_FDD_r10 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ */ + includeLocationInfo_r11 := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + } + }; + + //------------------------------------------------ + + template (value) MeasIdToRemoveList cs_MeasIdToRemoveList_1Entry(MeasId p_MeasId) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + p_MeasId + }; + + template (value) MeasIdToRemoveList cs_MeasIdToRemoveList_2Entries(MeasId p_MeasId_1, + MeasId p_MeasId_2) := + { /* @status APPROVED (LTE, LTE_IRAT) */ + p_MeasId_1, + p_MeasId_2 + }; + + template (value) MeasIdToRemoveList cs_MeasIdToRemoveList_3Entries(MeasId p_MeasId_1, + MeasId p_MeasId_2, + MeasId p_MeasId_3) := + { /* @status APPROVED (LTE) */ + p_MeasId_1, + p_MeasId_2, + p_MeasId_3 + }; + + //------------------------------------------------ + + template (value) MeasIdToAddModList cs_MeasIdToAddModList_1Entry(integer p_MeasId, + integer p_MeasObjectId, + integer p_ReportConfigId) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + { + measId := p_MeasId, + measObjectId := p_MeasObjectId, + reportConfigId := p_ReportConfigId + } + }; + + template (value) MeasIdToAddModList cs_MeasIdToAddModList_2Entries(integer p_MeasId_1, + integer p_MeasObjectId_1, + integer p_ReportConfigId_1, + integer p_MeasId_2, + integer p_MeasObjectId_2, + integer p_ReportConfigId_2) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + { + measId := p_MeasId_1, + measObjectId := p_MeasObjectId_1, + reportConfigId := p_ReportConfigId_1 + }, + { + measId := p_MeasId_2, + measObjectId := p_MeasObjectId_2, + reportConfigId := p_ReportConfigId_2 + } + }; + + template (value) MeasIdToAddModList cs_MeasIdToAddModList_3Entries(integer p_MeasId_1, + integer p_MeasObjectId_1, + integer p_ReportConfigId_1, + integer p_MeasId_2, + integer p_MeasObjectId_2, + integer p_ReportConfigId_2, + integer p_MeasId_3, + integer p_MeasObjectId_3, + integer p_ReportConfigId_3) := + { /* @status APPROVED (LTE, LTE_IRAT) */ + { + measId := p_MeasId_1, + measObjectId := p_MeasObjectId_1, + reportConfigId := p_ReportConfigId_1 + }, + { + measId := p_MeasId_2, + measObjectId := p_MeasObjectId_2, + reportConfigId := p_ReportConfigId_2 + }, + { + measId := p_MeasId_3, + measObjectId := p_MeasObjectId_3, + reportConfigId := p_ReportConfigId_3 + } + }; + + //------------------------------------------------ + + template (value) QuantityConfig cs_QuantityConfig(template (omit) QuantityConfigEUTRA p_QuantityConfigEUTRA, + template (omit) QuantityConfigUTRA p_QuantityConfigUTRA, + template (omit) QuantityConfigGERAN p_QuantityConfigGERAN, + template (omit) QuantityConfigCDMA2000 p_QuantityConfigCDMA2000) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + quantityConfigEUTRA := p_QuantityConfigEUTRA, + quantityConfigUTRA := p_QuantityConfigUTRA, + quantityConfigGERAN := p_QuantityConfigGERAN, + quantityConfigCDMA2000 := p_QuantityConfigCDMA2000, + quantityConfigUTRA_v1020 := omit /* @sic R5s120178 BASELINE MOVING 2012 sic@ */ + }; + + template (value) QuantityConfig cs_QuantityConfig_Def := cs_QuantityConfig(cs_QuantityConfigEUTRA(omit, omit), omit, omit, omit); /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + + //------------------------------------------------ + + template (value) QuantityConfigEUTRA cs_QuantityConfigEUTRA(template (omit) FilterCoefficient p_FilterCoefficientRSRP, + template (omit) FilterCoefficient p_FilterCoefficientRSRQ) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + filterCoefficientRSRP := p_FilterCoefficientRSRP, + filterCoefficientRSRQ := p_FilterCoefficientRSRQ + }; + + //------------------------------------------------ + + template (value) QuantityConfigUTRA cs_QuantityConfigUTRA(QuantityConfigUTRA.measQuantityUTRA_FDD p_MeasQuantityUTRA_FDD, + QuantityConfigUTRA.measQuantityUTRA_TDD p_MeasQuantityUTRA_TDD, + template (omit) FilterCoefficient p_FilterCoefficient) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + measQuantityUTRA_FDD := p_MeasQuantityUTRA_FDD, + measQuantityUTRA_TDD := p_MeasQuantityUTRA_TDD, + filterCoefficient := p_FilterCoefficient + }; + + //------------------------------------------------ + + template (value) QuantityConfigGERAN cs_QuantityConfigGERAN(QuantityConfigGERAN.measQuantityGERAN p_MeasQuantityGERAN, + template (omit) FilterCoefficient p_FilterCoefficient) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + measQuantityGERAN := p_MeasQuantityGERAN, + filterCoefficient := p_FilterCoefficient + }; + + //------------------------------------------------ + + template (value) MeasGapConfig cs_MeasGapConfig_release := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + release := NULL + }; + + //------------------------------------------------ + + template (value) MeasGapConfig cs_MeasGapConfig_setup_gp0(GapOffset_Gp0_Type p_GapOffset) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + setup := { + gapOffset := { + gp0 := p_GapOffset + } + } + }; + + template (value) MeasGapConfig cs_MeasGapConfig_setup_gp1(GapOffset_Gp1_Type p_GapOffset) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + setup := { + gapOffset := { + gp1 := p_GapOffset + } + } + }; + + //================================================================ + + template (present) UL_DCCH_Message cr_MeasurementReport(template integer p_MeasId, + template RSRP_Range p_RsrpResult, + template RSRQ_Range p_RsrqResult, + template MeasResults.measResultNeighCells p_MeasResultNeighCells, + template MeasResultServFreqList_r10 p_MeasResultServFreqList_r10 := omit) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + message_ := { + c1 := { + measurementReport := { + criticalExtensions := { + c1 := { + measurementReport_r8 := { + measResults := { + measId := p_MeasId, + measResultPCell := { + rsrpResult := p_RsrpResult, + rsrqResult := p_RsrqResult + }, + measResultNeighCells := p_MeasResultNeighCells, + measResultForECID_r9 := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + locationInfo_r10 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ */ + measResultServFreqList_r10 := p_MeasResultServFreqList_r10 /* @sic R5s120178 BASELINE MOVING 2012 sic@ */ + }, + nonCriticalExtension := * //according to 36.508 4.6.1 table 4.6.1-5 + } + } + } + } + } + } + }; + + template (present) UL_DCCH_Message cr_MeasurementReport_CheckAny := cr_MeasurementReport(?, ?, ?, *); /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + + template (present) UL_DCCH_Message cr_MeasurementReport_Utran_1Entry_FDD_RSCP(template integer p_MeasId, + template PhysCellIdUTRA_FDD p_PhysCellId) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cr_MeasurementReport(p_MeasId, ?, ?, cr_MeasResultNeighCells_measResultListUTRA_1Entry_FDD(p_PhysCellId, omit, ?, omit)); + + template (present) UL_DCCH_Message cr_MeasurementReport_Utran_1Entry_TDD_RSCP(template integer p_MeasId, + template PhysCellIdUTRA_TDD p_PhysCellId) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cr_MeasurementReport(p_MeasId, ?, ?, cr_MeasResultNeighCells_measResultListUTRA_1Entry_TDD(p_PhysCellId, omit, ?, omit)); + + template (present) UL_DCCH_Message cr_MeasurementReport_Eutra_1Entry_both(template integer p_MeasId, + template PhysCellId p_PhysCellId) := + /* @status APPROVED (LTE, LTE_A) */ + cr_MeasurementReport(p_MeasId, ?, ?, cr_MeasResultNeighCells_measResultListEUTRA_1Entry(p_PhysCellId, omit, ?, ?)); + + //------------------------------------------------ + //Eutra_1Entry, reportQuantity rsrp + //8.3.1.3, Step5, Step7 + //8.3.1.5, Step5, Step7 + //8.3.1.11, Step3a2, Step5, Step14, Step15a4 //@sic R5-106572 sic@ + //8.3.3.1, Step4 + //8.3.4.2, Step4 + //8.3.4.3, Step4 + template (present) UL_DCCH_Message cr_MeasurementReport_Eutra_1Entry_rsrp(template integer p_MeasId, + template PhysCellId p_PhysCellId) := + /* @status APPROVED (LTE, LTE_A) */ + cr_MeasurementReport(p_MeasId, ?, ?, cr_MeasResultNeighCells_measResultListEUTRA_1Entry(p_PhysCellId, omit, ?, omit)); + + //------------------------------------------------ + + template (present) UL_DCCH_Message cr_MeasurementReport_Geran_1Entry(template integer p_MeasId, + template PhysCellIdGERAN p_PhysCellId) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cr_MeasurementReport(p_MeasId, ?, ?, cr_MeasResultNeighCells_measResultListGERAN_1Entry(*, *, p_PhysCellId, omit, ? )); + + template (present) UL_DCCH_Message cr_MeasurementReport_Utran_1Entry_FDD(template integer p_MeasId, + template PhysCellIdUTRA_FDD p_PhysCellId) := + /* @status APPROVED (LTE_IRAT) */ + cr_MeasurementReport(p_MeasId, ?, ?, cr_MeasResultNeighCells_measResultListUTRA_1Entry_FDD(p_PhysCellId, omit, omit, ?)); + + template (present) UL_DCCH_Message cr_MeasurementReport_Utran_1Entry_TDD(template integer p_MeasId, + template PhysCellIdUTRA_TDD p_PhysCellId) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cr_MeasurementReport(p_MeasId, ?, ?, cr_MeasResultNeighCells_measResultListUTRA_1Entry_TDD( p_PhysCellId, omit, ?, omit )); + + template (present) UL_DCCH_Message cr_MeasurementReport_CDMA2000_1Entry( PhysCellIdCDMA2000 p_PhysCellId, + template CDMA2000_PilotPnPhase p_PilotPnPhase) := + /* @status APPROVED (LTE_IRAT) */ + //@sic R5-110734 sic@ + cr_MeasurementReport(1, ?, ?, cr_MeasResultNeighCells_measResultsCDMA2000_1Entry( false, p_PhysCellId, omit, p_PilotPnPhase, ? ) ); //@sic R5-110734 sic@ + + //================================================================ + + template (present) MeasResults.measResultNeighCells cr_MeasResultNeighCells_measResultListEUTRA_1Entry(template PhysCellId p_PhysCellId, + template GlobalCellIdentity_Type p_Cgi_Info, + template RSRP_Range p_RsrpResult, + template RSRQ_Range p_RsrqResult, + template (omit) AdditionalSI_Info_r9 p_AdditionalSI_Info_r9 := omit) := + { /* @status APPROVED (LTE, LTE_A) */ + measResultListEUTRA := { + { + physCellId := p_PhysCellId, + cgi_Info := p_Cgi_Info, + measResult := { + rsrpResult := p_RsrpResult, + rsrqResult := p_RsrqResult, + additionalSI_Info_r9 := p_AdditionalSI_Info_r9 /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + } + } + } + }; + + template (present) MeasResults.measResultNeighCells cr_MeasResultNeighCells_measResultListEUTRA_2Entries(template PhysCellId p_PhysCellId_1, + template GlobalCellIdentity_Type p_GlobalCellIdentity_EUTRA_1, + template RSRP_Range p_RsrpResult_1, + template RSRQ_Range p_RsrqResult_1, + template PhysCellId p_PhysCellId_2, + template GlobalCellIdentity_Type p_GlobalCellIdentity_EUTRA_2, + template RSRP_Range p_RsrpResult_2, + template RSRQ_Range p_RsrqResult_2) := + { /* @status APPROVED (LTE) */ + measResultListEUTRA := { + { + physCellId := p_PhysCellId_1, + cgi_Info := p_GlobalCellIdentity_EUTRA_1, + measResult := { + rsrpResult := p_RsrpResult_1, + rsrqResult := p_RsrqResult_1, + additionalSI_Info_r9 := omit /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + } + }, + { + physCellId := p_PhysCellId_2, + cgi_Info := p_GlobalCellIdentity_EUTRA_2, + measResult := { + rsrpResult := p_RsrpResult_2, + rsrqResult := p_RsrqResult_2, + additionalSI_Info_r9 := omit /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + } + } + } + }; + + //------------------------------------------------ + + template (present) GlobalCellIdentity_Type cr_Cgi_Info_EUTRA(template PLMN_Identity p_PLMN_Identity, + template CellIdentity p_CellIdentity, + template TrackingAreaCode p_TrackingAreaCode, + template PLMN_IdentityList2 p_PLMN_IdentityList2) := + { /* @status APPROVED (LTE) */ + cellGlobalId := { + plmn_Identity := p_PLMN_Identity, + cellIdentity := p_CellIdentity + }, + trackingAreaCode := p_TrackingAreaCode, + plmn_IdentityList := p_PLMN_IdentityList2 + }; + + //------------------------------------------------ + template (present) AdditionalSI_Info_r9 cr_AdditionalSI_Info_r9( template (omit) AdditionalSI_Info_r9.csg_MemberStatus_r9 p_Csg_MemberStatus_r9, + template (omit) CSG_Identity p_CSG_Identity_r9 ) := + { /* @status APPROVED (LTE, LTE_IRAT) */ + csg_MemberStatus_r9 := p_Csg_MemberStatus_r9, + csg_Identity_r9 := p_CSG_Identity_r9 + }; + + //------------------------------------------------ + + template (present) MeasResults.measResultNeighCells cr_MeasResultNeighCells_measResultListUTRA_1Entry_FDD(template PhysCellIdUTRA_FDD p_PhysCellId, + template MeasResultUTRA.cgi_Info p_Cgi_Info, + template UTRA_RSCP_Type p_UTRA_RSCP, + template UTRA_EcN0_Type p_UTRA_EcN0, + template (omit) AdditionalSI_Info_r9 p_AdditionalSI_Info_r9 := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + measResultListUTRA := { + { + physCellId := { + fdd := p_PhysCellId + }, + cgi_Info := p_Cgi_Info, + measResult := { + utra_RSCP := p_UTRA_RSCP, + utra_EcN0 := p_UTRA_EcN0, + additionalSI_Info_r9 := p_AdditionalSI_Info_r9 /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + } + } + } + }; + + template (present) MeasResults.measResultNeighCells cr_MeasResultNeighCells_measResultListUTRA_1Entry_TDD(template PhysCellIdUTRA_TDD p_PhysCellId, + template MeasResultUTRA.cgi_Info p_Cgi_Info, + template UTRA_RSCP_Type p_UTRA_RSCP, + template UTRA_EcN0_Type p_UTRA_EcN0, + template (omit) AdditionalSI_Info_r9 p_AdditionalSI_Info_r9 := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + measResultListUTRA := { + { + physCellId := { + tdd := p_PhysCellId + }, + cgi_Info := p_Cgi_Info, + measResult := { + utra_RSCP := p_UTRA_RSCP, + utra_EcN0 := p_UTRA_EcN0, + additionalSI_Info_r9 := p_AdditionalSI_Info_r9 /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + } + } + } + }; + + template (present) MeasResults.measResultNeighCells cr_MeasResultNeighCells_measResultListUTRA_2Entries_FDD(template PhysCellIdUTRA_TDD p_PhysCellId_1, + template MeasResultUTRA.cgi_Info p_Cgi_Info_1, + template UTRA_RSCP_Type p_UTRA_RSCP_1, + template UTRA_EcN0_Type p_UTRA_EcN0_1, + template PhysCellIdUTRA_TDD p_PhysCellId_2, + template MeasResultUTRA.cgi_Info p_Cgi_Info_2, + template UTRA_RSCP_Type p_UTRA_RSCP_2, + template UTRA_EcN0_Type p_UTRA_EcN0_2) := + { /* @status APPROVED (LTE_IRAT) */ + measResultListUTRA := { permutation( //@sic R5s110435 Change2 sic@ + { + physCellId := { + fdd := p_PhysCellId_1 + }, + cgi_Info := p_Cgi_Info_1, + measResult := { + utra_RSCP := p_UTRA_RSCP_1, + utra_EcN0 := p_UTRA_EcN0_1, + additionalSI_Info_r9 := omit /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + } + }, + { + physCellId := { + fdd := p_PhysCellId_2 + }, + cgi_Info := p_Cgi_Info_2, + measResult := { + utra_RSCP := p_UTRA_RSCP_2, + utra_EcN0 := p_UTRA_EcN0_2, + additionalSI_Info_r9 := omit /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + } + } ) //@sic R5s110435 Change2 sic@ + } + }; + + template (present) MeasResults.measResultNeighCells cr_MeasResultNeighCells_measResultListUTRA_2Entries_TDD(template PhysCellIdUTRA_TDD p_PhysCellId_1, + template MeasResultUTRA.cgi_Info p_Cgi_Info_1, + template UTRA_RSCP_Type p_UTRA_RSCP_1, + template UTRA_EcN0_Type p_UTRA_EcN0_1, + template PhysCellIdUTRA_TDD p_PhysCellId_2, + template MeasResultUTRA.cgi_Info p_Cgi_Info_2, + template UTRA_RSCP_Type p_UTRA_RSCP_2, + template UTRA_EcN0_Type p_UTRA_EcN0_2) := + { /* @status APPROVED (LTE_IRAT) */ + measResultListUTRA := { permutation( //@sic R5s110435 Change2 sic@ + { + physCellId := { + tdd := p_PhysCellId_1 + }, + cgi_Info := p_Cgi_Info_1, + measResult := { + utra_RSCP := p_UTRA_RSCP_1, + utra_EcN0 := p_UTRA_EcN0_1, + additionalSI_Info_r9 := omit /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + } + }, + { + physCellId := { + tdd := p_PhysCellId_2 + }, + cgi_Info := p_Cgi_Info_2, + measResult := { + utra_RSCP := p_UTRA_RSCP_2, + utra_EcN0 := p_UTRA_EcN0_2, + additionalSI_Info_r9 := omit /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + } + } ) //@sic R5s110435 Change2 sic@ + } + }; + + //------------------------------------------------ + + template (present) MeasResultUTRA.cgi_Info cr_Cgi_Info_UTRA(template PLMN_Identity p_PLMN_Identity, + template CellGlobalIdUTRA.cellIdentity p_CellIdentity, + template MeasResultUTRA.cgi_Info.locationAreaCode p_LocationAreaCode, + template MeasResultUTRA.cgi_Info.routingAreaCode p_RoutingAreaCode, + template PLMN_IdentityList2 p_PLMN_IdentityList2) := + { /* @status APPROVED (LTE_IRAT) */ + cellGlobalId := { + plmn_Identity := p_PLMN_Identity, + cellIdentity := p_CellIdentity + }, + locationAreaCode := p_LocationAreaCode, + routingAreaCode := p_RoutingAreaCode, + plmn_IdentityList := p_PLMN_IdentityList2 + }; + + //------------------------------------------------ + + template (present) MeasResults.measResultNeighCells cr_MeasResultNeighCells_measResultListGERAN_1Entry(template integer p_ARFCN, + template BandIndicatorGERAN p_BandIndicator, + template PhysCellIdGERAN p_PhysCellId, + template MeasResultGERAN.cgi_Info p_Cgi_Info, + template RSSI_Range_Type p_RSSI) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + measResultListGERAN := { + { + carrierFreq := { + arfcn := p_ARFCN, + bandIndicator := p_BandIndicator + }, + physCellId := p_PhysCellId, + cgi_Info := p_Cgi_Info, + measResult := { + rssi := p_RSSI + } + } + } + }; + + //------------------------------------------------ + + template (present) MeasResultGERAN.cgi_Info cr_Cgi_Info_GERAN(template PLMN_Identity p_PLMN_Identity, + template CellGlobalIdGERAN.locationAreaCode p_LocationAreaCode, + template CellGlobalIdGERAN.cellIdentity p_CellIdentity, + template MeasResultGERAN.cgi_Info.routingAreaCode p_RoutingAreaCode ) := + { /* @status APPROVED (LTE_IRAT) */ + cellGlobalId := { + plmn_Identity := p_PLMN_Identity, + locationAreaCode := p_LocationAreaCode, + cellIdentity := p_CellIdentity + }, + routingAreaCode := p_RoutingAreaCode + }; + + + //**************************************************************** + //Templates defined in 36.508 + //**************************************************************** + + //------------------------------------------------ + //Table 4.6.6-1A: MeasGapconfig-GP1 + template (value) MeasGapConfig cs_508_MeasGapConfig_GP1 := + /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + cs_MeasGapConfig_setup_gp0(30); /* TGRP = 40ms + @sic R5-120235/R5-120236 offset changed from 0 to 30 sic@ */ + + //------------------------------------------------ + //Table 4.6.6-1A: MeasGapconfig-GP2 + template (value) MeasGapConfig cs_508_MeasGapConfig_GP2 := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_MeasGapConfig_setup_gp1(30); /* TGRP = 80ms + @sic R5-120235/R5-120236 offset changed from 0 to 30 sic@ */ + + //------------------------------------------------ + //Table 4.6.6-2: MeasObjectEUTRA-GENERIC(Freq) + template (value) MeasObjectToAddMod.measObject cs_508_MeasObjectEUTRA_GENERIC(ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq, + AllowedMeasBandwidth p_MeasurementBandwidth ) := + /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq, p_MeasurementBandwidth); + + //------------------------------------------------ + //Table 4.6.6-2A: MeasObjectGERAN-GENERIC(Freq) + template (value) MeasObjectToAddMod.measObject cs_508_MeasObjectGERAN_GENERIC(ARFCN_ValueGERAN p_StartingARFCN, + BandIndicatorGERAN p_BandIndicator, + template (value) ExplicitListOfARFCNs p_ExplicitListOfARFCNs) := + /* @status APPROVED (LTE_IRAT) */ + cs_MeasObject_measObjectGERAN(p_StartingARFCN, + p_BandIndicator, + cs_FollowingARFCNs_explicitListOfARFCNs( p_ExplicitListOfARFCNs ), + omit, '01000000'B, omit); // @sic R5-130453 sic@ + + //------------------------------------------------ + //Table 4.6.6-3: MeasObjectUTRA-GENERIC(Freq) + template (value) MeasObjectToAddMod.measObject cs_508_MeasObjectUTRA_GENERIC(ARFCN_ValueUTRA p_Freq) := + cs_MeasObject_measObjectUTRA( p_Freq, 0, omit, omit, omit ); + + //------------------------------------------------ + //Table 4.6.6-4: ReportConfigEUTRA-A1(Thres) + template (value) ReportConfigToAddMod.reportConfig cs_508_ReportConfigEUTRA_A1(EUTRA_RS_EPRE_Type p_Thres ) := + cs_ReportConfig_reportConfigEUTRA_eventA1_RSRP( p_Thres, 0, ms256, rsrp, both, 1, ms1024, r1 ); //Changed from infinity_ to r1; @sic CR R5-093093 sic@ + + //------------------------------------------------ + //Table 4.6.6-5: ReportConfigEUTRA-A2(Thres) + template (value) ReportConfigToAddMod.reportConfig cs_508_ReportConfigEUTRA_A2(EUTRA_RS_EPRE_Type p_Thres ) := + /* @status APPROVED (LTE_IRAT) */ + cs_ReportConfig_reportConfigEUTRA_eventA2_RSRP( p_Thres, 0, ms320, rsrp, both, 1, ms1024, r1 ); //Changed from infinity_ to r1; @sic CR R5-093093 sic@ + + //------------------------------------------------ + //Table 4.6.6-6: ReportConfigEUTRA-A3 + template (value) ReportConfigToAddMod.reportConfig cs_508_ReportConfigEUTRA_A3 := + /* @status APPROVED (LTE, LTE_A) */ + cs_ReportConfig_reportConfigEUTRA_eventA3( 0, false, 0, ms640, rsrp, both, 1, ms1024, r1 ); //Changed from infinity_ to r1; @sic CR R5-093093 sic@ + + //------------------------------------------------ + //Table 4.6.6-7: ReportConfigEUTRA-PERIODICAL + template (value) ReportConfigToAddMod.reportConfig cs_508_ReportConfigEUTRA_Periodical := + /* @status APPROVED (LTE) */ + cs_ReportConfig_reportConfigEUTRA_periodical( reportStrongestCells, rsrp, both, 1, ms1024, infinity_ ); + + //------------------------------------------------ + //Table 4.6.6-7E: ReportConfigInterRAT-B2-GERAN(EUTRA-Thres, GERAN-Thres) + template (value) ReportConfigToAddMod.reportConfig cs_508_ReportConfigInterRAT_B2_GERAN(EUTRA_RS_EPRE_Type p_EUTRA_Thres, + GERAN_RSSI_dBm_Type p_GERAN_Thres) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_ReportConfig_reportConfigInterRAT_eventB2_GERAN(p_EUTRA_Thres, + p_GERAN_Thres, + 0, + ms0, + 6, + ms1024, + r1); //Changed from infinity_ to r1, @sic CR R5-093093 sic@ + + //------------------------------------------------ + //Table 4.6.6-8: ReportConfigInterRAT-B2-UTRA(EUTRA-Thres, UTRA-Thres) + template (value) ReportConfigToAddMod.reportConfig cs_508_ReportConfigInterRAT_B2_UTRA_ConditionFDD(EUTRA_RS_EPRE_Type p_EUTRA_Thres, + UTRA_Ec_Io_dB_Type p_UTRA_Thres) := + /* @status APPROVED (LTE_IRAT) */ + cs_ReportConfig_reportConfigInterRAT_eventB2_UTRA_EcN0(p_EUTRA_Thres, + p_UTRA_Thres, + 3, + ms0, + 6, + ms1024, + r1); //Changed from infinity_ to r1, @sic CR R5-093093 sic@ + + //------------------------------------------------ + //Table 4.6.6-8: ReportConfigInterRAT-B2-UTRA(EUTRA-Thres, UTRA-Thres) + template (value) ReportConfigToAddMod.reportConfig cs_508_ReportConfigInterRAT_B2_UTRA_ConditionFDD_RSCP(EUTRA_RS_EPRE_Type p_EUTRA_Thres, + UTRA_RSCP_dBm_Type p_UTRA_Thres) := + /* @status APPROVED (LTE_A) */ + cs_ReportConfig_reportConfigInterRAT_eventB2_UTRA_RSCP( p_EUTRA_Thres, + p_UTRA_Thres, + 3, + ms0, + 6, + ms1024, + r1); //Changed from infinity_ to r1, @sic CR R5-093093 sic@ + + //------------------------------------------------ + //Table 4.6.6-8: ReportConfigInterRAT-B2-UTRA(EUTRA-Thres, UTRA-Thres) + template (value) ReportConfigToAddMod.reportConfig cs_508_ReportConfigInterRAT_B2_UTRA_ConditionTDD(EUTRA_RS_EPRE_Type p_EUTRA_Thres, + UTRA_RSCP_dBm_Type p_UTRA_Thres) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_ReportConfig_reportConfigInterRAT_eventB2_UTRA_RSCP( p_EUTRA_Thres, + p_UTRA_Thres, + 3, + ms0, + 6, + ms1024, + r1 ); //Changed from infinity_ to r1, @sic CR R5-093093 sic@ + + //------------------------------------------------ + //Table 4.6.6-9: ReportConfigInterRAT-PERIODICAL + template (value) ReportConfigToAddMod.reportConfig cs_508_ReportConfigInterRAT_Periodical := + /* @status APPROVED (LTE_IRAT) */ + cs_ReportConfig_reportConfigInterRAT_periodical( reportStrongestCells, 1, ms1024, infinity_ ); + + //**************************************************************** + // Templates used in other files + //**************************************************************** + + //------------------------------------------------ + //cs_Measurement_Config_A3 + //8_2\RRC_Handover + template (value) MeasConfig cs_Measurement_Config_A3(ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq, + AllowedMeasBandwidth p_MeasurementBandwidth, + template (omit) MeasGapConfig p_MeasGapConfig := omit) := + /* @sic R5s100477 Additional Changes: merge of cs_Measurement_Config_A3 and cs_MeasConfig_A3_InterFreq_UTRAN sic@ */ + /* @status APPROVED (LTE) */ + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_1Entry(1, cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq, p_MeasurementBandwidth)), + omit, + cs_ReportConfigToAddModList_1Entry(1, cs_508_ReportConfigEUTRA_A3), + omit, + cs_MeasIdToAddModList_1Entry( 1, 1, 1 ), + -, + p_MeasGapConfig); + + template (value) MeasConfig cs_Measurement_Config_A3_InterFreq(ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq1, + AllowedMeasBandwidth p_MeasurementBandwidth1, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq2, + AllowedMeasBandwidth p_MeasurementBandwidth2, + template (omit) MeasGapConfig p_MeasGapConfig := omit) := + /* @sic R5s100524 Change 1 sic@ */ + /* @status APPROVED (LTE) */ + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_2Entries(1, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq1, p_MeasurementBandwidth1), + 2, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq2, p_MeasurementBandwidth2)), + omit, + cs_ReportConfigToAddModList_1Entry(1, cs_508_ReportConfigEUTRA_A3), + omit, + cs_MeasIdToAddModList_1Entry( 1, 1, 1 ), + -, + p_MeasGapConfig); + + //------------------------------------------------ + //8.3.2.7, 8.3.2.9, 8.3.3.4, 8.3.3.5, 8.4.5.4, 8.4.7.1 Step1 + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_IratMeasB2_C2K (RRC_TransactionIdentifier p_RRC_TI, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq, //@sic CR R5-112614 sic@ + AllowedMeasBandwidth p_EUTRA_MeasurementBandwidth, //@sic CR R5-112614 sic@ + CDMA2000_Type p_CDMA2000_Type, + ARFCN_ValueCDMA2000 p_ARFCNCDMA2000, + BandclassCDMA2000 p_BandClassCDMA2000, + SearchWindowSize_Type p_SearchWindowSize, + MeasObjectId p_MeasObjectId, + PhysCellId p_PhysCellId, + integer p_CellIndex := 1, + QuantityConfigCDMA2000.measQuantityCDMA2000 p_MeasQuantity :=pilotStrength //@sic R5-120711 sic@ + ) := + /* @status APPROVED (LTE_IRAT) */ + cs_508_RRCConnectionReconfiguration_ConditionMEAS(p_RRC_TI, + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_2Entries(tsc_IdMeasObject_f1, //@sic CR R5-112614 sic@ + cs_508_MeasObjectEUTRA_GENERIC( p_EUTRA_DL_CarrierFreq, p_EUTRA_MeasurementBandwidth ), //@sic CR R5-112614 sic@ + p_MeasObjectId, + cs_MeasObject_measObjectCDMA2000(p_CDMA2000_Type, + p_ARFCNCDMA2000, + p_BandClassCDMA2000, + p_SearchWindowSize, + 0, + omit, + {cs_CellsToAddModCDMA2000 (p_CellIndex,p_PhysCellId)}, + omit ) ), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_B2_CDMA2000, + cs_508_ReportConfigInterRAT_B2_CDMA2000( -69 ) ), + omit, + cs_MeasIdToAddModList_1Entry( 1, p_MeasObjectId, tsc_IdReportConfig_B2_CDMA2000 ), + cs_QuantityConfig( omit, omit, omit, cs_QuantityConfigCDMA2000( p_MeasQuantity ) ), // 0 is just put here for compiling, this value is measQuantityCDMA2000 and is currently FFS as per 36508 + cs_508_MeasGapConfig_GP2)); // currently using this since the MeasGapConfig for CDMA2000 is not defined and the MeasGapConfig given in 36523 in test case prose cannot be found + + //------------------------------------------------ + //Resume inter frequency measurement + //8.3.1.9, Step8a1 + //8.3.1.10, Step9 + //8.3.1.11 Step15a1 + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_ResumeInterFreqMeas(RRC_TransactionIdentifier p_RRC_TI) := + /* @status APPROVED (LTE, LTE_A) */ + cs_508_RRCConnectionReconfiguration_ConditionMEAS(p_RRC_TI, + cs_MeasConfig(omit, + omit, + omit, + omit, + omit, + omit, + omit, //@sic R5-134465, R5s131042 sic@ + cs_508_MeasGapConfig_GP1)); + + //---------------------------------------------------------------------------- + // RRCConnectionReconfiguration (36.331 cl. 6.2.2) + + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_1Entry_IntraLTE(RRC_TransactionIdentifier p_RRC_TI, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq, + AllowedMeasBandwidth p_MeasurementBandwidth) := + /* @status APPROVED (LTE, LTE_A) */ + cs_508_RRCConnectionReconfiguration_ConditionMEAS(p_RRC_TI, + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_1Entry(tsc_IdMeasObject_f1, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq, p_MeasurementBandwidth)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_A3, + cs_508_ReportConfigEUTRA_A3), + omit, + cs_MeasIdToAddModList_1Entry(1, tsc_IdMeasObject_f1, tsc_IdReportConfig_A3))); + + //------------------------------------------------ + //measObjectToAddMod.measObject(CHOICE: measObjectCDMA2000) + //cs_MeasObject_measObjectCDMA2000 + template (value) MeasObjectToAddMod.measObject cs_MeasObject_measObjectCDMA2000(CDMA2000_Type p_CDMA2000_Type, + ARFCN_ValueCDMA2000 p_ARFCN, + BandclassCDMA2000 p_BandClass, + SearchWindowSize_Type p_SearchWindowSize, + template (omit) Q_OffsetRangeInterRAT p_OffsetFreq, + template (omit) CellIndexList p_CellsToRemoveList, + template (omit) CellsToAddModListCDMA2000 p_CellsToAddModList, + template (omit) PhysCellIdCDMA2000 p_CellForWhichToReportCGI ) := + { /* @status APPROVED (LTE_IRAT) */ + measObjectCDMA2000 := { + cdma2000_Type := p_CDMA2000_Type, + carrierFreq := { + bandClass := p_BandClass, + arfcn := p_ARFCN + }, + searchWindowSize := p_SearchWindowSize, + offsetFreq := p_OffsetFreq, + cellsToRemoveList := p_CellsToRemoveList, + cellsToAddModList := p_CellsToAddModList, + cellForWhichToReportCGI := p_CellForWhichToReportCGI + } + }; + + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_SRVCC_GERAN(RRC_TransactionIdentifier p_RRC_TI, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq, //@sic CR R5-112614 sic@ + AllowedMeasBandwidth p_EUTRA_MeasurementBandwidth, //@sic CR R5-112614 sic@ + ARFCN_ValueGERAN p_StartingARFCN, + BandIndicatorGERAN p_BandIndicator, + template (value) ExplicitListOfARFCNs p_ExplicitListOfARFCNs) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_508_RRCConnectionReconfiguration_ConditionMEAS(p_RRC_TI, + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_2Entries(tsc_IdMeasObject_f11, + cs_MeasObject_measObjectGERAN(p_StartingARFCN, + p_BandIndicator, + cs_FollowingARFCNs_explicitListOfARFCNs(p_ExplicitListOfARFCNs), + 0, + omit, + omit), + tsc_IdMeasObject_f1, + cs_508_MeasObjectEUTRA_GENERIC(p_EUTRA_DL_CarrierFreq, p_EUTRA_MeasurementBandwidth)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_B2_GERAN, // @sic R5s140674 sic@ + cs_ReportConfig_reportConfigInterRAT_eventB2_GERAN(-69, // @sic R5s140620 sic@ + -75, // @sic R5s140620 sic@ + 0, + ms0, + 6, + ms1024, + r1)), + omit, + cs_MeasIdToAddModList_1Entry(1, tsc_IdMeasObject_f11, tsc_IdReportConfig_B2_GERAN), // @sic R5s140158, R5s140620 sic@ + cs_QuantityConfig(cs_QuantityConfigEUTRA(omit, omit), + omit, + cs_QuantityConfigGERAN(rssi, fc0), + omit), + cs_508_MeasGapConfig_GP2)); + + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_GERAN_F1F11(RRC_TransactionIdentifier p_RRC_TI, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq_1, + AllowedMeasBandwidth p_MeasurementBandwidth_1, + ARFCN_ValueGERAN p_StartingARFCN, + BandIndicatorGERAN p_BandIndicator, + ExplicitListOfARFCNs p_ExplicitListOfARFCNs, + template (value) QuantityConfigGERAN p_QuantityConfigGERAN) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_508_RRCConnectionReconfiguration_ConditionMEAS(p_RRC_TI, + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_2Entries(tsc_IdMeasObject_f1, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq_1, p_MeasurementBandwidth_1), + tsc_IdMeasObject_f11, + cs_MeasObject_measObjectGERAN(p_StartingARFCN, + p_BandIndicator, + cs_FollowingARFCNs_explicitListOfARFCNs(p_ExplicitListOfARFCNs), + 0, + '01000000'B, + omit)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_B2_GERAN, + cs_508_ReportConfigInterRAT_B2_GERAN(-69, -79)), + omit, + cs_MeasIdToAddModList_1Entry(1, tsc_IdMeasObject_f11, tsc_IdReportConfig_B2_GERAN), + cs_QuantityConfig(omit, + omit, + p_QuantityConfigGERAN, + omit), + cs_508_MeasGapConfig_GP2)); + //------------------------------------------------ + + template (value) QuantityConfigCDMA2000 cs_QuantityConfigCDMA2000 (QuantityConfigCDMA2000.measQuantityCDMA2000 p_MeasQuantityCDMA2000 ) := + { /* @status APPROVED (LTE_IRAT) */ + measQuantityCDMA2000 := p_MeasQuantityCDMA2000 + }; + + template (value) ReportConfigToAddMod.reportConfig cs_508_ReportConfigInterRAT_B2_CDMA2000( EUTRA_RS_EPRE_Type p_EUTRA_Thres ) := + { /* @status APPROVED (LTE_IRAT) */ + reportConfigInterRAT := { + triggerType := { + event := { + eventId := { + eventB2 := { + b2_Threshold1 := { + threshold_RSRP := p_EUTRA_Thres + 140 //@sic Changed back from 141 (R5-0904639) to formerly 140, R5-100111 sic@ + }, + b2_Threshold2 := { + b2_Threshold2CDMA2000 := 30 // fixed to 30 (-15 DB as per 36508 9.0.0) + } + } + }, + hysteresis := 2, + timeToTrigger := ms0 + } + }, + maxReportCells := 8, + reportInterval := ms2048, + reportAmount := r1, + si_RequestForHO_r9 := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + reportQuantityUTRA_FDD_r10 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ */ + includeLocationInfo_r11 := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + } + }; + + template (present) MeasResultCDMA2000 cr_MeasResultCDMA2000(template PhysCellIdCDMA2000 p_PhysCellId, + template MeasResultCDMA2000.cgi_Info p_Cgi_Info, + template CDMA2000_PilotPnPhase p_PilotPnPhase, + template CDMA2000_PilotStrength p_PilotStrength) := + { /* @status APPROVED (LTE_IRAT) */ + physCellId := p_PhysCellId, + cgi_Info := p_Cgi_Info, + measResult := { + pilotPnPhase := p_PilotPnPhase, + pilotStrength := p_PilotStrength + } + }; + + template (present) MeasResults.measResultNeighCells cr_MeasResultNeighCells_measResultsCDMA2000_1Entry(template boolean p_PreRegistrationStatusHRPD, + template PhysCellIdCDMA2000 p_PhysCellId, + template MeasResultCDMA2000.cgi_Info p_Cgi_Info, + template CDMA2000_PilotPnPhase p_PilotPnPhase, + template CDMA2000_PilotStrength p_PilotStrength ) := + { /* @status APPROVED (LTE_IRAT) */ + /* @sic R5s120913 - additional change: usage of cr_MeasResultCDMA2000 sic@ */ + measResultsCDMA2000 := { + preRegistrationStatusHRPD := p_PreRegistrationStatusHRPD, + measResultListCDMA2000 := { + cr_MeasResultCDMA2000(p_PhysCellId, p_Cgi_Info, p_PilotPnPhase, p_PilotStrength) + } + } + }; + + template (present) MeasResults.measResultNeighCells cr_MeasResultNeighCells_measResultsCDMA2000_2Entries(template boolean p_PreRegistrationStatusHRPD, + template PhysCellIdCDMA2000 p_PhysCellId15, + template PhysCellIdCDMA2000 p_PhysCellId17, + template MeasResultCDMA2000.cgi_Info p_Cgi_Info_cell15, + template MeasResultCDMA2000.cgi_Info p_Cgi_Info_cell17, + template CDMA2000_PilotPnPhase p_PilotPnPhase_cell15, + template CDMA2000_PilotPnPhase p_PilotPnPhase_cell17, + template CDMA2000_PilotStrength p_PilotStrength_cell15, + template CDMA2000_PilotStrength p_PilotStrength_cell17 ) := + { /* @status APPROVED (LTE_IRAT) */ + measResultsCDMA2000 := { + preRegistrationStatusHRPD := p_PreRegistrationStatusHRPD, + measResultListCDMA2000 := { + cr_MeasResultCDMA2000(p_PhysCellId15, p_Cgi_Info_cell15, p_PilotPnPhase_cell15, p_PilotStrength_cell15), + cr_MeasResultCDMA2000(p_PhysCellId17, p_Cgi_Info_cell17, p_PilotPnPhase_cell17, p_PilotStrength_cell17) + } + } + }; + + template (value) CellsToAddModUTRA_TDD cs_CellsToAddModUTRA_TDD(template (value) CellsToAddModUTRA_TDD.cellIndex p_CellIndex, + template (value) PhysCellIdUTRA_TDD p_PhysCellId) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + cellIndex := p_CellIndex, + physCellId := p_PhysCellId + }; + + template (value) CellsToAddModListUTRA_TDD cs_CellsToAddModListUTRA_TDD_1Entry(template (value) CellsToAddModUTRA_TDD.cellIndex p_CellIndex, + template (value) PhysCellIdUTRA_TDD p_PhysCellId) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_CellsToAddModUTRA_TDD(p_CellIndex, p_PhysCellId) + }; + + +} //end of module diff --git a/LTE_A_IWD_14wk37/Common/EUTRA_Templates/EUTRA_RRC_Templates.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA_Templates/EUTRA_RRC_Templates.ttcn new file mode 100644 index 0000000..ac6caf1 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA_Templates/EUTRA_RRC_Templates.ttcn @@ -0,0 +1,1886 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 22:08:20 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12181 $ +/******************************************************************************/ + +module EUTRA_RRC_Templates { + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_CommonDefs all; + import from EUTRA_DRB_Templates all; + import from EUTRA_AuxiliaryFunctions all; + import from EUTRA_Parameters all; + import from CommonDefs all; + import from Parameters all; + import from EUTRA_SysInfo_Templates all; + + type RRCConnectionRelease.criticalExtensions.c1.rrcConnectionRelease_r8.nonCriticalExtension.nonCriticalExtension.nonCriticalExtension.extendedWaitTime_r10 ExtendedWaitTime_r10_Type; /* @status APPROVED (LTE_A) */ + + const B32_Type tsc_NonceMME := oct2bit ('11223344'O ); /* @sic R5-102227, R5-123655 Can be changed to pixit sic@ + @status APPROVED (LTE_A, LTE_IRAT) */ + //**************************************************************************** + // Auxilliary templates + //---------------------------------------------------------------------------- + + template (present) EstablishmentCause cr_EstablishmentCause_Any := ?; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + template (present) EstablishmentCause cr_EstablishmentCause_MoData := mo_Data; /* @status APPROVED (IMS, LTE) */ + template (present) EstablishmentCause cr_EstablishmentCause_mt_Access := mt_Access; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) EstablishmentCause cr_EstablishmentCause_MoSignalling := mo_Signalling; /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + template (present) EstablishmentCause cr_EstablishmentCause_HighPriorityAccess := highPriorityAccess; /* @status APPROVED (LTE) */ + template (present) EstablishmentCause cr_EstablishmentCause_emergency_Access := emergency; /* @status APPROVED (LTE, LTE_IRAT) */ + + template (present) ReestablishmentCause cr_ReestablishmentCause_Any := ?; /* @status APPROVED (LTE) */ + template (present) ReestablishmentCause cr_ReestablishmentCause_OtherFailure := otherFailure; /* @status APPROVED (LTE, LTE_A) */ + template (present) ReestablishmentCause cr_ReestablishmentCause_HandoverFailure := handoverFailure; /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + + //**************************************************************************** + // RLC configuration (36.331 cl. 6.3.2) + //---------------------------------------------------------------------------- + // Common templates for SRBs (SS configuration and peer-to-peer signalling) + + template (value) UL_AM_RLC cs_TX_AM_RLC_SRB1_Def := + { /* for the UE the tx direction is the UL, for SS it is the DL; + Default values as given in 36.331 cl. 9.2.1.1 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + t_PollRetransmit := ms45, /* ms0, ms5, ms10, ms15, ms20, ms25, ms30, ms35, ms40, ms45, ms50, ms55, ms60, ms65, ms70, ms75, ms80, + ms85, ms90, ms95, ms100, ms105, ms110, ms115, ms120, ms125, ms130, ms135, ms140, ms145, ms150, ms155, + ms160, ms165, ms170, ms175, ms180, ms185, ms190, ms195, ms200, ms205, ms210, ms215, ms220, ms225, + ms230, ms235, ms240, ms245, ms250, ms300, ms350, ms400, ms450, ms500 */ + pollPDU := pInfinity, /* p4, p8, p16, p32, p128, p256, p384, pInfinity */ + pollByte := kBinfinity, /* kB25, kB50, kB75, kB100, kB125, kB250, kB375, + kB500, kB750, kB1000, kB1250, kB1500, kB2000, + kB3000, kBinfinity, spare1 */ + maxRetxThreshold := t4 /* t1, t2, t3, t4, t6, t8, t16, t32 */ + }; + + template (value) UL_AM_RLC cs_TX_AM_RLC_SRB2_Def := cs_TX_AM_RLC_SRB1_Def; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + + template (value) DL_AM_RLC cs_RX_AM_RLC_SRB1_Def := + { /* for the UE the rx direction is the DL, for SS it is the UL + see default values as given in 36.331 cl. 9.2.1.1 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + t_Reordering := ms35, /* ms0, ms5, ms10, ms15, ms20, ms25, ms30, ms35, ms40, ms45, ms50, ms55, ms60, ms65, ms70, ms75, ms80, + ms85, ms90, ms95, ms100, ms110, ms120, ms130, ms140, ms150, ms160, ms170, ms180, ms190, ms200 */ + t_StatusProhibit := ms0 /* ms0, ms5, ms10, ms15, ms20, ms25, ms30, ms35, ms40, ms45, ms50, ms55, ms60, ms65, ms70,ms75, ms80, + ms85, ms90, ms95, ms100, ms105, ms110, ms115, ms120, ms125, ms130, ms135, ms140, ms145, ms150, ms155, + ms160, ms165, ms170, ms175, ms180, ms185, ms190, ms195, ms200, ms205, ms210, ms215, ms220, ms225, + ((ms230, ms235, ms240, ms245, ms250, ms300, ms350, ms400, ms450, ms500 */ + }; + + template (value) DL_AM_RLC cs_RX_AM_RLC_SRB2_Def := cs_RX_AM_RLC_SRB1_Def; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + + //---------------------------------------------------------------------------- + // RLC_Config for SRBs (36.331 cl. 6.3.2) + + template (value) RLC_Config cs_RLC_Configuration_SRB1_Default := + { + am := { + ul_AM_RLC := cs_TX_AM_RLC_SRB1_Def, + dl_AM_RLC := cs_RX_AM_RLC_SRB1_Def + } + }; + + template (value) RLC_Config cs_RLC_Configuration_SRB2_Default := + { + am := { + ul_AM_RLC := cs_TX_AM_RLC_SRB2_Def, + dl_AM_RLC := cs_RX_AM_RLC_SRB2_Def + } + }; + + //**************************************************************************** + // Transport channel configuration (36.331 cl. 6.3.2) + //---------------------------------------------------------------------------- + + template (value) UL_SCH_Config_Type cs_508_UL_SCH_Config := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + maxHARQ_Tx := n5, + periodicBSR_Timer := sf20, + retxBSR_Timer := sf320, + ttiBundling := false + }; + + template (value) UL_SCH_Config_Type cs_UL_SCH_Config_DisableBSR := + { /* @sic no_periodic_BSR_or_PHR for table Table 4.8.2.1.5-1 as a result of R5-096458 sic@ */ + /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + maxHARQ_Tx := n5, + periodicBSR_Timer := infinity_, + retxBSR_Timer := sf10240, + ttiBundling := false + }; + + template (value) DRX_Config cs_508_DRX_Config_Release := + { /* @desc To be used when no DRX is to be configured in SS and when DRX is released at UE */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + release := NULL + }; + + template (value) DRX_Config cs_508_DRX_Config_DrxS := + { /* Default values according to 36.508 cl. 4.8.2.1.5 Table 4.8.2.1.5-1 (using condition DRX_S) */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + setup := { + onDurationTimer := psf2, + drx_InactivityTimer := psf100, + drx_RetransmissionTimer := psf16, + longDRX_CycleStartOffset := { + sf40 := 4 /* @sic R5-104796 DRX support; further CR for 508 at TS GR 49 sic@ */ + }, + shortDRX := omit + } + }; + + template (value) DRX_Config cds_DRX_Config_LongOnTimer_DrxS modifies cs_508_DRX_Config_DrxS := + { /* Default values according to 36.508 cl. 4.8.2.1.5 Table 4.8.2.1.5-1 (using condition DRX_S), + except for onDurationTimer set to 40 ms so that effectively no DRX happens */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + setup := { + onDurationTimer := psf40 + } + }; + + template (value) DRX_Config cs_508_DRX_Config_DrxL := + { /* Default values according to 36.508 cl. 4.8.2.1.5 Table 4.8.2.1.5-1 (using condition DRX_L) */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + setup := { + onDurationTimer := psf6, + drx_InactivityTimer := psf1920, + drx_RetransmissionTimer := psf16, + longDRX_CycleStartOffset := { + sf1280 := 4 //@sic R5-106616 & R5s100692 change 5.1 sic@ + }, + shortDRX := omit + } + }; + + template (value) PHR_Config_Type cs_PHR_Config_Release := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + release := NULL + }; + + template (value) PHR_Config_Type cs_PHR_Config_Setup(PHR_Config_Type.setup.periodicPHR_Timer p_PeriodicPHR_Timer, + PHR_Config_Type.setup.prohibitPHR_Timer p_ProhibitPHR_Timer, + PHR_Config_Type.setup.dl_PathlossChange p_Dl_PathlossChange) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + setup := { + periodicPHR_Timer := p_PeriodicPHR_Timer, + prohibitPHR_Timer := p_ProhibitPHR_Timer, + dl_PathlossChange := p_Dl_PathlossChange + } + }; + + template (value) PHR_Config_Type cs_508_PHR_Config_Setup := cs_PHR_Config_Setup(sf500, sf200, dB3); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + + template (value) MAC_MainConfig_v1020_Type cs_508_MAC_MainConfig_v1020 := + { /* @status APPROVED (LTE_A) */ + sCellDeactivationTimer_r10 := omit, /* FFS in TS 36.508 V10.0.0 (2012-03) */ + extendedBSR_Sizes_r10 := setup, + extendedPHR_r10 := omit + }; + + template (value) MAC_MainConfig cs_MAC_MainConfig_Common(template (omit) UL_SCH_Config_Type p_UL_SCH_Config := cs_508_UL_SCH_Config, + template (omit) DRX_Config p_DRX_Config := omit, + TimeAlignmentTimer p_TimeAlignmentTimer := sf750, + template (omit) PHR_Config_Type p_PHR_Config := cs_508_PHR_Config_Setup, + template (omit) SR_ProhibitTimer_r9_Type p_SR_ProhibitTimer_r9 := omit, + template (omit) MAC_MainConfig_v1020_Type p_MAC_MainConfig_v1020 :=omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5s120700 change 2: new parameter p_SR_ProhibitTimer_r9 sic@ */ + ul_SCH_Config := p_UL_SCH_Config, + drx_Config := p_DRX_Config, + timeAlignmentTimerDedicated := p_TimeAlignmentTimer, + phr_Config := p_PHR_Config, + sr_ProhibitTimer_r9 := p_SR_ProhibitTimer_r9, /* @sic R5s110176 BASELINE MOVING 2011 sic@ NOTE: FFS in TS 36.508 V10.0.0 */ + mac_MainConfig_v1020 := p_MAC_MainConfig_v1020, /* @sic R5s120178 BASELINE MOVING 2012 sic@ NOTE: FFS in TS 36.508 V10.0.0 (may be set to cs_508_MAC_MainConfig_v1020) */ + stag_ToReleaseList_r11 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + stag_ToAddModList_r11 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + drx_Config_v1130 := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + }; + + template (value) MAC_MainConfig_Type cs_MAC_MainConfig_Explicit(template (value) MAC_MainConfig p_MAC_MainConfig) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_IRAT, LTE_A) */ + explicitValue := p_MAC_MainConfig + }; + + template (value) MAC_MainConfig_Type cs_MAC_MainConfig_Explicit_DisableBSR_ReleasePHR(template (omit) DRX_Config p_DRX_Config, + TimeAlignmentTimer p_TimeAlignmentTimer := sf750) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + explicitValue := cs_MAC_MainConfig_Common(cs_UL_SCH_Config_DisableBSR, p_DRX_Config, p_TimeAlignmentTimer, cs_PHR_Config_Release) + }; + + template (value) MAC_MainConfig_Type cs_MAC_MainConfig_Explicit_ReleasePHR(template (omit) DRX_Config p_DRX_Config, + TimeAlignmentTimer p_TimeAlignmentTimer := sf750) := + { /* @status APPROVED (LTE) */ + explicitValue := cs_MAC_MainConfig_Common(-, p_DRX_Config, p_TimeAlignmentTimer, cs_PHR_Config_Release) + }; + + template (value) MAC_MainConfig_Type cs_508_MAC_MainConfig_Explicit_RBC_DrxL(template (omit) MAC_MainConfig_v1020_Type p_MAC_MainConfig_v1020 := omit) := + { /* Depending on PICS pc_FeatrGrp_5 function returns: + pc_FeatrGrp_5 supported: DRX_L + pc_FeatrGrp_5 not supported: DRX not configured/released */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + explicitValue := cs_MAC_MainConfig_Common(-, f_GetUeDrxConfig(DRX_L), -, -, -, p_MAC_MainConfig_v1020) + }; + + template (value) MAC_MainConfig_Type cs_508_MAC_MainConfig_Explicit_RBC_DrxS := + { /* Depending on PICS pc_FeatrGrp_5 function returns: + pc_FeatrGrp_5 supported: DRX_S + pc_FeatrGrp_5 not supported: DRX not configured/released */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + explicitValue := cs_MAC_MainConfig_Common(-, f_GetUeDrxConfig(DRX_S)) + }; + + template (value) MAC_MainConfig_Type cs_MAC_MainConfig_SRB1(TimeAlignmentTimer p_TimeAlignmentTimer := sf750) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5s110469 sic@ */ + explicitValue := cs_MAC_MainConfig_Common(-, cs_508_DRX_Config_Release, p_TimeAlignmentTimer) + }; + + template (value) MAC_MainConfig_Type cs_MAC_MainConfig_Explicit_TA_Infinity := + { /* @status APPROVED (LTE) */ + explicitValue := cs_MAC_MainConfig_Common(-, -, infinity_) // @sic R5s133589 sic@ + }; + + template (value) MAC_MainConfig_Type cs_MAC_MainConfig_TA_Infinitive := + { /* @status APPROVED (LTE, LTE_IRAT) */ + explicitValue := cs_MAC_MainConfig_Common(omit, omit, infinity_, omit) + }; + + //-------------------------------------------------------- + /* + * @desc Returns the DRX-Configuration to be used by UE according to 36.508 Table 4.8.2.1.5-1: MAC-MainConfig-RBC + * @param p_DrxConfigurationCondition + * @return template (omit) DRX_Config + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_GetUeDrxConfig(DrxConfigurationCondition_Type p_DrxConfigurationCondition) return template (omit) DRX_Config + { /* @sic R5-104796 DRX support sic@ */ + var template (omit) DRX_Config v_Drx_Config; + + if (pc_FeatrGrp_5) { + select (p_DrxConfigurationCondition) { + case (DRX_L){ + //Configure DRX parameters with condition DRX_L + v_Drx_Config := cs_508_DRX_Config_DrxL; + /* DRX_L is the default condition in Idle Updated (No UM bearer(s) configured). + Reference 36.508 Table 4.6.3-16: RadioResourceConfigDedicated-SRB2-DRB(n,m) */ + } + case (DRX_S) { + //Configure DRX parameters with condition DRX_S according to 36.508 Table 4.8.2.1.5-1: MAC-MainConfig-RBC + v_Drx_Config := cs_508_DRX_Config_DrxS; + } + case (DRX_S_LongOnDuration) { + //Configure DRX parameters with condition DRX_S according to 36.508 Table 4.8.2.1.5-1: MAC-MainConfig-RBC + v_Drx_Config := cds_DRX_Config_LongOnTimer_DrxS; + } + case else { + FatalError (__FILE__, __LINE__, "DRX Configuration condition not recognised"); + } + } + } + else { + //If UE does not support pc_FeatrGrp_5 ( Long DRX cycle ) DRX is not configured in the default configuration + v_Drx_Config := omit; + } + return v_Drx_Config; + }; + + //**************************************************************************** + // Physical Layer configuration (36.508 cl. 4.8.2.1.6) + //---------------------------------------------------------------------------- + + template (value) PDSCH_ConfigDedicated cs_508_PDSCH_ConfigDedicated_Default := + { /* Default values according to 36.508 cl. 4.6.3 Table 4.6.3-6 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + p_a := dB_3 // @sic R5-100261 sic@ + }; + + template (value) PUSCH_ConfigDedicated cs_508_PUSCH_ConfigDedicated_Default := + { /* Default values according to 36.508 cl. 4.6.3 Table 4.6.3-11 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + betaOffset_ACK_Index := 9, + betaOffset_RI_Index := 6, + betaOffset_CQI_Index := 6 + }; + + template (value) UplinkPowerControlDedicated cs_508_UplinkPowerControlDedicated_Default := + { /* Default values according to 36.508 cl. 4.6.3 Table 4.6.3-26 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + p0_UE_PUSCH := 0, + deltaMCS_Enabled := en0, + accumulationEnabled := true, + p0_UE_PUCCH := 0, + pSRS_Offset := 3, + filterCoefficient := fc4 + }; + + template (value) TPC_PDCCH_Config cs_508_TPC_PDCCH_Config_Default_PUCCH := + { /* Defaule values according to 36.508 cl. 4.6.3 Table 4.6.3-24 (using condition PUCCH) */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + setup := { + tpc_RNTI := hex2bit('03FF'H), + tpc_Index := { + indexOfFormat3 := 1 + } + } + }; + + template (value) TPC_PDCCH_Config cs_508_TPC_PDCCH_Config_Default_PUSCH := + { /* Defaule values according to 36.508 cl. 4.6.3 Table 4.6.3-24 (using condition PUSCH) */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + setup := { + tpc_RNTI := hex2bit('01FA'H), + tpc_Index := { + indexOfFormat3 := 1 + } + } + }; + + template (value) CQI_ReportConfig cs_508_CQI_ReportConfig_Default(template (omit) CQI_ReportPeriodic p_CQI_ReportingPeriodic) := + { /* Default values according to 36.508 cl. 4.6.3 Table 4.6.3-2 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + cqi_ReportModeAperiodic := rm30, + nomPDSCH_RS_EPRE_Offset := 0, + cqi_ReportPeriodic := p_CQI_ReportingPeriodic + }; + + template (value) SchedulingRequestConfig cs_508_SchedulingRequest_Config_Default(SR_PUCCH_ResourceIndex_Type p_SR_PUCCH_ResourceIndex, + SR_ConfigIndex_Type p_SR_ConfigIndex, // @sic R5-102177 sic@ + Dsr_TransMax_Type p_Dsr_TransMax := n4) := + { /* Default values according to 36.508 cl. 4.6.3 Table 4.6.3-20 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + setup := { + sr_PUCCH_ResourceIndex := p_SR_PUCCH_ResourceIndex, // @sic R5s090312 sic@ + sr_ConfigIndex := p_SR_ConfigIndex, // @sic R5-102177 sic@ + dsr_TransMax := p_Dsr_TransMax + } + }; + + template (value) PhysicalConfigDedicated cs_508_PhysicalConfigDedicated_Default_RBC_HO(template (omit) PUCCH_ConfigDedicated p_PUCCH_ConfigDedicated := omit, + template (omit) CQI_ReportPeriodic p_CQI_ReportingPeriodic, + template (omit) SoundingRS_UL_ConfigDedicated p_SoundingRsUl_ConfigDedicated, + template (value) PhysicalConfigDedicated_AntennaInfo_Type p_AntennaInfo, // @sic R5-100786 sic@ + template (omit) SchedulingRequestConfig p_SchedulingRequestConfig := omit) := + { /* Default values according to 36.508 cl. 4.8.2.1.6 Table 4.8.2.1.6-1 for condition RBC or RBC-HO: + (for RBC pucch-ConfigDedicated and schedulingRequestConfig are 'not present' i.e. p_PUCCH_ConfigDedicated and p_SchedulingRequestConfig shall be omit */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5s100473: additional changes (new parameter p_SchedulingRequestConfig) sic@ */ + /* @sic R5s120663 change 6: new parameter p_PUCCH_ConfigDedicated sic@ */ + pdsch_ConfigDedicated := omit, + pucch_ConfigDedicated := p_PUCCH_ConfigDedicated, + pusch_ConfigDedicated := omit, + uplinkPowerControlDedicated := omit, + tpc_PDCCH_ConfigPUCCH := cs_508_TPC_PDCCH_Config_Default_PUCCH, + tpc_PDCCH_ConfigPUSCH := cs_508_TPC_PDCCH_Config_Default_PUSCH, + cqi_ReportConfig := cs_508_CQI_ReportConfig_Default(p_CQI_ReportingPeriodic), + soundingRS_UL_ConfigDedicated := p_SoundingRsUl_ConfigDedicated, + antennaInfo := p_AntennaInfo, // @sic R5-100786 sic@ + schedulingRequestConfig := p_SchedulingRequestConfig, + cqi_ReportConfig_v920 := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + antennaInfo_v920 := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + antennaInfo_r10 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ NOTE: condition in 36.508 cl. 4.8.2.1.5 is still FFS */ + antennaInfoUL_r10 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ NOTE: condition in 36.508 cl. 4.8.2.1.5 is still FFS */ + cif_Presence_r10 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ NOTE: condition in 36.508 cl. 4.8.2.1.5 is still FFS */ + cqi_ReportConfig_r10 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ NOTE: condition in 36.508 cl. 4.8.2.1.5 is still FFS */ + csi_RS_Config_r10 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ NOTE: condition in 36.508 cl. 4.8.2.1.5 is still FFS */ + pucch_ConfigDedicated_v1020 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ NOTE: condition in 36.508 cl. 4.8.2.1.5 is still FFS */ + pusch_ConfigDedicated_v1020 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ NOTE: condition in 36.508 cl. 4.8.2.1.5 is still FFS */ + schedulingRequestConfig_v1020 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ NOTE: condition in 36.508 cl. 4.8.2.1.5 is still FFS */ + soundingRS_UL_ConfigDedicated_v1020 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ NOTE: condition in 36.508 cl. 4.8.2.1.5 is still FFS */ + soundingRS_UL_ConfigDedicatedAperiodic_r10 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ NOTE: condition in 36.508 cl. 4.8.2.1.5 is still FFS */ + uplinkPowerControlDedicated_v1020 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ NOTE: condition in 36.508 cl. 4.8.2.1.5 is still FFS */ + additionalSpectrumEmissionCA_r10 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ NOTE: condition in 36.508 cl. 4.8.2.1.5 is still FFS */ + csi_RS_ConfigNZPToReleaseList_r11 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + csi_RS_ConfigNZPToAddModList_r11 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + csi_RS_ConfigZPToReleaseList_r11 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + csi_RS_ConfigZPToAddModList_r11 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + epdcch_Config_r11 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + pdsch_ConfigDedicated_v1130 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + cqi_ReportConfig_v1130 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + pucch_ConfigDedicated_v1130 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + pusch_ConfigDedicated_v1130 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + uplinkPowerControlDedicated_v1130 := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + }; + + template (value) PhysicalConfigDedicated cs_508_PhysicalConfigDedicated_Default_RBC(template (omit) CQI_ReportPeriodic p_CQI_ReportingPeriodic, + template (omit) SoundingRS_UL_ConfigDedicated p_SoundingRsUl_ConfigDedicated, + template (value) PhysicalConfigDedicated_AntennaInfo_Type p_AntennaInfo) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5s120663 change 6 sic@ */ + cs_508_PhysicalConfigDedicated_Default_RBC_HO(-, p_CQI_ReportingPeriodic, p_SoundingRsUl_ConfigDedicated, p_AntennaInfo, -); + + + template (value) PhysicalConfigDedicated cs_508_PhysicalConfigDedicated_Default_SRB1(template (value) PUCCH_ConfigDedicated p_PUCCH_ConfigDedicated, + template (omit) CQI_ReportPeriodic p_CQI_ReportingPeriodic, // @sic R5-120497 sic@ + template (omit) SoundingRS_UL_ConfigDedicated p_SoundingRsUl_ConfigDedicated, // @sic R5-120497 sic@ + SR_PUCCH_ResourceIndex_Type p_SR_PUCCH_ResourceIndex, // @sic R5s090312 sic@ + template (value) PhysicalConfigDedicated_AntennaInfo_Type p_AntennaInfo, // @sic R5-100786 sic@ + SR_ConfigIndex_Type p_SR_ConfigIndex) := // @sic R5-102177 sic@ + { /* Default values according to 36.508 cl. 4.8.2.1.6 Table 4.8.2.1.6-1 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + pdsch_ConfigDedicated := cs_508_PDSCH_ConfigDedicated_Default, + pucch_ConfigDedicated := p_PUCCH_ConfigDedicated, + pusch_ConfigDedicated := cs_508_PUSCH_ConfigDedicated_Default, + uplinkPowerControlDedicated := cs_508_UplinkPowerControlDedicated_Default, + tpc_PDCCH_ConfigPUCCH := omit, + tpc_PDCCH_ConfigPUSCH := omit, + cqi_ReportConfig := cs_508_CQI_ReportConfig_Default(p_CQI_ReportingPeriodic), // @sic R5-120497 sic@ + soundingRS_UL_ConfigDedicated := p_SoundingRsUl_ConfigDedicated, // @sic R5-120497 sic@ + antennaInfo := p_AntennaInfo, // @sic R5-100786 sic@ + schedulingRequestConfig := cs_508_SchedulingRequest_Config_Default(p_SR_PUCCH_ResourceIndex, p_SR_ConfigIndex), + cqi_ReportConfig_v920 := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + antennaInfo_v920 := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + antennaInfo_r10 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ NOTE: condition in 36.508 cl. 4.8.2.1.5 is still FFS */ + antennaInfoUL_r10 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ NOTE: condition in 36.508 cl. 4.8.2.1.5 is still FFS */ + cif_Presence_r10 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ NOTE: condition in 36.508 cl. 4.8.2.1.5 is still FFS */ + cqi_ReportConfig_r10 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ NOTE: condition in 36.508 cl. 4.8.2.1.5 is still FFS */ + csi_RS_Config_r10 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ NOTE: condition in 36.508 cl. 4.8.2.1.5 is still FFS */ + pucch_ConfigDedicated_v1020 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ NOTE: condition in 36.508 cl. 4.8.2.1.5 is still FFS */ + pusch_ConfigDedicated_v1020 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ NOTE: condition in 36.508 cl. 4.8.2.1.5 is still FFS */ + schedulingRequestConfig_v1020 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ NOTE: condition in 36.508 cl. 4.8.2.1.5 is still FFS */ + soundingRS_UL_ConfigDedicated_v1020 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ NOTE: condition in 36.508 cl. 4.8.2.1.5 is still FFS */ + soundingRS_UL_ConfigDedicatedAperiodic_r10 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ NOTE: condition in 36.508 cl. 4.8.2.1.5 is still FFS */ + uplinkPowerControlDedicated_v1020 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ NOTE: condition in 36.508 cl. 4.8.2.1.5 is still FFS */ + additionalSpectrumEmissionCA_r10 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ NOTE: condition in 36.508 cl. 4.8.2.1.5 is still FFS */ + csi_RS_ConfigNZPToReleaseList_r11 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + csi_RS_ConfigNZPToAddModList_r11 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + csi_RS_ConfigZPToReleaseList_r11 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + csi_RS_ConfigZPToAddModList_r11 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + epdcch_Config_r11 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + pdsch_ConfigDedicated_v1130 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + cqi_ReportConfig_v1130 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + pucch_ConfigDedicated_v1130 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + pusch_ConfigDedicated_v1130 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + uplinkPowerControlDedicated_v1130 := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + }; + + template (value) PhysicalConfigDedicated cs_508_PhysicalConfigDedicated_Default_HO(template (value) PUCCH_ConfigDedicated p_PUCCH_ConfigDedicated, + template (omit) CQI_ReportPeriodic p_CQI_ReportingPeriodic, // @sic R5-120497 sic@ + SR_PUCCH_ResourceIndex_Type p_SR_PUCCH_ResourceIndex, // @sic R5s090312 sic@ + template (value) PhysicalConfigDedicated_AntennaInfo_Type p_AntennaInfo, // @sic R5-100786 sic@ + SR_ConfigIndex_Type p_SR_ConfigIndex) := // @sic R5-102177 sic@ + { /* Default values according to 36.508 cl. 4.8.2.1.6 Table 4.8.2.1.6-1 for condition HO-TO-EUTRA */ + /* @status APPROVED (LTE_A, LTE, LTE_IRAT) */ + // @sic R5-123630 sic@ + pdsch_ConfigDedicated := cs_508_PDSCH_ConfigDedicated_Default, + pucch_ConfigDedicated := p_PUCCH_ConfigDedicated, + pusch_ConfigDedicated := cs_508_PUSCH_ConfigDedicated_Default, + uplinkPowerControlDedicated := cs_508_UplinkPowerControlDedicated_Default, + tpc_PDCCH_ConfigPUCCH := cs_508_TPC_PDCCH_Config_Default_PUCCH, + tpc_PDCCH_ConfigPUSCH := cs_508_TPC_PDCCH_Config_Default_PUSCH, + cqi_ReportConfig := cs_508_CQI_ReportConfig_Default(p_CQI_ReportingPeriodic), + soundingRS_UL_ConfigDedicated := omit, + antennaInfo := p_AntennaInfo, + schedulingRequestConfig := cs_508_SchedulingRequest_Config_Default(p_SR_PUCCH_ResourceIndex, p_SR_ConfigIndex), + cqi_ReportConfig_v920 := omit, + antennaInfo_v920 := omit, + antennaInfo_r10 := omit, + antennaInfoUL_r10 := omit, + cif_Presence_r10 := omit, + cqi_ReportConfig_r10 := omit, + csi_RS_Config_r10 := omit, + pucch_ConfigDedicated_v1020 := omit, + pusch_ConfigDedicated_v1020 := omit, + schedulingRequestConfig_v1020 := omit, + soundingRS_UL_ConfigDedicated_v1020 := omit, + soundingRS_UL_ConfigDedicatedAperiodic_r10 := omit, + uplinkPowerControlDedicated_v1020 := omit, + additionalSpectrumEmissionCA_r10 := omit, + csi_RS_ConfigNZPToReleaseList_r11 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + csi_RS_ConfigNZPToAddModList_r11 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + csi_RS_ConfigZPToReleaseList_r11 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + csi_RS_ConfigZPToAddModList_r11 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + epdcch_Config_r11 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + pdsch_ConfigDedicated_v1130 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + cqi_ReportConfig_v1130 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + pucch_ConfigDedicated_v1130 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + pusch_ConfigDedicated_v1130 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + uplinkPowerControlDedicated_v1130 := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + }; + + template (value) RLF_TimersAndConstants_r9 cs_RLF_TimersAndConstants_r9 := + { /* @status APPROVED (LTE) */ + /* @sic R5s120808 change 1 sic@ */ + setup := { + t301_r9 := ms1000, + t310_r9 := ms1000, + n310_r9 := n1, + t311_r9 := ms1000, + n311_r9 := n1 + } + }; + + template (value) RACH_ConfigDedicated cs_RACH_ConfigDedicated (Ra_PreambleIndex_Type p_Ra_PreambleIndex := tsc_EUTRA_PrachPreambleIndex_Dedicated_Def, + Ra_PRACH_MaskIndex_Type p_Ra_PRACH_MaskIndex := 0) := + { /* Value for p_Ra_PreambleIndex arbitrarily selected out of dedicated random access preambles; + with RACH-ConfigCommon.preambleInfo.numberOfRA-Preambles:=n52 (as signalled by SIB2 or RRCConnectionReconfiguration) + dedicated random access preambles have index 52..63 (see 36.321 cl. 5.1.1 and 5.1.2); + Value for ra_PRACH_MaskIndex arbitrarily selected so that PRACH Resource Index 0 is selected */ + /* @sic R5s100138 change 5 sic@ */ + /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + ra_PreambleIndex := p_Ra_PreambleIndex, + ra_PRACH_MaskIndex := p_Ra_PRACH_MaskIndex + }; + + template (value) PUCCH_ConfigDedicated cs_508_PUCCH_ConfigDedicated_Default_FDD := + { /* 36.508 Table 4.6.3-9: PUCCH-ConfigDedicated-DEFAULT */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + ackNackRepetition := { + release := NULL + }, + tdd_AckNackFeedbackMode := omit + }; + + template (value) PUCCH_ConfigDedicated cds_508_PUCCH_ConfigDedicated_Default_TDD + modifies cs_508_PUCCH_ConfigDedicated_Default_FDD := + { /* Default values according to 36.508 Table 4.6.3-9: PUCCH-ConfigDedicated-DEFAULT */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + tdd_AckNackFeedbackMode := multiplexing + }; + + template (value) SoundingRS_UL_ConfigDedicated cs_508_SoundingRsUl_ConfigDedicated_Default_FDD := + { /* 36.508 Table 4.6.3-22: SoundingRsUl-ConfigDedicated-DEFAULT */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + setup := { + srs_Bandwidth := bw0, + srs_HoppingBandwidth := hbw0, + freqDomainPosition := 0, + duration := true, + srs_ConfigIndex := 20, + transmissionComb := 0, + cyclicShift := cs0 + } + }; + + template (value) SoundingRS_UL_ConfigDedicated cds_508_SoundingRsUl_ConfigDedicated_Default_TDD + modifies cs_508_SoundingRsUl_ConfigDedicated_Default_FDD := + { /* Default values according to 36.508 Table 4.6.3-22: SoundingRsUl-ConfigDedicated-DEFAULT */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + setup := { + srs_ConfigIndex := 31 + } + }; + + template (value) CQI_ReportPeriodic cs_CQI_ReportingPeriodic_FDD := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + setup := { + cqi_PUCCH_ResourceIndex := 0, + cqi_pmi_ConfigIndex := 25, + cqi_FormatIndicatorPeriodic := { + widebandCQI := NULL + }, + ri_ConfigIndex := 483, + simultaneousAckNackAndCQI := false + } + }; + + template (value) CQI_ReportPeriodic cds_CQI_ReportingPeriodic_TDD modifies cs_CQI_ReportingPeriodic_FDD := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + setup := { + cqi_pmi_ConfigIndex := 24, + ri_ConfigIndex := 484 + } + }; + + //**************************************************************************** + // Radio Resource configuration (36.331 cl. 6.3.2) + //---------------------------------------------------------------------------- + + template (value) SRB_ToAddMod cs_508_SRB1_ToAddMod_DEFAULT := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + srb_Identity := 1, + rlc_Config := { + defaultValue := NULL /* default values for SRB2 according to cl. 9.2.1.1 */ + }, + logicalChannelConfig := { + defaultValue := NULL /* default values for SRB2 according to cl. 9.2.1.1 */ + } + }; + + template (value) SRB_ToAddMod cs_508_SRB2_ToAddMod_DEFAULT := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + srb_Identity := 2, + rlc_Config := { + defaultValue := NULL /* default values for SRB2 according to cl. 9.2.1.2 */ + }, + logicalChannelConfig := { + defaultValue := NULL /* default values for SRB2 according to cl. 9.2.1.2 */ + } + }; + + //---------------------------------------------------------------------------- + + template (value) RadioResourceConfigDedicated cs_RadioResourceConfigDedicated_MacPhy(template (omit) MAC_MainConfig_Type p_Mac_MainConfig := omit, + template (omit) SPS_Config p_SPS_Config := omit, + template (omit) PhysicalConfigDedicated p_PhysicalConfigDedicated := omit ) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + srb_ToAddModList := omit, + drb_ToAddModList := omit, + drb_ToReleaseList := omit, + mac_MainConfig := p_Mac_MainConfig, + sps_Config := p_SPS_Config, + physicalConfigDedicated := p_PhysicalConfigDedicated, + rlf_TimersAndConstants_r9 := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + measSubframePatternPCell_r10 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ */ + neighCellsCRS_Info_r11 := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + }; + + template (value) RadioResourceConfigDedicated cs_RadioResourceConfigDedicated_PhyConfig (template (value) PhysicalConfigDedicated p_PhysicalConfigDedicated) := + /* @sic R5s120178 BASELINE MOVING 2012 sic@ */ + /* @status APPROVED (LTE, LTE_A) */ + cs_RadioResourceConfigDedicated_MacPhy(-, -, p_PhysicalConfigDedicated); + + + template (value) RadioResourceConfigDedicated cs_508_RadioResourceConfigDedicated_HO(template (omit) PUCCH_ConfigDedicated p_PUCCH_ConfigDedicated, + template (omit) CQI_ReportPeriodic p_CQI_ReportingPeriodic, + template (omit) SoundingRS_UL_ConfigDedicated p_SoundingRsUl_ConfigDedicated, + template (value) PhysicalConfigDedicated_AntennaInfo_Type p_AntennaInfo, // @sic R5-100786 sic@ + SR_PUCCH_ResourceIndex_Type p_SR_PUCCH_ResourceIndex, // @sic R5-103678 sic@ + SR_ConfigIndex_Type p_SR_ConfigIndex, // @sic R5-103678 sic@ + Dsr_TransMax_Type p_Dsr_TransMax := n4) := // @sic R5s100473 sic@ + /* Default values according to 36.508 cl. 4.6.3 Table 4.6.3-19 */ + /* @sic R5-103678 sic@ */ + /* @sic R5s100473: cds_508_PhysicalConfigDedicated_Default_RBC_HO replaced by cs_508_PhysicalConfigDedicated_Default_RBC sic@ */ + /* @sic R5s120178 BASELINE MOVING 2012 sic@ */ + /* @sic R5s120663 change 6: new parameter p_PUCCH_ConfigDedicated; cs_508_PhysicalConfigDedicated_Default_RBC_HO instead of cs_508_PhysicalConfigDedicated_Default_RBC sic@ */ + /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + cs_RadioResourceConfigDedicated_MacPhy(-, -, cs_508_PhysicalConfigDedicated_Default_RBC_HO(p_PUCCH_ConfigDedicated, + p_CQI_ReportingPeriodic, + p_SoundingRsUl_ConfigDedicated, + p_AntennaInfo, + cs_508_SchedulingRequest_Config_Default(p_SR_PUCCH_ResourceIndex, // @sic R5-103678 sic@ + p_SR_ConfigIndex, // @sic R5-103678 sic@ + p_Dsr_TransMax))); + + //---------------------------------------------------------------------------- + + template (value) RadioResourceConfigDedicated cs_RadioResourceConfigDedicated_SrbDrbConfig(template (omit) SRB_ToAddModList p_SRB_ToAddModList := omit, + template (omit) DRB_ToAddModList p_DRB_ToAddModList := omit, + template (omit) MAC_MainConfig_Type p_MAC_MainConfig := omit, + template (omit) PhysicalConfigDedicated p_PhysicalConfigDedicated := omit, + template (omit) RLF_TimersAndConstants_r9 p_RLF_TimersAndConstants_r9 := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + srb_ToAddModList := p_SRB_ToAddModList, + drb_ToAddModList := p_DRB_ToAddModList, + drb_ToReleaseList := omit, + mac_MainConfig := p_MAC_MainConfig, + sps_Config := omit, + physicalConfigDedicated := p_PhysicalConfigDedicated, + rlf_TimersAndConstants_r9 := p_RLF_TimersAndConstants_r9, /* @sic R5s110176 BASELINE MOVING 2011 sic@ @sic R5s120808 sic@ */ + measSubframePatternPCell_r10 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ */ + neighCellsCRS_Info_r11 := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + }; + + template (value) RadioResourceConfigDedicated cs_508_RadioResourceConfigDedicated_SRB1(template (value) MAC_MainConfig_Type p_MAC_MainConfig, + template (value) PhysicalConfigDedicated p_PhysicalConfigDedicated) := + /* Default value according to 36.508 cl. 4.6.3 Table 4.6.3-15 */ + /* @sic R5s120178 BASELINE MOVING 2012 sic@ */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + cs_RadioResourceConfigDedicated_SrbDrbConfig( {cs_508_SRB1_ToAddMod_DEFAULT}, -, p_MAC_MainConfig, p_PhysicalConfigDedicated); + + + template (value) RadioResourceConfigDedicated cs_508_RadioResourceConfigDedicated_SRB2(template (value) DRB_ToAddModList p_DRB_ToAddModList, + template (value) MAC_MainConfig_Type p_MAC_MainConfig, + template (value) PhysicalConfigDedicated p_PhysicalConfigDedicated, + template (omit) RLF_TimersAndConstants_r9 p_RLF_TimersAndConstants_r9 := omit) := + /* Default value according to 36.508 cl. 4.6.3 Table 4.6.3-16 */ + /* @sic R5s120178 BASELINE MOVING 2012 sic@ */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + cs_RadioResourceConfigDedicated_SrbDrbConfig( {cs_508_SRB2_ToAddMod_DEFAULT}, p_DRB_ToAddModList, p_MAC_MainConfig, p_PhysicalConfigDedicated, p_RLF_TimersAndConstants_r9); // @sic R5s120808 sic@ + + template (value) RadioResourceConfigDedicated cs_SRB2_1AM_DRB_Config_Def(template (omit) CQI_ReportPeriodic p_CQI_ReportingPeriodic, + template (omit) SoundingRS_UL_ConfigDedicated p_SoundingRsUl_ConfigDedicated, + template (value) PhysicalConfigDedicated_AntennaInfo_Type p_AntennaInfo, + DRB_Identity p_DRB_Id := tsc_DRB1) := // @sic R5-100786 sic@ + + /* Values according to 36.508 cl. 4.6.3 Table 4.6.3-16 (using condition n=1 & m=0) */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5-144797: parameter p_DRB_Id sic@ */ + cs_508_RadioResourceConfigDedicated_SRB2({ cs_508_DRB_ToAddMod_DEFAULT_AM(tsc_DRB1) }, + cs_508_MAC_MainConfig_Explicit_RBC_DrxL, + cs_508_PhysicalConfigDedicated_Default_RBC(p_CQI_ReportingPeriodic, p_SoundingRsUl_ConfigDedicated, p_AntennaInfo)); //@sic R5-100786 sic@ + + template (value) RadioResourceConfigDedicated cs_RadioResourceConfig_DRB_RECONFIG(template (value) DRB_ToAddModList p_DRB_ToAddModList := cs_508_DRB_ToAddModList_RECONFIG, + template (omit) MAC_MainConfig_Type p_MAC_MainConfig := omit) := + /* Default value according to 36.508 cl. 4.6.3 Table 4.6.3-16 */ + /* @sic R5s100464 Additional Changes sic@ */ + /* @sic R5s120178 BASELINE MOVING 2012 sic@ */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + cs_RadioResourceConfigDedicated_SrbDrbConfig(-, p_DRB_ToAddModList, p_MAC_MainConfig); + + template (value) RadioResourceConfigDedicated cs_508_RadioResourceConfigDedicated_AddAmDrb(DRB_Identity p_DRB_Id) := + /* Values according to 36.508 cl. 4.6.3 Table 4.6.3-17 (using condition n=1 and m=0) */ + /* @sic R5s120178 BASELINE MOVING 2012 sic@ */ + /* @status APPROVED (IMS, LTE) */ + cs_RadioResourceConfig_DRB_RECONFIG({cs_508_DRB_ToAddMod_DEFAULT_AM(p_DRB_Id)}); + + template (value) RadioResourceConfigDedicated cs_508_RadioResourceConfigDedicated_AddUmDrb(DRB_Identity p_DRB_Id) := + /* Values according to 36.508 cl. 4.6.3 Table 4.6.3-17 (using condition n=1 and m=1) */ + /* @status APPROVED (IMS, LTE) */ + /* @sic R5s120178 BASELINE MOVING 2012 sic@ */ + /* @status APPROVED (LTE) */ + cs_RadioResourceConfig_DRB_RECONFIG({cs_508_DRB_ToAddMod_DEFAULT_UM(p_DRB_Id)}, + cs_508_MAC_MainConfig_Explicit_RBC_DrxS); //Since m > 0 (where m represents number of RLC-UM bearers being added) + + template (value) RadioResourceConfigDedicated cs_RadioResourceConfigDedicated_DRB_Release(DRB_Identity p_DRB_Id) := + { /* To release one specific Radio Bearer */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + srb_ToAddModList := omit, + drb_ToAddModList := omit, + drb_ToReleaseList := {p_DRB_Id}, + mac_MainConfig := omit, + sps_Config := omit, + physicalConfigDedicated := omit, + rlf_TimersAndConstants_r9 := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + measSubframePatternPCell_r10 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ */ + neighCellsCRS_Info_r11 := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + }; + + template (value) PRACH_Config cs_PRACH_Config_Def(template (value) PRACH_ConfigSIB p_PRACH_Configuration) := + { /* as signalled in SIB2 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + rootSequenceIndex := p_PRACH_Configuration.rootSequenceIndex, //INTEGER (0..837) + prach_ConfigInfo := p_PRACH_Configuration.prach_ConfigInfo + }; + + template (value) RadioResourceConfigCommon cds_RadioResourceConfigCommon_FullConfig(template (value) RACH_ConfigCommon p_RACH_ConfigCommon, + template (value) PRACH_Config p_PRACH_Configuration, + template (value) PUSCH_ConfigCommon p_PUSCH_ConfigCommon, + template (value) SoundingRS_UL_ConfigCommon p_SoundingRsUl_ConfigCommon, + template (omit) TDD_Config p_Tdd_Configuration, + template (omit) AntennaInfoCommon p_AntennaInfoCommon, + template (omit) PUCCH_ConfigCommon p_PUCCH_ConfigCommon := omit, + P_b_Type p_P_b) + modifies cs_RadioResourceConfigCommon_Def := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + pdsch_ConfigCommon := cs_508_PDSCH_ConfigCommon_Default(p_P_b), + phich_Config := cs_508_PHICH_Config_Default, + uplinkPowerControlCommon := cs_508_UplinkPowerControlCommon_Default, + antennaInfoCommon := p_AntennaInfoCommon + }; + + template (value) RadioResourceConfigCommon cs_RadioResourceConfigCommon_Def(template (value) RACH_ConfigCommon p_RACH_ConfigCommon, + template (value) PRACH_Config p_PRACH_Configuration, + template (value) PUSCH_ConfigCommon p_PUSCH_ConfigCommon, + template (value) SoundingRS_UL_ConfigCommon p_SoundingRsUl_ConfigCommon, + template (omit) TDD_Config p_Tdd_Configuration, + template (omit) AntennaInfoCommon p_AntennaInfoCommon, + template (omit) PUCCH_ConfigCommon p_PUCCH_ConfigCommon := omit) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + rach_ConfigCommon := p_RACH_ConfigCommon, /* @sic R5s100135 sic@ */ + prach_Config := p_PRACH_Configuration, + pdsch_ConfigCommon := omit, + pusch_ConfigCommon := p_PUSCH_ConfigCommon, + phich_Config := omit, + pucch_ConfigCommon := p_PUCCH_ConfigCommon, /* @sic R5s120209 change 4 sic@ */ + soundingRS_UL_ConfigCommon := p_SoundingRsUl_ConfigCommon, + uplinkPowerControlCommon := omit, + antennaInfoCommon := p_AntennaInfoCommon, // @sic R5-100786 sic@ + p_Max := omit, + tdd_Config := p_Tdd_Configuration, + ul_CyclicPrefixLength := len1, //According to 36.508 cl. 4.6.3 Table 4.6.3-13 + uplinkPowerControlCommon_v1020 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ */ + tdd_Config_v1130 := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + }; + + + template (value) MobilityControlInfo cs_MobilityControlInfo(PhysCellId p_PhysCellId, + template (omit) CarrierFreqEUTRA p_EUTRA_CarrierFreq, + template (omit) CarrierBandwidthEUTRA p_EUTRA_CarrierBandwidth, + template (omit) integer p_AdditionalSpectrumEmission, + MobilityControlInfo.t304 p_T304, + C_RNTI p_C_RNTI, + template (value) RadioResourceConfigCommon p_RadioResourceConfigCommon, + template (omit) RACH_ConfigDedicated p_RACH_ConfigDedicated) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + targetPhysCellId := p_PhysCellId, + carrierFreq := p_EUTRA_CarrierFreq, + carrierBandwidth := p_EUTRA_CarrierBandwidth, + additionalSpectrumEmission := p_AdditionalSpectrumEmission, + t304 := p_T304, + newUE_Identity := p_C_RNTI, + radioResourceConfigCommon := p_RadioResourceConfigCommon, + rach_ConfigDedicated := p_RACH_ConfigDedicated, + carrierFreq_v9e0 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + drb_ContinueROHC_r11 := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + }; + + //Table 4.6.5-1: MobilityControlInfo-HO + template (value) MobilityControlInfo cs_508_MobilityControlInfo_HO(PhysCellId p_PhysCellId, + template (omit) CarrierFreqEUTRA p_EUTRA_CarrierFreq, + C_RNTI p_C_RNTI, + template (value) RadioResourceConfigCommon p_RadioResourceConfigCommon) := + cs_MobilityControlInfo( p_PhysCellId, p_EUTRA_CarrierFreq, omit, omit, ms1000, p_C_RNTI, p_RadioResourceConfigCommon, omit); + + template (value) CarrierBandwidthEUTRA cs_CarrierBandwidthEUTRA ( Dl_Bandwidth_Type p_Dl_Bandwidth, + template (omit) Ul_Bandwidth_Type p_Ul_Bandwidth := omit) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + dl_Bandwidth := p_Dl_Bandwidth, + ul_Bandwidth := p_Ul_Bandwidth + }; + + template (value) CarrierFreqEUTRA cs_CarrierFreqEUTRA (ARFCN_ValueEUTRA p_Dl_CarrierFreq, + template (omit) ARFCN_ValueEUTRA p_Ul_CarrierFreq ) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + /* @sic R5s110279 change 1 sic@ */ + dl_CarrierFreq := p_Dl_CarrierFreq, + ul_CarrierFreq := p_Ul_CarrierFreq + } + + //**************************************************************************** + // RECONFIG SRB templates (36.508 cl. 4.6.3) + //---------------------------------------------------------------------------- + + template (value) SRB_ToAddModList cs_508_SRB_ToAddModList_RECONFIG := + { /* Defaule values according to 36.508 cl. 4.6.3 Table 4.6.3-22A */ + /* @status APPROVED (LTE) */ + { + srb_Identity := 1, + rlc_Config := { + explicitValue := cs_508_RLC_Config_SRB_AM_RECONFIG + }, + logicalChannelConfig := { + defaultValue := NULL + } + }, + { + srb_Identity := 2, + rlc_Config := { + explicitValue := cs_508_RLC_Config_SRB_AM_RECONFIG + }, + logicalChannelConfig := { + defaultValue := NULL + } + } + }; + + template (value) RLC_Config cs_508_RLC_Config_SRB_AM_RECONFIG := + { /* Default values according to 36.508 cl. 4.6.3 Table 4.6.3-19C */ + /* @status APPROVED (LTE) */ + am := { + ul_AM_RLC := { + t_PollRetransmit := ms50, + pollPDU := pInfinity, + pollByte := kBinfinity, + maxRetxThreshold := t6 + }, + dl_AM_RLC := { + t_Reordering := ms40, + t_StatusProhibit := ms0 + } + } + }; + + //**************************************************************************** + // Further IEs + //---------------------------------------------------------------------------- + + template (value) SecurityAlgorithmConfig cs_SecurityAlgorithmConfig(IntegrityProtAlgorithm_Type p_IntegrityProtAlgorithm := px_RRC_IntegrityProtAlgorithm, + CipheringAlgorithm_Type p_CipheringAlgorithm := px_RRC_CipheringAlgorithm) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + cipheringAlgorithm := p_CipheringAlgorithm, + integrityProtAlgorithm := p_IntegrityProtAlgorithm + }; + + template (value) SecurityConfigHO cs_SecurityConfigHO_InterRAT(IntegrityProtAlgorithm_Type p_AS_IntegrityProtAlgorithm := px_RRC_IntegrityProtAlgorithm, + CipheringAlgorithm_Type p_AS_CipheringAlgorithm := px_RRC_CipheringAlgorithm, + B3_Type p_NAS_IntegrityProtAlgorithm := px_NAS_IntegrityProtAlgorithm, + B3_Type p_NAS_CipheringAlgorithm := px_NAS_CipheringAlgorithm, + B3_Type p_NAS_KeySetIdentifier := '000'B) := + { // Dummy values to include in the GERAN to EUTRA PS Handover Cmd + // @sic R5s120535 sic@ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + handoverType := { + interRAT := { + securityAlgorithmConfig := { + cipheringAlgorithm := p_AS_CipheringAlgorithm, + integrityProtAlgorithm := p_AS_IntegrityProtAlgorithm + }, + nas_SecurityParamToEUTRA := bit2oct(tsc_NonceMME) & bit2oct('0'B & p_NAS_CipheringAlgorithm & '0'B & p_NAS_IntegrityProtAlgorithm) & bit2oct('00001'B & p_NAS_KeySetIdentifier) + } + } + }; + + template (value) SecurityConfigHO cs_SecurityConfigHO_IntraLTE(template (omit) SecurityAlgorithmConfig p_SecurityAlgorithmConfig := omit, + boolean p_KeyChangeIndicator, + NextHopChainingCount p_NextHopChainingCount) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + /* @sic R5s120700 (additional change): new parameter p_SecurityAlgorithmConfig sic@ */ + handoverType := { + intraLTE := { + securityAlgorithmConfig := p_SecurityAlgorithmConfig, + keyChangeIndicator := p_KeyChangeIndicator, + nextHopChainingCount := p_NextHopChainingCount + } + } + }; + + template (value) SecurityConfigHO cs_508SecurityConfigHO_IntraLTE_Native := cs_SecurityConfigHO_IntraLTE(-, true, 0); /* @status APPROVED (LTE_A, LTE_IRAT) */ + template (value) SecurityConfigHO cs_508SecurityConfigHO_IntraLTE := cs_SecurityConfigHO_IntraLTE(-, false, 0); /* @status APPROVED (LTE, LTE_A) */ + // As defined in 36.508 cl. 4.6.4 Table 4.6.4-1 + + template (present) RegisteredMME cr_RegisteredMME(template PLMN_Identity p_PLMN, + template (present) B16_Type p_MMEGI, + template (present) MMEC p_MMEC) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + plmn_Identity := p_PLMN, + mmegi := p_MMEGI, + mmec := p_MMEC + }; + + //**************************************************************************** + // Common templates related to system information + //---------------------------------------------------------------------------- + + template (value) PLMN_Identity cs_PLMN_Identity(MCC p_MCC, + MNC p_MNC) := + { + mcc := p_MCC, + mnc := p_MNC + }; + + //**************************************************************************** + // Common templates related to antenna information + //---------------------------------------------------------------------------- + template (value) AntennaInfoCommon cs_AntennaInfoCommon_1Port := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + antennaPortsCount := an1 + }; + + template (value) AntennaInfoCommon cs_AntennaInfoCommon_2Port := + { /* @status APPROVED (LTE) */ + antennaPortsCount := an2 + }; + + template (value) AntennaInfoDedicated cs_AntennaInfoDedicated_Def := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + transmissionMode := tm1, /* Transmission modes defined in TS 36.213; tm1: Single-antenna port */ + codebookSubsetRestriction := omit, /* omit for tm1 */ + ue_TransmitAntennaSelection := { + release := NULL // @sic R5s090180 acc. to 36.508 table Table 4.8.2.1.6-1 and 36.331 section 9.2.4. sic@ + } + }; + + template (value) AntennaInfoDedicated cs_AntennaInfoDedicated_2TX := + { // acc to 36.508 Table 4.8.2.1.6-1 + /* @status APPROVED (LTE) */ + transmissionMode := tm3, + codebookSubsetRestriction := { + n2TxAntenna_tm3 := '11'B + }, + ue_TransmitAntennaSelection := { + release := NULL + } + }; + + template (present) InitialUE_Identity cr_InitialUE_Identity_S_TMSI(MMEC p_Mmec, + M_TMSI_Type p_M_Tmsi) := + { /* @status APPROVED (LTE, LTE_IRAT) */ + s_TMSI := { + mmec := p_Mmec, + m_TMSI := p_M_Tmsi + } + }; + + template (present) InitialUE_Identity cr_InitialUE_Identity_Random := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + randomValue := ? + }; + + template (value) PhysicalConfigDedicated_AntennaInfo_Type cs_PhysicalConfigDedicated_AntennaInfo_Def := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + defaultValue := NULL + }; + + template (value) PhysicalConfigDedicated_AntennaInfo_Type cs_PhysicalConfigDedicated_AntennaInfo_2TX := + { /* @status APPROVED (LTE) */ + explicitValue := cs_AntennaInfoDedicated_2TX + }; + + //**************************************************************************** + // RRC peer-to-peer messages + //---------------------------------------------------------------------------- + // RRCConnectionRequest (36.331 cl. 6.2.2) + + template (present) UL_CCCH_Message cr_RRCConnectionRequest(template (present) EstablishmentCause p_EstablishmentCause, + template InitialUE_Identity p_InitialUE_Identity := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5s110726 additional change: optional parameter p_InitialUE_Identity sic@ */ + message_ := { + c1 := { + rrcConnectionRequest := { + criticalExtensions := { + rrcConnectionRequest_r8 := { + ue_Identity := p_InitialUE_Identity, + establishmentCause := p_EstablishmentCause, + spare := ? + } + } + } + } + } + }; + + /* Default values according to 36.508 cl. 4.6.1 Table 4.6.1-16 */ + template (present) UL_CCCH_Message cr_508_RRCConnectionRequest := cr_RRCConnectionRequest(cr_EstablishmentCause_Any); /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + + //---------------------------------------------------------------------------- + // RRCConnectionSetup (36.331 cl. 6.2.2) + + template (value) DL_CCCH_Message cs_508_RRCConnectionSetup(RRC_TransactionIdentifier p_RRC_TI, + template (value) PUCCH_ConfigDedicated p_PUCCH_ConfigDedicated, + template (omit) CQI_ReportPeriodic p_CQI_ReportingPeriodic, // @sic R5-120497 sic@ + template (omit) SoundingRS_UL_ConfigDedicated p_SoundingRsUl_ConfigDedicated, // @sic R5-120497 sic@ + SR_PUCCH_ResourceIndex_Type p_SR_PUCCH_ResourceIndex, // @sic R5s090312 sic@ + template (value) PhysicalConfigDedicated_AntennaInfo_Type p_AntennaInfo, // @sic R5-100786 sic@ + SR_ConfigIndex_Type p_SR_ConfigIndex, // @sic R5-102177 sic@ + TimeAlignmentTimer p_TimeAlignmentTimer := sf750) := // @sic R5s110469 sic@ + { /* Default values according to 36.508 cl. 4.6.1 Table 4.6.1-17 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + message_ := { + c1 := { + rrcConnectionSetup := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + c1 := { + rrcConnectionSetup_r8 := { + radioResourceConfigDedicated := + cs_508_RadioResourceConfigDedicated_SRB1(cs_MAC_MainConfig_SRB1(p_TimeAlignmentTimer), + cs_508_PhysicalConfigDedicated_Default_SRB1(p_PUCCH_ConfigDedicated, + p_CQI_ReportingPeriodic, // @sic R5-120497 sic@ + p_SoundingRsUl_ConfigDedicated, // @sic R5-120497 sic@ + p_SR_PUCCH_ResourceIndex, + p_AntennaInfo, + p_SR_ConfigIndex)), + nonCriticalExtension := omit + } + } + } + } + } + } + }; + + //---------------------------------------------------------------------------- + // RRCConnectionSetupComplete (36.331 cl. 6.2.2) + + template (present) UL_DCCH_Message cr_508_RRCConnectionSetupComplete(template (present) RRC_TransactionIdentifier p_RRC_TI, + template (present) DedicatedInfoNAS p_NAS_DedicatedInformation, + template RegisteredMME p_RegisteredMME := *, + template (present) integer p_SelectedPlmnId := 1) := + { /* Default values according to 36.508 cl. 4.6.1 Table 4.6.1-18 */ + /* @sic R5s110291: additional parameter p_SelectedPlmnId sic@ */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + message_ := { + c1 := { + rrcConnectionSetupComplete := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + c1 := { + rrcConnectionSetupComplete_r8 := { + selectedPLMN_Identity := p_SelectedPlmnId, /* 36.331 cl. 6.2.2 selectedPLMN-Identity is the index of selected PLMN from the PLMN-Identity list in SIB1 (starting with 1) + In SIB 1 there is only one PLMN acc. to default setting in 36.508 */ + registeredMME := p_RegisteredMME, + dedicatedInfoNAS := p_NAS_DedicatedInformation, + nonCriticalExtension := * + } + } + } + } + } + } + }; + + //---------------------------------------------------------------------------- + // SecurityModeCommand (36.331 cl. 6.2.2) + + template (value) DL_DCCH_Message cs_508_SecurityModeCommand(RRC_TransactionIdentifier p_RRC_TI, + IntegrityProtAlgorithm_Type p_IntegrityProtAlgorithm, + CipheringAlgorithm_Type p_CipheringAlgorithm) := + { /* Default values according to 36.508 cl. 4.6.1 Table 4.6.1-19 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + message_ := { + c1 := { + securityModeCommand := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + c1 := { + securityModeCommand_r8 := { + securityConfigSMC := { + securityAlgorithmConfig := cs_SecurityAlgorithmConfig(p_IntegrityProtAlgorithm, p_CipheringAlgorithm) + }, + nonCriticalExtension := omit + } + } + } + } + } + } + }; + + //---------------------------------------------------------------------------- + // SecurityModeComplete (36.331 cl. 6.2.2) + + template (present) UL_DCCH_Message cr_508_SecurityModeComplete(RRC_TransactionIdentifier p_RRC_TI) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + message_ := { + c1 := { + securityModeComplete := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + securityModeComplete_r8 := { + nonCriticalExtension := * + } + } + } + } + } + }; + // SecurityModeComplete (36.331 cl. 6.2.2) + + template (present) UL_DCCH_Message cr_508_SecurityModeFailure(RRC_TransactionIdentifier p_RRC_TI) := + { /* @status APPROVED (LTE, LTE_A) */ + message_ := { + c1 := { + securityModeFailure := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + securityModeFailure_r8 := { + nonCriticalExtension := * + } + } + } + } + } + }; + + //---------------------------------------------------------------------------- + // RRCConnectionReconfiguration (36.331 cl. 6.2.2) + + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_Common(RRC_TransactionIdentifier p_RRC_TI, + template (omit) MeasConfig p_MeasurementConfiguration := omit, + template (omit) MobilityControlInfo p_MobilityControlInformation := omit, + template (omit) RadioResourceConfigDedicated p_RadioResourceConfigDedicated := omit, + template (omit) SecurityConfigHO p_SecurityConfiguration := omit, + template (omit) RRCConnectionReconfiguration_v890_IEs p_RRCConnectionReconfiguration_v890_IEs := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5s120700 (additional change): new parameter p_RRCConnectionReconfiguration_v890_IEs sic@ */ + message_ := { + c1 := { + rrcConnectionReconfiguration := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + c1 := { + rrcConnectionReconfiguration_r8 := { + measConfig := p_MeasurementConfiguration, + mobilityControlInfo := p_MobilityControlInformation, + dedicatedInfoNASList := omit, + radioResourceConfigDedicated := p_RadioResourceConfigDedicated, + securityConfigHO := p_SecurityConfiguration, + nonCriticalExtension := p_RRCConnectionReconfiguration_v890_IEs + } + } + } + } + } + } + }; + + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_RadioResConfig(RRC_TransactionIdentifier p_RRC_TI, + template (value) RadioResourceConfigDedicated p_RadioResourceConfigDedicated) := + /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + cs_RRCConnectionReconfiguration_Common(p_RRC_TI, + omit, + omit, + p_RadioResourceConfigDedicated, + omit); + + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_SRB2_1AM_DRB_Est(RRC_TransactionIdentifier p_RRC_TI, + template (omit) CQI_ReportPeriodic p_CQI_ReportingPeriodic, + template (omit) SoundingRS_UL_ConfigDedicated p_SoundingRsUl_ConfigDedicated, + template (value) PhysicalConfigDedicated_AntennaInfo_Type p_AntennaInfo, // @sic R5-100786 sic@ + DRB_Identity p_DRB_Id := tsc_DRB1) := + /* Values according to 36.508 cl. 4.6.1 Table 4.6.1-8 (using condition SRB2-DRB(n, m), where n=1 & m=0) */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5-144797: parameter p_DRB_Id sic@ */ + cs_RRCConnectionReconfiguration_Common(p_RRC_TI, + omit, + omit, + cs_SRB2_1AM_DRB_Config_Def(p_CQI_ReportingPeriodic, p_SoundingRsUl_ConfigDedicated, p_AntennaInfo, p_DRB_Id), + omit); + + template (value) DL_DCCH_Message cs_RRCConnReconfig_Resume_SRB2_DRBs(RRC_TransactionIdentifier p_RRC_TI, + template (omit) CQI_ReportPeriodic p_CQI_ReportingPeriodic, + template (omit) SoundingRS_UL_ConfigDedicated p_SoundingRsUl_ConfigDedicated, + template (value) PhysicalConfigDedicated_AntennaInfo_Type p_AntennaInfo, // @sic R5-100786 sic@ + SR_PUCCH_ResourceIndex_Type p_SR_PUCCH_ResourceIndex, // @sic R5-103678 sic@ + SR_ConfigIndex_Type p_SR_ConfigIndex, // @sic R5-103678 sic@ + template (omit) MeasConfig p_MeasConfig := omit, // @sic R5s130??? sic@ + template (omit) PUCCH_ConfigDedicated p_PUCCH_Config := omit) :=// @sic R5s130367 sic@ + /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + cs_RRCConnectionReconfiguration_Common(p_RRC_TI, + p_MeasConfig, + omit, + cs_508_RadioResourceConfigDedicated_HO(p_PUCCH_Config, // @sic R5s120663 change 6 sic@ @sic R5s130367 sic@ @sic R5s130442 sic@ + p_CQI_ReportingPeriodic, + p_SoundingRsUl_ConfigDedicated, + p_AntennaInfo, + p_SR_PUCCH_ResourceIndex, // @sic R5-103678 sic@ + p_SR_ConfigIndex), // @sic R5-103678 sic@ + omit); + + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_DRB_Release(RRC_TransactionIdentifier p_RRC_TI, + DRB_Identity p_DRB_Id) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + cs_RRCConnectionReconfiguration_Common(p_RRC_TI, + omit, + omit, + cs_RadioResourceConfigDedicated_DRB_Release(p_DRB_Id), + omit); + + //---------------------------------------------------------------------------- + // RRCConnectionReconfiguration Handover section + + //---------------------------------------------------------------------------- + // RRCConnectionReconfigurationComplete (36.331 cl. 6.2.2) + + template (present) UL_DCCH_Message cr_508_RRCConnectionReconfigurationComplete(RRC_TransactionIdentifier p_RRC_TI := tsc_RRC_TI_Def) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + message_ := { + c1 := { + rrcConnectionReconfigurationComplete := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + rrcConnectionReconfigurationComplete_r8 := { + nonCriticalExtension := * + } + } + } + } + } + }; + + //---------------------------------------------------------------------------- + // RRCConnectionRelease (36.331 cl. 6.2.2) + + template (value) RRCConnectionRelease_v890_IEs cs_RRCConnectionRelease_v890_IEs(template (omit) RRCConnectionRelease_CellInfoList_r9_Type p_CellInfoList_r9 := omit, + template (omit) RRCConnectionRelease_v1020_IEs p_RRCConnectionRelease_v1020_IEs := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + lateNonCriticalExtension := omit, + nonCriticalExtension := { + cellInfoList_r9 := p_CellInfoList_r9, + nonCriticalExtension := p_RRCConnectionRelease_v1020_IEs + } + }; + + template (value) DL_DCCH_Message cs_RRCConnectionRelease(RRC_TransactionIdentifier p_RRC_TI, + ReleaseCause p_ReleaseCause, + template (omit) RedirectedCarrierInfo p_RedirectionInformation := omit, + template (omit) IdleModeMobilityControlInfo p_Mobility := omit, + template (omit) RRCConnectionRelease_v890_IEs p_RRCConnectionRelease_v890_IEs := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5s100348 additional changes sic@ */ + message_ := { + c1 := { + rrcConnectionRelease := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + c1 := { + rrcConnectionRelease_r8 := { + releaseCause := p_ReleaseCause, + redirectedCarrierInfo := p_RedirectionInformation, + idleModeMobilityControlInfo := p_Mobility, + nonCriticalExtension := p_RRCConnectionRelease_v890_IEs + } + } + } + } + } + } + }; + + template (value) RRCConnectionRelease_v1020_IEs cs_RRCConnectionRelease_v1020_IEs(ExtendedWaitTime_r10_Type p_ExtendedWaitTime_r10) := + { /* @status APPROVED (LTE_A) */ + extendedWaitTime_r10 := p_ExtendedWaitTime_r10, + nonCriticalExtension := omit + }; + + template (value) DL_DCCH_Message cs_RRCConnectionRelease_extendedWaitTime_r10(RRC_TransactionIdentifier p_RRC_TI, + ReleaseCause p_ReleaseCause, + ExtendedWaitTime_r10_Type p_ExtendedWaitTime_r10) := + /* @status APPROVED (LTE_A) */ + cs_RRCConnectionRelease(p_RRC_TI, p_ReleaseCause, -, -, cs_RRCConnectionRelease_v890_IEs(-, cs_RRCConnectionRelease_v1020_IEs(p_ExtendedWaitTime_r10))); + + //---------------------------------------------------------------------------- + + template (value) RedirectedCarrierInfo cs_RedirectionInfo_Geran ( CarrierFreqsGERAN p_CarrierFreqsGERAN) := + { /* @status APPROVED (LTE_IRAT) */ + geran := p_CarrierFreqsGERAN + }; + + template (value) RedirectedCarrierInfo cs_RedirectionInfo_UtraFdd ( ARFCN_ValueUTRA p_DL_UARFCN ) := + { /* @status APPROVED (LTE_IRAT) */ + utra_FDD := p_DL_UARFCN + }; + + template (value) RedirectedCarrierInfo cs_RedirectionInfo_UtraTdd ( ARFCN_ValueUTRA p_DL_UARFCN ) := + { /* @status APPROVED (LTE_IRAT) */ + utra_TDD := p_DL_UARFCN + }; + + template (value) RedirectedCarrierInfo cs_RedirectionInfo_Geran_NoNeighCells ( ARFCN_ValueGERAN p_StartingARFCN, + B1_Type p_BandIndicator ) := + { /* @status APPROVED (LTE_IRAT) */ + geran := { + startingARFCN := p_StartingARFCN, + bandIndicator := f_ConvertGERAN_Band( p_BandIndicator ), + followingARFCNs := { + explicitListOfARFCNs := {} + } + } + }; + + + //---------------------------------------------------------------------------- + // RRCConnectionReestablishmentRequest + + template (present) UL_CCCH_Message cr_508_RRCConnectionReestablishmentRequest(template C_RNTI p_C_RNTI, + template PhysCellId p_PhysCellId, + template ReestablishmentCause p_ReestablishmentCause, + template ShortMAC_I p_ShortMAC_I := ?) := + { /* Default values according to 36.508 cl. 4.6.1 Table 4.6.1-13 */ + /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + message_ := { + c1 := { + rrcConnectionReestablishmentRequest := { + criticalExtensions := { + rrcConnectionReestablishmentRequest_r8 := { + ue_Identity := { + c_RNTI := p_C_RNTI, + physCellId := p_PhysCellId, + shortMAC_I := p_ShortMAC_I + }, + reestablishmentCause := p_ReestablishmentCause, + spare := ? + } + } + } + } + } + }; + + template (present) UL_CCCH_Message cr_RRCConnectionReestablishmentRequest_AnyUE(template (present) ReestablishmentCause p_ReEstablishmentCause) := + { /* @status APPROVED (LTE, LTE_A) */ + message_ := { + c1 := { + rrcConnectionReestablishmentRequest := { + criticalExtensions := { + rrcConnectionReestablishmentRequest_r8 := { + ue_Identity := ?, + reestablishmentCause := p_ReEstablishmentCause, + spare := ? + } + } + } + } + } + }; + + //---------------------------------------------------------------------------- + // RRCConnectionReestablishment + + template (value) DL_CCCH_Message cs_RRCConnectionReestablishment_Common(RRC_TransactionIdentifier p_RRC_TI, + template (value) RadioResourceConfigDedicated p_RadioResourceConfigDedicated, + NextHopChainingCount p_NextHopChainingCount) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + message_ := { + c1 := { + rrcConnectionReestablishment := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + c1 := { + rrcConnectionReestablishment_r8 := { + radioResourceConfigDedicated := p_RadioResourceConfigDedicated, + nextHopChainingCount := p_NextHopChainingCount, + nonCriticalExtension := omit + } + } + } + } + } + } + }; + + //---------------------------------------------------------------------------- + // RRCConnectionReestablishmentComplete + + template (present) UL_DCCH_Message cr_508_RRCConnectionReestablishmentComplete(RRC_TransactionIdentifier p_RRC_TI, + template RRCConnectionReestablishmentComplete_v920_IEs p_RRCConnectionReestablishmentComplete_v920_IEs := *) := + { /* Default values according to 36.508 cl. 4.6.1 Table 4.6.1-11 */ + /* @sic R5-125723, R5s120812 add. changes: new parameter p_RRCConnectionReestablishmentComplete_v920_IEs sic@ */ + /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + message_ := { + c1 := { + rrcConnectionReestablishmentComplete := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + rrcConnectionReestablishmentComplete_r8 := { + nonCriticalExtension := p_RRCConnectionReestablishmentComplete_v920_IEs // @sic R5s100324 Change 2 sic@ + } + } + } + } + } + }; + + template (present) RRCConnectionReestablishmentComplete_v920_IEs cr_RRCConnectionReestablishmentComplete_v920_IEs(template RRCConnectionReestablishmentComplete_v8a0_IEs p_RRCConnectionReestablishmentComplete_v8a0_IEs := omit) := + { /* @status APPROVED (LTE, LTE_A) */ + rlf_InfoAvailable_r9 := true_, + nonCriticalExtension := p_RRCConnectionReestablishmentComplete_v8a0_IEs + }; + + //---------------------------------------------------------------------------- + // RRCConnectionReestablishmentReject + + template (value) DL_CCCH_Message cs_508_RRCConnectionReestablishmentReject := + { /* Default values according to 36.508 cl. 4.6.1-12 */ + /* @status APPROVED (LTE) */ + message_ := { + c1 := { + rrcConnectionReestablishmentReject := { + criticalExtensions := { + rrcConnectionReestablishmentReject_r8 := { + nonCriticalExtension := omit + } + } + } + } + } + }; + + //---------------------------------------------------------------------------- + // RRCConnectionReject + + template (value) DL_CCCH_Message cs_RRCConnectionReject(integer p_WaitTime := 10) := + { /* @status APPROVED (LTE) */ + message_ := { + c1 := { + rrcConnectionReject := { + + criticalExtensions := { + c1 := { + rrcConnectionReject_r8 := { + waitTime := p_WaitTime, + nonCriticalExtension := omit + } + } + } + } + } + } + }; + + //---------------------------------------------------------------------------- + // UECapabilityEnquiry (36.331 cl. 6.2.2) + + template (value) UE_CapabilityRequest cs_UE_CapabilityRequest_EUTRA := {eutra}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + + template (value) UE_CapabilityRequest cs_UE_CapabilityRequest_EUTRA_UTRA := {eutra, utra}; /* @status APPROVED (LTE_A, LTE_IRAT) */ + + template (value) DL_DCCH_Message cs_508_UeCapabilityEnquiry(RRC_TransactionIdentifier p_RRC_TI, + template (value) UE_CapabilityRequest p_UE_CapabilityRequest := cs_UE_CapabilityRequest_EUTRA) := + { /* According to 36.508 cl. 4.6.1 Table 4.6.1-22 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + message_ := { + c1 := { + ueCapabilityEnquiry := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + c1 := { + ueCapabilityEnquiry_r8 := { + ue_CapabilityRequest := p_UE_CapabilityRequest, + nonCriticalExtension := omit + } + } + } + } + } + } + }; + + //---------------------------------------------------------------------------- + // MobilityFromEUTRACommand (36.331 cl. 6.2.2) + + template (value) DL_DCCH_Message cs_MobilityFromEutraCommand_Handover(RRC_TransactionIdentifier p_RRC_TI, + boolean p_CSFallbackInd, + TargetRAT_Type p_TargetRAT, + octetstring p_TargetRAT_MessageContainer, + template (omit) octetstring p_Nas_SecurityParamFromEUTRA, + template (omit) SI_OrPSI_GERAN p_SI_OrPSI_GERAN := omit, + template (omit) MobilityFromEUTRACommand_v8a0_IEs p_MobilityFromEUTRACommand_v8a0_IEs := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + message_ := { + c1 := { + mobilityFromEUTRACommand := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + c1 := { + mobilityFromEUTRACommand_r8 := { + cs_FallbackIndicator := p_CSFallbackInd, + purpose := { + handover := { + targetRAT_Type := p_TargetRAT, + targetRAT_MessageContainer := p_TargetRAT_MessageContainer, + nas_SecurityParamFromEUTRA := p_Nas_SecurityParamFromEUTRA, + systemInformation := p_SI_OrPSI_GERAN + } + }, + nonCriticalExtension := p_MobilityFromEUTRACommand_v8a0_IEs + } + } + } + } + } + } + }; + + + template (value) MobilityFromEUTRACommand_v8a0_IEs cs_MobilityFromEUTRACommand_v8a0_IEs(BandIndicatorGERAN p_BandIndicator) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + lateNonCriticalExtension := omit, + nonCriticalExtension := { + bandIndicator := p_BandIndicator, + nonCriticalExtension := omit + } + }; + + template (value) DL_DCCH_Message cs_MobilityFromEutraCommand_Handover_r9(RRC_TransactionIdentifier p_RRC_TI, + boolean p_CSFallbackInd, + TargetRAT_Type p_TargetRAT, + octetstring p_TargetRAT_MessageContainer, + template (omit) octetstring p_Nas_SecurityParamFromEUTRA, + template (omit) SI_OrPSI_GERAN p_SI_OrPSI_GERAN := omit) := + { /* @status APPROVED (LTE_IRAT) */ + message_ := { + c1 := { + mobilityFromEUTRACommand := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + c1 := { + mobilityFromEUTRACommand_r9 := { + cs_FallbackIndicator := p_CSFallbackInd, + purpose := { + handover := { + targetRAT_Type := p_TargetRAT, + targetRAT_MessageContainer := p_TargetRAT_MessageContainer, + nas_SecurityParamFromEUTRA := p_Nas_SecurityParamFromEUTRA, + systemInformation := p_SI_OrPSI_GERAN + } + }, + nonCriticalExtension := omit + } + } + } + } + } + } + }; + + template (value) DL_DCCH_Message cs_MobilityFromEutraCommand(RRC_TransactionIdentifier p_RRC_TI, + octetstring p_TargetRAT_MessageContainer, + octetstring p_Nas_SecurityParamFromEUTRA) := + /* @status APPROVED (LTE_IRAT) */ + // @sic R5-113665 sic@ + cs_MobilityFromEutraCommand_Handover(p_RRC_TI, + false,// no specific msg contents in test case 8.4.1.2 + utra, + p_TargetRAT_MessageContainer, + p_Nas_SecurityParamFromEUTRA); + + template (value) DL_DCCH_Message cs_MobilityFromEutraCommand_r9(RRC_TransactionIdentifier p_RRC_TI, + octetstring p_TargetRAT_MessageContainer, + octetstring p_Nas_SecurityParamFromEUTRA) := + /* @status APPROVED (LTE_IRAT) */ + // @sic R5-113665 sic@ + cs_MobilityFromEutraCommand_Handover_r9(p_RRC_TI, + false,// no specific msg contents in test case 8.4.1.2 + utra, + p_TargetRAT_MessageContainer, + p_Nas_SecurityParamFromEUTRA); + + template (value) DL_DCCH_Message cs_MobilityFromEutraCommand_CellChangeOrder(RRC_TransactionIdentifier p_RRC_TI, + CellChangeOrder.t304 p_T304 := ms1000, + PhysCellIdGERAN p_PhysCellId, + CarrierFreqGERAN p_CarrierFreqGERAN, + template (omit) B2_Type p_NetworkControlOrder := omit, + template (omit) SI_OrPSI_GERAN p_SystemInformation := omit, + boolean p_FallbackInd := false) := + {/* @status APPROVED (LTE_IRAT) */ + message_ := { + c1 := { + mobilityFromEUTRACommand := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + c1 := { + mobilityFromEUTRACommand_r8 := { + cs_FallbackIndicator := p_FallbackInd, // @sic R5s120509 subject to prose CR approval sic@ + purpose := { + cellChangeOrder := { + t304 := p_T304, + targetRAT_Type := { + geran := { + physCellId := p_PhysCellId, + carrierFreq := p_CarrierFreqGERAN, + networkControlOrder := p_NetworkControlOrder, + systemInformation := p_SystemInformation + } + } + } + }, + nonCriticalExtension := omit + } + } + } + } + } + } + }; + + //---------------------------------------------------------------------------- + + template (present) UECapabilityInformation_r8_IEs cr_EutraCapInfo := + { /* UECapabilityInformation (36.331 cl. 6.2.2) */ + /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + ue_CapabilityRAT_ContainerList := { + { + rat_Type := eutra, + ueCapabilityRAT_Container := ? //To be decoded and checked in test case + } + }, + nonCriticalExtension := * + }; + + template (present) UECapabilityInformation_r8_IEs cr_EutraCapInfo_EUTRA_UTRA := + { /* UECapabilityInformation (36.331 cl. 6.2.2) */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + ue_CapabilityRAT_ContainerList := { + { + rat_Type := eutra, + ueCapabilityRAT_Container := ? //To be decoded and checked in test case + }, + { + rat_Type := utra, + ueCapabilityRAT_Container := ? //To be decoded and checked in test case + } + }, + nonCriticalExtension := * + }; + + template (present) UL_DCCH_Message cr_508_UeCapabilityInformation(RRC_TransactionIdentifier p_RRC_TI, + template UECapabilityInformation_r8_IEs p_UECapabilityInformation_r8_IEs) := + { /* According to 36.508 cl. 4.6.1 Table 4.6.1-23 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + message_ := { + c1 := { + ueCapabilityInformation := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + c1 := { + ueCapabilityInformation_r8 := p_UECapabilityInformation_r8_IEs + } + } + } + } + } + }; + + template (present) UL_DCCH_Message cr_UeCapabilityInformation_Any(RRC_TransactionIdentifier p_RRC_TI) := cr_508_UeCapabilityInformation(p_RRC_TI, ?); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + + + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_DRB_Reconfig (RRC_TransactionIdentifier p_RRC_TI, + template (value) DRB_ToAddModList p_DRB_ToAddModList, + template (omit) MAC_MainConfig_Type p_MAC_MainConfig := omit) := + /* @desc Values according to 36.508 cl. 4.6.1 Table 4.6.1-8 (using condition SRB2-DRB(n, m), where n=1 & m=0) */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5s100313 sic@ */ + cs_RRCConnectionReconfiguration_Common(p_RRC_TI, + omit, + omit, + cs_RadioResourceConfig_DRB_RECONFIG(p_DRB_ToAddModList, p_MAC_MainConfig), + omit); + + template (value) RedirectedCarrierInfo cs_RedirectionInfo_Eutra ( ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq ) := + { /* @status APPROVED (LTE, LTE_IRAT) */ + eutra := p_EUTRA_DL_CarrierFreq + }; + + template (value) RedirectedCarrierInfo cs_RedirectionInfo_RTT1X ( template (value) CarrierFreqCDMA2000 p_CarrierFreqCDMA2000 ) := + { /* @status APPROVED (LTE_IRAT) */ + cdma2000_1xRTT := p_CarrierFreqCDMA2000 + }; + + template (value) RedirectedCarrierInfo cs_RedirectionInfo_HRPD ( template (value) CarrierFreqCDMA2000 p_CarrierFreqCDMA2000 ) := + { /* @status APPROVED (LTE_IRAT) */ + cdma2000_HRPD := p_CarrierFreqCDMA2000 + }; + + template (value) CarrierFreqCDMA2000 cs_CarrierFreqCDMA2000(BandclassCDMA2000 p_Bandclass , + ARFCN_ValueCDMA2000 p_ChannelNum ):= + { /* @status APPROVED (LTE_IRAT) */ + bandClass := p_Bandclass, + arfcn := p_ChannelNum + }; + + + template (present) UL_DCCH_Message cr_508_ULHandoverPreparationTransfer(CDMA2000_Type p_CDMA2000_Type, + template ULHandoverPreparationTransfer_r8_IEs.meid p_MeId) := + { /* @status APPROVED (LTE_IRAT) */ + message_ := { + c1 := { + ulHandoverPreparationTransfer := { + criticalExtensions := { + c1 := { + ulHandoverPreparationTransfer_r8 := { + cdma2000_Type := p_CDMA2000_Type, + meid := p_MeId, + dedicatedInfo := ?, + nonCriticalExtension := * + } + } + } + } + } + } + }; + + template (present) UL_DCCH_Message cr_508_ULHandoverPreparationTransfer_HRPD := cr_508_ULHandoverPreparationTransfer(typeHRPD, omit); + template (present) UL_DCCH_Message cr_508_ULHandoverPreparationTransfer_1xRTT := cr_508_ULHandoverPreparationTransfer(type1XRTT, ?); /* @status APPROVED (LTE_IRAT) @sic R5s130600 sic@ */ + + template (value) DL_DCCH_Message cs_508_HandoverFromEUTRAPreparationRequest(RRC_TransactionIdentifier p_RRC_TI, + template (omit) RAND_CDMA2000 p_RAND_CDMA2000 := omit, // Omit for HRPD mandatory present in 1XRTT + template (omit) MobilityParametersCDMA2000 p_MobilityParametersCDMA2000 := omit) := // Omit for HRPD mandatory present in 1XRTT + + { /* @status APPROVED (LTE_IRAT) */ + message_ := { + c1 := { + handoverFromEUTRAPreparationRequest := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + c1 := { + handoverFromEUTRAPreparationRequest_r8 :={ + cdma2000_Type := type1XRTT, + rand := p_RAND_CDMA2000, + mobilityParameters := p_MobilityParametersCDMA2000, + nonCriticalExtension := omit + } + } + } + } + } + } + }; + + template (value) DL_DCCH_Message cs_508_HandoverFromEUTRAPreparationRequest_HRPD(RRC_TransactionIdentifier p_RRC_TI) := + cs_508_HandoverFromEUTRAPreparationRequest(p_RRC_TI); + + template (value) DL_DCCH_Message cs_508_HandoverFromEUTRAPreparationRequest_1xRTT(RRC_TransactionIdentifier p_RRC_TI, + template (value) RAND_CDMA2000 p_RAND_CDMA2000, + template (value) MobilityParametersCDMA2000 p_MobilityParametersCDMA2000) := + /* @status APPROVED (LTE_IRAT) */ + cs_508_HandoverFromEUTRAPreparationRequest(p_RRC_TI, p_RAND_CDMA2000, p_MobilityParametersCDMA2000); + + template (value) CellsToAddModCDMA2000 cs_CellsToAddModCDMA2000(integer p_CellIndex, + PhysCellIdCDMA2000 p_PhysCellIdCDMA2000) := + { /* @status APPROVED (LTE_IRAT) */ + cellIndex := p_CellIndex, + physCellId := p_PhysCellIdCDMA2000 + }; + + template (value) PreRegistrationInfoHRPD cs_508_PreRegistrationInfoHRPD(PreRegistrationZoneIdHRPD p_PreRegistrationZoneIdHRPD) := + { + /* Ref 36.508 Table 4.5.2B.2-2 */ + preRegistrationAllowed := true, + preRegistrationZoneId := p_PreRegistrationZoneIdHRPD, + secondaryPreRegistrationZoneIdList := omit + }; + + template (value) CSFB_RegistrationParam1XRTT cs_508_CSFB_RegistrationParam1XRTT(B15_Type p_SID, + B16_Type p_NID, + B12_Type p_RegZone, + B3_Type p_ZoneTimer):= + { /* Ref 36.508 Table 4.5.2C.2-2 */ + /* @status APPROVED (LTE_IRAT) */ + // @sic R5-113659 sic@ + sid := p_SID, + nid := p_NID, + multipleSID := true, + multipleNID := true, + homeReg := true, + foreignSIDReg := true, + foreignNIDReg := true, + parameterReg := true, + powerUpReg := true, + registrationPeriod := int2bit (0,7), + registrationZone := p_RegZone, + totalZone := int2bit (1,3), + zoneTimer := p_ZoneTimer + }; + + template (value) DL_DCCH_Message cs_MobilityFromEutraCommand_Handover_UTRAN_CSFB (octetstring p_TargetRAT_MessageContainer, + octetstring p_Nas_SecurityParamFromEUTRA) := + /* @status APPROVED (LTE_IRAT) */ + cs_MobilityFromEutraCommand_Handover(tsc_RRC_TI_Def, true, utra, p_TargetRAT_MessageContainer, p_Nas_SecurityParamFromEUTRA, omit); + + template (value) DL_DCCH_Message cs_MobilityFromEutraCommand_Handover_GERAN_CSFB (octetstring p_TargetRAT_MessageContainer, + octetstring p_Nas_SecurityParamFromEUTRA, + template (omit) SI_OrPSI_GERAN p_SI_OrPSI_GERAN := omit) := + cs_MobilityFromEutraCommand_Handover(tsc_RRC_TI_Def, true, geran, p_TargetRAT_MessageContainer, p_Nas_SecurityParamFromEUTRA, p_SI_OrPSI_GERAN); + + + template (present) UL_DCCH_Message cr_508_CSFBParametersRequestCDMA2000 := + { /* @status APPROVED (LTE_IRAT) */ + message_ := { + c1 := { + csfbParametersRequestCDMA2000 := { + criticalExtensions := { + csfbParametersRequestCDMA2000_r8 := { + nonCriticalExtension := * + } + } + } + } + } + }; + + template (value) DL_DCCH_Message cs_508_CSFBParametersResponseCDMA2000(RRC_TransactionIdentifier p_RRC_TI, + template (value) RAND_CDMA2000 p_RAND_CDMA2000, + template (value) MobilityParametersCDMA2000 p_MobilityParametersCDMA2000) := + { /* @status APPROVED (LTE_IRAT) */ + message_ := { + c1 := { + csfbParametersResponseCDMA2000 := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + csfbParametersResponseCDMA2000_r8 :={ + rand := p_RAND_CDMA2000, + mobilityParameters := p_MobilityParametersCDMA2000, + nonCriticalExtension := omit + } + } + } + } + } + }; + + template (value) UplinkPowerControlCommon_v1020 cs_UplinkPowerControlUL_CA(UplinkPowerControl_DeltaF_PUCCH_Format3_Type p_DeltaF_PUCCH_Format3) := + { /* Acc to 36.508 Table 4.6.3-25AA: UplinkPowerControlCommon-v1020-DEFAULT */ + /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + deltaF_PUCCH_Format3_r10 := p_DeltaF_PUCCH_Format3, + deltaF_PUCCH_Format1bCS_r10 := deltaF1 + }; + +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA_Templates/EUTRA_SRB_Templates.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA_Templates/EUTRA_SRB_Templates.ttcn new file mode 100644 index 0000000..9afa32c --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA_Templates/EUTRA_SRB_Templates.ttcn @@ -0,0 +1,466 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 22:08:20 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12181 $ +/******************************************************************************/ + +module EUTRA_SRB_Templates { + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from EUTRA_ASP_TypeDefs all; + import from EUTRA_ASP_SrbDefs all; + import from EPS_NAS_MsgContainers all; // NAS_MSG_Request_Type, NAS_MSG_Indication_Type + import from EUTRA_AspCommon_Templates all; // cs_TimingInfo_Now, cr_CnfAspCommonPart_CellCfg, cs_ReqAspCommonPart_CellCfg + import from EUTRA_RRC_Templates all; // cs_TX_AM_RLC_SRB1_Def, cs_RX_AM_RLC_SRB1_Def, cs_TX_AM_RLC_SRB2_Def, cs_RX_AM_RLC_SRB2_Def + + const integer tsc_SRB0_LogicalChannelPriority := 1; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + const integer tsc_SRB1_LogicalChannelPriority := 1; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + const integer tsc_SRB2_LogicalChannelPriority := 3; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + + //**************************************************************************** + // Templates for configuration of SRBs (RadioBearer_Type) + //---------------------------------------------------------------------------- + // All SRBs + + template (value) RadioBearer_Type cs_SRB_Release(SRB_Identity_Type p_Srb) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Id := { + Srb := p_Srb + }, + Config := { + Release := true + } + }; + + // SRB0 + + template (value) RadioBearer_Type cs_SRB0_ConfigDef := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Id := { + Srb := tsc_SRB0 + }, + Config := { + AddOrReconfigure := { + Pdcp := { + None:=true + }, + Rlc := { + Rb := { + TM := true + }, + TestMode := { + None:=true + } + }, + LogicalChannelId := 0, + Mac := { + LogicalChannel := { + Priority := tsc_SRB0_LogicalChannelPriority, + PrioritizedBitRate := infinity_ + }, + TestMode := { + None:=true + } + }, + DiscardULData := omit // @sic RAN5 #55 sidebar meeting sic@ + } + } + }; + + //---------------------------------------------------------------------------- + // SRB1 + + template (value) RadioBearer_Type cs_SRB1_ConfigDef := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Id := { + Srb := tsc_SRB1 + }, + Config := { + AddOrReconfigure := { + Pdcp := { + Config := { + Rb := { + Srb := true + }, + TestMode := { + None:=true + } + } + }, + Rlc := { + Rb := { + AM := { + Tx := cs_UL_AM_RLC_r8(cs_TX_AM_RLC_SRB1_Def), + Rx := cs_DL_AM_RLC_r8(cs_RX_AM_RLC_SRB1_Def) + } + }, + TestMode := { + None:=true + } + }, + LogicalChannelId := 1, + Mac := { + LogicalChannel := { + Priority := tsc_SRB1_LogicalChannelPriority, + PrioritizedBitRate := infinity_ + }, + TestMode := { + None:=true + } + }, + DiscardULData := omit // @sic RAN5 #55 sidebar meeting sic@ + } + } + }; + + //---------------------------------------------------------------------------- + // SRB2 + + template (value) RadioBearer_Type cs_SRB2_ConfigDef := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Id := { + Srb := tsc_SRB2 + }, + Config := { + AddOrReconfigure := { + Pdcp := { + Config := { + Rb := { + Srb := true + }, + TestMode := { + None:=true + } + } + }, + Rlc := { + Rb := { + AM := { + Tx := cs_UL_AM_RLC_r8(cs_TX_AM_RLC_SRB2_Def), + Rx := cs_DL_AM_RLC_r8(cs_RX_AM_RLC_SRB2_Def) + } + }, + TestMode := { + None:=true + } + }, + LogicalChannelId := 2, + Mac := { + LogicalChannel := { + Priority := tsc_SRB2_LogicalChannelPriority, + PrioritizedBitRate := infinity_ + }, + TestMode := { + None:=true + } + }, + DiscardULData := omit // @sic RAN5 #55 sidebar meeting sic@ + } + } + }; + + //**************************************************************************** + // ASP Templates for configuration of SRBs + //---------------------------------------------------------------------------- + + template (value) SYSTEM_CTRL_REQ cas_CommonRadioBearerConfig_REQ(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (value) RadioBearerList_Type p_RadioBearerList, + template (omit) boolean p_CnfFlag := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5s100135 sic@ */ + /* @sic R5s110634 additional changes: optional parameter p_CnfFlag sic@ */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, p_TimingInfo, p_CnfFlag), + Request := { + RadioBearerList := p_RadioBearerList + } + }; + + template (present) SYSTEM_CTRL_CNF car_CommonRadioBearerConfig_CNF(EUTRA_CellId_Type p_CellId) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Common := cr_CnfAspCommonPart_CellCfg(p_CellId), + Confirm := { + RadioBearerList := true + } + }; + + //**************************************************************************** + // ASP Templates for signalling at SRB0, SRB1, SRB2 + //---------------------------------------------------------------------------- + // common part: + + template (value) ReqAspCommonPart_Type cs_ReqAspCommonPart_SRB(EUTRA_CellId_Type p_CellId, + SRB_Identity_Type p_SrbId, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now, + boolean p_FollowOnFlag := false) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + CellId := p_CellId, + RoutingInfo := { + RadioBearerId := { + Srb := p_SrbId + } + }, + TimingInfo := p_TimingInfo, + ControlInfo := { + CnfFlag := false, + FollowOnFlag := p_FollowOnFlag + }, + CA_Info := omit + }; + + template (present) IndAspCommonPart_Type cr_IndAspCommonPart_SRB(template (present) EUTRA_CellId_Type p_CellId, + template (present) SRB_Identity_Type p_SrbId, + template (present) TimingInfo_Type p_TimingInfo := cr_TimingInfo_Any) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + CellId := p_CellId, + RoutingInfo := { + RadioBearerId := { + Srb := p_SrbId + } + }, + TimingInfo := p_TimingInfo, + Status := { + Ok := true + }, + CA_Info := omit + }; + + //---------------------------------------------------------------------------- + // DL Signalling + //---------------------------------------------------------------------------- + // SRB0: ASP to send RRC message + + template (value) SRB_COMMON_REQ cas_SRB0_RrcPdu_REQ(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (value) DL_CCCH_Message p_RrcPdu) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Common := cs_ReqAspCommonPart_SRB(p_CellId, tsc_SRB0, p_TimingInfo), + Signalling := { + Rrc := { + Ccch := p_RrcPdu + }, + Nas := omit + } + }; + + //---------------------------------------------------------------------------- + // SRB1/2: ASP to send RRC message + +/* template (value) SRB_COMMON_REQ cas_SRB_RrcPdu_REQ(EUTRA_CellId_Type p_CellId, */ +/* SRB_Identity_Type p_SrbId, */ +/* template (value) TimingInfo_Type p_TimingInfo, */ +/* template (value) DL_DCCH_Message p_RrcPdu) := */ +/* { */ +/* Common := cs_ReqAspCommonPart_SRB(p_CellId, p_SrbId, p_TimingInfo), */ +/* Signalling := { */ +/* Rrc := { */ +/* Dcch := p_RrcPdu */ +/* }, */ +/* Nas := omit */ +/* } */ +/* }; */ + + //---------------------------------------------------------------------------- + // SRB1: ASP to send RRC message + + template (value) SRB_COMMON_REQ cas_SRB1_RrcPdu_REQ(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (value) DL_DCCH_Message p_RrcPdu) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Common := cs_ReqAspCommonPart_SRB(p_CellId, tsc_SRB1, p_TimingInfo), + Signalling := { + Rrc := { + Dcch := p_RrcPdu + }, + Nas := omit + } + }; + + //---------------------------------------------------------------------------- + // SRB1: ASP to send RRC message (RRCConnectionReconfiguration) + one or more piggybacked NAS messages + // (more than one NAS PDU may occur only for RRCConnectionReconfiguration) + + template (value) SRB_COMMON_REQ cas_SRB1_RrcNasPduList_REQ(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (value) DL_DCCH_Message p_RrcPdu, + template (omit) NAS_MSG_RequestList_Type p_NasMsgList) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Common := cs_ReqAspCommonPart_SRB(p_CellId, tsc_SRB1, p_TimingInfo), + Signalling := { + Rrc := { + Dcch := p_RrcPdu + }, + Nas := p_NasMsgList + } + }; + + //---------------------------------------------------------------------------- + // SRB1: ASP to send RRC message (RRCConnectionReconfiguration) + piggybacked NAS message + + template (value) SRB_COMMON_REQ cas_SRB1_RrcNasPdu_REQ(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (value) DL_DCCH_Message p_RrcPdu, + template (value) NAS_MSG_Request_Type p_NasMsg) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + cas_SRB1_RrcNasPduList_REQ(p_CellId, p_TimingInfo, p_RrcPdu, {p_NasMsg}); + + //---------------------------------------------------------------------------- + // + + template (value) SRB_COMMON_REQ cas_SRB_NasPdu_REQ(EUTRA_CellId_Type p_CellId, + SRB_Identity_Type p_SrbId, + template (value) TimingInfo_Type p_TimingInfo, + template (value) NAS_MSG_Request_Type p_NasMsg) := + { /* SRB1/2: ASP to send NAS message (within RRC DLInformationTransfer) + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Common := cs_ReqAspCommonPart_SRB(p_CellId, p_SrbId, p_TimingInfo), + Signalling := { + Rrc := omit, + Nas := { p_NasMsg } + } + }; + + //---------------------------------------------------------------------------- + // SRB1: ASP to send NAS message (within RRC DLInformationTransfer) + + template (value) SRB_COMMON_REQ cas_SRB1_NasPdu_REQ(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (value) NAS_MSG_Request_Type p_NasMsg) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + cas_SRB_NasPdu_REQ(p_CellId, tsc_SRB1, p_TimingInfo, p_NasMsg); + + //---------------------------------------------------------------------------- + // SRB2: ASP to send NAS message (within RRC DLInformationTransfer) + + template (value) SRB_COMMON_REQ cas_SRB2_NasPdu_REQ(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (value) NAS_MSG_Request_Type p_NasMsg) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + cas_SRB_NasPdu_REQ(p_CellId, tsc_SRB2, p_TimingInfo, p_NasMsg); + + //---------------------------------------------------------------------------- + // SRB2: ASP to send RRC message (RRC DLInformationTransfer containing NAS message) + + template (value) SRB_COMMON_REQ cas_SRB2_RrcPdu_REQ(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (value) DL_DCCH_Message p_RrcPdu) := + { /* @status APPROVED (LTE_IRAT) */ + Common := cs_ReqAspCommonPart_SRB(p_CellId, tsc_SRB2, p_TimingInfo), + Signalling := { + Rrc := { + Dcch := p_RrcPdu + }, + Nas := omit + } + }; + + //---------------------------------------------------------------------------- + // UL Signalling + //---------------------------------------------------------------------------- + // SRB0: ASP to receive RRC message + + template (present) SRB_COMMON_IND car_SRB0_RrcPdu_IND(template (present) EUTRA_CellId_Type p_CellId, + template (present) UL_CCCH_Message p_RrcPdu) := + { /* @sic R5s100127 further MCC160 changes sic@ + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Common := cr_IndAspCommonPart_SRB(p_CellId, tsc_SRB0, ?), + Signalling := { + Rrc := { + Ccch := p_RrcPdu + }, + Nas := omit + } + }; + + //---------------------------------------------------------------------------- + // SRB1/2: ASP to receive RRC message + + template (present) SRB_COMMON_IND car_SRB_RrcPdu_IND_Common(EUTRA_CellId_Type p_CellId, + SRB_Identity_Type p_SrbId, + template (present) UL_DCCH_Message p_RrcPdu, + template (present) TimingInfo_Type p_TimingInfo := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Common := cr_IndAspCommonPart_SRB(p_CellId, p_SrbId, p_TimingInfo), + Signalling := { + Rrc := { + Dcch := p_RrcPdu + }, + Nas := omit + } + }; + + template (present) SRB_COMMON_IND car_SRB1_RrcPdu_IND(EUTRA_CellId_Type p_CellId, + template (present) UL_DCCH_Message p_RrcPdu, + template (present) TimingInfo_Type p_TimingInfo := ?) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + car_SRB_RrcPdu_IND_Common(p_CellId, tsc_SRB1, p_RrcPdu, p_TimingInfo); + + template (present) SRB_COMMON_IND car_SRB2_RrcPdu_IND(EUTRA_CellId_Type p_CellId, + template (present) UL_DCCH_Message p_RrcPdu, + template (present) TimingInfo_Type p_TimingInfo := ?) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + car_SRB_RrcPdu_IND_Common(p_CellId, tsc_SRB2, p_RrcPdu, p_TimingInfo); + + //---------------------------------------------------------------------------- + // SRB1: ASP to receive RRC message (RRCConnectionSetupComplete) + piggybacked NAS message + + template (present) SRB_COMMON_IND car_SRB1_RrcNasPdu_IND(EUTRA_CellId_Type p_CellId, + template (present) UL_DCCH_Message p_RrcPdu, + template (present) NAS_MSG_Indication_Type p_NasMsg) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Common := cr_IndAspCommonPart_SRB(p_CellId, tsc_SRB1, ?), + Signalling := { + Rrc := { + Dcch := p_RrcPdu + }, + Nas := { p_NasMsg } + } + }; + + //---------------------------------------------------------------------------- + // SRB1/2: common ASP to receive NAS message (within RRC ULInformationTransfer) + + template (present) SRB_COMMON_IND car_SRB_NasPdu_IND(EUTRA_CellId_Type p_CellId, + SRB_Identity_Type p_SrbId, + template (present) NAS_MSG_Indication_Type p_NasMsg) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Common := cr_IndAspCommonPart_SRB(p_CellId, p_SrbId, ?), + Signalling := { + Rrc := omit, + Nas := { p_NasMsg } + } + }; + + //---------------------------------------------------------------------------- + // SRB1: ASP to receive NAS message (within RRC ULInformationTransfer) + + template (present) SRB_COMMON_IND car_SRB1_NasPdu_IND(EUTRA_CellId_Type p_CellId, + template (present) NAS_MSG_Indication_Type p_NasMsg) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + car_SRB_NasPdu_IND(p_CellId, tsc_SRB1, p_NasMsg); + + //---------------------------------------------------------------------------- + // SRB2: ASP to receive NAS message (within RRC ULInformationTransfer) + + template (present) SRB_COMMON_IND car_SRB2_NasPdu_IND(EUTRA_CellId_Type p_CellId, + template (present) NAS_MSG_Indication_Type p_NasMsg) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + car_SRB_NasPdu_IND(p_CellId, tsc_SRB2, p_NasMsg); + + + //---------------------------------------------------------------------------- + // ASP to receive any message on the SRB port + + template (present) SRB_COMMON_IND car_SRB_IND_Any := + { /* @status APPROVED (LTE) */ + Common := cr_IndAspCommonPart_SRB(?, ?), + Signalling := ? + }; + +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA_Templates/EUTRA_Security_Templates.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA_Templates/EUTRA_Security_Templates.ttcn new file mode 100644 index 0000000..784663e --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA_Templates/EUTRA_Security_Templates.ttcn @@ -0,0 +1,298 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-03-01 18:20:39 +0100 (Sat, 01 Mar 2014) $ +// $Rev: 10766 $ +/******************************************************************************/ + +module EUTRA_Security_Templates { + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_ASP_TypeDefs all; + import from EUTRA_ASP_NasCtrl all; + import from EUTRA_AspCommon_Templates all; + import from EPS_NAS_TypeDefs all; + + //**************************************************************************** + // Configuration of AS security + //---------------------------------------------------------------------------- + + template (value) PdcpSQN_Type cs_PdcpSQN_SRB(integer p_Value) := + { + Format := PdcpCount_Srb, + Value := p_Value + }; + + template (value) PDCP_ActTime_Type cs_PDCP_ActTime_SQN (template (value) PdcpSQN_Type p_PDCP_SQN) := + { + SQN := p_PDCP_SQN + }; + + template (value) AS_CipheringInfo_Type cs_AS_CipheringInfo(CipheringAlgorithm_Type p_Algo, + B128_Key_Type p_KeyRRC, + B128_Key_Type p_KeyUP, + template (value) SecurityActTimeList_Type p_ActList) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Algorithm := p_Algo, + KRRCenc := p_KeyRRC, + KUPenc := p_KeyUP, + ActTimeList := p_ActList + }; + + template (value) AS_SecStartRestart_Type cs_AS_IntProtActivate(template (value) AS_IntegrityInfo_Type p_IntInfo) := + { /* @status APPROVED (LTE, LTE_A) */ + Integrity := p_IntInfo, + Ciphering := omit + }; + + template (value) AS_SecStartRestart_Type cs_AS_IntProt_CiphActivate(template (value) AS_IntegrityInfo_Type p_IntInfo, + template (value) AS_CipheringInfo_Type p_CiphInfo) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5s100576 sic@ */ + Integrity := p_IntInfo, + Ciphering := p_CiphInfo + }; + + template (value) AS_SecStartRestart_Type cs_AS_CipheringActivate(template (value) AS_CipheringInfo_Type p_CiphInfo) := + { /* @status APPROVED (LTE) */ + Integrity := omit, + Ciphering := p_CiphInfo + }; + + template (value) SYSTEM_CTRL_REQ cas_AsSecurityStart_REQ(EUTRA_CellId_Type p_CellId, + template (value) AS_SecStartRestart_Type p_AS_SecStartRestart, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now, + template (omit) boolean p_CnfFlag := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* Note: when p_TimingInfo is not cs_TimingInfo_Now p_CnfFlag shall be set to tsc_NoCnfReq */ + /* @sic R5s100178 sic@ */ + /* @sic R5s110634 additional changes: optional parameter p_CnfFlag sic@ */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, p_TimingInfo, p_CnfFlag), + Request := { + AS_Security := { + StartRestart := p_AS_SecStartRestart + } + } + }; + + template (value) SYSTEM_CTRL_REQ cas_AsSecurityRelease_REQ(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now, + template (omit) boolean p_CnfFlag := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5s100072 sic@ */ + /* @sic R5s100135 sic@ */ + /* @sic R5s110634 additional changes: optional parameter p_CnfFlag sic@ */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, p_TimingInfo, p_CnfFlag), + Request := { + AS_Security := { + Release := true + } + } + }; + + template (present) SYSTEM_CTRL_CNF car_AsSecurity_CNF(EUTRA_CellId_Type p_CellId) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Common := cr_CnfAspCommonPart_CellCfg(p_CellId), + Confirm := { + AS_Security := true + } + }; + + //---------------------------------------------------------------------------- + // Enquiry of PDCP COUNT values + + template (value) PDCP_CountReq_Type cs_PDCP_CountSet(PdcpCountInfoList_Type p_PdcpCountInfoList) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + Set := p_PdcpCountInfoList + }; + + template (value) PDCP_CountReq_Type cs_PDCP_CountGet_AllRBs := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Get := { + AllRBs := true + } + }; + + template (value) SYSTEM_CTRL_REQ cas_PdcpCount_REQ(EUTRA_CellId_Type p_CellId, + template (value) PDCP_CountReq_Type p_CountReq, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5-133623: p_TimingInfo sic@ */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, p_TimingInfo), + Request := { + PdcpCount := p_CountReq + } + }; + + template (present) PdcpCount_Type cr_PDCPCount_SRB := + { + Format := PdcpCount_Srb, + Value := ? + }; + + template (present) PdcpCount_Type cr_PDCPCount_DRB_LongSQN := + { + Format := PdcpCount_DrbLongSQN, + Value := ? + }; + + template (present) PdcpCountInfo_Type cr_PDCPCountInfo_DRB_LongSQN(DRB_Identity p_DRB_Id) := + { + RadioBearerId := { + Drb := p_DRB_Id + }, + UL := cr_PDCPCount_DRB_LongSQN, + DL := cr_PDCPCount_DRB_LongSQN + }; + + template (present) PdcpCountInfo_Type cr_PDCPCountInfo_SRB(SRB_Identity_Type p_SRB_Id) := + { + RadioBearerId := { + Srb := p_SRB_Id + }, + UL := cr_PDCPCount_SRB, + DL := cr_PDCPCount_SRB + }; + + template (present) PdcpCountInfoList_Type cr_PdcpCountInfoList_SRB := + { + cr_PDCPCountInfo_SRB(tsc_SRB1), + cr_PDCPCountInfo_SRB(tsc_SRB2) + }; + + template (present) PdcpCountInfoList_Type cr_PdcpCountInfoList_SRB_1DRB_LongSQN := + { + cr_PDCPCountInfo_SRB(tsc_SRB1), + cr_PDCPCountInfo_SRB(tsc_SRB2), + cr_PDCPCountInfo_DRB_LongSQN(tsc_DRB1) + }; + + template (present) SYSTEM_CTRL_CNF car_PdcpCount_CNF(EUTRA_CellId_Type p_CellId, + template (present) PDCP_CountCnf_Type p_PDCP_CountCnf) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Common := cr_CnfAspCommonPart_CellCfg(p_CellId), + Confirm := { + PdcpCount := p_PDCP_CountCnf + } + }; + + template (present) PdcpCountInfo_Type cr_PdcpCountInfo_DRB(template (present) DRB_Identity p_Drb) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + RadioBearerId := {Drb := p_Drb}, + UL := *, + DL := * + }; + template (present) PdcpCountInfo_Type cr_PdcpCountInfo_SRB(template (present) SRB_Identity_Type p_Srb) := + { /* @status APPROVED (LTE, LTE_A) */ + RadioBearerId := {Srb := p_Srb}, + UL := *, + DL := * + }; + //**************************************************************************** + // Configuration of NAS security + //---------------------------------------------------------------------------- + + template (value) NAS_SecurityStartRestart_Type cs_NAS_SecurityInit(B3_Type p_IntegrityAlgorithm, + B128_Key_Type p_K_NASint, + B3_Type p_CipheringAlgorithm, + B128_Key_Type p_K_NASenc, + template (omit) Null_Type p_NasCountReset := true) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Integrity := { + Algorithm := p_IntegrityAlgorithm, + K_NAS := p_K_NASint + }, + Ciphering := { + Algorithm := p_CipheringAlgorithm, + K_NAS := p_K_NASenc + }, + NasCountReset := p_NasCountReset + }; + + template (value) NAS_CTRL_REQ cas_NasSecurityStart_REQ(template (value) NAS_SecurityStartRestart_Type p_SecurityStartRestart) := + { /* Note: NAS security seems to be cell independent + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Common := cs_ReqAspCommonPart_CellCfg(eutra_Cell_NonSpecific), + Request := { + Security := { + StartRestart := p_SecurityStartRestart + } + } + }; + + template (value) NAS_CTRL_REQ cas_NasSecurityRelease_REQ := + { /* Note: NAS security seems to be cell independent */ + Common := cs_ReqAspCommonPart_CellCfg(eutra_Cell_NonSpecific), + Request := { + Security := { + Release := true + } + } + }; + + template (present) NAS_CTRL_CNF car_NasSecurity_CNF := + { /* Note: NAS security seems to be cell independent + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + Common := cr_CnfAspCommonPart_CellCfg(eutra_Cell_NonSpecific), + Confirm := { + Security := true + } + }; + + //**************************************************************************** + // Dealing with DL NAS COUNT + //---------------------------------------------------------------------------- + + template (value) NAS_CTRL_REQ cas_NasCountGet_REQ := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + Common := cs_ReqAspCommonPart_CellCfg(eutra_Cell_NonSpecific), + Request := { + NasCount := { + Get := true + } + } + }; + + template (present) NAS_CTRL_CNF car_NasCountGet_CNF := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + Common := cr_CnfAspCommonPart_CellCfg(eutra_Cell_NonSpecific), + Confirm := { + NasCount := { + Get := { + UL := ?, + DL := ? + } + } + } + }; + + template (value) NAS_CTRL_REQ cas_NasCountSet_REQ (template (omit) NasCount_Type p_NASULCount, + template (omit) NasCount_Type p_NASDLCount) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + Common := cs_ReqAspCommonPart_CellCfg(eutra_Cell_NonSpecific), + Request := { + NasCount := { + Set := { + UL := p_NASULCount, // @sic R5s120331 sic@ + DL := p_NASDLCount + } + } + } + }; + + template (present) NAS_CTRL_CNF car_NasCountSet_CNF := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + Common := cr_CnfAspCommonPart_CellCfg(eutra_Cell_NonSpecific), + Confirm := { + NasCount := { + Set := true + } + } + }; + +} diff --git a/LTE_A_IWD_14wk37/Common/EUTRA_Templates/EUTRA_SysInfo_Templates.ttcn b/LTE_A_IWD_14wk37/Common/EUTRA_Templates/EUTRA_SysInfo_Templates.ttcn new file mode 100644 index 0000000..ae865f8 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/EUTRA_Templates/EUTRA_SysInfo_Templates.ttcn @@ -0,0 +1,983 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-07 18:37:49 +0200 (Sun, 07 Sep 2014) $ +// $Rev: 12081 $ +/******************************************************************************/ + +module EUTRA_SysInfo_Templates { + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_CommonDefs all; + import from EUTRA_ASP_TypeDefs all; + + //---------------------------------------------------------------------------- + // templates used in system information as well as in other RRC messages + + template (value) PUSCH_ConfigCommon cs_508_PUSCH_ConfigCommon_Default(integer p_PuschHoppingOffset, + PUSCH_N_SB_Type p_N_SB := 1, + PUSCH_HoppingMode_Type p_HoppingMode := interSubFrame) := + { /* 36.508 Table 4.6.3-10: PUSCH-ConfigCommon-DEFAULT as signalled in RadioResourceConfiguration and SIB2 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5s110236 Additional change sic@ */ + pusch_ConfigBasic := { + n_SB := p_N_SB, /* INTEGER (1..4) */ + hoppingMode := p_HoppingMode, /* interSubFrame, intraSubFrame */ + pusch_HoppingOffset := p_PuschHoppingOffset, + enable64QAM := false + }, + ul_ReferenceSignalsPUSCH := cs_UL_ReferenceSignalsPUSCH + }; + + template (value) DeltaFList_PUCCH cs_DeltaTFList_PUCCH := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + deltaF_PUCCH_Format1 := deltaF0, // deltaF-2, deltaF0, deltaF2, spare1 + deltaF_PUCCH_Format1b := deltaF3, // deltaF1, deltaF3, deltaF5, spare1 + deltaF_PUCCH_Format2 := deltaF0, // deltaF-2, deltaF0, deltaF1, deltaF2 + deltaF_PUCCH_Format2a := deltaF0, // deltaF-2, deltaF0, deltaF2, spare1 + deltaF_PUCCH_Format2b := deltaF0 // deltaF-2, deltaF0, deltaF2, spare1 + }; + + template (value) PCCH_Config cs_508_PCCH_Config_Default := + { /* 36.508 Table 4.6.3-3: PCCH-Config-DEFAULT + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + defaultPagingCycle := rf128, /* rf32, rf64, rf128, rf256 */ + nB := oneT + }; + + //---------------------------------------------------------------------------- + // SI + + template (value) BCCH_DL_SCH_Message cs_SystemInformation_Common(template (value) SystemInformation_r8_IEs p_SystemInformation) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + message_ := { + c1 := { + systemInformation := { + criticalExtensions := { + systemInformation_r8 := p_SystemInformation + } + } + } + } + }; + + template (value) SchedulingInfoList cs_SchedulingInfo_2SI(SiPeriodicity_Type p_Sib3_Periodicity ) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + { + si_Periodicity := rf16, + sib_MappingInfo := {} // only sibType2 present (see field description for SystemInformationBlockType1 in 36.331 cl. 6.2.2) + }, + { + si_Periodicity := p_Sib3_Periodicity, + sib_MappingInfo := {sibType3} + } + }; + + template (value) SchedulingInfoList cs_SchedulingInfo_3SI(template (value) SiPeriodicity_Type p_Si2_Periodicity, + template (value) SIB_MappingInfo p_Si2_SIBMapping, + template (value) SiPeriodicity_Type p_Si3_Periodicity, + template (value) SIB_MappingInfo p_Si3_SIBMapping) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + { + si_Periodicity := rf16, + sib_MappingInfo := {} // only sibType2 present (see field description for SystemInformationBlockType1 in 36.331 cl. 6.2.2) + }, + { + si_Periodicity := p_Si2_Periodicity, + sib_MappingInfo := p_Si2_SIBMapping + }, + { + si_Periodicity := p_Si3_Periodicity, + sib_MappingInfo := p_Si3_SIBMapping + } + }; + + template (value) SchedulingInfoList cs_SchedulingInfo_4SI(template (value) SiPeriodicity_Type p_Si2_Periodicity, + template (value) SIB_MappingInfo p_Si2_SIBMapping, + template (value) SiPeriodicity_Type p_Si3_Periodicity, + template (value) SIB_MappingInfo p_Si3_SIBMapping, + template (value) SiPeriodicity_Type p_Si4_Periodicity, + template (value) SIB_MappingInfo p_Si4_SIBMapping) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + { + si_Periodicity := rf16, + sib_MappingInfo := {} // only sibType2 present (see field description for SystemInformationBlockType1 in 36.331 cl. 6.2.2) + }, + { + si_Periodicity := p_Si2_Periodicity, + sib_MappingInfo := p_Si2_SIBMapping + }, + { + si_Periodicity := p_Si3_Periodicity, + sib_MappingInfo := p_Si3_SIBMapping + }, + { + si_Periodicity := p_Si4_Periodicity, + sib_MappingInfo := p_Si4_SIBMapping + } + }; + + template (value) SchedulingInfoList cs_SchedulingInfo_5SI(template (value) SiPeriodicity_Type p_Si2_Periodicity, + template (value) SIB_MappingInfo p_Si2_SIBMapping, + template (value) SiPeriodicity_Type p_Si3_Periodicity, + template (value) SIB_MappingInfo p_Si3_SIBMapping, + template (value) SiPeriodicity_Type p_Si4_Periodicity, + template (value) SIB_MappingInfo p_Si4_SIBMapping, + template (value) SiPeriodicity_Type p_Si5_Periodicity, + template (value) SIB_MappingInfo p_Si5_SIBMapping + ) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + { + si_Periodicity := rf16, + sib_MappingInfo := {} // only sibType2 present (see field description for SystemInformationBlockType1 in 36.331 cl. 6.2.2) + }, + { + si_Periodicity := p_Si2_Periodicity, + sib_MappingInfo := p_Si2_SIBMapping + }, + { + si_Periodicity := p_Si3_Periodicity, + sib_MappingInfo := p_Si3_SIBMapping + }, + { + si_Periodicity := p_Si4_Periodicity, + sib_MappingInfo := p_Si4_SIBMapping + }, + { + si_Periodicity := p_Si5_Periodicity, + sib_MappingInfo := p_Si5_SIBMapping + } + }; + + + template (value) SchedulingInfoList cs_SchedulingInfoSI_3Segments( + template (value) SiPeriodicity_Type p_Si1_Periodicity, + template (value) SIB_MappingInfo p_Si1_SIBMapping, + template (value) SIB_MappingInfo p_Si2_SIBMapping, + template (value) SIB_MappingInfo p_Si3_SIBMapping) := + { /* @status */ + { + si_Periodicity := p_Si1_Periodicity, + sib_MappingInfo := p_Si1_SIBMapping + }, + { + si_Periodicity := p_Si1_Periodicity, + sib_MappingInfo := p_Si2_SIBMapping + }, + { + si_Periodicity := p_Si1_Periodicity, + sib_MappingInfo := p_Si3_SIBMapping + } + }; + + //-------------------------TEMPLATES--------------------------------------------------- + // MIB + + template (value) PHICH_Config cs_508_PHICH_Config_Default := + { /* 36.508 Table 4.6.3-4: PHICH-Config-DEFAULT; + signalled in MIB; + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + phich_Duration := normal, + phich_Resource := one //As per 34.108 cl 4.4.3.2 + }; + + template (value) BCCH_BCH_Message cs_508_MasterInformationBlock_Init(EUTRA_SysinfoDL_Bandwidth_Type p_DL_ChBandwidth) := + { /* 36.508 Table 4.4.3.2-1: MasterInformationBlock; + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + message_ := { + dl_Bandwidth := p_DL_ChBandwidth, + phich_Config := cs_508_PHICH_Config_Default, + systemFrameNumber := int2bit(0, 8), /* Defines the 8 most significant bits of the SFN + This value shall be fullfilled by SS*/ + spare := '0000000000'B + } + }; + + //---------------------------------------------------------------------------- + // SIB1 + template (value) TDD_Config cs_TDD_ConfigDef ( TDD_SubframeAssignment_Type p_TDD_SubframeAssignment ):= + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + subframeAssignment := p_TDD_SubframeAssignment, + specialSubframePatterns := ssp6 + }; + + template (value) BCCH_DL_SCH_Message cs_508_SystemInformationBlockType1_Def(template (value) PLMN_IdentityList p_PLMN_IdentityList, + template (value) TrackingAreaCode p_TrackingAreaCode, + template (value) CellIdentity p_CellIdentity, + integer p_EutraBand, + template (value) SchedulingInfoList p_SchedulingInformation, + template (omit) TDD_Config p_TDD_Config) := + { /* Note: in 36.331 V8.2.0 there are no types defined for sub-structures of SystemInformationBlockType1; + there it is currently not possible to hand over a parameter containing e.g. the scheduling info (Sib2SchedulingInfoAllSI_Type); + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + message_ := { + c1 := { + systemInformationBlockType1 := { + cellAccessRelatedInfo := { + plmn_IdentityList := p_PLMN_IdentityList, + trackingAreaCode := p_TrackingAreaCode, + cellIdentity := p_CellIdentity, + cellBarred := notBarred, + intraFreqReselection := notAllowed, /* Cond CellBarred */ + csg_Indication := false, + csg_Identity := omit + }, + cellSelectionInfo := { + q_RxLevMin := -53, // -106dB acc. to 36.508 table 4.4.3.2-3 + q_RxLevMinOffset := omit + }, + p_Max := omit, + freqBandIndicator := p_EutraBand, + schedulingInfoList := p_SchedulingInformation, + tdd_Config := p_TDD_Config, + si_WindowLength := ms20, + systemInfoValueTag := 0, /* to be incremented whenever the SIB is changed */ + nonCriticalExtension := { // @sic R5-120616 sic@ + lateNonCriticalExtension := omit, + nonCriticalExtension := { + ims_EmergencySupport_r9 := true_, + cellSelectionInfo_v920 := omit, + nonCriticalExtension := omit + } + } + } + } + } + }; + + template (value) BCCH_DL_SCH_Message cds_508_SystemInformationBlockType1_QBased (template (value) PLMN_IdentityList p_PLMN_IdentityList, + template (value) TrackingAreaCode p_TrackingAreaCode, + template (value) CellIdentity p_CellIdentity, + integer p_EutraBand, + template (value) SchedulingInfoList p_SchedulingInformation, + template (omit) TDD_Config p_TDD_Config) + modifies cs_508_SystemInformationBlockType1_Def := + { // Content acc. to 36.508 Table 4.4.3.2-3 with condition QBASED + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + message_ := { + c1 := { + systemInformationBlockType1 := { + nonCriticalExtension := { + nonCriticalExtension := { + cellSelectionInfo_v920 := { + q_QualMin_r9 := -20, + q_QualMinOffset_r9 := omit + } + } + } + } + } + } + }; + + template (value) SystemInformationBlockType1_v8h0_IEs cs_SystemInformationBlockType1_v8h0_IEs(template (omit) MultiBandInfoList p_MultiBandInfoList := omit) := + { /* @status APPROVED (LTE) */ + multiBandInfoList := p_MultiBandInfoList, + nonCriticalExtension := omit + } + + //---------------------------------------------------------------------------- + // SIB2 + + template (value) RACH_ConfigCommon cs_508_RACH_ConfigCommon_Default := + { /* 36.508 Table 4.6.3-12: RACH-ConfigCommon-DEFAULT; + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + preambleInfo := { + numberOfRA_Preambles := n52, /* n4, n8, n12, n16 ,n20, n24, n28, + n32, n36, n40, n44, n48, n52, n56,n60, n64 + DEFAULT n64 */ + preamblesGroupAConfig := omit + }, + powerRampingParameters := { + powerRampingStep := dB2, /* dB0, dB2,dB4, dB6 */ + preambleInitialReceivedTargetPower := dBm_104 /* DEFAULT dBm-104 + dBm-120, dBm-118, dBm-116, dBm-114, dBm-112, dBm-110, dBm-108, dBm-106, + dBm-104, dBm-102, dBm-100, dBm-98, dBm-96, dBm-94, dBm-92, dBm-90; */ + }, + ra_SupervisionInfo := { + preambleTransMax := n6, /* n1, n2, n3, n4, n5, n6, n7, n8, n10; */ + ra_ResponseWindowSize := sf10, /* sf2, sf3, sf4, sf5, sf6, sf7, sf8, sf10; */ + mac_ContentionResolutionTimer := sf48 /* sf8, sf16, sf24, sf32, sf40, sf48, sf56, sf64; */ + }, + maxHARQ_Msg3Tx := 4 /* INTEGER (1..8); */ + }; + + template (value) BCCH_Config cs_508_BCCH_Config_Default := + { /* 36.508 Table 4.6.3-1: BCCH-Config-DEFAULT */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + modificationPeriodCoeff := n4 /* n1, n2, n4, n8; */ + }; + + template (value) PRACH_ConfigInfo cs_PRACH_ConfigInfoFDD(Prach_FrequencyOffset_Type p_Prach_FrequencyOffset) := + { /* 36.508 Table 4.6.3-7: PRACH-ConfigCommon-DEFAULT */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + prach_ConfigIndex := 3, /* as per 34.108 cl 4.4.3.4 */ + highSpeedFlag := false, + zeroCorrelationZoneConfig := 5, /* INTEGER (0..15)*/ + prach_FreqOffset := p_Prach_FrequencyOffset + }; + + template (value) PRACH_ConfigInfo cs_PRACH_ConfigInfoTDD(Prach_FrequencyOffset_Type p_Prach_FrequencyOffset) := + { /* 36.508 Table 4.6.3-7: PRACH-ConfigCommon-DEFAULT */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + prach_ConfigIndex := 51, /* as per 34.108 cl 4.4.3.4 */ + highSpeedFlag := false, + zeroCorrelationZoneConfig := 4, /* INTEGER (0..15)*/ + prach_FreqOffset := p_Prach_FrequencyOffset + }; + + template (value) PRACH_ConfigSIB cs_508_PRACH_ConfigSIB_FDD ( Prach_FrequencyOffset_Type p_Prach_FrequencyOffset, + RootSequenceIndex_Type p_RootSequenceIndex ) := + { /* 36.508 Table 4.6.3-7a: PRACH-ConfigSIB-DEFAULT; as signalled in SIB2 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + rootSequenceIndex := p_RootSequenceIndex, // @sic R5-096641 sic@ + prach_ConfigInfo := cs_PRACH_ConfigInfoFDD (p_Prach_FrequencyOffset) + }; + + template (value) PRACH_ConfigSIB cs_508_PRACH_ConfigSIB_TDD(Prach_FrequencyOffset_Type p_Prach_FrequencyOffset, + RootSequenceIndex_Type p_RootSequenceIndex ) := + { /* 36.508 Table 4.6.3-7a: PRACH-ConfigSIB-DEFAULT; + as signalled in SIB2; + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + rootSequenceIndex := p_RootSequenceIndex, // @sic R5-096641 sic@ + prach_ConfigInfo := cs_PRACH_ConfigInfoTDD (p_Prach_FrequencyOffset) + }; + + template (value) PDSCH_ConfigCommon cs_508_PDSCH_ConfigCommon_Default (P_b_Type p_P_b ):= + { /* 36.508 Table 4.6.3-5: PDSCH-ConfigCommon-DEFAULT; + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + referenceSignalPower := 18, /* 1 TX - INTEGER (0) */ + p_b := p_P_b /* 1 TX or 2Tx - INTEGER (0..3) @sic R5-100786 sic@ */ + }; + + template (value) UL_ReferenceSignalsPUSCH cs_UL_ReferenceSignalsPUSCH := + { /* as signalled in RadioResourceConfiguration and SIB2; + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + groupHoppingEnabled := true, + groupAssignmentPUSCH := 0, /* INTEGER (0..29)*/ + sequenceHoppingEnabled := false, + cyclicShift := 0 + }; + + template (value) PUCCH_ConfigCommon cs_508_PUCCH_ConfigCommon_Default(N_RB_CQI_Type p_N_RB_CQI) := + { /* 36.508 Table 4.6.3-8: PUCCH-ConfigCommon-DEFAULT; + as signalled in RadioResourceConfiguration and SIB2; + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + deltaPUCCH_Shift := ds2, // ds1, ds2, ds3, spare1 + nRB_CQI := p_N_RB_CQI, + nCS_AN := 6, + n1PUCCH_AN := 0 + }; + + template (value) SoundingRS_UL_ConfigCommon cs_508_SoundingRS_UL_ConfigCommon_FDD(SrsBandwidthConfiguration_Type p_SrsBandwidthConfiguration) := + { /* 36.508 Table 4.6.3-21: SoundingRS-UL-ConfigCommon-DEFAULT; + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + setup := { + srs_BandwidthConfig := p_SrsBandwidthConfiguration, + srs_SubframeConfig := sc0, /* sc0, sc1, sc2, sc3, sc4, sc5, sc6, sc7, sc8, sc9, sc10, sc11, sc12, sc13, sc14, sc15 */ + ackNackSRS_SimultaneousTransmission := true, + srs_MaxUpPts := omit + } + }; + + template (value) SoundingRS_UL_ConfigCommon cs_508_SoundingRS_UL_ConfigCommon_TDD(SrsBandwidthConfiguration_Type p_SrsBandwidthConfiguration) := + { /* 36.508 Table 4.6.3-21: SoundingRS-UL-ConfigCommon-DEFAULT; + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + setup := { + srs_BandwidthConfig := p_SrsBandwidthConfiguration, + srs_SubframeConfig := sc4, /* sc0, sc1, sc2, sc3, sc4, sc5, sc6, sc7, sc8, sc9, sc10, sc11, sc12, sc13, sc14, sc15 */ + ackNackSRS_SimultaneousTransmission := true, + srs_MaxUpPts := omit + } + }; + + template (value) UplinkPowerControlCommon cs_508_UplinkPowerControlCommon_Default := + { /* 36.508 Table 4.6.3-25: UplinkPowerControlCommon-DEFAULT; + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + p0_NominalPUSCH := -85, // INTEGER (-126..24) + alpha := al08, // al0, al04, al05, al06, al07, al08, al09, al1 + p0_NominalPUCCH := -117, // INTEGER (-127..-96) + deltaFList_PUCCH := cs_DeltaTFList_PUCCH, + deltaPreambleMsg3 := 4 // INTEGER (-1..6) + }; + + template (value) RadioResourceConfigCommonSIB cs_508_RadioResourceConfigCommonSIB_Default(N_RB_CQI_Type p_N_RB_CQI, + PUSCH_HoppingOffset_Type p_PuschHoppingOffset, + template (value) SoundingRS_UL_ConfigCommon p_SoundingRS_UL_ConfigCommon, + template (value) PRACH_ConfigSIB p_PRACH_ConfigSIB, + P_b_Type p_P_b) := + { /* 36.508 Table 4.6.3-14: RadioResourceConfigCommonSIB-DEFAULT; + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + rach_ConfigCommon := cs_508_RACH_ConfigCommon_Default, /* @sic R5s100135 sic@ */ + bcch_Config := cs_508_BCCH_Config_Default, + pcch_Config := cs_508_PCCH_Config_Default, + prach_Config := p_PRACH_ConfigSIB, + pdsch_ConfigCommon := cs_508_PDSCH_ConfigCommon_Default( p_P_b), /* @sic R5s100135 sic@ */ + pusch_ConfigCommon := cs_508_PUSCH_ConfigCommon_Default(p_PuschHoppingOffset ), /* @sic R5s100135 sic@ */ + pucch_ConfigCommon := cs_508_PUCCH_ConfigCommon_Default(p_N_RB_CQI), /* @sic R5s100135 sic@ */ + soundingRS_UL_ConfigCommon := p_SoundingRS_UL_ConfigCommon, /* @sic R5s100135 sic@ */ + uplinkPowerControlCommon := cs_508_UplinkPowerControlCommon_Default, /* @sic R5s100135 sic@ */ + ul_CyclicPrefixLength := len1, // len1, len2 + uplinkPowerControlCommon_v1020 := omit /* @sic R5s120178 BASELINE MOVING 2012 sic@ */ + }; + + template (value) UE_TimersAndConstants cs_508_UE_TimersAndConstants := + { /* 36.508 values specified in Table 4.4.3.3-1: SystemInformationBlockType2; + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + t300 := ms1000, /* ms100, ms200, ms400, ms600, ms1000, ms1500, ms2000; */ + t301 := ms1000, /* ms100, ms200, ms400, ms600, ms1000, ms1500, ms2000; */ + t310 := ms1000, /* ms0, ms50, ms100, ms200, ms500, ms1000, ms2000; */ + n310 := n1, /* n1, n2, n3, n4, n6, n8, n10, n20 */ + t311 := ms10000, /* ms1000, ms3000, ms5000, ms10000 */ + n311 := n1 /* n1, n2, n3, n4, n5, n6, n8, n10 */ + }; + + template (value) AccessBarringInformation_Type cs_AccessBarringInformation_TemporaryBarring(AC_BarringConfig.ac_BarringTime p_BarringTime := s4) := + { /* @status APPROVED (LTE) */ + ac_BarringForEmergency := false, + ac_BarringForMO_Signalling := { + ac_BarringFactor := p00, + ac_BarringTime := p_BarringTime, + ac_BarringForSpecialAC := '11111'B + }, + ac_BarringForMO_Data := omit + }; + + + template (value) SystemInformationBlockType2 cs_508_SystemInformationBlockType2_Def(template (omit) EUTRA_SysinfoUL_Bandwidth_Type p_UL_ChBandwidth, + N_RB_CQI_Type p_N_RB_CQI, + PUSCH_HoppingOffset_Type p_PuschHoppingOffset, + template (value) SoundingRS_UL_ConfigCommon p_SoundingRS_UL_ConfigCommon, + template (value) PRACH_ConfigSIB p_PRACH_ConfigSIB, + P_b_Type p_P_b) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + ac_BarringInfo := omit, + radioResourceConfigCommon := cs_508_RadioResourceConfigCommonSIB_Default(p_N_RB_CQI, p_PuschHoppingOffset, p_SoundingRS_UL_ConfigCommon, p_PRACH_ConfigSIB, p_P_b ), + ue_TimersAndConstants := cs_508_UE_TimersAndConstants, + freqInfo := { + ul_CarrierFreq := omit, + ul_Bandwidth := p_UL_ChBandwidth, /* n6, n15, n25, n50, n75, n100; FFS */ + additionalSpectrumEmission := 1 // Acc. Table 4.4.3.3-1: SystemInformationBlockType2 and acc to TS 36.101 Table 6.2.4-1; + }, + mbsfn_SubframeConfigList := omit, + timeAlignmentTimerCommon := sf750, /* sf500, sf750, sf1280, sf1920, sf2560, sf5120, sf10240, asn1-infinity */ + lateNonCriticalExtension := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + ssac_BarringForMMTEL_Voice_r9 := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + ssac_BarringForMMTEL_Video_r9 := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + ac_BarringForCSFB_r10 := omit /* @sic R5s120178 BASELINE MOVING 2012 sic@ */ + }; + + template (value) SystemInformationBlockType2_v8h0_IEs cs_SystemInformationBlockType2_v8h0_IEs(template (omit) SystemInformationBlockType2_v8h0_IEs.multiBandInfoList p_MultiBandInfoList := omit) := + { /* @status APPROVED (LTE) */ + multiBandInfoList := p_MultiBandInfoList, + nonCriticalExtension := omit + }; + + //---------------------------------------------------------------------------- + // SIB3 + template (value) SystemInformationBlockType3 cs_508_SystemInformationBlockType3_Def := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + cellReselectionInfoCommon := { + q_Hyst := dB0, /* dB0, dB1, dB2, dB3, dB4, dB5, dB6, dB8, dB10, + dB12, dB14, dB16, dB18, dB20, dB22, dB24; */ + speedStateReselectionPars := omit + }, + cellReselectionServingFreqInfo := { + s_NonIntraSearch := omit, /* INTEGER (0..56); */ + threshServingLow := 0, /* INTEGER (0..56); */ + cellReselectionPriority := 4 /* INTEGER (0..7); */ + }, + intraFreqCellReselectionInfo := { + q_RxLevMin := -53, /* -106dB acc. to 36.508 table 4.4.3.3-2 */ + p_Max := omit, + s_IntraSearch := omit, /* INTEGER (0..56); */ + allowedMeasBandwidth := omit, + presenceAntennaPort1 := false, + neighCellConfig := '01'B, + t_ReselectionEUTRA := 0, + t_ReselectionEUTRA_SF := omit + }, + lateNonCriticalExtension := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + s_IntraSearch_v920 := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + s_NonIntraSearch_v920 := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + q_QualMin_r9 := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + threshServingLowQ_r9 := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + q_QualMinWB_r11 := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + }; + + template (value) SystemInformationBlockType3 cds_508_SystemInformationBlockType3_Qbased + modifies cs_508_SystemInformationBlockType3_Def := + { // Acc to 36.508 Table 4.4.3.3-2 with condition QBASED + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + s_IntraSearch_v920 := omit, + s_NonIntraSearch_v920 := omit, + q_QualMin_r9 := -20, + threshServingLowQ_r9 := 3 + }; + + template (value) SystemInformationBlockType3 cs_508_SystemInformationBlockType3_Common(Q_Hyst_Type p_Q_Hyst := dB0, + template (omit) SpeedStateReselectionPars_Type p_SpeedStateReselectionPars := omit, + template (omit) ReselectionThreshold p_S_NonIntraSearch := omit, + ReselectionThreshold p_ThreshServingLow := 0, + CellReselectionPriority p_CellReselectionPriority := 4, + Q_RxLevMin p_Q_RxLevMin := -53, + template (omit) P_Max p_P_Max := omit, + template (omit) ReselectionThreshold p_S_IntraSearch := omit, + template (omit) AllowedMeasBandwidth p_AllowedMeasBandwidth := omit, + PresenceAntennaPort1 p_PresenceAntennaPort1 := false, + NeighCellConfig p_NeighCellConfig := '01'B, + T_Reselection p_T_Reselection := 0, + template (omit) SpeedStateScaleFactors p_SpeedStateScaleFactors := omit) := + { /* @status APPROVED (LTE, LTE_IRAT) */ + cellReselectionInfoCommon := { + q_Hyst := p_Q_Hyst, + speedStateReselectionPars := p_SpeedStateReselectionPars + }, + cellReselectionServingFreqInfo := { + s_NonIntraSearch := p_S_NonIntraSearch, + threshServingLow := p_ThreshServingLow, + cellReselectionPriority := p_CellReselectionPriority + }, + intraFreqCellReselectionInfo := { + q_RxLevMin := p_Q_RxLevMin, + p_Max := p_P_Max, + s_IntraSearch := p_S_IntraSearch, + allowedMeasBandwidth := p_AllowedMeasBandwidth, + presenceAntennaPort1 := p_PresenceAntennaPort1, + neighCellConfig := p_NeighCellConfig, + t_ReselectionEUTRA := p_T_Reselection, + t_ReselectionEUTRA_SF := p_SpeedStateScaleFactors + }, + lateNonCriticalExtension := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + s_IntraSearch_v920 := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + s_NonIntraSearch_v920 := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + q_QualMin_r9 := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + threshServingLowQ_r9 := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + q_QualMinWB_r11 := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + }; + + template (value) SystemInformationBlockType3 cs_508_SystemInformationBlockType3_NonIntraSearch_Intrasearch (ReselectionThreshold p_S_NonIntraSearch, + ReselectionThreshold p_S_IntraSearch) := + /* @status APPROVED (LTE, LTE_IRAT) */ + cs_508_SystemInformationBlockType3_Common (-, -, p_S_NonIntraSearch, -, -, -, -, p_S_IntraSearch); + + //---------------------------------------------------------------------------- + // SIB4 + // Intra frequency list + template (value) IntraFreqNeighCellInfo cs_IntraFreqNeighCellInfo(PhysCellId p_PhysCellId, + Q_OffsetRange p_Q_OffsetRange) := + { /* @status APPROVED (LTE, LTE_A) */ + physCellId := p_PhysCellId, + q_OffsetCell := p_Q_OffsetRange + }; + + template (value) SystemInformationBlockType4 cs_508_SystemInformationBlockType4_Def := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + intraFreqNeighCellList := omit, + intraFreqBlackCellList := omit, + csg_PhysCellIdRange := omit, + lateNonCriticalExtension := omit /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + }; + + //---------------------------------------------------------------------------- + // SIB5 + template (value) InterFreqCarrierFreqInfo cs_InterFreqCarrierFreq(template (value) CarrierFreqEUTRA p_EUTRA_CarrierFreq, + AllowedMeasBandwidth p_AllowedMeasBandwidth) := + { /* default SIB5 contents in 36.508 Table 4.4.3.3-4; + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + dl_CarrierFreq := p_EUTRA_CarrierFreq.dl_CarrierFreq, + q_RxLevMin := -53, // -106dB acc. to 36.508 table 4.4.3.3-4 + p_Max := omit, + t_ReselectionEUTRA := 0, + t_ReselectionEUTRA_SF := omit, + threshX_High := 2, // 4dB + threshX_Low := 1, // 2dB + allowedMeasBandwidth := p_AllowedMeasBandwidth, // for default 5MHz Bandwidth + presenceAntennaPort1 := false, + cellReselectionPriority := 4, + neighCellConfig := '01'B, // No MBSFN subframes are present in all neighbour cells) + q_OffsetFreq := dB0, + interFreqNeighCellList := omit, + interFreqBlackCellList := omit, + q_QualMin_r9 := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + threshX_Q_r9 := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + q_QualMinWB_r11 := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + }; + + template (value) SystemInformationBlockType5 cs_508_SystemInformationBlockType5_Def(template (value) InterFreqCarrierFreqList p_InterFreqCarrierList) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + interFreqCarrierFreqList := p_InterFreqCarrierList, + lateNonCriticalExtension := omit /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + }; + + template (value) SystemInformationBlockType5_v8h0_IEs cs_SystemInformationBlockType5_v8h0_IEs(template (omit) SystemInformationBlockType5_v8h0_IEs.interFreqCarrierFreqList_v8h0 p_InterFreqCarrierFreqList_v8h0 := omit) := + { /* @status APPROVED (LTE) */ + interFreqCarrierFreqList_v8h0 := p_InterFreqCarrierFreqList_v8h0, + nonCriticalExtension := omit + }; + + //---------------------------------------------------------------------------- + // SIB6 + + template (value) CarrierFreqListUTRA_TDD cs_CarrierFreqListUTRA_TDD(template (value) CarrierFreqUTRA_TDD p_CarrierFreqListUTRA_TDD1, + template (omit) CarrierFreqUTRA_TDD p_CarrierFreqListUTRA_TDD2, + template (omit) CarrierFreqUTRA_TDD p_CarrierFreqListUTRA_TDD3) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + p_CarrierFreqListUTRA_TDD1, + p_CarrierFreqListUTRA_TDD2, + p_CarrierFreqListUTRA_TDD3 + }; + + template (value) CarrierFreqUTRA_TDD cs_CarrierFreqUTRA_TDD (template (value) ARFCN_ValueUTRA p_ARFCN_ValueUTRA) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + carrierFreq := p_ARFCN_ValueUTRA, + cellReselectionPriority := 3, + threshX_High := 2, // 4dB - Actual value of threshold in dB = IE value * 2 + threshX_Low := 1, // 2dB - Actual value of threshold in dB = IE value * 2 + q_RxLevMin := -40, // -79dBm - Actual value = IE value * 2+1, + p_MaxUTRA := 21 // 21dBm + }; + + template (value) CarrierFreqListUTRA_FDD cs_CarrierFreqListUTRA_FDD(template (value) CarrierFreqUTRA_FDD p_CarrierFreqListUTRA_FDD1, + template (omit) CarrierFreqUTRA_FDD p_CarrierFreqListUTRA_FDD2, + template (omit) CarrierFreqUTRA_FDD p_CarrierFreqListUTRA_FDD3) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + p_CarrierFreqListUTRA_FDD1, + p_CarrierFreqListUTRA_FDD2, + p_CarrierFreqListUTRA_FDD3 + }; + + template (value) CarrierFreqListUTRA_FDD cs_CarrierFreqListUTRA_FDD_1Entry(template (value) CarrierFreqUTRA_FDD p_CarrierFreqListUTRA_FDD1) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, POS, LTE_IRAT) */ + p_CarrierFreqListUTRA_FDD1 + }; + + template (value) CarrierFreqUTRA_FDD cs_CarrierFreqUTRA_FDD(ARFCN_ValueUTRA p_ARFCN_ValueUTRA) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + carrierFreq := p_ARFCN_ValueUTRA, + cellReselectionPriority := 3, + threshX_High := 2, // 4dB - Actual value of threshold in dB = IE value * 2 + threshX_Low := 1, // 2dB - Actual value of threshold in dB = IE value * 2 + q_RxLevMin := -40, // -79dBm - Actual value = IE value * 2+1, + p_MaxUTRA := 21, // 21dBm + q_QualMin := -24, // -24dBm + threshX_Q_r9 := omit /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + }; + + template (value) SystemInformationBlockType6 cs_508_SystemInformationBlockType6_Def(template (omit) CarrierFreqListUTRA_FDD p_CarrierFreqListUTRA_FDD, + template (omit) CarrierFreqListUTRA_TDD p_CarrierFreqListUTRA_TDD) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + carrierFreqListUTRA_FDD := p_CarrierFreqListUTRA_FDD, + carrierFreqListUTRA_TDD := p_CarrierFreqListUTRA_TDD, + t_ReselectionUTRA := 0, + t_ReselectionUTRA_SF := omit, + lateNonCriticalExtension := omit /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + }; + + //---------------------------------------------------------------------------- + // SIB7 + template (value) CarrierFreqsGERAN cs_CarrierFreqsGERAN ( ARFCN_ValueGERAN p_ARFCN_ValueGERAN, + BandIndicatorGERAN p_BandIndicatorGERAN, + template (value) ExplicitListOfARFCNs p_ExplicitListOfARFCNs ) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + startingARFCN := p_ARFCN_ValueGERAN, + bandIndicator := p_BandIndicatorGERAN, + followingARFCNs := { + explicitListOfARFCNs := p_ExplicitListOfARFCNs + } + }; + + template (value) CarrierFreqsInfoGERAN cs_CarrierFreqsInfoGERAN(template (value) CarrierFreqsGERAN p_CarrierFreqsGERAN, + integer p_Priority := 2) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + carrierFreqs := p_CarrierFreqsGERAN, + commonInfo := { + cellReselectionPriority := p_Priority, + ncc_Permitted := '01000000'B, // @sic R5-130453 sic@ + q_RxLevMin := 2, + p_MaxGERAN := 0, + threshX_High := 2, + threshX_Low := 2 + } + }; + + template (value) SystemInformationBlockType7 cs_508_SystemInformationBlockType7_Def(template (omit) CarrierFreqsInfoListGERAN p_CarrierFreqsInfoListGERAN, + template (value) T_Reselection p_T_ReselectionGeran := 0) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + t_ReselectionGERAN := p_T_ReselectionGeran, /* @sic R5s120290 sic@ */ + t_ReselectionGERAN_SF := omit, + carrierFreqsInfoList := p_CarrierFreqsInfoListGERAN, + lateNonCriticalExtension := omit /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + }; + + //---------------------------------------------------------------------------- + // SIB8 + template (value) CellReselectionParametersCDMA2000 cs_CellReselectionParameters1xRTT ( template (value) BandClassListCDMA2000 p_BandClassListCDMA2000, + template (value) NeighCellListCDMA2000 p_NeighCellListCDMA2000) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + bandClassList := p_BandClassListCDMA2000, + neighCellList := p_NeighCellListCDMA2000, + t_ReselectionCDMA2000 := 0, // value FFS in 36.508 INTEGER (0..7), + t_ReselectionCDMA2000_SF := omit + }; + + template (value) Parameters1XRTT_Type cs_Parameters1xRTT ( template (value) BandClassListCDMA2000 p_BandClassListCDMA2000, + template (value) NeighCellListCDMA2000 p_NeighCellListCDMA2000 ) := + { /* acc to 36.508 Table 4.4.3.3-7: SystemInformationBlockType8 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + csfb_RegistrationParam1XRTT := omit, // Values to be updated with values from CDMA + longCodeState1XRTT :=int2bit (0, 42), // @sic R5s130090r1 sic@ + cellReselectionParameters1XRTT := cs_CellReselectionParameters1xRTT (p_BandClassListCDMA2000,p_NeighCellListCDMA2000 ) + }; + + template (value) NeighCellsPerBandclassCDMA2000 cs_NeighCellsPerBandclassC2K ( ARFCN_ValueCDMA2000 p_ARFCN_ValueCDMA2000, + PhysCellIdListCDMA2000 p_PhysCellIdListCDMA2000 ):= + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + arfcn := p_ARFCN_ValueCDMA2000, + physCellIdList := p_PhysCellIdListCDMA2000 + }; + + template (value) NeighCellCDMA2000 cs_NeighCellCDMA2000 ( BandclassCDMA2000 p_BandclassCDMA2000, + template (value) NeighCellsPerBandclassListCDMA2000 p_NeighCellsPerBandclassListCDMA2000) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + bandClass := p_BandclassCDMA2000, + neighCellsPerFreqList := p_NeighCellsPerBandclassListCDMA2000 + }; + + template (value) BandClassInfoCDMA2000 cs_BandClassInfoCDMA2000 (BandclassCDMA2000 p_BandclassCDMA2000):= + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + bandClass := p_BandclassCDMA2000, + cellReselectionPriority := 1, // Acc. to 36.508 Table 4.4.3.3-7 @sic R5s100848 sic@ + threshX_High := 30, // Acc. to 36.508 Table 4.4.3.3-7 @sic R5s100848 sic@ + threshX_Low := 32 // Acc. to 36.508 Table 4.4.3.3-7 @sic R5s100848 sic@ + }; + + template (value) CellReselectionParametersCDMA2000 cs_CellReselectionParameter ( template (value) BandClassListCDMA2000 p_BandClassListCDMA2000, + template (value) NeighCellListCDMA2000 p_NeighCellListCDMA2000 ):= + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + bandClassList := p_BandClassListCDMA2000, + neighCellList := p_NeighCellListCDMA2000, + t_ReselectionCDMA2000 := 0, // Acc. to 36.508 Table 4.4.3.3-7 + t_ReselectionCDMA2000_SF := omit // Acc. to 36.508 Table 4.4.3.3-7 + }; + + template (value) ParametersHRPD_Type cs_ParametersHRPD ( template (value) BandClassListCDMA2000 p_BandClassListCDMA2000, + template (value) NeighCellListCDMA2000 p_NeighCellListCDMA2000 ) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + preRegistrationInfoHRPD := { + preRegistrationAllowed := false, + preRegistrationZoneId := omit, + secondaryPreRegistrationZoneIdList := omit // FFS only used in P3 P4 C2K test cases + }, + cellReselectionParametersHRPD := cs_CellReselectionParameter (p_BandClassListCDMA2000, p_NeighCellListCDMA2000) + }; + + + template (value) SystemInformationBlockType8 cs_508_SystemInformationBlockType8_Def( template (omit) ParametersHRPD_Type p_ParametersHRPD, + template (omit) Parameters1XRTT_Type p_Parameters1XRTT ) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + // Acc. to 36.508 Table 4.4.3.3-7: SystemInformationBlockType8 + systemTimeInfo := { + cdma_EUTRA_Synchronisation := true, + cdma_SystemTime := { synchronousSystemTime:= int2bit(0, 39) } //A valid value as per TS 36.331 and calculated by the SS + }, + searchWindowSize := 5, + parametersHRPD := p_ParametersHRPD, + parameters1XRTT := p_Parameters1XRTT, + lateNonCriticalExtension := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + csfb_SupportForDualRxUEs_r9 := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + cellReselectionParametersHRPD_v920 := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + cellReselectionParameters1XRTT_v920 := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + csfb_RegistrationParam1XRTT_v920 := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + ac_BarringConfig1XRTT_r9 := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + csfb_DualRxTxSupport_r10 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ */ + sib8_PerPLMN_List_r11 := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + }; + + template (value) SystemInformationBlockType9 cs_SystemInformationBlockType9_Def(template (omit) HnbName_Type p_HnbName) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + hnb_Name := p_HnbName, + lateNonCriticalExtension := omit /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + }; + + template (value) SystemInformationBlockType10 cs_SystemInformationBlockType10_Def(template(value) MessageIdentifier_Type p_MessageIdentifier, + template (value) SerialNumber_Type p_SerialNumber, + template (value) WarningType_Type p_WarningType) := + { /* @status APPROVED (LTE) */ + messageIdentifier := p_MessageIdentifier, + serialNumber := p_SerialNumber, + warningType := p_WarningType, + dummy := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + lateNonCriticalExtension := omit /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + }; + + template (value) SystemInformationBlockType11 cs_SystemInformationBlockType11_Def(template(value) MessageIdentifier_Type p_MessageIdentifier, + template (value) SerialNumber_Type p_SerialNumber, + template (value) WarningMessageSegmentType_Type p_WarningMessageSegmentType, + template (value) WarningMessageSegmentNumber_Type p_WarningMessageSegmentNumber, + template (value) WarningMessageSegment_Type p_WarningMessageSegment, + template (omit) DataCodingScheme_Type p_DataCodingScheme) := + { /* @status APPROVED (LTE) */ + messageIdentifier := p_MessageIdentifier, + serialNumber := p_SerialNumber, + warningMessageSegmentType := p_WarningMessageSegmentType, + warningMessageSegmentNumber := p_WarningMessageSegmentNumber, + warningMessageSegment := p_WarningMessageSegment, + dataCodingScheme := p_DataCodingScheme, + lateNonCriticalExtension := omit /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + }; + + template (value) SystemInformationBlockType12_r9 cs_SystemInformationBlockType12_Def(template(value) MessageIdentifier_Type p_MessageIdentifier, + template (value) SerialNumber_Type p_SerialNumber, + template (value) WarningMessageSegmentType_SIB12_Type p_WarningMessageSegmentType, + template (value) WarningMessageSegmentNumber_SIB12_Type p_WarningMessageSegmentNumber, + template (value) WarningMessageSegment_SIB12_Type p_WarningMessageSegment, + template (omit) DataCodingScheme_SIB12_Type p_DataCodingScheme) := + { /* @status APPROVED (LTE) */ + messageIdentifier_r9 := p_MessageIdentifier, + serialNumber_r9 := p_SerialNumber, + warningMessageSegmentType_r9 := p_WarningMessageSegmentType, + warningMessageSegmentNumber_r9 := p_WarningMessageSegmentNumber, + warningMessageSegment_r9 := p_WarningMessageSegment, + dataCodingScheme_r9 := p_DataCodingScheme, + lateNonCriticalExtension := omit + }; + + // SIB14 + template (value) EAB_Config_r11 cs_EAB_Config_Def := + { // Acc. to 36.508 Table 4.4.3.3-13A: SystemInformationBlockType14 + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + eab_Category_r11 := a, + eab_BarringBitmap_r11 := '1111111111'B + }; + + template (value) SystemInformationBlockType14_r11 cs_SystemInformationBlockType14_Def := + { // Acc. to 36.508 Table 4.4.3.3-13A: SystemInformationBlockType14 + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + eab_Param_r11 := { + eab_Common_r11 := cs_EAB_Config_Def + }, + lateNonCriticalExtension := omit + }; + + //--------------------------------------------------------------------------------------- + // SI + template (value) SystemInformation_r8_IEs cs_SI_SIB2(template (value) SystemInformationBlockType2 p_SystemInformationBlockType2) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + sib_TypeAndInfo := {{ sib2 := p_SystemInformationBlockType2 }}, + nonCriticalExtension := omit + }; + + template (value) SystemInformation_r8_IEs cs_SI_SIB3(template (value) SystemInformationBlockType3 p_SystemInformationBlockType3) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + sib_TypeAndInfo := {{ sib3 := p_SystemInformationBlockType3 }}, + nonCriticalExtension := omit + }; + + template (value) SystemInformation_r8_IEs cs_SI_SIB4(template (value) SystemInformationBlockType4 p_SystemInformationBlockType4) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + sib_TypeAndInfo := {{ sib4 := p_SystemInformationBlockType4 }}, + nonCriticalExtension := omit + }; + + template (value) SystemInformation_r8_IEs cs_SI_SIB5(template (value) SystemInformationBlockType5 p_SystemInformationBlockType5) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + sib_TypeAndInfo := {{ sib5 := p_SystemInformationBlockType5 }}, + nonCriticalExtension := omit + }; + + template (value) SystemInformation_r8_IEs cs_SI_SIB6(template (value) SystemInformationBlockType6 p_SystemInformationBlockType6) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + sib_TypeAndInfo := {{ sib6 := p_SystemInformationBlockType6 }}, + nonCriticalExtension := omit + }; + + template (value) SystemInformation_r8_IEs cs_SI_SIB7(template (value) SystemInformationBlockType7 p_SystemInformationBlockType7) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + sib_TypeAndInfo := {{ sib7 := p_SystemInformationBlockType7 }}, + nonCriticalExtension := omit + }; + + template (value) SystemInformation_r8_IEs cs_SI_SIB8(template (value) SystemInformationBlockType8 p_SystemInformationBlockType8) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + sib_TypeAndInfo := {{ sib8 := p_SystemInformationBlockType8 }}, + nonCriticalExtension := omit + }; + + template (value) SystemInformation_r8_IEs cs_SI_SIB9(template (value) SystemInformationBlockType9 p_SystemInformationBlockType9) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + sib_TypeAndInfo := {{ sib9 := p_SystemInformationBlockType9 }}, + nonCriticalExtension := omit + }; + + template (value) SystemInformation_r8_IEs cs_SI_SIB10(template (value) SystemInformationBlockType10 p_SystemInformationBlockType10) := + { /* @status APPROVED (LTE) */ + sib_TypeAndInfo := {{ sib10 := p_SystemInformationBlockType10 }}, + nonCriticalExtension := omit + }; + + template (value) SystemInformation_r8_IEs cs_SI_SIB11(template (value) SystemInformationBlockType11 p_SystemInformationBlockType11) := + { /* @status APPROVED (LTE) */ + sib_TypeAndInfo := {{ sib11 := p_SystemInformationBlockType11 }}, + nonCriticalExtension := omit + }; + + template (value) SystemInformation_r8_IEs cs_SI_SIB12(template (value) SystemInformationBlockType12_r9 p_SystemInformationBlockType12) := + { /* @status APPROVED (LTE) */ + sib_TypeAndInfo := {{ sib12_v920 := p_SystemInformationBlockType12 }}, + nonCriticalExtension := omit + }; + + template (value) SystemInformation_r8_IEs cs_SI_SIB14(template (value) SystemInformationBlockType14_r11 p_SystemInformationBlockType14) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + sib_TypeAndInfo := {{ sib14_v1130 := p_SystemInformationBlockType14 }}, + nonCriticalExtension := omit + }; + + template (value) SystemInformation_r8_IEs cs_SI_SIB5_SIB6(template (value) SystemInformationBlockType5 p_SystemInformationBlockType5, + template (value) SystemInformationBlockType6 p_SystemInformationBlockType6) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + sib_TypeAndInfo := { + { sib5 := p_SystemInformationBlockType5 }, + { sib6 := p_SystemInformationBlockType6 } + }, + nonCriticalExtension := omit + }; + + template (value) SystemInformation_r8_IEs cs_SI_SIB4_SIB5(template (value) SystemInformationBlockType4 p_SystemInformationBlockType4, + template (value) SystemInformationBlockType5 p_SystemInformationBlockType5) := + { + sib_TypeAndInfo := { + { sib4 := p_SystemInformationBlockType4 }, + { sib5 := p_SystemInformationBlockType5 } + }, + nonCriticalExtension := omit + }; + + template (value) SystemInformation_r8_IEs cs_SI_SIB6_SIB7(template (value) SystemInformationBlockType6 p_SystemInformationBlockType6, + template (value) SystemInformationBlockType7 p_SystemInformationBlockType7) := + { /* @status */ + sib_TypeAndInfo := {{ sib6 := p_SystemInformationBlockType6 }, + { sib7 := p_SystemInformationBlockType7 } + }, + nonCriticalExtension := omit + }; + + //--------------------------------------------------------------------------------------- + // BCCH info type + template (value) BcchInfo_Type cs_BCCHInfo_C1(template (value) BCCH_BCH_Message p_MIB, + template (value) BCCH_DL_SCH_Message p_SIB1, + template (value) SI_List_Type p_SI_List, + template (omit) SegmentedSI_List_Type p_SegmentedSI_List := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5-112161: new optional parameter for segmented SIs sic@ */ + MIB := p_MIB, + SIB1 := p_SIB1, + SIs := p_SI_List, + SegmentedSIs := p_SegmentedSI_List + }; + +} // End of module diff --git a/LTE_A_IWD_14wk37/Common/GERAN/GERAN_CellInfo.ttcn b/LTE_A_IWD_14wk37/Common/GERAN/GERAN_CellInfo.ttcn new file mode 100644 index 0000000..3403342 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/GERAN/GERAN_CellInfo.ttcn @@ -0,0 +1,907 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-06-06 19:54:44 +0200 (Fri, 06 Jun 2014) $ +// $Rev: 11662 $ +/******************************************************************************/ + +module GERAN_CellInfo { + + import from GERAN_TypeDefs all; + import from CommonDefs all; + import from NAS_CommonTypeDefs all; + import from GERAN_Parameters all; + import from UTRAN_Parameters all; + import from Parameters all; + import from CommonIratDefs all; + import from GERAN_Component all; + import from NAS_AuthenticationCommon all; + import from GERAN_Templates all; + import from NAS_CommonTemplates all; + import from GERAN_CapabilityFunctions_IRAT all; + + //============================================================================ + + template (value) CellChDescr cs_CellChDescr(O16_Type p_RefFreqList) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + iei := omit, + refFreqList := p_RefFreqList + }; + + template (value) CellChDescr cs_CellAllocGSM450 := cs_CellChDescr('8C838CE0400000000000000000000000'O); /* ARFCNs : 263, 267, 275 and 279 + @status APPROVED (LTE_A, LTE_IRAT) */ + template (value) CellChDescr cs_CellAllocGSM480 := cs_CellChDescr('8C9B0CE4400000000000000000000000'O); /* ARFCNs : 310, 315, 322 and 326 + @status APPROVED (LTE_A, LTE_IRAT) */ + template (value) CellChDescr cs_CellAllocGPRS900_Cell24 := cs_CellChDescr('00000000000080000802009000000200'O); /* As specified in 51.010, clause 40.2.1.1.1 {10, 37, 40, 50, 60, 80} bitmap 0 + @status APPROVED (LTE_A, LTE_IRAT) */ + template (value) CellChDescr cs_CellAllocGPRS1800_1900_Cell24 := cs_CellChDescr('8904053D828000000000000000000000'O); /* As specified in 51.010, clause 40.2.1.1.1 {520, 530, 540, 550} range 512 + @status APPROVED (LTE_A, LTE_IRAT) */ + template (value) CellChDescr cs_CellAllocGPRS700_Cell24 := cs_CellChDescr('8CDFA8D9665000000000000000000000'O); /* As specified in 51.010, clause 40.2.1.1.1 {447, 457, 477, 487, 497, 509} range 128 + @status APPROVED (LTE_A, LTE_IRAT) */ + template (value) CellChDescr cs_CellAllocGPRS850_Cell24 := cs_CellChDescr('8C4F86FAAF3000000000000000000000'O); /* As specified in 51.010, clause 40.2.1.1.1 {159, 161, 163, 165, 187, 207} + @status APPROVED (LTE_A, LTE_IRAT) */ + template (value) CellChDescr cs_CellAllocGPRS900_Cell26 := cs_CellChDescr('00802009000000200000000000004000'O); /* As specified in 51.010, clause 40.2.1.2 {15, 70, 97, 100, 110, 120} bitmap 0 + @status APPROVED (LTE_A, LTE_IRAT) */ + template (value) CellChDescr cs_CellAllocGPRS1800_1900_Cell26 := cs_CellChDescr('8918053D814000000000000000000000'O); /* As specified in 51.010, clause 40.2.1.2 {560, 570, 580, 585} range 512 + @status APPROVED (LTE_A, LTE_IRAT) */ + template (value) CellChDescr cs_CellAllocGPRS700_Cell26 := cs_CellChDescr('8CDB84F8200000000000000000000000'O); /* As specified in 51.010, clause 40.2.1.2 {439, 441, 443, 445} range 128 + @status APPROVED (LTE_A, LTE_IRAT) */ + template (value) CellChDescr cs_CellAllocGPRS850_Cell26 := cs_CellChDescr('8C5984F8200000000000000000000000'O); /* As specified in 51.010, clause 40.2.1.2 {179, 181, 183, 185} range 128 + @status APPROVED (LTE_A, LTE_IRAT) */ + template (value) CellChDescr cs_CellAllocGPRS900_Cell25 := cs_CellChDescr('02000020000200002000020000200000'O); /* As specified in 51.010, clause 40.2.1.4 {22, 42, 62, 82, 102, 122} bitmap 0 + @status APPROVED (LTE_A, LTE_IRAT) */ + template (value) CellChDescr cs_CellAllocGPRS1800_1900_Cell25 := cs_CellChDescr('8940053EC28000000000000000000000'O); /* As specified in 51.010, clause 40.2.1.4 {640, 655, 660, 670} range 512 + @status APPROVED (LTE_A, LTE_IRAT) */ + template (value) CellChDescr cs_CellAllocGPRS700_Cell25 := cs_CellChDescr('8CE584F8200000000000000000000000'O); /* As specified in 51.010, clause 40.2.1.4 {459, 461, 463, 465} range 128 + @status APPROVED (LTE_A, LTE_IRAT) */ + template (value) CellChDescr cs_CellAllocGPRS850_Cell25 := cs_CellChDescr('8C4584F8200000000000000000000000'O); /* As specified in 51.010, clause 40.2.1.4 {139, 141, 143, 145} range 128 + @status APPROVED (LTE_A, LTE_IRAT) */ + + // ============================================================================= + // range 256, ARFCN = 985, 989, 995, 1010, 1014 + // ----------------------------------------------------------------------------- + template (value) NeighCellDescr cs_ExtNeighBCCH_FreqList2bis := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + rfl2 := '10'B, // bits 128-127 + extind := '1'B, // extension indication + baind := '0'B, // bcch allocation sequence number indication + rfl4 := '1011'B, // bits 124-121 + rfl := 'EC8CF109D000000000000000000000'O // bits 120-0 + }; + + // ============================================================================= + // for GSM 700 cell A. ARFCN = 438,447,457,467,477,487,497,502,507 Values are taken from 51.010 Table 40.1.1 + // ----------------------------------------------------------------------------- + template (value) NeighCellDescr cs_NeighBCCH_FreqListGPRS700 := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + rfl2 := '10'B, // range 128 format + extind := '0'B, // complete BA + baind := '0'B, // bcch allocation sequence number indication + rfl4 := '1100'B, + rfl := 'DB31B0FB6D45600000000000000000'O // ARFCN: 438,447,457,467,477,487,497,502,507 + }; + + // ============================================================================= + // for GSM 900 GPRS cell A. ARFCN = 5,20, 80,90,100, 110,120,122,124. Values are taken from 51.010 Table 40.2.1.1.1 + // ----------------------------------------------------------------------------- + template (value) NeighCellDescr cs_NeighBCCH_FreqListGPRS900 := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + rfl2 := '00'B, // bit map 0 format + extind := '1'B, // incomplete BA + baind := '0'B, // bcch allocation sequence number indication + rfl4 := '1010'B, // bits 124-121 + rfl := '802008020080000000000000080010'O // bits 120-0 + }; + + // ============================================================================= + // for GSM 1800 cell. ARFCN = 515, 590, 600, 700, 780, 810 870, 875, 885. Values are taken from 51.010 Table 40.2.1.1.1 + // ----------------------------------------------------------------------------- + template (value) NeighCellDescr cs_NeighBCCH_FreqListGPRS1800 := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + rfl2 := '10'B, // range 512 format + extind := '0'B, // complete BA + baind := '0'B, // bcch allocation sequence number indication + rfl4 := '1001'B, + rfl := '0195452D3DB0147A80000000000000'O // ARFCN = 515, 590, 600, 700, 780, 810 870, 875, 885 + }; + + // ============================================================================= + // for GSM 1900 cell. ARFCN = 515, 590, 600, 655, 700, 710, 740, 780, 810. Values are taken from 51.010 Table 40.2.1.1.1 + // ----------------------------------------------------------------------------- + template (value) NeighCellDescr cs_NeighBCCH_FreqListGPRS1900 := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + rfl2 := '10'B, // range 512 format + extind := '0'B, // complete BA + baind := '0'B, // bcch allocation sequence number indication + rfl4 := '1001'B, + rfl := '01B0F251A4D85A7B60000000000000'O // ARFCN = 515, 590, 600, 655, 700, 710, 740, 780, 810. + }; + + // ============================================================================= + // for GSM 450 cell A. ARFCN = 259, 263, 269, 275, 279, 283, 287 and 292 + // ----------------------------------------------------------------------------- + template (value) NeighCellDescr cs_NeighBCCH_FreqListGPRS450 := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + rfl2 := '10'B, // range 128 format + extind := '0'B, // complete BA + baind := '0'B, // bcch allocation sequence number indication + rfl4 := '1100'B, + rfl := '8194D88D70C5000000000000000000'O // ARFCN: 259, 263, 269, 275, 279, 283, 287 and 292 + }; + + // ============================================================================= + // for GSM 480 cell A. ARFCN = 306, 310, 316, 322, 326, 330, 334 and 339 + // ----------------------------------------------------------------------------- + template (value) NeighCellDescr cs_NeighBCCH_FreqListGPRS480 := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + rfl2 := '10'B, // range 128 format + extind := '0'B, // complete BA + baind := '0'B, // bcch allocation sequence number indication + rfl4 := '1100'B, + rfl := '9914D88D70C5000000000000000000'O // ARFCN: 306, 310, 316, 322, 326, 330, 334 and 339 + }; + + // ============================================================================= + // for GSM 850 cell A. ARFCN = 137,147,157,177,197,207,217,227,237. Values are taken from 51.010 Table 40.2.1.1.1 + // ----------------------------------------------------------------------------- + template (value) NeighCellDescr cs_NeighBCCH_FreqListGPRS850 := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + rfl2 := '10'B, // range 128 format + extind := '0'B, // complete BA + baind := '0'B, // bcch allocation sequence number indication + rfl4 := '1100'B, + rfl := '44C6394B5A8A300000000000000000'O // ARFCN: 137,147,157,177,197,207,217,227,237 + }; + + // ============================================================================= + + template (value) GERAN_CommonCellInfo_Type cs_G_CommonCellConfigInfoDef (O2_Type p_CellIdentity):= + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + gamma := '00100'B, + downlinkPowerLevel := 63, // Downlink transmission power level Vemf(). + cellIdentity := p_CellIdentity, // cell identity + mcc := '001'H, // mobile country code = 001 (decimal) + mnc := '01F'H, // mobile network code = 01 (decimal) + plmn := '00F110'O, // PLMN + lac := '0001'O, // location area code = '0001'O + rac := '05'O, // routing area code. Default = '05'O + nmo := '00'B, // network mode of operation. Default = '00'B + ncc := '001'B, // PLMN colour code = '001'B + bcc := '101'B, // BS colour code = '101'B + dTX := '10'B, // Uplink discontinuous transmission not used. (indecation in BCCH) + dtx8 := '0'B, // Uplink discontinuous transmission not used. (indecation in SACHH) + dtx65 := '10'B, // Uplink discontinuous transmission not used. (indecation in SACHH) + splitPGcycle := cs_SplitPGCycleInitial, // no split pg cycle on CCCH. value taken from PIXIT. (shall be PICS qustion?) + timingAdvance := bit2oct(px_TimingAdvance), // timing advance value = 30 * 48/13 us @sic R5s120587 sic@ + tSC := px_TSC, // training sequence code for dedicated channels. + controlChDesr := { + mSCRelease := '1'B, // MSC release + att := '1'B, // attach-detach allowed + bS_AG_BLKS_RES := '010'B, // base station access grant blocks reservation + cCCH_CONF := '001'B, // CCCH configuration + si22Ind := '0'B, // @sic R5s130195 Baseline Moving sic@ + cBQ3 := '00'B, // cell bar qualify 3 @sic R5s130195 Baseline Moving sic@ + spareBits := '00'B, // spare bits + bS_PA_MFRMS := '100'B, // number of multiframes for paging request + t3212 := '00'O // t3212 value + }, // Control channel description 44.018, clause 10.5.2.11 + rachCtrlParams := { + maxretx := '00'B, // maximum retransmissions + txInteger := '0010'B, // Tx integer, number of slots to spread transmission + cellBarAccess := '0'B, // cell barred for access + re := '1'B, // call reestablishment allowed + acc_2 := '00000'B, // access control class 15-11 + ec := '0'B, // emergency call allowed + acc_1 := '0000000000'B // access control class 9-0 + }, // RACH control Parameters 44.018 clause 10.5.2.29 + cellSelParams := { + cellReselHysteresis := '110'B, // cell reselected hysteresis + mS_TXPWR_MAX_CCH := '01010'B, // MS maximum TX power for CCH @sic R5s120602 sic@ + acs := '0'B, // additional reselect parameter indicator + neci := '1'B, // half rate support + rXLEV_ACCESS_MIN := '011001'B // MS minimum received signal level @sic R5s120602, R5-123793 sic@ + }, // Cell Selection Parameters 44.018 clause 10.5.2.4 + radioLinkTimeout := '0001'B, // RADIO-LINK-TIMEOUT = 8 SACCH blocks + nccPermitted := '02'O, // NCC permitted = 0000 0010 + dN_Ind := '0'B, // dynamic ARFCN mapping not used + tlli := tsc_TLLI_Initial, + oldTlli := tsc_TLLI_Initial + }; + + template (value) DRXparameter cs_SplitPGCycleInitial := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + iei := omit, + splitPGcycleCode := '00000000'B, // Split PG cycle code + cnDRXcoef := '0000'B, // CN specific DRX cycle length coefficient + splitOnCCCH := px_SplitOnCCCH, // Split on CCCCH + nonDRXtimer := '000'B // non-DRX timer + }; + + //---------------------------------------------------------------------------- + /* + * @desc To get the GERAN cell Identity, that's used in the SI msgs + * @param p_CellId + * @return O2_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_CellInfo_GetCellIdentity(GERAN_CellId_Type p_CellId) return O2_Type + { + select (p_CellId) + { + case (geran_Cell24, geran34_Cell9) { + return '0001'O; + } case (geran_Cell25, geran34_Cell10) { + return '0002'O; + } case (geran_Cell26) { + return '0003'O; + } case else { + FatalError (__FILE__, __LINE__, "Invalid CellId"); + return '0000'O; + } + } + } + + /* + * @desc Initialise all GERAN cell info + * @return GERAN_CellArray_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_CellArray_Init () return GERAN_CellArray_Type + { + var template (value) GERAN_CellArray_Type v_GERAN_Cells; + var O2_Type v_CellId; + var integer v_Index; + + // fill in frequencies first + v_GERAN_Cells := f_GERAN_CellInfoFrequencies_Init (); + + // then do the rest for each cell + v_Index := f_GERAN_CellInfo_GetIndex (geran_Cell24); + v_CellId := f_GERAN_CellInfo_GetCellIdentity (geran_Cell24); + v_GERAN_Cells[0].info := cs_G_CommonCellConfigInfoDef (v_CellId); + + v_Index := f_GERAN_CellInfo_GetIndex (geran_Cell25); + v_CellId := f_GERAN_CellInfo_GetCellIdentity (geran_Cell25); + v_GERAN_Cells[1].info := cs_G_CommonCellConfigInfoDef (v_CellId); + v_GERAN_Cells[1].info.lac := '0002'O; // LAC should be different in every cell + + v_Index := f_GERAN_CellInfo_GetIndex (geran_Cell26); + v_CellId := f_GERAN_CellInfo_GetCellIdentity (geran_Cell26); + v_GERAN_Cells[2].info := cs_G_CommonCellConfigInfoDef (v_CellId); + v_GERAN_Cells[2].info.lac := '0003'O; // LAC should be different in every cell + + // initialise this as much as possible @sic R5s120657 sic@ + v_GERAN_Cells := f_GERAN_SystemInformation_Init (v_GERAN_Cells); + + return valueof(v_GERAN_Cells); + } + + /* + * @desc Initialise the global array with values specified in 51.010-1, clause 40 + * @return template (value) GERAN_CellArray_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_CellInfoFrequencies_Init() return template (value) GERAN_CellArray_Type + { + var template (value) GERAN_CellArray_Type v_FreqList; + + select (px_GERAN_BandUnderTest) + { + case (GSM_P900, GSM_E900) + { + v_FreqList[0].freq.bCCH_Freq := '0000010100'B; // Serving cell: 20 + v_FreqList[0].freq.gPRSCh_Freq := '0000011110'B; // GPRS Ch: 30 + v_FreqList[0].freq.tch_Freq := '0000001010'B; // TCH 10 + v_FreqList[0].freq.cellAllocation := cs_CellAllocGPRS900_Cell24; + v_FreqList[0].freq.neighBCCHFreqList := cs_NeighBCCH_FreqListGPRS900; + v_FreqList[0].freq.arfcnList := {5, 80,90,100, 110,120,122,124}; + v_FreqList[0].freq.extNeighBCCHFreqList := cs_ExtNeighBCCH_FreqList2bis; + v_FreqList[0].freq.bandIndicator := '0'B; // ARFCN band = DCS1800 band + + v_FreqList[1].freq.bCCH_Freq := '0001101110'B; // Serving cell: 110 + v_FreqList[1].freq.gPRSCh_Freq := '0000100011'B; // GPRS Ch: 35 + v_FreqList[1].freq.tch_Freq := '0000001111'B; // TCH 15 + v_FreqList[1].freq.cellAllocation := cs_CellAllocGPRS900_Cell25; + v_FreqList[1].freq.neighBCCHFreqList := cs_NeighBCCH_FreqListGPRS900; + v_FreqList[1].freq.arfcnList := {5, 20, 80,90,100, 120,122,124}; + v_FreqList[1].freq.extNeighBCCHFreqList := cs_ExtNeighBCCH_FreqList2bis; + v_FreqList[1].freq.bandIndicator := '0'B; // ARFCN band = DCS1800 band + + v_FreqList[2].freq.bCCH_Freq := '0000000101'B; //5 + v_FreqList[2].freq.gPRSCh_Freq := '0000111100'B; // GPRS Ch: 60 + v_FreqList[2].freq.tch_Freq := '0001000001'B; // TCH 65 + v_FreqList[2].freq.cellAllocation := cs_CellAllocGPRS900_Cell26; + v_FreqList[2].freq.neighBCCHFreqList := cs_NeighBCCH_FreqListGPRS900; + v_FreqList[2].freq.arfcnList := {20, 80,90,100, 110,120,122,124}; + v_FreqList[2].freq.extNeighBCCHFreqList := cs_ExtNeighBCCH_FreqList2bis; + v_FreqList[2].freq.bandIndicator := '0'B; // ARFCN band = DCS1800 band + } + case (DCS1800) + { + v_FreqList[0].freq.bCCH_Freq := '1001001110'B; // Serving cell: 590 + v_FreqList[0].freq.gPRSCh_Freq := '1010001010'B; // GPRS Ch: 650 + v_FreqList[0].freq.tch_Freq := '1000001000'B; // TCH 520 + v_FreqList[0].freq.cellAllocation := cs_CellAllocGPRS1800_1900_Cell24; + v_FreqList[0].freq.neighBCCHFreqList := cs_NeighBCCH_FreqListGPRS1800; + v_FreqList[0].freq.arfcnList := {515, 600, 700, 780, 810, 870, 875, 885}; + v_FreqList[0].freq.extNeighBCCHFreqList := omit; + v_FreqList[0].freq.bandIndicator := '0'B; // ARFCN band = DCS1800 band + + v_FreqList[1].freq.bCCH_Freq := '1010111100'B; // 700 + v_FreqList[1].freq.gPRSCh_Freq := '1011010101'B; // GPRS Ch: 725 + v_FreqList[1].freq.tch_Freq := '1000110000'B; // TCH 560 + v_FreqList[1].freq.cellAllocation := cs_CellAllocGPRS1800_1900_Cell25; + v_FreqList[1].freq.neighBCCHFreqList := cs_NeighBCCH_FreqListGPRS1800; + v_FreqList[1].freq.arfcnList := {515, 590, 600, 780, 810, 870, 875, 885}; + v_FreqList[1].freq.extNeighBCCHFreqList := omit; + v_FreqList[1].freq.bandIndicator := '0'B; // ARFCN band = DCS1800 band + + v_FreqList[2].freq.bCCH_Freq := '1000000011'B; // Serving cell: 515 + v_FreqList[2].freq.gPRSCh_Freq := '1011101110'B; // GPRS Ch: 750 + v_FreqList[2].freq.tch_Freq := '1001011101'B; // TCH 605 + v_FreqList[2].freq.cellAllocation := cs_CellAllocGPRS1800_1900_Cell26; + v_FreqList[2].freq.neighBCCHFreqList := cs_NeighBCCH_FreqListGPRS1800; + v_FreqList[2].freq.arfcnList := {590, 600, 700, 780, 810, 870, 875, 885}; + v_FreqList[2].freq.extNeighBCCHFreqList := omit; + v_FreqList[2].freq.bandIndicator := '0'B; // ARFCN band = DCS1800 band + } + case (PCS1900) + { + v_FreqList[0].freq.bCCH_Freq := '1001001110'B; // Serving cell: 590 + v_FreqList[0].freq.gPRSCh_Freq := '1010001010'B; // GPRS Ch: 650 + v_FreqList[0].freq.tch_Freq := '1000001000'B; // TCH 520 + v_FreqList[0].freq.cellAllocation := cs_CellAllocGPRS1800_1900_Cell24; + v_FreqList[0].freq.neighBCCHFreqList := cs_NeighBCCH_FreqListGPRS1900; + v_FreqList[0].freq.arfcnList := {515, 600, 655, 700, 710, 740, 780, 810}; + v_FreqList[0].freq.extNeighBCCHFreqList := omit; + v_FreqList[0].freq.bandIndicator := '1'B; // ARFCN band = PCS1900 band + + v_FreqList[1].freq.bCCH_Freq := '1010111100'B; // 700 + v_FreqList[1].freq.gPRSCh_Freq := '1011010101'B; // GPRS Ch: 725 + v_FreqList[1].freq.tch_Freq := '1000110000'B; // TCH 560 + v_FreqList[1].freq.cellAllocation := cs_CellAllocGPRS1800_1900_Cell25; + v_FreqList[1].freq.neighBCCHFreqList := cs_NeighBCCH_FreqListGPRS1900; + v_FreqList[1].freq.arfcnList := {515, 590, 600, 655, 710, 740, 780, 810}; + v_FreqList[1].freq.extNeighBCCHFreqList := omit; + v_FreqList[1].freq.bandIndicator := '1'B; // ARFCN band = PCS1900 band + + v_FreqList[2].freq.bCCH_Freq := '1000000011'B; //Serving cell: 515 + v_FreqList[2].freq.gPRSCh_Freq := '1011110011'B; // GPRS Ch: 755 + v_FreqList[2].freq.tch_Freq := '1001011101'B; // TCH 605 + v_FreqList[2].freq.cellAllocation := cs_CellAllocGPRS1800_1900_Cell26; + v_FreqList[2].freq.neighBCCHFreqList := cs_NeighBCCH_FreqListGPRS1900; + v_FreqList[2].freq.arfcnList := {590, 600, 655, 700, 710, 740, 780, 810}; + v_FreqList[2].freq.extNeighBCCHFreqList := omit; + v_FreqList[2].freq.bandIndicator := '1'B; // ARFCN band = PCS1900 band + } + case (GSM450) + { + v_FreqList[0].freq.bCCH_Freq := '0100001111'B; // Serving cell: 271 + v_FreqList[0].freq.gPRSCh_Freq := '0100010100'B; // GPRS Ch: 276 + v_FreqList[0].freq.tch_Freq := '0100001001'B; // TCH 265 + v_FreqList[0].freq.cellAllocation := cs_CellAllocGSM450; + v_FreqList[0].freq.neighBCCHFreqList := cs_NeighBCCH_FreqListGPRS450; + v_FreqList[0].freq.arfcnList := {259, 263, 269, 275, 279, 283, 287, 292}; + v_FreqList[0].freq.extNeighBCCHFreqList := omit; + v_FreqList[0].freq.bandIndicator := '0'B; // ARFCN band = DCS1800 band + + v_FreqList[1].freq.bCCH_Freq := '0100100000'B; //288 + v_FreqList[1].freq.gPRSCh_Freq := '0100011100'B; // GPRS Ch: 284 + v_FreqList[1].freq.tch_Freq := '0100001110'B; // TCH 270 + v_FreqList[1].freq.cellAllocation := cs_CellAllocGSM450; + v_FreqList[1].freq.neighBCCHFreqList := cs_NeighBCCH_FreqListGPRS450; + v_FreqList[1].freq.arfcnList := {259, 263, 269, 275, 279, 283, 287, 292}; + v_FreqList[1].freq.extNeighBCCHFreqList := omit; + v_FreqList[1].freq.bandIndicator := '0'B; // ARFCN band = DCS1800 band + + v_FreqList[2].freq.bCCH_Freq := '0100000100'B; // Serving cell: 260 + v_FreqList[2].freq.gPRSCh_Freq := '0100001000'B; // GPRS Ch: 264 + v_FreqList[2].freq.tch_Freq := '0100010011'B; // TCH 275 + v_FreqList[2].freq.cellAllocation := cs_CellAllocGSM450; + v_FreqList[2].freq.neighBCCHFreqList := cs_NeighBCCH_FreqListGPRS450; + v_FreqList[2].freq.arfcnList := {259, 263, 269, 275, 279, 283, 287, 292}; + v_FreqList[2].freq.extNeighBCCHFreqList := omit; + v_FreqList[2].freq.bandIndicator := '0'B; // ARFCN band = DCS1800 band + } + case (GSM480) + { + v_FreqList[0].freq.bCCH_Freq := '0101001000'B; // Serving cell: 328 + v_FreqList[0].freq.gPRSCh_Freq := '0101000100'B; // GPRS Ch: 324 + v_FreqList[0].freq.tch_Freq := '0101000011'B; // TCH 323 + v_FreqList[0].freq.cellAllocation := cs_CellAllocGSM480; + v_FreqList[0].freq.neighBCCHFreqList := cs_NeighBCCH_FreqListGPRS480; + v_FreqList[0].freq.arfcnList := {306, 310, 316, 322, 326, 330, 334, 339}; + v_FreqList[0].freq.extNeighBCCHFreqList := omit; + v_FreqList[0].freq.bandIndicator := '0'B; // ARFCN band = DCS1800 band + + v_FreqList[1].freq.bCCH_Freq := '0101010000'B; //336 + v_FreqList[1].freq.gPRSCh_Freq := '0101001100'B; // GPRS Ch: 332 + v_FreqList[1].freq.tch_Freq := '0101001000'B; // TCH 328 + v_FreqList[1].freq.cellAllocation := cs_CellAllocGSM480; + v_FreqList[1].freq.neighBCCHFreqList := cs_NeighBCCH_FreqListGPRS480; + v_FreqList[1].freq.arfcnList := {306, 310, 316, 322, 326, 330, 334, 339}; + v_FreqList[1].freq.extNeighBCCHFreqList := omit; + v_FreqList[1].freq.bandIndicator := '0'B; // ARFCN band = DCS1800 band + + v_FreqList[2].freq.bCCH_Freq := '0100110100'B; // Serving cell: 308 + v_FreqList[2].freq.gPRSCh_Freq := '0100111000'B; // GPRS Ch: 312 + v_FreqList[2].freq.tch_Freq := '0101001101'B; // TCH 333 + v_FreqList[2].freq.cellAllocation := cs_CellAllocGSM480; + v_FreqList[2].freq.neighBCCHFreqList := cs_NeighBCCH_FreqListGPRS480; + v_FreqList[2].freq.arfcnList := {306, 310, 316, 322, 326, 330, 334, 339}; + v_FreqList[2].freq.extNeighBCCHFreqList := omit; + v_FreqList[2].freq.bandIndicator := '0'B; // ARFCN band = DCS1800 band + } + case (GSM850) + { + v_FreqList[0].freq.bCCH_Freq := '0010010011'B; // Serving cell: 147 + v_FreqList[0].freq.gPRSCh_Freq := '0010011101'B; // GPRS Ch: 157 + v_FreqList[0].freq.tch_Freq := '0010011111'B; // TCH 159 + v_FreqList[0].freq.cellAllocation := cs_CellAllocGPRS850_Cell24; + v_FreqList[0].freq.neighBCCHFreqList := cs_NeighBCCH_FreqListGPRS850; + v_FreqList[0].freq.arfcnList := {137,157,177,197,207,217,227,237}; + v_FreqList[0].freq.extNeighBCCHFreqList := omit; + v_FreqList[0].freq.bandIndicator := '0'B; // ARFCN band = DCS1800 band + + v_FreqList[1].freq.bCCH_Freq := '0011011001'B; //217 + v_FreqList[1].freq.gPRSCh_Freq := '0011011110'B; // GPRS Ch: 222 + v_FreqList[1].freq.tch_Freq := '0010110011'B; // TCH 179 + v_FreqList[1].freq.cellAllocation := cs_CellAllocGPRS850_Cell25; + v_FreqList[1].freq.neighBCCHFreqList := cs_NeighBCCH_FreqListGPRS850; + v_FreqList[1].freq.arfcnList := {137,147,157,177,197,207,227,237}; + v_FreqList[1].freq.extNeighBCCHFreqList := omit; + v_FreqList[1].freq.bandIndicator := '0'B; // ARFCN band = DCS1800 band + + v_FreqList[2].freq.bCCH_Freq := '0010001001'B; // Serving cell: 137 + v_FreqList[2].freq.gPRSCh_Freq := '0011110010'B; // GPRS Ch: 242 + v_FreqList[2].freq.tch_Freq := '0010101001'B; // TCH 169 + v_FreqList[2].freq.cellAllocation := cs_CellAllocGPRS850_Cell26; + v_FreqList[2].freq.neighBCCHFreqList := cs_NeighBCCH_FreqListGPRS850; + v_FreqList[2].freq.arfcnList := {147,157,177,197,207,217,227,237}; + v_FreqList[2].freq.extNeighBCCHFreqList := omit; + v_FreqList[2].freq.bandIndicator := '0'B; // ARFCN band = DCS1800 band + } + case (GSM710, GSM750, T_GSM810) + { + v_FreqList[0].freq.bCCH_Freq := '0111001001'B; // Serving cell: 457 + v_FreqList[0].freq.gPRSCh_Freq := '0111010011'B; // GPRS channel : 467 + v_FreqList[0].freq.tch_Freq := '0110111111'B; // TCH 447 + v_FreqList[0].freq.cellAllocation := cs_CellAllocGPRS700_Cell24; + v_FreqList[0].freq.neighBCCHFreqList := cs_NeighBCCH_FreqListGPRS700; + v_FreqList[0].freq.arfcnList := {438,447,467,477,487,497,502,507}; + v_FreqList[0].freq.extNeighBCCHFreqList := omit; + v_FreqList[0].freq.bandIndicator := '0'B; // ARFCN band = DCS1800 band + + v_FreqList[1].freq.bCCH_Freq := '0111011101'B; // 477 + v_FreqList[1].freq.gPRSCh_Freq := '0111001001'B; // GPRS Ch: 457 + v_FreqList[1].freq.tch_Freq := '0110110111'B; // TCH 439 + v_FreqList[1].freq.cellAllocation := cs_CellAllocGPRS700_Cell25; + v_FreqList[1].freq.neighBCCHFreqList := cs_NeighBCCH_FreqListGPRS700; + v_FreqList[1].freq.arfcnList := {438,447,457,467,487,497,502,507}; + v_FreqList[1].freq.extNeighBCCHFreqList := omit; + v_FreqList[1].freq.bandIndicator := '0'B; // ARFCN band = DCS1800 band + + v_FreqList[2].freq.bCCH_Freq := '0110111111'B; //447 + v_FreqList[2].freq.gPRSCh_Freq := '0110110110'B; // GPRS Ch: 438 + v_FreqList[2].freq.tch_Freq := '0111000001'B; // TCH 449 + v_FreqList[2].freq.cellAllocation := cs_CellAllocGPRS700_Cell26; + v_FreqList[2].freq.neighBCCHFreqList := cs_NeighBCCH_FreqListGPRS700; + v_FreqList[2].freq.arfcnList := {438,457,467,477,487,497,502,507}; + v_FreqList[2].freq.extNeighBCCHFreqList := omit; + v_FreqList[2].freq.bandIndicator := '0'B; // ARFCN band = DCS1800 band + } + } // end of select + return v_FreqList; // @sic R5s120615 sic@ + + } // end of f_GERAN_CellInfoFrequencies_Init + + /* + * @desc Initialise GERAN security + * @return GERAN_SecurityInfo_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_Security_Init() return GERAN_SecurityInfo_Type + { + var template (value) GERAN_SecurityInfo_Type v_SecurityInfo; + + v_SecurityInfo.authPS := cs_CommonAuthParams_Init(px_eAuthRAND); + v_SecurityInfo.authCS := f_AuthenticationInit (valueof (cs_CommonAuthParams_Init(px_eAuthRAND))); // @sic R5s120498 sic@ + v_SecurityInfo.cipherKey := px_CipherKey; // cipher key + v_SecurityInfo.cipherMode := cs_CipherModeSettingGSM; // ciphering algorithm and cipher starting flag, 3GPP TS 44.018 clause 10.5.2.9 + v_SecurityInfo.gprsCipherAlg := int2bit (enum2int(px_GPRS_CipheringAlgorithm), 3); // @sic R5-130618, R5s130132 sic@ + v_SecurityInfo.CSinOtherRAT := false; // @sic R5s110168 change 8.1 sic@ + + return valueof(v_SecurityInfo); + } + + /* + * @desc Initialise GERAN Msg Received in Default + * @return GERAN_MsgReceivedInDefault_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_MsgInDefault_Init() return GERAN_MsgReceivedInDefault_Type + { + var template (value) GERAN_MsgReceivedInDefault_Type v_MsgInDefault; + + v_MsgInDefault.locationUpdatingRequest := omit; + v_MsgInDefault.routingAreaUpdateRequest := omit; + v_MsgInDefault.xid := omit; // @sic R5s140286 sic@ + + return valueof(v_MsgInDefault); + } + + /* + * @desc Initalises the GERAN system information messages + * N.B. This function initialises a dummy value for SI2q + * @param p_CellArray + * @return GERAN_CellArray_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_SystemInformation_Init ( template (value) GERAN_CellArray_Type p_CellArray) return GERAN_CellArray_Type + { + var template (value) GERAN_SystemInformation_Type v_SysInfo; + var template (value) GERAN_CellArray_Type v_CellArray := p_CellArray; + var template (value) LocAreaId v_LAI; + var NeighCellDescr v_NeighCellDescr; + var integer v_Index := 0; + + for (v_Index := 0; v_Index < tsc_GERAN_NumberOfCells; v_Index := v_Index + 1) { + + v_LAI := cs_LAI (omit, valueof(v_CellArray[v_Index].info.plmn), valueof(v_CellArray[v_Index].info.lac)); + + v_SysInfo.si1 := cs_SysInfoType1(v_CellArray[v_Index].freq.cellAllocation, v_CellArray[v_Index].info.rachCtrlParams, v_CellArray[v_Index].freq.bandIndicator); + v_SysInfo.si2 := cs_SysInfoType2(v_CellArray[v_Index].freq.neighBCCHFreqList, v_CellArray[v_Index].info.nccPermitted, v_CellArray[v_Index].info.rachCtrlParams); + v_SysInfo.si3 := cs_SysInfoType3(v_CellArray[v_Index].info.cellIdentity, + v_LAI, + v_CellArray[v_Index].info.controlChDesr, + cs_CellOptionBCCH( v_CellArray[v_Index].info.dN_Ind, v_CellArray[v_Index].info.dTX, v_CellArray[v_Index].info.radioLinkTimeout), + v_CellArray[v_Index].info.cellSelParams, v_CellArray[v_Index].info.rachCtrlParams, + cds_SI3_RO_GPRS_SI2quater); + v_SysInfo.si4 := cs_SysInfoType4(v_LAI, v_CellArray[v_Index].info.cellSelParams, v_CellArray[v_Index].info.rachCtrlParams, cds_SI4_RO_GPRS); + v_SysInfo.si5 := cs_SysInfoType5(v_CellArray[v_Index].freq.neighBCCHFreqList); + v_SysInfo.si6 := cs_SysInfoType6(v_CellArray[v_Index].info.cellIdentity, + v_LAI, + cs_CellOptionSACCH( v_CellArray[v_Index].info.dtx8, v_CellArray[v_Index].info.dtx65, v_CellArray[v_Index].info.radioLinkTimeout), + v_CellArray[v_Index].info.nccPermitted, + cs_SI6_RO_Spare(v_CellArray[v_Index].freq.bandIndicator)); + v_SysInfo.si13 := cs_SysInfoType13(cs_SI13_RO_GPRS(v_CellArray[v_Index].info.rac, v_CellArray[v_Index].info.nmo)); + v_SysInfo.si15 := cs_SysInfoType15(cs_SI15_RO('0110'B)); // value for GSM 700. This will be changed according to the band under test when sent, if required + if (isvalue (v_CellArray[v_Index].freq.extNeighBCCHFreqList)) { // @sic R5s120615 sic@ + v_NeighCellDescr := valueof(v_CellArray[v_Index].freq.extNeighBCCHFreqList); + v_SysInfo.si2bis := cs_SysInfoType2bis(v_NeighCellDescr, v_CellArray[v_Index].info.rachCtrlParams); + v_SysInfo.si5bis := cs_SysInfoType5bis(v_NeighCellDescr); + } else { + v_SysInfo.si2bis := omit; + v_SysInfo.si5bis := omit; + } + + v_SysInfo.si2quater_1 := cs_SysInfoType2quater(cs_SI2quaterRO('0000'B, + '0000'B, + '0'B, + omit, // @sic GP-120371 sic@ + omit, + omit, + omit)); + v_SysInfo.si2quater_2 := omit; + v_SysInfo.si2quater_3 := omit; // so everything can fit in one instance @sic R5s120021 sic@ + v_SysInfo.si2quater_4 := omit; // so everything can fit in one instance @sic R5s120129 sic@ + v_CellArray[v_Index].sysInfo := valueof(v_SysInfo); + } + return valueof (v_CellArray); + } + + /* + * @desc Adds the interRAT data to the GERAN system information messages + * @param p_CellArray + * @param p_SysInfoList + * @return GERAN_CellArray_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_SystemInformation_InterRAT ( GERAN_CellArray_Type p_CellArray, + IRAT_CoOrd_SysInfo_List_Type p_SysInfoList) return GERAN_CellArray_Type + { + var CoOrd_EUTRASysInfo_List_Type v_EUTRA_SysInfo; + var CoOrd_UTRANSysInfo_List_Type v_UTRAN_SysInfo; + var template (value) GERAN_CellArray_Type v_CellArray := p_CellArray; + var template (value) EUTRANMeasParams_SI2 v_EUTRA_SI2_1, v_EUTRA_SI2_2; + var integer v_Index := 0; + var integer v_NoOfPTCs := lengthof (p_SysInfoList); + + select (v_NoOfPTCs) { + case (1) { + v_EUTRA_SysInfo := p_SysInfoList[0].Eutra; + } + case (2) { + if (ischosen(p_SysInfoList[0].Eutra)) { + v_EUTRA_SysInfo := p_SysInfoList[0].Eutra; + v_UTRAN_SysInfo := p_SysInfoList[1].Utran; + } + else { + v_UTRAN_SysInfo := p_SysInfoList[0].Utran; + v_EUTRA_SysInfo := p_SysInfoList[1].Eutra; + } + } + case else { + FatalError (__FILE__, __LINE__, "wrong PTC configuration specified in test case"); + } + } + + for (v_Index := 0; v_Index < tsc_GERAN_NumberOfCells; v_Index := v_Index + 1) + { + // SI2quater implementation based on the different LTE combinations + if (lengthof(v_EUTRA_SysInfo)==1) { + v_EUTRA_SI2_1 := cs_EUTRAN_MeasParams_SI2 (cs_RptdEARFCNNeighCells (cs_RptdEARFCNList1(int2bit(v_EUTRA_SysInfo[0].Arfcn, 16), + f_GERAN_ConvertIntegerToEUTRA_MeasurementBandwidth (v_EUTRA_SysInfo[0].DL_Bandwidth)))); // @sic GP-120009, R5s120129 sic@ + } else if (lengthof(v_EUTRA_SysInfo)==2) { + v_EUTRA_SI2_1 := cs_EUTRAN_MeasParams_SI2 (cs_RptdEARFCNNeighCells (cs_RptdEARFCNList2(int2bit(v_EUTRA_SysInfo[0].Arfcn, 16), + f_GERAN_ConvertIntegerToEUTRA_MeasurementBandwidth (v_EUTRA_SysInfo[0].DL_Bandwidth), // @sic GP-120009 sic@ + int2bit(v_EUTRA_SysInfo[1].Arfcn, 16), + f_GERAN_ConvertIntegerToEUTRA_MeasurementBandwidth (v_EUTRA_SysInfo[1].DL_Bandwidth)))); // @sic GP-120009, R5s120129 sic@ + } else if (lengthof(v_EUTRA_SysInfo)==3) { + v_EUTRA_SI2_1 := cs_EUTRAN_MeasParams_SI2 (cs_RptdEARFCNNeighCells (cs_RptdEARFCNList2(int2bit(v_EUTRA_SysInfo[0].Arfcn, 16), + f_GERAN_ConvertIntegerToEUTRA_MeasurementBandwidth (v_EUTRA_SysInfo[0].DL_Bandwidth), // @sic GP-120009 sic@ + int2bit(v_EUTRA_SysInfo[1].Arfcn, 16), + f_GERAN_ConvertIntegerToEUTRA_MeasurementBandwidth (v_EUTRA_SysInfo[1].DL_Bandwidth)))); // @sic GP-120009, R5s120129, R5s140482 sic@ + v_EUTRA_SI2_2 := cs_EUTRAN_MeasParams_SI2 (cs_RptdEARFCNNeighCells (cs_RptdEARFCNList1(int2bit(v_EUTRA_SysInfo[2].Arfcn, 16), + f_GERAN_ConvertIntegerToEUTRA_MeasurementBandwidth (v_EUTRA_SysInfo[2].DL_Bandwidth)))); // @sic GP-120009, R5s120129, R5s140482 sic@ + // We now have 2 instances of this message @sic R5s140482 sic@ + v_EUTRA_SI2_1.eutranMeasParams.eutranStop := '0'B; + v_EUTRA_SI2_2.eutranMeasParams.eutranStart := '0'B; + + } else if (lengthof(v_EUTRA_SysInfo)==4) { + v_EUTRA_SI2_1 := cs_EUTRAN_MeasParams_SI2 (cs_RptdEARFCNNeighCells (cs_RptdEARFCNList2(int2bit(v_EUTRA_SysInfo[0].Arfcn, 16), + f_GERAN_ConvertIntegerToEUTRA_MeasurementBandwidth (v_EUTRA_SysInfo[0].DL_Bandwidth), // @sic GP-120009 sic@ + int2bit(v_EUTRA_SysInfo[1].Arfcn, 16), + f_GERAN_ConvertIntegerToEUTRA_MeasurementBandwidth (v_EUTRA_SysInfo[1].DL_Bandwidth)))); // @sic GP-120009, R5s120129, R5s140482 sic@ + v_EUTRA_SI2_2 := cs_EUTRAN_MeasParams_SI2 (cs_RptdEARFCNNeighCells (cs_RptdEARFCNList2(int2bit(v_EUTRA_SysInfo[2].Arfcn, 16), + f_GERAN_ConvertIntegerToEUTRA_MeasurementBandwidth (v_EUTRA_SysInfo[2].DL_Bandwidth), + int2bit(v_EUTRA_SysInfo[3].Arfcn, 16), + f_GERAN_ConvertIntegerToEUTRA_MeasurementBandwidth (v_EUTRA_SysInfo[3].DL_Bandwidth)))); // @sic GP-120009, R5s120129, R5s140482 sic@ + // We now have 2 instances of this message @sic R5s120323 sic@ + v_EUTRA_SI2_1.eutranMeasParams.eutranStop := '0'B; // @sic R5s120476 sic@ + v_EUTRA_SI2_2.eutranMeasParams.eutranStart := '0'B; + } + if (v_NoOfPTCs == 2) { + if (ischosen(v_UTRAN_SysInfo[0].FDD)) { + if (lengthof(v_EUTRA_SysInfo)==3 or lengthof(v_EUTRA_SysInfo)==4) { // @sic R5s120129, R5s140482 sic@ + v_CellArray[v_Index].sysInfo.si2quater_1 := cs_SysInfoType2quater(cs_SI2quaterRO('0000'B, + '0011'B, // @sic R5s120021, R5s120129 sic@ + '0'B, // @sic GP-120371 sic@ + cs_SI2quater_3G_3N_2FCell_FDD(int2bit(v_UTRAN_SysInfo[0].FDD.Freq, 14), // @sic R5120021 sic@ + int2bit(v_UTRAN_SysInfo[2].FDD.Freq, 14), + int2bit( v_UTRAN_SysInfo[2].FDD.ScramblingCode, 9) & '0'B), + omit, + omit, + omit)); // @sic R5s120021 sic@ Can't fit everything in one instance, so have to split it up + v_CellArray[v_Index].sysInfo.si2quater_2 := cs_SysInfoType2quater(cs_SI2quaterRO('0001'B, + '0011'B, // @sic R5s120021, R5s120129 sic@ + '0'B, // @sic GP-120371 sic@ + cs_SI2quater_3G_1N_1FCell_FDD(int2bit(v_UTRAN_SysInfo[3].FDD.Freq, 14), // @sic R5120021 sic@ + int2bit( v_UTRAN_SysInfo[3].FDD.ScramblingCode, 9) & '0'B), + cs_SI2quaterMeasParams3G_ISHO, // @sic R5s12082 sic@ + omit, + omit)); // @sic R5s120021 sic@ Can't fit everything in one instance, so have to split it up + v_CellArray[v_Index].sysInfo.si2quater_3 := cs_SysInfoType2quater(cs_SI2quaterRO('0010'B, + '0011'B, // @sic R5s120021, R5s120129 sic@ + '0'B, // @sic GP-120371 sic@ + omit, + omit, // @sic R5s12082 sic@ + omit, + v_EUTRA_SI2_1)); + v_CellArray[v_Index].sysInfo.si2quater_4 := cs_SysInfoType2quater(cs_SI2quaterRO('0011'B, + '0011'B, // @sic R5s120021, R5s120129 sic@ + '0'B, // @sic GP-120371 sic@ + omit, + omit, // @sic R5s12082 sic@ + omit, + v_EUTRA_SI2_2)); + } else { + v_CellArray[v_Index].sysInfo.si2quater_1 := cs_SysInfoType2quater(cs_SI2quaterRO('0000'B, + '0010'B, // @sic R5s120021 sic@ + '0'B, // @sic GP-120371 sic@ + cs_SI2quater_3G_3N_2FCell_FDD(int2bit(v_UTRAN_SysInfo[0].FDD.Freq, 14), // @sic R5120021 sic@ + int2bit(v_UTRAN_SysInfo[2].FDD.Freq, 14), + int2bit( v_UTRAN_SysInfo[2].FDD.ScramblingCode, 9) & '0'B), + omit, + omit, + omit)); // @sic R5s120021 sic@ Can't fit everything in one instance, so have to split it up + v_CellArray[v_Index].sysInfo.si2quater_2 := cs_SysInfoType2quater(cs_SI2quaterRO('0001'B, + '0010'B, // @sic R5s120021 sic@ + '0'B, // @sic GP-120371 sic@ + cs_SI2quater_3G_1N_1FCell_FDD(int2bit(v_UTRAN_SysInfo[3].FDD.Freq, 14), // @sic R5120021 sic@ + int2bit( v_UTRAN_SysInfo[3].FDD.ScramblingCode, 9) & '0'B), + cs_SI2quaterMeasParams3G_ISHO, // @sic R5s12082 sic@ + omit, + omit)); // @sic R5s120021 sic@ Can't fit everything in one instance, so have to split it up + v_CellArray[v_Index].sysInfo.si2quater_3 := cs_SysInfoType2quater(cs_SI2quaterRO('0010'B, + '0010'B, // @sic R5s120021 sic@ + '0'B, // @sic GP-120371 sic@ + omit, + omit, // @sic R5s12082 sic@ + omit, + v_EUTRA_SI2_1)); + v_CellArray[v_Index].sysInfo.si2quater_4 := omit; + } + } else { //TDD + if (lengthof(v_EUTRA_SysInfo)==3 or lengthof(v_EUTRA_SysInfo)==4) { // @sic R5s120129, R5s140482 sic@ + v_CellArray[v_Index].sysInfo.si2quater_1 := cs_SysInfoType2quater(cs_SI2quaterRO('0000'B, + '0010'B, // @sic R5s120021 sic@ + '0'B, // @sic GP-120371 sic@ + cs_SI2quater_3G_3N_2FCell_TDD(int2bit(v_UTRAN_SysInfo[0].TDD.Freq, 14), // @sic R5120021 sic@ + int2bit(v_UTRAN_SysInfo[2].TDD.Freq, 14), + int2bit( v_UTRAN_SysInfo[2].TDD.CellParametersID, 7)& v_UTRAN_SysInfo[1].TDD.Tstd& v_UTRAN_SysInfo[1].TDD.Diversity), + omit, + omit, + omit )); // @sic R5s120021 sic@ Can't fit everything in one instance, so have to split it up + v_CellArray[v_Index].sysInfo.si2quater_2 := cs_SysInfoType2quater(cs_SI2quaterRO('0001'B, + '0010'B, // @sic R5s120021 sic@ + '0'B, // @sic GP-120371 sic@ + cs_SI2quater_3G_1N_1FCell_TDD(int2bit(v_UTRAN_SysInfo[3].TDD.Freq, 14), // @sic R5120021 sic@ + int2bit( v_UTRAN_SysInfo[3].TDD.CellParametersID, 7)& v_UTRAN_SysInfo[1].TDD.Tstd& v_UTRAN_SysInfo[1].TDD.Diversity), + omit, + omit, + omit)); // @sic R5s120021 sic@ Can't fit everything in one instance, so have to split it up + v_CellArray[v_Index].sysInfo.si2quater_3 := cs_SysInfoType2quater(cs_SI2quaterRO('0010'B, + '0010'B, // @sic R5s120021 sic@ + '0'B, // @sic GP-120371 sic@ + omit, + cs_SI2quaterMeasParams3G_ISHO, + omit, + v_EUTRA_SI2_1)); + v_CellArray[v_Index].sysInfo.si2quater_4 := cs_SysInfoType2quater(cs_SI2quaterRO('0011'B, + '0011'B, // @sic R5s120021, R5s120129 sic@ + '0'B, // @sic GP-120371 sic@ + omit, + omit, // @sic R5s12082 sic@ + omit, + v_EUTRA_SI2_2)); + } else { + v_CellArray[v_Index].sysInfo.si2quater_1 := cs_SysInfoType2quater(cs_SI2quaterRO('0000'B, + '0010'B, // @sic R5s120021 sic@ + '0'B, // @sic GP-120371 sic@ + cs_SI2quater_3G_3N_2FCell_TDD(int2bit(v_UTRAN_SysInfo[0].TDD.Freq, 14), // @sic R5120021 sic@ + int2bit(v_UTRAN_SysInfo[2].TDD.Freq, 14), + int2bit( v_UTRAN_SysInfo[2].TDD.CellParametersID, 7)& v_UTRAN_SysInfo[1].TDD.Tstd& v_UTRAN_SysInfo[1].TDD.Diversity), + omit, + omit, + omit)); // @sic R5s120021 sic@ Can't fit everything in one instance, so have to split it up + v_CellArray[v_Index].sysInfo.si2quater_2 := cs_SysInfoType2quater(cs_SI2quaterRO('0001'B, + '0010'B, // @sic R5s120021 sic@ + '0'B, // @sic GP-120371 sic@ + cs_SI2quater_3G_1N_1FCell_TDD(int2bit(v_UTRAN_SysInfo[3].TDD.Freq, 14), // @sic R5120021 sic@ + int2bit( v_UTRAN_SysInfo[3].TDD.CellParametersID, 7)& v_UTRAN_SysInfo[1].TDD.Tstd& v_UTRAN_SysInfo[1].TDD.Diversity), + omit, + omit, + omit )); // @sic R5s120021 sic@ Can't fit everything in one instance, so have to split it up + v_CellArray[v_Index].sysInfo.si2quater_3 := cs_SysInfoType2quater(cs_SI2quaterRO('0010'B, + '0010'B, // @sic R5s120021 sic@ + '0'B, // @sic GP-120371 sic@ + omit, + cs_SI2quaterMeasParams3G_ISHO, + omit, + v_EUTRA_SI2_1)); + v_CellArray[v_Index].sysInfo.si2quater_4 := omit; + } + } + } else { // No UTRAN + if (lengthof(v_EUTRA_SysInfo)==3 or lengthof(v_EUTRA_SysInfo)==4) { // @sic R5s120129, R5s140482 sic@ + v_CellArray[v_Index].sysInfo.si2quater_1 := cs_SysInfoType2quater(cs_SI2quaterRO('0000'B, '0001'B, '0'B, omit, // @sic GP-120371, R5s120129 sic@ + omit, + omit, + v_EUTRA_SI2_1)); + v_CellArray[v_Index].sysInfo.si2quater_2 := cs_SysInfoType2quater(cs_SI2quaterRO('0001'B, '0001'B, '0'B, omit, // @sic GP-120371, R5s120129 sic@ + omit, + omit, + v_EUTRA_SI2_2)); + v_CellArray[v_Index].sysInfo.si2quater_3 := omit; // so everything can fit in one instance @sic R5s120021 sic@ + v_CellArray[v_Index].sysInfo.si2quater_4 := omit; // so everything can fit in one instance @sic R5s120129 sic@ + } else { + v_CellArray[v_Index].sysInfo.si2quater_1 := cs_SysInfoType2quater(cs_SI2quaterRO('0000'B, '0000'B, '0'B, omit, // @sic GP-120371 sic@ + omit, + omit, + v_EUTRA_SI2_1)); + v_CellArray[v_Index].sysInfo.si2quater_2 := omit; + v_CellArray[v_Index].sysInfo.si2quater_3 := omit; // so everything can fit in one instance @sic R5s120021 sic@ + v_CellArray[v_Index].sysInfo.si2quater_4 := omit; // so everything can fit in one instance @sic R5s120129 sic@ + } + } + } + return valueof (v_CellArray); + } + + //---------------------------------------------------------------------------- + /* + * @desc To fill IRAT_CoOrd_SysInfo_Type with info on all GERAN cells, ready to be sent to another RAT + * @param p_CellInfo + * @return template (value) IRAT_CoOrd_SysInfo_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_IR_SysInfoInit (GERAN_CellArray_Type p_CellInfo) + return template (value) IRAT_CoOrd_SysInfo_Type + { + var template (value) CoOrd_GERANSysInfo_Type v_Cellf11; + var template (value) CoOrd_GERANSysInfo_Type v_Cellf12; + var template (value) CoOrd_GERANSysInfo_Type v_Cellf13; + var integer v_Index_Cell24 := f_GERAN_CellInfo_GetIndex(geran_Cell24); + var integer v_Index_Cell25 := f_GERAN_CellInfo_GetIndex(geran_Cell25); + var integer v_Index_Cell26 := f_GERAN_CellInfo_GetIndex(geran_Cell26); + + v_Cellf11 := cs_CoOrdGERANSysInfo(bit2int(p_CellInfo[v_Index_Cell24].freq.bCCH_Freq), +// p_CellInfo[v_Index_Cell24].freq.arfcnList, @sic R5-120604 sic@ + p_CellInfo[v_Index_Cell24].info.ncc, + p_CellInfo[v_Index_Cell24].info.bcc, + p_CellInfo[v_Index_Cell24].info.cellIdentity, + p_CellInfo[v_Index_Cell24].freq.bandIndicator, + p_CellInfo[v_Index_Cell24].info.plmn, + oct2bit(p_CellInfo[v_Index_Cell24].info.lac), + oct2bit(p_CellInfo[v_Index_Cell24].info.rac), + bit2int(p_CellInfo[v_Index_Cell24].freq.gPRSCh_Freq)); + + v_Cellf12 := cs_CoOrdGERANSysInfo(bit2int(p_CellInfo[v_Index_Cell25].freq.bCCH_Freq), + // p_CellInfo[v_Index_Cell25].freq.arfcnList, @sic R5-120604 sic@ + p_CellInfo[v_Index_Cell25].info.ncc, + p_CellInfo[v_Index_Cell25].info.bcc, + p_CellInfo[v_Index_Cell25].info.cellIdentity, + p_CellInfo[v_Index_Cell25].freq.bandIndicator, + p_CellInfo[v_Index_Cell25].info.plmn, + oct2bit(p_CellInfo[v_Index_Cell25].info.lac), + oct2bit(p_CellInfo[v_Index_Cell25].info.rac), + bit2int(p_CellInfo[v_Index_Cell25].freq.gPRSCh_Freq)); + + v_Cellf13 := cs_CoOrdGERANSysInfo(bit2int(p_CellInfo[v_Index_Cell26].freq.bCCH_Freq), + // p_CellInfo[v_Index_Cell26].freq.arfcnList, @sic R5-120604 sic@ + p_CellInfo[v_Index_Cell26].info.ncc, + p_CellInfo[v_Index_Cell26].info.bcc, + p_CellInfo[v_Index_Cell26].info.cellIdentity, + p_CellInfo[v_Index_Cell26].freq.bandIndicator, + p_CellInfo[v_Index_Cell26].info.plmn, + oct2bit(p_CellInfo[v_Index_Cell26].info.lac), + oct2bit(p_CellInfo[v_Index_Cell26].info.rac), + bit2int(p_CellInfo[v_Index_Cell26].freq.gPRSCh_Freq)); + + return cs_CoOrdGERAN_SysInfo(v_Cellf11, v_Cellf12, v_Cellf13); + } + + //---------------------------------------------------------------------------- + /* + * @desc Initialises all global variables on GERAN + * @param p_ConfiguredPTCs + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_Init(IRAT_ConfiguredPTCs_Type p_ConfiguredPTCs := EUTRA_GERAN) runs on GERAN_PTC + { /* @sic R5-113805, R5-113696, R5-113734 sic@ */ + /* f_GERAN_Init is used as dummy function (without parameters) for the GERAN PTC when the GERAN PTC is needed just to get the GERAN system information */ + var IRAT_CoOrd_SysInfo_List_Type v_IR_SysInfoList; + vc_GERAN_Global.Ctrl.Default := null; + vc_GERAN_Global.Ctrl.TestBody := false; + vc_GERAN_Global.Security := f_GERAN_Security_Init(); + vc_GERAN_Global.CellArray := f_GERAN_CellArray_Init(); + vc_GERAN_Global.MsgInDefault := f_GERAN_MsgInDefault_Init (); + vc_GERAN_Global.SNDCPConfigured := false; // @sic R5s130777 sic@ + + // Now initialize sys info, together with EUTRA inter RAT parameters, for all cells + select (p_ConfiguredPTCs) + { + case (EUTRA_UTRAN_GERAN) { + // update sys info with UTRAN inter RAT parameters for all cells + vc_GERAN_Global.CellArray := f_GERAN_SystemInformation_InterRAT(vc_GERAN_Global.CellArray, f_IRAT_InitialCoOrd_2Ports(EUTRA, UTRAN, f_GERAN_IR_SysInfoInit (vc_GERAN_Global.CellArray))); + } + case (EUTRA_GERAN) { + v_IR_SysInfoList[0] := f_IRAT_InitialCoOrd(EUTRA, f_GERAN_IR_SysInfoInit (vc_GERAN_Global.CellArray)); + vc_GERAN_Global.CellArray := f_GERAN_SystemInformation_InterRAT(vc_GERAN_Global.CellArray, v_IR_SysInfoList); + } + case else { + FatalError (__FILE__, __LINE__, "wrong PTC configuration specified in test case"); + } + } + f_GERAN_ActivateDefault(StandardDefault); + } + + //-------------------------------------------------------- + +} // End of module + diff --git a/LTE_A_IWD_14wk37/Common/GERAN/GERAN_CommonFunctions.ttcn b/LTE_A_IWD_14wk37/Common/GERAN/GERAN_CommonFunctions.ttcn new file mode 100644 index 0000000..f51619d --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/GERAN/GERAN_CommonFunctions.ttcn @@ -0,0 +1,2808 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-05 10:26:54 +0200 (Fri, 05 Sep 2014) $ +// $Rev: 12041 $ +/******************************************************************************/ + +module GERAN_CommonFunctions +{ + import from GERAN_TypeDefs all; + import from GERAN_Component all; + import from GERAN_Parameters all; + import from CommonDefs all; + import from NAS_CommonTypeDefs all; + import from NAS_CommonTemplates all; + import from NAS_24008TypeDefs all; + import from GERAN_Templates all; + import from NAS_24008Templates_IRAT all; + import from GERAN_CellInfo all; + import from CommonIratDefs all; + import from UpperTesterFunctions all; + import from NAS_AuthenticationCommon all; + import from UTRANGERAN_CommonFunctions all; + import from Parameters all; + import from IP_PTC_CtrlMsgs all; + + template (present) EstablishIndType cr_G_LocUp_Any := { locUpdReq := ? }; + template (present) LLCUnitDataIndType cr_G_RAU_Any := { rauReq := ? }; + + //---------------------------------------------------------------------------- + /* + * @desc To send the Sys Info co-ordination message of the specified cell to EUTRA PTC + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_Send_IR_SysInfoToEUTRA(GERAN_CellId_Type p_CellId) runs on GERAN_PTC + { + f_GERAN_Send_IR_SysInfo(p_CellId, EUTRA); + } + + /* + * @desc To send the Sys Info co-ordination message of the specified cell to specified PTC + * @param p_CellId + * @param p_Port + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_Send_IR_SysInfo(GERAN_CellId_Type p_CellId, + IRAT_CO_ORD_PORT p_Port) runs on GERAN_PTC + { + var template (value) CoOrd_GERANSysInfo_Type v_CoOrdCellInfo; + + var GERAN_CellInfo_Type v_CellInfo := f_GERAN_CellInfo_Get(p_CellId); + + var integer v_Arfcn := bit2int(v_CellInfo.freq.bCCH_Freq); + var B3_Type v_Ncc := v_CellInfo.info.ncc; + var B3_Type v_Bcc := v_CellInfo.info.bcc; + var O2_Type v_Cell_Identity := f_GERAN_CellInfo_GetCellIdentity(p_CellId); + var B1_Type v_BandIndicator := v_CellInfo.freq.bandIndicator; + var template (omit) integer v_TchFreq := bit2int(v_CellInfo.freq.tch_Freq); + + v_CoOrdCellInfo := cs_CoOrdGERANSysInfo(v_Arfcn, + // v_NeighCells, @sic R5-120604 sic@ + v_Ncc, + v_Bcc, + v_Cell_Identity, + v_BandIndicator, + v_CellInfo.info.plmn, + oct2bit(v_CellInfo.info.lac), + oct2bit(v_CellInfo.info.rac), + bit2int(v_CellInfo.freq.gPRSCh_Freq), + v_TchFreq); // @sic R5s140043 sic@ + + f_IRAT_SendCoOrd(p_Port, cms_IRAT_SysInfo(cs_CoOrdGERAN_SysInfoSingleCell(v_CoOrdCellInfo))); + } + + + //---------------------------------------------------------------------------- + /* + * @desc To create a GSM Control Channel and GPRS channel + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_CreateCell(GERAN_CellId_Type p_CellId) runs on GERAN_PTC + { + var B10_Type v_GPRSFreq := f_GERAN_GPRSFreq_Get(p_CellId); + + f_CreateCell_GSM_Comb(p_CellId); + + f_GERAN_CreatePhyGPRSCh(p_CellId, cs_FreqInfo(v_GPRSFreq), cs_PacketChDescr(v_GPRSFreq)); + f_CreateRLC_MAC_Entity(p_CellId); + f_Create_LLE_Entity(p_CellId); + + f_GERAN_SendGSMSysInfo(p_CellId); + + } // end of f_GERAN_CreateCell + + //---------------------------------------------------------------------------- + /* + * @desc This cell doesn't include GPRS so should only be used for Measurement/Idle Mode tests + * @param p_CellId + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_CreateCell_MinUL(GERAN_CellId_Type p_CellId) runs on GERAN_PTC + { + f_CreateCell_GSM_Comb(p_CellId); + f_GERAN_SendGSMSysInfo(p_CellId); + } // end of f_GERAN_CreateCell_MinUL + + //---------------------------------------------------------------------------- + + group M_RAT_SysInfo { + + /* + * @desc To send the GSM SI messages + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_SendGSMSysInfo(GERAN_CellId_Type p_CellId) runs on GERAN_PTC + { + var GERAN_SystemInformation_Type v_SysInfo := f_GERAN_SysInfo_Get(p_CellId); + + G_L2.send(cas_SysInfo1(p_CellId, v_SysInfo.si1)); + G_L2.send(cas_SysInfo2(p_CellId, v_SysInfo.si2)); + G_L2.send(cas_SysInfo3(p_CellId, v_SysInfo.si3)); + G_L2.send(cas_SysInfo4(p_CellId, v_SysInfo.si4)); + G_L2.send(cas_SysInfo13(p_CellId, '0'B, v_SysInfo.si13)); + + G_L2.send(cas_SysInfo2quater(p_CellId, 0, v_SysInfo.si2quater_1)); + + if (isvalue(v_SysInfo.si2quater_2)) { + G_L2.send(cas_SysInfo2quater(p_CellId, 1, v_SysInfo.si2quater_2)); + } + if (isvalue(v_SysInfo.si2quater_3)) { //@sic R5s120021 sic@ + G_L2.send(cas_SysInfo2quater(p_CellId, 2, v_SysInfo.si2quater_3)); + } + if (isvalue(v_SysInfo.si2quater_4)) { //@sic R5s120129 sic@ + G_L2.send(cas_SysInfo2quater(p_CellId, 3, v_SysInfo.si2quater_4)); + } + + if (px_GERAN_BandUnderTest == GSM_P900 or px_GERAN_BandUnderTest == GSM_E900) { + G_L2.send(cas_SysInfo2bis(p_CellId, 0, v_SysInfo.si2bis)); + } + else if (px_GERAN_BandUnderTest == GSM710) { + G_L2.send(cas_SysInfo15(p_CellId, v_SysInfo.si15)); + } + else if (px_GERAN_BandUnderTest == T_GSM810) { + v_SysInfo.si15 := valueof(cs_SysInfoType15(cs_SI15_RO('0111'B))); + G_L2.send(cas_SysInfo15(p_CellId, v_SysInfo.si15)); + } + + f_GERAN_SysInfo_Set(p_CellId, v_SysInfo); + + }// end of f_SendGSMSysInfo + + /* + * @desc To send SI5 and SI6 on the SACCH + * @param p_CellId + * @param p_PhyCh + * @param p_LogicChType + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_SendGSMSACCHSysInfo(GERAN_CellId_Type p_CellId, + PhysicalChId p_PhyCh, + G_LogicChType p_LogicChType) runs on GERAN_PTC + { + var GERAN_SystemInformation_Type v_SysInfo := f_GERAN_SysInfo_Get(p_CellId); + + G_L2.send(cas_SysInfo5(p_CellId, p_PhyCh, p_LogicChType, v_SysInfo.si5)); + G_L2.send(cas_SysInfo6(p_CellId, p_PhyCh, p_LogicChType, v_SysInfo.si6)); + if ((px_GERAN_BandUnderTest == GSM_P900) or (px_GERAN_BandUnderTest == GSM_E900)) { + G_L2.send(cas_SysInfo5bis(p_CellId, p_PhyCh, p_LogicChType, v_SysInfo.si5bis)); + } + } + } //end of group M_RAT_SysInfo + + //---------------------------------------------------------------------------- + /* + * @desc generic function to deal with GERAN L1 configurations where no information needs to be returned by the CNF + * @param p_G_CPHY_CONFIG_REQ + * @param p_WaitForCNF (default value: waitForCNF) + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_CPHY_CONFIG_Common(template (value) G_CPHY_CONFIG_REQ p_G_CPHY_CONFIG_REQ, + GERAN_WaitForCNF_Type p_WaitForCNF := waitForCNF) runs on GERAN_PTC + { + G_CL1.clear; /* since CNFs are not always handled explicitly there might still an 'old' CNF be in the incoming queue to be removed */ + G_CL1.send(p_G_CPHY_CONFIG_REQ); + if (p_WaitForCNF == waitForCNF) { + G_CL1.receive(car_G_CPHY_Config_CNF); + } else { + // CNF will discarded by the default behaviour + } + } + + /* + * @desc generic function to deal with GERAN cas_G_CL1_ComingFN_REQ + * @param p_G_CPHY_CONFIG_REQ + * @return G_CPHY_CONFIG_CNF + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_CPHY_CONFIG_ComingFN(template (value) G_CPHY_CONFIG_REQ p_G_CPHY_CONFIG_REQ) runs on GERAN_PTC return G_CPHY_CONFIG_CNF + { + var G_CPHY_CONFIG_CNF v_G_CPHY_CONFIG_CNF; + + G_CL1.clear; /* since CNFs are not always handled explicitly there might still an 'old' CNF be in the incoming queue to be removed */ + G_CL1.send(p_G_CPHY_CONFIG_REQ); + alt { + [] G_CL1.receive(car_G_CL1_ComingFN_CNF) -> value v_G_CPHY_CONFIG_CNF {} + [] G_CL1.receive(car_G_CPHY_CONFIG_CNF_Any) { + f_SetVerdictInconc(__FILE__, __LINE__, "got wrong CNF instead of car_G_CL1_ComingFN_CNF"); + } + } + return v_G_CPHY_CONFIG_CNF; + } + + //---------------------------------------------------------------------------- + + /* + * @desc to configure SNDCP + * @param p_SNDCPId + * @param p_LLMEId + * @param p_NSAPI + * @param p_SAPI + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_SNDCP_Config(SNDCPId p_SNDCPId, + LLMEId p_LLMEId, + integer p_NSAPI, + SAPI p_SAPI) runs on GERAN_PTC + { + G_CSNDCP.send(cas_G_SNDCP_Activate_REQ(p_SNDCPId, + p_LLMEId, + p_NSAPI, + p_SAPI)); + G_CSNDCP.receive(car_G_SNDCP_CONFIG_CNF_Any); + f_GERAN_SNDCPConfigured_Set(); // @sic R5s130777 sic@ + } + + /* + * @desc to configure SNDCP and routing table + * @param p_CellId + * @param p_NSAPI (default value: 13 = IPv6) + * @param p_LLMEId (default value: 1) + * @param p_SAPI (default value: tsc_LLCSapi_11) + * @param p_SNDCPId (default value: 1) + * @param p_LoopBack (default value: false) .. set to true if this SNDCP will be used for loopback - so don't need to configure routing table + * @param p_PdnIndex (default value: PDN_1) + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_Config_SNDCPandIP(GERAN_CellId_Type p_CellId, + integer p_NSAPI := 13, + LLMEId p_LLMEId := 1, + SAPI p_SAPI := tsc_LLCSapi_11, + SNDCPId p_SNDCPId := 1, + boolean p_LoopBack := false, + PDN_Index_Type p_PdnIndex := PDN_1) runs on GERAN_PTC + { // @sic R5-133612 sic@ + f_GERAN_SNDCP_Config(p_SNDCPId, p_LLMEId, p_NSAPI, p_SAPI); + if (not p_LoopBack) { + f_IP_Handling_Start(IP, p_PdnIndex, cs_DrbInfo_GERAN(enum2int(p_CellId), p_NSAPI)); + } + } + + /* + * @desc to release SNDCP + * @param p_SNDCPId (default value: 1) + * @param p_NSAPI (default value: 13 = IPv6) + */ + function f_GERAN_ReleaseSNDCP(SNDCPId p_SNDCPId := 1, + integer p_NSAPI := 13) runs on GERAN_PTC + { + G_CSNDCP.send(cas_G_SNDCP_Release_REQ(p_SNDCPId, + p_NSAPI)); + G_CSNDCP.receive(car_G_SNDCP_CONFIG_CNF_Any); + } + + //---------------------------------------------------------------------------- + + /* + * @desc generic function to deal with GERAN LLC configurations + * @param p_G_LLC_CONFIG_REQ + * @param p_WaitForCNF (default value: waitForCNF) + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_LLC_CONFIG_Common(template (value) G_LLC_CONFIG_REQ p_G_LLC_CONFIG_REQ, + GERAN_WaitForCNF_Type p_WaitForCNF := waitForCNF) runs on GERAN_PTC + { + G_CLLC.clear; /* since CNFs are not always handled explicitly there might still an 'old' CNF be in the incoming queue to be removed */ + G_CLLC.send(p_G_LLC_CONFIG_REQ); + if (p_WaitForCNF == waitForCNF) { + G_CLLC.receive(car_G_CLLC_Config_CNF); + } else { + // CNF will discarded by the default behaviour + } + } + + //---------------------------------------------------------------------------- + /* + * @desc To create the LLE Entity in the SS + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_Create_LLE_Entity(GERAN_CellId_Type p_CellId) runs on GERAN_PTC + { /* @sic R5s120050 MCC160 implementation sic@ */ + f_GERAN_LLC_CONFIG_Common(cas_G_CLLC_CreateLLE_REQ(p_CellId, enum2int(p_CellId))); // @sic R5s120572 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc To change the assigned TLLI + * @param p_CellId + * @param p_OldTLLI + * @param p_NewTLLI + * @param p_WaitForCNF (default value: waitForCNF) + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_LLC_TLLI_Assign(GERAN_CellId_Type p_CellId, + TLLI p_OldTLLI, + TLLI p_NewTLLI, + GERAN_WaitForCNF_Type p_WaitForCNF := waitForCNF) runs on GERAN_PTC + { /* @sic R5s120050 MCC160 implementation sic@ */ + var GERAN_SecurityInfo_Type v_SecurityInfo := f_GERAN_SecurityInfo_Get(); + f_GERAN_LLC_CONFIG_Common(cas_G_CLLC_Assign_Req(p_CellId, p_OldTLLI, p_NewTLLI, v_SecurityInfo.gprsCipherAlg, v_SecurityInfo.authPS.KcGSM), p_WaitForCNF); + } // end of f_LLC_TLLI_Assign + + //---------------------------------------------------------------------------- + /* + * @desc To create the RLC Entity in the SS + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_CreateRLC_MAC_Entity(GERAN_CellId_Type p_CellId) runs on GERAN_PTC + { /* @sic R5s120050 MCC160 implementation sic@ */ + f_GERAN_RLC_CONFIG_Common(cas_G_CRLC_CreateRLC_MAC_REQ(p_CellId)); + } + + //---------------------------------------------------------------------------- + /* + * @desc Combined Cell Control Channel created with power level set to OFF + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_CreateCell_GSM_Comb(GERAN_CellId_Type p_CellId) runs on GERAN_PTC + { + var B3_Type v_NCC := f_GERAN_NCC_Get(p_CellId); + var B3_Type v_BCC := f_GERAN_BCC_Get(p_CellId); + var O1_Type v_TA := f_GERAN_TA_Get(p_CellId); + var GERAN_SecurityInfo_Type v_SecurityInfo := f_GERAN_SecurityInfo_Get(); + + f_SetBS_IdCode(p_CellId, v_NCC, v_BCC, v_TA); + + v_SecurityInfo.cipherMode.startingCiph := '0'B; + f_GERAN_SecurityInfo_Set(v_SecurityInfo); + + f_GERAN_CreatePhyCombinedCellControlCh(p_CellId); + f_SendGSMSACCHSysInfo(p_CellId, tsc_PhyCh0, tsc_SACCH_C4); // @sic R5s110433 sic@ + }// end of f_CreateCell_GSM_Comb + + //---------------------------------------------------------------------------- + /* + * @desc Set the BS Id code + * @param p_CellId + * @param p_NCC + * @param p_BCC + * @param p_TA + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_SetBS_IdCode(GERAN_CellId_Type p_CellId, + B3_Type p_NCC, + B3_Type p_BCC, + O1_Type p_TA) runs on GERAN_PTC + { /* @sic R5s120050 MCC160 implementation sic@ */ + f_GERAN_CPHY_CONFIG_Common(cas_G_CL1_CreateCell_REQ(p_CellId, p_NCC, p_BCC, p_TA)); + } // end of f_SetBS_IdCode + + //---------------------------------------------------------------------------- + /* + * @desc Combined Cell Control Channel created with power level set to OFF + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_CreatePhyCombinedCellControlCh(GERAN_CellId_Type p_CellId) runs on GERAN_PTC + { + var B10_Type v_BCCH := f_GERAN_BCCHFreq_Get(p_CellId); + var B3_Type v_TSC := f_GERAN_BCC_Get(p_CellId); // @sic R5s110168 change 8.4 sic@ + var O1_Type v_TA := f_GERAN_TA_Get(p_CellId); + var B1_Type v_BandInd := f_GERAN_BandInd_Get(p_CellId); + var B5_Type v_L1Pwr := '01111'B; // arbitrary value + var GERAN_SecurityInfo_Type v_SecurityInfo := f_GERAN_SecurityInfo_Get(); + var ControlChDescr v_CtrlChDesc := f_GERAN_ControlChDesc_Get(p_CellId); + var integer i; + var template (value) ChannelSpecificInfo v_ChSpecific; + + v_ChSpecific := cs_ChSpecificPara(cs_SDCCH4_Ch(v_SecurityInfo.cipherMode, v_SecurityInfo.authCS.KcGSM, v_L1Pwr, substr(oct2bit(v_TA), 1, 7)), // @sic R5s110657 sic@ + cs_CCCH_Info(v_CtrlChDesc.bS_PA_MFRMS, v_CtrlChDesc.bS_AG_BLKS_RES)); + + // FCCH + SCH + BCCH + CCCH + SDCCH/4(0..3) + SACCH/C4(0..3) + f_GERAN_CPHY_CONFIG_Common(cas_CombinedCellControlCh(p_CellId, tsc_PhyCh0, CombinedControlCH, v_BCCH, v_TSC, v_ChSpecific, (tsc_GERAN_ChPwrLvl_Off+tsc_Power_ueVOffset), v_BandInd)); /* @sic R5s110433 sic@ + @sic R5s120050 MCC160 implementation sic@ */ + // Now turn off Measurement Reports on SACCH/4 + for (i := 0; i <4; i := i + 1) { + G_CL1.send(cas_G_CL2_MeasRptControl_REQ(p_CellId, tsc_PhyCh0, tsc_SACCH_C4, i, false)); // @sic R5s110433 sic@ + } + + alt { + [] G_CL1.receive(car_G_CPHY_Config_CNF) { + if (i > 1) { + i := i - 1; + repeat; + } + } + } + } // end of f_GERAN_CreatePhyCombinedCellControlCh + + //---------------------------------------------------------------------------- + /* + * @desc GPRS Channel created with power level set to OFF + * @param p_CellId + * @param p_FreqInfo + * @param p_PktCh + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_CreatePhyGPRSCh(GERAN_CellId_Type p_CellId, + template (value) FreqInfo p_FreqInfo, + template (value) PacketChDescr p_PktCh) runs on GERAN_PTC + { + var B1_Type v_BandInd := f_GERAN_BandInd_Get(p_CellId); + + // PDTCH/F + PACCH/F + PTCCH/F + f_GERAN_CPHY_CONFIG_Common(cas_CreateGPRSCh(p_CellId, tsc_PhyCh1, PDTCH, p_FreqInfo, p_PktCh.tN, p_PktCh.tSC, (tsc_GERAN_ChPwrLvl_Off+tsc_Power_ueVOffset), v_BandInd)); /* @sic R5s110433 sic@ + @sic R5s120050 MCC160 implementation sic@ */ + } // end of f_SS_CreatePhyGPRSCh + + //---------------------------------------------------------------------------- + /* + * @desc Creates a traffic channel to be used for CS calls + * @param p_CellId + * @param p_WaitForFinalCNF (default value: waitForCNF) + * @param p_ChanComb (default value: TCH_F) + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_CreateTCH(GERAN_CellId_Type p_CellId, + GERAN_WaitForCNF_Type p_WaitForFinalCNF := waitForCNF, + ChannelCombination_Enum p_ChanComb := TCH_F) runs on GERAN_PTC + { + var B1_Type v_BandInd := f_GERAN_BandInd_Get(p_CellId); + var GERAN_SecurityInfo_Type v_SecurityInfo := f_GERAN_SecurityInfo_Get(); + var B5_Type v_L1Pwr := '01111'B; // arbitrary value + var O1_Type v_TA := f_GERAN_TA_Get(p_CellId); + var B10_Type v_Freq := f_GERAN_TCHFreq_Get(p_CellId); + + select (p_ChanComb) { + case (TCH_F) { + f_GERAN_CPHY_CONFIG_Common(cas_CreateTCH(p_CellId, + tsc_TchCh, + TCH_F, + cs_FreqInfo(v_Freq), + tsc_TN1, + px_TSC, + cs_DedCh(cs_G_ChModeSpeechFROrHRV1, cs_CipherModeSettingGSM, v_SecurityInfo.authCS.KcGSM, v_L1Pwr, substr(oct2bit(v_TA), 1, 7)), // @sic R5s110657 sic@ + (tsc_GERAN_ChPwrLvl_Off+tsc_Power_ueVOffset), // @sic R5s110433 sic@ + v_BandInd)); + } + } // no other channel combinations implemented + f_SendGSMSACCHSysInfo(p_CellId, tsc_TchCh, tsc_SACCH_TF); + + // Now turn off Measurement Reports on SACCH_TF + f_GERAN_CPHY_CONFIG_Common(cas_G_CL2_MeasRptControl_REQ(p_CellId, tsc_TchCh, tsc_SACCH_TF, 0, false), p_WaitForFinalCNF); + } + + //---------------------------------------------------------------------------- + /* @desc Creates a traffic channel to be used for DTM + * @status + */ + function f_GERAN_CreateDTM_CH(GERAN_CellId_Type p_CellId, + GERAN_WaitForCNF_Type p_WaitForFinalCNF := waitForCNF) runs on GERAN_PTC + { + var B1_Type v_BandInd := f_GERAN_BandInd_Get(p_CellId); + var GERAN_SecurityInfo_Type v_SecurityInfo := f_GERAN_SecurityInfo_Get(); + var B5_Type v_L1Pwr := '01111'B; // arbitrary value + var O1_Type v_TA := f_GERAN_TA_Get(p_CellId); + var B10_Type v_Freq := f_GERAN_GPRSFreq_Get(p_CellId); + var template (value) SYSTEMINFORMATIONTYPE6 v_SI6 := f_GERAN_SysInfo_GetSI6(p_CellId); + + f_GERAN_CPHY_CONFIG_Common(cas_CreateTCH(p_CellId, + tsc_TchCh, + TCH_F, + cs_FreqInfo(v_Freq), + tsc_TN_DTM, + px_TSC, + cs_DedCh(cs_G_ChModeSpeechFROrHRV1, cs_CipherModeSettingGSM, v_SecurityInfo.authCS.KcGSM, v_L1Pwr, substr(oct2bit(v_TA), 1, 7)), // @sic R5s110657 sic@ + (tsc_GERAN_ChPwrLvl_Off+tsc_Power_ueVOffset), // @sic R5s110433 sic@ + v_BandInd)); + // The SACCH needs to indicate DTM + v_SI6.si6roct := cds_SI6_RO_DTM(v_BandInd, oct2bit(f_GERAN_RAC_Get(p_CellId)), f_GERAN_MS_TXPWR_MAX_CCH_Get(p_CellId)); // @sic R5s120602 sic@ + f_GERAN_SysInfo_SetSI6(p_CellId, v_SI6); + f_SendGSMSACCHSysInfo(p_CellId, tsc_TchCh, tsc_SACCH_TF); + + // Now turn off Measurement Reports on SACCH_TF + f_GERAN_CPHY_CONFIG_Common(cas_G_CL2_MeasRptControl_REQ(p_CellId, tsc_TchCh, tsc_SACCH_TF, 0, false), p_WaitForFinalCNF); + } + + //---------------------------------------------------------------------------- + /* @desc Set SI Parameters for DTM. To be called after GERAN Init but before GERAN Create Cell + * @status + */ + function f_GERAN_InitDTM_SI(GERAN_CellId_Type p_CellId) runs on GERAN_PTC + { + var template (value) SYSTEMINFORMATIONTYPE6 v_SI6 := f_GERAN_SysInfo_GetSI6(p_CellId); + var B1_Type v_BandInd := f_GERAN_BandInd_Get(p_CellId); + var O1_Type v_RAC := f_GERAN_RAC_Get(p_CellId); + + v_SI6.si6roct := cds_SI6_RO_DTM(v_BandInd, oct2bit(v_RAC), f_GERAN_MS_TXPWR_MAX_CCH_Get(p_CellId)); // @sic R5s120602 sic@ + f_GERAN_SysInfo_SetSI6(p_CellId, v_SI6); + f_GERAN_SysInfo_SetSI13_RestOctets(p_CellId, cds_SI13_RO_DTM(v_RAC, f_GERAN_NMO_Get(p_CellId))); + + } + //---------------------------------------------------------------------------- + /* @desc To be called after GERAN_Init, before the test case body for every test that doesn't start in GERAN. + * This will wait until Preamble is finished on EUTRA and it has received the AuthParams + * These are then stored in SecurityInfo + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_InterRAT_InitialiseAuthParams() runs on GERAN_PTC + { + var IRAT_Coordination_MSG v_RxdMsg; + var GERAN_SecurityInfo_Type v_SecurityInfo := f_GERAN_SecurityInfo_Get(); + + EUTRA.receive(cmr_IRAT_AuthInfo) -> value v_RxdMsg; + + v_SecurityInfo.authPS := v_RxdMsg.Authentication.AuthPS; + if (isvalue(v_RxdMsg.Authentication.AuthCS)) { // @sic R5s120498 sic@ + v_SecurityInfo.authCS := v_RxdMsg.Authentication.AuthCS; + } + + f_GERAN_SecurityInfo_Set(v_SecurityInfo); + } + + //---------------------------------------------------------------------------- + /* + * @desc Procedure to be used as the pre-Preamble to set the PTMSI, PTMSI Sig and TMSI in the USIM + * @param p_CellId + * @param p_AttachType + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_Pre_Preamble(GERAN_CellId_Type p_CellId, + UTRAN_GERAN_ATTACH_Type p_AttachType) runs on GERAN_PTC + { /* @sic R5s130347: local GuardTimer sic@ */ + timer t_GuardTimer := tsc_GuardTimePreamble; + + t_GuardTimer.start; + + f_GERAN_SetCellPowerLevel(p_CellId, tsc_GERAN_ServingCell); + f_UT_SwitchOnUE(UT, false); + f_GERAN_IdleUpdated(p_CellId, true); + f_GERAN_SwitchPowerOff(p_CellId, p_AttachType); // @sic R5s110176 sic@ + f_GERAN_SetCellPowerLevel(p_CellId, tsc_GERAN_ChPwrLvl_Off); + + // then tell EUTRA it can do it's preamble + f_IRAT_SendCoOrd(EUTRA, cms_IRAT_Trigger); + + t_GuardTimer.stop; + } + + //---------------------------------------------------------------------------- + /* + * @desc Procedure to be used in the test case preamble when UE should be brought to state Registered, Idle Mode (state 2) on an GERAN cell. + * @param p_CellId + * @param p_CheckEUTRA (default: false) Used in some idle mode tests that specify EUTRA params to be checked in Attach Req + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_Preamble(GERAN_CellId_Type p_CellId, + boolean p_CheckEUTRA := false) runs on GERAN_PTC + { /* @sic R5s130347: local GuardTimer sic@ */ + timer t_GuardTimer := tsc_GuardTimePreamble; + + t_GuardTimer.start; + + f_GERAN_SetCellPowerLevel(p_CellId, tsc_GERAN_ServingCell); + f_UT_SwitchOnUE(UT, false); + f_GERAN_IdleUpdated(p_CellId, true, p_CheckEUTRA); // @sic GP-110050, R5s110596 sic@ + + // Now get the security parameters that have been updated and send to EUTRA + f_GERAN_SendAuthParameters(EUTRA); + + t_GuardTimer.stop; + } + + //---------------------------------------------------------------------------- + /* + * @desc Send the Authentication Parameters to another RAT + * @param p_Port (default: EUTRA) + * @param p_GUTI (default value: omit) + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_SendAuthParameters(IRAT_CO_ORD_PORT p_Port, + template (omit) CoOrd_GUTIParam_Type p_GUTI := omit) runs on GERAN_PTC + { + // Now get the security parameters that have been updated + var GERAN_SecurityInfo_Type v_SecurityInfo := f_GERAN_SecurityInfo_Get(); + var Common_AuthenticationParams_Type v_AuthCS := v_SecurityInfo.authCS; + + p_Port.send(cms_IRAT_AuthInfo(v_SecurityInfo.authPS, + v_AuthCS, + p_GUTI, + v_SecurityInfo.CSinOtherRAT)); + + } + + //---------------------------------------------------------------------------- + /* + * @desc Get the UE into a Registered Idle Updated state. This assumes the UE is already switched on + * @param p_CellId + * @param p_DoAuth (default value: false) + * @param p_CheckEUTRA (default: false) Used in some idle mode tests that specify EUTRA params to be checked in Attach Req + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_IdleUpdated(GERAN_CellId_Type p_CellId, + boolean p_DoAuth := false, + boolean p_CheckEUTRA := false) runs on GERAN_PTC + { + var SubChannelNumber v_SubChannel; + var B2_Type v_NMO := f_GERAN_NMO_Get(p_CellId); + + if ((not pc_G_operation_mode_C) and (v_NMO == tsc_NMO_II)) { // @sic R5s120584 sic@ + v_SubChannel := f_GERAN_LocationUpdate(p_CellId, p_DoAuth); + } + f_GERAN_GPRSAttach(p_CellId, p_DoAuth, p_CheckEUTRA); // GP-110050 + // now disable ciphering on SDCCH4 + if ((not pc_G_operation_mode_C) and (v_NMO == tsc_NMO_II)) { // @sic R5s120715 sic@ + f_GERAN_DisableCiphering(p_CellId, tsc_PhyCh0, tsc_SDCCH_4, v_SubChannel); + } + }//end of f_GERAN_IdleUpdated + + //---------------------------------------------------------------------------- + /* + * @desc To perform GPRS Attach + * @param p_CellId + * @param p_DoAuth (default: true) + * @param p_CheckEUTRA (default: false) Used in some idle mode tests that specify EUTRA params to be checked in Attach Req + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_GPRSAttach(GERAN_CellId_Type p_CellId, + boolean p_DoAuth := true, + boolean p_CheckEUTRA := false) runs on GERAN_PTC + { + var G_LLC_DATAMESSAGE_IND v_LLCDataInd; + var ATTACHREQUEST v_AttachRequest; + var B3_Type v_AttachType; + var octetstring v_PLMN := f_GERAN_PLMN_Get(p_CellId); + var O1_Type v_RAC := f_GERAN_RAC_Get(p_CellId); + var O2_Type v_LAC := f_GERAN_LAC_Get(p_CellId); + var B1_Type v_Ciph := '0'B; + var GERAN_CellId_Type v_LLMEId := p_CellId; // @sic R5s120572 sic@ + var template (omit) MobileIdentity v_TMSI := omit; + + // Receive GPRS Attach Request Message + if (p_CheckEUTRA) { // GP-110050 + v_LLCDataInd := f_GPRS_ReceiveUplinkMsg(geran_Cell24, car_G_LLC_UnitData_IND(cr_G_AttachReq_EUTRANCap(cr_AttachTypeAny, + cr_MobileIdAny(omit), + cr_RAI(omit), + ?))); + v_AttachRequest := v_LLCDataInd.unit.msg.attReq; + if (not ((v_AttachRequest.msRadioAccessCap.valuePart.listofValues[0].raCapability.singleAccess.eutraFDD == '1'B) or + (v_AttachRequest.msRadioAccessCap.valuePart.listofValues[0].raCapability.singleAccess.eutraTDD == '1'B)) and + not ((v_AttachRequest.msRadioAccessCap.valuePart.listofValues[0].raCapability.singleAccess.geran2EutraSupport == '10'B) or + (v_AttachRequest.msRadioAccessCap.valuePart.listofValues[0].raCapability.singleAccess.geran2EutraSupport == '11'B))) { // @sic GP-140521 sic@ + f_GERAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "UE doesn't support EUTRA"); + } + } else { + v_LLCDataInd := f_GPRS_ReceiveUplinkMsg(p_CellId, car_G_LLC_UnitData_IND(cr_G_AttachReq(cr_AttachTypeAny, + cr_MobileIdAny(omit), + cr_RAI(omit), + ?))); + } + v_AttachType := v_LLCDataInd.unit.msg.attReq.attachType.attachType; + f_GERAN_SplitPGCycle_Set(p_CellId, v_LLCDataInd.unit.msg.attReq.drxParameter); + + if (p_DoAuth) { + f_GERAN_GPRS_Authentication(p_CellId); + v_Ciph := px_GSM_CipheringOnOff; + } + + if (v_AttachType == tsc_I_AttachTypeCombined) { // @sic R5-123114 sic@ + v_TMSI := cs_MobileIdTMSIorPTMSI('23'O, px_TMSI_Def); + } + + // Send GPRS Attach Accept + f_GPRS_SendDownlinkMsg(p_CellId, 1, cas_G_LLC_UnitData_Req(f_GERAN_TLLI_Get(p_CellId), + tsc_LLCSapi_GMM, + tsc_LLC_PM, + v_Ciph, // @sic R5s110593 sic@ + cs_G_AttachAccept(cs_GMM_AttachResult(v_AttachType), + cs_RAI(omit, + cs_LAI(omit, v_PLMN, v_LAC), + v_RAC), + cs_PTMSI_Signature(px_PTMSI_SigDef), + cs_MobileIdTMSIorPTMSI('18'O, px_PTMSI_Def), + v_TMSI), + v_LLMEId)); // @sic R5s120572 sic@ + + //Receive GPRS Attach Complete Message + v_LLCDataInd := f_GPRS_ReceiveUplinkMsg(p_CellId, car_G_LLC_UnitData_IND(cr_G_AttachComplete)); + + }// end of GPRSAttach + + //---------------------------------------------------------------------------- + /* + * @desc To Perform GPRS Authentication + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_GPRS_Authentication(GERAN_CellId_Type p_CellId) runs on GERAN_PTC + { + var G_LLC_DATAMESSAGE_IND v_LLCDataInd; + var TLLI v_TLLI; + var GERAN_SecurityInfo_Type v_SecurityInfo := f_GERAN_SecurityInfo_Get(); + var B32_Type v_AuthRES_High; + var bitstring v_AuthRES; + var GERAN_CellId_Type v_LLMEId := p_CellId; // @sic R5s120572 sic@ + + v_SecurityInfo.authPS := f_AuthenticationInit(v_SecurityInfo.authPS); + f_GERAN_SecurityInfo_Set(v_SecurityInfo); // @sic R5s110596 sic@ + + // Send AUTHENTICATION AND CIPHERING REQUEST using relevant PS keys computed before. + f_GPRS_SendDownlinkMsg(p_CellId, 1, cas_G_LLC_UnitData_Req(f_GERAN_TLLI_Get(p_CellId), + tsc_LLCSapi_GMM, + tsc_LLC_PM, + tsc_LLC_NoCiph, + cs_G_AuthAndCiphReq(cs_GMM_AuthRAND(v_SecurityInfo.authPS.RandValue), + cs_GMM_KeySeq(v_SecurityInfo.authPS.KeySeq), + v_SecurityInfo.gprsCipherAlg, + cs_GMM_AUTN(v_SecurityInfo.authPS.AUTN)), + v_LLMEId)); // @sic R5s120572 sic@ + + v_LLCDataInd := f_GPRS_ReceiveUplinkMsg(p_CellId, car_G_LLC_UnitData_IND + ((cr_G_AuthAndCiphRsp(cr_AuthRspAny, cr_AuthCiphRspExtAny), + cr_G_AuthAndCiphRsp(cr_AuthRspAny, omit), + cr_G_AuthAndCiphFailureAny))); + if (match(v_LLCDataInd, car_G_LLC_UnitData_IND(cr_G_AuthAndCiphRsp(cr_AuthRspAny, cr_AuthCiphRspExtAny)))) + {// AUTHENTICATION AND CIPHERING RESPONSE including both Authentication Response parameters (RES and RES ext) + v_AuthRES_High := v_LLCDataInd.unit.msg.authCipherResp.authRsp.rES; + v_AuthRES := v_AuthRES_High & v_LLCDataInd.unit.msg.authCipherResp.authRspExt.rES; + + // don't change the TLLI, only the ciphering algorithm + v_TLLI := f_GERAN_TLLI_Get(p_CellId); // careful, because this might have changed in ULTBF + f_LLC_TLLI_Assign(p_CellId, v_TLLI, v_TLLI); + + // Verify that the received Authentication Response parameters match expected response: + if (v_AuthRES != substr(v_SecurityInfo.authPS.XRES, 0, lengthof(v_AuthRES))) { + f_GERAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "Authentication Failed"); + } + } + else if (match(v_LLCDataInd, car_G_LLC_UnitData_IND(cr_G_AuthAndCiphRsp(cr_AuthRspAny, omit)))) + {// AUTHENTICATION AND CIPHERING RESPONSE including only one Authentication Response parameter (RES) + v_AuthRES_High := v_LLCDataInd.unit.msg.authCipherResp.authRsp.rES; + + // don't change the TLLI, only the ciphering algorithm + v_TLLI := f_GERAN_TLLI_Get(p_CellId); // careful, because this might have changed in ULTBF + f_LLC_TLLI_Assign(p_CellId, v_TLLI, v_TLLI); + + // Verify that the received Authentication Response parameters match expected response. + if (v_AuthRES_High != substr(v_SecurityInfo.authPS.XRES, 0, lengthof(v_AuthRES_High))) { + f_GERAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "Authentication Failed"); + } + } + else if (match(v_LLCDataInd, car_G_LLC_UnitData_IND(cr_G_AuthAndCiphFailureAny))) + { //AUTHENTICATION AND CIPHERING Failure, so stop execution + f_GERAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "Received Authentication and Ciphering Failure"); + } + else { // shouldn't get here because it should match with one of the above 3 + f_GERAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "Unexpected message"); + } + }//end of f_GPRS_Authentication + + //---------------------------------------------------------------------------- + /* + * @desc To store Location Update or RAU Req messages to be processed later + * ONLY TO BE USED DURING CS FALLBACK + * @status + */ + altstep a_GERAN_ReceiveRauRequest() runs on GERAN_PTC + { + var G_LLC_DATAMESSAGE_IND v_RAUReq; + + //Receive any Routing Area Update Request message + [] G_LLC.receive(car_G_LLC_UnitData_IND(cr_G_RAU_Any)) -> value v_RAUReq + { + if(f_GERAN_MsgInDefault_CheckRAU()){//Check if the default has already received the message + f_GERAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "Multiple Routing Area Update Request messages have been received"); + } + else{ + f_GERAN_MsgInDefault_SetRAU(v_RAUReq.unit.msg); + } + } + } + + //---------------------------------------------------------------------------- + /* + * @desc To receive the Chan Req, send Immediate Assignment and CHECK the 1st uplink msg, on either CS or PS channel + * PLEASE NOTE: This is only to be used for Loc Upd/RAU Req in CS fallback + * This function DOES NOT wait for the Location Update, BUT DOES return the RAU Request + * @param p_CellId + * @param p_RAU + * @return If expecting a Location Update, this function returns omit; + * If expecting a RAU, it will return the RAU as a template + * @status + */ + function f_GERAN_RRConnEst_CSFallback(GERAN_CellId_Type p_CellId, + template G_LLC_DATAMESSAGE_IND p_RAU) runs on GERAN_PTC return template (omit) G_LLC_DATAMESSAGE_IND + { + var G_L2_DATAMESSAGE_IND v_ChanReq; + var B10_Type v_BCCH := f_GERAN_BCCHFreq_Get(p_CellId); + var B3_Type v_BCC := f_GERAN_BCC_Get(p_CellId); + var integer v_RR_RA; + var RFN v_RFN; + var template (omit) G_LLC_DATAMESSAGE_IND v_ReturnValue := omit; + + alt { + [] G_L2.receive(car_G_L2_ACCESS_IND(p_CellId, tsc_PhyCh0, tsc_RACH, ?, ?, cr_ChanReqOnePhase)) + -> value v_ChanReq + { + v_ReturnValue := f_GERAN_ULTBFOnePhase(p_CellId, v_ChanReq.access, p_RAU); + } + [] G_L2.receive(car_G_L2_ACCESS_IND(p_CellId, tsc_PhyCh0, tsc_RACH, ?, ?, cr_G_ChannelReq_LocUpdate)) + -> value v_ChanReq + { + v_RFN := v_ChanReq.access.rfn; + v_RR_RA := bit2int(v_ChanReq.access.burst.chReq.estCauRandomRef); + G_L2.send(cas_G_L2_UNITDATA_REQ(p_CellId, tsc_PhyCh0, tsc_AGCH, 15, cs_G_RFN_Omit, cs_ImmAss(cs_ImmediateAssignment(v_BCCH, v_BCC, v_RR_RA, v_RFN, substr(oct2bit(f_GERAN_TA_Get(p_CellId)),1, 6))))); // @sic R5s120587 sic@ + v_ReturnValue := omit; // don't try waiting for the Location Update, just finish now + } + } + return v_ReturnValue; + } // end of f_GERAN_RRConnEst_CSFallback + + //---------------------------------------------------------------------------- + /* + * @desc To configure an UL TBF, receive an LLC message and close the TBF again + * @param p_CellId + * @param p_DataMsgInd - The template for the received LLC message to be tested against + * @param p_StepNo (default value: "") + * only used if the Channel Request needs to assigned a Pass verdict - i.e. in IdleMode tests + * @return G_LLC_DATAMESSAGE_IND + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GPRS_ReceiveUplinkMsg(GERAN_CellId_Type p_CellId, + template G_LLC_DATAMESSAGE_IND p_DataMsgInd, + charstring p_StepNo := "") runs on GERAN_PTC return G_LLC_DATAMESSAGE_IND + { + var G_L2_DATAMESSAGE_IND v_ChanReq; + var template (omit) G_LLC_DATAMESSAGE_IND v_ULDataInd; + + G_L2.receive(car_G_L2_ACCESS_IND(p_CellId, tsc_PhyCh0, tsc_RACH, ?, ?, cr_ChanReqOnePhase)) -> value v_ChanReq; + if (p_StepNo != "") { + f_GERAN_PreliminaryPass(__FILE__, __LINE__, p_StepNo); + } + v_ULDataInd := f_GERAN_ULTBFOnePhase(p_CellId, v_ChanReq.access, p_DataMsgInd); // @sic R5s120050 MCC160 implementation sic@ + return valueof(v_ULDataInd); // return this to the calling function + } + + //---------------------------------------------------------------------------- + /* + * @desc To configure an UL TBF (the ChReq must have already been received before this) + * @param p_CellId + * @param p_AccessInd + * @param p_DataMsgInd + * @return template (omit) G_LLC_DATAMESSAGE_IND + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_ULTBFOnePhase(GERAN_CellId_Type p_CellId, + G_L2_ACCESS_IND p_AccessInd, + template G_LLC_DATAMESSAGE_IND p_DataMsgInd := omit) runs on GERAN_PTC return template (omit) G_LLC_DATAMESSAGE_IND + { /* @sic R5s120050 MCC160 implementation sic@ */ + var G_LLC_DATAMESSAGE_IND v_ULDataInd; + var G_CPHY_CONFIG_CNF v_G_CL1_ComingFN_CNF; + var G_RLC_DATAMESSAGE_IND v_G_RLC_ControlMsg_IND; + var RFN v_StartingTime; + var TLLI v_NewTLLI; + var B5_Type v_Gamma := f_GERAN_GAMMA_Get(p_CellId); + var B10_Type v_GPRSFreq := f_GERAN_GPRSFreq_Get(p_CellId); + var integer v_RR_RA; + var RFN v_RFN; + + v_RFN := p_AccessInd.rfn; + v_RR_RA := bit2int(p_AccessInd.burst.chReq.estCauRandomRef); + if ((119 > v_RR_RA) or (v_RR_RA > 127)) {// establishment cause should be one phase access + f_GERAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "wrong establishment cause"); + } + + v_G_CL1_ComingFN_CNF := f_GERAN_CPHY_CONFIG_ComingFN(cas_G_CL1_ComingFN_REQ(p_CellId, tsc_PhyCh1, tsc_PACCH_F)); + v_StartingTime := v_G_CL1_ComingFN_CNF.comingFN; + + // Send IA with Poll Bit set so that a PCA is received + G_L2.send(cas_G_L2_UNITDATA_REQ(p_CellId, + tsc_PhyCh0, + tsc_AGCH, 15, + cs_G_RFN_Omit, + cs_ImmAss(cs_P_ImmediateAssignment('0'B, + v_GPRSFreq, + v_RR_RA, + v_RFN, + substr(oct2bit(f_GERAN_TA_Get(p_CellId)),1, 6), // @sic R5s120587 sic@ + cs_IARO_PUA(v_Gamma, + (v_StartingTime.t1_ & v_StartingTime.t3 & v_StartingTime.t2)))))); // @sic GP-110839 sic@ + + // Configure the Uplink TBF for Dynamic Allocation, USF 0 on timeslot 4 + f_GERAN_RLC_CONFIG_Common(cas_ActivateTBF_UplinkDyn(p_CellId, 1), dontWaitForCNF); // don't wait for CNF to avoid race condition with incoming car_G_RLC_ControlMsg_IND + + // Now wait for PCA, which means the TBF is up and running + alt { + [] G_RLC.receive(car_G_RLC_ControlMsg_IND(p_CellId, tsc_PhyCh1, cr_PacketControlAcknowledgement)) + -> value v_G_RLC_ControlMsg_IND + { + /* NOTE: in general another receive event follows to this receive event to get the L3 message from the mobile; + * nevertheless as long as it is necessary to configure the TLLI at the SS the PCA must come first + * and configuration of the TLLI must happen before the L3 message is received */ + + v_NewTLLI := v_G_RLC_ControlMsg_IND.ctrl.msg.pktCtrlAck.tLLI; + fl_GERAN_TLLI_Update(p_CellId, v_NewTLLI); // @sic R5s130341 sic@ + } + } + if (ispresent(p_DataMsgInd)) { + interleave { // to resolve RACE CONDITION between G_LLC and G_RLC + [] G_LLC.receive(p_DataMsgInd) -> value v_ULDataInd {} // Receive the message + [] G_RLC.receive(car_G_RLC_ControlMsg_IND(p_CellId, tsc_PhyCh1, cr_PacketControlAcknowledgement)) {} // receive PCA that's sent when the TBF is released + } + return v_ULDataInd; + } + return omit; + } // end of f_ULTBFOnePhase + + //---------------------------------------------------------------------------- + /* + * @desc To configure a downlink TBF and send an LLC message + * @param p_CellId + * @param p_USFRate - This controls the speed of the DL TBF transferring data blocks by controlling the USF rate: + * 1 (normal value) ---> implementation dependent. TTCN does not specify the USF generating rate; + * 2---> 10 data blocks per second; + * 3---> 5 data blocks per second; + * 4---> 1 data block per second; + * 5---> 1 data block 2 seconds; + * 6---> 1 data block 3 seconds; + * 7---> 1 data block 4 seconds + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GPRS_ConfigureDownlinkTBF(GERAN_CellId_Type p_CellId, + integer p_USFRate := 1) runs on GERAN_PTC + { /* @sic R5s120050 MCC160 implementation sic@ */ + var B5_Type v_Gamma := f_GERAN_GAMMA_Get(p_CellId); + var B10_Type v_GPRSFreq := f_GERAN_GPRSFreq_Get(p_CellId); + var DRXparameter v_SplitPGCycle := f_GERAN_SplitPGCycle_Get(p_CellId); + var ControlChDescr v_CtrlCh := f_GERAN_ControlChDesc_Get(p_CellId); + var TLLI v_TLLI := f_GERAN_TLLI_Get(p_CellId); + var template (value) PagingReqType v_PagingReqType := cs_G_PagingRequest_ImmAss(cs_P_ImmediateAssignment('1'B, + v_GPRSFreq, + 0, + cs_RFN_0, + substr(oct2bit(f_GERAN_TA_Get(p_CellId)),1, 6), // @sic R5s120587 sic@ + cs_IARO_PDA(v_TLLI, v_Gamma))); + var integer k, m; + + f_GERAN_RLC_CONFIG_Common(cas_ActivateTBF_Downlink(p_CellId, tsc_PhyCh1, p_USFRate)); + + if ((v_SplitPGCycle.splitPGcycleCode == '00000000'B) or (v_SplitPGCycle.splitOnCCCH == '0'B)) { + k := f_PagingGroupCalculate(px_IMSI_Def, v_CtrlCh.cCCH_CONF, + (3 - bit2int(v_CtrlCh.bS_AG_BLKS_RES))* (bit2int(v_CtrlCh.bS_PA_MFRMS)+2)); // @sic R5s120106, R5s120357 sic@ + G_L2.send(cas_G_Paging_REQ(p_CellId, k, v_PagingReqType)); + } + else { + m := (3 - bit2int(v_CtrlCh.bS_AG_BLKS_RES)) * 64; + k := f_PacketPagingGroupCalculate(px_IMSI_Def, + bit2int(v_CtrlCh.cCCH_CONF), + m, + (3 - bit2int(v_CtrlCh.bS_AG_BLKS_RES))* (bit2int(v_CtrlCh.bS_PA_MFRMS)+2), // @sic R5s120357 sic@ + v_SplitPGCycle.splitPGcycleCode); + G_L2.send(cas_GPRS_Paging_REQ(p_CellId, k, bit2int(v_SplitPGCycle.splitPGcycleCode), v_PagingReqType)); + } + } + + //---------------------------------------------------------------------------- + /* + * @desc To configure a downlink TBF and send an LLC message + * @param p_CellId + * @param p_USFRate - This controls the speed of the DL TBF transferring data blocks by controlling the USF rate: + * 1 (normal value) ---> implementation dependent. TTCN does not specify the USF generating rate; + * 2---> 10 data blocks per second; + * 3---> 5 data blocks per second; + * 4---> 1 data block per second; + * 5---> 1 data block 2 seconds; + * 6---> 1 data block 3 seconds; + * 7---> 1 data block 4 seconds + * @param p_Msg GPRS Message to be transmitted + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GPRS_SendDownlinkMsg(GERAN_CellId_Type p_CellId, + integer p_USFRate := 1, + template (value) G_LLC_DATAMESSAGE_REQ p_Msg) runs on GERAN_PTC + { /* @sic R5s120050 MCC160 implementation sic@ */ + f_GPRS_ConfigureDownlinkTBF(p_CellId, p_USFRate); + G_LLC.send(p_Msg); + } // end of f_GPRS_SendDownlinkMsg + + //---------------------------------------------------------------------------- + function f_Delete_GPRS_Entities(GERAN_CellId_Type p_CellId) runs on GERAN_PTC + { + f_GERAN_RLC_CONFIG_Common(cas_G_CRLC_DeleteRLC_MAC_REQ(p_CellId)); + f_GERAN_LLC_CONFIG_Common(cas_G_CLLC_DeleteLLE_REQ(enum2int(p_CellId))); // @sic R5s120572 sic@ + } //end of f_Delete_GPRS_Entities + + //---------------------------------------------------------------------------- + /* + * @desc To release the GSM control channel and GPRS channel configured in the cell + * @param p_CellId + * @param p_MinUL (default value: false) + * @param p_TCH (default value: false) + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_SS_CellRelease(GERAN_CellId_Type p_CellId, + boolean p_MinUL := false, + boolean p_TCH := false) runs on GERAN_PTC + { /* @sic R5s120050 MCC160 implementation sic@ */ + f_GERAN_CPHY_CONFIG_Common(cas_G_CL1_DeleteChannel_REQ(p_CellId, tsc_PhyCh0)); + if (not p_MinUL) { + f_GERAN_CPHY_CONFIG_Common(cas_G_CL1_DeleteChannel_REQ(p_CellId, tsc_PhyCh1)); + } + if (p_TCH) { // @sic R5s120498, R5s120637 sic@ + f_GERAN_CPHY_CONFIG_Common(cas_G_CL1_DeleteChannel_REQ(p_CellId, tsc_TchCh)); + } + f_GERAN_CPHY_CONFIG_Common(cas_G_CL1_DeleteCell_REQ(p_CellId)); + } //end of f_GPRS_SS_CellRelease + + //---------------------------------------------------------------------------- + /* + * @desc To disable ciphering on the provided GSM channel + * @param p_CellId + * @param p_PhyCh + * @param p_ChannelType + * @param p_SubChannel + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_DisableCiphering(GERAN_CellId_Type p_CellId, + PhysicalChId p_PhyCh, + G_LogicChType p_ChannelType, + SubChannelNumber p_SubChannel) runs on GERAN_PTC + { + var G_LogicChType v_AssociatedCh; + + select (p_ChannelType) { + case (tsc_SDCCH_4) { + v_AssociatedCh := tsc_SACCH_C4; + } + case (tsc_SDCCH_8) { + v_AssociatedCh := tsc_SACCH_C8; + } + case (tsc_TCH_F) { + v_AssociatedCh := tsc_FACCH_F; + } + } + if (px_GSM_CipheringOnOff == '1'B) { + G_CL1.clear; /* @sic R5s120050 MCC160 implementation sic@ */ + G_CL1.send(cas_G_CL1_CipherModeModify_REQ(p_CellId, p_PhyCh, p_ChannelType, p_SubChannel, (cs_CipherModeSetting('0'B)))); + G_CL1.send(cas_G_CL1_CipherModeModify_REQ(p_CellId, p_PhyCh, v_AssociatedCh, p_SubChannel, (cs_CipherModeSetting('0'B)))); + G_CL1.receive(car_G_CPHY_Config_CNF); + G_CL1.receive(car_G_CPHY_Config_CNF); + } // end of if - don't do anything if ciphering turned off + } // end of f_G_DisableCiphering + + //---------------------------------------------------------------------------- + /* + * @desc To perform a Location Update procedure + * @param p_CellId + * @param p_DoAuth (default value: false) + * @return SubChannelNumber + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_LocationUpdate(GERAN_CellId_Type p_CellId, + boolean p_DoAuth := false) runs on GERAN_PTC return SubChannelNumber + { + var G_L2_DATAMESSAGE_IND v_ChanReq, v_LocUpd; + var B10_Type v_BCCH := f_GERAN_BCCHFreq_Get(p_CellId); + var B3_Type v_BCC := f_GERAN_BCC_Get(p_CellId); + var RFN v_RFN; + var integer v_RR_RA; + var G_LogicChType v_ChannelType; + var SubChannelNumber v_SubChannel; + + alt { + [] G_L2.receive(car_G_L2_ACCESS_IND(p_CellId, tsc_PhyCh0, tsc_RACH, ?, ?, cr_G_ChannelReq_Any)) + -> value v_ChanReq + { + v_RFN := v_ChanReq.access.rfn; + v_RR_RA := bit2int(v_ChanReq.access.burst.chReq.estCauRandomRef); + G_L2.send(cas_G_L2_UNITDATA_REQ(p_CellId, + tsc_PhyCh0, + tsc_AGCH, + 15, + cs_G_RFN_Omit, + cs_ImmAss(cs_ImmediateAssignment(v_BCCH, v_BCC, v_RR_RA, v_RFN, substr(oct2bit(f_GERAN_TA_Get(p_CellId)), 1, 6))))); // @sic R5s120587, GP-110839 sic@ + } + } + alt { + [] G_L2.receive(car_G_L2_Estab_IND(p_CellId, ?, ?, ?, cr_G_LocationUpdatingRequest)) + -> value v_LocUpd + { + v_ChannelType := v_LocUpd.sabm.g_LogicChType; + v_SubChannel := v_LocUpd.sabm.subChannel; + } + } + + f_GERAN_LocationUpdateWithoutLUReq(p_CellId, v_ChannelType, v_SubChannel, p_DoAuth); // @sic Hellen sic@ + + return v_SubChannel; + } // end of f_G_LocationUpdate + + /* + * @desc To perform a Location Update procedure, without the Location Update Request + * @param p_CellId + * @param p_ChannelType + * @param p_SubChannel + * @param p_DoAuth (default value: false) + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_LocationUpdateWithoutLUReq(GERAN_CellId_Type p_CellId, + G_LogicChType p_ChannelType, + SubChannelNumber p_SubChannel, + boolean p_DoAuth := false) runs on GERAN_PTC + { + var octetstring v_PLMN := f_GERAN_PLMN_Get(p_CellId); + var O2_Type v_LAC := f_GERAN_LAC_Get(p_CellId); + var GERAN_SecurityInfo_Type v_SecurityInfo := f_GERAN_SecurityInfo_Get(); + + v_SecurityInfo.CSinOtherRAT := true; + f_GERAN_SecurityInfo_Set(v_SecurityInfo); + + // @sic R5s120339 sic@ + G_L2.receive(car_G_L2_DATA_IND(geran_Cell24, ?, tsc_PhyCh0, ?, ?, ?, cr_G_ClassmarkChangeAny)); + if (pc_UTRA) { // @sic R5-123245 sic@ + G_L2.receive(car_G_L2_DATA_IND(geran_Cell24, ?, tsc_PhyCh0, ?, ?, ?, cr_G_UtranClassmarkChange)); + } + if (p_DoAuth) { + f_GERAN_MM_Authentication(p_CellId, p_ChannelType, p_SubChannel); + } + f_GERAN_Ciphering_Mode_Setting(p_CellId, tsc_PhyCh0, p_ChannelType, p_SubChannel); + + // Send Location Updating Accept + G_L2.send(cas_G_L2_DATA_REQ(p_CellId, 0, tsc_PhyCh0, p_ChannelType, p_SubChannel, cs_G_RFN_Omit, cs_G_LocationUpdatingAccept(v_PLMN, v_LAC, cs_MobileIdTMSIorPTMSI('17'O, px_TMSI_Def)))); + // Receive TMSI Reallocation Complete + G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, ?, ?, ?, ?, cr_G_TMSI_ReallocCmpl)); + + // release channel + f_G_ChannelRelease(p_CellId, tsc_PhyCh0, p_ChannelType, p_SubChannel); + } + + //---------------------------------------------------------------------------- + /* + * @desc To set the GSM ciphering mode in the SS and UE + * @param p_CellId + * @param p_PhyCh + * @param p_ChannelType + * @param p_SubChannel + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_Ciphering_Mode_Setting(GERAN_CellId_Type p_CellId, + PhysicalChId p_PhyCh, + G_LogicChType p_ChannelType, + SubChannelNumber p_SubChannel) runs on GERAN_PTC + { /* @sic R5s120050 MCC160 implementation sic@ */ + if (px_GSM_CipheringOnOff == '1'B) { + // Turn Ciphering On in SS + f_GERAN_CPHY_CONFIG_Common(cas_G_CL1_CipheringControl_REQ(p_CellId, p_PhyCh, '1'B)); + + //Turn Ciphering ON in UE - algorithm set to px_CiphAlg + G_L2.send(cas_G_L2_DATA_REQ(p_CellId, 0, p_PhyCh, p_ChannelType, p_SubChannel, cs_G_RFN_Omit, cs_G_CipheringModeCommand('1'B))); + alt { + [] G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, p_PhyCh, ?, ?, ?, cr_G_CipheringModeComplete)) {}; + [] G_L2.receive { + f_GERAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "Ciphering Failed"); // if receive anything other than Complete, fail + } + } + } // don't do anything if ciphering not turned on + } // end of f_G_Ciphering_Mode_Setting + + //---------------------------------------------------------------------------- + /* + * @desc To release the specified GERAN Physical Channel + * @param p_CellId + * @param p_PhyCh + * @param p_ChannelType + * @param p_SubChannel + * @param p_G_ResumeGPRS (default = omit) + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_G_ChannelRelease(GERAN_CellId_Type p_CellId, + PhysicalChId p_PhyCh, + G_LogicChType p_ChannelType, + SubChannelNumber p_SubChannel, + template (omit) GPRS_Resumption p_G_ResumeGPRS:= omit) runs on GERAN_PTC + { + G_L2.send(cas_G_L2_DATA_REQ(p_CellId, 0, p_PhyCh, p_ChannelType, p_SubChannel, cs_G_RFN_Omit, cs_G_ChRelease(p_G_ResumeGPRS))); // @sic R5s130089 sic@ + } // end of f_G_ChannelRelease + + //---------------------------------------------------------------------------- + /* + * @desc To change the power level on both the GSM control channel and the GPRS channel + * @param p_CellId + * @param p_Pwr + * @param p_MinUL (default value: false) + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_SetCellPowerLevel(GERAN_CellId_Type p_CellId, + TX_Power p_Pwr, + boolean p_MinUL := false) runs on GERAN_PTC + { + f_GERAN_SetChPwrLevel(p_CellId, tsc_PhyCh0, p_Pwr); // GSM Combined Ctrl Ch + if (not p_MinUL) { + f_GERAN_SetChPwrLevel(p_CellId, tsc_PhyCh1, p_Pwr); //GPRS Ch + } + } + + //---------------------------------------------------------------------------- + /* + * @desc To change the power level of the physical channel + * @param p_CellId + * @param p_PhyCh + * @param p_Pwr + * @param p_WaitForCNF (default value: waitForCNF) + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_SetChPwrLevel(GERAN_CellId_Type p_CellId, + PhysicalChId p_PhyCh, + TX_Power p_Pwr, + GERAN_WaitForCNF_Type p_WaitForCNF := waitForCNF) runs on GERAN_PTC + { /* @sic R5s120050 MCC160 implementation sic@ */ + var integer v_PwruVemf := p_Pwr + 113; + f_GERAN_CPHY_CONFIG_Common(cas_G_CL1_ChangePowerLevel_REQ(p_CellId, p_PhyCh, v_PwruVemf), p_WaitForCNF); + } + + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + /* + * @desc Function to send an XID reset and receive an optional XID response + * @param p_CellId + * @param p_SAPI + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_LLC_XIDReset(GERAN_CellId_Type p_CellId, + SAPI p_SAPI) runs on GERAN_PTC + { + var integer v_LLMEId := enum2int(p_CellId); + var default v_MyDefaultVar := null; + var G_LLC_XID_IND v_XID; + timer t_Wait5S := 5.0; + + v_MyDefaultVar := activate(a_GERAN_ReceiveXID(p_CellId)); // @sic R5s140286 sic@ + t_Wait5S.start; + + G_CLLC.send(cas_G_CLLC_XID_Req(f_GERAN_TLLI_Get(p_CellId), p_SAPI, '30841000000000'O, enum2int(p_CellId))); // @sic R5-135000 sic@ + f_GPRS_SendDownlinkMsg(p_CellId, 1, cas_G_LLC_XID_Reset(f_GERAN_TLLI_Get(p_CellId), p_SAPI, v_LLMEId)); // @sic R5s120802 sic@ + f_GPRS_ReceiveUplinkMsg(p_CellId, car_G_LLC_XID_IndAny); + + t_Wait5S.timeout; + deactivate(v_MyDefaultVar); + + if (f_GERAN_MsgInDefault_CheckXID()) { // If UE has sent another XID, then we need to reply to it @sic R5s140286 sic@ + v_XID := f_GERAN_MsgInDefault_GetXID(); + f_GPRS_SendDownlinkMsg(p_CellId, 1, cas_G_LLC_XID_Req(f_GERAN_TLLI_Get(p_CellId), v_XID.sAPI, omit, enum2int(p_CellId))); + f_Delay(2.0); + } + + } //end of f_GERAN_LLC_XIDReset + + //---------------------------------------------------------------------------- + /* + * @desc Function to receive an optional XID (and optional PRR and poss. RAU Complete too) + * @param p_CellId + * @param p_RAUComplete - Set to true if this is called after/during an RAU procedure, so that we also have to wait for RAUComplete + * @param p_Expected_G_RA_UpdComplete - If above parameter is true, use this template + * @return template (omit) G_L2_DATAMESSAGE_IND + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_LLC_XID(GERAN_CellId_Type p_CellId, + boolean p_RAUComplete, + template LLCUnitDataIndType p_Expected_G_RA_UpdComplete := cr_G_RA_UpdComplete) + runs on GERAN_PTC return template (omit) G_L2_DATAMESSAGE_IND // @sic R5s130368 sic@ + { + var B10_Type v_BCCH_ARFCN := f_GERAN_GPRSFreq_Get(p_CellId); // @sic R5s120587 sic@ + var template (omit) G_L2_DATAMESSAGE_IND v_ReturnChanReqTemplate := omit; // @sic R5s130368 sic@ + var G_L2_DATAMESSAGE_IND v_ChanReq; + var G_LLC_DATAMESSAGE_IND v_XID; + + timer t_Wait10S := 10.0; + + t_Wait10S.start; + alt { + [p_RAUComplete] G_LLC.receive(car_G_LLC_UnitData_IND(p_Expected_G_RA_UpdComplete)) // @sic R5s120837 sic@ + { + repeat; + } + [] G_RLC.receive(car_G_RLC_ControlMsg_IND(p_CellId, tsc_PhyCh1, cr_PacketResourceRequestAny)) + { + G_RLC.send(cas_G_RLC_ControlMsg_REQ_PACCH(p_CellId, tsc_PhyCh1, 1, tsc_UplinkTFI, cs_PacketUplinkAssignment(v_BCCH_ARFCN, substr(oct2bit(f_GERAN_TA_Get(p_CellId)),1, 6)))); // @sic R5s120587 sic@ + repeat; + } + [] G_LLC.receive(car_G_LLC_XID_IndAny) + -> value v_XID + { + t_Wait10S.stop; + // Wait for end of TBF + // RACE CONDITION: Do we need to check the flag here ??? + G_RLC.receive(car_G_RLC_ControlMsg_IND(p_CellId, tsc_PhyCh1, cr_PacketControlAcknowledgement)); // RACE CONDITION + G_CLLC.send(cas_G_CLLC_XID_Req(f_GERAN_TLLI_Get(p_CellId), v_XID.xid.sAPI, v_XID.xid.xID_Info, enum2int(p_CellId))); // @sic R5-135000 sic@ + fl_SendXIDRes(p_CellId, cas_G_LLC_XID_Req(f_GERAN_TLLI_Get(p_CellId), v_XID.xid.sAPI, omit, enum2int(p_CellId))); // @sic R5s130195 Baseline Moving sic@ + } + [] G_RLC.receive(car_G_RLC_ControlMsg_IND(p_CellId, tsc_PhyCh1, cr_PacketControlAcknowledgement)) + { + // RACE CONDITION: Do we need to set a flag here ??? + repeat; + } + [] G_L2.receive(car_G_L2_ACCESS_IND(p_CellId, tsc_PhyCh0, tsc_RACH, ?, ?, cr_ChanReqOnePhase)) + -> value v_ChanReq + { + f_GERAN_ULTBFOnePhase(p_CellId, v_ChanReq.access); // @sic R5s120050 MCC160 implementation sic@ + repeat; + } + [] G_L2.receive(car_G_L2_ACCESS_IND(p_CellId, tsc_PhyCh0, tsc_RACH, ?, ?, cr_ChanReqTwoPhase)) // @sic R5s130368 sic@ + -> value v_ChanReq + { + t_Wait10S.stop; + v_ReturnChanReqTemplate := v_ChanReq; + } + [] t_Wait10S.timeout {} // No XID coming + } + return v_ReturnChanReqTemplate; // @sic R5s130368 sic@ + } //end of f_GERAN_LLC_XID + + //---------------------------------------------------------------------------- + /* + * @desc To store XID messages + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT) + */ + altstep a_GERAN_ReceiveXID(GERAN_CellId_Type p_CellId) runs on GERAN_PTC + { + var G_LLC_DATAMESSAGE_IND v_XID; + + //Receive any XID message + [] G_LLC.receive(car_G_LLC_XID_IndAny) -> value v_XID + { + G_CLLC.send(cas_G_CLLC_XID_Req(f_GERAN_TLLI_Get(p_CellId), v_XID.xid.sAPI, v_XID.xid.xID_Info, enum2int(p_CellId))); + f_GERAN_MsgInDefault_SetXID(v_XID.xid); + repeat; + } + } + + //---------------------------------------------------------------------------- + /* + * @desc Function to send the XID Response if we've received and XID - only to be called from f_GERAN_LLC_XID + * @param p_CellId + * @param p_Msg + * @param p_Rpt (default : true) + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function fl_SendXIDRes(GERAN_CellId_Type p_CellId, + template (value) G_LLC_DATAMESSAGE_REQ p_Msg, // @sic R5s120967 sic@ + boolean p_Rpt := true) runs on GERAN_PTC + { + var G_L2_DATAMESSAGE_IND v_ChanReq; + timer t_Wait5S := 5.0; + + f_GPRS_SendDownlinkMsg(p_CellId, 1, p_Msg); // @sic R5s120802 sic@ + + t_Wait5S.start; + alt { + [] t_Wait5S.timeout {} + [] G_LLC.receive(car_G_LLC_XID_IndAny) + { + if (p_Rpt) {// already send response, so ignore this + repeat; + } + } + [] G_L2.receive(car_G_L2_ACCESS_IND(p_CellId, tsc_PhyCh0, tsc_RACH, ?, ?, cr_ChanReqOnePhase)) + -> value v_ChanReq + { + t_Wait5S.stop; + f_GERAN_ULTBFOnePhase(p_CellId, v_ChanReq.access, car_G_LLC_XID_IndAny); // @sic R5s120050 MCC160 implementation sic@ + + } + } // end of alt + } // end of fl_SendXIDRes + + //---------------------------------------------------------------------------- + /* + * @desc To perform the Routing Area Update procedure + * @param p_CellId + * @param p_FOR + * @param p_Type + * @param p_DoAuth (default value: false) + * @param p_WaitForXID (default value: false) + * @param p_NSAPI (default value: 0) + * @param p_SGSNChange (default value: false) + * @param p_SRVCC (default value: false) + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_RAU(GERAN_CellId_Type p_CellId, + template (present) B1_Type p_FOR, + template (present) B3_Type p_Type, + boolean p_DoAuth := false, + boolean p_WaitForXID := false, + integer p_NSAPI := 0, // @sic R5s130833 sic@ + boolean p_SGSNChange := false, + boolean p_SRVCC := false) runs on GERAN_PTC + { + var G_LLC_DATAMESSAGE_IND v_LLCDataInd; + var B3_Type v_UpdateType; + var template (value) PDP_ContextStatus v_PDP_ContextStatus; + + // Receive RAU Request Message + v_LLCDataInd := f_GPRS_ReceiveUplinkMsg(p_CellId, car_G_LLC_UnitData_IND(cr_G_RA_UpdReqAny(cr_GMM_UpdateType(p_FOR, p_Type), cr_RAI(omit), cr_PTMSI_SignatureAny ifpresent, ?))); + v_UpdateType := f_UG_RauReq_GetUpdateValueForRauAcc(v_LLCDataInd.unit.msg.rauReq); /* @sic R5s120019 Additional Changes sic@ */ + v_PDP_ContextStatus := v_LLCDataInd.unit.msg.rauReq.pDP_ContextStatus; + + if (p_SGSNChange) { // @sic R5s120967, R5s130050 sic@ + f_GERAN_LLC_XIDReset(p_CellId, 11); + } + + if (p_SRVCC) { // @sic R5s140158 sic@ + v_PDP_ContextStatus := cs_PDP_ContextStatusInactive; + } + f_GERAN_RAUWithoutRAUReq(p_CellId, v_UpdateType, v_PDP_ContextStatus, p_DoAuth, p_WaitForXID, p_NSAPI); // @sic R5s110720, R5-133584 sic@ + + }// end of f_GERAN_RAU + + //---------------------------------------------------------------------------- + /* + * @desc To perform the Routing Area Update Procedure, after the RAU Request message has been received + * @param p_CellId + * @param p_UpdateType + * @param p_PDP_ContextStatus + * @param p_DoAuth (default value: false) + * @param p_WaitForXID (default value: false) + * @param p_NSAPI (default value: 0 = SNDCP not required) + * @param p_FOP (default value: '1'B) + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_RAUWithoutRAUReq(GERAN_CellId_Type p_CellId, + B3_Type p_UpdateType, + template (omit) PDP_ContextStatus p_PDP_ContextStatus, // @sic R5-133584 sic@ + boolean p_DoAuth := false, + boolean p_WaitForXID := false, + integer p_NSAPI := 0, + B1_Type p_FOP := '1'B) runs on GERAN_PTC + { + var G_LLC_DATAMESSAGE_IND v_LLCDataInd; + var octetstring v_PLMN := f_GERAN_PLMN_Get(p_CellId); + var O1_Type v_RAC := f_GERAN_RAC_Get(p_CellId); + var O2_Type v_LAC := f_GERAN_LAC_Get(p_CellId); + var GERAN_SecurityInfo_Type v_SecurityInfo := f_GERAN_SecurityInfo_Get(); + var GERAN_CellId_Type v_LLMEId := p_CellId; // @sic R5s120572 sic@ + var template (value) G_LLC_DATAMESSAGE_REQ v_RAU_Accept; + + // if LTE has sent over NSAPI value, then SNDCP must be configured now + if (p_NSAPI > 0 and not f_GERAN_SNDCPConfigured_Get()) { // @sic R5s130777, R5s130833 sic@ + f_GERAN_Config_SNDCPandIP(p_CellId, p_NSAPI); + } + if (p_UpdateType == tsc_I_UpdateTypeCombinedWithIMSI or p_UpdateType == tsc_I_UpdateTypeCombined) { + v_SecurityInfo.CSinOtherRAT := true; + f_GERAN_SecurityInfo_Set(v_SecurityInfo); + } + + if (p_DoAuth) { + // Do Authentication + f_GERAN_GPRS_Authentication(p_CellId); + } + // Send RAU Accept + v_RAU_Accept := cas_G_LLC_UnitData_Req(f_GERAN_TLLI_Get(p_CellId), + tsc_LLCSapi_GMM, + tsc_LLC_PM, + px_GSM_CipheringOnOff, + cs_G_RA_UpdAcc3(cs_GMM_UpdateResult(p_UpdateType), + cs_RAI(omit, + cs_LAI(omit, v_PLMN, v_LAC), + v_RAC), + cs_PTMSI_Signature(px_PTMSI_SigDef), + cs_MobileIdTMSIorPTMSI('18'O, px_PTMSI_Def), + p_PDP_ContextStatus), // @sic R5-133584 sic@ + v_LLMEId); // @sic R5s120572 sic@ + + v_RAU_Accept.unit.msg.rauAccept.updateResult.fOP := p_FOP; // @sic R5-142978 sic@ + + f_GPRS_SendDownlinkMsg(p_CellId, 1, v_RAU_Accept); + + if (p_WaitForXID) { // @sic R5s110720 sic@ + f_GERAN_LLC_XID(p_CellId, true); + } else { + //Receive RAU Complete Message + v_LLCDataInd := f_GPRS_ReceiveUplinkMsg(p_CellId, car_G_LLC_UnitData_IND(cr_G_RA_UpdComplete)); + } + } // end of f_GERAN_RAUWithoutRAUReq + + //---------------------------------------------------------------------------- + /* + * @desc Procedure which aims at checking whether the UE is camping on a new GERAN cell of a test case or not. + * The procedure is defined in 36.508 table 6.4.2.9-1. + * @param p_CellId + * @param p_WaitForXID (default value: true) + * @param p_NSAPI (default value: 0) + * @param p_SGSNChange (default value: false) + * @param p_SRVCC (default value: false) + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_508CheckCampOnNewGeranCell(GERAN_CellId_Type p_CellId, + boolean p_WaitForXID := true, + integer p_NSAPI := 0, // @sic R5s130833 sic@ + boolean p_SGSNChange := false, + boolean p_SRVCC := false) runs on GERAN_PTC + { + f_GERAN_RAU(p_CellId, '0'B, (tsc_I_UpdateTypeRAOnly, tsc_I_UpdateTypeCombined), true, p_WaitForXID, p_NSAPI, p_SGSNChange, p_SRVCC); // @sic R5s110087, R5s110720, R5s120967, R5s140158 sic@ + f_GERAN_PreliminaryPass(__FILE__, __LINE__, ""); + } + + //---------------------------------------------------------------------------- + /* + * @desc Function used in Idle Mode test cases to perform Routing Area Update on the new GERAN cell. + * @param p_CellId .. The GERAN cell on which the random access request and the RAU will happen + * @param p_SGSNChange (default value: false) + * @param p_NSAPI (default value: 0 = SNDCP not required) + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_IdleMode_RAU(GERAN_CellId_Type p_CellId, boolean p_SGSNChange := false, integer p_NSAPI := 0) runs on GERAN_PTC + { + const float const_IdleMode_GenericTimer_GERAN := 360.0; /* Idle mode generic timer according to 36.523-3 cl. 7.8 */ + timer t_IdleMode_GenericTimer := f_UG_SetTimerToleranceMax(const_IdleMode_GenericTimer_GERAN); + + t_IdleMode_GenericTimer.start; + f_GERAN_508CheckCampOnNewGeranCell(p_CellId, true, p_NSAPI, p_SGSNChange); // @sic R5s110720, R5s120967 sic@ + t_IdleMode_GenericTimer.stop; + } + + //---------------------------------------------------------------------------- + /* + * @desc Function used in Activate PDP Context + * @param p_CellId .. The GERAN cell on which the random access request and the RAU will happen + * @param p_QoS (default value: cs_QoS_PDP2; PDP Context type 2) + * @param p_ConfigureSNDCP (default value: true) + * @return integer // @sic R5s140300 sic@ + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_ActivatePDPContext(GERAN_CellId_Type p_CellId, + template (value) QualityOfService p_QoS := cs_QoS_PDP2(omit), + boolean p_ConfigureSNDCP := true) runs on GERAN_PTC return integer // @sic R5s130883 sic@ + { + var G_LLC_DATAMESSAGE_IND v_LLCDataInd; + var TI v_TI; + var template (value) PktDataProtoAddr v_PDPAddr1 := f_UG_GetPktDataProtoAddr(true); + var GERAN_CellId_Type v_LLMEId := p_CellId; // @sic R5s120572 sic@ + var NSAPI v_NSAPI; + + f_UT_ActivatePDPContextUG(UT, + 1, // CId, don't care what the value is + p_QoS); + + v_LLCDataInd := f_GPRS_ReceiveUplinkMsg(p_CellId, car_G_LLC_UnitData_IND(cr_G_ActPDP_ContextReqMO_Any)); + v_TI := v_LLCDataInd.unit.msg.actPDPContextReq.ti; + v_NSAPI := v_LLCDataInd.unit.msg.actPDPContextReq.requestedNSAPI; // @sic R5s130833 sic@ + + // make sure SNDCP is configured now, if its not been done before + if (p_ConfigureSNDCP and not f_GERAN_SNDCPConfigured_Get()) { // @sic R5s130777, R5s130833 sic@ + f_GERAN_Config_SNDCPandIP(p_CellId, bit2int(v_NSAPI.nSAPI_Value)); // @sic R5s130833 sic@ + } + + // Send Accept + v_TI.tiFlag := '1'B; + f_GPRS_SendDownlinkMsg(p_CellId, 1, cas_G_LLC_UnitData_Req(f_GERAN_TLLI_Get(p_CellId), + tsc_LLCSapi_GMM, + tsc_LLC_PM, + px_GSM_CipheringOnOff, + cs_G_PDPContextAccept(v_TI, + cs_LLC_SAPI_11, + p_QoS, + v_PDPAddr1, + cs_ProtocolConfigOptions_PPP), + v_LLMEId)); // @sic R5s120572 sic@ + return bit2int(v_NSAPI.nSAPI_Value); // @sic R5s140300 sic@ + }// end of f_GERAN_ActivatePDPContext + + //---------------------------------------------------------------------------- + /* + * @desc To switch off the UE and potentially receive the Detach Request message + * @param p_CellId + * @param p_AttachType + * @param p_USIM_Rmvd + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_SwitchPowerOff(GERAN_CellId_Type p_CellId, + UTRAN_GERAN_ATTACH_Type p_AttachType, + boolean p_USIM_Rmvd := false) runs on GERAN_PTC + { + var B2_Type v_Nmo := f_GERAN_NMO_Get(p_CellId); + var GERAN_POSTAMBLE_CONDITIONS v_Geran_Postamble_Condition := fl_GERAN_SetPostambleCondition(p_AttachType); // @sic R5s110176 sic@ + var TLLI v_TLLI := f_GERAN_TLLI_Get(p_CellId); + var G_L2_DATAMESSAGE_IND v_ImsiDet; + var G_LogicChType v_ChannelType; + var SubChannelNumber v_SubChannel; + timer t_Wait5s := 5.0; + + if (pc_SwitchOnOff or p_USIM_Rmvd and pc_USIM_Removal) { // The UE can be switched off or USIM removed @sic R5s120597r1 sic@ + + f_UT_SwitchOffUE(UT, p_USIM_Rmvd); + if ((v_Geran_Postamble_Condition == GERAN_C3) or (v_Geran_Postamble_Condition == GERAN_C2 and v_Nmo == '01'B)) { + // Then expect an IMSI Detach + f_GERAN_RRConnEst(p_CellId); // @sic R5s120584 sic@ + G_L2.receive(car_G_L2_Estab_IND(p_CellId, ?, ?, ?, cr_G_Imsi_DetachInd)) -> value v_ImsiDet; // @sic R5s130325 sic@ + v_ChannelType := v_ImsiDet.sabm.g_LogicChType; + v_SubChannel := v_ImsiDet.sabm.subChannel; + // @sic R5s120584, R5s120866 subject to prose CR approval sic@ + t_Wait5s.start; + alt { + [] G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, tsc_PhyCh0, ?, ?, ?, cr_G_ClassmarkChangeAny)) + { + t_Wait5s.stop; + if (pc_UTRA) { + interleave { // @sic R5s130180 sic@ + [] G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, tsc_PhyCh0, ?, ?, ?, cr_G_UtranClassmarkChange)) {} + [] G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, tsc_PhyCh0, ?, ?, ?, cr_GPRS_SuspensionReq(?, cr_RAI(omit)))){} + } + } else { + G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, tsc_PhyCh0, ?, ?, ?, cr_GPRS_SuspensionReq(?, cr_RAI(omit)))); + } + } + [] t_Wait5s.timeout {} + } + f_G_ChannelRelease(p_CellId, tsc_PhyCh0, v_ChannelType, v_SubChannel); // @sic R5s130325 sic@ + } + + if (v_Geran_Postamble_Condition != GERAN_C3) { // as long as GPRS is supported + f_GPRS_ReceiveUplinkMsg(p_CellId, car_G_LLC_UnitData_IND(cr_G_DetachRequest(cr_DetachTypeOnSwitchOff, cdr_MobileIdTMSI_tlv(?) ifpresent))); // @sic R5s120889 sic@ + } + } + else { // The power must be removed from the UE + f_UT_PowerOffUE(UT); + } + // @sic R5s120056 sic@ + if (tsc_TLLI_Initial != v_TLLI) { //if the TLLI hasn't changed, don't bother calling LLCAssignReq + f_LLC_TLLI_Assign(p_CellId, v_TLLI, tsc_TLLI_Initial); + f_GERAN_OldTLLI_Set(p_CellId, v_TLLI); + f_GERAN_TLLI_Set(p_CellId, tsc_TLLI_Initial); + } + }// end of f_GERAN_DetachOnSwitchOff + + //---------------------------------------------------------------------------- + /* + * @desc Function to bring UE to switched/powered off state after test case execution in GERAN PTC + * This procedure is according to 36.523-3 cl. 10.2 + * @param p_CellId + * @param p_GERAN_POSTAMBLE_STATE .. as defined in 36.508 cl. 6.4.3.2 + * @param p_AttachType (default value: NotSpecified) + * @param p_DoUpdate (default value: false) + * only set to true if UE is not registered to the LAC of this cell, so an RAU is required (default value: false) + * @param p_TCHType (default value: NotSpecified) Used in G4_CSCALL. If set, function will also delete TCH + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_Postamble(GERAN_CellId_Type p_CellId, + GERAN_POSTAMBLE_STATE_TYPE p_GERAN_POSTAMBLE_STATE, + UTRAN_GERAN_ATTACH_Type p_AttachType := NotSpecified, + boolean p_DoUpdate := false, + G_LogicChType p_TCHType := -1) runs on GERAN_PTC + { + var boolean v_IsCombined := f_GERAN_AttachTypeCheck(p_AttachType); // @sic R5s110176 sic@ + var B2_Type v_Nmo := f_GERAN_NMO_Get(p_CellId); + var B3_Type v_UpdateType := tsc_I_UpdateTypeRAOnly; + var boolean v_IsTCH := false; + + if (p_TCHType > -1) { // @sic R5s120498 sic@ + v_IsTCH := true; + } + if (v_IsCombined and v_Nmo == '00'B) { + v_UpdateType := tsc_I_UpdateTypeCombined; + } + select (p_GERAN_POSTAMBLE_STATE) { + case (G1_IDLE) { + //Switch/Power off UE + f_GERAN_SwitchPowerOff(p_CellId, p_AttachType); // @sic R5s110176 sic@ + } + case (G2_PSHANDOVER) { + if (p_DoUpdate) { + f_GERAN_RAU(p_CellId, '0'B, v_UpdateType); + if (v_IsCombined and v_Nmo == '01'B) { // If NMO II and C2, then have to do LAU too + f_GERAN_LocationUpdate(p_CellId); + } + } + //Switch/Power off UE + f_GERAN_SwitchPowerOff(p_CellId, p_AttachType); // @sic R5s110176 sic@ + } + case (G3_CSFALLBACK) { + //Perform CS Fallback procedure + f_GERAN_CS_Fallback(p_CellId, p_AttachType); + + //Switch/Power off UE + f_GERAN_SwitchPowerOff(p_CellId, p_AttachType); // @sic R5s110176 sic@ + } + case (G4_CSCALL) { + //Disconnect the active CC call + f_GERAN_CC_Disconnect(p_CellId, p_TCHType); + v_IsTCH := true; // @sic R5s120498 sic@ + + //SwitchPower off UE + f_GERAN_SwitchPowerOff(p_CellId, p_AttachType); // @sic R5s110176 sic@ + } + case (G5_DEREGISTERED) { + if (pc_SwitchOnOff == true) { + //Simply switch the UE off + f_UT_SwitchOffUE(UT, false); + } else {//just remove power from UE + f_UT_PowerOffUE(UT); + } + } + case else {//No state defined - just remove power from UE + f_UT_PowerOffUE(UT); + } + } + //Release the GERAN cell + f_GERAN_SS_CellRelease(p_CellId, -, v_IsTCH); // @sic R5s120498 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc Function to set the postamble conditions based on the GERAN CS/PS domain support + * and the LTE UE Attach type. According to 36.523-3 Table 10.1-1 + * @param p_AttachType + * @return GERAN_POSTAMBLE_CONDITIONS + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function fl_GERAN_SetPostambleCondition(UTRAN_GERAN_ATTACH_Type p_AttachType) return GERAN_POSTAMBLE_CONDITIONS + { + var boolean v_IsCombined := f_GERAN_AttachTypeCheck(p_AttachType); // @sic R5s110176 sic@ + var GERAN_POSTAMBLE_CONDITIONS v_GERAN_POSTAMBLE_CONDITION := GERAN_C1; + + if (v_IsCombined) {//combined attach case + if (pc_GPRS) { + v_GERAN_POSTAMBLE_CONDITION := GERAN_C2; + } + else { + v_GERAN_POSTAMBLE_CONDITION := GERAN_C3; + } + } + return v_GERAN_POSTAMBLE_CONDITION; + } + + /* + * @desc To get the UE into a stable state when fallen back to GERAN + * @param p_CellId + * @param p_AttachType + * @param p_AlreadyRegisteredToLAC (default: false) + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_CS_Fallback(GERAN_CellId_Type p_CellId, + UTRAN_GERAN_ATTACH_Type p_AttachType, + boolean p_AlreadyRegisteredToLAC := false) runs on GERAN_PTC + { + var B2_Type v_Nmo := f_GERAN_NMO_Get(p_CellId); + var G_L2_DATAMESSAGE_IND v_G_L2_DATAMESSAGE_IND; + var G_LogicChType v_ChannelType; + var SubChannelNumber v_SubChannel; + var GERAN_POSTAMBLE_CONDITIONS v_Geran_Postamble_Condition := fl_GERAN_SetPostambleCondition(p_AttachType); // @sic R5s110176 sic@ + + alt { + //Step 1a1: Receive CM Service Request + [] G_L2.receive(car_G_L2_Estab_IND(p_CellId, + ?, + ?, + ?, + cr_G_CMServiceRequest(?))) + -> value v_G_L2_DATAMESSAGE_IND + { + v_ChannelType := v_G_L2_DATAMESSAGE_IND.sabm.g_LogicChType; + v_SubChannel := v_G_L2_DATAMESSAGE_IND.sabm.subChannel; + //Step 1a2: Send CM Service Reject with reject cause #32 (Service Option not supported) + G_L2.send(cas_G_L2_DATA_REQ(p_CellId, + 0, + tsc_PhyCh0, + v_ChannelType, + v_SubChannel, + cs_G_RFN_Omit, + cs_G_CMServiceReject(tsc_ServiceOptionNotSupported))); + } + //Step 1b1: Receive Paging Response + [] G_L2.receive(car_G_L2_Estab_IND(p_CellId, + ?, + ?, + ?, + cr_G_PagRsp(?,?))) + {}//Do nothing + } + + // @sic R5s120339 sic@ + G_L2.receive(car_G_L2_DATA_IND(geran_Cell24, ?, tsc_PhyCh0, ?, ?, ?, cr_G_ClassmarkChangeAny)); + if (pc_UTRA) { // @sic R5-123245 sic@ + G_L2.receive(car_G_L2_DATA_IND(geran_Cell24, ?, tsc_PhyCh0, ?, ?, ?, cr_G_UtranClassmarkChange)); + } + //Steps 2a1-2a3 / 2b1-2b3 + if ((v_Geran_Postamble_Condition == GERAN_C3 and not p_AlreadyRegisteredToLAC) + or (v_Geran_Postamble_Condition == GERAN_C2 and v_Nmo == '01'B and p_AlreadyRegisteredToLAC)) { + f_GERAN_LocationUpdate(p_CellId); + } + + //Steps 2a4-2a6 / 2c1-2c3 + if ((v_Geran_Postamble_Condition == GERAN_C3 and not p_AlreadyRegisteredToLAC) or + (v_Geran_Postamble_Condition == GERAN_C2 and ((v_Nmo == '01'B and p_AlreadyRegisteredToLAC) or + (v_Nmo == '00'B and not p_AlreadyRegisteredToLAC)))) { + f_GERAN_RAU(p_CellId, ?, ?); + } + + }// end of f_GERAN_CS_Fallback + + /* @desc Function to do MT disconnection of ongoing CC call. + * @param p_CellId + * @param p_ChannelType + * @param p_SubChannel (default value: 15); If this is sent on a TCH/F then this value is ignored + * @param p_Calltype (default value: cs_TI_MT) + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_CC_Disconnect(GERAN_CellId_Type p_CellId, + G_LogicChType p_ChannelType, + SubChannelNumber p_SubChannel := 15, // @sic R5s120498 sic@ + template (value) TI p_Calltype := cs_TI_MT) + runs on GERAN_PTC + { + //Send Disconnect message + G_L2.send(cas_G_L2_DATA_REQ(p_CellId, + 0, + tsc_TchCh, // @sic R5s120498 sic@ + p_ChannelType, + p_SubChannel, + cs_G_RFN_Omit, + cs_G_Disconnect(p_Calltype))); // @sic R5s120498 sic@ + + //Receive Release message + G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, tsc_TchCh,?, ?, ?, cr_G_Release(?))); + + //Send Release Complete message + G_L2.send(cas_G_L2_DATA_REQ(p_CellId, + 0, + tsc_TchCh, // @sic R5s120498 sic@ + p_ChannelType, + p_SubChannel, + cs_G_RFN_Omit, + cs_G_RelCmpl(p_Calltype))); // @sic R5s120498 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc Copy of f_EUTRA_AttachTypeCheck. Checks the set parameters pc_Combined_Attach, pc_Attach & px_AttachTypeTested + * and returns a boolean (TRUE is attach is combined, false if attach is EPS only) + * @param p_AttachType If the prose doesn't state that the UE is configured for a specific state, then set to NotSpecified + * @return boolean + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_AttachTypeCheck(UTRAN_GERAN_ATTACH_Type p_AttachType) return boolean + { + var boolean v_IsCombined := false; + + select (p_AttachType) { // @sic R5s110176 sic@ + case (Combined) { + v_IsCombined := true; + } + case (PS_Only) { + v_IsCombined := false; + } + case (NotSpecified) { + if(pc_Combined_Attach) { + if (pc_Attach) { // So both set to true + if (px_AttachTypeTested == COMBINED_ATTACH) { // only now check the PIXIT value + v_IsCombined := true; + } + } else { // only combined set to true + v_IsCombined := true; + } + } else if (not pc_Attach) { // so neither set to true + f_SetVerdictInconc(__FILE__, __LINE__, "Neither pc_Attach nor pc_Combined_Attach set to true"); + } + } + } + return v_IsCombined; + } + + //---------------------------------------------------------------------------- + /* + * @desc Check no message (i.e. not even an initial RACH) is received on the specified cell + * @param p_CellId + * @param p_Wait + * @param p_StepNo + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_CheckNoAttachOnCell(GERAN_CellId_Type p_CellId, + float p_Wait, + charstring p_StepNo) runs on GERAN_PTC + { + timer t_Wait := f_UG_SetTimerToleranceMin(p_Wait); + t_Wait.start; + alt { + [] G_L2.receive(car_G_L2_ACCESS_IND(p_CellId, tsc_PhyCh0, tsc_RACH, ?, ?, ?)) + { + t_Wait.stop; + f_GERAN_SetVerdictFailOrInconc(__FILE__, __LINE__, p_StepNo); + } + [] t_Wait.timeout {} + } + } // end of f_GERAN_CheckNoAttachOnCell + + //---------------------------------------------------------------------------- + /* + * @desc To page on the PCCH with the PTMSI + * @param p_CellId + * @param p_PTMSI + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_PagewithPTMSI(GERAN_CellId_Type p_CellId, + octetstring p_PTMSI) runs on GERAN_PTC + { + var DRXparameter v_SplitPGCycle := f_GERAN_SplitPGCycle_Get(p_CellId); + var ControlChDescr v_CtrlCh := f_GERAN_ControlChDesc_Get(p_CellId); + var template (value) PagingReqType v_PagingReqType := cs_G_PagingRequest1_Def(cs_MobileIdTMSIorPTMSI(omit, p_PTMSI)); + var integer k, m; + + if ((v_SplitPGCycle.splitPGcycleCode == '00000000'B) or (v_SplitPGCycle.splitOnCCCH == '0'B)) { + k := f_PagingGroupCalculate(px_IMSI_Def, v_CtrlCh.cCCH_CONF, + (3 - bit2int(v_CtrlCh.bS_AG_BLKS_RES))* (bit2int(v_CtrlCh.bS_PA_MFRMS)+2)); // @sic R5s120106, R5s120357 sic@ + G_L2.send(cas_G_Paging_REQ(p_CellId, k, v_PagingReqType)); + } + else { + m := (3 - bit2int(v_CtrlCh.bS_AG_BLKS_RES)) * 64; + k := f_PacketPagingGroupCalculate(px_IMSI_Def, + bit2int(v_CtrlCh.cCCH_CONF), + m, + (3 - bit2int(v_CtrlCh.bS_AG_BLKS_RES))* (bit2int(v_CtrlCh.bS_PA_MFRMS)+2), // @sic R5s120357 sic@ + v_SplitPGCycle.splitPGcycleCode); + + G_L2.send(cas_GPRS_Paging_REQ(p_CellId, k, bit2int(v_SplitPGCycle.splitPGcycleCode), v_PagingReqType)); + } + } + + //---------------------------------------------------------------------------- + /* + * @desc To perform MM authentication + * @param p_CellId + * @param p_ChannelType + * @param p_SubChannel + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_MM_Authentication(GERAN_CellId_Type p_CellId, + G_LogicChType p_ChannelType, + SubChannelNumber p_SubChannel) runs on GERAN_PTC + { + var G_L2_DATAMESSAGE_IND v_AuthResponse; + var GERAN_SecurityInfo_Type v_SecurityInfo := f_GERAN_SecurityInfo_Get(); + var B32_Type v_AuthRES_High; + var bitstring v_AuthRES; + + v_SecurityInfo.authCS := f_AuthenticationInit(v_SecurityInfo.authCS); + + G_L2.send(cas_G_L2_DATA_REQ(p_CellId, + 0, + tsc_PhyCh0, + p_ChannelType, + p_SubChannel, + cs_G_RFN_Omit, + cs_G_AuthReq(v_SecurityInfo.authCS.KeySeq, v_SecurityInfo.authCS.RandValue, cs_GSM_AUTN(v_SecurityInfo.authCS.AUTN)))); + alt { + [] G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, tsc_PhyCh0, ?, ?, ?, cr_G_AuthRspAnyExt)) + -> value v_AuthResponse + {//Receive Authentication Response with extension + v_AuthRES_High := v_AuthResponse.l3.msg.authResponse.authRsp.rES; + v_AuthRES := v_AuthRES_High & v_AuthResponse.l3.msg.authResponse.authRspExt.rES; + // Verify that the received Authentication Response parameters match expected response: + if (v_AuthRES != substr(v_SecurityInfo.authCS.XRES, 0, lengthof(v_AuthRES))) { + f_GERAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "Authentication Failed"); + } + } + [] G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, tsc_PhyCh0, ?, ?, ?, cr_G_AuthRspAnyNoExt)) + -> value v_AuthResponse + {//Receive Authentication Response without extension + v_AuthRES_High := v_AuthResponse.l3.msg.authResponse.authRsp.rES; + // Verify that the received Authentication Response parameters match expected response. + if (v_AuthRES_High != substr(v_SecurityInfo.authCS.XRES, 0, lengthof(v_AuthRES_High))) { + f_GERAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "Authentication Failed"); + } + } + [] G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, tsc_PhyCh0, ?, ?, ?, cr_G_AuthFailAny)) + { + f_GERAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "Received Authentication Failure"); + } + } //end of alt + f_GERAN_SecurityInfo_Set(v_SecurityInfo); // @sic R5s120498 sic@ + } + + /* + * @desc To receive a channel request and send back an Immediate Assignment message + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_RRConnEst(GERAN_CellId_Type p_CellId) runs on GERAN_PTC + { + var RFN v_RFN; + var integer v_RR_RA; + var G_L2_DATAMESSAGE_IND v_ChanReq; + var B10_Type v_BCCH := f_GERAN_BCCHFreq_Get(p_CellId); + var B3_Type v_BCC := f_GERAN_BCC_Get(p_CellId); + + //Receive CHANNEL REQUEST + alt { + [] G_L2.receive(car_G_L2_ACCESS_IND(p_CellId, + tsc_PhyCh0, + tsc_RACH, + ?, + ?, + cr_G_ChannelReq_Any)) + -> value v_ChanReq + { + v_RFN := v_ChanReq.access.rfn; + v_RR_RA := bit2int(v_ChanReq.access.burst.chReq.estCauRandomRef); + } + } + + //Send IMMEDIATE ASSIGNMENT + G_L2.send(cas_G_L2_UNITDATA_REQ(p_CellId, + tsc_PhyCh0, + tsc_AGCH, + 15, + cs_G_RFN_Omit, + cs_ImmAss(cs_ImmediateAssignment(v_BCCH, v_BCC, v_RR_RA, v_RFN, substr(oct2bit(f_GERAN_TA_Get(p_CellId)),1, 6))))); // @sic R5s120587 sic@ + } + + /* + * @desc Function is according to 51.010 cl. 10.1.3 steps 10 to 19 + * @param p_CellId + * @param p_ChannelType Logical channel of SDCCH UE is currently on + * @param p_SubChannel subchannel of SDCCH UE is currently on + * @return G_LogicChType Logical channel of TCH UE is now on N.B. As a full rate TCH is configured in this step, the SubChannel parameter is not used + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_EnterU10_MT_Step10_19(GERAN_CellId_Type p_CellId, + G_LogicChType p_ChannelType, + SubChannelNumber p_SubChannel) runs on GERAN_PTC return G_LogicChType + { + var G_LogicChType v_TCHType; + + G_L2.send(cas_G_L2_DATA_REQ(p_CellId, 0, tsc_PhyCh0, p_ChannelType, p_SubChannel, cs_G_RFN_Omit, cs_G_SetupMTCall(cs_BcapSpeechMT))); + G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, ?, ?, ?, ?, cr_G_CallConfirmed(?))); // @sic R5s120637 sic@ + + v_TCHType := f_GERAN_EnterU10_MT_Step12_19(p_CellId, p_ChannelType, p_SubChannel); + return v_TCHType; + } + + /* + * @desc Function is according to 51.010 cl. 10.1.3 steps 12 to 19 + * @param p_CellId + * @param p_ChannelType Logical channel of SDCCH UE is currently on + * @param p_SubChannel subchannel of SDCCH UE is currently on + * @return G_LogicChType Logical channel of TCH UE is now on N.B. As a full rate TCH is configured in this step, the SubChannel parameter is not used + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_EnterU10_MT_Step12_19(GERAN_CellId_Type p_CellId, + G_LogicChType p_ChannelType, + SubChannelNumber p_SubChannel) runs on GERAN_PTC return G_LogicChType + { + var G_LogicChType v_TCHType; + var SubChannelNumber v_TCHSubChannel; + var G_L2_DATAMESSAGE_IND v_EstInd, v_Connect; + var TI v_Ti_R, v_Ti_S;// Transaction Identifier. r = value used to receive CC PDU. s = value used to send CC PDU. + var template (value) L2DataReqType v_AssignmentCmd := cs_G_AssignmentCommand(cs_G_ChModeSpeechFROrHRV1, + cs_G_ChannelDescr('00001'B, tsc_TN1, f_GERAN_TCHFreq_Get(p_CellId), px_TSC), + omit, + omit, + omit, + omit, + cs_CipherModeSettingGSM); + + G_L2.send(cas_G_L2_DATA_REQ(p_CellId, 0, tsc_PhyCh0, p_ChannelType, p_SubChannel, cs_G_RFN_Omit, v_AssignmentCmd)); + G_L2.receive(car_G_L2_Estab_IND(p_CellId, ?, ?, ?, omit)) -> value v_EstInd; // receive establish indication first + + v_TCHType := v_EstInd.sabm.g_LogicChType; + v_TCHSubChannel := v_EstInd.sabm.subChannel; + + alt { + [] G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, tsc_TchCh, ?, ?, ?, cr_G_AssignmentComplete)) {} + [] G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, ?, ?, ?, ?, cr_G_AssignmentFailure)) { + f_GERAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "Assignment Failed"); + } + } + alt { + [] G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, ?,?, ?, ?, cr_G_Connect(cr_TI_Any))) + -> value v_Connect{} + [] G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, ?,?, ?, ?, cr_G_Alerting(?))) { + f_UT_AnswerCall(UT); + G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, ?,?, ?, ?, cr_G_Connect(cr_TI_Any))) + -> value v_Connect; + } + } + + // release old channel + G_L2.send(cas_G_L2_Release_REQ(p_CellId, tsc_PhyCh0, p_ChannelType, p_SubChannel)); + G_L2.receive(car_G_L2_Release_CNF); + + v_Ti_R := v_Connect.l3.msg.connectul.ti; + v_Ti_S := v_Ti_R; + v_Ti_S.tiFlag := v_Ti_R.tiFlag xor4b '1'B; // @sic R5s120637 sic@ + G_L2.send(cas_G_L2_DATA_REQ(p_CellId, 0, tsc_TchCh, v_TCHType, v_TCHSubChannel, cs_G_RFN_Omit, cs_G_ConnectAck(v_Ti_S))); + + return v_TCHType; + } + + //---------------------------------------------------------------------------- + /* + * @desc To get the UE into Call Active, U10 state on a TCH + * @param p_CellId + * @param p_TCHPwrLvl (default value: tsc_GERAN_ServingCell) + * @return G_LogicChType Logical channel of TCH UE is now on N.B. As a full rate TCH is configured in this step, the SubChannel parameter is not used + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_EnterU10_MT(GERAN_CellId_Type p_CellId, + integer p_TCHPwrLvl := tsc_GERAN_ServingCell) runs on GERAN_PTC return G_LogicChType + { + var ControlChDescr v_CtrlCh := f_GERAN_ControlChDesc_Get(p_CellId); + var integer k := f_PagingGroupCalculate(px_IMSI_Def, v_CtrlCh.cCCH_CONF, + (3 - bit2int(v_CtrlCh.bS_AG_BLKS_RES))* (bit2int(v_CtrlCh.bS_PA_MFRMS)+2)); // @sic R5s120106, R5s120357 sic@ + var G_L2_DATAMESSAGE_IND v_PagRsp; + var G_LogicChType v_ChannelType, v_TCHType; + var SubChannelNumber v_SubChannel; + timer t_Wait5s := 5.0; // simple timer to wait for a Suspension Req + + f_GERAN_CreateTCH(p_CellId); // Create the physical channel first + f_GERAN_SetChPwrLevel(p_CellId, tsc_TchCh, p_TCHPwrLvl); // @sic R5s120502 sic@ + + G_L2.send(cas_G_Paging_REQ(p_CellId, k, cs_G_PagingRequest1_Def(cs_MobileIdTMSIorPTMSI(omit, px_TMSI_Def)))); + + f_GERAN_RRConnEst(p_CellId); + + //Receive PAGING RESPONSE + alt { + [] G_L2.receive(car_G_L2_Estab_IND(p_CellId, ?, ?, ?, cr_G_PagRsp(?, cr_MobileIdTMSI_lv(px_TMSI_Def)))) + -> value v_PagRsp + { + v_ChannelType := v_PagRsp.sabm.g_LogicChType; + v_SubChannel := v_PagRsp.sabm.subChannel; + } + } + + //Receive ClassmarkChange + G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, tsc_PhyCh0, ?, ?, ?, cr_G_ClassmarkChangeAny)); + + alt { // if UTRAN Classmark Change arrives first + [pc_UTRA] G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, tsc_PhyCh0, ?, ?, ?, cr_G_UtranClassmarkChange)) // @sic R5s130260 sic@ + { + t_Wait5s.start; + alt { // Wait a while to see if a GPRS Suspension Req is also sent + [] G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, tsc_PhyCh0, ?, ?, ?, cr_GPRS_SuspensionReq(?, cr_RAI(omit), ?))) + { + t_Wait5s.stop; + } + [] t_Wait5s.timeout {} + } + } + [] G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, tsc_PhyCh0, ?, ?, ?, cr_GPRS_SuspensionReq(?, cr_RAI(omit), ?))) + { + if (pc_UTRA) { // @sic R5s130260 sic@ + G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, tsc_PhyCh0, ?, ?, ?, cr_G_UtranClassmarkChange)); + } + } + } + + f_GERAN_MM_Authentication(p_CellId, v_ChannelType, v_SubChannel); + f_GERAN_Ciphering_Mode_Setting(p_CellId, tsc_PhyCh0, v_ChannelType, v_SubChannel); + + // From sending Setup all the way to Connect Acknowledge + v_TCHType := f_GERAN_EnterU10_MT_Step10_19(p_CellId, v_ChannelType, v_SubChannel); + + return v_TCHType; + } + + //---------------------------------------------------------------------------- + /* + * @desc To get the UE into Call Active, U10 state on a TCH + * @param p_CellId + * @return G_LogicChType Logical channel of TCH UE is now on N.B. As a full rate TCH is configured in this step, the SubChannel parameter is not used + * @status + */ + function f_GERAN_EnterU10_MO_WithoutRRConnEst(GERAN_CellId_Type p_CellId) runs on GERAN_PTC return G_LogicChType + { + var G_L2_DATAMESSAGE_IND v_ServReq; + var SubChannelNumber v_SubChannel; + var G_LogicChType v_ChannelType; + + timer t_Wait5s := 5.0; // simple timer to wait for a Suspension Req + + //Receive CM Service Request + G_L2.receive(car_G_L2_Estab_IND(geran_Cell24, ?, ?, ?, cr_G_CMServiceRequest(?))) -> value v_ServReq; + v_ChannelType := v_ServReq.sabm.g_LogicChType; + v_SubChannel := v_ServReq.sabm.subChannel; + + //Receive ClassmarkChange + G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, tsc_PhyCh0, ?, ?, ?, cr_G_ClassmarkChangeAny)); + + alt { // if UTRAN Classmark Change arrives first + [pc_UTRA] G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, tsc_PhyCh0, ?, ?, ?, cr_G_UtranClassmarkChange)) // @sic R5s130260 sic@ + { + t_Wait5s.start; + alt { // Wait a while to see if a GPRS Suspension Req is also sent + [] G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, tsc_PhyCh0, ?, ?, ?, cr_GPRS_SuspensionReq(?, cr_RAI(omit), ?))) + { + t_Wait5s.stop; + } + [] t_Wait5s.timeout {} + } + } + [] G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, tsc_PhyCh0, ?, ?, ?, cr_GPRS_SuspensionReq(?, cr_RAI(omit), ?))) + { + if (pc_UTRA) { // @sic R5s130260 sic@ + G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, tsc_PhyCh0, ?, ?, ?, cr_G_UtranClassmarkChange)); + } + } + } + + return f_GERAN_EnterU10_MO_Steps5_19(p_CellId, v_ChannelType, v_SubChannel); + } + + //---------------------------------------------------------------------------- + /* + * @desc To get the UE into Call Active, U10 state, steps 5 to 19 of 51.010, 10.2.3 + * @param p_CellId + * @param p_ChannelType Logical channel of SDCCH UE is currently on + * @param p_SubChannel subchannel of SDCCH UE is currently on + * @return G_LogicChType Logical channel of TCH UE is now on N.B. As a full rate TCH is configured in this step, the SubChannel parameter is not used + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_EnterU10_MO_Steps5_19(GERAN_CellId_Type p_CellId, + G_LogicChType p_ChannelType, + SubChannelNumber p_SubChannel) runs on GERAN_PTC return G_LogicChType + { + var G_L2_DATAMESSAGE_IND v_SetUp; + var TI v_Ti_R; //Receiving Transaction Identifier + + //Step 5-6 + //AUTHENTICATION REQUEST and AUTHENTICATION RESPONSE + f_GERAN_MM_Authentication(p_CellId, p_ChannelType, p_SubChannel); + + //Step 7-9 + //CIPHERING MODE COMMAND & CIPHERING MODE COMPLETE + f_GERAN_Ciphering_Mode_Setting(p_CellId, tsc_PhyCh0, p_ChannelType, p_SubChannel); + + //Step 10 + //Receive Set Up message + G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, ?, ?, ?, ?, cr_G_SetupUL_MO)) -> value v_SetUp; + v_Ti_R := v_SetUp.l3.msg.setupul.ti; + + return f_GERAN_EnterU10_MO_Steps11_19 (p_CellId, p_ChannelType, p_SubChannel, v_Ti_R); // @sic R5-142954 sic@ + } + + /* + * @desc To get the UE into Call Active, U10 state, steps 5 to 19 of 51.010, 10.2.3 + * @param p_CellId + * @param p_ChannelType Logical channel of SDCCH UE is currently on + * @param p_SubChannel subchannel of SDCCH UE is currently on + * @param p_Ti_R + * @return G_LogicChType Logical channel of TCH UE is now on N.B. As a full rate TCH is configured in this step, the SubChannel parameter is not used + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_EnterU10_MO_Steps11_19(GERAN_CellId_Type p_CellId, + G_LogicChType p_ChannelType, + SubChannelNumber p_SubChannel, + TI p_Ti_R) runs on GERAN_PTC return G_LogicChType + { + var G_L2_DATAMESSAGE_IND v_EstInd; + var TI v_Ti_S := p_Ti_R; //Sending Transaction Identifier + var G_LogicChType v_TCHType; + var SubChannelNumber v_TCHSubChannel; + var template (value) L2DataReqType v_AssignmentCmd := cs_G_AssignmentCommand(cs_G_ChModeSpeechFROrHRV1, + cs_G_ChannelDescr('00001'B, tsc_TN1, f_GERAN_TCHFreq_Get(p_CellId), px_TSC), + omit, + omit, + omit, + omit, + cs_CipherModeSettingGSM); + v_Ti_S.tiFlag := '1'B; + + //Step 11 + //Send call proceeding + G_L2.send(cas_G_L2_DATA_REQ(p_CellId, 0, tsc_PhyCh0, p_ChannelType, p_SubChannel, cs_G_RFN_Omit, cs_G_CallProc(v_Ti_S))); + + //Step 12 + //Send Alert message + G_L2.send(cas_G_L2_DATA_REQ(p_CellId, 0, tsc_PhyCh0, p_ChannelType, p_SubChannel, cs_G_RFN_Omit, cs_G_Alert(v_Ti_S))); + + //Step 14-15 + //Assignment of Traffic Channel + G_L2.send(cas_G_L2_DATA_REQ(p_CellId, 0, tsc_PhyCh0, p_ChannelType, p_SubChannel, cs_G_RFN_Omit, v_AssignmentCmd)); + G_L2.receive(car_G_L2_Estab_IND(p_CellId, ?, ?, ?, omit)) // receive establish indication first + -> value v_EstInd; + v_TCHType := v_EstInd.sabm.g_LogicChType; + v_TCHSubChannel := v_EstInd.sabm.subChannel; + alt { + [] G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, tsc_TchCh,?, ?, ?, cr_G_AssignmentComplete)) {} + [] G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, ?, ?, ?, ?, cr_G_AssignmentFailure)) { + f_GERAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "Assignment Failed"); + } + } + + //Step 16 + //Send Connect message + G_L2.send(cas_G_L2_DATA_REQ(p_CellId, 0, tsc_TchCh, v_TCHType, v_TCHSubChannel, cs_G_RFN_Omit, cs_G_Connect(v_Ti_S))); // @sic R5s120600 sic@ + + //Step 17 + //Receive CONNECT ACKNOWLEDGE + G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, ?, ?, ?, ?, cr_G_ConnAck(cr_TI_Any))); + return v_TCHType; + } + + /* @desc To get the UE into U10 state, MO + * Function is according to 51.010 cl. 10.2.3 + * @param p_CellId + * @return G_LogicChType Logical channel of TCH UE is now on N.B. As a full rate TCH is configured in this step, the SubChannel parameter is not used + * @status + */ + function f_GERAN_EnterU10_MO(GERAN_CellId_Type p_CellId) runs on GERAN_PTC return G_LogicChType + { + f_GERAN_CreateTCH(p_CellId, dontWaitForCNF); // Create the physical channel first + + f_GERAN_RRConnEst(p_CellId); + + return f_GERAN_EnterU10_MO_WithoutRRConnEst(p_CellId); + } + + //---------------------------------------------------------------------------- + /* + * @desc To get the UE into Call Active, U10 state, steps 5 to 19 of 51.010, 10.2.3 + * @param p_CellId + * @return G_LogicChType Logical channel of TCH UE is now on N.B. As a full rate TCH is configured in this step, the SubChannel parameter is not used + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_EmgCallSetup(GERAN_CellId_Type p_CellId) runs on GERAN_PTC return G_LogicChType + { + var G_L2_DATAMESSAGE_IND v_ServReq; + var G_L2_DATAMESSAGE_IND v_SetUp; + var SubChannelNumber v_SubChannel; + var G_LogicChType v_ChannelType; + var G_LogicChType v_TchType; + var TI v_Ti_R; + var RFN v_RFN; + var integer v_RR_RA; + var G_L2_DATAMESSAGE_IND v_ChanReq; + var B10_Type v_BCCH := f_GERAN_BCCHFreq_Get(p_CellId); + var B3_Type v_BCC := f_GERAN_BCC_Get(p_CellId); + + timer t_Wait60s := 60.0; + timer t_Wait1s := 1.0; // simple timer to wait for a Suspension Req + + t_Wait60s.start; + //Receive CHANNEL REQUEST + alt { + [] G_L2.receive(car_G_L2_ACCESS_IND(p_CellId, + tsc_PhyCh0, + tsc_RACH, + ?, + ?, + cr_G_ChannelReq ('101?????'B))) // type emergency call + -> value v_ChanReq + { + t_Wait60s.stop; + v_RFN := v_ChanReq.access.rfn; + v_RR_RA := bit2int(v_ChanReq.access.burst.chReq.estCauRandomRef); + f_GERAN_PreliminaryPass(__FILE__, __LINE__, "Channel Request for Emergency Call Received"); + } + [] t_Wait60s.timeout + { + f_GERAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "No channel request received"); + } + } + + //Send IMMEDIATE ASSIGNMENT + G_L2.send(cas_G_L2_UNITDATA_REQ(p_CellId, + tsc_PhyCh0, + tsc_AGCH, + 15, + cs_G_RFN_Omit, + cs_ImmAss(cs_ImmediateAssignment(v_BCCH, v_BCC, v_RR_RA, v_RFN, substr(oct2bit(f_GERAN_TA_Get(p_CellId)), 1, 6))))); // @sic R5s120587 sic@ + + //Receive CM Service Request + G_L2.receive(car_G_L2_Estab_IND(geran_Cell24, ?, ?, ?, cr_G_CMServiceRequest(?))) -> value v_ServReq; + f_GERAN_PreliminaryPass(__FILE__, __LINE__, "CM Service Request Received"); + v_ChannelType := v_ServReq.sabm.g_LogicChType; + v_SubChannel := v_ServReq.sabm.subChannel; + + // !!!! Classmark Change messages are not included in the prose !!!! + //Receive ClassmarkChange + G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, tsc_PhyCh0, ?, ?, ?, cr_G_ClassmarkChangeAny)); + + alt { // if UTRAN Classmark Change arrives first + [pc_UTRA] G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, tsc_PhyCh0, ?, ?, ?, cr_G_UtranClassmarkChange)) + { + t_Wait1s.start; + alt { // Wait a while to see if a GPRS Suspension Req is also sent + [] G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, tsc_PhyCh0, ?, ?, ?, cr_GPRS_SuspensionReq(?, cr_RAI(omit), ?))) + { + t_Wait1s.stop; + } + [] t_Wait1s.timeout {} + } + } + [] G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, tsc_PhyCh0, ?, ?, ?, cr_GPRS_SuspensionReq(?, cr_RAI(omit), ?))) + { + if (pc_UTRA) { + G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, tsc_PhyCh0, ?, ?, ?, cr_G_UtranClassmarkChange)); + } + } + } + + //AUTHENTICATION REQUEST and AUTHENTICATION RESPONSE + f_GERAN_MM_Authentication(p_CellId, v_ChannelType, v_SubChannel); + + G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, ?, ?, ?, ?, cr_G_EmgSetup)) -> value v_SetUp; + v_Ti_R := v_SetUp.l3.msg.setupul.ti; + + v_TchType := f_GERAN_EnterU10_MO_Steps11_19 (p_CellId, v_ChannelType, v_SubChannel, v_Ti_R); + f_GERAN_PreliminaryPass(__FILE__, __LINE__, "Emergency Call Setup Received"); + + return v_TchType; + } + + //---------------------------------------------------------------------------- + /* + * @desc To TLLI (if required) + * @param p_CellId + * @param p_NewTLLI + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function fl_GERAN_TLLI_Update(GERAN_CellId_Type p_CellId, + TLLI p_NewTLLI) runs on GERAN_PTC + { + var TLLI v_TLLI := f_GERAN_TLLI_Get(p_CellId); // @sic R5s140584 sic@ + + if (p_NewTLLI != v_TLLI) { // if the TLLI hasn't changed, don't bother calling LLCAssignReq + // Assign the value received from the MS + f_LLC_TLLI_Assign(p_CellId, v_TLLI, p_NewTLLI, dontWaitForCNF); // don't wait for CNF to avoid race condition with incoming data (L3 message) + f_GERAN_OldTLLI_Set(p_CellId, v_TLLI); + f_GERAN_TLLI_Set(p_CellId, p_NewTLLI); + } + } + + /* + * @desc To trigger the UE to send Uplink Data + * PLEASE NOTE: This is the 1st function of 2 and MUST be followed by a_GERAN_Receive_UplinkData + * @param p_CellId + * @param p_Data - The amount of data to transmit + * @param p_Sapi - The LLC SAPI to transmit the data on (default value: tsc_LLCSapi_11) + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_Trigger_UplinkData(GERAN_CellId_Type p_CellId, + integer p_Data, + integer p_Sapi := tsc_LLCSapi_11) runs on GERAN_PTC + { + f_UT_GeranUplinkData(UT, int2str(p_Data), int2str(p_Sapi)); + f_GERAN_Receive_UplinkDataStart(p_CellId); + } + + /* + * @desc The UE sends Uplink Data + * PLEASE NOTE: This is the 1st function of 2 and MUST be followed by a_GERAN_Receive_UplinkData + * @param p_CellId + * @param p_ChanReq (default value: omit) + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_Receive_UplinkDataStart(GERAN_CellId_Type p_CellId, + template (omit) G_L2_DATAMESSAGE_IND p_ChanReq := omit) // @sic R5s130368 sic@ + runs on GERAN_PTC + { + var G_L2_DATAMESSAGE_IND v_ChanReq; + var G_CPHY_CONFIG_CNF v_G_CL1_ComingFN_CNF; + var G_RLC_DATAMESSAGE_IND v_G_RLC_ControlMsg_IND; + var RFN v_StartingTime; + var TLLI v_NewTLLI; + var B5_Type v_Gamma := f_GERAN_GAMMA_Get(p_CellId); + var B10_Type v_GPRSFreq := f_GERAN_GPRSFreq_Get(p_CellId); + var integer v_RR_RA; + var RFN v_RFN; + + if (isvalue(p_ChanReq)) { // @sic R5s130368 sic@ + v_ChanReq := valueof(p_ChanReq); // need to do this as parameter can be omitted + } else { + // @sic R5s120521 sic@ + G_L2.receive(car_G_L2_ACCESS_IND(p_CellId, tsc_PhyCh0, tsc_RACH, ?, ?, (cr_ChanReqOnePhase, cr_ChanReqTwoPhase))) -> value v_ChanReq; + } + // finish configuring the TBF + v_RFN := v_ChanReq.access.rfn; + v_RR_RA := bit2int(v_ChanReq.access.burst.chReq.estCauRandomRef); + if ((111 > v_RR_RA) or (v_RR_RA > 127)) {// establishment cause should be one or two phase access + f_GERAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "wrong establishment cause"); + } + + v_G_CL1_ComingFN_CNF := f_GERAN_CPHY_CONFIG_ComingFN(cas_G_CL1_ComingFN_REQ(p_CellId, tsc_PhyCh1, tsc_PACCH_F)); + v_StartingTime := v_G_CL1_ComingFN_CNF.comingFN; + + // Send IA + G_L2.send(cas_G_L2_UNITDATA_REQ(p_CellId, + tsc_PhyCh0, + tsc_AGCH, 15, + cs_G_RFN_Omit, + cs_ImmAss(cs_P_ImmediateAssignment('0'B, + v_GPRSFreq, + v_RR_RA, + v_RFN, + substr(oct2bit(f_GERAN_TA_Get(p_CellId)),1, 6), // @sic R5s120587 sic@ + cds_IARO_SingleBlkPUA(v_Gamma, + (v_StartingTime.t1_ & v_StartingTime.t3 & v_StartingTime.t2)))))); // @sic GP-110839 sic@ + + // Configure the Uplink TBF for Dynamic Allocation, USF 0 on timeslot 4 + f_GERAN_RLC_CONFIG_Common(cas_ActivateTBF_UplinkDyn(p_CellId, 1), dontWaitForCNF); // don't wait for CNF to avoid race condition with incoming car_G_RLC_ControlMsg_IND + + // Now wait for the PRR + alt { + [] G_RLC.receive(car_G_RLC_ControlMsg_IND(p_CellId, tsc_PhyCh1, cr_PacketResourceRequestAny)) + -> value v_G_RLC_ControlMsg_IND + { + v_NewTLLI := v_G_RLC_ControlMsg_IND.ctrl.msg.pktResReq.tlli; + fl_GERAN_TLLI_Update(p_CellId, v_NewTLLI); // @sic R5s130341 sic@ + G_RLC.send(cas_G_RLC_ControlMsg_REQ_PACCH(p_CellId, tsc_PhyCh1, 1, tsc_UplinkTFI, cds_PacketUplinkAssignment_TwoPhase(v_GPRSFreq, + substr(oct2bit(f_GERAN_TA_Get(p_CellId)),1, 6), // @sic R5s120587 sic@ + v_NewTLLI))); + } + } + } + + /* @desc To receive Uplink Data from the UE + * PLEASE NOTE: This is the 2nd function of 2 and MUST be preceded by f_GERAN_Trigger_UplinkData + * @param p_CellId + * @param p_EndOfTBF (by reference) + * INOUT parameter, whose value will be updated during this altstep + */ + altstep a_GERAN_Receive_UplinkData(GERAN_CellId_Type p_CellId, + inout boolean p_EndOfTBF) runs on GERAN_PTC + { + timer t_WaitForMoreData := 0.1; + + // Receive the message + [] G_LLC.receive(car_G_LLC_UnitData_IND(cr_PacketData(?))) + { // ok, received another data block, so carry on + repeat; + } + [] G_RLC.receive(car_G_RLC_ControlMsg_IND(p_CellId, tsc_PhyCh1, cr_PacketControlAcknowledgement)) // RACE CONDITION + { + t_WaitForMoreData.start; + alt { + [] G_LLC.receive(car_G_LLC_UnitData_IND(cr_PacketData(?))) + { + t_WaitForMoreData.stop; + } + [] t_WaitForMoreData.timeout {} + } + p_EndOfTBF := true; + } + } + + /* + * @desc The UE sends an N-PDU + * @param p_CellId + * @param p_ChanReq (default value: omit) + * @param p_SNDCP_Ind (default value: ?) + * @return G_SN_DATAMESSAGE_IND + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_Receive_UplinkSNDCP(GERAN_CellId_Type p_CellId, + template (omit) G_L2_DATAMESSAGE_IND p_ChanReq := omit, + template (present) G_SN_DATAMESSAGE_IND p_SNDCP_Ind := ?) runs on GERAN_PTC return G_SN_DATAMESSAGE_IND + { + var G_SN_DATAMESSAGE_IND v_RxdMsg; + + f_GERAN_Receive_UplinkDataStart(p_CellId, p_ChanReq); + + // Receive the message + interleave { + [] G_SN.receive(p_SNDCP_Ind) -> value v_RxdMsg + { } + [] G_RLC.receive(car_G_RLC_ControlMsg_IND(p_CellId, tsc_PhyCh1, cr_PacketControlAcknowledgement)) // RACE CONDITION at the end of the TBF + {} + } + return v_RxdMsg; + } + + /* @desc To receive PS Handover Access and PS Physical Information messages after HO to GERAN + * @param p_CellId + * @param p_StepNo + * @param p_XID (default : false) - set to true if the UE may send an XID + * @status + */ + function f_GERAN_PSHOAccessAndPhysicalInformation(GERAN_CellId_Type p_CellId, + charstring p_StepNo := "", + boolean p_XID := false) runs on GERAN_PTC + { + var integer v_NoOfHOAccess := 0; + timer t_Wait5S := 5.0; + + // Configure the Uplink TBF for Dynamic Allocation, USF 0 on timeslot 4 + f_GERAN_RLC_CONFIG_Common(cas_ActivateTBF_UplinkDyn(p_CellId, 1), dontWaitForCNF); // don't wait for CNF to avoid race condition with incoming car_G_RLC_ControlMsg_IND + + //Receive PS Handover Access + G_RLC.receive(car_G_RLC_ControlMsg_IND(p_CellId, tsc_PhyCh1, cr_G_PSHandoverAccess)); + v_NoOfHOAccess := v_NoOfHOAccess + 1; + if (p_StepNo != "") { + f_GERAN_PreliminaryPass(__FILE__, __LINE__, p_StepNo); + } + + //Transmit Physical information + G_RLC.send(cas_G_RLC_ControlMsg_REQ_PACCH(p_CellId, tsc_PhyCh1, 1, tsc_UplinkTFI, + cs_G_PSPhysicalInfo(cs_GlobalTFIul, '00000000'B))); + + t_Wait5S.start; + do { // need to swallow other 3 bursts + alt { + [] t_Wait5S.timeout {} + [p_XID] G_LLC.receive(car_G_LLC_XID_IndAny) {} + [] G_RLC.receive(car_G_RLC_ControlMsg_IND(p_CellId, tsc_PhyCh1, cr_G_PSHandoverAccess)) { + v_NoOfHOAccess := v_NoOfHOAccess + 1; + } + } + } while (v_NoOfHOAccess < 4 or t_Wait5S.running); + } + + /* @desc To receive CS Handover Access and Physical Information messages after HO to GERAN + * @param p_CellId + * @param p_StepNo (default value: "") + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_CSHOAccessAndPhysicalInformation(GERAN_CellId_Type p_CellId, charstring p_StepNo := "") runs on GERAN_PTC + { + var integer v_NoOfHOAccess := 0; + var boolean v_RxdComplete := false; + + // Configure SS to hold Physical Information until 4 access bursts are received + f_GERAN_CPHY_CONFIG_Common(cas_G_CL2_HoldPhyInfo_REQ(p_CellId)); + //Transmit Physical information + G_L2.send(cas_G_L2_UNITDATA_REQ(p_CellId, + tsc_TchCh, + tsc_FACCH_F, + 0, + cs_G_RFN_Omit, + cs_CS_PhysicalInformation)); + + //Receive Handover Access + G_L2.receive(car_G_L2_ACCESS_IND(p_CellId, tsc_TchCh, ?, ?, ?, cr_G_CS_HandoverAccess)); + v_NoOfHOAccess := v_NoOfHOAccess + 1; + + do { // need to swallow other 3 bursts + alt { + [] G_L2.receive(car_G_L2_ACCESS_IND(p_CellId, tsc_TchCh, ?, ?, ?, cr_G_CS_HandoverAccess)) { + v_NoOfHOAccess := v_NoOfHOAccess + 1; + } + [] G_L2.receive(car_G_L2_Estab_IND(geran_Cell24, ?, ?, ?, omit)) + { // Keep going until UE sends Handover Complete + } + [] G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, tsc_TchCh, ?, ?, ?, cr_HANDOVERCOMPLETE_Any)) { + v_RxdComplete := true; + if (p_StepNo != "") { + f_GERAN_PreliminaryPass(__FILE__, __LINE__, p_StepNo); + } + } + } + } while (v_NoOfHOAccess < 4 or not v_RxdComplete); + } + + /* + * @desc Sends various combinations of TMSI reallocation and Connect messages at end of SRVCC tests + * @param p_CellId + * @param p_DoConnect (default value: true) + * @param p_SendAlert (default value: false) + * @return G_LogicChType Logical channel of TCH UE is now on N.B. As a full rate TCH is configured in this step, the SubChannel parameter is not used + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_TMSI_Relocation_AndConnect(GERAN_CellId_Type p_CellId, + boolean p_DoConnect := true, + boolean p_SendAlert := false) runs on GERAN_PTC return G_LogicChType + { + var octetstring v_PLMN := f_GERAN_PLMN_Get(p_CellId); + var O2_Type v_LAC := f_GERAN_LAC_Get(p_CellId); + var G_LogicChType v_ChannelType; + var SubChannelNumber v_SubChannel; + var G_L2_DATAMESSAGE_IND v_SusReq; + var template (value) TI v_Ti_S := cs_TI_MT; // @sic R5s140697 sic@ + var template (present) TI v_Ti_R := v_Ti_S; + v_Ti_R.tiFlag := '1'B; + + //Receive GPRS suspension request + G_L2.receive(car_G_L2_DATA_IND(p_CellId, + ?, + tsc_TchCh, // @sic R5s140158 sic@ + ?, + ?, + ?, + cr_GPRS_SuspensionReq(?, cr_RAI(omit), ?)))-> value v_SusReq; + v_ChannelType := v_SusReq.l3.g_LogicChType; + v_SubChannel := v_SusReq.l3.subChannel; + + G_L2.send(cas_G_L2_DATA_REQ(p_CellId, 0, tsc_TchCh, v_ChannelType, v_SubChannel, cs_G_RFN_Omit, cs_G_TMSI_ReallocCmd(v_PLMN, v_LAC, cs_MobileIdTMSIorPTMSI(omit, px_TMSI_Def)))); + + G_L2.receive(car_G_L2_DATA_IND(p_CellId, ?, ?, ?, ?, ?, cr_G_TMSI_ReallocCmpl)); + + if (p_DoConnect) { + //Tell EUTRA PTC that test case is over + f_IRAT_SendCoOrd (EUTRA, cms_IRAT_Trigger); + + if (p_SendAlert) { // for bSRVCC + G_L2.send(cas_G_L2_DATA_REQ(p_CellId, 0, tsc_TchCh, v_ChannelType, v_SubChannel, cs_G_RFN_Omit, cs_G_Alert(v_Ti_S))); + } + + G_L2.send(cas_G_L2_DATA_REQ(p_CellId, 0, tsc_TchCh, v_ChannelType, v_SubChannel, cs_G_RFN_Omit, cs_G_Connect(v_Ti_S))); + G_L2.receive(car_G_L2_DATA_IND(p_CellId, 0, tsc_TchCh, v_ChannelType, v_SubChannel, ?, cr_G_ConnAck(v_Ti_R))); + } + return v_ChannelType; + } + /* + * @desc Steps 3 to 32 of procedure "CS fallback to GERAN with redirection or CCO / MO call (DTM not supported)" + * Function is according to 36.508 cl. 6.4.3.8.2 steps 3 to 32 + * @param p_CellId + * @param p_NSAPI (default value: 0 = SNDCP not required) + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_CSFB_Redirection_CCO_M0_Steps3_32 (GERAN_CellId_Type p_CellId, integer p_NSAPI := 0) runs on GERAN_PTC + { + var G_L2_DATAMESSAGE_IND v_G_L2_DATAMESSAGE_IND; + var G_LogicChType v_ChannelType, v_TchType; + var SubChannelNumber v_SubChannel; + var default v_MyDefaultVar := null; + + v_MyDefaultVar := activate (a_Receive_ParallelGPRS_Suspension (p_CellId)); // @sic R5-123629 sic@ + + //Receive CM Service Request + G_L2.receive (car_G_L2_Estab_IND (p_CellId, + ?, + ?, + ?, + cr_G_CMServiceRequest (?))) -> value v_G_L2_DATAMESSAGE_IND; + v_ChannelType := v_G_L2_DATAMESSAGE_IND.sabm.g_LogicChType; + v_SubChannel := v_G_L2_DATAMESSAGE_IND.sabm.subChannel; + f_GERAN_PreliminaryPass (__FILE__, __LINE__, "CS fallback to GERAN with redirection or CCO / MO call (DTM not supported) Step 4"); + + // @sic R5s120339 sic@ + G_L2.receive (car_G_L2_DATA_IND (p_CellId, ?, tsc_PhyCh0, ?, ?, ?, cr_G_ClassmarkChangeAny)); + if (pc_UTRA) { // @sic R5-123629 sic@ + G_L2.receive (car_G_L2_DATA_IND (p_CellId, ?, tsc_PhyCh0, ?, ?, ?, cr_G_UtranClassmarkChange)); + } + + v_TchType := f_GERAN_EnterU10_MO_Steps5_19(p_CellId, v_ChannelType, v_SubChannel); // @sic R5s120600 sic@ + + deactivate (v_MyDefaultVar); // @sic R5-123629 sic@ + + //Steps 20-22: Disconnect the MT call with MT procedure + f_GERAN_CC_Disconnect(p_CellId, v_TchType, -, cs_TI_MO); // @sic R5s120600 sic@ + + //Release channel + f_G_ChannelRelease (p_CellId, tsc_TchCh, v_TchType, 15, cs_G_ResumeGPRS); // @sic R5s120600, R5s130436 sic@ + + //Perform RAU + f_GERAN_508CheckCampOnNewGeranCell(p_CellId, -, p_NSAPI); // @sic R5s130833 sic@ + } + + /* + * @desc CS fallback to GERAN with redirection or CCO / MO call (DTM not supported) + * Function is according to 36.508 cl. 6.4.3.8.2 + * @param p_CellId + * @param p_NSAPI (default value: 0 = SNDCP not required) + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_CSFB_Redirection_CCO_M0 (GERAN_CellId_Type p_CellId, integer p_NSAPI := 0) runs on GERAN_PTC + { + //Receive Channel Request & Send Immediate assignment + f_GERAN_RRConnEst(p_CellId); + + // @sic R5s120768 sic@ + f_IRAT_SendCoOrd (EUTRA, cms_IRAT_Trigger); + + //RSteps 3 to 32 + f_GERAN_CSFB_Redirection_CCO_M0_Steps3_32(p_CellId, p_NSAPI); // @sic R5s130833 sic@ + } + + /* + * @desc To receive the GPRS Suspension Req in parallel with the CS Fallback procedures + * @param p_CellId + * @status APPROVED (LTE_IRAT) + */ + altstep a_Receive_ParallelGPRS_Suspension (GERAN_CellId_Type p_CellId) runs on GERAN_PTC + { // @sic R5-123629 sic@ + + [] G_L2.receive (car_G_L2_DATA_IND (p_CellId, + ?, + tsc_PhyCh0, + ?, + ?, + ?, + cr_GPRS_SuspensionReq(?, cr_RAI (omit)))) + { + repeat; + } + + } +} // End of module + diff --git a/LTE_A_IWD_14wk37/Common/GERAN/GERAN_Component.ttcn b/LTE_A_IWD_14wk37/Common/GERAN/GERAN_Component.ttcn new file mode 100644 index 0000000..0922a1f --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/GERAN/GERAN_Component.ttcn @@ -0,0 +1,1213 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-08-09 21:19:23 +0200 (Sat, 09 Aug 2014) $ +// $Rev: 11868 $ +/******************************************************************************/ + +module GERAN_Component { + import from UpperTesterPtcToMtcDefs all; // all messages being defined to communicate with the upper tester; port definitions + import from CommonIratDefs all; // all messages being defined to communicate Geran/Utran components; port definitions + import from CommonDefs all; + import from GERAN_TypeDefs all; + import from NAS_24008TypeDefs all; + import from NAS_CommonTypeDefs all; + import from NAS_AuthenticationCommon all; + import from GERAN_Templates all; + import from IP_PTC_CtrlMsgs all; + import from Parameters all; + + //============================================================================ + + const integer tsc_GERAN_NumberOfCells := 3; /* @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT, UTRAN) */ + + type record GERAN_CellInfo_Type { /* @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT, UTRAN) */ + GERAN_CommonCellInfo_Type info, + GERAN_CellInfo_Freq_Type freq, + GERAN_SystemInformation_Type sysInfo + }; + + type record length (tsc_GERAN_NumberOfCells) of GERAN_CellInfo_Type GERAN_CellArray_Type; /* @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT, UTRAN) */ + + type record GERAN_CellInfo_Freq_Type { /* @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT, UTRAN) */ + B10_Type bCCH_Freq, // BCCH/CCCH carrier frequency (ARFCN) for current cell. None hopping + B10_Type gPRSCh_Freq optional, // ARFCN of the GPRS channel, if none hopping + B10_Type tch_Freq, // ARFCN of the TCH, if it needs to be configured + CellChDescr cellAllocation, // cell allocation, 3GPP TS 44.018 clause 10.5.2.1b with IEI omitted + NeighCellDescr neighBCCHFreqList, // neighbour cell BCCH/CCCH ARFCN's, 3GPP TS 44.018 clause 10.5.2.22 with IEI omitted. + CoOrd_GERANNeighCell_Type arfcnList, // List of the 8 neighbour cells to send to LTE + NeighCellDescr extNeighBCCHFreqList optional, // extended neighbour cell BCCH/CCCH ARFCN's in SI2bis, 3GPP TS 44.018 clause 10.5.2.22 with IEI omitted. + B1_Type bandIndicator // ARFCN band. 0= DCS1800 band; 1= PCS1900 band. + }; + + type record GERAN_SystemInformation_Type { /* @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT, UTRAN) */ + SYSTEMINFORMATIONTYPE1 si1, + SYSTEMINFORMATIONTYPE2 si2, + SYSTEMINFORMATIONTYPE2bis si2bis optional, + SYSTEMINFORMATIONTYPE2quater si2quater_1, + SYSTEMINFORMATIONTYPE2quater si2quater_2 optional, // only need 2nd instance if UTRAN present too + SYSTEMINFORMATIONTYPE2quater si2quater_3 optional, // only need 3rd instance if UTRAN present too @sic R5s120021 sic@ + SYSTEMINFORMATIONTYPE2quater si2quater_4 optional, // only need 4th instance if UTRAN present too @sic R5s120129 sic@ + SYSTEMINFORMATIONTYPE3 si3, + SYSTEMINFORMATIONTYPE4 si4, + SYSTEMINFORMATIONTYPE5 si5, + SYSTEMINFORMATIONTYPE5bis si5bis optional, // @sic R5s120615 sic@ + SYSTEMINFORMATIONTYPE6 si6, + SYSTEMINFORMATIONTYPE13 si13, + SYSTEMINFORMATIONTYPE15 si15 optional //Only for 710 and 810 + }; + + type record GERAN_CommonCellInfo_Type { /* @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT, UTRAN) */ + B5_Type gamma optional, + integer downlinkPowerLevel, // Downlink transmission power level in dB?Vemf(). Default = 63 + O2_Type cellIdentity, // cell identity, 3GPP TS 24.008 clause 10.5.1.1. Default = '0001'O + hexstring mcc length (3), // mobile country code, 3 digits. 3GPP TS 24.008 clause 10.5.1.3. Default = 001 (decimal) + hexstring mnc length (3), // mobile network code, 2 BCD digits. 3GPP TS 24.008 clause 10.5.1.3. Default = 01 (decimal) + octetstring plmn length (3), // plmn + O2_Type lac, // location area code. 3GPP TS 24.008 clause 10.5.1.3. Default = '0001'O + O1_Type rac, // routing area code. Default = '05'O + B2_Type nmo, // network mode of operation. Default = '00'B + B3_Type ncc, // PLMN colour code, 3GPP TS 23.003 clause 4.3.2. Default = '001'B + B3_Type bcc, // BS colour code, 3GPP TS 23.003 clause 4.3.2. Default = '101'B + B2_Type dTX, // Uplink discontinuous transmission indecation, 3GPP TS 44.018 clause 10.5.2.3. Dfault = MS must not use + B1_Type dtx8, // Uplink discontinuous transmission indecation, 3GPP TS 44.018 clause 10.5.2.3a. + B2_Type dtx65, // Uplink discontinuous transmission indecation, 3GPP TS 44.018 clause 10.5.2.3a. + DRXparameter splitPGcycle, // 3GPP TS 24.008 clause 10.5.5.6. + O1_Type timingAdvance, // timing advance value, 3GPP TS 44.018 clause 10.5.2.40 + B3_Type tSC, // training sequence code for dedicated channels. TSC of broadcast channel and common channel shall be equal to BCC. + ControlChDescr controlChDesr, // Control channel description 44.018, clause 10.5.2.11 + RACHControlParam rachCtrlParams, // RACH control Parameters 44.018 clause 10.5.2.29 + CellSelParam cellSelParams, // Cell Selection Parameters 44.018 clause 10.5.2.4 + B4_Type radioLinkTimeout, // RADIO-LINK-TIMEOUT, 3GPP TS 44.018 clause 10.5.2.3. Default = 8 + O1_Type nccPermitted, // NCC permitted. 3GPP TS 44.018 clause 10.5.2.27 + B1_Type dN_Ind, // dynamic ARFCN mapping indecator. 3GPP TS 44.018 clause 10.5.2.3 + TLLI tlli, + TLLI oldTlli + // B1_Type pwrc, // power control indication, default ='0' PWRC is not set. + // CellConfiguration cellConfiguration // current configuration of the cell, used to control the behaviour of postamble + }; + + type record GERAN_SecurityInfo_Type { /* @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT, UTRAN) */ + Common_AuthenticationParams_Type authPS, + Common_AuthenticationParams_Type authCS, + B64_Type cipherKey, // cipher key + CipherModeSetting cipherMode, // ciphering algorithm and cipher starting flag, 3GPP TS 44.018 clause 10.5.2.9 + GPRS_CipherAlg gprsCipherAlg, + boolean CSinOtherRAT // set to true if UE has done LAU or combined RAU + }; + + type record GERAN_MsgReceivedInDefault_Type { /* @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT, UTRAN) */ + EstablishIndType locationUpdatingRequest optional, + LLCUnitDataIndType routingAreaUpdateRequest optional, + G_LLC_XID_IND xid optional // @sic R5s140286 sic@ + }; + + //============================================================================ + + type enumerated GERAN_Default_Enum_Type {StandardDefault}; /* refers to common default alt_GERAN_Standard_Default; @status APPROVED (LTE_A, LTE_IRAT) */ + + type record GERAN_Ctrl_Type { /* @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT, UTRAN) */ + default Default, /* default behaviour being activated on GERAN */ + boolean TestBody /* true: => fail may be assigend + false: => inconc is assigned instead of fail */ + }; + + type record GERAN_Global_Type { /* @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT, UTRAN) */ + GERAN_Ctrl_Type Ctrl, + GERAN_SecurityInfo_Type Security, + GERAN_CellArray_Type CellArray, + GERAN_MsgReceivedInDefault_Type MsgInDefault, + boolean SNDCPConfigured // @sic R5s130777 sic@ + }; + + type component GERAN_PTC { /* @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT, UTRAN) */ + var GERAN_Global_Type vc_GERAN_Global; + + port UT_PTC_MTC_PORT UT; + port IRAT_CO_ORD_PORT EUTRA; + port IRAT_CO_ORD_PORT UTRAN; + port GERAN_CL1_PORT G_CL1; + port GERAN_CLLC_PORT G_CLLC; + port GERAN_CRLC_PORT G_CRLC; + port GERAN_CSNDCP_PORT G_CSNDCP; // @sic R5s120861 sic@ + port GERAN_L2_PORT G_L2; + port GERAN_LLC_PORT G_LLC; + port GERAN_RLC_PORT G_RLC; + port GERAN_SNDCP_PORT G_SN; // @sic R5s120861 sic@ + port IP_RAT_CTRL_PORT IP; /* @sic R5-133612 sic@ */ + }; + + type component GERAN_SYSTEM { /* @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT, UTRAN) */ + port GERAN_CL1_PORT S_G_CL1; + port GERAN_CLLC_PORT S_G_CLLC; + port GERAN_CRLC_PORT S_G_CRLC; + port GERAN_L2_PORT S_G_L2; + port GERAN_LLC_PORT S_G_LLC; + port GERAN_RLC_PORT S_G_RLC; + port GERAN_CSNDCP_PORT S_G_CSNDCP; // @sic R5s120903 sic@ + port GERAN_SNDCP_PORT S_G_SN; // @sic R5s120903 sic@ + + }; + + //============================================================================ + /* + * @desc Map GERAN's system ports + * @param p_Geran + * @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT, UTRAN) + */ + function f_GERAN_PTC_Map(GERAN_PTC p_Geran) + { + map(p_Geran:G_CL1, system:S_G_CL1); + map(p_Geran:G_CLLC, system:S_G_CLLC); + map(p_Geran:G_CRLC, system:S_G_CRLC); + map(p_Geran:G_CSNDCP, system:S_G_CSNDCP); // @sic R5s120861 sic@ + map(p_Geran:G_L2, system:S_G_L2); + map(p_Geran:G_LLC, system:S_G_LLC); + map(p_Geran:G_RLC, system:S_G_RLC); + map(p_Geran:G_SN, system:S_G_SN); // @sic R5s120861 sic@ + } + + //============================================================================ + // standard default behaviour: + template (present) G_CPHY_CONFIG_CNF car_G_CPHY_CONFIG_CNF_Any := ?; /* @status APPROVED (LTE_A, LTE_IRAT) */ + template (present) G_RLC_CONFIG_CNF car_G_RLC_CONFIG_CNF_Any := ?; /* @status APPROVED (LTE_A, LTE_IRAT) */ + template (present) G_LLC_CONFIG_CNF car_G_LLC_CONFIG_CNF_Any := ?; /* @status APPROVED (LTE_A, LTE_IRAT) */ + template (present) G_L2_DATAMESSAGE_IND car_G_L2_DATAMESSAGE_IND_Any := ?; /* @status APPROVED (LTE_A, LTE_IRAT) */ + template (present) G_LLC_DATAMESSAGE_IND car_G_LLC_DATAMESSAGE_IND_Any := ?; /* @status APPROVED (LTE_A, LTE_IRAT) */ + template (present) G_RLC_DATAMESSAGE_IND car_G_RLC_DATAMESSAGE_IND_Any := ?; /* @status APPROVED (LTE_A, LTE_IRAT) */ + template (present) G_SN_DATAMESSAGE_IND car_G_SN_DATAMESSAGE_IND_Any := ?; /* @status APPROVED (LTE_A, LTE_IRAT) @sic R5s120861 sic@ */ + template (present) G_RLC_DATAMESSAGE_IND car_G_RLC_ControlMsg_IND_AnyCellPCA := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + ctrl := { + cellId := ?, + physicalChId := tsc_PhyCh1, // Channel identifier + g_LogicChType := tsc_PACCH_F, // PCCCH or PACCH or PTCCH + tBF_Direction := ?, // 0 -- downlink; 1 -- uplink + tFI := ?, // temporary flow identity + rfn := ?, // the reduced frame number of the frame carrying this message + msg := cr_PacketControlAcknowledgement // uplink RLC/MAC control message + } + }; + + template (present) G_L2_DATAMESSAGE_IND car_G_L2_AnyCell2PhaseAccess := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + access := { + cellId := ?, + physicalChId := tsc_PhyCh0, // Channel identifier + g_LogicChType := tsc_RACH, + subChannel := ?, // Valid only for logical channel types: FACCH/H, SDCCH/8 and SDCCH/4.This field is not applicable and the SS shall ignore it if this field is coded as 15. + rfn := ?, // The reduced frame number of the frame carrying the burst + burst := cr_ChanReqTwoPhase // random access burst or handover access burst + } + }; + + /* + * @desc To convert the integer, passed from another PTC, into the GERAN Cell Id enumerated type + * @param p_IntId + * @return GERAN_CellId_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function fl_ConvertInt2GERAN_Cell_Id (integer p_IntId) runs on GERAN_PTC return GERAN_CellId_Type + { + var GERAN_CellId_Type v_CellId; + + select (p_IntId) { + case (1) { + v_CellId := geran_Cell24; + } + case (2) { + v_CellId := geran_Cell25; + } + case (3) { + v_CellId := geran_Cell26; + } + case (1009) { + v_CellId := geran34_Cell9; + } + case (1010) { + v_CellId := geran34_Cell10; + } + case else { + f_GERAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "unexpected GERAN cell Id"); + } + } + return v_CellId; + } + + /* + * @desc standard default behaviour for GERAN + * @status APPROVED (LTE_A, LTE_IRAT) + */ + altstep a_GERAN_StandardDefault() runs on GERAN_PTC + { // @sic R5s110431 sic@ + // @sic R5s120050 sic@ + // @sic R5-133612 sic@ + var G_L2_DATAMESSAGE_IND v_ChanReq; + var G_RLC_DATAMESSAGE_IND v_G_RLC_ControlMsg_IND; + var IP_Indication_Type v_IPCoordMsg; + var GERAN_CellId_Type v_CellId; + var template (value) PagingReqType v_PagingReqType; + var DRXparameter v_SplitPGCycle; + var ControlChDescr v_CtrlCh; + var integer k, m; + + [] IP.receive (cr_IP_GeranTrigger) -> value v_IPCoordMsg { // @sic R5-133612 sic@ + + v_CellId := fl_ConvertInt2GERAN_Cell_Id (v_IPCoordMsg.GeranTrigger.Geran.CellId); + v_SplitPGCycle := f_GERAN_SplitPGCycle_Get(v_CellId); + v_CtrlCh := f_GERAN_ControlChDesc_Get(v_CellId); + v_PagingReqType := cs_G_PagingRequest_ImmAss (cs_P_ImmediateAssignment ('1'B, + f_GERAN_GPRSFreq_Get(v_CellId), + 0, + cs_RFN_0, + substr(oct2bit(f_GERAN_TA_Get(v_CellId)),1, 6), + cs_IARO_PDA(f_GERAN_TLLI_Get(v_CellId), f_GERAN_GAMMA_Get(v_CellId)))); + + f_GERAN_RLC_CONFIG_Common(cas_ActivateTBF_Downlink(v_CellId, tsc_PhyCh1, 1)); + IP.send (cs_IP_GeranCnf); // @sic R5s130777 sic@ + if ((v_SplitPGCycle.splitPGcycleCode == '00000000'B) or (v_SplitPGCycle.splitOnCCCH == '0'B)) { + k := f_PagingGroupCalculate (px_IMSI_Def, v_CtrlCh.cCCH_CONF, + (3 - bit2int(v_CtrlCh.bS_AG_BLKS_RES))* (bit2int(v_CtrlCh.bS_PA_MFRMS)+2)); + G_L2.send(cas_G_Paging_REQ(v_CellId, k, v_PagingReqType)); + } + else { + m := (3 - bit2int(v_CtrlCh.bS_AG_BLKS_RES)) * 64; + k := f_PacketPagingGroupCalculate(px_IMSI_Def, + bit2int(v_CtrlCh.cCCH_CONF), + m, + (3 - bit2int(v_CtrlCh.bS_AG_BLKS_RES))* (bit2int(v_CtrlCh.bS_PA_MFRMS)+2), + v_SplitPGCycle.splitPGcycleCode); + G_L2.send(cas_GPRS_Paging_REQ(v_CellId, k, bit2int(v_SplitPGCycle.splitPGcycleCode), v_PagingReqType)); + } + } + + [] G_L2.receive (car_G_L2_AnyCell2PhaseAccess) -> value v_ChanReq { // @sic R5-133612 sic@ + + // finish configuring the TBF + v_CellId := fl_ConvertInt2GERAN_Cell_Id(v_ChanReq.access.cellId); + + // Send IA + G_L2.send (cas_G_L2_UNITDATA_REQ (v_CellId, + tsc_PhyCh0, + tsc_AGCH, 15, + cs_G_RFN_Omit, + cs_ImmAss (cs_P_ImmediateAssignment ('0'B, + f_GERAN_GPRSFreq_Get(v_CellId), + bit2int(v_ChanReq.access.burst.chReq.estCauRandomRef), + v_ChanReq.access.rfn, + substr(oct2bit(f_GERAN_TA_Get(v_CellId)),1, 6), + cds_IARO_SingleBlkPUA( f_GERAN_GAMMA_Get(v_CellId), omit))))); + + // Configure the Uplink TBF for Dynamic Allocation, USF 0 on timeslot 4 + f_GERAN_RLC_CONFIG_Common(cas_ActivateTBF_UplinkDyn(v_CellId, 1), dontWaitForCNF); // don't wait for CNF to avoid race condition with incoming car_G_RLC_ControlMsg_IND + + // Now wait for the PRR + G_RLC.receive(car_G_RLC_ControlMsg_IND(v_CellId, tsc_PhyCh1, cr_PacketResourceRequestAny)) + -> value v_G_RLC_ControlMsg_IND; + G_RLC.send (cas_G_RLC_ControlMsg_REQ_PACCH( v_CellId, tsc_PhyCh1, 1, tsc_UplinkTFI, cds_PacketUplinkAssignment_TwoPhase(f_GERAN_GPRSFreq_Get(v_CellId), + substr(oct2bit(f_GERAN_TA_Get(v_CellId)),1, 6), + v_G_RLC_ControlMsg_IND.ctrl.msg.pktResReq.tlli))); + } + [] G_RLC.receive (car_G_RLC_ControlMsg_IND_AnyCellPCA) { // @sic R5-133612 sic@ + repeat; + } + [] G_CL1.receive (car_G_CPHY_CONFIG_CNF_Any) { + repeat; /* @sic R5s120050 MCC160 implementation sic@ */ + } + [] G_CLLC.receive (car_G_LLC_CONFIG_CNF_Any) { + repeat; /* @sic R5s120050 MCC160 implementation sic@ */ + } + [] G_CRLC.receive (car_G_RLC_CONFIG_CNF_Any) { + repeat; /* @sic R5s120050 MCC160 implementation sic@ */ + } + [] G_L2.receive (car_G_L2_Release_IND_Any) { // @sic R5s120498 sic@ + repeat; + } + [] G_CSNDCP.receive (car_G_SNDCP_CONFIG_CNF_Any) { // @sic R5s120861 sic@ + repeat; + } + [] G_L2.receive (car_G_L2_DATAMESSAGE_IND_Any) { + all timer.stop; + f_GERAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "unexpected receive event at the G_L2 port"); + } + [] G_LLC.receive (car_G_LLC_DATAMESSAGE_IND_Any) { + all timer.stop; + f_GERAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "unexpected receive event at the G_LLC port"); + } + [] G_RLC.receive (car_G_RLC_DATAMESSAGE_IND_Any) { + all timer.stop; + f_GERAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "unexpected receive event at the G_RLC port"); + } + [] G_SN.receive (car_G_SN_DATAMESSAGE_IND_Any) { // @sic R5s120861 sic@ + all timer.stop; + f_GERAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "unexpected receive event at the G_SN port"); + } + // @sic R5s140316 sic@ + [] any timer.timeout { + all timer.stop; + f_GERAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "unexpected timeout"); + } + } + + //============================================================================ + // common functions: + + /* + * @desc to deal with entry and exit of the test body + * @param p_TestBodyFlag + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_TestBody_Set(boolean p_TestBodyFlag) runs on GERAN_PTC { + vc_GERAN_Global.Ctrl.TestBody := p_TestBodyFlag; + } + + /* + * @desc check whether test body is active + * @return boolean + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function fl_GERAN_TestBody_Check() runs on GERAN_PTC return boolean { + return vc_GERAN_Global.Ctrl.TestBody; + } + + /* + * @desc set correct verdict: FAIL is assigned only when being in the test body + * @param p_FileName + * @param p_LineNo + * @param p_Msg + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_SetVerdictFailOrInconc(charstring p_FileName, + LineNo_Type p_LineNo, + charstring p_Msg) runs on GERAN_PTC { + if (fl_GERAN_TestBody_Check()) { + f_SetVerdict(fail, p_FileName, p_LineNo, p_Msg); + } else { + f_SetVerdict(inconc, p_FileName, p_LineNo, p_Msg); + } + self.kill; // => test case will terminate immediately + } + + /* + * @desc set correct verdict: prelininary PASS is only be assigned when being in the test body + * @param p_FileName + * @param p_LineNo + * @param p_Msg + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_PreliminaryPass(charstring p_FileName, + LineNo_Type p_LineNo, + charstring p_Msg) runs on GERAN_PTC { + if (fl_GERAN_TestBody_Check()) { + f_SetVerdict(pass,p_FileName, p_LineNo, p_Msg); + } + } + + //---------------------------------------------------------------------------- + + /* + * @desc to activate the standard default behaviour + * @param p_Default identifies a standard behaviour to be activated + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_ActivateDefault(GERAN_Default_Enum_Type p_Default) runs on GERAN_PTC + { + deactivate(vc_GERAN_Global.Ctrl.Default); + + select (p_Default) { + case (StandardDefault) { + vc_GERAN_Global.Ctrl.Default := activate(a_GERAN_StandardDefault()); + } + case else { + FatalError (__FILE__, __LINE__, "unknown default behaviour"); + } + } + } + + //---------------------------------------------------------------------------- + // Access to Cell Array + /* + * @desc To get the GERAN cell index + * @param p_CellId + * @return integer + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_CellInfo_GetIndex (GERAN_CellId_Type p_CellId) return integer + { + select (p_CellId) + { + case (geran_Cell24, geran34_Cell9) { + return 0; + } case (geran_Cell25, geran34_Cell10) { + return 1; + } case (geran_Cell26) { + return 2; + } case else { + FatalError (__FILE__, __LINE__, "Invalid CellId"); + return 0; + } + } + } + + /* + * @desc To get the GERAN cell information + * @param p_CellId + * @return GERAN_CellInfo_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_CellInfo_Get(GERAN_CellId_Type p_CellId) runs on GERAN_PTC return GERAN_CellInfo_Type + { // NEVER, EVER CALL THIS FROM ANYWHERE + var integer v_Index := f_GERAN_CellInfo_GetIndex(p_CellId); // APART FROM THIS FUNCTION + return vc_GERAN_Global.CellArray[v_Index]; + } + + /* + * @desc To set the cell information + * @param p_CellId + * @param p_CellCfg + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_CellInfo_Set(GERAN_CellId_Type p_CellId, + GERAN_CellInfo_Type p_CellCfg) runs on GERAN_PTC + { + var integer v_Index := f_GERAN_CellInfo_GetIndex(p_CellId); + vc_GERAN_Global.CellArray[v_Index] := p_CellCfg; + } + + /* + * @desc To get the system information + * @param p_CellId + * @return GERAN_SystemInformation_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_SysInfo_Get(GERAN_CellId_Type p_CellId) runs on GERAN_PTC return GERAN_SystemInformation_Type + { + var GERAN_CellInfo_Type v_CellInfo := f_GERAN_CellInfo_Get(p_CellId); + return v_CellInfo.sysInfo; + } + + /* + * @desc To set the system information + * @param p_CellId + * @param p_SysInfo + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_SysInfo_Set(GERAN_CellId_Type p_CellId, + template (value) GERAN_SystemInformation_Type p_SysInfo) runs on GERAN_PTC + { + var GERAN_CellInfo_Type v_CellInfo := f_GERAN_CellInfo_Get(p_CellId); + v_CellInfo.sysInfo := valueof(p_SysInfo); + f_GERAN_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc To get the SI 1 message + * @param p_CellId + * @return SYSTEMINFORMATIONTYPE1 + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_SysInfo_GetSI1(GERAN_CellId_Type p_CellId) runs on GERAN_PTC return SYSTEMINFORMATIONTYPE1 + { + var GERAN_SystemInformation_Type v_SysInfo := f_GERAN_SysInfo_Get (p_CellId); + return v_SysInfo.si1; + } + + /* + * @desc To get the first SI2quater message + * @param p_CellId + * @return SYSTEMINFORMATIONTYPE2quater + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_SysInfo_GetSI2q_1(GERAN_CellId_Type p_CellId) runs on GERAN_PTC return SYSTEMINFORMATIONTYPE2quater + { + var GERAN_SystemInformation_Type v_SysInfo := f_GERAN_SysInfo_Get (p_CellId); + return v_SysInfo.si2quater_1; + } + + /* + * @desc To get the second SI2quater message + * @param p_CellId + * @return SYSTEMINFORMATIONTYPE2quater + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_SysInfo_GetSI2q_2(GERAN_CellId_Type p_CellId) runs on GERAN_PTC return SYSTEMINFORMATIONTYPE2quater + { + var GERAN_SystemInformation_Type v_SysInfo := f_GERAN_SysInfo_Get (p_CellId); + return v_SysInfo.si2quater_2; + } + + /* + * @desc To set the first SI2quater message + * @param p_CellId + * @param p_SI2q + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_SysInfo_SetSI2q_1(GERAN_CellId_Type p_CellId, + template (value) SYSTEMINFORMATIONTYPE2quater p_SI2q) runs on GERAN_PTC + { + var template (value) GERAN_SystemInformation_Type v_SysInfo := f_GERAN_SysInfo_Get (p_CellId); + v_SysInfo.si2quater_1 := p_SI2q; + f_GERAN_SysInfo_Set (p_CellId, v_SysInfo); + } + + /* + * @desc To set the second SI2quater message + * @param p_CellId + * @param p_SI2q + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_SysInfo_SetSI2q_2(GERAN_CellId_Type p_CellId, + template (omit) SYSTEMINFORMATIONTYPE2quater p_SI2q) runs on GERAN_PTC + { + var template (value) GERAN_SystemInformation_Type v_SysInfo := f_GERAN_SysInfo_Get (p_CellId); + v_SysInfo.si2quater_2 := p_SI2q; + f_GERAN_SysInfo_Set (p_CellId, v_SysInfo); + } + + /* + * @desc To get the SI3 message + * @param p_CellId + * @return SYSTEMINFORMATIONTYPE3 + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_SysInfo_GetSI3(GERAN_CellId_Type p_CellId) runs on GERAN_PTC return SYSTEMINFORMATIONTYPE3 + { + var GERAN_SystemInformation_Type v_SysInfo := f_GERAN_SysInfo_Get (p_CellId); + return v_SysInfo.si3; + } + + /* + * @desc To set the SI3 message + * @param p_CellId + * @param p_SI3 + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_SysInfo_SetSI3(GERAN_CellId_Type p_CellId, + template (value) SYSTEMINFORMATIONTYPE3 p_SI3) runs on GERAN_PTC + { + var template (value) GERAN_SystemInformation_Type v_SysInfo := f_GERAN_SysInfo_Get (p_CellId); + v_SysInfo.si3 := p_SI3; + f_GERAN_SysInfo_Set (p_CellId, v_SysInfo); + } + + /* + * @desc To get the SI4 message + * @param p_CellId + * @return SYSTEMINFORMATIONTYPE4 + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_SysInfo_GetSI4(GERAN_CellId_Type p_CellId) runs on GERAN_PTC return SYSTEMINFORMATIONTYPE4 + { + var GERAN_SystemInformation_Type v_SysInfo := f_GERAN_SysInfo_Get (p_CellId); + return v_SysInfo.si4; + } + + /* + * @desc To set the SI4 message + * @param p_CellId + * @param p_SI4 + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_SysInfo_SetSI4(GERAN_CellId_Type p_CellId, + template (value) SYSTEMINFORMATIONTYPE4 p_SI4) runs on GERAN_PTC + { + var template (value) GERAN_SystemInformation_Type v_SysInfo := f_GERAN_SysInfo_Get (p_CellId); + v_SysInfo.si4 := p_SI4; + f_GERAN_SysInfo_Set (p_CellId, v_SysInfo); + } + + /* + * @desc To get the SI5 message + * @param p_CellId + * @return SYSTEMINFORMATIONTYPE5 + * @status + */ + function f_GERAN_SysInfo_GetSI5(GERAN_CellId_Type p_CellId) runs on GERAN_PTC return SYSTEMINFORMATIONTYPE5 + { + var GERAN_SystemInformation_Type v_SysInfo := f_GERAN_SysInfo_Get (p_CellId); + return v_SysInfo.si5; + } + + /* + * @desc To set the SI5 message + * @param p_CellId + * @param p_SI5 + * @status + */ + function f_GERAN_SysInfo_SetSI5(GERAN_CellId_Type p_CellId, + template (value) SYSTEMINFORMATIONTYPE5 p_SI5) runs on GERAN_PTC + { + var template (value) GERAN_SystemInformation_Type v_SysInfo := f_GERAN_SysInfo_Get (p_CellId); + v_SysInfo.si5 := p_SI5; + f_GERAN_SysInfo_Set (p_CellId, v_SysInfo); + } + + /* + * @desc To get the SI6 message + * @param p_CellId + * @return SYSTEMINFORMATIONTYPE6 + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_SysInfo_GetSI6(GERAN_CellId_Type p_CellId) runs on GERAN_PTC return SYSTEMINFORMATIONTYPE6 + { + var GERAN_SystemInformation_Type v_SysInfo := f_GERAN_SysInfo_Get (p_CellId); + return v_SysInfo.si6; + } + + /* + * @desc To set the SI6 message + * @param p_CellId + * @param p_SI6 + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_SysInfo_SetSI6(GERAN_CellId_Type p_CellId, + template (value) SYSTEMINFORMATIONTYPE6 p_SI6) runs on GERAN_PTC + { + var template (value) GERAN_SystemInformation_Type v_SysInfo := f_GERAN_SysInfo_Get (p_CellId); + v_SysInfo.si6 := p_SI6; + f_GERAN_SysInfo_Set (p_CellId, v_SysInfo); + } + + /* + * @desc To get the SI 13 message + * @param p_CellId + * @return SYSTEMINFORMATIONTYPE13 + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_SysInfo_GetSI13(GERAN_CellId_Type p_CellId) runs on GERAN_PTC return SYSTEMINFORMATIONTYPE13 + { + var GERAN_SystemInformation_Type v_SysInfo := f_GERAN_SysInfo_Get (p_CellId); + return v_SysInfo.si13; + } + + /* + * @desc Function that gets the Rest Octets for SI13 + * @param p_CellId + * @return SI13RO + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_SysInfo_GetSI13_RestOctets ( GERAN_CellId_Type p_CellId) runs on GERAN_PTC return SI13RO + { + var GERAN_SystemInformation_Type v_SysInfo := f_GERAN_SysInfo_Get (p_CellId); + return v_SysInfo.si13.si13roct; + } + + /* + * @desc sets the Rest Octets for SI13 + * @param p_CellId + * @param p_SI13_RO + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_SysInfo_SetSI13_RestOctets ( GERAN_CellId_Type p_CellId, + template (value) SI13RO p_SI13_RO) runs on GERAN_PTC + { + var template (value) GERAN_SystemInformation_Type v_SysInfo := f_GERAN_SysInfo_Get (p_CellId); + v_SysInfo.si13.si13roct := p_SI13_RO; + f_GERAN_SysInfo_Set( p_CellId, v_SysInfo ); + } + + /* + * @desc Get the global Security information + * @return GERAN_SecurityInfo_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_SecurityInfo_Get() runs on GERAN_PTC return GERAN_SecurityInfo_Type + { + return vc_GERAN_Global.Security; + } + + /* + * @desc Set the global security information + * @param p_Info + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_SecurityInfo_Set(GERAN_SecurityInfo_Type p_Info) runs on GERAN_PTC + { + vc_GERAN_Global.Security := p_Info; + } + //---------------------------------------------------------------------------- + /* + * @desc Set the global flag SNDCP configured + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_SNDCPConfigured_Set() runs on GERAN_PTC + { + vc_GERAN_Global.SNDCPConfigured := true; + } + + /* + * @desc Get the global flag SNDCP configured + * @return boolean + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_SNDCPConfigured_Get() runs on GERAN_PTC return boolean + { + return vc_GERAN_Global.SNDCPConfigured; + } + + //---------------------------------------------------------------------------- + // Access to Message in Default Parameters: + /* + * @desc get MsgReceivedInDefault from global structure + * @return LLCUnitDataIndType + * @status + */ + function f_GERAN_MsgInDefault_GetRAU() runs on GERAN_PTC return LLCUnitDataIndType + { + var LLCUnitDataIndType v_RAU := vc_GERAN_Global.MsgInDefault.routingAreaUpdateRequest; + vc_GERAN_Global.MsgInDefault.routingAreaUpdateRequest := omit; // Set it back to omit now + return v_RAU; + } + + /* + * @desc Set MsgReceivedInDefault into global structure + * @param LLCUnitDataIndType + * @status + */ + function f_GERAN_MsgInDefault_SetRAU(LLCUnitDataIndType p_RoutingAreaUpdateRequest) runs on GERAN_PTC + { + vc_GERAN_Global.MsgInDefault.routingAreaUpdateRequest := p_RoutingAreaUpdateRequest; + } + /* + * @desc check if value stored in MsgReceivedInDefault global structure + * @status + */ + function f_GERAN_MsgInDefault_CheckRAU() runs on GERAN_PTC return boolean + { + var boolean v_IsMsgPresent := false; + if(isvalue(vc_GERAN_Global.MsgInDefault.routingAreaUpdateRequest)){ + v_IsMsgPresent := true; + } + return v_IsMsgPresent; + } + + /* + * @desc check if value stored in MsgReceivedInDefault global structure + * @status + */ + function f_GERAN_MsgInDefault_CheckLocUpd() runs on GERAN_PTC return boolean + { + var boolean v_IsMsgPresent := false; + if(isvalue(vc_GERAN_Global.MsgInDefault.locationUpdatingRequest)){ + v_IsMsgPresent := true; + } + return v_IsMsgPresent; + } + + /* + * @desc Set MsgReceivedInDefault into global structure + * @param EstablishIndType + * @status + */ + function f_GERAN_MsgInDefault_SetLocUpd(EstablishIndType p_LocationUpdatingRequest) runs on GERAN_PTC + { + vc_GERAN_Global.MsgInDefault.locationUpdatingRequest := p_LocationUpdatingRequest; + } + /* + * @desc get MsgReceivedInDefault from global structure + * @return EstablishIndType + * @status + */ + function f_GERAN_MsgInDefault_GetLocUpd() runs on GERAN_PTC return EstablishIndType + { + var EstablishIndType v_LocUpd := vc_GERAN_Global.MsgInDefault.locationUpdatingRequest; + vc_GERAN_Global.MsgInDefault.locationUpdatingRequest := omit; // Set it back to omit now + return v_LocUpd; + } + + + /* + * @desc Get the Frequency of the Control Channel + * @param p_CellId + * @return B10_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_BCCHFreq_Get (GERAN_CellId_Type p_CellId) runs on GERAN_PTC return B10_Type + { + var GERAN_CellInfo_Type v_CellInfo := f_GERAN_CellInfo_Get(p_CellId); + return v_CellInfo.freq.bCCH_Freq; + } + + /* + * @desc Get the Frequency of the GPRS channel + * @param p_CellId + * @return B10_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_GPRSFreq_Get (GERAN_CellId_Type p_CellId) runs on GERAN_PTC return B10_Type + { + var GERAN_CellInfo_Type v_CellInfo := f_GERAN_CellInfo_Get(p_CellId); + return v_CellInfo.freq.gPRSCh_Freq; + } + + /* + * @desc Get the Frequency of the Traffic channel + * @param p_CellId + * @return B10_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_TCHFreq_Get (GERAN_CellId_Type p_CellId) runs on GERAN_PTC return B10_Type + { + var GERAN_CellInfo_Type v_CellInfo := f_GERAN_CellInfo_Get(p_CellId); + return v_CellInfo.freq.tch_Freq; + } + + /* + * @desc Get the Band Indicator + * @param p_CellId + * @return B1_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_BandInd_Get (GERAN_CellId_Type p_CellId) runs on GERAN_PTC return B1_Type + { + var GERAN_CellInfo_Type v_CellInfo := f_GERAN_CellInfo_Get(p_CellId); + return v_CellInfo.freq.bandIndicator; + } + + /* + * @desc Get the DL Power level + * @param p_CellId + * @return B1_Type + * @status + */ + function f_GERAN_DLPwrLevel_Get (GERAN_CellId_Type p_CellId) runs on GERAN_PTC return integer + { + var GERAN_CellInfo_Type v_CellInfo := f_GERAN_CellInfo_Get(p_CellId); + return v_CellInfo.info.downlinkPowerLevel; + } + + /* + * @desc Get the NCC + * @param p_CellId + * @return B3_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_NCC_Get (GERAN_CellId_Type p_CellId) runs on GERAN_PTC return B3_Type + { + var GERAN_CellInfo_Type v_CellInfo := f_GERAN_CellInfo_Get(p_CellId); + return v_CellInfo.info.ncc; + } + + /* + * @desc Get the BCC + * @param p_CellId + * @return B3_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_BCC_Get (GERAN_CellId_Type p_CellId) runs on GERAN_PTC return B3_Type + { + var GERAN_CellInfo_Type v_CellInfo := f_GERAN_CellInfo_Get(p_CellId); + return v_CellInfo.info.bcc; + } + + /* + * @desc To get the MS_TXPWR_MAX_CCH + * @param p_CellId + * @return B5_Type + * @status + */ + function f_GERAN_MS_TXPWR_MAX_CCH_Get (GERAN_CellId_Type p_CellId) runs on GERAN_PTC return B5_Type + { + var GERAN_CellInfo_Type v_CellInfo := f_GERAN_CellInfo_Get(p_CellId); + return v_CellInfo.info.cellSelParams.mS_TXPWR_MAX_CCH; + } + + /* + * @desc Get the TSC + * @param p_CellId + * @return B3_Type + * @status (APPROVED) + */ + function f_GERAN_TSC_Get (GERAN_CellId_Type p_CellId) runs on GERAN_PTC return B3_Type + { + var GERAN_CellInfo_Type v_CellInfo := f_GERAN_CellInfo_Get(p_CellId); + return v_CellInfo.info.tSC; + } + + /* + * @desc Get the NMO + * @param p_CellId + * @return B2_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_NMO_Get (GERAN_CellId_Type p_CellId) runs on GERAN_PTC return B2_Type + { + var GERAN_CellInfo_Type v_CellInfo := f_GERAN_CellInfo_Get(p_CellId); + return v_CellInfo.info.nmo; + } + + /* + * @desc Set the NMO + * @param p_CellId + * @param p_NMO + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_NMO_Set(GERAN_CellId_Type p_CellId, + B2_Type p_NMO) runs on GERAN_PTC + { + var GERAN_CellInfo_Type v_CellInfo := f_GERAN_CellInfo_Get(p_CellId); + v_CellInfo.info.nmo := p_NMO; + f_GERAN_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Get the Timing Advance + * @param p_CellId + * @return O1_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_TA_Get(GERAN_CellId_Type p_CellId) runs on GERAN_PTC return O1_Type + { + var GERAN_CellInfo_Type v_CellInfo := f_GERAN_CellInfo_Get(p_CellId); + return v_CellInfo.info.timingAdvance; + } + + /* + * @desc Get the GAMMA value + * @param p_CellId + * @return B5_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_GAMMA_Get (GERAN_CellId_Type p_CellId) runs on GERAN_PTC return B5_Type + { + var GERAN_CellInfo_Type v_CellInfo := f_GERAN_CellInfo_Get(p_CellId); + return v_CellInfo.info.gamma; + } + + /* + * @desc Get the PLMN Id + * @param p_CellId + * @return O3_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_PLMN_Get (GERAN_CellId_Type p_CellId) runs on GERAN_PTC return O3_Type + { + var GERAN_CellInfo_Type v_CellInfo := f_GERAN_CellInfo_Get(p_CellId); + return v_CellInfo.info.plmn; + } + + /* + * @desc Set the PLMN Id. As this involves changes to a lot of SI messages, change them all here @sic R5s120025 sic@ + * @param p_CellId + * @param p_PLMN + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_PLMN_Set (GERAN_CellId_Type p_CellId, O3_Type p_PLMN) runs on GERAN_PTC + { + var GERAN_CellInfo_Type v_CellInfo := f_GERAN_CellInfo_Get(p_CellId); + var SYSTEMINFORMATIONTYPE3 v_SI3 := f_GERAN_SysInfo_GetSI3(p_CellId); + var SYSTEMINFORMATIONTYPE4 v_SI4 := f_GERAN_SysInfo_GetSI4(p_CellId); + var SYSTEMINFORMATIONTYPE6 v_SI6 := f_GERAN_SysInfo_GetSI6(p_CellId); + v_CellInfo.info.plmn := p_PLMN; + v_SI3.lai.plmn := p_PLMN; + v_SI4.lai.plmn := p_PLMN; + v_SI6.lai.plmn := p_PLMN; + f_GERAN_CellInfo_Set (p_CellId, v_CellInfo); + f_GERAN_SysInfo_SetSI3(p_CellId, v_SI3); + f_GERAN_SysInfo_SetSI4(p_CellId, v_SI4); + f_GERAN_SysInfo_SetSI6(p_CellId, v_SI6); + } + + /* + * @desc Get the LAC + * @param p_CellId + * @return O2_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_LAC_Get (GERAN_CellId_Type p_CellId) runs on GERAN_PTC return O2_Type + { + var GERAN_CellInfo_Type v_CellInfo := f_GERAN_CellInfo_Get(p_CellId); + return v_CellInfo.info.lac; + } + + /* + * @desc Set the LAC of GERAN cell + * @param p_CellId + * @param p_LAC + * @status + */ + function f_GERAN_LAC_Set (GERAN_CellId_Type p_CellId, O2_Type p_LAC) runs on GERAN_PTC + { + var GERAN_CellInfo_Type v_CellInfo := f_GERAN_CellInfo_Get(p_CellId); + var SYSTEMINFORMATIONTYPE3 v_SI3 := f_GERAN_SysInfo_GetSI3 (p_CellId); + var SYSTEMINFORMATIONTYPE4 v_SI4 := f_GERAN_SysInfo_GetSI4 (p_CellId); + var SYSTEMINFORMATIONTYPE6 v_SI6 := f_GERAN_SysInfo_GetSI6 (p_CellId); + v_CellInfo.info.lac := p_LAC; + v_SI3.lai.lac := p_LAC; // @sic R5s120838 sic@ + v_SI4.lai.lac := p_LAC; // @sic R5s120838 sic@ + v_SI6.lai.lac := p_LAC; // @sic R5s120838 sic@ + f_GERAN_SysInfo_SetSI3 (p_CellId, v_SI3); + f_GERAN_SysInfo_SetSI4 (p_CellId, v_SI4); + f_GERAN_SysInfo_SetSI6 (p_CellId, v_SI6); + f_GERAN_CellInfo_Set(p_CellId, v_CellInfo); + } + + /* + * @desc Get the RAC + * @param p_CellId + * @return O1_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_RAC_Get (GERAN_CellId_Type p_CellId) runs on GERAN_PTC return O1_Type + { + var GERAN_CellInfo_Type v_CellInfo := f_GERAN_CellInfo_Get(p_CellId); + return v_CellInfo.info.rac; + } + + /* + * @desc Set the RAC + * @param p_CellId + * @param p_RAC + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_RAC_Set (GERAN_CellId_Type p_CellId, O1_Type p_RAC) runs on GERAN_PTC + { + var GERAN_CellInfo_Type v_CellInfo := f_GERAN_CellInfo_Get(p_CellId); + var SI13RO v_SI13RO := f_GERAN_SysInfo_GetSI13_RestOctets (p_CellId); + v_CellInfo.info.rac := p_RAC; + v_SI13RO.rAC := p_RAC; // @sic R5s120838 sic@ + f_GERAN_CellInfo_Set(p_CellId, v_CellInfo); // @sic R5s120894 sic@ + f_GERAN_SysInfo_SetSI13_RestOctets (p_CellId, v_SI13RO); + } + + /* + * @desc Get the TLLI + * @param p_CellId + * @return TLLI + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_TLLI_Get(GERAN_CellId_Type p_CellId) runs on GERAN_PTC return TLLI + { + var GERAN_CellInfo_Type v_CellInfo := f_GERAN_CellInfo_Get(p_CellId); + return v_CellInfo.info.tlli; + } + + /* + * @desc Set the TLLI + * @param p_CellId + * @param p_TLLI + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_TLLI_Set(GERAN_CellId_Type p_CellId, TLLI p_TLLI) runs on GERAN_PTC + { + var GERAN_CellInfo_Type v_CellInfo := f_GERAN_CellInfo_Get(p_CellId); + v_CellInfo.info.tlli := p_TLLI; + f_GERAN_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Get the old TLLI + * @param p_CellId + * @return TLLI + * @status + */ + function f_GERAN_OldTLLI_Get(GERAN_CellId_Type p_CellId) runs on GERAN_PTC return TLLI + { + var GERAN_CellInfo_Type v_CellInfo := f_GERAN_CellInfo_Get(p_CellId); + return v_CellInfo.info.oldTlli; + } + + /* + * @desc Set the old TLLI + * @param p_CellId + * @param p_TLLI + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_OldTLLI_Set(GERAN_CellId_Type p_CellId, TLLI p_TLLI) runs on GERAN_PTC + { + var GERAN_CellInfo_Type v_CellInfo := f_GERAN_CellInfo_Get(p_CellId); + v_CellInfo.info.oldTlli := p_TLLI; + f_GERAN_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Get the Control Channel Description + * @param p_CellId + * @return ControlChDescr + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_ControlChDesc_Get (GERAN_CellId_Type p_CellId) runs on GERAN_PTC return ControlChDescr + { + var GERAN_CellInfo_Type v_CellInfo := f_GERAN_CellInfo_Get(p_CellId); + return v_CellInfo.info.controlChDesr; + } + + /* + * @desc Get the Split Paging Cycle + * @param p_CellId + * @return DRXparameter + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_SplitPGCycle_Get(GERAN_CellId_Type p_CellId) runs on GERAN_PTC return DRXparameter + { + var GERAN_CellInfo_Type v_CellInfo := f_GERAN_CellInfo_Get(p_CellId); + return v_CellInfo.info.splitPGcycle; + } + + /* + * @desc Set the Split Paging Cycle + * @param p_CellId + * @param p_SplitPGCycle + * @status APPROVED (LTE_IRAT) + */ + function f_GERAN_SplitPGCycle_Set(GERAN_CellId_Type p_CellId, + DRXparameter p_SplitPGCycle) runs on GERAN_PTC + { + var GERAN_CellInfo_Type v_CellInfo := f_GERAN_CellInfo_Get(p_CellId); + v_CellInfo.info.splitPGcycle := p_SplitPGCycle; + f_GERAN_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Store the XID + * @param p_XID + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_MsgInDefault_SetXID(G_LLC_XID_IND p_XID) runs on GERAN_PTC + { + vc_GERAN_Global.MsgInDefault.xid := p_XID; + } + + /* + * @desc check if an XID has been received + * @return boolean + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_MsgInDefault_CheckXID() runs on GERAN_PTC return boolean + { + return isvalue(vc_GERAN_Global.MsgInDefault.xid); + } + /* + * @desc Get the XID + * @return G_LLC_XID_IND + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_MsgInDefault_GetXID() runs on GERAN_PTC return G_LLC_XID_IND + { + return vc_GERAN_Global.MsgInDefault.xid; + } + + //---------------------------------------------------------------------------- + /* + * @desc generic function to deal with GERAN RLC configurations + * @param p_G_RLC_CONFIG_REQ + * @param p_WaitForCNF (default value: waitForCNF) + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_RLC_CONFIG_Common(template (value) G_RLC_CONFIG_REQ p_G_RLC_CONFIG_REQ, + GERAN_WaitForCNF_Type p_WaitForCNF := waitForCNF) runs on GERAN_PTC + { + G_CRLC.clear; /* since CNFs are not always handled explicitly there might still an 'old' CNF be in the incoming queue to be removed */ + G_CRLC.send(p_G_RLC_CONFIG_REQ); + if (p_WaitForCNF == waitForCNF) { + G_CRLC.receive(car_G_RLC_Config_CNF); + } else { + // CNF will discarded by the default behaviour + } + } +} + diff --git a/LTE_A_IWD_14wk37/Common/GERAN/GERAN_Templates.ttcn b/LTE_A_IWD_14wk37/Common/GERAN/GERAN_Templates.ttcn new file mode 100644 index 0000000..34d2df0 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/GERAN/GERAN_Templates.ttcn @@ -0,0 +1,5253 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-11 13:56:06 +0200 (Thu, 11 Sep 2014) $ +// $Rev: 12205 $ +/******************************************************************************/ + +module GERAN_Templates { + import from GERAN_TypeDefs all; + import from GERAN_Parameters all; + // import from Parameters all; + import from CommonDefs all; + import from NAS_CommonTypeDefs all; + import from NAS_24008TypeDefs all; + import from NAS_CommonTemplates all; + import from NAS_24008Templates_IRAT all; + import from NAS_24008Templates_AccessCap all; + + const B4_Type tsc_SkipIndicator := '0000'B; /* Skip Indicator field consists of latter half byte after Protocol discriminator field. Its value is '0000'B in all the messages. + @status APPROVED (LTE_A, LTE_IRAT) */ + const ProtocolDiscriminator tsc_PD_GMM := '1000'B; + const ProtocolDiscriminator tsc_PD_MM := '0101'B; // Protocol discriminator for all the MM messages for non-GPRS is '0101'B + const ProtocolDiscriminator tsc_PD_RR := '0110'B; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const ProtocolDiscriminator tsc_PD_SM := '1010'B; // SM protocol discriminator + const MessageType tsc_MT_LocationUpdatingAccept := '00000010'B; + const MessageType tsc_MT_LocationUpdating_Req := '00001000'B; + const MessageType tsc_MT_ImmediateAssignment := '00111111'B; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const MessageType tsc_MT_ImmediateAssignmentReject := '00111010'B; /* @status APPROVED (LTE_IRAT) */ + const MessageType tsc_MT_CipheringModeCommand := '00110101'B; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const MessageType tsc_MT_CipheringModeComplete := '00110010'B; /* @status APPROVED (LTE_A, LTE_IRAT) */ + + const octetstring tsc_G_TMSI_Def := '34567812'O; /* different from the TMSI used in the UTRAN cell */ + const B3_Type tsc_DefUSF := '000'B; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const integer tsc_CS1 := 1; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const B1_Type tsc_LLC_PM := '1'B; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const B1_Type tsc_LLC_NoCiph := '0'B; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const integer tsc_LLCSapi_GMM := 1; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const integer tsc_LLCSapi_11 := 11; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const integer tsc_SAPI_0 := 0; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const integer tsc_NormalPaging := 0; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const B5_Type tsc_DownlinkTFI := '00001'B; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const B5_Type tsc_UplinkTFI := '00000'B; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const PhysicalChId tsc_PhyCh0 := 0; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const PhysicalChId tsc_PhyCh1 := 1; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const PhysicalChId tsc_TchCh := 2; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const B1_Type tsc_RR_HopOff := '0'B; /* hopping off; @status APPROVED (LTE_A, LTE_IRAT) */ + const B8_Type tsc_SignallingOnly := '00000000'B; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const O4_Type tsc_TLLI_Initial := 'FFFFFFFF'O; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const TN tsc_TN0 := '000'B; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const TN tsc_TN1 := '011'B; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const TN tsc_TN_DTM := '011'B; /* To be used for DTM CS channel (must be GPRS CH - 1) */ + const integer tsc_Power_ueVOffset := 113; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const integer tsc_GERAN_ChPwrLvl_Off := -123; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const integer tsc_GERAN_ServingCell := -48; /* @status APPROVED (LTE_IRAT) */ + const integer tsc_GERAN_SuitableNeighbourCell := -54;/* @status APPROVED (LTE_IRAT) */ + const integer tsc_GERAN_NonSuitableCell := -90; /* @status APPROVED (LTE_IRAT) */ + const G_LogicChType tsc_BCCH := 0; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const G_LogicChType tsc_RACH := 1; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const G_LogicChType tsc_PCH := 2; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const G_LogicChType tsc_AGCH := 3; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const G_LogicChType tsc_SDCCH_4 := 4; /* @status APPROVED (LTE_IRAT) */ + const G_LogicChType tsc_SACCH_C4 := 5; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const G_LogicChType tsc_SDCCH_8 := 6; /* @status APPROVED (LTE_IRAT) */ + const G_LogicChType tsc_SACCH_C8 := 7; /* @status APPROVED (LTE_IRAT) */ + const G_LogicChType tsc_TCH_F := 8; /* @status APPROVED (LTE_IRAT) */ + const G_LogicChType tsc_FACCH_F := 9; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const G_LogicChType tsc_SACCH_TF := 10; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const G_LogicChType tsc_TCH_H :=11; + const G_LogicChType tsc_FACCH_H := 12; + const G_LogicChType tsc_SACCH_TH := 13; + const G_LogicChType tsc_PDTCH_F := 18; + const G_LogicChType tsc_PACCH_F := 19; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const B6_Type tsc_TA0 := '000000'B; // Timing Advance 0 + + /* + * @desc To calculate the paging group + * @param p_IMSI + * @param p_CCCH_Conf + * @param p_N + * @return integer + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_PagingGroupCalculate(hexstring p_IMSI, + B3_Type p_CCCH_Conf, + integer p_N) return integer + { + var integer v_Length := lengthof (p_IMSI); + var integer v_IMSIShort := (hex2int(p_IMSI[v_Length-3])*100) + (hex2int(p_IMSI[v_Length-2])*10) + (hex2int(p_IMSI[v_Length-1])); // IMSI mod 1000 is last 3 digits @sic R5s120106 sic@ + var integer v_BC_CC_Chans := 0; + + // 05.02, cl 3.3.2.3: LSB indicates whether combined or not, the next 2 bit indicate num of channels, at least 1 + select (p_CCCH_Conf) { + case ('000'B,'001'B) { + v_BC_CC_Chans := 1; + } + case ('010'B) { + v_BC_CC_Chans := 2; + } + case ('100'B) { + v_BC_CC_Chans := 3; + } + case ('110'B) { + v_BC_CC_Chans := 4; + } + } + return ((v_IMSIShort mod (p_N * v_BC_CC_Chans)) mod p_N); + } + + //---------------------------------------------------------------------------- + /* + * @desc To calculate the packet paging group + * @param p_IMSI + * @param p_KC_Conf + * @param p_M + * @param p_N + * @param p_SplitPGCycleBits + * @return integer + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_PacketPagingGroupCalculate(hexstring p_IMSI, + integer p_KC_Conf, + integer p_M, + integer p_N, + B8_Type p_SplitPGCycleBits) return integer + { + var integer v_Length := lengthof (p_IMSI); + var integer v_IMSIShort := (hex2int(p_IMSI[v_Length-3])*100) + (hex2int(p_IMSI[v_Length-2])*10) + (hex2int(p_IMSI[v_Length-1])); // IMSI mod 1000 is last 3 digits @sic R5s120106 sic@ + var integer v_SplitPGCycle := bit2int(p_SplitPGCycleBits); + var integer i := 0; + var integer v_Val := 0; + var integer v_LoopCount := 0; + + if (p_M < v_SplitPGCycle) + { + v_LoopCount := p_M; + } + else + { + v_LoopCount := v_SplitPGCycle; + } + // for I = (0,...,Min(M, SplitPGCycle)-1 + for (i := 0; i < v_LoopCount; i := i +1) + { + // MAX(I*M) div SPLITPGCycle, I) + if (((i*p_M)/v_SplitPGCycle) > i) + { + v_Val := v_Val + ((i * p_M)/v_SplitPGCycle); + } + else + { + v_Val := v_Val + i; + } + } + return (((v_IMSIShort/(p_KC_Conf*p_N))*p_N) + (v_IMSIShort mod p_N) + v_Val) mod p_M; + } + + //============================================================================= + // Structured Type templates + //----------------------------------------------------------------------------- + + template (value) SI2terMeasParamDescr3G cs_SI2terMeasParamDescr3G(B4_Type p_Qsearch_I, + B4_Type p_FDD_Qoffset, + B3_Type p_FDD_Qmin) := + { + qsearch_I := p_Qsearch_I, + fDDMask := '1'B, + fDD_Qoffset := p_FDD_Qoffset, // not present if fDDMask = 0 + fDD_Qmin := p_FDD_Qmin, // not present if fDDMask = 0 + tDDMask := '0'B, + tDD_Qoffset := omit // not present if tDDMask = 0 + }; + + //----------------------------------------------------------------------------- + + template (value) SI2terRO cs_Meas_3G(B4_Type p_Qsearch_I, + B4_Type p_FDD_Qoffset, + B3_Type p_FDD_Qmin) := + { + mask := '1'B, + sI2ter_MP_CHANGE_MARK := '0'B, + sI2ter_3G_CHANGE_MARK := '0'B, + sI2ter_INDEX := '010'B, + sI2ter_COUNT := '010'B, + fDDMask := '0'B, + uTRAN_FDD_Description := omit, // not present if fDDMask = 0 + tDDMask := '0'B, + uTRAN_TDD_Description := omit, // not present if tDDMask = 0 + measMask := '1'B, + measurementParams3G := cs_SI2terMeasParamDescr3G(p_Qsearch_I , p_FDD_Qoffset, p_FDD_Qmin), // not present if measMask = 0 13 bits + rel5Mask := '0'B, + addMeasMask := omit, // not present if mask = L or rel5Mask = L + addMeasParam3G := omit // not present if mask = L, rel5Mask = L or addMeasMask = 0 + }; + + //----------------------------------------------------------------------------- + + template (value) AdditionalMeasParam3G cs_AddMeasParam3G := + { + fddQminOffset := '000'B, + fddRSCPmin := '0111'B + }; + + //----------------------------------------------------------------------------- + + template (value) CCCH_Info cs_CCCH_Info(bitstring p_BS_PA_MFRMS, + bitstring p_BS_AG_BLKS_RES) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + bS_PA_MFRMS := p_BS_PA_MFRMS, + bS_AG_BLKS_RES := p_BS_AG_BLKS_RES + }; + + //----------------------------------------------------------------------------- + + template (value) CellDescr cs_G_CellDescr(B3_Type p_NCC, + B3_Type p_BCC, + integer p_ARFCN) := + { /* BCCH channel for Cell A */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + bCCH_ARFCN_h := substr( int2bit( p_ARFCN, 10), 0, 2), // bcch arfcn high part + nCC := p_NCC, // PLMN colour code + bCC := p_BCC, // BS colour code + bCCH_ARFCN_l := substr( int2bit( p_ARFCN, 10), 2, 8) // bcch arfcn low part + }; + + //----------------------------------------------------------------------------- + + template (value) CellOptionBCCH cs_CellOptionBCCH(template (value) B1_Type p_DN_Ind, + template (value) B2_Type p_DTX, + template (value) B4_Type p_RadioLinkTimeout) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + iei := omit, // information lelement identifier + dN_Ind := p_DN_Ind, // dynamic ARFCN mapping indicator + pwrc := '0'B, // power control indicator + dtx := p_DTX, // discontinuous transmission indicator + radioLinkTimeout := p_RadioLinkTimeout // radio link timeout + }; + + //----------------------------------------------------------------------------- + + template (value) CellOptionSACCH cs_CellOptionSACCH(template (value) B1_Type p_DTX8, + template (value) B2_Type p_DTX65, + template (value) B4_Type p_RadioLinkTimeout) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + iei := omit, // information lelement identifier + dtx8 := p_DTX8, // discontinuous transmission indicator, most signifigent bit + pwrc := '0'B, // power control indicator + dtx65 := p_DTX65, // discontinuous transmission indicator + radioLinkTimeout := p_RadioLinkTimeout // radio link timeout + }; + + //----------------------------------------------------------------------------- + + template (value) CellSelParam cs_CellSelParam(B3_Type p_CellReselHysteresis, + B5_Type p_MS_TXPWR_MAX_CCH, + B1_Type p_ACS, + B1_Type p_NECI, + B6_Type p_RXLEV_ACCESS_MIN) := + { + cellReselHysteresis := p_CellReselHysteresis, // cell reselected hysteresis + mS_TXPWR_MAX_CCH := p_MS_TXPWR_MAX_CCH, // MS maximum TX power for CCH + acs := p_ACS, // additional reselect parameter indicator + neci := p_NECI, // half rate support + rXLEV_ACCESS_MIN := p_RXLEV_ACCESS_MIN // MS minimum received signal level + }; + + //----------------------------------------------------------------------------- + + template (value) ChannelDescr cs_G_ChannelDescr(B5_Type p_ChType, + B3_Type p_TN, + B10_Type p_ARFCN, + B3_Type p_TSC) := + { /* Channel description + 3GPP TS 44.018 clause 10.5.2.5 */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + iei := omit, // '01100100'B + cht_schn := p_ChType, // channel type and TDMA offset + tn := p_TN, // timeslot number + tsc := p_TSC, // training sequence code + hch := tsc_RR_HopOff, // hch = 1 indicating hopping channel + maio := omit, // mobile allocation index offset - hopping + hsn := omit, // hopping sequence number - hopping + spr := '00'B, // '00'B - non hopping + arfcn := p_ARFCN // absolute RF channel number - non hopping + }; + + template (value) ChannelDescr cs_ChannelDescr_FH(B5_Type p_Cht_Schn, + B3_Type p_TN, + B3_Type p_TSC, + B6_Type p_Maio, + B6_Type p_HSN) := + { /* Channel description 2 + 3GPP TS 44.018 clause 10.5.2.5a */ + iei := omit, // '01100110'B + cht_schn := p_Cht_Schn, // channel type and TDMA offset + tn := p_TN, // timeslot number + tsc := p_TSC, // training sequence code + hch := '1'B, // hch = 1 indicating hopping channel + maio := p_Maio, // mobile allocation index offset - hopping + hsn := p_HSN, // hopping sequence number - hopping + spr := omit, // '00'B - non hopping + arfcn := omit // absolute RF channel number - non hopping + }; + + //----------------------------------------------------------------------------- + + template (value) ChMode cs_ChMode(template (omit) IEI8_Type p_IEI := '63'O, B8_Type p_Mode) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + iei := p_IEI, // @sic R5s120498 sic@ + mode := p_Mode + }; + + template (value) ChMode cs_G_ChModeSpeechFROrHRV1 := cs_ChMode('63'O, '00000001'B); /* speech full rate or half rate version 1 + @status APPROVED (LTE_A, LTE_IRAT) */ + + //----------------------------------------------------------------------------- + + template (value) ChNeeded cs_G_ChneededAny := + { /* any channel */ + /* @status APPROVED (LTE_IRAT) */ + iei := omit, // information element identity + ch2 := '00'B, + ch1 := '00'B + }; + + //----------------------------------------------------------------------------- + + template (present) ChReqDescr cr_ChReqDescrAny := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + pkThrouputClass := ?, + radioPriority := ?, + rlcMode := ?, // 0 - RLC acknowledged mode + // 1 - RLC unacknowledged mode + llcPduType := ?, // 0 - LLC PDU is SACK or ACK + // 1 - LLC PDU is not SACK or ACK + rlcOctetCount := ? + }; + + //----------------------------------------------------------------------------- + + template (present) ChReqDescr2 cr_ChReqDescr2 := + { + ielength := ?, + pktEstCause := ?, // Packet Establishment Cause + chReqDescr := cr_ChReqDescrAny, + mask := ?, + pFI := *, // not present if mask=0 + multiTBFCap := ?, + maskR7 := ?, + rlcNonPModeCap := *, + reducedLatencyCap := *, + ulEGPRS2 := *, + dlEGPRS2 := *, + maskR9 := ?, // @sic R5s110176 sic@ + emstMSCap := *, // not present if maskR9 = 0 @sic R5s110176 sic@ + maskR10 := ?, // @sic R5s110178 Baseline Moving sic@ + emsrMSCap := *, // not present if maskR10 = 0 @sic R5s110178 Baseline Moving sic@ + maskR11 := *, // @sic R5s130195 Baseline Moving sic@ + fanrCap := *, // not present if maskR11 = 0 @sic R5s130195 Baseline Moving sic@ + sparepadding := * // uplink message + }; + + //----------------------------------------------------------------------------- + + template (present) ExtChReqDescr cr_ExtChReqDescrAny := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + pFI := ?, + radioPrior := ?, + rlcMode := ?, + mask1 := ?, + llcPduType := *, // not present if mask1 = 0 + repeatMask := '0'B // always 0 as only one instance defined for PRR + }; + + //----------------------------------------------------------------------------- + + template (present) IuModeChReqDescr cr_IuModeChReqDescrAny := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + rBId := ?, + radioPrior := ?, + mask1 := ?, + rlcOctetCount := *, // not present if mask1 = 0 + repeatMask := '0'B // always 0 as only one instance defined for PRR + }; + + //----------------------------------------------------------------------------- + + template (value) ChannelSpecificInfo cs_ChSpecificPara(template (omit) DedCH_Info p_DedChInfo , + template (omit) CCCH_Info p_CCCH_Info ) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + dedCH_Info := p_DedChInfo , // parameters for dedicated channel. valid for combinations: 1, 2, 3, 5, 7, 8, 9, 10 + cCCH_Info := p_CCCH_Info // parameters for common control channels: PCH, SCH, ... valid for combinations: 4, 5, 6 + }; + + //----------------------------------------------------------------------------- + + template (value) CipherModeSetting cs_CipherModeSetting(B1_Type p_StartCiph) := + { /* Cipher mode setting + 3GPP TS 44.018 clause 10.5.2.9 */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + iei := omit, + algId := px_GSM_CipherAlg, // algorithm identifier + startingCiph := p_StartCiph // starting ciphering, 1 = start + }; + + template (value) CipherModeSetting cs_CipherModeSettingGSM := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + iei := '9'H, // '1001'B + algId := px_GSM_CipherAlg, // algorithm identifier + startingCiph := px_GSM_CipheringOnOff // starting ciphering + }; + + //----------------------------------------------------------------------------- + + template (value) CipherResponse cs_CipherResponse := + { /* Cipher response + 3GPP TS 44.018 clause 10.5.2.10 */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + iei := omit, // '1010'B + spareBits := '000'B, // spare bits + cipherResponse := '0'B // cipher response bit + }; + + //----------------------------------------------------------------------------- + + template (value) ControlChDescr cs_ControlChDescr(B1_Type p_ATT, + B3_Type p_BS_AG_BLKS_RES, + B3_Type p_CCCH_CONF, + B3_Type p_BS_PA_MFRMS, + B2_Type p_CBQ3, + O1_Type p_T3212) := + { + mSCRelease := '1'B, // release 99 onwards + att := p_ATT, // attach-detach allowed + bS_AG_BLKS_RES := p_BS_AG_BLKS_RES, // base station access grant blocks reservation + cCCH_CONF := p_CCCH_CONF, // CCCH configuration + si22Ind := '0'B, // @sic R5s130195 Baseline Moving sic@ + cBQ3 := p_CBQ3, // cell bar qualify 3 @sic R5s130195 Baseline Moving sic@ + spareBits := '00'B, // spare bits + bS_PA_MFRMS := p_BS_PA_MFRMS, // number of multiframes for paging request + t3212 := p_T3212 // t3212 value + }; + + //----------------------------------------------------------------------------- + + template (value) DedCH_Info cs_DedCh(template (value) ChMode p_ChannelMode, + template (value) CipherModeSetting p_CipherMode, + B64_Type p_CiphyKey, + B5_Type p_PowerLevel, + B7_Type p_TimingAdvance) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + chMode := p_ChannelMode, // channel mode see 3GPP TS 44.018 section 10.5.2.6 + cipherMode := p_CipherMode, // cipher mode setting see 3GPP TS 44.018 section 10.5.2.9 + cipherKey := p_CiphyKey, + cipherKey128 := px_CipherKey128, // @sic R5-144746 sic@ + powerLevel := p_PowerLevel, // power level value used in L1 header + timingAdvance := p_TimingAdvance // timing advance value used in L1 header + }; + + template (value) DedCH_Info cs_SDCCH4_Ch(template (value) CipherModeSetting p_CipherMode, + B64_Type p_CipherKey, + B5_Type p_PowerLevel, + B7_Type p_TimingAdvance) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_DedCh(cs_ChMode(omit, tsc_SignallingOnly), p_CipherMode, p_CipherKey, p_PowerLevel, p_TimingAdvance); // @sic R5s120498 sic@ + + //----------------------------------------------------------------------------- + + template (value) DedicatedModeOrTBF cs_G_DedicatedModeOrTBF := + { /* Reference : 3GPP TS 44.018 clause 10.5.2.25b */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + iei := omit, // information element identifier + spareBit := '0'B, // always = 0 + twoMsgAssig := '0'B, // two message assignment + downlink := '0'B, // down link assignement + tBForDedicated := '0'B // TBF or dedicated mode + }; + + template (value) DedicatedModeOrTBF cs_G_TBFMode(B1_Type p_Downlink) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + iei := omit, // information element identifier + spareBit := '0'B, // always = 0 + twoMsgAssig := '0'B, // two message assignment + downlink := p_Downlink, // down link assignement + tBForDedicated := '1'B // TBF or dedicated mode + }; + + //----------------------------------------------------------------------------- + + template (value) PacketTimingAdvance cs_PacketTimingAdvance(B1_Type p_TAValueMask := '1'B, + template (omit) B6_Type p_TimingAdvanceValue) := // @sic R5s120587 sic@ + { /* 3GPP TS 44.060 clause 12.12 + Values are taken from 51010 clause 40.2.3.4 */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + taValueMask := p_TAValueMask, + timingAdvanceValue := p_TimingAdvanceValue, // not present if taValueMask = 0 30 bit periods + taIndexMask := '0'B, + timingAdvanceIndex := omit, // not present if taIndexMask = 0 + timingAdvanceSlotNumber := omit // not present if taIndexMask = 0 + }; + + template (value) PacketTimingAdvance cs_PacketTimingAdvance_NoTA := cs_PacketTimingAdvance('0'B, omit); + + //----------------------------------------------------------------------------- + + template (value) RRPacketDownlinkAssignment cs_DL_PktAss(B8_Type p_Timeslot, + B6_Type p_TA) := + { + tag := '00100011'B, // '00100011' + ielength := '04'O, + mACMode := '00'B, // Dynamic allocation + rLCMode := '0'B, // Acknowledged mode + timeslotAllocation := p_Timeslot, + pktTA := cs_PacketTimingAdvance (-, p_TA), // @sic R5s120587 sic@ + mask := '0'B, + p0 := omit, // not present if mask=0 + spareBit := omit, // set to 0. not present if mask=0 + prMode := omit, // not present if mask=0 + pcmask := '0'B, + powerCntrolParam := omit, // not present if pcmask = 0 + tfimask := '1'B, + dlTFI := tsc_DownlinkTFI, // not present if tfimask = 0 + spareBit2 := '0'B, // set to 0 + egprsmask := '0'B, + eGPRSWindowSize := omit, // not present if egprsmask = 0 + linkQualMeasMode := omit, // not present if egprsmask = 0 + tamask := '0'B, + pktExtendedTA := omit, // not present if tamask = 0 + r6Mask := '0'B, + multiDLTBFAssign := omit, // not present if r6Mask = 0. if present always set to '1' + r7Mask := omit, // not present if r6Mask = 0 + fanr := omit, // not present if r6Mask or r7Mask = 0 + rptdNPM := omit, // not present if r6Mask or r7Mask = 0 + eGPRSLevel := omit, // not present if r6Mask or r7Mask = 0 @sic R5s100135 sic@ + r8Mask := omit, // not present if r6Mask or r7Mask = 0 + eutranMask := omit, // not present if r6Mask or r7Mask = 0 or r8Mask = 0 + eutranMeasCtrl := omit, // not present if r6Mask or r7Mask or r8Mask or eutranMask= 0 + utranMask := omit, // not present if r6Mask or r7Mask = 0 or r8Mask = 0 + utranMeasCtrl := omit, // not present if r6Mask or r7Mask or r8Mask or utranMask= 0 + r9Mask := omit, // @sic R5s110176 sic@ + emstMask := omit, // @sic R5s110176 sic@ + rlcEntity2 := omit, // @sic R5s110176 sic@ + entity3Mask := omit, // @sic R5s110176 sic@ + rlcEntity3 := omit, // @sic R5s110176 sic@ + r10Mask := omit, // not present if r6mask, r7Mask, r8Mask or r9Mask = 0 @sic R5s120178 sic@ + emsrAddPFC1 := omit, // not present if r6mask, r7Mask, r8Mask, r9Mask or r10Mask = 0 @sic R5s120178 sic@ + emsrAddPFC2 := omit, // not present if r6mask, r7Mask, r8Mask, r9Mask or r10Mask = 0 @sic R5s120178 sic@ + emsrAddPFC3 := omit // not present if r6mask, r7Mask, r8Mask, r9Mask or r10Mask = 0 @sic R5s120178 sic@ + }; + + //----------------------------------------------------------------------------- + + template (value) DynamicAllocation cs_DynamicAllocation := + { /* It defines all the necessary parameters for dynamic allocation for the TBF. + The uSF_TNx field is not applicable when tNx = FALSE. */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + extendedAlloc := '0'B, // 0 - dynamic allocation; 1 - extended dynamic allocation + uSFGranularity := '0'B, // 0 - one block; 1 - four blocks + physicalChId := tsc_PhyCh1, + tN0 := false, // TRUE - time slot 0 is allocated; FALSE -- not allocated + uSF_TN0 := omit, // USF value for slot 0 + tN1 := false, // TRUE - time slot 1 is allocated; FALSE -- not allocated + uSF_TN1 := omit, // USF value for slot 1 + tN2 := false, // TRUE - time slot 2 is allocated; FALSE -- not allocated + uSF_TN2 := omit, // USF value for slot 2 + tN3 := false, // TRUE - time slot 3 is allocated; FALSE -- not allocated + uSF_TN3 := omit, // USF value for slot 3 + tN4 := true, // TRUE - time slot 4 is allocated; FALSE -- not allocated + uSF_TN4 := tsc_DefUSF, // USF value for slot 4 + tN5 := false, // TRUE - time slot 5 is allocated; FALSE -- not allocated + uSF_TN5 := omit, // USF value for slot 5 + tN6 := false, // TRUE - time slot 6 is allocated; FALSE -- not allocated + uSF_TN6 := omit, // USF value for slot 6 + tN7 := false, // TRUE - time slot 7 is allocated; FALSE -- not allocated + uSF_TN7 := omit // USF value for slot 7 + }; + + //----------------------------------------------------------------------------- + + template (value) TimeSlotAllocation_UA cs_TimeSlotAllocation_UA_TN4(B3_Type p_USF) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + tN0mask := '0'B, + uSF_TN0 := omit, // not present if tN0mask=0 + tN1mask := '0'B, + uSF_TN1 := omit, // not present if tN1mask=0 + tN2mask := '0'B, + uSF_TN2 := omit, // not present if tN2mask=0 + tN3mask := '0'B, + uSF_TN3 := omit, // not present if tN3mask=0 + tN4mask := '1'B, + uSF_TN4 := p_USF, // not present if tN4mask=0 + tN5mask := '0'B, + uSF_TN5 := omit, // not present if tN5mask=0 + tN6mask := '0'B, + uSF_TN6 := omit, // not present if tN6mask=0 + tN7mask := '0'B, + uSF_TN7 := omit // not present if tN7mask=0 + }; + + //----------------------------------------------------------------------------- + + template (value) DynamicAllocationPacket cs_DynamicAllocationPacket := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + extendedAllocMask := '0'B, // 0 - dynamic allocation; 1 - extended dynamic allocation + mask := '0'B, + p0 := omit, // not present if mask=0 + pR_Mode := omit, // not present if mask=0 + uSFGranularity := '0'B, // 0 - one block; 1 - four blocks + // one block + uplinkTFImask := '1'B, + uplinkTFI := '00000'B, // not present if uplinkTFImask=0 + spareBit := '0'B, + tBFStartingTimeMask := '0'B, // no starting time + tBFStartingTime := omit, // not present if tBFStartingTimeMask=0 + timeSlotAllocMask := '0'B, // @sic R5s120494 sic@ + timeSlotAlloc := cs_TimeSlotAllocation_UA_TN4(tsc_DefUSF), // not present if timeSlotAllocMask=1 + timeSlotAllocPowerControl := omit // not present if timeSlotAllocMask=0 + }; + + //----------------------------------------------------------------------------- + + template (value) DYNAMIC_ARFCN_MAPPING cs_DynMap(B4_Type p_GSMBand) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + gSM_Band := p_GSMBand, + aRFCN_FIRST := '0000000001'B, + bAND_OFFSET := '0110110110'B, + aRFCN_RANGE := '1011010'B + }; + + template (value) DYNAMIC_ARFCN_MAP_Descr cs_DynMapDescr (B4_Type p_GSMBand) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + mask := '1'B, + instance := cs_DynMap(p_GSMBand) + }; + + template (value) DYNAMIC_ARFCN_MAPPING_LIST cs_DynMapList1 (B4_Type p_GSMBand) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_DynMapDescr (p_GSMBand), + { + mask := '0'B, + instance := omit + } + }; + + //----------------------------------------------------------------------------- + + template (present) EGPRSBEPQualityMeas cr_EGPRSBEPLinkQualAny := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + mask1 := ?, + gMSKMeanBEP := *, // not present if mask1 = 0 + gMSKCVBEP := *, // not present if mask1 = 0 + mask2 := ?, + pSKMeanBEP := *, // not present if mask2 = 0 + pSKCVBEP := * // not present if mask2 = 0 + }; + + //----------------------------------------------------------------------------- + + template (present) EGPRSTimeslotLinkQualityMeas cr_EGPRSTNLinkQualAny := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + mask1 := ?, + tnmaskA0 := *, // not present if mask1 = 0 + tnmaskB0 := *, // not present if mask1 or tnmaskA0 = 0 + gMSKMeanBEPTN0 := *, // not present if mask1 or tnmaskA0 = 0 or tnMaskB0 = 1 + pSKMeanBEPTN0 := *, // not present if mask1 or tnmaskA0 = 0 or tnMaskB0 = 0 + tnmaskA1 := *, // not present if mask1 = 0 + tnmaskB1 := *, // not present if mask1 or tnmaskA1 = 0 + gMSKMeanBEPTN1 := *, // not present if mask1 or tnmaskA1 = 0 or tnMaskB1 = 1 + pSKMeanBEPTN1 := *, // not present if mask1 or tnmaskA1 = 0 or tnMaskB1 = 0 + tnmaskA2 := *, // not present if mask1 = 0 + tnmaskB2 := *, // not present if mask1 or tnmaskA2 = 0 + gMSKMeanBEPTN2 := *, // not present if mask1 or tnmaskA2 = 0 or tnMaskB2 = 1 + pSKMeanBEPTN2 := *, // not present if mask1 or tnmaskA2 = 0 or tnMaskB2 = 0 + tnmaskA3 := *, // not present if mask1 = 0 + tnmaskB3 := *, // not present if mask1 or tnmaskA3 = 0 + gMSKMeanBEPTN3 := *, // not present if mask1 or tnmaskA3 = 0 or tnMaskB3 = 1 + pSKMeanBEPTN3 := *, // not present if mask1 or tnmaskA3 = 0 or tnMaskB3 = 0 + tnmaskA4 := *, // not present if mask1 = 0 + tnmaskB4 := *, // not present if mask1 or tnmaskA4 = 0 + gMSKMeanBEPTN4 := *, // not present if mask1 or tnmaskA4 = 0 or tnMaskB4 = 1 + pSKMeanBEPTN4 := *, // not present if mask1 or tnmaskA4 = 0 or tnMaskB4 = 0 + tnmaskA5 := *, // not present if mask1 = 0 + tnmaskB5 := *, // not present if mask1 or tnmaskA5 = 0 + gMSKMeanBEPTN5 := *, // not present if mask1 or tnmaskA5 = 0 or tnMaskB5 = 1 + pSKMeanBEPTN5 := *, // not present if mask1 or tnmaskA5 = 0 or tnMaskB5 = 0 + tnmaskA6 := *, // not present if mask1 = 0 + tnmaskB6 := *, // not present if mask1 or tnmaskA6 = 0 + gMSKMeanBEPTN6 := *, // not present if mask1 or tnmaskA6 = 0 or tnMaskB6 = 1 + pSKMeanBEPTN6 := *, // not present if mask1 or tnmaskA6 = 0 or tnMaskB6 = 0 + tnmaskA7 := *, // not present if mask1 = 0 + tnmaskB7 := *, // not present if mask1 or tnmaskA7 = 0 + gMSKMeanBEPTN7 := *, // not present if mask1 or tnmaskA7 = 0 or tnMaskB7 = 1 + pSKMeanBEPTN7 := *, // not present if mask1 or tnmaskA7 = 0 or tnMaskB7 = 0 + mask2 := ?, + imask0 := *, // not present if mask2 = 0 + ilevelTN0 := *, // not present if mask2 or imask0 = 0 + imask1 := *, // not present if mask2 = 0 + ilevelTN1 := *, // not present if mask2 or imask1 = 0 + imask2 := *, // not present if mask2 = 0 + ilevelTN2 := *, // not present if mask2 or imask2 = 0 + imask3 := *, // not present if mask2 = 0 + ilevelTN3 := *, // not present if mask2 or imask3 = 0 + imask4 := *, // not present if mask2 = 0 + ilevelTN4 := *, // not present if mask2 or imask4 = 0 + imask5 := *, // not present if mask2 = 0 + ilevelTN5 := *, // not present if mask2 or imask5 = 0 + imask6 := *, // not present if mask2 = 0 + ilevelTN6 := *, // not present if mask2 or imask6 = 0 + imask7 := *, // not present if mask2 = 0 + ilevelTN7 := * // not present if mask2 or imask7 = 0 + }; + + //----------------------------------------------------------------------------- + + template (value) FeatureInd cs_FeatureInd := + { /* @status APPROVED (LTE_IRAT) */ + spare := tsc_Spare2, + csIR := '0'B, + psIR := '0'B + }; + + template (value) UTRAN_FDD_Descr cs_G_FDD_Descr1N_1F(B14_Type p_ARFCN, + bitstring p_ScrmCode) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + bandwidthMask := '0'B, + bandwidthFDD := omit, // not present if bandwidthMask = 0 + repeatedUTRAN_FDD_NeighbourCells1 := { + cs_G_FDD_RptDescr1( p_ARFCN, p_ScrmCode), + cs_G_FDD_DescrListEmpty + } + }; + + template (value) UTRAN_FDD_Descr cs_G_FDD_Descr3N_2F(B14_Type p_ARFCN1, // The 1st freq contains 2 cells, but the scrmCode is hardcoded + B14_Type p_ARFCN2, + bitstring p_ScrmCode) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + bandwidthMask := '0'B, + bandwidthFDD := omit, // not present if bandwidthMask = 0 + repeatedUTRAN_FDD_NeighbourCells1 := { + cs_G_FDD_RptDescr2( p_ARFCN1), + cs_G_FDD_RptDescr1( p_ARFCN2, p_ScrmCode), + cs_G_FDD_DescrListEmpty + } + }; + + //----------------------------------------------------------------------------- + + template (value) RepeatedUTRAN_FDD_NeighCellList cs_G_FDD_DescrList1(B14_Type p_ARFCN, + bitstring p_ScrmCode) := + { + cs_G_FDD_RptDescr1 (p_ARFCN, p_ScrmCode), cs_G_FDD_DescrListEmpty + }; + + //----------------------------------------------------------------------------- + + template (value) RepeatedUTRANFDDNeighCell cs_G_FDD_DescrListEmpty := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + prefix := '0'B, + iteration := omit + }; + + template (value) RepeatedUTRANFDDNeighCell cs_G_FDD_RptDescr1(B14_Type p_ARFCN, + bitstring p_ScrmCode) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + prefix := '1'B, + iteration := cs_G_FDD_NeighCell1 (p_ARFCN, p_ScrmCode) + }; + + template (value) RepeatedUTRANFDDNeighCell cs_G_FDD_RptDescr2(B14_Type p_ARFCN) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + prefix := '1'B, + iteration := cs_G_FDD_NeighCell2 (p_ARFCN) + }; + + //----------------------------------------------------------------------------- + + template (value) RepeatedUTRAN_FDD_NeighCells cs_G_FDD_NeighCell1(B14_Type p_ARFCN, + bitstring p_ScrmCode) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + arfcnIndexMask := '0'B, + fDD_ARFCN := p_ARFCN, + fDD_Indic0 := '0'B, + nR_OF_FDD_CELLS := '00001'B, + fDD_CELL_INFORMATION := p_ScrmCode // length of this bitstring = p(nR_OF_FDD_CELLS) + }; + + //----------------------------------------------------------------------------- + + template (value) RepeatedUTRAN_FDD_NeighCells cs_G_FDD_NeighCell2(B14_Type p_ARFCN) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + arfcnIndexMask := '0'B, + fDD_ARFCN := p_ARFCN, + fDD_Indic0 := '0'B, + nR_OF_FDD_CELLS := '00010'B, + fDD_CELL_INFORMATION := '0100101100110011100'B // have to hardcode this as can't work it out on the fly + }; + + //----------------------------------------------------------------------------- + + template (value) UTRAN_TDD_Descr cs_G_TDD_Descr1N_1F(B14_Type p_ARFCN, + bitstring p_CellId) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + bandwidthMask := '0'B, + bandwidthTDD := omit, // not present if bandwidthMask = 0 + repeatedUTRAN_TDD_NeighbourCells1 := { + cs_G_TDD_RptDescr1( p_ARFCN, p_CellId), + cs_G_TDD_DescrListEmpty + } + }; + + template (value) UTRAN_TDD_Descr cs_G_TDD_Descr3N_2F(B14_Type p_ARFCN1, // The 1st freq contains 2 cells, but the scrmCode is hardcoded + B14_Type p_ARFCN2, + bitstring p_CellId2) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + bandwidthMask := '0'B, + bandwidthTDD := omit, // not present if bandwidthMask = 0 + repeatedUTRAN_TDD_NeighbourCells1 := { + cs_G_TDD_RptDescr2( p_ARFCN1), + cs_G_TDD_RptDescr1( p_ARFCN2, p_CellId2), + cs_G_TDD_DescrListEmpty + } + }; + + template (value) RepeatedUTRANTDDNeighCell cs_G_TDD_DescrListEmpty := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + prefix := '0'B, + iteration := omit + }; + + template (value) RepeatedUTRANTDDNeighCell cs_G_TDD_RptDescr1(B14_Type p_ARFCN, + bitstring p_CellId) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + prefix := '1'B, + iteration := cs_G_TDD_NeighCell1 (p_ARFCN, p_CellId) + }; + + template (value) RepeatedUTRANTDDNeighCell cs_G_TDD_RptDescr2(B14_Type p_ARFCN) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + prefix := '1'B, + iteration := cs_G_TDD_NeighCell2 (p_ARFCN) + }; + + //----------------------------------------------------------------------------- + + template (value) RepeatedUTRAN_TDD_NeighCells cs_G_TDD_NeighCell1(B14_Type p_ARFCN, + bitstring p_CellId) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + arfcnIndexMask := '0'B, + tDD_ARFCN := p_ARFCN, + tDD_Indic0 := '0'B, + nR_OF_TDD_CELLS := '00001'B, + tDD_CELL_INFORMATION := p_CellId // length of this bitstring = p(nR_OF_TDD_CELLS) + }; + + //----------------------------------------------------------------------------- + + template (value) RepeatedUTRAN_TDD_NeighCells cs_G_TDD_NeighCell2(B14_Type p_ARFCN) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + arfcnIndexMask := '0'B, + tDD_ARFCN := p_ARFCN, + tDD_Indic0 := '0'B, + nR_OF_TDD_CELLS := '00010'B, + tDD_CELL_INFORMATION := '00000000000000100'B // have to hardcode this as can't work it out on the fly + }; + + //----------------------------------------------------------------------------- + + template (value) EUTRANMeasParams_SI2 cs_EUTRAN_MeasParams_SI2 (template (value) RptdEUTRANNeighCells p_RptdEUTRANNeighCells, + B1_Type p_CCN_Active := '0'B, + template (value) EUTRANMeasParams p_EUTRANMeasParams := cs_EUTRAN_MeasParams) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + // @sic R5s110176 sic@ + // @sic R5s120016 Additional changes sic@ + eutranCCNActive := p_CCN_Active, + eutranMeasParams := p_EUTRANMeasParams, + gprsEutranMeasMask := '0'B, + gprsEutranMeasParams := omit, + neighCells := p_RptdEUTRANNeighCells, + notAllowedCells := cs_EUTRANNotAllowedCellsNone, + pcidToTA := cs_TAMappingNone + }; + + //----------------------------------------------------------------------------- + + template (value) RptdEUTRANNotAllowedCellsList cs_RptdEUTRANNotAllowedCell_None := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + prefix := '0'B, + notAllowed := omit + }; + + template (value) RptdEUTRANNotAllowedCells cs_RptdEUTRANNotAllowedCells_1 (template (value) RptdEUTRANNotAllowedCellsList p_RptdEUTRANNotAllowedCell) := + { /* @status APPROVED (LTE_IRAT) */ + p_RptdEUTRANNotAllowedCell, + cs_RptdEUTRANNotAllowedCell_None + }; + + template (value) RptdEUTRANNotAllowedCells cs_EUTRANNotAllowedCellsNone := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_RptdEUTRANNotAllowedCell_None + }; + + template (value) RptdEUTRANNotAllowedCellsStruct cs_NotAllowedCell_1 (template (value) PCIDGroup p_PCIDGroup, + template (value) EUTRANFreqIndex p_EUTRANFreqIndex) := + { /* @status APPROVED (LTE_IRAT) */ + notAllowedCells := p_PCIDGroup, // @sic R5s120303 sic@ + index := {p_EUTRANFreqIndex, cs_EUTRANFreqIndex_None } + }; + + template (value) RptdEUTRANNotAllowedCellsList cs_RptdEUTRANNotAllowedCell_1 (template (value) RptdEUTRANNotAllowedCellsStruct p_NotAllowedCell) := + { /* @status APPROVED (LTE_IRAT) */ + prefix := '1'B, + notAllowed := p_NotAllowedCell + }; + + template (value) PCIDGroup cs_PCIDGroup (B9_Type p_PCID) := + { /* @status APPROVED (LTE_IRAT) */ + pcid := { + { + mask := '1'B, + pcid := p_PCID + }, + { + mask := '0'B, + pcid := omit + } + }, + groupMask := '0'B, + bitmapGroup := omit, // only present if groupMask = 1 + pcidPattern := { + { + prefix := '0'B, + pcid := omit + } + } + }; + + template (value) EUTRANFreqIndex cs_EUTRANFreqIndex_1 (B3_Type p_Freq) := + { /* @status APPROVED (LTE_IRAT) */ + prefix := '1'B, + freq := p_Freq // only present if prefix = 1 @sic R5s110176 sic@ + }; + + template (value) EUTRANFreqIndex cs_EUTRANFreqIndex_None := + { /* @status APPROVED (LTE_IRAT) */ + prefix := '0'B, + freq := omit + }; + + template (value) RptdTAMapping cs_TAMappingNone := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + // @sic R5s110176 sic@ + { + prefix := '0'B, + list := omit + } + }; + + template (value) RptdEUTRANNeighCellsList cs_RptdEUTRAN_NeighCell (template (value) RptdEARFCN_BW p_RptdARFCNs, + template (omit) B3_Type p_Priority, + template (value) B5_Type p_ThreshHigh, + template (omit) B5_Type p_ThreshLow, + template (omit) B5_Type p_EutranQrxLevelMin) := + { /* @status APPROVED (LTE_IRAT) */ + prefix := '1'B, + cell := cs_EARFCN_NeighCell (p_RptdARFCNs, p_Priority, p_ThreshHigh, p_ThreshLow, p_EutranQrxLevelMin) + }; + + template (value) RptdEUTRANNeighCellsList cs_RptdEUTRAN_NeighCellEmpty := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + prefix := '0'B, + cell := omit + }; + + template (value) RptdEUTRANNeighCells cs_RptdEARFCNNeighCells (template (value) RptdEARFCN_BW p_RptdARFCNs) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + { + prefix := '1'B, + cell := cs_EARFCN_NeighCell (p_RptdARFCNs) + }, + cs_RptdEUTRAN_NeighCellEmpty + }; + + template (value) EUTRANNeighCell cs_EARFCN_NeighCell(template (value) RptdEARFCN_BW p_RptdARFCNs, + template (omit) B3_Type p_Priority := '100'B, + template (value) B5_Type p_ThreshHigh := '00010'B, + template (omit) B5_Type p_ThreshLow := '00010'B, + template (omit) B5_Type p_EutranQrxLevelMin := '10001'B) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + /* @sic R5s110683 Additional Changes sic@ */ + earfcnBW := p_RptdARFCNs, + pMask := f_ConvertBoolToBit(isvalue(p_Priority)), + priority := p_Priority, + threshHigh := p_ThreshHigh, + lowMask := f_ConvertBoolToBit(isvalue(p_ThreshLow)), + threshLow := p_ThreshLow, // not present if lowMask = 0 + qMask := f_ConvertBoolToBit(isvalue(p_EutranQrxLevelMin)), + eutranQrxLevelMin := p_EutranQrxLevelMin // not present if qMask = 0 + }; + + //----------------------------------------------------------------------------- + + template (value) EARFCN_BW cs_EARFCN_BW(B16_Type p_ARFCN, + template (omit) B3_Type p_BW) := // @sic GP-120009 sic@ + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + /* @sic R5s110683 Additional Changes sic@ */ + earfcn := p_ARFCN, + mask := f_ConvertBoolToBit(isvalue(p_BW)), + measBW := p_BW + }; + + //----------------------------------------------------------------------------- + + template (value) EARFCN_BWList cs_EARFCN_BWList (B16_Type p_ARFCN, + template (omit) B3_Type p_BW) := // @sic GP-120009 sic@ + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + /* @sic R5s110683 Additional Changes sic@ */ + prefix := '1'B, + item := cs_EARFCN_BW(p_ARFCN, p_BW) + }; + + template (value) EARFCN_BWList cs_EARFCN_BWEmpty := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + prefix := '0'B, + item := omit + }; + + //----------------------------------------------------------------------------- + + template (value) RptdEARFCN_BW cs_RptdEARFCNList1 (B16_Type p_ARFCN1, + template (omit) B3_Type p_BW) := // @sic GP-120009 sic@ + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_EARFCN_BWList (p_ARFCN1, p_BW), + cs_EARFCN_BWEmpty + }; + + template (value) RptdEARFCN_BW cs_RptdEARFCNList2 (B16_Type p_ARFCN1, + template (omit) B3_Type p_BW1, // @sic GP-120009 sic@ + B16_Type p_ARFCN2, + template (omit) B3_Type p_BW2) := // @sic GP-120009 sic@ + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_EARFCN_BWList (p_ARFCN1, p_BW1), + cs_EARFCN_BWList (p_ARFCN2, p_BW2), + cs_EARFCN_BWEmpty + }; + + template (value) RptdEARFCN_BW cs_RptdEARFCNList3 (B16_Type p_ARFCN1, + template (omit) B3_Type p_BW1, // @sic GP-120009 sic@ + B16_Type p_ARFCN2, + template (omit) B3_Type p_BW2, // @sic GP-120009 sic@ + B16_Type p_ARFCN3, + template (omit) B3_Type p_BW3) := // @sic GP-120009 sic@ + { + cs_EARFCN_BWList (p_ARFCN1, p_BW1), + cs_EARFCN_BWList (p_ARFCN2, p_BW2), + cs_EARFCN_BWList (p_ARFCN3, p_BW3), + cs_EARFCN_BWEmpty + }; + + template (value) RptdEARFCN_BW cs_RptdEARFCNList4 (B16_Type p_ARFCN1, + template (omit) B3_Type p_BW1, // @sic GP-120009 sic@ + B16_Type p_ARFCN2, + template (omit) B3_Type p_BW2, // @sic GP-120009 sic@ + B16_Type p_ARFCN3, + template (omit) B3_Type p_BW3, // @sic GP-120009 sic@ + B16_Type p_ARFCN4, + template (omit) B3_Type p_BW4) := // @sic GP-120009 sic@ + { /* @status */ + cs_EARFCN_BWList (p_ARFCN1, p_BW1), + cs_EARFCN_BWList (p_ARFCN2, p_BW2), + cs_EARFCN_BWList (p_ARFCN3, p_BW3), + cs_EARFCN_BWList (p_ARFCN4, p_BW4), + cs_EARFCN_BWEmpty + }; + + //----------------------------------------------------------------------------- + + template (value) EUTRANMeasParams cs_EUTRAN_MeasParams := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + /* @sic R5s110176 sic@ */ + eutranStart := '1'B, // only instance + eutranStop := '1'B, // only instance + measParamsMask := '0'B, + qSearchCInitial := omit, // @sic R5s100135 sic@ + eutran_REP_QUANT := omit, // RSRP + eutran_MULTIRAT_REPORTING := omit, + reportOffsetMask := omit, + fDD_ReportingMask := omit, // not present if reportOffsetMask = 1 + fDD_REPORTING_THRESHOLD := omit, + fDD_MeasRptOffset := omit, // not present if fDD_ReportingMask = 0 or reportOffsetMask =0 + fDD_Reporting2Mask := omit, // not present if reportOffsetMask = 1 + fDD_REPORTING_THRESHOLD2 := omit, // not present if reportOffsetMask or fddReportMask = 0 or fddReport2Mask =0 + fDD_OffsetMask := omit, // not present if reportOffsetMask = 1 or fddReportMask = 0 + fDD_RptOffset := omit, // not present if reportOffsetMask =1 or fddReportMask = 0 or fddOffsetMask = 0 + tDD_ReportingMask := omit, // not present if reportOffsetMask = 1 or fddReportMask = 0 + tDD_REPORTING_THRESHOLD := omit, + tDD_MeasRptOffset := omit, // not present if fDD_ReportingMask = 0 or reportOffsetMask =0 + tDD_Reporting2Mask := omit, // not present if reportOffsetMask = 1 or tddReportMask = 0 + tDD_REPORTING_THRESHOLD2 := omit, // not present if reportOffsetMask = 1 or tddReportMask = 0 or tddReport2Mask =0 + tDD_OffsetMask := omit, // not present if reportOffsetMask = 1 or tddReportMask = 0 + tDD_RptOffset := omit, // not present if reportOffsetMask =1 or tddReportMask = 0 or tddOffsetMask = 0 + reportingGranularity := omit // not present if reportOffsetMask = 0 + }; + + //----------------------------------------------------------------------------- + + template (value) FreqInfo cs_FreqInfo(B10_Type p_ARFCN) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + h := '0'B, // h='1'B: hopping channel; h='0'B: non-hopping channel + spr := '000'B, // '000'B + spr1 := '00'B, // '00'B, if h = '0'B, otherwise OMIT + maio := omit, // mobile allocation index offset if h = '1'B, otherwise OMIT + hsn := omit, // hopping sequence number if h = '1'B, otherwise OMIT + arfcn := p_ARFCN, // absolute RF channel number if h = '0'B, otherwise OMIT + hoppingFreqList := omit // hopping frequency list if h='1'B, otherwise OMIT. + // the definition see 3GPP TS 44.018 section 10.5.2.13 + }; + + //----------------------------------------------------------------------------- + + template (value) FreqParam cs_FreqParam(B3_Type p_TSC, + B10_Type p_ARFCN) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + tSC := p_TSC, + encodingMask := '00'B, + aRFCN := p_ARFCN, // present if encodingMask = '00'B + indirectEncoding := omit, // present if encodingMask = '01'B + directEncoding1 := omit, // present if encodingMask = '10'B + directEncoding2 := omit // present if encodingMask = '11'B + }; + + template (value) FreqParam cs_FreqParam_BCCH(B10_Type p_ARFCN) := cs_FreqParam('101'B, p_ARFCN); /* @status */ + template (value) FreqParam cs_FreqParam_PDTCH(B10_Type p_ARFCN) := cs_FreqParam(px_TSC, p_ARFCN); /* @status APPROVED (LTE_A, LTE_IRAT) */ + + //----------------------------------------------------------------------------- + + template (present) GlobalTFI cr_GlobalTFIAny := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + tFIMask := ?, + uplinkTFI := *, // not present if TFImask=1 + downlinkTFI := * // not present if TFImask=0 + }; + + //----------------------------------------------------------------------------- + + template (value) GlobalTFI cs_GlobalTFIul := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + tFIMask := '0'B, + uplinkTFI := tsc_UplinkTFI, // not present if TFImask=1 + downlinkTFI := omit // not present if TFImask=0 + }; + + template (value) GlobalTFI cs_GlobalTFIdl := + { /* @status APPROVED (LTE_IRAT) */ + tFIMask := '1'B, + uplinkTFI := omit, // not present if TFImask=1 + downlinkTFI := tsc_DownlinkTFI // not present if TFImask=0 + }; + + //----------------------------------------------------------------------------- + + template (value) SI2quaterRO_GPRS_3G_MeasParamDescr cs_GPRS3GMeasParam(B4_Type p_QsearchP) := + { + qsearch_P := p_QsearchP, + spare := '0'B, + fDD_REP_QUANT_Mask := '0'B, + fDD_REP_QUANT := omit, + fDD_MULTIRAT_REPORTING := omit, + fDD_ReportingMask := '0'B, + fDD_REPORTING_OFFSET := omit, + fDD_REPORTING_THRESHOLD := omit, + tDD_MultiratReportingMask := '0'B, + tDD_MULTIRAT_REPORTING := omit, + tDD_ReportingMask := '0'B, + tDD_REPORTING_OFFSET := omit, + tDD_REPORTING_THRESHOLD := omit + }; + + //----------------------------------------------------------------------------- + + template (value) GPRS_CellOptions cs_GPRS_CellOptionsDTM := + { /* values from TS 51.010-1 v.5.5.0 subclause 40.2.1.1.1 */ + nMO := '00'B, // network operation mode I + t3168 := '011'B, // 2 second + t3192 := '010'B, // 1.5 second + dRX_TIMER_MAX := '000'B, // non-DRX not supported, 0 second + aCCESS_BURST_TYPE := '1'B, // 11 bits + cONTROL_ACK_TYPE := '1'B, // RLC/MAC control block + bS_CV_MAX := '0111'B, // 7 + pAN_Mask := '0'B, + pAN_DEC := omit, + pAN_INC := omit, + pAN_MAX := omit, + optionalExtMask := '1'B, // for R4 + extensionLength := '001010'B, + extensionInfo := cs_GPRS_CellOptionsExtensionDTM + }; + + template (value) GPRS_CellOptions cs_GPRS_CellOptionsSI13(template (value) B2_Type p_NMO, + template (value) ExtensionInfo p_ExtensionInfo := cs_GPRS_CellOptionsExtension) := + { /* values from TS 51.010-1 v.5.5.0 subclause 40.2.1.1.1 */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + nMO := p_NMO, // network operation mode I + t3168 := '011'B, // 2 second + t3192 := '010'B, // 1.5 second + dRX_TIMER_MAX := '000'B, // non-DRX not supported, 0 second + aCCESS_BURST_TYPE := '1'B, // 11 bits + cONTROL_ACK_TYPE := '1'B, // RLC/MAC control block + bS_CV_MAX := '0111'B, // 7 + pAN_Mask := '1'B, + pAN_DEC := '011'B, // 3 + pAN_INC := '011'B, // 3 + pAN_MAX := '010'B, // N3102=12 + optionalExtMask := '1'B, // + extensionLength := '001010'B, + extensionInfo := p_ExtensionInfo + }; + + //----------------------------------------------------------------------------- + + template (value) ExtensionInfo cs_GPRS_CellOptionsExtension(B1_Type p_DTM_Supported := '0'B) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + extensionMask := '0'B, // EGPRS not supported + eGPRS_PACKET_CHANNEL_REQUEST := omit, // EGPRS not supported + bEP_PERIOD := omit, // EGPRS not supported + pFC_FEATURE_MODE := '0'B, // packet context procedure not suppoprted + dTM_SUPPORT := p_DTM_Supported, // DTM not supported + bSS_PAGING_COORDINATION := '0'B, // CS paging coordination not supported + cCN_ACTIVE := '0'B, // R4 extension + nW_EXT_UTBF := '0'B, + multiTBFCap := '0'B, // R6 extension + extUTBFNoData := '0'B, + dTMEhancCap := '0'B, + mbmsMask := '0'B, + dedModeMBMSSupprt := omit, // not present if mbmsMask = 0 + mNCISupport := omit, // not present if mbmsMask = 0 + reducedLatencyAccess := '0'B, + nmoIAlternate := omit, // @sic R5s130195 Baseline Moving sic@ + spareBit := omit + }; + + template (value) ExtensionInfo cs_GPRS_CellOptionsExtensionDTM := cs_GPRS_CellOptionsExtension('1'B); + + //----------------------------------------------------------------------------- + + template (value) GPRSMobileAlloc cs_GPRSMobileAlloc(B6_Type p_MA_LENGTH, + bitstring p_MA_BITMAP) := + { /* Reference: 3GPP TS 44.060 clause 12.10a + Values are taken from TS 51010 Section 40 defaults. */ + hSN := '000000'B, // 3GPP TS 45.002 + rFL_Mask := '0'B, + rFL_NumberList := omit, // not present if rFL_Mask = 0 + mA_ARFCN_Mask := '0'B, + mA_LENGTH := p_MA_LENGTH, // not present if mA_ARFCN_Mask = 1 + mA_BITMAP := p_MA_BITMAP, // not present if mA_ARFCN_Mask = 1 + aRFCN_IndexMask := omit, // not present if mA_ARFCN_Mask = 0 + aRFCN_IndexList := omit // not present if mA_ARFCN_Mask = 0 or aRFCN_IndexMask = 0 + }; + + //----------------------------------------------------------------------------- + + template (value) GPRS_PowerControlParam cs_GPRS_PowerControlParam := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + aLPHA := '0101'B, // Corrected according to 51.010, cl. 40 + t_AVG_W := '01100'B, + t_AVG_T := '01100'B, + pC_MEAS_CHAN := '0'B, // BCCH + n_AVG_I := '0111'B + }; + + //----------------------------------------------------------------------------- + + template (value) PacketDownlinkAssign cs_PktDownlinkAss_IARO(template (value) O4_Type p_TLLI, + template (value) B5_Type p_Gamma) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + tLLI := p_TLLI, // TLLI + mask := '1'B, + tFI_Assignment := tsc_DownlinkTFI, // temporary flow identifier + // not present if mask = 0 + rLC_Mode := '0'B, // RLC mode + // not present if mask = 0 + alphaMask := '1'B, // not present if mask = 0. + aLPHA := '0101'B, // not present if mask = 0 or alphaMask = 0 + gAMMA := p_Gamma, // not present if mask = 0 + pOLLING := '0'B, // not present if mask = 0 + tA_VALID := '1'B, // not present if mask = 0 + taIndexMask := '0'B, + tIMING_ADVANCE_INDEX := omit, // not present if mask = 0 or taIndexMask = 0 + startingTimeMask := '0'B, // not present if mask = 0 + tBF_STARTING_TIME := omit, // not present if mask = 0 or startingTimeMask = 0 + pwrCtrlMask := '0'B, // not present if mask = 0 + p0 := omit, // not present if mask = 0 or pwrCtrlMask = 0 + spareBit := omit, // not present if mask = 0 or pwrCtrlMask = 0 + pR_MODE := omit, // not present if mask = 0 or pwrCtrlMask = 0 + egprsMask := '0'B, // L + eGPRSWindowSize := omit, // not present if egprsMask = L + linkQualityMeasMode := omit, // not present if egprsMask = L + bepPriod2Mask := omit, // not present if egprsMask = L + BepPeriod2 := omit, // not present if egprsMask = L or bepPriod2Mask = 0 + r6Mask := '0'B, // not present if egprsMask = L + pfiMask := omit, // not present if egprsMask = L or r6Mask = L + pFI := omit, // not present if egprsMask = L, r6Mask = L or pfiMask = 0 + r7Mask := '0'B, + npmMask := omit, // not present if r7Mask = L + npmTransferTime := omit, // not present if r7Mask = L + bTTIMask := omit, // not present if r7Mask = L + fanrMask := omit, // not present if r7Mask = L or bTTIMask = 0 + eventBasedFANR := omit, // not present if r7Mask = L (present for both values of bTTIMask) + pdchPairInd := omit, // not present if r7Mask = L or bTTIMask = 0 + dlEGPRSLevel := omit // not present if r7Mask = L + }; + + template (value) PacketDownlinkAssign cds_PktDownlinkAss_IARO_StartingTime(template (value) O4_Type p_TLLI, + template (value) B5_Type p_Gamma, + template (value) B16_Type p_StartingTime) + modifies cs_PktDownlinkAss_IARO := + { + pOLLING := '1'B, + startingTimeMask := '1'B, + tBF_STARTING_TIME := p_StartingTime + }; + + //----------------------------------------------------------------------------- + + template (value) IARO cs_IARO_PDA(O4_Type p_TLLI, + B5_Type p_Gamma) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + constructMask := '11'B, + compressInterRATHO := omit, // present if constructMask = LL + reservMask1 := omit, // present if constructMask = LH + reservMask2 := omit, // present if reservMask1 = 0 + eGPRS_UplinkAssign := omit, // not present if reservMask2 = 1 or reservMask1 = 1 or constructMask <> LH + multiBlocksPDA := omit, // not present if reservMask2 = 0 or reservMask1 = 1 or constructMask <> LH + lengthOfFreqParam := omit, // present if constructMask = HL + freqParam_bt := omit, // frequency parameters before time + // not present if lengthOfFreqParam = 0 + compressInterRATHO1_Type := omit, // present if constructMask = HL + mask1 := '0'B, // present if constructMask = HH + mask2 := '1'B, + packetUplinkAssign := omit, // not present if mask1 = 1 or mask2 = 1 or constructMask <> HH + packetDownlinkAssign := cs_PktDownlinkAss_IARO(p_TLLI, p_Gamma), // not present if mask1 = 1 or mask2 = 0 or constructMask <> HH + secondPacketAssign := omit, // present if mask1 = 1 and constructMask = HH + r10Mask := '0'B, // @sic R5s110178 Baseline Moving sic@ + implicitRejectCS := omit, // not present if r10Mask = L @sic R5s110178 Baseline Moving sic@ + implicitRejectPS := omit // not present if r10Mask = L @sic R5s110178 Baseline Moving sic@ + }; + + template (value) IARO cds_IARO_PDA_StartingTime(O4_Type p_TLLI, + B5_Type p_Gamma, + B16_Type p_StartingTime) + modifies cs_IARO_PDA := + { + packetDownlinkAssign := cds_PktDownlinkAss_IARO_StartingTime(p_TLLI, p_Gamma, p_StartingTime) + }; + + //----------------------------------------------------------------------------- + + template (value) IARO cs_IARO_PUA(B5_Type p_Gamma, + template (omit) B16_Type p_StartTime) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + constructMask := '11'B, + compressInterRATHO := omit, // present if constructMask = LL + reservMask1 := omit, // present if constructMask = LH + reservMask2 := omit, // present if reservMask1 = 0 + eGPRS_UplinkAssign := omit, // not present if reservMask2 = 1 or reservMask1 = 1 or constructMask <> LH + multiBlocksPDA := omit, // not present if reservMask2 = 0 or reservMask1 = 1 or constructMask <> LH + lengthOfFreqParam := omit, // present if constructMask = HL + freqParam_bt := omit, // frequency parameters before time + // not present if lengthOfFreqParam = 0 + compressInterRATHO1_Type := omit, // present if constructMask = HL + mask1 := '0'B, // present if constructMask = HH + mask2 := '0'B, + packetUplinkAssign := cs_PktUplinkAss_IARO(p_Gamma, p_StartTime), // not present if mask1 = 1 or mask2 = 1 or constructMask <> HH + packetDownlinkAssign := omit, // not present if mask1 = 1 or mask2 = 0 or constructMask <> HH + secondPacketAssign := omit, // present if mask1 = 1 and constructMask = HH + r10Mask := '0'B, // @sic R5s110178 Baseline Moving sic@ + implicitRejectCS := omit, // not present if r10Mask = L @sic R5s110178 Baseline Moving sic@ + implicitRejectPS := omit // not present if r10Mask = L @sic R5s110178 Baseline Moving sic@ + }; + + template (value) IARO cds_IARO_SingleBlkPUA(B5_Type p_Gamma, + template (omit) B16_Type p_StartTime) + modifies cs_IARO_PUA := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + packetUplinkAssign := cs_PktUplinkAssSingleBlk_IARO(p_Gamma, p_StartTime) + }; + + //----------------------------------------------------------------------------- + + template (value) PacketUplinkAssign cs_PktUplinkAss_IARO(B5_Type p_Gamma, + template (omit) B16_Type p_StartTime) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + allocMask := '1'B, // 0 -> indicating single block allocation + tFI_Assignment := tsc_UplinkTFI, // temporary flow identifier + // not present if allocMask = 0 + pOLLING := '1'B, // not present if allocMask = 0 + spareBit := '0'B, // not present if allocMask = 0 + uSF := tsc_DefUSF, // not present if allocMask = 0 or fixedAllocMask = 1 + uSFGranularity := '0'B, // not present if allocMask = 0 or fixedAllocMask = 1 + p0Mask := '0'B, // not present if allocMask = 0 or fixedAllocMask = 1 + p0 := omit, // not present if allocMask = 0 or fixedAllocMask = 1 or p0Mask = 0 + pR_MODE := omit, // not present if allocMask = 0 or fixedAllocMask = 1 or p0Mask = 0 + ChannelCodingCommand := '00'B, // not present if allocMask = 0 + tLLI_BlockChannelCodeing := '1'B, // not present if allocMask = 0 + alphaMask := '1'B, // not present if allocMask = 0 + aLPHA := '0101'B, // not present if allocMask = 0 or alphaMask = 0 + gMMA := p_Gamma, // not present if allocMask = 0 + taMask := '0'B, // not present if allocMask = 0 + tIMING_ADVANCE_INDEX := omit, // not present if allocMask = 0 or taMask = 0 + startingTimeMask := '1'B, // not present if allocMask = 0 + tBF_STARTING_TIME := p_StartTime, // not present if allocMask = 0 or startingTimeMask = 0 + alpha1Mask := omit, // present if allocMask = 0 single block allocation + aLPHA1 := omit, // not present if allocMask = 1 or alpha1Mask = 0 + gMMA1 := omit, // not present if allocMask = 1 + prefixBits := omit, // not present if allocMask = 1 the value is 01 if present + tBF_STARTING_TIME1 := omit, // not present if allocMask = 1 + p02Mask := omit, // not present if allocMask = 1 + p02 := omit, // not present if allocMask = 1 or p02Mask = L + spareBit2 := omit, // not present if allocMask = 1 or p02Mask = L + pR_MODE2 := omit, // not present if allocMask = 1 or p02Mask = L + r99Mask := '0'B, + extRAMask := omit, // not present if r99Mask = L + extRA := omit, // not present if r99Mask = L or extRAMask = 0 + r6Mask := omit, // not present if r99Mask = L + pfiMask := omit, // not present if r99Mask = L or r6Mask = L + pFI := omit // not present if r99Mask = L, r6Mask = L or pfiMask = 0 + }; + + template (value) PacketUplinkAssign cs_PktUplinkAssSingleBlk_IARO(B5_Type p_Gamma, + template (omit) B16_Type p_StartTime) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + allocMask := '0'B, // 0 -> indicating single block allocation + tFI_Assignment := omit, // temporary flow identifier + // not present if allocMask = 0 + pOLLING := omit, // not present if allocMask = 0 + spareBit := omit, // not present if allocMask = 0 + uSF := omit, // not present if allocMask = 0 or fixedAllocMask = 1 + uSFGranularity := omit, // not present if allocMask = 0 or fixedAllocMask = 1 + p0Mask := omit, // not present if allocMask = 0 or fixedAllocMask = 1 + p0 := omit, // not present if allocMask = 0 or fixedAllocMask = 1 or p0Mask = 0 + pR_MODE := omit, // not present if allocMask = 0 or fixedAllocMask = 1 or p0Mask = 0 + ChannelCodingCommand := omit, // not present if allocMask = 0 + tLLI_BlockChannelCodeing := omit, // not present if allocMask = 0 + alphaMask := omit, // not present if allocMask = 0 + aLPHA := omit, // not present if allocMask = 0 or alphaMask = 0 + gMMA := omit, // not present if allocMask = 0 + taMask := omit, // not present if allocMask = 0 + tIMING_ADVANCE_INDEX := omit, // not present if allocMask = 0 or taMask = 0 + startingTimeMask := omit, // not present if allocMask = 0 + tBF_STARTING_TIME := omit, // not present if allocMask = 0 or startingTimeMask = 0 + alpha1Mask := '1'B, // present if allocMask = 0 single block allocation + aLPHA1 := '0101'B, // not present if allocMask = 1 or alpha1Mask = 0 + gMMA1 := p_Gamma, // not present if allocMask = 1 + prefixBits := '0'B&f_ConvertBoolToBit(isvalue(p_StartTime)), // not present if allocMask = 1 the value is 01 if present + tBF_STARTING_TIME1 := p_StartTime, // not present if allocMask = 1 + p02Mask := omit, // not present if allocMask = 1 + p02 := omit, // not present if allocMask = 1 or p02Mask = L + spareBit2 := omit, // not present if allocMask = 1 or p02Mask = L + pR_MODE2 := omit, // not present if allocMask = 1 or p02Mask = L + r99Mask := '0'B, + extRAMask := omit, // not present if r99Mask = L + extRA := omit, // not present if r99Mask = L or extRAMask = 0 + r6Mask := omit, // not present if r99Mask = L + pfiMask := omit, // not present if r99Mask = L or r6Mask = L + pFI := omit // not present if r99Mask = L, r6Mask = L or pfiMask = 0 + }; + + //----------------------------------------------------------------------------- + + template (value) ProtocolConfigOptions cs_ProtoCfgOpt_PDP1 := + { + iei := '2E'O, + iel := '09'O, + ext := '1'B, + spare := '0000'B, + configProtocol := '000'B, + pco := {cs_PCO_PDP1} + }; + + template (value) ProtocolContainer cs_PCO_PDP1 := + { + protocolID := 'C021'O, /* id is always 2 octets */ + protocolLength := '05'O, + content := '0A01060A0B'O + }; + + //----------------------------------------------------------------------------- + + template (present) MeasResults cr_G_MeasResults_Any := + { + iei := omit, // information element identifier + ba_used := ?, // bcch allocation used + dtx_used := ?, // dtx was used + rxlev_fsc := ?, // received signal strength on the full serving cell + ba3G_used := ?, // 3G bcch allocation used + meas_valid := ?, // measurement results valid + rxlev_ssc := ?, // received signal strength on a subset of the serving cell + spare := ?, // @sic R5s100135 sic@ + rxqual_fsc := ?, // received signal quality on the full serving cell + rxqual_ssc := ?, // received signal quality on a subset of the serving cell + no_neighCells := ?, // number of neighbouring cells (nc) + neighCellList := cr_NCellReportListAny, // list of neighbour cells, only present if no_neighCells != 111 @sic R5s110176 sic@ + csgMask := *, // not present if no_neighCells = 111 @sic R5s110176 sic@ + utranCSGMeasRpt := *, // only present if csgMask = 1 @sic R5s110176 sic@ + sparePadding := * + }; + + template (present) NCellReport cr_NCellReportAny := + { + rxlev := ?, // received signal strength + bcchfrq := ?, // bcch frequency position + bsic := ? // base station identity code + }; + + template (present) NCellReportList cr_NCellReportListAny := ( + {cr_NCellReportAny, cr_NCellReportAny, cr_NCellReportAny, cr_NCellReportAny, cr_NCellReportAny, cr_NCellReportAny}, + {cr_NCellReportAny, cr_NCellReportAny, cr_NCellReportAny, cr_NCellReportAny, cr_NCellReportAny}, + {cr_NCellReportAny, cr_NCellReportAny, cr_NCellReportAny, cr_NCellReportAny}, + {cr_NCellReportAny, cr_NCellReportAny, cr_NCellReportAny}, + {cr_NCellReportAny, cr_NCellReportAny}, + {cr_NCellReportAny}); + + //----------------------------------------------------------------------------- + + template (value) MobileAlloc cs_G_MobileAlloc := + { /* Mobile allocation + 3GPP TS 44.018 clause 10.5.2.21 */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + iei := omit, // '01110010'B + iel := '00'O, // '00'O for non hopping + mac_8n := omit, // mac64 - mac57 + mac_7n := omit, // mac56 - mac49 + mac_6n := omit, // mac48 - mac41 + mac_5n := omit, // mac40 - mac33 + mac_4n := omit, // mac32 - mac25 + mac_3n := omit, // mac24 - mac17 + mac_2n := omit, // mac16 - mac9 + mac_1n := omit // mac8 - mac1 + }; + + template (value) MobileAlloc cs_G_MobileAlloc_12 := + { /*Indicates12 freqs from the CA (as specified in 26_6_5_1) */ + iei := 'E2'O, + iel := '03'O, + mac_8n := omit, + mac_7n := omit, + mac_6n := omit, + mac_5n := omit, + mac_4n := omit, + mac_3n := '00000001'B, + mac_2n := '11111110'B, + mac_1n := '00001111'B + }; + + template (value) MobileAlloc cs_G_MobileAlloc_9 := + { /* Indicates 9 freqs from the CA (as specified in 26_6_5_1) */ + iei := 'E2'O, + iel := '03'O, + mac_8n := omit, + mac_7n := omit, + mac_6n := omit, + mac_5n := omit, + mac_4n := omit, + mac_3n := '00000001'B, + mac_2n := '11111110'B, + mac_1n := '00000100'B + }; + + template (value) MobileAlloc cs_G_MobileAlloc_DTM_9 := + { /* Indicates12 freqs from the CA (as specified in 26_6_5_1) */ + iei := omit, // LV Only + iel := '03'O, + mac_8n := omit, + mac_7n := omit, + mac_6n := omit, + mac_5n := omit, + mac_4n := omit, + mac_3n := '00000001'B, + mac_2n := '11111110'B, + mac_1n := '00000100'B + }; + + template (value) MobileAlloc cs_G_MobileAlloc_DTM_12 := + { /* Indicates12 freqs from the CA (as specified in 26_6_5_1) */ + iei := omit, + iel := '03'O, + mac_8n := omit, + mac_7n := omit, + mac_6n := omit, + mac_5n := omit, + mac_4n := omit, + mac_3n := '00000001'B, + mac_2n := '11111110'B, + mac_1n := '00001111'B + }; + + //----------------------------------------------------------------------------- + + template (value) MobileAlloc cs_G_MobileAllocAllBand := + { /* Indicates all of the CA except for the BCCH frequency + Indicates all of the CA of cell A except for the BCCH frequency */ + iei := 'E2'O, + iel := '03'O, + mac_8n := omit, + mac_7n := omit, + mac_6n := omit, + mac_5n := omit, + mac_4n := omit, + mac_3n := '00000001'B, + mac_2n := '11111111'B, + mac_1n := '11111011'B + }; + + //----------------------------------------------------------------------------- + + template (present) MobileTimeDiff cr_MobileTimeDiff_Any := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + iei := 'EE'O, + iel := ?, // OCTETSTRING [1] + valueHigh := ?, // one unit = 24/13 microseconds (half bit period) + valueContd := ?, + valueLow := ?, + spareBits := '000'B // spare bits = 000 + }; + + //----------------------------------------------------------------------------- + + template (value) MultiRateConfig cs_G_MultiRateConfig := + { + iei := '02'O, + iel := '02'O, + mrVersion := '001'B, // multirate speech version + nSCB := '0'B, // noise suppression control bit + iCMI := '0'B, // initial codec mode indicator + spareBit := '0'B, // 0 + startMode := '00'B, // start mode + mrSpeechPara := '01'O // parameters for multirate speech + }; + + //----------------------------------------------------------------------------- + + template (value) PacketChDescr cs_PacketChDescr(B10_Type p_ARFCN) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + chType := '00001'B, // channel type + tN := '100'B, // time slot + tSC := px_TSC, // training sequence code + maskBit1 := '0'B, + maskBit2 := '0'B, // not present if maskB1 = 1. + spareBit1 := '0'B, // not present if maskB1 = 1 or maskB2 = 1 + aRFCN := p_ARFCN, // not present if maskB1 = 1 or maskB2 = 1 + spareBit := omit, // not present if maskB1 = 1 or maskB2 = 0 + mAIO := omit, // not present if maskB1 = 1 or maskB2 = 0 + mA_NumberInd := omit, + maskBit3 := omit, + spareBits := omit, // not present if maskB1 = 1 or maskB2 = 0 or maskB3 = 1 + cHANGE_MARK_1 := omit, // not present if maskB1 = 1 or maskB2 = 0 or maskB3 = 0 + mIAO := omit, // not present if maskB1 = 0 + hSN := omit // not present if maskB1 = 0 + }; + + //----------------------------------------------------------------------------- + + template (value) PageModeIE cs_G_PageModeIE(integer p_PagingMode := tsc_NormalPaging) := + { /* Page mode + 3GPP TS 44.018 clause 10.5.2.26 */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + iei := omit, + sprb := '00'B, // spare bits + pgm := int2bit(p_PagingMode, 2) // page mode + }; + + //----------------------------------------------------------------------------- + + template (value) PowerCmdAccessType cs_G_PowCmd_20(B5_Type p_PowerLevel) := + { /* PowerCmd used in synchronized and non synchronized HO cases. */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + iei := omit, // OMITTED + accessType := '0'B, // Sending of Handover access is mandatory + spareBit := '0'B, // spare bits + fpc := '0'B, // FPC not in use + powerLevel := p_PowerLevel + }; + + //----------------------------------------------------------------------------- + + template (value) PowerCommand cs_PowerCommand := + { /* Power command + 3GPP TS 44.018 clause 10.5.2.28 */ + /* @status APPROVED (LTE_IRAT) */ + iei := omit, // information element identifier + spareBits := '00'B, // spare bits + fpc := '0'B, // fast measurement reporting and power control + powerLevel := '01010'B // power level (0-31) + }; + + //----------------------------------------------------------------------------- + + template (value) PowerControlParam cs_PowerControlParams(B5_Type p_Gamma) := + { + aLPHA := '0101'B, + gmmaMask0 := '0'B, + gMMA_TN0 := omit, // not present if maskTN0 = 0 + gmmaMask1 := '0'B, + gMMA_TN1 := omit, // not present if maskTN1 = 0 + gmmaMask2 := '0'B, + gMMA_TN2 := omit, // not present if maskTN2 = 0 + gmmaMask3 := '0'B, + gMMA_TN3 := omit, // not present if maskTN3 = 0 + gmmaMask4 := '1'B, + gMMA_TN4 := p_Gamma, // not present if maskTN4 = 0 + gmmaMask5 := '0'B, + gMMA_TN5 := omit, // not present if maskTN5 = 0 + gmmaMask6 := '0'B, + gMMA_TN6 := omit, // not present if maskTN6 = 0 + gmmaMask7 := '0'B, + gMMA_TN7 := omit // not present if maskTN7 = 0 + }; + + //----------------------------------------------------------------------------- + + template (value) RACHControlParam cs_RACH_ControlParam(B2_Type p_MaxRetx, + B4_Type p_TxInteger, + B1_Type p_CellBarAccess, + B1_Type p_Re, + B5_Type p_Acc2, + B1_Type p_EmergCall, + B10_Type p_Acc1) := + { + maxretx := p_MaxRetx, // maximum retransmissions + txInteger := p_TxInteger, // Tx integer, number of slots to spread transmission + cellBarAccess := p_CellBarAccess, // cell barred for access + re := p_Re, // call reestablishment allowed + acc_2 := p_Acc2, // access control class 15-11 + ec := p_EmergCall, // emergency call allowed + acc_1 := p_Acc1 // access control class 9-0 + }; + + //----------------------------------------------------------------------------- + + template (value) ReferenceAddress cs_ReferenceAddress_PRR(PacketRequestReference p_PacketRequestReference) := + { + globalTFImask := '1'B, + gLOBAL_TFI := omit, // not present if globalTFImask=1 + mask2 := '1'B, // not present if globalTFImask=0 + tLLI := omit, // not present if globalTFImask=0 and mask2=1 + mask3 := '1'B, // not present if globalTFImask=0 and mask2=0 + tQI := omit, // not present if globalTFImask=0 and mask2=0 and mask3=1 + packetRequestRef := p_PacketRequestReference // not present if globalTFImask=0 and mask2=0 and mask3=0 + }; + + //----------------------------------------------------------------------------- + + template (value) GPRS_Resumption cs_G_ResumeGPRS := + { /* 3GPP TS 44.018 clause 10.5.2.14c + @status APPROVED (LTE_IRAT) */ + iei := '1100'B, + spareBits := '000'B, + ack := '1'B // GPRS services successfully ack + }; + + //----------------------------------------------------------------------------- + + template (value) RFN cs_RFN_0 := + { /* Assign some arbitrary values to the RFN. */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + t1_ := '00000'B, // (FN div 1326) mod 32 + t3 := '000000'B, // FN mod 26 + t2 := '00000'B // FN mod 51 + }; + + template (value) RFN cs_G_RFN_Omit := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + t1_ := '11111'B, // (FN div 1326) mod 32 + t3 := '111111'B, // FN mod 51 + t2 := '11111'B // Results in ignoring of RFN by the lower Layer. + }; + + //----------------------------------------------------------------------------- + + template (value) RR_Cause cs_G_RR_CauNormalevent := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + iei := omit, + cause := '00000000'B + }; + + template (present) RR_Cause cr_G_RR_Cause := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + iei := omit, + cause := ? + }; + + //----------------------------------------------------------------------------- + + template (value) ReqRef cs_G_ReqRef(integer p_RR_RA, + template (value) RFN p_RR_RFN) := + { /* Request reference + 3GPP TS 44.018 clause 10.5.2.30 */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + iei := omit, // information element identifier + radoAccessInfo := int2bit ( p_RR_RA , 8 ), + fn := p_RR_RFN + }; + + //----------------------------------------------------------------------------- + + template (value) RRDynamicAllocation cs_RRDynamicAlloc := + { + extendedAlloc := '0'B, // 0 - dynamic allocation; 1 - extended dynamic allocation + mask := '0'B, + po := omit, // not present if mask = 0 + prMode := omit, // not present if mask = 0 + uSFGranularity := '0'B, // 0 - one block; 1 - four blocks + mask2 := '1'B, + ulTFIAssign := tsc_UplinkTFI, // not present if mask2 = 0 + spareBit := '0'B, // value = 0 + maskTimeslot := '0'B, // 0 - no power control, 1 - with power control + alpha := omit, // not present if maskTimeslot = 0 + tN0 := '0'B, // 1 - time slot 0 is allocated; 0 -- not allocated + uSF_TN0 := omit, // USF value for slot 0 + gamma_TN0 := omit, // GAMMA for slot 0. Not present if maskTimeslot = 0 + tN1 := '0'B, // 1 - time slot 1 is allocated; 0 -- not allocated + uSF_TN1 := omit, // USF value for slot 1 + gamma_TN1 := omit, // GAMMA for slot 1. Not present if maskTimeslot = 0 + tN2 := '0'B, // 1 - time slot 2 is allocated; 0 -- not allocated + uSF_TN2 := omit, // USF value for slot 2 + gamma_TN2 := omit, // GAMMA for slot 2. Not present if maskTimeslot = 0 + tN3 := '0'B, // 1 - time slot 3 is allocated; 0 -- not allocated + uSF_TN3 := omit, // USF value for slot 3 + gamma_TN3 := omit, // GAMMA for slot 3. Not present if maskTimeslot = 0 + tN4 := '1'B, // 1 - time slot 4 is allocated; 0 -- not allocated + uSF_TN4 := tsc_DefUSF, // USF value for slot 4 + gamma_TN4 := omit, // GAMMA for slot 4. Not present if maskTimeslot = 0 + tN5 := '0'B, // 1 - time slot 5 is allocated; 0 -- not allocated + uSF_TN5 := omit, // 1 value for slot 5 + gamma_TN5 := omit, // GAMMA for slot 5. Not present if maskTimeslot = 0 + tN6 := '0'B, // 1 - time slot 6 is allocated; 0 -- not allocated + uSF_TN6 := omit, // USF value for slot 6 + gamma_TN6 := omit, // GAMMA for slot 6. Not present if maskTimeslot = 0 + tN7 := '0'B, // 1 - time slot 7 is allocated; 0 -- not allocated + uSF_TN7 := omit, // USF value for slot 7 + gamma_TN7 := omit // GAMMA for slot 7. Not present if maskTimeslot = 0 + }; + + //----------------------------------------------------------------------------- + + template (value) SI1RO cs_SI1_RO(template (value) B1_Type p_BandInd) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + mask := '0'B, + nCH_Position := omit, // not present if mask = L + bandIndicator := p_BandInd // L= DCS1800; H=PCS1900 + }; + + //----------------------------------------------------------------------------- + + template (value) SI2terUTRAN_FDD_Descr cs_SI2terUTRAN_FDD_Descr(B14_Type p_UARFCN) := + { + mask := '01'B, + fDD_ARFCN := p_UARFCN, // present if mask = 01 + bandwidthMask := '0'B, + bandwidthFDD := omit // not present if bandwidthMask = 0 + }; + + //----------------------------------------------------------------------------- + + template (value) SI2quaterRO_GPRS_3G_MeasParamDescr cs_SI2quater_GPRS_3G_MeasParams(B4_Type p_QSearch_P) := + { + qsearch_P := p_QSearch_P, + spare := '1'B, + fDD_REP_QUANT_Mask := '0'B, + fDD_REP_QUANT := omit, // not present if fDD_REP_QUANT_Mask = 0 + fDD_MULTIRAT_REPORTING := omit, // not present if fDD_REP_QUANT_Mask = 0 + fDD_ReportingMask := '0'B, + fDD_REPORTING_OFFSET := omit, // not present if fDD_ReportingMask = 0 + fDD_REPORTING_THRESHOLD := omit, // not present if fDD_ReportingMask = 0 + tDD_MultiratReportingMask := '0'B, + tDD_MULTIRAT_REPORTING := omit, // not present if tDD_MultiratReportingMask = 0 + tDD_ReportingMask := '0'B, + tDD_REPORTING_OFFSET := omit, // not present if tDD_ReportingMask = 0 + tDD_REPORTING_THRESHOLD := omit // not present if tDD_ReportingMask = 0 + }; + + //----------------------------------------------------------------------------- + + template (value) SI2quaterRO_MeasParamDescr3G cs_SI2quaterMeasParams3G_Meas(B4_Type p_Qsearch_I, + B4_Type p_Qoffset, + B3_Type p_Qmin) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + qsearch_I := p_Qsearch_I, + qsearch_C_Initial := '0'B, + fDDMask := '1'B, + fDD_Qoffset := p_Qoffset, // not present if fDDMask = 0 + fDD_REP_QUANT := '0'B, // not present if fDDMask = 0 + fDD_MULTIRAT_REPORTING := '01'B, // not present if fDDMask = 0 + fDD_Qmin := p_Qmin, // not present if fDDMask = 0 + tDDMask := '0'B, + tDD_Qoffset := omit, // not present if tDDMask = 0 + tDD_MULTIRAT_REPORTING := omit // not present if tDDMask = 0 + }; + + template (value) SI2quaterRO_MeasParamDescr3G cs_SI2quaterMeasParams3G_ISHO := cs_SI2quaterMeasParams3G_Meas('0111'B, '1000'B, '000'B); /* @status APPROVED (LTE_A, LTE_IRAT) */ + + //----------------------------------------------------------------------------- + + template (value) NeighCellDescr3G cs_NeighCellDescr3G_Common(template (omit) B7_Type p_IndexStart3G := omit, + template (omit) B7_Type p_AbsoluteIndexStartEMR := omit, + template (omit) UTRAN_FDD_Descr p_UTRAN_FDD_Descr := omit, + template (omit) UTRAN_TDD_Descr p_UTRAN_TDD_Descr := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + indexMask := f_ConvertBoolToBit(isvalue(p_IndexStart3G)), + indexStart3G := p_IndexStart3G, // not present if indexMask = 0 + absoluteIndexMask := f_ConvertBoolToBit(isvalue(p_AbsoluteIndexStartEMR)), + absoluteIndexStartEMR := p_AbsoluteIndexStartEMR, // not present if absoluteIndexMask = 0 + fDDMask := f_ConvertBoolToBit(isvalue(p_UTRAN_FDD_Descr)), + uTRAN_FDD_Description := p_UTRAN_FDD_Descr, // not present if fDDMask = 0 + tDDMask := f_ConvertBoolToBit(isvalue(p_UTRAN_TDD_Descr)), + uTRAN_TDD_Description := p_UTRAN_TDD_Descr // not present if tDDMask = 0 + }; + + template (value) NeighCellDescr3G cs_SI2quater_3G_1N_1FCell_FDD(B14_Type p_ARFCN1, + bitstring p_ScrmCode) := cs_NeighCellDescr3G_Common(-, -, cs_G_FDD_Descr1N_1F(p_ARFCN1, p_ScrmCode)); /* @status APPROVED (LTE_A, LTE_IRAT) */ + + template (value) NeighCellDescr3G cs_SI2quater_3G_3N_2FCell_FDD(B14_Type p_ARFCN1, // The 1st freq contains 2 cells, but the scrmCode is hardcoded + B14_Type p_ARFCN2, + bitstring p_ScrmCode2) := cs_NeighCellDescr3G_Common(-, -, cs_G_FDD_Descr3N_2F(p_ARFCN1, p_ARFCN2, p_ScrmCode2)); /* @status APPROVED (LTE_A, LTE_IRAT) */ + + template (value) NeighCellDescr3G cs_SI2quater_3G_1N_1FCell_TDD(B14_Type p_ARFCN, + bitstring p_CellId) := cs_NeighCellDescr3G_Common(-, -, -, cs_G_TDD_Descr1N_1F(p_ARFCN, p_CellId)); /* @status APPROVED (LTE_A, LTE_IRAT) */ + + template (value) NeighCellDescr3G cs_SI2quater_3G_3N_2FCell_TDD(B14_Type p_ARFCN1, // The 1st freq contains 2 cells, but the CellId is hardcoded + B14_Type p_ARFCN2, + bitstring p_CellId) := cs_NeighCellDescr3G_Common(-, -, -, cs_G_TDD_Descr3N_2F(p_ARFCN1, p_ARFCN2, p_CellId)); /* @status APPROVED (LTE_A, LTE_IRAT) */ + + //----------------------------------------------------------------------------- + + template (value) SI2quaterRO cs_SI2quaterRO( B4_Type p_Index, + B4_Type p_Count, + B1_Type p_ChangeMark := '0'B, // @sic GP-120371 sic@ + template (omit) NeighCellDescr3G p_NeighCellDescr3G, + template (omit) SI2quaterRO_MeasParamDescr3G p_MeasParamDescr3G, + template (omit) SI2quaterRO_GPRS_3G_MeasParamDescr p_GPRS3GMeasParamDescr, + template (omit) EUTRANMeasParams_SI2 p_EUTRANMeasParams, + B1_Type p_BAInd3G := '0'B) := // @sic R5s120021, R5s130207 sic@ + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + // @sic GP-110108 sic@ + bA_IND := '0'B, + bA_IND_3G := p_BAInd3G, + mP_CHANGE_MARK := p_ChangeMark, + sI2quater_INDEX := p_Index, + sI2quater_COUNT := p_Count, + measParamMask := '0'B, + measParamDescription := omit, // not present if measParamMask = 0 + gprsRTDMask := '0'B, + gPRS_RealTimeDiffDescr := omit, // not present if gprsRTDMask = 0 + gprsBSICMask := '0'B, + gPRS_BSIC_Description := omit, // not present if gprsBSICMask = 0 + gprsRepPrioMask := '0'B, + gPRS_REP_PRIORITY_Descr := omit, // not present if gprsRepPrioMask = 0 + gprsMeasParamMask := '0'B, + gPRS_MeasParamsDescr := omit, // not present if gprsMeasParamMask = 0 + ncMeasParamMask := '0'B, + nC_Measurement_Parameters := omit, // not present if ncMeasParamMask = 0 + extnLengthMask := '0'B, + extensionLength := omit, + extnMask := omit, // not present if extnLengthMask = 0 + numCells := omit, // not present if extnLengthMask = 0 or extnMask = 0 + cCNSupported := omit, // not present if extnLengthMask = 0 or extnMask = 0 + neighCellMask := f_ConvertBoolToBit(isvalue(p_NeighCellDescr3G)), // @sic R5s120657 sic@ + neighCellDes3G := p_NeighCellDescr3G, // not present if neighCellMask = 0 + measParam3GMask := f_ConvertBoolToBit(isvalue(p_MeasParamDescr3G)), // @sic R5s120657 sic@ + measurementParams3G := p_MeasParamDescr3G, // not present if measParam3GMask = 0 + gprsMeasParam3GMask := f_ConvertBoolToBit(isvalue(p_GPRS3GMeasParamDescr)), // @sic R5s120657 sic@ + gPRS_3G_MeasParamDescr := p_GPRS3GMeasParamDescr, // not present if gprsMeasParam3GMask = 0 + rel5Mask := '1'B, + addMeasMask := '0'B, // not present if mask = L or rel5Mask = L + addMeasParam3G := omit, // not present if mask = L, rel5Mask = L or addMeasMask = 0 + addMeasMask2 := '0'B, // not present if mask = L or rel5Mask = L + fddRepThres2Mask := omit, // not present if mask = L, rel5Mask = L or addMeasMask2 = 0 + fddRepThreshold2 := omit, // not present if mask = L, rel5Mask = L, addMeasMask2 = 0 or fddRepThres2Mask = 0 + rel6Mask := '1'B, // not present if rel5Mask = L + cCNActive := '0'B, // not present if rel5Mask = L or rel6Mask = 0 + rel7Mask := '1'B, + report700810 := cs_Rel7_ReportingDef700810, + rel8Mask := '1'B, + priorEutranMask := '1'B, // not present if rel8Mask = L + scPriorMask := '1'B, // not present if rel8Mask = L + geranPrior := '010'B, // not present if rel8Mask = L or scPriorMask = 0 + threshPriorSearch := '1111'B, // not present if rel8Mask = L or scPriorMask = 0 + threshGSMLow := '0000'B, // not present if rel8Mask = L or scPriorMask = 0 + hPrior := '00'B, // not present if rel8Mask = L or scPriorMask = 0 + tReselection := '00'B, // not present if rel8Mask = L or scPriorMask = 0 + prior3GMask := '0'B, // not present if rel8Mask = L + utranStart := omit, // not present if rel8Mask = L or prior3GMask = 0 + utranStop := omit, // not present if rel8Mask = L or prior3GMask = 0 + prior3GParams := omit, // not present if rel8Mask = L or prior3GMask = 0 + eutranMeasMask := f_ConvertBoolToBit(isvalue(p_EUTRANMeasParams)), // not present if rel8Mask = L + eutranMeasParams := p_EUTRANMeasParams, // not present if rel8Mask = L or eutranMeasMask = 0 + csg_3GMask := '0'B, // not present if rel8Mask = L + csg_3GDescr := omit, // not present if rel8Mask = L or csg_3GMask = 0 + eutran_CsgMask := '0'B, // not present if rel8Mask = L + eutran_CsgDescr := omit, // not present if rel8Mask = L or eutran_CsgMask = 0 + rel9Mask := '0'B, // @sic R5s110176 sic@ + enhancedMask := omit, // not present if rel9Mask = L @sic R5s110176 sic@ + enh_CellReselect := omit, // not present if rel9Mask = L and enhancedMask = 0 @sic R5s110176 sic@ + csgCellRptMask := omit, // not present if rel9Mask = L @sic R5s110176 sic@ + csgCellRpt := omit, // not present if rel9Mask = L and csgCellRptMask = 0 @sic R5s110176 sic@ + rel10Mask := omit, // not present if rel9Mask = L @sic R5s110178 Baseline Moving sic@ + pwrMask := omit, // not present if rel9Mask = L or rel10Mask = L @sic R5s110178 Baseline Moving sic@ + initPwrRed := omit, // not present if rel9Mask = L or rel10Mask = L or pwrMask = 0 @sic R5s110178 Baseline Moving sic@ + nc2CSG_PCCN_Permitted := omit // not present if rel9Mask = L or rel10Mask = L @sic R5s110178 Baseline Moving sic@ + }; + + template (value) Rel7_700810Reporting cs_Rel7_ReportingDef700810 := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + mask700 := '0'B, + repOffset700 := omit, + repThres700 := omit, + mask810 := '0'B, + repOffset810 := omit, + repThres810 := omit + }; + + template (value) SI2quaterRO cds_SI2quaterRO_ServingCellParams(B4_Type p_Index, + B4_Type p_Count, + B1_Type p_ChangeMark, // @sic GP-120371 sic@ + template (omit) NeighCellDescr3G p_NeighCellDescr3G, + template (omit) SI2quaterRO_MeasParamDescr3G p_MeasParamDescr3G, + template (omit) SI2quaterRO_GPRS_3G_MeasParamDescr p_GPRS3GMeasParamDescr, + template (omit) EUTRANMeasParams_SI2 p_EUTRANMeasParams, + B1_Type p_BAInd3G := '0'B, + template (omit) B3_Type p_GeranPrior, + template (omit) B4_Type p_ThreshPriorSearch, + template (omit) B4_Type p_ThreshGSMLow, + template (omit) B2_Type p_HPrior, + template (omit) B2_Type p_TResel) + modifies cs_SI2quaterRO := + { /* @status APPROVED (LTE_IRAT) */ + rel8Mask := '1'B, + geranPrior := p_GeranPrior, + threshPriorSearch := p_ThreshPriorSearch, + threshGSMLow := p_ThreshGSMLow, + hPrior := p_HPrior, + tReselection := p_TResel + }; + + //----------------------------------------------------------------------------- + + template (value) SI13RO cs_SI13_RO_GPRS(template (value) O1_Type p_RAC, + template (value) B2_Type p_NMO) := + { /* 51.010 clause 40.2.1 + The info element has a fixed length of 20 octets. */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + mask := '1'B, // the rest fields except spareBs are all not present if mask = L + bCCH_CHANGE_MARK := '000'B, + sI_CHANGE_FIELD := '0000'B, + sI3ChangeMask := '0'B, + sI13_CHANGE_MARK := omit, // not present if sI3ChangeMask = 0 + gPRS_MobileAllocation := omit, // not present if sI3ChangeMask = 0 + pbcchMask := '0'B, // '0' -> no PBCCH + rAC := p_RAC, // present if pbcchMask = 0 + sPGC_CCCH_SUP := '1'B, // present if pbcchMask = 0 + pRIORITY_ACCESS_THR := '110'B, // present if pbcchMask = 0 + nETWORK_CONTROLl_ORDER := '00'B, // present if pbcchMask = 0 + gPRS_CellOptions := cs_GPRS_CellOptionsSI13(p_NMO), // present if pbcchMask = 0 + gPRS_PowerControlParameters := cs_GPRS_PowerControlParam, // present if pbcchMask = 0 + pSI1_REPEAT_PERIOD := omit, // present if pbcchMask = 1 + pBCCH_Description := omit, // present if pbcchMask = 1 + r99Mask := '1'B, + sGSNR := '1'B, // present if r99Mask = H + r4Mask := omit, + sI_STATUS_IND := omit, // present if r4Mask = H + r6Mask := omit, + txPwrMaxCCHMask := omit, // not present if r6Mask = L + lbMSTxPwrMaxCCH := omit, // not present if r6Mask = L or txPwrMaxCCHMask = 0 + sI2nSupport := omit, // not present if r6Mask = L + sI_CHANGE_ALT := omit // not present if r6Mask = L @sic R5s130195 Baseline Moving sic@ + }; + + template (value) SI13RO cds_SI13_RO_DTM(template (value) O1_Type p_RAC, + template (value) B2_Type p_NMO) modifies cs_SI13_RO_GPRS := + { + gPRS_CellOptions := cs_GPRS_CellOptionsSI13(p_NMO, cs_GPRS_CellOptionsExtensionDTM) // present if pbcchMask = 0 + }; + + + template (value) SI13RO cds_SI13_RO_BCCH_CHANGE_MARK(template (value) O1_Type p_RAC, + template (value) B2_Type p_NMO, + B4_Type p_ChangeField := '0010'B) + modifies cs_SI13_RO_GPRS := + { /* specific messages contents set-up for BCCH_CHANGE_MARK */ + /* @status APPROVED (LTE_IRAT) */ + bCCH_CHANGE_MARK := '001'B, + sI_CHANGE_FIELD := p_ChangeField // @sic R5s110377 sic@ + }; + + //----------------------------------------------------------------------------- + + template (value) SI3RO cs_SI3_RO_Spare := + { /* all bits are spare, 3GPP TS 51.010 clause 26.6.14. */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cellSelectMask := '0'B, // Cell select parameter mask + cbq := omit, // not present if cellSelectMask = 0, + // Cell bar qualify + cellReselectOffset := omit, // not present if cellSelectMask = 0 + temporaryOffset := omit, // not present if cellSelectMask = 0 + penaltyTime := omit, // not present if cellSelectMask = 0 + powerOffsetMask := '0'B, // Power offset mask + powerOffset := omit, // not present if powerOffsetMask = 0 + sI2terIndicator := '0'B, + earlyClassMarkSendingControl := '0'B, // no ECMS + mask3 := '0'B, // mask bit for scheduling info + schedulingWhere := omit, // not present if mask3 = 0 + mask4 := '0'B, // mask bit for GPRS indicator + rA_Colour := omit, // not present if mask4 = 0 + sI13Position := omit, // not present if mask4 = 0 + earlyClassMarksendingRestriction3G := '0'B, + mask5 := '0'B, // mask bit for SI2quaterPosition + sI2quaterPosition := omit, // not present if mask5 = L + sI13altPosition := omit, // only present if Iu supported in cell + mask6 := '0'B, // mask bit for SI21 @sic R5s120178 Baseline Moving sic@ + si21Position := omit // not present if mask6 = L @sic R5s120178 Baseline Moving sic@ + }; + + template (value) SI3RO cds_SI3_RO_GPRS_SI2quater modifies cs_SI3_RO_Spare := + { /* indicating SI13 is broadcasted. 3GPP TS 51.010 clause 40.2.1.1.1 + GPRS supported */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + earlyClassMarkSendingControl := '1'B, // perform early classmark sending (H=allowed) + mask4 := '1'B, // GPRS supported (H=support GPRS) + rA_Colour := '001'B, // RA colour + sI13Position := '0'B, // SI13 is on BCCH Norm + earlyClassMarksendingRestriction3G := '1'B, // UTRAN classmark change message shall be sent with the Early classmark sending (L= no) + mask5 := '1'B, // SI2quater broadcasted (L=no SI2ter) + sI2quaterPosition := '0'B + }; + + //----------------------------------------------------------------------------- + + template (value) SI4RO cs_SI4_RO_Spare := + { /* all bits are set to spare, 3GPP TS 51.010 clause 26.6.14 */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cellSelectMask := '0'B, // no optional Cell selection parameter + cbq := omit, // not present + cellReselectOffset := omit, // not present + temporaryOffset := omit, // not present + penaltyTime := omit, // not present + powerOffsetMask := '0'B, // no optional power offset + powerOffset := omit, // not present + raColourMask := '0'B, // no GPRS indicator + rA_Colour := omit, // not present + sI13Position := omit, // not present + breakMask := '0'B, // break + breakIndicator := '0'B, // SI4 Rest Octets_S, is not sent in SYSTEM INFORMATION TYPE 7 and 8 + lsaParamMask := omit, // not present + pRIO_THR := omit, // not present + lSA_OFFSET := omit, // not present + mccMask := omit, // not present + mCC := omit, // not present + mNC := omit, // not present + cellIDMask := omit, // not present + cellIdentity := omit, // not present + lsaMask := omit, // not present + lsaIdInfo_List := omit, // not present + cBQ3Mask := omit, // not present + cBQ3 := omit, // not present if breakMask = L or cBQ3Mask = L + si13altMask := omit, // not present if breakMask = L or cBQ3Mask = L + si13altPosition := omit // not present if breakMask = L or cBQ3Mask = L or si13altMask = 0 + }; + + template (value) SI4RO cds_SI4_RO_GPRS modifies cs_SI4_RO_Spare := + { /* 3GPP TS 51.010 clause 40.2.1.1.1 */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + raColourMask := '1'B, // GPRS indicator (H) + rA_Colour := '001'B, + sI13Position := '0'B // on BCCH Norm + }; + + //----------------------------------------------------------------------------- + + template (value) SI15RO cs_SI15_RO(B4_Type p_GSMBand) := + { /* 51.010 clause 20.1 */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + si15Index := '00'B, + si15Count := '00'B, + dm_CHANGE_MARK := '0000'B, + dynMappingList := cs_DynMapList1(p_GSMBand) + }; + + //----------------------------------------------------------------------------- + + template (value) SI6RO cs_SI6_RO_Spare(template (value) B1_Type p_Band) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + pchNchMask := '0'B, // PCH, NCH info mask + pagingChRestructuring := omit, // not present if pchNchMask = 0 + nLN_SACCH := omit, // not present if pchNchMask = 0 + prioMask := omit, // not present if pchNchMask = 0 + callPriority := omit, // not present if pchNchMask = 0 or prioMask = 0 + nLN_Status := omit, // not present if pchNchMask = 0 + inbandMask := '0'B, + inbandNotifications := omit, // not present if inbandMask = 0 + inbandPagings := omit, // not present if inbandMask = 0 + dTM_Supported := '0'B, + rAC := omit, + mAX_LAPDm := omit, + bandIndicator := p_Band, // L = 1800 band supported, + // H = 1900 band supported + txPwrMask := '0'B, + gPRS_MS_TXPWT_MAX_CCH := omit, // not present if txPwrMask = L + mBMSMask := '0'B, + dedModeMBMSNoteSupport := omit, // not present if mBMSMask = L + mNCISupport := omit, // not present if mBMSMask = L + r7Mask := '0'B, + amrConfigMask := omit, // not present if r7Mask = L + amrConfig := omit, // not present if r7Mask= L or amrConfigMask = 0 + randomMask := '0'B, // @sic R5s120178 Baseline Moving sic@ + randomBitStream := omit // not present if randomMask = L @sic R5s120178 Baseline Moving sic@ + }; + + template (value) SI6RO cds_SI6_RO_DTM(template (value) B1_Type p_Band, + template (value) B8_Type p_RAC, + B5_Type p_TXPwr) modifies cs_SI6_RO_Spare := + { + dTM_Supported := '1'B, + rAC := p_RAC, + mAX_LAPDm := omit, + txPwrMask := '1'B, + gPRS_MS_TXPWT_MAX_CCH := p_TXPwr + }; + + //----------------------------------------------------------------------------- + + template (present) SIMessageEntry cr_SIMessageEntry(template (present) B8_Type p_MsgType := ?, + template (present) B2_Type p_MessRec := ?) := + { /* @status APPROVED (LTE_IRAT) */ + prefixBit := '1'B, // always =1 + sIMessgeType := p_MsgType, + messRec := p_MessRec, // 00 = Msg Type supported but not received + // 01 = supported and received, single instance + // 10 = supported and partially received, multiple instances + // 11 = supported and completely received, multiple instances + sixChangeMark := *, // only present if messRec1 = 10 + sixChangeCount := *, // only present if messRec1 = 10 + instanceBitmap := * // only present if messRec1 = 10 + }; + + template (present) SIMessageEntryListDescr cr_SIMessageList_1and3 := + { /* @status APPROVED (LTE_IRAT) */ + { entry := cr_SIMessageEntry('00011001'B, '01'B)}, //SI 1 + { entry := cr_SIMessageEntry('00011011'B, '01'B)}, // SI3 + * + }; + + template (present) SIMessageEntryListDescr cr_SIMessageList9Any := + { /* @status APPROVED (LTE_IRAT) */ + { entry := cr_SIMessageEntry ifpresent}, + { entry := cr_SIMessageEntry ifpresent}, + { entry := cr_SIMessageEntry ifpresent}, + { entry := cr_SIMessageEntry ifpresent}, + { entry := cr_SIMessageEntry ifpresent}, + { entry := cr_SIMessageEntry ifpresent}, + { entry := cr_SIMessageEntry ifpresent}, + { entry := cr_SIMessageEntry ifpresent}, + { entry := cr_SIMessageEntry ifpresent} + }; + + //----------------------------------------------------------------------------- + + template (present) SIMessageList cr_SIMessageListAny := + { /* @status APPROVED (LTE_IRAT) */ + list := cr_SIMessageList9Any ifpresent, + endingRepetition := '0'B, // always 0 + additionalMsgType := ? + }; + + template (present) SIMessageList cr_SIMessageList_SI1and3 := + { /* @status APPROVED (LTE_IRAT) */ + list := cr_SIMessageList_1and3, + endingRepetition := '0'B, // always 0 + additionalMsgType := ? + }; + + //----------------------------------------------------------------------------- + + template (value) TA cs_G_TA (B6_Type p_TA):= + { /* Timing advance + GSM 04.08, 10.5.2.40 */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + iei := omit, // '01111101'B + sprb := '00'B, // '00'B + ievalue := p_TA // @sic R5s120587 sic@ + }; + + //----------------------------------------------------------------------------- + + template (value) TA_TypeV cs_TA(bitstring p_TA_Bits) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + sprb := '00'B, // '00'B + ievalue := p_TA_Bits // one unit = 48/13 microseconds (in 1 bit periods) + }; + + //----------------------------------------------------------------------------- + + template (value) TimeSlotAllocation cs_TimeSlotAllocation_TN4(PhysicalChId p_PhyChId) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + physicalChId := p_PhyChId, // Single PDCH or multi-slot configured PDCHs + tN0 := false, // TRUE - time slot 0 is allocated; FALSE -- not allocated + tN1 := false, // TRUE - time slot 1 is allocated; FALSE -- not allocated + tN2 := false, // TRUE - time slot 2 is allocated; FALSE -- not allocated + tN3 := false, // TRUE - time slot 3 is allocated; FALSE -- not allocated + tN4 := true, // TRUE - time slot 4 is allocated; FALSE -- not allocated + tN5 := false, // TRUE - time slot 5 is allocated; FALSE -- not allocated + tN6 := false, // TRUE - time slot 6 is allocated; FALSE -- not allocated + tN7 := false // TRUE - time slot 7 is allocated; FALSE -- not allocated + }; + + //----------------------------------------------------------------------------- + + template (present) UnknownSIEntry cr_UnknownSIEntry := + { /* @status APPROVED (LTE_IRAT) */ + prefixBit := '1'B, // always =1 + sIMessgeType := ? + }; + + template (present) UnknownSIEntryListDescr cr_UnknownSIList2Any := + { /* @status APPROVED (LTE_IRAT) */ + { entry := cr_UnknownSIEntry ifpresent }, + { entry := cr_UnknownSIEntry ifpresent } + }; + + //----------------------------------------------------------------------------- + + template (present) UnknownSIList cr_UnknownSIListAny := + { /* @status APPROVED (LTE_IRAT) */ + list := cr_UnknownSIList2Any ifpresent, + endingRepetition := '0'B, // always 0 + additionalMsgType := ? + }; + + //----------------------------------------------------------------------------- + + template (value) SI2terRO cs_UTRAN_FDD_Descr1(B14_Type p_UARFCN) := + { + mask := '1'B, + sI2ter_MP_CHANGE_MARK := '0'B, + sI2ter_3G_CHANGE_MARK := '0'B, + sI2ter_INDEX := '000'B, + sI2ter_COUNT := '010'B, + fDDMask := '1'B, + uTRAN_FDD_Description := cs_SI2terUTRAN_FDD_Descr(p_UARFCN), // not present if fDDMask = 0, + // 17 bits + tDDMask := '0'B, + uTRAN_TDD_Description := omit, // not present if tDDMask = 0 + measMask := '0'B, + measurementParams3G := omit, // not present if measMask = 0 + rel5Mask := '0'B, + addMeasMask := omit, // not present if mask = L or rel5Mask = L + addMeasParam3G := omit // not present if mask = L, rel5Mask = L or addMeasMask = 0 + }; + + //----------------------------------------------------------------------------- + + template (value) SI2terRO cs_UTRAN_FDD_Descr2(B14_Type p_UARFCN) := + { + mask := '1'B, + sI2ter_MP_CHANGE_MARK := '0'B, + sI2ter_3G_CHANGE_MARK := '0'B, + sI2ter_INDEX := '001'B, + sI2ter_COUNT := '010'B, + fDDMask := '1'B, + uTRAN_FDD_Description := cs_SI2terUTRAN_FDD_Descr(p_UARFCN), // not present if fDDMask = 0, + // 17 bits + tDDMask := '0'B, + uTRAN_TDD_Description := omit, // not present if tDDMask = 0 + measMask := '0'B, + measurementParams3G := omit, // not present if measMask = 0 + rel5Mask := '0'B, + addMeasMask := omit, // not present if mask = L or rel5Mask = L + addMeasParam3G := omit // not present if mask = L, rel5Mask = L or addMeasMask = 0 + }; + + //----------------------------------------------------------------------------- + + template (present) UTRANPreConfigInfo cr_UtranPreConfigInfo := + { /* 3GPP TS 44.018 clause 10.5.2.7a */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + iel := ?, + ievalue := ? + }; + + //----------------------------------------------------------------------------- + + template (value) RRPacketUplinkAssignment cs_UL_PktAss := + { + tag := '00100010'B, // '00100011' + ielength := '04'O, + chCodingCmd := '00'B, + tLLIBlockChCoding := '1'B, + pktTA := cs_PacketTimingAdvance_NoTA, + mask := '01'B, // only acceptable values are '01' and '10' + dynamicAlloc := cs_RRDynamicAlloc, // only if mask = '01' + multiMask := omit, // only if mask = '00' + multiTBFAlloc := omit, // only if mask = '00' and multiMask = 0 + r99mask := '0'B, + eGPRSMCSMode := omit, // not present if r99mask = 0 + resegment := omit, // not present if r99mask = 0 + eGPRSWindowSize := omit, // not present if r99mask = 0 + mask1 := '0'B, + pktExtendedTA := omit, // not present if mask1 = 0 + r7Mask := omit, // not present if r99mask = 0 + rlcMask := omit, // not present if r99mask or r7Mask = 0 + rlcMode := omit, // not present if r99mask or r7Mask or rlcMask = 0 + rptdNPM := omit, // not present if r99mask or r7Mask = 0 + eGPRSLevel := omit, // not present if r99mask or r7Mask = 0 + pulseMask := omit, // not present if r99mask or r7Mask = 0 + pulseFormat := omit, // not present if r99mask or r7Mask = 0 + fanrMask := omit, // not present if r99mask or r7Mask or fanrMask = 0 + timeMask := omit, // not present if r99mask or r7Mask or fanrMask or timeMask = 0 + reportedTimeslots := omit, // not present if r99mask or r7Mask or fanrMask or timeMask = 0 + tsh := omit, // not present if r99mask or r7Mask or fanrMask or timeMask = 0 + r8Mask := omit, // not present if r99mask or r7Mask = 0 + eutranMask := omit, // not present if r99mask or r7Mask = 0 or r8Mask = 0 + eutranMeasCtrl := omit, // not present if r99mask or r7Mask or r8Mask or eutranMask= 0 + utranMask := omit, // not present if r99mask or r7Mask = 0 or r8Mask = 0 + utranMeasCtrl := omit, // not present if r99mask or r7Mask or r8Mask or utranMask= 0 + r9Mask := omit, // not present if r99mask or r7Mask = 0 or r8Mask = 0 @sic R5s110176 sic@ + emstMask := omit, // not present if r99mask, r7Mask, r8Mask or r9Mask = 0 @sic R5s110176 sic@ + emstNWCap := omit, // not present if r99mask, r7Mask, r8Mask or r9Mask = 0 or emstMask = 1 @sic R5s110176 sic@ + rlcEntity2 := omit, // not present if r99mask, r7Mask, r8Mask or r9Mask = 0 or emstMask = 0 @sic R5s110176 sic@ + entity3Mask := omit, // not present if r99mask, r7Mask, r8Mask or r9Mask = 0 or emstMask = 0 @sic R5s110176 sic@ + rlcEntity3 := omit, // not present if r99mask, r7Mask, r8Mask or r9Mask = 0 or emstMask = 0 or entity3Mask = 0 @sic R5s110176 sic@ + r10Mask := omit, // not present if r99mask, r7Mask, r8Mask or r9Mask = 0 @sic R5s120178 sic@ + emsrAddPFC1 := omit, // not present if r99mask, r7Mask, r8Mask, r9Mask or r10Mask = 0 @sic R5s120178 sic@ + emsrAddPFC2 := omit, // not present if r99mask, r7Mask, r8Mask, r9Mask or r10Mask = 0 @sic R5s120178 sic@ + emsrAddPFC3 := omit // not present if r99mask, r7Mask, r8Mask, r9Mask or r10Mask = 0 @sic R5s120178 sic@ + }; + + //----------------------------------------------------------------------------- + + template (present) L2DataIndType cr_G_TMSI_ReallocCmpl := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + tmsiRealloc := cr_TMSI_ReallocCmpl_Common + }; + + //----------------------------------------------------------------------------- + + template (present) L2DataIndType cr_G_AuthRspAnyExt := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + authResponse := cr_AuthResponse_Common(cr_AuthRspExtAny) + }; + + template (present) L2DataIndType cr_G_AuthRspAnyNoExt := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + authResponse := cr_AuthResponse_Common + }; + + //----------------------------------------------------------------------------- + + template (value) L2DataReqType cs_G_AuthReq( template (value) KeySeq p_KeySeq, + template (value) MM_RAND p_RAND, + template (value) AUTN p_AUTN) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + authReq := cs_AuthReq_Common(p_KeySeq, p_RAND, p_AUTN) + }; + + //----------------------------------------------------------------------------- + + template (present) L2DataIndType cr_G_AuthFailAny := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + autnFail := cr_AuthFailAny_Common + }; + + //----------------------------------------------------------------------------- + + template (value) L2DataReqType cs_G_ChRelease(template (omit) GPRS_Resumption p_G_ResumeGPRS:= omit, + template (omit) CellSelInd p_CellSelInd := omit) := + { /* A CHANNEL RELEASE message with RR cause = normal event */ + /* @sic R5s120502 additional change sic@ */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + chRelease := { + skipIndicator := '0000'B, + rRProtocolDiscriminator := '0110'B, + msgType := '00001101'B, + rRCau := cs_G_RR_CauNormalevent, // normal event + bA_Range := omit, // BA range O OCTETSTRING minimum 6 octets no up limit + groupChannelDescr := omit, // group channel description O OCTETSTRING[4..13] + groupCipherKey := omit, // group cipher key number C OCTETSTRING[1] + gPRS_Resumption := p_G_ResumeGPRS, // GPRS resumptioon O OCTETSTRING[1] + bA_ListPref := omit, // BA list pref O OCTETSTRING at least 3 octets no up limit + uTRAN_FreqList := omit, // UTRAN frequency list O OCTETSTRING[3.. + cellChannelDescr := omit, // Cell Channel Descr O OCTETSTRING [17] + cellSelInd := p_CellSelInd, // CellSelection indicator after release of all TCH and SDCCH O OCTETSTRING [4..] + enhDTMCSRelInd := omit, // Enhanced DTM CS Release Indication O OCTETSTRING [1] + vGCSCiphParam := omit, // VGCS Ciphering Params O OCTETSTRING [3-15] + grpChDescr2 := omit, // Group Channel Descr 2 O OCTETSTRING [13] + talkerId := omit, // Talker Id O TLV [3-20] + talkerPriorityStatus := omit, // Talker Priority Status O TLV [3] + vGCS_AMRConfig := omit, // VGCS AMR Config O TLV [3] + individPrior := omit // Individual Priorities O TLV [3-?] + } + }; + + template (value) CellSelInd cs_G_CellSelIndicator_EUTRAN (O1_Type p_IEL, // This is the length of the following template - you have to count the bits! And don't forget to include the 3 bits for the ranDescr + template (value) EUTRANDescr_List p_EUTRANDescr_List) := + { /* @status APPROVED (LTE_IRAT) */ + iei := '77'O, + iel := p_IEL, + ranDescr := '011'B, + gsmDescr := omit, + uTRANFDDDescr := omit, + uTRANTDDDescr := omit, + eUTRANDescr := p_EUTRANDescr_List + }; + + //----------------------------------------------------------------------------- + + template (present) MEASUREMENTREPORT cr_G_MeasReport_Any := + { /* A measurement report match any received MSR_RPT_PDU. */ + skipIndicator := '0000'B, + rRProtocolDiscriminator := '0110'B, // RR protocol discriminator + msgType := '00010101'B, // measurement message type + measResults := cr_G_MeasResults_Any // containing any value + }; + + //----------------------------------------------------------------------------- + + template (value) PagingReqType cs_G_PagingRequest1_Def (template (value) MobileIdentity p_MobId):= + { /* @status APPROVED (LTE_IRAT) */ + pagReq := { + l2PseudoLength := '25'O, // L2 pseudo length M + skipIndicator := '0000'B, // skip indicator M + rRProtocolDiscriminator := '0110'B, // RR protocol discriminator M + msgType := '00100001'B, // message type M + chNeeded_m1_2 := cs_G_ChneededAny, // channels needed for mobiles 1 and 2 M BITSTRING [4] without IEI + pageMode := cs_G_PageModeIE, // page mode M + mobileId1 := p_MobId, // mobility identity 1 M OCTETSTRING [2..9] + mobileId2 := omit, // mobility identity 2 O OCTETSTRING [3..10] + p1RO := omit // P1 rest octets. The SS will fill the rest of the message with spare padding, so no need to include this field. + } + }; + + template (value) PagingReqType cs_G_PagingRequest_ImmAss (template (value) IMMEDIATEASSIGNMENT p_PDU) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + immedAss := p_PDU + }; + + //----------------------------------------------------------------------------- + + template (present) GRLCCntrlMsgIndType cr_PacketResourceRequestAny := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + pktResReq := { + msgType := '000101'B, // message type M + mask1 := ?, + accessType := *, // not present if mask1 = 0 + mask2 := ?, + globalTFI := cr_GlobalTFIAny ifpresent, // only present if mask2 = 0 + tlli := *, // only present if mask2 = 1 + mask3 := ?, + mSRadioAccessCap := cr_MSRadioAccessCapList_2Any ifpresent, // not present if mask3 = 0 @sic R5s130417 sic@ + chReqDescr := cr_ChReqDescrAny, + mask4 := ?, + changeMark := *, // not present if mask4 = 0 + cValue := ?, + mask5 := ?, + signVar := *, // not present if mask5 = 0 + tnmask0 := ?, + iLevelTN0 := *, // not present if tnmask0 = 0 + tnmask1 := ?, + iLevelTN1 := *, // not present if tnmask1 = 0 + tnmask2 := ?, + iLevelTN2 := *, // not present if tnmask2 = 0 + tnmask3 := ?, + iLevelTN3 := *, // not present if tnmask3 = 0 + tnmask4 := ?, + iLevelTN4 := *, // not present if tnmask4 = 0 + tnmask5 := ?, + iLevelTN5 := *, // not present if tnmask5 = 0 + tnmask6 := ?, + iLevelTN6 := *, // not present if tnmask6 = 0 + tnmask7 := ?, + iLevelTN7 := *, // not present if tnmask7 = 0 + r99mask := ?, + mask6 := *, // not present if r99mask = 0 + eGPRSBEPLinkQual := cr_EGPRSBEPLinkQualAny ifpresent, // not present if r99mask or if mask6 = 0 + mask7 := *, // not present if r99mask = 0 + eGPRSTNLinkQual:= cr_EGPRSTNLinkQualAny ifpresent, // not present if r99mask or mask7= 0 + mask8 := *, // not present if r99mask = 0 + pFI := *, // not present if r99mask or mask8= 0 + addMSRACInfo:= *, // not present if r99mask = 0 + retxPRR := *, // not present if r99mask = 0 + rel5mask := *, // not present if r99mask = 0 + mask9 := *, // not present if r99mask or rel5mask = 0 + mask10 := *, // not present if r99mask or rel5mask or mask9 = 0 + gRNTIExt := *, // not present if r99mask,rel5mask, mask9 or mask10 = 0 + iuModeChReqDescr := cr_IuModeChReqDescrAny ifpresent, // not present if r99mask, rel5mask or mask9 = 0 + hfnmask := *, // not present if r99mask or rel5mask or mask9 = 0 + hfnlsb := *, // not present if r99mask or rel5mask or mask9 or hfnmask = 0 + rel6mask := *, // not present if r99mask or rel5mask or mask9 = 0 + mask11 := *, // not present if r99mask or rel5mask or mask9 or rel6mask = 0 + extChReqDescr := cr_ExtChReqDescrAny ifpresent, // not present if r99mask or rel5mask or mask9 or rel6mask or mask11 = 0 + rel7mask := *, // not present if r99mask or rel5mask or mask9 or rel6mask = 0 + earlyTBF := *, // not present if r99mask or rel5mask or mask9 or rel6mask or rel7mask = 0 + mask12 := *, // not present if r99mask or rel5mask or mask9 or rel6mask or rel7mask = 0 + eGPRSBEPLinkQual2 := cr_EGPRSBEPLinkQualAny ifpresent, // not present if r99mask or if mask6 or rel7mask or mask12 = 0 + mask13 := *, // not present if r99mask or rel5mask or mask9 or rel6mask or rel7mask = 0 + eGPRSTNLinkQual2 := cr_EGPRSTNLinkQualAny ifpresent, // not present if r99mask or if mask6 or rel7mask or mask13 = 0 + rel10mask := *, // not present if r99mask or rel5mask or mask9 or rel6mask or rel7mask = 0 @sic R5s120178 sic@ + lowAccessPrioritySig := *, // not present if r99mask or rel5mask or mask9 or rel6mask or rel7mask or rel10Mask = 0 @sic R5s120178 sic@ + sparePadding := * // Uplink message + } + }; + + template MS_RadioAccessCapList cr_MSRadioAccessCapList_2Any := cr_MSRadioAccessCapList(cr_MSRadioAccessCap_2Any); /* @status APPROVED (LTE_A, LTE_IRAT) */ + + template MS_RadioAccessCap cr_MSRadioAccessCap_2Any := + { // defined in 44.060, cl. 12.30 + /* @status APPROVED (LTE_A, LTE_IRAT) */ + accessTechType := ?, + singleAccess := cr_SingleAccessCap_r99 ifpresent, // only present if accessTechType != 1111 + addLength := *, // only present if accessTechType = 1111 + addAccess := cr_AddMS_RadioAccessCapListAny ifpresent, // only present if accessTechType = 1111; @sic R5s100871 sic@ + sparebits := * + }; + + template SingleAccessCap cr_SingleAccessCap_r99 := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + accLength := ?, + rfPwrCap := ?, + mask1 := ?, + a5_1 := *, // not present if mask1 = 0 + a5_2 := *, // not present if mask1 = 0 + a5_3 := *, // not present if mask1 = 0 + a5_4 := *, // not present if mask1 = 0 + a5_5 := *, // not present if mask1 = 0 + a5_6 := *, // not present if mask1 = 0 + a5_7 := *, // not present if mask1 = 0 + esInd := ?, + pS := ?, + vGCS := ?, + vBS := ?, + mask2 := ?, + multiSlotCap := cr_MultiSlotCapAny ifpresent, // not present if mask2 = 0 + mask3 := ?, + psk8PwrCap := *, // not present if mask3 = 0 + compactIFMeas := ?, + revLev := ?, + fddRATCap := ?, + tdd384RATCap := ?, + cdma2000RATCap := ?, + tdd128RATCap := *, + gERANFeatPkge1 := *, + mask4 := *, + extDTMGPRSMultiSlotClass := *, // not present if mask4 = 0 + extDTMEGPRSMultiSlotClass := *, // not present if mask4 = 0 + modulationBasedMultiSlot := *, + mask5 := *, + highMultislotCap := *, // not present if mask5 = 0 + mask6 := *, + gERANIuModeCapLength := *, // not present if mask6 = 0 + fLOIuCap := *, // not present if mask6 = 0 + gmskMultislotPwrProfile := *, + psk8MultislotPwrProfile := *, + multiTBFCap := *, + dlAdvRxPerformance := *, + extRLCMACCtrlCap := *, + dTMEnhCap := *, + mask7 := *, + dTMGPRSHighClass := *, // not present if mask7 = 0 + mask8 := *, // not present if mask7 = 0 + dTMEGPRSHighClass := *, // not present if mask7 or mask8 = 0 + pSHOCap := *, + dTMHOCap := *, + mask9 := *, + multislotCapDlDualCarrier := *, // not present if mask9 = 0 + dlDualCarrierDTMCap := *, // not present if mask9 = 0 + flexTimeslotAssign := *, + gANPSHOCap := *, + rLCNonPersistentMode := *, + reducedLatencyCap := *, + ulEGPRS2 := *, + dlEGPRS2 := *, + eutraFDD := *, + eutraTDD := *, + geran2EutraSupport := *, // @sic R5s100135 sic@ + priorityBasedReselection := *, + mask10 := *, // @sic R5s110176 Baseline Moving, R5s110242 sic@ + altEFTAMultislotClass := *, // not present if mask10 = 0 @sic R5s110176 Baseline Moving sic@ + eftaMultislotCapRedforDDC := *, // not present if mask10 = 0 @sic R5s110176 Baseline Moving sic@ + upperLayerPDUStartCapforRLCUMInd := *, // @sic R5s110176 Baseline Moving sic@ + emstCap := *, // @sic R5s110176 Baseline Moving sic@ + mttiCap := *, // @sic R5s110176 Baseline Moving sic@ + utraCSGCellsReporting := *, // @sic R5s110176 Baseline Moving sic@ + eutraCSGCellsReporting := *, // @sic R5s110176 Baseline Moving sic@ + dtrCap := *, // @sic R5s120178 Baseline Moving sic@ + emsrCap := *, // @sic R5s120178 Baseline Moving sic@ + fastDLFreqSwitchingCap := *, // @sic R5s120178 Baseline Moving sic@ + tighterCap := *, // @sic R5s120178 Baseline Moving sic@, + fanrCap := *, // @sic R5s130195 Baseline Moving sic@ + ipaCap := * // @sic R5s130195 Baseline Moving sic@ + }; + + //----------------------------------------------------------------------------- + + template (value) GRLCCntrlMsgReqType cs_PacketUplinkAssignment(B10_Type p_ARFCN, + B6_Type p_TA) := + { /* This message is sent on the PCCCH or PACCH by the network to the mobile station to assign uplink resources for One phase TBF. + TS 3GPP 44.060 clause 11.2.29 + Values are taken from 51010 clause 40.2.3.4 */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + pktULAssignmt := { + msgType := '001010'B, // Message type + pAGE_MODE := int2bit(tsc_NormalPaging,2), // Normal paging + persistenceLevelMask := '0'B, + persistenceLevel1 := omit, // not Present if persistenceLevelMask=0 + persistenceLevel2 := omit, // not Present if persistenceLevelMask=0 + persistenceLevel3 := omit, // not Present if persistenceLevelMask=0 + persistenceLevel4 := omit, // not Present if persistenceLevelMask=0 + globalTFIMask := '0'B, + globalTFI := cs_GlobalTFIul, + tLLIMask := omit, + tLLI := omit, + tQIMask := omit, + tQI := omit, + referenceAddress := omit, + eGPRSmask := '0'B, + channelCodingCommand := int2bit(tsc_CS1,2), // not present of EGPRPSmask=1 + tLLIBlockChannelCoding := '0'B, // 0 - the mobile station shall use CS-1 in GPRS TBF mode and MCS-1 in EGPRS TBF mode. + // 1 - the mobile station shall use the value commanded in the CHANNEL_CODING_COMMAND or EGPRS_CHANNEL_CODING_COMMAND field. + packetTimingAdvance := cs_PacketTimingAdvance (-, p_TA), // @sic R5s120587 sic@ + freqParamMask := '1'B, + freqParam := cs_FreqParam_PDTCH(p_ARFCN), // not present if freqParamMask=0 @sic R5s120521 sic@ + allocationMask := '01'B, + dynamicAllocation := cs_DynamicAllocationPacket, // present if allocationMask=01 + singleBlockAllocation := omit, // present if allocationMask=10 + r99Mask := '1'B, + packetExtTAmask := '0'B, // not present if r99Mask=0 + packetExtendedTA := omit, // not present if r99Mask=0 and packetExtTImask=0 + r5Mask := omit, + gRNTIMask := omit, // not present if r99Mask=0 and r5Mask=0 + gRNTIExtension := omit, // not present if r99Mask=0, r5Mask=0 and gRNTIMask=0 + rBIdMask := omit, // not present if r99Mask=0 and r5Mask=0 + rBId := omit, // not present if r99Mask=0, r5Mask=0 and rBIdMask=0 + r6Mask := omit, // not present if r99Mask=0, r5Mask=0 + pfiMask := omit, // not present if r99Mask=0, r5Mask=0 and r6Mask = 0 + pFI := omit, // not present if r99Mask=0, r5Mask=0, r6Mask = 0 and pfiMask = 0 + rlcModeMask := omit, // not present if r99Mask=0, r5Mask=0 and r6Mask = 0 + rlcMode := omit, // not present if r99Mask=0, r5Mask=0, r6Mask = 0 and rlcModeMask = 0 + mask := omit, + eGPRSmessage := omit, // not present of EGPRPSmask=0 + dualCarrier := omit + } + }; + + template (value) GRLCCntrlMsgReqType cds_PacketUplinkAssignment_TwoPhase(B10_Type p_ARFCN, + B6_Type p_TA, + template (value) O4_Type p_TLLI) + modifies cs_PacketUplinkAssignment:= + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + pktULAssignmt := { + globalTFIMask := '1'B, + globalTFI := omit, + tLLIMask := '0'B, + tLLI := p_TLLI + } + }; + + //----------------------------------------------------------------------------- + + template (value) PACKETDOWNLINKASSIGNMENT cs_PacketDownlinkAssignment(octetstring p_TLLI, + B5_Type p_DLTFI, + B5_Type p_Gamma, + B6_Type p_TA) := + { + msgType := '000010'B, // Message type + pAGE_MODE := int2bit(tsc_NormalPaging,2), // Normal paging + persistenceLevelMask := '0'B, + persistenceLevel1 := omit, // not Present if persistenceLevelMask=0 + persistenceLevel2 := omit, // not Present if persistenceLevelMask=0 + persistenceLevel3 := omit, // not Present if persistenceLevelMask=0 + persistenceLevel4 := omit, // not Present if persistenceLevelMask=0 + globalTFImask := '1'B, + gLOBAL_TFI := omit, // not present if globalTFImask=1 + mask2 := '0'B, // not present if globalTFImask=0 + tLLI := p_TLLI, // not present if globalTFImask=0 and mask2=1 + messageEscape := '0'B, // set to '0'B + mACMode := '00'B, + rLCMode := '0'B, + controlAck := '0'B, + timeslotAllocation := '00010000'B, + pktTimingAdvance := cs_PacketTimingAdvance (-, p_TA), // @sic R5s120587 sic@ + mask1 := '0'B, + p0 := omit, // not present if mask1 = 0 + spareBit2 := omit, // not present if mask1 = 0. set to '0'B if present + pRMode := omit, // not present if mask1 = 0 + freqParamMask := '0'B, + freqParams := omit, // not present if freqParamMask = 0 + tfiMask := '1'B, + dlTFIAssignment := p_DLTFI, // not present if tfiMask = 0 + pcMask := '1'B, + powerCtrlParams := cs_PowerControlParams(p_Gamma), // not present if pcMask = 0 + startTimeMask := '0'B, + tbfStartTime := omit, // not present if startTimeMask = 0 + spareBit3 := '0'B, // set to '0'B + r99Mask := '1'B, + egprsMask := '0'B, // not present if r99mask = 0 + egprsWindowSize := omit, // not present if r99mask = 0 or if egprsMask=0 + linkQualMeasMode := omit, // not present if r99mask = 0 or if egprsMask=0 + bepMask := omit, // not present if r99mask = 0 or if egprsMask=0 + bepPeriod2 := omit, // not present if r99mask = 0 or if egprsMask=0 or if bepMask=0 + pktXTAMask := '0'B, // not present if r99mask = 0 + pktExtendedTA := omit, // not present if r99mask = 0 or if pktXTAMask=0 + compactMask := '0'B, // not present if r99mask = 0 + compactReducedMA := omit, // not present if r99mask = 0 or if compactMask=0 + r5Mask := '0'B, // not present if r99mask = 0 + rBIdMask := omit, // not present if r99mask = 0 or if r5Mask=0 + rBId := omit, // not present if r99mask = 0 or if r5Mask=0 or if rBIdMask=0 + grntiXMask := omit, // not present if r99mask = 0 or if r5Mask=0 or if rBIdMask=0 + gRNTIExtension := omit, // not present if r99mask = 0 or if r5Mask=0 or if rBIdMask=0 or if grntiXMask=0 + ulCtrlMask := omit, // not present if r99mask = 0 or if r5Mask=0 or if rBIdMask=0 + ulCtrlTimeslot := omit, // not present if r99mask = 0 or if r5Mask=0 or if rBIdMask=0 or if ulCtrlMask=0 + hfnMask := omit, // not present if r99mask = 0 or if r5Mask=0 or if rBIdMask=0 + hfnLSB := omit, // not present if r99mask = 0 or if r5Mask=0 or if rBIdMask=0 or if hfnMask=0 + r6Mask := omit, // not present if r99mask = 0 + pfiMask := omit, // not present if r99mask = 0 or if r6Mask = 0 + pFI := omit, // not present if r99mask = 0 or if r6Mask = 0 or if pfiMask = 0 + r7Mask := omit, // not present if r99mask = 0 or if r6Mask = 0 + npmMask := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 + npmTransferTime := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if npmMask = 0 + r9Mask := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 @sic R5s110176 sic@ + upperLayerStartForUMInd := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 @sic R5s110176 sic@ + emstMask := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 @sic R5s110176 sic@ + rlcEntity2 := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or emstMask = 0 @sic R5s110176 sic@ + entity3Mask := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or emstMask = 0 @sic R5s110176 sic@ + rlcEntity3 := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or emstMask = 0 or entity3Mask = 0 @sic R5s110176 sic@ + r10Mask := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 @sic R5s120178 sic@ + emsrAddPFC1 := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 @sic R5s120178 sic@ + emsrAddPFC2 := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 @sic R5s120178 sic@ + emsrAddPFC3 := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 @sic R5s120178 sic@ + dualCarrier := omit // only present if messageEscape = 1 + }; + + template (value) NC_MeasParams cs_NC_MeasParamsDef := + { + nETWORK_CONTROL_ORDER := '01'B, // NC1 + mask := '1'B, + nC_NON_DRX_PERIOD := '000'B, + nC_REPORTING_PERIOD_I := '111'B, + nC_Reporting_PERIOD_T := '011'B + }; + + template (value) NC_MeasParams cs_NC_MeasParamsNC2 := + { /* @status APPROVED (LTE_IRAT) */ + nETWORK_CONTROL_ORDER := '10'B, // NC2 + mask := '1'B, + nC_NON_DRX_PERIOD := '000'B, + nC_REPORTING_PERIOD_I := '111'B, + nC_Reporting_PERIOD_T := '010'B + }; + + template (value) NC_FreqList cs_NC_FreqListNone := + { + remFreqMask := '0'B, + nrOfRemFreq := omit, // not present if remFreqMask = 0 + remFreq := omit, // not present if remFreqMask = 0 + addFreqs := cs_AddedFreqListNone + }; + + template (value) AddedFreqList cs_AddedFreqListNone := + { + { + prefix := '0'B, + addFreq := omit // not present if prefix = 0 + } + }; + + template (present) LLCUnitDataIndType cr_G_AttachReq_EUTRANCap(template (present) AttachType p_AttachType, + template (present) MobileIdentity p_MobId, + template (present) RoutingAreaId p_RAI, + template (present) KeySeq p_KeySeq) := + { /* @status APPROVED (LTE_IRAT) */ + attReq := cr_AttachReq_Common(p_AttachType, + p_MobId, + p_RAI, + p_KeySeq, + cr_MS_RadioAccessCapLVAny, + -,// ptmsi sig + -,// gprs timer + -,// tmsi status + -,// lcs cap + -,// clsmk 2 + cdr_MSCLSMK3_EutraCheck ('20'O)) // @sic R5s140493 sic@ + }; + + template (value) GRLCCntrlMsgReqType cs_PacketMeasOrder(template (value) GlobalTFI p_TFI, + template (value) NC_MeasParams p_NCMeas, + B1_Type p_NCFreqMask, + template (omit) NC_FreqList p_NCFreq) := + { + pktMeasOrder := { + msgType := '000011'B, + pAGE_MODE := int2bit(tsc_NormalPaging, 2), + globalTFImask := '0'B, // @sic R5s140301 sic@ + gLOBAL_TFI := p_TFI, + mask2 := omit, + tLLI := omit, + pMOIndex := '000'B, + pMOCount := '000'B, + ncMask := '1'B, + nCMeasParams := p_NCMeas, + ncFreqMask := p_NCFreqMask, + nCFreqList := p_NCFreq, + spareBit := '0'B, + r98Mask := '1'B, + lsaMask := '0'B, + lSAParams := omit, + r99Mask := '1'B, + enhMask := '0'B, + eNHMeasParams := omit, + r4Mask := '0'B, + cCNActive := omit, + ccnMask := omit, + cCNSupportDescr := omit, + r5Mask := omit, + grntiXMask := omit, + gRNTIExtension := omit, + iuMask := omit, + iuModeNeighCellParams := omit, + ncIuMask := omit, + nCIuModeCapCellList := omit, + gprs3GAddMeasParam2Mask := omit, + rptThresMask := omit, + fddReportThreshold := omit, + r6Mask := omit, + cCN3GActive := omit, + r7Mask := omit, + reporting700_810 := omit, + r8Mask := omit, + indMask := omit, + baInd3G := omit, + pmoInd := omit, + priorEutranMask := omit, + servingCellMask := omit, + servingCellPrioParam := omit, + prioParam3GMask := omit, + prioParam3G := omit, + eutranMask := omit, + eutran_CCN_Active := omit, + eutranParam := omit, + individualMask := omit, + individualPrior := omit, + csg_3GMask := omit, + csg_3GDescr := omit, + eutran_Csg_Mask := omit, + eutran_Csg_Descr := omit, + eutranMeasMask := omit, + eutranMeasCtrlParams := omit, + r9Mask := omit, + enhancedMask := omit, + enh_CellReselect := omit, + csgCellRptMask := omit, + csgCellRpt := omit + } + }; + + template (value) GRLCCntrlMsgReqType cs_PktCellChangeOrder (template (value) GlobalTFI p_GlobalTFI, + template (value) EUTRAN_TargetCell p_EUTRANTargetCell) := + { /* @status APPROVED (LTE_IRAT) */ + pktCellChangeOrder := { + msgType := '000001'B, // Message type + pAGE_MODE := '00'B, // Normal paging + globalTFImask := '0'B, + gLOBAL_TFI := p_GlobalTFI, // not present if globalTFImask=1 + mask2 := omit, // not present if globalTFImask=0 + tLLI := omit, // not present if globalTFImask=0 and mask2=1 + cellTypeMask := '1'B, + msgEscape := '00'B, // not present if cellTypeMask = 0 + immediateRel := '1'B, + gsmTargetCell := omit, // not present if cellTypeMask = 1 + fddMask := '0'B, // not present if cellTypeMask = 0 + fddTargetCell := omit, // not present if cellTypeMask = 0 or fddMask = 0 + tddMask := '0'B, // not present if cellTypeMask = 0 + tddTargetCell := omit, // not present if cellTypeMask = 0 or tddMask = 0 + r5Mask := '1'B, // not present if cellTypeMask = 0 + grntiXMask := '0'B, // not present if cellTypeMask or r5Mask = 0 + gRNTIExtension := omit, // not present if cellTypeMask or r5Mask or gRNTIXMask = 0 + r8Mask := '1'B, // not present if cellTypeMask or r5Mask = 0 + eutranMask := '1'B, // not present if cellTypeMask r5Mask or r8Mask = 0 + eutranTargetCell := p_EUTRANTargetCell, // not present if cellTypeMask r5Mask or r8Mask or eutranMask = 0 + individualMask := '0'B, // not present if cellTypeMask r5Mask or r8Mask = 0 + individualPrior := omit // not present if cellTypeMask r5Mask or r8Mask or individualMask = 0 + } + }; + + template (value) GRLCCntrlMsgReqType cs_PktCellChangeContinue(template (value) GlobalTFI p_GlobalTFI) := + { /* @status APPROVED (LTE_IRAT) */ + pktCellChangeContinue := { + msgType := '001011'B, // Message type + pAGE_MODE := int2bit(tsc_NormalPaging,2), // Normal paging + globalTFImask := '0'B, + gLOBAL_TFI := p_GlobalTFI, // not present if globalTFImask=1 + gsmMask := '0'B, // @sic R5s120939 sic@ + arfcn := omit, // not present if gsmMask = 0 + bsic := omit, // not present if gsmMask = 0 arbitary value + containerId := omit // not present if gsmMask = 0 arbitary value + } + }; + + template (value) EUTRAN_TargetCell cs_EUTRAN_TargetCell (B16_Type p_Earfcn, + B1_Type p_BWMask, + template (omit) B3_Type p_Bandwidth, + B9_Type p_CellIdentity) := + { /* @status APPROVED (LTE_IRAT) */ + earfcn := p_Earfcn, + bwMask := p_BWMask, + bandwidth := p_Bandwidth, + cellIdentity := p_CellIdentity + }; + + template (present) GRLCCntrlMsgIndType cr_PktCellChangeNotificationAny := + { /* @status APPROVED (LTE_IRAT) */ + pktCellChangeNotification := { + msgType := '001100'B, // Message type + gLOBAL_TFI := ?, + gsmMask := ?, + arfcn := *, // not present if gsmMask = 1 + bsic := *, // not present if gsmMask = 1 + rel6Mask := *, // not present if gsmMask = 0 + target3GCell := *, // not present if gsmMask = 0 or rel6Mask = 1 + rel8Mask := *, // not present if gsmMask = 0 or rel6Mask = 0 + arfcnMask := *,// not present if gsmMask = 0 or rel6Mask = 0 or rel8Mask = 1 + earfcn := *, // not present if gsmMask = 0 or rel6Mask = 0 or rel8Mask = 1 or arfcnMask = 0 + ebsic := *, // not present if gsmMask = 0 or rel6Mask = 0 or rel8Mask = 1 or arfcnMask = 0 + e3GMask := *, // not present if gsmMask = 0 or rel6Mask = 0 or rel8Mask = 1 + etarget3GCell := *, // not present if gsmMask = 0 or rel6Mask = 0 or rel8Mask = 1 or e3GMask = 0 + eTargetMask := *, // not present if gsmMask = 0 or rel6Mask = 0 or rel8Mask = 1 + EUTRAN_TargetCell := *,// not present if gsmMask = 0 or rel6Mask = 0 or rel8Mask = 1 or eTargetMask = 0 + eutranRepQuantity := *,// not present if gsmMask = 0 or rel6Mask = 0 or rel8Mask = 1 or eTargetMask = 0 + eCCNRptMask := *, // not present if gsmMask = 0 or rel6Mask = 0 or rel8Mask = 1 + eCCNMeasReport := *,// not present if gsmMask = 0 or rel6Mask = 0 or rel8Mask = 1 or eCCNRptMask = 0 + rel9Mask := *, // not present if gsmMask = 0 or rel6Mask = 0 or rel8Mask = 0 + csgMask := *, // not present if gsmMask = 0 or rel6Mask = 0 or rel8Mask = 0 or rel9Mask = 1 + uCSGMeasRpt := *, // not present if gsmMask = 0 or rel6Mask = 0 or rel8Mask = 0 or rel9Mask = 1 or or csgMask = 0 + eCSGMeasRpt := *, // not present if gsmMask = 0 or rel6Mask = 0 or rel8Mask = 0 or rel9Mask = 1 or csgMask = 1 + eCCNMask := *, // not present if gsmMask = 0 or rel6Mask = 0 or rel8Mask = 0 or rel9Mask = 1 + eCCNMeasRpt := *, // not present if gsmMask = 0 or rel6Mask = 0 or rel8Mask = 0 or rel9Mask = 1 or eCCNMask = 0 + baMask := ?, + baUsed := *, // not present if baMask = 1 + psi3ChangeMark := *, // not present if baMask = 0 + pmoUsed := ?, + pccnSending := ?, + nCMeasReport := ?, + r6Mask := ?, + ba3GMask := *, // not present if r6Mask = 0 + ba3GUsed := *, // not present if r6Mask = 0 or ba3GMask = 0 + n3G := *, // not present if r6Mask = 0 + ccn3GMeasReport := *, + r10Mask := *, // not present if r6Mask = 0 @sic R5s120178 Baseline Moving sic@ + csgDiscriminator := *, // not present if r6Mask = 0 or r10Mask = 0 @sic R5s120178 Baseline Moving sic@ + paddingBits := * // uplink, so have to receive this in TTCN + } + }; + + template (present) GRLCCntrlMsgIndType cr_PktCellChangeFailureAny := + { + pktCellChangeFail := { + msgType := '000000'B, // Message type + tlli_GRNTI :=?, + arfcn :=?, + bsic :=?, + cause :=?, + r99Mask :=?, + fddMask :=*, + fddTargetCell :=*, + tddMask :=*, + tddTargetCell :=*, + r5Mask :=*, + grntiXMask :=*, + gRNTIExtension :=*, + r8Mask :=*, + eutranMask :=*, + eutranTargetCell :=*, + rel9Mask :=*, + utranCSGMask :=*, + uCSGTargetCell :=*, + eutranCSGMask :=*, + eCSGTargetCell :=*, + paddingBits :=* + } + }; + + template (present) GRLCCntrlMsgIndType cr_PktMeasReportAny := + { /* @status APPROVED (LTE_IRAT) */ + pktMeasRpt := { + msgType := '000100'B, // Message type + tLLI := ?, + psi5Mask := ?, + psi5ChangeMark := *, // not present if psi5Mask = 0 + ncMask := '0'B, // @sic R5s130241 sic@ + ncMode := ?, + nCMeasReport := ?, // @sic R5s130241 sic@ + r99Mask := '1'B, // @sic R5s130241 sic@ + baMask := ?, // not present if r99Mask = 0 + psiMask := *, // not present if r99Mask = 0 or baMask = 0 + baUsed := *, // not present if r99Mask = 0 or baMask = 0 or psiMask = 1 + ba3GUsed := *, // not present if r99Mask = 0 or baMask = 0 or psiMask = 1 + psi3ChangeMark := *, // not present if r99Mask = 0 or baMask = 0 or psiMask = 0 + pmoUsed := *, // not present if r99Mask = 0 or baMask = 0 + reportMask := ?, // not present if r99Mask = 0 + meas3GReport := *, // not present if r99Mask = 0 or reportMask = 0 + r5Mask := ?, // not present if r99Mask = 0 + grntiXMask := *, // not present if r99Mask or r5Mask = 0 + gRNTIExtension := *, // not present if r99Mask or r5Mask or gRNTIXMask = 0 + r8Mask := *, // not present if r99Mask or r5Mask = 0 + eutranRptMask := *, // not present if r99Mask or r5Mask or r8Mask = 0 + eutranMeasReport := *, // not present if r99Mask or r5Mask or r8Mask or eutranMask = 0 + r9Mask := *, // not present if r99Mask or r5Mask or r8Mask = 0 + utranMask := *, // not present if r99Mask or r5Mask or r8Mask or r9Mask = 0 + utranCSGReport := *, // not present if r99Mask or r5Mask or r8Mask or r9Mask or utranMask = 0 + eutranMask := *, // not present if r99Mask or r5Mask or r8Mask or r9Mask = 0 + eutranCSGReport := *, // not present if r99Mask or r5Mask or r8Mask or r9Mask or eutranMask = 0 + paddingBits := * + } + }; + + template (present) GRLCCntrlMsgIndType cdr_PktMeasReport_Eutran(template EUTRANMeasReport p_EUTRANMeasReport) + modifies cr_PktMeasReportAny := + { /* @status APPROVED (LTE_IRAT) */ + pktMeasRpt := { + ncMode := ?, + r5Mask := '1'B, // not present if r99Mask = 0 + grntiXMask := ?, // not present if r99Mask or r5Mask = 0 + gRNTIExtension := *, // not present if r99Mask or r5Mask or gRNTIXMask = 0 + r8Mask := '1'B, // not present if r99Mask or r5Mask = 0 + eutranRptMask := '1'B, // not present if r99Mask or r5Mask or r8Mask = 0 + eutranMeasReport := p_EUTRANMeasReport, // not present if r99Mask or r5Mask or r8Mask or eutranMask = 0 + r9Mask := ?, // not present if r99Mask or r5Mask or r8Mask = 0 + utranMask := *, // not present if r99Mask or r5Mask or r8Mask or r9Mask = 0 + utranCSGReport := *, // not present if r99Mask or r5Mask or r8Mask or r9Mask or utranMask = 0 + eutranMask := *, // not present if r99Mask or r5Mask or r8Mask or r9Mask = 0 + eutranCSGReport := *, // not present if r99Mask or r5Mask or r8Mask or r9Mask or eutranMask = 0 + paddingBits := * + } + }; + + template (present) EUTRANMeasReport cr_EUTRANMeasReport_1Cell(B9_Type p_CellId) := + { /* @status APPROVED (LTE_IRAT) */ + nEutran := ?, + list := { + cr_EutranMeasRpt(p_CellId) + } + }; + + template (present) EutranMeasRpt cr_EutranMeasRpt(B9_Type p_CellId) := + { /* @status APPROVED (LTE_IRAT) */ + index := ?, + cellIdentity := p_CellId, + reportQuantity := ? + }; + + template (value) SYSTEMINFORMATIONTYPE1 cs_SysInfoType1(template (value) CellChDescr p_CellAlloc, + template (value) RACHControlParam p_RACHControlParam, + template (value) B1_Type p_BandInd) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + l2PseudoLength := '55'O, // L2 pseudo length = 21 + skipIndicator := '0000'B, // skip indicator + rRProtocolDiscriminator := '0110'B, // RR protocol discriminator + msgType := '00011001'B, // message type + cellChDescr := p_CellAlloc, // cell channel description, with IEI omitted + rACHControlParam := p_RACHControlParam, // rach control parameters, without IEI + sI1RO := cs_SI1_RO(p_BandInd) // SI1 rest octets + }; + + template (value) SYSTEMINFORMATIONTYPE13 cs_SysInfoType13(template (value) SI13RO p_SI13RO) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + l2PseudoLength := '01'O, // L2 pseudo length = 0 + skipIndicator := '0000'B, // skip indicator + rRProtocolDiscriminator := '0110'B, // RR protocol discriminator + msgType := '00000000'B, // message type + si13roct := p_SI13RO // SI3 rest octets + }; + + template (value) SYSTEMINFORMATIONTYPE15 cs_SysInfoType15(template (value) SI15RO p_SI15RO) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + l2PseudoLength := '01'O, // L2 pseudo length = 0 + skipIndicator := '0000'B, // skip indicator + rRProtocolDiscriminator := '0110'B, // RR protocol discriminator + msgType := '01000011'B, // message type + si15roct := p_SI15RO // SI15 rest octets + }; + + template (value) SYSTEMINFORMATIONTYPE2 cs_SysInfoType2(template (value) NeighCellDescr p_NeighBCCHs, + template (value) O1_Type p_NCC_Permitted, + template (value) RACHControlParam p_RACHControlParam) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + l2PseudoLength := '59'O, // L2 pseudo length = 22 + skipIndicator := '0000'B, // skip indicator + rRProtocolDiscriminator := '0110'B, // RR protocol discriminator + msgType := '00011010'B, // message type + neighBCCHFreqList := p_NeighBCCHs, // bcch frequency list of neighbour cells with IEI omitted + nCCPermitted := p_NCC_Permitted, // ncc permitted + rACHControlParam := p_RACHControlParam // rach control parameters + }; + + template (value) SYSTEMINFORMATIONTYPE2bis cs_SysInfoType2bis(template (value) NeighCellDescr p_ExtBCCHs, + template (value) RACHControlParam p_RACHControlParam) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + l2PseudoLength := '55'O, // L2 pseudo length = 21 + skipIndicator := '0000'B, // skip indicator + rRProtocolDiscriminator := '0110'B, // RR protocol discriminator + msgType := '00000010'B, // message type + extNeighBCCHFreqList := p_ExtBCCHs, // extended bcch frequency list of neighbour cells + rACHControlParam := p_RACHControlParam // rach control parameters + }; + + template (value) SYSTEMINFORMATIONTYPE2quater cs_SysInfoType2quater(template (value) SI2quaterRO p_SI2quaterRO) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + l2PseudoLength := '05'O, // L2 pseudo length = 1 + skipIndicator := '0000'B, // skip indicator + rRProtocolDiscriminator := '0110'B, // RR protocol discriminator + msgType := '00000111'B, // message type + sI2quaterRO := p_SI2quaterRO // UTRAN parameters + }; + + template (value) SYSTEMINFORMATIONTYPE2ter cs_SysInfoType2ter(template (value) NeighCellDescr2 p_ExtBCCHs2, + template (value) SI2terRO p_SI2terRO) := + { + l2PseudoLength := '49'O, // L2 pseudo length = 18 + skipIndicator := '0000'B, // skip indicator] + rRProtocolDiscriminator := '0110'B, // RR protocol discriminator + msgType := '00000011'B, // message type + extNeighBCCHFreqList := p_ExtBCCHs2, // extended bcch frequency list of neighbour cells + sI2terRO := p_SI2terRO // UTRAN parameters + }; + + template (value) SYSTEMINFORMATIONTYPE3 cs_SysInfoType3(template (value) O2_Type p_CellIdentity, + template (value) LocAreaId p_LAI, + template (value) ControlChDescr p_ControlChDescr, + template (value) CellOptionBCCH p_CellOption, + template (value) CellSelParam p_CellSelParam, + template (value) RACHControlParam p_RACHControlParam, + template (value) SI3RO p_SI3RO) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + l2PseudoLength := '49'O, // L2 pseudo length = 18 + skipIndicator := '0000'B, // skip indicator + rRProtocolDiscriminator := '0110'B, // RR protocol discriminator + msgType := '00011011'B, // message type + celIId := p_CellIdentity, // cell identity + lai := p_LAI, // location area identification + controlChDescr := p_ControlChDescr, // control channel description + cellOption := p_CellOption, // cell options/BCCH + cellSelParam := p_CellSelParam, // cell selection parameters + rACHControlParam := p_RACHControlParam, // rach control parameters + sI3RO := p_SI3RO // SI3 rest octets + }; + + //----------------------------------------------------------------------------- + + template (value) SYSTEMINFORMATIONTYPE4 cs_SysInfoType4(template (value) LocAreaId p_LAI, + template (value) CellSelParam p_CellSelParam, + template (value) RACHControlParam p_RACHControlParam, + template (value) SI4RO p_SI4RO) := + { /* no cell broadcast channel description IE, no cell broadcast channel mobile allocation IE. */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + l2PseudoLength := '31'O, // L2 pseudo length = 12 + skipIndicator := '0000'B, // skip indicator + rRProtocolDiscriminator := '0110'B, // RR protocol discriminator + msgType := '00011100'B, // message type + lai := p_LAI, // location area identification + cellSelParam := p_CellSelParam, // cell selection parameters + rACHControlParam := p_RACHControlParam, // rach control parameters + cbchd := omit, // cbch channel description + cbchmobileAlloc := omit, // mobile allocation + si4roct := p_SI4RO // SI4 rest octets + // OCTETSTRING [10] + }; + + template (value) SYSTEMINFORMATIONTYPE5 cs_SysInfoType5(template (value) NeighCellDescr p_NeighCellFreqList) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + l2PseudoLength := '49'O, // L2 pseudo length =18 + skipIndicator := '0000'B, // skip indicator + rRProtocolDiscriminator := '0110'B, // RR protocol discriminator + msgType := '00011101'B, // message type + bCCHFreqList := p_NeighCellFreqList // bcch frequency list + }; + + template (value) SYSTEMINFORMATIONTYPE5bis cs_SysInfoType5bis(template (value) NeighCellDescr p_ExtBCCHs) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + l2PseudoLength := '49'O, // L2 pseudo length = 18 + skipIndicator := '0000'B, // skip indicator + rRProtocolDiscriminator := '0110'B, // RR protocol discriminator + msgType := '00000101'B, // message type + extNeighBCCHFreqList := p_ExtBCCHs // extended bcch frequency list of neighbour cells + }; + + template (value) SYSTEMINFORMATIONTYPE6 cs_SysInfoType6(template (value) O2_Type p_CellIdentity, + template (value) LocAreaId p_LAI, + template (value) CellOptionSACCH p_CellOptionSACCH, + template (value) NCCPermitted p_NCCPermitted, + template (value) SI6RO p_SI6RO) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + l2PseudoLength := '2D'O, // L2 pseudo length = 11 + skipIndicator := '0000'B, // skip indicator + rRProtocolDiscriminator := '0110'B, // RR protocol discriminator + msgType := '00011110'B, // message type + ci := p_CellIdentity, // cell identity + lai := p_LAI, // location area identification + co := p_CellOptionSACCH, // cell options /SACCH + nCCPermitted := p_NCCPermitted, // ncc permitted + si6roct := p_SI6RO // SI6 Rest Octets + }; + + //----------------------------------------------------------------------------- + + template (present) AccessIndType cr_G_ChannelReq(template (present) B8_Type p_EstCauRandomRef) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + chReq := { + estCauRandomRef := p_EstCauRandomRef + } + }; + + template (present) AccessIndType cr_G_ChannelReq_Any := cr_G_ChannelReq(?); /* To match any received CHANNEL REQUEST message; @status APPROVED (LTE_A, LTE_IRAT) */ + template (present) AccessIndType cr_G_ChannelReq_LocUpdate := cr_G_ChannelReq('000?????'B); /* A CHANNEL REQUEST message containing establishment cause location update; @status APPROVED (LTE_IRAT) */ + template (present) AccessIndType cr_ChanReqOnePhase := cr_G_ChannelReq(('011110??'B, '01111?0?'B, '01111??0'B)); /* @status APPROVED (LTE_A, LTE_IRAT) */ + template (present) AccessIndType cr_ChanReqTwoPhase := cr_G_ChannelReq('01110???'B); /* @status APPROVED (LTE_A, LTE_IRAT); @sic R5s120521 sic@ */ + template (present) AccessIndType cr_ChanReqOtherProc := cr_G_ChannelReq(('111?????'B, '0001????'B)); + + //----------------------------------------------------------------------------- + + template (present) DTMREQUEST cr_DTM_Request := + { /* DTM INFORMATION ue/ms -> ntw + 3GPP TS 44.018 clause 9.1.12i */ + skipIndicator := tsc_SkipIndicator, // skip indicator M + rRProtocolDiscriminator := tsc_PD_RR, // RR protocol discriminator M + msgType := '01001010'B, // message type M + tLLI := ?, + chReqDescr := cr_ChReqDescr2 // channel request descritption M LV OCTETSTRING [5-n] + }; + + //----------------------------------------------------------------------------- + + template (present) L2DataIndType cr_GPRS_SuspensionReq(template (present) TLLI p_TLLI, + template (present) RoutingAreaId p_RAI, + template (present) O1_Type p_Cause := ?) := + { /* RR GPRS Suspension Request ue/ms -> ntw + 3GPP TS 44.018 clause 9.1.13b */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + gprsSuspendReq := { + skipIndicator := tsc_SkipIndicator, // skip indicator + rRProtocolDiscriminator := tsc_PD_RR, // RR protocol discriminator + msgType := '00110100'B, // '00110100'B + tlli := p_TLLI, // Temporary Logical Link Identity + raIdentification := p_RAI, // Routeing Area Identification + cause := p_Cause, // SuspensionCause + serviceSupport := * + } + }; + + //----------------------------------------------------------------------------- + + template (present) L2DataIndType cr_G_AssignmentComplete := + { /* RR ASSSIGNMENT COMPLETE ue/ms -> ntw + 3GPP TS 44.018 clause 9.1.3 */ + /* @status APPROVED (LTE_IRAT) */ + assignmentComplete := { + skipIndicator := ?, // skip indicator + rRProtocolDiscriminator := '0110'B, // RR protocol discriminator + msgType := '00101001'B, // message type + rRCau := cr_G_RR_Cause // RR cause M BITSTRING [8] without IEI + } + }; + + //----------------------------------------------------------------------------- + + template (present) L2DataIndType cr_G_AssignmentFailure := + { /* RR ASSSIGNMENT FAILURE ue/ms -> ntw + 3GPP TS 44.018 clause 9.1.4 */ + /* @status APPROVED (LTE_IRAT) */ + assignmentFail := { + skipIndicator := ?, // skip indicator M + rRProtocolDiscriminator := '0110'B, // RR protocol discriminator M + msgType := '00101111'B, // message type M + rRCau := cr_G_RR_Cause // RR cause M BITSTRING [8] without IEI + } + }; + + //----------------------------------------------------------------------------- + + template (present) L2DataIndType cr_G_CipheringModeComplete := + { /* RR CIPHERING MODE COMPLETE ue/ms -> ntw/ue + 3GPP TS 44.018 clause 9.1.10 */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cipherComplete := { + skipIndicator := ?, // skip indicator M + rRProtocolDiscriminator := tsc_PD_RR, // RR protocol discriminator M + msgType := tsc_MT_CipheringModeComplete, // message type M + mobileEquipId := omit // mobile equipment identity O OCTETSTRING [10], 15 digits, BCD + } + }; + + //----------------------------------------------------------------------------- + + template (present) L2DataIndType cr_G_ClassmarkChangeAny := + { /* RR CLASSMARK CHANGE ue/ms -> ntw + 3GPP TS 44.018 clause 9.1.11 */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + classmarkChange := { + skipIndicator := '0000'B, // skip indicator M + rRProtocolDiscriminator := '0110'B, // RR protocol discriminator M + msgType := '00010110'B, // message type M + msclsmk := cr_MS_Clsmk2_Any, // mobile station classmark M + additionalMsclsmk := cr_MSCLSMK3_Any // addtional mobile station classmark information C OCTETSTRING [14] + } + }; + + template (present) L2DataIndType cr_G_Alerting(template TI p_TI) := + { /* @status APPROVED (LTE_IRAT) */ + alerting := cr_Alert_Common (p_TI) + }; + + template (present) L2DataIndType cr_G_Connect(template TI p_TI) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + connectul := cr_Connect_Common (p_TI) + }; + + template (value) L2DataReqType cs_G_ConnectAck(template (value) TI p_TI ) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + connectAcknowledge := cs_ConnAck_Common(p_TI) + }; + + template (present) L2DataIndType cr_G_CallConfirmed(template TI p_TI, + template StreamId p_StrId := *) := + { /* @status APPROVED (LTE_IRAT) */ + callConfirmed := cr_CallConf_Common (p_TI, p_StrId) + }; + + template (present) EstablishIndType cr_G_CMServiceRequest(template (present) KeySeq p_KeySeq) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + cmServiceReq := cr_CM_ServReq (p_KeySeq) + }; + + template (value) L2DataReqType cs_G_CMServiceReject(template (value) RejCau p_RejCau) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + cmServiceReject := cs_CM_ServRej (p_RejCau) + }; + + template (value) L2DataReqType cs_G_CallProc(template (value) TI p_TI) := + { /* @status APPROVED (LTE_IRAT) */ + callProceeding := cs_CallProc_Common(p_TI) + }; + + template (value) L2DataReqType cs_G_Alert(template (value) TI p_TI) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + alerting := cs_Alert_Common(p_TI) + }; + + template (value) L2DataReqType cs_G_Connect(template (value) TI p_TI) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + connectdl := cs_Connect_Common(p_TI) + }; + + template (present) L2DataIndType cr_G_ConnAck(template (present) TI p_TI) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + connectAcknowledge := cr_ConnAck_Common(p_TI) + }; + + template (value) L2DataReqType cs_G_Disconnect (template (value) TI p_Ti) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + disconnectdl := cs_Disconnect_Common(p_Ti) + }; + + template (present) L2DataIndType cr_G_Release(template (present) TI p_TI) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + release := cr_Rel_Common(p_TI) + }; + + template (value) L2DataReqType cs_G_RelCmpl (template (value) TI p_Ti) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + releaseComplete := cs_RelCmpl_Common(p_Ti) + }; + //----------------------------------------------------------------------------- + + template (present) EstablishIndType cr_G_LocationUpdatingRequest := + { /* TS 24.008 V3.4.0 cl. 9.2.15 */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + locUpdReq := cr_LocUpdReq_Common (?, -, -, -, -, omit) // @sic R5s110801 sic@ + }; + + template (present) EstablishIndType cr_G_LocationUpdatingRequestIMSI := + { /* @status APPROVED (LTE_IRAT) */ + locUpdReq := cr_LocUpdReq_Common (?, cdr_LocUpdTypeIMSI, -, -, -, omit) // @sic R5s110801 sic@ + }; + + template (present) EstablishIndType cr_G_LocationUpdatingRequestNormal := + { /* @status APPROVED (LTE_IRAT) */ + locUpdReq := cr_LocUpdReq_Common (?, cr_LocUpdTypeNormal, -, -, -, omit) + }; + + template (present) EstablishIndType cr_G_LocationUpdatingRequest_All(template (present) KeySeq p_KeySeq, + template (present) LocUpdType p_Type := ?, // @sic R5-112114 sic@ + template (present) LocAreaId p_LocAreaId := cr_LAI_Any_v, + template (present) MS_Clsmk1 p_MSClsmk1 := cr_MS_Clsmk1_Any, + template (present) MobileIdentity p_MobileId := cr_MobileIdAny(omit), + template MS_Clsmk2 p_MSClsmk2 := omit) := // @sic R5s110801 sic@ + { /* TS 24.008 V3.4.0 cl. 9.2.15 */ + /* @status APPROVED (LTE_IRAT) */ + locUpdReq := cr_LocUpdReq_Common(p_KeySeq, p_Type, p_LocAreaId, p_MSClsmk1, p_MobileId, p_MSClsmk2) + }; + + template (present) EstablishIndType cr_G_PagRsp(template (present) KeySeq p_KeySeq, + template (present) MobileIdentity p_MobileId) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + pagingRsp := cr_PagRsp_Common ( p_KeySeq, p_MobileId ) + }; + + template (value) L2DataReqType cs_G_SetupMTCall( template (value) Bcap p_Bcap) := + { /* @status APPROVED (LTE_IRAT) */ + setupdl := cs_SetupMT_Common (p_Bcap) + }; + + //----------------------------------------------------------------------------- + + template (present) L2DataIndType cr_G_SetupUL_MO := + { /* @status APPROVED (LTE_IRAT) */ + setupul := cr_SetupMO_Common + }; + + //----------------------------------------------------------------------------- + + template (present) L2DataIndType cr_G_EmgSetup (template (present) Bcap p_Bcap := cr_BcapSpeechMO):= + { /* @status APPROVED (LTE_IRAT) */ + esetup := cr_ESetup (p_Bcap) + }; + + //----------------------------------------------------------------------------- + + template (present) L2DataIndType cr_G_UtranClassmarkChange := + { /* RR UTRAN CLASSMARK CHANGE ue/ms -> ntw + 3GPP TS 44.018 clause 9.1.11a */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + utranClassmarkChange := { + skipIndicator := '0000'B, // skip indicator M + rRProtocolDiscriminator := '0110'B, // RR protocol discriminator M + msgType := '01100000'B, // message type M + uTRANPreConfigInfo := cr_UtranPreConfigInfo // UTRAN predefined configuration status informatiom M OCTETSTRING [2..n] + } + }; + + template (present) GRLCCntrlMsgIndType cr_PacketControlAcknowledgement := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + pktCtrlAck := { + msgType := '000001'B, // Message type + tLLI := ?, + ctrlAck := ?, + mask := *, + rRBPMask := *, // not present if mask=0 + tn_RRBP := *, // not present if mask=0 or if rRBPMask=0 + gRNTIMask := *, // not present if mask=0 + gRNTIExt := *, // not present if mask=0 or if gRNTIMask=0 + rel6mask := *, + extMask := *, // not present if rel6mask = 0 + ctrlAckExt := *, // not present if rel6mask or extMask = 0 + paddingBits := * + } + }; + + template (present) GRLCCntrlMsgIndType cr_PacketSIStatus1and3 := + { /* @status APPROVED (LTE_IRAT) */ + pktSIStatus := { + msgType := '001101'B, // Message type + globalTFI := cr_GlobalTFIAny, + bCCHChangeMark := ?, + rcvdSIList := cr_SIMessageList_SI1and3, + rcvdUnknownSIList := cr_UnknownSIListAny, + rel6Mask := *, + pSCSI_Support := *, // not present if rel6Mask = 0 + ps_RelReq := *, // not present if rel6Mask = 0 + paddingBits := * + } + }; + + template (present) GRLCCntrlMsgIndType cdr_PacketSIStatusAny modifies cr_PacketSIStatus1and3 := + { /* @status APPROVED (LTE_IRAT) */ + pktSIStatus := { + rcvdSIList := cr_SIMessageListAny + } + }; + + //----------------------------------------------------------------------------- + + template (value) L2DataReqType cs_G_AssignmentCommand(template (value) ChMode p_ChMode, + template (value) ChannelDescr p_Ch_Desc, + template (omit) FreqList p_FreqList_at, + template (omit) CellChDescr p_CellChDescr, + template (omit) MultislotAlloc p_MultiSlot, + template (omit) MobileAlloc p_MobileAlloc, + template (omit) CipherModeSetting p_Cphms) := + { /* RR ASSSIGNMENT COMMAND ntw -> ue/ms + 3GPP TS 44.018 clause 9.1.2 */ + /* @status APPROVED (LTE_IRAT) */ + assignmentCmd := { + skipIndicator := '0000'B, // skip indicator M + rRProtocolDiscriminator := '0110'B, // RR protocol discriminator M + msgType := '00101110'B, // message type M @sic R5s120498 sic@ + ch1Descr_at := p_Ch_Desc, // description of the 1st channel, after time M OCTETSTRING [3] + powerCmd := cs_PowerCommand, // power command M OCTETSTRING [1] without IEI + freqList_at := p_FreqList_at, // frequency list, after time C OCTETSTRING [4..132] + cellChDescr := p_CellChDescr, // cell channel description O OCTETSTRING [17] + multiSlotConfig := p_MultiSlot, // multislot allocation C OCTETSTRING [3..12] + ch1Mode := p_ChMode, // mode of the 1st channel (channel set 1) O OCTETSTRING [2] + channelSet2Mode := omit, // mode of channel set 2 O OCTETSTRING [2] + channelSet3Mode := omit, // mode of channel set 3 O OCTETSTRING [2] + channelSet4mode := omit, // mode of channel set 4 O OCTETSTRING [2] + channelSet5mode := omit, // mode of channel set 5 O OCTETSTRING [2] + channelSet6mode := omit, // mode of channel set 6 O OCTETSTRING [2] + channelSet7mode := omit, // mode of channel set 7 O OCTETSTRING [2] + channelSet8mode := omit, // mode of channel set 8 O OCTETSTRING [2] + ch2Descr_at := omit, // description of the 2nd channel, after time O OCTETSTRING [4] + ch2Mode := omit, // mode 2 of the 2nd channel O OCTETSTRING [2] + mobileAlloc_at := p_MobileAlloc, // mobile allocation after time C OCTETSTRING [3..10] + startingTime := omit, // starting time O OCTETSTRING [3] + freqList_bt := omit, // frequency list, before time C OCTETSTRING [4..132] + ch1Descr_bt := omit, // description of the 1st channel, before time O OCTETSTRING [4] + ch2Descr_bt := omit, // description of the 2nd channel, before time O OCTETSTRING [4] + frqchs_bt := omit, // frequency channel sequence before time C OCTETSTRING [10] + mobileAlloc_bt := omit, // mobile allocation before time C OCTETSTRING [3..10] + cphms := p_Cphms, // cipher mode setting O OCTETSTRING [1] + vGCS_TargetMode := omit, // VGCS target mode Indication O OCTETSTRING [3] + mltiRateConfig := omit, // multiRate configuration O OCTETSTRING [4..8] + vGCS_CipherParams := omit + } + }; + + //----------------------------------------------------------------------------- + + template (value) L2DataReqType cs_G_CipheringModeCommand(B1_Type p_StartCiph) := + { /* RR CIPHERING MODE COMMAND ntw -> ue/ms + 3GPP TS 44.018 clause 9.1.9 */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cipherModeCmd := { + skipIndicator := tsc_SkipIndicator, // skip indicator + rRProtocolDiscriminator := tsc_PD_RR, // RR protocol discriminator + msgType := tsc_MT_CipheringModeCommand, // message type + cipherResponse := cs_CipherResponse, // cipher response + cipherModeSetting := cs_CipherModeSetting(p_StartCiph) // cipher mode setting + } + }; + + //----------------------------------------------------------------------------- + + template (value) L2DataReqType cs_G_LocationUpdatingAccept(octetstring p_PLMN, + octetstring p_LAC, + template (omit) MobileIdentity p_MS_Id) := + { /* MM LOCATION UPDATING ACCEPT n -> ms + 3G TS 24.008 V3.4.0 cl. 9.2.13 + (1) In messages sent from the network bits 7 and 8 are "0" (see 3G TS 24.008 cl. 10.4). */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + locUpdAccept := cs_LocUpdAcp_Common (p_PLMN, p_LAC, p_MS_Id, omit) + }; + + template (value) L2DataReqType cs_G_TMSI_ReallocCmd (octetstring p_PLMN, + octetstring p_LAC, + template (value) MobileIdentity p_MS_Id) := + { /* MM TMSI Relocation command n -> ms + 3G TS 24.008 V3.4.0 cl. 9.2.17 + (1) In messages sent from the network bits 7 and 8 are "0" (see 3G TS 24.008 cl. 10.4). */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + tmsiReallocCmd := cs_TMSI_ReallocCmplCmd_Common (p_PLMN, p_LAC, p_MS_Id) + }; + + //----------------------------------------------------------------------------- + + template (present) EstablishIndType cr_G_Imsi_DetachInd(template (present) MobileIdentity p_MobileIdentity := cr_MobileIdAny (omit)) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + // @sic R5s140414 sic@ + imsiDetachInd := cr_IMSI_DetachInd_Common (-, p_MobileIdentity) // @sic R5s120632 sic@ + }; + + //----------------------------------------------------------------------------- + + template (value) PHYSICALINFORMATION cs_G_PhysicalInformation(bitstring p_TA_Bits) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + skipIndicator := '0000'B, // skip indicator + rRProtocolDiscriminator := '0110'B, // RR protocol discriminator + msgType := '2D'O, // '00101101'B + ta := cs_TA (p_TA_Bits) // timing advance M OCTETSTRING [1] + }; + + //----------------------------------------------------------------------------- + + template (value) IMMEDIATEASSIGNMENT cs_ImmediateAssignment_Common(O1_Type p_L2PseudoLength := '2D'O, + template (value) DedicatedModeOrTBF p_DedicatedModeOrTBF, + template (omit) ChannelDescr p_ChannelDescr, + template (omit) PacketChDescr p_PacketChDescr, + template (value) ReqRef p_ReqRef, + B6_Type p_TA, + template (value) MobileAlloc p_MobileAlloc := cs_G_MobileAlloc, + template (omit) IARO p_RO := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + l2PseudoLength := p_L2PseudoLength, // L2 pseudo length + skipIndicator := tsc_SkipIndicator, // skip indicator + rRProtocolDiscriminator := tsc_PD_RR, // RR protocol discriminator + msgType := tsc_MT_ImmediateAssignment, // message type + dedicatedModeOrTBF := p_DedicatedModeOrTBF, // dedicated mode or TBF M BITSTRING [4] without IEI + pageMode := cs_G_PageModeIE, // page mode M BITSTRING [4] without IEI + chDescr := p_ChannelDescr, + packetChDescr := p_PacketChDescr, + reqRef := p_ReqRef, + ta := cs_G_TA (p_TA), // timing advance M OCTETSTRING [1] @sic R5s120587 sic@ + mobileAlloc := p_MobileAlloc, + startingTime := omit, // starting time O OCTETSTRING [3] + iaroct := p_RO // IA rest octets / frequency parameter, before time M + }; + + + template (value) IMMEDIATEASSIGNMENT cs_ImmediateAssignment(B10_Type p_ARFCN, + B3_Type p_TSC, + integer p_RR_RA, + RFN p_RR_RFN, + B6_Type p_TA) := + /* RR IMMEDIATE ASSIGNMENT ntw -> ue/ms + 3GPP TS 44.018 clause 9.1.18 + The message has a fixed length of 23 octets. */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_ImmediateAssignment_Common(-, + cs_G_DedicatedModeOrTBF, + cs_G_ChannelDescr ('00101'B, '000'B, p_ARFCN, p_TSC), + omit, + cs_G_ReqRef (p_RR_RA, p_RR_RFN), + p_TA); + + template (value) IMMEDIATEASSIGNMENT cs_P_ImmediateAssignment(B1_Type p_Downlink, + B10_Type p_ARFCN, + integer p_RR_RA, + template (value) RFN p_RR_RFN, + B6_Type p_TA, + template (value) IARO p_RO) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_ImmediateAssignment_Common(-, + cs_G_TBFMode(p_Downlink), + omit, + cs_PacketChDescr(p_ARFCN), + cs_G_ReqRef (p_RR_RA, p_RR_RFN), + p_TA, + -, + p_RO); + + //============================================================================= + // PDU templates + //----------------------------------------------------------------------------- + + template (present) LLCUnitDataIndType cr_G_AttachReq(template (present) AttachType p_AttachType, + template (present) MobileIdentity p_MobId, + template (present) RoutingAreaId p_RAI, + template (present) KeySeq p_KeySeq, + template (present) MS_RadioAccessCap_LV p_MS_RadioAccessCap := cr_MS_RadioAccessCapLVAny) := + { /* @status APPROVED (LTE_IRAT) */ + attReq := cr_AttachReq_Common(p_AttachType, + p_MobId, + p_RAI, + p_KeySeq, + p_MS_RadioAccessCap) + }; + + //----------------------------------------------------------------------------- + + template (present) LLCUnitDataIndType cr_G_AttachReqWithIMSI(template (present) AttachType p_AttachType, + template (present) MobileIdentity p_MobId, + template (present) RoutingAreaId p_RAI, + template TMSI_Status p_TMSI_Status := cr_TMSI_Status ('0'B)) := + { /* @status APPROVED (LTE_IRAT) */ + attReq := cr_AttachReq_Common(p_AttachType, + p_MobId, + p_RAI, + '111'B, // No key available + -, + omit, // No PTMSI + -, + p_TMSI_Status, // @sic R5s110279 sic@ + -, + -, + -, + -, + -, + omit, + omit) + }; + + template (present) LLCUnitDataIndType cr_G_AttachReq_MSandUENetworkCap(template (present) AttachType p_AttachType, + template (present) MobileIdentity p_MobId, + template (present) RoutingAreaId p_RAI, + template (present) KeySeq p_KeySeq, + template (present) MS_RadioAccessCap_LV p_MS_RadioAccessCap := cr_MS_RadioAccessCapLVAny, + template UE_NetworkCap p_UENetworkCap := cr_UENetworkCap_Any ('58'O) ifpresent) := + { /* @status APPROVED (LTE_IRAT) */ + attReq := cr_AttachReq_Common(p_AttachType, + p_MobId, + p_RAI, + p_KeySeq, + p_MS_RadioAccessCap, + -, + -, + -, + -, + -, + -, + -, + p_UENetworkCap) + }; + + //----------------------------------------------------------------------------- + + template (value) LLCUnitDataReqType cs_G_AttachAccept(template (value) AttachResult p_AttachRes, + template (value) RoutingAreaId p_RAI, + template (omit) PTMSI_Signature p_PTMSIsig, + template (omit) MobileIdentity p_PTMSI, + template (omit) MobileIdentity p_TMSI) := + { /* As per default message in 51.010, clause 40.2.4 */ + /* @status APPROVED (LTE_IRAT) */ + attAccept := cs_AttachAcc_Common (p_AttachRes, p_RAI, p_PTMSIsig, p_PTMSI, omit, p_TMSI) // @sic R5-123114 sic@ + }; + + //----------------------------------------------------------------------------- + + template (present) LLCUnitDataIndType cr_G_AttachComplete := + { /* @status APPROVED (LTE_IRAT) */ + attComplete := cr_AttachComplete_Common + }; + + //----------------------------------------------------------------------------- + + template (value) LLCUnitDataReqType cs_G_AttachReject( RejCau p_Cause) := + { /* As per default message in 51.010, clause 40.2.4 */ + /* @status APPROVED (LTE_IRAT) */ + attReject := cs_AttachRej_Common(p_Cause) + }; + + template (value) LLCUnitDataReqType cs_G_AuthAndCiphReq(template (value) RAND p_RAND, + template (value) CiphKeySeqNum p_CiphKeySeqNum, + template (value) GPRS_CipherAlg p_CipherAlg, + template (value) AUTN p_AUTN) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + autnCipherReq := cs_AuthAndCiphReq_Common(p_RAND, p_CiphKeySeqNum, p_CipherAlg, p_AUTN) + }; + + //----------------------------------------------------------------------------- + + template (present) LLCUnitDataIndType cr_G_AuthAndCiphFailureAny := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + authCipherFail := cr_AuthAndCiphFailure_Common + }; + + //----------------------------------------------------------------------------- + + template (present) LLCUnitDataIndType cr_G_AuthAndCiphRsp(template AuthRsp p_AuthRsp, + template AuthRspExt p_AuthRspExt) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + authCipherResp := cr_AuthAndCiphRsp_Common (p_AuthRsp, p_AuthRspExt) + }; + + //----------------------------------------------------------------------------- + + template (present) LLCUnitDataIndType cr_G_DetachRequest(template DetachType p_Type, + template MobileIdentity p_Ptmsi, + template PTMSI_Signature p_Signature := cr_PTMSI_Signature2Any ifpresent) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + detachReq := cr_DetachReq_Common (p_Type, p_Ptmsi, p_Signature) + }; + + //----------------------------------------------------------------------------- + + template (present) LLCUnitDataIndType cr_Modify_PDP_ContextAcp_MO := + { + modPDPAccept := { + ti := cr_TI_Any, + sM_ProtocolDiscriminator := tsc_PD_SM, + msgType := '01001001'B, + protocolConfOpts := cr_ProtocolConfigOptionsAny ifpresent + } + }; + + //----------------------------------------------------------------------------- + + template (value) LLCUnitDataReqType cs_Modify_PDP_ContextReq_MT(TI p_Ti, + LLC_SAPI p_LLC_SAPI, + QualityOfService p_QOS) := + { + modifyPDPReq := { + ti := p_Ti, + sM_ProtocolDiscriminator := tsc_PD_SM, + msgType := '01001000'B, + spare := '0000'B, + radioPriority := cs_RadioPriorityHigh (omit), + requestedLLC_SAPI := p_LLC_SAPI, + newQoS := p_QOS, + pDP_Addr := omit, + pKT_FlowIdentifier := omit, + protocolConfOpts := omit, + tft := omit + } + }; + + //----------------------------------------------------------------------------- + + template (present) LLCUnitDataIndType cr_G_RA_UpdReqAny(template (present) UpdateType p_UpdateType, + template (present) RoutingAreaId p_RAI, + template PTMSI_Signature p_PTMSISig, + template (present) KeySeq p_KeySeq) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + rauReq := cr_RAURequest_Common(p_UpdateType, + p_RAI, + p_PTMSISig, + cr_TMSI_Status ('0'B), + p_KeySeq) + }; + + template (present) LLCUnitDataIndType cr_G_RA_UpdReqMSRadioAccessCap(template (present) UpdateType p_UpdateType, + template (present) RoutingAreaId p_RAI, + template PTMSI_Signature p_PTMSISig, + template (present) KeySeq p_KeySeq, + template (present) MS_RadioAccessCap_LV p_MsRadioAccessCap, + template UE_NetworkCap p_UeNetworkCapability := cr_UENetworkCap_Any ('58'O)) := + { /* @status APPROVED (LTE_IRAT) */ + rauReq := cr_RAURequest_Common(p_UpdateType, + p_RAI, + p_PTMSISig, + cr_TMSI_Status ('0'B), + p_KeySeq, + p_MsRadioAccessCap, + -, + -, + -, + -, + -, + -, + -, + p_UeNetworkCapability) + }; + + //----------------------------------------------------------------------------- + + template (value) LLCUnitDataReqType cs_G_RA_UpdAcc3(template (value) UpdateResult p_UpdateResult, + template (value) RoutingAreaId p_RAI, + template (omit) PTMSI_Signature p_PTMSIsig, + template (omit) MobileIdentity p_PTMSI, + template (omit) PDP_ContextStatus p_PDP_ContextStatus, // @sic R5-133584 sic@ + template (omit) RequestedMS_Info p_ReqMSInfo := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + rauAccept := cs_RA_UpdAcc_Common (p_UpdateResult, + p_RAI, + p_PTMSIsig, + p_PTMSI, + p_PDP_ContextStatus, /* @sic R5s120570 Additional change sic@ */ + p_ReqMSInfo) + }; + + //----------------------------------------------------------------------------- + + template (value) LLCUnitDataReqType cs_G_RAUpdReject(template (value) GMM_Cause p_RejectCause) := + { /* @status APPROVED (LTE_IRAT) */ + rauReject:= cs_RAUpdReject_Common (p_RejectCause) + }; + + //----------------------------------------------------------------------------- + + template (present) LLCUnitDataIndType cr_G_RA_UpdComplete(template EUTRAN_HO_Info p_EUTRAN_HO_Info := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + rauComplete := cr_RAUpdComplete_Common(p_EUTRAN_HO_Info) + }; + + //----------------------------------------------------------------------------- + + template (present) LLCUnitDataIndType cr_G_ActPDP_ContextReqMO_Any := + { /* @status APPROVED (LTE_IRAT) */ + actPDPContextReq := cr_ActPDP_ContextReqMO_Common (cr_QualityOfService_Any) + }; + + //----------------------------------------------------------------------------- + + template (value) LLCUnitDataReqType cs_G_PDPContextAccept(TI p_TI, + template (value) LLC_SAPI p_LLC_SAPI, + template (value) QualityOfService p_QOS, + template (omit) PktDataProtoAddr p_PDP_Addr, + template (omit) ProtocolConfigOptions p_ProtoCfgOpt) := + { /* @status APPROVED (LTE_IRAT) */ + actPDPAccept := cs_ActPDP_ContextAcpMT_Common (p_TI, p_LLC_SAPI, p_QOS, cs_RadioPriorityLow (omit), p_PDP_Addr, p_ProtoCfgOpt, omit) + }; + + //----------------------------------------------------------------------------- + + template (present) LLCUnitDataIndType cr_PacketData(template (present) octetstring p_Data):= + { + data := { + data := p_Data + } + }; + + template (value) LLCUnitDataReqType cs_PacketData (template (value) octetstring p_Data := f_GetN_OctetsFromPRBS (0, 22)):= + { // Default value is one RLC block + data := { + data := p_Data + } + }; + + //============================================================================= + // ASP templates + //----------------------------------------------------------------------------- + + template (present) G_CPHY_CONFIG_CNF car_G_CPHY_Config_CNF := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + None := true + }; + + template (present) G_CPHY_CONFIG_CNF car_G_CL1_ComingFN_CNF := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + comingFN := ? // the reduced frame number (FN modulo 42432) which is about 5 seconds later than current frame number and is able to carry L3 message + }; + + //----------------------------------------------------------------------------- + + template (value) G_CPHY_CONFIG_REQ cas_G_CL1_ChangePowerLevel_REQ(GERAN_CellId_Type p_CellId, + PhysicalChId p_PhyChId, + TX_Power p_TX_Power) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + changePowerLevel := { + cellId := enum2int(p_CellId), + physicalChId := p_PhyChId, // Channel identifier + txPower := p_TX_Power // the new transmission power level. in dBuVemf() + } + }; + + //----------------------------------------------------------------------------- + + template (value) G_CPHY_CONFIG_REQ cas_G_CPHY_CONFIG_CreatePhyCh(GERAN_CellId_Type p_CellId, + PhysicalChId p_PhyChId, + ChannelCombination_Enum p_ChComb, + template (value) FreqInfo p_FreqInfo, + template (value) TN p_TimeSlot, + template (value) TSC p_TSC, + template (omit) ChannelSpecificInfo p_ChSpecificPara := omit, + TX_Power p_DownlinkPowerLevel, + B1_Type p_BandIndicator) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + createPhyCh := { + cellId := enum2int(p_CellId), + physicalChId := p_PhyChId, // identifier of the physical channel created + channelCombination := enum2int(p_ChComb), + freqInfo := p_FreqInfo, + timeSlot := p_TimeSlot, // the time slot number of the physical channel + tSC := p_TSC, + channelSpecificPara := p_ChSpecificPara, + txPower := p_DownlinkPowerLevel, + bandIndicator := p_BandIndicator + } + }; + + template (value) G_CPHY_CONFIG_REQ cas_CreateGPRSCh(GERAN_CellId_Type p_CellId, + PhysicalChId p_PhyChId, + ChannelCombination_Enum p_ChComb, + template (value) FreqInfo p_FreqInfo, + template (value) TN p_TimeSlot, + template (value) TSC p_TSC, + TX_Power p_DownlinkPowerLevel, + B1_Type p_BandIndicator) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cas_G_CPHY_CONFIG_CreatePhyCh(p_CellId, p_PhyChId, p_ChComb, p_FreqInfo, p_TimeSlot, p_TSC, -, p_DownlinkPowerLevel, p_BandIndicator); + + + template (value) G_CPHY_CONFIG_REQ cas_CombinedCellControlCh(GERAN_CellId_Type p_CellId, + PhysicalChId p_PhyChId, + ChannelCombination_Enum p_ChComb, // := CombinedControlCH, + B10_Type p_BCCHFreq, + TSC p_TSC, + template (value) ChannelSpecificInfo p_ChSpecificPara, + TX_Power p_DownlinkPowerLevel, + B1_Type p_BandIndicator) := + /* FCCH + SCH + BCCH + CCCH + SDCCH/4(0..3) + SACCH/C4(0..3) */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cas_G_CPHY_CONFIG_CreatePhyCh(p_CellId, p_PhyChId, p_ChComb, cs_FreqInfo(p_BCCHFreq), tsc_TN0, p_TSC, p_ChSpecificPara, p_DownlinkPowerLevel, p_BandIndicator); + + + template (value) G_CPHY_CONFIG_REQ cas_CreateTCH(GERAN_CellId_Type p_CellId, + PhysicalChId p_PhyChId, + ChannelCombination_Enum p_ChComb, + template (value) FreqInfo p_FreqInfo, + template (value) TN p_TimeSlot, + template (value) TSC p_TSC, + template (value) DedCH_Info p_DedChInfo, + TX_Power p_DownlinkPowerLevel, + B1_Type p_BandIndicator) := + /* TCH/F + FACCH/F + SACCH/F */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cas_G_CPHY_CONFIG_CreatePhyCh(p_CellId, p_PhyChId, p_ChComb, p_FreqInfo, p_TimeSlot, p_TSC, cs_ChSpecificPara(p_DedChInfo, omit), p_DownlinkPowerLevel, p_BandIndicator); + + //----------------------------------------------------------------------------- + + template (value) G_CPHY_CONFIG_REQ cas_G_CL1_CipheringControl_REQ(GERAN_CellId_Type p_CellId, + PhysicalChId p_PhyCh, + B1_Type p_CiphMode) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + cipheringControl := { + cellId := enum2int(p_CellId), + physicalChId := p_PhyCh, // Channel Identifier + rcvCipherMode := p_CiphMode // Ciphering Mode in SS receiving direction: 0 -> not ciphered, 1 -> ciphered + } + }; + + //----------------------------------------------------------------------------- + + template (value) G_CPHY_CONFIG_REQ cas_G_CL1_CreateCell_REQ(GERAN_CellId_Type p_CellId, + B3_Type p_NCC, + B3_Type p_BCC, + O1_Type p_TA) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + createCell := { + cellId := enum2int(p_CellId), + baseId := p_NCC & p_BCC, + timingAdvance := oct2bit( p_TA) + } + }; + + //----------------------------------------------------------------------------- + + template (value) G_CPHY_CONFIG_REQ cas_G_CL1_CipherModeModify_REQ(GERAN_CellId_Type p_CellId, + PhysicalChId p_PhyCh, + G_LogicChType p_LogCh, + SubChannelNumber p_SubCh, + template (value) CipherModeSetting p_CipherMode) := + { /* @status APPROVED (LTE_IRAT) */ + cipherModeModify := { + cellId := enum2int(p_CellId), + physicalChId := p_PhyCh, // Channel identifier + g_LogicChType := p_LogCh, + subChannel := p_SubCh, // Valid only for logical channel types: TCH/H, FACCH/H, SACCH/TH, SDCCH/8, SACCH/C8, SDCCH/4, and SACCH/C4. For TCH/H, FACCH/H and SACCH/TH value is (0..1); For SDCCH/8 and SACCH/C8 value is (0..7); for SDCCH/4 and SACCH/C4 value is (0..3). This field is not applicable and the SS shall ignore it if this field is coded as 15. + cipherMode := p_CipherMode // the new cipher mode. definition see 3GPP TS 44.018 section 10.5.2.9 + } + }; + + //----------------------------------------------------------------------------- + + template (value) G_CPHY_CONFIG_REQ cas_G_CL1_DeleteCell_REQ(GERAN_CellId_Type p_CellId) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + deleteCell := { + cellId := enum2int(p_CellId) + } + }; + + //----------------------------------------------------------------------------- + + template (value) G_CPHY_CONFIG_REQ cas_G_CL1_DeleteChannel_REQ(GERAN_CellId_Type p_CellId, + PhysicalChId p_PhyChId) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + deleteChannel := { + cellId := enum2int(p_CellId), + physicalChId := p_PhyChId // identifier of the physical channel or the multi-slot configuration to be deleted + } + }; + + //----------------------------------------------------------------------------- + + template (present) G_L2_UNITDATA_IND cr_G_L2_UnitDataInd_MeasReportAny := + { + cellId := ?, + sAPI := 0, // 0 + physicalChId := ?, // Channel identifier + g_LogicChType := ?, + subChannel := ?, // Valid only for logical channel types: TCH/H, FACCH/H, SACCH/TH, SDCCH/8, SACCH/C8, SDCCH/4, and SACCH/C4. For TCH/H, FACCH/H and SACCH/TH value is (0..1); for SDCCH/8 and SACCH/C8 value is (0..7); for SDCCH/4 and SACCH/C4 value is (0..3). + rfn := ?, // The reduced frame number of the first frame carrying the message + msg := ? // Signalling message or user data received + }; + + //----------------------------------------------------------------------------- + + template (value) G_L2_DATAMESSAGE_REQ cas_G_Paging_REQ(GERAN_CellId_Type p_CellId, + PAGING_GROUP p_PagingGroup, + template (value) PagingReqType p_Msg) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + page := { + cellId := enum2int(p_CellId), + sAPI := 0, + physicalChId := 0, // Channel identifier of the right CCCH_GROUP or PCCCH_GROUP + g_LogicChType := tsc_PCH, // PCH + pAGING_GROUP := p_PagingGroup, // INTEGER + pagingMode := 0, // 0 -- normal paging; 1-- exteded paging; 3 -- paging reorganization + msg := p_Msg // paging message to be sent + } + }; + + //----------------------------------------------------------------------------- + + template (value) G_L2_DATAMESSAGE_REQ cas_GPRS_Paging_REQ(GERAN_CellId_Type p_CellId, + PAGING_GROUP p_PagingGroup, + integer p_PGcode, + template (value) PagingReqType p_Msg) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + pageGPRS := { + cellId := enum2int(p_CellId), + sAPI := 0, // 0 + physicalChId := 0, // Channel identifier of the right CCCH_GROUP or PCCCH_GROUP + g_LogicChType := tsc_PCH, // PCH + pAGING_GROUP := p_PagingGroup, // INTEGER + pagingMode := 0, // 0 -- normal paging; 1-- exteded paging; 3 -- paging reorganization + splitPGcycleCode := p_PGcode, // 0 -- No Split Paging, 1..32 -- Split Paging + msg := p_Msg // paging message to be sent + } + }; + + //----------------------------------------------------------------------------- + + template (value) G_L2_DATAMESSAGE_REQ cas_SysInfo_Common(GERAN_CellId_Type p_CellId, + PhysicalChId p_PhyCh := tsc_PhyCh0, + G_LogicChType p_LogicChType := tsc_BCCH, + integer p_InstanceIndex := 0, + B1_Type p_BCCHExt := '0'B, + template (value) SysInfoMsg p_SysInfoMsg) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + si := { + cellId := enum2int(p_CellId), + sAPI := tsc_SAPI_0, // 0 + physicalChId := p_PhyCh, // Channel identifier + g_LogicChType := p_LogicChType, + instanceIndex := p_InstanceIndex, + bCCHExt := p_BCCHExt, // '0' indicates message sent on BCCH Norm + // '1' indicates message sent on BCCH Ext. Only valid for SI2quater, 7, 8, 13, 16, 17. Default value '0'. + msg := p_SysInfoMsg + } + }; + + template (value) G_L2_DATAMESSAGE_REQ cas_SysInfo1(GERAN_CellId_Type p_CellId, + template (value) SYSTEMINFORMATIONTYPE1 p_SI1) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cas_SysInfo_Common(p_CellId, -, -, -, -, {si1 := p_SI1 }); + + template (value) G_L2_DATAMESSAGE_REQ cas_SysInfo2(GERAN_CellId_Type p_CellId, + template (value) SYSTEMINFORMATIONTYPE2 p_SI2) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cas_SysInfo_Common(p_CellId, -, -, -, -, {si2 := p_SI2 }); + + template (value) G_L2_DATAMESSAGE_REQ cas_SysInfo2bis(GERAN_CellId_Type p_CellId, + integer p_InstanceIndex, + template (value) SYSTEMINFORMATIONTYPE2bis p_SI2bis) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cas_SysInfo_Common(p_CellId, -, -, p_InstanceIndex, -, {si2bis := p_SI2bis }); + + template (value) G_L2_DATAMESSAGE_REQ cas_SysInfo2quater(GERAN_CellId_Type p_CellId, + integer p_InstanceIndex, + template (value) SYSTEMINFORMATIONTYPE2quater p_SI2quater) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cas_SysInfo_Common(p_CellId, -, -, p_InstanceIndex, -, {si2quater := p_SI2quater }); + + template (value) G_L2_DATAMESSAGE_REQ cas_SysInfo2ter(GERAN_CellId_Type p_CellId, + integer p_InstanceIndex, + template (value) SYSTEMINFORMATIONTYPE2ter p_SI2ter) := + cas_SysInfo_Common(p_CellId, -, -, p_InstanceIndex, -, {si2ter := p_SI2ter }); + + template (value) G_L2_DATAMESSAGE_REQ cas_SysInfo3(GERAN_CellId_Type p_CellId, + template (value) SYSTEMINFORMATIONTYPE3 p_SI3) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cas_SysInfo_Common(p_CellId, -, -, -, -, {si3 := p_SI3 }); + + template (value) G_L2_DATAMESSAGE_REQ cas_SysInfo4(GERAN_CellId_Type p_CellId, + template (value) SYSTEMINFORMATIONTYPE4 p_SI4) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cas_SysInfo_Common(p_CellId, -, -, -, -, {si4 := p_SI4 }); + + template (value) G_L2_DATAMESSAGE_REQ cas_SysInfo5(GERAN_CellId_Type p_CellId, + PhysicalChId p_PhyCh, + G_LogicChType p_LogicChType, + template (value) SYSTEMINFORMATIONTYPE5 p_SI5) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cas_SysInfo_Common(p_CellId, p_PhyCh, p_LogicChType, -, -, {si5 := p_SI5 }); + + template (value) G_L2_DATAMESSAGE_REQ cas_SysInfo5bis(GERAN_CellId_Type p_CellId, + PhysicalChId p_PhyCh, + G_LogicChType p_LogicChType, + template (value) SYSTEMINFORMATIONTYPE5bis p_SI5bis) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cas_SysInfo_Common(p_CellId, p_PhyCh, p_LogicChType, -, -, {si5bis := p_SI5bis }); + + template (value) G_L2_DATAMESSAGE_REQ cas_SysInfo6(GERAN_CellId_Type p_CellId, + PhysicalChId p_PhyCh, + G_LogicChType p_LogicChType, + template (value) SYSTEMINFORMATIONTYPE6 p_SI6) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cas_SysInfo_Common(p_CellId, p_PhyCh, p_LogicChType, -, -, {si6 := p_SI6 }); + + template (value) G_L2_DATAMESSAGE_REQ cas_SysInfo13(GERAN_CellId_Type p_CellId, + B1_Type p_BCCHExt, + template (value) SYSTEMINFORMATIONTYPE13 p_SI13) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cas_SysInfo_Common(p_CellId, -, -, -, p_BCCHExt, {si13 := p_SI13 }); + + template (value) G_L2_DATAMESSAGE_REQ cas_SysInfo15(GERAN_CellId_Type p_CellId, + template (value) SYSTEMINFORMATIONTYPE15 p_SI15) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cas_SysInfo_Common(p_CellId, -, -, -, -, {si15 := p_SI15 }); + + //----------------------------------------------------------------------------- + + template (present) G_L2_DATAMESSAGE_IND car_G_L2_ACCESS_IND(GERAN_CellId_Type p_CellId, + template (present) PhysicalChId p_PhysicalChId, + template (present) G_LogicChType p_G_LogicChType, + template (present) SubChannelNumber p_SubCN, + template (present) RFN p_RFN, + template (present) AccessIndType p_Burst) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + access := { + cellId := enum2int(p_CellId), + physicalChId := p_PhysicalChId, // Channel identifier + g_LogicChType := p_G_LogicChType, + subChannel := p_SubCN, // Valid only for logical channel types: FACCH/H, SDCCH/8 and SDCCH/4.This field is not applicable and the SS shall ignore it if this field is coded as 15. + rfn := p_RFN, // The reduced frame number of the frame carrying the burst + burst := p_Burst // random access burst or handover access burst + } + }; + + //----------------------------------------------------------------------------- + + template (present) G_L2_Estab_IND car_G_L2_Estab_IND_Any(GERAN_CellId_Type p_CellId, + template (present) EstablishIndType p_Msg) := + { /* The ASP is used to receive an indication of that L2 multiple frame operation on the specified channel has been established. + see 3GPP TS 44.006 clause 7.1.1 and 7.1.3 */ + cellId := enum2int(p_CellId), + physicalChId := ?, // Channel identifier + g_LogicChType := ?, + subChannel := ?, // Valid only for logical channel types: FACCH/H, SDCCH/8 and SDCCH/4,This field shall be coded as 15 if it is not applicable. + sAPI := ?, // 0, 3 + establish_mode := ?, // Norm + rfn := ?, // The reduced frame number of the first frame carries the L2 SABM frame + msg := p_Msg // this field is present only when the establidg mode is CoRes (collision resolution) + }; + + //----------------------------------------------------------------------------- + + template (value) G_L2_DATAMESSAGE_REQ cas_G_L2_Release_REQ(GERAN_CellId_Type p_CellId, + PhysicalChId p_PhyId, + G_LogicChType p_LogType, + SubChannelNumber p_SubchNo) := + { /* This ASP requests L2 to send Layer 2 DISC command on the indicated SAPI. */ + /* @status APPROVED (LTE_IRAT) */ + rel := { + cellId := enum2int(p_CellId), + sAPI := tsc_SAPI_0, + physicalChId := p_PhyId, // Channel identifier + g_LogicChType := p_LogType, + subChannel := p_SubchNo, // For SDCCH/8, SACCH/C8 value is (0..7); for SDCCH/4, and SACCH/C4 value is (0..3). + // This field is not applicable and the SS shall ignore it if this field is coded as 15. + releaseMode := '1'B // 0-normal release, 1-local release + } + }; + + //----------------------------------------------------------------------------- + + template (present) G_L2_DATAMESSAGE_IND car_G_L2_Release_CNF := + { /* The ASP from L2, indicates that the multiple frame operation release was successful. + This means that the UA message was received in response to L2 DISC command. */ + /* @status APPROVED (LTE_IRAT) */ + relCnf := { + cellId := ?, + sAPI := ?, + physicalChId := ?, // Channel identifier + g_LogicChType := ?, + subChannel := ?, // For SDCCH/8, SACCH/C8 value is (0..7); for SDCCH/4, and SACCH/C4 value is (0..3). + // This field is not applicable and the SS shall ignore it if this field is coded as 15. + releaseMode := ? // 0-normal release, 1-local release + } + }; + + //----------------------------------------------------------------------------- + + template (value) G_L2_DATAMESSAGE_REQ cas_G_L2_DATA_REQ(GERAN_CellId_Type p_CellId, + SAPI p_SAPI, + PhysicalChId p_PhyId, + G_LogicChType p_LogType, + SubChannelNumber p_SubchNo, + template (value) RFN p_RFN, + template (value) L2DataReqType p_Msg) := + { /* The ASP is used to send L3 signalling message on the signalling channels or user data on the traffic channels to the UE/MS in acknowledged mode. + Parameter fn is only used in the test cases which requires specific L3 message to be sent on specified frame number */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + l3 := { + cellId := enum2int(p_CellId), + sAPI := p_SAPI, // 0 + physicalChId := p_PhyId, // Channel identifier + g_LogicChType := p_LogType, + subChannel := p_SubchNo, // Valid only for logical channel types: TCH/H, FACCH/H, SACCH/TH, SDCCH/8, SACCH/C8, SDCCH/4, and SACCH/C4. For TCH/H, FACCH/H and SACCH/TH value is (0..1); for SDCCH/8 and SACCH/C8 value is (0..7); for SDCCH/4 and SACCH/C4 value is (0..3). + rfn := p_RFN, // The reduced frame number of the first frame on which this message is sent.If the field t2 of rfn is coded as '11111'B lower layer shall ignore this field. + msg := p_Msg // Signalling message or user data to be sent + } + }; + + //----------------------------------------------------------------------------- + + template (value) G_L2_DATAMESSAGE_REQ cas_G_L2_UNITDATA_REQ(GERAN_CellId_Type p_CellId, + PhysicalChId p_PhysicalChId, + G_LogicChType p_G_LogicChType, + SubChannelNumber p_SubCN, + template (value) RFN p_RFN, + template (value) L2UnitDataReqType p_Msg) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + unit := { + cellId := enum2int(p_CellId), + sAPI := tsc_SAPI_0, // 0 + physicalChId := p_PhysicalChId, // Channel identifier + g_LogicChType := p_G_LogicChType, + subChannel := p_SubCN, // Valid only for logical channel types: TCH/H, FACCH/H, SACCH/TH, SDCCH/8, SACCH/C8, SDCCH/4, and SACCH/C4. For TCH/H, FACCH/H and SACCH/TH value is (0..1); for SDCCH/8 and SACCH/C8 value is (0..7); for SDCCH/4 and SACCH/C4 value is (0..3). + rfn := p_RFN, // The reduced frame number of the first frame on which this message is sent.If the field t2 of rfn is coded as '11111'B lower layer shall ignore this field. + msg := p_Msg // @sic GP-110839 sic@ + } + }; + + //----------------------------------------------------------------------------- + + template (present) G_L2_DATAMESSAGE_IND car_G_L2_Release_IND_Any := + { /* The ASP is used to receive an indication of the termination of an established multiple frame operation or an indication of an unsuccessful establishment attempt. */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + relInd := { + cellId := ?, + sAPI := ?, // 0 + physicalChId := ?, // Channel identifier + g_LogicChType := ?, + subChannel := ?, // Valid only for logical channel types: TCH/H, FACCH/H, SACCH/TH, SDCCH/8, SACCH/C8, SDCCH/4, and SACCH/C4. For TCH/H, FACCH/H and SACCH/TH value is (0..1); for SDCCH/8 and SACCH/C8 value is (0..7); for SDCCH/4 and SACCH/C4 value is (0..3). + release_Mode := ?, // 0 = normal release; 1 = local end release + outstanding_Indicator := ? // whether or not there are outstanding acknowledgements or unsolved G_L2_DATA_REQ primitives. + } + }; + + //----------------------------------------------------------------------------- + + template (present) G_L2_DATAMESSAGE_IND car_G_L2_DATA_IND(GERAN_CellId_Type p_CellId, + template SAPI p_SAPI, + template PhysicalChId p_PhyId, + template G_LogicChType p_LogType, + template SubChannelNumber p_SubchNo, + template RFN p_RFN, + template L2DataIndType p_Msg) := + { /* The ASP is used to receive a L3 signalling message on the signalling channels or user data on the traffic channels from the UE/MS in acknowledged mode. */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + l3 := { + cellId := enum2int(p_CellId), + sAPI := p_SAPI, // 0 + physicalChId := p_PhyId, // Channel identifier + g_LogicChType := p_LogType, + subChannel := p_SubchNo, // Valid only for logical channel types: TCH/H, FACCH/H, SACCH/TH, SDCCH/8, SACCH/C8, SDCCH/4, and SACCH/C4. For TCH/H, FACCH/H and SACCH/TH value is (0..1); for SDCCH/8 and SACCH/C8 value is (0..7); for SDCCH/4 and SACCH/C4 value is (0..3). + rfn := p_RFN, // The reduced frame number of the first frame on which this message is received + msg := p_Msg // Signalling message or user data received + } + }; + + //----------------------------------------------------------------------------- + + template (value) G_CPHY_CONFIG_REQ cas_G_CL2_HoldPhyInfo_REQ (GERAN_CellId_Type p_CellId, integer p_N := 4):= + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + holdPhyInfo := { + cellId := enum2int(p_CellId), + physicalChId := tsc_TchCh, + g_LogicChType := tsc_FACCH_F, + subChannel := 0, // For SACCH/TH value is (0..1), for SACCH/C8 value is (0..7) and for SACCH/C4 value is (0..3) + n := p_N // The number of handover access bursts to be received + } +}; + + template (value) G_CPHY_CONFIG_REQ cas_G_CL2_MeasRptControl_REQ(GERAN_CellId_Type p_CellId, + PhysicalChId p_PhyCh, + G_LogicChType p_LogCh, + SubChannelNumber p_SubCh, + boolean p_OnOff) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + measReportCtrl := { + cellId := enum2int(p_CellId), + physicalChId := p_PhyCh, // Channel identifier + g_LogicChType := p_LogCh, // Valid only for lofical channel types: SACCH/TF, SACCH/TH, SACCH/C8 and SACCH/C4 + subChannel := p_SubCh, // For SACCH/TH value is (0..1), for SACCH/C8 value is (0..7) and for SACCH/C4 value is (0..3) + sendMeasRpts := p_OnOff // Whether or not to report received Measurement Reports to the TTCN + } + }; + + template (present) G_L2_DATAMESSAGE_IND car_MeasReport(GERAN_CellId_Type p_CellId, + template SAPI p_SAPI, + template PhysicalChId p_PhyId, + template G_LogicChType p_LogType, + template SubChannelNumber p_SubchNo, + template RFN p_RFN, + template MEASUREMENTREPORT p_Msg) := + { /* The ASP is used to receive a measurement report */ + /* @status */ + meas := { + cellId := enum2int(p_CellId), + sAPI := p_SAPI, // 0 + physicalChId := p_PhyId, // Channel identifier + g_LogicChType := p_LogType, + subChannel := p_SubchNo, // Valid only for logical channel types: TCH/H, FACCH/H, SACCH/TH, SDCCH/8, SACCH/C8, SDCCH/4, and SACCH/C4. For TCH/H, FACCH/H and SACCH/TH value is (0..1); for SDCCH/8 and SACCH/C8 value is (0..7); for SDCCH/4 and SACCH/C4 value is (0..3). + rfn := p_RFN, // The reduced frame number of the first frame on which this message is received + msg := p_Msg // Signalling message or user data received + } + }; + + + //----------------------------------------------------------------------------- + + template (present) G_RLC_DATAMESSAGE_IND car_G_RLC_ControlMsg_IND(GERAN_CellId_Type p_CellId, + template PhysicalChId p_PhyChId, + template GRLCCntrlMsgIndType p_Msg) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + ctrl := { + cellId := enum2int(p_CellId), + physicalChId := p_PhyChId, // Channel identifier + g_LogicChType := tsc_PACCH_F, // PCCCH or PACCH or PTCCH + tBF_Direction := ?, // 0 -- downlink; 1 -- uplink + tFI := ?, // temporary flow identity + rfn := ?, // the reduced frame number of the frame carrying this message + msg := p_Msg // uplink RLC/MAC control message + } + }; + + //----------------------------------------------------------------------------- + + template (value) G_RLC_CONFIG_REQ cas_G_CRLC_CreateRLC_MAC_REQ(GERAN_CellId_Type p_CellId) := + { /* The ASP is used to create a RLC/MAC entity in GERAN RLC/MAC emulation module. + One RLC/MAC entity per cell can exist, cellId will be used for couping LLC layer module to the RLC/MAC emulation module. + The packet channel description given in the ChannelSpecificInfo of G_CL1_CreateBasicPhyCh_REQ shall be used to configure this layer. + This ASP shall be called after the G_CL1_CreateBasicPhyCh_REQ ASP. */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + createRLC := { + cellId := enum2int(p_CellId) // The identifier of the cell + } + }; + + //----------------------------------------------------------------------------- + + template (value) G_RLC_DATAMESSAGE_REQ cas_G_RLC_ControlMsg_REQ_PACCH(GERAN_CellId_Type p_CellId, + PhysicalChId p_PhyChId, + integer p_Dir, + B5_Type p_TFI, + template (value) GRLCCntrlMsgReqType p_Msg) := + { /* The constraint is used to transmitt the down link RLC/MAC control message to the UE/MS on PCCCH channel. */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + ctrl := { + cellId := enum2int(p_CellId), + physicalChId := p_PhyChId, //PACCH + g_LogicChType := tsc_PACCH_F, + tBF_Direction := p_Dir, //0 -- downlink; 1 -- uplink + tFI := p_TFI, // relative reserved block period + rRBP := '00'B, //supplementary/polling bit + s_P_Bit := '0'B, //The reduced frame number of the first frame on which this message is sent.If the field t2 of rfn is coded as '11111'B lower layer shall ignore this field. + rfn := cs_G_RFN_Omit,//for message other than PACKET PAGING REQUEST this field shall be omitted + pagingGroup := omit,// 0 -- normal paging;1-- exteded paging;3 -- paging reorganization.this field is valid only for PACKET PAGING REQUEST control message, for message other than PACKET PAGING REQUEST this field shall be omitted + pagingMode := tsc_NormalPaging, //Signalling message or user data to be sent + msg := p_Msg + } + }; + + //----------------------------------------------------------------------------- + + template (present) G_RLC_CONFIG_CNF car_G_RLC_Config_CNF := {}; /* @status APPROVED (LTE_A, LTE_IRAT) */ + template (present) G_LLC_CONFIG_CNF car_G_CLLC_Config_CNF := {}; /* @status APPROVED (LTE_A, LTE_IRAT) */ + + //----------------------------------------------------------------------------- + + template (value) G_RLC_CONFIG_REQ cas_G_CRLC_DeleteRLC_MAC_REQ(GERAN_CellId_Type p_CellId) := + { /* The ASP is used to delete a RLC/MAC entity in GERAN RLC/MAC emulation module. + This ASP is used to release any resource used for the RLC/MAC emulation entity in the SS. */ + deleteRLC := { + cellId := enum2int(p_CellId) // The identifier of the cell + } + }; + + //----------------------------------------------------------------------------- + + template (present) G_L2_DATA_IND car_G_L2_DATA_IND_Any(GERAN_CellId_Type p_CellId, + L2DataIndType p_Msg) := + { /* The ASP is used to receive a L3 signalling message on the signalling channels or user data on the traffic channels from the UE/MS in acknowledged mode. */ + cellId := enum2int(p_CellId), + sAPI := ?, // 0 + physicalChId := ?, // Channel identifier + g_LogicChType := ?, + subChannel := ?, // Valid only for logical channel types: TCH/H, FACCH/H, SACCH/TH, SDCCH/8, SACCH/C8, SDCCH/4, and SACCH/C4. For TCH/H, FACCH/H and SACCH/TH value is (0..1); for SDCCH/8 and SACCH/C8 value is (0..7); for SDCCH/4 and SACCH/C4 value is (0..3). + rfn := ?, // The reduced frame number of the first frame on which this message is received + msg := p_Msg // Signalling message or user data received + }; + + //----------------------------------------------------------------------------- + + template (present) G_L2_DATAMESSAGE_IND car_G_L2_Estab_IND(GERAN_CellId_Type p_CellId, + template PhysicalChId p_PhysicalChId, + template G_LogicChType p_G_LogicChType, + template SubChannelNumber p_SubCN, + template EstablishIndType p_Msg) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + sabm := { + cellId := enum2int(p_CellId), + physicalChId := p_PhysicalChId, // Channel identifier + g_LogicChType := p_G_LogicChType, + subChannel := p_SubCN, // Valid only for logical channel types: FACCH/H, SDCCH/8 and SDCCH/4,This field shall be coded as 15 if it is not applicable. + sAPI := 0, // 0 + establish_mode := ?, // Norm + rfn := ?, + msg := p_Msg // this field is present only when the establidg mode is CoRes (collision resolution) + } + }; + + //----------------------------------------------------------------------------- + + template (present) G_LLC_DATAMESSAGE_IND car_G_LLC_UnitData_IND(template LLCUnitDataIndType p_Msg, + template (present) integer p_SAPI := ?) := + { /* The ASP is used to receive an L3 PDU from the UE/MS in LLC unconfirmed transmission. + 3GPP TS 44.064 clause 8.4.2 */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + unit := { + lLMEId := ?, // @sic R5s120572 sic@ + tLLI := ?, // temporary logical link identifier + sAPI := p_SAPI, + msg := p_Msg // L3 PDU + } + }; + + //----------------------------------------------------------------------------- + + template (value) G_LLC_DATAMESSAGE_REQ cas_G_LLC_UnitData_Req(TLLI p_TLLI, + SAPI p_Sapi, + B1_Type p_ProtectMode, + B1_Type p_CipherMode, + template (value) LLCUnitDataReqType p_Msg, + GERAN_CellId_Type p_LLMEId := geran_Cell24) := + { /* The ASP is used to transmit an L3 PDU to the UE/MS in LLC unconfirmed transmission. + 3GPP TS 44.064 clause 8.4.1 */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + unit := { + lLMEId := enum2int (p_LLMEId), // @sic R5s120572, R5s120695 sic@ + tLLI := p_TLLI, // temporary logical link identifier + sAPI := p_Sapi, + protectMode := p_ProtectMode, // 0 -- unprotected; 1 -- protected + cipherMode := p_CipherMode, // 0 -- no encryption; 1 -- encrypted + msg := p_Msg // L3 PDU + } + }; + + //----------------------------------------------------------------------------- + + template (present) G_LLC_DATAMESSAGE_IND car_G_LLC_NULL_Ind := + { /* The ASP is used to receive the NULL message sent by the UE/MS. */ + /* @status */ + nullMsg := { + lLMEId := ?, + tLLI := ?, // temporary logical link identifier + sAPI := ? + } + }; + + //----------------------------------------------------------------------------- + + template (value) G_LLC_CONFIG_REQ cas_G_CLLC_XID_Req(TLLI p_TLLI, + SAPI p_SAPI, + template (omit) XID_Info p_XID_Info, + integer p_LLMEId := 1) := + { /* The ASP is used to inform the UE of the XID information responded to the UE by the TTCN. */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + xid := { + lLMEId := p_LLMEId, + tLLI := p_TLLI, // temporary logical link identifier + sAPI := p_SAPI, + xID_Info := p_XID_Info // the negotiated XID parameters agreed by the SS + } + }; + + //----------------------------------------------------------------------------- + template (present) G_LLC_DATAMESSAGE_IND car_G_LLC_XID_IndAny := + { /* The ASP is used to receive the XID requested by the UE/MS. */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + xid := { + lLMEId := ?, + tLLI := ?, // temporary logical link identifier + sAPI := ?, + xID_Info := * // the XID parameters requested by the UE/MS @sic R5s130195 Baseline Moving sic@ + } + }; + + //----------------------------------------------------------------------------- + + template (value) G_LLC_DATAMESSAGE_REQ cas_G_LLC_XID_Req(TLLI p_TLLI, + SAPI p_SAPI, + template (omit) XID_Info p_XID_Info, + integer p_LLMEId := 1) := + { /* The ASP is used to send to the UE/MS the negotiated XID parameters agreed by the SS. */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + xid := { + lLMEId := p_LLMEId, // @sic R5s120572 sic@ + tLLI := p_TLLI, // temporary logical link identifier + sAPI := p_SAPI, + xID_Info := p_XID_Info // the negotiated XID parameters agreed by the SS + } + }; + + //----------------------------------------------------------------------------- + + template (value) G_LLC_DATAMESSAGE_REQ cas_G_LLC_XID_Reset(TLLI p_TLLI, + SAPI p_SAPI, + integer p_LLMEId := 1) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + xid := { + lLMEId := p_LLMEId, // @sic R5s120572 sic@ + tLLI := p_TLLI, // temporary logical link identifier + sAPI := p_SAPI, + xID_Info := '30841000000000'O // RESET & IOV-UI(44.064 6.4.1.6) @sic R5s130050 sic@ + } + }; + + //----------------------------------------------------------------------------- + + template (value) G_RLC_CONFIG_REQ cas_ActivateTBF_UplinkDyn(GERAN_CellId_Type p_CellId, + integer p_USFRate) := + { /* the ASP is used to configure a TBF used for uplink data transfer + For GPRS channel coding can be: CS-1, CS-2, CS-3 and CS-4;For EGPRS channel coding can be: + MCS-1, MCS-2, MCS-3, MCS-4, MCS-5, MCS-6, MCS-7, MCS-8, MCS-9, MCS-5-7 and MCS-6-9. */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + ulTBFConfig := { + cellId := enum2int(p_CellId), + tFI := tsc_UplinkTFI, + tBF_Mode := '0'B, // 0 - GPRS; 1 - EGPRS + channelCoding := 1, // CS-1 + tLLI_BlockChannelCoding := '1'B, // 0 - CS-1 or MCS-1(EGPRS); 1 - same as channelCoding + rLC_Mode := '0'B, // 0 - acknowledged mode; 1 - unacknowledged mode + startingTime := cs_G_RFN_Omit, // This field is not applicable and the SS shall ignore it if the field t2 of rfn is coded as '11111'B. + uSF_Rate := p_USFRate, // This parameter controls the speed of the UL TBF transferring data blocks by controlling the USF rate: + // 1---> implementation dependent. TTCN does not specify the USF generating rate; + // 2---> 10 USF's per second; + // 3---> 5 USF's per second; + // 4---> 1 USF per second; + // 5---> 1 USF per 2 seconds; + // 6---> 1 USF per 3 seconds; + // 7---> 1 USF per 4 seconds + dynamicAllocation := cs_DynamicAllocation + } + }; + + //----------------------------------------------------------------------------- + + template (value) G_LLC_CONFIG_REQ cas_G_CLLC_Assign_Req(GERAN_CellId_Type p_CellId, + TLLI p_OldTLLI, + TLLI p_NewTLLI, + GPRS_CipherAlg p_CipherAlg, + B64_Type p_CipherKey) := + { /* The constraint is used to assign the TLLI, the cipher key (Kc) and the cipher algorithm of GERAN LLC emulator module. */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + assign := { + cellId := enum2int(p_CellId), + oldTLLI := p_OldTLLI, // OCTETSTRING[4] + newTLLI := p_NewTLLI, + cipherKey := p_CipherKey, + cipherKey128 := px_CipherKey128, // @sic R5-144746 sic@ + cipherAlgorithm := p_CipherAlg // BITSTRING[3], 3GPP TS 24.008 section 10.5.5.3 + } + }; + + //----------------------------------------------------------------------------- + + template (value) G_LLC_CONFIG_REQ cas_G_CLLC_CreateLLE_REQ(GERAN_CellId_Type p_CellId, + integer p_LLMEId := 1) := + { /* The ASP is used to create an LLE (LLC Entity) in GERAN LLC emulation module. + The RlcMacEntityId needs to be created prior to this by G_CRLC_CreateRLC_MAC_REQ ASP. */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + createLLC := { + lLMEId := p_LLMEId, // Logical Layer Management Entity Id @sic R5s120572 sic@ + rLC_MAC_MappingInfo := enum2int(p_CellId) // This parameter indicates the RLC/MAC emulation module in the cell, not the cell itself. + } + }; + + //----------------------------------------------------------------------------- + + template (value) G_LLC_CONFIG_REQ cas_G_CLLC_DeleteLLE_REQ (integer p_LLMEId := 1) := + { /* The ASP is used to delete an LLE (LLC Entity) in GERAN LLC emulation module. + The RlcMacEntityId needs to be created prior to this by G_CRLC_CreateRLC_MAC_REQ ASP. */ + deleteLLC := { + lLMEId := p_LLMEId // @sic R5s120572 sic@ + } + }; + + //----------------------------------------------------------------------------- + + template (value) G_RLC_CONFIG_REQ cas_ActivateTBF_Downlink(GERAN_CellId_Type p_CellId, + PhysicalChId p_PhyChId, + integer p_USFRate) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + dlTBFConfig := { + cellId := enum2int(p_CellId), + tFI := tsc_DownlinkTFI, + tBF_Mode := '0'B, // 0 - GPRS; 1 - EGPRS + channelCoding := 1, + rLC_Mode := '0'B, // 0 - acknowledged mode; 1 - unacknowledged mode + timeSlotAllocation := cs_TimeSlotAllocation_TN4 (p_PhyChId), // Downlink TBF time slot allocation + startingTime := cs_G_RFN_Omit, // This field is not applicable and the SS shall ignore it if the field t2 of rfn is coded as '11111'B. + dataBlockRate := p_USFRate // This parameter controls the speed of the DL TBF transferring data blocks by controlling the USF rate: + // 1---> implementation dependent. TTCN does not specify the USF generating rate; + // 2---> 10 data blocks per second; + // 3---> 5 data blocks per second; + // 4---> 1 data block per second; + // 5---> 1 data block 2 seconds; + // 6---> 1 data block 3 seconds; + // 7---> 1 data block 4 seconds + } + }; + + //----------------------------------------------------------------------------- + + template (value) G_CPHY_CONFIG_REQ cas_G_CL1_ComingFN_REQ(GERAN_CellId_Type p_CellId, + PhysicalChId p_PhysicalChId, + G_LogicChType p_G_LogicChType) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + comingFN := { + cellId := enum2int(p_CellId), + physicalChId := p_PhysicalChId, // Channel identifier + g_LogicChType := p_G_LogicChType, + subChannel := omit // Valid only for logical channel types: TCH/H, FACCH/H, SACCH/TH, SDCCH/8, SACCH/C8, SDCCH/4, and SACCH/C4. For TCH/H, FACCH/H and SACCH/TH value is (0..1); for SDCCH/8 and SACCH/C8 value is (0..7); for SDCCH/4 and SACCH/C4 value is (0..3). + // this field is not applicable and the SS shall ignore it if this field is coded as 15 + } + }; + + //----------------------------------------------------------------------------- + + template (present) G_L2_DATA_IND car_G_L2_DATA_IND_Gen(GERAN_CellId_Type p_CellId, + template SAPI p_SAPI, + template PhysicalChId p_PhyId, + template G_LogicChType p_LogType, + template SubChannelNumber p_SubchNo, + template RFN p_RFN, + template L2DataIndType p_Msg) := + { + cellId := enum2int(p_CellId), + sAPI := p_SAPI, // 0 + physicalChId := p_PhyId, // Channel identifier + g_LogicChType := p_LogType, + subChannel := p_SubchNo, // Valid only for logical channel types: TCH/H, FACCH/H, SACCH/TH, SDCCH/8, SACCH/C8, SDCCH/4, and SACCH/C4. For TCH/H, FACCH/H and SACCH/TH value is (0..1); for SDCCH/8 and SACCH/C8 value is (0..7); for SDCCH/4 and SACCH/C4 value is (0..3). + rfn := p_RFN, // The reduced frame number of the first frame on which this message is received + msg := p_Msg // Signalling message or user data received + }; + + //----------------------------------------------------------------------------- + + template (present) G_L2_DATA_IND car_HOCmplInd(GERAN_CellId_Type p_CellId, + template SAPI p_SAPI, + template PhysicalChId p_PhysicalChId, + template G_LogicChType p_G_LogicChType, + template SubChannelNumber p_SubCN, + template RFN p_RFN, + template L2DataIndType p_Msg) := + { + cellId := enum2int(p_CellId), + sAPI := p_SAPI, // 0 + physicalChId := p_PhysicalChId, // Channel identifier + g_LogicChType := p_G_LogicChType, + subChannel := p_SubCN, // Valid only for logical channel types: TCH/H, FACCH/H, SACCH/TH, SDCCH/8, SACCH/C8, SDCCH/4, and SACCH/C4. For TCH/H, FACCH/H and SACCH/TH value is (0..1); for SDCCH/8 and SACCH/C8 value is (0..7); for SDCCH/4 and SACCH/C4 value is (0..3). + rfn := p_RFN, // The reduced frame number of the first frame on which this message is received + msg := p_Msg // Signalling message or user data received + }; + + //----------------------------------------------------------------------------- + + template (present) G_L2_GTTP_IND car_GPRS_Information(GERAN_CellId_Type p_CellId, + template SAPI p_SAPI, + template PhysicalChId p_PhysicalChId, + template TLLI p_TLLI, + template LLCUnitDataIndType p_PDU) := + { /* The ASP is used for DTM to receive an LLC signalling message on DCCH in acknowledged mode */ + cellId := enum2int(p_CellId), + sAPI := p_SAPI, + physicalChId := p_PhysicalChId, // Channel identifier + g_LogicChType := ?, + subChannel := ?, // Valid only for logical channel types: TCH/H, FACCH/H, SACCH/TH, SDCCH/8, SACCH/C8, SDCCH/4, and SACCH/C4. For TCH/H, FACCH/H and SACCH/TH value is (0..1); for SDCCH/8 and SACCH/C8 value is (0..7); for SDCCH/4 and SACCH/C4 value is (0..3). This field is not applicable and the SS shall ignore it if this field is coded as 15 + rfn := ?, // The reduced frame number of the first frame carrying the message + tLLI := p_TLLI, + gmmSmPDU := p_PDU // Deciphered GMM or SM signalling message received + }; + + //----------------------------------------------------------------------------- + + template (value) L2UnitDataReqType cs_ImmAss (template (value) IMMEDIATEASSIGNMENT p_PDU) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + immedAss := p_PDU + }; + + template (value) L2UnitDataReqType cs_ImmAssRej (template (value) IMMEDIATEASSIGNMENTREJECT p_PDU) := + { /* @status APPROVED (LTE_IRAT) */ + immedAssRej := p_PDU + }; + + template (value) L2UnitDataReqType cs_MeasInfo (template (value) MEASUREMENTINFORMATION p_PDU) := + { /* @status */ + measInfo := p_PDU + }; + + template (value) GPRSMode cs_GPRSMode_UL := + { + ul := + { + ccMask := '0'B, + chCodingCmd := omit, + ulMode := { + globalMask := '0'B, + timeslotMask := omit, + timeslotAllocation := omit, + alpha := omit, + tN0mask := omit, + gAMMA_TN0 := omit, + tN1mask := omit, + gAMMA_TN1 := omit, + tN2mask := omit, + gAMMA_TN2 := omit, + tN3mask := omit, + gAMMA_TN3 := omit, + tN4mask := omit, + gAMMA_TN4 := omit, + tN5mask := omit, + gAMMA_TN5 := omit, + tN6mask := omit, + gAMMA_TN6 := omit, + tN7mask := omit, + gAMMA_TN7 := omit, + tbfAssignment := { + { + prefix := '1'B, + ul := { + pfiMask := '0'B, + pFI := omit, + rlcMode := '0'B, + ulTBFAssign := tsc_UplinkTFI, + ccMask := '0'B, + chCodingCmd := omit, + eccMask := '0'B, + eGPRSChCodingCmd := omit, + windowMask := '0'B, + eGPRSWindowSize := omit, + usfGranularity := '0'B, + tbfAllocMask := '0'B, + tbfTimeslotAlloc := omit, + usfAllocMask := '0'B, + singleUSFAlloc := tsc_DefUSF, + usfAlloc := omit + } + }, + { + prefix := '0'B, + ul := omit + } + } + } + } + }; + + template (value) PSHO_RResource cs_PSHO_RResource (B10_Type p_Arfcn, + B6_Type p_Bsic, + template (value) FreqParam p_FreqParam, + template (value) GPRSMode p_GPRSMode) := + { + hoMask := '0'B, + hoReference := omit, + arfcn := p_Arfcn, + si := '00'B, + nci := '0'B, + bsic := p_Bsic, + ccnMask := '0'B, + ccnActive := omit, + ccn3GMask := '0'B, + ccn3GActive := omit, + ccnSupportMask := '0'B, + ccnSupportDescr := omit, + freqParams := p_FreqParam, + networkCtrlOrder := '10'B, + taMask := '0'B, + pktTA := omit, + xtdTAMask := omit, + pktXtdTA := omit, + xtdDynamicAlloc := '0'B, + rlcReset := '1'B, + poMask := '0'B, + po := omit, + prMode := omit, + uctMask := '0'B, + ulCtrlTimeslot := omit, + gprsMask := '0'B, + gprsMode := p_GPRSMode, + egprsMode := omit + }; + + template (value) PSHANDOVERCOMMAND cs_G_PSHandoverCmdToGERAN (template (value) GlobalTFI p_TFI, + template (value) PSHO_RResource p_PSHO_RResource, + template (omit) B1_Type p_NMask := '0'B, + template (omit) B7_Type p_NASContainerLen := omit, + template (omit) octetstring p_NASContainer := omit) := + { + msgType := '010101'B, // Message type + pAGE_MODE := '00'B, // Normal paging + globalTFImask := '0'B, + gLOBAL_TFI := p_TFI, // not present if globalTFImask=1 + containerId := '00'B, // not present if globalTFImask=1 + payloadMask := '00'B, // not present if globalTFImask=1 + aGbModeMask := '00'B, // only present if globalTFImask=0 and payloadMask=00 + psHORadioResource := p_PSHO_RResource, // only present if globalTFImask=0 and payloadMask=00 and aGbModeMask=00 + psHORadioResource2 := omit, // only present if globalTFImask=0 and payloadMask=00 and aGbModeMask=01 + nasMask := p_NMask, // only present if globalTFImask=0 and payloadMask=00 + nasContainerLength := p_NASContainerLen, // only present if globalTFImask=0 and payloadMask=00 and nasMask=1 + nasContainerData := p_NASContainer, // only present if globalTFImask=0 and payloadMask=00 and nasMask=1 + rrcContainerLength_UTRAN := omit, // only present if globalTFImask=0 and payloadMask=01 + rrcContainerData_UTRAN := omit, // only present if globalTFImask=0 and payloadMask=01 + rrcContainerLength_EUTRAN := omit, // only present if globalTFImask=0 and payloadMask=10 + rrcContainerData_EUTRAN := omit, // only present if globalTFImask=0 and payloadMask=10 + maskR8 := '0'B, // not present if globalTFImask=1 + ccnMask := omit, // not present if globalTFImask=1 or if maskR8=0 + eutranCCNActive := omit, // not present if globalTFImask=1 or if maskR8=0 or if ccnMask=0 + measMask := omit, // not present if globalTFImask=1 or if maskR8=0 + measCtrlParams := omit, // not present if globalTFImask=1 or if maskR8=0 or if measMask=0 + maskR9 := omit, // not present if globalTFImask=1 or if maskR8=0 + enhancedFlexTimeslotAss := omit, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 + emstMask := omit, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 + emstNWCap := omit, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 or if emstMask=1 + dlEntity2Mask := omit, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 or emstMask=0 + dlRLCEntity2 := omit, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 or emstMask=0 or if dlEntity2Mask=0 + dlEntity3Mask := omit, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 or emstMask=0 or if dlEntity2Mask=0 + dlRLCEntity3 := omit, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 or emstMask=0 or if dlEntity2Mask=0 or if dlEntity3Mask=0 + ulEntity2Mask := omit, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 or emstMask=0 + ulRLCEntity2 := omit, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 or emstMask=0 or if ulEntity2Mask=0 + ulEntity3Mask := omit, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 or emstMask=0 or if ulEntity2Mask=0 + ulRLCEntity3 := omit, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 or emstMask=0 or if ulEntity2Mask=0 or if ulEntity3Mask=0 + r10Mask := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 @sic R5s120178 sic@ + dlEMSRMask := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or if r10Mask = 0 @sic R5s120178 sic@ + emsrAddPFC1_dl := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 or if dlEMSRMask = 0 @sic R5s120178 sic@ + emsrAddPFC2_dl := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 or if dlEMSRMask = 0 @sic R5s120178 sic@ + emsrAddPFC3_dl := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 or if dlEMSRMask = 0 @sic R5s120178 sic@ + ulEMSRMask := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or if r10Mask = 0 @sic R5s120178 sic@ + emsrAddPFC1_ul := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 or if ulEMSRMask = 0 @sic R5s120178 sic@ + emsrAddPFC2_ul := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 or if ulEMSRMask = 0 @sic R5s120178 sic@ + emsrAddPFC3_ul := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 or if ulEMSRMask = 0 @sic R5s120178 sic@ + r11Mask := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 @sic R5s130195 Baseline Moving sic@ + plmnMask := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or if r10Mask = 0 or r11Mask = 0 @sic R5s130195 Baseline Moving sic@ + plmnIndexSelected := omit // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 or r11Mask = 0 or if plmnMask = 0 @sic R5s130195 Baseline Moving sic@ + }; + + template (value) GRLCCntrlMsgReqType cs_G_PSHandoverCmdToEUTRA(template (value) GlobalTFI p_GlobalTFI, + B8_Type p_ContainerLength, + octetstring p_RRCContainerEUTRAN) := + { + psHandover := { // current prose does not include any Rel8 options + msgType := '010101'B, // Message type + pAGE_MODE := '00'B, // Normal paging + globalTFImask := '0'B, + gLOBAL_TFI := p_GlobalTFI, // not present if globalTFImask=1 + containerId := '00'B, // not present if globalTFImask=1 + payloadMask := '10'B, // not present if globalTFImask=1 + aGbModeMask := omit, // only present if globalTFImask=0 and payloadMask=00 + psHORadioResource := omit, // only present if globalTFImask=0 and payloadMask=00 and aGbModeMask=00 + psHORadioResource2 := omit, // only present if globalTFImask=0 and payloadMask=00 and aGbModeMask=01 + nasMask := omit, // only present if globalTFImask=0 and payloadMask=00 + nasContainerLength := omit, // only present if globalTFImask=0 and payloadMask=00 and nasMask=1 + nasContainerData := omit, // only present if globalTFImask=0 and payloadMask=00 and nasMask=1 + rrcContainerLength_UTRAN := omit, // only present if globalTFImask=0 and payloadMask=01 + rrcContainerData_UTRAN := omit, // only present if globalTFImask=0 and payloadMask=01 + rrcContainerLength_EUTRAN := p_ContainerLength, // only present if globalTFImask=0 and payloadMask=10 + rrcContainerData_EUTRAN := p_RRCContainerEUTRAN, // only present if globalTFImask=0 and payloadMask=10 + maskR8 := '0'B, // not present if globalTFImask=1 + ccnMask := omit, // not present if globalTFImask=1 or if maskR8=0 + eutranCCNActive := omit, // not present if globalTFImask=1 or if maskR8=0 or if ccnMask=0 + measMask := omit, // not present if globalTFImask=1 or if maskR8=0 + measCtrlParams := omit, // not present if globalTFImask=1 or if maskR8=0 or if measMask=0 + maskR9 := omit, // not present if globalTFImask=1 or if maskR8=0 + enhancedFlexTimeslotAss := omit, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 + emstMask := omit, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 + emstNWCap := omit, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 or if emstMask=1 + dlEntity2Mask := omit, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 or emstMask=0 + dlRLCEntity2 := omit, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 or emstMask=0 or if dlEntity2Mask=0 + dlEntity3Mask := omit, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 or emstMask=0 or if dlEntity2Mask=0 + dlRLCEntity3 := omit, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 or emstMask=0 or if dlEntity2Mask=0 or if dlEntity3Mask=0 + ulEntity2Mask := omit, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 or emstMask=0 + ulRLCEntity2 := omit, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 or emstMask=0 or if ulEntity2Mask=0 + ulEntity3Mask := omit, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 or emstMask=0 or if ulEntity2Mask=0 + ulRLCEntity3 := omit, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 or emstMask=0 or if ulEntity2Mask=0 or if ulEntity3Mask=0 + r10Mask := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 @sic R5s120178 sic@ + dlEMSRMask := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or if r10Mask = 0 @sic R5s120178 sic@ + emsrAddPFC1_dl := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 or if dlEMSRMask = 0 @sic R5s120178 sic@ + emsrAddPFC2_dl := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 or if dlEMSRMask = 0 @sic R5s120178 sic@ + emsrAddPFC3_dl := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 or if dlEMSRMask = 0 @sic R5s120178 sic@ + ulEMSRMask := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or if r10Mask = 0 @sic R5s120178 sic@ + emsrAddPFC1_ul := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 or if ulEMSRMask = 0 @sic R5s120178 sic@ + emsrAddPFC2_ul := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 or if ulEMSRMask = 0 @sic R5s120178 sic@ + emsrAddPFC3_ul := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 or if ulEMSRMask = 0 @sic R5s120178 sic@ + r11Mask := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 @sic R5s130195 Baseline Moving sic@ + plmnMask := omit, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or if r10Mask = 0 or r11Mask = 0 @sic R5s130195 Baseline Moving sic@ + plmnIndexSelected := omit // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 or r11Mask = 0 or if plmnMask = 0 @sic R5s130195 Baseline Moving sic@ + } + }; + + template (value) GRLCCntrlMsgReqType cs_G_PSPhysicalInfo (template (value) GlobalTFI p_TFI, + B8_Type p_TA) := + { + psPhysInfo := + { + msgType := '010110'B, // Message type + pAGE_MODE := '00'B, // Normal paging + gLOBAL_TFI := p_TFI, + ta := p_TA + } + }; + + template (present) GRLCCntrlMsgIndType cr_G_PSHandoverAccess := + { + psHOAccess11 := + { + hoRef := ?, + spare := '000'B + } + }; + + template (present) GRLCCntrlMsgIndType cr_G_PktCSReq(template (present) GlobalTFI p_TFI, + B8_Type p_EstCause):= + { + pktCSRequest := + { + msgType := '001110'B, + gLOBAL_TFI := p_TFI, + establishmentCause := p_EstCause + } + }; + + template (value) GRLCCntrlMsgReqType cs_G_PktCSCommand (template (value) GlobalTFI p_TFI, + B8_Type p_ContainerLength, + octetstring p_ContainerData) := + { + pktCSCommand := + { + msgType := '100111'B, // Message type + pAGE_MODE := '00'B, // Normal paging + gLOBAL_TFI := p_TFI, + spare := '00'B, + containerLength := p_ContainerLength, + containerData := p_ContainerData + } + }; + + template (value) DTMASSIGNMENTCOMMAND cs_DTMAssignment (template (value) ChannelDescr p_CSChDescr) := + { + skipIndicator := '0000'B, + rRProtocolDiscriminator := '0110'B, + msgType := '01001100'B, + powerCmd := cs_PowerCommand, // power command M [1] without IEI + csChDescr := p_CSChDescr, // description of the CS channel M [3] + gprsBroadCastInfo := cs_GPRSBroadCastInfo, // GPRS Broadcast Information M LV [7-n] + cellChDescr := omit, // cell channel description O [17] IEI=10 + chMode := cs_ChMode ('11'O, '00000001'B), // channel mode O TV [2] IEI=11 + freqList := omit, // frequency list C TLV [4..132] IEI=12 + mobileAlloc := omit, // mobile allocation C TLV [3..10] IEI=13 + ulPktChAssign := omit, // uplink Packet Channel Assignment O TLV [3..n] IEI=15 + dlPktChAssign := omit, // downlink Packet Channel Assignment O TLV [3..n] IEI=16 + mltiRateConfig := omit, // multiRate configuration O TLV [4..8] IEI=17 + cphms := omit, // cipher mode setting O TV [1] IEI=9 + mobileAllocC2 := omit, // mobile allocation C2 C TLV [3..10] IEI=18 + freqListC2 := omit, // frequency list C2 C TLV [4..132] IEI=19 + dlPktChAssign2 := omit, // downlink Packet Channel Assignment O TLV [3..n] IEI=20 + ch1DescrC2 := omit // description of the 1st channel, before time O TV [3] IEI=21 + }; + + template (value) GPRSBroadCastInfo cs_GPRSBroadCastInfo := + { + iel := '06'O, + cellOptions := cs_GPRS_CellOptionsDTM, + powerCntrlParams := cs_GPRS_PowerControlParam, + spareBit := omit // exactly 6 octets + }; + + template (present) G_SNDCP_CONFIG_CNF car_G_SNDCP_CONFIG_CNF_Any := ?; /* @sic R5s120861 sic@ + @status APPROVED (LTE_A, LTE_IRAT) */ + + template (value) G_SNDCP_CONFIG_REQ cas_G_SNDCP_Activate_REQ(SNDCPId p_SNDCPId, + LLMEId p_LLMEId, + integer p_NSAPI, + SAPI p_SAPI) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + act := { + sndcpId := p_SNDCPId, // The SNDCP entity identifier of the cell + lLMEId := p_LLMEId, // Logical Layer Management Entity Id + nSAPI := p_NSAPI, // The Network Service Access Point Identifier + sAPI := p_SAPI, // The LLC SAPI + pci_Compression := 0, // 0- RFC 1144 [46] compress, RFC 2507 [30] compression, - no compression + dataCompression := 0, // 0- V.42bis [47] compression, 1- V.44 [48] compression, - no compression + nPDUNumberSync := 0 // 0- Asynchronous, 1- Synchronous + } + }; + + template (value) G_SNDCP_CONFIG_REQ cas_G_SNDCP_Release_REQ(SNDCPId p_SNDCPId, + integer p_NSAPI) := + { + rel := { + sndcpId := p_SNDCPId, // The SNDCP entity identifier of the cell + nSAPI := p_NSAPI // The Network Service Access Point Identifier + } + }; + + template (present) G_SN_DATAMESSAGE_IND car_G_SN_UnitData_IND(template (present) SNDCPId p_SNDCPId, + template (present) integer p_NSAPI, + template (present) N_PDU p_Msg) := + { /* @status APPROVED (LTE_IRAT) */ + unit := { + sndcpId := p_SNDCPId, + nSAPI := p_NSAPI, // 5 -15 + n_PDU := p_Msg + } + }; + + template (value) G_SN_DATAMESSAGE_REQ cas_G_SN_UnitData_REQ (SNDCPId p_SNDCPId, + integer p_NSAPI, + template (value) N_PDU p_Msg) := + { /* @status APPROVED (LTE_IRAT) */ + unit := { + sndcpId := p_SNDCPId, + nSAPI := p_NSAPI, // 5 -15 + n_PDU := p_Msg + } + }; + + template (present) AccessIndType cr_G_CS_HandoverAccess := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + hoA := { + hoRef := ? + } + }; + + template (present) L2DataIndType cr_HANDOVERCOMPLETE_Any := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + hoComplete := { + skipIndicator := tsc_SkipIndicator, //BITSTRING [4] + rrProtocolDiscriminator := tsc_PD_RR, //BITSTRING [4] + msgType := oct2bit ('2C'O), //BITSTRING [8] + rrCau := cr_G_RR_Cause, //OCTETSTRING [1] + mobileObservedTimeDiff := cr_MobileTimeDiff_Any ifpresent , // TLV OCTETSTRING [5] IEI=77 + mobileTimeDiffOnHyper := cr_MobileTimeDiffOnHyperFrame_Any ifpresent // TLV OCTETSTRING [7] IEI=67; @sic R5s110176 Baseline Moving sic@ + } + }; + + template (present) MobileTimeDiffOnHyperFrame cr_MobileTimeDiffOnHyperFrame_Any := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + iei :='33'O, // 67 + iel :=?, + valueHigh:=?, // one unit = 24/13 microseconds (half bit period) + valueContd1:=?, + valueContd2:=?, + valueContd3:=?, + valueLow :=?, + spareBits :='0000000'B // spare bits = 000 + }; + + template (value) L2UnitDataReqType cs_CS_PhysicalInformation := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + phyChInfo := cs_G_PhysicalInformation('000000'B) + }; + + +} // end of module diff --git a/LTE_A_IWD_14wk37/Common/GERAN/GERAN_TypeDefs.ttcn b/LTE_A_IWD_14wk37/Common/GERAN/GERAN_TypeDefs.ttcn new file mode 100644 index 0000000..3c678f7 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/GERAN/GERAN_TypeDefs.ttcn @@ -0,0 +1,7091 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-11 13:56:06 +0200 (Thu, 11 Sep 2014) $ +// $Rev: 12205 $ +/******************************************************************************/ + +module GERAN_TypeDefs { + import from CommonDefs all; + import from NAS_CommonTypeDefs all; + import from NAS_24008TypeDefs all; + + //**************************************************************************** + // Port definitions + //**************************************************************************** + + type port GERAN_CL1_PORT message { // GERAN port for physical layer configuration + out G_CPHY_CONFIG_REQ; + in G_CPHY_CONFIG_CNF; + }; + + type port GERAN_CLLC_PORT message { // GERAN port for LLC configuration + out G_LLC_CONFIG_REQ; + in G_LLC_CONFIG_CNF; + }; + + type port GERAN_CRLC_PORT message { // GERAN port for RLC configuration + out G_RLC_CONFIG_REQ; + in G_RLC_CONFIG_CNF; + }; + + type port GERAN_L2_PORT message { // GERAN port for sending/receiving L2 data + out G_L2_DATAMESSAGE_REQ; + in G_L2_DATAMESSAGE_IND; + }; + + type port GERAN_LLC_PORT message { // GERAN port for sending/receiving LLC data + out G_LLC_DATAMESSAGE_REQ; + in G_LLC_DATAMESSAGE_IND; + }; + + type port GERAN_RLC_PORT message { // GERAN port for sending/receiving RLC data + out G_RLC_DATAMESSAGE_REQ; + in G_RLC_DATAMESSAGE_IND; + }; + + type port GERAN_CSNDCP_PORT message { // GERAN port for SNDCP configuration + out G_SNDCP_CONFIG_REQ; + in G_SNDCP_CONFIG_CNF; + }; + + type port GERAN_SNDCP_PORT message { // GERAN port for sending/receiving SNDCP data + out G_SN_DATAMESSAGE_REQ; + in G_SN_DATAMESSAGE_IND; + }; + + //----------------------------------------------------------------------------- + + type B5_Type BCCHFreq; // position of a bcch carrier in the bcch channel list + type B2_Type Channel; // needed channel type + type integer ChannelCoding; /* 1 - CS-1; + * 2 - CS-2; + * 3 - CS-3; + * 4 - CS-4; + * 5 - MCS-1; + * 6 - MCS-2; + * 7 - MCS-3; + * 8 - MCS-4; + * 9 - MCS-5; + * 10 - MCS-6; + * 11 - MCS-7; + * 12 - MCS-8; + * 13 - MCS-9; + * 14 - MCS-5-7; + * 15 - MCS-6 */ + type enumerated GERAN_CellId_Type { geran_Cell24 (1), geran_Cell25 (2), geran_Cell26 (3), geran34_Cell9 (1009), geran34_Cell10 (1010)}; // @sic R5s110176 sic@ + type integer SNDCPId; // The identifier of the SNDCP entity in SGSN + type integer ChannelCombination; + type enumerated ChannelCombination_Enum {TCH_F (1), // 1 = TCH/F + FACCH/F + SACCH/TF + TCH_H1 (2), // 2 = TCH/H(0,1) + FACCH/H(0,1) + SACCH/TH(0,1) + TCH_H0 (3), // 3 = TCH/H(0,0) + FACCH/H(0,1) + SACCH/TH(0,1) + TCH/H(1,1) + ControlCH (4), // 4 = FCCH + SCH + BCCH + CCCH + CombinedControlCH (5), // 5 = FCCH + SCH + BCCH + CCCH + SDCCH/4(0..3) + SACCH/C4(0..3) + BCCH_CCCH (6), // 6 = BCCH + CCCH + SDCCH8 (7), // 7 = SDCCH/8(0..7) + SACCH/C8(0.. 7) + TCH_F_FACCH_SACCHM (8), // 8 = TCH/F + FACCH/F + SACCH/M + TCH_F_SACCHM (9), // 9 = TCH/F + SACCH/M + TCH_FD (10), // 10 = TCH/FD + SACCH/MD + PDTCH (13)} // 13 = PDTCH/F+PACCH/F+PTCCH/F + type B5_Type EGPRSWindowSize; // 3GPP TS 44.060 clause 12.5.2 + type enumerated GERAN_BandUnderTestType {GSM450, GSM480, GSM710, GSM750, T_GSM810, GSM850, GSM_P900, GSM_E900, DCS1800, PCS1900}//, //Single Band Test +// GSM450_900, GSM450_1800, GSM480_900, GSM480_1800, GSM900_1800 } // Multi band Test + type integer G_LogicChType; + type integer PagingMode; + type B2_Type RRBP; + type B6_Type RxLevel; // received signal strength + type B1_Type S_P_Bit; + type B5_Type TFI; + type octetstring N_PDU; // @sic R5s120919 sic@ + type octetstring XID_Info; // may be defined as a structured type in the future + + type enumerated GERAN_WaitForCNF_Type { waitForCNF, dontWaitForCNF }; /* @status APPROVED (LTE_IRAT) */ + + + type enumerated GERAN_POSTAMBLE_STATE_TYPE {G1_IDLE, G2_PSHANDOVER, G3_CSFALLBACK, G4_CSCALL, G5_DEREGISTERED}; + type enumerated GERAN_POSTAMBLE_CONDITIONS {GERAN_C1, GERAN_C2, GERAN_C3}; + +// ============================================================================= + +type record AccessTechRequest { + B4_Type accessTechType optional, + B1_Type mask optional +}; + +type record of AccessTechRequest AccessTechRequestList; + +// ============================================================================= +// Structured Type Definition +// BA Freq list +// 3GPP TS 44.018 clause 10.5.2.1c +// ----------------------------------------------------------------------------- +type record BA_Freq { + B10_Type bA_Freq1, + B1_Type endingBit optional // a value of 1 indicates another repetition +}; + +type record of BA_Freq BA_FreqList; + +type record BA_FreqLists { + B1_Type prefixBit, + BA_FreqList baFreqList optional +} + +// ============================================================================= +// Structured Type Definition +// BA list pref +// 3GPP TS 44.018 clause 10.5.2.1c +// ----------------------------------------------------------------------------- +type record BA_ListPref { + IEI8_Type iei, // '01110101'B @sic R5s1100420 sic@ + O1_Type iel, + RangeLimits rangeList, + BA_FreqLists bA_FreqList, + bitstring spareBits optional +}; + +// ============================================================================= +// Structured Type Definition +// BA range +// 3GPP TS 44.018 clause 10.5.2.1a +// ----------------------------------------------------------------------------- +type record BA_Range { + IEI8_Type iei, // @sic R5s110420 sic@ + O1_Type iel, // @sic R5s110420 sic@ + O1_Type numberOfRanges, // number of ranges, at least 1 + octetstring ranges +}; + +type enumerated GERAN_CellConfiguration_Type { + geran_GSMOnly, + geran_GPRS +}; + +type enumerated GERAN_SI2Configuration_Type { + geran_NoSI2quater, + geran_SI2quater, + geran_SI2ter, + geran_SI2terAnd2quater +}; + +// ============================================================================= +// Structured Type Definition +// Cell description +// 3GPP TS 44.018 clause 10.5.2.2 +// The info element is two octets long. +// ----------------------------------------------------------------------------- +type record CellDescr { + B2_Type bCCH_ARFCN_h, // bcch arfcn high part + B3_Type nCC, // PLMN colour code + B3_Type bCC, // BS colour code + B8_Type bCCH_ARFCN_l // bcch arfcn low part +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.060 clause 12.7 +// ----------------------------------------------------------------------------- +type record ChReqDescr { + B4_Type pkThrouputClass, + B2_Type radioPriority, + B1_Type rlcMode, + B1_Type llcPduType, + B16_Type rlcOctetCount +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 48.008 3.2.2.125 +// ----------------------------------------------------------------------------- +type record CNtoMSTransparentInfo { + IEI8_Type iei optional, + O1_Type iel, + // O1_Type iel2, 44.018 states that the value field is this IE without the IEI. Does this mean we need 2 length fields ??? + octetstring nonce, // encoded as per TS 33.102 + octetstring atgwTransferDetails // encoded as per 24.237 + }; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.060 clause 12.7 +// ----------------------------------------------------------------------------- +type record ExtChReqDescr { + B7_Type pFI, + B2_Type radioPrior, + B1_Type rlcMode, + B1_Type mask1, + B1_Type llcPduType optional, // not present if mask1 = 0 + B1_Type repeatMask // always 0 as only one instance defined for PRR +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.060 clause 12.7a +// ----------------------------------------------------------------------------- +type record IuModeChReqDescr { + B5_Type rBId, + B2_Type radioPrior, + B1_Type mask1, + B8_Type rlcOctetCount optional, // not present if mask1 = 0 + B1_Type repeatMask // always 0 as only one instance defined for PRR +}; + +// ============================================================================= +// Structured Type Definition +// Cell options (BCCH ) +// 3GPP TS 44.018 clause 10.5.2.3 +// ----------------------------------------------------------------------------- +type record CellOptionBCCH { + IEI8_Type iei optional, // information lelement identifier + B1_Type dN_Ind, // dynamic ARFCN mapping indicator + B1_Type pwrc, // power control indicator + B2_Type dtx, // discontinuous transmission indicator + B4_Type radioLinkTimeout // radio link timeout +}; + +// ============================================================================= +// Structured Type Definition +// Cell options (SACCH) +// 3GPP TS 44.018 clause 10.5.2.3a +// ----------------------------------------------------------------------------- +type record CellOptionSACCH { + IEI8_Type iei optional, // information lelement identifier + B1_Type dtx8, // high bit of discontinuous transmission + B1_Type pwrc, // power control indicator + B2_Type dtx65, // lower 2 bits of discontinuous transmission indicator + B4_Type radioLinkTimeout // radio link timeout +}; + +// ============================================================================= +// Structured Type Definition +// ----------------------------------------------------------------------------- +type record AdditionalMeasParam3G { + B3_Type fddQminOffset, + B4_Type fddRSCPmin +}; + +//============================================================================= +// Structured Type Definition +// 3GPP TS 44.060 clause 12.10a +// ----------------------------------------------------------------------------- +type record of ARFCN_Index ARFCN_IndexList; + +type record ARFCN_Index { + B6_Type aRFCN_Index, + B1_Type end_Bit // the value of the bit is zero when it indicates the end of the structure +}; + +// ============================================================================= +// Structured Type Definition +// Cell channel description +// 3GPP TS 44.018 clause 10.5.2.1b +// ----------------------------------------------------------------------------- +type record CellChDescr { + IEI8_Type iei optional, // '01100010'B + O16_Type refFreqList // reference frequency list, the first octet is length +}; + +type record DedicatedServiceInfo { + IEI8_Type iei optional, + B7_Type spare, + B1_Type sis +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.060 clause 12.24 +// ----------------------------------------------------------------------------- +type record ExtensionInfo { + B1_Type extensionMask, // R99 extension + B1_Type eGPRS_PACKET_CHANNEL_REQUEST optional, // not present if extensionMask = 0 + B4_Type bEP_PERIOD optional, // not present if extensionMask = 0 + B1_Type pFC_FEATURE_MODE optional, + B1_Type dTM_SUPPORT optional, + B1_Type bSS_PAGING_COORDINATION optional, + B1_Type cCN_ACTIVE optional, + B1_Type nW_EXT_UTBF optional, + B1_Type multiTBFCap optional, + B1_Type extUTBFNoData optional, + B1_Type dTMEhancCap optional, + B1_Type mbmsMask optional, + B1_Type dedModeMBMSSupprt optional, // not present if mbmsMask = 0 + B1_Type mNCISupport optional, // not present if mbmsMask = 0 + B1_Type reducedLatencyAccess, + B1_Type nmoIAlternate optional, // @sic R5s130195 Baseline Moving sic@ + bitstring spareBit optional +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.018 clause 9.1.54 +// ----------------------------------------------------------------------------- +type record UTRAN_FDD_Descr { + B1_Type bandwidthMask, + B3_Type bandwidthFDD optional, // not present if bandwidthMask = 0 + RepeatedUTRAN_FDD_NeighCellList repeatedUTRAN_FDD_NeighbourCells1 optional +}; + +type record RepeatedUTRANFDDNeighCell{ + B1_Type prefix, + RepeatedUTRAN_FDD_NeighCells iteration optional// only present if prefix = 1 +} + +type record of RepeatedUTRANFDDNeighCell RepeatedUTRAN_FDD_NeighCellList; + +// ============================================================================= +// Structured Type Definition +// 44.018 clause 10.5.2.1e +// // ----------------------------------------------------------------------------- +type record UTRAN_FDD_Descr_CR { + B1_Type bandwidthMask, + B3_Type bandwidthFDD optional, // not present if bandwidthMask = 0 + B14_Type fDD_ARFCN, + B1_Type fDDIndMask, + B1_Type fDD_Indic0 optional, // not present if fDDIndMask = 0 + B5_Type nR_OF_FDD_CELLS optional, // not present if fDDIndMask = 0 + bitstring fDD_CELL_INFORMATION optional // not present if fDDIndMask = 0 + // length of this bitstring = p(nR_OF_FDD_CELLS) +}; + +type record of UTRANFDDDescr_CRStruct UTRANFDDDescr_CRList; + +type record UTRANFDDDescr_CRStruct { + B1_Type prefix, + UTRAN_FDD_Descr_CR fdd optional //only present if prefix = 1 +} + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.018 clause 9.1.54 +// ----------------------------------------------------------------------------- +type record UTRAN_TDD_Descr { + B1_Type bandwidthMask , + B3_Type bandwidthTDD optional, // not present if bandwidthMask = 0 + RepeatedUTRAN_TDD_NeighCellList repeatedUTRAN_TDD_NeighbourCells1 optional +}; + +type record RepeatedUTRANTDDNeighCell{ + B1_Type prefix, + RepeatedUTRAN_TDD_NeighCells iteration optional// only present if prefix = 1 +} + +type record of RepeatedUTRANTDDNeighCell RepeatedUTRAN_TDD_NeighCellList; + +type record UTRAN_TDD_Descr_PMO { + B1_Type bandwidthMask , + B3_Type bandwidthTDD optional, // not present if bandwidthMask = 0 + RepeatedUTRAN_TDD_PMO_NeighCellList repeatedUTRAN_TDD_PMO_NeighbourCells1 optional +}; + +type record RepeatedUTRANTDDPMONeighCell{ + B1_Type prefix, + RepeatedUTRAN_TDD_PMO_NeighCells iteration optional// only present if prefix = 1 +} + +type record of RepeatedUTRANTDDPMONeighCell RepeatedUTRAN_TDD_PMO_NeighCellList; + +type record of UTRANTDDDescr_CRStruct UTRANTDDDescr_CRList; + +type record UTRANTDDDescr_CRStruct { + B1_Type prefix, + UTRAN_TDD_Descr_CR tdd optional //only present if prefix = 1 +} + +// ============================================================================= +// Structured Type Definition +// 44.018 clause 10.5.2.1e +// ----------------------------------------------------------------------------- +type record UTRAN_TDD_Descr_CR { + B1_Type bandwidthMask, + B3_Type bandwidthTDD optional, // not present if bandwidthMask = 0 + B14_Type tDD_ARFCN, + B1_Type tDDIndMask, + B1_Type tDD_Indic0 optional, // not present if tDDIndMask = 0 + B5_Type nR_OF_TDD_CELLS optional, // not present if tDDIndMask = 0 + bitstring tDD_CELL_INFORMATION optional // not present if tDDIndMask = 0 + // length of this bitstring = p(nR_OF_TDD_CELLS) +}; +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.018 clause 10.5.2.1e +// ----------------------------------------------------------------------------- +type record CellSelInd { + O1_Type iei, + O1_Type iel, + B3_Type ranDescr, + GSM_DescrList gsmDescr optional, // only present if ranDescr = 000 + UTRANFDDDescr_CRList uTRANFDDDescr optional, // Only present if ranDescr = '001' + UTRANTDDDescr_CRList uTRANTDDDescr optional, // Only present if ranDescr = '010' + EUTRANDescr_List eUTRANDescr optional // Only present if ranDescr = '011' +}; + +type record GSM_DescrStruct { + B1_Type prefix, + GSM_Descr gsmDescr optional // only present if prefix = 1 +} + +type record of GSM_DescrStruct GSM_DescrList; + +type record GSM_Descr { + B1_Type bandInd, + B10_Type aRFCN, + B6_Type bSIC +} + +type record EUTRANDescr_CRStruct { + B1_Type prefix, + EUTRAN_Descr eutranDescr optional // only present if prefix = 1 +} + +type record of EUTRANDescr_CRStruct EUTRANDescr_List; + +type record EUTRAN_Descr { // @sic R5s110176 sic@ + B16_Type earfcn, + B1_Type bwMask, + B3_Type measBandwidth optional, // only present if bwMask = 1 @sic R5s100135 sic@ + B1_Type naMask, + PCIDGroup notAllowed optional, // only present if naMask = 1 @sic R5s120303 sic@ + B1_Type tMask, + B9_Type targetPCID optional // only present if tMask = 1 +}; + +// ============================================================================= +// Structured Type Definition +// Channel mode 2 +// 3GPP TS 44.018 clause 10.5.2.7 +// ----------------------------------------------------------------------------- +type record ChMode2 { + IEI8_Type iei optional, // '01100110'B + B8_Type mode +}; + +// ============================================================================= +// Structured Type Definition +// Channels needed +// 3GPP TS 44.018 clause 10.5.2.8 +// ----------------------------------------------------------------------------- +type record ChNeeded { + B4_Type iei optional, // information element identity + Channel ch2, // needed channel 2 O + Channel ch1 // needed channel 1 M +}; + + +// ============================================================================= +// Structured Type Definition +// used in DTM Request +// 3GPP TS 44.018 clause 10.5.2.8b +// ----------------------------------------------------------------------------- +type record ChReqDescr2 { + O1_Type ielength, // @sic R5s110420 sic@ + B2_Type pktEstCause, // Packet Establishment Cause + ChReqDescr chReqDescr, + B1_Type mask, + B7_Type pFI optional, // not present if mask=0 + B1_Type multiTBFCap, + LH_B1_Type maskR7, + B1_Type rlcNonPModeCap optional, // not present if maskR7 = 0 + B1_Type reducedLatencyCap optional, // not present if maskR7 = 0 + B2_Type ulEGPRS2 optional, // not present if maskR7 = 0 + B2_Type dlEGPRS2 optional, // not present if maskR7 = 0 + LH_B1_Type maskR9, // @sic R5s110176 sic@ + B1_Type emstMSCap optional, // not present if maskR9 = 0 @sic R5s110176 sic@ + LH_B1_Type maskR10, // @sic R5s110178 Baseline Moving sic@ + B1_Type emsrMSCap optional, // not present if maskR10 = 0 @sic R5s110178 Baseline Moving sic@ + LH_B1_Type maskR11 optional, // @sic R5s130195 Baseline Moving sic@ + B1_Type fanrCap optional, // not present if maskR11 = 0 @sic R5s130195 Baseline Moving sic@ + bitstring sparepadding optional // uplink message +}; + +// ============================================================================= +// Structured Type Definition +// Cipher response +// 3GPP TS 44.018 clause 10.5.2.10 +// ----------------------------------------------------------------------------- +type record CipherResponse { + IEI4_Type iei optional, // '1010'B + B3_Type spareBits, // spare bits + B1_Type cipherResponse // cipher response bit +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 04.08 / 3GPP TS 44.018 Section 10.5.2.7c +// ----------------------------------------------------------------------------- +type record ClassmarkEnquiryMask { + IEI8_Type iei, // OCTETSTRING [1] @sic R5s110420 sic@ + O1_Type ielength, // OCTETSTRING [1] @sic R5s110420 sic@ + O1_Type ievalue // OCTETSTRING [1] +}; + +// ============================================================================= +// Structured Type Definition +// ----------------------------------------------------------------------------- +type record CompactReducedMA { + B7_Type reducedMABitmapLen, + bitstring reducedMABitmap length(0..128) optional, // contents of length reducedMABitmapLen + B1_Type MAIO_2mask, + B6_Type MAIO_2 optional // not present if MAIOmask=0 +}; + +// ============================================================================= +// Structured Type Definition +// Control channel description +// 3GPP TS 44.018 clause 10.5.2.11 +// ----------------------------------------------------------------------------- +type record ControlChDescr { +// IEI8_Type iei optional, // iei not used + B1_Type mSCRelease, // MSC release + B1_Type att, // attach-detach allowed + B3_Type bS_AG_BLKS_RES, // base station access grant blocks reservation + B3_Type cCCH_CONF, // CCCH configuration + B1_Type si22Ind, // SI 22 indication @sic R5s130195 Baseline Moving sic@ + B2_Type cBQ3, // cell bar qualify 3 @sic R5s130195 Baseline Moving sic@ + B2_Type spareBits, // spare bits + B3_Type bS_PA_MFRMS, // number of multiframes for paging request + O1_Type t3212 // t3212 value +}; + +type record CCN_SupportDescr { + B7_Type noCells, + CCN_SupportList cCN_Support +}; + +type record of B1_Type CCN_SupportList; + +type record CDMA2000Descr { + B5_Type cdma2000FreqBand, + B11_Type cdma2000Freq, + B5_Type noCDMA2000Cells, + CDMA2000CellDescrList cdmaCells +}; + +type record of CDMA2000CellDescr CDMA2000CellDescrList; + +type record CDMA2000CellDescr { + B9_Type pilotPN_Offset, + B1_Type mask, + B3_Type addMask, + AdditionalInfoFor1xCommonPilotDiversity addInfO1_TypexCommonPilotDiv optional, // only present if mask = 0 and addMask = 000 + AdditionalInfoFor1xAuxPilot addInfoAux1xPilot optional, // only present if mask = 0 and addMask = 001 + AdditionalInfoFor1xAuxPilotDiversity addInfoAux1xPilotDiversity optional, // only present if mask = 0 and addMask = 010 + AdditionalInfoFor3xCommonPilot addInfo3xCommonPilot optional, // only present if mask = 0 and addMask = 011 + AdditionalInfoFor3xAuxPilot addInfo3xAuxPilot optional // only present if mask = 0 and addMask = 110 +}; + +type record AdditionalInfoFor1xCommonPilotDiversity { + B2_Type tdMode, + B3_Type tdPowerLevel +}; + +type record AdditionalInfoFor1xAuxPilot { + B2_Type qOF, + B3_Type walshLenA, + bitstring auxPilotWalsh length (6..13) +}; + +type record AdditionalInfoFor1xAuxPilotDiversity { + B2_Type qOF, + B3_Type walshLenB, + bitstring auxTDWalsh length (6..13), + B2_Type auxTDPowerLevel, + B2_Type tdMode +}; + +type record AdditionalInfoFor3xCommonPilot { + B2_Type sr3_PrimPilot, + B3_Type sr3PilotPower1, + B3_Type sr3PilotPower2 +}; + +type record AdditionalInfoFor3xAuxPilot { + B2_Type sr3_PrimPilot, + B3_Type sr3PilotPower1, + B3_Type sr3PilotPower2, + B2_Type qOF, + B3_Type walshLenC, + bitstring auxPilotWalsh length (6..13), + B1_Type qof1Mask, + B2_Type qOF1 optional, // not present if qof1Mask = 0 + B3_Type walshLen1 optional, // not present if qof1Mask = 0 + bitstring auxPilotWalsh1 length (6..13) optional, // not present if qof1Mask = 0 + B1_Type qof2Mask, + B2_Type qOF2 optional, // not present if qof2Mask = 0 + B3_Type walshLen2 optional, // not present if qof2Mask = 0 + bitstring auxPilotWalsh2 length (6..13) optional // not present if qof2Mask = 0 +}; +// ============================================================================= +// Structured Type Definition +// 44.018 10.5.2.25d +// ----------------------------------------------------------------------------- +type record MultiDLTBFAssign { + B1_Type ulCtrlMask, + B3_Type ulCtrlTslot optional, // not present if ulCtrlMask = 0 + B8_Type tslotAlloc, + DLTBFAssignStruct dlTBFAssign +}; + +type record of MultiDLTBFAssignList MultiDLTBFAssignStruct; + +type record MultiDLTBFAssignList { + B1_Type prefix, + MultiDLTBFAssign multiTBF optional // only present if prefix = 1 +}; + +type record of DLTBFAssignList DLTBFAssignStruct; + +type record DLTBFAssignList{ + B1_Type prefix, + DLTBFAssign dlTBF optional // only present if prefix = 1 +}; + +type record DLTBFAssign { + B7_Type pFI, + B1_Type rlcMode, + B5_Type dlTBFAssign, + B1_Type ctrlAck, + B1_Type windowMask, + EGPRSWindowSize eGPRSWindowSize optional // not present if windowMask = 0 +}; + +// ============================================================================= +// Structured Type Definition +// Reference : 3GPP TS 44.018 clause 10.5.2.25b +// ----------------------------------------------------------------------------- +type record DedicatedModeOrTBF { + B4_Type iei optional, // information element identifier + B1_Type spareBit, // always = 0 + B1_Type twoMsgAssig, // two message assignment + B1_Type downlink, // down link assignement + B1_Type tBForDedicated // TBF or dedicated mode +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.060 clause 12.8 +// ----------------------------------------------------------------------------- +type record DirectEncoding1 { + B6_Type mAIO, // MAIO + GPRSMobileAlloc gPRS_MobileAllocation +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.060 clause 12.8 +// ----------------------------------------------------------------------------- +type record DirectEncoding2 { + B6_Type mAIO, // MAIO + B6_Type hSN, + B4_Type lengthOfMA_FreqList, + octetstring mA_FreqList length(3..18) // length of this field is indicated in lengthOfMA_FreqList +}; + +// ============================================================================= +// Structured Type Definition +// ::= +// +// }**0> ** +// Reference : 3GPP TS 44.018 clause 10.5.2.11b +// ----------------------------------------------------------------------------- +type record DynaARFCN_Mapping { + O1_Type iei, // @sic R5s110420 sic@ + B8_Type iel, // @sic R5s120178 sic@ + DYNAMIC_ARFCN_MAPPING_LIST dYNAMIC_ARFCN_MAPPING +}; + +// ============================================================================= +// Structured Type Definition +// ----------------------------------------------------------------------------- +type record TimeSlotAllocationPowerControl { + B1_Type tN0mask, + B3_Type uSF_TN0 optional, // not present if tN0mask=0 + B5_Type gAMMA_TN0 optional, // not present if tN0mask=0 + B1_Type tN1mask, + B3_Type uSF_TN1 optional, // not present if tN1mask=0 + B5_Type gAMMA_TN1 optional, // not present if tN1mask=0 + B1_Type tN2mask, + B3_Type uSF_TN2 optional, // not present if tN2mask=0 + B5_Type gAMMA_TN2 optional, // not present if tN2mask=0 + B1_Type tN3mask, + B3_Type uSF_TN3 optional, // not present if tN3mask=0 + B5_Type gAMMA_TN3 optional, // not present if tN3mask=0 + B1_Type tN5mask, + B3_Type uSF_TN5 optional, // not present if tN5mask=0 + B5_Type gAMMA_TN5 optional, // not present if tN5mask=0 + B1_Type tN6mask, + B3_Type uSF_TN6 optional, // not present if tN6mask=0 + B5_Type gAMMA_TN6 optional, // not present if tN6mask=0 + B1_Type tN7mask, + B3_Type uSF_TN7 optional, // not present if tN7mask=0 + B5_Type gAMMA_TN7 optional // not present if tN7mask=0 +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.060 clause 12.21 +// ----------------------------------------------------------------------------- +type record StartingFrameNumberDscr { + B1_Type encodingMask, + RFN absoluteFrameNumEnc optional, // not present if encodingMask=1 + bitstring relativeFrameNumEnc length(0..13) optional // not present if encodingMask=0 +}; + +// ============================================================================= +// Structured Type Definition +// ----------------------------------------------------------------------------- +type record TimeSlotAllocation_UA { + B1_Type tN0mask, + B3_Type uSF_TN0 optional, // not present if tN0mask=0 + B1_Type tN1mask, + B3_Type uSF_TN1 optional, // not present if tN1mask=0 + B1_Type tN2mask, + B3_Type uSF_TN2 optional, // not present if tN2mask=0 + B1_Type tN3mask, + B3_Type uSF_TN3 optional, // not present if tN3mask=0 + B1_Type tN4mask, + B3_Type uSF_TN4 optional, // not present if tN4mask=0 + B1_Type tN5mask, + B3_Type uSF_TN5 optional, // not present if tN5mask=0 + B1_Type tN6mask, + B3_Type uSF_TN6 optional, // not present if tN6mask=0 + B1_Type tN7mask, + B3_Type uSF_TN7 optional // not present if tN7mask=0 +}; + +// ============================================================================= +// Structured Type Definition +// ----------------------------------------------------------------------------- +type record DynamicAllocationPacket { + B1_Type extendedAllocMask, // 0 - dynamic allocation; 1 - extended dynamic allocation + B1_Type mask, + B4_Type p0 optional, // not present if mask=0 + B1_Type pR_Mode optional, // not present if mask=0 + B1_Type uSFGranularity, // 0 - one block; 1 - four blocks + B1_Type uplinkTFImask, + B5_Type uplinkTFI optional, // not present if uplinkTFImask=0 + B1_Type spareBit, // set to 0 + B1_Type tBFStartingTimeMask, + StartingFrameNumberDscr tBFStartingTime optional, // not present if tBFStartingTimeMask=0 + B1_Type timeSlotAllocMask, + TimeSlotAllocation_UA timeSlotAlloc optional, // not present if timeSlotAllocMask=1 + TimeSlotAllocationPowerControl timeSlotAllocPowerControl optional // not present if timeSlotAllocMask=0 +}; + +// ============================================================================= +// Structured Type Definition +// ----------------------------------------------------------------------------- +type record SingleBlockAllocationPacket { + B3_Type timeSlot, + B1_Type PowerControlMask, + B4_Type alpha optional, // not present if PowerControlMask=0 + B5_Type gamma optional, // not present if PowerControlMask=0 + B1_Type mask, + B4_Type P0 optional, // not present if mask=0 + B1_Type spareBit optional, // set to 0. not present if mask=0 + B1_Type prMode optional, // not present if mask=0 + StartingFrameNumberDscr tBFStartingTime +}; + +type record EGPRSPktUplinkAssigment { + B2_Type constantVal, // shall be '00'B + B1_Type tLLImask, + B32_Type contensionResolutionTLLI optional, // not present if tLLImask=0 + B1_Type compactReducedMAmask, + CompactReducedMA compactReducedMA optional, // not present if compactReducedMAmask=0 + B4_Type channelCodingCommand, // note 1 + B1_Type resegment, // 0 - Retransmitted RLC data blocks shall not be re-segmented. + // 1 - Retransmitted RLC data blocks shall be re-segmented according to commanded MCS + B5_Type windowSize, + B1_Type accessTechMask, + AccessTechnologyList accessTechnology optional, // not present if accessTechMask = 0 + B1_Type aRACRetransReq, // 0 - retransmission of an ADDITIONAL MS RADIO ACCESS CAPABILITIES message is not requested. + // 1 - retransmission of an ADDITIONAL MS RADIO ACCESS CAPABILITIES message is requested + B1_Type tLLIBlockChannelCoding, // 0 - MS shall use CS-1 in GPRS TBF mode and MCS-1 in EGPRS TBF mode. + // 1 - MS shall use the value commanded in the CHANNEL_CODING_COMMAND or EGPRS_CHANNEL_CODING_COMMAND + B1_Type bep_Period2Mask, + B4_Type bep_Period2 optional, // not present if bep_Period2Mask=0 + PacketTimingAdvance packetTimingAdvance, + B1_Type packetExtTAmask, + B2_Type packetExtendedTA optional, // not present if packetExtTImask=0 + B1_Type freqParamMask, + FreqParam freqParam optional, // not present if freqParamMask=0 + B2_Type allocationMask, + DynamicAllocationPacket dynamicAllocation optional, // present if allocationMask=01 + MultiBlockAllocationPacket multiBlockAllocation optional, // present if allocationMask=10 + B1_Type r5Mask optional, + B1_Type gRNTIMask optional, // not present if r99Mask=0 and r5Mask=0 + B4_Type gRNTIExtension optional, // not present if r99Mask=0, r5Mask=0 and gRNTIMask=0 + B1_Type rBIdMask optional, // not present if r99Mask=0 and r5Mask=0 + B5_Type rBId optional, // not present if r99Mask=0, r5Mask=0 and rBIdMask=0 + B1_Type r6Mask optional, // not present if r99Mask=0, r5Mask=0 + B1_Type pfiMask optional, // not present if r99Mask=0, r5Mask=0 and r6Mask = 0 + B7_Type pFI optional, // not present if r99Mask=0, r5Mask=0, r6Mask = 0 and pfiMask = 0 + B1_Type rlcModeMask optional, // not present if r99Mask=0, r5Mask=0 and r6Mask = 0 + B1_Type rlcMode optional, // not present if r99Mask=0, r5Mask=0, r6Mask = 0 and rlcModeMask = 0 + B1_Type r7Mask optional, // not present if r99Mask=0, r5Mask=0, r6Mask = 0 + B1_Type npmMask optional, // not present if r99Mask=0, r5Mask=0, r6Mask = 0 and r7Mask = 0 + B5_Type npmTransferTime optional, // not present if r99Mask=0, r5Mask=0, r6Mask = 0, r7Mask = 0 or npmMask = 0 + B1_Type r9Mask optional, // not present if r99Mask=0, r5Mask=0, r6Mask = 0 and r7Mask = 0 @sic R5s110176 sic@ + B1_Type upperLayerStartForUMInd optional, // not present if r99Mask=0, r5Mask=0, r6Mask = 0 and r7Mask = 0 or r9Mask = 0 @sic R5s110176 sic@ + B1_Type enhancedFlexTimeslot optional, // not present if r99Mask=0, r5Mask=0, r6Mask = 0 and r7Mask = 0 or r9Mask = 0 @sic R5s110176 sic@ + B1_Type emstMask optional, // not present if r99Mask=0, r5Mask=0, r6Mask = 0 and r7Mask = 0 or r9Mask = 0 @sic R5s110176 sic@ + B1_Type emstNWCap optional, // not present if r99Mask=0, r5Mask=0, r6Mask = 0 and r7Mask = 0 or r9Mask = 0 or emstMask = 1 @sic R5s110176 sic@ + RLCEntity rlcEntity2 optional, // not present if r99Mask=0, r5Mask=0, r6Mask = 0 and r7Mask = 0 or r9Mask = 0 or emstMask = 0 @sic R5s110176 sic@ + B1_Type entity3Mask optional, // not present if r99Mask=0, r5Mask=0, r6Mask = 0 and r7Mask = 0 or r9Mask = 0 or emstMask = 0 @sic R5s110176 sic@ + RLCEntity rlcEntity3 optional, // not present if r99Mask=0, r5Mask=0, r6Mask = 0 and r7Mask = 0 or r9Mask = 0 or emstMask = 0 or entity3Mask = 0 @sic R5s110176 sic@ + B1_Type r10Mask optional, // not present if r99Mask=0, r5Mask=0, r6Mask = 0 and r7Mask = 0 or r9Mask = 0 @sic R5s120178 sic@ + RptdAddPFC emsrAddPFC1 optional, // not present if r99mask = 0 or if r5Mask=0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 @sic R5s120178 sic@ + RptdAddPFC emsrAddPFC2 optional, // not present if r99mask = 0 or if r5Mask=0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 @sic R5s120178 sic@ + RptdAddPFC emsrAddPFC3 optional // not present if r99mask = 0 or if r5Mask=0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 @sic R5s120178 sic@ +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.018 clause 10.5.2.16 +// ----------------------------------------------------------------------------- +type record EGPRS_UplinkAssign { + B5_Type extendedRA, + B1_Type accessTechMmask, + AccessTechRequestList accessTechRequest optional, // not present if accessTechMask = 0 + B1_Type allocMask, // '0' -> multiBlock Allocation; '1' -> dynamic allocation + B5_Type tFI_Assignment optional, // temporary flow identifier not present if allocMask = 0 + B1_Type pOLLING optional, // not present if allocMask = 0 + B1_Type spareBit optional, // not present if allocMask = 0. set to 0 + B3_Type uSF optional, // not present if allocMask = 0 + B1_Type uSFGranularity optional, // not present if allocMask = 0 + B1_Type p0Mask optional, // not present if allocMask = 0 + B4_Type p0 optional, // not present if allocMask = 0 or p0Mask = 0 + B1_Type pR_MODE optional, // not present if allocMask = 0 or p0Mask = 0 + B4_Type eGPRSChannelCodingCommand optional, // not present if allocMask = 0 + B1_Type tLLI_BlockChannelCodeing optional, // not present if allocMask = 0 + B1_Type bepPeriod2Mask optional, // not present if allocMask = 0 + B4_Type bepPeriod2 optional, // not present if allocMask = 0 or bepPeriod2Mask = 0 + B1_Type resegment optional, // not present if allocMask = 0 + EGPRSWindowSize eGPRSWindowSize optional, // not present if allocMask = 0 + B1_Type alphaMask optional, // not present if allocMask = 0 + B4_Type aLPHA optional, // not present if allocMask = 0 or alphaMask = 0 + B5_Type gMMA optional, // not present if allocMask = 0 + B1_Type taIndexMask optional, // not present if allocMask = 0 + B4_Type tIMING_ADVANCE_INDEX optional, // not present if allocMask = 0 or taIndexMask = 0 + B1_Type tbfStartingTimemask optional, // not present if allocMask = 0 + B16_Type tBF_STARTING_TIME optional, // not present if allocMask = 0 or tbfStartingTimemask = 0 + LH_B1_Type r7Mask optional, // not present if allocMask = 0 + B1_Type bTTIMask optional, // not present if allocMask = 0 or r7Mask = L + B1_Type fanrMask optional, // not present if allocMask = 0 or r7Mask = L or bTTIMask = 1 + B1_Type encodingMask optional, // not present if allocMask = 0 or r7Mask = L or bTTIMask = 1 or fanrMask = 0 + B8_Type reportedTimeslots optional, // not present if allocMask = 0 or r7Mask = L or bTTIMask = 1 or fanrMask or encodingMask = 0 + B2_Type tsh optional, // not present if allocMask = 0 or r7Mask = L or bTTIMask = 1 or fanrMask or encodingMask = 0 + B1_Type rttiUSFMode optional, // not present if allocMask = 0 or r7Mask = L or bTTIMask = 0 + B3_Type pdchPairInd optional, // not present if allocMask = 0 or r7Mask = L or bTTIMask = 0 + B3_Type additionalUSF optional, // not present if allocMask = 0 or r7Mask = L or bTTIMask = 0 or rttiUSFMode = 1 + B1_Type pdchMask optional, // not present if allocMask = 0 or r7Mask = L or bTTIMask = 0 + B3_Type usf2 optional, // not present if allocMask = 0 or r7Mask = L or bTTIMask = or pdchMask = 0 + B3_Type additionalUSF2 optional, // not present if allocMask = 0 or r7Mask = L or bTTIMask = or pdchMask = 0 or rttiUSFMode = 1 + B1_Type encodingMask2 optional, // not present if allocMask = 0 or r7Mask = L or bTTIMask = 0 + B8_Type reportedTimeslots2 optional, // not present if allocMask = 0 or r7Mask = L or bTTIMask or encodingMask2 = 0 + B8_Type tsh2 optional, // not present if allocMask = 0 or r7Mask = L or bTTIMask = or encodingMask2 = 0 + B1_Type alpha1Mask optional, // present if allocMask = 0 + // multi block allocation + B4_Type aLPHA1 optional, // not present if allocMask = 1 or alpha1Mask = 0 + B5_Type gMMA1 optional, // not present if allocMask = 1 + B16_Type tBF_STARTING_TIME1 optional, // not present if allocMask = 1 + B2_Type numberOfRadioBlocks optional, // not present if allocMask = 1 + B1_Type p02Mask optional, // not present if allocMask = 1 + B4_Type p02 optional, // not present if allocMask = 1 or p02Mask = 0 + B1_Type spareBit2 optional, // not present if allocMask = 1 or p02Mask = 0 set to 0 + B1_Type pR_MODE2 optional, // not present if allocMask = 1 or p02Mask = 0 + LH_B1_Type r6Mask optional, // not present if allocMask = 1 + B1_Type pfiMask optional, // not present if allocMask = 1 or r6Mask = L + B7_Type pFI optional // not present if allocMask = 1, r6Mask = L or pfiMask = 0 +}; + +type record PktDlDualCarrier { // @sic R5s100135 sic@ + B2_Type mask, // set to 00 + B1_Type rlcMode, + B1_Type ctrlAck, + B2_Type assignType, + B1_Type carrierId, + B1_Type bTTIMask, + B8_Type timeslotAllocC1 optional, // only present if bTTIMask = 0 + B1_Type tnAllocC2Mask optional, // only present if bTTIMask = 0 + B8_Type timeslotAllocC2 optional, // only present if bTTIMask = 0 and tnAllocC2Mask = 1 + B1_Type singleCarrier optional, // only present if bTTIMask = 1 + B2_Type pdchMask optional, // value 11 is reserved + B8_Type dlPDCHC1_s optional, // only present if bTTIMask = 1, singleCarrier = 0 and pdchMask = 10 + B8_Type ulPDCHC1_s optional, // only present if bTTIMask = 1, singleCarrier = 0 and pdchMask = 10 + B4_Type rTTIDLPDCHPair_sc optional, // only present if bTTIMask = 1 and singleCarrier = 0 + B2_Type dualCarrierMask optional, // only present if bTTIMask = 1 and singleCarrier = 1 + B8_Type dlPDCHC1_d optional, // only present if bTTIMask = 1, singleCarrier = 1 and dualCarrierMask = 10 + B8_Type dlPDCHC2_d optional, // only present if bTTIMask = 1, singleCarrier = 1 and dualCarrierMask = 10 + B8_Type ulPDCHC1_d optional, // only present if bTTIMask = 1, singleCarrier = 1 and dualCarrierMask = 10 + B8_Type ulPDCHC2_d optional, // only present if bTTIMask = 1, singleCarrier = 1 and dualCarrierMask = 10 + B8_Type rTTIDLPDCHPair_dc optional, // only present if bTTIMask = 1 and singleCarrier = 1 + PacketTimingAdvance pktTA, + B2_Type freqMask optional, // value 11 is reserved + B1_Type freqC1Mask optional, // only present if freqMask = 01 + FreqParam freqC1 optional, // only present if freqMask = 01 and freqC1Mask = 1 + B1_Type freqC2Mask optional, // only present if freqMask = 01 + FreqParam freqC2 optional, // only present if freqMask = 01 and freqC2Mask = 1 + DualCarrierFreqParam dualCarrierFreqParam optional, // only present if freqMask = 10 + B1_Type pwrCtrlC1Mask, + B4_Type p0C1 optional, // only present if pwrCtrlC1Mask = 1 + B1_Type pR_ModeC1 optional, // only present if pwrCtrlC1Mask = 1 + B1_Type pwrCtrlC2Mask, + B4_Type p0C2 optional, // only present if pwrCtrlC2Mask = 1 + B1_Type pR_ModeC2 optional, // only present if pwrCtrlC2Mask = 1 + B1_Type dlTFIMask, + B5_Type dlTFIAssign optional, // only present if dlTFIMask =1 + B1_Type pwrParamsC1Mask, + PowerControlParam pwrCtrlParamsC1 optional, // only present if pwrParamsC1Mask = 1 + B1_Type pwrParamsC2Mask, + PowerControlParam pwrCtrlParamsC2 optional, // only present if pwrParamsC2Mask = 1 + B1_Type egprsMask, + EGPRSWindowSize eGPRSWindowSize optional, // only present if egprsMask = 1 + B2_Type linkQualityMeasMode optional, // only present if egprsMask = 1 + B1_Type bepPeriodMask optional, // only present if egprsMask = 1 + B4_Type bepPeriod2 optional, // only present if egprsMask = 1 and bepPeriodMask = 1 + B1_Type xdTAMask, + B2_Type pktExtendedTA optional, // only present if xdTAMask = 1 + B1_Type pfiMask, + B7_Type pFI optional, // only present if pfiMask = 1 + B1_Type npmMask, + B5_Type npmTransferTime optional, // only present if npmMask = 1 + B1_Type fanrMask, + B1_Type eventBasedFANR optional, // only present if fanrMask = 1 + B2_Type dlEGPRSLevel, + B1_Type r9Mask optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 @sic R5s110176 sic@ + B1_Type upperLayerStartForUMInd optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 @sic R5s110176 sic@ + B1_Type emstMask optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 @sic R5s110176 sic@ + RLCEntity rlcEntity2 optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or emstMask = 0 @sic R5s110176 sic@ + B1_Type entity3Mask optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or emstMask = 0 @sic R5s110176 sic@ + RLCEntity rlcEntity3 optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or emstMask = 0 or entity3Mask = 0 @sic R5s110176 sic@ + B1_Type mttiC1Mask optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 @sic R5s110176 sic@ + B1_Type mttiDLAssignC1 optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or if mttiC1Mask = 0 @sic R5s110176 sic@ + B1_Type mttiC2Mask optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 @sic R5s110176 sic@ + B1_Type mttiDLAssignC2 optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or if mttiC2Mask = 0 @sic R5s110176 sic@ + B1_Type r10Mask optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 @sic R5s120178 sic@ + RptdAddPFC emsrAddPFC1 optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 @sic R5s120178 sic@ + RptdAddPFC emsrAddPFC2 optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 @sic R5s120178 sic@ + RptdAddPFC emsrAddPFC3 optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 @sic R5s120178 sic@ + B1_Type r11Mask optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 @sic R5s130195 Baseline Moving sic@ + B1_Type egprsPDAN3 optional // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 or r11Mask = 0 @sic R5s130195 Baseline Moving sic@ + }; + +type record of AddPFCStruct RptdAddPFC; + +type record AddPFCStruct { + B1_Type prefix, + AddPFC addPFC optional // not present if prefix = 0 +}; + +type record AddPFC { + B5_Type tfiAssign, + B1_Type npmMask, + B5_Type npmTransferTime optional, // not present if npmMask = 0 + B7_Type pfi +}; + +type record PktUlDualCarrier { + B2_Type tLLImask, + B32_Type contentionResolutionTLLI optional, // only present if tLLIMask = 1 + B1_Type resegment, // 0 - Retransmitted RLC data blocks shall not be re-segmented; 1 - Retransmitted RLC data blocks shall be re-segmented according to commanded MCS + B2_Type assignType, + B1_Type carrierId, + B5_Type windowSize, + B1_Type accessTechMask, + AccessTechnology accessTechnology optional, // only present if accessTechMask = 1 + B1_Type aRACRetransReq, //0 - retransmission of an ADDITIONAL MS RADIO ACCESS CAPABILITIES message is not requested; 1 - retransmission of an ADDITIONAL MS RADIO ACCESS CAPABILITIES message is requested + B1_Type tLLIBlockChannelCoding, // 0 - MS shall use CS-1 in GPRS TBF mode and MCS-1 in EGPRS TBF mode; 1 - MS shall use the value commanded in the CHANNEL_CODING_COMMAND or EGPRS_CHANNEL_CODING_COMMAND + B1_Type bepPeriodMask, + B4_Type bepPeriod2 optional, // only present if bepPeriodMask = 1 + PacketTimingAdvance pktTimingAdvance, + B1_Type xdTAMask, + B2_Type pktExtendedTA optional, // only present if xdTAMask = 1 + B1_Type bTTIMask, + B1_Type rTTIUSFMode optional, // only present if bTTIMask = 1 + PDCHPairsDescr pdchPairs optional, // only present if bTTIMask = 1 // @sic R5s100135 sic@ + DynamicAlloc2 dynamicAlloc2, + B4_Type eGPRSChCodingCmd, + B2_Type freqMask optional, // value 11 is reserved + B1_Type freqC1Mask optional, // only present if freqMask = 01 + FreqParam freqC1 optional, // only present if freqMask = 01 and freqC1Mask = 1 + B1_Type freqC2Mask optional, // only present if freqMask = 01 + FreqParam freqC2 optional, // only present if freqMask = 01 and freqC2Mask = 1 + DualCarrierFreqParam dualCarrierFreqParam optional, // only present if freqMask = 10 + B1_Type pfiMask, + B7_Type pFI optional, // only present if pfiMask = 1 + B1_Type rlcMask, + B1_Type rlcMode optional, // only present if rlcMask =1 + B1_Type npmMask, + B5_Type npmTransferTime optional, // only present if npmMask = 1 + B1_Type fanrMask, + B1_Type timeMask optional, // only present if fanrMask = 1 + B8_Type reportedTimeslotC1 optional, // only present if fanrMask = 1 and timeMask = 1 + B1_Type c2Mask optional, // only present if fanrMask = 1 and timeMask = 1 + B8_Type reportedTimeslotC2 optional, // only present if fanrMask = 1 and timeMask = 1 and c2Mask= 1 + B2_Type tSH optional, // only present if fanrMask = 1 and timeMask = 1 + B2_Type ulEGPRSLevel, + B1_Type pulseMask, + B1_Type pulseFormatMask optional, // only present if pulseMask = 1 + B3_Type pulseFormatCoding1 optional, // only present if pulseMask =1 and pulseFormatMask = 0 + bitstring pulseFormatCoding2 optional, // only present if pulseMask =1 and pulseFormatMask = 1 + B1_Type r9Mask optional, // @sic R5s110176 sic@ + B1_Type upperLayerStartForUMInd optional, // not present if r9Mask = 0 @sic R5s110176 sic@ + B1_Type enhancedFlexTimeslot optional, // not present if r9Mask = 0 @sic R5s110176 sic@ + B1_Type emstMask optional, // not present if r9Mask = 0 @sic R5s110176 sic@ + B1_Type emstNWCap optional, // not present if r9Mask = 0 or emstMask = 1 @sic R5s110176 sic@ + RLCEntity rlcEntity2 optional, // not present if r9Mask = 0 or emstMask = 0 @sic R5s110176 sic@ + B1_Type entity3Mask optional, // not present if r9Mask = 0 or emstMask = 0 @sic R5s110176 sic@ + RLCEntity rlcEntity3 optional, // not present if r9Mask = 0 or emstMask = 0 or entity3Mask = 0 @sic R5s110176 sic@ + B1_Type mttiC1Mask optional, // not present if r9Mask = 0 @sic R5s110176 sic@ + B1_Type mttiULAssignC1 optional, // not present if r9Mask = 0 or if mttiC1Mask = 0 @sic R5s110176 sic@ + B1_Type mttiC2Mask optional, // not present if r9Mask = 0 @sic R5s110176 sic@ + B1_Type mttiULAssignC2 optional, // not present if r9Mask = 0 or if mttiC2Mask = 0 @sic R5s110176 sic@ + B1_Type r10Mask optional, // not present if r99Mask=0, r5Mask=0, r6Mask = 0 and r7Mask = 0 or r9Mask = 0 @sic R5s120178 sic@ + RptdAddPFC emsrAddPFC1 optional, // not present if r99mask = 0 or if r5Mask=0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 @sic R5s120178 sic@ + RptdAddPFC emsrAddPFC2 optional, // not present if r99mask = 0 or if r5Mask=0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 @sic R5s120178 sic@ + RptdAddPFC emsrAddPFC3 optional // not present if r99mask = 0 or if r5Mask=0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 @sic R5s120178 sic@ + }; + +type record PDCHPairsDescr { // @sic R5s100135 sic@ + B1_Type singleCarrier, + B2_Type pdchMask, // value 11 is reserved + B8_Type dlPDCHC1 optional, // only present if dualCarrierMask = 10 + B8_Type dlPDCHC2 optional, // only present if singleCarrier = 1 and pdchMask = 10 + B8_Type ulPDCHC1 optional, // only present if pdchMask = 10 + B8_Type ulPDCHC2 optional // only present if singleCarrier = 1 and pdchMask = 10 +}; + +type record DualCarrierFreqParam { + B3_Type tsc, + B2_Type mask, + B1_Type arfcnMask, + B10_Type arfcn1 optional, // not present if arfcnMask = 0 + B10_Type arfcn2 optional, // not present if arfcnMask = 0 + B2_Type encodeMask, + B1_Type maMask1, + B6_Type maio1 optional, // not present if maMask1 = 0 + B1_Type maMask2, + B6_Type maio2 optional, // not present if maMask2 = 0 + B4_Type maNumber optional, // only present if encodeMask = 01 + B1_Type changeMask optional, // only present if encodeMask = 01 + B2_Type changeMark1 optional, // only present if encodeMask = 01 and changeMask = 1 + B1_Type changeMask2 optional, // only present if encodeMask = 01 and changeMask = 1 + B2_Type changeMark2 optional, // only present if encodeMask = 01 and changeMask = 1 + GPRSMobileAlloc gprsMA optional, // only present if encodeMask = 10 + B6_Type hsn optional, // only present if encodeMask = 11 + B4_Type maFreqListLength optional, // only present if encodeMask = 11 + octetstring maFreqList length (0..18) optional // only present if encodeMask = 11 +}; + +type record DynamicAlloc2 { + B1_Type extendedAllocMask, + B1_Type maskC1, + B4_Type p0C1 optional, // not present if maskC1 = 0 + B1_Type prModeC1 optional, // not present if maskC1 = 0 + B1_Type maskC2 optional, // not present if maskC1 = 0 @sic R5s120178 Baseline Moving sic@ + B4_Type p0C2 optional, // not present if maskC1 or maskC2 = 0 + B1_Type prModeC2 optional, // not present if maskC1 or maskC2 = 0 + B1_Type usfGranularity, // 0 - 1 block, 1 - 4 blocks + B1_Type uplinkTFIMask, + B5_Type uplinkTFI optional, // not present if uplinkTFIMask = 0 + B1_Type pwrMask, + B4_Type nUSF optional, // only present if pwrMask = 0 + B1_Type usfMask optional, // only present if pwrMask = 0 + USFList usf optional, // only present if pwrMask = 0 and usfMask = 1 + B4_Type alphaC1 optional, // only present if pwrMask = 1 + B1_Type alphaMask optional, // only present if pwrMask = 1 + B4_Type alphaC2 optional, // only present if pwrMask = 1 and alphaMask = 1 + B1_Type bTTIMask optional, // only present if pwrMask = 1 + B4_Type nts optional, // only present if pwrMask = 1 and bTTIMask = 0 + B1_Type bUSFMask optional, // only present if pwrMask = 1 and bTTIMask = 0 + USFList bUSF optional, // only present if pwrMask = 1, bTTIMask = 0 and bUSFMask = 1 + GammaList bGamma optional, // only present if pwrMask = 1, bTTIMask = 0 and bUSFMask = 1 + B3_Type nPairs optional, // only present if pwrMask = and bTTIMask = 1 + B1_Type rUSFMask optional, // only present if pwrMask = 1 and bTTIMask = 1 + USFList rUSF optional, // only present if pwrMask = 1, bTTIMask = 1 and rUSFMask = 1 + GammaList rGamma optional, // only present if pwrMask = 1, bTTIMask = 1 and rUSFMask = 1 + B1_Type mask optional, // only present if pwrMask = 1, bTTIMask = 1 @sic R5s120178 Baseline Moving sic@ + B3_Type usfMask2 optional, // only present if pwrMask = 1, bTTIMask = 1 and mask = 1 @sic R5s120178 Baseline Moving sic@ + B3_Type rUSF2 optional, // only present if pwrMask = 1, bTTIMask = 1, mask = 1 and usfMask2 = 1 + B1_Type gammaMask optional, // only present if pwrMask = 1, bTTIMask = 1, mask = 1 and usfMask2 = 1 + GammaList rGamma2 optional // only present if pwrMask = 1, bTTIMask = 1, mask = 1, usfMask2 = 1 and gammaMask = 1 +}; + +type record length (1..16) of B3_Type USFList; + +type record length (1..16) of B5_Type GammaList; + +// ============================================================================= +// Structured Type Definition +// ----------------------------------------------------------------------------- +type record EGPRSBEPQualityMeas { + B1_Type mask1, + B5_Type gMSKMeanBEP optional, // not present if mask1 = 0 + B3_Type gMSKCVBEP optional, // not present if mask1 = 0 + B1_Type mask2, + B5_Type pSKMeanBEP optional, // not present if mask2 = 0 + B3_Type pSKCVBEP optional // not present if mask2 = 0 +}; + +// ============================================================================= +// Structured Type Definition +// ----------------------------------------------------------------------------- +type record EGPRSTimeslotLinkQualityMeas { + B1_Type mask1, + B1_Type tnmaskA0 optional, // not present if mask1 = 0 + B1_Type tnmaskB0 optional, // not present if mask1 or tnmaskA0 = 0 + B4_Type gMSKMeanBEPTN0 optional, // not present if mask1 or tnmaskA0 = 0 or tnMaskB0 = 1 + B4_Type pSKMeanBEPTN0 optional, // not present if mask1 or tnmaskA0 = 0 or tnMaskB0 = 0 + B1_Type tnmaskA1 optional, // not present if mask1 = 0 + B1_Type tnmaskB1 optional, // not present if mask1 or tnmaskA1 = 0 + B4_Type gMSKMeanBEPTN1 optional, // not present if mask1 or tnmaskA1 = 0 or tnMaskB1 = 1 + B4_Type pSKMeanBEPTN1 optional, // not present if mask1 or tnmaskA1 = 0 or tnMaskB1 = 0 + B1_Type tnmaskA2 optional, // not present if mask1 = 0 + B1_Type tnmaskB2 optional, // not present if mask1 or tnmaskA2 = 0 + B4_Type gMSKMeanBEPTN2 optional, // not present if mask1 or tnmaskA2 = 0 or tnMaskB2 = 1 + B4_Type pSKMeanBEPTN2 optional, // not present if mask1 or tnmaskA2 = 0 or tnMaskB2 = 0 + B1_Type tnmaskA3 optional, // not present if mask1 = 0 + B1_Type tnmaskB3 optional, // not present if mask1 or tnmaskA3 = 0 + B4_Type gMSKMeanBEPTN3 optional, // not present if mask1 or tnmaskA3 = 0 or tnMaskB3 = 1 + B4_Type pSKMeanBEPTN3 optional, // not present if mask1 or tnmaskA3 = 0 or tnMaskB3 = 0 + B1_Type tnmaskA4 optional, // not present if mask1 = 0 + B1_Type tnmaskB4 optional, // not present if mask1 or tnmaskA4 = 0 + B4_Type gMSKMeanBEPTN4 optional, // not present if mask1 or tnmaskA4 = 0 or tnMaskB4 = 1 + B4_Type pSKMeanBEPTN4 optional, // not present if mask1 or tnmaskA4 = 0 or tnMaskB4 = 0 + B1_Type tnmaskA5 optional, // not present if mask1 = 0 + B1_Type tnmaskB5 optional, // not present if mask1 or tnmaskA5 = 0 + B4_Type gMSKMeanBEPTN5 optional, // not present if mask1 or tnmaskA5 = 0 or tnMaskB5 = 1 + B4_Type pSKMeanBEPTN5 optional, // not present if mask1 or tnmaskA5 = 0 or tnMaskB5 = 0 + B1_Type tnmaskA6 optional, // not present if mask1 = 0 + B1_Type tnmaskB6 optional, // not present if mask1 or tnmaskA6 = 0 + B4_Type gMSKMeanBEPTN6 optional, // not present if mask1 or tnmaskA6 = 0 or tnMaskB6 = 1 + B4_Type pSKMeanBEPTN6 optional, // not present if mask1 or tnmaskA6 = 0 or tnMaskB6 = 0 + B1_Type tnmaskA7 optional, // not present if mask1 = 0 + B1_Type tnmaskB7 optional, // not present if mask1 or tnmaskA7 = 0 + B4_Type gMSKMeanBEPTN7 optional, // not present if mask1 or tnmaskA7 = 0 or tnMaskB7 = 1 + B4_Type pSKMeanBEPTN7 optional, // not present if mask1 or tnmaskA7 = 0 or tnMaskB7 = 0 + B1_Type mask2, + B1_Type imask0 optional, // not present if mask2 = 0 + B4_Type ilevelTN0 optional, // not present if mask2 or imask0 = 0 + B1_Type imask1 optional, // not present if mask2 = 0 + B4_Type ilevelTN1 optional, // not present if mask2 or imask1 = 0 + B1_Type imask2 optional, // not present if mask2 = 0 + B4_Type ilevelTN2 optional, // not present if mask2 or imask2 = 0 + B1_Type imask3 optional, // not present if mask2 = 0 + B4_Type ilevelTN3 optional, // not present if mask2 or imask3 = 0 + B1_Type imask4 optional, // not present if mask2 = 0 + B4_Type ilevelTN4 optional, // not present if mask2 or imask4 = 0 + B1_Type imask5 optional, // not present if mask2 = 0 + B4_Type ilevelTN5 optional, // not present if mask2 or imask5 = 0 + B1_Type imask6 optional, // not present if mask2 = 0 + B4_Type ilevelTN6 optional, // not present if mask2 or imask6 = 0 + B1_Type imask7 optional, // not present if mask2 = 0 + B4_Type ilevelTN7 optional // not present if mask2 or imask7 = 0 +}; + +// ============================================================================= +// Structured Type Definition +// ----------------------------------------------------------------------------- +type record EnhDTMCSRelInd { + B4_Type iei optional, + B3_Type spareBits, // set to '000' + B1_Type ind +}; + +//============================================================================= +//Structured Type Definition +//44.060 11.2.9b +//----------------------------------------------------------------------------- +type record ENH_MeasParam_PMO { + B1_Type mask, + B1_Type bA_Ind optional, + B1_Type bA3G_Ind optional, + B2_Type pSI3ChangeMark optional, + B1_Type pMOInd, + B1_Type reportType, + B1_Type reportRate, + B1_Type invalidBSICRep, + B1_Type neighCellMask, + NeighCellDescr3G_PMO neighCellDescr3G optional, + B1_Type gPRS_RepPriorityMask, + ReportPriorityDescr gPRS_RepPriority optional, + B1_Type gPRS_MeasParamDesMask, + GPRS_MeasParamDescr_PMO gPRS_MeasureParamDescr optional, + B1_Type gPRS_3G_MeasParamDescrMmask, + GPRS_3G_MeasParamDescr_PMO gPRS_3G_MeasParamDescr optional +} + +type record ENH_MeasParam { + B1_Type mask, + B1_Type bA_Ind optional, + B1_Type bA3G_Ind optional, + B2_Type pSI3ChangeMark optional, + B1_Type pMOInd, + B1_Type reportType, + B1_Type reportRate, + B1_Type invalidBSICRep, + B1_Type neighCellMask, + NeighCellDescr3G neighCellDescr3G optional, + B1_Type rem3GCellMask, + Removed3GCell_Descr rem3GCellDescr optional, // not present if rem3GCellMask = 0 + B1_Type gPRS_RepPriorityMask, + ReportPriorityDescr gPRS_RepPriority optional, + B1_Type gPRS_MeasParamDesMask, + GPRS_MeasParamDescr_PMO gPRS_MeasureParamDescr optional, + B1_Type gPRS_3G_MeasParamDescrMmask, + SI2quaterRO_GPRS_3G_MeasParamDescr gPRS_3G_MeasParamDescr optional +} + +// ============================================================================= +// Structured Type Definition +// Feature Indicator +// 3GPP TSS 44.018 clause 10.5.2.76 +// ----------------------------------------------------------------------------- +type record FeatureInd { + B2_Type spare, + B1_Type csIR, + B1_Type psIR +}; + +// ============================================================================= +// Structured Type Definition +// Frequency channel sequence +// 3GPP TSS 44.018 clause 10.5.2.12 +// ----------------------------------------------------------------------------- +type record FreqChannelSeq { + IEI8_Type iei optional, // '01101001'B + O1_Type larfcn, // lowest ARFCN (1-124) + O8_Type incs // increment skip ARFCN n +}; + +// ============================================================================= +// Structured Type Definition +// Frequency list +// 3GPP TS 44.018 clause 10.5.2.13 +// ----------------------------------------------------------------------------- +type record FreqList { + IEI8_Type iei, // '00000101'B @sic R5s110420 sic@ + O1_Type iel, // OCTETSTRING [1] @sic R5s110420 sic@ + octetstring frequencyList // list of the absolute radio frequency channel numbers +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.060 clause 12.8 +// ----------------------------------------------------------------------------- +type record FreqParam { + B3_Type tSC, + B2_Type encodingMask, + B10_Type aRFCN optional, // present if encodingMask = '00'B + IndirectEncoding indirectEncoding optional, // present if encodingMask = '01'B + DirectEncoding1 directEncoding1 optional, // present if encodingMask = '10'B + DirectEncoding2 directEncoding2 optional // present if encodingMask = '11'B +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.018 clause 10.5.2.16 +// ----------------------------------------------------------------------------- +type record FreqParam_bt { + B2_Type maskBits, // always = 00 + B6_Type mAIO, // MAIO + octetstring mobileAloc // length of this field is (value of lengthOfFreqParam -1), lengthOfFreqParam is definied in IARO +}; + +// ============================================================================= +// Structured Type Definition +// GPRS resumption +// 3GPP TS 44.018 clause 10.5.2.14c +// ----------------------------------------------------------------------------- +type record GPRS_Resumption { + B4_Type iei optional, + B3_Type spareBits, + B1_Type ack +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.060 clause 12.10 +// ----------------------------------------------------------------------------- +type record GlobalTFI { + B1_Type tFIMask, + B5_Type uplinkTFI optional, // not present if TFImask=1 + B5_Type downlinkTFI optional // not present if TFImask=0 +}; + +// ============================================================================= +// Structured Type Definition +// ref: 44.060 clause 11.2.9b +// ----------------------------------------------------------------------------- + type record GPRS_MeasParamDescr_PMO + { + B1_Type multibandReportingMask, + B2_Type multibandReporting optional, // not present if multibandReportingMask = 0 + B1_Type ServingBandReportingMask, // not present if servingBandReportingMask = 0 + B2_Type servingBandReporting optional , // not present if servingBandReportingMask = 0 + B2_Type sCALE_ORD , + B1_Type mask900 , + B3_Type rEPORTING_OFFSET_900 optional , //not present if mask900 = 0 + B3_Type rEPORTING_THRESHOLD_900 optional,//not present if mask900 = 0 + B1_Type mask1800 , + B3_Type rEPORTING_OFFSET_1800 optional, //not present if mask1800 = 0 + B3_Type rEPORTING_THRESHOLD_1800 optional, //not present if mask1800 = 0 + B1_Type mask400 , + B3_Type rEPORTING_OFFSET_400 optional, //not present if mask400 = 0 + B3_Type rEPORTING_THRESHOLD_400 optional, //not present if mask400 = + B1_Type mask1900 , + B3_Type rEPORTING_OFFSET_1900 optional, //not present if mask1900 = 0 + B3_Type rEPORTING_THRESHOLD_1900 optional, //not present if mask1900 = 0 + B1_Type mask850 , + B3_Type rEPORTING_OFFSET_850 optional, //not present if mask850 = 0 + B3_Type rEPORTING_THRESHOLD_850 optional //not present if mask850 = 0 + } + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.060 v5a0 clause 11.2.9b +// ----------------------------------------------------------------------------- + + type record GPRS_3G_MeasParamDescr_PMO + { + B4_Type qsearchP, + B1_Type spare, + B1_Type fDD_REP_QUANT_Mask , + B1_Type fDD_REP_QUANT optional, //not present if fDD_REP_QUANT_Mask = 0 + B2_Type fDD_MULTIRAT_REPORTING optional, // not present if fDD_REP_QUANT_Mask = 0 + B1_Type fDD_ReportingMask , + B3_Type fDD_REPORTING_OFFSET optional, // not present if fDD_ReportingMask = 0 + B3_Type fDD_REPORTING_THRESHOLD optional, //not present if fDD_ReportingMask = 0 + B1_Type tDD_MultiratReportingMask , + B2_Type tDD_MULTIRAT_REPORTING optional, //not present if tDD_MultiratReportingMask = 0 + B1_Type tDD_ReportingMask , + B3_Type tDD_REPORTING_OFFSET optional, //not present if tDD_ReportingMask = 0 + B3_Type tDD_REPORTING_THRESHOLD optional, // not present if tDD_ReportingMask = 0 + B1_Type cdma_MultiratReportingMask , + B2_Type cdma_MULTIRAT_REPORTING optional, // not present if cdma_MultiratReportingMask = 0 + B1_Type cdma_ReportingMask , + B3_Type cdma_REPORTING_OFFSET optional, // not present if cdma_ReportingMask = 0 + B3_Type cdma_REPORTING_THRESHOLD optional //not present if cdma_ReportingMask = 0 + } + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.018 clause 9.1.21a +// ----------------------------------------------------------------------------- +type record GroupCallInfo { + B36_Type groupCallRef, + B1_Type mask, + GroupCallReference groupChDescr optional // only present if mask = 1 +} + +type record GroupCallReference { + B24_Type channelDescr, + B1_Type mask1, // non-hopping = 0 + B1_Type mask2, + bitstring mobileAlloc optional, // only present if mask1 = 1 and mask2 = 0 + B64_Type freqShortList optional // only present if mask1 = 1 and mask2 = 1 +} + +// ============================================================================= +// Structured Type Definition +// Group Channel description +// 3GPP TS 44.018 clause 10.5.2.14b +// ----------------------------------------------------------------------------- +type record GroupChannelDescr { + IEI8_Type iei, // @sic R5s120178 sic@ + O1_Type iel, // @sic R5s120178 sic@ + B5_Type cht_schn , // channel type and TDMA offset + B3_Type tn, // timeslot number + B3_Type tsc, // training sequence code + B1_Type hch, // hch = 1 indicating hopping channel + B6_Type maio, // mobile allocation index offset - hopping + B6_Type hsn, // hopping sequence number - hopping + B2_Type spr, // '00'B - non hopping + B10_Type arfcn, // absolute RF channel number - non hopping + B8_Type mac_8n, // mac64 - mac57 + B8_Type mac_7n, // mac56 - mac49 + B8_Type mac_6n, // mac48 - mac41 + B8_Type mac_5n, // mac40 - mac33 + B8_Type mac_4n, // mac32 - mac25 + B8_Type mac_3n, // mac24 - mac17 + B8_Type mac_2n, // mac16 - mac9 + B8_Type mac_1n // mac8 - mac1 +}; + +// ============================================================================= +// Structured Type Definition +// Group Channel description +// 3GPP TS 44.018 clause 10.5.2.14f +// ----------------------------------------------------------------------------- +type record GroupChannelDescr2 { + IEI8_Type iei, // @sic R5s110420 sic@ + O1_Type iel, // @sic R5s110420 sic@ + B5_Type cht_schn, // channel type and TDMA offset + B3_Type tn, // timeslot number + B3_Type tsc, // training sequence code + B1_Type spare, // set to '0' + B6_Type maio, // mobile allocation index offset - hopping + B6_Type hsn, // hopping sequence number - hopping + O8_Type freqShortList2 // coded as per clause 10.5.2.14a +}; + +// ============================================================================= +// Structured Type Definition +// Group cipher key number +// 3GPP TS 24.008 clause 10.5.1.10 +// ----------------------------------------------------------------------------- +type record GroupCipherKey { + B4_Type iei optional, + B4_Type keyNumber +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.018 clause 10.5.2.16 +// ----------------------------------------------------------------------------- +type record SecondPacketAssign { + LH_B1_Type mask1, + B1_Type mask2 optional, // not present if mask1 = L + B5_Type extendedRA optional // not present if mask1 = L or mask2 = 0 +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.018 clause 10.5.2.16 +// ----------------------------------------------------------------------------- +type record IARO { + LH_B2_Type constructMask, + LH_B1_Type compressInterRATHO optional, // present if constructMask = LL + B1_Type reservMask1 optional, // present if constructMask = LH + B1_Type reservMask2 optional, // present if reservMask1 = 0 + EGPRS_UplinkAssign eGPRS_UplinkAssign optional, // not present if reservMask2 = 1 or reservMask1 = 1 or constructMask <> LH + MultiBlocksPacketDlAss multiBlocksPDA optional, // not present if reservMask2 = 0 or reservMask1 = 1 or constructMask <> LH + B6_Type lengthOfFreqParam optional, // present if constructMask = HL + FreqParam_bt freqParam_bt optional, // frequency parameters before time. not present if lengthOfFreqParam = 0 + LH_B1_Type compressInterRATHO1_Type optional, // present if constructMask = HL + B1_Type mask1 optional, // present if constructMask = HH + B1_Type mask2 optional, + PacketUplinkAssign packetUplinkAssign optional, // not present if mask1 = 1 or mask2 = 1 or constructMask <> HH + PacketDownlinkAssign packetDownlinkAssign optional, // not present if mask1 = 1 or mask2 = 0 or constructMask <> HH + SecondPacketAssign secondPacketAssign optional, // present if mask1 = 1 and constructMask = HH + LH_B1_Type r10Mask, // @sic R5s110178 Baseline Moving sic@ + B1_Type implicitRejectCS optional, // not present if r10Mask = L @sic R5s110178 Baseline Moving sic@ + B1_Type implicitRejectPS optional // not present if r10Mask = L @sic R5s110178 Baseline Moving sic@ +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.060 clause 12.8 +// ----------------------------------------------------------------------------- +type record IndirectEncoding { + B6_Type mAIO, // MAIO + B4_Type mA_NUMBER, // MA_NUMBER + B1_Type changeMark1Mask, + B2_Type mA_ChangeMark1 optional, // not present if changeMark1Mask = 0 + B1_Type changeMark2Mask optional, // not present if changeMark1Mask = 0 + B2_Type mA_ChangeMark2 optional // not present if changeMark1Mask = 0 or changeMark2Mask = 0 +}; + +type record IuModeNeighCellParamsStruct { + B1_Type prefix, + IuModeNeighCellParams iu optional // not present if prefix = 0 +}; + +type record of IuModeNeighCellParamsStruct IuModeNeighCellParamsList; + +type record IuModeNeighCellParams { + B1_Type iuModeMask, + IuModeCellSelParams iuModeCellSel optional, // not present if iuModeMask = 0 + B5_Type noFreqs, + IuModeCellSelParamList iuModeCellSelParamList +} + +type record IuModeCellSelParams { + B2_Type cellBarQualify3, + B1_Type mask, + B1_Type si13mask optional, // not present if mask = 0 + B1_Type si13Location optional, // not present if mask = 0 or sI13LocationMask = 1 + B2_Type pBCCHLocation optional, // not present if mask = 0 or sI13LocationMask = 0 + B4_Type pSIRepeat optional // not present if mask = 0 or sI13LocationMask = 0 +}; + +type record of IuModeCellSelParamStruct IuModeCellSelParamList; + +type record IuModeCellSelParamStruct { + B1_Type mask, + IuModeCellSelParams iuModeCellSelParams optional // not present if mask = 0 +}; +//============================================================================= +//Structured Type Definition +//LSA Parameters, 44.060, 12.28 +//----------------------------------------------------------------------------- +type record LSA_Param { + B5_Type noOfFreqOrCells, + LSA_ID_Info lSA_ID_Info +}; + +type record LSA_ID_Info { + B1_Type mask, + B1_Type prefix, + ShortLSA_IDList shortLSA_ID +}; + +type record of ShortLSA_ID ShortLSA_IDList; + +type record ShortLSA_ID { + B10_Type shortLSA, + B1_Type nextInd // if this is the last instance, set this to 0 +}; + +// ============================================================================= +// Structured Type Definition +// measurement results +// 3GPP TS 44.018 clause 10.5.2.20 +// ----------------------------------------------------------------------------- +type record MeasResults { + IEI8_Type iei optional, // information element identifier + B1_Type ba_used, // bcch allocation used + B1_Type dtx_used, // dtx was used + RxLevel rxlev_fsc, // received signal strength on the full serving cell + B1_Type ba3G_used, // 3G bcch allocation used + B1_Type meas_valid, // measurement results valid + RxLevel rxlev_ssc, // received signal strength on a subset of the serving cell + B1_Type spare, // @sic R5s100135 sic@ + B3_Type rxqual_fsc, // received signal quality on the full serving cell + B3_Type rxqual_ssc, // received signal quality on a subset of the serving cell + B3_Type no_neighCells, // number of neighbouring cells (nc) + NCellReportList neighCellList, // list of neighbour cells, only present if no_neighCells != 111 @sic R5s110176 sic@ + B1_Type csgMask optional,// not present if no_neighCells = 111 @sic R5s110176 sic@ + UTRANCSGReport utranCSGMeasRpt optional,// only present if csgMask = 1 @sic R5s110176, R5s120178 Baseline Moving sic@ + bitstring sparePadding optional +}; + +type record length (0..6) of NCellReport NCellReportList; + +type record NCellReport { + RxLevel rxlev, // received signal strength + BCCHFreq bcchfrq, // bcch frequency position + B6_Type bsic // base station identity code +}; + +// ============================================================================= +// Structured Type Definition +// Mobile allocation +// 3GPP TS 44.018 clause 10.5.2.21 +// ----------------------------------------------------------------------------- +type record MobileAlloc { + IEI8_Type iei optional, // '01110010'B + O1_Type iel, // '00'O for non hopping @sic R5s110420 sic@ + B8_Type mac_8n optional, // mac64 - mac57 + B8_Type mac_7n optional, // mac56 - mac49 + B8_Type mac_6n optional, // mac48 - mac41 + B8_Type mac_5n optional, // mac40 - mac33 + B8_Type mac_4n optional, // mac32 - mac25 + B8_Type mac_3n optional, // mac24 - mac17 + B8_Type mac_2n optional, // mac16 - mac9 + B8_Type mac_1n optional // mac8 - mac1 +}; + +// ============================================================================= +// Structured Type Definition +// Mobile time difference +// 3GPP TS 44.018 clause 10.5.2.21a +// ----------------------------------------------------------------------------- +type record MobileTimeDiff { + IEI8_Type iei, // '01110111'B @sic R5s110420 sic@ + O1_Type iel, // OCTETSTRING [1] @sic R5s110420 sic@ + B8_Type valueHigh, // one unit = 24/13 microseconds (half bit period) + B8_Type valueContd, + B5_Type valueLow, + B3_Type spareBits // spare bits = 000 +}; + +// ============================================================================= +// Structured Type Definition +// Mobile time difference +// 3GPP TS 44.018 clause 10.5.2.21ab +// ----------------------------------------------------------------------------- +type record MobileTimeDiffOnHyperFrame { + IEI8_Type iei, // @sic R5s110420 sic@ + O1_Type iel, // OCTETSTRING [1] @sic R5s110420 sic@ + B8_Type valueHigh, // one unit = 24/13 microseconds (half bit period) + B8_Type valueContd1, + B8_Type valueContd2, + B8_Type valueContd3, + B1_Type valueLow, + B7_Type spareBits // spare bits = 000 +}; + +// ============================================================================= +// Structured Type Definition +// ----------------------------------------------------------------------------- +type record MultiBlockAllocationPacket { + B3_Type timeslotNumber, + B1_Type PowerControlMask, + B4_Type alpha optional, // not present if PowerControlMask=0 + B5_Type gamma optional, // not present if PowerControlMask=0 + B1_Type mask, + B4_Type P0 optional, // not present if mask=0 + B1_Type spareBit optional, // set to 0. not present if mask=0 + B1_Type prMode optional, // not present if mask=0 + StartingFrameNumberDscr tBFStartingTime, + B2_Type noRadioBlocksAlloc +}; + +// ============================================================================= +// Structured Type Definition +// 44.060 clause 12.33 +// ----------------------------------------------------------------------------- +type record TMGI { + B1_Type mask, + B24_Type serviceID, // always present, regardless of mask value + B12_Type mCC optional, // not present if mask = 0 + B12_Type mNC optional // not present if mask = 0 +}; + +// ============================================================================= +// Structured Type Definition +// 44.018 clause 10.5.2.16 +// ----------------------------------------------------------------------------- +type record MultiBlocksPacketDlAss { + B16_Type startingTime, + B4_Type numAllocBlks, + B1_Type escapeBit, // Set to '1' + B1_Type distMask, + TMGI tMGI optional, // not present if distMask = 1 + B1_Type sesIdMask optional, // not present if distMask = 1 + B8_Type sesId optional, // not present if distMask = 1 or sesIdMask = 0 + O4_Type tLLI_GRNTI optional, // not present if distMask = 0 + B1_Type idMask optional, // not present if distMask = 0 + B2_Type idLength optional, // not present if distMask = 0 or idMask = 0 + bitstring mSId length(1..4) optional, // not present if distMask = 0 or idMask = 0 + PacketTimingAdvance pktTA optional, // not present if distMask = 0 or idMask = 0 + B1_Type aMask optional, // not present if distMask = 0 or idMask = 0 + B4_Type alpha optional, // not present if distMask = 0, idMask = 0 or aMask = 0 + B1_Type gMask optional, // not present if distMask = 0, idMask = 0 or aMask = 0 + B5_Type gamma optional // not present if distMask = 0, idMask = 0, aMask = 0 or gMask = 0 +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.018 clause 10.5.2.21aa +// ----------------------------------------------------------------------------- +type record MultiRateConfig { + IEI8_Type iei, // @sic R5s110420 sic@ + O1_Type iel, // @sic R5s110420 sic@ + B3_Type mrVersion, // multirate speech version + B1_Type nSCB, // noise suppression control bit + B1_Type iCMI, // initial codec mode indicator + B1_Type spareBit, // 0 + B2_Type startMode, // start mode + octetstring mrSpeechPara length(1..5) // parameters for multirate speech +}; + +type record NCCIuModeCapCellList { + B1_Type mask, + AddIuModeOnlyCell addedCells optional // not present if mask = 0 +}; + +type record AddIuModeOnlyCell { + B10_Type startFreq, + B6_Type bSIC, + B1_Type mask, + IuModeOnlyCellSel cellSelParams optional, // not present if mask = 0 + B5_Type noFreqs, + B3_Type freqDiffLength, + bitstring freqDiff length (1..8), + B6_Type bSIC2, + IuModeOnlyCellSelList iuModeOnlyCellSelList +}; + +type record IuModeOnlyCellSel { + B2_Type cellBarQualify3, + IuModeCellSel common +}; + +type record IuModeOnlyCellSelStruct { + B1_Type mask, + IuModeOnlyCellSel iuModeOnlyCellSel optional +} + +type record of IuModeOnlyCellSelStruct IuModeOnlyCellSelList; + +// ============================================================================= +// Structured Type Definition +// 44.018 10.5.25c +// ----------------------------------------------------------------------------- +type record ULTBFAssign { + B7_Type pFI, + B1_Type rlcMode, + B5_Type ulTBFAssign, + B1_Type ccMask, + B2_Type chCodingCmd optional, // not present if ccMask = 0 + B1_Type eccMask, + B4_Type eGPRSChCodingCmd optional, // not present if eccMask = 0 + B1_Type windowMask, + EGPRSWindowSize eGPRSWindowSize optional, // not present if windowMask = 0 + B1_Type usfMask, + B3_Type singleUSFAlloc optional, // not present if usfMask = 1 + USFAssignList usfAlloc optional // not present if usfMask = 0 + }; + +type record PSHO_RResource { + B1_Type hoMask, + B8_Type hoReference optional, // not present if hoMask = 0 + B10_Type arfcn, + B2_Type si, + B1_Type nci, + B6_Type bsic, + B1_Type ccnMask, + B1_Type ccnActive optional, // not present if ccnMask = 0 + B1_Type ccn3GMask, + B1_Type ccn3GActive optional, // not present if ccn3GMask = 0 + B1_Type ccnSupportMask, + CCN_SupportDescr ccnSupportDescr optional, // not present if ccnSupportMask = 0 + FreqParam freqParams, + B2_Type networkCtrlOrder, + B1_Type taMask, + GlobalPacketTimingAdvance pktTA optional, // not present if taMask = 0 + B1_Type xtdTAMask optional, // not present if taMask = 0 + B2_Type pktXtdTA optional, // not present if taMask = 0 or xtdTAMask = 0 + B1_Type xtdDynamicAlloc, + B1_Type rlcReset, + B1_Type poMask, + B4_Type po optional, // not present if poMask = 0 + B1_Type prMode optional, // not present if poMask = 0 + B1_Type uctMask, + B3_Type ulCtrlTimeslot optional, // not present if uctMask = 0 + B1_Type gprsMask, + GPRSMode gprsMode optional, // not present if gprsMask = 1 + EGPRSMode egprsMode optional // not present if gprsMask = 0 +}; + +type union GPRSMode { + GPRSMode_UL ul, + DLTBFAssignList_PSHO dl +}; + +type record GPRSMode_UL { + B1_Type ccMask, + B2_Type chCodingCmd optional, // not present if ccMask = 0 + CommonMode_UL ulMode +}; + +type record CommonMode_UL { + B1_Type globalMask, + B1_Type timeslotMask optional, // not present if globalMask = 0 + B8_Type timeslotAllocation optional, // not present if globalMask = 0 or timeslotMask = 1 + B4_Type alpha optional, // not present if globalMask = 0 or timeslotMask = 0 + B1_Type tN0mask optional, // not present if globalMask = 0 or timeslotMask = 0 + B5_Type gAMMA_TN0 optional, // not present if globalMask = 0 or tN0mask=0 or if timeslotMask = 0 + B1_Type tN1mask optional, // not present if globalMask = 0 or timeslotMask = 0 + B5_Type gAMMA_TN1 optional, // not present if globalMask = 0 or tN1mask=0 or if timeslotMask = 0 + B1_Type tN2mask optional, // not present if globalMask = 0 or timeslotMask = 0 + B5_Type gAMMA_TN2 optional, // not present if globalMask = 0 or tN2mask=0 or if timeslotMask = 0 + B1_Type tN3mask optional, // not present if globalMask = 0 or timeslotMask = 0 + B5_Type gAMMA_TN3 optional, // not present if globalMask = 0 or tN3mask=0 or if timeslotMask = 0 + B1_Type tN4mask optional, // not present if globalMask = 0 or timeslotMask = 0 + B5_Type gAMMA_TN4 optional, // not present if globalMask = 0 or tN4mask=0 or if timeslotMask = 0 + B1_Type tN5mask optional, // not present if globalMask = 0 or timeslotMask = 0 + B5_Type gAMMA_TN5 optional, // not present if globalMask = 0 or tN5mask=0 or if timeslotMask = 0 + B1_Type tN6mask optional, // not present if globalMask = 0 or timeslotMask = 0 + B5_Type gAMMA_TN6 optional, // not present if globalMask = 0 or tN6mask=0 or if timeslotMask = 0 + B1_Type tN7mask optional, // not present if globalMask = 0 or timeslotMask = 0 + B5_Type gAMMA_TN7 optional, // not present if tN7mask=0 or if timeslotMask = 0 + ULTBFAssignList_PSHO tbfAssignment +}; + +type record of ULTBFAssignStruct_PSHO ULTBFAssignList_PSHO; +type record ULTBFAssignStruct_PSHO { + B1_Type prefix, + ULTBFAssign_PSHO ul optional // only present if prefix = 1 +}; + +type record ULTBFAssign_PSHO { + B1_Type pfiMask, + B7_Type pFI optional, // not present if pfiMask = 0 + B1_Type rlcMode, + B5_Type ulTBFAssign, + B1_Type ccMask, + B2_Type chCodingCmd optional, // not present if ccMask = 0 + B1_Type eccMask, + B4_Type eGPRSChCodingCmd optional, // not present if eccMask = 0 + B1_Type windowMask, + EGPRSWindowSize eGPRSWindowSize optional, // not present if windowMask = 0 + B1_Type usfGranularity, + B1_Type tbfAllocMask, + bitstring tbfTimeslotAlloc length (1..8) optional, // not present if tbfAllocMask = 0 + B1_Type usfAllocMask, + B3_Type singleUSFAlloc, + USFAssignList_PSHO usfAlloc optional // not present if usfAllocMask = 0 + }; + +type record USFAssignStruct_PSHO { + B1_Type prefix, + B3_Type usfAlloc optional // only present if prefix = 1 +} + +type record of USFAssignStruct_PSHO USFAssignList_PSHO; + +type record of DLTBFAssignStruct_PSHO DLTBFAssignList_PSHO; +type record DLTBFAssignStruct_PSHO { + B1_Type prefix, + DLTBFAssign_PSHO ul optional // only present if prefix = 1 +}; + +type record DLTBFAssign_PSHO { + B8_Type timeslotAllocation, + B1_Type pfiMask, + B7_Type pFI optional, // not present if pfiMask = 0 + B1_Type rlcMode, + B5_Type dlTBFAssign, + B1_Type controlAck, + B1_Type windowMask, + EGPRSWindowSize eGPRSWindowSize optional // not present if windowMask = 0 +}; + +type union EGPRSMode { + EGPRSModeRR_UL ul, + EGPRSModeRR_DL dl +}; + +type record EGPRSModeRR_UL { + EGPRSMode_UL common, + CommonMode_UL ulMode +}; + +type record EGPRSMode_UL { + B1_Type windowMask, + EGPRSWindowSize eGPRSWindowSize optional, // not present if windowMask = 0 + B1_Type ccMask, + B4_Type chCodingCmd optional, // not present if ccMask = 0 @sic R5s120178 Baseline Moving sic@ + B1_Type bepMask, + B4_Type bepPeriod2 optional // not present if bepMask = 0 +}; + +type record EGPRSModeRR_DL { + B1_Type dlMask, + B1_Type mask1 optional, // not present if dlMask = 0 + B1_Type windowMask optional, // not present if dlMask = 0 or if mask1 = 0 + EGPRSWindowSize eGPRSWindowSize optional, // not present if dlMask or mask1 or windowMask = 0 + B2_Type linkQualityMeasMode optional, // not present if dlMask or mask1 = 0 + B1_Type bepMask optional, // not present if dlMask or mask1 = 0 + B4_Type bepPeriod2 optional, // not present if dlMask or mask1 or bepMask = 0 + DLTBFAssignList_PSHO dl optional // not present if dlMask = 0 +}; + +type record PSHO_RResource2 { // @sic R5s120178 sic@ + B1_Type hoMask, + B8_Type hoReference optional, // not present if hoMask = 0 + B10_Type arfcn, + B2_Type si, + B1_Type nci, + B6_Type bsic, + B1_Type ccnMask, + B1_Type ccnActive optional, // not present if ccnMask = 0 + B1_Type ccn3GMask, + B1_Type ccn3GActive optional, // not present if ccn3GMask = 0 + B1_Type ccnSupportMask, + CCN_SupportDescr ccnSupportDescr optional, // not present if ccnSupportMask = 0 + B2_Type freqMask, + FreqParam freqC1Params optional, // only present if freqMask = 01 + B1_Type freqC2Mask, + FreqParam freqC2Params optional, // only present if freqMask = 01 and freqC2Mask = 1 + DualCarrierFreqParam dualCarrierParams optional, // only present if freqMask = 10 + B2_Type networkCtrlOrder, + B1_Type taMask, + GlobalPacketTimingAdvance pktTA optional, // not present if taMask = 0 + B1_Type xtdTAMask, + B2_Type pktXtdTA optional, // not present if xtdTAMask = 0 + B1_Type rlcReset, + B2_Type ulEGPRSLevel, + B1_Type dlLevelMask, + B2_Type dlEGPRSLevel optional, // not present if dlLevelMask = 0 + B1_Type pulseMask, + PulseFormat pulseFormat optional, // not present if pulseMask = 0 + EGPRSModeRR2 egprsMode optional, // not present if gprsMask = 0 + B1_Type extnMask, + B6_Type extnLength optional, // not present if extnMask = 0 + B1_Type dlC1Mask optional, // not present if extnMask = 0 + B1_Type dlC1MTTIAssignment optional, // not present if extnMask = 0 or if dlC1Mask = 0 + B1_Type dlC2Mask optional, // not present if extnMask = 0 + B1_Type dlC2MTTIAssignment optional, // not present if extnMask = 0 or if dlC2Mask = 0 + B1_Type ulC1Mask optional, // not present if extnMask = 0 + B1_Type ulC1MTTIAssignment optional, // not present if extnMask = 0 or if ulC1Mask = 0 + B1_Type ulC2Mask optional, // not present if extnMask = 0 + B1_Type ulC2MTTIAssignment optional, // not present if extnMask = 0 or if ulC2Mask = 0 + B1_Type egprsPDAN3 optional // not present if extnMask = 0 @sic R5s130195 Baseline Moving sic@ +}; + +type record GlobalPacketTimingAdvance { + B1_Type valueMask, + B6_Type taValue optional, // not present if valueMask = 0 + B1_Type ulMask, + B4_Type ulTAIndex optional, // not present if ulMask = 0 + B3_Type ulTATimeslot optional, // not present if ulMask = 0 + B1_Type dlMask, + B4_Type dlTAIndex optional, // not present if dlMask = 0 + B3_Type dlTATimeslot optional // not present if dlMask = 0 +}; + +type record EGPRSModeRR2 {// @sic R5s120178 sic@ + B1_Type bepMask, + B4_Type bepPeriod2 optional, // not present if bepMask = 0 + B1_Type singleTBFMask, // set to 0 for single TBF, or 1 for multiple + B1_Type singleDLMask, // only present if singleTBFMask = 0 + EGPRSModeRR2_SingleDL singleDL optional, // only present if singleTBFMask = 0 and singleDLMask = 0 + B1_Type singleULMask, // only present if singleTBFMask = 0 + EGPRSModeRR2_SingleUL singleUL optional, // only present if singleTBFMask = 0 and singleULMask = 0 + B1_Type multipleDLMask, // only present if singleTBFMask = 1 + EGPRSModeRR2_MultipleDL multipleDL optional, // only present if singleTBFMask = 1 and multipleDLMask = 0 + B1_Type multipleULMask, // only present if singleTBFMask = 1 + EGPRSModeRR2_MultipleUL multipleUL optional // only present if singleTBFMask = 1 and multipleULMask = 0 +}; + +type record EGPRSModeRR2_SingleUL { // @sic R5s120178 sic@ + B4_Type chCodingCmd, + B1_Type resegment, + B1_Type windowMask, + EGPRSWindowSize eGPRSWindowSize optional, // not present if or windowMask = 0 + B2_Type egprsLevel, + B1_Type fanrMask, + B1_Type fanrEncodingMask optional, // not present if fanrMask = 0 + B8_Type allocC1 optional, // not present if fanrMask or fanrEncodingMask = 0 + B1_Type allocC2Mask optional, // not present if fanrMask or fanrEncodingMask = 0 + B8_Type allocC2 optional, // not present if fanrMask or fanrEncodingMask or allocC2Mask = 0 + B2_Type tsh optional, // not present if fanrMask or fanrEncodingMask = 0 + B1_Type bttiMask, + B1_Type rttiUSFMode optional, // not present if bttiMask = 0 + B1_Type pairsMask optional, // not present if bttiMask = 0 + PDCHPairsDescr pdchPairs optional, // only present if bttiMask or pairsMask = 0 + DynamicAlloc2 dynamicAlloc2, + B1_Type pfiMask, + B7_Type pfi optional, // not present if pfiMask = 0 + B1_Type rlcMode, + B1_Type npmMask, + B5_Type npmTransferTime optional, // not present if or npmMask = 0 + B1_Type pulseMask, + PulseFormat pulseFormat optional // not present if pulseMask = 0 +}; + +type record EGPRSModeRR2_MultipleUL { + B1_Type cccMask, + B4_Type chCodingCmd optional, // not present if cccMask = 0 + B1_Type resegment, + B1_Type windowMask, + EGPRSWindowSize eGPRSWindowSize optional, // not present if or windowMask = 0 + B1_Type xtdDynamicAlloc, + B1_Type poMask, + B4_Type poC1 optional, // not present if poMask = 0 + B1_Type prC1Mode optional, // not present if poMask = 0 + B1_Type poC2Mask optional, // not present if poMask = 0 + B4_Type poC2 optional, // not present if poMask or poC2Mask = 0 + B1_Type prC2Mode optional, // not present if poMask or poC2Mask = 0 + B1_Type fanrMask, + B1_Type encodeMask optional, // not present if fanrMask = 0 + B2_Type tsh optional, // not present if fanrMask or encodeMask = 0 + B1_Type bttiMask, + Timeslot2 globalTimeslot optional, // not present if bttiMask = 0 + BTTI_ULTBFAssignList btti optional, // not present if bttiMask = 0 + B1_Type rttiMask, + B1_Type pdchMask optional, // not present if rttiMask = 0 + PDCHPairs pdch optional, // not present if rttiMask = 0 or pdchMask = 0 + B3_Type nPairs optional, // not present if rttiMask = 0 + B1_Type pwrCtrlMask optional, // not present if rttiMask = 0 + B4_Type alphaC1 optional, // not present if rttiMask = 0 or pwrCtrlMask = 0 + B1_Type alphaC2Mask optional, // not present if rttiMask = 0 or pwrCtrlMask = 0 + B4_Type alphaC2 optional, // not present if rttiMask = 0 or pwrCtrlMask = 0 or alphaC2Mask = 0 + GammaList_PSHO gamma optional, // not present if rttiMask = 0 or pwrCtrlMask = 0 + B1_Type gamma2Mask optional, // not present if rttiMask = 0 or pwrCtrlMask = 0 + GammaList_PSHO gamma2 optional, // not present if rttiMask = 0 or pwrCtrlMask = 0 or gamma2Mask = 0 + RTTITBFList rttiTBF optional, // not present if rttiMask = 0 + B2_Type eGPRSLevel, + B1_Type pulseMask, + PulseFormat pulseFormat optional // not present if pulseMask = 0 +}; + +type record Gamma { + B1_Type gammaMask, + B5_Type gamma optional // not present if gammaMask = 0 +}; + +type record of Gamma GammaList_PSHO; + +type record GSMPriorityParams { + B3_Type geranPrior, + B4_Type threshPriorSearch, + B4_Type threshGSMLow, + B2_Type hPrior, + B2_Type tReselection +}; + +type record of RTTITBFStruct RTTITBFList; + +type record RTTITBFStruct { + B1_Type prefix, + B1_Type rttiUSFMode optional, // not present if prefix = 0 @sic R5s120178 Baseline Movind sic@ + RTTI_ULTBFAssign ulTBF optional // not present if prefix = 0 @sic R5s120178 Baseline Movind sic@ +}; + +type record Timeslot2 { + B1_Type timeslotMask, + B8_Type c1Timeslot optional, // not present if timeslotMask = 1 @sic R5s120178 Baseline Moving sic@ + B1_Type timeslotC2Mask, + B8_Type c2Timeslot optional, // not present if timeslotMask = 1 or if timeslotC2Mask = 0 @sic R5s120178 Baseline Moving sic@ + B4_Type alphaC1 optional, // not present if timeslotMask = 0 + B1_Type tN0C1mask optional, // not present if timeslotMask = 0 + B5_Type gAMMA_TN0C1 optional, // not present if tN0C1mask=0 or if timeslotMask = 0 + B1_Type tN1C1mask optional, // not present if timeslotMask = 0 + B5_Type gAMMA_TN1C1 optional, // not present if tN1C1mask=0 or if timeslotMask = 0 + B1_Type tN2C1mask optional, // not present if timeslotMask = 0 + B5_Type gAMMA_TN2C1 optional, // not present if tN2C1mask=0 or if timeslotMask = 0 + B1_Type tN3C1mask optional, // not present if timeslotMask = 0 + B5_Type gAMMA_TN3C1 optional, // not present if tN3C1mask=0 or if timeslotMask = 0 + B1_Type tN4C1mask optional, // not present if timeslotMask = 0 + B5_Type gAMMA_TN4C1 optional, // not present if tN4C1mask=0 or if timeslotMask = 0 + B1_Type tN5C1mask optional, // not present if timeslotMask = 0 + B5_Type gAMMA_TN5C1 optional, // not present if tN5C1mask=0 or if timeslotMask = 0 + B1_Type tN6C1mask optional, // not present if timeslotMask = 0 + B5_Type gAMMA_TN6C1 optional, // not present if tN6C1mask=0 or if timeslotMask = 0 + B1_Type tN7C1mask optional, // not present if timeslotMask = 0 + B5_Type gAMMA_TN7C1 optional, // not present if tN7C1mask=0 or if timeslotMask = 0 + B1_Type alphaC2Mask optional, // not present if timeslotMask = 0 + B4_Type alphaC2 optional, // not present if timeslotMask = 0 or if alphaC2Mask = 0 + B1_Type tN0C2mask optional, // not present if timeslotMask = 0 + B5_Type gAMMA_TN0C2 optional, // not present if tN0C2mask=0 or if timeslotMask = 0 + B1_Type tN1C2mask optional, // not present if timeslotMask = 0 + B5_Type gAMMA_TN1C2 optional, // not present if tN1C2mask=0 or if timeslotMask = 0 + B1_Type tN2C2mask optional, // not present if timeslotMask = 0 + B5_Type gAMMA_TN2C2 optional, // not present if tN2C2mask=0 or if timeslotMask = 0 + B1_Type tN3C2mask optional, // not present if timeslotMask = 0 + B5_Type gAMMA_TN3C2 optional, // not present if tN3C2mask=0 or if timeslotMask = 0 + B1_Type tN4C2mask optional, // not present if timeslotMask = 0 + B5_Type gAMMA_TN4C2 optional, // not present if tN4C2mask=0 or if timeslotMask = 0 + B1_Type tN5C2mask optional, // not present if timeslotMask = 0 + B5_Type gAMMA_TN5C2 optional, // not present if tN5C2mask=0 or if timeslotMask = 0 + B1_Type tN6C2mask optional, // not present if timeslotMask = 0 + B5_Type gAMMA_TN6C2 optional, // not present if tN6C2mask=0 or if timeslotMask = 0 + B1_Type tN7C2mask optional, // not present if timeslotMask = 0 + B5_Type gAMMA_TN7C2 optional // not present if tN7C2mask=0 or if timeslotMask = 0 +}; + +type record of BTTI_ULTBFAssignStruct BTTI_ULTBFAssignList; + +type record BTTI_ULTBFAssignStruct { + B1_Type prefix, + BTTI_ULTBFAssign ul optional // not present if prefix = 0 +}; + +type record BTTI_ULTBFAssign { + B1_Type pfiMask, + B7_Type pFI optional, // not present if pfiMask = 0 + B1_Type rlcMode, + B5_Type ulTBFAssign, + B1_Type eccMask, + B4_Type eGPRSChCodingCmd optional, // not present if eccMask = 0 + B1_Type windowMask, + EGPRSWindowSize eGPRSWindowSize optional, // not present if windowMask = 0 + B1_Type npmMask, + B5_Type npmTransferTime optional, // not present if npmMask = 0 + B1_Type reportMask, + B8_Type reportedTimeslotC1 optional, // not present if reportMask = 0 + B1_Type c2Mask optional, // not present if reportMask = 0 + B8_Type reportedTimeslotC2 optional, // not present if reportMask = 0 or if c2Mask = 0 + B1_Type usfGranularity, + B4_Type nTS, + B1_Type tbfAllocMask, + bitstring tbfTimeslotAlloc length (1..16) optional, // not present if tbfAllocMask = 0 + B1_Type usfAllocMask, + B3_Type usfC1 optional, // not present if usfAllocMask = 1 + B1_Type c2USFMask optional, // not present if usfAllocMask = 1 + B3_Type usfAllocC2 optional, // not present if usfAllocMask = 1 or if c2USFMask = 0 + B3_Type diffUSF optional, // not present if usfAllocMask = 0 + USFAssignList_PSHO usfAlloc optional // not present if usfAllocMask = 0 + }; + +type record RTTI_ULTBFAssign { + B1_Type pfiMask, + B7_Type pFI optional, // not present if pfiMask = 0 + B1_Type rlcMode, + B5_Type ulTBFAssign, + B1_Type eccMask, + B4_Type eGPRSChCodingCmd optional, // not present if eccMask = 0 + B1_Type windowMask, + EGPRSWindowSize eGPRSWindowSize optional, // not present if windowMask = 0 + B1_Type npmMask, + B5_Type npmTransferTime optional, // not present if npmMask = 0 + B1_Type reportMask, + B8_Type reportedTimeslotC1 optional, // not present if reportMask = 0 + B1_Type c2Mask optional, // not present if reportMask = 0 + B8_Type reportedTimeslotC2 optional, // not present if reportMask = 0 or if c2Mask = 0 + B1_Type usfGranularity, + B1_Type tbfAllocMask, + bitstring tbfTimeslotAlloc length (1..16) optional, // not present if tbfAllocMask = 0 + B1_Type usfAllocMask, + B3_Type usfC1 optional, // not present if usfAllocMask = 1 + B1_Type c2USFMask optional, // not present if usfAllocMask = 1 + B3_Type usfAllocC2 optional, // not present if usfAllocMask = 1 or if c2USFMask = 0 + B3_Type diffUSF optional, // not present if usfAllocMask = 0 + USFAssignList_PSHO usfAlloc optional, // not present if usfAllocMask = 0 + B1_Type usf2ndMask optional, // not present if usfAllocMask = 0 + B3_Type usf2 optional, // not present if usfAllocMask = 0 or usf2ndMask = 0 + USFAssignList_PSHO usf2Alloc optional // not present if usfAllocMask = 0 or usf2ndMask = 0 + }; + +type record PDCHPairs { + B1_Type singleCarrier, + B2_Type pdchMask, // value 11 is reserved + B8_Type dlPDCHC1 optional, // only present if pdchMask = 10 + B8_Type dlPDCHC2_d optional, // only present if singleCarrier = 1 and pdchMask = 10 + B8_Type ulPDCHC1 optional, // only present if pdchMask = 10 + B8_Type ulPDCHC2_d optional // only present if singleCarrier = 1 and pdchMask = 10 +}; + +type record EGPRSModeRR2_SingleDL { // @sic R5s120178 sic@ + B1_Type windowMask, + EGPRSWindowSize eGPRSWindowSize optional, // not present if or windowMask = 0 + B2_Type linkQualityMeasMode, + B2_Type egprsLevel, + B1_Type fanrMask, + B1_Type fanr optional, // not present if fanrMask = 0 + B1_Type bttiMask, + B8_Type allocC1 optional, // not present if bttiMask = 1 + B1_Type allocC2Mask optional, // not present if bttiMask = 1 + B8_Type allocC2 optional, // not present if allocC2Mask = 0 or if bttiMask = 1 + B1_Type singleCarrier optional, // not present if bttiMask = 0 + B2_Type pdchMask optional, // value 11 is reserved not present if bttiMask = 0 + B8_Type dlPDCHC1_s optional, // not present if bttiMask = 0, only present if singleCarrier = 0 and pdchMask = 10 + B8_Type ulPDCHC1_s optional, // not present if bttiMask = 0, only present if singleCarrier = 0 and pdchMask = 10 + B4_Type rTTIDLPDCHPair_sc optional, // not present if bttiMask = 0, only present if singleCarrier = 0 + B8_Type dlPDCHC1_d optional, // not present if bttiMask = 0, only present if singleCarrier = 1 and pdchMask = 10 + B8_Type dlPDCHC2_d optional, // not present if bttiMask = 0, only present if singleCarrier = 1 and pdchMask = 10 + B8_Type ulPDCHC1_d optional, // not present if bttiMask = 0, only present if singleCarrier = 1 and pdchMask = 10 + B8_Type ulPDCHC2_d optional, // not present if bttiMask = 0, only present if singleCarrier = 1 and pdchMask = 10 + B8_Type rTTIDLPDCHPair_dc optional, // not present if bttiMask = 0, only present if singleCarrier = 1 + B1_Type pfiMask, + B7_Type pfi optional, // not present if pfiMask = 0 + B5_Type dlTFIAssign, + B1_Type controlAck, + B1_Type npmMask, + B5_Type npmTransferTime optional // not present if or npmMask = 0 +}; + +type record EGPRSModeRR2_MultipleDL { // @sic R5s120178 sic@ + B1_Type windowMask, + EGPRSWindowSize eGPRSWindowSize optional, // not present if or windowMask = 0 + B2_Type linkQualityMeasMode, + B2_Type egprsLevel, + B1_Type bttiMask, + B1_Type fanr optional, // not present if bttiMask = 0 + BTTI_MultipleDLAssignList btti optional, // not present if bttiMask = 0 + B1_Type rttiMask, + B1_Type singleCarrier optional, // not present if rttiMask = 0 + B2_Type pdchMask optional, // value 11 is reserved not present if rttiMask = 0 + B8_Type dlPDCHC1 optional, // not present if rttiMask = 0, only present if pdchMask = 10 + B8_Type ulPDCHC1 optional, // not present if rttiMask = 0, only present if pdchMask = 10 + RTTI_MultipleDLAssign_SCList rTTIDLPDCHPair_sc optional, // not present if rttiMask = 0, only present if singleCarrier = 0 + B8_Type dlPDCHC2 optional, // not present if rttiMask = 0, only present if singleCarrier = 1 and pdchMask = 10 + B8_Type ulPDCHC2 optional, // not present if rttiMask = 0, only present if singleCarrier = 1 and pdchMask = 10 + RTTI_MultipleDLAssign_SCList rTTIDLPDCHPair_dc optional // not present if rttiMask = 0, only present if singleCarrier = 1 +}; + +type record of BTTI_MultipleDLAssignStruct BTTI_MultipleDLAssignList; + +type record BTTI_MultipleDLAssignStruct { + B1_Type prefix, + BTTI_MultipleDLAssign dl optional // not present if prefix = 0 +}; + +type record BTTI_MultipleDLAssign{ + B8_Type timeslotAllocC1, + B1_Type allocC2Mask, + B8_Type timeslotAllocC2 optional, // not present if allocC2Mask = 0 + B1_Type ulC1Mask, + B3_Type ulTimeslotC1 optional, // not present if ulC1Mask = 0 + B1_Type ulC2Mask, + B3_Type ulTimeslotC2 optional, // not present if ulC2Mask = 0 + DLTBFAssign2List dlTBF +}; + +type record of RTTI_MultipleDLAssign_SCStruct RTTI_MultipleDLAssign_SCList; + +type record RTTI_MultipleDLAssign_SCStruct { + B1_Type prefix, + RTTI_MultipleDLAssign_SC dl optional // not present if prefix = 0 +}; + +type record RTTI_MultipleDLAssign_SC{ + B4_Type rttiDLPairAssign, + B1_Type ulC1Mask, + B3_Type ulTimeslotC1 optional, // not present if ulC1Mask = 0 + DLTBFAssign2List dlTBF +}; + +type record of RTTI_MultipleDLAssign_DCStruct RTTI_MultipleDLAssign_DCList; + +type record RTTI_MultipleDLAssign_DCStruct { + B1_Type prefix, + RTTI_MultipleDLAssign_DC dl optional // not present if prefix = 0 +}; + +type record RTTI_MultipleDLAssign_DC{ + B8_Type rttiDLPairAssign, + B1_Type ulC1Mask, + B3_Type ulTimeslotC1 optional, // not present if ulC1Mask = 0 + B1_Type ulC2Mask, + B3_Type ulTimeslotC2 optional, // not present if ulC2Mask = 0 + DLTBFAssign2List dlTBF +}; + +type record of DLTBFAssign2Struct DLTBFAssign2List; + +type record DLTBFAssign2Struct { + B1_Type prefix, + DLTBFAssign2 dlTBF optional // not present if prefix = 0 +}; + +type record DLTBFAssign2 { // @sic R5s120178 Baseline Moving sic@ + B1_Type pfiMask, + B7_Type pfi optional, // not present if pfiMask = 0 + B1_Type rlcMode, + B1_Type ulC1Mask, + B3_Type ulTimeslotC1 optional, // not present if ulC1Mask = 0 + B1_Type ulC2Mask, + B3_Type ulTimeslotC2 optional, // not present if ulC2Mask = 0 + B5_Type dlTFIAssign, + B1_Type controlAck, + B1_Type npmMask, + B5_Type npmTransferTime optional, // not present if or npmMask = 0 + B1_Type eventBasedFANR, + B1_Type windowMask, + EGPRSWindowSize eGPRSWindowSize optional // not present if or windowMask = 0 +}; + +type record MeasCtrlParams { + B1_Type eutraMask, + B1_Type eutraMeasCtrl optional, // not present if eutraMask = 0 + B3_Type eutraFreq optional, // not present if eutraMask = 0 + RptdEUTRANFreqIndex rptdEutraFreq, // not present if eutraMask = 0 + B1_Type utraMask, + B1_Type utraMeasCtrl optional, // not present if utraMask = 0 + B5_Type utraFreq optional, // not present if utraMask = 0 + RptdUTRANFreqIndex rptdUTRAFreq optional // not present if utraMask = 0 +}; + +type record USFAssign { + B1_Type ask, + B3_Type sfAlloc optional //only present if mask = 1 +} + +type record USFAssignStruct { + B1_Type prefix, + USFAssign usfAlloc optional // only present if prefix = 1 +} + +type record of USFAssignStruct USFAssignList; + +// ============================================================================= +// Structured Type Definition +// 44.018 clause 10.5.2.25c +// ----------------------------------------------------------------------------- +type record MultiTBFAlloc { + B1_Type extdDynAlloc, + B1_Type poMask, + B4_Type po optional, // not present if poMask = 0 + B1_Type prMode optional, // not present if poMask = 0 + B1_Type tslotMask, + B1_Type timeSlotAllocMask optional, // not present if tslotMask = 0 + TimeSlotAllocation_UA timeSlotAlloc optional, // not present if tslotMask = 0 or timeSlotAllocMask=1 + B4_Type alpha optional, // not present if tslotMask = 0 or timeSlotAllocMask=0 + TimeSlotAllocationPowerControl timeSlotAllocPowerControl optional, // not present if tslotMask = 0 or timeSlotAllocMask=0 + USFAssignList ulTBFAssign optional // not present if tslotMask = 0 +}; + +// ============================================================================= +// Structured Type Definition +// multislot allocation +// 3GPP TS 44.018 clause 10.5.2.21b +// ----------------------------------------------------------------------------- +type record MultislotAlloc { + IEI8_Type iei, // IEI @sic R5s110420 sic@ + O1_Type iel, // OCTETSTRING [1] @sic R5s110420 sic@ + B1_Type ext1, + B1_Type da7, // down link time slot allocation bit + B1_Type da6, // down link time slot allocation bit + B1_Type da5, // down link time slot allocation bit + B1_Type da4, // down link time slot allocation bit + B1_Type da3, // down link time slot allocation bit + B1_Type da2, // down link time slot allocation bit + B1_Type da1, // down link time slot allocation bit + B1_Type ext2, // always = 1 + B1_Type ua7, // uplink link time slot allocation bit + B1_Type ua6, // uplink link time slot allocation bit + B1_Type ua5, // uplink link time slot allocation bit + B1_Type ua4, // uplink link time slot allocation bit + B1_Type ua3, // uplink link time slot allocation bit + B1_Type ua2, // uplink link time slot allocation bit + B1_Type ua1, // uplink link time slot allocation bit + O1_Type channelset1 optional, // channel set 1 + O1_Type channelset2 optional, // channel set 2 + O1_Type channelset3 optional, // channel set 3 + O1_Type channelset4 optional, // channel set 4 + O1_Type channelset5 optional, // channel set 5 + O1_Type channelset6 optional, // channel set 6 + O1_Type channelset7 optional, // channel set 7 + O1_Type channelset8 optional // channel set 8 +}; + +//============================================================================= +//Structured Type Definition +//Reference: 3GPP TS 44.060 clause 11.2.9b +//----------------------------------------------------------------------------------------------------------------------------------------- +type record NeighCellDescr3G_PMO { + B1_Type indexMask, + B7_Type indexStart3G optional, // not present if indexMask = 0 + B1_Type absoluteIndexMask, + B7_Type absoluteIndexStartEMR optional, // not present if absoluteIndexMask = 0 + B1_Type fDDMask, + UTRAN_FDD_Descr uTRAN_FDD_Description optional, // not present if fDDMask = 0 + B1_Type tDDMask, + UTRAN_TDD_Descr_PMO uTRAN_TDD_Description optional, // not present if tDDMask = 0 + B1_Type cdmaMask, + CDMA2000Descr cdma2000Descr optional, // not present if cdmaMask = 0 + B1_Type rem3GCellMask, + Removed3GCell_Descr rem3GCellDescr optional // not present if rem3GCellMask = 0 +}; + +// ============================================================================= +// Structured Type Definition +// paging request type 1 rest octets. +// 3GPP TS 44.018 clause 10.5.2.23 +// total length is 0..17 octets +// ----------------------------------------------------------------------------- +type record P1RO { + LH_B1_Type nlnMask, + B2_Type nLN_PCH optional, // not present if nlnMask = L + B1_Type nLN_Status optional, // not present if nlnMask = L + LH_B1_Type priority1Mask, + B3_Type priority1 optional, // not present if priority1Mask = L + LH_B1_Type priority2Mask, + B3_Type priority2 optional, // not present if priority2Mask = L + LH_B1_Type groupCallMask optional, + GroupCallInfo groupCallInfo optional, // not present if groupCallMask = L + LH_B1_Type packetPageInd1, + LH_B1_Type packetPageInd2, + LH_B1_Type r6Mask, + B1_Type mask1 optional, // not present if r6Mask = L + B2_Type cellMask optional, // not present if r6Mask = L or mask1 = 0 + B2_Type cellGlobalCount optional, // not present if r6Mask = L or mask1 = 0 or cellMask = 01 + bitstring reducedGCR length (28) optional, // not present if r6Mask = L or mask1 = 0 or if cellMask = 00 or 01 + B36_Type vSTKRand optional, // not present if r6Mask = L or mask1 = 0 or cellMask = 00 + B1_Type mBMSMask optional, // not present if r6Mask = L + B1_Type note1Mask optional, // not present if r6Mask = L or mBMSMask = 0 + MBMSChParams mBMSNote1 optional, // not present if r6Mask = L or mBMSMask or note1Mask = 0 + B1_Type note2Mask optional, // not present if r6Mask = L or mBMSMask = 0 + B1_Type mBMSNote2Mask optional, // not present if r6Mask = L or mBMSMask = 0 + MBMSChParams mBMSNote2 optional, // not present if r6Mask = L or mBMSMask or note2Mask or mBMSNote2Mask = 0 + B1_Type infoMask optional, // not present if r6Mask = L or mBMSMask = 0 + MBMSInfo mBMSInfo optional, // not present if r6Mask = L or mBMSMask or infoMask = 0 + LH_B1_Type r7Mask, + B1_Type amrMask optional, // not present if r7Mask = L + B4_Type amrConfig optional, // not present if r7Mask = L or amrMask = 0 + LH_B1_Type r8Mask, + B1_Type priorityULAccess optional, // not present if r8Mask = L + B1_Type etwsMask optional, // not present if r8Mask = L @sic R5s100135 sic@ + B1_Type segmentMask optional, // not present if r8Mask = L or etwsMask = 0 @sic R5s100135 sic@ + B4_Type numSegments optional, // not present if r8Mask = L or etwsMask = 0 always present regardless of value of segment mask @sic R5s100135 sic@ + B1_Type pniBit optional, // not present if r8Mask = L or etwsMask = 0 @sic R5s100135 sic@ + B7_Type lengthofSegment optional, // not present if r8Mask = L or etwsMask = 0 @sic R5s100135 sic@ + bitstring etwsPrimaryNotificationData optional, // not present if r8Mask = L or etwsMask = 0 @sic R5s100135 sic@ + LH_B1_Type r10Mask, // @sic R5s110178 Baseline Moving sic@ + B1_Type implicitRejectCS optional, // not present if r10Mask = L @sic R5s110178 Baseline Moving sic@ + B1_Type implicitRejectPS optional, // not present if r10Mask = L @sic R5s110178 Baseline Moving sic@ + LH_B1_Type r11Mask, // @sic R5s130195 Baseline Moving sic@ + B1_Type ipaSupport optional // not present if r11Mask = L @sic R5s130195 Baseline Moving sic@ +}; + +type record MBMSChParams { + B1_Type countMask, + B1_Type offMask optional, // only present if countMask = 0 + B1_Type freqMask optional, // only present if offMask = 1 + FreqParam freqParams optional, // only present if offMask and freqMask = 1 + B8_Type dlTimeslotAlloc optional, // only present if offMask = 1 + RptdMBMSSessionParams sessionParams optional, // only present if offMask = 1 + B1_Type mprachMask optional, // only present if countMask = 1 + B1_Type mpFreqMask optional, // only present if mprachMask = 1 + FreqParam mpFreqParams optional, // only present if mprachMask and mpFreqMask = 1 + B3_Type mpTimeslotNum optional, // only present if mprachMask = 1 + B3_Type usf optional, // only present if mprachMask = 1 + B1_Type mpCtrlMask optional, // only present if mprachMask = 1 + MPRACHDescr mprach optional // only present if mprachMask and mpCtrlMask = 1 +}; + +type record MBMSInfo { + MBMSSessionsList preNoteSession, + B1_Type mask1, + B1_Type note1Or2 optional, // not present if mask1 =0. value of 0= same Channel Params at Notification1, value of 1= same Channel Params at Notification2 + MBMSSessionsList session1 optional, // not present if mask1 = 0 + RptdMBMSChNote specificParams +}; + +type record MPRACHDescr { + B1_Type accMask, + B16_Type accContrClass optional, // not present if accMask = 0 + B1_Type retransMask, + B2_Type maxRetrans optional, // not present if retransMask = 0 + B4_Type s, + B1_Type intMask, + B4_Type txInt optional, // not present if intMask = 0 + B1_Type levelMask, + B4_Type persistenceLevel optional // not present if levelMask = 0 +}; + + +type record RptdMBMSChNote { + B1_Type prefix, + MBMSChNoteList list optional // only present if prefix = 1 +}; + +type record of MBMSChNote MBMSChNoteList; + +type record MBMSChNote { + MBMSChParams chParams, + MBMSSessionsList session +}; + +type record MBMSSessionsDescr { + B1_Type prefix, + MBMSSession session optional // only present if prefix = 1 +}; + +type record of MBMSSessionsDescr MBMSSessionsList; + +type record MBMSSession { + TMGI tmgi, + B1_Type mask, + B8_Type id optional // only present if mask = 1 +}; + +type record RptdMBMSSessionParams { + B1_Type prefix, + MBMSSessionParamList list optional // only present if prefix = 1 +}; + +type record of MBMSSessionParams MBMSSessionParamList; + +type record MBMSSessionParams { + B3_Type idLength, + bitstring id length (1..5), + B8_Type sessionDuration, + B1_Type timeMask, + B16_Type startingTime optional, //not present if timeMask = 0 + B1_Type windowMask, + EGPRSWindowSize eGPRSWindowSize optional, // not present if windowMask = 0 + B1_Type npmMask, + B5_Type npmTransferTime optional // not present if npmMask = 0 +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.018 clause 10.5.2.25a +// ----------------------------------------------------------------------------- +type record PacketChDescr { + B5_Type chType, // channel type + B3_Type tN, // time slot + B3_Type tSC, // training sequence code + B1_Type maskBit1, + B1_Type maskBit2 optional, // not present if maskBit1 = 1. + B1_Type spareBit1 optional, // not present if maskBit1 = 1 or maskBit2 = 1 + B10_Type aRFCN optional, // not present if maskBit1 = 1 or maskBit2 = 1 + B1_Type spareBit optional, // not present if maskBit1 = 1 or maskBit2 = 0 + B6_Type mAIO optional, // not present if maskBit1 = 1 or maskBit2 = 0 + B1_Type mA_NumberInd optional, + B1_Type maskBit3 optional, + B2_Type spareBits optional, // not present if maskBit1 = 1 or maskBit2 = 0 or maskBit3 = 1 + B2_Type cHANGE_MARK_1 optional, // not present if maskBit1 = 1 or maskBit2 = 0 or maskBit3 = 0 + B6_Type mIAO optional, // not present if maskBit1 = 0 + B6_Type hSN optional // not present if maskBit1 = 0 +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.018 clause 10.5.2.16 +// ----------------------------------------------------------------------------- +type record PacketDownlinkAssign { + O4_Type tLLI, // TLLI + B1_Type mask, + B5_Type tFI_Assignment optional, // temporary flow identifier not present if mask = 0 + B1_Type rLC_Mode optional, // RLC mode not present if mask = 0 + B1_Type alphaMask optional, // not present if mask = 0. + B4_Type aLPHA optional, // not present if mask = 0 or alphaMask = 0 + B5_Type gAMMA optional, // not present if mask = 0 + B1_Type pOLLING optional, // not present if mask = 0 + B1_Type tA_VALID optional, // not present if mask = 0 + B1_Type taIndexMask, + B4_Type tIMING_ADVANCE_INDEX optional, // not present if mask = 0 or taIndexMask = 0 + B1_Type startingTimeMask, // not present if mask = 0 + B16_Type tBF_STARTING_TIME optional, // not present if mask = 0 or startingTimeMask = 0 + B1_Type pwrCtrlMask, // not present if mask = 0 + B4_Type p0 optional, // not present if mask = 0 or pwrCtrlMask = 0 + B1_Type spareBit optional, // not present if mask = 0 or pwrCtrlMask = 0 Set to 0 + B1_Type pR_MODE optional, // not present if mask = 0 or pwrCtrlMask = 0 + LH_B1_Type egprsMask optional, + EGPRSWindowSize eGPRSWindowSize optional, // not present if egprsMask = L + B2_Type linkQualityMeasMode optional, // not present if egprsMask = L + B1_Type bepPriod2Mask optional, // not present if egprsMask = L + B4_Type BepPeriod2 optional, // not present if egprsMask = L or bepPriod2Mask = 0 + LH_B1_Type r6Mask, + B1_Type pfiMask optional, // not present if egprsMask = L or r6Mask = L + B7_Type pFI optional, // not present if egprsMask = L, r6Mask = L or pfiMask = 0 + LH_B1_Type r7Mask, + B1_Type npmMask optional, // not present if r7Mask = L + B5_Type npmTransferTime optional, // not present if r7Mask = L + B1_Type bTTIMask optional, // not present if r7Mask = L + B1_Type fanrMask optional, // not present if r7Mask = L or bTTIMask = 0 + B1_Type eventBasedFANR optional, // not present if r7Mask = L (present for both values of bTTIMask) + B3_Type pdchPairInd optional, // not present if r7Mask = L or bTTIMask = 0 + B2_Type dlEGPRSLevel optional // not present if r7Mask = L +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS clause 12.11 +// ----------------------------------------------------------------------------- +type record PacketRequestReference { + B11_Type randomAccessInfo, + RFN frameNumber +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.060 clause 12.12 +// ----------------------------------------------------------------------------- +type record PacketTimingAdvance { + B1_Type taValueMask, + B6_Type timingAdvanceValue optional, // not present if taValueMask = 0 + B1_Type taIndexMask, + B4_Type timingAdvanceIndex optional, // not present if taIndexMask = 0 + B3_Type timingAdvanceSlotNumber optional // not present if taIndexMask = 0 +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.018 clause 10.5.2.16 +// ----------------------------------------------------------------------------- +type record PacketUplinkAssign { + B1_Type allocMask, // 0 -> indicating single block allocation + B5_Type tFI_Assignment optional, // temporary flow identifier not present if allocMask = 0 + B1_Type pOLLING optional, // not present if allocMask = 0 + B1_Type spareBit optional, // not present if allocMask = 0. Set to 0 + B3_Type uSF optional, // not present if allocMask = 0 + B1_Type uSFGranularity optional, // not present if allocMask = 0 + B1_Type p0Mask optional, // not present if allocMask = 0 + B4_Type p0 optional, // not present if allocMask = 0 or p0Mask = 0 + B1_Type pR_MODE optional, // not present if allocMask = 0 or p0Mask = 0 + B2_Type ChannelCodingCommand optional, // not present if allocMask = 0 + B1_Type tLLI_BlockChannelCodeing optional, // not present if allocMask = 0 + B1_Type alphaMask optional, // not present if allocMask = 0 + B4_Type aLPHA optional, // not present if allocMask = 0 or alphaMask = 0 + B5_Type gMMA optional, // not present if allocMask = 0 + B1_Type taMask optional, // not present if allocMask = 0 + B4_Type tIMING_ADVANCE_INDEX optional, // not present if allocMask = 0 or taMask = 0 + B1_Type startingTimeMask optional, // not present if allocMask = 0 + B16_Type tBF_STARTING_TIME optional, // not present if allocMask = 0 or startingTimeMask = 0 + B1_Type alpha1Mask optional, // present if allocMask = 0 single block allocation + B4_Type aLPHA1 optional, // not present if allocMask = 1 or alpha1Mask = 0 + B5_Type gMMA1 optional, // not present if allocMask = 1 + B2_Type prefixBits optional, // not present if allocMask = 1 the value is 01 if present + B16_Type tBF_STARTING_TIME1 optional, // not present if allocMask = 1 + LH_B1_Type p02Mask optional, // not present if allocMask = 1 + B4_Type p02 optional, // not present if allocMask = 1 or p02Mask = L + B1_Type spareBit2 optional, // not present if allocMask = 1 or p02Mask = L Set to 0 + B1_Type pR_MODE2 optional, // not present if allocMask = 1 or p02Mask = L + LH_B1_Type r99Mask optional, + B1_Type extRAMask optional, // not present if r99Mask = L + B5_Type extRA optional, // not present if r99Mask = L or extRAMask = 0 + LH_B1_Type r6Mask optional, // not present if r99Mask = L + B1_Type pfiMask optional, // not present if r99Mask = L or r6Mask = L + B7_Type pFI optional // not present if r99Mask = L, r6Mask = L or pfiMask = 0 +}; + +// ============================================================================= +// Structured Type Definition +// Page mode +// 3GPP TS 44.018 clause 10.5.2.26 +// ----------------------------------------------------------------------------- +type record PageModeIE { + B4_Type iei optional, + B2_Type sprb, // spare bits + B2_Type pgm // page mode +}; + +// ============================================================================= +// Structured Type Definition +// Power command and access type +// 3GPP TS 44.018 clause 10.5.2.28a +// ----------------------------------------------------------------------------- +type record PowerCmdAccessType { + B8_Type iei optional, // information element identifier + B1_Type accessType, // access type + B1_Type spareBit, // spare bit + B1_Type fpc, // fast measurement reporting and power control + B5_Type powerLevel // power level (0-31) +}; + +// ============================================================================= +// Structured Type Definition +// Power command +// 3GPP TS 44.018 clause 10.5.2.28 +// ----------------------------------------------------------------------------- +type record PowerCommand { + B8_Type iei optional, // information element identifier + B2_Type spareBits, // spare bits + B1_Type fpc, // fast measurement reporting and power control + B5_Type powerLevel // power level (0-31) +}; + +// ============================================================================= +// Structured Type Definition +// Power control parameters +// 3GPP TS 44.018 clause 12.13 +// ----------------------------------------------------------------------------- +type record PowerControlParam { + B4_Type aLPHA, + B1_Type gmmaMask0, + B5_Type gMMA_TN0 optional, // not present if gmmaMask0 = 0 + B1_Type gmmaMask1, + B5_Type gMMA_TN1 optional, // not present if gmmaMask1 = 0 + B1_Type gmmaMask2, + B5_Type gMMA_TN2 optional, // not present if gmmaMask2 = 0 + B1_Type gmmaMask3, + B5_Type gMMA_TN3 optional, // not present if gmmaMask3 = 0 + B1_Type gmmaMask4, + B5_Type gMMA_TN4 optional, // not present if gmmaMask4 = 0 + B1_Type gmmaMask5, + B5_Type gMMA_TN5 optional, // not present if gmmaMask5 = 0 + B1_Type gmmaMask6, + B5_Type gMMA_TN6 optional, // not present if gmmaMask6 = 0 + B1_Type gmmaMask7, + B5_Type gMMA_TN7 optional // not present if gmmaMask7 = 0 +}; + +// ============================================================================= +// Structured Type Definition +// PS Cause +// 3GPP TS 44.018 clause 10.5.2.67 +// ----------------------------------------------------------------------------- +type record PS_Cause { + B4_Type iei, //'1001' + B4_Type cause +}; + +// ============================================================================= +// Structured Type Definition +// ----------------------------------------------------------------------------- +type record RRDynamicAllocation { + B1_Type extendedAlloc, // 0 - dynamic allocation; 1 - extended dynamic allocation + B1_Type mask, + B4_Type po optional, // not present if mask = 0 + B1_Type prMode optional, // not present if mask = 0 + B1_Type uSFGranularity, // 0 - one block; 1 - four blocks + B1_Type mask2, + B5_Type ulTFIAssign optional, // not present if mask2 = 0 + B1_Type spareBit, // value = 0 + B1_Type maskTimeslot, // 0 - no power control, 1 - with power control + B4_Type alpha optional, // not present if maskTimeslot = 0 + B1_Type tN0 optional, // 1 - time slot 0 is allocated; 0 -- not allocated + B3_Type uSF_TN0 optional, // USF value for slot 0 + B5_Type gamma_TN0 optional, // GAMMA for slot 0. Not present if maskTimeslot = 0 + B1_Type tN1 optional, // 1 - time slot 1 is allocated; 0 -- not allocated + B3_Type uSF_TN1 optional, // USF value for slot 1 + B5_Type gamma_TN1 optional, // GAMMA for slot 1. Not present if maskTimeslot = 0 + B1_Type tN2 optional, // 1 - time slot 2 is allocated; 0 -- not allocated + B3_Type uSF_TN2 optional, // USF value for slot 2 + B5_Type gamma_TN2 optional, // GAMMA for slot 2. Not present if maskTimeslot = 0 + B1_Type tN3 optional, // 1 - time slot 3 is allocated; 0 -- not allocated + B3_Type uSF_TN3 optional, // USF value for slot 3 + B5_Type gamma_TN3 optional, // GAMMA for slot 3. Not present if maskTimeslot = 0 + B1_Type tN4 optional, // 1 - time slot 4 is allocated; 0 -- not allocated + B3_Type uSF_TN4 optional, // USF value for slot 4 + B5_Type gamma_TN4 optional, // GAMMA for slot 4. Not present if maskTimeslot = 0 + B1_Type tN5 optional, // 1 - time slot 5 is allocated; 0 -- not allocated + B3_Type uSF_TN5 optional, // 1 value for slot 5 + B5_Type gamma_TN5 optional, // GAMMA for slot 5. Not present if maskTimeslot = 0 + B1_Type tN6 optional, // 1 - time slot 6 is allocated; 0 -- not allocated + B3_Type uSF_TN6 optional, // USF value for slot 6 + B5_Type gamma_TN6 optional, // GAMMA for slot 6. Not present if maskTimeslot = 0 + B1_Type tN7 optional, // 1 - time slot 7 is allocated; 0 -- not allocated + B3_Type uSF_TN7 optional, // USF value for slot 7 + B5_Type gamma_TN7 optional // GAMMA for slot 7. Not present if maskTimeslot = 0 +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP 44.018 10.5.2.25d +// ----------------------------------------------------------------------------- +type record RRPacketDownlinkAssignment { + B8_Type tag, // '00100011' @sic R5s110420 sic@ + O1_Type ielength, // @sic R5s110420 sic@ + B2_Type mACMode, + B1_Type rLCMode, + B8_Type timeslotAllocation, + PacketTimingAdvance pktTA, + B1_Type mask, + B4_Type p0 optional, // not present if mask=0 + B1_Type spareBit optional, // set to 0. not present if mask=0 + B1_Type prMode optional, // not present if mask=0 + B1_Type pcmask, + PowerControlParam powerCntrolParam optional, // not present if pcmask = 0 + B1_Type tfimask, + B5_Type dlTFI optional, // not present if tfimask = 0 + B1_Type spareBit2, // set to 0 + B1_Type egprsmask, + EGPRSWindowSize eGPRSWindowSize optional, // not present if egprsmask = 0 + B2_Type linkQualMeasMode optional, // not present if egprsmask = 0 + B1_Type tamask, + B2_Type pktExtendedTA optional, // not present if tamask = 0 + B1_Type r6Mask optional, + MultiDLTBFAssignStruct multiDLTBFAssign optional, // not present if r6Mask = 0 + B1_Type r7Mask optional, // not present if r6Mask = 0 + B1_Type fanr optional, // not present if r6Mask or r7Mask = 0 + RptdNPM_dl rptdNPM optional, // not present if r6Mask or r7Mask = 0 @sic R5s100135 sic@ + B2_Type eGPRSLevel optional, // not present if r6Mask or r7Mask = 0 @sic R5s100135 sic@ + B1_Type r8Mask optional, // not present if r6Mask or r7Mask = 0 + B1_Type eutranMask optional, // not present if r6Mask or r7Mask = 0 or r8Mask = 0 + RptdEUTRANMeasCtrl eutranMeasCtrl optional, // not present if r6Mask or r7Mask or r8Mask or eutranMask= 0 + B1_Type utranMask optional, // not present if r6Mask or r7Mask = 0 or r8Mask = 0 + RptdUTRANMeasCtrl utranMeasCtrl optional, // not present if r6Mask or r7Mask or r8Mask or utranMask= 0 + B1_Type r9Mask optional, // not present if r6Mask or r7Mask = 0 or r8Mask = 0 @sic R5s110176 sic@ + B1_Type emstMask optional, // not present if r6Mask, r7Mask, r8Mask or r9Mask = 0 @sic R5s110176 sic@ + RLCEntity rlcEntity2 optional, // not present if r6Mask, r7Mask, r8Mask or r9Mask = 0 or emstMask = 0 @sic R5s110176 sic@ + B1_Type entity3Mask optional, // not present if r6Mask, r7Mask, r8Mask or r9Mask = 0 or emstMask = 0 @sic R5s110176 sic@ + RLCEntity rlcEntity3 optional, // not present if r6Mask, r7Mask, r8Mask or r9Mask = 0 or emstMask = 0 or entity3Mask = 0 @sic R5s110176 sic@ + B1_Type r10Mask optional, // not present if r6mask, r7Mask, r8Mask or r9Mask = 0 @sic R5s120178 sic@ + RptdAddPFC emsrAddPFC1 optional, // not present if r6mask, r7Mask, r8Mask, r9Mask or r10Mask = 0 @sic R5s120178 sic@ + RptdAddPFC emsrAddPFC2 optional, // not present if r6mask, r7Mask, r8Mask, r9Mask or r10Mask = 0 @sic R5s120178 sic@ + RptdAddPFC emsrAddPFC3 optional // not present if r6mask, r7Mask, r8Mask, r9Mask or r10Mask = 0 @sic R5s120178 sic@ +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP 44.018 10.5.2.25e +// ----------------------------------------------------------------------------- +type record RRPacketDownlinkAssignment2 { + B8_Type tag, // @sic R5s110420 sic@ + O1_Type ielength, // @sic R5s110420 sic@ + B1_Type rLCMode, + B1_Type pwrCtrlC1Mask, + B4_Type p0C1 optional, // only present if pwrCtrlC1Mask = 1 + B1_Type pR_ModeC1 optional, // only present if pwrCtrlC1Mask = 1 + B1_Type pwrCtrlC2Mask, + B4_Type p0C2 optional, // only present if pwrCtrlC2Mask = 1 + B1_Type pR_ModeC2 optional, // only present if pwrCtrlC2Mask = 1 + B1_Type pwrParamsC1Mask, + PowerControlParam pwrCtrlParamsC1 optional, // only present if pwrParamsC1Mask = 1 + B1_Type pwrParamsC2Mask, + PowerControlParam pwrCtrlParamsC2 optional, // only present if pwrParamsC2Mask = 1 + B1_Type dlTFIMask, + B5_Type dlTFIAssign optional, // only present if dlTFIMask =1 + EGPRSWindowSize eGPRSWindowSize, + B2_Type linkQualMeasMode, + B1_Type bTTIMask, + B1_Type fanr optional, // only present if bTTIMask = 0 + B1_Type ulCtrlTimeslotMask optional, // only present if bTTIMask = 0 + B3_Type ulCtrlTimeslot optional, // only present if bTTIMask = 0 and ulCtrlTimeslotMask = 1 + B1_Type tnAllocC1Mask optional, // only present if bTTIMask = 0 + B8_Type timeslotAllocC1 optional, // only present if bTTIMask = 0 and tnAllocC1Mask = 1 + B1_Type tnAllocC2Mask optional, // only present if bTTIMask = 0 + B8_Type timeslotAllocC2 optional, // only present if bTTIMask = 0 and tnAllocC2Mask = 1 + DLTBFAssign2_RRList dlTBFAssign optional, // only present if bTTIMask = 0 + B1_Type singleCarrier optional, // only present if bTTIMask = 1 + B2_Type pdchMask optional, // only present if bTTIMask = 1 value 11 is reserved + B8_Type dlPDCHC1_s optional, // only present if bTTIMask = 1, singleCarrier = 0 and pdchMask = 10 + B8_Type ulPDCHC1_s optional, // only present if bTTIMask = 1, singleCarrier = 0 and pdchMask = 10 + RTTIPair_SCList rTTIDLPDCHPair_sc optional, // only present if bTTIMask = 1 and singleCarrier = 0 + B2_Type dualCarrierMask optional, // only present if bTTIMask = 1 and singleCarrier = 1 + B8_Type dlPDCHC1_d optional, // only present if bTTIMask = 1, singleCarrier = 1 and dualCarrierMask = 10 + B8_Type dlPDCHC2_d optional, // only present if bTTIMask = 1, singleCarrier = 1 and dualCarrierMask = 10 + B8_Type ulPDCHC1_d optional, // only present if bTTIMask = 1, singleCarrier = 1 and dualCarrierMask = 10 + B8_Type ulPDCHC2_d optional, // only present if bTTIMask = 1, singleCarrier = 1 and dualCarrierMask = 10 + RTTIPair_DCList rTTIDLPDCHPair_dc optional, // only present if bTTIMask = 1 and singleCarrier = 1 + B2_Type eGPRSLevel, + B1_Type r8Mask, + B1_Type eutranMask optional, // not present if r8Mask = 0 + RptdEUTRANMeasCtrl eutranMeasCtrl optional, // not present if r8Mask = 0 or eutranMask = 0 + B1_Type utranMask optional, // not present if r8Mask = 0 + RptdUTRANMeasCtrl utranMeasCtrl optional, // not present if r8Mask = 0 or utranMask= 0 + B1_Type r9Mask optional, // not present if r8Mask = 0 + B1_Type emstMask optional, // not present if r8Mask = 0 or r9Mask = 0 + RLCEntity rlcEntity2 optional, // not present if r8Mask = 0 or r9Mask = 0 or emstMask = 0 + B1_Type entity3Mask optional, // not present if r8Mask = 0 or r9Mask = 0 or emstMask = 0 + RLCEntity rlcEntity3 optional, // not present if r8Mask = 0 or r9Mask = 0 or emstMask = 0 or entity3Mask = 0 + B1_Type r10Mask optional, // not present if r8Mask or r9Mask = 0 @sic R5s120178 sic@ + RptdAddPFC emsrAddPFC1 optional, // not present if r8Mask, r9Mask or r10Mask = 0 @sic R5s120178 sic@ + RptdAddPFC emsrAddPFC2 optional, // not present if r8Mask, r9Mask or r10Mask = 0 @sic R5s120178 sic@ + RptdAddPFC emsrAddPFC3 optional, // not present if r8Mask, r9Mask or r10Mask = 0 @sic R5s120178 sic@ + B1_Type r11Mask optional, // not present if r8Mask, r9Mask or r10Mask = 0 @sic R5s130195 Baseline Moving sic@ + B1_Type egprsPDAN3 optional // not present if r8Mask, r9Mask, r10Mask or r11Mask = 0 @sic R5s130195 Baseline Moving sic@ +}; + +type record of RTTIPair_SCStruct RTTIPair_SCList; +type record RTTIPair_SCStruct { + B1_Type prefix, + RTTIPair_SC sc optional // not present if prefix = 0 +}; + +type record RTTIPair_SC { + B4_Type rTTIDLPDCHPair_sc, + DLTBFAssign2_RRList tbfAssign +}; + +type record of RTTIPair_DCStruct RTTIPair_DCList; +type record RTTIPair_DCStruct { + B1_Type prefix, + RTTIPair_DC dc optional // not present if prefix = 0 +}; + +type record RTTIPair_DC { + B8_Type rTTIDLPDCHPair_dc, + DLTBFAssign2_RRList tbfAssign +}; + +type record of DLTBFAssign2_RRStruct DLTBFAssign2_RRList; +type record DLTBFAssign2_RRStruct { + B1_Type prefix, + DLTBFAssign2_RR dlTBF optional // not present if prefix = 0 +}; + +type record DLTBFAssign2_RR { + B7_Type pFI, + B1_Type rlcMode, + B5_Type tbfAssign, + B1_Type ctrlAck, + B1_Type npmMask, + B5_Type npmTransferTime optional, // not present if npmMask = 0 + B1_Type eventBasedFANR, + B1_Type windowMask, + EGPRSWindowSize windowSize optional // only present if windowMask = 1 +}; + +type record RptdNPM_ul { // @sic R5s100135 sic@ + B1_Type prefix, + NPMList_ul list optional // only present if prefix = 1 +}; + +type record of NPMStruct_ul NPMList_ul; // @sic R5s100135 sic@ + +type record NPMStruct_ul { // @sic R5s100135 sic@ + B1_Type npmMask, + B5_Type npmTransferTime optional, // not present if npmMask + B1_Type endingRepetition // @sic R5s100135 sic@ +}; + +type record RptdNPM_dl { // @sic R5s100135 sic@ + B1_Type prefix, + NPMList_dl list optional // only present if prefix = 1 +}; + +type record of NPMStruct_dl NPMList_dl; // @sic R5s100135 sic@ + +type record NPMStruct_dl { // @sic R5s100135 sic@ + B1_Type npmMask, + B5_Type npmTransferTime optional, // not present if npmMask + B1_Type eventBasedFANR, + B1_Type endingRepetition // @sic R5s100135 sic@ +}; + +type record RptdEUTRANMeasCtrl { + B1_Type prefix, + EUTRANMeasCtrlList list optional // only present if prefix = 1 +}; + +type record of EUTRANMeasCtrl EUTRANMeasCtrlList; + +type record EUTRANMeasCtrl { + B1_Type measCtrl, + B3_Type freq, + RptdUTRANFreqIndex rptdFreq +}; + +type record RptdUTRANMeasCtrl { + B1_Type prefix, + UTRANMeasCtrlList list optional // only present if prefix = 1 +}; + +type record of UTRANMeasCtrl UTRANMeasCtrlList; + +type record UTRANMeasCtrl { + B1_Type measCtrl, + B5_Type freq, + RptdUTRANFreqIndex rptdFreq +}; + +type record of UTRANMeasCtrl_MI UTRANMeasCtrl_MIList; + +type record UTRANMeasCtrl_MI { + RptdUTRANFreqIndex rptdFreq, + B1_Type measCtrl +}; + +type record of EUTRANMeasCtrl_MI EUTRANMeasCtrl_MIList; + +type record EUTRANMeasCtrl_MI { + RptdEUTRANFreqIndex rptdFreq, + B1_Type measCtrl +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP 44.018 10.5.2.25c +// ----------------------------------------------------------------------------- +type record RRPacketUplinkAssignment { + B8_Type tag, // '00100010' @sic R5s110420 sic@ + O1_Type ielength, // @sic R5s110420 sic@ + B2_Type chCodingCmd, + B1_Type tLLIBlockChCoding, + PacketTimingAdvance pktTA, + B2_Type mask, // only acceptable values are '01' and '10' + RRDynamicAllocation dynamicAlloc optional, // only if mask = '01' + B1_Type multiMask optional, // only if mask = '00' + MultiTBFAlloc multiTBFAlloc optional, // only if mask = '00' and multiMask = 0 + B1_Type r99mask optional, + B4_Type eGPRSMCSMode optional, // not present if r99mask = 0 + B1_Type resegment optional, // not present if r99mask = 0 + EGPRSWindowSize eGPRSWindowSize optional, // not present if r99mask = 0 + B1_Type mask1 optional, + B2_Type pktExtendedTA optional, // not present if mask1 = 0 + B1_Type r7Mask optional, // not present if r99mask = 0 + B1_Type rlcMask optional, // not present if r99mask or r7Mask = 0 + B1_Type rlcMode optional, // not present if r99mask or r7Mask or rlcMask = 0 + RptdNPM_ul rptdNPM optional, // not present if r99mask or r7Mask = 0 @sic R5s100135 sic@ + B2_Type eGPRSLevel optional, // not present if r99mask or r7Mask = 0 @sic R5s100135 sic@ + B1_Type pulseMask optional, // not present if r99mask or r7Mask = 0 @sic R5s100135 sic@ + PulseFormat pulseFormat optional, // not present if r99mask or r7Mask = 0 @sic R5s100135 sic@ + B1_Type fanrMask optional, // not present if r99mask or r7Mask or fanrMask = 0 + B1_Type timeMask optional, // not present if r99mask or r7Mask or fanrMask or timeMask = 0 + B8_Type reportedTimeslots optional, // not present if r99mask or r7Mask or fanrMask or timeMask = 0 + B1_Type tsh optional, // not present if r99mask or r7Mask or fanrMask or timeMask = 0 + B1_Type r8Mask optional, // not present if r99mask or r7Mask = 0 + B1_Type eutranMask optional, // not present if r99mask or r7Mask = 0 or r8Mask = 0 + RptdEUTRANMeasCtrl eutranMeasCtrl optional, // not present if r99mask or r7Mask or r8Mask or eutranMask= 0 + B1_Type utranMask optional, // not present if r99mask or r7Mask = 0 or r8Mask = 0 + RptdUTRANMeasCtrl utranMeasCtrl optional, // not present if r99mask or r7Mask or r8Mask or utranMask= 0 + B1_Type r9Mask optional, // not present if r99mask or r7Mask = 0 or r8Mask = 0 @sic R5s110176 sic@ + B1_Type emstMask optional, // not present if r99mask, r7Mask, r8Mask or r9Mask = 0 @sic R5s110176 sic@ + B1_Type emstNWCap optional, // not present if r99mask, r7Mask, r8Mask or r9Mask = 0 or emstMask = 1 @sic R5s110176 sic@ + RLCEntity rlcEntity2 optional, // not present if r99mask, r7Mask, r8Mask or r9Mask = 0 or emstMask = 0 @sic R5s110176 sic@ + B1_Type entity3Mask optional, // not present if r99mask, r7Mask, r8Mask or r9Mask = 0 or emstMask = 0 @sic R5s110176 sic@ + RLCEntity rlcEntity3 optional, // not present if r99mask, r7Mask, r8Mask or r9Mask = 0 or emstMask = 0 or entity3Mask = 0 @sic R5s110176 sic@ + B1_Type r10Mask optional, // not present if r99mask, r7Mask, r8Mask or r9Mask = 0 @sic R5s120178 sic@ + RptdAddPFC emsrAddPFC1 optional, // not present if r99mask, r7Mask, r8Mask, r9Mask or r10Mask = 0 @sic R5s120178 sic@ + RptdAddPFC emsrAddPFC2 optional, // not present if r99mask, r7Mask, r8Mask, r9Mask or r10Mask = 0 @sic R5s120178 sic@ + RptdAddPFC emsrAddPFC3 optional // not present if r99mask, r7Mask, r8Mask, r9Mask or r10Mask = 0 @sic R5s120178 sic@ +}; + +type record RLCEntity { + B5_Type tfi, + B1_Type rlcMode, + B1_Type windowMask, + EGPRSWindowSize windowSize optional, // only present if windowMask = 1 + B7_Type pfi +}; +// ============================================================================= +// Structured Type Definition +// Pulse Format +// 3GPP TS 44.060 clause 12.8.3 @sic R5s100135 sic@ +// ----------------------------------------------------------------------------- +type record PulseFormat { + B1_Type mask, + B3_Type coding1 optional, // only present if mask=0 + bitstring coding2 optional // only present if mask=1 +}; + +// ============================================================================= +// Structured Type Definition +// RR Cause +// 3GPP TS 44.018 clause 10.5.2.31 +// ----------------------------------------------------------------------------- +type record RR_Cause { + B8_Type iei optional, + B8_Type cause +}; + +type record RTD12 { + B1_Type rtdMask, + B12_Type rTD12 optional // not present if rtdMask1 = 0 +}; + +type record RTD6 { + B1_Type rtdMask, + B6_Type rTD6 optional // not present if rtdMask1 = 0 +}; + +// ============================================================================= +// Structured Type Definition +// Range list +// 3GPP TS 44.018 clause 10.5.2.1c +// ----------------------------------------------------------------------------- +type record Range { + B10_Type rangeLower, + B10_Type rangeUper, + B1_Type endingRepetition // a value of 1 indicates another repetition +}; + +type record of Range RangeList; + +type record RangeLimits { + B1_Type prefix, + RangeList range optional +} + +// ============================================================================= +// Structured Type Definition +// ----------------------------------------------------------------------------- +type record ReferenceAddress { + B1_Type globalTFImask, + GlobalTFI gLOBAL_TFI optional, // not present if globalTFImask=1 + B1_Type mask2 optional, // not present if globalTFImask=0 + O4_Type tLLI optional, // not present if globalTFImask=0 and mask2=1 + B1_Type mask3 optional, // not present if globalTFImask=0 and mask2=0 + B16_Type tQI optional, // not present if globalTFImask=0 and mask2=0 and mask3=1 + PacketRequestReference packetRequestRef optional // not present if globalTFImask=0 and mask2=0 and mask3=0 +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.018 clause 9.1.54 +// function p(x) is: +// p(0) = 0, p(1) = 10, p(2) = 19, p(3) = 28, p(4) = 36, p(5) = 44, +// p(6) = 52, p(7) = 60, p(8) = 67, p(9) = 74, p(10) = 81, p(11) = 88, +// p(12) = 95, p(13) = 102, p(14) = 109, p(15) = 116, p(16) = 122, +// p(x) = 0 for x = 17-31. +// ----------------------------------------------------------------------------- +type record RepeatedUTRAN_FDD_NeighCells { + B1_Type arfcnIndexMask, // always 0 + B14_Type fDD_ARFCN, // present if arfcnIndexMask = 0 + B1_Type fDD_Indic0, + B5_Type nR_OF_FDD_CELLS, + bitstring fDD_CELL_INFORMATION // length of this bitstring = p(nR_OF_FDD_CELLS) +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.018 clause 9.1.54 +// function p(x) is: +// p(0) = 0, p(1) = 10, p(2) = 19, p(3) = 28, p(4) = 36, p(5) = 44, +// p(6) = 52, p(7) = 60, p(8) = 67, p(9) = 74, p(10) = 81, p(11) = 88, +// p(12) = 95, p(13) = 102, p(14) = 109, p(15) = 116, p(16) = 122, +// p(x) = 0 for x = 17-31. +// ----------------------------------------------------------------------------- +type record RepeatedUTRAN_TDD_NeighCells { + B1_Type arfcnIndexMask, //always 0 + B14_Type tDD_ARFCN, // not present if arfcnIndexMask = 0 + B1_Type tDD_Indic0, + B5_Type nR_OF_TDD_CELLS, + bitstring tDD_CELL_INFORMATION // length of this bitstring = p(nR_OF_TDD_CELLS) +}; + +type record RepeatedUTRAN_TDD_PMO_NeighCells { + B1_Type tDD_Indic0, + B1_Type arfcnIndexMask, //always 0 + B14_Type tDD_ARFCN, // not present if arfcnIndexMask = 0 + B5_Type nR_OF_TDD_CELLS, + bitstring tDD_CELL_INFORMATION // length of this bitstring = p(nR_OF_TDD_CELLS) +}; + +//============================================================================= +//Structured Type Definition +//Request reference +//3GPP TS 44.060 clause 11.2.9b +//----------------------------------------------------------------------------- +type record ReportPriorityDescr { + B7_Type noCells, + RepPriorityList repPriority +} + +type record of B1_Type RepPriorityList; + +//============================================================================= +//Structured Type Definition +//Request reference +//3GPP TS 44.060 clause 11.2.9b +//----------------------------------------------------------------------------- +type record Removed3GCell_Descr { + B2_Type n1, + RemovedCellN2List n2List +} + +type record of RemovedCellN2 RemovedCellN2List; + +type record RemovedCellN2 { + B5_Type n2, + RemovedCellIndexList cellIndex +} + +type record of RemovedCellIndex RemovedCellIndexList; + +type record RemovedCellIndex { + B7_Type index, + B3_Type cellDiffLen, + bitstring cellDiff length (1..8) +} +// ============================================================================= +// Structured Type Definition +// Request reference +// 3GPP TS 44.018 clause 10.5.2.30 +// ----------------------------------------------------------------------------- +type record ReqRef { + IEI8_Type iei optional, // information element identifier + B8_Type radoAccessInfo, + RFN fn +}; + +// ============================================================================= +// Structured Type Definition +// ref: 3GPP 44.060, clause 11.2.17b +// the TTCN definition shall be modified if more than 2 SI Msgs are required in the constraint +// ----------------------------------------------------------------------------- +type record SIMessageEntry { + B1_Type prefixBit, // always =1 + B8_Type sIMessgeType, + B2_Type messRec, // 00 = Msg Type supported but not received + // 01 = supported and received, single instance + // 10 = supported and partially received, multiple instances + // 11 = supported and completely received, multiple instances + B3_Type sixChangeMark optional, // only present if messRec1 = 10 or 11 + B4_Type sixChangeCount optional, // only present if messRec1 = 10 + bitstring instanceBitmap optional // only present if messRec1 = 10 +}; +type record SIMessageEntryOptional { // created this to try and allow up to 9 optional entries in the list + SIMessageEntry entry optional +}; +type record of SIMessageEntryOptional SIMessageEntryListDescr; + +// ============================================================================= +// Structured Type Definition +// ref: 3GPP 44.060, clause 11.2.17b +// the TTCN definition shall be modified if more than 2 SI Msgs are required in the constraint +// ----------------------------------------------------------------------------- +type record SIMessageList { + SIMessageEntryListDescr list optional, + B1_Type endingRepetition, // always 0 + B1_Type additionalMsgType +}; + +// ============================================================================= +// Structured Type Definition +// 44.018 clause 10.5.2.57 +// ----------------------------------------------------------------------------- +type record ServiceSupport { + IEI8_Type iei optional, + B6_Type spareBits, // set to '000000' + B1_Type multicastMBMS, + B1_Type broadcastMBMS +}; + +// ============================================================================= +// Structured Type Definition +// Starting time +// 3GPP TS 44.018 clause 10.5.2.38 +// ----------------------------------------------------------------------------- +type record StartingTime { + IEI8_Type iei optional, // '01111100'B + RFN fn +}; + +// ============================================================================= +// Structured Type Definition +// Synchronization indication +// 3GPP TS 44.018 clause 10.5.2.39 +// ----------------------------------------------------------------------------- +type record SyncInd { + IEI4_Type iei optional, // '1101'B + B1_Type normalCellInd, // normal cell indication + B1_Type reportOTD, // report observed time difference + B2_Type syncInd // synchronisation indication +}; + +// ============================================================================= +// Structured Type Definition +// Timing advance +// GSM 04.08, 10.5.2.40 +// ----------------------------------------------------------------------------- +type record TA { + IEI8_Type iei optional, // '01111101'B + B2_Type sprb, // '00'B + B6_Type ievalue // one unit = 48/13 microseconds (in 1 bit periods) +}; + +// ============================================================================= +// Structured Type Definition +// Timing advance +// GSM 04.08, 10.5.2.40 +// ----------------------------------------------------------------------------- +type record TA_TypeV { + B2_Type sprb, // '00'B + B6_Type ievalue // one unit = 48/13 microseconds (in 1 bit periods) +}; + + +// ============================================================================= +// Structured Type Definition +// Time difference +// 3GPP TS 44.018 clause 10.5.2.41 +// ----------------------------------------------------------------------------- +type record TimeDiff { + IEI8_Type iei, // '01111011'B @sic R5s110420 sic@ + O1_Type iel, // OCTETSTRING [1] @sic R5s110420 sic@ + O1_Type ievalue // one unit = 24/13 microseconds (half bit period) +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.018 clause 10.5.2.7a +// ----------------------------------------------------------------------------- +type record UTRANPreConfigInfo { + O1_Type iel, // @sic R5s110420 sic@ + octetstring ievalue // used to be: InterRATHandoverInfo +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.060 clause 11.2.25b +// ----------------------------------------------------------------------------- +type record of UTRAN_ARFCN UTRAN_ARFCN_List; +type record UTRAN_ARFCN { + B1_Type prefix, // value = 1 if present + B14_Type uTRAN_ARFCN1 optional +}; + + +// ============================================================================= +// Structured Type Definition +// UTRAN frequency list +// 3GPP TS 44.018 clause 10.5.2.1d +// ----------------------------------------------------------------------------- +type record UTRAN_FreqList { + IEI8_Type iei, // '01001100'B @sic R5s110420 sic@ + O1_Type iel, + UTRAN_ARFCN_List fDD_ARFCN optional, // FDD frequencies + UTRAN_ARFCN_List tDD_ARFCN optional, // TDD frequencies + bitstring spareBits optional +}; + + + +// ============================================================================= +// Structured Type Definition +// ref: 3GPP 44.060, clause 11.2.17b +// ----------------------------------------------------------------------------- +type record UnknownSIEntry { + B1_Type prefixBit, // always =1 + B8_Type sIMessgeType optional +}; + +type record UnknownSIEntryOptional { // to be able to have up to 2 entries + UnknownSIEntry entry optional + } +type record of UnknownSIEntryOptional UnknownSIEntryListDescr; + +// ============================================================================= +// Structured Type Definition +// ref: 3GPP 44.060, clause 11.2.17b +// ----------------------------------------------------------------------------- +type record UnknownSIList { + UnknownSIEntryListDescr list optional, + B1_Type endingRepetition, // always 0 + B1_Type additionalMsgType +}; + +// ============================================================================= +// Structured Type Definition +// 44.018 clause 10.5.2.42b +// 3GPP TS 44.018 clause 9.1.54 +// ----------------------------------------------------------------------------- +type record VGCSCiphParam { + IEI8_Type iei, // @sic R5s110420 sic@ + O1_Type iel, // @sic R5s110420 sic@ + B2_Type spareBits, // set to '00' + B1_Type randInd, + B1_Type lacInd, + B1_Type cellInd, + B1_Type b22Count, + B2_Type cellGlobalCount, + O1_Type cellId, // Optional + LocAreaId lai, // Optional + O5_Type vSTK_RAND // Optional +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.018 clause 10.5.2.42a +// ----------------------------------------------------------------------------- +type record VGCS_TargetMode { + IEI8_Type iei optional, + O1_Type iel optional, + B2_Type targetMode, + B4_Type groupCipherKey, + B2_Type spareBits +}; + +// ============================================================================= +// Structured Type Definition +// ----------------------------------------------------------------------------- +type record VGCS_AMRConfig { + IEI8_Type iei, // @sic R5s110420 sic@ + Type4Length_Type iel, // @sic R5s110420 sic@ + B4_Type amrConfig, + B4_Type spare +}; + +// ============================================================================= +// Structured Type Definition +// Rach control parameters +// 3GPP TS 44.018 clause 10.5.2.29 +// The info element has a fixed length of 3 octets. +// ----------------------------------------------------------------------------- +type record RACHControlParam { +// IEI8_Type iei optional, // iei is never used + B2_Type maxretx, // maximum retransmissions + B4_Type txInteger, // Tx integer, number of slots to spread transmission + B1_Type cellBarAccess, // cell barred for access + B1_Type re, // call reestablishment allowed + B5_Type acc_2, // access control class 15-11 + B1_Type ec, // emergency call allowed + B10_Type acc_1 // access control class 9-0 +}; + +// ============================================================================= +// Structured Type Definition +// MEASUREMENT PARAMETERSl description in SI2quater rest octets +// ----------------------------------------------------------------------------- +type record MeasParamDescr { + B1_Type rEPORT_TYPE, + B2_Type sERVING_BAND_REPORTING +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.018 clause 10.5.2.33b +// ----------------------------------------------------------------------------- +type record NC_MeasParams { + B2_Type nETWORK_CONTROL_ORDER, + B1_Type mask, + B3_Type nC_NON_DRX_PERIOD optional, // not present if mask = 0 + B3_Type nC_REPORTING_PERIOD_I optional, // not present if mask = 0 + B3_Type nC_Reporting_PERIOD_T optional // not present if mask = 0 +}; + +type record NC_FreqList { + B1_Type remFreqMask, + B5_Type nrOfRemFreq optional, // not present if remFreqMask = 0 + RemovedFreqIndex remFreq optional, // not present if remFreqMask = 0 + AddedFreqList addFreqs +}; + +type record of B6_Type RemovedFreqIndex; + +type record of AddedFreqStruct AddedFreqList; + +type record AddedFreqStruct { + B1_Type prefix, + AddedFreqDescr addFreq optional // not present if prefix = 0 +}; + +type record AddedFreqDescr { + B10_Type startFreq, + B6_Type bSIC, + B1_Type cellSelMask, + PMO_CellSel cellSel optional, // not present if cellSelMask = 0 + B5_Type nrOfFreqs, + B3_Type freqDiffLen, + RptdFreqDiffList rptdFreqDiff +}; + +type record of RptdFreqDiffStruct RptdFreqDiffList; + +type record RptdFreqDiffStruct { + bitstring freqDiffLen length (1..7), + B6_Type bSIC, + B1_Type cellSelMask, + PMO_CellSel cellSel optional // not present if cellSelMask = 0 +}; + +type record PMO_CellSel { + B1_Type cELL_BAR_ACCESS_2, + B1_Type eXC_ACC, + IuModeCellSel common +}; + +type record IuModeCellSel { + B1_Type sAME_RA_AS_SERVING_CELL, + B1_Type gPRS_PwrMask, + B6_Type gPRS_RXLEV_ACCESS_MIN optional, // not present if gPRS_PwrMask = 0 + B5_Type gPRS_MS_TXPWR_MAX_CCH optional, // not present if gPRS_PwrMask = 0 + B1_Type gPRS_SelectMask, + B3_Type gPRS_TEMPORARY_OFFSET optional, // not present if gPRS_SelectMask = 0 + B5_Type g_PRS_PENALTY_TIME optional, // not present if gPRS_SelectMask = 0 + B1_Type gPRS_ReselectMask, + B5_Type gPRS_RESELECT_OFFSET optional, // not present if gPRS_ReselectMask = 0 + B1_Type hCS_Mask, + B3_Type priorityClass optional, // not present if hCS_Mask = 0 + B5_Type hCS_THR optional, // not present if hCS_Mask = 0 + B1_Type sI13_Mask, + SI13_PBCCH_LOCATION sI13_PBCCH_LOCATION optional // not present if sI13_Mask = 0 +}; + +type record SI13_PBCCH_LOCATION { + B1_Type sI13LocationMask, + B1_Type sI13_LOCATION optional, // not present if sI13LocationMask = 0 + B2_Type pBCCH_LOCATION optional, // not present if sI13LocationMask = 0 + B4_Type pSI1_REPEAT_PERIOD optional // not present if sI13LocationMask = 0 +}; + +// ============================================================================= +// Structured Type Definition +// Neighbour cells description +// 3GPP TS 44.018 clause 10.5.2.22 +// ----------------------------------------------------------------------------- +type record NeighCellDescr { + B2_Type rfl2, // bits 128-127 + B1_Type extind, // extension indication + B1_Type baind, // bcch allocation sequence number indication + B4_Type rfl4, // bits 124-121 + O15_Type rfl // bits 120-0 +}; + +// ============================================================================= +// Structured Type Definition +// Neighbour cells description2 +// 3GPP TS 44.018 clause 10.5.2.22a +// ----------------------------------------------------------------------------- +type record NeighCellDescr2 { + B1_Type b128, // Bit 128, format-ID + B2_Type mbrpt, // Multiband reporting + B1_Type baind, // bcch allocation sequence number indication + B4_Type b121_124, // Bit 124 - 121, format ID next + O15_Type rfl // remaining reference frequency list +}; + +// ============================================================================= +// Structured Type Definition +// 3G Neighbour cell description +// 3GPP TS 44.060 clause 11.2.21b +// ----------------------------------------------------------------------------- +type record NeighCellDescr3G { + B1_Type indexMask, + B7_Type indexStart3G optional, // not present if indexMask = 0 + B1_Type absoluteIndexMask, + B7_Type absoluteIndexStartEMR optional, // not present if absoluteIndexMask = 0 + B1_Type fDDMask, + UTRAN_FDD_Descr uTRAN_FDD_Description optional, // not present if fDDMask = 0 + B1_Type tDDMask, + UTRAN_TDD_Descr uTRAN_TDD_Description optional // not present if tDDMask = 0 +}; + +// ============================================================================= +// Structured Type Definition +// 3G Neighbour cell description +// 3GPP TS 44.018 clause 9.1.54 +// ----------------------------------------------------------------------------- +type record NeighCellDescr3G_MI { + B1_Type waitMask, + B3_Type wait3G optional, // not present if waitMask = 0 + NeighCellDescr3G neighCell, + B1_Type cdmaMask, + CDMA2000Descr cdma2000_Description optional // not present if cdmaMask = 0 +}; + +// ============================================================================= +// Structured Type Definition +// GPRS report priority description +// 3GPP TS 44.018 clause 10.5.2.33b +// ----------------------------------------------------------------------------- +type record GPRS_REP_PRIORITY_Descr { + B7_Type numberCells, + GPRS_REP_PRIORITY_List rEP_PRIORITY +}; + +type record of B1_Type GPRS_REP_PRIORITY_List; + +type record of RTD12 GPRS_RTD12_List; + +type record of RTD6 GPRS_RTD6_List; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.018, 10.5.2.33b +// ----------------------------------------------------------------------------- +type record GPRS_RealTimeDiffDescr { + B1_Type rtdMask1, + B1_Type baIndexMask1 optional, // not present if rtdMask1 = 0 + B5_Type bAIndexStartRTD1 optional, // not present if rtdMask1 = 0 or baIndexMask1 = 0 + GPRS_RTD6_List rTD6_List, // not present if rtdMask1 = 0 + B1_Type rtdMask2, + B1_Type baIndexMask2 optional, // not present if rtdMask2 = 0 + B5_Type bAIndexStartRTD2 optional, // not present if rtdMask2 = 0 or baIndexMask2 = 0 + GPRS_RTD12_List rTD12_List // not present if rtdMask2 = 0 +}; + +// ============================================================================= +// Structured Type Definition +// Reference : 3GPP TS 44.018, 10.5.2.33b +// ----------------------------------------------------------------------------- +type record GPRS_BSIC_Descr { + B1_Type indexMask, + B5_Type bA_IndexStart_BSIC optional, // not present if indexMask = 0 + B6_Type bSIC, + B7_Type numberRemainingBSIC, + FreqScrollingList freqScroll +}; + +type record of FreqScrolling FreqScrollingList; + +type record FreqScrolling { + B1_Type frequencfScrolling1, + B6_Type bSIC1 +} + +// ============================================================================= +// Structured Type Definition +// Reference: 3GPP TS 44.060 clause 12.10a +// ----------------------------------------------------------------------------- +type record GPRSMobileAlloc { + B6_Type hSN, // 3GPP TS 45.002 + B1_Type rFL_Mask, + RFL_NumberList rFL_NumberList optional, // not present if rFL_Mask = 0 + B1_Type mA_ARFCN_Mask, + B6_Type mA_LENGTH optional, // not present if mA_ARFCN_Mask = 1 + bitstring mA_BITMAP length(1..64) optional, // not present if mA_ARFCN_Mask = 1 + B1_Type aRFCN_IndexMask optional, // not present if mA_ARFCN_Mask = 0 + ARFCN_IndexList aRFCN_IndexList optional // not present if mA_ARFCN_Mask = 0 or aRFCN_IndexMask = 0 +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.060 clause 12.24 +// ----------------------------------------------------------------------------- +type record GPRS_CellOptions { + B2_Type nMO, // network mode of operation + B3_Type t3168, + B3_Type t3192, + B3_Type dRX_TIMER_MAX, + B1_Type aCCESS_BURST_TYPE, + B1_Type cONTROL_ACK_TYPE, + B4_Type bS_CV_MAX, + B1_Type pAN_Mask, + B3_Type pAN_DEC optional, // not present if pAN_Mask = 0 + B3_Type pAN_INC optional, // not present if pAN_Mask = 0 + B3_Type pAN_MAX optional, // not present if pAN_Mask = 0 + B1_Type optionalExtMask, + B6_Type extensionLength optional, // not present if optionalExtMask =0 + ExtensionInfo extensionInfo optional // not present if optionalExtMask = 0 +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.060 clause 11.2.25 +// ----------------------------------------------------------------------------- +type record GPRS_PowerControlParam { + B4_Type aLPHA, + B5_Type t_AVG_W, + B5_Type t_AVG_T, + B1_Type pC_MEAS_CHAN, // 0--BCCH, 1--PDCH + B4_Type n_AVG_I +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.060 clause 12.10a +// ----------------------------------------------------------------------------- +type record of RFL_Number RFL_NumberList; + +type record RFL_Number { + B4_Type rFL_Number, + B1_Type mask // value = 1 if more to follow +}; + +// ============================================================================= +// Structured Type Definition +// ----------------------------------------------------------------------------- +type record ExtLengthDescr { + B8_Type extensionLength, + bitstring sparebit optional +}; + +// ============================================================================= +// Structured Type Definition +// used in SI13 rest octets +// 3GPP TS 44.018 clause 10.5.2.37b +// ----------------------------------------------------------------------------- +type record PBCCH_Descr { + B4_Type pb, + B3_Type tSC, + B3_Type tN, + B1_Type carrierMask1, + B1_Type carrierMask2 optional, // not present if carrierMask1 = 1. + // (carrierMask1= carrierMask2 = 0) indicating BCCH carrier + B10_Type aRFCN optional, // present if (carrierMask1 = 0 and carrierMask2 = 1) + B6_Type mAIO optional // present if carrierMask1 = 1 +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.060 clause 11.2.20 +// ----------------------------------------------------------------------------- +type record SI13PBCCH_Location { + B1_Type sI13LocationMask, + B1_Type sI13_LOCATION optional, // not present if sI13LocationMask = 1 + B2_Type PBCCH_LOCATION optional, // not present if sI13LocationMask = 0 + B4_Type pSI1_REPEAT_PERIOD optional // not present if sI13LocationMask = 0 +}; + +group CSN1_BitTypes +{ +type B1_Type LH_B1_Type; +type B2_Type LH_B2_Type; + +} with { encode "LowHighRule3" } + +// ============================================================================= +// Structured Type Definition +// SI13 Rest Octets +// 3GPP TS 44.018 clause 10.5.2.37b +// The info element has a fixed length of 20 octets. +// ----------------------------------------------------------------------------- +type record SI13RO { + LH_B1_Type mask, // the remainer of the fields are all not present if mask = L + B3_Type bCCH_CHANGE_MARK optional, + B4_Type sI_CHANGE_FIELD optional, + B1_Type sI3ChangeMask optional, + B2_Type sI13_CHANGE_MARK optional, // not present if sI3ChangeMask = 0 + GPRSMobileAlloc gPRS_MobileAllocation optional, // not present if sI3ChangeMask = 0 + B1_Type pbcchMask optional, // '0' -> no PBCCH + O1_Type rAC optional, // present if pbcchMask = 0 + B1_Type sPGC_CCCH_SUP optional, // present if pbcchMask = 0 + B3_Type pRIORITY_ACCESS_THR optional, // present if pbcchMask = 0 + B2_Type nETWORK_CONTROLl_ORDER optional, // present if pbcchMask = 0 + GPRS_CellOptions gPRS_CellOptions optional, // present if pbcchMask = 0 + GPRS_PowerControlParam gPRS_PowerControlParameters optional, // present if pbcchMask = 0 + B4_Type pSI1_REPEAT_PERIOD optional, // present if pbcchMask = 1 + PBCCH_Descr pBCCH_Description optional, // present if pbcchMask = 1 + LH_B1_Type r99Mask optional, // addition in R99 + B1_Type sGSNR optional, // present if r99Mask = H + LH_B1_Type r4Mask optional, // addition in R4 + B1_Type sI_STATUS_IND optional, // present if r4Mask = H + LH_B1_Type r6Mask optional, // not present if r4Mask = L + B1_Type txPwrMaxCCHMask optional, // not present if r6Mask = L + B5_Type lbMSTxPwrMaxCCH optional, // not present if r6Mask = L or txPwrMaxCCHMask = 0 + B2_Type sI2nSupport optional, // not present if r6Mask = L + LH_B1_Type sI_CHANGE_ALT optional // not present if r6Mask = L @sic R5s130195 Baseline Moving sic@ +}; + + + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.060 clause 11.2.24; 3GPP TS 44.018 clause 10.5.2.37j; +// ----------------------------------------------------------------------------- +type record DYNAMIC_ARFCN_MAPPING { + B4_Type gSM_Band, + B10_Type aRFCN_FIRST, + B10_Type bAND_OFFSET, + B7_Type aRFCN_RANGE +}; + +type record DYNAMIC_ARFCN_MAP_Descr { + B1_Type mask, // Ending repetition if = '0' + DYNAMIC_ARFCN_MAPPING instance optional// only present if mask = '1' +} + +type record of DYNAMIC_ARFCN_MAP_Descr DYNAMIC_ARFCN_MAPPING_LIST; + +// ============================================================================= +// Structured Type Definition +// SI15 Rest Octets +// 3GPP TS 44.018 clause 10.5.2.37k +// The info element has a fixed length of 20 octets. +// ----------------------------------------------------------------------------- +type record SI15RO { + B2_Type si15Index, + B2_Type si15Count, + B4_Type dm_CHANGE_MARK, + DYNAMIC_ARFCN_MAPPING_LIST dynMappingList +}; + +// ============================================================================= +// Structured Type Definition +// SI1 Rest Octets +// 3GPP TS 04.018 clause 10.5.2.32 +// The info element has a fixed length of 1 octet. +// ----------------------------------------------------------------------------- +type record SI1RO { + LH_B1_Type mask, + B5_Type nCH_Position optional, // not present if mask = L + LH_B1_Type bandIndicator optional // L= DCS1800; H=PCS1900 +}; + +// ============================================================================= +// Structured Type Definition +// SI2quater Rest Octets +// 3GPP TS 44.018 clause 10.5.2.33b +// The info element has a fixed length of 20 octets. +// ----------------------------------------------------------------------------- +type record SI2quaterRO { // @sic R5s100135 sic@ + B1_Type bA_IND, + B1_Type bA_IND_3G, + B1_Type mP_CHANGE_MARK, + B4_Type sI2quater_INDEX, + B4_Type sI2quater_COUNT, + B1_Type measParamMask, + MeasParamDescr measParamDescription optional, // not present if measParamMask = 0 + B1_Type gprsRTDMask, + GPRS_RealTimeDiffDescr gPRS_RealTimeDiffDescr optional, // not present if gprsRTDMask = 0 + B1_Type gprsBSICMask, + GPRS_BSIC_Descr gPRS_BSIC_Description optional, // not present if gprsBSICMask = 0 + B1_Type gprsRepPrioMask, + GPRS_REP_PRIORITY_Descr gPRS_REP_PRIORITY_Descr optional, // not present if gprsRepPrioMask = 0 + B1_Type gprsMeasParamMask, + SI2quaterRO_GPRS_MeasParamDescr gPRS_MeasParamsDescr optional, // not present if gprsMeasParamMask = 0 + B1_Type ncMeasParamMask, + NC_MeasParams nC_Measurement_Parameters optional, // not present if ncMeasParamMask = 0 @sic R5s120178 sic@ + B1_Type extnLengthMask, + ExtLengthDescr extensionLength optional, // not present if extnLengthMask = 0 + B1_Type extnMask optional, // not present if extnLengthMask = 0 + B7_Type numCells optional, // not present if extnLengthMask = 0 or extnMask = 0 + bitstring cCNSupported optional, // not present if extnLengthMask = 0 or extnMask = 0 + B1_Type neighCellMask, + NeighCellDescr3G neighCellDes3G optional, // not present if neighCellMask = 0 + B1_Type measParam3GMask, + SI2quaterRO_MeasParamDescr3G measurementParams3G optional, // not present if measParam3GMask = 0 + B1_Type gprsMeasParam3GMask, + SI2quaterRO_GPRS_3G_MeasParamDescr gPRS_3G_MeasParamDescr optional, // not present if gprsMeasParam3GMask = 0 + LH_B1_Type rel5Mask, + B1_Type addMeasMask optional, // not present if rel5Mask = L + AdditionalMeasParam3G addMeasParam3G optional, // not present if rel5Mask = L or addMeasMask = 0 + B1_Type addMeasMask2 optional, // not present if rel5Mask = L + B1_Type fddRepThres2Mask optional, // not present if rel5Mask = L or addMeasMask2 = 0 + B6_Type fddRepThreshold2 optional, // not present if rel5Mask = L, addMeasMask2 = 0 or fddRepThres2Mask = 0 + LH_B1_Type rel6Mask optional, // not present if rel5Mask = L + B1_Type cCNActive optional, // not present if rel5Mask = L or rel6Mask = 0 + LH_B1_Type rel7Mask, + Rel7_700810Reporting report700810 optional, // not present if rel7Mask = L + LH_B1_Type rel8Mask, + B1_Type priorEutranMask optional, // not present if rel8Mask = L // @sic R5s100135 sic@ + B1_Type scPriorMask optional, // not present if rel8Mask = L or priorEutranMask= 0 + B3_Type geranPrior optional, // not present if rel8Mask = L or priorEutranMask or scPriorMask = 0 + B4_Type threshPriorSearch optional, // not present if rel8Mask = L or priorEutranMask or scPriorMask = 0 + B4_Type threshGSMLow optional, // not present if rel8Mask = L or priorEutranMask or scPriorMask = 0 @sic R5s100135 sic@ + B2_Type hPrior optional, // not present if rel8Mask = L or priorEutranMask or scPriorMask = 0 + B2_Type tReselection optional, // not present if rel8Mask = L or priorEutranMask or scPriorMask = 0 + B1_Type prior3GMask optional, // not present if rel8Mask = L + B1_Type utranStart optional, // not present if rel8Mask = L or prior3GMask = 0 + B1_Type utranStop optional, // not present if rel8Mask = L or prior3GMask = 0 + Priority3GParams prior3GParams optional, // not present if rel8Mask = L or prior3GMask = 0 + B1_Type eutranMeasMask optional, // not present if rel8Mask = L + EUTRANMeasParams_SI2 eutranMeasParams optional, // not present if rel8Mask = L or eutranMeasMask = 0 + B1_Type csg_3GMask optional, // not present if rel8Mask = L + CSG_3G_Descr csg_3GDescr optional, // not present if rel8Mask = L or csg_3GMask = 0 + B1_Type eutran_CsgMask optional, // not present if rel8Mask = L + EUTRAN_CSG_Descr eutran_CsgDescr optional, // not present if rel8Mask = L or eutran_CsgMask = 0 + LH_B1_Type rel9Mask optional, // @sic R5s110176 sic@ + B1_Type enhancedMask optional, // not present if rel9Mask = L @sic R5s110176 sic@ + ENH_CellReselectParamsList enh_CellReselect optional, // not present if rel9Mask = L and enhancedMask = 0 @sic R5s110176 sic@ + B1_Type csgCellRptMask optional, // not present if rel9Mask = L @sic R5s110176 sic@ + CSG_CellReportDescr csgCellRpt optional, // not present if rel9Mask = L and csgCellRptMask = 0 @sic R5s110176 sic@ + LH_B1_Type rel10Mask optional, // not present if rel9Mask = L @sic R5s110178 Baseline Moving sic@ + B1_Type pwrMask optional, // not present if rel9Mask = L or rel10Mask = L @sic R5s110178 Baseline Moving sic@ + B1_Type initPwrRed optional, // not present if rel9Mask = L or rel10Mask = L or pwrMask = 0 @sic R5s110178 Baseline Moving sic@ + B1_Type nc2CSG_PCCN_Permitted optional // not present if rel9Mask = L or rel10Mask = L @sic R5s110178 Baseline Moving sic@ +}; + +type record CSG_CellReportDescr { // @sic R5s110176 sic@ + B1_Type utranMask, + UTRAN_CSGCellReportDescr utran optional, // only present if utranMask = 1 + B1_Type eutranMask, + EUTRAN_CSGCellReportDescr eutran optional // only present if eutranMask = 1 +}; + +type record UTRAN_CSGCellReportDescr { + B1_Type fddMask, + B3_Type fddThreshold optional, // only present if fddMask = 1 + B6_Type fddThreshold2 optional, // only present if fddMask = 1 + B1_Type tddMask, + B3_Type tddThreshold optional // only present if tddMask = 1 +}; + +type record EUTRAN_CSGCellReportDescr { + B1_Type fddMask, + B3_Type fddThreshold optional, // only present if fddMask = 1 + B6_Type fddThreshold2 optional, // only present if fddMask = 1 + B1_Type tddMask, + B3_Type tddThreshold optional, // only present if tddMask = 1 + B6_Type tddThreshold2 optional // only present if tddMask = 1 +}; + +type record of ENH_CellReselectParams ENH_CellReselectParamsList; + +type record ENH_CellReselectParams { + B1_Type prefix, + RptdENH_ECellReselectParams params optional // only present if prefix = 1 +}; + +type record RptdENH_ECellReselectParams { + RptdEUTRANFreqIndex freq, + B1_Type mask, + B4_Type eutranQmin optional, // only present if mask = 0 + B5_Type eutranThreshHighQ optional, // only present if mask = 1 + B1_Type lowMask optional, // only present if mask = 1 + B5_Type eutranThreshLowQ optional, // only present if mask = 1 and lowMask = 1 + B1_Type qualMask optional, // only present if mask = 1 + B4_Type eutranQQualmin optional, // only present if mask = 1 and qualMask = 1 + B1_Type rsrpMask optional, // only present if mask = 1 + B5_Type eutranRSRPmin optional // only present if mask = 1 and rsrpMask = 1 +}; + +type record Rel7_700810Reporting { + B1_Type mask700, + B3_Type repOffset700 optional, // not present if mask 700 = 0 + B3_Type repThres700 optional, // not present if mask 700 = 0 + B1_Type mask810, + B3_Type repOffset810 optional, // not present if mask 810 = 0 + B3_Type repThres810 optional // not present if mask 810 = 0 +}; + +type record Priority3GParams { + B1_Type priorMask, + B3_Type defUtranPriority optional, // not present if priorMask = 0 + B5_Type defThreshUtran optional, // not present if priorMask = 0 + B5_Type defUtranQrxLvlMin optional, // not present if priorMask = 0 + RptdUTRANPriorityParams rptdUtranPriorParams optional, + B1_Type endingRepetition // always 0 +}; + +type record of UTRANPriorityParams RptdUTRANPriorityParams; + +type record UTRANPriorityParams { // @sic R5s110176 sic@ + B1_Type mask, // always 1 if this IE is present + RptdUTRANFreqIndex utranFreqIndex, + B1_Type priorMask, // @sic R5s100135 sic@ + B3_Type utranPriority optional, // not present if priorMask = 0 @sic R5s100135 sic@ + B5_Type threshUtranHigh, + B1_Type lowMask, + B5_Type threshUtranLow optional, // not present if lowMask = 0 + B1_Type rxMask, + B5_Type utranQrxLvlMin optional // not present if rxMask = 0 +}; + +type record of UTRANFreqIndex RptdUTRANFreqIndex; + +type record UTRANFreqIndex { + B1_Type prefix, + B5_Type freq optional // only present if prefix = 1 @sic R5s110176 sic@ +}; + +type record of EUTRANFreqIndex RptdEUTRANFreqIndex; + +type record EUTRANFreqIndex { + B1_Type prefix, + B3_Type freq optional // only present if prefix = 1 @sic R5s110176 sic@ +}; + +type record of EUTRANFreq RptdEUTRANFreq; + +type record EUTRANFreq { + B1_Type prefix, + B16_Type freq optional // only present if prefix = 1 @sic R5s110176 sic@ +}; + +type record EUTRANMeasParams_SI2 { // @sic R5s100135, R5s110176 sic@ + B1_Type eutranCCNActive, + EUTRANMeasParams eutranMeasParams, + B1_Type gprsEutranMeasMask, + GPRS_EUTRANMeasParams gprsEutranMeasParams optional, // not present if gprsEutranMeasMask = 0 + RptdEUTRANNeighCells neighCells, + RptdEUTRANNotAllowedCells notAllowedCells, + RptdTAMapping pcidToTA +}; + +type record EUTRAN_CSG_Descr { + record of EUTRAN_CSG_DescrList list, + RptdEUTRANFreq freq +}; + +type record EUTRAN_CSG_DescrList { + B1_Type pciMask, + PCIDGroup pciSplit optional, // only present if pciMask = 1 // @sic R5s110176 sic@ + RptdEUTRANFreqIndex index optional // only present if pciMask = 1 +}; + +type record RptdEUTRANNotAllowedCellsStruct { // @sic R5s110176 sic@ + PCIDGroup notAllowedCells, // @sic R5s120303 sic@ + RptdEUTRANFreqIndex index +}; + +type record of RptdEUTRANNotAllowedCellsList RptdEUTRANNotAllowedCells; + +type record RptdEUTRANNotAllowedCellsList { + B1_Type prefix, + RptdEUTRANNotAllowedCellsStruct notAllowed optional // only present if prefix = 1 +}; + +type record of RptdEUTRANNeighCellsList RptdEUTRANNeighCells; + +type record RptdEUTRANNeighCellsList { + B1_Type prefix, + EUTRANNeighCell cell optional // only present if prefix = 1 +}; + +type record EUTRANNeighCell { + RptdEARFCN_BW earfcnBW, + B1_Type pMask, + B3_Type priority optional, // notpresent if pMask = 0 @sic R5s100135 sic@ + B5_Type threshHigh, + B1_Type lowMask, + B5_Type threshLow optional, // not present if lowMask = 0 + B1_Type qMask, + B5_Type eutranQrxLevelMin optional // not present if qMask = 0 +}; + +type record of RptdEUTRANNeighCellsListMI RptdEUTRANNeighCellsMI; + +type record RptdEUTRANNeighCellsListMI { + B1_Type prefix, + EUTRANNeighCellMI cell optional // only present if prefix = 1 +}; + +type record EUTRANNeighCellMI { + B16_Type earfcn, + RptdEUTRANFreq rptfEarfcn, + B1_Type mask, + B3_Type measBW optional // only present if mask = 1 +}; + +type record of RptdTAMappingStruct RptdTAMapping; // @sic R5s110176 sic@ + +type record RptdTAMappingStruct { + B1_Type prefix, + TAMappingList list optional // only present if prefix = 1 +}; + +type record TAMappingList { // @sic R5s110176 sic@ + RptdPCIDGroup pcid, + RptdUTRANFreqIndex freq +}; + +type record EARFCN_BWList{ + B1_Type prefix, + EARFCN_BW item optional // only present if prefix = 1 +}; + +type record of EARFCN_BWList RptdEARFCN_BW; + +type record EARFCN_BW { + B16_Type earfcn, + B1_Type mask, + B3_Type measBW optional // only present if mask = 1 +}; + +type record EUTRANParams { + B1_Type gprsEutranMeasMask, + GPRS_EUTRANMeasParams gprsEutranMeasParams optional, // not present if gprsEutranMeasMask = 0 + RptdEUTRANNeighCells neighbourCells, + RptdEUTRANNotAllowedCells notAllowedCells, + RptdTAMapping pcidToTA +}; + +type record EUTRANParamsMI { + EUTRANMeasParamsMI eutranMeasParams, + RptdEUTRANNeighCellsMI neighbourCells, + RptdEUTRANNotAllowedCells notAllowedCells, + B1_Type measCtrlMask, + B1_Type defaultMask optional, // not present if measCtrlMask = 0 + B1_Type defMeasCtrlEUTRAN optional, // not present if measCtrlMask or defaultMask = 0 + EUTRANMeasCtrl_MIList rptdMeasCtrl optional // not present if measCtrlMask = 0 +}; + +type record CSG_3G_Descr { + record of CSG_3G_DescrList list, + RptdCSG_UARFCN rptdUARFCN +}; + +type record CSG_3G_DescrList { + B1_Type pscMask, + RptdPCID psc optional, // only present if pscMask = 1 + RptdPCIDPattern pscPattern optional, // only present if pscMask = 1 + RptdUTRANFreqIndex freq optional // only present if pscMask = 1 +}; + +type record of CSG_UARFCNList RptdCSG_UARFCN; + +type record CSG_UARFCNList { + B1_Type prefix, + CSG_UARFCN uarfcn optional // only present if prefix = 1 +}; + +type record CSG_UARFCN { + B1_Type mask, + B14_Type fddUARFCN optional, // only present if mask = 0 + B14_Type tddUARFCN optional // only present if mask = 1 +}; + +type record of PCIDGroupList RptdPCIDGroup; // @sic R5s110176 sic@ + +type record PCIDGroupList { // @sic R5s110176 sic@ + B1_Type prefix, + PCIDGroup notAllowed optional // only present if prefix = 1 +} + +type record PCIDGroup { // @sic R5s110176 sic@ + RptdPCID pcid, + B1_Type groupMask, + B6_Type bitmapGroup optional, // only present if groupMask = 1 + RptdPCIDPattern pcidPattern +}; + +type record of PCIDList RptdPCID; + +type record PCIDList { + B1_Type mask, + B9_Type pcid optional // only present if mask = 1 +}; + +type record of PCIDPatternList RptdPCIDPattern; + +type record PCIDPatternList { + B1_Type prefix, + PCIDPattern pcid optional // only present if prefix = 1 +}; + +type record PCIDPattern { + B3_Type patternLength, + bitstring pcidPattern length (1..8), + B1_Type sense +}; + +type record EUTRANMeasParamsMI { + B1_Type eutranStart, + B1_Type eutranStop, + B1_Type measParamsMask, // the rest of the field is only present if this field is set to 1 + B4_Type qSearchC optional, + B1_Type eutran_REP_QUANT optional, + B2_Type eutran_MULTIRAT_REPORTING optional, + B1_Type reportOffsetMask optional, // 0= Reporting threshold, 1= Measurement Report Offset + B1_Type fDD_ReportingMask optional, // + B3_Type fDD_REPORTING_THRESHOLD optional, // not present if fDD_ReportingMask = 0 or reportOffsetMask =1 + B6_Type fDD_MeasRptOffset optional, // not present if fDD_ReportingMask = 0 or reportOffsetMask = 0 + B1_Type fDD_Reporting2Mask optional, // not present if fDD_ReportingMask = 0 + B6_Type fDD_REPORTING_THRESHOLD2 optional, // not present if fDD_ReportingMask, or fDD_Reporting2Mask = 0 + B1_Type fDD_OffsetMask optional, // not present if fDD_ReportingMask = 0 + B3_Type fDD_RptOffset optional, // not present if fDD_ReportingMask = 0 or fDD_OffsetMask = 0 + B1_Type tDD_ReportingMask optional, + B3_Type tDD_REPORTING_THRESHOLD optional, // not present if tDD_ReportingMask = 0 or reportOffsetMask = 1 + B6_Type tDD_MeasRptOffset optional, // not present if tDD_ReportingMask = 0 or reportOffsetMask =0 + B1_Type tDD_Reporting2Mask optional, // not present if tDD_ReportingMask = 0 + B6_Type tDD_REPORTING_THRESHOLD2 optional, // not present if tDD_ReportingMask, or tDD_Reporting2Mask = 0 + B1_Type tDD_OffsetMask optional, // not present if tDD_ReportingMask = 0 + B3_Type tDD_RptOffset optional, // not present if tDD_ReportingMask = 0 or tDD_OffsetMask = 0 + B1_Type reportingGranularity optional // not present if reportOffsetMask = 0}; +}; + +type record EUTRANMeasParams { // @sic R5s100135, R5s110176 sic@ + B1_Type eutranStart, + B1_Type eutranStop, + B1_Type measParamsMask, // the rest of the field is only present if this field is set to 1 + B4_Type qSearchCInitial optional, // @sic GP-140286 sic@ + B1_Type eutran_REP_QUANT optional, + B2_Type eutran_MULTIRAT_REPORTING optional, + B1_Type reportOffsetMask optional, // 0= Reporting threshold, 1= Measurement Report Offset + B1_Type fDD_ReportingMask optional, // not present if reportOffsetMask = 1 + B3_Type fDD_REPORTING_THRESHOLD optional, // not present if fDD_ReportingMask = 0 or reportOffsetMask =1 + B6_Type fDD_MeasRptOffset optional, // not present if fDD_ReportingMask = 0 or reportOffsetMask =0 + B1_Type fDD_Reporting2Mask optional, // not present if fDD_ReportingMask = 0 or reportOffsetMask = 1 + B6_Type fDD_REPORTING_THRESHOLD2 optional, // not present if fDD_ReportingMask, or fDD_Reporting2Mask = 0 or reportOffsetMask = 1 + B1_Type fDD_OffsetMask optional, // not present if fDD_ReportingMask = 0 or reportOffsetMask = 1 + B3_Type fDD_RptOffset optional, // not present if fDD_ReportingMask = 0 or fDD_OffsetMask = 0 + B1_Type tDD_ReportingMask optional, // not present if reportOffsetMask = 1 + B3_Type tDD_REPORTING_THRESHOLD optional, // not present if tDD_ReportingMask = 0 or reportOffsetMask = 1 + B6_Type tDD_MeasRptOffset optional, // not present if tDD_ReportingMask = 0 or reportOffsetMask =0 + B1_Type tDD_Reporting2Mask optional, // not present if tDD_ReportingMask = 0 or reportOffsetMask = 1 + B6_Type tDD_REPORTING_THRESHOLD2 optional, // not present if tDD_ReportingMask, or tDD_Reporting2Mask = 0 or reportOffsetMask = 1 + B1_Type tDD_OffsetMask optional, // not present if tDD_ReportingMask = 0 or reportOffsetMask = 1 + B3_Type tDD_RptOffset optional, // not present if tDD_ReportingMask = 0 or tDD_OffsetMask = 0 + B1_Type reportingGranularity optional // not present if reportOffsetMask = 0}; +}; + +type record GPRS_EUTRANMeasParams { // @sic R5s110176 sic@ + B4_Type qSearchP, // @sic GP-140286 sic@ + B1_Type eutranRepQuant, // @sic R5s100135 sic@ + B2_Type eutranMultiratReporting optional, + B1_Type fddReportMask, + B3_Type fddReportingThreshold optional, // not present if fddReportMask = 0 + B1_Type fddReport2Mask optional, // not present if fddReportMask = 0 + B6_Type fddReportingThreshold2 optional, // not present if fddReportMask = 0 or fddReport2Mask =0 + B1_Type fddOffsetMask optional, // not present if fddReportMask = 0 + B3_Type fddReportingOffset optional, // not present if fddReportMask = 0 or fddOffsetMask =0 + B1_Type tddReportMask optional, // not present if fddReportMask = 0 + B3_Type tddReportingThreshold optional, // not present if tddReportMask = 0 + B1_Type tddReport2Mask optional, // not present if tddReportMask = 0 + B6_Type tddReportingThreshold2 optional, // not present if tddReportMask = 0 or tddReport2Mask =0 + B1_Type tddOffsetMask optional, // not present if tddReportMask = 0 + B3_Type tddReportingOffset optional // not present if tddReportMask = 0 or tddOffsetMask =0 +}; +// ============================================================================= +// Structured Type Definition +// Reference : 3GPP TS 44.018 clause 10.5.2.33b +// ----------------------------------------------------------------------------- +type record SI2quaterRO_GPRS_3G_MeasParamDescr { + B4_Type qsearch_P, + B1_Type spare, // @sic R5s100135 sic@ + B1_Type fDD_REP_QUANT_Mask, + B1_Type fDD_REP_QUANT optional, // not present if fDD_REP_QUANT_Mask = 0 + B2_Type fDD_MULTIRAT_REPORTING optional, // not present if fDD_REP_QUANT_Mask = 0 + B1_Type fDD_ReportingMask, + B3_Type fDD_REPORTING_OFFSET optional, // not present if fDD_ReportingMask = 0 + B3_Type fDD_REPORTING_THRESHOLD optional, // not present if fDD_ReportingMask = 0 + B1_Type tDD_MultiratReportingMask, + B2_Type tDD_MULTIRAT_REPORTING optional, // not present if tDD_MultiratReportingMask = 0 + B1_Type tDD_ReportingMask, + B3_Type tDD_REPORTING_OFFSET optional, // not present if tDD_ReportingMask = 0 + B3_Type tDD_REPORTING_THRESHOLD optional // not present if tDD_ReportingMask = 0 +}; + +// ============================================================================= +// Structured Type Definition +// Reference : 3GPP TS 44.018 clause 10.5.2.33b +// ----------------------------------------------------------------------------- +type record SI2quaterRO_GPRS_MeasParamDescr { + B1_Type rEPORT_TYPE, + B1_Type rEPORTING_RATE, + B1_Type iNVALID_BSIC_REPORTING, + B1_Type multibandReportingMask, + B2_Type multibandReporting optional, // not present if multibandReportingMask = 0 + B1_Type servingBandReportingMask, + B2_Type servingBandReporting optional, // not present if servingBandReportingMask = 0 + B2_Type sCALE_ORD, + B1_Type mask900, + B3_Type rEPORTING_OFFSET_900 optional, // not present if mask900 = 0 + B3_Type rEPORTING_THRESHOLD_900 optional, // not present if mask900 = 0 + B1_Type mask1800, + B3_Type rEPORTING_OFFSET_1800 optional, // not present if mask1800 = 0 + B3_Type rEPORTING_THRESHOLD_1800 optional, // not present if mask1800 = 0 + B1_Type mask400, + B3_Type rEPORTING_OFFSET_400 optional, // not present if mask400 = 0 + B3_Type rEPORTING_THRESHOLD_400 optional, // not present if mask400 = 0 + B1_Type mask1900, + B3_Type rEPORTING_OFFSET_1900 optional, // not present if mask1900 = 0 + B3_Type rEPORTING_THRESHOLD_1900 optional, // not present if mask1900 = 0 + B1_Type mask850, + B3_Type rEPORTING_OFFSET_850 optional, // not present if mask850 = 0 + B3_Type rEPORTING_THRESHOLD_850 optional // not present if mask850 = 0 +}; + +// ============================================================================= +// Structured Type Definition +// 3G MEASUREMENT PARAMETERSl description in SI2quater rest octets +// ----------------------------------------------------------------------------- +type record SI2quaterRO_MeasParamDescr3G { + B4_Type qsearch_I, + B1_Type qsearch_C_Initial, + B1_Type fDDMask, + B4_Type fDD_Qoffset optional, // not present if fDDMask = 0 + B1_Type fDD_REP_QUANT optional, // not present if fDDMask = 0 + B2_Type fDD_MULTIRAT_REPORTING optional, // not present if fDDMask = 0 + B3_Type fDD_Qmin optional, // not present if fDDMask = 0 + B1_Type tDDMask, + B4_Type tDD_Qoffset optional, // not present if tDDMask = 0 + B2_Type tDD_MULTIRAT_REPORTING optional // not present if tDDMask = 0 +}; + +// ============================================================================= +// Structured Type Definition +// 3G MEASUREMENT PARAMETERSl description in SI2ter +// 3GPP TS 44.018 clause 10.5.2.33a +// ----------------------------------------------------------------------------- +type record SI2terMeasParamDescr3G { + B4_Type qsearch_I, + B1_Type fDDMask, + B4_Type fDD_Qoffset optional, // not present if fDDMask = 0 + B3_Type fDD_Qmin optional, // not present if fDDMask = 0 + B1_Type tDDMask, + B4_Type tDD_Qoffset optional // not present if tDDMask = 0 +}; + +// ============================================================================= +// Structured Type Definition +// 3G MEASUREMENT PARAMETERS description in Measurement Information +// ----------------------------------------------------------------------------- +type record MeasParamDescr3G_MI { + B4_Type qsearch_C, + B1_Type ignoreBit, // for backward compatibility + B1_Type fDD_REP_QUANT, + B1_Type multiRatFddMask, + B2_Type fDD_MULTIRAT_REPORTING optional, // not present if multiRatFddMask = 0 + B1_Type fDDMask, + B3_Type fDD_Qoffset optional, // not present if fDDMask = 0 + B3_Type fDD_REPORTING_THRESHOLD optional, // not present if fDDMask = 0 + B1_Type multiRatTddMask, + B2_Type tDD_MULTIRAT_REPORTING optional, // not present if multiRattddMask = 0 + B1_Type tDDMask, + B3_Type tDD_Qoffset optional, // not present if tDDMask = 0 + B2_Type tDD_REPORTING_THRESHOLD optional, // not present if tDDMask = 0 + B1_Type multiRatCdmaMask, + B2_Type cdma_MULTIRAT_REPORTING optional, // not present if multiRatCdmaMask = 0 + B1_Type cdmaMask, + B3_Type cdma_Qoffset optional, // not present if cdmaMask = 0 + B3_Type cdma_REPORTING_THRESHOLD optional // not present if cdmaMask = 0 +}; + +// ============================================================================= +// Structured Type Definition +// SI2ter Rest Octets +// 3GPP TS 44.018 clause 10.5.2.33a +// The info element has a fixed length of 4 octets. +// ----------------------------------------------------------------------------- +type record SI2terRO { + LH_B1_Type mask, + B1_Type sI2ter_MP_CHANGE_MARK optional, // not present if mask = L + B1_Type sI2ter_3G_CHANGE_MARK optional, // not present if mask = L + B3_Type sI2ter_INDEX optional, // not present if mask = L + B3_Type sI2ter_COUNT optional, // not present if mask = L + B1_Type fDDMask optional, // not present if mask = L + SI2terUTRAN_FDD_Descr uTRAN_FDD_Description optional, // not present if mask = L or fDDMask = 0 + B1_Type tDDMask optional, // not present if mask = L + SI2terUTRAN_TDD_Descr uTRAN_TDD_Description optional, // not present if mask=L or tDDMask = 0 + B1_Type measMask optional, // not present if mask = L + SI2terMeasParamDescr3G measurementParams3G optional, // not present if mask = L or measMask = 0 + LH_B1_Type rel5Mask optional, + B1_Type addMeasMask optional, // not present if mask = L or rel5Mask = L + AdditionalMeasParam3G addMeasParam3G optional // not present if mask = L, rel5Mask = L or addMeasMask = 0 +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.018 clause 10.5.2.33a +// ----------------------------------------------------------------------------- +type record SI2terUTRAN_FDD_Descr { + B2_Type mask, // only valid value is now 01 + B14_Type fDD_ARFCN, // present if mask = 01 + B1_Type bandwidthMask, + B3_Type bandwidthFDD optional // not present if bandwidthMask = 0 +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.018 clause 10.5.2.33a +// ----------------------------------------------------------------------------- +type record SI2terUTRAN_TDD_Descr { + B2_Type mask, // only valid value now 01 + B14_Type tDD_ARFCN, // present if mask = 01 + B1_Type bandwidthMask, + B3_Type bandwidthTDD optional // not present if bandwidthMask = 0 +}; + +// ============================================================================= +// Structured Type Definition +// SI3 Rest Octets +// 3GPP TS 44.018 clause 10.5.2.34 +// The info element has a fixed length of 4 octets. +// ----------------------------------------------------------------------------- +type record SI3RO { + LH_B1_Type cellSelectMask, // Cell select parameter mask + B1_Type cbq optional, // not present if cellSelectMask = L, Cell bar qualify + B6_Type cellReselectOffset optional, // not present if cellSelectMask = L + B3_Type temporaryOffset optional, // not present if cellSelectMask = L + B5_Type penaltyTime optional, // not present if cellSelectMask = L + LH_B1_Type powerOffsetMask, // Power offset mask + B2_Type powerOffset optional, // not present if powerOffsetMask = L + LH_B1_Type sI2terIndicator, // SI 2ter indicator L= no SI2ter + LH_B1_Type earlyClassMarkSendingControl, // L= forbidden, H= allowed + LH_B1_Type mask3, // mask bit for scheduling info + B3_Type schedulingWhere optional, // not present if mask3 = L + LH_B1_Type mask4, // mask bit for GPRS indicator + B3_Type rA_Colour optional, // not present if mask4 = L + B1_Type sI13Position optional, // not present if mask4 = L + LH_B1_Type earlyClassMarksendingRestriction3G, // L=no early 3G classmark sending + LH_B1_Type mask5, // mask bit for SI2quaterPosition + B1_Type sI2quaterPosition optional, // not present if mask5 = L + B1_Type sI13altPosition optional, // only present if Iu supported in cell @sic R5s120178 sic@ + LH_B1_Type mask6, // mask bit for SI21 @sic R5s120178 Baseline Moving sic@ + B1_Type si21Position optional // not present if mask6 = L @sic R5s120178 Baseline Moving sic@ +}; + +// ============================================================================= +// Structured Type Definition +// SI4 Rest Octets +// 3GPP TS 44.018 clause 10.5.2.35 +// The info element has a length of 0 to 10 octets. +// ----------------------------------------------------------------------------- +type record SI4RO { + LH_B1_Type cellSelectMask, // Cell selection parameter mask + B1_Type cbq optional, // not present if cellSelectMask = L, Cell bar qualify + B6_Type cellReselectOffset optional, // not present if cellSelectMask = L + B3_Type temporaryOffset optional, // not present if cellSelectMask = L + B5_Type penaltyTime optional, // not present if cellSelectMask = L + LH_B1_Type powerOffsetMask, // Power offset mask + B2_Type powerOffset optional, // not present if powerOffsetMask = L + LH_B1_Type raColourMask, // GPRS indicator + B3_Type rA_Colour optional, // not present if raColourMask = L + B1_Type sI13Position optional, // not present if raColourMask = L + LH_B1_Type breakMask optional, + LH_B1_Type breakIndicator optional, // present if breakMask = L + LH_B1_Type lsaParamMask optional, // present if breakMask = H + B3_Type pRIO_THR optional, // not present if lsaParamMask = L or breakMask = L + B3_Type lSA_OFFSET optional, // not present if lsaParamMask = L or breakMask = L + B1_Type mccMask optional, // not present if breakMask = L orlSAParamMask = L + B12_Type mCC optional, // not present if mccMask = 0 or breakMask = L orlSAParamMask = L + B12_Type mNC optional, // not present if mccMask = 0 or breakMask = L or lSAParamMask= L + LH_B1_Type cellIDMask optional, // not present if breakMask = L + B16_Type cellIdentity optional, // not present if cellIDMask = L or breakMask = L + LH_B1_Type lsaMask optional, // not present if breakMask = L + LSA_ID_Info_List lsaIdInfo_List optional, // not present if lsaMask = L or breakMask = L + LH_B1_Type cBQ3Mask optional, // not present if breakMask = L + B2_Type cBQ3 optional, // not present if breakMask = L or cBQ3Mask = L + B1_Type si13altMask optional, // not present if breakMask = L or cBQ3Mask = L + B1_Type si13altPosition optional // not present if breakMask = L or cBQ3Mask = L or si13altMask = 0 +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.018 clause 10.5.2.35 +// ----------------------------------------------------------------------------- +type record SI4RO_LSA_ID_Info { + B1_Type lSA_ID_Mask1, + B24_Type lSA_ID1 optional, // not present if lSA_ID_Mask1 = 1 + B10_Type ShortLSA_ID1 optional, // not present if lSA_ID_Mask1 = 0 + B1_Type endingRepetition optional // if = 0 indicates the end of the structure, + // if = 1, this structure will be repeated +}; + +type record of SI4RO_LSA_ID_Info LSA_ID_Info_List; + +// ============================================================================= +// Structured Type Definition +// SI6 Rest Octets +// 3GPP TS 44.018 clause 10.5.2.35a +// The info element has a fixed length of 7 octets. +// ----------------------------------------------------------------------------- +type record SI6RO { + LH_B1_Type pchNchMask, // PCH, NCH info mask + B1_Type pagingChRestructuring optional, // not present if pchNchMask = L + B2_Type nLN_SACCH optional, // not present if pchNchMask = L + B1_Type prioMask optional, // not present if pchNchMask = L + B3_Type callPriority optional, // not present if pchNchMask = L or prioMask = 0 + B1_Type nLN_Status optional, // not present if pchNchMask = L + LH_B1_Type inbandMask, + B1_Type inbandNotifications optional, // not present if inbandMask = L + B1_Type inbandPagings optional, // not present if inbandMask = L + LH_B1_Type dTM_Supported, + B8_Type rAC optional, // not present if dTM_Supported = L + B3_Type mAX_LAPDm optional, // not present if dTM_Supported = L + LH_B1_Type bandIndicator, // L = 1800 band supported, H = 1900 band supported + LH_B1_Type txPwrMask, + B5_Type gPRS_MS_TXPWT_MAX_CCH optional, // not present if txPwrMask = L + LH_B1_Type mBMSMask, + B1_Type dedModeMBMSNoteSupport optional, // not present if mBMSMask = L + B1_Type mNCISupport optional, // not present if mBMSMask = L + LH_B1_Type r7Mask, + B1_Type amrConfigMask optional, // not present if r7Mask = L + B4_Type amrConfig optional, // not present if r7Mask= L or amrConfigMask = 0 + LH_B1_Type randomMask, // @sic R5s120178 Baseline Moving sic@ + bitstring randomBitStream optional // not present if randomMask = L @sic R5s120178 Baseline Moving sic@ +}; + +// ============================================================================= +// PDU Type Definition +// RR SYSTEM INFORMATION TYPE1 ntw -> ue/ms +// 3 GPP TS 44.018 clause 9.1.31 +// The message has an L2 pseudo length of 21 octets and a total length of 23 octets. +// ----------------------------------------------------------------------------- +type record SYSTEMINFORMATIONTYPE1 { + O1_Type l2PseudoLength, // L2 pseudo length M + B4_Type skipIndicator, // skip indicator M + B4_Type rRProtocolDiscriminator, // RR protocol discriminator M + B8_Type msgType, // message type M + CellChDescr cellChDescr, // cell channel description M + RACHControlParam rACHControlParam, // rach control parameters M + SI1RO sI1RO // SI1 rest octets M +}with { encode "GSM Spare Padding Rule2"} + +// ============================================================================= +// PDU Type Definition +// RR SYSTEM INFORMATION TYPE13 ntw -> ue/ms +// 3GPP TS 44.018 clause 9.1.43a +// The message has an L2 pseudo length of 0 octets and a total length of 23 octets. +// ----------------------------------------------------------------------------- +type record SYSTEMINFORMATIONTYPE13 { + O1_Type l2PseudoLength, // L2 pseudo length M + B4_Type skipIndicator, // skip indicator M + B4_Type rRProtocolDiscriminator, // RR protocol discriminator M + B8_Type msgType, // message type M + SI13RO si13roct // SI3 rest octets M + // OCTETSTRING [20] +}with { encode "GSM Spare Padding Rule2"} + +// ============================================================================= +// PDU Type Definition +// RR SYSTEM INFORMATION TYPE15 ntw -> ue/ms +// 3GPP TS 44.018 clause 9.1.43j +// The message has an L2 pseudo length of 0 octets and a total length of 23 octets. +// ----------------------------------------------------------------------------- +type record SYSTEMINFORMATIONTYPE15 { + O1_Type l2PseudoLength, // L2 pseudo length M + B4_Type skipIndicator, // skip indicator M + B4_Type rRProtocolDiscriminator, // RR protocol discriminator M + B8_Type msgType, // message type M + SI15RO si15roct // SI15 rest octets M + // OCTETSTRING [20] +} +with { encode "GSM Spare Padding Rule2"} + +// ============================================================================= +// PDU Type Definition +// RR SYSTEM INFORMATION TYPE2 ntw -> ue/ms +// 3GPP TS 44.018 clause 9.1.32 +// The message has an L2 pseudo length of 22 octets and a total length of 23 octets. +// ----------------------------------------------------------------------------- +type record SYSTEMINFORMATIONTYPE2 { + O1_Type l2PseudoLength, // L2 pseudo length M // OCTETSTRING [1] + B4_Type skipIndicator, // skip indicator M + B4_Type rRProtocolDiscriminator, // RR protocol discriminator M + B8_Type msgType, // message type M + NeighCellDescr neighBCCHFreqList, // bcch frequency list of neighbour cells M + NCCPermitted nCCPermitted, // ncc permitted M + RACHControlParam rACHControlParam // rach control parameters M +}with { encode "GSM Spare Padding Rule2"} + +// ============================================================================= +// PDU Type Definition +// RR SYSTEM INFORMATION TYPE2bis ntw -> ue/ms +// 3GPP TS 44.018 clause 9.1.33 +// This PDU type is used both for SYSINFO2bis. +// The 2bis message has an L2 pseudo length of 21 octets and a total length of 23 octets. +// ----------------------------------------------------------------------------- +type record SYSTEMINFORMATIONTYPE2bis { + O1_Type l2PseudoLength, // L2 pseudo length M + B4_Type skipIndicator, // skip indicator M + B4_Type rRProtocolDiscriminator, // RR protocol discriminator M // BITSTRING [4] + B8_Type msgType, // message type M + NeighCellDescr extNeighBCCHFreqList, // extended bcch frequency list of neighbour cells M + // OCTETSTRING [16] + RACHControlParam rACHControlParam // rach control parameters M + // OCTETSTRING [3] +}with { encode "GSM Spare Padding Rule2"} + +// ============================================================================= +// PDU Type Definition +// RR SYSTEM INFORMATION 2quater ntw -> ue/ms +// 3GPP TS 44.018 clause 9.1.34a +// The 2ter message has an L2 pseudo length of 1 octet and a total length of 23 octets. +// ----------------------------------------------------------------------------- +type record SYSTEMINFORMATIONTYPE2quater { + O1_Type l2PseudoLength, // L2 pseudo length M + B4_Type skipIndicator, // skip indicator M + B4_Type rRProtocolDiscriminator, // RR protocol discriminator M + B8_Type msgType, // message type M + SI2quaterRO sI2quaterRO // SI2quater rest octets + // OCTETSTRING [20] +}with { encode "GSM Spare Padding Rule2"} + +// ============================================================================= +// PDU Type Definition +// RR SYSTEM INFORMATION 2ter ntw -> ue/ms +// 3GPP TS 44.018 clause 9.1.34 +// The 2ter message has an L2 pseudo length of 18 octets and a total length of 23 octets. +// ----------------------------------------------------------------------------- +type record SYSTEMINFORMATIONTYPE2ter { + O1_Type l2PseudoLength, // L2 pseudo length M + B4_Type skipIndicator, // skip indicator M + B4_Type rRProtocolDiscriminator, // RR protocol discriminator M + B8_Type msgType, // message type M + NeighCellDescr2 extNeighBCCHFreqList, // extended bcch frequency list of neighbour cells M + SI2terRO sI2terRO // SI2ter rest octets +}with { encode "GSM Spare Padding Rule2"} + +// ============================================================================= +// Structured Type Definition +// Cell selection parameters +// 3GPP TS 44.018 clause 10.5.2.4 +// ----------------------------------------------------------------------------- +type record CellSelParam { +// IEI8_Type iei optional, // iei never used + B3_Type cellReselHysteresis, // cell reselected hysteresis + B5_Type mS_TXPWR_MAX_CCH, // MS maximum TX power for CCH + B1_Type acs, // additional reselect parameter indicator + B1_Type neci, // half rate support + B6_Type rXLEV_ACCESS_MIN // MS minimum received signal level +}; + +// ============================================================================= +// PDU Type Definition +// RR SYSTEM INFORMATION TYPE3 ntw -> ue/ms +// 3GPP TS 44.018 clause 9.1.35 +// The message has an L2 pseudo length of 18 octets and a total length of 23 octets. +// ----------------------------------------------------------------------------- +type record SYSTEMINFORMATIONTYPE3 { + O1_Type l2PseudoLength, // L2 pseudo length M + B4_Type skipIndicator, // skip indicator M + B4_Type rRProtocolDiscriminator, // RR protocol discriminator M + B8_Type msgType, // message type M + O2_Type celIId, // cell identity M + LocAreaId lai, // location area identification M + ControlChDescr controlChDescr, // control channel description M + CellOptionBCCH cellOption, // cell options/BCCH M + CellSelParam cellSelParam, // cell selection parameters M + RACHControlParam rACHControlParam, // rach control parameters M + SI3RO sI3RO // SI3 rest octets M +}with { encode "GSM Spare Padding Rule2"} + +// ============================================================================= +// Structured Type Definition +// Channel description +// 3GPP TS 44.018 clause 10.5.2.5 (and 10.5.2.5a as the type definition is the same) +// ----------------------------------------------------------------------------- +type record ChannelDescr { + IEI8_Type iei optional, // '01100100'B + B5_Type cht_schn, // channel type and TDMA offset + B3_Type tn, // timeslot number + B3_Type tsc, // training sequence code + B1_Type hch, // hch = 1 indicating hopping channel + B6_Type maio optional, // mobile allocation index offset - hopping + B6_Type hsn optional, // hopping sequence number - hopping + B2_Type spr optional, // '00'B - non hopping + B10_Type arfcn optional // absolute RF channel number - non hopping +}; + +type record ChannelDescr3 { + IEI8_Type iei optional, // '01100100'B + B3_Type tsc, // training sequence code + B1_Type hch, // hch = 1 indicating hopping channel + B6_Type maio optional, // mobile allocation index offset - hopping + B6_Type hsn optional, // hopping sequence number - hopping + B2_Type spr optional, // '00'B - non hopping + B10_Type arfcn optional // absolute RF channel number - non hopping +}; + +// ============================================================================= +// PDU Type Definition +// RR SYSTEM INFORMATION TYPE4 ntw -> ue/ms +// 3GPP TS 44.018 clause 9.1.36 +// The message has a total length of 23 octets. the L2 pseudo length is the sum of all information elements except SI 4 Rest Octets and L2 pseudo length +// ----------------------------------------------------------------------------- +type record SYSTEMINFORMATIONTYPE4 { + O1_Type l2PseudoLength, // L2 pseudo length M + B4_Type skipIndicator, // skip indicator M + B4_Type rRProtocolDiscriminator, // RR protocol discriminator M + B8_Type msgType, // message type M + LocAreaId lai, // location area identification M + // OCTETSTRING [5] + CellSelParam cellSelParam, // cell selection parameters M + // OCTETSTRING [2] + RACHControlParam rACHControlParam, // rach control parameters M + // OCTETSTRING [3] + ChannelDescr cbchd optional, // cbch channel description O OCTETSTRING [4] + MobileAlloc cbchmobileAlloc optional, // mobile allocation C + // OCTETSTRING [3..6] + SI4RO si4roct optional // SI4 rest octets M + // OCTETSTRING [0..10] +}with { encode "GSM Spare Padding Rule2"} + +// ============================================================================= +// PDU Type Definition +// RR SYSTEM INFORMATION TYPE5 ntw -> ue/ms +// 3GPP TS 44.018 clause 9.1.37 +// The message has an L2 pseudo length of 18 octets +// ----------------------------------------------------------------------------- +type record SYSTEMINFORMATIONTYPE5 { + O1_Type l2PseudoLength, // L2 pseudo length M + B4_Type skipIndicator, // skip indicator M + B4_Type rRProtocolDiscriminator, // RR protocol discriminator M + B8_Type msgType, // message type M + NeighCellDescr bCCHFreqList // bcch frequency list M + // OCTETSTRING [16] +}with { encode "SACCHSysInfoSparePadding Rule4"} + +// ============================================================================= +// PDU Type Definition +// RR SYSTEM INFORMATION TYPE5bis ntw -> ue/ms +// 3GPP TS 44.018 clause 9.1.38 +// ----------------------------------------------------------------------------- +type record SYSTEMINFORMATIONTYPE5bis { + O1_Type l2PseudoLength, // L2 pseudo length M + B4_Type skipIndicator, // skip indicator M + B4_Type rRProtocolDiscriminator, // RR protocol discriminator M + B8_Type msgType, // message type M + NeighCellDescr extNeighBCCHFreqList // extended bcch frequency list of neighbour cells M + // OCTETSTRING [16] +}with { encode "SACCHSysInfoSparePadding Rule4"} + +// ============================================================================= +// PDU Type Definition +// RR SYSTEM INFORMATION TYPE6 ntw -> ue/ms +// 3GPP TS 44.018, 9.1.40 +// The message has an L2 pseudo length of 11 octets and a total length of 23 octets. +// ----------------------------------------------------------------------------- +type record SYSTEMINFORMATIONTYPE6 { + O1_Type l2PseudoLength, // L2 pseudo length M + B4_Type skipIndicator, // skip indicator M + B4_Type rRProtocolDiscriminator, // RR protocol discriminator M + B8_Type msgType, // message type M + O2_Type ci, // cell identity M + LocAreaId lai, // location area identification M + // OCTETSTRING [5] + CellOptionSACCH co, // cell options /SACCH M , + // OCTETSTRING [1] + NCCPermitted nCCPermitted, // ncc permitted M + // OCTETSTRING [1] + SI6RO si6roct // SI6 Rest Octets + // OCTETSTRING [7] +} with { encode "SACCHSysInfoSparePadding Rule4"} + +type union SysInfoMsg +{ + SYSTEMINFORMATIONTYPE1 si1, + SYSTEMINFORMATIONTYPE2 si2, + SYSTEMINFORMATIONTYPE3 si3, + SYSTEMINFORMATIONTYPE4 si4, + SYSTEMINFORMATIONTYPE5 si5, + SYSTEMINFORMATIONTYPE6 si6, + SYSTEMINFORMATIONTYPE13 si13, + SYSTEMINFORMATIONTYPE15 si15, + SYSTEMINFORMATIONTYPE2bis si2bis, + SYSTEMINFORMATIONTYPE2ter si2ter, + SYSTEMINFORMATIONTYPE2quater si2quater, + SYSTEMINFORMATIONTYPE5bis si5bis +}; + +// ============================================================================= +// Structured Type Definition +// parameters for common control channels +// ----------------------------------------------------------------------------- +type record CCCH_Info { + B3_Type bS_PA_MFRMS, // the number of 51-multiframes between transmission of paging messages. Definition see 3GPP TS 44.018 section 10.5.2.11 + B3_Type bS_AG_BLKS_RES // the number of blocks on each common control channel reserved for access grant messages. Definition see 3GPP TS 44.018 section 10.5.2.11 +}; + +// ============================================================================= +// Structured Type Definition +// Channel mode +// 3GPP TS 44.018 clause 10.5.2.6 +// 0 0 0 0 0 0 0 0 signalling only +// 0 0 0 0 0 0 0 1 speech full rate or half rate version 1 +// 0 0 1 0 0 0 0 1 speech full rate or half rate version 2 +// 0 1 0 0 0 0 0 1 speech full rate or half rate version 3 +// 0 1 1 0 0 0 0 1 data, 43.5 kbit/s (downlink)+14.5 kbps (uplink) +// 0 1 1 0 0 0 1 0 data, 29.0 kbit/s (downlink)+14.5 kbps (uplink) +// 0 1 1 0 0 1 0 0 data, 43.5 kbit/s (downlink)+29.0 kbps (uplink) +// 0 1 1 0 0 1 1 1 data, 14.5 kbit/s (downlink)+43.5 kbps (uplink) +// 0 1 1 0 0 1 0 1 data, 14.5 kbit/s (downlink)+29.0 kbps (uplink) +// 0 1 1 0 0 1 1 0 data, 29.0 kbit/s (downlink)+43.5 kbps (uplink) +// 0 0 1 0 0 1 1 1 data, 43.5 kbit/s radio interface rate +// 0 1 1 0 0 0 1 1 data, 32.0 kbit/s radio interface rate +// 0 1 0 0 0 0 1 1 data, 29.0 kbit/s radio interface rate +// 0 0 0 0 1 1 1 1 data, 14.5 kbit/s radio interface rate +// 0 0 0 0 0 0 1 1 data, 12.0 kbit/s radio interface rate +// 0 0 0 0 1 0 1 1 data, 6.0 kbit/s radio interface rate +// 0 0 0 1 0 0 1 1 data, 3.6 kbit/s radio interface rate +// ----------------------------------------------------------------------------- +type record ChMode { + IEI8_Type iei optional, // '01100011'B + B8_Type mode +}; +// ============================================================================= +// Structured Type Definition +// parameters for individual channel +// ----------------------------------------------------------------------------- +type record ChannelSpecificInfo { + DedCH_Info dedCH_Info optional, // parameters for dedicated channel. valid for combinations: 1, 2, 3, 5, 7, 8, 9, 10 + CCCH_Info cCCH_Info optional // parameters for common control channels: PCH, SCH, ... valid for combinations: 4, 5, 6 +}; + +// ============================================================================= +// Structured Type Definition +// Cipher mode setting +// 3GPP TS 44.018 clause 10.5.2.9 +// ----------------------------------------------------------------------------- +type record CipherModeSetting { + IEI4_Type iei optional, // '1001'B + B3_Type algId, // algorithm identifier + B1_Type startingCiph // starting ciphering, 1 = start +}; +// ============================================================================= +// Structured Type Definition +// parameters for dedicated channel +// In addition to ciphering algorithm the cipherMode specifies the initial ciphering mode of the physical channel in both transmission and receiving direction.by startingCiph bit. During ciphering mode setting procedure the ciphering mode of receiving direction can be changed by G_CL1_CipheringControl_REQ. +// Note1: The value of cipherMode dictates which of cipherKey or cipherKey128 shall be used by the SS +// ----------------------------------------------------------------------------- +type record DedCH_Info { + ChMode chMode, // channel mode see 3GPP TS 44.018 section 10.5.2.6 + CipherModeSetting cipherMode, // cipher mode setting see 3GPP TS 44.018 section 10.5.2.9 + B64_Type cipherKey, // (see Note1) + B128_Type cipherKey128, // (see Note1) @sic R5-144746 sic@ + B5_Type powerLevel, // Initial MS uplink transmission power level. This value is used in the L1 header of SACCH. + B7_Type timingAdvance // Initial timing advance. This value is used in the L1 header of SACCH.This field shall be set to the same value as in timingAdvance of G_CL1_CreateCell_REQ. +}; +// ============================================================================= +// Structured Type Definition +// The uSF_TNx field is not applicable when tNx = FALSE. +// ----------------------------------------------------------------------------- +type record DynamicAllocation { + B1_Type extendedAlloc, // 0 - dynamic allocation; 1 - extended dynamic allocation + B1_Type uSFGranularity, // 0 - one block; 1 - four blocks + PhysicalChId physicalChId , // Single PDCH or multislot-configured PDCHs + boolean tN0, // TRUE - time slot 0 is allocated; FALSE -- not allocated + B3_Type uSF_TN0 optional, // USF value for slot 0 + boolean tN1, // TRUE - time slot 1 is allocated; FALSE -- not allocated + B3_Type uSF_TN1 optional, // USF value for slot 1 + boolean tN2, // TRUE - time slot 2 is allocated; FALSE -- not allocated + B3_Type uSF_TN2 optional, // USF value for slot 2 + boolean tN3, // TRUE - time slot 3 is allocated; FALSE -- not allocated + B3_Type uSF_TN3 optional, // USF value for slot 3 + boolean tN4, // TRUE - time slot 4 is allocated; FALSE -- not allocated + B3_Type uSF_TN4 optional, // USF value for slot 4 + boolean tN5, // TRUE - time slot 5 is allocated; FALSE -- not allocated + B3_Type uSF_TN5 optional, // USF value for slot 5 + boolean tN6, // TRUE - time slot 6 is allocated; FALSE -- not allocated + B3_Type uSF_TN6 optional, // USF value for slot 6 + boolean tN7, // TRUE - time slot 7 is allocated; FALSE -- not allocated + B3_Type uSF_TN7 optional // USF value for slot 7 +}; +// ============================================================================= +// Structured Type Definition +// Parameters for Description of basic physical channel in frequency domain. +// macLength is the length of mac field = (NF div 8) + 1. NF is the number of frequencies in the cell allocation. +// mac i : mobile allocation RF channel i, i = 1, 2,..., NF. The mac i bit indicates whether or not the mobile allocation frequency list includes the i'th frequency in the cell allocation frequency list. In the cell allocation frequency list the absolute RF channel numbers are placed in increasing order of ARFCN, except that ARFCN 0, if included in the set, is put in the last position in the list. From I =1, 2,?? NF, for a RF channel belonging to the mobile allocation the mac i bit is coded with a "1"; for a RF channel not belonging to the mobile allocation the mac i bit is coded with a "0". If NF mod 8 <> 0 then bits from NF to 8*macLength must be coded with a "0" in each. +// ----------------------------------------------------------------------------- +type record FreqInfo { + B1_Type h, // h='1'B: hopping channel; h='0'B: non-hopping channel + B3_Type spr, // '000'B + B2_Type spr1 optional, // '00'B, if h = '0'B, otherwise OMIT + B6_Type maio optional, // mobile allocation index offset if h = '1'B, otherwise OMIT + bitstring hsn length(6) optional, // hopping sequence number if h = '1'B, otherwise OMIT + bitstring arfcn length(10) optional, // absolute RF channel number if h = '0'B, otherwise OMIT + FreqListNoIEI hoppingFreqList optional // hopping frequency list if h='1'B, otherwise OMIT. + // the definition see 3GPP TS 44.018 section 10.5.2.13 +}; +// ============================================================================= +// Structured Type Definition +// Frequency list without IEI +// GSM 44.018, 10.5.2.13 +// ----------------------------------------------------------------------------- +type record FreqListNoIEI { + O1_Type ielength optional, // OCTETSTRING [1] + octetstring fl // list of the absolute radio frequency channel numbers +}; + +// ============================================================================= +// Structured Type Definition +// Frequency short list +// GSM 44.018, 10.5.2.14 +// ----------------------------------------------------------------------------- +type record FreqListShort { + O1_Type iei, // '00000010'B + O9_Type fl // list of the absolute radio frequency channel numbers +}; + +// ============================================================================= +// Structured Type Definition +// Used in PCCO +// GSM 44.060, 11.2.4 +// ----------------------------------------------------------------------------- +type record GSMTargetCell { + B10_Type arfcn, + B6_Type bsic, + NC_MeasParams nCMeasParams, + B1_Type ncFreqMask, + NC_FreqList nCFreqList optional, // not present if ncFreqMask = 0 + B1_Type r98Mask, + B1_Type lsaMask optional, // not present if r98Mask = 0 + LSA_Param lSAParams optional, // not present if r98Mask = 0 or lsaMask = 0 + B1_Type r99Mask optional, // not present if r98Mask = 0 + B1_Type enhMask optional, // not present if r98Mask or r99Mask = 0 + ENH_MeasParam eNHMeasParams optional, // not present if r98Mask or r99Mask = 0 + B1_Type r4Mask optional, // not present if r98Mask or r99Mask = 0 + B1_Type cCNActive optional, // not present if r98Mask or r99Mask or r4Mask = 0 + B1_Type containerMask optional, // not present if r98Mask or r99Mask or r4Mask = 0 + B2_Type containerId optional, // not present if r98Mask or r99Mask or r4Mask or containerMask = 0 + B1_Type ccnMask optional, // not present if r98Mask or r99Mask or r4Mask = 0 + CCN_SupportDescr cCNSupportDescr optional, // not present if r98Mask or r99Mask or r4Mask or ccnMask = 0 + B1_Type r5Mask optional, // not present if r98Mask or r99Mask or r4Mask = 0 + B1_Type grntiXMask optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask = 0 + B4_Type gRNTIExtension optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or gRNTIXMask = 0 + B1_Type iuMask optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask = 0 + IuModeNeighCellParamsList iuModeNeighCellParams optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or iuMask = 0 + B1_Type ncIuMask optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask = 0 + NCCIuModeCapCellList nCIuModeCapCellList optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or ncIuMask = 0 + B1_Type gprs3GAddMeasParam2Mask optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask = 0 + B1_Type rptThresMask optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or gprs3GAddMeasParam2Mask = 0 + B6_Type fddReportThreshold optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or gprs3GAddMeasParam2Mask or rptThresMask = 0 + B1_Type r6Mask optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask = 0 + B1_Type cCN3GActive optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask = 0 + B1_Type r7Mask optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask = 0 + Rel7_700810Reporting reporting700_810 optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask or r7Mask = 0 + B1_Type r8Mask optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask or r7Mask = 0 + B1_Type eutran_CCN_Active optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask or r7Mask or r8Mask = 0 + B1_Type individualMask optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask or r7Mask or r8Mask = 0 + IndividualPriorities individualPrior optional // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask or r7Mask or r8Mask or individualMask = 0 +}; + +type record EUTRAN_TargetCell { + B16_Type earfcn, + B1_Type bwMask, + B3_Type bandwidth optional, // not present if bwMask = 0 + B9_Type cellIdentity +}; + +type record UTRAN_FDDTargetCell { + B14_Type fddArfcn, + B1_Type diversity, + B1_Type bwMask, + B3_Type fddBandwidth optional, // not present if bwMask = 0 + B9_Type scramblingCode +}; + +type record UTRAN_TDDTargetCell { + B14_Type tddArfcn, + B1_Type diversity, + B1_Type bwMask, + B3_Type tddBandwidth optional, // not present if bwMask = 0 + B7_Type cellParameter, + B1_Type syncCaseTSTD +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.018 clause 10.5.2.17 +// ----------------------------------------------------------------------------- +type record IARRO { + B1_Type mask1, + B5_Type extendedRA1 optional, // not present if mask1 = 0 + B1_Type mask2, + B5_Type extendedRA2 optional, // not present if mask2 = 0 + B1_Type mask3, + B5_Type extendedRA3 optional, // not present if mask3 = 0 + B1_Type mask4, + B5_Type extendedRA4 optional // not present if mask4 = 0 +}; + +// ============================================================================= +// Structured Type Definition +// 3GPP TS 44.018 clause 10.5.2.75 @sic R5s100135 sic@ +// ----------------------------------------------------------------------------- +type record IndividualPriorities { + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B1_Type deleteAllMask, + B3_Type geran_Priority optional, // not present if servCellMask = 0 + B1_Type g3Mask, + IndividualUTRANPriorityParams g3Params optional, // not present if g3Mask = 0 + B1_Type eutranMask, + IndividualEUTRANPriorityParams eutranParams optional, // not present if eutranMask = 0 + B1_Type durationMask, + B3_Type t3230TimeoutValue optional // not present if durationMask = 0 +}; + +type record IndividualUTRANPriorityParams { + B1_Type defUTRANPriorMask, + B3_Type defUTRANPriority optional, // not present if defUTRANPriorMask = 0 + RptdUTRANParams rptdIndivPriority optional, // + B1_Type endingRepetition // always 0 +}; + +type record of IndividualUTRANParams RptdUTRANParams; + +type record IndividualUTRANParams { + B1_Type Rptmask, // always 1 if this IE is present + RptdUtranFreq rptdUtranFreq optional, + B1_Type utranFreqEndingRepetition, // always 0 + B3_Type utranPriority +}; + +type record of UtranFreq RptdUtranFreq; + +type record UtranFreq { + B1_Type Rptmask, // always 1 if this IE is present + B14_Type utranFreq +}; + +type record of IndividualEUTRANParams RptdEUTRANParams; + +type record IndividualEUTRANParams { // @sic R5s110176 sic@ + B1_Type Rptmask, // always 1 if this IE is present + RptdEUTRANFreq rptdEutranFreq optional, + B3_Type eutranPriority +}; + +type record IndividualEUTRANPriorityParams { // @sic R5s100135 sic@ + B1_Type defEutranMask, + B3_Type defaultEutranPriority optional, // not present if defEutranMask = 0 + RptdEUTRANParams rptdEutranParams optional, + B1_Type eutranEndingRepetition // always 0 +}; + +// ============================================================================= +// Structured Type Definition +// Layer 1 Header of SACCH +// 3GPP TS 44.004 clause 7.2 +// ----------------------------------------------------------------------------- +type record L1Header { + B3_Type spr1, // spare bits + B5_Type mspwrlvl, // actual MS power level + B1_Type spr2, // spare bit + B7_Type ta // actual timing advance +}; +// ============================================================================= +// Structured Type Definition +// used in multi-slot configuration +// ----------------------------------------------------------------------------- +type record MultiSlotAllocation { + boolean tN0, // TRUE -- time slot 0 allocated; FALSE -- not allocated + ChannelCombination channelCombination0, // Channel Combination for time slot 0; not applicable if tN0 = FALSE + boolean tN1, // TRUE -- time slot 1 allocated; FALSE -- not allocated + ChannelCombination channelCombination1, // Channel Combination for time slot 1; not applicable if tN1 = FALSE + boolean tN2, // TRUE -- time slot 2 allocated; FALSE -- not allocated + ChannelCombination channelCombination2, // Channel Combination for time slot 2; not applicable if tN2 = FALSE + boolean tN3, // TRUE -- time slot 3 allocated; FALSE -- not allocated + ChannelCombination channelCombination3, // Channel Combination for time slot 3; not applicable if tN3 = FALSE + boolean tN4, // TRUE -- time slot 4 allocated; FALSE -- not allocated + ChannelCombination channelCombination4, // Channel Combination for time slot 4; not applicable if tN4 = FALSE + boolean tN5, // TRUE -- time slot 5 allocated; FALSE -- not allocated + ChannelCombination channelCombination5, // Channel Combination for time slot 5; not applicable if tN5 = FALSE + boolean tN6, // TRUE -- time slot 6 allocated; FALSE -- not allocated + ChannelCombination channelCombination6, // Channel Combination for time slot 6; not applicable if tN6 = FALSE + boolean tN7, // TRUE -- time slot 7 allocated; FALSE -- not allocated + ChannelCombination channelCombination7 // Channel Combination for time slot 7; not applicable if tN7 = FALSE +}; + +// ============================================================================= +// Structured Type Definition +// 44.018 10.5.2.81 +// @sic R5s130195 Baseline Moving sic@ +// ----------------------------------------------------------------------------- +type record PLMNIndex { + IEI4_Type iei, + B4_Type plmnIndex +}; + +// ============================================================================= +// Structured Type Definition +// The reduced frame number corresponding to the absolute frame number (FN) modulo 42432. +// see 3Gpp TS 44.018 section 10.5.2.38. The reduced frame number, FN modulo 42432 can be calculated in the fowllowing formula: 51 * ((t3 - t2) mod 26) + t3 + 1326 * t1_. +// ----------------------------------------------------------------------------- +type record RFN { + B5_Type t1_, // (FN div 1326) mod 32 + B6_Type t3, // FN mod 51 + B5_Type t2 // FN mod 26 +}; + +// ============================================================================= +// Structured Type Definition +// ----------------------------------------------------------------------------- +type record TalkerIdentity { + IEI8_Type iei, // @sic R5s110420 sic@ + Type4Length_Type iel, // @sic R5s110420 sic@ + B5_Type spare, + B3_Type fillerBits, + octetstring talkerIdentityField +}; + +// ============================================================================= +// Structured Type Definition +// ----------------------------------------------------------------------------- +type record TalkerPriorityStatus { + IEI8_Type iei, // @sic R5s110420 sic@ + Type4Length_Type iel, // @sic R5s110420 sic@ + B1_Type es, + B3_Type spare, + B1_Type uai, + B3_Type priority +}; + +// ============================================================================= +// Structured Type Definition +// used for down link and up link TBF +// ----------------------------------------------------------------------------- +type record TimeSlotAllocation { + PhysicalChId physicalChId, // Single PDCH or multi-slot configured PDCHs + boolean tN0, // TRUE - time slot 0 is allocated; FALSE -- not allocated + boolean tN1, // TRUE - time slot 1 is allocated; FALSE -- not allocated + boolean tN2, // TRUE - time slot 2 is allocated; FALSE -- not allocated + boolean tN3, // TRUE - time slot 3 is allocated; FALSE -- not allocated + boolean tN4, // TRUE - time slot 4 is allocated; FALSE -- not allocated + boolean tN5, // TRUE - time slot 5 is allocated; FALSE -- not allocated + boolean tN6, // TRUE - time slot 6 is allocated; FALSE -- not allocated + boolean tN7 // TRUE - time slot 7 is allocated; FALSE -- not allocated +}; + +group PDUTypes +{ +// ============================================================================= +// PDU Type Definition +// RR ASSSIGNMENT COMMAND ntw -> ue/ms +// 3GPP TS 44.018 claus 9.1.2 +// ----------------------------------------------------------------------------- +type record ASSIGNMENTCOMMAND { + B4_Type skipIndicator, // skip indicator M + B4_Type rRProtocolDiscriminator, // RR protocol discriminator M + MessageType msgType, // message type M + ChannelDescr ch1Descr_at, // description of the 1st channel, after time M OCTETSTRING [3] + PowerCommand powerCmd, // power command M OCTETSTRING [1] without IEI + FreqList freqList_at optional, // frequency list, after time C OCTETSTRING [4..132] + CellChDescr cellChDescr optional, // cell channel description O OCTETSTRING [17] + MultislotAlloc multiSlotConfig optional, // multislot allocation C OCTETSTRING [3..12] + ChMode ch1Mode optional, // mode of the 1st channel (channel set 1) O OCTETSTRING [2] + ChMode channelSet2Mode optional, // mode of channel set 2 O TV [2] + ChMode channelSet3Mode optional, // mode of channel set 3 O TV [2] + ChMode channelSet4mode optional, // mode of channel set 4 O TV [2] + ChMode channelSet5mode optional, // mode of channel set 5 O TV [2] + ChMode channelSet6mode optional, // mode of channel set 6 O TV [2] + ChMode channelSet7mode optional, // mode of channel set 7 O TV [2] + ChMode channelSet8mode optional, // mode of channel set 8 O TV [2] + ChannelDescr ch2Descr_at optional, // description of the 2nd channel, after time O TV [4] + ChMode2 ch2Mode optional, // mode 2 of the 2nd channel O TV [2] + MobileAlloc mobileAlloc_at optional, // mobile allocation after time C TLV [3..10] + StartingTime startingTime optional, // starting time O TV [3] + FreqList freqList_bt optional, // frequency list, before time C TLV [4..132] + ChannelDescr ch1Descr_bt optional, // description of the 1st channel, before time O TV [4] + ChannelDescr ch2Descr_bt optional, // description of the 2nd channel, before time O TV [4] + FreqChannelSeq frqchs_bt optional, // frequency channel sequence before time C TV [10] + MobileAlloc mobileAlloc_bt optional, // mobile allocation before time C TLV [3..10] + CipherModeSetting cphms optional, // cipher mode setting O TV [1] + VGCS_TargetMode vGCS_TargetMode optional, // VGCS target mode Indication O TLV [3] + MultiRateConfig mltiRateConfig optional, // multiRate configuration O TLV [4..8] + VGCSCiphParam vGCS_CipherParams optional // VGCS ciphering parameters O TLV [3-15] +}; + +// ============================================================================= +// PDU Type Definition +// RR ASSSIGNMENT COMPLETE ue/ms -> ntw +// 3GPP TS 44.018 clause 9.1.3 +// ----------------------------------------------------------------------------- +type record ASSIGNMENTCOMPLETE { + B4_Type skipIndicator, // skip indicator + B4_Type rRProtocolDiscriminator, // RR protocol discriminator + MessageType msgType, // message type + RR_Cause rRCau // RR cause without IEI +}; + +// ============================================================================= +// PDU Type Definition +// RR ASSSIGNMENT FAILURE ue/ms -> ntw +// 3GPP TS 44.018 clause 9.1.4 +// ----------------------------------------------------------------------------- +type record ASSIGNMENTFAILURE { + B4_Type skipIndicator, // skip indicator + B4_Type rRProtocolDiscriminator, // RR protocol discriminator + MessageType msgType, // message type + RR_Cause rRCau // RR cause without IEI +}; + +// ============================================================================= +// PDU Type Definition +// RR CHANNEL RELEASE ntw -> ue/ms +// 3GPP TS 44.018 clause 9.1.7 +// ----------------------------------------------------------------------------- +type record CHANNELRELEASE { + B4_Type skipIndicator, // skip indicator + B4_Type rRProtocolDiscriminator, // RR protocol discriminator + MessageType msgType, // message type + RR_Cause rRCau, // RR cuase + BA_Range bA_Range optional, // BA range O OCTETSTRING minimum 6 octets no up limit + GroupChannelDescr groupChannelDescr optional, // group channel description O OCTETSTRING[4..13] + GroupCipherKey groupCipherKey optional, // group cipher key number C OCTETSTRING[1] + GPRS_Resumption gPRS_Resumption optional, // GPRS resumptioon O OCTETSTRING[1] + BA_ListPref bA_ListPref optional, // BA list pref O OCTETSTRING at least 3 octets no up limit + UTRAN_FreqList uTRAN_FreqList optional, // UTRAN frequency list O OCTETSTRING[3.. + CellChDescr cellChannelDescr optional, // Cell Channel Descr O OCTETSTRING [17] + CellSelInd cellSelInd optional, // CellSelection indicator after release of all TCH and SDCCH O OCTETSTRING [4..] + EnhDTMCSRelInd enhDTMCSRelInd optional, // Enhanced DTM CS Release Indication O OCTETSTRING [1] + VGCSCiphParam vGCSCiphParam optional, // VGCS Ciphering Params O OCTETSTRING [3-15] + GroupChannelDescr2 grpChDescr2 optional, // Group Channel Descr 2 O OCTETSTRING [13] + TalkerIdentity talkerId optional, // Talker Id O TLV [3-20] + TalkerPriorityStatus talkerPriorityStatus optional, // Talker Priority Status O TLV [3] + VGCS_AMRConfig vGCS_AMRConfig optional, // VGCS AMR Config O TLV [3] + IndividualPriorities individPrior optional // Individual Priorities O TLV [3-?] +}; + +// ============================================================================= +// PDU Type Definition +// RR CHANNEL REQUEST ue/ms -> ntw +// 3GPP TS 44.08 clause 9.1.8 +// ----------------------------------------------------------------------------- +type record CHANNELREQUEST { + B8_Type estCauRandomRef // establishment cause / random reference M +}; + +// ============================================================================= +// PDU Type Definition +// RR CIPHERING MODE COMMAND ntw -> ue/ms +// 3GPP TS 44.018 clause 9.1.9 +// ----------------------------------------------------------------------------- +type record CIPHERINGMODECOMMAND { + B4_Type skipIndicator, // skip indicator + B4_Type rRProtocolDiscriminator, // RR protocol discriminator + MessageType msgType, // message type + CipherResponse cipherResponse, // cipher response + CipherModeSetting cipherModeSetting // cipher mode setting +}; + +// ============================================================================= +// PDU Type Definition +// RR CIPHERING MODE COMPLETE ue/ms -> ntw/ue +// 3GPP TS 44.018 clause 9.1.10 +// ----------------------------------------------------------------------------- +type record CIPHERINGMODECOMPLETE { + B4_Type skipIndicator, // skip indicator + B4_Type rRProtocolDiscriminator, // RR protocol discriminator + MessageType msgType, // message type + MobileIdentity mobileEquipId optional // mobile equipment identity O OCTETSTRING [10], 15 digits, BCD +}; + +// ============================================================================= +// PDU Type Definition +// RR CLASSMARK CHANGE ue/ms -> ntw +// 3GPP TS 44.018 clause 9.1.11 +// ----------------------------------------------------------------------------- +type record CLASSMARKCHANGE { + B4_Type skipIndicator, // skip indicator + B4_Type rRProtocolDiscriminator, // RR protocol discriminator + MessageType msgType, // message type + MS_Clsmk2 msclsmk, // mobile station classmark + MS_Clsmk3 additionalMsclsmk optional // additional mobile station classmark info C OCTETSTRING [14] +}; + +// ============================================================================= +// PDU Type Definition +// RR CLASSMARK ENQUIRY ntw -> ue/ms +// 3GPP TS 44.018 clause 9.1.12 +// ----------------------------------------------------------------------------- +type record CLASSMARKENQUIRY { + B4_Type skipIndicator, // skip indicator + B4_Type rRProtocolDiscriminator, // RR protocol discriminator + MessageType msgType, // message type + ClassmarkEnquiryMask mask optional // Classmark Enquiry Mask +}; + +// ============================================================================= +// PDU Type Definition +// DTM REQUEST ue/ms -> ntw +// 3GPP TS 44.018 clause 9.1.12i +// ----------------------------------------------------------------------------- +type record DTMREQUEST { + B4_Type skipIndicator, // skip indicator + B4_Type rRProtocolDiscriminator, // RR protocol discriminator + MessageType msgType, // message type + TLLI tLLI, + ChReqDescr2 chReqDescr // channel request descritption M LV OCTETSTRING [5-n] +}; + +// ============================================================================= +// DTM ASSSIGNMENT COMMAND ntw -> ue/ms +// 3GPP TS 44.018 claus 9.1.12e +// ----------------------------------------------------------------------------- +type record DTMASSIGNMENTCOMMAND { + B4_Type skipIndicator, // skip indicator M + B4_Type rRProtocolDiscriminator, // RR protocol discriminator M + MessageType msgType, // message type M + PowerCommand powerCmd, // power command M [1] without IEI + ChannelDescr csChDescr, // description of the CS channel M [3] + GPRSBroadCastInfo gprsBroadCastInfo, // GPRS Broadcast Information M LV [7-n] + CellChDescr cellChDescr optional, // cell channel description O [17] IEI=10 + ChMode chMode optional, // channel mode O TV [2] IEI=11 + FreqList freqList optional, // frequency list C TLV [4..132] IEI=12 + MobileAlloc mobileAlloc optional, // mobile allocation C TLV [3..10] IEI=13 + RRPacketUplinkAssignment ulPktChAssign optional, // uplink Packet Channel Assignment O TLV [3..n] IEI=15 + RRPacketDownlinkAssignment dlPktChAssign optional, // downlink Packet Channel Assignment O TLV [3..n] IEI=16 + MultiRateConfig mltiRateConfig optional, // multiRate configuration O TLV [4..8] IEI=17 + CipherModeSetting cphms optional, // cipher mode setting O TV [1] IEI=9 + MobileAlloc mobileAllocC2 optional, // mobile allocation C2 C TLV [3..10] IEI=18 + FreqList freqListC2 optional, // frequency list C2 C TLV [4..132] IEI=19 + RRPacketDownlinkAssignment2 dlPktChAssign2 optional, // downlink Packet Channel Assignment O TLV [3..n] IEI=20 + ChannelDescr3 ch1DescrC2 optional // description of the 1st channel, before time O TV [3] IEI=21 +}; + +type record GPRSBroadCastInfo { + O1_Type iel, // @sic R5s120178 sic@ + GPRS_CellOptions cellOptions, + GPRS_PowerControlParam powerCntrlParams, + bitstring spareBit optional +}; + +// ============================================================================= +// PDU Type Definition +// RR GPRS Suspension Request ue/ms -> ntw +// 3GPP TS 44.018 clause 9.1.13b +// ----------------------------------------------------------------------------- +type record GPRS_SUSPENSIONREQ { + B4_Type skipIndicator, // skip indicator + B4_Type rRProtocolDiscriminator, // RR protocol discriminator + MessageType msgType, // message type + TLLI tlli, // Temporary Logical Link Identity + RoutingAreaId raIdentification, // Routeing Area Identification + O1_Type cause, // SuspensionCause + ServiceSupport serviceSupport optional // Service support O OTSTETSTRING [2] +}; + +// ============================================================================= +// RR HANDOVER ACCESS ue/ms -> ntw +// 3GPP TS 44.018 clause 9.1.14 +// ----------------------------------------------------------------------------- +type record HANDOVERACCESS { + B8_Type hoRef +}; + +// ============================================================================= +// PS HANDOVER ACCESS ue/ms -> ntw +// 3GPP TS 44.060 clause 11.2.44 +// ----------------------------------------------------------------------------- +type record PSHANDOVERACCESS_8Bit { + B8_Type hoRef +}; + +type record PSHANDOVERACCESS_11Bit { + B8_Type hoRef, + B3_Type spare +}; + +// ============================================================================= +// HANDOVER To UTRAN COMMAND ntw -> ue/ms +// 3GPP TS 44.018 clause 9.1.15a +// ----------------------------------------------------------------------------- +type record INTERSYSTEMTOUTRANHANDOVERCOMMAND { + SkipIndicator skipIndicator, //BITSTRING [4] + ProtocolDiscriminator rrProtocolDiscriminator, //BITSTRING [4] + MessageType msgType, //BITSTRING [8] + octetstring hoCmd, //M OCTETSTRING LV [2-n] + CNtoMSTransparentInfo cnToMSInfo optional //O TLV [3-n] +}; + +// ============================================================================= +// HANDOVER To EUTRAN COMMAND ntw -> ue/ms +// 3GPP TS 44.018 clause 9.1.15d +// ----------------------------------------------------------------------------- +type record INTERSYSTEMTOEUTRANHANDOVERCOMMAND { + SkipIndicator skipIndicator, //BITSTRING [4] + ProtocolDiscriminator rrProtocolDiscriminator, //BITSTRING [4] + MessageType msgType, //BITSTRING [8] + octetstring hoCmd, //M OCTETSTRING LV [2-n] + CNtoMSTransparentInfo cnToMSInfo optional //M LV [2-n] +}; + +// ============================================================================= +// RR HANDOVER COMMAND ntw -> ue/ms +// 3GPP TS 44.018 clause 9.1.15 +// ----------------------------------------------------------------------------- +type record HANDOVERCOMMAND { + SkipIndicator skipIndicator, //BITSTRING [4] + ProtocolDiscriminator rrProtocolDiscriminator, //BITSTRING [4] + MessageType msgType, //BITSTRING [8] + CellDescr cellDescr, //M OCTETSTRING [2] + ChannelDescr ch1Descr_at, //description of the 1st channel, after time M OCTETSTRING [3] + B8_Type hoRef, //handover reference M BITSTRING [8] + PowerCmdAccessType powerCmdAccessType, //power command and access type M OCTETSTRING [1] + SyncInd syncInd optional, //synchronization indication O OCTETSTRING [1] + FreqListShort freqListShort_at optional, //frequency short list, after time C OCTETSTRING [10] + FreqList freqList_at optional, //frequency list, after time C OCTETSTRING [4..132] + CellChDescr cellChDescr optional, //cell channel description C OCTETSTRING [17] + MultislotAlloc mSlotAllocDescr optional, //Multislot Allocation C OCTETSTRING [3..12] + ChMode ch1Mode optional, //mode of the 1st channel O OCTETSTRING [2] + ChMode channelSet2Mode optional, //mode of channel set 2 OOCTETSTRING [2] + ChMode channelSet3Mode optional, //mode of channel set 3 OOCTETSTRING [2] + ChMode channelSet4Mode optional, //mode of channel set 4 OOCTETSTRING [2] + ChMode channelSet5Mode optional, //mode of channel set 5 OOCTETSTRING [2] + ChMode channelSet6Mode optional, //mode of channel set 6 OOCTETSTRING [2] + ChMode channelSet7Mode optional, //mode of channel set 7 OOCTETSTRING [2] + ChMode channelSet8Mode optional, //mode of channel set 8 OOCTETSTRING [2] + ChannelDescr ch2Descr_at optional, //description of the 2nd channel, after time O OCTETSTRING [4] + ChMode ch2Mode optional, //mode of the 2nd channel O OCTETSTRING [2] + FreqChannelSeq freqChSeq_at optional, //frequency channel sequence, after time C OCTETSTRING [10] + MobileAlloc mobileAlloc_at optional, //mobile allocation, after time C OCTETSTRING [3..10] + StartingTime startingTime optional, //starting time O OCTETSTRING [3] + TimeDiff realTimeDiff optional, //real time difference C OCTETSTRING [3] + TA ta optional, //timing advance C TV [2] + FreqListShort freqListShort_bt optional, //frequency short list, before time C TV [10] + FreqList freqList_bt optional, //frequency list, before time C TLV [4..132] + ChannelDescr ch1Descr_bt optional, //description of the 1st channel, before time O TV [4] + ChannelDescr ch2Descr_bt optional, //description of the 2nd channel, before time O TV [4] + FreqChannelSeq freqChSeq_bt optional, //frequency channel sequence, before time C TV [10] + MobileAlloc mobileAlloc_bt optional, //mobile allocation, before time C TLV [3..10] + CipherModeSetting ciphModeSetting optional, //cipher mode setting O TV [1] + VGCS_TargetMode vGCS_TargetMode optional, //VGCS target mode Indication O TLV [3] + MultiRateConfig multiRateConfig optional, //multiRate configuration TLV [4..8] + DynaARFCN_Mapping dynaARFCN_Mapping optional, //dynamic ARFCN mapping O TLV [6..34] + VGCSCiphParam vGCSCipherParams optional, // VGCS Ciphering Parameters O TLV [3-15] + DedicatedServiceInfo dedServiceInfo optional,// Dedicated Service Info O TV 2 + PLMNIndex plmnIndex optional // PLMN Index O TV 1 IEI = A @sic R5s130195 Baseline Moving sic@ +}; + +// ============================================================================= +// PDU Type Definition +// RR HANDOVER COMPLETE ue/ms -> ntw +// 3GPP TS 44.018 clause 9.1.16 +// ----------------------------------------------------------------------------- +type record HANDOVERCOMPLETE { + SkipIndicator skipIndicator, //BITSTRING [4] + ProtocolDiscriminator rrProtocolDiscriminator, //BITSTRING [4] + MessageType msgType, //BITSTRING [8] + RR_Cause rrCau, //OCTETSTRING [1] + MobileTimeDiff mobileObservedTimeDiff optional, // TLV OCTETSTRING [5] IEI=77 + MobileTimeDiffOnHyperFrame mobileTimeDiffOnHyper optional // TLV OCTETSTRING [7] IEI=67; @sic R5s110176 Baseline Moving sic@ +}; + +// ============================================================================= +// PDU Type Definition +// RR HANDOVER FAILURE ue/ms -> ntw +// 3GPP TS 44.018 clause 9.1.17 +// ----------------------------------------------------------------------------- +type record HANDOVERFAILURE { + SkipIndicator skipIndicator, //BITSTRING [4] + ProtocolDiscriminator rrProtocolDiscriminator, //BITSTRING [4] + MessageType msgType, //BITSTRING [8] + RR_Cause rrCau, //OCTETSTRING [1] + PS_Cause psCau optional //O TV OCTETSTRING [1] +}; + +// ============================================================================= +// PDU Type Definition +// RR IMMEDIATE ASSIGNMENT ntw -> ue/ms +// 3GPP TS 44.018 clause 9.1.18 +// The message has a fixed length of 23 octets. +// ----------------------------------------------------------------------------- +type record IMMEDIATEASSIGNMENT { + O1_Type l2PseudoLength, // L2 pseudo length + B4_Type skipIndicator, // skip indicator + B4_Type rRProtocolDiscriminator, // RR protocol discriminator + MessageType msgType, // message type + DedicatedModeOrTBF dedicatedModeOrTBF, // dedicated mode or TBF without IEI + PageModeIE pageMode, // page mode without IEI + ChannelDescr chDescr optional, // channel description C OCTETSTRING [3] + PacketChDescr packetChDescr optional, // packet channel description C OCTETSTRING [3] + ReqRef reqRef, // request reference M OCTETSTRING [3] + TA ta, // timing advance M OCTETSTRING [1] + MobileAlloc mobileAlloc, // mobile allocation, M OCTETSTRING [1..9] + StartingTime startingTime optional, // starting time O OCTETSTRING [3] + IARO iaroct optional // IA rest octets / frequency parameter, before time M +}with { encode "GSM Spare Padding Rule2"} + +// ============================================================================= +// PDU Type Definition +// RR IMMEDIATE ASSIGNMENT REJECT ntw -> ue/ms +// 3GPP TS 44.018 clause 9.1.20 +// The message has a fixed length of 23 octets. +// ----------------------------------------------------------------------------- +type record IMMEDIATEASSIGNMENTREJECT { + O1_Type l2PseudoLength, // L2 pseudo length + B4_Type skipIndicator, // skip indicator + B4_Type rRProtocolDiscriminator, // RR protocol discriminator + MessageType msgType, // message type + FeatureInd featureInd, // feature Indicator @sic R5s120178 Baseline Moving sic@ + PageModeIE pageMode, // page mode without IEI + ReqRef reqRef1, // request reference M OCTETSTRING [3] + H2_Type waitInd1, // wait indication M HEXSTRING [2] + ReqRef reqRef2, // request reference M OCTETSTRING [3] + H2_Type waitInd2, // wait indication M HEXSTRING [2] + ReqRef reqRef3, // request reference M OCTETSTRING [3] + H2_Type waitInd3, // wait indication M HEXSTRING [2] + ReqRef reqRef4, // request reference M OCTETSTRING [3] + H2_Type waitInd4, // wait indication M HEXSTRING [2] + IARRO iarroct // IAR rest octets M +}with { encode "GSM Spare Padding Rule2"} + +// ============================================================================= +// PDU Type Definition +// RR MEASUREMENT INFORMATION nw -> ue +// 3GPP TS 44.018 clause 9.1.54 +// ----------------------------------------------------------------------------- +type record MEASUREMENTINFORMATION { + B1_Type rR_ShortPD, + B5_Type msgType, // message type + B2_Type shortL2Header, + B1_Type baInd, + B1_Type baInd3G, + B1_Type mp_ChangeMark, + B4_Type miIndex, + B4_Type miCount, + B1_Type pwrCtrlInd, + B1_Type reportType, + B1_Type reportRate, + B1_Type invalidBSIC_Rpt, + B1_Type realMask, + GPRS_RealTimeDiffDescr realTimeDiff optional, // not present if realMask = 0 + B1_Type bsicMask, + GPRS_BSIC_Descr bsicDescr optional, // not present if bsicMask = 0 + B1_Type repMask, + ReportPriorityDescr reportPriorityDescr optional, // not present if repMask = 0 + B1_Type measMask, + GPRS_MeasParamDescr_PMO measParamDescr optional, // not present if measMask = 0 + B1_Type extMask, + ExtLengthDescr extensionLengh optional, // not present if extMask = 0 + B1_Type neighMask, + NeighCellDescr3G_MI neighCellDescr3G optional, // not present if neighMask = 0 + B1_Type meas3GMask, + MeasParamDescr3G_MI measParamDescr3G optional, // not present if meas3GMask = 0 + LH_B1_Type r5Mask, + B1_Type addParamMask optional, // not present if r5Mask = 0 + B1_Type thresMask optional, // not present if r5Mask = 0 or addParamMask = 0 + B6_Type fddRepThreshold2 optional, // not present if r5Mask = 0 or addParamMask or thresMask = 0 + LH_B1_Type r7Mask optional, // not present if r5Mask = 0 + Rel7_700810Reporting repThres700_810 optional, // not present if r5Mask or r7Mask = 0 + LH_B1_Type r8Mask optional, // not present if r5Mask or r7Mask = 0 + B1_Type supplMask optional, // not present if r5Mask or r7Mask or r8Mask = 0 + B1_Type utranStart optional, // not present if r5Mask or r7Mask or r8Mask or supplMask = 0 + B1_Type utranStop optional, // not present if r5Mask or r7Mask or r8Mask or supplMask = 0 + B1_Type measCtrlMask optional, // not present if r5Mask or r7Mask or r8Mask or supplMask = 0 + B1_Type defaultMask optional, // not present if r5Mask or r7Mask or r8Mask or supplMask or measCtrlMask= 0 + B1_Type defMeasCtrlUTRAN optional, // not present if r5Mask or r7Mask or r8Mask or supplMask or measCtrlMask or defaultMask = 0 + UTRANMeasCtrl_MIList rptdMeasCtrl optional, // not present if r5Mask or r7Mask or r8Mask or supplMask or measCtrlMask = 0 + B1_Type eutraMask optional, // not present if r5Mask or r7Mask or r8Mask = 0 + EUTRANParamsMI eutranMeasParams optional, // not present if r5Mask or r7Mask or r8Mask or eutraMask = 0 + B1_Type csgMask optional, // not present if r5Mask or r7Mask or r8Mask = 0 + EUTRAN_CSG_DescrList eutranCSGDescr optional, // not present if r5Mask or r7Mask or r8Mask or csgMask = 0 + LH_B1_Type r9Mask optional, // not present if r5Mask or r7Mask or r8Mask = 0 + B1_Type csg3GMask optional, // not present if r5Mask or r7Mask or r8Mask or r9Mask = 0 + CSG_3G_Descr csg_3GDescr optional, // not present if r5Mask or r7Mask or r8Mask or r9Mask or csg3GMask = 0 + B1_Type csgCellRptMask optional, // not present if r5Mask or r7Mask or r8Mask or r9Mask = 0 + UTRAN_CSGCellReportDescr utranCSGCellsReport optional // not present if r5Mask or r7Mask or r8Mask or r9Mask or csgCellRptMask = 0 +}; + // ============================================================================= +// PDU Type Definition +// RR MEASUREMENT REPORT ue/ms -> ntw +// 3GPP TS 44.018 clause 9.1.21 +// ----------------------------------------------------------------------------- +type record MEASUREMENTREPORT { + B4_Type skipIndicator, // skip indicator + B4_Type rRProtocolDiscriminator, // RR protocol discriminator + MessageType msgType, // message type + MeasResults measResults // measurement results +}; + +// ============================================================================= +// PDU Type Definition +// RLC/MAC Control Block format +// ----------------------------------------------------------------------------- +type record PACKETCONTROLACKNOWLEDGEMENT { + B6_Type msgType, // Message type + octetstring tLLI length(4), + B2_Type ctrlAck, + B1_Type mask optional, + B1_Type rRBPMask optional, // not present if mask=0 + B3_Type tn_RRBP optional, // not present if mask=0 or if rRBPMask=0 + B1_Type gRNTIMask optional, // not present if mask=0 + B4_Type gRNTIExt optional, // not present if mask=0 or if gRNTIMask=0 + B1_Type rel6mask optional, + B1_Type extMask optional, // not present if rel6mask = 0 + B9_Type ctrlAckExt optional, // not present if rel6mask or extMask = 0 + bitstring paddingBits optional // uplink, so have to receive this in TTCN +}; + +// ============================================================================= +// PDU Type Definition +// This message is sent on the PACCH by the network to the mobile station to command the mobile to change to a new cell. +// TS 3GPP 44.060 clause 11.2.43 +// SS to add padding bits to RLC block size +// ----------------------------------------------------------------------------- +type record PSHANDOVERCOMMAND { + B6_Type msgType, // Message type + B2_Type pAGE_MODE, // Normal paging + B1_Type globalTFImask, + GlobalTFI gLOBAL_TFI optional, // not present if globalTFImask=1 + B2_Type containerId optional, // not present if globalTFImask=1 + B2_Type payloadMask optional, // not present if globalTFImask=1 + B2_Type aGbModeMask optional, // only present if globalTFImask=0 and payloadMask=00 + PSHO_RResource psHORadioResource optional, // only present if globalTFImask=0 and payloadMask=00 and aGbModeMask=00 + PSHO_RResource2 psHORadioResource2 optional, // only present if globalTFImask=0 and payloadMask=00 and aGbModeMask=01 + B1_Type nasMask optional, // only present if globalTFImask=0 and payloadMask=00 + B7_Type nasContainerLength optional, // only present if globalTFImask=0 and payloadMask=00 and nasMask=1 + octetstring nasContainerData optional, // only present if globalTFImask=0 and payloadMask=00 and nasMask=1 + B8_Type rrcContainerLength_UTRAN optional, // only present if globalTFImask=0 and payloadMask=01 + octetstring rrcContainerData_UTRAN optional, // only present if globalTFImask=0 and payloadMask=01 + B8_Type rrcContainerLength_EUTRAN optional, // only present if globalTFImask=0 and payloadMask=10 + octetstring rrcContainerData_EUTRAN optional, // only present if globalTFImask=0 and payloadMask=10 + B1_Type maskR8 optional, // not present if globalTFImask=1 + B1_Type ccnMask optional, // not present if globalTFImask=1 or if maskR8=0 + B1_Type eutranCCNActive optional, // not present if globalTFImask=1 or if maskR8=0 or if ccnMask=0 + B1_Type measMask optional, // not present if globalTFImask=1 or if maskR8=0 + MeasCtrlParams measCtrlParams optional, // not present if globalTFImask=1 or if maskR8=0 or if measMask=0 + B1_Type maskR9 optional, // not present if globalTFImask=1 or if maskR8=0 + B1_Type enhancedFlexTimeslotAss optional, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 + B1_Type emstMask optional, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 + B1_Type emstNWCap optional, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 or if emstMask=1 + B1_Type dlEntity2Mask optional, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 or emstMask=0 + RLCEntity dlRLCEntity2 optional, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 or emstMask=0 or if dlEntity2Mask=0 + B1_Type dlEntity3Mask optional, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 or emstMask=0 or if dlEntity2Mask=0 + RLCEntity dlRLCEntity3 optional, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 or emstMask=0 or if dlEntity2Mask=0 or if dlEntity3Mask=0 + B1_Type ulEntity2Mask optional, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 or emstMask=0 + RLCEntity ulRLCEntity2 optional, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 or emstMask=0 or if ulEntity2Mask=0 + B1_Type ulEntity3Mask optional, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 or emstMask=0 or if ulEntity2Mask=0 + RLCEntity ulRLCEntity3 optional, // not present if globalTFImask=1 or if maskR8=0 or if maskR9=0 or emstMask=0 or if ulEntity2Mask=0 or if ulEntity3Mask=0 + B1_Type r10Mask optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 @sic R5s120178 sic@ + B1_Type dlEMSRMask optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or if r10Mask = 0 @sic R5s120178 sic@ + RptdAddPFC emsrAddPFC1_dl optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 or if dlEMSRMask = 0 @sic R5s120178 sic@ + RptdAddPFC emsrAddPFC2_dl optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 or if dlEMSRMask = 0 @sic R5s120178 sic@ + RptdAddPFC emsrAddPFC3_dl optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 or if dlEMSRMask = 0 @sic R5s120178 sic@ + B1_Type ulEMSRMask optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or if r10Mask = 0 @sic R5s120178 sic@ + RptdAddPFC emsrAddPFC1_ul optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 or if ulEMSRMask = 0 @sic R5s120178 sic@ + RptdAddPFC emsrAddPFC2_ul optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 or if ulEMSRMask = 0 @sic R5s120178 sic@ + RptdAddPFC emsrAddPFC3_ul optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 or if ulEMSRMask = 0 @sic R5s120178 sic@ + B1_Type r11Mask optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 @sic R5s130195 Baseline Moving sic@ + B1_Type plmnMask optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or if r10Mask = 0 or r11Mask = 0 @sic R5s130195 Baseline Moving sic@ + B3_Type plmnIndexSelected optional // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 or r11Mask = 0 or if plmnMask = 0 @sic R5s130195 Baseline Moving sic@ +} with { encode "GPRSPadding Rule1" } + +// ============================================================================= +// PDU Type Definition +// This message is sent on the PCCCH or PACCH by the network to the mobile station to assign downlink resources. TS 3GPP 44.060 clause 11.2.7 +// SS to add padding bits to RLC block size +// ----------------------------------------------------------------------------- +type record PACKETDOWNLINKASSIGNMENT { + B6_Type msgType, // Message type + B2_Type pAGE_MODE, // Normal paging + B1_Type persistenceLevelMask, + B4_Type persistenceLevel1 optional, // not Present if persistenceLevelMask=0 + B4_Type persistenceLevel2 optional, // not Present if persistenceLevelMask=0 + B4_Type persistenceLevel3 optional, // not Present if persistenceLevelMask=0 + B4_Type persistenceLevel4 optional, // not Present if persistenceLevelMask=0 + B1_Type globalTFImask, + GlobalTFI gLOBAL_TFI optional, // not present if globalTFImask=1 + B1_Type mask2 optional, // not present if globalTFImask=0 + octetstring tLLI length(4) optional, // not present if globalTFImask=0 and mask2=1 + B1_Type messageEscape, // @sic R5s110176 sic@ + B2_Type mACMode, + B1_Type rLCMode, + B1_Type controlAck, + B8_Type timeslotAllocation, + PacketTimingAdvance pktTimingAdvance, + B1_Type mask1, + B4_Type p0 optional, // not present if mask1 = 0 + B1_Type spareBit2 optional, // not present if mask1 = 0. set to '0'B if present + B1_Type pRMode optional, // not present if mask1 = 0 + B1_Type freqParamMask, + FreqParam freqParams optional, // not present if freqParamMask = 0 + B1_Type tfiMask, + B5_Type dlTFIAssignment optional, // not present if tfiMask = 0 + B1_Type pcMask, + PowerControlParam powerCtrlParams optional, // not present if pcMask = 0 + B1_Type startTimeMask, + StartingFrameNumberDscr tbfStartTime optional, // not present if startTimeMask = 0 + B1_Type spareBit3, // set to '0'B + B1_Type r99Mask optional, + B1_Type egprsMask optional, // not present if r99mask = 0 + EGPRSWindowSize egprsWindowSize optional, // not present if r99mask = 0 or if egprsMask=0 + B2_Type linkQualMeasMode optional, // not present if r99mask = 0 or if egprsMask=0 + B1_Type bepMask optional, // not present if r99mask = 0 or if egprsMask=0 + B4_Type bepPeriod2 optional, // not present if r99mask = 0 or if egprsMask=0 or if bepMask=0 + B1_Type pktXTAMask optional, // not present if r99mask = 0 + B2_Type pktExtendedTA optional, // not present if r99mask = 0 or if pktXTAMask=0 + B1_Type compactMask optional, // not present if r99mask = 0 + CompactReducedMA compactReducedMA optional, // not present if r99mask = 0 or if compactMask=0 + B1_Type r5Mask optional, // not present if r99mask = 0 + B1_Type rBIdMask optional, // not present if r99mask = 0 or if r5Mask=0 + B5_Type rBId optional, // not present if r99mask = 0 or if r5Mask=0 or if rBIdMask=0 + B1_Type grntiXMask optional, // not present if r99mask = 0 or if r5Mask=0 or if rBIdMask=0 + B4_Type gRNTIExtension optional, // not present if r99mask = 0 or if r5Mask=0 or if rBIdMask=0 or if grntiXMask=0 + B1_Type ulCtrlMask optional, // not present if r99mask = 0 or if r5Mask=0 or if rBIdMask=0 + B3_Type ulCtrlTimeslot optional, // not present if r99mask = 0 or if r5Mask=0 or if rBIdMask=0 or if ulCtrlMask=0 + B1_Type hfnMask optional, // not present if r99mask = 0 or if r5Mask=0 or if rBIdMask=0 + B1_Type hfnLSB optional, // not present if r99mask = 0 or if r5Mask=0 or if rBIdMask=0 or if hfnMask=0 + B1_Type r6Mask optional, // not present if r99mask = 0 + B1_Type pfiMask optional, // not present if r99mask = 0 or if r6Mask = 0 + B7_Type pFI optional, // not present if r99mask = 0 or if r6Mask = 0 or if pfiMask = 0 + B1_Type r7Mask optional, // not present if r99mask = 0 or if r6Mask = 0 + B1_Type npmMask optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 + B5_Type npmTransferTime optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if npmMask = 0 + B1_Type r9Mask optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 @sic R5s110176 sic@ + B1_Type upperLayerStartForUMInd optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 @sic R5s110176 sic@ + B1_Type emstMask optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 @sic R5s110176 sic@ + RLCEntity rlcEntity2 optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or emstMask = 0 @sic R5s110176 sic@ + B1_Type entity3Mask optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or emstMask = 0 @sic R5s110176 sic@ + RLCEntity rlcEntity3 optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or emstMask = 0 or entity3Mask = 0 @sic R5s110176 sic@ + B1_Type r10Mask optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 @sic R5s120178 sic@ + RptdAddPFC emsrAddPFC1 optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 @sic R5s120178 sic@ + RptdAddPFC emsrAddPFC2 optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 @sic R5s120178 sic@ + RptdAddPFC emsrAddPFC3 optional, // not present if r99mask = 0 or if r6Mask = 0 or if r7Mask = 0 or if r9Mask = 0 or r10Mask = 0 @sic R5s120178 sic@ + PktDlDualCarrier dualCarrier optional // only present if messageEscape = 1 +}with { encode "GPRSPadding Rule1" } + +// ============================================================================= +// PDU Type Definition +// uplink message 44.060 clause 11.2.17b +// Reference: 3GPP TS 44.060 clause 11.2.17b +// ----------------------------------------------------------------------------- +type record PACKETSISTATUS { + B6_Type msgType, // Message type + GlobalTFI globalTFI, + B3_Type bCCHChangeMark, + SIMessageList rcvdSIList, + UnknownSIList rcvdUnknownSIList, + B1_Type rel6Mask optional, + B1_Type pSCSI_Support optional, // not present if rel6Mask = 0 + B1_Type ps_RelReq optional, // not present if rel6Mask = 0 + bitstring paddingBits optional // uplink, so need to handle padding bits +}; + +// ============================================================================= +// PDU Type Definition +// ref 3GPP 44.060 clause 11.2.4 +// ----------------------------------------------------------------------------- +type record PACKETCELLCHANGEORDER { + B6_Type msgType, // Message type + B2_Type pAGE_MODE, // Normal paging + B1_Type globalTFImask, + GlobalTFI gLOBAL_TFI optional, // not present if globalTFImask=1 + B1_Type mask2 optional, // not present if globalTFImask=0 + octetstring tLLI length(4) optional, // not present if globalTFImask=0 and mask2=1 + B1_Type cellTypeMask, + B2_Type msgEscape optional, // not present if cellTypeMask = 0 + B1_Type immediateRel, + GSMTargetCell gsmTargetCell optional, // not present if cellTypeMask = 1 + B1_Type fddMask optional, // not present if cellTypeMask = 0 + UTRAN_FDDTargetCell fddTargetCell optional, // not present if cellTypeMask = 0 or fddMask = 0 + B1_Type tddMask optional, // not present if cellTypeMask = 0 + UTRAN_TDDTargetCell tddTargetCell optional, // not present if cellTypeMask = 0 or tddMask = 0 + B1_Type r5Mask optional, // not present if cellTypeMask = 0 + B1_Type grntiXMask optional, // not present if cellTypeMask or r5Mask = 0 + B4_Type gRNTIExtension optional, // not present if cellTypeMask or r5Mask or gRNTIXMask = 0 + B1_Type r8Mask optional, // not present if cellTypeMask or r5Mask = 0 + B1_Type eutranMask optional, // not present if cellTypeMask r5Mask or r8Mask = 0 + EUTRAN_TargetCell eutranTargetCell optional, // not present if cellTypeMask r5Mask or r8Mask or eutranMask = 0 + B1_Type individualMask optional, // not present if cellTypeMask r5Mask or r8Mask = 0 + IndividualPriorities individualPrior optional // not present if cellTypeMask r5Mask or r8Mask or individualMask = 0 +}with { encode "GPRSPadding Rule1" } + +// ============================================================================= +// PDU Type Definition +// ref 3GPP 44.060 clause 11.2.9b +// ----------------------------------------------------------------------------- +type record PACKETMEASUREMENTORDER { + B6_Type msgType, // Message type + B2_Type pAGE_MODE, // Normal paging + B1_Type globalTFImask, + GlobalTFI gLOBAL_TFI optional, // not present if globalTFImask=1 + B1_Type mask2 optional, // not present if globalTFImask=0 + octetstring tLLI length(4) optional, // not present if globalTFImask=0 and mask2=1 + B3_Type pMOIndex, + B3_Type pMOCount, + B1_Type ncMask, + NC_MeasParams nCMeasParams optional, // not present if ncMask = 0 + B1_Type ncFreqMask optional, // not present if ncMask = 0 + NC_FreqList nCFreqList optional, // not present if ncMask = 0 or ncFreqMask = 0 + B1_Type spareBit, // set to '0'B + B1_Type r98Mask, + B1_Type lsaMask optional, // not present if r98Mask = 0 + LSA_Param lSAParams optional, // not present if r98Mask = 0 or lsaMask = 0 + B1_Type r99Mask optional, // not present if r98Mask = 0 + B1_Type enhMask optional, // not present if r98Mask or r99Mask = 0 + ENH_MeasParam_PMO eNHMeasParams optional, // not present if r98Mask or r99Mask = 0 + B1_Type r4Mask optional, // not present if r98Mask or r99Mask = 0 + B1_Type cCNActive optional, // not present if r98Mask or r99Mask or r4Mask = 0 + B1_Type ccnMask optional, // not present if r98Mask or r99Mask or r4Mask = 0 + CCN_SupportDescr cCNSupportDescr optional, // not present if r98Mask or r99Mask or r4Mask or ccnMask = 0 + B1_Type r5Mask optional, // not present if r98Mask or r99Mask or r4Mask = 0 + B1_Type grntiXMask optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask = 0 + B4_Type gRNTIExtension optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or gRNTIXMask = 0 + B1_Type iuMask optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask = 0 + IuModeNeighCellParams iuModeNeighCellParams optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or iuMask = 0 + B1_Type ncIuMask optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask = 0 + NCCIuModeCapCellList nCIuModeCapCellList optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or ncIuMask = 0 + B1_Type gprs3GAddMeasParam2Mask optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask = 0 + B1_Type rptThresMask optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or gprs3GAddMeasParam2Mask = 0 + B6_Type fddReportThreshold optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or gprs3GAddMeasParam2Mask or rptThresMask = 0 + B1_Type r6Mask optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask = 0 + B1_Type cCN3GActive optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask = 0 + B1_Type r7Mask optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask = 0 + Rel7_700810Reporting reporting700_810 optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask or r7Mask = 0 + B1_Type r8Mask optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask or r7Mask = 0 + B1_Type indMask optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask or r7Mask or r8Mask = 0 + B1_Type baInd3G optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask or r7Mask or r8Mask or indMask = 0 + B1_Type pmoInd optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask or r7Mask or r8Mask or indMask = 0 + B1_Type priorEutranMask optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask or r7Mask or r8Mask = 0 + B1_Type servingCellMask optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask or r7Mask or r8Mask or priorEutranMask = 0 + GSMPriorityParams servingCellPrioParam optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask or r7Mask or r8Mask or priorEutranMask or servingCellMask = 0 + B1_Type prioParam3GMask optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask or r7Mask or r8Mask or priorEutranMask = 0 + Priority3GParams prioParam3G optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask or r7Mask or r8Mask or priorEutranMask or prioParam3GMask = 0 + B1_Type eutranMask optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask or r7Mask or r8Mask or priorEutranMask = 0 + B1_Type eutran_CCN_Active optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask or r7Mask or r8Mask or priorEutranMask or eutranMask = 0 + EUTRANParams eutranParam optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask or r7Mask or r8Mask or priorEutranMask or eutranMask = 0 + B1_Type individualMask optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask or r7Mask or r8Mask = 0 + IndividualPriorities individualPrior optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask or r7Mask or r8Mask or individualMask = 0 + B1_Type csg_3GMask optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask or r7Mask or r8Mask = 0 + CSG_3G_Descr csg_3GDescr optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask or r7Mask or r8Mask or csg_3GMask = 0 + B1_Type eutran_Csg_Mask optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask or r7Mask or r8Mask = 0 + EUTRAN_CSG_Descr eutran_Csg_Descr optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask or r7Mask or r8Mask or eutran_Csg_Mask = 0 + B1_Type eutranMeasMask optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask or r7Mask or r8Mask = 0 + MeasCtrlParams eutranMeasCtrlParams optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask or r7Mask or r8Mask or eutranMeasMask = 0 + B1_Type r9Mask optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask or r7Mask or r8Mask = 0 + B1_Type enhancedMask optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask or r7Mask or r8Mask or r9Mask = 0 + ENH_CellReselectParamsList enh_CellReselect optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask or r7Mask or r8Mask or r9Mask or enhancedMask = 0 + B1_Type csgCellRptMask optional, // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask or r7Mask or r8Mask or r9Mask = 0 + CSG_CellReportDescr csgCellRpt optional // not present if r98Mask or r99Mask or r4Mask or r5Mask or r6Mask or r7Mask or r8Mask or r9Mask or csgCellRptMask = 0 +}with { encode "GPRSPadding Rule1" } + +// ============================================================================= +// PDU Type Definition +// ref 3GPP 44.060 v5a0 clause 11.2.9 +// ----------------------------------------------------------------------------- +type record PACKETMEASUREMENTREPORT { + B6_Type msgType, // Message type + octetstring tLLI length(4), + B1_Type psi5Mask, + B2_Type psi5ChangeMark optional, // not present if psi5Mask = 0 + B1_Type ncMask, // @sic GP-040806, R5s130241 sic@ + B1_Type ncMode, // ncMask always = 0 // @sic GP-040806, R5s120519 sic@ + NC_MeasReport nCMeasReport, // ncMask always = 0 // @sic GP-040806, R5s120519 sic@ + B1_Type r99Mask, // @sic R5s120519, R5s130241 sic@ + B1_Type baMask optional, // not present if r99Mask = 0 + B1_Type psiMask optional, // not present if r99Mask = 0 or baMask = 0 + B1_Type baUsed optional, // not present if r99Mask = 0 or baMask = 0 or psiMask = 1 + B1_Type ba3GUsed optional, // not present if r99Mask = 0 or baMask = 0 or psiMask = 1 + B2_Type psi3ChangeMark optional, // not present if r99Mask = 0 or baMask = 0 or psiMask = 0 + B1_Type pmoUsed optional, // not present if r99Mask = 0 or baMask = 0 + B1_Type reportMask optional, // not present if r99Mask = 0 + Meas3GReport meas3GReport optional, // not present if r99Mask = 0 or reportMask = 0 + B1_Type r5Mask optional, // not present if r99Mask = 0 + B1_Type grntiXMask optional, // not present if r99Mask or r5Mask = 0 + B4_Type gRNTIExtension optional, // not present if r99Mask or r5Mask or gRNTIXMask = 0 + B1_Type r8Mask optional, // not present if r99Mask or r5Mask = 0 + B1_Type eutranRptMask optional, // not present if r99Mask or r5Mask or r8Mask = 0 + EUTRANMeasReport eutranMeasReport optional, // not present if r99Mask or r5Mask or r8Mask or eutranMask = 0 + B1_Type r9Mask optional, // not present if r99Mask or r5Mask or r8Mask = 0 + B1_Type utranMask optional, // not present if r99Mask or r5Mask or r8Mask or r9Mask = 0 + UTRANCSGReport utranCSGReport optional, // not present if r99Mask or r5Mask or r8Mask or r9Mask or utranMask = 0 + B1_Type eutranMask optional, // not present if r99Mask or r5Mask or r8Mask or r9Mask = 0 + EUTRANCSGReport eutranCSGReport optional, // not present if r99Mask or r5Mask or r8Mask or r9Mask or eutranMask = 0 + bitstring paddingBits optional // uplink, so have to receive this in TTCN +} // @sic R5s120715 sic@ + +// ============================================================================= +// PDU Type Definition +// ref 3GPP 44.060 clause 11.2.2a +// ----------------------------------------------------------------------------- +type record PACKETCELLCHANGECONTINUE { + B6_Type msgType, // Message type + B2_Type pAGE_MODE, // Normal paging + B1_Type globalTFImask, + GlobalTFI gLOBAL_TFI optional, // not present if globalTFImask=1 + B1_Type gsmMask, + B10_Type arfcn optional, // not present if gsmMask = 0 + B6_Type bsic optional, // not present if gsmMask = 0 + B2_Type containerId optional // not present if gsmMask = 0 +}with { encode "GPRSPadding Rule1" } + +// ============================================================================= +// PDU Type Definition +// ref 3GPP 44.060 clause 11.2.3 +// ----------------------------------------------------------------------------- +type record PACKETCELLCHANGEFAILURE { + B6_Type msgType, // Message type + O4_Type tlli_GRNTI, + B10_Type arfcn, + B6_Type bsic, + B4_Type cause, + B1_Type r99Mask, + B1_Type fddMask optional, // not present if r99Mask = 0 + UTRAN_FDDTargetCell fddTargetCell optional, // not present if r99Mask = 0 or fddMask = 0 + B1_Type tddMask optional, // not present if r99Mask = 0 + UTRAN_TDDTargetCell tddTargetCell optional, // not present if r99Mask = 0 or tddMask = 0 + B1_Type r5Mask optional, // not present if r99Mask = 0 + B1_Type grntiXMask optional, // not present if r99Mask or r5Mask = 0 + B4_Type gRNTIExtension optional, // not present if r99Mask or r5Mask or gRNTIXMask = 0 + B1_Type r8Mask optional, // not present if r99Mask or r5Mask = 0 + B1_Type eutranMask optional, // not present if r99Mask or r5Mask or r8Mask = 0 + EUTRAN_TargetCell eutranTargetCell optional, // not present if r99Mask or r5Mask or r8Mask or eutranMask = 0 + B1_Type rel9Mask optional, // not present if r99Mask or r5Mask or rel8Mask = 0 + B1_Type utranCSGMask optional, // not present if r99Mask or r5Mask or rel8Mask or rel9Mask = 0 + UTRANCSGCell uCSGTargetCell optional, // not present if r99Mask or r5Mask or rel8Mask or rel9Mask or utranCSGMask = 0 + B1_Type eutranCSGMask optional, // not present if r99Mask or r5Mask or rel8Mask or rel9Mask = 0 + EUTRANCSGCell eCSGTargetCell optional, // not present if r99Mask or r5Mask or rel8Mask or rel9Mask or eutranCSGMask = 0 + bitstring paddingBits optional // uplink, so have to receive this in TTCN +} // @sic R5s120715 sic@ + +// ============================================================================= +// PDU Type Definition +// ref 3GPP 44.060 clause 11.2.3a +// ----------------------------------------------------------------------------- +type record PACKETCELLCHANGENOTIFICATION { + B6_Type msgType, // Message type + GlobalTFI gLOBAL_TFI, + B1_Type gsmMask, + B10_Type arfcn optional, // not present if gsmMask = 1 + B6_Type bsic optional, // not present if gsmMask = 1 + B1_Type rel6Mask optional, // not present if gsmMask = 0 + TargetCell3G target3GCell optional, // not present if gsmMask = 0 or rel6Mask = 1 + B1_Type rel8Mask optional, // not present if gsmMask = 0 or rel6Mask = 0 + B1_Type arfcnMask optional,// not present if gsmMask = 0 or rel6Mask = 0 or rel8Mask = 1 + B10_Type earfcn optional, // not present if gsmMask = 0 or rel6Mask = 0 or rel8Mask = 1 or arfcnMask = 0 + B6_Type ebsic optional, // not present if gsmMask = 0 or rel6Mask = 0 or rel8Mask = 1 or arfcnMask = 0 + B1_Type e3GMask optional, // not present if gsmMask = 0 or rel6Mask = 0 or rel8Mask = 1 + TargetCell3G etarget3GCell optional, // not present if gsmMask = 0 or rel6Mask = 0 or rel8Mask = 1 or e3GMask = 0 + B1_Type eTargetMask optional, // not present if gsmMask = 0 or rel6Mask = 0 or rel8Mask = 1 + EUTRAN_TargetCell EUTRAN_TargetCell optional,// not present if gsmMask = 0 or rel6Mask = 0 or rel8Mask = 1 or eTargetMask = 0 + B6_Type eutranRepQuantity optional,// not present if gsmMask = 0 or rel6Mask = 0 or rel8Mask = 1 or eTargetMask = 0 + B1_Type eCCNRptMask optional, // not present if gsmMask = 0 or rel6Mask = 0 or rel8Mask = 1 + EUTRAN_CCNMeasReport eCCNMeasReport optional,// not present if gsmMask = 0 or rel6Mask = 0 or rel8Mask = 1 or eCCNRptMask = 0 + B1_Type rel9Mask optional, // not present if gsmMask = 0 or rel6Mask = 0 or rel8Mask = 0 + B1_Type csgMask optional, // not present if gsmMask = 0 or rel6Mask = 0 or rel8Mask = 0 or rel9Mask = 1 + UTRANCSGReport uCSGMeasRpt optional, // not present if gsmMask = 0 or rel6Mask = 0 or rel8Mask = 0 or rel9Mask = 1 or or csgMask = 0 + EUTRANCSGReport eCSGMeasRpt optional, // not present if gsmMask = 0 or rel6Mask = 0 or rel8Mask = 0 or rel9Mask = 1 or csgMask = 1 + B1_Type eCCNMask optional, // not present if gsmMask = 0 or rel6Mask = 0 or rel8Mask = 0 or rel9Mask = 1 + EUTRAN_CCNMeasReport eCCNMeasRpt optional, // not present if gsmMask = 0 or rel6Mask = 0 or rel8Mask = 0 or rel9Mask = 1 or eCCNMask = 0 + B1_Type baMask, + B1_Type baUsed optional, // not present if baMask = 1 + B2_Type psi3ChangeMark optional, // not present if baMask = 0 + B1_Type pmoUsed, + B1_Type pccnSending, + NC_MeasReport nCMeasReport, + B1_Type r6Mask, + B1_Type ba3GMask optional, // not present if r6Mask = 0 + B1_Type ba3GUsed optional, // not present if r6Mask = 0 or ba3GMask = 0 + B3_Type n3G optional, // not present if r6Mask = 0 + CCN3G_MeasRptList ccn3GMeasReport optional, // not present if r6Mask = 0 @sic R5s120519 sic@ + B1_Type r10Mask optional, // not present if r6Mask = 0 @sic R5s120178 Baseline Moving sic@ + B1_Type csgDiscriminator optional, // not present if r6Mask = 0 or r10Mask = 0 @sic R5s120178 Baseline Moving sic@ + bitstring paddingBits optional // uplink, so have to receive this in TTCN +} // @sic R5s120715 sic@ + +type record TargetCell3G { + B1_Type fddMask, + B14_Type fddArfcn optional, // not present if fddMask = 0 + B1_Type fddBWMask optional, // not present if fddMask = 0 + B3_Type fddBandwidth optional, // not present if fddMask = 0 or fddBWMask = 0 + B9_Type scramCode optional, // not present if fddMask = 0 + B1_Type tddMask, + B14_Type tddArfcn optional, // not present if tddMask = 0 + B1_Type tddBWMask optional, // not present if tddMask = 0 + B3_Type tddBandwidth optional, // not present if tddMask = 0 or tddBWMask = 0 + B7_Type cellParameter optional, // not present if tddMask = 0 + B1_Type syncCase optional, // not present if tddMask = 0 + B6_Type ReportingQuantity +}; + +type record of CCN3G_MeasRptStruct CCN3G_MeasRptList; + +type record CCN3G_MeasRptStruct { + B7_Type cellIndex3G, + B6_Type ReportingQuantity +}; + +type record EUTRAN_CCNMeasReport { + B1_Type ba3GUsed, + B2_Type nEutran, + EUTRAN_CCNMeasRptList list +}; + +type record of EUTRAN_CCNMeasRptStruct EUTRAN_CCNMeasRptList; + +type record EUTRAN_CCNMeasRptStruct { + B3_Type freqIndex, + B9_Type cellIdentity, + B6_Type ReportingQuantity +}; + +type record NC_MeasReport { + B6_Type rxLevServingCell, + B1_Type spare, + B3_Type numNCMeasurements, + NCMeasList ncMeasurements optional // @sic R5s120519 sic@ +}; + +type record of NCMeas NCMeasList; // @sic R5s120519 sic@ + +type record NCMeas { + B6_Type freqN, + B1_Type bsicMask, + B6_Type bsicN optional, // not present if bsicMask = 0 + B6_Type rxLevN +}; + +type record Meas3GReport { + B3_Type n3G, + Meas3GRptList list +}; + +type record of Meas3GRpt Meas3GRptList; + +type record Meas3GRpt { + B7_Type index, + B6_Type reportQuantity +}; + +type record EUTRANMeasReport { + B2_Type nEutran, + EutranMeasRptList list +}; + +type record of EutranMeasRpt EutranMeasRptList; + +type record EutranMeasRpt { + B3_Type index, + B9_Type cellIdentity, + B6_Type reportQuantity +}; + +type record UTRANCSGCell { + B28_Type utranCGI, + B1_Type plmnMask, + B12_Type mcc optional, // not present if plmnMask = 0 + B12_Type mnc optional // not present if plmnMask = 0 +}; + +type record UTRANCSGReport { + B28_Type utranCGI, // @sic R5s120178 Baseline Moving sic@ + B1_Type plmnMask, + B12_Type mcc optional, // not present if plmnMask = 0 + B12_Type mnc optional, // not present if plmnMask = 0 + B27_Type csgId, + B1_Type accessMode, + B6_Type reportingQuantity +}; + +type record EUTRANCSGCell { + B28_Type eutranCGI, + B16_Type tac, + B1_Type plmnMask, + B12_Type mcc optional, // not present if plmnMask = 0 + B12_Type mnc optional // not present if plmnMask = 0 +}; + +type record EUTRANCSGReport { + EUTRANCSGCell cell, + B27_Type csgId, + B1_Type accessMode, + B6_Type reportingQuantity +}; + +// ============================================================================= +// PDU Type Definition +// This message is sent on the PCCCH or PACCH by the network to the mobile station to assign uplink resources. TS 3GPP 44.046 clause 11.2.29 +// SS to add padding bits to RLC block size +// ----------------------------------------------------------------------------- +type record PACKETUPLINKASSIGNMENT { + B6_Type msgType, // Message type + B2_Type pAGE_MODE, + B1_Type persistenceLevelMask, + B4_Type persistenceLevel1 optional, // not Present if persistenceLevelMask=0 + B4_Type persistenceLevel2 optional, // not Present if persistenceLevelMask=0 + B4_Type persistenceLevel3 optional, // not Present if persistenceLevelMask=0 + B4_Type persistenceLevel4 optional, // not Present if persistenceLevelMask=0 + B1_Type globalTFIMask, + GlobalTFI globalTFI optional, // only present if globalTFIMask = 0 + B1_Type tLLIMask optional, // only present if globalTFIMask = 1 + TLLI tLLI optional, // only present if global TFIMask = 1 and tLLIMask = 0 + B1_Type tQIMask optional, // only present if global TFIMask = 1 and tLLIMask = 1 + B16_Type tQI optional, // only present if global TFIMask and tLLIMask = 1 and tQIMask = 0 + ReferenceAddress referenceAddress optional, // only present if global TFIMask and tLLIMask and tQIMask = 1 + B1_Type eGPRSmask optional, + B2_Type channelCodingCommand optional, // not present if EGPRPSmask=1 + B1_Type tLLIBlockChannelCoding optional, + PacketTimingAdvance packetTimingAdvance optional, + B1_Type freqParamMask optional, + FreqParam freqParam optional, // not present if freqParamMask=0 + B2_Type allocationMask optional, + DynamicAllocationPacket dynamicAllocation optional, // present if allocationMask=01 + SingleBlockAllocationPacket singleBlockAllocation optional, // present if allocationMask=10 + B1_Type r99Mask optional, + B1_Type packetExtTAmask optional, // not present if r99Mask=0 + B2_Type packetExtendedTA optional, // not present if r99Mask=0 and packetExtTImask=0 + B1_Type r5Mask optional, + B1_Type gRNTIMask optional, // not present if r99Mask=0 and r5Mask=0 + B4_Type gRNTIExtension optional, // not present if r99Mask=0, r5Mask=0 and gRNTIMask=0 + B1_Type rBIdMask optional, // not present if r99Mask=0 and r5Mask=0 + B5_Type rBId optional, // not present if r99Mask=0, r5Mask=0 and rBIdMask=0 + B1_Type r6Mask optional, // not present if r99Mask=0, r5Mask=0 + B1_Type pfiMask optional, // not present if r99Mask=0, r5Mask=0 and r6Mask = 0 + B7_Type pFI optional, // not present if r99Mask=0, r5Mask=0, r6Mask = 0 and pfiMask = 0 + B1_Type rlcModeMask optional, // not present if r99Mask=0, r5Mask=0 and r6Mask = 0 + B1_Type rlcMode optional, // not present if r99Mask=0, r5Mask=0, r6Mask = 0 and rlcModeMask = 0 + B2_Type mask optional, // only present if EGPRSmask = 1 + EGPRSPktUplinkAssigment eGPRSmessage optional, // only present if EGPRSmask=1 and mask = 00 + PktUlDualCarrier dualCarrier optional // only present if EGPRSmask = 1 and mask = 01 +}with { encode "GPRSPadding Rule1" } + +// ============================================================================= +// PDU Type Definition +// ----------------------------------------------------------------------------- +type record PACKETRESOURCEREQUEST { + B6_Type msgType, // message type M + B1_Type mask1, + B2_Type accessType optional, // not present if mask1 = 0 + B1_Type mask2, + GlobalTFI globalTFI optional, // only present if mask2 = 0 + TLLI tlli optional, // only present if mask2 = 1 + B1_Type mask3, + MS_RadioAccessCapList mSRadioAccessCap optional, // not present if mask3 = 0 + ChReqDescr chReqDescr, + B1_Type mask4, + B2_Type changeMark optional, // not present if mask4 = 0 + B6_Type cValue, + B1_Type mask5, + B6_Type signVar optional, // not present if mask5 = 0 + B1_Type tnmask0, + B4_Type iLevelTN0 optional, // not present if tnmask0 = 0 + B1_Type tnmask1, + B4_Type iLevelTN1 optional, // not present if tnmask1 = 0 + B1_Type tnmask2, + B4_Type iLevelTN2 optional, // not present if tnmask2 = 0 + B1_Type tnmask3, + B4_Type iLevelTN3 optional, // not present if tnmask3 = 0 + B1_Type tnmask4, + B4_Type iLevelTN4 optional, // not present if tnmask4 = 0 + B1_Type tnmask5, + B4_Type iLevelTN5 optional, // not present if tnmask5 = 0 + B1_Type tnmask6, + B4_Type iLevelTN6 optional, // not present if tnmask6 = 0 + B1_Type tnmask7, + B4_Type iLevelTN7 optional, // not present if tnmask7 = 0 + B1_Type r99mask, + B1_Type mask6 optional, // not present if r99mask = 0 + EGPRSBEPQualityMeas eGPRSBEPLinkQual optional, // not present if r99mask or if mask6 = 0 + B1_Type mask7 optional, // not present if r99mask = 0 + EGPRSTimeslotLinkQualityMeas eGPRSTNLinkQual optional, // not present if r99mask or mask7= 0 + B1_Type mask8 optional, // not present if r99mask = 0 + B7_Type pFI optional, // not present if r99mask or mask8= 0 + B1_Type addMSRACInfo optional, // not present if r99mask = 0 + B1_Type retxPRR optional, // not present if r99mask = 0 + B1_Type rel5mask optional, // not present if r99mask = 0 + B1_Type mask9 optional, // not present if r99mask or rel5mask = 0 + B1_Type mask10 optional, // not present if r99mask or rel5mask or mask9 = 0 + B4_Type gRNTIExt optional, // not present if r99mask,rel5mask, mask9 or mask10 = 0 + IuModeChReqDescr iuModeChReqDescr optional, // not present if r99mask, rel5mask or mask9 = 0 + B1_Type hfnmask optional, // not present if r99mask or rel5mask or mask9 = 0 + B1_Type hfnlsb optional, // not present if r99mask or rel5mask or mask9 or hfnmask = 0 + B1_Type rel6mask optional, // not present if r99mask or rel5mask or mask9 = 0 + B1_Type mask11 optional, // not present if r99mask or rel5mask or mask9 or rel6mask = 0 + ExtChReqDescr extChReqDescr optional, // not present if r99mask or rel5mask or mask9 or rel6mask or mask11 = 0 + B1_Type rel7mask optional, // not present if r99mask or rel5mask or mask9 or rel6mask = 0 + B1_Type earlyTBF optional, // not present if r99mask or rel5mask or mask9 or rel6mask or rel7mask = 0 + B1_Type mask12 optional, // not present if r99mask or rel5mask or mask9 or rel6mask or rel7mask = 0 + EGPRSBEPQualityMeas eGPRSBEPLinkQual2 optional, // not present if r99mask or if mask6 or rel7mask or mask12 = 0 + B1_Type mask13 optional, // not present if r99mask or rel5mask or mask9 or rel6mask or rel7mask = 0 + EGPRSTimeslotLinkQualityMeas eGPRSTNLinkQual2 optional, // not present if r99mask or if mask6 or rel7mask or mask13 = 0 + B1_Type rel10mask optional, // not present if r99mask or rel5mask or mask9 or rel6mask or rel7mask = 0 @sic R5s120178 sic@ + B1_Type lowAccessPrioritySig optional, // not present if r99mask or rel5mask or mask9 or rel6mask or rel7mask or rel10Mask = 0 @sic R5s120178 sic@ + bitstring sparePadding optional // Uplink message +} // @sic R5s120715 sic@ + +// ============================================================================= +// PDU Type Definition +// To send or receive user data +// ----------------------------------------------------------------------------- +type record PacketData { + octetstring data +} + +// ============================================================================= +// PDU Type Definition +// RR PAGING REQUEST_TYPE1 ntw -> ue/ms +// 3GPP TS 44.018 clause 9.1.22 +// The message has a fixed length of 23 octets. +// ----------------------------------------------------------------------------- +type record PAGINGREQUESTTYPE1 { + O1_Type l2PseudoLength, // L2 pseudo length M + B4_Type skipIndicator, // skip indicator M + B4_Type rRProtocolDiscriminator, // RR protocol discriminator M + MessageType msgType, // message type M + ChNeeded chNeeded_m1_2, // channels needed for mobiles 1 and 2 M BITSTRING [4] without IEI + PageModeIE pageMode, // page mode M + MobileIdentity mobileId1, // mobility identity 1 M OCTETSTRING [2..9] + MobileIdentity mobileId2 optional, // mobility identity 2 O OCTETSTRING [3..10] + P1RO p1RO optional // P1 rest octets +}with { encode "GSM Spare Padding Rule2"} + +// ============================================================================= +// PDU Type Definition +// RR PHYSICAL INFORMATION ntw -> ue/ms +// 3GPP TS 44.018 clause 9.1.28 +// ----------------------------------------------------------------------------- +type record PHYSICALINFORMATION { + B4_Type skipIndicator, // skip indicator + B4_Type rRProtocolDiscriminator, // RR protocol discriminator + O1_Type msgType, // message type + TA_TypeV ta // timing advance +}; + +// ============================================================================= +// PS PHYSICAL INFORMATION ntw -> ue/ms +// 3GPP TS 44.060 clause 11.2.45 +// ----------------------------------------------------------------------------- +type record PSPHYSICALINFORMATION { + B6_Type msgType, // Message type + B2_Type pAGE_MODE, // Normal paging + GlobalTFI gLOBAL_TFI, + B8_Type ta // timing advance +}; + +// ============================================================================= +// PS CS REQUEST +// 3GPP TS 44.060 clause 11.2.35 +// ----------------------------------------------------------------------------- +type record PACKETCSREQUEST { + B6_Type msgType, // Message type + GlobalTFI gLOBAL_TFI, + B8_Type establishmentCause // timing advance +}; + +// ============================================================================= +// PS CS Command +// 3GPP TS 44.060 clause 11.2.36 +// ----------------------------------------------------------------------------- +type record PACKETCSCOMMAND { + B6_Type msgType, // Message type + B2_Type pAGE_MODE, // Normal paging + GlobalTFI gLOBAL_TFI, + B2_Type spare, + B8_Type containerLength, + octetstring containerData +}with { encode "GPRSPadding Rule1" } + + +// ============================================================================= +// PDU Type Definition +// RR UTRAN CLASSMARK CHANGE ue/ms -> ntw 3GPP TS 44.018 clause 9.1.11a +// ----------------------------------------------------------------------------- +type record UTRANCLASSMARKCHANGE { + B4_Type skipIndicator, + B4_Type rRProtocolDiscriminator, + MessageType msgType, + UTRANPreConfigInfo uTRANPreConfigInfo //UTRAN predefined configuration status informatiom M + //OCTETSTRING [2..n] +} + +} // end of group PDUTypes + +group ASPTypes { + +type union G_CPHY_CONFIG_REQ { + G_CL1_CreateCell_REQ createCell, + G_CL1_DeleteCell_REQ deleteCell, + G_CL1_CreateBasicPhyCh_REQ createPhyCh, + G_CL1_CreateMultiSlotConfig_REQ createMultiSlotConfig, + G_CL1_DeleteChannel_REQ deleteChannel, + G_CL1_ChangePowerLevel_REQ changePowerLevel, + G_CL1_CipheringControl_REQ cipheringControl, + G_CL1_CipherModeModify_REQ cipherModeModify, + G_CL1_ChModeModify_REQ chModeModify, + G_CL1_ComingFN_REQ comingFN, + G_CL2_HoldPhyInfo_REQ holdPhyInfo, + G_CL1_L1Header_REQ l1Header, + G_CL2_MeasRptControl_REQ measReportCtrl, + G_CL2_NoUAforSABM_REQ noUAForSABM, + G_CL2_ResumeUAforSABM_REQ resumeUAForSABM, + G_CL2_Release_REQ releaseChannel, + G_CL1_SetNewKey_REQ setNewKey +} + +type union G_CPHY_CONFIG_CNF { + RFN comingFN, // the reduced frame number (FN modulo 42432) returned by G_CL1_ComingFN_REQ which is about 2 seconds later than current frame number + // and is able to carry L3 message on the channel specified by "physicalChId"+"G_LogicChType"+"subChannel" + L1Header l1Header, // power level and timing advance returned from G_CL1_L1Header_REQ + Null_Type None // This choice is used when none of the other choices are selected; @sic R5-103846 sic@ +} + +// ============================================================================= +// ASP Type Definition +// The ASP is used to modify the channel mode of a dedicated channel +// ----------------------------------------------------------------------------- +type record G_CL1_ChModeModify_REQ { + integer cellId, + PhysicalChId physicalChId, // Channel identifier + G_LogicChType g_LogicChType, + SubChannelNumber subChannel, // Valid only for logical channel types: TCH/H, FACCH/H, SACCH/TH, SDCCH/8, SACCH/C8, SDCCH/4, and SACCH/C4. For TCH/H, FACCH/H and SACCH/TH value is (0..1); For SDCCH/8 and SACCH/C8 value is (0..7); for SDCCH/4 and SACCH/C4 value is (0..3). This field is not applicable and the SS shall ignore it if this field is coded as 15. + ChMode chMode // the new channel mode. definition see 3GPP TS 44.018 section 10.5.2.1b +}; + +// ============================================================================= +// ASP Type Definition +// The ASP is used to change the transmission power level of a physical channel +// ----------------------------------------------------------------------------- +type record G_CL1_ChangePowerLevel_REQ { + integer cellId, + PhysicalChId physicalChId, // Channel identifier + TX_Power txPower // the new transmission power level. in dBuVemf() +}; + +// ============================================================================= +// ASP Type Definition +// The ASP is used to set the ciphering mode of the physical channel in the receiving direction, the kc and ciphering algorithm were set by the G_CL1CreateBasicPhyCh_REQ for the physical channel before calling the ASP. +// For GSM dedicated physical channels, the ciphering mode of the SS shall be changed in three steps: (3GPP TS 44.018, clause 3.4.7) +// Before the SS sends CIPHERING MODE COMMAND the SS is transmitting and receiving in the old ciphering mode (e.g. not ciphered), after the SS sends the CIPHERING MODE COMMAND the SS changes its receiving ciphering mode to the new ciphering mode (e.g. ciphered) and keeps transmitting in the old ciphering mode; then after receiving the CIPHERING MODE COMPLETE, or any correct L2 frame in the new ciphering mode, the SS changes the transmitting ciphering mode to the new mode. +// The TTCN writer shall use the ASP before sending the CIPHERING MODE COMMAND to ensure the ciphering mode of the physical channel is changed in sufficient time, according to the 3 step procedure outlined above. +// ----------------------------------------------------------------------------- +type record G_CL1_CipheringControl_REQ { + integer cellId, + PhysicalChId physicalChId, // Channel Identifier + B1_Type rcvCipherMode // Ciphering Mode in SS receiving direction: + // 0 -> not ciphered + // 1 -> ciphered +}; + +// ============================================================================= +// ASP Type Definition +// The ASP is used to modify the cipherl mode of a dedicated channel +// ----------------------------------------------------------------------------- +type record G_CL1_CipherModeModify_REQ { + integer cellId, + PhysicalChId physicalChId, // Channel identifier + G_LogicChType g_LogicChType, + SubChannelNumber subChannel, // Valid only for logical channel types: TCH/H, FACCH/H, SACCH/TH, SDCCH/8, SACCH/C8, SDCCH/4, and SACCH/C4. For TCH/H, FACCH/H and SACCH/TH value is (0..1); For SDCCH/8 and SACCH/C8 value is (0..7); for SDCCH/4 and SACCH/C4 value is (0..3). This field is not applicable and the SS shall ignore it if this field is coded as 15. + CipherModeSetting cipherMode // the new cipher mode. definition see 3GPP TS 44.018 section 10.5.2.9 +}; + +// ============================================================================= +// ASP Type Definition +// The ASP is used to request lower layer return the reduced frame number (FN modulo 42432) which is far enough in the future from current frame number and is able to carry L3 message on the specified channel. The requirement of "far enough" is that there is enough time left for TTCN to prepare a L3 message to send before that frame. +// ----------------------------------------------------------------------------- +type record G_CL1_ComingFN_REQ { + integer cellId, + PhysicalChId physicalChId, // Channel identifier + G_LogicChType g_LogicChType, + SubChannelNumber subChannel optional // Valid only for logical channel types: TCH/H, FACCH/H, SACCH/TH, SDCCH/8, SACCH/C8, SDCCH/4, and SACCH/C4. For TCH/H, FACCH/H and SACCH/TH value is (0..1); for SDCCH/8 and SACCH/C8 value is (0..7); for SDCCH/4 and SACCH/C4 value is (0..3). + // this field is not applicable and the SS shall ignore it if this field is coded as 15 +}; + +// ============================================================================= +// ASP Type Definition +// the ASP is used to create a basic physical channel in GERAN +// The value of channel Combination permitted currently: +// 1 TCH/F + FACCH/F + SACCH/TF +// 2 TCH/H(0,1) + FACCH/H(0,1) + SACCH/TH(0,1) +// 3 TCH/H(0,0) + FACCH/H(0,1) + SACCH/TH(0,1) + TCH/H(1,1) +// 4 FCCH + SCH + BCCH + CCCH +// 5 FCCH + SCH + BCCH + CCCH + SDCCH/4(0..3) + SACCH/C4(0..3) +// 6 BCCH + CCCH +// 7 SDCCH/8(0..7) + SACCH/C8(0.. 7) +// 8 TCH/F + FACCH/F + SACCH/M +// 9 TCH/F + SACCH/M +// 10 TCH/FD + SACCH/MD +// 13 PDTCH/F+PACCH/F+PTCCH/F +// 18 E-TCH/F + E-IACCH/F + E-FACCH/F + SACCH/TF +// 19 E-TCH/F + E-IACCH/F + E-FACCH/F + SACCH/M +// 20 E-TCH/F + E-IACCH/F + SACCH/M +// 21 E-TCH/FD + E-IACCH/F + SACCH/MD +// ----------------------------------------------------------------------------- +type record G_CL1_CreateBasicPhyCh_REQ { + integer cellId, // the cell which the channel to be created belongs to + PhysicalChId physicalChId, // identifier of the physical channel in the SS + ChannelCombination channelCombination, // logical channels combined onto the basic physical channel + FreqInfo freqInfo, // parameters for description of the physical channel in frequency domain + TN timeSlot, // the time slot number of the physical channel + TSC tSC, // training sequence code. for common control and broadcast channels the value of tsc must be equal to BCC (base station coulour code) + ChannelSpecificInfo channelSpecificPara optional, // specific parameters related to individual channel + TX_Power txPower, // transmisstion power level of the channel + B1_Type bandIndicator // Parameter for DCS or PCS frequency band selection. A value 0 for frqInfo.arfcn interpreted as DCS1800. A value 1 for frqInfo.arfcn interpreted as PCS1900. If omitted, the value in frqInfo.arfcn interpreted as DCS1800. +}; + +// ============================================================================= +// ASP Type Definition +// the ASP is used to create a cell in GERAN +// ----------------------------------------------------------------------------- +type record G_CL1_CreateCell_REQ { + integer cellId, + B6_Type baseId, // Base tranceiver station identiy code = NCC+BCC 3GPP TS 23.003 clause 4.3.2. + B8_Type timingAdvance // The SS sets the timing advance of downlink direction timing by this value +}; + +// ============================================================================= +// ASP Type Definition +// The ASP is used to create a multi-slot configuration in GERAN and should be preceded w +// This ASP is to add a multi-slot configuration to the physical channel created in G_CL1_CreateBasicPhyCh_REQ ASP. For multi-slot configuration refer 3GPP TS 05.02 or 3GPP TS 45.002 clause 6.4.2. +// ----------------------------------------------------------------------------- +type record G_CL1_CreateMultiSlotConfig_REQ { + integer cellId, // The cell which the configuration to be created belongs to + PhysicalChId mainChannel, // identifier of the main physical channel of this multi-slot configuration. + MultiSlotAllocation multiSlotAllocation // The timeslot allocation of the configuration +}; + +// ============================================================================= +// ASP Type Definition +// the ASP is used to delete a cell in GERAN +// ----------------------------------------------------------------------------- +type record G_CL1_DeleteCell_REQ { + integer cellId +}; + +// ============================================================================= +// ASP Type Definition +// the ASP is used to delete a basic physical channel or multi-slot configuration +// ----------------------------------------------------------------------------- +type record G_CL1_DeleteChannel_REQ { + integer cellId, // The cell which the channel to be deleted belongs to + PhysicalChId physicalChId // identifier of the physical channel or the multi-slot configuration to be deleted +}; + +// ============================================================================= +// ASP Type Definition +// The ASP is used to request lower layer return the L1 header of SACCH. +// ----------------------------------------------------------------------------- +type record G_CL1_L1Header_REQ { + integer cellId, + PhysicalChId physicalChId, // Channel identifier + G_LogicChType g_LogicChType, // SACCH + SubChannelNumber subChannel // Valid only for logical channel types: SACCH/TH, SACCH/C8, and SACCH/C4 This field is not applicable and the SS shall ignore it if this field is coded as 15. +}; + +// ============================================================================= +// ASP Type Definition +// The ASP is used to set new cipher key for a dedicated channel +// ----------------------------------------------------------------------------- +type record G_CL1_SetNewKey_REQ { + integer cellId, + PhysicalChId physicalChId, // the channel which uses the new key + G_LogicChType g_LogicChType, + SubChannelNumber subChannel optional, // Valid only for logical channel types: TCH/H, FACCH/H, SACCH/TH, SDCCH/8, SACCH/C8, SDCCH/4, and SACCH/C4. For TCH/H, FACCH/H and SACCH/TH value is (0..1); For SDCCH/8 and SACCH/C8 value is (0..7); for SDCCH/4 and SACCH/C4 value is (0..3). This field is not applicable and the SS shall ignore it if this field is coded as 15. + B64_Type ciphKey +}; + +// ============================================================================= +// ASP Type Definition +// The ASP commands the SS to hold the PHYSICAL INFORMATION message, which will be sent on PCO G_L2 following the current ASP. The PHYSICAL INFORMATION message shall be sent to the UE/MS within T3124 from the time when the SS has received n handover access bursts. +// T3124 is defined in 3GPP TS 44.018 clause 3.4.4.2.2 and clause 11.1.1 +// ----------------------------------------------------------------------------- +type record G_CL2_HoldPhyInfo_REQ { + integer cellId, + PhysicalChId physicalChId, // Channel identifier + G_LogicChType g_LogicChType, + SubChannelNumber subChannel optional, // Valid only for logical channel types: FACCH/H, SDCCH/8 and SDCCH/4,This field is not applicable and the SS shall ignore it if this field is coded as 15. + integer n // The number of handover access bursts to be received +}; + +// ============================================================================= +// ASP Type Definition +// The ASP is used to enable or disable the reporting of received Measurement Reports to the TTCN +// Per default, this will be set to FALSE +// ----------------------------------------------------------------------------- +type record G_CL2_MeasRptControl_REQ { + integer cellId, + PhysicalChId physicalChId, // Channel identifier + G_LogicChType g_LogicChType, // Valid only for lofical channel types: SACCH/TF, SACCH/TH, SACCH/C8 and SACCH/C4 + SubChannelNumber subChannel, // For SACCH/TH value is (0..1), for SACCH/C8 value is (0..7) and for SACCH/C4 value is (0..3) + boolean sendMeasRpts // Whether or not to report received Measurement Reports to the TTCN +}; + +// ============================================================================= +// ASP Type Definition +// The ASP commands the SS not to send UA response to the UE when it receives SABM from the UE on the specified channel. +// ----------------------------------------------------------------------------- +type record G_CL2_NoUAforSABM_REQ { + integer cellId, + PhysicalChId physicalChId, // Channel identifier + G_LogicChType g_LogicChType, + SubChannelNumber subChannel optional // Valid only for logical channel types: FACCH/H, SDCCH/8 and SDCCH/4,This field is not applicable and the SS shall ignore it if this field is coded as 15. +}; + +// ============================================================================= +// ASP Type Definition +// The ASP is used to request the SS stop L2 transmission on a channel +// ----------------------------------------------------------------------------- +type record G_CL2_Release_REQ { + integer cellId, + PhysicalChId physicalChId // Channel identifier +}; + +// ============================================================================= +// ASP Type Definition +// The ASP commands the SS to send UA response to the UE when it receives SABM from the UE on the specified channel. This ASP is used after G_CL2_NoUAforSABM_REQ to resume the normal multiframe operation of L2 +// ----------------------------------------------------------------------------- +type record G_CL2_ResumeUAforSABM_REQ { + integer cellId, + PhysicalChId physicalChId, // Channel identifier + G_LogicChType g_LogicChType, + SubChannelNumber subChannel // Valid only for logical channel types: FACCH/H, SDCCH/8 and SDCCH/4,This field is not applicable and the SS shall ignore it if this field is coded as 15. +}; + +type union G_LLC_CONFIG_REQ { + G_CLLC_Assign_REQ assign, + G_CLLC_ReassignLLE_REQ reassign, + G_CLLC_CreateLLE_REQ createLLC, + G_CLLC_DeleteLLE_REQ deleteLLC, + G_CLLC_XID_Config_REQ xid // @sic R5s130994 sic@ +} + +type record G_LLC_CONFIG_CNF {} + +type union G_RLC_CONFIG_REQ { + G_CRLC_CreateRLC_MAC_REQ createRLC, + G_CRLC_DeleteRLC_MAC_REQ deleteRLC, + G_CRLC_DL_TBF_Config_REQ dlTBFConfig, + G_CRLC_UL_TBF_Config_REQ ulTBFConfig +} + +type record G_RLC_CONFIG_CNF {} + +// ============================================================================= +// ASP Type Definition +// the ASP is used to assign, change or unassign the TLLI, the cipher key (Kc) and the cipher algorithm of GERAN LLC emulator module. +// This ASP is used to assign, change, or unassign the TLLI, the ciphering key (Kc) and the ciphering algorithm. 1. +// The oldTLLI and newTLLI parameters shall be interpreted as follows:- If oldTLLI = all 1's and newTLLI ??all 1's then newTLLI is +// assigned and used when (re?)transmitting LLC frames. If an oldTLLI ??all 1's was assigned to the LLME, then oldTLLI is unassigned. +// Only newTLLI is accepted when received from the peer. It shall be treated as a TLLI change. If oldTLLI = all 1's was assigned to the LLME, +// then this shall be treated as a TLLI assignment, and this ASP shall be the first ASP sent to the SS in order to enable LLC to process +// requests from layer 3.- If oldTLLI ??all 1's and newTLLI ??all 1's then oldTLLI and newTLLI are assigned, and newTLLI shall be used when +// (re?)transmitting LLC frames. Both oldTLLI and newTLLI shall be accepted when received from the peer. It shall be treated as a TLLI change. +// If oldTLLI ??all 1's and newTLLI = all 1's then oldTLLI shall be unassigned. It shall be treated as a TLLI unassignment, and this ASP shall +// be the last ASP sent to the SS in order to disable LLC to not process requests from layer 3 any longer.2. Kc and Ciphering Algorithm are +// associated with newTLLI (and with oldTLLI if assigned):- If Ciphering Algorithm indicates no ciphering, then the ciphering function shall be +// disabled. Otherwise, the ciphering function shall be enabled. If a Ciphering Algorithm was already associated with newTLLI or oldTLLI, then +// the new Kc shall replace the previous Kc, and Ciphering Algorithm shall replace the previous algorithm selection. All I frames, and UI frames +// with the E bit set to 1, shall use the new Kc and algorithm for ciphering. All unacknowledged I frames shall be ciphered using the new Kc and +// algorithm before retransmission. As an implementation option, the previous Kc and algorithm may be used to decipher received frames. +// Note1: The value of cipherMode dictates which of cipherKey or cipherKey128 shall be used by the SS +// ----------------------------------------------------------------------------- +type record G_CLLC_Assign_REQ { + integer cellId, + TLLI oldTLLI, // OCTETSTRING[4] + TLLI newTLLI, + B64_Type cipherKey, // (see Note1) + B128_Type cipherKey128, // (see Note1) @sic R5-144746 sic@ + GPRS_CipherAlg cipherAlgorithm // BITSTRING[3], 3GPP TS 24.008 section 10.5.5.3 +}; + +type record G_CLLC_Config_CNF {} + +// ============================================================================= +// ASP Type Definition +// the ASP is used to configure a TBF used for down link data transfer +// For GPRS channel coding can be: CS-1, CS-2, CS-3 and CS-4;For EGPRS channel coding can be : MCS-1, MCS-2, MCS-3, MCS-4, MCS-5, MCS-6, MCS-7, MCS-8, MCS-9, MCS-5-7 and MCS-6-9. +// ----------------------------------------------------------------------------- +type record G_CRLC_DL_TBF_Config_REQ { + integer cellId, + TFI tFI, + B1_Type tBF_Mode, // 0 - GPRS; 1 - EGPRS + ChannelCoding channelCoding, + B1_Type rLC_Mode, // 0 - acknowledged mode; 1 - unacknowledged mode + TimeSlotAllocation timeSlotAllocation, // Downlink TBF time slot allocation + RFN startingTime, // This field is not applicable and the SS shall ignore it if the field t2 of rfn is coded as '11111'B. + integer dataBlockRate // This parameter controls the speed of the DL TBF transferring data blocks by controlling the USF rate: + // 1---> implementation dependent. TTCN does not specify the USF generating rate; + // 2---> 10 data blocks per second; + // 3---> 5 data blocks per second; + // 4---> 1 data block per second; + // 5---> 1 data block 2 seconds; + // 6---> 1 data block 3 seconds; + // 7---> 1 data block 4 seconds +}; + +// ============================================================================= +// ASP Type Definition +// the ASP is used to configure a TBF used for uplink data transfer +// For GPRS channel coding can be: CS-1, CS-2, CS-3 and CS-4;For EGPRS channel coding can be : MCS-1, MCS-2, MCS-3, MCS-4, MCS-5, MCS-6, MCS-7, MCS-8, MCS-9, MCS-5-7 and MCS-6-9. +// Due to one cell currently has only one RLC/MAC emulation module, this ASP does not contain RLC/MAC identity parameter to indicate which RLC/MAC emulation module this TBF is +// established for, instead, the parameter cellId implicitly indicates the RLC/MAC module, which is created by G_CRLC_CreateRLC_MAC_REQ and has identifier RlcMacEntityId in the cell. +// The higher layer (LLC emulation module) uses rLC/MAC_MappingInfo (with type of CellId) to address the RLC/MAC emulation module to which it connects +// ----------------------------------------------------------------------------- +type record G_CRLC_UL_TBF_Config_REQ { + integer cellId, + TFI tFI, + B1_Type tBF_Mode, // 0 - GPRS; 1 - EGPRS + ChannelCoding channelCoding, + B1_Type tLLI_BlockChannelCoding, // 0 - CS-1 or MCS-1(EGPRS); 1 - same as channelCoding + B1_Type rLC_Mode, // 0 - acknowledged mode; 1 - unacknowledged mode + RFN startingTime, // This field is not applicable and the SS shall ignore it if the field t2 of rfn is coded as '11111'B. + integer uSF_Rate, // This parameter controls the speed of the UL TBF transferring data blocks by controlling the USF rate: + // 1---> implementation dependent. TTCN does not specify the USF generating rate; + // 2---> 10 USF's per second; + // 3---> 5 USF's per second; + // 4---> 1 USF per second; + // 5---> 1 USF per 2 seconds; + // 6---> 1 USF per 3 seconds; + // 7---> 1 USF per 4 seconds + DynamicAllocation dynamicAllocation // dynamic allocation and other parameters. +}; + +// ============================================================================= +// ASP Type Definition +// The ASP is used to receive a L2 PDU from the UE +// ----------------------------------------------------------------------------- +type union G_L2_DATAMESSAGE_IND { + G_L2_UNITDATA_IND meas, + G_L2_Release_CNF relCnf, + G_L2_Release_IND relInd, + G_L2_Estab_IND sabm, + G_L2_GTTP_IND dtm, + G_L2_DATA_IND l3, + G_L2_ACCESS_IND access +}; + +// ============================================================================= +// ASP Type Definition +// The ASP is used to send a L2 PDU to the UE +// ----------------------------------------------------------------------------- +type union G_L2_DATAMESSAGE_REQ { + G_L2_UNITDATA_REQ unit, + G_L2_Release_REQ rel, + G_L2_SYSINFO_REQ si, + G_L2_Paging_REQ page, + G_L2_PagingGPRS_REQ pageGPRS, + G_L2_DATA_REQ l3, + G_L2_GTTP_REQ dtm +}; + +// ============================================================================= +// ASP Type Definition +// The ASP is used to receive a random access or handover access burst on the specified channel. +// ----------------------------------------------------------------------------- +type record G_L2_ACCESS_IND { + integer cellId, + PhysicalChId physicalChId, // Channel identifier + G_LogicChType g_LogicChType, // RACH, FACCH, SDCCH/8, SDCCH/4. + // RACH is used for random access burst; others are used for handover access burst + SubChannelNumber subChannel optional, // Valid only for logical channel types: FACCH/H, SDCCH/8, SDCCH/4. + RFN rfn, // The reduced frame number of the frame carrying the burst + AccessIndType burst // random access burst or handover access burst +}; + +type union AccessIndType { + CHANNELREQUEST chReq, + HANDOVERACCESS hoA +}; + +// ============================================================================= +// ASP Type Definition +// The ASP is used to receive a L3 signalling message on the signalling channels or user data on the traffic channels from the UE/MS in acknowledged mode. +// ----------------------------------------------------------------------------- +type record G_L2_DATA_IND { + integer cellId, + SAPI sAPI, // 0 or 3 + PhysicalChId physicalChId, // Channel identifier + G_LogicChType g_LogicChType, + SubChannelNumber subChannel optional, // Valid only for logical channel types: TCH/H, FACCH/H, SACCH/TH, SDCCH/8, SACCH/C8, SDCCH/4, and SACCH/C4. For TCH/H, FACCH/H and SACCH/TH value is (0..1); for SDCCH/8 and SACCH/C8 value is (0..7); for SDCCH/4 and SACCH/C4 value is (0..3). It shall be ignored if this is coded as 15 + RFN rfn, // The reduced frame number of the first frame on which this message is received + L2DataIndType msg // Signalling message or user data received +}; + +type union L2DataIndType { + ALERTINGul alerting, + ASSIGNMENTCOMPLETE assignmentComplete, + ASSIGNMENTFAILURE assignmentFail, + AUTHENTICATIONRESPONSE authResponse, + AUTHENTICATIONFAILURE autnFail, + CALLCONFIRMED callConfirmed, + CIPHERINGMODECOMPLETE cipherComplete, + CLASSMARKCHANGE classmarkChange, + CONNECTACKNOWLEDGE connectAcknowledge, + CONNECTul connectul, + DTMREQUEST dtmReq, + ESETUP esetup, // needed for emergency IMS + GPRS_SUSPENSIONREQ gprsSuspendReq, + HANDOVERCOMPLETE hoComplete, + HANDOVERFAILURE hoFailure, + RELEASEul release, + SETUPul setupul, + TMSIREALLOCATIONCOMPLETE tmsiRealloc, + UTRANCLASSMARKCHANGE utranClassmarkChange +} + +// ============================================================================= +// ASP Type Definition +// The ASP is used to send L3 signalling message on the signalling channels or user data on the traffic channels to the UE/MS in acknowledged mode. +// Parameter rfn is only used in the test cases which requires specific L3 message to be sent on specified frame number +// ----------------------------------------------------------------------------- +type record G_L2_DATA_REQ { + integer cellId, + SAPI sAPI, // 0 + PhysicalChId physicalChId, // Channel identifier + G_LogicChType g_LogicChType, + SubChannelNumber subChannel optional, // Valid only for logical channel types: TCH/H, FACCH/H, SACCH/TH, SDCCH/8, SACCH/C8, SDCCH/4, and SACCH/C4. For TCH/H, FACCH/H and SACCH/TH value is (0..1); for SDCCH/8 and SACCH/C8 value is (0..7); for SDCCH/4 and SACCH/C4 value is (0..3). + RFN rfn optional, // The reduced frame number of the first frame on which this message is sent.If the field t2 of rfn is coded as '11111'B lower layer shall ignore this field. + L2DataReqType msg // Signalling message or user data to be sent +}; + +type union L2DataReqType { + ALERTINGdl alerting, + ASSIGNMENTCOMMAND assignmentCmd, + AUTHENTICATIONREQUEST authReq, + CALLPROCEEDING callProceeding, + CHANNELRELEASE chRelease, + CIPHERINGMODECOMMAND cipherModeCmd, + CMSERVICEACCEPT cmServiceAccept, + CMSERVICEREJECT cmServiceReject, + CLASSMARKENQUIRY classmarkEnquiry, + CONNECTdl connectdl, + CONNECTACKNOWLEDGE connectAcknowledge, + DISCONNECTdl disconnectdl, + HANDOVERCOMMAND handoverCommand, + INTERSYSTEMTOUTRANHANDOVERCOMMAND handoverToUtranCommand, + LOCATIONUPDATINGACCEPT locUpdAccept, + RELEASECOMPLETE releaseComplete, + SETUPdl setupdl, + TMSIREALLOCATIONCOMMAND tmsiReallocCmd +} + +// ============================================================================= +// ASP Type Definition +// The ASP is used for DTM to receive an LLC signalling message on DCCH in acknowledged mode +// If ciphering is used, the SS will take care to ensure the "gmmSmPDU" is deciphered +// ----------------------------------------------------------------------------- +type record G_L2_GTTP_IND { + integer cellId, + SAPI sAPI, + PhysicalChId physicalChId, // Channel identifier + G_LogicChType g_LogicChType, + SubChannelNumber subChannel, // Valid only for logical channel types: TCH/H, FACCH/H, SACCH/TH, SDCCH/8, SACCH/C8, SDCCH/4, and SACCH/C4. For TCH/H, FACCH/H and SACCH/TH value is (0..1); for SDCCH/8 and SACCH/C8 value is (0..7); for SDCCH/4 and SACCH/C4 value is (0..3). This field is not applicable and the SS shall ignore it if this field is coded as 15 + RFN rfn, // The reduced frame number of the first frame carrying the message + TLLI tLLI, + LLCUnitDataIndType gmmSmPDU // Deciphered GMM or SM signalling message received +}; + +// ============================================================================= +// ASP Type Definition +// The ASP is used for DTM to send an LLC signalling message on DCCH in acknowledged mode +// If ciphering is used, the SS will take care to ensure the "gmmSmPDU" is ciphered +// ----------------------------------------------------------------------------- +type record G_L2_GTTP_REQ { + integer cellId, + SAPI sAPI, + PhysicalChId physicalChId, // Channel identifier + G_LogicChType g_LogicChType, + SubChannelNumber subChannel, // Valid only for logical channel types: TCH/H, FACCH/H, SACCH/TH, SDCCH/8, SACCH/C8, SDCCH/4, and SACCH/C4. For TCH/H, FACCH/H and SACCH/TH value is (0..1); for SDCCH/8 and SACCH/C8 value is (0..7); for SDCCH/4 and SACCH/C4 value is (0..3). This field is not applicable and the SS shall ignore it if this field is coded as 15 + B1_Type protectMode, // 0 - unprotected, 1 - protected + B1_Type cipherMode, // 0 - sent without encryption, 1 - encrypted + B4_Type skipIndicator, // GTTP Header, unciphered + B4_Type gTTPProtocolDiscriminator, // GTTP Header, unciphered + MessageType msgType, // GTTP Header, unciphered + TLLI tLLI, // GTTP Header, unciphered + Type4Length_Type gmmSmPDULength, // GTTP Header, unciphered + LLCUnitDataReqType gmmSmPDU // GMM or SM PDU, ciphered +}; + + +// ============================================================================= +// ASP Type Definition +// The ASP is used to receive an indication of that L2 multiple frame operation on the specified channel has been established. +// see 3GPP TS 44.006 clause 7.1.1 and 7.1.3 +// ----------------------------------------------------------------------------- +type record G_L2_Estab_IND { + integer cellId, + PhysicalChId physicalChId, // Channel identifier + G_LogicChType g_LogicChType, + SubChannelNumber subChannel, // Valid only for logical channel types: FACCH/H, SDCCH/8 and SDCCH/4,This field shall be coded as 15 if it is not applicable. + SAPI sAPI, // 0, 3 + EstMode establish_mode, // Norm + RFN rfn, // The reduced frame number of the first frame carries the L2 SABM frame + EstablishIndType msg optional // this field is present only when the establish mode is CoRes (collision resolution) +}; + +type union EstablishIndType { + LOCATIONUPDATINGREQUEST locUpdReq, + CMSERVICEREQUEST cmServiceReq, + IMSIDETACHINDICATION imsiDetachInd, + PAGINGRESPONSE pagingRsp +} + +// ============================================================================= +// ASP Type Definition +// The ASP is used to send a paging message on the specified paging group of the specified paging channel to the UE/MS, when the UE/MS is in idle mode or the UE/MS not supporting SPLIT_PG_CYCLE on CCCH is in GPRS attached mode and PCCCH is absent. +// The SS is required to send valid layer 3 messages continuously on all paging subchannels on CCCH where paging can appear.For "normal paging" the SS send the paging message in the specified pagingGroup;For "extended paging" " the SS send the paging message in the specified pagingGroup and in the "next but one" position on the PCH, following the block corresponding to pagingGroup;For "paging reorganization" the SS send the paging message in all paging subchannels.The required 51-multiframe occurs when:pagingGroup div (N div BS_PA_MFRMS) = (FN div 51) mod (BS_PA_MFRMS)The index to the required paging block in the 51-multiframe determined above:Paging block index = pagingGroup mod (N div BS_PA_MFRMS) N = (9-BS_AG_BLKS_RES) * BS_PA_MFRMS CCCH not combined orN = (3-BS_AG_BLKS_RES) * BS_PA_MFRMS CCCH + SDCCH combined +// ----------------------------------------------------------------------------- +type record G_L2_Paging_REQ { + integer cellId, + SAPI sAPI, // 0 + PhysicalChId physicalChId, // Channel identifier of the right CCCH_GROUP + G_LogicChType g_LogicChType, // PCH + PAGING_GROUP pAGING_GROUP, // INTEGER + PagingMode pagingMode, // 0 -- normal paging; 1-- exteded paging; 3 -- paging reorganization + PagingReqType msg // paging message to be sent +}; + +type union PagingReqType { + IMMEDIATEASSIGNMENT immedAss, + PAGINGREQUESTTYPE1 pagReq +} + +// ============================================================================= +// ASP Type Definition +// The ASP is used to send a paging message on the specified paging group of the specified paging channel to the UE/MS, when the UE/MS supporting SPLIT_PG_CYCLE on CCCH is in GPRS attached mode and PCCCH absent. +// The SS is required to send valid layer 3 messages continuously on all paging subchannels on CCCH where paging can appear.For "normal paging" the SS send the paging message in the specified pagingGroup;For "extended paging" " the SS send the paging message in the specified pagingGroup and in the "next but one" position on the PCH, following the block corresponding to pagingGroup;For "paging reorganization" the SS send the paging message in all paging subchannels.The required 51-multiframe occurs when:pagingGroup div (M div 64) = (FN div 51) mod 64The index to the required paging block in the 51-multiframe determined above:Paging block index = pagingGroup mod (M div 64)M = (9-BS_AG_BLKS_RES) ??64 CCCH not combined orM = (3-BS_AG_BLKS_RES) ??64 CCCH + SDCCH combined +// NOTE: This ASP may not be implemented if the MS/UE does not support SPLIT_PG_CYCLE on CCCH. +// ----------------------------------------------------------------------------- +type record G_L2_PagingGPRS_REQ { + integer cellId, + SAPI sAPI, // 0 + PhysicalChId physicalChId, // Channel identifier of the right CCCH_GROUP + G_LogicChType g_LogicChType, // PCH + PAGING_GROUP pAGING_GROUP, // INTEGER + PagingMode pagingMode, // 0 -- normal paging; 1-- exteded paging; 3 -- paging reorganization + integer splitPGcycleCode, // 0 -- No Split Paging, 1..32 -- Split Paging + PagingReqType msg // paging message to be sent +}; + +// ============================================================================= +// ASP Type Definition +// The ASP is used to receive an indication of the termination of an established multiple frame operation or an indication of an unsuccessful establishment attempt. +// ----------------------------------------------------------------------------- +type record G_L2_Release_IND { + integer cellId, + SAPI sAPI, // 0 + PhysicalChId physicalChId, // Channel identifier + G_LogicChType g_LogicChType, + SubChannelNumber subChannel, // Valid only for logical channel types: TCH/H, FACCH/H, SACCH/TH, SDCCH/8, SACCH/C8, SDCCH/4, and SACCH/C4. For TCH/H, FACCH/H and SACCH/TH value is (0..1); for SDCCH/8 and SACCH/C8 value is (0..7); for SDCCH/4 and SACCH/C4 value is (0..3). + B1_Type release_Mode , // 0 = normal release; 1 = local end release + boolean outstanding_Indicator // whether or not there are outstanding acknowledgements or unsolved G_L2_DATA_REQ primitives. +}; + +// ============================================================================= +// ASP Type Definition +// The ASP is used to send system information messages to the lower layer emulatior. +// The lower layer emulator shall store the SYSTEM INFORMATION's, and transmit them periodically according to the rules specified in section 6.3.1.3 of 3GPP TS 45.002. The msg shall override the same type system information message previous stored in the lower layer emulator. +// SYSTEM INFORMATION scheduling assumption: all SI's except SI7, SI8, SI16 and SI17 are scheduled on BCCH Norm. Consequently, SI13, SI2bis and SI2quater are scheduled in TC=4 on BCCH norm not on BCCH Ext +// ----------------------------------------------------------------------------- +type record G_L2_SYSINFO_REQ { + integer cellId, + SAPI sAPI, // 0 + PhysicalChId physicalChId, // Channel identifier + G_LogicChType g_LogicChType, // BCCH or SACCH + integer instanceIndex, // To indicate the instance of the system information messages.For SYSTEM INFORMATION Type 2ter, 18, 19, 20 the value is (0..7); for type 14, 15 the value is (0..3); for type 2quater the value is (0..15); for all other type the value is 0. + B1_Type bCCHExt, // '0' indicates message sent on BCCH Norm + // '1' indicates message sent on BCCH Ext. Only valid for SI2quater, 13, 15. Default value '0'. + SysInfoMsg msg // SYSTEM INFORMATION Type 5, 5bis, 5ter, and 6 are sent on SACCH, the other SYSTEM INFORMATION 's are sent on BCCH. +}; + +// ============================================================================= +// ASP Type Definition +// The ASP from L2, indicates that the multiple frame operation release was successful. This means that the UA message was received in response to L2 DISC command. +// ----------------------------------------------------------------------------- +type record G_L2_Release_CNF { + integer cellId, + SAPI sAPI, // 0 or 3 + PhysicalChId physicalChId, // Channel identifier + G_LogicChType g_LogicChType, + SubChannelNumber subChannel optional, // For SDCCH/8, SACCH/C8 value is (0..7); for SDCCH/4, and SACCH/C4 value is (0..3). + // This field is not applicable and the SS shall ignore it if this field is coded as 15. + B1_Type releaseMode // 0-normal release, 1-local release +}; + +// ============================================================================= +// ASP Type Definition +// This ASP requests L2 to send Layer 2 DISC command on the indicated SAPI. +// ----------------------------------------------------------------------------- +type record G_L2_Release_REQ { + integer cellId, + SAPI sAPI, // 0 or 3 + PhysicalChId physicalChId, // Channel identifier + G_LogicChType g_LogicChType, + SubChannelNumber subChannel optional, // For SDCCH/8, SACCH/C8 value is (0..7); for SDCCH/4, and SACCH/C4 value is (0..3). + // This field is not applicable and the SS shall ignore it if this field is coded as 15. + B1_Type releaseMode // 0-normal release, 1-local release +}; + +// ============================================================================= +// ASP Type Definition +// The ASP is used to receive a L3 signalling message on the signalling channels or user data on the traffic channels from the UE/MS in unacknowledged mode. +// ----------------------------------------------------------------------------- +type record G_L2_UNITDATA_IND { + integer cellId, + SAPI sAPI, // 0 + PhysicalChId physicalChId, // Channel identifier + G_LogicChType g_LogicChType, + SubChannelNumber subChannel optional, // Valid only for logical channel types: TCH/H, FACCH/H, SACCH/TH, SDCCH/8, SACCH/C8, SDCCH/4, and SACCH/C4. For TCH/H, FACCH/H and SACCH/TH value is (0..1); for SDCCH/8 and SACCH/C8 value is (0..7); for SDCCH/4 and SACCH/C4 value is (0..3). + RFN rfn, // The reduced frame number of the first frame carrying the message + MEASUREMENTREPORT msg // Signalling message received +}; + +// ============================================================================= +// ASP Type Definition +// The ASP is used to send L3 signalling message on the signalling channels or send user data on the traffic channels to the UE/MS in unacknowledged mode. +// Parameter rfn is only used in the test cases which requires specific L3 message to be sent on specified frame number +// ----------------------------------------------------------------------------- +type record G_L2_UNITDATA_REQ { + integer cellId, + SAPI sAPI, // 0 + PhysicalChId physicalChId, // Channel identifier + G_LogicChType g_LogicChType, + SubChannelNumber subChannel optional, // Valid only for logical channel types: TCH/H, FACCH/H, SACCH/TH, SDCCH/8, SACCH/C8, SDCCH/4, and SACCH/C4. For TCH/H, FACCH/H and SACCH/TH value is (0..1); for SDCCH/8 and SACCH/C8 value is (0..7); for SDCCH/4 and SACCH/C4 value is (0..3). + RFN rfn, // The reduced frame number of the first frame on which this message is sent.If the field t2 of rfn is coded as '11111'B lower layer shall ignore this field. + L2UnitDataReqType msg // Signalling message or user data to be sent +}; + +type union L2UnitDataReqType { + IMMEDIATEASSIGNMENT immedAss, + IMMEDIATEASSIGNMENTREJECT immedAssRej, + MEASUREMENTINFORMATION measInfo, + PHYSICALINFORMATION phyChInfo +} + +// ============================================================================= +// ASP Type Definition +// The ASP is used to receive an L3 PDU from the UE in LLC unconfirmed transmission. +// 3GPP TS 44.064 clause 8.4.2 +// ----------------------------------------------------------------------------- +type record G_LLC_UNITDATA_IND { + LLMEId lLMEId, + TLLI tLLI, // temporary logical link identifier + SAPI sAPI, + LLCUnitDataIndType msg // L3 PDU +}; + +type union LLCUnitDataIndType { + ACTIVATEPDPCONTEXTREQUESTul actPDPContextReq, + ATTACHCOMPLETE attComplete, + ATTACHREQUEST attReq, + AUTHENTICATION_AND_CIPHERING_FAILURE authCipherFail, + AUTHENTICATIONANDCIPHERINGRESPONSE authCipherResp, + PacketData data, + DEACTIVATEPDPCONTEXTREQUEST deactPDPReq, + DETACHREQUESTMO detachReq, + MODIFYPDPCONTEXTACCEPT_ul modPDPAccept, + ROUTINGAREAUPDATEREQUEST rauReq, + ROUTING_AREA_UPDATE_COMPLETE rauComplete +} + +// ============================================================================= +// ASP Type Definition +// The ASP is used to receive an LLC PDU from the UE +// ----------------------------------------------------------------------------- +type union G_LLC_DATAMESSAGE_IND { + G_LLC_UNITDATA_IND unit, + G_LLC_XID_IND xid, + G_LLC_NULL_IND nullMsg // @sic R5-115770 sic@ +} + +// ============================================================================= +// ASP Type Definition +// The ASP is used to transmit an L3 PDU to the UE in LLC unconfirmed transmission. +// 3GPP TS 44.064 clause 8.4.1 +// After the ciphering function is started in the SS by G_CLLC_Assign_REQ, the SS shall encrypt the "msg" when cipherMode = '1', and the SS shall not encrypt the "msg" if cipherMode = '0'. +// ----------------------------------------------------------------------------- +type record G_LLC_UNITDATA_REQ { + LLMEId lLMEId, + TLLI tLLI, // temporary logical link identifier + SAPI sAPI, + B1_Type protectMode, // 0 -- unprotected; 1 -- protected + B1_Type cipherMode, // 0 --- sent without no encryption;1 --- sent with encryptionencrypted + LLCUnitDataReqType msg // L3 PDU +}; + +type union LLCUnitDataReqType { + ACTIVATEPDPCONTEXTACCEPTdl actPDPAccept, + ATTACHACCEPT attAccept, + ATTACHREJECT attReject, + AUTHENTICATIONANDCIPHERINGREQUEST autnCipherReq, + DEACTIVATEPDPCONTEXTACCEPT deactPDPAccept, + MODIFYPDPCONTEXTREQUEST_dl modifyPDPReq, + PacketData data, + ROUTINGAREAUPDATEACCEPT rauAccept, + ROUTINGAREAUPDATEREJECT rauReject + +} + +// ============================================================================= +// ASP Type Definition +// The ASP is used to transmit an LLC PDU to the UE +// ----------------------------------------------------------------------------- +type union G_LLC_DATAMESSAGE_REQ { + G_LLC_UNITDATA_REQ unit, + G_LLC_XID_REQ xid // @sic R5s130195 Baseline Moving sic@ +} + +// ============================================================================= +// ASP Type Definition +// The ASP is used to receive the NULL message sent by the UE +// ----------------------------------------------------------------------------- +type record G_LLC_NULL_IND { + LLMEId lLMEId, + TLLI tLLI, // temporary logical link identifier + SAPI sAPI +}; + +// ============================================================================= +// ASP Type Definition +// The ASP is used to receive the XID requested by the UE +// ----------------------------------------------------------------------------- +type record G_LLC_XID_IND { + LLMEId lLMEId, + TLLI tLLI, // temporary logical link identifier + SAPI sAPI, + XID_Info xID_Info optional // the XID parameters requested by the UE/MS +}; + +// ============================================================================= +// ASP Type Definition +// The ASP is used to send to the UE the negotiated XID parameters agreed by the SS. +// ----------------------------------------------------------------------------- +type record G_LLC_XID_REQ { // @sic R5s130195 Baseline Moving sic@ + LLMEId lLMEId, + TLLI tLLI, // temporary logical link identifier + SAPI sAPI, + XID_Info xID_Info optional // the negotiated XID parameters agreed by the SS +}; + +// ============================================================================= +// ASP Type Definition +// The ASP is used to inform the UE of the XID information responded to the UE by the TTCN. +// ----------------------------------------------------------------------------- +type record G_CLLC_XID_Config_REQ { // @sic R5s130994 sic@ + LLMEId lLMEId, + TLLI tLLI, // temporary logical link identifier + SAPI sAPI, + XID_Info xID_Info optional // the XID parameters responded to the UE +}; + +// ============================================================================= +// ASP Type Definition +// The ASP is used to receive an uplink RLC/MAC control block sent by the UE/MS on the specified channel. +// ----------------------------------------------------------------------------- +type record G_RLC_ControlMsg_IND { + integer cellId, + PhysicalChId physicalChId, // Channel identifier + G_LogicChType g_LogicChType, // PCCCH or PACCH or PTCCH + integer tBF_Direction, // 0 -- downlink; 1 -- uplink + TFI tFI, // temporary flow identity + RFN rfn, // the reduced frame number of the frame carrying this message + GRLCCntrlMsgIndType msg // uplink RLC/MAC control message +}; + +type union GRLCCntrlMsgIndType { + PACKETCELLCHANGEFAILURE pktCellChangeFail, + PACKETCELLCHANGENOTIFICATION pktCellChangeNotification, + PACKETCONTROLACKNOWLEDGEMENT pktCtrlAck, + PACKETMEASUREMENTREPORT pktMeasRpt, + PACKETRESOURCEREQUEST pktResReq, + PACKETSISTATUS pktSIStatus, + PSHANDOVERACCESS_8Bit psHOAccess8, + PSHANDOVERACCESS_11Bit psHOAccess11, + PACKETCSREQUEST pktCSRequest +} + +// ============================================================================= +// ASP Type Definition +// The ASP is used to transmit a down link RLC/MAC control message to the UE/MS on the specified channel. +// This ASP provides values for "RRBP" and "S/P" fields in MAC header for TTCN controlling the response from the UE, the value for "PayloadType" and "USF" fields in MAC header shall be filled by the SS.If a RLC/MAC control message can not be fitted into one RLC/MAC control block, the SS RLC/MAC entity shall take the responsibility of segmentation of the message, and set the correct "PayloadType" and optional octet1 (and optional octet2).PTCCH is valid for PACKET TIMING ADVANCE/POWER CONTROL message if sending PACKET PAGING REQUEST.The required 52-multiframe occurs when:pagingGroup div (M div 64) = (FN div 52) mod 64The index to the required paging block in the 51-multiframe determined above:Paging block index = pagingGroup mod (M div 64)M = (12 - BS_PAG_BLKS_RES - BS_PBCCH_BLKS) ??64 +// ----------------------------------------------------------------------------- +type record G_RLC_ControlMsg_REQ { + integer cellId, + PhysicalChId physicalChId, // Channel identifier + G_LogicChType g_LogicChType, // PCCCH or PACCH or PTCCH + integer tBF_Direction, // 0 -- downlink; 1 -- uplink + TFI tFI, // temporary flow identity + RRBP rRBP, // relative reserved block period + S_P_Bit s_P_Bit, // supplementary/polling bit + RFN rfn, // The reduced frame number of the first frame on which this message is sent.If the field t2 of rfn is coded as '11111'B lower layer shall ignore this field. + PAGING_GROUP pagingGroup optional, // for message other than PACKET PAGING REQUEST this field shall be omitted + PagingMode pagingMode, // 0 -- normal paging;1-- extended paging;3 -- paging reorganization + GRLCCntrlMsgReqType msg // Down link RLC/MAC control message +}; + +type union GRLCCntrlMsgReqType { + PACKETCELLCHANGECONTINUE pktCellChangeContinue, + PACKETDOWNLINKASSIGNMENT pktDLAssignmt, + PACKETMEASUREMENTORDER pktMeasOrder, + PACKETUPLINKASSIGNMENT pktULAssignmt, + PACKETCELLCHANGEORDER pktCellChangeOrder, + PSHANDOVERCOMMAND psHandover, + PSPHYSICALINFORMATION psPhysInfo, + PACKETCSCOMMAND pktCSCommand +} + +type union G_RLC_DATAMESSAGE_REQ { + G_RLC_ControlMsg_REQ ctrl +} + +type union G_RLC_DATAMESSAGE_IND { + G_RLC_ControlMsg_IND ctrl +} + +// ============================================================================= +// ASP Type Definition +// The ASP is used to delete a RLC/MAC entity in GERAN emulation module. +// This ASP is used to release any resource used for the RLC/MAC emulation entity in the SS. +// ----------------------------------------------------------------------------- +type record G_CRLC_DeleteRLC_MAC_REQ { + integer cellId // The identifier of the cell +}; + +// ============================================================================= +// ASP Type Definition +// The ASP is used to create a RLC/MAC entity in GERAN RLC/MAC emulation module. +// One RLC/MAC entity per cell can exist, cellId will be used for couping LLC layer module to the RLC/MAC emulation module. +// The packet channel description given in the ChannelSpecificInfo of G_CL1_CreateBasicPhyCh_REQ shall be used to configure +// this layer. This ASP shall be called after the G_CL1_CreateBasicPhyCh_REQ ASP. +// ----------------------------------------------------------------------------- +type record G_CRLC_CreateRLC_MAC_REQ { + integer cellId // The identifier of the cell +}; + +// ============================================================================= +// ASP Type Definition +// The ASP is used to create an LLE (LLC Entity) in GERAN LLC emulation module. +// The RLC/MAC emulation module needs to be created prior to this ASP by G_CRLC_CreateRLC_MAC_REQ ASP. +// ----------------------------------------------------------------------------- +type record G_CLLC_CreateLLE_REQ { + LLMEId lLMEId, // Logical Layer Management Entity Id + integer rLC_MAC_MappingInfo // This parameter indicates the RLC/MAC emulation module in the cell, not the cell itself. +}; + +// ============================================================================= +// ASP Type Definition +// The ASP is used to delete an LLE (LLC Entity) in GERAN LLC emulation module. +// ----------------------------------------------------------------------------- +type record G_CLLC_DeleteLLE_REQ { + LLMEId lLMEId // Logical Layer Management Entity Id +}; + +// ============================================================================= +// ASP Type Definition +// The ASP is used to reassign RLC/MAC entity to the specified LLME identity. +// This ASP allows simulation of Intra-SGSN operations in tests. +// ----------------------------------------------------------------------------- +type record G_CLLC_ReassignLLE_REQ { + LLMEId lLMEId, // Logical Layer Management Entity Id + integer rLC_MAC_MappingInfo, // This parameter indicates the RLC/MAC emulation module in the cell, not the cell itself + TLLI tLLI +}; + +type record G_CSNDCP_Activate_REQ { + SNDCPId sndcpId, // The SNDCP entity identifier of the cell + LLMEId lLMEId, // Logical Layer Management Entity Id + integer nSAPI, // The Network Service Access Point Identifier + SAPI sAPI, // The LLC SAPI + integer pci_Compression, // 0- RFC 1144 [46] compress, RFC 2507 [30] compression, - no compression + integer dataCompression, // 0- V.42bis [47] compression, 1- V.44 [48] compression, - no compression + integer nPDUNumberSync // 0- Asynchronous, 1- Synchronous +}; + +type record G_CSNDCP_Release_REQ { + SNDCPId sndcpId, // The SNDCP entity identifier of the cell + integer nSAPI // The Network Service Access Point Identifier +}; + +type record G_SN_UNITDATA_IND { + SNDCPId sndcpId, + integer nSAPI, // 5 -15 + N_PDU n_PDU +}; + +type record G_SN_UNITDATA_REQ { + SNDCPId sndcpId, + integer nSAPI, // 5 -15 + N_PDU n_PDU +}; + +type record G_SN_XID_IND { + SNDCPId sndcpId, + XID_Info xid_Info +}; + +type record G_SN_XID_REQ { + SNDCPId sndcpId, + XID_Info xid_Info +}; + +type union G_SNDCP_CONFIG_REQ { + G_CSNDCP_Activate_REQ act, + G_CSNDCP_Release_REQ rel +}; + +type record G_SNDCP_CONFIG_CNF {}; + +type union G_SN_DATAMESSAGE_REQ { + G_SN_UNITDATA_REQ unit + }; + +type union G_SN_DATAMESSAGE_IND { + G_SN_UNITDATA_IND unit + }; +} // end of group ASPTypes +// @sic R5s120360 sic@ +} with { encode "GERAN Types" } + diff --git a/LTE_A_IWD_14wk37/Common/IMS/IMS_ASP_Templates.ttcn b/LTE_A_IWD_14wk37/Common/IMS/IMS_ASP_Templates.ttcn new file mode 100644 index 0000000..94e7d10 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS/IMS_ASP_Templates.ttcn @@ -0,0 +1,279 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-07 18:37:49 +0200 (Sun, 07 Sep 2014) $ +// $Rev: 12081 $ +/******************************************************************************/ + +module IMS_ASP_Templates { + import from LibSip_SIPTypesAndValues all; + import from IP_ASP_TypeDefs all; + import from IMS_ASP_TypeDefs all; + import from CommonDefs all; + + //**************************************************************************** + // ASPs to send/receive IMS messages + //---------------------------------------------------------------------------- + + template (value) IMS_RoutingInfo_Type cs_IMS_RoutingInfo(InternetProtocol_Type p_Protocol, + template (omit) IMS_ProtectedUnprotected_Type p_ProtectedUnprotected := omit, + template (omit) IP_AddrInfo_Type p_UE_Address := omit, + template (omit) IP_AddrInfo_Type p_NW_Address := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + Protocol := p_Protocol, + Security := p_ProtectedUnprotected, + UE_Address := p_UE_Address, + NW_Address := p_NW_Address + }; + + template (present) IMS_RoutingInfo_Type cr_IMS_RoutingInfo(template (present) InternetProtocol_Type p_Protocol := ?, + template IMS_ProtectedUnprotected_Type p_ProtectedUnprotected := *) := // @sic R5s130133 additional change 1; R5s130187 sic@ + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + Protocol := p_Protocol, + Security := p_ProtectedUnprotected, + UE_Address := *, // @sic R5s120907 change 1 sic@ + NW_Address := * // @sic R5s120907 change 1 sic@ + }; + + //---------------------------------------------------------------------------- + + template (present) IMS_DATA_REQ cr_IMS_DATA_REQ_Any(template (present) IMS_RoutingInfo_Type p_RoutingInfo := ?, + template (present) IMS_Request_Type p_IMS_Request := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + /* @sic @sic R5s140710 - MCC160 Implementation sic@ */ + RoutingInfo := p_RoutingInfo, + Request := p_IMS_Request + }; + + template (present) IMS_DATA_REQ car_IMS_Register_Request(template (present) REGISTER_Request p_RegisterRequest) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + RoutingInfo := cr_IMS_RoutingInfo, + Request := { + Register := p_RegisterRequest + } + }; + + template (present) IMS_DATA_RSP cr_IMS_DATA_RSP_Any := ?; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + + template (present) IMS_DATA_REQ car_IMS_Subscribe_Request(template (present) SUBSCRIBE_Request p_SubscribeRequest) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + RoutingInfo := cr_IMS_RoutingInfo, + Request := { + Subscribe := p_SubscribeRequest + } + }; + + template (value) IMS_DATA_REQ cas_IMS_Notify_Request(template (value) IMS_RoutingInfo_Type p_RoutingInfo, + template (value) NOTIFY_Request p_NotifyRequest) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + RoutingInfo := p_RoutingInfo, + Request := { + Notify := p_NotifyRequest + } + }; + + template (present) IMS_DATA_REQ car_IMS_Notify_Request(template (present) NOTIFY_Request p_NotifyRequest) := + { + RoutingInfo := cr_IMS_RoutingInfo, + Request := { + Notify := p_NotifyRequest + } + }; + + //---------------------------------------------------------------------------- + + template (value) IMS_DATA_REQ cas_IMS_DATA_REQ(template (value) IMS_RoutingInfo_Type p_RoutingInfo, + template (value) IMS_Request_Type p_Request) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + RoutingInfo := p_RoutingInfo, + Request := p_Request + }; + + template (value) IMS_DATA_RSP cas_IMS_DATA_RSP(template (value) IMS_RoutingInfo_Type p_RoutingInfo, + template (value) IMS_Response_Type p_Response) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + RoutingInfo := p_RoutingInfo, + Response := p_Response + }; + + template (present) IMS_DATA_RSP car_IMS_DATA_RSP(template (present) IMS_RoutingInfo_Type p_RoutingInfo, + template (present) IMS_Response_Type p_Response) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + RoutingInfo := p_RoutingInfo, + Response := p_Response + }; + + //---------------------------------------------------------------------------- + + template (present) IMS_DATA_REQ car_IMS_Ack_Request(template (present) ACK_Request p_AckRequest) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + RoutingInfo := cr_IMS_RoutingInfo, + Request := { + Ack := p_AckRequest + } + }; + + template (present) IMS_DATA_REQ car_IMS_Prack_Request(template (present) PRACK_Request p_PrackRequest) := + { /* @status APPROVED (IMS, LTE_A) */ + RoutingInfo := cr_IMS_RoutingInfo, + Request := { + Prack := p_PrackRequest + } + }; + + template (present) IMS_DATA_REQ car_IMS_Refer_Request(template (present) REFER_Request p_ReferRequest) := + { + RoutingInfo := cr_IMS_RoutingInfo, + Request := { + Refer := p_ReferRequest + } + }; + + template (value) IMS_DATA_REQ cas_IMS_Prack_Request(template (value) IMS_RoutingInfo_Type p_RoutingInfo, + template (value) PRACK_Request p_PrackRequest) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + RoutingInfo := p_RoutingInfo, + Request := { + Prack := p_PrackRequest + } + }; + + template (value) IMS_DATA_REQ cas_IMS_Ack_Request(template (value) IMS_RoutingInfo_Type p_RoutingInfo, + template (value) ACK_Request p_AckRequest) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + RoutingInfo := p_RoutingInfo, + Request := { + Ack := p_AckRequest + } + }; + + template (present) IMS_DATA_REQ car_IMS_Update_Request(template (present) UPDATE_Request p_UpdateRequest := ?) := + { /* @status APPROVED (IMS, LTE_A) */ + RoutingInfo := cr_IMS_RoutingInfo, + Request := { + Update := p_UpdateRequest + } + }; + + template (value) IMS_DATA_REQ cas_IMS_Update_Request(template (value) IMS_RoutingInfo_Type p_RoutingInfo, + template (value) UPDATE_Request p_UpdateRequest) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + RoutingInfo := p_RoutingInfo, + Request := { + Update := p_UpdateRequest + } + }; + + + template (value) IMS_DATA_REQ cas_IMS_Cancel_Request(template (value) IMS_RoutingInfo_Type p_RoutingInfo, + template (value) CANCEL_Request p_CancelRequest ) := + { /* @status APPROVED (IMS, LTE_A) */ + RoutingInfo := p_RoutingInfo, + Request := { + Cancel := p_CancelRequest + } + }; + + template (present) IMS_DATA_REQ car_IMS_Invite_Request(template (present) INVITE_Request p_InviteRequest := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + RoutingInfo := cr_IMS_RoutingInfo, + Request := { + Invite := p_InviteRequest + } + }; + + template (value) IMS_DATA_REQ cas_IMS_Invite_Request(template (value) IMS_RoutingInfo_Type p_RoutingInfo, + template (value) INVITE_Request p_InviteRequest ) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + RoutingInfo := p_RoutingInfo, + Request := { + Invite := p_InviteRequest + } + }; + + template (present) IMS_DATA_REQ car_IMS_Bye_Request(template (present) BYE_Request p_ByeRequest := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A) */ + RoutingInfo := cr_IMS_RoutingInfo, + Request := { + Bye := p_ByeRequest + } + }; + + template (value) IMS_DATA_REQ cas_IMS_BYE_Request(template (value) IMS_RoutingInfo_Type p_RoutingInfo, + template (value) BYE_Request p_ByeRequest ) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + RoutingInfo := p_RoutingInfo, + Request := { + Bye := p_ByeRequest + } + }; + + template (present) IMS_DATA_REQ car_IMS_Publish_Request(template (present) PUBLISH_Request p_PublishRequest := ?) := + { + RoutingInfo := cr_IMS_RoutingInfo, + Request := { + Publish := p_PublishRequest + } + }; + + template (present) IMS_DATA_REQ car_IMS_Message_Request(template (present) MESSAGE_Request p_MessageRequest := ?) := + { /* @status APPROVED (IMS) */ + RoutingInfo := cr_IMS_RoutingInfo, + Request := { + Message := p_MessageRequest + } + }; + + template (value) IMS_DATA_REQ cas_IMS_Message_Request(template (value) IMS_RoutingInfo_Type p_RoutingInfo, + template (value) MESSAGE_Request p_MessageRequest ) := + { /* @status APPROVED (IMS) */ + RoutingInfo := p_RoutingInfo, + Request := { + Message := p_MessageRequest + } + }; + + template (value) IMS_DATA_REQ cas_IMS_Refer_Request(template (value) IMS_RoutingInfo_Type p_RoutingInfo, + template (value) REFER_Request p_ReferRequest ) := + { + RoutingInfo := p_RoutingInfo, + Request := { + Refer := p_ReferRequest + } + }; + + //**************************************************************************** + // Auxiliary function + //---------------------------------------------------------------------------- + /* + * @desc get MessageHeader from given IMS request + * @param p_Request + * @return MessageHeader + * @status APPROVED (IMS_34229) + */ + function f_IMS_Request_GetMessageHeader(IMS_Request_Type p_Request) return MessageHeader + { + var MessageHeader v_MessageHeader; + + if (ischosen(p_Request.Register)) { v_MessageHeader := p_Request.Register.msgHeader; } + else if (ischosen(p_Request.Invite)) { v_MessageHeader := p_Request.Invite.msgHeader; } + else if (ischosen(p_Request.Options)) { v_MessageHeader := p_Request.Options.msgHeader; } + else if (ischosen(p_Request.Bye)) { v_MessageHeader := p_Request.Bye.msgHeader; } + else if (ischosen(p_Request.Cancel)) { v_MessageHeader := p_Request.Cancel.msgHeader; } + else if (ischosen(p_Request.Ack)) { v_MessageHeader := p_Request.Ack.msgHeader; } + else if (ischosen(p_Request.Prack)) { v_MessageHeader := p_Request.Prack.msgHeader; } + else if (ischosen(p_Request.Notify)) { v_MessageHeader := p_Request.Notify.msgHeader; } + else if (ischosen(p_Request.Subscribe)) { v_MessageHeader := p_Request.Subscribe.msgHeader; } + else if (ischosen(p_Request.Publish)) { v_MessageHeader := p_Request.Publish.msgHeader; } + else if (ischosen(p_Request.Update)) { v_MessageHeader := p_Request.Update.msgHeader; } + else if (ischosen(p_Request.Refer)) { v_MessageHeader := p_Request.Refer.msgHeader; } + else if (ischosen(p_Request.Message)) { v_MessageHeader := p_Request.Message.msgHeader; } + else { FatalError(__FILE__, __LINE__, "unknown SIP message"); } + + return v_MessageHeader; + } +} diff --git a/LTE_A_IWD_14wk37/Common/IMS/IMS_ASP_TypeDefs.ttcn b/LTE_A_IWD_14wk37/Common/IMS/IMS_ASP_TypeDefs.ttcn new file mode 100644 index 0000000..f5de504 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS/IMS_ASP_TypeDefs.ttcn @@ -0,0 +1,138 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-03-03 17:01:01 +0100 (Mon, 03 Mar 2014) $ +// $Rev: 10790 $ +/******************************************************************************/ + +module IMS_ASP_TypeDefs { + import from CommonDefs all; + import from LibSip_SIPTypesAndValues all; + import from IP_ASP_TypeDefs all; + + //**************************************************************************** + // Data ASPs + //**************************************************************************** + + type enumerated IMS_ProtectedUnprotected_Type {protected, unprotected}; + + type record IMS_RoutingInfo_Type { + InternetProtocol_Type Protocol, // UDP or TCP + IMS_ProtectedUnprotected_Type Security optional, // protected or unprotected (in DL omit when IP PTC shall decide what to do) + IP_AddrInfo_Type UE_Address optional, // sent by the IP PTC when there is an initial request on unprotected connection + IP_AddrInfo_Type NW_Address optional // sent by the IP PTC when there is an initial request on unprotected connection + }; + + type RequestUnion IMS_Request_Type with { encode "SIPCodec"}; // Alias for 'RequestUnion' as defined in LibSip_SIPTypesAndValues + type Response IMS_Response_Type with { encode "SIPCodec"}; // Alias for 'Response' as defined in LibSip_SIPTypesAndValues + + type record IMS_DATA_REQ { + IMS_RoutingInfo_Type RoutingInfo, + IMS_Request_Type Request + }; + + type record IMS_DATA_RSP { + IMS_RoutingInfo_Type RoutingInfo, + IMS_Response_Type Response + }; + + //**************************************************************************** + // Configuration ASPs and common definitions + //**************************************************************************** + + type record IMS_UnprotectedPorts_Type { + PortNumber_Type Port_us, // UE side: 5060 per default; may be set to other value by initial request (REGISTER) by the UE + PortNumber_Type Port_ps // network side: 5060 (without choice) + }; + + type record IMS_ProtectedPorts_Type { + PortNumber_Type Port_us, // UE side: Server + PortNumber_Type Port_uc, // UE side: Client + PortNumber_Type Port_ps, // network side: Server + PortNumber_Type Port_pc // network side: Client + }; + + type record IMS_SPIs_Type { + IPsec_SPI_Type SPI_us, // SPI at UE side: assigned by the UE + IPsec_SPI_Type SPI_uc, // SPI at UE side: assigned by the UE + IPsec_SPI_Type SPI_ps optional, // SPI at network side: to be assigned by TTCN + IPsec_SPI_Type SPI_pc optional // SPI at network side: to be assigned by TTCN + }; + + type record IMS_SecurityInfo_Type { + IMS_ProtectedPorts_Type ProtectedPorts, + IMS_SPIs_Type SPIs, + IPsec_IntegrityAlgorithm_Type IntegrityAlgorithm, + IPsec_CipheringAlgorithm_Type CipheringAlgorithm + }; + + type record IMS_RegistrationInfo_Type { + IP_AddrInfo_Type NW_Address, // network address of the chosen IMS server (e.g. IPv4, IPv6) + IP_AddrInfo_Type UE_Address, // UE address as used for security protected connections + IMS_SecurityInfo_Type SecurityInfo optional // omit in case of GIBA + }; + + type record IMS_PortsAndSecurityConfigReq_Type { + PortNumber_Type UnprotectedPort_us optional, // 5060 per default + IMS_RegistrationInfo_Type RegistrationInfo + }; + + type Null_Type IMS_PortsAndSecurityConfigCnf_Type; /* @sic R5s130266 change 1.3, 4, 5 - MCC160 Implementation: sic@ + SPIs and protected ports are fully controlled by the IMS PTC + => it is not necessary anymore to return IMS_ProtectedPorts_Type, IMS_SPIs_Type to the IMS PTC */ + + type union IMS_CONFIG_REQ { + IPsec_SecurityKeys_Type InstallKey, + IMS_PortsAndSecurityConfigReq_Type PortsAndSecurityConfig, + IMS_SecurityInfo_Type SecurityRelease, + Null_Type RegInfoRelease, /* @sic R5s140123 change 9 sic@ */ + Null_Type CloseTCP /* @sic R5s130988 change 1 - MCC160 implementation sic@ */ + }; + + type union IMS_CONFIG_CNF { + Null_Type InstallKey, + IMS_PortsAndSecurityConfigCnf_Type PortsAndSecurityConfig, + Null_Type SecurityRelease, + Null_Type RegInfoRelease, /* @sic R5s140123 change 9 sic@ */ + Null_Type CloseTCP /* @sic R5s130988 change 1 - MCC160 implementation sic@ */ + }; + + //**************************************************************************** + // Port definitions + //**************************************************************************** + + type port IMS_IP_CTRL_PORT message { // Control port at the IMS PTC to configure IP for IMS + out IMS_CONFIG_REQ; + in IMS_CONFIG_CNF; + }; + + type port IP_IMS_CTRL_PORT message { // Control port at the IP PTC to get configuration from IMS + out IMS_CONFIG_CNF; + in IMS_CONFIG_REQ; + }; + + type port IMS_IP_CLIENT_PORT message { // IMS client: send requests, receive response + out IMS_DATA_REQ; + in IMS_DATA_RSP; + }; + + type port IP_IMS_CLIENT_PORT message { // counter part for the IMS client at the IP PTC: receive requests, send response + out IMS_DATA_RSP; + in IMS_DATA_REQ; + }; + + type port IMS_IP_SERVER_PORT message { // IMS server: send response, receive requests + out IMS_DATA_RSP; + in IMS_DATA_REQ; + }; + + type port IP_IMS_SERVER_PORT message { // counter part for the IMS server at the IP PTC: receive response, send requests + out IMS_DATA_REQ; + in IMS_DATA_RSP; + }; + +} diff --git a/LTE_A_IWD_14wk37/Common/IMS/IMS_CommonDefs.ttcn b/LTE_A_IWD_14wk37/Common/IMS/IMS_CommonDefs.ttcn new file mode 100644 index 0000000..a80ae12 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS/IMS_CommonDefs.ttcn @@ -0,0 +1,226 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-08-24 13:09:45 +0200 (Sun, 24 Aug 2014) $ +// $Rev: 11892 $ +/******************************************************************************/ + +module IMS_CommonDefs { + import from CommonDefs all; + import from Parameters all; + import from IMS_CC_Parameters all; + + type enumerated IMS_SecurityScheme_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + GIBA, /* 34.229-2 Table A.6a Item 1 */ + IMS_Security /* 34.229-2 Table A.6a Item 2 */ + }; + + type enumerated IMS_CallHoldResume_Type {HOLD, RESUME}; /* @status APPROVED (IMS) */ + + const boolean tsc_IMS_SMSoverIMS := false; /* In previous releases 34.229-2 A.4.5/21 (Rel-8) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + const boolean tsc_IMS_VideoFeature := false; /* A.12/zz + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + const B128_Type tsc_IMS_AuthRAND := px_eAuthRAND; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + const integer tsc_IMS_Port_ps_NoSec := 5060; + const integer tsc_IMS_Port_pc := 5061; /* client port at NW side for security protected IMS signalling + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + const integer tsc_IMS_Port_ps := 5062; /* server port at NW side for security protected IMS signalling + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + const integer tsc_IMS_Port_pc_2 := 5063; /* "new" client port at NW side for security protected IMS signalling: for re-authentication a new client port is needed + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + const integer tsc_IMS_MediaPort_M1 := 60350; /* RTP port Speech @sic R5s130495 Change 19 sic@ + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + const integer tsc_IMS_MediaPort_M2 := 60352; /* RTP port Video @sic R5s130495 Change 19 sic@ + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + const integer tsc_IMS_MediaPort_M3 := 60354; /* RTP port Text @sic R5s130495 Change 19 sic@ + * @status APPROVED (IMS, LTE_A) */ + const charstring tsc_IMS_Scscf := "scscf@3gpp.org"; + const charstring tsc_IMS_Opaque := "5ccc069c403ebaf9f0171e9517f40e41"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + const charstring tsc_IMS_RegisterExpiration := "600"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + const charstring tsc_IMS_FeatureParamId_3gpp_icsi_ref := "+g.3gpp.icsi-ref"; /* @sic R5s120530 change 3.6 sic@ + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + + const charstring tsc_IMS_FeatureParamValue_3gpp_icsi_ref := "urn:urn-7:3gpp-service.ims.icsi.mmtel"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (value) charstring cs_IMS_EncodedFeatureParamValue_3gpp_icsi_ref := f_URL_Encoding(tsc_IMS_FeatureParamValue_3gpp_icsi_ref); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + @sic R5-142247 URL encoding sic@ */ + + const charstring tsc_IMS_UEInstanceId := """"""; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + const charstring tsc_IMS_FeatureCap_SrvccAlerting := "+g.3gpp.srvcc-alerting"; /* @sic R5-142287 change 1, 2 sic@ + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + const charstring tsc_IMS_FinalConferenceUri := "sip:Stf160FinalConf@3gpp.org"; // FFS px_FinalConferenceUri + const charstring tsc_IMS_ConferenceFactoryUri := "sip:Stf160ConfFactory@3gpp.org"; // FFS px_ConferenceFactoryUri + const charstring tsc_IMS_TemporaryConferenceUri := "sip:Stf160TempConf@3gpp.org"; // FFS px_TemporaryConferenceUri + + const charstring tsc_IMS_PSI_SMSC := "tel:+" & px_SMS_SMSC_InternationalNumber; /* @status APPROVED (IMS) */ + + template (value) charstring cs_IMS_ArbitraryValueFor_gr(charstring p_PublicUserIdentity) := """" & p_PublicUserIdentity & ";gr=urn%3Auuid%3Af81d4fae-7dec-11d0-a765-00a0c91e6bf6"""; /* FFS + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (value) charstring cs_IMS_TempGRUUForUE(charstring p_HomeDomainName) := """sip:tgruu.7hs==jd7vnzga5w7fajsc7-ajd6fabz0f8g5@" & p_HomeDomainName & ";gr"""; /* FFS + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + const integer tsc_IMS_RSeqNumFor183 := 121; /* @status APPROVED (IMS, IMS_IRAT, LTE_A, LTE, LTE_IRAT) */ + const charstring tsc_IMS_Emergency_TelUri := "tel:112"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + const charstring tsc_IMS_CalleeTelUri := "tel:+4989364072"; //FFS + const charstring tsc_IMS_UrnServiceSos := "urn:service:sos"; /* @status APPROVED (IMS) */ + const charstring tsc_IMS_UrnServiceSos_Ambulance := tsc_IMS_UrnServiceSos & "." & "ambulance"; /* @status APPROVED (IMS) */ + + const charstring tsc_IMS_CallerDomain := "stf160.etsi.org"; /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + const charstring tsc_IMS_CallerSipAddrStr := "sip:PeerUE-Public@" & tsc_IMS_CallerDomain; /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + const integer tsc_IMS_CallerPort := 6543; /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + + const charstring tsc_P_CSCF_DomainName := "3gpp.org"; + + const charstring tsc_IMS_ExpiresDef := "600000"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + const charstring tsc_IMS_Ecscf := "ecscf.other.com"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + const float tsc_IMS_WaitForTcpClose := 3.0; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + /* + * @desc build up receive template for (case-insensitve) token + * @param p_Charstring + * @return template (present) charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_TokenPattern(charstring p_Charstring) return template (present) charstring + { /* @sic R5-140901: temporary solution - handle most common variants of the (case insensitive) token sic@ */ + var charstring v_CharstringPattern := p_Charstring; + var charstring v_UpperCasePattern := f_StringToUpper(p_Charstring); + var charstring v_LowerCasePattern := f_StringToLower(p_Charstring); + + if (lengthof(v_CharstringPattern) > 0) { + v_CharstringPattern[0] := f_StringToUpper(v_CharstringPattern[0]); + } + return (pattern v_UpperCasePattern, pattern v_LowerCasePattern, pattern v_CharstringPattern); + } + + /* + * @desc convert IPCAN_RAN_Type to charstring + * @param p_RAN_Type + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_RANType2Charstring(IPCAN_RAN_Type p_RAN_Type) return charstring + { + var charstring v_RanString; + + select (p_RAN_Type) { + case (UTRAN_FDD) { v_RanString := "3GPP-UTRAN-FDD"; } + case (UTRAN_TDD) { v_RanString := "3GPP-UTRAN-TDD"; } + case (GERAN) { v_RanString := "3GPP-GERAN"; } + case (EUTRA_FDD) { v_RanString := "3GPP-E-UTRAN-FDD"; } // @sic R5s120530 change 1.4 sic@ + case (EUTRA_TDD) { v_RanString := "3GPP-E-UTRAN-TDD"; } + case else { v_RanString := "Unknown RANTech"; } + } + return v_RanString; + } + + /* + * @desc generic function to build a tag + * @param p_Method + * @param p_FromOrTo (default value: "To") + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_GenerateTag(charstring p_Method, + charstring p_FromOrTo := "To") return charstring + { /* p_Method .. e.g. "INVITE" */ + /* @sic R5-131897, R5-132063 - new generic function sic@ */ + return "abc-" & p_Method & "-" & p_FromOrTo & "tag"; + } + + /* + * @desc return Security Scheme to be used + * @param p_IsGiba + * @return IMS_SecurityScheme_Type + * @status APPROVED (IMS) + */ + function f_IMS_SecurityScheme(boolean p_IsGiba) return IMS_SecurityScheme_Type + { + var IMS_SecurityScheme_Type v_SecurityScheme := IMS_Security; + if (p_IsGiba) { + v_SecurityScheme := GIBA; + } + return v_SecurityScheme; + } + + /* + * @desc restore URL-encoded (or "percent-encoded") URL: + * replace all "%XY" with the the respective character corresponding to the hex code XY + * @param p_EncodedUrl + * @return charstring + * @status APPROVED (IMS) + */ + function f_URL_Decoding(charstring p_EncodedUrl) return charstring + { + var charstring v_Url := p_EncodedUrl; + var charstring v_Pattern := "(*)(%[0-9a-fA-F]#2)"; + var charstring v_PercentCodedChar; + var charstring v_HexCode; + var charstring v_Char; + var integer v_Pos; + + while (true) { + v_PercentCodedChar := regexp(v_Url, v_Pattern, 1); + if (v_PercentCodedChar != "") { + v_Pos := lengthof(regexp(v_Url, v_Pattern, 0)); + v_HexCode := substr(v_PercentCodedChar, 1, 2); + v_Char := oct2char(hex2oct(str2hex(v_HexCode))); + v_Url := replace(v_Url, v_Pos, 3, v_Char); + } else { + break; + } + } + return v_Url; + } + + /* + * @desc returns p_Char if it is not a reserved character or the encoded value + * @param p_Char + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_URL_Encoding_SingleChar(Char1_Type p_Char) return charstring + { + var Char1List_Type v_ReservedChars := {":", "/", "?", "#", "[", "]", "@", "!", "$", "&", "'", "(", ")", "*", "+", ",", ";", "="}; + var charstring v_EncodedChar; + var integer i; + for (i:=0; i < lengthof(v_ReservedChars); i:=i+1) { + if (v_ReservedChars[i] == p_Char) { + v_EncodedChar := "%" & oct2str(char2oct(p_Char)); + return v_EncodedChar; + } + } + return p_Char; + } + + /* + * @desc apply URL-encoded (or "percent-encoded") URL: + * reserved characters acc. to RFC 3986 are replaced by their percent-code + * @param p_Url + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_URL_Encoding(charstring p_Url) return charstring + { + var charstring v_EncodedUrl := ""; + var integer i; + + for (i:=0; i < lengthof(p_Url); i:=i+1) { + v_EncodedUrl := v_EncodedUrl & fl_URL_Encoding_SingleChar(p_Url[i]); + } + return v_EncodedUrl; + } + +} diff --git a/LTE_A_IWD_14wk37/Common/IMS/IMS_CommonFunctions.ttcn b/LTE_A_IWD_14wk37/Common/IMS/IMS_CommonFunctions.ttcn new file mode 100644 index 0000000..04d9a89 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS/IMS_CommonFunctions.ttcn @@ -0,0 +1,275 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-05-01 13:53:52 +0200 (Thu, 01 May 2014) $ +// $Rev: 11225 $ +/******************************************************************************/ + +module IMS_CommonFunctions { + + import from CommonDefs all; + import from IP_ASP_TypeDefs all; + import from IMS_ASP_TypeDefs all; + import from IMS_ASP_Templates all; + import from NAS_AuthenticationCommon all; + import from LibSip_Common all; + import from IMS_CommonTemplates all; + import from IMS_SIP_Templates all; + + //**************************************************************************** + // security/authentication functions: + //---------------------------------------------------------------------------- + + // function to calculate the MD5 Message-Digest Algorithm according to RFC 1321 + external function fx_MD5_Hex(octetstring p_Data) return octetstring; + + /* + * @desc Convert a bitstring into its Base64 representation + * Adapted from Java Base64 implementation in en.wikibooks.org + * @param p_Bitstring + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_Bitstring2Base64 (bitstring p_Bitstring) return charstring + { + const charstring tsc_Base64Table := // The 64 encoding characters + "ABCDEFGHIJKLMNOP" & + "QRSTUVWXYZabcdef" & + "ghijklmnopqrstuv" & + "wxyz0123456789+/"; + var octetstring v_S := bit2oct(p_Bitstring); // String to be encoded + var bitstring v_BS; + var charstring v_R := ""; // Result encoded string + var charstring v_P := ""; // Padding + var integer v_C := lengthof(v_S) mod 3; + var integer v_Idx; + + // Add right zero pad to make string a multiple of 3 characters + if (v_C > 0){ + while(v_C < 3){ + v_P := v_P & "="; + v_S := v_S & '00'O; + v_C := v_C + 1; + } + } + // Run over the bitstring + v_BS := oct2bit(v_S); + for (v_C := 0; v_C < lengthof(v_BS) / 6; v_C := v_C + 1) { + v_Idx := bit2int(substr(v_BS, v_C*6, 6)); + v_R := v_R & tsc_Base64Table[v_Idx]; + } + // Now return result considering padding + return substr(v_R, 0, (lengthof(v_R) - lengthof(v_P))) & v_P; + } + + /* + * @desc IMS specifc wrapper function for f_AuthenticationInit + * @param p_Rand + * @param p_AuthenticationError (default value: noError) + * @return Common_AuthenticationParams_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_AuthenticationInit(template (value) B128_Type p_Rand, + AuthenticationError_Type p_AuthenticationError := noError) return Common_AuthenticationParams_Type + { + var Common_AuthenticationParams_Type v_AuthenticationParams := valueof(cs_CommonAuthParams_Init(p_Rand)); + return f_AuthenticationInit(v_AuthenticationParams, p_AuthenticationError); // as defined for NAS (NAS_AuxiliaryDefsAndFunctions) + } + + /* + * @desc check digest response sent by the UE + * @param p_Method (default value: "REGISTER") + * @param p_DigestResponse + * @param p_XRES + * @param p_XRESLength .. length of XRES in octets + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_Authorization_CheckDigestResponse(charstring p_Method := "REGISTER", + CommaParam_List p_DigestResponse, + bitstring p_XRES, + integer p_XRESLength) return boolean + { /* input is the comma separated parameter list: digestResponse from the Authorization header and the value of XRES calculated in ts_AuthenticationInit + This function calculates the digest response (v_RequestDigest) for p_XRES according to RFC 2617 and compares it with the response received from the UE (v_Dresponse) */ + /* @sic R5s130794 change 6: additional parameter p_Method to allow function to be used for HTTP Digest XCAP authentication sic@ */ + + var octetstring v_METHOD := char2oct(p_Method); + var octetstring v_Username := char2oct(f_SIP_CommaParamList_GetParamValue (p_DigestResponse, "username")); + var octetstring v_Realm := char2oct(f_SIP_CommaParamList_GetParamValue (p_DigestResponse, "realm")); + var octetstring v_DigestUri := char2oct(f_SIP_CommaParamList_GetParamValue (p_DigestResponse, "uri")); + var octetstring v_Nonce := char2oct(f_SIP_CommaParamList_GetParamValue (p_DigestResponse, "nonce")); + var octetstring v_NC := char2oct(f_SIP_CommaParamList_GetParamValue (p_DigestResponse, "nc")); + var octetstring v_CNonce := char2oct(f_SIP_CommaParamList_GetParamValue (p_DigestResponse, "cnonce")); + var octetstring v_Qop := char2oct(f_SIP_CommaParamList_GetParamValue (p_DigestResponse, "qop")); + + var octetstring v_Passwd := substr(bit2oct(p_XRES), 0, p_XRESLength); // @sic R5s120907 sic@ + var octetstring v_Dresponse := str2oct(f_SIP_CommaParamList_GetParamValue (p_DigestResponse, "response")); + + var octetstring v_Secret; + var octetstring v_HA2; + var octetstring v_Data; + var octetstring v_RequestDigest; + + var octetstring v_A1; + var octetstring v_A2; + var octetstring v_SecretData; + + // RFC 2617 3.2.2.2 + // A1 = unq(username-value) ":" unq(realm-value) ":" passwd + v_A1 := v_Username & tsc_COLON_HEX & v_Realm & tsc_COLON_HEX & v_Passwd; + + // H(A1) + v_Secret := char2oct(f_StringToLower(oct2str(fx_MD5_Hex(v_A1)))); + + // RFC 2617 3.2.2.3 + // A2 = Method ":" digest-uri-value + v_A2 := v_METHOD & tsc_COLON_HEX & v_DigestUri; + v_HA2 := char2oct(f_StringToLower(oct2str(fx_MD5_Hex(v_A2)))); + + // RFC 2617 3.2.2.1 + // unq(nonce-value) + // ":" nc-value + // ":" unq(cnonce-value) + // ":" unq(qop-value) + // ":" H(A2) + + v_Data := v_Nonce & tsc_COLON_HEX & v_NC & tsc_COLON_HEX & v_CNonce & tsc_COLON_HEX & v_Qop & tsc_COLON_HEX & v_HA2; + + //now apply KD function described in RFC 2617 section 3.2.1 + //KD(secret, data) = H(concat(secret, ":", data)) + v_SecretData := v_Secret & tsc_COLON_HEX & v_Data; + v_RequestDigest := fx_MD5_Hex(v_SecretData); + + return (v_RequestDigest == v_Dresponse); + } + + //**************************************************************************** + // auxilliary functions: + //---------------------------------------------------------------------------- + /* + * @desc convert transport protocol to string to be used in IMS messages + * @param p_Protocol + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_ConvertTransportProtocolToString(InternetProtocol_Type p_Protocol) return charstring + { + var charstring v_ProtocolString := ""; + + select (p_Protocol) { + case (tcp) { + v_ProtocolString := "TCP"; + } + case (udp) { + v_ProtocolString := "UDP"; + } + } + return v_ProtocolString; + } + + + /* + * @desc return routing information for DL data corresponding to the routing information received in UL; + * NOTE: in DL we never send any IP addresses + * @param p_RoutingInfo_UL + * @return template (value) IMS_RoutingInfo_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_RoutingInfo_ULtoDL(IMS_RoutingInfo_Type p_RoutingInfo_UL) return template (value) IMS_RoutingInfo_Type + { + return cs_IMS_RoutingInfo(p_RoutingInfo_UL.Protocol, + p_RoutingInfo_UL.Security, + p_RoutingInfo_UL.UE_Address, // may be omit + p_RoutingInfo_UL.NW_Address); // may be omit + } + + //---------------------------------------------------------------------------- + /* + * @desc calculate timer tolerance for IMS + * @param p_TimerVal + * @return float .. timer value + * @status APPROVED (IMS) + */ + function fl_IMS_TimerTolerance(float p_TimerVal) return float + { + return p_TimerVal * 0.1; + } + + //---------------------------------------------------------------------------- + /* + * @desc to calculate lower bound of timer tolerance for IMS + * @param p_Timer + * @return float + * @status APPROVED (IMS) + */ + function f_IMS_SetTimerToleranceMin(float p_Timer) return float + { + return p_Timer - fl_IMS_TimerTolerance(p_Timer); + } + + //---------------------------------------------------------------------------- + /* + * @desc to calculate upper bound of timer tolerance for IMS + * @param p_Timer + * @return float + * @status APPROVED (IMS) + */ + function f_IMS_SetTimerToleranceMax(float p_Timer) return float + { + return p_Timer + fl_IMS_TimerTolerance(p_Timer); + } + + //---------------------------------------------------------------------------- + /* + * @desc build up home network domain name derived from IMSI acc. to 23.003 clause 13.2 + * @param p_IMSI (default value: px_IMSI_Def) + * @param p_LengthOfMNC (default value: 2) + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_HomeDomainNameDerivedFromIMSI(hexstring p_IMSI, + integer p_LengthOfMNC := 2) return charstring + { /* NOTE: the length of the MNC in general cannot be derived from the IMSI (some countries have MNCs with 2 and 3 digits; see e.g "Annex to ITU Operational Bulletin No. 992 - 15.XI.2011") + * instead the length of the MNC is stored in the EF-AD file on the SIM card (see 31.102 cl. 4.2.18) and acc. to 31.121 the MNC has 2 digits. */ + var charstring v_IMSI := hex2str(p_IMSI); + var charstring v_MCC := substr(v_IMSI, 0, 3); + var charstring v_MNC := substr(v_IMSI, 3, p_LengthOfMNC); // @sic R5s140356: index = 3 sic@ + + if (p_LengthOfMNC == 2) { + v_MNC := "0" & v_MNC; + } + return "ims.mnc" & v_MNC & ".mcc" & v_MCC & ".3gppnetwork.org"; + } + + /* + * @desc build up Private User Identity derived from IMSI acc. to 23.003 clause 13.3 + * @param p_IMSI (default value: px_IMSI_Def) + * @param p_LengthOfMNC (default value: 2) + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PrivateUserIdentityDerivedFromIMSI(hexstring p_IMSI, + integer p_LengthOfMNC := 2) return charstring + { + var charstring v_IMSI := hex2str(p_IMSI); + return v_IMSI & "@" & f_IMS_HomeDomainNameDerivedFromIMSI(p_IMSI, p_LengthOfMNC); + } + + /* + * @desc build up Public User Identity derived from IMSI acc. to 23.003 clause 13.4B + * @param p_IMSI (default value: px_IMSI_Def) + * @param p_LengthOfMNC (default value: 2) + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_TemporaryPublicUserIdentity(hexstring p_IMSI, + integer p_LengthOfMNC := 2) return charstring + { + return "sip:" & f_IMS_PrivateUserIdentityDerivedFromIMSI(p_IMSI, p_LengthOfMNC); + } + +} diff --git a/LTE_A_IWD_14wk37/Common/IMS/IMS_CommonSRVCC.ttcn b/LTE_A_IWD_14wk37/Common/IMS/IMS_CommonSRVCC.ttcn new file mode 100644 index 0000000..ff9ebca --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS/IMS_CommonSRVCC.ttcn @@ -0,0 +1,325 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-07 18:37:49 +0200 (Sun, 07 Sep 2014) $ +// $Rev: 12081 $ +/******************************************************************************/ + +module IMS_CommonSRVCC { + + import from IMS_Component all; + import from IMS_ASP_TypeDefs all; + import from IP_ASP_TypeDefs all; + import from IMS_ASP_Templates all; + import from LibSip_SIPTypesAndValues all; + import from LibSip_SDPTypes all; + import from LibSip_MessageBodyTypes all; + import from IMS_PTC_CoordMsg all; + import from IMS_Procedures_Registration all; + import from IMS_Procedures_CallControl all; + import from IMS_SIP_Templates all; + import from IMS_MessageBody_Templates all; + import from IMS_CommonFunctions all; + import from IMS_CommonParameters all; + import from IMS_SDP_Messages all; + import from IMS_Component all; + import from IMS_SDP_Templates all; + import from IMS_Procedures_Common all; + + type enumerated SRVCC_ReInvite_Type { /* @status APPROVED (LTE_IRAT) */ + reInviteC31, + reInviteC24, + noReInvite + }; + + //---------------------------------------------------------------------------- + /* + * @desc Procedure acc. to 34.229-1 C.24 + * @param p_WaitDuration (default value: omit) + * @return template (omit) IMS_InviteRequestWithSdp_Type + * @status APPROVED (LTE_IRAT) + */ + function f_IMS_SRVCC_ReInvite_AnnexC24(template (omit) float p_WaitDuration := omit) + runs on IMS_PTC return template (omit) IMS_InviteRequestWithSdp_Type + { /* @sic R5s140331 change 7: parameter p_WaitDuration; return value sic@ */ + var template (omit) IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdpVal; + var INVITE_Request v_InviteRequest; + var MessageHeader v_MessageHeader_Invite; + var template (value) IMS_RoutingInfo_Type v_RoutingInfo_DL; + var template (value) MessageHeader v_MessageHeader_InviteResponse_200; + var template (present) MessageHeader v_MessageHeader_Ack; + var template (present) SipUrl v_CalleeContactUri; + + // Step 1 + v_InviteRequestWithSdp := f_IMS_SRVCC_ReInvite_AnnexC24_Step1(p_WaitDuration); + if (isvalue(v_InviteRequestWithSdp)) { + v_InviteRequestWithSdpVal := valueof(v_InviteRequestWithSdp); + v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(v_InviteRequestWithSdpVal.RoutingInfo); + v_InviteRequest := v_InviteRequestWithSdpVal.Invite; + v_MessageHeader_Invite := v_InviteRequest.msgHeader; + + // Step 2. SS sends a 100 Trying provisional response. + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine100, f_IMS_InviteResponse_100_MessageHeaderTX(v_InviteRequest)))); + + // Step 2. SS sends a 200 OK + v_MessageHeader_InviteResponse_200 := f_IMS_OtherResponse_200_MessageHeaderTX(v_MessageHeader_Invite); + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine200, v_MessageHeader_InviteResponse_200))); + + v_CalleeContactUri := f_SIP_BuildSipUri_RX(px_IMS_CalleeContactUri); + v_MessageHeader_Ack := f_IMS_AckRequest_MessageHeaderRX(v_InviteRequest, c_statusLine200); + IMS_Server.receive(car_IMS_Ack_Request(cr_ACK_Request(v_CalleeContactUri, v_MessageHeader_Ack))); + } + return v_InviteRequestWithSdp; + } + + //---------------------------------------------------------------------------- + /* + * @desc Common function For handling IMS signalling of Registration, MT IMS speech call and optional derigstrations + * @param p_ReInviteType (default value: noReInvite) + * @param p_WaitDuration (default value: omit) + * @status APPROVED (LTE_IRAT) + */ + function f_IMS_Generic_Sequence_SRVCC(SRVCC_ReInvite_Type p_ReInviteType := noReInvite, + template (omit) float p_WaitDuration := omit) runs on IMS_PTC + { + var template (omit) IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdpVal; /* @sic R5w140112: v_InviteRequestWithSdpVal instead of v_InviteRequest sic@ */ + var IMS_ResponseWithSdp_Type v_ResponseWithSdp; /* @sic R5w140112 sic@ */ + var INVITE_Request v_InviteRequest; + var IMS_Response_Type v_SessionInProgress183; + var SipUrl v_ContactUrl; + + f_IMS_PTC_Init(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // send trigger to EUTRA PTC to indicate start of IMS registration @sic R5s131034 sic@ + f_IMS_Registration(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // send trigger to EUTRA PTC to indicate end of IMS registration @sic R5s131034 sic@ + + //Wait for Co-ordination message from EUTRA + f_IMS_IPCAN_WaitForTrigger(IPCAN); + + v_InviteRequestWithSdpVal := f_IMS_MTCallSetup_AnnexC11_INVITE(); + v_InviteRequest := v_InviteRequestWithSdpVal.Invite; + v_ResponseWithSdp := f_IMS_MTCallSetup_AnnexC11_Steps1_4(v_InviteRequestWithSdpVal); + v_SessionInProgress183 := v_ResponseWithSdp.Response; + v_ContactUrl := f_MessageHeader_GetContactSipUrl(v_SessionInProgress183.msgHeader); + + // Inform EUTRA: IMS Call established. + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + + //Wait for Co-ordination message from EUTRA + f_IMS_IPCAN_WaitForTrigger(IPCAN); + f_IMS_MTCallSetup_AnnexC11_Steps5_13(v_InviteRequestWithSdpVal, v_SessionInProgress183); + // Inform EUTRA: IMS Call established. + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + + select (p_ReInviteType) { + case (reInviteC31) { /* @sic R5s140161 change 5.1 sic@ */ + f_IMS_IPCAN_WaitForTrigger(IPCAN); + f_IMS_SRVCC_ReInvite_AnnexC31(); + f_IMS_CallReleaseMT(v_InviteRequest, v_ContactUrl); /* @sic R5s140579 change 2 sic@ */ + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + } + case (reInviteC24) { /* @sic R5s140259 sic@ */ + f_IMS_PTC_SetRanType(UTRAN_FDD); + v_InviteRequestWithSdp := f_IMS_SRVCC_ReInvite_AnnexC24(p_WaitDuration); /* if there is a WaitDuration C.24 is optional and the function returns omit when the timer expires */ + if (isvalue(v_InviteRequestWithSdp)) { /* => v_InviteRequestWithSdp is omit when C.24 did not happen */ + v_InviteRequestWithSdpVal := valueof(v_InviteRequestWithSdp); + v_InviteRequest := v_InviteRequestWithSdpVal.Invite; + v_ContactUrl := f_MessageHeader_GetContactSipUrl(v_InviteRequest.msgHeader); + } + f_IMS_SRVCC_CallReleaseMT_AnnexC36(v_InviteRequest, v_ContactUrl); /* v_InviteRequest, v_ContactUrl are either acc. to C.11 or acc. to C.24 (when C.24 happened) + @sic R5-144667 sic@ */ + f_IMS_IPCAN_SendCoOrdMsg(OtherIPCAN); + } + } + } + + //---------------------------------------------------------------------------- + /* + * @desc step 1 of generic C.28 procedure + * @return template (present) SDP_Message + * @status APPROVED (LTE_A) + */ + function f_IMS_BuildSDP_AnnexC28_Step1() runs on IMS_PTC return template (present) SDP_Message + { + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var template (present) charstring v_IPAddrOrigin := ?; + var template (present) charstring v_IPAddrConnection := ?; + + var template (present) SDP_attribute_list v_SDP_Attribute_List := { + cr_SDP_Attribute_rtpmap(cr_SDP_AnyMediaFormatDescr, cr_RTPMAP_AMR_8000), + cr_SDP_Attribute_fmtp(cr_SDP_AnyMediaFormatDescr), + cr_SDP_Attribute_sendrecv, + // precondition attributes: + cr_SDP_Attribute_curr_qos(c_local, c_sendrecv), + cr_SDP_Attribute_curr_qos(c_remote, c_sendrecv), + cr_SDP_Attribute_des_qos(c_mandatory, c_local), + cr_SDP_Attribute_des_qos((c_mandatory, c_optional), c_remote), + * + }; + + var template (present) SDP_media_desc v_SDP_Media_Desc; + v_SDP_Media_Desc := cr_SDP_Media_Desc(cr_SDP_Media_Audio(cr_SDP_AnyMediaFormatDescr), + cr_SDP_Connection(v_AddrType, v_IPAddrConnection), + cr_SDP_Bandwidth_List_Media(?, ?, ?), + v_SDP_Attribute_List); + return cr_SDP_Message_Def(v_AddrType, v_IPAddrOrigin, v_IPAddrConnection, v_SDP_Media_Desc); + } + + /* + * @desc Generic test procedure for SIP UPDATE after aSRVCC/bSRVCC handover failure/cancelled + * @param p_InviteRequest + * @param p_MessageHeader_Response183 (default value: omit) + * @status APPROVED (LTE_A) + */ + function f_IMS_SRVCC_AnnexC28(INVITE_Request p_InviteRequest, + template (omit) MessageHeader p_MessageHeader_Response183 := omit) runs on IMS_PTC + { + var SipUrl v_PeerContactUrl; + var IMS_DATA_REQ v_IMS_DATA_REQ; + var template (present) MessageHeader v_MessageHeader_Update; + var SDP_Message v_SDP_Offer; + var UPDATE_Request v_UpdateRequest; + var template (omit) MessageBody v_MessageBodyTx := omit; + var template (value) IMS_RoutingInfo_Type v_RoutingInfo_DL; + + if (f_IMS_PTC_ImsInfo_DialogIsMO()) { // @sic R5s140370 change 3 - MCC160 implementation sic@ + v_PeerContactUrl := f_MessageHeader_GetContactSipUrl(valueof(p_MessageHeader_Response183)); // in case of MO call p_MessageHeader_Response183 has to be handed over + } else { + v_PeerContactUrl := f_MessageHeader_GetContactSipUrl(p_InviteRequest.msgHeader); + } + + // Step 1. Receive Update + v_MessageHeader_Update := f_IMS_UpdateRequest_MessageHeaderRX(p_InviteRequest); + v_MessageHeader_Update.reason := f_IMS_SIP_Reason487_RX(); // @sic R5s140370 change 3 sic@ + IMS_Server.receive(car_IMS_Update_Request(cr_UPDATE_Request(v_PeerContactUrl, v_MessageHeader_Update, ?))) -> value v_IMS_DATA_REQ; + v_UpdateRequest := v_IMS_DATA_REQ.Request.Update; + v_SDP_Offer := f_IMS_SIP_SdpMessageBody_DecodeMatchAndCheckSDP(v_UpdateRequest.messageBody, f_IMS_BuildSDP_AnnexC28_Step1()); /* @sic R5w140112 sic@ @sic R5s140370 change 3 - MCC160 implementation; R5-142936 sic@ */ + v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo); + f_IMS_PTC_ImsInfo_CseqSet(dialogRemote, v_UpdateRequest.msgHeader.cSeq.seqNumber); /* @sic R5w140112 sic@ @sic R5s140370 change 3 - MCC160 implementation: set cseq in case there has not been any request in UL before sic@ */ + + // Step 2. Send 200 OK + v_MessageBodyTx := cs_MessageBody_SDP(f_IMS_BuildSDP_CommonResponseToOfferTX(v_SDP_Offer)); /* @sic R5w140112 sic@ @sic R5s140370 change 3 - MCC160 implementation sic@ */ + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine200, f_IMS_OtherResponse_200_MessageHeaderTX(v_UpdateRequest.msgHeader, cs_ContentTypeSDP), v_MessageBodyTx))); + } + + //---------------------------------------------------------------------------- + /* + * @desc Procedure acc. to 34.229-1 C.31 + * @status APPROVED (LTE_IRAT) + */ + function f_IMS_SRVCC_ReInvite_AnnexC31() runs on IMS_PTC + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; + var MessageHeader v_MessageHeader_Invite; + var template (value) IMS_RoutingInfo_Type v_RoutingInfo_DL; + var template (value) MessageHeader v_MessageHeader_InviteResponse_200; + var template (present) MessageHeader v_MessageHeader_Ack; + var template (value) SDP_Message v_SDP_Answer; + var template (present) SipUrl v_CalleeContactUri; + var INVITE_Request v_InviteRequest; + + // Step 1 + v_InviteRequestWithSdp := f_IMS_SRVCC_ReInvite_AnnexC31_Step1(); /* @sic R5s140020 change 5.1; @sic R5w140112: IMS_InviteRequestWithSdp_Type sic@ */ + v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(v_InviteRequestWithSdp.RoutingInfo); + v_InviteRequest := v_InviteRequestWithSdp.Invite; + v_MessageHeader_Invite := v_InviteRequest.msgHeader; + + // Step 2. SS sends a 100 Trying provisional response. + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine100, f_IMS_InviteResponse_100_MessageHeaderTX(v_InviteRequest)))); + + // Step 2. SS sends a 200 OK + v_MessageHeader_InviteResponse_200 := f_IMS_OtherResponse_200_MessageHeaderTX(v_MessageHeader_Invite, cs_ContentTypeSDP); /* @sic R5s140020 change 5.2: content type sic@ */ + v_SDP_Answer := f_IMS_BuildSDP_AnnexC31_Step3(v_InviteRequestWithSdp.SdpOffer); /* @sic R5s140020 change 5.2; R5-140799 sic@ */ + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine200, v_MessageHeader_InviteResponse_200, cs_MessageBody_SDP(v_SDP_Answer)))); + + v_CalleeContactUri := f_SIP_BuildSipUri_RX(px_IMS_CalleeContactUri); /* @sic R5s140020 change 5.3 sic@ */ + v_MessageHeader_Ack := f_IMS_AckRequest_MessageHeaderRX(v_InviteRequest, c_statusLine200); + IMS_Server.receive(car_IMS_Ack_Request(cr_ACK_Request(v_CalleeContactUri, v_MessageHeader_Ack))); + } + + //---------------------------------------------------------------------------- + /* + * @desc Removal of early dialog of origination call after successful aSRVCC handover acc. to 34.229-1 C.34 + * @param p_InviteRequestWithSdp + * @status APPROVED (LTE_A) + */ + function f_IMS_SRVCC_RemoveEarlyDialogMO_AnnexC34(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp) runs on IMS_PTC + { + var InternetProtocol_Type v_Protocol := p_InviteRequestWithSdp.RoutingInfo.Protocol; + var INVITE_Request v_InviteRequest := p_InviteRequestWithSdp.Invite; + var template (present) SipUrl v_ContactUri := f_SIP_BuildSipUri_RX(f_SIP_SipUrl2Str(v_InviteRequest.requestLine.requestUri)); /* acc. to A.2.7 (ACK, A4: for non-2xx response) the contact URI as of the INVITE shall be used */ + var template (value) MessageHeader v_MessageHeader_404 := f_IMS_InviteResponse_4XX_MessageHeaderTX(v_InviteRequest.msgHeader); + var template (present) MessageHeader v_MessageHeader_Ack := f_IMS_AckRequest_MessageHeaderRX(v_InviteRequest, c_statusLine404); + + IMS_Server.send(cas_IMS_DATA_RSP(cs_IMS_RoutingInfo(v_Protocol), cs_Response(c_statusLine404, v_MessageHeader_404))); + IMS_Server.receive(car_IMS_Ack_Request(cr_ACK_Request(v_ContactUri, v_MessageHeader_Ack))); + } + + /* + * @desc Removal of early dialog of incoming call after successful aSRVCC handover acc. to 34.229-1 C.35 + * @param p_InviteRequestWithSdp + * @status APPROVED (LTE_A) + */ + function f_IMS_SRVCC_RemoveEarlyDialogMT_AnnexC35(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp) runs on IMS_PTC + { + var IMS_DATA_RSP v_IMS_DATA_RSP; + var template (value) MessageHeader v_MessageHeader_Ack; + var INVITE_Request v_InviteRequest := p_InviteRequestWithSdp.Invite; + var template (value) MessageHeader v_MessageHeader_Cancel := f_IMS_CancelRequest_MessageHeaderTX(v_InviteRequest); + var InternetProtocol_Type v_Protocol := f_IMS_PTC_ImsInfo_GetTransportProtocol(); + var SipUrl v_ContactUri := v_InviteRequest.requestLine.requestUri; /* acc. to A.2.15 (CANCEL) and A.2.7 (ACK, A4: for non-2xx response) the contact URI as of the INVITE shall be used */ + + IMS_Client.send(cas_IMS_Cancel_Request(cs_IMS_RoutingInfo(v_Protocol), cs_CANCEL_Request(v_ContactUri, v_MessageHeader_Cancel))); + + a_IMS_ReceiveResponse(v_MessageHeader_Cancel, + v_Protocol, + cr_Response(c_statusLine200, f_IMS_OtherResponse_200_MessageHeaderRX(v_MessageHeader_Cancel)), + v_IMS_DATA_RSP); + + a_IMS_ReceiveResponse(p_InviteRequestWithSdp.Invite.msgHeader, + v_Protocol, + cr_Response(c_statusLine487, f_IMS_InviteResponse_4XX_MessageHeaderRX(v_InviteRequest.msgHeader)), + v_IMS_DATA_RSP); + + v_MessageHeader_Ack := f_IMS_AckRequest_MessageHeaderTX(v_InviteRequest, c_statusLine487); + IMS_Client.send(cas_IMS_Ack_Request(cs_IMS_RoutingInfo(v_Protocol), cs_ACK_Request(v_ContactUri, v_MessageHeader_Ack))); + } + + /* + * @desc MT Call release acc. to 34.229-1 C.36 + * @param p_InviteRequest + * @param p_ContactSipUrl + * @status APPROVED (LTE_IRAT) + */ + function f_IMS_SRVCC_CallReleaseMT_AnnexC36(template (value) INVITE_Request p_InviteRequest, + SipUrl p_ContactSipUrl) runs on IMS_PTC + { + var IMS_DATA_RSP v_IMS_DATA_RSP; + var template (value) MessageHeader v_MessageHeader_Bye; + var InternetProtocol_Type v_Protocol := f_IMS_PTC_ImsInfo_GetTransportProtocol(); + + // The SS sends BYE to release the call + v_MessageHeader_Bye := f_IMS_ByeRequest_MessageHeaderTX(p_InviteRequest); + IMS_Client.send(cas_IMS_BYE_Request(cs_IMS_RoutingInfo(v_Protocol), cs_BYE_Request(p_ContactSipUrl, v_MessageHeader_Bye))); + + // The UE either sends 200 OK or 481 + alt { + [] a_IMS_ReceiveResponse(v_MessageHeader_Bye, + v_Protocol, + cr_Response(c_statusLine200, f_IMS_OtherResponse_200_MessageHeaderRX(v_MessageHeader_Bye)), + v_IMS_DATA_RSP) {} + + [] a_IMS_ReceiveResponse(p_InviteRequest.msgHeader, + v_Protocol, + cr_Response(c_statusLine481, f_IMS_InviteResponse_4XX_MessageHeaderRX(p_InviteRequest.msgHeader)), + v_IMS_DATA_RSP){} + } + f_IMS_PTC_ImsInfo_DialogRelease(); /* there is no dialog anymore; @sic R5s140017 MCC160 implementation sic@ */ + } +} diff --git a/LTE_A_IWD_14wk37/Common/IMS/IMS_CommonTemplates.ttcn b/LTE_A_IWD_14wk37/Common/IMS/IMS_CommonTemplates.ttcn new file mode 100644 index 0000000..f88f05a --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS/IMS_CommonTemplates.ttcn @@ -0,0 +1,317 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-06-23 18:15:44 +0200 (Mon, 23 Jun 2014) $ +// $Rev: 11767 $ +/******************************************************************************/ + +module IMS_CommonTemplates { + + import from CommonDefs all; + import from LibSip_Common all; + + /* + * @desc concat two semicolon param lists + * @param p_SemicolonParam_List1 + * @param p_SemicolonParam_List2 + * @return template (value) SemicolonParam_List + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SemicolonParam_List_Concat_TX(template (omit) SemicolonParam_List p_SemicolonParam_List1, + template (value) SemicolonParam_List p_SemicolonParam_List2) return template (value) SemicolonParam_List + { + var template (value) SemicolonParam_List v_SemicolonParam_List; + var integer i := 0; + var integer k; + + if (isvalue(p_SemicolonParam_List1)) { /* @sic R5s140580 change 3 sic@ */ + v_SemicolonParam_List := valueof(p_SemicolonParam_List1); + i := lengthof(v_SemicolonParam_List); + } + for (k := 0; k < lengthof(p_SemicolonParam_List2); k := k + 1) { /* @sic R5s140580 change 3 sic@ */ + v_SemicolonParam_List[i+k] := p_SemicolonParam_List2[k]; + } + return v_SemicolonParam_List; + } + + /* + * @desc Add element to semi colon seperated parameter list + * @param p_SemicolonParam_List + * @param p_GenericParam + * @return template (value) SemicolonParam_List + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SemicolonParam_List_Add_TX(template (omit) SemicolonParam_List p_SemicolonParam_List, + template (value) GenericParam p_GenericParam) return template (value) SemicolonParam_List + { + return f_SemicolonParam_List_Concat_TX(p_SemicolonParam_List, {p_GenericParam}); + } + + /******************************************************************************/ + /* AuxiliaryTemplates */ + /******************************************************************************/ + /* + * @desc return parameter value ("" if none) + * @param p_GenericParam + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_GenericParam_GetValue(template (omit) GenericParam p_GenericParam) return charstring + { + var GenValue v_GenValue; + + if (ispresent(p_GenericParam.paramValue)) { + v_GenValue := valueof(p_GenericParam.paramValue); + if (ischosen(v_GenValue.quotedString)) { + return v_GenValue.quotedString; + } + else { + return v_GenValue.tokenOrHost; + } + } + return ""; + } + + // Generic parameter as used in SemicolonParam_List, AmpersandParam_List, CommaParam_List: + + template (value) GenValue cs_GenValueToken(template (value) charstring p_ParamValue) := {tokenOrHost := p_ParamValue}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (value) GenValue cs_GenValueQuoted(template (value) charstring p_ParamValue) := {quotedString := p_ParamValue}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) GenValue cr_GenValueToken(template (present) charstring p_ParamValue) := {tokenOrHost := p_ParamValue}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) GenValue cr_GenValueQuoted(template (present) charstring p_ParamValue) := {quotedString := p_ParamValue}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) GenValue cr_GenValue(template (present) charstring p_ParamValue) := (cr_GenValueToken(p_ParamValue), cr_GenValueQuoted(p_ParamValue)); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + template GenValue cr_GenValue_None := (cr_GenValue(""), omit); /* i.e. either an empty string or omit + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + /* + * @desc build GenValue considering that value my be omit + * @param p_ParamValue + * @return template (omit) GenValue + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_GenValue_TX(template (omit) charstring p_ParamValue) return template (omit) GenValue + { + var template (omit) GenValue v_GenValue := omit; + + if (isvalue(p_ParamValue)) { + v_GenValue := cs_GenValueToken(valueof(p_ParamValue)); + } + return v_GenValue; + } + + template (value) GenericParam cs_GenericParam_Common(charstring p_Id, + template (omit) GenValue p_GenValue := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + id := p_Id, + paramValue := p_GenValue + }; + + template (value) GenericParam cs_GenericParamQuoted(charstring p_Id, + charstring p_ParamValue) := cs_GenericParam_Common(p_Id, cs_GenValueQuoted(p_ParamValue)); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + template (value) GenericParam cs_GenericParamToken(charstring p_Id, + charstring p_ParamValue) := cs_GenericParam_Common(p_Id, cs_GenValueToken(p_ParamValue)); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + template (value) GenericParam cs_GenericParam(charstring p_Id, + template (omit) charstring p_ParamValue := omit) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cs_GenericParam_Common(p_Id, fl_GenValue_TX(p_ParamValue)); // @sic R5w140111 sic@ + + + + template (present) GenericParam cr_GenericParam_Common(template (present) charstring p_Id := ?, + template GenValue p_GenValue := *) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + id := p_Id, + paramValue := p_GenValue + }; + + + template (present) GenericParam cr_GenericParam(template (present) charstring p_Id, + template (present) charstring p_ParamValue) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cr_GenericParam_Common(p_Id, cr_GenValue(p_ParamValue)); // @sic R5w140111 sic@ + + template (present) GenericParam cr_GenericParam_Any := cr_GenericParam_Common(?, *); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + /* + * @desc build GenericParam to be used as receive template with same id and value as given send template + * @param p_GenericParamTX + * @return template (present) GenericParam + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_GenericParam_AsTX(template (value) GenericParam p_GenericParamTX) return template (present) GenericParam + { + var template GenValue v_GenValue; + + if (ispresent(p_GenericParamTX.paramValue)) { + v_GenValue := cr_GenValue(f_GenericParam_GetValue(p_GenericParamTX)); + } else { + v_GenValue := omit; + } + return cr_GenericParam_Common(p_GenericParamTX.id, v_GenValue); + } + + + //---------------------------------------------------------------------------- + // templates to check SemicolonParam_List for a specific parameter + + template (present) SemicolonParam_List cr_SemicolonParam_List_OneSpecificParam(charstring p_Id, + template GenValue p_GenValue := *) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5w140111: GenValue sic@ */ + cr_GenericParam_Common(p_Id, p_GenValue), + * + }; + + template (present) SemicolonParam_List cr_SemicolonParam_List_OneSpecificParamWithValue(charstring p_Id, + template (present) charstring p_ParamValue := ?) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cr_SemicolonParam_List_OneSpecificParam(p_Id, cr_GenValue(p_ParamValue)); + + template (present) SemicolonParam_List cr_SemicolonParam_List_OneSpecificParamNoValue(charstring p_Id) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cr_SemicolonParam_List_OneSpecificParam(p_Id, omit); + + /******************************************************************************/ + /* AuxiliaryFunctions */ + /******************************************************************************/ + + type set of GenericParam GenericParamList_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + //**************************************************************************** + // auxilliary functions to access comma, semicolon or ampersand separated lists + //---------------------------------------------------------------------------- + /* + * @desc common function to get specific parameter from GenericParamList + * @param p_ParamList + * @param p_ParamId + * @return template (omit) GenericParam + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_SIP_GenericParamList_GetParam(GenericParamList_Type p_ParamList, + charstring p_ParamId) return template (omit) GenericParam + { /* @sic R5w140111: GenValue sic@ */ + var charstring v_ParamId; + var integer v_NoOfParams := lengthof(p_ParamList); + var integer i; + + for (i:=0; i < v_NoOfParams; i := i+1) { + v_ParamId := f_StringToLower(p_ParamList[i].id); + if (v_ParamId == p_ParamId) { + return p_ParamList[i]; + } + } + return omit; + } + + /* + * @desc common function to get value of specific parameter from GenericParamList + * @param p_ParamId + * @param p_GenericParam + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_SIP_GenericParamCheckAndGetValue(charstring p_ParamId, + template (omit) GenericParam p_GenericParam) return charstring + { /* @sic R5w140111: GenValue sic@ */ + if (not isvalue(p_GenericParam)) { + f_ErrorLog(__FILE__, __LINE__, "ParamList does not contain '" & p_ParamId & "'"); + } + return f_GenericParam_GetValue(p_GenericParam); + } + + /* + * @desc return given parameter in parameter list (or omit if not present) + * @param p_ParamList + * @param p_ParamId + * @return template (omit) GenericParam + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_CommaParamList_GetParam(template (omit) CommaParam_List p_ParamList, + charstring p_ParamId) return template (omit) GenericParam + { /* @sic R5w140111: GenValue sic@ */ + var CommaParam_List v_ParamList; + var GenericParamList_Type v_GenericParamList := {}; + var integer i; + + if (isvalue(p_ParamList)) { + v_ParamList := valueof(p_ParamList); + for (i:=0; i < lengthof(v_ParamList); i := i+1) {v_GenericParamList[i] := v_ParamList[i];} + } + return fl_SIP_GenericParamList_GetParam(v_GenericParamList, p_ParamId); + } + + /* + * @desc return value of given parameter in parameter list + * @param p_ParamList + * @param p_ParamId + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_CommaParamList_GetParamValue(template (omit) CommaParam_List p_ParamList, + charstring p_ParamId) return charstring + { /* @sic R5w140111: GenValue sic@ */ + var template (omit) GenericParam v_GenericParam := f_SIP_CommaParamList_GetParam(p_ParamList, p_ParamId); + return fl_SIP_GenericParamCheckAndGetValue(p_ParamId, v_GenericParam); + } + + /* + * @desc return given parameter in parameter list (or omit if not present) + * @param p_ParamList + * @param p_ParamId + * @return template (omit) GenericParam + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_SemicolonParamList_GetParam(template (omit) SemicolonParam_List p_ParamList, + charstring p_ParamId) return template (omit) GenericParam + { /* @sic R5w140111: GenValue sic@ */ + var SemicolonParam_List v_ParamList; + var GenericParamList_Type v_GenericParamList := {}; + var integer i; + + if (isvalue(p_ParamList)) { + v_ParamList := valueof(p_ParamList); + for (i:=0; i < lengthof(v_ParamList); i := i+1) {v_GenericParamList[i] := v_ParamList[i];} + } + return fl_SIP_GenericParamList_GetParam(v_GenericParamList, p_ParamId); + } + + /* + * @desc return value of given parameter in parameter list + * @param p_ParamList + * @param p_ParamId + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_SemicolonParamList_GetParamValue(template (omit) SemicolonParam_List p_ParamList, + charstring p_ParamId) return charstring + { /* @sic R5w140111: GenValue sic@ */ + var template (omit) GenericParam v_GenericParam := f_SIP_SemicolonParamList_GetParam(p_ParamList, p_ParamId); + return fl_SIP_GenericParamCheckAndGetValue(p_ParamId, v_GenericParam); + } + + function f_SIP_AmpersandParamList_GetParam(template (omit) AmpersandParam_List p_ParamList, + charstring p_ParamId) return template (omit) GenericParam + { /* @sic R5w140111: GenValue sic@ */ + var AmpersandParam_List v_ParamList; + var GenericParamList_Type v_GenericParamList := {}; + var integer i; + + if (isvalue(p_ParamList)) { + v_ParamList := valueof(p_ParamList); + for (i:=0; i < lengthof(v_ParamList); i := i+1) {v_GenericParamList[i] := v_ParamList[i];} + } + return fl_SIP_GenericParamList_GetParam(v_GenericParamList, p_ParamId); + } + + function f_SIP_AmpersandParamList_GetParamValue(template (omit) AmpersandParam_List p_ParamList, + charstring p_ParamId) return charstring + { /* @sic R5w140111: GenValue sic@ */ + var template (omit) GenericParam v_GenericParam := f_SIP_AmpersandParamList_GetParam(p_ParamList, p_ParamId); + return fl_SIP_GenericParamCheckAndGetValue(p_ParamId, v_GenericParam); + } + +} diff --git a/LTE_A_IWD_14wk37/Common/IMS/IMS_Component.ttcn b/LTE_A_IWD_14wk37/Common/IMS/IMS_Component.ttcn new file mode 100644 index 0000000..576ef73 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS/IMS_Component.ttcn @@ -0,0 +1,1432 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 22:08:20 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12181 $ +/******************************************************************************/ + +module IMS_Component { + import from LibSip_Common all; + import from LibSip_SIPTypesAndValues all; + import from CommonDefs all; + import from CommonIP all; + import from Parameters all; + import from IMS_ASP_TypeDefs all; + import from IMS_PTC_CoordMsg all; + import from IP_ASP_TypeDefs all; + import from IP_ASP_Common all; + import from IMS_ASP_Templates all; + import from IMS_CommonDefs all; + import from IMS_CommonFunctions all; + import from IMS_CommonParameters all; + import from IMS_SIP_Templates all; + import from NAS_AuthenticationCommon all; + import from UpperTesterPtcToMtcDefs all; // all messages being defined to communicate with the upper tester; port definitions + + type enumerated IMS_PTC_Handling_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + testcaseSpecificHandling, + defaultHandling + }; + + type record IMS_PTC_Ctrl_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + default Default, /* default behaviour being activated on IMS PTC */ + boolean TestBody, /* true: => fail may be assigend + * false: => inconc is assigned instead of fail */ + boolean BlockUlDataInDefault /* @sic R5s140780 - MCC160 Implementation sic@ + * true: => ports IMS_Server and IMS_Client are not handle by default handler + * i.e. any messages coming up at these ports are stored until there are explicit receive statements in the test case + * false: => UL data may cause test case fail/inconc */ + }; + + type record IMS_PTC_SecurityInfo_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + IPsec_IntegrityAlgorithm_Type IntegrityAlgorithm, + IPsec_CipheringAlgorithm_Type CipheringAlgorithm, + IMS_ProtectedPorts_Type ProtectedPorts optional, + IMS_SPIs_Type SPIs optional, + charstring Nonce optional, + B32_128_Type XRES optional, + integer XRESLength optional // @sic R5s120907 sic@ + }; + + type enumerated IMS_UriInfo_UriType_Type { firstId, secondId, thirdId, defaultId, registrationId, emergencyId, dialogLocalId, dialogRemoteId, temporaryId }; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type enumerated IMS_PTC_CseqType_Type { register, dialogRemote, dialogLocal }; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type enumerated IMS_PTC_DialogIndex_Type {firstDialog, secondDialog, thirdDialog, referDialog}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + type record IMS_PTC_RegistrationInfo_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + charstring Uri optional, /* SIP URI used for registration (can be temporary SIP URI when the UE does not have an ISIM) */ + charstring CallId optional, /* CallId used for registration (needed to check against CallId of INVITE) */ + integer Cseq + }; + + type record IMS_DialogInfo_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + @sic R5s140092 change 1.5: RemoteURI, RemoteCseq, LocalURI, LocalCseq stored in this structure sic@ */ + boolean MobileOriginated optional, /* needed e.g. to get the right route-set for re-INVITE */ + charstring RemoteTag optional, /* acc. to RFC 3261 when creating a dialog in first request there is a From tag but no To tag; + the To tag is chosen by the other send and sent in a response; in all further messages within the dialogthe same From and To tags shall be used + (=> especially in request messages (e.g. BYE) it may be necessary to use this stored value whereas in responses the values can be used as sent in the request); + NOTE: in general outside a dialog (e.g. registration) requests get a new From tag and the corresponding reponses contain a new To tag */ + charstring RemoteURI optional, /* URI of the remote side in a dialog created by INVITE */ + integer RemoteCseq optional, /* @sic R5s140235: changed to optional sic@ */ + charstring LocalTag optional, + charstring LocalURI optional, /* URI of the UE in a dialog created by INVITE */ + integer LocalCseq, + charstring CallId optional, + charstring SessionId optional + }; + + const integer tsc_IMS_NoOfDialogs := 4; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type record length(tsc_IMS_NoOfDialogs) of IMS_DialogInfo_Type IMS_PTC_DialogInfoList_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + type record IMS_PTC_DialogList_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + integer CurrentIndex, + IMS_PTC_DialogInfoList_Type Info + }; + + type record IMS_PTC_ImsInfo_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + CharStringList_Type IMPUList, /* list of all Public User Ids acc. to ISIM setting (31.121) or as stored in the HSS */ + IP_AddrInfo_Type UE_Address optional, + IP_AddrInfo_Type NW_Address optional, + InternetProtocol_Type TransportProtocol, /* transport protocol to be used for requests sent in DL + * @sic R5s120530 change 1.7 sic@ + * NOTE: in contrast to R5s120530 and acc. to rejection of R5-130765 at RAN WG5 Meeting #58 in Malta UDP is used for all requests in DL; + * nevertheless "TransportProtocol" is kept in case there are other decisions in the future */ + IPCAN_RAN_Type RanType optional, + integer UE_Release optional, /* @sic R5s130739 MCC160 implementation: new field to store the UE's release sic@ */ + boolean SigCompStarted, + charstring HomeDomainName, + charstring PrivateUserId, + SipUrl ContactUrl optional, /* contact address as provided in contact header of the REGISTER message; + to be used e.g. for Request-URI of INVITE for MT call */ + integer BranchIndex, /* internal index used to generate unique branches */ + integer CallIdCnt, /* counter to achieve unique callids e.g. for SMS MESSAGE sent to the UE @sic R5-133705 sic@ */ + IMS_PTC_RegistrationInfo_Type Registration, + IMS_PTC_DialogList_Type Dialog, /* @sic R5s140092 change 1.5: two sets of dialogs sic@ */ + IMS_SecurityScheme_Type SecurityScheme /* IMS security or GIBA acc. to 34.229-2 Table A.6a; depends on PICS setting and may depend on test case */ + }; + + type record IMS_Global_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + PDN_Index_Type PdnIndex, /* @sic R5s130651: new variable sic@ */ + IMS_PTC_Ctrl_Type Ctrl, + IMS_PTC_SecurityInfo_Type Security, + IMS_PTC_ImsInfo_Type ImsInfo + }; + + type component IMS_PTC { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + var IMS_Global_Type vc_IMS_Global; + + // port to RAT components + port IMS_IPCAN_CO_ORD_PORT IPCAN; + port IMS_IPCAN_CO_ORD_PORT OtherIPCAN; /* @sic R5-142919 sic@ */ + + // port to other IMS PTC (other PDN) + port IMS_IMS_CO_ORD_PORT OtherPDN; + + // ports connected to IP: + port IMS_IP_CTRL_PORT IMS_CTRL; + port IMS_IP_SERVER_PORT IMS_Server; + port IMS_IP_CLIENT_PORT IMS_Client; + + // ports for MMI (used by IMS CC test suite) + port UT_PTC_MTC_PORT MMI; + }; + + //---------------------------------------------------------------------------- + + template (value) IMS_PTC_SecurityInfo_Type cs_IMS_SecurityInfo_Init := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + IntegrityAlgorithm := px_IMS_IPSecAlgorithm, + CipheringAlgorithm := px_IMS_CiphAlgo_Def, + ProtectedPorts := omit, + SPIs := omit, + Nonce := omit, + XRES := omit, + XRESLength := omit // @sic R5s120907 sic@ + }; + + template (value) IMS_PTC_RegistrationInfo_Type cs_IMS_RegistrationInfo_Init := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + Uri := omit, + CallId := omit, + Cseq := 0 + }; + + template (value) IMS_DialogInfo_Type cs_IMS_DialogInfo_Init := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + MobileOriginated := omit, + RemoteTag := omit, + RemoteURI := omit, + RemoteCseq := omit, /* @sic R5s140235: changed to omit sic@ */ + LocalTag := omit, + LocalURI := omit, + LocalCseq := 0, + CallId := omit, + SessionId := omit + }; + + /* + * @desc initialise dialog status information + * @return template (value) IMS_PTC_DialogList_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_IMS_PTC_DialogList_Init() return template (value) IMS_PTC_DialogList_Type + { + var template (value) IMS_PTC_DialogList_Type v_DialogList; + var integer i; + v_DialogList.CurrentIndex := 0; + for (i:=0; i in this function we will ensure that in the 4-tuple of SPIs needed for IMS in a given PDN all values are distinct. + * In addition e.g. in case of re-authentication the network's SPIs shall be different than the previous ones. + * @param p_NewSPI_us + * @param p_NewSPI_uc + * @param p_PrevSPI_ps (default value: omit) + * @param p_PrevSPI_pc (default value: omit) + * @return IMS_SPIs_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_SPIs_Init(integer p_NewSPI_us, + integer p_NewSPI_uc, + template (omit) integer p_PrevSPI_ps := omit, + template (omit) integer p_PrevSPI_pc := omit) runs on IMS_PTC return IMS_SPIs_Type + { /* @sic R5s130266 change 1.3, 4, 5 - MCC160 Implementation: taking into account the previous SPIs of the network side sic@ */ + /* p_PrevSPI_ps, p_PrevSPI_pc are omit at initial registration */ + + var IMS_SPIs_Type v_SPIs := valueof(cs_IMS_SPIs_Init(p_NewSPI_us, p_NewSPI_uc)); + var integer v_Index := enum2int(vc_IMS_Global.PdnIndex); + var integer v_SPI := 256 + (v_Index * 1024); /* According to RFC 2406, SPI values from 0 to 255 are reserved + @sic R5s130651: v_Index used to get different SPIs for different PDNs sic@ */ + if (p_NewSPI_uc == p_NewSPI_us) { + FatalError(__FILE__, __LINE__, "SPIs of UE side have the same values"); + } + + while (not isvalue(v_SPIs.SPI_ps) or not isvalue(v_SPIs.SPI_pc)) { + if ((v_SPI != p_NewSPI_uc) and (v_SPI != p_NewSPI_us) and // new value shall be neither equal to the UE's values ... + not match(v_SPI, p_PrevSPI_pc) and not match(v_SPI, p_PrevSPI_ps)) { // ... nor to the network's previous values + if (not isvalue(v_SPIs.SPI_ps)) { + v_SPIs.SPI_ps := v_SPI; + } else { + v_SPIs.SPI_pc := v_SPI; + } + } + v_SPI := v_SPI + 1; + } + return v_SPIs; + } + + //**************************************************************************** + /* + * @desc initialise or re-initialise security at the IMS PTC + * @param p_AuthenticationParams (default value: omit) + * @param p_Port_us + * @param p_Port_uc + * @param p_SPI_us + * @param p_SPI_uc + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_Security_Init(template (omit) Common_AuthenticationParams_Type p_AuthenticationParams := omit, + PortNumber_Type p_Port_us, + PortNumber_Type p_Port_uc, + IPsec_SPI_Type p_SPI_us, + IPsec_SPI_Type p_SPI_uc) runs on IMS_PTC + { /* @sic R5s130266 change 1.3, 4, 5 - MCC160 Implementation: taking into account SPIs for re-authentication sic@ */ + + var Common_AuthenticationParams_Type v_AuthenticationParams; + var template (omit) IPsec_SPI_Type v_PrevSPI_ps := omit; + var template (omit) IPsec_SPI_Type v_PrevSPI_pc := omit; + var PortNumber_Type v_Port_pc := tsc_IMS_Port_pc; + + if (isvalue(p_AuthenticationParams)) { + v_AuthenticationParams := valueof(p_AuthenticationParams); + vc_IMS_Global.Security.Nonce := f_Bitstring2Base64(v_AuthenticationParams.RandValue & v_AuthenticationParams.AUTN); + vc_IMS_Global.Security.XRES := v_AuthenticationParams.XRES; + } + if (isvalue(vc_IMS_Global.Security.SPIs)) { // => re-authentication + v_PrevSPI_ps := vc_IMS_Global.Security.SPIs.SPI_ps; + v_PrevSPI_pc := vc_IMS_Global.Security.SPIs.SPI_pc; + } + vc_IMS_Global.Security.SPIs := fl_SPIs_Init(p_SPI_us, p_SPI_uc, v_PrevSPI_ps, v_PrevSPI_pc); + + if (isvalue(vc_IMS_Global.Security.ProtectedPorts)) { // => re-authentication + if (vc_IMS_Global.Security.ProtectedPorts.Port_pc == tsc_IMS_Port_pc) { + v_Port_pc := tsc_IMS_Port_pc_2; // new client port + } + } + vc_IMS_Global.Security.ProtectedPorts := valueof(cs_IMS_ProtectedPorts(p_Port_us, p_Port_uc, tsc_IMS_Port_ps, v_Port_pc)); + } + + /* + * @desc release IMS security info on protected ports + * @status APPROVED (IMS, IMS_IRAT) + */ + function f_IMS_PTC_Security_Release() runs on IMS_PTC + { + vc_IMS_Global.Security := valueof(cs_IMS_SecurityInfo_Init); + } + + /* + * @desc return true when IMS security is started on protected ports + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_Security_IsStarted() runs on IMS_PTC return boolean + { + return isvalue(vc_IMS_Global.Security.ProtectedPorts); + } + + /* + * @desc return integrity algorithm stored at the IMS PTC + * @return IPsec_IntegrityAlgorithm_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_Security_GetIntegrityAlgorithm() runs on IMS_PTC return IPsec_IntegrityAlgorithm_Type + { + return vc_IMS_Global.Security.IntegrityAlgorithm; + } + + /* + * @desc return ciphering algorithm stored at the IMS PTC + * @return IPsec_CipheringAlgorithm_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_Security_GetCipheringAlgorithm() runs on IMS_PTC return IPsec_CipheringAlgorithm_Type + { + return vc_IMS_Global.Security.CipheringAlgorithm; + } + + /* + * @desc return NONCE stored at the IMS PTC + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_Security_GetNonce() runs on IMS_PTC return charstring + { + return vc_IMS_Global.Security.Nonce; + } + + /* + * @desc return XRES stored at the IMS PTC + * @return B32_128_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_Security_GetXRES() runs on IMS_PTC return B32_128_Type + { + return vc_IMS_Global.Security.XRES; + } + + /* + * @desc return length of XRES as stored at the IMS PTC + * @return integer + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_Security_GetXRESLength() runs on IMS_PTC return integer // @sic R5s120907 sic@ + { + return vc_IMS_Global.Security.XRESLength; + } + + /* + * @desc set info retrieved from IPCAN + * @param p_IpcanInfo + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_SetIpcanInfo(IPCAN_INFO_Type p_IpcanInfo) runs on IMS_PTC + { /* @sic R5s120907 R5s130133 additional changes sic@ */ + vc_IMS_Global.Security.XRESLength := p_IpcanInfo.AuthResLength; + vc_IMS_Global.ImsInfo.UE_Release := p_IpcanInfo.UE_Release; /* @sic R5s130739 MCC160 implementation sic@ */ + vc_IMS_Global.ImsInfo.RanType := p_IpcanInfo.RanType; + } + + /* + * @desc set RAN type + * @param p_RanType + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_SetRanType(IPCAN_RAN_Type p_RanType) runs on IMS_PTC + { + vc_IMS_Global.ImsInfo.RanType := p_RanType; + } + + /* + * @desc get UE release + * @return template (omit) integer + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_GetUE_Release() runs on IMS_PTC return template (omit) integer + { + return vc_IMS_Global.ImsInfo.UE_Release; + } + + /* + * @desc get SPIs stored at IMS PTC + * @return IMS_SPIs_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_Security_GetSPIs() runs on IMS_PTC return IMS_SPIs_Type + { + return vc_IMS_Global.Security.SPIs; + } + + /* + * @desc return security information as stored at the IMS PTC + * @return IMS_ProtectedPorts_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_Security_GetProtectedPorts() runs on IMS_PTC return IMS_ProtectedPorts_Type + { + return vc_IMS_Global.Security.ProtectedPorts; + } + + /* + * @desc Build SecurityMechanism list template from the stored security configuration to be used for sending + * @return template (value) SecurityMechanism_List + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_BuildSecurityServerParam() runs on IMS_PTC return template (value) SecurityMechanism_List + { + var IMS_PTC_SecurityInfo_Type v_Security := vc_IMS_Global.Security; + + return f_SIP_BuildSecurityServerParam(v_Security.IntegrityAlgorithm, + v_Security.CipheringAlgorithm, + int2str(v_Security.SPIs.SPI_pc), + int2str(v_Security.SPIs.SPI_ps), + int2str(v_Security.ProtectedPorts.Port_pc), + int2str(v_Security.ProtectedPorts.Port_ps)); + } + + /* + * @desc Build SecurityVerify heaader template from the stored security configuration to be used for sending + * @return template (present) SecurityVerify + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_BuildSecurityVerifyHeader() runs on IMS_PTC return template (present) SecurityVerify + { + var IMS_PTC_SecurityInfo_Type v_Security := vc_IMS_Global.Security; + + return f_SIP_BuildSecurityVerifyHeader(v_Security.IntegrityAlgorithm, + v_Security.CipheringAlgorithm, + int2str(v_Security.SPIs.SPI_pc), + int2str(v_Security.SPIs.SPI_ps), + int2str(v_Security.ProtectedPorts.Port_pc), + int2str(v_Security.ProtectedPorts.Port_ps)); + } + + /* + * @desc return true when GIBA + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_SecurityScheme_IsGiba() runs on IMS_PTC return boolean + { + return (vc_IMS_Global.ImsInfo.SecurityScheme == GIBA); + } + + /* + * @desc return true when GIBA + * @param p_SecurityScheme + */ + function f_IMS_PTC_SecurityScheme_Set(IMS_SecurityScheme_Type p_SecurityScheme) runs on IMS_PTC + { + vc_IMS_Global.ImsInfo.SecurityScheme := p_SecurityScheme; + } + + //**************************************************************************** + /* + * @desc initialise IMS PTC + * @param p_UE_Address + * @param p_NW_Address + * @param p_RegisterReq + * @param p_SigCompStarted (default value: false) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_Init(IP_AddrInfo_Type p_UE_Address, + IP_AddrInfo_Type p_NW_Address, + template (omit) REGISTER_Request p_RegisterReq := omit, + boolean p_SigCompStarted := false) runs on IMS_PTC + { /* @sic R5s130756 change 14, 15 sic@ */ + var REGISTER_Request v_RegisterReq; + var InternetProtocol_Type v_TransportProtocol := udp; /* @sic acc. to discussions regarding rejection of R5-130765 at RAN WG5 Meeting #58 in Malta per default UDP is used for all requests in DL sic@ */ + + if (match(testcasename(), pattern "TC_8_[0-9]#(1,2)")) { /* @sic R5-131292 - TCP as normative DL transport protocol in IMS Registration test sic@ + @sic R5s130897 - distinguish IMS from LTE test cases sic@ */ + v_TransportProtocol := tcp; + } + + vc_IMS_Global.ImsInfo.UE_Address := p_UE_Address; + vc_IMS_Global.ImsInfo.NW_Address := p_NW_Address; + vc_IMS_Global.ImsInfo.TransportProtocol := v_TransportProtocol; + vc_IMS_Global.ImsInfo.SigCompStarted := p_SigCompStarted; + + if (ispresent(p_RegisterReq)) { + v_RegisterReq := valueof(p_RegisterReq); + vc_IMS_Global.ImsInfo.ContactUrl := f_MessageHeader_GetContactSipUrl(v_RegisterReq.msgHeader); + vc_IMS_Global.ImsInfo.Registration.Uri := f_SIP_SipUrl_GetPublicUserIdentity(f_Addr_Union_GetSipUrl(v_RegisterReq.msgHeader.toField.addressField)); + vc_IMS_Global.ImsInfo.Registration.CallId := v_RegisterReq.msgHeader.callId.callid; + vc_IMS_Global.ImsInfo.Registration.Cseq := v_RegisterReq.msgHeader.cSeq.seqNumber; + } + } + + /* + * @desc Get dialog index value related to given enumerated + * @param p_Index + * @return integer + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_IMS_PTC_ImsInfo_GetDialogIndexValue(template (omit) IMS_PTC_DialogIndex_Type p_Index) runs on IMS_PTC return integer + { + var integer i; + + if (isvalue(p_Index)) { + select (valueof(p_Index)) { + case (firstDialog) { i := 0; } + case (secondDialog) { i := 1; } + case (referDialog) { i := 2; } + case else { FatalError(__FILE__, __LINE__, "invalid dialog"); } + } + } else { + i := vc_IMS_Global.ImsInfo.Dialog.CurrentIndex; + } + return i; + } + + + /* + * @desc Get dialog status information for the currenct dialog + * @param p_DialogIndex + * @return IMS_DialogInfo_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_IMS_PTC_ImsInfo_GetDialog(template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex) runs on IMS_PTC return IMS_DialogInfo_Type + { + var integer i := fl_IMS_PTC_ImsInfo_GetDialogIndexValue(p_DialogIndex); + return vc_IMS_Global.ImsInfo.Dialog.Info[i]; + } + + /* + * @desc Set dialog status information for the currenct dialog + * @param p_DialogIndex + * @param p_DialogInfo + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_IMS_PTC_ImsInfo_SetDialog(template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex, + IMS_DialogInfo_Type p_DialogInfo) runs on IMS_PTC + { + var integer i := fl_IMS_PTC_ImsInfo_GetDialogIndexValue(p_DialogIndex); + vc_IMS_Global.ImsInfo.Dialog.Info[i] := p_DialogInfo; + } + + /* + * @desc return IP address which is used by the UE for IMS signalling (IPv4 or IPv6) + * @return IP_AddrInfo_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_UE_Address_Get() runs on IMS_PTC return IP_AddrInfo_Type + { + return vc_IMS_Global.ImsInfo.UE_Address; + } + + /* + * @desc return network address stored at the IMS PTC + * @return IP_AddrInfo_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_NW_Address_Get() runs on IMS_PTC return IP_AddrInfo_Type + { + return vc_IMS_Global.ImsInfo.NW_Address; + } + + /* + * @desc return IP type for network address stored at the IMS PTC + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_NW_Address_GetTypeStr() runs on IMS_PTC return charstring + { + return f_IP_AddrInfo_TypeStr(vc_IMS_Global.ImsInfo.NW_Address); + } + + /* + * @desc return network address stored at the IMS PTC as charstring + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_NW_Address_GetAddrStr() runs on IMS_PTC return charstring + { + if (not isvalue(vc_IMS_Global.ImsInfo.NW_Address)) { + FatalError(__FILE__, __LINE__, "NW address not initialiased yet"); + } + return f_IP_AddrInfo_AddrStr(vc_IMS_Global.ImsInfo.NW_Address); + } + + /* + * @desc return address of the simulated remote UE as charstring + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_RemoteAddress_GetAddrStr() runs on IMS_PTC return charstring + { /* @sic R5s130681 additional change sic@ */ + var PDN_AddressInfo_Type v_PDN_AddressInfo := f_PDN_AddressInfo_Get(vc_IMS_Global.PdnIndex); + var IP_AddrInfo_Type v_UE_Address := f_IMS_PTC_UE_Address_Get(); + var charstring v_RemoteAddress; + + if (ischosen(v_UE_Address.V4)) { + v_RemoteAddress := v_PDN_AddressInfo.Remote_IPAddressIPv4; + } else { + v_RemoteAddress := v_PDN_AddressInfo.Remote_IPAddressIPv6; + } + return v_RemoteAddress; + } + + /* + * @desc return P-CSCF address (FQDN) stored at the IMS PTC + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_Pcscf_Get() runs on IMS_PTC return charstring + { /* @sic R5-144747 removal of px_IMS_Pcscf and px_IMS_Pcscf_Emg sic@ */ + return f_IMS_PTC_NW_Address_GetAddrStr(); + } + + /* + * @desc check validity of the host/port information used by the UE + * @param p_HostPort + * @param p_Port (default value: *) + * @param p_AllowFQDN (default value: true) + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_CheckHostPortForIPAddrOrFQDN(HostPort p_HostPort, + template integer p_Port := *, + boolean p_AllowFQDN := true) runs on IMS_PTC return boolean + { /* p_AllowFQDN .. shall be set to false e.g. for condition A6 of A.2.1 */ + if (p_AllowFQDN and match(p_HostPort, cr_HostPort(f_IMS_PTC_ImsInfo_GetHomeDomainName(), p_Port))) { // => FQDN + return true; + } + return (match(p_HostPort.portField, p_Port) and // check port + f_IMS_IpAddrMatch(f_IMS_PTC_UE_Address_Get(), p_HostPort.host)); // check IP address taking into account that formats may be different + } + + + /* + * @desc Check SipUrl (e.g. in Contact header) to be "SIP URI with IP address or FQDN and protected server port of UE or GRUU as returned by the SS in registration" + * @param p_SipUrl + * @param p_Port (default value: *) + * @param p_AllowGRUU (default value: false) + * @param p_AllowFQDN (default value: true) + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_CheckSipUrlForIPAddrOrFQDNOrGRUU(SipUrl p_SipUrl, + template integer p_Port := *, + boolean p_AllowGRUU := false, + boolean p_AllowFQDN := true) runs on IMS_PTC return boolean + { /* @sic R5s130195 BASELINE MOVING 2013: change of SipUrl sic@ */ + var template (present) SipUrl v_ExpectedSipUrlGRUU; + var HostPort v_HostPort; + + if (not ischosen(p_SipUrl.components.sip)) { + return false; + } + v_HostPort := p_SipUrl.components.sip.hostPort; + + if (p_AllowGRUU and false) { // @sic R5s130133 additional change 4; FFS sic@ + v_ExpectedSipUrlGRUU := f_SIP_BuildSipUri_RX("???", p_Port); + /* !!!! acc. to 24.229 cl. 5.4.7A.2 it seems that GRUU is a SIP URI of a 'normal' public user id with specific SIP URI parameter "gr"; + * !!!! => we need a GRUU specific template for the SipUrl with appropriate parameters; furthermore the GRUU information needs to be stored at the IMS PTC + * !!!! FFS !!!!*/ + if (match(p_SipUrl, v_ExpectedSipUrlGRUU)) { + return true; + } + } + return f_IMS_PTC_CheckHostPortForIPAddrOrFQDN(v_HostPort, p_Port, p_AllowFQDN); + } + + /* + * @desc RAN type as stored at the IMS PTC; at the beginning the RAN type is omit => '?' is returned in this case + * @return template (present) charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_RanType_GetString() runs on IMS_PTC return template (present) charstring + { // when RanType is not explicitly initialised it is omit as initialised; => we check for presence only + if (isvalue(vc_IMS_Global.ImsInfo.RanType)) { + return f_IMS_RANType2Charstring(vc_IMS_Global.ImsInfo.RanType); + } + return ?; + } + + /* + * @desc return true when SigComp is started + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_SigCompStarted() runs on IMS_PTC return boolean + { + return vc_IMS_Global.ImsInfo.SigCompStarted; + } + + /* + * @desc return sig comp parameters or omit when sig comp is not started + * @return template (omit) GenericParam + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_GetSigCompParam() runs on IMS_PTC return template (omit) GenericParam + { + if (vc_IMS_Global.ImsInfo.SigCompStarted) { + return cs_SigCompParam; + } else { + return omit; + } + } + + //---------------------------------------------------------------------------- + /* + * @desc return specific public user id e.g. as used for registration + * @param p_IdType + * @param p_DialogIndex (default value: omit) + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_GetURI(IMS_UriInfo_UriType_Type p_IdType, + template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex := omit) runs on IMS_PTC return charstring + { + var IMS_DialogInfo_Type v_Dialog := fl_IMS_PTC_ImsInfo_GetDialog(p_DialogIndex); + + select (p_IdType) { + case (firstId, defaultId, emergencyId) { + return vc_IMS_Global.ImsInfo.IMPUList[0]; + } + case (secondId) { + return vc_IMS_Global.ImsInfo.IMPUList[1]; + } + case (thirdId) { + return vc_IMS_Global.ImsInfo.IMPUList[2]; + } + case (registrationId) { + if (ispresent(vc_IMS_Global.ImsInfo.Registration.Uri)) { + return vc_IMS_Global.ImsInfo.Registration.Uri; + } + } + case (dialogLocalId) { + if (ispresent(v_Dialog.LocalURI)) { + return v_Dialog.LocalURI; + } + } + case (dialogRemoteId) { + if (ispresent(v_Dialog.RemoteURI)) { + return v_Dialog.RemoteURI; + } + } + case (temporaryId) { + return f_IMS_TemporaryPublicUserIdentity(px_IMSI_Def); + } + } + FatalError(__FILE__, __LINE__, "Invalid URI or URI not initialised"); + return ""; + } + + /* + * @desc return SipUrl to be used in DL + * @param p_IdType + * @param p_Port (default value: omit) + * @return template (value) SipUrl + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_GetSipUriTX(IMS_UriInfo_UriType_Type p_IdType, + template (omit) integer p_Port := omit) runs on IMS_PTC return template (value) SipUrl + { + return f_SIP_BuildSipUri_TX(f_IMS_PTC_ImsInfo_GetURI(p_IdType), p_Port); + } + + /* + * @desc return SipUrl to be used in UL + * @param p_IdType + * @param p_Port (default value: omit) + * @return template (present) SipUrl + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_GetSipUriRX(IMS_UriInfo_UriType_Type p_IdType, + template integer p_Port := omit) runs on IMS_PTC return template (present) SipUrl + { + return f_SIP_BuildSipUri_RX(f_IMS_PTC_ImsInfo_GetURI(p_IdType), p_Port); + } + + /* + * @desc return all PublicUserIds for which the UE is registered or shall be registered + * @return CharStringList_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_GetAllIMPUs() runs on IMS_PTC return CharStringList_Type + { + return vc_IMS_Global.ImsInfo.IMPUList; + } + + /* + * @desc return SipUrl as used for subscription + * @param p_Port (default value: omit) + * @return template (present) SipUrl + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_GetSipUriSubscriptionRX(template integer p_Port := omit) runs on IMS_PTC return template (present) SipUrl + { + var charstring v_PublicUserIdDefault := f_IMS_PTC_ImsInfo_GetURI(defaultId); + var charstring v_PublicUserIdRegistration := f_IMS_PTC_ImsInfo_GetURI(registrationId); + var template (present) SipUrl v_SipUrl; + + if (px_UEwithISIM and (v_PublicUserIdDefault != v_PublicUserIdRegistration)) { + v_SipUrl := (f_SIP_BuildSipUri_RX(v_PublicUserIdDefault, p_Port), f_SIP_BuildSipUri_RX(v_PublicUserIdRegistration, p_Port)); + } else { + v_SipUrl := f_SIP_BuildSipUri_RX(v_PublicUserIdDefault, p_Port); + } + return v_SipUrl; + } + + /* + * @desc Initialise structure of type IMS_DialogInfo_Type + * @param p_DialogInfo + * @param p_CseqType + * @param p_MessageHeader_InviteOrRefer + * @return IMS_DialogInfo_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_DialogInfo_Init(IMS_DialogInfo_Type p_DialogInfo, + IMS_PTC_CseqType_Type p_CseqType, + MessageHeader p_MessageHeader_InviteOrRefer) return IMS_DialogInfo_Type + { + var charstring v_FromURI := f_SIP_SipUrl2Str(f_Addr_Union_GetSipUrl(p_MessageHeader_InviteOrRefer.fromField.addressField)); + var charstring v_ToURI := f_SIP_SipUrl2Str(f_Addr_Union_GetSipUrl(p_MessageHeader_InviteOrRefer.toField.addressField)); + var charstring v_FromTag := f_MessageHeader_GetFromTag(p_MessageHeader_InviteOrRefer); + var integer v_CseqValue := p_MessageHeader_InviteOrRefer.cSeq.seqNumber; + var IMS_DialogInfo_Type v_Dialog := p_DialogInfo; + + select (p_CseqType) { + case (dialogLocal) { /* MT establishment of the dialog */ + v_Dialog.LocalURI := v_FromURI; /* @sic R5s140121 change 2.2: needs to be v_FromURI instead of v_ToURI sic@ */ + v_Dialog.RemoteURI := v_ToURI; /* @sic R5s140121 change 2.2: needs to be v_ToURI instead of v_FromURI sic@ */ + v_Dialog.MobileOriginated := false; + v_Dialog.LocalTag := v_FromTag; + v_Dialog.RemoteTag := omit; /* @sic R5s130497 change 1 - MCC160 implementation sic@ */ + v_Dialog.LocalCseq := v_CseqValue; + } + case (dialogRemote) { /* MO establishment of the dialog */ + v_Dialog.LocalURI := v_ToURI; /* @sic R5s140121 change 2.2: needs to be v_ToURI instead of v_FromURI sic@ */ + v_Dialog.RemoteURI := v_FromURI; /* @sic R5s140121 change 2.2: needs to be v_FromURI instead of v_ToURI sic@ */ + v_Dialog.MobileOriginated := true; + v_Dialog.LocalTag := omit; /* @sic R5s130497 change 1 - MCC160 implementation sic@ */ + v_Dialog.RemoteTag := v_FromTag; + v_Dialog.RemoteCseq := v_CseqValue; + } + case else { + FatalError (__FILE__, __LINE__, ""); + } + } + + v_Dialog.CallId := p_MessageHeader_InviteOrRefer.callId.callid; + if (ispresent(p_MessageHeader_InviteOrRefer.sessionId)) { + v_Dialog.SessionId := p_MessageHeader_InviteOrRefer.sessionId.sessid; + } + return v_Dialog; + } + + /* + * @desc Initialise global variables for SIP dialog + * @param p_CseqType + * @param p_MessageHeader_InviteOrRefer + * @param p_DialogIndex (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_DialogInit(IMS_PTC_CseqType_Type p_CseqType, + MessageHeader p_MessageHeader_InviteOrRefer, + template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex := omit) runs on IMS_PTC + { /* @sic R5s140017 MCC160 implementation: ToTag replaced by RemoteTag and LocalTag; additional state variables: CallId, SessionId sic@ */ + /* @sic R5sXXXXXX function may be used for REFER dialog as well (-> e.g. test case 15.21) sic@ */ + var IMS_DialogInfo_Type v_Dialog := fl_IMS_PTC_ImsInfo_GetDialog(p_DialogIndex); + + v_Dialog := f_IMS_DialogInfo_Init(v_Dialog, p_CseqType, p_MessageHeader_InviteOrRefer); /* @sic R5sXXXXXX new function f_IMS_DialogInfo_Init to use IMS_PTC_DialogIndex_Type as local context + e.g. in f_IMS_InviteUserToConference_AnnexC19 sic@ */ + fl_IMS_PTC_ImsInfo_SetDialog(p_DialogIndex, v_Dialog); + } + + /* + * @desc release a SIP dialog + * @param p_DialogIndex (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_DialogRelease(template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex := omit) runs on IMS_PTC + { + fl_IMS_PTC_ImsInfo_SetDialog(p_DialogIndex, valueof(cs_IMS_DialogInfo_Init)); + } + + function f_IMS_PTC_ImsInfo_DialogIsReleased(template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex := omit) runs on IMS_PTC return boolean + { + var template (omit) charstring v_LocalTag := f_IMS_PTC_ImsInfo_DialogGetLocalTag(p_DialogIndex); + var template (omit) charstring v_RemoteTag := f_IMS_PTC_ImsInfo_DialogGetRemoteTag(p_DialogIndex); + return (not isvalue(v_LocalTag) and not isvalue(v_RemoteTag)); + } + + /* + * @desc set active dialog, i.e. dialog of which global procedures take dialog state info + * @param p_Index + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_PTC_ImsInfo_ActivateDialog(IMS_PTC_DialogIndex_Type p_Index) runs on IMS_PTC + { /* @sic R5s140092 change 1.5: new function sic@ */ + vc_IMS_Global.ImsInfo.Dialog.CurrentIndex := fl_IMS_PTC_ImsInfo_GetDialogIndexValue(p_Index); + } + + /* + * @desc function to set local tag acc. to response for INVITE (MO call setup) + * @param p_Tag + * @param p_DialogIndex (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_DialogSetLocalTag(charstring p_Tag, + template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex := omit) runs on IMS_PTC + { + var IMS_DialogInfo_Type v_Dialog := fl_IMS_PTC_ImsInfo_GetDialog(p_DialogIndex); + v_Dialog.LocalTag := p_Tag; + fl_IMS_PTC_ImsInfo_SetDialog(p_DialogIndex, v_Dialog); + } + + /* + * @desc function to set remote tag acc. to response for INVITE (MT call setup) + * @param p_Tag + * @param p_DialogIndex (default value: omit) + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_DialogSetRemoteTag(charstring p_Tag, + template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex := omit) runs on IMS_PTC + { + var IMS_DialogInfo_Type v_Dialog := fl_IMS_PTC_ImsInfo_GetDialog(p_DialogIndex); + v_Dialog.RemoteTag := p_Tag; + fl_IMS_PTC_ImsInfo_SetDialog(p_DialogIndex, v_Dialog); + } + + /* + * @desc function to be used to get local tag for sending any request to a UE within a dialog (e.g. PRACK, BYE etc.) + * @param p_DialogIndex (default value: omit) + * @return template (omit) charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_DialogGetLocalTag(template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex := omit) runs on IMS_PTC return template (omit) charstring + { + var IMS_DialogInfo_Type v_Dialog := fl_IMS_PTC_ImsInfo_GetDialog(p_DialogIndex); + return v_Dialog.LocalTag; + } + + /* + * @desc function to be used to get remote tag for sending any request to a UE within a dialog (e.g. PRACK, BYE etc.) + * @param p_DialogIndex (default value: omit) + * @return template (omit) charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_DialogGetRemoteTag(template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex := omit) runs on IMS_PTC return template (omit) charstring + { + var IMS_DialogInfo_Type v_Dialog := fl_IMS_PTC_ImsInfo_GetDialog(p_DialogIndex); + return v_Dialog.RemoteTag; + } + + /* + * @desc function to get call id of the current dialog + * @param p_DialogIndex (default value: omit) + * @return template (value) CallId + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_DialogGetCallId(template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex := omit) runs on IMS_PTC return template (value) CallId + { + var IMS_DialogInfo_Type v_Dialog := fl_IMS_PTC_ImsInfo_GetDialog(p_DialogIndex); + return cs_CallId(v_Dialog.CallId); + } + + /* + * @desc function to get session id of the current dialog + * @desc function to be used to get remote tag for sending any request to a UE within a dialog (e.g. PRACK, BYE etc.) + * @param p_DialogIndex (default value: omit) + * @return template (omit) SessionId + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_DialogGetSessionId(template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex := omit) runs on IMS_PTC return template (omit) SessionId + { + var IMS_DialogInfo_Type v_Dialog := fl_IMS_PTC_ImsInfo_GetDialog(p_DialogIndex); + var template (omit) SessionId v_SessionId := omit; + if (ispresent(v_Dialog.SessionId)) { + v_SessionId := cs_SessionId(v_Dialog.SessionId); + } + return v_SessionId; + } + + /* + * @desc returns true when the current dialog is MO + * @param p_DialogIndex (default value: omit) + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_DialogIsMO(template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex := omit) runs on IMS_PTC return boolean + { + var IMS_DialogInfo_Type v_Dialog := fl_IMS_PTC_ImsInfo_GetDialog(p_DialogIndex); + if (not ispresent(v_Dialog.MobileOriginated)) { + FatalError(__FILE__, __LINE__, "no dialog established"); + } + return v_Dialog.MobileOriginated; + } + + //---------------------------------------------------------------------------- + /* + * @desc return contact address as provided in contact header of the REGISTER message + * @return SipUrl + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_GetContactUrl() runs on IMS_PTC return SipUrl + { + return vc_IMS_Global.ImsInfo.ContactUrl; + } + + /* + * @desc return Contact header as stored + * @param p_ContactUrl + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_SetContactUrl(SipUrl p_ContactUrl) runs on IMS_PTC + { /* shall be used when subsequent REGISTER has been received during registration */ + vc_IMS_Global.ImsInfo.ContactUrl := p_ContactUrl; + } + + /* + * @desc return CallId that has been used for registration + * @return template (omit) charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_GetCallIdRegistration() runs on IMS_PTC return template (omit) charstring + { + return vc_IMS_Global.ImsInfo.Registration.CallId; + } + + /* + * @desc generate a call id derived from the NW's IP address (see examples in RFC 3261) + * @param p_Method + * @return charstring + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_GenerateCallId(charstring p_Method) runs on IMS_PTC return charstring + { /* p_Method .. e.g. "INVITE" */ + var integer v_CallIdCnt := vc_IMS_Global.ImsInfo.CallIdCnt; + + vc_IMS_Global.ImsInfo.CallIdCnt := v_CallIdCnt + 1; + return p_Method & "-" & int2str(v_CallIdCnt) & "-7dec-11d0-a765-00a0c91e6bf6@" & f_IMS_PTC_NW_Address_GetAddrStr(); /* @sic R5-133705: CallIdCnt to achieve unique callids sic@ */ + } + + /* + * @desc return transport protocol (UDP/TCP) to be used for requests in DL + * @return InternetProtocol_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_GetTransportProtocol() runs on IMS_PTC return InternetProtocol_Type + { + return vc_IMS_Global.ImsInfo.TransportProtocol; + } + + /* + * @desc get CSeq for respective message + * @param p_CseqType + * @param p_DialogIndex (default value: omit) + * @return template (omit) integer + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_CseqGet(IMS_PTC_CseqType_Type p_CseqType, + template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex := omit) runs on IMS_PTC return template (omit) integer + { /* @sic R5s140235: return value changed to "template (omit)" sic@ */ + var IMS_DialogInfo_Type v_Dialog := fl_IMS_PTC_ImsInfo_GetDialog(p_DialogIndex); + var template (omit) integer v_CseqValue; + + select (p_CseqType) { + case (register) { v_CseqValue := vc_IMS_Global.ImsInfo.Registration.Cseq; } + case (dialogRemote) { v_CseqValue := v_Dialog.RemoteCseq; } + case (dialogLocal) { v_CseqValue := v_Dialog.LocalCseq; } + case else { FatalError (__FILE__, __LINE__, ""); } + } + return v_CseqValue; + } + + /* + * @desc get CSeq for respective message + * @param p_CseqType + * @param p_DialogIndex (default value: omit) + * @return integer + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_CseqGetValue(IMS_PTC_CseqType_Type p_CseqType, + template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex := omit) runs on IMS_PTC return integer + { /* @sic R5s140235: new function sic@ */ + var template (omit) integer v_Cseq := f_IMS_PTC_ImsInfo_CseqGet(p_CseqType, p_DialogIndex); + + if (not isvalue(v_Cseq)) { + FatalError(__FILE__, __LINE__, "no valid Cseq yet"); + } + return valueof(v_Cseq); + } + + /* + * @desc set CSeq for respective message + * @param p_CseqType + * @param p_CseqValue + * @param p_DialogIndex (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_CseqSet(IMS_PTC_CseqType_Type p_CseqType, + integer p_CseqValue, + template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex := omit) runs on IMS_PTC + { + var IMS_DialogInfo_Type v_Dialog := fl_IMS_PTC_ImsInfo_GetDialog(p_DialogIndex); + select (p_CseqType) { + case (register) { vc_IMS_Global.ImsInfo.Registration.Cseq := p_CseqValue; } + case (dialogRemote) { v_Dialog.RemoteCseq := p_CseqValue; } + case (dialogLocal) { v_Dialog.LocalCseq := p_CseqValue; } + case else { FatalError (__FILE__, __LINE__, ""); } + } + fl_IMS_PTC_ImsInfo_SetDialog(p_DialogIndex, v_Dialog); + } + + /* + * @desc increment CSeq for respective message + * @param p_CseqType + * @param p_DialogIndex (default value: omit) + * @return integer + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_CseqIncr(IMS_PTC_CseqType_Type p_CseqType, + template (omit) IMS_PTC_DialogIndex_Type p_DialogIndex := omit) runs on IMS_PTC return integer + { /* @sic R5s140235: Cseq may be omit sic@ */ + var integer v_CseqValue := f_IMS_PTC_ImsInfo_CseqGetValue(p_CseqType, p_DialogIndex) + 1; + f_IMS_PTC_ImsInfo_CseqSet(p_CseqType, v_CseqValue, p_DialogIndex); + return v_CseqValue; + } + + /* + * @desc return appropriate branch value + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_GetNextBranch() runs on IMS_PTC return charstring + { /* @sic R5s130561 change 4: addtional branch values sic@ */ + const CharStringList_Type tsc_TagList := { "1234567890", "2345678901", "3456789012", "4567890123", "5678901234", "6789012345", "7890123456", "8901234567", "9012345678", "0123456789", + "0987654321", "9876543210", "8765432109", "7654321098", "6543210987", "5432109876", "4321098765", "3210987654", "2109876543", "1098765432", + "0987654320", "9876543200", "8765432009", "7654320098", "6543200987", "5432009876", "4320098765", "3200987654", "2009876543", "0098765432", + "0987654300", "9876543000", "8765430009", "7654300098", "6543000987", "5430009876", "4300098765", "3000987654", "0009876543", "0098765430", + "0987654000", "9876540000", "8765400009", "7654000098", "6540000987", "5400009876", "4000098765", "0000987654", "0009876540", "0098765400" }; + var charstring v_Branch; + + if (vc_IMS_Global.ImsInfo.BranchIndex >= lengthof(tsc_TagList)) { + FatalError (__FILE__, __LINE__, "not enough branches"); + } + + v_Branch := c_branchCookie & tsc_TagList[vc_IMS_Global.ImsInfo.BranchIndex]; + vc_IMS_Global.ImsInfo.BranchIndex := vc_IMS_Global.ImsInfo.BranchIndex + 1; + return v_Branch; + } + + + /* + * @desc provide latest HomeDomainName + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_GetHomeDomainName() runs on IMS_PTC return charstring + { + return vc_IMS_Global.ImsInfo.HomeDomainName; + } + + /* + * @desc provide latest HomeDomainName + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ImsInfo_GetPrivateUserId() runs on IMS_PTC return charstring + { + return vc_IMS_Global.ImsInfo.PrivateUserId; + } + + function f_IMS_PTC_ImsInfo_Refresh(charstring p_HomeDomainName, + charstring p_PrivateUserId, + CharStringList_Type p_IMPUList) runs on IMS_PTC + { + vc_IMS_Global.ImsInfo.HomeDomainName := p_HomeDomainName; + vc_IMS_Global.ImsInfo.PrivateUserId := p_PrivateUserId; + vc_IMS_Global.ImsInfo.IMPUList := p_IMPUList; + } + + /* + * @desc reset ImsInfo as it is before initial registration + * @status APPROVED (IMS) + */ + function f_IMS_PTC_ImsInfo_Reset() runs on IMS_PTC + { + vc_IMS_Global.ImsInfo := valueof(cs_IMS_ImsInfo_Init(vc_IMS_Global.ImsInfo.RanType, + vc_IMS_Global.ImsInfo.UE_Release, + vc_IMS_Global.ImsInfo.HomeDomainName, + vc_IMS_Global.ImsInfo.PrivateUserId, + vc_IMS_Global.ImsInfo.SecurityScheme)); + } + + //**************************************************************************** + /* + * @desc to deal with entry and exit of the test body + * @param p_TestBodyFlag + * @status APPROVED (IMS_IRAT, IMS, LTE) + */ + function f_IMS_TestBody_Set(boolean p_TestBodyFlag) runs on IMS_PTC + { + vc_IMS_Global.Ctrl.TestBody := p_TestBodyFlag; + } + + /* + * @desc check whether test body is active + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_IMS_TestBody_Check() runs on IMS_PTC return boolean + { + return vc_IMS_Global.Ctrl.TestBody; + } + + /* + * @desc to block UL data from default handling + * @param p_TestBodyFlag + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_BlockUlDataInDefault_Set(boolean p_BlockUlDataInDefault) runs on IMS_PTC + { + vc_IMS_Global.Ctrl.BlockUlDataInDefault := p_BlockUlDataInDefault; + } + + /* + * @desc set correct verdict: FAIL is assigned only when being in the test body + * @param p_FileName + * @param p_LineNo + * @param p_Msg + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_SetVerdictFailOrInconc(charstring p_FileName, + LineNo_Type p_LineNo, + charstring p_Msg) runs on IMS_PTC + { + if (fl_IMS_TestBody_Check()) { + f_SetVerdict(fail, p_FileName, p_LineNo, p_Msg); + } else { + f_SetVerdict(inconc, p_FileName, p_LineNo, p_Msg); + } + self.kill; // => test case will terminate immediately + } + + /* + * @desc set correct verdict: prelininary PASS is only be assigned when being in the test body + * @param p_FileName + * @param p_LineNo + * @param p_Msg + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_IRAT) + */ + function f_IMS_PreliminaryPass(charstring p_FileName, + LineNo_Type p_LineNo, + charstring p_Msg) runs on IMS_PTC + { + if (fl_IMS_TestBody_Check()) { + f_SetVerdict(pass, p_FileName, p_LineNo, p_Msg); + } + } + + //**************************************************************************** + + template (present) IMS_CONFIG_CNF cr_IMS_CONFIG_CNF_Any := ?; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + /* + * @desc Default behaviour for test cases when the IMS behaviour is matter of the test purpose + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + altstep a_IMS_PTC_DefaultBehaviour_TestcaseSpecificImsHandling() runs on IMS_PTC + { + [] IMS_CTRL.receive(cr_IMS_CONFIG_CNF_Any) { + all timer.stop; + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "unexpected receive event at the IMS_CTRL port"); + } + [not vc_IMS_Global.Ctrl.BlockUlDataInDefault] IMS_Server.receive(cr_IMS_DATA_REQ_Any) { /* @sic R5s140780 - MCC160 Implementation sic@ */ + all timer.stop; + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "unexpected receive event at the IMS_Server port"); + } + [not vc_IMS_Global.Ctrl.BlockUlDataInDefault] IMS_Client.receive(cr_IMS_DATA_RSP_Any) { /* @sic R5s140780 - MCC160 Implementation sic@ */ + all timer.stop; + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "unexpected receive event at the IMS_Client port"); + } + [] any timer.timeout { + all timer.stop; + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "unexpected timeout"); + } + } + + /* + * @desc Default behaviour for default IMS handling + * when IMS PTC shall only deal with IMS messages as for the initial registration + * but IMS behavour is not matter of the test purpose + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + altstep a_IMS_PTC_DefaultBehaviour_DefaultImsHandling() + { + [] any port.receive { + f_ErrorLog(__FILE__, __LINE__, "unexpected message (skipped)"); + repeat; + } + [] any timer.timeout { + f_ErrorLog(__FILE__, __LINE__, "unexpected timeout"); + repeat; + } + } + + /* + * @desc default handler to be activated on top of regular default handler to deal with repetitions of SIP requests (especially REGISTER request) + * @param p_IMS_DATA_REQ + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + altstep a_IMS_RetransmissionHandler(IMS_DATA_REQ p_IMS_DATA_REQ) runs on IMS_PTC + { + var template (present) IMS_RoutingInfo_Type v_RoutingInfo := p_IMS_DATA_REQ.RoutingInfo; + var template (present) IMS_Request_Type v_IMS_Request := p_IMS_DATA_REQ.Request; /* repeated message has to be exactly the same (especially cseq) */ + + [] IMS_Server.receive(cr_IMS_DATA_REQ_Any(v_RoutingInfo, v_IMS_Request)) { repeat; } + } + + /* + * @desc to activate the standard default behaviour or default behaviour for test case specific IMS handling + * @param p_Handling + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_ActivateDefault(IMS_PTC_Handling_Type p_Handling) runs on IMS_PTC + { + deactivate(vc_IMS_Global.Ctrl.Default); + + select (p_Handling) { + case (testcaseSpecificHandling) { + vc_IMS_Global.Ctrl.Default := activate(a_IMS_PTC_DefaultBehaviour_TestcaseSpecificImsHandling()); + } + case (defaultHandling) { + vc_IMS_Global.Ctrl.Default := activate(a_IMS_PTC_DefaultBehaviour_DefaultImsHandling()); + } + case else { + FatalError (__FILE__, __LINE__, "unknown default behaviour"); + } + } + } + + //**************************************************************************** + /* + * @desc initialisiation of IMS PTC + * @param p_PdnIndex (default value: PDN_1) + * @param p_Handling (default value: testcaseSpecificHandling) + * @param p_SecurityScheme (default value: omit) + * @param p_RanType (default value: omit) + * @param p_UE_Release (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_Init(PDN_Index_Type p_PdnIndex := PDN_1, + IMS_PTC_Handling_Type p_Handling := testcaseSpecificHandling, + template (omit) IMS_SecurityScheme_Type p_SecurityScheme := omit, + template (omit) IPCAN_RAN_Type p_RanType := omit, + template (omit) integer p_UE_Release := omit) runs on IMS_PTC + { /* @sic R5s130651: new parameter p_PdnIndex sic@ */ + /* @sic R5s130756 additional changes: new parameter p_SecurityScheme sic@ */ + /* @sic R5s130756: new parameter p_Pcscf sic@ */ + /* @sic R5-144747: removal of px_IMS_Pcscf and px_IMS_Pcscf_Emg => p_Pcscf removed sic@ */ + var charstring v_HomeDomainName; + var charstring v_PrivateUserId; + var IMS_SecurityScheme_Type v_SecurityScheme; + + if (px_UEwithISIM) { /* @sic R5-133628: check of temporary user id sic@ */ + v_HomeDomainName := px_IMS_HomeDomainName; + v_PrivateUserId := px_IMS_Private_UserId; + } else { + v_HomeDomainName := f_IMS_HomeDomainNameDerivedFromIMSI(px_IMSI_Def); + v_PrivateUserId := f_IMS_PrivateUserIdentityDerivedFromIMSI(px_IMSI_Def); + } + if (ispresent(p_SecurityScheme)) { + v_SecurityScheme := valueof(p_SecurityScheme); + } else if (pc_IMS_GIBA_Sec and not pc_IMS_Sec) { + v_SecurityScheme := GIBA; + } else if (pc_IMS_Sec) { + v_SecurityScheme := IMS_Security; + } else { + FatalError(__FILE__, __LINE__, "Invalid security setting (neither pc_IMS_GIBA_Sec nor pc_IMS_Sec is set)"); + } + + vc_IMS_Global.PdnIndex := p_PdnIndex; + vc_IMS_Global.Ctrl.TestBody := false; + vc_IMS_Global.Ctrl.BlockUlDataInDefault := false; /* @sic R5s140780 - MCC160 Implementation sic@ */ + vc_IMS_Global.Ctrl.Default := null; + vc_IMS_Global.Security := valueof(cs_IMS_SecurityInfo_Init); + vc_IMS_Global.ImsInfo := valueof(cs_IMS_ImsInfo_Init(p_RanType, p_UE_Release, v_HomeDomainName, v_PrivateUserId, v_SecurityScheme)); + + f_IMS_PTC_ActivateDefault(p_Handling); + } + + /* + * @desc create IMS component + * @return IMS_PTC + * @status APPROVED (LTE, IMS_IRAT, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_Create() return IMS_PTC + { + var IMS_PTC v_IMS_PTC := IMS_PTC.create alive; + return v_IMS_PTC; + } + +} diff --git a/LTE_A_IWD_14wk37/Common/IMS/IMS_DefaultHandler.ttcn b/LTE_A_IWD_14wk37/Common/IMS/IMS_DefaultHandler.ttcn new file mode 100644 index 0000000..c53952c --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS/IMS_DefaultHandler.ttcn @@ -0,0 +1,51 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-06-08 21:06:38 +0200 (Sun, 08 Jun 2014) $ +// $Rev: 11667 $ +/******************************************************************************/ + +module IMS_DefaultHandler { + import from IMS_ASP_TypeDefs all; + import from IMS_ASP_Templates all; + import from IMS_Component all; + import from IMS_PTC_CoordMsg all; + import from IMS_Procedures_Registration all; + import from IMS_Procedures_Common all; + + //**************************************************************************** + // Main loop: + //---------------------------------------------------------------------------- + /* + * @desc default IMS behaviour: + * used for non-IMS test cases to deal with the initial IMS registration + * @status APPROVED (IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_DefaultHandler() runs on IMS_PTC + { + var boolean v_IsRegistered := false; + var IMS_DATA_REQ v_IMS_DATA_REQ; + + f_IMS_PTC_Init(-, defaultHandling, IMS_Security); + + while (true) { + + IMS_Server.receive(car_IMS_Register_Request(?)) -> value v_IMS_DATA_REQ; // receive any REGISTER + if (not v_IsRegistered) { + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // send trigger to EUTRA PTC to indicate start of IMS registration @sic R5-123731 sic@ + f_IMS_Registration(v_IMS_DATA_REQ); + f_IMS_TCP_CloseHandling(justWait); /* @sic R5s140219 - MCC160 implementation sic@ */ + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // send trigger to EUTRA PTC to indicate end of IMS registration @sic R5-123731 sic@ + v_IsRegistered := true; + } else { + f_IMS_PTC_Deregistration(v_IMS_DATA_REQ); // @sic R5-132037 sic@ + /* @sic R5s140219 - MCC160 implementation: closing TCP connections is handled in f_IMS_PTC_Deregistration sic@ */ + v_IsRegistered := false; + } + } + } +} diff --git a/LTE_A_IWD_14wk37/Common/IMS/IMS_IP_Config.ttcn b/LTE_A_IWD_14wk37/Common/IMS/IMS_IP_Config.ttcn new file mode 100644 index 0000000..bdf8eb4 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS/IMS_IP_Config.ttcn @@ -0,0 +1,182 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 22:08:20 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12181 $ +/******************************************************************************/ + +module IMS_IP_Config { + + import from CommonDefs all; + import from IMS_Component all; + import from IP_ASP_TypeDefs all; + import from IMS_ASP_TypeDefs all; + + //**************************************************************************** + // ASP Templates: + //---------------------------------------------------------------------------- + + template (value) IMS_SecurityInfo_Type cs_IMS_SecurityInfo(template (value) IMS_ProtectedPorts_Type p_ProtectedPorts, + template (value) IMS_SPIs_Type p_SPIs, + IPsec_IntegrityAlgorithm_Type p_IntegrityAlgorithm, + IPsec_CipheringAlgorithm_Type p_CipheringAlgorithm) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + ProtectedPorts := p_ProtectedPorts, + SPIs := p_SPIs, + IntegrityAlgorithm := p_IntegrityAlgorithm, + CipheringAlgorithm := p_CipheringAlgorithm + }; + + template (value) IMS_RegistrationInfo_Type cs_IMS_RegistrationInfo(IP_AddrInfo_Type p_NW_Address, + IP_AddrInfo_Type p_UE_Address, + template (omit) IMS_SecurityInfo_Type p_SecurityInfo) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + NW_Address := p_NW_Address, + UE_Address := p_UE_Address, + SecurityInfo := p_SecurityInfo + }; + + template (value) IMS_PortsAndSecurityConfigReq_Type cs_IMS_PortsAndSecurityConfig(template (omit) PortNumber_Type p_UnprotectedPort_us, + template (value) IMS_RegistrationInfo_Type p_RegistrationInfo) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + UnprotectedPort_us := p_UnprotectedPort_us, + RegistrationInfo := p_RegistrationInfo + }; + + template (value) IPsec_SecurityKeys_Type cs_IPsecKeys(bitstring p_MD5_96Key, + bitstring p_SHA_1_96Key, + bitstring p_DES_EDE3_CBCKey, + bitstring p_AES_CBCKey) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + MD5_96Key := p_MD5_96Key, + SHA_1_96Key := p_SHA_1_96Key, + DES_EDE3_CBCKey := p_DES_EDE3_CBCKey, + AES_CBCKey := p_AES_CBCKey + }; + + template (value) IMS_CONFIG_REQ cas_IMS_InstallKey_REQ(template (value) IPsec_SecurityKeys_Type p_InstallKey) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + InstallKey := p_InstallKey + }; + + template (value) IMS_CONFIG_REQ cas_IMS_PortsAndSecurityConfig_REQ(template (value) IMS_PortsAndSecurityConfigReq_Type p_PortsAndSecurityConfig) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + PortsAndSecurityConfig := p_PortsAndSecurityConfig + }; + + template (value) IMS_CONFIG_REQ cas_IMS_SecurityRelease_REQ(template (value) IMS_SecurityInfo_Type p_SecurityInfo) := + { /* @status APPROVED (IMS) */ + SecurityRelease := p_SecurityInfo + }; + + template (value) IMS_CONFIG_REQ cas_IMS_CloseTCP_REQ := {CloseTCP := true}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (value) IMS_CONFIG_REQ cas_IMS_RegInfoRelease_REQ := {RegInfoRelease := true}; /* @status APPROVED (IMS, IMS_IRAT) */ + + template (present) IMS_CONFIG_CNF car_IMS_InstallKey_CNF := {InstallKey := true}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) IMS_CONFIG_CNF car_IMS_PortsAndSecurityConfig_CNF := {PortsAndSecurityConfig := ?}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) IMS_CONFIG_CNF car_IMS_SecurityRelease_CNF := {SecurityRelease := true}; /* @status APPROVED (IMS) */ + template (present) IMS_CONFIG_CNF car_IMS_CloseTCP_CNF := {CloseTCP := true}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) IMS_CONFIG_CNF car_IMS_RegInfoRelease_CNF := {RegInfoRelease := true}; /* @status APPROVED (IMS, IMS_IRAT) */ + + + /* + * @desc Common function to configure the IP PTC (send IMS_CONFIG_REQ, receive IMS_CONFIG_CNF) + * @param p_IMS_CONFIG_REQ + * @param p_IMS_CONFIG_CNF + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_IMS_ConfigureIP(template (value) IMS_CONFIG_REQ p_IMS_CONFIG_REQ, + template (present) IMS_CONFIG_CNF p_IMS_CONFIG_CNF) runs on IMS_PTC + { + f_IMS_BlockUlDataInDefault_Set(true); + IMS_CTRL.send(p_IMS_CONFIG_REQ); + IMS_CTRL.receive(p_IMS_CONFIG_CNF); + f_IMS_BlockUlDataInDefault_Set(false); + } + + //============================================================================ + // configuration of the IP PTC: + + /* + * @desc Computation of the IPsec keys according to "Key extension functions for IPsec ESP" in TS 33.203 Annex I; + * the keys are sent to the SS via the IP PTC + * @param p_IK + * @param p_CK + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_InstallIPsecKeys(B128_Type p_IK, + B128_Type p_CK) runs on IMS_PTC + { + var B64_Type v_Bitestring1 := substr(p_CK, 0, 64); + var B64_Type v_Bitestring2 := substr(p_CK, 64, 64); + var B128_Type v_MD5_96Key := p_IK; + var B160_Type v_SHA_1_96Key := p_IK & int2bit(0, 32); // 160 bits + var B192_Type v_DES_EDE3_CBCKey := v_Bitestring1 & v_Bitestring2 & v_Bitestring1; // 192 bits + var B128_Type v_AES_CBCKey := p_CK; // 128 bits + + fl_IMS_ConfigureIP(cas_IMS_InstallKey_REQ(cs_IPsecKeys(v_MD5_96Key, v_SHA_1_96Key, v_DES_EDE3_CBCKey, v_AES_CBCKey)), + car_IMS_InstallKey_CNF); /* @sic R5s140780 - MCC160 Implementation sic@ */ + } + + /* + * @desc configure ports and security at the SS + * @param p_UnprotectedPort_us + * @param p_NW_Address + * @param p_UE_Address + * @param p_SecurityInfo (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PortsAndSecurityConfig(template (omit) PortNumber_Type p_UnprotectedPort_us, + IP_AddrInfo_Type p_NW_Address, + IP_AddrInfo_Type p_UE_Address, + template (omit) IMS_SecurityInfo_Type p_SecurityInfo := omit) runs on IMS_PTC + { /* configure IMS security; the IP PTC returns SPIs which it has assigned; + * p_SecurityInfo is omit in case of GIBA + * @sic R5s130266 change 1.3, 4, 5 - MCC160 Implementation: SPIs for re-authentication sic@ */ + + if (isvalue(p_SecurityInfo)) { + if (valueof(p_SecurityInfo.SPIs.SPI_us) == valueof(p_SecurityInfo.SPIs.SPI_uc)) { + FatalError(__FILE__, __LINE__, "SPI_us and SPI_uc shall have different values"); + } + } + + fl_IMS_ConfigureIP(cas_IMS_PortsAndSecurityConfig_REQ(cs_IMS_PortsAndSecurityConfig(p_UnprotectedPort_us, cs_IMS_RegistrationInfo(p_NW_Address, p_UE_Address, p_SecurityInfo))), + car_IMS_PortsAndSecurityConfig_CNF); /* @sic R5s140780 - MCC160 Implementation sic@ */ + } + + + /* + * @desc trigger IP PTC to release security related to this IMS PTC + * @param p_SecurityInfo + * @status APPROVED (IMS) + */ + function f_IMS_Register_SecurityRelease(template (value) IMS_SecurityInfo_Type p_SecurityInfo) runs on IMS_PTC + { + fl_IMS_ConfigureIP(cas_IMS_SecurityRelease_REQ(p_SecurityInfo), + car_IMS_SecurityRelease_CNF); /* @sic R5s140780 - MCC160 Implementation sic@ */ + } + + /* + * @desc trigger IP PTC to release registration info related to this IMS PTC + * @status APPROVED (IMS, IMS_IRAT) + */ + function f_IMS_RegisterInfo_Release() runs on IMS_PTC + { + fl_IMS_ConfigureIP(cas_IMS_RegInfoRelease_REQ, + car_IMS_RegInfoRelease_CNF); /* @sic R5s140780 - MCC160 Implementation sic@ */ + } + + /* + * @desc trigger IP PTC to close TCP connections related to this IMS PTC + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_CloseTCP() runs on IMS_PTC + { + fl_IMS_ConfigureIP(cas_IMS_CloseTCP_REQ, + car_IMS_CloseTCP_CNF); /* @sic R5s140780 - MCC160 Implementation sic@ */ + } +} diff --git a/LTE_A_IWD_14wk37/Common/IMS/IMS_MessageBody_Templates.ttcn b/LTE_A_IWD_14wk37/Common/IMS/IMS_MessageBody_Templates.ttcn new file mode 100644 index 0000000..265da12 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS/IMS_MessageBody_Templates.ttcn @@ -0,0 +1,118 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-05-24 23:07:55 +0200 (Sat, 24 May 2014) $ +// $Rev: 11321 $ +/******************************************************************************/ + +module IMS_MessageBody_Templates { + + import from LibSip_MessageBodyTypes all; + import from LibSip_SDPTypes all; + import from IMS_SDP_Messages all; + import from IMS_XML_Templates all; // !!!! temporary solution as long as IMS_XML_Templates contains definition of Reginfo_Type !!!! + + //**************************************************************************** + // MIME Message + //---------------------------------------------------------------------------- + + template (present) MIME_Message cr_MIME_Message := + { /* MIME encapsulation acc. to condition A8 in A.2.1 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + boundary := ?, + mimeEncapsulatedList := { + { + content_type := ?, + content_disposition := *, + mime_encapsulated_part := { + sdpMessageBody := ? /* @sic R5w140112 sic@ */ + } + }, + { + content_type := ?, + content_disposition := *, + mime_encapsulated_part := { + xmlBody := ? // !!!! may need to be decoded and checked later on !!!! + } + } + } + }; + + //**************************************************************************** + // Message Body + //---------------------------------------------------------------------------- + + template (value) MessageBody cs_MessageBody_SDP(template (value) SDP_Message p_SDP) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + sdpMessageBody := f_IMS_SDP_Message_Encode(p_SDP) + }; + + template (value) MessageBody cs_MessageBody_RegInfo(template (value) Reginfo_Type p_RegInfo) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + xmlBody := oct2char(bit2oct(encvalue(p_RegInfo))) /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + }; + + template (value) MessageBody cs_MessageBody_SMS(template (value) octetstring p_SMS) := + { /* @status APPROVED (IMS) */ + smsMessage := p_SMS + }; + + template (present) MessageBody cr_MessageBody_SDP := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + sdpMessageBody := ? + }; + + template (present) MessageBody cr_MessageBody_MIME(template (present) MIME_Message p_MIME := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + mimeMessageBody:= p_MIME + }; + + template (present) MessageBody cr_MessageBody_SMS(template (present) octetstring p_SMS := ?) := + { /* @status APPROVED (IMS) */ + smsMessage := p_SMS + }; + + template (present) MessageBody cr_MessageBody_SipFrag(template (present) charstring p_SipFrag := ?) := + { + sipfrag := p_SipFrag + }; + + template (value) MessageBody cs_MessageBody_SipFrag(charstring p_SipFrag) := + { + sipfrag := p_SipFrag + }; + + template (value) MessageBody cs_MessageBody_XML(template (value) TIMS3GPP_Type p_TIMS3GPP) := + { /* @status APPROVED (IMS) */ + xmlBody := oct2char(bit2oct(encvalue(p_TIMS3GPP))) + }; + + //**************************************************************************** + // Message Body depending on conditions + //---------------------------------------------------------------------------- + + /* + * @desc to be used e.g. for INVITE when message body depends on condition A8 + * (UE uses Geolocation header to provide its geographical location for emergency session setup, + * has obtained its location and is setting up an emergency session) + * @param p_UseMIME + * @return template (present) MessageBody + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_MessageBodySDP_RX(boolean p_UseMIME) return template (present) MessageBody + { /* to be used e.g. for INVITE when message body depends on condition A8 (UE uses Geolocation header to provide its geographical location for emergency session setup, + has obtained its location and is setting up an emergency session) */ + var template (present) MessageBody v_MessageBody; + + if (p_UseMIME) { + v_MessageBody := cr_MessageBody_MIME(cr_MIME_Message); + } else { + v_MessageBody := cr_MessageBody_SDP; + } + return v_MessageBody; + } +} diff --git a/LTE_A_IWD_14wk37/Common/IMS/IMS_PTC_CoordMsg.ttcn b/LTE_A_IWD_14wk37/Common/IMS/IMS_PTC_CoordMsg.ttcn new file mode 100644 index 0000000..8ee8ace --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS/IMS_PTC_CoordMsg.ttcn @@ -0,0 +1,323 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-10 18:07:49 +0200 (Wed, 10 Sep 2014) $ +// $Rev: 12192 $ +/******************************************************************************/ + +module IMS_PTC_CoordMsg { + import from CommonDefs all; + import from NAS_CommonTypeDefs all; + + //============================================================================ + // Commands/Responses used at the IMS-IPCAN interface for IMS test cases acc. to 34.229 + + // parameters + + type enumerated IMS_TestProcedure_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + IPCAN_InitialRegistration, /* EUTRA/EPS signalling acc. to 36.508 cl. 4.5.2.3 without RRC Connection Release at the end of the procedure + * NOTE: As working assumption the UE does IMS REGISTRATION automatically after RRC/NAS registration; + * if that is not the case the IMS PTC may trigger release of the connection after some time and initiate manual IMS registration (FFS) */ + IPCAN_EmergencyCall_NormalService, /* EUTRA/EPS signalling acc. to 36.508 cl. 4.5A.4.3 */ + IPCAN_EmergencyCall_LimitedService, /* EUTRA/EPS signalling acc. to 36.508 cl. 4.5A.5.3 */ + IPCAN_MO_SpeechCall, /* EUTRA/EPS signalling acc. to 36.508 cl. 4.5A.6.3 */ + IPCAN_MT_SpeechCall, /* EUTRA/EPS signalling acc. to 36.508 cl. 4.5A.7.3 */ + IPCAN_MO_VideoCall, /* EUTRA/EPS signalling acc. to 36.508 cl. 4.5A.8.3 */ + IPCAN_MT_VideoCall, /* EUTRA/EPS signalling acc. to 36.508 cl. 4.5A.9.3 */ + IPCAN_MO_IMS_Signalling, /* EUTRA/EPS signalling acc. to 36.508 cl. 4.5.3.3 with m = n = 0; used e.g. for MT SMS test case 18.2 */ + IPCAN_MT_IMS_Signalling, /* EUTRA/EPS signalling acc. to 36.508 cl. 4.5.3.3 Steps 3 to 9 with m = n = 0; used e.g. for MT SMS test case 18.1 */ + IPCAN_XCAP_Signalling /* EUTRA/EPS signalling acc. to 36.508 cl. 4.5A.14 */ + }; + + type enumerated IMS_TestConfiguration_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + IPCAN_SignallingOnly, /* EUTRA: default DRB is used only */ + IPCAN_SpeechCall, /* EUTRA: one dedicated UM bearer; for normal speech calls and emergency call for limited services */ + IPCAN_VideoCall, /* EUTRA: two dedicated UM bearers */ + IPCAN_EmergencyCall, /* EUTRA: second default bearer (AM) and one dedicated UM bearer */ + IPCAN_XCAP /* EUTRA: second default bearer (AM) for second PDN used for XCAP signalling */ + }; + + type enumerated IMS_CellConfiguration_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + SIB2_Normal, /* to change cell configuration back to normal configuration */ + SIB2_TC_12_18, /* SIB2 configuration acc. to test case 12.18 */ + SIB2_TC_12_18b, /* SIB2 configuration acc. to test case 12.18b */ + SIB2_TC_12_19, /* SIB2 configuration acc. to test case 12.19 */ + SIB2_TC_12_19b, /* SIB2 configuration acc. to test case 12.19b */ + SIB2_TC_12_20, /* SIB2 configuration acc. to test case 12.20 */ + SIB2_TC_12_20a, /* SIB2 configuration acc. to test case 12.20a */ + IPCAN_UpdateUELocationInformation, /* EUTRA: set UELocationInformation acc. to 36.509 */ + IPCAN_EmergencyBearers /* EUTRA: configure 2 bearers for emergency (test case 19.3.3) */ + }; + + type record IPCAN_INFO_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + /* @sic R5s120907 R5s130133 additional changes sic@ */ + /* @sic R5s130739 MCC160 implementation: new field UE_Release sic@ */ + IPCAN_RAN_Type RanType optional, + integer UE_Release optional, + integer AuthResLength optional + }; + + type enumerated IMS_IPCAN_CommandName_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + IPCAN_INIT, /* trigger the IPCAN_PTC to create a cell and do further appropriate initialisation; + * which RAN technology to be use is decided by the IPCAN_PTC based on PIXITs; + * as test procedure shall be specified which procedure is used during the test body to know which DRBs need to be pre-configured; + * IPCAN returns response indicating the RAN type */ + IPCAN_CONFIG, /* trigger the IPCAN_PTC to apply test case specific change of the cell configuration as e.g. SIB2 for cell barring */ + IPCAN_STARTPROCEDURE, /* trigger the IPCAN to expect (MO) or page (MT) the UE to establish an RRC connection; + * depending on the connection type triggers may need to be sent from IPCAN to IMS or from IMS to IPCAN to synchronise establishment + * of dedicated DRBs (EUTRA) or secondary PDP contexts (UTRAN) */ + IPCAN_ENDPROCEDURE, /* trigger RRC connection release by the IPCAN_PTC; + * as a SIP may be sent out just before end of the procedure in general a delay of 2s shall be added before sending IPCAN_ENDPROCEDURE to IPCAN; + * for UTRAN it is up to IPCAN and SS implementation to cope with possible/necessary release of (secondary) PDP context; + * a trigger shall be sent from IPCAN to IMS to indicate when RRC connection is released */ + IPCAN_RELEASE, /* Detach UE and release cell (postamble); + * a trigger is shall be sent from IPCAN to IMS to indicate when IPCAN is released */ + IPCAN_QUERY /* query information from the IPCAN PTC + * @sic R5s130133 additional changes sic@ */ + }; + + type record IMS_IPCAN_Command_Type { /* Messages IMS_PTC -> IPCAN + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + IMS_IPCAN_CommandName_Type Name, + IMS_TestConfiguration_Type TestConfiguration optional, + IMS_TestProcedure_Type TestProcedure optional, + IMS_CellConfiguration_Type CellConfiguration optional /* used for IPCAN_CONFIG to allow test case specific initialisation of the EUTRA cell info */ + }; + + type enumerated IMS_IPCAN_ResponseName_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + IPCAN_INIT, /* response for INIT command: carries the RAN type as used by the IPCAN PTC; + the RAN type depends on PIXIT settings: + part 4 model: px_RANTech + part 3 model: EUTRA_FDD or EUTRA_TDD depending on px_ePrimaryFrequencyBand (px_ePrimaryFrequencyBand < 33 => FDD) */ + IPCAN_QUERY /* @sic R5s120907 R5s130133 additional changes sic@ */ + }; + + type record IPCAN_IMS_Response_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + IMS_IPCAN_ResponseName_Type Name, + IPCAN_INFO_Type IpcanInfo optional /* @sic R5s120907 R5s130133 additional changes sic@ */ + }; + + //============================================================================ + + type enumerated TriggerResult_Type {NORMAL, ABORT}; /* @status APPROVED (IMS) */ + + type union IMS_IPCAN_Coordination_MSG { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + Null_Type TriggerEvent, // any trigger of confirmation + Null_Type AbortEvent, // sent instead of TriggerEvent if procedure shall be aborted + IMS_IPCAN_Command_Type IMS_IPCAN_Command, // IMS -> IPCAN: command to be done at IPCAN + IPCAN_IMS_Response_Type IPCAN_IMS_Response, // IMS <- IPCAN: response for previous command + NAS_ProtocolConfigOptions_Type ProtocolConfigOptions // IMS <-> IPCAN: PCOs to be used in NAS signalling + }; + + type port IMS_IPCAN_CO_ORD_PORT message + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + out IMS_IPCAN_Coordination_MSG; + in IMS_IPCAN_Coordination_MSG; + }; + + + type union IMS_IMS_Coordination_MSG { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + Null_Type TriggerEvent + }; + + type port IMS_IMS_CO_ORD_PORT message { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + out IMS_IMS_Coordination_MSG; + in IMS_IMS_Coordination_MSG; + }; + + //---------------------------------------------------------------------------- + + template (value) IMS_IPCAN_Coordination_MSG cms_IMS_IPCAN_Trigger := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + TriggerEvent := true + }; + + template (present) IMS_IPCAN_Coordination_MSG cmr_IMS_IPCAN_Trigger := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + TriggerEvent := true + }; + + template (value) IMS_IPCAN_Coordination_MSG cms_IMS_IPCAN_Abort := + { /* @status APPROVED (IMS) */ + AbortEvent := true + }; + + template (present) IMS_IPCAN_Coordination_MSG cmr_IMS_IPCAN_Abort := + { /* @status APPROVED (IMS) */ + AbortEvent := true + }; + + template (value) IMS_IPCAN_Coordination_MSG cms_IMS_IPCAN_Command(IMS_IPCAN_CommandName_Type p_CommandName, + template (omit) IMS_TestConfiguration_Type p_TestConfiguration := omit, + template (omit) IMS_TestProcedure_Type p_TestProcedure := omit, + template (omit) IMS_CellConfiguration_Type p_CellConfiguration := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + IMS_IPCAN_Command := { + Name := p_CommandName, + TestConfiguration := p_TestConfiguration, + TestProcedure := p_TestProcedure, + CellConfiguration := p_CellConfiguration + } + }; + + template (present) IMS_IPCAN_Coordination_MSG cmr_IMS_IPCAN_Command(template (present) IMS_IPCAN_CommandName_Type p_CommandName := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + IMS_IPCAN_Command := { + Name := p_CommandName, + TestConfiguration := *, + TestProcedure := *, + CellConfiguration := * + } + }; + + template (value) IPCAN_INFO_Type cs_IPCAN_INFO(template (omit) IPCAN_RAN_Type p_RanType, + template (omit) integer p_UE_Release, + template (omit) integer p_AuthResLength) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + RanType := p_RanType, + UE_Release := p_UE_Release, + AuthResLength := p_AuthResLength + }; + + template (value) IMS_IPCAN_Coordination_MSG cms_IPCAN_IMS_Response(IMS_IPCAN_ResponseName_Type p_ResponseName, + template (omit) IPCAN_INFO_Type p_IpcanInfo := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5s120907 R5s130133 additional changes sic@ */ + IPCAN_IMS_Response := { + Name := p_ResponseName, + IpcanInfo := p_IpcanInfo + } + }; + + template (value) IMS_IPCAN_Coordination_MSG cms_IPCAN_IMS_QueryResponse(template (value) IPCAN_INFO_Type p_IpcanInfo) := cms_IPCAN_IMS_Response(IPCAN_QUERY, p_IpcanInfo); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + @sic R5s130133 additional changes sic@ */ + + template (present) IMS_IPCAN_Coordination_MSG cmr_IPCAN_IMS_Response := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + IPCAN_IMS_Response := ? + }; + + //---------------------------------------------------------------------------- + + template (value) IMS_IMS_Coordination_MSG cms_IMS_IMS_Trigger := + { /* @status APPROVED (IMS) */ + TriggerEvent := true + }; + + template (present) IMS_IMS_Coordination_MSG cmr_IMS_IMS_Trigger := + { /* @status APPROVED (IMS) */ + TriggerEvent := true + }; + + //---------------------------------------------------------------------------- + /* + * @desc query IPCAN specific information from IPCAN PTC + * @param p_ImsCoorPort + * @return IPCAN_INFO_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_IPCAN_Query(IMS_IPCAN_CO_ORD_PORT p_ImsCoorPort) return IPCAN_INFO_Type + { + var IMS_IPCAN_Coordination_MSG v_IMS_IPCAN_CoordMsg; + p_ImsCoorPort.send(cms_IMS_IPCAN_Command(IPCAN_QUERY)); + p_ImsCoorPort.receive(cmr_IPCAN_IMS_Response) -> value v_IMS_IPCAN_CoordMsg; + return v_IMS_IPCAN_CoordMsg.IPCAN_IMS_Response.IpcanInfo; + } + + //---------------------------------------------------------------------------- + /* + * @desc to immediately detect programming errors (shall normally not happen) + * @param p_Port + * @status APPROVED (IMS) + */ + altstep a_IMS_IPCAN_Default(IMS_IPCAN_CO_ORD_PORT p_Port) + { + [] p_Port.receive { + FatalError(__FILE__, __LINE__, "unexpected coordination message"); + } + } + + /* + * @desc Wait for a synchonisation message from IMS/IPCAN PTC + * @param p_Port + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_IPCAN_WaitForTrigger(IMS_IPCAN_CO_ORD_PORT p_Port) + { /* @sic R5s130495 change 3: a_IMS_IPCAN_Default removed as at least at EUTRA queries (IPCAN_QUERY) need to be handled by EUTRA's default behaviour sic@ */ + alt { + [] p_Port.receive(cmr_IMS_IPCAN_Trigger) {} + //[] a_IMS_IPCAN_Default(p_Port) {} + } + } + + /* + * @desc Wait for a synchonisation message from IMS/IPCAN PTC + * @param p_Port + * @return TriggerResult_Type + * @status APPROVED (IMS) + */ + function f_IMS_IPCAN_WaitForTriggerOrAbort(IMS_IPCAN_CO_ORD_PORT p_Port) return TriggerResult_Type + { /* @sic R5s130495 change 3: a_IMS_IPCAN_Default removed as at least at EUTRA queries (IPCAN_QUERY) need to be handled by EUTRA's default behaviour sic@ */ + var TriggerResult_Type v_Result := ABORT; + alt { + [] p_Port.receive(cmr_IMS_IPCAN_Trigger) {v_Result := NORMAL} + [] p_Port.receive(cmr_IMS_IPCAN_Abort) {} + //[] a_IMS_IPCAN_Default(p_Port) {} + } + return v_Result; + } + + //---------------------------------------------------------------------------- + /* + * @desc send message to IMS/IPCAN PTC + * @param p_Port + * @param p_Msg (default value: cms_IMS_IPCAN_Trigger) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_IMS_IPCAN_SendCoOrdMsg(IMS_IPCAN_CO_ORD_PORT p_Port, + template (value) IMS_IPCAN_Coordination_MSG p_Msg := cms_IMS_IPCAN_Trigger) + { + p_Port.send(p_Msg); + } + +/* function f_IMS_IPCAN_CheckForTrigger(IMS_IPCAN_CO_ORD_PORT p_Port) return boolean */ +/* { */ +/* timer t_Timer := 0.0; */ +/* t_Timer.start; */ + +/* alt { */ +/* [] p_Port.receive(cmr_IMS_IPCAN_Trigger) { return true; } */ +/* [] a_IMS_IPCAN_Default(p_Port) {} */ +/* [] t_Timer.timeout {} */ +/* } */ +/* return false; */ +/* } */ + + //---------------------------------------------------------------------------- + /* + * @desc send coordination message to the other IMS PTC + * @param p_Port + * @param p_Msg (default value: cms_IMS_IMS_Trigger) + * @status APPROVED (IMS) + */ + function f_IMS_IMS_SendCoOrdMsg(IMS_IMS_CO_ORD_PORT p_Port, + template (value) IMS_IMS_Coordination_MSG p_Msg := cms_IMS_IMS_Trigger) + { + p_Port.send(p_Msg); + } + + /* + * @desc wait for coordination message from the other IMS PTC + * @param p_Port + * @status APPROVED (IMS) + */ + function f_IMS_IMS_WaitForTrigger(IMS_IMS_CO_ORD_PORT p_Port) + { + p_Port.receive(cmr_IMS_IMS_Trigger); + } + +} diff --git a/LTE_A_IWD_14wk37/Common/IMS/IMS_Procedures_CallControl.ttcn b/LTE_A_IWD_14wk37/Common/IMS/IMS_Procedures_CallControl.ttcn new file mode 100644 index 0000000..3915b07 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS/IMS_Procedures_CallControl.ttcn @@ -0,0 +1,2954 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-11 15:45:52 +0200 (Thu, 11 Sep 2014) $ +// $Rev: 12207 $ +/******************************************************************************/ + +module IMS_Procedures_CallControl { + + import from CommonDefs all; + import from CommonIP all; + import from IP_ASP_TypeDefs all; + import from IMS_Component all; + import from IMS_ASP_TypeDefs all; + import from IMS_ASP_Templates all; + import from IMS_CommonParameters all; + import from IMS_CommonTemplates all; + import from IMS_CommonDefs all; + import from IMS_SIP_Templates all; + import from IMS_MessageBody_Templates all; + import from IMS_SDP_Templates all; + import from IMS_SDP_Messages all; + import from IMS_CommonFunctions all; + import from IMS_Procedures_Common all; + import from UpperTesterFunctions all; + import from LibSip_Common all; + import from LibSip_MessageBodyTypes all; + import from LibSip_SIPTypesAndValues all; + import from LibSip_SDPTypes all; + import from IMS_XML_PIDF_Templates all; + import from Parameters all; + + type enumerated INVITE_A_2_1_Context_Type { /* NOTE: some of the conditions for A.2.1 describe the context in which the INVITE is used (=> these conditions are mutual exclusive) + * whereas other conditions are "add-on" + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + A_2_1_A4, /* INVITE creating a dialog */ + A_2_1_A5, /* re-INVITE within a dialog */ + A_2_1_A6, /* INVITE for creating an emergency session in case of no registration */ + A_2_1_A7 /* INVITE for creating an emergency session within an emergency registration */ + }; + + type record IMS_InviteRequestWithSdp_Type { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) + @sic R5w140112: new type sic@ */ + IMS_RoutingInfo_Type RoutingInfo, + INVITE_Request Invite, + SDP_Message SdpOffer + }; + + type record IMS_ResponseWithSdp_Type { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) + @sic R5w140112: new type sic@ */ + IMS_Response_Type Response, + SDP_Message SdpMessage optional + }; + + template (value) IMS_ResponseWithSdp_Type cs_IMS_ResponseWithSdp(IMS_Response_Type p_Response, + template (omit) SDP_Message p_SDP_Message) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + Response := p_Response, + SdpMessage := p_SDP_Message + }; + + + /* + * @desc build-up IMS_InviteRequestWithSdp_Type + * @param p_IMS_DATA_REQ + * @param p_SdpOffer + * @return IMS_InviteRequestWithSdp_Type + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_InviteRequestWithSdpMO(IMS_DATA_REQ p_IMS_DATA_REQ, + SDP_Message p_SdpOffer) return IMS_InviteRequestWithSdp_Type + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; + + v_InviteRequestWithSdp.RoutingInfo := p_IMS_DATA_REQ.RoutingInfo; + v_InviteRequestWithSdp.Invite := p_IMS_DATA_REQ.Request.Invite; + v_InviteRequestWithSdp.SdpOffer := p_SdpOffer; + return v_InviteRequestWithSdp; + } + + /* + * @desc build-up IMS_InviteRequestWithSdp_Type + * @param p_InviteRequest + * @param p_SdpOffer + * @return IMS_InviteRequestWithSdp_Type + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_InviteRequestWithSdpMT(template (value) INVITE_Request p_InviteRequest, + template (value) SDP_Message p_SdpOffer) runs on IMS_PTC return IMS_InviteRequestWithSdp_Type + { + var template (value) IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; + var InternetProtocol_Type v_Protocol := f_IMS_PTC_ImsInfo_GetTransportProtocol(); + + v_InviteRequestWithSdp.RoutingInfo := cs_IMS_RoutingInfo(v_Protocol); + v_InviteRequestWithSdp.Invite := p_InviteRequest; + v_InviteRequestWithSdp.SdpOffer := p_SdpOffer; + + return valueof(v_InviteRequestWithSdp); + } + + /* + * @desc return true when the given INVITE is MO in which case it does not contain a record route (yet) + * @param p_InviteRequest + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_IMS_InviteRequestIsMO(template (value) INVITE_Request p_InviteRequest) return boolean + { + return not ispresent(p_InviteRequest.msgHeader.recordRoute.routeBody); + } + + /* + * @desc check session version of given SDP message to be greater than previous session version + * @param p_CurrentSDP_Message + * @param p_PreviousSDP_Message + * @param p_PreviousSessionVersion (default value: omit) + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_SDP_CheckSessionVersion(SDP_Message p_CurrentSDP_Message, + template (omit) SDP_Message p_PreviousSDP_Message, + template (omit) integer p_PreviousSessionVersion := omit) runs on IMS_PTC + { /* @sic R5s140686, R5-144755: parameter p_PreviousSDP_Message; check whether current and previous SDP message are identically sic@ */ + var integer v_PreviousSessionVersion; + var integer v_CurrentSessionVersion := str2int(p_CurrentSDP_Message.origin.session_version); + var template SDP_Message v_PreviousSDP_Template; + + if (isvalue(p_PreviousSDP_Message)) { + v_PreviousSessionVersion := str2int(valueof(p_PreviousSDP_Message.origin.session_version)); + if (v_PreviousSessionVersion == v_CurrentSessionVersion) { + v_PreviousSDP_Template := p_PreviousSDP_Message; + v_PreviousSDP_Template.origin.session_version := ?; + if (not match(p_CurrentSDP_Message, v_PreviousSDP_Template)) { /* => previous and current message are not indentical */ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "session version is the same as in previous SDP message but content has changed"); + } + return; + } + } else if (isvalue(p_PreviousSessionVersion)) { + v_PreviousSessionVersion := valueof(p_PreviousSessionVersion); + } else { + FatalError(__FILE__, __LINE__, ""); + } + // check session version for subsequent SDP message being different: + if (v_CurrentSessionVersion != v_PreviousSessionVersion + 1) { /* @sic R5-143201 sic@ */ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "session version not incremented"); + } + } + + /* + * @desc Check whether given media description contains default AMR codec + * @param p_SDP_Media_Desc + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_SDP_CheckMediaDescr_AMR_8000_1(SDP_media_desc p_SDP_Media_Desc) runs on IMS_PTC + { + var template (omit) SDP_attribute v_Attribute; + var integer v_RedMaxVal; + var charstring v_RedMaxValStr; + var charstring v_Fmt := f_SDP_MediaDescr_GetAMR_8000_1(p_SDP_Media_Desc); + + if (v_Fmt == "") { /* @sic R5-141114: tsc_AMR_Fmtp_DefaultParameters -> tsc_AMR_Fmtp_DefaultParameters_RX_Pattern sic@ */ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "AMR/8000/1 not found in given media description"); + } + + /* check of the red-max parameter: @sic R5-141114sic@ */ + v_Attribute := f_SDP_AttributeList_GetAttribute(p_SDP_Media_Desc.attributes, cr_SDP_Attribute_fmtp(v_Fmt, cr_AMR_Fmtp_DefaultParameters)); + if (isvalue(v_Attribute)) { + v_RedMaxValStr := f_SIP_SemicolonParamList_GetParamValue(v_Attribute.fmtp.params.paramList, "max-red"); // @sic R5w140113, R5w140009 sic@ + if (v_RedMaxValStr != "") { + v_RedMaxVal := str2int(v_RedMaxValStr); + if (not match(v_RedMaxVal, (0..220))) { /* @sic R5-141114sic@ */ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "invalid value for red-max parameter"); + } + } + } + } + + function f_IMS_SDP_CheckMediaDescr_H264_90000(SDP_media_desc p_SDP_Media_Desc) runs on IMS_PTC + { + if (f_SDP_MediaDescr_GetH264_90000(p_SDP_Media_Desc) == "") { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "H264/90000 not found in given media description"); + } + } + + /* + * @desc DTMF Digits, Telephony Tones, and Telephony Signals (RFC 4733) + * @param p_SDP_Media_Desc + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_SDP_CheckMediaDescr_DTMF(SDP_media_desc p_SDP_Media_Desc) runs on IMS_PTC + { + if (f_SDP_MediaDescr_GetMediaFormat(p_SDP_Media_Desc, cr_RTPMAP_TelephoneEvent) == "") { // @sic R5s130333 change 14.2 - pattern needs to include a rate; R5-133684 sic@ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "'telephone-event' not found in given media description"); + } + } + + /* + * @desc build up Reason header depending on the UE's release + * @param p_CauseValue + * @param p_Text (default value: omit) + * @return template (present) Reason + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_IMS_SIP_Reason_RX(integer p_CauseValue, + template charstring p_Text := omit) runs on IMS_PTC return template (present) Reason + { + var template (omit) integer v_UE_Release := f_IMS_PTC_GetUE_Release(); + var template charstring v_ReasonText := p_Text; + + if (not (ispresent(v_UE_Release) and (valueof(v_UE_Release) >= 10))) { // @sic R5s140234 change 1; R5-142948; R5-142287 change 3 sic@ + v_ReasonText := omit; + } + return cr_Reason(p_CauseValue, v_ReasonText); + } + + /* + * @desc build up Reason header for reason 487 + * @return template (present) Reason + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_IMS_SIP_Reason487_RX() runs on IMS_PTC return template (present) Reason + { + var template charstring v_ReasonText := ("failure to transition to CS domain", "handover cancelled"); + return f_IMS_SIP_Reason_RX(487, v_ReasonText); + } + + //============================================================================ + // local functions to build send/receive messages + //---------------------------------------------------------------------------- + + /* + * @desc revert order of given RouteBody_List + * @param p_RouteBodyList + * @return template (value) RouteBody_List + * @status APPROVED (LTE, IMS_IRAT, IMS, LTE_A, LTE_IRAT) + */ + function fl_RouteSet_ReverseOrder(template (value) RouteBody_List p_RouteBodyList) return template (value) RouteBody_List + { + var template (value) RouteBody_List v_RouteBodyList := {}; + var integer v_LengthOfList; + var integer i; + var integer k; + + v_LengthOfList := lengthof(p_RouteBodyList); + k := v_LengthOfList; + for (i:=0; i condition A6; needs to be set to false for non-voice calls + /* @sic R5s130333 change 2: new parameter p_PrackRequested sic@ */ + /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5s140370 change 6: new parameter p_SrvccAlertingSupported sic@ */ + var MessageHeader v_MessageHeader_Invite := p_InviteRequest.msgHeader; + var template (value) MessageHeader v_MessageHeader_Response := cs_MessageHeader_Dummy; + var template (value) RouteBody_List v_RouteBodyList := f_IMS_RouteSet_MO_Call_TX(p_IsEmergency); /* @sic R5s130756 change 8: p_IsEmergency sic@ */ + + v_MessageHeader_Response.recordRoute := cs_RecordRoute(v_RouteBodyList); + v_MessageHeader_Response.via := v_MessageHeader_Invite.via; + v_MessageHeader_Response.fromField := v_MessageHeader_Invite.fromField; + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderTX(v_MessageHeader_Invite); /* @sic R5-131897, R5-132063 - generic handling of to-tags sic@ */ + v_MessageHeader_Response.contact := cs_Contact(f_SIP_BuildSipUri_TX(p_ContactUri)); // @sic R5s130109 sic@ + v_MessageHeader_Response.callId := v_MessageHeader_Invite.callId; + v_MessageHeader_Response.sessionId := v_MessageHeader_Invite.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := v_MessageHeader_Invite.cSeq; + if (p_PrackRequested) { // Condition A3 @sic R5s130333 change 2 sic@ + v_MessageHeader_Response.require := cs_Require(tsc_OptionTagList_100rel); /* -> reliable provisional responses acc. RFC 3262 */ + v_MessageHeader_Response.rSeq := cs_RSeq(tsc_IMS_RSeqNumFor183 + 1); + } + if (p_IsEmergency) { // Condition A4 + v_MessageHeader_Response.pAssertedID := cs_PAssertedId(f_SIP_BuildSipUri_lr_TX(tsc_IMS_Emergency_TelUri)); + } + if (p_SrvccAlertingSupported) { + v_MessageHeader_Response.featureCaps := cs_FeatureCaps(tsc_IMS_FeatureCap_SrvccAlerting); + } + return v_MessageHeader_Response; + } + + /* + * @desc 181 Call is being forwarded (see TS 34.229, A.2.14) + * @param p_InviteRequest + * @param p_TargetedTo + * @return template (value) MessageHeader + * @status APPROVED (IMS) + */ + function f_IMS_InviteResponse_181_MessageHeaderTX(INVITE_Request p_InviteRequest, + template (value) SipUrl p_TargetedTo) runs on IMS_PTC return template (value) MessageHeader + { + var MessageHeader v_MessageHeader_Invite := p_InviteRequest.msgHeader; + var template (value) MessageHeader v_MessageHeader_Response := cs_MessageHeader_Dummy; + + v_MessageHeader_Response.via := v_MessageHeader_Invite.via; + v_MessageHeader_Response.fromField := v_MessageHeader_Invite.fromField; + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderTX(v_MessageHeader_Invite); /* @sic R5-131897, R5-132063 - generic handling of to-tags sic@ */ + v_MessageHeader_Response.historyInfo := cs_HistoryInfo(p_TargetedTo); + v_MessageHeader_Response.callId := v_MessageHeader_Invite.callId; + v_MessageHeader_Response.sessionId := v_MessageHeader_Invite.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := v_MessageHeader_Invite.cSeq; + + return v_MessageHeader_Response; + } + + /* + * @desc 183 Session Progress for INVITE (see TS 34.229, A.2.3) + * @param p_InviteRequest + * @param p_AdditionalOptionTagsForRequire (default value: tsc_OptionTagList_Empty) + * @param p_ContactUri (default value: px_IMS_CalleeContactUri) + * @param p_AditionalContactParams (default value: omit) + * @param p_IsEmergency (default value: false) + * @param p_Video (default value: tsc_IMS_VideoFeature) + * @return template (value) MessageHeader + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_InviteResponse_183_MessageHeaderTX(INVITE_Request p_InviteRequest, + OptionTag_List p_AdditionalOptionTagsForRequire := tsc_OptionTagList_Empty, + charstring p_ContactUri := px_IMS_CalleeContactUri, + template (omit) SemicolonParam_List p_AditionalContactParams := omit, + boolean p_IsEmergency := false, + boolean p_Video := tsc_IMS_VideoFeature) runs on IMS_PTC return template (value) MessageHeader + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + var MessageHeader v_MessageHeader_Invite := p_InviteRequest.msgHeader; + var template (value) MessageHeader v_MessageHeader_Response := cs_MessageHeader_Dummy; + var template (omit) SemicolonParam_List v_ContactParams := p_AditionalContactParams; + var OptionTag_List v_OptionTag_List := tsc_OptionTagList_100rel & p_AdditionalOptionTagsForRequire; // @sic R5-133629 sic@ + var template (value) RouteBody_List v_RouteBodyList := f_IMS_RouteSet_MO_Call_TX(p_IsEmergency); /* @sic R5s130756 change 8: p_IsEmergency sic@ */ + + v_MessageHeader_Response.recordRoute := cs_RecordRoute(v_RouteBodyList); + v_MessageHeader_Response.via := v_MessageHeader_Invite.via; + v_MessageHeader_Response.require := cs_Require(v_OptionTag_List); // @sic R5s130333 change 3 sic@ + v_MessageHeader_Response.fromField := v_MessageHeader_Invite.fromField; + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderTX(v_MessageHeader_Invite); /* @sic R5-131897, R5-132063 - generic handling of to-tags sic@ */ + v_MessageHeader_Response.rSeq := cs_RSeq(tsc_IMS_RSeqNumFor183); + v_MessageHeader_Response.callId := v_MessageHeader_Invite.callId; + v_MessageHeader_Response.sessionId := v_MessageHeader_Invite.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := v_MessageHeader_Invite.cSeq; + v_MessageHeader_Response.contentType := cs_ContentTypeSDP; + if (p_IsEmergency) { // Condition A5 + v_MessageHeader_Response.pAssertedID := cs_PAssertedId(f_SIP_BuildSipUri_lr_TX(tsc_IMS_Emergency_TelUri)); + } + if (p_Video) { // @sic R5s130109 sic@ + v_ContactParams := f_SemicolonParam_List_Add_TX(v_ContactParams, cs_GenericParam("video")); + } + v_MessageHeader_Response.contact := cs_Contact(f_SIP_BuildSipUri_TX(p_ContactUri), v_ContactParams); + + return v_MessageHeader_Response; + } + + /* + * @desc 200 OK for other requests than REGISTER or SUBSCRIBE (see TS 34.229, A.3.1) + * @param p_MessageHeader_Request + * @param p_ContentType (default value: omit) + * @param p_EmergencyTelURI (default value: omit) + * @param p_ContactUri (default value: px_IMS_CalleeContactUri) + * @return template (value) MessageHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_OtherResponse_200_MessageHeaderTX(template (value) MessageHeader p_MessageHeader_Request, + template (omit) ContentType p_ContentType := omit, + template (omit) charstring p_EmergencyTelURI := omit, + charstring p_ContactUri := px_IMS_CalleeContactUri) runs on IMS_PTC return template (value) MessageHeader + { /* @sic R5-130683: common handling for INVITE and UPDATE sic@ */ + /* p_EmergencyTelURI .. shall be set e.g. to tsc_IMS_Emergency_TelUri for condition A6 in A.3.1 */ + /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + var template (value) MessageHeader v_MessageHeader_Response := cs_MessageHeader_Dummy; + var charstring v_Method := valueof(p_MessageHeader_Request.cSeq.method); + var boolean v_A1A3 := false; + var template (value) RouteBody_List v_RouteBodyList; + var boolean v_IsEmergency := ispresent(p_EmergencyTelURI); // Condition A6 @sic R5s130756 change 10 sic@ + + select (v_Method) { + case ("INVITE", "UPDATE") { v_A1A3 := true; } + } + v_MessageHeader_Response.via := p_MessageHeader_Request.via; + v_MessageHeader_Response.fromField := p_MessageHeader_Request.fromField; + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderTX(p_MessageHeader_Request); /* @sic R5-131897, R5-132063 - generic handling of to-tags sic@ */ + v_MessageHeader_Response.callId := p_MessageHeader_Request.callId; + v_MessageHeader_Response.sessionId := p_MessageHeader_Request.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := p_MessageHeader_Request.cSeq; + v_MessageHeader_Response.contentType := p_ContentType; + + if (v_A1A3) { + v_RouteBodyList := f_IMS_RouteSet_MO_Call_TX(v_IsEmergency); /* @sic R5s130756 change 8: p_IsEmergency sic@ */ + v_MessageHeader_Response.recordRoute := cs_RecordRoute(v_RouteBodyList); + v_MessageHeader_Response.contact := cs_Contact(f_SIP_BuildSipUri_TX(p_ContactUri)); + } + if (v_IsEmergency) { // Condition A6 + v_MessageHeader_Response.pAssertedID := cs_PAssertedId(f_SIP_BuildSipUri_lr_TX(valueof(p_EmergencyTelURI))); + } + return v_MessageHeader_Response; + } + + /* + * @desc 202 Accepted acc. to 34.229 A.3.3 + * @param p_MessageHeader_Request + * @return template (value) MessageHeader + * @status APPROVED (IMS) + */ + function f_IMS_Accepted_202_MessageHeaderTX(MessageHeader p_MessageHeader_Request) runs on IMS_PTC return template (value) MessageHeader + { + var template (value) MessageHeader v_MessageHeader_Response := cs_MessageHeader_Dummy; + + v_MessageHeader_Response.via := p_MessageHeader_Request.via; + v_MessageHeader_Response.fromField := p_MessageHeader_Request.fromField; + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderTX(p_MessageHeader_Request); /* @sic R5-132063 sic@ */ + v_MessageHeader_Response.callId := p_MessageHeader_Request.callId; + v_MessageHeader_Response.sessionId := p_MessageHeader_Request.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := p_MessageHeader_Request.cSeq; + + return v_MessageHeader_Response; + } + + /* + * @desc generic message header for 4XX message to be sent to the UE + * @param p_MessageHeader_InviteRequest + * @return template (value) MessageHeader + * @status APPROVED (LTE_A) + */ + function f_IMS_InviteResponse_4XX_MessageHeaderTX(MessageHeader p_MessageHeader_InviteRequest) runs on IMS_PTC return template (value) MessageHeader + { /* @sic R5s140572 change 3: new function sic@ */ + var template (value) MessageHeader v_MessageHeader_Response := cs_MessageHeader_Dummy; + + v_MessageHeader_Response.via := p_MessageHeader_InviteRequest.via; + v_MessageHeader_Response.fromField := p_MessageHeader_InviteRequest.fromField; + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderTX(p_MessageHeader_InviteRequest); + + v_MessageHeader_Response.callId := p_MessageHeader_InviteRequest.callId; + v_MessageHeader_Response.sessionId := p_MessageHeader_InviteRequest.sessionId; + v_MessageHeader_Response.cSeq := p_MessageHeader_InviteRequest.cSeq; + + return v_MessageHeader_Response; + } + + //---------------------------------------------------------------------------- + /* + * @desc CANCEL Request (see TS 34.229, A.2.15) + * @param p_InviteRequest + * @return template (value) MessageHeader + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_CancelRequest_MessageHeaderTX(template (value) INVITE_Request p_InviteRequest) runs on IMS_PTC return template (value) MessageHeader + { + var template (value) MessageHeader v_MessageHeader_Invite := p_InviteRequest.msgHeader; + var template (value) MessageHeader v_MessageHeader_Cancel := cs_MessageHeader_Dummy; + var template (value) Via v_Via := fl_Via_AddSigCompParam(v_MessageHeader_Invite.via); + var integer v_CSeqValue := f_MessageHeader_GetCseqValue(v_MessageHeader_Invite); + + v_MessageHeader_Cancel.via := v_Via; + v_MessageHeader_Cancel.toField := f_IMS_RequestInDialog_ToHeaderTX(); + v_MessageHeader_Cancel.fromField := f_IMS_RequestInDialog_FromHeaderTX(); + v_MessageHeader_Cancel.callId := v_MessageHeader_Invite.callId; + v_MessageHeader_Cancel.sessionId := v_MessageHeader_Invite.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Cancel.cSeq := cs_CseqDef(v_CSeqValue, "CANCEL"); /* @sic R5s140092 change 11 sic@ */ + + return v_MessageHeader_Cancel; + } + + + //============================================================================ + // Functions to build responses to be expected from the UE + //---------------------------------------------------------------------------- + /* + * @desc 100 Trying for INVITE (see TS 34.229, A.2.2) + * @param p_InviteRequest + * @return template (present) MessageHeader + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_InviteResponse_100_MessageHeaderRX(template (value) INVITE_Request p_InviteRequest) return template (present) MessageHeader + { /* NOTE: acc. to A.2.2 there is no Session-ID in this message */ + const boolean tsc_Is100Response := true; + var template (value) MessageHeader v_MessageHeader_Invite := p_InviteRequest.msgHeader; + var template (present) MessageHeader v_MessageHeader_Response := cr_MessageHeader_Dummy; + + v_MessageHeader_Response.via := f_Via_ResponseRX(v_MessageHeader_Invite.via); /* @sic R5s140350 sic@ */ + v_MessageHeader_Response.fromField := f_IMS_Response_FromHeaderRX(v_MessageHeader_Invite); /* @sic R5s130453 sic@ */ + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderRX(v_MessageHeader_Invite, tsc_Is100Response); /* @sic R5s130453, R5s130685 sic@ */ + v_MessageHeader_Response.callId := v_MessageHeader_Invite.callId; + v_MessageHeader_Response.cSeq := v_MessageHeader_Invite.cSeq; + + return v_MessageHeader_Response; + } + + /* + * @desc 180 Ringing for INVITE (see TS 34.229, A.2.6) + * @param p_InviteRequest + * @param p_IsEmergency (default value: false) + * @param p_ContentType (default value: *) + * @param p_ContentLength (default value: ?) + * @return template (present) MessageHeader + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_InviteResponse_180_MessageHeaderRX(template (value) INVITE_Request p_InviteRequest, + boolean p_IsEmergency := false, + template ContentType p_ContentType := *, + template (present) ContentLength p_ContentLength := ?) runs on IMS_PTC return template (present) MessageHeader + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5-140975: new parameters p_ContentType, p_ContentLength to ensure that the content type is omit in case of C.11 sic@ */ + var template (value) MessageHeader v_MessageHeader_Invite := p_InviteRequest.msgHeader; + var template (present) MessageHeader v_MessageHeader_Response := cr_MessageHeader_Dummy; + var integer v_Port_us := f_IMS_PTC_GetPort_us(); + + v_MessageHeader_Response.recordRoute := v_MessageHeader_Invite.recordRoute; /* @sic R5s130510 change 9 sic@ */ + v_MessageHeader_Response.via := f_Via_ResponseRX(v_MessageHeader_Invite.via); /* @sic R5s140350 sic@ */ + v_MessageHeader_Response.fromField := f_IMS_Response_FromHeaderRX(v_MessageHeader_Invite); /* @sic R5s130453 sic@ */ + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderRX(v_MessageHeader_Invite); /* @sic R5s130453 sic@ */ + + v_MessageHeader_Response.contact := cr_Contact(cr_SipUri_HostPort(?, v_Port_us), cr_FeatureParam_3gpp_icsi_ref); // host address needs to be checked after receiving + v_MessageHeader_Response.callId := v_MessageHeader_Invite.callId; + v_MessageHeader_Response.sessionId := v_MessageHeader_Invite.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := v_MessageHeader_Invite.cSeq; + v_MessageHeader_Response.contentType := p_ContentType; /* @sic R5-140975 sic@ */ + v_MessageHeader_Response.contentLength := p_ContentLength; /* @sic R5-140975 sic@ */ + + v_MessageHeader_Response.pAccessNetworkInfo := cr_PAccessNetworkInfoDef(f_IMS_PTC_RanType_GetString()); // NOTE: acc. A.2.6 there is no condition regarding GIBA + if (p_IsEmergency) { // Condition A4 + v_MessageHeader_Response.pAssertedID := cr_PAssertedId(f_SIP_BuildSipUri_lr_RX(tsc_IMS_Emergency_TelUri)); + } + return v_MessageHeader_Response; + } + + /* + * @desc 183 Session Progress for INVITE (see TS 34.229, A.2.3) + * @param p_InviteRequest + * @param p_AdditionalOptionTagsForRequire (default value: tsc_OptionTagList_Empty) + * @return template (present) MessageHeader + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_InviteResponse_183_MessageHeaderRX(template (value) INVITE_Request p_InviteRequest, + OptionTag_List p_AdditionalOptionTagsForRequire := tsc_OptionTagList_Empty) + runs on IMS_PTC return template (present) MessageHeader + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + var template (value) MessageHeader v_MessageHeader_Invite := p_InviteRequest.msgHeader; + var template (present) MessageHeader v_MessageHeader_Response := cr_MessageHeader_Dummy; + var integer v_Port_us := f_IMS_PTC_GetPort_us(); + var OptionTag_List v_OptionTag_List := tsc_OptionTagList_100rel & p_AdditionalOptionTagsForRequire; // @sic R5-133629 sic@ + + v_MessageHeader_Response.via := f_Via_ResponseRX(v_MessageHeader_Invite.via); /* @sic R5s140350 sic@ */ + v_MessageHeader_Response.recordRoute := v_MessageHeader_Invite.recordRoute; /* @sic R5s130510 change 6.1, R5-135004 change 1 sic@ */ + v_MessageHeader_Response.require := cr_Require(v_OptionTag_List); + v_MessageHeader_Response.fromField := f_IMS_Response_FromHeaderRX(v_MessageHeader_Invite); /* @sic R5s130453 sic@ */ + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderRX(v_MessageHeader_Invite); /* @sic R5s130453 sic@ */ + v_MessageHeader_Response.contact := cr_Contact(cr_SipUri_HostPort(?, v_Port_us), cr_FeatureParam_3gpp_icsi_ref); // host address needs to be checked after receiving + v_MessageHeader_Response.rSeq := cr_RSeq(?); /* @sic R5s130510 sic@ */ + v_MessageHeader_Response.callId := v_MessageHeader_Invite.callId; + v_MessageHeader_Response.sessionId := v_MessageHeader_Invite.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := v_MessageHeader_Invite.cSeq; + v_MessageHeader_Response.contentType := cr_ContentTypeSDP; + + return v_MessageHeader_Response; + } + + function f_IMS_Accepted_202_MessageHeaderRX(template (value) MessageHeader p_MessageHeader_Request) return template (present) MessageHeader + { // 202 Accepted (see TS 34.229, A.3.3) + + var template (present) MessageHeader v_MessageHeader_Response := cr_MessageHeader_Dummy; + + v_MessageHeader_Response.via := f_Via_ResponseRX(p_MessageHeader_Request.via); /* @sic R5s140350 sic@ */ + v_MessageHeader_Response.fromField := f_IMS_Response_FromHeaderRX(p_MessageHeader_Request); /* @sic R5s130453 sic@ */ + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderRX(p_MessageHeader_Request); /* @sic R5-132063 sic@ */ + v_MessageHeader_Response.callId := p_MessageHeader_Request.callId; + v_MessageHeader_Response.sessionId := p_MessageHeader_Request.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := p_MessageHeader_Request.cSeq; + + return v_MessageHeader_Response; + } + + /* + * @desc 380 Alternative Service (see TS 34.229, A.4.1) + * @param p_InviteRequest + * @return template (value) MessageHeader + * @status APPROVED (IMS) + */ + function f_IMS_InviteResponse_380_MessageHeaderTX(INVITE_Request p_InviteRequest) runs on IMS_PTC return template (value) MessageHeader + { + var MessageHeader v_MessageHeader_Invite := p_InviteRequest.msgHeader; + var template (value) MessageHeader v_MessageHeader_Response := cs_MessageHeader_Dummy; + + v_MessageHeader_Response.via := v_MessageHeader_Invite.via; + v_MessageHeader_Response.fromField := v_MessageHeader_Invite.fromField; + v_MessageHeader_Response.toField := cs_ToDef(f_Addr_Union_GetSipUrl(v_MessageHeader_Invite.toField.addressField)); + v_MessageHeader_Response.pAssertedID := cs_PAssertedId(cs_SipUri_HostPort_lr(f_IMS_PTC_Pcscf_Get())); /* @sic R5-144747: removal of px_IMS_Pcscf_Emg => f_IMS_PTC_Pcscf_Get sic@ */ + v_MessageHeader_Response.callId := v_MessageHeader_Invite.callId; + v_MessageHeader_Response.sessionId := v_MessageHeader_Invite.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := v_MessageHeader_Invite.cSeq; + v_MessageHeader_Response.contentType := cs_ContentType("application/3gpp-ims+xml"); + + return v_MessageHeader_Response; + } + + /* + * @desc common 4XX response to INVITE (e.g. 487 Request Terminated (see TS 34.229, A.2.16) + * @param p_MessageHeader_Request + * @return template (present) MessageHeader + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_InviteResponse_4XX_MessageHeaderRX(template (value) MessageHeader p_MessageHeader_Request) return template (present) MessageHeader + { + var template (present) MessageHeader v_MessageHeader_Response := cr_MessageHeader_Dummy; + + v_MessageHeader_Response.via := f_Via_ResponseRX(p_MessageHeader_Request.via); /* @sic R5s140350 sic@ */ + v_MessageHeader_Response.fromField := f_IMS_Response_FromHeaderRX(p_MessageHeader_Request); /* @sic R5s130453 sic@ */ + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderRX(p_MessageHeader_Request); /* @sic R5s130453 sic@ */ + v_MessageHeader_Response.callId := p_MessageHeader_Request.callId; + v_MessageHeader_Response.sessionId := p_MessageHeader_Request.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := p_MessageHeader_Request.cSeq; + + return v_MessageHeader_Response; + } + + //============================================================================ + // Functions to build requests to be sent to the UE + //---------------------------------------------------------------------------- + /* + * @desc INVITE acc. to condition A4 - INVITE creating a dialog, or A5 - re-INVITE within a dialog (see TS 34.229, A.2.9) + * @param p_AdditionalOptionTagsForSupported (default value: tsc_OptionTagList_Empty) + * @param p_Context (default value: A_2_1_A4) + * @param p_SrvccAlertingSupported (default value: pc_IMS_SRVCCAlert) + * @param p_MTSI (default value: pc_MultimediaTelephonyService) + * @param p_Video (default value: tsc_IMS_VideoFeature) + * @param p_SessionIdSupported (default value: false) + * @param p_CSeqValue (default value: 4711) + * @return template (value) MessageHeader + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_InviteRequest_MessageHeaderTX(OptionTag_List p_AdditionalOptionTagsForSupported := tsc_OptionTagList_Empty, + INVITE_A_2_1_Context_Type p_Context := A_2_1_A4, + boolean p_SrvccAlertingSupported := pc_IMS_SRVCCAlert, + boolean p_MTSI := pc_MultimediaTelephonyService, /* @sic R5s130510 additional change 1: tsc_IMS_MTSI replaced by pc_MultimediaTelephonyService sic@ */ + boolean p_Video := tsc_IMS_VideoFeature, + boolean p_SessionIdSupported := false, + integer p_CSeqValue := 4711) runs on IMS_PTC return template (value) MessageHeader + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5-140915 MT call hold requires re-INVITE => new parameter p_Context for A4/A5 sic@ */ + /* @sic R5s140385 change 6: new parameter p_SrvccAlertingSupported sic@ */ + var template (value) MessageHeader v_MessageHeader_Invite := cs_MessageHeader_Dummy; + var template (value) SipUrl v_PublicUserId_SipUrl := f_IMS_PTC_ImsInfo_GetSipUriTX(defaultId); // @sic R5-133304: use default public user id sic@ + var template (omit) SemicolonParam_List v_ContactParams := omit; + var template (value) GenericParam v_GenericParam_3gpp_icsi_ref; + var charstring v_CallIdString := f_IMS_PTC_GenerateCallId("INVITE"); + var charstring v_FromTag := f_IMS_GenerateTag("INVITE", "From"); + var template (value) RouteBody_List v_RouteBodyList; + var integer v_CSeqValue; + var template (value) From v_From; + var template (value) To v_To; + var template (value) CallId v_CallId; + var template (omit) SessionId v_SessionId; + + select (p_Context) { + case (A_2_1_A4) { + v_CSeqValue := p_CSeqValue; + v_From := cs_From(f_SIP_BuildSipUri_TX(tsc_IMS_CallerSipAddrStr), v_FromTag); + v_To := cs_ToDef(v_PublicUserId_SipUrl); + v_CallId := cs_CallId(v_CallIdString); + v_RouteBodyList := f_IMS_RouteSet_MT_Call_TX(); /* @sic R5s140324 - MCC160 Implementation sic@ */ + if (p_SessionIdSupported) { /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_SessionId := cs_SessionId(f_IMS_SessionId_TX_Generate(v_CallIdString)); + } else { + v_SessionId := omit; + } + } + case (A_2_1_A5) { + v_CSeqValue := f_IMS_PTC_ImsInfo_CseqIncr(dialogLocal); + v_From := f_IMS_RequestInDialog_FromHeaderTX(); + v_To := f_IMS_RequestInDialog_ToHeaderTX(); + v_CallId := f_IMS_PTC_ImsInfo_DialogGetCallId(); + if (f_IMS_PTC_ImsInfo_DialogIsMO()) { /* @sic R5s140324 - MCC160 Implementation sic@ */ + v_RouteBodyList := fl_RouteSet_ReverseOrder(f_IMS_RouteSet_MO_Call_TX()); /* @sic R5-142320, R5-144601 sic@ */ + } else { + v_RouteBodyList := f_IMS_RouteSet_MT_Call_TX(); + } + v_SessionId := f_IMS_PTC_ImsInfo_DialogGetSessionId(); + } + case else { + FatalError(__FILE__, __LINE__, "unknown context"); + } + } + + v_MessageHeader_Invite.via := f_IMS_InviteRequest_ViaTX(); /* @sic R5-134116: New function fl_IMS_InviteRequest_ViaTX sic@ */ + v_MessageHeader_Invite.recordRoute := cs_RecordRoute(v_RouteBodyList); + v_MessageHeader_Invite.fromField := v_From; + v_MessageHeader_Invite.toField := v_To; + v_MessageHeader_Invite.callId := v_CallId; + v_MessageHeader_Invite.sessionId := v_SessionId; + v_MessageHeader_Invite.cSeq := cs_CseqDef(v_CSeqValue, "INVITE"); + v_MessageHeader_Invite.supported := cs_Supported(tsc_OptionTagList_100rel & p_AdditionalOptionTagsForSupported); + v_MessageHeader_Invite.pCalledPartyID := cs_PCalledPartyId(v_PublicUserId_SipUrl); + v_MessageHeader_Invite.contentType := cs_ContentTypeSDP; + v_MessageHeader_Invite.maxForwards := cs_MaxForwardsDef; + v_MessageHeader_Invite.accept := cs_Accept({cs_AcceptBody("application/sdp"), cs_AcceptBody("application/3gpp-ims+xml")}); + + if (p_MTSI) { + v_GenericParam_3gpp_icsi_ref := cs_GenericParam_Common(tsc_IMS_FeatureParamId_3gpp_icsi_ref, cs_GenValueQuoted(cs_IMS_EncodedFeatureParamValue_3gpp_icsi_ref)); // @sic R5s130738: string needs to be quoted; R5-142247 sic@ + + if (p_Context == A_2_1_A4) { // @sic R5-142949 sic@ + v_MessageHeader_Invite.pAssertedService := cs_PAssertedService(tsc_IMS_FeatureParamValue_3gpp_icsi_ref); /* @sic R5s140565 change 1 sic@ */ + v_MessageHeader_Invite.acceptContact := cs_AcceptContact({v_GenericParam_3gpp_icsi_ref}); + } + v_ContactParams := f_SemicolonParam_List_Add_TX(v_ContactParams, v_GenericParam_3gpp_icsi_ref); + } + if (p_Video) { // @sic R5s130109 sic@ + v_ContactParams := f_SemicolonParam_List_Add_TX(v_ContactParams, cs_GenericParam("video")); + } + v_MessageHeader_Invite.contact := cs_Contact(f_SIP_BuildSipUri_TX(tsc_IMS_CallerSipAddrStr, tsc_IMS_CallerPort), v_ContactParams); + + if (p_Context != A_2_1_A5) { + if (p_SrvccAlertingSupported) { /* @sic R5s140385 change 6 - NOTE: feature caps shall only be inserted when creating a voice call sic@ */ + v_MessageHeader_Invite.featureCaps := cs_FeatureCaps(tsc_IMS_FeatureCap_SrvccAlerting); + } + + f_IMS_PTC_ImsInfo_DialogInit(dialogLocal, valueof(v_MessageHeader_Invite)); + } + return v_MessageHeader_Invite; + } + + /* + * @desc PRACK (see TS 34.229, A.2.4) + * @param p_InviteRequest + * @param p_MessageHeader_PrevReliableResponse + * @param p_ContentType (default value: omit) + * @return template (value) MessageHeader + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_PrackRequest_MessageHeaderTX(template (value) INVITE_Request p_InviteRequest, + MessageHeader p_MessageHeader_PrevReliableResponse, + template (omit) ContentType p_ContentType := omit) runs on IMS_PTC return template (value) MessageHeader + { /* p_MessageHeader_PrevReliableResponse .. MessageHeader of "the reliable response" (e.g. previous 183 response) */ + var template (value) MessageHeader v_MessageHeader_Invite := p_InviteRequest.msgHeader; + var template (value) MessageHeader v_MessageHeader_Prack := cs_MessageHeader_Dummy; + var template (value) Via v_Via := fl_Via_AddSigCompParam(v_MessageHeader_Invite.via); + var CSeq v_CSeq := p_MessageHeader_PrevReliableResponse.cSeq; /* sequence number of the reliable response which is to be acknowledged (-> rAck); see RFC 3262 cl. 7.2 */ + var integer v_CSeqValue := f_IMS_PTC_ImsInfo_CseqIncr(dialogLocal); /* incremented sequence number of the network side @sic R5-133188 sic@ */ + var integer v_ResponseNumber := p_MessageHeader_PrevReliableResponse.rSeq.responseNum; /* @sic R5s130510 additional change 2.1 sic@ */ + + v_MessageHeader_Prack.via := f_IMS_ViaRefreshBranches(v_Via); /* @sic R5s130561 change 1: refresh branches sic@ */ + v_MessageHeader_Prack.toField := f_IMS_RequestInDialog_ToHeaderTX(); + v_MessageHeader_Prack.fromField := f_IMS_RequestInDialog_FromHeaderTX(); + v_MessageHeader_Prack.callId := v_MessageHeader_Invite.callId; + v_MessageHeader_Prack.sessionId := v_MessageHeader_Invite.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Prack.cSeq := cs_CseqDef(v_CSeqValue, "PRACK"); + v_MessageHeader_Prack.maxForwards := cs_MaxForwardsDef; + v_MessageHeader_Prack.rAck := cs_RAckDef(v_ResponseNumber, v_CSeq.seqNumber, v_CSeq.method); + v_MessageHeader_Prack.contentType := p_ContentType; + + return v_MessageHeader_Prack; + } + + /* + * @desc UPDATE (see TS 34.229, A.2.5) + * @param p_InviteRequest + * @return template (value) MessageHeader + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_UpdateRequest_MessageHeaderTX(template (value) INVITE_Request p_InviteRequest) runs on IMS_PTC return template (value) MessageHeader + { + var template (value) MessageHeader v_MessageHeader_Invite := p_InviteRequest.msgHeader; + var template (value) MessageHeader v_MessageHeader_Update := cs_MessageHeader_Dummy; + var template (value) Via v_Via := fl_Via_AddSigCompParam(v_MessageHeader_Invite.via); + var integer v_CSeqValue := f_IMS_PTC_ImsInfo_CseqIncr(dialogLocal); + + v_MessageHeader_Update.via := f_IMS_ViaRefreshBranches(v_Via); /* @sic R5s130561 change 2: refresh branches sic@ */ + v_MessageHeader_Update.toField := f_IMS_RequestInDialog_ToHeaderTX(); + v_MessageHeader_Update.fromField := f_IMS_RequestInDialog_FromHeaderTX(); + v_MessageHeader_Update.callId := v_MessageHeader_Invite.callId; + v_MessageHeader_Update.sessionId := v_MessageHeader_Invite.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Update.cSeq := cs_CseqDef(v_CSeqValue, "UPDATE"); + v_MessageHeader_Update.maxForwards := cs_MaxForwardsDef; + v_MessageHeader_Update.contentType := cs_ContentTypeSDP; + + return v_MessageHeader_Update; + } + + /* + * @desc ACK (see TS 34.229, A.2.7) + * @param p_InviteRequest + * @param p_StatusLine_PrevResponse (default value: c_statusLine200) + * @return template (value) MessageHeader + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_AckRequest_MessageHeaderTX(template (value) INVITE_Request p_InviteRequest, + template (value) StatusLine p_StatusLine_PrevResponse := c_statusLine200) runs on IMS_PTC return template (value) MessageHeader + { /* @sic R5-141115: new parameter p_StatusLine_PrevResponse sic@ */ + /* @sic R5s140194, R5-142319: no Route header in DL sic@ */ + var template (value) MessageHeader v_MessageHeader_Invite := p_InviteRequest.msgHeader; + var template (value) MessageHeader v_MessageHeader_Ack := cs_MessageHeader_Dummy; + var template (value) Via v_Via := fl_Via_AddSigCompParam(v_MessageHeader_Invite.via); + var integer v_CSeqValue := f_MessageHeader_GetCseqValue(v_MessageHeader_Invite); // for ACK the CSeq value of the corresponding INVATE has to be used + var integer v_StatusCode := valueof(p_StatusLine_PrevResponse.statusCode); + var boolean v_Is2xxResponse := not ((v_StatusCode < 200) or (v_StatusCode > 299)); // @sic R5s140264: missing braces sic@ + + if (v_Is2xxResponse) { /* @sic R5-141115, R5s140092 sic@ */ + v_MessageHeader_Ack.via := f_IMS_ViaRefreshBranches(v_Via); /* @sic R5s130510 sic@ */ + } else { + v_MessageHeader_Ack.via := v_MessageHeader_Invite.via; /* @sic R5s140092 change 6 sic@ */ + } + + v_MessageHeader_Ack.toField := f_IMS_RequestInDialog_ToHeaderTX(); + v_MessageHeader_Ack.fromField := f_IMS_RequestInDialog_FromHeaderTX(); + v_MessageHeader_Ack.callId := v_MessageHeader_Invite.callId; + v_MessageHeader_Ack.cSeq := cs_CseqDef(v_CSeqValue, "ACK"); + v_MessageHeader_Ack.maxForwards := cs_MaxForwardsDef; + v_MessageHeader_Ack.sessionId := v_MessageHeader_Invite.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + + return v_MessageHeader_Ack; + } + + /* + * @desc BYE (see TS 34.229, A.2.8) + * @param p_InviteRequest + * @return template (value) MessageHeader + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_ByeRequest_MessageHeaderTX(template (value) INVITE_Request p_InviteRequest) runs on IMS_PTC return template (value) MessageHeader + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + var template (value) MessageHeader v_MessageHeader_Invite := p_InviteRequest.msgHeader; + var template (value) MessageHeader v_MessageHeader_Bye := cs_MessageHeader_Dummy; + var template (value) Via v_Via; + var integer v_CSeqValue := f_IMS_PTC_ImsInfo_CseqIncr(dialogLocal); + + if (fl_IMS_InviteRequestIsMO(p_InviteRequest)) { /* @sic R5-134116: distinguish MO/MT call establishment sic@ */ + v_Via := f_IMS_InviteRequest_ViaTX(); + } else { + v_Via := fl_Via_AddSigCompParam(v_MessageHeader_Invite.via); + v_Via := f_IMS_ViaRefreshBranches(v_Via); /* @sic R5s130510 sic@ */ + } + + v_MessageHeader_Bye.via := v_Via; + v_MessageHeader_Bye.callId := v_MessageHeader_Invite.callId; + v_MessageHeader_Bye.sessionId := v_MessageHeader_Invite.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Bye.cSeq := cs_CseqDef(v_CSeqValue, "BYE"); + v_MessageHeader_Bye.maxForwards := cs_MaxForwardsDef; + v_MessageHeader_Bye.toField := f_IMS_RequestInDialog_ToHeaderTX(); + v_MessageHeader_Bye.fromField := f_IMS_RequestInDialog_FromHeaderTX(); + + return v_MessageHeader_Bye; + } + + //============================================================================ + // Functions to build requests to be received from the UE + //---------------------------------------------------------------------------- + /* + * @desc INVITE acc. to condition A4 - INVITE creating a dialog (see TS 34.229, A.2.1) + * @param p_MessageHeader (default value: cr_MessageHeader_Dummy) + * @param p_ExpectedCalleeUri + * @param p_AdditionalOptionTagsForSupported (default value: tsc_OptionTagList_Empty) + * @param p_Context (default value: A_2_1_A4) + * @param p_A3 (default value: pc_MultimediaTelephonyService) + * @param p_A8 (default value: pc_IMS_Geolocation) + * @param p_A9 (default value: false) + * @param p_A11 (default value: false) + * @return template (present) MessageHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_InviteRequest_MessageHeaderRX(template (present) MessageHeader p_MessageHeader := cr_MessageHeader_Dummy, + template (present) SipUrl p_ExpectedCalleeUri, + OptionTag_List p_AdditionalOptionTagsForSupported := tsc_OptionTagList_Empty, + INVITE_A_2_1_Context_Type p_Context := A_2_1_A4, + boolean p_A3 := pc_MultimediaTelephonyService, /* @sic R5s130510 additional change 1: tsc_IMS_MTSI replaced by pc_MultimediaTelephonyService sic@ */ + boolean p_A8 := pc_IMS_Geolocation, + boolean p_A9 := false, + boolean p_A11 := false) + runs on IMS_PTC return template (present) MessageHeader + { /* p_A3: MTSI + p_A8: UE uses Geolocation header to provide its geographical location for emergency session setup, has obtained its location and is setting up an emergency session + p_A9: UE supports Session-ID + p_A11: INVITE for creating a video call and UE supports video media feature tag + NOTE1: If SigComp shall be applied the param "comp=sigcomp" is optional for Via, Route and Contact + NOTE2: condition A5 (re-INVITE within a dialog) is not considered yet and will have impact e.g. on checking of the From/To headers */ + /* @sic R5-133629: 100rel option tag shall always be included in INVITE; further option tags may be added => p_Supported replaced by p_AdditionalOptionTagsForSupported; Cleanup of functions for MO Call Setup sic@ */ + /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5s140017 MCC160 implementation: checks for A_2_1_A5 sic@ */ + /* @sic R5-140799: additional parameter p_MessageHeader to deal with Reason header sic@ */ + var boolean v_IsGiba := f_IMS_PTC_SecurityScheme_IsGiba(); // => A1/A2 + var template (present) MessageHeader v_MessageHeader_Invite := p_MessageHeader; + var template (present) RouteBody_List v_RouteBodyList; + var IMS_ProtectedPorts_Type v_Protected; + var template integer v_Port_us := *; + var template integer v_Port_ps := *; + var template DisplayName v_DisplayName := *; + var template (present) SipUrl v_SipUrlFrom := ?; /* per default any SIP URI is accepted in the From header in the first place; + further checks may be applied in f_IMS_A_2_1_Invite_CommonChecks (depending on the conditions acc. to A.2.1 */ + var template (present) charstring v_MediaType := "application/sdp"; + var template (present) CallId v_CallId; + var template (present) integer v_CSeqValue := ?; + var template (present) From v_From; + var template (present) To v_To; + var template SessionId v_SessionId; + var OptionTag_List v_OptionTag_List := tsc_OptionTagList_100rel & p_AdditionalOptionTagsForSupported; + + if (p_Context == A_2_1_A6) { // INVITE for creating an emergency session in case of no registration + // Via, Route, Contact: ports to be used + v_Port_us := ?; + v_Port_ps := tsc_IMS_PortNumber_5060; + // From: Display + v_DisplayName := cr_DisplayName("Anonymous"); /* @sic R5s140005, R5-140901, R5w140111 sic@ */ + } + else { + // Via, Route, Contact: ports to be used + if (not v_IsGiba or (p_Context == A_2_1_A7)) { + v_Protected := f_IMS_PTC_Security_GetProtectedPorts(); + v_Port_us := v_Protected.Port_us; + v_Port_ps := v_Protected.Port_ps; + } + } + + if (p_Context == A_2_1_A5) { /* re-invite @sic R5s140017 MCC160 implementation sic@ */ + v_RouteBodyList := fl_RouteSet_RouteBodyList_RX(); + v_CallId := f_IMS_PTC_ImsInfo_DialogGetCallId(); + v_From := f_IMS_RequestInDialog_FromHeaderRX(); + v_To := f_IMS_RequestInDialog_ToHeaderRX(); + v_CSeqValue := f_IMS_RequestInDialog_CSeqValueRX(); /* @sic R5s140235, R5s140385 change 3 MCC160 implementation sic@ */ + v_SessionId := f_IMS_PTC_ImsInfo_DialogGetSessionId(); + } + else { /* normal case: no re-invite */ + // route body acc. to conditions in A.2.1 + v_RouteBodyList[0] := cr_RouteBody(*, cr_SipUri_HostPort_lr(f_IMS_PTC_Pcscf_Get(), v_Port_ps)); + if (not match(p_Context, (A_2_1_A6, A_2_1_A7))) { // => no emergency call + v_RouteBodyList[1] := cr_RouteBody(*, cr_SipUri_HostPort_lr(px_IMS_Scscf)); + } + if (p_A8) { + v_MessageHeader_Invite.geolocation := cr_GeolocationAny; + v_MessageHeader_Invite.geolocationRouting := cr_GeolocationRoutingSupported; // @sic R5-134798 sic@ + v_MediaType := "multipart/mixed"; + } + v_CallId := cr_CallId(?); + v_From := cr_From(v_DisplayName, v_SipUrlFrom); + v_To := cr_ToDef(p_ExpectedCalleeUri); + v_SessionId := f_IMS_SessionId_RX_IfSupported(p_A9); + } + + v_MessageHeader_Invite.via := f_IMS_InviteRequest_ViaRX(); /* additional checks in f_IMS_A_2_1_Invite_CommonChecks: check of FQDN or IP address + @sic R5-133358: rport is optional for tcp sic@ */ + v_MessageHeader_Invite.route := cr_Route(v_RouteBodyList); + v_MessageHeader_Invite.fromField := v_From; /* additional checks in f_IMS_A_2_1_Invite_CommonChecks: check of FQDN or IP address, check against P-Preferred-Identity header */ + v_MessageHeader_Invite.toField := v_To; /* additional checks in f_IMS_A_2_1_Invite_CommonChecks: check of tag */ + v_MessageHeader_Invite.callId := v_CallId; /* additional checks in f_IMS_A_2_1_Invite_CommonChecks: value acc. to A4 or A5 */ + v_MessageHeader_Invite.sessionId := v_SessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Invite.cSeq := cr_CseqDef(v_CSeqValue, "INVITE"); /* additional checks in f_IMS_A_2_1_Invite_CommonChecks: A5 */ + v_MessageHeader_Invite.supported := cr_Supported(v_OptionTag_List); + v_MessageHeader_Invite.contact := cr_Contact(cr_SipUri_HostPort(?, v_Port_us)); /* additional checks in f_IMS_A_2_1_Invite_CommonChecks: check of FQDN or IP address, check of feature-param for A3, A6, A10, A12 */ + v_MessageHeader_Invite.contentType := cr_ContentType(v_MediaType); + v_MessageHeader_Invite.maxForwards := cr_MaxForwardsDef; + + // additional headers for specific conditions: + if (v_IsGiba or (p_Context == A_2_1_A6)) { + v_MessageHeader_Invite.securityVerify := omit; + if (p_Context == A_2_1_A6) { + v_MessageHeader_Invite.require := omit; + v_MessageHeader_Invite.proxyRequire := omit; + } + } else { // -> A1 or A7 + v_MessageHeader_Invite.securityVerify := f_IMS_PTC_BuildSecurityVerifyHeader(); + if (p_Context != A_2_1_A5) { /* @sic R5s140017 change 9.3 sic@ */ + v_MessageHeader_Invite.require := cr_RequireSecAgree; + v_MessageHeader_Invite.proxyRequire := cr_ProxyRequireDef; + } + } + + if (not v_IsGiba) { + v_MessageHeader_Invite.pAccessNetworkInfo := cr_PAccessNetworkInfoDef(f_IMS_PTC_RanType_GetString()); + } + if (p_Context == A_2_1_A4) { /* @sic R5s140017 change 9.3 sic@ */ + v_MessageHeader_Invite.accept := cr_Accept({cr_AcceptBody("application/sdp"), cr_AcceptBody("application/3gpp-ims+xml"), *}); + } + if (p_A8) { + v_MessageHeader_Invite.geolocation := cr_GeolocationAny; // Checked in f_IMS_A_2_1_Invite_CommonChecks + v_MessageHeader_Invite.geolocationRouting := cr_GeolocationRoutingAny; // Checked in f_IMS_A_2_1_Invite_CommonChecks @sic R5-133151 sic@ + } + + if (p_Context == A_2_1_A7) { + v_MessageHeader_Invite.pPreferredID := cr_PPreferredID(?); // Checked in f_IMS_A_2_1_Invite_CommonChecks + } + if (p_A3 and (p_Context == A_2_1_A4)) { /* @sic R5s140263 change 5, modified by R5-142949 (-> A4 only) sic@ */ + v_MessageHeader_Invite.pPreferredService := cr_PPreferredService(tsc_IMS_FeatureParamValue_3gpp_icsi_ref); /* @sic R5s140565 change 2 sic@ */ + } + if ((p_A3 and (p_Context == A_2_1_A4)) or p_A11) { /* @sic R5-142949 sic@ */ + v_MessageHeader_Invite.acceptContact := cr_AcceptContact; // Checked in f_IMS_A_2_1_Invite_CommonChecks (depending on conditions) + } + + return v_MessageHeader_Invite; + } + + //---------------------------------------------------------------------------- + /* + * @desc PRACK (see TS 34.229, A.2.4) + * @param p_InviteRequest + * @param p_MessageHeader_PrevReliableResponse + * @param p_ContentType (default value: *) + * @return template (present) MessageHeader + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_PrackRequest_MessageHeaderRX(template (value) INVITE_Request p_InviteRequest, + template (value) MessageHeader p_MessageHeader_PrevReliableResponse, + template ContentType p_ContentType := *) runs on IMS_PTC return template (present) MessageHeader + { /* p_MessageHeader_PrevReliableResponse .. MessageHeader of "the reliable response" (e.g. previous 183 response) */ + var MessageHeader v_MessageHeader_PrevReliableResponse := valueof(p_MessageHeader_PrevReliableResponse); + var template (value) MessageHeader v_MessageHeader_Invite := p_InviteRequest.msgHeader; + var template (present) MessageHeader v_MessageHeader_Prack := cr_MessageHeader_Dummy; + var CSeq v_CSeq := v_MessageHeader_PrevReliableResponse.cSeq; + var integer v_CSeqValue := f_IMS_PTC_ImsInfo_CseqIncr(dialogRemote); /* @sic R5s130497 change 3; R5-133188 sic@ */ + var integer v_ResponseNumber := v_MessageHeader_PrevReliableResponse.rSeq.responseNum; /* @sic R5s130333 change 5.2 sic@ */ + + v_MessageHeader_Prack.via := fl_Via_AsInPrevInvite(v_MessageHeader_Invite.via); // @sic R5s120530 change 3.9 sic@ + v_MessageHeader_Prack.route := fl_Route_ReverseOrderOfRecordRouteRX(v_MessageHeader_PrevReliableResponse.recordRoute); + v_MessageHeader_Prack.toField := f_IMS_RequestInDialog_ToHeaderRX(); /* @sic R5s130497 change 1 - MCC160 implementation; R5s140017 MCC160 implementation sic@ */ + v_MessageHeader_Prack.fromField := f_IMS_RequestInDialog_FromHeaderRX(); /* @sic R5s130497 change 1 - MCC160 implementation; R5s140017 MCC160 implementation sic@ */ + v_MessageHeader_Prack.callId := v_MessageHeader_Invite.callId; + v_MessageHeader_Prack.sessionId := v_MessageHeader_Invite.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Prack.cSeq := cr_CseqDef(v_CSeqValue, "PRACK"); + v_MessageHeader_Prack.maxForwards := cr_MaxForwardsDef; + v_MessageHeader_Prack.rAck := cr_RAckDef(v_ResponseNumber, v_CSeq.seqNumber, v_CSeq.method); + v_MessageHeader_Prack.contentType := p_ContentType; + + return v_MessageHeader_Prack; + } + + /* + * @desc UPDATE (see TS 34.229, A.2.5) + * @param p_InviteRequest + * @return template (present) MessageHeader + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_UpdateRequest_MessageHeaderRX(template (value) INVITE_Request p_InviteRequest) + runs on IMS_PTC return template (present) MessageHeader + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + var template (value) MessageHeader v_MessageHeader_Invite := p_InviteRequest.msgHeader; + var template (present) MessageHeader v_MessageHeader_Update := cr_MessageHeader_Dummy; + var template (present) integer v_CSeqValue := f_IMS_RequestInDialog_CSeqValueRX(); + var template (present) RouteBody_List v_RouteBodyList := fl_RouteSet_RouteBodyList_RX(); /* @sic R5s140385 change 3 - MCC160 Implementation: sic@ + In case of MO call establishment the results in f_IMS_PTC_ImsInfo_DialogIsMO + what is the same as used in f_IMS_InviteResponse_183_MessageHeaderTX */ + var template (present) Via v_Via; + + if (f_IMS_PTC_ImsInfo_DialogIsMO()) { /* @sic R5s140385 change 3 - MCC160 Implementation sic@ */ + v_Via := fl_Via_AsInPrevInvite(v_MessageHeader_Invite.via); // @sic R5s120530 change 3.10 sic@ + } else { + v_Via := f_IMS_InviteRequest_ViaRX(); /* @sic R5s140385 change 3 - MCC160 Implementation: same as in INVITE sic@ */ + } + + v_MessageHeader_Update.via := v_Via; + v_MessageHeader_Update.route := cr_Route(v_RouteBodyList); + v_MessageHeader_Update.toField := f_IMS_RequestInDialog_ToHeaderRX(); /* @sic R5s130497 change 1 - MCC160 implementation; R5s140017 MCC160 implementation sic@ */ + v_MessageHeader_Update.fromField := f_IMS_RequestInDialog_FromHeaderRX(); /* @sic R5s130497 change 1 - MCC160 implementation; R5s140017 MCC160 implementation sic@ */ + v_MessageHeader_Update.callId := v_MessageHeader_Invite.callId; + v_MessageHeader_Update.sessionId := v_MessageHeader_Invite.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Update.cSeq := cr_CseqDef(v_CSeqValue, "UPDATE"); + v_MessageHeader_Update.maxForwards := cr_MaxForwardsDef; + v_MessageHeader_Update.contentType := cr_ContentTypeSDP; + + if (not f_IMS_PTC_SecurityScheme_IsGiba()) { + v_MessageHeader_Update.require := cr_RequireSecAgree; + v_MessageHeader_Update.proxyRequire := cr_ProxyRequireDef; + v_MessageHeader_Update.securityVerify := f_IMS_PTC_BuildSecurityVerifyHeader(); + v_MessageHeader_Update.pAccessNetworkInfo := cr_PAccessNetworkInfoDef(f_IMS_PTC_RanType_GetString()); + } else { + v_MessageHeader_Update.securityVerify := omit; + } + + return v_MessageHeader_Update; + } + + /* + * @desc ACK (see TS 34.229, A.2.7) + * @param p_InviteRequest + * @param p_StatusLine_PrevResponse + * @param p_IsEmergency (default value: false) + * @param p_IsReInvite (default value: false) + * @return template (present) MessageHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_AckRequest_MessageHeaderRX(template (value) INVITE_Request p_InviteRequest, + template (value) StatusLine p_StatusLine_PrevResponse, + boolean p_IsEmergency := false, + boolean p_IsReInvite := false) + runs on IMS_PTC return template (present) MessageHeader + { /* @sic R5s130684: p_StatusLine_PrevResponse made mandatory, p_MessageHeader_PrevResponse removed, new parameter p_IsGiba sic@ */ + /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5s130897 change 2: new parameter p_IsEmergency sic@ */ + /* @sic R5-141115: new parameter p_IsReInvite sic@ */ + var template (value) MessageHeader v_MessageHeader_Invite := p_InviteRequest.msgHeader; + var template (present) MessageHeader v_MessageHeader_Ack := cr_MessageHeader_Dummy; + var integer v_CSeqValue := f_MessageHeader_GetCseqValue(v_MessageHeader_Invite); + var integer v_StatusCode := valueof(p_StatusLine_PrevResponse.statusCode); + var boolean v_Is2xxResponse := not ((v_StatusCode < 200) or (v_StatusCode > 299)); // @sic R5s140264: missing braces sic@ + var template RouteBody_List v_RouteBodyList; + + if (p_IsReInvite or not v_Is2xxResponse) { /* @sic R5-141115 sic@ */ + v_RouteBodyList := p_InviteRequest.msgHeader.route.routeBody; /* @sic R5-134958, R5s130885: use the Route header of the INVITE in case of e.g. 5XX responses (see RFC 3261 cl. 17.1.1.3) sic@ */ + } else { + v_RouteBodyList := fl_RouteSet_RouteBodyList_RX(p_IsEmergency); /* @sic R5s130684: same as for 180 or 183 response in reverse order sic@ + @sic R5s130897 change 3 sic@ + @sic R5s140017 MCC160 implementation: re-INVITE - Route is different for MO and MT calls sic@ */ + } + + if (v_Is2xxResponse) { /* @sic R5-130682: ACK for 2xx response sic@ */ + v_MessageHeader_Ack.via := fl_Via_AsInPrevInvite(v_MessageHeader_Invite.via); + } else { /* @sic R5-130682: ACK for non-2xx response sic@ */ + v_MessageHeader_Ack.via := v_MessageHeader_Invite.via; + } + + v_MessageHeader_Ack.route := cr_Route(v_RouteBodyList); + v_MessageHeader_Ack.toField := f_IMS_RequestInDialog_ToHeaderRX(); /* @sic R5s130497 change 1 - MCC160 implementation; R5-133303; R5s140017 MCC160 implementation sic@ */ + v_MessageHeader_Ack.fromField := f_IMS_RequestInDialog_FromHeaderRX(); /* @sic R5s130497 change 1 - MCC160 implementation; R5-133303; R5s140017 MCC160 implementation sic@ */ + v_MessageHeader_Ack.callId := v_MessageHeader_Invite.callId; + v_MessageHeader_Ack.sessionId := v_MessageHeader_Invite.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Ack.cSeq := cr_CseqDef(v_CSeqValue, "ACK"); + v_MessageHeader_Ack.maxForwards := cr_MaxForwardsDef; + v_MessageHeader_Ack.pAccessNetworkInfo := omit; + + return v_MessageHeader_Ack; + } + + /* + * @desc BYE (see TS 34.229, A.2.8) + * @param p_InviteRequest + * @param p_IsEmergency (default value: false) + * @return template (present) MessageHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A) + */ + function f_IMS_ByeRequest_MessageHeaderRX(template (value) INVITE_Request p_InviteRequest, + boolean p_IsEmergency := false) runs on IMS_PTC return template (present) MessageHeader + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5s130754 change 3: p_IsEmergency sic@ */ + var template (value) MessageHeader v_MessageHeader_Invite := p_InviteRequest.msgHeader; + var template (present) MessageHeader v_MessageHeader_Bye := cr_MessageHeader_Dummy; + var integer v_CSeqValue := f_IMS_PTC_ImsInfo_CseqIncr(dialogRemote); + var boolean v_SecurityIsStarted := f_IMS_PTC_Security_IsStarted(); /* @sic R5s130988 Change 2-5 - MCC160 Implementation sic@ */ + var template (present) RouteBody_List v_RouteBodyList; + var template (present) Via v_Via; + + if (not fl_IMS_InviteRequestIsMO(p_InviteRequest)) { /* @sic R5-134116: sic@ + in case of MT call establishment the INVITE sent to the UE contains a Record-Route header with a valid route set */ + v_Via := f_IMS_InviteRequest_ViaRX(); + } else { /* in case of MO call establishment the route set as for the 183 response shall be used (in reverse order) */ + v_Via := fl_Via_AsInPrevInvite(v_MessageHeader_Invite.via) + } + v_RouteBodyList := fl_RouteSet_RouteBodyList_RX(p_IsEmergency); /* @sic R5s140017 MCC160 implementation: re-INVITE - Route is different for MO and MT calls sic@ */ + + v_MessageHeader_Bye.via := v_Via; + v_MessageHeader_Bye.route := cr_Route(v_RouteBodyList); + v_MessageHeader_Bye.toField := f_IMS_RequestInDialog_ToHeaderRX(); /* @sic R5s130497 change 1 - MCC160 implementation; R5s140017 MCC160 implementation sic@ */ + v_MessageHeader_Bye.fromField := f_IMS_RequestInDialog_FromHeaderRX(); /* @sic R5s130497 change 1 - MCC160 implementation; R5s140017 MCC160 implementation sic@ */ + v_MessageHeader_Bye.callId := v_MessageHeader_Invite.callId; + v_MessageHeader_Bye.sessionId := v_MessageHeader_Invite.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Bye.cSeq := cr_CseqDef(v_CSeqValue, "BYE"); + v_MessageHeader_Bye.maxForwards := cr_MaxForwardsDef; + + if (v_SecurityIsStarted) { /* @sic R5s130988 Change 2-5 - MCC160 Implementation sic@ */ + v_MessageHeader_Bye.require := cr_RequireSecAgree; + v_MessageHeader_Bye.proxyRequire := cr_ProxyRequireDef; + v_MessageHeader_Bye.securityVerify := f_IMS_PTC_BuildSecurityVerifyHeader(); + v_MessageHeader_Bye.pAccessNetworkInfo := cr_PAccessNetworkInfoDef(f_IMS_PTC_RanType_GetString()); + } else { + v_MessageHeader_Bye.securityVerify := omit; + } + + return v_MessageHeader_Bye; + } + + //============================================================================ + // Check functions + //---------------------------------------------------------------------------- + /* + * @desc check whether call-id has been used previously + * @param p_MessageHeader + * @param p_PrevCallIds + * @status APPROVED (IMS) + */ + function f_IMS_MessageHeader_CheckCallId(MessageHeader p_MessageHeader, + CharStringList_Type p_PrevCallIds) runs on IMS_PTC + { + var integer i; + + for (i:=0; i < lengthof(p_PrevCallIds); i:=i+1) { + if (match(p_MessageHeader.callId.callid, p_PrevCallIds[i])) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "invalid 'CallId': has already been used in previous request)"); + } + } + } + + /* + * @desc Additional checks of the INVITE acc. to A.2.1 + * @param p_IMS_INVITE_REQ + * @param p_Context (default value: A_2_1_A4) + * @param p_A3 (default value: false) + * @param p_A8 (default value: false) + * @param p_A10 (default value: false) + * @param p_A11 (default value: false) + * @param p_SrvccAlertingSupported (default value: pc_IMS_SRVCCAlert) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_A_2_1_Invite_CommonChecks(IMS_DATA_REQ p_IMS_INVITE_REQ, + INVITE_A_2_1_Context_Type p_Context := A_2_1_A4, + boolean p_A3 := false, + boolean p_A8 := false, + boolean p_A10 := false, + boolean p_A11 := false, + boolean p_SrvccAlertingSupported := pc_IMS_SRVCCAlert) runs on IMS_PTC + { // p_A12 .. shall be pc_IMS_SRVCCAlert for voice call; needs to be set to false for non-voice calls + /* @sic R5-133276, R5-133301 Cleanup of functions for MO Call Setup sic@ */ + /* @sic R5s140370 change 7: pc_IMS_SRVCCAlert default value for p_A12, p_A12 renamed to p_SrvccAlertingSupported sic@ */ + var MessageHeader v_MessageHeader := p_IMS_INVITE_REQ.Request.Invite.msgHeader; + var SemicolonParam_List v_ContactParams := {}; + var SemicolonParam_List v_AcceptContactParams := {}; + var InternetProtocol_Type v_Protocol := p_IMS_INVITE_REQ.RoutingInfo.Protocol; + var SipUrl v_SipUrlFrom := f_Addr_Union_GetSipUrl(v_MessageHeader.fromField.addressField); + var SipUrl v_SipUrlPreferred; + var template SipUrl v_ExpectedFromUrl := omit; + var PPreferredIDValue_List v_PreferredIDValueList; + var CharStringList_Type v_PreferredPublicUserIdList; + var boolean v_AllowFQDN := (p_Context != A_2_1_A6); // for A6 there is no FQDN for the UE + var boolean v_CheckRport := (p_Context == A_2_1_A6); + var boolean v_A12 := p_SrvccAlertingSupported and (p_Context != A_2_1_A5); /* @sic R5s140370 change 7 sic@ */ + var integer i; + var charstring v_IMEI; + var template (present) GenValue v_SipInstanceValue; + + if (ispresent(v_MessageHeader.contact.contactBody.contactAddresses[0].contactParams)) { + v_ContactParams := v_MessageHeader.contact.contactBody.contactAddresses[0].contactParams; + } + if (ispresent(v_MessageHeader.acceptContact.acValues[0].acRcParams)) { + v_AcceptContactParams := v_MessageHeader.acceptContact.acValues[0].acRcParams; + } + + // **** Common checks **** + f_IMS_MessageHeader_Request_CheckVia(v_MessageHeader, v_Protocol, v_AllowFQDN, v_CheckRport); // check whether via contains "SIP URI with IP address or FQDN" (see @sic R5s120727 sic@) + f_IMS_MessageHeader_CheckContactAddr(v_MessageHeader); // check whether contact contains "SIP URI with IP address or FQDN" (see @sic R5s120727 sic@) + if (p_Context != A_2_1_A5) { + f_IMS_MessageHeader_CheckTo(v_MessageHeader, noToTag); // check that there is no To tag + } + + // **** Check URIs in From header, P-Preferred-Identity header and further headers **** + select (p_Context) { + case (A_2_1_A4) { + // Check Call-Id + if (match(v_MessageHeader.callId.callid, f_IMS_PTC_ImsInfo_GetCallIdRegistration())) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "A.2.1 condition A4: invalid 'CallId' in INVITE (has to be different than in previous REGISTER)"); + } + // Additional checks regarding SIP URI in the From header @sic R5-130750 change 3 sic@ + if (not f_IMS_PublicUserId_Match(f_IMS_PTC_ImsInfo_GetAllIMPUs(), v_SipUrlFrom)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "invalid 'From'"); + } + if (ispresent(v_MessageHeader.pPreferredID.pPreferredIDValueList)) { + v_PreferredIDValueList := v_MessageHeader.pPreferredID.pPreferredIDValueList; + for (i:=0; i < lengthof(v_PreferredIDValueList); i := i+1) { + v_PreferredPublicUserIdList[i] := f_SIP_SipUrl_GetPublicUserIdentity(f_Addr_Union_GetSipUrl(v_PreferredIDValueList[i])); + } + if (not f_IMS_PublicUserId_Match(v_PreferredPublicUserIdList, v_SipUrlFrom)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "A.2.1 condition A4: invalid 'From': does not match with P-Preferred-Identity"); + } + } + } + case (A_2_1_A5) { + /* @sic R5s140017 MCC160 implementation: no further checks for A5 are needed in this function anymore sic@ */ + } + case (A_2_1_A6) { + v_IMEI := hex2str(px_IMEI_Def); // @sic R5s130756 change 11 sic@ + v_SipInstanceValue := cr_GenValueQuoted(""); /* @sic R5w140111: GenValue sic@ */ + if (not match(v_ContactParams, cr_SemicolonParam_List_OneSpecificParam("+sip.instance", v_SipInstanceValue))) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "IMEI code of the UE, coded as specified in draft-montemurro-gsma-imei-urn, not matching"); + } + } + case (A_2_1_A7) { + v_ExpectedFromUrl := f_IMS_PTC_ImsInfo_GetSipUriRX(emergencyId, *); + if (not match(v_SipUrlFrom, v_ExpectedFromUrl)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "A.2.1 condition A7: invalid 'From'"); + } + v_SipUrlPreferred := f_Addr_Union_GetSipUrl(v_MessageHeader.pPreferredID.pPreferredIDValueList[0]); + if (not match(v_SipUrlPreferred, v_ExpectedFromUrl)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "A.2.1 condition A7: invalid 'P-Preferred-Identity'"); + } + } + case else { + FatalError(__FILE__, __LINE__, "unknown context"); + } + } + + // **** Check further Contact feature-param acc. to further conditions of A.2.1: **** + // + if (p_A3) { // A.1.2 condition A3: MTSI + if (not match(v_ContactParams, cr_FeatureParam_3gpp_icsi_ref)) { // @sic R5s130738: string needs to be quoted; R5-142247 sic@ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "A.2.1 condition A3: Missing feature-param in Contact header"); + } + if (p_Context == A_2_1_A4) { // @sic R5-142949 sic@ + if (not match(v_AcceptContactParams, cr_FeatureParam_3gpp_icsi_ref)) { // @sic R5s130738: string needs to be quoted; R5-142247 sic@ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "A.2.1 condition A3: Missing feature-param in AcceptContact header"); + } + } + } + if (p_A8) { // A.1.2 condition A8: check geolocation and geolocationRouting @sic R5-133151 sic@ + /* NOTE: v_MessageHeader.geolocation and geolocationRouting are checked already by template returned by f_IMS_InviteRequest_MessageHeaderRX: + * geolocation and geolocationRouting to be present. @sic R5-133151 sic@ */ + if (not match(v_MessageHeader.geolocationRouting.state, GEOLOCATION_ROUTING_YES_E)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "A.2.1 condition A8: Wrong geolocation-routing"); + } + } + if (p_A10) { // A.1.2 condition A10: UE indicates video media feature tag in REGISTER and INVITE request + if (not match(v_ContactParams, cr_VideoInContactParams)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "A.2.1 condition A10: Missing feature-param"); + } + } + if (p_A11) { // A.1.2 condition A11: INVITE for creating a video call and UE supports video media feature tag + if (not match(v_AcceptContactParams, cr_VideoInContactParams)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "A.2.1 condition A11: Missing feature-param"); + } + } + if (v_A12) { // A.1.2 condition A12: INVITE for creating a voice call and UE supports g.3gpp.srvcc-alerting media feature tag + if (not match(v_ContactParams, cr_SemicolonParam_List_OneSpecificParamNoValue(tsc_IMS_FeatureCap_SrvccAlerting))) { /* @sic R5s140370 change 7: tsc_IMS_FeatureCap_SrvccAlerting sic@ */ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "A.2.1 condition A12: Missing feature-param"); + } + } + } + + //---------------------------------------------------------------------------- + /* + * @desc Check Geolocation header (if any) + * @param p_MessageBody + * @param p_SDP_MessageTemplate + * @param p_GeolocationInfoAvailable (default value: false) + * @return SDP_Message + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_MessageBody_CheckSdpMessageAndGeolocation(MessageBody p_MessageBody, + template (present) SDP_Message p_SDP_MessageTemplate, + boolean p_GeolocationInfoAvailable := false) runs on IMS_PTC return SDP_Message + { /* @sic R5w140112: new parameter p_SDP_MessageTemplate sic@ */ + var SdpBody v_SdpBody; + var MimeEncapsulatedList v_MimeEncapsulatedList; + var Geolocation_Type v_Geolocation; + var PIDF_Presence_Type v_Presence; + var PIDF_Status_ElemList_Type v_Status_ElemList; + var charstring v_XmlBody; + var bitstring v_BitStr; + + if (p_GeolocationInfoAvailable) { + if (not ispresent(p_MessageBody.mimeMessageBody.mimeEncapsulatedList) and + lengthof(p_MessageBody.mimeMessageBody.mimeEncapsulatedList) != 2) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid Invite body"); + } + v_MimeEncapsulatedList := p_MessageBody.mimeMessageBody.mimeEncapsulatedList; + if (ischosen(v_MimeEncapsulatedList[0].mime_encapsulated_part.sdpMessageBody)) { + v_SdpBody := v_MimeEncapsulatedList[0].mime_encapsulated_part.sdpMessageBody; + v_XmlBody := v_MimeEncapsulatedList[1].mime_encapsulated_part.xmlBody; + } else { + v_SdpBody := v_MimeEncapsulatedList[1].mime_encapsulated_part.sdpMessageBody; + v_XmlBody := v_MimeEncapsulatedList[0].mime_encapsulated_part.xmlBody; + } + + // Check PDIF + v_BitStr := oct2bit(char2oct(v_XmlBody)); + if (decvalue(v_BitStr, v_Presence) != 0) { + FatalError(__FILE__, __LINE__, "Presence (PIDF) cannot be decoded"); + } + if (not match (v_Presence, cr_PIDF_Presence_Any)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Presence (PIDF) does not match"); + } + + // Check PDIF-LO see RFC 4119 cl. 2.2 + // extends the 'status' element of PIDF with a complex element called 'geopriv' + // There are two major subelements that are encapsulated within geopriv: one for location information, and one for usage rules + if (not ispresent(v_Presence.tuple_list[0].status.elem_list)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Presence.tuple_list[0].status.elem_list not present"); // + } + else { + v_Status_ElemList := v_Presence.tuple_list[0].status.elem_list; + } + v_BitStr := oct2bit(char2oct(v_Status_ElemList[0])); // first of 1 or more geopriv elements + + if (decvalue(v_BitStr, v_Geolocation) != 0) { + FatalError(__FILE__, __LINE__, "Geolocation cannot be decoded"); + } + // The PIDF-LO shall contain at least the following elements: (34.229-1 cl. A.2.1) + // - One or more 'geopriv' elements, each containing: + // - One 'location-info' element describing the location of the UE; and + // - One 'usage-rules' element describing the limitations of the usage of the location info. + if (not match (v_Geolocation, cr_Geolocation_Any)) { // 1st geopriv element is checked: well structured information is matched, not the contents + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Geolocation does not match"); + } + } else { + v_SdpBody := p_MessageBody.sdpMessageBody; + } + return f_IMS_SIP_DecodeMatchAndCheckSDP(v_SdpBody, p_SDP_MessageTemplate); + } + + //============================================================================ + // Common functions for Call Control acc. to 34.229-1 Annex C + //---------------------------------------------------------------------------- + /* + * @desc Common function to receive and check INVITE + * when the INVITE is optional a wait duration shall be given + * @param p_Context (default value: A_2_1_A4) + * @param p_MessageHeader (default value: cr_MessageHeader_Dummy) + * @param p_AdditionalOptionTagsForSupported (default value: tsc_OptionTagList_Empty) + * @param p_OtherCalleeUri (default value: omit) + * @param p_WaitDuration (default value: omit) + * @param p_A3 (default value: pc_MultimediaTelephonyService) + * @param p_A8 (default value: pc_IMS_Geolocation) + * @param p_A9 (default value: false) + * @param p_A10 (default value: false) + * @param p_A11 (default value: false) + * @param p_SrvccAlertingSupported (default value: pc_IMS_SRVCCAlert) + * @return template (omit) IMS_DATA_REQ + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_INVITE_ReceiveRequest_Common(INVITE_A_2_1_Context_Type p_Context := A_2_1_A4, + template (present) MessageHeader p_MessageHeader := cr_MessageHeader_Dummy, + OptionTag_List p_AdditionalOptionTagsForSupported := tsc_OptionTagList_Empty, + template (omit) charstring p_OtherCalleeUri := omit, + template (omit) float p_WaitDuration := omit, + boolean p_A3 := pc_MultimediaTelephonyService, /* @sic R5s130510 additional change 1: tsc_IMS_MTSI replaced by pc_MultimediaTelephonyService sic@ */ + boolean p_A8 := pc_IMS_Geolocation, + boolean p_A9 := false, + boolean p_A10 := false, + boolean p_A11 := false, + boolean p_SrvccAlertingSupported := pc_IMS_SRVCCAlert) + runs on IMS_PTC return template (omit) IMS_DATA_REQ + { /* p_OtherCalleeUri .. if present to be used as CalleeUri; if omit default CalleeUri is used acc. to PIXITs and cntext */ + /* @sic R5-133276, R5-133301 Cleanup of functions for MO Call Setup sic@ */ + /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5-140799: additional parameter p_MessageHeader to deal with Reason header sic@ */ + /* @sic R5s140370 change 7: pc_IMS_SRVCCAlert default value for p_A12, p_A12 renamed to p_SrvccAlertingSupported sic@ */ + var IMS_DATA_REQ v_IMS_DATA_REQ; + var template (present) MessageBody v_MessageBody := f_SIP_MessageBodySDP_RX(p_A8); /* @sic R5w140112 sic@ */ + var template (present) MessageHeader v_MessageHeader_Invite; + var template (present) SipUrl v_ExpectedCalleeUri; + var boolean v_TimerControl := ispresent(p_WaitDuration); + timer t_Timer; + + if (ispresent(p_OtherCalleeUri)) { + v_ExpectedCalleeUri := f_SIP_BuildSipUri_RX(valueof(p_OtherCalleeUri)); + } else { + select (p_Context) { + case (A_2_1_A4) { // A4: INVITE creating a dialog + v_ExpectedCalleeUri := f_SIP_BuildSipUri_RX(px_IMS_CalleeUri); + } + case (A_2_1_A5) { // A5: re-INVITE + v_ExpectedCalleeUri := f_SIP_BuildSipUri_RX(px_IMS_CalleeContactUri, *); /* @sic R5s140020 change 8.1 sic@ */ + } + case (A_2_1_A6, A_2_1_A7) { // A6, A7: emergency call + v_ExpectedCalleeUri := cr_SipUrl_Common(c_urnScheme, cr_SipUrl_SOS); + } + case else { + FatalError(__FILE__, __LINE__, ""); + } + } + } + v_MessageHeader_Invite := f_IMS_InviteRequest_MessageHeaderRX(p_MessageHeader, v_ExpectedCalleeUri, p_AdditionalOptionTagsForSupported, p_Context, p_A3, p_A8, p_A9, p_A11); + + if (v_TimerControl) { + t_Timer.start(valueof(p_WaitDuration)); + } + alt { + [] IMS_Server.receive(car_IMS_Invite_Request(cr_INVITE_Request(v_ExpectedCalleeUri, v_MessageHeader_Invite, v_MessageBody))) -> value v_IMS_DATA_REQ + { + t_Timer.stop; + if (p_Context == A_2_1_A6) { // emergency call without registration @sic R5s130756 change 14 sic@ + f_IMS_PTC_ImsInfo_Init(v_IMS_DATA_REQ.RoutingInfo.UE_Address, v_IMS_DATA_REQ.RoutingInfo.NW_Address); + } + f_IMS_A_2_1_Invite_CommonChecks(v_IMS_DATA_REQ, p_Context, p_A3, p_A8, p_A10, p_A11, p_SrvccAlertingSupported); + if (p_Context != A_2_1_A5) { /* @sic R5s140020 change 8.2 sic@ */ + f_IMS_PTC_ImsInfo_DialogInit(dialogRemote, v_IMS_DATA_REQ.Request.Invite.msgHeader); + } else { + if (not isvalue(f_IMS_PTC_ImsInfo_CseqGet(dialogRemote))) { /* @sic R5s140235 sic@ */ + f_IMS_PTC_ImsInfo_CseqSet(dialogRemote, v_IMS_DATA_REQ.Request.Invite.msgHeader.cSeq.seqNumber); + } + } + return v_IMS_DATA_REQ; + } + [v_TimerControl] t_Timer.timeout {} + } + return omit; + } + + /* + * @desc Common function to receive and check INVITE + * @param p_Context (default value: A_2_1_A4) + * @param p_AdditionalOptionTagsForSupported (default value: tsc_OptionTagList_Empty) + * @param p_OtherCalleeUri (default value: omit) + * @param p_A3 (default value: pc_MultimediaTelephonyService) + * @param p_A8 (default value: pc_IMS_Geolocation) + * @param p_A9 (default value: false) + * @param p_A10 (default value: false) + * @param p_A11 (default value: false) + * @param p_SrvccAlertingSupported (default value: pc_IMS_SRVCCAlert) + * @return IMS_DATA_REQ + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_IRAT) + */ + function f_IMS_INVITE_ReceiveRequest(INVITE_A_2_1_Context_Type p_Context := A_2_1_A4, + OptionTag_List p_AdditionalOptionTagsForSupported := tsc_OptionTagList_Empty, + template (omit) charstring p_OtherCalleeUri := omit, + boolean p_A3 := pc_MultimediaTelephonyService, /* @sic R5s130510 additional change 1: tsc_IMS_MTSI replaced by pc_MultimediaTelephonyService sic@ */ + boolean p_A8 := pc_IMS_Geolocation, + boolean p_A9 := false, + boolean p_A10 := false, + boolean p_A11 := false, + boolean p_SrvccAlertingSupported := pc_IMS_SRVCCAlert) + runs on IMS_PTC return IMS_DATA_REQ + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5s140370 change 7: pc_IMS_SRVCCAlert default value for p_A12, p_A12 renamed to p_SrvccAlertingSupported sic@ */ + var template (omit) float v_WaitDuration := omit; // no wait duration + var template (omit) IMS_DATA_REQ v_IMS_DATA_REQ; + v_IMS_DATA_REQ := f_IMS_INVITE_ReceiveRequest_Common(p_Context, -, p_AdditionalOptionTagsForSupported, p_OtherCalleeUri, v_WaitDuration, p_A3, p_A8, p_A9, p_A10, p_A11, p_SrvccAlertingSupported); + return valueof(v_IMS_DATA_REQ); // as we don't have any WaitDuration f_IMS_INVITE_ReceiveRequest_Common returns a value (omit could only occur when a timer expires) + } + + /* + * @desc MT Call release acc. to 34.229-1 C.33 + * @param p_InviteRequest + * @param p_ContactSipUrl + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_CallReleaseMT(template (value) INVITE_Request p_InviteRequest, + SipUrl p_ContactSipUrl) runs on IMS_PTC + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + var template (value) MessageHeader v_MessageHeader_Bye; + var InternetProtocol_Type v_Protocol := f_IMS_PTC_ImsInfo_GetTransportProtocol(); + + // The SS sends BYE to release the call + v_MessageHeader_Bye := f_IMS_ByeRequest_MessageHeaderTX(p_InviteRequest); + IMS_Client.send(cas_IMS_BYE_Request(cs_IMS_RoutingInfo(v_Protocol), cs_BYE_Request(p_ContactSipUrl, v_MessageHeader_Bye))); + + // The UE sends 200 OK for the BYE request and ends the call. + f_IMS_ReceiveResponse(v_MessageHeader_Bye, v_Protocol, cr_Response(c_statusLine200, f_IMS_OtherResponse_200_MessageHeaderRX(v_MessageHeader_Bye))); /* @sic R5s140350 sic@ */ + + f_IMS_PTC_ImsInfo_DialogRelease(); /* there is no dialog anymore; @sic R5s140017 MCC160 implementation sic@ */ + } + + /* + * @desc MO Call release scc. to 34.229-1 C.32 + * @param p_InviteRequest + * @param p_ContactSipUrl (default value: f_SIP_BuildSipUri_RX(px_IMS_CalleeContactUri)) + * @param p_IsEmergency (default value: false) + * @param p_AutonomousCallRelease (default value: false) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A) + */ + function f_IMS_CallReleaseMO(template (value) INVITE_Request p_InviteRequest, + template (present) SipUrl p_ContactSipUrl := f_SIP_BuildSipUri_RX(px_IMS_CalleeContactUri), + boolean p_IsEmergency := false, + boolean p_AutonomousCallRelease := false) runs on IMS_PTC + { /* @sic R5s130333 change 6 - new parameter p_ContactUri sic@ */ + /* @sic R5-134116: parameter p_RecordRouteOfPrevResponse removed sic@ */ + /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5s130754 change 3: p_IsEmergency sic@ */ + /* @sic R5s140370 change 14: p_AutonomousCallRelease sic@ */ + var IMS_DATA_REQ v_IMS_DATA_REQ; + var template (value) IMS_RoutingInfo_Type v_RoutingInfo; + var template (present) MessageHeader v_MessageHeader_Bye; + + if (not p_AutonomousCallRelease) { + f_UT_HangupIMSCall(MMI); /* @sic R5s130333 change 20, R5-134290 sic@ */ + } + + // --- Receive BYE + v_MessageHeader_Bye := f_IMS_ByeRequest_MessageHeaderRX(p_InviteRequest, p_IsEmergency); + IMS_Server.receive(car_IMS_Bye_Request(cr_BYE_Request(p_ContactSipUrl, v_MessageHeader_Bye))) -> value v_IMS_DATA_REQ; + f_IMS_MessageHeader_Request_CheckVia(v_IMS_DATA_REQ.Request.Bye.msgHeader, v_IMS_DATA_REQ.RoutingInfo.Protocol); /* @sic R5-134116: additional check of Via header sic@ */ + + // --- Send 200 OK + v_RoutingInfo := f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo); + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo, cs_Response(c_statusLine200, f_IMS_OtherResponse_200_MessageHeaderTX(v_IMS_DATA_REQ.Request.Bye.msgHeader)))); + + f_IMS_PTC_ImsInfo_DialogRelease(); /* there is no dialog anymore; @sic R5s140017 MCC160 implementation sic@ */ + } + + + /* + * @desc Emergency Call release (wrapper function) + * @param p_InviteRequest + * @status APPROVED (IMS, IMS_IRAT, LTE) + */ + function f_IMS_EmergencyCallRelease(INVITE_Request p_InviteRequest) runs on IMS_PTC + { + f_IMS_CallReleaseMO(p_InviteRequest, -, true); + f_IMS_TCP_CloseHandling(waitAndClose); /* @sic R5s130988 change 1 - MCC160 implementation sic@ + * @sic R5s140219 - additional changes sic@ + * NOTE: for emergency call there is no user-initiated emergency deregistration (see 24.229 cl. 5.1.6.6); + * nevertheless as working assumption the UE is expected to close its TCP (client) connection and if not it is closed by the IP_PTC; + * this may cause issues when - for what reason ever - the UE wants to re-open the TCP connction ("WAIT TIME" acc. to RFC 793 clause 3.2, figure 6; see R5w140110); + * but even if we would keep the UE's client connection any SS' client connection shall be closed (cuurently we don't distinguish these but close all) */ + } + + //---------------------------------------------------------------------------- + /* + * @desc Emergency speech call setup according to 34.229-1 Annex C.22 + * @param p_Context (default value: A_2_1_A7) + * @param p_GeolocationInfoAvailable (default value: false) + * @param p_OtherCalleeUri (default value: omit) + * @return INVITE_Request + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_IRAT) + */ + function f_IMS_EmergencyCallSetup_AnnexC22(INVITE_A_2_1_Context_Type p_Context := A_2_1_A7, + boolean p_GeolocationInfoAvailable := false, + template (omit) charstring p_OtherCalleeUri := omit) runs on IMS_PTC return INVITE_Request + { /* p_Context .. A_2_1_A6 (INVITE for creating an emergency session in case of no registration) or + * A_2_1_A7 (INVITE for creating an emergency session within an emergency registration) */ + /* @sic R5s130988 change 6/7: sic@ + * in case of A_2_1_A6 there has been no registration beforehand and therefore we don't know whether the UE uses IPv4 or IPv6 + * => we cannot setup any address information before we have received the INVITE + * => as the SDP message at step 1 contains address information we cannot build up the template in advance but need to match after the INVITE has been received */ + /* @sic R5-140920: additional parameter p_OtherCalleeUri sic@ */ + var IMS_DATA_REQ v_IMS_DATA_REQ; + var template(value) IMS_RoutingInfo_Type v_RoutingInfo_DL; + var template (present) SipUrl v_CalleeContactSipUri; + + var INVITE_Request v_InviteRequest; + var template (value) MessageHeader v_MessageHeader_InviteResponse_200; + var template (present) MessageHeader v_MessageHeader_Ack; + var template (present) SDP_Message v_SDP_Message_Step1; + var template (value) SDP_Message v_SDP_Message_Step4; + var SDP_Message v_SDP_Message; + var boolean v_IsEmergency := true; + var boolean v_PrackRequiredFor180Ringing := false; /* => there is no PRACK expected to acknowledge the 180 response */ + var charstring v_FmtAudio; + + // Step 1. Receive INVITE for an Emergency call + v_IMS_DATA_REQ := f_IMS_INVITE_ReceiveRequest(p_Context, -, p_OtherCalleeUri, -, p_GeolocationInfoAvailable); + v_InviteRequest := v_IMS_DATA_REQ.Request.Invite; + v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo); + + v_SDP_Message_Step1 := f_IMS_BuildSDP_AnnexC22_Step1(); /* @sic R5s130988 change 6/7: has to be done after the INVITE has been received and the address information has been initialised even for A_2_1_A6 sic@ */ + v_SDP_Message := f_IMS_MessageBody_CheckSdpMessageAndGeolocation(v_InviteRequest.messageBody, v_SDP_Message_Step1, p_GeolocationInfoAvailable); /* @sic R5w140112 sic@ sic@ */ + + v_FmtAudio := f_SDP_MediaDescr_GetAMR_Any(v_SDP_Message.media_list[0]); /* any AMR codec is acceptable @sic R5-134795 sic@ */ + if (v_FmtAudio == "") { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "no AMR codec found in given media description"); + } + + // Step 2. SS sends a 100 Trying provisional response. + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine100, f_IMS_InviteResponse_100_MessageHeaderTX(v_InviteRequest)))); + + // Step 3. SS sends a 180 Ringing. + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine180, f_IMS_InviteResponse_180_MessageHeaderTX(v_InviteRequest, -, v_PrackRequiredFor180Ringing, v_IsEmergency)))); + + // Step 4. SS responds to the invite INVITE with 200 OK including the SDP record. + v_SDP_Message_Step4 := f_IMS_BuildSDP_AnnexC22_Step4(v_FmtAudio, v_SDP_Message.origin.addr); + v_MessageHeader_InviteResponse_200 := f_IMS_OtherResponse_200_MessageHeaderTX(v_InviteRequest.msgHeader, cs_ContentTypeSDP, tsc_IMS_Emergency_TelUri); + v_CalleeContactSipUri := f_Addr_Union_GetSipUrl(v_MessageHeader_InviteResponse_200.contact.contactBody.contactAddresses[0].addressField); + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine200, v_MessageHeader_InviteResponse_200, cs_MessageBody_SDP(v_SDP_Message_Step4)))); + + // Step 5. Finally, UE acknowledges call setup. + v_MessageHeader_Ack := f_IMS_AckRequest_MessageHeaderRX(v_InviteRequest, c_statusLine200, v_IsEmergency); // @sic R5s130897 change 2 sic@ + IMS_Server.receive(car_IMS_Ack_Request(cr_ACK_Request(v_CalleeContactSipUri, v_MessageHeader_Ack))); + return v_InviteRequest; + } + + //============================================================================ + // Common MT call setup (used for C.11, C.26 and in test cases) + //---------------------------------------------------------------------------- + /* + * @desc MT speech/video call setup according to 34.229-1 Annex C.11, C.26, steps 3 to 4. + * return SessionInProgress183 received in step 4 + * @param p_InviteRequestStep1 + * @param p_SDP_MessageStep4 + * @param p_Protocol + * @return IMS_ResponseWithSdp_Type + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_MTCallSetup_Common_Steps3_4(template (value) INVITE_Request p_InviteRequestStep1, + template (present) SDP_Message p_SDP_MessageStep4, + InternetProtocol_Type p_Protocol) runs on IMS_PTC return IMS_ResponseWithSdp_Type + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5w140112: returns IMS_ResponseWithSdp_Type instead of IMS_Response_Type sic@ */ + var IMS_DATA_RSP v_IMS_DATA_RSP; + var boolean v_Trying := false; + var MessageHeader v_MessageHeader; + var SDP_Message v_SDP_Message; + var IMS_Response_Type v_SessionInProgress183; + + alt { + // Step 3 - Receive optional 100 Trying + [not v_Trying] a_IMS_ReceiveResponse(p_InviteRequestStep1.msgHeader, + p_Protocol, + cr_Response(c_statusLine100, f_IMS_InviteResponse_100_MessageHeaderRX(p_InviteRequestStep1)), + v_IMS_DATA_RSP) /* @sic R5s140350: v_IMS_DATA_RSP is 'out' parameter sic@ */ + { + v_Trying := true; + repeat; + } + // Step 4 - Receive 183 Session in Progress + [] a_IMS_ReceiveResponse(p_InviteRequestStep1.msgHeader, + p_Protocol, + cr_Response(c_statusLine183, + f_IMS_InviteResponse_183_MessageHeaderRX(p_InviteRequestStep1, tsc_OptionTagList_precondition), + cr_MessageBody_SDP), + v_IMS_DATA_RSP) /* @sic R5s140350: v_IMS_DATA_RSP is 'out' parameter sic@ */ + { + v_SessionInProgress183 := v_IMS_DATA_RSP.Response; + v_MessageHeader := v_SessionInProgress183.msgHeader; + f_IMS_MessageHeader_CheckContactAddr(v_MessageHeader); // check whether contact contains "SIP URI with IP address or FQDN" (see @sic R5s120727 sic@) + f_IMS_Dialog_SetRemoteTag(v_MessageHeader); + // check SDP message: + v_SDP_Message := f_IMS_SIP_SdpMessageBody_DecodeMatchAndCheckSDP(v_SessionInProgress183.messageBody, p_SDP_MessageStep4); // @sic R5w140112 sic@ + } + } + + // fl_IMS_Params_CheckSigComp(v_IMS_DATA_RSP.Response.msgHeader.route.routeBody[0].rrParam); // acc. to 34.229-1 cl. 13.3.4 step 3 "comp=sigcomp" is mandatory for first route parameter of Record-Route only; this is checked in f_IMS_InviteResponse_183_MessageHeaderTX + + return valueof(cs_IMS_ResponseWithSdp(v_SessionInProgress183, v_SDP_Message)); + } + + /* + * @desc Common function to send PRACK and receive the corresponding 200 OK (mainly to be used for MT call setup + * @param p_InviteRequest + * @param p_MessageHeader_PrevReliableResponse + * @param p_OtherResponseForInvite (default value: omit) + * @param p_ContentType (default value: omit) + * @return template (omit) IMS_Response_Type + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_MTCallSetup_SendPRACK_ReceiveOK(template (value) INVITE_Request p_InviteRequest, + MessageHeader p_MessageHeader_PrevReliableResponse, + template IMS_Response_Type p_OtherResponseForInvite := omit, + template (omit) ContentType p_ContentType := omit) runs on IMS_PTC return template (omit) IMS_Response_Type + { /* @sic R5-142994: allow optionally e.g. a 180 Ringing in parallel to the 200 OK sic@ */ + var IMS_DATA_RSP v_IMS_DATA_RSP_ByRef; + var template (value) MessageHeader v_MessageHeader_Prack; + var InternetProtocol_Type v_Protocol := f_IMS_PTC_ImsInfo_GetTransportProtocol(); + var SipUrl v_ContactUrl := f_IMS_PTC_ImsInfo_GetContactUrl(); + var boolean v_AllowOtherResponse := ispresent(p_OtherResponseForInvite); + var template (omit) IMS_Response_Type v_OtherResponse := omit; + + // Send PRACK + v_MessageHeader_Prack := f_IMS_PrackRequest_MessageHeaderTX(p_InviteRequest, p_MessageHeader_PrevReliableResponse, p_ContentType); + IMS_Client.send(cas_IMS_Prack_Request(cs_IMS_RoutingInfo(v_Protocol), cs_PRACK_Request(v_ContactUrl, v_MessageHeader_Prack))); + + // Receive 200 OK + alt { /* @sic R5s140551 sic@ */ + [] a_IMS_ReceiveResponse(v_MessageHeader_Prack, + v_Protocol, + cr_Response(c_statusLine200, f_IMS_OtherResponse_200_MessageHeaderRX(v_MessageHeader_Prack)), + v_IMS_DATA_RSP_ByRef) + {} /* @sic R5s140350 sic@ */ + [v_AllowOtherResponse] a_IMS_ReceiveResponse(p_InviteRequest.msgHeader, + v_Protocol, + p_OtherResponseForInvite, // NOTE: compiler warning cannot be avoided here + v_IMS_DATA_RSP_ByRef) + { + v_AllowOtherResponse := false; + v_OtherResponse := v_IMS_DATA_RSP_ByRef.Response; + repeat; + } + } + return v_OtherResponse; + } + + /* + * @desc MT speech/video call setup according to 34.229-1 Annex C.11, C.26, steps 7 to 11: send UPDATE, receive 200 OK and optional 180 Ringing + * @param p_InviteRequest + * @param p_SDP_MessageStep7 + * @param p_SDP_MessageStep8 + * @param p_ProtocolUsedForInvite + * @param p_SrvccAlerting (default value: false) + * @param p_WaitDuration_Ringing (default value: 5.0) + * @return template (omit) MessageHeader + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_MTCallSetup_Common_Steps7_11(template (value) INVITE_Request p_InviteRequest, + template (value) SDP_Message p_SDP_MessageStep7, + template (present) SDP_Message p_SDP_MessageStep8, + InternetProtocol_Type p_ProtocolUsedForInvite, + boolean p_SrvccAlerting := false, + float p_WaitDuration_Ringing := 5.0) runs on IMS_PTC return template (omit) MessageHeader + { /* @sic R5-140975: p_MessageBodyRinging removed as it is never used i.e. always omit sic@ */ + /* @sic R5s140385 change 8: new parameter p_SrvccAlerting sic@ */ + var IMS_DATA_RSP v_IMS_DATA_RSP; + var template (value) MessageHeader v_MessageHeader_Update; + var MessageHeader v_MessageHeader_Ringing; + var InternetProtocol_Type v_ProtocolForUpdate := f_IMS_PTC_ImsInfo_GetTransportProtocol(); + var SipUrl v_ContactUrl := f_IMS_PTC_ImsInfo_GetContactUrl(); + var boolean v_WaitingFor180 := true; + var boolean v_WaitingFor200 := true; + var template ContentType v_ContentTypeRinging := omit; /* @sic R5-140975 sic@ */ + var template (present) ContentLength v_ContentLengthRinging := cr_ContentLength(0); /* @sic R5-140975 sic@ */ + var template MessageBody v_MessageBodyRinging := omit; /* @sic R5-140975 sic@ */ + var SemicolonParam_List v_ContactParams := {}; + + timer t_Timer := p_WaitDuration_Ringing; + + // Send UPDATE + v_MessageHeader_Update := f_IMS_UpdateRequest_MessageHeaderTX(p_InviteRequest); + IMS_Client.send(cas_IMS_Update_Request(cs_IMS_RoutingInfo(v_ProtocolForUpdate), cs_UPDATE_Request(v_ContactUrl, v_MessageHeader_Update, cs_MessageBody_SDP(p_SDP_MessageStep7)))); + + t_Timer.start; // @sic R5-125772 sic@ Have introduced the timer to accommodate optional messages that may not arrive + while (v_WaitingFor180 or v_WaitingFor200) { + alt { + // Step 8. Receive 200 OK. The UE acknowledges the UPDATE with 200 OK and includes SDP answer to acknowledge its current precondition status. + [v_WaitingFor200] a_IMS_ReceiveResponse(v_MessageHeader_Update, + v_ProtocolForUpdate, + cr_Response(c_statusLine200, + f_IMS_OtherResponse_200_MessageHeaderRX(v_MessageHeader_Update, cr_ContentTypeSDP), /* @sic R5s130685 change 4 sic@ */ + cr_MessageBody_SDP), + v_IMS_DATA_RSP) /* @sic R5s140350: v_IMS_DATA_RSP is 'out' parameter sic@ */ + { + // check at least one connections field sent + f_IMS_SIP_SdpMessageBody_DecodeMatchAndCheckSDP(v_IMS_DATA_RSP.Response.messageBody, p_SDP_MessageStep8); // @sic R5w140112 sic@ + v_WaitingFor200 := false; + } + [v_WaitingFor180] a_IMS_ReceiveResponse(p_InviteRequest.msgHeader, + p_ProtocolUsedForInvite, + cr_Response(c_statusLine180, + f_IMS_InviteResponse_180_MessageHeaderRX(p_InviteRequest, -, v_ContentTypeRinging, v_ContentLengthRinging), + v_MessageBodyRinging), + v_IMS_DATA_RSP) /* @sic R5s140350: v_IMS_DATA_RSP is 'out' parameter sic@ */ + { + t_Timer.stop; + v_MessageHeader_Ringing := v_IMS_DATA_RSP.Response.msgHeader; + v_WaitingFor180 := false; + } + [] t_Timer.timeout + { + v_WaitingFor180 := false; + } + } + } + if (isbound(v_MessageHeader_Ringing)) { + f_IMS_MessageHeader_CheckContactAddr(v_MessageHeader_Ringing); // check whether contact contains "SIP URI with IP address or FQDN" (see @sic R5s120727 sic@) + + if (p_SrvccAlerting) { /* @sic R5s140385 change 8 sic@ */ + v_ContactParams := v_MessageHeader_Ringing.contact.contactBody.contactAddresses[0].contactParams; + + if (not match(v_ContactParams, cr_SemicolonParam_List_OneSpecificParamNoValue(tsc_IMS_FeatureCap_SrvccAlerting))) { /* @sic R5s140385 change 8 sic@ */ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "A.2.6 condition A5: Missing feature-param"); + } + } + if (f_MessageHeader_CheckRequire(v_MessageHeader_Ringing, c_tag100rel)) { + // Step 10 - 11. Send PRACK, Receive 200 OK if the 180 response contains 100rel option tag within the Require header + f_IMS_MTCallSetup_SendPRACK_ReceiveOK(p_InviteRequest, v_MessageHeader_Ringing); + } + + return v_MessageHeader_Ringing; + } + return omit; + } + + /* + * @desc MT speech/video call setup according to 34.229-1 Annex C.11, C.26, steps 12..13 + * @param p_InviteRequestWithSdp + * @param p_SDP_Message (default value: omit) + * @return IMS_ResponseWithSdp_Type + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_MTCallSetup_Common_Steps12_13(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp, + template SDP_Message p_SDP_Message := omit) runs on IMS_PTC return IMS_ResponseWithSdp_Type + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5w140112: p_InviteRequestWithSdp instead of p_InviteRequest sic@ */ + /* @sic R5w140112: returns IMS_ResponseWithSdp_Type instead of Response sic@ */ + var InternetProtocol_Type v_ProtocolUsedForInvite := p_InviteRequestWithSdp.RoutingInfo.Protocol; + var IMS_DATA_RSP v_IMS_DATA_RSP; + var Response v_Response; + var MessageHeader v_MessageHeader; + var MessageHeader v_MessageHeader_Invite; + var template (present) MessageHeader v_MessageHeader_OtherResponse_200; + var template (value) MessageHeader v_MessageHeader_Ack; + var template ContentType v_ContentType := omit; + var template MessageBody v_MessageBody := omit; + var SipUrl v_ContactUrl := f_IMS_PTC_ImsInfo_GetContactUrl(); + var template (omit) SDP_Message v_SDP_Message := omit; + + if (ispresent(p_SDP_Message)) { + v_ContentType := cr_ContentTypeSDP; + v_MessageBody := cr_MessageBody_SDP; + } + + // Step 12. Receive 200 OK. The UE responds to INVITE with a 200 OK final response after the user answers the call. + v_MessageHeader_Invite := p_InviteRequestWithSdp.Invite.msgHeader; + v_MessageHeader_OtherResponse_200 := f_IMS_OtherResponse_200_MessageHeaderRX(v_MessageHeader_Invite, v_ContentType); + v_IMS_DATA_RSP := f_IMS_ReceiveResponse(v_MessageHeader_Invite, v_ProtocolUsedForInvite, cr_Response(c_statusLine200, v_MessageHeader_OtherResponse_200, v_MessageBody)); /* @sic R5s140350 sic@ */ + v_Response := v_IMS_DATA_RSP.Response; + v_MessageHeader := v_Response.msgHeader; + f_IMS_MessageHeader_CheckContactAddr(v_MessageHeader); /* check whether contact contains "SIP URI with IP address or FQDN" (see @sic R5s120727 sic@) */ + v_SDP_Message := f_IMS_SIP_SdpMessageBody_DecodeMatchAndCheckSDP_Ifpresent(v_Response.messageBody, p_SDP_Message); + + if (isvalue(f_IMS_PTC_ImsInfo_DialogGetRemoteTag())) { /* normal case: there has been e.g. a 183 response already + @sic R5s140017 MCC160 implementation: use remote tag sic@ */ + f_IMS_MessageHeader_CheckTo(v_MessageHeader, dialogToTag); + } else { /* special case (e.g. 16.X test cases): 200 OK is the only response */ + f_IMS_Dialog_SetRemoteTag(v_MessageHeader); /* @sic R5s140017 MCC160 implementation: use remote tag sic@ */ + } + + // Step 13. Send ACK. The SS acknowledges the receipt of 200 OK for INVITE. + v_MessageHeader_Ack := f_IMS_AckRequest_MessageHeaderTX(p_InviteRequestWithSdp.Invite); + IMS_Client.send(cas_IMS_Ack_Request(cs_IMS_RoutingInfo(v_ProtocolUsedForInvite), cs_ACK_Request(v_ContactUrl, v_MessageHeader_Ack))); + + return valueof(cs_IMS_ResponseWithSdp(v_Response, v_SDP_Message)); + } + + //============================================================================ + // MT speech call setup according to 34.229-1 Annex C.11 + //---------------------------------------------------------------------------- + /* + * @desc Build INVITE to be used for MO call estblishment (C.11) + * @return IMS_InviteRequestWithSdp_Type + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_MTCallSetup_AnnexC11_INVITE() runs on IMS_PTC return IMS_InviteRequestWithSdp_Type + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5w140112: return IMS_InviteRequestWithSdp_Type instead of IMS_DATA_REQ; initialisation of routing info sic@ */ + var SipUrl v_ContactUrl := f_IMS_PTC_ImsInfo_GetContactUrl(); + var template (value) INVITE_Request v_InviteRequest; + var template (value) MessageHeader v_MessageHeader_Invite; + var template (value) SDP_Message v_SDP_MessageStep1; + + v_SDP_MessageStep1 := f_IMS_BuildSDP_AnnexC11_Step1or7("step 1"); + v_MessageHeader_Invite := f_IMS_InviteRequest_MessageHeaderTX(tsc_OptionTagList_precondition); + v_InviteRequest := cs_INVITE_Request(v_ContactUrl, v_MessageHeader_Invite, cs_MessageBody_SDP(v_SDP_MessageStep1)); + + return f_IMS_InviteRequestWithSdpMT(v_InviteRequest, v_SDP_MessageStep1); + } + + /* + * @desc MT speech call setup according to 34.229-1 Annex C.11, steps 1 to 4. + * return p_SessionInProgress183 received in step 4 + * @param p_InviteRequestWithSdp + * @return IMS_ResponseWithSdp_Type + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_MTCallSetup_AnnexC11_Steps1_4(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp) runs on IMS_PTC return IMS_ResponseWithSdp_Type + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5w140112: p_InviteRequestWithSdp instead of p_InviteRequest sic@ */ + /* @sic R5w140112: returns IMS_ResponseWithSdp_Type instead of IMS_Response_Type sic@ */ + var template (present) SDP_Message v_SDP_MessageStep4; + var INVITE_Request v_InviteRequest := p_InviteRequestWithSdp.Invite; + var InternetProtocol_Type v_Protocol := p_InviteRequestWithSdp.RoutingInfo.Protocol; + + // Step 1 - Send INVITE + IMS_Client.send(cas_IMS_Invite_Request(p_InviteRequestWithSdp.RoutingInfo, v_InviteRequest)); + + // Step 2 - Void + + // Step 3 .. 4 + v_SDP_MessageStep4 := f_IMS_BuildSDP_AnnexC11_Step4or8("step 4"); + return f_IMS_MTCallSetup_Common_Steps3_4(v_InviteRequest, v_SDP_MessageStep4, v_Protocol); + } + + //---------------------------------------------------------------------------- + /* + * @desc MT speech call setup according to 34.229-1 Annex C.11, steps 7..11 + * @param p_InviteRequestWithSdp + * @return template (omit) MessageHeader + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_MTCallSetup_AnnexC11_Steps7_11(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp) runs on IMS_PTC return template (omit) MessageHeader + { /* @sic R5w140112: p_InviteRequestWithSdp instead of p_InviteRequest sic@ */ + var template (value) INVITE_Request v_InviteRequest := p_InviteRequestWithSdp.Invite; + var InternetProtocol_Type v_ProtocolUsedForInvite := p_InviteRequestWithSdp.RoutingInfo.Protocol; + var SDP_Message v_SDP_Message := p_InviteRequestWithSdp.SdpOffer; + var charstring v_Direction; + var template (value) SDP_Message v_Tx_SDP; + var template (present) SDP_Message v_Rx_SDP; + + // Step 7 - 8. Send UPDATE, Receive 200 OK + // get curr:qos remote for SDP message in step 7 + if (isvalue(v_SDP_Message.media_list[0]) and + f_SDP_AttributeList_CheckAttribute(v_SDP_Message.media_list[0].attributes, cr_SDP_Attribute_curr_qos(c_local, c_none))) { // see C.11 step 7 Note 1 + v_Direction := c_none; + } else { + v_Direction := c_sendrecv; + } + v_Tx_SDP := f_IMS_BuildSDP_AnnexC11_Step1or7("step 7", cs_SDP_Attribute_curr_qos(c_remote, v_Direction)); + v_Rx_SDP := f_IMS_BuildSDP_AnnexC11_Step4or8("step 8"); // @sic R5s120530 change 3.16 sic@ + return f_IMS_MTCallSetup_Common_Steps7_11(v_InviteRequest, v_Tx_SDP, v_Rx_SDP, v_ProtocolUsedForInvite, pc_IMS_SRVCCAlert); + } + + /* + * @desc MT speech call setup according to 34.229-1 Annex C.11, steps 5 to 13 + * @param p_InviteRequestWithSdp + * @param p_SessionInProgress183 + * @status APPROVED (IMS, LTE_IRAT) + */ + function f_IMS_MTCallSetup_AnnexC11_Steps5_13(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp, + IMS_Response_Type p_SessionInProgress183) runs on IMS_PTC + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5w140112: p_InviteRequestWithSdp instead of p_InviteRequest sic@ */ + var MessageHeader v_MessageHeader_PrevReliableResponse := p_SessionInProgress183.msgHeader; + + // Step 5 - 6. Send PRACK, Receive 200 OK + f_IMS_MTCallSetup_SendPRACK_ReceiveOK(p_InviteRequestWithSdp.Invite, v_MessageHeader_PrevReliableResponse); + + // Step 7 - 11. Send UPDATE, Receive 200 OK, Receive optional 180 Ringing and send PRACK if requested + f_IMS_MTCallSetup_AnnexC11_Steps7_11(p_InviteRequestWithSdp); + + // Step 11A - Make UE accept the speech AMR offer + f_UT_AnswerCall(MMI); // @sic R5-134290 sic@ + + // Step 12. Receive 200 OK, Send ACK + f_IMS_MTCallSetup_Common_Steps12_13(p_InviteRequestWithSdp); + } + + //============================================================================ + /* + * @desc 34.229-1 Annex C.24 - Step 1: INVITE with condition A5 + * @param p_WaitDuration (default value: omit) + * @param p_GeolocationInfoAvailable (default value: false) + * @return template (omit) IMS_InviteRequestWithSdp_Type + * @status APPROVED (LTE_IRAT) + */ + function f_IMS_SRVCC_ReInvite_AnnexC24_Step1(template (omit) float p_WaitDuration := omit, + boolean p_GeolocationInfoAvailable := false) + runs on IMS_PTC return template (omit) IMS_InviteRequestWithSdp_Type + { /* @sic R5w140112: return type changed to IMS_InviteRequestWithSdp_Type to carry decoded SDP offer sic@ */ + /* @sic R5s140331 change 8: parameter p_WaitDuration sic@ */ + var template (present) SDP_Message v_SDP_MessageRX := f_IMS_BuildSDP_AnnexC24_Step1(); + var template (omit) IMS_DATA_REQ v_IMS_DATA_REQ; + var IMS_DATA_REQ v_IMS_DATA_REQ_Val; + var SDP_Message v_SDP_Message; + + v_IMS_DATA_REQ := f_IMS_INVITE_ReceiveRequest_Common(A_2_1_A5, -, -, -, p_WaitDuration, -, p_GeolocationInfoAvailable); + if (isvalue(v_IMS_DATA_REQ)) { + v_IMS_DATA_REQ_Val := valueof(v_IMS_DATA_REQ); + v_SDP_Message := f_IMS_MessageBody_CheckSdpMessageAndGeolocation(v_IMS_DATA_REQ_Val.Request.Invite.messageBody, v_SDP_MessageRX, p_GeolocationInfoAvailable); + + return f_IMS_InviteRequestWithSdpMO(v_IMS_DATA_REQ_Val, v_SDP_Message); + } + return omit; + } + + //============================================================================ + /* + * @desc 34.229-1 Annex C.31 - Step 1: INVITE with condition A5 + * @param p_GeolocationInfoAvailable (default value: false) + * @return IMS_InviteRequestWithSdp_Type + * @status APPROVED (LTE_IRAT) + */ + function f_IMS_SRVCC_ReInvite_AnnexC31_Step1(boolean p_GeolocationInfoAvailable := false) + runs on IMS_PTC return IMS_InviteRequestWithSdp_Type + { /* @sic R5s140020, R5-140799: new function sic@ */ + /* @sic R5-140799 sic@ */ + /* @sic R5w140112: return type changed to IMS_InviteRequestWithSdp_Type to carry decoded SDP offer */ + var template (omit) float v_WaitDuration := omit; // no wait duration + var template (present) SDP_Message v_SDP_MessageRX := f_IMS_BuildSDP_AnnexC31_Step1(); + var template (present) MessageHeader v_MessageHeader := cr_MessageHeader_Dummy; + var IMS_DATA_REQ v_IMS_DATA_REQ; + var SDP_Message v_SDP_Message; + + v_MessageHeader.reason := f_IMS_SIP_Reason487_RX(); // @sic R5s140370 change 3 - MCC160 implementation sic@ + + v_IMS_DATA_REQ := valueof(f_IMS_INVITE_ReceiveRequest_Common(A_2_1_A5, v_MessageHeader, -, -, v_WaitDuration, -, p_GeolocationInfoAvailable)); + v_SDP_Message := f_IMS_MessageBody_CheckSdpMessageAndGeolocation(v_IMS_DATA_REQ.Request.Invite.messageBody, v_SDP_MessageRX, p_GeolocationInfoAvailable); + + return f_IMS_InviteRequestWithSdpMO(v_IMS_DATA_REQ, v_SDP_Message); + } + + //============================================================================ + /* + * @desc 34.229-1 Annex C.21 - Step 2: receive INVITE acc. to A.2.1; + * if the INVITE is optional a wait duration shall be given + * @param p_OtherCalleeUri (default value: omit) + * @param p_A_2_1_Context (default value: A_2_1_A4) + * @param p_WaitDuration (default value: omit) + * @param p_GeolocationInfoAvailable (default value: false) + * @return template (omit) IMS_InviteRequestWithSdp_Type + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_MOCallSetup_AnnexC21_Step2_Optional(template (omit) charstring p_OtherCalleeUri := omit, + INVITE_A_2_1_Context_Type p_A_2_1_Context := A_2_1_A4, + template (omit) float p_WaitDuration := omit, + boolean p_GeolocationInfoAvailable := false) runs on IMS_PTC return template (omit) IMS_InviteRequestWithSdp_Type + { /* @sic R5-133276, R5-133301 Cleanup of functions for MO Call Setup sic@ */ + /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5w140112: return type changed to IMS_InviteRequestWithSdp_Type to carry decoded SDP offer */ + var template (present) SDP_Message v_SDP_Message_Step2 := f_IMS_BuildSDP_AnnexC21_Step2(); + var template (omit) IMS_DATA_REQ v_IMS_DATA_REQ; + var template (omit) IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp := omit; + var IMS_DATA_REQ v_IMS_DATA_REQ_Value; + var SDP_Message v_SDP_Message; + var INVITE_Request v_InviteRequest; + + // Step 2. Receive INVITE Request + v_IMS_DATA_REQ := f_IMS_INVITE_ReceiveRequest_Common(p_A_2_1_Context, -, tsc_OptionTagList_precondition, p_OtherCalleeUri, p_WaitDuration, -, p_GeolocationInfoAvailable); + if (isvalue(v_IMS_DATA_REQ)) { + v_IMS_DATA_REQ_Value := valueof(v_IMS_DATA_REQ); + v_InviteRequest := v_IMS_DATA_REQ_Value.Request.Invite; + v_SDP_Message := f_IMS_MessageBody_CheckSdpMessageAndGeolocation(v_InviteRequest.messageBody, v_SDP_Message_Step2, p_GeolocationInfoAvailable); + + // check media description: + f_IMS_SDP_CheckMediaDescr_AMR_8000_1(v_SDP_Message.media_list[0]); + f_IMS_SDP_CheckMediaDescr_DTMF(v_SDP_Message.media_list[0]); + + v_InviteRequestWithSdp := f_IMS_InviteRequestWithSdpMO(v_IMS_DATA_REQ_Value, v_SDP_Message); + } + return v_InviteRequestWithSdp; + } + + /* + * @desc 34.229-1 Annex C.21 - Step 2: receive INVITE acc. to A.2.1 + * @param p_OtherCalleeUri (default value: omit) + * @param p_A_2_1_Context (default value: A_2_1_A4) + * @param p_GeolocationInfoAvailable (default value: false) + * @return IMS_InviteRequestWithSdp_Type + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_MOCallSetup_AnnexC21_Step2_Common(template (omit) charstring p_OtherCalleeUri := omit, + INVITE_A_2_1_Context_Type p_A_2_1_Context := A_2_1_A4, + boolean p_GeolocationInfoAvailable := false) runs on IMS_PTC return IMS_InviteRequestWithSdp_Type + { /* @sic R5-133276, R5-133301 Cleanup of functions for MO Call Setup sic@ */ + /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5w140112: return type changed to IMS_InviteRequestWithSdp_Type to carry decoded SDP offer */ + var template (omit) float v_WaitDuration := omit; + var template (omit) IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; + v_InviteRequestWithSdp := f_IMS_MOCallSetup_AnnexC21_Step2_Optional(p_OtherCalleeUri, p_A_2_1_Context, v_WaitDuration, p_GeolocationInfoAvailable); + return valueof(v_InviteRequestWithSdp); + } + + /* + * @desc 34.229-1 Annex C.21 - Step 2: Wrapper function for A.2.1 condition A4 (INVITE creating a dialog) + * @param p_OtherCalleeUri (default value: omit) + * @param p_GeolocationInfoAvailable (default value: false) + * @return IMS_InviteRequestWithSdp_Type + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_MOCallSetup_AnnexC21_Step2_A4(template (omit) charstring p_OtherCalleeUri := omit, + boolean p_GeolocationInfoAvailable := false) runs on IMS_PTC return IMS_InviteRequestWithSdp_Type + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5w140112: return type changed to IMS_InviteRequestWithSdp_Type to carry decoded SDP offer */ + return f_IMS_MOCallSetup_AnnexC21_Step2_Common(p_OtherCalleeUri, A_2_1_A4, p_GeolocationInfoAvailable); + } + + /* + * @desc 34.229-1 Annex C.21 - Step 3: send 100 Trying + * @param p_InviteRequestWithSdp + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_MOCallSetup_AnnexC21_Step3(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp) runs on IMS_PTC + { + var template (value) IMS_RoutingInfo_Type v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(p_InviteRequestWithSdp.RoutingInfo); + + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine100, f_IMS_InviteResponse_100_MessageHeaderTX(p_InviteRequestWithSdp.Invite)))); + } + + /* + * @desc 34.229-1 Annex C.21 - Step 3: send 183 Session In Progress + * return MessageHeader of the 183 response + * @param p_InviteRequestWithSdp + * @param p_ContactUri (default value: px_IMS_CalleeContactUri) + * @param p_AditionalContactParams (default value: omit) + * @param p_IsEmergency (default value: false) + * @return MessageHeader + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_MOCallSetup_AnnexC21_Step4(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp, + charstring p_ContactUri := px_IMS_CalleeContactUri, + template (omit) SemicolonParam_List p_AditionalContactParams := omit, + boolean p_IsEmergency := false) runs on IMS_PTC return MessageHeader + { /* @sic R5-142951: tsc_OptionTagList_precondition to be added to the Require header instead of the Supported header sic@ */ + var template (value) IMS_RoutingInfo_Type v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(p_InviteRequestWithSdp.RoutingInfo); + var INVITE_Request v_InviteRequest := p_InviteRequestWithSdp.Invite; + var SDP_Message v_SDP_MessageInvite := p_InviteRequestWithSdp.SdpOffer; /* @sic R5w140112 sic@ */ + var template (value) MessageHeader v_MessageHeader_Response183; + var template (value) SDP_Message v_SDP_MessageTx := f_IMS_BuildSDP_AnnexC21_Step4(v_SDP_MessageInvite); /* @sic R5-135020 sic@ */ + // Step 4. Send 183 Session In Progress. + v_MessageHeader_Response183 := f_IMS_InviteResponse_183_MessageHeaderTX(v_InviteRequest, tsc_OptionTagList_precondition, p_ContactUri, p_AditionalContactParams, p_IsEmergency); /* @sic R5-142951 sic@ */ + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine183, v_MessageHeader_Response183, cs_MessageBody_SDP(v_SDP_MessageTx)))); + + return valueof(v_MessageHeader_Response183); + } + + /* + * @desc 34.229-1 Annex C.21 - Step 3..4 + * return MessageHeader of the 183 response + * @param p_InviteRequestWithSdp + * @param p_ContactUri (default value: px_IMS_CalleeContactUri) + * @param p_AditionalContactParams (default value: omit) + * @param p_IsEmergency (default value: false) + * @return MessageHeader + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_MOCallSetup_AnnexC21_Step3_4(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp, + charstring p_ContactUri := px_IMS_CalleeContactUri, + template (omit) SemicolonParam_List p_AditionalContactParams := omit, + boolean p_IsEmergency := false) runs on IMS_PTC return MessageHeader + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5w140112: p_InviteRequestWithSdp instead of p_RoutingInfo_DL, p_InviteRequest sic@ */ + /* @sic R5s140359 - Additional Changes: split (f_IMS_MOCallSetup_AnnexC21_Step3, f_IMS_MOCallSetup_AnnexC21_Step4) sic@ */ + var MessageHeader v_MessageHeader_Response183; + + // Step 3. SS sends a 100 Trying provisional response. + f_IMS_MOCallSetup_AnnexC21_Step3(p_InviteRequestWithSdp); + + // Step 4. Send 183 Session In Progress. + v_MessageHeader_Response183 := f_IMS_MOCallSetup_AnnexC21_Step4(p_InviteRequestWithSdp, p_ContactUri, p_AditionalContactParams, p_IsEmergency); + + return v_MessageHeader_Response183; + } + + /* + * @desc 34.229-1 Annex C.21 - Step 5..8 + * returns the "latest SDP offer" received from the UE + * @param p_InviteRequestWithSdp + * @param p_MessageHeader_Prev183Response + * @param p_GeolocationInfoAvailable (default value: false) + * @param p_SDP_Message_Step5or7 (default value: omit) + * @param p_PrevSDP_Message (default value: omit) + * @return SDP_Message + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_MOCallSetup_AnnexC21_Steps5_8(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp, + template (value) MessageHeader p_MessageHeader_Prev183Response, + boolean p_GeolocationInfoAvailable := false, + template SDP_Message p_SDP_Message_Step5or7 := omit, + template (omit) SDP_Message p_PrevSDP_Message := omit) runs on IMS_PTC return SDP_Message + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5w140112: p_InviteRequest changed to p_InviteRequestWithSdp */ + /* @sic R5s140686, R5-144755: parameter p_PrevSDP_Message sic@ */ + var SipUrl v_ContactUrl := f_MessageHeader_GetContactSipUrl(p_MessageHeader_Prev183Response); /* @sic R5s130333 change 8.2 - acc. to A.2.4, A.2.5 same as in previous response sic@ */ + var INVITE_Request v_InviteRequest := p_InviteRequestWithSdp.Invite; + var SDP_Message v_SDP_Message := p_InviteRequestWithSdp.SdpOffer; /* @sic R5w140112 sic@ */ + var charstring v_FmtAudio; + var template (present) SDP_Message v_SDP_Message_Step5or7; + var template (present) MessageBody v_MessageBody; + var boolean v_MediaConfigured := false; + var IMS_DATA_REQ v_IMS_DATA_REQ; + var template (value) IMS_RoutingInfo_Type v_RoutingInfo_DL; + var template (present) MessageHeader v_MessageHeader_Prack; + var template (present) MessageHeader v_MessageHeader_Update; + var template (omit) MessageBody v_MessageBodyTx := omit; + var template (omit) ContentType v_ContentType := omit; + var PRACK_Request v_PrackRequest; + var UPDATE_Request v_UpdateRequest; + var SDP_Message v_SDP_LatestOffer; + + if (isvalue(p_PrevSDP_Message)) { /* e.g. in case of C.27 the INVITE's SDP message is not the latest SDP sent by the UE */ + v_SDP_Message := valueof(p_PrevSDP_Message); + } + + if (not ispresent(p_SDP_Message_Step5or7)) { + v_FmtAudio := f_SDP_MediaDescr_GetAMR_8000_1(v_SDP_Message.media_list[0]); + v_SDP_Message_Step5or7 := f_IMS_BuildSDP_AnnexC21_Step5or7(v_FmtAudio); + } else { + v_SDP_Message_Step5or7 := p_SDP_Message_Step5or7; // NOTE: compiler warning cannot be avoided here + } + + // Step 5. Receive PRACK + v_MessageHeader_Prack := f_IMS_PrackRequest_MessageHeaderRX(v_InviteRequest, p_MessageHeader_Prev183Response); + IMS_Server.receive(car_IMS_Prack_Request(cr_PRACK_Request(v_ContactUrl, v_MessageHeader_Prack, cr_MessageBody_SDP ifpresent))) -> value v_IMS_DATA_REQ; + v_PrackRequest := v_IMS_DATA_REQ.Request.Prack; + v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo); + + // fl_IMS_Params_CheckSigComp(v_PrackRequest.msgHeader.route.routeBody[0].rrParam); // acc. to 34.229-1 cl. 13.2.4 step 4 (PRACK) "comp=sigcomp" is optional for Via and Route + + // Step 6. Send 200 OK + if (ispresent(v_PrackRequest.messageBody)) { + v_SDP_LatestOffer := f_IMS_SIP_SdpMessageBody_DecodeMatchAndCheckSDP(v_PrackRequest.messageBody, v_SDP_Message_Step5or7); // @sic R5w140112 sic@ + + // check session version increased + f_IMS_SDP_CheckSessionVersion(v_SDP_LatestOffer, v_SDP_Message); + + v_ContentType := cs_ContentTypeSDP; + v_MessageBodyTx := cs_MessageBody_SDP(f_IMS_BuildSDP_AnnexC21_Step6or8(v_SDP_LatestOffer)); /* NOTE: f_IMS_BuildSDP_AnnexC21_Step6or8 is not specific for C.21 but can be used for C.25 as well + @sic R5w140112 sic@ */ + v_MediaConfigured := true; + } + + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine200, f_IMS_OtherResponse_200_MessageHeaderTX(v_PrackRequest.msgHeader, v_ContentType), v_MessageBodyTx))); + + // Step 7 Optional. Receive Update + // Note: UE will send Update if Media is not yet configured + if (not v_MediaConfigured) { + v_MessageHeader_Update := f_IMS_UpdateRequest_MessageHeaderRX(v_InviteRequest); + v_MessageBody := f_SIP_MessageBodySDP_RX(p_GeolocationInfoAvailable); + if (p_GeolocationInfoAvailable) { + v_MessageHeader_Update.geolocation := cr_GeolocationAny; + v_MessageHeader_Update.geolocationRouting := cr_GeolocationRoutingSupported; // @sic R5-134798 sic@ + v_MessageHeader_Update.contentType := cr_ContentType("multipart/mixed"); + } + IMS_Server.receive(car_IMS_Update_Request(cr_UPDATE_Request(v_ContactUrl, v_MessageHeader_Update, v_MessageBody))) -> value v_IMS_DATA_REQ; + v_UpdateRequest := v_IMS_DATA_REQ.Request.Update; + v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo); + v_SDP_LatestOffer := f_IMS_MessageBody_CheckSdpMessageAndGeolocation(v_UpdateRequest.messageBody, v_SDP_Message_Step5or7); /* @sic R5w140112 sic@ */ + + //fl_IMS_Params_CheckSigComp(v_UpdateRequest.msgHeader.route.routeBody[0].rrParam); // acc. to 34.229-1 cl. 13.2.4 step 6 (UPDATE) "comp=sigcomp" is optional for Via and Route + + // check session version increased + f_IMS_SDP_CheckSessionVersion(v_SDP_LatestOffer, v_SDP_Message); + + v_ContentType := cs_ContentTypeSDP; + v_MessageBodyTx := cs_MessageBody_SDP(f_IMS_BuildSDP_AnnexC21_Step6or8(v_SDP_LatestOffer)); /* NOTE: f_IMS_BuildSDP_AnnexC21_Step6or8 is not specific for C.21 but can be used for C.25 as well + @sic R5w140112 sic@ */ + v_MediaConfigured := true; + // Step 8 Optional. Send 200 OK + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine200, f_IMS_OtherResponse_200_MessageHeaderTX(v_UpdateRequest.msgHeader, v_ContentType), v_MessageBodyTx))); + } + + return v_SDP_LatestOffer; + } + + + /* + * @desc 34.229-1 Annex C.21 - Step 9..11 + * @param p_InviteRequestWithSdp + * @param p_ContactUri (default value: px_IMS_CalleeContactUri) + * @param p_SrvccAlertingSupported (default value: pc_IMS_SRVCCAlert) + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_MOCallSetup_AnnexC21C25_Step9_11(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp, + charstring p_ContactUri := px_IMS_CalleeContactUri, + boolean p_SrvccAlertingSupported := pc_IMS_SRVCCAlert) runs on IMS_PTC + { // p_SrvccAlertingSupported .. if voice call => condition A6 of A.2.6; needs to be set to false for non-voice calls + /* @sic R5s130333 change 9.2 - parameter p_ContactUri: acc. to see A.2.4 contact in request line of PRACK shall be the same in as in previous response (180 Ringing) sic@ */ + /* @sic R5w140112: p_IMS_INVITE_REQ changed to p_InviteRequestWithSdp */ + /* @sic R5s140370 change 6: new parameter p_SrvccAlertingSupported sic@ */ + var INVITE_Request v_InviteRequest := p_InviteRequestWithSdp.Invite; + var template (value) IMS_RoutingInfo_Type v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(p_InviteRequestWithSdp.RoutingInfo); + var template (value) MessageHeader v_MessageHeader_180Response := f_IMS_InviteResponse_180_MessageHeaderTX(v_InviteRequest, p_ContactUri, -, -, p_SrvccAlertingSupported); + var template (value) MessageHeader v_MessageHeader_PrackResponse_200; + var template (present) MessageHeader v_MessageHeader_Prack; + var IMS_DATA_REQ v_IMS_DATA_REQ; + var PRACK_Request v_PrackRequest; + + // Step 9. SS sends a 180 Ringing. + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine180, v_MessageHeader_180Response))); + + // Step 10. Receive PRACK + v_MessageHeader_Prack := f_IMS_PrackRequest_MessageHeaderRX(v_InviteRequest, v_MessageHeader_180Response); + IMS_Server.receive(car_IMS_Prack_Request(cr_PRACK_Request(f_SIP_BuildSipUri_RX(p_ContactUri), v_MessageHeader_Prack))) -> value v_IMS_DATA_REQ; + + v_PrackRequest := v_IMS_DATA_REQ.Request.Prack; + v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo); + + //fl_IMS_Params_CheckSigComp(v_PrackRequest.msgHeader.route.routeBody[0].rrParam); // acc. to 34.229-1 cl. 13.2.4 step 9 (PRACK) "comp=sigcomp" is optional for Via and Route + + // Step 11. Send 200 OK (response to last PRACK) + v_MessageHeader_PrackResponse_200 := f_IMS_OtherResponse_200_MessageHeaderTX(v_PrackRequest.msgHeader); + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine200, v_MessageHeader_PrackResponse_200))); + } + + /* + * @desc 34.229-1 Annex C.21 - Step 12..13 + * @param p_InviteRequestWithSdp + * @param p_ContactUri (default value: px_IMS_CalleeContactUri) + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_MOCallSetup_AnnexC21C25_Step12_13(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp, + charstring p_ContactUri := px_IMS_CalleeContactUri) runs on IMS_PTC + { /* @sic R5s130333 change 9.3 - parameter p_ContactUri: acc. to A.2.7 contact in request line of ACK shall be the same in as PRACK sic@ */ + /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5w140112: p_IMS_INVITE_REQ changed to p_InviteRequestWithSdp */ + var INVITE_Request v_InviteRequest := p_InviteRequestWithSdp.Invite; + var template (value) IMS_RoutingInfo_Type v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(p_InviteRequestWithSdp.RoutingInfo); + var template (value) MessageHeader v_MessageHeader_InviteResponse_200; + var template (present) MessageHeader v_MessageHeader_Ack; + + // Step 12. Send 200 OK (response to INVITE) + v_MessageHeader_InviteResponse_200 := f_IMS_OtherResponse_200_MessageHeaderTX(v_InviteRequest.msgHeader); + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine200, v_MessageHeader_InviteResponse_200))); + + // Step 13. Finally, UE acknowledges call setup. + v_MessageHeader_Ack := f_IMS_AckRequest_MessageHeaderRX(v_InviteRequest, c_statusLine200); + IMS_Server.receive(car_IMS_Ack_Request(cr_ACK_Request(f_SIP_BuildSipUri_RX(p_ContactUri), v_MessageHeader_Ack))); + + //fl_IMS_Params_CheckSigComp(v_IMS_DATA_REQ.Request.Ack.msgHeader.route.routeBody[0].rrParam); // acc. to 34.229-1 cl. 13.2.4 step 12 (ACK) "comp=sigcomp" is optional for Route + } + + /* + * @desc wrapper for steps 5..13 of C.21; + * returns the "latest SDP offer" received from the UE + * @param p_InviteRequestWithSdp + * @param p_MessageHeader_Prev183Response + * @param p_GeolocationInfoAvailable (default value: false) + * @return SDP_Message + * @status APPROVED (IMS) + */ + function f_IMS_MOCallSetup_AnnexC21_Steps5_13(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp, + MessageHeader p_MessageHeader_Prev183Response, + boolean p_GeolocationInfoAvailable := false) runs on IMS_PTC return SDP_Message + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + /* @sic R5w140112: p_IMS_INVITE_REQ changed to p_InviteRequestWithSdp */ + var SDP_Message v_SDP_Message := f_IMS_MOCallSetup_AnnexC21_Steps5_8(p_InviteRequestWithSdp, p_MessageHeader_Prev183Response, p_GeolocationInfoAvailable); + + f_IMS_MOCallSetup_AnnexC21C25_Step9_11(p_InviteRequestWithSdp); + f_IMS_MOCallSetup_AnnexC21C25_Step12_13(p_InviteRequestWithSdp); + + return v_SDP_Message; + } + + //============================================================================ + /* + * @desc check all media streams to have the given attribute + * @param p_Media_Desc_List + * @param p_Attribute + * @return boolean + * @status APPROVED (IMS) + */ + function f_IMS_SDP_CheckMediaListAttributes(template (value) SDP_media_desc_list p_Media_Desc_List, + template (present) SDP_attribute p_Attribute) return boolean + { + var integer i; + + for (i := 0; i < lengthof(p_Media_Desc_List); i:=i+1) { + if (not f_SDP_AttributeList_CheckAttribute(p_Media_Desc_List[i].attributes, p_Attribute)) { + return false; + } + } + return true; + } + + /* + * @desc Check recv mode for call hold/resume acc. to C.8 + * @param p_HoldResume + * @param p_HoldResumeOffer + * @param p_OriginalOffer + * @status APPROVED (IMS) + */ + function fl_IMS_MOCallHoldResume_AnnexC8_CheckSendRecvMode(IMS_CallHoldResume_Type p_HoldResume, + SDP_Message p_HoldResumeOffer, + SDP_Message p_OriginalOffer) runs on IMS_PTC + { + var SDP_attribute_list v_HoldResumeOffer_AttributeList; + var SDP_attribute_list v_OriginalOffer_AttributeList; + var template (omit) SDP_attribute v_SendRecvAttribute; + var SDP_attribute v_SendRecvAttributeVal; + var integer i; + + v_SendRecvAttribute := f_SDP_AttributeList_GetAttribute(p_HoldResumeOffer.attributes, cr_SDP_Attribute_AnySendRecvMode); // session attribute + if (ispresent(v_SendRecvAttribute)) { + // Hold/Resume offer has session attribute for send/recv mode + v_SendRecvAttributeVal := valueof(v_SendRecvAttribute); + select (p_HoldResume) { + case (HOLD) { + if (match(v_SendRecvAttributeVal, cs_SDP_Attribute_inactive)) { // => check all media streams of the original offer to be recvonly + if (not f_IMS_SDP_CheckMediaListAttributes(p_OriginalOffer.media_list, cs_SDP_Attribute_recvonly)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "SDP offer for call hold has session attribute 'inactive' and but not all media streams of the original offer have been 'recvonly' "); + return; + } + } else if (match(v_SendRecvAttributeVal, cs_SDP_Attribute_sendonly)) { // => check all media streams of the original offer to be sendrecv + if (not f_IMS_SDP_CheckMediaListAttributes(p_OriginalOffer.media_list, cs_SDP_Attribute_sendrecv)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "SDP offer for call hold has session attribute 'sendonly' and but not all media streams of the original offer have been 'sendrecv' "); + return; + } + } else { // send/recv mode is neither inactive nor sendonly + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "SDP offer for call hold has session attribute being neither 'sendonly' not 'inactive'"); + return; + } + } + case (RESUME) { // all media streams of the original offer shall be the same and the same as in the "RESUME offer" + if (not f_IMS_SDP_CheckMediaListAttributes(p_OriginalOffer.media_list, v_SendRecvAttributeVal)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "SDP offer for call resume has session attribute not matching with all media streams of the original offer"); + return; + } + } + } + // check that Hold/Resume offer does not have further send/recv mode attributes in any media stream + if (f_IMS_SDP_CheckMediaListAttributes(p_HoldResumeOffer.media_list, cr_SDP_Attribute_AnySendRecvMode)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "SDP offer for call hold/resume has session attribute for send/recv mode but also send/recv mode attributes for media streams"); + return; + } + } else { + // Hold/Resume offer has no session attribute for send/recv mode => check stream by stream + if (lengthof(p_HoldResumeOffer.media_list) != lengthof(p_OriginalOffer.media_list)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "SDP offer for call hold/resume has different number of media streams than the original offer"); + return; + } + for (i := 0; i < lengthof(p_HoldResumeOffer.media_list); i:=i+1) { + v_HoldResumeOffer_AttributeList := p_HoldResumeOffer.media_list[i].attributes; + v_OriginalOffer_AttributeList := p_OriginalOffer.media_list[i].attributes; + select (p_HoldResume) { + case (HOLD) { + if (f_SDP_AttributeList_CheckAttribute(v_HoldResumeOffer_AttributeList, cs_SDP_Attribute_inactive)) { + v_SendRecvAttribute := cs_SDP_Attribute_recvonly; + } + else if (f_SDP_AttributeList_CheckAttribute(v_HoldResumeOffer_AttributeList, cs_SDP_Attribute_sendonly)) { + v_SendRecvAttribute := cs_SDP_Attribute_sendrecv; + } + } + case (RESUME) { + v_SendRecvAttribute := f_SDP_AttributeList_GetAttribute(v_HoldResumeOffer_AttributeList, cr_SDP_Attribute_AnySendRecvMode); + } + } + if (not ispresent(v_SendRecvAttribute) or not f_SDP_AttributeList_CheckAttribute(v_OriginalOffer_AttributeList, v_SendRecvAttribute)) { // compiler warning cannot be avoided for v_SendRecvAttribute + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "SDP offer for call hold/resume has invalid send/recv mode attribute for single media stream"); + return; + } + } + } + } + + /* + * @desc Check bandwidth for call hold/resume acc. to C.8 + * @param p_HoldResume + * @param p_SDP_Message + * @status APPROVED (IMS) + */ + function f_IMS_CallHoldResume_AnnexC8_CheckBandwidth(IMS_CallHoldResume_Type p_HoldResume, + SDP_Message p_SDP_Message) runs on IMS_PTC + { + var integer i; + var charstring v_Modifier; + var integer v_Bandwidth; + + for (i := 0; i < lengthof(p_SDP_Message.bandwidth); i := i+1) { + v_Modifier := p_SDP_Message.bandwidth[i].modifier; + v_Bandwidth := p_SDP_Message.bandwidth[i].bandwidth; + select (v_Modifier) { + case ("RR", "RS") { + if ((p_HoldResume == HOLD) and not (v_Bandwidth > 0)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Call hold: " & v_Modifier & " bandwidth shall be greater than zero"); + return; + } + else if ((p_HoldResume == RESUME) and (v_Bandwidth > 0)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Call resume: " & v_Modifier & " bandwidth shall be zero"); + return; + } + } + } + } + } + + /* + * @desc MO call hold according to Annex C.8 (TS 34.229-1) + * @param p_HoldResume + * @param p_PrevInviteRequest + * @param p_MessageHeader_Prev183Response + * @param p_SDP_OriginalOffer + * @param p_PrevSessionVersion (default value: omit) + * @return SDP_Message + * @status APPROVED (IMS) + */ + function f_IMS_MOCallHoldResume_AnnexC8(IMS_CallHoldResume_Type p_HoldResume, + INVITE_Request p_PrevInviteRequest, + MessageHeader p_MessageHeader_Prev183Response, + SDP_Message p_SDP_OriginalOffer, + template (omit) integer p_PrevSessionVersion := omit) runs on IMS_PTC return SDP_Message + { + var template (value) IMS_RoutingInfo_Type v_RoutingInfo_DL; + var template (present) MessageHeader v_MessageHeader_Invite; + var template (present) MessageHeader v_MessageHeader_Update; + var template (present) MessageHeader v_MessageHeader_Ack; + var template (value) SDP_Message v_SDP_HoldResumeResponse; + var MessageBody v_MessageBody; + var IMS_DATA_REQ v_IMS_DATA_REQ; + var INVITE_Request v_InviteRequest; + var UPDATE_Request v_UpdateRequest; + var MessageHeader v_MessageHeader; + var SDP_Message v_SDP_HoldResumeOffer; + var integer v_PrevSessionVersion; + var SipUrl v_RequestSipUrl := f_MessageHeader_GetContactSipUrl(p_MessageHeader_Prev183Response); // get the contact URI out of the Contact header being sent to the UE in the earlier 183 response + var SipUrl v_ToHeaderSipUrl := f_Addr_Union_GetSipUrl(p_PrevInviteRequest.msgHeader.toField.addressField); // SIP URI in the To header of the INVITE needs to be the same SIP URI as been used in the previous INVITE + var integer v_CseqValue := f_IMS_PTC_ImsInfo_CseqGetValue(dialogRemote); /* @sic R5s140121 change 7: CSeq Value is incremented in f_IMS_InviteRequest_MessageHeaderRX and in f_IMS_UpdateRequest_MessageHeaderRX but shall be the same for both sic@ */ + + // Steps 1 and 2 - Receive Invite Request or Update Request + v_MessageHeader_Invite := f_IMS_InviteRequest_MessageHeaderRX(-, v_ToHeaderSipUrl, -, A_2_1_A5); + f_IMS_PTC_ImsInfo_CseqSet(dialogRemote, v_CseqValue); /* @sic R5s140121 change 7: restore CSeq Value sic@ */ + v_MessageHeader_Update := f_IMS_UpdateRequest_MessageHeaderRX(p_PrevInviteRequest); + + alt { + // INVITE + [] IMS_Server.receive(car_IMS_Invite_Request(cr_INVITE_Request(v_RequestSipUrl, v_MessageHeader_Invite, cr_MessageBody_SDP))) + -> value v_IMS_DATA_REQ + { + v_InviteRequest := v_IMS_DATA_REQ.Request.Invite; + v_MessageHeader := v_InviteRequest.msgHeader; + v_MessageBody := v_InviteRequest.messageBody; + + f_IMS_A_2_1_Invite_CommonChecks(v_IMS_DATA_REQ, A_2_1_A5); + } + // UPDATE + [] IMS_Server.receive(car_IMS_Update_Request(cr_UPDATE_Request(v_RequestSipUrl, v_MessageHeader_Update, cr_MessageBody_SDP))) + -> value v_IMS_DATA_REQ + { + v_UpdateRequest := v_IMS_DATA_REQ.Request.Update; + v_MessageHeader := v_UpdateRequest.msgHeader; + v_MessageBody := v_UpdateRequest.messageBody; + } + } + f_IMS_PreliminaryPass(__FILE__, __LINE__, "Annex C.8 step 1"); + + v_RoutingInfo_DL := f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo); + v_SDP_HoldResumeOffer := f_IMS_MessageBody_CheckSdpMessageAndGeolocation(v_MessageBody, f_IMS_BuildSDP_AnnexC8_Step1(p_SDP_OriginalOffer)); /* @sic R5s140324 - additional change 2 sic@ */ + + // Check version number: + if (isvalue(p_PrevSessionVersion)) { + v_PrevSessionVersion := valueof(p_PrevSessionVersion); + } else { + v_PrevSessionVersion := str2int(p_SDP_OriginalOffer.origin.session_version); + } + f_IMS_SDP_CheckSessionVersion(v_SDP_HoldResumeOffer, omit, v_PrevSessionVersion); + + // Check bandwidth + f_IMS_CallHoldResume_AnnexC8_CheckBandwidth(p_HoldResume, v_SDP_HoldResumeOffer); + + // Check send/receive mode + fl_IMS_MOCallHoldResume_AnnexC8_CheckSendRecvMode(p_HoldResume, v_SDP_HoldResumeOffer, p_SDP_OriginalOffer); + + if (isbound(v_InviteRequest)) { + // Step 2. Send 100 Trying + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine100, f_IMS_InviteResponse_100_MessageHeaderTX(v_InviteRequest)))); + } + + // Step 3. Respond with 200 OK (A.3.1 condition A5: Any response sent by the UE within a dialog + v_SDP_HoldResumeResponse := f_IMS_BuildSDP_AnnexC8_Step3(p_HoldResume, v_SDP_HoldResumeOffer); + IMS_Server.send(cas_IMS_DATA_RSP(v_RoutingInfo_DL, cs_Response(c_statusLine200, + f_IMS_OtherResponse_200_MessageHeaderTX(v_MessageHeader, cs_ContentTypeSDP), + cs_MessageBody_SDP(v_SDP_HoldResumeResponse)))); + if (isbound(v_InviteRequest)) { + // Step 4. Receive ACK + v_MessageHeader_Ack := f_IMS_AckRequest_MessageHeaderRX(v_InviteRequest, c_statusLine200); + IMS_Server.receive(car_IMS_Ack_Request(cr_ACK_Request(v_RequestSipUrl, v_MessageHeader_Ack))); + } + + return v_SDP_HoldResumeOffer; + } + + //============================================================================ + + group HandlingOfPublishMessage { + + function f_IMS_PublishRequest_MessageHeaderRX(template (present) SipUrl p_SipUrlPublicUserId, + boolean p_SessionIdSupported := false) runs on IMS_PTC return template (present) MessageHeader + { /* PUBLISH (see TS 34.229, A.4.3) */ + /* !!!! NOTE: Checks may need to be enhanced !!!!*/ + var template (present) MessageHeader v_MessageHeader_Publish := cr_MessageHeader_Dummy; + + v_MessageHeader_Publish.route := cr_RouteSubs(f_IMS_PTC_Pcscf_Get(), *, px_IMS_Scscf); + v_MessageHeader_Publish.via := cr_ViaDef(-, cr_HostPort(?)); + v_MessageHeader_Publish.toField := cr_ToDef(p_SipUrlPublicUserId); // NOTE: absence of the To tag needs to be checked separately + v_MessageHeader_Publish.fromField := cr_FromWithTag(p_SipUrlPublicUserId); + v_MessageHeader_Publish.cSeq := cr_CseqDef(?, "PUBLISH"); + v_MessageHeader_Publish.callId := cr_CallId(?); + v_MessageHeader_Publish.sessionId := f_IMS_SessionId_RX_IfSupported(p_SessionIdSupported); /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Publish.maxForwards := cr_MaxForwardsDef; + v_MessageHeader_Publish.event := cr_EventDef(?); + if (not f_IMS_PTC_SecurityScheme_IsGiba()) { + v_MessageHeader_Publish.securityVerify := f_IMS_PTC_BuildSecurityVerifyHeader(); + v_MessageHeader_Publish.pAccessNetworkInfo := cr_PAccessNetworkInfoDef(f_IMS_PTC_RanType_GetString()); + } + return v_MessageHeader_Publish; + } + + function f_IMS_PublishResponse_200_MessageHeaderTX(PUBLISH_Request p_PublishRequest) runs on IMS_PTC return template (value) MessageHeader + { // 200 OK for PUBLISH (see TS 34.229, A.4.4) + var MessageHeader v_MessageHeader_Publish := p_PublishRequest.msgHeader; + var template (value) MessageHeader v_MessageHeader_Response := cs_MessageHeader_Dummy; + + v_MessageHeader_Response.via := v_MessageHeader_Publish.via; + v_MessageHeader_Response.fromField := v_MessageHeader_Publish.fromField; + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderTX(v_MessageHeader_Publish); + v_MessageHeader_Response.callId := v_MessageHeader_Publish.callId; + v_MessageHeader_Response.sessionId := v_MessageHeader_Publish.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := v_MessageHeader_Publish.cSeq; + v_MessageHeader_Response.contact := cs_Contact(cs_SipUri_HostPort(px_IMS_Scscf)); + v_MessageHeader_Response.expires := cs_Expires ("600000"); + v_MessageHeader_Response.sipETag := cs_SIP_ETag("dx200xyz"); /* @sic R5s130195 BASELINE MOVING 2013 - SIP-ETag (RFC 3903) sic@ */ + + return v_MessageHeader_Response; + } + + // FFS: Code not yet used, but may be needed + altstep a_IMS_DefaultPublish() runs on IMS_PTC + { /* acc. to 34.229-1 C.5 Default handling of PUBLISH requests */ + var IMS_DATA_REQ v_IMS_DATA_REQ; + var template (present) SipUrl v_SipUrlPublicUserId := ?; /* acc. to A.4.3 in the PUBLISH request the public user id to be used in the Request-Line, From and To is "any IMPU within the set of IMPUs" + => needs to be checked after receiving as well as the tag for From and To + !!!! check function needs to be implemented !!!! */ + + [] IMS_Server.receive(car_IMS_Publish_Request(cr_PUBLISH_Request(v_SipUrlPublicUserId, f_IMS_PublishRequest_MessageHeaderRX(v_SipUrlPublicUserId)))) + -> value v_IMS_DATA_REQ + { + IMS_Server.send(cas_IMS_DATA_RSP(f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo), + cs_Response(c_statusLine200, f_IMS_PublishResponse_200_MessageHeaderTX(v_IMS_DATA_REQ.Request.Publish)))); + } + } + + } // group +} diff --git a/LTE_A_IWD_14wk37/Common/IMS/IMS_Procedures_Common.ttcn b/LTE_A_IWD_14wk37/Common/IMS/IMS_Procedures_Common.ttcn new file mode 100644 index 0000000..1293130 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS/IMS_Procedures_Common.ttcn @@ -0,0 +1,475 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-02 15:47:20 +0200 (Tue, 02 Sep 2014) $ +// $Rev: 11984 $ +/******************************************************************************/ + +module IMS_Procedures_Common { + import from CommonDefs all; + import from CommonIP all; + import from IMS_Component all; + import from IMS_ASP_TypeDefs all; + import from IMS_ASP_Templates all; + import from IP_ASP_TypeDefs all; + import from IMS_IP_Config all; + import from IMS_CommonDefs all; + import from IMS_CommonFunctions all; + import from IMS_CommonParameters all; + import from IMS_CommonTemplates all; + import from IMS_SIP_Templates all; + import from LibSip_Common all; + import from LibSip_SIPTypesAndValues all; + + type enumerated IMS_TCP_CloseHandling_Type { justWait, waitAndClose }; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + /* + * @desc common function to handle closing down TCP connections used for SIP signalling + * @param p_Handling + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_TCP_CloseHandling(IMS_TCP_CloseHandling_Type p_Handling) runs on IMS_PTC + { + f_Delay(tsc_IMS_WaitForTcpClose); + + select (p_Handling) { + case (waitAndClose) { + f_IMS_CloseTCP(); + } + case else { + // do nothing + } + } + } + + //---------------------------------------------------------------------------- + /* + * @desc check whether public user id matches with any public user id in the given list + * @param p_PublicUserIdentityList + * @param p_SipUrl + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PublicUserId_Match(CharStringList_Type p_PublicUserIdentityList, + SipUrl p_SipUrl) return boolean + { + var integer i; + + for (i:=0; i < lengthof(p_PublicUserIdentityList); i:=i+1) { + if (f_SIP_MatchURI(p_PublicUserIdentityList[i], p_SipUrl)) { + return true; + } + } + return false; + } + + //---------------------------------------------------------------------------- + /* + * @desc return server port of the network side depending on whether it is protected or not + * @return integer + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_GetPort_ps() runs on IMS_PTC return integer + { /* @sic R5s130756 additional changes: p_IsProtected removed (f_IMS_PTC_Security_IsStarted used instead) sic@ */ + var IMS_ProtectedPorts_Type v_Protected; + var integer v_Port_ps := tsc_IMS_PortNumber_5060; + + if (f_IMS_PTC_Security_IsStarted()) { + v_Protected := f_IMS_PTC_Security_GetProtectedPorts(); + v_Port_ps := v_Protected.Port_ps; // @sic R5s120907 change 2 sic@ + } + return v_Port_ps; + } + + /* + * @desc return server port of the UE side depending on whether it is protected or not + * @return integer + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_GetPort_us() runs on IMS_PTC return integer + { + var IMS_ProtectedPorts_Type v_Protected; + var integer v_Port_us := tsc_IMS_PortNumber_5060; + + if (f_IMS_PTC_Security_IsStarted()) { + v_Protected := f_IMS_PTC_Security_GetProtectedPorts(); + v_Port_us := v_Protected.Port_us; + } + return v_Port_us; + } + + //---------------------------------------------------------------------------- + /* + * @desc Usage of tags is described in RFC 3261 clause 19.3: + * when there has been a to-tag in a request the same to-tag is used in the corresponding response; + * when there is no to-tag a new to-tag and the response is for a dialog the stored to-tag is used + * when there still no to-tag a new to-tag is generated for the reponse + * @param p_RequestMessageHeader + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_Response_ToTagTX(template (value) MessageHeader p_RequestMessageHeader) runs on IMS_PTC return charstring + { /* @sic R5-131897, R5-132063 - new generic function sic@ */ + /* @sic R5s140017 MCC160 implementation: f_IMS_PTC_ImsInfo_DialogGetToTag, f_IMS_PTC_ImsInfo_DialogSetToTag replaced by f_IMS_PTC_ImsInfo_DialogGetLocalTag, f_IMS_PTC_ImsInfo_DialogSetLocalTag sic@ */ + var template (omit) charstring v_ToTag := f_MessageHeader_GetToTag(p_RequestMessageHeader); + var charstring v_Method; + + if (not isvalue(v_ToTag)) { + v_Method := valueof(p_RequestMessageHeader.cSeq.method); + if (v_Method == "INVITE") { /* @sic R5s130497 change 1 - MCC160 implementation sic@ */ + // => response belongs to a dialog + v_ToTag := f_IMS_PTC_ImsInfo_DialogGetLocalTag(); // check if there is already a tag generated for this dialog (essential e.g. in case of call-forwarding when the tag changes; see testcase 15.8) + if (not isvalue(v_ToTag)) { + v_ToTag := f_IMS_GenerateTag(v_Method); + f_IMS_PTC_ImsInfo_DialogSetLocalTag(valueof(v_ToTag)); + } + } else { + v_ToTag := f_IMS_GenerateTag(v_Method); + } + } + return valueof(v_ToTag); + } + + //---------------------------------------------------------------------------- + /* + * @desc Generate To header to be used in a response: in general the To header consists of the address and the to-tag + * @param p_RequestMessageHeader + * @return template (value) To + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_Response_ToHeaderTX(template (value) MessageHeader p_RequestMessageHeader) runs on IMS_PTC return template (value) To + { + var charstring v_ToTag := f_IMS_Response_ToTagTX(p_RequestMessageHeader); + var SipUrl v_SipUrl := f_Addr_Union_GetSipUrl(p_RequestMessageHeader.toField.addressField); + + return cs_ToWithTag(v_SipUrl, v_ToTag); + } + + /* + * @desc generate template for To header depending on whether the previous request has had a to-tog or not + * @param p_RequestMessageHeader + * @param p_Is100Response (default value: false) + * @return template (present) To + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_Response_ToHeaderRX(template (value) MessageHeader p_RequestMessageHeader, + boolean p_Is100Response := false) return template (present) To + { /* @sic R5s130685 change 1: new parameter p_Is100Response sic@ */ + var template (omit) charstring v_ToTagFromRequest := f_MessageHeader_GetToTag(p_RequestMessageHeader); + var template (value) SipUrl v_SipUrl := f_Addr_Union_GetSipUrl(p_RequestMessageHeader.toField.addressField); // @sic R5s130453 change 1 sic@ + var template (present) To v_To; + + if (ispresent(v_ToTagFromRequest)) { + v_To := cr_ToWithTag(v_SipUrl, valueof(v_ToTagFromRequest)); /* @sic R5-132063 sic@ */ + } + else if (not p_Is100Response) { + v_To := cr_ToWithTag(v_SipUrl); + } + else { + v_To := cr_ToDef(v_SipUrl); /* @sic R5s130685 change 1 sic@ */ + } + return v_To; + } + + /* + * @desc generate template for From header (the from-tag has to be the same as in the corresponding request) + * @param p_RequestMessageHeader + * @return template (present) From + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_Response_FromHeaderRX(template (value) MessageHeader p_RequestMessageHeader) return template (present) From + { + var charstring v_FromTagFromRequest := f_MessageHeader_GetFromTag(p_RequestMessageHeader); + var template (value) SipUrl v_SipUrl := f_Addr_Union_GetSipUrl(p_RequestMessageHeader.fromField.addressField); + + return cr_FromWithTag(v_SipUrl, v_FromTagFromRequest); + } + + //---------------------------------------------------------------------------- + /* + * @desc Route set acc. A.2.3 and A.3.1 + * @param p_IsEmergency (default value: false) + * @return template (value) RouteBody_List + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_RouteSet_MO_Call_TX(boolean p_IsEmergency := false) runs on IMS_PTC return template (value) RouteBody_List + { /* @sic R5s130756 change 8: new parameter p_IsEmergency sic@ */ + var template (omit) GenericParam v_SigCompParam := f_IMS_PTC_ImsInfo_GetSigCompParam(); // Compression parameter to be included in the last route parameter (see 34.229-1 cl. 13.2.4) + var template (omit) integer v_Port_ps := omit; + var template (value) RouteBody_List v_RouteBodyList; + + if (f_IMS_PTC_Security_IsStarted()) { // A1 + v_Port_ps := f_IMS_PTC_GetPort_ps(); + } // else: in case of GIBA or emergency call without registration SS server port in unprotected (and therefore left out) + + if (p_IsEmergency) { /* @sic R5s130756 change 8 sic@ + !!!! PROSE ISSUE: acc. to R5-134955 the normal emergency call would not be routed to the E-CSCF but as a normal call !!!! */ + v_RouteBodyList := { + cs_RouteBody(f_SIP_BuildSipUri_lr_TX("sip:orig@" & tsc_IMS_Ecscf)), + f_RouteBodyWithParamsTX(cs_SipUri_HostPort_lr(f_IMS_PTC_Pcscf_Get(), v_Port_ps), v_SigCompParam) + }; + } else { + v_RouteBodyList := { + cs_RouteBody(f_SIP_BuildSipUri_lr_TX("sip:pcscf.other.com")), + cs_RouteBody(f_SIP_BuildSipUri_lr_TX("sip:scscf.other.com")), + cs_RouteBody(f_SIP_BuildSipUri_lr_TX("sip:orig@" & px_IMS_Scscf)), + f_RouteBodyWithParamsTX(cs_SipUri_HostPort_lr(f_IMS_PTC_Pcscf_Get(), v_Port_ps), v_SigCompParam) + }; + } + return v_RouteBodyList; + } + + /* + * @desc Route set acc. A.2.9 + * @return template (value) RouteBody_List + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_RouteSet_MT_Call_TX() runs on IMS_PTC return template (value) RouteBody_List + { + var template (omit) GenericParam v_SigCompParam := f_IMS_PTC_ImsInfo_GetSigCompParam(); // Compression parameter to be included in the last route parameter (see 34.229-1 cl. 13.2.4) + var integer v_Port_ps := f_IMS_PTC_GetPort_ps(); + var template (value) RouteBody_List v_RouteBodyList; + + v_RouteBodyList := { + f_RouteBodyWithParamsTX(cs_SipUri_HostPort_lr(f_IMS_PTC_Pcscf_Get(), v_Port_ps), v_SigCompParam), + cs_RouteBody(f_SIP_BuildSipUri_lr_TX("sip:term@scscf1.3gpp.org")), + cs_RouteBody(f_SIP_BuildSipUri_lr_TX("sip:orig@scscf2.3gpp.org")), + cs_RouteBody(f_SIP_BuildSipUri_lr_TX("sip:pcscf2.3gpp.org")) + }; + + return v_RouteBodyList; + } + + //============================================================================ + // Check functions + //---------------------------------------------------------------------------- + + type enumerated CheckToTag_Type {noToTag, dialogToTag}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + /* + * @desc check the To header e.g. whether it has unexpected tag + * @param p_MessageHeader + * @param p_CheckType + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_MessageHeader_CheckTo(MessageHeader p_MessageHeader, + CheckToTag_Type p_CheckType) runs on IMS_PTC + { + var SemicolonParam_List v_ToParams := {}; + var template (omit) charstring v_ToTagDialog; + var template (omit) charstring v_ToTagReceived; + + if (ispresent(p_MessageHeader.toField.toParams)) { + v_ToParams := p_MessageHeader.toField.toParams; + } + select (p_CheckType) { + case (noToTag) { + if (match(v_ToParams, cr_SemicolonParam_List_WithAnyTag)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid params in 'To'"); + } + } + case (dialogToTag) { + v_ToTagDialog := f_IMS_PTC_ImsInfo_DialogGetRemoteTag(); /* @sic R5s140017 MCC160 implementation: use remote tag sic@ */ + v_ToTagReceived := f_MessageHeader_GetToTag(p_MessageHeader); + if (not ispresent(v_ToTagReceived)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Missing to-tag"); + } + if (ispresent(v_ToTagDialog) and (valueof(v_ToTagDialog) != valueof(v_ToTagReceived))) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid to-tag"); + } + } + } + } + + /* + * @desc Check Via header + * @param p_MessageHeader + * @param p_Protocol + * @param p_AllowFQDN (default value: true) + * @param p_CheckRport (default value: false) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_MessageHeader_Request_CheckVia(MessageHeader p_MessageHeader, + InternetProtocol_Type p_Protocol, + boolean p_AllowFQDN := true, + boolean p_CheckRport := false) runs on IMS_PTC + { /* p_AllowFQDN .. shall be set to false e.g. for condition A6 of A.2.1 */ + var template integer v_Port := *; + var ViaBody v_ViaBody := p_MessageHeader.via.viaBody[0]; + var charstring v_ProtocolString := f_IMS_ConvertTransportProtocolToString(p_Protocol); + + if (not f_IMS_PTC_CheckHostPortForIPAddrOrFQDN(v_ViaBody.sentBy, v_Port, p_AllowFQDN)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid host and/or port in 'via'"); + } + if (f_StringToLower(v_ProtocolString) != f_StringToLower(v_ViaBody.sentProtocol.transport)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid transport protocol in 'via'"); + } + if (p_CheckRport and (p_Protocol != tcp)) { // @sic R5-133358 rport is optional for tcp sic@ + if (not match(v_ViaBody.viaParams, cr_SemicolonParam_List_OneSpecificParamNoValue("rport"))) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "'rport' is missing in 'via'"); + } + } + } + + /* + * @desc Check whether Via header of a response sent by the UE matches Via header sent to the UE in the corresponding request + * (taking into consideration that the format of IP address representation may change) + * @param p_RequestHeader + * @param p_ResponseHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_MessageHeader_Response_CheckVia(MessageHeader p_RequestHeader, + MessageHeader p_ResponseHeader) runs on IMS_PTC + { + var integer v_LengthOfViaBody_Request := lengthof(p_RequestHeader.via.viaBody); + var integer v_LengthOfViaBody_Response := lengthof(p_ResponseHeader.via.viaBody); + var boolean v_Mismatch := false; + var integer i; + + if (v_LengthOfViaBody_Request != v_LengthOfViaBody_Response) { + v_Mismatch := true; + } else { + for (i:=0; i < v_LengthOfViaBody_Request; i:=i+1) { + if (not f_IPAddresses_Compare(p_RequestHeader.via.viaBody[i].sentBy.host, p_ResponseHeader.via.viaBody[i].sentBy.host)) { + v_Mismatch := true; + break; + } + } + } + if (v_Mismatch) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Mismatch in via header"); + } + } + + /* + * @desc Check Contact header + * @param p_MessageHeader + * @param p_AllowGRUU (default value: false) + * @param p_AllowFQDN (default value: true) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_MessageHeader_CheckContactAddr(MessageHeader p_MessageHeader, + boolean p_AllowGRUU := false, + boolean p_AllowFQDN := true) runs on IMS_PTC + { + var template integer v_Port := *; + var SipUrl v_SipUrl; + + if (not match(p_MessageHeader.contact, cr_Contact_Wildcard)) { // contact may be wildcard for de-registration + v_SipUrl := f_MessageHeader_GetContactSipUrl(p_MessageHeader); + if (not f_IMS_PTC_CheckSipUrlForIPAddrOrFQDNOrGRUU(v_SipUrl, v_Port, p_AllowGRUU, p_AllowFQDN)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid SipUrl in 'contact'"); + } + } + } + + //============================================================================ + // Generic Common Messages + //---------------------------------------------------------------------------- + /* + * @desc 200 OK for other requests than REGISTER or SUBSCRIBE (see TS 34.229, A.3.1) + * @param p_MessageHeader_Request + * @param p_ContentType (default value: omit) + * @return template (present) MessageHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_OtherResponse_200_MessageHeaderRX(template (value) MessageHeader p_MessageHeader_Request, + template ContentType p_ContentType := omit) runs on IMS_PTC return template (present) MessageHeader + { /* NOTE: Message is sent by the UE => conditions A2, A4 and A5 are applicable; + * For A4 (GIBA) pAccessNetworkInfo is optional */ + /* @sic R5-130683 sic@ */ + /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + var template (present) MessageHeader v_MessageHeader_Response := cr_MessageHeader_Dummy; + var template (present) PAccessNetworkInfo v_PAccessNetworkInfo := cr_PAccessNetworkInfoDef(f_IMS_PTC_RanType_GetString()); /* acc. to A.3.1 condition A5: access network technology and, if applicable, the cell ID */ + var boolean v_A5 := true; /* true => response sent by the UE within a dialog */ + var boolean v_A2A4 := false; /* true => Response sent by UE for INVITE/UPDATE */ + var boolean v_RequestIsInvite := false; + var boolean v_RequestIsCancel := false; + var charstring v_Method := valueof(p_MessageHeader_Request.cSeq.method); + var integer v_Port_us; + + select (v_Method) { + case ("NOTIFY", "MESSAGE") { + v_A5 := false; + } + case ("UPDATE") { + v_A2A4 := true; + } + case ("INVITE") { + v_A2A4 := true; + v_RequestIsInvite := true; + } + case ("CANCEL") { + v_RequestIsCancel := true; + } + } + v_MessageHeader_Response.via := f_Via_ResponseRX(p_MessageHeader_Request.via); /* @sic R5s140350 sic@ */ + v_MessageHeader_Response.fromField := f_IMS_Response_FromHeaderRX(p_MessageHeader_Request); /* @sic R5s130453 sic@ */ + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderRX(p_MessageHeader_Request); /* @sic R5s130183 change 4 sic@ @sic R5-131897, R5-132063 - new generic function sic@ */ + v_MessageHeader_Response.callId := p_MessageHeader_Request.callId; + v_MessageHeader_Response.sessionId := p_MessageHeader_Request.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := p_MessageHeader_Request.cSeq; + v_MessageHeader_Response.contentType := p_ContentType; + + if (not f_IMS_PTC_SecurityScheme_IsGiba() and not v_RequestIsCancel) { /* @sic R5-130683: pAccessNetworkInfo is optional for GIBA; R5s140092 change 12: CANCEL sic@ + @sic R5-142223: new condition A8: Any response sent by the UE, except for CANCEL requests sic@ */ + v_MessageHeader_Response.pAccessNetworkInfo := v_PAccessNetworkInfo; + } + else { + v_MessageHeader_Response.pAccessNetworkInfo := v_PAccessNetworkInfo ifpresent; + } + + if (v_RequestIsInvite) { /* @sic R5-135004 Change 3 sic@ + PROSE ISSUE: prose is not clear about whether there shall be any RecordRoute header for responses to requests other than INVITE */ + v_MessageHeader_Response.recordRoute := p_MessageHeader_Request.recordRoute; // @sic R5-135004: same as in the INVITE sent to the UE sic@ + } + if (v_A2A4) { + v_Port_us := f_IMS_PTC_GetPort_us(); /* @sic R5s130985 Change 2 sic@ */ + v_MessageHeader_Response.contact := cr_Contact(cr_SipUri_HostPort(?, v_Port_us)); // host address needs to be checked after receiving + } + return v_MessageHeader_Response; + } + + /* + * @desc to receive response from the UE and check Via header + * @param p_RequestHeader + * @param p_Protocol + * @param p_Response + * @param p_IMS_DATA_RSP_ByRef (by reference) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + altstep a_IMS_ReceiveResponse(template (value) MessageHeader p_RequestHeader, + template (present) InternetProtocol_Type p_Protocol, + template (present) IMS_Response_Type p_Response, + out IMS_DATA_RSP p_IMS_DATA_RSP_ByRef) runs on IMS_PTC + { + var IMS_DATA_RSP v_IMS_DATA_RSP; + + [] IMS_Client.receive(car_IMS_DATA_RSP(cr_IMS_RoutingInfo(p_Protocol), p_Response)) -> value v_IMS_DATA_RSP + { + f_IMS_MessageHeader_Response_CheckVia(valueof(p_RequestHeader), v_IMS_DATA_RSP.Response.msgHeader); + p_IMS_DATA_RSP_ByRef := v_IMS_DATA_RSP; + } + } + /* + * @desc wrapper function for a_IMS_ReceiveResponse + * @param p_RequestHeader + * @param p_Protocol + * @param p_Response + * @return IMS_DATA_RSP + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_ReceiveResponse(template (value) MessageHeader p_RequestHeader, + template (present) InternetProtocol_Type p_Protocol, + template (present) IMS_Response_Type p_Response) runs on IMS_PTC return IMS_DATA_RSP + { + var IMS_DATA_RSP v_IMS_DATA_RSP_ByRef; + a_IMS_ReceiveResponse(p_RequestHeader, p_Protocol, p_Response, v_IMS_DATA_RSP_ByRef); + return v_IMS_DATA_RSP_ByRef; + } + +} diff --git a/LTE_A_IWD_14wk37/Common/IMS/IMS_Procedures_Registration.ttcn b/LTE_A_IWD_14wk37/Common/IMS/IMS_Procedures_Registration.ttcn new file mode 100644 index 0000000..0d7c5fd --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS/IMS_Procedures_Registration.ttcn @@ -0,0 +1,1693 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-11 12:36:16 +0200 (Thu, 11 Sep 2014) $ +// $Rev: 12204 $ +/******************************************************************************/ + +module IMS_Procedures_Registration { + + import from CommonDefs all; + import from CommonIP all; + import from IMS_CommonDefs all; + import from IMS_Component all; + import from IMS_PTC_CoordMsg all; + import from IP_ASP_TypeDefs all; + import from IMS_ASP_TypeDefs all; + import from IMS_ASP_Templates all; + import from IMS_CommonParameters all; + import from IMS_CommonTemplates all; + import from IMS_SIP_Templates all; + import from IMS_MessageBody_Templates all; + import from IMS_XML_Templates all; + import from IMS_IP_Config all; + import from IMS_CommonFunctions all; + import from IMS_Procedures_Common all; + import from NAS_AuthenticationCommon all; + import from LibSip_Common all; + import from LibSip_SIPTypesAndValues all; + + //---------------------------------------------------------------------------- + /* + * @desc return security parameters out of register request message + * @param p_RegisterRequest + * @return SecurityClientParams_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_Register_GetSecurityClientParams(REGISTER_Request p_RegisterRequest) runs on IMS_PTC return SecurityClientParams_Type + { + var charstring v_IntegrityAlgStr := f_SIP_IntegrityAlgorithm_String(f_IMS_PTC_Security_GetIntegrityAlgorithm()); + var charstring v_CipheringAlgStr := f_SIP_CipheringAlgorithm_String(f_IMS_PTC_Security_GetCipheringAlgorithm()); + var SecurityMechanism_List v_SecurityMechanism_List := p_RegisterRequest.msgHeader.securityClient.securityMech; + var SemicolonParam_List v_MechParams; + var SecurityClientParams_Type v_SecurityClientParams; + var integer i; + + for (i:=0; i NOTIFY needs to be sent on this dialog and has to use the tags of this dialog + * @sic R5-131897, R5-132063 - generic handling of to-tags sic@ + * @sic R5s130660 sic@ */ + return cs_From(v_SipUrl, v_FromTag); /* @sic R5-130750: same URI as in previous SUBSCRIBE's To header sic@ */ + } + + /* + * @desc Build Contact header template to be used for sending + * @param p_RegisterRequestMessageHeader + * @param p_GRUUsInSIP + * @param p_Expires + * @return template (value) Contact + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_RegisterResponse_BuildContactHeader(MessageHeader p_RegisterRequestMessageHeader, + boolean p_GRUUsInSIP, + charstring p_Expires) runs on IMS_PTC return template (value) Contact + { /* @sic R5-130750 change 6: for now all parameters will be taken over from the REGISTER's Contact (i.e. without checking whether a particular parameter is really a feature parameter) sic@ */ + /* @sic R5s130274: wildcard in contact header of de-registration sic@ */ + var SipUrl v_ContactUrl; + var template (omit) SemicolonParam_List v_ContactParams := omit; + var charstring v_PublicUserIdForGRUU; + var boolean v_WildcardedContact := match(p_RegisterRequestMessageHeader.contact, cr_Contact_Wildcard); + + if (v_WildcardedContact) { // contact may be wildcard for de-registration + v_ContactUrl := f_IMS_PTC_ImsInfo_GetContactUrl(); + } + else { + v_ContactUrl := f_MessageHeader_GetContactSipUrl(p_RegisterRequestMessageHeader); + } + + if (p_Expires != "0") { // no de-registration + if (v_WildcardedContact) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Wildcarded contact only for de-registration"); + } + else { + v_ContactParams := p_RegisterRequestMessageHeader.contact.contactBody.contactAddresses[0].contactParams; /* @sic R5-130750 change 6 sic@ */ + } + + if (p_GRUUsInSIP) { // Add pub-gruu and temp-gruu parameters + v_PublicUserIdForGRUU := f_SIP_SipUrl_GetPublicUserIdentity(f_Addr_Union_GetSipUrl(p_RegisterRequestMessageHeader.toField.addressField)); + v_ContactParams := f_SemicolonParam_List_Add_TX(v_ContactParams, cs_GenericParam("pub-gruu", cs_IMS_ArbitraryValueFor_gr(v_PublicUserIdForGRUU))); + v_ContactParams := f_SemicolonParam_List_Add_TX(v_ContactParams, cs_GenericParam("temp-gruu", cs_IMS_TempGRUUForUE(f_IMS_PTC_ImsInfo_GetHomeDomainName()))); /* !!!! acc. to 34.229-1 A.1.3: + !!!! "with an arbitrary value in the user part and the host part matching + !!!! with the domain of the To header of the REGISTER and + !!!! gr parameter without any value" + !!!! => shall not use px_IMS_HomeDomainName ??? */ + } + } + v_ContactParams := f_SemicolonParam_List_Add_TX(v_ContactParams, cs_GenericParam("expires", p_Expires)); + + return cs_Contact(v_ContactUrl, v_ContactParams); + } + + //============================================================================ + + group CheckFunctions { + + /* + * @desc check the parameters of the Contact header + * @param p_ContactAddress + * @param p_CondA7 (default value: false) + * @param p_IMS_MTSI (default value: pc_MultimediaTelephonyService) + * @param p_IMS_GRUUsInSIP (default value: pc_IMS_GRUUsInSIP) + * @param p_IMS_SMSoverIMS (default value: tsc_IMS_SMSoverIMS) + * @param p_Video (default value: tsc_IMS_VideoFeature) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_IMS_Register_ContactAddress_CheckParams(ContactAddress p_ContactAddress, + boolean p_CondA7 := false, + boolean p_IMS_MTSI := pc_MultimediaTelephonyService, /* @sic R5s130510 additional change 1: tsc_IMS_MTSI replaced by pc_MultimediaTelephonyService sic@ */ + boolean p_IMS_GRUUsInSIP := pc_IMS_GRUUsInSIP, + boolean p_IMS_SMSoverIMS := tsc_IMS_SMSoverIMS, + boolean p_Video := tsc_IMS_VideoFeature) runs on IMS_PTC + { /* NOTE: 'Expires' can only be checked in context with the 'Expires' header field */ + var SemicolonParam_List v_ContactParams := {}; + var SemicolonParam_List v_UrlParams := {}; + var SipUrl v_SipUrl; + + if (ispresent(p_ContactAddress.contactParams)) { + v_ContactParams := p_ContactAddress.contactParams; + } + + if (p_CondA7) { + v_SipUrl := f_Addr_Union_GetSipUrl(p_ContactAddress.addressField); + if (ispresent(v_SipUrl.urlParameters)) { + v_UrlParams := v_SipUrl.urlParameters; + } + if (not match(v_UrlParams, cr_SemicolonParam_List_OneSpecificParam("sos"))) { // @sic R5s130495 change 10 sic@ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Missing sos URI parameter for 'ContactAddress'"); + } + } + // Rel-7 specific, @sic R5-073440 sic@ + if (p_IMS_MTSI) { // check 'feature-param' + if (not match(v_ContactParams, cr_FeatureParam_3gpp_icsi_ref)) { // @sic R5s130109, R5s130738: string needs to be quoted; R5-142247 sic@ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid params in 'Contact Feature Params'"); + } + } + if (p_IMS_GRUUsInSIP) { // check 'c-p-instance' + //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + // @sic R5-134659 sic@ + //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + if (not match(v_ContactParams, cr_CPInstanceInContactParams)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid params in 'ContactAddress'"); + } + } + if (p_IMS_SMSoverIMS) { // check 'feature-param' + if (not match(v_ContactParams, cr_SMSParamInContactParams)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid SMS params in 'ContactAddress'"); + } + } + if (p_Video) { // check 'feature-param' + if (not match(v_ContactParams, cr_VideoInContactParams)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid video params in 'ContactAddress'"); + } + } + } + + /* + * @desc Check the address of the Contact header + * @param p_ContactAddress + * @param p_UE_Address + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_IMS_ContactAddress_CheckHostname(ContactAddress p_ContactAddress, + IP_AddrInfo_Type p_UE_Address) runs on IMS_PTC + { /* Check whether the IP address contained in the ContactUrl matches the IP address used in IP signalling + * NOTE: acc. to 24.229 cl. 5.1.1.2.1 the ContactUrl contains the IP address or FQDN (fully qualified domain name) of the UE in the hostport parameter */ + /* @sic R5w130106 - square brackets to be handled by codec sic@ */ + var charstring v_HostAddress; + var SipUrl v_SipUrl := f_Addr_Union_GetSipUrl(p_ContactAddress.addressField); /* @sic R5s130235 additional changes sic@ */ + + if (not ispresent(v_SipUrl.components.sip.hostPort.host)) { /* @sic R5s130195 BASELINE MOVING 2013: change of SipUrl sic@ */ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Contact: addr-spec is missing"); + return; + } + + v_HostAddress := v_SipUrl.components.sip.hostPort.host; + + if (f_IpAddressIsIPv4(v_HostAddress)) { + if (ischosen(p_UE_Address.V6)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Contact: addr-spec contains IPv4 address but IPv6 address expected"); + } + else if (v_HostAddress != p_UE_Address.V4.Addr) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Contact: addr-spec contains " & v_HostAddress & " but " & p_UE_Address.V4.Addr & " expected"); + } + } + else if (f_IpAddressIsIPv6(v_HostAddress)) { + if (ischosen(p_UE_Address.V4)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Contact: addr-spec contains IPv6 address but IPv4 address expected"); + } + else if (f_Convert_IPv6Addr2OctString(v_HostAddress) != f_Convert_IPv6Addr2OctString(p_UE_Address.V6.Addr)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Contact: addr-spec contains " & v_HostAddress & " but " & p_UE_Address.V6.Addr & " expected"); + } + } + else { + // v_HostAddress is neither IPv4 nor IPv6 address => FQDN (fully qualified domain name) + // => Check of the UE's FQDN (if necessary) is FFS + } + } + + /* + * @desc Check the SecurityClient header + * @param p_SecClient + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_IMS_SecurityClient_Check(SecurityClient p_SecClient) runs on IMS_PTC + { /* @sic R5s130710 - MCC160 Implementation: p_Confidentiality removed sic@ */ + + var IPsec_CipheringAlgorithm_Type v_CipheringAlgorithm := f_IMS_PTC_Security_GetCipheringAlgorithm(); /* @sic R5s130710 - MCC160 Implementation sic@ */ + + //Check that mandatory fields are there (normally that should already be done in the receive template of the request message) + if (not match(p_SecClient, cr_SecClientMandatoryFields)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid 'SecurityClient'"); + } + + //Check optional fields + if (match (p_SecClient, cr_SecClientOptionalProtAny) and not match (p_SecClient, cr_SecClientOptionalProt)) { //"prot" parameter is there with a value different to "esp" + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid 'SecurityClient'"); + } + + if (match (p_SecClient, cr_SecClientOptionalModAny) and not match (p_SecClient, cr_SecClientOptionalMod)) { //"mod" parameter is there with a value different to "trans" + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid 'SecurityClient'"); + } + + //Check confidentiality parameter + if (v_CipheringAlgorithm != nociph) { /* @sic R5s130710 - MCC160 Implementation sic@ */ + if (not match(p_SecClient, cr_SecClientEalg)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid 'SecurityClient'"); + } + } + else { + if (not match(p_SecClient, cr_SecClientEalgNull) and match (p_SecClient, cr_SecClientEalgAny)) { //"ealg" parameter is there with a value different to "null" + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid 'SecurityClient'"); + } + } + } + + /* + * @desc check Authorization header sent by the UE + * @param p_Authorization + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_IMS_Authorization_Check(Authorization p_Authorization) runs on IMS_PTC + { + var charstring v_Dresponse; + + if (not ischosen(p_Authorization.body[0].digestResponse)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid 'Authorization'"); + return; + } + v_Dresponse := f_SIP_CommaParamList_GetParamValue(p_Authorization.body[0].digestResponse, "response"); + if (v_Dresponse != "") { // empty value for A1, A3 + if (not f_IMS_Authorization_CheckDigestResponse(-, p_Authorization.body[0].digestResponse, f_IMS_PTC_Security_GetXRES(), f_IMS_PTC_Security_GetXRESLength())) { // @sic R5s120907 sic@ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "DigestResponse not as expected"); + } + } + } + + /* + * @desc check that 'Expires' is included either as header field or as parameter in 'Contact' or in both; + * NOTE: 'contact' may be wildcard e.g. in case of de-registration + * @param p_MessageHeader + * @param p_ExplicitExpiry (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_IMS_MessageHeader_CheckExpires(MessageHeader p_MessageHeader, + template (omit) charstring p_ExplicitExpiry := omit) runs on IMS_PTC + { + var SemicolonParam_List v_ContactParams := {}; + var boolean v_ExpiresFound := false; + var boolean v_MisMatch := false; + var charstring v_DeltaSec := tsc_IMS_ExpiresDef; + + if (isvalue(p_ExplicitExpiry)) { + v_DeltaSec := valueof(p_ExplicitExpiry); + } + + if (ispresent(p_MessageHeader.expires)) { + v_ExpiresFound := true; + v_MisMatch := not match(p_MessageHeader.expires, cr_Expires(v_DeltaSec)); + } + + if (ispresent(p_MessageHeader.contact.contactBody.contactAddresses[0].contactParams)) { + v_ContactParams := p_MessageHeader.contact.contactBody.contactAddresses[0].contactParams; + if (match(v_ContactParams, cr_ExpiresInContactParams)) { + v_ExpiresFound := true; + v_MisMatch := not match(v_ContactParams, cr_ExpiresInContactParams(v_DeltaSec)); // NOTE: 'expires' in ContactParams overrules value of 'Expires' header field + } + } + if (isvalue(p_ExplicitExpiry) and not v_ExpiresFound) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "'expires' found neither in header field nor in contact address"); + } + if (v_MisMatch) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "'expires': wrong value"); + } + } + + /* + * @desc Additional checks of the REGISTER acc. to A.1.1 + * @param p_MessageHeader + * @param p_Protocol + * @param p_CondA7 (default value: false) + * @param p_UE_Address (default value: omit) + * @param p_ExplicitExpiry (default value: omit) + * @param p_CheckAuthorization (default value: true) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_A_1_1_MessageHeader_CommonChecks(MessageHeader p_MessageHeader, + InternetProtocol_Type p_Protocol, + boolean p_CondA7 := false, + template (omit) IP_AddrInfo_Type p_UE_Address := omit, + template (omit) charstring p_ExplicitExpiry := omit, + boolean p_CheckAuthorization := true) runs on IMS_PTC + { + var ContactAddress v_ContactAddress; + var boolean v_IsDeregistration := ispresent(p_ExplicitExpiry) and (str2int(valueof(p_ExplicitExpiry)) == 0); + + f_IMS_MessageHeader_Request_CheckVia(p_MessageHeader, p_Protocol); // @sic R5s120727 change 7, 8 sic@ + f_IMS_MessageHeader_CheckContactAddr(p_MessageHeader); // @sic R5s120727 change 7, 8 sic@ + + // Check 'To' + f_IMS_MessageHeader_CheckTo(p_MessageHeader, noToTag); + + // Check 'ContactAddress' + if (ispresent(p_MessageHeader.contact.contactBody.contactAddresses[0])) { /* NOTE: is not be present when 'contact' is wildcard e.g. in case of de-registration + * but in this case the respective receive template needs to allow 'cr_ContactWildcard' */ + v_ContactAddress := p_MessageHeader.contact.contactBody.contactAddresses[0]; + if (not v_IsDeregistration) { /* @sic R5-142956: in case of deregistration no further contact parameters need to be checked sic@ */ + fl_IMS_Register_ContactAddress_CheckParams(v_ContactAddress, p_CondA7); + } + if (isvalue(p_UE_Address)) { + fl_IMS_ContactAddress_CheckHostname(v_ContactAddress, valueof(p_UE_Address)); + } + } + + // Check 'SecurityClient' + if (ispresent(p_MessageHeader.securityClient)) { /* 'SecurityClient' is only included for A1, A2 but not for A3 */ + fl_IMS_SecurityClient_Check(p_MessageHeader.securityClient); + } + + // Check 'Authorization' + if (p_CheckAuthorization and ispresent(p_MessageHeader.authorization)) { /* 'Authorization' is only included for A2 but optional for A1, A3 */ + fl_IMS_Authorization_Check(p_MessageHeader.authorization); + } + + fl_IMS_MessageHeader_CheckExpires(p_MessageHeader, p_ExplicitExpiry); + } + + /* + * @desc Check whether message header contains parameter for sig compression + * @param p_MessageHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_MessageHeader_CheckSigComp(MessageHeader p_MessageHeader) runs on IMS_PTC + { + var ViaBody v_ViaBody0; + var ContactAddress v_ContactAddress0; + + // Check sigcomp Test 13.1 + v_ViaBody0 := p_MessageHeader.via.viaBody[0]; + if (not (match (v_ViaBody0.viaParams, cr_SigCompParam))){ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "No SigComp parameter in Via header"); + } + v_ContactAddress0 := p_MessageHeader.contact.contactBody.contactAddresses[0]; + if (not (match (v_ContactAddress0.contactParams, cr_SigCompParam))){ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "No SigComp parameter in Contact header"); + } + } + + /* + * @desc check correctness of the public user id used by the UE for registration + * @param p_SipUrl + * @param p_CondA7 (default value: false) + * @param p_CondA3 (default value: false) + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_PublicUserIdentity_Check(SipUrl p_SipUrl, + boolean p_CondA7 := false, + boolean p_CondA3 := false) runs on IMS_PTC return boolean + { /* p_CondA7 .. In case of emergency registration acc. 24.229 cl. 5.1.1.1A "The first public user identity in the list stored in the ISIM is used in emergency registration requests" + p_CondA3 .. REGISTER for the case UE supports GIBA; @sic R5s140356: p_CondA3 sic@ */ + + if (px_UEwithISIM and not p_CondA3) { + if (not p_CondA7) { // no emergency registration + if (f_IMS_PublicUserId_Match(f_IMS_PTC_ImsInfo_GetAllIMPUs(), p_SipUrl)) { + return true; + } + } else { // emergency registration + if (f_SIP_MatchURI(f_IMS_PTC_ImsInfo_GetURI(emergencyId), p_SipUrl)) { + return true; + } + } + } else { + /* @sic R5-133628: check of temporary user id sic@ */ + if (f_SIP_MatchURI(f_IMS_PTC_ImsInfo_GetURI(temporaryId), p_SipUrl)) { + return true; + } + } + return false; + } + + /* + * @desc check whether at intial registration the UE sends a correct PublicUserIdentity in 'From' and 'To' + * @param p_MessageHeader + * @param p_CondA7 (default value: false) + * @param p_CondA3 (default value: false) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_A_1_1_MessageHeader_CheckPublicUserIdentity(MessageHeader p_MessageHeader, + boolean p_CondA7 := false, + boolean p_CondA3 := false) runs on IMS_PTC + { /* p_CondA7 .. Initial IMS emergency registration (see fl_PublicUserIdentity_Check) + p_CondA3 .. REGISTER for the case UE supports GIBA; @sic R5s140356: p_CondA3 sic@ */ + var SipUrl v_SipUrlFrom := f_Addr_Union_GetSipUrl(p_MessageHeader.fromField.addressField); /* @sic R5s130235 additional changes sic@ */ + var SipUrl v_SipUrlTo := f_Addr_Union_GetSipUrl(p_MessageHeader.toField.addressField); /* @sic R5s130235 additional changes sic@ */ + + if (not fl_PublicUserIdentity_Check(v_SipUrlTo, p_CondA7, p_CondA3)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid public user identity in 'toField' of the REGISTER request"); + } + + if (f_SIP_SipUrl2Str(v_SipUrlFrom) != f_SIP_SipUrl2Str(v_SipUrlTo)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "public user identity is different in From and To header of the REGISTER request"); + } + } + + } // group + + //============================================================================ + + group SendReceiveFunctions { + + + /* + * @desc wait for REGISTER when it has not been received yet + * @param p_IMS_DATA_REQ + * @return IMS_DATA_REQ + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_IMS_ReceiveOrGetRegisterRequest(template (omit) IMS_DATA_REQ p_IMS_DATA_REQ) runs on IMS_PTC return IMS_DATA_REQ + { + var IMS_DATA_REQ v_IMS_DATA_REQ; + var template (present) SipUrl v_SipUrl := cr_SipUri_HostPort(f_IMS_PTC_ImsInfo_GetHomeDomainName()); + + if (not isvalue(p_IMS_DATA_REQ)) { + IMS_Server.receive(car_IMS_Register_Request(cr_REGISTER_Request(v_SipUrl))) -> value v_IMS_DATA_REQ; // receive any REGISTER + } else { + v_IMS_DATA_REQ := valueof(p_IMS_DATA_REQ); + } + return v_IMS_DATA_REQ; + } + + //---------------------------------------------------------------------------- + /* + * @desc 200 OK for Register (see TS 34.229, A.1.3) + * @param p_RegisterRequest + * @param p_CondA3 (default value: false) + * @param p_RegisterExpiration (default value: tsc_IMS_RegisterExpiration) + * @return template (value) MessageHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_RegisterResponse_200_MessageHeaderTX(REGISTER_Request p_RegisterRequest, + boolean p_CondA3 := false, + charstring p_RegisterExpiration := tsc_IMS_RegisterExpiration) runs on IMS_PTC return template (value) MessageHeader + { /* p_CondA3 .. condition A3 (Response for an emergency registration) */ + /* @sic R5-130750 change 1, 4: specific IMPU for messages sent in DL; P-Associated-URI sic@ */ + var MessageHeader v_MessageHeader_Register := p_RegisterRequest.msgHeader; + var template (value) MessageHeader v_MessageHeader_Response := cs_MessageHeader_Dummy; + var CharStringList_Type v_PublicUserIdList := f_IMS_PTC_ImsInfo_GetAllIMPUs(); + var CharStringList_Type v_AssociatedUriList; + var template (value) NameAddrParam_List v_NameAddrParamList; + var template (omit) ServiceRoute v_ServiceRoute := omit; + var integer i; + + if (p_CondA3) { // emergency registration + v_AssociatedUriList[0] := f_IMS_PTC_ImsInfo_GetURI(emergencyId); + } + else { + for (i:=0; i < lengthof(v_PublicUserIdList); i := i+1) { + v_AssociatedUriList[i] := v_PublicUserIdList[i]; + } + v_AssociatedUriList[i] := px_IMS_AssociatedTelUri; + + v_ServiceRoute := cs_ServiceRouteDef(px_IMS_Scscf); + } + + for (i:=0; i < lengthof(v_AssociatedUriList); i := i+1) { + v_NameAddrParamList[i] := cs_NameAddrParam(f_SIP_BuildSipUri_TX(v_AssociatedUriList[i])); + } + + v_MessageHeader_Response.via := v_MessageHeader_Register.via; + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderTX(v_MessageHeader_Register); /* @sic R5s130235 additional changes sic@ @sic R5-131897, R5-132063 - generic handling of to-tags sic@ */ + v_MessageHeader_Response.fromField := v_MessageHeader_Register.fromField; + v_MessageHeader_Response.callId := v_MessageHeader_Register.callId; + v_MessageHeader_Response.sessionId := v_MessageHeader_Register.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := v_MessageHeader_Register.cSeq; + v_MessageHeader_Response.contact := f_SIP_RegisterResponse_BuildContactHeader(v_MessageHeader_Register, pc_IMS_GRUUsInSIP, p_RegisterExpiration); + v_MessageHeader_Response.pAssociatedURI := cs_PAssociatedURI(v_NameAddrParamList); + v_MessageHeader_Response.serviceRoute := v_ServiceRoute; + v_MessageHeader_Response.path := cs_PathDef(f_IMS_PTC_Pcscf_Get()); + + return v_MessageHeader_Response; + } + + /* + * @desc 401 Unauthorized for Register (see TS 34.229, A.1.2) + * @param p_RegisterRequest + * @param p_Nonce (default value: omit) + * @return template (value) MessageHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_RegisterResponse_401_MessageHeaderTX(REGISTER_Request p_RegisterRequest, + template (omit) charstring p_Nonce := omit) runs on IMS_PTC return template (value) MessageHeader + { + var MessageHeader v_MessageHeader_Register := p_RegisterRequest.msgHeader; + var charstring v_Nonce; + var template (value) SecurityMechanism_List v_SecurityMech := f_IMS_PTC_BuildSecurityServerParam(); + var template (value) MessageHeader v_MessageHeader_Response := cs_MessageHeader_Dummy; + + if (not isvalue(p_Nonce)) { + v_Nonce := f_IMS_PTC_Security_GetNonce(); + } else { + v_Nonce := valueof(p_Nonce); + } + + v_MessageHeader_Response.via := v_MessageHeader_Register.via; + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderTX(v_MessageHeader_Register); /* @sic R5s130235 additional changes sic@ @sic R5-131897, R5-132063 - generic handling of to-tags sic@ */ + v_MessageHeader_Response.fromField := v_MessageHeader_Register.fromField; + v_MessageHeader_Response.callId := v_MessageHeader_Register.callId; + v_MessageHeader_Response.sessionId := v_MessageHeader_Register.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := v_MessageHeader_Register.cSeq; + v_MessageHeader_Response.wwwAuthenticate := cs_WwwAuthChallenge(f_IMS_PTC_ImsInfo_GetHomeDomainName(), v_Nonce); // @sic R5s120727 change 2 sic@ + v_MessageHeader_Response.securityServer := cs_SecServerDef(v_SecurityMech); + + return v_MessageHeader_Response; + } + + /* + * @desc 403 Forbidden (see TS 34.229, A.3.2) + * @param p_RegisterRequest + * @return template (value) MessageHeader + * @status APPROVED (IMS, IMS_IRAT) + */ + function f_IMS_RegisterResponse_403_MessageHeaderTX(REGISTER_Request p_RegisterRequest) runs on IMS_PTC return template (value) MessageHeader + { + var MessageHeader v_MessageHeader_Register := p_RegisterRequest.msgHeader; + var template (value) MessageHeader v_MessageHeader_Response := cs_MessageHeader_Dummy; + + v_MessageHeader_Response.via := v_MessageHeader_Register.via; + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderTX(v_MessageHeader_Register); /* @sic R5s130235 additional changes sic@ @sic R5-131897, R5-132063 - generic handling of to-tags sic@ */ + v_MessageHeader_Response.fromField := v_MessageHeader_Register.fromField; + v_MessageHeader_Response.callId := v_MessageHeader_Register.callId; + v_MessageHeader_Response.sessionId := v_MessageHeader_Register.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := v_MessageHeader_Register.cSeq; + + return v_MessageHeader_Response; + } + + /* + * @desc 200 OK for Subscribe (see TS 34.229, A.1.5) + * @param p_SubscribeRequest + * @param p_RecordRoute + * @param p_ExpireTime (default value: "600000") + * @param p_ContactAddr (default value: px_IMS_Scscf) + * @return template (value) MessageHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_SubscribeResponse_200_MessageHeaderTX(SUBSCRIBE_Request p_SubscribeRequest, + template (value) RecordRoute p_RecordRoute, + charstring p_ExpireTime := "600000", + charstring p_ContactAddr := px_IMS_Scscf) runs on IMS_PTC return template (value) MessageHeader + { /* NOTE: acc. to A.1.5 this message does not have a Session-ID */ + var MessageHeader v_MessageHeader_Subscribe := p_SubscribeRequest.msgHeader; + var template (value) MessageHeader v_MessageHeader_Response := cs_MessageHeader_Dummy; + + v_MessageHeader_Response.via := v_MessageHeader_Subscribe.via; + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderTX(p_SubscribeRequest.msgHeader); /* @sic R5-130750 same as in SUBSCRIBE, R5s130235 additional changes sic@ + @sic R5-131897, R5-132063 - generic handling of to-tags sic@ */ + v_MessageHeader_Response.fromField := v_MessageHeader_Subscribe.fromField; + v_MessageHeader_Response.callId := v_MessageHeader_Subscribe.callId; + v_MessageHeader_Response.cSeq := v_MessageHeader_Subscribe.cSeq; + v_MessageHeader_Response.contact := cs_Contact(cs_SipUri_HostPort(p_ContactAddr)); // @sic R5s120727 change 3 sic@ + v_MessageHeader_Response.expires := cs_Expires (p_ExpireTime); // @sic R5-130548 sic@ + v_MessageHeader_Response.recordRoute := p_RecordRoute; + + return v_MessageHeader_Response; + } + + /* + * @desc 503 Service Unavailable (see TS 34.229, A.4.2) + * @param p_MessageHeader_Request + * @param p_RetryAfter + * @return template (value) MessageHeader + * @status APPROVED (IMS) + */ + function f_IMS_CommonResponse_503_MessageHeaderTX(MessageHeader p_MessageHeader_Request, + template (value) RetryAfter p_RetryAfter) runs on IMS_PTC return template (value) MessageHeader + { + var template (value) MessageHeader v_MessageHeader_Response := cs_MessageHeader_Dummy; + + v_MessageHeader_Response.via := p_MessageHeader_Request.via; + v_MessageHeader_Response.fromField := p_MessageHeader_Request.fromField; + v_MessageHeader_Response.toField := f_IMS_Response_ToHeaderTX(p_MessageHeader_Request); + v_MessageHeader_Response.callId := p_MessageHeader_Request.callId; + v_MessageHeader_Response.sessionId := p_MessageHeader_Request.sessionId; /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Response.cSeq := p_MessageHeader_Request.cSeq; + v_MessageHeader_Response.retryAfter := p_RetryAfter; + + return v_MessageHeader_Response; + } + + //---------------------------------------------------------------------------- + /* + * @desc used for initialisation of f_IMS_RegisterRequest_MessageHeaderRX_Initial/Subsequent with headers being common + * @param p_CondA3 + * @param p_CseqValue + * @param p_SessionIdSupported (default value: false) + * @return template (present) MessageHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_IMS_RegisterRequest_MessageHeaderRX_Base(boolean p_CondA3, + template (present) integer p_CseqValue, + boolean p_SessionIdSupported := false) return template (present) MessageHeader + { + var template (present) MessageHeader v_MessageHeader_Register := cr_MessageHeader_Dummy; + + v_MessageHeader_Register.cSeq := cr_CseqDef(p_CseqValue, "REGISTER"); + v_MessageHeader_Register.expires := *; // as the 'expires' information can be included in 'expires' as well as in 'contact' (or in both) it needs to be checked seperately + v_MessageHeader_Register.supported := cr_Supported_Register; + v_MessageHeader_Register.callId := cr_CallId(?); // per default call id itself is not checked at all + v_MessageHeader_Register.sessionId := f_IMS_SessionId_RX_IfSupported(p_SessionIdSupported); /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Register.maxForwards := cr_MaxForwardsDef; + + if (p_CondA3) { + v_MessageHeader_Register.require := omit; + v_MessageHeader_Register.proxyRequire := omit; + v_MessageHeader_Register.securityClient := omit; + v_MessageHeader_Register.securityVerify := omit; + v_MessageHeader_Register.authorization := omit; + } + else { + v_MessageHeader_Register.require := cr_RequireSecAgree; + v_MessageHeader_Register.proxyRequire := cr_ProxyRequireDef; + v_MessageHeader_Register.securityClient := cr_SecClientMandatoryFields; + } + return v_MessageHeader_Register; + } + + /* + * @desc initial REGISTER (condition A1 or A3) acc. to 34.229-1 Annex A.1.1 + * @param p_Protocol + * @return template (present) MessageHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_RegisterRequest_MessageHeaderRX_Initial(InternetProtocol_Type p_Protocol) runs on IMS_PTC return template (present) MessageHeader + { /* NOTE: several checks are done explicitly in the respective check functions applied on the receive messages (the same for sigcomp) */ + /* @sic R5s130XXX: p_CondA3 removed sic@ */ + + var boolean v_CondA3 := f_IMS_PTC_SecurityScheme_IsGiba(); + var template (present) SipUrl v_SipUrlPublicUserId := ?; /* Acc. to 24.229 cl. 5.1.1.2.1 for initial registration the UE shall populate + 'To' and 'From' with the public user identity to be registered; + Normally this is one of the IMPUs stored on the ISIM; + The public user identity is explicitly checked after matching the REGISTER message */ + var template (present) integer v_CseqValue := ?; + var template (present) MessageHeader v_MessageHeader_Register := fl_IMS_RegisterRequest_MessageHeaderRX_Base(v_CondA3, v_CseqValue); + var template (present) Via v_Via; + + if (p_Protocol == tcp) { + v_Via := cr_ViaDef; // @sic R5s120858 change 2; R5s130369; R5-133358: "rport" is optional for tcp (independent from A3) sic@ + } else { + v_Via := cr_ViaInitialReg; + } + + v_MessageHeader_Register.via := v_Via; + v_MessageHeader_Register.route := omit; // @sic R5-134659 sic@ + v_MessageHeader_Register.fromField := cr_FromWithTag(v_SipUrlPublicUserId); // checked in f_IMS_A_1_1_MessageHeader_CheckPublicUserIdentity + v_MessageHeader_Register.toField := cr_ToDef(v_SipUrlPublicUserId); // checked in f_IMS_A_1_1_MessageHeader_CheckPublicUserIdentity + v_MessageHeader_Register.contact := cr_Contact(cr_SipUri_HostPort(?, *)); // checked in fl_IMS_Register_ContactAddress_CheckParams, f_IMS_A_1_1_MessageHeader_CommonChecks + + v_MessageHeader_Register.pAccessNetworkInfo := cr_PAccessNetworkInfoDef(f_IMS_PTC_RanType_GetString()) ifpresent; // optional for A1, A3; cellId is not checked + + if (not v_CondA3) { // => 34.229-1 A.1.1 condition A1 + v_MessageHeader_Register.securityVerify := omit; + v_MessageHeader_Register.authorization := cr_AuthorizationInitial(f_IMS_PTC_ImsInfo_GetPrivateUserId(), f_IMS_PTC_ImsInfo_GetHomeDomainName()); + } + return v_MessageHeader_Register; + } + + /* + * @desc subsequent REGISTER (condition A2) acc. to 34.229-1 Annex A.1.1 + * @param p_NonceCount + * @return template (present) MessageHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_RegisterRequest_MessageHeaderRX_Subsequent(integer p_NonceCount) runs on IMS_PTC return template (present) MessageHeader + { /* p_NonceCount .. Acc. to A.1.1 "counter to indicate how many times UE has sent the same value of nonce within successive REGISTERs, initial value shall be 1" + * => during initial registration "1" is used per default; for each re-authentication (=> new nonce) the nonce-counter is reset to "1" + */ + var template (present) MessageHeader v_MessageHeader_Register; + var template (present) SipUrl v_SipUrlPublicUserId; + var charstring v_Nonce := f_IMS_PTC_Security_GetNonce(); + var charstring v_NonceCountStr := "0000000" & int2str(p_NonceCount); // assuming p_NonceCount < 9 + var IMS_ProtectedPorts_Type v_Protected := f_IMS_PTC_Security_GetProtectedPorts(); + var integer v_CseqValue := f_IMS_PTC_ImsInfo_CseqIncr(register); + var boolean v_IsGiba := false; + + v_SipUrlPublicUserId := f_SIP_BuildSipUri_RX(f_IMS_PTC_ImsInfo_GetURI(registrationId)); /* public user identity is checked against what the UE has sent in initial REGISTER + (in case the UE does not have an ISIM this is the temporary user id) + => we don't need to consider A7 (emergency registration) */ + v_MessageHeader_Register := fl_IMS_RegisterRequest_MessageHeaderRX_Base(v_IsGiba, v_CseqValue); + + v_MessageHeader_Register.route := omit; // @sic R5-134659 sic@ + v_MessageHeader_Register.via := cr_ViaDef(-, cr_HostPort(?, v_Protected.Port_us)); // @sic R5s120727 change 7 sic@ + v_MessageHeader_Register.fromField := cr_FromWithTag(v_SipUrlPublicUserId); + v_MessageHeader_Register.toField := cr_ToDef(v_SipUrlPublicUserId); + v_MessageHeader_Register.contact := cr_Contact(cr_SipUri_HostPort(?, v_Protected.Port_us)); // checked in f_IMS_A_1_1_MessageHeader_CommonChecks; @sic R5s120727 change 7 sic@ + + v_MessageHeader_Register.pAccessNetworkInfo := cr_PAccessNetworkInfoDef(f_IMS_PTC_RanType_GetString()); // cell id only if applicable + v_MessageHeader_Register.securityVerify := f_IMS_PTC_BuildSecurityVerifyHeader(); + v_MessageHeader_Register.authorization := cr_AuthorizationDef(f_IMS_PTC_ImsInfo_GetPrivateUserId(), f_IMS_PTC_ImsInfo_GetHomeDomainName(), v_Nonce, v_NonceCountStr); + + return v_MessageHeader_Register; + } + + /* + * @desc REGISTER to de-register + * @return template (present) MessageHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_RegisterRequest_MessageHeaderRX_Derregister() runs on IMS_PTC return template (present) MessageHeader + { + var boolean v_CondA3 := f_IMS_PTC_SecurityScheme_IsGiba(); // condition A3 acc. to 34.229-1 Annex A.1.1 (REGISTER for the case UE supports GIBA) + var template (present) MessageHeader v_MessageHeader_Register; + var template (present) SipUrl v_SipUrlPublicUserId := f_SIP_BuildSipUri_RX(f_IMS_PTC_ImsInfo_GetURI(registrationId)); /* public user identity is checked against what the UE has sent in initial REGISTER + NOTE: there is no indication in 34.229-1 to check this */ + var template (present) integer v_CseqValue := f_IMS_PTC_ImsInfo_CseqIncr(register); + var IMS_ProtectedPorts_Type v_Protected; + var charstring v_Nonce; + + v_MessageHeader_Register := fl_IMS_RegisterRequest_MessageHeaderRX_Base(v_CondA3, v_CseqValue); + + // common parameters for A2 and A3: + v_MessageHeader_Register.fromField := cr_FromWithTag(v_SipUrlPublicUserId); + v_MessageHeader_Register.toField := cr_ToDef(v_SipUrlPublicUserId); + v_MessageHeader_Register.supported := *; // Supported: header may be missing or it may contain any value + v_MessageHeader_Register.route := omit; // @sic R5-134659 sic@ + + if (v_CondA3) { + v_MessageHeader_Register.via := cr_ViaDef; + v_MessageHeader_Register.contact := (cr_Contact_Wildcard, cr_Contact(cr_SipUri_HostPort(?, *))); + } + else { + v_Protected := f_IMS_PTC_Security_GetProtectedPorts(); + v_Nonce := f_IMS_PTC_Security_GetNonce(); + + v_MessageHeader_Register.via := cr_ViaDef(-, cr_HostPort(?, v_Protected.Port_us)); // address will be checked in f_IMS_A_1_1_MessageHeader_CommonChecks (@sic R5s120727 sic@) + v_MessageHeader_Register.contact := (cr_Contact_Wildcard, cr_Contact(cr_SipUri_HostPort(?, v_Protected.Port_us))); // address will be checked in f_IMS_A_1_1_MessageHeader_CommonChecks (@sic R5s120727 sic@) + + v_MessageHeader_Register.pAccessNetworkInfo := cr_PAccessNetworkInfoDef(f_IMS_PTC_RanType_GetString()); // cell id only if applicable + v_MessageHeader_Register.securityVerify := f_IMS_PTC_BuildSecurityVerifyHeader(); + v_MessageHeader_Register.authorization := cr_AuthorizationDef(f_IMS_PTC_ImsInfo_GetPrivateUserId(), f_IMS_PTC_ImsInfo_GetHomeDomainName(), v_Nonce, ?); + } + return v_MessageHeader_Register; + } + + //---------------------------------------------------------------------------- + + /* + * @desc SUBSCRIBE acc. to 34.229-1 Annex A.1.4, A.5.1 or A.6.1 + * @param p_EventType (default value: "reg") + * @param p_SipUrlTo (default value: omit) + * @param p_ExpireTime (default value: "600000") + * @param p_SessionIdSupported (default value: false) + * @return template (present) MessageHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_SubscribeRequest_MessageHeaderRX(EventType p_EventType := "reg", + template SipUrl p_SipUrlTo := omit, + template (present) charstring p_ExpireTime := "600000", + boolean p_SessionIdSupported := false) runs on IMS_PTC return template (present) MessageHeader + { /* p_EventType: + * "reg" - normal case acc. A.1.4 + * "conference" - "SUBSCRIBE for conference event package" acc. annex A.5.1; NOTE in this case p_SipUrlTo shall be present and set acc. to "px_FinalConferenceUri" + * "message-summary" - "SUBSCRIBE for Message Waiting Indication package" acc. annex A.6.1 */ + /* @sic R5-130750 change 4: specific IMPU for messages sent in DL sic@ */ + /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + var template (present) MessageHeader v_MessageHeader_Subscribe := cr_MessageHeader_Dummy; + var IMS_ProtectedPorts_Type v_Protected; + var template (present) PAccessNetworkInfo v_PAccessNetworkInfo := cr_PAccessNetworkInfoDef(f_IMS_PTC_RanType_GetString()); + var template (present) SipUrl v_SipUrlFrom := f_IMS_PTC_ImsInfo_GetSipUriSubscriptionRX(); + var template (present) SipUrl v_SipUrlTo; + + if (ispresent(p_SipUrlTo)) { + v_SipUrlTo := p_SipUrlTo; // NOTE: compiler warning cannot be avoided here + } else { + v_SipUrlTo := v_SipUrlFrom; + } + + v_MessageHeader_Subscribe.cSeq := cr_CseqDef(?, "SUBSCRIBE"); + v_MessageHeader_Subscribe.fromField := cr_FromWithTag(v_SipUrlFrom); + v_MessageHeader_Subscribe.toField := cr_ToDef(v_SipUrlTo); + v_MessageHeader_Subscribe.expires := cr_Expires(p_ExpireTime); // @sic R5-130548 sic@ + v_MessageHeader_Subscribe.callId := cr_CallId(?); + v_MessageHeader_Subscribe.sessionId := f_IMS_SessionId_RX_IfSupported(p_SessionIdSupported); /* @sic R5s130195 BASELINE MOVING 2013 - SessionId sic@ */ + v_MessageHeader_Subscribe.maxForwards := cr_MaxForwardsDef; + v_MessageHeader_Subscribe.event := cr_EventDef(p_EventType); + + if (f_IMS_PTC_SecurityScheme_IsGiba()) { + v_MessageHeader_Subscribe.route := cr_RouteSubs (f_IMS_PTC_Pcscf_Get(), *, px_IMS_Scscf); + v_MessageHeader_Subscribe.via := cr_ViaDef(-, cr_HostPort(?)); /* host address needs to be checked after receiving @sic R5s120727 change 6.1 sic@ */ + v_MessageHeader_Subscribe.contact := cr_Contact(cr_SipUri_HostPort(?, ?)); /* host address needs to be checked after receiving @sic R5s120727 change 6.1 sic@ + @sic R5s130925 change 1: UE may use any port as server port sic@ */ + + v_MessageHeader_Subscribe.require := omit; + v_MessageHeader_Subscribe.proxyRequire := omit; + v_MessageHeader_Subscribe.securityVerify := omit; + v_MessageHeader_Subscribe.pAccessNetworkInfo := v_PAccessNetworkInfo ifpresent; + } + else { + v_Protected := f_IMS_PTC_Security_GetProtectedPorts(); + v_MessageHeader_Subscribe.route := cr_RouteSubs (f_IMS_PTC_Pcscf_Get(), v_Protected.Port_ps, px_IMS_Scscf); + v_MessageHeader_Subscribe.via := cr_ViaDef(-, cr_HostPort(?, v_Protected.Port_us)); // host address needs to be checked after receiving @sic R5s120727 change 6.1 sic@ + v_MessageHeader_Subscribe.contact := cr_Contact(cr_SipUri_HostPort(?, v_Protected.Port_us)); // host address needs to be checked after receiving @sic R5s120727 change 6.1 sic@ + + v_MessageHeader_Subscribe.require := cr_RequireSecAgree; + v_MessageHeader_Subscribe.proxyRequire := cr_ProxyRequireDef; + v_MessageHeader_Subscribe.securityVerify := f_IMS_PTC_BuildSecurityVerifyHeader(); + v_MessageHeader_Subscribe.pAccessNetworkInfo := v_PAccessNetworkInfo + } + + select (p_EventType) { + case ("reg") { // normal case + v_MessageHeader_Subscribe.accept := cr_AcceptDef(c_xmlreginfoApplication) ifpresent; + } + case ("conference") { // "SUBSCRIBE for conference event package" acc. annex A.5.1 + v_MessageHeader_Subscribe.accept := cr_AcceptDef("application/conference-info+xml"); + v_MessageHeader_Subscribe.expires := cr_Expires(?); + } + case ("message-summary") { // "SUBSCRIBE for Message Waiting Indication package" acc. annex A.6.1 + v_MessageHeader_Subscribe.accept := cr_AcceptDef("application/simple-message-summary") + } + } + + return v_MessageHeader_Subscribe; + } + + } // group + + //============================================================================ + + group RegistrationFunctions { + + /* + * @desc Receive initial REGISTER (condition A1 or A3) acc. to 34.229-1 Annex A.1.1 + * @param p_IMS_DATA_REQ (default value: omit) + * @param p_ExplicitExpiry (default value: omit) + * @param p_SigCompIsActive (default value: false) + * @param p_CondA7 (default value: false) + * @param p_CondA3 (default value: false) + * @return IMS_DATA_REQ + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_REGISTER_InitialRequest(template (omit) IMS_DATA_REQ p_IMS_DATA_REQ := omit, + template (omit) charstring p_ExplicitExpiry := omit, + boolean p_SigCompIsActive := false, + boolean p_CondA7 := false, + boolean p_CondA3 := false) runs on IMS_PTC return IMS_DATA_REQ + { /* p_CondA7 .. condition A7 acc. to 34.229-1 Annex A.1.1 (Initial IMS emergency registration) + p_CondA3 .. REGISTER for the case UE supports GIBA; @sic R5s140356: p_CondA3 sic@ */ + /* @sic R5s130756 additional changes: p_CondA3 removed sic@ */ + /* @sic R5-134659: check of Route header removed sic@ */ + var IPCAN_INFO_Type v_IpcanInfo; + var IMS_DATA_REQ v_IMS_DATA_REQ; + var IMS_RoutingInfo_Type v_RoutingInfo_UL; + var InternetProtocol_Type v_Protocol; + var IP_AddrInfo_Type v_UE_Address; + var IP_AddrInfo_Type v_NW_Address; + var MessageHeader v_MessageHeader; + var boolean v_Match := false; + + v_IMS_DATA_REQ := fl_IMS_ReceiveOrGetRegisterRequest(p_IMS_DATA_REQ); + v_MessageHeader := v_IMS_DATA_REQ.Request.Register.msgHeader; + v_Protocol := v_IMS_DATA_REQ.RoutingInfo.Protocol; + + v_IpcanInfo := f_IMS_IPCAN_Query(IPCAN); + f_IMS_PTC_SetIpcanInfo(v_IpcanInfo); + + v_Match := match(v_MessageHeader, f_IMS_RegisterRequest_MessageHeaderRX_Initial(v_Protocol)); // @sic R5s130369 sic@ + if (not v_Match) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "invalid REGISTER Request"); + } + v_RoutingInfo_UL := v_IMS_DATA_REQ.RoutingInfo; + v_UE_Address := v_RoutingInfo_UL.UE_Address; + v_NW_Address := v_RoutingInfo_UL.NW_Address; + v_Protocol := v_RoutingInfo_UL.Protocol; + + f_IMS_PTC_ImsInfo_Init(v_UE_Address, v_NW_Address, v_IMS_DATA_REQ.Request.Register, p_SigCompIsActive); + + // additional checks + f_IMS_A_1_1_MessageHeader_CommonChecks(v_MessageHeader, v_Protocol, p_CondA7, v_UE_Address, p_ExplicitExpiry); + f_IMS_A_1_1_MessageHeader_CheckPublicUserIdentity(v_MessageHeader, p_CondA7, p_CondA3); // check 'To' and 'From' field (needed for initial registration only); @sic R5s140356: p_CondA3 sic@ + if (p_SigCompIsActive) { + f_IMS_MessageHeader_CheckSigComp(v_MessageHeader); + } + + return v_IMS_DATA_REQ; + } + + + /* + * @desc local initialisation of ports and spis at the IMS PTC + * @param p_RegisterReq + * @param p_AuthenticationParams + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_Register_SecurityInitPortsAndSPIs(REGISTER_Request p_RegisterReq, + Common_AuthenticationParams_Type p_AuthenticationParams) runs on IMS_PTC + { /* @sic R5s131004 - MCC160 implementation: new function sic@ */ + var SecurityClientParams_Type v_SecurityClientParams := f_IMS_Register_GetSecurityClientParams(p_RegisterReq); // @sic R5s140266 sic@ + + /* initialise or re-initialise SPIs and protected ports of the network side: */ + f_IMS_PTC_Security_Init(p_AuthenticationParams, v_SecurityClientParams.Port_us, v_SecurityClientParams.Port_uc, v_SecurityClientParams.SPI_us, v_SecurityClientParams.SPI_uc); + } + + + /* + * @desc Initialise security during registration procedure + * @param p_RegisterReq + * @param p_Rand (default value: tsc_IMS_AuthRAND) + * @param p_Unprotected (default value: false) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_Register_SecurityInit(REGISTER_Request p_RegisterReq, + B128_Type p_Rand := tsc_IMS_AuthRAND, + boolean p_Unprotected := false) runs on IMS_PTC + { /* @sic R5s120858 change 6..8 - MCC160 implementation: additional parameter p_Unprotected to deal with GIBA sic@ */ + /* @sic R5s130266 change 1.3, 4, 5 - MCC160 Implementation: SPIs for re-authentication sic@ */ + var Common_AuthenticationParams_Type v_AuthenticationParams := f_IMS_AuthenticationInit(p_Rand); + var IP_AddrInfo_Type v_UE_Address := f_IMS_PTC_UE_Address_Get(); + var IP_AddrInfo_Type v_NW_Address := f_IMS_PTC_NW_Address_Get(); + var SipUrl v_ContactUrl := f_MessageHeader_GetContactSipUrl(p_RegisterReq.msgHeader); + + if (p_Unprotected) { + f_IMS_PortsAndSecurityConfig(f_SIP_ContactUrl_GetPort(v_ContactUrl), // may be omit in which case 5060 is chosen by the IP PTC + v_NW_Address, + v_UE_Address); + } + else { + f_IMS_InstallIPsecKeys(v_AuthenticationParams.IK, v_AuthenticationParams.CK); + + f_IMS_Register_SecurityInitPortsAndSPIs(p_RegisterReq, v_AuthenticationParams); /* @sic R5s131004 - MCC160 implementation: use of f_IMS_Register_SecurityInitPortsAndSPIs sic@ */ + + /* configure IMS security; any existing security context will be released + * NOTE: release of the security context is not done at the end of the deregistration since it is not sure that the deregistration really happens and + * when realeasing the security directly after sending the deregistration it may lead to timing issues */ + f_IMS_PortsAndSecurityConfig(f_SIP_ContactUrl_GetPort(v_ContactUrl), // may be omit in which case 5060 is chosen by the IP PTC + v_NW_Address, + v_UE_Address, + cs_IMS_SecurityInfo(f_IMS_PTC_Security_GetProtectedPorts(), + f_IMS_PTC_Security_GetSPIs(), + f_IMS_PTC_Security_GetIntegrityAlgorithm(), + f_IMS_PTC_Security_GetCipheringAlgorithm())); + + } + } + + /* + * @desc Receive subsequent REGISTER (condition A2) acc. to 34.229-1 Annex A.1.1 + * @param p_IMS_DATA_REQ (default value: omit) + * @param p_CondA7 (default value: false) + * @param p_NonceCount (default value: 1) + * @param p_ExplicitExpiry (default value: omit) + * @return IMS_DATA_REQ + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_REGISTER_SubsequentRequest(template (omit) IMS_DATA_REQ p_IMS_DATA_REQ := omit, + boolean p_CondA7 := false, + integer p_NonceCount := 1, + template (omit) charstring p_ExplicitExpiry := omit) runs on IMS_PTC return IMS_DATA_REQ + { /* p_CondA7 .. condition A7 acc. to 34.229-1 Annex A.1.1 (Initial IMS emergency registration) + * p_NonceCount .. Acc. to A.1.1 "counter to indicate how many times UE has sent the same value of nonce within successive REGISTERs, initial value shall be 1" + * => during initial registration "1" is used per default; for each re-authentication (=> new nonce) the nonce-counter is reset to "1" + */ + var IP_AddrInfo_Type v_UE_Address := f_IMS_PTC_UE_Address_Get(); + var IMS_DATA_REQ v_IMS_DATA_REQ; + var REGISTER_Request v_RegisterReq; + var MessageHeader v_MessageHeader; + var InternetProtocol_Type v_Protocol; + var boolean v_Match := false; + + // Receive/Get second REGISTER on secure port: + v_IMS_DATA_REQ := fl_IMS_ReceiveOrGetRegisterRequest(p_IMS_DATA_REQ); + v_RegisterReq := v_IMS_DATA_REQ.Request.Register; + v_Protocol := v_IMS_DATA_REQ.RoutingInfo.Protocol; + v_MessageHeader := v_RegisterReq.msgHeader; + + v_Match := match(v_MessageHeader, f_IMS_RegisterRequest_MessageHeaderRX_Subsequent(p_NonceCount)); + if (not v_Match) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "invalid REGISTER Request"); + } + else { + f_IMS_A_1_1_MessageHeader_CommonChecks(v_MessageHeader, v_Protocol, p_CondA7, v_UE_Address, p_ExplicitExpiry); // @sic R5s120945 sic@ + + if (f_IMS_PTC_ImsInfo_SigCompStarted()) { + f_IMS_MessageHeader_CheckSigComp(v_MessageHeader); + } + } + f_IMS_PTC_ImsInfo_SetContactUrl(f_MessageHeader_GetContactSipUrl(v_MessageHeader)); + return v_IMS_DATA_REQ; + } + + /* + * @desc receive REGISTER (non GIBA) and send reponse + * @param p_IMS_DATA_REQ (default value: omit) + * @param p_RegisterExpiration (default value: tsc_IMS_RegisterExpiration) + * @param p_SigCompIsActive (default value: false) + * @param p_IsEmergency (default value: false) + * @return REGISTER_Request + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_Register_NonGIBA(template (omit) IMS_DATA_REQ p_IMS_DATA_REQ := omit, + charstring p_RegisterExpiration := tsc_IMS_RegisterExpiration, + boolean p_SigCompIsActive := false, + boolean p_IsEmergency := false) runs on IMS_PTC return REGISTER_Request + { /* Note: + - In case the the function is called in a default handler the Register message has been already received + - When used in the IMS CC tests the PTC needs to wait for the reception of the Register message */ + var IMS_DATA_REQ v_IMS_DATA_REQ; + var REGISTER_Request v_RegisterReq; + + v_IMS_DATA_REQ := f_IMS_REGISTER_InitialRequest(p_IMS_DATA_REQ, -, p_SigCompIsActive, p_IsEmergency); // check REGISTER and init GlobalInfo + v_RegisterReq := v_IMS_DATA_REQ.Request.Register; + + f_IMS_Register_SecurityInit(v_RegisterReq); + IMS_Server.send(cas_IMS_DATA_RSP(f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo), cs_Response(c_statusLine401, f_IMS_RegisterResponse_401_MessageHeaderTX(v_RegisterReq)))); + + v_IMS_DATA_REQ := f_IMS_REGISTER_SubsequentRequest(-, p_IsEmergency); + v_RegisterReq := v_IMS_DATA_REQ.Request.Register; + IMS_Server.send(cas_IMS_DATA_RSP(f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo), cs_Response(c_statusLine200, f_IMS_RegisterResponse_200_MessageHeaderTX(v_RegisterReq, p_IsEmergency, p_RegisterExpiration)))); // @sic R5s130561 sic@ + + return v_RegisterReq; + } + + /* + * @desc common function for IMS registration (GIBA) + * @param p_IMS_DATA_REQ (default value: omit) + * @param p_RegisterExpiration (default value: tsc_IMS_RegisterExpiration) + * @return REGISTER_Request + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_Register_GIBA(template (omit) IMS_DATA_REQ p_IMS_DATA_REQ := omit, + charstring p_RegisterExpiration := tsc_IMS_RegisterExpiration) runs on IMS_PTC return REGISTER_Request + { /* Note: + - In case the the function is called in a default handler the Register message has been already received + - When used in the IMS CC tests the PTC needs to wait for the reception of the Register message */ + + var IMS_DATA_REQ v_IMS_DATA_REQ; + var REGISTER_Request v_RegisterReq; + var boolean v_CondA3 := true; + + v_IMS_DATA_REQ := f_IMS_REGISTER_InitialRequest(p_IMS_DATA_REQ, -, -, -, v_CondA3); // check REGISTER and init GlobalInfo; @sic R5s140356: v_CondA3 sic@ + v_RegisterReq := v_IMS_DATA_REQ.Request.Register; + + f_IMS_Register_SecurityInit(v_RegisterReq, -, v_CondA3); // @sic R5s120858 change 6..8 - MCC160 implementation sic@ + + IMS_Server.send(cas_IMS_DATA_RSP(f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo), cs_Response(c_statusLine200, f_IMS_RegisterResponse_200_MessageHeaderTX(v_RegisterReq, -, p_RegisterExpiration)))); + return v_RegisterReq; + } + + /* + * @desc common function for IMS registration + * @param p_IMS_DATA_REQ (default value: omit) + * @param p_SigCompIsActive (default value: false) + * @return REGISTER_Request + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_Register(template (omit) IMS_DATA_REQ p_IMS_DATA_REQ := omit, + boolean p_SigCompIsActive := false) runs on IMS_PTC return REGISTER_Request + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + var REGISTER_Request v_RegisterRequest; + + if (f_IMS_PTC_SecurityScheme_IsGiba()) { + if (p_SigCompIsActive) { + FatalError(__FILE__, __LINE__, "sigcomp is not supported for GIBA"); + } + v_RegisterRequest := f_IMS_Register_GIBA(p_IMS_DATA_REQ); + } else { + v_RegisterRequest := f_IMS_Register_NonGIBA(p_IMS_DATA_REQ, -, p_SigCompIsActive); + } + return v_RegisterRequest; + } + + //============================================================================ + /* + * @desc Receive SUBSCRIBE acc. to 34.229-1 Annex A.1.4 + * @param p_EventType (default value: "reg") + * @param p_SipUrlTo (default value: omit) + * @param p_ExpireTime (default value: "600000") + * @return IMS_DATA_REQ + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_SUBSCRIBE_Request(EventType p_EventType := "reg", + template SipUrl p_SipUrlTo := omit, + template (present) charstring p_ExpireTime := "600000") runs on IMS_PTC return IMS_DATA_REQ + { /* @sic R5-130750 change 4: specific IMPU for messages sent in DL sic@ */ + /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + var IMS_DATA_REQ v_IMS_DATA_REQ; + var MessageHeader v_MessageHeader; + var InternetProtocol_Type v_Protocol; + var template (present) SipUrl v_SipUrlRequestUri := f_IMS_PTC_ImsInfo_GetSipUriSubscriptionRX(); + var template (present) MessageHeader v_ExpectedMessageHeader; + + v_ExpectedMessageHeader := f_IMS_SubscribeRequest_MessageHeaderRX(p_EventType, p_SipUrlTo, p_ExpireTime); + IMS_Server.receive(car_IMS_Subscribe_Request(cr_SUBSCRIBE_Request(v_SipUrlRequestUri, v_ExpectedMessageHeader))) -> value v_IMS_DATA_REQ; + v_MessageHeader := v_IMS_DATA_REQ.Request.Subscribe.msgHeader; + v_Protocol := v_IMS_DATA_REQ.RoutingInfo.Protocol; + + f_IMS_MessageHeader_CheckTo(v_MessageHeader, noToTag); // This cannot be checked in the template + + f_IMS_MessageHeader_Request_CheckVia(v_MessageHeader, v_Protocol); // @sic R5s120727 change 9 sic@ + f_IMS_MessageHeader_CheckContactAddr(v_MessageHeader, true); // @sic R5s120727 change 9 sic@ + + if (f_IMS_PTC_ImsInfo_SigCompStarted()) { + f_IMS_MessageHeader_CheckSigComp(v_MessageHeader); + } + return v_IMS_DATA_REQ; + } + + /* + * @desc Send 200 OK for SUBSCRIBE acc. to 34.229-1 Annex A.1.5 or Annex 5.2 + * @param p_IMS_Subscribe_Request + * @param p_ExpireTime (default value: "600000") + * @param p_ContactAddr (default value: px_IMS_Scscf) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_SUBSCRIBE_Response(IMS_DATA_REQ p_IMS_Subscribe_Request, + charstring p_ExpireTime := "600000", + charstring p_ContactAddr := px_IMS_Scscf) runs on IMS_PTC + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + var IMS_RoutingInfo_Type v_RoutingInfo_UL; + var SUBSCRIBE_Request v_SubscribeRequest; + var template (value) RouteBody_List v_RouteBodyList; + var charstring v_RouteHost := f_IMS_PTC_Pcscf_Get(); + var integer v_Port_ps := f_IMS_PTC_GetPort_ps(); + var template (omit) GenericParam v_SigCompParam := f_IMS_PTC_ImsInfo_GetSigCompParam(); + + v_RoutingInfo_UL := p_IMS_Subscribe_Request.RoutingInfo; + v_SubscribeRequest := p_IMS_Subscribe_Request.Request.Subscribe; + v_RouteBodyList := { f_RouteBodyWithParamsTX(cs_SipUri_HostPort_lr(v_RouteHost, v_Port_ps), v_SigCompParam) }; + + IMS_Server.send(cas_IMS_DATA_RSP(f_IMS_RoutingInfo_ULtoDL(v_RoutingInfo_UL), cs_Response(c_statusLine200, f_IMS_SubscribeResponse_200_MessageHeaderTX(v_SubscribeRequest, + cs_RecordRoute(v_RouteBodyList), + p_ExpireTime, + p_ContactAddr)))); + } + + /* + * @desc receive SUBSCRIBE and send response + * @return SUBSCRIBE_Request + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_Register_Subscribe() runs on IMS_PTC return SUBSCRIBE_Request + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + var IMS_DATA_REQ v_IMS_DATA_REQ; + + v_IMS_DATA_REQ := f_IMS_SUBSCRIBE_Request(); + f_IMS_SUBSCRIBE_Response(v_IMS_DATA_REQ); + + return v_IMS_DATA_REQ.Request.Subscribe; + } + + //---------------------------------------------------------------------------- + /* + * @desc Common function for NOTIFY message + * @param p_SubscribeRequest + * @param p_ViaAddressList + * @param p_ContactSipUrl + * @param p_EventType + * @param p_CseqValue + * @param p_SubscriptionState + * @return template (value) MessageHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_NotifyRequest_MessageHeader_Common(SUBSCRIBE_Request p_SubscribeRequest, + CharStringList_Type p_ViaAddressList, + template (value) SipUrl p_ContactSipUrl, + EventType p_EventType, + integer p_CseqValue, + template (value) SubscriptionState p_SubscriptionState) + runs on IMS_PTC return template (value) MessageHeader + { /* NOTE: acc. to A.1.6 this message does not have a Session-ID */ + /* @sic R5s130756 additional changes: p_CondA2 removed sic@ */ + var template (value) MessageHeader v_MessageHeader_Notify := cs_MessageHeader_Dummy; + var charstring v_ProtocolString := f_IMS_ConvertTransportProtocolToString(f_IMS_PTC_ImsInfo_GetTransportProtocol()); + var template (omit) integer v_Port_ps := f_IMS_PTC_GetPort_ps(); // @sic R5s120907 change 5 - Port_ps instead of Port_us sic@ + var template (omit) GenericParam v_SigCompParam := f_IMS_PTC_ImsInfo_GetSigCompParam(); + var template (value) ViaBody_List v_ViaBodyList; + var charstring v_NextBranch; + var charstring v_ContentType; + var integer i; + + for (i:=0; i < lengthof(p_ViaAddressList); i:=i+1) { + v_NextBranch := f_IMS_PTC_ImsInfo_GetNextBranch(); + v_ViaBodyList[i] := cs_ViaBody(v_ProtocolString, cs_HostPort(p_ViaAddressList[i], v_Port_ps), f_ViaParamsTX(v_NextBranch, v_SigCompParam)); + if (i == 0) { + v_Port_ps := omit; + v_SigCompParam := omit; + } + } + select (p_EventType) { + case ("reg") { v_ContentType := c_xmlreginfoApplication; } + case ("message-summary") { v_ContentType := "application/simple-message-summary"; } + case ("conference") { v_ContentType := "application/conference-info+xml"; } + case else { FatalError(__FILE__, __LINE__, "unknown event type"); } + } + + v_MessageHeader_Notify.via := cs_Via(v_ViaBodyList); + v_MessageHeader_Notify.fromField := f_IMS_Notify_FromHeaderTX(p_SubscribeRequest.msgHeader); + v_MessageHeader_Notify.toField := f_IMS_Notify_ToHeaderTX(p_SubscribeRequest.msgHeader); + v_MessageHeader_Notify.callId := p_SubscribeRequest.msgHeader.callId; + // v_MessageHeader_Notify.sessionId := p_SubscribeRequest.msgHeader.sessionId; to be added by appropriate CR + v_MessageHeader_Notify.cSeq := cs_CseqDef(p_CseqValue, "NOTIFY"); + v_MessageHeader_Notify.contact := cs_Contact(p_ContactSipUrl); + v_MessageHeader_Notify.contentType := cs_ContentType(v_ContentType); + v_MessageHeader_Notify.event := cs_EventDef(p_EventType); + v_MessageHeader_Notify.maxForwards := cs_MaxForwardsDef(69); + v_MessageHeader_Notify.subscriptionState := p_SubscriptionState; + + return v_MessageHeader_Notify; + } + + /* + * @desc Send NOTIFY acc. to 34.229-1 Annex A.1.6 + * @param p_SubscribeRequest + * @param p_CseqValue + * @param p_SubscriptionState + * @return template (value) MessageHeader + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_NotifyRequest_MessageHeader_A16(SUBSCRIBE_Request p_SubscribeRequest, + integer p_CseqValue, + template (value) SubscriptionState p_SubscriptionState) runs on IMS_PTC return template (value) MessageHeader + { /* NOTE: acc. to A.1.6 this message does not have a Session-ID */ + /* @sic R5s130756 additional changes: p_CondA2 removed sic@ */ + /* @sic R5s130768 additional MCC160 change: use of new function f_IMS_NotifyRequest_MessageHeader_Common sic@ */ + var charstring v_NW_AddrStr := f_IMS_PTC_NW_Address_GetAddrStr(); /* @sic R5s130133 change 6: f_IMS_PTC_NW_Address_GetHostFormat replaced by f_IMS_PTC_NW_Address_GetAddrStr sic@ */ + var charstring v_Scscf := px_IMS_Scscf; + var CharStringList_Type v_ViaAddressList := {v_NW_AddrStr, v_Scscf}; + var template (value) SipUrl v_ContactSipUrl := cs_SipUri_HostPort(v_Scscf); // @sic R5s120727 change 10 sic@ + var EventType v_EventType := "reg"; + + return f_IMS_NotifyRequest_MessageHeader_Common(p_SubscribeRequest, v_ViaAddressList, v_ContactSipUrl, v_EventType, p_CseqValue, p_SubscriptionState); + } + + //---------------------------------------------------------------------------- + /* + * @desc Send NOTIFY acc. to 34.229-1 Annex A.1.6 + * @param p_ContactUrl + * @param p_SubscribeRequest + * @param p_XmlMessage + * @param p_CseqValue (default value: 1) + * @param p_SubscriptionState (default value: cs_SubscriptionState_Active) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_Register_Notify(SipUrl p_ContactUrl, + SUBSCRIBE_Request p_SubscribeRequest, + template (value) Reginfo_Type p_XmlMessage, + integer p_CseqValue := 1, + template (value) SubscriptionState p_SubscriptionState := cs_SubscriptionState_Active) runs on IMS_PTC + { /* @sic R5s130756 additional changes: p_CondA2 removed sic@ */ + var template (value) MessageHeader v_MessageHeader_Notify; + var template (present) MessageHeader v_MessageHeader_Response; + var InternetProtocol_Type v_Protocol := f_IMS_PTC_ImsInfo_GetTransportProtocol(); + + v_MessageHeader_Notify := f_IMS_NotifyRequest_MessageHeader_A16(p_SubscribeRequest, p_CseqValue, p_SubscriptionState); + IMS_Client.send(cas_IMS_Notify_Request(cs_IMS_RoutingInfo(v_Protocol), cs_NOTIFY_Request(p_ContactUrl, v_MessageHeader_Notify, cs_MessageBody_RegInfo(p_XmlMessage)))); + + v_MessageHeader_Response := f_IMS_OtherResponse_200_MessageHeaderRX(v_MessageHeader_Notify); + f_IMS_ReceiveResponse(v_MessageHeader_Notify, v_Protocol, cr_Response(c_statusLine200, v_MessageHeader_Response)); /* @sic R5s140350 sic@ */ + } + + //---------------------------------------------------------------------------- + /* + * @desc return RegInfo.Registration + * @param p_RegisterRequest + * @param p_Uri + * @param p_RegistrationId + * @param p_ContactId + * @param p_ContactState (default value: active) + * @param p_ContactEvent (default value: registered) + * @param p_Expires (default value: omit) + * @param p_ApplyGRUU (default value: pc_IMS_GRUUsInSIP) + * @param p_IsTelUri (default value: false) + * @return template (value) RegInfo_Registration_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_XML_RegistrationInfo(REGISTER_Request p_RegisterRequest, + charstring p_Uri, + charstring p_RegistrationId, + charstring p_ContactId, + RegInfo_Contact_State_Type p_ContactState := active, + RegInfo_Contact_Event_Type p_ContactEvent := registered, + template (omit) integer p_Expires := omit, + boolean p_ApplyGRUU := pc_IMS_GRUUsInSIP, + boolean p_IsTelUri := false) + runs on IMS_PTC return template (value) RegInfo_Registration_Type + { + var charstring v_ContactUri := f_SIP_SipUrl2Str(f_MessageHeader_GetContactSipUrl(p_RegisterRequest.msgHeader)); // same value as in Contact header of REGISTER request + var template (omit) charstring v_CallId := omit; + var template (omit) integer v_Cseq := omit; + var template (omit) PubGruu_Type v_PubGruu := omit; + var template (omit) TempGruu_Type v_TempGruu := omit; + var template (value) RegInfo_Contact_UnknownParams_Type v_UnknownParams := {}; + var RegInfo_Registration_State_Type v_RegistrationState; + + if (p_ContactState == active) { + v_RegistrationState := active; + } else { + v_RegistrationState := terminated; + } + + if (p_ApplyGRUU) { + v_PubGruu := cs_PubGruu(p_Uri); /* !!!! "public GRUU for the UE" acc. to 34.229-1 A.1.6; !!!! + !!!! NOTE: it is not specified what the public GRUU really is and which URI to be used; !!!! + !!!! assumption: it is the same URI as for this registration !!!! */ + v_TempGruu := cs_TempGruu(f_IMS_PTC_ImsInfo_GetHomeDomainName(), p_RegisterRequest.msgHeader.cSeq.seqNumber); /* !!!! acc. to 34.229-1 A.1.6 "temporary GRUU for the UE" !!!! + !!!! -> open issue: how to build up the temp GRUU; where to take the domain name from !!!! */ + v_UnknownParams := { cs_XML_UEInstance }; + if (not p_IsTelUri) { + v_CallId := p_RegisterRequest.msgHeader.callId.callid; // Call-Id of most recent REGISTER + v_Cseq := p_RegisterRequest.msgHeader.cSeq.seqNumber; // CSeq value of most recent REGISTER + } + } + return cs_RegistrationInfo(cs_RegistrationContact(v_ContactUri, p_ContactId, p_ContactState, p_ContactEvent, v_CallId, v_Cseq, p_Expires, v_UnknownParams, v_PubGruu, v_TempGruu), + p_Uri, + p_RegistrationId, + v_RegistrationState); + } + + template (value) RegInfo_RegistrationList_Type cs_RegistrationList (template (value) RegInfo_Registration_Type p_Reg1, + template (value) RegInfo_Registration_Type p_Reg2, + template (value) RegInfo_Registration_Type p_Reg3, + template (value) RegInfo_Registration_Type p_Reg4) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + { p_Reg1, p_Reg2, p_Reg3, p_Reg4 }; + + template (value) RegInfo_RegistrationList_Type cs_RegistrationListOf3 (template (value) RegInfo_Registration_Type p_Reg1, + template (value) RegInfo_Registration_Type p_Reg2, + template (value) RegInfo_Registration_Type p_Reg3) := + { p_Reg1, p_Reg2, p_Reg3}; + + /* + * @desc return default Reginfo for NOTIFY message + * @param p_RegisterRequest + * @return template (value) Reginfo_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_XmlMessageForNotify_Def(REGISTER_Request p_RegisterRequest) runs on IMS_PTC return template (value) Reginfo_Type + { /* @sic R5-130750 sic@ */ + var CharStringList_Type v_PublicUeserIdList := f_IMS_PTC_ImsInfo_GetAllIMPUs(); + var template (value) RegInfo_Registration_Type v_Registration1 := f_XML_RegistrationInfo(p_RegisterRequest, v_PublicUeserIdList[0], "a100", "980", active, registered); + var template (value) RegInfo_Registration_Type v_Registration2 := f_XML_RegistrationInfo(p_RegisterRequest, px_IMS_AssociatedTelUri, "a101", "981", active, created, -, -, true); + var template (value) RegInfo_Registration_Type v_Registration3 := f_XML_RegistrationInfo(p_RegisterRequest, v_PublicUeserIdList[1], "a102", "982", active, registered); + var template (value) RegInfo_Registration_Type v_Registration4 := f_XML_RegistrationInfo(p_RegisterRequest, v_PublicUeserIdList[2], "a103", "983", active, registered); + + return f_XML_RegInfo(-, -, cs_RegistrationList (v_Registration1, v_Registration2, v_Registration3, v_Registration4)); + } + + //---------------------------------------------------------------------------- + /* + * @desc C.2 / C.2a Generic Registration Test Procedure - IMS support + * This is the second half of the generic Registration procedure (Steps 8 to 11) + * @param p_RegisterRequest + * @return SUBSCRIBE_Request + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_Register_SubscribeNotify(REGISTER_Request p_RegisterRequest) runs on IMS_PTC return SUBSCRIBE_Request + { /* @sic R5s130756 additional changes: p_IsGIBA removed sic@ */ + var SUBSCRIBE_Request v_SubscribeReq; + var SipUrl v_ContactUrl := f_MessageHeader_GetContactSipUrl(p_RegisterRequest.msgHeader); + + // Steps 8 and 9 + v_SubscribeReq := f_IMS_Register_Subscribe(); + + // Steps 10 and 11 + f_IMS_Register_Notify(v_ContactUrl, v_SubscribeReq, f_IMS_XmlMessageForNotify_Def(p_RegisterRequest)); + + return v_SubscribeReq; + } + + //---------------------------------------------------------------------------- + /* + * @desc procedure to de-register UE acc. to 34.229-1 C.30 + * @param p_IMS_DATA_REQ (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_PTC_Deregistration(template (omit) IMS_DATA_REQ p_IMS_DATA_REQ := omit) runs on IMS_PTC + { /* @sic R5-140902: no delay needed anymore to wait for TCP close sic@ */ + var IMS_DATA_REQ v_IMS_DATA_REQ; + var MessageHeader v_MessageHeader; + var IP_AddrInfo_Type v_UE_Address := f_IMS_PTC_UE_Address_Get(); + var InternetProtocol_Type v_Protocol; + var charstring v_Expires := "0"; + var boolean v_Match := false; + + v_IMS_DATA_REQ := fl_IMS_ReceiveOrGetRegisterRequest(p_IMS_DATA_REQ); + v_MessageHeader := v_IMS_DATA_REQ.Request.Register.msgHeader; + v_Protocol := v_IMS_DATA_REQ.RoutingInfo.Protocol; + + v_Match := match(v_MessageHeader, f_IMS_RegisterRequest_MessageHeaderRX_Derregister()); + if (not v_Match) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "invalid REGISTER Request for de-registration"); + } + else { + f_IMS_A_1_1_MessageHeader_CommonChecks(v_MessageHeader, v_Protocol, -, v_UE_Address, v_Expires); // check expires: to be 0 and present either in Expires or in contact or in both (-> 8.3.4/8.13.4) + } + IMS_Server.send(cas_IMS_DATA_RSP(f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo), + cs_Response(c_statusLine200, f_IMS_RegisterResponse_200_MessageHeaderTX(v_IMS_DATA_REQ.Request.Register, -, v_Expires)))); // @sic R5s130274: v_Expires sic@ + + f_IMS_TCP_CloseHandling(waitAndClose); /* @sic R5s140219 - MCC160 implementation sic@ */ + } + + //============================================================================ + // re-registration: used e.g. for test cases 8.2 and 11.2 + + type record SecurityClientParams_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + PortNumber_Type Port_us, + PortNumber_Type Port_uc, + IPsec_SPI_Type SPI_us, + IPsec_SPI_Type SPI_uc + }; + + /* + * @desc Get Security Client parameters for re-registration (if re-authentication is applicable) + * @return SecurityClientParams_Type + * @status APPROVED (IMS) + */ + function f_IMS_PTC_ReRegistration_SecurityClientParamsGet() + runs on IMS_PTC return SecurityClientParams_Type + { + var SecurityClientParams_Type v_SecurityClientParams; + var IMS_ProtectedPorts_Type v_Protected := f_IMS_PTC_Security_GetProtectedPorts(); + var IMS_SPIs_Type v_SPIs := f_IMS_PTC_Security_GetSPIs(); + + v_SecurityClientParams.Port_us := v_Protected.Port_us; + v_SecurityClientParams.Port_uc := v_Protected.Port_uc; + v_SecurityClientParams.SPI_us := v_SPIs.SPI_us; + v_SecurityClientParams.SPI_uc := v_SPIs.SPI_uc; + + return v_SecurityClientParams; + } + + /* + * @desc check port numbers and SPIs sent by the UE for re-registration + * @param p_RegisterReq + * @param p_PrevSecurityClientParams + * @return SecurityClientParams_Type + * @status APPROVED (IMS) + */ + function f_IMS_PTC_ReRegistration_SecurityClientParamsCheck(REGISTER_Request p_RegisterReq, + SecurityClientParams_Type p_PrevSecurityClientParams) + runs on IMS_PTC return SecurityClientParams_Type + { /* p_PrevSecurityClientParams .. security parameters as being used for configuration of the security at the SS side + * i.e. as used for the latest (re-)authentication */ + var SecurityClientParams_Type v_SecurityClientParams := f_IMS_Register_GetSecurityClientParams(p_RegisterReq); // @sic R5s140266 sic@ + + if ((v_SecurityClientParams.SPI_uc == p_PrevSecurityClientParams.SPI_uc) or + (v_SecurityClientParams.SPI_us == p_PrevSecurityClientParams.SPI_us) or + (v_SecurityClientParams.Port_uc == p_PrevSecurityClientParams.Port_uc) or + (v_SecurityClientParams.Port_us != p_PrevSecurityClientParams.Port_us)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, ""); + } else { + f_IMS_PreliminaryPass(__FILE__, __LINE__, ""); + } + return v_SecurityClientParams; + } + + /* + * @desc Wait for the UE to do re-registration + * @param p_TRegExpireMin + * @param p_TRegExpireMax + * @param p_Nc + * @return IMS_DATA_REQ + * @status APPROVED (IMS) + */ + function f_IMS_PTC_ReRegistration_WaitForRegistration(timer p_TRegExpireMin, + timer p_TRegExpireMax, + integer p_Nc) + runs on IMS_PTC return IMS_DATA_REQ + { /* @sic R5s130266 change 1.2 - MCC160 Implementation: upper, lower bound for TRegExpire sic@ */ + var IMS_DATA_REQ v_IMS_DATA_REQ; + var template (present) SipUrl v_SipUrl := cr_SipUri_HostPort(f_IMS_PTC_ImsInfo_GetHomeDomainName()); + + alt { // @sic R5s130266 change 1.2 - MCC160 Implementation sic@ + [] IMS_Server.receive(car_IMS_Register_Request(cr_REGISTER_Request)) + { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "re-registration before timeout of expiry timer"); + } + [] p_TRegExpireMin.timeout {} + } + + alt { + [] IMS_Server.receive(car_IMS_Register_Request(cr_REGISTER_Request(v_SipUrl))) // receive any REGISTER + -> value v_IMS_DATA_REQ + { + p_TRegExpireMax.stop; + f_IMS_REGISTER_SubsequentRequest(v_IMS_DATA_REQ, -, p_Nc); + + } + [] p_TRegExpireMax.timeout + { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "timeout while waiting for re-registration"); + } + } + return v_IMS_DATA_REQ; + } + + //============================================================================ + // Generic Procedures acc. to 34.229-1 Annex C (and derivations) + + /* + * @desc Generic procedure to register IMS + * @param p_IMS_DATA_REQ (default value: omit) + * @param p_SigCompIsActive (default value: false) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_Registration(template (omit) IMS_DATA_REQ p_IMS_DATA_REQ := omit, + boolean p_SigCompIsActive := false) runs on IMS_PTC + { /* NOTE: + * - In case the the function is called in a default handler, the Register message has been already received + * - When used in the IMS CC tests, the PTC needs to wait for the reception of the Register message */ + /* @sic R5s130756 additional changes: p_IsGIBA removed as security scheme is managed at the IMS PTC (-> f_IMS_PTC_SecurityScheme_IsGiba()) sic@ */ + var REGISTER_Request v_RegisterRequest; + + v_RegisterRequest := f_IMS_Register(p_IMS_DATA_REQ, p_SigCompIsActive); + f_IMS_Register_SubscribeNotify(v_RegisterRequest); + } + + /* + * @desc Emergency registration according to 34.229-1 Annex C.20 + * @param p_IMS_DATA_REQ (default value: omit) + * @param p_RegisterExpiration (default value: tsc_IMS_RegisterExpiration) + * @return REGISTER_Request + * @status APPROVED (IMS, LTE) + */ + function f_IMS_EmergencyRegistration_C20(template (omit) IMS_DATA_REQ p_IMS_DATA_REQ := omit, + charstring p_RegisterExpiration := tsc_IMS_RegisterExpiration) runs on IMS_PTC return REGISTER_Request + { + var boolean v_IsEmergency := true; + return f_IMS_Register_NonGIBA(p_IMS_DATA_REQ, p_RegisterExpiration, -, v_IsEmergency); + } + + /* + * @desc Emergency registration Forbidden + * @return REGISTER_Request + * @status APPROVED (IMS_IRAT) + */ + function f_IMS_EmergencyCallRegistration_403Forbidden() runs on IMS_PTC return REGISTER_Request + { + var IMS_DATA_REQ v_IMS_DATA_REQ; + var REGISTER_Request v_RegisterReq; + var boolean v_IsEmergency := true; + + v_IMS_DATA_REQ := f_IMS_REGISTER_InitialRequest(-, -, -, v_IsEmergency); + v_RegisterReq := v_IMS_DATA_REQ.Request.Register; + + f_IMS_Register_SecurityInit(v_RegisterReq); + IMS_Server.send(cas_IMS_DATA_RSP(f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo), cs_Response(c_statusLine401, f_IMS_RegisterResponse_401_MessageHeaderTX(v_RegisterReq)))); + + v_IMS_DATA_REQ := f_IMS_REGISTER_SubsequentRequest(-, v_IsEmergency); + v_RegisterReq := v_IMS_DATA_REQ.Request.Register; /* @sic R5s140123 change 3 sic@ */ + + IMS_Server.send(cas_IMS_DATA_RSP(f_IMS_RoutingInfo_ULtoDL(v_IMS_DATA_REQ.RoutingInfo), cs_Response(c_statusLine403, f_IMS_RegisterResponse_403_MessageHeaderTX(v_RegisterReq)))); + + return v_IMS_DATA_REQ.Request.Register; + } + + //---------------------------------------------------------------------------- + /* + * @desc handle optional de-registration + * @param p_Port + * @param p_AllowRetransmission (default value: false) + * @param p_WaitForDeRegistration (default value: true) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_IpcanReleaseWithOptionalDeregistrationOnAnyPTC(IMS_IPCAN_CO_ORD_PORT p_Port, + boolean p_AllowRetransmission := false, + boolean p_WaitForDeRegistration := true) runs on IMS_PTC + { /* @sic R5s140710 - MCC160 Implementation: parameter p_AllowRetransmission sic@ */ + var IMS_DATA_REQ v_IMS_DATA_REQ; + var template (present) SipUrl v_SipUrl := cr_SipUri_HostPort(f_IMS_PTC_ImsInfo_GetHomeDomainName()); + var boolean v_WaitForDeRegistration := p_WaitForDeRegistration; + var default v_RetransmissionHandler := null; + + alt { // @sic R5-141113: de-registration is not mandatory sic@ + [v_WaitForDeRegistration] IMS_Server.receive(car_IMS_Register_Request(cr_REGISTER_Request(v_SipUrl))) -> value v_IMS_DATA_REQ + { + if (p_AllowRetransmission) { + v_RetransmissionHandler := activate(a_IMS_RetransmissionHandler(v_IMS_DATA_REQ)); /* when re-transmissions are allowed they may colide with f_Delay in f_IMS_TCP_CloseHandling + or with the confirmation in f_IMS_CloseTCP (if any); */ + } + f_IMS_PTC_Deregistration(v_IMS_DATA_REQ); + v_WaitForDeRegistration := false; + repeat; /* @sic R5s140175 sic@ */ + } + [] p_Port.receive(cmr_IMS_IPCAN_Trigger) // @sic R5-142919 sic@ + { + } + } + deactivate(v_RetransmissionHandler); + } + + /* + * @desc handle optional de-registration + * @param p_WaitForDeRegistration (default value: true) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_IpcanReleaseWithOptionalDeregistration(boolean p_WaitForDeRegistration := true) runs on IMS_PTC + { + f_IMS_IpcanReleaseWithOptionalDeregistrationOnAnyPTC(IPCAN, -, p_WaitForDeRegistration); + } + + /* + * @desc handle optional de-registration on "other RAT" + * @param p_WaitForDeRegistration (default value: true) + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_IMS_IpcanReleaseWithOptionalDeregistrationOtherIPCAN(boolean p_WaitForDeRegistration := true) runs on IMS_PTC + { + var boolean v_AllowRetransmission := true; + f_IMS_IpcanReleaseWithOptionalDeregistrationOnAnyPTC(OtherIPCAN, v_AllowRetransmission, p_WaitForDeRegistration); + } + + + } // group + +} diff --git a/LTE_A_IWD_14wk37/Common/IMS/IMS_SDP_Messages.ttcn b/LTE_A_IWD_14wk37/Common/IMS/IMS_SDP_Messages.ttcn new file mode 100644 index 0000000..ff83031 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS/IMS_SDP_Messages.ttcn @@ -0,0 +1,723 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-05 19:27:02 +0200 (Fri, 05 Sep 2014) $ +// $Rev: 12079 $ +/******************************************************************************/ + +module IMS_SDP_Messages { + import from LibSip_SDPTypes all; + import from IMS_CommonDefs all; + import from IMS_Component all; + import from CommonDefs all; + import from IMS_SDP_Templates all; + import from IMS_CommonParameters all; + import from LibSip_MessageBodyTypes all; + + /* + * @desc Wrapper function to encode SDP message + * @param p_SDP_Message + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_SDP_Message_Encode(template (value) SDP_Message p_SDP_Message) return charstring + { + var bitstring v_BitStr := encvalue(p_SDP_Message); + return oct2char(bit2oct(v_BitStr)); + } + + /* + * @desc Wrapper function to decode SDP message and to assign fail verdict in case of syntactically wrong SDP message + * @param p_SdpBody + * @return SDP_Message + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_IMS_SDP_Message_Decode(SdpBody p_SdpBody) runs on IMS_PTC return SDP_Message + { + var SDP_Message v_SDP_Message; + var bitstring v_BitStr := oct2bit(char2oct(p_SdpBody)); + var integer v_Result := decvalue(v_BitStr, v_SDP_Message); + + if (v_Result != 0) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Invalid SDP message"); + } + return v_SDP_Message; + } + + /* + * @desc check that 'Connections' is included either at the top level or in the media description(s) or in both + * @param p_SDP_Message + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_SDP_CheckConnections(SDP_Message p_SDP_Message) runs on IMS_PTC + { + var boolean v_ConnectionFound := false; + var integer i; + + if (ispresent(p_SDP_Message.connection)) { + v_ConnectionFound := true; + } + + if (not v_ConnectionFound) { + // no connection specified in session description => there shall be at least one connection per media description + v_ConnectionFound := true; + for (i := 0; i < lengthof(p_SDP_Message.media_list); i := i + 1) { + if (not ispresent(p_SDP_Message.media_list[i].connections)) { // @sic R5s130586 change 12 sic@ + v_ConnectionFound := false; + break; + } + } + } + + if (not v_ConnectionFound) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "'Connections found neither in session description nor in media description"); + } + } + + /* + * @desc Wrapper function to decode and match SDP message + * @param p_SdpBody + * @param p_SDP_Message_Template + * @param p_CheckConnections (default value: true) + * @return SDP_Message + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_SIP_DecodeMatchAndCheckSDP(template (omit) SdpBody p_SdpBody, + template SDP_Message p_SDP_Message_Template, + boolean p_CheckConnections := true) runs on IMS_PTC return SDP_Message + { + var SDP_Message v_SDP_Message; + + if (not ispresent(p_SdpBody)) { /* there is no SDP message */ + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "Missing sdpMessageBody"); + } + else { /* => MessageBody is present and contains an SDP message */ + v_SDP_Message := fl_IMS_SDP_Message_Decode(valueof(p_SdpBody)); + if (not match(v_SDP_Message, p_SDP_Message_Template)) { + f_IMS_SetVerdictFailOrInconc(__FILE__, __LINE__, "received sdpMessageBody does not match"); + } + if (p_CheckConnections) { // check at least one connections field is sent + f_IMS_SDP_CheckConnections(v_SDP_Message); + } + } + return v_SDP_Message; + } + + /* + * @desc wrapper function to decode and match optional SDP message + * @param p_MessageBody + * @param p_SDP_Message_Template + * @param p_CheckConnections (default value: true) + * @return template (omit) SDP_Message + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_SIP_SdpMessageBody_DecodeMatchAndCheckSDP_Ifpresent(template (omit) MessageBody p_MessageBody, + template SDP_Message p_SDP_Message_Template, + boolean p_CheckConnections := true) runs on IMS_PTC return template (omit) SDP_Message + { + var template (omit) SdpBody v_SdpBody := omit; + var SDP_Message v_SDP_Message; + + if (ischosen(p_MessageBody.sdpMessageBody)) { /* there is an SDP message */ + v_SdpBody := p_MessageBody.sdpMessageBody; + } + if (not ispresent(v_SdpBody) and not ispresent(p_SDP_Message_Template)) { /* NOTE: + not ispresent(p_SDP_Message_Template) does not mean that p_SDP_Message_Template is omit + but p_SDP_Message_Template can be e.g. "cr_SomeSDP ifpresent" + nevertheless when we have "not ispresent(p_SDP_Message_Template)" the SDP message may be omitted */ + return omit; + } else { + v_SDP_Message := f_IMS_SIP_DecodeMatchAndCheckSDP(v_SdpBody, p_SDP_Message_Template, p_CheckConnections); + return v_SDP_Message; + } + } + + /* + * @desc wrapper function to decode and match SDP message + * @param p_MessageBody + * @param p_SDP_Message_Template + * @param p_CheckConnections (default value: true) + * @return SDP_Message + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_SIP_SdpMessageBody_DecodeMatchAndCheckSDP(template (omit) MessageBody p_MessageBody, + template (present) SDP_Message p_SDP_Message_Template, + boolean p_CheckConnections := true) runs on IMS_PTC return SDP_Message + { + var template (omit) SDP_Message v_SDP_Message := f_IMS_SIP_SdpMessageBody_DecodeMatchAndCheckSDP_Ifpresent(p_MessageBody, p_SDP_Message_Template, p_CheckConnections); + return valueof(v_SDP_Message); + } + + //============================================================================ + // Common functions + //---------------------------------------------------------------------------- + /* + * @desc build SDP message to be sent as response to an offer e.g. at the end of C.21 or C.8 + * the function does + * "IP address on "o=" and "c=" lines and transport port on "m=" lines changed to indicate to which IP address and port the UE should send the media" + * but does not change any media attributes + * @param p_SDP_Message_PrevOffer + * @return template (value) SDP_Message + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_BuildSDP_CommonResponseToOfferTX(SDP_Message p_SDP_Message_PrevOffer) runs on IMS_PTC return template (value) SDP_Message + { + var integer i; + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var charstring v_IPAddrOrigin := f_IMS_PTC_RemoteAddress_GetAddrStr(); + var IntegerList_Type v_IMS_MediaPortList := {tsc_IMS_MediaPort_M1, tsc_IMS_MediaPort_M2, tsc_IMS_MediaPort_M3}; + var template (value) SDP_Message v_SDP_Message := p_SDP_Message_PrevOffer; + var template (value) SDP_media_desc_list v_Media_Desc_List := p_SDP_Message_PrevOffer.media_list; + var template (value) SDP_connection v_SDP_Connection := cs_SDP_Connection(v_AddrType, v_IPAddrOrigin); + var template (value) SDP_media_desc v_SDP_Media_Desc; + + v_SDP_Message.origin.addr_type := v_AddrType; // IP address on "o=" line + v_SDP_Message.origin.addr := v_IPAddrOrigin; // IP address on "o=" line + v_SDP_Message.connection := v_SDP_Connection; // IP address on "c=" line + + for (i:=0; i < lengthof(v_Media_Desc_List); i:=i+1) { + v_SDP_Media_Desc := v_Media_Desc_List[i]; + v_SDP_Media_Desc.media_field.ports.port_number := v_IMS_MediaPortList[i]; + v_SDP_Media_Desc.connections := { v_SDP_Connection }; // IP address on "c=" line + v_Media_Desc_List[i] := v_SDP_Media_Desc; + } + v_SDP_Message.media_list := v_Media_Desc_List; + return v_SDP_Message; + } + + + /* + * @desc exchange attribute in all media streams of the given media list + * @param p_Media_Desc_List + * @param p_AttributeToBeChanged + * @param p_NewAttribute + * @return template (omit) SDP_media_desc_list + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_SDP_MediaList_ExchangeAttribute(template (omit) SDP_media_desc_list p_Media_Desc_List, + template (present) SDP_attribute p_AttributeToBeChanged, + template (value) SDP_attribute p_NewAttribute) return template (omit) SDP_media_desc_list + { + var template (omit) SDP_media_desc_list v_Media_Desc_List := p_Media_Desc_List; + var integer i; + + if (ispresent(p_Media_Desc_List)) { + for (i:=0; i < lengthof(v_Media_Desc_List); i:=i+1) { + v_Media_Desc_List[i].attributes := f_SDP_ExchangeAttribute(v_Media_Desc_List[i].attributes, p_AttributeToBeChanged, p_NewAttribute); + } + } + return v_Media_Desc_List; + } + + //============================================================================ + // Annex C8 - SDP Messages + //---------------------------------------------------------------------------- + /* + * @desc remove direction attributes from the attribute list + * @param p_AttributeList + * @return template SDP_attribute_list + * @status APPROVED (IMS) + */ + function fl_IMS_BuildSDP_AnnexC8_Step1_Attributes(template (omit) SDP_attribute_list p_AttributeList) return template SDP_attribute_list + { /* remove direction attributes from the attribute list but change template of attribute list to superset + => there can be any direction attribute in the first place => direction attribute to be checked later on */ + var integer i; + var integer k := 0; + var SDP_attribute v_SDP_attribute; + var SDP_attribute_list v_AttributeList; + var template SDP_attribute_list v_NewAttributeList := omit; + + if (isvalue(p_AttributeList)) { + v_AttributeList := valueof(p_AttributeList); + + for (i:=0; i < lengthof(v_AttributeList); i:=i+1) { + v_SDP_attribute := v_AttributeList[i]; + if (not match(v_SDP_attribute, cr_SDP_Attribute_AnySendRecvMode)) { + if (match(v_SDP_attribute, cr_SDP_Attribute_curr_qos(c_remote, ?))) { /* @sic R5-144753: The direction-tag for the current-status remote segment shall be "sendrecv" sic@ */ + v_SDP_attribute := valueof(cs_SDP_Attribute_curr_qos(c_remote, c_sendrecv)); + } + v_NewAttributeList[k] := v_SDP_attribute; + k := k+1; + } + } + } + if (ispresent(v_NewAttributeList)) { + v_NewAttributeList := superset(all from v_NewAttributeList); + } + return v_NewAttributeList; + } + + /* + * @desc build up bandwidth information for C.8 + * @param p_BandwidthList + * @return template SDP_bandwidth_list + * @status APPROVED (IMS) + */ + function fl_IMS_BuildSDP_AnnexC8_Step1_Bandwidth(template (omit) SDP_bandwidth_list p_BandwidthList) return template SDP_bandwidth_list + { /* to allow any value for "RR" and "RS" bandwith */ + var integer i; + var SDP_bandwidth_list v_BandwidthList; + var charstring v_Modifier; + var template (present) integer v_Bandwidth; + var template SDP_bandwidth_list v_NewBandwidthList := omit; + + if (isvalue(p_BandwidthList)) { + v_BandwidthList := valueof(p_BandwidthList); + for (i:=0; i < lengthof(v_BandwidthList); i:=i+1) { + v_Modifier := v_BandwidthList[i].modifier; + v_Bandwidth := v_BandwidthList[i].bandwidth; + if (match(v_Modifier, ("RR", "RS"))) { + v_Bandwidth := ?; + } + v_NewBandwidthList[i] := cr_SDP_Bandwidth(v_Modifier, v_Bandwidth); + } + } + return v_NewBandwidthList; + } + + /* + * @desc Acc. to 34.229-1 C.8 the UE shall include the same lines in the SDP body as in its previous offer except + * SDP version number, "b=" lines for "RS" and "RR" modifiers and the direction attributes + * @param p_SDP_Message_PrevOffer + * @return template (present) SDP_Message + * @status APPROVED (IMS) + */ + function f_IMS_BuildSDP_AnnexC8_Step1(SDP_Message p_SDP_Message_PrevOffer) runs on IMS_PTC return template (present) SDP_Message + { + var template (present) SDP_Message v_SDP_Message := p_SDP_Message_PrevOffer; + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var SDP_media_desc v_MediaDesc; + var SDP_media_field v_MediaField; + var integer i; + + v_SDP_Message.origin.session_version := ?; + v_SDP_Message.bandwidth := fl_IMS_BuildSDP_AnnexC8_Step1_Bandwidth(p_SDP_Message_PrevOffer.bandwidth); + v_SDP_Message.attributes := fl_IMS_BuildSDP_AnnexC8_Step1_Attributes(p_SDP_Message_PrevOffer.attributes); + + for (i:=0; i < lengthof(p_SDP_Message_PrevOffer.media_list); i:=i+1) { + v_MediaDesc := p_SDP_Message_PrevOffer.media_list[i]; + v_MediaField := v_MediaDesc.media_field; + v_SDP_Message.media_list[i] := cr_SDP_Media_Desc(cr_SDP_Media(v_MediaField.media, v_MediaField.ports.port_number, v_MediaField.transport, cr_SDP_FmtList_AtLeastOne(cr_SDP_AnyMediaFormatDescr)), + cr_SDP_Connection(v_AddrType, ?), + fl_IMS_BuildSDP_AnnexC8_Step1_Bandwidth(v_MediaDesc.bandwidth), + fl_IMS_BuildSDP_AnnexC8_Step1_Attributes(v_MediaDesc.attributes)); + } + return v_SDP_Message; + } + + /* + * @desc build up SDP message for step 3 of C.8 + * @param p_HoldResume + * @param p_SDP_Message_PrevOffer + * @return template (value) SDP_Message + * @status APPROVED (IMS) + */ + function f_IMS_BuildSDP_AnnexC8_Step3(IMS_CallHoldResume_Type p_HoldResume, + SDP_Message p_SDP_Message_PrevOffer) runs on IMS_PTC return template (value) SDP_Message + { + var template (value) SDP_Message v_SDP_Message := f_IMS_BuildSDP_CommonResponseToOfferTX(p_SDP_Message_PrevOffer); + + if (p_HoldResume == HOLD) { + // invert "sendonly" to "recvonly" in the session attributes (if the UE uses session attribute to hold the call) + v_SDP_Message.attributes := f_SDP_ExchangeAttribute(v_SDP_Message.attributes, cr_SDP_Attribute_sendonly, cs_SDP_Attribute_recvonly); // change session attributes + v_SDP_Message.media_list := f_IMS_SDP_MediaList_ExchangeAttribute(v_SDP_Message.media_list, cr_SDP_Attribute_sendonly, cs_SDP_Attribute_recvonly); // change media lines + } + return v_SDP_Message; + } + + + //============================================================================ + // Annex C11 - SDP Messages + //---------------------------------------------------------------------------- + /* + * @desc Build SDP record to be sent to the UE at step 1 according to 34.229-1 Annex C.11 + * @param p_Step + * @param p_SDP_Attribute_curr_qos_remote (default value: cs_SDP_Attribute_curr_qos(c_remote)) + * @return template (value) SDP_Message + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_BuildSDP_AnnexC11_Step1or7(charstring p_Step, + template (value) SDP_attribute p_SDP_Attribute_curr_qos_remote := cs_SDP_Attribute_curr_qos(c_remote)) + runs on IMS_PTC return template (value) SDP_Message + { + var boolean v_IsStep7 := (p_Step == "step 7"); + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var charstring v_IPAddrOrigin := f_IMS_PTC_RemoteAddress_GetAddrStr(); + var charstring v_FmtAudio := tsc_SDP_FmtAudio; + var charstring v_SessionVersion := tsc_SDP_SessionVersion1; + var template (value) SDP_media_desc v_SDP_Media_Desc; + var template (omit) SDP_attribute_list v_SDP_Attribute_List := { + // media attributes: + cs_SDP_Attribute_rtpmap(v_FmtAudio, cs_RTPMAP_AMR_8000), + cs_SDP_Attribute_fmtp(v_FmtAudio, cs_AMR_Fmtp_DefaultParameters), + cs_SDP_Attribute_ptime, + cs_SDP_Attribute_maxptime + }; + v_SDP_Attribute_List := f_SDP_Attributes_Add_TX(v_SDP_Attribute_List, cs_SDP_Attribute_sendrecv, v_IsStep7); + // precondition attributes: + v_SDP_Attribute_List := f_SDP_Attributes_Add_TX(v_SDP_Attribute_List, cs_SDP_Attribute_curr_qos(c_local), not v_IsStep7); // @sic R5s130510 change 4 sic@ + v_SDP_Attribute_List := f_SDP_Attributes_Add_TX(v_SDP_Attribute_List, cs_SDP_Attribute_curr_qos(c_local, c_sendrecv), v_IsStep7); // @sic R5s130510 change 4, R5s130685 change 3 sic@ + v_SDP_Attribute_List := f_SDP_Attributes_Add_TX(v_SDP_Attribute_List, p_SDP_Attribute_curr_qos_remote); + v_SDP_Attribute_List := f_SDP_Attributes_Add_TX(v_SDP_Attribute_List, cs_SDP_Attribute_des_qos(c_mandatory, c_local)); + v_SDP_Attribute_List := f_SDP_Attributes_Add_TX(v_SDP_Attribute_List, cs_SDP_Attribute_des_qos(c_optional, c_remote)); + + if (v_IsStep7) {v_SessionVersion := tsc_SDP_SessionVersion2; } + + v_SDP_Media_Desc := cs_SDP_Media_Desc(cs_SDP_Media_Audio(v_FmtAudio), + cs_SDP_Bandwidth_List_Media(37, 0, 2500), // @sic R5-130751; R5-134270: RR=2500; R5-144700: AS=37 sic@ + v_SDP_Attribute_List); + return cs_SDP_Message_Def(cs_SDP_Origin(-, v_SessionVersion, v_AddrType, v_IPAddrOrigin), cs_SDP_Connection(v_AddrType, v_IPAddrOrigin), -, -, v_SDP_Media_Desc); + } + + //---------------------------------------------------------------------------- + /* + * @desc to receive SDP answer sent by the UE in C.11 step 8 (200 OK sent by the SS) or 2nd SDP sent by the UE in C.21 step 5/7 + * @param p_Step + * @return template (present) SDP_Message + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_BuildSDP_AnnexC11_Step4or8(charstring p_Step) runs on IMS_PTC return template (present) SDP_Message + { /* @sic R5-123077 change 3: 'inactive' removed from 'Attributes for media' for step 4 sic@ */ + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var template (present) charstring v_IPAddrOrigin := ?; + var template (present) charstring v_IPAddrConnection := ?; + var template (present) SDP_media_desc v_SDP_Media_Desc; + var template (present) SDP_attribute_list v_SDP_Attribute_List; + + select (p_Step) { + case ("step 4") { + v_SDP_Attribute_List := { + cr_SDP_Attribute_rtpmap(cr_SDP_AnyMediaFormatDescr, cr_RTPMAP_AMR_8000), // @sic R5s130681 change 2 sic@ + cr_SDP_Attribute_fmtp(cr_SDP_AnyMediaFormatDescr), + // precondition attributes: + cr_SDP_Attribute_curr_qos(c_local, (c_none, c_sendrecv)), // @sic R5s120530 change 3.15 sic@ + cr_SDP_Attribute_curr_qos(c_remote, c_none), + cr_SDP_Attribute_des_qos(c_mandatory, c_local), + cr_SDP_Attribute_des_qos(c_mandatory, c_remote), + cr_SDP_Attribute_conf_qos(), // @sic R5s140204 sic@ + * + }; + } + case ("step 8") { + v_SDP_Attribute_List := { + // media attributes: + cr_SDP_Attribute_rtpmap(cr_SDP_AnyMediaFormatDescr, cr_RTPMAP_AMR_8000), // @sic R5s130681 change 2 sic@ + cr_SDP_Attribute_fmtp(cr_SDP_AnyMediaFormatDescr), + cr_SDP_Attribute_sendrecv, + // precondition attributes: + cr_SDP_Attribute_curr_qos(c_local, c_sendrecv), + cr_SDP_Attribute_curr_qos(c_remote, c_sendrecv), + cr_SDP_Attribute_des_qos(c_mandatory, c_local), + cr_SDP_Attribute_des_qos(c_mandatory, c_remote), + * + }; + } + case else { + FatalError(__FILE__, __LINE__, ""); + } + } + v_SDP_Media_Desc := cr_SDP_Media_Desc(cr_SDP_Media_Audio(cr_SDP_AnyMediaFormatDescr), // @sic R5s130985 change 1 sic@ + cr_SDP_Connection(v_AddrType, v_IPAddrConnection), + cr_SDP_Bandwidth_List_Media(?, ?, ?), + v_SDP_Attribute_List); + return cr_SDP_Message_Def(v_AddrType, v_IPAddrOrigin, v_IPAddrConnection, v_SDP_Media_Desc); + } + + //============================================================================ + // Annex C21 - SDP Messages + //---------------------------------------------------------------------------- + /* + * @desc return template for SDP message at step 2 according to 34.229-1 Annex C.21 + * @param p_RtcpDuringVoiceSession (default value: pc_IMS_RtcpDuringVoiceSession) + * @return template (present) SDP_Message + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_BuildSDP_AnnexC21_Step2(boolean p_RtcpDuringVoiceSession := pc_IMS_RtcpDuringVoiceSession) runs on IMS_PTC return template (present) SDP_Message + { /* @sic R5-135020, R5-135021: new PICS pc_IMS_RtcpDuringVoiceSession sic@ */ + /* @sic R5w140113, R5w140009: new SDP type definitions */ + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var template (present) integer v_BandwidthRS := 0; + var template (present) integer v_BandwidthRR := 0; + var template (present) charstring v_IPAddrOrigin := ?; + var template (present) charstring v_IPAddrConnection := ?; + var template (present) SDP_media_desc v_SDP_Media_Desc; + var template (present) SDP_attribute_list v_SDP_Attribute_List := { + // media attributes: + cr_SDP_Attribute_rtpmap(-, cr_RTPMAP_AMR_8000), // @sic R5s130681 change 2 sic@ + cr_SDP_Attribute_fmtp(-, cr_AMR_Fmtp_DefaultParameters), /* @sic R5w140113, R5w140009: cr_AMR_Fmtp_DefaultParameters replaces tsc_AMR_Fmtp_DefaultParameters_RX sic@ */ + cr_SDP_Attribute_rtpmap(-, cr_RTPMAP_TelephoneEvent), // @sic R5s130333 change 14.2 - pattern needs to include a rate; R5s130798 change 5 - MCC160 Comment: rate is optional sic@ + cr_SDP_Attribute_ptime, + cr_SDP_Attribute_maxptime, + cr_SDP_Attribute_inactive, + // precondition attributes: + cr_SDP_Attribute_curr_qos(c_local), + cr_SDP_Attribute_curr_qos(c_remote), + cr_SDP_Attribute_des_qos(c_mandatory, c_local), + cr_SDP_Attribute_des_qos(c_optional, c_remote), + * + }; + + if (p_RtcpDuringVoiceSession) { /* @sic R5-135020 sic@ */ + v_BandwidthRS := ?; + v_BandwidthRR := (1..infinity); + } + + v_SDP_Media_Desc := cr_SDP_Media_Desc(cr_SDP_Media_Audio, + cr_SDP_Connection(v_AddrType, v_IPAddrConnection), + cr_SDP_Bandwidth_List_Media(?, v_BandwidthRS, v_BandwidthRR), + v_SDP_Attribute_List); + return cr_SDP_Message_AnySession(v_AddrType, v_IPAddrOrigin, v_IPAddrConnection, v_SDP_Media_Desc); + } + + //---------------------------------------------------------------------------- + /* + * @desc return template for SDP message at step 4 according to 34.229-1 Annex C.21 + * @param p_SDP_MessageInvite + * @return template (value) SDP_Message + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_BuildSDP_AnnexC21_Step4(SDP_Message p_SDP_MessageInvite) runs on IMS_PTC return template (value) SDP_Message + { /* @sic R5-135020: parameter p_SDP_MessageInvite to get RR and RS values sic@ */ + /* @sic R5-144402: p_IPAddrOrigin removed sic@ */ + var integer i; + var template (omit) SDP_attribute v_Attribute; + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var charstring v_IPAddrConnection := f_IMS_PTC_RemoteAddress_GetAddrStr(); /* "connection-address for SS": address of the simulated remote UE */ + var charstring v_IPAddrOrigin := v_IPAddrConnection; /* @sic R5-144402: "unicast-address for SS" sic@ */ + var SDP_media_desc v_SDP_Media_Invite := p_SDP_MessageInvite.media_list[0]; + var charstring v_FmtAudio := f_SDP_MediaDescr_GetAMR_8000_1(v_SDP_Media_Invite); + var integer v_BandwidthRS := f_SDP_BandwidthList_GetBandwidth(v_SDP_Media_Invite.bandwidth, "RS"); + var integer v_BandwidthRR := f_SDP_BandwidthList_GetBandwidth(v_SDP_Media_Invite.bandwidth, "RR"); + var template (value) SDP_bandwidth_list v_Bandwidth_List_Media := cs_SDP_Bandwidth_List_Media(37, v_BandwidthRS, v_BandwidthRR); // @sic R5-123505, R5-135020; R5-144700: AS=37 sic@ + var template (value) SDP_media_desc v_SDP_Media_Desc; + var template (omit) SDP_attribute_list v_SDP_Attribute_List := { + // media attributes: + cs_SDP_Attribute_rtpmap(v_FmtAudio, cs_RTPMAP_AMR_8000), + cs_SDP_Attribute_fmtp(v_FmtAudio, cs_AMR_Fmtp_DefaultParameters), + cs_SDP_Attribute_ptime, + cs_SDP_Attribute_maxptime, + // precondition attributes: + cs_SDP_Attribute_curr_qos(c_local), + cs_SDP_Attribute_curr_qos(c_remote), + cs_SDP_Attribute_des_qos(c_mandatory, c_local), + cs_SDP_Attribute_des_qos(c_mandatory, c_remote), + cs_SDP_Attribute_conf_qos // @sic R5s120530 change 3.5 sic@ + }; + // additional attributes to be added (using f_SDP_Attributes_Add_TX): + // a=ecn-capable-rtp: leap; ect=0 [Note 3] + // a=rtcp-fb:* nack ecn [Note 3] + // a=rtcp-xr:ecn-sum [Note 3] + // a=3ge2ae: requested [Note 1] + // a=crypto:1 AES_CM_128_HMAC_SHA1_80inline:PS1uQCVeeCFCanVmcjkpPywjNWhcYD0mXXtxaVBR|2^20|1:4 [Note 4] + var template (value) SDP_attribute_list v_AdditionalOptionalAttributes := { /* @sic R5s140359 - Additional Changes sic@ */ + cs_SDP_Attribute_ecn_capable_rtp("leap", "ect=0"), + cs_SDP_Attribute_rtcp_fb("*", "nack ecn"), + cs_SDP_Attribute_rtcp_xr("ecn-sum"), + cs_SDP_Attribute_3ge2ae("requested"), + cs_SDP_Attribute_crypto("1", "AES_CM_128_HMAC_SHA1_80", "inline:PS1uQCVeeCFCanVmcjkpPywjNWhcYD0mXXtxaVBR|2^20|1:4") + }; + for (i := 0; i < lengthof(v_AdditionalOptionalAttributes); i := i + 1) { + v_Attribute := f_SDP_AttributeList_GetAttribute(p_SDP_MessageInvite.attributes, v_AdditionalOptionalAttributes[i]); + v_SDP_Attribute_List := f_SDP_Attributes_Add_TX(v_SDP_Attribute_List, v_Attribute); + } + + v_SDP_Media_Desc := cs_SDP_Media_Desc(cs_SDP_Media_Audio(v_FmtAudio), + v_Bandwidth_List_Media, + v_SDP_Attribute_List); + return cs_SDP_Message_Def(cs_SDP_Origin(-, -, v_AddrType, v_IPAddrOrigin), cs_SDP_Connection(v_AddrType, v_IPAddrConnection), -, -, v_SDP_Media_Desc); /* @sic R5-144402: v_Sessionname removed sic@ */ + } + + //---------------------------------------------------------------------------- + /* + * @desc to receive SDP answer sent by the UE in C.11 step 8 (200 OK sent by the SS) or 2nd SDP sent by the UE in C.21 step 5/7 + * @param p_Fmt + * @return template (present) SDP_Message + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_BuildSDP_AnnexC21_Step5or7(charstring p_Fmt) runs on IMS_PTC return template (present) SDP_Message + { + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var template (present) charstring v_IPAddrOrigin := ?; + var template (present) charstring v_IPAddrConnection := ?; + var template (present) SDP_media_desc v_SDP_Media_Desc; + var template (present) SDP_attribute_list v_SDP_Attribute_List := { + // media attributes: + cr_SDP_Attribute_rtpmap(p_Fmt, cr_RTPMAP_AMR_8000), // @sic R5s130681 change 2 sic@ + cr_SDP_Attribute_fmtp(p_Fmt), /* @sic R5s130497 change 2: format parameters added; R5s130586 change 4: format parameters changed back to any parameters sic@ */ + cr_SDP_Attribute_sendrecv, + // precondition attributes: + cr_SDP_Attribute_curr_qos(c_local, c_sendrecv), + cr_SDP_Attribute_curr_qos(c_remote, c_none), + cr_SDP_Attribute_des_qos(c_mandatory, c_local), + cr_SDP_Attribute_des_qos((c_optional, c_mandatory), c_remote), /* @sic R5-142951: (c_optional, c_mandatory) instead of c_optional sic@ */ + * + }; + + v_SDP_Media_Desc := cr_SDP_Media_Desc(cr_SDP_Media_Audio(p_Fmt), // @sic R5-123505 sic@ + cr_SDP_Connection(v_AddrType, v_IPAddrConnection), + cr_SDP_Bandwidth_List_Media(?, ?, ?), + v_SDP_Attribute_List); + return cr_SDP_Message_Def(v_AddrType, v_IPAddrOrigin, v_IPAddrConnection, v_SDP_Media_Desc); + } + + //---------------------------------------------------------------------------- + /* + * @desc build SDP message to be sent in step 6 or 8 of 34.229-1 Annex C.21 + * @param p_SDP_Message_PrevOffer + * @return template (value) SDP_Message + * @status APPROVED (IMS, LTE_A) + */ + function f_IMS_BuildSDP_AnnexC21_Step6or8(SDP_Message p_SDP_Message_PrevOffer) runs on IMS_PTC return template (value) SDP_Message + { + var template (value) SDP_Message v_SDP_Message := f_IMS_BuildSDP_CommonResponseToOfferTX(p_SDP_Message_PrevOffer); + + v_SDP_Message.media_list := f_IMS_SDP_MediaList_ExchangeAttribute(v_SDP_Message.media_list, + cs_SDP_Attribute_curr_qos(c_remote, c_none), // value sent by the UE in step 5/7 + cs_SDP_Attribute_curr_qos(c_remote, c_sendrecv)); // ... to be replaced + return v_SDP_Message; + } + + //============================================================================ + // Annex C22 - SDP Messages + //---------------------------------------------------------------------------- + /* + * @desc Build SDP record to be received from the UE at step 1 according to 34.229-1 Annex C.22 + * @return template (present) SDP_Message + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_IRAT) + */ + function f_IMS_BuildSDP_AnnexC22_Step1() runs on IMS_PTC return template (present) SDP_Message + { + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var template (present) charstring v_IPAddrOrigin := ?; + var template (present) charstring v_IPAddrConnection := ?; + var template (present) SDP_media_desc v_SDP_Media_Desc; + var template SDP_bandwidth_list v_Bandwidth := *; + var template SDP_attribute_list v_SDP_Attribute_List := *; //acc. to annex C.22 there shall be at least one AMR codec ("AMR/*" of "AMR-WB/*"); + // this will be checked later-on when the fmt value for the AMR codec is extracted (-> f_IMS_EmergencyCallSetup_AnnexC22, f_SDP_MediaDescr_GetAMR_Any) + v_SDP_Media_Desc := cr_SDP_Media_Desc(cr_SDP_Media_Audio, + cr_SDP_Connection(v_AddrType, v_IPAddrOrigin), + cr_SDP_Bandwidth_List_AS, + v_SDP_Attribute_List); + return cr_SDP_Message_Common(v_AddrType, v_IPAddrOrigin, v_IPAddrConnection, -, v_Bandwidth, cr_SDP_Time_Any, { v_SDP_Media_Desc }); /* @sic R5s130495 change 21 sic@ */ + } + + //---------------------------------------------------------------------------- + /* + * @desc Build SDP record to be sent to the UE at step 4 according to 34.229-1 Annex C.22 + * NOTE: the "payload type" of the rtpmap attribute and the "format" of the fmtp atribute refer to the format in the media description (RFC 4566) + * => as long as there is only one media description, the fmt, payload type and format have the same value + * @param p_Fmt + * @param p_IPAddrOrigin + * @return template (value) SDP_Message + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_IRAT) + */ + function f_IMS_BuildSDP_AnnexC22_Step4(charstring p_Fmt, + charstring p_IPAddrOrigin) runs on IMS_PTC return template (value) SDP_Message + { + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var charstring v_IPAddrConnection := f_IMS_PTC_RemoteAddress_GetAddrStr(); + var template (value) SDP_media_desc v_SDP_Media_Desc; + var template (value) SDP_attribute_list v_SDP_Attribute_List := { + // media attributes: + cs_SDP_Attribute_rtpmap(p_Fmt, cs_RTPMAP_AMR_8000), + cs_SDP_Attribute_fmtp(p_Fmt, cs_AMR_Fmtp_DefaultParameters), + cs_SDP_Attribute_ptime, + cs_SDP_Attribute_maxptime + }; + + v_SDP_Media_Desc := cs_SDP_Media_Desc(cs_SDP_Media_Audio(p_Fmt), + cs_SDP_Bandwidth_List_Media(37, 0, 0), /* @sic R5-144700: AS=37 sic@ */ + v_SDP_Attribute_List); + + return cs_SDP_Message_Def(cs_SDP_Origin( -, -, v_AddrType, p_IPAddrOrigin), cs_SDP_Connection(v_AddrType, v_IPAddrConnection), -, -, v_SDP_Media_Desc); /* @sic R5-144402: v_Sessionname removed sic@ */ + } + + + //---------------------------------------------------------------------------- + /* + * @desc Build SDP record to be sent to the UE at step 1 according to 34.229-1 Annex C.24 + * @return template (present) SDP_Message + * @status APPROVED (LTE_IRAT) + */ + function f_IMS_BuildSDP_AnnexC24_Step1() runs on IMS_PTC return template (present) SDP_Message + { + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var template (present) charstring v_IPAddrOrigin := ?; + var template (present) charstring v_IPAddrConnection := ?; + var template (present) SDP_media_desc v_SDP_Media_Desc; + var template SDP_attribute_list v_SDP_Attribute_List := *; + var template SDP_bandwidth_list v_SDP_Bandwidth_List := *; // @sic R5s140573 change 4, R5-144686 sic@ + var integer v_PortNumber := 0; + + v_SDP_Media_Desc := cr_SDP_Media_Desc(cr_SDP_Media_Audio(-, v_PortNumber), + cr_SDP_Connection(v_AddrType, v_IPAddrConnection), + v_SDP_Bandwidth_List, // @sic R5s140573 change 4, R5-144686 sic@ + v_SDP_Attribute_List); + return cr_SDP_Message_AnySession(v_AddrType, v_IPAddrOrigin, v_IPAddrConnection, v_SDP_Media_Desc); + } + + //---------------------------------------------------------------------------- + /* + * @desc Build SDP record to be sent to the UE at step 1 according to 34.229-1 Annex C.31 + * @return template (present) SDP_Message + * @status APPROVED (LTE_IRAT) + */ + function f_IMS_BuildSDP_AnnexC31_Step1() runs on IMS_PTC return template (present) SDP_Message + { + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var template (present) charstring v_IPAddrOrigin := ?; + var template (present) charstring v_IPAddrConnection := ?; + var template (present) SDP_media_desc v_SDP_Media_Desc; + var template (present) SDP_attribute_list v_SDP_Attribute_List := { + // media attributes: + cr_SDP_Attribute_rtpmap(-, cr_RTPMAP_AMR_8000), + cr_SDP_Attribute_fmtp, + cr_SDP_Attribute_sendrecv, + // precondition attributes: none @sic R5s140263 change 4, R5-142995 sic@ + * + }; + v_SDP_Media_Desc := cr_SDP_Media_Desc(cr_SDP_Media_Audio, + cr_SDP_Connection(v_AddrType, v_IPAddrConnection), + cr_SDP_Bandwidth_List_Media(?, ?, ?), + v_SDP_Attribute_List); + return cr_SDP_Message_AnySession(v_AddrType, v_IPAddrOrigin, v_IPAddrConnection, v_SDP_Media_Desc); + } + /* + * @desc Build SDP record to be sent to the UE at step 3 according to 34.229-1 Annex C.31 + * @param p_SDP_Offer + * @return template (value) SDP_Message + * @status APPROVED (LTE_IRAT) + */ + function f_IMS_BuildSDP_AnnexC31_Step3(SDP_Message p_SDP_Offer) runs on IMS_PTC return template (value) SDP_Message + { + var charstring v_AddrType := f_IMS_PTC_NW_Address_GetTypeStr(); + var charstring v_IPAddrConnection := f_IMS_PTC_RemoteAddress_GetAddrStr(); + var charstring v_RemoteIPAddr := v_IPAddrConnection; /* @sic R5-144402 sic@ */ + var SDP_media_desc v_SDP_Media_Offer := p_SDP_Offer.media_list[0]; + var charstring v_FmtAudio := f_SDP_MediaDescr_GetAMR_8000_1(v_SDP_Media_Offer); + var integer v_BandwidthRS := f_SDP_BandwidthList_GetBandwidth(v_SDP_Media_Offer.bandwidth, "RS"); + var integer v_BandwidthRR := f_SDP_BandwidthList_GetBandwidth(v_SDP_Media_Offer.bandwidth, "RR"); + var template (value) SDP_bandwidth_list v_Bandwidth_List_Media := cs_SDP_Bandwidth_List_Media(37, v_BandwidthRS, v_BandwidthRR); /* @sic R5-144700: AS=37 sic@ */ + var template (value) SDP_media_desc v_SDP_Media_Desc; + var template (value) SDP_attribute_list v_SDP_Attribute_List := { + // media attributes: + cs_SDP_Attribute_rtpmap(v_FmtAudio, cs_RTPMAP_AMR_8000), + cs_SDP_Attribute_fmtp(v_FmtAudio, cs_AMR_Fmtp_DefaultParameters), + cs_SDP_Attribute_sendrecv, + // precondition attributes: + cs_SDP_Attribute_curr_qos(c_local, c_sendrecv), + cs_SDP_Attribute_curr_qos(c_remote, c_sendrecv), + cs_SDP_Attribute_des_qos(c_mandatory, c_local, c_sendrecv), + cs_SDP_Attribute_des_qos(c_mandatory, c_remote, c_sendrecv) + }; + + v_SDP_Media_Desc := cs_SDP_Media_Desc(cs_SDP_Media_Audio(v_FmtAudio), + v_Bandwidth_List_Media, + v_SDP_Attribute_List); + return cs_SDP_Message_Def(cs_SDP_Origin(-, -, v_AddrType, v_RemoteIPAddr), cs_SDP_Connection(v_AddrType, v_IPAddrConnection), -, -, v_SDP_Media_Desc); /* @sic R5-144402: v_Sessionname removed sic@ */ + } +} diff --git a/LTE_A_IWD_14wk37/Common/IMS/IMS_SDP_Templates.ttcn b/LTE_A_IWD_14wk37/Common/IMS/IMS_SDP_Templates.ttcn new file mode 100644 index 0000000..24d67e7 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS/IMS_SDP_Templates.ttcn @@ -0,0 +1,865 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-05 19:27:02 +0200 (Fri, 05 Sep 2014) $ +// $Rev: 12079 $ +/******************************************************************************/ + +module IMS_SDP_Templates { + import from LibSip_Common all; + import from LibSip_SDPTypes all; + import from IMS_CommonDefs all; + import from IMS_CommonTemplates all; + import from CommonDefs all; + + const charstring tsc_SDP_NoSessionname := "-"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + @sic R5-144402: tsc_SDP_Sessionname -> tsc_SDP_NoSessionname sic@ */ + + // RTPMAP - Codecs: + + template (present) SDP_attribute_rtpmap_codec cr_RTPMAP_Codec(template (present) charstring p_Encoding, + template (present) charstring p_ClockRate := ?, + template charstring p_Parameters := *) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + encoding := p_Encoding, + clockrate := p_ClockRate, + parameters := p_Parameters + }; + + template (present) SDP_attribute_rtpmap_codec cr_RTPMAP_AMR_AnyCodec := cr_RTPMAP_Codec(pattern "AMR*"); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_IRAT) + any AMR codec ("AMR[/]*" or "AMR-WB[/]*") + @sic R5w140113, R5w140009: replaces tsc_CODEC_AMR_Any_RX_Pattern sic@ */ + template (present) SDP_attribute_rtpmap_codec cr_RTPMAP_AMR_8000 := cr_RTPMAP_Codec("AMR", "8000", "1" ifpresent); /* @status APPROVED (IMS, LTE_A, LTE_IRAT) + @sic R5w140113, R5w140009: replaces tsc_CODEC_AMR_8000_RX_Pattern sic@ */ + template (present) SDP_attribute_rtpmap_codec cr_RTPMAP_AMR_16000 := cr_RTPMAP_Codec("AMR-WB", "16000", "1" ifpresent); /* @status APPROVED (IMS) + @sic R5w140113, R5w140009: replaces tsc_CODEC_AMR_16000_RX_Pattern sic@ */ + template (present) SDP_attribute_rtpmap_codec cr_RTPMAP_TelephoneEvent := + cr_RTPMAP_Codec("telephone-event", pattern "([0-9]+)", pattern "([0-9]+)" ifpresent); /* @status APPROVED (IMS, LTE_A) + @sic R5s130798 change 5 - MCC160 Comment sic@ + @sic R5w140113, R5w140009: replaces tsc_CODEC_TelephoneEvent_RX_Pattern sic@ */ + template (present) SDP_attribute_rtpmap_codec cr_RTPMAP_H264_90000 := cr_RTPMAP_Codec("H264", "90000"); + + template (value) SDP_attribute_rtpmap_codec cs_RTPMAP_Codec(template (value) charstring p_Encoding, + template (value) charstring p_ClockRate, + template (omit) charstring p_Parameters := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + encoding := p_Encoding, + clockrate := p_ClockRate, + parameters := p_Parameters + }; + + template (value) SDP_attribute_rtpmap_codec cs_RTPMAP_AMR_8000 := cs_RTPMAP_Codec("AMR", "8000", "1"); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + @sic R5w140113, R5w140009: replaces tsc_CODEC_AMR_8000_TX sic@ */ + template (value) SDP_attribute_rtpmap_codec cs_RTPMAP_AMR_16000 := cs_RTPMAP_Codec("AMR-WB", "16000", "1"); /* @status APPROVED (IMS) + @sic R5w140113, R5w140009: replaces tsc_CODEC_AMR_16000_TX sic@ */ + template (value) SDP_attribute_rtpmap_codec cs_RTPMAP_H264_90000 := cs_RTPMAP_Codec("H264", "90000"); + + // FMTP: + + template (value) SDP_attribute_fmtp_format_specific_params cs_Fmtp_ParamList(template (value) SemicolonParam_List p_ParamList) := {paramList := p_ParamList}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) SDP_attribute_fmtp_format_specific_params cr_Fmtp_ParamList(template (present) SemicolonParam_List p_ParamList) := {paramList := p_ParamList}; /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + template (value) SDP_attribute_fmtp_format_specific_params crs_Fmtp_UnstructuredParams(charstring p_ParamString) := {unstructured := p_ParamString}; + + // audio - format specific parameters + template (value) GenericParam cs_AMR_ModeChangeCapability := cs_GenericParam("mode-change-capability", "2"); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) GenericParam cr_AMR_ModeChangeCapability := f_GenericParam_AsTX(cs_AMR_ModeChangeCapability); /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + template (value) GenericParam cs_AMR_MaxRed := cs_GenericParam("max-red", "220"); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) GenericParam cr_AMR_MaxRed := cr_GenericParam("max-red", pattern "[0-9]+"); /* @status APPROVED (IMS, LTE_A, LTE_IRAT) + @sic R5-141114: in UL max-red can be any value within 0..220 sic@ */ + template (value) SemicolonParam_List cs_Fmtp_AudioParamsDef := {cs_AMR_ModeChangeCapability, cs_AMR_MaxRed}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) SemicolonParam_List cr_Fmtp_AudioParamsDef := {cr_AMR_ModeChangeCapability, cr_AMR_MaxRed, *}; /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + + template (value) SDP_attribute_fmtp_format_specific_params cs_AMR_Fmtp_DefaultParameters := cs_Fmtp_ParamList(cs_Fmtp_AudioParamsDef); /* @sic R5w140113, R5w140009: replaces tsc_AMR_Fmtp_DefaultParameters_TX sic@ + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT)*/ + template (present) SDP_attribute_fmtp_format_specific_params cr_AMR_Fmtp_DefaultParameters := cr_Fmtp_ParamList(cr_Fmtp_AudioParamsDef); /* @sic R5w140113, R5w140009: replaces tsc_AMR_Fmtp_DefaultParameters_RX sic@ + @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + + // video - format specific parameters + const charstring tsc_IMS_Video_Fmtp_ProfileLevelId_Def := "42e00c"; + template (value) GenericParam cs_Video_Fmtp_ProfileLevelId := cs_GenericParam("profile-level-id", tsc_IMS_Video_Fmtp_ProfileLevelId_Def); + template (present) GenericParam cr_Video_Fmtp_ProfileLevelId(template (present) charstring p_ProfileLevelId) := cr_GenericParam("profile-level-id", p_ProfileLevelId); /* @sic R5-144595 sic@ */ + template (value) GenericParam cs_Video_Fmtp_SpropParameterSets := cs_GenericParam("sprop-parameter-sets", "J0LgDJWgUH6Af1A=,KM46gA=="); + template (present) GenericParam cr_Video_Fmtp_SpropParameterSets := f_GenericParam_AsTX(cs_Video_Fmtp_SpropParameterSets); + template (value) GenericParam cs_Video_Fmtp_PacketizationMode := cs_GenericParam("packetization-mode", "0"); + template (present) GenericParam cr_Video_Fmtp_PacketizationMode := f_GenericParam_AsTX(cs_Video_Fmtp_PacketizationMode); + template (value) SemicolonParam_List cs_Fmtp_VideoParamsDef := {cs_Video_Fmtp_ProfileLevelId, cs_Video_Fmtp_SpropParameterSets}; + template (present) SemicolonParam_List cr_Fmtp_VideoParamsDef := {cr_Video_Fmtp_ProfileLevelId(?), cr_Video_Fmtp_SpropParameterSets, *}; + template (value) SemicolonParam_List cs_Fmtp_VideoParamsWithPacketizationMode := {cs_Video_Fmtp_PacketizationMode, cs_Video_Fmtp_ProfileLevelId, cs_Video_Fmtp_SpropParameterSets}; + template (present) SemicolonParam_List cr_Fmtp_VideoParamsWithPacketizationMode := {cr_Video_Fmtp_PacketizationMode, cr_Video_Fmtp_ProfileLevelId(tsc_IMS_Video_Fmtp_ProfileLevelId_Def), cr_Video_Fmtp_SpropParameterSets, *}; + template (present) SDP_attribute_fmtp_format_specific_params cr_Video_Fmtp_DefaultParameters := cr_Fmtp_ParamList(cr_Fmtp_VideoParamsDef); + + const charstring tsc_SDP_FmtAudio := "97"; /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + const charstring tsc_SDP_FmtVideo := "98"; + + const charstring tsc_SDP_SessionId := "1111111111"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + const charstring tsc_SDP_SessionVersion1 := "1111111111"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + const charstring tsc_SDP_SessionVersion2 := "1111111112"; /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + + template (present) charstring cr_SDP_AnyMediaFormatDescr := pattern "[0-9]#(2,3)"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + //---------------------------------------------------------------------------- + /* + * @desc add further attribute to given list + * @param p_SDP_Attribute_List + * @param p_SDP_Attribute + * @param p_Condition (default value: true) + * @return template (omit) SDP_attribute_list + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_SDP_Attributes_Add_TX(template (omit) SDP_attribute_list p_SDP_Attribute_List, + template (omit) SDP_attribute p_SDP_Attribute, + boolean p_Condition := true) return template (omit) SDP_attribute_list + { /* @sic R5s130510: additional parameter p_Condition sic@ */ + var template (omit) SDP_attribute_list v_SDP_Attribute_List := p_SDP_Attribute_List; + var integer i := 0; + + if (p_Condition) { + if (isvalue(p_SDP_Attribute)) { + if (isvalue(v_SDP_Attribute_List)) { + i := lengthof(v_SDP_Attribute_List); + } + v_SDP_Attribute_List[i] := p_SDP_Attribute; + } + } + return v_SDP_Attribute_List; + } + + /* + * @desc exchange attribute in given attribute list + * @param p_AttributeList + * @param p_AttributeToBeChanged + * @param p_NewAttribute + * @return template (omit) SDP_attribute_list + * @status APPROVED (IMS, LTE_A) + */ + function f_SDP_ExchangeAttribute(template (omit) SDP_attribute_list p_AttributeList, + template (present) SDP_attribute p_AttributeToBeChanged, + template (value) SDP_attribute p_NewAttribute) return template (omit) SDP_attribute_list + { // @sic R5s120530 change 3.17 sic@ + var template (omit) SDP_attribute_list v_AttributeList := p_AttributeList; + var integer i := 0; + if (isvalue(v_AttributeList)) { + for (i:=0; i rtpmap attributes are not checked + * when p_FmtpParameters == omit => fmtp attributes are not checked + * when both are omit the first element of fmts is return (if any); + * returns the first fmt in the fmts list of the media description (RFC 4566 cl. 5.14) matching the given rtpmap and the given fmtp attributes; + * returns "" if no fmt is found + * @param p_SDP_Media_Desc + * @param p_RtpmapCodecInfo + * @param p_FmtpParameters (default value: omit) + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SDP_MediaDescr_GetMediaFormat(SDP_media_desc p_SDP_Media_Desc, + template SDP_attribute_rtpmap_codec p_RtpmapCodecInfo, + template SDP_attribute_fmtp_format_specific_params p_FmtpParameters := omit) return charstring + { + var charstring v_Fmt; + var integer i; + var boolean v_RtpmapMatch; + var boolean v_FmtpMatch; + + for (i := 0; i < lengthof(p_SDP_Media_Desc.media_field.fmts); i := i + 1) { + v_Fmt := p_SDP_Media_Desc.media_field.fmts[i]; + + v_RtpmapMatch := not ispresent(p_RtpmapCodecInfo); // -> p_RtpmapCodecInfo is omit + v_FmtpMatch := not ispresent(p_FmtpParameters); // -> p_FmtpParameters is omit + + if (not v_RtpmapMatch) { // -> p_RtpmapCodecInfo is + v_RtpmapMatch := f_SDP_AttributeList_CheckAttribute(p_SDP_Media_Desc.attributes, cr_SDP_Attribute_rtpmap(v_Fmt, p_RtpmapCodecInfo)); // compiler warning cannot be avoided + } + + if (not v_FmtpMatch) { // -> p_FmtpParameters is value + v_FmtpMatch := f_SDP_AttributeList_CheckAttribute(p_SDP_Media_Desc.attributes, cr_SDP_Attribute_fmtp(v_Fmt, p_FmtpParameters)); // compiler warning cannot be avoided + } + + if (v_RtpmapMatch and v_FmtpMatch) { + return v_Fmt; + } + } + return ""; + } + + /* + * @desc get default audio codec + * @param p_SDP_Media_Desc + * @param p_FmtpParameters (default value: cr_AMR_Fmtp_DefaultParameters) + * @return charstring + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_SDP_MediaDescr_GetAMR_8000_1(SDP_media_desc p_SDP_Media_Desc, + template SDP_attribute_fmtp_format_specific_params p_FmtpParameters := cr_AMR_Fmtp_DefaultParameters) return charstring + { /* @sic R5w140113, R5w140009: cr_AMR_Fmtp_DefaultParameters replaces tsc_AMR_Fmtp_DefaultParameters_RX sic@ */ + return f_SDP_MediaDescr_GetMediaFormat(p_SDP_Media_Desc, cr_RTPMAP_AMR_8000, p_FmtpParameters); + } + + /* + * @desc return (first) AMR of given media description + * @param p_SDP_Media_Desc + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_IRAT) + */ + function f_SDP_MediaDescr_GetAMR_Any(SDP_media_desc p_SDP_Media_Desc) return charstring + { + return f_SDP_MediaDescr_GetMediaFormat(p_SDP_Media_Desc, cr_RTPMAP_AMR_AnyCodec); + } + + function f_SDP_MediaDescr_GetH264_90000(SDP_media_desc p_SDP_Media_Desc, + template SDP_attribute_fmtp_format_specific_params p_FmtpParameters := cr_Video_Fmtp_DefaultParameters) return charstring + { /* get default video codec */ + return f_SDP_MediaDescr_GetMediaFormat(p_SDP_Media_Desc, cr_RTPMAP_H264_90000, p_FmtpParameters); + } + + + //---------------------------------------------------------------------------- + /* + * @desc get specific bandwidth (specified by p_Modifier) + * @param p_BandwidthList + * @param p_Modifier + * @return integer + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_SDP_BandwidthList_GetBandwidth(SDP_bandwidth_list p_BandwidthList, + charstring p_Modifier) return integer + { + var integer i; + + for (i := 0; i < lengthof(p_BandwidthList); i := i + 1) { + if (p_BandwidthList[i].modifier == p_Modifier) { + return p_BandwidthList[i].bandwidth; + } + } + FatalError(__FILE__, __LINE__, "no bandwidth found for " & p_Modifier); + return 0; + } + + //---------------------------------------------------------------------------- + + template (value) SDP_attribute cs_SDP_Attribute_rtpmap(charstring p_PayloadType, + template (value) SDP_attribute_rtpmap_codec p_Codec) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + rtpmap := { + payload_type := p_PayloadType, + codec := p_Codec + } + }; + + template (present) SDP_attribute cr_SDP_Attribute_rtpmap(template (present) charstring p_PayloadType := cr_SDP_AnyMediaFormatDescr, + template (present) SDP_attribute_rtpmap_codec p_Codec) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + rtpmap := { + payload_type := p_PayloadType, + codec := p_Codec + } + }; + + template (value) SDP_attribute cs_SDP_Attribute_fmtp(charstring p_Fmt, + template (value) SDP_attribute_fmtp_format_specific_params p_FormatSpecificParameters) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5w140113, R5w140009: new type definition sic@ */ + fmtp := { + format := p_Fmt, + params := p_FormatSpecificParameters + } + }; + + template (present) SDP_attribute cr_SDP_Attribute_fmtp(template (present) charstring p_Fmt := cr_SDP_AnyMediaFormatDescr, + template (present) SDP_attribute_fmtp_format_specific_params p_FormatSpecificParameters := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5w140113, R5w140009: new type definition sic@ */ + fmtp := { + format := p_Fmt, + params := p_FormatSpecificParameters + } + }; + + template (value) SDP_attribute cs_SDP_Attribute_ptime(charstring p_Value := "20") := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + ptime := { + attr_value := p_Value + } + }; + + template (present) SDP_attribute cr_SDP_Attribute_ptime(template (present) charstring p_Value := "20") := + { /* @status APPROVED (IMS, LTE_A) */ + ptime := { + attr_value := p_Value + } + }; + + template (value) SDP_attribute cs_SDP_Attribute_maxptime(charstring p_Value := "240") := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5w140113, R5w140009 sic@ */ + maxptime := { + attr_value := p_Value + } + }; + + template (present) SDP_attribute cr_SDP_Attribute_maxptime(template (present) charstring p_Value := "240") := + { /* @status APPROVED (IMS, LTE_A) */ + /* @sic R5w140113, R5w140009 sic@ */ + maxptime := { + attr_value := p_Value + } + }; + + template (value) SDP_attribute cs_SDP_Attribute_sendrecv := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + sendrecv := {} + }; + + template (value) SDP_attribute cs_SDP_Attribute_recvonly := + { /* @status APPROVED (IMS) */ + recvonly := {} + }; + + template (value) SDP_attribute cs_SDP_Attribute_sendonly := + { /* @status APPROVED (IMS) */ + sendonly := {} + }; + + template (value) SDP_attribute cs_SDP_Attribute_inactive := + { /* @status APPROVED (IMS) */ + inactive := {} + }; + + template (present) SDP_attribute cr_SDP_Attribute_sendrecv := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + sendrecv := {} // @sic R5s130586 change 2 sic@ + }; + + template (present) SDP_attribute cr_SDP_Attribute_recvonly := + { /* @status APPROVED (IMS) */ + recvonly := {} + }; + + template (present) SDP_attribute cr_SDP_Attribute_sendonly := + { /* @status APPROVED (IMS) */ + sendonly := {} + }; + + template (present) SDP_attribute cr_SDP_Attribute_inactive := + { /* @status APPROVED (IMS, LTE_A) */ + inactive := {} // @sic R5s130586 change 1 sic@ + }; + + template (present) SDP_attribute cr_SDP_Attribute_AnySendRecvMode := (cr_SDP_Attribute_sendrecv, cr_SDP_Attribute_recvonly, cr_SDP_Attribute_sendonly, cr_SDP_Attribute_inactive); /* @status APPROVED (IMS) */ + + //---------------------------------------------------------------------------- + + template (value) SDP_attribute cs_SDP_Attribute_conf_qos(charstring p_StatusType := c_remote, + charstring p_Direction := c_sendrecv) := + { /* @status APPROVED (IMS, LTE_A) */ + conf := { + preconditionType := c_qos, + statusType := p_StatusType, + direction := p_Direction + } + }; + + template (present) SDP_attribute cr_SDP_Attribute_conf_qos(template (present) charstring p_StatusType := c_remote, + template (present) charstring p_Direction := c_sendrecv) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + conf := { + preconditionType := c_qos, + statusType := p_StatusType, + direction := p_Direction + } + }; + + template (value) SDP_attribute cs_SDP_Attribute_curr_qos(charstring p_StatusType, + charstring p_Direction := c_none) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + curr := { + preconditionType := c_qos, + statusType := p_StatusType, + direction := p_Direction + } + }; + + template (present) SDP_attribute cr_SDP_Attribute_curr_qos(template (present) charstring p_StatusType, + template (present) charstring p_Direction := c_none) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + curr := { + preconditionType := c_qos, + statusType := p_StatusType, + direction := p_Direction + } + }; + + template (value) SDP_attribute cs_SDP_Attribute_des_qos(charstring p_Strength, + charstring p_StatusType, + charstring p_Direction := c_sendrecv) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + des := { + preconditionType := c_qos, + strength := p_Strength, // @sic R5s120530 change 3.4 sic@ + statusType := p_StatusType, + direction := p_Direction + } + }; + + template (present) SDP_attribute cr_SDP_Attribute_des_qos(template (present) charstring p_Strength, + template (present) charstring p_StatusType, + template (present) charstring p_Direction := c_sendrecv) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + des := { + preconditionType := c_qos, + strength := p_Strength, + statusType := p_StatusType, + direction := p_Direction + } + }; + + template (value) SDP_attribute cs_SDP_Attribute_ecn_capable_rtp(charstring p_InitVal, + charstring p_ParmVal) := + { /* @status APPROVED (IMS, LTE_A) */ + ecn_capable_rtp := { + init_list := { p_InitVal }, + parm_list := { p_ParmVal } + } + }; + + template (value) SDP_attribute cs_SDP_Attribute_rtcp_fb(charstring p_Rtcp_fb_pt, + charstring p_Rtcp_fb_val) := + { /* @status APPROVED (IMS, LTE_A) */ + rtcp_fb := { + rtcp_fb_pt := p_Rtcp_fb_pt, + rtcp_fb_val := p_Rtcp_fb_val + } + }; + + template (value) SDP_attribute cs_SDP_Attribute_rtcp_xr(charstring p_XR_Format) := + { /* @status APPROVED (IMS, LTE_A) */ + rtcp_xr := { + xr_format_list := { + p_XR_Format + } + } + }; + + template (value) SDP_attribute cs_SDP_Attribute_3ge2ae(charstring p_Indicator) := + { /* @status APPROVED (IMS, LTE_A) */ + e2ae := { + indicator := p_Indicator + } + }; + + template (value) SDP_attribute cs_SDP_Attribute_crypto(charstring p_Tag, + charstring p_Suite, + charstring p_KeyParams) := + { /* @status APPROVED (IMS, LTE_A) */ + crypto := { + tag := p_Tag, + crypto_suite := p_Suite, + key_params := p_KeyParams, + session_params := omit + } + }; + + template (value) SDP_attribute cs_SDP_Attribute_pcfg(integer p_ConfigNumber, + charstring p_PotCfg) := + { + pcfg := { + config_number := p_ConfigNumber, + pot_cfg_list := { p_PotCfg } + } + }; + + template (present) SDP_attribute cr_SDP_Attribute_pcfg(integer p_ConfigNumber, + charstring p_PotCfg) := + { + pcfg := { + config_number := p_ConfigNumber, + pot_cfg_list := { p_PotCfg, * } + } + }; + + template (present) SDP_attribute cr_SDP_Attribute_tcap(integer p_TrprCapNumber, + charstring p_Proto) := + { + tcap := { + trpr_cap_num := p_TrprCapNumber, + proto_list := { p_Proto, * } + } + }; + + template (value) SDP_attribute cs_SDP_Attribute_acfg(integer p_ConfigNumber, + charstring p_SelCfg) := + { + acfg := { + config_number := p_ConfigNumber, + sel_cfg_list := { p_SelCfg } + } + }; + + //---------------------------------------------------------------------------- + + template (value) SDP_bandwidth cs_SDP_Bandwidth(charstring p_Modifier, + integer p_Bandwidth) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + modifier := p_Modifier, + bandwidth := p_Bandwidth + }; + + template (present) SDP_bandwidth cr_SDP_Bandwidth(template charstring p_Modifier, + template integer p_Bandwidth) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + modifier := p_Modifier, + bandwidth := p_Bandwidth + }; + + template (value) SDP_bandwidth_list cs_SDP_Bandwidth_List_Media(integer p_AS := 37, + integer p_RS := 0, + integer p_RR := 0) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5-144700: AS=37 per default sic@ */ + cs_SDP_Bandwidth("AS", p_AS), + cs_SDP_Bandwidth("RS", p_RS), + cs_SDP_Bandwidth("RR", p_RR) + }; + + template (present) SDP_bandwidth_list cr_SDP_Bandwidth_List_Media(template (present) integer p_AS := ?, + template (present) integer p_RS := ?, + template (present) integer p_RR := ?) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + cr_SDP_Bandwidth("AS", p_AS), + cr_SDP_Bandwidth("RS", p_RS), + cr_SDP_Bandwidth("RR", p_RR) + }; + + template (value) SDP_bandwidth_list cs_SDP_Bandwidth_List_AS(integer p_Bandwidth) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cs_SDP_Bandwidth("AS", p_Bandwidth) + }; + + template (present) SDP_bandwidth_list cr_SDP_Bandwidth_List_AS(template (present) integer p_Bandwidth := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cr_SDP_Bandwidth("AS", p_Bandwidth), + * // @sic R5s130495 change 12 sic@ + }; + + //---------------------------------------------------------------------------- + + template (value) SDP_conn_addr cs_SDP_Conn_Addr(template (value) charstring p_IPAddr) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + addr := p_IPAddr, + ttl := omit, + num_of_addr := omit + }; + + template (present) SDP_conn_addr cr_SDP_Conn_Addr(template (present) charstring p_IPAddr) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + addr := p_IPAddr, + ttl := *, + num_of_addr := * + }; + + //---------------------------------------------------------------------------- + + template (value) SDP_connection cs_SDP_Connection(template (value) charstring p_AddrType, + template (value) charstring p_IPAddr) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + net_type := c_in, + addr_type := p_AddrType, + conn_addr := cs_SDP_Conn_Addr(p_IPAddr) + }; + + template (present) SDP_connection cr_SDP_Connection(template (present) charstring p_AddrType := ?, + template (present) charstring p_IPAddr := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + net_type := c_in, + addr_type := p_AddrType, + conn_addr := cr_SDP_Conn_Addr(p_IPAddr) + }; + + //---------------------------------------------------------------------------- + + template (value) SDP_media_field cs_SDP_Media(charstring p_Media, + integer p_LocalPort, + charstring p_Transport, + SDP_fmt_list p_Fmts) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + media := p_Media, + ports := { + port_number := p_LocalPort, + num_of_ports := omit + }, + transport := p_Transport, + fmts := p_Fmts + }; + + template (value) SDP_media_field cs_SDP_Media_MultiAudio(SDP_fmt_list p_Fmts, + integer p_LocalPort := tsc_IMS_MediaPort_M1, + charstring p_Transport := c_rtpAvp) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cs_SDP_Media(c_audio, p_LocalPort, p_Transport, p_Fmts); + + template (value) SDP_media_field cs_SDP_Media_Audio(charstring p_Fmt, + integer p_LocalPort := tsc_IMS_MediaPort_M1, + charstring p_Transport := c_rtpAvp) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cs_SDP_Media_MultiAudio({p_Fmt}, p_LocalPort, p_Transport); + + template (value) SDP_media_field cs_SDP_Media_Text(SDP_fmt_list p_Fmts, + integer p_LocalPort := tsc_IMS_MediaPort_M1, + charstring p_Transport := c_rtpAvp) := + cs_SDP_Media(c_text, p_LocalPort, p_Transport, p_Fmts); + + template (value) SDP_media_field cs_SDP_Media_Video(charstring p_Fmt, + integer p_LocalPort := tsc_IMS_MediaPort_M2, + charstring p_Transport := c_rtpAvp) := + cs_SDP_Media(c_video, p_LocalPort, p_Transport, {p_Fmt}); + + + + + template (present) SDP_fmt_list cr_SDP_FmtList_AtLeastOne(template (present) charstring p_Fmt) := { p_Fmt, * }; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) SDP_fmt_list cr_SDP_FmtList_AtLeastTwo(template (present) charstring p_Fmt1, + template (present) charstring p_Fmt2) := { p_Fmt1, p_Fmt2, * }; + + template (present) SDP_media_field cr_SDP_Media(charstring p_Media, + template (present) integer p_LocalPort := ?, + template (present) charstring p_Transport := c_rtpAvp, + template (present) SDP_fmt_list p_FmtList) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + media := p_Media, + ports := { + port_number := p_LocalPort, + num_of_ports := omit + }, + transport := p_Transport, + fmts := p_FmtList + }; + + template (present) SDP_media_field cr_SDP_Media_Audio(template (present) charstring p_Fmt := cr_SDP_AnyMediaFormatDescr, + template (present) integer p_LocalPort := ?, + template (present) charstring p_Transport := c_rtpAvp) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cr_SDP_Media(c_audio, p_LocalPort, p_Transport, cr_SDP_FmtList_AtLeastOne(p_Fmt)); + + template (present) SDP_media_field cr_SDP_Media_Text(template (present) charstring p_Fmt1 := cr_SDP_AnyMediaFormatDescr, + template (present) charstring p_Fmt2 := cr_SDP_AnyMediaFormatDescr) := + cr_SDP_Media(c_text, -, -, cr_SDP_FmtList_AtLeastTwo(p_Fmt1, p_Fmt2)); + + template (present) SDP_media_field cr_SDP_Media_Video(template (present) charstring p_Fmt := cr_SDP_AnyMediaFormatDescr) := + cr_SDP_Media(c_video, -, -, cr_SDP_FmtList_AtLeastOne(p_Fmt)); + + //---------------------------------------------------------------------------- + + template (value) SDP_Origin cs_SDP_Origin(charstring p_SessionId := tsc_SDP_SessionId, + charstring p_SessionVersion := tsc_SDP_SessionVersion1, + template (value) charstring p_AddrType, + template (value) charstring p_IPAddr) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + user_name := "-", + session_id := p_SessionId, + session_version := p_SessionVersion, + net_type := c_in, + addr_type := p_AddrType, + addr := p_IPAddr + }; + + template (present) SDP_Origin cr_SDP_Origin(template (present) charstring p_AddrType, + template (present) charstring p_IPAddr) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + user_name := ?, + session_id := ?, + session_version := ?, + net_type := c_in, + addr_type := p_AddrType, + addr := p_IPAddr + }; + + //---------------------------------------------------------------------------- + + template (value) SDP_time cs_SDP_Time(charstring p_Start, + charstring p_Stop) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + time_field := { + start_time := p_Start, + stop_time := p_Stop + }, + time_repeat := omit + }; + template (value) SDP_time cs_SDP_Time_0_0 := cs_SDP_Time("0", "0"); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + + template (present) SDP_time cr_SDP_Time(template (present) charstring p_Start, + template (present) charstring p_Stop) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + time_field := { + start_time := p_Start, + stop_time := p_Stop + }, + time_repeat := omit + }; + template (present) SDP_time cr_SDP_Time_0_0 := cr_SDP_Time("0", "0"); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) SDP_time cr_SDP_Time_Any := cr_SDP_Time(?, ?); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + //============================================================================ + + template (value) SDP_media_desc cs_SDP_Media_Desc(template (value) SDP_media_field p_SDP_Media_Field, + template (value) SDP_bandwidth_list p_SDP_Bandwidth_List, + template (omit) SDP_attribute_list p_SDP_Attribute_List, + template (omit) SDP_connection_list p_SDP_Connection_List := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + media_field := p_SDP_Media_Field, + information := omit, + connections := p_SDP_Connection_List, + bandwidth := p_SDP_Bandwidth_List, + key := omit, + attributes := p_SDP_Attribute_List + }; + + template (present) SDP_media_desc cr_SDP_Media_Desc(template (present) SDP_media_field p_SDP_Media_Field, + template SDP_connection p_SDP_Connection, + template SDP_bandwidth_list p_SDP_Bandwidth_List, + template SDP_attribute_list p_SDP_Attribute_List) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + media_field := p_SDP_Media_Field, + information := omit, + connections := { p_SDP_Connection, * } ifpresent, + bandwidth := p_SDP_Bandwidth_List, + key := omit, + attributes := p_SDP_Attribute_List + }; + + //============================================================================ + + template (value) SDP_Message cs_SDP_Message_Common(template (value) SDP_Origin p_SDP_Origin, + template (omit) SDP_connection p_SDP_Connection, + charstring p_Sessionname := tsc_SDP_NoSessionname, + template (value) SDP_bandwidth_list p_Bandwidth, + template (value) SDP_time p_Time := cs_SDP_Time_0_0, + template (omit) SDP_media_desc_list p_SDP_Media_Desc_List := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5s130510 change 4 - additional change sic@ */ + /* @sic R5-144700: default value removed for p_Bandwidth sic@ */ + protocol_version := 0, // v-line + origin := p_SDP_Origin, // o-line + session_name := p_Sessionname, // s-line + information := omit, + uri := omit, + emails := omit, + phone_numbers := omit, + connection := p_SDP_Connection, // c-line + bandwidth := p_Bandwidth, // b-line + times := { p_Time }, // t-line + timezone_adjustments := omit, + key := omit, + attributes := omit, + media_list := p_SDP_Media_Desc_List + }; + + template (value) SDP_Message cs_SDP_Message_Def(template (value) SDP_Origin p_SDP_Origin, + template (omit) SDP_connection p_SDP_Connection, + charstring p_Sessionname := tsc_SDP_NoSessionname, + integer p_BandwidthAS := 37, + template (value) SDP_media_desc p_SDP_Media_Desc) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5s130510 change 4 - additional change sic@ */ + /* @sic R5-144700: new parameter p_BandwidthAS set to 37 per default sic@ */ + cs_SDP_Message_Common(p_SDP_Origin, p_SDP_Connection, p_Sessionname, cs_SDP_Bandwidth_List_AS(p_BandwidthAS), -, { p_SDP_Media_Desc }); + + + template (present) SDP_Message cr_SDP_Message_Common(template (present) charstring p_AddrType := ?, + template (present) charstring p_IPAddrOrigin := ?, + template (present) charstring p_IPAddrConnection := ?, + template (present) charstring p_Sessionname := ?, // @sic R5-130751 sic@ + template SDP_bandwidth_list p_Bandwidth := cr_SDP_Bandwidth_List_AS, + template (present) SDP_time p_Time := cr_SDP_Time_0_0, + template SDP_media_desc_list p_SDP_Media_Desc_List := *) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + protocol_version := 0, // v-line + origin := cr_SDP_Origin(p_AddrType, p_IPAddrOrigin), // o-line + session_name := p_Sessionname, // s-line + information := omit, + uri := omit, + emails := omit, + phone_numbers := omit, + connection := cr_SDP_Connection(p_AddrType, p_IPAddrConnection) ifpresent, // c-line + bandwidth := p_Bandwidth, // b-line + times := { p_Time }, // t-line + timezone_adjustments := omit, + key := omit, + attributes := omit, + media_list := p_SDP_Media_Desc_List + }; + + template (present) SDP_Message cr_SDP_Message_Def(template (present) charstring p_AddrType := ?, + template (present) charstring p_IPAddrOrigin := ?, + template (present) charstring p_IPAddrConnection := ?, + template (present) SDP_media_desc p_SDP_Media_Desc) := + /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + cr_SDP_Message_Common(p_AddrType, p_IPAddrOrigin, p_IPAddrConnection, -, -, -, { p_SDP_Media_Desc }); + + template (present) SDP_Message cr_SDP_Message_AnySession(template (present) charstring p_AddrType := ?, + template (present) charstring p_IPAddrOrigin := ?, + template (present) charstring p_IPAddrConnection := ?, + template (present) SDP_media_desc p_SDP_Media_Desc) := + /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + cr_SDP_Message_Common(p_AddrType, p_IPAddrOrigin, p_IPAddrConnection, -, -, cr_SDP_Time_Any, { p_SDP_Media_Desc }); + +} diff --git a/LTE_A_IWD_14wk37/Common/IMS/IMS_SIP_Templates.ttcn b/LTE_A_IWD_14wk37/Common/IMS/IMS_SIP_Templates.ttcn new file mode 100644 index 0000000..072b383 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS/IMS_SIP_Templates.ttcn @@ -0,0 +1,2278 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-11 12:36:16 +0200 (Thu, 11 Sep 2014) $ +// $Rev: 12204 $ +/******************************************************************************/ + +module IMS_SIP_Templates { + import from CommonDefs all; + import from CommonIP all; + import from IMS_CommonParameters all; + import from IMS_CommonDefs all; + import from IMS_CommonTemplates all; + import from IP_ASP_TypeDefs all; + + import from LibSip_Common all; + import from LibSip_MessageBodyTypes all; + import from LibSip_SIPTypesAndValues all; + + const charstring tsc_SEC_MECHANISM := "ipsec-3gpp"; /* Security Mechanism name + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + // Securiity algorithms for IPSEC + const charstring tsc_HMAC_MD5_96 := "hmac-md5-96"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + const charstring tsc_HMAC_SHA_1_96 := "hmac-sha-1-96"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + const charstring tsc_AKAv1_MD5 := "AKAv1-MD5"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + const charstring tsc_HTTP_MD5 := "MD5"; /* @status APPROVED (IMS) */ + const octetstring tsc_COLON_HEX := '3A'O; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + template (present) SemicolonParam_List cr_SemicolonParam_List_WithAnyTag := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cr_SemicolonParam_List_OneSpecificParam(c_tagId, *); + + template (present) SemicolonParam_List cr_ExpiresInContactParams(template (present) charstring p_Expires := ?) := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cr_SemicolonParam_List_OneSpecificParamWithValue("expires", p_Expires); + + template (present) SemicolonParam_List cr_CPInstanceInContactParams := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cr_SemicolonParam_List_OneSpecificParamWithValue("c-p-instance", "sip.instance=" & tsc_IMS_UEInstanceId); + + template (present) SemicolonParam_List cr_SMSParamInContactParams := /* @sic R5s120530 change 2.1 sic@ + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cr_SemicolonParam_List_OneSpecificParamNoValue("+g.3gpp.smsip"); + + template (present) SemicolonParam_List cr_VideoInContactParams := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cr_SemicolonParam_List_OneSpecificParamNoValue("video"); + + template (present) SemicolonParam_List cr_FeatureParam_3gpp_icsi_ref := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cr_SemicolonParam_List_OneSpecificParam(tsc_IMS_FeatureParamId_3gpp_icsi_ref, cr_GenValueQuoted(cs_IMS_EncodedFeatureParamValue_3gpp_icsi_ref)); // @sic R5s120530 change 3.1, R5w140111, R5-142247 sic@ + + template (present) SemicolonParam_List cr_SigCompParam := /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cr_SemicolonParam_List_OneSpecificParamWithValue("comp", "sigcomp"); + + template (present) SemicolonParam_List cr_SecurityMechParams_IPsec(charstring p_Algorithm) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cr_GenericParam("alg", p_Algorithm), + cr_GenericParam("spi-c", ?), + cr_GenericParam("spi-s", ?), + cr_GenericParam("port-c", ?), + cr_GenericParam("port-s", ?), + * + }; + + template (value) GenericParam cs_SigCompParam := cs_GenericParam("comp", "sigcomp"); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + //---------------------------------------------------------------------------- + + const OptionTag_List tsc_OptionTagList_100rel := {c_tag100rel}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ +// const OptionTag_List tsc_OptionTagList_geolocation := {"geolocation"}; /* @status APPROVED (IMS, LTE) */ + const OptionTag_List tsc_OptionTagList_precondition := {c_tagPrecond}; /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + const OptionTag_List tsc_OptionTagList_sec_agree := {"sec-agree"}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + const OptionTag_List tsc_OptionTagList_Empty := {}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + /* + * @desc generate receive template expection all given option tags and any further ones + * @param p_RequestedTags + * @return template (present) OptionTag_List + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_OptionTagListRX(OptionTag_List p_RequestedTags) return template (present) OptionTag_List + { + var template (present) OptionTag_List v_TagList; + + // v_TagList := superset(all from p_TagList); // this is the solution acc. to V4.5.1 of the core language ... + // ... WORKAROUND: + + select (lengthof(p_RequestedTags)) { +/* case (1) { v_TagList := superset(p_RequestedTags[0]); } */ +/* case (2) { v_TagList := superset(p_RequestedTags[0], p_RequestedTags[1]); } */ +/* case (3) { v_TagList := superset(p_RequestedTags[0], p_RequestedTags[1], p_RequestedTags[2]); } */ +/* case (4) { v_TagList := superset(p_RequestedTags[0], p_RequestedTags[1], p_RequestedTags[2], p_RequestedTags[3]); } */ +/* case (4) { v_TagList := superset(p_RequestedTags[0], p_RequestedTags[1], p_RequestedTags[2], p_RequestedTags[3], p_RequestedTags[4]); } */ + // workaround: + case (1) { v_TagList := {p_RequestedTags[0], *}; } + case (2) { v_TagList := {p_RequestedTags[0], p_RequestedTags[1], *}; } + case (3) { v_TagList := {p_RequestedTags[0], p_RequestedTags[1], p_RequestedTags[2], *}; } + case (4) { v_TagList := {p_RequestedTags[0], p_RequestedTags[1], p_RequestedTags[2], p_RequestedTags[3], *}; } + case (4) { v_TagList := {p_RequestedTags[0], p_RequestedTags[1], p_RequestedTags[2], p_RequestedTags[3], p_RequestedTags[4], *}; } + case else { FatalError(__FILE__, __LINE__, ""); } + } + return v_TagList; + } + + //---------------------------------------------------------------------------- + + template (present) DisplayName cr_DisplayNameToken(charstring p_DisplayName) := {token := f_TokenPattern(p_DisplayName)}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) DisplayName cr_DisplayNameQuotedString(charstring p_DisplayName) := {quotedString := p_DisplayName}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) DisplayName cr_DisplayName(charstring p_DisplayName) := (cr_DisplayNameToken(p_DisplayName), cr_DisplayNameQuotedString(p_DisplayName)); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + + template (present) NameAddr cr_NameAddr(template DisplayName p_DisplayName, + template (present) SipUrl p_SipUrl) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5w140111: p_DisplayName - type changed from charstring to DisplayName sic@ */ + displayName := p_DisplayName, + addrSpec := p_SipUrl + }; + + template (present) NameAddr cr_NameAddr_NoDisplayName(template (present) SipUrl p_SipUrl) := cr_NameAddr(omit, p_SipUrl); + + template (value) NameAddr cs_NameAddr(template (value) SipUrl p_SipUrl) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + displayName := omit, + addrSpec := p_SipUrl + }; + + //---------------------------------------------------------------------------- + + //**************************************************************************** + // IEs (in alphatic order) + //---------------------------------------------------------------------------- + + template (present) Accept cr_AcceptDef (charstring p_MediaRange) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := ACCEPT_E, + acceptArgs := { + { + mediaRange := p_MediaRange, + acceptParam := omit + } + } + }; + + //---------------------------------------------------------------------------- + + template (value) AcceptBody cs_AcceptBody(charstring p_MediaRange) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + mediaRange := p_MediaRange, + acceptParam := omit + }; + + template (value) Accept cs_Accept(template (value) AcceptBody_List p_AcceptBodyList) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + fieldName := ACCEPT_E, + acceptArgs := p_AcceptBodyList + }; + + template (present) AcceptBody cr_AcceptBody(template (present) charstring p_MediaRange) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + mediaRange := p_MediaRange, + acceptParam := * + }; + + template (present) Accept cr_Accept(template (present) AcceptBody_List p_AcceptBodyList) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := ACCEPT_E, + acceptArgs := p_AcceptBodyList + }; + + //---------------------------------------------------------------------------- + + template (present) AcceptContact cr_AcceptContact(template (present) GenericParam p_GenericParam := cr_GenericParam_Any) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := ACCEPT_CONTACT_E, + acValues := { + { + wildcard := c_WILDCARD, + acRcParams := { p_GenericParam, * } + } + } + }; + + template (value) AcceptContact cs_AcceptContact(template (value) SemicolonParam_List p_ParamList) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + fieldName := ACCEPT_CONTACT_E, + acValues := { + { + wildcard := c_WILDCARD, + acRcParams := p_ParamList + } + } + }; + + //---------------------------------------------------------------------------- + + template (present) Addr_Union cr_Addr_Union_NameAddr(template (present) SipUrl p_SipUrl, + template DisplayName p_DisplayName := *) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + nameAddr := cr_NameAddr(p_DisplayName, p_SipUrl) + }; + + template (present) Addr_Union cr_Addr_Union_AddrSpecUnion(template (present) SipUrl p_SipUrl) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + addrSpecUnion := p_SipUrl + }; + + /* + * @desc return 'Addr_Union' to be used in receive templates + * @param p_SipUrl + * @param p_DisplayName (default value: *) + * @return template (present) Addr_Union + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_Addr_Union_RX(template (present) SipUrl p_SipUrl, + template DisplayName p_DisplayName := *) return template (present) Addr_Union + { + var template (present) Addr_Union v_Addr_Union; + + if (ispresent(p_DisplayName)) { + v_Addr_Union := cr_Addr_Union_NameAddr(p_SipUrl, p_DisplayName); + } else { + v_Addr_Union := (cr_Addr_Union_NameAddr(p_SipUrl, p_DisplayName), cr_Addr_Union_AddrSpecUnion(p_SipUrl)); + } + return v_Addr_Union; + } + + /* + * @desc get SipUrl from 'Addr_Union' union + * @param p_Addr_Union + * @return SipUrl + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_Addr_Union_GetSipUrl(template (omit) Addr_Union p_Addr_Union) return SipUrl + { + var SipUrl v_SipUrl; + + if (ischosen(p_Addr_Union.addrSpecUnion)) { + v_SipUrl := valueof(p_Addr_Union.addrSpecUnion); + } else { + v_SipUrl := valueof(p_Addr_Union.nameAddr.addrSpec); + } + return v_SipUrl; + } + + //---------------------------------------------------------------------------- + + template (present) AlertInfo cr_AlertInfo (template charstring p_AlertInfoUrl) := + { /* @status APPROVED (IMS) */ + fieldName := ALERT_INFO_E, + alertInfoBody := { + { + url := p_AlertInfoUrl, + genericParams := * + } + } + }; + + //---------------------------------------------------------------------------- + + template (present) Allow cr_Allow(template (present) charstring p_Method) := + { + fieldName := ALLOW_E, + methods := { p_Method } + }; + + template (value) Allow cs_Allow(charstring p_Method) := + { + fieldName := ALLOW_E, + methods := { p_Method } + }; + + //---------------------------------------------------------------------------- + + template (present) Authorization cr_AuthorizationInitial(charstring p_UserName, + charstring p_Realm, + template GenValue p_Nonce := cr_GenValue_None, + template GenValue p_Response := cr_GenValue_None) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5w140111: GenValue sic@ */ + fieldName := AUTHORIZATION_E, + body := { + { + digestResponse := { + cr_GenericParam("username", p_UserName), + cr_GenericParam("realm", p_Realm), + cr_GenericParam_Common("nonce", p_Nonce), + cr_GenericParam("uri", "sip:" & p_Realm), + cr_GenericParam_Common("response", p_Response), // Response calculated by UE + * + } + } + } + }; + + template (present) Authorization cr_AuthorizationCommon(charstring p_UserName, + charstring p_Realm, + charstring p_Nonce, + template (present) charstring p_Uri, + charstring p_Algorithm, + template (present) charstring p_Nc := "00000001", + charstring p_Opaque := tsc_IMS_Opaque, + charstring p_Qop := "auth", + template (present) charstring p_Cnonce := ?, + template (present) charstring p_Response := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5s130794 change 2: new parameters p_Algorithm, p_Uri; renamed to cr_AuthorizationCommon sic@ */ + fieldName := AUTHORIZATION_E, + body := { + { + digestResponse := { + cr_GenericParam("username", p_UserName), + cr_GenericParam("realm", p_Realm), + cr_GenericParam("nonce", p_Nonce), + cr_GenericParam("opaque", p_Opaque), + cr_GenericParam("uri", p_Uri), + cr_GenericParam("qop", p_Qop), + cr_GenericParam("cnonce", p_Cnonce), + cr_GenericParam("nc", p_Nc), + cr_GenericParam("response", p_Response), // Response calculated by UE + cr_GenericParam("algorithm", p_Algorithm), + * + } + } + } + }; + + template (present) Authorization cr_AuthorizationDef(charstring p_UserName, + charstring p_Realm, + charstring p_Nonce, + template (present) charstring p_Nc) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5s130794 change 2: wrapper template sic@ */ + cr_AuthorizationCommon(p_UserName, p_Realm, p_Nonce, "sip:" & p_Realm, tsc_AKAv1_MD5, p_Nc); + + //---------------------------------------------------------------------------- + + template (present) CallId cr_CallId (template (present) charstring p_CallId) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := CALL_ID_E, + callid := p_CallId + }; + + template (value) CallId cs_CallId (charstring p_CallId) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := CALL_ID_E, + callid := p_CallId + }; + + //---------------------------------------------------------------------------- + + template (present) ContactAddress cr_ContactAddress(template DisplayName p_DisplayName, + template (present) SipUrl p_SipUrl, + template SemicolonParam_List p_ContactParams := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5s140676 Change 1 sic@ */ + addressField := f_Addr_Union_RX(p_SipUrl, p_DisplayName), + contactParams := p_ContactParams + }; + + template (present) Contact cr_Contact(template (present) SipUrl p_SipUrl, + template SemicolonParam_List p_ContactParams := *) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := CONTACT_E, + contactBody := { + contactAddresses := { + cr_ContactAddress(*, p_SipUrl, p_ContactParams), + * + } + } + }; + + template (value) Contact cs_Contact(template (value) SipUrl p_SipUrl, + template (omit) SemicolonParam_List p_ContactParams := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := CONTACT_E, + contactBody := { + contactAddresses := { + { + addressField := { + nameAddr := cs_NameAddr(p_SipUrl) + }, + contactParams := p_ContactParams + } + } + } + }; + + template (present) Contact cr_Contact_Wildcard := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := CONTACT_E, + contactBody := { + wildcard := "*" + } + }; + + //---------------------------------------------------------------------------- + + template (present) ContentLength cr_ContentLength(template (present) integer p_Length := 0) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + fieldName := CONTENT_LENGTH_E, + len := p_Length + }; + + template (value) ContentLength cs_ContentLength(integer p_Length := -1) := + { // Note: The actual length shall be set by the encoder, see 34.229-3 clause 7.3.4 + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := CONTENT_LENGTH_E, + len := p_Length + }; + + //---------------------------------------------------------------------------- + + template (present) ContentType cr_ContentType(template (present) charstring p_MediaType) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := CONTENT_TYPE_E, + mediaType := p_MediaType + }; + + template (present) ContentType cr_ContentTypeSDP := cr_ContentType("application/sdp"); /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + + template (value) ContentType cs_ContentType(charstring p_MediaType) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := CONTENT_TYPE_E, + mediaType := p_MediaType + }; + + template (value) ContentType cs_ContentTypeSDP := cs_ContentType("application/sdp"); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + //---------------------------------------------------------------------------- + + template (present) CSeq cr_CseqDef(template (present) integer p_SeqNo, + charstring p_Method) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := CSEQ_E, + seqNumber := p_SeqNo, + method := p_Method + }; + + template (value) CSeq cs_CseqDef(template (value) integer p_SeqNo, + charstring p_Method) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := CSEQ_E, + seqNumber := p_SeqNo, + method := p_Method + }; + + //---------------------------------------------------------------------------- + + template (present) Event cr_EventDef (template (present) EventType p_EventType) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := EVENT_E, + eventType := p_EventType, + eventParams := omit + }; + + template (value) Event cs_EventDef (template (value) EventType p_EventType) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := EVENT_E, + eventType := p_EventType, + eventParams := omit + }; + + //---------------------------------------------------------------------------- + + template (present) Expires cr_Expires(template (present) charstring p_DeltaSec) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := EXPIRES_E, + deltaSec := p_DeltaSec + }; + + template (value) Expires cs_Expires(charstring p_DeltaSec) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := EXPIRES_E, + deltaSec := p_DeltaSec + }; + + //---------------------------------------------------------------------------- + + template (value) FeatureCaps cs_FeatureCaps(charstring p_FeatureCap) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := FEATURE_CAPS_E, + fcValues := { + { + wildcard := c_WILDCARD, + fcParams := { cs_GenericParam(p_FeatureCap) } + } + } + }; + + //---------------------------------------------------------------------------- + + template (present) From cr_From(template DisplayName p_DisplayName, + template (present) SipUrl p_SipUrl, + template (present) charstring p_Tag := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := FROM_E, + addressField := f_Addr_Union_RX(p_SipUrl, p_DisplayName), /* @sic R5s130378 change 3 sic@ */ + fromParams := { cr_GenericParam(c_tagId, p_Tag), * } + }; + + template (present) From cr_FromWithTag(template (present) SipUrl p_SipUrl, + template (present) charstring p_Tag := ?) := cr_From(*, p_SipUrl, p_Tag); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) @sic R5s130256 sic@ */ + + template (value) From cs_From(template (value) SipUrl p_SipUrl, + template (omit) charstring p_Tag := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := FROM_E, + addressField := { + nameAddr := cs_NameAddr(p_SipUrl) + }, + fromParams := { cs_GenericParam(c_tagId, p_Tag) } + }; + + //---------------------------------------------------------------------------- + + template (present) Geolocation cr_GeolocationAny := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5-133151 update of header field structure sic@ */ + fieldName := GEOLOCATION_E, + addrSpec := ?, + geolocParam := * // @sic R5-133151 optinal parameter sic@ + }; + + template (present) GeolocationRouting cr_GeolocationRoutingAny := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5-133151 sic@ */ + fieldName := GEOLOCATION_ROUTING_E, + state := ?, + genericValue := * + }; + + template (present) GeolocationRouting cr_GeolocationRoutingSupported := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5-134798 sic@ */ + fieldName := GEOLOCATION_ROUTING_E, + state := ?, + genericValue := cr_GenericParam(?, "yes") /* @sic R5w140111: GenValue sic@ */ + }; + //---------------------------------------------------------------------------- + + template (value) HistoryInfoEntry cs_HistoryInfoEntry(template (value) SipUrl p_SipUrl) := + { /* @status APPROVED (IMS) */ + nameAddr := cs_NameAddr(p_SipUrl), + hiIndex := { 1 }, /* @sic R5s130195 BASELINE MOVING 2013 sic@ + @sic LibSip v.3.0.0: hiIndex changed to IntegerList sic@ */ + hiExtention := omit + }; + + template (value) HistoryInfo cs_HistoryInfo(template (value) SipUrl p_SipUrl) := + { /* @status APPROVED (IMS) */ + fieldName := HISTORY_INFO_E, + historyInfoList := { + cs_HistoryInfoEntry(p_SipUrl) + } + }; + + //---------------------------------------------------------------------------- + + template (present) HostPort cr_HostPort(template (present) charstring p_Host := ?, + template integer p_Port := *) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + host := p_Host, + portField := p_Port + }; + + template (value) HostPort cs_HostPort(charstring p_Host, + template (omit) integer p_Port := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + host := p_Host, + portField := p_Port + }; + + //---------------------------------------------------------------------------- + + template (present) MaxForwards cr_MaxForwardsDef(template (present) integer p_Value := (1..255)) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := MAX_FORWARDS_E, + forwards := p_Value + }; + + template (value) MaxForwards cs_MaxForwardsDef (template (value) integer p_Value := 67) := + { // p_Value := 67 -> any value + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := MAX_FORWARDS_E, + forwards := p_Value + }; + + //---------------------------------------------------------------------------- + template (value) NameAddrParam cs_NameAddrParam(template (value) SipUrl p_SipUrl) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + nameAddr := cs_NameAddr(p_SipUrl), + genericParams := omit + }; + + //---------------------------------------------------------------------------- + + template (present) PAccessNetworkInfo cr_PAccessNetworkInfoDef (template (present) charstring p_AccessType, + template GenValue p_GenValueCellId := *) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := P_ACCESS_NETWORK_INFO_E, + accessType := p_AccessType, + genericParams := { + cr_GenericParam_Common("utran-cell-id-3gpp", p_GenValueCellId), + * + } + }; + + //---------------------------------------------------------------------------- + + template (value) PAssertedID cs_PAssertedId (template (value) SipUrl p_SipUrl) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := P_ASSERTED_ID_E, + pAssertedIDValueList := { + { + nameAddr := cs_NameAddr(p_SipUrl) + } + } + }; + + //---------------------------------------------------------------------------- + + template (present) PAssertedID cr_PAssertedId (template (present) SipUrl p_SipUrl) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + fieldName := P_ASSERTED_ID_E, + pAssertedIDValueList := { + { + nameAddr := cr_NameAddr(*, p_SipUrl) + } + } + }; + + //---------------------------------------------------------------------------- + + template (value) PAssertedService cs_PAssertedService(template (value) PAssertedServiceValue p_PAssertedServiceValue) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + fieldName := P_ASSERTED_SERVICE_E, + pAssertedServiceValue := p_PAssertedServiceValue + }; + + //---------------------------------------------------------------------------- + + template (value) PAssociatedURI cs_PAssociatedURI(template (value) NameAddrParam_List p_NameAddrParam) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := P_ASSOCIATED_URI_E, + nameAddrList := p_NameAddrParam + }; + + //---------------------------------------------------------------------------- + + template (value) Path cs_PathDef(charstring p_Host) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := PATH_E, + pathValues := { + { + nameAddr := cs_NameAddr(cs_SipUri_HostPort_lr(p_Host)), + rrParam := omit + } + } + }; + + //---------------------------------------------------------------------------- + + template (value) PCalledPartyID cs_PCalledPartyId(template (value) SipUrl p_SipUrl) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + fieldName := P_CALLED_PARTY_E, + nameAddParams := cs_NameAddrParam(p_SipUrl) + }; + + //---------------------------------------------------------------------------- + + template (present) PPreferredID cr_PPreferredID(template (present) PPreferredIDValue_List p_PPreferredIDList := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := P_PREFERRED_ID_E, + pPreferredIDValueList := p_PPreferredIDList + }; + + //---------------------------------------------------------------------------- + + template (present) PPreferredService cr_PPreferredService(template (present) charstring p_ServiceId := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := P_PREFERRED_SERVICE_E, + serviceId := p_ServiceId + }; + + //---------------------------------------------------------------------------- + + template (present) ProxyRequire cr_ProxyRequireDef := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := PROXY_REQUIRE_E, + optionsTags := { "sec-agree", *} + }; + + //---------------------------------------------------------------------------- + + template (value) RAck cs_RAckDef(template (value) integer p_RSeq, + template (value) integer p_CSeq, + template (value) charstring p_Method) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + fieldName := RACK_E, + responseNum := p_RSeq, + seqNumber := p_CSeq, + method := p_Method + }; + + template (present) RAck cr_RAckDef(template (present) integer p_RSeq, + template (present) integer p_CSeq, + template (present) charstring p_Method) := + { /* @status APPROVED (IMS, LTE_A) */ + fieldName := RACK_E, + responseNum := p_RSeq, + seqNumber := p_CSeq, + method := p_Method + }; + + //---------------------------------------------------------------------------- + + template (present) ReasonValue cr_ReasonValue(template (present) SemicolonParam_List p_ReasonParams) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + token := "SIP", + reasonParams := p_ReasonParams + }; + + /* + * @desc local function to set the parameters + * @param p_CauseValue + * @param p_Text + * @return template (present) ReasonValue + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function fl_ReasonValues(integer p_CauseValue, + template charstring p_Text) return template (present) ReasonValue + { + var template (present) SemicolonParam_List v_ReasonParams; + + if (ispresent(p_Text)) { + v_ReasonParams := { + cr_GenericParam("cause", int2str(p_CauseValue)), + cr_GenericParam("text", p_Text), // complier warning cannot be avoided + * + }; + } else { + v_ReasonParams := { + cr_GenericParam("cause", int2str(p_CauseValue)), + * + }; + } + return cr_ReasonValue(v_ReasonParams); + }; + + template (present) Reason cr_Reason(integer p_CauseValue, + template charstring p_Text := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + fieldName := REASON_E, + reasonValues := { + fl_ReasonValues(p_CauseValue, p_Text) + } + }; + + //---------------------------------------------------------------------------- + + template (value) RecordRoute cs_RecordRoute(template (value) RouteBody_List p_RouteBodyList) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := RECORD_ROUTE_E, + routeBody := p_RouteBodyList + }; + + template (present) RecordRoute cr_RecordRoute(template (present) RouteBody_List p_RouteBodyList) := + { + fieldName := RECORD_ROUTE_E, + routeBody := p_RouteBodyList + }; + + //---------------------------------------------------------------------------- + + template (value) ReferredBy cs_ReferredBy (template (value) SipUrl p_SipUrl) := + { + fieldName := REFERRED_BY_E, + nameAddr := cs_NameAddr(p_SipUrl), + referredbyIdParams := omit + }; + + template (present) ReferredBy cr_ReferredBy (template (present) SipUrl p_SipUrl) := + { + fieldName := REFERRED_BY_E, + nameAddr := cr_NameAddr(*, p_SipUrl), + referredbyIdParams := * + }; + + //---------------------------------------------------------------------------- + + template (present) ReferTo cr_ReferTo(template (present) SipUrl p_SipUrl) := + { + fieldName := REFER_TO_E, + nameAddr := cr_NameAddr(*, p_SipUrl), + referToParams := omit + }; + + template (value) ReferTo cs_ReferTo (template (value) SipUrl p_SipUrl, + template (omit) SemicolonParam_List p_ReferToParams := omit) := + { + fieldName := REFER_TO_E, + nameAddr := cs_NameAddr(p_SipUrl), + referToParams := p_ReferToParams + }; + + //---------------------------------------------------------------------------- + + template (present) RequestDisposition cr_RequestDisposition(template (present) Directive_List p_Directives) := + { + fieldName := REQUEST_DISPOSITION_E, + directives := p_Directives + }; + + template (value) RequestDisposition cs_RequestDisposition(template (value) Directive_List p_Directives) := + { /* @status APPROVED (IMS) */ + fieldName := REQUEST_DISPOSITION_E, + directives := p_Directives + }; + + //---------------------------------------------------------------------------- + + template (present) RequestLine cr_RequestLineSip(Method p_Method, + template (present) SipUrl p_URI) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + method := p_Method, + requestUri := p_URI, + sipVersion := c_sipNameVersion + }; + + template (value) RequestLine cs_RequestLineSip(Method p_Method, + template (value) SipUrl p_URI) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + method := p_Method, + requestUri := p_URI, + sipVersion := c_sipNameVersion + }; + + //---------------------------------------------------------------------------- + + template (present) Require cr_Require(OptionTag_List p_OptionTags) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := REQUIRE_E, + optionsTags := f_SIP_OptionTagListRX(p_OptionTags) // @sic R5-133629 sic@ + }; + + template (present) Require cr_RequireSecAgree := cr_Require(tsc_OptionTagList_sec_agree); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + @sic R5-133629 sic@ */ + + template (value) Require cs_Require(OptionTag_List p_OptionTags) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE_A, LTE, LTE_IRAT) */ + fieldName := REQUIRE_E, + optionsTags := p_OptionTags + }; + + //---------------------------------------------------------------------------- + + template (value) RetryAfter cs_RetryAfter (integer p_Secs) := + { /* @status APPROVED (IMS) */ + fieldName := RETRY_AFTER_E, + deltaSec := int2str(p_Secs), + comment := omit, + retryParams := omit + }; + + //---------------------------------------------------------------------------- + + template (present) RouteBody cr_RouteBody(template DisplayName p_DisplayName, + template (present) SipUrl p_SipUrl, + template SemicolonParam_List p_RRParam := *) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + nameAddr := cr_NameAddr(p_DisplayName, p_SipUrl), + rrParam := p_RRParam + }; + + template (value) RouteBody cs_RouteBody(template (value) SipUrl p_SipUrl, + template (omit) SemicolonParam_List p_RRParam := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + nameAddr := cs_NameAddr(p_SipUrl), + rrParam := p_RRParam + }; + + /* + * @desc return RouteBody with given parameters + * @param p_SipUrl + * @param p_SigCompParam (default value: omit) + * @return template (value) RouteBody + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_RouteBodyWithParamsTX(template (value) SipUrl p_SipUrl, + template (omit) GenericParam p_SigCompParam := omit) return template (value) RouteBody + { + var template (omit) SemicolonParam_List v_RRParamList := omit; + if (isvalue(p_SigCompParam)) { + v_RRParamList[0] := p_SigCompParam; + } + return cs_RouteBody(p_SipUrl, v_RRParamList); + } + + //---------------------------------------------------------------------------- + + template (present) Route cr_Route(template RouteBody_List p_RouteBodyList) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := ROUTE_E, + routeBody := p_RouteBodyList + }; + + template (present) Route cr_RouteRegDef(template (present) charstring p_Host, + template integer p_Port) := + cr_Route( {cr_RouteBody(*, cr_SipUri_HostPort_lr(p_Host, p_Port))} ); + + template (present) Route cr_RouteSubs(charstring p_Host1, + template integer p_Port, + charstring p_Host2) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cr_Route( { cr_RouteBody(omit, cr_SipUri_HostPort_lr(p_Host1, p_Port)), cr_RouteBody(omit, cr_SipUri_HostPort_lr(p_Host2)) } ); + + template (present) Route cr_RouteReReg (charstring p_Host, + template integer p_Port, + charstring p_Host2) := + ( cr_RouteRegDef(p_Host, p_Port), cr_RouteSubs(p_Host, p_Port, p_Host2) ); + + template (value) Route cs_Route(template (value) RouteBody_List p_RouteBodyList) := + { + fieldName := ROUTE_E, + routeBody := p_RouteBodyList + }; + + //---------------------------------------------------------------------------- + + template (present) RSeq cr_RSeq(template (present) integer p_ResponseNum) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + fieldName := RSEQ_E, + responseNum := p_ResponseNum + }; + + template (value) RSeq cs_RSeq(integer p_ResponseNum) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE_A, LTE, LTE_IRAT) */ + fieldName := RSEQ_E, + responseNum := p_ResponseNum + }; + + //---------------------------------------------------------------------------- + + template (present) SecurityClient cr_SecClientMandatoryFields := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := SECURITY_CLIENT_E, + securityMech := { + // cr_SecurityMechanism(cr_SecurityMechParams_IPsec(tsc_HMAC_MD5_96)), @sic R5-144131 sic@ + cr_SecurityMechanism(cr_SecurityMechParams_IPsec(tsc_HMAC_SHA_1_96)), + * + } + }; + + template (present) SecurityClient cr_SecClientOptionalFields(charstring p_Id, + template GenValue p_GenValue := *) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5w140111: GenValue sic@ */ + fieldName := SECURITY_CLIENT_E, + securityMech := { + cr_SecurityMechanism(cr_SemicolonParam_List_OneSpecificParam(p_Id, p_GenValue)), + cr_SecurityMechanism(cr_SemicolonParam_List_OneSpecificParam(p_Id, p_GenValue)), + * + } + }; + + template (present) SecurityClient cr_SecClientOptionalProt := cr_SecClientOptionalFields("prot", cr_GenValue("esp")); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) SecurityClient cr_SecClientOptionalProtAny := cr_SecClientOptionalFields("prot"); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) SecurityClient cr_SecClientOptionalMod := cr_SecClientOptionalFields("mod", cr_GenValue("trans")); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) SecurityClient cr_SecClientOptionalModAny := cr_SecClientOptionalFields("mod"); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) SecurityClient cr_SecClientEalg := cr_SecClientOptionalFields("ealg", cr_GenValue(("des-ede3-cbc", "aes-cbc"))); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) SecurityClient cr_SecClientEalgNull := cr_SecClientOptionalFields("ealg", cr_GenValue("null")); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (present) SecurityClient cr_SecClientEalgAny := cr_SecClientOptionalFields("ealg"); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + //---------------------------------------------------------------------------- + + template (present) SecurityMechanism cr_SecurityMechanism(template SemicolonParam_List p_MechParams) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + mechName := tsc_SEC_MECHANISM, + mechParams := p_MechParams + }; + + //---------------------------------------------------------------------------- + + template (value) SecurityServer cs_SecServerDef(template (value) SecurityMechanism_List p_SecurityMech) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := SECURITY_SERVER_E, + securityMech := p_SecurityMech + }; + + //---------------------------------------------------------------------------- + + template (present) SecurityVerify cr_SecVerifyDef (template (present) SecurityMechanism_List p_SecurityMech) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := SECURITY_VERIFY_E, + securityMech := p_SecurityMech + }; + + //---------------------------------------------------------------------------- + + template (value) ServiceRoute cs_ServiceRouteDef (charstring p_Host) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := SERVICE_ROUTE_E, + routeBody := { + cs_RouteBody(cs_SipUri_HostPort_lr(p_Host)) + } + }; + + //---------------------------------------------------------------------------- + + template (present) SessIdString cr_SessIdString_Any := pattern "[0-9a-f]#32"; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + template (present) SessionId cr_SessionId(template (present) SessIdString p_SessIdString := cr_SessIdString_Any) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := SESSION_ID_E, + sessid := p_SessIdString, + sessidParam := * + }; + + /* + * @desc return either omit or cr_SessionId (any session id) + * @param p_SessionIdSupported + * @return template SessionId + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_SessionId_RX_IfSupported(boolean p_SessionIdSupported) return template SessionId + { + var template SessionId v_SessionId := omit; + if (p_SessionIdSupported) { + v_SessionId := cr_SessionId + } + return v_SessionId; + } + + template (value) SessionId cs_SessionId(SessIdString p_SessIdString) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := SESSION_ID_E, + sessid := p_SessIdString, + sessidParam := omit + }; + + /* + * @desc return Session-ID derived from Call-ID based on SHA-1 hashing acc. to draft-kaplan-dispatch-session-id-03 clause 4.1 + * @param p_CallId + * @return SessIdString + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_IMS_SessionId_TX_Generate(charstring p_CallId) return SessIdString + { /* T.B.D. */ + FatalError(__FILE__, __LINE__, "f_IMS_SessionId_TX_Generate: not implemented yet"); + return "0123456789abcdef0123456789abcdef"; + } + + //---------------------------------------------------------------------------- + + template (value) SIP_ETag cs_SIP_ETag(EntityTag p_EntityTag) := { + fieldName := SIP_ETAG_E, + entityTag := p_EntityTag + }; + + //---------------------------------------------------------------------------- + + template (present) UriComponents cr_SipUriComponent(template UserInfo p_UserInfo := *, + template (present) charstring p_Host, + template integer p_Port := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + sip := { + userInfo := p_UserInfo, + hostPort := { + host := p_Host, + portField := p_Port + } + } + }; + + template (present) UriComponents cr_SipUrl_SOS := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + urn := { + namespaceId := "service", + namespaceSpecificString := pattern "sos*" + } + }; + + template (present) SipUrl cr_SipUrl_Common(template (present) charstring p_Scheme, + template (present) UriComponents p_UriComponents, + template SemicolonParam_List p_Params := *) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + scheme := p_Scheme, + components := p_UriComponents, + urlParameters := p_Params, + headers := omit + }; + + template (present) SipUrl cr_SipUri_HostPort_lr(template (present) charstring p_Host, + template integer p_Port := omit) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5s130195 BASELINE MOVING 2013: change of SipUrl sic@ */ + cr_SipUrl_Common(c_sipScheme, cr_SipUriComponent(*, p_Host, p_Port), {cr_GenericParam_Common("lr"), *}); /* @sic R5s120858 change 4, 5 sic@ */ + + template (present) SipUrl cr_SipUri_HostPort(template (present) charstring p_Host, + template integer p_Port := omit) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5s130195 BASELINE MOVING 2013: change of SipUrl sic@ */ + cr_SipUrl_Common(c_sipScheme, cr_SipUriComponent(*, p_Host, p_Port)); /* @sic R5s120858 change 4, 5 sic@ */ + + template (value) UriComponents cs_SipUriComponent(template (omit) UserInfo p_UserInfo := omit, + template (value) charstring p_Host, + template (omit) integer p_Port := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + sip := { + userInfo := p_UserInfo, + hostPort := { + host := p_Host, + portField := p_Port + } + } + }; + + template (value) UriComponents cs_TelUriComponent(template (value) charstring p_Subscriber) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + tel := { + subscriber := p_Subscriber + } + }; + + template (value) UriComponents cs_UrnUriComponent(template (value) charstring p_NamespaceId, + template (value) charstring p_NamespaceSpecificString) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + urn := { + namespaceId := p_NamespaceId, + namespaceSpecificString := p_NamespaceSpecificString + } + }; + + template (value) UriComponents cs_OtherComponent(charstring p_Other) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + other := p_Other + }; + + template (value) SipUrl cs_SipUrl_Common(template (value) charstring p_Scheme, + template (value) UriComponents p_UriComponents, + template (omit) SemicolonParam_List p_Params := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + scheme := p_Scheme, + components := p_UriComponents, + urlParameters := p_Params, + headers := omit + }; + + template (value) SipUrl cs_SipUri_HostPort_lr(template (value) charstring p_Host, + template (omit) integer p_Port := omit) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5s130195 BASELINE MOVING 2013: change of SipUrl sic@ */ + cs_SipUrl_Common(c_sipScheme, cs_SipUriComponent(-, p_Host, p_Port), {cs_GenericParam("lr")} ); + + template (value) SipUrl cs_SipUri_HostPort(template (value) charstring p_Host, + template (omit) integer p_Port := omit) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5s130195 BASELINE MOVING 2013: change of SipUrl sic@ */ + cs_SipUrl_Common(c_sipScheme, cs_SipUriComponent(-, p_Host, p_Port)); + + template (value) SipUrl cs_SipUri_UserHostPort(charstring p_UserName, + template (value) charstring p_Host, + template (omit) integer p_Port := omit) := + /* @status APPROVED (IMS) */ + cs_SipUrl_Common(c_sipScheme, cs_SipUriComponent(cs_UserInfo(p_UserName), p_Host, p_Port)); + + //---------------------------------------------------------------------------- + + template (value) SubscriptionState cs_SubscriptionStateDef(charstring p_SubstateValue, + charstring p_Expires) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := SUBSCRIPTION_STATE_E, + subState := p_SubstateValue, + substateParams := { + cs_GenericParam("expires", p_Expires) + } + }; + + template (value) SubscriptionState cs_SubscriptionState_Active(charstring p_Expires := "600000") := cs_SubscriptionStateDef("active", p_Expires); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + template (value) SubscriptionState cs_SubscriptionState_Terminated := cs_SubscriptionStateDef("terminated", "0"); /* @status APPROVED (IMS) */ + + template (present) SubscriptionState cr_SubscriptionState(charstring p_SubstateValue, + template SemicolonParam_List p_SubexpParams) := + { + fieldName := SUBSCRIPTION_STATE_E, + subState := p_SubstateValue, + substateParams := p_SubexpParams + }; + + //---------------------------------------------------------------------------- + + template (present) Supported cr_Supported(OptionTag_List p_RequestedTags) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5-133629: handling of option tags in Supported and Require headers sic@ */ + fieldName := SUPPORTED_E, + optionsTags := f_SIP_OptionTagListRX(p_RequestedTags) + }; + + template (present) Supported cr_Supported_Register := cr_Supported(f_SIP_Register_SupportedTagList(pc_IMS_GRUUsInSIP)); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + template (value) Supported cs_Supported(template (value) OptionTag_List p_TagList) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + fieldName := SUPPORTED_E, + optionsTags := p_TagList + }; + + //---------------------------------------------------------------------------- + + template (present) To cr_ToCommon(template (present) SipUrl p_SipUrl, + template SemicolonParam_List p_Params := *) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := TO_E, + addressField := f_Addr_Union_RX(p_SipUrl), + toParams := p_Params + }; + + template (present) To cr_ToDef(template (present) SipUrl p_SipUrl, + template SemicolonParam_List p_Params := *) := cr_ToCommon(p_SipUrl, p_Params); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + @sic R5s130378 change 3 sic@ */ + + template (present) To cr_ToWithTag(template (present) SipUrl p_SipUrl, + template (present) charstring p_Tag := ?) := cr_ToCommon(p_SipUrl, {cr_GenericParam(c_tagId, p_Tag), *}); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + @sic R5s130183 sic@ */ + + template (value) To cs_ToDef(template (value) SipUrl p_SipUrl, + template (omit) SemicolonParam_List p_Params := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := TO_E, + addressField := { + nameAddr := cs_NameAddr(p_SipUrl) + }, + toParams := p_Params + }; + + template (value) To cs_ToWithTag(template (value) SipUrl p_SipUrl, + template (value) charstring p_Tag) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cs_ToDef(p_SipUrl, { cs_GenericParam(c_tagId, p_Tag) }); + + //---------------------------------------------------------------------------- + /* + * @desc build up receive template for paramter list to be used in the Via header + * @param p_Rport (default value: omit) + * @return template (present) SemicolonParam_List + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_ViaParamsRX(template GenericParam p_Rport := omit) return template (present) SemicolonParam_List + { /* @sic R5s130187 change 6: "*" needed at the end of the list sic@ */ + var template (present) SemicolonParam_List v_ParamList; + var template (present) GenericParam v_Branch := cr_GenericParam(c_branchId, pattern c_branchCookie & "*"); // @sic R5s120530 change 1.9 sic@ + + if (ispresent(p_Rport)) { + v_ParamList := { v_Branch, p_Rport, * }; + } else { + v_ParamList := { v_Branch, * }; + } + + return v_ParamList; + } + + template (present) ViaBody cr_ViaBody(template (present) charstring p_Transport, + template (present) HostPort p_SendBy, + template (present) SemicolonParam_List p_ViaParams := f_ViaParamsRX()) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + sentProtocol := { + protocolName := c_sipName, + protocolVersion := c_sipVersion, + transport := p_Transport + }, + sentBy := p_SendBy, + viaParams := p_ViaParams + }; + + template (present) Via cr_ViaDef(template (present) charstring p_Transport := ?, + template (present) HostPort p_HostPort := cr_HostPort(?, *), + template GenericParam p_Rport := omit) := + { /* for initial request p_Rport may need to be set to "cr_GenericParam("rport", ?)" see 34.229-1 A.1.1 condition A1 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := VIA_E, + viaBody := { + cr_ViaBody(p_Transport, p_HostPort, f_ViaParamsRX(p_Rport)) + } + }; + + template (present) Via cr_ViaInitialReg(template (present) charstring p_Transport := ?, + template (present) HostPort p_HostPort := cr_HostPort(?, *)) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + cr_ViaDef(p_Transport, p_HostPort, cr_GenericParam_Common("rport", omit)); // @sic R5s120907 change 8 - rport has no value sic@ + + + /* + * @desc Via header to be used for responses sent by the UE + * @param p_ViaRequest + * @return template (present) Via + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_Via_ResponseRX(template (value) Via p_ViaRequest) return template (present) Via + { /* @sic R5s140350: as format of IPv6 addresses may change we need to check host addresses seperately sic@ */ + var template (present) Via v_ViaRespone := p_ViaRequest; + var integer i; + + for (i:=0; i < lengthof(v_ViaRespone.viaBody); i:=i+1) { + v_ViaRespone.viaBody[i].sentBy.host := ?; + } + return v_ViaRespone; + } + + /* + * @desc return Via parameters to be sent to the UE + * @param p_Branch + * @param p_SigCompParam (default value: omit) + * @return template (value) SemicolonParam_List + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_ViaParamsTX(template (value) charstring p_Branch, + template (omit) GenericParam p_SigCompParam := omit) return template (value) SemicolonParam_List + { + var template (value) SemicolonParam_List v_ParamList; + v_ParamList[0] := cs_GenericParam(c_branchId, p_Branch); + if (isvalue(p_SigCompParam)) { + v_ParamList[1] := valueof(p_SigCompParam); + } + return v_ParamList; + } + + template (value) ViaBody cs_ViaBody(template (value) charstring p_Transport, + template (value) HostPort p_SendBy, + template (omit) SemicolonParam_List p_ViaParams := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + sentProtocol := { + protocolName := c_sipName, + protocolVersion := c_sipVersion, + transport := p_Transport + }, + sentBy := p_SendBy, + viaParams := p_ViaParams + }; + + template (value) Via cs_Via(template (value) ViaBody_List p_BodyList) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + fieldName := VIA_E, + viaBody := p_BodyList + }; + + //---------------------------------------------------------------------------- + + template (value) WwwAuthenticate cs_WwwAuthChallenge(charstring p_Realm, + charstring p_Nonce, + charstring p_Opaque := tsc_IMS_Opaque, + charstring p_Algorithm := tsc_AKAv1_MD5) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* @sic R5s130794 change 2: new parameter p_Algorithm sic@ */ + fieldName := WWW_AUTHENTICATE_E, + challenge := { + digestCln := { + cs_GenericParamQuoted("realm", p_Realm), // acc. to RFC 3261 cl. 25.1 realm-value is quoted-string + cs_GenericParamToken("algorithm", p_Algorithm), // acc. to RFC 3261 cl. 25.1 algorithm is token + cs_GenericParamQuoted("qop", "auth"), // acc. to RFC 3261 cl. 25.1 qop-options are quoted-string (even though qop-value is token; @sic R5s140565 change 4 sic@) + cs_GenericParamQuoted("nonce", p_Nonce), // acc. to RFC 3261 cl. 25.1 nonce-value is quoted-string + cs_GenericParamQuoted("opaque", p_Opaque) // acc. to RFC 3261 cl. 25.1 opaque is quoted-string + } + } + }; + + /******************************************************************************/ + /* AuxiliaryFunctions */ + /******************************************************************************/ + + /* + * @desc returns the tag from the From header (NOTE: there has to be a from-tag) + * @param p_MessageHeader + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_MessageHeader_GetFromTag(template (value) MessageHeader p_MessageHeader) return charstring + { + return f_SIP_SemicolonParamList_GetParamValue(p_MessageHeader.fromField.fromParams, c_tagId); + } + + /* + * @desc returns the tag from the To header or omit when there is no to-tag + * (in contrast to the From header the tag may be missing in the To header) + * @param p_MessageHeader + * @return template (omit) charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_MessageHeader_GetToTag(template (value) MessageHeader p_MessageHeader) return template (omit) charstring + { /* @sic R5w140111: GenValue sic@ */ + var template (omit) GenericParam v_GenericParam := f_SIP_SemicolonParamList_GetParam(p_MessageHeader.toField.toParams, c_tagId); + var template (omit) charstring v_ToTag := omit; + + if (ispresent(v_GenericParam)) { + v_ToTag := f_GenericParam_GetValue(v_GenericParam); + } + return v_ToTag; + } + + //**************************************************************************** + // auxilliary functions to build templates + //---------------------------------------------------------------------------- + /* + * @desc return string representing given IntegrityAlgorithm + * @param p_IntegrityAlgorithm + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_IntegrityAlgorithm_String(IPsec_IntegrityAlgorithm_Type p_IntegrityAlgorithm) return charstring + { + var charstring v_String := ""; + + select (p_IntegrityAlgorithm) { + case (hmac_md5_96) { + v_String := tsc_HMAC_MD5_96; + } + case (hmac_sha_1_96) { + v_String := tsc_HMAC_SHA_1_96; + } + } + return v_String; + } + + /* + * @desc return string representing given CipheringAlgorithm + * @param p_CipheringAlgorithm + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_CipheringAlgorithm_String(IPsec_CipheringAlgorithm_Type p_CipheringAlgorithm) return charstring + { + var charstring v_String := ""; + + select (p_CipheringAlgorithm) { + case (des_ede3_cbc) { + v_String := "des-ede3-cbc"; + } + case (aes_cbc) { + v_String := "aes-cbc"; + } + case (nociph) { + v_String := "null"; // @sic R5s130586 change 14 sic@ + } + } + return v_String; + } + + //---------------------------------------------------------------------------- + + template (value) UserInfo cs_UserInfo(charstring p_UserName, + template (omit) charstring p_Password := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + userOrTelephoneSubscriber := p_UserName, + password := p_Password + }; + + template (present) UserInfo cr_UserInfo(charstring p_UserName, + template charstring p_Password := *) := + { /* @status APPROVED (IMS) */ + userOrTelephoneSubscriber := p_UserName, + password := p_Password + }; + + /* + * @desc Build a SipUrl structure based on an URI which is either a tel or sip identity, + * e.g. "sip:PublicId1@3gpp.org" or "tel:+358-555-1234567" + * where scheme is "sip" or "tel" or "urn". + * The returned SipUrl structure is used for building send or receive templates. + * (see RFC 3261 cl. 19.1.1, examples in cl. 19.1.3 for sip uri; + * see RFC 3986 for URIs in general) + * @param p_URI + * @return template (value) SipUrl + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_SIP_ParseURI(charstring p_URI) return template (value) SipUrl + { /* @sic R5s130195 BASELINE MOVING 2013: change of SipUrl sic@ */ + var template (present) charstring v_Pattern; + var template (value) UriComponents v_UriComponents; + var template (omit) UserInfo v_UserInfo := omit; + var charstring v_Host; + var charstring v_Scheme; + var charstring v_HierPart; + var charstring v_UserInfoString; + var charstring v_UserName; + + v_Pattern := pattern "([a-z]#(3,4)):(*)"; // @sic R5s130187 change 8: "pattern" sic@ + v_Scheme := regexp(p_URI, v_Pattern, 0); + v_HierPart := regexp(p_URI, v_Pattern, 1); + + select (v_Scheme) { + case (c_sipScheme) { // sip uri acc. to RFC 3261 cl. 19.1.1 + v_Pattern := pattern "(*)@(*)"; // @sic R5s130187 change 8: "pattern" sic@ + v_UserInfoString := regexp(v_HierPart, v_Pattern, 0); + if (v_UserInfoString == "") { // sip uri does not have user info e.g. "sip:biloxi.com" or sip:[2001:db8:1::139] + v_Host := v_HierPart; + } else { // sip uri has user info + v_Host := regexp(v_HierPart, v_Pattern, 1); + v_Pattern := pattern "(*):(*)"; // @sic R5s130187 change 8: "pattern" sic@ + v_UserName := regexp(v_UserInfoString, v_Pattern, 0); + if (v_UserName == "") { // user info but no password e.g. "sip:alice@atlanta.com" + v_UserInfo := cs_UserInfo(v_UserInfoString); + } else { // user info with password e.g. "sip:alice:secretword@atlanta.com" + v_UserInfo := cs_UserInfo(v_UserName, regexp(v_UserInfoString, v_Pattern, 1)); + } + } + v_UriComponents := cs_SipUriComponent(v_UserInfo, v_Host); + } + case (c_telScheme) { // tel uri acc. to RFC 3966 + v_UriComponents := cs_TelUriComponent(v_HierPart); + } + case (c_urnScheme) { // urn uri for emergency calls e.g. "urn:service:sos" + v_Pattern := pattern "(*):(*)"; // @sic R5s130495 Change 11 sic@ + v_UriComponents := cs_UrnUriComponent(regexp(v_HierPart, v_Pattern, 0), regexp(v_HierPart, v_Pattern, 1)); + } + case else { + v_UriComponents := cs_OtherComponent(v_HierPart); + } + } + return cs_SipUrl_Common(v_Scheme, v_UriComponents); + } + + /* + * @desc Built receive template for SipUrl + * @param p_URI + * @param p_Port (default value: omit) + * @param p_LrParam (default value: omit) + * @return template (present) SipUrl + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_BuildSipUri_RX(charstring p_URI, + template integer p_Port := omit, + template GenericParam p_LrParam := omit) return template (present) SipUrl + { + var template (present) SipUrl v_SipUrl := fl_SIP_ParseURI(p_URI); + + if (ischosen(v_SipUrl.components.sip)) { /* @sic R5s130195 BASELINE MOVING 2013: change of SipUrl sic@ + @sic R5s140020 change 11: p_Port may be * therefore shall not be checked to be present sic@ */ + v_SipUrl.components.sip.hostPort.portField := p_Port; + } + if (ispresent(p_LrParam)) { + v_SipUrl.urlParameters := {p_LrParam, *}; + } else { + v_SipUrl.urlParameters := *; + } + return v_SipUrl; + } + + /* + * @desc Build SipUrl template to be used for receiving + * the URI gets the "lr" parameter indication "loose rooting" acc. to RFC 3261: + * to be used in the Route or Record-Route headers to indicate that the network element separates the destination of the request (present in the Request-URI) + * @param p_URI + * @param p_Port (default value: omit) + * @return template (present) SipUrl + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_SIP_BuildSipUri_lr_RX(charstring p_URI, + template integer p_Port := omit) return template (present) SipUrl + { + return f_SIP_BuildSipUri_RX(p_URI, p_Port, cr_GenericParam_Common("lr", omit)); + } + + /* + * @desc Build SipUrl template to be used for sending + * @param p_URI + * @param p_Port (default value: omit) + * @param p_LrParam (default value: omit) + * @return template (value) SipUrl + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_BuildSipUri_TX(charstring p_URI, + template (omit) integer p_Port := omit, + template (omit) GenericParam p_LrParam := omit) return template (value) SipUrl + { + var template (value) SipUrl v_SipUrl := fl_SIP_ParseURI(p_URI); + + if (isvalue(p_Port) and ischosen(v_SipUrl.components.sip)) { /* @sic R5s130195 BASELINE MOVING 2013: change of SipUrl sic@ */ + v_SipUrl.components.sip.hostPort.portField := p_Port; + } + if (isvalue(p_LrParam)) { + v_SipUrl.urlParameters := {p_LrParam}; + } + return v_SipUrl; + } + + /* + * @desc Build SipUrl template to be used for sending + * the URI gets the "lr" parameter indication "loose rooting" acc. to RFC 3261: + * to be used in the Route or Record-Route headers to indicate that the network element separates the destination of the request (present in the Request-URI) + * from the set of proxies that need to be visited along the way (present in the Route header field) + * @param p_URI + * @param p_Port (default value: omit) + * @return template (value) SipUrl + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_BuildSipUri_lr_TX(charstring p_URI, + template (omit) integer p_Port := omit) return template (value) SipUrl + { + return f_SIP_BuildSipUri_TX(p_URI, p_Port, cs_GenericParam("lr")); + } + + /* + * @desc convert SipUrl to string + * @param p_SipUrl + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_SipUrl2Str(SipUrl p_SipUrl) return charstring + { /* @sic R5s130195 BASELINE MOVING 2013: change of SipUrl sic@ */ + var SipUriComponents v_SipUriComponents; + var charstring v_String := p_SipUrl.scheme & ":"; + var charstring v_Host; + + select (p_SipUrl.scheme) { + case (c_sipScheme) { + v_SipUriComponents := p_SipUrl.components.sip; + if (ispresent(v_SipUriComponents.userInfo)) { + v_String := v_String & v_SipUriComponents.userInfo.userOrTelephoneSubscriber & "@" ; // @sic R5s120530 change 1.3 sic@ + } + v_Host := v_SipUriComponents.hostPort.host; + if (f_IpAddressIsIPv6(v_Host)) { v_Host := "[" & v_Host & "]"; } // @sic R5s130586 change 15 sic@ + v_String := v_String & v_Host; // @sic R5s120530 change 1.3 sic@ + if (ispresent(v_SipUriComponents.hostPort.portField)) { + v_String := v_String & ":" & int2str(v_SipUriComponents.hostPort.portField); + } + } + case (c_telScheme) { + v_String := v_String & p_SipUrl.components.tel.subscriber; + } + case (c_urnScheme) { + v_String := v_String & p_SipUrl.components.urn.namespaceId & ":" & p_SipUrl.components.urn.namespaceSpecificString; // @sic R5s140169 change 2 sic@ + } + case else { + v_String := v_String & p_SipUrl.components.other; + } + } + return v_String; + } + + /* + * @desc encode SipUrl as string + * @param p_SipUrl + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_SipUrl_GetPublicUserIdentity(SipUrl p_SipUrl) return charstring + { /* @sic R5s130195 BASELINE MOVING 2013: change of SipUrl sic@ */ + var SipUriComponents v_SipUriComponents; + var charstring v_PublicUserIdentity := ""; + + if (not ischosen(p_SipUrl.components.sip)) { + f_ErrorLog(__FILE__, __LINE__, "SipUrl is not a SIP URI"); + } + else { + v_SipUriComponents := p_SipUrl.components.sip; + if (not ispresent(v_SipUriComponents.userInfo)) { + f_ErrorLog(__FILE__, __LINE__, "SipUrl does not have user info"); + } + else { + v_PublicUserIdentity := p_SipUrl.scheme & ":" & v_SipUriComponents.userInfo.userOrTelephoneSubscriber & "@" & v_SipUriComponents.hostPort.host; + } + } + return v_PublicUserIdentity; + } + + /* + * @desc return sequence number of given message + * @param p_MessageHeader + * @return integer + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_MessageHeader_GetCseqValue(template (value) MessageHeader p_MessageHeader) return integer + { + return valueof(p_MessageHeader.cSeq.seqNumber); + } + + /* + * @desc get SipUrl from Contact header + * @param p_MessageHeader + * @return SipUrl + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_MessageHeader_GetContactSipUrl(template (value) MessageHeader p_MessageHeader) return SipUrl + { + var template (omit) Addr_Union v_Addr_Union := p_MessageHeader.contact.contactBody.contactAddresses[0].addressField; + return f_Addr_Union_GetSipUrl(v_Addr_Union); /* @sic R5s130235 - additional changes sic@ */ + } + + /* + * @desc Check Require header + * @param p_MessageHeader + * @param p_OptionTag (default value: c_tag100rel) + * @return boolean + * @status APPROVED (IMS, LTE_A, LTE_IRAT) + */ + function f_MessageHeader_CheckRequire(MessageHeader p_MessageHeader, + OptionTag p_OptionTag := c_tag100rel) return boolean + { + var OptionTag_List v_OptionTags := {p_OptionTag}; + return (ispresent(p_MessageHeader.require) and match(p_MessageHeader.require, cr_Require(v_OptionTags))); + } + + //---------------------------------------------------------------------------- + /* + * @desc Build SecurityMechanism + * @param p_IntegrityAlgorithm + * @param p_CipheringAlgorithm + * @param p_Spi_Client + * @param p_Spi_Server + * @param p_SSProtClientPort + * @param p_SSProtServerPort + * @return template (value) SecurityMechanism_List + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_BuildSecurityServerParam(IPsec_IntegrityAlgorithm_Type p_IntegrityAlgorithm, + IPsec_CipheringAlgorithm_Type p_CipheringAlgorithm, + charstring p_Spi_Client, + charstring p_Spi_Server, + charstring p_SSProtClientPort, + charstring p_SSProtServerPort) return template (value) SecurityMechanism_List + { /* @sic R5s130710 - MCC160 Implementation: p_Confidentiality removed sic@ */ + var template (value) SecurityMechanism_List v_SecurityMechanism; + var integer v_ListLength1; + var integer v_ListLength2; + var template (value) SemicolonParam_List v_ParamList1; + var template (value) SemicolonParam_List v_ParamList2; + var charstring v_IntAlg := f_SIP_IntegrityAlgorithm_String(p_IntegrityAlgorithm); + var charstring v_CyphAlg := f_SIP_CipheringAlgorithm_String(p_CipheringAlgorithm); + var charstring v_OtherIntAlg; + + select (p_IntegrityAlgorithm) { + case (hmac_md5_96) { + v_OtherIntAlg := tsc_HMAC_SHA_1_96; + } + case (hmac_sha_1_96) { + v_OtherIntAlg := tsc_HMAC_MD5_96; + } + } + + v_ParamList1 := { + cs_GenericParam("alg", v_IntAlg), + cs_GenericParam("spi-c", p_Spi_Client), + cs_GenericParam("spi-s", p_Spi_Server), + cs_GenericParam("port-c", p_SSProtClientPort), + cs_GenericParam("port-s", p_SSProtServerPort), + cs_GenericParam("q", "0.9") + }; + + v_ParamList2 := { + cs_GenericParam("alg", v_OtherIntAlg), + cs_GenericParam("spi-c", p_Spi_Client), + cs_GenericParam("spi-s", p_Spi_Server), + cs_GenericParam("port-c", p_SSProtClientPort), + cs_GenericParam("port-s", p_SSProtServerPort), + cs_GenericParam("q", "0.7") + }; + + if (p_CipheringAlgorithm != nociph) { /* @sic R5s130710 - MCC160 Implementation sic@ */ + v_ListLength1 := lengthof(v_ParamList1); + v_ParamList1[v_ListLength1] := cs_GenericParam("ealg", v_CyphAlg); + v_ListLength2 := lengthof(v_ParamList2); + v_ParamList2[v_ListLength2] := cs_GenericParam("ealg", v_CyphAlg); + } + + v_SecurityMechanism := { + { + mechName := tsc_SEC_MECHANISM, + mechParams := v_ParamList1 + }, + { + mechName := tsc_SEC_MECHANISM, + mechParams := v_ParamList2 + } + }; + + return v_SecurityMechanism; + } + + //---------------------------------------------------------------------------- + /* + * @desc Function used to create a template for SecurityVerify header with same content as SecurityServer header + * @param p_IntegrityAlgorithm + * @param p_CipheringAlgorithm + * @param p_Spi_Client + * @param p_Spi_Server + * @param p_SSProtClientPort + * @param p_SSProtServerPort + * @return template (present) SecurityVerify + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_BuildSecurityVerifyHeader(IPsec_IntegrityAlgorithm_Type p_IntegrityAlgorithm, + IPsec_CipheringAlgorithm_Type p_CipheringAlgorithm, + charstring p_Spi_Client, + charstring p_Spi_Server, + charstring p_SSProtClientPort, + charstring p_SSProtServerPort) return template (present) SecurityVerify + { /* @sic R5s130710 - MCC160 Implementation: p_Confidentiality removed sic@ */ + var template (present) SecurityMechanism_List v_SecurityMechanism := f_SIP_BuildSecurityServerParam(p_IntegrityAlgorithm, + p_CipheringAlgorithm, + p_Spi_Client, + p_Spi_Server, + p_SSProtClientPort, + p_SSProtServerPort); + return cr_SecVerifyDef(v_SecurityMechanism); + } + + //---------------------------------------------------------------------------- + /* + * @desc Return the correct tag to be included in the Supported header of REGISTER messages + * @param p_GRUUsInSIP + * @return OptionTag_List + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_Register_SupportedTagList(boolean p_GRUUsInSIP) return OptionTag_List + { /* @sic R5-133629: handling of option tags in Supported and Require headers sic@ */ + var charstring v_SupportedTag; + + if (p_GRUUsInSIP) { + v_SupportedTag := "gruu"; + } + else { + v_SupportedTag := "path"; + } + return {v_SupportedTag}; + } + + //**************************************************************************** + // auxilliary functions to access SIP mesages + //---------------------------------------------------------------------------- + /* + * @desc return portnumber given in ContactUrl (if any) + * @param p_ContactUrl + * @return template (omit) PortNumber_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_ContactUrl_GetPort(SipUrl p_ContactUrl) return template (omit) PortNumber_Type + { /* @sic R5s130195 BASELINE MOVING 2013: change of SipUrl sic@ */ + var template (omit) PortNumber_Type v_PortNumber := omit; + + if (ischosen(p_ContactUrl.components.sip)) { + v_PortNumber := p_ContactUrl.components.sip.hostPort.portField; + } + return v_PortNumber; + } + + //**************************************************************************** + // auxilliary function to match URI + //---------------------------------------------------------------------------- + /* + * @desc check whether public user id represented by given SipUrl matches with public user id given as string + * @param p_UriString + * @param p_SipUrl + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_SIP_MatchURI(charstring p_UriString, + SipUrl p_SipUrl) return boolean + { + return (f_SIP_SipUrl_GetPublicUserIdentity(p_SipUrl) == p_UriString); + } + + //**************************************************************************** + // MessageHeader 'dummy' templates + //---------------------------------------------------------------------------- + + template (value) MessageHeader cs_MessageHeader_Dummy := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + accept := omit, + acceptContact := omit, + acceptEncoding := omit, + acceptLanguage := omit, + alertInfo := omit, + allow := omit, + allowEvents := omit, + authenticationInfo := omit, + authorization := omit, + callId := c_empty_CallId, + callInfo := omit, + contact := omit, + contentDisposition := omit, + contentEncoding := omit, + contentLanguage := omit, + contentLength := cs_ContentLength(0), // NOTE: may be changed to -1 to force the codec always to calculate the length (even when there is no message body at all) + contentType := omit, + cSeq := c_empty_cSeq, + date := omit, + errorInfo := omit, + event := omit, + expires := omit, + featureCaps := omit, + fromField := c_empty_From, + geolocation := omit, + geolocationRouting := omit, // @sic R5-133151 sic@ + historyInfo := omit, + inReplyTo := omit, + maxForwards := c_maxForwards70, + mimeVersion := omit, + minExpires := omit, + minSE := omit, + organization := omit, + pAccessNetworkInfo := omit, + pAssertedID := omit, + pAssertedService := omit, + pAssociatedURI := omit, + path := omit, + pCalledPartyID := omit, + pChargingFunctionAddresses := omit, + pChargingVector := omit, + pEarlyMedia := omit, + pMediaAuthorization := omit, + pPreferredID := omit, + pPreferredService := omit, + priority := omit, + privacy := omit, + proxyAuthenticate := omit, + proxyAuthorization := omit, + proxyRequire := omit, + pVisitedNetworkID := omit, + rAck := omit, + rSeq := omit, + reason := omit, + recordRoute := omit, + requestDisposition := omit, + referredBy := omit, + referTo := omit, + referSub := omit, + replaces := omit, + replyTo := omit, + require := omit, + retryAfter := omit, + route := omit, + securityClient := omit, + securityServer := omit, + securityVerify := omit, + server := omit, + serviceRoute := omit, + sessionExpires := omit, + sessionId := omit, + sipETag := omit, + sipIfMatch := omit, + subject := omit, + subscriptionState := omit, + supported := omit, + timestamp := omit, + toField := c_empty_To, + unsupported := omit, + userToUser := omit, + userAgent := omit, + via := c_empty_Via, + warning := omit, + wwwAuthenticate := omit, + undefinedHeader_List := omit + }; + + template (present) MessageHeader cr_MessageHeader_Dummy := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + accept := *, + acceptContact := *, + acceptEncoding := *, + acceptLanguage := *, + alertInfo := *, + allow := *, + allowEvents := *, + authenticationInfo := *, + authorization := *, + callId := ?, + callInfo := *, + contact := *, + contentDisposition := *, + contentEncoding := *, + contentLanguage := *, + contentLength := ?, + contentType := *, + cSeq := ?, + date := *, + errorInfo := *, + event := *, + expires := *, + featureCaps := *, + fromField := ?, + geolocation := *, + geolocationRouting := *, // @sic R5-133151 sic@ + historyInfo := *, + inReplyTo := *, + maxForwards := *, + mimeVersion := *, + minExpires := *, + minSE := *, + organization := *, + pAccessNetworkInfo := *, + pAssertedID := *, + pAssertedService := *, + pAssociatedURI := *, + path := *, + pCalledPartyID := *, + pChargingFunctionAddresses := *, + pChargingVector := *, + pEarlyMedia := *, + pMediaAuthorization := *, + pPreferredID := *, + pPreferredService := *, + priority := *, + privacy := *, + proxyAuthenticate := *, + proxyAuthorization := *, + proxyRequire := *, + pVisitedNetworkID := *, + rAck := *, + rSeq := *, + reason := *, + recordRoute := *, + requestDisposition := *, + referredBy := *, + referTo := *, + referSub := *, + replaces := *, + replyTo := *, + require := *, + retryAfter := *, + route := *, + securityClient := *, + securityServer := *, + securityVerify := *, + server := *, + serviceRoute := *, + sessionExpires := *, + sessionId := *, + sipETag := *, + sipIfMatch := *, + subject := *, + subscriptionState := *, + supported := *, + timestamp := *, + toField := ?, + unsupported := *, + userToUser := *, + userAgent := *, + via := ?, + warning := *, + wwwAuthenticate := *, + undefinedHeader_List := * + }; + + //**************************************************************************** + // SIPMessages + //---------------------------------------------------------------------------- + + template (present) REGISTER_Request cr_REGISTER_Request(template (present) SipUrl p_SipUrl := ?, + template (present) MessageHeader p_MessageHeader := ?, + template MessageBody p_MessageBody := omit, + template Payload p_Payload := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + requestLine := cr_RequestLineSip(REGISTER_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := p_MessageBody, + payload := p_Payload + }; + + template (present) SUBSCRIBE_Request cr_SUBSCRIBE_Request(template (present) SipUrl p_SipUrl, + template (present) MessageHeader p_MessageHeader := ?, + template MessageBody p_MessageBody := omit, + template Payload p_Payload := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + requestLine := cr_RequestLineSip(SUBSCRIBE_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := p_MessageBody, + payload := p_Payload + }; + + template (present) INVITE_Request cr_INVITE_Request(template (present) SipUrl p_SipUrl, + template (present) MessageHeader p_MessageHeader := ?, + template MessageBody p_MessageBody := *, + template Payload p_Payload := *) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + requestLine := cr_RequestLineSip(INVITE_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := p_MessageBody, + payload := p_Payload + }; + + template (present) PUBLISH_Request cr_PUBLISH_Request(template (present) SipUrl p_SipUrl, + template (present) MessageHeader p_MessageHeader := ?, + template MessageBody p_MessageBody := *, + template Payload p_Payload := *) := + { + requestLine := cr_RequestLineSip(PUBLISH_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := p_MessageBody, + payload := p_Payload + }; + + template (present) PRACK_Request cr_PRACK_Request(template (present) SipUrl p_SipUrl, + template (present) MessageHeader p_MessageHeader := ?, + template MessageBody p_MessageBody := *, + template Payload p_Payload := *) := + { /* @status APPROVED (IMS, LTE_A) */ + requestLine := cr_RequestLineSip(PRACK_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := p_MessageBody, + payload := p_Payload + }; + + template (present) UPDATE_Request cr_UPDATE_Request(template (present) SipUrl p_SipUrl, + template (present) MessageHeader p_MessageHeader := ?, + template MessageBody p_MessageBody := ?, + template Payload p_Payload := *) := + { /* @status APPROVED (IMS, LTE_A) */ + requestLine := cr_RequestLineSip(UPDATE_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := p_MessageBody, + payload := p_Payload + }; + + template (present) ACK_Request cr_ACK_Request(template (present) SipUrl p_SipUrl, + template (present) MessageHeader p_MessageHeader := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + requestLine := cr_RequestLineSip(ACK_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := omit, + payload := omit + }; + + template (present) BYE_Request cr_BYE_Request(template (present) SipUrl p_SipUrl, + template (present) MessageHeader p_MessageHeader := ?, + template MessageBody p_MessageBody := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A) */ + requestLine := cr_RequestLineSip(BYE_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := p_MessageBody, + payload := omit // @sic R5s120530 change 3.11 sic@ + }; + + template (present) MESSAGE_Request cr_MESSAGE_Request(template (present) SipUrl p_SipUrl, + template (present) MessageHeader p_MessageHeader := ?, + template MessageBody p_MessageBody := ?, + template Payload p_Payload := *) := + { /* @status APPROVED (IMS) */ + requestLine := cr_RequestLineSip(MESSAGE_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := p_MessageBody, + payload := p_Payload + }; + + template (present) REFER_Request cr_REFER_Request(template (present) SipUrl p_SipUrl, + template (present) MessageHeader p_MessageHeader := ?) := + { + requestLine := cr_RequestLineSip(REFER_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := omit, + payload := omit + }; + + template (present) NOTIFY_Request cr_NOTIFY_Request(template (present) SipUrl p_SipUrl, + template (present) MessageHeader p_MessageHeader, + template (present) MessageBody p_MessageBody) := + { + requestLine := cr_RequestLineSip(NOTIFY_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := p_MessageBody, + payload := omit + }; + + //---------------------------------------------------------------------------- + + template (value) CANCEL_Request cs_CANCEL_Request(template (value) SipUrl p_SipUrl, + template (value) MessageHeader p_MessageHeader) := + { /* @status APPROVED (IMS, LTE_A) */ + requestLine := cs_RequestLineSip(CANCEL_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := omit, + payload := omit + }; + + + template (value) NOTIFY_Request cs_NOTIFY_Request(template (value) SipUrl p_SipUrl, + template (value) MessageHeader p_MessageHeader, + template (value) MessageBody p_MessageBody) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + requestLine := cs_RequestLineSip(NOTIFY_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := p_MessageBody, + payload := omit + }; + + template (value) INVITE_Request cs_INVITE_Request(template (value) SipUrl p_SipUrl, + template (value) MessageHeader p_MessageHeader, + template (omit) MessageBody p_MessageBody := omit) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + requestLine := cs_RequestLineSip(INVITE_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := p_MessageBody, + payload := omit + }; + + template (value) PRACK_Request cs_PRACK_Request(template (value) SipUrl p_SipUrl, + template (value) MessageHeader p_MessageHeader, + template (omit) MessageBody p_MessageBody := omit) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + requestLine := cs_RequestLineSip(PRACK_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := p_MessageBody, + payload := omit + }; + + template (value) UPDATE_Request cs_UPDATE_Request(template (value) SipUrl p_SipUrl, + template (value) MessageHeader p_MessageHeader, + template (value) MessageBody p_MessageBody) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + requestLine := cs_RequestLineSip(UPDATE_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := p_MessageBody, + payload := omit + }; + + template (value) ACK_Request cs_ACK_Request(template (value) SipUrl p_SipUrl, + template (value) MessageHeader p_MessageHeader) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + requestLine := cs_RequestLineSip(ACK_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := omit, + payload := omit + }; + + template (value) BYE_Request cs_BYE_Request(template (value) SipUrl p_SipUrl, + template (value) MessageHeader p_MessageHeader) := + { /* @status APPROVED (IMS, LTE_A, LTE_IRAT) */ + requestLine := cs_RequestLineSip(BYE_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := omit, + payload := omit + }; + + template (value) MESSAGE_Request cs_MESSAGE_Request(template (value) SipUrl p_SipUrl, + template (value) MessageHeader p_MessageHeader, + template (value) MessageBody p_MessageBody) := + { /* @status APPROVED (IMS) */ + requestLine := cs_RequestLineSip(MESSAGE_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := p_MessageBody, + payload := omit + }; + + template (value) REFER_Request cs_REFER_Request(template (value) SipUrl p_SipUrl, + template (value) MessageHeader p_MessageHeader) := + { + requestLine := cs_RequestLineSip(REFER_E, p_SipUrl), + msgHeader := p_MessageHeader, + messageBody := omit, + payload := omit + }; + + //============================================================================ + // Responses: + //---------------------------------------------------------------------------- + + template (value) Response cs_Response(template (value) StatusLine p_StatusLine, + template (value) MessageHeader p_MessageHeader, + template (omit) MessageBody p_MessageBody := omit, + template (omit) Payload p_Payload := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + statusLine := p_StatusLine, + msgHeader := p_MessageHeader, + messageBody := p_MessageBody, + payload := p_Payload + }; + + + template (present) Response cr_Response(template (present) StatusLine p_StatusLine, + template (present) MessageHeader p_MessageHeader, + template MessageBody p_MessageBody := omit, + template Payload p_Payload := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + statusLine := p_StatusLine, + msgHeader := p_MessageHeader, + messageBody := p_MessageBody, + payload := p_Payload + }; + +} diff --git a/LTE_A_IWD_14wk37/Common/IMS/IMS_XML_PIDF_Templates.ttcn b/LTE_A_IWD_14wk37/Common/IMS/IMS_XML_PIDF_Templates.ttcn new file mode 100644 index 0000000..84df9c6 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS/IMS_XML_PIDF_Templates.ttcn @@ -0,0 +1,80 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 17:10:15 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12171 $ +/******************************************************************************/ + +module IMS_XML_PIDF_Templates { +// import from urn_ietf_params_xml_ns_pidf language "XSD" all; + // import from urn_ietf_params_xml_ns_pidf_geopriv10 language "XSD" all; + import from urn_ietf_params_xml_ns_pidf all; + import from urn_ietf_params_xml_ns_pidf_geopriv10 all; + import from XSD all; + + group Alias_Definitions { + + type Geopriv_1 Geolocation_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + type Presence_1 PIDF_Presence_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type Tuple PIDF_Tuple_Type; /* @status */ + type Tuple.note_list PIDF_Tuple_Note_List_Type; /* @status */ + type Presence.tuple_list PIDF_Presence_Tuple_List_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type Status PIDF_Status_Type; /* @status */ + type Status.elem_list PIDF_Status_ElemList_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type Basic PIDF_Basic_Type; /* @status */ + type Presence.note_list PIDF_Presence_Note_List_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + + + } with { encode "XML"}; + + //---------------------------------------------------------------------------- + + template (present) Geolocation_Type cr_Geolocation_Any := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + location_info := ?, + usage_rules := ?, + method := *, + provided_by := *, + elem_list := ? + }; + + //---------------------------------------------------------------------------- + + template (present) PIDF_Status_Type cr_PIDF_Status_Any (template PIDF_Basic_Type p_PIDF_Basic := *, + template (present) PIDF_Status_ElemList_Type p_PIDF_Status_ElemList := ?) := + { /* @status */ + basic := p_PIDF_Basic, + elem_list := p_PIDF_Status_ElemList + }; + + template (present) PIDF_Tuple_Type cr_PIDF_Tuple_Any (template AnyURI p_Id := ?, + template (present) PIDF_Status_Type p_PIDF_Status := ?, + template Contact p_Contact := *, + template (present) PIDF_Tuple_Note_List_Type p_PIDF_Notes := ?, + template DateTime p_Timestamp := *) := + { /* @status */ + id := p_Id, + status := p_PIDF_Status, + elem_list := {}, + contact := p_Contact, + note_list := p_PIDF_Notes, + timestamp := p_Timestamp + }; + + template (present) PIDF_Presence_Type cr_PIDF_Presence_Any (template AnyURI p_Entity := ?, + template (present) PIDF_Presence_Tuple_List_Type p_PIDF_Tuples := ?, + template (present) PIDF_Presence_Note_List_Type p_PIDF_Notes := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + entity := p_Entity, + tuple_list := p_PIDF_Tuples, + note_list := p_PIDF_Notes, + elem_list := {} + }; + +} diff --git a/LTE_A_IWD_14wk37/Common/IMS/IMS_XML_Templates.ttcn b/LTE_A_IWD_14wk37/Common/IMS/IMS_XML_Templates.ttcn new file mode 100644 index 0000000..49de506 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS/IMS_XML_Templates.ttcn @@ -0,0 +1,199 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-10 10:55:39 +0200 (Wed, 10 Sep 2014) $ +// $Rev: 12185 $ +/******************************************************************************/ + +module IMS_XML_Templates { + import from CommonDefs all; + import from IMS_CommonDefs all; + // import from urn_ietf_params_xml_ns_reginfo language "XSD" all; +// import from urn_ietf_params_xml_ns_gruuinfo language "XSD" all; +// import from urn_ietf_params_xml_ns_conference_info language "XSD" all; +// import from NoTargetNamespace language "XSD" all; + import from urn_ietf_params_xml_ns_reginfo all; + import from urn_ietf_params_xml_ns_gruuinfo all; + import from NoTargetNamespace all; + + group Alias_Definitions { + + type TIMS3GPP TIMS3GPP_Type; /* @status APPROVED (IMS) */ + + type Contact.state RegInfo_Contact_State_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type Contact.event RegInfo_Contact_Event_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type Contact.unknown_param_list RegInfo_Contact_UnknownParams_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type Contact.unknown_param_list[-] RegInfo_Contact_UnknownParam_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type Contact.elem_list RegInfo_Contact_ElemList_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + type Reginfo.registration_list RegInfo_RegistrationList_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type Registration RegInfo_Registration_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type Reginfo Reginfo_Type with { encode "XML"}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + @sic R5s130474: encoding rule sic@ */ + + type Reginfo_Type.state Reginfo_State_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type Registration.state RegInfo_Registration_State_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + type PubGruu PubGruu_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type TempGruu TempGruu_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + } with { encode "XML"}; // @sic R5s130474 sic@ + + //---------------------------------------------------------------------------- + + template (value) Pub_gruu cs_PubGruu(charstring p_PublicUserId) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + uri := cs_IMS_ArbitraryValueFor_gr(p_PublicUserId) + }; + + template (value) Temp_gruu cs_TempGruu(charstring p_HomeDomainName, + integer p_Cseq) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + first_cseq := p_Cseq, + uri := cs_IMS_TempGRUUForUE(p_HomeDomainName) + }; + + /* + * @desc return GruuExtension + * @param p_PubGruu (default value: omit) + * @param p_TempGruu (default value: omit) + * @return RegInfo_Contact_ElemList_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_RegInfo_GruuExtension(template (omit) PubGruu_Type p_PubGruu := omit, + template (omit) TempGruu_Type p_TempGruu := omit) return RegInfo_Contact_ElemList_Type + { + var RegInfo_Contact_ElemList_Type v_ElemList := {}; + + if (isvalue(p_PubGruu) and isvalue(p_TempGruu)) { + v_ElemList[0] := oct2char(bit2oct(encvalue(p_PubGruu))); // NOTE: bit2str would return string cntaining '0' and '1' only + v_ElemList[1] := oct2char(bit2oct(encvalue(p_TempGruu))); // NOTE: bit2str would return string cntaining '0' and '1' only + } + else if (isvalue(p_PubGruu) xor isvalue(p_TempGruu)) { + FatalError(__FILE__, __LINE__, ""); + } + return v_ElemList; + } + + //---------------------------------------------------------------------------- + + template (value) RegInfo_Contact_UnknownParam_Type cs_XML_UEInstance(charstring p_UEInstanceId := tsc_IMS_UEInstanceId) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* NOTE: p_UEInstanceId may need to be URL encoded (-> f_URL_Encoding) */ + name := p_UEInstanceId, + base := "+sip.instance" + }; + + template (value) Registration cs_RegistrationInfo(template (value) Contact p_Contact, + charstring p_PublicUserId, + charstring p_Id, + RegInfo_Registration_State_Type p_State) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + aor := p_PublicUserId, + id := p_Id, + state := p_State, + contact_list := { + p_Contact + }, + elem_list := {} + }; + + //---------------------------------------------------------------------------- + + template (value) Contact cs_RegistrationContact(charstring p_ContactUri, + charstring p_Id, + RegInfo_Contact_State_Type p_State, + RegInfo_Contact_Event_Type p_Event, + template (omit) charstring p_CallId := omit, + template (omit) integer p_Cseq := omit, + template (omit) integer p_Expires := omit, + template (value) RegInfo_Contact_UnknownParams_Type p_UnknownParams := {}, + template (omit) Pub_gruu p_PubGruu := omit, + template (omit) Temp_gruu p_TempGruu := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + callid := p_CallId, + cseq := p_Cseq, + duration_registered := omit, + event := p_Event, + expires := p_Expires, + id := p_Id, + q := omit, + retry_after := omit, + state := p_State, + uri := p_ContactUri, + display_name := omit, + unknown_param_list := p_UnknownParams, + elem_list := fl_RegInfo_GruuExtension(p_PubGruu, p_TempGruu) + }; + + //---------------------------------------------------------------------------- + + template (value) Reginfo cs_XML_Reginfo(Reginfo_State_Type p_State, + integer p_Version, + template (value) RegInfo_RegistrationList_Type p_Registrations) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + state := p_State, + version := p_Version, + registration_list := p_Registrations, + elem_list := {} + }; + + /* + * @desc return RegInfo + * @param p_State (default value: full) + * @param p_Version (default value: 0) + * @param p_Registrations + * @return template (value) Reginfo + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_XML_RegInfo(Reginfo_State_Type p_State := full, + integer p_Version := 0, + template (value) RegInfo_RegistrationList_Type p_Registrations) return template (value) Reginfo + { + var template (value) Reginfo v_Reginfo := cs_XML_Reginfo(p_State, p_Version, p_Registrations); + return v_Reginfo; + } + + /* + * @desc build up XML for alternative service + * @param p_Type + * @param p_Reason (default value: "") + * @param p_Action (default value: omit) + * @return template (value) TIMS3GPP_Type + * @status APPROVED (IMS) + */ + function f_IMS_TIMS3GPP_TX(Type p_Type, + charstring p_Reason := "", + template (omit) Action p_Action := omit) return template (value) TIMS3GPP_Type + { + var template (value) TIMS3GPP_Type v_TIMS3GPP; + var TAlternativeService.elem_list v_AnyElements := {}; + + if (ispresent(p_Action)) { + v_AnyElements := {"" & valueof(p_Action) & ""} // @sic R5s140490 sic@ + } + + v_TIMS3GPP := { + version := 1.0, + attr := omit, + choice := { + alternative_service := + { + attr := omit, + type_ := p_Type, + reason := p_Reason, + elem_list := v_AnyElements + } + }, + elem_list := {} + }; + return v_TIMS3GPP; + } + + template (value) TIMS3GPP_Type cs_TIMS3GPP_Emergency(template (omit) Action p_Action := omit) := f_IMS_TIMS3GPP_TX("emergency", -, p_Action); /* @status APPROVED (IMS) */ + template (value) TIMS3GPP_Type cs_TIMS3GPP_Restoration(template (omit) Action p_Action := "initial-registration") := f_IMS_TIMS3GPP_TX("restoration", -, p_Action); /* @status APPROVED (IMS) */ + +} diff --git a/LTE_A_IWD_14wk37/Common/IMS_LibSip/LibSip_Common.ttcn b/LTE_A_IWD_14wk37/Common/IMS_LibSip/LibSip_Common.ttcn new file mode 100644 index 0000000..52b1a73 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS_LibSip/LibSip_Common.ttcn @@ -0,0 +1,44 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +/******************************************************************************/ + + +module LibSip_Common { + + type set length (1..infinity) of charstring Charstring_List; // @sic R5w140113, R5w140009: new common definition sic@ + + //------------------------------------------------------------------------------ + // @sic R5w140113, R5w140009: moved from LibSip_SIPTypesAndValues: sic@ + + // [20.1, 20.3, 20.4, 20.7, 20.9, 20.10, 20.11, 20.18, 20.20, 20.27, 20.28, 20.30, 20.31, + // 20.33, 20.34, 20.39, 20.42, 20.44] + + + type union GenValue { + charstring tokenOrHost, + charstring quotedString + } + + type record GenericParam + { + charstring id, + GenValue paramValue optional + } + + // [?] + type set of GenericParam SemicolonParam_List; + + // [?] + type set of GenericParam AmpersandParam_List; + + // [?] + type set of GenericParam CommaParam_List; + //------------------------------------------------------------------------------ + + +} diff --git a/LTE_A_IWD_14wk37/Common/IMS_LibSip/LibSip_MessageBodyTypes.ttcn b/LTE_A_IWD_14wk37/Common/IMS_LibSip/LibSip_MessageBodyTypes.ttcn new file mode 100644 index 0000000..37bd398 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS_LibSip/LibSip_MessageBodyTypes.ttcn @@ -0,0 +1,54 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-04-11 22:35:20 +0200 (Fri, 11 Apr 2014) $ +// $Rev: 11180 $ +/******************************************************************************/ + +module LibSip_MessageBodyTypes +{ + import from LibSip_SDPTypes all; + import from LibSip_SimpleMsgSummaryTypes all; + + type charstring XmlBody; + type charstring SdpBody; + + group MIMETypes { + type union MIME_Encapsulated_Parts { + SdpBody sdpMessageBody, // @sic R5w140112: sdpMessageBody changed back to charstring sic@ + XmlBody xmlBody // if there is XML body + // XMLMessage xmlMessage // if there is XML message (with header and body) + }; + + type record MIME_Encapsulated_Part { + charstring content_type, + charstring content_disposition optional, + MIME_Encapsulated_Parts mime_encapsulated_part + }; + + type record MIME_Message { + charstring boundary, // len: + MimeEncapsulatedList mimeEncapsulatedList + }; + + type record of MIME_Encapsulated_Part MimeEncapsulatedList; + + } // group MIMETypes + + type union MessageBody { + SdpBody sdpMessageBody, // if there is only SDP part @sic R5w140112: sdpMessageBody changed back to charstring sic@ +// XMLMessage xmlMessage, // if there is XML message (with header and body) + XmlBody xmlBody, // if there is XML body + MIME_Message mimeMessageBody, // if there is SDP and encapsulated ISUP part + charstring sipfrag, // if content-Type is message/sipfrag (cp. NOTIFY, cp TS124147 A.4.3.1.2) + charstring textplain, // if content type is text/plain (for testing long messages) + SimpleMsgSummary simpleMsgSummary, // RFC 3842 + octetstring smsMessage // encoded SMS message 3GPP 23.040, 24.011 + }; + + +} diff --git a/LTE_A_IWD_14wk37/Common/IMS_LibSip/LibSip_SDPTypes.ttcn b/LTE_A_IWD_14wk37/Common/IMS_LibSip/LibSip_SDPTypes.ttcn new file mode 100644 index 0000000..a69769a --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS_LibSip/LibSip_SDPTypes.ttcn @@ -0,0 +1,403 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +/******************************************************************************/ + +/** + * @author STF 346, STF366, STF368, STF369, STF450, STF471 + * @version $Id: LibSip_SDPTypes.ttcn 620 2014-07-10 07:26:06Z nikolajev $ + * @desc This module defines message, attribute, structured and simple + * SDP types as well constants used by LipSip constructs.
+ * Note that any changes made to the definitions in this module + * may be overwritten by future releases of this library + * End users are encouraged to contact the distributers of this + * module regarding their modifications or additions + * This module is part of LibSipV3. + * @remark Adding of new attributes types is ok; Adding of new optional attributes in @see SDP_attribute type is ok; Existing attribute types shall not be changed or removed - change requests shall be made to http://t-ort.etsi.org + * @remark Changes done by MCC160: + * - import statements changed to avoid circular imports: import of LibSip_SIPTypesAndValues replaced by LibSip_Common + */ +module LibSip_SDPTypes { + //import from LibSip_SIPTypesAndValues all; MCC160: causes circuler imports + import from LibSip_Common all; // MCC160: to avoid circuler imports + group Constants { + group SimpleConstants { + // SDP net_type + const charstring c_in := "IN"; + + // SDP addr_type + const charstring c_ip4 := "IP4"; + const charstring c_ip6 := "IP6"; + + // SDP_media_desc: media + const charstring c_audio := "audio"; + const charstring c_image := "image"; + const charstring c_video := "video"; + const charstring c_text := "text"; + const charstring c_msrp := "msrp"; + + // SDP_media_desc: transport + const charstring c_rtpAvp := "RTP/AVP"; + const charstring c_rtpAvpf := "RTP/AVPF"; + const charstring c_msrpTcp := "TCP/MSRP"; + const charstring c_udptl := "Udptl"; + + // SDP_attribute_list constants: + const charstring c_local := "local"; + const charstring c_mandatory := "mandatory"; + const charstring c_optional := "optional"; + const charstring c_none := "none"; + const charstring c_qos := "qos"; + const charstring c_remote := "remote"; + const charstring c_sendrecv := "sendrecv"; + const charstring c_sendonly := "sendonly"; + const charstring c_inactive := "inactive"; + const charstring c_send := "send"; + const charstring c_recv := "recv"; + const charstring c_e2e := "e2e"; + } + } + group Types { + group SubTypes { + group AttributeTypes { + type record SDP_attribute_cat { + charstring attr_value + } + + type record SDP_attribute_keywds { + charstring attr_value + } + + type record SDP_attribute_tool { + charstring attr_value + } + + type record SDP_attribute_ptime { + charstring attr_value + } + + type record SDP_attribute_recvonly { + } + + type record SDP_attribute_sendrecv { + } + + type record SDP_attribute_sendonly { + } + + type record SDP_attribute_inactive { + } + + type record SDP_attribute_orient { + charstring attr_value + } + + type record SDP_attribute_type { + charstring attr_value + } + + type record SDP_attribute_charset { + charstring attr_value + } + + type record SDP_attribute_sdplang { + charstring attr_value + } + + type record SDP_attribute_lang { + charstring attr_value + } + + type record SDP_attribute_framerate { + charstring attr_value + } + + type record SDP_attribute_quality { + charstring attr_value + } + + type union SDP_attribute_fmtp_format_specific_params { + SemicolonParam_List paramList, + charstring unstructured + } + + type record SDP_attribute_fmtp { + charstring format, + SDP_attribute_fmtp_format_specific_params params + } + + type record SDP_attribute_curr { + charstring preconditionType, + charstring statusType, + charstring direction + } + + type record SDP_attribute_des { + charstring preconditionType, + charstring strength, + charstring statusType, + charstring direction + } + + type record SDP_attribute_conf { + charstring preconditionType, + charstring statusType, + charstring direction + } + + type record SDP_attribute_rtpmap_codec { + charstring encoding, + charstring clockrate, + charstring parameters optional + } + + type record SDP_attribute_rtpmap { + charstring payload_type, + SDP_attribute_rtpmap_codec codec + } + + type record SDP_attribute_rtcp { + integer portnumber, + SDP_connection connection optional + } + + type record SDP_attribute_msrp { + charstring attr_value + } + + type record SDP_attribute_unknown { + charstring name, + charstring attr_value optional + } + + type record SDP_attribute_maxptime { + charstring attr_value + } + + type record SDP_attribute_tcap { + integer trpr_cap_num, + Charstring_List proto_list + } + + type record SDP_attribute_pcfg { + integer config_number, + Charstring_List pot_cfg_list optional + } + + type record SDP_attribute_acfg { + integer config_number, + Charstring_List sel_cfg_list optional + } + + type record SDP_attribute_ecn_capable_rtp { + Charstring_List init_list, + Charstring_List parm_list optional + } + + type record SDP_attribute_rtcp_fb { + charstring rtcp_fb_pt, + charstring rtcp_fb_val + } + + type record SDP_attribute_rtcp_xr { + Charstring_List xr_format_list optional + } + + type record SDP_attribute_rtcp_rsize { + } + + type record SDP_attribute_3ge2ae { + charstring indicator + } + + type record SDP_attribute_crypto { + charstring tag, + charstring crypto_suite, + charstring key_params, + Charstring_List session_params optional + } + + type union SDP_attribute { + SDP_attribute_cat cat, + SDP_attribute_keywds keywds, + SDP_attribute_tool tool, + SDP_attribute_ptime ptime, + SDP_attribute_recvonly recvonly, + SDP_attribute_sendrecv sendrecv, + SDP_attribute_sendonly sendonly, + SDP_attribute_inactive inactive, + SDP_attribute_orient orient, + SDP_attribute_type sdp_type, + SDP_attribute_charset charset, + SDP_attribute_sdplang sdplang, + SDP_attribute_lang lang, + SDP_attribute_framerate framerate, + SDP_attribute_quality quality, + SDP_attribute_fmtp fmtp, + SDP_attribute_curr curr, + SDP_attribute_des des, + SDP_attribute_conf conf, + SDP_attribute_rtpmap rtpmap, + SDP_attribute_rtcp rtcp, + SDP_attribute_msrp msrp, + SDP_attribute_maxptime maxptime, + SDP_attribute_tcap tcap, + SDP_attribute_pcfg pcfg, + SDP_attribute_acfg acfg, + SDP_attribute_ecn_capable_rtp ecn_capable_rtp, + SDP_attribute_rtcp_fb rtcp_fb, + SDP_attribute_rtcp_xr rtcp_xr, + SDP_attribute_rtcp_rsize rtcp_rsize, + SDP_attribute_3ge2ae e2ae, + SDP_attribute_crypto crypto, + //* unknown has to be the last else encoding/decoding won't work! + SDP_attribute_unknown unknown + } + + } //* group AttributeTypes + + type set of SDP_attribute SDP_attribute_list; + + type record SDP_bandwidth { + charstring modifier, + integer bandwidth + } + + type set of SDP_bandwidth SDP_bandwidth_list; + + type record SDP_connection { + charstring net_type, + charstring addr_type, + SDP_conn_addr conn_addr + } + + type record SDP_conn_addr { + charstring addr, + integer ttl optional, + integer num_of_addr optional + } + + type set of SDP_connection SDP_connection_list; + + type record SDP_contact { + charstring addr_or_phone, + charstring disp_name optional + } + + type SDP_contact SDP_contact_tel; + + type SDP_contact SDP_contact_email; + + type set of SDP_contact_email SDP_email_list; + + type record of charstring SDP_fmt_list; + + type record SDP_key { + charstring method, + charstring key optional + } + + type record SDP_media_desc { + SDP_media_field media_field, + charstring information optional, + SDP_connection_list connections optional, + SDP_bandwidth_list bandwidth optional, + SDP_key key optional, + SDP_attribute_list attributes optional + } + + type set of SDP_media_desc SDP_media_desc_list; + + type record SDP_media_port { + integer port_number, + integer num_of_ports optional + } + + type record SDP_media_field { + charstring media, + SDP_media_port ports, + charstring transport, + SDP_fmt_list fmts + } + + type record SDP_time { + SDP_time_field time_field, + SDP_repeat_list time_repeat optional + } + + type record SDP_time_field { + charstring start_time, + //* field is numeric strings that may not fit into 32-bit signed int + charstring + stop_time //* field is numeric strings that may not fit into 32-bit signed int + } + + type record SDP_repeat { + SDP_typed_time repeat_interval, + SDP_typed_time active, + SDP_typed_time_list offsets + } + + type set of SDP_repeat SDP_repeat_list; + + type record SDP_typed_time { + integer time, + charstring unit optional + } + + type set of SDP_typed_time SDP_typed_time_list; + + type set of SDP_time SDP_time_list; + + type record SDP_timezone { + charstring adjustment_time, + SDP_typed_time offset + } + + type set of SDP_timezone SDP_timezone_list; + + type record SDP_Origin { + charstring user_name, + charstring session_id, + //* field is numeric strings that may not fit into 32-bit signed int + charstring session_version, + //* field is numeric strings that may not fit into 32-bit signed int + charstring net_type, + charstring addr_type, + charstring addr + } + + type set of SDP_contact_tel SDP_phone_list; + + } //* group SubTypes + + + group MessageTypes { + type record SDP_Message { + integer protocol_version, + SDP_Origin origin, + charstring session_name, + charstring information optional, + charstring uri optional, + SDP_email_list emails optional, + SDP_phone_list phone_numbers optional, + SDP_connection connection optional, + SDP_bandwidth_list bandwidth optional, + SDP_time_list times, + SDP_timezone_list timezone_adjustments optional, + SDP_key key optional, + SDP_attribute_list attributes optional, + SDP_media_desc_list media_list optional + } + with { + encode "SDPCodec"; + } + + } // group MessageTypes + + } // group Types +} // end module LibSip_SDPTypes diff --git a/LTE_A_IWD_14wk37/Common/IMS_LibSip/LibSip_SIPTypesAndValues.ttcn b/LTE_A_IWD_14wk37/Common/IMS_LibSip/LibSip_SIPTypesAndValues.ttcn new file mode 100644 index 0000000..f7f5b06 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS_LibSip/LibSip_SIPTypesAndValues.ttcn @@ -0,0 +1,1971 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +/******************************************************************************/ + +/** + * @author STF 346, STF366, STF368, STF369, STF450, STF471 + * @version $Id: LibSip_SIPTypesAndValues.ttcn 623 2014-08-18 12:22:28Z rennoch $ + * @desc This module defines message, header, structured and simple SIP + * types as well constants used by LipSip constructs.
+ * Note that any changes made to the definitions in this module + * may be overwritten by future releases of this library + * End users are encouraged to contact the distributers of this + * module regarding their modifications or additions + * This module is part of LibSipV3. + * @remark Adding of new message and header types is ok; Adding of new optional header fields in + * @see MessageHeader type is ok but should be done at same time as dummy template updates; Existing message or header types shall not be changed or removed - change requests shall be made to http://t-ort.etsi.org + * @remark Changes done by MCC160: + * - import statements changed to avoid circular imports + * - import of LibSip_Common + * - types of LibSip_Common are commented out (Charstring_List, GenValue, GenericParam, SemicolonParam_List, AmpersandParam_List, CommaParam_List) + * - import statements changed to avoid dependency of PIXITs + * - import of LibSip_PIXITS commented out + * - c_mimeMultipart commented out + * - definition of DisplayName added + * - NameAddr changed to use DisplayName instead charstring (acc. to R5w140111) + * - featureCaps restored in MessageHeader + * - encoding rule "SIPCodec" added to types Request, *_Request, RequestUnion, Response (note: how to deal with this in the future is FFS) + */ +module LibSip_SIPTypesAndValues { + import from LibSip_MessageBodyTypes all; + //import from LibSip_PIXITS all; MCC160: type definitions shall not import PIXITs + import from LibSip_Common all; // MCC160: to avoid circuler imports + + group Constants { + group SimpleConstants { + // SIP name protocol plus version + const charstring c_sipNameVersion := "SIP/2.0"; + + // SIP name protocol + const charstring c_sipName := "SIP"; + + // SIP version + const charstring c_sipVersion := "2.0"; + + // SIP scheme + const charstring c_sipScheme := "sip"; + + // TEL scheme + const charstring c_telScheme := "tel"; + + // URN schema + const charstring c_urnScheme := "urn"; + + // TAG_ID + const charstring c_tagId := "tag"; + + // BRANCH_ID + const charstring c_branchId := "branch"; + + // BRANCH_COOKIE + const charstring c_branchCookie := "z9hG4bK"; + + // EXPIRES_ID + const charstring c_expiresId := "expires"; + + // MADDR_ID + const charstring c_maddrId := "maddr"; + + // METHOD_ID + const charstring c_methodId := "method"; + + // RECEIVED_ID + const charstring c_receivedId := "received"; + + // TTL_ID + const charstring c_ttlId := "ttl"; + + // USER_ID + const charstring c_userId := "user"; + + // SDP name application + const charstring c_sdpApplication := "application/sdp"; + + // XML name application + const charstring c_xmlApplication := "application/xml"; + + // XML name application + const charstring c_xmlreginfoApplication := "application/reginfo+xml"; + + // XML name resource-list + const charstring c_xmlresourcelistApplication := "application/resource-lists+xml"; + +/* // MIME name application */ +/* const charstring c_mimeMultipart := "multipart/mixed;boundary=""" & PX_SIP_MIME_BOUNDARY & """"; */ + + // IMS 3GPP name application + const charstring c_ims3gppApplication := "application/3gpp-ims+xml"; + + // IMS 3GPP name CW application + const charstring c_ims3gppCwApplication := "application/vnd.3gpp.cw+xml"; + + // IMS ETSI name MCID application + const charstring c_imsEtsiMcidApplication := "application/vnd.etsi.mcid+xml"; + + // IMS ETSI name CUG application + const charstring c_imsEtsiCugApplication := "application/vnd.etsi.cug+xml"; + + // IMS ETSI name Simservs application(TIP/TIR, ACR, CDIV, OIP/OIR, CUG) + const charstring c_imsEtsiSimservsApplication := "application/vnd.etsi.simservs+xml"; + + // OCTET-STREAM name application + const charstring c_octetApplication := "application/octet-stream"; + + // PLAIN-TEXT name application + const charstring c_plainText := "text/plain"; + + // SIP fragment message + const charstring c_sipfragMessage := "message/sipfrag"; + + // text content of 1300 bytes for messages with message body + const charstring c_longMessageContent_1300Bytes := + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & oct2char('0D'O) & oct2char('0A'O); + // CRLF + // Default SIP port number : 5060 + const integer c_defaultSipPort := 5060; + + // Default SIP protocol : UDP + const charstring c_defaultSipProt := "UDP"; + + // Fixed IP multicast address + const charstring c_mcastSipIpaddr := "224.0.1.75"; + + // Short delta-second used in expires parameter to acknowledge a registration + const charstring c_shortRegistration := "3600"; + + // ([RFC3891 ] Sec 6.1) + const charstring c_earlyFlag := "early-only"; + + // option tag replaces ([RFC3261 ] ) + const charstring c_replaces := "replaces"; + + // option tag 100rel (reliable provisional response [RFC3262 ] ) + const charstring c_tag100rel := "100rel"; + + // option tag from-change ([RFC4916 ] ) + const charstring c_tagFromChange := "from-change"; + + // option tag precondition (ch.11 [RFC3312 ] ) + const charstring c_tagPrecond := "precondition"; + + // due to problem with TAU compiler because hardcoded return statement constant is created + const HostPort c_hostport_dummy := { + host := "", + portField := c_defaultSipPort + }; + + // CLIP/CLIR information + const PrivacyValue c_privacy_none := "none"; + const PrivacyValue c_privacy_id := "id"; + const PrivacyValue c_privacy_header := "header"; + const PrivacyValue c_privacy_user := "user"; + const PrivacyValue c_privacy_critical := "critical"; + const PrivacyValue c_privacy_session := "session"; + + // + const charstring c_AT := "@"; + // MRO + const charstring c_SP := oct2char('20'O); + const charstring c_SLASH := oct2char('2F'O); + const charstring c_LT := oct2char('3C'O); + const charstring c_GT := oct2char('3E'O); + + // * (wildchard) sign + const charstring c_WILDCARD := "*"; + + const integer c_CRlen := 2; + // length of new line (0d0a) + const GenericParam c_Integrity_protected_yes := {"integrity-protected", {tokenOrHost := "yes"}}; + const GenericParam c_Integrity_protected_no := {"integrity-protected", {tokenOrHost := "no"}}; + const GenericParam c_Integrity_protected_ip_assoc_pending := {"integrity-protected", {tokenOrHost := "ip-assoc-pending"}}; + + const charstring c_algorithm := "MD5"; + + } // end group SimpleConstants + + group AuthorizationConstants { + + const charstring c_ik := ""; + const charstring c_ck := ""; + const charstring c_nonce := ""; + const charstring c_nonce_value := "0edff6c521cc3f407f2d9e01cf6ed82b"; + + + } // end group AuthorizationConstants + + group PChargingVectorConstants { + + const charstring c_icid := "icid-value"; + const charstring c_icid_value := "123abc"; + const charstring c_icid_generated_at := "icid-generated-at"; + const charstring c_orig_ioi := "orig-ioi"; + const charstring c_term_ioi := "term-ioi"; + const charstring c_access_network_charging_info := "access-network-charging-info"; + + + } // end group PChargingVectorConstants + + group HeaderFieldConstants { + + const CallId c_empty_CallId := { + fieldName := CALL_ID_E, + callid := "" + }; + + const ContentType c_empty_ContentType := { + fieldName := CONTENT_TYPE_E, + mediaType := "" + }; + + const CSeq c_empty_cSeq := { + fieldName := CSEQ_E, + seqNumber := 0, + method := "EMPTY" + }; + + const From c_empty_From := { + fieldName := FROM_E, + addressField := { + nameAddr := { + displayName := omit, + addrSpec := { + scheme := c_sipScheme, + components := { + sip := { + userInfo := omit, + hostPort := { + host := "127.0.0.1", + portField := c_defaultSipPort + } + } + }, + urlParameters := omit, + headers := omit + } + } + }, + fromParams := omit + }; + + const MaxForwards c_maxForwards70 := { + fieldName := MAX_FORWARDS_E, + forwards := 70 + }; + + const SipUrl c_empty_RequestUri := { + scheme := c_sipScheme, + components := { + sip := { + userInfo := omit, + hostPort := { + host := "127.0.0.1", + portField := c_defaultSipPort + } + } + }, + urlParameters := omit, + headers := omit + }; + + const SipUrl c_unavailableUri := { + scheme := c_sipScheme, + components := { + sip := { + userInfo := { + userOrTelephoneSubscriber := "unavailable", + password := omit + }, + hostPort := { + host := "anonymous.invalid", + portField := c_defaultSipPort + } + } + }, + urlParameters := omit, + headers := omit + }; + + const To c_empty_To := { + // value of To header + fieldName := TO_E, + addressField := { + nameAddr := { + displayName := omit, + addrSpec := { + scheme := c_sipScheme, + components := { + sip := { + userInfo := omit, + hostPort := { + host := "127.0.0.1", + portField := c_defaultSipPort + } + } + }, + urlParameters := omit, + headers := omit + } + } + }, + toParams := omit + }; + + const Via c_empty_Via := { + fieldName := VIA_E, + viaBody := { + { + sentProtocol := { + protocolName := c_sipName, + protocolVersion := c_sipVersion, + transport := c_defaultSipProt + }, + sentBy := { + host := "127.0.0.1", + portField := c_defaultSipPort + }, + viaParams := omit + } + } + }; + + + } + + + group UserProfileConstants { + // number of user profile from 1-10 for SIP profile + const integer c_userProfile_SIP1_home := 1; + const integer c_userProfile_SIP2_home := 2; + + + } // end group UserProfileConstants + + group StatusLines { + const StatusLine c_statusLine100 := {c_sipNameVersion, 100, "Trying"}; + const StatusLine c_statusLine180 := {c_sipNameVersion, 180, "Ringing"}; + const StatusLine c_statusLine181 := {c_sipNameVersion, 181, "Call Is Being Forwarded"}; + const StatusLine c_statusLine182 := {c_sipNameVersion, 182, "Queued"}; + const StatusLine c_statusLine183 := {c_sipNameVersion, 183, "Session Progress"}; + + const StatusLine c_statusLine200 := {c_sipNameVersion, 200, "OK"}; + const StatusLine c_statusLine202 := {c_sipNameVersion, 202, "Accepted"}; + + const StatusLine c_statusLine300 := {c_sipNameVersion, 300, "Multiple Choices"}; + const StatusLine c_statusLine301 := {c_sipNameVersion, 301, "Moved Permanently"}; + const StatusLine c_statusLine302 := {c_sipNameVersion, 302, "Moved Temporarily"}; + const StatusLine c_statusLine305 := {c_sipNameVersion, 305, "Use Proxy"}; + const StatusLine c_statusLine380 := {c_sipNameVersion, 380, "Alternative Service"}; + + const StatusLine c_statusLine400 := {c_sipNameVersion, 400, "Bad Request"}; + const StatusLine c_statusLine401 := {c_sipNameVersion, 401, "Unauthorized"}; + const StatusLine c_statusLine402 := {c_sipNameVersion, 402, "Payment Required"}; + const StatusLine c_statusLine403 := {c_sipNameVersion, 403, "Forbidden"}; + const StatusLine c_statusLine404 := {c_sipNameVersion, 404, "Not Found"}; + const StatusLine c_statusLine405 := {c_sipNameVersion, 405, "Method Not Allowed"}; + const StatusLine c_statusLine406 := {c_sipNameVersion, 406, "Not Acceptable"}; + const StatusLine c_statusLine407 := {c_sipNameVersion, 407, "Proxy Authentication Required"}; + const StatusLine c_statusLine408 := {c_sipNameVersion, 408, "Request Timeout"}; + const StatusLine c_statusLine410 := {c_sipNameVersion, 410, "Gone"}; + const StatusLine c_statusLine413 := {c_sipNameVersion, 413, "Request Entity Too Large"}; + const StatusLine c_statusLine414 := {c_sipNameVersion, 414, "Request-URI Too Long"}; + const StatusLine c_statusLine415 := {c_sipNameVersion, 415, "Unsupported Media Type"}; + const StatusLine c_statusLine416 := {c_sipNameVersion, 416, "Unsupported URI Scheme"}; + const StatusLine c_statusLine420 := {c_sipNameVersion, 420, "Bad Extension"}; + const StatusLine c_statusLine421 := {c_sipNameVersion, 421, "Extension Required"}; + const StatusLine c_statusLine422 := {c_sipNameVersion, 422, "Session Interval Too Small"}; + const StatusLine c_statusLine423 := {c_sipNameVersion, 423, "Interval Too Brief"}; + const StatusLine c_statusLine433 := {c_sipNameVersion, 433, "Anonymity Disallowed"}; + const StatusLine c_statusLine480 := {c_sipNameVersion, 480, "Temporarily Unavailable"}; + const StatusLine c_statusLine481 := {c_sipNameVersion, 481, "Call/Transaction Does Not Exist"}; + const StatusLine c_statusLine482 := {c_sipNameVersion, 482, "Loop Detected"}; + const StatusLine c_statusLine483 := {c_sipNameVersion, 483, "Too Many Hops"}; + const StatusLine c_statusLine484 := {c_sipNameVersion, 484, "Address Incomplete"}; + const StatusLine c_statusLine485 := {c_sipNameVersion, 485, "Ambiguous"}; + const StatusLine c_statusLine486 := {c_sipNameVersion, 486, "Busy Here"}; + const StatusLine c_statusLine487 := {c_sipNameVersion, 487, "Request Terminated"}; + const StatusLine c_statusLine488 := {c_sipNameVersion, 488, "Not Acceptable Here"}; + const StatusLine c_statusLine493 := {c_sipNameVersion, 493, "Undecipherable"}; + const StatusLine c_statusLine500 := {c_sipNameVersion, 500, "Server Internal Error"}; + const StatusLine c_statusLine501 := {c_sipNameVersion, 501, "Not implemented"}; + const StatusLine c_statusLine502 := {c_sipNameVersion, 502, "Bad Gateway"}; + const StatusLine c_statusLine503 := {c_sipNameVersion, 503, "Service Unavailable"}; + const StatusLine c_statusLine504 := {c_sipNameVersion, 504, "Server Time-out"}; + const StatusLine c_statusLine505 := {c_sipNameVersion, 505, "Version Not Supported"}; + const StatusLine c_statusLine513 := {c_sipNameVersion, 513, "Message Too Large"}; + const StatusLine c_statusLine580 := {c_sipNameVersion, 580, "Precondition Failure"}; + const StatusLine c_statusLine600 := {c_sipNameVersion, 600, "Busy Everywhere"}; + const StatusLine c_statusLine603 := {c_sipNameVersion, 603, "Decline"}; + const StatusLine c_statusLine604 := {c_sipNameVersion, 604, "Does Not Exist Anywhere"}; + const StatusLine c_statusLine606 := {c_sipNameVersion, 606, "Not Acceptable"}; + + + } // end StatusLines + + group SIPSyncPointNames { + const charstring c_Ringing := "Ringing"; + const charstring c_uPlane := "uPlane"; + const charstring c_sync1 := "sync1"; + const charstring c_sync2 := "sync2"; + const charstring c_sync3 := "sync3"; + const charstring c_sync4 := "sync4"; + const charstring c_uPlaneStop := "uPlaneStop"; + const charstring c_annoucA := "announcementA"; + const charstring c_annoucB := "announcementB"; + const charstring c_annouc := "announcement"; + const charstring c_voicem := "voiceMessage"; + } + + + } // end group Constants + + group Types { + group SubTypes { + // Subtypes + group TokenTypes // TokensTypes + { + // [20 ] + type enumerated FieldName { + ACCEPT_E, + ACCEPT_ENCODING_E, + ACCEPT_LANGUAGE_E, + ALERT_INFO_E, + ALLOW_E, + AUTHENTICATION_INFO_E, + AUTHORIZATION_E, + CALL_ID_E, + CALL_INFO_E, + CONTACT_E, + CONTENT_DISPOSITION_E, + CONTENT_ENCODING_E, + CONTENT_LANGUAGE_E, + CONTENT_LENGTH_E, + CONTENT_TYPE_E, + CSEQ_E, + DATE_E, + ERROR_INFO_E, + EXPIRES_E, + FROM_E, + IN_REPLY_TO_E, + MAX_FORWARDS_E, + MIME_VERSION_E, + MIN_EXPIRES_E, + ORGANIZATION_E, + PRIORITY_E, + PROXY_AUTHENTICATE_E, + PROXY_AUTHORIZATION_E, + PROXY_REQUIRE_E, + RECORD_ROUTE_E, + REPLY_TO_E, + REQUIRE_E, + RETRY_AFTER_E, + ROUTE_E, + SERVER_E, + SUBJECT_E, + SUPPORTED_E, + TIMESTAMP_E, + TO_E, + UNSUPPORTED_E, + USER_AGENT_E, + VIA_E, + WARNING_E, + WWW_AUTHENTICATE_E, + // [3262/7.1 ] + RACK_E, + RSEQ_E, + // [3265/7.2 ] + ALLOW_EVENTS_E, + EVENT_E, + SUBSCRIPTION_STATE_E, + // [3313 ] + P_MEDIA_AUTHORIZATION_E, + // [3323 ] + PRIVACY_E, + // [3325 ] + P_ASSERTED_ID_E, + P_PREFERRED_ID_E, + P_PREFERRED_SERVICE_E, + // [3326 ] + REASON_E, + // [3515 ] - REFER method + REFER_TO_E, + // [4488 ] - REFER method + REFER_SUB_E, + // [3891 ] + REPLACES_E, + // [3892 ] - REFER method + REFERRED_BY_E, + // [4244 ] + HISTORY_INFO_E, + // [3313 ] + P_MEDIA_AUTH_E, + // [3327 ] + PATH_E, + // [3329 ] + SECURITY_CLIENT_E, + SECURITY_SERVER_E, + SECURITY_VERIFY_E, + // [3455 ] + P_ACCESS_NETWORK_INFO_E, + P_ASSOCIATED_URI_E, + P_CALLED_PARTY_E, + P_CHARGING_FUNCTION_ADDRESSES_E, + P_CHARGING_VECTOR_E, + P_VISITED_NETWORK_E, + // [3608 ] + SERVICE_ROUTE_E, + // [3841 ] + ACCEPT_CONTACT_E, + REQUEST_DISPOSITION_E, + // [4028 ] + MIN_SE_E, + SESSION_EXPIRES_E, + P_ASSERTED_SERVICE_E, + // [5009 ] + P_EARLY_MEDIA_E, + // http://tools.ietf.org/html/draft-johnston-sipping-cc-uui-07 + // Transporting User to User Call Control Information in SIP for ISDN Interworking + USER_TO_USER_E, + // [6442 ] /* + // @sic R5-133151 update of header fields sic@ */ + GEOLOCATION_E, + GEOLOCATION_ROUTING_E, + SESSION_ID_E, + SIP_ETAG_E, + SIP_IF_MATCH_E, + FEATURE_CAPS_E + } + + // [7.1 ] + type enumerated Method { + ACK_E, + BYE_E, + CANCEL_E, + INVITE_E, + OPTIONS_E, + REGISTER_E, + PRACK_E // Note: this element is not defined in [5 ] + , + SUBSCRIBE_E, + NOTIFY_E // [3265 ] + , + PUBLISH_E // [3903/12 ] + , + REFER_E // [3515 ] + , + UPDATE_E // [3311 ] + , + MESSAGE_E // [3428 ] + , + INFO_E // [2976 ] + , + UNKNOWN_METHOD_E + } + +/* type union GenValue { */ +/* charstring tokenOrHost, */ +/* charstring quotedString */ +/* } */ + +/* // [20.1, 20.3, 20.4, 20.7, 20.9, 20.10, 20.11, 20.18, 20.20, 20.27, 20.28, 20.30, 20.31, */ +/* // 20.33, 20.34, 20.39, 20.42, 20.44 ] */ +/* type record GenericParam { */ +/* charstring id, */ +/* GenValue paramValue optional */ +/* } */ + +/* // [? ] */ +/* type set of GenericParam SemicolonParam_List; */ + +/* // [? ] */ +/* type set of GenericParam AmpersandParam_List; */ + +/* // [? ] */ +/* type set of GenericParam CommaParam_List; */ + +/* type set length (1..infinity) of charstring Charstring_List; */ + + // [20.10, 20.20, 20.30, 20.31, 20.34, 20.39, 20.42, 20.43 ] + type record HostPort { + charstring host optional, + // hostname, IPv4 or IPv6 + integer portField + optional // represented as an integer + } + + // [20.10, 20.20, 20.30, 20.31, 20.34, 20.39 ] + /** + * @desc identifier for user or telephone subscriber + * @member userOrTelephoneSubscriber provides the username or a phone name identifying the subscriber + * @member password related password information + */ + type record UserInfo { + charstring userOrTelephoneSubscriber, + charstring password optional + } + + // [19.1.1 ;used in: 20.10, 20.20, 20.30, 20.31, 20.34, 20.39 ] + /** + * @desc Uniform Resource Identifier (URI) + * @member scheme distinguishes call types, e.g. voice, fax etc. or related address scheme, e.g. tel, sip + * @member userInfo Contains user information (also in non-SIP URLs) with optional parameter as passwords + * @member hostPort Hostname or IP address information and port identifier of the target + * @member urlParameters Contains either SIP or TEL URL parameters, separated by semicolons, e.g. transport=tcp or user=phone + * @member headers Additional information added after the parameters, e.g. priority=urgent + */ + type record SipUriComponents { + // sip-uri acc. to RFC 3261 cl. 19.1 + UserInfo userInfo optional, + HostPort hostPort + } + + type record TelUriComponents { + // tel-uri acc. to RFC 3966 + charstring subscriber + } + + type record UrnUriComponents { + // urn-uri acc. to RFC 2141 + charstring namespaceId, + // e.g. "service" as acc. to RFC 5031 + charstring + namespaceSpecificString // e.g. "sos" + } + + type union UriComponents { + SipUriComponents sip, + // scheme: "sip" or sips" + TelUriComponents tel, + // scheme: "tel" + UrnUriComponents urn, + // scheme: "urn" + charstring + other // scheme: none of the above schemes + } + + type record SipUrl { + charstring scheme, + // e.g "sip" or "tel" + UriComponents components, + // corresponding to the scheme + SemicolonParam_List urlParameters optional, + AmpersandParam_List headers optional + } + + // [20.1, RFC2616 14.1 ] + type record AcceptBody { + charstring mediaRange, + SemicolonParam_List acceptParam optional + } + + // [20.1, RFC2616 14.1 ] + type set of AcceptBody AcceptBody_List; + + // [20.4 ] + type record AlertInfoBody { + charstring url, + // any URI + SemicolonParam_List genericParams optional + } + + // [20.4 ] + type set of AlertInfoBody AlertInfoBody_List; + + // [20.8 ] + type charstring CallidString; + // token [" + // [20.8 ] + type set of CallidString CallidString_List; + + // [20.9 ] + type record CallInfoBody { + charstring url, + // any URI + SemicolonParam_List infoParams optional + } + + // [20.9 ] + type set of CallInfoBody CallInfoBody_List; + + // [20.27, 20.44, .......10.32, 10.48; RFC2616 14.33, 14.47; RFC2617 1.2 ] + type union Challenge { + CommaParam_List digestCln, + OtherAuth otherChallenge + } + + // [20.10, 20.20, 20.30, 20.31, 20.34, 20.39 ] + type union DisplayName // MCC160: missing type + { + charstring token, + charstring quotedString + } + + + type record NameAddr { + DisplayName displayName optional, // MCC160: type corected +/* charstring displayName optional, */ + SipUrl addrSpec + } + + // [20.10, 20.20, 20.31, 20.39 ] + type union Addr_Union { + NameAddr nameAddr, + SipUrl + addrSpecUnion // STS: "Union" added to filed name to avoid dangerous name equivalence with 2nd NameAddr field + } + + // [20.10 ] + type record ContactAddress { + Addr_Union addressField, + SemicolonParam_List contactParams optional + } + + // [20.10 ] + type set of ContactAddress ContactAddress_List; + // 1 or more elements + // [20.10 ] + type union ContactBody { + charstring wildcard, + ContactAddress_List contactAddresses + } + + // [20.2, 20.12; RFC2616 14.3, 14.11 ] + type charstring ContentCoding; + + // [20.2, 20.12; RFC2616 14.3, 14.11 ] + type set of ContentCoding ContentCoding_List; + + // [20.7, 20.28; RFC2616 14.35 RFC2617 1.2 ] + type union Credentials { + CommaParam_List digestResponse, + OtherAuth otherResponse + } + + // allow multiple Authorization headers due to RFC3261 ch. 20.7 and 20.28 + type record of Credentials CredentialsList; + + // [20.19, 20.23, 20.33 ] + type charstring DeltaSec; + // an external operation can handle this field + // [20.18 ] + type record ErrorInfoBody { + charstring uri, + // any URI + SemicolonParam_List genericParams optional + } + + // [20.18 ] + type set of ErrorInfoBody ErrorInfoBody_List; + + // [20.3 RFC2616 14.4 ] + type record LanguageBody { + charstring languageRange, + SemicolonParam_List acceptParam optional + } + + // [20.3 RFC2616 14.4 ] + type set of LanguageBody LanguageBody_List; + + // [20.13; RFC2616 14.12 ] + type charstring LanguageTag; + + // [20.13; RFC2616 14.12 ] + type set of LanguageTag LanguageTag_List; + + // [20.5 ] + type set of charstring Method_List; + + + // [20.29, 20.32, 20.37, 20.40 ] + type charstring OptionTag; + + // [20.29, 20.32, 20.37, 20.40 ] + type set of OptionTag OptionTag_List; + + + // [20.7, 20.27, 20.28, 20.44 ; RFC2616 14.33, 14.47; RFC2617 1.2 ] + type record OtherAuth { + charstring authScheme, + CommaParam_List authParams + } + + type record Payload { + integer payloadlength, + charstring payloadvalue + } + + // [20.30,20.34 ] + type record RouteBody { + NameAddr nameAddr, + SemicolonParam_List rrParam optional + } + + // [20.30,20.34 ] + type record of RouteBody RouteBody_List; + + // [20.42 ] + type record SentProtocol { + charstring protocolName, + charstring protocolVersion, + charstring transport + } + + // [20.35, 20.41; RFC2616 14.43 ] + type charstring ServerVal; + + // [20.35, 20.41; RFC2616 14.43 ] + type set of ServerVal ServerVal_List; + + // [20.38 ] + type record TimeValue { + integer majorDigit, + // represented as an integer + integer minorDigit + optional // represented as an integer + } + + // [20.42 ] + type record ViaBody { + SentProtocol sentProtocol, + HostPort sentBy, + SemicolonParam_List viaParams optional + } + + // [20.42 ] + type record of ViaBody ViaBody_List; + + // [20.43 ] + type union WarnAgent { + HostPort hostPort, + charstring pseudonym + } + + // [20.43 ] + type record WarningValue { + integer warnCode, + // represented as an integer + WarnAgent warnAgent, + charstring warnText + } + + // [20.43 ] + type set of WarningValue WarningValue_List; + + type Addr_Union PAssertedIDValue; + + type record of PAssertedIDValue PAssertedIDValue_List; + + type charstring PAssertedServiceValue; + + type Addr_Union PPreferredIDValue; + + type record of PPreferredIDValue PPreferredIDValue_List; + + type charstring PrivacyValue; + + type record of PrivacyValue PrivacyValue_List; + + type set of FcValue FcValue_List; + type record FcValue { + charstring wildcard(c_WILDCARD), + SemicolonParam_List fcParams optional + } + + + } // end group TokensType + + + group HeaderFieldTypes // Header Fields + { + group CommonHeaderFieldTypes { + // [20.1, RFC2616 14.1 ] + type record Accept { + FieldName fieldName (ACCEPT_E) , + AcceptBody_List acceptArgs optional + } + + // [20.2, RFC2616 14.3 ] + type record AcceptEncoding { + FieldName fieldName (ACCEPT_ENCODING_E) , + ContentCoding_List contentCoding optional + } + + // [20.3, RFC2616 14.4 ] + type record AcceptLanguage { + FieldName fieldName (ACCEPT_LANGUAGE_E) , + LanguageBody_List languageBody optional + } + + // [20.4 ] + type record AlertInfo { + FieldName fieldName (ALERT_INFO_E) , + AlertInfoBody_List alertInfoBody optional + } + + // [20.5 ] + type record Allow { + FieldName fieldName (ALLOW_E) , + Method_List methods optional + } + + // [20.6 ] + type record AuthenticationInfo { + FieldName fieldName (AUTHENTICATION_INFO_E) , + CommaParam_List ainfo + } + + // [20.7 RFC2617 3.2.2 ] + type record Authorization { + FieldName fieldName (AUTHORIZATION_E) , + CredentialsList + body // changed from Credentials to allow multiple Authorization headers + } + + // [20.8 ] + type record CallId { + FieldName fieldName (CALL_ID_E) , + CallidString callid + } + + // [20.9 ] + type record CallInfo { + FieldName fieldName (CALL_INFO_E) , + CallInfoBody_List callInfoBody optional + } + + // [20.10 ] + type record Contact { + FieldName fieldName (CONTACT_E) , + ContactBody contactBody + } + + // [20.11 ] + type record ContentDisposition { + FieldName fieldName (CONTENT_DISPOSITION_E) , + charstring dispositionType, + SemicolonParam_List dispositionParams optional + } + + // [20.12 RFC2616 14.11 ] + type record ContentEncoding { + FieldName fieldName (CONTENT_ENCODING_E) , + ContentCoding_List contentCoding + } + + // [20.13 RFC2616 14.12 ] + type record ContentLanguage { + FieldName fieldName (CONTENT_LANGUAGE_E) , + LanguageTag_List languageTag + } + + // [20.14 ] + type record ContentLength { + FieldName fieldName (CONTENT_LENGTH_E) , + integer + len // this field is represented as an integer + } + + // [20.15 ] + type record ContentType { + FieldName fieldName (CONTENT_TYPE_E) , + charstring mediaType + } + + // [20.16 ] + type record CSeq { + FieldName fieldName (CSEQ_E) , + integer seqNumber, + // this field is represented as an integer + charstring method + } + + // [20.17 ] + type record Date { + FieldName fieldName (DATE_E) , + charstring sipDate + } + + // [20.18 ] + type record ErrorInfo { + FieldName fieldName (ERROR_INFO_E) , + ErrorInfoBody_List errorInfo optional + } + + // [20.19 ] + type record Expires { + FieldName fieldName (EXPIRES_E) , + DeltaSec deltaSec + } + + //[6809] + type record FeatureCaps { + FieldName fieldName(FEATURE_CAPS_E), + FcValue_List fcValues + } + + // [20.20 ] + type record From { + FieldName fieldName (FROM_E) , + Addr_Union addressField, + SemicolonParam_List fromParams optional + } + + // [20.21 ] + type record InReplyTo { + FieldName fieldName (IN_REPLY_TO_E) , + CallidString_List callids + } + + // [20.22 ] + type record MaxForwards { + FieldName fieldName (MAX_FORWARDS_E) , + integer + forwards // this field is represented as an integer + } + + // [20.23 ] + type record MinExpires { + FieldName fieldName (MIN_EXPIRES_E) , + DeltaSec deltaSec + } + + // [20.24 RFC2616 19.4.1 ] + type record MimeVersion { + FieldName fieldName (MIME_VERSION_E) , + integer majorNumber, + // this field is represented as an integer + integer + minorNumber // this field is represented as an integer + } + + // [20.25 ] + type record Organization { + FieldName fieldName (ORGANIZATION_E) , + charstring organization + } + + // [20.26 ] + type record Priority { + FieldName fieldName (PRIORITY_E) , + charstring priorityValue + } + + // [20.27 RFC2616 14.33 RFC2617 1.2 ] + type record ProxyAuthenticate { + FieldName fieldName (PROXY_AUTHENTICATE_E) , + Challenge challenge + } + + // [20.28 RFC2616 14.35 RFC2617 1.2 ] + type record ProxyAuthorization { + FieldName fieldName (PROXY_AUTHORIZATION_E) , + CredentialsList + credentials // changed from Credentials to allow multiple Authorization headers + } + + // [20.29 ] + type record ProxyRequire { + FieldName fieldName (PROXY_REQUIRE_E) , + OptionTag_List optionsTags + } + + // [20.30 ] + type record RecordRoute { + FieldName fieldName (RECORD_ROUTE_E) , + RouteBody_List routeBody + } + + // [20.31 ] + type record ReplyTo { + FieldName fieldName (REPLY_TO_E) , + Addr_Union addressField, + SemicolonParam_List replyToParams optional + } + + // [20.32 ] + type record Require { + FieldName fieldName (REQUIRE_E) , + OptionTag_List optionsTags + } + + // [20.33 ] + type record RetryAfter { + FieldName fieldName (RETRY_AFTER_E) , + DeltaSec deltaSec, + charstring comment optional, + SemicolonParam_List retryParams optional + } + + // [20.34 ] + type record Route { + FieldName fieldName (ROUTE_E) , + RouteBody_List routeBody + } + + // [20.35 RFC2616 14.38 ] + type record Server { + FieldName fieldName (SERVER_E) , + ServerVal_List serverBody + } + + // [20.36 ] + type record Subject { + FieldName fieldName (SUBJECT_E) , + charstring summary + } + + // [20.37 ] + type record Supported { + FieldName fieldName (SUPPORTED_E) , + OptionTag_List optionsTags optional + } + + // [20.38 ] + type record Timestamp { + FieldName fieldName (TIMESTAMP_E) , + TimeValue timeValue optional, + TimeValue delay optional + } + + // [20.39 ] + type record To { + FieldName fieldName (TO_E) , + Addr_Union addressField, + SemicolonParam_List toParams optional + } + + // [20.40 ] + type record Unsupported { + FieldName fieldName (UNSUPPORTED_E) , + OptionTag_List optionsTags + } + + // Undefined header field + type record UndefinedHeader { + charstring headerName, + charstring headerValue + } + + type set of UndefinedHeader UndefinedHeader_List; + + // [20.41 RFC2616 14.43 ] + type record UserAgent { + FieldName fieldName (USER_AGENT_E) , + ServerVal_List userAgentBody + } + + // [20.42 ] + type record Via { + FieldName fieldName (VIA_E) , + ViaBody_List viaBody + } + + // [20.43 ] + type record Warning { + FieldName fieldName (WARNING_E) , + WarningValue_List warningValue + } + + // [20.44 RFC2616 14.47 RFC2617 1.2 ] + type record WwwAuthenticate { + FieldName fieldName (WWW_AUTHENTICATE_E) , + Challenge challenge + } + + } // end group CommonHeaderFieldTypes + group RFC3262HeaderFieldTypes { + // [3262/7.1 ] + type record RSeq { + FieldName fieldName (RSEQ_E) , + integer responseNum + } + + // [3262/7.2 ] + type record RAck { + FieldName fieldName (RACK_E) , + integer responseNum, + integer seqNumber, + charstring method + } + + } // end group RFC3262HeaderFieldTypes + + group RFC3265HeaderFieldTypes { + // [3265/7.2 ] + type record AllowEvents { + FieldName fieldName (ALLOW_EVENTS_E) , + EventType_List eventTypes + } + + type set of EventType EventType_List; + type charstring EventType; + + // [3265/7.2 ] + type record Event { + FieldName fieldName (EVENT_E) , + EventType eventType, + SemicolonParam_List eventParams optional + } + + // [3265/7.2 ] + type record SubscriptionState { + FieldName fieldName (SUBSCRIPTION_STATE_E) , + SubState subState, + SemicolonParam_List substateParams optional + } + + type charstring SubState; + + } // end group RFC3265HeaderFieldTypes + + group RFC3313HeaderFieldTypes { + // [3313/5 ] + type record PMediaAuthorization { + FieldName fieldName (P_MEDIA_AUTHORIZATION_E) , + PMediaAuthorization_List pMediaAuthorizations + } + + type charstring PMediaAuthValue; + // HEXDIG "0"-"9", "A"-"F" + type record of PMediaAuthValue PMediaAuthorization_List; + + + } // end group RFC3265HeaderFieldTypes + + group RFC3323HeaderFieldTypes { + // [3323 ] + type record Privacy { + FieldName fieldName (PRIVACY_E) , + PrivacyValue_List privValueList + } + + } // end group RFC3323HeaderFieldTypes + + group RFC3325HeaderFieldTypes { + // [3325 ] + type record PAssertedID { + FieldName fieldName (P_ASSERTED_ID_E) , + PAssertedIDValue_List pAssertedIDValueList + } + + // [3325 ] + type record PPreferredID { + FieldName fieldName (P_PREFERRED_ID_E) , + PPreferredIDValue_List pPreferredIDValueList + } + // draft-drage-sipping-service-identification-01 (July 2007) + type record PPreferredService { + FieldName fieldName (P_PREFERRED_SERVICE_E) , + charstring serviceId + } + + + } // end group RFC3325HeaderFieldTypes + + group RFC3326HeaderFieldTypes { + // [3326 ] + type record of ReasonValue ReasonValues; + + type record ReasonValue { + charstring token, + SemicolonParam_List reasonParams optional + } + + type record Reason { + FieldName fieldName (REASON_E) , + ReasonValues reasonValues + } + + } // end group RFC3326HeaderFieldTypes + + group RFC3327HeaderFieldTypes { + // [3327 ] + type record Path { + FieldName fieldName (PATH_E) , + PathValues pathValues + } + + type record of PathValue PathValues; + + type record PathValue { + NameAddr nameAddr, + SemicolonParam_List rrParam optional + } + + } // end group RFC3515HeaderFieldTypes + + + group RFC4488HeaderFieldTypes { + // [4488 ] + type record ReferSub { + FieldName fieldName (REFER_SUB_E) , + boolean referSubValue, + SemicolonParam_List referSubParams optional + } + + } // end group RFC4488HeaderFieldTypes + + group RFC3329HeaderFieldTypes { + // [RFC3329/2.2 ] + type record SecurityMechanism { + charstring mechName, + SemicolonParam_List mechParams optional + } + + type set of SecurityMechanism SecurityMechanism_List; + + type record SecurityClient { + FieldName fieldName (SECURITY_CLIENT_E) , + SecurityMechanism_List securityMech + } + + type record SecurityServer { + FieldName fieldName (SECURITY_SERVER_E) , + SecurityMechanism_List securityMech + } + + type record SecurityVerify { + FieldName fieldName (SECURITY_VERIFY_E) , + SecurityMechanism_List securityMech + } + + } // end group RFC3329HeaderFieldTypes + + group RFC3455HeaderFieldTypes { + type record of NameAddrParam NameAddrParam_List; + + type record NameAddrParam { + NameAddr nameAddr, + SemicolonParam_List genericParams optional + } + // [3455/5.1 ] + type record PAssociatedURI { + FieldName fieldName (P_ASSOCIATED_URI_E) , + NameAddrParam_List nameAddrList + } + // [3455/5.2 ] + type record PCalledPartyID { + FieldName fieldName (P_CALLED_PARTY_E) , + NameAddrParam nameAddParams + } + + type record of VnetworkSpec VnetworkSpec_List; + + type record VnetworkSpec { + charstring vNetworkSpecToken, + SemicolonParam_List genericParams optional + } + + // [3455/5.3 ] + type record PVisitedNetworkID { + FieldName fieldName (P_VISITED_NETWORK_E) , + VnetworkSpec_List vNetWorkSpec + } + + // [3455/5.4 ] + type record PAccessNetworkInfo { + FieldName fieldName (P_ACCESS_NETWORK_INFO_E) , + charstring accessType, + SemicolonParam_List genericParams optional + } + + // [3455/5.5 ] + type record PChargingFunctionAddresses { + FieldName fieldName (P_CHARGING_FUNCTION_ADDRESSES_E) , + SemicolonParam_List chargeAddrParams optional + } + + // [3455/5.6 ] + type record PChargingVector { + FieldName fieldName (P_CHARGING_VECTOR_E) , + charstring icidValue, + SemicolonParam_List chargeParams optional + } + + } // end group RFC33455HeaderFieldTypes + + group RFC3515HeaderFieldTypes { + // [3515 ] + type record ReferTo { + FieldName fieldName (REFER_TO_E) , + NameAddr nameAddr, + SemicolonParam_List referToParams optional + } + + } // end group RFC3515HeaderFieldTypes + + group RFC3608HeaderFieldTypes { + // [3608 ] + type record ServiceRoute { + FieldName fieldName (SERVICE_ROUTE_E) , + RouteBody_List routeBody + } + + } // end group RFC33608HeaderFieldTypes + + + group RFC3841HeaderFieldTypes { + // [3841 ] + type record AcceptContact { + FieldName fieldName (ACCEPT_CONTACT_E) , + AcRcValue_List acValues + } + + type set of AcRcValue AcRcValue_List; + + type record AcRcValue { + charstring wildcard (c_WILDCARD) , + SemicolonParam_List acRcParams optional + } + // [RFC 3841 ] + type charstring Directive; + type set of Directive Directive_List; + type record RequestDisposition { + FieldName fieldName (REQUEST_DISPOSITION_E) , + Directive_List directives + } + + + } // end group RFC3841HeaderFieldTypes + + group RFC3891HeaderFieldTypes { + // [3891 ] + type record Replaces { + FieldName fieldName (REPLACES_E) , + CallidString callid, + SemicolonParam_List replacesParams optional + } + + } // end group RFC3891HeaderFieldTypes + + group RFC3892HeaderFieldTypes { + // [3892 ] + type record ReferredBy { + FieldName fieldName (REFERRED_BY_E) , + NameAddr nameAddr, + SemicolonParam_List referredbyIdParams optional + } + + } // end group RFC3892HeaderFieldTypes + + group RFC4028HeaderFieldTypes { + // [4028 ] + type record MinSE { + FieldName fieldName (MIN_SE_E) , + DeltaSec deltaSec, + SemicolonParam_List minSeParam optional + } + // [4028 ] + type record SessionExpires { + FieldName fieldName (SESSION_EXPIRES_E) , + DeltaSec deltaSec, + SemicolonParam_List seParam optional + } + + } // end group RFC4028HeaderFieldTypes + + group RFC4244HeaderFieldTypes { + // [4244 ] + type record HistoryInfo { + FieldName fieldName (HISTORY_INFO_E) , + HistoryInfo_List historyInfoList + } + + type record of HistoryInfoEntry HistoryInfo_List; + + type record of integer IntegerList; + + type record HistoryInfoEntry { + NameAddr nameAddr, + IntegerList hiIndex optional, + SemicolonParam_List hiExtention optional + } + + type record of charstring StringList; + + } // end group RFC4244HeaderFieldTypes + + group RFC5009PEarlyMediaHeader { + // [5009 ] + type record PEarlyMedia { + FieldName fieldName (P_EARLY_MEDIA_E) , + EM_List em_param + } + type record of charstring EM_List; + + } // end group RFC5009PEarlyMediaHeader + + // http://tools.ietf.org/html/draft-johnston-sipping-cc-uui-07, expires 16.Aug.2009 + // Transporting User to User Call Control Information in SIP for ISDN Interworking + // type definition of SIP header mechanism + group UserToUser_PreliminaryRFCDraft { + type record UserToUser { + FieldName fieldName (USER_TO_USER_E) , + charstring uuiData length(256), + /*length limitation due to ISDN, max of allowed 128 hex digits are represented by 256 characters*/ + GenericParam uuiParam + } + + + } // end group UserToUser_PreliminaryRFCDraft + + type record PAssertedService { + FieldName fieldName (P_ASSERTED_SERVICE_E) , + PAssertedServiceValue pAssertedServiceValue + } + + group RFC6442GeolocationConveyance { + /* @sic R5-133151 update of header fields sic@ */ + // [6442 ] + type record Geolocation { + // RFC6442 clause 4.1 + FieldName fieldName (GEOLOCATION_E) , + SipUrl addrSpec, + SemicolonParam_List geolocParam optional + } + type enumerated GeolocationRoutingState { + GEOLOCATION_ROUTING_YES_E, GEOLOCATION_ROUTING_NO_E, GEOLOCATION_ROUTING_OTHER_E + } + type record GeolocationRouting { + // RFC6442 clause 4.2 + FieldName fieldName (GEOLOCATION_ROUTING_E) , + GeolocationRoutingState state, + GenericParam genericValue optional + } + + } // end group RFC6442GeolocationConveyance + + type charstring SessIdString length(32); + + type record SessionId { + FieldName fieldName (SESSION_ID_E) , + SessIdString sessid, + GenericParam sessidParam optional + } + + type charstring EntityTag; + + type record SIP_ETag { + FieldName fieldName (SIP_ETAG_E) , + EntityTag entityTag + } + + type record SIP_If_Match { + FieldName fieldName (SIP_IF_MATCH_E) , + EntityTag entityTag + } + + + } // end group HeaderFieldTypes + + group MessageHeaderTypes { + + // Message-Header for all SIP requests and responses [20 ] + type set MessageHeader { + Accept accept optional, + AcceptContact acceptContact optional, + AcceptEncoding acceptEncoding optional, + AcceptLanguage acceptLanguage optional, + AlertInfo alertInfo optional, + Allow allow optional, + AllowEvents allowEvents optional, + // 3265/7.2 + AuthenticationInfo authenticationInfo optional, + // only in responses + Authorization authorization optional, + // only in requests + CallId callId optional, + // optional only in Invalid test cases mandatory otherwise + CallInfo callInfo optional, + Contact contact optional, + // optional in response and all requests except INVITE where mandatory + ContentDisposition contentDisposition optional, + ContentEncoding contentEncoding optional, + ContentLanguage contentLanguage optional, + ContentLength contentLength optional, + // optional in responses and all requests except ACK where mandatory + ContentType contentType optional, + CSeq cSeq optional, + // optional only in Invalid test cases mandatory otherwise + Date date optional, + ErrorInfo errorInfo optional, + // only in responses + Event event optional, + // 3265/7.2 + Expires expires optional, + FeatureCaps featureCaps optional, // 6809 + From fromField, + Geolocation geolocation optional, + // 6442 + GeolocationRouting geolocationRouting optional, + // 6442 + // @sic R5-133151 update of header fields sic@ + HistoryInfo historyInfo optional, + // 4244 + InReplyTo inReplyTo optional, + // only in requests + MaxForwards maxForwards optional, + // mandatory in requests not required in responses! + MimeVersion mimeVersion optional, + MinExpires minExpires optional, + // only in responses + MinSE minSE optional, + // 4028 + Organization organization optional, + PAccessNetworkInfo pAccessNetworkInfo optional, + // 3455 + PAssertedID pAssertedID optional, + // 3325 + PAssertedService pAssertedService optional, + PAssociatedURI pAssociatedURI optional, + // 3455 + Path path optional, + // 3327 + PCalledPartyID pCalledPartyID optional, + // 3455 + PChargingFunctionAddresses pChargingFunctionAddresses optional, + // 3455 + PChargingVector pChargingVector optional, + // 3455 + PEarlyMedia pEarlyMedia optional, + // 5009 + PMediaAuthorization pMediaAuthorization optional, + // 3313 + PPreferredID pPreferredID optional, + // 3325 + PPreferredService pPreferredService optional, + // draft-drage-sipping-service-identification-01 (July 2007) + Priority priority optional, + // only in requests + Privacy privacy optional, + // 3323 + ProxyAuthenticate proxyAuthenticate optional, + // only in responses + ProxyAuthorization proxyAuthorization optional, + // only in requests + ProxyRequire proxyRequire optional, + // only in requests + PVisitedNetworkID pVisitedNetworkID optional, + // 3455 + RAck rAck optional, + // 3262/7.1 + RSeq rSeq optional, + // 3262/7.1 + Reason reason optional, + // 3326 + RecordRoute recordRoute optional, + RequestDisposition requestDisposition optional, + // 3841 + ReferredBy referredBy optional, + // 3892 - REFER method + ReferTo referTo optional, + // 3515 - REFER method + ReferSub referSub optional, + // 4488 - REFER method + Replaces replaces optional, + // 3891 + ReplyTo replyTo optional, + // optional in responses and INVITE requests + Require require optional, + RetryAfter retryAfter optional, + // only in responses + Route route optional, + // only in requests + SecurityClient securityClient optional, + // 3329 + SecurityServer securityServer optional, + // 3329 + SecurityVerify securityVerify optional, + // 3329 + Server server optional, + // only in responses + ServiceRoute serviceRoute optional, + // 3608 + SessionExpires sessionExpires optional, + // 4028 + SessionId sessionId optional, + SIP_ETag sipETag optional, + SIP_If_Match sipIfMatch optional, + Subject subject optional, + // only in requests + SubscriptionState subscriptionState optional, + // 3265/7.2 + Supported supported optional, + Timestamp timestamp optional, + To toField, + Unsupported unsupported optional, + // only in responses + UserToUser userToUser optional, + UserAgent userAgent optional, + Via via, + Warning warning optional, + // only in responses + WwwAuthenticate wwwAuthenticate optional, + // only in responses + UndefinedHeader_List undefinedHeader_List optional + } + + + } // end group MessageHeaderTypes + + group StartLineTypes { + // Request-Line [7.1 ] + type record RequestLine { + Method method, + SipUrl requestUri, + charstring sipVersion + } + + // Status-Line [7.2 ] + type record StatusLine { + charstring sipVersion, + integer statusCode, + charstring reasonPhrase + } + + + } // end group StartLineTypes + + + group otherTypes { + + type record SipUserProfile { + /** + * @desc integer for the userprofile identifier + */ + integer id, + /** + * @desc integer for Port number to exchange SIP messages + */ + integer currPort, + /** + * @desc charstring for IP address to exchange SIP messages + */ + charstring currIpaddr, + /** + * @desc integer for Port number to exchange SIP messages + */ + integer contactPort, + /** + * @desc charstring for IP address to exchange SIP messages + */ + charstring contactIpaddr, + /** + * @desc charstring for IP address used by the TS to exchange media streams + */ + charstring bearerIpaddr, + /** + * @desc charstring for identity of the tester local domain + */ + charstring homeDomain, + /** + * @desc charstring for identity of the tester local user + */ + charstring publUsername, + /** + * @desc charstring for RFC 2617 3.2.1 qop options: Quoted string of one or more tokens indicating the "quality of protection" values supported by the server. The value "auth" indicates authentication; the value "auth-int" indicates authentication with integrity protection. + */ + charstring qop, + /** + * @desc charstring for RFC 2617 3.2.2 username for authentication The name of user in the specified realm + */ + charstring privUsername, + /** + * @desc charstring for RFC 2617 3.2.2.2 passwd: A known shared secret, the password of user of the specified username + */ + charstring passwd, + /** + * @desc charstring for registrar domain for authentication and request line + */ + charstring registrarDomain + } + + + + } // end group otherTypes + + + } // end group Subtypes + + + + group MSGtypes { + + group RequestTypes { + // [7.1 ] + /** + * @desc generic type of a SIP request message + * @member statusLine contains a method name, a Request-URI, and the protocol version + * @member msgHeader include all possible header fields that are allowed to be present according to RFCs and other standards + * @member messageBody depends on the request method, includes e.g. SDP message. + * @member payload contains the whole message as it has been received in its text format + */ + type record Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } with { encode "SIPCodec"} + + // Note: the introduction of the following specific types is to enable better means for logging + // on the other side the generic type is useful for functions dealing with multiple SIP message types + type record REGISTER_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } with { encode "SIPCodec"} + + type record INVITE_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } with { encode "SIPCodec"} + + type record OPTIONS_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } with { encode "SIPCodec"} + + type record BYE_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } with { encode "SIPCodec"} + + type record CANCEL_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } with { encode "SIPCodec"} + + type record ACK_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } with { encode "SIPCodec"} + + // [3262/7.1 ] + type record PRACK_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } with { encode "SIPCodec"} + + // [3265/7.1 ] + type record NOTIFY_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } with { encode "SIPCodec"} + + // [3265/7.1 ] + type record SUBSCRIBE_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } with { encode "SIPCodec"} + + // [3903/11.1 ] + type record PUBLISH_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } with { encode "SIPCodec"} + + // [3311/7 ] + type record UPDATE_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } with { encode "SIPCodec"} + + type record REFER_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } with { encode "SIPCodec"} + + type record MESSAGE_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } with { encode "SIPCodec"} + + type record INFO_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } with { encode "SIPCodec"} + + type union RequestUnion { + REGISTER_Request Register, + INVITE_Request Invite, + OPTIONS_Request Options, + BYE_Request Bye, + CANCEL_Request Cancel, + ACK_Request Ack, + PRACK_Request Prack, + NOTIFY_Request Notify, + SUBSCRIBE_Request Subscribe, + PUBLISH_Request Publish, + UPDATE_Request Update, + REFER_Request Refer, + MESSAGE_Request Message + } with { encode "SIPCodec"} + + } // end group RequestTypes + + group ResponseTypes { + // [7.2 ] + /** + * @desc generic type of a SIP response message + * @member statusLine consists of the protocol version followed by a numeric Status-Code and its associated textual phrase + * @member msgHeader include all possible header fields that are allowed to be present according to RFCs and other standards + * @member messageBody depends on the response method, includes e.g. SDP message. + * @member payload contains the whole message as it has been received in its text format + */ + type record Response { + StatusLine statusLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } with { encode "SIPCodec"} + + } // end group ResponseTypes + + // This MSG type is defined for sending synctactic variations, ans syntactically + // erroneous messages, and receving messages failed parsing. + group SyntacticTypes { + type charstring Raw; + + } // end group SyntacticTypes + + + // This type is defined for particular SIP message body types like SDP + } // end group MSGTypes + + } // end group Types +} +with { + encode "LibSip V3"; +} // end module LibSip_TypesAndValues diff --git a/LTE_A_IWD_14wk37/Common/IMS_LibSip/LibSip_SimpleMsgSummaryTypes.ttcn b/LTE_A_IWD_14wk37/Common/IMS_LibSip/LibSip_SimpleMsgSummaryTypes.ttcn new file mode 100644 index 0000000..c874318 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS_LibSip/LibSip_SimpleMsgSummaryTypes.ttcn @@ -0,0 +1,66 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +/******************************************************************************/ + +/** + * @author STF 406, 471 + * @version $Id: LibSip_SimpleMsgSummaryTypes.ttcn 488 2010-11-08 10:17:19Z pintar $ + * @desc This module provides the SMS type system for SIP tests. + * This module is part of LibSipV3. +*/ +module LibSip_SimpleMsgSummaryTypes { + // RFC 3842 + group SMSConstants { + + // IMS ETSI name MWI application + const charstring c_imsEtsiMwiApplication := "application/simple-message-summary"; + + // msg_status line := "Message-Waiting" + const charstring c_messageWaiting := "Message-Waiting"; + + // msg_status line := "Message-Account" + const charstring c_messageAccount := "Message-Account"; + + // msg_summary line := "Voice-Message" + const charstring c_voiceMessage := "Voice-Message"; + + } + + group SMSTypes { + type record SimpleMsgSummary { + // Simple_message_summary + Msg_status_line msg_status_line, + Msg_account msg_account optional, + Msg_summary_line_list msg_summary_line_list optional, + Opt_msg_headers opt_msg_headers optional + } + + type record Msg_status_line { + charstring msg_type, + charstring msg_status + } + + type record Msg_account { + charstring msg_type_account, + charstring account_URI + } + + type set of Msg_summary_line Msg_summary_line_list; + + type record Msg_summary_line { + charstring msg_context_class, + charstring msgs, + charstring urgent_msgs optional + } + + type set of charstring Opt_msg_headers; + + + // type integer msgcount length(1); //msgs and urgent_msgs can be dividet into subtypes + } +} diff --git a/LTE_A_IWD_14wk37/Common/IMS_XSD/AlternativeService.xsd b/LTE_A_IWD_14wk37/Common/IMS_XSD/AlternativeService.xsd new file mode 100644 index 0000000..7082225 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS_XSD/AlternativeService.xsd @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LTE_A_IWD_14wk37/Common/IMS_XSD/NoTargetNamespace.ttcn b/LTE_A_IWD_14wk37/Common/IMS_XSD/NoTargetNamespace.ttcn new file mode 100644 index 0000000..0293300 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS_XSD/NoTargetNamespace.ttcn @@ -0,0 +1,31 @@ +module NoTargetNamespace +{ + import from XSD all; + + type TIMS3GPP Ims_3gpp; + type XSD.String Type; + type XSD.String Action; + type record TIMS3GPP + { + XSD.Decimal version, + record length ( 1 .. infinity ) of XSD.String attr optional, + union + { + TAlternativeService alternative_service, + XSD.String service_info + } choice, + record of XSD.String elem_list + } + type record TAlternativeService + { + record length ( 1 .. infinity ) of XSD.String attr optional, + Type type_, + XSD.String reason, + record of XSD.String elem_list + } +} +with +{ + encode "XML"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'" +} diff --git a/LTE_A_IWD_14wk37/Common/IMS_XSD/RFC3680_reginfo.xsd b/LTE_A_IWD_14wk37/Common/IMS_XSD/RFC3680_reginfo.xsd new file mode 100644 index 0000000..9eef360 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS_XSD/RFC3680_reginfo.xsd @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LTE_A_IWD_14wk37/Common/IMS_XSD/RFC3863_pdif.xsd b/LTE_A_IWD_14wk37/Common/IMS_XSD/RFC3863_pdif.xsd new file mode 100644 index 0000000..81bcc2b --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS_XSD/RFC3863_pdif.xsd @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This attribute may be used on any element within an optional + PIDF extension to indicate that the corresponding element must + be understood by the PIDF processor if the enclosing optional + element is to be handled. + + + + \ No newline at end of file diff --git a/LTE_A_IWD_14wk37/Common/IMS_XSD/RFC4119_pdif_geopriv10.xsd b/LTE_A_IWD_14wk37/Common/IMS_XSD/RFC4119_pdif_geopriv10.xsd new file mode 100644 index 0000000..416845e --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS_XSD/RFC4119_pdif_geopriv10.xsd @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LTE_A_IWD_14wk37/Common/IMS_XSD/RFC4119_pdif_geopriv10_basicPolicy.xsd b/LTE_A_IWD_14wk37/Common/IMS_XSD/RFC4119_pdif_geopriv10_basicPolicy.xsd new file mode 100644 index 0000000..bb9c622 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS_XSD/RFC4119_pdif_geopriv10_basicPolicy.xsd @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LTE_A_IWD_14wk37/Common/IMS_XSD/RFC5628_gruuinfo.xsd b/LTE_A_IWD_14wk37/Common/IMS_XSD/RFC5628_gruuinfo.xsd new file mode 100644 index 0000000..b57e0fe --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS_XSD/RFC5628_gruuinfo.xsd @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LTE_A_IWD_14wk37/Common/IMS_XSD/UsefulTtcn3Types.ttcn b/LTE_A_IWD_14wk37/Common/IMS_XSD/UsefulTtcn3Types.ttcn new file mode 100644 index 0000000..0bba1ad --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS_XSD/UsefulTtcn3Types.ttcn @@ -0,0 +1,70 @@ +module UsefulTtcn3Types { +// @sic R5s120890 sic@ + + type integer byte (-128 .. 127); + + type integer unsignedbyte (0 .. 255); + + type integer short (-32768 .. 32767); + + type integer unsignedshort (0 .. 65535); + + type integer long (-2147483648 .. 2147483647); + + type integer unsignedlong (0 .. 4294967295); + + type integer longlong; + + type integer unsignedlonglong; + + type float IEEE754float; + + type float IEEE754double; + + type float IEEE754extfloat; + + type float IEEE754extdouble; + + type charstring bmpstring; + + type charstring utf16string ; + + type charstring iso8859string; + + type record IDLfixed + { + unsignedshort digits, + short scale, + charstring value_ + }; + + /* + type charstring char length (1); + + NOTE 1: The name of this useful type is the same as the TTCN-3 keyword used to denote + charstring values in the quadraple form. In general it is disallowed to use TTCN-3 keywords as + identifiers. The "char" useful type is a solitary exception and allowed only for backward compatibility + with previous versions of the TTCN-3 standard. (except Titan doesn't) + + NOTE 2: The special string "8 bit" defined in clause 28.2.3 may be used with this type to specify a given encoding + for its values. Also, other properties of the base type can be changed by using attribute mechanisms. + */ + + type charstring uchar length (1); + + /* + NOTE: Special strings defined in clause 28.2.3 except "8 bit" may be used with this type to specify a given + encoding for its values. Also, other properties of the base type can be changed by using attribute + mechanisms. + */ + + type bitstring bit length (1); + + type hexstring hex length (1); + + type octetstring octet length (1); + +} +with { +encode "XML"; +} diff --git a/LTE_A_IWD_14wk37/Common/IMS_XSD/XSD.ttcn b/LTE_A_IWD_14wk37/Common/IMS_XSD/XSD.ttcn new file mode 100644 index 0000000..0143e56 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS_XSD/XSD.ttcn @@ -0,0 +1,162 @@ +// +// +// +module XSD { + +import from UsefulTtcn3Types all; +// @sic R5s120890 sic@ +//These constants are used in the XSD date/time type definitions +const charstring + dash := "-", + cln := ":", + year := "(0(0(0[1-9]|[1-9][0-9])|[1-9][0-9][0-9])|[1-9][0-9][0-9][0-9])", + yearExpansion := "(-([1-9][0-9]#(0,))#(,1))#(,1)", + month := "(0[1-9]|1[0-2])", + dayOfMonth := "(0[1-9]|[12][0-9]|3[01])", + hour := "([01][0-9]|2[0-3])", + minute := "([0-5][0-9])", + second := "([0-5][0-9])", + sFraction := "(.[0-9]#(1,))#(,1)", + endOfDayExt := "24:00:00(.0#(1,))#(,1)", + nums := "[0-9]#(1,)", + ZorTimeZoneExt := "(Z|[+-]((0[0-9]|1[0-3]):[0-5][0-9]|14:00))#(,1)", + durTime := "(T[0-9]#(1,)"& + "(H([0-9]#(1,)(M([0-9]#(1,)(S|.[0-9]#(1,)S))#(,1)|.[0-9]#(1,)S|S))#(,1)|"& + "M([0-9]#(1,)(S|.[0-9]#(1,)S)|.[0-9]#(1,)M)#(,1)|"& + "S|"& + ".[0-9]#(1,)S))"; + +//anySimpleType + +type XMLCompatibleString AnySimpleType; + +//anyType; + +type record AnyType +{ + record of String attr, + record of String elem_list +}; +// String types + +type XMLCompatibleString String; + +type XMLStringWithNoCRLFHT NormalizedString; + +type NormalizedString Token; + +type XMLStringWithNoWhitespace Name; + +type XMLStringWithNoWhitespace NMTOKEN; + +type Name NCName; + +type NCName ID; + +type NCName IDREF; + +type NCName ENTITY; + +type octetstring HexBinary; + +type octetstring Base64Binary; + +type XMLStringWithNoCRLFHT AnyURI; + +type charstring Language (pattern "[a-zA-Z]#(1,8)(-\w#(1,8))#(0,)"); +// Integer types + +type integer Integer; + +type integer PositiveInteger (1 .. infinity); + +type integer NonPositiveInteger (-infinity .. 0); + +type integer NegativeInteger (-infinity .. -1); + +type integer NonNegativeInteger (0 .. infinity); + +type longlong Long; + +type unsignedlonglong UnsignedLong; + +type long Int; + +type unsignedlong UnsignedInt; + +type short Short; + +type unsignedshort UnsignedShort; + +type byte Byte; + +type unsignedbyte UnsignedByte; + +// Float types + +type float Decimal; + +type IEEE754float Float; + +type IEEE754double Double; + +// Time types + +type charstring Duration (pattern + "{dash}#(,1)P({nums}(Y({nums}(M({nums}D{durTime}#(,1)|{durTime}#(,1))|D{durTime}#(,1))|" & + "{durTime}#(,1))|M({nums}D{durTime}#(,1)|{durTime}#(,1))|D{durTime}#(,1))|{durTime})"); + +type charstring DateTime (pattern + "{yearExpansion}{year}{dash}{month}{dash}{dayOfMonth}T({hour}{cln}{minute}{cln}{second}" & + "{sFraction}|{endOfDayExt}){ZorTimeZoneExt}" ); + +type charstring Time (pattern + "({hour}{cln}{minute}{cln}{second}{sFraction}|{endOfDayExt}){ZorTimeZoneExt}" ); + +type charstring Date (pattern + "{yearExpansion}{year}{dash}{month}{dash}{dayOfMonth}{ZorTimeZoneExt}" ); + +type charstring GYearMonth (pattern + "{yearExpansion}{year}{dash}{month}{ZorTimeZoneExt}" ); + +type charstring GYear (pattern + "{yearExpansion}{year}{ZorTimeZoneExt}" ); + +type charstring GMonthDay (pattern + "{dash}{dash}{month}{dash}{dayOfMonth}{ZorTimeZoneExt}" ); + +type charstring GDay (pattern + "{dash}{dash}{dash}{dayOfMonth}{ZorTimeZoneExt}" ); + +type charstring GMonth (pattern + "{dash}{dash}{month}{ZorTimeZoneExt}" ); + +// Sequence types + +type record of NMTOKEN NMTOKENS; + +type record of IDREF IDREFS; + +type record of ENTITY ENTITIES; + +type record QName +{ + AnyURI uri optional, + NCName name +}; + +// Boolean type + +type boolean Boolean; + +//TTCN-3 type definitions supporting the mapping of W3C XML Schema built-in datatypes + +type charstring XMLCompatibleString; + +type charstring XMLStringWithNoWhitespace; +type charstring XMLStringWithNoCRLFHT; + +} +with{ +encode "XML" +} diff --git a/LTE_A_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_conference_info.ttcn b/LTE_A_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_conference_info.ttcn new file mode 100644 index 0000000..712d81c --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_conference_info.ttcn @@ -0,0 +1,228 @@ +module urn_ietf_params_xml_ns_conference_info +{ + import from XSD all; + type Conference_type Conference_info; + + type record Conference_type + { + XSD.AnyURI entity, + State_type state optional, + XSD.UnsignedInt version optional, + record length ( 1 .. infinity ) of XSD.String attr optional, + Conference_description_type conference_description optional, + Host_type host_info optional, + Conference_state_type conference_state optional, + Users_type users optional, + Uris_type sidebars_by_ref optional, + Sidebars_by_val_type sidebars_by_val optional, + record of XSD.String elem_list + } + + type enumerated State_type + { + deleted, + full, + partial + } + + type record Conference_description_type + { + record length ( 1 .. infinity ) of XSD.String attr optional, + XSD.String display_text optional, + XSD.String subject optional, + XSD.String free_text optional, + Keywords_type keywords optional, + Uris_type conf_uris optional, + Uris_type service_uris optional, + XSD.UnsignedInt maximum_user_count optional, + Conference_media_type available_media optional, + record of XSD.String elem_list + } + + type record Host_type + { + record length ( 1 .. infinity ) of XSD.String attr optional, + XSD.String display_text optional, + XSD.AnyURI web_page optional, + Uris_type uris optional, + record of XSD.String elem_list + } + + type record Conference_state_type + { + record length ( 1 .. infinity ) of XSD.String attr optional, + XSD.UnsignedInt user_count optional, + XSD.Boolean active optional, + XSD.Boolean locked optional, + record of XSD.String elem_list + } + + type record Conference_media_type + { + record length ( 1 .. infinity ) of XSD.String attr optional, + record length (1 .. infinity) of Conference_medium_type entry_list + } + + type record Conference_medium_type + { + XSD.String label_, + record length ( 1 .. infinity ) of XSD.String attr optional, + XSD.String display_text optional, + XSD.String type_, + Media_status_type status optional, + record of XSD.String elem_list + } + + type record Uris_type + { + State_type state optional, + record length ( 1 .. infinity ) of XSD.String attr optional, + record length (1 .. infinity) of Uri_type entry_list + } + + type record Uri_type + { + record length ( 1 .. infinity ) of XSD.String attr optional, + XSD.AnyURI uri, + XSD.String display_text optional, + XSD.String purpose optional, + Execution_type modified optional, + record of XSD.String elem_list + } + + type record of XSD.String Keywords_type; + + type record Users_type + { + State_type state optional, + record length ( 1 .. infinity ) of XSD.String attr optional, + record of User_type user_list, + record of XSD.String elem_list + } + + type record User_type + { + XSD.AnyURI entity optional, + State_type state optional, + record length ( 1 .. infinity ) of XSD.String attr optional, + XSD.String display_text optional, + Uris_type associated_aors optional, + User_roles_type roles optional, + User_languages_type languages optional, + XSD.AnyURI cascaded_focus optional, + record of Endpoint_type endpoint_list, + record of XSD.String elem_list + } + + type record User_roles_type + { + record length ( 1 .. infinity ) of XSD.String attr optional, + record length (1 .. infinity) of XSD.String entry_list + } + + type record of XSD.Language User_languages_type; + + type record Endpoint_type + { + XSD.String entity optional, + State_type state optional, + record length ( 1 .. infinity ) of XSD.String attr optional, + XSD.String display_text optional, + Execution_type referred optional, + Endpoint_status_type status optional, + Joining_type joining_method optional, + Execution_type joining_info optional, + Disconnection_type disconnection_method optional, + Execution_type disconnection_info optional, + record of Media_type media_list, + Call_type call_info optional, + record of XSD.String elem_list + } + + type enumerated Endpoint_status_type + { + alerting, + connected, + dialing_in, + dialing_out, + disconnected, + disconnecting, + muted_via_focus, + on_hold, + pending + } + + type enumerated Joining_type + { + dialed_in, + dialed_out, + focus_owner + } + + type enumerated Disconnection_type + { + booted, + busy, + departed, + failed + } + + type record Execution_type + { + record length ( 1 .. infinity ) of XSD.String attr optional, + XSD.DateTime when optional, + XSD.String reason optional, + XSD.AnyURI by optional + } + + type record Call_type + { + record length ( 1 .. infinity ) of XSD.String attr optional, + union + { + Sip_dialog_id_type sip, + record of XSD.String elem_list + } choice + } + + type record Sip_dialog_id_type + { + record length ( 1 .. infinity ) of XSD.String attr optional, + XSD.String display_text optional, + XSD.String call_id, + XSD.String from_tag, + XSD.String to_tag, + record of XSD.String elem_list + } + + type record Media_type + { + XSD.String id, + record length ( 1 .. infinity ) of XSD.String attr optional, + XSD.String display_text optional, + XSD.String type_ optional, + XSD.String label_ optional, + XSD.String src_id optional, + Media_status_type status optional, + record of XSD.String elem_list + } + + type enumerated Media_status_type + { + inactive, + recvonly, + sendonly, + sendrecv + } + + type record Sidebars_by_val_type + { + State_type state optional, + record length ( 1 .. infinity ) of XSD.String attr optional, + record of Conference_type entry_list + } +} +with +{ + encode "XML"; +} diff --git a/LTE_A_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_gruuinfo.ttcn b/LTE_A_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_gruuinfo.ttcn new file mode 100644 index 0000000..775fa89 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_gruuinfo.ttcn @@ -0,0 +1,26 @@ +module urn_ietf_params_xml_ns_gruuinfo { + + +import from XSD all; + + +type record PubGruu +{ + XSD.AnyURI uri +}; + + +type record TempGruu +{ + XSD.UnsignedLong first_cseq, + XSD.AnyURI uri +}; + + +type PubGruu Pub_gruu; + + +type TempGruu Temp_gruu; + + +} diff --git a/LTE_A_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_pidf.ttcn b/LTE_A_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_pidf.ttcn new file mode 100644 index 0000000..ea015b4 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_pidf.ttcn @@ -0,0 +1,62 @@ +module urn_ietf_params_xml_ns_pidf +{ + import from XSD all; + type Presence_1 Presence; + + type XSD.Boolean MustUnderstand; + + type record Presence_1 + { + XSD.AnyURI entity, + record of Tuple tuple_list, + record of XSD.String note_list, + record of XSD.String elem_list + }; + + type record Tuple + { + XSD.ID id, + Status status, + record of XSD.String elem_list, + Contact contact optional, + record of XSD.String note_list, + XSD.DateTime timestamp optional + }; + + type record Status + { + Basic basic optional, + record of XSD.String elem_list + }; + + type enumerated Basic + { + closed, + open + }; + + type record Contact + { + Qvalue priority optional, + XSD.AnyURI base + }; + + type record Note + { + union + { + XSD.Language language_, + enumerated + { + x + } alt_ + } lang optional, + XSD.String base + }; + + type XSD.Decimal Qvalue; +} +with +{ + encode "XML"; +} diff --git a/LTE_A_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn b/LTE_A_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn new file mode 100644 index 0000000..404cbfc --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn @@ -0,0 +1,45 @@ +module urn_ietf_params_xml_ns_pidf_geopriv10 +{ + import from XSD all; + import from urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy all; +// import from urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy language "XSD" all; + // import from http_www_w3_org_XML_1998_namespace language "XSD" all; + type Geopriv_1 Geopriv; + + type record Geopriv_1 + { + LocInfoType location_info, + urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.LocPolicyType usage_rules, + XSD.String method optional, + LocProvidedBy provided_by optional, + record of XSD.String elem_list + }; + + type record LocInfoType + { + record of XSD.String elem_list + }; + + type record LocMethod + { + union + { + XSD.Language language_, + enumerated + { + x + } alt_ + } lang optional, + XSD.String base + }; + + type record LocProvidedBy + { + record length (1 .. infinity) of XSD.String elem_list + }; + +} +with +{ + encode "XML"; +} diff --git a/LTE_A_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn b/LTE_A_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn new file mode 100644 index 0000000..9d18fa5 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn @@ -0,0 +1,31 @@ +module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy +{ + import from XSD all; + // import from http_www_w3_org_XML_1998_namespace language "XSD" all; + type record LocPolicyType + { + XSD.Boolean retransmission_allowed optional, + XSD.DateTime retention_expiry optional, + XSD.AnyURI external_ruleset optional, + XSD.String note_well optional, + record of XSD.String elem_list + }; + + type record Notewell + { + union + { + XSD.Language language_, + enumerated + { + x + } alt_ + } lang optional, + XSD.String base + }; + +} +with +{ + encode "XML"; +} diff --git a/LTE_A_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn b/LTE_A_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn new file mode 100644 index 0000000..d7bb8b3 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn @@ -0,0 +1,30 @@ +module urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc +{ + import from XSD all; + type record CivicAddress + { + XSD.String country optional, + XSD.String a1 optional, + XSD.String a2 optional, + XSD.String a3 optional, + XSD.String a4 optional, + XSD.String a5 optional, + XSD.String a6 optional, + XSD.String pRD optional, + XSD.String pOD optional, + XSD.String sTS optional, + XSD.String hNO optional, + XSD.String hNS optional, + XSD.String lMK optional, + XSD.String lOC optional, + XSD.String fLR optional, + XSD.String nAM optional, + XSD.String pC optional, + record of XSD.String elem_list + }; + +} +with +{ + encode "XML"; +} diff --git a/LTE_A_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_reginfo.ttcn b/LTE_A_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_reginfo.ttcn new file mode 100644 index 0000000..b562210 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS_XSD/urn_ietf_params_xml_ns_reginfo.ttcn @@ -0,0 +1,74 @@ +module urn_ietf_params_xml_ns_reginfo +{ + import from XSD all; + type record Reginfo + { + enumerated + { + full, + partial + } state, + XSD.NonNegativeInteger version, + record of Registration registration_list, + record of XSD.String elem_list + }; + + type record Registration + { + XSD.AnyURI aor, + XSD.String id, + enumerated + { + active, + init, + terminated + } state, + record of Contact contact_list, + record of XSD.String elem_list + }; + + type record Contact + { + XSD.String callid optional, + XSD.UnsignedLong cseq optional, + XSD.UnsignedLong duration_registered optional, + enumerated + { + created, + deactivated, + expired, + probation, + refreshed, + registered, + rejected, + shortened, + unregistered + } event, + XSD.UnsignedLong expires optional, + XSD.String id, + XSD.String q optional, + XSD.UnsignedLong retry_after optional, + enumerated + { + active, + terminated + } state, + XSD.AnyURI uri, + record + { + XSD.String base + } display_name optional, + record of record + { + XSD.String name, + XSD.String base + } unknown_param_list, + record of XSD.String elem_list + }; + + } +with +{ + encode "XML"; +} + diff --git a/LTE_A_IWD_14wk37/Common/IMS_XSD/xml.xsd b/LTE_A_IWD_14wk37/Common/IMS_XSD/xml.xsd new file mode 100644 index 0000000..3e391d7 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IMS_XSD/xml.xsd @@ -0,0 +1,117 @@ + + + + + + + See http://www.w3.org/XML/1998/namespace.html and + http://www.w3.org/TR/REC-xml for information about this namespace. + + This schema document describes the XML namespace, in a form + suitable for import by other schema documents. + + Note that local names in this namespace are intended to be defined + only by the World Wide Web Consortium or its subgroups. The + following names are currently defined in this namespace and should + not be used with conflicting semantics by any Working Group, + specification, or document instance: + + base (as an attribute name): denotes an attribute whose value + provides a URI to be used as the base for interpreting any + relative URIs in the scope of the element on which it + appears; its value is inherited. This name is reserved + by virtue of its definition in the XML Base specification. + + lang (as an attribute name): denotes an attribute whose value + is a language code for the natural language of the content of + any element; its value is inherited. This name is reserved + by virtue of its definition in the XML specification. + + space (as an attribute name): denotes an attribute whose + value is a keyword indicating what whitespace processing + discipline is intended for the content of the element; its + value is inherited. This name is reserved by virtue of its + definition in the XML specification. + + Father (in any context at all): denotes Jon Bosak, the chair of + the original XML Working Group. This name is reserved by + the following decision of the W3C XML Plenary and + XML Coordination groups: + + In appreciation for his vision, leadership and dedication + the W3C XML Plenary on this 10th day of February, 2000 + reserves for Jon Bosak in perpetuity the XML name + xml:Father + + + + + This schema defines attributes and an attribute group + suitable for use by + schemas wishing to allow xml:base, xml:lang or xml:space attributes + on elements they define. + + To enable this, such a schema must import this schema + for the XML namespace, e.g. as follows: + <schema . . .> + . . . + <import namespace="http://www.w3.org/XML/1998/namespace" + schemaLocation="http://www.w3.org/2001/03/xml.xsd"/> + + Subsequently, qualified reference to any of the attributes + or the group defined below will have the desired effect, e.g. + + <type . . .> + . . . + <attributeGroup ref="xml:specialAttrs"/> + + will define a type which will schema-validate an instance + element with any of those attributes + + + + In keeping with the XML Schema WG's standard versioning + policy, this schema document will persist at + http://www.w3.org/2001/03/xml.xsd. + At the date of issue it can also be found at + http://www.w3.org/2001/xml.xsd. + The schema document at that URI may however change in the future, + in order to remain compatible with the latest version of XML Schema + itself. In other words, if the XML Schema namespace changes, the version + of this document at + http://www.w3.org/2001/xml.xsd will change + accordingly; the version at + http://www.w3.org/2001/03/xml.xsd will not change. + + + + + + In due course, we should install the relevant ISO 2- and 3-letter + codes as the enumerated possible values . . . + + + + + + + + + + + + + + + See http://www.w3.org/TR/xmlbase/ for + information about this attribute. + + + + + + + + + + diff --git a/LTE_A_IWD_14wk37/Common/IP_PTC/DHCPv4_Common.ttcn b/LTE_A_IWD_14wk37/Common/IP_PTC/DHCPv4_Common.ttcn new file mode 100644 index 0000000..f4e35df --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IP_PTC/DHCPv4_Common.ttcn @@ -0,0 +1,440 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-10-23 11:47:20 +0200 (Wed, 23 Oct 2013) $ +// $Rev: 9858 $ +/******************************************************************************/ + +module DHCPv4_Common { + import from CommonDefs all; + import from CommonIP all; + import from DHCPv4_TypeDefs all; + import from IMS_CommonParameters all; + + const charstring tsc_DNS_DomainName := px_IMS_HomeDomainName; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + + //============================================================================ + // receive templates: + //---------------------------------------------------------------------------- + + template (present) DHCPv4Option_MessageType cr_DHCPv4MessageType(template (present) DHCPv4_MsgType p_MsgType) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + code := tsc_DHCPv4Options_CODE_MessageType, + len := 1, + msgType := p_MsgType + }; + + template (present) DHCPMessagev4Options cr_DHCPMessagev4Options(template (present) DHCPv4_MsgType p_MsgType) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + subnetMask := *, + timeOffset := *, + router := *, + timeServer := *, + nameServer := *, + domainNameServer := *, + logServer := *, + cookieServer := *, + lprServer := *, + impressServer := *, + rlocserv := *, + hostName := *, + bootFileSize := *, + meritDumpFile := *, + domainName := *, + swapServer := *, + rootPath := *, + extensions_path := *, + ip_forwarding := *, + nonLocalSourceRouting := *, + policyFilter := *, + maximumDatagramReassemblySize := *, + default_ip_ttl := *, + pathMTU_AgingTimeout := *, + pathMTU_PlateauTable := *, + interfaceMTU := *, + allSubnetsLocal := *, + broadcastAddress := *, + performMaskDiscovery := *, + maskSupplier := *, + performRouterDiscovery := *, + routerSolicitationAddress := *, + staticRoute := *, + trailerEncapsulation := *, + arpCacheTimeout := *, + ethernetEncapsulation := *, + tcpDefaultTTL := *, + tcpKeepAliveInterval := *, + tcpKeepAliveGarbage := *, + nisDomain := *, + nisServers := *, + ntpServers := *, + vendorSpecificInfo := *, + netbiosServers := *, + netbiosDDServers := *, + netbiosNodeType := *, + netbiosScope := *, + xWindowFont_server := *, + xWindowDisplayManagers := *, + requestedIPAddress := *, + ipAddressLeaseTime := *, + optionOverload := *, + messageType := cr_DHCPv4MessageType(p_MsgType), + serverIdentifier := *, + parameterRequestList := *, + message97 := *, + maxDHCPSize := *, + renewalT1 := *, + rebindingT2 := *, + classIdentifier := *, + clientIdentifier := *, + sipServers := *, + rapidCommit := * + }; + + template (present) DHCPv4Message cr_DHCPv4Request(template (present) DHCPv4_MsgType p_MsgType := ?, + template (present) O4_Type p_Ciaddr := ?, + template (present) O4_Type p_Yiaddr := ?, + template (present) O4_Type p_Siaddr := ?, + template (present) O4_Type p_Giaddr := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + op := tsc_OPCODE_BOOTREQUEST, + htype := ?, + hlen := ?, + hops := 0, + xid := ?, + secs := ?, + flags := ?, + ciaddr := p_Ciaddr, + yiaddr := p_Yiaddr, + siaddr := p_Siaddr, + giaddr := p_Giaddr, + chaddr := ?, + sname := ?, + file := ?, + magicCookie := tsc_DHCPv4_MagicCookie, // RFC 2131 clause 3 + options := cr_DHCPMessagev4Options(p_MsgType), + endOption := tsc_DHCPv4_EndOption, + padding := * + }; + + //============================================================================ + // send templates: + //---------------------------------------------------------------------------- + + template (value) DHCPv4Option_MessageType cs_DHCPv4MessageType(DHCPv4_MsgType p_MsgType) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + code := tsc_DHCPv4Options_CODE_MessageType, + len := 1, + msgType := p_MsgType + }; + + template (value) DHCPv4Option_ServerIdentifier cs_DHCPv4ServerIdentifier(O4_Type p_ServerAddress) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + code := tsc_DHCPv4Options_CODE_ServerIdentifier, + len := 4, + val := p_ServerAddress + }; + + template (value) DHCPv4Options_SIPServers cs_DHCPv4Options_SIPServer_DomainName(charstring p_PcscfDomainName) := + { /* acc. to RFC 3361 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + code := tsc_DHCPv4Options_CODE_SIPServers, + len := lengthof(p_PcscfDomainName) + 3, /* acc. to RFC 3361 cl. 3.1 when p_PcscfDomainName has N lables we have one length octet for each lable plus one terminating length octet with '0' + => as p_PcscfDomainName has N-1 "." separating the lables we get a length of (lengthof(p_PcscfDomainName) + 2) for the encoded p_PcscfDomainName + => together with the 'enc' field we have (lengthof(p_PcscfDomainName) + 3) */ + enc := '00'O, /* => Domain Name List acc. to RFC 3361 cl. 3.1 */ + domainNames := {p_PcscfDomainName}, + addressList := omit + }; + + template (value) DHCPv4Options_SIPServers cs_DHCPv4Options_SIPServer_IPAddr(O4_Type p_IPAddress) := + { /* acc. to RFC 3361 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + code := tsc_DHCPv4Options_CODE_SIPServers, + len := 5, /* one IPv4 address only */ + enc := '01'O, /* => Domain Name List acc. to RFC 3361 cl. 3.2 */ + domainNames := omit, + addressList := {p_IPAddress} + }; + + template (value) DHCPv4Option_DomainNameServerOption cs_DHCPv4Option_DomainNameServerOption(O4_Type p_DnsServerAddress) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + code := tsc_DHCPv4Options_CODE_DomainNameServerOption, + len := 4, /* one IPv4 address only */ + addresses := {p_DnsServerAddress} + }; + + template (value) DHCPv4Option_DomainName cs_DHCPv4Option_DomainName(charstring p_DnsDomainName) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + code := tsc_DHCPv4Options_CODE_DomainName, + len := lengthof(p_DnsDomainName), + val := p_DnsDomainName + }; + + template (value) DHCPv4Options_RapidCommit cs_DHCPv4ServerRapidCommit := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + code := tsc_DHCPv4Options_CODE_RapidCommit, + len := 0 + }; + + template (value) DHCPv4Option_IPAddressLeaseTime cs_DHCPv4LeaseTime := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + code := tsc_DHCPv4Options_CODE_IPAddressLeaseTime, + len := 4, + val := 86400 // one day + }; + + template (value) DHCPMessagev4Options cs_DHCPv4_Options(DHCPv4_MsgType p_MsgType, + template (omit) DHCPv4Option_ServerIdentifier p_ServerIdentifier := omit, + template (omit) DHCPv4Option_IPAddressLeaseTime p_LeaseTime := omit, + template (omit) DHCPv4Options_SIPServers p_SIPServer := omit, + template (omit) DHCPv4Option_DomainNameServerOption p_DomainNameServerOption := omit, + template (omit) DHCPv4Option_DomainName p_DomainName := omit, + template (omit) DHCPv4Options_RapidCommit p_RapidCommit := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + subnetMask := omit, + timeOffset := omit, + router := omit, + timeServer := omit, + nameServer := omit, + domainNameServer := p_DomainNameServerOption, + logServer := omit, + cookieServer := omit, + lprServer := omit, + impressServer := omit, + rlocserv := omit, + hostName := omit, + bootFileSize := omit, + meritDumpFile := omit, + domainName := p_DomainName, + swapServer := omit, + rootPath := omit, + extensions_path := omit, + ip_forwarding := omit, + nonLocalSourceRouting := omit, + policyFilter := omit, + maximumDatagramReassemblySize := omit, + default_ip_ttl := omit, + pathMTU_AgingTimeout := omit, + pathMTU_PlateauTable := omit, + interfaceMTU := omit, + allSubnetsLocal := omit, + broadcastAddress := omit, + performMaskDiscovery := omit, + maskSupplier := omit, + performRouterDiscovery := omit, + routerSolicitationAddress := omit, + staticRoute := omit, + trailerEncapsulation := omit, + arpCacheTimeout := omit, + ethernetEncapsulation := omit, + tcpDefaultTTL := omit, + tcpKeepAliveInterval := omit, + tcpKeepAliveGarbage := omit, + nisDomain := omit, + nisServers := omit, + ntpServers := omit, + vendorSpecificInfo := omit, + netbiosServers := omit, + netbiosDDServers := omit, + netbiosNodeType := omit, + netbiosScope := omit, + xWindowFont_server := omit, + xWindowDisplayManagers := omit, + requestedIPAddress := omit, + ipAddressLeaseTime := p_LeaseTime, + optionOverload := omit, + messageType := cs_DHCPv4MessageType(p_MsgType), + serverIdentifier := p_ServerIdentifier, + parameterRequestList := omit, + message97 := omit, + maxDHCPSize := omit, + renewalT1 := omit, + rebindingT2 := omit, + classIdentifier := omit, + clientIdentifier := omit, + sipServers := p_SIPServer, + rapidCommit := p_RapidCommit + }; + + template (value) DHCPv4Message cs_DHCPv4_Response(DHCPv4Message p_RequestMsg, + O4_Type p_Yiaddr, + template (value) DHCPMessagev4Options p_DHCPv4_Options) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + /* @sic R5-121779 sic@ */ + op := tsc_OPCODE_BOOTREPLY, + htype := p_RequestMsg.htype, + hlen := p_RequestMsg.hlen, + hops := 0, + xid := p_RequestMsg.xid, + secs := 0, + flags := p_RequestMsg.flags, + ciaddr := '00000000'O, + yiaddr := p_Yiaddr, // UE address + siaddr := '00000000'O, + giaddr := p_RequestMsg.giaddr, + chaddr := p_RequestMsg.chaddr, + sname := int2oct(0, 64), + file := int2oct(0, 128), + magicCookie := tsc_DHCPv4_MagicCookie, // RFC 2131 clause 3 + options := p_DHCPv4_Options, + endOption := tsc_DHCPv4_EndOption, + padding := omit + }; + + //**************************************************************************** + /* + * @desc check whether given option is contained in the requested options list + * @param p_ParameterRequestList + * @param p_OptionCode + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_DHCPv4_ParameterRequested(DHCPv4_ParameterRequestList p_ParameterRequestList, + DHCPv4Options_CODE p_OptionCode) return boolean + { + var integer i; + + for (i := 0; i < lengthof (p_ParameterRequestList); i := i + 1) { + if (p_ParameterRequestList[i] == p_OptionCode) { + return true; + } + } + return false; + } + + //**************************************************************************** + // Main functions + /* + * @desc Get the DHCPv4 response to be sent to the UE + * @param p_Request .. DHCP request + * @param p_ClientAddr .. IP address of client + * @param p_ServerAddr .. IP address of server + * @param p_PcscfAddr (default value: "") + * @param p_DnsServerAddr (default value: "") + * @param p_DomainName (default value: tsc_DNS_DomainName) + * @return template (omit) DHCPv4Message .. DHCP response, or omit in case of error + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_DHCPv4_Response(DHCPv4Message p_Request, + charstring p_ClientAddr, + charstring p_ServerAddr, + charstring p_PcscfAddr := "", + charstring p_DnsServerAddr := "", + charstring p_DomainName := tsc_DNS_DomainName) return template (omit) DHCPv4Message + { /* @sic R5-123740 change 1: 36.523-3 cl. 4.2.4.7 sic@ */ + var template (value) DHCPv4Option_ServerIdentifier v_ServerIdentifier := cs_DHCPv4ServerIdentifier(f_Convert_IPv4Addr2OctString(p_ServerAddr)); + var template (omit) DHCPv4Option_IPAddressLeaseTime v_LeaseTime := omit; + var template (omit) DHCPv4Options_SIPServers v_SIPServer := omit; + var template (omit) DHCPv4Option_DomainNameServerOption v_DomainNameServerOption := omit; + var template (omit) DHCPv4Option_DomainName v_DomainName := omit; + var template (omit) DHCPv4Options_RapidCommit v_RapidCommit := omit; + var DHCPv4_ParameterRequestList v_ParameterRequestList; + var DHCPv4_MsgType v_ResponseMsgType; + var O4_Type v_ExpectedCiaddr := '00000000'O; + + if (not match(p_Request, cr_DHCPv4Request)) { + f_ErrorLog(__FILE__, __LINE__, "Invalid DHCPv4 message"); + return omit; + } /* else: magicCookie is valid and there is a MessageType contained in the options */ + + select (p_Request.options.messageType.msgType) { + case (DHCPv4_MsgType_DISCOVER_E) { + if (ispresent(p_Request.options.rapidCommit)) { + v_ResponseMsgType := DHCPv4_MsgType_ACK_E; + v_RapidCommit := cs_DHCPv4ServerRapidCommit; + } else { + v_ResponseMsgType := DHCPv4_MsgType_OFFER_E; + } + v_LeaseTime := cs_DHCPv4LeaseTime; // mandatory for response to DISCOVER + } + case (DHCPv4_MsgType_REQUEST_E) { + v_ResponseMsgType := DHCPv4_MsgType_ACK_E; + v_LeaseTime := cs_DHCPv4LeaseTime; + } + case (DHCPv4_MsgType_INFORM_E) { + v_ResponseMsgType := DHCPv4_MsgType_ACK_E; + v_ExpectedCiaddr := f_Convert_IPv4Addr2OctString(p_ClientAddr); + } + case else { + f_ErrorLog(__FILE__, __LINE__, "Invalid DHCPv4 message"); + return omit; + } + } + // check values of ciaddr, yiaddr, siaddr, giaddr: + if (not match(p_Request, cr_DHCPv4Request(?, v_ExpectedCiaddr, '00000000'O, '00000000'O, '00000000'O))) { + f_ErrorLog(__FILE__, __LINE__, "Invalid Address in DHCP request"); + } + + if (ispresent(p_Request.options.parameterRequestList)) { + v_ParameterRequestList := p_Request.options.parameterRequestList.optionCodes; + + if (fl_DHCPv4_ParameterRequested(v_ParameterRequestList, tsc_DHCPv4Options_CODE_SIPServers)) { + if (p_PcscfAddr == "") { + v_SIPServer := cs_DHCPv4Options_SIPServer_IPAddr(f_Convert_IPv4Addr2OctString(p_ServerAddr)); // use common server address + } else if (f_IpAddressIsIPv4(p_PcscfAddr)) { + v_SIPServer := cs_DHCPv4Options_SIPServer_IPAddr(f_Convert_IPv4Addr2OctString(p_PcscfAddr)); // use p_PcscfAddr as P-CSCF IP address + } else { + v_SIPServer := cs_DHCPv4Options_SIPServer_DomainName(p_PcscfAddr); // use p_PcscfAddr as domain name + } + } + if (fl_DHCPv4_ParameterRequested(v_ParameterRequestList, tsc_DHCPv4Options_CODE_DomainNameServerOption)) { + if (p_DnsServerAddr == "") { + v_DomainNameServerOption := cs_DHCPv4Option_DomainNameServerOption(f_Convert_IPv4Addr2OctString(p_ServerAddr)); // use common server address + } else{ + v_DomainNameServerOption := cs_DHCPv4Option_DomainNameServerOption(f_Convert_IPv4Addr2OctString(p_DnsServerAddr)); + } + } + if (fl_DHCPv4_ParameterRequested(v_ParameterRequestList, tsc_DHCPv4Options_CODE_DomainName)) { + v_DomainName := cs_DHCPv4Option_DomainName(p_DomainName); + } + } + return cs_DHCPv4_Response(p_Request, + f_Convert_IPv4Addr2OctString(p_ClientAddr), + cs_DHCPv4_Options(v_ResponseMsgType, + v_ServerIdentifier, + v_LeaseTime, + v_SIPServer, + v_DomainNameServerOption, + v_DomainName, + v_RapidCommit)); + } + + + /* + * @desc Get encoded DHCPv4 response to be sent to the UE + * @param p_ReqData .. Encoded DHCP request sent by the UE + * @param p_ClientAddr .. IP address of client + * @param p_ServerAddr .. IP address of server + * @return octetstring .. encoded DHCP response, or ''O (empty string) in case of error + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_DHCPv4_GetEncodedResponse(octetstring p_ReqData, + charstring p_ClientAddr, + charstring p_ServerAddr) return octetstring + { /* @sic R5-121779: split of f_DHCP_GetResponse into f_DHCPv4_GetEncodedResponse and f_DHCPv4_Response sic@ */ + var bitstring v_DataBitstring := oct2bit(p_ReqData); + var DHCPv4Message v_Request; + var template (omit) DHCPv4Message v_Response := omit; + + // Decode incoming DHCP message + + if (decvalue(v_DataBitstring, v_Request) != 0) { + f_ErrorLog(__FILE__, __LINE__, "DHCP message cannot be decoded (skipped)"); + } + else { + v_Response := f_DHCPv4_Response(v_Request, p_ClientAddr, p_ServerAddr); + } + + if (isvalue(v_Response)) { + v_DataBitstring := encvalue(v_Response); + return bit2oct(v_DataBitstring); + } + return ''O; // Error + } + +} diff --git a/LTE_A_IWD_14wk37/Common/IP_PTC/DHCPv4_TypeDefs.ttcn b/LTE_A_IWD_14wk37/Common/IP_PTC/DHCPv4_TypeDefs.ttcn new file mode 100644 index 0000000..1831b57 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IP_PTC/DHCPv4_TypeDefs.ttcn @@ -0,0 +1,587 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-04-01 15:09:57 +0200 (Mon, 01 Apr 2013) $ +// $Rev: 8395 $ +/******************************************************************************/ + +module DHCPv4_TypeDefs { + + import from CommonDefs all; + + type record DHCPv4Message { // RFC 2131 + O1_Type op, + O1_Type htype, + UInt8_Type hlen, + UInt8_Type hops, + O4_Type xid, + UInt16_Type secs, + DHCPv4_FLAGS flags, + O4_Type ciaddr, + O4_Type yiaddr, + O4_Type siaddr, + O4_Type giaddr, + O16_Type chaddr, + octetstring sname length (64), + octetstring file length (128), + O4_Type magicCookie, // '63825363'O, RFC 2131 clause 3 + DHCPMessagev4Options options, // RFC 1533 + O1_Type endOption, // 0xFF RFC2131 clause 4.1 + octetstring padding optional + }; // DHCPMessage_v4 + + const O1_Type tsc_OPCODE_BOOTREQUEST := '01'O; + const O1_Type tsc_OPCODE_BOOTREPLY := '02'O; + const O4_Type tsc_DHCPv4_MagicCookie := '63825363'O; + const O1_Type tsc_DHCPv4_EndOption := 'FF'O; // RFC 2132 clause 3.2 + + type record DHCPv4_FLAGS { // RFC 2131 Figure 2 + B1_Type b, // Broadcast flag + B15_Type mbz // Must be ZERO + }; + + // Some secondary type used for DHCPv4 + type record of charstring DHCPv4_DomainNameList; // sequence of domain names + type record of O4_Type DHCPv4_AddressList; // List of IPv4 addresses + type record DHCPv4_AddressMask { + O4_Type addr, + O4_Type mask + }; + type record of DHCPv4_AddressMask DHCPv4_AddressMaskList; // List of {address, mask} + type record DHCPv4_DestinationRouter { + O4_Type destination, + O4_Type router + }; + type record of DHCPv4_DestinationRouter DHCPv4_DestinationRouterList; + type record of UInt16_Type ListUInt16_Type; // List of 16 bit unsigned integers + + type set DHCPMessagev4Options { + DHCPv4Option_SubnetMask subnetMask optional, // RFC 1533 clause 3.3 + DHCPv4Option_TimeOffset timeOffset optional, // clause 3.4 + DHCPv4Option_RouterOption router optional, // clause 3.5 + DHCPv4Option_TimeServerOption timeServer optional, // clause 3.6 + DHCPv4Option_NameServerOption nameServer optional, // clause 3.7 + DHCPv4Option_DomainNameServerOption domainNameServer optional, // clause 3.8 + DHCPv4Option_LogServerOption logServer optional, // clause 3.9 + DHCPv4Option_CookieServerOption cookieServer optional, // clause 3.10 + DHCPv4Option_LPRServerOption lprServer optional, // clause 3.11 + DHCPv4Option_ImpressServerOption impressServer optional, // clause 3.12 + DHCPv4Option_ResourceLocationServerOption rlocserv optional, // clause 3.13 + DHCPv4Option_HostNameOption hostName optional, // clause 3.14 + DHCPv4Option_BootFileSizeOption bootFileSize optional, // clause 3.15 + DHCPv4Option_MeritDumpFile meritDumpFile optional, // clause 3.16 + DHCPv4Option_DomainName domainName optional, // clause 3.17 + DHCPv4Option_SwapServer swapServer optional, // clause 3.18 + DHCPv4Option_RootPath rootPath optional, // clause 3.19 + DHCPv4Option_ExtensionsPath extensions_path optional, // clause 3.20 + DHCPv4Option_IP_Forwarding ip_forwarding optional, // clause 4.1 + DHCPv4Option_NonLocalSourceRouting nonLocalSourceRouting optional, // clause 4.2 + DHCPv4Option_PolicyFilterOption policyFilter optional, // clause 4.3 + DHCPv4Option_MaximumDatagramReassemblySize maximumDatagramReassemblySize optional, // clause 4.4 + DHCPv4Option_Default_IP_TTL default_ip_ttl optional, // clause 4.5 + DHCPv4Option_PathMTU_AgingTimeout pathMTU_AgingTimeout optional, // clause 4.6 + DHCPv4Option_PathMTU_PlateauTable pathMTU_PlateauTable optional, // clause 4.7 + DHCPv4Option_InterfaceMTU_Option interfaceMTU optional, // clause 5.1 + DHCPv4Option_AllSubnetsLocalOption allSubnetsLocal optional, // clause 5.2 + DHCPv4Option_BroadcastAddressOption broadcastAddress optional, // clause 5.3 + DHCPv4Option_PerformMaskDiscovery performMaskDiscovery optional, // clause 5.4 + DHCPv4Option_MaskSupplierOption maskSupplier optional, // clause 5.5 + DHCPv4Option_PerformRouterDiscoveryOption performRouterDiscovery optional, // clause 5.6 + DHCPv4Option_RouterSolicitationAddress routerSolicitationAddress optional, // clause 5.7 + DHCPv4Option_StaticRouteOption staticRoute optional, // clause 5.8 + DHCPv4Option_TrailerEncapsulation trailerEncapsulation optional, // clause 6.1 + DHCPv4Option_ARP_CacheTimeout arpCacheTimeout optional, // clause 6.2 + DHCPv4Option_EthernetEncapsulation ethernetEncapsulation optional, // clause 6.3 + DHCPv4Option_TCPDefaultTTL tcpDefaultTTL optional, // clause 7.1 + DHCPv4Option_TCPKeepaliveInterval tcpKeepAliveInterval optional, // clause 7.2 + DHCPv4Option_TCPKeepaliveGarbage tcpKeepAliveGarbage optional, // clause 7.3 + DHCPv4Option_NISDomain nisDomain optional, // clause 8.1 + DHCPv4Option_NISServers nisServers optional, // clause 8.2 + DHCPv4Option_NTPServers ntpServers optional, // clause 8.3 + DHCPv4Option_VendorSpecificInfo vendorSpecificInfo optional, // clause 8.4 + DHCPv4Option_NetBIOS_Servers netbiosServers optional, // clause 8.5 + DHCPv4Option_NetBIOS_DDServers netbiosDDServers optional, // clause 8.6 + DHCPv4Option_NetBIOS_NodeTypeOption netbiosNodeType optional, // clause 8.7 + DHCPv4Option_NetBIOS_ScopeOption netbiosScope optional, // clause 8.8 + DHCPv4Option_XWindowFontOption xWindowFont_server optional, // clause 8.9 + DHCPv4Option_XWindowDisplayManagers xWindowDisplayManagers optional, // clause 8.10 + DHCPv4Option_RequestedIPAddress requestedIPAddress optional, // clause 9.1 + DHCPv4Option_IPAddressLeaseTime ipAddressLeaseTime optional, // clause 9.2 + DHCPv4Option_OptionOverload optionOverload optional, // clause 9.3 + DHCPv4Option_MessageType messageType optional, // clause 9.4 + DHCPv4Option_ServerIdentifier serverIdentifier optional, // clause 9.5 + DHCPv4Option_ParameterRequestList parameterRequestList optional, // clause 9.6 + DHCPv4Option_Message97 message97 optional, // clause 9.7 + DHCPv4Option_MaxDHCPSize maxDHCPSize optional, // clause 9.8 + DHCPv4Option_RenewalT1Time renewalT1 optional, // clause 9.9 + DHCPv4Option_RebindingT2Time rebindingT2 optional, // clause 9.10 + DHCPv4Option_ClassIdentifier classIdentifier optional, // clause 9.11 + DHCPv4Option_ClientIdentifier clientIdentifier optional, // clause 9.12 + DHCPv4Options_SIPServers sipServers optional, // RFC 3361 + DHCPv4Options_RapidCommit rapidCommit optional // RFC 4039 clause 4 + }; + + type O1_Type DHCPv4Options_CODE; // RFC 1533 + + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_SubnetMask := '01'O; + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_TimeOffset := '02'O; + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_RouterOption := '03'O; + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_TimeServerOption := '04'O; + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_NameServerOption := '05'O; + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_DomainNameServerOption := '06'O; + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_LogServerOption := '07'O; + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_CookieServerOption := '08'O; + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_LPRServerOption := '09'O; + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_ImpressServerOption := '0A'O; // (10), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_ResourceLocationServerOption := '0B'O; // (11), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_HostNameOption := '0C'O;// (12), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_BootFileSizeOption := '0D'O;// (13), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_MeritDumpFile := '0E'O;// (14), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_DomainName := '0F'O; // (15), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_SwapServer := '10'O; // (16), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_RootPath := '11'O; // (17), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_ExtensionsPath := '12'O; // (18), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_IP_Forwarding := '13'O;// (19), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_NonLocalSourceRouting := '14'O;// (20), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_PolicyFilterOption := '15'O;// (21), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_MaximumDatagramReassemblySize := '16'O;// (22), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_Default_IP_TTL := '17'O; // (23), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_PathMTU_AgingTimeout:= '18'O;// (24), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_PathMTU_PlateauTable := '19'O;// (25), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_InterfaceMTU_Option := '1A'O; // (26), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_AllSubnetsLocalOption := '1B'O; // (27), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_BroadcastAddressOption := '1C'O;// (28), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_PerformMaskDiscovery := '1D'O; // (29), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_MaskSupplierOption := '1E'O; // (30), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_PerformRouterDiscovery := '1F'O; // (31), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_RouterSolicitationAddress:= '20'O; // (32), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_StaticRouteOption:= '21'O; // (33), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_TrailerEncapsulation := '22'O; // (34), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_ARP_CacheTimeout := '23'O; // (35), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_EthernetEncapsulation := '24'O; // (36), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_TCPDefaultTTL := '25'O; // (37), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_TCPKeepaliveInterval := '26'O; // (38), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_TCPKeepaliveGarbage := '27'O; // (39), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_NISDomain := '28'O; // (40), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_NISServers := '29'O; // (41), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_NTPServers := '2A'O; // (42), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_VendorSpecificInfo := '2B'O; // (43), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_NetBIOS_Servers := '2C'O; // (44), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_NetBIOS_DDServers := '2D'O; // (45), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_NetBIOS_NodeTypeOption := '2E'O; // (46), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_NetBIOS_ScopeOption := '2F'O; // (47), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_XWindowFontOption := '30'O; // (48), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_XWindowDisplayManagers := '31'O; // (49), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_RequestedIPAddress := '32'O; // (50), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_IPAddressLeaseTime := '33'O; // (51), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_OptionOverload := '34'O; // (52), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_MessageType := '35'O; // (53), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_ServerIdentifier := '36'O; // (54), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_ParameterRequestList := '37'O; // (55), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_Message97 := '38'O; // (56), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_MaxDHCPSize := '39'O; // (57), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_RenewalT1Time := '4A'O; // (58), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_RebindingT2Time := '4B'O; // (59), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_ClassIdentifier := '4C'O; // (60), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_ClientIdentifier := '4D'O; // (61), + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_SIPServers := '78'O; // (120) // RFC 3361 + const DHCPv4Options_CODE tsc_DHCPv4Options_CODE_RapidCommit := '80'O; // (128) // RFC 4039 clause 4 + + type record DHCPv4Option_SubnetMask { // clause 3.3 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_SubnetMask), + UInt8_Type len, // (4), + O4_Type val + }; + + type record DHCPv4Option_TimeOffset { // clause 3.4 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_TimeOffset), + UInt8_Type len, // (4), + UInt32_Type val + }; + + type record DHCPv4Option_RouterOption { // clause 3.5 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_RouterOption), + UInt8_Type len, + DHCPv4_AddressList addresses + }; + + type record DHCPv4Option_TimeServerOption { // clause 3.6 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_TimeServerOption), + UInt8_Type len , + DHCPv4_AddressList addresses + }; + + type record DHCPv4Option_NameServerOption { // clause 3.7 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_NameServerOption), + UInt8_Type len , + DHCPv4_AddressList addresses + }; + + type record DHCPv4Option_DomainNameServerOption { // clause 3.8 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_DomainNameServerOption), + UInt8_Type len, + DHCPv4_AddressList addresses + }; + + type record DHCPv4Option_LogServerOption { // clause 3.9 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_LogServerOption), + UInt8_Type len, + DHCPv4_AddressList addresses + }; + + type record DHCPv4Option_CookieServerOption { // clause 3.10 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_CookieServerOption), + UInt8_Type len, + DHCPv4_AddressList addresses + }; + + type record DHCPv4Option_LPRServerOption { // clause 3.11 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_LPRServerOption), + UInt8_Type len, + DHCPv4_AddressList addresses + }; + + type record DHCPv4Option_ImpressServerOption { // clause 3.12 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_ImpressServerOption), + UInt8_Type len, + DHCPv4_AddressList addresses + }; + + type record DHCPv4Option_ResourceLocationServerOption { // clause 3.13 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_ResourceLocationServerOption), + UInt8_Type len, + DHCPv4_AddressList addresses + }; + + type record DHCPv4Option_HostNameOption { // clause 3.14 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_HostNameOption), + UInt8_Type len, + charstring val + }; + + type record DHCPv4Option_BootFileSizeOption { // clause 3.15 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_BootFileSizeOption), + UInt8_Type len, + UInt16_Type val + }; + + type record DHCPv4Option_MeritDumpFile { // clause 3.16 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_MeritDumpFile), + UInt8_Type len, + charstring val + }; + + type record DHCPv4Option_DomainName { // clause 3.17 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_DomainName), + UInt8_Type len, + charstring val + }; + + type record DHCPv4Option_SwapServer { // clause 3.18 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_SwapServer), + UInt8_Type len, // (4), + O4_Type val + }; + + type record DHCPv4Option_RootPath { // clause 3.19 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_RootPath), + UInt8_Type len, + charstring val + }; + + type record DHCPv4Option_ExtensionsPath { // clause 3.20 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_ExtensionsPath), + UInt8_Type len, + charstring val + }; + + type record DHCPv4Option_IP_Forwarding { // clause 4.1 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_IP_Forwarding), + UInt8_Type len, // (1), + boolean val + }; + + type record DHCPv4Option_NonLocalSourceRouting { // clause 4.2 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_NonLocalSourceRouting), + UInt8_Type len, // (1), + boolean val + }; + + type record DHCPv4Option_PolicyFilterOption { // clause 4.3 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_PolicyFilterOption), + UInt8_Type len, + DHCPv4_AddressMaskList addressMasks + }; + + type record DHCPv4Option_MaximumDatagramReassemblySize { // clause 4.4 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_MaximumDatagramReassemblySize), + UInt8_Type len, // (2), + UInt16_Type val + }; + + type record DHCPv4Option_Default_IP_TTL { // clause 4.5 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_Default_IP_TTL), + UInt8_Type len, // (1), + UInt8_Type val + }; + + type record DHCPv4Option_PathMTU_AgingTimeout { // clause 4.6 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_PathMTU_AgingTimeout), + UInt8_Type len, // (4), + UInt32_Type val + }; + + type record DHCPv4Option_PathMTU_PlateauTable { // clause 4.7 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_PathMTU_PlateauTable), + UInt8_Type len, + ListUInt16_Type sizes + }; + + type record DHCPv4Option_InterfaceMTU_Option { // clause 5.1 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_InterfaceMTU_Option), + UInt8_Type len, // (2), + UInt16_Type val + }; + + type record DHCPv4Option_AllSubnetsLocalOption { // clause 5.2 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_AllSubnetsLocalOption), + UInt8_Type len, // (2), + boolean val + }; + + type record DHCPv4Option_BroadcastAddressOption { // clause 5.3 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_BroadcastAddressOption), + UInt8_Type len, // (4), + O4_Type val + }; + + type record DHCPv4Option_PerformMaskDiscovery { // clause 5.4 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_PerformMaskDiscovery), + UInt8_Type len, // (1), + boolean val + }; + + type record DHCPv4Option_MaskSupplierOption { // clause 5.5 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_MaskSupplierOption), + UInt8_Type len, // (1), + boolean val + }; + + type record DHCPv4Option_PerformRouterDiscoveryOption { // clause 5.6 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_PerformRouterDiscovery), + UInt8_Type len, // (1), + boolean val + }; + + type record DHCPv4Option_RouterSolicitationAddress { // clause 5.7 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_RouterSolicitationAddress), + UInt8_Type len, // (4), + O4_Type val + }; + + type record DHCPv4Option_StaticRouteOption { // clause 5.8 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_StaticRouteOption), + UInt8_Type len, + DHCPv4_DestinationRouterList drList + }; + + type record DHCPv4Option_TrailerEncapsulation { // clause 6.1 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_TrailerEncapsulation), + UInt8_Type len, // (1), + boolean val + }; + + type record DHCPv4Option_ARP_CacheTimeout { // clause 6.2 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_ARP_CacheTimeout), + UInt8_Type len, // (4), + UInt32_Type val + }; + + type record DHCPv4Option_EthernetEncapsulation { // clause 6.3 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_EthernetEncapsulation), + UInt8_Type len, // (1), + boolean val + }; + + type record DHCPv4Option_TCPDefaultTTL { // clause 7.1 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_TCPDefaultTTL), + UInt8_Type len, // (1), + UInt8_Type val + }; + + type record DHCPv4Option_TCPKeepaliveInterval { // clause 7.2 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_TCPKeepaliveInterval), + UInt8_Type len, // (4), + UInt32_Type val + }; + + type record DHCPv4Option_TCPKeepaliveGarbage { // clause 7.3 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_TCPKeepaliveGarbage), + UInt8_Type len, // (1), + boolean val + }; + + type record DHCPv4Option_NISDomain { // clause 8.1 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_NISDomain), + UInt8_Type len, + charstring val + }; + + type record DHCPv4Option_NISServers { // clause 8.2 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_NISServers), + UInt8_Type len, + DHCPv4_AddressList addresses + }; + + type record DHCPv4Option_NTPServers { // clause 8.3 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_NTPServers), + UInt8_Type len, + DHCPv4_AddressList addresses + }; + + type record DHCPv4Option_VendorSpecificInfo { // clause 8.4 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_VendorSpecificInfo), + UInt8_Type len, + octetstring val + }; + + type record DHCPv4Option_NetBIOS_Servers { // clause 8.5 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_NetBIOS_Servers), + UInt8_Type len, + DHCPv4_AddressList addresses + }; + + type record DHCPv4Option_NetBIOS_DDServers { // clause 8.6 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_NetBIOS_DDServers), + UInt8_Type len, + DHCPv4_AddressList addresses + }; + + type record DHCPv4Option_NetBIOS_NodeTypeOption { // clause 8.7 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_NetBIOS_NodeTypeOption), + UInt8_Type len, //(1), + O1_Type val + }; + + type record DHCPv4Option_NetBIOS_ScopeOption { // clause 8.8 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_NetBIOS_ScopeOption), + UInt8_Type len, + charstring val + }; + + type record DHCPv4Option_XWindowFontOption { // clause 8.9 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_XWindowFontOption), + UInt8_Type len, + DHCPv4_AddressList addresses + }; + + type record DHCPv4Option_XWindowDisplayManagers { // clause 8.10 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_XWindowDisplayManagers), + UInt8_Type len, + DHCPv4_AddressList addresses + }; + + type record DHCPv4Option_RequestedIPAddress { // clause 9.1 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_RequestedIPAddress), + UInt8_Type len, //(4), + O4_Type val + }; + + type record DHCPv4Option_IPAddressLeaseTime { // clause 9.2 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_IPAddressLeaseTime), + UInt8_Type len, //(4), + UInt32_Type val + }; + + type record DHCPv4Option_OptionOverload { // clause 9.3 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_OptionOverload), + UInt8_Type len, //(1), + UInt8_Type val + }; + + type enumerated DHCPv4_MsgType { // RFC 1533 clause 9.4 + DHCPv4_MsgType_DISCOVER_E (1), + DHCPv4_MsgType_OFFER_E (2), + DHCPv4_MsgType_REQUEST_E (3), + DHCPv4_MsgType_DECLINE_E (4), + DHCPv4_MsgType_ACK_E (5), + DHCPv4_MsgType_NAK_E (6), + DHCPv4_MsgType_RELEASE_E (7), + DHCPv4_MsgType_INFORM_E (8) // RFC 2131 + }; + + type record DHCPv4Option_MessageType { // clause 9.4 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_MessageType), + UInt8_Type len, // (1), + DHCPv4_MsgType msgType + }; + + type record DHCPv4Option_ServerIdentifier { // clause 9.5 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_ServerIdentifier), + UInt8_Type len, // (4), + O4_Type val + }; + + type record of DHCPv4Options_CODE DHCPv4_ParameterRequestList; + + type record DHCPv4Option_ParameterRequestList { // clause 9.6 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_ParameterRequestList), + UInt8_Type len, + DHCPv4_ParameterRequestList optionCodes + }; + + type record DHCPv4Option_Message97 { // clause 9.7 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_Message97), + UInt8_Type len, + charstring val + }; + + type record DHCPv4Option_MaxDHCPSize { // clause 9.8 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_MaxDHCPSize), + UInt8_Type len, // (2), + UInt16_Type val + }; + + type record DHCPv4Option_RenewalT1Time { // clause 9.9 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_RenewalT1Time), + UInt8_Type len, // (4), + UInt32_Type val + }; + + type record DHCPv4Option_RebindingT2Time { // clause 9.10 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_RebindingT2Time), + UInt8_Type len, // (4), + UInt32_Type val + }; + + type record DHCPv4Option_ClassIdentifier { // clause 9.11 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_ClassIdentifier), + UInt8_Type len, + charstring val + }; + + type record DHCPv4Option_ClientIdentifier { // clause 9.12 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_ClientIdentifier), + UInt8_Type len, + UInt8_Type hardwareType, + octetstring val + }; + + type record DHCPv4Options_SIPServers { // RFC 3361 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_SIPServers), + UInt8_Type len, + O1_Type enc, + DHCPv4_DomainNameList domainNames optional, // DNS domain name of SIP servers if enc == 0 + DHCPv4_AddressList addressList optional // IP Addresses of SIP servers if enc == 1 + }; + + type record DHCPv4Options_RapidCommit { // RFC 4039 clause 4 + DHCPv4Options_CODE code, // (DHCPv4Options_CODE_RapidCommit), + UInt8_Type len // (0) + }; + +} with {encode "DHCPv4-Codec"} diff --git a/LTE_A_IWD_14wk37/Common/IP_PTC/HTTP_ASP_TypeDefs.ttcn b/LTE_A_IWD_14wk37/Common/IP_PTC/HTTP_ASP_TypeDefs.ttcn new file mode 100644 index 0000000..95bca81 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IP_PTC/HTTP_ASP_TypeDefs.ttcn @@ -0,0 +1,142 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-06-17 14:36:46 +0200 (Tue, 17 Jun 2014) $ +// $Rev: 11745 $ +/******************************************************************************/ + +/** + * Note: 'Thin' Http type defs describing the structures relevant + * for the supplementary services test cases 34.229-1 section 15. + */ + +module HTTP_ASP_TypeDefs { + import from CommonDefs all; + import from IP_ASP_TypeDefs all; // TLSInfo_Type + import from LibSip_SIPTypesAndValues all; // NOTE: the same header definitions are used for HTTP as for SIP (Authorization, ContentType, WwwAuthenticate, AuthenticationInfo, Expires) + + group HTTP_ASP_Definitions { + + //---------------------------------------------------------------------------- + // HTTP Control + + type record HttpRoutingInfo_Type { /* Routing info to distinguish HTTP data for XCAP server and BSF */ + charstring serverAddr, /* IP address of simulated server */ + integer serverPort /* Port number of simulated server */ + }; + + type enumerated HttpAuthenticationMechanism_Type { + noAuthentication, /* no authentication (NOTE: In general "no authentication" is not applicable to conformance testing) */ + httpDigestAuthentication, /* HTTP digest authentication according to 24.623[36] clause 5.2.3.2 and RFC 2617 [37] */ + gaaAuthentication /* GAA based authentication according to 33.222 [35] and 24.109 [33] */ + }; + + + type record HTTP_CTRL_REQ { /* ASP type to configure the http layer; + when any of the optional fields is omitted the previous configuration of this field is kept */ + HttpAuthenticationMechanism_Type authenticationMechanism optional, /* Authentication mechanism */ + TLSInfo_Type tlsInfo optional, /* Description of the TLS connection to be used */ + HttpRoutingInfo_Type xcapServer optional, /* IP address and port of simulated XCAP server */ + HttpRoutingInfo_Type bsfServer optional, /* IP address and port of simulated BSF server */ + IP_DrbInfo_Type drbInfo optional /* DRB info as used by the IP PTC (LTE model, see TS 36.523-3 [30]) */ + }; + + type record HTTP_CTRL_CNF { /* ASP type to confirm HTTP_CTRL_REQ */ + charstring errorInfo optional /* string indicating a system error */ + }; + + //---------------------------------------------------------------------------- + // HTTP Data + + type record HTTP_DATA_IND { /* ASP type for sending a message from the http layer to TTCN; + it transports relevant information of a http Request from the UE to the Tester */ + HttpRoutingInfo_Type routingInfo, /* to distinguish BSF and XCAP server */ + HttpRequest_Type httpRequest + }; + + type record HttpRequest_Type { + HttpRequestLine_Type requestLine, /* RFC 2616 clause 5.1 */ + Authorization authorization optional, /* Authorization in RFC 2616 [27] clause 14.8 (optional; NOTE: Same type definition as for SIP type definitions) */ + ContentType contentType optional, /* Content-Type in RFC 2616 [27] clause 14.17 (optional, NOTE: Same type definition as for SIP type definitions) */ + charstring x3GPPIntendedIdentity optional, /* 3GPP TS 24.109 [33] clause G.2 */ + charstring messageBody optional /* MTSI XCAP Message */ + }; + + type record HttpResponse_Type { + HttpStatusLine_Type statusLine, /* Status-Line in RFC 2616 [27] clause 6.1 */ + WwwAuthenticate wwwauthenticate optional, /* WWW-Authenticate in RFC 2616 [27] clause 14.47 (NOTE: Same type definition as for SIP type definitions) */ + AuthenticationInfo authenticationInfo optional, /* Authentication-Info in RFC 2617 [37] clause 3.2.3 (NOTE: Same type definition as for SIP type definitions) */ + ContentType contentType optional, /* Content-Type in RFC 2616 [27] clause 14.17 (NOTE: Same type definition as for SIP type definitions) */ + Expires expires optional, /* Expires in RFC 2616 [27] clause 14.21 (NOTE: Same type definition as for SIP type definitions) */ + charstring messageBody optional /* MTSI XCAP Message (XML document or XML fragment) */ + }; + + type record HTTP_DATA_REQ { /* ASP type for sending messages from TTCN to the http layer; + it transports information needed by the http layer to generate a http Response to the UE */ + HttpRoutingInfo_Type routingInfo, /* to distinguish BSF and XCAP server */ + HttpResponse_Type httpResponse + }; + + type record HttpRequestLine_Type { /* request line according to RFC 2616 [27] clause 5.1 */ + charstring method, + charstring uri, /* XCAP selection expression, RFC 4825 [26] */ + charstring version + }; + + type record HttpStatusLine_Type { /* status line according to RFC 2616 [27] clause 5.1 */ + charstring version, + integer code, + charstring reasonPhrase + }; + + } with { encode "HttpCodec" } + + //============================================================================ + // Common templates: + + template (present) HttpRoutingInfo_Type cr_HttpRoutingInfo(template (present) charstring p_ServerAddr := ?, + template (present) integer p_ServerPort := ?) := + { /* @status APPROVED (IMS) */ + serverAddr := p_ServerAddr, + serverPort := p_ServerPort + }; + + template (value) HttpRoutingInfo_Type cs_HttpRoutingInfo(charstring p_ServerAddr, + integer p_ServerPort) := + { /* @status APPROVED (IMS) */ + serverAddr := p_ServerAddr, + serverPort := p_ServerPort + }; + + //============================================================================ + // Port definitions + + type port HTTP_CTRL_PORT message + { + out HTTP_CTRL_REQ; + in HTTP_CTRL_CNF; + }; + + type port HTTP_DATA_PORT message + { + in HTTP_DATA_IND; + out HTTP_DATA_REQ; + }; + + type port IP_HTTP_CTRL_PORT message + { + in HTTP_CTRL_REQ; + out HTTP_CTRL_CNF; + }; + + type port IP_HTTP_DATA_PORT message + { + out HTTP_DATA_IND; + in HTTP_DATA_REQ; + }; + +} diff --git a/LTE_A_IWD_14wk37/Common/IP_PTC/ICMPv6_Functions.ttcn b/LTE_A_IWD_14wk37/Common/IP_PTC/ICMPv6_Functions.ttcn new file mode 100644 index 0000000..cc519eb --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IP_PTC/ICMPv6_Functions.ttcn @@ -0,0 +1,108 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-10-23 11:47:20 +0200 (Wed, 23 Oct 2013) $ +// $Rev: 9858 $ +/******************************************************************************/ + +module ICMPv6_Functions { + import from CommonDefs all; + import from ICMPv6_TypeDefs all; + import from CommonIP all; + + template (value) ICMPv6Message cs_RouterAdvertisement(charstring p_ClientIpAddress) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + routerAdvMsg := { + icmpType := tsc_ICMPv6_RtAdvMsg, // RFC 4861 + icmpCode := 0, + checksum := '0000'O, // to be replaced before sending + curHopLimit := 64, + managedConfigFlag := '0'B, // Not managed, i.e. stateless autoconfiguration + otherConfigFlag := '0'B, // FFS DHCPv6 not available + reserved := '000000'B, + routerLifetime := oct2int('FFFF'O), // largest posible value + reachableTime := 0, // unspecified + retransTimer := 0, // unspecified + rtAdvOptions := { + srcLinkLayerAddr := omit, + mtuOption := omit, + prefixInfoList := { + { + icmpType := tsc_ICMPv6_PrefixInfo, + optionLength := 4, // 32 = 4 * 8 octets is the length for the complete option //@sic R5s110773 sic@ + prefixLength := 64, // 64 bits prefix + linkFlag := '0'B, // on-link flag set to 0 acc. to 3GPP 29.061 clause 11.2.1.3.2 @sic R5s120076 sic@ + autoConfigFlag := '1'B, // autonmous address-autconfiguration set + reserved1 := '000000'B, + validLifetime := oct2int ('FFFFFFFF'O), // infinity + preferredLifetime := oct2int('FFFFFFFF'O), // infinity + reserved2 := 0, + // And here the 64 bits prefix followed by 64 bits padding + prefix := substr (f_Convert_IPv6Addr2OctString(p_ClientIpAddress), 0, 8) & '0000000000000000'O + + } + }, // prefixInfoList + advertisementInterval := omit, + homeAgentInfo := omit, + otherOption := omit + } // options + } + }; + + /* + * @desc encode appropriate Router Advertisement + * @param p_ClientIpAddress .. IP address (prefix) to be assigned to the UE in an Router Advertisement + * @return octetstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_ICMPv6_GetRouterAdvertisement(charstring p_ClientIpAddress) return octetstring + { + return bit2oct(encvalue(cs_RouterAdvertisement(p_ClientIpAddress))); + } + + //**************************************************************************** + /* + * @desc Main function: + * Get the ICMPv6 response to be sent to the UE + * Base references are RFC 4861 and RFC 4862 for IPv6 stateless autoconfiguration + * This function is still under development: + * - Currently only Router Solicitation message is handled. + * @param p_ReqData .. Encoded ICMPv6 request sent by the UE + * @param p_ClientIpAddress .. IP address (prefix) to be assigned to the UE in an Router Advertisement + * @return octetstring .. Encoded ICMPv6 response, or ''O (empty string) in case of error + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_ICMPv6_GetEncodedResponse(octetstring p_ReqData, + charstring p_ClientIpAddress) return octetstring + { + var bitstring v_DataBitstring := oct2bit(p_ReqData); + var ICMPv6Message v_Request; + var template (omit) ICMPv6Message v_Response := omit; + + // Decode incoming DHCP message + if (decvalue(v_DataBitstring, v_Request) != 0) { + f_ErrorLog(__FILE__, __LINE__, "ICMP message cannot be decoded (skipped)"); + return ''O; // Error case + } + + if (ischosen(v_Request.routerSolMsg)) { // Handle Router Solicitation message + v_Response := cs_RouterAdvertisement(p_ClientIpAddress); // Return Router Advertisement + } + else if (ischosen(v_Request.nbrSolMsg)) { // Handle Neighbor Solicitation (for Duplicate Address Detection) + return ''O; // FFS Message is ignored + } + + if (isvalue(v_Response)) { + v_DataBitstring := encvalue(v_Response); + return bit2oct(v_DataBitstring); + } + + // Other cases are not yet handled + f_ErrorLog(__FILE__, __LINE__, "unsupported ICMPv6 request (skipped)"); + return ''O; // Error + } +} diff --git a/LTE_A_IWD_14wk37/Common/IP_PTC/ICMPv6_TypeDefs.ttcn b/LTE_A_IWD_14wk37/Common/IP_PTC/ICMPv6_TypeDefs.ttcn new file mode 100644 index 0000000..44dfab4 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IP_PTC/ICMPv6_TypeDefs.ttcn @@ -0,0 +1,237 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-04-01 15:09:57 +0200 (Mon, 01 Apr 2013) $ +// $Rev: 8395 $ +/******************************************************************************/ + +module ICMPv6_TypeDefs { + import from CommonDefs all; + + /** + * @desc Message types for ICMPv6 messages needed for + * IPv6 Stateless Address Autoconfiguration RFC 4861, RFC 4862 + */ + type union ICMPv6Message { // Rfc 4861 + ICMPv6_RouterSolicitationMsg routerSolMsg, // RFC 4861 clause 4.1 + ICMPv6_RouterAdvertisementMsg routerAdvMsg, // RFC 4861 clause 4.2 + ICMPv6_NeighborSolicitationMsg nbrSolMsg, // RFC 4861 clause 4.3 + ICMPv6_NeighborAdvertisementMsg nbrAdvMsg, // RFC 4861 clause 4.4 + ICMPv6_RedirectMsg redirectMsg // RFC 4861 clause 4.5 + }; + + type O4_Type Ipv4Address; + type O16_Type Ipv6Address; + type O16_Type IPv6Prefix; // As used in the IPv6 ATS, FFS + + + /* + * @desc PDU type derived from Rfc 4861 clause 4.1 + */ + type record ICMPv6_RouterSolicitationMsg { + UInt8_Type icmpType(tsc_ICMPv6_RtSolMsg), + UInt8_Type icmpCode, + O2_Type checksum, + UInt32_Type reserved, + RtSolOptions rtSolOptions optional + }; + + /* + * @desc PDU type derived from Rfc 4861 clause 4.2 + */ + type record ICMPv6_RouterAdvertisementMsg { + UInt8_Type icmpType(tsc_ICMPv6_RtAdvMsg), + UInt8_Type icmpCode, + O2_Type checksum, + UInt8_Type curHopLimit, + B1_Type managedConfigFlag, + B1_Type otherConfigFlag, + B6_Type reserved, // (differs from RFC2461, homeAgentFlag is removed) + UInt16_Type routerLifetime, + UInt32_Type reachableTime, + UInt32_Type retransTimer, + RtAdvOptions rtAdvOptions optional + }; + + /* + * @desc PDU type derived from Rfc 4861 clause 4.3 + */ + type record ICMPv6_NeighborSolicitationMsg { + UInt8_Type icmpType( tsc_ICMPv6_NbrSolMsg), + UInt8_Type icmpCode, + O2_Type checksum, + UInt32_Type reserved, + Ipv6Address targetAddr, + NbrSolOptions nbrSolOptions optional + }; + + + /* + * @desc PDU type derived from Rfc 4861 clause 4.4 + */ + type record ICMPv6_NeighborAdvertisementMsg { + UInt8_Type icmpType(tsc_ICMPv6_NbrAdvMsg), + UInt8_Type icmpCode, + O2_Type checksum, + B1_Type routerFlag, + B1_Type solicitedFlag, + B1_Type overrideFlag, + B29_Type reserved, + Ipv6Address targetAddr, + NbrAdvOptions nbrAdvOptions optional + }; + + /* + * @desc PDU type derived from Rfc 4861 clause 4.5 + */ + type record ICMPv6_RedirectMsg { + UInt8_Type icmpType(tsc_ICMPv6_RedirectMsg), + UInt8_Type icmpCode, + O2_Type checksum, + UInt32_Type reserved, + Ipv6Address targetAddr, + Ipv6Address destinationAddr, + RedirectOptions redirectOptions optional + }; + + // Router Solicitation Options + type set RtSolOptions{ + SrcLinkLayerAddress srcLinkLayerAddr optional, + octetstring otherOption optional + }; + + // Router Advertisement options + type set RtAdvOptions { + SrcLinkLayerAddress srcLinkLayerAddr optional, + MtuOption mtuOption optional, + PrefixInfoList prefixInfoList optional, + AdvertisementInterval advertisementInterval optional, + HomeAgentInfo homeAgentInfo optional, + octetstring otherOption optional + }; + + /* + * @desc Extra ICMP option introduced by RFC3775, clause 7.4 + */ + type record HomeAgentInfo { //ND + MIPv6 + UInt8_Type icmpType (tsc_ICMPv6_HomeAgentInfo), + UInt8_Type optionLength (1), + UInt16_Type reserved, + UInt16_Type homeAgentPreference, + UInt16_Type homeAgentLifetime + }; + + /* + * @desc Extra ICMP option introduced by RFC3775, clause 7.3 + */ + type record AdvertisementInterval { //ND + MIPv6 + UInt8_Type icmpType (tsc_ICMPv6_AdvertisementInterval), + UInt8_Type optionLength (1), + UInt16_Type reserved, + UInt32_Type advInterval + }; + + /* + * @desc Derived from RFC 4861 clause 4.6.4 + MIPv6 + */ + type record MtuOption { + UInt8_Type icmpType(tsc_ICMPv6_MtuOption), + UInt8_Type optionLength, + UInt16_Type reserved, + UInt32_Type mtu + }; + + /* + * @desc Derived from RFC 2461 clause 4.6.2 + */ + type record ICMPv6_PrefixInfo { + UInt8_Type icmpType(tsc_ICMPv6_PrefixInfo), + UInt8_Type optionLength, + UInt8_Type prefixLength, + B1_Type linkFlag, + B1_Type autoConfigFlag, + B6_Type reserved1, + UInt32_Type validLifetime, + UInt32_Type preferredLifetime, + UInt32_Type reserved2, + IPv6Prefix prefix + }; + + type set length (1..tsc_ICMPv6_MaxNrPrefixInfo) of ICMPv6_PrefixInfo PrefixInfoList; + + // Neighbor Solicitation Options + type set NbrSolOptions { + SrcLinkLayerAddress srcLinkLayerAddr optional, + octetstring otherOption optional + }; + + // Neighbor Advertisement options + type set NbrAdvOptions { + TgtLinkLayerAddress tgtLinkLayerAddr optional, + octetstring otherOption optional + }; + + /* + * @desc Derived from RFC 4861 clause 4.6.1 + */ + type record TgtLinkLayerAddress { + UInt8_Type icmpType(tsc_ICMPv6_tgtLinkLayerAddress), + UInt8_Type optionLength, + octetstring linkLayerAddr // Variable length + }; + + /* + * @desc Derived from RFC 4861 clause 4.6.1 + */ + type record SrcLinkLayerAddress { + UInt8_Type icmpType(tsc_ICMPv6_srcLinkLayerAddress), + UInt8_Type optionLength, + octetstring linkLayerAddr // Variable length + }; + + /* + * @desc Derived from RFC 4861 clause 4.6.3 + MIP + */ + type set RedirectOptions { + TgtLinkLayerAddress tgtLinkLayerAddr optional, + ICMPv6_RedirectedHeader redirectHeader optional, + octetstring otherOption optional + }; + + /* + * @desc Derived from RFC 4861 clause 4.6.3 + */ + type record ICMPv6_RedirectedHeader { + UInt8_Type icmpType(tsc_ICMPv6_RedirectOption), + UInt8_Type optionLength, + O4_Type reserved, // (RF2461 8 octets reserved) + octetstring data // no length limit? + }; + + // Message Types + const UInt8_Type tsc_ICMPv6_RtSolMsg := 133; + const UInt8_Type tsc_ICMPv6_RtAdvMsg := 134; + const UInt8_Type tsc_ICMPv6_NbrSolMsg := 135; + const UInt8_Type tsc_ICMPv6_NbrAdvMsg := 136; + const UInt8_Type tsc_ICMPv6_RedirectMsg := 137; + + // Other constants + const UInt8_Type tsc_ICMPv6_srcLinkLayerAddress := 1; + const UInt8_Type tsc_ICMPv6_tgtLinkLayerAddress := 2; + const UInt8_Type tsc_ICMPv6_PrefixInfo := 3 ; + const UInt8_Type tsc_ICMPv6_RedirectOption := 4 ; + const UInt8_Type tsc_ICMPv6_MtuOption := 5; + const UInt8_Type tsc_ICMPv6_AdvertisementInterval := 7; + const UInt8_Type tsc_ICMPv6_HomeAgentInfo := 8; + const UInt8_Type tsc_ICMPv6_MaxNrPrefixInfo := 10; + const UInt8_Type tsc_ICMPv6_MaxPrefixLength := 128; + + // Helper Types + type bitstring B29_Type length(29); + +} with {encode "ICMPv6-Codec"} + diff --git a/LTE_A_IWD_14wk37/Common/IP_PTC/IP_ASP_Common.ttcn b/LTE_A_IWD_14wk37/Common/IP_PTC/IP_ASP_Common.ttcn new file mode 100644 index 0000000..1a09306 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IP_PTC/IP_ASP_Common.ttcn @@ -0,0 +1,55 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-08-25 20:30:56 +0200 (Sun, 25 Aug 2013) $ +// $Rev: 9371 $ +/******************************************************************************/ + +module IP_ASP_Common { + import from IP_ASP_TypeDefs all; + import from CommonIP all; + + //**************************************************************************** + // Auxiliary functions + //---------------------------------------------------------------------------- + + function f_IP_AddrInfo_AddrStr(IP_AddrInfo_Type p_AddrInfo) return charstring + { + var charstring v_AddrStr := ""; + if (ischosen(p_AddrInfo.V4)) { v_AddrStr := p_AddrInfo.V4.Addr; } + if (ischosen(p_AddrInfo.V6)) { v_AddrStr := p_AddrInfo.V6.Addr; } + return v_AddrStr; + } + + function f_IP_AddrInfo_TypeStr(IP_AddrInfo_Type p_AddrInfo) return charstring + { /* @sic R5s130333 change 29: IPv4 -> IP6, IPv6 -> IP4 sic@ */ + var charstring v_TypeStr := ""; + if (ischosen(p_AddrInfo.V4)) { v_TypeStr := "IP4"; } + if (ischosen(p_AddrInfo.V6)) { v_TypeStr := "IP6"; } + return v_TypeStr; + } + + /* + * @desc match IP address sent by the UE in IMS message against given address + * @param p_AddrInfo + * @param p_ReceivedAddrString + * @return boolean + * @status APPROVED (IMS, LTE, LTE_A, LTE_IRAT) + */ + function f_IMS_IpAddrMatch(IP_AddrInfo_Type p_AddrInfo, + charstring p_ReceivedAddrString) return boolean + { /* @sic R5w130106 - square brackets to be handled by codec sic@ */ + + if (ischosen(p_AddrInfo.V4)) { + return match(p_ReceivedAddrString, p_AddrInfo.V4.Addr); + } + if (ischosen(p_AddrInfo.V6)) { + return (f_Convert_IPv6Addr2OctString(p_ReceivedAddrString) == f_Convert_IPv6Addr2OctString(p_AddrInfo.V6.Addr)); + } + return false; + } +} diff --git a/LTE_A_IWD_14wk37/Common/IP_PTC/IP_ASP_TypeDefs.ttcn b/LTE_A_IWD_14wk37/Common/IP_PTC/IP_ASP_TypeDefs.ttcn new file mode 100644 index 0000000..00288be --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IP_PTC/IP_ASP_TypeDefs.ttcn @@ -0,0 +1,783 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-05-26 19:34:53 +0200 (Mon, 26 May 2014) $ +// $Rev: 11335 $ +/******************************************************************************/ + +module IP_ASP_TypeDefs { + /* General Notes: + * NOTE 1: + * In general the handling of IP data shall be independent from the RAT being used on lower layers. + * NOTE 2: + * It shall be possible for SS implementation to reuse existing IP stack implementations in the system adaptor; + * therefore the well-known concept of socket programming shall be supported + * (regardless of whether those are used in the system adaptor implementation or not) + * NOTE 3: + * Since in general at the network side there are several different IP addresses the SS needs to simulate more than one IP address; + * that can be based on a concept of multiple virtual network adaptors + * NOTE 4: + * There is no easy way to control the routing of IP data for an IP connection from above the IP stack + * i.e. there are no parameters at the socket interface to determine e.g. cell id and DRB id + * => another independent logical entity (DRB-MUX) is needed below the IP stack which is responsible to control the routing of IP packets from/to DRBs in different cells of different RATs + * + * Reference: + * An introduction to socket programming can be found in + * UNIX Network Programming Volume 1, Third Edition: The Sockets Networking API + * by W. Richard Stevens, Bill Fenner, Andrew M. Rudoff + */ + + import from CommonDefs all; + + //---------------------------------------------------------------------------- + + group IP_Common { + + type UInt16_Type PortNumber_Type; + + type record IPv4_AddrInfo_Type { /* IPv4 specific info of the socket addr (AF_INET) */ + charstring Addr /* IP Address as string (IP v4 dot notation) to be converted to 32-bit unsigned integer */ + }; + + type record IPv6_AddrInfo_Type { /* IPv6 specific info of the socket addr (AF_INET6); + * NOTE: sin6_flowinfo can be ignored and set to 0 */ + charstring Addr, /* to be converted to sin6_addr */ + UInt32_Type ScopeId optional /* sin6_scope_id + * in general an IPv6 address is like "fe80::1%eth0" with eth0 being the network adaptor mapped to a scope id (Unix) + * assumption: + * for UE conformance testing it is not necessary to distiguish different scopes and the scope id in general can be determined by the system adaptor => omit */ + }; + + type union IP_AddrInfo_Type { + IPv4_AddrInfo_Type V4, + IPv6_AddrInfo_Type V6 + }; + + type record IP_Socket_Type { /* Socket */ + IP_AddrInfo_Type IpAddr optional, /* IP address */ + PortNumber_Type Port optional /* port number */ + }; + + type enumerated InternetProtocol_Type { + udp, + tcp, + icmp, + icmpv6 + }; + + type record IP_Connection_Type { + /* A connection between peer-to-peer entities is unambiguously defined by the protocol (udp/tcp/icmp/icmpv4), the local socket and the remote socket */ + InternetProtocol_Type Protocol, + IP_Socket_Type Local optional, + IP_Socket_Type Remote optional + }; + + } // End of group IP_Common + + //**************************************************************************** + // Configuration of the IP routing table (DRB-MUX) + //---------------------------------------------------------------------------- + + group IP_Config { + /* Configuration of the routing table managed be the system adaptor's DRB-MUX: + * foreach IP connection it is specified which + * - RAT + * - Cell + * - DRB + * to be used. + * The IP connection does not need to be fully specified depending on the role SS plays (e.g. in case of a server role the port number of the remote side is not known in advance). + * The configurations of DRBs within the same cell shall be mutual exclusive. + * + * With the configuration of the IP routing the DRB is configured either in IP or in raw mode: + * either there are entries for the DRB in the routing table (IP mode) or not (raw mode) + * => It is not necessary to reconfigure this for the respective RAT. + * + * Behaviour of the DRB-MUX in UL: + * - SS gets data packet from the lower layers (e.g. PDCP SDU) + * - SS checks whether there is any IP connection configured for this DRB (identified by {RAT, CellId, DrbId}) + * if YES => packet is routed to the IP stack (IP mode) + * if NO => packet is handed over to the DRB port (raw mode) + * NOTE 1: + * If there is any entry for a DRB in the routing table this DRB is considered as being in IP mode and all UL IP packets are sent to the IP stack regardless of whether their addresses match the DRB's routing entries or not (in general 'unknown' packets are discarded by the IP stack) + * => a DRB can be either in IP or in raw mode + * NOTE 2: + * => The SS does not need to evaluate any IP headers to decide whether data shall be routed to the DRB port or to the IP stack (i.e. there is no conflict with unstructured loopback data) + * + * Behaviour of the DRB-MUX in DL: + * - SS gets IP packets from the IP stack for an IP connection + * - SS compares the IP connection (protocol, local/remote IP Addr) against the IP routing table and + * checks whether the corresponding protocol stack is configured at the lower layers => + * 1. no match: + * no entry in the routing table fits to the address in the IP packet + * or the corresponding RB is not configured + * => SS shall raise an error (DRBMUX_COMMON_IND_CNF.Error) + * 2. one match: + * There is exactly one possibility to route the IP packet + * => SS shall send the packet to this RB + * 3. several matches: + * There are more than one DRBs, cells or RATs to which the packet may be routed + * => SS shall raise an error if there is more than one DRB in one cell matching; + * if the DRBs belong to different cells or RATS SS shall send the data to all of them + * (whether this may occur in test cases is FFS) + * + * General notes: + * NOTE 1: + * SS may use the information of the routing table to determine which network adaptors it needs to simulate (implementation dependent); + * in general there will be more than one IP address at the network side. + * NOTE 2: + * In general the routing table is a simplified DL TFT implementation + * NOTE 3: + * When the routing table is empty all DRBs are in raw mode; this shall be the initial condition at the DRB-MUX; + * => for L2 testing in general (and apart from the preamble) there is no need to use/configure the IP_PTC; the configuration of the RAT specific U-plane stacks is not affected + */ + + type record IP_RoutingInfo_Type { + IP_Connection_Type IpInfo, /* IP connection tuple: protocol, local socket, remote socket + * depending on the role the SS plays the following information may be provided + * (informative; even less information can be sufficient): + * 1. TCP/UDP server + * - local IP addr -- provided + * - local port -- provided + * - remote IP addr -- omit + * - remote port -- omit + * 2. TCP/UDP client + * - local IP addr -- provided + * (to inform SS about the local IP addr for this service) + * - local port -- omit; + * for UDP a well-defined port may be defined + * (protocol dependent, e.g. DHCP) + * - remote IP addr -- provided + * - remote port -- provided + * 3. ICMP (in general ICMP may be mapped only to a single DRB) + * - local IP addr -- provided + * (to inform SS about the local IP addr for this service) + * - local port -- n/a (shall be set to omit) + * - remote IP addr -- omit + * - remote port -- n/a (shall be set to omit) + * + * NOTE: + * In case of broadcasts in UL the broadcast address shall match any local IP address; + * in DL for broadcast services typically no remote IP address is specified in the routing table + */ + IP_DrbInfo_Type DRB + }; + + type record of IP_RoutingInfo_Type IP_RoutingTable_Type; /* NOTE: configurations of DRBs within the same cell shall be mutual exclusive */ + + + } // End of group IP_Config + + + //**************************************************************************** + // Handling of IPsec + //---------------------------------------------------------------------------- + + group IPsec_Config { + const integer tsc_IPsec_SPI_Max := 4294967295; + type integer IPsec_SPI_Type (0..tsc_IPsec_SPI_Max); /* security parameter index for IPsec; + According to RFC 2406, SPI values from 0 to 255 are reserved */ + + type enumerated IPsec_IntegrityAlgorithm_Type { + hmac_md5_96, + hmac_sha_1_96 + }; + + type enumerated IPsec_CipheringAlgorithm_Type { + des_ede3_cbc, + aes_cbc, + nociph /* no ciphering */ + }; + + type record IPsec_SecurityKeys_Type { /* to install the security keys */ + bitstring MD5_96Key length (128), + bitstring SHA_1_96Key length (160), + bitstring DES_EDE3_CBCKey length (192), + bitstring AES_CBCKey length (128) + }; + + type record IPsec_SecurityAssociation_Type { /* single security association (SA); + for configuration of an SA at the SS all fields are mandatory; + to release an SA the optional information is omitted */ + IPsec_SPI_Type SPI, + charstring SrcAddress, + charstring DestAddress, + UInt16_Type SrcPort, + UInt16_Type DestPort, + IPsec_IntegrityAlgorithm_Type IntegrityAlgorithm optional, /* mandatory to set-up an SA */ + IPsec_CipheringAlgorithm_Type CipheringAlgorithm optional /* mandatory to set-up an SA */ + }; + + type record of IPsec_SecurityAssociation_Type IPsec_SecurityAssociationList_Type; + + type record IPsec_Configure_Type { /* add new security associations; existing SAs are not affected */ + IPsec_SecurityAssociationList_Type SA_List, + IPsec_SecurityKeys_Type SecurityKeys + }; + + type record IPsec_Release_Type { /* release security associations; + * NOTE: + * in context with multiple PDNs it cannot be ensured that all SPIs are unique; + * e.g. the UE may use the same SPI values in different PDNs in which case uniqueness cannot be achieved + * furthermore it depends on the system implementation how entries in the IPsec SAD and SPD are administrated + * => to release SAs the SS gets the same information as for configuration but without the security algorithms */ + IPsec_SecurityAssociationList_Type SA_List + }; + + } // end of group IPsec_Config + + //**************************************************************************** + // Handling of IP data and IP connections + //---------------------------------------------------------------------------- + + group IP_SocketHandling { + /* Handling of IP data and IP connections + * NOTE 1: + * In general IP connections are distuished by the tuple {protocol, local socket, remote socket}; + * this information is used at the interface between TTCN and the system adaptor. + * It is up the the system adaptor implementation to associate the IP connection with the internal socket (file descriptor; implementation dependent) + * NOTE 2: + * In general the association of the IP connections to (internal) sockets and the routing table for the DRB mpping (as configured with IP_RoutingTable_Type) are independent from each other */ + + group Socket_Common { + + type union IP_SockOpt_Type { /* socket options acc. to the setsockopt system call (i.e. for level=SOL_SOCKET in case of Berkeley socket API); + * NOTE: + * only options being relevant for a specific applications (upon a socket) are configured by TTCN + * other options (e.g. SO_REUSEADDR) are out of TTCN and therefore a matter of system adaptor implementation */ + boolean SO_BROADCAST, /* set to true when IP broadcast messages shall be allowed for a port; + * this is required e.g. in case of DHCP */ + integer IP_MTU_SIZE /* MTU size to be used for IP data; + * NOTEs: + * - Even though the MTU size is defined as socket option it shall be the same for all sockets of a given interface (i.e. at least within one PDN the MTU size shall be the same) + * - in general a PIXIT is used as constant value for all sockets */ + }; + + type record of IP_SockOpt_Type IP_SockOptList_Type; + + type union IP_SocketError_Type { /* used to indicate errors related to sockets; + * the IP_Connection shall contain as much address information as available at the system adaptor */ + Null_Type InvalidAddress, /* TTCN error: e.g. invalid or incomplete address information */ + integer System /* system error caused by system call; + * the integer value may be used for validation but shall not be evaluated by TTCN */ + }; + + } // end of sub-group Socket_Common + + group Socket_Datagram { + + type octetstring Datagram_Content_Type; /* data as sent/received with sendto()/recvfrom() on UDP or ICMP socket; + * NOTE: + * For ICMP the data may depend on the socket options (FFS); + * in general it does not include the IP header and + * the checksum of the ICMP packet needs to be calculated/checked in TTCN */ + + type record Datagram_DL_Type { /* datagram to be sent at a UDP or ICMP socket */ + Datagram_Content_Type Buffer /* content of the IP packet */ + }; + + type record Datagram_UL_Type { /* datagram as received on a UDP or ICMP socket */ + Datagram_Content_Type Buffer, /* content of the IP packet */ + IP_DrbInfo_Type DrbInfo optional /* "interface id" where the data comes from in case of broadcast or multicast packets: + * for the LTE test model this is the DRB on which the IP packet has been received; + * the information is necessary when the SS cannot resolve an IP address being assigned to that DRB. + * => when the SS provides a brodacst or multicast address as local address in the ConnectionId of the ASP, the SS shall provide the DRB information in this field + * When the ConnectionId of the ASP is fully specified and unique (unicast address at least for local address) the DrbId is ignored by TTCN */ + }; + + } // end of sub-group Socket_Datagram + + //============================================================================ + + group TCP_Socket { /* TCP primitives used on the IP port */ + + type enumerated InternetApplication_Type { ims, http }; /* as TCP is stream oriented SS may need information about which criteria to be applied to get start/end of an application message */ + + type enumerated TLS_Type { /* Type of TLS connection to be used (if any) */ + noTLS, + pskTLS, + certTLS + }; + + type enumerated TLS_CIPHER_Type { /* Cipher suite to be used */ + noCipher, + psk_3DES_EDE_CBC_SHA, + psk_AES_128_CBC_SHA + }; + + type record TLSInfo_Type { + TLS_Type tlsType, /* Type of TLS connection to be used (if any) */ + octetstring psk optional, /* Pre shared key for TLS ciphering */ + TLS_CIPHER_Type cipherSuite /* Cipher suite to be used */ + }; + + type record TCP_ConnectRequest_Type { /* TCP client: -> 'connect' system call */ + IP_SockOptList_Type SockOptList, /* when there are no options to configure the list is empty */ + InternetApplication_Type Application /* to specify start/end criteria for application messages */ + }; + + type record TCP_Listen_Type { /* TCP server: -> 'listen' system call */ + IP_SockOptList_Type SockOptList, /* when there are no options to configure the list is empty */ + InternetApplication_Type Application, /* to specify start/end criteria for application messages */ + TLSInfo_Type TLSInfo optional /* to support TLS for HTTP server implementation */ + }; + + type octetstring TCP_Data_Type; /* data as sent/received with send()/recv() on a TCP socket */ + + type union TCP_CtrlRequest_Type { + TCP_ConnectRequest_Type ConnectReq, /* request a 'connect' to a remote server + * + * system calls (informative) + * socket -- get file descriptor + * (setsockopt) -- normally not needed + * bind -- assign local IP addr (to cope with multiple IP addresses) and dedicated port number (if local port is given) + * connect -- connect to the client + * + * IP_Connection: + * protocol -- tcp + * local IP addr -- mandatory to distinguish different network adaptors + * local port -- omit (ephemeral port will be assigned by the system) or specific port to be used for this connection (e.g. to bind a given port number to the IMS client) + * remote IP addr -- mandatory + * remote port -- mandatory + */ + TCP_Listen_Type Listen, /* establish a server at the local (SS) side + * + * system calls (informative) + * socket -- get file descriptor + * (setsockopt) -- if needed + * bind -- assign local IP addr and port + * listen -- await incoming connection + * + * IP_Connection: + * protocol -- tcp + * local IP addr -- mandatory to distinguish different network adaptors + * local port -- mandatory + * remote IP add -- omit + * remote port -- omit + */ + Null_Type Close /* close a connection + * + * system calls (informative): + * close + * + * IP_Connection: + * protocol -- tcp + * local IP addr -- mandatory + * local port -- mandatory + * remote IP addr -- mandatory for TCP connections, omit for TCP server + * remote port -- mandatory for TCP connections, omit for TCP server + */ + }; + + type union TCP_DataRequest_Type { + TCP_Data_Type Send /* send data + * + * system calls (informative): + * send or write + * + * IP_Connection: + * protocol -- tcp + * local IP addr -- mandatory + * local port -- mandatory + * remote IP addr -- mandatory + * remote port -- mandatory + */ + }; + + type union TCP_CtrlIndication_Type { + Null_Type ConnectCnf, /* confirm a 'connect' to a remote server + * + * system calls (informative): + * getsockname -- get local port (ephemeral port assiged by the system) + * + * IP_Connection: + * protocol -- tcp + * local IP addr -- mandatory (as in corresponding TCP_ConnectRequest) + * local port -- mandatory (if there is more than one connection to the same server the local port is necessary to distinguish the connections) + * remote IP addr -- mandatory (as in corresponding TCP_ConnectRequest) + * remote port -- mandatory (as in corresponding TCP_ConnectRequest) + */ + Null_Type Accept, /* sent by the SS when it 'accepts' an incoming connection + * + * system calls (informative): + * accept + * + * IP_Connection: + * protocol -- tcp + * local IP addr -- mandatory (as in corresponding TCP_ListenRequest) + * local port -- mandatory (as in corresponding TCP_ListenRequest) + * remote IP addr -- mandatory (as gotten from 'accept') + * remote port -- mandatory (as gotten from 'accept') + */ + Null_Type Close, /* indicate 'close' by the remote side + * + * system calls (informative): + * indicated by recv or read + * + * IP_Connection: + * protocol -- tcp + * local IP addr -- mandatory + * local port -- mandatory + * remote IP addr -- mandatory + * remote port -- mandatory + */ + Null_Type CloseCnf /* Confirmation for 'close' request; necessary since for TCP there are IP packets to release the connection + * + * system calls (informative): + * close + * + * IP_Connection: + * protocol -- tcp + * local IP addr -- mandatory + * local port -- mandatory + * remote IP addr -- mandatory for TCP connections, omit for TCP server + * remote port -- mandatory for TCP connections, omit for TCP server + */ + }; + + type union TCP_DataIndication_Type { + TCP_Data_Type Recv /* receive data + * + * system calls (informative): + * recv or read + * + * IP_Connection: + * protocol -- tcp + * local IP addr -- mandatory + * local port -- mandatory + * remote IP addr -- mandatory + * remote port -- mandatory + */ + }; + + } // end of sub-group TCP_Socket + + //============================================================================ + + group UDP_Socket { /* UDP primitives used on the IP port + * NOTE: + * In principle a UDP socket may communicate with different remote entities; + * therefore the system adaptor may associate the socket handle with the local socket only + * (local IP address and local port) + */ + + type record UDP_SocketReq_Type { /* to establish a UDP server or to bind local port number */ + IP_SockOptList_Type SockOptList /* e.g. to allow broadcast messages; + * when there are no options to configure the list is empty */ + }; + + type union UDP_CtrlRequest_Type { + UDP_SocketReq_Type SocketReq, /* request the system adaptor to bind a socket to a local address; + * this is needed in general when the system adaptor acts as + * 1. UDP server + * 2. UDP client when it uses a well-known port rather than an ephemeral port (this is e.g. for DHCP) + * 3. UDP client when a local address needs to be bond (e.g. when there are several local addresses) + * + * system calls (informative): + * socket -- get file descriptor + * (setsockopt) -- needed e.g. to allow broad cast message + * bind -- assign local IP address (to cope with multiple IP addresses) and local port (in case of well-known local port) + * + * IP_Connection: + * protocol -- udp + * local IP addr -- mandatory (to distiguish multiple IP addresses) + * local port -- optional (mandatory in case of a UDP server) + * remote IP addr -- omit + * remote port -- omit + */ + Null_Type Close /* release local socket + * + * system calls (informative): + * close + * + * IP_Connection: + * protocol -- udp + * local IP addr -- mandatory (to identify local socket) + * local port -- mandatory (to identify local socket) + * remote IP addr -- omit + * remote port -- omit + */ + }; + + type union UDP_DataRequest_Type { + Datagram_DL_Type SendTo /* send data to (any) remote socket; + * NOTE: + * To simplify implementation of the system adaptor the local socket shall be bond in any case (using 'SocketReq') to specify the local IP address before sending data; + * (in general the sendto system call can be used without explicitly binding the socket before; + * in this case the port gets implicitly bond to an ephemeral port and the default IP address is used) + * + * system calls (informative): + * sendto + * + * IP_Connection: + * protocol -- udp + * local IP addr -- mandatory (to identify local socket) + * local port -- mandatory (to identify local socket) + * remote IP addr -- mandatory (to address remote socket) + * remote port -- mandatory (to address remote socket) + */ + }; + + type union UDP_CtrlIndication_Type { + Null_Type SocketCnf /* confirm 'SocketReq' and tell TTCN about assignment of ephemeral port; + * + * system calls (informative): + * getsockname -- get local port (ephemeral port assigned by the system; not needed if local port is well-known) + * + * IP_Connection: + * protocol -- udp + * local IP addr -- mandatory + * local port -- mandatory (well-known or ephemeral port asssigned by the system) + * remote IP addr -- omit + * remote port -- omit + */ + }; + + type union UDP_DataIndication_Type { + Datagram_UL_Type RecvFrom /* receive data; + * + * system calls (informative): + * recvfrom -- get data and src addr + * + * IP_Connection: + * protocol -- udp + * local IP addr -- mandatory (see note) + * local port -- mandatory + * remote IP addr -- mandatory (as gotten from recvfrom) + * remote port -- mandatory (as gotten from recvfrom) + * + * NOTE: + * The UE may send a UDP packet as broadcast (IP Addr 255.255.255.255 - e.g. in case of DHCP) or multicast (e.g. ICMPv6) + * SS shall consider a broadcast address as matching every IP for UL and DL; + * the SS shall not replace the broadcast/multicast address by the local unicast address, but shall provide DRB information in RecvFrom; + * example: + * - SS gets DHCPDISCOVER with DEST_Addr=255.255.255.255 DEST_Port=67, SRC_Addr=0.0.0.0 SRC_Port=68 + * - TTCN gets DHCPDISCOVER with local Addr=(255.255.255.255 Port=67), remote Addr=(0.0.0.0 Port=68), DrbId=(LTE, cell1, DRB1) + * - TTCN sends DHCPOFFER with local Addr=(local IP Addr Port=67), remote Addr=(255.255.255.255 Port=68) + */ + }; + + } // end of sub-group UDP_Socket + + //============================================================================ + + group ICMP_Socket { /* ICMP primitives used on the IP port + * NOTE: + * the local side is identified by the protocol and in general by the local IP address + */ + + type record ICMP_SocketReq_Type { /* to establish a raw socket to send/receive ICMP packets */ + IP_SockOptList_Type SockOptList /* e.g. to set the IP_HDRINCL socket option (to include the IP header in the data buffer) -> FFS + * when there are no options to configure the list is empty */ + }; + + type union ICMP_CtrlRequest_Type { + ICMP_SocketReq_Type SocketReq, /* request the system adaptor to open a raw socket (IPv4 or IPv6) + * + * system calls (informative): + * socket -- get file descriptor (IPPROTO_ICMP or IPPROTO_IPV6); + * (setsockopt) -- optional; to set socket options + * bind -- assign local IP address (to cope with multiple IP addresses) + * + * IP_Connection: + * protocol -- icmp or icmpv6 + * local IP addr -- mandatory (to distiguish multiple IP addresses) + * local port -- omit (not applicable for ICMP) + * remote IP addr -- omit + * remote port -- omit (not applicable for ICMP) + */ + Null_Type Close /* release local socket + * + * system calls (informative): + * close + * + * IP_Connection: + * protocol -- icmp or icmpv6 + * local IP addr -- mandatory (to identify local socket) + * local port -- omit + * remote IP addr -- omit + * remote port -- omit + */ + }; + + type union ICMP_DataRequest_Type { + Datagram_DL_Type SendTo /* send datagram + * + * system calls (informative): + * sendto + * + * IP_Connection: + * protocol -- icmp or icmpv6 + * local IP addr -- mandatory (to identify local socket) + * local port -- omit + * remote IP addr -- mandatory + * remote port -- omit + */ + }; + + type union ICMP_CtrlIndication_Type { + Null_Type SocketCnf /* confirm 'SocketReq' + * + * system calls (informative): + * (SocketCnf is sent when all system calls for SocketReq have been successful) + * + * IP_Connection: + * protocol -- icmp or icmpv6 + * local IP addr -- mandatory + * local port -- omit + * remote IP addr -- omit + * remote port -- omit + */ + }; + + type union ICMP_DataIndication_Type { + Datagram_UL_Type RecvFrom /* receive datagram + * + * system calls (informative): + * recvfrom -- get data and src addr + * + * IP_Connection: + * protocol -- icmp or icmpv6 + * local IP addr -- mandatory (see note) + * local port -- omit + * remote IP addr -- mandatory (as gotten from recvfrom) + * remote port -- omit + * + * NOTE: + * As for UDP there may be multicast/broadcast packets. + * In this case - as for UDP - the SS shall provide the DRB information in RecvFrom. + */ + }; + + } // end of sub-group ICMP_Socket + + //---------------------------------------------------------------------------- + + group Socket_Primitives { + + type union IP_CtrlRequest_Type { + TCP_CtrlRequest_Type TCP, + UDP_CtrlRequest_Type UDP, + ICMP_CtrlRequest_Type ICMP + }; + + type union IP_DataRequest_Type { + TCP_DataRequest_Type TCP, + UDP_DataRequest_Type UDP, + ICMP_DataRequest_Type ICMP + }; + + type union IP_CtrlIndication_Type { + TCP_CtrlIndication_Type TCP, + UDP_CtrlIndication_Type UDP, + ICMP_CtrlIndication_Type ICMP, + IP_SocketError_Type Error + }; + + type union IP_DataIndication_Type { + TCP_DataIndication_Type TCP, + UDP_DataIndication_Type UDP, + ICMP_DataIndication_Type ICMP + }; + + } // end of sub-group Socket_Primitives + + } // end of group IP_SocketHandling + + //---------------------------------------------------------------------------- + + + group System_Interface { + + //**************************************************************************** + // ASP definitions + //**************************************************************************** + + type union DRBMUX_CONFIG_REQ { + /* NOTE 1: + * There is just one primitive to configure the whole routing table. + * It is not foreseen to add, remove or manipulate single entries but the table is managed in TTCN and completely configured on any change; (otherwise it might get complicated to identify single entries) + * NOTE 2: + * the SS's routing table shall be empty at the beginning and can be cleared by an empty record (DRBMUX_CONFIG_REQ.RoutingInfo = {}) + * NOTE 3: + * In general a reconfiguration of the routing table during a test case would be necessary only if an ephemeral port is needed to distinguish different routing + * (e.g. when there are several TCP connections of the same service routed to different DRBs) */ + IP_RoutingTable_Type RoutingInfo + }; + + + type union DRBMUX_COMMON_IND_CNF { + Null_Type Confirm, /* confirm DRBMUX_CONFIG_REQ */ + Null_Type Error /* indication of errors at the DRB-MUX: + * An Error shall be raised by the DRB-MUX e.g. in the following cases: + * - in DL when there are IP packets which cannot be routed to any DRB + * i.e. the IP packet does not match to any entry in the routing table or the corresponding RB is not configured + * - in DL when there are several DRBs possible for routing in the same cell + */ + }; + + type union IPSEC_CONFIG_REQ { + IPsec_Configure_Type Configure, + IPsec_Release_Type Release + }; + + type union IPSEC_CONFIG_CNF { + Null_Type Confirm, /* confirm IPSEC_CONFIG_REQ */ + Null_Type Error /* to indicate invalid configuration of IPsec */ + }; + + type record IP_SOCKET_CTRL_REQ { + IP_Connection_Type ConnectionId, + IP_CtrlRequest_Type Req + }; + + type record IP_SOCKET_DATA_REQ { + IP_Connection_Type ConnectionId, + IP_DataRequest_Type Req + }; + + type record IP_SOCKET_CTRL_IND { + IP_Connection_Type ConnectionId, + IP_CtrlIndication_Type Ind + }; + + type record IP_SOCKET_DATA_IND { + IP_Connection_Type ConnectionId, + IP_DataIndication_Type Ind + }; + + type union IP_SOCKET_REQ { + IP_SOCKET_CTRL_REQ CTRL, + IP_SOCKET_DATA_REQ DATA + }; + + type union IP_SOCKET_IND { + IP_SOCKET_CTRL_IND CTRL, + IP_SOCKET_DATA_IND DATA + }; + + //**************************************************************************** + // Port definitions + //**************************************************************************** + + type port IP_CONTROL_PORT message { + out DRBMUX_CONFIG_REQ; + in DRBMUX_COMMON_IND_CNF; + }; + + type port IPSEC_CONTROL_PORT message { + out IPSEC_CONFIG_REQ; + in IPSEC_CONFIG_CNF; + }; + + type port IP_SOCKET_PORT message { + out IP_SOCKET_REQ; + in IP_SOCKET_IND; + }; + + } // End group System_Interface + +} diff --git a/LTE_A_IWD_14wk37/Common/IP_PTC/IP_PTC_Component.ttcn b/LTE_A_IWD_14wk37/Common/IP_PTC/IP_PTC_Component.ttcn new file mode 100644 index 0000000..1015873 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IP_PTC/IP_PTC_Component.ttcn @@ -0,0 +1,123 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-05-26 19:34:53 +0200 (Mon, 26 May 2014) $ +// $Rev: 11335 $ +/******************************************************************************/ + +module IP_PTC_Component { + import from CommonDefs all; + import from IP_ASP_TypeDefs all; + import from HTTP_ASP_TypeDefs all; + import from IMS_ASP_TypeDefs all; + import from IP_PTC_CtrlMsgs all; + + //---------------------------------------------------------------------------- + // Address servers + + type record AddrServerInfo_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + charstring ServerAddr optional, /* the server's address; + global address in case of IPv6 */ + charstring ClientAddr optional, /* IP address to be assigned to the UE via DHCP or ICMPv6; + global address in case of IPv6 */ + IP_DrbInfo_Type DrbInfo optional /* omit as long as a server is not started; + NOTE: the cell is "Any" i.e. it does not matter in terms of the server */ + }; + + type record length(tsc_NoOfPDNs) of AddrServerInfo_Type IP_AddrServerArray_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + + type record PDN_IP_AddrServer_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + IP_AddrServerArray_Type DHCP, /* NOTE: this information is needed for assignment of the IP address only */ + IP_AddrServerArray_Type ICMPv6 /* NOTE: this information is needed for assignment of the IP address only; + * due to the privacy option the UE may use a different IPv6 address after stateless address autoconfiguration + * (see TS 23.401 cl. 5.3.1.2.2) */ + //IP_AddrServerArray_Type DNS_Udp, + //IP_AddrServerArray_Type DNS_Tcp + }; + + //---------------------------------------------------------------------------- + // IMS server + + type record IMS_TCP_Connections_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + IP_Connection_Type Unprotected_pc_us optional, /* unprotected TCP connection established by the SS (i.e. SS is client, UE is server) + (GIBA only) */ + IP_Connection_Type Unprotected_uc_ps optional, /* unprotected TCP connection established by the UE (i.e. UE is client, SS is server) */ + IP_Connection_Type Protected_pc_us optional, /* protected TCP connection established by the SS (i.e. SS is client, UE is server) */ + IP_Connection_Type Protected_uc_ps optional /* protected TCP connection established by the UE (i.e. UE is client, SS is server) */ + }; + + type record IMS_Server_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + IMS_UnprotectedPorts_Type UnprotectedPorts, /* Port_us, Port_ps */ + IMS_ProtectedPorts_Type PrevProtectedPorts optional, /* in case of re-authentication the previous ("old") ports need to be used for sending out the 401 response + even though to avoid race conditions the new SA shall be configured already @sic R5s131040 sic@ */ + IMS_TCP_Connections_Type TcpConnections, + IP_AddrInfo_Type IPv4Addr optional, /* the server's IPv4 address, omit as long as the server is not started */ + IP_AddrInfo_Type IPv6Addr optional, /* the server's IPv6 address, omit as long as the server is not started */ + IPsec_SecurityKeys_Type SecurityKeys optional, /* security keys to be applied for security associations */ + IMS_RegistrationInfo_Type RegistrationInfo optional, /* if present => UE has at least started the registration and in case of non-GIBA IPsec and UDP server for protected signalling are started */ + IP_DrbInfo_Type DrbInfo optional /* omit as long as the server is not started; + * NOTE: the cell is "Any" i.e. it does not matter in terms of the server; + * nevertheless the cell shall not be changed in between start of the IMS server + * and establishement of the protected servers and connections */ + }; + + type record length(tsc_NoOfPDNs) of IMS_Server_Type IMS_ServerArray_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + type record IP_PTC_IMS_Info_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + IMS_ServerArray_Type Server + }; + + //---------------------------------------------------------------------------- + + type component IP_PTC { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + var IP_RoutingTable_Type vc_IP_PTC_DRB_RoutingTable; + var PDN_IP_AddrServer_Type vc_IP_PTC_PDN_AddrServer; + var IP_PTC_IMS_Info_Type vc_IP_PTC_IMS_Info; + + // ports connected to IMS: + port IP_IMS_CTRL_PORT IMS_CTRL[tsc_NoOfPDNs]; + port IP_IMS_SERVER_PORT IMS_Server[tsc_NoOfPDNs]; + port IP_IMS_CLIENT_PORT IMS_Client[tsc_NoOfPDNs]; + + // coordination ports: + port IP_PTC_CTRL_PORT EUTRA_CTRL; + port IP_PTC_CTRL_PORT UTRAN_CTRL; + port IP_PTC_CTRL_PORT GERAN_CTRL; + + // coordination ports to HTTP_PTC + port IP_HTTP_CTRL_PORT HTTPCTRL; + port IP_HTTP_DATA_PORT HTTPDATA; + + // system ports + port IP_CONTROL_PORT IP_CTRL; + port IPSEC_CONTROL_PORT IPSEC_CTRL; + port IP_SOCKET_PORT IP_SOCK; + }; + + type component IP_SYSTEM { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + port IP_CONTROL_PORT IP_CTRL; + port IPSEC_CONTROL_PORT IPSEC_CTRL; + port IP_SOCKET_PORT IP_SOCK; + }; + + //---------------------------------------------------------------------------- + /* + * @desc Create IP PTC and map system ports + * @return IP_PTC + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_IP_PTC_CreateAndMap() return IP_PTC + { + var IP_PTC v_IP_PTC := IP_PTC.create alive; + + map(v_IP_PTC:IP_CTRL, system:IP_CTRL); + map(v_IP_PTC:IPSEC_CTRL, system:IPSEC_CTRL); + map(v_IP_PTC:IP_SOCK, system:IP_SOCK); + + return v_IP_PTC; + } + +} diff --git a/LTE_A_IWD_14wk37/Common/IP_PTC/IP_PTC_CtrlMsgs.ttcn b/LTE_A_IWD_14wk37/Common/IP_PTC/IP_PTC_CtrlMsgs.ttcn new file mode 100644 index 0000000..97efa7f --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IP_PTC/IP_PTC_CtrlMsgs.ttcn @@ -0,0 +1,280 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 22:08:20 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12181 $ +/******************************************************************************/ + + +module IP_PTC_CtrlMsgs { + /* definition of coordination messages to be used by EUTRA_PTC/UTRAN_PTC/GERAN_PTC do configure + routing table for the IP data */ + + import from CommonDefs all; + import from IP_ASP_TypeDefs all; + import from IP_PTC_Templates all; + + //============================================================================ + + type record IP_Start_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + PDN_Index_Type PdnId, + IP_DrbInfo_Type DrbInfo + }; + + type union IP_Stop_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + Null_Type All, + PDN_Index_Type PdnId + }; + + + type record IP_SendRouterAdvertisement_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + PDN_Index_Type PdnId + }; + + //============================================================================ + + type union IP_ConfigReq_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + IP_Start_Type StartIP, + IP_Stop_Type StopIP, /* @sic R5s131000: Null_Type replaced by IP_Stop_Type sic@ */ + Null_Type GeranCnf, /* e.g. to confirm GeranTrigger */ + IP_DrbInfo_Type ChangeCell, /* @sic R5-125676: enhancement for IRAT sic@ */ + IP_SendRouterAdvertisement_Type SendRouterAdvertisement, + IP_RoutingInfo_Type Routing /* @sic R5s130681 change 3: handling of RTP data sic@ */ + }; + + type record IP_GeranTrigger_Type { + integer CellId + }; + + type union IP_Indication_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + @sic R5-133612: trigger to GERAN sic@ */ + Null_Type Cnf, + IP_DrbInfo_Type GeranTrigger + }; + + + //============================================================================ + + type port IP_RAT_CTRL_PORT message { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + out IP_ConfigReq_Type; + in IP_Indication_Type; + }; + + type port IP_PTC_CTRL_PORT message { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + in IP_ConfigReq_Type; + out IP_Indication_Type; + }; + + //**************************************************************************** + // EUTRA/UTRAN/GERAN side + //---------------------------------------------------------------------------- + // Commands: + + template (value) IP_ConfigReq_Type cs_IP_StartReq(PDN_Index_Type p_PdnId, + template (value) IP_DrbInfo_Type p_DrbInfo) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + StartIP := { + PdnId := p_PdnId, + DrbInfo := p_DrbInfo + } + }; + + template (value) IP_Stop_Type cs_IP_StopAll := {All := true}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + template (value) IP_Stop_Type cs_IP_StopPDN(PDN_Index_Type p_PdnId) := {PdnId := p_PdnId}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_IRAT, POS) */ + + template (value) IP_ConfigReq_Type cs_IP_StopReq(template (value) IP_Stop_Type p_IP_Stop) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5s131000: new parameter p_IP_Stop sic@ */ + StopIP := p_IP_Stop + }; + + template (value) IP_ConfigReq_Type cs_IP_GeranCnf := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + GeranCnf := true + }; + + template (value) IP_ConfigReq_Type cs_IP_ChangeEutraCellReq(EUTRA_CellId_Type p_EutraCellId, + template (omit) IP_DrbId_Type p_DrbId := omit) := + { /* @sic R5-125676: new parameter p_DrbId sic@ */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + ChangeCell := { + Eutra := { + CellId := p_EutraCellId, + DrbId := p_DrbId + } + } + }; + + template (value) IP_ConfigReq_Type cs_IP_ChangeUtranCellReq(integer p_UtranCellId, + IP_DrbId_Type p_DrbId) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + ChangeCell := { + Utran := { + CellId := p_UtranCellId, + DrbId := p_DrbId + } + } + }; + + template (value) IP_ConfigReq_Type cs_IP_SendRouterAdvertisementReq(PDN_Index_Type p_PdnId) := + { + SendRouterAdvertisement := { + PdnId := p_PdnId + } + }; + + template (value) IP_ConfigReq_Type cs_IP_ConfigureRoutingReq(InternetProtocol_Type p_Protocol, + PortNumber_Type p_MediaPort, + template (omit) IP_AddrInfo_Type p_IpAddrRemoteUE, + template (value) IP_DrbInfo_Type p_DrbInfo) := + { /* NOTE: p_IpAddrRemoteUE the IP address of the simulated remote UE (i.e. a 'local' address in terms of the routing table) */ + Routing := { + IpInfo := cs_IP_ConnectionId(p_Protocol, cs_IP_Socket(p_IpAddrRemoteUE, p_MediaPort)), + DRB := p_DrbInfo + } + }; + + + template (present) IP_Indication_Type cr_IP_CommonCnf := {Cnf := true}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + template (present) IP_Indication_Type cr_IP_GeranTrigger := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + GeranTrigger := { + Geran := ? + } + }; + + //**************************************************************************** + // IP PTC side + //---------------------------------------------------------------------------- + + template (present) IP_ConfigReq_Type cr_IP_CtrlAnyReq := ?; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + template (value) IP_Indication_Type cs_IP_CommonCnf := {Cnf := true}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + + template (value) IP_Indication_Type cs_IP_GeranTrigger(template (value) IP_DrbInfo_Type p_DrbInfo) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + GeranTrigger := p_DrbInfo + }; + + //**************************************************************************** + // templates for DRB info + //---------------------------------------------------------------------------- + + template (value) IP_DrbInfo_Type cs_DrbInfo_EUTRA(EUTRA_CellId_Type p_CellId, + IP_DrbId_Type p_DrbId) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + /* @sic R5w110204: change of IP_EUTRA_DrbInfo_Type sic@ */ + Eutra := { + CellId := p_CellId, + DrbId := p_DrbId + } + }; + + template (value) IP_DrbInfo_Type cs_DrbInfo_UTRAN(UTRAN_CellId_Type p_CellId, + IP_DrbId_Type p_DrbId) := + { /* @status APPROVED (LTE_A, LTE_IRAT, UTRAN) */ + Utran := { + CellId := f_UtranCellId2Int(p_CellId), + DrbId := p_DrbId + } + }; + + template (value) IP_DrbInfo_Type cs_DrbInfo_GERAN(integer p_CellId, + IP_DrbId_Type p_DrbId) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + Geran := { + CellId := p_CellId, + DrbId := p_DrbId + } + }; + + //**************************************************************************** + // Functions to be called from the test cases + //---------------------------------------------------------------------------- + + /* + * @desc RAT independent function to start DHCP and ICMPv6 server for given PDN + * @param p_Port + * @param p_PdnIndex .. index of the PDN + * @param p_DrbInfo .. DRB on which user plane signalling happens for this PDN + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_IP_Handling_Start(IP_RAT_CTRL_PORT p_Port, + PDN_Index_Type p_PdnIndex, + template (value) IP_DrbInfo_Type p_DrbInfo) + { /* @sic R5-113734 change 8: replacing former f_DHCPv4_Start, f_ICMPv6_Start sic@ */ + p_Port.send(cs_IP_StartReq(p_PdnIndex, p_DrbInfo)); + p_Port.receive(cr_IP_CommonCnf); + } + + /* + * @desc RAT independent function to stop all DHCP and ICMPv6 servers + * @param p_Port + * @param p_IP_Stop (default value: cs_IP_StopAll) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_IP_Handling_Stop(IP_RAT_CTRL_PORT p_Port, + template (value) IP_Stop_Type p_IP_Stop := cs_IP_StopAll) + { /* @sic R5-113734 change 8: replacing former f_DHCPv4_Stop, f_ICMPv6_Stop sic@ */ + /* @sic R5s131000: new parameter p_IP_Stop sic@ */ + p_Port.send(cs_IP_StopReq(p_IP_Stop)); + p_Port.receive(cr_IP_CommonCnf); + } + + /* + * @desc Function to change the EUTRA cell for all entries of the routing table + * @param p_Port + * @param p_EutraCellId .. new cell + * @param p_DrbId (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_IP_ChangeEutraCell(IP_RAT_CTRL_PORT p_Port, + EUTRA_CellId_Type p_EutraCellId, + template (omit) IP_DrbId_Type p_DrbId := omit) + { /* @sic R5-125676: new parameter p_DrbId sic@ */ + p_Port.send(cs_IP_ChangeEutraCellReq(p_EutraCellId, p_DrbId)); + p_Port.receive(cr_IP_CommonCnf); + } + + /* + * @desc Function to change the UTRAN cell for all entries of the routing table + * @param p_Port + * @param p_UtranCellId + * @param p_DrbId + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_IP_ChangeUtranCell(IP_RAT_CTRL_PORT p_Port, + integer p_UtranCellId, + IP_DrbId_Type p_DrbId) + { + p_Port.send(cs_IP_ChangeUtranCellReq(p_UtranCellId, p_DrbId)); + p_Port.receive(cr_IP_CommonCnf); + } + + /* + * @desc Function to trigger the IP PTC to sent out an (unsolicited) router advertisement + * @param p_Port + * @param PDN_Index_Type .. index of the PDN + * @status + */ + function f_IP_RouterAdvertisement(IP_RAT_CTRL_PORT p_Port, + PDN_Index_Type p_PdnIndex) + { + p_Port.send(cs_IP_SendRouterAdvertisementReq(p_PdnIndex)); + p_Port.receive(cr_IP_CommonCnf); + } + + function f_IP_ConfigureRTP_EUTRA(IP_RAT_CTRL_PORT p_Port, + PortNumber_Type p_MediaPort, + template (omit) IP_AddrInfo_Type p_IpAddrRemoteUE, + EUTRA_CellId_Type p_EutraCellId, + IP_DrbId_Type p_DrbId) + { /* configure routing of e.g. RTP data on media port */ + p_Port.send(cs_IP_ConfigureRoutingReq(udp, p_MediaPort, p_IpAddrRemoteUE, cs_DrbInfo_EUTRA(p_EutraCellId, p_DrbId))); + p_Port.receive(cr_IP_CommonCnf); + } + +} diff --git a/LTE_A_IWD_14wk37/Common/IP_PTC/IP_PTC_HTTP_Handler.ttcn b/LTE_A_IWD_14wk37/Common/IP_PTC/IP_PTC_HTTP_Handler.ttcn new file mode 100644 index 0000000..932d9e8 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IP_PTC/IP_PTC_HTTP_Handler.ttcn @@ -0,0 +1,163 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-06-08 21:06:38 +0200 (Sun, 08 Jun 2014) $ +// $Rev: 11667 $ +/******************************************************************************/ + +module IP_PTC_HTTP_Handler { + import from CommonDefs all; + import from IP_ASP_Common all; + import from IP_ASP_TypeDefs all; + import from IP_PTC_Templates all; + import from IP_PTC_Component all; + import from TCP_Functions all; + import from HTTP_ASP_TypeDefs all; + + //---------------------------------------------------------------------------- + // templates for HTTP_ASP_TypeDefs + + template (present) HTTP_CTRL_REQ cr_HttpCtlReq := ?; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + template (present) HTTP_DATA_REQ cr_DataReq := ?; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + + template (value) HTTP_CTRL_CNF cs_HTTP_CTRL_CNF(template (omit) charstring p_ErrorInfo := omit) := { errorInfo := p_ErrorInfo }; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + + + template (value) HTTP_DATA_IND cs_HTTP_DATA_IND(charstring p_ServerAddr, + integer p_ServerPort, + HttpRequest_Type p_HttpRequest) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + routingInfo := cs_HttpRoutingInfo(p_ServerAddr, p_ServerPort), + httpRequest := p_HttpRequest + }; + + //---------------------------------------------------------------------------- + // local type definitions: + + type record HttpServer_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + IP_AddrInfo_Type ServerAddr, + PortNumber_Type PortNumber, + IP_Connection_Type Connection optional + }; + + type record HttpInfo_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + HttpAuthenticationMechanism_Type HttpAuthenticationMechanism, + HttpServer_Type XcapServer optional + //HttpServer_Type BsfServer optional + }; + + + template (value) HttpServer_Type cs_HttpServer_Init(template (value) IP_AddrInfo_Type p_ServerAddr, + template (value) PortNumber_Type p_PortNumber) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + ServerAddr := p_ServerAddr, + PortNumber := p_PortNumber, + Connection := omit + }; + + template (value) HttpInfo_Type cs_HttpInfo_Init(HttpAuthenticationMechanism_Type p_HttpAuthenticationMechanism := noAuthentication, + template (omit) HttpServer_Type p_XcapServer := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + HttpAuthenticationMechanism := p_HttpAuthenticationMechanism, + XcapServer := p_XcapServer + //BsfServer := omit + }; + + /* + * @desc return TCP connection to the given server if nay + * @param p_HttpServer + * @return template (omit) IP_Connection_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_HttpServer_Connection(template (omit) HttpServer_Type p_HttpServer) return template (omit) IP_Connection_Type + { + if (ispresent(p_HttpServer)) { + return p_HttpServer.Connection + } + return omit; + } + + //---------------------------------------------------------------------------- + /* + * @desc handling of HTTP data at IP PTC + * @param p_HttpInfo (by reference) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + altstep a_IP_HTTP_Handler(inout HttpInfo_Type p_HttpInfo) runs on IP_PTC + { + var HTTP_CTRL_REQ v_HTTP_CTRL_REQ; + var HTTP_DATA_REQ v_HTTP_DATA_REQ; + var IP_SOCKET_IND v_IP_SOCKET_IND; + var template (value) IP_AddrInfo_Type v_ServerAddr; + var PortNumber_Type v_PortNumber; + var template (omit) IP_Connection_Type v_XcapConnectionByRef := fl_HttpServer_Connection(p_HttpInfo.XcapServer); + var HttpRequest_Type v_HttpRequest; + var HttpResponse_Type v_HttpResponse; + var TCP_Data_Type v_Data; + var bitstring v_Bitstring; + + var boolean v_XcapServerIsStarted := ispresent(p_HttpInfo.XcapServer); + var boolean v_XcapServerIsConnected := ispresent(p_HttpInfo.XcapServer.Connection); + + [] HTTPCTRL.receive(cr_HttpCtlReq) -> value v_HTTP_CTRL_REQ + { + if (isvalue(v_HTTP_CTRL_REQ.authenticationMechanism)) { + p_HttpInfo.HttpAuthenticationMechanism := valueof(v_HTTP_CTRL_REQ.authenticationMechanism); + } + if (ispresent(v_HTTP_CTRL_REQ.xcapServer)) { + if (v_XcapServerIsStarted) { + f_TcpServer_CloseConnection(p_HttpInfo.XcapServer.Connection); // close IP connection (if any) + f_TcpServer_Stop(p_HttpInfo.XcapServer.ServerAddr, p_HttpInfo.XcapServer.PortNumber); // stop HTTP server + } + select (p_HttpInfo.HttpAuthenticationMechanism) { + case (noAuthentication, httpDigestAuthentication) { + v_ServerAddr := f_Char2IpAddress(v_HTTP_CTRL_REQ.xcapServer.serverAddr); + v_PortNumber := v_HTTP_CTRL_REQ.xcapServer.serverPort; + p_HttpInfo.XcapServer := valueof(cs_HttpServer_Init(v_ServerAddr, v_PortNumber)); + f_TcpServer_Start(v_ServerAddr, v_PortNumber, v_HTTP_CTRL_REQ.drbInfo, http, v_HTTP_CTRL_REQ.tlsInfo); + } + case (gaaAuthentication) { + FatalError(__FILE__, __LINE__, "gaaAuthentication is not supported by IP PTC (yet)"); + } + case else { + FatalError(__FILE__, __LINE__, "invalid HttpAuthenticationMechanism_Type"); + } + } + } + if (ispresent(v_HTTP_CTRL_REQ.bsfServer)) { + // FFS + } + HTTPCTRL.send(cs_HTTP_CTRL_CNF); + } + [v_XcapServerIsStarted] a_TcpServer_AcceptConnection(v_XcapConnectionByRef, p_HttpInfo.XcapServer.ServerAddr, p_HttpInfo.XcapServer.PortNumber) + { + p_HttpInfo.XcapServer.Connection := valueof(v_XcapConnectionByRef); // a_TcpServer_AcceptConnection 'returns' a valid connection i.e. v_ServerConnectionByRef will never be omit + } + [v_XcapServerIsConnected] a_TcpServer_CloseConnection(p_HttpInfo.XcapServer.Connection) + { + p_HttpInfo.XcapServer.Connection := omit; + } + [v_XcapServerIsConnected] HTTPDATA.receive(cr_DataReq) -> value v_HTTP_DATA_REQ + { + v_HttpResponse := v_HTTP_DATA_REQ.httpResponse; + v_Bitstring := encvalue(v_HttpResponse); + v_Data := bit2oct(v_Bitstring); + IP_SOCK.send(cs_TCP_DATA_REQ(p_HttpInfo.XcapServer.Connection, v_Data)); + } + [v_XcapServerIsConnected] IP_SOCK.receive(cr_TCP_DATA_IND(p_HttpInfo.XcapServer.Connection)) -> value v_IP_SOCKET_IND + { + v_Data := v_IP_SOCKET_IND.DATA.Ind.TCP.Recv; + v_Bitstring := oct2bit(v_Data); + if (decvalue(v_Bitstring, v_HttpRequest) != 0) { + FatalError(__FILE__, __LINE__, "HTTP Request cannot be decoded"); + } else { + HTTPDATA.send(cs_HTTP_DATA_IND(f_IP_AddrInfo_AddrStr(p_HttpInfo.XcapServer.ServerAddr), p_HttpInfo.XcapServer.PortNumber, v_HttpRequest)); + } + } + } + +} diff --git a/LTE_A_IWD_14wk37/Common/IP_PTC/IP_PTC_IMS_Handler.ttcn b/LTE_A_IWD_14wk37/Common/IP_PTC/IP_PTC_IMS_Handler.ttcn new file mode 100644 index 0000000..95e19ed --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IP_PTC/IP_PTC_IMS_Handler.ttcn @@ -0,0 +1,953 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-11 16:20:42 +0200 (Thu, 11 Sep 2014) $ +// $Rev: 12209 $ +/******************************************************************************/ + +module IP_PTC_IMS_Handler { + import from CommonDefs all; + import from CommonIP all; + import from IP_ASP_TypeDefs all; + import from IP_PTC_Templates all; + import from IP_PTC_Component all; + import from UDP_Functions all; + import from TCP_Functions all; + import from IMS_ASP_TypeDefs all; + import from IMS_ASP_Templates all; + import from IP_PTC_IMS_Templates all; + + type enumerated IMS_RequestResponse_Type {request, response}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + + type record IMS_LocalRemotePort_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + PortNumber_Type Local, + PortNumber_Type Remote + }; + + //**************************************************************************** + // Configuration templates (system interface) + //---------------------------------------------------------------------------- + + template (value) IPSEC_CONFIG_REQ cas_IPSEC_Config_REQ(template (value) IPsec_SecurityAssociationList_Type p_SA_List, + IPsec_SecurityKeys_Type p_SecurityKeys) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + Configure := { + SA_List := p_SA_List, + SecurityKeys := p_SecurityKeys + } + }; + template (value) IPSEC_CONFIG_REQ cas_IPSEC_Release_REQ(template (value) IPsec_SecurityAssociationList_Type p_SA_List) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + Release := { + SA_List := p_SA_List + } + }; + + template (present) IPSEC_CONFIG_CNF car_IPSEC_CONFIG_CNF := {Confirm := true}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + + //**************************************************************************** + // IPsec + //**************************************************************************** + /* + * @desc Configure IPsec + * @param p_NW_Address + * @param p_UE_Address + * @param p_SecurityInfo + * @param p_SecurityKeys + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_IPsec_Configure(IP_AddrInfo_Type p_NW_Address, + IP_AddrInfo_Type p_UE_Address, + IMS_SecurityInfo_Type p_SecurityInfo, + IPsec_SecurityKeys_Type p_SecurityKeys) runs on IP_PTC + { + var IPsec_IntegrityAlgorithm_Type v_IntegrityAlgorithm := p_SecurityInfo.IntegrityAlgorithm; + var IPsec_CipheringAlgorithm_Type v_CipheringAlgorithm := p_SecurityInfo.CipheringAlgorithm; + var template (value) IPsec_SecurityAssociationList_Type v_SA_List := f_IPsec_SA_List(p_NW_Address, p_UE_Address, p_SecurityInfo, v_IntegrityAlgorithm, v_CipheringAlgorithm); + + IPSEC_CTRL.send(cas_IPSEC_Config_REQ(v_SA_List, p_SecurityKeys)); + IPSEC_CTRL.receive(car_IPSEC_CONFIG_CNF); + } + + /* + * @desc configure SS to release IPsec + * @param p_NW_Address + * @param p_UE_Address + * @param p_SecurityInfo + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_IPsec_Release(IP_AddrInfo_Type p_NW_Address, + IP_AddrInfo_Type p_UE_Address, + IMS_SecurityInfo_Type p_SecurityInfo) runs on IP_PTC + { + var template (value) IPsec_SecurityAssociationList_Type v_SA_List := f_IPsec_SA_List(p_NW_Address, p_UE_Address, p_SecurityInfo); + + IPSEC_CTRL.send(cas_IPSEC_Release_REQ(v_SA_List)); + IPSEC_CTRL.receive(car_IPSEC_CONFIG_CNF); + } + + //**************************************************************************** + // Start/Stop IMS Security + //**************************************************************************** + /* + * @desc Check whether there has been already an initial IMS message sent by the UE + * (=> the UE's IP address is know, i.e. whether it is IPv4 or IPv6 and in case of IPv6 privacy the IP address is the final one) + * @param p_ImsServer + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_ImsServer_UeIsRegistered(IMS_Server_Type p_ImsServer) return boolean + { + return isvalue(p_ImsServer.RegistrationInfo); + } + + /* + * @desc Check whether IPsec is started + * @param p_ImsServer + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_ImsServer_SecurityIsEstablished(IMS_Server_Type p_ImsServer) return boolean + { + return isvalue(p_ImsServer.RegistrationInfo.SecurityInfo); + } + + /* + * @desc Check whether IMS server is started + * @param p_ImsServer + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_ImsServer_IsStarted(IMS_Server_Type p_ImsServer) return boolean + { + return isvalue(p_ImsServer.DrbInfo); + } + + /* + * @desc Stop/Release IPsec + * @param p_ImsServer + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_ImsServer_SecurityStop(inout IMS_Server_Type p_ImsServer) runs on IP_PTC + { + var IP_AddrInfo_Type v_NW_Address; + var IP_AddrInfo_Type v_UE_Address; + var IMS_SecurityInfo_Type v_SecurityInfo; + var PortNumber_Type v_LocalPortServer; + var PortNumber_Type v_LocalPortClient; + + if (fl_ImsServer_SecurityIsEstablished(p_ImsServer)) { + + v_NW_Address := p_ImsServer.RegistrationInfo.NW_Address; + v_UE_Address := p_ImsServer.RegistrationInfo.UE_Address; + v_SecurityInfo := p_ImsServer.RegistrationInfo.SecurityInfo; + v_LocalPortServer := v_SecurityInfo.ProtectedPorts.Port_ps; + v_LocalPortClient := v_SecurityInfo.ProtectedPorts.Port_pc; + + // stop UDP client and server + f_UdpClient_Stop(v_NW_Address, v_LocalPortClient); + f_UdpServer_Stop(v_NW_Address, v_LocalPortServer); + + // stop TCP server + f_TcpClient_CloseConnection(p_ImsServer.TcpConnections.Protected_pc_us); + f_TcpServer_CloseConnection(p_ImsServer.TcpConnections.Protected_uc_ps); + p_ImsServer.TcpConnections.Protected_pc_us := omit; + p_ImsServer.TcpConnections.Protected_uc_ps := omit; + f_TcpServer_Stop(v_NW_Address, v_LocalPortServer); + + // Release security association + fl_IPsec_Release(v_NW_Address, v_UE_Address, v_SecurityInfo); + } + } + + /* + * @desc start another security association + * @param p_ImsServer + * @param p_RegistrationInfo + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_ImsServer_SecurityStartAdditional(IMS_Server_Type p_ImsServer, + IMS_RegistrationInfo_Type p_RegistrationInfo) runs on IP_PTC + { + var IP_AddrInfo_Type v_LocalIpAddr := p_ImsServer.RegistrationInfo.NW_Address; + var IP_AddrInfo_Type v_RemoteIpAddr := p_ImsServer.RegistrationInfo.UE_Address; + var IMS_SecurityInfo_Type v_SecurityInfo := p_ImsServer.RegistrationInfo.SecurityInfo; + var PortNumber_Type v_LocalPortServer := v_SecurityInfo.ProtectedPorts.Port_ps; + var PortNumber_Type v_LocalPortClient := v_SecurityInfo.ProtectedPorts.Port_pc; + var IMS_SecurityInfo_Type v_NewSecurityInfo := p_RegistrationInfo.SecurityInfo; + var PortNumber_Type v_NewLocalPortServer := v_NewSecurityInfo.ProtectedPorts.Port_ps; + var PortNumber_Type v_NewLocalPortClient := v_NewSecurityInfo.ProtectedPorts.Port_pc; + + if (v_LocalPortServer != v_NewLocalPortServer) { + FatalError(__FILE__, __LINE__, "re-configuration of TCP/UDP server not supported"); + /* NOTE: if the server port changes during re-authentication we would need to have 2 TCP and 2 UDP servers in parallel until re-authentication has finished */ + } + else if (v_LocalPortClient != v_NewLocalPortClient) { + /* @sic R5s140303: sic@ + for UDP the client port (port_pc) is used for sending RSPs as well as REQ => any RSP (e.g. 401 as in step 4 of test case 11.2)is sent over port_pc + and the old client needs to kept as long as the old security context may be used => stopping the old UDP client is moved to release of the old security context */ + f_UdpClient_Start(v_LocalIpAddr, v_NewLocalPortClient, p_ImsServer.DrbInfo); + + fl_IPsec_Configure(v_LocalIpAddr, v_RemoteIpAddr, v_NewSecurityInfo, p_ImsServer.SecurityKeys); // we add new security associations but keep the old ones until the re-authentication has finished */ + } + } + + /* + * @desc configure IPsec and start servers for secure signalling + * @param p_RegistrationInfo + * @param p_SecurityKeys + * @param p_DrbInfo + * @return IMS_SecurityInfo_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_ImsServer_SecurityStart(IMS_RegistrationInfo_Type p_RegistrationInfo, + IPsec_SecurityKeys_Type p_SecurityKeys, + IP_DrbInfo_Type p_DrbInfo) runs on IP_PTC + { /* @sic R5s130266 change 1.3, 4, 5 - MCC160 Implementation: SPIs for re-authentication sic@ */ + var IP_AddrInfo_Type v_LocalIpAddr := p_RegistrationInfo.NW_Address; + var IP_AddrInfo_Type v_RemoteIpAddr := p_RegistrationInfo.UE_Address; + var IMS_SecurityInfo_Type v_SecurityInfo := p_RegistrationInfo.SecurityInfo; + var PortNumber_Type v_LocalPortServer := v_SecurityInfo.ProtectedPorts.Port_ps; + var PortNumber_Type v_LocalPortClient := v_SecurityInfo.ProtectedPorts.Port_pc; + + // get SPIs for the network side: + // v_SecurityInfo.SPIs := f_SPIs_SetNetworkValues(v_SPIs); // @sic R5s130266 change 1.3, 4, 5 - MCC160 Implementation: SPIs are set at the IMS PTC now sic@ */ + + fl_IPsec_Configure(v_LocalIpAddr, v_RemoteIpAddr, v_SecurityInfo, p_SecurityKeys); + + f_UdpServer_Start(v_LocalIpAddr, v_LocalPortServer, p_DrbInfo); + f_UdpClient_Start(v_LocalIpAddr, v_LocalPortClient, p_DrbInfo); /* @sic R5s130113 change 4 sic@ */ + f_TcpServer_Start(v_LocalIpAddr, v_LocalPortServer, p_DrbInfo); + } + + //**************************************************************************** + // Start/Stop IMS Server + //**************************************************************************** + + template (value) IMS_TCP_Connections_Type cs_IMS_TCP_Connections_Init := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + Unprotected_pc_us := omit, + Unprotected_uc_ps := omit, + Protected_pc_us := omit, + Protected_uc_ps := omit + }; + + template (value) IMS_Server_Type cs_IMS_Server_Init := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + UnprotectedPorts := { + Port_us := tsc_IMS_PortNumber_5060, + Port_ps := tsc_IMS_PortNumber_5060 + }, + PrevProtectedPorts := omit, + TcpConnections := cs_IMS_TCP_Connections_Init, + IPv4Addr := omit, + IPv6Addr := omit, + SecurityKeys := omit, + RegistrationInfo := omit, + DrbInfo := omit + }; + + /* + * @desc Stop IMS server and the related TCP/UDP servers + * @param p_ImsServer + * @return IMS_Server_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_IP_IMS_Stop(IMS_Server_Type p_ImsServer) runs on IP_PTC return IMS_Server_Type + { + var IMS_Server_Type v_ImsServer := p_ImsServer; + + if (f_ImsServer_IsStarted(v_ImsServer)) { + + fl_ImsServer_SecurityStop(v_ImsServer); + + f_UdpServer_Stop(v_ImsServer.IPv4Addr, tsc_IMS_PortNumber_5060); + f_UdpServer_Stop(v_ImsServer.IPv6Addr, tsc_IMS_PortNumber_5060); + + f_TcpClient_CloseConnection(p_ImsServer.TcpConnections.Unprotected_pc_us); + f_TcpServer_CloseConnection(p_ImsServer.TcpConnections.Unprotected_uc_ps); + + f_TcpServer_Stop(v_ImsServer.IPv4Addr, tsc_IMS_PortNumber_5060); + f_TcpServer_Stop(v_ImsServer.IPv6Addr, tsc_IMS_PortNumber_5060); + + v_ImsServer := valueof(cs_IMS_Server_Init); + } + return v_ImsServer; + } + + /* + * @desc start IMS server + * @param p_ImsServer + * @param p_P_CSCF_IPv4Address + * @param p_P_CSCF_IPv6Address + * @param p_DrbInfo + * @return IMS_Server_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_IP_IMS_Start(IMS_Server_Type p_ImsServer, + charstring p_P_CSCF_IPv4Address, + charstring p_P_CSCF_IPv6Address, + IP_DrbInfo_Type p_DrbInfo) runs on IP_PTC return IMS_Server_Type + { + var IMS_Server_Type v_ImsServer := p_ImsServer; + var PortNumber_Type v_PortNumber := v_ImsServer.UnprotectedPorts.Port_ps; + + v_ImsServer.IPv4Addr := valueof(cs_IPv4Addr(p_P_CSCF_IPv4Address)); + v_ImsServer.IPv6Addr := valueof(cs_IPv6Addr(p_P_CSCF_IPv6Address)); + v_ImsServer.DrbInfo := p_DrbInfo; + + /* Start UDP servers for the given PDN; + * Note: if there is already a UDP server using the same IP address and port, f_UdpServer_Start will cause an error raised by the SS; + * => it is implicitly checked that different PDNs have different addresses as requested by 36.523-3 cl. 4.2.4.6 */ + f_UdpServer_Start(v_ImsServer.IPv4Addr, v_PortNumber, p_DrbInfo); + f_UdpServer_Start(v_ImsServer.IPv6Addr, v_PortNumber, p_DrbInfo); + + /* Start TCP servers for the given PDN */ + f_TcpServer_Start(v_ImsServer.IPv4Addr, v_PortNumber, p_DrbInfo); + f_TcpServer_Start(v_ImsServer.IPv6Addr, v_PortNumber, p_DrbInfo); + + return v_ImsServer; + } + + /* + * @desc Close TCP connections + * @param p_TcpConnections + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_IP_IMS_CloseTCP(IMS_TCP_Connections_Type p_TcpConnections) runs on IP_PTC + { + f_TcpClient_CloseConnection(p_TcpConnections.Unprotected_pc_us); + f_TcpServer_CloseConnection(p_TcpConnections.Unprotected_uc_ps); + f_TcpClient_CloseConnection(p_TcpConnections.Protected_pc_us); + f_TcpServer_CloseConnection(p_TcpConnections.Protected_uc_ps); + } + + //============================================================================ + // Access functions + + /* + * @desc Function to get the pair of ports for messages sent in DL (TX); + * @param p_ImsServer + * @param p_ProtectedUnprotected + * @param p_Protocol + * @param p_RequestResponse + * @return IMS_LocalRemotePort_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_IP_IMS_GetPortTX(IMS_Server_Type p_ImsServer, + IMS_ProtectedUnprotected_Type p_ProtectedUnprotected, // protected or unprotected + InternetProtocol_Type p_Protocol, // udp or tcp + IMS_RequestResponse_Type p_RequestResponse) // request or response + return IMS_LocalRemotePort_Type + { /* NOTE1: even when security is started it shall be possible to send e.g. the RegisterResponse on an unprotected port + * => we need to have p_ProtectedUnprotected and cannot just use fl_ImsServer_SecurityIsEstablished * + * NOTE2: function returns a value even for the unprotected local tcp port when the SS is client (GIBA only); + * this port shall be ignored and instead an ephemeral port shall be assigned by the system */ + + var IMS_ProtectedPorts_Type v_ProtectedPorts; + var IMS_LocalRemotePort_Type v_LocalRemotePort; + + select (p_ProtectedUnprotected) { + case (protected) { + if (not fl_ImsServer_SecurityIsEstablished(p_ImsServer)) { + FatalError(__FILE__, __LINE__, "no security established"); + } + if (ispresent(p_ImsServer.PrevProtectedPorts)) { /* re-authentication: use old ports for 401 response @sic R5s131040 sic@ */ + v_ProtectedPorts := p_ImsServer.PrevProtectedPorts; + } else { + v_ProtectedPorts := p_ImsServer.RegistrationInfo.SecurityInfo.ProtectedPorts; + } + select (p_Protocol) { + case (udp) { + v_LocalRemotePort.Local := v_ProtectedPorts.Port_pc; + v_LocalRemotePort.Remote := v_ProtectedPorts.Port_us; + } + case (tcp) { + select (p_RequestResponse) { + case (request) { + v_LocalRemotePort.Local := v_ProtectedPorts.Port_pc; + v_LocalRemotePort.Remote := v_ProtectedPorts.Port_us; + } + case (response) { + v_LocalRemotePort.Local := v_ProtectedPorts.Port_ps; + v_LocalRemotePort.Remote := v_ProtectedPorts.Port_uc; + } + } + } + } + } + case (unprotected) { + v_LocalRemotePort.Local := p_ImsServer.UnprotectedPorts.Port_ps; + v_LocalRemotePort.Remote := p_ImsServer.UnprotectedPorts.Port_us; + } + } + return v_LocalRemotePort; + } + + //**************************************************************************** + // UL Data + //---------------------------------------------------------------------------- + /* + * @desc for UDP client and server are not distinguished in terms of portnumbers (i.e. UE sends both reponses and requests to the NW's server port) + * => to get out whether we've received a response or a request we need to evaluate the message content + * @param p_Data + * @return IMS_RequestResponse_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_IP_IMS_UL_ResponseOrRequest(Datagram_Content_Type p_Data) return IMS_RequestResponse_Type + { + var charstring v_SIP_Message := oct2char(substr(p_Data, 0, 20)); // @sic R5s130514 sic@ + var template charstring v_AnyResponse := pattern "SIP/[1-9][.][0-9] [1-9][0-9][0-9]*"; // @sic R5s130514 additional change sic@ + + if (match(v_SIP_Message, v_AnyResponse)) { + return response; + } else { + return request; + } + } + + /* + * @desc send request from the UE to the IMS PTC which is connected to the given port + * @param p_Port + * @param p_RoutingInfo + * @param p_Data + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_IP_IMS_UL_DecodeAndSendRequest(IP_IMS_SERVER_PORT p_Port, + template (value) IMS_RoutingInfo_Type p_RoutingInfo, + bitstring p_Data) + { + var IMS_Request_Type v_Request; + + if (decvalue(p_Data, v_Request) != 0) { + FatalError(__FILE__, __LINE__, "IMS Request cannot be decoded"); + return; + } + + /* p_Port.checkstate: new TTCN-3 feature acc. to V4.3.2 (clause 22.5.5); + as long as this operation is not used we will get a runtime when sending on a port what is not connected (i.e. when there is no IMS PTC on the other side) */ + +/* if (not p_Port.checkstate("Connected")) { */ +/* FatalError(__FILE__, __LINE__, "no IMS handling for this PDN"); */ +/* } */ + + p_Port.send(cas_IMS_DATA_REQ(p_RoutingInfo, v_Request)); + } + + /* + * @desc decode UL IMS response and hand it over to the IMS PTC + * @param p_Port + * @param p_RoutingInfo + * @param p_Data + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_IP_IMS_UL_DecodeAndSendResponse(IP_IMS_CLIENT_PORT p_Port, + template (value) IMS_RoutingInfo_Type p_RoutingInfo, + bitstring p_Data) + { /* send response from the UE to the IMS PTC which is connected to the given port */ + var IMS_Response_Type v_Response; + + if (decvalue(p_Data, v_Response) != 0) { + FatalError(__FILE__, __LINE__, "IMS Response cannot be decoded"); + return; + } + + /* p_Port.checkstate: new TTCN-3 feature acc. to V4.3.2 (clause 22.5.5); + as long as this operation is not used we will get a runtime when sending on a port what is not connected (i.e. when there is no IMS PTC on the other side) */ + +/* if (not p_Port.checkstate("Connected")) { */ +/* FatalError(__FILE__, __LINE__, "no IMS handling for this PDN"); */ +/* } */ + + p_Port.send(cas_IMS_DATA_RSP(p_RoutingInfo, v_Response)); + } + + /* + * @desc foreward message sent by the UE to the IMS PTC which is started for the given PDN + * @param p_PdnIndex + * @param p_RequestResponse + * @param p_RoutingInfo + * @param p_Data + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_IP_IMS_UL_DecodeAndSend(integer p_PdnIndex, + IMS_RequestResponse_Type p_RequestResponse, + template (value) IMS_RoutingInfo_Type p_RoutingInfo, + Datagram_Content_Type p_Data) runs on IP_PTC + { + var bitstring v_Bitstring := oct2bit(p_Data); + + select (p_RequestResponse) { + case (request) { + fl_IP_IMS_UL_DecodeAndSendRequest(IMS_Server[p_PdnIndex], p_RoutingInfo, v_Bitstring); + } + case (response) { + fl_IP_IMS_UL_DecodeAndSendResponse(IMS_Client[p_PdnIndex], p_RoutingInfo, v_Bitstring); + } + } + } + + /* + * @desc handling of UL IMS messages via UDP + * @param p_ImsServer + * @param p_PdnIndex + * @param p_IpAddr + * @param p_PortNumber + * @param p_ProtectedUnprotected + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + altstep a_IP_IMS_UL_ReceiveDataUDP(IMS_Server_Type p_ImsServer, + integer p_PdnIndex, + template (present) IP_AddrInfo_Type p_IpAddr, + template (present) PortNumber_Type p_PortNumber, + IMS_ProtectedUnprotected_Type p_ProtectedUnprotected) runs on IP_PTC + { /* receive data from the UE */ + var IP_SOCKET_IND v_IP_SOCKET_IND; + var Datagram_Content_Type v_Data; + var template (omit) IP_AddrInfo_Type v_NW_Address := omit; + var template (omit) IP_AddrInfo_Type v_UE_Address := omit; + var template (value) IMS_RoutingInfo_Type v_RoutingInfo; + var IMS_RequestResponse_Type v_RequestResponse; + + // receive UDP data + [] IP_SOCK.receive(cr_UDP_DATA_IND(cr_IP_Socket(p_IpAddr, p_PortNumber))) + -> value v_IP_SOCKET_IND + { + v_Data := v_IP_SOCKET_IND.DATA.Ind.UDP.RecvFrom.Buffer; + if (not fl_ImsServer_UeIsRegistered(p_ImsServer)) { + /* initial access: => IMS PTC gets handed over the UE's and the NW's IP address (=> IPv4 or IPv6) */ + v_NW_Address := v_IP_SOCKET_IND.DATA.ConnectionId.Local.IpAddr; // may be IPv4 or IPv6 + v_UE_Address := v_IP_SOCKET_IND.DATA.ConnectionId.Remote.IpAddr; // may be IPv4 or IPv6 + v_RequestResponse := request; // intial access is only applicable for requests from the UE + } + else { + v_RequestResponse := fl_IP_IMS_UL_ResponseOrRequest(v_Data); /* for UDP Requests and Responses are sent by the UE from Port_uc to Port_ps, + * i.e. there is not data for Port_us to Port_pc and therefore Requests and Responses + * cannot be distinguished by the port on which they have been received */ + } + v_RoutingInfo := cs_IMS_RoutingInfo(udp, p_ProtectedUnprotected, v_UE_Address, v_NW_Address); + fl_IP_IMS_UL_DecodeAndSend(p_PdnIndex, v_RequestResponse, v_RoutingInfo, v_Data); + } + } + + /* + * @desc receive TCP message + * @param p_ImsServer + * @param p_PdnIndex + * @param p_TCP_Connections + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + altstep a_IP_IMS_UL_ReceiveDataTCP(IMS_Server_Type p_ImsServer, + integer p_PdnIndex, + IMS_TCP_Connections_Type p_TCP_Connections) runs on IP_PTC + { + var IP_SOCKET_IND v_IP_SOCKET_IND; + var Datagram_Content_Type v_Data; + var template (omit) IP_AddrInfo_Type v_NW_Address := omit; + var template (omit) IP_AddrInfo_Type v_UE_Address := omit; + var template (value) IMS_RoutingInfo_Type v_RoutingInfo; + var boolean v_Unprotected_uc_ps_IsConnected := isvalue(p_TCP_Connections.Unprotected_uc_ps); + var boolean v_Unprotected_pc_us_IsConnected := isvalue(p_TCP_Connections.Unprotected_pc_us); + var boolean v_Protected_uc_ps_IsConnected := isvalue(p_TCP_Connections.Protected_uc_ps); + var boolean v_Protected_pc_us_IsConnected := isvalue(p_TCP_Connections.Protected_pc_us); + + // receive TCP data + [v_Unprotected_uc_ps_IsConnected] IP_SOCK.receive(cr_TCP_DATA_IND(p_TCP_Connections.Unprotected_uc_ps)) + -> value v_IP_SOCKET_IND + { // request at the SS' unprotected server (typically initial REGISTER) + v_Data := v_IP_SOCKET_IND.DATA.Ind.TCP.Recv; + + if (not fl_ImsServer_UeIsRegistered(p_ImsServer)) { + /* initial access: => IMS PTC gets handed over the UE's and the NW's IP address (=> IPv4 or IPv6) */ + v_NW_Address := v_IP_SOCKET_IND.DATA.ConnectionId.Local.IpAddr; // may be IPv4 or IPv6 + v_UE_Address := v_IP_SOCKET_IND.DATA.ConnectionId.Remote.IpAddr; // may be IPv4 or IPv6 + } + v_RoutingInfo := cs_IMS_RoutingInfo(tcp, unprotected, v_UE_Address, v_NW_Address); + fl_IP_IMS_UL_DecodeAndSend(p_PdnIndex, request, v_RoutingInfo, v_Data); + } + [v_Unprotected_pc_us_IsConnected] IP_SOCK.receive(cr_TCP_DATA_IND(p_TCP_Connections.Unprotected_pc_us)) + -> value v_IP_SOCKET_IND + { // response the SS' unprotected client (NOTE: there is an unprotected client in case of GIBA only) + v_Data := v_IP_SOCKET_IND.DATA.Ind.TCP.Recv; + v_RoutingInfo := cs_IMS_RoutingInfo(tcp, unprotected); + fl_IP_IMS_UL_DecodeAndSend(p_PdnIndex, response, v_RoutingInfo, v_Data); + } + [v_Protected_uc_ps_IsConnected] IP_SOCK.receive(cr_TCP_DATA_IND(p_TCP_Connections.Protected_uc_ps)) + -> value v_IP_SOCKET_IND + { // request at the SS' protected server + v_Data := v_IP_SOCKET_IND.DATA.Ind.TCP.Recv; + v_RoutingInfo := cs_IMS_RoutingInfo(tcp, protected); + fl_IP_IMS_UL_DecodeAndSend(p_PdnIndex, request, v_RoutingInfo, v_Data); + } + [v_Protected_pc_us_IsConnected] IP_SOCK.receive(cr_TCP_DATA_IND(p_TCP_Connections.Protected_pc_us)) + -> value v_IP_SOCKET_IND + { // response the SS' protected client + v_Data := v_IP_SOCKET_IND.DATA.Ind.TCP.Recv; + v_RoutingInfo := cs_IMS_RoutingInfo(tcp, protected); + fl_IP_IMS_UL_DecodeAndSend(p_PdnIndex, response, v_RoutingInfo, v_Data); + } + } + + /* + * @desc receive UDP datagram from protected or unprotected port + * @param p_ImsServer + * @param p_PdnIndex + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + altstep a_IP_IMS_UL_Handler(IMS_Server_Type p_ImsServer, + integer p_PdnIndex) runs on IP_PTC + { + var boolean v_ImsServer_IsStarted := f_ImsServer_IsStarted(p_ImsServer); + var boolean v_SecurityIsEstablished := v_ImsServer_IsStarted and fl_ImsServer_SecurityIsEstablished(p_ImsServer); + + [v_SecurityIsEstablished] /* receive protected IMS message; + * NOTE: for UDP Requests and Responses both are sent by the UE from Port_uc to Port_ps, + * i.e. we don't need to listen at the port Port_pc */ + a_IP_IMS_UL_ReceiveDataUDP(p_ImsServer, + p_PdnIndex, + p_ImsServer.RegistrationInfo.NW_Address, + p_ImsServer.RegistrationInfo.SecurityInfo.ProtectedPorts.Port_ps, + protected); + + [v_ImsServer_IsStarted] + a_IP_IMS_UL_ReceiveDataUDP(p_ImsServer, + p_PdnIndex, + (p_ImsServer.IPv4Addr, p_ImsServer.IPv6Addr), + tsc_IMS_PortNumber_5060, + unprotected); + + [v_ImsServer_IsStarted] + a_IP_IMS_UL_ReceiveDataTCP(p_ImsServer, + p_PdnIndex, + p_ImsServer.TcpConnections); + } + + //**************************************************************************** + // DL Data + //---------------------------------------------------------------------------- + /* + * @desc Send IMS message in DL either on protected or on unprotected port + * Routing: + * there are several assumptions regarding the routing: + * - when there are multiple PDNs there shall be different P-CSCF addresses for each PDN + * - IP PTC shall be configured with the IP addresses to be used immediately after the initial REGISTER has been sent by the UE + * => even when there is more than one address the IP PTC knows which one to use + * - when security is started, network and UE address are stored together with the security association + * => on protected ports the routing is well-known at the IP-PTC + * @param p_ImsServer (by reference) + * @param p_RoutingInfo + * @param p_RequestResponse + * @param p_Data + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_IP_IMS_DL_Send(inout IMS_Server_Type p_ImsServer, + IMS_RoutingInfo_Type p_RoutingInfo, + IMS_RequestResponse_Type p_RequestResponse, + bitstring p_Data) runs on IP_PTC + { + var InternetProtocol_Type v_Protocol := p_RoutingInfo.Protocol; + var IMS_ProtectedUnprotected_Type v_ProtectedUnprotected; + var IMS_LocalRemotePort_Type v_LocalRemotePort; + var template (omit) PortNumber_Type v_LocalPort; + var PortNumber_Type v_RemotePort; + var IP_AddrInfo_Type v_UE_Address; + var IP_AddrInfo_Type v_NW_Address; + var template (value) IP_Socket_Type v_LocalSocket; + var template (value) IP_Socket_Type v_RemoteSocket; + var template (omit) IP_Connection_Type v_TCP_Connection := omit; + var IP_Connection_Type v_NewTcpConnectionByRef; + var Datagram_Content_Type v_Data := bit2oct(p_Data); + var boolean v_SecurityIsEstablished := fl_ImsServer_SecurityIsEstablished(p_ImsServer); + var boolean v_IsUnprotected; + + if (isvalue(p_RoutingInfo.Security)) { + /* Security may be omitted by the IMS PTC when the IMS message shall be sent protected or unprotected based on whether security is configured or not; + in case of the initial REGISTER response security is already configured but the reponse needs to be sent unprotected (as the UE has not fully configured security yet) + => at least in this case the IMS PTC shall set the "Security" field of the RoutingInfo */ + v_ProtectedUnprotected := p_RoutingInfo.Security; + if ((v_ProtectedUnprotected == protected) and not v_SecurityIsEstablished) { + FatalError(__FILE__, __LINE__, "IMS security not established"); + } + } else if (v_SecurityIsEstablished) { + v_ProtectedUnprotected := protected; + } else { + v_ProtectedUnprotected := unprotected; + } + v_LocalRemotePort := fl_IP_IMS_GetPortTX(p_ImsServer, v_ProtectedUnprotected, v_Protocol, p_RequestResponse); + v_LocalPort := v_LocalRemotePort.Local; + v_RemotePort := v_LocalRemotePort.Remote; + + if (isvalue(p_RoutingInfo.NW_Address) and isvalue(p_RoutingInfo.UE_Address)) { + v_NW_Address := p_RoutingInfo.NW_Address; + v_UE_Address := p_RoutingInfo.UE_Address; + } else if (fl_ImsServer_UeIsRegistered(p_ImsServer)) { + v_NW_Address := p_ImsServer.RegistrationInfo.NW_Address; + v_UE_Address := p_ImsServer.RegistrationInfo.UE_Address; + } else { + FatalError(__FILE__, __LINE__, "missing IP addresses"); + } + + select (v_Protocol) { + case (udp) { + v_LocalSocket := cs_IP_Socket(v_NW_Address, v_LocalPort); + v_RemoteSocket := cs_IP_Socket(v_UE_Address, v_RemotePort); + IP_SOCK.send(cs_UDP_DATA_REQ(v_LocalSocket, v_RemoteSocket, v_Data)); + } + case (tcp) { + select (p_RequestResponse) { + case (response) { + select (v_ProtectedUnprotected) { + case (unprotected) { + v_TCP_Connection := p_ImsServer.TcpConnections.Unprotected_uc_ps; + } + case (protected) { + v_TCP_Connection := p_ImsServer.TcpConnections.Protected_uc_ps; + } + } + } + case (request) { + select (v_ProtectedUnprotected) { + case (unprotected) { + v_TCP_Connection := p_ImsServer.TcpConnections.Unprotected_pc_us; + v_IsUnprotected := true; + } + case (protected) { + v_TCP_Connection := p_ImsServer.TcpConnections.Protected_pc_us; + v_IsUnprotected := false; + } + } + if (not isvalue(v_TCP_Connection)) { + if (v_IsUnprotected) { + v_LocalPort := omit; // in case of an unprotected TCP connection to UE there is no need to specify any specific local port but we can use an ephemeral port instead + } + v_NewTcpConnectionByRef := f_TcpClient_ConnectReq(cs_IP_Socket(v_NW_Address, v_LocalPort), cs_IP_Socket(v_UE_Address, v_RemotePort), ims); + alt { + [] a_IP_IMS_TCP_ConnectionControl(p_ImsServer) { /* @sic R5s140713 - MCC160 implementation sic@ */ + repeat; + } + [] a_TcpClient_ConnectCnf(v_NewTcpConnectionByRef, p_ImsServer.DrbInfo) { + if (v_IsUnprotected) { + p_ImsServer.TcpConnections.Unprotected_pc_us := v_NewTcpConnectionByRef; + } else { + p_ImsServer.TcpConnections.Protected_pc_us := v_NewTcpConnectionByRef; + } + v_TCP_Connection := v_NewTcpConnectionByRef; + } + } + } + } + } + + if (not isvalue(v_TCP_Connection)) { + FatalError(__FILE__, __LINE__, "no valid TCP connection"); + } + IP_SOCK.send(cs_TCP_DATA_REQ(valueof(v_TCP_Connection), v_Data)); + } + case else { + FatalError(__FILE__, __LINE__, "invalid protocol"); + return; + } + } + } + + /* + * @desc handle requests or responses from the IMS PTC + * @param p_ImsServer (by reference) + * @param p_PdnIndex + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + altstep a_IP_IMS_DL_Handler(inout IMS_Server_Type p_ImsServer, + integer p_PdnIndex) runs on IP_PTC + { + var IMS_DATA_REQ v_IMS_DATA_REQ; + var IMS_DATA_RSP v_IMS_DATA_RSP; + var bitstring v_Data; + + [] IMS_Server[p_PdnIndex].receive(cr_IMS_DATA_RSP_Any) -> value v_IMS_DATA_RSP + { + v_Data := encvalue(v_IMS_DATA_RSP.Response); + fl_IP_IMS_DL_Send(p_ImsServer, v_IMS_DATA_RSP.RoutingInfo, response, v_Data); + } + [] IMS_Client[p_PdnIndex].receive(cr_IMS_DATA_REQ_Any) -> value v_IMS_DATA_REQ + { + v_Data := encvalue(v_IMS_DATA_REQ.Request); + fl_IP_IMS_DL_Send(p_ImsServer, v_IMS_DATA_REQ.RoutingInfo, request, v_Data); + } + } + + //**************************************************************************** + // Security configuration + //---------------------------------------------------------------------------- + /* + * @desc handle configuration from the IMS PTC + * @param p_ImsServer (by reference) + * @param p_Port + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + altstep a_IP_IMS_Config(inout IMS_Server_Type p_ImsServer, + IP_IMS_CTRL_PORT p_Port) runs on IP_PTC + { /* @sic R5s130266 change 1.3, 4, 5 - MCC160 Implementation: SPIs and protected ports are fully controlled by the IMS PTC sic@ */ + /* @sic R5s130900 - MCC160 implementation for re-authentication sic@ */ + var IMS_CONFIG_REQ v_IMS_CONFIG_REQ; + var IMS_PortsAndSecurityConfigReq_Type v_PortsAndSecurityConfig; + var IMS_RegistrationInfo_Type v_RegistrationInfo; + var IMS_SecurityInfo_Type v_SecurityInfo; + + [] p_Port.receive(car_IMS_InstallKey_REQ) -> value v_IMS_CONFIG_REQ + { + p_ImsServer.SecurityKeys := v_IMS_CONFIG_REQ.InstallKey; + p_Port.send(cas_IMS_InstallKey_CNF); + } + + [] p_Port.receive(car_IMS_PortsAndSecurityConfig_REQ) -> value v_IMS_CONFIG_REQ + { + v_PortsAndSecurityConfig := v_IMS_CONFIG_REQ.PortsAndSecurityConfig; + v_RegistrationInfo := v_PortsAndSecurityConfig.RegistrationInfo; + + if (isvalue(v_PortsAndSecurityConfig.UnprotectedPort_us)) { + p_ImsServer.UnprotectedPorts.Port_us := v_PortsAndSecurityConfig.UnprotectedPort_us; // set UE's port number as requested by the UE + } else { + p_ImsServer.UnprotectedPorts.Port_us := tsc_IMS_PortNumber_5060; // restore port number e.g. if it has been set to other value in previous session + } + + if (isvalue(v_RegistrationInfo.SecurityInfo)) { /* non-GIBA + @sic R5s120858 change 6..8 - MCC160 implementation sic@ */ + if (not isvalue(p_ImsServer.SecurityKeys)) { + FatalError(__FILE__, __LINE__, "security keys missing"); + } + if (fl_ImsServer_SecurityIsEstablished(p_ImsServer)) { /* => re-authentication */ + fl_ImsServer_SecurityStartAdditional(p_ImsServer, v_RegistrationInfo); /* @sic R5s130900 sic@ */ + p_ImsServer.PrevProtectedPorts := p_ImsServer.RegistrationInfo.SecurityInfo.ProtectedPorts; /* @sic R5s131040 sic@ */ + } + else { + fl_ImsServer_SecurityStart(v_RegistrationInfo, p_ImsServer.SecurityKeys, p_ImsServer.DrbInfo); + } + } + else { + fl_ImsServer_SecurityStop(p_ImsServer); + } + p_ImsServer.RegistrationInfo := v_RegistrationInfo; + + p_Port.send(cas_IMS_PortsAndSecurityConfig_CNF); + } + [] p_Port.receive(car_IMS_SecurityRelease_REQ) -> value v_IMS_CONFIG_REQ + { + v_SecurityInfo := v_IMS_CONFIG_REQ.SecurityRelease; + // Release security association + fl_IPsec_Release(p_ImsServer.RegistrationInfo.NW_Address, + p_ImsServer.RegistrationInfo.UE_Address, + v_SecurityInfo); + /* @sic R5s140303 - Additional change: UDP client (port_pc) needs to be release here as it cannot be released in fl_ImsServer_SecurityStartAdditional sic@ */ + f_UdpClient_Stop(p_ImsServer.RegistrationInfo.NW_Address, v_SecurityInfo.ProtectedPorts.Port_pc); + + p_Port.send(cas_IMS_SecurityRelease_CNF); + p_ImsServer.PrevProtectedPorts := omit; /* @sic R5s131040 sic@ */ + } + [] p_Port.receive(car_IMS_RegInfoRelease_REQ) -> value v_IMS_CONFIG_REQ /* @sic R5s140123 change 8 sic@ */ + { + fl_ImsServer_SecurityStop(p_ImsServer); + p_ImsServer.RegistrationInfo := omit; + p_Port.send(cas_IMS_RegInfoRelease_CNF); + } + [] p_Port.receive(car_IMS_CloseTCP_REQ) -> value v_IMS_CONFIG_REQ /* @sic R5s130988 change 1 - MCC160 implementation sic@ */ + { + f_IP_IMS_CloseTCP(p_ImsServer.TcpConnections); + p_ImsServer.TcpConnections := valueof(cs_IMS_TCP_Connections_Init); + p_Port.send(cas_IMS_CloseTCP_CNF); + } + } + + //**************************************************************************** + // TCP connection control + //---------------------------------------------------------------------------- + /* + * @desc handle TCP connection establishment and release initiated by the UE (protected or unprotected) + * @param p_ImsServer (by reference) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + altstep a_IP_IMS_TCP_ConnectionControl(inout IMS_Server_Type p_ImsServer) runs on IP_PTC + { + var IMS_TCP_Connections_Type v_TCP_Connections := p_ImsServer.TcpConnections; + var template (omit) IP_Connection_Type v_UnprotectedConnectionByRef := v_TCP_Connections.Unprotected_uc_ps; + var template (omit) IP_Connection_Type v_ProtectedConnectionByRef := v_TCP_Connections.Protected_uc_ps; + var boolean v_Unprotected_uc_ps_IsConnected := isvalue(v_TCP_Connections.Unprotected_uc_ps); + var boolean v_Unprotected_pc_us_IsConnected := isvalue(v_TCP_Connections.Unprotected_pc_us); + var boolean v_Protected_uc_ps_IsConnected := isvalue(v_TCP_Connections.Protected_uc_ps); + var boolean v_Protected_pc_us_IsConnected := isvalue(v_TCP_Connections.Protected_pc_us); + var boolean v_ImsServerIsStarted := f_ImsServer_IsStarted(p_ImsServer); + var boolean v_SecurityIsStarted := v_ImsServerIsStarted and fl_ImsServer_SecurityIsEstablished(p_ImsServer); + var template (present) IP_AddrInfo_Type v_ServerAddrIPv4orIPv6 := (p_ImsServer.IPv4Addr, p_ImsServer.IPv6Addr); // IPv4 or IPv6 address + + [v_ImsServerIsStarted] a_TcpServer_AcceptConnection(v_UnprotectedConnectionByRef, v_ServerAddrIPv4orIPv6, p_ImsServer.UnprotectedPorts.Port_ps) + { + if (isvalue(v_UnprotectedConnectionByRef)) { /* @sic R5s140647 change 2: sic@ + connection may be closed and a_TcpServer_AcceptConnection called due to TCP_CLOSE_CNF + => v_UnprotectedConnectionByRef may be omit already before entrance of a_TcpServer_AcceptConnection and therefore is still omit afterwards */ + p_ImsServer.TcpConnections.Unprotected_uc_ps := valueof(v_UnprotectedConnectionByRef); + } + } + [v_SecurityIsStarted] a_TcpServer_AcceptConnection(v_ProtectedConnectionByRef, p_ImsServer.RegistrationInfo.NW_Address, p_ImsServer.RegistrationInfo.SecurityInfo.ProtectedPorts.Port_ps) + { + if (isvalue(v_ProtectedConnectionByRef)) { /* @sic R5s140647 change 2 - additional change sic@ */ + p_ImsServer.TcpConnections.Protected_uc_ps := valueof(v_ProtectedConnectionByRef); + } + } + [v_Unprotected_uc_ps_IsConnected] a_TcpServer_CloseConnection(v_TCP_Connections.Unprotected_uc_ps) + { // unprotected connection from UE to SS + p_ImsServer.TcpConnections.Unprotected_uc_ps := omit; + } + [v_Unprotected_pc_us_IsConnected] a_TcpServer_CloseConnection(v_TCP_Connections.Unprotected_pc_us) + { // unprotected connection from SS to UE + p_ImsServer.TcpConnections.Unprotected_pc_us := omit; + } + [v_Protected_uc_ps_IsConnected] a_TcpServer_CloseConnection(v_TCP_Connections.Protected_uc_ps) + { // protected connection from UE to SS + p_ImsServer.TcpConnections.Protected_uc_ps := omit; + } + [v_Protected_pc_us_IsConnected] a_TcpServer_CloseConnection(v_TCP_Connections.Protected_pc_us) + { // protected connection from SS to UE + p_ImsServer.TcpConnections.Protected_pc_us := omit; + } + } + + //============================================================================ + /* + * @desc receive IMS messages from IP PTC + * @param p_IMS_Info (by reference) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + altstep a_IP_IMS_Handler(inout IP_PTC_IMS_Info_Type p_IMS_Info) runs on IP_PTC + { + var IMS_Server_Type v_ImsServer_PDN1 := p_IMS_Info.Server[tsc_Index_PDN1]; + var IMS_Server_Type v_ImsServer_PDN2 := p_IMS_Info.Server[tsc_Index_PDN2]; + + [] a_IP_IMS_UL_Handler(v_ImsServer_PDN1, tsc_Index_PDN1); + [] a_IP_IMS_UL_Handler(v_ImsServer_PDN2, tsc_Index_PDN2); + + [] a_IP_IMS_DL_Handler(v_ImsServer_PDN1, tsc_Index_PDN1) { // @sic R5s130454 sic@ + p_IMS_Info.Server[tsc_Index_PDN1] := v_ImsServer_PDN1; + } + + [] a_IP_IMS_DL_Handler(v_ImsServer_PDN2, tsc_Index_PDN2) { // @sic R5s130454 sic@ + p_IMS_Info.Server[tsc_Index_PDN2] := v_ImsServer_PDN2; + } + + [] a_IP_IMS_Config(v_ImsServer_PDN1, IMS_CTRL[tsc_Index_PDN1]) { + p_IMS_Info.Server[tsc_Index_PDN1] := v_ImsServer_PDN1; // configuration for PDN1 has been modified + } + [] a_IP_IMS_Config(v_ImsServer_PDN2, IMS_CTRL[tsc_Index_PDN2]) { + p_IMS_Info.Server[tsc_Index_PDN2] := v_ImsServer_PDN2; // configuration for PDN2 has been modified + } + + [] a_IP_IMS_TCP_ConnectionControl(v_ImsServer_PDN1) { + p_IMS_Info.Server[tsc_Index_PDN1] := v_ImsServer_PDN1; // @sic R5s130378 sic@ + } + [] a_IP_IMS_TCP_ConnectionControl(v_ImsServer_PDN2) { + p_IMS_Info.Server[tsc_Index_PDN2] := v_ImsServer_PDN2; // @sic R5s130378 sic@ + } + } +} diff --git a/LTE_A_IWD_14wk37/Common/IP_PTC/IP_PTC_IMS_Templates.ttcn b/LTE_A_IWD_14wk37/Common/IP_PTC/IP_PTC_IMS_Templates.ttcn new file mode 100644 index 0000000..03545f1 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IP_PTC/IP_PTC_IMS_Templates.ttcn @@ -0,0 +1,87 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-04-18 12:41:08 +0200 (Fri, 18 Apr 2014) $ +// $Rev: 11199 $ +/******************************************************************************/ + +module IP_PTC_IMS_Templates { + import from CommonDefs all; + import from IMS_ASP_TypeDefs all; + import from IP_ASP_TypeDefs all; + import from IP_ASP_Common all; + + //**************************************************************************** + // ASP Templates to be used at the IP side to configure IP: + //---------------------------------------------------------------------------- + + template (present) IMS_CONFIG_REQ car_IMS_InstallKey_REQ := {InstallKey := ?}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + template (present) IMS_CONFIG_REQ car_IMS_PortsAndSecurityConfig_REQ := {PortsAndSecurityConfig := ?}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + template (present) IMS_CONFIG_REQ car_IMS_SecurityRelease_REQ := {SecurityRelease := ?}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + template (present) IMS_CONFIG_REQ car_IMS_CloseTCP_REQ := {CloseTCP := true}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + template (present) IMS_CONFIG_REQ car_IMS_RegInfoRelease_REQ := {RegInfoRelease := true}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + + template (value) IMS_CONFIG_CNF cas_IMS_InstallKey_CNF := {InstallKey := true}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + template (value) IMS_CONFIG_CNF cas_IMS_PortsAndSecurityConfig_CNF := {PortsAndSecurityConfig := true}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + @sic R5s130266 change 1.3, 4, 5 - MCC160 Implementation sic@ */ + template (value) IMS_CONFIG_CNF cas_IMS_SecurityRelease_CNF := {SecurityRelease := true}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + template (value) IMS_CONFIG_CNF cas_IMS_CloseTCP_CNF := {CloseTCP := true}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + template (value) IMS_CONFIG_CNF cas_IMS_RegInfoRelease_CNF := {RegInfoRelease := true}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + + //**************************************************************************** + // Comon templates and functions to configure IPsec + //---------------------------------------------------------------------------- + + template (value) IPsec_SecurityAssociation_Type cs_IPsec_SA(IPsec_SPI_Type p_SPI, + charstring p_SrcAddress, + charstring p_DestAddress, + UInt16_Type p_SrcPort, + UInt16_Type p_DestPort, + template (omit) IPsec_IntegrityAlgorithm_Type p_IntegrityAlgorithm := omit, + template (omit) IPsec_CipheringAlgorithm_Type p_CipheringAlgorithm := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + SPI := p_SPI, + SrcAddress := p_SrcAddress, + DestAddress := p_DestAddress, + SrcPort := p_SrcPort, + DestPort := p_DestPort, + IntegrityAlgorithm := p_IntegrityAlgorithm, + CipheringAlgorithm := p_CipheringAlgorithm + }; + + /* + * @desc Build SA list + * @param p_NW_Address + * @param p_UE_Address + * @param p_SecurityInfo + * @param p_IntegrityAlgorithm (default value: omit) + * @param p_CipheringAlgorithm (default value: omit) + * @return template (value) IPsec_SecurityAssociationList_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_IPsec_SA_List(IP_AddrInfo_Type p_NW_Address, + IP_AddrInfo_Type p_UE_Address, + IMS_SecurityInfo_Type p_SecurityInfo, + template (omit) IPsec_IntegrityAlgorithm_Type p_IntegrityAlgorithm := omit, + template (omit) IPsec_CipheringAlgorithm_Type p_CipheringAlgorithm := omit) + return template (value) IPsec_SecurityAssociationList_Type + { + var template (value) IPsec_SecurityAssociationList_Type v_SA_List; + var charstring v_UE_AddrStr := f_IP_AddrInfo_AddrStr(p_UE_Address); + var charstring v_NW_AddrStr := f_IP_AddrInfo_AddrStr(p_NW_Address); + var IMS_ProtectedPorts_Type v_Ports := p_SecurityInfo.ProtectedPorts; + var IMS_SPIs_Type v_SPIs := p_SecurityInfo.SPIs; + + //............................SPI............SRC ADDR......DEST ADDR.....SRC PORT.........DEST PORT................................................ + v_SA_List[0] := cs_IPsec_SA(v_SPIs.SPI_ps, v_UE_AddrStr, v_NW_AddrStr, v_Ports.Port_uc, v_Ports.Port_ps, p_IntegrityAlgorithm, p_CipheringAlgorithm); + v_SA_List[1] := cs_IPsec_SA(v_SPIs.SPI_us, v_NW_AddrStr, v_UE_AddrStr, v_Ports.Port_pc, v_Ports.Port_us, p_IntegrityAlgorithm, p_CipheringAlgorithm); + v_SA_List[2] := cs_IPsec_SA(v_SPIs.SPI_uc, v_NW_AddrStr, v_UE_AddrStr, v_Ports.Port_ps, v_Ports.Port_uc, p_IntegrityAlgorithm, p_CipheringAlgorithm); + v_SA_List[3] := cs_IPsec_SA(v_SPIs.SPI_pc, v_UE_AddrStr, v_NW_AddrStr, v_Ports.Port_us, v_Ports.Port_pc, p_IntegrityAlgorithm, p_CipheringAlgorithm); + + return v_SA_List; + } +} diff --git a/LTE_A_IWD_14wk37/Common/IP_PTC/IP_PTC_Main.ttcn b/LTE_A_IWD_14wk37/Common/IP_PTC/IP_PTC_Main.ttcn new file mode 100644 index 0000000..69c1193 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IP_PTC/IP_PTC_Main.ttcn @@ -0,0 +1,697 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 12:44:18 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12148 $ +/******************************************************************************/ + +module IP_PTC_Main { + + import from IP_ASP_TypeDefs all; + import from IP_ASP_Common all; + import from IP_PTC_CtrlMsgs all; + import from IP_PTC_Templates all; + import from IP_PTC_Component all; + import from IP_PTC_Routing all; + import from DHCPv4_Common all; + import from ICMPv6_Functions all; + import from IP_PTC_IMS_Handler all; + import from IP_PTC_HTTP_Handler all; + import from UDP_Functions all; + import from CommonIP all; + import from CommonDefs all; + + //**************************************************************************** + // IP PTC: Additional definitions + //---------------------------------------------------------------------------- + + const PortNumber_Type tsc_PortNumber_DHCP_Server := 67; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + const PortNumber_Type tsc_PortNumber_DHCP_Client := 68; + + const PortNumber_Type tsc_PortNumber_DHCPv6_Server := 547; + const PortNumber_Type tsc_PortNumber_DHCPv6_Client := 546; + + const charstring tsc_INADDR_BROADCAST := "255.255.255.255"; /* broadcast address; used e.g. for DHCP + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + const charstring tsc_INADDR_ANY := "0.0.0.0"; /* used e.g. for DHCP + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + + const O2_Type tsc_MulticastPrefix_FF02 := 'FF02'O; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + + + /* + * @desc return index of the IP address or IMS server corresponding to the given PdnIndex + * @param p_PdnIndex + * @return integer + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_IP_ServerIndex(PDN_Index_Type p_PdnIndex) return integer + { /* PDN_2a to support change of the IP address for IMS test case 19.5.1 */ + var integer v_Index; + select (p_PdnIndex) { + case (PDN_1) { + v_Index := 0; + } + case (PDN_2, PDN_2a, PDN_Internet) { + v_Index := 1; + } + case else { + FatalError(__FILE__, __LINE__, "Invalid PDN index"); + } + } + return v_Index; + } + + /* + * @desc get DrbInfo for given IP address + * @param p_AddrServerArray + * @param p_ServerAddrInfo + * @return template (omit) IP_DrbInfo_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_IP_AddrServer_GetDrbInfo(IP_AddrServerArray_Type p_AddrServerArray, + IP_AddrInfo_Type p_ServerAddrInfo) return template (omit) IP_DrbInfo_Type + { + var integer i; + + for (i:=0; i < lengthof(p_AddrServerArray); i := i + 1) { + if (f_IMS_IpAddrMatch(p_ServerAddrInfo, p_AddrServerArray[i].ServerAddr)) { + return p_AddrServerArray[i].DrbInfo; + } + } + FatalError(__FILE__, __LINE__, "No address server found matching given server address"); + return omit; + } + + /* + * @desc send trigger to GERAN PTC to control sending of DL data + * @param p_DrbInfo + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_IP_AddrServer_SendTriggerToGeran(template (omit) IP_DrbInfo_Type p_DrbInfo) runs on IP_PTC + { + if (ischosen(p_DrbInfo.Geran)) { + GERAN_CTRL.send(cs_IP_GeranTrigger(valueof(p_DrbInfo))); + GERAN_CTRL.receive(cr_IP_CtrlAnyReq); // block until getting confirmation + } + } + + /* + * @desc Check whether an address is a IPv4 broadcast address + * @param p_IPv4Addr + * @return boolean .. true if the address is a broadcast address + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_IPv4AddrIsBroadcast(charstring p_IPv4Addr) return boolean + { + return (p_IPv4Addr == tsc_INADDR_BROADCAST); + } + + /* + * @desc Check whether an address is a IPv4 any address + * @param p_IPv4Addr + * @return boolean .. true if the address is a any address + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_IPv4AddrIsAny(charstring p_IPv4Addr) return boolean + { + return (p_IPv4Addr == tsc_INADDR_ANY); + } + + /* + * @desc Check whether an address is a IPv6 multicast address + * @param p_IPv6Addr + * @return boolean .. true if the address is a multicast address + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_IPv6AddrIsMulticast(charstring p_IPv6Addr) return boolean + { + var O2_Type v_Prefix; + v_Prefix := str2oct(substr(p_IPv6Addr, 0, 4)); + if (v_Prefix == tsc_MulticastPrefix_FF02) { // RFC 2375 + return true; + } + return false; + } + + /* + * @desc convert (global) IPv6 adddress into link-local address + * @param p_IPv6Addr .. global IPv6 address + * @return charstring .. link-local address + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_IPv6AddrGetLinkLocalAddr(charstring p_IPv6Addr) return charstring + { + var O16_Type v_IPv6AddrOctets := f_Convert_IPv6Addr2OctString(p_IPv6Addr); + var O8_Type v_InterfaceId := substr(v_IPv6AddrOctets, 8, 8); // interface id assuming a /64 prefix + + return f_Convert_OctString2IPv6Addr('FE80000000000000'O & v_InterfaceId); + } + + //**************************************************************************** + // IP PTC: Initialisation and management of servers + //---------------------------------------------------------------------------- + + template (value) AddrServerInfo_Type cs_IP_AddrServer_Init(template (omit) charstring p_ServerAddr := omit, + template (omit) charstring p_ClientAddr := omit, + template (omit) IP_DrbInfo_Type p_DrbInfo := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + ServerAddr := p_ServerAddr, + ClientAddr := p_ClientAddr, + DrbInfo := p_DrbInfo + }; + + /* + * @desc initialisation of the IP PTC and all servers + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_IP_PTC_Init() runs on IP_PTC + { + var integer i; + + vc_IP_PTC_DRB_RoutingTable := {}; + + for (i:=0; i < tsc_NoOfPDNs; i:=i+1) { + vc_IP_PTC_PDN_AddrServer.DHCP[i] := valueof(cs_IP_AddrServer_Init); + vc_IP_PTC_PDN_AddrServer.ICMPv6[i] := valueof(cs_IP_AddrServer_Init); + vc_IP_PTC_IMS_Info.Server[i] := valueof(cs_IMS_Server_Init); + } + } + + //---------------------------------------------------------------------------- + /* + * @desc check whether server is running + * @param p_ServerInfo + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_IP_AddrServer_IsRunning(AddrServerInfo_Type p_ServerInfo) return boolean + { + return isvalue(p_ServerInfo.DrbInfo); + } + + /* + * @desc search in given array for server with DrbInfo matching to the given DrbInfo + * @param p_ServerArray + * @param p_DrbInfo + * @return integer + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_IP_AddrServer_Find(IP_AddrServerArray_Type p_ServerArray, + template (omit) IP_DrbInfo_Type p_DrbInfo) return integer + { + var IP_DrbInfo_Type v_DrbInfoServer; + var IP_DrbInfo_Type v_DrbInfo; + var integer i; + + if (isvalue(p_DrbInfo)) { + v_DrbInfo := valueof(p_DrbInfo); + + for (i:=0; i < lengthof(p_ServerArray); i:=i+1) { + v_DrbInfoServer := p_ServerArray[i].DrbInfo; + if (isvalue(v_DrbInfoServer)) { + if (ischosen(v_DrbInfo.Eutra) and ischosen(v_DrbInfoServer.Eutra)) { + if (v_DrbInfo.Eutra.DrbId == v_DrbInfoServer.Eutra.DrbId) { + return i; + } + } + else if (ischosen(v_DrbInfo.Utran) and ischosen(v_DrbInfoServer.Utran)) { + if (v_DrbInfo.Utran.DrbId == v_DrbInfoServer.Utran.DrbId) { + return i; + } + } + else if (ischosen(v_DrbInfo.Geran) and ischosen(v_DrbInfoServer.Geran)) { + if (v_DrbInfo.Geran.DrbId == v_DrbInfoServer.Geran.DrbId) { + return i; + } + } + } + } + } + FatalError(__FILE__, __LINE__, "No Server found for given DRB"); + return -1; + } + + //---------------------------------------------------------------------------- + /* + * @desc stop servers (ICMPv6 or DHCP) for a given PDN + * @param p_Index + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_IP_AddrServers_Stop(integer p_Index) runs on IP_PTC + { /* @sic R5-113734 change 8 sic@ */ + + var charstring v_ServerAddr; + + if (fl_IP_AddrServer_IsRunning(vc_IP_PTC_PDN_AddrServer.DHCP[p_Index])) { + + v_ServerAddr := vc_IP_PTC_PDN_AddrServer.DHCP[p_Index].ServerAddr; + f_UdpServer_Stop(cs_IPv4Addr(v_ServerAddr), tsc_PortNumber_DHCP_Server); + + vc_IP_PTC_PDN_AddrServer.DHCP[p_Index] := valueof(cs_IP_AddrServer_Init); + } + if (fl_IP_AddrServer_IsRunning(vc_IP_PTC_PDN_AddrServer.ICMPv6[p_Index])) { + + v_ServerAddr := vc_IP_PTC_PDN_AddrServer.ICMPv6[p_Index].ServerAddr; + fl_Icmpv6Server_Stop(cs_IPv6Addr(v_ServerAddr)); + + v_ServerAddr := fl_IPv6AddrGetLinkLocalAddr(v_ServerAddr); + fl_Icmpv6Server_Stop(cs_IPv6Addr(v_ServerAddr)); // @sic R5s110603 change 3 sic@ + + vc_IP_PTC_PDN_AddrServer.ICMPv6[p_Index] := valueof(cs_IP_AddrServer_Init); + } + } + + /* + * @desc start servers (ICMPv6 or DHCP) for a given PDN + * @param p_PdnIndex + * @param p_DrbInfo .. "interface id" for the PDN + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_IP_AddrServers_Start(PDN_Index_Type p_PdnIndex, + IP_DrbInfo_Type p_DrbInfo) runs on IP_PTC + { /* @sic R5-113734 change 8 sic@ */ + /* @sic R5s130362 - MCC160 Implementation: tsc_PDN_AddressInfo sic@ */ + var PDN_AddressInfo_Type v_PDN_AddressInfo := f_PDN_AddressInfo_Get(p_PdnIndex); + var charstring v_ServerIpAddrv4 := v_PDN_AddressInfo.DHCP_ServerAddress; + var charstring v_ServerIpAddrv6 := v_PDN_AddressInfo.ICMPv6_ServerAddress; + var charstring v_ClientIpAddrv4 := v_PDN_AddressInfo.UE_IPAddressIPv4; + var charstring v_ClientIpAddrv6 := v_PDN_AddressInfo.UE_IPAddressIPv6; + var integer v_Index := fl_IP_ServerIndex(p_PdnIndex); + + fl_IP_AddrServers_Stop(v_Index); // stop sever if any running + + // DHCP + vc_IP_PTC_PDN_AddrServer.DHCP[v_Index] := valueof(cs_IP_AddrServer_Init(v_ServerIpAddrv4, v_ClientIpAddrv4, p_DrbInfo)); + f_UdpServer_Start(cs_IPv4Addr(v_ServerIpAddrv4), tsc_PortNumber_DHCP_Server, p_DrbInfo); + + // ICMPv6 + vc_IP_PTC_PDN_AddrServer.ICMPv6[v_Index] := valueof(cs_IP_AddrServer_Init(v_ServerIpAddrv6, v_ClientIpAddrv6, p_DrbInfo)); + + fl_Icmpv6Server_Start(cs_IPv6Addr(v_ServerIpAddrv6), p_DrbInfo); + fl_Icmpv6Server_Start(cs_IPv6Addr(fl_IPv6AddrGetLinkLocalAddr(v_ServerIpAddrv6)), p_DrbInfo); + } + + //---------------------------------------------------------------------------- + /* + * @desc Wrapper to start IMS + * @param p_PdnIndex + * @param p_DrbInfo + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_IP_ImsServer_Start(PDN_Index_Type p_PdnIndex, + IP_DrbInfo_Type p_DrbInfo) runs on IP_PTC + { /* Multiple PDNs + * In case of multiple PDNs (e.g. for emergency calls) there can be + * 1) multiple P-CSCFs i.e. one for each PDN; this is typically the case for roaming scenarios when the normal IMS registration is done at the P-CSCF in th home PLMN + * whereas the emergency registration is done in the visited PLMN + * 2) one P-CSCF for (both) PDNs, e.g. when visited PLMN is the home PLMN + * + * Assumption: + * even in case of one P-CSCF for (both) PDNs there shall be different P-CSCF IP addresse i.e. the P-CSCF shall have a different IP address for each PDN. + * (in case of IPv6 as working assumption the P-CSCF and all other entities belonging to the PDN shall have the same network prefix and the network prefix for different PDNs shall be different; + * see TS 36.523-3 cl. 4.2.4.6) + * => There can be different UDP servers for the PDNs and the routing table can be configured with IP address and port of the network side only + * (Note: if the P-CSCF would have only one IP address for two PDNs in DL the routing can only be determined based on the destination address + * i.e. the UE's addresses need to be considered when starting the UDP server - what is weird from socket programming point of view) */ + /* @sic R5s130362 - MCC160 Implementation: tsc_PDN_AddressInfo sic@ */ + var integer v_IndexVal := fl_IP_ServerIndex(p_PdnIndex); + var IMS_Server_Type v_ImsServer := vc_IP_PTC_IMS_Info.Server[v_IndexVal]; + var PDN_AddressInfo_Type v_PDN_AddressInfo := f_PDN_AddressInfo_Get(p_PdnIndex); + + f_IP_IMS_Stop(v_ImsServer); // @sic R5s120065 MCC160 Implementation sic@ + + vc_IP_PTC_IMS_Info.Server[v_IndexVal] := f_IP_IMS_Start(v_ImsServer, + v_PDN_AddressInfo.PCSCF_IPAddressIPv4, + v_PDN_AddressInfo.PCSCF_IPAddressIPv6, + p_DrbInfo); + } + + //**************************************************************************** + // IP Connection handling + //---------------------------------------------------------------------------- + // ICMPv6 + + /* + * @desc start a ICMPv6 socket by binding its address to the given socket + * Note: there is no default behaviour activated for the IP_PTC + * => waiting for the SA's response is blocking (what helps to avoid unexpected behaviour) + * @param p_LocalIpAddr + * @param p_AllowBroadcast + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_ICMPv6_Bind(template (value) IP_AddrInfo_Type p_LocalIpAddr, + boolean p_AllowBroadcast) runs on IP_PTC + { /* @sic R5-113734 change 8 sic@ */ + IP_SOCK.send(cs_ICMPv6_SOCKET_REQ(cs_IP_Socket(p_LocalIpAddr, omit), p_AllowBroadcast)); // LocalPort=omit -> ICMP does not have a port number + IP_SOCK.receive(cr_ICMPv6_SOCKET_CNF(cr_IP_Socket(p_LocalIpAddr, omit))); // LocalPort=omit -> ICMP does not have a port number + } + + /* + * @desc Just close a ICMPv6 socket; + * Note: there is no confirmation needed to close a ICMPv6 server + * @param p_LocalSocket + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_ICMPv6_Close(template (value) IP_Socket_Type p_LocalSocket) runs on IP_PTC + { + IP_SOCK.send(cs_ICMPv6_CLOSE_REQ(p_LocalSocket)); + } + + /* + * @desc start a ICMPv6 socket by binding its address to the given socket; + * the routing table is updated acc. + * @param p_LocalIpAddr + * @param p_DrbInfo + * @param p_AllowBroadcast (default value: true) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_Icmpv6Server_Start(template (value) IP_AddrInfo_Type p_LocalIpAddr, + IP_DrbInfo_Type p_DrbInfo, + boolean p_AllowBroadcast := true) runs on IP_PTC + { /* @sic R5-113734 change 8 sic@ */ + var template (value) IP_Socket_Type v_LocalSocket := cs_IP_Socket(p_LocalIpAddr, omit); + + // Bind ICMPv6 socket + fl_ICMPv6_Bind(p_LocalIpAddr, p_AllowBroadcast); + + // Modify routing table + f_IP_PTC_RoutingTable_AddEntry(cs_ICMPv6_ConnectionId(v_LocalSocket), p_DrbInfo); + } + + /* + * @desc common function to close a ICMPv6 socket acting as ICMPv6 server; + * the routing table is updated acc. + * @param p_LocalIpAddr + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_Icmpv6Server_Stop(template (value) IP_AddrInfo_Type p_LocalIpAddr) runs on IP_PTC + { /* @sic R5-113734 change 8 sic@ */ + var template (value) IP_Socket_Type v_LocalSocket := cs_IP_Socket(p_LocalIpAddr, omit); + + // Close ICMPv6 socket + fl_ICMPv6_Close(v_LocalSocket); + + // Modify routing table + f_IP_PTC_RoutingTable_RemoveEntry(cs_ICMPv6_ConnectionId(v_LocalSocket)); + } + + //**************************************************************************** + // Applications + //---------------------------------------------------------------------------- + /* + * @desc handling of DHCP messages sent by the UE + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + altstep a_DHCP_Handler() runs on IP_PTC + { + var IP_SOCKET_IND v_IP_SOCKET_IND; + var IP_Socket_Type v_RemoteSocket; + var IP_Socket_Type v_LocalSocket; + var Datagram_UL_Type v_Datagram; + var octetstring v_RespData; + var charstring v_ServerIpAddr; + var charstring v_ClientIpAddr; + var integer v_PdnIndex; + var template (omit) IP_DrbInfo_Type v_DrbInfo := omit; + + [] IP_SOCK.receive(cr_UDP_DATA_IND(cr_IP_Socket(?, tsc_PortNumber_DHCP_Server))) /* allow any IP address to deal with broadcasts */ + -> value v_IP_SOCKET_IND + { + v_RemoteSocket := v_IP_SOCKET_IND.DATA.ConnectionId.Remote; + v_LocalSocket := v_IP_SOCKET_IND.DATA.ConnectionId.Local; + v_Datagram := v_IP_SOCKET_IND.DATA.Ind.UDP.RecvFrom; + v_ServerIpAddr := v_LocalSocket.IpAddr.V4.Addr; /* causes runtime error if address is V6; => SS implementation error */ + v_ClientIpAddr := v_RemoteSocket.IpAddr.V4.Addr; /* causes runtime error if address is V6; => SS implementation error */ + + if (fl_IPv4AddrIsBroadcast(v_ServerIpAddr) or fl_IPv4AddrIsAny(v_ClientIpAddr)) { + /* Assumption: + we have either unicast addresses for src and dest or boadcast as dest and any address as source; + if this is not always the case in the future this semantics need to be enhanced */ + v_DrbInfo := v_Datagram.DrbInfo; + v_PdnIndex := fl_IP_AddrServer_Find(vc_IP_PTC_PDN_AddrServer.DHCP, v_DrbInfo); + v_ServerIpAddr := vc_IP_PTC_PDN_AddrServer.DHCP[v_PdnIndex].ServerAddr; + v_ClientIpAddr := vc_IP_PTC_PDN_AddrServer.DHCP[v_PdnIndex].ClientAddr; + + v_LocalSocket.IpAddr.V4.Addr := v_ServerIpAddr; // server address is source address + v_RemoteSocket.IpAddr.V4.Addr := tsc_INADDR_BROADCAST; // send response as broadcast (dest address) + } else { + v_DrbInfo := fl_IP_AddrServer_GetDrbInfo(vc_IP_PTC_PDN_AddrServer.DHCP, v_LocalSocket.IpAddr); // @sic R5-133612: trigger to GERAN sic@ + } + + v_RespData := f_DHCPv4_GetEncodedResponse(v_Datagram.Buffer, v_ClientIpAddr, v_ServerIpAddr); + if (lengthof(v_RespData) > 0) { + fl_IP_AddrServer_SendTriggerToGeran(v_DrbInfo); // @sic R5-133612: trigger to GERAN sic@ + IP_SOCK.send(cs_UDP_DATA_REQ(v_LocalSocket, v_RemoteSocket, v_RespData)); + } + } + } + + //---------------------------------------------------------------------------- + + +/* altstep a_DHCPv6_Handler() runs on IP_PTC */ +/* { */ + + + +/* } */ + +/* altstep a_DNS_Handler() runs on IP_PTC */ +/* { */ + + + +/* } */ + + + + //---------------------------------------------------------------------------- + /* + * @desc handling of ICMPv6 messages sent by the UE + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + altstep a_ICMPv6_Handler() runs on IP_PTC + { + var IP_SOCKET_IND v_IP_SOCKET_IND; + var IP_Socket_Type v_RemoteSocket; + var IP_Socket_Type v_LocalSocket; + var Datagram_UL_Type v_Datagram; + var octetstring v_RespData; + var charstring v_ServerIpAddr; + var integer v_PdnIndex; + var charstring v_ClientIpAddr; + var template (omit) IP_DrbInfo_Type v_DrbInfo := omit; + + [] IP_SOCK.receive(cr_ICMPv6_DATA_IND(cr_IP_Socket(?, omit))) /* allow any IP address to deal with multicasts */ + -> value v_IP_SOCKET_IND + { + v_RemoteSocket := v_IP_SOCKET_IND.DATA.ConnectionId.Remote; + v_LocalSocket := v_IP_SOCKET_IND.DATA.ConnectionId.Local; + v_Datagram := v_IP_SOCKET_IND.DATA.Ind.ICMP.RecvFrom; + v_ServerIpAddr := v_LocalSocket.IpAddr.V6.Addr; /* causes runtime error if address is V4; => SS implementation error */ + v_ClientIpAddr := v_RemoteSocket.IpAddr.V6.Addr; /* causes runtime error if address is V4; => SS implementation error */ + + if (fl_IPv6AddrIsMulticast(v_ServerIpAddr)) { /* deal with multicast */ + /* NOTE: + when the local link address (as assigned as interface identifier via NAS) for different PDNs is different + it would also be possible to search for the server by looking for the client's local link address; + but for simplification we use the DRB info as for DHCP */ + v_DrbInfo := v_Datagram.DrbInfo; + v_PdnIndex := fl_IP_AddrServer_Find(vc_IP_PTC_PDN_AddrServer.ICMPv6, v_DrbInfo); + v_ServerIpAddr := vc_IP_PTC_PDN_AddrServer.ICMPv6[v_PdnIndex].ServerAddr; + v_ClientIpAddr := vc_IP_PTC_PDN_AddrServer.ICMPv6[v_PdnIndex].ClientAddr; + v_LocalSocket.IpAddr.V6.Addr := fl_IPv6AddrGetLinkLocalAddr(v_ServerIpAddr); /* Assumption: response for a multicast needs to be sent with SRC address as local link address (as for ROUTER SOLICITATION) + @sic R5s110449 change 4 sic@ */ + if (v_RemoteSocket.IpAddr.V6.Addr == "0000:0000:0000:0000:0000:0000:0000:0000") { /* check for unspecified IPv6 in RemoteSocket: acc. to RFC 4291, section 2.5.2, + the Unspecified Address must not be used as the destination address of IPv6 packets + => needs to replaced in the response by unspecified all-nodes multicast address @sic R5s130378 sic@ */ + v_RemoteSocket.IpAddr.V6.Addr := "FF01:0000:0000:0000:0000:0000:0000:0001"; + } + } else { + v_DrbInfo := fl_IP_AddrServer_GetDrbInfo(vc_IP_PTC_PDN_AddrServer.ICMPv6, v_LocalSocket.IpAddr); // @sic R5-133612: trigger to GERAN sic@ + } + + v_RespData := f_ICMPv6_GetEncodedResponse(v_Datagram.Buffer, v_ClientIpAddr); /* NOTE: only the address prefix is used for encoding of the RouterAdvertisement */ + + if (lengthof(v_RespData) > 0) { + /* v_LocalSocket: + - same address as for the corresponding request if this has been unicast or + - link local address e.g. for router advertisement + v_ClientIpAddr: + - same address as for the corresponding request (note: in case of a router solicitation the source address is a link local) */ + + v_RespData := fl_ICMPv6_UpdateCRCChecksum(v_LocalSocket.IpAddr.V6.Addr, + v_RemoteSocket.IpAddr.V6.Addr, //@sic R5s110773 sic@ + v_RespData); + fl_IP_AddrServer_SendTriggerToGeran(v_DrbInfo); // @sic R5-133612: trigger to GERAN sic@ + IP_SOCK.send(cs_ICMPv6_DATA_REQ(v_LocalSocket, v_RemoteSocket, v_RespData)); + } + } + } + + /* + * @desc Return ICMP PDU including correct checksum + * @param p_SrcAddress + * @param p_DstAddress + * @param p_IcmpPDU + * @return octetstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_ICMPv6_UpdateCRCChecksum(charstring p_SrcAddress, + charstring p_DstAddress, + octetstring p_IcmpPDU) return octetstring + { + var octetstring v_PseudoHeader; + var octetstring v_IcmpPDU := p_IcmpPDU; + var O2_Type v_Checksum; + // Build pseudo headers for ICMPv6, see RFC 4443 clause 2.3 + // Pseudo headers are specified in RFC 2460 clause 8.1 + v_PseudoHeader := + f_Convert_IPv6Addr2OctString(p_SrcAddress) & + f_Convert_IPv6Addr2OctString(p_DstAddress) & + int2oct (lengthof(p_IcmpPDU), 4) & '0000003A'O; + + // Now compute checksum + v_Checksum := f_IpChecksum (v_PseudoHeader & p_IcmpPDU); + + // See RFC 4443 clause 2.1 + v_IcmpPDU[2] := v_Checksum[0]; + v_IcmpPDU[3] := v_Checksum[1]; + return v_IcmpPDU; + } + + /* + * @desc Send unsolicited ROUTER ADVERTISEMENT to the UE + * @param p_PdnIndex + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_ICMPv6_SendRouterAdvertisement(PDN_Index_Type p_PdnIndex) runs on IP_PTC + { + var template (value) IP_Socket_Type v_RemoteSocket; + var template (value) IP_Socket_Type v_LocalSocket; + var charstring v_ServerIpAddr; + var charstring v_LinkLocalAddr; + var charstring v_MulticastAddr := "FF02::1"; + var octetstring v_Data; + var integer v_Index := fl_IP_ServerIndex(p_PdnIndex); + var AddrServerInfo_Type v_AddrServerInfo := vc_IP_PTC_PDN_AddrServer.ICMPv6[v_Index]; + + if (fl_IP_AddrServer_IsRunning(vc_IP_PTC_PDN_AddrServer.ICMPv6[v_Index])) { + v_ServerIpAddr := vc_IP_PTC_PDN_AddrServer.ICMPv6[v_Index].ServerAddr; + v_LinkLocalAddr := fl_IPv6AddrGetLinkLocalAddr(v_ServerIpAddr); + v_Data := f_ICMPv6_GetRouterAdvertisement(v_ServerIpAddr); + v_RemoteSocket := cs_IP_Socket(cs_IPv6Addr(v_MulticastAddr), omit); + v_LocalSocket := cs_IP_Socket(cs_IPv6Addr(v_LinkLocalAddr), omit); + v_Data := fl_ICMPv6_UpdateCRCChecksum(v_LinkLocalAddr, v_MulticastAddr, v_Data); + + fl_IP_AddrServer_SendTriggerToGeran(v_AddrServerInfo.DrbInfo); // @sic R5-133612: trigger to GERAN sic@ + IP_SOCK.send(cs_ICMPv6_DATA_REQ(v_LocalSocket, v_RemoteSocket, v_Data)); + } + } + + //---------------------------------------------------------------------------- + // Common: + + /* + * @desc reset all information for the given PDN + * @param p_Index + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_StopPDN(integer p_Index) runs on IP_PTC + { + fl_IP_AddrServers_Stop(p_Index); + vc_IP_PTC_IMS_Info.Server[p_Index] := f_IP_IMS_Stop(vc_IP_PTC_IMS_Info.Server[p_Index]); + } + + /* + * @desc get and handle configuration messages from the test cases (running on EUTRA, GERAN, UTRAN) + * @param p_CtrlPort + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + altstep a_ApplicationCtrl(IP_PTC_CTRL_PORT p_CtrlPort) runs on IP_PTC + { + var IP_ConfigReq_Type v_IP_ConfigReq; + var PDN_Index_Type v_PdnIndex; + var IP_DrbInfo_Type v_DrbInfo; + var integer i; + + [] p_CtrlPort.receive(cr_IP_CtrlAnyReq) -> value v_IP_ConfigReq { + if (ischosen(v_IP_ConfigReq.StartIP)) { + v_PdnIndex := v_IP_ConfigReq.StartIP.PdnId; + v_DrbInfo := v_IP_ConfigReq.StartIP.DrbInfo; + + fl_IP_AddrServers_Start(v_PdnIndex, v_DrbInfo); + fl_IP_ImsServer_Start(v_PdnIndex, v_DrbInfo); + + } else if (ischosen(v_IP_ConfigReq.StopIP)) { + if (ischosen(v_IP_ConfigReq.StopIP.PdnId)) { /* @sic R5s131000: stop particular PDN sic@ */ + i := fl_IP_ServerIndex(v_IP_ConfigReq.StopIP.PdnId); + fl_StopPDN(i); + } else { + for (i:=0; i RoutingTable is assumed to be free of conflicts + * @param p_RoutingTable + * @param p_IpInfo + * @param p_DrbInfo + * @return IP_RoutingTable_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_RoutingTable_AddEntry(IP_RoutingTable_Type p_RoutingTable, + template (value) IP_Connection_Type p_IpInfo, + IP_DrbInfo_Type p_DrbInfo) return IP_RoutingTable_Type + { + var IP_RoutingTable_Type v_RoutingTable := p_RoutingTable; + var integer v_TableSize; + + if (not fl_RoutingTable_CheckIpInfoForConflict(p_RoutingTable, p_IpInfo)) { + FatalError(__FILE__, __LINE__, "conflict for routing table"); + } else { + v_TableSize := lengthof(p_RoutingTable); + v_RoutingTable[v_TableSize] := { + IpInfo := valueof(p_IpInfo), + DRB := p_DrbInfo + }; + } + return v_RoutingTable; + } + + /* + * @desc return index of the entry in the routing table or -1 if no entry has been found; + * Note: the IP_Connection info does not need to be fully specified; + * nevertheless when refering to an entry in the routing table the IP_Connection shall be exactly the same + * @param p_RoutingTable + * @param p_IpInfo + * @return integer + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_RoutingTable_FindEntry(IP_RoutingTable_Type p_RoutingTable, + template (value) IP_Connection_Type p_IpInfo) return integer + { + var IP_RoutingInfo_Type v_CurrentEntry; + var integer v_TableSize := lengthof(p_RoutingTable); + var integer i; + + for (i := 0; i < v_TableSize; i := i+1) { + v_CurrentEntry := p_RoutingTable[i]; + if (match(v_CurrentEntry.IpInfo, p_IpInfo)) { + return i; + } + } + return -1; + } + + /* + * @desc remove an enry from the routing table + * @param p_RoutingTable + * @param p_IpInfo + * @return IP_RoutingTable_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_RoutingTable_RemoveEntry(IP_RoutingTable_Type p_RoutingTable, + template (value) IP_Connection_Type p_IpInfo) return IP_RoutingTable_Type + { + var integer v_TableSize := lengthof(p_RoutingTable); + var integer v_Index := fl_RoutingTable_FindEntry(p_RoutingTable, p_IpInfo); + var IP_RoutingTable_Type v_RoutingTable := {}; + var integer i; + var integer k; + + if (v_Index < 0) { + return p_RoutingTable; + } + k := 0; + for (i := 0; i < v_TableSize; i := i+1) { + if (i != v_Index) { + v_RoutingTable[k] := p_RoutingTable[i]; + k := k + 1; + } + } + return v_RoutingTable; + } + + function fl_RoutingTable_ModifyEntry(IP_RoutingTable_Type p_RoutingTable, + IP_Connection_Type p_IpInfo, + IP_DrbInfo_Type p_DrbInfo) return IP_RoutingTable_Type + { + var integer v_Index := fl_RoutingTable_FindEntry(p_RoutingTable, p_IpInfo); + var IP_RoutingTable_Type v_RoutingTable; + + if (v_Index < 0) { + return p_RoutingTable; + } + v_RoutingTable := p_RoutingTable; + v_RoutingTable[v_Index].DRB := p_DrbInfo; + return v_RoutingTable; + } + + /* + * @desc change routing table: move to given cell + * @param p_RoutingTable + * @param p_IP_DrbInfo .. cellid, drb + * @return boolean .. true: routing table has been changed; false: no change is needed + * (to avoid unnecessary change of routing table at the SS) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_RoutingTable_ChangeEutraCell(inout IP_RoutingTable_Type p_RoutingTable, + IP_DrbInfo_Type p_IP_DrbInfo) return boolean + { /* mainly to change the cell */ + /* @sic R5w110204: change of IP_EUTRA_DrbInfo_Type sic@ */ + /* @sic R5-125676: function changed to allow changing from UTRAN to EUTRA cell sic@ */ + var integer v_TableSize := lengthof(p_RoutingTable); + var boolean v_TableIsChanged := false; + var integer i; + + for (i := 0; i < v_TableSize; i := i+1) { + if (ischosen(p_IP_DrbInfo.Eutra)) { + if (ischosen(p_RoutingTable[i].DRB.Eutra) and (p_RoutingTable[i].DRB.Eutra.CellId == p_IP_DrbInfo.Eutra.CellId)) { // @sic R5-125676 sic@ @sic R5s130038 sic@ + continue; + } + p_RoutingTable[i].DRB.Eutra.CellId := p_IP_DrbInfo.Eutra.CellId; + if (isvalue(p_IP_DrbInfo.Eutra.DrbId)) { + p_RoutingTable[i].DRB.Eutra.DrbId := p_IP_DrbInfo.Eutra.DrbId; + } + v_TableIsChanged := true; + } + else if (ischosen(p_IP_DrbInfo.Utran)) { + if (ischosen(p_RoutingTable[i].DRB.Utran) and (p_RoutingTable[i].DRB.Utran.CellId == p_IP_DrbInfo.Utran.CellId)) { // @sic R5s130038 sic@ + continue; + } + p_RoutingTable[i].DRB.Utran.CellId := p_IP_DrbInfo.Utran.CellId; + p_RoutingTable[i].DRB.Utran.DrbId := p_IP_DrbInfo.Utran.DrbId; + v_TableIsChanged := true; + } + else { + FatalError(__FILE__, __LINE__, ""); + } + } + return v_TableIsChanged; + } + + } // end of group RoutingTableManagement + + //---------------------------------------------------------------------------- + + group DRBMUX_CONFIG { + + template (value) DRBMUX_CONFIG_REQ cs_DRBMUX_CONFIG_REQ(IP_RoutingTable_Type p_RoutingTable) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + RoutingInfo := p_RoutingTable + }; + + template (present) DRBMUX_COMMON_IND_CNF cr_DRBMUX_COMMON_IND_CNF := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + Confirm := true + }; + + /* + * @desc Send complete routing table to the SS + * Note: there is no default behaviour activated for the IP_PTC + * => waiting for the SA's response is blocking (what helps to avoid enexpected behaviour) + * @param p_RoutingTable + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_IP_PTC_SendRoutingTable(IP_RoutingTable_Type p_RoutingTable) runs on IP_PTC + { + IP_CTRL.send(cs_DRBMUX_CONFIG_REQ(p_RoutingTable)); + IP_CTRL.receive(cr_DRBMUX_COMMON_IND_CNF); + } + + } // end of group DRBMUX_CONFIG + + //---------------------------------------------------------------------------- + + group RoutingTable_CommonProcedures { + + /* + * @desc add entry to routing table and configure SS + * @param p_IpInfo + * @param p_DrbInfo + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_IP_PTC_RoutingTable_AddEntry(template (value) IP_Connection_Type p_IpInfo, + IP_DrbInfo_Type p_DrbInfo) runs on IP_PTC + { + vc_IP_PTC_DRB_RoutingTable := fl_RoutingTable_AddEntry(vc_IP_PTC_DRB_RoutingTable, p_IpInfo, p_DrbInfo); + f_IP_PTC_SendRoutingTable(vc_IP_PTC_DRB_RoutingTable); + } + + /* + * @desc remove entry from routing table and configure SS + * @param p_IpInfo + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_IP_PTC_RoutingTable_RemoveEntry(template (value) IP_Connection_Type p_IpInfo) runs on IP_PTC + { + vc_IP_PTC_DRB_RoutingTable := fl_RoutingTable_RemoveEntry(vc_IP_PTC_DRB_RoutingTable, p_IpInfo); + f_IP_PTC_SendRoutingTable(vc_IP_PTC_DRB_RoutingTable); + } + + } // end of group RoutingTable_CommonProcedures + +} diff --git a/LTE_A_IWD_14wk37/Common/IP_PTC/IP_PTC_Templates.ttcn b/LTE_A_IWD_14wk37/Common/IP_PTC/IP_PTC_Templates.ttcn new file mode 100644 index 0000000..621311d --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IP_PTC/IP_PTC_Templates.ttcn @@ -0,0 +1,426 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-08-28 15:21:40 +0200 (Thu, 28 Aug 2014) $ +// $Rev: 11943 $ +/******************************************************************************/ + +module IP_PTC_Templates { + + import from IP_ASP_TypeDefs all; + import from CommonIP all; + import from Parameters all; + + //**************************************************************************** + // IP Connections + //---------------------------------------------------------------------------- + + template (value) IP_AddrInfo_Type cs_IPv4Addr(template (value) charstring p_IPv4Addr) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + V4 := { + Addr := p_IPv4Addr + } + }; + + template (value) IP_AddrInfo_Type cs_IPv6Addr(template (value) charstring p_IPv6Addr) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + V6 := { + Addr := p_IPv6Addr, + ScopeId := omit + } + }; + + template (value) IP_Socket_Type cs_IP_Socket(template (omit) IP_AddrInfo_Type p_IpAddr, + template (omit) PortNumber_Type p_PortNumber) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + IpAddr := p_IpAddr, + Port := p_PortNumber + }; + + template (present) IP_Socket_Type cr_IP_Socket(template IP_AddrInfo_Type p_IpAddr, + template PortNumber_Type p_PortNumber) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + IpAddr := p_IpAddr, + Port := p_PortNumber + }; + + template (present) IP_Socket_Type cr_IP_Socket_Any := cr_IP_Socket(?, ?); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + template (present) IP_Socket_Type cr_IP_Socket_Omit := cr_IP_Socket(omit, omit); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + template (present) IP_Socket_Type cr_IP_Socket_AnyICMP := cr_IP_Socket(?, omit); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + + template (value) IP_Connection_Type cs_IP_ConnectionId(InternetProtocol_Type p_Protocol, + template (omit) IP_Socket_Type p_LocalSocket := omit, + template (omit) IP_Socket_Type p_RemoteSocket := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + Protocol := p_Protocol, + Local := p_LocalSocket, + Remote := p_RemoteSocket + }; + + template (present) IP_Connection_Type cr_IP_ConnectionId(InternetProtocol_Type p_Protocol, + template IP_Socket_Type p_LocalSocket, + template IP_Socket_Type p_RemoteSocket) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + Protocol := p_Protocol, + Local := p_LocalSocket, + Remote := p_RemoteSocket + }; + + template (value) IP_Connection_Type cs_UDP_ConnectionId(template (omit) IP_Socket_Type p_LocalSocket, + template (omit) IP_Socket_Type p_RemoteSocket := omit) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_IP_ConnectionId(udp, p_LocalSocket, p_RemoteSocket); + + + template (present) IP_Connection_Type cr_UDP_ConnectionId(template IP_Socket_Type p_LocalSocket, + template IP_Socket_Type p_RemoteSocket) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + cr_IP_ConnectionId(udp, p_LocalSocket, p_RemoteSocket); + + template (value) IP_Connection_Type cs_ICMPv6_ConnectionId(template (omit) IP_Socket_Type p_LocalSocket, + template (omit) IP_Socket_Type p_RemoteSocket := omit) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_IP_ConnectionId(icmpv6, p_LocalSocket, p_RemoteSocket); + + + template (present) IP_Connection_Type cr_ICMPv6_ConnectionId(template IP_Socket_Type p_LocalSocket, + template IP_Socket_Type p_RemoteSocket) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + cr_IP_ConnectionId(icmpv6, p_LocalSocket, p_RemoteSocket); + + template (value) IP_Connection_Type cs_TCP_ConnectionId(template (omit) IP_Socket_Type p_LocalSocket, + template (omit) IP_Socket_Type p_RemoteSocket := omit) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_IP_ConnectionId(tcp, p_LocalSocket, p_RemoteSocket); + + + template (present) IP_Connection_Type cr_TCP_ConnectionId(template IP_Socket_Type p_LocalSocket, + template IP_Socket_Type p_RemoteSocket) := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + cr_IP_ConnectionId(tcp, p_LocalSocket, p_RemoteSocket); + + /* + * @desc convert charstring to a the IMS_PTC's type 'IP_AddrInfo_Type' + * @param p_IpAddress + * @return template (value) IP_AddrInfo_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_Char2IpAddress(charstring p_IpAddress) return template (value) IP_AddrInfo_Type + { + var template (value) IP_AddrInfo_Type v_AddrInfo; + + if (f_IpAddressIsIPv4(p_IpAddress)) { + v_AddrInfo := cs_IPv4Addr(p_IpAddress); + } + else { + v_AddrInfo := cs_IPv6Addr(p_IpAddress); + } + return v_AddrInfo; + } + + //**************************************************************************** + // Requests + //---------------------------------------------------------------------------- + /* + * @desc Build-up list of socket options + * @param p_AllowBroadcast (default value: false) + * @return IP_SockOptList_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_IP_SockOptList(boolean p_AllowBroadcast:= false ) return IP_SockOptList_Type + { /* @sic R5w130307: MTU size sic@ */ + var IP_SockOptList_Type v_SockOptList; + var integer i := 0; + + v_SockOptList := {}; + if (p_AllowBroadcast) { + v_SockOptList[i] := {SO_BROADCAST := true}; + i := i + 1; + } + + v_SockOptList[i] := {IP_MTU_SIZE := px_IP_MTU_Size}; + + return v_SockOptList; + } + + // UDP: + + template (value) IP_SOCKET_REQ cs_UDP_SOCKET_REQ(template (value) IP_Socket_Type p_LocalSocket, + boolean p_AllowBroadcast) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + CTRL := { + ConnectionId := cs_UDP_ConnectionId(p_LocalSocket, omit), + Req := { + UDP := { + SocketReq := { + SockOptList := fl_IP_SockOptList(p_AllowBroadcast) + } + } + } + } + }; + + template (value) IP_SOCKET_REQ cs_UDP_DATA_REQ(template (value) IP_Socket_Type p_LocalSocket, + template (value) IP_Socket_Type p_RemoteSocket, + template (value) octetstring p_UDP_Data) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + /* @sic R5-113734 change 8 sic@ */ + DATA := { + ConnectionId := cs_UDP_ConnectionId(p_LocalSocket, p_RemoteSocket), + Req := { + UDP := { + SendTo := { + Buffer := p_UDP_Data + } + } + } + } + }; + + template (value) IP_SOCKET_REQ cs_UDP_CLOSE_REQ(template (value) IP_Socket_Type p_LocalSocket) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + CTRL := { + ConnectionId := cs_UDP_ConnectionId(p_LocalSocket, omit), + Req := { + UDP := { + Close := true + } + } + } + }; + + // ICMPv6: + + template (value) IP_SOCKET_REQ cs_ICMPv6_SOCKET_REQ(template (value) IP_Socket_Type p_LocalSocket, + boolean p_AllowBroadcast) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + CTRL := { + ConnectionId := cs_ICMPv6_ConnectionId(p_LocalSocket, omit), + Req := { + ICMP := { + SocketReq := { + SockOptList := fl_IP_SockOptList(p_AllowBroadcast) + } + } + } + } + }; + + template (value) IP_SOCKET_REQ cs_ICMPv6_DATA_REQ(template (value) IP_Socket_Type p_LocalSocket, + template (value) IP_Socket_Type p_RemoteSocket, + template (value) Datagram_Content_Type p_ICMP_Data) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + * @sic R5-113734 change 8 sic@ */ + DATA := { + ConnectionId := cs_ICMPv6_ConnectionId(p_LocalSocket, p_RemoteSocket), + Req := { + ICMP := { + SendTo := { + Buffer := p_ICMP_Data + } + } + } + } + }; + + template (value) IP_SOCKET_REQ cs_ICMPv6_CLOSE_REQ(template (value) IP_Socket_Type p_LocalSocket) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + CTRL := { + ConnectionId := cs_ICMPv6_ConnectionId(p_LocalSocket, omit), + Req := { + ICMP := { + Close := true + } + } + } + }; + + // TCP: + + template (value) IP_SOCKET_REQ cs_TCP_CONNECT_REQ(template (value) IP_Socket_Type p_LocalSocket, + template (value) IP_Socket_Type p_RemoteSocket, + InternetApplication_Type p_Application := ims) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + CTRL := { + ConnectionId := cs_TCP_ConnectionId(p_LocalSocket, p_RemoteSocket), + Req := { + TCP := { + ConnectReq := { + SockOptList := fl_IP_SockOptList(), /* @sic R5w130307: MTU size sic@ */ + Application := p_Application + } + } + } + } + }; + + template (value) IP_SOCKET_REQ cs_TCP_LISTEN_REQ(template (value) IP_Socket_Type p_LocalSocket, + InternetApplication_Type p_Application := ims, + template (omit) TLSInfo_Type p_TLSInfo := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + /* @sic R5w140125: additional parameter p_TLSInfo sic@ */ + CTRL := { + ConnectionId := cs_TCP_ConnectionId(p_LocalSocket, omit), + Req := { + TCP := { + Listen := { + SockOptList := fl_IP_SockOptList(), /* @sic R5w130307: MTU size sic@ */ + Application := p_Application, + TLSInfo := p_TLSInfo + } + } + } + } + }; + + template (value) IP_SOCKET_REQ cs_TCP_DATA_REQ(template (value) IP_Connection_Type p_IP_Connection, + template (value) TCP_Data_Type p_TCP_Data) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + DATA := { + ConnectionId := p_IP_Connection, + Req := { + TCP := { + Send := p_TCP_Data + } + } + } + }; + + template (value) IP_SOCKET_REQ cs_TCP_CLOSE_REQ(template (value) IP_Connection_Type p_IP_Connection) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + CTRL := { + ConnectionId := p_IP_Connection, + Req := { + TCP := { + Close := true + } + } + } + }; + + + //**************************************************************************** + // Indications + //---------------------------------------------------------------------------- + + // UDP: + + template (present) IP_SOCKET_IND cr_UDP_SOCKET_CNF(template IP_Socket_Type p_LocalSocket) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + CTRL := { + ConnectionId := cr_UDP_ConnectionId(p_LocalSocket, cr_IP_Socket_Omit), + Ind := { + UDP := { + SocketCnf := true + } + } + } + }; + + template (present) IP_SOCKET_IND cr_UDP_DATA_IND(template IP_Socket_Type p_LocalSocket) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + /* @sic R5-113734 change 8 sic@ */ + DATA := { + ConnectionId := cr_UDP_ConnectionId(p_LocalSocket, cr_IP_Socket_Any), + Ind := { + UDP := { + RecvFrom := ? + } + } + } + }; + + // ICMPv6: + + template (present) IP_SOCKET_IND cr_ICMPv6_SOCKET_CNF(template IP_Socket_Type p_LocalSocket) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + CTRL := { + ConnectionId := cr_ICMPv6_ConnectionId(p_LocalSocket, cr_IP_Socket_Omit), + Ind := { + ICMP := { + SocketCnf := true + } + } + } + }; + + template (present) IP_SOCKET_IND cr_ICMPv6_DATA_IND(template IP_Socket_Type p_LocalSocket) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + /* @sic R5-113734 change 8 sic@ */ + DATA := { + ConnectionId := cr_ICMPv6_ConnectionId(p_LocalSocket, cr_IP_Socket_AnyICMP), + Ind := { + ICMP := { + RecvFrom := ? + } + } + } + }; + + // TCP: + + template (present) IP_SOCKET_IND cr_TCP_CONNECT_CNF(template (present) IP_Connection_Type p_IP_Connection) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + CTRL := { + ConnectionId := p_IP_Connection, + Ind := { + TCP := { + ConnectCnf := true + } + } + } + }; + + template (present) IP_SOCKET_IND cr_TCP_DATA_IND(template (present) IP_Connection_Type p_IP_Connection) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + DATA := { + ConnectionId := p_IP_Connection, + Ind := { + TCP := { + Recv := ? + } + } + } + }; + + template (present) IP_SOCKET_IND cr_TCP_CLOSE_CNF(template (present) IP_Connection_Type p_IP_Connection) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + CTRL := { + ConnectionId := p_IP_Connection, + Ind := { + TCP := { + CloseCnf := true + } + } + } + }; + + template (present) IP_SOCKET_IND cr_TCP_ACCEPT_IND(template IP_Socket_Type p_LocalSocket) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + CTRL := { + ConnectionId := cr_TCP_ConnectionId(p_LocalSocket, cr_IP_Socket_Any), + Ind := { + TCP := { + Accept := true + } + } + } + }; + + template (present) IP_SOCKET_IND cr_TCP_CLOSE_IND(template (present) IP_Connection_Type p_IP_Connection) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + CTRL := { + ConnectionId := p_IP_Connection, + Ind := { + TCP := { + Close := true + } + } + } + }; + +} diff --git a/LTE_A_IWD_14wk37/Common/IP_PTC/TCP_Functions.ttcn b/LTE_A_IWD_14wk37/Common/IP_PTC/TCP_Functions.ttcn new file mode 100644 index 0000000..d24c053 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IP_PTC/TCP_Functions.ttcn @@ -0,0 +1,228 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-07 18:37:49 +0200 (Sun, 07 Sep 2014) $ +// $Rev: 12081 $ +/******************************************************************************/ + +module TCP_Functions { + import from CommonDefs all; + import from IP_ASP_TypeDefs all; + import from IP_PTC_Templates all; + import from IP_PTC_Component all; + import from IP_PTC_Routing all; + + + /* + * @desc close TCP connection of TCP server; + * p_RemoteSocket shall be omit if (and only if) the server shall be stopped; + * otherwise p_LocalSocket and p_RemoteSocket shall refer to the TCP connection to be released + * @param p_IP_Connection + * @param p_WaitForCNF + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_TCP_Close(template (value) IP_Connection_Type p_IP_Connection, + boolean p_WaitForCNF := true) runs on IP_PTC + { + IP_SOCK.send(cs_TCP_CLOSE_REQ(p_IP_Connection)); + if (p_WaitForCNF) { + IP_SOCK.receive(cr_TCP_CLOSE_CNF(p_IP_Connection)); + } + } + + //---------------------------------------------------------------------------- + // TCP Server + + /* + * @desc start TCP server + * @param p_LocalIpAddr + * @param p_LocalPort + * @param p_DrbInfo + * @param p_Application (default value: ims) + * @param p_TLSInfo (default value: omit) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_TcpServer_Start(template (value) IP_AddrInfo_Type p_LocalIpAddr, + template (value) PortNumber_Type p_LocalPort, + IP_DrbInfo_Type p_DrbInfo, + InternetApplication_Type p_Application := ims, + template (omit) TLSInfo_Type p_TLSInfo := omit) runs on IP_PTC + { /* @sic R5w140125: additional parameter p_TLSInfo sic@ */ + + var template (value) IP_Socket_Type v_LocalSocket := cs_IP_Socket(p_LocalIpAddr, p_LocalPort); + + // Start TCP socket + IP_SOCK.send(cs_TCP_LISTEN_REQ(v_LocalSocket, p_Application, p_TLSInfo)); + + // Modify routing table + f_IP_PTC_RoutingTable_AddEntry(cs_TCP_ConnectionId(v_LocalSocket), p_DrbInfo); + } + + /* + * @desc stop a TCP server + * @param p_LocalIpAddr + * @param p_LocalPort + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_TcpServer_Stop(template (value) IP_AddrInfo_Type p_LocalIpAddr, + template (value) PortNumber_Type p_LocalPort) runs on IP_PTC + { // NOTE: stoping the server causes all connections to this server to be closed too + var template (value) IP_Connection_Type v_IP_Connection := cs_TCP_ConnectionId(cs_IP_Socket(p_LocalIpAddr, p_LocalPort), omit); + + // Close TCP socket + fl_TCP_Close(v_IP_Connection); + + // Modify routing table + f_IP_PTC_RoutingTable_RemoveEntry(v_IP_Connection); + } + + //---------------------------------------------------------------------------- + // handling of connections from the UE to the server + + /* + * @desc close a UE's connection to the server + * @param p_IP_Connection + * @param p_WaitForCNF (default value: true) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_TcpServer_CloseConnection(template (omit) IP_Connection_Type p_IP_Connection, + boolean p_WaitForCNF := true) runs on IP_PTC + { + var IP_Connection_Type v_IP_Connection; + + if (isvalue(p_IP_Connection)) { + v_IP_Connection := valueof(p_IP_Connection); + + fl_TCP_Close(v_IP_Connection, p_WaitForCNF); + + /* routing table does not need to be modified as the server is still running */ + } + } + + /* + * @desc deal with the UE connecting to the TCP server; + * p_IP_Connection returns the new connection + * @param p_IP_Connection (by reference) + * @param p_ServerAddrIPv4orIPv6 + * @param p_PortNumber + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + altstep a_TcpServer_AcceptConnection(inout template (omit) IP_Connection_Type p_IP_Connection, + template (present) IP_AddrInfo_Type p_ServerAddrIPv4orIPv6, + PortNumber_Type p_PortNumber) runs on IP_PTC + { /* @sic R5s140172: when there is already a connection which needs to be released, the confirmation may come even after date on the new connection sic@ */ + var IP_SOCKET_IND v_IP_SOCKET_IND; + var template (present) IP_Socket_Type v_LocalSocket := cr_IP_Socket(p_ServerAddrIPv4orIPv6, p_PortNumber); + var boolean v_WaitForCNF := false; /* @sic R5s140172 sic@ */ + + [] IP_SOCK.receive(cr_TCP_ACCEPT_IND(v_LocalSocket)) -> value v_IP_SOCKET_IND { + + f_TcpServer_CloseConnection(p_IP_Connection, v_WaitForCNF); // if there is already a connection => close the old connection + + p_IP_Connection := v_IP_SOCKET_IND.CTRL.ConnectionId; + /* the routing table does not need to be changed as there is an entry for the TCP server already and there is no need to change it just because of the remote address */ + } + [] IP_SOCK.receive(cr_TCP_CLOSE_CNF(cr_TCP_ConnectionId(?, ?))) { /* @sic R5s140172: Accept any confirmation sic@ + NOTE: to check that the CNF refers to the correct connection we would need to store it globally => this seems not to be necessary/useful in this case */ + } + } + + /* + * @desc deal with the UE closing a TCP connection + * @param p_IP_Connection + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + altstep a_TcpServer_CloseConnection(IP_Connection_Type p_IP_Connection) runs on IP_PTC + { + [] IP_SOCK.receive(cr_TCP_CLOSE_IND(p_IP_Connection)) { + /* routing table does not need to be modified as the server is still running */ + } + } + + //---------------------------------------------------------------------------- + // TCP Client + + /* + * @desc connect to a TCP server at the UE's side + * @param p_LocalSocket + * @param p_RemoteSocket + * @param p_Application + * @return IP_Connection_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_TcpClient_ConnectReq(template (value) IP_Socket_Type p_LocalSocket, + template (value) IP_Socket_Type p_RemoteSocket, + InternetApplication_Type p_Application) runs on IP_PTC return IP_Connection_Type + { /* @sic R5s140713 - MCC160 implementation sic@ */ + IP_SOCK.send(cs_TCP_CONNECT_REQ(p_LocalSocket, p_RemoteSocket, p_Application)); + return valueof(cs_TCP_ConnectionId(p_LocalSocket, p_RemoteSocket)); + } + + /* + * @desc locall function to allow modification of the TCP connection in alt step + * @param p_TcpConnection + * @return template (present) IP_SOCKET_IND + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_TCP_CONNECT_CNF(IP_Connection_Type p_TcpConnection) return template (present) IP_SOCKET_IND + { + var template (present) IP_Connection_Type v_TcpConnection := p_TcpConnection; + if (not isvalue(p_TcpConnection.Local.Port)) { /* => ephemeral port */ + v_TcpConnection.Local.Port := ?; + } + return cr_TCP_CONNECT_CNF(v_TcpConnection); + } + + /* + * @desc to receive confirmation for pending TCP close + * @param p_TcpConnection (by reference) + * @param p_DrbInfo + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + altstep a_TcpClient_ConnectCnf(inout IP_Connection_Type p_TcpConnection, + IP_DrbInfo_Type p_DrbInfo) runs on IP_PTC + { /* @sic R5s140713 - MCC160 implementation sic@ */ + var IP_SOCKET_IND v_IP_SOCKET_IND; + + [] IP_SOCK.receive(fl_TCP_CONNECT_CNF(p_TcpConnection)) -> value v_IP_SOCKET_IND + { + p_TcpConnection.Local.Port := v_IP_SOCKET_IND.CTRL.ConnectionId.Local.Port; // in case of ephemeral port + + // Modify routing table + f_IP_PTC_RoutingTable_AddEntry(p_TcpConnection, p_DrbInfo); + } + } + +/* altstep a_TcpClient_CloseConnection(IP_Connection_Type p_IP_Connection) runs on IP_PTC */ +/* { /\* deal with the UE closing a TCP connection (exceptional case: normally the SS shall close its client connections to the UE's server) *\/ */ + +/* [] IP_SOCK.receive(cr_TCP_CLOSE_IND(p_IP_Connection)) { */ + +/* // Modify routing table */ +/* f_IP_PTC_RoutingTable_RemoveEntry(p_IP_Connection); */ +/* } */ +/* } */ + + /* + * @desc close TCP connection to the UE's server + * @param p_IP_Connection + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_TcpClient_CloseConnection(template (omit) IP_Connection_Type p_IP_Connection) runs on IP_PTC + { + var IP_Connection_Type v_IP_Connection; + + if (isvalue(p_IP_Connection)) { + v_IP_Connection := valueof(p_IP_Connection); + + fl_TCP_Close(v_IP_Connection); + + // Modify routing table + f_IP_PTC_RoutingTable_RemoveEntry(v_IP_Connection); + } + } +} diff --git a/LTE_A_IWD_14wk37/Common/IP_PTC/UDP_Functions.ttcn b/LTE_A_IWD_14wk37/Common/IP_PTC/UDP_Functions.ttcn new file mode 100644 index 0000000..6ff835e --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IP_PTC/UDP_Functions.ttcn @@ -0,0 +1,126 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-10-23 11:47:20 +0200 (Wed, 23 Oct 2013) $ +// $Rev: 9858 $ +/******************************************************************************/ + +module UDP_Functions { + import from CommonDefs all; + import from IP_ASP_TypeDefs all; + import from IP_PTC_Templates all; + import from IP_PTC_Component all; + import from IP_PTC_Routing all; + + /* + * @desc Bind IP address to UDP server + * Note: there is no default behaviour activated for the IP_PTC + * => waiting for the SA's response is blocking (what helps to avoid unexpected behaviour) + * @param p_LocalIpAddr + * @param p_LocalPort + * @param p_AllowBroadcast + * @return PortNumber_Type .. in case of p_LocalPort=omit we need to get back the ephemeral port + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_UDP_Bind(template (value) IP_AddrInfo_Type p_LocalIpAddr, + template (omit) PortNumber_Type p_LocalPort, + boolean p_AllowBroadcast) runs on IP_PTC return PortNumber_Type + { /* @sic R5-113734 change 8 sic@ */ + var IP_SOCKET_IND v_IP_SOCKET_IND; + + IP_SOCK.send(cs_UDP_SOCKET_REQ(cs_IP_Socket(p_LocalIpAddr, p_LocalPort), p_AllowBroadcast)); + IP_SOCK.receive(cr_UDP_SOCKET_CNF(cr_IP_Socket(p_LocalIpAddr, ?))) -> value v_IP_SOCKET_IND; + return v_IP_SOCKET_IND.CTRL.ConnectionId.Local.Port; /* in case of p_LocalPort=omit we need to get back the ephemeral port */ + } + + /* + * @desc Just close a UDP socket; + * Note: there is no confirmation needed to close a UDP server + * @param p_LocalSocket + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_UDP_Close(template (value) IP_Socket_Type p_LocalSocket) runs on IP_PTC + { + IP_SOCK.send(cs_UDP_CLOSE_REQ(p_LocalSocket)); + } + + /* + * @desc start a UDP socket by binding its address to the given socket; + * the routing table is updated acc. + * @param p_LocalIpAddr + * @param p_LocalPort + * @param p_DrbInfo + * @param p_AllowBroadcast (default value: true) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_UdpServer_Start(template (value) IP_AddrInfo_Type p_LocalIpAddr, + template (value) PortNumber_Type p_LocalPort, + IP_DrbInfo_Type p_DrbInfo, + boolean p_AllowBroadcast := true) runs on IP_PTC + { /* NOTE: in general the port number of a UDP server can be an ephemeral one; in that case 'bind' returns the valid port number; + * but in our case we assume the port to be well-known and therefore p_LocalPort shall not be omit */ + /* @sic R5-113734 change 8 sic@ */ + + var template (value) IP_Socket_Type v_LocalSocket := cs_IP_Socket(p_LocalIpAddr, p_LocalPort); + + // Bind UDP socket + fl_UDP_Bind(p_LocalIpAddr, p_LocalPort, p_AllowBroadcast); // we don't need to evaluate the returned port number since we expect p_LocalPort to be a valid well-known port + + // Modify routing table + f_IP_PTC_RoutingTable_AddEntry(cs_UDP_ConnectionId(v_LocalSocket), p_DrbInfo); + } + + /* + * @desc Wrapper function to avoid mixing up server/client; + * in principle for a client with well-defined (local) port the configuration can be done in the same way as for a server: + * - well defined port is bound + * - routing is done based on local port and ip address + * @param p_LocalIpAddr + * @param p_LocalPort + * @param p_DrbInfo + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_UdpClient_Start(template (value) IP_AddrInfo_Type p_LocalIpAddr, + template (value) PortNumber_Type p_LocalPort, + IP_DrbInfo_Type p_DrbInfo) runs on IP_PTC + { + var boolean v_AllowBroadcast := false; + f_UdpServer_Start(p_LocalIpAddr, p_LocalPort, p_DrbInfo, v_AllowBroadcast); + } + + /* + * @desc close a UDP socket acting as UDP server; + * the routing table is updated acc. + * @param p_LocalIpAddr + * @param p_LocalPort + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_UdpServer_Stop(template (value) IP_AddrInfo_Type p_LocalIpAddr, + template (value) PortNumber_Type p_LocalPort) runs on IP_PTC + { /* @sic R5-113734 change 8 sic@ */ + var template (value) IP_Socket_Type v_LocalSocket := cs_IP_Socket(p_LocalIpAddr, p_LocalPort); + + // Close UDP socket + fl_UDP_Close(v_LocalSocket); + + // Modify routing table + f_IP_PTC_RoutingTable_RemoveEntry(cs_UDP_ConnectionId(v_LocalSocket)); + } + + /* + * @desc close a UDP socket for a client + * this is only needed when the client is bound to a well-know port and has its own entry in the routing table + * @param p_LocalIpAddr + * @param p_LocalPort + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_UdpClient_Stop(template (value) IP_AddrInfo_Type p_LocalIpAddr, + template (value) PortNumber_Type p_LocalPort) runs on IP_PTC + { + f_UdpServer_Stop(p_LocalIpAddr, p_LocalPort); /* => same as for UDP server */ + } +} diff --git a/LTE_A_IWD_14wk37/Common/IRAT/EUTRA_CapabilityFunctions.ttcn b/LTE_A_IWD_14wk37/Common/IRAT/EUTRA_CapabilityFunctions.ttcn new file mode 100644 index 0000000..7611a94 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IRAT/EUTRA_CapabilityFunctions.ttcn @@ -0,0 +1,450 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-07 18:37:49 +0200 (Sun, 07 Sep 2014) $ +// $Rev: 12081 $ +/******************************************************************************/ + +module EUTRA_CapabilityFunctions { + + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_CommonDefs all; + import from EUTRA_RRC_Templates all; + import from EUTRA_DRB_Templates all; + import from EUTRA_SysInfo_Templates all; + import from CommonDefs all; + import from EUTRA_Parameters all; + import from Parameters all; + import from CommonIratDefs all; + import from EUTRA_BandDependentParam all; + import from EUTRA_AuxiliaryFunctions all; + import from EUTRA_AuxiliaryCapCheckFunctions all; + + //---------------------------------------------------------------------- + // Templates + //---------------------------------------------------------------------- + template (value) RadioResourceConfigDedicated cs_508_RadioResourceConfigDedicated_HOToEUTRA(template (omit) CQI_ReportPeriodic p_CQI_ReportingPeriodic, + template (value) PUCCH_ConfigDedicated p_PUCCH_ConfigDedicated, // @sic R5-1236630 sic@ + SR_PUCCH_ResourceIndex_Type p_SR_PUCCH_ResourceIndex, // @sic R5-1236630 sic@ + SR_ConfigIndex_Type p_SR_ConfigIndex) := // @sic R5-1236630 sic@ + /* Values according to 36.508 cl. 4.6.3 Table 4.6.3-18 (using condition n=1 & m=0) */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_RadioResourceConfigDedicated_SrbDrbConfig( { cs_508_SRB1_ToAddMod_DEFAULT, cs_508_SRB2_ToAddMod_DEFAULT }, + { cs_508_DRB_ToAddMod_DEFAULT_AM(tsc_DRB1) }, + cs_508_MAC_MainConfig_Explicit_RBC_DrxL, + cs_508_PhysicalConfigDedicated_Default_HO(p_PUCCH_ConfigDedicated, + p_CQI_ReportingPeriodic, + p_SR_PUCCH_ResourceIndex, + cs_PhysicalConfigDedicated_AntennaInfo_Def, + p_SR_ConfigIndex)); // @sic R5-123630 sic@ + + template (value) RadioResourceConfigDedicated cs_508_RadioResourceConfigDedicated_FullConfig (template (omit) CQI_ReportPeriodic p_CQI_ReportingPeriodic, + template (value) PUCCH_ConfigDedicated p_PUCCH_ConfigDedicated, + SR_PUCCH_ResourceIndex_Type p_SR_PUCCH_ResourceIndex, + SR_ConfigIndex_Type p_SR_ConfigIndex ):= + /* Values according to 36.523-1 Table 13.4.1.5.3.3-7 */ + /* @status APPROVED (LTE) */ + /* @sic R5s140225 sic@ */ + cs_RadioResourceConfigDedicated_SrbDrbConfig( { cs_508_SRB1_ToAddMod_DEFAULT, cs_508_SRB2_ToAddMod_DEFAULT }, + { cs_508_DRB_ToAddMod_DEFAULT_AM(tsc_DRB1) }, + cs_508_MAC_MainConfig_Explicit_RBC_DrxL, + cs_508_PhysicalConfigDedicated_Default_HO(p_PUCCH_ConfigDedicated, + p_CQI_ReportingPeriodic, + p_SR_PUCCH_ResourceIndex, + cs_PhysicalConfigDedicated_AntennaInfo_Def, + p_SR_ConfigIndex)); // @sic R5s140225 R5s140348 sic@ + + template (value) MobilityControlInfo cs_MobilityControlInfo_HO_InterRAT(PhysCellId p_PhysCellId, + template (omit) CarrierFreqEUTRA p_EUTRA_CarrierFreq, + template (value) CarrierBandwidthEUTRA p_CarrierBandwidthEUTRA, + C_RNTI p_C_RNTI, + template (value) RadioResourceConfigCommon p_RadioResourceConfigCommon, + template (omit) RACH_ConfigDedicated p_RACH_ConfigDedicated := cs_RACH_ConfigDedicated) := + /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + cs_MobilityControlInfo(p_PhysCellId, + p_EUTRA_CarrierFreq, + p_CarrierBandwidthEUTRA, + 1, + ms1000, + p_C_RNTI, + p_RadioResourceConfigCommon, + p_RACH_ConfigDedicated); // @sic R5s120686 sic@ + + + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_HandoverToEUTRA(integer p_ARFCN, + Dl_Bandwidth_Type p_DLBW, + template (omit) Ul_Bandwidth_Type p_ULBW, + integer p_CellId, + RRC_TransactionIdentifier p_RRC_TI, + template (value) PRACH_Config p_PRACH_Configuration, + integer p_PuschHoppingOffset, + template (value) SoundingRS_UL_ConfigCommon p_SoundingRsUl_ConfigCommon, + template (omit) TDD_Config p_Tdd_Configuration, + template (omit) CQI_ReportPeriodic p_CQI_ReportingPeriodic, + template (value) PUCCH_ConfigDedicated p_PUCCH_ConfigDedicated, // @sic R5-123630 sic@ + SR_PUCCH_ResourceIndex_Type p_SR_PUCCH_ResourceIndex, // @sic R5-123630 sic@ + SR_ConfigIndex_Type p_SR_ConfigIndex, // @sic R5-123630 sic@ + N_RB_CQI_Type p_N_RB_CQI) := // @sic R5-123712 sic@ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_RRCConnectionReconfiguration_Common (p_RRC_TI, + omit, + cs_MobilityControlInfo_HO_InterRAT(p_CellId, + cs_CarrierFreqEUTRA (p_ARFCN, omit), + cs_CarrierBandwidthEUTRA (p_DLBW, p_ULBW), + tsc_C_RNTI_Def2, // @sic R5s120490 sic@ + cds_RadioResourceConfigCommon_FullConfig(cs_508_RACH_ConfigCommon_Default, // @sic R5-123712 sic@ + p_PRACH_Configuration, + cs_508_PUSCH_ConfigCommon_Default(p_PuschHoppingOffset), + p_SoundingRsUl_ConfigCommon, + p_Tdd_Configuration, + cs_AntennaInfoCommon_1Port, + cs_508_PUCCH_ConfigCommon_Default(p_N_RB_CQI), + tsc_P_b_1Tx)), // @sic R5s120490 sic@ + cs_508_RadioResourceConfigDedicated_HOToEUTRA (p_CQI_ReportingPeriodic, p_PUCCH_ConfigDedicated, p_SR_PUCCH_ResourceIndex, p_SR_ConfigIndex), + cs_SecurityConfigHO_InterRAT); + + template (present) UE_EUTRA_Capability cr_UE_EUTRA_Capability(AccessStratumRelease p_AccessStratumRelease) := + { /* @status APPROVED (UTRAN) */ + accessStratumRelease := p_AccessStratumRelease, + ue_Category := ?, + pdcp_Parameters := { + supportedROHC_Profiles := ?, + maxNumberROHC_ContextSessions := * + }, + phyLayerParameters := { + ue_TxAntennaSelectionSupported := ?, + ue_SpecificRefSigsSupported := ? + }, + rf_Parameters := { + supportedBandListEUTRA := ? + }, + measParameters := { + bandListEUTRA := ? + }, + featureGroupIndicators := f_DeriveFeatrGrpCapFromPics(), + interRAT_Parameters := { + utraFDD := *, // @sic R5s140135 sic@ + utraTDD128 := *, + utraTDD384 := *, + utraTDD768 := *, + geran := *, + cdma2000_HRPD := *, + cdma2000_1xRTT := * + }, + nonCriticalExtension := * + }; + + //---------------------------------------------------------------------- + // Functions + //---------------------------------------------------------------------- + + /* + * @desc To encode the Handover to EUTRA command. + * @param p_EUTRASysInfo + * @return octetstring + * @status APPROVED (LTE_A,LTE_IRAT) + */ + function f_Encode_RRCConnectionReconfiguration_HOToEUTRA (CoOrd_EUTRASysInfo_Type p_EUTRASysInfo) return octetstring + { + var bitstring v_Bitstring; + var ChannelBandwidthDependency_Type v_ChannelBandwidthDependency := f_EUTRA_BandDependentParam(f_ConvertIntegerToDL_Bandwidth(p_EUTRASysInfo.DL_Bandwidth), + f_ConvertIntegerToUL_Bandwidth(p_EUTRASysInfo.HO.UL_Bandwidth)); + + if (px_ePrimaryFrequencyBand < 33) { // Bands below 33 are reserved for FDD + v_Bitstring := encvalue(cs_RRCConnectionReconfiguration_HandoverToEUTRA (p_EUTRASysInfo.Arfcn, + f_ConvertIntegerToDL_Bandwidth (p_EUTRASysInfo.DL_Bandwidth), + f_ConvertIntegerToUL_Bandwidth(p_EUTRASysInfo.HO.UL_Bandwidth), + p_EUTRASysInfo.HO.PhysCellId, + tsc_RRC_TI_Def, + cs_PRACH_Config_Def(cs_508_PRACH_ConfigSIB_FDD ( v_ChannelBandwidthDependency.Prach_FrequencyOffset, + p_EUTRASysInfo.HO.RootSequenceIndex )), + v_ChannelBandwidthDependency.Pusch_HoppingOffset, + cs_508_SoundingRS_UL_ConfigCommon_FDD(v_ChannelBandwidthDependency.SrsBandwidthConfiguration), + omit, + cs_CQI_ReportingPeriodic_FDD, + cs_508_PUCCH_ConfigDedicated_Default_FDD, // @sic R5-123630 sic@ + v_ChannelBandwidthDependency.sr_PUCCH_ResourceIndex, // @sic R5-123630 sic@ + 30, // @sic R5-123630 sic@ + v_ChannelBandwidthDependency.N_RB_CQI)); // @sic R5-123712 sic@ + } else { + v_Bitstring := encvalue(cs_RRCConnectionReconfiguration_HandoverToEUTRA (p_EUTRASysInfo.Arfcn, + f_ConvertIntegerToDL_Bandwidth(p_EUTRASysInfo.DL_Bandwidth), + omit, + p_EUTRASysInfo.HO.PhysCellId, + tsc_RRC_TI_Def, + cs_PRACH_Config_Def(cs_508_PRACH_ConfigSIB_TDD ( v_ChannelBandwidthDependency.Prach_FrequencyOffset, + p_EUTRASysInfo.HO.RootSequenceIndex )), + v_ChannelBandwidthDependency.Pusch_HoppingOffset, + cs_508_SoundingRS_UL_ConfigCommon_TDD(v_ChannelBandwidthDependency.SrsBandwidthConfiguration), + cs_TDD_ConfigDef(px_eTDDsubframeConfig), + cds_CQI_ReportingPeriodic_TDD, + cds_508_PUCCH_ConfigDedicated_Default_TDD, // @sic R5-123630 sic@ + v_ChannelBandwidthDependency.sr_PUCCH_ResourceIndex, // @sic R5-123630 sic@ + 27, // @sic R5-123630 sic@ + v_ChannelBandwidthDependency.N_RB_CQI)); // @sic R5-123712 sic@ + } + + return bit2oct(f_OctetAlignedBitString(v_Bitstring)); // NOTE: bit2oct would add additional bits at the beginning (MSB) whereas here it has be added at the end (LSB) + } + + //---------------------------------------------------------------------------- + /* + * @desc Converts the EUTRA ASN.1 bandwidth PIXIT to an integer, to be passed to another RAT + * @return integer + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_ConvertDL_BandwidthPIXITToInteger() return integer + { + return (f_ConvertDL_BandwidthToInteger(px_ePrimaryBandChannelBandwidth)); + } + + /* + * @desc function to convert boolean parameter ISHRPD to enumerated type CDMA2000_Type + * @param p_IsHRPD + * @return CDMA2000_Type + * @status APPROVED (LTE_IRAT) + */ + function f_ConvertFromBoolToCDMA2000_Type (boolean p_IsHRPD) return CDMA2000_Type + { + if (p_IsHRPD == true) { + return typeHRPD; + } else { + return type1XRTT; + } + } + //---------------------------------------------------------------------------- + /* + * @desc To decode the EUTRA UE-CapabilityRAT-Container + * @param p_Octetstring + * @return UE_EUTRA_Capability + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_EUTRA_DecodeEutraCapMsg(octetstring p_Octetstring) return UE_EUTRA_Capability + { + var UE_EUTRA_Capability v_Ue_Eutra_Capability; + var bitstring v_Bitstring := oct2bit(p_Octetstring); + var integer v_Result := decvalue(v_Bitstring, v_Ue_Eutra_Capability); + if (v_Result != 0) { + FatalError(__FILE__, __LINE__, "UE EUTRA Capability cannot be decoded"); + } + return v_Ue_Eutra_Capability; + } + /* + * @desc convert the PICS parameters pc_FeatrGrp_X from single booleans to a bitstring of size 32. + * Size 32 is chosen because the signaled element featureGroupIndicators in UE-EUTRA-Capability is of size 32. + * @return B32_Type + * @status APPROVED (LTE, UTRAN) + */ + function f_DeriveFeatrGrpCapFromPics () return B32_Type + { + var B32_Type v_FeatureGroupIndicators := f_ConvertBoolToBit(pc_FeatrGrp_1) & + f_ConvertBoolToBit(pc_FeatrGrp_2) & + f_ConvertBoolToBit(pc_FeatrGrp_3) & + f_ConvertBoolToBit(pc_FeatrGrp_4) & + f_ConvertBoolToBit(pc_FeatrGrp_5) & + f_ConvertBoolToBit(pc_FeatrGrp_6) & + f_ConvertBoolToBit(pc_FeatrGrp_7) & + f_ConvertBoolToBit(pc_FeatrGrp_8) & + f_ConvertBoolToBit(pc_FeatrGrp_9) & + f_ConvertBoolToBit(pc_FeatrGrp_10) & + f_ConvertBoolToBit(pc_FeatrGrp_11) & + f_ConvertBoolToBit(pc_FeatrGrp_12) & + f_ConvertBoolToBit(pc_FeatrGrp_13) & + f_ConvertBoolToBit(pc_FeatrGrp_14) & + f_ConvertBoolToBit(pc_FeatrGrp_15) & + f_ConvertBoolToBit(pc_FeatrGrp_16) & + f_ConvertBoolToBit(pc_FeatrGrp_17) & + f_ConvertBoolToBit(pc_FeatrGrp_18) & + f_ConvertBoolToBit(pc_FeatrGrp_19) & + f_ConvertBoolToBit(pc_FeatrGrp_20) & + f_ConvertBoolToBit(pc_FeatrGrp_21) & + f_ConvertBoolToBit(pc_FeatrGrp_22) & + f_ConvertBoolToBit(pc_FeatrGrp_23) & + f_ConvertBoolToBit(pc_FeatrGrp_24) & + f_ConvertBoolToBit(pc_FeatrGrp_25) & + f_ConvertBoolToBit(pc_FeatrGrp_26) & + f_ConvertBoolToBit(pc_FeatrGrp_27) & // @sic R5-103621 sic@ + f_ConvertBoolToBit(pc_FeatrGrp_28) & // @sic R5-113674 sic@ + f_ConvertBoolToBit(pc_FeatrGrp_29) & // @sic R5-113674 sic@ + f_ConvertBoolToBit(pc_FeatrGrp_30) & // @sic R5-120748 sic@ + f_ConvertBoolToBit(pc_FeatrGrp_31) & // @sic R5s130237 sic@ + '0'B; + return v_FeatureGroupIndicators; + } + + /* + * @desc Function to check the supported EUTRA bands + * relates PICS settings to reported bands + * Reference 36.523-1 Table 8.5.4.1.3.3-2 + * @param p_ReceivedCapabilityMsg + * @status APPROVED (LTE, UTRAN) + */ + function f_CheckUE_SupportedEUTRA_Bands(UE_EUTRA_Capability p_ReceivedCapabilityMsg) + { + //@sic R5s140566 sic@ + var UE_EUTRA_Capability v_ReceivedCapabilityMsg; + var integer i; + var integer v_BandEUTRA; + var integer v_BitStringIndex; + var bitstring v_SuppEutraBandsAccToPICS := f_DeriveSuppEutraBandsFromPics(); + var bitstring v_SuppEutraBandsReported := int2bit(0, lengthof(v_SuppEutraBandsAccToPICS)); + + v_ReceivedCapabilityMsg := p_ReceivedCapabilityMsg; + + // Check that number of supported EUTRA bands match the set PICS parameters (pc_eBanda_Supp) + if (lengthof(v_ReceivedCapabilityMsg.rf_Parameters.supportedBandListEUTRA) != f_GetNrOfSuppEutraBands(v_SuppEutraBandsAccToPICS)) { + f_SetVerdict(fail, __FILE__, __LINE__, "Mismatch between the number of bands acc. to PICS setting and the number of bands reported by the UE"); // @sic R5-133612 sic@ + } + + // Check that any value B such that pc_eBandB_Supp is TRUE and different from all eutra-Band[k] where k = 1 to a - 1 + // Go through the received supportedBandListEUTRA and match against the supported bands according to the PICS + for (i := 0; i < lengthof(v_ReceivedCapabilityMsg.rf_Parameters.supportedBandListEUTRA); i := i + 1) { + + v_BandEUTRA := v_ReceivedCapabilityMsg.rf_Parameters.supportedBandListEUTRA[i].bandEUTRA; + v_BitStringIndex := v_BandEUTRA - 1; + + if (not f_Bitstring_BitIsSet(v_SuppEutraBandsAccToPICS, v_BitStringIndex)) { + f_SetVerdict(fail, __FILE__, __LINE__, "PICS does not match reported capability for band nr. " & int2str(v_BandEUTRA)); // @sic R5-133612 sic@ + + } else { + if (f_Bitstring_BitIsSet(v_SuppEutraBandsReported, v_BitStringIndex)) { + f_SetVerdict(fail, __FILE__, __LINE__, "support of band nr. " & int2str(v_BandEUTRA) & " is reported more than once"); // @sic R5-133612 sic@ + } + v_SuppEutraBandsReported[v_BitStringIndex] := '1'B; + } + // NOTE: number of bands reported by the UE and number of bands acc. to PICS setting are equal AND none of the bands is reported twice by the UE + // => bands reported by the UE are the same as acc. to PICS setting (i.e. we don't need to check explicitly the PICS against the bands being reported) + } + + // interFreqEUTRA-BandList SEQUENCE (SIZE (1..maxBands)) OF SEQUENCE { + //* same number of entries like in supportedEUTRA-BandList + //* Match number of entries in interFreqEUTRA-BandList with number of entries in supportedEUTRA-BandList + for (i := 0; i < lengthof(v_ReceivedCapabilityMsg.measParameters.bandListEUTRA); i := i + 1) { + if (lengthof(v_ReceivedCapabilityMsg.rf_Parameters.supportedBandListEUTRA) != lengthof(v_ReceivedCapabilityMsg.measParameters.bandListEUTRA[i].interFreqBandList)) { + f_SetVerdict(fail, __FILE__, __LINE__, "Number of interFreqEUTRA-BandList does not match nr. of supportedEUTRA-BandList"); // @sic R5-133612 sic@ + } + } + + //@sic R5s100302 Change 6 : Correction of check of supported interRat bands sic@ + // Check that number of bands in interRAT-Parameters matches number of entries in interRAT-BandList + // According to 36.331: + // interRAT-BandList - One entry corresponding to each supported band of another RAT + // listed in the same order as in the interRAT-Parameters. + for (i := 0; i < lengthof(v_ReceivedCapabilityMsg.measParameters.bandListEUTRA); i := i + 1) { + if (ispresent(v_ReceivedCapabilityMsg.measParameters.bandListEUTRA[i].interRAT_BandList)) { + if (lengthof(v_ReceivedCapabilityMsg.measParameters.bandListEUTRA[i].interRAT_BandList) != f_Count_Supported_interRAT_Bands(v_ReceivedCapabilityMsg)) { + f_SetVerdict(fail, __FILE__, __LINE__, "Number of listed bands in interRAT-Parameters does not match number of entries in interRAT-BandList"); // @sic R5-133612 sic@ + } + } + } + } // f_CheckUE_SupportedEUTRA_Bands + + /* + * @desc check the reported UE Category vs. UE Category PICS items. + * Inconsistency leads to verdict INCONCLUSIVE + * @param p_ReceivedCapabilityMsg + * @status APPROVED (LTE, UTRAN) + */ + function f_CheckUE_Category (UE_EUTRA_Capability p_ReceivedCapabilityMsg) + { // @sic R5-123325 sic@ + var UE_EUTRA_Capability v_ReceivedCapabilityMsg; + + v_ReceivedCapabilityMsg := p_ReceivedCapabilityMsg; + + select (v_ReceivedCapabilityMsg.ue_Category) { + case (1) {if (not pc_ue_Category_1) {f_SetVerdict(inconc, __FILE__, __LINE__, "UE_Category reported inconsistent with PICS");}} + case (2) {if (not pc_ue_Category_2) {f_SetVerdict(inconc, __FILE__, __LINE__, "UE_Category reported inconsistent with PICS");}} + case (3) {if (not pc_ue_Category_3) {f_SetVerdict(inconc, __FILE__, __LINE__, "UE_Category reported inconsistent with PICS");}} + case (4) {if (not pc_ue_Category_4) {f_SetVerdict(inconc, __FILE__, __LINE__, "UE_Category reported inconsistent with PICS");}} + case (5) {if (not pc_ue_Category_5) {f_SetVerdict(inconc, __FILE__, __LINE__, "UE_Category reported inconsistent with PICS");}} + case else { + f_SetVerdict(fail, __FILE__, __LINE__, "Invalid UE Category received from the UE"); // @sic R5-133612 sic@ + } + } + } + + //------------------------------------------------------------------------------------------------------------- + /* + * @desc To check the EUTRA Radio Access Capability IE in the RRC Connection Setup Complete + * @param p_EUTRA_RadioAccessCapability + * @param p_Release + * @status APPROVED (UTRAN) + */ + function f_UTRAN_CheckEUTRA_IRAT(octetstring p_EUTRA_RadioAccessCapability, + integer p_Release) + { //@sic R5s140566 sic@ + var UE_EUTRA_Capability v_UE_EUTRA_Capability := f_EUTRA_DecodeEutraCapMsg (p_EUTRA_RadioAccessCapability); + var AccessStratumRelease v_Release; + + select (p_Release) { + case (8) { + v_Release := rel8; + } + case (9) { + v_Release := rel9; + } + case (10) { + v_Release := rel10; + } + case (11) { + v_Release := rel11; + } + case else { + FatalError(__FILE__, __LINE__, "Cannot decode Release Version"); + } + } + + // In the match: Check the following fields + // accessStratumRelease + // pdcp-Parameters: + // supportedROHC-Profiles: Checked it is present + // maxNumberROHC-ContextSessions:Checked it is present + // phyLayerParameters: + // ul-AntennaSelectionSupported Checked it is present + // ue-SpecificRefSigsSupported Checked it is present + // featureGroupIndicators To be checked against ICS statements pcFeatGrp_1 to pcFeatGrp_27, other bits shall be set to 0. + if (not(match(v_UE_EUTRA_Capability, cr_UE_EUTRA_Capability(v_Release)))) { + f_SetVerdict(fail, __FILE__, __LINE__, "featureGroupIndicators not matching the received statement. "); + } + + // ue-Category: To be checked against ICS statements in 36.523-2 pc_ue_Category_X + f_CheckUE_Category ( v_UE_EUTRA_Capability ); + + // eutra-Band To be checked against ICS statements in 36.523-2 pc_eBandXX_Supp (indicating the coded supporting bands) + // halfDuplex being mandatory, it is implicitely checked + f_CheckUE_SupportedEUTRA_Bands(v_UE_EUTRA_Capability); + } + + + //---------------------------------------------------------------------------- + /* + * @desc To decode and return the E-UTRA release in integer + * @param p_Octetstring + * @return integer + */ + function f_EUTRA_GetEutraAccessStratumRelease(octetstring p_Octetstring) return integer + { + var UE_EUTRA_Capability v_UE_EUTRA_Capability := f_EUTRA_DecodeEutraCapMsg (p_Octetstring); + var integer v_ReleaseInteger; + + select (v_UE_EUTRA_Capability.accessStratumRelease) { + case (rel8) { + v_ReleaseInteger := 8; + } + case (rel9) { + v_ReleaseInteger := 9; + } + case (rel10) { + v_ReleaseInteger := 10; + } + case else { + FatalError(__FILE__, __LINE__, "Cannot decode Release Version"); + } + } + return v_ReleaseInteger; + } +} diff --git a/LTE_A_IWD_14wk37/Common/IRAT/GERAN_CapabilityFunctions_IRAT.ttcn b/LTE_A_IWD_14wk37/Common/IRAT/GERAN_CapabilityFunctions_IRAT.ttcn new file mode 100644 index 0000000..c7c2ded --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IRAT/GERAN_CapabilityFunctions_IRAT.ttcn @@ -0,0 +1,112 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-05-24 23:07:55 +0200 (Sat, 24 May 2014) $ +// $Rev: 11321 $ +/******************************************************************************/ + +module GERAN_CapabilityFunctions_IRAT { + + import from CommonDefs all; + import from NAS_CommonTemplates all; + import from GERAN_TypeDefs all; + import from GERAN_Templates all; + import from UTRAN_Parameters all; + + //---------------------------------------------------------------------- + // Templates + //---------------------------------------------------------------------- + + //---------------------------------------------------------------------- + // Functions + //---------------------------------------------------------------------- + + /* + * @desc To be called from the EUTRA PTC to encode the PS Handover to Geran command + * @param p_Cell_ARFCN ARFCN of the cell control channel + * @param p_NCC + * @param p_BCC + * @param p_GPRS_ARFCN ARFCN of the GPRS channel + * @param p_UplinkTBF (default : true) - set to false if require Downlink + * @param p_NASContainer (default : false) - set to true for 8.4.3.1 which requires a NAS Container to be included in the HO msg + * @return octetstring .. encoded octetstring + * @status + */ + function f_G_EncodePSHandoverToGeranCommand(integer p_Cell_ARFCN, + B3_Type p_NCC, + B3_Type p_BCC, + integer p_GPRS_ARFCN, + boolean p_UplinkTBF := true, + boolean p_NASContainer := false) return octetstring + { + var template (value) GlobalTFI v_GlobalTFIul; + var bitstring v_Bitstring; + var octetstring v_Octetstring; + var B1_Type v_NMask := '0'B; + var template (omit) B7_Type v_NLen := omit; + var template (omit) octetstring v_NASContainer := omit; + if (p_UplinkTBF) { + v_GlobalTFIul := cs_GlobalTFIul; + } else { + v_GlobalTFIul := cs_GlobalTFIdl; + } + if (p_NASContainer) { + // Octet 1: Spare 3, oldXID, spare 1, Type of Ciphering Algorithm + // Octets 2-5: IOV-UI value + v_NASContainer := bit2oct(tsc_Spare3&'1'B&tsc_Spare1& int2bit (enum2int(px_GPRS_CipheringAlgorithm), 3)) & '00000000'O; // @sic R5-130618, R5s130132 sic@ + v_NMask := '1'B; + v_NLen := int2bit(lengthof(v_NASContainer), 7); + } + + v_Bitstring := encvalue (cs_G_PSHandoverCmdToGERAN (v_GlobalTFIul, + cs_PSHO_RResource (int2bit(p_Cell_ARFCN, 10), + p_NCC & p_BCC, + cs_FreqParam_PDTCH (int2bit(p_GPRS_ARFCN, 10)), + cs_GPRSMode_UL), + v_NMask, + v_NLen, + v_NASContainer)); + v_Octetstring := bit2oct(f_OctetAlignedBitString(v_Bitstring)); //Make bitstring aligned with octetstring (padding at the end) + return v_Octetstring; + } + + /* + * @desc Function used for converting an integer input value to a B3_Type value to use in SI2quater + * @param p_EUTRA_DL_Bandwidth + * @return B3_Type + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_GERAN_ConvertIntegerToEUTRA_MeasurementBandwidth(integer p_EUTRA_DL_Bandwidth) return B3_Type + { + var B3_Type v_MeasurementBandwidth; + + select (p_EUTRA_DL_Bandwidth) { + case (6) { //1.4MHz + v_MeasurementBandwidth := '000'B; + } + case (15) { //3MHz + v_MeasurementBandwidth := '001'B; + } + case (25) { //5MHz + v_MeasurementBandwidth := '010'B; + } + case (50) { //10MHz + v_MeasurementBandwidth := '011'B; + } + case (75) { //15MHz + v_MeasurementBandwidth := '100'B; + } + case (100) { //20MHz + v_MeasurementBandwidth := '101'B; + } + case else { + FatalError (__FILE__,__LINE__, "invalid value for ChannelBandwidth"); + } + } + return v_MeasurementBandwidth; + } +} diff --git a/LTE_A_IWD_14wk37/Common/IRAT/GERAN_SRVCC.ttcn b/LTE_A_IWD_14wk37/Common/IRAT/GERAN_SRVCC.ttcn new file mode 100644 index 0000000..b05ee28 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IRAT/GERAN_SRVCC.ttcn @@ -0,0 +1,143 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-04 15:12:03 +0200 (Thu, 04 Sep 2014) $ +// $Rev: 12027 $ +/******************************************************************************/ + +module GERAN_SRVCC { + + import from GERAN_Templates all; + import from GERAN_TypeDefs all; + import from CommonDefs all; + import from GERAN_Parameters all; + + // ============================================================================= + // RR HANDOVER COMMAND ntw -> ue/ms + // 3GPP TS 44.018 clause 9.1.15 + // ----------------------------------------------------------------------------- + template (value) HANDOVERCOMMAND cs_G_HandoverCmdToGERAN_FH_NonHopping (integer p_ARFCN, + integer p_TCH_ARFCN, + B3_Type p_TSC, + B3_Type p_NCC := '001'B, + B3_Type p_BCC := '101'B, + B5_Type p_Cht_Schn := '00001'B,//TCH/F + ACCHs + B3_Type p_TN := tsc_TN1, // same as that used in TCH configuration + B8_Type p_HandOverRef := '01010101'B, + B5_Type p_PowerLevel := '01010'B, + template (value) SyncInd p_SyncInd := cs_SyncInd_Def, + template (omit) FreqListShort p_FreqListShort := omit, + template (omit) FreqList p_FreqList := omit, + template (omit) CellChDescr p_CellChDescr := omit, + template (omit) MultislotAlloc p_MultislotAlloc := omit, + template (omit) ChMode p_ChMode := cs_G_ChModeSpeechFROrHRV1, // @sic R5s140620 sic@ + template (omit) FreqChannelSeq p_FreqChannelSeq := omit, + template (omit) MobileAlloc p_MobileAlloc := omit, + template (omit) TimeDiff p_TimeDiff := omit, + template (omit) TA p_TA := omit, + template (omit) CipherModeSetting p_CipherModeSetting := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + skipIndicator := tsc_SkipIndicator, //BITSTRING [4] + rrProtocolDiscriminator := tsc_PD_RR, //BITSTRING [4] + msgType := oct2bit ('2B'O), //BITSTRING [8] + cellDescr := cs_G_CellDescr(p_NCC,p_BCC, p_ARFCN ), //M OCTETSTRING [2] + ch1Descr_at := cs_ChannelDescr_FH_NonHopping ( p_Cht_Schn, p_TN, p_TSC, p_TCH_ARFCN), //description of the 1st channel, after time M OCTETSTRING [3] + hoRef := p_HandOverRef, //handover reference M BITSTRING [8] + powerCmdAccessType := cs_G_PowCmd_20(p_PowerLevel), //power command and access type M OCTETSTRING [1] + syncInd := p_SyncInd, //synchronization indication O OCTETSTRING [1] + freqListShort_at := p_FreqListShort, //frequency short list, after time C OCTETSTRING [10] + freqList_at := p_FreqList, //frequency list, after time C OCTETSTRING [4..132] + cellChDescr := p_CellChDescr, //cell channel description C OCTETSTRING [17] + mSlotAllocDescr := p_MultislotAlloc, //Multislot Allocation C OCTETSTRING [3..12] + ch1Mode := p_ChMode, //mode of the 1st channel O OCTETSTRING [2] + channelSet2Mode := omit, //mode of channel set 2 OOCTETSTRING [2] + channelSet3Mode := omit, //mode of channel set 3 OOCTETSTRING [2] + channelSet4Mode := omit, //mode of channel set 4 OOCTETSTRING [2] + channelSet5Mode := omit, //mode of channel set 5 OOCTETSTRING [2] + channelSet6Mode := omit, //mode of channel set 6 OOCTETSTRING [2] + channelSet7Mode := omit, //mode of channel set 7 OOCTETSTRING [2] + channelSet8Mode := omit, //mode of channel set 8 OOCTETSTRING [2] + ch2Descr_at := omit, //description of the 2nd channel, after time O OCTETSTRING [4] + ch2Mode := omit, //mode of the 2nd channel O OCTETSTRING [2] + freqChSeq_at :=p_FreqChannelSeq, //frequency channel sequence, after time C OCTETSTRING [10] + mobileAlloc_at := p_MobileAlloc, //mobile allocation, after time C OCTETSTRING [3..10] + startingTime := omit, //starting time O OCTETSTRING [3] + realTimeDiff := p_TimeDiff, //real time difference C OCTETSTRING [3] + ta := p_TA, //timing advance C TV [2] + freqListShort_bt := omit, //frequency short list, before time C TV [10] + freqList_bt := omit, //frequency list, before time C TLV [4..132] + ch1Descr_bt := omit, //description of the 1st channel, before time O TV [4] + ch2Descr_bt := omit, //description of the 2nd channel, before time O TV [4] + freqChSeq_bt := omit, //frequency channel sequence, before time C TV [10] + mobileAlloc_bt := omit, //mobile allocation, before time C TLV [3..10] + ciphModeSetting := p_CipherModeSetting, //cipher mode setting O TV [1] + vGCS_TargetMode := omit, //VGCS target mode Indication O TLV [3] + multiRateConfig := omit, //multiRate configuration TLV [4..8] + dynaARFCN_Mapping := omit, //dynamic ARFCN mapping O TLV [6..34] + vGCSCipherParams := omit, // VGCS Ciphering Parameters O TLV [3-15] + dedServiceInfo := omit, // Dedicated Service Info O TV 2 + plmnIndex := omit // PLMN Index O TV 1 IEI = A @sic R5s130195 Baseline Moving sic@ + }; + + template (value) ChannelDescr cs_ChannelDescr_FH_NonHopping(B5_Type p_Cht_Schn, + B3_Type p_TN, + B3_Type p_TSC, + integer p_ARFCN ) := + { /* Channel description 2 + 3GPP TS 44.018 clause 10.5.2.5a */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + iei := omit, // '01100110'B + cht_schn := p_Cht_Schn, // channel type and TDMA offset + tn := p_TN, // timeslot number + tsc := p_TSC, // training sequence code + hch := '0'B, // hch = 0 Single RF chan non hopping + maio := omit, // mobile allocation index offset - hopping + hsn := omit, // hopping sequence number - hopping + spr := '00'B, // '00'B - non hopping + arfcn := int2bit(p_ARFCN,10) // absolute RF channel number - non hopping + }; + + template (value) SyncInd cs_SyncInd_Def := + { // As per 51.010 table 40.2.4.33 + /* @status APPROVED (LTE_A, LTE_IRAT) */ + iei := 'D'H, // @sic R5s140043 sic@ + normalCellInd := '0'B, // Out of range timing advance is ignored + reportOTD := '0'B, // report observed time difference: Mobile Time Difference IE and Mobile Time Difference on Hyperframe level IE shall not be included in the HANDOVER COMPLETE message + syncInd := '00'B // Non-synchronized synchronisation indication + }; + + /* + * @desc Encodes the HO to GERAN command + * @param p_ARFCN + * @param p_TCH_ARFCN + * @param p_NCC (default value: '001'B) + * @param p_BCC (default value: '101'B) + * @param p_IncludeCipherModeSetting (default value: false) + * @return octetstring + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_G_EncodeHandoverToGERAN_FH_NonHopping (integer p_ARFCN, + integer p_TCH_ARFCN, + B3_Type p_NCC := '001'B, + B3_Type p_BCC := '101'B, + boolean p_IncludeCipherModeSetting := true) // @sic R5s140427 sic@ + return octetstring + { + var template (omit) CipherModeSetting v_CipherModeSetting := omit; + var bitstring v_Bitstring; + var octetstring v_Octetstring; + + if (p_IncludeCipherModeSetting) { + v_CipherModeSetting := cs_CipherModeSettingGSM; // @sic R5-130560 sic@ + } + + v_Bitstring := encvalue(cs_G_HandoverCmdToGERAN_FH_NonHopping ( p_ARFCN, p_TCH_ARFCN, px_TSC,p_NCC, p_BCC, -, -, -, -, -, -, -, -, -, -, -, -, -, -, v_CipherModeSetting)); + v_Octetstring := bit2oct(f_OctetAlignedBitString(v_Bitstring)); /* Make bitstring aligned with octetstring (padding at the end) */ + return v_Octetstring; + } + +} diff --git a/LTE_A_IWD_14wk37/Common/IRAT/NAS_24008Templates_AccessCap.ttcn b/LTE_A_IWD_14wk37/Common/IRAT/NAS_24008Templates_AccessCap.ttcn new file mode 100644 index 0000000..b62f9e7 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IRAT/NAS_24008Templates_AccessCap.ttcn @@ -0,0 +1,126 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-07-06 21:15:13 +0200 (Sun, 06 Jul 2014) $ +// $Rev: 11812 $ +/******************************************************************************/ + +module NAS_24008Templates_AccessCap { + import from NAS_24008TypeDefs all; + + //---------------------------------------------------------------------------- + + template (present) MultiSlotCap cr_MultiSlotCapAny := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + mask1 := ?, + hSCSDClass := *, // not present if mask1 = 0 + mask2 := ?, + gPRSClass := *, // not present if mask2 = 0 + gPRSExtDynAllocCap := *, // not present if mask2 = 0 + mask3 := ?, + sMSValue := *, // not present if mask3 = 0 + sMValue := *, // not present if mask3 = 0 + mask4 := ?, + eCSDClass := *, // not present if mask4 = 0 + mask5 := ?, + eGPRSClass := *, // not present if mask5 = 0 + eGPRSExtDynAllocCap := *, // not present if mask5 = 0 + mask6 := ?, + dTMGPRSClass := *, // not present if mask6 = 0 + singleSlotDTM := *, // not present if mask6 = 0 + mask7 := *, // not present if mask6 = 0 + dtmEGPRSClass := * // not present if mask6 or mask7 = 0 + }; + + //---------------------------------------------------------------------------- + + template (present) SingleAccessCap cr_SingleAccessCapAny := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + accLength := ?, + rfPwrCap := ?, + mask1 := ?, + a5_1 := *, // not present if mask1 = 0 + a5_2 := *, // not present if mask1 = 0 + a5_3 := *, // not present if mask1 = 0 + a5_4 := *, // not present if mask1 = 0 + a5_5 := *, // not present if mask1 = 0 + a5_6 := *, // not present if mask1 = 0 + a5_7 := *, // not present if mask1 = 0 + esInd := ?, + pS := ?, + vGCS := ?, + vBS := ?, + mask2 := ?, + multiSlotCap := cr_MultiSlotCapAny ifpresent, // not present if mask2 = 0 + mask3 := ?, + psk8PwrCap := *, // not present if mask3 = 0 + compactIFMeas := ?, + revLev := ?, + fddRATCap := ?, + tdd384RATCap := ?, + cdma2000RATCap := ?, + tdd128RATCap := ?, + gERANFeatPkge1 := ?, + mask4 := ?, + extDTMGPRSMultiSlotClass := *, // not present if mask4 = 0 + extDTMEGPRSMultiSlotClass := *, // not present if mask4 = 0 + modulationBasedMultiSlot := ?, + mask5 := ?, + highMultislotCap := *, // not present if mask5 = 0 + mask6 := ?, + gERANIuModeCapLength := *, // not present if mask6 = 0 + fLOIuCap := *, // not present if mask6 = 0 + gmskMultislotPwrProfile := ?, + psk8MultislotPwrProfile := ?, + multiTBFCap := ?, + dlAdvRxPerformance := ?, + extRLCMACCtrlCap := ?, + dTMEnhCap := ?, + mask7 := ?, + dTMGPRSHighClass := *, // not present if mask7 = 0 + mask8 := *, // not present if mask7 = 0 + dTMEGPRSHighClass := *, // not present if mask7 or mask8 = 0 + pSHOCap := ?, + dTMHOCap := ?, + mask9 := ?, + multislotCapDlDualCarrier := *, // not present if mask9 = 0 + dlDualCarrierDTMCap := *, // not present if mask9 = 0 + flexTimeslotAssign := ?, + gANPSHOCap := ?, + rLCNonPersistentMode := ?, + reducedLatencyCap := ?, + ulEGPRS2 := ?, + dlEGPRS2 := ?, + eutraFDD := ?, + eutraTDD := ?, + geran2EutraSupport := ?, // @sic R5s100135 sic@ + priorityBasedReselection := ?, + mask10 := *, // @sic R5s110176 Baseline Moving, R5s110242 sic@ + altEFTAMultislotClass := *, // not present if mask10 = 0 @sic R5s110176 Baseline Moving sic@ + eftaMultislotCapRedforDDC := *, // not present if mask10 = 0 @sic R5s110176 Baseline Moving sic@ + upperLayerPDUStartCapforRLCUMInd := *, // @sic R5s110176 Baseline Moving sic@ + emstCap := *, // @sic R5s110176 Baseline Moving sic@ + mttiCap := *, // @sic R5s110176 Baseline Moving sic@ + utraCSGCellsReporting := *, // @sic R5s110176 Baseline Moving sic@ + eutraCSGCellsReporting := *, // @sic R5s110176 Baseline Moving sic@ + dtrCap := *, // @sic R5s120178 Baseline Moving sic@ + emsrCap := *, // @sic R5s120178 Baseline Moving sic@ + fastDLFreqSwitchingCap := *, // @sic R5s120178 Baseline Moving sic@ + tighterCap := *, // @sic R5s120178 Baseline Moving sic@, + fanrCap := *, // @sic R5s130195 Baseline Moving sic@ + ipaCap := * // @sic R5s130195 Baseline Moving sic@ + }; + + //---------------------------------------------------------------------------- + + template (present) MS_RadioAccessCapList cr_MSRadioAccessCapList(template (present) MS_RadioAccessCap p_MS_RadioAccessCap) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + raCapability := p_MS_RadioAccessCap, + repeatCap := ? // this structure repeats itself, so need to indicate whether to go round again @sic R5s100135 sic@ + }; + +} diff --git a/LTE_A_IWD_14wk37/Common/IRAT/NAS_24008Templates_IRAT.ttcn b/LTE_A_IWD_14wk37/Common/IRAT/NAS_24008Templates_IRAT.ttcn new file mode 100644 index 0000000..e575427 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IRAT/NAS_24008Templates_IRAT.ttcn @@ -0,0 +1,3422 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-07 18:37:49 +0200 (Sun, 07 Sep 2014) $ +// $Rev: 12081 $ +/******************************************************************************/ + +module NAS_24008Templates_IRAT { + import from CommonDefs all; + import from NAS_24008TypeDefs all; + import from NAS_CommonTypeDefs all; + import from NAS_CommonTemplates all; + import from UTRAN_Parameters all; + import from Parameters all; + import from NAS_24008Templates_AccessCap all; + + // ============================================================================= + // Constants + // ----------------------------------------------------------------------------- + + const ProtocolDiscriminator tsc_GMM_PD := '1000'B; /* GMM protocol discriminator 3GPP 24.008 clause 10.4 + @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const ProtocolDiscriminator tsc_SMPD := '1010'B; /* SM protocol discriminator + @status APPROVED (LTE_IRAT, UTRAN) */ + const B4_Type tsc_PDP_TypeOrg := '0001'B; /* Default value IETF allocated address + @status APPROVED (LTE_IRAT, UTRAN) */ + const PDP_TypeNo tsc_PDP_TypeNoIPv4 := '21'O; /* Indicates IP v4. + @status APPROVED (LTE_IRAT, UTRAN) */ + const PDP_TypeNo tsc_PDP_TypeNoIPv6 := '57'O; /* Indicates IP v6. + @status APPROVED (LTE_IRAT, UTRAN) */ + const PDP_TypeNo tsc_PDP_TypeNoIPv4v6 := '8D'O; /* Indicates IP v4 and v6. + @status APPROVED (LTE_IRAT, UTRAN) */ + const B3_Type tsc_I_AttachTypeCombined := '011'B; /* For UTRAN/GERAN only + @status APPROVED (LTE_IRAT, POS, SSNITZ, UTRAN) */ + const B3_Type tsc_I_AttachTypeGPRSAtt := '001'B; /* For UTRAN/GERAN only + @status APPROVED (LTE_IRAT, POS, SSNITZ, UTRAN) */ + const B3_Type tsc_I_UpdateTypeCombined := '001'B; /* For UTRAN/GERAN only + @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + const B3_Type tsc_I_UpdateTypeCombinedWithIMSI := '010'B; /* For UTRAN/GERAN only + @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + const B3_Type tsc_I_UpdateTypeRAOnly := '000'B; /* For UTRAN/GERAN only + @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + const B3_Type tsc_I_UpdateTypePeriodic := '011'B; /* For UTRAN/GERAN only + @status APPROVED (LTE_IRAT) */ + + const RejCau tsc_ServiceOptionNotSupported := '20'O; /* reject cause: Service option not supported (24.008 cl. 10.5.3.6) + @status APPROVED (LTE_A, LTE_IRAT, POS) */ + const B2_Type tsc_NMO_I := '00'B; /* Network Mode of Operation I (3GPP 24.008 / 10.5.1.12.3) + @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const B2_Type tsc_NMO_II := '01'B; /* Network Mode of Operation II (3GPP 24.008 / 10.5.1.12.3) + @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const B2_Type tsc_NMO_II_ExtendedNMO_I := '11'B; /* Network Mode of Operation II (3GPP 24.008 / 10.5.1.12.3) + @status (APPROVED (UTRAN)) */ + + const octetstring tsc_RAC_2 := '02'O; /* Routing Area Code, 1 octet, 3GPP 24.008 clause 10.5.1.12.3 + @status APPROVED (LTE_IRAT) */ + + const CauseValue tsc_SM_CauseValue_RegularDeactivation := '24'O; /* Regular deactivation according to 24.008 cl. 10.5.6.6 + @status APPROVED (UTRAN) */ + + const B1_Type tsc_FOP_NoFollowOnProceed := '1'B; /* @status APPROVED (LTE_IRAT, SSNITZ, POS, UTRAN) */ + const B1_Type tsc_FOP_FollowOnProceed := '0'B; /* @status APPROVED (SSNITZ, UTRAN) */ + + //---------------------------------------------------------------------------- + + template (value) AC_ReferenceNumber cs_AC_RefNum3 := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + aCValue := '0011'B + }; + + //---------------------------------------------------------------------------- + + + template (present) AttachType cr_AttachType (template (present) B1_Type p_FOR, + template (present) B3_Type p_AttType) := + { /* @status APPROVED (LTE_IRAT, POS, SSNITZ, UTRAN) */ + forValue := p_FOR, // Follow-on request + attachType := p_AttType // Type of attach + }; + + template (present) AttachType cr_AttachTypeAny := cr_AttachType(?, ?); /* @status APPROVED (LTE_IRAT) */ + + //---------------------------------------------------------------------------- + + template (present) AuthRspExt cr_AuthCiphRspExtAny := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := '29'O, // IEI is 0x29 (see 24.008 / 9.4.10) + iel := ?, + rES := ? + }; + + //---------------------------------------------------------------------------- + + template (present) AuthRsp cr_AuthRspAny (template (omit) IEI8_Type p_IEI := '22'O) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, // '00100010'B (22 hex) + rES := ? // Authentication Parameter RES + }; + + //---------------------------------------------------------------------------- + + template (present) AuthRspExt cr_AuthRspExtAny := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := '21'O, // '00100001'B + iel := ?, + rES := ? + }; + + //---------------------------------------------------------------------------- + + template (value) CiphAlgorithm cs_CiphAlgorithm(template (value) B3_Type p_Alg) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + spare1 := '0'B, + algorithm := p_Alg + }; + + //---------------------------------------------------------------------------- + + template (value) ForceToStandby cs_ForceToStandby(B3_Type p_Val := '000'B) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + spare := '0'B, + forceToStandbyValue := p_Val + }; + + //---------------------------------------------------------------------------- + + template (value) AttachResult cs_GMM_AttachResult(B3_Type p_Result, + B1_Type p_FOP := tsc_FOP_NoFollowOnProceed) := + { /* @status APPROVED (LTE_IRAT, POS, SSNITZ, UTRAN) */ + fOP := p_FOP, + result := p_Result + }; + + template (value) AttachResult cs_GMM_AttachResultPS_Only := cs_GMM_AttachResult('001'B); + + //---------------------------------------------------------------------------- + + template (value) CiphKeySeqNum cs_GMM_KeySeq(KeySeq p_Key) := cs_CiphKeySeqNum('8'H, p_Key); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + //---------------------------------------------------------------------------- + + template (present) GPRS_Timer cr_GPRS_TimerAny := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := '17'O, // 00010111'B (17 hex) + unit := ?, // Unit + timerValue := ? // Timer value + }; + + //---------------------------------------------------------------------------- + + template (value) GMM_Cause cs_GMM_Cause (B8_Type p_RejectCause) := + { // @sic R5s110718 sic@ + /* @status APPROVED (LTE_IRAT) */ + iei := omit, + gmmCauseValue := p_RejectCause + }; + + //---------------------------------------------------------------------------- + + template (present) UpdateType cr_GMM_UpdateType(template (present) B1_Type p_For := ?, + template (present) B3_Type p_Type := (tsc_I_UpdateTypeRAOnly, tsc_I_UpdateTypeCombined, tsc_I_UpdateTypeCombinedWithIMSI)) := // @sic R5s110081, R5-125545 sic@ + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + followOnReq := p_For, + updateValue := p_Type + }; + + //---------------------------------------------------------------------------- + + template (present) LocUpdType cr_LocUpdTypeNormal (template (present) B1_Type p_FOR := ?) := + { /* @status APPROVED (LTE_IRAT) */ + fOR := p_FOR, + spare1 := '0'B, + lUT := '00'B + }; + + template (present) LocUpdType cdr_LocUpdTypeIMSI (template (present) B1_Type p_FOR := ?) + modifies cr_LocUpdTypeNormal := + { /* @status APPROVED (LTE_IRAT) */ + lUT := '10'B + }; + + template (present) LocUpdType cdr_LocUpdTypePeriodic (template (present) B1_Type p_FOR := ?) + modifies cr_LocUpdTypeNormal := + { + lUT := '01'B + }; + + //---------------------------------------------------------------------------- + + template (present) MS_Clsmk1 cr_MS_Clsmk1_Any := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + spare1 := '0'B, + revLvl := ?, + eSIND := ?, + a5_1 := ?, + rFPwrCap := ? + }; + + template (present) MS_Clsmk1 cr_MS_Clsmk1_Def := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + spare1 := '0'B, + revLvl := px_MS_ClsmkRevLvl, + eSIND := px_MS_ClsmkESIND, + a5_1 := f_ConvertBoolToBit (not pc_GERAN), // @sic R5s110549 sic@ + rFPwrCap := ? + }; + + //---------------------------------------------------------------------------- + + template (present) RoutingAreaId cr_RAI(template (omit) IEI8_Type p_IEI, + template (present) LocAreaId p_Lai := ?, + template (present) octetstring p_Rac := ?) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, + lai := p_Lai, + rac := p_Rac + }; + + template (value) RoutingAreaId cs_RAI(template (omit) IEI8_Type p_IEI, + template (value) LocAreaId p_Lai, + octetstring p_Rac) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, + lai := p_Lai, + rac := p_Rac + }; + + //---------------------------------------------------------------------------- + + template (present) ServiceType cr_ServiceType(template (present) B3_Type p_Type) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + spare1 := '0'B, + serviceType := p_Type + }; + + //---------------------------------------------------------------------------- + + template (value) IMEISV_Request cs_IMEISV_Request(B3_Type p_Value) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := omit, + spare := '0'B, + requestValue := p_Value + }; + + //---------------------------------------------------------------------------- + + template (present) Cau cr_CauAny(template (present) B7_Type p_CauValue := ?) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := '08'O, + iel := ?, + extBit3 := ?, + codingStd := ?, + spare1 := ?, + location := ?, + extBit3a := *, // @sic R5110596 sic@ + recommend := *, // @sic R5110596 sic@ + extBit4 := ?, + cauValue := p_CauValue, + diagnostic := * // @sic R5110596 sic@ + }; + + //---------------------------------------------------------------------------- + + template (present) EUTRAN_HO_Info cr_EUTRAN_HO_InfoAny := + { + iei := '2B'O, + iel := ?, + info := ? + }; + + //---------------------------------------------------------------------------- + + template (present) InterRAT_HO_Info cr_InterRAT_HO_InfoAny := + { + iei := '27'O, + iel := ?, + info := ? + }; + + //---------------------------------------------------------------------------- + + template (present) MBMS_ContextStatus cr_MBMS_ContextStatusAny := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + iei := '35'O, // '00110101'B (35 hex) + iel := ?, + nSAPI := ? // NSAPI(x), for x = 128 to 255 + }; + + //---------------------------------------------------------------------------- + + template (present) MBMS_ProtoCfgOpt cr_MBMS_ProtoCfgOptAny := + { /* @status APPROVED (UTRAN) */ + iei := '35'O, // '00110101'B (35hex) + iel := ?, + protocolIdContents := ? + }; + + //---------------------------------------------------------------------------- + + template (present) PDP_ContextStatus cr_PDP_ContextStatusAny := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + iei := '32'O, // '00110010'B + iel := ?, + nSAPI := ? + }; + + //---------------------------------------------------------------------------- + + template (value) PDP_ContextStatus cs_PDP_ContextStatusInactive := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + iei := '32'O, // '00110010'B + iel := '02'O, + nSAPI := '0000000000000000'B //inactive PDP context + }; + + //---------------------------------------------------------------------------- + + template (present) PS_LCS_Capability cr_PS_LCS_CapabilityAny := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := '33'O, // '00110011'B (33 hex) + iel := '01'O, + spare := '00'B, + aPC := ?, + oTD_A := ?, + oTD_B := ?, + gPS_A := ?, + gPS_B := ?, + gPS_C := ? + }; + + template (present) PktDataProtoAddr cr_PDP_AddressAny := + { /* @status APPROVED (LTE_IRAT, UTRAN) */ + iei := omit, + iel := '02'O, + spare := '0000'B, + pDP_TypeOrg := ?, + pDP_TypeNo := ?, + addrInfo := omit + }; + + //---------------------------------------------------------------------------- + + template (value) PktDataProtoAddr cs_PktDataProtoAddrMT(template (value) Type4Length_Type p_Len, + template (value) PDP_TypeNo p_PDP_TypeNo, + template (omit) AddressInfo p_Addr) := + { /* @status APPROVED (LTE_IRAT, UTRAN) */ + iei := '2B'O, // @sic R5s110315 sic@ + iel := p_Len, + spare := '0000'B, + pDP_TypeOrg := tsc_PDP_TypeOrg, + pDP_TypeNo := p_PDP_TypeNo, + addrInfo := p_Addr + }; + + //---------------------------------------------------------------------------- + + template (present) QualityOfService cr_QoS_InteractiveOrBackgroundMO(template B3_Type p_DlyClass, + template B3_Type p_TrafficClass + ) := + { /* @status APPROVED (UTRAN) */ + iei := omit, + iel := ('0C'O,'0E'O,'10'O,'12'O,'14'O), //@sic R5s140558 sic@ + spare1 := '00'B, + delayClass := p_DlyClass, + relabilityClass := '011'B, + peakThroughput := '0100'B, // 64 kbps + spare2 := '0'B, + precedenceClass := '000'B, + spare3 := '000'B, + meanThroughput := '11111'B, // best effort + trafficClass := p_TrafficClass, + deliveryOrder := '10'B, // Without delivery order + deliveryErrorSDU := '010'B, // Erroneour SDU are delivered + maxSduSize := '00100000'B, // 320 octets + maxBitRateUL := '01000000'B, // 64 kbps + maxBitRateDL := '01000000'B, // 64 kbps + residualBER := '0111'B, // 1 x 10E (-5) + sduErrorRatio := '0100'B, // 1 X 10 E(-4) + transferDelay := ?, // Transfer delay will be neglected in case of interactive or background. Hence the value is set to spare + trafficHandlingPrio := ?, // This is set to 3, but has to be neglected by the UE as the traffic class is interactive. + guaranteedBitRateUL := ?, // The guaranteed bit rate is set equal to requested bit rate. + guaranteedBitRateDL := ?, // This will be neglected by UE as the class is interactive + spare4 := '000'B, + signallingInd := ?, + sourceStatisticsDescriptor := ?, + maxBitRateDL_Ext := '00000000'B ifpresent, + guaranteedBitRateDL_Ext := '00000000'B ifpresent, + maxBitRateUL_Ext := *, + guaranteedBitRateUL_Ext := *, + maxBitRateDL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + guaranteedBitRateDL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + maxBitRateUL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + guaranteedBitRateUL_Ext2 := omit // @sic R5s1300195 Baseline Moving sic@ + + }; + + template (present) QualityOfService cdr_QoS_InteractiveOrBackgroundMO_UMTS(template B3_Type p_DlyClass, + template B3_Type p_TrafficClass) + modifies cr_QoS_InteractiveOrBackgroundMO := + { /* @status APPROVED (UTRAN) */ + relabilityClass := ?, + peakThroughput := ?, + precedenceClass := ?, + meanThroughput := ? + }; + + template (present) QualityOfService cdr_QoS_InteractiveOrBackground_PrecedenceClass(template B3_Type p_DlyClass, + template B3_Type p_TrafficClass) + modifies cr_QoS_InteractiveOrBackgroundMO := + { /* @status APPROVED (UTRAN) */ + relabilityClass := ?, + peakThroughput := ?, + precedenceClass := ('000'B, '011'B), + meanThroughput := ? + }; + + //---------------------------------------------------------------------------- + + template (present) QualityOfService cr_QoS_InteractiveOrBackgroundMO_HSDPA(template B3_Type p_TrafficClass, + template B8_Type p_MaxSduSize, + template B8_Type p_BitRateDL) := + { /* @status @sic R5s110771: not used anymore sic@ */ + iei := omit, + iel := ('0C'O,'0E'O,'10'O), + spare1 := '00'B, + delayClass := ?, + relabilityClass := ?, + peakThroughput := ?, + spare2 := '0'B, + precedenceClass := ?, + spare3 := '000'B, + meanThroughput := '11111'B, //Best effort + trafficClass := p_TrafficClass, + deliveryOrder := '10'B, // Without delivery order + deliveryErrorSDU := '010'B, + maxSduSize := p_MaxSduSize, // 320 octets + maxBitRateUL := ?, // 64 kbps + maxBitRateDL := p_BitRateDL, // Depending on UE Category + residualBER := '0111'B, // 1 x 10E (-5) + sduErrorRatio := '0100'B, // 1 X 10 E(-4) + transferDelay := ?, + trafficHandlingPrio := ?, + guaranteedBitRateUL := ?, + guaranteedBitRateDL := ?, + spare4 := '000'B, + signallingInd := ?, + sourceStatisticsDescriptor := ?, + maxBitRateDL_Ext := '00000000'B ifpresent, + guaranteedBitRateDL_Ext := '00000000'B ifpresent, + maxBitRateUL_Ext := '00000000'B ifpresent, + guaranteedBitRateUL_Ext := '00000000'B ifpresent, + maxBitRateDL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + guaranteedBitRateDL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + maxBitRateUL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + guaranteedBitRateUL_Ext2 := omit // @sic R5s1300195 Baseline Moving sic@ + + }; + + //---------------------------------------------------------------------------- + + + template (present) QualityOfService cdr_QoS_InteractiveOrBackgroundMO_HSDPA_Ext(template B3_Type p_TrafficClass, + template B8_Type p_MaxSduSize, + template B8_Type p_BitRateDL, + template B8_Type p_MaxBitRate15) + modifies cr_QoS_InteractiveOrBackgroundMO_HSDPA := + { /* @status @sic R5s110771: not used anymore sic@ */ + iel := ('0E'O,'10'O), + maxBitRateDL_Ext := p_MaxBitRate15, + guaranteedBitRateDL_Ext := ?, + maxBitRateUL_Ext := '00000000'B ifpresent, + guaranteedBitRateUL_Ext := '00000000'B ifpresent + }; + //---------------------------------------------------------------------------- + + template (present) QualityOfService cr_QualityOfService_Any := + { /* @status APPROVED (LTE_IRAT, UTRAN) */ + iei := omit, + iel := ?, + spare1 := ?, + delayClass := ?, + relabilityClass := ?, + peakThroughput := ?, + spare2 := ?, + precedenceClass := ?, + spare3 := ?, + meanThroughput := ?, + trafficClass := ?, + deliveryOrder := ?, + deliveryErrorSDU := ?, + maxSduSize := ?, + maxBitRateUL := ?, + maxBitRateDL := ?, + residualBER := ?, + sduErrorRatio := ?, + transferDelay := ?, + trafficHandlingPrio := ?, + guaranteedBitRateUL := ?, + guaranteedBitRateDL := ?, + spare4 := ?, + signallingInd := ?, + sourceStatisticsDescriptor := ?, + maxBitRateDL_Ext := *, + guaranteedBitRateDL_Ext := *, + maxBitRateUL_Ext := *, + guaranteedBitRateUL_Ext := *, + maxBitRateDL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + guaranteedBitRateDL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + maxBitRateUL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + guaranteedBitRateUL_Ext2 := omit // @sic R5s1300195 Baseline Moving sic@ + }; + + //---------------------------------------------------------------------------- + + template (value) QualityOfService cs_QoS_InteractiveOrBackgroundMT(template (value) B3_Type p_DlyClass, + template (value) B3_Type p_TrafficClass) := + { /* @status APPROVED (LTE_IRAT, UTRAN) */ + iei := omit, + iel := '0C'O, // @sic R5s110315 sic@ + spare1 := '00'B, + delayClass := p_DlyClass, + relabilityClass := '011'B, // Unacknowledged GTP, LLC, and acknowledged RLC; Protected Data + peakThroughput := '0100'B, // 64 kbps + spare2 := '0'B, + precedenceClass := '011'B, // class 3 + spare3 := '000'B, + meanThroughput := '11111'B, // best effort + trafficClass := p_TrafficClass, + deliveryOrder := '10'B, // Without delivery order + deliveryErrorSDU := '010'B, + maxSduSize := '00100000'B, + maxBitRateUL := '01000000'B, // 64 kbps + maxBitRateDL := '01000000'B, // 64 kbps + residualBER := '0111'B, // 1 x 10E (-5) + sduErrorRatio := '0100'B, // 1 X 10 E(-4) + transferDelay := '111111'B, // Transfer delay will be neglected in case of interactive or background. Hence the value is set to spare + trafficHandlingPrio := '11'B, // This is set to 3, but has to be neglected by the UE as the traffic class is interactive. + guaranteedBitRateUL := '00010000'B, // The guaranteed bit rate is set equal to 16 kbps + guaranteedBitRateDL := '00010000'B, // The guaranteed bit rate is set equal to 16 kbps + spare4 := '000'B, + signallingInd := '0'B, + sourceStatisticsDescriptor := '0000'B, + maxBitRateDL_Ext := omit, + guaranteedBitRateDL_Ext := omit, + maxBitRateUL_Ext := omit, + guaranteedBitRateUL_Ext := omit, + maxBitRateDL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + guaranteedBitRateDL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + maxBitRateUL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + guaranteedBitRateUL_Ext2 := omit // @sic R5s1300195 Baseline Moving sic@ + }; + + + template (value) QualityOfService cs_QoS_InteractiveOrBackgroundMT_32kbps(template (value) B3_Type p_DlyClass, + template (value) B3_Type p_TrafficClass) := + { /* @status APPROVED (LTE_IRAT) */ + iei := omit, + iel := '0C'O, // @sic R5s110315 sic@ + spare1 := '00'B, + delayClass := p_DlyClass, + relabilityClass := '011'B, // Unacknowledged GTP, LLC, and acknowledged RLC; Protected Data + peakThroughput := '0011'B, // 32 kbps + spare2 := '0'B, + precedenceClass := '011'B, // class 3 + spare3 := '000'B, + meanThroughput := '11111'B, // best effort + trafficClass := p_TrafficClass, + deliveryOrder := '10'B, // Without delivery order + deliveryErrorSDU := '010'B, + maxSduSize := '00100000'B, + maxBitRateUL := '00100000'B, // 32 kbps + maxBitRateDL := '00100000'B, // 32 kbps + residualBER := '0111'B, // 1 x 10E (-5) + sduErrorRatio := '0100'B, // 1 X 10 E(-4) + transferDelay := '111111'B, // Transfer delay will be neglected in case of interactive or background. Hence the value is set to spare + trafficHandlingPrio := '11'B, // This is set to 3, but has to be neglected by the UE as the traffic class is interactive. + guaranteedBitRateUL := '00010000'B, // The guaranteed bit rate is set equal to 16 kbps + guaranteedBitRateDL := '00010000'B, // The guaranteed bit rate is set equal to 16 kbps + spare4 := '000'B, + signallingInd := '0'B, + sourceStatisticsDescriptor := '0000'B, + maxBitRateDL_Ext := omit, + guaranteedBitRateDL_Ext := omit, + maxBitRateUL_Ext := omit, + guaranteedBitRateUL_Ext := omit, + maxBitRateDL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + guaranteedBitRateDL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + maxBitRateUL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + guaranteedBitRateUL_Ext2 := omit // @sic R5s1300195 Baseline Moving sic@ + }; + + template (value) QualityOfService cds_QoS_InteractiveOrBackgroundMT_HS(template (value) B3_Type p_DlyClass, + template (value) B3_Type p_TrafficClass, + template (value) B4_Type p_PeakThroughput, + template (value) B8_Type p_MaxSduSize, + template (value) B8_Type p_BitRateUL, + template (value) B8_Type p_BitRateDL, + template (omit) B8_Type p_BitRateExt) + modifies cs_QoS_InteractiveOrBackgroundMT := + { /* @status APPROVED (LTE_IRAT, UTRAN) */ + iel := '0E'O, // @sic R5s110315 sic@ + peakThroughput := p_PeakThroughput, + maxSduSize := p_MaxSduSize, + maxBitRateUL := p_BitRateUL, + maxBitRateDL := p_BitRateDL, // Depending on UE Category + maxBitRateDL_Ext := p_BitRateExt, + guaranteedBitRateDL_Ext := p_BitRateExt + }; + + //---------------------------------------------------------------------------- + + template (present) TI cr_TI_Any(template (present) B1_Type p_Flag := ?) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tiFlag := p_Flag, // from network to MS + tiVal := ? + }; + + template (present) TI cr_TI_MO := cr_TI_Any('0'B); /* @status APPROVED (LTE_IRAT, SSNITZ) */ + template (present) TI cr_TI_MT := cr_TI_Any('1'B); + + //---------------------------------------------------------------------------- + + template (value) TI cs_TI_Common(B1_Type p_Flag, + B3_Type p_Value := '000'B) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tiFlag := p_Flag, + tiVal := p_Value + }; + + template (value) TI cs_TI_MT(B3_Type p_Value := '000'B) := cs_TI_Common('0'B, p_Value); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ) */ + template (value) TI cs_TI_MO(B3_Type p_Value := '000'B) := cs_TI_Common('1'B, p_Value); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + function f_NAS_TI_Init(template (value) TI p_TI) return TI + { + return valueof(p_TI); + } + + function f_NAS_TI_InitAndSetFlag(template (value) TI p_TI, + B1_Type p_Flag) return TI + { + var template (value) TI v_TI := p_TI; + v_TI.tiFlag := p_Flag; + return f_NAS_TI_Init(v_TI); + } + + //---------------------------------------------------------------------------- + + template (present) TearDwnInd cr_TearDwnInd := + { + iei := '9'H, + spare := '000'B, + tdiflag := '?'B /* TDI Flag = 0, Tear down of all PDP Context not requested + TDI Flag = 1, Tear down of all PDP Context requested */ + }; + + //---------------------------------------------------------------------------- + + template (value) UpdateResult cs_GMM_UpdateResult(B3_Type p_Result, + B1_Type p_FOP := '1'B) := // @sic R5-142397, R5-144667 sic@ + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + fOP := p_FOP, + ttcn_value := p_Result + }; + + template (value) UpdateResult cs_GMM_UpdateResultRA_Updated := cs_GMM_UpdateResult('000'B); // RA updated + template (value) UpdateResult cs_GMM_UpdateResultCombRA_LA := cs_GMM_UpdateResult('001'B); // Combined RA/LA updated + + //---------------------------------------------------------------------------- + + template (value) PLMN_List cs_PLMN_List2(octetstring p_Plmn1, + octetstring p_Plmn2) := + { /* equivalent PLMN list containing 2 PLMN (OCTETSTRING[3]) */ + iei := '4A'O, // '01001010'B + iel := '06'O, + plmnList := { p_Plmn1, p_Plmn2 } + }; + + //---------------------------------------------------------------------------- + + template (present) PriorityLvl cr_PriorityLvlAny := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := '8'H, + spare1 := '0'B, + callPrio := ? + }; + + //---------------------------------------------------------------------------- + + template (value) RepeatInd cs_RepeatInd1 := + { + iei := 'D'H, + repeatInd := '0001'B + }; + + //---------------------------------------------------------------------------- + + template (present) RepeatInd cr_RepeatInd(template (present) B4_Type p_RepeatInd := ?) := + { /* @status APPROVED (LTE_IRAT, SSNITZ) */ + iei := 'D'H, + repeatInd := p_RepeatInd + }; + + template (present) RepeatInd cr_RepeatIndMmedia := cr_RepeatInd(('0010'B, '0100'B)); + template (present) RepeatInd cr_RepeatIndFallbackServChange := cr_RepeatInd('0100'B); + + //---------------------------------------------------------------------------- + + template (present) Bcap3aEtc cr_Bcap3aEtcAny := + { /* @status APPROVED (LTE_IRAT, SSNITZ) */ + extBit := ?, + coding := ?, + spare2 := ?, + speechVersion := ? + }; + + //---------------------------------------------------------------------------- + + template (present) Bcap cr_BcapAnyMO := + { /* Any bearer capability for direction n <- ue */ + /* @status APPROVED (LTE_IRAT, SSNITZ) */ + iei := '04'O, + iel := ?, + extBit3 := ?, + radioChRequirement := ?, + codingStd := ?, + transferMode := ?, + itc := ?, + bcap3aEtc1 := cr_Bcap3aEtcAny ifpresent, + bcap3aEtc2 := cr_Bcap3aEtcAny ifpresent, + bcap3aEtc3 := cr_Bcap3aEtcAny ifpresent, + bcap3aEtc4 := cr_Bcap3aEtcAny ifpresent, + bcap3aEtc5 := cr_Bcap3aEtcAny ifpresent, + bcap3aEtc6 := cr_Bcap3aEtcAny ifpresent, + extBit4 := *, + compress := *, + structure := *, + duplexMode := *, + cfg := *, + nirr := *, + establish := *, + extBit5 := *, + accessId := *, + rateAdapt := *, + sacp := *, + extBit5a := *, + OherItc := *, + OtherRateAdapt := *, + spare3 := *, + extBit5b := *, + rateAdaptHeader := *, + multiFrame := *, + mode := *, + logLinkId := *, + assignorAssignee := *, + inBandOutBand := *, + spare1 := *, + extBit6 := *, + layer1Id := *, + userInfoLayer1 := *, + syncAsync := *, + extBit6a := *, + numStopBits := *, + negotiation := *, + numDataBits := *, + userRate := *, + extBit6b := *, + intermRate := *, + nicTx := *, + nicRx := *, + parity := *, + extBit6c := *, + connectElem := *, + modemType := *, + extBit6d := *, + OtherModemType := *, + FixedNtwUserRate := *, + extBit6e := *, + acceptChCoding := *, + maxNumTrafficCh := *, + extBit6f := *, + uIMI := *, + wAIUR := *, + extBit6g := *, + acceptChCodingExt := *, + asymInd := *, + spare2 := *, + extBit7 := *, + layer2id := *, + userInfoLayer2 := * + }; + + //---------------------------------------------------------------------------- + + template (present) Bcap cr_BcapMO_5a_AsyncNT(template (present) B3_Type p_Itc, + template (present) B2_Type p_Ra, + template (present) B3_Type p_Sacp, + template (present) B2_Type p_OtherItc, + template (present) B2_Type p_OtherRa, + template (present) B5_Type p_ModemType, + template (present) B2_Type p_OtherModemType) := + { /* Base Bearer capability with an Asynchronous mode and Non transparent conection element and containing octets 3, 4, 5 , 5a, 6, 6a, 6b, 6c and 6d. */ + iei := '04'O, + iel := ?, + extBit3 := '1'B, // no extension + radioChRequirement := ?, // spare bits for n-> ue + codingStd := '0'B, // GSM + transferMode := '0'B, // transfer mode octet 3 + itc := p_Itc, + bcap3aEtc1 := omit, + bcap3aEtc2 := omit, + bcap3aEtc3 := omit, + bcap3aEtc4 := omit, + bcap3aEtc5 := omit, + bcap3aEtc6 := omit, + extBit4 := '1'B, // no extension + compress := ?, + structure := '00'B, // SDU Integrity + duplexMode := '1'B, // Full duplex mode + cfg := '0'B, // configuration: point-to-point + nirr := ?, // negotiation of intermediate rate: no meanoing + establish := '0'B, // demand + extBit5 := '0'B, // extension + accessId := '00'B, + rateAdapt := p_Ra, + sacp := p_Sacp, // I.440/I.450 + extBit5a := '1'B, // no extension + OherItc := p_OtherItc, + OtherRateAdapt := p_OtherRa, + spare3 := '000'B, + extBit5b := omit, + rateAdaptHeader := omit, + multiFrame := omit, + mode := omit, + logLinkId := omit, + assignorAssignee := omit, + inBandOutBand := omit, + spare1 := omit, + extBit6 := '0'B, // extension + layer1Id := '01'B, // Default + userInfoLayer1 := '0000'B, + syncAsync := '1'B, // Asynchronous + extBit6a := '0'B, // extension bit, octet 6a + numStopBits := ?, + negotiation := '0'B, // Not possible + numDataBits := ?, + userRate := ('0001'B, '0010'B, '0011'B, '0100'B, '0101'B, '0110'B), // spare + extBit6b := '0'B, // extension + intermRate := ?, // spare + nicTx := '0'B, // spare + nicRx := '0'B, // spare + parity := ?, + extBit6c := '0'B, // extension + connectElem := '01'B, // Non Transparent + modemType := p_ModemType, // none + extBit6d := *, // no extension + OtherModemType := p_OtherModemType ifpresent, + FixedNtwUserRate := px_BcapFNUR ifpresent, + extBit6e := *, + acceptChCoding := *, + maxNumTrafficCh := *, + extBit6f := *, + uIMI := *, + wAIUR := *, + extBit6g := *, + acceptChCodingExt := *, + asymInd := *, + spare2 := *, + extBit7 := omit, + layer2id := omit, + userInfoLayer2 := omit + }; + + //---------------------------------------------------------------------------- + + template (present) Bcap cr_BcapMO_7_AsyncNT(template (present) B3_Type p_Itc, + template (present) B2_Type p_RA, + template (present) B3_Type p_Sacp, + template (present) B5_Type p_ModemType, + template (present) B2_Type p_OtherModemType) := + { /* Base Bearer capability with an Asynchronous mode and Non transparent conection element and containing octets 3, 4, 5 , 6, 6a, 6b, 6c, 6d and 7. */ + iei := '04'O, + iel := ?, + extBit3 := '1'B, // no extension + radioChRequirement := ?, // spare bits for n-> ue + codingStd := '0'B, // GSM + transferMode := '0'B, // transfer mode octet 3 + itc := p_Itc, // information transfer capability, octet 3 + bcap3aEtc1 := omit, + bcap3aEtc2 := omit, + bcap3aEtc3 := omit, + bcap3aEtc4 := omit, + bcap3aEtc5 := omit, + bcap3aEtc6 := omit, + extBit4 := '1'B, // no extension + compress := ?, // PIXIT compression + structure := '00'B, // SDU Integrity + duplexMode := '1'B, // Full duplex mode + cfg := '0'B, // configuration: point-to-point + nirr := ?, + establish := '0'B, // demand + extBit5 := '1'B, // no extension + accessId := '00'B, + rateAdapt := p_RA, + sacp := p_Sacp, + extBit5a := omit, + OherItc := omit, + OtherRateAdapt := omit, + spare3 := omit, + extBit5b := omit, + rateAdaptHeader := omit, + multiFrame := omit, + mode := omit, + logLinkId := omit, + assignorAssignee := omit, + inBandOutBand := omit, + spare1 := omit, + extBit6 := '0'B, // extension + layer1Id := '01'B, // Default + userInfoLayer1 := '0000'B, + syncAsync := '1'B, // Asynchronous + extBit6a := '0'B, // extension bit, octet 6a + numStopBits := ?, + negotiation := '0'B, // Not possible + numDataBits := ?, + userRate := ('0001'B, '0010'B, '0011'B, '0100'B, '0101'B, '0110'B), // spare + extBit6b := '0'B, // extension + intermRate := ?, // spare + nicTx := '0'B, // spare + nicRx := '0'B, // spare + parity := ?, + extBit6c := '0'B, // extension + connectElem := '01'B, // Non Transparent + modemType := p_ModemType, + extBit6d := *, // no extension + OtherModemType := p_OtherModemType ifpresent, + FixedNtwUserRate := px_BcapFNUR ifpresent, + extBit6e := *, + acceptChCoding := *, + maxNumTrafficCh := *, + extBit6f := *, + uIMI := *, + wAIUR := *, + extBit6g := *, + acceptChCodingExt := *, + asymInd := *, + spare2 := *, + extBit7 := *, // no extension + layer2id := *, // layer 2 Id + userInfoLayer2 := * + }; + + //---------------------------------------------------------------------------- + + template (present) Bcap cr_BcapMO_AsyncT(template (present) B3_Type p_Itc, + template (present) B2_Type p_RA, + template (present) B3_Type p_Sacp, + template (present) B5_Type p_ModemType, + template (present) B2_Type p_OtherModemType) := + { /* Base Bearer capability with an Asynchronous mode and transparent conection element and containing octets 3, 4, 5 , 6, 6a, 6b, 6c, and 6d. */ + iei := '04'O, + iel := ?, + extBit3 := '1'B, // no extension + radioChRequirement := ?, // spare bits for n-> ue + codingStd := '0'B, // GSM + transferMode := '0'B, // transfer mode octet 3 + itc := p_Itc, + bcap3aEtc1 := omit, + bcap3aEtc2 := omit, + bcap3aEtc3 := omit, + bcap3aEtc4 := omit, + bcap3aEtc5 := omit, + bcap3aEtc6 := omit, + extBit4 := '1'B, // no extension + compress := ?, + structure := '11'B, // Unstructure + duplexMode := '1'B, // Full duplex mode + cfg := '0'B, // configuration: point-to-point + nirr := ?, // negotiation of intermediate rate: no meanoing + establish := '0'B, // demand + extBit5 := '1'B, // no extension + accessId := '00'B, + rateAdapt := p_RA, + sacp := p_Sacp, // I.440/I.450 + extBit5a := omit, + OherItc := omit, + OtherRateAdapt := omit, + spare3 := omit, + extBit5b := omit, + rateAdaptHeader := omit, + multiFrame := omit, + mode := omit, + logLinkId := omit, + assignorAssignee := omit, + inBandOutBand := omit, + spare1 := omit, + extBit6 := '0'B, // extension + layer1Id := '01'B, // Default + userInfoLayer1 := '0000'B, + syncAsync := '1'B, // Asynchronous + extBit6a := '0'B, // extension bit, octet 6a + numStopBits := ?, + negotiation := '0'B, // Not possible + numDataBits := ?, + userRate := ('0001'B, '0010'B, '0011'B, '0100'B, '0101'B, '0110'B), // spare + extBit6b := '0'B, // extension + intermRate := ?, // spare + nicTx := '0'B, // spare + nicRx := '0'B, // spare + parity := ?, + extBit6c := '0'B, // extension + connectElem := '00'B, // Transparent + modemType := p_ModemType, + extBit6d := *, // no extension + OtherModemType := p_OtherModemType ifpresent, + FixedNtwUserRate := px_BcapFNUR ifpresent, + extBit6e := *, + acceptChCoding := *, + maxNumTrafficCh := *, + extBit6f := *, + uIMI := *, + wAIUR := *, + extBit6g := *, + acceptChCodingExt := *, + asymInd := *, + spare2 := *, + extBit7 := omit, + layer2id := omit, + userInfoLayer2 := omit + }; + + //---------------------------------------------------------------------------- + + template (present) Bcap cdr_BcapMO_5a_SyncT(template (present) B3_Type p_Itc, + template (present) B2_Type p_Ra, + template (present) B3_Type p_Sacp, + template (present) B2_Type p_OtherItc, + template (present) B2_Type p_OtherRa, + template (present) B5_Type p_ModemType, + template (present) B2_Type p_OtherModemType) modifies cr_BcapMO_5a_AsyncNT := + { + structure := '11'B, // Unstructure + syncAsync := '0'B, // Synchronous + connectElem := '00'B // Transparent + }; + + //---------------------------------------------------------------------------- + + template (present) Bcap cdr_BcapMO_7_SyncNT(template (present) B3_Type p_Itc, + template (present) B2_Type p_RA, + template (present) B3_Type p_Sacp, + template (present) B5_Type p_ModemType, + template (present) B2_Type p_OtherModemType) modifies cr_BcapMO_7_AsyncNT := + { + syncAsync := '0'B // Synchronous + }; + + //---------------------------------------------------------------------------- + + template (present) Bcap cdr_BcapMO_AsyncNT(template (present) B3_Type p_Itc, + template (present) B2_Type p_RA, + template (present) B3_Type p_Sacp, + template (present) B5_Type p_ModemType, + template (present) B2_Type p_OtherModemType) modifies cr_BcapMO_AsyncT := + { + structure := '00'B, // SDU Integrity + connectElem := '01'B // Non Transparent + }; + + //---------------------------------------------------------------------------- + + template (present) Bcap cdr_BcapMO_SyncT(template (present) B3_Type p_Itc, + template (present) B2_Type p_RA, + template (present) B3_Type p_Sacp, + template (present) B5_Type p_ModemType, + template (present) B2_Type p_OtherModemType) modifies cr_BcapMO_AsyncT := + { + syncAsync := '0'B // Synchronous + }; + + //---------------------------------------------------------------------------- + + template (present) Bcap cr_BcapMO_5ab7_V120(template (present) B3_Type p_Itc, + template (present) B3_Type p_Sacp, + template (present) B2_Type p_OtherItc, + template (present) B1_Type p_Sync, + template (present) B5_Type p_ModemType, + template (present) B2_Type p_OtherModemType) := + { + iei := '04'O, + iel := ?, + extBit3 := '1'B, // no extension + radioChRequirement := ?, // spare bits for n-> ue + codingStd := '0'B, // GSM + transferMode := '0'B, + itc := p_Itc, // Other ITC + bcap3aEtc1 := omit, + bcap3aEtc2 := omit, + bcap3aEtc3 := omit, + bcap3aEtc4 := omit, + bcap3aEtc5 := omit, + bcap3aEtc6 := omit, + extBit4 := '1'B, // no extension + compress := ?, + structure := '00'B, // SDU integrity + duplexMode := '1'B, // Full duplex mode + cfg := '0'B, // configuration: point-to-point + nirr := ?, // negotiation of intermediate rate: no meanoing + establish := '0'B, // demand + extBit5 := '0'B, // extension + accessId := '00'B, + rateAdapt := '11'B, // rate Adaptation: Other rate adaptation + sacp := p_Sacp, + extBit5a := '0'B, // extension + OherItc := p_OtherItc, // spare + OtherRateAdapt := '00'B, // Other rate adaptation: V120 + spare3 := '000'B, + extBit5b := '1'B, // no extension + rateAdaptHeader := ?, // Rate adaptation header : included + multiFrame := ?, // MultiFrame establish: supported + mode := ?, // mode: protocol sensitive + logLinkId := ?, // spare + assignorAssignee := ?, // spare + inBandOutBand := ?, // spare + spare1 := ?, // spare + extBit6 := '0'B, // extension + layer1Id := '01'B, // Default + userInfoLayer1 := '0000'B, + syncAsync := p_Sync, + extBit6a := '0'B, // extension bit, octet 6a + numStopBits := ?, + negotiation := '0'B, // Not possible + numDataBits := ?, + userRate := ('0001'B, '0010'B, '0011'B, '0100'B, '0101'B, '0110'B), // spare + extBit6b := '0'B, // extension + intermRate := '11'B, // spare + nicTx := ?, // spare + nicRx := ?, // spare + parity := ?, + extBit6c := '0'B, // extension + connectElem := '01'B, // Non transparent + modemType := p_ModemType, // none + extBit6d := *, // no extension + OtherModemType := p_OtherModemType ifpresent, // no other modem type + FixedNtwUserRate := px_BcapFNUR ifpresent, + extBit6e := *, + acceptChCoding := *, + maxNumTrafficCh := *, + extBit6f := *, + uIMI := *, + wAIUR := *, + extBit6g := *, + acceptChCodingExt := *, + asymInd := *, + spare2 := *, + extBit7 := *, // extension + layer2id := *, + userInfoLayer2 := * + }; + + //---------------------------------------------------------------------------- + + template (present) Bcap cr_BcapSpeechMO := + { /* @status APPROVED (LTE_IRAT, SSNITZ) */ + iei := '04'O, + iel := ?, + extBit3 := ?, // extension bit + radioChRequirement := ?, + codingStd := '0'B, // coding standard : GSM + transferMode := '0'B, // circuit mode + itc := '000'B, // speech + bcap3aEtc1 := cr_Bcap3aEtcAny ifpresent, + bcap3aEtc2 := cr_Bcap3aEtcAny ifpresent, + bcap3aEtc3 := cr_Bcap3aEtcAny ifpresent, + bcap3aEtc4 := cr_Bcap3aEtcAny ifpresent, + bcap3aEtc5 := cr_Bcap3aEtcAny ifpresent, + bcap3aEtc6 := cr_Bcap3aEtcAny ifpresent, + extBit4 := omit, + compress := omit, + structure := omit, + duplexMode := omit, + cfg := omit, + nirr := omit, + establish := omit, + extBit5 := omit, + accessId := omit, + rateAdapt := omit, + sacp := omit, + extBit5a := omit, + OherItc := omit, + OtherRateAdapt := omit, + spare3 := omit, + extBit5b := omit, + rateAdaptHeader := omit, + multiFrame := omit, + mode := omit, + logLinkId := omit, + assignorAssignee := omit, + inBandOutBand := omit, + spare1 := omit, + extBit6 := omit, + layer1Id := omit, + userInfoLayer1 := omit, + syncAsync := omit, + extBit6a := omit, + numStopBits := omit, + negotiation := omit, + numDataBits := omit, + userRate := omit, + extBit6b := omit, + intermRate := omit, + nicTx := omit, + nicRx := omit, + parity := omit, + extBit6c := omit, + connectElem := omit, + modemType := omit, + extBit6d := omit, + OtherModemType := omit, + FixedNtwUserRate := omit, + extBit6e := omit, + acceptChCoding := omit, + maxNumTrafficCh := omit, + extBit6f := omit, + uIMI := omit, + wAIUR := omit, + extBit6g := omit, + acceptChCodingExt := omit, + asymInd := omit, + spare2 := omit, + extBit7 := omit, + layer2id := omit, + userInfoLayer2 := omit + }; + + //---------------------------------------------------------------------------- + + template (value) Bcap cs_BcapMT_5a_AsyncNT(B3_Type p_Itc, + B2_Type p_Ra, + B3_Type p_Sacp, + B2_Type p_OtherItc, + B2_Type p_OtherRa, + B1_Type p_NumStopBits, + B1_Type p_NumDataBits, + B3_Type p_Parity, + B2_Type p_OtherModemType) := + { + iei := '04'O, + iel := '09'O, + extBit3 := '1'B, // no extension + radioChRequirement := '01'B, // spare bits for n-> ue + codingStd := '0'B, // GSM + transferMode := '0'B, // transfer mode octet 3 + itc := p_Itc, + bcap3aEtc1 := omit, + bcap3aEtc2 := omit, + bcap3aEtc3 := omit, + bcap3aEtc4 := omit, + bcap3aEtc5 := omit, + bcap3aEtc6 := omit, + extBit4 := '1'B, // no extension + compress := px_BcapDataCompression, + structure := '00'B, // SDU Integrity + duplexMode := '1'B, // Full duplex mode + cfg := '0'B, // configuration: point-to-point + nirr := '0'B, // negotiation of intermediate rate: no meanoing + establish := '0'B, // demand + extBit5 := '0'B, // extension + accessId := '00'B, + rateAdapt := p_Ra, + sacp := p_Sacp, + extBit5a := '1'B, // no extension + OherItc := p_OtherItc, + OtherRateAdapt := p_OtherRa, + spare3 := '000'B, + extBit5b := omit, + rateAdaptHeader := omit, + multiFrame := omit, + mode := omit, + logLinkId := omit, + assignorAssignee := omit, + inBandOutBand := omit, + spare1 := omit, + extBit6 := '0'B, // extension + layer1Id := '01'B, // Default + userInfoLayer1 := '0000'B, + syncAsync := '1'B, // Asynchronous + extBit6a := '0'B, // extension bit, octet 6a + numStopBits := p_NumStopBits, + negotiation := '0'B, // Not possible + numDataBits := p_NumDataBits, + userRate := '0101'B, // 9.6 kBPS + extBit6b := '0'B, // extension + intermRate := '11'B, // spare + nicTx := '0'B, // spare + nicRx := '0'B, // spare + parity := p_Parity, + extBit6c := '0'B, // extension + connectElem := '01'B, // Non Transparent + modemType := '00000'B, // none + extBit6d := '1'B, // no extension + OtherModemType := p_OtherModemType, + FixedNtwUserRate := px_BcapFNUR, + extBit6e := omit, + acceptChCoding := omit, + maxNumTrafficCh := omit, + extBit6f := omit, + uIMI := omit, + wAIUR := omit, + extBit6g := omit, + acceptChCodingExt := omit, + asymInd := omit, + spare2 := omit, + extBit7 := omit, + layer2id := omit, + userInfoLayer2 := omit + }; + + //---------------------------------------------------------------------------- + + template (value) Bcap cs_BcapSpeechMT := + { /* @status APPROVED (LTE_IRAT, SSNITZ) */ + iei := '04'O, + iel := '01'O, + extBit3 := '1'B, // extension bit + radioChRequirement := '01'B, // spare bits for n-> ue + codingStd := '0'B, // coding standard : GSM + transferMode := '0'B, // circuit mode + itc := '000'B, // speech + bcap3aEtc1 := omit, + bcap3aEtc2 := omit, + bcap3aEtc3 := omit, + bcap3aEtc4 := omit, + bcap3aEtc5 := omit, + bcap3aEtc6 := omit, + extBit4 := omit, + compress := omit, + structure := omit, + duplexMode := omit, + cfg := omit, + nirr := omit, + establish := omit, + extBit5 := omit, + accessId := omit, + rateAdapt := omit, + sacp := omit, + extBit5a := omit, + OherItc := omit, + OtherRateAdapt := omit, + spare3 := omit, + extBit5b := omit, + rateAdaptHeader := omit, + multiFrame := omit, + mode := omit, + logLinkId := omit, + assignorAssignee := omit, + inBandOutBand := omit, + spare1 := omit, + extBit6 := omit, + layer1Id := omit, + userInfoLayer1 := omit, + syncAsync := omit, + extBit6a := omit, + numStopBits := omit, + negotiation := omit, + numDataBits := omit, + userRate := omit, + extBit6b := omit, + intermRate := omit, + nicTx := omit, + nicRx := omit, + parity := omit, + extBit6c := omit, + connectElem := omit, + modemType := omit, + extBit6d := omit, + OtherModemType := omit, + FixedNtwUserRate := omit, + extBit6e := omit, + acceptChCoding := omit, + maxNumTrafficCh := omit, + extBit6f := omit, + uIMI := omit, + wAIUR := omit, + extBit6g := omit, + acceptChCodingExt := omit, + asymInd := omit, + spare2 := omit, + extBit7 := omit, + layer2id := omit, + userInfoLayer2 := omit + }; + + //---------------------------------------------------------------------------- + + template (value) Bcap cs_BcapMT_5ab7_V120(B3_Type p_Itc, + B3_Type p_Sacp, + B2_Type p_OtherItc, + B1_Type p_Sync, + B1_Type p_NumStopBits, + B1_Type p_NumDataBits, + B3_Type p_Parity, + B5_Type p_UserInfoLayer2) := + { /* Base Bearer capability for V.120 and containing octets 3, 4, 5 , 5a, 5b, 6, 6a, 6b, 6c , 6d and 7 */ + iei := '04'O, + iel := '0B'O, + extBit3 := '1'B, // no extension + radioChRequirement := '01'B, // spare bits for n-> ue + codingStd := '0'B, // GSM + transferMode := '0'B, + itc := p_Itc, + bcap3aEtc1 := omit, + bcap3aEtc2 := omit, + bcap3aEtc3 := omit, + bcap3aEtc4 := omit, + bcap3aEtc5 := omit, + bcap3aEtc6 := omit, + extBit4 := '1'B, // no extension + compress := px_BcapDataCompression, + structure := '00'B, // SDU integrity + duplexMode := '1'B, // Full duplex mode + cfg := '0'B, // configuration: point-to-point + nirr := '0'B, // negotiation of intermediate rate: no meanoing + establish := '0'B, // demand + extBit5 := '0'B, // extension + accessId := '00'B, + rateAdapt := '11'B, // rate Adaptation: Other rate adaptation + sacp := p_Sacp, + extBit5a := '0'B, // extension + OherItc := p_OtherItc, + OtherRateAdapt := '00'B, // Other rate adaptation: V120 + spare3 := '000'B, + extBit5b := '1'B, // no extension + rateAdaptHeader := '1'B, // Rate adaptation header : included + multiFrame := '1'B, // MultiFrame establish: supported + mode := '1'B, // mode: protocol sensitive + logLinkId := '0'B, // spare + assignorAssignee := '0'B, // spare + inBandOutBand := '0'B, // spare + spare1 := '0'B, // spare + extBit6 := '0'B, // extension + layer1Id := '01'B, // Default + userInfoLayer1 := '0000'B, + syncAsync := p_Sync, + extBit6a := '0'B, // extension bit, octet 6a + numStopBits := p_NumStopBits, + negotiation := '0'B, // Not possible + numDataBits := p_NumDataBits, + userRate := '0101'B, // 9.6 kBPS + extBit6b := '0'B, // extension + intermRate := '11'B, // spare + nicTx := '0'B, // spare + nicRx := '0'B, // spare + parity := p_Parity, + extBit6c := '0'B, // extension + connectElem := '01'B, // Non transparent + modemType := '00000'B, // none + extBit6d := '1'B, // no extension + OtherModemType := '00'B, // no other modem type + FixedNtwUserRate := px_BcapFNUR, + extBit6e := omit, + acceptChCoding := omit, + maxNumTrafficCh := omit, + extBit6f := omit, + uIMI := omit, + wAIUR := omit, + extBit6g := omit, + acceptChCodingExt := omit, + asymInd := omit, + spare2 := omit, + extBit7 := '1'B, // extension + layer2id := '10'B, + userInfoLayer2 := p_UserInfoLayer2 + }; + + //---------------------------------------------------------------------------- + + template (value) Bcap cs_BcapMT_5ab_AsyncNT(B3_Type p_Itc, + B2_Type p_RA, + B3_Type p_Sacp, + B2_Type p_OtherItc, + B2_Type p_OtherRA, + B1_Type p_NumStopBits, + B1_Type p_NumDataBits, + B3_Type p_Parity) := + { /* Base Bearer capabilitywith an Asynchronous mode and Non transparent conection element and containing octets 3, 4, 5 , 5a, 5b, 6, 6a, 6b, 6c and 6d */ + iei := '04'O, + iel := '0A'O, + extBit3 := '1'B, // no extension + radioChRequirement := '01'B, // spare bits for n-> ue + codingStd := '0'B, // GSM + transferMode := '0'B, + itc := p_Itc, // Other ITC + bcap3aEtc1 := omit, + bcap3aEtc2 := omit, + bcap3aEtc3 := omit, + bcap3aEtc4 := omit, + bcap3aEtc5 := omit, + bcap3aEtc6 := omit, + extBit4 := '1'B, // no extension + compress := px_BcapDataCompression, + structure := '00'B, // SDU integrity + duplexMode := '1'B, // Full duplex mode + cfg := '0'B, // configuration: point-to-point + nirr := '0'B, // negotiation of intermediate rate: no meanoing + establish := '0'B, // demand + extBit5 := '0'B, // extension + accessId := '00'B, + rateAdapt := p_RA, + sacp := p_Sacp, + extBit5a := '0'B, // extension + OherItc := p_OtherItc, // spare + OtherRateAdapt := p_OtherRA, + spare3 := '000'B, + extBit5b := '1'B, // no extension + rateAdaptHeader := '1'B, // Rate adaptation header : included + multiFrame := '1'B, // MultiFrame establish: supported + mode := '1'B, // mode: protocol sensitive + logLinkId := '0'B, // spare + assignorAssignee := '0'B, // spare + inBandOutBand := '0'B, // spare + spare1 := '0'B, // spare + extBit6 := '0'B, // extension + layer1Id := '01'B, // Default + userInfoLayer1 := '0000'B, + syncAsync := '1'B, // Asynchronous + extBit6a := '0'B, // extension bit, octet 6a + numStopBits := p_NumStopBits, + negotiation := '0'B, // Not possible + numDataBits := p_NumDataBits, + userRate := '0101'B, // 9.6 kBPS + extBit6b := '0'B, // extension + intermRate := '11'B, // spare + nicTx := '0'B, // spare + nicRx := '0'B, // spare + parity := p_Parity, + extBit6c := '0'B, // extension + connectElem := '01'B, // Non Transparent + modemType := '00000'B, // none + extBit6d := '1'B, // no extension + OtherModemType := '00'B, // no other modem type + FixedNtwUserRate := px_BcapFNUR, + extBit6e := omit, + acceptChCoding := omit, + maxNumTrafficCh := omit, + extBit6f := omit, + uIMI := omit, + wAIUR := omit, + extBit6g := omit, + acceptChCodingExt := omit, + asymInd := omit, + spare2 := omit, + extBit7 := omit, // extension + layer2id := omit, + userInfoLayer2 := omit + }; + + //---------------------------------------------------------------------------- + + template (value) Bcap cs_BcapMT_7_AsyncNT(B3_Type p_Itc, + B2_Type p_RA, + B3_Type p_Sacp, + B1_Type p_NumStopBits, + B1_Type p_NumDataBits, + B3_Type p_Parity, + B5_Type p_ModemType, + B2_Type p_OtherModemType, + B5_Type p_UserInfoLayer2) := + { /* Base Bearer capability with an Asynchronous mode and Non transparent conection element and containing octets 3, 4, 5 , 6, 6a, 6b, 6c, 6d and 7 */ + iei := '04'O, + iel := '09'O, + extBit3 := '1'B, // no extension + radioChRequirement := '01'B, // spare bits for n-> ue + codingStd := '0'B, // GSM + transferMode := '0'B, // transfer mode octet 3 + itc := p_Itc, // information transfer capability, octet 3 + bcap3aEtc1 := omit, + bcap3aEtc2 := omit, + bcap3aEtc3 := omit, + bcap3aEtc4 := omit, + bcap3aEtc5 := omit, + bcap3aEtc6 := omit, + extBit4 := '1'B, // no extension + compress := px_BcapDataCompression, // PIXIT compression + structure := '00'B, // SDU Integrity + duplexMode := '1'B, // Full duplex mode + cfg := '0'B, // configuration: point-to-point + nirr := '0'B, // nirr: no meaning + establish := '0'B, // demand + extBit5 := '1'B, // no extension + accessId := '00'B, + rateAdapt := p_RA, + sacp := p_Sacp, + extBit5a := omit, + OherItc := omit, + OtherRateAdapt := omit, + spare3 := omit, + extBit5b := omit, + rateAdaptHeader := omit, + multiFrame := omit, + mode := omit, + logLinkId := omit, + assignorAssignee := omit, + inBandOutBand := omit, + spare1 := omit, + extBit6 := '0'B, // extension + layer1Id := '01'B, // Default + userInfoLayer1 := '0000'B, + syncAsync := '1'B, // Asynchronous + extBit6a := '0'B, // extension bit, octet 6a + numStopBits := p_NumStopBits, + negotiation := '0'B, // Not possible + numDataBits := p_NumDataBits, + userRate := '0101'B, // 9.6 kBPS + extBit6b := '0'B, // extension + intermRate := '11'B, // spare + nicTx := '0'B, // spare + nicRx := '0'B, // spare + parity := p_Parity, + extBit6c := '0'B, // extension + connectElem := '01'B, // Non Transparent + modemType := p_ModemType, + extBit6d := '1'B, // no extension + OtherModemType := p_OtherModemType, + FixedNtwUserRate := px_BcapFNUR, + extBit6e := omit, + acceptChCoding := omit, + maxNumTrafficCh := omit, + extBit6f := omit, + uIMI := omit, + wAIUR := omit, + extBit6g := omit, + acceptChCodingExt := omit, + asymInd := omit, + spare2 := omit, + extBit7 := '1'B, // no extension + layer2id := '10'B, // layer 2 Id + userInfoLayer2 := p_UserInfoLayer2 + }; + + //---------------------------------------------------------------------------- + + template (value) Bcap cs_BcapMT_AsyncNT(B3_Type p_Itc, + B2_Type p_RA, + B3_Type p_Sacp, + B1_Type p_NumStopBits, + B1_Type p_NumDataBits, + B3_Type p_Parity, + B5_Type p_ModemType, + B2_Type p_OtherModemType) := + { /* Base Bearer capability with an Asynchronous mode and Non transparent conection element and containing octets 3, 4, 5 , 6, 6a, 6b, 6c, and 6d */ + iei := '04'O, + iel := '08'O, + extBit3 := '1'B, // no extension + radioChRequirement := '01'B, // spare bits for n-> ue + codingStd := '0'B, // GSM + transferMode := '0'B, // transfer mode octet 3 + itc := p_Itc, + bcap3aEtc1 := omit, + bcap3aEtc2 := omit, + bcap3aEtc3 := omit, + bcap3aEtc4 := omit, + bcap3aEtc5 := omit, + bcap3aEtc6 := omit, + extBit4 := '1'B, // no extension + compress := px_BcapDataCompression, + structure := '00'B, // SDU Integrity + duplexMode := '1'B, // Full duplex mode + cfg := '0'B, // configuration: point-to-point + nirr := '0'B, // negotiation of intermediate rate: no meanoing + establish := '0'B, // demand + extBit5 := '1'B, // no extension + accessId := '00'B, + rateAdapt := p_RA, + sacp := p_Sacp, // I.440/I.450 + extBit5a := omit, + OherItc := omit, + OtherRateAdapt := omit, + spare3 := omit, + extBit5b := omit, + rateAdaptHeader := omit, + multiFrame := omit, + mode := omit, + logLinkId := omit, + assignorAssignee := omit, + inBandOutBand := omit, + spare1 := omit, + extBit6 := '0'B, // extension + layer1Id := '01'B, // Default + userInfoLayer1 := '0000'B, + syncAsync := '1'B, // Asynchronous + extBit6a := '0'B, // extension bit, octet 6a + numStopBits := p_NumStopBits, + negotiation := '0'B, // Not possible + numDataBits := p_NumDataBits, + userRate := '0101'B, // 9.6 kBPS + extBit6b := '0'B, // extension + intermRate := '11'B, // spare + nicTx := '0'B, // spare + nicRx := '0'B, // spare + parity := p_Parity, + extBit6c := '0'B, // extension + connectElem := '01'B, // Non Transparent + modemType := p_ModemType, + extBit6d := '1'B, // no extension + OtherModemType := p_OtherModemType, + FixedNtwUserRate := px_BcapFNUR, + extBit6e := omit, + acceptChCoding := omit, + maxNumTrafficCh := omit, + extBit6f := omit, + uIMI := omit, + wAIUR := omit, + extBit6g := omit, + acceptChCodingExt := omit, + asymInd := omit, + spare2 := omit, + extBit7 := omit, + layer2id := omit, + userInfoLayer2 := omit + }; + + //---------------------------------------------------------------------------- + + template (value) Bcap cds_BcapMT_7_SyncNT(B3_Type p_Itc, + B2_Type p_RA, + B3_Type p_Sacp, + B1_Type p_NumStopBits, + B1_Type p_NumDataBits, + B3_Type p_Parity, + B5_Type p_ModemType, + B2_Type p_OtherModemType, + B5_Type p_UserInfoLayer2) modifies cs_BcapMT_7_AsyncNT := + { /* Base Bearer capability with a Synchronous mode and Non transparent conection element and containing octets 3, 4, 5 , 6, 6a, 6b, 6c, 6d and 7 */ + syncAsync := '0'B // Synchronous + }; + + //---------------------------------------------------------------------------- + + template (value) Bcap cds_BcapMT_AsyncT(B3_Type p_Itc, + B2_Type p_RA, + B3_Type p_Sacp, + B1_Type p_NumStopBits, + B1_Type p_NumDataBits, + B3_Type p_Parity, + B5_Type p_ModemType, + B2_Type p_OtherModemType) modifies cs_BcapMT_AsyncNT := + { /* Base Bearer capability with an Asynchronous mode and a transparent conection element and containing octets 3, 4, 5 , 6, 6a, 6b, 6c, and 6d */ + structure := '11'B, // Unstructure + connectElem := '00'B // Transparent + }; + + //---------------------------------------------------------------------------- + + template (value) Bcap cds_BcapMT_SyncT(B3_Type p_Itc, + B2_Type p_RA, + B3_Type p_Sacp, + B1_Type p_NumStopBits, + B1_Type p_NumDataBits, + B3_Type p_Parity, + B5_Type p_ModemType, + B2_Type p_OtherModemType) modifies cs_BcapMT_AsyncNT := + { /* Base Bearer capability with a Synchronous mode and a transparent conection element and containing octets 3, 4, 5 , 6, 6a, 6b, 6c, and 6d */ + structure := '11'B, // Unstructure + syncAsync := '0'B, // Synchronous + connectElem := '00'B // Transparent + }; + + //---------------------------------------------------------------------------- + + template (value) Bcap cds_BcapMT_5a_SyncT(B3_Type p_Itc, + B2_Type p_Ra, + B3_Type p_Sacp, + B2_Type p_OtherItc, + B2_Type p_OtherRa, + B1_Type p_NumStopBits, + B1_Type p_NumDataBits, + B3_Type p_Parity, + B2_Type p_OtherModemType) modifies cs_BcapMT_5a_AsyncNT := + { /* Base Bearer capability with a Synchronous mode and transparent conection element and containing octets 3, 4, 5 , 5a, 6, 6a, 6b, 6c and 6d */ + structure := '11'B, // Unstructure + syncAsync := '0'B, // Synchronous + connectElem := '00'B // Transparent + }; + + //---------------------------------------------------------------------------- + + template (present) CC_Capabilities cr_CC_CapabilitiesAny := + { /* @status APPROVED (LTE_IRAT, SSNITZ) */ + iei := '15'O, + iel := '02'O, + maxNumBearer := ?, + mcat := ?, + enicm := ?, + pcp := ?, + dtmf := ?, + spare4 := ?, + maxNumSpeechBearer := ? + }; + + //---------------------------------------------------------------------------- + + template (present) CDPN cr_CDPN_Any := + { /* @status APPROVED (LTE_IRAT, SSNITZ) */ + iei := '5E'O, // information element identifier + iel := ?, // length + typeOfNumPlan := cr_TypeOfNumPlanAny, // type of number and numbering plan identification + digits := * // BCD numbers + }; + + //---------------------------------------------------------------------------- + + template (present) CDPS cr_CDPS_Any := + { /* @status APPROVED (LTE_IRAT, SSNITZ) */ + iei := '6D'O, + iel := ?, + subadrs := cr_SubadrsAny + }; + + //---------------------------------------------------------------------------- + + template (present) CGPS cr_CGPS_Any := + { /* @status APPROVED (LTE_IRAT, SSNITZ) */ + iei := '5D'O, // information element identifier + iel := ?, // length + subadrs := cr_SubadrsAny // Subaddress + }; + + //---------------------------------------------------------------------------- + + template (present) ConnectedSubAdrs cr_ConnectedSubAdrs_Any := + { /* TS 24.008 cl. 10.5.4.14 */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + iei := '4D'O, + iel := ?, // length + subadrs := cr_SubadrsAny // Subaddress + }; + + //---------------------------------------------------------------------------- + + template (present) FacilityIE cr_Facility_Any(IEI8_Type p_IEI := '1C'O) := + { /* TS 24.008 cl. 10.5.4.15 */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, // information element identifier '00011100'B + iel := ?, // length + components := ? // Component + }; + + template (present) FacilityIE cr_FacilityAdvRecall := cr_Facility_Any('1D'O); /* @status APPROVED (LTE_IRAT, SSNITZ) */ + template (present) FacilityIE cr_FacilityRecallAlign := cr_Facility_Any('1B'O); /* @status APPROVED (LTE_IRAT, SSNITZ) */ + + //---------------------------------------------------------------------------- + + template (present) HLC cr_HLC_Any := + { /* @status APPROVED (LTE_IRAT, SSNITZ) */ + iei := '7D'O, // information element identifier + iel := ?, + extBit3 := *, + codingStd := *, + interpretation := *, + presentModeProtocolProfile := *, + extBit4 := *, + hlcId := *, + extBit4a := *, + exteHlcId := * + }; + + //---------------------------------------------------------------------------- + + template (present) LLC cr_LLC_Any := + { /* @status APPROVED (LTE_IRAT, SSNITZ) */ + iei := '7C'O, + iel := ?, + extBit3 := *, + codingStd := *, + itc := *, + extBit3a := *, + negoInd := *, + spare6 := *, + extBit4 := *, + transferMode := *, + infoTransferRate := *, + extBit4_1 := *, + rateMultiplier := *, + extBit5 := *, + layer1Id := *, + userInfoLayer1 := *, + extBit5a := *, + syncAsync := *, + negotiation := *, + userRate := *, + extBit5b1 := *, + intermRate := *, + nicTx := *, + nicRx := *, + flowCtrlTx := *, + flowCtrlRx := *, + spare1 := *, + extBit5b2 := *, + rateAdaptHeader := *, + multiFrame := *, + mode := *, + logLinkId := *, + assignorAssignee := *, + inBandOutBand := *, + spare1_5b2 := *, + extBit5c := *, + numStopBits := *, + numDataBits := *, + parity := *, + extBit5d := *, + duplexMode := *, + modemType := *, + extBit6 := *, + layer2id := *, + userInfoLayer2 := *, + extBit6a1 := *, + modeLayer2 := *, + spare3 := *, + q933 := *, + extBit6a2 := *, + userSpecifLayer2 := *, + extBit6b := *, + windowSize := *, + extBit7 := *, + layer3id := *, + userInfoLayer3 := *, + extBit7a1 := *, + OptionUserSpecifLayer3 := *, + extBit7a2 := *, + modeLayer3 := *, + spare5 := *, + extb7b1 := *, + spare3_7b1 := *, + defaultPacketSize := *, + extBit7c := *, + packetWindowSize := *, + extBit7a3 := *, + spare3_7a3 := *, + addLayer3ProtocolInfo := *, + extBit7b2 := *, + spare3_7b2 := *, + addLayer3ProtocolInfoL := * + }; + + //---------------------------------------------------------------------------- + + template (present) LLC cr_LLC_BS20_UDI_V110 := + { /* see TS 27.001 cl. B.2.2.1 */ + iei := '7C'O, + iel := ?, + extBit3 := ?, + codingStd := '00'B, // coding standard:CCITT + itc := '01000'B, // unrestricted digital information + extBit3a := '1'B ifpresent, + negoInd := *, + spare6 := '000000'B ifpresent, + extBit4 := '1'B, + transferMode := '00'B, // circuit mode + infoTransferRate := '10000'B, // 64 kBit/s + extBit4_1 := omit, + rateMultiplier := omit, + extBit5 := '0'B, + layer1Id := '01'B, // L1 id + userInfoLayer1 := '00001'B, // V110/X.30 rate adaptation + extBit5a := '0'B, + syncAsync := '1'B, // Asynchronous + negotiation := '0'B, // negotiaition not possible + userRate :=('00010'B, '00011'B, '00101'B, '01000'B, '11110'B, '01001'B, '01100'B, '01010'B, '01110'B, '01011'B, '01111'B, '01101'B), // 1.2, 2.4, 4.8, 9.6, 0.3, 14.4, 19.2, 28.8, 38.4, 48, 56 kbit/s + extBit5b1 := '0'B, + intermRate := ('01'B, '10'B), // 8,16 kbit/s + nicTx := ?, + nicRx := ?, + flowCtrlTx := '0'B, // not relevant + flowCtrlRx := '0'B, // not relevant + spare1 := '0'B, // spare bit + extBit5b2 := omit, + rateAdaptHeader := omit, + multiFrame := omit, + mode := omit, + logLinkId := omit, + assignorAssignee := omit, + inBandOutBand := omit, + spare1_5b2 := omit, + extBit5c := ?, + numStopBits := ('01'B, '11'B), // 1,2 bits + numDataBits := ('10'B, '11'B), // 7,8 bits + parity := ('000'B, '010'B, '011'B, '100'B, '101'B), // odd, even, none, forced to 0, forced to 1 + extBit5d := '1'B ifpresent, + duplexMode := *, + modemType := *, + extBit6 := *, + layer2id := *, + userInfoLayer2 := *, + extBit6a1 := *, + modeLayer2 := *, + spare3 := *, + q933 := *, + extBit6a2 := *, + userSpecifLayer2 := *, + extBit6b := *, + windowSize := *, + extBit7 := *, + layer3id := *, + userInfoLayer3 := *, + extBit7a1 := *, + OptionUserSpecifLayer3 := *, + extBit7a2 := *, + modeLayer3 := *, + spare5 := *, + extb7b1 := *, + spare3_7b1 := *, + defaultPacketSize := *, + extBit7c := *, + packetWindowSize := *, + extBit7a3 := *, + spare3_7a3 := *, + addLayer3ProtocolInfo := *, + extBit7b2 := *, + spare3_7b2 := *, + addLayer3ProtocolInfoL := * + }; + + //---------------------------------------------------------------------------- + + template (present) LLC cr_LLC_BS30_UDI_V110 := + { /* see TS 27.001 cl. B.2.3.1 */ + iei := '7C'O, + iel := ?, + extBit3 := ?, + codingStd := '00'B, // coding standard:CCITT + itc := '01000'B, // unrestricted digital information + extBit3a := '1'B ifpresent, + negoInd := *, + spare6 := '000000'B ifpresent, + extBit4 := '1'B, + transferMode := '00'B, // circuit mode + infoTransferRate := '10000'B, // 64 kBit/s + extBit4_1 := omit, + rateMultiplier := omit, + extBit5 := '0'B, + layer1Id := '01'B, // L1 id + userInfoLayer1 := '00001'B, // V110/X.30 rate adaptation + extBit5a := '0'B, + syncAsync := '0'B, // Synchronous + negotiation := '0'B, // negotiaition not possible + userRate :=('00010'B, '00011'B, '00101'B, '01000'B, '11110'B, '01001'B, '01100'B, '01010'B, '01110'B, '01011'B, '01111'B, '01101'B), // 1.2, 2.4, 4.8, 9.6, 1.2/0.075, 14.4, 19.2, 28.8, 32.0, 38.4, 48, 56 kbit/s + extBit5b1 := '0'B, + intermRate := ('01'B, '10'B), // 8,16 kbit/s + nicTx := ?, + nicRx := ?, + flowCtrlTx := '0'B, // not relevant + flowCtrlRx := '0'B, // not relevant + spare1 := '0'B, // spare bit + extBit5b2 := omit, + rateAdaptHeader := omit, + multiFrame := omit, + mode := omit, + logLinkId := omit, + assignorAssignee := omit, + inBandOutBand := omit, + spare1_5b2 := omit, + extBit5c := ?, + numStopBits := ('01'B, '11'B) ifpresent, // 1,2 bits + numDataBits := ('10'B, '11'B) ifpresent, // 7,8 bits + parity := ('000'B, '010'B, '011'B, '100'B, '101'B) ifpresent, // odd, even, none, forced to 0, forced to 1 + extBit5d := '1'B ifpresent, + duplexMode := *, + modemType := *, + extBit6 := *, + layer2id := '10'B ifpresent, // L2 identity, '10'B, octet 6 + userInfoLayer2 := ('00110'B, '00111'B) ifpresent, // X.25 link layer or X.25 Multilink + extBit6a1 := *, + modeLayer2 := *, + spare3 := *, + q933 := *, + extBit6a2 := *, + userSpecifLayer2 := *, + extBit6b := *, + windowSize := *, + extBit7 := *, + layer3id := '11'B ifpresent, // L3 identity, '11'B, octet 7 + userInfoLayer3 := ('00110'B, '00111'B) ifpresent, // X.25 packet layer, or X.25 packet level protocol for data terminal + extBit7a1 := *, + OptionUserSpecifLayer3 := *, + extBit7a2 := *, + modeLayer3 := *, + spare5 := *, + extb7b1 := *, + spare3_7b1 := *, + defaultPacketSize := *, + extBit7c := *, + packetWindowSize := *, + extBit7a3 := *, + spare3_7a3 := *, + addLayer3ProtocolInfo := *, + extBit7b2 := *, + spare3_7b2 := *, + addLayer3ProtocolInfoL := * + }; + + //---------------------------------------------------------------------------- + + template (present) LLC cdr_LLC_BS20_31kHzA modifies cr_LLC_BS20_UDI_V110 := + { /* see TS 27.001 cl. B.2.2.2 */ + iei := '7C'O, + iel := ?, + extBit3 := ?, + codingStd := '00'B, // CCITT standardized coding + itc := '10000'B, // 3.1kHz Audio + extBit4 := '1'B, + transferMode := '00'B, // circuit mode + infoTransferRate := '10000'B, // 64 kBit/s + extBit5 := '0'B, + layer1Id := '01'B, // L1 identity + userInfoLayer1 := ('00011'B, '00010'B), // G.711 a-law or G.711 u0law + extBit5a := '0'B, // extension + syncAsync := ?, + negotiation := ?, + userRate := ?, + extBit5b1 := '0'B, // extension + intermRate := ?, + nicTx := ?, + nicRx := ?, + flowCtrlTx := ?, + flowCtrlRx := ?, + spare1 := ?, + extBit5b2 := omit, + rateAdaptHeader := omit, + multiFrame := omit, + mode := omit, + logLinkId := omit, + assignorAssignee := omit, + inBandOutBand := omit, + spare1_5b2 := omit, + extBit5c := '0'B, // extension + numStopBits := ?, + numDataBits := ?, + parity := ?, + extBit5d := '1'B, + duplexMode := ?, + modemType := ('010001'B, '010010'B, '010011'B, '010100'B, '010111'B, '011100'B, '011110'B) // V.21, V.22, V.22bis, V.23, V.26ter, V.32, V.34 + }; + + //---------------------------------------------------------------------------- + + template (present) LLC cdr_LLC_BS20_RDI_V120 modifies cr_LLC_BS20_UDI_V110 := + { /* see TS 27.001 cl. B.2.2.1 */ + itc := '01001'B, // restricted digital information + extBit5 := '0'B, + layer1Id := '01'B, // L1 id + userInfoLayer1 := '01000'B, // V120 + extBit5b1 := omit, + intermRate := omit, // 8,16 kbit/s + nicTx := omit, + nicRx := omit, + flowCtrlTx := omit, // not relevant + flowCtrlRx := omit, // not relevant + spare1 := omit, // spare bit + extBit5b2 := '0'B, + rateAdaptHeader := '1'B, // rate adaptation header included + multiFrame := '1'B, // multi frame establish supported + mode := '1'B, // protocol sensitive mode + logLinkId := ?, + assignorAssignee := ?, + inBandOutBand := ?, + spare1_5b2 := '0'B + }; + + //---------------------------------------------------------------------------- + + template (present) LLC cdr_LLC_BS20_UDI_V120 modifies cr_LLC_BS20_UDI_V110 := + { /* see TS 27.001 cl. B.2.2.1 */ + extBit5 := '0'B, + layer1Id := '01'B, // L1 id + userInfoLayer1 := '01000'B, // V120 + extBit5b1 := omit, + intermRate := omit, // 8,16 kbit/s + nicTx := omit, + nicRx := omit, + flowCtrlTx := omit, // not relevant + flowCtrlRx := omit, // not relevant + spare1 := omit, // spare bit + extBit5b2 := '0'B, + rateAdaptHeader := '1'B, // rate adaptation header included + multiFrame := '1'B, // multi frame establish supported + mode := '1'B, // protocol sensitive mode + logLinkId := ?, + assignorAssignee := ?, + inBandOutBand := ?, + spare1_5b2 := '0'B + }; + + //---------------------------------------------------------------------------- + + template (present) LLC cdr_LLC_BS30_31kHzA modifies cr_LLC_BS20_UDI_V110 := + { /* see TS 27.001 cl. B.2.3.2 */ + iei := '7C'O, + iel := ?, + extBit3 := ?, + codingStd := '00'B, // CCITT standardized coding + itc := '10000'B, // 3.1kHz Audio + extBit4 := '1'B, + transferMode := '00'B, // circuit mode + infoTransferRate := '10000'B, // 64 kBit/s + extBit5 := '0'B, + layer1Id := '01'B, // L1 identity + userInfoLayer1 := ('00011'B, '00010'B), // G.711 a-law or G.711 u0law + extBit5a := '0'B, // extension + syncAsync := ?, + negotiation := ?, + userRate := ?, + extBit5b1 := '0'B, // extension + intermRate := ?, + nicTx := ?, + nicRx := ?, + flowCtrlTx := ?, + flowCtrlRx := ?, + spare1 := ?, + extBit5b2 := omit, + rateAdaptHeader := omit, + multiFrame := omit, + mode := omit, + logLinkId := omit, + assignorAssignee := omit, + inBandOutBand := omit, + spare1_5b2 := omit, + extBit5c := '0'B, // extension + numStopBits := ?, + numDataBits := ?, + parity := ?, + extBit5d := '1'B, + duplexMode := ?, + modemType := ('010010'B, '010011'B, '010111'B, '011100'B, '011110'B) // V.22, V.22bis, V.26ter, V.32, V.34 + }; + + //---------------------------------------------------------------------------- + + template (present) LLC cdr_LLC_BS30_RDI_V120 modifies cr_LLC_BS30_UDI_V110 := + { /* see TS 27.001 cl. B.2.3.1 */ + itc := '01001'B, // restricted digital information + extBit5 := '0'B, + layer1Id := '01'B, // L1 id + userInfoLayer1 := '01000'B, // V120 + extBit5b1 := omit, + intermRate := omit, // 8,16 kbit/s + nicTx := omit, + nicRx := omit, + flowCtrlTx := omit, // not relevant + flowCtrlRx := omit, // not relevant + spare1 := omit, // spare bit + extBit5b2 := '0'B, + rateAdaptHeader := '1'B, // rate adaptation header included + multiFrame := '1'B, // multi frame establish supported + mode := '1'B, // protocol sensitive mode + logLinkId := ?, + assignorAssignee := ?, + inBandOutBand := ?, + spare1_5b2 := '0'B + }; + + //---------------------------------------------------------------------------- + + template (present) LLC cdr_LLC_BS30_UDI_V120 modifies cr_LLC_BS30_UDI_V110 := + { /* see TS 27.001 cl. B.2.3.1 */ + extBit5 := '0'B, + layer1Id := '01'B, // L1 id + userInfoLayer1 := '01000'B, // V120 + extBit5b1 := omit, + intermRate := omit, // 8,16 kbit/s + nicTx := omit, + nicRx := omit, + flowCtrlTx := omit, // not relevant + flowCtrlRx := omit, // not relevant + spare1 := omit, // spare bit + extBit5b2 := '0'B, + rateAdaptHeader := '1'B, // rate adaptation header included + multiFrame := '1'B, // multi frame establish supported + mode := '1'B, // protocol sensitive mode + logLinkId := ?, + assignorAssignee := ?, + inBandOutBand := ?, + spare1_5b2 := '0'B + }; + + //---------------------------------------------------------------------------- + + template (present) LLC_SAPI cr_LLC_SAPI := + { /* LLC SAPI value assigned as SAPI 11 in order to ensure that there are no problems at the time of handover from UMTS to GSM */ + /* @status APPROVED (LTE_IRAT, UTRAN) */ + iei := omit, + spare := '0000'B, + llcSapiValue := ('0000'B, '0011'B, '0101'B, '1001'B, '1011'B) + }; + + //---------------------------------------------------------------------------- + + template (value) LLC_SAPI cs_LLC_SAPI_UMTS := cs_LLC_SAPI(-, '0000'B); /* The value of LLC SAPI for an UE supporting ONLY UMTS; + @status APPROVED (LTE_IRAT, UTRAN) */ + + template (present) LocAreaId2 cr_LocAreaId2_Any := + { /* @sic R5s110178 Baseline Moving sic@*/ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := '14'O, + iel := ?, + plmn := ?, // MCC + MNC 3 digits each + lac := ? // LAC + }; + + //---------------------------------------------------------------------------- + + template (present) MS_RadioAccessCap_LV cr_MS_RadioAccessCapLVAny := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iel := ?, + valuePart := cr_MS_RadioAccessCapVAny // @sic R5s110176 Baseline Moving sic@ + }; + + //---------------------------------------------------------------------------- + + template (present) MS_RadioAccessCap_V cr_MS_RadioAccessCapVAny := + { /* The 1st instance must be single access type, but after that everything is optional */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + listofValues := ( + {cr_MSRadioAccessCapListSingle, *}, {cr_MSRadioAccessCapListSingle, cr_MSRadioAccessCapListSingle, *}, + {cr_MSRadioAccessCapListSingle, cr_MSRadioAccessCapListSingle, cr_MSRadioAccessCapListAny, *}, + {cr_MSRadioAccessCapListSingle, cr_MSRadioAccessCapListAny, *}), + sparebits := * + }; + + //---------------------------------------------------------------------------- + + template (present) MS_RadioAccessCapList cr_MSRadioAccessCapListAny := cr_MSRadioAccessCapList(cr_MSRadioAccessCapAny); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (present) MS_RadioAccessCapList cr_MSRadioAccessCapListSingle := cr_MSRadioAccessCapList(cr_MSRadioAccessCapSingle); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (present) MS_RadioAccessCapList cr_MSRadioAccessCapListNotSupportEUTRA := cr_MSRadioAccessCapList(cr_MSRadioAccessCapNotSupportEUTRA); /* @status APPROVED (LTE_IRAT) */ + + //---------------------------------------------------------------------------- + + template (present) MS_RadioAccessCap cr_MSRadioAccessCapAny(template (present) SingleAccessCap p_SingleAccessCap := cr_SingleAccessCapAny) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + accessTechType := ?, + singleAccess := p_SingleAccessCap ifpresent, // only present if accessTechType != 1111 @sic R5s130477 sic@ + addLength := *, // only present if accessTechType = 1111 + addAccess := cr_AddMS_RadioAccessCapListAny ifpresent, // only present if accessTechType = 1111; @sic R5s100871 sic@ + sparebits := * + }; + + //---------------------------------------------------------------------------- + + template (present) MS_RadioAccessCap cr_MSRadioAccessCapSingle(template (present) SingleAccessCap p_SingleAccessCap := cr_SingleAccessCapAny) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + accessTechType := complement('1111'B), + singleAccess := p_SingleAccessCap, // only present if accessTechType != 1111 + addLength := omit, // only present if accessTechType = 1111 + addAccess := omit, + sparebits := * + }; + + template (present) MS_RadioAccessCap cr_MSRadioAccessCapNotSupportEUTRA := cr_MSRadioAccessCapSingle(cdr_SingleAccessNotSupportEUTRA); /* @status APPROVED (LTE_IRAT) */ + + //---------------------------------------------------------------------------- + + template (present) SingleAccessCap cdr_SingleAccessNotSupportEUTRA modifies cr_SingleAccessCapAny := + { /* @status APPROVED (LTE_IRAT) */ + eutraFDD := '0'B, + eutraTDD := '0'B, + geran2EutraSupport := '00'B + }; + + //---------------------------------------------------------------------------- + + template (present) MS_RadioAccessCap_LV cr_MS_RadioAccessCapLVNotSupportEUTRA := + { /* @status APPROVED (LTE_IRAT) */ + iel := ?, + valuePart := cr_MS_RadioAccessCapVNotSupportEUTRA // @sic R5s110176 Baseline Moving sic@ + }; + + //---------------------------------------------------------------------------- + + template (present) MS_RadioAccessCap_V cr_MS_RadioAccessCapVNotSupportEUTRA := + { // The 1st instance must be single access type, but after that everything is optional + /* @status APPROVED (LTE_IRAT) */ + listofValues := ( + {cr_MSRadioAccessCapListNotSupportEUTRA, *}, + {cr_MSRadioAccessCapListNotSupportEUTRA, cr_MSRadioAccessCapListSingle, *}, + {cr_MSRadioAccessCapListNotSupportEUTRA, cr_MSRadioAccessCapListSingle, cr_MSRadioAccessCapListAny, *}, + {cr_MSRadioAccessCapListNotSupportEUTRA, cr_MSRadioAccessCapListAny, *}), // @sic R5s100871 sic@ + sparebits := * + }; + + //---------------------------------------------------------------------------- + + template (present) AddMS_RadioAccessCapList cr_AddMS_RadioAccessCapListAny := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cr_AddMS_RadioAccessCapAny + }; + + template (present) AddMS_RadioAccessCap cr_AddMS_RadioAccessCapAny := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + prefix := '1'B, + addTechType := ?, // not present if prefix = 0 + powerClassGMSK := ?, // not present if prefix = 0 + powerClass8PSK := ? // not present if prefix = 0 + }; + + /* template AddMS_RadioAccessCap cr_AddMS_RadioAccessCapEmpty := + { + prefix := '0'B, + addTechType := omit, // not present if prefix = 0 + powerClassGMSK := omit, // not present if prefix = 0 + powerClass8PSK := omit // not present if prefix = 0 + }; + */ + + //---------------------------------------------------------------------------- + + template (present) NSAPI cr_NSAPI := + { /* @status APPROVED (LTE_IRAT, UTRAN) */ + spare := '0000'B, + nSAPI_Value := ('0101'B, '0110'B, '0111'B, '1000'B, '1001'B, '1010'B, '1011'B, '1100'B, '1101'B, '1110'B, '1111'B) + }; + + //---------------------------------------------------------------------------- + + template (value) NtwFeatureSupport cs_NtwFeatureSupport := + { + iei := 'B'H, // (B- hex) + lCS_MOLR := '0'B, + mBMS := '0'B, + imsVoPS := '1'B, // @sic R5s100135 sic@ + emcbs := '0'B // @sic R5s110176 Baseline Moving sic@ + }; + + //---------------------------------------------------------------------------- + + template (present) PTMSI_Type cr_PTMSI_Type_Any := + { /* @sic R5s110178 Baseline Moving sic@*/ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := 'E'H, + spare := tsc_Spare3, + ptmsiType := ? + }; + + template (present) ReceiveN_PDU_Numbers cr_ReceiveN_PDU_NumbersAny := + { + iei := '26'O, // '00100110'B (hex 26) + iel := ?, + numberList := ? + }; + + //---------------------------------------------------------------------------- + + template (value) RequestedMS_Info cs_RequestedMS_Info := + { + iei := 'A'H, // (A- hex) + l_RAT := '0'B, // Inter RAT information container IE requested + l_RAT2 := '1'B, // E-UTRAN Inter RAT information container IE requested + spare2 := '00'B + }; + + //---------------------------------------------------------------------------- + + template (present) RequestType cr_RequestType_Any := + { /* @status APPROVED (LTE_IRAT, UTRAN) */ + iei := 'A'H, + spare := '0'B, + requestTypeValue := ? + }; + + //---------------------------------------------------------------------------- + + template (present) RoutingAreaId2 cr_RoutingAreaId2 (template (present) O6_Type p_RAU2 := ?) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := '1B'O, + iel := '06'O, // length + routingAreaId2 := p_RAU2 + }; + + //---------------------------------------------------------------------------- + + template (present) SS_VersionInd cr_SS_VersionIndAny := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := '7F'O, + iel := ?, + sS_VersionInfo := ? + }; + + template (present) SS_VersionInd cr_SS_VersionIndAllZeros := + { + iei := '7F'O, + iel := ?, + sS_VersionInfo := '00'O + }; + //---------------------------------------------------------------------------- + + template (present) ServCategory cr_ServCategoryAny := + { /* 3GPP 24.008 / 10.5.4.33 */ + /* @status APPROVED (LTE_IRAT) */ + iei := '2E'O, // '00101110'B (2E hex) + iel := '01'O, // '01'O + emergServCat := cr_EmergServCatAny // Emergency Service Category + }; + + //---------------------------------------------------------------------------- + + template (value) SM_Cause cs_SM_Cause(CauseValue p_Cause) := + { /* @status APPROVED (UTRAN) */ + causeValue := p_Cause + }; + + template (present) SM_Cause cr_SM_Cause(template (present) CauseValue p_CauseValue := ?) := + { + causeValue := p_CauseValue + }; + + //---------------------------------------------------------------------------- + + template (present) StreamId cr_StreamIdAny := + { /* @status APPROVED (LTE_A, LTE_IRAT, SSNITZ) */ + iei := '2D'O, + iel := ?, + streamIndValue := ? + }; + + //---------------------------------------------------------------------------- + + template (present) StreamId cr_StreamIdPresent := + { + iei := '2D'O, // information element identifier // '00101101'B + iel := '01'O, // length + streamIndValue := ? // stream identifier value + }; + + //---------------------------------------------------------------------------- + + template (present) Subadrs cr_SubadrsAny := + { /* @status APPROVED (LTE_A, LTE_IRAT, SSNITZ) */ + extBit := ?, // extension bit + typrOfSubadrs := ?, // Type of subaddress + oddEven := ?, // odd/even indicator + spare3 := ?, // 3 spare bits + subadrsInfo := * // subaddress information + }; + + //---------------------------------------------------------------------------- + + template (present) TypeOfNumPlan cr_TypeOfNumPlanAny := + { /* @status APPROVED (LTE_IRAT, SSNITZ) */ + extBit := ?, // extension bit + typeOfNum := ?, // Type of number + numbPlanId := ? // Numbering plan id. + }; + + //---------------------------------------------------------------------------- + + template (present) UserUser cr_UserUserAny := + { /* In SETUP, ALERTING, CONNECT, DISCONNECT, RELEASE and RELEASE COMPLETE messages the userUserInfo length is of 0 - 32 bytes. + * In USER INFORMATION messages the userUserInfo length is of 1 - 128. */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := '7E'O, // information element identifier + iel := ?, // length + userUserProtocolDiscr := ?, // user-user protocol discriminator + userUserInfo := * // user user information + }; + + //---------------------------------------------------------------------------- + + template (value) Cau cs_CauNormCallClear := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := omit, + iel := '02'O, + extBit3 := '1'B, // no extension + codingStd := '11'B, // coding standard - GSM + spare1 := '0'B, // bit + location := '0000'B, // location - user + extBit3a := omit, + recommend := omit, + extBit4 := '1'B, // no extension + cauValue := int2bit(16, 7), // Normal call clearing + diagnostic := omit + }; + + //---------------------------------------------------------------------------- + + template (value) TearDwnInd cs_TearDwnInd := + { /* @status APPROVED (UTRAN) */ + iei := '9'H, + spare := '000'B, + tdiflag := '1'B // Tear down all PDP Context + }; + + //---------------------------------------------------------------------------- + + template (present) UplinkDataStatus cr_UplinkDataStatusAny := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + iei := '36'O, + iel := ?, + nsapiUplinkStatus := ? + }; + + //---------------------------------------------------------------------------- + + template (present) AUTHENTICATIONFAILURE cr_AuthFailAny_Common := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + skipIndicator := '0000'B, + mMProtocolDiscriminator := '0101'B, + msgType := '??011100'B, + rejCau := ?, + authFailParam := cdr_AuthFailParamGSM_Any ifpresent + }; + + //---------------------------------------------------------------------------- + + template (value) AUTHENTICATIONREQUEST cs_AuthReq_Common(template (value) KeySeq p_KeySeq, + template (value) MM_RAND p_RAND, + template (value) AUTN p_AUTN) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + skipIndicator := '0000'B, + mMProtocolDiscriminator := '0101'B, + msgType := '00010010'B, + spare4 := '0000'B, + ciphKeySeqNum := cs_CiphKeySeqNum(omit, p_KeySeq), + rAND := p_RAND, + aUTN := p_AUTN + }; + + //---------------------------------------------------------------------------- + + template (present) AUTHENTICATIONRESPONSE cr_AuthResponse_Common(template AuthRspExt p_AuthRspExt := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + skipIndicator := '0000'B, + mMProtocolDiscriminator := '0101'B, + msgType := '??010100'B, + authRsp := cr_AuthRspAny (omit), // @sic R5s120346 sic@ + authRspExt := p_AuthRspExt + }; + + //---------------------------------------------------------------------------- + + + template (present) IMSIDETACHINDICATION cr_IMSI_DetachInd_Common(template (present) MS_Clsmk1 p_MS_Clsmk1 := cr_MS_Clsmk1_Def, + template (present) MobileIdentity p_MobileIdentity := cr_MobileIdTMSI_lv (px_TMSI_Def)) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + skipIndicator := '0000'B, + mMProtocolDiscriminator := '0101'B, + msgType := '??000001'B, + mSClsmk1 := p_MS_Clsmk1, + mobileId := p_MobileIdentity // IMSI DETACH INDICATION message carries TMSI information element + }; + + //---------------------------------------------------------------------------- + + template (value) LOCATIONUPDATINGACCEPT cs_LocUpdAcp_Common(octetstring p_PLMN, + octetstring p_LAC, + template (omit) MobileIdentity p_MobileId, // @sic R5-112706 sic@ + template (omit) PLMN_List p_EPLMN) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + skipIndicator := '0000'B, + mMProtocolDiscriminator := '0101'B, + msgType := '00000010'B, + locAreaId := cs_LAI(omit, p_PLMN, p_LAC), + mobileId := p_MobileId, + followOnProceed := 'A1'O, + cTSPerm := omit, + equivalentPLMN := p_EPLMN, + emergNumList := omit, + perMST3212 := omit /* cl. 10.5.7.4a O TLV 3 IEI=0x35 @sic R5s120178 Baseline Moving sic@*/ + }; + + //---------------------------------------------------------------------------- + + template (value) TMSIREALLOCATIONCOMMAND cs_TMSI_ReallocCmplCmd_Common(octetstring p_PLMN, + octetstring p_LAC, + template (omit) MobileIdentity p_MobileId) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + skipIndicator := '0000'B, + mMProtocolDiscriminator := '0101'B, + msgType := '00011010'B, // @sic R5s130807 sic@ + locAreaId := cs_LAI(omit, p_PLMN, p_LAC), + mobileId := p_MobileId + }; + + //---------------------------------------------------------------------------- + + template (present) TMSIREALLOCATIONCOMPLETE cr_TMSI_ReallocCmpl_Common := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + skipIndicator := '0000'B, // Skip Indicator + mMProtocolDiscriminator := '0101'B, // MM Protocol Discriminator + msgType := '??011011'B // Message Type + }; + + //---------------------------------------------------------------------------- + + template (present) CMSERVICEREQUEST cr_CM_ServReq(template (present) KeySeq p_KeySeq, + template (present) CMServType p_CMServType := ?, + template (present) MobileIdentity p_MobileIdentity := cr_MobileIdAny(omit), + template PriorityLvl p_PriorityLevel := cr_PriorityLvlAny ifpresent) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + skipIndicator := '0000'B, + mMProtocolDiscriminator := '0101'B, + msgType := '??100100'B, + ciphKeySeqNum := cr_CiphKeySeqNum(omit, p_KeySeq), + cMServType := p_CMServType, + mSClsmk2 := cr_MS_Clsmk2_Any, + mobileId := p_MobileIdentity, + priorityLvl := p_PriorityLevel, // @sic R5-140684 sic@ + addUpdateParams := cr_AddUpdateParams_Any ifpresent, /* cl. 10.3.14 O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/ + deviceProperties := cr_DeviceProperties('D'H) ifpresent /* cl. 10.5.7.8 O TV 1 IEI=0xD- @sic R5s120178 Baseline Moving sic@*/ + }; + + //---------------------------------------------------------------------------- + template (present) ESETUP cr_ESetup(template (present) Bcap p_Bcap) := + { /* @status APPROVED (LTE_IRAT) */ + ti := cr_TI_MO, + cC_ProtocolDiscriminator := '0011'B, + msgType := '??001110'B, + bcap := p_Bcap ifpresent, + streamId := cr_StreamIdAny ifpresent, + supportedCodecs := cr_CodecListAny ifpresent, // @sic R5s110547 sic@ + emergCategory := cr_ServCategoryAny ifpresent + }; + + //---------------------------------------------------------------------------- + + template (value) CMSERVICEREJECT cs_CM_ServRej(template (value) RejCau p_RejCau) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS) */ + skipIndicator := '0000'B, + mMProtocolDiscriminator := '0101'B, + msgType := '00100010'B, + rejCau := p_RejCau, + t3246 := omit // T3246 Value O TLV 3 IEI=36 @sic R5s120178 BaselineMoving sic@ + }; + + //---------------------------------------------------------------------------- + + template (present) LOCATIONUPDATINGREQUEST cr_LocUpdReq_Common(template (present) KeySeq p_KeySeq, + template (present) LocUpdType p_Type := ?, // @sic R5-112114 sic@ + template (present) LocAreaId p_LocAreaId := cr_LAI_Any_v, + template (present) MS_Clsmk1 p_MSClsmk1 := cr_MS_Clsmk1_Any, + template (present) MobileIdentity p_MobileId := cr_MobileIdAny(omit), + template MS_Clsmk2 p_MSClsmk2 := cr_MS_Clsmk2_Any_tlv('33'O)) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + skipIndicator := '0000'B, + mMProtocolDiscriminator := '0101'B, + msgType := '??001000'B, + ciphKeySeqNum := cr_CiphKeySeqNum(omit, p_KeySeq), + locUpdType := p_Type, + locAreaId := p_LocAreaId, + mSClsmk1 := p_MSClsmk1, + mobileId := p_MobileId, + mSClsmk2 := p_MSClsmk2, + addUpdateParams := cr_AddUpdateParams_Any ifpresent, // @sic R5s110176 Baseline Moving sic@ + deviceProperties := cr_DeviceProperties('D'H) ifpresent, /* cl. 10.5.7.8 O TV 1 IEI=0xD- @sic R5s120178 Baseline Moving sic@*/ + msNetworkFeatureSupport := cr_MS_NetworkFeatureSupport('E'H) ifpresent /* cl. 10.5.1.15 O TV 1 IEI=0xE- @sic R5s120178 Baseline Moving sic@*/ + }; + + //---------------------------------------------------------------------------- + + template (present) DEACTIVATEPDPCONTEXTREQUEST cr_Deact_PDP_ContextReq_MO(template (present) CauseValue p_CauseValue := ?) := + { /* 24.008 cl. 9.5.14 */ + ti := cr_TI_Any, + sM_ProtocolDiscriminator := tsc_SMPD, + msgType := '01000110'B, + sM_Cause := cr_SM_Cause(p_CauseValue), + tearDwnInd := cr_TearDwnInd ifpresent, + protocolConfOpts := cr_ProtocolConfigOptionsAny ifpresent, + mBMS_ProtocolConfOpts := cr_MBMS_ProtoCfgOptAny ifpresent, + t3396Value := * // @sic R5s130195 Baseline Moving sic@ + }; + + //---------------------------------------------------------------------------- + + template (present) ATTACHCOMPLETE cr_AttachComplete_Common := + { /* @status APPROVED (LTE_IRAT, POS, SSNITZ, UTRAN) */ + skipIndicator := '0000'B, + gMMProtocolDiscriminator := tsc_GMM_PD, + msgType := '00000011'B, + interRAT_HO_Info := omit, + eutranInterRAT_HO_Info := omit + }; + + //---------------------------------------------------------------------------- + + template (present) ATTACHREQUEST cr_AttachReq_Common(template AttachType p_AttachType, + template MobileIdentity p_MobId, + template RoutingAreaId p_RAI, + template (present) KeySeq p_KeySeq, + template (present) MS_RadioAccessCap_LV p_MS_RadioAccessCap := cr_MS_RadioAccessCapLVAny, + template PTMSI_Signature p_PTMSI_Signature := cr_PTMSI_SignatureAny ifpresent, + template GPRS_Timer p_GPRS_Timer := cr_GPRS_TimerAny ifpresent, + template TMSI_Status p_TMSI_Status := cr_TMSI_Status ifpresent, + template PS_LCS_Capability p_PS_LCS_Capability := cr_PS_LCS_CapabilityAny ifpresent, + template MS_Clsmk2 p_MS_Clsmk2 := cr_MS_Clsmk2_Any_tlv ifpresent, // @sic R5s120586 sic@ + template MS_Clsmk3 p_MS_Clsmk3 := cr_MSCLSMK3_Any ifpresent, + template CodecList p_CodecList := cr_CodecListAny ifpresent, + template UE_NetworkCap p_UENetworkCap := cr_UENetworkCap_Any ('58'O) ifpresent, + template MobileIdentity p_AddMobId := cr_MobileIdAny('1A'O) ifpresent, + template RoutingAreaId2 p_OldRAI := cr_RoutingAreaId2 ifpresent, + template AdditionalUpdateType p_AddUpdType := cr_AdditionalUpdateTypeAny ifpresent, + template NwkResourceId p_TmsiBasedNRIContainer := cr_NwkResourceIdAny ifpresent, + template (present) MS_NetworkCap p_MS_NetworkCap := cdr_MS_NetworkCapAss_lv) := + { /* @status APPROVED (LTE_IRAT, POS, SSNITZ, UTRAN) */ + skipIndicator := '0000'B, + gMMProtocolDiscriminator := tsc_GMM_PD, + msgType := '00000001'B, + msNetworkCap := p_MS_NetworkCap, // @sic R5s130477 sic@ + gprsCiphKeySeqNo := cr_CiphKeySeqNum(omit, p_KeySeq), + attachType := p_AttachType, + drxParameter := cr_DRXparameter_Any (omit), + mobileIdentity := p_MobId, // @sic R5s110176 Baseline Moving sic@ + oldRAI := p_RAI, + msRadioAccessCap := p_MS_RadioAccessCap, + oldPTMSI_Signature := p_PTMSI_Signature, + readyTimer := p_GPRS_Timer, + tmsiStatus := p_TMSI_Status, + pS_LCS_Capability := p_PS_LCS_Capability, + msClassmark2 := p_MS_Clsmk2, + msClassmark3 := p_MS_Clsmk3, + supportedCodecList := p_CodecList, + ueNetworkCapability := p_UENetworkCap, + addMobileId := p_AddMobId, + addOldRAI := p_OldRAI, + voiceDomainPref := cr_VoiceDomainPref_Any ifpresent, /* @sic R5s110176 Baseline Moving sic@ */ + deviceProperties := cr_DeviceProperties('D'H) ifpresent, /* cl. 10.5.7.8 O TV 1 IEI=0xD- @sic R5s120178 Baseline Moving sic@*/ + ptmsiType := cr_PTMSI_Type_Any ifpresent, /* cl. 10.5.5.29 O TV 1 IEI=0xE- @sic R5s120178 Baseline Moving sic@*/ + msNetworkFeatureSupport := cr_MS_NetworkFeatureSupport('C'H) ifpresent, /* cl. 10.5.1.15 O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/ + oldLAI := cr_LocAreaId2_Any ifpresent, /* cl. 10.5.5.30 O TLV 7 IEI=0x14 @sic R5s120178 Baseline Moving sic@*/ + addUpdType := p_AddUpdType, // @sic R5s130195 Baseline Moving sic@ + tmsiBasedNRIContainer := p_TmsiBasedNRIContainer // @sic R5s130195 Baseline Moving sic@ + }; + + //---------------------------------------------------------------------------- + + template (present) AUTHENTICATIONANDCIPHERINGRESPONSE cr_AuthAndCiphRsp_Common(template AuthRsp p_AuthRsp, + template AuthRspExt p_AuthRspExt) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + skipIndicator := '0000'B, + gMMProtocolDiscriminator := tsc_GMM_PD, + msgType := '00010011'B, + spare4 := '0000'B, + acRefNo := ?, // Should be the one sent in the auth request + authRsp := p_AuthRsp, // Authentication RES + imeisv := omit, // No IMEISV requested + authRspExt := p_AuthRspExt // Authentication paramter AUTN, a UMTS challenge is requested + }; + + //---------------------------------------------------------------------------- + + template (present) CALLCONFIRMED cr_CallConf_Common(template TI p_TI, + template StreamId p_StreamId) := + { /* @status APPROVED (LTE_IRAT, SSNITZ) */ + ti := p_TI, + cC_ProtocolDiscriminator := '0011'B, + msgType := '??001000'B, + repeatInd := cr_RepeatInd ifpresent, + bcap1 := cr_BcapAnyMO ifpresent, + bcap2 := cr_BcapAnyMO ifpresent, + cau := cr_CauAny ifpresent, + cC_Capabilities := cr_CC_CapabilitiesAny ifpresent, + streamId := p_StreamId, + supportedCodecs := cr_CodecListAny ifpresent + }; + + //---------------------------------------------------------------------------- + + template (present) CONNECTACKNOWLEDGE cr_ConnAck_Common(template TI p_TI) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + ti := p_TI, + cC_ProtocolDiscriminator := '0011'B, + msgType := '??001111'B + }; + + //---------------------------------------------------------------------------- + + template (present) CONNECTul cr_Connect_Common(template TI p_TI) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + ti := p_TI, + cC_ProtocolDiscriminator := '0011'B, + msgType := '??000111'B, + facility := cr_Facility_Any ifpresent, + connectedSubAdrs := cr_ConnectedSubAdrs_Any ifpresent, + userUser := cr_UserUserAny ifpresent, + sS_VersionInd := cr_SS_VersionIndAny ifpresent, + streamId := cr_StreamIdAny ifpresent + }; + + //---------------------------------------------------------------------------- + + template (present) DETACHREQUESTMO cr_DetachReq_Common(template DetachType p_Type, + template MobileIdentity p_Ptmsi, + template PTMSI_Signature p_Signature := cr_PTMSI_Signature2Any ifpresent) := // @sic R5s110112 sic@ + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + skipIndicator := '0000'B, + gMMProtocolDiscriminator := tsc_GMM_PD, + msgType := '00000101'B, + spare4 := ?, + detachType := p_Type, + ptmsi := p_Ptmsi, + ptmsiSignature := p_Signature + }; + + //---------------------------------------------------------------------------- + + template (value) ACTIVATEPDPCONTEXTACCEPTdl cs_ActPDP_ContextAcpMT_Common(TI p_TI, + template (value) LLC_SAPI p_LLC_SAPI, + template (value) QualityOfService p_Qos, + template (value) RadioPriority p_RadioPriority, + template (omit) PktDataProtoAddr p_Pdp_addr, + template (omit) ProtocolConfigOptions p_PCO, + template (omit) PacketFlowIdentifier p_PFI) := + { /* 24.008, 9.5.2 */ + /* @status APPROVED (LTE_IRAT, UTRAN) */ + ti := p_TI, // This will be overwritten in the test case with the received ti + sM_ProtocolDiscriminator := tsc_SMPD, // PD for SM + msgType := '01000010'B, // Msg type for PDP Context Accept + negiotiatedLLC_SAPI := p_LLC_SAPI, // Mobile in UMTS should neglect this IE. If in GSM domain, will use this SAPI. + negiotiatedQoS := p_Qos, + spare := '0000'B, + radioPriority := p_RadioPriority, // UTRAN = cs_RadioPriorityHigh (omit), + pDP_Address := p_Pdp_addr, + protocolConfOpts := p_PCO, // UTRAN = omit, + pktFlowID := p_PFI, // UTRAN = cs_PktFlowId, + smCause := omit, + connectivityType := omit /* cl. 10.5.6.19 O TV 1 IEI=0xB- @sic R5s120178 Baseline Moving sic@*/ + }; + + //---------------------------------------------------------------------------- + + template (value) ALERTINGdl cs_Alert_Common(template (value) TI p_TI) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + ti := p_TI, + cC_ProtocolDiscriminator := '0011'B, + msgType := '00000001'B, + facility := omit, + progInd := omit, + userUser := omit + }; + + //---------------------------------------------------------------------------- + + template (value) ATTACHACCEPT cs_AttachAcc_Common(template (value) AttachResult p_AttachRes, + template (value) RoutingAreaId p_RAI, + template (omit) PTMSI_Signature p_PTMSIsig, + template (omit) MobileIdentity p_PTMSI, + template (omit) PLMN_List p_EPLMN, + template (omit) MobileIdentity p_TMSI, + template (omit) GMM_Cause p_GmmCause:= omit, //@sic R5-140946 sic@ + template (omit) AddNtwFeatureSupport p_AddNwFeatSupport := omit,//@sic R5-140946 sic@ + template (omit) GPRS_Timer2 p_T3302Value:= omit) := //@sic R5-140946 sic@ + { /* @status APPROVED (LTE_IRAT, POS, SSNITZ, UTRAN) */ + skipIndicator := '0000'B, + gMMProtocolDiscriminator := tsc_GMM_PD, + msgType := '00000010'B, + forceToStandby := cs_ForceToStandby('000'B), // Force to standby not indicated + attachResult := p_AttachRes, + periodicRAupdateTimer := cs_GprsTimer_v('111'B, '00000'B), // Timer deactivated + radioPrioTOM8 := cs_RadioPriority(omit, '100'B), // Lowest + radioPrioSMS := cs_RadioPriority(omit, '100'B), // Lowest + rai := p_RAI, + ptmsiSignature := p_PTMSIsig, + negReadyTimer := omit, + allocatedPTMSI := p_PTMSI, + msIdentity := p_TMSI, // @sic R5-123114 sic@ + gmmCause := p_GmmCause, //@sic R5-140946 sic@ + t3302Value := p_T3302Value, //@sic R5-140946 sic@ + cellNotification := omit, + equivalentPLMN := p_EPLMN, + ntwFeatureSupport := omit, + emergNumList := omit, + requestedMS_Info := omit, + t3319Value := omit, + t3323Value := omit, + t3312ExtdValue := omit, /* cl. 10.5.7.4a O TLV 3 IEI=0x39 @sic R5s120178 Baseline Moving sic@*/ + addNtwFeatureSupport := p_AddNwFeatSupport // @sic R5s130195 Baseline Moving sic@, @sic R5-140946 sic@ + }; + + //---------------------------------------------------------------------------- + + template (value) ATTACHREJECT cs_AttachRej_Common(RejCau p_Cause) := + { /* @status APPROVED (LTE_IRAT) */ + skipIndicator := '0000'B, + gMMProtocolDiscriminator := tsc_GMM_PD, + msgType := '00000100'B, + gmmCause := p_Cause, + t3302Value := omit, + t3346Value := omit /* cl. 10.5.7.4 O TLV 3 IEI=0x3A @sic R5s120178 Baseline Moving sic@*/ + }; + + //---------------------------------------------------------------------------- + + template (value) AUTHENTICATIONANDCIPHERINGREQUEST cs_AuthAndCiphReq_Common(template (value) RAND p_Rand, + template (value) CiphKeySeqNum p_CiphKeySeqNum, + template (value) GPRS_CipherAlg p_CipherAlg, + template (value) AUTN p_Autn) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + skipIndicator := '0000'B, + gMMProtocolDiscriminator := tsc_GMM_PD, + msgType := '00010010'B, + imeisvReq := cs_IMEISV_Request('000'B), // IMEISV not requested + ciphAlgorithm := cs_CiphAlgorithm(p_CipherAlg), // GPRS encryption algorithm GEA/1 + acRefNo := cs_AC_RefNum3, // Use any reference value + forceToStandby := cs_ForceToStandby('000'B), // Force to standby not indicated + authRand := p_Rand, // Authentication paramter RAND + gprsCiphKeySeqNo := p_CiphKeySeqNum, // GPRS ciphering key sequence number + aUTN := p_Autn // Authentication paramter AUTN, an UMTS challenge is requested + }; + + //---------------------------------------------------------------------------- + + template (value) CALLPROCEEDING cs_CallProc_Common( template (value) TI p_TI) := + { /* @status APPROVED (LTE_IRAT) */ + ti := p_TI, + cC_ProtocolDiscriminator := '0011'B, + msgType := '00000010'B, + repeatInd := omit, + bcap1 := omit, + bcap2 := omit, + facility := omit, + progInd := omit, + priorityGranted := omit, + ntwCC_Capabilities := omit + }; + + //---------------------------------------------------------------------------- + + template (value) CONNECTACKNOWLEDGE cs_ConnAck_Common(template (value) TI p_TI) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + ti := p_TI, + cC_ProtocolDiscriminator := '0011'B, + msgType := '00001111'B + }; + + //---------------------------------------------------------------------------- + + template (value) CONNECTdl cs_Connect_Common(template (value) TI p_TI) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + ti := p_TI, + cC_ProtocolDiscriminator := '0011'B, + msgType := '00000111'B, + facility := omit, + progInd := omit, + connectedNum := omit, + connectedSubAdrs := omit, + userUser := omit + }; + + //---------------------------------------------------------------------------- + + template (value) SETUPdl cs_SetupMT_Common(template (value) Bcap p_Bcap, + template (value) TI p_TI := cs_TI_MT, + template (omit) FacilityIE p_Facility := omit, + template (omit) Signal p_Signal := omit, + template (omit) CGPN p_CGPN := omit) := + { /* @status APPROVED (LTE_IRAT, SSNITZ) */ + ti := p_TI, + cC_ProtocolDiscriminator := '0011'B, + msgType := '00000101'B, + repeatInd := omit, + bcap1 := p_Bcap, + bcap2 := omit, + facility := p_Facility, + progInd := omit, + signal := p_Signal, + cgpn := p_CGPN, + cgps := omit, + cdpn := omit, + cdps := omit, + redirectingPN := omit, + redirectingPSubadrs := omit, + llcRepeatInd := omit, + llc1 := omit, + llc2 := omit, + hlcRepeatInd := omit, + hlc1 := omit, + hlc2 := omit, + userUser := omit, + priority := omit, + alert := omit, + ntwCCCapabilities := omit, + cauNoCLI := omit, + buBcap := omit + }; + + //---------------------------------------------------------------------------- + + template (value) SETUPdl cs_SetupMT_2_Bcap_Common(Bcap p_Bcap1, + Bcap p_Bcap2, + RepeatInd p_RepeatInd) := + { + ti := cs_TI_MT, + cC_ProtocolDiscriminator := '0011'B, + msgType := '00000101'B, + repeatInd := p_RepeatInd, // Bcap repeat indicator for alternate (circular selection) + bcap1 := p_Bcap1, + bcap2 := p_Bcap2, + facility := omit, + progInd := omit, + signal := omit, + cgpn := omit, + cgps := omit, + cdpn := omit, + cdps := omit, + redirectingPN := omit, + redirectingPSubadrs := omit, + llcRepeatInd := omit, + llc1 := omit, + llc2 := omit, + hlcRepeatInd := omit, + hlc1 := omit, + hlc2 := omit, + userUser := omit, + priority := omit, + alert := omit, + ntwCCCapabilities := omit, + cauNoCLI := omit, + buBcap := omit + }; + + //---------------------------------------------------------------------------- + + template (present) PAGINGRESPONSE cr_PagRsp_Common(template (present) KeySeq p_KeySeq, + template (present) MobileIdentity p_MobileId, + template AddUpdateParams p_AddUpdateParams := cr_AddUpdateParams_Any ifpresent) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ) */ + skipIndicator := '0000'B, + rRProtocolDiscriminator := '0110'B, + msgType := '??100111'B, + spare4 := '0000'B, + ciphKeySeqNum := cr_CiphKeySeqNum(omit, p_KeySeq), + mSClsmk2 := cr_MS_Clsmk2_Any, + mobileId := p_MobileId, + addUpdateParams := p_AddUpdateParams + }; + + //---------------------------------------------------------------------------- + + template (present) ROUTINGAREAUPDATEREQUEST cr_RAURequest_Common(template (present) UpdateType p_UpdateType, + template (present) RoutingAreaId p_RAI, + template PTMSI_Signature p_PTMSISig, + template TMSI_Status p_TMSIStatus, + template (present) KeySeq p_KeySeq, + template (present) MS_RadioAccessCap_LV p_MsRadioAccessCap := cr_MS_RadioAccessCapLVAny, + template GPRS_Timer p_ReadyTimer := cr_GPRS_TimerAny ifpresent, + template DRXparameter p_DrxParameter := cr_DRXparameter_Any('27'O) ifpresent, + template MobileIdentity p_Ptmsi := cdr_MobileIdTMSI_tlv ifpresent, + template MS_NetworkCap p_MsNetworkCap := cr_MS_NetworkCap_Any, + template PDP_ContextStatus p_PDP_ContextStatus := cr_PDP_ContextStatusAny, + template PS_LCS_Capability p_PS_LCS_Capability := cr_PS_LCS_CapabilityAny ifpresent, + template MBMS_ContextStatus p_MBMS_ContextStatus := omit, + template UE_NetworkCap p_UeNetworkCapability := cr_UENetworkCap_Any ('58'O), + template MobileIdentity p_AddMobileId := cr_MobileIdAny('1A'O) ifpresent, + template RoutingAreaId2 p_AddOldRAI := cr_RoutingAreaId2 ifpresent, + template MS_Clsmk2 p_MsClassmark2 := cr_MS_Clsmk2_Any_tlv ifpresent, + template MS_Clsmk3 p_MsClassmark3 := cr_MSCLSMK3_Any ifpresent, + template CodecList p_SupportedCodecList := cr_CodecListAny ifpresent, + template PTMSI_Type p_PTMSI_Type := cr_PTMSI_Type_Any ifpresent, + template AdditionalUpdateType p_AddUpdType := cr_AdditionalUpdateTypeAny ifpresent, + template NwkResourceId p_TmsiBasedNRIContainer := cr_NwkResourceIdAny ifpresent) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + skipIndicator := '0000'B, + gMMProtocolDiscriminator := tsc_GMM_PD, + msgType := '00001000'B, + gprsCiphKeySeqNo := cr_CiphKeySeqNum(omit, p_KeySeq), + updateType := p_UpdateType, + oldRAI := p_RAI, + msRadioAccessCap := p_MsRadioAccessCap, + oldPTMSI_Signature := p_PTMSISig, + readyTimer := p_ReadyTimer, + drxParameter := p_DrxParameter, + tmsiStatus := p_TMSIStatus ifpresent, + ptmsi := p_Ptmsi, + msNetworkCap := p_MsNetworkCap, + pDP_ContextStatus := p_PDP_ContextStatus, + pS_LCS_Capability := p_PS_LCS_Capability, + mBMS_ContextStatus := p_MBMS_ContextStatus, + ueNetworkCapability := p_UeNetworkCapability, + addMobileId := p_AddMobileId, + addOldRAI := p_AddOldRAI, + msClassmark2 := p_MsClassmark2, + msClassmark3 := p_MsClassmark3, + supportedCodecList := p_SupportedCodecList, + voiceDomainPref := cr_VoiceDomainPref_Any ifpresent, /* @sic R5s110176 Baseline Moving sic@ */ + ptmsiType := p_PTMSI_Type, /* cl. 10.5.5.29 O TV 1 IEI=0xE- @sic R5s120178 Baseline Moving, R5-123307 sic@*/ + deviceProperties := cr_DeviceProperties('D'H) ifpresent, /* cl. 10.5.7.8 O TV 1 IEI=0xD- @sic R5s120178 Baseline Moving sic@*/ + msNetworkFeatureSupport := cr_MS_NetworkFeatureSupport('C'H) ifpresent, /* cl. 10.5.1.15 O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/ + oldLAI := cr_LocAreaId2_Any ifpresent, /* cl. 10.5.5.30 O TLV 7 IEI=0x14 @sic R5s120178 Baseline Moving sic@*/ + addUpdType := p_AddUpdType, // @sic R5s130195 Baseline Moving sic@ + tmsiBasedNRIContainer := p_TmsiBasedNRIContainer // @sic R5s130195 Baseline Moving sic@ + }; + + //---------------------------------------------------------------------------- + + template (value) ROUTINGAREAUPDATEACCEPT cs_RA_UpdAcc_Common(template (value) UpdateResult p_UpdateResult, + template (value) RoutingAreaId p_RAI, + template (omit) PTMSI_Signature p_PTMSIsig, + template (omit) MobileIdentity p_PTMSI, + template (omit) PDP_ContextStatus p_PDP_ContextStatus, // @sic R5-133584 sic@ + template (omit) RequestedMS_Info p_ReqMSInfo := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + skipIndicator := '0000'B, + gMMProtocolDiscriminator := tsc_GMM_PD, + msgType := '00001001'B, + updateResult := p_UpdateResult, + forceToStandby := cs_ForceToStandby('000'B), + periodicRAupdateTimer := cs_GprsTimer_v('111'B, '00000'B), + rai := p_RAI, + ptmsiSignature := p_PTMSIsig, + allocatedPTMSI := p_PTMSI, + msIdentity := omit, + listNPDUnumbers := omit, + readyTimer := omit, + gmmCause := omit, + t3302Value := omit, + cellNotification := omit, + equivalentPLMN := omit, + pDP_ContextStatus := p_PDP_ContextStatus, /* @sic R5s120570 Additional change sic@ */ + ntwFeatureSupport := omit, + emergNumList := omit, + mBMS_ContextStatus := omit, + requestedMS_Info := p_ReqMSInfo, + t3319Value := omit, + t3323Value := omit, + t3312ExtdValue := omit, /* cl. 10.5.7.4a O TLV 3 IEI=0x39 @sic R5s120178 Baseline Moving sic@*/ + addNtwFeatureSupport := omit // @sic R5s130195 Baseline Moving sic@ + }; + + //---------------------------------------------------------------------------- + + template (value) ROUTINGAREAUPDATEREJECT cs_RAUpdReject_Common( template (value) GMM_Cause p_RejectCause, + template (omit) GPRS_Timer2 p_T3346Value := omit + ) := + { /* @status APPROVED (LTE_IRAT) */ + skipIndicator := '0000'B, // Skip Indicator BITSTRING [4] + gMMProtocolDiscriminator := tsc_GMM_PD, // GMM Protocol Discriminator '1000' BITSTRING [4] + msgType := '00001011'B, // Message Type '0000 1011' BITSTRING [8] + gmmCause := p_RejectCause, // GMM Cause M, 1/2 octet + forceToStandby := cs_ForceToStandby('000'B), // Force To Standby M, 1/2 octet @sic R5s110718 sic@ + spare := '0000'B, // Spare Half Octet M, 1/2 octet + t3302Value := omit, // O TLV [3] IEI = 38 + t3346Value := p_T3346Value // O TLV [3] IEI = 3A @sic R5s120178 Baseline Moving sic@ + }; + + //---------------------------------------------------------------------------- + + template (present) ROUTING_AREA_UPDATE_COMPLETE cr_RAUpdComplete_Common(template EUTRAN_HO_Info p_EUTRAN_HO_Info := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + skipIndicator := '0000'B, + gMMProtocolDiscriminator := tsc_GMM_PD, + msgType := '00001010'B, + listNPDUnumbers := omit, + interRAT_HO_Info := omit, + eutranInterRAT_HO_Info := p_EUTRAN_HO_Info + }; + + //---------------------------------------------------------------------------- + + template (present) ACTIVATEPDPCONTEXTREQUESTul cr_ActPDP_ContextReqMO_Common(template QualityOfService p_QosReq) := + { /* 3GPP 24.008, 9.5.1 */ + /* @status APPROVED (LTE_IRAT, UTRAN) */ + ti := cr_TI_Any, + sM_ProtocolDiscriminator := tsc_SMPD, + msgType := '01000001'B, + requestedNSAPI := cr_NSAPI, + requestedLLC_SAPI := cr_LLC_SAPI, // This has to be set to Not Assigned by UE in UMTS domain. + requestedQoS := p_QosReq, // The AT command interface will be used to set the QoS to this value. + pDP_Address := cr_PDP_AddressAny, + accessPtName := cr_AccessPointName_Any ifpresent, // The GGSN logical name or the external packet data network logical name + protocolConfOpts := cr_ProtocolConfigOptionsAny ifpresent, + requestType := cr_RequestType_Any ifpresent, + deviceProperties := cr_DeviceProperties ('C'H) ifpresent /* cl. 10.5.7.8 O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/ + }; + + //---------------------------------------------------------------------------- + + template (present) ALERTINGul cr_Alert_Common(template TI p_TI) := + { /* @status APPROVED (LTE_IRAT, SSNITZ) */ + ti := p_TI, + cC_ProtocolDiscriminator := '0011'B, + msgType := '??000001'B, + facility := cr_Facility_Any ifpresent, + userUser := cr_UserUserAny ifpresent, + sS_VersionInd := cr_SS_VersionIndAny ifpresent + }; + + //---------------------------------------------------------------------------- + + template (present) AUTHENTICATION_AND_CIPHERING_FAILURE cr_AuthAndCiphFailure_Common(template (present) RejCau p_Cause := ?, + template AuthenticationFailureParameter p_AuthFailParam := cr_AuthFailParam_Any ifpresent) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + skipIndicator := '0000'B, + gMMProtocolDiscriminator := tsc_GMM_PD, + msgType := '00011100'B, + gmmCause := p_Cause, + authFailurePar := p_AuthFailParam + }; + + template (value) DISCONNECTdl cs_Disconnect_Common(template (value) TI p_Ti) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + Ti := p_Ti, + cC_ProtocolDiscriminator := '0011'B, + msgType := '00100101'B, + cau := cs_CauNormCallClear, + facility := omit, + progInd := omit, + userUser := omit, + allowedAction := omit + }; + + template (value) RELEASECOMPLETE cs_RelCmpl_Common(template (value) TI p_Ti, + B4_Type p_PD := '0011'B, // Call related SS + template (omit) Cau p_Cau := omit, + template (omit) FacilityIE p_Facility := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ti := p_Ti, + protocolDiscriminator := p_PD, + msgType := '00101010'B, + cau := p_Cau, + facility := p_Facility, + userUser := omit, + sS_VersionInd := omit + }; + + template (present) RELEASEul cr_Rel_Common(template TI p_Ti) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ti := p_Ti, + cC_ProtocolDiscriminator := '0011'B, + msgType := '??101101'B, + cau := cr_CauAny ifpresent, + cau2 := cr_CauAny ifpresent, + facility := cr_Facility_Any ifpresent, + userUser := cr_UserUserAny ifpresent, + sS_VersionInd := cr_SS_VersionIndAny ifpresent + }; + + //---------------------------------------------------------------------------- + + template (present) SETUPul cr_SetupMO_Common := + { /* @status APPROVED (LTE_IRAT, SSNITZ) */ + ti := cr_TI_MO, + cC_ProtocolDiscriminator := '0011'B, + msgType := '??000101'B, + repeatInd := cr_RepeatInd ifpresent, + bcap1 := cr_BcapAnyMO, + bcap2 := cr_BcapAnyMO ifpresent, + facility := cr_Facility_Any ifpresent, + cgps := cr_CGPS_Any ifpresent, + cdpn := cr_CDPN_Any, + cdps := cr_CDPS_Any ifpresent, + llcRepeatInd := cr_RepeatInd ifpresent, + llc1 := cr_LLC_Any ifpresent, + llc2 := cr_LLC_Any ifpresent, + hlcRepeatInd := cr_RepeatInd ifpresent, + hlc1 := cr_HLC_Any ifpresent, + hlc2 := cr_HLC_Any ifpresent, + userUser := cr_UserUserAny ifpresent, + sS_VersionInd := cr_SS_VersionIndAny ifpresent, + cLIR_Suppression := '10100001'B ifpresent, + cLIR_Invocation := '10100010'B ifpresent, + cC_Capabilities := cr_CC_CapabilitiesAny ifpresent, + facilityCCBS_AdvRecall := cr_FacilityAdvRecall ifpresent, + facilityCCBS_RecallAlign := cr_FacilityRecallAlign ifpresent, + streamId := cr_StreamIdAny ifpresent, + supportedCodecs := cr_CodecListAny ifpresent, + redial := '10100011'B ifpresent + }; + + //---------------------------------------------------------------------------- + + template (present) SETUPul cdr_SetupMO_Speech_Common(template (present) Bcap p_Bcap) + modifies cr_SetupMO_Common := + { /* @status APPROVED (LTE_IRAT, SSNITZ) */ + repeatInd := omit, + bcap1 := p_Bcap, + bcap2 := omit + }; + + //---------------------------------------------------------------------------- + + template (present) SETUPul cdr_SetupMO_2_Bcap_Common(template (present) Bcap p_Bcap1, + template (present) Bcap p_Bcap2, + template (present) RepeatInd p_RepeatInd) + modifies cr_SetupMO_Common := + { + repeatInd := p_RepeatInd, + bcap1 := p_Bcap1, + bcap2 := p_Bcap2 + }; + + template (present) DEACTIVATEPDPCONTEXTACCEPT cr_DeactPdpContextAcpMo(template (present) TI p_TI := cr_TI_Any) := + { /* @status APPROVED (UTRAN) */ + ti := p_TI, + sM_ProtocolDiscriminator := tsc_SMPD, + msgType := '01000111'B, + protocolConfOpts := cr_ProtocolConfigOptionsAny ifpresent, + mBMS_ProtocolConfOpts := cr_MBMS_ProtoCfgOptAny ifpresent + }; + + template (value) DEACTIVATEPDPCONTEXTREQUEST cs_DeactPdpContextReqMt(TI p_TI, + CauseValue p_CauseValue := tsc_SM_CauseValue_RegularDeactivation) := + { /* @status APPROVED (UTRAN) */ + ti := p_TI, + sM_ProtocolDiscriminator := tsc_SMPD, + msgType := '01000110'B, + sM_Cause := cs_SM_Cause(p_CauseValue), + tearDwnInd := cs_TearDwnInd, + protocolConfOpts := omit, + mBMS_ProtocolConfOpts := omit, + t3396Value := omit // @sic R5s130195 Baseline Moving sic@ + }; + + template (value) DETACHACCEPTMO cs_DetachAcc := + { /* @status APPROVED (UTRAN) */ + skipIndicator := '0000'B, + gMMProtocolDiscriminator := tsc_GMM_PD, + msgType := '00000110'B, + spare := '0000'B, + forceToStandby := cs_ForceToStandby('000'B) // Force to standby not indicated + }; + +} diff --git a/LTE_A_IWD_14wk37/Common/IRAT/NAS_24008TypeDefs.ttcn b/LTE_A_IWD_14wk37/Common/IRAT/NAS_24008TypeDefs.ttcn new file mode 100644 index 0000000..90b023f --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IRAT/NAS_24008TypeDefs.ttcn @@ -0,0 +1,2319 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-07-16 17:43:09 +0200 (Wed, 16 Jul 2014) $ +// $Rev: 11833 $ +/******************************************************************************/ + +module NAS_24008TypeDefs { + /* Module containing type definitions for UTRAN and/or GERAN as defined in 24.008 */ + import from CommonDefs all; + import from NAS_CommonTypeDefs all; + +// ============================================================================= +// Simple Type Definitions +// ----------------------------------------------------------------------------- +type O1_Type PktFlowId; // This can take values as per 24.008, section 10.5.6.11 +type octetstring AddressInfo length(0..20); // Address information, this is the DNS server name. // @sic R5s130501 sic@ + // this will be converted into +type O1_Type CauseValue; // SM Cause Value +type B8_Type CLIR_Invocation ('10100010'B); // CLIR invocation + // 3G TS 24.008 cl. 10.5.4.11b +type B8_Type CLIR_Suppression ('10100001'B); // CLIR suppression + // 3G TS 24.008 cl. 10.5.4.11a +type B4_Type CMServType; // CM Service Type + // 3G TS 24.008 cl. 10.5.3.3 +type IEI8_Type CTSPerm; // CTSPerm + // 3G TS 24.008 cl. 10.5.3.10 + // value "10100010"B +type IEI8_Type FollowOnProceed; // Follow On Proceed + // 3G TS 24.008 cl. 10.5.3.7 + // value "10100001"B +type B32_Type Fresh; +type B64_Type GSM_CipheringKey; +type B128_Type IntegrityKey; +type charstring LogicChGERAN; // Logical channel (used for Interworking with GERAN) +type B128_Type MM_RAND; // Authentication parameter RAND + // 3G TS 24.008 cl. 10.5.3.1 +type O1_Type PDP_TypeNo; // PDP Type number, this will take values + // 00000001: PDP Type PPP + // 00000010: PDP Type IHOSS + // 01000001: IPv5 + // 01010111: IPv6 + // This can take values as per 24.008, clause 10.5.6.4 +type O1_Type RejCau; // Reject Cause + // 3G TS 24.008 cl. 10.5.3.6 +type O1_Type SapId; // SAP Identifier + // ??? defined in several places + // GERAN 04.06 and 3G TS 24.008 as bitstring[2] ? +type charstring Services ("Telephony", "EmergencyCall", "31kHz", "V110", "V120", "PIAFS", "FTM", "X31", "BTM", "3G324M_Call", "Alternate Speech/Facsimile","3G324M_SpeechPreferred" ); + // 3G TS 24.008 cl. 10.3.1 +type bitstring Redial ('10100011'B); // Redial + // 3G TS 24.008 cl. 10.5.4.34 +type octetstring MBMS_ProtoIdContents length(1..251); // 3G TS 24.008 cl. 10.5.6.15 +type integer CellId; +type O1_Type EstMode; // establish mode +type B3_Type GPRS_CipherAlg; // 3GPP TS 24.008 section 10.5.5.3 +type B6_Type RLCMessageType; // message type for GPRS RLC/MAC control messages. 3GPP TS 44.060 clause 11.2.0 +type O1_Type NCCPermitted; // ncc permitted +type integer PAGING_GROUP; // see 3GPP TS 45.002 clause 6.5.2 and 6.5.6 +type integer SAPI; // Service access point of GERAN L2 or GERAN LLC +type integer PhysicalChId (0..31); // Physical channel identifier in GERAN emulator +type integer SubChannelNumber; // Subchannel number for TCH/H, FACCH/H, SACCH/TH, SDCCH/4. SDCCH/C4, SDCCH/8 and SDCCH/C8. + // For TCH/H, FACCH/H and SACCH/TH value is (0..1); + // For SDCCH/8 and SACCH/C8 value is (0..7); + // For SDCCH/4 and SACCH/C4 value is (0..3). +type B3_Type TSC; // Training sequence code,GSM 04.08 10.5.2.5 +type O4_Type TLLI; +type B3_Type TN; // time slot number +type integer TX_Power; // transmission power level of a physical channel. the unit is dBuVemf +type integer LLMEId; // Logical Layer Management Entity Id +type octetstring UE_TestLoopMode length(1); // UETestLoopMode + // 3G TS 34.109 cl. 6.2 +// ============================================================================= +// Structured Type Definition +// ----------------------------------------------------------------------------- +type record AccessTechnology { + B4_Type accessTechnologyType, + B1_Type prefix // value 1 if next iteration present +}; + +type record of AccessTechnology AccessTechnologyList; + +// ============================================================================= +// Structured Type Definition +// Cipher Algorithm +// 3GPP 24.008 / 10.5.5.19 +// ----------------------------------------------------------------------------- +type record AC_ReferenceNumber { + B4_Type aCValue +}; + +// ============================================================================= +// Structured Type Definition +// Additional Network Feature Support +// 3G TS 24.008 cl. 10.5.5.23A +// ----------------------------------------------------------------------------- +type record AddNtwFeatureSupport { + IEI8_Type iei, // + Type4Length_Type iel, // + B7_Type spareBits, + B1_Type gprsSMS +}; + +// ============================================================================= +// Structured Type Definition +// Alerting pattern (used for NIA ) +// 3G TS 24.008 cl. 10.5.4.26 +// ----------------------------------------------------------------------------- +type record AlertPattern { + IEI8_Type iei, // '00011001'B @sic R5s110420 sic@ + Type4Length_Type iel, // @sic R5s110420 sic@ + B4_Type spare4, // 4 spare bits + B4_Type alertPatternValue // alerting pattern value +}; + +// ============================================================================= +// Structured Type Definition +// Attach result +// 3GPP 24.008 / 10.5.5.1 +// ----------------------------------------------------------------------------- +type record AttachResult { + B1_Type fOP, // Follow-on Proceed + B3_Type result // Attach result +}; + +// ============================================================================= +// Structured Type Definition +// Attach type +// 3GPP 24.008 / 10.5.5.2 +// ----------------------------------------------------------------------------- +type record AttachType { + B1_Type forValue, // Follow-on request + B3_Type attachType // Type of attach +}; + +// ============================================================================= +// Structured Type Definition +// Authentication Response parameter (extension) +// 3G TS 24.008 cl. 10.5.3.2.1 +// ----------------------------------------------------------------------------- +type record AuthRspExt { + IEI8_Type iei, // '00100001'B for MM (21 hex) @sic R5s110420 sic@ + // '00101001'B for GMM (29 hex) @sic R5s110420 sic@ + Type4Length_Type iel, // @sic R5s110420 sic@ + bitstring rES length(1..96) // Authentication Parameter RES +}; + +// ============================================================================= +// Structured Type Definition +// Authentication Response parameter (TV, 5 octets) +// 3G TS 24.008 cl. 10.5.3.2 +// ----------------------------------------------------------------------------- +type record AuthRsp { + IEI8_Type iei optional, // '00100010'B (22 hex) + B32_Type rES // Authentication Parameter RES +}; + +// ============================================================================= +// Structured Type Definition +// Backup Bearer capability +// 3G TS 24.008 cl. 10.5.4.4a +// ----------------------------------------------------------------------------- +type record BuBcap { + IEI8_Type iei, // '01000001'B (41 hex) + Type4Length_Type iel, // length + B1_Type extBit3, // extension bit + B2_Type radioChRequire, // radio channel requirements ue->n, GSM, octet 3 + B1_Type codingStd, // coding standard, '0'B, octet 3 + B1_Type transferMode, // transfer mode octet 3 + B3_Type itc, // information transfer capability, octet 3 + B1_Type extBit4 optional, // extension bit, octet 4 + B1_Type compress optional, // compression, ue->network, octet 4 + B2_Type structure optional, // structure, '0, 3', octet 4 + B1_Type duplexMode optional, // duplex mode, '1'B, octet 4 + B1_Type cfg optional, // configuration, '0'B, octet 4 + B1_Type nirr optional, // negotiation of intermediate rate requested, GSM, octet 4 + B1_Type establish optional, // establishment, '0'B, octet 4 + B1_Type extBit5 optional, // extension bit, octet 5 + B2_Type accessId optional, // access identify, '00'B, octet 5 + B2_Type rateAdapt optional, // rate adaption, octet 5 + B3_Type sacp optional, // signalling access protocol, '1 - 6', octet 5 + B1_Type extBit5a optional, // extension bit, octet 5a + B2_Type OherItc optional, // Other ITC , octet 5a + B2_Type OtherRateAdapt optional, // Other Rate adaptation, octet5a + B3_Type spare3 optional, // spare bits - 3 bits + B1_Type extBit6 optional, // extension bit, octet 6 + B2_Type layer1Id optional, // Layer 1 identity, '01'B, octet 6 + B4_Type userInfoLayer1 optional, // user information Layer 1 protocol, '0000'B, octet 6 + B1_Type syncAsync optional, // synchronous bit, octet 6 + B1_Type extBit6a optional, // extension bit, octet 6a + B1_Type numStopBits optional, // number of stop bits, octet 6a + B1_Type negotiation optional, // negotiation bit, '0'B, octet 6a + B1_Type numDataBits optional, // number of data bits, octet 6a + B4_Type userRate optional, // user rate, GSM, octet 6a + B1_Type extBit6b optional, // extension bit, octet 6b + B2_Type intermRate optional, // intermediate rate, octet 6b + B1_Type nicTx optional, // network independent clock on transmission, GSM, octet 6b + B1_Type nicRx optional, // network independent clock on reception, GSM, octet 6b + B3_Type parity optional, // parity information, octet 6b + B1_Type extBit6c optional, // extension bit, octet 6c + B2_Type connectElem optional, // connection element, octet 6c + B5_Type modemType optional, // modem type, octet 6c + B1_Type extBit6d optional, // extension bit, octet 6d + B2_Type OtherModemType optional, // Other Modem type, octet 6d + B5_Type FixedNtwUserRate optional, // Fixed Network user rate, octet 6d + B1_Type extBit6e optional, // extension bit, octet 6e + B4_Type acceptChCoding optional, // acceptable channel coding, octet 6e + B3_Type maxNumTrafficCh optional, // maximum number of traffic channel, octet 6e + B1_Type extBit6f optional, // extension bit, octet 6f + B3_Type uIMI optional, // User initiated modification indication, octet 6f + B4_Type wAIUR optional, // wanted air interface user rate, octet 6f + B1_Type extBit6g optional, // extension bit, octet 6g + B3_Type acceptChCodingExt optional, // acceptable channel coding extended, octet 6g + B2_Type asymInd optional, // asymmetry indication, octet 6g + B2_Type spare2 optional, // spare 2 bits , octet 6g + B1_Type extBit7 optional, // extension bit, octet 7 + B2_Type layer2id optional, // L2 identity, octet 7 + B5_Type userInfoLayer2 optional // user information L2 protocol, octet 7 +}; + +// ============================================================================= +// Structured Type Definition +// Cause of no CLI information elemnt +// 3G TS 24.008 cl. 10.5.4.30 +// ----------------------------------------------------------------------------- +type record CauNoCLI { + IEI8_Type iei, // '00111010'B @sic R5s110420 sic@ + Type4Length_Type iel, // length @sic R5s110420 sic@ + B8_Type causeNoCLI // cause of no CLI +}; + +// ============================================================================= +// Structured Type Definition +// Calling party BCD number (CC information element) +// 3G TS 24.008 cl. 10.5.4.9 +// ----------------------------------------------------------------------------- +type record CGPN { + IEI8_Type iei, // '01011100'B @sic R5s110420 sic@ + Type4Length_Type iel, // length + TypeOfNumPlan typeOfNumPlan, // type of number and numbering plan identification + PresentIndScreeningInd presentIndScreeningInd, // Presentation indicator & screening indicator + octetstring digits length(0..10) // numbers +}; + +// ============================================================================= +// Structured Type Definition +// Cell notification +// 3GPP 24.008 / 10.5.5.21 +// ----------------------------------------------------------------------------- +type record CellNotification { + IEI8_Type iei // '10001100'B (8C hex) +}; + +// ============================================================================= +// Structured Type Definition +// Cipher Algorithm +// 3GPP 24.008 / 10.5.5.3 +// ----------------------------------------------------------------------------- +type record CiphAlgorithm { + B1_Type spare1, + B3_Type algorithm +}; + +// ============================================================================= +// Structured Type Definition +// 3G TS 24.008, section 10.5.5.27 +// ----------------------------------------------------------------------------- +type record EUTRAN_HO_Info { + IEI8_Type iei, // @sic R5s110420 sic@ + Type4Length_Type iel, // @sic R5s110420 sic@ + octetstring info length(1..255) // Inter RAT Handover Information Container @sic R5s110176 sic@ +}; + +// ============================================================================= +// Structured Type Definition +// Force to standby +// 3GPP 24.008 / 10.5.5.7 +// ----------------------------------------------------------------------------- +type record ForceToStandby { + B1_Type spare, + B3_Type forceToStandbyValue // Force to standby value +}; + +// ============================================================================= +// Structured Type Definition +// GMM cause +// 3GPP 24.008 / 10.5.5.14 +// ----------------------------------------------------------------------------- +type record GMM_Cause { + IEI8_Type iei optional, // '00100101'B (25 hex) + B8_Type gmmCauseValue // Cause value +}; + +// ============================================================================= +// Structured Type Definition +// 3G TS 24.008, section 10.5.5.24 +// ----------------------------------------------------------------------------- +type record InterRAT_HO_Info { + IEI8_Type iei, // '00100111'B (27 hex) @sic R5s110420 sic@ + Type4Length_Type iel, // @sic R5s110420 sic@ + octetstring info length(1..248) // Inter RAT Handover Information Container @sic R5s110176 sic@ +}; + +// ============================================================================= +// Structured Type Definition +// Location Updating Type +// 3G TS 24.008 cl. 10.5.3.5 +// ----------------------------------------------------------------------------- +type record LocUpdType { + B1_Type fOR, // Follow-On Request + B1_Type spare1, + B2_Type lUT // Location Updating Type +}; + +// ============================================================================= +// Structured Type Definition +// MBMS_ContextStatus +// 3G TS 24.008 cl. 10.5.7.6 +// ----------------------------------------------------------------------------- +type record MBMS_ContextStatus { + IEI8_Type iei, // '00110101'B (35 hex) @sic R5s110420 sic@ + Type4Length_Type iel, // @sic R5s110420 sic@ + bitstring nSAPI length(0..128) // NSAPI(x) +}; + +// ============================================================================= +// Structured Type Definition +// 3G TS 24.008 cl. 10.5.6.15 +// ----------------------------------------------------------------------------- +type record MBMS_ProtoCfgOpt { + IEI8_Type iei, // '00110101'B (35hex) @sic R5s110420 sic@ + Type4Length_Type iel, // @sic R5s110420 sic@ + MBMS_ProtoIdContents protocolIdContents // information related to additional external protocols +}; + +// ============================================================================= +// Structured Type Definition +// MS radio access capability +// 3GPP 24.008 / 10.5.5.12a +// ----------------------------------------------------------------------------- +type record MSRadioAccessCap { + Type4Length_Type iel optional, + octetstring msRadioAccessCapValue length(0..50) // MS radio access capability value (CSN.1 coding) +}; + +// ============================================================================= +// Structured Type Definition +// Mobile Station Classmark 1 +// 3G TS 24.008 cl. 10.5.1.5 +// ----------------------------------------------------------------------------- +type record MS_Clsmk1 { + B1_Type spare1, // Spare bit + B2_Type revLvl, // Revision Level + B1_Type eSIND, // Early Sending Indication + B1_Type a5_1, // Algorithm A5/1 supported + B3_Type rFPwrCap // RF Power Capability +}; + +// ============================================================================= +// Structured Type Definition +// Network Feature Support +// 3G TS 24.008 cl. 10.5.5.23 +// ----------------------------------------------------------------------------- +type record NtwFeatureSupport { + IEI4_Type iei, // '1011'B (B- hex) + B1_Type lCS_MOLR, + B1_Type mBMS, + B1_Type imsVoPS, // @sic R5s100135 sic@ + B1_Type emcbs // @sic R5s110176 Baseline Moving sic@ +}; + +// ============================================================================= +// Structured Type Definition +// PDP_ContextStatus +// 3G TS 24.008 cl. 10.5.7.1 +// ----------------------------------------------------------------------------- +type record PDP_ContextStatus { + IEI8_Type iei, // '00110010'B @sic R5s110420 sic@ + Type4Length_Type iel, // @sic R5s110420 sic@ + B16_Type nSAPI +}; + +// ============================================================================= +// Structured Type Definition +// PS LCS Capability +// 3GPP 24.008 / 10.5.5.22 +// ----------------------------------------------------------------------------- +type record PS_LCS_Capability { + IEI8_Type iei, // '00110011'B (33 hex) @sic R5s110420 sic@ + Type4Length_Type iel, // '01'O @sic R5s110420 sic@ + B2_Type spare, + B1_Type aPC, + B1_Type oTD_A, + B1_Type oTD_B, + B1_Type gPS_A, + B1_Type gPS_B, + B1_Type gPS_C +}; + +// ============================================================================= +// Structured Type Definition +// Requested MS Information +// 3G TS 24.008 cl. 10.5.5.25 +// ----------------------------------------------------------------------------- +type record RequestedMS_Info { + IEI4_Type iei, // '1010'B (A- hex) + B1_Type l_RAT, // Inter RAT information container IE requested + B1_Type l_RAT2, // E-UTRAN Inter RAT information container IE requested + B2_Type spare2 +}; + +// ============================================================================= +// Structured Type Definition +// Ref 24.008, 10.5.6.6 +// ----------------------------------------------------------------------------- +type record SM_Cause { + CauseValue causeValue +}; + +// ============================================================================= +// Structured Type Definition +// Ref 24.008, 10.5.6.6A +// ----------------------------------------------------------------------------- +type record SM_Cause2 { + IEI8_Type iei, // @sic R5s110420 sic@ + Type4Length_Type iel, // @sic R5s110420 sic@ + CauseValue causeValue +}; + + +// ============================================================================= +// Structured Type Definition +// Service type +// 3GPP 24.008 / 10.5.5.20 +// ----------------------------------------------------------------------------- +type record ServiceType { + B1_Type spare1, + B3_Type serviceType // type +}; + +// ============================================================================= +// Structured Type Definition +// Ref 24.008, clause 10.5.6.10 +// ----------------------------------------------------------------------------- +type record TearDwnInd { + IEI4_Type iei, // '1001'B (9 hex) + B3_Type spare, + B1_Type tdiflag // TDI Flag +}; + +// ============================================================================= +// Structured Type Definition +// Update result +// 3GPP 24.008 / 10.5.5.18 +// ----------------------------------------------------------------------------- +type record UpdateType { + B1_Type followOnReq, // Follow-on request + B3_Type updateValue // Update type value +}; + +// ============================================================================= +// Structured Type Definition +// Allowed actions +// 3G TS 24.008 cl. 10.5.4.27 +// ----------------------------------------------------------------------------- +type record AllowedAction { + IEI8_Type iei, // '01111011'B @sic R5s110420 sic@ + Type4Length_Type iel, // Type4Length_Type @sic R5s110420 sic@ + B1_Type cCBS_Act, // CCBS Activation + B7_Type spare7 // 7 spare bits +}; + +// ============================================================================= +// Structured Type Definition +// Bearer capability (CC information element) +// 3G TS 24.008 cl. 10.5.4.5 +// ----------------------------------------------------------------------------- +type record Bcap { + IEI8_Type iei, // @sic R5s110420 sic@ + Type4Length_Type iel, // @sic R5s110420 sic@ + B1_Type extBit3, // extension bit + B2_Type radioChRequirement, // radio channel requirements ue->n, GSM, + // octet 3 + B1_Type codingStd, // coding standard, '0'B, octet 3 + B1_Type transferMode, // transfer mode octet 3 + B3_Type itc, // information transfer capability, octet 3 + Bcap3aEtc bcap3aEtc1 optional, // octet 3a etc no.1 + Bcap3aEtc bcap3aEtc2 optional, // octet 3a etc no.2 + Bcap3aEtc bcap3aEtc3 optional, // octet 3a etc no.3 + Bcap3aEtc bcap3aEtc4 optional, // octet 3a etc no.4 + Bcap3aEtc bcap3aEtc5 optional, // octet 3a etc no.5 + Bcap3aEtc bcap3aEtc6 optional, // octet 3a etc no.6 + B1_Type extBit4 optional, // extension bit, octet 4 + B1_Type compress optional, // compression, ue->network, octet 4 + B2_Type structure optional, // structure, '0, 3', octet 4 + B1_Type duplexMode optional, // duplex mode, '1'B, octet 4 + B1_Type cfg optional, // configuration, '0'B, octet 4 + B1_Type nirr optional, // negotiation of intermediate rate requested, GSM, octet 4 + B1_Type establish optional, // establishment, '0'B, octet 4 + B1_Type extBit5 optional, // extension bit, octet 5 + B2_Type accessId optional, // access identify, '00'B, octet 5 + B2_Type rateAdapt optional, // rate adaption, octet 5 + B3_Type sacp optional, // signalling access protocol, '1 - 6', octet 5 + B1_Type extBit5a optional, // extension bit, octet 5a + B2_Type OherItc optional, // Other ITC , octet 5a + B2_Type OtherRateAdapt optional, // Other Rate adaptation, octet5a + B3_Type spare3 optional, // spare bits - 3 bits + B1_Type extBit5b optional, // extension bit, '1'B, octet 5b + B1_Type rateAdaptHeader optional, // rate adaptation header, octet 5b + B1_Type multiFrame optional, // Multi frame, octet 5b + B1_Type mode optional, // Mode of operation, octet 5b + B1_Type logLinkId optional, // logical link identifier negotiation, octet 5b + B1_Type assignorAssignee optional, // assignor/assignee, octet 5b + B1_Type inBandOutBand optional, // in band/out band negotiation, octet 5b + B1_Type spare1 optional, // sapre bit - 1 bit + B1_Type extBit6 optional, // extension bit, octet 6 + B2_Type layer1Id optional, // Layter 1 identity, '01'B, octet 6 + B4_Type userInfoLayer1 optional, // user information Layer 1 protocol, '0000'B, octet 6 + B1_Type syncAsync optional, // synchronous bit, octet 6 + B1_Type extBit6a optional, // extension bit, octet 6a + B1_Type numStopBits optional, // number of stop bits, octet 6a + B1_Type negotiation optional, // negotiation bit, '0'B, octet 6a + B1_Type numDataBits optional, // number of data bits, octet 6a + B4_Type userRate optional, // user rate, GSM, octet 6a + B1_Type extBit6b optional, // extension bit, octet 6b + B2_Type intermRate optional, // intermediate rate, octet 6b + B1_Type nicTx optional, // network independent clock on transmission, GSM, octet 6b + B1_Type nicRx optional, // network independent clock on reception, GSM, octet 6b + B3_Type parity optional, // parity information, octet 6b + B1_Type extBit6c optional, // extension bit, octet 6c + B2_Type connectElem optional, // connection element, octet 6c + B5_Type modemType optional, // modem type, octet 6c + B1_Type extBit6d optional, // extension bit, octet 6d + B2_Type OtherModemType optional, // Other Modem type, octet 6d + B5_Type FixedNtwUserRate optional, // Fixed Network user rate, octet 6d + B1_Type extBit6e optional, // extension bit, octet 6e + B4_Type acceptChCoding optional, // acceptable channel coding, octet 6e + B3_Type maxNumTrafficCh optional, // maximum number of traffic channel, octet 6e + B1_Type extBit6f optional, // extension bit, octet 6f + B3_Type uIMI optional, // User initiated modification indication, octet 6f + B4_Type wAIUR optional, // wanted air interface user rate, octet 6f + B1_Type extBit6g optional, // extension bit, octet 6g + B3_Type acceptChCodingExt optional, // acceptable channel coding extended, octet 6g + B2_Type asymInd optional, // asymmetry indication, octet 6g + B2_Type spare2 optional, // spare 2 bits , octet 6g + B1_Type extBit7 optional, // extension bit, octet 7 + B2_Type layer2id optional, // L2 identity, octet 7 + B5_Type userInfoLayer2 optional // user information L2 protocol, octet 7 +}; + +// ============================================================================= +// Structured Type Definition +// Speech Versions preferences as supported by the EFR mobile - see 3G TS 24.008 cl. 10.5.4.5/octet 3a etc/"speech version indication" +// ----------------------------------------------------------------------------- +type record Bcap3aEtc { + B1_Type extBit, // extension bit ('0'B) + B1_Type coding, // Octet a1, Coding ('0'B) + B2_Type spare2, // Octet a1, Spare bits ('00'B) + B4_Type speechVersion // Octet a1, Speech version indication +}; + +// ============================================================================= +// Structured Type Definition +// Call Control Capabilities +// 3G TS 24.008 cl. 10.5.4.5a +// ----------------------------------------------------------------------------- +type record CC_Capabilities { + IEI8_Type iei, // '00010101'B @sic R5s110420 sic@ + Type4Length_Type iel, // length + B4_Type maxNumBearer, // maximum number o fudpported bearer + B1_Type mcat, // MCAT + B1_Type enicm, // ENICM + B1_Type pcp, // PCP + B1_Type dtmf, // indication of supporting DTMF + B4_Type spare4, // spare bits + B4_Type maxNumSpeechBearer // maximum number of speech bearers +}; + +// ============================================================================= +// Structured Type Definition +// Called party BCD number (CC information element) +// 3G TS 24.008 cl. 10.5.4.7 +// ----------------------------------------------------------------------------- +type record CDPN { + IEI8_Type iei, // '01011110'B @sic R5s110420 sic@ + Type4Length_Type iel, // length + TypeOfNumPlan typeOfNumPlan, // type of number and numbering plan identification + octetstring digits length(0..40) optional // BCD numbers +}; + +// ============================================================================= +// Structured Type Definition +// Called party subaddress (CC information element) +// 3G TS cl. 10.5.4.8 +// ----------------------------------------------------------------------------- +type record CDPS { + IEI8_Type iei, // '01101101'B @sic R5s110420 sic@ + Type4Length_Type iel, // length + Subadrs subadrs // Subaddress +}; + +// ============================================================================= +// Structured Type Definition +// Calling party subaddress (CC information element) +// 3G TS 24.008 cl. 10.5.4.10 +// ----------------------------------------------------------------------------- +type record CGPS { + IEI8_Type iei optional, // '01011101'B + Type4Length_Type iel optional, // length + Subadrs subadrs // Subaddress +}; + +// ============================================================================= +// Structured Type Definition +// Cause (CC information element) +// 3G TS 24.008 cl. 10.5.4.11 +// ----------------------------------------------------------------------------- +type record Cau { + IEI8_Type iei optional, // information element identifier '00001000'B + Type4Length_Type iel, // length @sic R5s110420 sic@ + B1_Type extBit3, // extension bit, octet 3 + B2_Type codingStd, // coding standard + B1_Type spare1, // spare bit + B4_Type location, // location + B1_Type extBit3a optional, // extension bit, '1'B, octet 3a + B7_Type recommend optional, // recommendation + B1_Type extBit4, // extension bit, '1'B + B7_Type cauValue, // cause value + octetstring diagnostic length(0..27) optional// Diagnostics +}; + +// ============================================================================= +// Structured Type Definition +// Connected number (CC information element) +// 3G TS 24.008 cl. 10.5.4.13 +// ----------------------------------------------------------------------------- +type record ConnectedNum { + IEI8_Type iei, // '01001100'B @sic R5s110420 sic@ + Type4Length_Type iel, // length @sic R5s110420 sic@ + TypeOfNumPlan typeOfNumPlan, // type of number and numbering plan identification + PresentIndScreeningInd presentIndScreeningInd, // Presentation indicator & screening indicator + octetstring digits length(0..10) // numbers +}; + +// ============================================================================= +// Structured Type Definition +// Connected subaddress +// 3G TS 24.008 cl. 10.5.4.14 +// ----------------------------------------------------------------------------- +type record ConnectedSubAdrs { + IEI8_Type iei, // '01001101'B @sic R5s110420 sic@ + Type4Length_Type iel, // length @sic R5s110420 sic@ + Subadrs subadrs // Subaddress +}; + +// ============================================================================= +// Structured Type Definition +// High layer compatibility (CC information element) +// 3G TS 24.008 cl. 10.5.4.16, ITU Q.931 +// ----------------------------------------------------------------------------- +type record HLC { + IEI8_Type iei, // '01111101'B @sic R5s110420 sic@ + Type4Length_Type iel, // length @sic R5s110420 sic@ + B1_Type extBit3 optional, // extension bit ('1'B) + B2_Type codingStd optional, // coding standard + B3_Type interpretation optional, // interpretation + B2_Type presentModeProtocolProfile optional, // presentation method of protocol profile + B1_Type extBit4 optional, // extension bit, octet 4 + B7_Type hlcId optional, // high layer characteristics identification + B1_Type extBit4a optional, // extension bit, '1'B, octet 4a + B7_Type exteHlcId optional // extended high layer characteristics identification +}; + +// ============================================================================= +// Structured Type Definition +// Low layer compatibility (CC information element) +// 3G TS 24.008 cl. 10.5.4.18 and ETS DE/SPS-5034-1 (update of ETS 300 102-1) +// ----------------------------------------------------------------------------- +type record LLC { + IEI8_Type iei, // '01111100'B @sic R5s110420 sic@ + Type4Length_Type iel, // length @sic R5s110420 sic@ + B1_Type extBit3 optional, // extension bit + B2_Type codingStd optional, // coding standard, octet 3 + B5_Type itc optional, // information transfer capability, octet 3 + B1_Type extBit3a optional, // extension bit, octet 3a + B1_Type negoInd optional, // negotiation indicator, octet 3a + B6_Type spare6 optional, // 6 spare bits + B1_Type extBit4 optional, // extension bit, octet 4 + B2_Type transferMode optional, // transfer mode + B5_Type infoTransferRate optional, // information transfer rate, octet 4 + B1_Type extBit4_1 optional, // extension bit, octet 4.1 + B7_Type rateMultiplier optional, // rate multiplier, octet 4.1 + B1_Type extBit5 optional, // extension bit, octet 5 + B2_Type layer1Id optional, // Layter 1 identity, '01'B, octet 5 + B5_Type userInfoLayer1 optional, // user information Layer 1 protocol, '0000'B, octet 5 + B1_Type extBit5a optional, // extension bit, octet 5a + B1_Type syncAsync optional, // synchronous bit, octet 5a + B1_Type negotiation optional, // negotiation bit, octet 5a + B5_Type userRate optional, // user rate, octet 5a + B1_Type extBit5b1 optional, // extension bit, octet 5B1_Type + B2_Type intermRate optional, // intermediate rate, octet 5B1_Type + B1_Type nicTx optional, // network independent clock on transmission, octet 5B1_Type + B1_Type nicRx optional, // network independent clock on reception, octet 5B1_Type + B1_Type flowCtrlTx optional, // flow control on transmission, octet 5B1_Type + B1_Type flowCtrlRx optional, // flow control on reception, octet 5B1_Type + B1_Type spare1 optional, // 1 spare bit, '0'B, octet 5B1_Type + B1_Type extBit5b2 optional, // extension bit, octet 5b2 + B1_Type rateAdaptHeader optional, // rate adaptation header, octet 5b2 + B1_Type multiFrame optional, // Multi frame, octet 5b2 + B1_Type mode optional, // Mode of operation, octet 5b2 + B1_Type logLinkId optional, // logical link identifier negotiation, octet 5b2 + B1_Type assignorAssignee optional, // assignor/assignee, octet 5b2 + B1_Type inBandOutBand optional, // in band/out band negotiation, octet 5b2 + B1_Type spare1_5b2 optional, // sapre bit - 1 bit, octet 5b2 + B1_Type extBit5c optional, // extension bit, octet 5c + B2_Type numStopBits optional, // number of stop bits, octet 5c + B2_Type numDataBits optional, // number of data bits, octet 5c + B3_Type parity optional, // parity, octet 5c + B1_Type extBit5d optional, // extension bit, octet 5d + B1_Type duplexMode optional, // duplex mode, octet 5d + B6_Type modemType optional, // modem type, octet 5d + B1_Type extBit6 optional, // extension bit, octet 6 + B2_Type layer2id optional, // L2 identity, octet 6 + B5_Type userInfoLayer2 optional, // user information L2 protocol, octet 6 + B1_Type extBit6a1 optional, // extension bit, octet 6a1 + B2_Type modeLayer2 optional, // mode, octet 6a1 + B3_Type spare3 optional, // spare bits , '000'B, octet 6a1 + B2_Type q933 optional, // Q.933 use, octet 6a1 + B1_Type extBit6a2 optional, // extension bit, octet 6a2 + B7_Type userSpecifLayer2 optional, // user specified layer 2 protocol information, octet 6a2 + B1_Type extBit6b optional, // extension bit, octet 6b + B7_Type windowSize optional, // window size, octet 6b + B1_Type extBit7 optional, // extension bit, octet 7 + B2_Type layer3id optional, // L3 identity, octet 7 + B5_Type userInfoLayer3 optional, // user information L3 protocol, octet 7 + B1_Type extBit7a1 optional, // extension bit, octet 7a2 + B7_Type OptionUserSpecifLayer3 optional, // user specified layer 3 protocol information, octet 7a2 + B1_Type extBit7a2 optional, // extension bit, '1'B, octet 7a2 + B2_Type modeLayer3 optional, // mode, octet 7a2 + B5_Type spare5 optional, // spare bits , '00000'B, octet 7a2 + B1_Type extb7b1 optional, // extension bit, octet 7b + B3_Type spare3_7b1 optional, // spare bits , '000'B, octet 7b + B4_Type defaultPacketSize optional, // default packet size, octet 7b + B1_Type extBit7c optional, // extension bit, '1'B, octet 7c + B7_Type packetWindowSize optional, // packet window size, octet 7bc + B1_Type extBit7a3 optional, // extension bit, octet 7a3 + B3_Type spare3_7a3 optional, // 3 spare bits + B4_Type addLayer3ProtocolInfo optional, // additional layer 3 protocol information (most significant bits), octet 7a3 + B1_Type extBit7b2 optional, // extension bit, octet 7a4 + B3_Type spare3_7b2 optional, // 3 spare bits + B4_Type addLayer3ProtocolInfoL optional // additional layer 3 protocol information (least significant bits), octet 7a4 +}; + +// ============================================================================= +// Structured Type Definition +// 3G TS 24.008 cl. 10.5.5.30 +// ----------------------------------------------------------------------------- +type record LocAreaId2{ /* @sic R5s110178 Baseline Moving sic@*/ + IEI8_Type iei, + Type4Length_Type iel, + NAS_PlmnId plmn, // MCC + MNC 3 digits each + NAS_Lac lac // LAC +}; + +// ============================================================================= +// Structured Type Definition +// MM timer +// 3GPP 24.008 / 10.5.3.16 +// ----------------------------------------------------------------------------- +type record MM_Timer { /* 24.008 cl. 10.5.3.16 */ + IEI8_Type iei, + Type4Length_Type iel, + O1_Type timerValue +}; + +type record MS_RadioAccessCap_LV { + Type4Length_Type iel, + MS_RadioAccessCap_V valuePart // @sic R5s110176 Baseline Moving sic@ +}; + +type record MS_RadioAccessCap_V { // @sic R5s110176 Baseline Moving sic@ + record of MS_RadioAccessCapList listofValues, + bitstring sparebits optional +}; + +type record MS_RadioAccessCapList { + MS_RadioAccessCap raCapability, + B1_Type repeatCap // this structure repeats itself, so need to indicate whether to go round again @sic R5s100135 sic@ +}; + +type record MS_RadioAccessCap { + B4_Type accessTechType, + SingleAccessCap singleAccess optional, // only present if accessTechType != 1111 + B7_Type addLength optional, // only present if accessTechType = 1111 + AddMS_RadioAccessCapList addAccess optional, // only present if accessTechType = 1111 + bitstring sparebits optional +}; + +type record SingleAccessCap { // 24.008, 10.5.5.12a + B7_Type accLength, + B3_Type rfPwrCap, + B1_Type mask1, + B1_Type a5_1 optional, // not present if mask1 = 0 + B1_Type a5_2 optional, // not present if mask1 = 0 + B1_Type a5_3 optional, // not present if mask1 = 0 + B1_Type a5_4 optional, // not present if mask1 = 0 + B1_Type a5_5 optional, // not present if mask1 = 0 + B1_Type a5_6 optional, // not present if mask1 = 0 + B1_Type a5_7 optional, // not present if mask1 = 0 + B1_Type esInd, + B1_Type pS, + B1_Type vGCS, + B1_Type vBS, + B1_Type mask2, + MultiSlotCap multiSlotCap optional, // not present if mask2 = 0 + B1_Type mask3, + B2_Type psk8PwrCap optional, // not present if mask3 = 0 + B1_Type compactIFMeas, + B1_Type revLev, + B1_Type fddRATCap, + B1_Type tdd384RATCap, + B1_Type cdma2000RATCap, + B1_Type tdd128RATCap optional, // @sic R5s130350 sic@ + B1_Type gERANFeatPkge1 optional, // @sic R5s130350 sic@ + B1_Type mask4 optional, // @sic R5s130350 sic@ + B2_Type extDTMGPRSMultiSlotClass optional, // not present if mask4 = 0 + B2_Type extDTMEGPRSMultiSlotClass optional, // not present if mask4 = 0 + B1_Type modulationBasedMultiSlot optional, // @sic R5s130350 sic@ + B1_Type mask5 optional, // @sic R5s130350 sic@ + B2_Type highMultislotCap optional, // not present if mask5 = 0 + B1_Type mask6 optional, // @sic R5s130350 sic@ + B4_Type gERANIuModeCapLength optional, // not present if mask6 = 0 + B1_Type fLOIuCap optional, // not present if mask6 = 0 + B2_Type gmskMultislotPwrProfile optional, // @sic R5s130350 sic@ + B2_Type psk8MultislotPwrProfile optional, // @sic R5s130350 sic@ + B1_Type multiTBFCap optional, // @sic R5s130350 sic@ + B2_Type dlAdvRxPerformance optional, // @sic R5s130350 sic@ + B1_Type extRLCMACCtrlCap optional, // @sic R5s130350 sic@ + B1_Type dTMEnhCap optional, // @sic R5s130350 sic@ + B1_Type mask7 optional, // @sic R5s130350 sic@ + B3_Type dTMGPRSHighClass optional, // not present if mask7 = 0 + B1_Type mask8 optional, // not present if mask7 = 0 + B3_Type dTMEGPRSHighClass optional, // not present if mask7 or mask8 = 0 + B1_Type pSHOCap optional, // @sic R5s130350 sic@ + B1_Type dTMHOCap optional, // @sic R5s130350 sic@ + B1_Type mask9 optional, // @sic R5s130350 sic@ + B3_Type multislotCapDlDualCarrier optional, // not present if mask9 = 0 + B1_Type dlDualCarrierDTMCap optional, // not present if mask9 = 0 + B1_Type flexTimeslotAssign optional, // @sic R5s130350 sic@ + B1_Type gANPSHOCap optional, // @sic R5s130350 sic@ + B1_Type rLCNonPersistentMode optional, // @sic R5s130350 sic@ + B1_Type reducedLatencyCap optional, // @sic R5s130350 sic@ + B2_Type ulEGPRS2 optional, // @sic R5s130350 sic@ + B2_Type dlEGPRS2 optional, // @sic R5s130350 sic@ + B1_Type eutraFDD optional, // @sic R5s130350 sic@ + B1_Type eutraTDD optional, // @sic R5s130350 sic@ + B2_Type geran2EutraSupport optional, // @sic R5s130350,R5s100135 sic@ + B1_Type priorityBasedReselection optional, // @sic R5s130350 sic@ + B1_Type mask10 optional, // @sic R5s110176 Baseline Moving, not present for Rel-8 R5s110242 sic@ + B4_Type altEFTAMultislotClass optional, // not present if mask10 = 0 + B3_Type eftaMultislotCapRedforDDC optional, // not present if mask10 = 0 + B1_Type upperLayerPDUStartCapforRLCUMInd optional, // @sic R5s110176 Baseline Moving not present for Rel-8 sic@ + B1_Type emstCap optional, // @sic R5s110176 Baseline Moving not present for Rel-8 sic@ + B1_Type mttiCap optional, // @sic R5s110176 Baseline Moving not present for Rel-8 sic@ + B1_Type utraCSGCellsReporting optional, // @sic R5s110176 Baseline Moving not present for Rel-8 sic@ + B1_Type eutraCSGCellsReporting optional, // @sic R5s110176 Baseline Moving not present for Rel-8 sic@ + B1_Type dtrCap optional, // @sic R5s120178 Baseline Moving sic@ + B1_Type emsrCap optional, // @sic R5s120178 Baseline Moving sic@ + B1_Type fastDLFreqSwitchingCap optional, // @sic R5s120178 Baseline Moving sic@ + B2_Type tighterCap optional, // @sic R5s120178 Baseline Moving sic@ + B1_Type fanrCap optional, // @sic R5s130195 Baseline Moving sic@ + B1_Type ipaCap optional // @sic R5s130195 Baseline Moving sic@ +}; + +type record MultiSlotCap { + B1_Type mask1, + B5_Type hSCSDClass optional, // not present if mask1 = 0 + B1_Type mask2, + B5_Type gPRSClass optional, // not present if mask2 = 0 + B1_Type gPRSExtDynAllocCap optional, // not present if mask2 = 0 + B1_Type mask3, + B4_Type sMSValue optional, // not present if mask3 = 0 + B4_Type sMValue optional, // not present if mask3 = 0 + B1_Type mask4, + B5_Type eCSDClass optional, // not present if mask4 = 0 + B1_Type mask5, + B5_Type eGPRSClass optional, // not present if mask5 = 0 + B1_Type eGPRSExtDynAllocCap optional, // not present if mask5 = 0 + B1_Type mask6, + B2_Type dTMGPRSClass optional, // not present if mask6 = 0 + B1_Type singleSlotDTM optional, // not present if mask6 = 0 + B1_Type mask7 optional, // not present if mask6 = 0 + B2_Type dtmEGPRSClass optional // not present if mask6 or mask7 = 0 +}; + +type record of AddMS_RadioAccessCap AddMS_RadioAccessCapList; + +type record AddMS_RadioAccessCap { + B1_Type prefix, + B4_Type addTechType optional, // not present if prefix = 0 + B3_Type powerClassGMSK optional, // not present if prefix = 0 + B2_Type powerClass8PSK optional // not present if prefix = 0 +}; + +// ============================================================================= +// Structured Type Definition +// 24.007, clause 10.5.6.2 +// ----------------------------------------------------------------------------- +type record NSAPI { + B4_Type spare, + B4_Type nSAPI_Value // NSAPI value +}; + + +// ============================================================================= +// Structured Type Definition +// Network Call Control Capabilities +// 3G TS 24.008 cl. 10.5.4.29 +// ----------------------------------------------------------------------------- +type record NtwCCCapabilities { + IEI8_Type iei, // '00101111'B @sic R5s1100420 sic@ + Type4Length_Type iel, // length @sic R5s110420 sic@ + B7_Type spare7, // spare + B1_Type mCS // MCS +}; + +// ============================================================================= +// Structured Type Definition +// Presentation indicator & screening indicator +// 3G TS 24.008 cl. 10.5.4.9, 10.5.4.13 +// ----------------------------------------------------------------------------- +type record PresentIndScreeningInd { + B1_Type extBit, // extension bit + B2_Type presentInd, // presentation indicator + B3_Type spare3, // 3 spare bits + B2_Type screeningInd // screening indicator +}; + +// ============================================================================= +// Structured Type Definition +// 24.008, clause 10.5.6.4 +// ----------------------------------------------------------------------------- +type record PktDataProtoAddr { + IEI8_Type iei optional, // '00101011'B (2Bhex)) + Type4Length_Type iel, + B4_Type spare, + B4_Type pDP_TypeOrg, // PDP type organisation + PDP_TypeNo pDP_TypeNo, // PDP type number + AddressInfo addrInfo optional // Address Information, @sic R5-110667 sic@ +}; + +// ============================================================================= +// Structured Type Definition +// Priority Level +// 3G TS 24.008 cl. 10.5.1.11 +// ----------------------------------------------------------------------------- +type record PriorityLvl { + IEI4_Type iei optional, // '1000'B + B1_Type spare1, + B3_Type callPrio // Call Priority +}; + +// ============================================================================= +// Structured Type Definition +// Progress indicator information element +// 3G TS 24.008 cl. 10.5.4.21 +// ----------------------------------------------------------------------------- +type record ProgInd { + IEI8_Type iei, // '00011110'B @sic R5s110420 sic@ + Type4Length_Type iel, // length @sic R5s110420 sic@ + B1_Type extBit3, // extension bit + B2_Type codingStd, // coding standard + B1_Type spare, // spare bit + B4_Type location, // location + B1_Type extBit4, // extension bit + B7_Type progressDescr // progress description +}; + +// ============================================================================= +// Structured Type Definition +// 3G TS 24.008 cl. 10.5.5.29 +// ----------------------------------------------------------------------------- +type record PTMSI_Type{ /* @sic R5s110178 Baseline Moving sic@*/ + IEI4_Type iei, + B3_Type spare, + B1_Type ptmsiType +}; + +// ============================================================================= +// Structured Type Definition +// Receive N-PDU Numbers list +// 3GPP 24.008 / 10.5.5.11 +// ----------------------------------------------------------------------------- +type record ReceiveN_PDU_Numbers { + IEI8_Type iei, // '00100110'B (hex 26) @sic R5s110420 sic@ + Type4Length_Type iel, // @sic R5s110420 sic@ + octetstring numberList length(0..17) // MS network capability value (CSN.1 coding) +}; + +// ============================================================================= +// Structured Type Definition +// Redirecting party BCD number +// 3G TS 24.008 cl. 10.5.4.21b +// ----------------------------------------------------------------------------- +type record RedirectingPN { + IEI8_Type iei optional, // '01110100'B (74hex) + Type4Length_Type iel optional, // length + TypeOfNumPlan typeOfNumPlan, // type of number and numbering plan identification + PresentIndScreeningInd presentIndScreeningInd, // Presentation indicator & screening indicator + octetstring digits length(0..15) // numbers +}; + +// ============================================================================= +// Structured Type Definition +// redirecting party subaddress +// 3G TS 24.008 cl. 10.5.4.21c +// ----------------------------------------------------------------------------- +type record RedirectingPS { + IEI8_Type iei, // '01110101'B (75hex) @sic R5s110420 sic@ + Type4Length_Type iel, // length @sic R5s110420 sic@ + Subadrs subadrs // Subaddress +}; + +// ============================================================================= +// Structured Type Definition +// Repeat indicator +// 3G TS 24.008 cl. 10.5.4.22 +// ----------------------------------------------------------------------------- +type record RepeatInd { + IEI4_Type iei optional, + B4_Type repeatInd +}; + +// ============================================================================= +// Structured Type Definition +// Request Type +// 3G TS 24.008 cl. 10.5.6.17 +// ----------------------------------------------------------------------------- +type record RequestType { + IEI4_Type iei optional, + B1_Type spare, + B3_Type requestTypeValue +}; + +// ============================================================================= +// Structured Type Definition +// Routing Area Identification 2 +// 3G TS 24.008 cl. 10.5.5.15a +// ----------------------------------------------------------------------------- +type record RoutingAreaId2 { + IEI8_Type iei, // @sic R5s110420 sic@ + Type4Length_Type iel, // @sic R5s110420 sic@ + O6_Type routingAreaId2 +}; + +// ============================================================================= +// Structured Type Definition +// Service Category +// 3GPP 24.008 / 10.5.4.33 +// ----------------------------------------------------------------------------- +type record ServCategory { + IEI8_Type iei, // '00101110'B (2E hex) @sic R5s110420 sic@ + Type4Length_Type iel, // '01'O @sic R5s110420 sic@ + EmergServCat emergServCat // Emergency Service Category +}; + +// ============================================================================= +// Structured Type Definition +// Signal information element +// 3G TS 24.008 cl. 10.5.4.23 +// ----------------------------------------------------------------------------- +type record Signal { + IEI8_Type iei optional, // information element identifier '00110100'B + B8_Type signalValue // Value +}; + +// ============================================================================= +// Structured Type Definition +// stream identifier +// 3G TS 24.008 cl. 10.5.4.28 +// ----------------------------------------------------------------------------- +type record StreamId { + IEI8_Type iei, // '00101101'B @sic R5s110420 sic@ + Type4Length_Type iel, // length @sic R5s110420 sic@ + B8_Type streamIndValue // stream identifier value +}; + +// ============================================================================= +// Structured Type Definition +// Subaddress +// 3G TS 24.008 cl. 10.5.4.8, 10.5.4.10, 10.5.4.14 +// ----------------------------------------------------------------------------- +type record Subadrs { + B1_Type extBit, // extension bit + B3_Type typrOfSubadrs, // Type of subaddress + B1_Type oddEven, // odd/even indicator + B3_Type spare3, // 3 spare bits + octetstring subadrsInfo length(0..20) optional// subaddress information +}; + +// ============================================================================= +// Structured Type Definition +// Type of number and numbering plan +// 3G TS 24.008 cl.10.5.4.7, 10.5.4.9, 10.5.4.13 +// ----------------------------------------------------------------------------- +type record TypeOfNumPlan { + B1_Type extBit, // extension bit + B3_Type typeOfNum, // Type of number + B4_Type numbPlanId // Numbering plan id. +}; + +// ============================================================================= +// Structured Type Definition +// Update result +// 3GPP 24.008 / 10.5.5.17 +// ----------------------------------------------------------------------------- +type record UpdateResult { + B1_Type fOP, // Follow-on Proceed + B3_Type ttcn_value // Update result value +}; + +// ============================================================================= +// Structured Type Definition +// Uplink Data Status +// 3GPP 24.008 / 10.5.7.7 +// ----------------------------------------------------------------------------- +type record UplinkDataStatus { + IEI8_Type iei, // @sic R5s110420 sic@ + Type4Length_Type iel, // length @sic R5s110420 sic@ + O2_Type nsapiUplinkStatus +}; + +// ============================================================================= +// Structured Type Definition +// User-user +// 3G TS 24.008 cl. 10.5.4.25 +// In SETUP, ALERTING, CONNECT, DISCONNECT, RELEASE and RELEASE COMPLETE messages the userUserInfo length is of 0 - 32 bytes. +// In USER INFORMATION messages the userUserInfo length is of 1 - 128. +// ----------------------------------------------------------------------------- +type record UserUser { + IEI8_Type iei, // 01111110'B @sic R5s110420 sic@ + Type4Length_Type iel, // length @sic R5s110420 sic@ + B8_Type userUserProtocolDiscr, // user-user protocol discriminator + octetstring userUserInfo length(1..128) optional // user user information +}; + +// ============================================================================= +// Structured Type Definition +// Auxiliary States +// 3GPP 24.008 / 10.5.4.4 +// ----------------------------------------------------------------------------- +type record AuxiliaryStates { + IEI8_Type iei optional, + Type4Length_Type iel, // length + B1_Type ext, + B3_Type spare, + B2_Type holdAuxState, + B2_Type mptyAuxState +}; + +// ============================================================================= +// Structured Type Definition +// Call State +// 3GPP 24.008 / 10.5.4.6 +// ----------------------------------------------------------------------------- +type record Call_State { + IEI8_Type iei optional, + B2_Type codingStandard, + B6_Type callState +}; + +// ============================================================================= +// PDU Type Definition +// 3GPP 24.008 clause 9.4.2 (GMM message) +// ----------------------------------------------------------------------------- +type record ATTACHACCEPT { + SkipIndicator skipIndicator, // Skip Indicator BITSTRING [4] + ProtocolDiscriminator gMMProtocolDiscriminator, // GMM Protocol Discriminator BITSTRING [4] + MessageType msgType, // Message Type BITSTRING [8] + ForceToStandby forceToStandby, // 1/2 octet + AttachResult attachResult, // 1/2 octet + GPRS_Timer periodicRAupdateTimer, // 1 octet + RadioPriority radioPrioTOM8, // 1/2 octet + RadioPriority radioPrioSMS, // 1/2 octet + RoutingAreaId rai, // Routing Area Identification 6 octets + PTMSI_Signature ptmsiSignature optional,// O 4 octets, TV IEI = 19 + GPRS_Timer negReadyTimer optional, // O 2 octets, TV IEI = 17 + MobileIdentity allocatedPTMSI optional,// O 7 octets, TLV IEI = 18 + MobileIdentity msIdentity optional, // O 7-10 octets, TLV IEI = 23 + GMM_Cause gmmCause optional, // O 2 octets, TV IEI = 25 + GPRS_Timer2 t3302Value optional, // O 3 octets, TLV IEI = 2A + CellNotification cellNotification optional,// O 1 octet, T IEI = 8C + PLMN_List equivalentPLMN optional,// O 5-17 octets, TLV IEI = 4A + NtwFeatureSupport ntwFeatureSupport optional, // O 1 octet, TV IEI = B- + EmergNumList emergNumList optional, // O 5-50 octets TLV IEI = 34 + RequestedMS_Info requestedMS_Info optional, // O 1 octet TV IEI = A- + GPRS_Timer2 t3319Value optional, // O 3 octets TLV IEI = 37 + GPRS_Timer2 t3323Value optional, // O 3 octets TLV IEI = 38 + GPRS_Timer3 t3312ExtdValue optional, /* cl. 10.5.7.4a O TLV 3 IEI=0x39 @sic R5s120178 Baseline Moving sic@*/ + AddNtwFeatureSupport addNtwFeatureSupport optional // O 3 octet, TLV IEI = 66 @sic R5s130195 Baseline Moving sic@ +}; + +// ============================================================================= +// PDU Type Definition +// 3GPP 24.008 clause 9.4.3 (GMM message) +// ----------------------------------------------------------------------------- +type record ATTACHCOMPLETE { + SkipIndicator skipIndicator, // Skip Indicator BITSTRING [4] + ProtocolDiscriminator gMMProtocolDiscriminator, // MM Protocol Discriminator BITSTRING [4] + MessageType msgType, // '0000 0011'B BITSTRING [8] + InterRAT_HO_Info interRAT_HO_Info optional, // O TLV 3-25 octets IEI = 27 + EUTRAN_HO_Info eutranInterRAT_HO_Info optional // O TLV 3_25 octets IEI = 2B +}; + +// ============================================================================= +// PDU Type Definition +// 3GPP 24.008 clause 9.4.4 (GMM message) +// ----------------------------------------------------------------------------- +type record ATTACHREJECT { + SkipIndicator skipIndicator, // Skip Indicator BITSTRING [4] + ProtocolDiscriminator gMMProtocolDiscriminator, // GMM Protocol Discriminator '1000' + MessageType msgType, // Message Type '0000 0100' + RejCau gmmCause, // 1 octet + GPRS_Timer2 t3302Value optional, // O TLV 3 octets IEI = 2A + GPRS_Timer2 t3346Value optional /* cl. 10.5.7.4 O TLV 3 IEI=0x3A @sic R5s120178 Baseline Moving sic@*/ +}; + +// ============================================================================= +// PDU Type Definition +// 3GPP 24.008 clause 9.4.1 (GMM message) +// ----------------------------------------------------------------------------- +type record ATTACHREQUEST { + SkipIndicator skipIndicator, // Skip Indicator M BITSTRING [4] + ProtocolDiscriminator gMMProtocolDiscriminator, // GMM Protocol Discriminator '1000' + MessageType msgType, // Message Type '0000 0001' + MS_NetworkCap msNetworkCap, // MS network capability M, LV 3-9 octets + CiphKeySeqNum gprsCiphKeySeqNo, // Ciphering key sequence number M BITSTRING[4] + AttachType attachType, // Attach Type M BITSTRING [4] + DRXparameter drxParameter, // M 2 octets + MobileIdentity mobileIdentity, // Mobile Identity M. LV 6-9 octets @sic R5s110176 Baseline Moving sic@ + RoutingAreaId oldRAI, // Routing Area Identification M 6 octets + MS_RadioAccessCap_LV msRadioAccessCap, // M, LV 6-51 octets @sic R5s110176 Baseline Moving sic@ + PTMSI_Signature oldPTMSI_Signature optional, // O 4 octets TV IEI = 19 + GPRS_Timer readyTimer optional, // O 2 octets TV IEI = 17 + TMSI_Status tmsiStatus optional, // O 1 octet TV IEI = 9- + PS_LCS_Capability pS_LCS_Capability optional, // O TLV 3 octets IEI = 33 + MS_Clsmk2 msClassmark2 optional, // O TLV 5 IEI= 11 + MS_Clsmk3 msClassmark3 optional, // O TLV 2-34 IEI= 20 + CodecList supportedCodecList optional, // O TLV 5-n IEI= 40 + UE_NetworkCap ueNetworkCapability optional, // O TLV 4-15 IEI = 58 + MobileIdentity addMobileId optional, // O TLV 6-10 IEI = 1A + RoutingAreaId2 addOldRAI optional, // O TLV 8 IEI = 1B + VoiceDomainPref voiceDomainPref optional, // O TLV 3 IEI = 5D @sic R5s110176 Baseline Moving sic@ + DeviceProperties deviceProperties optional, /* cl. 10.5.7.8 O TV 1 IEI=0xD- @sic R5s120178 Baseline Moving sic@*/ + PTMSI_Type ptmsiType optional, /* cl. 10.5.5.29 O TV 1 IEI=0xE- @sic R5s120178 Baseline Moving sic@*/ + MS_NetworkFeatureSupport msNetworkFeatureSupport optional, /* cl. 10.5.1.15 O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/ + LocAreaId2 oldLAI optional, /* cl. 10.5.5.30 O TLV 7 IEI=0x14 @sic R5s120178 Baseline Moving sic@*/ + AdditionalUpdateType addUpdType optional, /* 24.301 cl. 9.9.3.0B O TV 1 IEI=0xF @sic R5s130195 Baseline Moving sic@*/ + NwkResourceId tmsiBasedNRIContainer optional /* cl. 10.5.5.31 O TLV 4 IEI=0x10 @sic R5s130195 Baseline Moving sic@*/ +}; + +// ============================================================================= +// PDU Type Definition +// 3GPP 24.008 clause 9.4.9 (GMM message) +// ----------------------------------------------------------------------------- +type record AUTHENTICATIONANDCIPHERINGREQUEST { + SkipIndicator skipIndicator, // Skip Indicator BITSTRING [4] + ProtocolDiscriminator gMMProtocolDiscriminator, // GMM Protocol Discriminator BITSTRING [4] + MessageType msgType, // '0001 0010'B + IMEISV_Request imeisvReq, // M BITSTRING[4] + CiphAlgorithm ciphAlgorithm, // Ciphering algorithm BITSTRING[4] + AC_ReferenceNumber acRefNo, // M BITSTRING [4] + ForceToStandby forceToStandby, // M BITSTRING + RAND authRand optional, // O, TV 17 octets IEI = 21 + CiphKeySeqNum gprsCiphKeySeqNo optional, // O, TV, 1 IEI = 8- + AUTN aUTN optional // O, TLV, 18 IEI = 28 +}; + +// ============================================================================= +// PDU Type Definition +// 3GPP 24.008 clause 9.4.10 (GMM message) +// ----------------------------------------------------------------------------- +type record AUTHENTICATIONANDCIPHERINGRESPONSE { + SkipIndicator skipIndicator, // Skip Indicator M BITSTRING [4] + ProtocolDiscriminator gMMProtocolDiscriminator, // GMM Protocol Discriminator M BITSTRING [4] + MessageType msgType, // '0001 0011'B M BITSTRING [8] + B4_Type spare4 , + AC_ReferenceNumber acRefNo , // M BITSTRING [4] + AuthRsp authRsp optional, // O, TV 5 octets IEI = 22 + MobileIdentity imeisv optional, // O TLV, 11 octets IEI = 23 + AuthRspExt authRspExt optional // O TLV, 3-14 octets IEI = 29 +}; + +// ============================================================================= +// PDU Type Definition +// MM AUTHENTICATION FAILURE ue -> n +// 3G TS 24.008 cl. 9.2.3a +// ----------------------------------------------------------------------------- +type record AUTHENTICATIONFAILURE { + SkipIndicator skipIndicator, // Skip Indicator BITSTRING [4] + ProtocolDiscriminator mMProtocolDiscriminator, // MM Protocol Discriminator BITSTRING [4] + MessageType msgType, // Message Type (1) BITSTRING [8] + RejCau rejCau, // Reject Cause BITSTRING [8] + AuthenticationFailureParameter authFailParam optional // O TLV 16 octets IEI = 22 +}; + +// ============================================================================= +// PDU Type Definition +// MM AUTHENTICATION REQUEST n -> ms +// 3G TS 24.008 cl. 9.2.2 +// ----------------------------------------------------------------------------- +type record AUTHENTICATIONREQUEST { + SkipIndicator skipIndicator, // + ProtocolDiscriminator mMProtocolDiscriminator, // + MessageType msgType, // + B4_Type spare4, // + CiphKeySeqNum ciphKeySeqNum, // + MM_RAND rAND, // + AUTN aUTN optional // O AUTN TLV 18 octets IEI = 20 +}; + +// ============================================================================= +// PDU Type Definition +// MM AUTHENTICATION RESPONSE ue -> n +// 3G TS 24.008 cl. 9.2.3 +// ----------------------------------------------------------------------------- +type record AUTHENTICATIONRESPONSE { + SkipIndicator skipIndicator, // + ProtocolDiscriminator mMProtocolDiscriminator, // + MessageType msgType, // + AuthRsp authRsp, // + AuthRspExt authRspExt optional // O TLV 3-14 octets IEI = 21 +}; + +// ============================================================================= +// PDU Type Definition +// 3GPP 24.008 clause 9.4.10a (GMM message) +// ----------------------------------------------------------------------------- +type record AUTHENTICATION_AND_CIPHERING_FAILURE { + SkipIndicator skipIndicator, // + ProtocolDiscriminator gMMProtocolDiscriminator, // + MessageType msgType, // '0001 1100'B + RejCau gmmCause, // M 1 octet + AuthenticationFailureParameter authFailurePar optional // O TLV, 16 IEI = 30 +}; + +// ============================================================================= +// PDU Type Definition +// Deactivate PDP Context Request +// n <=> ue +// 24.008, 9.5.14 +// ----------------------------------------------------------------------------- +type record DEACTIVATEPDPCONTEXTREQUEST { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator sM_ProtocolDiscriminator, // protocol discriminator BITSTRING [4] + MessageType msgType, // BITSTRING [8] + SM_Cause sM_Cause, // V OCTETSTRING [1] + TearDwnInd tearDwnInd optional, // O TV 1 octets IEI = 9- + ProtocolConfigOptions protocolConfOpts optional, // O TLV 3-253 IEI = 27 + MBMS_ProtoCfgOpt mBMS_ProtocolConfOpts optional, // O TLV 3-253 IEI = 35 + GPRS_Timer3 t3396Value optional /* cl. 10.5.7.4a O TLV 3 IEI=0x37 @sic R5s130195 Baseline Moving sic@*/ +}; + +// ============================================================================= +// PDU Type Definition +// 3GPP 24.008 clause 9.4.5.2 (Mobile originating detach, GMM message) +// ----------------------------------------------------------------------------- +type record DETACHREQUESTMO { + SkipIndicator skipIndicator, // Skip Indicator BITSTRING [4] + ProtocolDiscriminator gMMProtocolDiscriminator, // GMM Protocol Discriminator BITSTRING [4] + MessageType msgType, // Message Type BITSTRING [8] + B4_Type spare4, // M 1/2 octet + DetachType detachType, // M 1/2 octet + MobileIdentity ptmsi optional, // O TLV 7 octets IEI = 18 + PTMSI_Signature ptmsiSignature optional // O TLV 5 octets IEI = 19 +}; + +// ============================================================================= +// PDU Type Definition +// MM LOCATION UPDATING ACCEPT n -> ms +// 3G TS 24.008 cl. 9.2.13 +// ----------------------------------------------------------------------------- +type record LOCATIONUPDATINGACCEPT { + SkipIndicator skipIndicator, // Skip Indicator BITSTRING [4] + ProtocolDiscriminator mMProtocolDiscriminator, // MM Protocol Discriminator BITSTRING [4] + MessageType msgType, // Message Type + LocAreaId locAreaId, // V (5 octets) + MobileIdentity mobileId optional, // O (3-10) TLV IEI = 17 + FollowOnProceed followOnProceed optional,// O 1 octet T IEI = A1 + CTSPerm cTSPerm optional, // O 1 octet T IEI = A2 + PLMN_List equivalentPLMN optional,// O 5-47 octets TLV IEI = 4A + EmergNumList emergNumList optional, // O TLV 5-50 octets IEI = 34 + GPRS_Timer3 perMST3212 optional /* cl. 10.5.7.4a O TLV 3 IEI=0x35 @sic R5s120178 Baseline Moving sic@*/ +}; + +// ============================================================================= +// PDU Type Definition +// MM LOCATION UPDATING REQUEST ue -> n +// 3G TS 24.008 cl. 9.2.15 +// ----------------------------------------------------------------------------- +type record LOCATIONUPDATINGREQUEST { + SkipIndicator skipIndicator, // Skip Indicator BITSTRING [4] + ProtocolDiscriminator mMProtocolDiscriminator, // MM Protocol Discriminator BITSTRING [4] + MessageType msgType, // Message Type BITSTRING [8] + CiphKeySeqNum ciphKeySeqNum, // BITSTRING [4] + LocUpdType locUpdType, // BITSTRING [4] + LocAreaId locAreaId, // V LocAreaId (5 octets) + MS_Clsmk1 mSClsmk1, // M 1 octet + MobileIdentity mobileId, // LV MobileId (2-9 octets) + MS_Clsmk2 mSClsmk2 optional, // TLV O 5 octets + AddUpdateParams addUpdateParams optional, // TV O 1 octet IEI=C @sic R5s110176 Baseline Moving sic@ + DeviceProperties deviceProperties optional, /* cl. 10.5.7.8 O TV 1 IEI=0xD- @sic R5s120178 Baseline Moving sic@*/ + MS_NetworkFeatureSupport msNetworkFeatureSupport optional /* cl. 10.5.1.15 O TV 1 IEI=0xE- @sic R5s120178 Baseline Moving sic@*/ +}; + +// ============================================================================= +// PDU Type Definition +// ROUTING AREA UPDATE REQUEST +// 3GPP 24.008 clause 9.4.14 (GMM message) +// ----------------------------------------------------------------------------- +type record ROUTINGAREAUPDATEREQUEST { + SkipIndicator skipIndicator, // Skip Indicator M BITSTRING [4] + ProtocolDiscriminator gMMProtocolDiscriminator, // GMM Protocol Discriminator '1000' M BITSTRING [4] + MessageType msgType, // Message Type '0000 1000' + CiphKeySeqNum gprsCiphKeySeqNo, // Ciphering key sequence number M BITSTRING[4] + UpdateType updateType, // Update Type M BITSTRING [4] + RoutingAreaId oldRAI, // Routing Area Identification M 6 octets + MS_RadioAccessCap_LV msRadioAccessCap, // M 6-51 octets LV + PTMSI_Signature oldPTMSI_Signature optional, // O 4 octets TV IEI = 19 + GPRS_Timer readyTimer optional, // O 2 octets TV IEI = 17 + DRXparameter drxParameter optional, // O, TV 3 octets IEI = 27 + TMSI_Status tmsiStatus optional, // O 1 octet TV IEI = 9- + MobileIdentity ptmsi optional, // O, TLV 7 octets IEI = 18 + MS_NetworkCap msNetworkCap optional, // O, TLV 4-10 octets IEI = 31 + PDP_ContextStatus pDP_ContextStatus optional, // O 4 octets TLV IEI = 32 + PS_LCS_Capability pS_LCS_Capability optional, // O TLV 3 octets IEI = 33 + MBMS_ContextStatus mBMS_ContextStatus optional, // O TLV 2-18 octets IEI = 35 + UE_NetworkCap ueNetworkCapability optional, // O TLV 4-15 IEI = 58 + MobileIdentity addMobileId optional, // O TLV 6-10 IEI = 1A + RoutingAreaId2 addOldRAI optional, // O TLV 8 IEI = 1B + MS_Clsmk2 msClassmark2 optional, // O TLV 5 IEI= 11 + MS_Clsmk3 msClassmark3 optional, // O TLV 2-34 IEI= 20 + CodecList supportedCodecList optional, // O TLV 5-n IEI= 40 + VoiceDomainPref voiceDomainPref optional, // O TLV 3 IEI = 5D @sic R5s110176 Baseline Moving sic@ + PTMSI_Type ptmsiType optional, /* cl. 10.5.5.29 O TV 1 IEI=0xE- @sic R5s120178 Baseline Moving sic@*/ + DeviceProperties deviceProperties optional, /* cl. 10.5.7.8 O TV 1 IEI=0xD- @sic R5s120178 Baseline Moving sic@*/ + MS_NetworkFeatureSupport msNetworkFeatureSupport optional, /* cl. 10.5.1.15 O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/ + LocAreaId2 oldLAI optional, /* cl. 10.5.5.30 O TLV 7 IEI=0x14 @sic R5s120178 Baseline Moving sic@*/ + AdditionalUpdateType addUpdType optional, /* 24.301 cl. 9.9.3.0B O TV 1 IEI=0xF @sic R5s130195 Baseline Moving sic@*/ + NwkResourceId tmsiBasedNRIContainer optional /* cl. 10.5.5.31 O TLV 4 IEI=0x10 @sic R5s130195 Baseline Moving sic@*/ +}; + +// ============================================================================= +// PDU Type Definition +// 3GPP 24.008 clause 9.4.20 (GMM message) +// ----------------------------------------------------------------------------- +type record SERVICEREQUEST { + SkipIndicator skipIndicator, // Skip IndicatorBITSTRING [4] + ProtocolDiscriminator gMMProtocolDiscriminator, // GMM Protocol Discriminator BITSTRING [4] + MessageType msgType, // Message Type BITSTRING [8] + ServiceType serviceType, // Service type M BITSTRING[4] + CiphKeySeqNum ciphKeySeqNo, // Ciphering key sequence number M BITSTRING[4] + MobileIdentity ptmsi, // Mobile Identity M 6 octets + PDP_ContextStatus pDP_ContextStatus optional, // O 4 octets TLV IEI = 32 + MBMS_ContextStatus mBMS_ContextStatus optional, // O TLV 2-18 octets IEI = 35 + UplinkDataStatus uplinkDataStatus optional, // O TLV 4 octets IEI = 36 + DeviceProperties deviceProperties optional /* cl. 10.5.7.8 O TV 1 IEI=0xD- @sic R5s120178 Baseline Moving sic@*/ +}; + +// ============================================================================= +// PDU Type Definition +// MM TMSI REALLOCATION COMPLETE ue -> n +// 3G TS 24.008 cl. 9.2.18 +// ----------------------------------------------------------------------------- +type record TMSIREALLOCATIONCOMPLETE { + SkipIndicator skipIndicator, // Skip Indicator BITSTRING [4] + ProtocolDiscriminator mMProtocolDiscriminator, // MM Protocol Discriminator BITSTRING [4] + MessageType msgType // Message Type (1) +}; + +// ============================================================================= +// PDU Type Definition +// MM TMSI REALLOCATION COMMAND n -> ue +// 3G TS 24.008 cl. 9.2.17 +// ----------------------------------------------------------------------------- +type record TMSIREALLOCATIONCOMMAND { + SkipIndicator skipIndicator, // Skip Indicator BITSTRING [4] + ProtocolDiscriminator mMProtocolDiscriminator, // MM Protocol Discriminator BITSTRING [4] + MessageType msgType, // Message Type (1) + LocAreaId locAreaId, // V LocAreaId (5 octets) + MobileIdentity mobileId // LV MobileId (2-9 octets) +}; + +// ============================================================================= +// PDU Type Definition +// 3GPP 24.008 clause 9.4.18 (GMM message) +// ----------------------------------------------------------------------------- +type record GMM_STATUS { + SkipIndicator skipIndicator, // Skip Indicator BITSTRING [4] + ProtocolDiscriminator gMMProtocolDiscriminator, // GMM Protocol Discriminator BITSTRING [4] + MessageType msgType, // Message Type BITSTRING [8] + RejCau cause // Cause M 1 octet +}; + +// ============================================================================= +// PDU Type Definition +// Activate PDP Context Request +// ue -> n +// 3GPP 24.008 clause, 9.5.1 +// ----------------------------------------------------------------------------- +type record ACTIVATEPDPCONTEXTREQUESTul { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator sM_ProtocolDiscriminator, // protocol discriminator BITSTRING [4] + MessageType msgType, // message type + NSAPI requestedNSAPI, // M V + LLC_SAPI requestedLLC_SAPI, // M V + QualityOfService requestedQoS, // M LV [13-21] + PktDataProtoAddr pDP_Address, // M LV [3-23] + AccessPointName accessPtName optional, // O TLV [3-102] IEI = 28 + ProtocolConfigOptions protocolConfOpts optional, // O TLV [3-253] IEI = 27 + RequestType requestType optional, // O TV [1] IEI = A- + DeviceProperties deviceProperties optional /* cl. 10.5.7.8 O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/ +}; + +// ============================================================================= +// PDU Type Definition +// Activate PDP Context Reject +// ue -> n +// 3GPP 24.008 clause, 9.5.3 +// ----------------------------------------------------------------------------- +type record ACTIVATEPDPCONTEXTREJECT { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator sM_ProtocolDiscriminator, // protocol discriminator BITSTRING [4] + MessageType msgType, // message type + SM_Cause smCause, // V OCTETSTRING [1] + ProtocolConfigOptions protocolConfOpts optional, // O TLV 3-253 IEI = 27 + GPRS_Timer3 t3396Value optional /* cl. 10.5.7.4a O TLV 3 IEI=0x37 @sic R5s130195 Baseline Moving sic@*/ + +}; + + +// ============================================================================= +// PDU Type Definition +// Activate secondary PDP Context Request +// n->ue +// 3GPP 24.008 clause, 9.5.15a +// ----------------------------------------------------------------------------- +type record REQUESTSECONDARYPDPCONTEXTACTIVATIONdl { + TI ti, + ProtocolDiscriminator sM_ProtocolDiscriminator, + MessageType msgType, + QualityOfService requiredQoS, + LinkedTI_lv linkedTI, + TrafficFlowTemplate tft optional, + ProtocolConfigOptions protocolConfOpts optional + }; + +// ============================================================================= +// PDU Type Definition +// Activate secondary PDP Context Request +// ue->n +// 3GPP 24.008 clause, 9.5.4 +// ----------------------------------------------------------------------------- +type record ACTIVATESECONDARYPDPCONTEXTREQUESTul { + TI ti, + ProtocolDiscriminator sM_ProtocolDiscriminator, + MessageType msgType, + NSAPI requestedNSAPI, + LLC_SAPI requestedLLC_SAPI, + QualityOfService requestedQoS, + LinkedTI_lv linkedTI, + TrafficFlowTemplate tft optional, + ProtocolConfigOptions protocolConfOpts optional, + DeviceProperties deviceProperties optional +}; + +// ============================================================================= +// PDU Type Definition +// Activate secondary PDP Context Request +// n->ue +// 3GPP 24.008 clause, 9.5.5 +// ----------------------------------------------------------------------------- +type record ACTIVATESECONDARYPDPCONTEXTACCEPTdl { + TI ti, + ProtocolDiscriminator sM_ProtocolDiscriminator, + MessageType msgType, + LLC_SAPI negotiatedLLC_SAPI, + QualityOfService negotiatedQoS, + B4_Type spare, + RadioPriority radioPriority, + PktFlowId pktFlowIdentifier optional, + ProtocolConfigOptions protocolConfOpts optional +}; + +// ============================================================================= +// PDU Type Definition +// SM Status +// n<->ue +// 3GPP 24.008 clause, 9.5.21 +// ----------------------------------------------------------------------------- +type record SMSTATUS { + TI ti, + ProtocolDiscriminator sM_ProtocolDiscriminator, + MessageType msgType, + SM_Cause sM_Cause +}; + +type record LinkedTI_lv { + O1_Type iel, + B1_Type tIFlag, + B3_Type tIValue, + B4_Type spare, + B1_Type ext optional, + B7_Type tIValuel optional +}; + +// ============================================================================= +// PDU Type Definition +// CM SERVICE ACCEPT n -> ue +// 3G TS 24.008 cl. 9.2.5 +// ----------------------------------------------------------------------------- +type record CMSERVICEACCEPT { + SkipIndicator skipIndicator, // Skip IndicatorBITSTRING [4] + ProtocolDiscriminator mMProtocolDiscriminator, // MM Protocol Discriminator BITSTRING [4] + MessageType msgType // Message Type BITSTRING [8] +}; + +// ============================================================================= +// PDU Type Definition +// CM SERVICE REQUEST ue -> n +// 3G TS 24.008 cl. 9.2.9 +// ----------------------------------------------------------------------------- +type record CMSERVICEREQUEST { + SkipIndicator skipIndicator, // Skip Indicator BITSTRING [4] + ProtocolDiscriminator mMProtocolDiscriminator, // MM Protocol Discriminator BITSTRING [4] + MessageType msgType, // Message Type BITSTRING [8] + CiphKeySeqNum ciphKeySeqNum, // BITSTRING [4] + CMServType cMServType, // BITSTRING [4] + MS_Clsmk2 mSClsmk2, // LV (4 octets) + MobileIdentity mobileId, // LV (2-9 octets) + PriorityLvl priorityLvl optional, // TV O 1 octet IEI = 8- + AddUpdateParams addUpdateParams optional, /* cl. 10.3.14 O TV 1 IEI=0xC- @sic R5s120178 Baseline Moving sic@*/ + DeviceProperties deviceProperties optional /* cl. 10.5.7.8 O TV 1 IEI=0xD- @sic R5s120178 Baseline Moving sic@*/ +}; + +// ============================================================================= +// PDU Type Definition +// CM SERVICE REJECT n -> ue +// 3G TS 24.008 cl. 9.2.6 +// ----------------------------------------------------------------------------- +type record CMSERVICEREJECT { + SkipIndicator skipIndicator, // Skip Indicator BITSTRING [4] + ProtocolDiscriminator mMProtocolDiscriminator, // MM Protocol Discriminator BITSTRING [4] + MessageType msgType, // Message Type BITSTRING [8] + RejCau rejCau, // Reject Cause M BITSTRING [8] + MM_Timer t3246 optional // T3246 Value O TLV 3 IEI=36 @sic R5s120178 BaselineMoving sic@ +}; + +// ============================================================================= +// PDU Type Definition +// Deactivate PDP Context Accept +// n <=> ue +// 3GPP 24.008 , 9.5.15 +// ----------------------------------------------------------------------------- +type record DEACTIVATEPDPCONTEXTACCEPT { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator sM_ProtocolDiscriminator, // protocol discriminator BITSTRING [4] + MessageType msgType, // message type BITSTRING [8] + ProtocolConfigOptions protocolConfOpts optional, // O TLV [3-253] IEI = 27 + MBMS_ProtoCfgOpt mBMS_ProtocolConfOpts optional // O TLV [3-253] IEI = 35 +}; + +// ============================================================================= +// PDU Type Definition +// Disconnect +// 3GPP 24.008 , 9.3.7 +// ----------------------------------------------------------------------------- + type record DISCONNECTdl { + TI Ti, + ProtocolDiscriminator cC_ProtocolDiscriminator, + MessageType msgType, + Cau cau, + FacilityIE facility optional, + ProgInd progInd optional, + UserUser userUser optional, + AllowedAction allowedAction optional + } + + type record DISCONNECTul { + TI Ti, + ProtocolDiscriminator cC_ProtocolDiscriminator, + MessageType msgType, + Cau cau, + FacilityIE facility optional, + UserUser userUser optional, + SS_VersionInd ssVersionInd optional + } + + +// ============================================================================= +// PDU Type Definition +// 3GPP 24.008 clause 9.4.6.2 (DETACH ACCEPT mobile originated detach) +// ----------------------------------------------------------------------------- +type record DETACHACCEPTMO { + SkipIndicator skipIndicator, // Skip Indicator BITSTRING [4] + ProtocolDiscriminator gMMProtocolDiscriminator, // GMM Protocol Discriminator BITSTRING [4] + MessageType msgType, // Message Type '000 0110' + B4_Type spare, // M 1/2 octet + ForceToStandby forceToStandby // M 1/2 octet +}; + +// ============================================================================= +// PDU Type Definition +// MM IMSI DETACH INDICATION ue -> n +// 3G TS 24.008 cl. 9.2.12 +// ----------------------------------------------------------------------------- +type record IMSIDETACHINDICATION { + SkipIndicator skipIndicator, // Skip Indicator BITSTRING [4] + ProtocolDiscriminator mMProtocolDiscriminator, // MM Protocol Discriminator BITSTRING [4] + MessageType msgType, // Message Type BITSTRING [8] + MS_Clsmk1 mSClsmk1, // Mobile Station Classmark 1 (1 octet) + MobileIdentity mobileId // Mobile Identity LV (2-10 octets) +}; + +// ============================================================================= +// PDU Type Definition +// MM LOCATION UPDATING REJECT n -> ms +// 3G TS 24.008 cl. 9.2.14 +// ----------------------------------------------------------------------------- +type record LOCATIONUPDATINGREJECT { + SkipIndicator skipIndicator, // Skip Indicator BITSTRING [4] + ProtocolDiscriminator mMProtocolDiscriminator, // MM Protocol Discriminator BITSTRING [4] + MessageType msgType, // Message Type BITSTRING [8] + RejCau rejCau, // Reject Cause M BITSTRING [8] + MM_Timer t3246 optional // T3246 Value O TLV 3 IEI=36 @sic R5s120178 BaselineMoving sic@ +}; + +// ============================================================================= +// PDU Type Definition +// PAGINGRESPONSE ue -> n +// GSM 04.18 cl. 9.1.25 +// ----------------------------------------------------------------------------- +type record PAGINGRESPONSE { + SkipIndicator skipIndicator, // Skip Indicator BITSTRING [4] + ProtocolDiscriminator rRProtocolDiscriminator, // RR Protocol Discriminator BITSTRING [4] + MessageType msgType, // Message Type BITSTRING [8] + B4_Type spare4, // Spare half octet M + CiphKeySeqNum ciphKeySeqNum, // Ciphering Key Sequence Number M BITSTRING [4] + MS_Clsmk2 mSClsmk2, // Mobile Station Classmark 2 M (4 octets) + MobileIdentity mobileId, // Mobile Identity LV M (2-10 octets) + AddUpdateParams addUpdateParams optional // Additional Update Parameters TV O 1 IEI = C @sic R5s130195 Baseline Moving, R5s130307 sic@ +}; + + // ============================================================================= + // PDU Type Definition + // Supplementary Services RELEASE COMPLETE n -> ue or ue -> n + // 3G TS 24.080 cl. 2.5 / 24.008 cl. 9.3.19.1 / 2 + // ----------------------------------------------------------------------------- + type record RELEASECOMPLETE { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator protocolDiscriminator, // CC or SS BITSTRING [4] + MessageType msgType, // message type BITSTRING [8] + Cau cau optional, // cause O [4..32] TLV IEI = 08 + FacilityIE facility optional, // facility O, TLV IEI = 1C BER enconded ASN.1 object + UserUser userUser optional, // user-user O [3..131] TLV IEI = 7E + SS_VersionInd sS_VersionInd optional // O [2..3] TLV IEI = 7F + }; + +// ============================================================================= +// PDU Type Definition +// 3G TS 24.008 cl. 9.3.18 +// ----------------------------------------------------------------------------- +type record RELEASEul { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator cC_ProtocolDiscriminator, // CC protocol discriminator BITSTRING [4] + MessageType msgType, // message type BITSTRING [8] + Cau cau optional, // cause O [4..32] TLV IEI = 08 + Cau cau2 optional, // cause O [4..32] TLV IEI = 08 + FacilityIE facility optional, // O [2-] TLV IEI = 1C + UserUser userUser optional, // O [3..131] TLV IEI = 7E + SS_VersionInd sS_VersionInd optional // O [2..3] TLV IEI = 7F +}; + +type record RELEASEdl { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator cC_ProtocolDiscriminator, // CC protocol discriminator BITSTRING [4] + MessageType msgType, // message type BITSTRING [8] + Cau cau optional, // cause O [4..32] TLV IEI = 08 + Cau cau2 optional, // cause O [4..32] TLV IEI = 08 + FacilityIE facility optional, // O [2-] TLV IEI = 1C + UserUser userUser optional // O [3..131] TLV IEI = 7E +}; + +// ============================================================================= +// PDU Type Definition +// 3GPP 24.008 clause 9.4.15 (GMM message) +// ----------------------------------------------------------------------------- +type record ROUTINGAREAUPDATEACCEPT { + SkipIndicator skipIndicator, // Skip Indicator BITSTRING [4] + ProtocolDiscriminator gMMProtocolDiscriminator, // GMM Protocol Discriminator '1000' BITSTRING [4] + MessageType msgType, // Message Type '0000 1001' BITSTRING [8] + UpdateResult updateResult, // Update result M, 1/2 octet + ForceToStandby forceToStandby, // M 1/2 octet + GPRS_Timer periodicRAupdateTimer, // M 1 octet + RoutingAreaId rai, // Routing Area Identification M 6 octets + PTMSI_Signature ptmsiSignature optional, // O [4] TV IEI = 19 + MobileIdentity allocatedPTMSI optional, // O [7] TLV IEI = 18 + MobileIdentity msIdentity optional, // O [7-10] TLV IEI = 23 + ReceiveN_PDU_Numbers listNPDUnumbers optional, // O, TLV [4-19] IEI = 26 + GPRS_Timer readyTimer optional, // O [2] TV IEI = 17 + GMM_Cause gmmCause optional, // O [2] TV IEI = 25 + GPRS_Timer2 t3302Value optional, // O TLV [3] IEI = 2A + CellNotification cellNotification optional, // O, T, [1] IEI = 8C + PLMN_List equivalentPLMN optional, // O [5-17] TLV IEI = 4A + PDP_ContextStatus pDP_ContextStatus optional, // O [4] TLV IEI = 32 + NtwFeatureSupport ntwFeatureSupport optional, // O TV [1] IEI = B- + EmergNumList emergNumList optional, // O TLV [5-50] IEI = 34 + MBMS_ContextStatus mBMS_ContextStatus optional, // O TLV [2-18] IEI = 35 + RequestedMS_Info requestedMS_Info optional, // O TV [1] IEI = A- + GPRS_Timer2 t3319Value optional, // O TLV [3] IEI = 37 + GPRS_Timer2 t3323Value optional, // O TLV [3] IEI = 38 + GPRS_Timer3 t3312ExtdValue optional, /* cl. 10.5.7.4a O TLV 3 IEI=0x39 @sic R5s120178 Baseline Moving sic@*/ + AddNtwFeatureSupport addNtwFeatureSupport optional // O 3 octet, TLV IEI = 66 @sic R5s130195 Baseline Moving sic@ +}; + +// ============================================================================= +// PDU Type Definition +// 3GPP 24.008 clause 9.4.16 (GMM message) +// ----------------------------------------------------------------------------- +type record ROUTING_AREA_UPDATE_COMPLETE { + SkipIndicator skipIndicator, // Skip Indicator BITSTRING [4] + ProtocolDiscriminator gMMProtocolDiscriminator, // GMM Protocol Discriminator '1000' + MessageType msgType, // Message Type '0000 1010' + ReceiveN_PDU_Numbers listNPDUnumbers optional, // O, TLV 4-19 IEI = 26 + InterRAT_HO_Info interRAT_HO_Info optional, // O TLV 3-40 IEI = 27 + EUTRAN_HO_Info eutranInterRAT_HO_Info optional // O TLV 3-25 IEI = 2B +}; + +// ============================================================================= +// PDU Type Definition +// 3GPP 24.008 clause 9.4.17 (GMM message) +// ----------------------------------------------------------------------------- +type record ROUTINGAREAUPDATEREJECT { + SkipIndicator skipIndicator, // Skip Indicator BITSTRING [4] + ProtocolDiscriminator gMMProtocolDiscriminator, // GMM Protocol Discriminator '1000' BITSTRING [4] + MessageType msgType, // Message Type '0000 1011' BITSTRING [8] + GMM_Cause gmmCause, // GMM Cause M, 1 octet + ForceToStandby forceToStandby, // Force To Standby M, 1/2 octet @sic R5s110718 sic@ + B4_Type spare, // Spare Half Octet M, 1/2 octet + GPRS_Timer2 t3302Value optional, // O TLV [3] IEI = 2A + GPRS_Timer2 t3346Value optional // O TLV [3] IEI = 3A @sic R5s120178 Baseline Moving sic@ +}; + +// ============================================================================= +// PDU Type Definition +// 3GPP 24.008, clause 9.4.21 (GMM Message) +// ----------------------------------------------------------------------------- +type record SERVICEACCEPT { + SkipIndicator skipIndicator, + ProtocolDiscriminator gMMProtocolDiscriminator, + MessageType msgType, + PDP_ContextStatus pDP_ContextStatus optional, // O 4 TLV IEI = 32 + MBMS_ContextStatus mBMS_ContextStatus optional // O TLV 2-18 IEI = 35 +}; + +// ============================================================================= +// PDU Type Definition +// CC SETUP n <- ue +// 3G TS 24.008 cl. 9.3.23.2 +// ----------------------------------------------------------------------------- +type record SETUPul { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator cC_ProtocolDiscriminator, // CC protocol discriminator BITSTRING [4] + MessageType msgType, // message type + RepeatInd repeatInd optional, // C [1] TV IEI = D- + Bcap bcap1, //M [3..16] TLV IEI = 04 + Bcap bcap2 optional, // O [3..16] TLV IEI = 04 + FacilityIE facility optional, // O [2-] TLV IEI = 1C + CGPS cgps optional, // O [2..23] TLV IEI = 5D + CDPN cdpn, // M [3..43] TLV IEI = 5E + CDPS cdps optional, // O [2..23] TLV IEI = 6D + RepeatInd llcRepeatInd optional,// O [1] TV IEI = D- + LLC llc1 optional, // O [2..18] TLV IEI = 7C + LLC llc2 optional, // O [2..18] TLV IEI = 7C + RepeatInd hlcRepeatInd optional,// O [1] TV IEI = D- + HLC hlc1 optional, // O [2..5] TLV IEI = 7D + HLC hlc2 optional, // O [2..5] TLV IEI = 7D + UserUser userUser optional, // O [3..131] TLV IEI = 7E + SS_VersionInd sS_VersionInd optional, // O [2..3] TLV IEI = 7F + CLIR_Suppression cLIR_Suppression optional,// C [1] T IEI = A1 + CLIR_Invocation cLIR_Invocation optional,// O [1] T IEI = A2 + CC_Capabilities cC_Capabilities optional,// O [4] TLV IEI = 15 + FacilityIE facilityCCBS_AdvRecall optional, // O [2-] TLV IEI = 1D + FacilityIE facilityCCBS_RecallAlign optional, // O [2-] TLV = 1B + StreamId streamId optional, // O [3] TLV IEI = 2D + CodecList supportedCodecs optional,// O [5-n] TLV IEI = 40 + Redial redial optional // O [1] T IEI = A3 +}; + +// ============================================================================= +// PDU Type Definition +// Modify PDP Context Accept +// ue -> n +// 3GPP 24.008 clause, 9.5.11 +// ----------------------------------------------------------------------------- +type record MODIFYPDPCONTEXTACCEPT_ul { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator sM_ProtocolDiscriminator, // protocol discriminator BITSTRING [4] + MessageType msgType, // message type + ProtocolConfigOptions protocolConfOpts optional // O TLV [3-253] IEI = 27 +}; + +// ============================================================================= +// PDU Type Definition +// Modify PDP Context Accept +// n -> ue +// 3GPP 24.008 clause, 9.5.12 +// ----------------------------------------------------------------------------- +type record MODIFYPDPCONTEXTACCEPT_dl { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator sM_ProtocolDiscriminator, // protocol discriminator BITSTRING [4] + MessageType msgType, // message type + QualityOfService negotiatedQoS optional, // O TLV [14-22] IEI = 30 + LLC_SAPI negotiatedLLC_SAPI optional, // O TV [2] IEI = 32 + RadioPriority newRadioPriority optional, // O V [1] IEI = 8 + PacketFlowIdentifier pKT_FlowIdentifier optional, // O TLV [3] IEI = 34 + ProtocolConfigOptions protocolConfOpts optional // O TLV [3-253] IEI = 27 +}; + +// ============================================================================= +// PDU Type Definition +// Modify PDP Context Request +// n -> ue +// 24.008 , 9.5.9 +// ----------------------------------------------------------------------------- +type record MODIFYPDPCONTEXTREQUEST_dl { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator sM_ProtocolDiscriminator, // protocol discriminator BITSTRING [4] + MessageType msgType, // message type BITSTRING [8] + B4_Type spare, // Spare M V BITSTRING [4] + RadioPriority radioPriority, // M V BITSTRING [4] + LLC_SAPI requestedLLC_SAPI, // M V BITSTRING [8] + QualityOfService newQoS, // M LV [13-21] + PktDataProtoAddr pDP_Addr optional, // O TLV [4-20] IEI = 2B + PacketFlowIdentifier pKT_FlowIdentifier optional, // O TLV [3] IEI = 34 + ProtocolConfigOptions protocolConfOpts optional, // O TLV [3-253] IEI = 27 + TrafficFlowTemplate tft optional // O TLV [3-257] IEI = 36 +}; + +// ============================================================================= +// PDU Type Definition +// Modify PDP Context Request +// ue -> n +// 24.008 , 9.5.10 +// ----------------------------------------------------------------------------- +type record MODIFYPDPCONTEXTREQUEST_ul { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator sM_ProtocolDiscriminator, // protocol discriminator BITSTRING [4] + MessageType msgType, // message type BITSTRING [8] + LLC_SAPI requestedLLC_SAPI optional, // O TV BITSTRING [8] IEI = 32 + QualityOfService newQoS optional, // O TLV [14-22] IEI = 30 + TrafficFlowTemplate newTft optional, // O TLV [3-257] IEI = 31 + ProtocolConfigOptions protocolConfOpts optional, // O TLV [3-253] IEI = 27 + DeviceProperties deviceProperties optional // O TV 1 IEI=0xC- +}; + +// ============================================================================= +// PDU Type Definition +// Activate PDP Context Accept +// n -> ue +// Reference 3G PP 24.008 clause, 9.5.2 +// ----------------------------------------------------------------------------- +type record ACTIVATEPDPCONTEXTACCEPTdl { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator sM_ProtocolDiscriminator, // protocol discriminator BITSTRING [4] + MessageType msgType, // message type BITSTRING [8] + LLC_SAPI negiotiatedLLC_SAPI, // M V BITSTRING [8] + QualityOfService negiotiatedQoS, // M LV [13-21] + B4_Type spare, // M V BITSTRING [4] + RadioPriority radioPriority, // M V BITSTRING [4] + PktDataProtoAddr pDP_Address optional, // O TLV [4-24] IEI = 2B + ProtocolConfigOptions protocolConfOpts optional, // O TLV [3-253] IEI = 27 + PacketFlowIdentifier pktFlowID optional, // O TLV [3] IEI = 34 + SM_Cause2 smCause optional, // O TLV [3] IEI = 39 + ConnectivityType connectivityType optional /* cl. 10.5.6.19 O TV 1 IEI=0xB- @sic R5s120178 Baseline Moving sic@*/ +}; + +// ============================================================================= +// PDU Type Definition +// CC ALERTING downlink n -> ue +// 3G TS 24.008 cl. 9.3.1.1 +// ----------------------------------------------------------------------------- +type record ALERTINGdl { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator cC_ProtocolDiscriminator, // CC protocol discriminator BITSTRING [4] + MessageType msgType, // message type BITSTRING [8] + FacilityIE facility optional, // O [2-] TLV IEI = 1C + ProgInd progInd optional, // O [4] TLV IEI = 1E + UserUser userUser optional // O [3..131] TLV IEI= 7E +}; + +// ============================================================================= +// PDU Type Definition +// CC ALERTING uplink ue -> n +// 3G TS 24.008 cl. 9.3.1.2 +// ----------------------------------------------------------------------------- +type record ALERTINGul { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator cC_ProtocolDiscriminator, // CC protocol discriminator BITSTRING [4] + MessageType msgType, // message type BITSTRING [8] + FacilityIE facility optional, // O [2-] TLV IEI = 1C + UserUser userUser optional, // O [3..131] TLV IEI = 7E + SS_VersionInd sS_VersionInd optional // O [2..3] TLV IEI= 7F +}; + +// ============================================================================= +// PDU Type Definition +// CC CALL CONFIRMED ue -> n +// 3G TS 24.008 cl. 9.3.2 +// ----------------------------------------------------------------------------- +type record CALLCONFIRMED { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator cC_ProtocolDiscriminator, // CC protocol discriminator BITSTRING [4] + MessageType msgType, // message type BITSTRING [8] + RepeatInd repeatInd optional, // C BITSTRING[8] TV IEI = D- + Bcap bcap1 optional, // O [3..16] TLV IEI = 04 + Bcap bcap2 optional, // O [3..16] TLV IEI = 04 + Cau cau optional, // O [4..32] TLV IEI = 08 + CC_Capabilities cC_Capabilities optional, // O [3] TLV IEI = 15 + StreamId streamId optional, // O [3] TLV IEI = 2D + CodecList supportedCodecs optional // O [5-n] TLV IEI = 40 +}; + +// ============================================================================= +// PDU Type Definition +// CC CALL PROCEEDING n -> ue +// 3G TS 24.008 cl. 9.3.3 +// ----------------------------------------------------------------------------- +type record CALLPROCEEDING { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator cC_ProtocolDiscriminator, // CC protocol discriminator BITSTRING [4] + MessageType msgType, // message type BITSTRING [8] + RepeatInd repeatInd optional, // C BITSTRING[8] TV IEI = D- + Bcap bcap1 optional, // O [3..16] TLV IEI = 04 + Bcap bcap2 optional, // O [3..16] TLV IEI = 04 + FacilityIE facility optional, // O [2-] TLV IEI = 1C + ProgInd progInd optional, // O [4] TLV IEI = 1E + PriorityLvl priorityGranted optional, // O [1] TV IEI = 8- + NtwCCCapabilities ntwCC_Capabilities optional // O [3] TLV IEI = 2F +}; + +// ============================================================================= +// PDU Type Definition +// CC CONNECT ACKNOWLEDGE ue <-> n +// 3G TS 24.008 cl. 9.3.6 +// ----------------------------------------------------------------------------- +type record CONNECTACKNOWLEDGE { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator cC_ProtocolDiscriminator, // CC protocol discriminator BITSTRING [4] + MessageType msgType // message type BITSTRING [8] +}; + +// ============================================================================= +// PDU Type Definition +// CC CONNECT n -> ue +// 3G TS 24.008 cl. 9.3.5.1 +// ----------------------------------------------------------------------------- +type record CONNECTdl { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator cC_ProtocolDiscriminator, // CC protocol discriminator BITSTRING [4] + MessageType msgType, // message type BITSTRING [8] + FacilityIE facility optional, // O [2-] TLV IEI = 1C + ProgInd progInd optional, // O [4] TLV IEI = 1E + ConnectedNum connectedNum optional, // O [3..14] TLV IEI = 4C + ConnectedSubAdrs connectedSubAdrs optional, // O [2..23] TLV IEI = 4D + UserUser userUser optional // O [3..131] TLV IEI = 7E +}; + +// ============================================================================= +// PDU Type Definition +// CC CONNECT n <- ue +// 3G TS 24.008 cl. 9.3.5.2 +// ----------------------------------------------------------------------------- +type record CONNECTul { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator cC_ProtocolDiscriminator, // CC protocol discriminator BITSTRING [4] + MessageType msgType, // message type BITSTRING [8] + FacilityIE facility optional, // O [2-] TLV IEI = 1C + ConnectedSubAdrs connectedSubAdrs optional, // O [2..23] TLV IEI = 4D + UserUser userUser optional, // O [3..131] TLV IEI = 7E + SS_VersionInd sS_VersionInd optional, // O [2..3] TLV IEI = 7F + StreamId streamId optional // O [3] TLV IEI = 2D +}; + +// ============================================================================= +// PDU Type Definition +// CC EMERGENCY SETUP ue -> n +// 3G TS cl. 9.3.8 +// ----------------------------------------------------------------------------- +type record ESETUP { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator cC_ProtocolDiscriminator, // CC protocol discriminator BITSTRING [4] + MessageType msgType, // message type BITSTRING [8] + Bcap bcap optional, // O [3..11] TLV IEI = 04 + StreamId streamId optional, // O [3] TLV IEI = 2D + CodecList supportedCodecs optional, // O [5-n] IEI = 40 + ServCategory emergCategory optional // O TLV [3] TLV IEI = 2E +}; + +// ============================================================================= +// PDU Type Definition +// 3GPP 24.008 clause 9.4.22 +// ----------------------------------------------------------------------------- +type record SERVICEREJECT { + SkipIndicator skipIndicator, // Skip Indicator BITSTRING [4] + ProtocolDiscriminator gMMProtocolDiscriminator, // GMM Protocol Discriminator BITSTRING [4] + MessageType msgType, // Message Type BITSTRING [8] + RejCau gmmCause, // M 1 octet + GPRS_Timer2 t3346Value optional /* cl. 10.5.7.4 O TLV 3 IEI=0x3A @sic R5s120178 Baseline Moving sic@*/ +}; + +// ============================================================================= +// PDU Type Definition +// CC SETUP n -> ue +// 3G TS 24.008 cl. 9.3.23.1 +// ----------------------------------------------------------------------------- +type record SETUPdl { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator cC_ProtocolDiscriminator, // CC protocol discriminator BITSTRING [4] + MessageType msgType, // message type BITSTRING [8] + RepeatInd repeatInd optional, // C BITSTRING[8] TV IEI = D- + Bcap bcap1 optional, // O [3..16] TLV IEI = 04 + Bcap bcap2 optional, // O [3..16] TLV IEI = 04 + FacilityIE facility optional, // O [2-] TLV IEI = 1C + ProgInd progInd optional, // O [4] TLV IEI = 1E + Signal signal optional, // O [2] TV IEI = 34 + CGPN cgpn optional, // O [2..14] TLV IEI = 5C + CGPS cgps optional, // O [2..23] TLV IEI = 5D + CDPN cdpn optional, // O [2..43] TLV IEI = 5E + CDPS cdps optional, // O [2..23] TLV IEI = 6D + RedirectingPN redirectingPN optional,// O [3..19] TLV IEI = 74 + RedirectingPS redirectingPSubadrs optional,// O [2..23] TLV = 75 + RepeatInd llcRepeatInd optional,// O [1] TV IEI = D- + LLC llc1 optional, // O [2..18] TLV IEI = 7C + LLC llc2 optional, // C [2..18] TLV IEI = 7C + RepeatInd hlcRepeatInd optional,// O [1] TV IEI = D- + HLC hlc1 optional, // O [2..5] TLV IEI = 7D + HLC hlc2 optional, // C [2..5] TLV IEI = 7D + UserUser userUser optional, // O [3..131] TLV IEI = 7E + PriorityLvl priority optional, // O [1] TV IEI = 8- + AlertPattern alert optional, // O [3] TLV IEI = 19 + NtwCCCapabilities ntwCCCapabilities optional, // O [3] TLV IEI = 2F + CauNoCLI cauNoCLI optional, // O [3] TLV IEI = 3A + BuBcap buBcap optional // O TLV [3-15] IEI = 41 +}; + +// ============================================================================= +// PDU Type Definition +// Transparent mode RLC PDU. Ref 3G TS 25.322 clause 9.2.1.2 +// ----------------------------------------------------------------------------- +type record TrD_PDU { + bitstring data +}; + +// ============================================================================= +// PDU Type Definition +// PDCP-No-Header PDU. Ref 3G TS 25.323 clause 8.2.1 +// ----------------------------------------------------------------------------- +type record PDCP_PDU { + bitstring data +}; + +// ============================================================================= +// PDU Type Definition +// CC HOLD ACKNOWLEDGE n <-> ue +// 3G TS 24.008 cl. 9.3.11 +// ----------------------------------------------------------------------------- +type record HOLDACKNOWLEDGE { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator cC_ProtocolDiscriminator, // CC protocol discriminator BITSTRING [4] + MessageType msgType // message type BITSTRING [8] +}; + +// ============================================================================= +// PDU Type Definition +// CC HOLD ue <-> n +// 3G TS 24.008 cl. 9.3.10 +// ----------------------------------------------------------------------------- +type record HOLD { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator cC_ProtocolDiscriminator, // CC protocol discriminator BITSTRING [4] + MessageType msgType // message type BITSTRING [8] +}; + +// ============================================================================= +// PDU Type Definition +// CC RETRIEVE ACKNOWLEDGE n <-> ue +// 3G TS 24.008 cl. 9.3.21 +// ----------------------------------------------------------------------------- +type record RETRIEVEACKNOWLEDGE { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator cC_ProtocolDiscriminator, // CC protocol discriminator BITSTRING [4] + MessageType msgType // message type BITSTRING [8] +}; + +// ============================================================================= +// PDU Type Definition +// CC RETRIEVE ue <-> n +// 3G TS 24.008 cl. 9.3.20 +// ----------------------------------------------------------------------------- +type record RETRIEVE { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator cC_ProtocolDiscriminator, // CC protocol discriminator BITSTRING [4] + MessageType msgType // message type BITSTRING [8] +}; + +// ============================================================================= +// PDU Type Definition +// STATUS +// 3G TS 24.008 cl. 9.3.27 +// ----------------------------------------------------------------------------- +type record STATUS { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator cC_ProtocolDiscriminator, // CC protocol discriminator BITSTRING [4] + MessageType msgType, // message type BITSTRING [8] + Cau statusCause, // cause M LV [3-31] + Call_State callState, // call state M V [1] + AuxiliaryStates auxStates optional // auxiliary states O TLV [3] IEI=24 +}; + +// ============================================================================= +// PDU Type Definition +// STATUS ENQUIRY +// 3G TS 24.008 cl. 9.3.28 +// ----------------------------------------------------------------------------- +type record STATUS_ENQUIRY { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator cC_ProtocolDiscriminator, // CC protocol discriminator BITSTRING [4] + MessageType msgType // message type BITSTRING [8] +}; + +// ============================================================================= +// Structured Type Definition +// LSA Identity +// 3G TS 24.008 cl. 10.5.3.11 +// ----------------------------------------------------------------------------- +type record LSA_Id { + IEI8_Type iei, + Type4Length_Type iel, + octetstring lSA_Id +}; + + +// ============================================================================= +// PDU Type Definition +// GMM Information +// n->ue +// 3GPP 24.008 clause, 9.4.19 +// ----------------------------------------------------------------------------- +type record GMM_INFORMATION { + SkipIndicator skipIndicator, // Skip Indicator BITSTRING [4] + ProtocolDiscriminator gMMProtocolDiscriminator, // GMM Protocol Discriminator BITSTRING [4] + MessageType msgType, // Message Type BITSTRING [8] + NetworkName fullNtwName optional, // Full name for network TLV 3-? + NetworkName shortNtwName optional, // Short name for network TLV 3-? + TimeZone localTimeZone optional, // Local time zone TV 2 + TimeZoneAndTime universalTimeAndLocalTimeZone optional, // Universal time and local time zone TV 8 + LSA_Id lSA_Id optional, // LSA identity TLV 2-5 + DaylightSavingTime ntwDaylightSavingTime optional // Network daylight saving time TLV 3 +}; + +// ============================================================================= +// PDU Type Definition +// MM Information +// n->ue +// 3GPP 24.008 clause, 9.2.15a +// ----------------------------------------------------------------------------- +type record MM_INFORMATION { + SkipIndicator skipIndicator, // Skip Indicator BITSTRING [4] + ProtocolDiscriminator mMProtocolDiscriminator, // MM Protocol Discriminator BITSTRING [4] + MessageType msgType, // Message Type BITSTRING [8] + NetworkName fullNtwName optional, // Full name for network TLV 3-? + NetworkName shortNtwName optional, // Short name for network TLV 3-? + TimeZone localTimeZone optional, // Local time zone TV 2 + TimeZoneAndTime universalTimeAndLocalTimeZone optional, // Universal time and local time zone TV 8 + LSA_Id lSA_Id optional, // LSA identity TLV 2-5 + DaylightSavingTime ntwDaylightSavingTime optional // Network daylight saving time TLV 3 +}; + + +// ============================================================================= +// PDU Type Definition +// CC HOLD REJECT n -> ue +// 3G TS 24.008 cl. 9.3.12 +// ----------------------------------------------------------------------------- +type record HOLDREJECT { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator cC_ProtocolDiscriminator, // CC protocol discriminator BITSTRING [4] + MessageType msgType, // message type BITSTRING [8] + Cau cause // cause M LV [3-31] +}; + +// ============================================================================= +// PDU Type Definition +// CC RETRIEVE REJECT n -> ue +// 3G TS 24.008 cl. 9.3.22 +// ----------------------------------------------------------------------------- +type record RETRIEVEREJECT { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator cC_ProtocolDiscriminator, // CC protocol discriminator BITSTRING [4] + MessageType msgType, // message type BITSTRING [8] + Cau cause // cause M LV [3-31] +}; + +} with { encode "NAS Types"} diff --git a/LTE_A_IWD_14wk37/Common/IRAT/UTRANGERAN_CommonFunctions.ttcn b/LTE_A_IWD_14wk37/Common/IRAT/UTRANGERAN_CommonFunctions.ttcn new file mode 100644 index 0000000..543abd6 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IRAT/UTRANGERAN_CommonFunctions.ttcn @@ -0,0 +1,194 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-07 18:37:49 +0200 (Sun, 07 Sep 2014) $ +// $Rev: 12081 $ +/******************************************************************************/ + +module UTRANGERAN_CommonFunctions { + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from CommonDefs all; + import from NAS_24008TypeDefs all; + import from NAS_CommonTypeDefs all; + import from NAS_24008Templates_IRAT all; + import from Parameters all; + import from CommonIP all; + + //---------------------------------------------------------------------------- + + type enumerated UTRAN_GERAN_Type {UTRAN_GERAN, UTRAN_Only}; + type enumerated UTRAN_GERAN_ATTACH_Type {Combined, PS_Only, NotSpecified}; /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + //---------------------------------------------------------------------------- + + /* + * @desc PktDataProtoAddr TS 24.008 clause 10.5.6.4 (TV version IEI is omit) + * @param p_IPallocationViaNas + * @return template (value) PktDataProtoAddr + * @status APPROVED (LTE_IRAT, UTRAN) + */ + function f_UG_GetPktDataProtoAddr (boolean p_IPallocationViaNas) return template (value) PktDataProtoAddr + { /* @sic R5s130362 - MCC160 Implementation: tsc_PDN_AddressInfo sic@ */ + var charstring v_IPv4_Address_UE := tsc_PDN1_AddressInfo.UE_IPAddressIPv4; + var charstring v_IPv6_Address_UE := tsc_PDN1_AddressInfo.UE_IPAddressIPv6; + var template (value) PktDataProtoAddr v_PDN_Address := cs_PktDataProtoAddrMT('06'O, tsc_PDP_TypeNoIPv4, '00000000'O); // Start with ipv4 values for now + + if (pc_IPv6 and pc_IPv4) { + // Address info consists of 4 octets IPv4 address identifier followed with the 8 octets IPv6 interface + // See TS 24.008 clause 10.5.6.4 + v_PDN_Address.iel := '16'O; + v_PDN_Address.pDP_TypeNo := tsc_PDP_TypeNoIPv4v6; + if (p_IPallocationViaNas){ + v_PDN_Address.addrInfo := f_Convert_IPv4Addr2OctString(v_IPv4_Address_UE) & f_Convert_IPv6Addr2OctString(v_IPv6_Address_UE); // @sic R5-113734 sic@ + } else { + v_PDN_Address.addrInfo := '00000000'O & f_Convert_IPv6Addr2OctString(v_IPv6_Address_UE); // @sic R5-113734 sic@ + } + } // IPv4v6 + else { + if (pc_IPv4) { // IPv4 only + v_PDN_Address.pDP_TypeNo := tsc_PDP_TypeNoIPv4; + if (p_IPallocationViaNas){ + v_PDN_Address.addrInfo := f_Convert_IPv4Addr2OctString(v_IPv4_Address_UE); // @sic R5-113734 sic@ + } + } + else { // IPv6 only + v_PDN_Address.iel := '12'O; + v_PDN_Address.pDP_TypeNo := tsc_PDP_TypeNoIPv6; + if (p_IPallocationViaNas){ + v_PDN_Address.addrInfo := f_Convert_IPv6Addr2OctString(v_IPv6_Address_UE); // @sic R5-113734 sic@ + } + } + } + return v_PDN_Address; + }; + + //------------------------------------------------------------------------------------------ + /* + * @desc Converts a PLMN ID from ASN.1 to NAS representation. + * @param p_PlmnId .. PLMN ID as defined in UTRAN RRC ASN.1. + * @return NAS_PlmnId .. NAS representation of the PLMN ID (O3_Type) + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_U_Asn2Nas_PlmnId(PLMN_Identity p_PlmnId) return NAS_PlmnId + { // This is a copy of the EUTRAN function (f_Asn2Nas_PlmnId), but this version will use the UTRAN ASN + + var hexstring v_MCC := '000'H; // initialised with 3 digits which will be overwritten + var hexstring v_MNC := 'FFF'H; // initialised with 3 'F'H => if lengthof(p_PlmnId.mnc) < 3 the remaining digits are 'F'H + var Digit v_Digit; + var integer I; + + for (I := 0; (I < lengthof(p_PlmnId.mcc)) and(I < lengthof(v_MCC)); I := I + 1) { + v_Digit := p_PlmnId.mcc[I]; + v_MCC[I] := int2hex(v_Digit, 1); + } + + for (I := 0; (I < lengthof(p_PlmnId.mnc)) and (I < lengthof(v_MNC)); I := I + 1) { + v_Digit := p_PlmnId.mnc[I]; + v_MNC[I] := int2hex(v_Digit, 1); + } + + // build PLMN ID representation as used in NAS + // TAI/TAI list/MobileIdentity[GUTI]/... + return hex2oct(v_MCC[1] & v_MCC[0] & + v_MNC[2] & v_MCC[2] & + v_MNC[1] & v_MNC[0]); + } + + //---------------------------------------------------------------------------- + /* + * @desc Convert the hexstring IMSI into the ASN.1 sequence of digits + * This is similar to the EUTRAN function, but using the UTRAN ASN.1 + * @param p_Hex + * @return IMSI_GSM_MAP + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_U_ConvertImsi2ASN (hexstring p_Hex) return IMSI_GSM_MAP + { + var IMSI_GSM_MAP v_ReturnValue; + var integer I; + var integer v_Length := lengthof(p_Hex); + + if (v_Length < 6 or v_Length > 21) { + FatalError(__FILE__, __LINE__, "invalid length of IMSI"); + } + for (I := 0; I < v_Length; I := I + 1) { + v_ReturnValue[I] := hex2int(p_Hex[I]); + } + return v_ReturnValue; + } + + + //---------------------------------------------------------------------------- + /* + * @desc to calculate timer tolerance acc. to 34.108 cl. 4.2.3 + * @param p_Timer + * @return float + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function fl_UG_GetTimerTolerance(float p_Timer) return float + { + var float v_LargeTolerance := p_Timer * 0.1; + var float v_LittleTolerance := (2.0 * 0.01) + 0.055; /* 2*TTI + 55ms */ + + if (v_LittleTolerance <= v_LargeTolerance) { + return v_LargeTolerance; + } + else { + return v_LittleTolerance; + } + } + + //---------------------------------------------------------------------------- + /* + * @desc to calculate lower bound of timer tolerance acc. to 34.108 cl. 4.2.3 + * @param p_Timer + * @return float + * @status APPROVED (LTE_IRAT) + */ + function f_UG_SetTimerToleranceMin(float p_Timer) return float + { + var float v_Tolerance := fl_UG_GetTimerTolerance(p_Timer); + if (p_Timer < v_Tolerance) { + return 0.0; + } + return p_Timer - v_Tolerance; + } + + //---------------------------------------------------------------------------- + /* + * @desc to calculate upper bound of timer tolerance acc. to 34.108 cl. 4.2.3 + * @param p_Timer + * @return float + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UG_SetTimerToleranceMax(float p_Timer) return float + { + return p_Timer + fl_UG_GetTimerTolerance (p_Timer); + } + + //---------------------------------------------------------------------------- + /* + * @desc to assign update result value to given update type received in the Routing area update request + * @param p_RauReq + * @param p_NewValueFor000 (default value: '000'B) + * @return B3_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_UG_RauReq_GetUpdateValueForRauAcc(ROUTINGAREAUPDATEREQUEST p_RauReq, + B3_Type p_NewValueFor000 := '000'B) return B3_Type + { + var B3_Type v_UpdateType := p_RauReq.updateType.updateValue; + + if (v_UpdateType != '000'B) { + v_UpdateType := '001'B; + } else { + v_UpdateType := p_NewValueFor000; + } + return v_UpdateType; + } + +} diff --git a/LTE_A_IWD_14wk37/Common/IRAT/UTRAN_CapabilityFunctions.ttcn b/LTE_A_IWD_14wk37/Common/IRAT/UTRAN_CapabilityFunctions.ttcn new file mode 100644 index 0000000..4e441bb --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IRAT/UTRAN_CapabilityFunctions.ttcn @@ -0,0 +1,64 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-05-24 23:07:55 +0200 (Sat, 24 May 2014) $ +// $Rev: 11321 $ +/******************************************************************************/ + +module UTRAN_CapabilityFunctions { + + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from CommonDefs all; + + //---------------------------------------------------------------------------- + /* + * @desc To be called from the EUTRA PTC to decode the Inter Rat Handover Info message + * @param p_Octetstring .. container which is to be decoded + * @return InterRATHandoverInfo .. to hold the decoded message + * @status APPROVED (LTE, LTE_A, LTE_IRAT) + */ + function f_U_DecodeInterRatHandoverInfo(octetstring p_Octetstring) return InterRATHandoverInfo + { //36.331 cl. 6.3.6: The octet string contains the INTER RAT HANDOVER INFO message defined in TS 25.331 + var InterRATHandoverInfo v_Received_UeCapabilitiesRAT_Container_UTRAN; + var bitstring v_Bitstring := oct2bit(p_Octetstring); + var integer v_Result := decvalue(v_Bitstring, v_Received_UeCapabilitiesRAT_Container_UTRAN); + + if (v_Result != 0) { + FatalError(__FILE__, __LINE__, "UE UTRAN Capability cannot be decoded"); + } + + return v_Received_UeCapabilitiesRAT_Container_UTRAN; + } + + /* + * @desc To decode the Inter Rat Handover Info and extract the start-PS value - in order for it to be sent to UTRAN + * @param p_Octetstring .. container which is to be decoded + * @return B20_Type .. to hold the start-PS value + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_U_DecodeInterRatHandoverInfo_AndGetStartPSValue(octetstring p_Octetstring) return B20_Type + { + var InterRATHandoverInfo v_RxdRATContainer_UTRAN := f_U_DecodeInterRatHandoverInfo(p_Octetstring); + var B20_Type v_StartPS := v_RxdRATContainer_UTRAN.v390NonCriticalExtensions.present_.v3a0NonCriticalExtensions.laterNonCriticalExtensions.v3g0NonCriticalExtensions.v4b0NonCriticalExtensions.v4d0NonCriticalExtensions.v590NonCriticalExtensions.v690NonCriticalExtensions.interRATHandoverInfo_v690ext.ue_SecurityInformation2.start_PS; + + return v_StartPS; + } + + /* + * @desc To decode the Inter Rat Handover Info and extract the start-CS value - in order for it to be sent to UTRAN + * @param p_Octetstring .. container which is to be decoded + * @return B20_Type .. to hold the start-CS value + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_U_DecodeInterRatHandoverInfo_AndGetStartCSValue(octetstring p_Octetstring) return B20_Type + { + var InterRATHandoverInfo v_RxdRATContainer_UTRAN := f_U_DecodeInterRatHandoverInfo(p_Octetstring); + var B20_Type v_StartCS := v_RxdRATContainer_UTRAN.uE_SecurityInformation.present_.start_CS; + + return v_StartCS; + } +} diff --git a/LTE_A_IWD_14wk37/Common/IRAT/UTRAN_CapabilityFunctions_IRAT.ttcn b/LTE_A_IWD_14wk37/Common/IRAT/UTRAN_CapabilityFunctions_IRAT.ttcn new file mode 100644 index 0000000..a9f6290 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IRAT/UTRAN_CapabilityFunctions_IRAT.ttcn @@ -0,0 +1,873 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-07 23:45:59 +0200 (Sun, 07 Sep 2014) $ +// $Rev: 12082 $ +/******************************************************************************/ + +module UTRAN_CapabilityFunctions_IRAT { + + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_ASP_Definitions language "ASN.1:2002" all; + import from UTRAN_CommonDefs all; + import from UTRAN_RRC_CommonTemplates all; + import from UTRAN_RRC_Templates all; + import from UTRAN_RRC_RAB_Templates all; + import from UTRAN_RRC_RAB_Templates_r9 all; + import from UTRAN_Parameters all; + import from UTRAN_TypeDefs all; + import from NAS_24008TypeDefs all; + import from CommonDefs all; + + //---------------------------------------------------------------------- + // Templates + //---------------------------------------------------------------------- + + type HandoverToUTRANCommand_r8_IEs.specificationMode.complete HandoverToUTRANCommand_r8_Complete_Type; /* @status APPROVED (LTE_A, LTE_IRAT) */ + type HandoverToUTRANCommand_r9_IEs.specificationMode.complete HandoverToUTRANCommand_r9_Complete_Type; /* @status APPROVED (LTE_A, LTE_IRAT) */ + + template (value) HandoverToUTRANCommand cs_HandoverToUTRANCommand_r8(CipheringAlgorithm_r7 p_CiphAlg, + template (omit) B16_Type p_New_H_RNTI, + template (value) HandoverToUTRANCommand_r8_Complete_Type p_HandoverToUTRANCommand_Complete, + template (omit) E_RNTI p_E_RNTI := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + criticalExtensions := { //r3 + criticalExtensions := {//r4 + criticalExtensions := {//r5 + criticalExtensions := {//r6 + criticalExtensions := {//r7 + r8 := { + handoverToUTRANCommand_r8 := { + new_U_RNTI := cs_URNTI_Short, + cipheringAlgorithm := p_CiphAlg, + supportForChangeOfUE_Capability := false, + new_H_RNTI := p_New_H_RNTI, + newPrimary_E_RNTI := p_E_RNTI, // @sic R5s120397 sic@ + newSecondary_E_RNTI := omit, + dummy := omit, /* @sic R5s120178 BASELINE MOVING 2012 (defaultConfigForCellFACH renamed to dummy) sic@ */ + specificationMode := { + complete := p_HandoverToUTRANCommand_Complete + }, + maxAllowedUL_TX_Power := 21 // @sic R5s130711 sic@ + }, + v7d0NonCriticalExtensions := omit + } + } + } + } + } + } + }; + + template (value) HandoverToUTRANCommand cs_HandoverToUTRANCommand_r9(CipheringAlgorithm_r7 p_CiphAlg, + template (omit) B16_Type p_New_H_RNTI, + template (value) HandoverToUTRANCommand_r9_Complete_Type p_HandoverToUTRANCommand_Complete, + template (omit) E_RNTI p_E_RNTI := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + criticalExtensions := { //r3 + criticalExtensions := {//r4 + criticalExtensions := {//r5 + criticalExtensions := {//r6 + criticalExtensions := {//r7 + criticalExtensions := {//r8 + r9 := { + handoverToUTRANCommand_r9 := { + new_U_RNTI := cs_URNTI_Short, + cipheringAlgorithm := p_CiphAlg, + supportForChangeOfUE_Capability := false, + new_H_RNTI := p_New_H_RNTI, + newPrimary_E_RNTI := p_E_RNTI, + newSecondary_E_RNTI := omit, + defaultConfigForCellFACH := omit, + specificationMode := { + complete := p_HandoverToUTRANCommand_Complete + }, + maxAllowedUL_TX_Power := 21 // @sic R5s130711 sic@ + }, + v9c0NonCriticalExtensions := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + } + } + } + } + } + } + } + }; + + //---------------------------------------------------------------------- + + template (value) SRB_InformationSetupList_r8 cs_SRB_InformationSetupList_r8_DCH := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_SRB_InfoSetupUM_DCH_r8(tsc_UL_DCCH1, 1, 1, tsc_DL_DCCH1), + cs_SRB_InfoSetupAM_DCH_r8(tsc_UL_DCCH2, 2, 2, tsc_DL_DCCH2), + cs_SRB_InfoSetupAM_DCH_r8(tsc_UL_DCCH3, 3, 3, tsc_DL_DCCH3), + cs_SRB_InfoSetupAM_DCH_r8(tsc_UL_DCCH4, 4, 4, tsc_DL_DCCH4) + }; + + //---------------------------------------------------------------------- + + template (value) DL_CommonInformation_r8 cs_DL_CommonInformationRB_ForHO_FDD(SF512_AndPilot p_Sf, + PositionFixedOrFlexible p_PositionFixedOrFlexible, + boolean p_TfciExistence := true, + template (omit) DPCH_CompressedModeInfo_r8 p_DPCH_CompressedModeInfo := omit, + template (omit) TX_DiversityMode p_TX_DiversityMode := noDiversity) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_DL_CommonInformation_FDD_r8(cs_DL_DPCH_CfnHandling_Initialise_r6, p_Sf, p_PositionFixedOrFlexible, p_TfciExistence, tsc_DefaultDPCH_OffsetValue, p_DPCH_CompressedModeInfo, p_TX_DiversityMode); + + + template (value) SynchronisationParameters_r4 cs_SynchronisationParameters_r4 := + { /* @status APPROVED (LTE_IRAT) */ + sync_UL_CodesBitmap := '11111111'B, + fpach_Info := { + timeslot := 0, + channelisationCode := tsc_FPACH1_ChC, + midambleShiftAndBurstType := { + midambleAllocationMode := { + defaultMidamble := NULL + }, + midambleConfiguration := 4 + }, + wi := 4 + }, + prxUpPCHdes := 15, + sync_UL_Procedure := omit /*{ + * max_SYNC_UL_Transmissions := tr8, + * powerRampStep := 3 + *}*/ + }; + + template (value) UL_DPCH_Info_r7 cs_UL_DPCH_64k_PS_HANDOVER_TDD := cs_UL_DPCH_Info_1TS_TDD(1, omit, tfci_bits_16, pl0_56,1, tsc_UL_DPCH1_ChC_64k_PS, cs_SynchronisationParameters_r4); /* @status APPROVED (LTE_IRAT) */ + + //---------------------------------------------------------------------- + + template (value) HandoverToUTRANCommand_r8_Complete_Type cs_HandoverToUTRANCommand_Complete_64kPS_FDD(bitstring p_RAB_Id, + UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode, + template (value) FrequencyInfo p_FrequencyInfo) := + { /* @status APPROVED (LTE_IRAT) */ + srb_InformationSetupList := cs_SRB_InformationSetupList_r8_DCH, + rab_InformationSetupList := { + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A3 in TS 34.108 clause 9.1.1 + cs_RAB_InfoSetupDCH_PS_64k (p_RAB_Id, cs_RLC_InfoAM_Def) + }, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A3 in TS 34.108 clause 9.1.1: UL Transport channel information common for all transport channels + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCH_PS_64k_FDD, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A3 in TS 34.108 clause 9.1.1: Added or Reconfigured UL TrCH information + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A3 in TS 34.108 clause 9.1.1: DL Transport channel information common for all transport channels + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_FDD(cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A3 in TS 34.108 clause 9.1.1: Added or Reconfigured DL TrCH information + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCH_PS_64k, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A3 in TS 34.108 clause 9.1.1: Uplink DPCH info + ul_DPCH_Info := cs_UL_DPCH_Info_FDD(tsc_UL_DPDCH_SF_64k_PS, pl0_96, p_UL_ScramblingCode), + ul_EDCH_Information := omit, + dl_HSPDSCH_Information := omit, + //@sic R5s110216 sic@ + dl_CommonInformation := cs_DL_CommonInformationRB_ForHO_FDD(tsc_DL_DPCH1_SFP_64k_PS, flexible), + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A3 in TS 34.108 clause 9.1.1: Downlink information for each radio link list + dl_InformationPerRL_List := cs_DL_InformationPerRL_r7_FDD(p_PrimScramblingCode, tsc_DL_DPCH1_ChC_64k_PS, tsc_DL_DPCH1_2ndScrC), + frequencyInfo := p_FrequencyInfo, + multi_frequencyInfo := omit + }; + + template (value) HandoverToUTRANCommand_r8_Complete_Type cs_HandoverToUTRANCommand_Complete_64kPS_DCH4_FDD(bitstring p_RAB_Id, + UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode, + template (value) FrequencyInfo p_FrequencyInfo) := + { /* @status APPROVED (LTE_IRAT) */ + srb_InformationSetupList := cs_SRB_InformationSetupList_r8_DCH, + rab_InformationSetupList := { + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A3 in TS 34.108 clause 9.1.1 + cs_RAB_Info_PS_Common(p_RAB_Id, tsc_RB20, cs_PDCP_Info_DCH_PS, cs_RLC_InfoAM_Def, cs_RB_MappingInfo_PS(tsc_DL_DCH4, tsc_UL_DCH4)) + }, + + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A3 in TS 34.108 clause 9.1.1: UL Transport channel information common for all transport channels + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCH_PS_64k_FDD, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A3 in TS 34.108 clause 9.1.1: Added or Reconfigured UL TrCH information + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k(tsc_UL_DCH4), + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A3 in TS 34.108 clause 9.1.1: DL Transport channel information common for all transport channels + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_FDD(cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A3 in TS 34.108 clause 9.1.1: Added or Reconfigured DL TrCH information + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCH_PS_64k (tsc_DL_DCH4, tsc_UL_DCH4), // @sic R5s120119 sic@ + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A3 in TS 34.108 clause 9.1.1: Uplink DPCH info + ul_DPCH_Info := cs_UL_DPCH_Info_FDD(tsc_UL_DPDCH_SF_64k_PS, pl0_96, p_UL_ScramblingCode), + ul_EDCH_Information := omit, + dl_HSPDSCH_Information := omit, + //@sic R5s110216 sic@ + dl_CommonInformation := cs_DL_CommonInformationRB_ForHO_FDD(tsc_DL_DPCH1_SFP_64k_PS, flexible), + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A3 in TS 34.108 clause 9.1.1: Downlink information for each radio link list + dl_InformationPerRL_List := cs_DL_InformationPerRL_r7_FDD(p_PrimScramblingCode, tsc_DL_DPCH1_ChC_64k_PS, tsc_DL_DPCH1_2ndScrC), + frequencyInfo := p_FrequencyInfo, + multi_frequencyInfo := omit + }; + + //---------------------------------------------------------------------- + + template (value) HandoverToUTRANCommand_r9_Complete_Type cs_HandoverToUTRANCommand_Complete_64kPS_DCH4_TDD(bitstring p_RAB_Id, + CellParametersID p_CellParametersID, + template (value) FrequencyInfo p_FrequencyInfo) := + { /* @status APPROVED (LTE_IRAT) */ + srb_InformationSetupList := cs_SRB_InformationSetupList_r8_DCH, + rab_InformationSetupList := { + cs_RAB_Info_PS_Common(p_RAB_Id, tsc_RB20, cs_PDCP_Info_DCH_PS, cs_RLC_InfoAM_Def, cs_RB_MappingInfo_PS(tsc_DL_DCH4, tsc_UL_DCH4, cs_RLC_SizeExplicit1)) //@sic R5s130432 sic@ + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCH_PS_64k_TDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k (tsc_UL_DCH4), + dl_CommonTransChInfo := cs_DL_CommonTransChInfoSameAsUL_r4_TDD, + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCH_PS_64k_r9 (tsc_DL_DCH4, tsc_UL_DCH4), // @sic R5s120119, R5s130447 sic@ + ul_DPCH_Info := cs_UL_DPCH_64k_PS_HANDOVER_TDD, //@sic R5s140152 R5-142431 sic@ + ul_EDCH_Information := omit, + dl_HSPDSCH_Information := omit, + dl_CommonInformation := cs_DL_CommonInfo_r8_TDD, + dl_InformationPerRL_List := cs_DL_InformationPerRL_r7_TDD(p_CellParametersID, cs_DL_DPCH_InfoPerRL_r7_64k_PS_TDD), + frequencyInfo := p_FrequencyInfo, + multi_frequencyInfo := omit + }; + + template (value) HandoverToUTRANCommand_r9_Complete_Type cs_HandoverToUTRANCommand_Complete_64kPS_TDD(bitstring p_RAB_Id, + CellParametersID p_CellParametersID, + template (value) FrequencyInfo p_FrequencyInfo) := + { /* @status APPROVED (LTE_IRAT) */ + srb_InformationSetupList := cs_SRB_InformationSetupList_r8_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupDCH_PS_64k (p_RAB_Id, cs_RLC_InfoAM_Def) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCH_PS_64k_TDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoSameAsUL_r4_TDD, + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCH_PS_64k_r9, + ul_DPCH_Info := cs_UL_DPCH_64k_PS_HANDOVER_TDD, //@sic R5s140152 sic@ + ul_EDCH_Information := omit, + dl_HSPDSCH_Information := omit, + dl_CommonInformation := cs_DL_CommonInfo_r8_TDD, + dl_InformationPerRL_List := cs_DL_InformationPerRL_r7_TDD(p_CellParametersID, cs_DL_DPCH_InfoPerRL_r7_64k_PS_TDD), + frequencyInfo := p_FrequencyInfo, + multi_frequencyInfo := omit + }; + + //---------------------------------------------------------------------- + + template (value) HandoverToUTRANCommand_r8_Complete_Type cs_HandoverToUTRANCommand_Complete_HSDPA_FDD(bitstring p_RAB_Id, + UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode, + template (value) FrequencyInfo p_FrequencyInfo) := + { /* @status APPROVED (LTE_IRAT) */ + srb_InformationSetupList := cs_SRB_InformationSetupList_r8_DCH, + rab_InformationSetupList := { + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A10 in TS 34.108 clause 9.1.1 + cs_RAB_InfoSetupDCH_PS_HSDPA (p_RAB_Id, cs_RLC_InfoAM_HSDPA) + }, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A10 in TS 34.108 clause 9.1.1: UL Transport channel information common for all transport channels + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCH_PS_64k_FDD, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A10 in TS 34.108 clause 9.1.1: Added or Reconfigured UL TrCH information + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A10 in TS 34.108 clause 9.1.1: DL Transport channel information common for all transport channels + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_FDD(cs_TFCS_Cmpl0_1_Rx), + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A10 in TS 34.108 clause 9.1.1: Added or Reconfigured DL TrCH information + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoList_1DCH_HS_PS_HSDPA_FDD, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A10 in TS 34.108 clause 9.1.1: Uplink DPCH info + ul_DPCH_Info := cs_UL_DPCH_InfoACK_HSDPA_FDD(tsc_UL_DPDCH_SF_64k_PS, pl0_96, p_UL_ScramblingCode), + ul_EDCH_Information := omit, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A10 in TS 34.108 clause 9.1.1 + dl_HSPDSCH_Information := cs_DL_HSPDSCH_Information_FDD(cs_HS_SCCH_Info_FDD, + cs_Measurement_Feedback_Info), + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A10 in TS 34.108 clause 9.1.1: Downlink information common for all radio links + dl_CommonInformation := cs_DL_CommonInformationRB_ForHO_FDD(tsc_DL_DPCH1_SFP_SRB_3_4k, fixed, false),// @sic R5s110683 sic@ + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A3 in TS 34.108 clause 9.1.1: Downlink information for each radio link list + dl_InformationPerRL_List := cds_DL_InfoPerRL_HSDPA_r7_FDD(p_PrimScramblingCode, tsc_Sfc256_C0, tsc_DL_DPCH1_2ndScrC), + frequencyInfo := p_FrequencyInfo, + multi_frequencyInfo := omit + }; + + //---------------------------------------------------------------------- + + template (value) HandoverToUTRANCommand_r9_Complete_Type cs_HandoverToUTRANCommand_Complete_HSDPA_TDD(bitstring p_RAB_Id, + CellParametersID p_CellParametersID, + template (value) FrequencyInfo p_FrequencyInfo) := + { /* @status APPROVED (LTE_IRAT) */ + srb_InformationSetupList := cs_SRB_InformationSetupList_r8_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupDCH_PS_HSDPA (p_RAB_Id, cs_RLC_InfoAM_HSDPA) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCH_PS_64k_TDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_TDD(cs_TFCS_Cmpl0_1_Rx), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoList_1DCH_HS_PS_HSDPA_TDD, + ul_DPCH_Info := cs_UL_DPCH_64k_PS_HANDOVER_TDD, //@sic R5s140152 R5-142431 sic@ + ul_EDCH_Information := omit, + dl_HSPDSCH_Information := cs_DL_HSPDSCH_Information_TDD(cs_HS_SCCH_Info_TDD, cs_HS_PDSCH_Midamble_Configuration_TDD128),//FFS - check values + dl_CommonInformation := cs_DL_CommonInfo_r8_TDD, + dl_InformationPerRL_List := cs_DL_InformationPerRL_r7_TDD(p_CellParametersID, cs_DL_DPCH_InfoPerRL_SRB_TDD),//ffs - check values + frequencyInfo := p_FrequencyInfo, + multi_frequencyInfo := omit + }; + + template (present) UE_SecurityInformation2 cr_UE_SecurityInformation2 := + { + start_PS := ? // @sic R5-113674 sic@ + }; + + //---------------------------------------------------------------------- + // Templates for the HSPA handover command + //---------------------------------------------------------------------- + + template (value) DL_InformationPerRL_List_r7 cs_DL_InfoPerRL_HSUwithFDPCH_FDD (PrimaryScramblingCode p_ScrmbCode) := + { /* @status APPROVED (LTE_IRAT) */ + { + modeSpecificInfo := { + fdd := { + primaryCPICH_Info := { + primaryScramblingCode := p_ScrmbCode + }, + servingHSDSCH_RL_indicator := true, + servingEDCH_RL_indicator := true + } + }, + dl_dpchInfo := { + dl_FDPCH_InfoPerRL := cs_DL_DPCH_InfoPerRL_FDPCH_FDD + }, + e_AGCH_Information := cs_E_AGCH_Info_FDD_r7, + modeSpecificInfo2 := { + fdd := { + e_HICH_Info := { + e_HICH_Information := cs_E_HICH_Info + }, + e_RGCH_Info := omit + } + }, + cell_id := omit + } + }; + + template (value) DL_InformationPerRL_List_r7 cs_DL_InfoPerRL_HSUwithFDPCH_TDD(CellParametersID p_CellParametersID, + template (value) DL_DPCH_InfoPerRL_r7 p_DL_DPCH_InfoPerRL_r7) := + { /* According to condition A3 in TS 34.108 clause 9.1.1: Downlink information for each radio link list */ + /* @status APPROVED (LTE_IRAT) */ + { + modeSpecificInfo := { + tdd := { + tdd := { + tddOption := { + tdd128 := { + tstd_Indicator := false + } + }, + cellParametersID := p_CellParametersID, + sctd_Indicator := false + } + } + }, + dl_dpchInfo := { + dl_DPCH_InfoPerRL := p_DL_DPCH_InfoPerRL_r7 + }, + e_AGCH_Information := omit, + modeSpecificInfo2 := { + tdd := { + tdd128 := { + e_HICH_Info := { + n_E_HICH := 4, + e_HICH_InfoList := { + { + ei := 0, + timeslotNumber := 6, + channelisation_Code := cc16_15, + midambleAllocationMode := {defaultMidamble := NULL}, + midambleConfiguration := 8 + } + } + } + } + } + }, + cell_id := omit + } + }; + + template (value) E_DPDCH_SchedulingTransmConfiguration cs_E_DPDCH_SchedulingTransmConfiguration_NoGrant := + { /* @status APPROVED (LTE_IRAT, UTRAN) */ + ms2_SchedTransmGrantHARQAlloc := omit, + servingGrant := omit + }; + + template (value) UL_EDCH_Information_r8 cs_UL_EDCH_Information_FDD := + { /* @status APPROVED (LTE_IRAT) */ + mac_es_e_resetIndicator := true_, + modeSpecificInfo := { + fdd := { + e_DPCCH_Info := cs_E_DPCCH_Info, + e_DPDCH_Info := cs_E_DPDCH_Info, + schedulingTransmConfiguration := cs_E_DPDCH_SchedulingTransmConfiguration_NoGrant, + ul_16QAM_Settings := omit + } + } + }; + + template (value) UL_EDCH_Information_r9 cs_UL_EDCH_Information_TDD := + { /* @status APPROVED (LTE_IRAT) */ + mac_es_e_resetIndicator := true_, + modeSpecificInfo := { + tdd := { + e_RUCCH_Info := cs_E_RUCCH_Info, + e_PUCH_Info := cs_E_PUCH_Info, + non_ScheduledTransGrantInfo := omit + } + } + }; + + template (value) E_DCH_AddReconf_MAC_d_Flow_r7 cs_E_DCH_AddReconf_MAC_d_Flow_DCCH_r7_FDD(integer p_MaxMAC_e_PDUContents := 162) := + { /* @status APPROVED (LTE_IRAT, UTRAN) */ + mac_d_FlowIdentity := tsc_E_DCH_MAC_d_FlowId_DCCH, + mac_d_FlowPowerOffset := tsc_E_DCH_MAC_d_FlowPowerOffset, + mac_d_FlowMaxRetrans := tsc_E_DCH_MAC_d_FlowMaxRetrans_DCCH, + mac_d_FlowRetransTimer := omit, + mac_d_FlowMultiplexingList := omit, + transmissionGrantType := { + non_ScheduledTransGrantInfo := { + modeSpecificInfo := { + fdd := { + maxMAC_e_PDUContents := p_MaxMAC_e_PDUContents, + ms2_NonSchedTransmGrantHARQAlloc := omit + } + } + } + } + }; + + template (value) E_DCH_AddReconf_MAC_d_Flow_r7 cs_E_DCH_AddReconf_MAC_d_Flow_DCCH_r7_TDD := + { /* @status APPROVED (LTE_IRAT) */ + mac_d_FlowIdentity := tsc_E_DCH_MAC_d_FlowId_DCCH, + mac_d_FlowPowerOffset := tsc_E_DCH_MAC_d_FlowPowerOffset, + mac_d_FlowMaxRetrans := tsc_E_DCH_MAC_d_FlowMaxRetrans_DCCH, + mac_d_FlowRetransTimer := omit, + mac_d_FlowMultiplexingList := omit, + transmissionGrantType := { + non_ScheduledTransGrantInfo := { + modeSpecificInfo := { + tdd := NULL + } + } + } + }; + + template (value) UL_AddReconfTransChInformation_r8 cs_UL_AddReconfTransChInfoE_DCH_FDD := + { /* @status APPROVED (LTE_IRAT) */ + e_dch := { + ul_MAC_HeaderType := omit, + modeSpecific := { + fdd := { + tti := f_Get_EDCH_TTI_Value() + } + }, + harq_Info := rvtable, + addReconf_MAC_d_FlowList := { //condition A14 for Radio Bearer Setup in TS 34.108 + cs_E_DCH_AddReconf_MAC_d_Flow_DCCH_r7_FDD, + cs_E_DCH_AddReconf_MAC_d_Flow_DTCH_r7 + } + } + }; + + template (value) UL_AddReconfTransChInformation_r8 cs_UL_AddReconfTransChInfoE_DCH_TDD := + { /* @status APPROVED (LTE_IRAT) */ + e_dch := { + ul_MAC_HeaderType := omit, + modeSpecific := { + tdd := NULL + }, + harq_Info := rvtable, + addReconf_MAC_d_FlowList := { //condition A14 for Radio Bearer Setup in TS 34.108 + cs_E_DCH_AddReconf_MAC_d_Flow_DCCH_r7_TDD, + cs_E_DCH_AddReconf_MAC_d_Flow_DTCH_r7 + } + } + }; + + template (value) UL_AddReconfTransChInfoList_r8 cs_UL_AddReconfTransChInfoListE_DCH_FDD := + { /* @status APPROVED (LTE_IRAT) */ + cs_UL_AddReconfTransChInfoE_DCH_FDD + }; + + template (value) UL_AddReconfTransChInfoList_r8 cs_UL_AddReconfTransChInfoListE_DCH_TDD := + { /* @status APPROVED (LTE_IRAT) */ + cs_UL_AddReconfTransChInfoE_DCH_TDD + }; + + template (value) SRB_InformationSetup_r8 cs_SRB_InfoSetupAM_E_HS_r8(LogicalChannelIdentity p_LogicalChannelIdUL, + DDI p_DDI, + MAC_LogicalChannelPriority p_LogicalChannelPriorityDCH, + LogicalChannelIdentity p_LogicalChannelIdDL) := + { /* @status APPROVED (LTE_IRAT) */ + rb_Identity := omit, + rlc_InfoChoice := { + rlc_Info := cs_RLC_InfoAM_Common(cds_UL_AM_RLC_SRB, cds_DL_AM_RLC_SRB_r7) + }, + rb_MappingInfo := { + cs_RB_MappingOptionSRB_EDCH_HSDSCH_r8(p_LogicalChannelIdUL, p_DDI, p_LogicalChannelPriorityDCH, p_LogicalChannelIdDL) + } + }; + + template (value) SRB_InformationSetup_r8 cs_SRB_InfoSetupUM_E_HS_r8(LogicalChannelIdentity p_LogicalChannelIdUL, + DDI p_DDI, + MAC_LogicalChannelPriority p_LogicalChannelPriorityDCH, + LogicalChannelIdentity p_LogicalChannelIdDL) := + { /* @status APPROVED (LTE_IRAT) */ + rb_Identity := omit, + rlc_InfoChoice := { + rlc_Info := cs_RLC_InfoUM_Common + }, + rb_MappingInfo := { + cs_RB_MappingOptionSRB_EDCH_HSDSCH_r8(p_LogicalChannelIdUL, p_DDI, p_LogicalChannelPriorityDCH, p_LogicalChannelIdDL) + } + }; + + template (value) SRB_InformationSetupList_r8 cs_SRB_InformationSetupList_r8_E_HS := + { /* @status APPROVED (LTE_IRAT) */ + cs_SRB_InfoSetupUM_E_HS_r8(tsc_UL_DCCH1, tsc_E_DCH_DDI_1, tsc_UL_MAC_Prt1, tsc_DL_DCCH1), + cs_SRB_InfoSetupAM_E_HS_r8(tsc_UL_DCCH2, tsc_E_DCH_DDI_2, tsc_UL_MAC_Prt2, tsc_DL_DCCH2), + cs_SRB_InfoSetupAM_E_HS_r8(tsc_UL_DCCH3, tsc_E_DCH_DDI_3, tsc_UL_MAC_Prt3, tsc_DL_DCCH3), + cs_SRB_InfoSetupAM_E_HS_r8(tsc_UL_DCCH4, tsc_E_DCH_DDI_4, tsc_UL_MAC_Prt4, tsc_DL_DCCH4) + }; + + template (value) HandoverToUTRANCommand_r8_Complete_Type cs_HandoverToUTRANCommand_Complete_HSPA_FDD(UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode, + template (value) FrequencyInfo p_FrequencyInfo) := + { /* @status APPROVED (LTE_IRAT) */ + srb_InformationSetupList := cs_SRB_InformationSetupList_r8_E_HS, /* According to the corresponding IE in the RRC CONNECTION SETUP message using condition A3 in TS 34.108 clause 9.1.1 */ + rab_InformationSetupList := { + cs_RAB_InfoSetupHSUPA_RB25_1MuxOption /* According to the corresponding IE in the RADIO BEARER SETUP message using condition A14 in TS 34.108 clause 9.1.1 */ + }, + ul_CommonTransChInfo := { /* Same content as the corresponding IE in the RADIO BEARER SETUP message using condition A14 in TS 34.108 clause 9.1.1 */ + tfc_Subset := omit, + prach_TFCS := omit, + modeSpecificInfo := omit, + tfc_SubsetList := omit + }, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListE_DCH_FDD, /* According to the corresponding IE in the RADIO BEARER SETUP message using condition A14 in TS 34.108 clause 9.1.1: + Added or Reconfigured UL TrCH information */ + dl_CommonTransChInfo := { /* Same content as the corresponding IE in the RADIO BEARER SETUP message using condition A14 in TS 34.108 clause 9.1.1 */ + sccpch_TFCS := omit, + modeSpecificInfo := omit + }, + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoList_2DCH_HS_PS_HSPA_FDD, /* According to the corresponding IE in the RADIO BEARER SETUP message using condition A14 in TS 34.108 clause 9.1.1: + Added or Reconfigured DL TrCH information + @sic R5s120397 sic@ */ + ul_DPCH_Info := cs_UL_DPCH_OnlyHS_PDSCH_FDD (p_UL_ScramblingCode), /* Same as the corresponding IE in the RADIO BEARER SETUP message using condition A14 in TS 34.108 clause 9.1.1 */ + ul_EDCH_Information := cs_UL_EDCH_Information_FDD, /* According to the corresponding IE in the RADIO BEARER SETUP message using condition A14 in TS 34.108 clause 9.1.1: E-DCH info */ + dl_HSPDSCH_Information := cs_DL_HSPDSCH_Information_FDD(cs_HS_SCCH_Info_FDD, + cs_Measurement_Feedback_Info), /* According to the corresponding IE in the RADIO BEARER SETUP message using condition A14 in TS 34.108 clause 9.1.1 */ + + dl_CommonInformation := cs_DL_CommonInformationF_DPCH_FDD, /* According to the corresponding IE in the RADIO BEARER SETUP message using condition A14 in TS 34.108 clause 9.1.1: + Downlink information common for all radio links */ + + dl_InformationPerRL_List := cs_DL_InfoPerRL_HSUwithFDPCH_FDD(p_PrimScramblingCode), /* According to the corresponding IE in the RADIO BEARER SETUP message using condition A14 in TS 34.108 clause 9.1.1: + Downlink information for each radio link list */ + + frequencyInfo := p_FrequencyInfo, + multi_frequencyInfo := omit + }; + + template (value) HandoverToUTRANCommand_r9_Complete_Type cs_HandoverToUTRANCommand_Complete_HSPA_TDD(CellParametersID p_CellParametersID, + template (value) FrequencyInfo p_FrequencyInfo) := + { /* @status APPROVED (LTE_IRAT) */ + srb_InformationSetupList := cs_SRB_InformationSetupList_r8_E_HS, /* According to the corresponding IE in the RRC CONNECTION SETUP message using condition A3 in TS 34.108 clause 9.1.1 */ + rab_InformationSetupList := { + cs_RAB_InfoSetupHSUPA_RB25_1MuxOption /* According to the corresponding IE in the RADIO BEARER SETUP message using condition A14 in TS 34.108 clause 9.1.1 */ + }, + ul_CommonTransChInfo := { /* Same content as the corresponding IE in the RADIO BEARER SETUP message using condition A14 in TS 34.108 clause 9.1.1 */ + tfc_Subset := omit, + prach_TFCS := omit, + modeSpecificInfo := omit, + tfc_SubsetList := omit + }, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListE_DCH_TDD, /* According to the corresponding IE in the RADIO BEARER SETUP message using condition A14 in TS 34.108 clause 9.1.1: + Added or Reconfigured UL TrCH information */ + dl_CommonTransChInfo := { /* Same content as the corresponding IE in the RADIO BEARER SETUP message using condition A14 in TS 34.108 clause 9.1.1 */ + sccpch_TFCS := omit, + modeSpecificInfo := omit + }, + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoList_2DCH_HS_PS_HSPA_TDD, /* According to the corresponding IE in the RADIO BEARER SETUP message using condition A14 in TS 34.108 clause 9.1.1: + Added or Reconfigured DL TrCH information + @sic R5s120397 sic@ */ + ul_DPCH_Info := cs_UL_DPCH_OnlyHS_PDSCH_TDD, /* Same as the corresponding IE in the RADIO BEARER SETUP message using condition A14 in TS 34.108 clause 9.1.1 */ + ul_EDCH_Information := cs_UL_EDCH_Information_TDD, /* According to the corresponding IE in the RADIO BEARER SETUP message using condition A14 in TS 34.108 clause 9.1.1: E-DCH info */ + dl_HSPDSCH_Information := cs_DL_HSPDSCH_Information_TDD(cs_HS_SCCH_Info_TDD, + cs_HS_PDSCH_Midamble_Configuration_TDD128), /* According to the corresponding IE in the RADIO BEARER SETUP message using condition A14 in TS 34.108 clause 9.1.1 */ + + dl_CommonInformation := cs_DL_CommonInfo_r8_TDD, /* According to the corresponding IE in the RADIO BEARER SETUP message using condition A14 in TS 34.108 clause 9.1.1: + Downlink information common for all radio links */ + + dl_InformationPerRL_List := cs_DL_InfoPerRL_HSUwithFDPCH_TDD(p_CellParametersID, cs_DL_DPCH_InfoPerRL_SRB_TDD), /* According to the corresponding IE in the RADIO BEARER SETUP message using condition A14 in TS 34.108 clause 9.1.1: + Downlink information for each radio link list */ + + frequencyInfo := p_FrequencyInfo, + multi_frequencyInfo := omit + }; + + //---------------------------------------------------------------------- + // Functions + //---------------------------------------------------------------------- + /* + * @desc encode the Handover to Utran command (rel-8) + * @param p_New_H_RNTI + * @param p_HandoverToUTRANCommand_Complete + * @param p_E_RNTI (default value: omit) + * @return octetstring + * @status APPROVED (LTE_IRAT) + */ + function fl_U_EncodeHandoverToUtran_Common_r8(template (omit) B16_Type p_New_H_RNTI, + template (value) HandoverToUTRANCommand_r8_Complete_Type p_HandoverToUTRANCommand_Complete, + template (omit) E_RNTI p_E_RNTI := omit) // @sic R5s120397 sic@ + return octetstring + { + var bitstring v_Bitstring := encvalue(cs_HandoverToUTRANCommand_r8(px_UTRAN_CipheringAlgorithm, p_New_H_RNTI, p_HandoverToUTRANCommand_Complete, p_E_RNTI)); + var octetstring v_Octetstring := bit2oct(f_OctetAlignedBitString(v_Bitstring)); /* Make bitstring aligned with octetstring (padding at the end) */ + return v_Octetstring; + } + + /* + * @desc encode the Handover to Utran command (rel-9) + * @param p_New_H_RNTI + * @param p_HandoverToUTRANCommand_Complete + * @param p_E_RNTI (default value: omit) + * @return octetstring + * @status APPROVED (LTE_IRAT) + */ + function fl_U_EncodeHandoverToUtran_Common_r9(template (omit) B16_Type p_New_H_RNTI, + template (value) HandoverToUTRANCommand_r9_Complete_Type p_HandoverToUTRANCommand_Complete, + template (omit) E_RNTI p_E_RNTI := omit) // @sic R5s120397 sic@ + return octetstring + { + var bitstring v_Bitstring := encvalue(cs_HandoverToUTRANCommand_r9(px_UTRAN_CipheringAlgorithm, p_New_H_RNTI, p_HandoverToUTRANCommand_Complete, p_E_RNTI)); + var octetstring v_Octetstring := bit2oct(f_OctetAlignedBitString(v_Bitstring)); /* Make bitstring aligned with octetstring (padding at the end) */ + return v_Octetstring; + } + + /* + * @desc To be called from the EUTRA PTC to encode the Handover to Utran command (FDD) + * @param p_UL_ScramblingCode + * @param p_PrimScramblingCode + * @param p_UARFCN + * @return octetstring .. encoded octetstring + * @status APPROVED (LTE_IRAT) + */ + function f_U_EncodeHandoverToUtran_64kPS_FDD(UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode, + integer p_UARFCN) + return octetstring + { /* @sic R5s110683 additional changes sic@ */ + return fl_U_EncodeHandoverToUtran_Common_r8(omit, cs_HandoverToUTRANCommand_Complete_64kPS_FDD(tsc_RAB_DefPS, + p_UL_ScramblingCode, + p_PrimScramblingCode, + cs_FreqInfo_FDD(p_UARFCN))); + } + + //---------------------------------------------------------------------- + /* + * @desc To be called from the EUTRA PTC to encode the Handover to Utran command (TDD) + * @param p_CellParametersID + * @param p_UARFCN + * @return octetstring .. encoded octetstring + * @status APPROVED (LTE_IRAT) + */ + function f_U_EncodeHandoverToUtran_64kPS_TDD(CellParametersID p_CellParametersID, + integer p_UARFCN) + return octetstring + { /* @sic R5s110683 additional changes sic@ */ + return fl_U_EncodeHandoverToUtran_Common_r9(omit, cs_HandoverToUTRANCommand_Complete_64kPS_TDD(tsc_RAB_DefPS, + p_CellParametersID, + cs_FreqInfo_TDD(p_UARFCN))); + } + + /* + * @desc To be called from the EUTRA PTC to encode the Handover to Utran command. To be used when this will be re-configured to be PS_CS (FDD) + * @param p_UL_ScramblingCode + * @param p_PrimScramblingCode + * @param p_UARFCN + * @return octetstring .. encoded octetstring + * @status APPROVED (LTE_IRAT) + */ + function f_U_EncodeHandoverToUtran_64kPS_DCH4_FDD(UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode, + integer p_UARFCN) + return octetstring + { + return fl_U_EncodeHandoverToUtran_Common_r8(omit, cs_HandoverToUTRANCommand_Complete_64kPS_DCH4_FDD(tsc_RAB_DefPS, + p_UL_ScramblingCode, + p_PrimScramblingCode, + cs_FreqInfo_FDD(p_UARFCN))); + } + + //---------------------------------------------------------------------- + /* + * @desc To be called from the EUTRA PTC to encode the Handover to Utran command. To be used when this will be re-configured to be PS_CS(TDD) + * @param p_CellParametersID + * @param p_UARFCN + * @return octetstring .. encoded octetstring + * @status APPROVED (LTE_IRAT) + */ + function f_U_EncodeHandoverToUtran_64kPS_DCH4_TDD(CellParametersID p_CellParametersID, + integer p_UARFCN) + return octetstring + { + return fl_U_EncodeHandoverToUtran_Common_r9(omit, cs_HandoverToUTRANCommand_Complete_64kPS_DCH4_TDD(tsc_RAB_DefPS, + p_CellParametersID, + cs_FreqInfo_TDD(p_UARFCN))); + } + + //---------------------------------------------------------------------------- + /* + * @desc To be called from the EUTRA PTC to encode the Handover to Utran command. + * @param p_UL_ScramblingCode + * @param p_PrimScramblingCode + * @param p_UARFCN + * @return octetstring + * @status APPROVED (LTE_IRAT) + */ + function f_U_EncodeHandoverToUtran_HSDPA_FDD(UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode, + integer p_UARFCN) + return octetstring + { /* @sic R5s110683 additional changes sic@ */ + return fl_U_EncodeHandoverToUtran_Common_r8(tsc_H_RNTI, cs_HandoverToUTRANCommand_Complete_HSDPA_FDD(tsc_RAB_DefPS, + p_UL_ScramblingCode, + p_PrimScramblingCode, + cs_FreqInfo_FDD (p_UARFCN))); + } + + //---------------------------------------------------------------------- + /* + * @desc To be called from the EUTRA PTC to encode the Handover to Utran command. + * @param p_CellParametersID + * @param p_UARFCN + * @return octetstring + * @status APPROVED (LTE_IRAT) + */ + function f_U_EncodeHandoverToUtran_HSDPA_TDD(CellParametersID p_CellParametersID, + integer p_UARFCN) + return octetstring + { + return fl_U_EncodeHandoverToUtran_Common_r9(tsc_H_RNTI, cs_HandoverToUTRANCommand_Complete_HSDPA_TDD(tsc_RAB_DefPS, + p_CellParametersID, + cs_FreqInfo_TDD (p_UARFCN))); + } + + //---------------------------------------------------------------------- + /* + * @desc To be called from the EUTRA PTC to encode the Inter Rat Handover Info message + * @param p_UL_ScramblingCode + * @param p_PrimScramblingCode + * @param p_UARFCN + * @return octetstring + * @status APPROVED (LTE_IRAT) + */ + function f_U_EncodeHandoverToUtran_HSPA_FDD(UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode, + integer p_UARFCN) return octetstring + { + return fl_U_EncodeHandoverToUtran_Common_r8(tsc_H_RNTI, + cs_HandoverToUTRANCommand_Complete_HSPA_FDD(p_UL_ScramblingCode, p_PrimScramblingCode, cs_FreqInfo_FDD(p_UARFCN)), + tsc_E_RNTI); // @sic R5s120397 sic@ + } + + /* + * @desc To be called from the EUTRA PTC to encode the Inter Rat Handover Info message + * @param p_CellParametersID + * @param p_UARFCN + * @return octetstring + * @status APPROVED (LTE_IRAT) + */ + function f_U_EncodeHandoverToUtran_HSPA_TDD(CellParametersID p_CellParametersID, + integer p_UARFCN) return octetstring + { + return fl_U_EncodeHandoverToUtran_Common_r9(tsc_H_RNTI, + cs_HandoverToUTRANCommand_Complete_HSPA_TDD(p_CellParametersID, cs_FreqInfo_TDD(p_UARFCN)), + tsc_E_RNTI); + } + + //---------------------------------------------------------------------------- + /* + * @desc Function to decode UTRAN's RRCDataInd + * @param p_Octetstring + * @return RRCDataIndType + * @status APPROVED (LTE_IRAT) + */ + function f_U_DecodeRRCDataInd_Msg(octetstring p_Octetstring) return RRCDataIndType + { + var RRCDataIndType v_Received_Msg; + var bitstring v_Bitstring := oct2bit(p_Octetstring); + var integer v_Result := decvalue(v_Bitstring, v_Received_Msg); + if (v_Result != 0) { + FatalError(__FILE__, __LINE__, "RRC Data Ind message cannot be decoded"); + } + return v_Received_Msg; + } + + /* + * @desc Function to decode the Routing Area Update Request message in to type ROUTINGAREAUPDATEREQUEST and to match + * the decoded octetstring with the template provided in p_ExpectedRauReq_Msg + * @param p_Octetstring + * @param p_ExpectedRauReq_Msg + * @return boolean ... message to be used in case of FAIL + * @status + */ + function f_U_DecodeAndMatch_RauReq_Msg(octetstring p_Octetstring, + template ROUTINGAREAUPDATEREQUEST p_ExpectedRauReq_Msg) return boolean { + + var RRCDataIndType v_Received_Msg; + var boolean v_Match := false; + + //Decode the message/octetstring + v_Received_Msg := f_U_DecodeRRCDataInd_Msg(p_Octetstring); + + //Match the received decoded template with the expected template + if (match(v_Received_Msg.routingAreaUpdateRequest, p_ExpectedRauReq_Msg)) { + v_Match := true; + } + return v_Match; + } + + /* + * @desc Function to decode the Location Update Request message in to type LOCATIONUPDATINGREQUEST and to match + * the decoded octetstring with the template provided in p_ExpectedReq_Msg + * @param p_Octetstring + * @param p_ExpectedReq_Msg + * @return boolean + * @status APPROVED (LTE_IRAT) + */ + function f_U_DecodeAndMatch_LocUpdReq_Msg(octetstring p_Octetstring, + template LOCATIONUPDATINGREQUEST p_ExpectedReq_Msg) return boolean + { + var RRCDataIndType v_Received_Msg; + var boolean v_Match := false; + var bitstring v_Bitstring := oct2bit(p_Octetstring); + + //Decode the message/octetstring + if (decvalue(v_Bitstring, v_Received_Msg) != 0) { + FatalError(__FILE__, __LINE__, "Location Updating Request message cannot be decoded"); + } + + //Match the received decoded template with the expected template + if (match(v_Received_Msg.locationUpdatingRequest, p_ExpectedReq_Msg)) { + v_Match := true; + } + return v_Match; + } + + /* + * @desc Function to convert the UE operation mode into a charstring (to be passed to the MMI function) + * @param p_OperationMode + * @return charstring + */ + function f_U_ConvertOperationMode (UE_OperationMode p_OperationMode) return charstring + { + if (p_OperationMode == opModeA) { + return "A"; + } else { + return "C"; + } + } + +} diff --git a/LTE_A_IWD_14wk37/Common/IRAT/UTRAN_SRVCC.ttcn b/LTE_A_IWD_14wk37/Common/IRAT/UTRAN_SRVCC.ttcn new file mode 100644 index 0000000..d6e6e79 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/IRAT/UTRAN_SRVCC.ttcn @@ -0,0 +1,357 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-06-07 00:13:03 +0200 (Sat, 07 Jun 2014) $ +// $Rev: 11664 $ +/******************************************************************************/ + +module UTRAN_SRVCC { + + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from CommonDefs all; + import from UTRAN_CapabilityFunctions_IRAT all; + import from UTRAN_Parameters all; + import from UTRAN_RRC_RAB_Templates all; + import from UTRAN_RRC_RAB_Templates_r9 all; + import from UTRAN_RRC_CommonTemplates all; + import from UTRAN_RRC_Templates all; + import from UTRAN_RRC_Templates_r9 all; + import from UTRAN_CommonDefs all; + + + template (value) HandoverToUTRANCommand cs_HandoverToUTRANCommand_Speech_FDD(CipheringAlgorithm_r7 p_CiphAlg, + bitstring p_RAB_Id, + UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode, + template (value) FrequencyInfo p_FrequencyInfo) := + /* Values according to 36.508 cl. 4.7B.1 Table 4.7B.1-1: HANDOVER TO UTRAN COMMAND using condition UTRA Speech */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_HandoverToUTRANCommand_r8(p_CiphAlg, omit, cs_HandoverToUTRANCommand_Complete_Speech_FDD(p_RAB_Id, p_UL_ScramblingCode, p_PrimScramblingCode, p_FrequencyInfo)); + + template (value) HandoverToUTRANCommand cs_HandoverToUTRANCommand_Speech_FDD_r9(CipheringAlgorithm_r7 p_CiphAlg, + bitstring p_RAB_Id, + UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode, + template (value) FrequencyInfo p_FrequencyInfo) := + /* Values according to 36.508 cl. 4.7B.1 Table 4.7B.1-1: HANDOVER TO UTRAN COMMAND using condition UTRA Speech */ + + cs_HandoverToUTRANCommand_r9(p_CiphAlg, omit, cs_HandoverToUTRANCommand_Complete_Speech_FDD_r9(p_RAB_Id, p_UL_ScramblingCode, p_PrimScramblingCode, p_FrequencyInfo)); + + template (value) HandoverToUTRANCommand cs_HandoverToUTRANCommand_Speech_TDD(CipheringAlgorithm_r7 p_CiphAlg, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID, + template (value) FrequencyInfo p_FrequencyInfo) := + /* Values according to 36.508 cl. 4.7B.1 Table 4.7B.1-1: HANDOVER TO UTRAN COMMAND using condition UTRA Speech*/ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_HandoverToUTRANCommand_r9(p_CiphAlg, omit, cs_HandoverToUTRANCommand_Complete_Speech_TDD(p_RAB_Id, p_CellParametersID, p_FrequencyInfo)); + + template (value) HandoverToUTRANCommand_r8_Complete_Type cs_HandoverToUTRANCommand_Complete_Speech_FDD(bitstring p_RAB_Id, + UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode, + template (value) FrequencyInfo p_FrequencyInfo) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + srb_InformationSetupList := cs_SRB_InformationSetupList_r8_DCH, + rab_InformationSetupList := { + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A2 in TS 34.108 clause 9.1.1 + cs_RAB_InfoSetupTM_12_2k(useT314, p_RAB_Id) + }, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A2 in TS 34.108 clause 9.1.1: UL Transport channel information common for all transport channels + ul_CommonTransChInfo := cs_UL_CommTrChInfoTM_12_2k_FDD, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A2 in TS 34.108 clause 9.1.1: Added or Reconfigured UL TrCH information + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListTM_12_2k, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A2 in TS 34.108 clause 9.1.1: DL Transport channel information common for all transport channels + dl_CommonTransChInfo := cs_DL_CommonTransChInfoSameAsUL_r4_FDD, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A2 in TS 34.108 clause 9.1.1: Added or Reconfigured DL TrCH information + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListTM_12_2k, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A2 in TS 34.108 clause 9.1.1: Uplink DPCH info + ul_DPCH_Info := cs_UL_DPCH_Info_FDD(tsc_UL_DPDCH_SF_Speech, pl0_84, p_UL_ScramblingCode), + ul_EDCH_Information := omit, + dl_HSPDSCH_Information := omit, + + dl_CommonInformation := cs_DL_CommonInformationRB_ForHO_FDD(tsc_DL_DPCH1_SFP_Speech, fixed, false), //@sic R5s130561 sic@ + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A2 in TS 34.108 clause 9.1.1: Downlink information for each radio link list + dl_InformationPerRL_List := cs_DL_InformationPerRL_r7_FDD(p_PrimScramblingCode, tsc_DL_DPCH1_ChC_Speech, tsc_DL_DPCH1_2ndScrC), + frequencyInfo := p_FrequencyInfo, + multi_frequencyInfo := omit + }; + + template (value) HandoverToUTRANCommand_r9_Complete_Type cs_HandoverToUTRANCommand_Complete_Speech_FDD_r9(bitstring p_RAB_Id, + UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode, + template (value) FrequencyInfo p_FrequencyInfo) := + { + srb_InformationSetupList := cs_SRB_InformationSetupList_r8_DCH, + rab_InformationSetupList := { + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A2 in TS 34.108 clause 9.1.1 + cs_RAB_InfoSetupTM_12_2k(useT314, p_RAB_Id) + }, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A2 in TS 34.108 clause 9.1.1: UL Transport channel information common for all transport channels + ul_CommonTransChInfo := cs_UL_CommTrChInfoTM_12_2k_FDD, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A2 in TS 34.108 clause 9.1.1: Added or Reconfigured UL TrCH information + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListTM_12_2k, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A2 in TS 34.108 clause 9.1.1: DL Transport channel information common for all transport channels + dl_CommonTransChInfo := cs_DL_CommonTransChInfoSameAsUL_r4_FDD, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A2 in TS 34.108 clause 9.1.1: Added or Reconfigured DL TrCH information + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListTM_12_2k_r9, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A2 in TS 34.108 clause 9.1.1: Uplink DPCH info + ul_DPCH_Info := cs_UL_DPCH_Info_FDD(tsc_UL_DPDCH_SF_Speech, pl0_84, p_UL_ScramblingCode), + ul_EDCH_Information := omit, + dl_HSPDSCH_Information := omit, + dl_CommonInformation := cs_DL_CommonInformationRB_ForHO_FDD(tsc_DL_DPCH1_SFP_Speech, fixed, false), // @sic R5s130561 sic@ + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A2 in TS 34.108 clause 9.1.1: Downlink information for each radio link list + dl_InformationPerRL_List := cs_DL_InformationPerRL_r7_FDD(p_PrimScramblingCode, tsc_DL_DPCH1_ChC_Speech, tsc_DL_DPCH1_2ndScrC), + frequencyInfo := p_FrequencyInfo, + multi_frequencyInfo := omit + }; + + template (value) HandoverToUTRANCommand_r9_Complete_Type cs_HandoverToUTRANCommand_Complete_Speech_TDD(bitstring p_RAB_Id, + CellParametersID p_CellParametersID, + template (value) FrequencyInfo p_FrequencyInfo) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + srb_InformationSetupList := cs_SRB_InformationSetupList_r8_DCH, + rab_InformationSetupList := { + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A2 in TS 34.108 clause 9.1.1 + cs_RAB_InfoSetupTM_12_2k(useT314, p_RAB_Id) + }, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A2 in TS 34.108 clause 9.1.1: UL Transport channel information common for all transport channels + ul_CommonTransChInfo := cs_UL_CommTrChInfoTM_12_2k_TDD, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A2 in TS 34.108 clause 9.1.1: Added or Reconfigured UL TrCH information + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListTM_12_2k, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A2 in TS 34.108 clause 9.1.1: DL Transport channel information common for all transport channels + dl_CommonTransChInfo := cs_DL_CommonTransChInfoSameAsUL_r4_TDD, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A2 in TS 34.108 clause 9.1.1: Added or Reconfigured DL TrCH information + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListTM_12_2k_r9, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A2 in TS 34.108 clause 9.1.1: Uplink DPCH info + ul_DPCH_Info := cs_UL_DPCH_Speech_TDD, + ul_EDCH_Information := omit, + dl_HSPDSCH_Information := omit, + dl_CommonInformation := cs_DL_CommonInfo_r8_TDD, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A2 in TS 34.108 clause 9.1.1: Downlink information for each radio link list + dl_InformationPerRL_List := cs_DL_InformationPerRL_r7_TDD(p_CellParametersID, cs_DL_DPCH_InfoPerRL_Speech_TDD), + frequencyInfo := p_FrequencyInfo, + multi_frequencyInfo := omit + }; + + template (value) HandoverToUTRANCommand cs_HandoverToUTRANCommand_64kPS_Speech_FDD(CipheringAlgorithm_r7 p_CiphAlg, + bitstring p_RAB_IdPs, + bitstring p_RAB_IdCs, + UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode, + template (value) FrequencyInfo p_FrequencyInfo) := + /* Values according to 36.508 cl. 4.7B.1 Table 4.7B.1-1: HANDOVER TO UTRAN COMMAND using condition UTRA PS RB + Speech */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_HandoverToUTRANCommand_r8(p_CiphAlg, + omit, + cs_HandoverToUTRANCommand_Complete_64kPS_Speech_FDD(p_RAB_IdPs,p_RAB_IdCs, p_UL_ScramblingCode, p_PrimScramblingCode, p_FrequencyInfo)); + + template (value) HandoverToUTRANCommand cs_HandoverToUTRANCommand_64kPS_Speech_TDD(CipheringAlgorithm_r7 p_CiphAlg, + bitstring p_RAB_IdPs, + bitstring p_RAB_IdCs, + CellParametersID p_CellParametersID, + template (value) FrequencyInfo p_FrequencyInfo) := + /* Values according to 36.508 cl. 4.7B.1 Table 4.7B.1-1: HANDOVER TO UTRAN COMMAND using condition UTRA PS RB + Speech */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_HandoverToUTRANCommand_r9(p_CiphAlg, + omit, + cs_HandoverToUTRANCommand_Complete_64kPS_Speech_TDD(p_RAB_IdPs,p_RAB_IdCs, p_CellParametersID, p_FrequencyInfo)); + + template (value) UL_AddReconfTransChInfoList_r8 cs_UL_AddReconfTransChInfoListDCH_PS_64k_TM_12_2k := + { /* Values according to the condition A2 in TS 34.108 clause 9.1.1: Added or Reconfigured UL TrCH information */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_UL_AddReconfTransChInfoDCCH(tsc_UL_DCH1, cs_DCH_81_TFS_UE), + cs_UL_AddReconfTransChInfoDCCH(tsc_UL_DCH2, cs_DCH_103_TFS_UE), + cs_UL_AddReconfTransChInfoDCCH(tsc_UL_DCH3, cs_DCH_60_TFS_UE), + cs_UL_AddReconfTransChInfoDCCH(tsc_UL_DCH4, cs_DCH_336_TFS_UE), + cs_UL_AddReconfTransChInfoDCCH(tsc_UL_DCH5, cs_DCH_148_TFS_UE_UL) + }; + + template (value) DL_AddReconfTransChInfoList_r7 cs_DL_AddReconfTransChInfoListDCH_PS_64k_TM_12_2k := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_DL_AddReconfTransChInfoExplicit(tsc_DL_DCH1, cs_DCH_81_TFS_DL_UE, omit), + cs_DL_AddReconfTransChInfo_WithoutQuality(tsc_DL_DCH2, tsc_UL_DCH2), + cs_DL_AddReconfTransChInfo_WithoutQuality(tsc_DL_DCH3, tsc_UL_DCH3), + cs_DL_AddReconfTransChInfo_r7(tsc_DL_DCH4, tsc_UL_DCH4), + cs_DL_AddReconfTransChInfo_r7(tsc_DL_DCH5, tsc_UL_DCH5) + }; + + template (value) DL_AddReconfTransChInfoList_r9 cs_DL_AddReconfTransChInfoListDCH_PS_64k_TM_12_2k_r9 := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_DL_AddReconfTransChInfoExplicit_r9(tsc_DL_DCH1, cs_DCH_81_TFS_DL_UE, omit), + cs_DL_AddReconfTransChInfo_WithoutQuality_r9(tsc_DL_DCH2, tsc_UL_DCH2), + cs_DL_AddReconfTransChInfo_WithoutQuality_r9(tsc_DL_DCH3, tsc_UL_DCH3), + cs_DL_AddReconfTransChInfo_r9(tsc_DL_DCH4, tsc_UL_DCH4), + cs_DL_AddReconfTransChInfo_r9(tsc_DL_DCH5, tsc_UL_DCH5) + }; + + //TODO need to confirm + template (value) HandoverToUTRANCommand_r8_Complete_Type cs_HandoverToUTRANCommand_Complete_64kPS_Speech_FDD(bitstring p_RAB_IdPs, + bitstring p_RAB_IdCs, + UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode, + template (value) FrequencyInfo p_FrequencyInfo) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + srb_InformationSetupList := cs_SRB_InformationSetupList_r8_DCH, + rab_InformationSetupList := { + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A3 in TS 34.108 clause 9.1.1 + cs_RAB_InfoSetupDCH_PS_64k (p_RAB_IdPs, cs_RLC_InfoAM_Def, tsc_DL_DCH4, tsc_UL_DCH4), //@sic R5s140096 sic@ + cs_RAB_InfoSetupTM_12_2k(useT314, p_RAB_IdCs) + }, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A3 in TS 34.108 clause 9.1.1: UL Transport channel information common for all transport channels + ul_CommonTransChInfo := cs_UL_CommTrChInfo_TM3_AM1_0To119_FDD, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A3 in TS 34.108 clause 9.1.1: Added or Reconfigured UL TrCH information + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k_TM_12_2k, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A3 in TS 34.108 clause 9.1.1: DL Transport channel information common for all transport channels + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_FDD(cs_TFCS_Cmpl0_To119_Rx), + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A3 in TS 34.108 clause 9.1.1: Added or Reconfigured DL TrCH information + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCH_PS_64k_TM_12_2k, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A3 in TS 34.108 clause 9.1.1: Uplink DPCH info + ul_DPCH_Info := cs_UL_DPCH_Info_FDD(tsc_UL_DPDCH_SF_64k_PS, pl0_76, p_UL_ScramblingCode), + ul_EDCH_Information := omit, + dl_HSPDSCH_Information := omit, + + dl_CommonInformation := cs_DL_CommonInformationRB_ForHO_FDD(tsc_DL_DPCH1_SFP_64k_PS, flexible), + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A3 in TS 34.108 clause 9.1.1: Downlink information for each radio link list + dl_InformationPerRL_List := cs_DL_InformationPerRL_r7_FDD(p_PrimScramblingCode, tsc_DL_DPCH1_ChC_64k_PS, tsc_DL_DPCH1_2ndScrC), + frequencyInfo := p_FrequencyInfo, + multi_frequencyInfo := omit + + }; + + template (value) HandoverToUTRANCommand_r9_Complete_Type cs_HandoverToUTRANCommand_Complete_64kPS_Speech_TDD(bitstring p_RAB_IdPs, + bitstring p_RAB_IdCs, + CellParametersID p_CellParametersID, + template (value) FrequencyInfo p_FrequencyInfo) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + srb_InformationSetupList := cs_SRB_InformationSetupList_r8_DCH, + rab_InformationSetupList := { + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A3 in TS 34.108 clause 9.1.1 + cs_RAB_InfoSetupDCH_PS_64k(p_RAB_IdPs, cs_RLC_InfoAM_Def), + cs_RAB_InfoSetupTM_12_2k(useT314, p_RAB_IdCs) + }, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A3 in TS 34.108 clause 9.1.1: UL Transport channel information common for all transport channels + ul_CommonTransChInfo := cs_UL_CommTrChInfo_TM3_AM1_0To119_TDD, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A3 in TS 34.108 clause 9.1.1: Added or Reconfigured UL TrCH information + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k_TM_12_2k, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A3 in TS 34.108 clause 9.1.1: DL Transport channel information common for all transport channels + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_TDD(cs_TFCS_Cmpl0_To119_Rx), + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A3 in TS 34.108 clause 9.1.1: Added or Reconfigured DL TrCH information + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCH_PS_64k_TM_12_2k_r9, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A3 in TS 34.108 clause 9.1.1: Uplink DPCH info + ul_DPCH_Info := cs_UL_DPCH_PS_and_ConvSpeech_TDD, + ul_EDCH_Information := omit, + dl_HSPDSCH_Information := omit, + dl_CommonInformation := cs_DL_CommonInfo_r8_TDD, + //According to the corresponding IE in the RADIO BEARER SETUP message using condition A3 in TS 34.108 clause 9.1.1: Downlink information for each radio link list + dl_InformationPerRL_List := cs_DL_InformationPerRL_r7_TDD(p_CellParametersID, cs_DL_DPCH_InfoPerRL_r7_PS_and_ConvSpeech_TDD), + frequencyInfo := p_FrequencyInfo, + multi_frequencyInfo := omit + // -------------------------- + }; + + //============================================================================ + /* + * @desc Function to encode Handover to UTRAN PDU + * @param p_HandoverToUTRANCommand + * @return octetstring + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_U_EncodeHandoverToUtran_Common(template (value) HandoverToUTRANCommand p_HandoverToUTRANCommand) return octetstring + { + var bitstring v_Bitstring := encvalue(p_HandoverToUTRANCommand); + var octetstring v_Octetstring := bit2oct(f_OctetAlignedBitString(v_Bitstring)); /* Make bitstring aligned with octetstring (padding at the end) */ + return v_Octetstring; + } + + /* + * @desc Function to encode Handover to UTRAN PDU 64 K PS and FDD + * @param p_UL_ScramblingCode + * @param p_PrimScramblingCode + * @param p_UARFCN + * @return octetstring + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_U_EncodeHandoverToUtran_64kPS_Speech_FDD(UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode, + integer p_UARFCN) + return octetstring + { + return f_U_EncodeHandoverToUtran_Common(cs_HandoverToUTRANCommand_64kPS_Speech_FDD(px_UTRAN_CipheringAlgorithm, + tsc_RAB_DefPS, + tsc_RAB_DefCS, + p_UL_ScramblingCode, + p_PrimScramblingCode, + cs_FreqInfo_FDD (p_UARFCN))); + } + + /* + * @desc Wrapper function + * @param p_UL_ScramblingCode + * @param p_PrimScramblingCode + * @param p_UARFCN + * @return octetstring + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_U_EncodeHandoverToUtran_Speech_FDD(UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode, + integer p_UARFCN) + return octetstring + { + return f_U_EncodeHandoverToUtran_Common(cs_HandoverToUTRANCommand_Speech_FDD(px_UTRAN_CipheringAlgorithm, + tsc_RAB_DefPS, + p_UL_ScramblingCode, + p_PrimScramblingCode, + cs_FreqInfo_FDD (p_UARFCN))); + } + + function f_U_EncodeHandoverToUtran_Speech_FDD_r9(UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode, + integer p_UARFCN) + return octetstring + { + return f_U_EncodeHandoverToUtran_Common(cs_HandoverToUTRANCommand_Speech_FDD_r9(px_UTRAN_CipheringAlgorithm, + tsc_RAB_DefPS, + p_UL_ScramblingCode, + p_PrimScramblingCode, + cs_FreqInfo_FDD (p_UARFCN))); + } + + /* + * @desc Function to encode Handover to UTRAN PDU 64 K PS and TDD + * @param p_CellParametersID + * @param p_UARFCN + * @return octetstring + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_U_EncodeHandoverToUtran_64kPS_Speech_TDD(CellParametersID p_CellParametersID, + integer p_UARFCN) + return octetstring + { + return f_U_EncodeHandoverToUtran_Common(cs_HandoverToUTRANCommand_64kPS_Speech_TDD(px_UTRAN_CipheringAlgorithm, + tsc_RAB_DefPS, + tsc_RAB_DefCS, + p_CellParametersID, + cs_FreqInfo_TDD (p_UARFCN))); + } + + /* + * @desc Wrapper function + * @param p_CellParametersID + * @param p_UARFCN + * @return octetstring + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_U_EncodeHandoverToUtran_Speech_TDD(CellParametersID p_CellParametersID, + integer p_UARFCN) + return octetstring + { + return f_U_EncodeHandoverToUtran_Common(cs_HandoverToUTRANCommand_Speech_TDD(px_UTRAN_CipheringAlgorithm, + tsc_RAB_DefPS, + p_CellParametersID, + cs_FreqInfo_FDD (p_UARFCN))); + } + +} diff --git a/LTE_A_IWD_14wk37/Common/MTC/MTC_Base.ttcn b/LTE_A_IWD_14wk37/Common/MTC/MTC_Base.ttcn new file mode 100644 index 0000000..68331df --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/MTC/MTC_Base.ttcn @@ -0,0 +1,163 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-04 15:12:03 +0200 (Thu, 04 Sep 2014) $ +// $Rev: 12027 $ +/******************************************************************************/ + +module MTC_Base { + import from UpperTesterCommon all; + import from UpperTesterPtcToMtcDefs all; + + //-------------------------------------------------------------------------- + // local type definitions: + // @sic R5-113037: Introduction of positioning test cases - changed to support port arrays sic@ + + const integer tsc_UT_NoCnfExpected := -1; /* special value to indicate that no confirmation is expected; + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const integer tsc_NoOfCordPorts := 6; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + @sic R5-134070: generic handling of UT commands for IMS PTC as well as for the other PTCs sic@*/ + + const integer tsc_MTC_PortIndex_EUTRA := 0; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + const integer tsc_MTC_PortIndex_UTRAN := 1; /* @status APPROVED (IMS, IMS_IRAT, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const integer tsc_MTC_PortIndex_GERAN := 2; /* @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT, UTRAN) */ + const integer tsc_MTC_PortIndex_CDMA2000 := 3; /* @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT) */ + const integer tsc_MTC_PortIndex_IMS1 := 4; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + @sic R5-134070: generic handling of UT commands for IMS PTC as well as for the other PTCs sic@*/ + const integer tsc_MTC_PortIndex_IMS2 := 5; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + @sic R5-134070: generic handling of UT commands for IMS PTC as well as for the other PTCs sic@*/ + + + type record UT_Ctrl_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + integer CoordPortIndex, /* index of the coordination port to which a confirmation shall be sent back; + tsc_UT_NoCnfExpected when no confimation is expected */ + boolean UE_SwitchedOn, + boolean MultipleCnf // @sic R5s140316 sic@ + }; + + //-------------------------------------------------------------------------- + + type component MTC_BASE { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + var UT_Ctrl_Type vc_UT_Ctrl; + + // Ports: + port MTC_System_Ut Ut; // Upper Tester: Port at MTC connected to the system interface + port UT_MTC_PTC_PORT PTC_Ut[tsc_NoOfCordPorts]; // coordination ports to up to 6 PTCs + }; + + type component MTC_BASE_SYSTEM { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + port MTC_System_Ut Ut; + }; + + //-------------------------------------------------------------------------- + /* + * @desc map MTC's system ports + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_MTC_BASE_Map() + { + map(mtc:Ut, system:Ut); + } + //-------------------------------------------------------------------------- + /* + * @desc initialise upper tester + * @return UT_Ctrl_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_MTC_BASE_Init() runs on MTC_BASE + { + f_MTC_BASE_CoordPortIndex_Set(tsc_UT_NoCnfExpected); + vc_UT_Ctrl.UE_SwitchedOn := false; + vc_UT_Ctrl.MultipleCnf := false; // @sic R5s140316 sic@ + } + + /* + * @desc Sets the global upper tester flag MultipleCnf + * @param p_Flag + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_MTC_BASE_MultipleCnf_Set(boolean p_Flag) runs on MTC_BASE + { + vc_UT_Ctrl.MultipleCnf := p_Flag; + } + + /* + * @desc Gets the global upper tester flag MultipleCnf + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_MTC_BASE_MultipleCnf_Get() runs on MTC_BASE return boolean + { + return vc_UT_Ctrl.MultipleCnf; + } + + /* + * @desc set index of the coordination port from which the latest AT/MMI commond has been received to send back the confirmation + * @param p_CoordPortIndex + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_MTC_BASE_CoordPortIndex_Set(integer p_CoordPortIndex) runs on MTC_BASE + { + vc_UT_Ctrl.CoordPortIndex := p_CoordPortIndex; + } + + /* + * @desc get index of the coordination port from which the latest AT/MMI commond has been received to send back the confirmation + * @return integer + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_MTC_BASE_CoordPortIndex_Get() runs on MTC_BASE return integer + { + return vc_UT_Ctrl.CoordPortIndex; + } + + /* + * @desc return true when waiting for any confirmation for an AT/MMI command + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_MTC_BASE_IsWaitingForCnf() runs on MTC_BASE return boolean + { + return ((vc_UT_Ctrl.CoordPortIndex >= 0) and (vc_UT_Ctrl.CoordPortIndex < tsc_NoOfCordPorts)); + } + + /* + * @desc set UE status: switched-on + * @param p_UE_SwitchedOn + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_MTC_BASE_UE_SwitchedOn_Set(boolean p_UE_SwitchedOn) runs on MTC_BASE + { + vc_UT_Ctrl.UE_SwitchedOn := p_UE_SwitchedOn; + } + + /* + * @desc get UE status + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_MTC_BASE_UE_SwitchedOn_Get() runs on MTC_BASE return boolean + { + return vc_UT_Ctrl.UE_SwitchedOn; + } + + //============================================================================ + /* + * @desc Terminate the MTC + * @param p_Verdict + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_MTC_Stop(verdicttype p_Verdict) + { + /* Note: the assignment of the final verdict is according to table 28 in the TTCN-3 core spec (cl. 24.1); + i.e. at the end of a test case "pass" may always be assigned since it overrules "none" only */ + setverdict(p_Verdict); + all component.stop; // stop the NAS emulator and IP PTC (if started) + mtc.stop; + } +} + diff --git a/LTE_A_IWD_14wk37/Common/MTC/MTC_Component_LTE_IRAT.ttcn b/LTE_A_IWD_14wk37/Common/MTC/MTC_Component_LTE_IRAT.ttcn new file mode 100644 index 0000000..01484df --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/MTC/MTC_Component_LTE_IRAT.ttcn @@ -0,0 +1,41 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-10-19 22:32:42 +0200 (Sat, 19 Oct 2013) $ +// $Rev: 9788 $ +/******************************************************************************/ + +module MTC_Component_LTE_IRAT { + import from MTC_Base all; + + import from EUTRA_Component all; + import from UTRAN_Component all; + import from GERAN_Component all; + import from CDMA2000_Component all; + import from NasEmu_Component all; + import from IP_PTC_Component all; + + /*--------------------------------------------------------------------------*/ + // local type definitions: + + type record MTC_Components_Type { /* @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT) */ + /* NOTE: there is no reference for IMS since ne IMS behaviour will happen when all RAT PTC are gone */ + EUTRA_PTC Eutra, + UTRAN_PTC Utran, + GERAN_PTC Geran, + CDMA2000_PTC Cdma2000 /* @sic R5-104796 change 12: CDMA2000 added sic@ */ + }; + + // Component: + + type component MTC_LTE_IRAT extends MTC_BASE { /* @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT) */ + var MTC_Components_Type vc_Components; + }; + + type component SYSTEM_LTE_IRAT extends MTC_BASE_SYSTEM, EUTRA_SYSTEM, UTRAN_SYSTEM, GERAN_SYSTEM, CDMA2000_SYSTEM, NASEMU_SYSTEM, IP_SYSTEM {}; /* @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT) */ + +} diff --git a/LTE_A_IWD_14wk37/Common/MTC/MTC_Main_LTE_IRAT.ttcn b/LTE_A_IWD_14wk37/Common/MTC/MTC_Main_LTE_IRAT.ttcn new file mode 100644 index 0000000..5d01fb4 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/MTC/MTC_Main_LTE_IRAT.ttcn @@ -0,0 +1,227 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-06-03 14:17:49 +0200 (Tue, 03 Jun 2014) $ +// $Rev: 11479 $ +/******************************************************************************/ + +module MTC_Main_LTE_IRAT { + import from MTC_Base all; + import from MTC_Component_LTE_IRAT all; + import from MTC_UpperTester all; + import from UpperTesterSystemCmds all; + import from EUTRA_Component all; + import from UTRAN_Component all; + import from GERAN_Component all; + import from CDMA2000_Component all; + import from NasEmu_Component all; + import from NasEmu all; // f_NASEMU_MainLoop + import from IP_PTC_Component all; + import from IP_PTC_Main all; // f_IP_PTC_MainLoop + import from IMS_Component all; + import from IMS_DefaultHandler all; // f_IMS_DefaultHandler + import from CommonDefs all; + + //============================================================================ + /* + * @desc Connect all PTCs (LTE test cases) + * @param p_Eutra EUTRA_PTC + * @param p_Utran UTRAN_PTC + * @param p_Geran GERAN_PTC + * @param p_Cdma2000 CDMA2000_PTC + * @param p_ImsPdn1 + * @param p_ImsPdn2 IMS PTC for PDN2; for PDN1 per default the common IMS handler is started which handles regular IMS registration + * @param p_RatCombination (default value: omit) + * @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT) + */ + function f_MTC_ConnectPTCs_LTE_IRAT(EUTRA_PTC p_Eutra, + UTRAN_PTC p_Utran, + GERAN_PTC p_Geran, + CDMA2000_PTC p_Cdma2000, + IMS_PTC p_ImsPdn1, + IMS_PTC p_ImsPdn2, + template (omit) RATComb_Tested_Type p_RatCombination := omit) runs on MTC_LTE_IRAT + { /* @sic R5-104796 change 12: CDMA2000 added sic@ */ + /* @sic R5-113805, R5-113696, R5-113734: new parameter p_RatCombination sic@ */ + /* @sic R5-113037: Introduction of positioning test cases sic@ */ + /* p_RatCombination is used only in cases where a dummy PTC is used for GERAN or UTRAN to get the system info for EUTRA's system information combination 10 and c10a */ + /* @sic R5-113037: Introduction of positioning test cases sic@ */ + var IP_PTC v_IP_PTC; + var NASEMU_PTC v_NASEMU_PTC; + var IMS_PTC v_ImsPdn1; + var boolean v_C2KTunnellingFlag := (p_Cdma2000 != null); + + vc_Components.Eutra := p_Eutra; + vc_Components.Utran := p_Utran; + vc_Components.Geran := p_Geran; + vc_Components.Cdma2000 := p_Cdma2000; + + if (p_Eutra == null) { + FatalError (__FILE__, __LINE__, "invalid configuration"); + mtc.stop; + } + + // ***** MTC ***** + f_MTC_BASE_Map(); + + // ***** EUTRA PTC ***** + f_EUTRA_PTC_Map(p_Eutra, v_C2KTunnellingFlag); // map EUTRA system ports + v_NASEMU_PTC := f_NasEmu_CreateConnectAndMap(p_Eutra); // create NasEmu, map system ports and connect with EUTRA PTC + v_NASEMU_PTC.start(f_NASEMU_MainLoop()); // start NASEMU + + // ***** Create, map, connect and start IP PTC ***** + v_IP_PTC := f_IP_PTC_CreateAndMap(); + if (p_Eutra != null) {connect(p_Eutra:IP, v_IP_PTC:EUTRA_CTRL);} /* @sic R5-125676 sic@ */ + if (p_Utran != null) {connect(p_Utran:IP, v_IP_PTC:UTRAN_CTRL);} /* @sic R5-125676 sic@ */ + if (p_Geran != null) {connect(p_Geran:IP, v_IP_PTC:GERAN_CTRL);} /* @sic R5-133612 sic@ */ + v_IP_PTC.start(f_IP_PTC_MainLoop()); + + // ***** Create, connect and start IMS PTC ***** + // IMS for PDN1: if PTC is not created yet the default IMS PTC will be used + if (p_ImsPdn1 == null) { v_ImsPdn1 := f_IMS_PTC_Create(); } // => default IMS handling for PDN1 + else { v_ImsPdn1 := p_ImsPdn1; } + + connect(v_ImsPdn1:IMS_CTRL, v_IP_PTC:IMS_CTRL[tsc_Index_PDN1]); + connect(v_ImsPdn1:IMS_Server, v_IP_PTC:IMS_Server[tsc_Index_PDN1]); + connect(v_ImsPdn1:IMS_Client, v_IP_PTC:IMS_Client[tsc_Index_PDN1]); + + connect(v_ImsPdn1:IPCAN, p_Eutra:IMS[tsc_Index_PDN1]); + connect(v_ImsPdn1:MMI, mtc:PTC_Ut[tsc_MTC_PortIndex_IMS1]); /* @sic R5-134070: generic handling of UT commands for IMS PTC as well as for the other PTCs sic@ */ + + if (p_ImsPdn1 == null) { + v_ImsPdn1.start(f_IMS_DefaultHandler()); + } else if (p_Utran != null) { /* @sic R5-142919: sic@ + when we have test case specific IMS behaviour and there is a UTRAN PTC => we need coordination of IMS and UTRAN */ + connect(v_ImsPdn1:OtherIPCAN, p_Utran:IMS[tsc_Index_PDN1]); + } + + // IMS for PDN (emergency call) + if (p_ImsPdn2 != null) { // test case specific IMS handling for PDN2 + connect(p_ImsPdn2:IMS_CTRL, v_IP_PTC:IMS_CTRL[tsc_Index_PDN2]); + connect(p_ImsPdn2:IMS_Server, v_IP_PTC:IMS_Server[tsc_Index_PDN2]); + connect(p_ImsPdn2:IMS_Client, v_IP_PTC:IMS_Client[tsc_Index_PDN2]); + + connect(p_ImsPdn2:IPCAN, p_Eutra:IMS[tsc_Index_PDN2]); + connect(p_ImsPdn2:MMI, mtc:PTC_Ut[tsc_MTC_PortIndex_IMS2]); /* @sic R5-134070: generic handling of UT commands for IMS PTC as well as for the other PTCs sic@ + @sic R5s130987 sic@ */ + } + + // ***** UTRAN PTC ***** + if ((p_Utran != null) and ((not isvalue(p_RatCombination) or (valueof(p_RatCombination) == EUTRA_UTRA)))) { // if p_RatCombination == EUTRA_GERAN the UTRAN PTC is used as dummy only to get sys info + f_UTRAN_PTC_Map(p_Utran); + } + + // ***** GERAN PTC ***** + if ((p_Geran != null) and ((not isvalue(p_RatCombination) or (valueof(p_RatCombination) == EUTRA_GERAN)))) { // if p_RatCombination == EUTRA_GERAN the UTRAN PTC is used as dummy only to get sys info + f_GERAN_PTC_Map(p_Geran); + } + + // ***** CDMA2000 PTC ***** + if (p_Cdma2000 != null) { + f_CDMA2000_PTC_Map(p_Cdma2000); + } + + // ***** Connect PTCs to MTC ***** + if (p_Eutra != null) {connect(mtc:PTC_Ut[tsc_MTC_PortIndex_EUTRA], p_Eutra:UT);} + if (p_Utran != null) {connect(mtc:PTC_Ut[tsc_MTC_PortIndex_UTRAN], p_Utran:UT);} + if (p_Geran != null) {connect(mtc:PTC_Ut[tsc_MTC_PortIndex_GERAN], p_Geran:UT);} + if (p_Cdma2000 != null) {connect(mtc:PTC_Ut[tsc_MTC_PortIndex_CDMA2000], p_Cdma2000:UT);} + + // ***** Connect EUTRA PTC to other PTCs ***** + if (p_Utran != null) {connect(p_Eutra:UTRAN, p_Utran:EUTRA);} + if (p_Geran != null) {connect(p_Eutra:GERAN, p_Geran:EUTRA);} + if (p_Cdma2000 != null) {connect(p_Eutra:CDMA2000, p_Cdma2000:EUTRA);} + + // ***** Connect UTRAN PTC to GERAN PTC ***** + if ((p_Geran != null) and (p_Utran != null)) {connect(p_Utran:GERAN, p_Geran:UTRAN);} + + f_UT_InitialPowerOffUE(Ut); /* @sic R5s120520 sic@ */ + } + + //---------------------------------------------------------------------------- + /* + * @desc stop mtc, NAS emulator, IP PTC etc. when all test case components have finished + * @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT) + */ + function fl_MTC_StopIfFinished () runs on MTC_LTE_IRAT + { /* NOTE: there is no reference for IMS since no IMS behaviour will happen when all RAT PTC are gone */ + if ((vc_Components.Eutra == null) and + (vc_Components.Utran == null) and + (vc_Components.Geran == null) and + (vc_Components.Cdma2000 == null)) + { + f_MTC_Stop(pass); // 'pass' will overrule 'none' only + } + } + //---------------------------------------------------------------------------- + /* + * @desc Interface to control the other components + * @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT) + */ + altstep a_PTC_Control() runs on MTC_LTE_IRAT + { /* NOTEs: + - acc. to ES 201 873-1 Annex F.1.1 an error verdict shall be assignd when "running" is applied on any uninitialised component + - it seems that "running" cannot be used in the "[]" */ + + [] any component.killed + { // at a component something's gone wrong and it killed itself, so have to stop everything else + all component.kill; + mtc.stop; + } + + /* since the NAS emulator is a parallel component which does not terminate on its own we need to check all components + @sic R5s100751 change 9 sic@ */ + [vc_Components.Eutra != null] vc_Components.Eutra.done + { + vc_Components.Eutra := null; + fl_MTC_StopIfFinished(); + } + [vc_Components.Utran != null] vc_Components.Utran.done + { + vc_Components.Utran := null; + fl_MTC_StopIfFinished(); + } + [vc_Components.Geran != null] vc_Components.Geran.done + { + vc_Components.Geran := null; + fl_MTC_StopIfFinished(); + } + [vc_Components.Cdma2000 != null] vc_Components.Cdma2000.done + { + vc_Components.Cdma2000 := null; + fl_MTC_StopIfFinished(); + } + } + //============================================================================ + /* + * @desc Main loop of the MTC + * @param p_GuardTimer timer + * @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT) + */ + function f_MTC_MainLoop(timer p_GuardTimer) runs on MTC_LTE_IRAT + { /* @sic R5-113037: Introduction of positioning test cases sic@ */ + /* @sic R5s120520: f_UT_InitialPowerOffUE moved to f_MTC_ConnectPTCs_LTE sic@ */ + + f_MTC_BASE_Init(); + + while (true) { /* mtc will be stopped by a_PTC_Control or due to timeout of the guard timer; + => neither a_PTC_Control nor a_UpperTester needs to use 'repeat' */ + alt { + [] a_PTC_Control(); // handle 'done' and 'killed' of PTCs: MTC will be stopped, when all PTCs are terminated or a fatal error occurs + [] a_MTC_ReceiveFromPTC_SendToUT(tsc_MTC_PortIndex_EUTRA); // handle upper tester for PTC 0 (EUTRA) + [] a_MTC_ReceiveFromPTC_SendToUT(tsc_MTC_PortIndex_UTRAN); // handle upper tester for PTC 1 (UTRAN) + [] a_MTC_ReceiveFromPTC_SendToUT(tsc_MTC_PortIndex_GERAN); // handle upper tester for PTC 2 (GERAN) + [] a_MTC_ReceiveFromPTC_SendToUT(tsc_MTC_PortIndex_CDMA2000); // handle upper tester for PTC 3 (CDMA2000) + [] a_MTC_ReceiveFromPTC_SendToUT(tsc_MTC_PortIndex_IMS1); // handle upper tester for PTC 4 (IMS1) + [] a_MTC_ReceiveFromPTC_SendToUT(tsc_MTC_PortIndex_IMS2); // handle upper tester for PTC 5 (IMS2) + [] a_MTC_ReceiveFromUT_SendToPTC(); + [] p_GuardTimer.timeout {f_MTC_Stop(fail);} /* acc. to the assumption that preamble and postamble are short compared to the testbody + a FAIL verdict is assigned (rather than an INCONC) */ + } + } + } +} diff --git a/LTE_A_IWD_14wk37/Common/MTC/MTC_UpperTester.ttcn b/LTE_A_IWD_14wk37/Common/MTC/MTC_UpperTester.ttcn new file mode 100644 index 0000000..7664612 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/MTC/MTC_UpperTester.ttcn @@ -0,0 +1,665 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-10 10:55:39 +0200 (Wed, 10 Sep 2014) $ +// $Rev: 12185 $ +/******************************************************************************/ +//------------------------------------------------------------------------------ +//* History: +//* @sic R5-096657 Added SMS command DELETE_MESSAGE_WITHFLAG sic@ +//------------------------------------------------------------------------------ + +module MTC_UpperTester { + import from CommonDefs all; + import from UpperTesterCommon all; + import from UpperTesterPtcToMtcDefs all; + import from UpperTesterSystemCmds all; + import from MTC_Base all; + + // ============================================================================= + // local functions: + /* + * @desc handles the commands being sent by the PTCs (UT_COMMON_CMD); + * the commands may either be mapped to AT or to MMI commands + * @param p_CoordPortIndex .. refers to respective PTC + * @param p_UT_Req + * @return template (value) UT_SYSTEM_REQ + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function fl_UT_HandleCmd(integer p_CoordPortIndex, + UT_COMMON_CMD p_UT_Req) runs on MTC_BASE return template (value) UT_SYSTEM_REQ + { /* @sic R5-113037: Introduction of positioning test cases sic@ */ + var template (omit) Ut_ParameterList_Type v_ParamList := p_UT_Req.ParameterList; + var boolean v_UeToBeSwitchedOn := f_MTC_BASE_UE_SwitchedOn_Get(); + var Ut_CnfReq_Type v_CnfRequired := p_UT_Req.CnfReq; + var template (value) Ut_System_Cmd_Type v_SystemCmd; + var Ut_ParameterList_Type v_ParamListVal; + + if (f_MTC_BASE_IsWaitingForCnf()) { // check that there is no AT or MMI command is ongoing + FatalError (__FILE__, __LINE__, "unexpected Upper Tester command (other command is still pending)"); + } + + if (isvalue(v_ParamList)) { + v_ParamListVal := valueof(v_ParamList); + } + + if (f_UT_CommandRequiresCnf(v_CnfRequired)) { + // store index of coordination to be used for sending back the confirmation + f_MTC_BASE_CoordPortIndex_Set(p_CoordPortIndex); + if (v_CnfRequired == MULTIPLE_CNF) { // @sic R5s140316 sic@ + f_MTC_BASE_MultipleCnf_Set (not f_MTC_BASE_MultipleCnf_Get()); + } + } + select (p_UT_Req.Cmd) { + case (POWER_OFF) { + v_UeToBeSwitchedOn := false; + v_SystemCmd := cs_MMI_POWER_OFF; + } + case (POWER_ON) { + v_UeToBeSwitchedOn := true; + v_SystemCmd := cs_MMI_POWER_ON; + } + case (SWITCH_OFF) { + v_UeToBeSwitchedOn := false; + v_SystemCmd := cs_MMI_SWITCH_OFF; + } + case (SWITCH_ON) { + v_UeToBeSwitchedOn := true; + v_SystemCmd := cs_MMI_SWITCH_ON; + } + case (CONFIGURE_CEMODE) { + v_SystemCmd := cs_AT_CEMODE (v_ParamListVal[0].Value); // @sic R5-106675 sic@ + } + case (CONFIGURE_OPERATIONMODE) { + v_SystemCmd := cs_MMI_CONFIGURE_OPERATIONMODE (v_ParamList); + } + case (DISABLE_EPS) { + v_SystemCmd := cs_MMI_DISABLE_EPS; + } + case (CONFIGURE_SMS_ONLY) { + v_SystemCmd := cs_MMI_CONFIGURE_SMS_ONLY; + } + case (INSERT_USIM) { + v_SystemCmd := cs_MMI_INSERT_USIM(v_ParamList); // @sic R5-123085 harmonisation of IMS sic@ + } + case (REMOVE_USIM) { + v_SystemCmd := cs_MMI_REMOVE_USIM; + } + case (REQUEST_CALL) { + v_SystemCmd := cs_AT_DIAL_CALL (v_ParamListVal[0].Value); + } + case (CHECK_PLMN) { + v_SystemCmd := cs_MMI_CHECK_PLMN (v_ParamList); + } + case (CHECK_CSG) { + v_SystemCmd := cs_MMI_CHECK_CSG (v_ParamList); + } + case (DEFINE_EPS_QOS) { + v_SystemCmd := cs_AT_DEFINE_EPS_QOS (v_ParamListVal[0].Value); + } + case (DEFINE_TFT) { + v_SystemCmd := cs_AT_DEFINE_TFT (v_ParamListVal[0].Value); + } + case (REQUEST_DED_BEARER) { + v_SystemCmd := cs_AT_REQUEST_DED_BEARER (v_ParamListVal); + } + case (ACTIVATE_BEARER) { + v_SystemCmd := cs_AT_ACTIVATEBEARER (v_ParamListVal); + } + case (PLMN_AUTOMATIC) { + v_SystemCmd := cs_AT_PLMN_AUTOMATIC; // @sic R5-106675 sic@ + } + case (PLMN_MANUAL) { + v_SystemCmd := cs_AT_SET_PLMN_MANUAL (v_ParamListVal[0].Value); // @sic R5-106675 sic@ + } + case (SELECT_CSG) { // @sic R5-106675 sic@ + v_SystemCmd := cs_MMI_CSG_PLMN (v_ParamListVal); + } + case (REQUEST_PDPCONTEXT) { + v_SystemCmd := cs_AT_REQUEST_PDPCONTEXT(v_ParamListVal); + } + case (DEACTIVATE_BEARER) { + v_SystemCmd := cs_AT_DEACTIVATEBEARER(v_ParamListVal); + } + case (MODIFY_BEARER) { + v_SystemCmd := cs_AT_MODIFYBEARER(v_ParamListVal); + } + case (ATTACH) { + v_SystemCmd := cs_AT_REQUEST_ATTACH; + } + case (DETACH) { + v_SystemCmd := cs_AT_REQUEST_DETACH; + } + case (DELETE_MESSAGE_WITHFLAG) { + v_SystemCmd := cs_AT_DELETE_MESSAGE_DELFLAG (v_ParamListVal); + } + case (SELECT_MESSAGE_SERVICE) { + v_SystemCmd := cs_AT_SELECT_MESSAGE_SERVICE (v_ParamListVal[0].Value); + } + case (SET_PREFERRED_STORAGE) { + v_SystemCmd := cs_AT_SET_PREFERRED_STORAGE (v_ParamListVal); + } + case (MESSAGE_FORMAT) { + v_SystemCmd := cs_AT_MESSAGE_FORMAT (v_ParamListVal[0].Value); + } + case (SELECT_CHARACTER_SET) { + v_SystemCmd := cs_AT_SELECT_CHARACTER_SET (v_ParamListVal[0].Value); + } + case (SERVICE_CENTRE_ADDRESS) { + v_SystemCmd := cs_AT_SERVICE_CENTRE_ADDRESS (v_ParamListVal); + } + case (WRITE_MESSAGE_TOMEMORY_TEXTMODE) { + v_SystemCmd := cs_AT_MESSAGE_WRITE_TEXTMODE (v_ParamListVal); + } + case (WRITE_MESSAGE_TOMEMORY_PDUMODE) { // @sic R5s110750 sic@ + v_SystemCmd := cs_AT_MESSAGE_WRITE_PDUMODE (v_ParamListVal); + } + case (SEND_STORED_MESSAGE_ONE) { + v_SystemCmd := cs_AT_SEND_STORED_ONEMESSAGE (v_ParamListVal[0].Value); + } + case (SET_TEXTMODE_PARAMETERS) { + v_SystemCmd := cs_AT_SET_TEXTMODE_PARAMETERS (v_ParamListVal); + } + case (CHECK_MESSAGE_DISPLAYED) { + v_SystemCmd := cs_MMI_CHECK_MESSAGE_DISPLAYED (v_ParamListVal); + } + case (DEFINE_QOS) { + v_SystemCmd := cs_AT_QOS_PROFILE_REQUESTED (v_ParamListVal); + } + case (CHECK_CLOCK) { + v_SystemCmd := cs_AT_CHECK_CLOCK; + } + case (CHECK_NITZ_DST) { + v_SystemCmd := cs_MMI_CHECK_NITZ_DST (v_ParamListVal); + } + case (CHECK_NITZ_FULL_NETWORK_NAME) { + v_SystemCmd := cs_MMI_CHECK_NITZ_FULL_NETWORK_NAME (v_ParamListVal); + } + case (CHECK_NITZ_LTZ) { + v_SystemCmd := cs_MMI_CHECK_NITZ_LTZ (v_ParamListVal); + } + case (CHECK_NITZ_SHORT_NETWORK_NAME) { + v_SystemCmd := cs_MMI_CHECK_NITZ_SHORT_NETWORK_NAME (v_ParamListVal); + } + case (CHECK_NITZ_UT) { + v_SystemCmd := cs_MMI_CHECK_NITZ_UT (v_ParamListVal); + } + case (CHECK_OPERATOR_NAME) { + v_SystemCmd := cs_AT_CHECK_OPERATOR_NAME (v_ParamListVal); + } + case (ANSWER_CALL) { + v_SystemCmd := cs_AT_ANSWER_CALL; + } + case (RELEASE_CALL) { + v_SystemCmd := cs_AT_RELEASE_CALL; + } + case (CHECK_ETWS_INDICATION) { + v_SystemCmd := cs_MMI_CHECK_ETWS_INDICATION (v_ParamListVal); + } + case (CHECK_ETWS_NO_INDICATION) { // @sic R5s130376 sic@ + v_SystemCmd := cs_MMI_CHECK_ETWS_NO_INDICATION (v_ParamListVal); + } + case (CHECK_ETWS_ALERT) { + v_SystemCmd := cs_MMI_CHECK_ETWS_ALERT; + } + case (CHECK_ETWS_NO_ALERT) { + v_SystemCmd := cs_MMI_CHECK_ETWS_NO_ALERT; + } + case (CHECK_CMAS_INDICATION) { + v_SystemCmd := cs_MMI_CHECK_CMAS_INDICATION (v_ParamListVal); + } + case (CHECK_CMAS_NO_INDICATION) { // @sic R5s130376 sic@ + v_SystemCmd := cs_MMI_CHECK_CMAS_NO_INDICATION (v_ParamListVal) + } + case (CHECK_CMAS_ALERT) { + v_SystemCmd := cs_MMI_CHECK_CMAS_ALERT; + } + case (CHECK_CMAS_NO_ALERT) { + v_SystemCmd := cs_MMI_CHECK_CMAS_NO_ALERT; + } + case (CHECK_DTCH_THROUGHCONNECTED) { + v_SystemCmd := cs_MMI_CHECK_DTCH; + } + case (GERAN_UPLINK_DATA) { + v_SystemCmd := cs_MMI_GERAN_DATA; + } + case (TRIGGER_MOLR) { + v_SystemCmd := cs_AT_TRIGGER_MOLR (v_ParamListVal); + } + case (REQUEST_IMS_VOICE_CALL, REQUEST_IMS_EMERGENCY_CALL) { + v_SystemCmd := cs_AT_IMS_VOICE_CALL (v_ParamListVal[0].Value); + } + case (RELEASE_IMS_CALL) { + v_SystemCmd := cs_AT_RELEASE_IMS_CALL (v_ParamListVal[0].Value); + } + case (INITIATE_VIDEO_CALL) { + v_SystemCmd := cs_AT_IMS_VIDEO_CALL (v_ParamListVal[0].Value); + } + case (CLEAR_STORED_ASSISTANCE_DATA) { + v_SystemCmd := cs_MMI_CLEAR_STORED_DATA; + } + case (DETACH_NON_EPS) { + v_SystemCmd := cs_MMI_DETACH_NON_EPS; + } + case (LOCATION_SUBSCRIBE) { + v_SystemCmd := cs_AT_LOCATION_SUBSCRIBE (v_ParamListVal); + } + case (LOCATION_ANSWER) { + v_SystemCmd := cs_AT_LOCATION_ANSWER (v_ParamListVal); + } + case (LOCATION_INFO) { + v_SystemCmd := cs_MMI_LOCATION_INFO; + } + case (LOCATION_MULTIPLE) { + v_CnfRequired := NO_CNF_REQUIRED; // MULTIPLE_CNF is still set, so system will accept any number of CNFs + v_SystemCmd := cs_MMI_LOCATION_MULTIPLE; + } + case (TIMEZONE_MULTIPLE) { + v_CnfRequired := NO_CNF_REQUIRED; // MULTIPLE_CNF is still set, so system will accept any number of CNFs + v_SystemCmd := cs_MMI_TIMEZONE_MULTIPLE; + } + case (TIMEZONE_SUBSCRIBE) { + v_SystemCmd := cs_AT_TIMEZONE_SUBSCRIBE (v_ParamListVal); + } + case (HRPD_PDN_CONNECTION) { // @sic R5s120051 sic@ + v_SystemCmd := cs_MMI_HRPD_PDN_CONNECTION; + } + case (GET_EMERGENCY_NUMS_1) { + v_SystemCmd := cs_AT_GET_EMERGENCY_NUMS_1; + } + case (GET_EMERGENCY_NUMS_2) { + v_SystemCmd := cs_AT_GET_EMERGENCY_NUMS_2; + } + case (TRIGGER_USER_RESELECTION) { + v_SystemCmd := cs_MMI_TRIGGER_USER_RESELECTION; + } + case (REQUEST_NON_CALL_RELATED_SS) { + v_SystemCmd := cs_MMI_REQUEST_NON_CALL_RELATED_SS; + } + case (SEND_3_STORED_MESSAGES) { + v_SystemCmd := cs_AT_SEND_STORED_3_MESSAGES(v_ParamListVal); + } + case (MBMS_SERVICE_INTEREST) { // @sic R5-135000 sic@ + v_SystemCmd := cs_MMI_MBMS_SERVICE_INTEREST (v_ParamListVal); + } + case (MBMS_SERVICE_ACTIVE) { // @sic R5-142985 sic@ + v_SystemCmd := cs_MMI_MBMS_SERVICE_ACTIVE (v_ParamListVal); + } + case (MBMS_PRIORITY_OVER_UNICAST) { // @sic R5-142985 sic@ + v_SystemCmd := cs_MMI_MBMS_PRIORITY_OVER_UNICAST (v_ParamListVal); + } + case (SUPPLEMENTARY_SERVICE) { + v_SystemCmd := fl_ProcessSupplementaryService (v_ParamListVal); + } + case (POWER_PREFERENCE) { + v_SystemCmd := cs_AT_POWER_PREFERENCE (v_ParamListVal); + } + case (ACCEPT_MTSI_TEXT) { + v_SystemCmd := cs_MMI_ACCEPT_MTSI_TEXT; + } + case (DEREGISTER) { + v_SystemCmd := cs_MMI_DEREGISTER; + } + case (TRIGGER_SMS) { + v_SystemCmd := cs_MMI_TRIGGER_SMS; + } + case (TRIGGER_2ND_IMPU) { + v_SystemCmd := cs_MMI_TRIGGER_2ND_IMPU; + } + case (TRIGGER_3RD_IMPU) { + v_SystemCmd := cs_MMI_TRIGGER_3RD_IMPU; + } + case (REFRESH) { + v_SystemCmd := cs_MMI_REFRESH; + } + case (REMOVE_VIDEO_CALL) { + v_SystemCmd := cs_MMI_REMOVE_VIDEO_CALL; + } + case (CALL_HOLD_RELEASE) { + v_SystemCmd := cs_AT_SS_CALL_HOLD("0"); + } + case (CALL_HOLD) { + if (isvalue(v_ParamList)) { + v_SystemCmd := cs_AT_SS_CALL_HOLD("2" & v_ParamListVal[0].Value); + } else { + v_SystemCmd := cs_AT_SS_CALL_HOLD("2"); + } + } + case (CALL_RESUME) { + if (isvalue(v_ParamList)) { + v_SystemCmd := cs_AT_SS_CALL_HOLD("1" & v_ParamListVal[0].Value); + } else { + v_SystemCmd := cs_AT_SS_CALL_HOLD("1"); + } + } + case (CALL_MPTY) { + v_SystemCmd := cs_AT_SS_CALL_HOLD("3"); + } + case (CALL_ECT) { + v_SystemCmd := cs_AT_SS_CALL_HOLD("4"); + } + case (CHECK_CALL_DISPLAY) { + v_SystemCmd := cs_MMI_CHECK_CALL_DISPLAY (v_ParamListVal); + } + case (CHECK_RESPONSE_DISPLAY) { + v_SystemCmd := cs_MMI_CHECK_RESPONSE_DISPLAY (v_ParamListVal); + } + case (CHECK_SS_USER_IND) { + v_SystemCmd := cs_MMI_CHECK_SS_USER_IND (v_ParamListVal); + } + } + + f_MTC_BASE_UE_SwitchedOn_Set(v_UeToBeSwitchedOn); // UE needs to be switched on or off + + return cas_UT_SYSTEM_REQ(v_SystemCmd, v_CnfRequired); + } + //============================================================================= + /* + * @desc To process the supplementary service command + * @param p_ParamList + * @return template (value) Ut_System_Cmd_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function fl_ProcessSupplementaryService(Ut_ParameterList_Type p_ParamList) return template (value) Ut_System_Cmd_Type + { + var template (value) Ut_System_Cmd_Type v_SystemCmd; + + select (p_ParamList[0].Value){ + case (tsc_UT_SS_CALL_FORWARDING_UNCONDITIONAL, + tsc_UT_SS_CALL_FORWARDING_NO_REPLY, + tsc_UT_SS_CALL_FORWARDING_BUSY, + tsc_UT_SS_CALL_FORWARDING_NOT_LOGGED_IN, + tsc_UT_SS_CALL_FORWARDING_NOT_REACHABLE, + tsc_UT_SS_CALL_FORWARDING_ALL, + tsc_UT_SS_CALL_FORWARDING_ALL_CONDITIONAL, + tsc_UT_SS_CALL_FORWARDING_DEFLECTION, + tsc_UT_SS_CALL_FORWARDING_DIVERSION_NOTIFICATION) { + v_SystemCmd := fl_SS_CallForward (p_ParamList); + } + case (tsc_UT_SS_CLIP) { + select (p_ParamList[1].Value) { + case (tsc_UT_SS_DEACTIVATE) { + v_SystemCmd := cs_AT_SS_CLIP ("=0"); + } case (tsc_UT_SS_QUERY) { + v_SystemCmd := cs_AT_SS_CLIP ("?"); + } case else { + v_SystemCmd := cs_AT_SS_CLIP ("=1"); + } + } + } + case (tsc_UT_SS_CLIR) { + select (p_ParamList[1].Value) { + case (tsc_UT_SS_DEACTIVATE) { + v_SystemCmd := cs_AT_SS_CLIR ("=2"); + } case (tsc_UT_SS_QUERY) { + v_SystemCmd := cs_AT_SS_CLIR ("?"); + } case else { + v_SystemCmd := cs_AT_SS_CLIR ("=1"); + } + } + } + case (tsc_UT_SS_COLP) { + select (p_ParamList[1].Value) { + case (tsc_UT_SS_DEACTIVATE) { + v_SystemCmd := cs_AT_SS_COLP ("=0"); + } case (tsc_UT_SS_QUERY) { + v_SystemCmd := cs_AT_SS_COLP ("?"); + } case else { + v_SystemCmd := cs_AT_SS_COLP ("=1"); + } + } + } + case (tsc_UT_SS_CNAP) { + select (p_ParamList[1].Value) { + case (tsc_UT_SS_DEACTIVATE) { + v_SystemCmd := cs_AT_SS_CNAP ("=0"); + } case (tsc_UT_SS_QUERY) { + v_SystemCmd := cs_AT_SS_CNAP ("?"); + } case else { + v_SystemCmd := cs_AT_SS_CNAP ("=1"); + } + } + } + case (tsc_UT_SS_INCOMING_COMMUNICATION_BARRING, + tsc_UT_SS_INCOMING_COMMUNICATION_BARRING_ROAMING, + tsc_UT_SS_OUTGOING_COMMUNICATION_BARRING, + tsc_UT_SS_OUTGOING_INTERNATIONAL_BARRING, + tsc_UT_SS_OUTGOING_INTERNATIONAL_EX_HC_BARRING, + tsc_UT_SS_ALL_BARRING_SERVICES_AB, + tsc_UT_SS_ALL_OUTGOING_BARRING_SERVICES_AG, + tsc_UT_SS_ALL_INCOMING_BARRING_SERVICES_AC) { + v_SystemCmd := cs_AT_SS_LOCK (fl_FacilityLock(p_ParamList)); + } + case (tsc_UT_SS_CALL_WAITING) { + select (p_ParamList[1].Value) { + case (tsc_UT_SS_DEACTIVATE) { + v_SystemCmd := cs_AT_SS_CALL_WAITING ("0,0," &p_ParamList[2].Value); + } case (tsc_UT_SS_QUERY) { + v_SystemCmd := cs_AT_SS_CALL_WAITING ("1,2"); + } case else { + v_SystemCmd := cs_AT_SS_CALL_WAITING ("1,1," &p_ParamList[2].Value); + } + } + } + case (tsc_UT_SS_USSD) { + v_SystemCmd := cs_AT_SS_USSD (p_ParamList[2].Value); + } + case (tsc_UT_SS_PASSWORD) { + v_SystemCmd := cs_AT_SS_PASSWORD (fl_ConvertBarringService(p_ParamList[1].Value) & ",""" & + p_ParamList[2].Value & """,""" & // old password + p_ParamList[3].Value & """"); // new password + } + case else { + v_SystemCmd := cs_MMI_ACTIVATE_SS (p_ParamList); + } + } + return v_SystemCmd; + } + + /* + * @desc Convert call barring service for AT command + * @param p_ParamList + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function fl_FacilityLock (Ut_ParameterList_Type p_ParamList) return charstring + { + var charstring v_Mode := ""; + var charstring v_Cmd := fl_ConvertBarringService (p_ParamList[0].Value); + + select (p_ParamList[1].Value) { + case (tsc_UT_SS_DEACTIVATE) { + v_Mode := "0"; + } case (tsc_UT_SS_QUERY) { + v_Mode := "2"; + } case else { + v_Mode := "1"; + } + } + v_Cmd := v_Cmd & "," & v_Mode; + + if (ispresent(p_ParamList[2])) { + if (p_ParamList[2].Name == "Password") { + v_Cmd := v_Cmd & ",""" & p_ParamList[2].Value & """"; + } else { // must be class + v_Cmd := v_Cmd & ",,""" & p_ParamList[2].Value & """"; + } + } + if (ispresent(p_ParamList[3])) { // class + v_Cmd := v_Cmd & ",""" & p_ParamList[3].Value & """"; + } + + return v_Cmd; + } + /* + * @desc Convert call barring service for AT command + * @param p_BarringService + * @return charstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function fl_ConvertBarringService(charstring p_BarringService) return charstring + { + var charstring v_Facility := ""; + + select (p_BarringService) { + case (tsc_UT_SS_INCOMING_COMMUNICATION_BARRING) { + v_Facility := """AI"""; + } + case (tsc_UT_SS_INCOMING_COMMUNICATION_BARRING_ROAMING) { + v_Facility := """IR"""; + } + case (tsc_UT_SS_OUTGOING_COMMUNICATION_BARRING) { + v_Facility := """AO"""; + } + case (tsc_UT_SS_OUTGOING_INTERNATIONAL_BARRING) { + v_Facility := """OI"""; + } + case (tsc_UT_SS_OUTGOING_INTERNATIONAL_EX_HC_BARRING) { + v_Facility := """OX"""; + } + case (tsc_UT_SS_ALL_BARRING_SERVICES_AB) { + v_Facility := """AB"""; + } + case (tsc_UT_SS_ALL_OUTGOING_BARRING_SERVICES_AG) { + v_Facility := """AG"""; + } + case (tsc_UT_SS_ALL_INCOMING_BARRING_SERVICES_AC) { + v_Facility := """AC"""; + } + } + return v_Facility; + } + + /* + * @desc Activate/Deactivate call forwarding + * @param p_ParamList + * @return template (value) Ut_System_Cmd_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function fl_SS_CallForward(Ut_ParameterList_Type p_ParamList) return template (value) Ut_System_Cmd_Type + { + var charstring v_CmdString := ""; + var charstring v_Reason, v_Mode; + + select (p_ParamList[0].Value) { + case (tsc_UT_SS_CALL_FORWARDING_UNCONDITIONAL) { + v_Reason := "0"; + } + case (tsc_UT_SS_CALL_FORWARDING_BUSY) { + v_Reason := "1"; + } + case (tsc_UT_SS_CALL_FORWARDING_NO_REPLY) { + v_Reason := "2"; + } + case (tsc_UT_SS_CALL_FORWARDING_NOT_REACHABLE) { + v_Reason := "3"; + } + case (tsc_UT_SS_CALL_FORWARDING_ALL) { + v_Reason := "4"; + } + case (tsc_UT_SS_CALL_FORWARDING_ALL_CONDITIONAL) { + v_Reason := "5"; + } + case (tsc_UT_SS_CALL_FORWARDING_DEFLECTION) { + v_Reason := "6"; + } + case (tsc_UT_SS_CALL_FORWARDING_NOT_LOGGED_IN) { + v_Reason := "7"; + } + case (tsc_UT_SS_CALL_FORWARDING_DIVERSION_NOTIFICATION) { + v_Reason := "8"; + } + } + select (p_ParamList[1].Value) { + case (tsc_UT_SS_DEACTIVATE) { + v_Mode := "0"; + } case (tsc_UT_SS_ACTIVATE) { + v_Mode := "1"; + } case (tsc_UT_SS_QUERY) { + v_Mode := "2"; + } case (tsc_UT_SS_REGISTER) { + v_Mode := "3"; + } case (tsc_UT_SS_DELETE) { + v_Mode := "4"; + } + } + v_CmdString := "v_Reason,v_Mode,"; + if (p_ParamList[2].Name == "Uri") { + v_CmdString := v_CmdString & "1, 0,"; + } else {// number format, national number + v_CmdString := v_CmdString & "2, 145,"; + } + + v_CmdString := v_CmdString & p_ParamList[2].Value; // number/Uri + if (ispresent(p_ParamList[3])) { + if (p_ParamList[3].Name == "Service") { // need to add only the classx parameter + v_CmdString := v_CmdString & "," & p_ParamList[3].Value; + } else { // need to add the time parameter + v_CmdString := v_CmdString & ",,,,," & p_ParamList[3].Value; + } + } + if (ispresent(p_ParamList[4])) { // need to add the time parameter + v_CmdString := v_CmdString & ",,,," & p_ParamList[4].Value; + } + return cs_AT_SS_CALL_FORWARD(v_CmdString); + } + + //---------------------------------------------------------------------------- + /* + * @desc cause the UE to be switched off at the beginning of a teat case + * @status APPROVED (LTE) + */ +/* function f_UT_InitialPowerOffUE() runs on MTC_BASE */ +/* { /\* @sic R5-113037: Introduction of positioning test cases - system port handed over as parameter to get function independent from component definitions sic@ *\/ */ +/* Ut.send(cas_UT_SYSTEM_REQ(cs_MMI_POWER_OFF, CNF_REQUIRED)); */ +/* Ut.receive(car_UT_COMMON_CNF); */ +/* } */ + //============================================================================= + /* + * @desc message handler for the upper tester + * @param p_CoordPortIndex .. refers to respective PTC + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + altstep a_MTC_ReceiveFromPTC_SendToUT(integer p_CoordPortIndex) runs on MTC_BASE + { /* @sic R5-113037: new common altstep to be used by distinct MTC implementations sic@ */ + var UT_COMMON_CMD v_UT_Req; + var template (value) UT_SYSTEM_REQ v_UT_SYSTEM_REQ; + + [] PTC_Ut[p_CoordPortIndex].receive(car_UT_ReqAny) -> value v_UT_Req + { + v_UT_SYSTEM_REQ := fl_UT_HandleCmd(p_CoordPortIndex, v_UT_Req); + Ut.send(v_UT_SYSTEM_REQ); + } + } + //============================================================================ + /* + * @desc message handler to deal with reponses of the upper tester at the system interface + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + altstep a_MTC_ReceiveFromUT_SendToPTC() runs on MTC_BASE + { /* @sic R5-113037: Introduction of positioning test cases sic@ */ + var UT_COMMON_CNF v_UT_Cnf; + var integer v_CoordPortIndex; + + [] Ut.receive (car_UT_COMMON_CNF) -> value v_UT_Cnf + { + if (v_UT_Cnf.Result == false) { // If not received a successful confirmation, stop everything + FatalError (__FILE__, __LINE__, "AT/MMI Command failed"); + + } else { + if (f_MTC_BASE_IsWaitingForCnf()) { + v_CoordPortIndex := f_MTC_BASE_CoordPortIndex_Get(); + PTC_Ut[v_CoordPortIndex].send(v_UT_Cnf); + if (not f_MTC_BASE_MultipleCnf_Get ()) { // @sic R5s140316 sic@ + f_MTC_BASE_CoordPortIndex_Set(tsc_UT_NoCnfExpected); + } + } + // else: just discard the CNF + } + } + } +} diff --git a/LTE_A_IWD_14wk37/Common/NAS/NAS_34109TypeDefs.ttcn b/LTE_A_IWD_14wk37/Common/NAS/NAS_34109TypeDefs.ttcn new file mode 100644 index 0000000..10d1bc5 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/NAS/NAS_34109TypeDefs.ttcn @@ -0,0 +1,146 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-06-12 16:06:56 +0200 (Wed, 12 Jun 2013) $ +// $Rev: 8958 $ +/******************************************************************************/ + +module NAS_34109TypeDefs { + +import from CommonDefs all; +import from NAS_CommonTypeDefs all; + + //**************************************************************************** + // Test Loop PROTOCOL DEFINITIONS: PDUs + //---------------------------------------------------------------------------- + // Special conformance testing functions for User Equipment messages (34.109 cl. 6) + //---------------------------------------------------------------------------- + const integer tsc_MAX_Mode1_LB_Entities := 8; + // ============================================================================= + // Close UE Test Loop + // 3G TS 34.109 cl. 6.2 + // Direction: SS to UE + // ----------------------------------------------------------------------------- + type record CLOSEUETESTLOOP { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType, /* M V 1 */ + UE_TestLoopMode_Type ueTestLoopMode, /* M V 1 */ + UE_TestLoopMode1_LB_Setup_Type ueTestLoopMode1_LB_Setup optional, /* C LV 1-25 */ + /* present if ueTestLoopMode ='00'F */ + UE_TestLoopMode3_LB_Setup_Type ueTestLoopMode3_LB_Setup optional /* C V 1 */ + /* present if ueTestLoopMode ='01'F */ + /* represents IP PDU delay time 0..255 seconds */ + }; + + type Octet_Type UE_TestLoopMode_Type; + + type record UE_TestLoopMode1_LB_Setup_Type { + O1_Type iel, + LB_Setup_IE_List_Type lbSetupList optional + }; + + type record LB_Setup_IE_Type { + B16_Type uplinkPdcpSduSize, + B3_Type reserved, + B5_Type rbIdentity + }; + + type record length (1..tsc_MAX_Mode1_LB_Entities)of LB_Setup_IE_Type LB_Setup_IE_List_Type; + + type record UE_TestLoopMode3_LB_Setup_Type { + B2_Type reserved, + B6_Type mBMSIdentity + }; + // ============================================================================= + // Close UE Test Loop Complete + // 3G TS 34.109 cl. 6.3 + // Direction: UE to SS + // ----------------------------------------------------------------------------- + type record CLOSEUETESTLOOPCOMPLETE { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType /* M V 1 */ + }; + + // ============================================================================= + // OPEN UE Test Loop + // 3G TS 34.109 cl. 6.4 + // Direction: SS to UE + // ----------------------------------------------------------------------------- + type record OPENUETESTLOOP { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType /* M V 1 */ + }; + + // ============================================================================= + // OPEN UE Test Loop Complete + // 3G TS 34.109 cl. 6.5 + // Direction: UE to SS + // ----------------------------------------------------------------------------- + type record OPENUETESTLOOPCOMPLETE { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType /* M V 1 */ + }; + + // ============================================================================= + // Update UE Location Information + // 3G TS 34.109 cl. 6.13 + // Direction: SS to UE + // ----------------------------------------------------------------------------- + type O8_Type Utran_EllipsoidPointWithAltitude_Type; + + type record UPDATEUELOCATIONINFORMATION { + SkipIndicator skipIndicator, /* M V 1/2 */ + ProtocolDiscriminator protocolDiscriminator, /* M V 1/2 */ + MessageType messageType, /* M V 1 */ + Utran_EllipsoidPointWithAltitude_Type ellipsoidPointWithAltitude /* M V 8 */ + }; + +// ============================================================================= +// PDU Type Definition +// DEACTIVATE RB TEST MODE n -> ue 3G TS 34.109 V3.0.0 cl. 6.8 +// ----------------------------------------------------------------------------- +type record DEACTIVATERBTESTMODE { + SkipIndicator skipIndicator, // Skip Indicator M BITSTRING [4] + ProtocolDiscriminator tCProtocolDiscriminator, // TC Protocol Discriminator M BITSTRING [4] + MessageType msgType // Message Type M BITSTRING [8] +}; + +// ============================================================================= +// PDU Type Definition +// DEACTIVATE RB TEST MODE COMPLETE ue -> n 3G TS 34.109 cl. 6.9 +// ----------------------------------------------------------------------------- +type record DEACTIVATERBTESTMODECOMPLETE { + SkipIndicator skipIndicator, // Skip Indicator M BITSTRING [4] + ProtocolDiscriminator tCProtocolDiscriminator, // TC Protocol Discriminator M BITSTRING [4] + MessageType msgType // Message Type M BITSTRING [8] +}; + +// ============================================================================= +// PDU Type Definition +// ACTIVATE RB TEST MODE n -> ue 3G TS 34.109 V3.0.0 cl. 6.6 +// ----------------------------------------------------------------------------- +type record ACTIVATERBTESTMODE { + SkipIndicator skipIndicator, // Skip Indicator M BITSTRING [4] + ProtocolDiscriminator tCProtocolDiscriminator, // TC Protocol Discriminator M BITSTRING [4] + MessageType msgType // Message Type M BITSTRING [8] +}; + +// ============================================================================= +// PDU Type Definition +// ACTIVATE RB TEST MODE COMPLETE ue -> n 3G TS 34.109 V3.0.0 cl. 6.7 +// ----------------------------------------------------------------------------- +type record ACTIVATERBTESTMODECOMPLETE { + SkipIndicator skipIndicator, // Skip Indicator M BITSTRING [4] + ProtocolDiscriminator tCProtocolDiscriminator, // TC Protocol Discriminator M BITSTRING [4] + MessageType msgType // Message Type M BITSTRING [8] +}; + +} diff --git a/LTE_A_IWD_14wk37/Common/NAS/NAS_AuthenticationCommon.ttcn b/LTE_A_IWD_14wk37/Common/NAS/NAS_AuthenticationCommon.ttcn new file mode 100644 index 0000000..35f05bf --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/NAS/NAS_AuthenticationCommon.ttcn @@ -0,0 +1,108 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-07-28 16:53:02 +0200 (Mon, 28 Jul 2014) $ +// $Rev: 11851 $ +/******************************************************************************/ + +module NAS_AuthenticationCommon { + import from CommonDefs all; + import from Parameters all; + + type record Common_AuthenticationParams_Type { /* parameters related/used to/by EUTRA/UTRAN/GERAN authentication + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + B128_Type RandValue, + B128_Type AUTN, + B32_128_Type XRES, + B64_Type KcGSM, + B3_Type KeySeq, + B128_Type CK, + B128_Type IK, + integer XRESLength optional // @sic R5s120907 sic@ + }; + + type enumerated AuthenticationError_Type {noError, macError, sqnFailure, macErrorPlusSepBit, sepBit0 }; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + const B32_Type tsc_AuthUndefinedB32 := oct2bit ('FFFFFFFF'O); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const B128_Type tsc_AuthUndefinedB128 := tsc_AuthUndefinedB32 & tsc_AuthUndefinedB32 & tsc_AuthUndefinedB32 & tsc_AuthUndefinedB32; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const B256_Type tsc_AuthUndefinedB256 := tsc_AuthUndefinedB128 & tsc_AuthUndefinedB128; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + + template (value) Common_AuthenticationParams_Type cs_CommonAuthParams_Init (template (value) B128_Type p_Rand) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + RandValue := p_Rand, + AUTN := tsc_AuthUndefinedB128, + XRES := tsc_AuthUndefinedB128, + KcGSM := tsc_AuthUndefinedB32 & tsc_AuthUndefinedB32, + KeySeq := '111'B, + CK := tsc_AuthUndefinedB128, + IK := tsc_AuthUndefinedB128, + XRESLength := omit // @sic R5s120907 sic@ + }; + + //---------------------------------------------------------------------------- + /* + * @desc Calculation is done according to 34.108, clause 8.1.2 and 33.102, clause 6.8.1.2 + * Generation of Ck, Ik, AUTN and XRES + * @param p_Auth_Params + * @param p_AuthenticationError (default value: noError) + * @return Common_AuthenticationParams_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_AuthenticationInit(Common_AuthenticationParams_Type p_Auth_Params, + AuthenticationError_Type p_AuthenticationError := noError) return Common_AuthenticationParams_Type + { /* @sic R5-123085 harmonisation of IMS (AuthenticationInit and the two error variants are needed for IMS too) sic@ */ + var Common_AuthenticationParams_Type v_Auth_Params := p_Auth_Params; + var B128_Type v_XDOut; + var B80_Type v_AUTN_2; + var B64_Type v_CDOut; + var B64_Type v_XDOut_Half; + var B64_Type v_MAC; + var B48_Type v_AK; + var B48_Type v_AUTN_1; + var B48_Type v_AuthSQN := '000000000000000000000000000000000000000000000000'B; + var B16_Type v_AuthAMF := px_AuthAMF; + + if (p_AuthenticationError == sqnFailure) { + v_AuthAMF := '1111111111111111'B; //AMF_resynch value + } + + if (p_AuthenticationError == sepBit0) { + v_AuthAMF := v_AuthAMF and4b '0111111111111111'B; // separation bit forced to 0 (TC 9.1.2.7), the rest unchanged from PIXIT + } + + if (p_AuthenticationError == macErrorPlusSepBit) { // @sic R5s130201 sic@ + v_AuthAMF := v_AuthAMF or4b '1000000000000000'B; // force the separation to 1, leave the rest unchanged + v_AuthSQN := '111111111111111111111111111111111111111111111111'B; // force SQN out of range + } + + v_XDOut := v_Auth_Params.RandValue xor4b px_AuthK; + v_CDOut := v_AuthSQN & v_AuthAMF; + v_XDOut_Half := substr( v_XDOut, 0, 64); + v_AK := substr( v_XDOut, 24, 48); + v_AUTN_1 := v_AuthSQN xor4b v_AK; + v_MAC := v_XDOut_Half xor4b v_CDOut; + + if ((p_AuthenticationError == macError) or (p_AuthenticationError == macErrorPlusSepBit)) { // @sic R5s130201 sic@ + v_MAC := not4b(v_MAC); // @sic R5s110313 sic@ + } + + v_AUTN_2 := v_AuthAMF & v_MAC; + v_Auth_Params.AUTN := v_AUTN_1 & v_AUTN_2; + // v_IKey := 128 bits of v_XDOut, wrapped, starting from offset 16 + v_Auth_Params.IK := substr( v_XDOut, 16, (128 - 16)) & substr( v_XDOut, 0, 16); + // v_CKey := 128 bits of v_XDOut, wrapped, starting from offset 8 + v_Auth_Params.CK := substr( v_XDOut, 8, (128 - 8)) & substr( v_XDOut, 0, 8); + v_Auth_Params.XRES := v_XDOut; + + if (p_AuthenticationError == noError) { + // ((CK1 XOR CK2) XOR (IK1 XOR IK2)) + v_Auth_Params.KcGSM := (substr( v_Auth_Params.CK, 0, 64) xor4b substr( v_Auth_Params.CK, 64, 64)) xor4b (substr( v_Auth_Params.IK, 0, 64) xor4b substr( v_Auth_Params.IK, 64, 64)); + v_Auth_Params.KeySeq := int2bit(((bit2int(v_Auth_Params.KeySeq)+1) mod 7), 3); // @sic R5s140447 sic@ + } + return (v_Auth_Params); + } +} diff --git a/LTE_A_IWD_14wk37/Common/NAS/NAS_AuxiliaryDefsAndFunctions.ttcn b/LTE_A_IWD_14wk37/Common/NAS/NAS_AuxiliaryDefsAndFunctions.ttcn new file mode 100644 index 0000000..f5a4434 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/NAS/NAS_AuxiliaryDefsAndFunctions.ttcn @@ -0,0 +1,330 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-11 16:20:52 +0200 (Thu, 11 Sep 2014) $ +// $Rev: 12210 $ +/******************************************************************************/ + +module NAS_AuxiliaryDefsAndFunctions { + + import from CommonDefs all; + import from Parameters all; + import from NAS_CommonTypeDefs all; + import from NAS_CommonTemplates all; + import from CommonIP all; + + //============================================================================ + // Protocol Configuration Options (PCO) + //---------------------------------------------------------------------------- + /* + * @desc Function used to check whether the UE requests in its PCO an address allocation via NAS signalling + * If the UE does not send PCO, then address assignment shall be via DHCP. TS 36.508 table 4.7.3-6. + * @param p_Pco + * @return boolean + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_CheckPCOforIPallocationViaNas(template (omit) ProtocolConfigOptions p_Pco) return boolean + { + var ProtocolConfigOptions v_Pco; + var integer i; + + if (isvalue(p_Pco)) { + v_Pco := valueof (p_Pco); + for (i := 0; i < lengthof(v_Pco.pco); i := i + 1 ) { + if(v_Pco.pco[i].protocolID == '000B'O) { // TS 24.008 clause 10.5.6.3 // @sic R5s090322 sic@ + return false; // @sic R5s090322 sic@ + } + } + } + return true; // @sic R5s090322 sic@ + } + + //------------------------------------ + /* + * @desc Function used to check whether the UE requests a P-CSCF address or DNS server address in its PCO + * If the UE does not support IMS, or doesn't request a P-CSCF address, the function returns the default PCO, PPP + * @param p_Pco + * @param p_PdnIndex (default value: PDN_1) + * @return template (value) ProtocolConfigOptions + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_GetDefaultProtocolConfigOptions(template (omit) ProtocolConfigOptions p_Pco, + PDN_Index_Type p_PdnIndex := PDN_1) return template (value) ProtocolConfigOptions + { /* @sic R5s130362 - MCC160 Implementation sic@ */ + var PDN_AddressInfo_Type v_PDN_AddressInfo := f_PDN_AddressInfo_Get(p_PdnIndex); + var template (value) NAS_ProtocolConfigOptions_Type v_ProtocolContainerList := {}; + var integer v_PcoCnt := 0; + var ProtocolConfigOptions v_Rcvd; + var O2_Type v_ProtocolId; + var octetstring v_Contents; + var integer i; + + if (isvalue(p_Pco)) { + v_Rcvd := valueof (p_Pco); + for (i := 0; i < lengthof(v_Rcvd.pco); i := i + 1) { + + v_ProtocolId := v_Rcvd.pco[i].protocolID; + v_Contents := ''O; + + select (v_ProtocolId) { // See 24.008 Table 10.5.154 + case ('0001'O) { // P-CSCF IPv6 address + if (pc_IMS) { + v_Contents := f_Convert_IPv6Addr2OctString(v_PDN_AddressInfo.PCSCF_IPAddressIPv6); + } + } + case ('0003'O) { // DNS Server IPv6 address + v_Contents := f_Convert_IPv6Addr2OctString(v_PDN_AddressInfo.DNS_ServerAddressIPv6); + } + case ('000C'O) { // P-CSCF IPv4 address + if (pc_IMS) { + v_Contents := f_Convert_IPv4Addr2OctString(v_PDN_AddressInfo.PCSCF_IPAddressIPv4); + } + } + case ('000D'O) { // DNS Server IPv4 address + v_Contents := f_Convert_IPv4Addr2OctString(v_PDN_AddressInfo.DNS_ServerAddressIPv4); + } + } + + if (lengthof(v_Contents) > 0) { + v_ProtocolContainerList[v_PcoCnt] := cs_ProtocolContainer(v_ProtocolId, v_Contents); + v_PcoCnt := v_PcoCnt + 1; + } + } + } + return f_NAS_ProtocolConfigOptionsTX(v_ProtocolContainerList); + } + + //============================================================================ + + //---------------------------------------------------------------------------- + /* + * @desc Convert from IMSI, IMEI or IMEISV of type hexstring to octetstring (to be used in f_Imsi2MobileIdentity, f_Imei2MobileIdentity and f_Imeisv2MobileIdentity) + * @param p_MobileId + * @return octetstring + * @status APPROVED (LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function fl_ImsiImei2Octetstring(hexstring p_MobileId) return octetstring + { + var integer v_Length := lengthof(p_MobileId); + var integer v_Odd := (v_Length rem 2); + var octetstring v_Other := '00'O; + var integer I; + var integer K; + + if (v_Odd == 0) { // If length is even + v_Length := v_Length + 1; + p_MobileId := p_MobileId & 'F'H; // add '1111' on to the end of the IMSI + } + + // Reverse each pair of digits + // First digit is not included as it is treated differently + K:=0; + for (I:=1; I < v_Length - 1; I:=I+2) { + v_Other[K] := hex2oct(p_MobileId[I+1] & p_MobileId[I]); + K := K + 1; + } + + return v_Other; + } + + //---------------------------------------------------------------------------- + /* + * @desc Convert from IMSI of type hexstring to NAS MobileIdentity + * @param p_IMSI + * @return template (value) MobileIdentity + * @status APPROVED (LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_Imsi2MobileIdentity(hexstring p_IMSI) return template (value) MobileIdentity + { + var integer v_ImsiLength := lengthof(p_IMSI); + var integer v_Odd := (v_ImsiLength rem 2); + var octetstring v_Other := fl_ImsiImei2Octetstring (p_IMSI); // @sic R5s100092 sic@ + var B4_Type v_FirstDigit := hex2bit(p_IMSI[0]); + var B1_Type v_OddEvenInd := int2bit(v_Odd, 1); + + return cds_MobileIdentityImsi_lv(v_FirstDigit, v_OddEvenInd, v_Other); + } + + //---------------------------------------------------------------------------- + /* + * @desc Convert from IMEI of type hexstring to NAS MobileIdentity + * @param p_IMEI + * @param p_NAS_IdType (default value: tsc_IdType_IMEI) + * @return template (present) MobileIdentity + * @status APPROVED (LTE, LTE_A) + */ + function f_Imei2MobileIdentity(hexstring p_IMEI, + NAS_IdType p_NAS_IdType := tsc_IdType_IMEI) return template (present) MobileIdentity // @sic R5s130758 sic@ + { + var integer v_ImeiLength := lengthof(p_IMEI); + var integer v_Odd := (v_ImeiLength rem 2); + var octetstring v_Other := fl_ImsiImei2Octetstring (p_IMEI); + var B4_Type v_FirstDigit := hex2bit(p_IMEI[0]); + var B1_Type v_OddEvenInd := int2bit(v_Odd, 1); + + return cr_MobileIdentityImei(v_FirstDigit, v_OddEvenInd, v_Other, p_NAS_IdType); // @sic R5s130758 sic@ + } + + //---------------------------------------------------------------------------- + /* + * @desc Convert from IMEISV of type hexstring to NAS MobileIdentity + * @param p_IMEISV + * @return template (present) MobileIdentity + * @status APPROVED (LTE) + */ + function f_Imeisv2MobileIdentity(hexstring p_IMEISV) return template (present) MobileIdentity + { // @sic R5-131832 sic@ + var integer v_ImeiLength := lengthof(p_IMEISV); + var integer v_Odd := (v_ImeiLength rem 2); + var octetstring v_Other := fl_ImsiImei2Octetstring (p_IMEISV); + var B4_Type v_FirstDigit := hex2bit(p_IMEISV[0]); + var B1_Type v_OddEvenInd := int2bit(v_Odd, 1); + + return cr_MobileIdentityImeisv(v_FirstDigit, v_OddEvenInd, v_Other); + } + + //---------------------------------------------------------------------------- + /* + * @desc Convert from Emergency Number of type charstring to octetstring (to be used in Emergency Number List in e.g. Attach Accept) + * @param p_EmgNum + * @return octetstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function fl_EmgNum2Octetstring(hexstring p_EmgNum) return octetstring + { + var integer v_Length := lengthof(p_EmgNum); + var integer v_Odd := (v_Length rem 2); + var octetstring v_Result := '00'O; + var integer I; + var integer K; + + if (v_Odd == 1) { // If length is odd + v_Length := v_Length + 1; + p_EmgNum := p_EmgNum & 'F'H; // add '1111' on to the end of the Emergency Number + } + + // Reverse each pair of digits, note that v_Length is even + K:=0; + for (I:=0; I < v_Length - 1; I:=I+2) { + v_Result[K] := hex2oct(p_EmgNum[I+1] & p_EmgNum[I]); + K := K + 1; + } + + return v_Result; + } + + /* + * @desc To generate an local emergency number list + * @param p_NoOfNums - To specify how many numbers to be included in the list (max = 10) + * @param p_NumList + * @return template (value) EmergNumList + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_Build_EmergNumList(integer p_NoOfNums, + EmergencyNumList p_NumList) return template (value) EmergNumList + { + var integer i; + var template (value) EmergNumList v_EmergNum; + var octetstring v_LocalNum; + var integer v_LocalLength := 0; + var integer v_TotalLength := 0; + var B7_Type v_ServCat; + + v_EmergNum.iei := '34'O; + for (i := 0; i < p_NoOfNums; i:=i+1) { + v_LocalNum := fl_EmgNum2Octetstring (p_NumList[i]); + v_LocalLength := lengthof(v_LocalNum); + if (i/2 > 0) { + v_ServCat := ('00'B & ('00001'B << i)); + } else { + v_ServCat := ('00'B & ('00001'B << i)); + } + v_EmergNum.emergNum[i]:= cs_EmergencyLocalNumber(int2oct(v_LocalLength + 1, 1), + cs_EmergServCat(v_ServCat), + v_LocalNum); + v_TotalLength := v_TotalLength + 2 + v_LocalLength; // 1 octet for v_LocalLength + 1 for SCValue + length of number + } + v_EmergNum.iel := int2oct (v_TotalLength, 1); + return v_EmergNum; + } + + /* + * @desc Generation of a new list of local emergency numbers different from existing ones + * @param p_NoOfNums .. maximum 20 + * @param p_ExistingNums + * @return EmergencyNumList .. numbers of 3 decimal digits each + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) + */ + function f_Get_EmergencyNumList(integer p_NoOfNums, + EmergencyNumList p_ExistingNums) return EmergencyNumList + { + var EmergencyNumList v_NewNumbers; + var integer v_Number := 120; // start as implied by LTE test case 11.2.6 + var boolean v_NumberExists; + var hexstring v_NumberDigits; + var integer i; + + if ( p_NoOfNums > 20 ) { FatalError(__FILE__, __LINE__, "unsupported number of emg nums") }; // max 20 emg nums may be generated + + for (i:=0; i the text between the most inner quotes is returned */ + v_Result := regexp(p_AT_Response, v_Expression, 0); + + return match(v_Result, v_ExpectedString); + } + +} diff --git a/LTE_A_IWD_14wk37/Common/NAS/NAS_CommonTemplates.ttcn b/LTE_A_IWD_14wk37/Common/NAS/NAS_CommonTemplates.ttcn new file mode 100644 index 0000000..6a7a825 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/NAS/NAS_CommonTemplates.ttcn @@ -0,0 +1,1029 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 22:08:20 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12181 $ +/******************************************************************************/ + +module NAS_CommonTemplates { + + import from CommonDefs all; + import from NAS_CommonTypeDefs all; + + //============================================================================== + group NAS_CommonConstants { // Constants being used for NAS_CommonTemplates + + const B1_Type tsc_Spare1 := '0'B; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + const B2_Type tsc_Spare2 := '00'B; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + const B3_Type tsc_Spare3 := '000'B; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const B4_Type tsc_Spare4 := '0000'B; + const B5_Type tsc_Spare5 := '00000'B; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + const B6_Type tsc_Spare6 := '000000'B; /* @status APPROVED (LTE) */ + const B7_Type tsc_Spare7 := '0000000'B; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const B8_Type tsc_Spare8 := '00000000'B; + const SpareHalfOctet tsc_SpareHalfOctet := '0'H; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + + const NAS_IdType tsc_IdType_NoId := '000'B; + const NAS_IdType tsc_IdType_IMSI := '001'B; /* suitable for identity type 24.008 cl. 10.5.3.4 and identiy type 2 24.008 cl. 10.5.5.9 + @status APPROVED (LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const NAS_IdType tsc_IdType_IMEI := '010'B; /* suitable for identity type 24.008 cl. 10.5.3.4 and identiy type 2 24.008 cl. 10.5.5.9 + @status APPROVED (LTE, LTE_A) */ + const NAS_IdType tsc_IdType_IMEI_24301 := '011'B; /* suitable for identity type 24.301 cl. 9.9.3.12.1 + @status APPROVED (LTE) */ + const NAS_IdType tsc_IdType_IMEISV := '011'B; /* @sic R5s130438 sic@ suitable for identity type 24.008 cl. 10.5.3.4 and identiy type 2 24.008 cl. 10.5.5.9 + @status APPROVED (LTE) */ + const NAS_IdType tsc_IdType_TMSI := '100'B; /* suitable for identity type 24.008 cl. 10.5.3.4 and identiy type 2 24.008 cl. 10.5.5.9 + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const NAS_IdType tsc_IdType_TMGI := '101'B; + const NAS_IdType tsc_IdType_GUTI := '110'B; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + const NAS_IdType tsc_IdType_EmergencyIMEI := '011'B; /* To be used when specifying an IMEI when using an emergency bearer @sic R5s110176 Baseline Moving sic@ */ + + const B3_Type tsc_IMEISV_NotRequested := '000'B; /* @sic R5s130438 sic@ suitable for IMEISV request type 24.008 cl. 10.5.5.10 */ + const B3_Type tsc_IMEISV_Requested := '001'B; /* @sic R5s130438 sic@ suitable for IMEISV request type 24.008 cl. 10.5.5.10 + @status APPROVED (LTE) */ + +const TmsiStatusValue tsc_NoValidTmsi := '0'B; + + const GprsTimerUnit tsc_GprsTimerUnit_2sec := '000'B; /* @status APPROVED (LTE) */ + const GprsTimerUnit tsc_GprsTimerUnit_1min := '001'B; /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + const GprsTimerUnit tsc_Gprs3TimerUnit_1min := '101'B; /* @status APPROVED (LTE_A, SSNITZ, UTRAN) */ + const GprsTimerUnit tsc_GprsTimerUnit_6min := '010'B; /* @status APPROVED (LTE, LTE_IRAT) */ + const GprsTimerUnit tsc_GprsTimerUnit_deact := '111'B; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + const O2_Type tsc_PCO_Id_DSMIPv6 := '0007'O; + const O2_Type tsc_PCO_Id_DSMIPv6_IPv4 := '0009'O; + + const B7_Type tsc_EmergServManual := '0100000'B; /* @status */ + const B7_Type tsc_EmergServAuto := '1000000'B; /* @status */ + const B7_Type tsc_EmergServPolice := '0000001'B; + const B7_Type tsc_EmergServAmbulance := '0000010'B; + const B7_Type tsc_EmergServFire := '0000100'B; + const B7_Type tsc_EmergServMarine := '0001000'B; + const B7_Type tsc_EmergServMountain:= '0010000'B; + + } // end group NAS_CommonConstants + //------------------------------------------------------------------------------ + + template (value) AccessPointName cs_AccessPointName(octetstring p_Name) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + iei := omit, + iel := int2oct(lengthof(p_Name), 1), + nameValue := p_Name + }; + + template (present) AccessPointName cr_AccessPointName(octetstring p_Name) := + { /* @status APPROVED (IMS, LTE, LTE_A) */ + iei := '28'O, + iel := int2oct(lengthof(p_Name), 1), + nameValue := p_Name + }; + + template (present) AccessPointName cr_AccessPointName_Any := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + iei := '28'O, + iel := ?, + nameValue := ? + }; + + template (present) AddUpdateParams cr_AddUpdateParams_Any := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := ?, // '1100'B + spare:=?, + csmo := ?, // @sic R5s120178 Baseline Moving sic@ + csmt := ? + }; + + template (present) AdditionalUpdateType cr_AdditionalUpdateTypeAny := + { /* 24.301 cl. 9.9.3.0B */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + /* @sic R5s100135 sic@ */ + iei := 'F'H, // currently only used as TV + spare3 := tsc_Spare3, + addUpdateTypeValue := ? + }; + + template (present) AuthenticationFailureParameter cr_AuthFailParam_Any := + { /* TLV format to be used in Authentication_Failure */ + /* @status APPROVED (LTE_A, IMS_IRAT, LTE, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := '30'O, // version 110, and value used in GMM + iel := '0E'O, + auts := ? + }; + + template (present) AuthenticationFailureParameter cdr_AuthFailParamGSM_Any modifies cr_AuthFailParam_Any := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := '22'O + }; + + template (value) RAND cs_RAND_v(B128_Type p_RAND) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + iei := omit, + randValue := p_RAND + }; + + template (value) RAND cs_GMM_AuthRAND(B128_Type p_Rand) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := '21'O, + randValue := p_Rand + }; + + template (value) AUTN cs_AUTN_lv(B128_Type p_AUTN) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + iei := omit, + iel := '10'O, /* AUTN has length of 128 bits i.e. 16 octets */ + aUTN := p_AUTN + }; + + template (value) AUTN cs_GSM_AUTN(template (value) B128_Type p_AUTN) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := '20'O, + iel := '10'O, // Length of 16 octets + aUTN := p_AUTN // value of Authentication Parameter AUTN + }; + + template (value) AUTN cs_GMM_AUTN(B128_Type p_Autn) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := '28'O, + iel := '10'O, + aUTN := p_Autn + }; + + template (value) CiphKeySeqNum cs_CiphKeySeqNum(template (omit) IEI4_Type p_IEI, + template (value) KeySeq p_KeySeq) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, + spare1 := '0'B, + keySeq := p_KeySeq + }; + + template (present) CiphKeySeqNum cr_CiphKeySeqNum(template (omit) IEI4_Type p_IEI, + template (present) KeySeq p_KeySeq) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, + spare1 := '0'B, + keySeq := p_KeySeq + }; + + // ============================================================================= + // Structured Type Constraint + // Codec + // 3G TS 24.008 cl. 10.5.4.32 + // ----------------------------------------------------------------------------- + template (present) Codec cr_CodecAny := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + sysId := ?, // system identifcation + len := ?, // length + bitMap1to8 := ?, // codec bitmap bits 1-8 + bitMap9to16 := * // codec bitmap bits 9-16 + }; + + // ============================================================================= + // Structured Type Constraint + // Supported Codec List + // 3G TS 24.008 cl. 10.5.3.32 + // ----------------------------------------------------------------------------- + template (present) CodecList cr_CodecListAny := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := '40'O, // '01000000'B (40 hex) + iel := ?, // length + codec := ({cr_CodecAny, cr_CodecAny, cr_CodecAny, *}, {cr_CodecAny, cr_CodecAny, *}, {cr_CodecAny, *}) // Codec list @sic R5s110278 sic@ + }; + + template (value) DetachType cs_DetachType(NAS_AttDetValue_Type p_TypeOfDetach):= + { /* @status APPROVED (LTE) */ + switchOff := '0'B, + typeOfDetach := p_TypeOfDetach + }; + + template (present) DetachType cr_DetachType(template (present) B1_Type p_SwitchOff, + template (present) NAS_AttDetValue_Type p_TypeOfDetach) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + switchOff := p_SwitchOff, + typeOfDetach := p_TypeOfDetach + }; + + template (present) DetachType cr_DetachTypeOnSwitchOff := cr_DetachType('1'B, ?); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + template (present) DeviceProperties cr_DeviceProperties(IEI4_Type p_IEI, + template (present) B1_Type p_LowPriority := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, + spare := tsc_Spare3, + lowPriority := p_LowPriority + }; + + template (present) DRXparameter cr_DRXparameter_Any (template (omit) IEI8_Type p_IEI) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, + splitPGcycleCode := ?, // Split PG cycle code + cnDRXcoef := ?, // CN specific DRX cycle length coefficient + splitOnCCCH := ?, // Split on CCCCH + nonDRXtimer := ? // non-DRX timer + }; + + template (present) EDGE_Struct cr_EDGE_Struct_Any := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + modulationCapability := ?, + pwrMask1 := ?, + eDGE_RF_PowerCapability1 := *, // not present if pwrMask1 = 0 + pwrMask2 := ?, + eDGE_RF_PowerCapability2 := * // not present if pwrMask2 = 0 + }; + + // ============================================================================= + // Structured Type Constraint + // Emergency Service Category + // 3GPP 24.008 / 10.5.4.33 + // ----------------------------------------------------------------------------- + template (present) EmergServCat cr_EmergServCatAny := + { /* @status APPROVED (LTE_IRAT) */ + spare := '0'B, + emergSCValue := ? // Emergency Service Category value + }; + + template (value) EmergServCat cs_EmergServCat(B7_Type p_EmergSCValue) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + spare := '0'B, + emergSCValue := p_EmergSCValue // Emergency Service Category value + }; + + template (value) EmergNum cs_EmergencyLocalNumber(Type4Length_Type p_Length, + template (value) EmergServCat p_EmergSCValue, + octetstring p_Number) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + len := p_Length, // length + emergServCat := p_EmergSCValue, // Emergency Service Category + digits := p_Number // BCD numbers + }; + + // ============================================================================= + // Structured Type Constraint + // ----------------------------------------------------------------------------- + template (value) GPRS_Timer cs_GprsTimer_tv(IEI8_Type p_IEI, // @sic R5s100662 sic@ + B3_Type p_Unit, + B5_Type p_Value) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + iei := p_IEI, // '1E'O + unit := p_Unit, + timerValue := p_Value + }; + + template (value) GPRS_Timer cs_GprsTimer_v(GprsTimerUnit p_Unit, + B5_Type p_Value) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := omit, + unit := p_Unit, + timerValue := p_Value + }; + + template (value) GPRS_Timer cs_GprsTimer_v_deact := cs_GprsTimer_v(tsc_GprsTimerUnit_deact, tsc_Spare5); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + + template (value) IdentityType cs_IdentityType(NAS_IdType p_NAS_IdType) := + { /* @status APPROVED (LTE, LTE_A) */ + spare := '0'B, + typeOfId := p_NAS_IdType + }; + + template (present) LocAreaId cr_LAI(template (omit) IEI8_Type p_IEI, + template (present) octetstring p_PLMN := ?, + template (present) octetstring p_LAC := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, + plmn := p_PLMN, // MCC + MNC + lac := p_LAC // location area code + }; + + template (present) LocAreaId cr_LAI_Any := cr_LAI('13'O); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + template (present) LocAreaId cr_LAI_Any_v := cr_LAI(omit); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + template (value) LocAreaId cs_LAI(template (omit) IEI8_Type p_IEI, + template (value) octetstring p_PLMN, + template (value) octetstring p_LAC) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, + plmn := p_PLMN, // MCC + MNC + lac := p_LAC // location area code + }; + + template (value) LLC_SAPI cs_LLC_SAPI(template (omit) IEI8_Type p_IEI := omit, + B4_Type p_LlcSapiValue) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + iei := p_IEI, + spare := '0000'B, + llcSapiValue := p_LlcSapiValue + }; + + template (value) LLC_SAPI cs_LLC_SAPI_11 (template (omit) IEI8_Type p_IEI := omit) := cs_LLC_SAPI(p_IEI, '1011'B); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + template (value) LLC_SAPI cs_LLC_SAPI_03 (template (omit) IEI8_Type p_IEI := omit) := cs_LLC_SAPI(p_IEI, '0011'B); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + + template (present) MobileIdentity cr_MobileIdAny (template (omit) IEI8_Type p_IEI) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, + iel := ?, + idDigit1 := ?, + oddEvenInd := ?, + typeOfId := ?, + otherDigits := ? + }; + + template (value) MobileIdentity cs_MobileIdentityGuti(template (omit) IEI8_Type p_IEI, + octetstring p_Guti) := + { + /* Reference: 24.301 cl. 9.9.3.12; + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + iei := p_IEI, + iel := int2oct(lengthof(p_Guti) + 1, 1), // 11 octets in case of GUTI + idDigit1 := '1111'B, // in case of the GUTI + oddEvenInd := '0'B, // in case of the GUTI + typeOfId := tsc_IdType_GUTI, // 3 bits + otherDigits := p_Guti // 10 octets acc. to 24.301 + }; + + template (value) MobileIdentity cs_MobileIdentityImsi(B4_Type p_FirstDigit, + B1_Type p_OddEvenInd, + octetstring p_OtherDigits) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := '17'O, + iel := int2oct(lengthof(p_OtherDigits) + 1, 1), + idDigit1 := p_FirstDigit, // 4 bits + oddEvenInd := p_OddEvenInd, // 1 bit + typeOfId := tsc_IdType_IMSI, // 3 bits + otherDigits := p_OtherDigits + }; + + template (value) MobileIdentity cds_MobileIdentityImsi_lv(B4_Type p_FirstDigit, + B1_Type p_OddEvenInd, + octetstring p_OtherDigits) + modifies cs_MobileIdentityImsi := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := omit + }; + + template (value) MobileIdentity cs_MobileIdTMSIorPTMSI(template (omit) IEI8_Type p_IEI, + O4_Type p_TmsiPtmsi) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, // for U/G this is '18'O + iel := '05'O, // TMSI consists of 4 octets + idDigit1 := '1111'B, // special coding for TMSI + oddEvenInd := '0'B, // even + typeOfId := tsc_IdType_TMSI, // TMSI / P-TMSI + otherDigits := p_TmsiPtmsi + }; + + template (value) MobileIdentity cs_MobileIdTMSI(template (omit) IEI8_Type p_IEI, // iei can be '17' (MM) or '13' (GMM) or omit + O4_Type p_Tmsi) := + /* @status APPROVED (LTE_IRAT) */ + cs_MobileIdTMSIorPTMSI(p_IEI, p_Tmsi); + + template (present) MobileIdentity cr_MobileIdTMSI_lv(template (present) octetstring p_Tmsi := ?) := + { /* @status APPROVED (LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := omit, + iel := '05'O, // TMSI consists of 4 octets + idDigit1 := '1111'B, // special coding for TMSI + oddEvenInd := '0'B, // even + typeOfId := tsc_IdType_TMSI, // TMSI + otherDigits := p_Tmsi + }; + + template (present) MobileIdentity cdr_MobileIdTMSI_tlv(template (present) octetstring p_Tmsi := ?, + IEI8_Type p_IEI := '18'O) + modifies cr_MobileIdTMSI_lv := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + iei := p_IEI + }; + + template (present) MobileIdentity cr_MobileIdentityImei(B4_Type p_FirstDigit, + B1_Type p_OddEvenInd, + octetstring p_OtherDigits, + NAS_IdType p_NAS_IdType := tsc_IdType_IMEI) := // @sic R5s130758 sic@ + { /* @status APPROVED (LTE, LTE_A) */ + iei := omit, + iel := int2oct(lengthof(p_OtherDigits) + 1, 1), + idDigit1 := p_FirstDigit, // 4 bits + oddEvenInd := p_OddEvenInd, // 1 bit + typeOfId := p_NAS_IdType, // 3 bits // @sic R5s130758 sic@ + otherDigits := p_OtherDigits + }; + + template (present) MobileIdentity cr_MobileIdentityImeisv(B4_Type p_FirstDigit, // @sic R5-131832 sic@ + B1_Type p_OddEvenInd, + octetstring p_OtherDigits) := + { /* @status APPROVED (LTE) */ + iei := omit, + iel := int2oct(lengthof(p_OtherDigits) + 1, 1), + idDigit1 := p_FirstDigit, // 4 bits + oddEvenInd := p_OddEvenInd, // 1 bit + typeOfId := tsc_IdType_IMEISV, // 3 bits + otherDigits := p_OtherDigits + }; + + template (present) MS_Clsmk2 cr_MS_Clsmk2_Any_tlv(template (omit) IEI8_Type p_IEI := '11'O) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, // @sic R5s100662, R5s110112 sic@ + iel := '03'O, + spare1_1 := '0'B, + revLvl := ?, + eSIND := ?, + a5_1 := ?, + rFPwrCap := ?, + spare1_2 := '0'B, + pSCap := ?, + sSSI := ?, + sMCap := ?, + vBS := ?, + vGCS := ?, + fC := ?, + cM3 := ?, + spare1_3 := '0'B, + lCSVA := ?, + uCS2 := ?, + soLSA := ?, + cMSP := ?, + a5_3 := ?, + a5_2 := ? + }; + + template (present) MS_Clsmk2 cr_MS_Clsmk2_Any := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cr_MS_Clsmk2_Any_tlv (omit); + + template (present) MS_Clsmk3 cr_MSCLSMK3_Any := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := '20'O, /* 0x20 */ + iel := ?, /* OCTETSTRING [1] */ + spareBit := '0'B, // spare bit */ + multibandSupported := ?, + a5_7 := ?, /* a5/7 algorithm supported */ + a5_6 := ?, /* a5/6 algorithm supported */ + a5_5 := ?, /* a5/5 algorithm supported */ + a5_4 := ?, /* a5/4 algorithm supported */ + associatedRadioCapabilty2 := *, /* present if multibandSupported = 101 or 110 */ + spareBits1 := *, /* present if multibandSupported = 001 or 010 or 100 */ + associatedRadioCapabilty1 := *, /* present if multibandSupported = 001 or 010 or 100 or 101 or 110 */ + maskBit1 := ?, + rGSM_RadioCapability := *, /* R-GSM band associated radio capability. + not present if maskB1 = 0 */ + maskBit2 := ?, + multiSlotClass := *, /* multi slot class. + not present if multiSlotClass = 0 */ + uCS2Treatment := ?, + extMeasurementCapability := ?, /* extended measurement capability */ + maskBit3 := ?, + msMeasurementCapability := cr_MS_MeasCapability_Any ifpresent, /* MS measurement capability + // not present if maskB3 = 0 */ + maskBit4 := ?, + msPositioningMethod := *, /* MS positioning method capability + not present if maskB4 = 0 */ + maskBit5 := ?, + eDGE_MultiSlot := *, /* EDGE multi slot capability + not present if maskB5 = 0 */ + maskBit6 := ?, + psk8_Struct := cr_EDGE_Struct_Any ifpresent, /* EDGE struct + not present if maskB6 = 0 */ + maskBit7 := ?, + gSM400BandsSupported := *, /* not present if maskBIt7 = 0 */ + gSM400AssociatedRadioCapability := *, /* not present if gSM400BandsSupported = 00 or maskB7 = 0 */ + maskBit8 := ?, + gSM850AssociatedRadiioCapability := *, /* not present if maskBIt8 = 0 */ + maskBit9 := ?, + pCS1900AssociatedRadiioCapability := *, /* not present if maskBIt9 = 0 */ + uMTS_FDD_RAT_Capability := ?, + uMTS384TDD_RAT_Capability := ?, + cDMA2000_RAT_Capability := ?, + maskBit10 := ?, + dTM_GPRS_MultiSlotSubclass := *, /* not present if maskB10 = 0 */ + singleSlotDTM := *, /* not present if maskB10 = 0 */ + maskBit11 := *, /* not present if maskB10 = 0 */ + dTM_EGPRS_MultiSlorSubclass := *, /* not present if maskB10 = 0 or maskB11 = 0 */ + maskBit12 := ?, + singleBandSupport := *, /* not present if maskB12 = 0 */ + maskBit13 := *, + gSM700AssociatedRadioCapability := *, /* not present if maskB13 = 0 */ + uMTS128TDD_RAT_Capability := *, + gERANFeatPack1 := *, + mask14 := *, + extDTM_GPRS_MultiSlotSubclass := *, /* not present if maskB14 = 0 */ + etxDTM_EGPRS_MultiSlotSubclass := *, /* not present if maskB14 = 0 */ + mask15 := *, + highMultislotCap := *, /* not present if mask15 = 0 */ + mask16 := *, + gERANIuModeLength := *, /* not present if maskB16 = 0 */ + gERANFLOIuCap := *, + gERANIuModeSpareBits := *, /* not present if maskB16 = 0 */ + gERANFeatPack2 := *, + gMSKMultislotPowerProfile := *, + pSKMultislotPowerProfile := *, + mask17 := *, /* rel 6 features */ + tGSM400BandsSupported := *, /* not present if maskB17 = 0 */ + tGSM400AssocRadioCap := *, /* not present if maskB17 = 0 */ + spare := *, // @sic R5s110176 Baseline Moving sic@ + dlAdvancedRxPerf := *, + dTMEhancCap := *, + mask19 := *, + dTMGPRSHighMultislotClass := *, /* not present if maskB19 = 0 */ + offsetReq := *, /* not present if maskB19 = 0 */ + mask20 := *, /* not present if maskB19 = 0 */ + dTMEGPRSHighMultislotClass := *, /* not present if maskB19 and maskB20 = 0 */ + rptdACCHCap := *, + mask21 := *, + gsm710AssocRadioCap := *, /* not present if maskBit21 = 0 */ + mask22 := *, + tgsm810AssocRadioCap := *, /* not present if maskBit22 = 0 */ + cipheringModeSettingCap := *, + addPositionCap := *, + eutraFDDSupport := *, /* rel 8 features */ + eutraTDDSupport := *, + eutraMeasAndReporting := *, /* @sic R5s100135 Baseline moving sic@ */ + priorityBasedReselection:= *, // @sic R5s110176 Baseline Moving sic@ + utraCSGCellsReporting := *, // @sic R5s110176 Baseline Moving sic@ + vamosLevel := *, // @sic R5s110176 Baseline Moving sic@ + tighterCap := *, // @sic R5s120178 Baseline Moving sic@ + selectCipheringDLSACCH := *, // @sic R5s120178 Baseline Moving sic@ + csPS_SRVCC_G2U := *, // @sic R5s130195 Baseline Moving sic@ + csPS_SRVCC_G2E := *, // @sic R5s130195 Baseline Moving sic@ + spareBits2 := * + }; + + template (present) MS_Clsmk3 cdr_MSCLSMK3_EutraCheck (template (omit) IEI8_Type p_IEI) modifies cr_MSCLSMK3_Any := + { /* @status APPROVED (LTE, LTE_IRAT) */ + iei := p_IEI, // @sic R5s110244, R5s140493 sic@ + iel := omit, // @sic R5s110244 sic@ + eutraFDDSupport := ?, + eutraTDDSupport := ? + }; + + template (present) MS_MeasCapability cr_MS_MeasCapability_Any := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + sMS_VALUE := ?, + sM_VALUE := ? + }; + + template (present) MS_NetworkCap cr_MS_NetworkCap_Any := + { /* 24.301 cl. 9.9.3.18 -> 24.008 cl. 10.5.5.12; + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := '31'O, /* present in case of TV; omit in case of V */ + iel := ?, /* present in case of LV or TLV; omit in case of V */ + gea1 := ?, + smCapDedicated := ?, + smCapGPRS := ?, + ucs2 := ?, + ssScreeningIndicator := ?, + soLSACap := ?, + revLevelIndicator := ?, + pfcFeatureMode := ?, + gea2 := ?, + gea3 := ?, + gea4 := ?, + gea5 := ?, + gea6 := ?, + gea7 := ?, + lcsVACap := ?, + psHOtoUTRAN_IuModeCap := ?, + psHOtoEUTRAN_S1ModeCap := ?, + emmCombinedCap := ?, // @sic R5s110176 Baseline Moving sic@ + isrSupport := ?, + srvccToGERAN_UTRANCap := ?, + epcCap := ?, + nfCap := *, // @sic R5s110176 Baseline Moving R5s110242 sic@ + gERANNtwkShareCap := *, // @sic R5s130195 Baseline Moving sic@ + spareBits := * + }; + + template (present) MS_NetworkCap cdr_MS_NetworkCapAss_lv modifies cr_MS_NetworkCap_Any := + { /* @status APPROVED (LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := omit + }; + + template (present) MS_NetworkFeatureSupport cr_MS_NetworkFeatureSupport(IEI4_Type p_IEI, + template (present) B1_Type p_ExtdPeriodicTimers := ?) := + { /* 24.301 cl. 9.9.2.0A -> 24.008 cl. 10.5.5.15 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, + spare := tsc_Spare3, + extdPeriodicTimers := p_ExtdPeriodicTimers + }; + + template (present) NwkResourceId cr_NwkResourceIdAny (IEI8_Type p_IEI := '10'O) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, + iel := ?, + nriContainerValue := ?, + spareBits := tsc_Spare7 + }; + + template (value) PacketFlowIdentifier cs_PktFlowId := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + iei := '34'O, + iel := '01'O, + spare := '0'B, + idValue := '0000000'B // Best effort + }; + + template (value) PLMN_List cs_PLMN_List(NAS_PlmnIdList_Type p_PlmnIdList) := + { /* @status APPROVED (LTE, LTE_A) */ + iei := '4A'O, + iel := int2oct(lengthof(p_PlmnIdList) * 3, 1), + plmnList := p_PlmnIdList + }; + + template (value) PLMN_List cs_PLMN_List_1PLMN(NAS_PlmnId p_Plmn1) := + /* @status APPROVED (LTE, LTE_A) */ + cs_PLMN_List({p_Plmn1}); + + template (value) PLMN_List cs_PLMN_List_2PLMNs(NAS_PlmnId p_Plmn1, + NAS_PlmnId p_Plmn2) := + /* @status APPROVED (LTE, LTE_A) */ + cs_PLMN_List({p_Plmn1, p_Plmn2}); + + template (value) PLMN_List cs_PLMN_List_3PLMNs(NAS_PlmnId p_Plmn1, + NAS_PlmnId p_Plmn2, + NAS_PlmnId p_Plmn3) := + /* @status APPROVED (LTE) */ + cs_PLMN_List({p_Plmn1, p_Plmn2, p_Plmn3}); + + template (value) PLMN_List cs_PLMN_List_4PLMNs(NAS_PlmnId p_Plmn1, + NAS_PlmnId p_Plmn2, + NAS_PlmnId p_Plmn3, + NAS_PlmnId p_Plmn4) := + /* @status APPROVED (LTE) */ + cs_PLMN_List({p_Plmn1, p_Plmn2, p_Plmn3, p_Plmn4}); + + template (value) ProtocolContainer cs_ProtocolContainer(O2_Type p_ProtocolId, + octetstring p_Content) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + protocolID := p_ProtocolId, + protocolLength := int2oct(lengthof(p_Content), 1), + content := p_Content + }; + + template (value) ProtocolConfigOptions cs_ProtocolConfigOptions_Common(Type4Length_Type p_Type4Length := '01'O, + template (omit) ProtocolConfigOptions.pco p_ProtocolContainers := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + iei := '27'O, + iel := p_Type4Length, + ext := '1'B, + spare := '0000'B, + configProtocol := '000'B, + pco := p_ProtocolContainers + }; + + template (value) ProtocolConfigOptions cs_ProtocolConfigOptions_PPP := cs_ProtocolConfigOptions_Common; /* @status APPROVED (LTE_IRAT) */ + + /* + * @desc Common function to build up ProtocolConfigOptions acc. to 24.008 cl. 10.5.6.3 + * @param p_ProtocolContainers + * @return template (value) ProtocolConfigOptions + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_NAS_ProtocolConfigOptionsTX(template (value) NAS_ProtocolConfigOptions_Type p_ProtocolContainers) return template (value) ProtocolConfigOptions + { + var integer v_Length := 1; // there are at least ext, spare, configProtocol + var integer i; + + for (i:=0; i < lengthof(p_ProtocolContainers); i:=i+1) { + v_Length := v_Length + oct2int(valueof(p_ProtocolContainers[i].protocolLength)) + 3; // 2 octets for protocolID and 1 octet for protocolLength + } + return cs_ProtocolConfigOptions_Common(int2oct(v_Length, 1), p_ProtocolContainers); + } + + template (value) ProtocolConfigOptions cs_ProtocolConfigOptions_OneOption(template (value) ProtocolContainer p_ProtocolContainer) := + /* @status APPROVED (UTRAN) */ + f_NAS_ProtocolConfigOptionsTX({p_ProtocolContainer}); + + template (value) ProtocolConfigOptions cs_ProtocolConfigOptions_TwoOptions(template (value) ProtocolContainer p_ProtocolContainer1, + template (value) ProtocolContainer p_ProtocolContainer2) := + f_NAS_ProtocolConfigOptionsTX({p_ProtocolContainer1, p_ProtocolContainer2}); + + + template (present) ProtocolConfigOptions cr_ProtocolConfigOptionsAny := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + iei := '27'O, + iel := ?, + ext := '1'B, + spare := '0000'B, + configProtocol := ?, + pco := * // @sic R5s100800 sic@ + }; + + template (value) PTMSI_Signature cs_PTMSI_Signature(octetstring p_Ptmsi) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := '19'O, + iel := omit, + signatureValue := p_Ptmsi + }; + + template (present) PTMSI_Signature cr_PTMSI_Signature(template (present) O3_Type p_PtmsiSig) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := '19'O, + iel := omit, + signatureValue := p_PtmsiSig + }; + + template (present) PTMSI_Signature cr_PTMSI_SignatureAny := + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cr_PTMSI_Signature(?); + + template (present) PTMSI_Signature cr_PTMSI_Signature2Any := // Only used in Detach Request MO + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := '19'O, + iel := '03'O, + signatureValue := ? + }; + + template (value) QualityOfService cs_QoS_Negotiated_1 := + { /* TS 34.123-3 Table 8.10.2 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + iei := '30'O, + iel := '10'O, + spare1 := '00'B, + delayClass := '100'B, + relabilityClass := '011'B, + peakThroughput := '0100'B, + spare2 := '0'B, + precedenceClass := '011'B, + spare3 := '000'B, + meanThroughput := '11111'B, + trafficClass := '100'B, + deliveryOrder := '10'B, + deliveryErrorSDU := '010'B, + maxSduSize := '00100000'B, + maxBitRateUL := '01000000'B, + maxBitRateDL := '01000000'B, + residualBER := '0111'B, + sduErrorRatio := '0100'B, + transferDelay := '000000'B, + trafficHandlingPrio := '00'B, + guaranteedBitRateUL := '00010000'B, + guaranteedBitRateDL := '00010000'B, + spare4 := '000'B, + signallingInd := '0'B, + sourceStatisticsDescriptor := '0000'B, + maxBitRateDL_Ext := '00000000'B, + guaranteedBitRateDL_Ext := '00000000'B, + maxBitRateUL_Ext := '00000000'B, + guaranteedBitRateUL_Ext := '00000000'B, + maxBitRateDL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + guaranteedBitRateDL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + maxBitRateUL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + guaranteedBitRateUL_Ext2 := omit // @sic R5s1300195 Baseline Moving sic@ + }; + + template (value) QualityOfService cds_QoS_Negotiated_2 modifies cs_QoS_Negotiated_1 := + { /* TS 34.123-3 Table 8.10.2 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + maxSduSize := '10010110'B, + maxBitRateUL := '01001000'B, + maxBitRateDL := '01001000'B, + residualBER := '0100'B, + sduErrorRatio := '0011'B + }; + + template (value) QualityOfService cds_QoS_Negotiated_3 modifies cs_QoS_Negotiated_1 := + { /* TS 34.123-3 Table 8.10.2 */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + trafficClass := '001'B, + deliveryErrorSDU := '011'B, + maxSduSize := '10001100'B, + maxBitRateUL := '01101110'B, //432 kbps + maxBitRateDL := '01101110'B, //432 kbps + sduErrorRatio := '0010'B, + transferDelay := '001101'B, + guaranteedBitRateUL := '00000000'B, + guaranteedBitRateDL := '00000000'B + }; + + template (value) QualityOfService cds_QoS_Negotiated_4 (template (omit) IEI8_Type p_IEI := '30'O) modifies cs_QoS_PDP2 := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + relabilityClass := '101'B, + trafficClass := '001'B, + deliveryOrder := '10'B, // @sic R5-133509 sic@ + maxSduSize := '00001111'B, + maxBitRateUL := '01101000'B, + maxBitRateDL := '01101000'B, + residualBER := '0001'B, + sduErrorRatio := '0001'B, + transferDelay := '001000'B, + sourceStatisticsDescriptor := '0001'B + }; + + template (value) QualityOfService cs_QoS_PDP2 (template (omit) IEI8_Type p_IEI := '30'O) := + { /* TS 51.010-1 Table 40.5 */ + // @sic R5s120218 sic@ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + iei := p_IEI, + iel := '10'O, + spare1 := '00'B, + delayClass := '100'B, + relabilityClass := '011'B, + peakThroughput := '0101'B, + spare2 := '0'B, + precedenceClass := '010'B, + spare3 := '000'B, + meanThroughput := '10000'B, + trafficClass := '100'B, + deliveryOrder := '01'B, + deliveryErrorSDU := '011'B, + maxSduSize := '10010110'B, + maxBitRateUL := '01001000'B, + maxBitRateDL := '01001000'B, + residualBER := '0111'B, + sduErrorRatio := '0100'B, + transferDelay := '000000'B, + trafficHandlingPrio := '00'B, + guaranteedBitRateUL := '00000000'B, + guaranteedBitRateDL := '00000000'B, + spare4 := '000'B, + signallingInd := '0'B, + sourceStatisticsDescriptor := '0000'B, + maxBitRateDL_Ext := '00000000'B, + guaranteedBitRateDL_Ext := '00000000'B, + maxBitRateUL_Ext := '00000000'B, + guaranteedBitRateUL_Ext := '00000000'B, + maxBitRateDL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + guaranteedBitRateDL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + maxBitRateUL_Ext2 := omit, // @sic R5s1300195 Baseline Moving sic@ + guaranteedBitRateUL_Ext2 := omit // @sic R5s1300195 Baseline Moving sic@ + }; + + template (value) QualityOfService cds_QoS_PDP3 (template (omit) IEI8_Type p_IEI := '30'O) modifies cs_QoS_PDP2 := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + relabilityClass := '101'B, + deliveryErrorSDU := '010'B, + residualBER := '0100'B, + sduErrorRatio := '0011'B + }; + + template (value) QualityOfService cds_QoS_Converstational (template (omit) IEI8_Type p_IEI := '30'O) modifies cs_QoS_PDP2 := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + relabilityClass := '101'B, + trafficClass := '001'B, + deliveryOrder := '10'B, // @sic R5-133509 sic@ + maxSduSize := '00001111'B, // @sic R5-120632 sic@ + maxBitRateUL := '01101000'B, + maxBitRateDL := '01101000'B, + residualBER := '0001'B, + sduErrorRatio := '0001'B, + transferDelay := '001000'B + }; + + template (present) TrafficFlowTemplate cr_Tft(template IEI8_Type p_IEI := omit, + template (present) B3_Type p_Code := ?) := + { /* 24.301 cl. 9.9.4.13 -> 24.008 cl. 10.5.6.12 */ + /* @status APPROVED (LTE, UTRAN) */ + iei := p_IEI, /* present in case of TLV; omit in case of LV */ + iel := ?, + tftOperationCode := p_Code, + eBit := ?, + noOfPktFilter := complement ('0000'B), // value must be greater than 0 and <= 16 (only 4 bits) + packetFilterList := ?, + parameterList := * + }; + + template (value) TrafficFlowTemplate cs_TrafficFlowTemplate(integer p_IeLength, + template (value) TrafficFlowTemplate.packetFilterList p_PacketFilterList):= + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, UTRAN) */ + iei := omit, + iel := int2oct(p_IeLength, 1), + tftOperationCode := '001'B, // Create new TFT + eBit := '0'B, // Parameter list not included + noOfPktFilter := int2bit(lengthof(p_PacketFilterList), 4), + packetFilterList := p_PacketFilterList, + parameterList := omit + }; + + // ============================================================================= + // A value of 1 is the highest radio priority level + // ----------------------------------------------------------------------------- + + template (value) RadioPriority cs_RadioPriority (template (omit) IEI4_Type p_IEI, + B3_Type p_Val) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, + spare := '0'B, + levelValue := p_Val + }; + + template (value) RadioPriority cs_RadioPriorityHigh (template (omit) IEI4_Type p_IEI) := cs_RadioPriority (p_IEI, '001'B); /* @status APPROVED (LTE_IRAT, UTRAN) */ + template (value) RadioPriority cs_RadioPriorityLow (template (omit) IEI4_Type p_IEI) := cs_RadioPriority (p_IEI, '100'B); /* @status APPROVED (LTE_IRAT) */ + + template (present) TMSI_Status cr_TMSI_Status(template (present) TmsiStatusValue p_TmsiStatus := ?) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := '9'H, + spare3 := tsc_Spare3, + flag := p_TmsiStatus + }; + + template (present) UE_NetworkCap cr_UENetworkCap_Any (template (omit) IEI8_Type p_IEI) := + { /* 24.301 cl. 9.9.3.34 + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, /* present in case of TLV; omit in case of LV */ + iel := ?, /* present in case of LV or TLV; omit in case of V */ + eeaCap := ?, // @sic R5s100135 sic@ + eiaCap := ?, // @sic R5s100135 sic@ + ueaCap := *, // @sic R5s100135 sic@ + uiaCap := *, // @sic R5s100135 sic@ + srvccCap := *, // @sic R5s100135 sic@ + spare := * // @sic R5s100135 sic@ + }; + + template (present) VoiceDomainPref cr_VoiceDomainPref_Any := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := ?, // 01111110'B + iel := ?, // length + spareBits := ?, + ueUsageSetting := ?, + voiceDomainPrefEUTRA := ? + }; + + template (value) GPRS_Timer2 cs_GPRS_Timer2(IEI8_Type p_IEI, + B3_Type p_Unit, + B5_Type p_Value) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + iei := p_IEI, + iel := '01'O, // length + unit := p_Unit, // Unit + gprsTimerValue := p_Value // Timer value + }; + + template (value) GPRS_Timer3 cs_GprsTimer3_IEI(O1_Type p_IEI, + GprsTimerUnit p_Unit, + B5_Type p_Value) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + iei := p_IEI, + iel := '01'O, + unit := p_Unit, + gprsTimerValue := p_Value + }; + + template (value) GPRS_Timer3 cs_GprsTimer3(GprsTimerUnit p_Unit, + B5_Type p_Value) := cs_GprsTimer3_IEI('5E'O, p_Unit, p_Value); /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS) */ + + template (value) TimeZoneAndTime cs_TimeZoneAndTime (O1_Type p_Year, + O1_Type p_Month, + O1_Type p_Day, + O1_Type p_Hour, + O1_Type p_Minute, + O1_Type p_Second, + O1_Type p_TimeZone):= + { /* @status APPROVED (LTE) */ + iei := '47'O, // @sic R5s110439 sic@ + year := p_Year, + month := p_Month, + day := p_Day, + hour := p_Hour, + minute := p_Minute, + second := p_Second, + timeZone := p_TimeZone + }; + + template (value) TimeZone cs_TimeZone (O1_Type p_TimeZone):= + { /* @status APPROVED (LTE) */ + iei := '46'O, + timeZone := p_TimeZone + }; + + template (value) NetworkName cs_NetworkName (IEI8_Type p_Iei, + charstring p_Name, + Gsm7BitPacking_Type p_Packing := SMS_Packing, // default: GSM default 7 + B1_Type p_AddCI := '0'B) := // default: do not include the CI + { /* @status APPROVED (LTE) */ + iei := p_Iei, + iel := int2oct((lengthof(f_CharPacking_IA5toGsm7Bit(p_Name, p_Packing)) + 1),1), + ext := '1'B, + codingScheme := f_ConvertPackingToCodingScheme (p_Packing), + addCI := p_AddCI, + spareBitCnt := int2bit((lengthof(p_Name) mod 8), 3), // @sic R5s140651 sic@ + text := f_CharPacking_IA5toGsm7Bit(p_Name, p_Packing) + }; + + //---------------------------------------------------------------------------- + /* + * @desc Conversion of the packing type per TS 23.040 into the coding scheme parameter used in the Network Name IE + * @param p_Gsm7BitPacking_Type + * @return B3_Type + * @status APPROVED (LTE) + */ + function f_ConvertPackingToCodingScheme(Gsm7BitPacking_Type p_Gsm7BitPacking_Type) return B3_Type + { + var B3_Type v_CodingScheme := '000'B; + + if (p_Gsm7BitPacking_Type == SMS_Packing) {v_CodingScheme := '000'B } else {FatalError (__FILE__, __LINE__, "Unexpected Packing for conversion to Coding Scheme")}; + //if (p_Gsm7BitPacking_Type == CBS_Packing) {v_CodingScheme := '000'B }; + //if (p_Gsm7BitPacking_Type == USSD_Packing) {v_CodingScheme := '000'B }; + + return v_CodingScheme; + } + + template (value) DaylightSavingTime cs_DaylightSavingTime_tlv (B2_Type p_DaylightSavingTime) := + { /* 24.301 cl. 9.9.3.6; */ + /* @status APPROVED (LTE) */ + iei := '49'O, + iel := '01'O, // @sic R5s120508 sic@ + spare := tsc_Spare6, + val := p_DaylightSavingTime + }; + +} diff --git a/LTE_A_IWD_14wk37/Common/NAS/NAS_CommonTypeDefs.ttcn b/LTE_A_IWD_14wk37/Common/NAS/NAS_CommonTypeDefs.ttcn new file mode 100644 index 0000000..3a6a73b --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/NAS/NAS_CommonTypeDefs.ttcn @@ -0,0 +1,870 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-08-27 12:24:14 +0200 (Tue, 27 Aug 2013) $ +// $Rev: 9441 $ +/******************************************************************************/ + +module NAS_CommonTypeDefs { + /* Module containing type definitions for EPS, UTRAN and/or GERAN */ + +import from CommonDefs all; + +//**************************************************************************** +// Common Type definitions: +//---------------------------------------------------------------------------- + +//**************************************************************************** +//**************************************************************************** + +type O1_Type Octet_Type; +type hexstring HalfOctet_Type length(1); + +type HalfOctet_Type IEI4_Type; /* 4 bit info element identifier for type 1 IEs */ +type Octet_Type IEI8_Type; /* 8 bit info element identifier */ + +type O1_Type Type4Length_Type; +type O2_Type Type6Length_Type; + +type HalfOctet_Type SpareHalfOctet; + +type hexstring NAS_Mcc length(3); //* @desc Type which can be used to represent an MCC (as string of 3 decimal digits). + +type record of hexstring EmergencyNumList; +//**************************************************************************** +// NAS PROTOCOL DEFINITIONS: IEs +//---------------------------------------------------------------------------- +// General Info Elements (24.301 cl. 9) +//---------------------------------------------------------------------------- + +type B4_Type ProtocolDiscriminator; /* 24.301 cl. 9.2 and 24.007 cl. 11.2.3.1.1 */ +type B4_Type SkipIndicator; /* 24.007 cl. 11.2.3.1.2 */ +type B8_Type MessageType; /* 24.301 cl. 9.8 */ + +type B3_Type NAS_AttDetValue_Type; +type B3_Type KeySeq; /* ciphering key sequence + 3G TS 24008 cl. 10.5.1.2 */ +type O3_Type NAS_PlmnId; + +type O4_Type NAS_Tmsi; +type O4_Type NAS_P_Tmsi; + +type O2_Type NAS_Lac; +type O1_Type NAS_Rac; + +type hexstring BcdDigit_Hex length(1); +type bitstring BcdDigit_Bit length(4); + +type B3_Type NAS_IdType; +type B8_Type NAS_CauseValue_Type; + +type B1_Type TmsiStatusValue; + +type enumerated PS_MODE {VOICE_CENTRIC, DATA_CENTRIC}; /* @status @sic R5s120274 sic@ */ +type enumerated CS_PS_MODE {VOICE_CENTRIC, DATA_CENTRIC}; /* @status APPROVED */ +// This is here because it's the best place for it + const NAS_Lac tsc_LAC_Def := '0001'O ; /* Default NAS LAC, the value may need to be updated in CS combined/CS fallback test cases + @status APPROVED + @sic R5s090180 sic@ */ + + +//----------------------------------------------------------------------------- +// Defined in 24.008, but also referenced from 24.301 +//----------------------------------------------------------------------------- + +// ============================================================================= +// Structured Type Definition +// 3G TS 24.008, section 10.5.6.1 +// ----------------------------------------------------------------------------- +type record AccessPointName { /* 24.301 cl. 9.9.4.1 -> 24.008 cl. 10.5.6.1 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel, + octetstring nameValue length(1..100) +}; + +// ============================================================================= +// Structured Type Definition +// 3G TS 24.008, section 10.5.3.14 +// ----------------------------------------------------------------------------- +type record AddUpdateParams { + IEI4_Type iei optional, + B2_Type spare, // @sic R5s120178 Baseline Moving sic@ + B1_Type csmo, // @sic R5s120178 Baseline Moving sic@ + B1_Type csmt +}; + +type record AdditionalUpdateType { /* 24.301 cl. 9.9.3.0B @sic R5s100135 sic@ */ + IEI4_Type iei, // currently only used as TV + B3_Type spare3, + B1_Type addUpdateTypeValue +}; + +// ============================================================================= +// Structured Type Definition +// Ciphering Key Sequence Number +// 3G TS 24.008 cl. 10.5.1.2 +// ----------------------------------------------------------------------------- +type record CiphKeySeqNum { + IEI4_Type iei optional, // '1000'B + B1_Type spare1, + KeySeq keySeq +}; + +// ============================================================================= +// Structured Type Definition +// Priority Level +// 3G TS 24.008 cl. 10.5.6.19 / 24.301 9.9.4.2A +// ----------------------------------------------------------------------------- +type record ConnectivityType { + IEI4_Type iei, + B4_Type connectivityValue +}; + +// ============================================================================= +// Structured Type Definition +// 3G TS 24.008, section 10.5.5.5/ 24.301 cl. 9.9.3.7 +// ----------------------------------------------------------------------------- +type record DetachType { + // IEI is always skipped + B1_Type switchOff, + NAS_AttDetValue_Type typeOfDetach +}; + +// ============================================================================= +// Structured Type Definition +// Device Properties +// 3G TS 24.008 cl. 10.5.7.8 +// ----------------------------------------------------------------------------- +type record DeviceProperties { + IEI4_Type iei, + B3_Type spare, + B1_Type lowPriority +}; + +// ============================================================================= +// Structured Type Definition +// DRX paramter +// 3GPP 24.008 / 10.5.5.6 +// ----------------------------------------------------------------------------- +type record DRXparameter { + IEI8_Type iei optional, // '00100111'B (hex 27) + B8_Type splitPGcycleCode, // Split PG cycle code + B4_Type cnDRXcoef, // CN specific DRX cycle length coefficient + B1_Type splitOnCCCH, // Split on CCCCH + B3_Type nonDRXtimer // non-DRX timer +}; + +// ============================================================================= +// Structured Type Definition +// Emergency Service Category +// 3GPP 24.008 / 10.5.4.33 +// ----------------------------------------------------------------------------- +type record EmergServCat { + B1_Type spare, + B7_Type emergSCValue // Emergency Service Category value +}; + +type record length (1..10) of charstring EmergencyLocalNumberList; +// ============================================================================= +// Structured Type Definition +// Emergency Number +// 3G TS 24.008 cl. 10.5.3.13 +// ----------------------------------------------------------------------------- +type record EmergNum { + Type4Length_Type len, // length + EmergServCat emergServCat, // Emergency Service Category + octetstring digits length(0..10) // BCD numbers +}; + +// ============================================================================= +// Structured Type Definition +// Emergency Number List +// 3G TS 24.008 cl. 10.5.3.13 +// ----------------------------------------------------------------------------- +type record EmergNumList { + IEI8_Type iei, // '00110100'B (34 hex) @sic R5s110420 sic@ + Type4Length_Type iel, // length @sic R5s110420 sic@ + record length (1..10) of EmergNum emergNum // Emergency Number +}; + +// ============================================================================= +// Structured Type Definition +// GPRS timer +// 3GPP 24.008 / 10.5.7.3 +// ----------------------------------------------------------------------------- +type record GPRS_Timer { /* 24.301 cl. 9.9.3.14 -> 24.008 cl. 10.5.7.3 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + GprsTimerUnit unit, + B5_Type timerValue +}; + +type B3_Type GprsTimerUnit; + +// ============================================================================= +// Structured Type Definition +// GPRS timer +// 3GPP 24.008 / 10.5.7.4 +// ----------------------------------------------------------------------------- +type record GPRS_Timer2 { + IEI8_Type iei, // @sic R5s110420 sic@ + Type4Length_Type iel, // length @sic R5s110420 sic@ + GprsTimerUnit unit, // Unit + B5_Type gprsTimerValue // Timer value +}; + +// ============================================================================= +// Structured Type Definition +// GPRS timer +// 3GPP 24.008 / 10.5.7.4a +// ----------------------------------------------------------------------------- +type record GPRS_Timer3 { + IEI8_Type iei, + Type4Length_Type iel, // length + GprsTimerUnit unit, // Unit + B5_Type gprsTimerValue // Timer value +}; + +// ============================================================================= +// Structured Type Definition +// IMEISV Request +// 3GPP 24.008 / 10.5.5.10 +// ----------------------------------------------------------------------------- +type record IMEISV_Request { /* 24.301 cl. 9.9.3.16 -> 24.008 cl. 10.5.5.10 */ + IEI4_Type iei optional, /* present in case of TV; omit in case of V */ + B1_Type spare, + B3_Type requestValue +}; + +// ============================================================================= +// Structured Type Definition +// Location Area Identification Value +// 3G TS 24.008 cl. 10.5.1.3 +// ----------------------------------------------------------------------------- +type record LocAreaId { + IEI8_Type iei optional, + NAS_PlmnId plmn, // MCC + MNC 3 digits each + NAS_Lac lac // LAC +}; + +// ============================================================================= +// Structured Type Definition +// RoutingAreaId +// 3GPP 24.008 / 10.5.5.15 +// ----------------------------------------------------------------------------- +type record RoutingAreaId { /* 24.301 cl. 9.9.3.24 -> 24.008 cl. 10.5.5.15 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + LocAreaId lai, /* MCC + MNC + LAC */ + O1_Type rac /* RAC */ +}; + +// ============================================================================= +// Structured Type Definition +// 24.007, clause 10.5.6.9 +// ----------------------------------------------------------------------------- +type record LLC_SAPI { /* 24.301 cl. 9.9.4.4 -> 24.008 cl. 10.5.6.9 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + B4_Type spare, + B4_Type llcSapiValue +}; + +// ============================================================================= +// Structured Type Definition +// Mobile Identity +// 3G TS 24.008 cl. 10.5.1.4 +// Maximum number of digits is 16 (IMEISV). Filler may be used. +// ----------------------------------------------------------------------------- +type record MobileIdentity { + IEI8_Type iei optional, // '00100011'B + Type4Length_Type iel, + BcdDigit_Bit idDigit1, // 1st identitity digit + B1_Type oddEvenInd, // Odd/even indicator + NAS_IdType typeOfId, // Type of identity + octetstring otherDigits length(0..10) // Other identity digits (10 octets rather than 8 to cover Guti as well) +}; + +// ============================================================================= +// Structured Type Definition +// Mobile Station Classmark 2 +// 3G TS 24.008 cl. 10.5.1.6 +// ----------------------------------------------------------------------------- +type record MS_Clsmk2 { + IEI8_Type iei optional, + Type4Length_Type iel, // @sic R5s110420 sic@ + B1_Type spare1_1, // Spare bit + B2_Type revLvl, // Revision Level + B1_Type eSIND, // Early Sending Indication + B1_Type a5_1, // Algorithm A5/1 Support + B3_Type rFPwrCap, // RF Power Capability + B1_Type spare1_2, // Spare bit + B1_Type pSCap, // Pseudo Synchronisation Capability + B2_Type sSSI, // SS Screen Indicator + B1_Type sMCap, // Short Message Capability + B1_Type vBS, // VBS Capability + B1_Type vGCS, // VGCS Capability + B1_Type fC, // Frequency Capability + B1_Type cM3, // Classmark 3 Indicator + B1_Type spare1_3, // Spare bit + B1_Type lCSVA, // LCS VA Capability + B1_Type uCS2, // UCS2 Encoding Support + B1_Type soLSA, // SoLSA Support + B1_Type cMSP, // CM Service Prompt Support + B1_Type a5_3, // Algorithm A5/3 Support + B1_Type a5_2 // Algorithm A5/2 Support +}; + +// ============================================================================= +// Structured Type Definition +// Mobile station classmark 3 +// 3GPP TS 24.008 clause 10.5.1.7 +// The information element has 34 octets maximum length +// ----------------------------------------------------------------------------- +type record MS_Clsmk3 { + IEI8_Type iei optional, // 0x20 + Type4Length_Type iel optional, // OCTETSTRING [1] + B1_Type spareBit, // spare bit @sic R5s120178 Baseline Moving sic@ + B3_Type multibandSupported, // @sic R5s120178 Baseline Moving sic@ + B1_Type a5_7, // a5/7 algorithm supported @sic R5s120178 Baseline Moving sic@ + B1_Type a5_6, // a5/6 algorithm supported @sic R5s120178 Baseline Moving sic@ + B1_Type a5_5, // a5/5 algorithm supported @sic R5s120178 Baseline Moving sic@ + B1_Type a5_4, // a5/4 algorithm supported @sic R5s120178 Baseline Moving sic@ + B4_Type associatedRadioCapabilty2 optional, // present if multibandSupported = 101 or 110 + B4_Type spareBits1 optional, // present if multibandSupported = 001 or 010 or 100 + B4_Type associatedRadioCapabilty1 optional, // present if multibandSupported = 001 or 010 or 100 or 101 or 110 + B1_Type maskBit1 optional, + B3_Type rGSM_RadioCapability optional, // R-GSM band associated radio capability not present if maskBit1 = 0 + B1_Type maskBit2 optional, + B5_Type multiSlotClass optional, // multi slot class not present if multiSlotClass = 0 + B1_Type uCS2Treatment optional, + B1_Type extMeasurementCapability optional, // extended measurement capability + B1_Type maskBit3 optional, + MS_MeasCapability msMeasurementCapability optional, // MS measurement capability + // not present if maskBit3 = 0 + B1_Type maskBit4 optional, + B5_Type msPositioningMethod optional, // MS positioning method capability + // not present if maskBit4 = 0 + B1_Type maskBit5 optional, + B5_Type eDGE_MultiSlot optional, // EDGE multi slot capability + // not present if maskB5_Type = 0 + B1_Type maskBit6 optional, + EDGE_Struct psk8_Struct optional, // 8PSK struct + // not present if maskB6_Type = 0 + B1_Type maskBit7 optional, + B2_Type gSM400BandsSupported optional, // not present if maskBIt7 = 0 + B4_Type gSM400AssociatedRadioCapability optional, // not present if gSM400BandsSupported = 00 or maskB7_Type = 0 + B1_Type maskBit8 optional, + B4_Type gSM850AssociatedRadiioCapability optional, // not present if maskBIt8 = 0 + B1_Type maskBit9 optional, + B4_Type pCS1900AssociatedRadiioCapability optional, // not present if maskBIt9 = 0 + B1_Type uMTS_FDD_RAT_Capability optional, + B1_Type uMTS384TDD_RAT_Capability optional, + B1_Type cDMA2000_RAT_Capability optional, + B1_Type maskBit10 optional, + B2_Type dTM_GPRS_MultiSlotSubclass optional, // not present if maskBit10 = 0 + B1_Type singleSlotDTM optional, // not present if maskBit10 = 0 + B1_Type maskBit11 optional, // not present if maskBit10 = 0 + B2_Type dTM_EGPRS_MultiSlorSubclass optional, // not present if maskBit10 = 0 or maskBit11 = 0 + B1_Type maskBit12 optional, + B4_Type singleBandSupport optional, // not present if maskBit12 = 0 + B1_Type maskBit13 optional, + B4_Type gSM700AssociatedRadioCapability optional, // not present if maskBit13 = 0 + B1_Type uMTS128TDD_RAT_Capability optional, + B1_Type gERANFeatPack1 optional, + B1_Type mask14 optional, + B2_Type extDTM_GPRS_MultiSlotSubclass optional, // not present if maskBit14 = 0 + B2_Type etxDTM_EGPRS_MultiSlotSubclass optional, // not present if maskBit14 = 0 + B1_Type mask15 optional, + B2_Type highMultislotCap optional, // not present if mask15 = 0 + B1_Type mask16 optional, + B4_Type gERANIuModeLength optional, // not present if maskBit16 = 0 + B1_Type gERANFLOIuCap optional, + bitstring gERANIuModeSpareBits length(0..14) optional, // not present if maskBit16 = 0 + B1_Type gERANFeatPack2 optional, + B2_Type gMSKMultislotPowerProfile optional, + B2_Type pSKMultislotPowerProfile optional, + B1_Type mask17 optional, // rel 6 features + B2_Type tGSM400BandsSupported optional, // not present if maskBit17 = 0 + B4_Type tGSM400AssocRadioCap optional, // not present if maskBit17 = 0 + B1_Type spare optional, // Set to 0 @sic R5s110176 Baseline Moving sic@ + B2_Type dlAdvancedRxPerf optional, + B1_Type dTMEhancCap optional, + B1_Type mask19 optional, + B3_Type dTMGPRSHighMultislotClass optional, // not present if maskBit19 = 0 + B1_Type offsetReq optional, // not present if maskBit19 = 0 + B1_Type mask20 optional, // not present if maskBit19 = 0 + B3_Type dTMEGPRSHighMultislotClass optional, // not present if maskBit19 and maskBit20 = 0 + B1_Type rptdACCHCap optional, + B1_Type mask21 optional, + B4_Type gsm710AssocRadioCap optional, // not present if maskBit21 = 0 + B1_Type mask22 optional, + B4_Type tgsm810AssocRadioCap optional, // not present if maskBit22 = 0 + B1_Type cipheringModeSettingCap optional, + B1_Type addPositionCap optional, + B1_Type eutraFDDSupport optional, // rel 8 features + B1_Type eutraTDDSupport optional, + B1_Type eutraMeasAndReporting optional, // @sic R5s100135 sic@ + B1_Type priorityBasedReselection optional, // @sic R5s110176 Baseline Moving sic@ + B1_Type utraCSGCellsReporting optional, // @sic R5s110176 Baseline Moving sic@ + B2_Type vamosLevel optional, // @sic R5s110176 Baseline Moving sic@ + B2_Type tighterCap optional, // @sic R5s120178 Baseline Moving sic@ + B1_Type selectCipheringDLSACCH optional, // @sic R5s120178 Baseline Moving sic@ + B2_Type csPS_SRVCC_G2U optional, // @sic R5s130195 Baseline Moving sic@ + B2_Type csPS_SRVCC_G2E optional, // @sic R5s130195 Baseline Moving sic@ + bitstring spareBits2 optional +}; + +// ============================================================================= +// Structured Type Definition +// Reference : 3GPP TS 24.008 clause 10.5.1.7 +// ----------------------------------------------------------------------------- +type record EDGE_Struct { + B1_Type modulationCapability, + B1_Type pwrMask1, + B2_Type eDGE_RF_PowerCapability1 optional, // not present if pwrMask1 = 0 + B1_Type pwrMask2, + B2_Type eDGE_RF_PowerCapability2 optional // not present if pwrMask2 = 0 +}; + +// ============================================================================= +// Structured Type Definition +// Reference : 3GPP TS 24.008 clause 10.5.1.7 +// ----------------------------------------------------------------------------- +type record MS_MeasCapability { + B4_Type sMS_VALUE, + B4_Type sM_VALUE +}; + +// ============================================================================= +// Structured Type Definition +// MS network capability +// 3GPP 24.008 / 10.5.5.12 +// ----------------------------------------------------------------------------- +type record MS_NetworkCap { /* 24.301 cl. 9.9.3.18 -> 24.008 cl. 10.5.5.12 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + Type4Length_Type iel, // @sic R5s110420 sic@ + B1_Type gea1, + B1_Type smCapDedicated, + B1_Type smCapGPRS, + B1_Type ucs2, + B2_Type ssScreeningIndicator, + B1_Type soLSACap, + B1_Type revLevelIndicator, + B1_Type pfcFeatureMode, + B1_Type gea2, + B1_Type gea3, + B1_Type gea4, + B1_Type gea5, + B1_Type gea6, + B1_Type gea7, + B1_Type lcsVACap optional, // @sic R5s130477 not present for r99 sic@ + B1_Type psHOtoUTRAN_IuModeCap optional, // @sic R5s130477 not present for r99 sic@ + B1_Type psHOtoEUTRAN_S1ModeCap optional, // @sic R5s130477 not present for r99 sic@ + B1_Type emmCombinedCap optional, // @sic R5s110176 Baseline Moving, R5s130477 not present for r99 sic@ + B1_Type isrSupport optional, // @sic R5s130477 not present for r99 sic@ + B1_Type srvccToGERAN_UTRANCap optional, // @sic R5s130477 not present for r99 sic@ + B1_Type epcCap optional, // @sic R5s130477 not present for r99 sic@ + B1_Type nfCap optional, // @sic R5s110176 Baseline Moving, not present for Rel-8 R5s110242 sic@ + B1_Type gERANNtwkShareCap optional, // @sic R5s130195 Baseline Moving, not present for Rel-8 sic@ + bitstring spareBits length (0..43) optional +}; + +// ============================================================================= +// Structured Type Definition +// Additional Network Feature Support +// 3G TS 24.008 cl. 10.5.5.31 +// ----------------------------------------------------------------------------- +type record NwkResourceId { + IEI8_Type iei, // + Type4Length_Type iel, // + B1_Type nriContainerValue, + B7_Type spareBits +}; + +// ============================================================================= +// Structured Type Definition +// PacketFlowIdentifier +// 24.008, section 10.5.6.11 +// ----------------------------------------------------------------------------- +type record PacketFlowIdentifier { /* 24.301 cl. 9.9.4.5 -> 24.008 cl. 10.5.6.11 */ + IEI8_Type iei, // @sic R5s110420 sic@ + Type4Length_Type iel, // @sic R5s110420 sic@ + B1_Type spare, + B7_Type idValue +}; + +// ============================================================================= +// Structured Type Definition +// PLMN list +// 3G TS 24.008 cl. 10.5.1.13 +// ----------------------------------------------------------------------------- +type record PLMN_List { /* 24.301 cl. 9.9.2.4 -> 24.008 cl. 10.5.1.13 */ + IEI8_Type iei, // @sic R5s110420 sic@ + Type4Length_Type iel, // @sic R5s110420 sic@ + record length(1..15) of + NAS_PlmnId plmnList /* list of PLMNs */ +}; + +// ============================================================================= +// Structured Type Definition +// MS network feature support +// 3GPP 24.008 / 10.5.5.15 +// ----------------------------------------------------------------------------- +type record MS_NetworkFeatureSupport { /* 24.301 cl. 9.9.2.0A -> 24.008 cl. 10.5.5.15 */ + IEI4_Type iei, + B3_Type spare, + B1_Type extdPeriodicTimers +}; + +type PLMN_List.plmnList NAS_PlmnIdList_Type; + +// ============================================================================= +// Structured Type Definition +// ProtocolConfigOptions +// 3G TS 24.008 cl. 10.5.6.3 +// ----------------------------------------------------------------------------- +type record ProtocolConfigOptions { /* 24.301 cl. 9.9.4.8 -> 24.008 cl. 10.5.6.3 */ + IEI8_Type iei, // @sic R5s110420 sic@ + Type4Length_Type iel, + B1_Type ext, + B4_Type spare, + B3_Type configProtocol, + record length (0..83) of + ProtocolContainer pco optional +}; + +type record ProtocolContainer { + O2_Type protocolID, /* id is always 2 octets */ + Type4Length_Type protocolLength, + octetstring content optional +}; + +type ProtocolConfigOptions.pco NAS_ProtocolConfigOptions_Type; + +// ============================================================================= +// Structured Type Definition +// P-TMSI signature +// 3GPP 24.008 / 10.5.5.8 +// ----------------------------------------------------------------------------- +type record PTMSI_Signature { /* 24.301 cl. 9.9.3.23 -> 24.008 cl. 10.5.5.8 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + Type4Length_Type iel optional, // only present in 24.008 version of DETACH REQUEST message + O3_Type signatureValue +}; + +// ============================================================================= +// Structured Type Definition +// 24.008, clause 10.5.6.5 +// ----------------------------------------------------------------------------- +type record QualityOfService { /* 24.301 cl. 9.9.4.9 -> 24.008 cl. 10.5.6.5 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel, + B2_Type spare1, + B3_Type delayClass, + B3_Type relabilityClass, + B4_Type peakThroughput, + B1_Type spare2, + B3_Type precedenceClass, + B3_Type spare3, + B5_Type meanThroughput, + B3_Type trafficClass, + B2_Type deliveryOrder, + B3_Type deliveryErrorSDU, + B8_Type maxSduSize, + B8_Type maxBitRateUL, + B8_Type maxBitRateDL, + B4_Type residualBER, + B4_Type sduErrorRatio, + B6_Type transferDelay, + B2_Type trafficHandlingPrio, + B8_Type guaranteedBitRateUL, + B8_Type guaranteedBitRateDL, + B3_Type spare4, + B1_Type signallingInd, + B4_Type sourceStatisticsDescriptor, + B8_Type maxBitRateDL_Ext optional, + B8_Type guaranteedBitRateDL_Ext optional, + B8_Type maxBitRateUL_Ext optional, + B8_Type guaranteedBitRateUL_Ext optional, + B8_Type maxBitRateDL_Ext2 optional, // @sic R5s1300195 Baseline Moving sic@ + B8_Type guaranteedBitRateDL_Ext2 optional, // @sic R5s1300195 Baseline Moving sic@ + B8_Type maxBitRateUL_Ext2 optional, // @sic R5s1300195 Baseline Moving sic@ + B8_Type guaranteedBitRateUL_Ext2 optional // @sic R5s1300195 Baseline Moving sic@ +}; + +// ============================================================================= +// Structured Type Definition +// Radio priority +// 3GPP 24.008 / 10.5.7.2 +// ----------------------------------------------------------------------------- +type record RadioPriority { /* 24.301 cl. 9.9.4.10 -> 24.008 cl. 10.5.7.2 */ + IEI4_Type iei optional, /* present in case of TV; omit in case of V */ + B1_Type spare, + B3_Type levelValue +}; + +// ============================================================================= +// Structured Type Definition +// Codec +// 3G TS 24.008 cl. 10.5.4.32 +// ----------------------------------------------------------------------------- +type record Codec { + O1_Type sysId, // system identifcation + Type4Length_Type len, // length + B8_Type bitMap1to8, // codec bitmap bits 1-8 + B8_Type bitMap9to16 optional // codec bitmap bits 9-16 +}; + +// ============================================================================= +// Structured Type Definition +// Supported Codec List +// 3G TS 24.008 cl. 10.5.4.32 +// ----------------------------------------------------------------------------- +type record CodecList { + IEI8_Type iei, // '01000000'B (40 hex) @sic R5s110420 sic@ + Type4Length_Type iel, // length @sic R5s110420 sic@ + record of Codec codec// list of codecs +}; + +// ============================================================================= +// Structured Type Definition +// TMSI status +// 3GPP 24.008 cl. 10.5.6.17 +// ----------------------------------------------------------------------------- +type record Request_Type { /* 24.301 cl. 9.9.4.11 */ + // IEI is always skipped + B1_Type spare, + B3_Type typeValue +}; + +// ============================================================================= +// Structured Type Definition +// TMSI status +// 3GPP 24.008 cl. 10.5.5.4 +// ----------------------------------------------------------------------------- +type record TMSI_Status { + IEI4_Type iei optional, + B3_Type spare3, + TmsiStatusValue flag // Flag +}; + +// ============================================================================= +// Structured Type Definition +// TrafficFlowTemplate +// 3GPP 24.008 / 10.5.6.12 +// ----------------------------------------------------------------------------- +type record TrafficFlowTemplate { /* 24.301 cl. 9.9.4.13 -> 24.008 cl. 10.5.6.12 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel, + B3_Type tftOperationCode, + B1_Type eBit, + B4_Type noOfPktFilter, + record of PacketFilter packetFilterList optional, + record of TftParameter parameterList optional +}; + +type record TftParameter { + IEI8_Type iei, + Type4Length_Type iel, + octetstring contents +}; + +type record PacketFilter { + B2_Type spare, // @sic R5s130195 Baseline Moving sic@ + B2_Type direction, // @sic R5s130195 Baseline Moving sic@ + IEI4_Type iei, // @sic R5s130195 Baseline Moving sic@ + B8_Type precedence optional, + Type4Length_Type iel optional, + PacketFilterContents contents optional +}; + +type record of PacketFilterComponent PacketFilterContents; + +type record PacketFilterComponent { + O1_Type id, + PacketFilterComponentValue packetFilterComponentValue +}; + +type union PacketFilterComponentValue { + O8_Type ipv4RemoteAddress, + O32_Type ipv6RemoteAddress, + O1_Type protocolIdNextHeader, + O2_Type singleLocalPort, + O4_Type localPortRange, + O2_Type singleRemotePort, + O4_Type remotePortRange, + O4_Type securityParameterIndex, + O2_Type typeOfServiceTrafficClass, + O3_Type flowLabel +}; + +type record UE_NetworkCap { // 24.301 cl. 9.9.3.34 + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + O1_Type eeaCap, // @sic R5s100135 sic@ + O1_Type eiaCap, // @sic R5s100135 sic@ + O1_Type ueaCap optional, // @sic R5s100135 sic@ + O1_Type uiaCap optional, // @sic R5s100135 sic@ + O1_Type srvccCap optional, // @sic R5s100135 sic@ + octetstring spare optional // @sic R5s100135 sic@ +}; + +// ============================================================================= +// Structured Type Definition +// Authentication Parameter AUTN +// 3G TS 24.008 cl. 10.5.3.1.1 +// ----------------------------------------------------------------------------- +type record AUTN { /* 24.301 cl. 9.9.3.2 -> 24.008 cl. 10.5.3.1.1 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel, // @sic R5s110420 sic@ + B128_Type aUTN /* (as for UMTS) */ +}; + +// ============================================================================= +// Structured Type Definition +// Authentication Failure Parameter (TLV) +// 3G TS 24.008 cl. 10.5.3.2.2 +// ----------------------------------------------------------------------------- +type record AuthenticationFailureParameter { + IEI8_Type iei, // '00100010'B for MM (22 hex) + // '00110000'B for GMM (30 hex) + Type4Length_Type iel, // M 1 octet + B112_Type auts // AUTS, 14 octets +}; + +// ============================================================================= +// Structured Type Definition +// Authentication Parameter RAND (TV, 17 octets) +// 3G TS 24.008 cl. 10.5.3.1 +// ----------------------------------------------------------------------------- +type record RAND { + IEI8_Type iei optional, // '00100001'B (21 hex) + B128_Type randValue // Authentication Parameter RAND value +}; + +type record DaylightSavingTime { /* 24.301 cl. 9.9.3.5 -> 24.008 cl. 10.5.3.12 */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel optional, /* present in case of LV or TLV; omit in case of V */ + B6_Type spare, + B2_Type val +}; + +type record NetworkName { /* 24.301 cl. 9.9.3.21 -> 24.008 cl. 10.5.3.5a */ + IEI8_Type iei optional, /* present in case of TLV; omit in case of LV */ + Type4Length_Type iel, + B1_Type ext, + B3_Type codingScheme, + B1_Type addCI, + B3_Type spareBitCnt, + octetstring text /* type is FFS */ +}; + +type record TimeZone { /* 24.301 cl. 9.9.3.26 -> 24.008 cl. 10.5.3.8 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + O1_Type timeZone +}; + +type record TimeZoneAndTime { /* 24.301 cl. 9.9.3.27 -> 24.008 cl. 10.5.3.9 */ + IEI8_Type iei optional, /* present in case of TV; omit in case of V */ + O1_Type year, + O1_Type month, + O1_Type day, + O1_Type hour, + O1_Type minute, + O1_Type second, + O1_Type timeZone +}; + +// ============================================================================= +// Structured Type Definition +// 3G TS 24.008 cl. 10.5.5.28 +// @sic R5s110176 Baseline Moving sic@ +// ----------------------------------------------------------------------------- +type record VoiceDomainPref { + IEI8_Type iei optional, // 01111110'B + Type4Length_Type iel optional, // length + B5_Type spareBits, + B1_Type ueUsageSetting, + B2_Type voiceDomainPrefEUTRA // @sic R5s110233 sic@ +}; + +type record IdentityType { /* 24.301 cl. 9.9.3.15 -> 24.008 cl. 10.5.3.4 */ + // IEI is always skipped + B1_Type spare, + NAS_IdType typeOfId +}; + + // ============================================================================= + // Structured Type Definition + // REGISTER + // ue->n or n->ue, 3GPPP TS 24.080, 2.4 + // ----------------------------------------------------------------------------- + type record REGISTER { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator sS_ProtocolDiscriminator, // "1011" Protocol discriminator for supplementary services BITSTRING [4] + MessageType msgType, // message type BITSTRING [8] + FacilityIE facility_Str, // M, BER enconded ASN.1 object + SS_VersionInd sS_VersionInd optional // O for ue->n, N/A for n->ue + }; + + // ============================================================================= + // Structured Type Definition + // FACILITY + // ue->n or n->ue, 3GPPP TS 24.080, 2.3 and 24.008, 10.4 + // ----------------------------------------------------------------------------- + type record FACILITY { + TI ti, // transaction identifier BITSTRING [4] + ProtocolDiscriminator sS_ProtocolDiscriminator, // "1011" Protocol discriminator for supplementary services BITSTRING [4] + MessageType msgType, // message type BITSTRING [8], for n->ue "00111010", for ue->n "xx111010" (see 24.007) + FacilityIE facility_Str // M, BER enconded ASN.1 object + }; + +// ============================================================================= +// Structured Type Definition +// Facility Information Element +// 3GPPP TS 24.080, 3.6 / 24.008, 10.5.4.15 +// ----------------------------------------------------------------------------- +type record FacilityIE { + IEI8_Type iei optional, // Facility IE identifier + Type4Length_Type iel, // length of Facility contents + octetstring components // ASN.1 definitions BER encoded +}; + +// ============================================================================= +// Structured Type Definition +// Transaction identifier +// 3G TS 24.007 cl. 11.2.3.1.3 +// ----------------------------------------------------------------------------- +type record TI { + B1_Type tiFlag, // Flag + B3_Type tiVal // TIO +}; + +// ============================================================================= +// Structured Type Definition +// SS version indicator +// 3G TS 24.008 cl. 10.5.4.24 +// 1. Usually this IE has only one octet of content. +// Exact definition see TS 24.080 +// ----------------------------------------------------------------------------- +type record SS_VersionInd { + IEI8_Type iei, // '01111111'B @sic R5s110420 sic@ + Type4Length_Type iel, // length @sic R5s110420 sic@ + O1_Type sS_VersionInfo // ss version information +}; + + // ============================================================================= + // Structured Type Definition + // RESETUEPOSITIONINGSTOREDINFORMATION + // n->ue, 3GPPP TS 34.109, 6.10/36.509 6.9 + // ----------------------------------------------------------------------------- + type record RESETUEPOSITIONINGSTOREDINFORMATION { + SkipIndicator skipIndicator, // "0000" skip indicator BITSTRING [4] + ProtocolDiscriminator protocolDiscriminator, // M, "1111" Protocol discriminator for test procedure messages BITSTRING [4] + MessageType msgType, // M, message type BITSTRING [8] + B8_Type uePositioningTech // M, BITSTRING [8] + }; + +} with { encode "NAS Types" } diff --git a/LTE_A_IWD_14wk37/Common/NasEmulation/NasEmu.ttcn b/LTE_A_IWD_14wk37/Common/NasEmulation/NasEmu.ttcn new file mode 100644 index 0000000..e93010d --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/NasEmulation/NasEmu.ttcn @@ -0,0 +1,813 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-10-23 11:47:20 +0200 (Wed, 23 Oct 2013) $ +// $Rev: 9858 $ +/******************************************************************************/ + +module NasEmu { + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from NAS_CommonTypeDefs all; + import from EPS_NAS_TypeDefs all; + import from EPS_NAS_MsgContainers all; + import from EPS_NAS_Constants all; + import from EUTRA_ASP_SrbDefs all; + import from EUTRA_ASP_NasCtrl all; + import from NasEmu_Component all; + import from NasEmu_AspTypes all; + import from NasEmu_Templates all; + import from EUTRA_SecurityDefinitionsAndExternalFunctions all; + + //**************************************************************************** + // NAS emulation: Local definitions + //---------------------------------------------------------------------------- + + const boolean tsc_NasEmu_TerminateOnError := true; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + + // local type definitions: + type union NasEmu_DecodedNasPduUL_Type { /* Return type for f_NasEmu_DecodeMsg + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + NAS_UL_Message_Type Msg, + Null_Type Invalid + }; + + type record NasEmu_DecodingInfo_Type { /* Return type for f_DecipherAndDecodeNasPdu + @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + NAS_MSG_Indication_Type NasIndication optional, // omit when octetstring cannot be decoded + boolean IntegrityError + }; + + type union NasEmu_SN_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + integer Long, // sequence number as usual (1 octet) + integer Short // short sequence number as used in SERVICE REQUEST (5 bits) + }; + + // local templates: + template (value) NasEmu_DecodingInfo_Type cs_DecodingInfo_Init := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + NasIndication := omit, + IntegrityError := false + }; + + template (value) IndicationStatus_Type cs_IndicationStatus_NasIntegrityError := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + Error := { + Integrity := { + Nas := true, + Pdcp := false + }, + System := 0 + } + }; + + template (value) NAS_MSG_Indication_Type cs_NAS_MSG_Indication(SecurityHeaderType p_NAS_SecurityStatus, + NasCount_Type p_NasCount, + NAS_UL_Message_Type p_NAS_UL_Message) := + { /* local type templates (uses f_NasEmu_DecodePiggybacked) */ + /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + SecurityProtection:= { + Status := p_NAS_SecurityStatus, + NasCount := p_NasCount + }, + Pdu := { + Msg := p_NAS_UL_Message, + PiggybackedPduList := f_NasEmu_DecodePiggybacked(p_NAS_UL_Message) + } + }; + + template (value) NasSecurity_Type cs_NasSecurity_Init := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + Integrity := { + Algorithm := '000'B, + K_NAS := int2bit(0, 128) + }, + Ciphering := { + Algorithm := '000'B, + K_NAS := int2bit(0, 128) + }, + NasCount := { + UL := f_NasCountInit(), + DL := f_NasCountInit() + }, + BearerId := '00000'B, /* fix value acc. 33.401 cl. 8.1 + @sic R5-101050: BearerId changed to 5 bits sic@ */ + SecurityStarted := false + }; + + //**************************************************************************** + // NAS emulation: Error Handling + //---------------------------------------------------------------------------- + /* + * @desc wrapper to allow controlled termination of the NAS emu + * @param p_FileName + * @param p_LineNo + * @param p_Msg + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_NasEmulationError(charstring p_FileName, + LineNo_Type p_LineNo, + charstring p_Msg) + { + var boolean v_TerminateOnError := tsc_NasEmu_TerminateOnError; + + if (v_TerminateOnError) { + f_SetVerdict(inconc, p_FileName, p_LineNo, p_Msg); + self.kill; + } else { + f_ErrorLog(p_FileName, p_LineNo, p_Msg); + } + }; + //**************************************************************************** + // NAS emulation: Encoding/Decoding + //---------------------------------------------------------------------------- + /* + * @desc wrapper function for encvalue + * @param p_NasMessage + * @return bitstring + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_NasEmu_Encvalue(template (value) NAS_DL_Message_Type p_NasMessage) return bitstring + { + return encvalue(p_NasMessage); + }; + + /* + * @desc wrapper function for decvalue + * @param p_EncodedNasMessage (by reference) + * @param p_NAS_UL_Message (by reference) + * @return integer + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_NasEmu_Decvalue(inout bitstring p_EncodedNasMessage, + out NAS_UL_Message_Type p_NAS_UL_Message) return integer + { + return decvalue(p_EncodedNasMessage, p_NAS_UL_Message); + }; + //---------------------------------------------------------------------------- + /* + * @desc return a the decoded NAS PDU (v_DecodedNasPduUL.Msg) or v_DecodedNasPduUL.Invalid + * @param p_EncodedMsg + * @return NasEmu_DecodedNasPduUL_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_NasEmu_DecodeMsg(octetstring p_EncodedMsg) return NasEmu_DecodedNasPduUL_Type + { + var bitstring v_NasPduBitstring; + var NAS_UL_Message_Type v_NAS_UL_Message; + var NasEmu_DecodedNasPduUL_Type v_DecodedNasPduUL; + + v_NasPduBitstring := oct2bit(p_EncodedMsg); + if (f_NasEmu_Decvalue(v_NasPduBitstring, v_NAS_UL_Message) != 0) { /* v_NasPduBitstring needed as a variable since being 'inout' in decvalue + v_NAS_UL_Message is out parameter i.e. needs not to be initialised */ + f_NasEmulationError(__FILE__, __LINE__, "NAS message cannot be decoded"); + v_DecodedNasPduUL.Invalid := true; + } else { + v_DecodedNasPduUL.Msg := v_NAS_UL_Message; + } + return v_DecodedNasPduUL; + } + + /* + * @desc check whether NAS message contains piggybacked (ESM) message and deocde it + * Note: function is called recursively + * @param p_NAS_UL_Message + * @return template (omit) NAS_UL_PduList_Type + * list of decoded piggybacked NAS messges (in general just one message) + * omit if given NAS message does not contain a piggybacked message + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_NasEmu_DecodePiggybacked(NAS_UL_Message_Type p_NAS_UL_Message) return template (omit) NAS_UL_PduList_Type + { + var template (omit) NAS_UL_PduList_Type v_NAS_UL_PduList := omit; + var template (omit) NAS_UL_Pdu_Type v_NAS_UL_Pdu := omit; + var octetstring v_PiggybackedOctetString := ''O; + var NasEmu_DecodedNasPduUL_Type v_DecodedNasPduUL; + + if (ischosen(p_NAS_UL_Message.ul_NAS_TRANSPORT)) { + // v_PiggybackedOctetString := p_NAS_UL_Message.ul_NAS_TRANSPORT.nasMessage.smsMessage; + // decoding of smsMessage is not supported (i.e. the test case needs to deal with an octetstring) + + } else if (ischosen(p_NAS_UL_Message.aTTACH_COMPLETE)) { + v_PiggybackedOctetString := p_NAS_UL_Message.aTTACH_COMPLETE.esmMessage.esmPdu; + + } else if (ischosen(p_NAS_UL_Message.aTTACH_REQUEST)) { + v_PiggybackedOctetString := p_NAS_UL_Message.aTTACH_REQUEST.esmMessage.esmPdu; + + } else { + // NAS message does not contain piggybacked NAS message + } + + if (lengthof(v_PiggybackedOctetString) > 0) { + + v_DecodedNasPduUL := f_NasEmu_DecodeMsg(v_PiggybackedOctetString); + if (ischosen(v_DecodedNasPduUL.Invalid)) { + // do nothing i.e. keep v_NAS_UL_Pdu as omit + } else { + v_NAS_UL_Pdu.Msg := v_DecodedNasPduUL.Msg; + // recursive call: check whether piggybacked message contains further piggybacked messages + v_NAS_UL_Pdu.PiggybackedPduList := f_NasEmu_DecodePiggybacked(v_DecodedNasPduUL.Msg); + } + v_NAS_UL_PduList[0] := v_NAS_UL_Pdu; // Note: acc. to 24.301 V8.0.0 cl. 9.9.3.15 there is only one PDU piggybacked + } + return v_NAS_UL_PduList; + } + + //---------------------------------------------------------------------------- + /* + * @desc encode piggybacked (ESM) message and add it to the NAS PDU + * Note: if there is a piggybacked ESM message the whole IE of the EMM ie replaced (i.e. not only the octetstring) + * @param p_NAS_DL_Pdu + * @return octetstring + * encoded NAS message + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_NasEmu_EncodePiggybacked(NAS_DL_Pdu_Type p_NAS_DL_Pdu) return octetstring + { + const IEI8_Type const_EsmMsgIEI := '78'O; // IEI for EsmMessage contained in AttachReject + var template (value) NAS_DL_Message_Type v_NAS_DL_Message := p_NAS_DL_Pdu.Msg; + var NAS_DL_PduList_Type v_PiggybackedPduList; + var NAS_DL_Pdu_Type v_PiggybackedPDU; + var integer v_NoOfPiggybacked; + var octetstring v_EncodedPiggybackedMsg; + + if (ispresent(p_NAS_DL_Pdu.PiggybackedPduList)) { + v_PiggybackedPduList := p_NAS_DL_Pdu.PiggybackedPduList; + v_NoOfPiggybacked := lengthof(v_PiggybackedPduList); + } else { + v_NoOfPiggybacked := 0; + } + + if (v_NoOfPiggybacked > 0) { + v_PiggybackedPDU := v_PiggybackedPduList[0]; + v_EncodedPiggybackedMsg := bit2oct(f_NasEmu_Encvalue(v_PiggybackedPDU.Msg)); + + if (v_NoOfPiggybacked > 1) { + f_NasEmulationError(__FILE__, __LINE__, "number of piggybacked PDUs is > 1 but acc. to 24.301 V8.0.0 there is only one message being piggy-backed"); + /* only the first piggybacked PDU will be considered */ + } + if (ispresent(v_PiggybackedPDU.PiggybackedPduList)) { + f_NasEmulationError(__FILE__, __LINE__, "Acc. to 24.301 V8.0.0 there is just one level of piggy-backing"); + /* piggybacking for the piggybacked PDU is ignored */ + } + + if (ischosen(v_NAS_DL_Message.aTTACH_ACCEPT)) { + v_NAS_DL_Message.aTTACH_ACCEPT.esmMessage := cs_ESM_MessageContainer(omit, v_EncodedPiggybackedMsg); + + } else if (ischosen(v_NAS_DL_Message.aTTACH_REJECT)) { + v_NAS_DL_Message.aTTACH_REJECT.esmMessage := cs_ESM_MessageContainer(const_EsmMsgIEI, v_EncodedPiggybackedMsg); + + } else if (ischosen(v_NAS_DL_Message.dl_NAS_TRANSPORT)) { + f_NasEmulationError(__FILE__, __LINE__, "DL_NAS_TRANSPORT: encoding of SMS PDUs is not supported by the NAS emulator"); + // v_NAS_DL_Message.dl_NAS_TRANSPORT.nasMessage.smsMessage := ...; + + } else { + f_NasEmulationError(__FILE__, __LINE__, "NAS message can not carry piggy-backed NAS PDU"); + /* piggy backed messages is ignored */ + } + } + return bit2oct(f_NasEmu_Encvalue(v_NAS_DL_Message)); + } + + //**************************************************************************** + // NAS emulation: auxiliary functions + //---------------------------------------------------------------------------- + /* + * @desc get the normal (long) SN from the COUNT + * @param p_Count + * @return NAS_SequenceNumber .. sequence number + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_NasSecurity_ExtractSNfromCOUNT(NasCount_Type p_Count) return NAS_SequenceNumber + { + return int2oct(oct2int(p_Count) mod 256, 1); + }; + //---------------------------------------------------------------------------- + /* + * @desc estimate COUNT (in UL) based on SN of received PDU and previous COUNT + * Note: at the beginning COUNT is intialised with 0 as well as the SN at the UE + * => an overflow is assumed when (previous SN > received SN) + * @param p_PrevCount .. COUNT of the previous UL message + * @param p_SequenceNumber .. SN received in current UL message + * @return NasCount_Type .. estimated COUNT + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_NasSecurity_EstimateCOUNT(NasCount_Type p_PrevCount, + NasEmu_SN_Type p_SequenceNumber) return NasCount_Type + { + var integer v_PrevCountValue := oct2int(p_PrevCount); + var integer v_CountValue; + var integer v_MaxSnPlus1; + var integer v_PrevSnValue; + var integer v_ReceivedSnValue; + var integer v_OverflowCounter; /* Note: for normal (long) SN this is the overflow counter as described in 24.301; + for 5 bit SN it includes the 3 most significant bits of the least significant octet (what normally is the SN) */ + if (ischosen(p_SequenceNumber.Long)) { + v_ReceivedSnValue := p_SequenceNumber.Long; + v_MaxSnPlus1 := 256; + } else { + v_ReceivedSnValue := p_SequenceNumber.Short; + v_MaxSnPlus1 := 32; + } + v_OverflowCounter := v_PrevCountValue / v_MaxSnPlus1; + v_PrevSnValue := v_PrevCountValue mod v_MaxSnPlus1; + + if (v_ReceivedSnValue < v_PrevSnValue) { // => overflow + v_OverflowCounter := (v_OverflowCounter + 1) mod 65536; + } + v_CountValue := (v_OverflowCounter * v_MaxSnPlus1) + v_ReceivedSnValue; + + return int2oct(v_CountValue, 4); + }; + + //**************************************************************************** + // Configuration Handling + //---------------------------------------------------------------------------- + /* + * @desc initialise NAS COUNT + * @return NasCount_Type .. initial NAS COUNT + * Note: NAS COUNT for both UL and DL is the value of the last PDU being receive from or send to the UE; + * => as for both sides the initial value in a PDU shall be 0 (24.301 cl. 4.4.3.1) + * the internal value needs to be set to the maximum value (i.e. when this is incremented it results in 0) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_NasCountInit() return NasCount_Type + { + var integer v_CountValue := (65536 * 256) - 1; + return int2oct(v_CountValue, 4); + } + //---------------------------------------------------------------------------- + /* + * @desc initialise the global information + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_NasSecurity_Init() runs on NASEMU_PTC + { + vc_NasSecurity := valueof(cs_NasSecurity_Init); // valueof cannot be avoided here + }; + //---------------------------------------------------------------------------- + /* + * @desc handle configuration of the NAS emulation (NAS_CTRL_REQ) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + altstep a_ConfigurationHandler() runs on NASEMU_PTC + { + var NAS_CTRL_REQ v_ConfigAsp; + var NasCountInfo_Type v_NasCountInfo; + + [] CTRL.receive(cr_NAS_CTRL_Security_REQ) -> value v_ConfigAsp { /* NAS SECURITY */ + if (ischosen(v_ConfigAsp.Request.Security.StartRestart)) { /* Start NAS Security */ + vc_NasSecurity.SecurityStarted := true; + vc_NasSecurity.Integrity := v_ConfigAsp.Request.Security.StartRestart.Integrity; + vc_NasSecurity.Ciphering := v_ConfigAsp.Request.Security.StartRestart.Ciphering; + if (ispresent(v_ConfigAsp.Request.Security.StartRestart.NasCountReset)) { + vc_NasSecurity.NasCount.UL := f_NasCountInit(); + vc_NasSecurity.NasCount.DL := f_NasCountInit(); + } + } else { /* Release: Reset NAS Security */ + fl_NasSecurity_Init(); + } + if (v_ConfigAsp.Common.ControlInfo.CnfFlag) { + CTRL.send(cs_NAS_CTRL_Security_CNF); + } + } + [] CTRL.receive(cr_NAS_CTRL_NasCount_REQ) -> value v_ConfigAsp { /* NAS COUNT */ + if (ischosen(v_ConfigAsp.Request.NasCount.Set)) { + v_NasCountInfo := v_ConfigAsp.Request.NasCount.Set; + if (ispresent(v_NasCountInfo.UL)) { + vc_NasSecurity.NasCount.UL := v_NasCountInfo.UL; + } /* else: keep as it is */ + if (ispresent(v_NasCountInfo.DL)) { + vc_NasSecurity.NasCount.DL := v_NasCountInfo.DL; + } /* else: keep as it is */ + if (v_ConfigAsp.Common.ControlInfo.CnfFlag) { + CTRL.send(cs_NAS_CTRL_NasCountSet_CNF); + } + } else if (ischosen(v_ConfigAsp.Request.NasCount.Get)) { + if (v_ConfigAsp.Common.ControlInfo.CnfFlag) { + CTRL.send(cs_NAS_CTRL_NasCountGet_CNF(vc_NasSecurity.NasCount)); + } + } + } + }; + //**************************************************************************** + // DL ASP Handling + //---------------------------------------------------------------------------- + /* + * @desc encode and cipher NAS PDU + * @param p_NAS_MSG_Request .. NAS message + * @return DedicatedInfoNAS .. encoded and ciphered NAS message (DedicatedInfoNAS) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_EncodeAndCipherNasPdu(NAS_MSG_Request_Type p_NAS_MSG_Request) runs on NASEMU_PTC return DedicatedInfoNAS + { + var SecurityHeaderType v_SecurityStatus := p_NAS_MSG_Request.SecurityProtection.Status; + var boolean v_ForceMacError := p_NAS_MSG_Request.SecurityProtection.ForceMacError; // @sic R5s100358 additional changes sic@ + var octetstring v_EncodedNasPdu; + var NasCount_Type v_CountDL; + var MessageAuthenticationCode v_CalculatedMac; + var NAS_SequenceNumber v_SequenceNumber; + var octetstring v_Octet6toN; + + v_EncodedNasPdu := f_NasEmu_EncodePiggybacked(p_NAS_MSG_Request.Pdu); + + if (v_SecurityStatus != tsc_SHT_NoSecurityProtection) { + + if (not vc_NasSecurity.SecurityStarted) { + f_NasEmulationError(__FILE__, __LINE__, "security is not started"); + /* => PDU will not be security protected */ + + } else { + /* Note: acc. 24.301 cl. 4.4.1 "When both ciphering and integrity protection are activated, then the NAS message is first encrypted + and then the encrypted NAS message and the SN are integrity protected by calculating the MAC" + => we apply ciphering first and then integrity protection */ + + // INCREMENT DL NAS COUNT: + v_CountDL := f_NasSecurity_IncrementCOUNT(vc_NasSecurity.NasCount.DL); + vc_NasSecurity.NasCount.DL := v_CountDL; + + // APPLY CIPHERING (if necessary): + if ((v_SecurityStatus == tsc_SHT_IntegrityProtected_Ciphered) or + (v_SecurityStatus == tsc_SHT_IntegrityProtected_Ciphered_NewSecurityContext)) { + + v_EncodedNasPdu := fx_NasCiphering(v_EncodedNasPdu, + vc_NasSecurity.Ciphering.Algorithm, + vc_NasSecurity.Ciphering.K_NAS, + v_CountDL, + vc_NasSecurity.BearerId); + } + + // APPLY INTEGRITY PROTECTION: + v_SequenceNumber := f_NasSecurity_ExtractSNfromCOUNT(v_CountDL); + v_Octet6toN := v_SequenceNumber & v_EncodedNasPdu; + v_CalculatedMac := fx_NasIntegrityAlgorithm(v_Octet6toN, + vc_NasSecurity.Integrity.Algorithm, + vc_NasSecurity.Integrity.K_NAS, + v_CountDL, + vc_NasSecurity.BearerId, + tsc_DirectionDL); + + if (v_ForceMacError) { // @sic R5s100358 additional changes sic@ + v_CalculatedMac := not4b v_CalculatedMac; // O4_Type + } + + // build up SECURITY PROTECTED NAS message + // @sic R5s090194: v_SecurityStatus used directly in call of cs_SecurityProtectedNasMsg sic@ + v_EncodedNasPdu := bit2oct(f_NasEmu_Encvalue(cs_SecurityProtectedNasMsg(v_SecurityStatus, + v_CalculatedMac, + v_SequenceNumber, + v_EncodedNasPdu))); + } + } + return v_EncodedNasPdu; + } + //---------------------------------------------------------------------------- + /* + * @desc Handling of ASPs coming from the test cases; + * if the ASP contains a NAS PDU this will be encoded, ciphered + * and either added to the given RRC PDU (piggybacking) + * or packed into a DLInformationTransfer PDU + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + altstep a_AspFromTestcaseHandler() runs on NASEMU_PTC + { + var SRB_COMMON_REQ v_AspFromTC; + var ReqAspCommonPart_Type v_ReqAspCommonPart; + var NAS_MSG_Request_Type v_NasPduFromTC; + var template (value) RRC_MSG_Request_Type v_RrcPduToSYS; + var template (value) DL_DCCH_Message v_DL_DCCH_Message; + var DedicatedInfoNAS v_NAS_DedicatedInformation[maxDRB]; // we use an array as long as this is an inline type definition in ASN.1 + var integer v_NoOfNasPdus := 0; + var boolean v_RrcPduIsPresent; + var boolean v_NasPduIsPresent; + var integer I; + + [] TC_SRB.receive(car_SignallingAspFromTC) -> value v_AspFromTC { + + v_ReqAspCommonPart := v_AspFromTC.Common; + v_RrcPduIsPresent := ispresent(v_AspFromTC.Signalling.Rrc); + v_NasPduIsPresent := ispresent(v_AspFromTC.Signalling.Nas); + + if (v_NasPduIsPresent) { + // Note: in case of RRCConnectionReconfiguration there may be more than one NAS PDUs + v_NoOfNasPdus := lengthof(v_AspFromTC.Signalling.Nas); // Note: per ASN.1 definition length is restricted to maxDRB + for (I:=0; I < v_NoOfNasPdus; I:= I + 1) { + v_NasPduFromTC := v_AspFromTC.Signalling.Nas[I]; + v_NAS_DedicatedInformation[I] := f_EncodeAndCipherNasPdu(v_NasPduFromTC); // encode NAS PDU; apply NAS security (if reqired) + } + } + + if (v_RrcPduIsPresent) { + // ******* RRC PDU (containing RRC control information) + + v_RrcPduToSYS := v_AspFromTC.Signalling.Rrc; + + if (v_NasPduIsPresent) { + // ***** NAS PDU BEING PIGGY BACKED + if (not ischosen(v_RrcPduToSYS.Dcch)) { + // ***** SRB0 + f_NasEmulationError(__FILE__, __LINE__, "no piggy-backing possible for CCCH message"); + return; /* don't send anything */ + + } else { + // ***** SRB1/2 + v_DL_DCCH_Message := v_RrcPduToSYS.Dcch; /* extract RRC message; + Note: since v_RrcPduToSYS is a union v_RrcPduToSYS.Dcch is never omit */ + + if (ischosen(v_DL_DCCH_Message.message_.c1.rrcConnectionReconfiguration)) { /* RRC message is RRCConnectionReconfiguration */ + // *** RRC CONNECTION RECONFIGURATION: + for (I:=0; I < v_NoOfNasPdus; I:= I + 1) { + v_DL_DCCH_Message.message_.c1.rrcConnectionReconfiguration.criticalExtensions.c1.rrcConnectionReconfiguration_r8.dedicatedInfoNASList[I] := + v_NAS_DedicatedInformation[I]; + } + + } else if (ischosen(v_DL_DCCH_Message.message_.c1.dlInformationTransfer)) { /* RRC message is DLInformationTransfer */ + // *** DL INFORMATION TRANSFER: + if (v_NoOfNasPdus > 1) { + f_NasEmulationError(__FILE__, __LINE__, "too many NAS PDUs (shall be a maximun of 1 PDU for DLInformationTransfer)"); + return; /* don't send anything */ + } else { + v_DL_DCCH_Message.message_.c1.dlInformationTransfer.criticalExtensions.c1.dlInformationTransfer_r8.dedicatedInfoType.dedicatedInfoNAS := + v_NAS_DedicatedInformation[0]; + } + + } else { + // *** OTHER RRC PDU: + f_NasEmulationError(__FILE__, __LINE__, "RRC message can not carry piggy-backed NAS PDU"); + return; /* don't do anything else */ + } + v_RrcPduToSYS := cs_RRC_MSG_RequestDCCH(v_DL_DCCH_Message); + } + } + } else { + // ******* NAS PDU only: + if (not v_NasPduIsPresent) { + f_NasEmulationError(__FILE__, __LINE__, "neither RRC nor NAS PDU to be sent"); + return; /* don't send anything */ + } else { + if (v_NoOfNasPdus > 1) { + f_NasEmulationError(__FILE__, __LINE__, "too many NAS PDUs (shall be a maximun of 1 PDU for DLInformationTransfer)"); + return; /* don't send anything */ + } else { + v_RrcPduToSYS := cs_RRC_MSG_RequestDCCH(cs_DLInformationTransfer(tsc_RRC_TI_Def, v_NAS_DedicatedInformation[0])); + } + } + } + SYS_SRB.send(cas_PduToSYS(v_ReqAspCommonPart, v_RrcPduToSYS)); + } + } + //**************************************************************************** + // UL ASP Handling + //---------------------------------------------------------------------------- + /* + * @desc Decipher and decode NAS PDU + * Notes: + * - When receiving a security protected NAS PDU firstly deceiphering is applied; integrity protection is applied on the deciphered NAS PDU; + * - Deciphering is applied on the encoded NAS PDU only (but not on any other IE of SECURITY PROTECTED NAS MESSAGE) since the SN is used for deciphering; + * - if the NAS PDU is security protected (without error) the UL NAS COUNT is incremented + * @param p_NAS_DedicatedInformation .. encoded and ciphered NAS message + * @return template (value) NasEmu_DecodingInfo_Type .. decoded NAS message + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_DecipherAndDecodeNasPdu(DedicatedInfoNAS p_NAS_DedicatedInformation) + runs on NASEMU_PTC + return template (value) NasEmu_DecodingInfo_Type + { + var template (value) NasEmu_DecodingInfo_Type v_DecodingInfo := cs_DecodingInfo_Init; // NasIndication := omit, IntegrityError := false + var NasEmu_DecodedNasPduUL_Type v_DecodedNasPduUL; + var octetstring v_IntegrityProtectedOctets; + var SECURITY_PROTECTED_NAS_MESSAGE v_SecurityProtectedNasMsg; + var MessageAuthenticationCode v_ContainedMac; + var MessageAuthenticationCode v_CalculatedMac; + var NasEmu_SN_Type v_SequenceNumber; + var B16_Type v_ShortMac; // (SERVICE_REQUEST) + var NAS_Message v_EncodedNasPdu; + var NasCount_Type v_CountUL; + var SecurityHeaderType v_SecurityHeader; + + // Decode NAS message: message is either SECURITY_PROTECTED_NAS_MESSAGE or non-protected NAS message + v_DecodedNasPduUL := f_NasEmu_DecodeMsg(p_NAS_DedicatedInformation); + + if (ischosen(v_DecodedNasPduUL.Invalid)) { + return v_DecodingInfo; // v_DecodingInfo is {omit, false} + } + + if (ischosen(v_DecodedNasPduUL.Msg.sECURITY_PROTECTED_NAS_MESSAGE)) { // SECURITY_PROTECTED_NAS_MESSAGE + + v_SecurityProtectedNasMsg := v_DecodedNasPduUL.Msg.sECURITY_PROTECTED_NAS_MESSAGE; + + v_SecurityHeader := v_SecurityProtectedNasMsg.securityHeaderType; + v_ContainedMac := v_SecurityProtectedNasMsg.messageAuthenticationCode; + v_SequenceNumber.Long := oct2int(v_SecurityProtectedNasMsg.sequenceNumber); + v_EncodedNasPdu := v_SecurityProtectedNasMsg.nasMessage; + v_CountUL := f_NasSecurity_EstimateCOUNT(vc_NasSecurity.NasCount.UL, v_SequenceNumber); + + + if ((not vc_NasSecurity.SecurityStarted) and (v_SecurityHeader != tsc_SHT_IntegrityProtected)) { /* @sic R5s100024 tsc_SHT_EnabledSecurityProtection replaced by tsc_SHT_IntegrityProtected sic@ */ + /* Note: A UE is allowed to transmit a security protected Attach request (Security header set to '0001'B) + * at the initial registration in case the USIM used has a valid EPS security context */ + + f_NasEmulationError(__FILE__, __LINE__, "security protected PDU received but security is not started"); + return v_DecodingInfo; // v_DecodingInfo is {omit, false} + + } else { + if (vc_NasSecurity.SecurityStarted) { + /* Note: acc. 24.301 cl. 4.4.1 "When both ciphering and integrity protection are activated, then the NAS message is first encrypted + and then the encrypted NAS message and the SN are integrity protected by calculating the MAC" + => we apply integrity protection on the ciphered ciphering data */ + + // CHECK INTEGRITY + v_IntegrityProtectedOctets := v_SecurityProtectedNasMsg.sequenceNumber & v_EncodedNasPdu; + v_CalculatedMac := fx_NasIntegrityAlgorithm(v_IntegrityProtectedOctets, + vc_NasSecurity.Integrity.Algorithm, + vc_NasSecurity.Integrity.K_NAS, + v_CountUL, + vc_NasSecurity.BearerId, + tsc_DirectionUL); + if (v_ContainedMac == v_CalculatedMac) { + vc_NasSecurity.NasCount.UL := v_CountUL; /* write back the latest count value */ + + } else { + // UL NAS COUNT is not updated in case of integrity error + v_DecodingInfo.IntegrityError := true; + } + + // DECIPHERING: + if ((v_SecurityHeader == tsc_SHT_IntegrityProtected_Ciphered) or + (v_SecurityHeader == tsc_SHT_IntegrityProtected_Ciphered_NewSecurityContext)) { + + v_EncodedNasPdu := fx_NasDeciphering(v_EncodedNasPdu, + vc_NasSecurity.Ciphering.Algorithm, + vc_NasSecurity.Ciphering.K_NAS, + v_CountUL, + vc_NasSecurity.BearerId); + } + } else { + // NAS security not started yet, but e.g. in case of ATTACH REQ + vc_NasSecurity.NasCount.UL := v_CountUL; /* write back the latest count value */ + } + // Decode NAS message + v_DecodedNasPduUL := f_NasEmu_DecodeMsg(v_EncodedNasPdu); + if (ischosen(v_DecodedNasPduUL.Invalid)) { + // Do nothing: v_DecodingInfo.NasIndication remains omit + } else { + v_DecodingInfo.NasIndication := cs_NAS_MSG_Indication(v_SecurityHeader, + v_CountUL, + v_DecodedNasPduUL.Msg); + } + } + } else if (ischosen(v_DecodedNasPduUL.Msg.sERVICE_REQUEST)) { // SERVICE_REQUEST + + // NAS COUNT: Wrap-around count + seq number + // SERVICE_REQUEST: 5-bit seq number + // Short MAC: cl. 9.9.3.28 integrity is applied on the octet 1 and 2 of the SERVICE_REQUEST + + v_SequenceNumber.Short := bit2int(v_DecodedNasPduUL.Msg.sERVICE_REQUEST.ksiAndSN.sn); + v_ShortMac := v_DecodedNasPduUL.Msg.sERVICE_REQUEST.shortMAC.macValue; + v_CountUL := f_NasSecurity_EstimateCOUNT(vc_NasSecurity.NasCount.UL, v_SequenceNumber); + + v_IntegrityProtectedOctets := substr(p_NAS_DedicatedInformation, 0, 2); // 24.301 cl. 9.9.3.28: integrity is applied on the first 2 octets of SERVICE_REQUEST + + v_CalculatedMac := fx_NasIntegrityAlgorithm(v_IntegrityProtectedOctets, + vc_NasSecurity.Integrity.Algorithm, + vc_NasSecurity.Integrity.K_NAS, + v_CountUL, + vc_NasSecurity.BearerId, + tsc_DirectionUL); + + if (bit2oct(v_ShortMac) == substr(v_CalculatedMac, 2, 2)) { // 24.301 cl. 9.9.3.28: ShortMAC contains the 2 least significant octets of the MAC + vc_NasSecurity.NasCount.UL := v_CountUL; // write back the latest count value + + } else { + // UL NAS COUNT is not updated in case of integrity error + v_DecodingInfo.IntegrityError := true; + } + v_DecodingInfo.NasIndication := cs_NAS_MSG_Indication(tsc_SHT_IntegrityProtected, + vc_NasSecurity.NasCount.UL, + v_DecodedNasPduUL.Msg); + + } else { // non security protected PDU + v_DecodingInfo.NasIndication := cs_NAS_MSG_Indication(tsc_SHT_NoSecurityProtection, + vc_NasSecurity.NasCount.UL, /* Note: NAS-Count shall be ignored by the test case + in case of non-protected messages */ + v_DecodedNasPduUL.Msg); + } + return v_DecodingInfo; + }; + //---------------------------------------------------------------------------- + /* + * @desc handling of ASPs containing an RRC PDU from the system adaptor: + * if the RRC PDU contains a piggybacked NAS PDU or is an ULInformationTransfer PDU, + * the NAS PDU is extracted, deciphered (if necessary) and decoded + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + altstep a_AspFromSystemAdaptorHandler() runs on NASEMU_PTC + { + var RRC_PDU_IND v_AspFromSYS; + var RRC_MSG_Indication_Type v_RrcIndication; + var UL_DCCH_Message v_RrcPdu; + var ULInformationTransfer_r8_IEs v_ULInformationTransfer; + var template (value) SRB_COMMON_IND v_SRB_COMMON_IND; + var template (value) NasEmu_DecodingInfo_Type v_DecodingInfo; + var DedicatedInfoNAS v_NAS_DedicatedInformation[maxDRB]; // even though currently (DEC08) there is always only one DedicatedInfoNAS we use an array + var integer v_NoOfNasPdus; + var boolean v_RrcPduPresent; + var boolean v_IntegrityError; + var integer I; + + [] SYS_SRB.receive(car_PduFromSYS) -> value v_AspFromSYS { + v_RrcIndication := v_AspFromSYS.RrcPdu; + v_SRB_COMMON_IND := cas_SignallingAspToTC_Init(v_AspFromSYS.Common); // RRC and NAS both are initialised as omit + + if (ischosen(v_RrcIndication.Ccch)) { /* CCCH -> SRB0 */ + v_SRB_COMMON_IND.Signalling.Rrc := v_RrcIndication; + + } else { /* DCCH -> SRB1/2 */ + + v_RrcPdu := v_RrcIndication.Dcch; + v_RrcPduPresent := true; + v_NoOfNasPdus := 0; + v_IntegrityError := false; + + if (ischosen(v_RrcPdu.message_.c1)) { + + if (ischosen(v_RrcPdu.message_.c1.rrcConnectionSetupComplete)) { + // RRC CONNECTION SETUP COMPLETE + if (ischosen(v_RrcPdu.message_.c1.rrcConnectionSetupComplete.criticalExtensions.c1.rrcConnectionSetupComplete_r8)) { + v_NAS_DedicatedInformation[0] := v_RrcPdu.message_.c1.rrcConnectionSetupComplete.criticalExtensions.c1.rrcConnectionSetupComplete_r8.dedicatedInfoNAS; + v_NoOfNasPdus := 1; + } + + } else if (ischosen(v_RrcPdu.message_.c1.ulInformationTransfer)) { + // UL INFORMATION TRANSFER + if (ischosen(v_RrcPdu.message_.c1.ulInformationTransfer.criticalExtensions.c1.ulInformationTransfer_r8)) { + v_ULInformationTransfer := v_RrcPdu.message_.c1.ulInformationTransfer.criticalExtensions.c1.ulInformationTransfer_r8; + if (ischosen(v_ULInformationTransfer.dedicatedInfoType.dedicatedInfoNAS)) { /* @sic R5s100135 sic@ */ + v_NAS_DedicatedInformation[0] := v_ULInformationTransfer.dedicatedInfoType.dedicatedInfoNAS; /* @sic R5s100135 sic@ */ + v_RrcPduPresent := false; + v_NoOfNasPdus := 1; + } + else { + /* @sic R5-106675 (clause 4.4.3.2): ulInformationTransfer does not contain NAS PDU but CDMA2000 message(s) sic@ */ + /* @sic C2K TUNNELING: hand-over ulInformationTransfer to EUTRA sic@ */ + } + } + } else { + // OTHER RRC PDU + } + } + + if (v_RrcPduPresent) { + v_SRB_COMMON_IND.Signalling.Rrc := v_RrcIndication; + } + if (v_NoOfNasPdus > 0) { + for (I := 0; I < v_NoOfNasPdus; I := I + 1) { + v_DecodingInfo := f_DecipherAndDecodeNasPdu(v_NAS_DedicatedInformation[I]); + v_SRB_COMMON_IND.Signalling.Nas[I] := v_DecodingInfo.NasIndication; // omit if message cannot be decoded => shall lead to a test case error + v_IntegrityError := v_IntegrityError or valueof(v_DecodingInfo.IntegrityError); // valueof cannot be avoided here + } + if (v_IntegrityError) { // set Error choice of common part only if there is an error + /* @sic R5s100024 sic@ */ + if (ischosen(v_SRB_COMMON_IND.Common.Status.Error)) { /* there is already an error flagged by the SA */ + v_SRB_COMMON_IND.Common.Status.Error.Integrity.Nas := true; + } else { /* the error needs to be set */ + v_SRB_COMMON_IND.Common.Status := cs_IndicationStatus_NasIntegrityError; + } + } + } + } + TC_SRB.send(v_SRB_COMMON_IND); + } + } + //**************************************************************************** + // Main Loop + //---------------------------------------------------------------------------- + /* + * @desc NAS emulation main loop (started by the MTC) + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_NASEMU_MainLoop() runs on NASEMU_PTC + { /* @sic R5-106675 (clause 4.4.3.2): New parameter to tell the NAS emulator whether C2K pre-registration shall be supported or not sic@ + @sic C2K TUNNELING: parameter removed again sic@ */ + fl_NasSecurity_Init(); + + while (true) { + alt { + [] a_ConfigurationHandler(); + [] a_AspFromTestcaseHandler(); + [] a_AspFromSystemAdaptorHandler(); + [] any port.receive { + f_NasEmulationError(__FILE__, __LINE__, "unexpected message (skipped)"); + repeat; + } + } + } + }; +} +//------------------------------------------------------------------------------ +// EOF diff --git a/LTE_A_IWD_14wk37/Common/NasEmulation/NasEmu_AspTypes.ttcn b/LTE_A_IWD_14wk37/Common/NasEmulation/NasEmu_AspTypes.ttcn new file mode 100644 index 0000000..83beb2c --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/NasEmulation/NasEmu_AspTypes.ttcn @@ -0,0 +1,60 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-04-01 15:09:57 +0200 (Mon, 01 Apr 2013) $ +// $Rev: 8395 $ +/******************************************************************************/ + +module NasEmu_AspTypes { + //**************************************************************************** + // System interface between NAS emulation and system adaptor + //**************************************************************************** + import from EUTRA_CommonDefs all; + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + + group System_Interface { + + //**************************************************************************** + // ASP Type Definitions: + //**************************************************************************** + + type record RRC_PDU_REQ { + ReqAspCommonPart_Type Common, /* CellId : identifier of the cell + * RoutingInfo : SRB0, SRB1, SRB2 + * TimingInfo : Now in normal cases; + * For latency tests TimingInfo can be set to the SFN/subframe in which the RRC messages shall be sent out + * NOTE 1: if the RRC PDU is too long to be sent in one TTI the TimingInfo corresponds to the first TTI + * NOTE 2: the TimingInfo is not changed by the NAS Emu (i.e. the timing info as coming from the test case (SRB_COMMON_REQ) is handed through by the NAS Emu) + * ControlInfo + * CnfFlag:=false; + * FollowOnFlag + * true: Indicates that the message(s) to be sent on the same TTI will follow + * NOTE 1: If the TimingInfo is not the same for messages to be sent on the same TTI, the SS shall produce an error + * NOTE 2: the follow on flag applies only for messages of the same SRB + * false: Indicates that no more message(s) will follow */ + RRC_MSG_Request_Type RrcPdu + }; + type record RRC_PDU_IND { /* common ASP to receive PDUs from SRB0, SRB1 or SRB2 */ + IndAspCommonPart_Type Common, /* CellId : identifier of the cell + * RoutingInfo : SRB0, SRB1, SRB2 + * TimingInfo : time when message has been received (frame and sub-frame number); this is handed through to the test case by the NAS emulation + * NOTE: normally an RRC PDU is expected in one TTI; nevertheless if it is spread over more than one TTIs TimingInfo shall refer to the end of the PDU i.e. to the last RLC PDU being received; + * Status : OK or RRC integrity error */ + RRC_MSG_Indication_Type RrcPdu + }; + + //**************************************************************************** + // Port definitions + //**************************************************************************** + + type port NASEMU_SYSTEM_PORT message { /* NASEMU PTC: Port for Sending/Receiving data to/from the SYSTEM Interface */ + out RRC_PDU_REQ; + in RRC_PDU_IND; + }; + + } // End group System_Interface +} diff --git a/LTE_A_IWD_14wk37/Common/NasEmulation/NasEmu_Component.ttcn b/LTE_A_IWD_14wk37/Common/NasEmulation/NasEmu_Component.ttcn new file mode 100644 index 0000000..898fd9b --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/NasEmulation/NasEmu_Component.ttcn @@ -0,0 +1,68 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-10-23 11:47:20 +0200 (Wed, 23 Oct 2013) $ +// $Rev: 9858 $ +/******************************************************************************/ + +module NasEmu_Component { + import from CommonDefs all; + import from EUTRA_ASP_SrbDefs all; + import from NasEmu_AspTypes all; + import from EUTRA_ASP_NasCtrl all; + import from EUTRA_Component all; + + // global information: + type record NasSecurity_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + NAS_SecurityInfo_Type Integrity, + NAS_SecurityInfo_Type Ciphering, + NasCountInfo_Type NasCount, + B5_Type BearerId, /* @sic R5-101050: BearerId changed to 5 bits sic@ */ + boolean SecurityStarted /* can be set to true after the download of security keys since + ciphering is assumed for all security protected NAS PDUs in UL */ + }; + + //---------------------------------------------------------------------------- + // Component definition: + type component NASEMU_PTC { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + var NasSecurity_Type vc_NasSecurity; + port NASEMU_SYSTEM_PORT SYS_SRB; + port NASEMU_SRB_PORT TC_SRB; + port NASEMU_CTRL_PORT CTRL; + }; + + type component NASEMU_SYSTEM { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + port NASEMU_SYSTEM_PORT E_SRB; + }; + + //---------------------------------------------------------------------------- + /* + * @desc Create NASEMU, connect it with EUTRA PTC and map the system ports + * @param p_Eutra + * @return NASEMU_PTC + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_NasEmu_CreateConnectAndMap(EUTRA_PTC p_Eutra) return NASEMU_PTC + { + var NASEMU_PTC v_NASEMU_PTC := null; + + if (p_Eutra != null) { + + // create NAS emulation: + v_NASEMU_PTC := NASEMU_PTC.create alive; + + // connect NAS emulation: + connect(p_Eutra:NASCTRL, v_NASEMU_PTC:CTRL); + connect(p_Eutra:SRB, v_NASEMU_PTC:TC_SRB); + + // map NASEMU system ports: + map(v_NASEMU_PTC:SYS_SRB, system:E_SRB); + } + return v_NASEMU_PTC; + } + +} diff --git a/LTE_A_IWD_14wk37/Common/NasEmulation/NasEmu_Templates.ttcn b/LTE_A_IWD_14wk37/Common/NasEmulation/NasEmu_Templates.ttcn new file mode 100644 index 0000000..97c1a9f --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/NasEmulation/NasEmu_Templates.ttcn @@ -0,0 +1,168 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-10-23 11:47:20 +0200 (Wed, 23 Oct 2013) $ +// $Rev: 9858 $ +/******************************************************************************/ + +module NasEmu_Templates { + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_CommonDefs all; + import from NAS_CommonTypeDefs all; + import from EPS_NAS_TypeDefs all; + import from EPS_NAS_MsgContainers all; + import from EPS_NAS_Constants all; + import from EUTRA_ASP_SrbDefs all; + import from EUTRA_ASP_NasCtrl all; + import from NasEmu_AspTypes all; + + + //**************************************************************************** + // Templates: ASPs for Signalling + //---------------------------------------------------------------------------- + template (present) SRB_COMMON_REQ car_SignallingAspFromTC := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + Common := ?, + Signalling := { + Rrc := *, + Nas := * + } + }; + + template (value) SRB_COMMON_IND cas_SignallingAspToTC_Init(template (value) IndAspCommonPart_Type p_Common) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + Common := p_Common, + Signalling := { + Rrc := omit, + Nas := omit + } + }; + //---------------------------------------------------------------------------- + template (present) RRC_PDU_IND car_PduFromSYS := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + Common := ?, + RrcPdu := ? + }; + + template (value) RRC_PDU_REQ cas_PduToSYS(template (value) ReqAspCommonPart_Type p_Common, + template (value) RRC_MSG_Request_Type p_RRC_MSG_Request) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + Common := p_Common, + RrcPdu := p_RRC_MSG_Request + }; + + template (value) RRC_MSG_Request_Type cs_RRC_MSG_RequestDCCH(template (value) DL_DCCH_Message p_DcchRrcPdu) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + Dcch := p_DcchRrcPdu + }; + + //**************************************************************************** + // Templates: ASPs for Configuration + //---------------------------------------------------------------------------- + template (present) NAS_CTRL_REQ cr_NAS_CTRL_Security_REQ := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + Common := ?, + Request := { + Security := ? + } + }; + + template (present) NAS_CTRL_REQ cr_NAS_CTRL_NasCount_REQ := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + Common := ?, + Request := { + NasCount := ? + } + }; + //---------------------------------------------------------------------------- + template (value) CnfAspCommonPart_Type cs_CnfAspCommonPart_NasCtrl := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + CellId := eutra_Cell_NonSpecific, + RoutingInfo := { None := true }, + TimingInfo := { None := true }, + Result := { Success := true } + }; + + template (value) NAS_CTRL_CNF cs_NAS_CTRL_Security_CNF := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + Common := cs_CnfAspCommonPart_NasCtrl, + Confirm := {Security := true } + }; + + template (value) NAS_CTRL_CNF cs_NAS_CTRL_NasCountSet_CNF := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + Common := cs_CnfAspCommonPart_NasCtrl, + Confirm := { + NasCount := { + Set := true + } + } + }; + + template (value) NAS_CTRL_CNF cs_NAS_CTRL_NasCountGet_CNF(template (value) NasCountInfo_Type p_NasCountInfo) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + Common := cs_CnfAspCommonPart_NasCtrl, + Confirm := { + NasCount := { + Get := p_NasCountInfo + } + } + }; + //**************************************************************************** + // Templates: NAS Signalling + //---------------------------------------------------------------------------- + template (value) NAS_DL_Message_Type cs_SecurityProtectedNasMsg(SecurityHeaderType p_SecurityHeaderType, + MessageAuthenticationCode p_MessageAuthenticationCode, + NAS_SequenceNumber p_NAS_SequenceNumber, + template (value) NAS_Message p_NAS_Message) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + sECURITY_PROTECTED_NAS_MESSAGE := { + securityHeaderType := p_SecurityHeaderType, + protocolDiscriminator := tsc_PD_EMM, + messageAuthenticationCode := p_MessageAuthenticationCode, + sequenceNumber := p_NAS_SequenceNumber, + nasMessage := p_NAS_Message + } + }; + //---------------------------------------------------------------------------- + template (value) ESM_MessageContainer cs_ESM_MessageContainer(template (omit) IEI8_Type p_IEI, + octetstring p_EncodedEsmMsg) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + iei := p_IEI, + iel := int2oct(lengthof(p_EncodedEsmMsg), 2), + esmPdu := p_EncodedEsmMsg + }; + + //**************************************************************************** + // Templates: RRC Signalling + //---------------------------------------------------------------------------- + // DLInformationTransfer (36.331 cl. 6.2.2) + + template (value) DL_DCCH_Message cs_DLInformationTransfer(RRC_TransactionIdentifier p_RRC_TI, + template (value) DedicatedInfoNAS p_NAS_DedicatedInformation) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, UTRAN) */ + message_ := { + c1 := { + dlInformationTransfer := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + c1 := { + dlInformationTransfer_r8 := { + dedicatedInfoType := { + dedicatedInfoNAS := p_NAS_DedicatedInformation + }, + nonCriticalExtension := omit + } + } + } + } + } + } + }; + + //---------------------------------------------------------------------------- +} diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ANR_CommonFunctions.ttcn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ANR_CommonFunctions.ttcn new file mode 100644 index 0000000..1712912 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ANR_CommonFunctions.ttcn @@ -0,0 +1,79 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-06-07 23:45:32 +0200 (Sat, 07 Jun 2014) $ +// $Rev: 11666 $ +/******************************************************************************/ + +module UTRAN_ANR_CommonFunctions { + + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_ASP_Definitions language "ASN.1:2002" all; + import from UTRAN_TypeDefs all; + import from UTRAN_CellInfo all; + import from UTRAN_Component all; + import from UTRAN_TTCN_ASP_Templates all; + import from UTRAN_CommonDefs all; + import from CommonDefs all; + import from UTRAN_ANR_MDT_Templates all; + + /* + * @desc Function to send UE INFORMATION REQUEST message and receive UE INFORMATION RESPONSE message for Inter-RAT ANR + * and to verify if IE "Logged ANR Report Info List" is present there + * @param p_CellId + * @param p_IsGSM - boolean, if true GMS measurements should be retrieved, EUTRA otherwise + * @param p_ExpectedLoggedANRReportInfoList - lists expected reported cells, it will be compared against the cells in the received list + * @param p_ExpectedMatches - number of matches to be found in the received list + * @return Returns true if all expected items were found, false overwise + * @status + */ + function f_UTRAN_RetrieveANRMeasurements_InterRat(UTRAN_CellId_Type p_CellId, + boolean p_IsGSM, + template (present) LoggedANRReportInfoList p_ExpectedLoggedANRReportInfoList, + integer p_ExpectedMatches) runs on UTRAN_PTC return boolean + { + var B28_Type v_CellId; + var UTRAN_SecurityInfo_Type v_SecurityInfo; + var U_RLC_AM_IND v_DataInd; + var LoggedANRReportInfoList v_ReceivedLoggedANRReportInfoList; + var integer i, j; + var integer v_FoundMatches := 0; + + v_CellId := f_UTRAN_GetCellIndentity(p_CellId); + + //Send UE INFORMATION REQUEST message + v_SecurityInfo := f_UTRAN_Security_Get (); + U_AM.send(cas_RLC_Data_Req_NoCnf(utran_CellDedicated, tsc_RB2, cds_UEInformationRequest_LoggedANRReportRequest(v_SecurityInfo.dl_IntegrityCheckInfo))); + + // Receive UE INFORMATION RESPONSE message and verify if IEs are set correctly + U_AM.receive(car_RLC_Data_Ind(utran_CellDedicated, tsc_RB2, cr_UEInformationResponse_LoggedANRReport_Any)) -> value v_DataInd; + v_ReceivedLoggedANRReportInfoList := v_DataInd.data.aM_message.uL_DCCH_Message.message_.ul_DCCH_MessageType_ext.ueInformationResponse.loggedANRReportInfoList; + for (i:= 0; i< lengthof(p_ExpectedLoggedANRReportInfoList); i:=i+1){ + for (j:= 0; j< lengthof(v_ReceivedLoggedANRReportInfoList); j:=j+1){ + if (match(v_ReceivedLoggedANRReportInfoList[j].servingCell, p_ExpectedLoggedANRReportInfoList[i].servingCell) and + match(v_ReceivedLoggedANRReportInfoList[j].plmn_Identity, p_ExpectedLoggedANRReportInfoList[i].plmn_Identity)) { + + if (p_IsGSM) { //Measured cell should be a GMS one + if (match(v_ReceivedLoggedANRReportInfoList[j].loggedCellInfo.loggedGSMCellInfo.plmn_Identity, p_ExpectedLoggedANRReportInfoList[i].loggedCellInfo.loggedGSMCellInfo.plmn_Identity) and + match(v_ReceivedLoggedANRReportInfoList[j].loggedCellInfo.loggedGSMCellInfo.lac, p_ExpectedLoggedANRReportInfoList[i].loggedCellInfo.loggedGSMCellInfo.lac)) { + v_FoundMatches := v_FoundMatches + 1; + break; + } + } + else { //Measured cell should be EUTRA one + if (match(v_ReceivedLoggedANRReportInfoList[j].loggedCellInfo.loggedEUTRACellInfo, p_ExpectedLoggedANRReportInfoList[i].loggedCellInfo.loggedEUTRACellInfo)) { + v_FoundMatches := v_FoundMatches + 1; + break; + } + } + } + } + } + return (v_FoundMatches == p_ExpectedMatches); + } + +} // end of module diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ANR_MDT_Templates.ttcn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ANR_MDT_Templates.ttcn new file mode 100644 index 0000000..ed73684 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ANR_MDT_Templates.ttcn @@ -0,0 +1,136 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-06-07 23:45:32 +0200 (Sat, 07 Jun 2014) $ +// $Rev: 11666 $ +/******************************************************************************/ +module UTRAN_ANR_MDT_Templates +{ + import from CommonDefs all; + import from UTRAN_CommonDefs all; + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_ASP_Definitions language "ASN.1:2002" all; + + + //========================================================================= + // TEMPLATES + //========================================================================= + //Configuring of IE for ANR over UTRAN testing + template (value) DL_DCCH_Message cs_LoggingMeasurementConfiguration_ANR_InterRAT(IntegrityCheckInfo p_IntegrityCheckInfo, + RRC_TransactionIdentifier p_RRC_TI, + LoggedANRConfigurationInfo_LoggingDuration_Type p_LoggingDuration := hr1, + template (omit) LoggedANRConfigurationInfo_InterRATANRforEUTRAIndicator_Type p_ANRforEUTRA_Indicator := omit, + template (omit) LoggedANRConfigurationInfo_InterRATANRforGSMIndicator_Type p_ANRforGSM_Indicator := omit):= + { + integrityCheckInfo := p_IntegrityCheckInfo, + message_ := { + loggingMeasurementConfiguration := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + r10 := { + loggingMeasurementConfiguration_r10_IEs := { + loggedMeasurementsConfigurationInfo := omit, + loggedANRConfigurationInfo := { + loggingDuration := p_LoggingDuration, + intraUTRAANR := omit, + interRATANRforEUTRAIndicator := p_ANRforEUTRA_Indicator, + interRATANRforGSMIndicator := p_ANRforGSM_Indicator + } + }, + loggingMeasurementConfiguration_r10_add_ext := omit, + nonCriticalExtensions := omit + } + } + } + } + }; + + template (present) LoggedCellInfo cr_LoggedCellInfo_EUTRA(PLMN_Identity p_PLMN_Identity, + B16_Type p_TrackingAreaCode, + B28_Type p_EUTRA_CellId, + EARFCN p_EARFCN , + EUTRA_PhysicalCellIdentity p_EUTRA_PhysicalCellIdentity):= + { + loggedEUTRACellInfo:={ + plmn_Identity := p_PLMN_Identity, + trackingAreaCode := p_TrackingAreaCode, + eutraCellIdentity := p_EUTRA_CellId, + earfcn := p_EARFCN, + physicalCellIdentity := p_EUTRA_PhysicalCellIdentity + } + }; + + template (present) LoggedANRReportInfoList cr_LoggedANRReportInfo_1Entry(PLMN_Identity p_PLMN_Identity, + CellIdentity p_CellIdentity, + template (present) LoggedCellInfo p_LoggedCellInfo) := + { + { + plmn_Identity := p_PLMN_Identity, + servingCell := p_CellIdentity, + loggedCellInfo := p_LoggedCellInfo + } + }; + + template (value) DL_DCCH_Message cds_UEInformationRequest_LoggedANRReportRequest(IntegrityCheckInfo p_IntegrityCheckInfo, + RRC_TransactionIdentifier p_RRC_TI := tsc_RRC_TI) + modifies cs_UEInformationRequest_LoggedMeasReportRequest:= + { + message_ := { + ueInformationRequest := { + criticalExtensions :={ + r10 := { + ueInformationRequest_r10 := + { + loggedMeasReportRequest := omit, + loggedANRReportRequest := true_ + } + } + } + } + } + }; + + template (present) UL_DCCH_Message cr_UEInformationResponse_LoggedANRReport_Any := + {/*@status */ + integrityCheckInfo := ?, + message_ := { + ul_DCCH_MessageType_ext :={ + ueInformationResponse := { + rrc_TransactionIdentifier := ?, + loggedMeasReport := omit, + loggedANRReportInfoList := ?, + vb50NonCriticalExtensions := omit + } + } + } + }; + + //======================================================================================================================== + // UE INFORMATION REQUEST + //======================================================================================================================== + template (value) DL_DCCH_Message cs_UEInformationRequest_LoggedMeasReportRequest(IntegrityCheckInfo p_IntegrityCheckInfo, + RRC_TransactionIdentifier p_RRC_TI := tsc_RRC_TI) := + { + integrityCheckInfo := p_IntegrityCheckInfo, + message_ := { + ueInformationRequest := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + r10 := { + ueInformationRequest_r10 := { + loggedMeasReportRequest := true_, + loggedANRReportRequest := omit + }, + ueInformationRequest_r10_add_ext := omit, + nonCriticalExtensions := omit + } + } + } + } + }; + +} diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ASN1_ASP_RAB_Templates.ttcn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ASN1_ASP_RAB_Templates.ttcn new file mode 100644 index 0000000..e7796b9 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ASN1_ASP_RAB_Templates.ttcn @@ -0,0 +1,2460 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-10 21:20:35 +0200 (Wed, 10 Sep 2014) $ +// $Rev: 12193 $ +/******************************************************************************/ + +module UTRAN_ASN1_ASP_RAB_Templates +{ + import from CommonDefs all; + import from UTRAN_CommonDefs all; + import from UTRAN_CommonAspDefs all; + + import from UTRAN_Parameters all; + + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_ASP_Definitions language "ASN.1:2002" all; + + import from UTRAN_RRC_CommonTemplates all; + import from UTRAN_RRC_RAB_Templates all; + import from UTRAN_TTCN_ASP_Templates all; + + import from UTRAN_ASN1_ASP_Templates all; + + //---------------------------------------------------------------------- + // Constants + //---------------------------------------------------------------------- + + const integer tsc_E_AGCH_PowerOffset := 128; /* @status APPROVED (LTE_IRAT, UTRAN) */ + const integer tsc_E_HICH_PowerOffset := 128; /* PowerOffset = -32 + offset * 0.25 + Unit dB, Range -32dB .. +31.75dB, Step +0.25dB + (25.433, 9.2.2.13Id), offset relative to P-CPICH + @status APPROVED (LTE_IRAT, UTRAN) */ + const integer tsc_E_RGCH_PowerOffset := 128; /* Range and Step are FFS (25.433, 9.2.2.13Ie) + Offset relative to P-CPICH + @status APPROVED (UTRAN) */ + + // ----------------------------------------------------------------------------- + // Common Templates + // ----------------------------------------------------------------------------- + + template (value) UL_DL_Mode cs_UL_DL_Mode_UL_HLS := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + ul := higherLayerScheduling + }; + + template (value) UL_DL_Mode cs_UL_DL_Mode_ULDL_HLS := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + ul_and_dl := { + ul := higherLayerScheduling, + dl := higherLayerScheduling + } + }; + + template (value) UL_DL_Mode cs_UL_DL_Mode_DL_HLS := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + dl := higherLayerScheduling + }; + + template (value) UL_DL_Mode cs_UL_DL_Mode_UL_SF2 := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + ul := sf_2 + }; + + template (value) UL_DL_Mode cs_UL_DL_Mode_ULDL_SF2 := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + ul_and_dl := { + ul := sf_2, + dl := sf_2 + } + }; + + template (value) UL_DL_Mode cs_UL_DL_Mode_ULDL_HSDPA := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + ul_and_dl := { + ul := higherLayerScheduling, + dl := sf_2 + } + }; + + template (value) UL_DL_Mode cs_UL_DL_Mode_DL_SF2 := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + dl := sf_2 + }; + + // ----------------------------------------------------------------------------- + + template (value) DPCHInfo_r5OrLater_FDD cs_DPCHInfo_DL_FDD(template (value) DL_DPCHInfo_r8_FDD p_DL_DPCHInfo, + template (omit) HS_DPCCHInfo_r8 p_HS_DPCCHInfo := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + r8 := { + ul_DPCHInfo := omit, + dl_DPCHInfo := p_DL_DPCHInfo, + hs_DPCCHInd := p_HS_DPCCHInfo, + ss_UL_DPCCH_DRX_Info := omit, + ss_DRX_Info := omit + } + }; + + template (value) DPCHInfo_r5OrLater_TDD cs_DPCHInfo_DL_TDD(template (value) DL_DPCHInfo_r8_TDD p_DL_DPCHInfo, + template (omit) HS_DPCCHInfo_r8 p_HS_DPCCHInfo := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + r8 := { + ul_DPCHInfo := omit, + dl_DPCHInfo := p_DL_DPCHInfo, + hs_DPCCHInd := p_HS_DPCCHInfo, + ss_UL_DPCCH_DRX_Info := omit, + ss_DRX_Info := omit + } + }; + + template (value) DPCHInfo_r5OrLater_FDD cs_DPCHInfo_UL_FDD(template (value) UL_DPCH_Info_r7 p_UL_DPCHInfo, + template (omit) HS_DPCCHInfo_r8 p_HS_DPCCHInfo := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + r8 := { + ul_DPCHInfo := p_UL_DPCHInfo, + dl_DPCHInfo := omit, + hs_DPCCHInd := p_HS_DPCCHInfo, + ss_UL_DPCCH_DRX_Info := omit, + ss_DRX_Info := omit + } + }; + + template (value) DPCHInfo_r5OrLater_TDD cs_DPCHInfo_UL_TDD(template (value) UL_DPCH_Info_r7 p_UL_DPCHInfo, + template (omit) HS_DPCCHInfo_r8 p_HS_DPCCHInfo := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + r8 := { + ul_DPCHInfo := p_UL_DPCHInfo, + dl_DPCHInfo := omit, + hs_DPCCHInd := p_HS_DPCCHInfo, + ss_UL_DPCCH_DRX_Info := omit, + ss_DRX_Info := omit + } + }; + + template (value) DL_DPCHInfo_r8_FDD cs_DL_DPCH_FDD(template (value) DL_CommonInformation_r8 p_DL_CommonInformation, + SF512_AndCodeNumber p_Sf, + SecondaryScramblingCode p_SecondaryScramblingCode := tsc_DL_DPCH1_2ndScrC, + DL_TxPower p_Dl_TxPower := tsc_DL_TxPower_DPCH) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + dl_CommonInformation := p_DL_CommonInformation, + dl_Dpch_InfoPerRL := { + dl_DPCH_InfoPerRL := cs_DL_DPCH_InfoPerRL_SRB_FDD(p_Sf, p_SecondaryScramblingCode) + }, + rl_Information := cs_RL_InfoDef_FDD(p_Dl_TxPower) /* @sic R5s120397 Additional Changes sic@ */ + }; + + template (value) DL_DPCHInfo_r8_FDD cs_F_DPCH_Info_FDD := + { /* @status APPROVED (LTE_IRAT) */ + dl_CommonInformation := cs_DL_CommonInformationF_DPCH_FDD, + dl_Dpch_InfoPerRL := { + dl_FDPCH_InfoPerRL := cs_DL_DPCH_InfoPerRL_FDPCH_FDD + }, + rl_Information := cs_RL_InfoDef_FDD + }; + + template (value) HS_DPCCHInfo_r8 cs_HS_DPCCHInfo := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cqi_RepetitionFactor := 1, + ackNackRepetitionFactor := 1, + mimoStatus := false, + secondaryServing_HS_DSCH_Cell := deactivated + }; + + // ----------------------------------------------------------------------------- + + template (value) DL_DPCHInfo_r8_TDD cs_DL_DPCH_64k_PS_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + dl_CommonInformation := cs_DL_CommonInfo_r8_TDD, + dl_Dpch_InfoPerRL := { + dl_DPCH_InfoPerRL := cs_DL_DPCH_InfoPerRL_r7_64k_PS_TDD + }, + rl_Information := cs_RL_InfoDef_TDD + }; + + template (value) DL_DPCHInfo_r8_TDD cs_DL_DPCH_122_AMR_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + dl_CommonInformation := cs_DL_CommonInfo_r8_TDD, + dl_Dpch_InfoPerRL := { + dl_DPCH_InfoPerRL := cs_DL_DPCH_InfoPerRL_Speech_TDD + }, + rl_Information := cs_RL_InfoDef_TDD /* @sic R5s120397 Additional Changes sic@ */ + }; + + template (value) DL_DPCHInfo_r8_TDD cs_DL_DPCH_PS_and_ConvSpeech_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + dl_CommonInformation := cs_DL_CommonInfo_r8_TDD, + dl_Dpch_InfoPerRL := { + dl_DPCH_InfoPerRL := cs_DL_DPCH_InfoPerRL_r7_PS_and_ConvSpeech_TDD + }, + rl_Information := cs_RL_InfoDef_TDD + }; + + // ----------------------------------------------------------------------------- + + template (value) CphyUlConnectedTrCHList_Type cs_DCH_336_148_UL_Info_FDD(TransportChannelIdentity p_PS_TransportChannelIdentity := tsc_UL_DCH1) := // @sic R5s120070 sic@ + + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_CphyUlConnectedTrCH_FDD_DCH(p_PS_TransportChannelIdentity, cs_DCH_336_TFS_FDD), + cs_CphyUlConnectedTrCH_FDD_DCH(tsc_UL_DCH5, cs_DCH_148_TFS_FDD) + }; + + template (value) CphyDlConnectedTrCHList_Type cs_DCH_336_148_DL_Info_FDD (TransportChannelIdentity p_PS_TransportChannelIdentity := tsc_DL_DCH1) := // @sic R5s120070 sic@ + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_CphyDlConnectedTrCH_FDD_DCH(p_PS_TransportChannelIdentity, cs_DCH_336_TFS_FDD), + cs_CphyDlConnectedTrCH_FDD_DCH(tsc_DL_DCH5, cs_DCH_148_TFS_FDD) + }; + + template (value) CphyDlConnectedTrCHList_Type cs_DCH_148_DL_FDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_CphyDlConnectedTrCH_FDD_DCH(tsc_DL_DCH5, cs_DCH_148_TFS_FDD) + }; + + template (value) CphyUlConnectedTrCHList_TDD_Type cs_DCH_336_148_UL_Info_TDD (TransportChannelIdentity p_PS_TransportChannelIdentity := tsc_UL_DCH1) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_CphyUlConnectedTrCH_TDD_DCH(p_PS_TransportChannelIdentity, cs_DCH_336_TFS_TDD), // @sic R5s130447 sic@ + cs_CphyUlConnectedTrCH_TDD_DCH(tsc_UL_DCH5, cs_DCH_148_TFS_UL_TDD) + }; + + template (value) CphyDlConnectedTrCHList_TDD_Type cs_DCH_148_DL_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_CphyDlConnectedTrCH_TDD_DCH(tsc_DL_DCH5, cs_DCH_148_TFS_DL_TDD) + }; + + template (value) CphyDlConnectedTrCHList_TDD_Type cs_DCH_336_148_DL_Info_TDD (TransportChannelIdentity p_PS_TransportChannelIdentity := tsc_DL_DCH1):= + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_CphyDlConnectedTrCH_TDD_DCH(p_PS_TransportChannelIdentity, cs_DCH_336_TFS_TDD), // @sic R5s130447 sic@ + cs_CphyDlConnectedTrCH_TDD_DCH(tsc_DL_DCH5, cs_DCH_148_TFS_DL_TDD) + }; + + // ----------------------------------------------------------------------------- + + template (value) CphyTrchConfigReq cs_CphyTrchConfigReq_Common_FDD(template (value) SS_ActivationTime p_ActivationTime, + template (omit) CphyUlConnectedTrCHList_Type p_UlconnectedTrCHList := omit, + template (omit) TFCS p_UlTfcs := omit, + template (omit) CphyDlConnectedTrCHList_Type p_DlconnectedTrCHList := omit, + template (omit) TFCS p_DlTfcs := omit, + template (omit) HS_DSCHMACdFlows p_HsDSCHMacdFlows := omit, + template (omit) E_DCHMACdFlows p_E_DCHMacdFlows := omit, + template (omit) EHS_DSCH_Flows p_Ehs_DSCH_Flows := omit, + template (omit) EHS_DSCH_CommonFlows p_Ehs_DSCH_CommonFlows := omit, + template (omit) EHS_DSCH_Flows_r9 p_Ehs_DSCH_Flows_r9 := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + activationTime := p_ActivationTime, + ulconnectedTrCHList := p_UlconnectedTrCHList, + ulTFCS := p_UlTfcs, + dlconnectedTrCHList := p_DlconnectedTrCHList, + dlTFCS := p_DlTfcs, + hsDSCHMacdFlows := p_HsDSCHMacdFlows, + e_DCHMacdFlows := p_E_DCHMacdFlows, + ehs_DSCH_Flows := p_Ehs_DSCH_Flows, + ehs_DSCH_CommonFlows := p_Ehs_DSCH_CommonFlows, + e_DCHMacd_CommonFlows := omit, + ehs_DSCH_Flows_r9 := p_Ehs_DSCH_Flows_r9, // @sic R5s110176 Baseline Moving sic@ + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) CphyTrchConfigReq_TDD cs_CphyTrchConfigReq_Common_TDD(template (value) SS_ActivationTime p_ActivationTime, + template (omit) CphyUlConnectedTrCHList_TDD_Type p_UlconnectedTrCHList := omit, + template (omit) TFCS p_UlTfcs := omit, + template (omit) CphyDlConnectedTrCHList_TDD_Type p_DlconnectedTrCHList := omit, + template (omit) TFCS p_DlTfcs := omit, + template (omit) HS_DSCHMACdFlows_TDD p_HsDSCHMacdFlows := omit, + template (omit) E_DCHMACdFlows_TDD p_E_DCHMacdFlows := omit, + template (omit) EHS_DSCH_Flows p_Ehs_DSCH_Flows := omit, + template (omit) EHS_DSCH_CommonFlows p_Ehs_DSCH_CommonFlows := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + activationTime := p_ActivationTime, + ulconnectedTrCHList := p_UlconnectedTrCHList, + ulTFCS := p_UlTfcs, + dlconnectedTrCHList := p_DlconnectedTrCHList, + dlTFCS := p_DlTfcs, + hsDSCHMacdFlows := p_HsDSCHMacdFlows, + e_DCHMacdFlows := p_E_DCHMacdFlows, + ehs_DSCH_Flows := p_Ehs_DSCH_Flows, + ehs_DSCH_CommonFlows := p_Ehs_DSCH_CommonFlows, + e_DCHMacd_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, // @sic R5s110176 Baseline Moving sic@ + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) CphyTrchConfigReq cs_CphyTrchConfigReq_UL_TrCh_FDD(template (value) SS_ActivationTime p_ActivationTime, + template (omit) CphyUlConnectedTrCHList_Type p_UlconnectedTrCHList, + template (omit) TFCS p_UlTfcs) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_CphyTrchConfigReq_Common_FDD(p_ActivationTime, p_UlconnectedTrCHList, p_UlTfcs); + + template (value) CphyTrchConfigReq cs_CphyTrchConfigReq_DL_TrCh_FDD(template (value) SS_ActivationTime p_ActivationTime, + template (omit) CphyDlConnectedTrCHList_Type p_DlconnectedTrCHList, + template (omit) TFCS p_DlTfcs) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_CphyTrchConfigReq_Common_FDD(p_ActivationTime, omit, omit, p_DlconnectedTrCHList, p_DlTfcs); + + template (value) CphyTrchConfigReq cs_CphyTrchConfigReq_HS_DSCHMacdFlows_FDD(template (value) SS_ActivationTime p_ActivationTime, + template (omit) HS_DSCHMACdFlows p_HsDSCHMacdFlows) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_CphyTrchConfigReq_Common_FDD(p_ActivationTime, omit, omit, omit, omit, p_HsDSCHMacdFlows); + + // ----------------------------------------------------------------------------- + + template (value) CphyTrchConfigReq_TDD cs_CphyTrchConfigReq_UL_TrCh_TDD(template (value) SS_ActivationTime p_ActivationTime, + template (omit) CphyUlConnectedTrCHList_TDD_Type p_UlconnectedTrCHList, + template (omit) TFCS p_UlTfcs) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_CphyTrchConfigReq_Common_TDD(p_ActivationTime, p_UlconnectedTrCHList, p_UlTfcs); + + template (value) CphyTrchConfigReq_TDD cs_CphyTrchConfigReq_DL_TrCh_TDD(template (value) SS_ActivationTime p_ActivationTime, + template (omit) CphyDlConnectedTrCHList_TDD_Type p_DlconnectedTrCHList, + template (omit) TFCS p_DlTfcs) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_CphyTrchConfigReq_Common_TDD(p_ActivationTime, omit, omit, p_DlconnectedTrCHList, p_DlTfcs); + + template (value) CphyTrchConfigReq_TDD cs_CphyTrchConfigReq_HS_DSCHMacdFlows_TDD(template (value) SS_ActivationTime p_ActivationTime, + template (omit) HS_DSCHMACdFlows_TDD p_HSDSCHMacdFlows) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_CphyTrchConfigReq_Common_TDD(p_ActivationTime, omit, omit, omit, omit, p_HSDSCHMacdFlows); + + + // ----------------------------------------------------------------------------- + + template (value) TrCHInfo cs_TrCHInfo_Common_FDD(template (omit) UlConnectedTrCHList_Type p_UlconnectedTrCHList, + template (omit) TFCS p_UlTfcs, + template (omit) DlConnectedTrCHList_Type p_DlconnectedTrCHList, + template (omit) TFCS p_DlTfcs, + template (omit) HS_DSCHMACdFlows p_HsDSCHMacdFlows := omit, + template (omit) EHS_DSCH_Flows p_Ehs_DSCH_Flows := omit, + template (omit) EHS_DSCH_CommonFlows p_Ehs_DSCH_CommonFlows := omit, + template (omit) EHS_DSCH_Flows_r9 p_Ehs_DSCH_Flows_r9 := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + ulconnectedTrCHList := p_UlconnectedTrCHList, + ulTFCS := p_UlTfcs, + dlconnectedTrCHList := p_DlconnectedTrCHList, + dlTFCS := p_DlTfcs, + hsDSCHMacdFlows := p_HsDSCHMacdFlows, + ehs_DSCH_Flows := p_Ehs_DSCH_Flows, + ehs_DSCH_CommonFlows := p_Ehs_DSCH_CommonFlows, + ehs_DSCH_Flows_r9 := p_Ehs_DSCH_Flows_r9, // @sic R5s110176 Baseline Moving sic@ + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCHInfo cs_TrCHInfo_UL_TrCh_FDD(template (omit) UlConnectedTrCHList_Type p_UlconnectedTrCHList, + template (omit) TFCS p_UlTfcs) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_TrCHInfo_Common_FDD(p_UlconnectedTrCHList, p_UlTfcs, omit, omit); + + template (value) TrCHInfo cs_TrCHInfo_DL_TrCh_FDD(template (omit) DlConnectedTrCHList_Type p_DlconnectedTrCHList, + template (omit) TFCS p_DlTfcs) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_TrCHInfo_Common_FDD(omit, omit, p_DlconnectedTrCHList, p_DlTfcs); + + template (value) TrCHInfo cs_TrCHInfo_HS_DSCHMacdFlows_FDD(template (value) HS_DSCHMACdFlows p_HsDSCHMacdFlows) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_TrCHInfo_Common_FDD(omit, omit, omit, omit, p_HsDSCHMacdFlows); + + template (value) TrCHInfo cs_TrCHInfo_Common_FDD_r9(template (omit) UlConnectedTrCHList_Type p_UlconnectedTrCHList, + template (omit) TFCS p_UlTfcs, + template (omit) DlConnectedTrCHList_Type p_DlconnectedTrCHList, + template (omit) TFCS p_DlTfcs, + template (omit) HS_DSCHMACdFlows p_HsDSCHMacdFlows := omit, + template (omit) EHS_DSCH_Flows_r9 p_Ehs_DSCH_Flows := omit) := + /* @status APPROVED (UTRAN) */ + cs_TrCHInfo_Common_FDD(p_UlconnectedTrCHList, p_UlTfcs, p_DlconnectedTrCHList, p_DlTfcs, p_HsDSCHMacdFlows, -, -, p_Ehs_DSCH_Flows); + + template (value) TrCHInfo cs_TrChInfoUL_122_AMR_FDD := cs_TrCHInfo_UL_TrCh_FDD(cs_TrChInfoTrCHListUL_122_AMR_FDD, cs_TFCS_Cmpl0_1_11_12_13_23_Rx); /* @status APPROVED (LTE_A, LTE_IRAT) */ + template (value) TrCHInfo cs_TrChInfoDL_122_AMR_FDD := cs_TrCHInfo_DL_TrCh_FDD(cs_TrChInfoTrCHListDL_122_AMR_FDD, cs_TFCS_Cmpl0_1_11_12_13_23_Tx(cs_PowerOffsetInfoBelow64k)); /* @status APPROVED (LTE_A, LTE_IRAT) */ + + // ----------------------------------------------------------------------------- + + template (value) UlConnectedTrCH_Type cs_UlConnectedTrCH(integer p_Trchid, + template (value) CommonOrDedicatedTFS p_CommonOrDedicatedTFS) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + trchid := p_Trchid, + transportChannelInfo := p_CommonOrDedicatedTFS + }; + + template (value) DlConnectedTrCH_Type cs_DlConnectedTrCH(integer p_Trchid, + template (value) CommonOrDedicatedTFS p_CommonOrDedicatedTFS) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + trchid := p_Trchid, + transportChannelInfo := p_CommonOrDedicatedTFS + }; + + template (value) UlConnectedTrCH_TDD_Type cs_UlConnectedTrCH_TDD(integer p_Trchid, + template (value) CommonOrDedicatedTFS_TDD p_CommonOrDedicatedTFS) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + trchid := p_Trchid, + transportChannelInfo := p_CommonOrDedicatedTFS + }; + + template (value) DlConnectedTrCH_TDD_Type cs_DlConnectedTrCH_TDD(integer p_Trchid, + template (value) CommonOrDedicatedTFS_TDD p_CommonOrDedicatedTFS) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + trchid := p_Trchid, + transportChannelInfo := p_CommonOrDedicatedTFS + }; + + template (value) UlConnectedTrCHList_Type cs_TrChInfoTrCHListUL_122_AMR_FDD := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_UlConnectedTrCH(tsc_UL_DCH1, cs_DCH_81_TFS_FDD), + cs_UlConnectedTrCH(tsc_UL_DCH2, cs_DCH_103_TFS_FDD), + cs_UlConnectedTrCH(tsc_UL_DCH3, cs_DCH_60_TFS_FDD), + cs_UlConnectedTrCH(tsc_UL_DCH5, cs_DCH_148_TFS_FDD) + }; + + template (value) UlConnectedTrCHList_Type cs_TrChInfoTrCHListUL_336_148_FDD(TransportChannelIdentity p_PS_TransportChannelIdentity := tsc_UL_DCH1) := // @sic R5s120070 sic@ + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_UlConnectedTrCH(p_PS_TransportChannelIdentity, cs_DCH_336_TFS_FDD), + cs_UlConnectedTrCH(tsc_UL_DCH5, cs_DCH_148_TFS_FDD) + }; + + template (value) DlConnectedTrCHList_Type cs_TrChInfoTrCHListDL_34_StandAlone_FDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_DlConnectedTrCH(tsc_DL_DCH5, cs_DCH_148_TFS_FDD) + }; + + template (value) DlConnectedTrCHList_Type cs_TrChInfoTrCHListDL_122_AMR_FDD := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_DlConnectedTrCH(tsc_DL_DCH1, cs_DCH_81_TFS_DL_FDD), + cs_DlConnectedTrCH(tsc_DL_DCH2, cs_DCH_103_TFS_FDD), + cs_DlConnectedTrCH(tsc_DL_DCH3, cs_DCH_60_TFS_FDD), + cs_DlConnectedTrCH(tsc_DL_DCH5, cs_DCH_148_TFS_FDD) + }; + + template (value) DlConnectedTrCHList_Type cs_TrChInfoTrCHListDL_336_148_FDD(TransportChannelIdentity p_PS_TransportChannelIdentity := tsc_DL_DCH1) := // @sic R5s120070 sic@ + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_DlConnectedTrCH(p_PS_TransportChannelIdentity, cs_DCH_336_TFS_FDD), + cs_DlConnectedTrCH(tsc_DL_DCH5, cs_DCH_148_TFS_FDD) + }; + + // ----------------------------------------------------------------------------- + + template (value) TrCHInfo_TDD cs_TrCHInfo_Common_TDD(template (omit) UlConnectedTrCHList_TDD_Type p_UlconnectedTrCHList_TDD, + template (omit) TFCS p_UlTfcs, + template (omit) DlConnectedTrCHList_TDD_Type p_DlconnectedTrCHList_TDD, + template (omit) TFCS p_DlTfcs, + template (omit) HS_DSCHMACdFlows_TDD p_HsDSCHMacdFlows := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + ulconnectedTrCHList := p_UlconnectedTrCHList_TDD, + ulTFCS := p_UlTfcs, + dlconnectedTrCHList := p_DlconnectedTrCHList_TDD, + dlTFCS := p_DlTfcs, + hsDSCHMacdFlows := p_HsDSCHMacdFlows, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, + relAspTypeExtension := omit + }; + + template (value) TrCHInfo_TDD cs_TrCHInfo_UL_TrCh_TDD(template (omit) UlConnectedTrCHList_TDD_Type p_UlconnectedTrCHList, + template (omit) TFCS p_UlTfcs) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_TrCHInfo_Common_TDD(p_UlconnectedTrCHList, p_UlTfcs, omit, omit); + + template (value) TrCHInfo_TDD cs_TrCHInfo_DL_TrCh_TDD(template (omit) DlConnectedTrCHList_TDD_Type p_DlconnectedTrCHList, + template (omit) TFCS p_DlTfcs) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_TrCHInfo_Common_TDD(omit, omit, p_DlconnectedTrCHList, p_DlTfcs); + + template (value) TrCHInfo_TDD cs_TrCHInfo_HS_DSCHMacdFlows_TDD(template (value) HS_DSCHMACdFlows_TDD p_HsDSCHMacdFlows) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_TrCHInfo_Common_TDD(omit, omit, omit, omit, p_HsDSCHMacdFlows); + + template (value) TrCHInfo_TDD cs_TrChInfoUL_122_AMR_TDD := cs_TrCHInfo_UL_TrCh_TDD(cs_TrChInfoTrCHListUL_122_AMR_TDD, cs_TFCS_Cmpl0_1_11_12_13_23_Rx); /* @status APPROVED (LTE_A, LTE_IRAT) */ + template (value) TrCHInfo_TDD cs_TrChInfoDL_122_AMR_TDD := cs_TrCHInfo_DL_TrCh_TDD(cs_TrChInfoTrCHListDL_122_AMR_TDD, cs_TFCS_Cmpl0_1_11_12_13_23_Tx(cs_PowerOffsetInfo_TDD)); /* @status APPROVED (LTE_A, LTE_IRAT) */ + template (value) TrCHInfo_TDD cs_TrChInfoUL_336_148_TDD := cs_TrCHInfo_UL_TrCh_TDD(cs_TrChInfoTrCHListUL_336_148_TDD, cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx); /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + template (value) TrCHInfo_TDD cs_TrChInfoDL_336_148_TDD := cs_TrCHInfo_DL_TrCh_TDD(cs_TrChInfoTrCHListDL_336_148_TDD, cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Tx(cs_PowerOffsetInfo_TDD)); /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + + + // ----------------------------------------------------------------------------- + + template (value) UlConnectedTrCHList_TDD_Type cs_TrChInfoTrCHListUL_122_AMR_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_UlConnectedTrCH_TDD(tsc_UL_DCH1, cs_DCH_81_TFS_TDD), + cs_UlConnectedTrCH_TDD(tsc_UL_DCH2, cs_DCH_103_TFS_TDD), + cs_UlConnectedTrCH_TDD(tsc_UL_DCH3, cs_DCH_60_TFS_TDD), + cs_UlConnectedTrCH_TDD(tsc_UL_DCH5, cs_DCH_148_TFS_UL_TDD) + }; + + template (value) UlConnectedTrCHList_TDD_Type cs_TrChInfoTrCHListUL_336_148_TDD (TransportChannelIdentity p_PS_TransportChannelIdentity := tsc_UL_DCH1) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_UlConnectedTrCH_TDD(p_PS_TransportChannelIdentity, cs_DCH_336_TFS_TDD), + cs_UlConnectedTrCH_TDD(tsc_UL_DCH5, cs_DCH_148_TFS_UL_TDD) + }; + + template (value) DlConnectedTrCHList_TDD_Type cs_TrChInfoTrCHListDL_34_StandAlone_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_DlConnectedTrCH_TDD(tsc_DL_DCH5, cs_DCH_148_TFS_DL_TDD) + }; + + template (value) DlConnectedTrCHList_TDD_Type cs_TrChInfoTrCHListDL_122_AMR_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_DlConnectedTrCH_TDD(tsc_DL_DCH1, cs_DCH_81_TFS_DL_TDD), + cs_DlConnectedTrCH_TDD(tsc_DL_DCH2, cs_DCH_103_TFS_TDD), + cs_DlConnectedTrCH_TDD(tsc_DL_DCH3, cs_DCH_60_TFS_TDD), + cs_DlConnectedTrCH_TDD(tsc_DL_DCH5, cs_DCH_148_TFS_DL_TDD) + }; + + template (value) DlConnectedTrCHList_TDD_Type cs_TrChInfoTrCHListDL_336_148_TDD (TransportChannelIdentity p_PS_TransportChannelIdentity := tsc_DL_DCH1) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_DlConnectedTrCH_TDD(p_PS_TransportChannelIdentity, cs_DCH_336_TFS_TDD), // @sic R5s130447 R5s130704 sic@ + cs_DlConnectedTrCH_TDD(tsc_DL_DCH5, cs_DCH_148_TTI_40_TFS_TDD) + }; + + //---------------------------------------------------------------------------- + + template (value) SS_AddOrReconfMAC_dFlow cs_SS_AddOrReconfMAC_dFlow(template (value) SS_MAC_hs_AddReconfQueue p_SS_MAC_hs_AddReconfQueue) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + mac_hs_AddReconfQueue_List := { + { mac_hs_AddReconfQueue := p_SS_MAC_hs_AddReconfQueue } + }, + mac_hs_DelQueue_List := omit + }; + + template (value) SS_AddOrReconfMAC_dFlow cs_SS_AddOrReconfMAC_dFlow2(template (value) SS_MAC_hs_AddReconfQueue p_SS_MAC_hs_AddReconfQueue1, + template (value) SS_MAC_hs_AddReconfQueue p_SS_MAC_hs_AddReconfQueue2 ) := + { /* @status APPROVED (LTE_IRAT) */ + mac_hs_AddReconfQueue_List := { + { mac_hs_AddReconfQueue := p_SS_MAC_hs_AddReconfQueue1 }, + { mac_hs_AddReconfQueue := p_SS_MAC_hs_AddReconfQueue2 } + }, + mac_hs_DelQueue_List := omit + }; + + template (value) SS_MAC_hs_AddReconfQueue cs_SS_MAC_hs_AddReconfQueue(template (value) MAC_hs_AddReconfQueue p_MAC_hs_AddReconfQueue) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + mAChsAddReconfQueue := p_MAC_hs_AddReconfQueue, + logicalChannelList := { + tsc_DL_DTCH1 + }, + priority := 0, + discardTimer := omit + }; + + template (value) SS_MAC_hs_AddReconfQueue cs_SS_MAC_hs_AddReconfQueue_DCCH(template (value) MAC_hs_AddReconfQueue p_MAC_hs_AddReconfQueue) := + { /* @status APPROVED (LTE_IRAT) */ + mAChsAddReconfQueue := p_MAC_hs_AddReconfQueue, + logicalChannelList := { + tsc_DL_DCCH1, + tsc_DL_DCCH2, + tsc_DL_DCCH3, + tsc_DL_DCCH4 + }, + priority := 7, + discardTimer := omit + }; + + template (value) RB_LogCH_Mapping cs_RB25_LogChMapping := cs_RB_LogCH_Mapping(tsc_UL_DTCH1, tsc_DL_DTCH1); /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + + template (value) HS_DSCHMACdFlows cs_HS_DSCHMacdFlows(template (value) HARQ_Info_r7 p_HARQ_Info, + template (value) SS_AddOrReconfMAC_dFlow p_SS_AddOrReconfMAC_dFlow) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + harqInfo := omit, + addOrReconfMACdFlow := p_SS_AddOrReconfMAC_dFlow, + ackNackRepetitionFactor := 1, // @sic R5s120397 sic@ + harqInfo_r7 := p_HARQ_Info + }; + + template (value) HS_DSCHMACdFlows_TDD cs_HS_DSCHMacdFlows_TDD(template (value) HARQ_Info_r7 p_HARQ_Info, + template (value) SS_AddOrReconfMAC_dFlow p_SS_AddOrReconfMAC_dFlow) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + harqInfo := omit, + addOrReconfMACdFlow := p_SS_AddOrReconfMAC_dFlow, + harqInfo_r7 := p_HARQ_Info + }; + + template (value) RL_Setup_FDD_PhysicalChannelInfo_Type cs_DL_Cell_DCH_HS_DSCH_PS_RAB_FDD(HSDSCH_physical_layer_category p_HSDSCH_physical_layer_category, + template (value) DL_HSPDSCH_Information_r8 p_DL_HSPDSCH_Information_r8, + boolean p_Sttd_Indicator) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + /* @sic R5s120397 Additional Changes sic@ */ + hS_PDSCHInfo := { + r8 := { + hS_PDSCH_Info := { + hSDSCHPhysicalLayerCategory := p_HSDSCH_physical_layer_category, + hsdsch_physical_layer_category_ext := omit,//Since mach-ehs is not configured + hsdsch_physical_layer_category_ext2 := omit,//Since dual cell is not configured + h_RNTI := tsc_H_RNTI, + dlHSPDSCHInformation := p_DL_HSPDSCH_Information_r8, + sttd_Indicator := p_Sttd_Indicator, + hs_SCCH_TxPower := tsc_DL_hs_SCCH_TxPower, + ss_DTX_Info := omit, + hs_scch_LessInfo := omit, + mimo_Parameters := omit, + hs_DPCCHToFollow := omit, // DEFAULT TRUE + hs_SCCH_SttdIndicator := omit // DEFAULT FALSE @sic R5-120613 sic@ + } + } + } + }; + + template (value) RL_Setup_FDD_PhysicalChannelInfo_Type cs_DL_Cell_DCH_HS_DSCH_PS_RAB_r9_FDD(HSDSCH_physical_layer_category p_HSDSCH_physical_layer_category, + template (value) DL_HSPDSCH_Information_r9 p_DL_HSPDSCH_Information_r9, + boolean p_Sttd_Indicator) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + /* @sic R5s120397 Additional Changes sic@ */ + hS_PDSCHInfo := { + r9 := { + hS_PDSCH_Info := { + hSDSCHPhysicalLayerCategory := p_HSDSCH_physical_layer_category, + hsdsch_physical_layer_category_ext := omit, //Since mach-ehs is not configured + hsdsch_physical_layer_category_ext2 := omit, //Since dual cell is not configured + hsdsch_physical_layer_category_ext3 := omit, //Since dual cell + MIMO is not configured + h_RNTI := tsc_H_RNTI, + dlHSPDSCHInformation := p_DL_HSPDSCH_Information_r9, + sttd_Indicator := p_Sttd_Indicator, + hs_SCCH_TxPower := tsc_DL_hs_SCCH_TxPower, + ss_DTX_Info := omit, + hs_scch_LessInfo := omit, + mimo_Parameters := omit, + hs_DPCCHToFollow := omit, // DEFAULT TRUE + hs_SCCH_SttdIndicator := omit // DEFAULT FALSE @sic R5-120613 sic@ + } + } + } + }; + + template (value) RL_Setup_TDD_PhysicalChannelInfo_Type cs_DL_Cell_DCH_HS_DSCH_PS_RAB_TDD(HSDSCH_physical_layer_category p_HSDSCH_physical_layer_category, + template (value) DL_HSPDSCH_Information_r9 p_DL_HSPDSCH_Information_r9, + boolean p_Sttd_Indicator) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + /* @sic R5s120397 Additional Changes sic@ */ + hS_PDSCHInfo := { + r9 := { + hS_PDSCH_Info := { + hSDSCHPhysicalLayerCategory := p_HSDSCH_physical_layer_category, + hsdsch_physical_layer_category_ext := omit,//Since mach-ehs is not configured + multiCarrier_physical_layer_category := omit,//Since dual cell is not configured + multiCarrier_physicallayer_category_extension := omit, + h_RNTI := tsc_H_RNTI, + dlHSPDSCHInformation := p_DL_HSPDSCH_Information_r9, + sttd_Indicator := p_Sttd_Indicator, + hs_SCCH_TxPower := tsc_DL_hs_SCCH_TxPower, + mimo_Parameters := omit, + hs_PDSCHChannelisationCodeInfo := {cs_HS_PDSCHChannelisationCodeInfo_TS5}, //@sic R5-130315 sic@ + hs_DPCCHToFollow := omit, // DEFAULT TRUE + controlChannelDRXInfo_TDD128 := omit, //@sic R5s130452 sic@ + sps_Information_TDD128 := omit + // @sic R5-130613 R5-133682 sic@ + } + } + } + }; + + template (value) HS_PDSCH_ChannelisationCodeInfo_LCR cs_HS_PDSCHChannelisationCodeInfo_TS4 := + { + timeslotNumber := 4, + startCode := cc16_1, + stopCode := cc16_16 + }; + + template (value) HS_PDSCH_ChannelisationCodeInfo_LCR cs_HS_PDSCHChannelisationCodeInfo_TS5 := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + timeslotNumber := 5, + startCode := cc16_1, + stopCode := cc16_16 + }; + + //---------------------------------------------------------------------------- + + template (value) CommonOrDedicatedTFS cs_DCH_60_TFS_FDD := + { /* transport format set for RAB subflow#3 on dedicated channel; TS 34.108 subcl. 6.10.2.4.1.4: + TTI = 20 ms; + two transport formats: TransportBlocks = 0, TB size = 60 bits; TansportBlock = 1, Size = 60. + coding = convolutional; + coding rate = 1/2; + CRCsize = N/A; + RateMatching = 235 */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + tti := { + tti20 := { + { + tb_Size := 60, + numberOfTbSizeList := { + { zero := NULL }, + { one := NULL } + }, + logicalChannelList := { + allSizes := NULL + } + } + } + }, + semistaticTF_Information := { + channelCodingType := { + convolutional := half + }, + rateMatchingAttribute := 235, + crc_Size := crc0 + } + }; + + template (value) CommonOrDedicatedTFS_TDD cs_DCH_60_TFS_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + tfsMode := {dedicatedTransChTFS := cs_DCH_60_TFS_UE} + }; + + //---------------------------------------------------------------------------- + + template (value) CommonOrDedicatedTFS cs_DCH_81_TFS_DL_FDD := + { /* transport format set for RAB subflow#1 on dedicated channel; TS 34.108 cl. 6.10.2.4.1.4: + TTI = 20 ms; + three transport formats: TransportBlocks = 1, TB size = 0 bits; TransportBlocks = 1, TB size = 39 bits; TansportBlock = 1, Size = 81. + coding = convolutional; + coding rate = 1/3; + CRCsize = 12; + RateMatching = 200 */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + tti := { + tti20 := { + { + tb_Size := 0, + numberOfTbSizeList := { + { one := NULL } + }, + logicalChannelList := { + allSizes := NULL + } + }, + { + tb_Size := 39, + numberOfTbSizeList := { + { one := NULL } + }, + logicalChannelList := { + allSizes := NULL + } + }, + { + tb_Size := 81, + numberOfTbSizeList := { + { one := NULL } + }, + logicalChannelList := { + allSizes := NULL + } + } + } + }, + semistaticTF_Information := { + channelCodingType := { + convolutional := third + }, + rateMatchingAttribute := 200, + crc_Size := crc12 + } + }; + + template (value) CommonOrDedicatedTFS_TDD cs_DCH_81_TFS_DL_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + tfsMode := {dedicatedTransChTFS := cs_DCH_81_TFS_DL_UE} + }; + + //---------------------------------------------------------------------------- + + template (value) CommonOrDedicatedTFS cs_DCH_81_TFS_FDD := + { /* transport format set for RAB subflow#1 on dedicated channel; TS 34.108 cl. 6.10.2.4.1.4: + TTI = 20 ms; + three transport formats: TransportBlocks = 0, TB size = 81 bits; TransportBlocks = 1, TB size = 39 bits; TansportBlock = 1, Size = 81. + coding = convolutional; + coding rate = 1/3; + CRCsize = 12; + RateMatching = 200 */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + tti := { + tti20 := { + { + tb_Size := 81, + numberOfTbSizeList := { + { zero := NULL } + }, + logicalChannelList := { + allSizes := NULL + } + }, + { + tb_Size := 39, + numberOfTbSizeList := { + { one := NULL } + }, + logicalChannelList := { + allSizes := NULL + } + }, + { + tb_Size := 81, + numberOfTbSizeList := { + { one := NULL } + }, + logicalChannelList := { + allSizes := NULL + } + } + } + }, + semistaticTF_Information := { + channelCodingType := { + convolutional := third + }, + rateMatchingAttribute := 200, + crc_Size := crc12 + } + }; + + template (value) CommonOrDedicatedTFS_TDD cs_DCH_81_TFS_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + tfsMode := {dedicatedTransChTFS := cs_DCH_81_TFS_UE} + }; + + //---------------------------------------------------------------------------- + + template (value) CommonOrDedicatedTFS cs_DCH_103_TFS_FDD := + { /* transport format set for RAB subflow#2 on dedicated channel; TS 34.108 cl. 6.10.2.4.1.4: + TTI = 20 ms; + two transport formats: TransportBlocks = 0, TB size = 103 bits; TansportBlock = 1, Size = 103. + coding = convolutional; + coding rate = 1/3; + CRCsize = N/A; + RateMatching = 190 */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + tti := { + tti20 := { + { + tb_Size := 103, + numberOfTbSizeList := { + { zero := NULL }, + { one := NULL } + }, + logicalChannelList := { + allSizes := NULL + } + } + } + }, + semistaticTF_Information := { + channelCodingType := { + convolutional := third + }, + rateMatchingAttribute := 190, + crc_Size := crc0 + } + }; + + template (value) CommonOrDedicatedTFS_TDD cs_DCH_103_TFS_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + tfsMode := {dedicatedTransChTFS := cs_DCH_103_TFS_UE} + }; + + //---------------------------------------------------------------------------- + + template (value) CommonOrDedicatedTFS cs_DCH_148_TFS_FDD := + { /* transport format set for signalling bearer on dedicated channel; TS 34.108 cl. 6.10.2.4.1.2: + TTI = 40 ms; + two transport formats: TransportBlocks = 1, TB size = 148 bits; TansportBlock = 0, Size = 148. rlc_Size = RLC PDU size =148 bits. + coding = convolutional; + coding rate = 1/3; + CRCsize = 16; + RateMatching = 170 */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + tti := { + tti40 := { + { + tb_Size := 148, + numberOfTbSizeList := { + { zero := NULL }, + { one := NULL } + }, + logicalChannelList := { + allSizes := NULL + } + } + } + }, + semistaticTF_Information := { + channelCodingType := { + convolutional := third + }, + rateMatchingAttribute := 170, + crc_Size := crc16 + } + }; + + template (value) CommonOrDedicatedTFS_TDD cs_DCH_148_TFS_UL_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + tfsMode := {dedicatedTransChTFS := cs_DCH_148_TFS_UE_UL_Common(170)} // @sic R5s120853 R5s130345 sic@ + }; + + template (value) CommonOrDedicatedTFS_TDD cs_DCH_148_TFS_DL_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + tfsMode := {dedicatedTransChTFS := cs_DCH_148_TFS_DL_TDD_UE} + }; + + //---------------------------------------------------------------------------- + + template (value) CommonOrDedicatedTFS cs_DCH_336_TFS_FDD := + { /* ASN.1 Type Constraint for transport format set for transport channel used in CreateCell_DCH_64kPS_RAB_SRB for FDD. + TTI = 20 ms; + 5 transport formats: TB size always=336 bits; TransportBlocks = 0,1,2,3 and 4 ; + coding = turbo; + CRCsize = 16; + RateMatching = 150 */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + tti := { + tti20 := { + { + tb_Size := 336, + numberOfTbSizeList := { + { zero := NULL }, + { one := NULL }, + { small := 2 }, + { small := 3 }, + { small := 4 } + }, + logicalChannelList := { + allSizes := NULL + } + } + } + }, + semistaticTF_Information := { + channelCodingType := { + turbo := NULL + }, + rateMatchingAttribute := 150, + crc_Size := crc16 + } + }; + + template (value) CommonOrDedicatedTFS_TDD cs_DCH_336_TFS_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + tfsMode := {dedicatedTransChTFS := cs_DCH_336_TFS_UE} + }; + + //---------------------------------------------------------------------------- + + template (value) TrCH_LogCHMappingList1 cs_TrLogMappingUL_4DCCH_1DTCH(integer p_RB_Identity, + TransportChannelIdentity p_PS_TransportChannelIdentity := tsc_UL_DCH1, + LogicalChannelIdentity p_LogicalChannelIdentity := tsc_UL_DTCH1) := // @sic R5s120070 R5s120455 sic@ + { /* @param p_RB_Identity .. tsc_RB20 for PS RAB, tsc_RB25 for HSDPA RAB */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + ulconnectedTrCHList := { + { + trchid := p_PS_TransportChannelIdentity, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_UL(dch, p_LogicalChannelIdentity, dTCH, p_RB_Identity) + } + }, + { + trchid := tsc_UL_DCH5, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_UL(dch, tsc_UL_DCCH1, dCCH, tsc_RB1), + cs_TrCH_LogicalChannelMapping_UL(dch, tsc_UL_DCCH2, dCCH, tsc_RB2), + cs_TrCH_LogicalChannelMapping_UL(dch, tsc_UL_DCCH3, dCCH, tsc_RB3), + cs_TrCH_LogicalChannelMapping_UL(dch, tsc_UL_DCCH4, dCCH, tsc_RB4) + } + } + }, + dlconnectedTrCHList := omit, + dlconnectedMACdFlows := omit, + dlconnectedMAC_ehsFlows := omit, + dlconnectedMAC_ehsCommonFlows := omit, + dlconnectedMAC_ehsFlowsDC := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCH_LogCHMappingList1_TDD cs_TrLogMappingUL_4DCCH_1DTCH_TDD(integer p_RB_Identity, + TransportChannelIdentity p_PS_TransportChannelIdentity := tsc_UL_DCH1, + LogicalChannelIdentity p_LogicalChannelIdentity := tsc_UL_DTCH1) := // @sic R5s120070 R5s120455 sic@ + { /* @param p_RB_Identity .. tsc_RB20 for PS RAB, tsc_RB25 for HSDPA RAB */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + ulconnectedTrCHList := { + { + trchid := p_PS_TransportChannelIdentity, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_UL_TDD(dch, p_LogicalChannelIdentity, dTCH, p_RB_Identity) + } + }, + { + trchid := tsc_UL_DCH5, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_UL_TDD(dch, tsc_UL_DCCH1, dCCH, tsc_RB1), + cs_TrCH_LogicalChannelMapping_UL_TDD(dch, tsc_UL_DCCH2, dCCH, tsc_RB2), + cs_TrCH_LogicalChannelMapping_UL_TDD(dch, tsc_UL_DCCH3, dCCH, tsc_RB3), + cs_TrCH_LogicalChannelMapping_UL_TDD(dch, tsc_UL_DCCH4, dCCH, tsc_RB4) + } + } + }, + dlconnectedTrCHList := omit, + dlconnectedMACdFlows := omit, + dlconnectedMAC_ehsFlows := omit, + dlconnectedMAC_ehsCommonFlows := omit, + dlconnectedMAC_ehsFlowsDC := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCH_LogCHMappingList1 cs_TrLogMappingDL_4DCCH_1DTCH_PS(TransportChannelIdentity p_PS_TransportChannelIdentity := tsc_DL_DCH1, + LogicalChannelIdentity p_LogicalChannelIdentity := tsc_DL_DTCH1) := // @sic R5s120070 R5s120455 sic@ + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + ulconnectedTrCHList := omit, + dlconnectedTrCHList := { + { + trchid := p_PS_TransportChannelIdentity, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL(dch, p_LogicalChannelIdentity , dTCH, tsc_MAC_LogicalChannelPrio8, tsc_RB20) + } + }, + { + trchid := tsc_DL_DCH5, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL(dch, tsc_DL_DCCH1, dCCH, tsc_MAC_LogicalChannelPrio1, tsc_RB1), + cs_TrCH_LogicalChannelMapping_DL(dch, tsc_DL_DCCH2, dCCH, tsc_MAC_LogicalChannelPrio2, tsc_RB2), + cs_TrCH_LogicalChannelMapping_DL(dch, tsc_DL_DCCH3, dCCH, tsc_MAC_LogicalChannelPrio3, tsc_RB3), + cs_TrCH_LogicalChannelMapping_DL(dch, tsc_DL_DCCH4, dCCH, tsc_MAC_LogicalChannelPrio4, tsc_RB4) + } + } + }, + dlconnectedMACdFlows := omit, + dlconnectedMAC_ehsFlows := omit, + dlconnectedMAC_ehsCommonFlows := omit, + dlconnectedMAC_ehsFlowsDC := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCH_LogCHMappingList1_TDD cs_TrLogMappingDL_4DCCH_1DTCH_PS_TDD(TransportChannelIdentity p_PS_TransportChannelIdentity := tsc_DL_DCH1, + LogicalChannelIdentity p_LogicalChannelIdentity := tsc_DL_DTCH1) := // @sic R5s120070 R5s120455 sic@ + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + ulconnectedTrCHList := omit, + dlconnectedTrCHList := { + { + trchid := p_PS_TransportChannelIdentity, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL_TDD(dch, p_LogicalChannelIdentity , dTCH, tsc_MAC_LogicalChannelPrio8, tsc_RB20) + } + }, + { + trchid := tsc_DL_DCH5, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL_TDD(dch, tsc_DL_DCCH1, dCCH, tsc_MAC_LogicalChannelPrio1, tsc_RB1), + cs_TrCH_LogicalChannelMapping_DL_TDD(dch, tsc_DL_DCCH2, dCCH, tsc_MAC_LogicalChannelPrio2, tsc_RB2), + cs_TrCH_LogicalChannelMapping_DL_TDD(dch, tsc_DL_DCCH3, dCCH, tsc_MAC_LogicalChannelPrio3, tsc_RB3), + cs_TrCH_LogicalChannelMapping_DL_TDD(dch, tsc_DL_DCCH4, dCCH, tsc_MAC_LogicalChannelPrio4, tsc_RB4) + } + } + }, + dlconnectedMACdFlows := omit, + dlconnectedMAC_ehsFlows := omit, + dlconnectedMAC_ehsCommonFlows := omit, + dlconnectedMAC_ehsFlowsDC := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCH_LogCHMappingList1 cs_TrLogMappingUL_4DCCH_3DTCH := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + ulconnectedTrCHList := { + { + trchid := tsc_UL_DCH1, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_UL(dch, tsc_UL_DTCH1, dTCH, tsc_RB10) + } + }, + { + trchid := tsc_UL_DCH2, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_UL(dch, tsc_UL_DTCH2, dTCH, tsc_RB11) + } + }, + { + trchid := tsc_UL_DCH3, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_UL(dch, tsc_UL_DTCH3, dTCH, tsc_RB12) + } + }, + { + trchid := tsc_UL_DCH5, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_UL(dch, tsc_UL_DCCH1, dCCH, tsc_RB1), + cs_TrCH_LogicalChannelMapping_UL(dch, tsc_UL_DCCH2, dCCH, tsc_RB2), + cs_TrCH_LogicalChannelMapping_UL(dch, tsc_UL_DCCH3, dCCH, tsc_RB3), + cs_TrCH_LogicalChannelMapping_UL(dch, tsc_UL_DCCH4, dCCH, tsc_RB4) + } + } + }, + dlconnectedTrCHList := omit, + dlconnectedMACdFlows := omit, + dlconnectedMAC_ehsFlows := omit, + dlconnectedMAC_ehsCommonFlows := omit, + dlconnectedMAC_ehsFlowsDC := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCH_LogCHMappingList1_TDD cs_TrLogMappingUL_4DCCH_3DTCH_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + ulconnectedTrCHList := { + { + trchid := tsc_UL_DCH1, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_UL_TDD(dch, tsc_UL_DTCH1, dTCH, tsc_RB10) + } + }, + { + trchid := tsc_UL_DCH2, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_UL_TDD(dch, tsc_UL_DTCH2, dTCH, tsc_RB11) + } + }, + { + trchid := tsc_UL_DCH3, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_UL_TDD(dch, tsc_UL_DTCH3, dTCH, tsc_RB12) + } + }, + { + trchid := tsc_UL_DCH5, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_UL_TDD(dch, tsc_UL_DCCH1, dCCH, tsc_RB1), + cs_TrCH_LogicalChannelMapping_UL_TDD(dch, tsc_UL_DCCH2, dCCH, tsc_RB2), + cs_TrCH_LogicalChannelMapping_UL_TDD(dch, tsc_UL_DCCH3, dCCH, tsc_RB3), + cs_TrCH_LogicalChannelMapping_UL_TDD(dch, tsc_UL_DCCH4, dCCH, tsc_RB4) + } + } + }, + dlconnectedTrCHList := omit, + dlconnectedMACdFlows := omit, + dlconnectedMAC_ehsFlows := omit, + dlconnectedMAC_ehsCommonFlows := omit, + dlconnectedMAC_ehsFlowsDC := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCH_LogCHMappingList1 cs_TrLogMappingDL_4DCCH_3DTCH := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + ulconnectedTrCHList := omit, + dlconnectedTrCHList := { + { + trchid := tsc_DL_DCH1, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL(dch, tsc_DL_DTCH1, dTCH, tsc_MAC_LogicalChannelPrio6, tsc_RB10) + } + }, + { + trchid := tsc_DL_DCH2, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL(dch, tsc_DL_DTCH2, dTCH, tsc_MAC_LogicalChannelPrio6, tsc_RB11) + } + }, + { + trchid := tsc_DL_DCH3, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL(dch, tsc_DL_DTCH3, dTCH, tsc_MAC_LogicalChannelPrio6, tsc_RB12) + } + }, + { + trchid := tsc_DL_DCH5, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL(dch, tsc_DL_DCCH1, dCCH, tsc_MAC_LogicalChannelPrio1, tsc_RB1), + cs_TrCH_LogicalChannelMapping_DL(dch, tsc_DL_DCCH2, dCCH, tsc_MAC_LogicalChannelPrio2, tsc_RB2), + cs_TrCH_LogicalChannelMapping_DL(dch, tsc_DL_DCCH3, dCCH, tsc_MAC_LogicalChannelPrio3, tsc_RB3), + cs_TrCH_LogicalChannelMapping_DL(dch, tsc_DL_DCCH4, dCCH, tsc_MAC_LogicalChannelPrio4, tsc_RB4) + } + } + }, + dlconnectedMACdFlows := omit, + dlconnectedMAC_ehsFlows := omit, + dlconnectedMAC_ehsCommonFlows := omit, + dlconnectedMAC_ehsFlowsDC := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCH_LogCHMappingList1_TDD cs_TrLogMappingDL_4DCCH_3DTCH_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + ulconnectedTrCHList := omit, + dlconnectedTrCHList := { + { + trchid := tsc_DL_DCH1, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL_TDD(dch, tsc_DL_DTCH1, dTCH, tsc_MAC_LogicalChannelPrio6, tsc_RB10) + } + }, + { + trchid := tsc_DL_DCH2, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL_TDD(dch, tsc_DL_DTCH2, dTCH, tsc_MAC_LogicalChannelPrio6, tsc_RB11) + } + }, + { + trchid := tsc_DL_DCH3, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL_TDD(dch, tsc_DL_DTCH3, dTCH, tsc_MAC_LogicalChannelPrio6, tsc_RB12) + } + }, + { + trchid := tsc_DL_DCH5, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL_TDD(dch, tsc_DL_DCCH1, dCCH, tsc_MAC_LogicalChannelPrio1, tsc_RB1), + cs_TrCH_LogicalChannelMapping_DL_TDD(dch, tsc_DL_DCCH2, dCCH, tsc_MAC_LogicalChannelPrio2, tsc_RB2), + cs_TrCH_LogicalChannelMapping_DL_TDD(dch, tsc_DL_DCCH3, dCCH, tsc_MAC_LogicalChannelPrio3, tsc_RB3), + cs_TrCH_LogicalChannelMapping_DL_TDD(dch, tsc_DL_DCCH4, dCCH, tsc_MAC_LogicalChannelPrio4, tsc_RB4) + } + } + }, + dlconnectedMACdFlows := omit, + dlconnectedMAC_ehsFlows := omit, + dlconnectedMAC_ehsCommonFlows := omit, + dlconnectedMAC_ehsFlowsDC := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCH_LogCHMappingList1 cs_TrLogMappingDL_MAC_HS := + { /* Reference: 36.508 cl. 4.8.3 Table 4.8.3-1 + UTRA HSDPA RB TS 34.108 subclause 6.10.2.4.5.1 + Interactive or background / UL:64 DL: [max bit rate depending on UE category] / PS RAB + UL:3.4 DL:3.4 kbps SRBs for DCCH */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + ulconnectedTrCHList := omit, + dlconnectedTrCHList := omit, + dlconnectedMACdFlows := { + { + mac_dFlowId := 0, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL_RB25 + } + } + }, + dlconnectedMAC_ehsFlows := omit, + dlconnectedMAC_ehsCommonFlows := omit, + dlconnectedMAC_ehsFlowsDC := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCH_LogCHMappingList1_TDD cs_TrLogMappingDL_MAC_HS_TDD := + { /* Reference: 36.508 cl. 4.8.3 Table 4.8.3-1 + UTRA HSDPA RB TS 34.108 subclause 6.10.2.4.5.1 + Interactive or background / UL:64 DL: [max bit rate depending on UE category] / PS RAB + UL:3.4 DL:3.4 kbps SRBs for DCCH */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + ulconnectedTrCHList := omit, + dlconnectedTrCHList := omit, + dlconnectedMACdFlows := { + { + mac_dFlowId := 0, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL_RB25_TDD + } + } + }, + dlconnectedMAC_ehsFlows := omit, + dlconnectedMAC_ehsCommonFlows := omit, + dlconnectedMAC_ehsFlowsDC := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCH_LogCHMappingList1 cs_TrLogMappingDL_MAC_HS_SRB := + { /* Reference: 36.508 cl. 4.8.3 Table 4.8.3-1 + UTRA HSDPA RB TS 34.108 6.10.2.4.6.3 packet CELL_DCH / HS-DSCH / E-DCH */ + /* @status APPROVED (LTE_IRAT) */ + ulconnectedTrCHList := omit, + dlconnectedTrCHList := omit, + dlconnectedMACdFlows := { + { + mac_dFlowId := 0, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL_RB25 + } + }, + { + mac_dFlowId := 1, // @sic R5s120778 sic@ + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL(hsdsch, tsc_DL_DCCH1, dCCH, tsc_MAC_LogicalChannelPrio1, tsc_RB1), + cs_TrCH_LogicalChannelMapping_DL(hsdsch, tsc_DL_DCCH2, dCCH, tsc_MAC_LogicalChannelPrio2, tsc_RB2), //@sic R5s130144 sic@ + cs_TrCH_LogicalChannelMapping_DL(hsdsch, tsc_DL_DCCH3, dCCH, tsc_MAC_LogicalChannelPrio3, tsc_RB3), //@sic R5s130144 sic@ + cs_TrCH_LogicalChannelMapping_DL(hsdsch, tsc_DL_DCCH4, dCCH, tsc_MAC_LogicalChannelPrio4, tsc_RB4) //@sic R5s130144 sic@ + } + } + }, + dlconnectedMAC_ehsFlows := omit, + dlconnectedMAC_ehsCommonFlows := omit, + dlconnectedMAC_ehsFlowsDC := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + + template (value) TrCH_LogCHMappingList1_TDD cs_TrLogMappingDL_MAC_HS_SRB_TDD := + { /* Reference: 36.508 cl. 4.8.3 Table 4.8.3-1 + UTRA HSDPA RB TS 34.108 6.10.2.4.6.3 packet CELL_DCH / HS-DSCH / E-DCH */ + /* @status APPROVED (LTE_IRAT) */ + ulconnectedTrCHList := omit, + dlconnectedTrCHList := omit, + dlconnectedMACdFlows := { + { + mac_dFlowId := 0, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL_RB25_TDD + } + }, + { + mac_dFlowId := 1, // @sic R5s120778 sic@ + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL_TDD(hsdsch, tsc_DL_DCCH1, dCCH, tsc_MAC_LogicalChannelPrio1, tsc_RB1), + cs_TrCH_LogicalChannelMapping_DL_TDD(hsdsch, tsc_DL_DCCH2, dCCH, tsc_MAC_LogicalChannelPrio2, tsc_RB2), //@sic R5s130144 sic@ + cs_TrCH_LogicalChannelMapping_DL_TDD(hsdsch, tsc_DL_DCCH3, dCCH, tsc_MAC_LogicalChannelPrio3, tsc_RB3), //@sic R5s130144 sic@ + cs_TrCH_LogicalChannelMapping_DL_TDD(hsdsch, tsc_DL_DCCH4, dCCH, tsc_MAC_LogicalChannelPrio4, tsc_RB4) //@sic R5s130144 sic@ + } + } + }, + dlconnectedMAC_ehsFlows := omit, + dlconnectedMAC_ehsCommonFlows := omit, + dlconnectedMAC_ehsFlowsDC := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCH_LogCHMappingList1 cs_TrLogMappingDL_TM3_AM1 := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + ulconnectedTrCHList := omit, + dlconnectedTrCHList := { + { + trchid := tsc_DL_DCH1, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL(dch, tsc_DL_DTCH1, dTCH, tsc_MAC_LogicalChannelPrio7, tsc_RB10) + } + }, + { + trchid := tsc_DL_DCH2, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL(dch, tsc_DL_DTCH2, dTCH, tsc_MAC_LogicalChannelPrio7, tsc_RB11) + } + }, + { + trchid := tsc_DL_DCH3, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL(dch, tsc_DL_DTCH3, dTCH, tsc_MAC_LogicalChannelPrio7, tsc_RB12) + } + }, + { + trchid := tsc_DL_DCH4, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL(dch, tsc_DL_DTCH4, dTCH, tsc_MAC_LogicalChannelPrio6, tsc_RB20) + } + }, + { + trchid := tsc_DL_DCH5, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL(dch, tsc_DL_DCCH1, dCCH, tsc_MAC_LogicalChannelPrio1, tsc_RB1), + cs_TrCH_LogicalChannelMapping_DL(dch, tsc_DL_DCCH2, dCCH, tsc_MAC_LogicalChannelPrio2, tsc_RB2), + cs_TrCH_LogicalChannelMapping_DL(dch, tsc_DL_DCCH3, dCCH, tsc_MAC_LogicalChannelPrio3, tsc_RB3), + cs_TrCH_LogicalChannelMapping_DL(dch, tsc_DL_DCCH4, dCCH, tsc_MAC_LogicalChannelPrio4, tsc_RB4) + } + } + }, + dlconnectedMACdFlows := omit, + dlconnectedMAC_ehsFlows := omit, + dlconnectedMAC_ehsCommonFlows := omit, + dlconnectedMAC_ehsFlowsDC := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCH_LogCHMappingList1_TDD cs_TrLogMappingDL_TM3_AM1_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + ulconnectedTrCHList := omit, + dlconnectedTrCHList := { + { + trchid := tsc_DL_DCH1, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL_TDD(dch, tsc_DL_DTCH1, dTCH, tsc_MAC_LogicalChannelPrio7, tsc_RB10) + } + }, + { + trchid := tsc_DL_DCH2, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL_TDD(dch, tsc_DL_DTCH2, dTCH, tsc_MAC_LogicalChannelPrio7, tsc_RB11) + } + }, + { + trchid := tsc_DL_DCH3, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL_TDD(dch, tsc_DL_DTCH3, dTCH, tsc_MAC_LogicalChannelPrio7, tsc_RB12) + } + }, + { + trchid := tsc_DL_DCH4, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL_TDD(dch, tsc_DL_DTCH4, dTCH, tsc_MAC_LogicalChannelPrio6, tsc_RB20) + } + }, + { + trchid := tsc_DL_DCH5, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL_TDD(dch, tsc_DL_DCCH1, dCCH, tsc_MAC_LogicalChannelPrio1, tsc_RB1), + cs_TrCH_LogicalChannelMapping_DL_TDD(dch, tsc_DL_DCCH2, dCCH, tsc_MAC_LogicalChannelPrio2, tsc_RB2), + cs_TrCH_LogicalChannelMapping_DL_TDD(dch, tsc_DL_DCCH3, dCCH, tsc_MAC_LogicalChannelPrio3, tsc_RB3), + cs_TrCH_LogicalChannelMapping_DL_TDD(dch, tsc_DL_DCCH4, dCCH, tsc_MAC_LogicalChannelPrio4, tsc_RB4) + } + } + }, + dlconnectedMACdFlows := omit, + dlconnectedMAC_ehsFlows := omit, + dlconnectedMAC_ehsCommonFlows := omit, + dlconnectedMAC_ehsFlowsDC := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCH_LogCHMappingList1_TDD cs_TrLogMappingUL_TM3_AM1_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + ulconnectedTrCHList := { + { + trchid := tsc_UL_DCH1, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_UL_TDD(dch, tsc_UL_DTCH1, dTCH, tsc_RB10) + } + }, + { + trchid := tsc_UL_DCH2, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_UL_TDD(dch, tsc_UL_DTCH2, dTCH, tsc_RB11) + } + }, + { + trchid := tsc_UL_DCH3, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_UL_TDD(dch, tsc_UL_DTCH3, dTCH, tsc_RB12) + } + }, + { + trchid := tsc_UL_DCH4, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_UL_TDD(dch, tsc_UL_DTCH4, dTCH, tsc_RB20) + } + }, + { + trchid := tsc_UL_DCH5, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_UL_TDD(dch, tsc_UL_DCCH1, dCCH, tsc_RB1), + cs_TrCH_LogicalChannelMapping_UL_TDD(dch, tsc_UL_DCCH2, dCCH, tsc_RB2), + cs_TrCH_LogicalChannelMapping_UL_TDD(dch, tsc_UL_DCCH3, dCCH, tsc_RB3), + cs_TrCH_LogicalChannelMapping_UL_TDD(dch, tsc_UL_DCCH4, dCCH, tsc_RB4) + } + } + }, + dlconnectedTrCHList := omit, + dlconnectedMACdFlows := omit, + dlconnectedMAC_ehsFlows := omit, + dlconnectedMAC_ehsCommonFlows := omit, + dlconnectedMAC_ehsFlowsDC := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCH_LogCHMappingList1 cs_TrLogMappingUL_TM3_AM1 := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + ulconnectedTrCHList := { + { + trchid := tsc_UL_DCH1, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_UL(dch, tsc_UL_DTCH1, dTCH, tsc_RB10) + } + }, + { + trchid := tsc_UL_DCH2, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_UL(dch, tsc_UL_DTCH2, dTCH, tsc_RB11) + } + }, + { + trchid := tsc_UL_DCH3, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_UL(dch, tsc_UL_DTCH3, dTCH, tsc_RB12) + } + }, + { + trchid := tsc_UL_DCH4, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_UL(dch, tsc_UL_DTCH4, dTCH, tsc_RB20) + } + }, + { + trchid := tsc_UL_DCH5, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_UL(dch, tsc_UL_DCCH1, dCCH, tsc_RB1), + cs_TrCH_LogicalChannelMapping_UL(dch, tsc_UL_DCCH2, dCCH, tsc_RB2), + cs_TrCH_LogicalChannelMapping_UL(dch, tsc_UL_DCCH3, dCCH, tsc_RB3), + cs_TrCH_LogicalChannelMapping_UL(dch, tsc_UL_DCCH4, dCCH, tsc_RB4) + } + } + }, + dlconnectedTrCHList := omit, + dlconnectedMACdFlows := omit, + dlconnectedMAC_ehsFlows := omit, + dlconnectedMAC_ehsCommonFlows := omit, + dlconnectedMAC_ehsFlowsDC := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + //---------------------------------------------------------------------- + + template (value) TrCHInfo cs_TrCHInfoDL_5_0To119_FDD(template (value) CommonOrDedicatedTFS p_DchTFS5, + template (value) CommonOrDedicatedTFS p_DchTFS1, + template (value) CommonOrDedicatedTFS p_DchTFS2, + template (value) CommonOrDedicatedTFS p_DchTFS3, + template (value) CommonOrDedicatedTFS p_DchTFS4) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + ulconnectedTrCHList := omit, + ulTFCS := omit, + dlconnectedTrCHList := { + { + trchid := tsc_DL_DCH1, + transportChannelInfo := p_DchTFS1 + }, + { + trchid := tsc_DL_DCH2, + transportChannelInfo := p_DchTFS2 + }, + { + trchid := tsc_DL_DCH3, + transportChannelInfo := p_DchTFS3 + }, + { + trchid := tsc_DL_DCH4, + transportChannelInfo := p_DchTFS4 + }, + { + trchid := tsc_DL_DCH5, + transportChannelInfo := p_DchTFS5 + } + }, + dlTFCS := cs_TFCS_Cmpl0_To119_Tx(cs_PowerOffsetInfoHigher64k), + hsDSCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, // @sic R5s110176 Baseline Moving sic@ + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCHInfo cs_TrCHInfoUL_5_0To119_FDD(template (value) CommonOrDedicatedTFS p_DchTFS5, + template (value) CommonOrDedicatedTFS p_DchTFS1, + template (value) CommonOrDedicatedTFS p_DchTFS2, + template (value) CommonOrDedicatedTFS p_DchTFS3, + template (value) CommonOrDedicatedTFS p_DchTFS4) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + ulconnectedTrCHList := { + { + trchid := tsc_UL_DCH1, + transportChannelInfo := p_DchTFS1 + }, + { + trchid := tsc_UL_DCH2, + transportChannelInfo := p_DchTFS2 + }, + { + trchid := tsc_UL_DCH3, + transportChannelInfo := p_DchTFS3 + }, + { + trchid := tsc_UL_DCH4, + transportChannelInfo := p_DchTFS4 + }, + { + trchid := tsc_UL_DCH5, + transportChannelInfo := p_DchTFS5 + } + }, + ulTFCS := cs_TFCS_Cmpl0_To119_Rx, + dlconnectedTrCHList := omit, + dlTFCS := omit, + hsDSCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, // @sic R5s110176 Baseline Moving sic@ + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCHInfo_TDD cs_TrCHInfoDL_5_0To119_TDD(template (value) CommonOrDedicatedTFS_TDD p_DchTFS5, + template (value) CommonOrDedicatedTFS_TDD p_DchTFS1, + template (value) CommonOrDedicatedTFS_TDD p_DchTFS2, + template (value) CommonOrDedicatedTFS_TDD p_DchTFS3, + template (value) CommonOrDedicatedTFS_TDD p_DchTFS4) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + ulconnectedTrCHList := omit, + ulTFCS := omit, + dlconnectedTrCHList := { + { + trchid := tsc_DL_DCH1, + transportChannelInfo := p_DchTFS1 + }, + { + trchid := tsc_DL_DCH2, + transportChannelInfo := p_DchTFS2 + }, + { + trchid := tsc_DL_DCH3, + transportChannelInfo := p_DchTFS3 + }, + { + trchid := tsc_DL_DCH4, + transportChannelInfo := p_DchTFS4 + }, + { + trchid := tsc_DL_DCH5, + transportChannelInfo := p_DchTFS5 + } + }, + dlTFCS := cs_TFCS_Cmpl0_To119_Tx(cs_PowerOffsetInfo_TDD), + hsDSCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, + relAspTypeExtension := omit + }; + + template (value) TrCHInfo_TDD cs_TrCHInfoUL_5_0To119_TDD(template (value) CommonOrDedicatedTFS_TDD p_DchTFS5, + template (value) CommonOrDedicatedTFS_TDD p_DchTFS1, + template (value) CommonOrDedicatedTFS_TDD p_DchTFS2, + template (value) CommonOrDedicatedTFS_TDD p_DchTFS3, + template (value) CommonOrDedicatedTFS_TDD p_DchTFS4) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + ulconnectedTrCHList := { + { + trchid := tsc_UL_DCH1, + transportChannelInfo := p_DchTFS1 + }, + { + trchid := tsc_UL_DCH2, + transportChannelInfo := p_DchTFS2 + }, + { + trchid := tsc_UL_DCH3, + transportChannelInfo := p_DchTFS3 + }, + { + trchid := tsc_UL_DCH4, + transportChannelInfo := p_DchTFS4 + }, + { + trchid := tsc_UL_DCH5, + transportChannelInfo := p_DchTFS5 + } + }, + ulTFCS := cs_TFCS_Cmpl0_To119_Rx , + dlconnectedTrCHList := omit, + dlTFCS := omit, + hsDSCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, + relAspTypeExtension := omit + }; + + template (value) DPCH_CompressedModeStatusInfo cs_DPCH_CompressedModeStatusInfoActive(TGPS_Reconfiguration_CFN p_Tgps_Reconfiguration_CFN, + TGCFN p_TGCFN) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + // @sic R5s120068 sic@ + tgps_Reconfiguration_CFN := p_Tgps_Reconfiguration_CFN, + tgp_SequenceShortList := { + { + tgpsi := 1, + tgps_Status := { + activate_ := { + tgcfn := p_TGCFN + } + } + } + } + }; + + //============================================================================ + + template (value) U_CPHY_CONFIG_REQ cs_DlDch1To5_DlTfcs0To119_FDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) CommonOrDedicatedTFS p_DchTFS5, + template (value) CommonOrDedicatedTFS p_DchTFS1, + template (value) CommonOrDedicatedTFS p_DchTFS2, + template (value) CommonOrDedicatedTFS p_DchTFS3, + template (value) CommonOrDedicatedTFS p_DchTFS4, + template (value) SS_ActivationTime p_SS_ActivationTime) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + trchConfig_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := fdd, + trchConfigType := cs_TrChConfigTypeDCH_NoSHO, + configMessage := { + activationTime := p_SS_ActivationTime, + ulconnectedTrCHList := omit, + ulTFCS := omit, + dlconnectedTrCHList := { + cs_CphyDlConnectedTrCH_FDD_DCH(tsc_DL_DCH1, p_DchTFS1), + cs_CphyDlConnectedTrCH_FDD_DCH(tsc_DL_DCH2, p_DchTFS2), + cs_CphyDlConnectedTrCH_FDD_DCH(tsc_DL_DCH3, p_DchTFS3), + cs_CphyDlConnectedTrCH_FDD_DCH(tsc_DL_DCH4, p_DchTFS4), + cs_CphyDlConnectedTrCH_FDD_DCH(tsc_DL_DCH5, p_DchTFS5) + }, + dlTFCS := cs_TFCS_Cmpl0_To119_Tx(cs_PowerOffsetInfoHigher64k), + hsDSCHMacdFlows := omit, + e_DCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + e_DCHMacd_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, // @sic R5s110176 Baseline Moving sic@ + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + } + }; + + template (value) U_CPHY_CONFIG_REQ cs_DlDch1To5_DlTfcs0To119_TDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) CommonOrDedicatedTFS_TDD p_DchTFS5, + template (value) CommonOrDedicatedTFS_TDD p_DchTFS1, + template (value) CommonOrDedicatedTFS_TDD p_DchTFS2, + template (value) CommonOrDedicatedTFS_TDD p_DchTFS3, + template (value) CommonOrDedicatedTFS_TDD p_DchTFS4, + template (value) SS_ActivationTime p_SS_ActivationTime) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + trchConfig_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := tdd128, + trchConfigType := cs_TrChConfigTypeDCH_NoSHO, + configMessage := { + activationTime := p_SS_ActivationTime, + ulconnectedTrCHList := omit, + ulTFCS := omit, + dlconnectedTrCHList := { + cs_CphyDlConnectedTrCH_TDD_DCH(tsc_DL_DCH1, p_DchTFS1), + cs_CphyDlConnectedTrCH_TDD_DCH(tsc_DL_DCH2, p_DchTFS2), + cs_CphyDlConnectedTrCH_TDD_DCH(tsc_DL_DCH3, p_DchTFS3), + cs_CphyDlConnectedTrCH_TDD_DCH(tsc_DL_DCH4, p_DchTFS4), + cs_CphyDlConnectedTrCH_TDD_DCH(tsc_DL_DCH5, p_DchTFS5) + }, + dlTFCS := cs_TFCS_Cmpl0_To119_Tx(cs_PowerOffsetInfo_TDD), + hsDSCHMacdFlows := omit, + e_DCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + e_DCHMacd_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, // @sic R5s110176 sic@ + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + } + }; + + template (value) U_CPHY_CONFIG_REQ cs_UlDch1To5_UlTfcs0To119_FDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) CommonOrDedicatedTFS p_DchTFS5, + template (value) CommonOrDedicatedTFS p_DchTFS1, + template (value) CommonOrDedicatedTFS p_DchTFS2, + template (value) CommonOrDedicatedTFS p_DchTFS3, + template (value) CommonOrDedicatedTFS p_DchTFS4, + template (value) SS_ActivationTime p_SS_ActivationTime) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + trchConfig_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := fdd, + trchConfigType := cs_TrChConfigTypeDCH_NoSHO, + configMessage := { + activationTime := p_SS_ActivationTime, + ulconnectedTrCHList := { + cs_CphyUlConnectedTrCH_FDD_DCH(tsc_UL_DCH1, p_DchTFS1), + cs_CphyUlConnectedTrCH_FDD_DCH(tsc_UL_DCH2, p_DchTFS2), + cs_CphyUlConnectedTrCH_FDD_DCH(tsc_UL_DCH3, p_DchTFS3), + cs_CphyUlConnectedTrCH_FDD_DCH(tsc_UL_DCH4, p_DchTFS4), + cs_CphyUlConnectedTrCH_FDD_DCH(tsc_UL_DCH5, p_DchTFS5) + }, + ulTFCS := cs_TFCS_Cmpl0_To119_Rx, + dlconnectedTrCHList := omit, + dlTFCS := omit, + hsDSCHMacdFlows := omit, + e_DCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + e_DCHMacd_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, // @sic R5s110176 Baseline Moving sic@ + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + } + }; + + template (value) U_CPHY_CONFIG_REQ cs_UlDch1To5_UlTfcs0To119_TDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) CommonOrDedicatedTFS_TDD p_DchTFS5, + template (value) CommonOrDedicatedTFS_TDD p_DchTFS1, + template (value) CommonOrDedicatedTFS_TDD p_DchTFS2, + template (value) CommonOrDedicatedTFS_TDD p_DchTFS3, + template (value) CommonOrDedicatedTFS_TDD p_DchTFS4, + template (value) SS_ActivationTime p_SS_ActivationTime) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + trchConfig_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := tdd128, + trchConfigType := cs_TrChConfigTypeDCH_NoSHO, + configMessage := { + activationTime := p_SS_ActivationTime, + ulconnectedTrCHList := { + cs_CphyUlConnectedTrCH_TDD_DCH(tsc_UL_DCH1, p_DchTFS1), + cs_CphyUlConnectedTrCH_TDD_DCH(tsc_UL_DCH2, p_DchTFS2), + cs_CphyUlConnectedTrCH_TDD_DCH(tsc_UL_DCH3, p_DchTFS3), + cs_CphyUlConnectedTrCH_TDD_DCH(tsc_UL_DCH4, p_DchTFS4), + cs_CphyUlConnectedTrCH_TDD_DCH(tsc_UL_DCH5, p_DchTFS5) + }, + ulTFCS := cs_TFCS_Cmpl0_To119_Rx, + dlconnectedTrCHList := omit, + dlTFCS := omit, + hsDSCHMacdFlows := omit, + e_DCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + e_DCHMacd_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, // @sic R5s110176 sic@ + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + } + }; + + // ----------------------------------------------------------------------------- + // ASP Templates + // ----------------------------------------------------------------------------- + + template (value) U_CPHY_CONFIG_REQ cas_DCH4_UL_Info_FDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) TrChConfigType p_Type, + template (value) SS_ActivationTime p_SS_ActivationTime) := + { /* For DCH1 transport channel the following parameters are fixed by core spec.(34.123 cl. 7.2): + TTI = 40 ms; + two transport formats: TransportBlocks = 1, TB size = 148 bits; TansportBlock = 0, Size = 148. + coding = convolutional; + coding rate = 1/3; + CRCsize = 16; + RateMatching = 155 */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + trchConfig_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := fdd, + trchConfigType := p_Type, + configMessage := { + activationTime := p_SS_ActivationTime, // @sic R5s130561 sic@ + ulconnectedTrCHList := { + cs_CphyUlConnectedTrCH_FDD_DCH(tsc_UL_DCH1, cs_DCH_81_TFS_FDD), + cs_CphyUlConnectedTrCH_FDD_DCH(tsc_UL_DCH2, cs_DCH_103_TFS_FDD), + cs_CphyUlConnectedTrCH_FDD_DCH(tsc_UL_DCH3, cs_DCH_60_TFS_FDD), + cs_CphyUlConnectedTrCH_FDD_DCH(tsc_UL_DCH5, cs_DCH_148_TFS_FDD) + }, + ulTFCS := cs_TFCS_Cmpl0_1_11_12_13_23_Rx, + dlconnectedTrCHList := omit, + dlTFCS := omit, + hsDSCHMacdFlows := omit, + e_DCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + e_DCHMacd_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, // @sic R5s110176 Baseline Moving sic@ + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + } + }; + + template (value) U_CPHY_CONFIG_REQ cas_DCH4_UL_Info_TDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) TrChConfigType p_Type, + template (value) SS_ActivationTime p_SS_ActivationTime) := + { /* For DCH1 transport channel the following parameters are fixed by core spec.(34.123 cl. 7.2): + TTI = 40 ms; + two transport formats: TransportBlocks = 1, TB size = 148 bits; TansportBlock = 0, Size = 148. + coding = convolutional; + coding rate = 1/3; + CRCsize = 16; + RateMatching = 155 */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + trchConfig_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := tdd128, + trchConfigType := p_Type, + configMessage := { + activationTime := p_SS_ActivationTime, // @sic R5s130561 sic@ + ulconnectedTrCHList := { + cs_CphyUlConnectedTrCH_TDD_DCH(tsc_UL_DCH1, cs_DCH_81_TFS_TDD), + cs_CphyUlConnectedTrCH_TDD_DCH(tsc_UL_DCH2, cs_DCH_103_TFS_TDD), + cs_CphyUlConnectedTrCH_TDD_DCH(tsc_UL_DCH3, cs_DCH_60_TFS_TDD), + cs_CphyUlConnectedTrCH_TDD_DCH(tsc_UL_DCH5, cs_DCH_148_TFS_UL_TDD) + }, + ulTFCS := cs_TFCS_Cmpl0_1_11_12_13_23_Rx, + dlconnectedTrCHList := omit, + dlTFCS := omit, + hsDSCHMacdFlows := omit, + e_DCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + e_DCHMacd_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, // @sic R5s110176 sic@ + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + } + }; + + template (value) U_CPHY_CONFIG_REQ cas_DCH4_DL_Info_FDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) TrChConfigType p_Type, + template (value) SS_ActivationTime p_SS_ActivationTime) := + { /* For DCH1 transport channel the following parameters are fixed by core spec.(34.123 cl. 7.2): + TTI = 40 ms; + two transport formats: TransportBlocks = 1, TB size = 148 bits; TansportBlock = 0, Size = 148. + coding = convolutional; + coding rate = 1/3; + CRCsize = 16; + RateMatching = 155 */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + trchConfig_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := fdd, + trchConfigType := p_Type, + configMessage := { + activationTime := p_SS_ActivationTime, // @sic R5s130561 sic@ + ulconnectedTrCHList := omit, + ulTFCS := omit, + dlconnectedTrCHList := { + cs_CphyDlConnectedTrCH_FDD_DCH(tsc_DL_DCH1, cs_DCH_81_TFS_DL_FDD), + cs_CphyDlConnectedTrCH_FDD_DCH(tsc_DL_DCH2, cs_DCH_103_TFS_FDD), + cs_CphyDlConnectedTrCH_FDD_DCH(tsc_DL_DCH3, cs_DCH_60_TFS_FDD), + cs_CphyDlConnectedTrCH_FDD_DCH(tsc_DL_DCH5, cs_DCH_148_TFS_FDD) // @sic R5s110547 sic@ + }, + dlTFCS := cs_TFCS_Cmpl0_1_11_12_13_23_Tx(cs_PowerOffsetInfoBelow64k), + hsDSCHMacdFlows := omit, + e_DCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + e_DCHMacd_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, // @sic R5s110176 Baseline Moving sic@ + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + } + }; + + template (value) U_CPHY_CONFIG_REQ cas_DCH4_DL_Info_TDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) TrChConfigType p_Type, + template (value) SS_ActivationTime p_SS_ActivationTime) := + { /* For DCH1 transport channel the following parameters are fixed by core spec.(34.123 cl. 7.2): + TTI = 40 ms; + two transport formats: TransportBlocks = 1, TB size = 148 bits; TansportBlock = 0, Size = 148. + coding = convolutional; + coding rate = 1/3; + CRCsize = 16; + RateMatching = 155 */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + trchConfig_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := tdd128, + trchConfigType := p_Type, + configMessage := { + activationTime := p_SS_ActivationTime, // @sic R5s130561 sic@ + ulconnectedTrCHList := omit, + ulTFCS := omit, + dlconnectedTrCHList := { + cs_CphyDlConnectedTrCH_TDD_DCH(tsc_DL_DCH1, cs_DCH_81_TFS_DL_TDD), + cs_CphyDlConnectedTrCH_TDD_DCH(tsc_DL_DCH2, cs_DCH_103_TFS_TDD), + cs_CphyDlConnectedTrCH_TDD_DCH(tsc_DL_DCH3, cs_DCH_60_TFS_TDD), + cs_CphyDlConnectedTrCH_TDD_DCH(tsc_DL_DCH5, cs_DCH_148_TFS_DL_TDD) + }, + dlTFCS := cs_TFCS_Cmpl0_1_11_12_13_23_Tx(cs_PowerOffsetInfo_TDD), + hsDSCHMacdFlows := omit, + e_DCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + e_DCHMacd_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, // @sic R5s110176 sic@ + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + } + }; + + template (value) U_CPHY_CONFIG_REQ cas_TrChCfgInfo_FDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) TrChConfigType p_Type, + template (value) CphyTrchConfigReq p_TrChConfig) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + trchConfig_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := fdd, + trchConfigType := p_Type, + configMessage := p_TrChConfig + } + }; + + template (value) U_CPHY_CONFIG_REQ cas_TrChCfgInfo_TDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) TrChConfigType p_Type, + template (value) CphyTrchConfigReq_TDD p_TrChConfig) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + trchConfig_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := tdd128, + trchConfigType := p_Type, + configMessage := p_TrChConfig + } + }; + + //---------------------------------------------------------------------------- + + template (value) U_CPHY_CONFIG_REQ cas_RL_SetupInfo_FDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) RL_Setup_FDD_PhysicalChannelInfo_Type p_RL_Setup_FDD_PhysicalChannelInfo_Type, + template (value) SS_ActivationTime p_SS_ActTime) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + rlSetup_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := fdd, + setupMessage := { + physicalChannelInfo := p_RL_Setup_FDD_PhysicalChannelInfo_Type, + activationTime := p_SS_ActTime, + trchConfigToFollow := omit, // DEFAULT TRUE + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + } + }; + + template (value) U_CPHY_CONFIG_REQ cas_RL_SetupInfo_TDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) RL_Setup_TDD_PhysicalChannelInfo_Type p_RL_Setup_TDD_PhysicalChannelInfo_Type, + template (value) SS_ActivationTime p_SS_ActTime) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + rlSetup_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + secondaryFrequency := omit, + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := tdd128, + setupMessage := { + physicalChannelInfo := p_RL_Setup_TDD_PhysicalChannelInfo_Type, + activationTime := p_SS_ActTime, + trchConfigToFollow := omit, // DEFAULT TRUE + relAspTypeExtension := omit + } + } + }; + + template (value) U_CPHY_CONFIG_REQ cas_RL_Modify_DPCHInfo_FDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) DPCHInfo_r5OrLater_FDD p_DPCHInfo_r5OrLater, + template (value) SS_ActivationTime p_ActivationTime, + boolean p_TrchConfigToFollow := true) := //@sic R5s110749 sic@ + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + rlModify_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := fdd, + modifyMessage := { + activationTime := p_ActivationTime, + physicalChannelInfo := { + dPCHInfo_r5 := p_DPCHInfo_r5OrLater + }, + trchConfigToFollow := p_TrchConfigToFollow, //@sic R5s110749 sic@ + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + } + }; + + template (value) U_CPHY_CONFIG_REQ cas_RL_Modify_DPCHInfo_TDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) DPCHInfo_r5OrLater_TDD p_DPCHInfo_r5OrLater, + template (value) SS_ActivationTime p_SS_ActTime) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + rlModify_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + secondaryFrequency := omit, + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := tdd128, + modifyMessage := { + activationTime := p_SS_ActTime, + physicalChannelInfo := { + dPCHInfo_r5 := p_DPCHInfo_r5OrLater + }, + trchConfigToFollow := omit, + relAspTypeExtension := omit + } + } + }; + + //---------------------------------------------------------------------------- + + template (value) U_CPHY_CONFIG_REQ cas_CompressedModeStatusInfo_REQ(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) DPCH_CompressedModeStatusInfo p_DPCH_CompressedModeInfo, + template (value) SS_ActivationTime p_ActivationTime) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + // @sic R5s120068 sic@ + rlModify_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := fdd, + modifyMessage := { + activationTime := p_ActivationTime, + physicalChannelInfo := { + dpch_CompressedModeStatusInfo := p_DPCH_CompressedModeInfo + }, + trchConfigToFollow := false, + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + } + }; + + //=================================================================================================== + // E-DCH + template (value) U_CPHY_CONFIG_REQ cas_E_AGCH_SetupInfo_FDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) SS_ActivationTime p_SS_ActTime, + template (value) RL_Setup_FDD_PhysicalChannelInfo_Type p_RL_Setup_FDD_PhysicalChannelInfo_Type := cs_SS_E_AGCH_Info_FDD) := + /* @status APPROVED (LTE_IRAT, UTRAN) */ + cas_RL_SetupInfo_FDD(p_CellId, p_PhyChId, p_RL_Setup_FDD_PhysicalChannelInfo_Type, p_SS_ActTime); + + template (value) U_CPHY_CONFIG_REQ cas_E_AGCH_SetupInfo_TDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) SS_ActivationTime p_SS_ActTime, + template (value) RL_Setup_TDD_PhysicalChannelInfo_Type p_RL_Setup_TDD_PhysicalChannelInfo_Type := cs_SS_E_AGCH_Info_TDD) := + /* @status APPROVED (LTE_IRAT) */ + cas_RL_SetupInfo_TDD(p_CellId, p_PhyChId, p_RL_Setup_TDD_PhysicalChannelInfo_Type, p_SS_ActTime); + + template (value) U_CPHY_CONFIG_REQ cas_E_HICH_SetupInfo_FDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) SS_ActivationTime p_SS_ActTime, + template (value) RL_Setup_FDD_PhysicalChannelInfo_Type p_RL_Setup_FDD_PhysicalChannelInfo_Type := cs_SS_E_HICH_Info_FDD) := + /* @status APPROVED (LTE_IRAT, UTRAN) */ + cas_RL_SetupInfo_FDD(p_CellId, p_PhyChId, p_RL_Setup_FDD_PhysicalChannelInfo_Type, p_SS_ActTime); + + template (value) U_CPHY_CONFIG_REQ cas_E_HICH_SetupInfo_TDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) SS_ActivationTime p_SS_ActTime, + template (value) RL_Setup_TDD_PhysicalChannelInfo_Type p_RL_Setup_TDD_PhysicalChannelInfo_Type := cs_SS_E_HICH_Info_TDD) := + /* @status APPROVED (LTE_IRAT) */ + cas_RL_SetupInfo_TDD(p_CellId, p_PhyChId, p_RL_Setup_TDD_PhysicalChannelInfo_Type, p_SS_ActTime); + + template (value) U_CPHY_CONFIG_REQ cas_E_RGCH_SetupInfo_FDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) SS_ActivationTime p_SS_ActTime, + template (value) RL_Setup_FDD_PhysicalChannelInfo_Type p_RL_Setup_FDD_PhysicalChannelInfo_Type := cs_SS_E_RGCH_Info_FDD) := + /* @status APPROVED (UTRAN) */ + cas_RL_SetupInfo_FDD(p_CellId, p_PhyChId, p_RL_Setup_FDD_PhysicalChannelInfo_Type, p_SS_ActTime); + +/* template (value) U_CPHY_CONFIG_REQ cas_E_RGCH_SetupInfo_TDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) SS_ActivationTime p_SS_ActTime, + template (value) RL_Setup_TDD_PhysicalChannelInfo_Type p_RL_Setup_TDD_PhysicalChannelInfo_Type := cs_SS_E_RGCH_Info_TDD) := + cas_RL_SetupInfo_TDD(p_CellId, p_PhyChId, p_RL_Setup_TDD_PhysicalChannelInfo_Type, p_SS_ActTime); +*/ + template (value) U_CPHY_CONFIG_REQ cas_E_DPCH_SetupInfo_FDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) SS_ActivationTime p_SS_ActTime, + template (value) RL_Setup_FDD_PhysicalChannelInfo_Type p_RL_Setup_FDD_PhysicalChannelInfo_Type) := + /* @status APPROVED (LTE_IRAT, UTRAN) */ + cas_RL_SetupInfo_FDD(p_CellId, p_PhyChId, p_RL_Setup_FDD_PhysicalChannelInfo_Type, p_SS_ActTime); + + template (value) U_CPHY_CONFIG_REQ cas_E_DPCH_SetupInfo_TDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) SS_ActivationTime p_SS_ActTime, + template (value) RL_Setup_TDD_PhysicalChannelInfo_Type p_RL_Setup_TDD_PhysicalChannelInfo_Type) := + /* @status APPROVED (LTE_IRAT) */ + cas_RL_SetupInfo_TDD(p_CellId, p_PhyChId, p_RL_Setup_TDD_PhysicalChannelInfo_Type, p_SS_ActTime); + + template (value) E_DCHMACdFlows cs_E_DCHMACdFlows_FDD_Def := + { /* @status APPROVED (LTE_IRAT, UTRAN) */ + tti := f_Get_EDCH_TTI_Value(), + harq_Info := rvtable, + addReconf_MAC_d_FlowList := { //condition A14 for Radio Bearer Setup in TS 34.108 + cs_E_DCH_AddReconf_MAC_d_Flow_DCCH, + cs_E_DCH_AddReconf_MAC_d_Flow_DTCH + }, + addReconf_MAC_d_FlowList_r7 := omit + }; + + template (value) RL_Setup_FDD_PhysicalChannelInfo_Type cs_SS_E_AGCH_Info_FDD := + { /* @status APPROVED (LTE_IRAT, UTRAN) */ + e_AGCHInfo := { + r8 := { + e_AGCHInfo := cs_E_AGCH_Info_FDD_r8, + tti := f_Get_EDCH_TTI_Value(), + e_AGCH_PowerOffset := tsc_E_AGCH_PowerOffset, + e_RNTI_Primary := tsc_E_RNTI, + e_RNTI_Secondary := omit, + ss_DTX_Info := omit, + initialServingGrantValue := omit, + sttdIndicator := omit + } + } + }; + + template (value) RL_Setup_TDD_PhysicalChannelInfo_Type cs_SS_E_AGCH_Info_TDD := + { /* @status APPROVED (LTE_IRAT) */ + e_AGCHInfo := { + r8 := { + e_AGCH_ID_TDD := 0, + e_AGCHInfo := cs_E_AGCH_Info_TDD_r8, + e_AGCH_PowerOffset := 128, + maximum_E_AGCH_Power := -2, + carrier_Frequency := omit, + e_RNTI := tsc_E_RNTI, + ss_E_AGCH_DRX_Info := omit // @sic R5w140013 sic@ + } + } + }; + + template (value) RL_Setup_FDD_PhysicalChannelInfo_Type cs_SS_E_HICH_Info_FDD := + { /* @status APPROVED (LTE_IRAT, UTRAN) */ + e_HICHInfo := { + e_HICHInfo := cs_E_HICH_Info, + e_HICHInfoCommonEDCH := omit, + tti := f_Get_EDCH_TTI_Value(), + e_HICH_PowerOffset := tsc_E_HICH_PowerOffset, + sttdIndicator := false, // DEFAULT FALSE @sic R5-120613 sic@ + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + }; + + template (value) RL_Setup_TDD_PhysicalChannelInfo_Type cs_SS_E_HICH_Info_TDD := + { /* @status APPROVED (LTE_IRAT) */ + e_HICHInfo := { + n_E_HICH := 4, + maximum_E_HICH_Power := -2, + e_HICHInfoList := { + { + e_HICH_ID_TDD := 0, + e_HICH_Type := scheduled, + e_HICHInfo := { + ei := 0, + timeslotNumber := 6, + channelisation_Code := cc16_15, + midambleAllocationMode := { defaultMidamble := NULL }, + midambleConfiguration := 8 + }, + carrier_Frequency := omit, + e_HICH_PowerOffset := 128 + } + } + } + }; + + + template (value) RL_Setup_FDD_PhysicalChannelInfo_Type cs_SS_E_RGCH_Info_FDD := + { /* @status APPROVED (UTRAN) */ + e_RGCHInfo := { + e_RGCHInfo := cs_E_RGCH_Info, + e_RGCHInfoCommonEDCH := omit, + tti := f_Get_EDCH_TTI_Value(), + e_RGCH_PowerOffset := tsc_E_RGCH_PowerOffset, + ss_DTX_Info := omit, + sttdIndicator := false, // DEFAULT FALSE -- @sic R5-120613 sic@ + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + }; + +/* template (value) RL_Setup_TDD_PhysicalChannelInfo_Type cs_SS_E_RGCH_Info_TDD := + { + e_RGCHInfo := { + e_RGCHInfo := cs_E_RGCH_Info, + e_RGCHInfoCommonEDCH := omit, + tti := f_Get_EDCH_TTI_Value(), + e_RGCH_PowerOffset := tsc_E_RGCH_PowerOffset, + ss_DTX_Info := omit, + sttdIndicator := false, // DEFAULT FALSE -- @sic R5-120613 sic@ + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + }; + */ + template (value) RL_Setup_FDD_PhysicalChannelInfo_Type cs_SS_E_DPCH_Info_FDD(UL_ScramblingCode p_UL_ScramblingCode) := + { /* @status APPROVED (LTE_IRAT) */ + e_DPCHInfo := { + r8 := { + e_DPCCH_Info := cs_E_DPCCH_Info, + e_DPDCH_Info := cs_E_DPDCH_Info, + scramblingCodeType := longSC, + scramblingCode := p_UL_ScramblingCode, + tti := f_Get_EDCH_TTI_Value(), + edch_PhysicalLayerCategory := pc_EDCH_UE_Category_FDD, // @sic R5w140207 sic@ + edch_PhysicalLayerCategory_extension := omit, + ul_16QAM_Settings := omit, + s_offset := omit + } + } + }; + + template (value) RL_Setup_TDD_PhysicalChannelInfo_Type cs_SS_E_DCH_Info_TDD := + { /* @status APPROVED (LTE_IRAT) */ + e_DCHInfo := { + e_RUCCH_Info := cs_E_RUCCH_Info, + e_PUCH_Info := cs_SS_E_PUCH_Info + } + }; + + + template (value) E_DCH_AddReconf_MAC_d_Flow cs_E_DCH_AddReconf_MAC_d_Flow_DTCH := + { /* @status APPROVED (LTE_IRAT, UTRAN) */ + mac_d_FlowIdentity := tsc_E_DCH_MAC_d_FlowId_DTCH1, + mac_d_FlowPowerOffset := tsc_E_DCH_MAC_d_FlowPowerOffset, + mac_d_FlowMaxRetrans := tsc_E_DCH_MAC_d_FlowMaxRetrans_DTCH, + mac_d_FlowMultiplexingList := omit, + transmissionGrantType := { + scheduledTransmissionGrantInfo := NULL + } + }; + + template (value) E_DCH_AddReconf_MAC_d_Flow_r7 cs_E_DCH_AddReconf_MAC_d_Flow_DTCH_TDD := + { /* @status APPROVED (LTE_IRAT) */ + mac_d_FlowIdentity := tsc_E_DCH_MAC_d_FlowId_DTCH1, + mac_d_FlowPowerOffset := tsc_E_DCH_MAC_d_FlowPowerOffset, + mac_d_FlowMaxRetrans := tsc_E_DCH_MAC_d_FlowMaxRetrans_DTCH, + mac_d_FlowRetransTimer := omit, + mac_d_FlowMultiplexingList := omit, + transmissionGrantType := { + scheduledTransmissionGrantInfo := NULL + } + }; + + template (value) E_DCH_AddReconf_MAC_d_Flow cs_E_DCH_AddReconf_MAC_d_Flow_DCCH := + { /* @status APPROVED (LTE_IRAT, UTRAN) */ + mac_d_FlowIdentity := tsc_E_DCH_MAC_d_FlowId_DCCH, + mac_d_FlowPowerOffset := tsc_E_DCH_MAC_d_FlowPowerOffset, + mac_d_FlowMaxRetrans := tsc_E_DCH_MAC_d_FlowMaxRetrans_DCCH, + mac_d_FlowMultiplexingList := omit, + transmissionGrantType := { + non_ScheduledTransGrantInfo := { + maxMAC_e_PDUContents := 162, + ms2_NonSchedTransmGrantHARQAlloc := omit //i.e. transmission in all HARQ processes is allowed + } + } + }; + + template (value) E_DCH_AddReconf_MAC_d_Flow_r7 cs_E_DCH_AddReconf_MAC_d_Flow_DCCH_TDD := + { /* @status APPROVED (LTE_IRAT) */ + mac_d_FlowIdentity := tsc_E_DCH_MAC_d_FlowId_DCCH, + mac_d_FlowPowerOffset := tsc_E_DCH_MAC_d_FlowPowerOffset, + mac_d_FlowMaxRetrans := tsc_E_DCH_MAC_d_FlowMaxRetrans_DCCH, + mac_d_FlowRetransTimer := omit, + mac_d_FlowMultiplexingList := omit, + transmissionGrantType := { + non_ScheduledTransGrantInfo := { + modeSpecificInfo := {tdd := NULL} + } + } + }; + + template (value) E_DCHMACdFlows_TDD cs_E_DCHMACdFlows_TDD_Def := + { /* @status APPROVED (LTE_IRAT) */ + harq_Info := rvtable, + addReconf_MAC_d_FlowList_r7 := { //condition A14 for Radio Bearer Setup in TS 34.108 + cs_E_DCH_AddReconf_MAC_d_Flow_DCCH_TDD, + cs_E_DCH_AddReconf_MAC_d_Flow_DTCH_TDD + } + }; + + //============================================================================ + + template (value) U_CMAC_CONFIG_REQ cas_CMAC_MAChs_TFRC_ExplicitConfigReq_FDD(UTRAN_CellId_Type p_CellId, + template (value) SS_ActivationTime p_ActivateNow := cs_ActivateNow) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + tfrc_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + tfrcConfigMode := { + explicitlyConfigured := { + modulationScheme := qpsk, + channelisationCodeOffset := 1, + noOfChannelisationCodes := 1, // @sic R5s120178 baseline moving sic@ + tbSizeIndexOnHS_SCCH := 19, + minimumInterTTIinterval := 3, + redundancyVersions := { 0, 2, 5, 6, 1, 3, 7, 4 },//According to modulation scheme + hs_PDSCH_TxPower := tsc_DL_hs_PDSCH_TxPower + } + }, + activationTime := p_ActivateNow, + ss_DTX_Info := omit, + hs_DSCH_TBSizeTable := omit + } + }; + + template (value) U_CMAC_CONFIG_REQ cas_CMAC_MAChs_TFRC_ExplicitConfigReq_TDD(UTRAN_CellId_Type p_CellId) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + tfrc_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + tfrcConfigMode := { + explicitlyConfigured := { + modulationScheme := qpsk, + noOfTimeSlots := int2bit (5, 5), + startCode := cc16_1, + stopCode := cc16_12, + noOfCodesPerTimeslot := 12, + tbSizeIndexOnHS_SCCH := 1, + redundancyVersions := { 0, 2, 5, 6, 1, 3, 7, 4 }, + hs_PDSCH_TxPower := tsc_DL_hs_PDSCH_TxPower + } + }, + activationTime := omit + } + }; + + //============================================================================ + + template (value) SS_DL_RLC_Mode cs_SS_DL_RLC_TM_Mode(template (omit) integer p_PayLoad) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + dl_PayloadSize := p_PayLoad, + dl_RLCModeInfo := { + ul_TM_RLC_Mode := { + transmissionRLC_Discard := omit, + segmentationIndication := false + } + }, + dl_UM_RLC_LI_size := omit, + dl_UM_outOfSeqDelivery := omit, + dl_RLC_PDU_size := omit + }; + + template (value) U_CRLC_CONFIG_REQ cas_RB25_AM_Info_FDD(UTRAN_CellId_Type p_CellId := utran_CellDedicated, + integer p_RB_Id := tsc_RB25, + integer p_PayLoad := 320, + template (value) UL_AM_RLC_Mode p_UL_AM_RLC_Mode := cds_UL_AM_RLC_HSDPA, + template (value) RB_LogCH_Mapping p_LogChMapping := cs_RB25_LogChMapping) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + /* @sic R5s120397 Additional Changes sic@ */ + cas_RB_AM_Info_Common_FDD(p_CellId, p_RB_Id, cds_DL_AM_RLC_HSDPA, cs_SS_DL_RLC_AM_Mode(p_PayLoad, p_UL_AM_RLC_Mode), p_LogChMapping); /* @sic R5s110782 - Additional Changes sic@ */ + + template (value) U_CRLC_CONFIG_REQ cas_RB25_AM_Info_TDD(UTRAN_CellId_Type p_CellId := utran_CellDedicated, + integer p_RB_Id := tsc_RB25, + integer p_PayLoad := 320, + template (value) UL_AM_RLC_Mode p_UL_AM_RLC_Mode := cds_UL_AM_RLC_HSDPA, + template (value) RB_LogCH_Mapping p_LogChMapping := cs_RB25_LogChMapping) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + /* @sic R5s120397 Additional Changes sic@ */ + cas_RB_AM_Info_Common_TDD(p_CellId, p_RB_Id, cds_DL_AM_RLC_HSDPA, cs_SS_DL_RLC_AM_Mode(p_PayLoad, p_UL_AM_RLC_Mode), p_LogChMapping); + +} diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ASN1_ASP_RAB_Templates_r10.ttcn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ASN1_ASP_RAB_Templates_r10.ttcn new file mode 100644 index 0000000..9db3899 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ASN1_ASP_RAB_Templates_r10.ttcn @@ -0,0 +1,62 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-07-06 21:15:13 +0200 (Sun, 06 Jul 2014) $ +// $Rev: 11812 $ +/******************************************************************************/ + +module UTRAN_ASN1_ASP_RAB_Templates_r10 { + + import from UTRAN_CommonDefs all; + import from UTRAN_CommonAspDefs all; + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_ASP_Definitions language "ASN.1:2002" all; + import from UTRAN_RRC_CommonTemplates all; + import from UTRAN_ASN1_ASP_Templates all; + + // ----------------------------------------------------------------------------- + + template (value) RL_Setup_FDD_PhysicalChannelInfo_Type cs_HS_PDSCHInfoExtension_FDD_r10OrLater(template (value) HS_PDSCHInfo_r10OrLaterExtensionType p_HS_PDSCHInfo_r10OrLaterExtensionType) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + hS_PDSCHInfo := { + relAspTypeExtension := p_HS_PDSCHInfo_r10OrLaterExtensionType + } + }; + + template (value) DPCHInfo_r5OrLater_FDD cs_DPCHInfo_Extension_FDD(template (value) DPCHInfo_r10OrLaterExtensionType_FDD p_DPCHInfo_r10) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + relAspTypeExtension := p_DPCHInfo_r10 // @sic R5-134957 sic@ + }; + + template (value) DPCHInfo_r5OrLater_TDD cs_DPCHInfo_Extension_TDD(template (value) DPCHInfo_r10OrLaterExtensionType_TDD p_DPCHInfo_r10) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + relAspTypeExtension := p_DPCHInfo_r10 // @sic R5-134957 sic@ + }; + + template (value) DL_DPCHInfo_r10_FDD cs_DL_DPCH_FDD_r10(template (value) DL_CommonInformation_r10 p_DL_CommonInformation, + SF512_AndCodeNumber p_Sf, + template (omit) SecondaryScramblingCode p_SecondaryScramblingCode := tsc_DL_DPCH1_2ndScrC, + DL_TxPower p_Dl_TxPower := tsc_DL_TxPower_DPCH) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + dl_CommonInformation := p_DL_CommonInformation, + dl_Dpch_InfoPerRL := { + dl_DPCH_InfoPerRL := cs_DL_DPCH_InfoPerRL_SRB_FDD(p_Sf, p_SecondaryScramblingCode) + }, + rl_Information := cs_RL_InfoDef_FDD(p_Dl_TxPower) + }; + + template (value) HS_DPCCHInfo_r10 cs_HS_DPCCHInfo_r10 := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cqi_RepetitionFactor := 1, + ackNackRepetitionFactor := 1, + mimoStatus := false, + firstSecondaryServing_HS_DSCH_Cell := deactivated, + secondSecondaryServing_HS_DSCH_Cell := deactivated, + thirdSecondaryServing_HS_DSCH_Cell := deactivated + }; + +} diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ASN1_ASP_RAB_Templates_r11.ttcn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ASN1_ASP_RAB_Templates_r11.ttcn new file mode 100644 index 0000000..6a95131 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ASN1_ASP_RAB_Templates_r11.ttcn @@ -0,0 +1,104 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-11 11:17:38 +0200 (Thu, 11 Sep 2014) $ +// $Rev: 12203 $ +/******************************************************************************/ + +module UTRAN_ASN1_ASP_RAB_Templates_r11 { + import from UTRAN_CommonDefs all; + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_ASP_Definitions language "ASN.1:2002" all; + import from UTRAN_RRC_CommonTemplates all; + import from UTRAN_RRC_Templates_r11 all; + import from UTRAN_RRC_RAB_Templates_r11 all; + import from UTRAN_ASN1_ASP_Templates all; + import from UTRAN_ASN1_ASP_Templates_r11 all; + + //============================================================================================= + // HS-PDSCH + //============================================================================================= + + template (value) HS_PDSCHInfo_r10OrLaterExtensionType cs_HSPDSCH_Information_FDD_r11(HSDSCH_physical_layer_category p_HSDSCH_physical_layer_category, + template (value) DL_HSPDSCH_Information_r11 p_DL_HSPDSCH_Information, + boolean p_Sttd_Indicator) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + rel11_AspExt := { + hSDSCHPhysicalLayerCategory := p_HSDSCH_physical_layer_category, + hsdsch_physical_layer_category_ext := omit, //Since mach-ehs is not configured + hsdsch_physical_layer_category_ext2 := omit, //Since dual cell is not configured + hsdsch_physical_layer_category_ext3 := omit, //Since dual cell + MIMO is not configured + hsdsch_physical_layer_category_ext4 := omit, //Since dual cell + MIMO is not configured + hsdsch_physical_layer_category_ext5 := omit, //Since dual cell + MIMO is not configured + hsdsch_physical_layer_category_ext6 := omit, //Since dual cell + MIMO is not configured + hsdsch_physical_layer_category_ext7 := omit, //Since dual cell + MIMO is not configured + hsdsch_physical_layer_category_ext8 := omit, //Since dual cell + MIMO is not configured + h_RNTI := tsc_H_RNTI, + dlHSPDSCHInformation := p_DL_HSPDSCH_Information, + sttd_Indicator := p_Sttd_Indicator, + hs_SCCH_TxPower := tsc_DL_hs_SCCH_TxPower, + ss_DTX_Info := omit, + hs_scch_LessInfo := omit, + mimo_Parameters := omit, + hs_DPCCHToFollow := omit, // DEFAULT TRUE + hs_SCCH_SttdIndicator := omit // DEFAULT FALSE @sic R5-120613 sic@ + } + }; + + //---------------------------------------------------------------------------- + // TrCH + //---------------------------------------------------------------------------- + template (value) TrCHInfo cs_TrCHInfoExtension(template (value) TrCHInfo_r10OrLaterExtensionType p_TrCHInfo_r10OrLaterExtension) := + { + ulconnectedTrCHList := omit, + ulTFCS := omit, + dlconnectedTrCHList := omit, + dlTFCS := omit, + hsDSCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, + relAspTypeExtension := p_TrCHInfo_r10OrLaterExtension + }; + + //============================================================================================= + // RLC + //============================================================================================= + template (value) TrCHInfo_r10OrLaterExtensionType cs_HS_DSCHMacdFlows_r11 ( template (value) HARQ_Info_r11 p_HARQ_Info, + template (value) SS_MAC_ehs_AddReconfReordQueueList_r11 p_MAC_ehs_AddReconfReordQueueList_r11 ) := + { + rel11_AspExt := { + ehs_DSCH_Flows_r11 := { + harqInfo_r11 := p_HARQ_Info, + addOrReconfMAC_ehs_ReordQ := p_MAC_ehs_AddReconfReordQueueList_r11, + ackNackRepetitionFactor := 1, + mimoStatus := omit + } + } + }; + + + //---------------------------------------------------------------------------- + template (value) SS_RLC_Info_r10OrLaterExtensionType cs_RB_AM_Info_RAB_Extension_FDD_r11(template (value) OctetModeRLC_SizeInfoType1 p_RLC_Size) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RB_AM_Info_Common_FDD_r11(cs_DL_AM_RLC_r11, cs_SS_DL_RLC_AM_Mode(omit, cs_UL_AM_RLC, cs_SS_DL_RLC_Mode_PDU_fixedSize(p_RLC_Size))); + + template (value) SS_RLC_Info_r10OrLaterExtensionType cs_RB_AM_Info_RAB_Extension_TDD_r11(template (value) OctetModeRLC_SizeInfoType1 p_RLC_Size) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RB_AM_Info_Common_TDD_r11(cs_DL_AM_RLC_r11, cs_SS_DL_RLC_AM_Mode(omit, cs_UL_AM_RLC, cs_SS_DL_RLC_Mode_PDU_fixedSize(p_RLC_Size))); + + template (value) SS_RLC_Info_r10OrLaterExtensionType cs_RB25_AM_Info_FDD_r11(integer p_PayLoad := 320, + template (value) UL_AM_RLC_Mode p_UL_AM_RLC_Mode := cds_UL_AM_RLC_HSDPA) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RB_AM_Info_Common_FDD_r11(cds_DL_AM_RLC_HSDPA_r11, cs_SS_DL_RLC_AM_Mode(p_PayLoad, p_UL_AM_RLC_Mode)); + + template (value) SS_RLC_Info_r10OrLaterExtensionType cs_RB25_AM_Info_TDD_r11(integer p_PayLoad := 320, + template (value) UL_AM_RLC_Mode p_UL_AM_RLC_Mode := cds_UL_AM_RLC_HSDPA) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RB_AM_Info_Common_TDD_r11(cds_DL_AM_RLC_HSDPA_r11, cs_SS_DL_RLC_AM_Mode(p_PayLoad, p_UL_AM_RLC_Mode)); + +} diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ASN1_ASP_Templates.ttcn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ASN1_ASP_Templates.ttcn new file mode 100644 index 0000000..5323909 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ASN1_ASP_Templates.ttcn @@ -0,0 +1,4358 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-10 21:20:35 +0200 (Wed, 10 Sep 2014) $ +// $Rev: 12193 $ +/******************************************************************************/ + +module UTRAN_ASN1_ASP_Templates { + import from CommonDefs all; + + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_ASP_Definitions language "ASN.1:2002" all; + + import from UTRAN_CommonDefs all; + import from UTRAN_CommonAspDefs all; + import from UTRAN_RRC_CommonTemplates all; + + //============================================================================= + // Constants + //----------------------------------------------------------------------------- + + const DL_TxPower tsc_DL_TxPower_DPCH := -5; /* down link transmit power level of DPCH used for CS RABS. + @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const DL_TxPower tsc_PowerpCCPCH_FDD := -2; /* transmission power level of primary CCPCH + @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const DL_TxPower tsc_PowerpSCH := -5; /* transmission power level of primary SCH relative to CPICH + @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const DL_TxPower tsc_PowersCCPCH1 := -2; /* transmission power level of secondary CCPCH1 relative to CPICH + @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const DL_TxPower tsc_PowersSCH := -5; /* transmission power level of secondary SCH relative to CPICH. + @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const DL_TxPower tsc_PowerFPACH := -2; /* relative transmission power level of FPACH.// Default is -5 dBm + @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const DL_TxPower tsc_DL_TxPower_DPCH_64k := -2; /* down link transmit power level of DPCH used 64 KBPS PS RAB's + @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + const DL_TxPower tsc_DL_hs_SCCH_TxPower := 3; /* Channel power for HS-SCCH relative to CPICH. + Default value is +3dB + @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + const DL_TxPower tsc_DL_hs_PDSCH_TxPower := 7; /* Channel power for HS-PDSCH relative to CPICH. + Default value is +7dB + @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + const DL_TxPower_PCCPCH tsc_PowerpCCPCH_TDD := -60; /* transmission power level of primary CCPCH relative to CPICH + @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const DL_TxPower_PCPICH tsc_PowerpCPICH := -60; /* transmission power level of primary CPICH. The power level is specified in terms of CPICH_Ec. + @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, SSNITZ, UTRAN) */ + + const DwPCH_Power tsc_DwPCH_power := 180; /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + const SCCPCHSlotFormat tsc_SlotFormatsCCPCH1 := 8; /* channelization code for secondary CCPCH1 when spreading factor = 64, default value is 8 + @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + const AvailableSubChannelNumbers tsc_SubChNum := '111111111111'B; /* Available subchannel numbers for PRACH, this initial value is for ts_SS_CreateCellFACH (from 34.108 cl. 6.1 (SIB5)) + @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + //============================================================================= + // COMMON TEMPLATES + //----------------------------------------------------------------------------- + + template (value) SS_ActivationTime cs_ActivateNow := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + activateNow := NULL + }; + + template (value) SS_ActivationTime cs_ActivateCFN(template (value) ActivationTime p_ActTime) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + activationCFN := p_ActTime + }; + + //----------------------------------------------------------------------------- + + template (value) SS_DL_RLC_Mode.dl_RLC_PDU_size cs_SS_DL_RLC_Mode_PDU_fixedSize(template (value) OctetModeRLC_SizeInfoType1 p_RLC_Size) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + fixedSize := p_RLC_Size + }; + + template (value) SS_DL_RLC_Mode.dl_RLC_PDU_size cs_SS_DL_RLC_Mode_PDU_flexibleSize := + { /* @status APPROVED (UTRAN) */ + flexibleSize := { + li_Size := size7, + max_RLC_DataField_Size := omit + } + }; + + template (value) SS_DL_RLC_Mode cs_SS_DL_RLC_AM_Mode(template (omit) integer p_PayLoad, + template (value) UL_AM_RLC_Mode p_UL_AM_RLC_Mode, + template (omit) SS_DL_RLC_Mode.dl_RLC_PDU_size p_DL_RLC_PDU_size := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + dl_PayloadSize := p_PayLoad, + dl_RLCModeInfo := { + ul_AM_RLC_Mode := p_UL_AM_RLC_Mode + }, + dl_UM_RLC_LI_size := omit, + dl_UM_outOfSeqDelivery := omit, + dl_RLC_PDU_size := p_DL_RLC_PDU_size + }; + + template (value) SS_DL_RLC_Mode cs_SS_DL_RLC_Mode_FixedSize(template (value) UL_AM_RLC_Mode p_UL_AM_RLC_Mode, + template (value) OctetModeRLC_SizeInfoType1 p_RLC_Size) := + /* @status APPROVED (UTRAN) */ + cs_SS_DL_RLC_AM_Mode(omit, p_UL_AM_RLC_Mode, cs_SS_DL_RLC_Mode_PDU_fixedSize(p_RLC_Size)); + + //----------------------------------------------------------------------------- + + template (value) RL_Information_FDD cs_RL_InfoDef_FDD(DL_TxPower p_DL_TxPower := tsc_DL_TxPower_DPCH) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + powerOffsetOfTFCI_PO1 := tsc_DPCH_PowerOffsetTFCI, + powerOffsetOfTPC_PO2 := tsc_DPCH_PowerOffsetTPC, + powerOffsetOfPILOT_PO3 := tsc_DPCH_PowerOffsetPILOT, + dl_TxPower := p_DL_TxPower, + dl_TxPowerMax := 15, + dl_TxPowerMin := -35, + cfnTgtSfnFrameOffset := omit, + dl_FDPCH_ShoConfig := omit + }; + + template (value) RL_Information_TDD cs_RL_InfoDef_TDD(DL_TxPower p_DL_TxPower := tsc_DL_TxPower_DPCH) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + powerOffsetOfTFCI_PO1 := tsc_DPCH_PowerOffsetTFCI, + powerOffsetOfTPC_PO2 := tsc_DPCH_PowerOffsetTPC, + powerOffsetOfPILOT_PO3 := tsc_DPCH_PowerOffsetPILOT, + dl_TxPower := p_DL_TxPower, + dl_TxPowerMax := 15, + dl_TxPowerMin := -35, + cfnTgtSfnFrameOffset := omit, + dL_TimeslotISCPInfoLCR := omit + }; + + template (value) DL_DPCHInfo_r8_FDD cs_DL_DPCH_SRB_StandAloneDPCH_FDD(template (omit) SecondaryScramblingCode p_SecondaryScramblingCode) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + dl_CommonInformation := cs_DL_CommonInfoDCH_SRB_FDD(tsc_DL_DPCH1_SFP_SRB, fixed, false), + dl_Dpch_InfoPerRL := { + dl_DPCH_InfoPerRL := cs_DL_DPCH_InfoPerRL_SRB_FDD( tsc_DL_DPCH1_ChC_SRB, p_SecondaryScramblingCode ) + }, + rl_Information := cs_RL_InfoDef_FDD + }; + + template (value) DL_DPCHInfo_r8_TDD cs_DL_DPCH_SRB_StandAlone_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + dl_CommonInformation := cs_DL_CommonInfo_r8_TDD, + dl_Dpch_InfoPerRL := { + dl_DPCH_InfoPerRL := cs_DL_DPCH_InfoPerRL_SRB_TDD + }, + rl_Information := cs_RL_InfoDef_TDD + }; + + //----------------------------------------------------------------------------- + + template (value) TimeSlotConfiguration_LCR cs_TimeSlotConfig_LCR_Active(TimeslotNumber_LCR_r4 p_TimeslotNumber, + TimeSlotConfiguration_LCR.timeSlotDirection p_Dirction) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + timeSlotLCR := p_TimeslotNumber, + timeSlotStatus := active, + timeSlotDirection := p_Dirction + }; + + template (value) TimeSlotConfigurationList_LCR cs_Default_TimeSlot_Config_List := + { /* Default_TimeSlot_Config_List; TDD only */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_TimeSlotConfig_LCR_Active(1, uplink), + cs_TimeSlotConfig_LCR_Active(2, uplink), + cs_TimeSlotConfig_LCR_Active(3, uplink), + cs_TimeSlotConfig_LCR_Active(4, downlink), + cs_TimeSlotConfig_LCR_Active(5, downlink), + cs_TimeSlotConfig_LCR_Active(6, downlink) + }; + + //----------------------------------------------------------------------------- + + template (value) TrChConfigType cs_TrChConfigTypeDCH_NoSHO := { dch := normal }; /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) TrChConfigType cs_TrChConfigTypeNonDCH := { nonDch := NULL }; /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + //----------------------------------------------------------------------------- + + template (value) TrCHInfo cs_TrChInfoBCH1_FDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ulconnectedTrCHList := omit, + ulTFCS := omit, + dlconnectedTrCHList := { + { + trchid := tsc_BCH1, + transportChannelInfo := { + tti := { + tti20 := { + { + tb_Size := 246, + numberOfTbSizeList := { + { one := NULL } + }, + logicalChannelList := { + configured := NULL + } + } + } + }, + semistaticTF_Information := { + channelCodingType := { + convolutional := half + }, + rateMatchingAttribute := 1, + crc_Size := crc16 + } + } + } + }, + dlTFCS := cs_TFCS_Cmpl0(cs_PowerOffsetInfoBelow64k), + hsDSCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCHInfo cs_TrChInfoRACH1_FDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ulconnectedTrCHList := { + { + trchid := tsc_RACH1, + transportChannelInfo := cs_RACH_TFS_FDD + } + }, + ulTFCS := cs_TFCS_Cmpl0_1_2_Rx, // sent to SS + dlconnectedTrCHList := omit, + dlTFCS := omit, + hsDSCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCHInfo cs_TrChInfoPCH_FACH_PS_FDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ulconnectedTrCHList := omit, + ulTFCS := omit, + dlconnectedTrCHList := { + { + trchid := tsc_PCH1, + transportChannelInfo := cs_PCH_TFS_FDD + }, + { + trchid := tsc_FACH1, + transportChannelInfo := cs_FACH_TFS_FDD + }, + { + trchid := tsc_FACH2, + transportChannelInfo := cs_FACH_TFS_PS_FDD + } + }, + dlTFCS := cs_TFCS_CmplFACH_Tx(cs_PowerOffsetInfoBelow64k), // sent to SS + hsDSCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCHInfo cs_TrChInfoDL_13_6_StandAlone_FDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ulconnectedTrCHList := omit, + ulTFCS := omit, + dlconnectedTrCHList := { + { + trchid := tsc_DL_DCH5, + transportChannelInfo := cs_DCH_148_TTI_10_TFS_FDD + } + }, + dlTFCS := cs_TFCS_Cmpl0_1_Tx_FDD(cs_PowerOffsetInfoBelow64k), + hsDSCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCHInfo cs_TrChInfoUL_13_6_StandAlone_FDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ulconnectedTrCHList := { + { + trchid := tsc_UL_DCH5, + transportChannelInfo := cs_DCH_148_TTI_10_TFS_FDD + } + }, + ulTFCS := cs_TFCS_Cmpl0_1_Rx, // sent to SS + dlconnectedTrCHList := omit, + dlTFCS := omit, + hsDSCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCHInfo_TDD cs_TrChInfoBCH1_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ulconnectedTrCHList := omit, + ulTFCS := omit, + dlconnectedTrCHList := { + { + trchid := tsc_BCH1, + transportChannelInfo := { + tfsMode := { + commonTransChTFS := { + tti := { + tti20 := { + { + rlc_Size := { + tdd := { + commonTDD_Choice := { + bitModeRLC_SizeInfo := { + sizeType2 := { + part1 := 14, + part2 := 6 + } + } + } + } + }, + numberOfTbSizeList := { + { + one := NULL + } + }, + logicalChannelList := { + configured := NULL + } + } + } + }, + semistaticTF_Information := { + channelCodingType := { + convolutional := third // @sic R5s130559 sic@ + }, + rateMatchingAttribute := 1, + crc_Size := crc16 + } + } + } + } + } + }, + dlTFCS := cs_TFCS_Cmpl0_TDD, + hsDSCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, + relAspTypeExtension := omit + }; + + template (value) TrCHInfo_TDD cs_TrChInfoRACH1_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ulconnectedTrCHList := { + { + trchid := tsc_RACH1, + transportChannelInfo := cs_RACH_TFS_TDD + } + }, + ulTFCS := cs_TFCS_Cmpl0(omit), // @sic R5s120405 sic@ + dlconnectedTrCHList := omit, + dlTFCS := omit, + hsDSCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, + relAspTypeExtension := omit + }; + + template (value) TrCHInfo_TDD cs_TrChInfoPCH_FACH_PS_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ulconnectedTrCHList := omit, + ulTFCS := omit, + dlconnectedTrCHList := { + { + trchid := tsc_PCH1, + transportChannelInfo := cs_PCH_TFS_TDD + }, + { + trchid := tsc_FACH1, + transportChannelInfo := cs_FACH_TFS_TDD + }, + { + trchid := tsc_FACH2, + transportChannelInfo := cs_FACH_TFS_PS_TDD // @sic R5-133724 sic@ + } + }, + dlTFCS := cs_TFCS_SCCPCH_LCR, // sent to SS + hsDSCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, + relAspTypeExtension := omit + }; + + template (value) TrCHInfo_TDD cs_TrChInfoDL_13_6_StandAlone_TDD := + { + ulconnectedTrCHList := omit, + ulTFCS := omit, + dlconnectedTrCHList := { + { + trchid := tsc_DL_DCH5, + transportChannelInfo := cs_DCH_148_TTI_10_TFS_TDD + } + }, + dlTFCS := cs_TFCS_Cmpl0_1_Tx_TDD, + hsDSCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, + relAspTypeExtension := omit + }; + + template (value) TrCHInfo_TDD cs_TrChInfoDL_3_4_StandAlone_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ulconnectedTrCHList := omit, + ulTFCS := omit, + dlconnectedTrCHList := { + { + trchid := tsc_DL_DCH5, + transportChannelInfo := cs_DCH_148_TTI_40_TFS_TDD + } + }, + dlTFCS := cs_TFCS_Cmpl0_1_Tx_TDD, + hsDSCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, + relAspTypeExtension := omit + }; + + template (value) TrCHInfo_TDD cs_TrChInfoUL_13_6_StandAlone_TDD := + { /* @status APPROVED (LTE_IRAT) */ + ulconnectedTrCHList := { + { + trchid := tsc_UL_DCH5, + transportChannelInfo := cs_DCH_148_TTI_10_TFS_TDD + } + }, + ulTFCS := cs_TFCS_Cmpl0_1_Rx, // sent to SS + dlconnectedTrCHList := omit, + dlTFCS := omit, + hsDSCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, + relAspTypeExtension := omit + }; + + template (value) TrCHInfo_TDD cs_TrChInfoUL_3_4_StandAlone_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ulconnectedTrCHList := { + { + trchid := tsc_UL_DCH5, + transportChannelInfo := cs_DCH_148_TTI_40_TFS_TDD + } + }, + ulTFCS := cs_TFCS_Cmpl0_1_Rx, // sent to SS + dlconnectedTrCHList := omit, + dlTFCS := omit, + hsDSCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, + relAspTypeExtension := omit + }; + + //----------------------------------------------------------------------------- + + template (value) TrCH_LogicalChannelMapping cs_TrCH_LogicalChannelMapping_DL(SS_DL_TransportChannelType p_TransportChannelType, + LogicalChannelIdentity p_LogicalChannelIdentity, + LogicalChannelType p_LogicalChannelType, + MAC_LogicalChannelPriority p_LogicalChannelPriority, + integer p_RB_Identity) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + logicalChannel_Mapping := { + dl_LogicalChannelMapping := { + macHeaderManipulation := normalMacHeader, + dl_TransportChannelType := p_TransportChannelType, + logicalChannelIdentity := p_LogicalChannelIdentity, + logicalChannelType := p_LogicalChannelType, + rlc_SizeList := { + configured := NULL + }, + mac_LogicalChannelPriority := p_LogicalChannelPriority + } + }, + rB_Identity := p_RB_Identity, + cn_DomainIdentity := omit + }; + + template (value) TrCH_LogicalChannelMapping_TDD cs_TrCH_LogicalChannelMapping_DL_TDD(SS_DL_TransportChannelType p_TransportChannelType, + LogicalChannelIdentity p_LogicalChannelIdentity, + LogicalChannelType p_LogicalChannelType, + MAC_LogicalChannelPriority p_LogicalChannelPriority, + integer p_RB_Identity) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + logicalChannel_Mapping := { + dl_LogicalChannelMapping := { + macHeaderManipulation := normalMacHeader, + dl_TransportChannelType := p_TransportChannelType, + logicalChannelIdentity := p_LogicalChannelIdentity, + logicalChannelType := p_LogicalChannelType, + rlc_SizeList := { + configured := NULL + }, + mac_LogicalChannelPriority := p_LogicalChannelPriority + } + }, + rB_Identity := p_RB_Identity, + cn_DomainIdentity := omit + }; + + template (value) TrCH_LogicalChannelMapping cs_TrCH_LogicalChannelMapping_DL_RB25 := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + logicalChannel_Mapping := { + dl_LogicalChannelMapping := { + macHeaderManipulation := normalMacHeader, + dl_TransportChannelType := hsdsch, + logicalChannelIdentity := tsc_DL_DTCH1, + logicalChannelType := dTCH, + rlc_SizeList := { + explicitList := { + { + rlc_SizeIndex := 1 + } + } + }, + mac_LogicalChannelPriority := 8 + } + }, + rB_Identity := tsc_RB25, + cn_DomainIdentity := ps_domain + }; + + template (value) TrCH_LogicalChannelMapping_TDD cs_TrCH_LogicalChannelMapping_DL_RB25_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + logicalChannel_Mapping := { + dl_LogicalChannelMapping := { + macHeaderManipulation := normalMacHeader, + dl_TransportChannelType := hsdsch, + logicalChannelIdentity := tsc_DL_DTCH1, + logicalChannelType := dTCH, + rlc_SizeList := { + explicitList := { + { + rlc_SizeIndex := 1 + } + } + }, + mac_LogicalChannelPriority := 8 + } + }, + rB_Identity := tsc_RB25, + cn_DomainIdentity := ps_domain + }; + + template (value) TrCH_LogicalChannelMapping cs_TrCH_LogicalChannelMapping_UL(SS_UL_TransportChannelType p_TransportChannelType, + LogicalChannelIdentity p_LogicalChannelIdentity, + LogicalChannelType p_LogicalChannelType, + integer p_RB_Identity) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + logicalChannel_Mapping := { + ul_LogicalChannelMapping := { + macHeaderManipulation := normalMacHeader, + ul_TransportChannelType := p_TransportChannelType, + logicalChannelIdentity := p_LogicalChannelIdentity, + logicalChannelType := p_LogicalChannelType + } + }, + rB_Identity := p_RB_Identity, + cn_DomainIdentity := omit + }; + + template (value) TrCH_LogicalChannelMapping_TDD cs_TrCH_LogicalChannelMapping_UL_TDD(SS_UL_TransportChannelType_TDD p_TransportChannelType, + LogicalChannelIdentity p_LogicalChannelIdentity, + LogicalChannelType p_LogicalChannelType, + integer p_RB_Identity) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + logicalChannel_Mapping := { + ul_LogicalChannelMapping := { + macHeaderManipulation := normalMacHeader, + ul_TransportChannelType := p_TransportChannelType, + logicalChannelIdentity := p_LogicalChannelIdentity, + logicalChannelType := p_LogicalChannelType + } + }, + rB_Identity := p_RB_Identity, + cn_DomainIdentity := omit + }; + + //----------------------------------------------------------------------------- + + template (value) TrCH_LogCHMappingList1 cs_TrLogMappingPCH_FACH_CellDCH := + { /* For FDD mode only. map PCCH to PCH and CCCH and BCCH(for BCCH_FACH) + To be used for the Cell DCH configuration + @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ulconnectedTrCHList := omit, + dlconnectedTrCHList := { + { + trchid := tsc_PCH1, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL(pch, tsc_PCCH1, pCCH, tsc_MAC_LogicalChannelPrio1, tsc_RB_PCCH) + } + }, + { + trchid := tsc_FACH1, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL(fach, tsc_DL_CCCH5, cCCH, tsc_MAC_LogicalChannelPrio1, tsc_RB0) + } + } + }, + dlconnectedMACdFlows := omit, + dlconnectedMAC_ehsFlows := omit, + dlconnectedMAC_ehsCommonFlows := omit, + dlconnectedMAC_ehsFlowsDC := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCH_LogCHMappingList1_TDD cs_TrLogMappingPCH_FACH_CellDCH_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ulconnectedTrCHList := omit, + dlconnectedTrCHList := { + { + trchid := tsc_PCH1, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL_TDD(pch, tsc_PCCH1, pCCH, tsc_MAC_LogicalChannelPrio1, tsc_RB_PCCH) + } + }, + { + trchid := tsc_FACH1, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL_TDD(fach, tsc_DL_CCCH5, cCCH, tsc_MAC_LogicalChannelPrio1, tsc_RB0) + } + } + }, + dlconnectedMACdFlows := omit, + dlconnectedMAC_ehsFlows := omit, + dlconnectedMAC_ehsCommonFlows := omit, + dlconnectedMAC_ehsFlowsDC := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCH_LogCHMappingList1 cs_TrLogMappingPCH_FACH_PS_FDD := + { /* For FDD mode only (PS). map PCCH to PCH and DCCH1, DCCH2, DCCH3, DCCH4, CCCH, BCCH(for BCCH_FACH) to FACH1, and DTCH to FACH2 + @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + ulconnectedTrCHList := omit, + dlconnectedTrCHList := { + { + trchid := tsc_PCH1, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL(pch, tsc_PCCH1, pCCH, tsc_MAC_LogicalChannelPrio1, tsc_RB_PCCH) + } + }, + { + trchid := tsc_FACH1, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL(fach, tsc_BCCH6, bCCH, tsc_MAC_LogicalChannelPrio6, tsc_RB_BCCH_FACH), + cs_TrCH_LogicalChannelMapping_DL(fach, tsc_DL_CCCH5, cCCH, tsc_MAC_LogicalChannelPrio1, tsc_RB0), + cs_TrCH_LogicalChannelMapping_DL(fach, tsc_DL_DCCH1, dCCH, tsc_MAC_LogicalChannelPrio1, tsc_RB1), + cs_TrCH_LogicalChannelMapping_DL(fach, tsc_DL_DCCH2, dCCH, tsc_MAC_LogicalChannelPrio2, tsc_RB2), + cs_TrCH_LogicalChannelMapping_DL(fach, tsc_DL_DCCH3, dCCH, tsc_MAC_LogicalChannelPrio3, tsc_RB3), + cs_TrCH_LogicalChannelMapping_DL(fach, tsc_DL_DCCH4, dCCH, tsc_MAC_LogicalChannelPrio4, tsc_RB4) + } + }, + { + trchid := tsc_FACH2, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL(fach, tsc_DL_DTCH1, dTCH, tsc_MAC_LogicalChannelPrio8, tsc_RB20) + } + } + }, + dlconnectedMACdFlows := omit, + dlconnectedMAC_ehsFlows := omit, + dlconnectedMAC_ehsCommonFlows := omit, + dlconnectedMAC_ehsFlowsDC := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCH_LogCHMappingList1_TDD cs_TrLogMappingPCH_FACH_PS_TDD := + { /* For LCR TDD mode only (PS). map PCCH to PCH and DCCH1, DCCH2, DCCH3, DCCH4, CCCH, BCCH(for BCCH_FACH) and DTCH to FACH1 */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + ulconnectedTrCHList := omit, + dlconnectedTrCHList := { + { + trchid := tsc_PCH1, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL_TDD(pch, tsc_PCCH1, pCCH, tsc_MAC_LogicalChannelPrio1, tsc_RB_PCCH) + } + }, + { + trchid := tsc_FACH1, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL_TDD(fach, tsc_BCCH6, bCCH, tsc_MAC_LogicalChannelPrio6, tsc_RB_BCCH_FACH), + cs_TrCH_LogicalChannelMapping_DL_TDD(fach, tsc_DL_CCCH5, cCCH, tsc_MAC_LogicalChannelPrio1, tsc_RB0), + cs_TrCH_LogicalChannelMapping_DL_TDD(fach, tsc_DL_DCCH1, dCCH, tsc_MAC_LogicalChannelPrio1, tsc_RB1), + cs_TrCH_LogicalChannelMapping_DL_TDD(fach, tsc_DL_DCCH2, dCCH, tsc_MAC_LogicalChannelPrio2, tsc_RB2), + cs_TrCH_LogicalChannelMapping_DL_TDD(fach, tsc_DL_DCCH3, dCCH, tsc_MAC_LogicalChannelPrio3, tsc_RB3), + cs_TrCH_LogicalChannelMapping_DL_TDD(fach, tsc_DL_DCCH4, dCCH, tsc_MAC_LogicalChannelPrio4, tsc_RB4) + } + }, // RB20 mapped to FACH2 @sic R5s130705 sic@ + { + trchid := tsc_FACH2, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL_TDD(fach, tsc_DL_DTCH1, dTCH, tsc_MAC_LogicalChannelPrio8, tsc_RB20) + } + } + + }, + dlconnectedMACdFlows := omit, + dlconnectedMAC_ehsFlows := omit, + dlconnectedMAC_ehsCommonFlows := omit, + dlconnectedMAC_ehsFlowsDC := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCH_LogCHMappingList1 cds_TrLogMappingPCH_FACH_PS_HS_FDD modifies cs_TrLogMappingPCH_FACH_PS_FDD := + { /* For FDD mode only (PS). map PCCH to PCH and DCCH1, DCCH2, DCCH3, DCCH4, CCCH, BCCH(for BCCH_FACH) to FACH1, and DTCH to FACH2 */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + dlconnectedTrCHList := { + [2] := + { + trchid := tsc_FACH2, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL(fach, tsc_DL_DTCH1, dTCH, tsc_MAC_LogicalChannelPrio8, tsc_RB25) + } + } + } + }; + + template (value) TrCH_LogCHMappingList1 cs_TrLogMappingRACH2 := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ulconnectedTrCHList := { + { + trchid := tsc_RACH1, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_UL(rach, tsc_UL_CCCH5, cCCH, tsc_RB0) + } + } + }, + dlconnectedTrCHList := omit, + dlconnectedMACdFlows := omit, + dlconnectedMAC_ehsFlows := omit, + dlconnectedMAC_ehsCommonFlows := omit, + dlconnectedMAC_ehsFlowsDC := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCH_LogCHMappingList1_TDD cs_TrLogMappingRACH2_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ulconnectedTrCHList := { + { + trchid := tsc_RACH1, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_UL_TDD(rach, tsc_UL_CCCH5, cCCH, tsc_RB0) + } + } + }, + dlconnectedTrCHList := omit, + dlconnectedMACdFlows := omit, + dlconnectedMAC_ehsFlows := omit, + dlconnectedMAC_ehsCommonFlows := omit, + dlconnectedMAC_ehsFlowsDC := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCH_LogCHMappingList1 cds_TrLogMappingRACH_DTCH_HS modifies cs_TrLogMappingRACH_DTCH := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + ulconnectedTrCHList := { + { + trchid := tsc_RACH1, + trCH_LogCHMappingList := { + [5] := cs_TrCH_LogicalChannelMapping_UL(rach, tsc_UL_DTCH1, dTCH, tsc_RB25) + } + } + } + }; + + template (value) TrCH_LogCHMappingList1 cs_TrLogMappingBCH1 := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ulconnectedTrCHList := omit, + dlconnectedTrCHList := { + { + trchid := tsc_BCH1, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL(bch, tsc_BCCH1, bCCH, tsc_MAC_LogicalChannelPrio1, tsc_RB_BCCH) + } + } + }, + dlconnectedMACdFlows := omit, + dlconnectedMAC_ehsFlows := omit, + dlconnectedMAC_ehsCommonFlows := omit, + dlconnectedMAC_ehsFlowsDC := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCH_LogCHMappingList1_TDD cs_TrLogMappingBCH1_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ulconnectedTrCHList := omit, + dlconnectedTrCHList := { + { + trchid := tsc_BCH1, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL_TDD(bch, tsc_BCCH1, bCCH, tsc_MAC_LogicalChannelPrio1, tsc_RB_BCCH) + } + } + }, + dlconnectedMACdFlows := omit, + dlconnectedMAC_ehsFlows := omit, + dlconnectedMAC_ehsCommonFlows := omit, + dlconnectedMAC_ehsFlowsDC := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCH_LogCHMappingList1 cs_TrLogMappingDL_4DCCH := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ulconnectedTrCHList := omit, + dlconnectedTrCHList := { + { + trchid := tsc_DL_DCH5, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL(dch, tsc_DL_DCCH1, dCCH, tsc_MAC_LogicalChannelPrio1, tsc_RB1), + cs_TrCH_LogicalChannelMapping_DL(dch, tsc_DL_DCCH2, dCCH, tsc_MAC_LogicalChannelPrio2, tsc_RB2), + cs_TrCH_LogicalChannelMapping_DL(dch, tsc_DL_DCCH3, dCCH, tsc_MAC_LogicalChannelPrio3, tsc_RB3), + cs_TrCH_LogicalChannelMapping_DL(dch, tsc_DL_DCCH4, dCCH, tsc_MAC_LogicalChannelPrio4, tsc_RB4) + } + } + }, + dlconnectedMACdFlows := omit, + dlconnectedMAC_ehsFlows := omit, + dlconnectedMAC_ehsCommonFlows := omit, + dlconnectedMAC_ehsFlowsDC := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCH_LogCHMappingList1_TDD cs_TrLogMappingDL_4DCCH_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ulconnectedTrCHList := omit, + dlconnectedTrCHList := { + { + trchid := tsc_DL_DCH5, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_DL_TDD(dch, tsc_DL_DCCH1, dCCH, tsc_MAC_LogicalChannelPrio1, tsc_RB1), + cs_TrCH_LogicalChannelMapping_DL_TDD(dch, tsc_DL_DCCH2, dCCH, tsc_MAC_LogicalChannelPrio2, tsc_RB2), + cs_TrCH_LogicalChannelMapping_DL_TDD(dch, tsc_DL_DCCH3, dCCH, tsc_MAC_LogicalChannelPrio3, tsc_RB3), + cs_TrCH_LogicalChannelMapping_DL_TDD(dch, tsc_DL_DCCH4, dCCH, tsc_MAC_LogicalChannelPrio4, tsc_RB4) + } + } + }, + dlconnectedMACdFlows := omit, + dlconnectedMAC_ehsFlows := omit, + dlconnectedMAC_ehsCommonFlows := omit, + dlconnectedMAC_ehsFlowsDC := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCH_LogCHMappingList1 cs_TrLogMappingUL_4DCCH := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ulconnectedTrCHList := { + { + trchid := tsc_UL_DCH5, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_UL(dch, tsc_UL_DCCH1, dCCH, tsc_RB1), + cs_TrCH_LogicalChannelMapping_UL(dch, tsc_UL_DCCH2, dCCH, tsc_RB2), + cs_TrCH_LogicalChannelMapping_UL(dch, tsc_UL_DCCH3, dCCH, tsc_RB3), + cs_TrCH_LogicalChannelMapping_UL(dch, tsc_UL_DCCH4, dCCH, tsc_RB4) + } + } + }, + dlconnectedTrCHList := omit, + dlconnectedMACdFlows := omit, + dlconnectedMAC_ehsFlows := omit, + dlconnectedMAC_ehsCommonFlows := omit, + dlconnectedMAC_ehsFlowsDC := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCH_LogCHMappingList1_TDD cs_TrLogMappingUL_4DCCH_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ulconnectedTrCHList := { + { + trchid := tsc_UL_DCH5, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_UL_TDD(dch, tsc_UL_DCCH1, dCCH, tsc_RB1), + cs_TrCH_LogicalChannelMapping_UL_TDD(dch, tsc_UL_DCCH2, dCCH, tsc_RB2), + cs_TrCH_LogicalChannelMapping_UL_TDD(dch, tsc_UL_DCCH3, dCCH, tsc_RB3), + cs_TrCH_LogicalChannelMapping_UL_TDD(dch, tsc_UL_DCCH4, dCCH, tsc_RB4) + } + } + }, + dlconnectedTrCHList := omit, + dlconnectedMACdFlows := omit, + dlconnectedMAC_ehsFlows := omit, + dlconnectedMAC_ehsCommonFlows := omit, + dlconnectedMAC_ehsFlowsDC := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCH_LogCHMappingList1 cds_TrLogMappingUL_4DCCH_RRC_RB3 modifies cs_TrLogMappingUL_4DCCH := + { /* @status APPROVED (LTE_IRAT) */ + ulconnectedTrCHList := { + [0] := { + trCH_LogCHMappingList := { + [2] := { + rB_Identity := tsc_RB3_DCCH_RRC + } + } + } + } + }; + + template (value) TrCH_LogCHMappingList1_TDD cds_TrLogMappingUL_4DCCH_RRC_RB3_TDD modifies cs_TrLogMappingUL_4DCCH_TDD := + { /* @status APPROVED (LTE_IRAT) */ + ulconnectedTrCHList := { + [0] := { + trCH_LogCHMappingList := { + [2] := { + rB_Identity := tsc_RB3_DCCH_RRC + } + } + } + } + }; + + template (value) TrCH_LogCHMappingList1 cs_TrLogMappingRACH_DTCH := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + ulconnectedTrCHList := { + { + trchid := tsc_RACH1, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_UL(rach, tsc_UL_CCCH5, cCCH, tsc_RB0), + cs_TrCH_LogicalChannelMapping_UL(rach, tsc_UL_DCCH1, dCCH, tsc_RB1), + cs_TrCH_LogicalChannelMapping_UL(rach, tsc_UL_DCCH2, dCCH, tsc_RB2), + cs_TrCH_LogicalChannelMapping_UL(rach, tsc_UL_DCCH3, dCCH, tsc_RB3), + cs_TrCH_LogicalChannelMapping_UL(rach, tsc_UL_DCCH4, dCCH, tsc_RB4), + cs_TrCH_LogicalChannelMapping_UL(rach, tsc_UL_DTCH1, dTCH, tsc_RB20) + } + } + }, + dlconnectedTrCHList := omit, + dlconnectedMACdFlows := omit, + dlconnectedMAC_ehsFlows := omit, + dlconnectedMAC_ehsCommonFlows := omit, + dlconnectedMAC_ehsFlowsDC := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCH_LogCHMappingList1_TDD cs_TrLogMappingRACH_DTCH_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + ulconnectedTrCHList := { + { + trchid := tsc_RACH1, + trCH_LogCHMappingList := { + cs_TrCH_LogicalChannelMapping_UL_TDD(rach, tsc_UL_CCCH5, cCCH, tsc_RB0), + cs_TrCH_LogicalChannelMapping_UL_TDD(rach, tsc_UL_DCCH1, dCCH, tsc_RB1), + cs_TrCH_LogicalChannelMapping_UL_TDD(rach, tsc_UL_DCCH2, dCCH, tsc_RB2), + cs_TrCH_LogicalChannelMapping_UL_TDD(rach, tsc_UL_DCCH3, dCCH, tsc_RB3), + cs_TrCH_LogicalChannelMapping_UL_TDD(rach, tsc_UL_DCCH4, dCCH, tsc_RB4), + cs_TrCH_LogicalChannelMapping_UL_TDD(rach, tsc_UL_DTCH1, dTCH, tsc_RB20) + } + } + }, + dlconnectedTrCHList := omit, + dlconnectedMACdFlows := omit, + dlconnectedMAC_ehsFlows := omit, + dlconnectedMAC_ehsCommonFlows := omit, + dlconnectedMAC_ehsFlowsDC := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + }; + + template (value) TrCH_LogCHMappingList1 cds_TrLogMappingRACH_DTCH_RRC_RB3 modifies cs_TrLogMappingRACH_DTCH := + { /* @status APPROVED (LTE_IRAT) */ + ulconnectedTrCHList := { + [0] := { + trCH_LogCHMappingList := { + [3] := { + rB_Identity := tsc_RB3_DCCH_RRC + } + } + } + } + }; + + template (value) TrCH_LogCHMappingList1_TDD cds_TrLogMappingRACH_DTCH_RRC_RB3_TDD modifies cs_TrLogMappingRACH_DTCH_TDD := + { /* @status APPROVED (LTE_IRAT) */ + ulconnectedTrCHList := { + [0] := { + trCH_LogCHMappingList := { + [3] := { + rB_Identity := tsc_RB3_DCCH_RRC + } + } + } + } + }; + //---------------------------------------------------------------------------- + + template (value) FrequencyBandFDD cs_RadioFrequencyBandFDD(RadioFrequencyBandFDD p_RadioFrequencyBandFDD) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + frequencyBandIndicator := p_RadioFrequencyBandFDD + }; + + template (value) FrequencyBandFDD cs_RadioFrequencyBandFDD2(RadioFrequencyBandFDD2 p_RadioFrequencyBandFDD2) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + frequencyBandIndicator2 := p_RadioFrequencyBandFDD2 + }; + + template (value) FrequencyBandFDD cs_RadioFrequencyBandFDD3(RadioFrequencyBandFDD3 p_RadioFrequencyBandFDD3) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + frequencyBandIndicator3 := p_RadioFrequencyBandFDD3 + }; + + template (value) FrequencyBandFDD cs_RadioFrequencyBandFDD_1 := cs_RadioFrequencyBandFDD(fdd2100); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) FrequencyBandFDD cs_RadioFrequencyBandFDD_2 := cs_RadioFrequencyBandFDD(fdd1900); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) FrequencyBandFDD cs_RadioFrequencyBandFDD_3 := cs_RadioFrequencyBandFDD(fdd1800); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) FrequencyBandFDD cs_RadioFrequencyBandFDD_4 := cs_RadioFrequencyBandFDD(bandIV); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) FrequencyBandFDD cs_RadioFrequencyBandFDD_5 := cs_RadioFrequencyBandFDD(bandV); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) FrequencyBandFDD cs_RadioFrequencyBandFDD_6 := cs_RadioFrequencyBandFDD(bandVI); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) FrequencyBandFDD cs_RadioFrequencyBandFDD_7 := cs_RadioFrequencyBandFDD(bandVII); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + template (value) FrequencyBandFDD cs_RadioFrequencyBandFDD_8 := cs_RadioFrequencyBandFDD2(bandVIII); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) FrequencyBandFDD cs_RadioFrequencyBandFDD_9 := cs_RadioFrequencyBandFDD2(bandIX); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) FrequencyBandFDD cs_RadioFrequencyBandFDD_10 := cs_RadioFrequencyBandFDD2(bandX); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) FrequencyBandFDD cs_RadioFrequencyBandFDD_11 := cs_RadioFrequencyBandFDD2(bandXI); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) FrequencyBandFDD cs_RadioFrequencyBandFDD_12 := cs_RadioFrequencyBandFDD2(bandXII); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) FrequencyBandFDD cs_RadioFrequencyBandFDD_13 := cs_RadioFrequencyBandFDD2(bandXIII); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) FrequencyBandFDD cs_RadioFrequencyBandFDD_14 := cs_RadioFrequencyBandFDD2(bandXIV); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) FrequencyBandFDD cs_RadioFrequencyBandFDD_15 := cs_RadioFrequencyBandFDD2(bandXV); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) FrequencyBandFDD cs_RadioFrequencyBandFDD_16 := cs_RadioFrequencyBandFDD2(bandXVI); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) FrequencyBandFDD cs_RadioFrequencyBandFDD_17 := cs_RadioFrequencyBandFDD2(bandXVII); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) FrequencyBandFDD cs_RadioFrequencyBandFDD_18 := cs_RadioFrequencyBandFDD2(bandXVIII);/* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) FrequencyBandFDD cs_RadioFrequencyBandFDD_19 := cs_RadioFrequencyBandFDD2(bandXIX); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) FrequencyBandFDD cs_RadioFrequencyBandFDD_20 := cs_RadioFrequencyBandFDD2(bandXX); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) FrequencyBandFDD cs_RadioFrequencyBandFDD_21 := cs_RadioFrequencyBandFDD2(bandXXI); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) FrequencyBandFDD cs_RadioFrequencyBandFDD_22 := cs_RadioFrequencyBandFDD2(bandXXII); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) FrequencyBandFDD cs_RadioFrequencyBandFDD_25 := cs_RadioFrequencyBandFDD3(bandXXV); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) FrequencyBandFDD cs_RadioFrequencyBandFDD_26 := cs_RadioFrequencyBandFDD3(bandXXVI); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + //----------------------------------------------------------------------------- + + template (value) CommonOrDedicatedTFS cs_DCH_148_TTI_10_TFS_FDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tti := { + tti10 := { + { + tb_Size := 148, + numberOfTbSizeList := { + { zero := NULL }, + { one := NULL } + }, + logicalChannelList := { + allSizes := NULL + } + } + } + }, + semistaticTF_Information := { + channelCodingType := { + convolutional := third + }, + rateMatchingAttribute := 160, // dummy value, value is not needed for 13.6 kbps + crc_Size := crc16 + } + }; + + template (value) CommonOrDedicatedTFS cs_FACH_TFS_FDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tti := { + tti10 := { + { + tb_Size := 168, + numberOfTbSizeList := { {zero := NULL}, + {one := NULL}, + {small := 2} }, + logicalChannelList := {allSizes := NULL} + } + } + }, + semistaticTF_Information := + { + channelCodingType := {convolutional := half}, + rateMatchingAttribute := 220, + crc_Size := crc16 + } + }; + + template (value) CommonOrDedicatedTFS cs_FACH_TFS_PS_FDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tti := { + tti10 := { + { + tb_Size := 360, + numberOfTbSizeList := { {zero := NULL}, + {one := NULL} }, + logicalChannelList := {allSizes := NULL} + } + } + }, + semistaticTF_Information := + { + channelCodingType := {turbo := NULL}, + rateMatchingAttribute := 130, + crc_Size := crc16 + } + }; + + template (value) CommonOrDedicatedTFS cs_PCH_TFS_FDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tti := { + tti10 := { + { + tb_Size := 240, + numberOfTbSizeList := { {zero := NULL}, + {one := NULL} }, + logicalChannelList := {allSizes := NULL} + } + } + }, + semistaticTF_Information := + { + channelCodingType := {convolutional := half}, + rateMatchingAttribute := 230, + crc_Size := crc16 + } + }; + + template (value) CommonOrDedicatedTFS cs_RACH_TFS_FDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tti := { + tti20 := { + { + tb_Size := 168, + numberOfTbSizeList := { + { one := NULL } + }, + logicalChannelList := { + configured := NULL // @sic R5s110278 sic@ + } + }, + { + tb_Size := 360, + numberOfTbSizeList := { + { one := NULL } + }, + logicalChannelList := { + configured := NULL + } + }, + { + tb_Size := 240, + numberOfTbSizeList := { + { one := NULL } + }, + logicalChannelList := { + explicitList := { + { rb_Identity := tsc_RB0, + logChOfRb := omit } + } + } + } + } + }, + semistaticTF_Information := { + channelCodingType := { + convolutional := half + }, + rateMatchingAttribute := 150, + crc_Size := crc16 + } + }; + + //----------------------------------------------------------------------------- + + template (value) CommonOrDedicatedTFS_TDD cs_DCH_148_TTI_10_TFS_TDD := + { /* @status APPROVED (LTE_IRAT) */ + tfsMode := {dedicatedTransChTFS := cs_DCH_148_TTI_10_TFS_UE} + }; + + template (value) CommonOrDedicatedTFS_TDD cs_DCH_148_TTI_40_TFS_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tfsMode := {dedicatedTransChTFS := cs_DCH_148_TFS_DL_TDD_UE} + }; + + template (value) CommonOrDedicatedTFS_TDD cs_FACH_TFS_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tfsMode := { commonTransChTFS := cs_FACH_TFS_UE_TDD} + }; + + template (value) CommonOrDedicatedTFS_TDD cs_FACH_TFS_PS_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tfsMode := { commonTransChTFS := cs_FACH_TFS_PS_UE_TDD } + }; + + template (value) CommonOrDedicatedTFS_TDD cs_PCH_TFS_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tfsMode := { commonTransChTFS := cs_PCH_TFS_UE_TDD} + }; + + template (value) CommonOrDedicatedTFS_TDD cs_RACH_TFS_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tfsMode := { + commonTransChTFS_LCR := cs_RACH_TFS_LCR + } + }; + + //---------------------------------------------------------------------------- + template (value) IntegrityProtActivationInfoList cs_RestRB_IntegrityProtActivationInfoList(RRC_MessageSequenceNumber p_SN0, + RRC_MessageSequenceNumber p_SN1, + RRC_MessageSequenceNumber p_SN3, + RRC_MessageSequenceNumber p_SN4) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + { + rb_Identity := tsc_RB0, + rrc_MessageSequenceNumber := p_SN0 + }, + { + rb_Identity := tsc_RB1, + rrc_MessageSequenceNumber := p_SN1 + }, + { + rb_Identity := tsc_RB3, + rrc_MessageSequenceNumber := p_SN3 + }, + { + rb_Identity := tsc_RB4, + rrc_MessageSequenceNumber := p_SN4 + } + }; + + template (value) IntegrityProtActivationInfoList cs_RB2_IntegrityProtActivationInfoList(RRC_MessageSequenceNumber p_RRCSN) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + { + rb_Identity := tsc_RB2, + rrc_MessageSequenceNumber := p_RRCSN + } + }; + + template (value) IntegrityProtectionModeInfo_r7 cs_IntegrityProtectModify_P(RRC_MessageSequenceNumber p_P1, + RRC_MessageSequenceNumber p_P2, + RRC_MessageSequenceNumber p_P3, + RRC_MessageSequenceNumber p_P4, + RRC_MessageSequenceNumber p_P5, + IntegrityProtectionAlgorithm_r7 p_IntegrityAlg) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + integrityProtectionModeCommand := { + modify := { + dl_IntegrityProtActivationInfo := { + rrc_MessageSequenceNumberList := { + p_P1, + p_P2, + p_P3, + p_P4, + p_P5 + } // fixed reasonable value + } + } + }, + integrityProtectionAlgorithm := p_IntegrityAlg + }; + + //----------------------------------------------------------------------------- + + template (value) RB_LogCH_Mapping cs_RB_LogCH_Mapping(template (omit) LogicalChannelIdentity p_LogChUL, + template (omit) LogicalChannelIdentity p_LogChDL) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + uLlogicalChannelIdentity := p_LogChUL, + dLlogicalChannelIdentity := p_LogChDL, + logicalChannelType := omit, + cn_DomainIdentity := omit + }; + + //----------------------------------------------------------------------------- + + template (value) UE_Info cs_UE_Info(template (omit) U_RNTI p_U_RNTI := omit, + template (omit) bitstring p_CRNTI := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + u_RNTI := p_U_RNTI, + c_RNTI := p_CRNTI + }; + + //----------------------------------------------------------------------------- + + template (value) IndividualTimeslotInfo_LCR_r4 cs_IndividualTimeslotInfo_LCR_r4_SCCPCH := + { /* TDD only */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + timeslotNumber := 0, + tfci_Existence := true, + midambleShiftAndBurstType := { + midambleAllocationMode := {defaultMidamble := NULL}, + midambleConfiguration := 4 + }, + modulation := mod_QPSK, + ss_TPC_Symbols := zero, + additionalSS_TPC_Symbols := omit + }; + + //----------------------------------------------------------------------------- +/* template (value) AdditionalPRACH_TF_and_TFCS_CCCH_List cs_AddPRACH_TF_TFS_CCCH_TDD := */ +/* { // !!!!! NOT USED !!!!! */ +/* { */ +/* additionalPRACH_TF_and_TFCS_CCCH_IEs := */ +/* { */ +/* powerOffsetInformation := { */ +/* gainFactorInformation := { */ +/* signalledGainFactors := { */ +/* modeSpecificInfo := { */ +/* tdd := NULL */ +/* }, */ +/* gainFactorBetaD := 15, */ +/* referenceTFC_ID := 0 */ +/* } */ +/* }, */ +/* powerOffsetPp_m := 0 */ +/* }, */ +/* dynamicTFInformationCCCH := { */ +/* octetModeRLC_SizeInfoType2 := { */ +/* sizeType1:= 24 // Actual size = (sizeType1 * 8) + 48 */ +/* } */ +/* } */ +/* } */ +/* } */ +/* }; */ + + + //----------------------------------------------------------------------------- + + template (value) CphyUlConnectedTrCH_Type cs_CphyUlConnectedTrCH_FDD_DCH(TransportChannelIdentity p_TransportChannelIdentity, + template (value) CommonOrDedicatedTFS p_CommonOrDedicatedTFS) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + trchid := p_TransportChannelIdentity, + ul_TransportChannelType := dch, + transportChannelInfo := p_CommonOrDedicatedTFS + }; + + template (value) CphyDlConnectedTrCH_Type cs_CphyDlConnectedTrCH_FDD_DCH(TransportChannelIdentity p_TransportChannelIdentity, + template (value) CommonOrDedicatedTFS p_CommonOrDedicatedTFS) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + trchid := p_TransportChannelIdentity, + dl_TransportChannelType := dch, + transportChannelInfo := p_CommonOrDedicatedTFS + }; + + template (value) CphyUlConnectedTrCH_TDD_Type cs_CphyUlConnectedTrCH_TDD_DCH(TransportChannelIdentity p_TransportChannelIdentity, + template (value) CommonOrDedicatedTFS_TDD p_CommonOrDedicatedTFS) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + trchid := p_TransportChannelIdentity, + ul_TransportChannelType := dch, + transportChannelInfo := p_CommonOrDedicatedTFS + }; + + template (value) CphyDlConnectedTrCH_TDD_Type cs_CphyDlConnectedTrCH_TDD_DCH(TransportChannelIdentity p_TransportChannelIdentity, + template (value) CommonOrDedicatedTFS_TDD p_CommonOrDedicatedTFS) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + trchid := p_TransportChannelIdentity, + dl_TransportChannelType := dch, + transportChannelInfo := p_CommonOrDedicatedTFS + }; + + //============================================================================= + // ASP TEMPLATES + //----------------------------------------------------------------------------- + + template (value) U_CPHY_CONFIG_REQ cas_CPHY_Cell_Release_REQ (UTRAN_CellId_Type p_CellId, + RB_ConfigType p_RBConfig) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cellRelease := { + soft_Reset := false, + cell_ID_List := {f_UtranCellId2Int(p_CellId)}, + rb_Config_List := {enum2int(p_RBConfig)} // @sic R5s110176, R5-112591 sic@ + } + }; + + template (present) U_CPHY_CONFIG_CNF car_CPHY_Cell_Release_CNF(UTRAN_CellId_Type p_CellId) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cellRelease :={ + soft_Reset := false, + cell_ID_List := { + f_UtranCellId2Int(p_CellId) + } + } + }; + + //----------------------------------------------------------------------------- + + template (value) AICH_Info cs_AICH_Info := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + channelisationCode256 := tsc_AICH1_ChC, + sttd_Indicator := false, + aich_TransmissionTiming := e0 + }; + + template (value) U_CPHY_CONFIG_REQ cas_AichInfo(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) AICH_Info p_AICH_Info, + AICH_PowerOffset p_TxPower) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rlSetup_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := fdd, + setupMessage := { + physicalChannelInfo := { + aICHInfo := { + aichinfo := p_AICH_Info, + dl_TxPower := p_TxPower, + e_AI_Info := omit + } + }, + activationTime := cs_ActivateNow, + trchConfigToFollow := false, // DEFAULT TRUE @sic R5s130195 sic@ + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + } + }; + + //----------------------------------------------------------------------------- + + template (value) U_CPHY_CONFIG_REQ cas_PCCPCH_Info_FDD(UTRAN_CellId_Type p_CellId, + DL_TxPower p_TxPower) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rlSetup_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := tsc_P_CCPCH + }, + ratType := fdd, + setupMessage := { + physicalChannelInfo := { + primaryCCPCHInfo := { + sttd_Indicator := false, + dl_TxPower := p_TxPower + } + }, + activationTime := cs_ActivateNow, + trchConfigToFollow := omit, // DEFAULT TRUE + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + } + }; + + template (value) CommonTimeslotInfo cs_CommonTimeslotInfo_PCCPCH := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + secondInterleavingMode := frameRelated, + tfci_Coding := omit, + puncturingLimit := pl1, + repetitionPeriodAndLength := { repetitionPeriod1 := NULL } + }; + + template (value) U_CPHY_CONFIG_REQ cas_PCCPCH_Info_TDD(UTRAN_CellId_Type p_CellId, + DL_TxPower_PCCPCH p_DL_TxPower_PCCPCH ) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rlSetup_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + secondaryFrequency := omit, + routingInfo := { + physicalChannelIdentity := tsc_P_CCPCH + }, + ratType := tdd128, + setupMessage := { + physicalChannelInfo := { + primaryCCPCHInfo := { + sctd_Indicator := notApplied, + tstd_Indicator := notApplied, + commonTimeSlotInfo := cs_CommonTimeslotInfo_PCCPCH, + dL_TxPower_PCCPCH := p_DL_TxPower_PCCPCH, + relAspTypeExtension := omit + } + }, + activationTime := cs_ActivateNow, + trchConfigToFollow := omit, // DEFAULT TRUE + relAspTypeExtension := omit + } + } + }; + + //----------------------------------------------------------------------------- + /* For BCH transport channel the following parameters are fixed by core spec.(25.212 and 25.302): + * TTI = 20 ms; + * TransportBlocks = 1; + * transport block size = 246 bits; + * coding = convolutional; + * coding rate = 1/2; + * CRCsize = 16; + * RateMatching = 1 (this parameter is not relevant to BCH, value can be any number between 1 to hiRM) */ + + template (value) U_CPHY_CONFIG_REQ cas_BCH_InfoActNow_FDD(UTRAN_CellId_Type p_CellId) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + trchConfig_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := tsc_P_CCPCH + }, + ratType := fdd, + trchConfigType := cs_TrChConfigTypeNonDCH, + configMessage := { + activationTime := cs_ActivateNow, + ulconnectedTrCHList := omit, + ulTFCS := omit, + dlconnectedTrCHList := { + { + trchid := tsc_BCH1, + dl_TransportChannelType := bch, + transportChannelInfo := { + tti := { + tti20 := { + { + tb_Size := 246, + numberOfTbSizeList := { + { one := NULL } + }, + logicalChannelList := { + configured := NULL + } + } + } + }, + semistaticTF_Information := { + channelCodingType := { + convolutional := half + }, + rateMatchingAttribute := 1, + crc_Size := crc16 + } + } + } + }, + dlTFCS := cs_TFCS_Cmpl0(cs_PowerOffsetInfoBelow64k), + hsDSCHMacdFlows := omit, + e_DCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + e_DCHMacd_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, // @sic R5s110176 sic@ + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + } + }; + + template (value) U_CPHY_CONFIG_REQ cas_BCH_InfoActNow_TDD(UTRAN_CellId_Type p_CellId) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + trchConfig_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := tsc_P_CCPCH + }, + ratType := tdd128, + trchConfigType := cs_TrChConfigTypeNonDCH, + configMessage := { + activationTime := cs_ActivateNow, + ulconnectedTrCHList := omit, + ulTFCS := omit, + dlconnectedTrCHList := { + { + trchid := tsc_BCH1, + dl_TransportChannelType := bch, + transportChannelInfo := { + tfsMode := { commonTransChTFS := cs_BCH_246_TTI_20_TFS_LCR } + } + } + }, + dlTFCS := cs_TFCS_Cmpl0_TDD, + hsDSCHMacdFlows := omit, + e_DCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + e_DCHMacd_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, + relAspTypeExtension := omit + } + } + }; + + //----------------------------------------------------------------------------- + + template (value) U_CPHY_CONFIG_REQ cas_CellCfgReq_FDD(UTRAN_CellId_Type p_CellId, + integer p_Tcell, + FrequencyInfo p_FreqInfo, + integer p_PriScmCode, + integer p_DL_TxAttenLevel, + integer p_SfnOffset, + CellTxPowerLevel p_TotalCellPower, + FrequencyBandFDD p_FrequencyBandFDD) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cellConfig_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + tcell := p_Tcell, + sfnOffset := p_SfnOffset, + frequencyInfo := p_FreqInfo, + primaryScramblingCode_SS := p_PriScmCode, + cellTxPowerLevel := p_TotalCellPower, + dLTxAttenuationLevel := p_DL_TxAttenLevel, + frequencyBandIndicator := p_FrequencyBandFDD, + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + }; + + template (value) U_CPHY_CONFIG_REQ cas_CellCfgReq_TDD(UTRAN_CellId_Type p_CellId, + FrequencyInfo p_FreqInfo, + CellParametersID p_CellParametersID, + integer p_DL_TxAttenLevel, + integer p_SfnOffset, + CellTxPowerLevel p_TotalCellPower, + DwPCHInfo p_DwPCHInfo) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cellConfig_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + sfnOffset := p_SfnOffset, + frequencyInfo := p_FreqInfo, + cellTxPowerLevel := p_TotalCellPower, + dLTxAttenuationLevel := p_DL_TxAttenLevel, + cellParametersID := p_CellParametersID, + timeSlotConfigurationList_LCR := cs_Default_TimeSlot_Config_List, + dwPCHInfo := p_DwPCHInfo, + transmissionDiversityApplied := notApplied, + secondaryFrequencyInfo := omit, + upPCHposition := omit, + relAspTypeExtension := omit + } + }; + + template (present) U_CPHY_CONFIG_CNF car_CellCfgCnf(UTRAN_CellId_Type p_CellId) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cellConfig := { cellId := f_UtranCellId2Int(p_CellId) } + }; + + //----------------------------------------------------------------------------- + + template (present) U_CPHY_CONFIG_CNF car_CellTxPowerModifyCnf(UTRAN_CellId_Type p_CellId) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + txPower := { + cellId := f_UtranCellId2Int(p_CellId) + } + }; + + template (value) U_CPHY_CONFIG_REQ cas_CellTxPowerModifyReq(UTRAN_CellId_Type p_CellId, + integer p_DL_TxAttenLevel) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + txPower := { + cellId := f_UtranCellId2Int(p_CellId), + dLTxAttenuationLevel := p_DL_TxAttenLevel + } + }; + + template (value) U_CPHY_CONFIG_REQ cas_DL_DPCH_SetupInfo_FDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) DL_DPCHInfo_r8_FDD p_DL_DPCHInfo, + template (value) SS_ActivationTime p_SS_ActTime) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rlSetup_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := fdd, + setupMessage := { + physicalChannelInfo := { + dPCHInfo_r5 := { + r8 := { + ul_DPCHInfo := omit, + dl_DPCHInfo := p_DL_DPCHInfo, + hs_DPCCHInd := omit, + ss_UL_DPCCH_DRX_Info := omit, + ss_DRX_Info := omit + } + } + }, + activationTime := p_SS_ActTime, + trchConfigToFollow := omit, // DEFAULT TRUE + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + } + }; + + template (value) U_CPHY_CONFIG_REQ cas_DL_DPCH_SetupInfo_TDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) DL_DPCHInfo_r8_TDD p_DL_DPCHInfo, + template (value) SS_ActivationTime p_SS_ActTime) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rlSetup_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + secondaryFrequency := omit, + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := tdd128, + setupMessage := { + physicalChannelInfo := { + dPCHInfo_r5 := { + r8 := { + ul_DPCHInfo := omit, + dl_DPCHInfo := p_DL_DPCHInfo, + hs_DPCCHInd := omit, + ss_UL_DPCCH_DRX_Info := omit, + ss_DRX_Info := omit + } + } + }, + activationTime := p_SS_ActTime, + trchConfigToFollow := omit, // DEFAULT TRUE + relAspTypeExtension := omit + } + } + }; + + template (value) U_CPHY_CONFIG_REQ cas_UL_DPCH_SetupInfo_FDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) UL_DPCH_Info_r7 p_UL_DPCHInfo, + template (value) SS_ActivationTime p_SS_ActTime) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rlSetup_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := fdd, + setupMessage := { + physicalChannelInfo := { + dPCHInfo_r5 := { + r8 := { + ul_DPCHInfo := p_UL_DPCHInfo, + dl_DPCHInfo := omit, + hs_DPCCHInd := omit, + ss_UL_DPCCH_DRX_Info := omit, + ss_DRX_Info := omit + } + } + }, + activationTime := p_SS_ActTime, + trchConfigToFollow := omit, // DEFAULT TRUE + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + } + }; + + //----------------------------------------------------------------------------- + + template (value) U_CPHY_CONFIG_REQ cas_UL_DPCH_SetupInfo_TDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) UL_DPCH_Info_r7 p_UL_DPCHInfo, + template (value) SS_ActivationTime p_SS_ActTime) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rlSetup_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + secondaryFrequency := omit, + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := tdd128, + setupMessage := { + physicalChannelInfo := { + dPCHInfo_r5 := { + r8 := { + ul_DPCHInfo := p_UL_DPCHInfo, + dl_DPCHInfo := omit, + hs_DPCCHInd := omit, + ss_UL_DPCCH_DRX_Info := omit, + ss_DRX_Info := omit + } + } + }, + activationTime := p_SS_ActTime, + trchConfigToFollow := omit, // DEFAULT TRUE + relAspTypeExtension := omit + } + } + }; + + template (present) U_CPHY_CONFIG_CNF car_IniCnf := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ini := {confirmation := NULL } + }; + + template (value) U_CPHY_CONFIG_REQ cas_InitReqDef := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ini := defaultRadioEnvironment + }; + + template (value) U_CPHY_CONFIG_REQ cas_DCH_148_TTI_10_DL_InfoActNow_FDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + trchConfig_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := fdd, + trchConfigType := cs_TrChConfigTypeDCH_NoSHO, + configMessage := { + activationTime := cs_ActivateNow, + ulconnectedTrCHList := omit, + ulTFCS := omit, + dlconnectedTrCHList := { + cs_CphyDlConnectedTrCH_FDD_DCH(tsc_DL_DCH5, cs_DCH_148_TTI_10_TFS_FDD) + }, + dlTFCS := cs_TFCS_Cmpl0_1_Tx_FDD(cs_PowerOffsetInfoBelow64k), + hsDSCHMacdFlows := omit, + e_DCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + e_DCHMacd_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, // @sic R5s110176 sic@ + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + } + }; + + template (value) U_CPHY_CONFIG_REQ cas_DCH_148_TTI_10_DL_InfoActNow_TDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId) := + { + trchConfig_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := tdd128, + trchConfigType := cs_TrChConfigTypeDCH_NoSHO, + configMessage := { + activationTime := cs_ActivateNow, + ulconnectedTrCHList := omit, + ulTFCS := omit, + dlconnectedTrCHList := { + cs_CphyDlConnectedTrCH_TDD_DCH(tsc_DL_DCH5, cs_DCH_148_TTI_10_TFS_TDD) + }, + dlTFCS := cs_TFCS_Cmpl0_1_Tx_TDD, + hsDSCHMacdFlows := omit, + e_DCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + e_DCHMacd_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, + relAspTypeExtension := omit + } + } + }; + + template (value) U_CPHY_CONFIG_REQ cas_DCH_148_TTI_40_DL_InfoActNow_TDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + trchConfig_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := tdd128, + trchConfigType := cs_TrChConfigTypeDCH_NoSHO, + configMessage := { + activationTime := cs_ActivateNow, + ulconnectedTrCHList := omit, + ulTFCS := omit, + dlconnectedTrCHList := { + cs_CphyDlConnectedTrCH_TDD_DCH(tsc_DL_DCH5, cs_DCH_148_TTI_40_TFS_TDD) //tdscdma tti 40msec + }, + dlTFCS := cs_TFCS_Cmpl0_1_Tx_TDD, + hsDSCHMacdFlows := omit, + e_DCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + e_DCHMacd_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, + relAspTypeExtension := omit + } + } + }; + + template (value) U_CPHY_CONFIG_REQ cas_DCH_148_TTI_10_UL_InfoActNow_FDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + trchConfig_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := fdd, + trchConfigType := cs_TrChConfigTypeDCH_NoSHO, + configMessage := { + activationTime := cs_ActivateNow, + ulconnectedTrCHList := { + cs_CphyUlConnectedTrCH_FDD_DCH(tsc_UL_DCH5, cs_DCH_148_TTI_10_TFS_FDD) + }, + ulTFCS := cs_TFCS_Cmpl0_1_Rx, + dlconnectedTrCHList := omit, + dlTFCS := omit, + hsDSCHMacdFlows := omit, + e_DCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + e_DCHMacd_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, // @sic R5s110176 sic@ + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + } + }; + + template (value) U_CPHY_CONFIG_REQ cas_DCH_148_TTI_10_UL_InfoActNow_TDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId) := + { + trchConfig_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := tdd128, + trchConfigType := cs_TrChConfigTypeDCH_NoSHO, + configMessage := { + activationTime := cs_ActivateNow, + ulconnectedTrCHList := { + cs_CphyUlConnectedTrCH_TDD_DCH(tsc_UL_DCH5, cs_DCH_148_TTI_10_TFS_TDD) + }, + ulTFCS := cs_TFCS_Cmpl0_1_Rx, + dlconnectedTrCHList := omit, + dlTFCS := omit, + hsDSCHMacdFlows := omit, + e_DCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + e_DCHMacd_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, + relAspTypeExtension := omit + } + } + }; + + template (value) U_CPHY_CONFIG_REQ cas_DCH_148_TTI_40_UL_InfoActNow_TDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + trchConfig_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := tdd128, + trchConfigType := cs_TrChConfigTypeDCH_NoSHO, + configMessage := { + activationTime := cs_ActivateNow, + ulconnectedTrCHList := { + cs_CphyUlConnectedTrCH_TDD_DCH(tsc_UL_DCH5, cs_DCH_148_TTI_40_TFS_TDD) + }, + ulTFCS := cs_TFCS_Cmpl0_1_Rx, + dlconnectedTrCHList := omit, + dlTFCS := omit, + hsDSCHMacdFlows := omit, + e_DCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + e_DCHMacd_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, + relAspTypeExtension := omit + } + } + }; + + //----------------------------------------------------------------------------- + + template (value) U_CPHY_CONFIG_REQ cas_PCH_2_FACH_InfoActNow_FDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + trchConfig_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := fdd, + trchConfigType := cs_TrChConfigTypeNonDCH, + configMessage := { + activationTime := cs_ActivateNow, + ulconnectedTrCHList := omit, + ulTFCS := omit, + dlconnectedTrCHList := { + { + trchid := tsc_PCH1, + dl_TransportChannelType := pch, + transportChannelInfo := cs_PCH_TFS_FDD + }, + { + trchid := tsc_FACH1, + dl_TransportChannelType := fach, + transportChannelInfo := cs_FACH_TFS_FDD + }, + { + trchid := tsc_FACH2, + dl_TransportChannelType := fach, + transportChannelInfo := cs_FACH_TFS_PS_FDD + } + }, + dlTFCS := cs_TFCS_CmplFACH_Tx(cs_PowerOffsetInfoBelow64k), + hsDSCHMacdFlows := omit, + e_DCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + e_DCHMacd_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, // @sic R5s110176 sic@ + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + } + }; + + //----------------------------------------------------------------------------- + + template (value) U_CPHY_CONFIG_REQ cas_PCH_2_FACH_InfoActNow_TDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + trchConfig_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := tdd128, + trchConfigType := cs_TrChConfigTypeNonDCH, + configMessage := { + activationTime := cs_ActivateNow, + ulconnectedTrCHList := omit, + ulTFCS := omit, + dlconnectedTrCHList := { + { + trchid := tsc_PCH1, + dl_TransportChannelType := pch, + transportChannelInfo := cs_PCH_TFS_TDD + }, + { + trchid := tsc_FACH1, + dl_TransportChannelType := fach, + transportChannelInfo := cs_FACH_TFS_TDD + }, + { + trchid := tsc_FACH2, + dl_TransportChannelType := fach, + transportChannelInfo := cs_FACH_TFS_PS_TDD + } + }, + dlTFCS := cs_TFCS_SCCPCH_LCR, + hsDSCHMacdFlows := omit, + e_DCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + e_DCHMacd_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, + relAspTypeExtension := omit + } + } + }; + + //----------------------------------------------------------------------------- + + template (value) U_CPHY_CONFIG_REQ cas_PCPICH_Info_FDD(UTRAN_CellId_Type p_CellId, + DL_TxPower_PCPICH p_TxPower, + template (omit) MimoAntennaConfigType p_MimoAntennaConfigType := omit, + template (omit) boolean p_DC_SecondaryServingCell := omit, + template (omit) boolean p_TrchConfigToFollow := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rlSetup_FDD := + { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := tsc_P_CPICH + }, + ratType := fdd, + setupMessage := { + physicalChannelInfo := { + primaryCPICHInfo := { + dl_TxPower_PCPICH := p_TxPower, + txdiversityIndicator := false, + mimoAntenna2CPICH := p_MimoAntennaConfigType, + dC_SecondaryServingCell := p_DC_SecondaryServingCell, // DEFAULT FALSE + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + }, + activationTime := cs_ActivateNow, + trchConfigToFollow := p_TrchConfigToFollow, // DEFAULT TRUE + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + } + }; + + //----------------------------------------------------------------------------- + + template (value) U_CPHY_CONFIG_REQ cas_PICH_Info_FDD(UTRAN_CellId_Type p_CellId, + template (value) PICH_Info p_PICH_Info, + PICH_PowerOffset p_TxPower, + integer p_SCCPCH_Ass) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rlSetup_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := tsc_PICH1 + }, + ratType := fdd, + setupMessage := { + physicalChannelInfo := { + pICHInfo := { + pichinfo := p_PICH_Info, + dl_TxPower := p_TxPower, + sccpchId_associated := p_SCCPCH_Ass + } + }, + activationTime := cs_ActivateNow, + trchConfigToFollow := false, // DEFAULT TRUE @sic R5s130195 sic@ + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + } + }; + + template (value) U_CPHY_CONFIG_REQ cas_PICH_Info_TDD(UTRAN_CellId_Type p_CellId, + template (value) PICH_Info_LCR_r4 p_PICH_Info, + PICH_PowerOffset p_TxPower, + integer p_SCCPCH_Ass) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rlSetup_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + secondaryFrequency := omit, + routingInfo := { + physicalChannelIdentity := tsc_PICH1 + }, + ratType := tdd128, + setupMessage := { + physicalChannelInfo := { + pICHInfo := { + pichinfo := p_PICH_Info, + dl_TxPower := p_TxPower, + sccpchId_associated := p_SCCPCH_Ass + } + }, + activationTime := cs_ActivateNow, + trchConfigToFollow := false, // DEFAULT TRUE @sic R5s130195 sic@ + relAspTypeExtension := omit + } + } + }; + + //----------------------------------------------------------------------------- + + template (value) U_CPHY_CONFIG_REQ cas_PRACH_Info_FDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + AvailableSignatures p_Signatures, + PreambleScramblingCodeWordNumber p_PreScramCodeWord, + PuncturingLimit p_PuncLimit, + SF_PRACH p_SF_PRACH, + AvailableSubChannelNumbers p_SubChNum) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rlSetup_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := fdd, + setupMessage := { + physicalChannelInfo := { + pRACHInfo := { + fdd_tdd := { + fdd := { + preambleSignature := p_Signatures, + spreadingFactorForDataPart := p_SF_PRACH, + preambleScramblingCode := p_PreScramCodeWord, + puncturingLimit := p_PuncLimit, + accessSlot := p_SubChNum + } + } + } + }, + activationTime := cs_ActivateNow, + trchConfigToFollow := omit, // DEFAULT TRUE + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + } + }; + + template (value) U_CPHY_CONFIG_REQ cas_PRACH_Info_TDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + DL_TxPower p_FPACH_Power) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rlSetup_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + secondaryFrequency := omit, + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := tdd128, + setupMessage := { + physicalChannelInfo := { + pRACHInfo := { + pRACH_RACH_Info_LCR_r4 := cs_PRACH_RACH_Info_LCR_r4(tsc_PRACH1_ChC, tsc_FPACH1_ChC), + accessServiceClass_TDD_LCR := cs_AccessServiceClass_TDD_LCR_r4, + fPACH_Power := p_FPACH_Power + } + }, + activationTime := cs_ActivateNow, + trchConfigToFollow := omit, // DEFAULT TRUE + relAspTypeExtension := omit + } + } + }; + + //----------------------------------------------------------------------------- + + template (value) U_CPHY_CONFIG_REQ cas_PSCH_Info_FDD(UTRAN_CellId_Type p_CellId, + DL_TxPower p_TxPower) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rlSetup_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := tsc_P_SCH + }, + ratType := fdd, + setupMessage := { + physicalChannelInfo := { + primarySCHInfo := { + tstdIndicator := false, + dl_TxPower := p_TxPower + } + }, + activationTime := cs_ActivateNow, + trchConfigToFollow := omit, // DEFAULT TRUE + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + } + }; + + //----------------------------------------------------------------------------- + + template (value) U_CPHY_CONFIG_REQ cas_SSCH_Info_FDD(UTRAN_CellId_Type p_CellId, + DL_TxPower p_TxPower) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rlSetup_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := tsc_S_SCH + }, + ratType := fdd, + setupMessage := { + physicalChannelInfo := { + secondarySCHInfo := { + tstdIndicator := false, + dl_TxPower := p_TxPower + } + }, + activationTime := cs_ActivateNow, + trchConfigToFollow := omit, // DEFAULT TRUE + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + } + }; + + //----------------------------------------------------------------------------- + + template (value) U_CPHY_CONFIG_REQ cas_RACH_InfoActNow_FDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + trchConfig_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := fdd, + trchConfigType := cs_TrChConfigTypeNonDCH, + configMessage := { + activationTime := cs_ActivateNow, + ulconnectedTrCHList := { + { + trchid := tsc_RACH1, + ul_TransportChannelType := rach, + transportChannelInfo := cs_RACH_TFS_FDD + } + }, + ulTFCS := cs_TFCS_Cmpl0_1_2_Rx, + dlconnectedTrCHList := omit, + dlTFCS := omit, + hsDSCHMacdFlows := omit, + e_DCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + e_DCHMacd_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, // @sic R5s110176 sic@ + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + } + }; + + template (value) U_CPHY_CONFIG_REQ cas_RACH_InfoActNow_TDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + trchConfig_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := tdd128, + trchConfigType := cs_TrChConfigTypeNonDCH, + configMessage := { + activationTime := cs_ActivateNow, + ulconnectedTrCHList := { + { + trchid := tsc_RACH1, + ul_TransportChannelType := rach, + transportChannelInfo := cs_RACH_TFS_TDD + } + }, + ulTFCS := cs_TFCS_Cmpl0(omit), // @sic R5s120405 sic@ + dlconnectedTrCHList := omit, + dlTFCS := omit, + hsDSCHMacdFlows := omit, + e_DCHMacdFlows := omit, + ehs_DSCH_Flows := omit, + ehs_DSCH_CommonFlows := omit, + e_DCHMacd_CommonFlows := omit, + ehs_DSCH_Flows_r9 := omit, + relAspTypeExtension := omit + } + } + }; + + //----------------------------------------------------------------------------- + + template (value) U_CPHY_CONFIG_REQ cas_SCCPCH_Info_FDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + integer p_SndScramCode, + SF256_AndCodeNumber p_ChannelizationCode, + SCCPCHSlotFormat p_SlotFormat, + DL_TxPower p_TxPower, + integer p_Timing) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rlSetup_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := fdd, + setupMessage := { + physicalChannelInfo := { + secondaryCCPCHInfo := { + scramblingCode := p_SndScramCode, + dl_ChannelizationCode := p_ChannelizationCode, + sCCPCHSlotFormat := p_SlotFormat, + timingOffset := p_Timing, + positionFixedOrFlexible := flexible, + sttd_Indicator := false, + dl_TxPower := p_TxPower, + powerOffsetOfTFCI_PO1 := tsc_S_CCPCH_PowerOffsetTFCI, + powerOffsetOfPILOT_PO3 := tsc_S_CCPCH_PowerOffsetPILOT, + mbms_softCombTimingOffset := omit + } + }, + activationTime := cs_ActivateNow, + trchConfigToFollow := omit, // DEFAULT TRUE + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + } + }; + + template (value) U_CPHY_CONFIG_REQ cas_SCCPCH_Info_TDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + DL_TxPower p_TxPower) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rlSetup_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + secondaryFrequency := omit, + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := tdd128, + setupMessage := { + physicalChannelInfo := { + secondaryCCPCHInfo := { + tstd_Indicator := notApplied, + sctd_Indicator := notApplied, + dl_TxPower := p_TxPower, + commonTimeSlotInfo := cs_CommonTimeslotInfoSCCPCH, + channelisationCode := tsc_S_CCPCH1_1P2F_ChC, //@sic R5-133724 sic@ + individualTimeslotInfo := cs_IndividualTimeslotInfo_LCR_r4_SCCPCH, + powerOffsetOfTFCI_PO1 := omit + } + }, + activationTime := cs_ActivateNow, + trchConfigToFollow := omit, // DEFAULT TRUE + relAspTypeExtension := omit + } + } + }; + + template (present) U_CPHY_CONFIG_CNF car_RL_ModifyCnf := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + rlModify := { + cellId := ?, + routingInfo := { + physicalChannelIdentity := ? + } + } + }; + + template (value) U_CPHY_CONFIG_REQ cas_RL_RelReq_FDD(UTRAN_CellId_Type p_CellId, + PhysicalChannelIdentity p_PhyCH, + template (value) SS_ActivationTime p_SS_ActivationTime := cs_ActivateNow) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rlRelease_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyCH + }, + activationTime := p_SS_ActivationTime + } + }; + + template (value) U_CPHY_CONFIG_REQ cas_RL_RelReq_TDD(UTRAN_CellId_Type p_CellId, + PhysicalChannelIdentity p_PhyCH, + template (value) SS_ActivationTime p_SS_ActivationTime := cs_ActivateNow) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rlRelease_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyCH + }, + activationTime := p_SS_ActivationTime + } + }; + + template (present) U_CPHY_CONFIG_CNF car_RL_RelCnf := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rlRelease := { + cellId := ?, + routingInfo := { + physicalChannelIdentity := ? + } + } + }; + + template (present) U_CPHY_CONFIG_CNF car_RL_SetupCnf := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rlSetup := { + cellId := ?, + routingInfo := { + physicalChannelIdentity := ? + } + } + }; + + template (value) U_CPHY_CONFIG_REQ cas_PHY_ReleaseDCH_FDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) TrChConfigType p_TrChConfigType, + template (value) SS_ActivationTime p_SS_ActivationTime := cs_ActivateNow) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + trchRelease_FDD := { // @sic R5-113036 sic@ + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + trchConfigType := p_TrChConfigType, + activationTime := p_SS_ActivationTime + } + }; + + template (value) U_CPHY_CONFIG_REQ cas_PHY_ReleaseDCH_TDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) TrChConfigType p_TrChConfigType, + template (value) SS_ActivationTime p_SS_ActivationTime := cs_ActivateNow) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + trchRelease_TDD := { // @sic R5-113036 sic@ + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + trchConfigType := p_TrChConfigType, + activationTime := p_SS_ActivationTime + } + }; + + //---------------------------------------------------------------------------- + + template (present) U_CPHY_CONFIG_CNF car_TrChCfgCnf := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + trchConfig := { + cellId := ?, + routingInfo := { + physicalChannelIdentity := ? + } + } + }; + + //---------------------------------------------------------------------------- + + template (present) U_CPHY_CONFIG_CNF car_PHY_RelCnf := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + trchRelease := { + cellId := ?, + routingInfo := { + physicalChannelIdentity := ? + } + } + }; + + template (present) U_CPHY_CONFIG_CNF car_CPHY_Sync_IND (PhysicalChannelIdentity p_PhysicalChannelIdentity) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + sync := { + cellId := ?, + routingInfo := { + physicalChannelIdentity := p_PhysicalChannelIdentity + } + } + }; + + template (present) U_CPHY_CONFIG_CNF car_CPHY_Out_of_Sync_IND (PhysicalChannelIdentity p_PhysicalChannelIdentity) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + outOfSync := { + cellId := ?, + routingInfo := { + physicalChannelIdentity := p_PhysicalChannelIdentity + } + } + }; + + //========================================================================================== + template (value) U_CPHY_CONFIG_REQ cas_CPHY_MeasurementConfig_REQ(UTRAN_CellId_Type p_CellId, + template (value) SS_ActivationTime p_ActivationTime, + template (value) CellDCHMeasOccasionInfo_TDD128_r9 p_CellDCHMeasOccasionInfo) := + { /* @status APPROVED (LTE_A,LTE_IRAT) */ + measurementConfig := { + cellId := f_UtranCellId2Int(p_CellId), + activationTime := p_ActivationTime, + measurement := { + rel9 := { + cellDCHMeasOccasionInfo_TDD128 := p_CellDCHMeasOccasionInfo + } + } + } + }; + + template (present) U_CPHY_CONFIG_CNF car_CPHY_MeasurementConfig_CNF(UTRAN_CellId_Type p_CellId) := + { /* @status APPROVED (LTE_A,LTE_IRAT) */ + measurementConfig := { + cellId := f_UtranCellId2Int(p_CellId) + } + }; + + + //========================================================================================== + template (present) U_CRLC_CONFIG_CNF car_CRLC_Integrity_Failure_IND := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + integrityFail := { + cellId := ?, + routingInfo := ?, + failureCause := codeNotMatched + } + }; + + template (value) U_CMAC_CONFIG_REQ cas_CMAC_ReconfigInfo_FDD ( UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) UE_Info p_UEInfo, + template (value) TrCHInfo p_TrCHInfo, + template (value) TrCH_LogCHMappingList1 p_TrCH_LogCHMapping, + template (value) SS_ActivationTime p_ActivationTime ) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + config_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := fdd, + configMessage := { + reconfigure := { + activationTime := p_ActivationTime, + uE_Info := p_UEInfo, + trCHInfo := p_TrCHInfo, + trCH_LogCHMapping := p_TrCH_LogCHMapping, + associatedPhychConfigToFollow := omit, + servingAndSecondaryCellActivation := omit, + tSN_FieldExtension := omit, + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + } + } + }; + + template (value) U_CMAC_CONFIG_REQ cas_CMAC_ReconfigInfo_TDD ( UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) UE_Info p_UEInfo, + template (value) TrCHInfo_TDD p_TrCHInfo, + template (value) TrCH_LogCHMappingList1_TDD p_TrCH_LogCHMapping, //@sic R5-134957 sic@ + template (value) SS_ActivationTime p_ActivationTime ) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + config_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := tdd128, + configMessage := { + reconfigure := { + activationTime := p_ActivationTime, + uE_Info := p_UEInfo, + trCHInfo := p_TrCHInfo, + trCH_LogCHMapping := p_TrCH_LogCHMapping, + associatedPhychConfigToFollow := omit, + tSN_FieldExtension := omit, + relAspTypeExtension := omit + } + } + } + }; + + //---------------------------------------------------------------------------- + + template (value) U_CMAC_CONFIG_REQ cas_CMAC_CfgInfo_FDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) UE_Info p_UEInfo, + template (value) TrCHInfo p_TrCHInfo, + template (value) TrCH_LogCHMappingList1 p_TrCH_LogCHMapping, + template (omit) boolean p_TSN_FieldExtension := omit, + template (omit) CmacConfigReq_r10OrLaterExtensionType p_CmacConfigReq_r10OrLater := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + config_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := fdd, + configMessage := { + setup := { + activationTime := cs_ActivateNow, + uE_Info := p_UEInfo, + trCHInfo := p_TrCHInfo, + trCH_LogCHMapping := p_TrCH_LogCHMapping, + associatedPhychConfigToFollow := omit, + servingAndSecondaryCellActivation := omit, + tSN_FieldExtension := p_TSN_FieldExtension, + relAspTypeExtension := p_CmacConfigReq_r10OrLater // @sic R5-130613 sic@ + } + } + } + }; + + template (value) U_CMAC_CONFIG_REQ cads_CMAC_CfgInfoAssPhyChFollow_FDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) UE_Info p_UEInfo, + template (value) TrCHInfo p_TrCHInfo, + template (value) TrCH_LogCHMappingList1 p_TrCH_LogCHMapping, + template (omit) boolean p_TSN_FieldExtension := omit, + template (omit) CmacConfigReq_r10OrLaterExtensionType p_CmacConfigReq_r10OrLater := omit) + modifies cas_CMAC_CfgInfo_FDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + config_FDD := { + configMessage := { + setup := { + associatedPhychConfigToFollow := { tsc_PICH1 } + } + } + } + }; + + template (value) U_CMAC_CONFIG_REQ cas_CMAC_CfgInfo_TDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) UE_Info p_UEInfo, + template (value) TrCHInfo_TDD p_TrCHInfo, + template (value) TrCH_LogCHMappingList1_TDD p_TrCH_LogCHMapping // @sic R5-134957 sic@ + ) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + config_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := tdd128, + configMessage := { + setup := { + activationTime := cs_ActivateNow, + uE_Info := p_UEInfo, + trCHInfo := p_TrCHInfo, + trCH_LogCHMapping := p_TrCH_LogCHMapping, + associatedPhychConfigToFollow := omit, + tSN_FieldExtension := omit, + relAspTypeExtension := omit + } + } + } + }; + + template (value) U_CMAC_CONFIG_REQ cads_CMAC_CfgInfoAssPhyChFollow_TDD(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) UE_Info p_UEInfo, + template (value) TrCHInfo_TDD p_TrCHInfo, + template (value) TrCH_LogCHMappingList1_TDD p_TrCH_LogCHMapping) + modifies cas_CMAC_CfgInfo_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + config_TDD := { + configMessage := { + setup := { + associatedPhychConfigToFollow := { tsc_PICH1 } + } + } + } + }; + + template (value) U_CMAC_CONFIG_REQ cas_CMAC_MACes_Setup_REQ (UTRAN_CellId_Type p_CellId, + template (value) SS_ActivationTime p_SS_ActivationTime, + template (omit) DDI_MappingList p_DDI_MappingList) := + { /* @status APPROVED (LTE_IRAT) */ + configMACes := { + cellId := f_UtranCellId2Int(p_CellId), + configMessage := { + setup := { + activationTime := p_SS_ActivationTime, + ddiMappinglist := p_DDI_MappingList, + macTestMode := omit + } + } + } + }; + //---------------------------------------------------------------------------- + + template (value) U_CMAC_CONFIG_REQ cas_CMAC_MACes_Release_REQ (UTRAN_CellId_Type p_CellId) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + configMACes := { + cellId := f_UtranCellId2Int(p_CellId), + configMessage := { + release := { activateNow := NULL } + } + } + }; + + template (value) U_CMAC_CONFIG_REQ cas_CMAC_MACe_Release_FDD_REQ(integer p_NodeB_Id) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + configMACe_FDD := { + nodeB_Id := p_NodeB_Id, + configMessage := { + release := { activateNow := NULL } + } + } + }; + + template (value) U_CMAC_CONFIG_REQ cas_CMAC_MACe_Release_TDD_REQ(integer p_NodeB_Id) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + configMACe_TDD := { + nodeB_Id := p_NodeB_Id, + configMessage := { + release := { activateNow := NULL } + } + } + }; + + template (value) U_CMAC_CONFIG_REQ cas_MAC_FDD_Release(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) SS_ActivationTime p_SS_ActivationTime := cs_ActivateNow) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + config_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := fdd, + configMessage := { + release := p_SS_ActivationTime + } + } + }; + + template (value) U_CMAC_CONFIG_REQ cas_MAC_TDD_Release(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) SS_ActivationTime p_SS_ActivationTime := cs_ActivateNow) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + config_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := tdd128, + configMessage := { + release := p_SS_ActivationTime + } + } + }; + + template (present) U_CMAC_CONFIG_CNF car_CMAC_MACes_Config_CNF (UTRAN_CellId_Type p_CellId) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + configMACes := { + cellId := f_UtranCellId2Int(p_CellId) + } + }; + + template (present) U_CMAC_CONFIG_CNF car_CMAC_MACe_Config_CNF(template integer p_NodeB_Id) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + configMACe := { + nodeB_Id := p_NodeB_Id + } + }; + + template (present) U_CMAC_CONFIG_CNF car_CMAC_MACHe_NodeB_CellMapping_CNF ( integer p_NodeB_Id ) := + { /* @status APPROVED (LTE_IRAT) */ + nodeB := { + nodeB_Id := p_NodeB_Id + } + }; + + template (present) U_CMAC_CONFIG_CNF car_CMAC_MACHs_CfgCnf ( UTRAN_CellId_Type p_CellId ) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + tfrc := { + cellId := f_UtranCellId2Int(p_CellId) + } + }; + + template (present) U_CMAC_CONFIG_CNF car_CMAC_CfgCnf := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + config := { + cellId := ?, + routingInfo := { + physicalChannelIdentity := ? + } + } + }; + + template (value) U_CRLC_CONFIG_REQ cas_RLC_SuspendRB(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + RLC_SequenceNumber p_RLC_SeqNum) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + suspend := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + n := p_RLC_SeqNum + } + }; + + template (value) U_CRLC_CONFIG_REQ cas_ResumeRB(UTRAN_CellId_Type p_CellId, + integer p_RB_Id) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + resume := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + } + } + }; + + template (present) U_CRLC_CONFIG_CNF car_ResumeRB(UTRAN_CellId_Type p_CellId, + template integer p_RB_Id) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + resume := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + } + } + }; + + template (present) U_CRLC_CONFIG_CNF car_SuspendRB(UTRAN_CellId_Type p_CellId, + template integer p_RB_Id) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + suspend := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + vt := ? + } + }; + + template (present) U_CRLC_CONFIG_CNF car_CRLC_CfgCnf := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + config := { + cellId := ?, + routingInfo := { + rB_Identity := ? + } + } + }; + + //---------------------------------------------------------------------------- + + template (value) U_CRLC_CONFIG_REQ cas_RB_PCCH_Info_FDD(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + template (value) RB_LogCH_Mapping p_LogChMapping) := + { + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + config_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + ratType := fdd, + configMessage := { + setup := { + sS_rlc_Info := omit, + sS_rlc_Info_r8 := { + r8 := { + sS_ul_RLC_Mode := omit, + sS_dl_RLC_Mode := { + dl_PayloadSize := 240, + dl_RLCModeInfo := { + ul_TM_RLC_Mode := { + transmissionRLC_Discard := omit, + segmentationIndication := false + } + }, + dl_UM_RLC_LI_size := omit, + dl_UM_outOfSeqDelivery := omit, + dl_RLC_PDU_size := omit + }, + rlc_OneSidedReEst := omit, // DEFAULT FALSE + altE_bitInterpretation := omit, // DEFAULT false + useSpecialValueOfHEField := omit, // DEFAULT false + uM_SN_DeliveryMode := omit // DEFAULT nonConfigured + } + }, + rB_LogCH_Mapping := p_LogChMapping, + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + }, + activationTime := omit + } + }; + + template (value) U_CRLC_CONFIG_REQ cas_RB_PCCH_Info_TDD(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + template (value) RB_LogCH_Mapping p_LogChMapping) := + { + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + config_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + ratType := tdd128, + configMessage := { + setup := { + sS_rlc_Info := omit, + sS_rlc_Info_r8 := { + r8 := { + sS_ul_RLC_Mode := omit, + sS_ul_PayloadSize := omit, // @sic R5-110103 sic@ + sS_dl_RLC_Mode := { + dl_PayloadSize := 240, + dl_RLCModeInfo := { + ul_TM_RLC_Mode := { + transmissionRLC_Discard := omit, + segmentationIndication := false + } + }, + dl_UM_RLC_LI_size := omit, + dl_UM_outOfSeqDelivery := omit, + dl_RLC_PDU_size := omit + }, + rlc_OneSidedReEst := omit, // DEFAULT FALSE + altE_bitInterpretation := omit, // DEFAULT false + useSpecialValueOfHEField := omit, // DEFAULT false + uM_SN_DeliveryMode := omit // DEFAULT nonConfigured + } + }, + rB_LogCH_Mapping := p_LogChMapping, + relAspTypeExtension := omit + } + }, + activationTime := omit + } + }; + + //---------------------------------------------------------------------------- + + template (value) U_CRLC_CONFIG_REQ cas_RB_AM_Info_Common_FDD(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + template (value) DL_AM_RLC_Mode_r7 p_DL_AM_RLC_Mode_r7, + template (value) SS_DL_RLC_Mode p_SS_DL_RLC_Mode, + template (value) RB_LogCH_Mapping p_LogChMapping, + template (omit) SS_RLC_Info_r8OrLater.r8.useSpecialValueOfHEField p_UseSpecialValueOfHEField := omit, + template (omit) SS_ActivationTime p_ActTime := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + config_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + ratType := fdd, + configMessage := { + setup := { + sS_rlc_Info := omit, + sS_rlc_Info_r8 := { + r8 := { + sS_ul_RLC_Mode := { + dl_AM_RLC_Mode := p_DL_AM_RLC_Mode_r7 + }, + sS_dl_RLC_Mode := p_SS_DL_RLC_Mode, + rlc_OneSidedReEst := omit, // DEFAULT false + altE_bitInterpretation := omit, // DEFAULT false + useSpecialValueOfHEField := p_UseSpecialValueOfHEField, // DEFAULT false + uM_SN_DeliveryMode := omit // DEFAULT nonConfigured + } + }, + rB_LogCH_Mapping := p_LogChMapping, + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + }, + activationTime := p_ActTime + } + }; + + + template (value) U_CRLC_CONFIG_REQ cas_RB_AM_Info_SRB_Fixed_FDD(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + template (value) RB_LogCH_Mapping p_LogChMapping, + template (value) OctetModeRLC_SizeInfoType1 p_RLC_Size) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cas_RB_AM_Info_Common_FDD(p_CellId, p_RB_Id, cds_DL_AM_RLC_SRB_r7, cs_SS_DL_RLC_Mode_FixedSize(cds_UL_AM_RLC_SRB, p_RLC_Size), p_LogChMapping); /* @sic R5s110782 - Additional Changes sic@ */ + + + template (value) U_CRLC_CONFIG_REQ cas_RB_AM_Info_RAB_FDD(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + template (value) RB_LogCH_Mapping p_LogChMapping, + template (value) OctetModeRLC_SizeInfoType1 p_RLC_Size) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cas_RB_AM_Info_Common_FDD(p_CellId, p_RB_Id, cs_DL_AM_RLC_r7, cs_SS_DL_RLC_Mode_FixedSize(cs_UL_AM_RLC, p_RLC_Size), p_LogChMapping); /* @sic R5s110782 - Additional Changes sic@ */ + + + template (value) U_CRLC_CONFIG_REQ cas_RB_AM_Info_Common_TDD(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + template (value) DL_AM_RLC_Mode_r7 p_DL_AM_RLC_Mode_r7, + template (value) SS_DL_RLC_Mode p_SS_DL_RLC_Mode, + template (value) RB_LogCH_Mapping p_LogChMapping) := + { + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + config_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + ratType := tdd128, + configMessage := { + setup := { + sS_rlc_Info := omit, + sS_rlc_Info_r8 := { + r8 := { + sS_ul_RLC_Mode := { + dl_AM_RLC_Mode := p_DL_AM_RLC_Mode_r7 + }, + sS_ul_PayloadSize := omit, // @sic R5-110103 sic@ + sS_dl_RLC_Mode := p_SS_DL_RLC_Mode, + rlc_OneSidedReEst := omit, // DEFAULT false + altE_bitInterpretation := omit, // DEFAULT false + useSpecialValueOfHEField := omit, // DEFAULT false + uM_SN_DeliveryMode := omit // DEFAULT nonConfigured + } + }, + rB_LogCH_Mapping := p_LogChMapping, + relAspTypeExtension := omit + } + }, + activationTime := omit + } + }; + + template (value) U_CRLC_CONFIG_REQ cas_RB_AM_Info_SRB_Fixed_TDD(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + template (value) RB_LogCH_Mapping p_LogChMapping, + template (value) OctetModeRLC_SizeInfoType1 p_RLC_Size) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cas_RB_AM_Info_Common_TDD(p_CellId, p_RB_Id, cds_DL_AM_RLC_SRB_r7, cs_SS_DL_RLC_Mode_FixedSize(cds_UL_AM_RLC_SRB, p_RLC_Size), p_LogChMapping); + + //---------------------------------------------------------------------------- + + template (value) U_CRLC_CONFIG_REQ cas_CRLC_RB_RelReq_FDD(UTRAN_CellId_Type p_CellId, + integer p_RB_Id) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + config_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + ratType := fdd, + configMessage := { + release := NULL + }, + activationTime := omit + } + }; + + template (value) U_CRLC_CONFIG_REQ cas_CRLC_RB_RelReq_TDD(UTRAN_CellId_Type p_CellId, + integer p_RB_Id) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + config_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + ratType := tdd128, + configMessage := { + release := NULL + }, + activationTime := omit + } + }; + + //----------------------------------------------------------------------------- + + template (value) U_CRLC_CONFIG_REQ cas_RB_UM_ReconfigInfo_FDD(UTRAN_CellId_Type p_CellId, // @sic R5s110278 sic@ + integer p_RB_Id, + template (value) RB_LogCH_Mapping p_LogChMapping) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + config_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + ratType := fdd, + configMessage := { + reconfigure := { + sS_rlc_Info := omit, + sS_rlc_Info_r8 := { + r8 := { + sS_ul_RLC_Mode := { + dl_UM_RLC_Mode := { + dl_UM_RLC_LI_size := size7, + dl_Reception_Window_Size := omit + } + }, + sS_dl_RLC_Mode := { + dl_PayloadSize := 136, + dl_RLCModeInfo := { + ul_UM_RLC_Mode := { + transmissionRLC_Discard := { + timerBasedNoExplicit := dt100 + } + } + }, + dl_UM_RLC_LI_size := size7, + dl_UM_outOfSeqDelivery := omit, + dl_RLC_PDU_size := omit + }, + rlc_OneSidedReEst := omit, // DEFAULT false + altE_bitInterpretation := omit, // DEFAULT false + useSpecialValueOfHEField := omit, // DEFAULT false + uM_SN_DeliveryMode := omit // DEFAULT nonConfigured + } + }, + rB_LogCH_Mapping := p_LogChMapping, + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + }, + activationTime := omit + } + }; + + template (value) U_CRLC_CONFIG_REQ cas_RB_UM_ReconfigInfo_TDD(UTRAN_CellId_Type p_CellId, // @sic R5s110278 sic@ + integer p_RB_Id, + template (value) RB_LogCH_Mapping p_LogChMapping) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + config_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + ratType := tdd128, + configMessage := { + reconfigure := { + sS_rlc_Info := omit, + sS_rlc_Info_r8 := { + r8 := { + sS_ul_RLC_Mode := { + dl_UM_RLC_Mode := { + dl_UM_RLC_LI_size := size7, + dl_Reception_Window_Size := omit + } + }, + sS_ul_PayloadSize := omit, // @sic R5-110103 sic@ + sS_dl_RLC_Mode := { + dl_PayloadSize := 136, + dl_RLCModeInfo := { + ul_UM_RLC_Mode := { + transmissionRLC_Discard := { + timerBasedNoExplicit := dt100 + } + } + }, + dl_UM_RLC_LI_size := size7, + dl_UM_outOfSeqDelivery := omit, + dl_RLC_PDU_size := omit + }, + rlc_OneSidedReEst := omit, // DEFAULT false + altE_bitInterpretation := omit, // DEFAULT false + useSpecialValueOfHEField := omit, // DEFAULT false + uM_SN_DeliveryMode := omit // DEFAULT nonConfigured + } + }, + rB_LogCH_Mapping := p_LogChMapping, + relAspTypeExtension := omit + } + }, + activationTime := omit + } + }; + + template (value) U_CRLC_CONFIG_REQ cas_RB_UM_Info_FDD(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + template (value) RB_LogCH_Mapping p_LogChMapping) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + config_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + ratType := fdd, + configMessage := { + setup := { + sS_rlc_Info := omit, + sS_rlc_Info_r8 := { + r8 := { + sS_ul_RLC_Mode := { + dl_UM_RLC_Mode := { + dl_UM_RLC_LI_size := size7, + dl_Reception_Window_Size := omit + } + }, + sS_dl_RLC_Mode := { + dl_PayloadSize := 136, + dl_RLCModeInfo := { + ul_UM_RLC_Mode := { + transmissionRLC_Discard := { + timerBasedNoExplicit := dt100 + } + } + }, + dl_UM_RLC_LI_size := size7, + dl_UM_outOfSeqDelivery := omit, + dl_RLC_PDU_size := omit + }, + rlc_OneSidedReEst := omit, // DEFAULT false + altE_bitInterpretation := omit, // DEFAULT false + useSpecialValueOfHEField := omit, // DEFAULT false + uM_SN_DeliveryMode := omit // DEFAULT nonConfigured + } + }, + rB_LogCH_Mapping := p_LogChMapping, + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + }, + activationTime := omit + } + }; + + template (value) U_CRLC_CONFIG_REQ cas_RB_UM_Info_TDD(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + template (value) RB_LogCH_Mapping p_LogChMapping) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + config_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + ratType := tdd128, + configMessage := { + setup := { + sS_rlc_Info := omit, + sS_rlc_Info_r8 := { + r8 := { + sS_ul_RLC_Mode := { + dl_UM_RLC_Mode := { + dl_UM_RLC_LI_size := size7, + dl_Reception_Window_Size := omit + } + }, + sS_ul_PayloadSize := omit, // @sic R5-110103 sic@ + sS_dl_RLC_Mode := { + dl_PayloadSize := 136, + dl_RLCModeInfo := { + ul_UM_RLC_Mode := { + transmissionRLC_Discard := { + timerBasedNoExplicit := dt100 + } + } + }, + dl_UM_RLC_LI_size := size7, + dl_UM_outOfSeqDelivery := omit, + dl_RLC_PDU_size := omit + }, + rlc_OneSidedReEst := omit, // DEFAULT false + altE_bitInterpretation := omit, // DEFAULT false + useSpecialValueOfHEField := omit, // DEFAULT false + uM_SN_DeliveryMode := omit // DEFAULT nonConfigured + } + }, + rB_LogCH_Mapping := p_LogChMapping, + relAspTypeExtension := omit + } + }, + activationTime := omit + } + }; + + //---------------------------------------------------------------------------- + + template (value) U_CRLC_CONFIG_REQ cas_RB_TM_DL_InfoNoSeg_FDD(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + template (omit) integer p_PayloadSize, + template (value) RB_LogCH_Mapping p_LogChMapping) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + config_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + ratType := fdd, + configMessage := { + setup := { + sS_rlc_Info := omit, + sS_rlc_Info_r8 := { + r8 := { + sS_ul_RLC_Mode := omit, + sS_dl_RLC_Mode := { + dl_PayloadSize := p_PayloadSize, + dl_RLCModeInfo := { + ul_TM_RLC_Mode := { + transmissionRLC_Discard := omit, + segmentationIndication := false + } + }, + dl_UM_RLC_LI_size := omit, + dl_UM_outOfSeqDelivery := omit, + dl_RLC_PDU_size := omit + }, + rlc_OneSidedReEst := omit, // DEFAULT FALSE + altE_bitInterpretation := omit, // DEFAULT false + useSpecialValueOfHEField := omit, // DEFAULT false + uM_SN_DeliveryMode := omit // DEFAULT nonConfigured + } + }, + rB_LogCH_Mapping := p_LogChMapping, + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + }, + activationTime := omit + } + }; + + template (value) U_CRLC_CONFIG_REQ cas_RB_TM_DL_InfoNoSeg_TDD(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + template (omit) integer p_PayloadSize, + template (value) RB_LogCH_Mapping p_LogChMapping) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + config_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + ratType := tdd128, + configMessage := { + setup := { + sS_rlc_Info := omit, + sS_rlc_Info_r8 := { + r8 := { + sS_ul_RLC_Mode := omit, + sS_ul_PayloadSize := omit, // @sic R5-110103 sic@ + sS_dl_RLC_Mode := { + dl_PayloadSize := p_PayloadSize, + dl_RLCModeInfo := { + ul_TM_RLC_Mode := { + transmissionRLC_Discard := omit, + segmentationIndication := false + } + }, + dl_UM_RLC_LI_size := omit, + dl_UM_outOfSeqDelivery := omit, + dl_RLC_PDU_size := omit + }, + rlc_OneSidedReEst := omit, // DEFAULT FALSE + altE_bitInterpretation := omit, // DEFAULT false + useSpecialValueOfHEField := omit, // DEFAULT false + uM_SN_DeliveryMode := omit // DEFAULT nonConfigured + } + }, + rB_LogCH_Mapping := p_LogChMapping, + relAspTypeExtension := omit + } + }, + activationTime := omit + } + }; + + //---------------------------------------------------------------------------- + + template (value) U_CRLC_CONFIG_REQ cas_RB_TM_UL_Info_FDD(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + template (omit) integer p_PayloadSize, + template (value) RB_LogCH_Mapping p_LogChMapping) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + config_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + ratType := fdd, + configMessage := { + setup := { + sS_rlc_Info := omit, + sS_rlc_Info_r8 := { + r8 := { + sS_ul_RLC_Mode := { + dl_TM_RLC_Mode := { + segmentationIndication := false + } + }, + sS_dl_RLC_Mode := { + dl_PayloadSize := p_PayloadSize, + dl_RLCModeInfo := { + ul_TM_RLC_Mode := { + transmissionRLC_Discard := omit, + segmentationIndication := false + } + }, + dl_UM_RLC_LI_size := omit, + dl_UM_outOfSeqDelivery := omit, + dl_RLC_PDU_size := omit + }, + rlc_OneSidedReEst := omit, // DEFAULT FALSE + altE_bitInterpretation := omit, // DEFAULT false + useSpecialValueOfHEField := omit, // DEFAULT false + uM_SN_DeliveryMode := omit // DEFAULT nonConfigured + } + }, + rB_LogCH_Mapping := p_LogChMapping, + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + }, + activationTime := omit + } + }; + + template (value) U_CRLC_CONFIG_REQ cas_RB_TM_UL_Info_TDD(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + PayloadSize p_UL_Payload, + template (omit) integer p_PayloadSize, + template (value) RB_LogCH_Mapping p_LogChMapping) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + config_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + ratType := tdd128, + configMessage := { + setup := { + sS_rlc_Info := omit, + sS_rlc_Info_r8 := { + r8 := { + sS_ul_RLC_Mode := { + dl_TM_RLC_Mode := { + segmentationIndication := false + } + }, + sS_ul_PayloadSize := p_UL_Payload, + sS_dl_RLC_Mode := { + dl_PayloadSize := p_PayloadSize, + dl_RLCModeInfo := { + ul_TM_RLC_Mode := { + transmissionRLC_Discard := omit, + segmentationIndication := false + } + }, + dl_UM_RLC_LI_size := omit, + dl_UM_outOfSeqDelivery := omit, + dl_RLC_PDU_size := omit + }, + rlc_OneSidedReEst := omit, // DEFAULT FALSE + altE_bitInterpretation := omit, // DEFAULT false + useSpecialValueOfHEField := omit, // DEFAULT false + uM_SN_DeliveryMode := omit // DEFAULT nonConfigured + } + }, + rB_LogCH_Mapping := p_LogChMapping, + relAspTypeExtension := omit + } + }, + activationTime := omit + } + }; + + //---------------------------------------------------------------------------- + + template (value) U_CRLC_CONFIG_REQ cas_RB_UM_DL_Info_FDD(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + template (value) RB_LogCH_Mapping p_LogChMapping) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + config_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + ratType := fdd, + configMessage := { + setup := { + sS_rlc_Info := omit, + sS_rlc_Info_r8 := { + r8 := { + sS_ul_RLC_Mode := omit, + sS_dl_RLC_Mode := { + dl_PayloadSize := 152, + dl_RLCModeInfo := { + ul_UM_RLC_Mode := { + transmissionRLC_Discard := omit //@sic R5s130559 sic@ + } + }, + dl_UM_RLC_LI_size := omit, + dl_UM_outOfSeqDelivery := omit, + dl_RLC_PDU_size := omit + }, + rlc_OneSidedReEst := omit, // DEFAULT FALSE + altE_bitInterpretation := omit, // DEFAULT false + useSpecialValueOfHEField := omit, // DEFAULT false + uM_SN_DeliveryMode := omit // DEFAULT nonConfigured + } + }, + rB_LogCH_Mapping := p_LogChMapping, + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + }, + activationTime := omit + } + }; + + template (value) U_CRLC_CONFIG_REQ cas_RB_UM_DL_Info_TDD(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + template (value) RB_LogCH_Mapping p_LogChMapping) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + config_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + ratType := tdd128, + configMessage := { + setup := { + sS_rlc_Info := omit, + sS_rlc_Info_r8 := { + r8 := { + sS_ul_RLC_Mode := omit, + sS_ul_PayloadSize := omit, + sS_dl_RLC_Mode := { + dl_PayloadSize := 160, // @sic R5s120405 sic@ + dl_RLCModeInfo := { + ul_UM_RLC_Mode := { + transmissionRLC_Discard := omit //@sic R5s130559 sic@ + } + }, + dl_UM_RLC_LI_size := omit, + dl_UM_outOfSeqDelivery := omit, + dl_RLC_PDU_size := omit + }, + rlc_OneSidedReEst := omit, // DEFAULT FALSE + altE_bitInterpretation := omit, // DEFAULT false + useSpecialValueOfHEField := omit, // DEFAULT false + uM_SN_DeliveryMode := omit // DEFAULT nonConfigured + } + }, + rB_LogCH_Mapping := p_LogChMapping, + relAspTypeExtension := omit + } + }, + activationTime := omit + } + }; + + //---------------------------------------------------------------------------- + + template (value) U_CRLC_CONFIG_REQ cas_RB_AM_Info_RAB_TDD(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + template (value) RB_LogCH_Mapping p_LogChMapping, + template (value) OctetModeRLC_SizeInfoType1 p_RLC_Size) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cas_RB_AM_Info_Common_TDD(p_CellId, p_RB_Id, cs_DL_AM_RLC_r7, cs_SS_DL_RLC_Mode_FixedSize(cs_UL_AM_RLC, p_RLC_Size), p_LogChMapping); + + //---------------------------------------------------------------------------- + + template (value) U_CRLC_CONFIG_REQ cas_RB_AM_ReconfMapping_FDD ( UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + template (value) RB_LogCH_Mapping p_LogChMapping ) := + { /* @status APPROVED (LTE_IRAT) */ + config_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + ratType := fdd, + configMessage := { + reconfigure := { + sS_rlc_Info := omit, + sS_rlc_Info_r8 := omit, + rB_LogCH_Mapping := p_LogChMapping, + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + }, + activationTime := omit + } + }; + + template (value) U_CRLC_CONFIG_REQ cas_RB_AM_ReconfMapping_TDD ( UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + template (value) RB_LogCH_Mapping p_LogChMapping ) := + { /* @status APPROVED (LTE_IRAT) */ + config_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + ratType := tdd128, + configMessage := { + reconfigure := { + sS_rlc_Info := omit, + sS_rlc_Info_r8 := omit, + rB_LogCH_Mapping := p_LogChMapping, + relAspTypeExtension := omit + } + }, + activationTime := omit + } + }; + + //---------------------------------------------------------------------------- + + template (value) U_CRLC_CONFIG_REQ cas_RB_BCCH_Info_FDD(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + template (value) RB_LogCH_Mapping p_LogChMapping) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + config_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + ratType := fdd, + configMessage := { + setup := { + sS_rlc_Info := omit, + sS_rlc_Info_r8 := { + r8 := { + sS_ul_RLC_Mode := omit, + sS_dl_RLC_Mode := { + dl_PayloadSize := 246, + dl_RLCModeInfo := { + ul_TM_RLC_Mode := { + transmissionRLC_Discard := omit, + segmentationIndication := false + } + }, + dl_UM_RLC_LI_size := omit, + dl_UM_outOfSeqDelivery := omit, + dl_RLC_PDU_size := omit + }, + rlc_OneSidedReEst := omit, // DEFAULT FALSE + altE_bitInterpretation := omit, // DEFAULT false + useSpecialValueOfHEField := omit, // DEFAULT false + uM_SN_DeliveryMode := omit // DEFAULT nonConfigured + } + }, + rB_LogCH_Mapping := p_LogChMapping, + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + }, + activationTime := omit + } + }; + + template (value) U_CRLC_CONFIG_REQ cas_RB_BCCH_Info_TDD(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + template (value) RB_LogCH_Mapping p_LogChMapping) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + config_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + ratType := tdd128, + configMessage := { + setup := { + sS_rlc_Info := omit, + sS_rlc_Info_r8 := { + r8 := { + sS_ul_RLC_Mode := omit, + sS_ul_PayloadSize := omit, // @sic R5-110103 sic@ + sS_dl_RLC_Mode := { + dl_PayloadSize := 246, + dl_RLCModeInfo := { + ul_TM_RLC_Mode := { + transmissionRLC_Discard := omit, + segmentationIndication := false + } + }, + dl_UM_RLC_LI_size := omit, + dl_UM_outOfSeqDelivery := omit, + dl_RLC_PDU_size := omit + }, + rlc_OneSidedReEst := omit, // DEFAULT FALSE + altE_bitInterpretation := omit, // DEFAULT false + useSpecialValueOfHEField := omit, // DEFAULT false + uM_SN_DeliveryMode := omit // DEFAULT nonConfigured + } + }, + rB_LogCH_Mapping := p_LogChMapping, + relAspTypeExtension := omit + } + }, + activationTime := omit + } + }; + + //---------------------------------------------------------------------------- + + template (value) U_CMAC_CONFIG_REQ cas_SysInfo_Schedul(UTRAN_CellId_Type p_CellId, + integer p_REP, + integer p_POS, + RatType p_RatType, + template (omit) BCCH_ModificationTime p_Timing := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + sysInfo := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := {rB_Identity := tsc_RB_BCCH}, + ratType := p_RatType, + configMessage := { + sg_REP := p_REP, + sg_POS := p_POS, + bcch_ModificationTime := p_Timing + } + } + }; + + template (present) U_CMAC_CONFIG_CNF car_SysInfoCfgCnf(UTRAN_CellId_Type p_CellId, + integer p_RB_Identity) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + sysInfo := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := {rB_Identity := p_RB_Identity} + } + }; + + //---------------------------------------------------------------------------- + + template (value) RLC_TR_DATA_REQ cas_BCCH_BCH_DataReq(UTRAN_CellId_Type p_CellId, + integer p_RB, + template (value) BCCH_BCH_Message p_Message) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB + }, + tM_message := { + bCCH_BCH_Message := p_Message + } + }; + + template (value) RLC_TR_DATA_REQ cas_PagingType1(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + template (value) PCCH_Message p_Pdu) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + tM_message := { + pCCH_Message := p_Pdu + } + }; + + template (value) RLC_TR_DATA_REQ cas_SysInfoChangeInd(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + template (value) BCCH_FACH_Message p_Pdu) := + { /* @status APPROVED (LTE_IRAT) */ + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + tM_message := { + bCCH_FACH_Message := p_Pdu + } + }; + + //---------------------------------------------------------------------------- + + template (value) U_CRLC_CONFIG_REQ cas_CRLC_DL_IntegrityActivateReq(UTRAN_CellId_Type p_CellId, + CN_DomainIdentity p_Domain, + template (value) IntegrityProtectionModeInfo_r7 p_IntegrityProtectionModeInfo) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + integrity := { + cellId := f_UtranCellId2Int(p_CellId), + cn_DomainIdentity := p_Domain, + integrityActivationInfo := { + integrityProtectionModeInfo_r7 := p_IntegrityProtectionModeInfo + } + } + }; + + template (value) U_CRLC_CONFIG_REQ cas_CRLC_UL_IntegrityActivateReq(UTRAN_CellId_Type p_CellId, + CN_DomainIdentity p_Domain, + template (value) IntegrityProtActivationInfoList p_IntegrityProtActivationInfo) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + integrity := { + cellId := f_UtranCellId2Int(p_CellId), + cn_DomainIdentity := p_Domain, + integrityActivationInfo := { + ul_IntegProtActivationInfo := p_IntegrityProtActivationInfo + } + } + }; + + template (present) U_CRLC_CONFIG_CNF car_CRLC_IntegrityActivateCnf(UTRAN_CellId_Type p_CellId) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + integrity := { + cellId := f_UtranCellId2Int(p_CellId) + } + }; + + template (value) U_CRLC_CONFIG_REQ cas_CRLC_UL_CipherActReq_FDD(UTRAN_CellId_Type p_CellId, + CN_DomainIdentity p_CN_Domain, + template (value) RB_ActivationTimeInfoList p_RB_ActivationTimeInfoList, + RLC_IncMode p_IncMode) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cipher := { + cellId := f_UtranCellId2Int(p_CellId), + ratType := fdd, + cn_DomainIdentity := p_CN_Domain, + ciphActivationInfo := { + rb_UL_CipheringActivationTimeInfo := p_RB_ActivationTimeInfoList + }, + incHFN := p_IncMode + } + }; + + template (value) U_CRLC_CONFIG_REQ cas_CRLC_UL_CipherActReq_TDD(UTRAN_CellId_Type p_CellId, + CN_DomainIdentity p_CN_Domain, + template (value) RB_ActivationTimeInfoList p_RB_ActivationTimeInfoList, + RLC_IncMode p_IncMode) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cipher := { + cellId := f_UtranCellId2Int(p_CellId), + ratType := tdd128, + cn_DomainIdentity := p_CN_Domain, + ciphActivationInfo := { + rb_UL_CipheringActivationTimeInfo := p_RB_ActivationTimeInfoList + }, + incHFN := p_IncMode + } + }; + + template (value) U_CRLC_CONFIG_REQ cas_CRLC_DL_CipherActReq_FDD(UTRAN_CellId_Type p_CellId, + CN_DomainIdentity p_CN_Domain, + integer p_RB_Id, + CipheringModeCommand_r7 p_CipherMode, + RLC_SequenceNumber p_N, + RLC_IncMode p_IncMode) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cipher := { + cellId := f_UtranCellId2Int(p_CellId), + ratType := fdd, + cn_DomainIdentity := p_CN_Domain, + ciphActivationInfo := { + cipheringModeInfo_r7 := { + cipheringModeCommand := p_CipherMode, + activationTimeForDPCH := omit, + rb_DL_CiphActivationTimeInfo := { + cs_RB_ActTimeInfo(p_RB_Id, p_N) + } + } + }, + incHFN := p_IncMode + } + }; + + template (value) U_CRLC_CONFIG_REQ cas_CRLC_DL_CipherActReq_TDD(UTRAN_CellId_Type p_CellId, + CN_DomainIdentity p_CN_Domain, + integer p_RB_Id, + CipheringModeCommand_r7 p_CipherMode, + RLC_SequenceNumber p_N, + RLC_IncMode p_IncMode) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cipher := { + cellId := f_UtranCellId2Int(p_CellId), + ratType := tdd128, + cn_DomainIdentity := p_CN_Domain, + ciphActivationInfo := { + cipheringModeInfo_r7 := { + cipheringModeCommand := p_CipherMode, + activationTimeForDPCH := omit, + rb_DL_CiphActivationTimeInfo := { + cs_RB_ActTimeInfo(p_RB_Id, p_N) + } + } + }, + incHFN := p_IncMode + } + }; + + template (present) U_CRLC_CONFIG_CNF car_CRLC_CipherActCnf(UTRAN_CellId_Type p_CellId) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cipher := { + cellId := f_UtranCellId2Int(p_CellId) + } + }; + + template (present) U_CMAC_CONFIG_CNF car_CMAC_SecurityModeCfgCnf(UTRAN_CellId_Type p_CellId) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + secMode := { + cellId := f_UtranCellId2Int(p_CellId) + } + }; + + template (value) U_CMAC_CONFIG_REQ cas_CMAC_SecurityModeCfgReq( UTRAN_CellId_Type p_CellId, + CN_DomainIdentity p_Domain, + template (omit) HyperFrameNumber p_Hfn, + template (omit) B128_Type p_KC, + template (omit) B128_Type p_IK, + template (omit) B64_Type p_GSM_CK) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + secMode := { + cellId := f_UtranCellId2Int(p_CellId), + macCipheringInfo := { + cn_DomainIdentity := p_Domain, + startValue := p_Hfn, + cipheringKey := p_KC, + integrityKey := p_IK, + gsmCipheringKey := p_GSM_CK + } + } + }; + + template (present) U_CRLC_CONFIG_CNF car_CRLC_SecurityModeCfgCnf(UTRAN_CellId_Type p_CellId) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + secMode := { + cellId := f_UtranCellId2Int(p_CellId) + } + }; + + template (value) U_CRLC_CONFIG_REQ cas_CRLC_SecurityModeCfgReq(UTRAN_CellId_Type p_CellId, + CN_DomainIdentity p_Domain, + template (omit) HyperFrameNumber p_Hfn, + template (omit) B128_Type p_KC, + template (omit) B128_Type p_IK, + template (omit) B64_Type p_GSM_CK) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + secMode := { + cellId := f_UtranCellId2Int(p_CellId), + rlcSecurityInfo := { + cn_DomainIdentity := p_Domain, + startValue := p_Hfn, + cipheringKey := p_KC, + integrityKey := p_IK, + gsmCipheringKey := p_GSM_CK + } + } + }; + + template (value) U_CRLC_CONFIG_REQ cas_GetRLC_SeqNum(UTRAN_CellId_Type p_CellId, + integer p_RB_Id) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + seqNo := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + } + } + }; + + template (present) U_CRLC_CONFIG_CNF car_GetRLC_SeqNum(UTRAN_CellId_Type p_CellId, + integer p_RB_Id) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + seqNo := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + count_C_MSB_UL := ?, + count_C_LSB_UL := ?, + count_C_MSB_DL := ?, + count_C_LSB_DL := ? + } + }; + + template (value) U_CRLC_CONFIG_REQ cas_CRLC_ContinueRLC_Ack_REQ(UTRAN_CellId_Type p_CellId, + integer p_RbId) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + prohibit := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RbId + }, + mode := continue_ + } + }; + + template (value) U_CRLC_CONFIG_REQ cas_CRLC_ProhibitRLC_Ack_REQ(UTRAN_CellId_Type p_CellId, + integer p_RbId) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + prohibit := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RbId + }, + mode := prohibit + } + }; + + template (present) U_CRLC_CONFIG_CNF car_CRLC_ProhibitRLC_Ack_CNF(UTRAN_CellId_Type p_CellId, + integer p_RbId) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + prohibit := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RbId + }, + supportflag := * + } + }; + + template (value) U_CRLC_CONFIG_REQ cas_CRLC_RRC_MessageSN_REQ(UTRAN_CellId_Type p_CellId, + integer p_RBId) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rrcMsgSN := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RBId + } + } + }; + + template (present) U_CRLC_CONFIG_CNF car_CRLC_RRC_MessageSN_CNF(UTRAN_CellId_Type p_CellId, + template integer p_RBId) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rrcMsgSN := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RBId + }, + count_I_MSB_UL := ?, + count_I_LSB_UL := ?, + count_I_MSB_DL := ?, + count_I_LSB_DL := ? + } + }; + + template (value) U_CRLC_CONFIG_REQ cas_DL_CRLC_SetRRC_MSN_REQ(UTRAN_CellId_Type p_CellId, + integer p_RBID, + RRC_SequenceNumber p_DL_MSN) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + setRRCmsgSN := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RBID + }, + count_I_LSB_UL := omit, + count_I_LSB_DL := p_DL_MSN + } + }; + + template (present) U_CRLC_CONFIG_CNF car_CRLC_SetRRC_MSN_CNF(UTRAN_CellId_Type p_CellId, + integer p_RBID) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + setRRCmsgSN := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RBID + } + } + }; + + template (value) U_CMAC_CONFIG_REQ cas_CMAC_DL_CipherActReq(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + CipheringModeCommand_r7 p_CipherMode, + integer p_ActTimeDPCH, + Increment_Mode p_IncrDcr, + RatType p_RatType // @sic R5s130243 sic@ + ) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cipher := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := p_RatType, + cn_DomainIdentity := cs_domain, // the domain is hard coded as no TM RAB in PS domain + cipheringModeInfo := omit, + cipheringModeInfo_r7 := { + cipheringModeCommand := p_CipherMode, + activationTimeForDPCH := p_ActTimeDPCH, + rb_DL_CiphActivationTimeInfo := omit + }, + incHFN := p_IncrDcr + } + }; + + template (value) U_CMAC_CONFIG_REQ cas_CMAC_UL_CipherActReq(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + CipheringModeCommand_r7 p_CipherMode, + integer p_ActTimeDPCH, + Increment_Mode p_IncrDcr, + RatType p_RatType // @sic R5s130243 sic@ + ) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cipher := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := p_RatType, + cn_DomainIdentity := cs_domain, // domain hard coded as no TM RAB in PS Domain + cipheringModeInfo := omit, + cipheringModeInfo_r7 := { + cipheringModeCommand := p_CipherMode, + activationTimeForDPCH := p_ActTimeDPCH, + rb_DL_CiphActivationTimeInfo := omit + }, + incHFN := p_IncrDcr + } + }; + + template (present) U_CMAC_CONFIG_CNF car_CMAC_CipherActCnf(UTRAN_CellId_Type p_CellId, + integer p_PhyChId) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cipher := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + } + } + }; + + //---------------------------------------------------------------------------- + + template (value) U_CPHY_CONFIG_REQ cas_GetFrameNum(UTRAN_CellId_Type p_CellId, + PhysicalChannelIdentity p_PhysicalChannelIdentity) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + frameNo := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhysicalChannelIdentity + } + } + }; + + template (present) U_CPHY_CONFIG_CNF car_GetFrameNum(UTRAN_CellId_Type p_CellId, + PhysicalChannelIdentity p_PhysicalChannelIdentity) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + frameNo := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhysicalChannelIdentity + }, + frameNumber := ? + } + }; + + template (present) RLC_TR_DATA_IND car_RRC_ConnReq(template (present) UTRAN_CellId_Type p_CellId, + template (present) integer p_RB_Id, + template (present) UL_CCCH_Message p_Pdu) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cellId := f_UTRAN_TemplateCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + tM_message := { + uL_CCCH_Message := p_Pdu + } + }; + + template (value) RLC_UM_DATA_REQ cas_DL_CCCH_Data_Req(UTRAN_CellId_Type p_CellId, + integer p_RB, + template (value) DL_CCCH_Message p_DL_CCCH_Message) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := {rB_Identity := p_RB}, + uM_message := { + dL_CCCH_Message := p_DL_CCCH_Message + }, + specialLI := true + }; + + template (value) RLC_UM_DATA_REQ cas_RRC_ConnSetup(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + template (value) DL_CCCH_Message p_Pdu) := cas_DL_CCCH_Data_Req(p_CellId, p_RB_Id, p_Pdu); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + template (value) RLC_UM_DATA_REQ cas_RRC_ConnReject(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + template (value) DL_CCCH_Message p_Pdu) := cas_DL_CCCH_Data_Req(p_CellId, p_RB_Id, p_Pdu); /* @status APPROVED (LTE_IRAT) */ + + template (value) RLC_UM_DATA_REQ cas_RRC_ConnRelCCCH(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + template (value) DL_CCCH_Message p_Pdu) := cas_DL_CCCH_Data_Req(p_CellId, p_RB_Id, p_Pdu); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + template (value) RLC_UM_DATA_REQ cas_RRC_ConnRelDCCH(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + template (value) DL_DCCH_Message p_Pdu) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + uM_message := { + dL_DCCH_Message := p_Pdu + }, + specialLI := false + }; + + template (present) RLC_UM_DATA_IND car_RRC_ConnRelCmplUM(UTRAN_CellId_Type p_CellId, + template (present) integer p_RB_Id, + template (present) UL_DCCH_Message p_Pdu) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + integrityResult := ?, + uM_message := { + uL_DCCH_Message := p_Pdu + } + }; + + template (present) RLC_AM_DATA_IND car_RRC_SecModeFail(UTRAN_CellId_Type p_CellId, + integer p_RB, + template UL_DCCH_Message p_Pdu) := + { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB + }, + integrityResult := ?, + aM_message := { + uL_DCCH_Message := p_Pdu + } + }; + + template (present) RLC_UM_DATA_IND car_RRC_SigConnRelIndUM(UTRAN_CellId_Type p_CellId, + template (present) integer p_RB_Id, + template (present) UL_DCCH_Message p_Pdu) := + { /* @status APPROVED (LTE_IRAT) */ + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + integrityResult := ?, + uM_message := { + uL_DCCH_Message := p_Pdu + } + }; + //---------------------------------------------------------------------------- + + template (value) CmacPagingConfigReq cs_MAC_PagingCfg_FDD(bitstring p_E18, + integer p_DRX, + IMSI_GSM_MAP p_IMSI) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + pI_BitMapInfo := { + e18 := p_E18 + }, + dRX_CycleLength := p_DRX, + iMSI := p_IMSI, + t_pich_T_sccpch := false + }; + + template (value) CmacPagingConfigReq_TDD cs_MAC_PagingCfg_TDD(bitstring p_E176, + integer p_DRX, + IMSI_GSM_MAP p_IMSI) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + // @sic R5s120744 sic@ + pI_BitMapInfo := { + two_PICH_frame := { + e176 := p_E176 + } + }, + dRX_CycleLength := p_DRX, + iMSI := p_IMSI, + t_pich_T_sccpch := false + }; + + template (value) U_CMAC_CONFIG_REQ cas_CMAC_PagingCfgReq_FDD(UTRAN_CellId_Type p_CellId, + PhysicalChannelIdentity p_PhysicalChannelIdentity, + RatType p_RatType, + template (value) CmacPagingConfigReq p_Pdu) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + page_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhysicalChannelIdentity + }, + ratType := p_RatType, + configMessage := p_Pdu + } + }; + + template (value) U_CMAC_CONFIG_REQ cas_CMAC_PagingCfgReq_TDD(UTRAN_CellId_Type p_CellId, + PhysicalChannelIdentity p_PhysicalChannelIdentity, + RatType p_RatType, + template (value) CmacPagingConfigReq_TDD p_Pdu) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + // @sic R5s120744 sic@ + page_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhysicalChannelIdentity + }, + ratType := p_RatType, + configMessage := p_Pdu + } + }; + + + template (present) U_CMAC_CONFIG_CNF car_CMAC_PagingCfgCnf(UTRAN_CellId_Type p_CellId, + template PhysicalChannelIdentity p_PhysicalChannelIdentity) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + page := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhysicalChannelIdentity + } + } + }; + + //---------------------------------------------------------------------------- + // PDCP + //---------------------------------------------------------------------------- + template (value) U_CPDCP_CONFIG_REQ cas_PDCP_CfgReq(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + RatType p_RatType, + template (value) PDCP_Info_r4 p_PDCP_Info) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + /* @sic R5s130195 PDCP sic@ */ + config := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + ratType := p_RatType, + configMessage := { + setup := { + pDCP_ROHC_TargetMode := omit, + pDCP_Info := p_PDCP_Info, + cSVoHS_Info := omit + } + } + } + }; + + template (present) U_CPDCP_CONFIG_CNF car_CPDCP_CfgCnf := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + /* @sic R5s130195 PDCP sic@ */ + config := { + cellId := ?, + routingInfo := { + rB_Identity := ? + } + } + }; + + template (value) U_CPDCP_CONFIG_REQ cas_CPDCP_RB_RelReq(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + RatType p_RatType) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + // @sic R5s130195 PDCP sic@ + config := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + ratType := p_RatType, + configMessage := { + release := NULL + } + } + }; + +} diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ASN1_ASP_Templates_r10.ttcn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ASN1_ASP_Templates_r10.ttcn new file mode 100644 index 0000000..c59881e --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ASN1_ASP_Templates_r10.ttcn @@ -0,0 +1,166 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-10 18:07:49 +0200 (Wed, 10 Sep 2014) $ +// $Rev: 12192 $ +/******************************************************************************/ + +module UTRAN_ASN1_ASP_Templates_r10 { + import from CommonDefs all; + + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_ASP_Definitions language "ASN.1:2002" all; + + import from UTRAN_CommonDefs all; + import from UTRAN_CommonAspDefs all; + import from UTRAN_RRC_CommonTemplates all; + import from UTRAN_RRC_Templates_r10 all; + import from UTRAN_ASN1_ASP_Templates all; + import from UTRAN_ASN1_ASP_RAB_Templates all; + + //---------------------------------------------------------------------------- + // DPCH IE + //---------------------------------------------------------------------------- + template (value) DPCHInfo_r10OrLaterExtensionType_FDD cs_UL_DPCHInfo_r10_Extension_FDD(template (value) UL_DPCH_Info_r7 p_UL_DPCHInfo, + template (omit) HS_DPCCHInfo_r10 p_HS_DPCCHInfo := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rel10_AspExt := { + ul_DPCHInfo := p_UL_DPCHInfo, + dl_DPCHInfo := omit, + hs_DPCCHInd := p_HS_DPCCHInfo, + ss_UL_DPCCH_DRX_Info := omit, + ss_DRX_Info := omit + } + }; + + template (value) DPCHInfo_r10OrLaterExtensionType_TDD cs_UL_DPCHInfo_r10_Extension_TDD(template (value) UL_DPCH_Info_r7 p_UL_DPCHInfo, + template (omit) HS_DPCCHInfo_r10 p_HS_DPCCHInfo := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rel10_AspExt := { + ul_DPCHInfo := p_UL_DPCHInfo, + dl_DPCHInfo := omit, + hs_DPCCHInd := p_HS_DPCCHInfo, + ss_UL_DPCCH_DRX_Info := omit, + ss_DRX_Info := omit + } + }; + + template (value) DPCHInfo_r10OrLaterExtensionType_FDD cs_DL_DPCHInfo_r10_Extension_FDD(template (value) DL_DPCHInfo_r10_FDD p_DL_DPCHInfo, + template (omit) HS_DPCCHInfo_r10 p_HS_DPCCHInfo := omit):= + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rel10_AspExt := { + ul_DPCHInfo := omit, + dl_DPCHInfo := p_DL_DPCHInfo, + hs_DPCCHInd := p_HS_DPCCHInfo, + ss_UL_DPCCH_DRX_Info := omit, + ss_DRX_Info := omit + } + }; + + template (value) DPCHInfo_r10OrLaterExtensionType_TDD cs_DL_DPCHInfo_r10_Extension_TDD(template (value) DL_DPCHInfo_r10_TDD p_DL_DPCHInfo, + template (omit) HS_DPCCHInfo_r10 p_HS_DPCCHInfo := omit):= + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rel10_AspExt := { + ul_DPCHInfo := omit, + dl_DPCHInfo := p_DL_DPCHInfo, + hs_DPCCHInd := p_HS_DPCCHInfo, + ss_UL_DPCCH_DRX_Info := omit, + ss_DRX_Info := omit + } + }; + + template (value) DL_DPCHInfo_r10_FDD cs_DL_DPCH_SRB_StandAloneDPCH_FDD_r10(template (omit) SecondaryScramblingCode p_SecondaryScramblingCode) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + dl_CommonInformation := cs_DL_CommonInfoDCH_SRB_FDD_r10(tsc_DL_DPCH1_SFP_SRB, fixed, false), + dl_Dpch_InfoPerRL := { + dl_DPCH_InfoPerRL := cs_DL_DPCH_InfoPerRL_SRB_FDD( tsc_DL_DPCH1_ChC_SRB, p_SecondaryScramblingCode ) + }, + rl_Information := cs_RL_InfoDef_FDD + }; + + template (value) DL_DPCHInfo_r10_TDD cs_DL_DPCH_TDD_r10(template (omit) DL_DPCH_InfoPerRL_r7 p_DL_DPCH_InfoPerRL) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + dl_CommonInformation := cs_DL_CommonInfo_r10_TDD, + dl_Dpch_InfoPerRL := { + dl_DPCH_InfoPerRL := p_DL_DPCH_InfoPerRL + }, + rl_Information := cs_RL_InfoDef_TDD + }; + + template (value) DL_DPCHInfo_r10_TDD cs_DL_DPCH_SRB_StandAlone_TDD_r10 := cs_DL_DPCH_TDD_r10(cs_DL_DPCH_InfoPerRL_SRB_TDD); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + //------------------------------------------------------------------------------------------------------------ + // U_CPHY_CONFIG_REQ + //------------------------------------------------------------------------------------------------------------ + template (value) U_CPHY_CONFIG_REQ cas_DPCH_SetupInfo_FDD_r10(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) DPCHInfo_r10OrLaterExtensionType_FDD p_DPCHInfo_r10, + template (value) SS_ActivationTime p_SS_ActTime, + boolean p_TrchConfigToFollow := true) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rlSetup_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := fdd, + setupMessage := { + physicalChannelInfo := { + dPCHInfo_r5 := { + relAspTypeExtension := p_DPCHInfo_r10 // @sic R5-134957 sic@ + } + }, + activationTime := p_SS_ActTime, + trchConfigToFollow := p_TrchConfigToFollow , // DEFAULT TRUE + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + } + }; + + template (value) U_CPHY_CONFIG_REQ cas_DPCH_SetupInfo_TDD_r10(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) DPCHInfo_r10OrLaterExtensionType_TDD p_DPCHInfo_r10, + template (value) SS_ActivationTime p_SS_ActTime, + boolean p_TrchConfigToFollow := true) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rlSetup_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + secondaryFrequency := omit, + routingInfo := { + physicalChannelIdentity := p_PhyChId + }, + ratType := tdd128, + setupMessage := { + physicalChannelInfo := { + dPCHInfo_r5 := { + relAspTypeExtension := p_DPCHInfo_r10 // @sic R5-134957 sic@ + } + }, + activationTime := p_SS_ActTime, + trchConfigToFollow := p_TrchConfigToFollow , // DEFAULT TRUE + relAspTypeExtension := omit // @sic R5-130613 sic@ + } + } + }; + + + + template (value) RL_Setup_FDD_PhysicalChannelInfo_Type cs_SS_DL_DPCH_Info_FDD_r10(template (value) DPCHInfo_r10OrLaterExtensionType_FDD p_DPCHInfo_r10) := + { /* @status APPROVED (UTRAN) */ + dPCHInfo_r5 := { + relAspTypeExtension := p_DPCHInfo_r10 // @sic R5-134957 sic@ + } + }; + + template (value) U_CPHY_CONFIG_REQ cas_DL_DPCH_SetupInfo_FDD_r10(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) DPCHInfo_r10OrLaterExtensionType_FDD p_DPCHInfo_r10, + template (value) SS_ActivationTime p_SS_ActTime) := + /* @status APPROVED (UTRAN) */ + cas_RL_SetupInfo_FDD(p_CellId, p_PhyChId, cs_SS_DL_DPCH_Info_FDD_r10(p_DPCHInfo_r10), p_SS_ActTime); + +} diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ASN1_ASP_Templates_r11.ttcn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ASN1_ASP_Templates_r11.ttcn new file mode 100644 index 0000000..a47a364 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ASN1_ASP_Templates_r11.ttcn @@ -0,0 +1,224 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-07-06 21:15:13 +0200 (Sun, 06 Jul 2014) $ +// $Rev: 11812 $ +/******************************************************************************/ + +module UTRAN_ASN1_ASP_Templates_r11 { + import from CommonDefs all; + + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_ASP_Definitions language "ASN.1:2002" all; + + import from UTRAN_CommonDefs all; + import from UTRAN_RRC_CommonTemplates all; + import from UTRAN_RRC_Templates_r11 all; + import from UTRAN_ASN1_ASP_Templates all; + import from UTRAN_ASN1_ASP_RAB_Templates all; + + //---------------------------------------------------------------------------- + // DPCH IE + //---------------------------------------------------------------------------- + + template (value) DPCHInfo_r10OrLaterExtensionType_FDD cs_UL_DPCHInfo_r11_Extension_FDD(template (value) UL_DPCH_Info_r11 p_UL_DPCHInfo, + template (omit) HS_DPCCHInfo_r10 p_HS_DPCCHInfo := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rel11_AspExt := { + ul_DPCHInfo := p_UL_DPCHInfo, + dl_DPCHInfo := omit, + hs_DPCCHInd := p_HS_DPCCHInfo, + ss_UL_DPCCH_DRX_Info := omit, + ss_DRX_Info := omit + } + }; + + template (value) DPCHInfo_r10OrLaterExtensionType_TDD cs_UL_DPCHInfo_r11_Extension_TDD(template (value) UL_DPCH_Info_r11 p_UL_DPCHInfo, + template (omit) HS_DPCCHInfo_r10 p_HS_DPCCHInfo := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + rel11_AspExt := { + ul_DPCHInfo := p_UL_DPCHInfo, + dl_DPCHInfo := omit, + hs_DPCCHInd := p_HS_DPCCHInfo, + ss_UL_DPCCH_DRX_Info := omit, + ss_DRX_Info := omit + } + }; + + template (value) DPCHInfo_r10OrLaterExtensionType_TDD cs_DL_DPCHInfo_r11_Extension_TDD(template (value) DL_DPCHInfo_r11_TDD p_DL_DPCHInfo, + template (omit) HS_DPCCHInfo_r10 p_HS_DPCCHInfo := omit):= + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rel11_AspExt := { + ul_DPCHInfo := omit, + dl_DPCHInfo := p_DL_DPCHInfo, + hs_DPCCHInd := p_HS_DPCCHInfo, + ss_UL_DPCCH_DRX_Info := omit, + ss_DRX_Info := omit + } + }; + + template (value) DPCHInfo_r10OrLaterExtensionType_FDD cs_DL_DPCHInfo_r11_Extension_FDD(template (value) DL_DPCHInfo_r11_FDD p_DL_DPCHInfo, + template (omit) HS_DPCCHInfo_r10 p_HS_DPCCHInfo := omit):= + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rel11_AspExt := { + ul_DPCHInfo := omit, + dl_DPCHInfo := p_DL_DPCHInfo, + hs_DPCCHInd := p_HS_DPCCHInfo, + ss_UL_DPCCH_DRX_Info := omit, + ss_DRX_Info := omit + } + }; + + template (value) DL_DPCHInfo_r11_FDD cs_DL_DPCH_FDD_r11(template (value) DL_CommonInformation_r11 p_DL_CommonInformation, + SF512_AndCodeNumber p_Sf, + template (omit) SecondaryScramblingCode p_SecondaryScramblingCode := tsc_DL_DPCH1_2ndScrC, + DL_TxPower p_Dl_TxPower := tsc_DL_TxPower_DPCH) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + dl_CommonInformation := p_DL_CommonInformation, + dl_Dpch_InfoPerRL := { + dl_DPCH_InfoPerRL := cs_DL_DPCH_InfoPerRL_SRB_FDD(p_Sf, p_SecondaryScramblingCode) + }, + rl_Information := cs_RL_InfoDef_FDD(p_Dl_TxPower) + }; + + template (value) DL_DPCHInfo_r11_TDD cs_DL_DPCH_TDD_r11(template (value) DL_DPCH_InfoPerRL_r7 p_DL_DPCH_InfoPerRL) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + dl_CommonInformation := cs_DL_CommonInfo_r11_TDD, + dl_Dpch_InfoPerRL := { + dl_DPCH_InfoPerRL := p_DL_DPCH_InfoPerRL + }, + rl_Information := cs_RL_InfoDef_TDD + }; + + template (value) DL_DPCHInfo_r11_FDD cs_DL_DPCH_SRB_StandAloneDPCH_FDD_r11(template (omit) SecondaryScramblingCode p_SecondaryScramblingCode) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_DL_DPCH_FDD_r11(cs_DL_CommonInfoDCH_SRB_FDD_r11(tsc_DL_DPCH1_SFP_SRB, fixed, false), tsc_DL_DPCH1_ChC_SRB, p_SecondaryScramblingCode); + + template (value) DL_DPCHInfo_r11_TDD cs_DL_DPCH_SRB_StandAlone_TDD_r11 := cs_DL_DPCH_TDD_r11(cs_DL_DPCH_InfoPerRL_SRB_TDD); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + //============================================================================================= + // RLC + //============================================================================================= + template (value) U_CRLC_CONFIG_REQ cas_CRLC_SetupExtension_FDD(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + template (value) SS_RLC_Info_r10OrLaterExtensionType p_SS_RLC_Info_r10OrLaterExtension, + template (value) RB_LogCH_Mapping p_LogChMapping, + template (omit) SS_ActivationTime p_SS_ActivationTime := cs_ActivateNow) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + config_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + ratType := fdd, + configMessage := { + setup := { + sS_rlc_Info := omit, + sS_rlc_Info_r8 := {relAspTypeExtension := p_SS_RLC_Info_r10OrLaterExtension}, + rB_LogCH_Mapping := p_LogChMapping, + relAspTypeExtension := omit + } + }, + activationTime := p_SS_ActivationTime + } + }; + + template (value) U_CRLC_CONFIG_REQ cas_CRLC_SetupExtension_TDD(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + template (value) SS_RLC_Info_r10OrLaterExtensionType p_SS_RLC_Info_r10OrLaterExtension, + template (value) RB_LogCH_Mapping p_LogChMapping, + template (omit) SS_ActivationTime p_SS_ActivationTime := cs_ActivateNow) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + config_TDD := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + ratType := tdd128, + configMessage := { + setup := { + sS_rlc_Info := omit, + sS_rlc_Info_r8 := {relAspTypeExtension := p_SS_RLC_Info_r10OrLaterExtension}, + rB_LogCH_Mapping := p_LogChMapping, + relAspTypeExtension := omit + } + }, + activationTime := p_SS_ActivationTime + } + }; + + template (value) SS_RLC_Info_r10OrLaterExtensionType cs_RB_AM_Info_Common_FDD_r11(template (value) DL_AM_RLC_Mode_r11 p_DL_AM_RLC_Mode, + template (value) SS_DL_RLC_Mode p_SS_DL_RLC_Mode) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rel11_AspExt := { + sS_ul_RLC_Mode := { + dl_AM_RLC_Mode := p_DL_AM_RLC_Mode + }, + sS_dl_RLC_Mode := p_SS_DL_RLC_Mode, + rlc_OneSidedReEst := omit, // DEFAULT FALSE + altE_bitInterpretation := omit, // DEFAULT false + useSpecialValueOfHEField := omit, // DEFAULT false + uM_SN_DeliveryMode := omit // DEFAULT nonConfigured + } + }; + + template (value) SS_RLC_Info_r10OrLaterExtensionType cs_RB_AM_Info_Common_TDD_r11(template (value) DL_AM_RLC_Mode_r11 p_DL_AM_RLC_Mode, + template (value) SS_DL_RLC_Mode p_SS_DL_RLC_Mode) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + rel11_AspExt := { + sS_ul_RLC_Mode := { + dl_AM_RLC_Mode := p_DL_AM_RLC_Mode + }, + sS_dl_RLC_Mode := p_SS_DL_RLC_Mode, + rlc_OneSidedReEst := omit, // DEFAULT FALSE + altE_bitInterpretation := omit, // DEFAULT false + useSpecialValueOfHEField := omit, // DEFAULT false + uM_SN_DeliveryMode := omit // DEFAULT nonConfigured + } + }; + + + template (value) SS_RLC_Info_r10OrLaterExtensionType cs_RB_AM_Info_SRB_Fixed_FDD_r11(template (value) OctetModeRLC_SizeInfoType1 p_RLC_Size) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_RB_AM_Info_Common_FDD_r11(cds_DL_AM_RLC_SRB_r11, cs_SS_DL_RLC_AM_Mode(omit, cds_UL_AM_RLC_SRB, cs_SS_DL_RLC_Mode_PDU_fixedSize(p_RLC_Size))); + + template (value) SS_RLC_Info_r10OrLaterExtensionType cs_RB_AM_Info_SRB_Fixed_TDD_r11(template (value) OctetModeRLC_SizeInfoType1 p_RLC_Size) := + cs_RB_AM_Info_Common_TDD_r11(cds_DL_AM_RLC_SRB_r11, cs_SS_DL_RLC_AM_Mode(omit, cds_UL_AM_RLC_SRB, cs_SS_DL_RLC_Mode_PDU_fixedSize(p_RLC_Size))); + + template (value) SS_RLC_Info_r10OrLaterExtensionType cs_RB_TM_UL_Info_FDD_r11(template (omit) integer p_PayloadSize) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + rel11_AspExt := { + sS_ul_RLC_Mode := { + dl_TM_RLC_Mode := { + segmentationIndication := false + } + }, + sS_dl_RLC_Mode := cs_SS_DL_RLC_TM_Mode(p_PayloadSize), + rlc_OneSidedReEst := omit, // DEFAULT FALSE + altE_bitInterpretation := omit, // DEFAULT false + useSpecialValueOfHEField := omit, // DEFAULT false + uM_SN_DeliveryMode := omit // DEFAULT nonConfigured + } + }; + + template (value) SS_RLC_Info_r10OrLaterExtensionType cs_RB_TM_UL_Info_TDD_r11(template (omit) integer p_PayloadSize) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + rel11_AspExt := { + sS_ul_RLC_Mode := { + dl_TM_RLC_Mode := { + segmentationIndication := false + } + }, + sS_dl_RLC_Mode := cs_SS_DL_RLC_TM_Mode(p_PayloadSize), + rlc_OneSidedReEst := omit, // DEFAULT FALSE + altE_bitInterpretation := omit, // DEFAULT false + useSpecialValueOfHEField := omit, // DEFAULT false + uM_SN_DeliveryMode := omit // DEFAULT nonConfigured + } + }; + +} diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ASP_Definitions.asn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ASP_Definitions.asn new file mode 100644 index 0000000..0d06238 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ASP_Definitions.asn @@ -0,0 +1,7967 @@ +UTRAN-ASP-Definitions DEFINITIONS AUTOMATIC TAGS ::= +BEGIN + +-- IMPORTs from RRC Type definitions + +IMPORTS + MCCH-Message, + MSCH-Message, + BCCH-BCH-Message, + BCCH-FACH-Message, + DL-CCCH-Message, + DL-DCCH-Message, + DL-SHCCH-Message, + E-AGCH-DRX-Info-TDD128, + PCCH-Message, + UL-CCCH-Message, + UL-DCCH-Message, + UL-SHCCH-Message, + DL-DCCH-MessageType, + UL-DCCH-MessageType, + DL-CCCH-MessageType, + UL-CCCH-MessageType, + PCCH-MessageType, + DL-SHCCH-MessageType, + UL-SHCCH-MessageType, + BCCH-FACH-MessageType, + MCCH-MessageType, + MSCH-MessageType, + ActiveSetUpdate, + ActiveSetUpdate-r3-IEs, + ActiveSetUpdate-v4b0ext-IEs, + ActiveSetUpdate-v590ext-IEs, + ActiveSetUpdate-v690ext-IEs, + ActiveSetUpdate-r6-IEs, + ActiveSetUpdate-v6b0ext-IEs, + ActiveSetUpdateComplete, + ActiveSetUpdateFailure, + AssistanceDataDelivery, + AssistanceDataDelivery-r3-IEs, + AssistanceDataDelivery-v3a0ext, + AssistanceDataDelivery-v4b0ext-IEs, + CellChangeOrderFromUTRAN, + CellChangeOrderFromUTRAN-r3-IEs, + CellChangeOrderFromUTRAN-v590ext-IEs, + CellChangeOrderFromUTRANFailure, + CellChangeOrderFromUTRANFailure-r3-IEs, + CellUpdate, + CellUpdate-v590ext, + CellUpdate-v690ext-IEs, + CellUpdate-v6b0ext-IEs, + CellUpdateConfirm, + CellUpdateConfirm-r3-IEs, + CellUpdateConfirm-v3a0ext, + CellUpdateConfirm-v4b0ext-IEs, + CellUpdateConfirm-v590ext-IEs, + CellUpdateConfirm-v5d0ext-IEs, + CellUpdateConfirm-r4-IEs, + CellUpdateConfirm-r5-IEs, + CellUpdateConfirm-r6-IEs, + CellUpdateConfirm-v690ext-IEs, + CellUpdateConfirm-v6b0ext-IEs, + CellUpdateConfirm-CCCH, + ControlChannelDRXInfo-TDD128-r8, + CounterCheck, + CounterCheck-r3-IEs, + CounterCheckResponse, + DownlinkDirectTransfer, + DownlinkDirectTransfer-r3-IEs, + HandoverToUTRANCommand, + HandoverToUTRANCommand-r3-IEs, + HandoverToUTRANCommand-r4-IEs, + HandoverToUTRANCommand-r5-IEs, + HandoverToUTRANCommand-r6-IEs, + HandoverToUTRANCommand-v6b0ext-IEs, + HandoverToUTRANComplete, + InitialDirectTransfer, + InitialDirectTransfer-v3a0ext, + InitialDirectTransfer-v590ext, + InitialDirectTransfer-v690ext-IEs, + HandoverFromUTRANCommand-GSM, + HandoverFromUTRANCommand-GSM-r3-IEs, + HandoverFromUTRANCommand-GSM-r6-IEs, + HandoverFromUTRANCommand-GSM-v690ext-IEs, + HandoverFromUTRANCommand-GERANIu, + HandoverFromUTRANCommand-GERANIu-r5-IEs, + HandoverFromUTRANCommand-CDMA2000, + HandoverFromUTRANCommand-CDMA2000-r3-IEs, + HandoverFromUTRANFailure, + HandoverFromUtranFailure-v590ext-IEs, + InterRATHandoverInfo, + InterRATHandoverInfo-v390ext-IEs, + InterRATHandoverInfo-v3a0ext-IEs, + InterRATHandoverInfo-v3d0ext-IEs, + InterRATHandoverInfo-v3g0ext-IEs, + InterRATHandoverInfo-r3-add-ext-IEs, + InterRATHandoverInfo-v4b0ext-IEs, + InterRATHandoverInfo-v4d0ext-IEs, + InterRATHandoverInfo-v590ext-IEs, + InterRATHandoverInfo-v690ext1-IEs, + InterRATHandoverInfo-v690ext-IEs, + InterRATHandoverInfo-v6b0ext-IEs, + MeasurementControl, + MeasurementControl-r3-IEs, + MeasurementControl-v390ext, + MeasurementControl-v3a0ext, + MeasurementControl-r4-IEs, + MeasurementControl-v590ext-IEs, + MeasurementControl-v5b0ext-IEs, + MeasurementControl-r6-IEs, + MeasurementControl-v6a0ext-IEs, + MeasurementControlFailure, + MeasurementControlFailure-v590ext-IEs, + MeasurementReport, + MeasurementReport-v390ext, + MeasurementReport-v4b0ext-IEs, + MeasurementReport-v590ext-IEs, + MeasurementReport-v5b0ext-IEs, + MeasurementReport-v690ext-IEs, + PagingType1, + PagingType1-v590ext-IEs, + PagingType2, + PhysicalChannelReconfiguration, + PhysicalChannelReconfiguration-r3-IEs, + PhysicalChannelReconfiguration-v3a0ext, + PhysicalChannelReconfiguration-v4b0ext-IEs, + PhysicalChannelReconfiguration-v590ext-IEs, + PhysicalChannelReconfiguration-r4-IEs, + PhysicalChannelReconfiguration-r5-IEs, + PhysicalChannelReconfiguration-r6-IEs, + PhysicalChannelReconfiguration-v690ext-IEs, + PhysicalChannelReconfiguration-v6b0ext-IEs, + PhysicalChannelReconfigurationComplete, + PhysicalChannelReconfigurationFailure, + PhysicalSharedChannelAllocation, + PhysicalSharedChannelAllocation-r3-IEs, + PhysicalSharedChannelAllocation-r4-IEs, + PhysicalSharedChannelAllocation-v690ext-IEs, + PUSCHCapacityRequest, + PUSCHCapacityRequest-v590ext, + RadioBearerReconfiguration, + RadioBearerReconfiguration-r3-IEs, + RadioBearerReconfiguration-v3a0ext, + RadioBearerReconfiguration-v4b0ext-IEs, + RadioBearerReconfiguration-v590ext-IEs, + RadioBearerReconfiguration-v5d0ext-IEs, + RadioBearerReconfiguration-r4-IEs, + RadioBearerReconfiguration-r5-IEs, + RadioBearerReconfiguration-r6-IEs, + RadioBearerReconfiguration-v690ext-IEs, + RadioBearerReconfiguration-v6b0ext-IEs, + RadioBearerReconfigurationComplete, + RadioBearerReconfigurationFailure, + RadioBearerRelease, + RadioBearerRelease-r3-IEs, + RadioBearerRelease-v3a0ext, + RadioBearerRelease-v4b0ext-IEs, + RadioBearerRelease-v590ext-IEs, + RadioBearerRelease-r4-IEs, + RadioBearerRelease-r5-IEs, + RadioBearerRelease-v690ext-IEs, + RadioBearerRelease-r6-IEs, + RadioBearerRelease-v6b0ext-IEs, + RadioBearerReleaseComplete, + RadioBearerReleaseFailure, + RadioBearerSetup, + RadioBearerSetup-r3-IEs, + RadioBearerSetup-v3a0ext, + RadioBearerSetup-v4b0ext-IEs, + RadioBearerSetup-v590ext-IEs, + RadioBearerSetup-v5d0ext-IEs, + RadioBearerSetup-r4-IEs, + RadioBearerSetup-r5-IEs, + RadioBearerSetup-v690ext-IEs, + RadioBearerSetup-r6-IEs, + RadioBearerSetup-v6b0ext-IEs, + RadioBearerSetupComplete, + RadioBearerSetupFailure, + RRCConnectionReject, + RRCConnectionReject-r3-IEs, + RRCConnectionReject-v690ext-IEs, + RRCConnectionRelease, + RRCConnectionRelease-r3-IEs, + RRCConnectionRelease-r4-IEs, + RRCConnectionRelease-v690ext-IEs, + RRCConnectionRelease-CCCH, + RRCConnectionRelease-CCCH-r3-IEs, + RRCConnectionRelease-CCCH-r4-IEs, + RRCConnectionRelease-CCCH-r5-IEs, + RRCConnectionRelease-CCCH-v690ext-IEs, + RRCConnectionReleaseComplete, + RRCConnectionRequest, + RRCConnectionRequest-v3d0ext-IEs, + RRCConnectionRequest-v4b0ext-IEs, + RRCConnectionRequest-v590ext-IEs, + RRCConnectionRequest-v690ext-IEs, + RRCConnectionRequest-v6b0ext-IEs, + RRCConnectionSetup, + RRCConnectionSetup-r3-IEs, + RRCConnectionSetup-v4b0ext-IEs, + RRCConnectionSetup-v590ext-IEs, + RRCConnectionSetup-r4-IEs, + RRCConnectionSetup-r5-IEs, + RRCConnectionSetup-v690ext-IEs, + RRCConnectionSetup-r6-IEs, + RRCConnectionSetup-v6b0ext-IEs, + RRCConnectionSetupComplete, + RRCConnectionSetupComplete-v370ext, + RRCConnectionSetupComplete-v380ext-IEs, + RRCConnectionSetupComplete-v3a0ext-IEs, + RRCConnectionSetupComplete-v3g0ext-IEs, + RRCConnectionSetupComplete-r3-add-ext-IEs, + RRCConnectionSetupComplete-v4b0ext-IEs, + RRCConnectionSetupComplete-v590ext-IEs, + RRCConnectionSetupComplete-v5c0ext-IEs, + RRCConnectionSetupComplete-v650ext-IEs, + RRCConnectionSetupComplete-v680ext-IEs, + RRCConnectionSetupComplete-v690ext-IEs, + RRC-FailureInfo, + RRC-FailureInfo-r3-IEs, + RRCStatus, + SecurityModeCommand, + SecurityModeCommand-r3-IEs, + SecurityModeComplete, + SecurityModeFailure, + SignallingConnectionRelease, + SignallingConnectionRelease-r3-IEs, + SignallingConnectionReleaseIndication, + SystemInformation-BCH, + SystemInformation-FACH, + FirstSegment, + FirstSegmentShort, + SubsequentSegment, + LastSegment, + LastSegmentShort, + CompleteSIB-List, + CompleteSIB, + CompleteSIBshort, + SystemInformationChangeIndication, + TransportChannelReconfiguration, + TransportChannelReconfiguration-r3-IEs, + TransportChannelReconfiguration-v3a0ext, + TransportChannelReconfiguration-v4b0ext-IEs, + TransportChannelReconfiguration-v590ext-IEs, + TransportChannelReconfiguration-r4-IEs, + TransportChannelReconfiguration-r5-IEs, + TransportChannelReconfiguration-v690ext-IEs, + TransportChannelReconfiguration-r6-IEs, + TransportChannelReconfiguration-v6b0ext-IEs, + TransportChannelReconfigurationComplete, + TransportChannelReconfigurationFailure, + TransportFormatCombinationControl, + TransportFormatCombinationControlFailure, + UECapabilityEnquiry, + UECapabilityEnquiry-r3-IEs, + UECapabilityEnquiry-v4b0ext-IEs, + UECapabilityEnquiry-v590ext-IEs, + UECapabilityInformation, + UECapabilityInformation-v370ext, + UECapabilityInformation-v380ext-IEs, + UECapabilityInformation-v3a0ext-IEs, + UECapabilityInformation-r3-add-ext-IEs, + UECapabilityInformation-v4b0ext, + UECapabilityInformation-v590ext, + UECapabilityInformation-v5c0ext, + UECapabilityInformation-v650ext-IEs, + UECapabilityInformation-v680ext-IEs, + UECapabilityInformation-v690ext-IEs, + UECapabilityInformationConfirm, + UECapabilityInformationConfirm-r3-IEs, + UplinkDirectTransfer, + UplinkDirectTransfer-v690ext-IEs, + UplinkPhysicalChannelControl, + UplinkPhysicalChannelControl-r3-IEs, + UplinkPhysicalChannelControl-v4b0ext-IEs, + UplinkPhysicalChannelControl-r4-IEs, + UplinkPhysicalChannelControl-r5-IEs, + UplinkPhysicalChannelControl-v690ext-IEs, + UplinkPhysicalChannelControl-v6a0ext-IEs, + URAUpdate, + URAUpdateConfirm, + URAUpdateConfirm-r3-IEs, + URAUpdateConfirm-r5-IEs, + URAUpdateConfirm-v690ext-IEs, + URAUpdateConfirm-CCCH, + URAUpdateConfirm-CCCH-r3-IEs, + UTRANMobilityInformation, + UTRANMobilityInformation-r3-IEs, + UTRANMobilityInformation-v3a0ext-IEs, + UTRANMobilityInformation-r5-IEs, + UtranMobilityInformation-v690ext-IEs, + UTRANMobilityInformationConfirm, + UTRANMobilityInformationFailure, + MBMSAccessInformation, + MBMSCommonPTMRBInformation, + MBMSCurrentCellPTMRBInformation, + MBMSGeneralInformation, + MBMSGeneralInformation-v6b0ext-IEs, + MBMSModificationRequest, + MBMSModificationRequest-v6b0ext-IEs, + MBMSModifiedServicesInformation, + MBMSNeighbouringCellPTMRBInformation, + MBMSSchedulingInformation, + MBMSUnmodifiedServicesInformation, + MultiCarrier-HSDSCH-physical-layer-category, + MultiCarrier-HSDSCH-physical-layer-category-extension, + HS-SCCH-SystemInfo-TDD128, + Ansi-41-IDNNS, + CN-DomainIdentity, + CN-DomainInformation, + CN-DomainInformationFull, + CN-DomainInformationList, + CN-DomainInformationListFull, + CN-DomainSysInfo, + CN-DomainSysInfoList, + CN-InformationInfo, + CN-InformationInfo-r6, + CN-InformationInfoFull, + Digit, + Gsm-map-IDNNS, + IMEI, + IMEI-Digit, + IMSI-GSM-MAP, + IntraDomainNasNodeSelector, + LAI, + MCC, + MNC, + MultiplePLMN-List-r6, + NAS-Message, + NAS-Synchronisation-Indicator, + NAS-SystemInformationGSM-MAP, + P-TMSI-GSM-MAP, + PagingRecordTypeID, + PLMN-Identity, + PLMN-IdentityWithOptionalMCC-r6, + PLMN-Type, + RAB-Identity, + RAI, + RoutingAreaCode, + RoutingParameter, + TMSI-GSM-MAP, + AccessClassBarred, + AccessClassBarredList, + AllowedIndicator, + CellAccessRestriction, + CellBarred, + CellIdentity, + CellIdentity-PerRL-List, + CellSelectReselectInfoSIB-3-4, + DomainSpecificAccessRestrictionForSharedNetwork-v670ext, + DomainSpecificAccessRestrictionList-v670ext, + DomainSpecificAccessRestrictionParam-v670ext, + DomainSpecificAccessRestriction-v670ext, + MapParameter, + Mapping, + Mapping-LCR-r4, + MappingFunctionParameter, + MappingFunctionParameterList, + MappingFunctionType, + MappingInfo, + Q-Hyst-S, + Q-Hyst-S-Fine, + RAT, + RAT-FDD-Info, + RAT-FDD-InfoList, + RAT-Identifier, + RAT-TDD-Info, + RAT-TDD-InfoList, + ReservedIndicator, + S-SearchQual, + S-SearchRXLEV, + SpeedDependentScalingFactor, + T-Barred, + T-Reselection-S, + T-Reselection-S-Fine, + TreselectionScalingFactor, + UpperLimit, + URA-Identity, + URA-IdentityList, + AccessStratumReleaseIndicator, + ActivationTime, + BackoffControlParams, + C-RNTI, + CapabilityUpdateRequirement, + CapabilityUpdateRequirement-r4-ext, + CapabilityUpdateRequirement-r4, + CellUpdateCause, + CellUpdateCause-ext, + ChipRateCapability, + CipheringAlgorithm, + CipheringModeCommand, + CipheringModeInfo, + CipheringModeInfo-r7, + CN-DRX-CycleLengthCoefficient, + CN-PagedUE-Identity, + CompressedModeMeasCapability, + CompressedModeMeasCapability-LCR-r4, + CompressedModeMeasCapabFDDList, + CompressedModeMeasCapabFDDList2, + CompressedModeMeasCapabFDDList-ext, + CompressedModeMeasCapabFDD, + CompressedModeMeasCapabFDD2, + CompressedModeMeasCapabFDD-ext, + CompressedModeMeasCapabTDDList, + CompressedModeMeasCapabTDD, + CompressedModeMeasCapabGSMList, + CompressedModeMeasCapabGSM, + CompressedModeMeasCapabMC, + HS-DSCH-TBSizeTable, + CPCH-Parameters, + DL-CapabilityWithSimultaneousHS-DSCHConfig, + DL-DPCCH-BER, + DL-PhysChCapabilityFDD, + DL-PhysChCapabilityFDD-v380ext, + SupportOfDedicatedPilotsForChEstimation, + DL-PhysChCapabilityTDD, + DL-PhysChCapabilityTDD-LCR-r4, + DL-TransChCapability, + DRAC-SysInfo, + DRAC-SysInfoList, + DSCH-RNTI, + DTX-Info, + DelayRestrictionFlag, + E-AGCH-Information-r8, + E-DPDCH-Info-r7, + E-DPDCH-Info-r8, + E-RNTI, + ESN-DS-41, + EstablishmentCause, + FailureCauseWithProtErr, + FailureCauseWithProtErrTrId, + GroupIdentityWithReleaseInformation, + GroupReleaseInformation, + GSM-Measurements, + H-RNTI, + HS-DSCH-PagingSystemInformation, + HSDSCH-physical-layer-category, + HSDSCH-physical-layer-category-ext, + HSDSCH-physical-layer-category-ext2, + HSDSCH-physical-layer-category-ext3, + HSDSCH-physical-layer-category-ext4, + HSDSCH-physical-layer-category-ext5, + HSDSCH-physical-layer-category-ext6, + HSDSCH-physical-layer-category-ext7, + HSDSCH-physical-layer-category-ext8, + UESpecificBehaviourInformation1idle, + UESpecificBehaviourInformation1interRAT, + IMSI-and-ESN-DS-41, + IMSI-DS-41, + InitialPriorityDelayList, + InitialUE-Identity, + IntegrityCheckInfo, + IntegrityProtActivationInfo, + IntegrityProtectionAlgorithm, + IntegrityProtectionModeCommand, + IntegrityProtectionModeInfo, + IntegrityProtectionModeInfo-r7, + IntegrityProtInitNumber, + MaxHcContextSpace, + MaxHcContextSpace-r5-ext, + MaxROHC-ContextSessions-r4, + MaximumAM-EntityNumberRLC-Cap, + MaximumBitRate, + MaximumRLC-WindowSize, + MaxNoDPDCH-BitsTransmitted, + MaxNoBits, + MaxNoPhysChBitsReceived, + MaxNoSCCPCH-RL, + MaxNumberOfTF, + MaxNumberOfTFC-DL, + MaxNumberOfTFC-UL, + MaxPhysChPerFrame, + MaxPhysChPerSubFrame-r4, + MaxPhysChPerTimeslot, + MaxPhysChPerTS, + MaxSimultaneousCCTrCH-Count, + MaxSimultaneousTransChsDL, + MaxSimultaneousTransChsUL, + MaxTransportBlocksDL, + MaxTransportBlocksUL, + MaxTS-PerFrame, + MaxTS-PerSubFrame-r4, + MeasurementCapability, + MeasurementCapabilityExt, + MeasurementCapabilityExt2, + MeasurementCapability-r4-ext, + MessageAuthenticationCode, + MinimumSF-DL, + MinimumSF-UL, + MultiModeCapability, + MultiRAT-Capability, + MultiModeRAT-Capability-v590ext, + MultiModeRAT-Capability-v680ext, + N-300, + N-301, + N-302, + N-304, + N-308, + N-310, + N-312, + N-312ext, + N-312-r5, + N-313, + N-315, + N-315ext, + N-315-r5, + N-AccessFails, + N-AP-RetransMax, + NetworkAssistedGPS-Supported, + NF-BO-AllBusy, + NF-BO-NoAICH, + NF-BO-Mismatch, + NS-BO-Busy, + NS-IP, + P-TMSI-and-RAI-GSM-MAP, + PagingCause, + PagingRecord, + PagingRecord2-r5, + PagingRecordList, + PagingRecord2List-r5, + PDCP-Capability, + PDCP-Capability-r4-ext, + PDCP-Capability-r5-ext, + PDCP-Capability-r5-ext2, + PhysicalChannelCapability, + PhysicalChannelCapability-LCR-r4, + PhysicalChannelCapability-hspdsch-r5, + PNBSCH-Allocation-r4, + ProtocolErrorCause, + ProtocolErrorIndicator, + ProtocolErrorIndicatorWithMoreInfo, + ProtocolErrorMoreInformation, + RadioFrequencyBandFDD, + RadioFrequencyBandFDD2, + RadioFrequencyBandFDD3, + RadioFrequencyBandTDDList, + RadioFrequencyBandTDD, + RadioFrequencyBandGSM, + Rb-timer-indicator, + Re-EstablishmentTimer, + RedirectionInfo, + RedirectionInfo-r6, + RejectionCause, + ReleaseCause, + RF-Capability, + RF-Capability-r4-ext, + RLC-Capability, + RLC-Capability-r5-ext, + RRC-ConnectionReleaseInformation, + RRC-MessageSequenceNumber, + RRC-MessageSequenceNumberList, + RRC-StateIndicator, + RRC-TransactionIdentifier, + S-RNTI, + S-RNTI-2, + SecurityCapability, + Serving-HSDSCH-CellInformation, + SimultaneousSCCPCH-DPCH-Reception, + SRNC-Identity, + START-Value, + STARTList, + STARTSingle, + CapabilityUpdateRequirement-r5, + SystemSpecificCapUpdateReq, + SystemSpecificCapUpdateReq-v590ext, + SystemSpecificCapUpdateReq-r5, + SystemSpecificCapUpdateReqList, + SystemSpecificCapUpdateReqList-r5, + T-300, + T-301, + T-302, + T-304, + T-305, + T-307, + T-308, + T-309, + T-310, + T-311, + T-312, + T-313, + T-314, + T-315, + T-316, + T-317, + T-318, + T-CPCH, + TMSI-and-LAI-GSM-MAP, + TMSI-DS-41, + TotalRLC-AM-BufferSize, + TotalRLC-AM-BufferSize-r5-ext, + TransmissionProbability, + TransportChannelCapability, + TurboSupport, + TxRxFrequencySeparation, + U-RNTI, + U-RNTI-Group, + U-RNTI-Short, + UE-CapabilityContainer-IEs, + UE-RadioAccessCapability-v6b0ext-IEs, + UE-ConnTimersAndConstants, + UE-ConnTimersAndConstants-v3a0ext, + UE-ConnTimersAndConstants-r5, + UE-HSPA-Identities-r6, + UE-IdleTimersAndConstants, + UE-IdleTimersAndConstants-v3a0ext, + UE-MultiModeRAT-Capability, + UE-PowerClass, + UE-PowerClassExt, + UE-RadioAccessCapability, + UE-RadioAccessCapabilityInfo, + UE-RadioAccessCapability-v370ext, + UE-RadioAccessCapability-v380ext, + UE-RadioAccessCapability-v3a0ext, + UE-RadioAccessCapability-v3g0ext, + UE-RadioAccessCapability-v650ext, + UE-RadioAccessCapability-v690ext, + UE-RadioAccessCapabBandFDDList2, + UE-RadioAccessCapabBandFDD2, + UE-PositioningCapabilityExt-v380, + UE-PositioningCapabilityExt-v3a0, + UE-PositioningCapabilityExt-v3g0, + UE-RadioAccessCapabBandFDDList, + UE-RadioAccessCapabBandFDDList-ext, + UE-RadioAccessCapabBandFDD, + UE-RadioAccessCapabBandFDD-ext, + UE-RadioAccessCapability-v4b0ext, + UE-RadioAccessCapabilityComp, + UE-RadioAccessCapabilityComp-ext, + UE-RadioAccessCapabilityComp2, + RF-CapabilityComp, + RF-CapabBandFDDComp, + RF-CapabBandListFDDComp, + RF-CapabBandListFDDComp-ext, + UE-RadioAccessCapability-v590ext, + UE-RadioAccessCapability-v5c0ext, + UE-RadioAccessCapability-v680ext, + UL-PhysChCapabilityFDD, + UL-PhysChCapabilityFDD-r6, + UL-PhysChCapabilityTDD, + UL-PhysChCapabilityTDD-LCR-r4, + PhysicalChannelCapability-edch-r6, + UL-TransChCapability, + UE-Positioning-Capability, + UE-SecurityInformation, + UE-SecurityInformation2, + URA-UpdateCause, + UTRAN-DRX-CycleLengthCoefficient, + UpPCHposition-LCR, + WaitTime, + AlgorithmSpecificInfo, + AlgorithmSpecificInfo-r4, + CID-InclusionInfo-r4, + COUNT-C, + COUNT-C-MSB, + DefaultConfigIdentity, + DefaultConfigIdentity-r4, + DefaultConfigIdentity-r5, + DefaultConfigIdentity-r6, + DefaultConfigMode, + DDI, + DL-AM-RLC-Mode, + DL-AM-RLC-Mode-r5, + DL-CounterSynchronisationInfo, + DL-CounterSynchronisationInfo-r5, + DL-LogicalChannelMapping, + DL-LogicalChannelMapping-r5, + DL-LogicalChannelMappingList, + DL-LogicalChannelMappingList-r5, + DL-Reception-Window-Size-r6, + DL-RFC3095-r4, + DL-RLC-Mode, + DL-RLC-Mode-r5, + DL-RLC-Mode-r6, + DL-RLC-Mode-r7, + DL-RLC-Mode-r11, + DL-RLC-StatusInfo, + DL-TM-RLC-Mode, + DL-TransportChannelType, + DL-TransportChannelType-r5, + DL-UM-RLC-LI-size, + DL-UM-RLC-Mode-r5, + DL-UM-RLC-Mode-r6, + E-TFCS-Info, + ExpectReordering, + ExplicitDiscard, + HeaderCompressionInfo, + HeaderCompressionInfoList, + HeaderCompressionInfo-r4, + HeaderCompressionInfoList-r4, + LogicalChannelIdentity, + LosslessSRNS-RelocSupport, + MAC-d-HFN-initial-value, + MAC-DTX-Cycle-2ms, + MAC-DTX-Cycle-10ms, + MAC-ehs-AddReconfReordQ, + MAC-ehs-AddReconfReordQ-r9, + MAC-ehs-AddReconfReordQ-r11, + MAC-ehs-QueueId, + MAC-InactivityThreshold, + MAC-LogicalChannelPriority, + MaxDAT, + MaxDAT-Retransmissions, + MaxMRW, + MaxPDCP-SN-WindowSize, + MaxRST, + NewTiming, + NoExplicitDiscard, + PDCP-Info, + PDCP-Info-r4, + PDCP-InfoReconfig, + PDCP-InfoReconfig-r4, + PDCP-PDU-Header, + PDCP-ROHC-TargetMode, + PDCP-SN-Info, + Poll-PDU, + Poll-SDU, + PollingInfo, + PollWindow, + PowerControlGAP, + PredefinedConfigIdentity, + PredefinedConfigValueTag, + PredefinedRB-Configuration, + PreDefRadioConfiguration, + PredefinedConfigStatusList, + PredefinedConfigStatusInfo, + PredefinedConfigStatusListComp, + PredefinedConfigSetsWithDifferentValueTag, + PredefinedConfigSetWithDifferentValueTag, + PredefinedConfigValueTagList, + PredefinedConfigStatusListVarSz, + RAB-Info, + RAB-Info-r6-ext, + RAB-Info-v6b0ext, + RAB-Info-r6, + RAB-InformationList, + RAB-InformationList-r6, + RAB-InformationReconfigList, + RAB-InformationReconfig, + RAB-Info-Post, + RAB-InformationSetup, + RAB-InformationSetup-r4, + RAB-InformationSetup-r5, + RAB-InformationSetup-r6-ext, + RAB-InformationSetup-r6, + RAB-InformationSetup-v6b0ext, + RAB-InformationSetupList, + RAB-InformationSetupList-r4, + RAB-InformationSetupList-r5, + RAB-InformationSetupList-r6, + RAB-InformationSetupList-r6-ext, + RAB-InformationSetupList-v6b0ext, + RB-ActivationTimeInfo, + RB-ActivationTimeInfoList, + RB-COUNT-C-Information, + RB-COUNT-C-InformationList, + RB-COUNT-C-MSB-Information, + RB-COUNT-C-MSB-InformationList, + RB-Identity, + RB-IdentityList, + RB-InformationAffected, + RB-InformationAffected-r5, + RB-InformationAffected-r6, + RB-InformationAffectedList, + RB-InformationAffectedList-r5, + RB-InformationAffectedList-r6, + RB-InformationChanged-r6, + RB-InformationChangedList-r6, + RB-InformationReconfig, + RB-InformationReconfig-r4, + RB-InformationReconfig-r5, + RB-InformationReconfig-r6, + RB-InformationReconfigList, + RB-InformationReconfigList-r4, + RB-InformationReconfigList-r5, + RB-InformationReconfigList-r6, + RB-InformationReleaseList, + RB-InformationSetup, + RB-InformationSetup-r4, + RB-InformationSetup-r5, + RB-InformationSetup-r6, + RB-InformationSetupList, + RB-InformationSetupList-r4, + RB-InformationSetupList-r5, + RB-InformationSetupList-r6, + RB-MappingInfo, + RB-MappingInfo-r5, + RB-MappingInfo-r6, + RB-MappingOption, + RB-MappingOption-r5, + RB-MappingOption-r6, + RB-PDCPContextRelocation, + RB-PDCPContextRelocationList, + RB-StopContinue, + RB-WithPDCP-Info, + RB-WithPDCP-InfoList, + ReceivingWindowSize, + RFC2507-Info, + RFC3095-Info-r4, + RLC-Info, + RLC-Info-r5, + RLC-Info-r6, + RLC-Info-MCCH-r6, + RLC-Info-MSCH-r6, + RLC-Info-MTCH-r6, + RLC-InfoChoice, + RLC-InfoChoice-r5, + RLC-InfoChoice-r6, + RLC-PDU-Size, + RLC-PDU-SizeList, + RLC-SequenceNumber, + RLC-SizeInfo, + RLC-SizeExplicitList, + ROHC-Profile-r4, + ROHC-ProfileList-r4, + ROHC-PacketSize-r4, + ROHC-PacketSizeList-r4, + SRB-InformationSetup, + SRB-InformationSetup-r5, + SRB-InformationSetup-r6, + SRB-InformationSetupList, + SRB-InformationSetupList-r5, + SRB-InformationSetupList-r6, + SRB-InformationSetupList2, + SRB-InformationSetupList2-r6, + TimerDAR-r6, + TimerDiscard, + TimerEPC, + TimerMRW, + TimerOSD-r6, + TimerPoll, + TimerPollPeriodic, + TimerPollProhibit, + TimerRST, + TimerStatusPeriodic, + TimerStatusProhibit, + TransmissionRLC-Discard, + TransmissionWindowSize, + UL-AM-RLC-Mode, + UL-CounterSynchronisationInfo, + UL-LogicalChannelMapping, + UL-LogicalChannelMapping-r6, + UL-LogicalChannelMappingList, + UL-LogicalChannelMappingList-r6, + UL-LogicalChannelMappings, + UL-LogicalChannelMappings-r6, + UL-RFC3095-r4, + UL-RLC-Mode, + UL-TM-RLC-Mode, + UL-UM-RLC-Mode, + UL-TransportChannelType, + UM-RLC-DuplAvoid-Reord-Info-r6, + UM-RLC-OutOSeqDelivery-Info-r6, + WindowSizeDAR-r6, + WindowSizeOSD-r6, + AddOrReconfMAC-dFlow, + AllowedTFC-List, + AllowedTFI-List, + BitModeRLC-SizeInfo, + BLER-QualityValue, + ChannelCodingType, + CodingRate, + CommonDynamicTF-Info, + CommonDynamicTF-Info-DynamicTTI, + CommonDynamicTF-InfoList, + CommonDynamicTF-InfoList-DynamicTTI, + CommonTransChTFS, + CommonTransChTFS-LCR, + CPCH-SetID, + CRC-Size, + DedicatedDynamicTF-Info, + DedicatedDynamicTF-Info-DynamicTTI, + DedicatedDynamicTF-InfoList, + DedicatedDynamicTF-InfoList-DynamicTTI, + DedicatedTransChTFS, + DL-AddReconfTransChInfo2List, + DL-AddReconfTransChInfoList, + DL-AddReconfTransChInfoList-r4, + DL-AddReconfTransChInfoList-r5, + DL-AddReconfTransChInformation, + DL-AddReconfTransChInformation-r4, + DL-AddReconfTransChInformation-r5, + DL-AddReconfTransChInformation2, + DL-CommonTransChInfo, + DL-CommonTransChInfo-r4, + DL-DeletedTransChInfoList, + DL-DeletedTransChInfoList-r5, + DL-TransportChannelIdentity, + DL-TransportChannelIdentity-r5, + DL-TrCH-Type, + DL-TrCH-TypeId1-r5, + DL-TrCH-TypeId2-r5, + DRAC-ClassIdentity, + DRAC-StaticInformation, + DRAC-StaticInformationList, + E-DCH-AddReconf-MAC-d-Flow, + E-DCH-AddReconf-MAC-d-FlowList, + E-DCH-AddReconf-MAC-d-FlowList-r7, + E-DCH-MAC-d-FlowIdentity, + E-DCH-MAC-d-FlowMaxRetrans, + E-DCH-MAC-d-FlowMultiplexingList, + E-DCH-MAC-d-FlowPowerOffset, + Common-E-DCH-MAC-d-FlowList, + E-DCH-TTI, + ExplicitTFCS-Configuration, + GainFactor, + GainFactorInformation, + HSDSCH-Info, + HARQ-Info, + HARQ-Info-r7, + HARQ-Info-r11, + HARQMemorySize, + IndividualDL-CCTrCH-Info, + IndividualDL-CCTrCH-InfoList, + IndividualUL-CCTrCH-Info, + IndividualUL-CCTrCH-InfoList, + LogicalChannelByRB, + LogicalChannelList, + MAC-d-FlowIdentityDCHandHSDSCH, + MAC-d-FlowIdentity, + MAC-d-PDU-SizeInfo-List, + MAC-d-PDUsizeInfo, + MAC-hs-AddReconfQueue-List, + MAC-hs-AddReconfQueue, + MAC-hs-DelQueue-List, + MAC-hs-DelQueue, + MAC-hs-WindowSize, + NumberOfTbSizeAndTTIList, + MessType, + Non-allowedTFC-List, + NumberOfTransportBlocks, + OctetModeRLC-SizeInfoType1, + OctetModeRLC-SizeInfoType2, + PowerOffsetInfoShort, + PowerOffsetInformation, + PowerOffsetPp-m, + PreDefTransChConfiguration, + QualityTarget, + RateMatchingAttribute, + ReferenceTFC-ID, + RestrictedTrChInfo, + RestrictedTrChInfoList, + SemistaticTF-Information, + SignalledGainFactors, + SplitTFCI-Signalling, + SplitType, + T1-ReleaseTimer, + TFC-Subset, + TFC-SubsetList, + TFC-Value, + TFCI-Field2-Information, + TFCI-Range, + TFCI-RangeList, + TFCS, + TFCS-Identity, + TFCS-IdentityPlain, + TFCS-InfoForDSCH, + TFCS-ReconfAdd, + TFCS-Removal, + TFCS-RemovalList, + TimeDurationBeforeRetry, + TM-SignallingInfo, + TransmissionTimeInterval, + TransmissionTimeValidity, + TransportChannelIdentity, + TransportChannelIdentityDCHandDSCH, + TransportFormatSet, + TransportFormatSet-LCR, + UL-AddReconfTransChInfoList, + UL-AddReconfTransChInfoList-r6, + UL-AddReconfTransChInformation, + UL-AddReconfTransChInformation-r6, + UL-CommonTransChInfo, + UL-CommonTransChInfo-r4, + UL-ControlledTrChList, + UL-DeletedTransChInfoList, + UL-DeletedTransChInfoList-r6, + UL-TransportChannelIdentity, + UL-TransportChannelIdentity-r6, + UL-TrCH-Type, + USCH-TransportChannelsInfo, + ACK-NACK-repetitionFactor, + AC-To-ASC-Mapping, + AC-To-ASC-MappingTable, + AccessServiceClass-FDD, + AccessServiceClass-TDD, + AccessServiceClass-TDD-LCR-r4, + AdditionalPRACH-TF-and-TFCS-CCCH-IEs, + AdditionalPRACH-TF-and-TFCS-CCCH, + AdditionalPRACH-TF-and-TFCS-CCCH-List, + AICH-Info, + AICH-PowerOffset, + AICH-TransmissionTiming, + AllocationPeriodInfo, + Alpha, + AP-AICH-ChannelisationCode, + AP-PreambleScramblingCode, + AP-Signature, + AP-Signature-VCAM, + AP-Subchannel, + ASCSetting-FDD, + ASCSetting-TDD, + ASCSetting-TDD-LCR-r4, + AvailableAP-Signature-VCAMList, + AvailableAP-SignatureList, + AvailableAP-SubchannelList, + AvailableMinimumSF-ListVCAM, + AvailableMinimumSF-VCAM, + AvailableSignatures, + AvailableSubChannelNumbers, + BEACON-PL-Est, + BurstType, + Bler-Target, + CCTrCH-PowerControlInfo, + CCTrCH-PowerControlInfo-r4, + CCTrCH-PowerControlInfo-r5, + CD-AccessSlotSubchannel, + CD-AccessSlotSubchannelList, + CD-CA-ICH-ChannelisationCode, + CD-PreambleScramblingCode, + CD-SignatureCode, + CD-SignatureCodeList, + CellAndChannelIdentity, + CellParametersID, + Cfntargetsfnframeoffset, + ChannelAssignmentActive, + ChannelisationCode256, + ChannelReqParamsForUCSM, + ClosedLoopTimingAdjMode, + CodeNumberDSCH, + CodeRange, + CodeWordSet, + CommonTimeslotInfo, + CommonTimeslotInfoMBMS, + CommonTimeslotInfoSCCPCH, + Common-MAC-ehs-ReorderingQueue, + ConstantValue, + ConstantValueTdd, + CPCH-PersistenceLevels, + CPCH-PersistenceLevelsList, + CPCH-SetInfo, + CPCH-SetInfoList, + CPCH-StatusIndicationMode, + CQI-RepetitionFactor, + CSICH-PowerOffset, + DefaultDPCH-OffsetValueFDD, + DefaultDPCH-OffsetValueTDD, + DeltaPp-m, + DeltaCQI, + DeltaNACK, + DeltaACK, + DeltaSIR, + DHS-Sync, + DL-CCTrCh, + DL-CCTrCh-r4, + DL-CCTrChList, + DL-CCTrChList-r4, + DL-CCTrChListToRemove, + DL-ChannelisationCode, + DL-ChannelisationCodeList, + DL-CommonInformation, + DL-CommonInformation-r4, + DL-CommonInformation-r5, + DL-CommonInformation-r6, + DL-CommonInformation-r7, + DL-CommonInformation-r8, + DL-CommonInformation-r10, + DL-CommonInformation-r11, + DL-CommonInformationPost, + DL-CommonInformationPredef, + DL-CompressedModeMethod, + DL-DPCH-InfoCommon, + DL-DPCH-InfoCommon-r4, + DL-DPCH-InfoCommon-r6, + DL-DPCH-InfoCommonPost, + DL-DPCH-InfoCommonPredef, + DL-DPCH-InfoPerRL, + DL-DPCH-InfoPerRL-r4, + DL-DPCH-InfoPerRL-r5, + DL-DPCH-InfoPerRL-r6, + DL-DPCH-InfoPerRL-r7, + DL-FDPCH-InfoPerRL-r6, + DL-FDPCH-InfoPerRL-r7, + DL-DPCH-InfoPerRL-PostFDD, + DL-DPCH-InfoPerRL-PostTDD, + DL-DPCH-InfoPerRL-PostTDD-LCR-r4, + DL-DPCH-PowerControlInfo, + DL-FDPCH-InfoCommon-r6, + DL-FrameType, + DL-HSPDSCH-Information, + DL-HSPDSCH-Information-r6, + DL-HSPDSCH-Information-r7, + DL-HSPDSCH-Information-r8, + DL-HSPDSCH-Information-r9, + DL-HSPDSCH-Information-r11, + DL-HSPDSCH-TS-Configuration, + DL-InformationPerRL, + DL-InformationPerRL-r4, + DL-InformationPerRL-r5, + DL-InformationPerRL-r5bis, + DL-InformationPerRL-r6, + DL-InformationPerRL-v6b0ext, + DL-InformationPerRL-List, + DL-InformationPerRL-List-r4, + DL-InformationPerRL-List-r5, + DL-InformationPerRL-List-r6, + DL-InformationPerRL-List-v6b0ext, + DL-InformationPerRL-List-r5bis, + DL-InformationPerRL-ListPostFDD, + DL-InformationPerRL-PostFDD, + DL-InformationPerRL-PostTDD, + DL-InformationPerRL-PostTDD-LCR-r4, + DL-PDSCH-Information, + Dl-rate-matching-restriction, + DL-TPC-PowerOffsetPerRL, + DL-TPC-PowerOffsetPerRL-List, + DL-TS-ChannelisationCode, + DL-TS-ChannelisationCodesShort, + DownlinkAdditionalTimeslots, + DownlinkAdditionalTimeslots-LCR-r4, + DownlinkTimeslotsCodes, + DownlinkTimeslotsCodes-LCR-r4, + DPC-Mode, + DPCCH-PowerOffset, + DPCCH-PowerOffset2, + DPCH-CompressedModeInfo, + DPCH-CompressedModeStatusInfo, + DPCH-FrameOffset, + DSCH-Mapping, + DSCH-MappingList, + DSCH-RadioLinkIdentifier, + DSCH-TransportChannelsInfo, + DTX-DRX-TimingInfo-r7, + DurationTimeInfo, + DynamicPersistenceLevel, + DynamicPersistenceLevelList, + DynamicPersistenceLevelTF-List, + DynamicTFInformationCCCH, + E-AGCH-ChannelisationCode, + E-AGCH-Information, + E-AGCH-Information-r7, + E-DCH-MinimumSet-E-TFCI, + E-DCH-ReconfigurationInfo, + E-DCH-RL-InfoNewServingCell, + E-DCH-RL-InfoOtherCell, + E-DPCCH-Info, + E-DPCCH-Info-r7, + E-DPCCH-DPCCH-PowerOffset, + E-DPDCH-Info, + E-DPDCH-PeriodicyOfSchedInfo, + E-DPDCH-PL-NonMax, + E-DPDCH-Reference-E-TFCI, + E-DPDCH-Reference-E-TFCIList, + E-DPDCH-SchedulingInfoConfiguration, + E-DPDCH-SchedulingTransmConfiguration, + E-DPDCH-MaxChannelisationCodes, + E-HICH-ChannelisationCode, + E-HICH-Information, + E-HICH-Information-r11, + E-HICH-Information-CommonEdch, + E-HICH-Information-LCR, + E-HICH-RGCH-SignatureSequence, + E-RGCH-CombinationIndex, + E-RGCH-Information, + E-RGCH-Information-CommonEdch, + E-RUCCH-Info, + E-TFCI-TableIndex, + FACH-PCH-Information, + FACH-PCH-InformationList, + Feedback-cycle, + FPACH-Info-r4, + FrequencyInfo, + FrequencyInfoFDD, + FrequencyInfoTDD, + HappyBit-DelayCondition, + HARQ-Preamble-Mode, + HS-ChannelisationCode-LCR, + HS-PDSCH-Midamble-Configuration-TDD128, + HS-DSCH-PagingSystemInformation-TDD128, + HS-DSCH-DrxCellfach-info-TDD128, + HS-SCCH-Info, + HS-SCCH-Info-r6, + HS-SCCH-Codes, + HS-SCCH-LessInfo-r7, + HS-SCCH-TDD128, + HS-SCCH-TDD128-r6, + HS-SICH-Configuration-TDD128, + HS-SICH-Configuration-TDD128-r6, + HS-SCCH-TDD384, + HS-SCCH-TDD384-r6, + HS-SICH-Configuration-TDD384, + HS-SICH-Power-Control-Info-TDD384, + HS-SCCH-SystemInfo, + IndividualTimeslotInfo, + IndividualTimeslotInfo-LCR-r4, + IndividualTimeslotInfo-LCR-r4-ext, + IndividualTS-Interference, + IndividualTS-InterferenceList, + ITP, + NidentifyAbort, + MaxAllowedUL-TX-Power, + MaxAvailablePCPCH-Number, + MaxPowerIncrease-r4, + MaxTFCI-Field2Value, + Measurement-Feedback-Info, + MidambleConfigurationBurstType1and3, + MidambleConfigurationBurstType2, + MidambleShiftAndBurstType, + MidambleShiftAndBurstType-DL, + MidambleShiftAndBurstType-LCR-r4, + MidambleShiftLong, + MidambleShiftShort, + MinimumSpreadingFactor, + MultiCodeInfo, + N-EOT, + N-GAP, + N-PCH, + N-StartMessage, + NB01, + NF-Max, + NumberOfDPDCH, + NumberOfFBI-Bits, + OpenLoopPowerControl-TDD, + OpenLoopPowerControl-IPDL-TDD-r4, + PagingIndicatorLength, + PC-Preamble, + PCP-Length, + PCPCH-ChannelInfo, + PCPCH-ChannelInfoList, + PCPICH-UsageForChannelEst, + PDSCH-CapacityAllocationInfo, + PDSCH-CapacityAllocationInfo-r4, + PDSCH-CodeInfo, + PDSCH-CodeInfoList, + PDSCH-CodeMap, + PDSCH-CodeMapList, + PDSCH-CodeMapping, + PDSCH-Identity, + PDSCH-Info, + PDSCH-Info-r4, + PDSCH-Info-LCR-r4, + PDSCH-PowerControlInfo, + PDSCH-SHO-DCH-Info, + PDSCH-SysInfo, + PDSCH-SysInfo-HCR-r5, + PDSCH-SysInfo-LCR-r4, + PDSCH-SysInfoList, + PDSCH-SysInfoList-HCR-r5, + PDSCH-SysInfoList-LCR-r4, + PDSCH-SysInfoList-SFN, + PDSCH-SysInfoList-SFN-HCR-r5, + PDSCH-SysInfoList-SFN-LCR-r4, + PersistenceScalingFactor, + PersistenceScalingFactorList, + PI-CountPerFrame, + PichChannelisationCodeList-LCR-r4, + PICH-Info, + PICH-Info-LCR-r4, + PICH-PowerOffset, + PilotBits128, + PilotBits256, + MeasurementPowerOffset, + PositionFixedOrFlexible, + PowerControlAlgorithm, + PowerOffsetPilot-pdpdch, + PowerOffsetTPC-pdpdch, + PowerRampStep, + PRACH-ChanCodes-LCR-r4, + PRACH-Definition-LCR-r4, + PRACH-Midamble, + PRACH-Partitioning, + PRACH-Partitioning-LCR-r4, + PRACH-PowerOffset, + PRACH-RACH-Info, + PRACH-RACH-Info-LCR-r4, + PRACH-SystemInformation, + PRACH-SystemInformation-LCR-r4, + PRACH-SystemInformationList, + PRACH-SystemInformationList-LCR-r4, + PreambleRetransMax, + PreambleScramblingCodeWordNumber, + PreDefPhyChConfiguration, + PrimaryCCPCH-Info, + PrimaryCCPCH-Info-r4, + PrimaryCCPCH-Info-LCR-r4, + PrimaryCCPCH-Info-LCR-r4-ext, + PrimaryCCPCH-InfoPost, + PrimaryCCPCH-InfoPostTDD-LCR-r4, + PrimaryCCPCH-TX-Power, + PrimaryCPICH-Info, + PrimaryCPICH-TX-Power, + PrimaryScramblingCode, + PuncturingLimit, + PUSCH-CapacityAllocationInfo, + PUSCH-CapacityAllocationInfo-r4, + PUSCH-Identity, + PUSCH-Info, + PUSCH-Info-r4, + PUSCH-Info-LCR-r4, + PUSCH-PowerControlInfo-r4, + PUSCH-SysInfo, + PUSCH-SysInfo-HCR-r5, + PUSCH-SysInfo-LCR-r4, + PUSCH-SysInfoList, + PUSCH-SysInfoList-HCR-r5, + PUSCH-SysInfoList-LCR-r4, + PUSCH-SysInfoList-SFN, + PUSCH-SysInfoList-SFN-HCR-r5, + PUSCH-SysInfoList-SFN-LCR-r4, + RACH-TransmissionParameters, + ReducedScramblingCodeNumber, + RepetitionPeriodAndLength, + RepetitionPeriodLengthAndOffset, + ReplacedPDSCH-CodeInfo, + ReplacedPDSCH-CodeInfoList, + RepPerLengthOffset-PICH, + RepPerLengthOffset-MICH, + RestrictedTrCH, + RestrictedTrCH-InfoList, + RL-AdditionInformation, + RL-AdditionInformation-r6, + RL-AdditionInformation-v6b0ext, + RL-AdditionInformationList, + RL-AdditionInformationList-r6, + RL-AdditionInformation-list-v6b0ext, + RL-IdentifierList, + RL-RemovalInformationList, + RPP, + S-Field, + SCCPCH-ChannelisationCode, + SCCPCH-ChannelisationCodeList, + SCCPCH-InfoForFACH, + SCCPCH-InfoForFACH-r4, + SCCPCH-SystemInformation, + SCCPCH-SystemInformation-LCR-r4-ext, + SCCPCH-SystemInformationList, + SCCPCH-SystemInformationList-LCR-r4-ext, + SCCPCH-SystemInformation-MBMS-r6, + ScramblingCodeChange, + ScramblingCodeType, + SecondaryCCPCH-Info, + SecondaryCCPCH-Info-r4, + SecondaryCCPCH-Info-LCR-r4-ext, + SecondaryCCPCHInfo-MBMS-r6, + SecondaryCPICH-Info, + SecondaryScramblingCode, + SecondInterleavingMode, + SF256-AndCodeNumber, + SF512-AndCodeNumber, + SF512-AndPilot, + SF-PDSCH, + SF-PRACH, + SFN-TimeInfo, + SpecialBurstScheduling, + SpreadingFactor, + SRB-delay, + SSDT-CellIdentity, + SSDT-Information, + SSDT-Information-r4, + SSDT-UL, + STTDIndication, + SynchronisationParameters-r4, + SYNC-UL-Procedure-r4, + SYNC-UL-Info-r4, + TDD-FPACH-CCode16-r4, + TDD-UL-Interference, + TDD-PICH-CCode, + TDD-PRACH-CCode8, + TDD-PRACH-CCode16, + TDD-PRACH-CCode-LCR-r4, + TDD-PRACH-CCodeList, + TFC-ControlDuration, + TFCI-Coding, + TGCFN, + TGD, + TGL, + TGMP, + TGP-Sequence, + TGPS-Reconfiguration-CFN, + TGP-SequenceList, + TGP-SequenceShort, + TGPL, + TGPRC, + TGPS-ConfigurationParams, + TGPSI, + TGSN, + TimeInfo, + TimeslotList, + TimeslotList-r4, + TimeslotNumber, + TimeslotNumber-LCR-r4, + TimeslotNumber-PRACH-LCR-r4, + TimeslotSync2, + TimingOffset, + TimingMaintainedSynchInd, + TPC-CombinationIndex, + TPC-StepSizeFDD, + TPC-StepSizeTDD, + TreconfirmAbort, + TX-DiversityMode, + UARFCN, + UCSM-Info, + UL-16QAM-Settings, + UL-CCTrCH, + UL-CCTrCH-r4, + UL-CCTrCHList, + UL-CCTrCHList-r4, + UL-CCTrCHListToRemove, + UL-CCTrChTPCList, + UL-ChannelRequirement, + UL-ChannelRequirement-r4, + UL-ChannelRequirement-r5, + UL-ChannelRequirementWithCPCH-SetID, + UL-ChannelRequirementWithCPCH-SetID-r4, + UL-ChannelRequirementWithCPCH-SetID-r5, + UL-CompressedModeMethod, + UL-DL-Mode, + UL-DPCCH-SlotFormat, + UL-DPCH-Info, + UL-DPCH-Info-r4, + UL-DPCH-Info-r5, + UL-DPCH-Info-r6, + UL-DPCH-Info-r7, + UL-DPCH-Info-r11, + UL-DPCH-InfoPostFDD, + UL-DPCH-InfoPostTDD, + UL-DPCH-InfoPostTDD-LCR-r4, + UL-DPCH-InfoPredef, + UL-DPCH-PowerControlInfo, + UL-DPCH-PowerControlInfo-r4, + UL-DPCH-PowerControlInfo-r5, + UL-DPCH-PowerControlInfo-r6, + UL-DPCH-PowerControlInfoPostFDD, + UL-DPCH-PowerControlInfoPostTDD, + UL-DPCH-PowerControlInfoPostTDD-LCR-r4, + UL-DPCH-PowerControlInfoPredef, + UL-EDCH-Information-r6, + UL-Interference, + UL-ScramblingCode, + UL-SynchronisationParameters-r4, + UL-TargetSIR, + UL-TimingAdvance, + UL-TimingAdvanceControl, + UL-TimingAdvanceControl-r4, + UL-TimingAdvanceControl-LCR-r4, + UL-TS-ChannelisationCode, + UL-TS-ChannelisationCodeList, + UplinkAdditionalTimeslots, + UplinkAdditionalTimeslots-LCR-r4, + Uplink-DPCCH-Slot-Format-Information, + UplinkTimeslotsCodes, + UplinkTimeslotsCodes-LCR-r4, + Wi-LCR, + AcquisitionSatInfo, + AcquisitionSatInfoList, + AdditionalMeasurementID-List, + AlmanacSatInfo, + AlmanacSatInfoList, + AverageRLC-BufferPayload, + AzimuthAndElevation, + BadSatList, + Frequency-Band, + BCCH-ARFCN, + BLER-MeasurementResults, + BLER-MeasurementResultsList, + BLER-TransChIdList, + BSIC-VerificationRequired, + BSICReported, + BurstModeParameters, + CellDCH-ReportCriteria, + CellDCH-ReportCriteria-LCR-r4, + CellIndividualOffset, + CellInfo, + CellInfo-r4, + CellInfoSI-RSCP, + CellInfoSI-RSCP-LCR-r4, + CellInfoSI-ECN0, + CellInfoSI-ECN0-LCR-r4, + CellInfoSI-HCS-RSCP, + CellInfoSI-HCS-RSCP-LCR-r4, + CellInfoSI-HCS-ECN0, + CellInfoSI-HCS-ECN0-LCR-r4, + CellMeasuredResults, + CellMeasurementEventResults, + CellMeasurementEventResults-LCR-r4, + CellReportingQuantities, + CellSelectReselectInfoSIB-11-12, + CellSelectReselectInfoSIB-11-12-RSCP, + CellSelectReselectInfoSIB-11-12-ECN0, + CellSelectReselectInfoSIB-11-12-HCS-RSCP, + CellSelectReselectInfoSIB-11-12-HCS-ECN0, + CellSelectReselectInfo-v590ext, + CellSelectReselectInfoPCHFACH-v5b0ext, + CellSelectReselectInfoTreselectionScaling-v5c0ext, + CellsForInterFreqMeasList, + CellsForInterRATMeasList, + CellsForIntraFreqMeasList, + CellSynchronisationInfo, + CellToReport, + CellToReportList, + CodePhaseSearchWindow, + CountC-SFN-Frame-difference, + CPICH-Ec-N0, + CPICH-RSCP, + DeltaPRC, + DeltaQrxlevmin, + DeltaRSCP, + DeltaRSCPPerCell, + DeltaRRC, + DGPS-CorrectionSatInfo, + DGPS-CorrectionSatInfoList, + DiffCorrectionStatus, + DL-TransportChannelBLER, + DopplerUncertainty, + DRX-Info, + EllipsoidPoint, + EllipsoidPointAltitude, + EllipsoidPointAltitudeEllipsoide, + EllipsoidPointUncertCircle, + EllipsoidPointUncertEllipse, + EnvironmentCharacterisation, + Event1a, + Event1a-r4, + Event1a-LCR-r4, + Event1b, + Event1b-r4, + Event1b-LCR-r4, + Event1c, + Event1d, + Event1e, + Event1e-r6, + Event1f, + Event1f-r6, + Event1j-r6, + Event2a, + Event2a-r6, + Event2b, + Event2b-r6, + Event2c, + Event2c-r6, + Event2d, + Event2d-r6, + Event2e, + Event2e-r6, + Event2f, + Event2f-r6, + Event3a, + Event3b, + Event3c, + Event3d, + EventIDInterFreq, + EventIDInterRAT, + EventIDIntraFreq, + EventResults, + ExtraDopplerInfo, + FACH-MeasurementOccasionInfo, + FACH-MeasurementOccasionInfo-LCR-r4-ext, + FilterCoefficient, + FineSFN-SFN, + ForbiddenAffectCell, + ForbiddenAffectCell-r4, + ForbiddenAffectCell-LCR-r4, + ForbiddenAffectCellList, + ForbiddenAffectCellList-r4, + ForbiddenAffectCellList-LCR-r4, + FreqQualityEstimateQuantity-FDD, + FreqQualityEstimateQuantity-TDD, + GPS-MeasurementParam, + GPS-MeasurementParamList, + GSM-CarrierRSSI, + GSM-MeasuredResults, + GSM-MeasuredResultsList, + GPS-TOW-1msec, + GPS-TOW-Assist, + GPS-TOW-AssistList, + HCS-CellReselectInformation-RSCP, + HCS-CellReselectInformation-ECN0, + HCS-NeighbouringCellInformation-RSCP, + HCS-NeighbouringCellInformation-ECN0, + HCS-PRIO, + HCS-ServingCellInformation, + Hysteresis, + HysteresisInterFreq, + InterFreqCell, + InterFreqCell-LCR-r4, + InterFreqCellID, + InterFreqCellInfoList, + InterFreqCellInfoList-r4, + InterFreqCellInfoSI-List-RSCP, + InterFreqCellInfoSI-List-ECN0, + InterFreqCellInfoSI-List-HCS-RSCP, + InterFreqCellInfoSI-List-HCS-ECN0, + InterFreqCellInfoSI-List-RSCP-LCR, + InterFreqCellInfoSI-List-ECN0-LCR, + InterFreqCellInfoSI-List-HCS-RSCP-LCR, + InterFreqCellInfoSI-List-HCS-ECN0-LCR, + InterFreqCellList, + InterFreqCellList-LCR-r4-ext, + InterFreqCellMeasuredResultsList, + InterFreqEvent, + InterFreqEvent-r6, + InterFreqEventList, + InterFreqEventList-r6, + InterFrequencyMeasuredResultsList-v590ext, + Inter-FreqEventCriteria-v590ext, + Inter-FreqEventCriteriaList-v590ext, + Intra-FreqEventCriteriaList-v590ext, + IntraFrequencyMeasuredResultsList-v590ext, + IntraFreqReportingCriteria-1b-r5, + PeriodicReportingInfo-1b, + InterFreqEventResults, + InterFreqEventResults-LCR-r4-ext, + InterFreqMeasQuantity, + InterFreqMeasuredResults, + InterFreqMeasuredResultsList, + InterFreqMeasurementSysInfo-RSCP, + InterFreqMeasurementSysInfo-ECN0, + InterFreqMeasurementSysInfo-HCS-RSCP, + InterFreqMeasurementSysInfo-HCS-ECN0, + InterFreqMeasurementSysInfo-RSCP-LCR-r4, + InterFreqMeasurementSysInfo-ECN0-LCR-r4, + InterFreqMeasurementSysInfo-HCS-RSCP-LCR-r4, + InterFreqMeasurementSysInfo-HCS-ECN0-LCR-r4, + InterFreqRACHRepCellsList, + Dummy-InterFreqRACHReportingInfo, + InterFreqRACHReportingInfo, + InterFreqReportCriteria, + InterFreqReportCriteria-r4, + InterFreqReportCriteria-r6, + InterFreqReportingCriteria, + InterFreqReportingCriteria-r6, + InterFreqReportingQuantity, + InterFreqRepQuantityRACH-FDD, + InterFreqRepQuantityRACH-TDD, + InterFreqRepQuantityRACH-TDDList, + InterFrequencyMeasurement, + InterFrequencyMeasurement-r4, + InterFrequencyMeasurement-r6, + InterRAT-TargetCellDescription, + InterRATCellID, + InterRATCellInfoIndication, + InterRATCellInfoList, + InterRATCellInfoList-B, + InterRATCellInfoList-r4, + InterRATCellInfoList-r6, + InterRATCellIndividualOffset, + InterRATEvent, + InterRATEventList, + InterRATEventResults, + InterRATInfo, + InterRATInfo-r6, + InterRATMeasQuantity, + InterRATMeasuredResults, + InterRATMeasuredResultsList, + InterRATMeasurement, + InterRATMeasurement-r4, + InterRATMeasurement-r6, + InterRATMeasurementSysInfo, + InterRATMeasurementSysInfo-B, + InterRATReportCriteria, + InterRATReportingCriteria, + InterRATReportingQuantity, + IntraFreqCellID, + IntraFreqCellInfoList, + IntraFreqCellInfoList-r4, + IntraFreqCellInfoSI-List-RSCP, + IntraFreqCellInfoSI-List-ECN0, + IntraFreqCellInfoSI-List-HCS-RSCP, + IntraFreqCellInfoSI-List-HCS-ECN0, + IntraFreqCellInfoSI-List-RSCP-LCR-r4, + IntraFreqCellInfoSI-List-ECN0-LCR-r4, + IntraFreqCellInfoSI-List-HCS-RSCP-LCR-r4, + IntraFreqCellInfoSI-List-HCS-ECN0-LCR-r4, + IntraFreqEvent, + IntraFreqEvent-r4, + IntraFreqEvent-LCR-r4, + IntraFreqEvent-r6, + IntraFreqEvent-1d-r5, + IntraFreqEventCriteria, + IntraFreqEventCriteria-r4, + IntraFreqEventCriteria-LCR-r4, + IntraFreqEventCriteria-r6, + IntraFreqEventCriteriaList, + IntraFreqEventCriteriaList-r4, + IntraFreqEventCriteriaList-LCR-r4, + IntraFreqEventCriteriaList-r6, + IntraFreqEventResults, + IntraFreqMeasQuantity, + IntraFreqMeasQuantity-FDD, + IntraFreqMeasQuantity-TDD, + IntraFreqMeasQuantity-TDDList, + IntraFreqMeasuredResultsList, + IntraFreqMeasurementSysInfo-RSCP, + IntraFreqMeasurementSysInfo-ECN0, + IntraFreqMeasurementSysInfo-HCS-RSCP, + IntraFreqMeasurementSysInfo-HCS-ECN0, + IntraFreqMeasurementSysInfo-RSCP-LCR-r4, + IntraFreqMeasurementSysInfo-ECN0-LCR-r4, + IntraFreqMeasurementSysInfo-HCS-RSCP-LCR-r4, + IntraFreqMeasurementSysInfo-HCS-ECN0-LCR-r4, + IntraFreqReportCriteria, + IntraFreqReportCriteria-r4, + IntraFreqReportCriteria-r6, + IntraFreqReportingCriteria, + IntraFreqReportingCriteria-r4, + IntraFreqReportingCriteria-LCR-r4, + IntraFreqReportingCriteria-r6, + IntraFreqReportingQuantity, + IntraFreqReportingQuantityForRACH, + IntraFreqRepQuantityRACH-FDD, + IntraFreqRepQuantityRACH-TDD, + IntraFreqRepQuantityRACH-TDDList, + IntraFrequencyMeasurement, + IntraFrequencyMeasurement-r4, + IntraFrequencyMeasurement-r6, + IODE, + IP-Length, + IP-PCCPCH-r4, + IP-Spacing, + IP-Spacing-TDD, + IS-2000SpecificMeasInfo, + MaxNumberOfReportingCellsType1, + MaxNumberOfReportingCellsType2, + MaxNumberOfReportingCellsType3, + MaxReportedCellsOnRACH, + MaxReportedCellsOnRACHinterFreq, + MeasuredResults, + MeasuredResults-v390ext, + MeasuredResults-v590ext, + MeasuredResults-LCR-r4, + MeasuredResultsList, + MeasuredResultsList-LCR-r4-ext, + MeasuredResultsOnRACH, + MeasuredResultsOnRACHinterFreq, + MeasurementCommand, + MeasurementCommand-r4, + MeasurementCommand-r6, + MeasurementControlSysInfo, + MeasurementControlSysInfoExtension, + MeasurementControlSysInfoExtensionAddon-r5, + MeasurementControlSysInfoExtension-LCR-r4, + MeasurementControlSysInfo-LCR-r4-ext, + MeasurementIdentity, + MeasurementQuantityGSM, + MeasurementReportingMode, + MeasurementType, + MeasurementType-r4, + MeasurementType-r6, + MeasurementValidity, + MonitoredCellRACH-List, + MonitoredCellRACH-Result, + MultipathIndicator, + N-CR-T-CRMaxHyst, + NavigationModelSatInfo, + NavigationModelSatInfoList, + EphemerisParameter, + NC-Mode, + Neighbour, + Neighbour-v390ext, + NeighbourList, + NeighbourList-v390ext, + NeighbourQuality, + NewInterFreqCell, + NewInterFreqCell-r4, + NewInterFreqCellList, + NewInterFreqCellList-r4, + NewInterFreqCellSI-RSCP, + NewInterFreqCellSI-ECN0, + NewInterFreqCellSI-HCS-RSCP, + NewInterFreqCellSI-HCS-ECN0, + NewInterFreqCellSI-RSCP-LCR-r4, + NewInterFreqCellSI-ECN0-LCR-r4, + NewInterFreqCellSI-HCS-RSCP-LCR-r4, + NewInterFreqCellSI-HCS-ECN0-LCR-r4, + NewInterFreqCellSI-List-ECN0, + NewInterFreqCellSI-List-HCS-RSCP, + NewInterFreqCellSI-List-HCS-ECN0, + NewInterFreqCellSI-List-RSCP, + NewInterFreqCellSI-List-ECN0-LCR-r4, + NewInterFreqCellSI-List-HCS-RSCP-LCR-r4, + NewInterFreqCellSI-List-HCS-ECN0-LCR-r4, + NewInterFreqCellSI-List-RSCP-LCR-r4, + NewInterRATCell, + NewInterRATCell-B, + NewInterRATCellList, + NewInterRATCellList-B, + NewIntraFreqCell, + NewIntraFreqCell-r4, + NewIntraFreqCellList, + NewIntraFreqCellList-r4, + NewIntraFreqCellSI-RSCP, + NewIntraFreqCellSI-ECN0, + NewIntraFreqCellSI-HCS-RSCP, + NewIntraFreqCellSI-HCS-ECN0, + NewIntraFreqCellSI-RSCP-LCR-r4, + NewIntraFreqCellSI-ECN0-LCR-r4, + NewIntraFreqCellSI-HCS-RSCP-LCR-r4, + NewIntraFreqCellSI-HCS-ECN0-LCR-r4, + NewIntraFreqCellSI-List-RSCP, + NewIntraFreqCellSI-List-ECN0, + NewIntraFreqCellSI-List-HCS-RSCP, + NewIntraFreqCellSI-List-HCS-ECN0, + NewIntraFreqCellSI-List-RSCP-LCR-r4, + NewIntraFreqCellSI-List-ECN0-LCR-r4, + NewIntraFreqCellSI-List-HCS-RSCP-LCR-r4, + NewIntraFreqCellSI-List-HCS-ECN0-LCR-r4, + NonUsedFreqParameter, + NonUsedFreqParameter-r6, + NonUsedFreqParameterList, + NonUsedFreqParameterList-r6, + NonUsedFreqWList-r6, + ObservedTimeDifferenceToGSM, + OTDOA-SearchWindowSize, + Pathloss, + PenaltyTime-RSCP, + PenaltyTime-ECN0, + PendingTimeAfterTrigger, + PeriodicalOrEventTrigger, + PeriodicalReportingCriteria, + PeriodicalWithReportingCellStatus, + PLMNIdentitiesOfNeighbourCells, + PLMNsOfInterFreqCellsList, + PLMNsOfIntraFreqCellsList, + PLMNsOfInterRATCellsList, + PositionEstimate, + PositioningMethod, + PRC, + PrimaryCCPCH-RSCP, + Q-HCS, + Q-OffsetS-N, + Q-QualMin, + Q-RxlevMin, + QualityEventResults, + QualityMeasuredResults, + QualityMeasurement, + QualityReportCriteria, + QualityReportingCriteria, + QualityReportingCriteriaSingle, + QualityReportingQuantity, + RAT-Type, + ReferenceCellPosition, + ReferenceLocation, + ReferenceTimeDifferenceToCell, + RemovedInterFreqCellList, + RemovedInterRATCellList, + RemovedIntraFreqCellList, + ReplacementActivationThreshold, + ReportDeactivationThreshold, + ReportingAmount, + ReportingCellStatus, + ReportingCellStatusOpt, + ReportingInfoForCellDCH, + ReportingInfoForCellDCH-LCR-r4, + ReportingInterval, + ReportingIntervalLong, + ReportingRange, + RL-AdditionInfoList, + RL-InformationLists, + RLC-BuffersPayload, + RRC, + SatData, + SatDataList, + SatelliteStatus, + SatID, + SFN-Offset-Validity, + SFN-SFN-Drift, + SFN-SFN-ObsTimeDifference, + SFN-SFN-ObsTimeDifference1, + SFN-SFN-ObsTimeDifference2, + SFN-SFN-OTD-Type, + SFN-SFN-RelTimeDifference1, + SFN-TOW-Uncertainty, + SIR, + SIR-MeasurementList, + SIR-MeasurementResults, + SIR-TFCS, + SIR-TFCS-List, + SIR-TimeslotList, + SubFrame1Reserved, + T-ADVinfo, + T-CRMax, + T-CRMaxHyst, + TemporaryOffset1, + TemporaryOffset2, + TemporaryOffsetList, + Threshold, + Threshold-r6, + ThreholdNonUsedFrequency-deltaList, + ThresholdPositionChange, + ThresholdSFN-GPS-TOW, + ThresholdSFN-SFN-Change, + ThresholdUsedFrequency, + ThresholdUsedFrequency-r6, + TimeInterval, + TimeslotInfo, + TimeslotInfo-LCR-r4, + TimeslotInfoList, + TimeslotInfoList-LCR-r4, + TimeslotInfoList-r4, + TimeslotISCP, + TimeslotISCP-List, + TimeslotListWithISCP, + TimeslotWithISCP, + TimeToTrigger, + TrafficVolumeEventParam, + TrafficVolumeEventResults, + TrafficVolumeEventType, + TrafficVolumeMeasQuantity, + TrafficVolumeMeasSysInfo, + TrafficVolumeMeasuredResults, + TrafficVolumeMeasuredResultsList, + TrafficVolumeMeasurement, + TrafficVolumeMeasurementObjectList, + TrafficVolumeReportCriteria, + TrafficVolumeReportCriteriaSysInfo, + TrafficVolumeReportingCriteria, + TrafficVolumeReportingQuantity, + TrafficVolumeThreshold, + TransChCriteria, + TransChCriteriaList, + TransferMode, + TransmittedPowerThreshold, + TriggeringCondition1, + TriggeringCondition2, + TX-InterruptionAfterTrigger, + UDRE, + UE-6AB-Event, + UE-6FG-Event, + UE-AutonomousUpdateMode, + UE-InternalEventParam, + UE-InternalEventParamList, + UE-InternalEventResults, + UE-InternalMeasQuantity, + UE-InternalMeasuredResults, + UE-InternalMeasuredResults-LCR-r4, + UE-InternalMeasurement, + UE-InternalMeasurement-r4, + UE-InternalMeasurementSysInfo, + UE-InternalReportCriteria, + UE-InternalReportingCriteria, + UE-InternalReportingQuantity, + UE-InternalReportingQuantity-r4, + UE-MeasurementQuantity, + UE-RX-TX-ReportEntry, + UE-RX-TX-ReportEntryList, + UE-RX-TX-TimeDifferenceType1, + UE-RX-TX-TimeDifferenceType2, + UE-RX-TX-TimeDifferenceType2Info, + UE-RX-TX-TimeDifferenceThreshold, + UE-TransmittedPower, + UE-TransmittedPowerTDD-List, + UL-TrCH-Identity, + UE-Positioning-Accuracy, + UE-Positioning-CipherParameters, + UE-Positioning-Error, + UE-Positioning-ErrorCause, + UE-Positioning-EventParam, + UE-Positioning-EventParamList, + UE-Positioning-EventSpecificInfo, + UE-Positioning-GPS-AcquisitionAssistance, + UE-Positioning-GPS-AdditionalAssistanceDataRequest, + UE-Positioning-GPS-Almanac, + UE-Positioning-GPS-AssistanceData, + UE-Positioning-GPS-DGPS-Corrections, + UE-Positioning-GPS-IonosphericModel, + UE-Positioning-GPS-MeasurementResults, + UE-Positioning-GPS-NavigationModel, + UE-Positioning-GPS-NavModelAddDataReq, + UE-Positioning-GPS-ReferenceCellInfo, + UE-Positioning-GPS-ReferenceTime, + UE-Positioning-GPS-UTC-Model, + UE-Positioning-IPDL-Parameters, + UE-Positioning-IPDL-Parameters-r4, + UE-Positioning-IPDL-Parameters-TDD-r4-ext, + UE-Positioning-MeasuredResults, + UE-Positioning-MeasuredResults-v390ext, + UE-Positioning-Measurement, + UE-Positioning-Measurement-v390ext, + UE-Positioning-Measurement-r4, + UE-Positioning-MeasurementEventResults, + UE-Positioning-MeasurementInterval, + UE-Positioning-MethodType, + UE-Positioning-OTDOA-AssistanceData, + UE-Positioning-OTDOA-AssistanceData-r4, + UE-Positioning-OTDOA-AssistanceData-r4ext, + UE-Positioning-OTDOA-AssistanceData-UEB, + UE-Positioning-IPDL-Parameters-TDDList-r4-ext, + UE-Positioning-OTDOA-Measurement, + UE-Positioning-OTDOA-Measurement-v390ext, + UE-Positioning-OTDOA-NeighbourCellInfo, + UE-Positioning-OTDOA-NeighbourCellInfo-r4, + UE-Positioning-OTDOA-NeighbourCellInfo-UEB, + UE-Positioning-OTDOA-NeighbourCellList, + UE-Positioning-OTDOA-NeighbourCellList-r4, + UE-Positioning-OTDOA-NeighbourCellList-UEB, + UE-Positioning-OTDOA-Quality, + UE-Positioning-OTDOA-ReferenceCellInfo, + UE-Positioning-OTDOA-ReferenceCellInfo-r4, + UE-Positioning-OTDOA-ReferenceCellInfo-UEB, + UE-Positioning-PositionEstimateInfo, + UE-Positioning-ReportCriteria, + UE-Positioning-ReportingQuantity, + UE-Positioning-ReportingQuantity-v390ext, + UE-Positioning-ReportingQuantity-r4, + UE-Positioning-ResponseTime, + UTRA-CarrierRSSI, + UTRAN-GPS-DriftRate, + UTRAN-GPSReferenceTime, + UTRAN-GPSReferenceTimeResult, + VarianceOfRLC-BufferPayload, + W, + BCC, + BCCH-ModificationInfo, + BCCH-ModificationTime, + BSIC, + CBS-DRX-Level1Information, + CBS-DRX-Level1Information-extension-r6, + CDMA2000-Message, + CDMA2000-MessageList, + CDMA2000-UMTS-Frequency-List, + CellValueTag, + ExpirationTimeFactor, + ExtSIBTypeInfoSchedulingInfo-List, + ExtSIBTypeInfoSchedulingInfo, + FDD-UMTS-Frequency-List, + FrequencyInfoCDMA2000, + GERAN-SystemInfoBlock, + GERAN-SystemInformation, + GSM-BA-Range, + GSM-BA-Range-List, + GSM-Classmark2, + GSM-Classmark3, + GSM-MessageList, + GSM-MS-RadioAccessCapability, + GsmSecurityCapability, + GSM-TargetCellInfoList, + GSM-TargetCellInfo, + IdentificationOfReceivedMessage, + InterRAT-ChangeFailureCause, + GERANIu-MessageList, + GERANIu-RadioAccessCapability, + InterRAT-UE-RadioAccessCapability, + InterRAT-UE-RadioAccessCapabilityList, + InterRAT-UE-RadioAccessCapability-v590ext, + InterRAT-UE-RadioAccessCapability-v690ext, + InterRAT-UE-SecurityCapability, + InterRAT-UE-SecurityCapList, + InterRAT-HO-FailureCause, + MasterInformationBlock, + MasterInformationBlock-v690ext, + MasterInformationBlock-v6b0ext-IEs, + MIB-ValueTag, + NCC, + PLMN-ValueTag, + PredefinedConfigIdentityAndValueTag, + ProtocolErrorInformation, + ReceivedMessageType, + Rplmn-Information, + Rplmn-Information-r4, + SchedulingInformation, + SchedulingInformationSIB, + SchedulingInformationSIBSb, + SegCount, + SegmentIndex, + SFN-Prime, + SIB-Data-fixed, + SIB-Data-variable, + SIBOccurIdentity, + SIBOccurrenceIdentityAndValueTag, + SIBOccurValueTag, + SIB-ReferenceList, + SIBSb-ReferenceList, + SIB-ReferenceListFACH, + SIB-Type, + SIB-TypeAndTag, + SIBSb-TypeAndTag, + SIB-TypeExt, + SibOFF, + SibOFF-List, + SPS-Information-TDD128-r8, + SysInfoType1, + SysInfoType1-v3a0ext-IEs, + SysInfoType2, + SysInfoType3, + SysInfoType3-v4b0ext-IEs, + SysInfoType3-v590ext, + SysInfoType3-v5c0ext-IEs, + SysInfoType3-v670ext, + SysInfoType4, + SysInfoType4-v4b0ext-IEs, + SysInfoType4-v590ext, + SysInfoType4-v5b0ext-IEs, + SysInfoType4-v5c0ext-IEs, + SysInfoType5, + SysInfoType5-v4b0ext-IEs, + SysInfoType5-v590ext-IEs, + SysInfoType5-v650ext-IEs, + SysInfoType5-v680ext-IEs, + SysInfoType5-v690ext-IEs, + SysInfoType5bis, + SysInfoType6, + SysInfoType6-v4b0ext-IEs, + SysInfoType6-v590ext-IEs, + SysInfoType6-v650ext-IEs, + SysInfoType6-v690ext-IEs, + SysInfoType7, + SysInfoType8, + SysInfoType9, + SysInfoType10, + SysInfoType11, + SysInfoType11-v4b0ext-IEs, + SysInfoType11-v590ext-IEs, + SysInfoType11-v690ext-IEs, + SysInfoType11-v6b0ext-IEs, + SysInfoType11bis, + SysInfoType12, + SysInfoType12-v4b0ext-IEs, + SysInfoType12-v590ext-IEs, + SysInfoType12-v690ext-IEs, + SysInfoType12-v6b0ext-IEs, + SysInfoType13, + SysInfoType13-v3a0ext-IEs, + SysInfoType13-v4b0ext-IEs, + SysInfoType13-1, + SysInfoType13-2, + SysInfoType13-3, + SysInfoType13-4, + SysInfoType14, + SysInfoType15, + SysInfoType15-v4b0ext-IEs, + SysInfoType15-1, + SysInfoType15-2, + SysInfoType15-3, + SysInfoType15-4, + SysInfoType15-4-v3a0ext, + SysInfoType15-4-v4b0ext, + SysInfoType15-5, + SysInfoType15-5-v3a0ext, + SysInfoType16, + SysInfoType17, + SysInfoType17-v4b0ext-IEs, + SysInfoType17-v590ext-IEs, + SysInfoType18, + SysInfoType18-v6b0ext, + SysInfoType19, + SysInfoTypeSB1, + SysInfoTypeSB1-v6b0ext, + SysInfoTypeSB2, + SysInfoTypeSB2-v6b0ext, + TDD-UMTS-Frequency-List, + ValueTagInfo, + ANSI-41-GlobalServiceRedirectInfo, + ANSI-41-PrivateNeighbourListInfo, + ANSI-41-RAND-Information, + ANSI-41-UserZoneID-Information, + ANSI-41-NAS-Parameter, + Min-P-REV, + NAS-SystemInformationANSI-41, + NID, + P-REV, + SID, + MBMS-AccessProbabilityFactor, + MBMS-CellGroupIdentity-r6, + MBMS-CommonCCTrChIdentity, + MBMS-CommonPhyChIdentity, + MBMS-CommonRBIdentity, + MBMS-CommonRBInformation-r6, + MBMS-CommonRBInformationList-r6, + MBMS-CommonTrChIdentity, + MBMS-ConnectedModeCountingScope, + MBMS-CurrentCell-SCCPCH-r6, + MBMS-CurrentCell-SCCPCHList-r6, + MBMS-FACHCarryingMTCH-List, + MBMS-JoinedInformation-r6, + MBMS-L1CombiningSchedule-32, + MBMS-L1CombiningSchedule-64, + MBMS-L1CombiningSchedule-128, + MBMS-L1CombiningSchedule-256, + MBMS-L1CombiningSchedule-512, + MBMS-L1CombiningSchedule-1024, + MBMS-L1CombiningSchedule, + MBMS-L1CombiningTransmTimeDiff, + MBMS-L23Configuration, + MBMS-LogicalChIdentity, + MBMS-MCCH-ConfigurationInfo-r6, + MBMS-MICHConfigurationInfo-r6, + MBMS-MICHNotificationIndLength, + MBMS-MICHPowerOffset, + MBMS-ModifedService-r6, + MBMS-ModifedServiceList-r6, + MBMS-MSCH-ConfigurationInfo-r6, + MBMS-MSCHSchedulingInfo, + MBMS-NeighbouringCellSCCPCH-r6, + MBMS-NeighbouringCellSCCPCHList-r6, + MBMS-NI-CountPerFrame, + MBMS-NumberOfNeighbourCells-r6, + MBMS-PFLIndex, + MBMS-PFLInfo, + MBMS-PhyChInformation-r6, + MBMS-PhyChInformationList-r6, + MBMS-PL-ServiceRestrictInfo-r6, + MBMS-PreferredFrequencyList-r6, + MBMS-PTMActivationTime-r6, + MBMS-PTM-RBInformation-C, + MBMS-PTM-RBInformation-CList, + MBMS-PTM-RBInformation-N, + MBMS-PTM-RBInformation-NList, + MBMS-Qoffset, + MBMS-RequiredUEAction-Mod, + MBMS-RequiredUEAction-UMod, + MBMS-SCCPCHIdentity, + MBMS-SCCPCHPwrOffsetDiff, + MBMS-SelectedServiceInfo, + MBMS-SelectedServicesListFull, + MBMS-SelectedServicesListShort, + MBMS-SelectedServicesShort, + MBMS-ServiceAccessInfo-r6, + MBMS-ServiceAccessInfoList-r6, + MBMS-ServiceIdentity-r6, + MBMS-ServiceSchedulingInfo-r6, + MBMS-ServiceSchedulingInfoList-r6, + MBMS-ServiceTransmInfo, + MBMS-ServiceTransmInfoList, + MBMS-SessionIdentity, + MBMS-ShortTransmissionID, + MBMS-SIBType5-SCCPCH-r6, + MBMS-SIBType5-SCCPCHList-r6, + MBMS-SoftComb-TimingOffset, + MBMS-TCTF-Presence, + MBMS-TimersAndCounters-r6, + MBMS-TransmissionIdentity, + MBMS-TranspChInfoForCCTrCh-r6, + MBMS-TranspChInfoForEachCCTrCh-r6, + MBMS-TranspChInfoForEachTrCh-r6, + MBMS-TranspChInfoForTrCh-r6, + MBMS-TrCHInformation-Curr, + MBMS-TrCHInformation-CurrList, + MBMS-TrCHInformation-Neighb, + MBMS-TrCHInformation-NeighbList, + MBMS-TrCHInformation-SIB5, + MBMS-TrCHInformation-SIB5List, + MBMS-UnmodifiedService-r6, + MBMS-UnmodifiedServiceList-r6, + MIMO-Parameters-r7, + MIMO-Parameters-r8, + MIMO-Parameters-r9, + hiPDSCHidentities, + hiPUSCHidentities, + hiRM, + maxAC, + maxAdditionalMeas, + maxASC, + maxASCmap, + maxASCpersist, + maxCCTrCH, + maxCellMeas, + maxCellMeas-1, + maxCNdomains, + maxCPCHsets, + maxDPCH-DLchan, + maxDPDCH-UL, + maxDRACclasses, + maxE-DCHMACdFlow, + maxE-DCHMACdFlow-1, + maxEDCHRL, + maxFACHPCH, + maxFreq, + maxFreqBandsFDD, + maxFreqBandsFDD-ext, + maxFreqBandsTDD, + maxFreqBandsGSM, + maxGERAN-SI, + maxGSMTargetCells, + maxHProcesses, + maxHSDSCHTBIndex, + maxHSDSCHTBIndex-tdd384, + maxHSSCCHs, + maxInterSysMessages, + maxLoCHperRLC, + maxMAC-d-PDUsizes, + maxMBMS-CommonCCTrCh, + maxMBMS-CommonPhyCh, + maxMBMS-CommonRB, + maxMBMS-CommonTrCh, + maxMBMS-Freq, + maxMBMS-L1CP, + maxMBMSservCount, + maxMBMSservModif, + maxMBMSservSched, + maxMBMSservSelect, + maxMBMSservUnmodif, + maxMBMSTransmis, + maxMeasEvent, + maxMeasIntervals, + maxMeasParEvent, + maxNumCDMA2000Freqs, + maxNumGSMFreqRanges, + maxNumE-HICH, + maxNumFDDFreqs, + maxNumTDDFreqs, + maxNoOfMeas, + maxOtherRAT, + maxOtherRAT-16, + maxPage1, + maxPCPCH-APsig, + maxPCPCH-APsubCh, + maxPCPCH-CDsig, + maxPCPCH-CDsubCh, + maxPCPCH-SF, + maxPCPCHs, + maxPDCPAlgoType, + maxPDSCH, + maxPDSCH-TFCIgroups, + maxPRACH, + maxPRACH-FPACH, + maxPredefConfig, + maxPUSCH, + maxQueueIDs, + maxRABsetup, + maxRAT, + maxRB, + maxRBallRABs, + maxRBMuxOptions, + maxRBperRAB, + maxRBperTrCh, + maxReportedGSMCells, + maxRL, + maxRL-1, + maxRLCPDUsizePerLogChan, + maxRFC3095-CID, + maxROHC-PacketSizes-r4, + maxROHC-Profile-r4, + maxSat, + maxSCCPCH, + maxSIB, + maxSIB-FACH, + maxSIBperMsg, + maxSRBsetup, + maxSystemCapability, + maxTF, + maxTF-CPCH, + maxTFC, + maxTFCsub, + maxTFCI-2-Combs, + maxTGPS, + maxTrCH, + maxTrCHpreconf, + maxTS, + maxTS-1, + maxTS-2, + maxTS-LCR, + maxTS-LCR-1, + maxURA, + maxURNTI-Group, + HS-DSCH-DrxCycleFach, + HS-DSCH-DrxBurstFach, + T-321, + RLC-PDU-SizeConstraint, + CS-HSPA-Information, + CellDCHMeasOccasionInfo-TDD128-r9 + FROM UTRAN-RRC-ASN1-Definitions +; + +maxLogCHperTrCH INTEGER ::= 15 + -- This constant is from MCI ASP proposal, but there is no value for it in the proposal. value 8 is for temporary use +maxdlTrCH INTEGER ::= 16 +maxulTrCH INTEGER ::= 16 +maxNumOfSecondFrequency INTEGER ::= 12 +maxPDSCHtimeslot INTEGER ::= 5 + +--************************************************************** +-- +-- AICHInfo +-- When e-AI-Info is present: +-- upon receipt of the access preamble signature corresponding to a PRACH message transmission i.e preambleSignature, the Acquisition Indicators is transmitted on AICH +-- upon receipt of the access preamble signature corresponding to an E-DCH transmission i.e. commonEDCH-PreambleSignature, the Extended Acquisition Indicators is transmitted on AICH. +--************************************************************** + +AICHInfo ::= SEQUENCE { + aichinfo AICH-Info, + dl-TxPower AICH-PowerOffset, + e-AI-Info E-AI-InfoType OPTIONAL -- Rel-8 or later @sic R5-110104 sic@ +} + +---************************************************************** +-- +-- E-AI-InfoType +-- +--************************************************************** +E-AI-InfoType ::= SEQUENCE { + defaultE-DCH-ResourceIndex INTEGER (-1..31), + totalNumberE-DCH INTEGER (1..32) +} + +--************************************************************** +-- +-- DL-TxPower-PCCPCH +--TDD +--************************************************************** + +DL-TxPower-PCCPCH ::= INTEGER (-60..-30 ) + +--************************************************************** +-- +-- AmConfirmationRequest +-- If the noConfirmationRequested option is used, then an RLC-AM-DATA-CNF is not expected from the RLC AM entity. +-- If the confirmationRequested option is used, then the RLC AM entity is being requested to provide an RLC-DATA-CNF primitive containing the same mui value. +-- +--************************************************************** + +AmConfirmationRequest ::= CHOICE { + noConfirmationRequest NULL, + confirmationRequested Mui +} + +--************************************************************** +-- +-- COUNT-I-MSB +-- 28 bits long +-- +--************************************************************** + +COUNT-I-MSB ::= INTEGER (0..268435455 ) + +--************************************************************** +-- +-- CellToBeCreated +-- +--************************************************************** + +CellToBeCreated ::= ENUMERATED { cell-DCH (0), cell-FACH (10) } + +--************************************************************** +-- +-- CellTxPowerLevel +-- The defaultCellTxPowerLvl is a default setting and is used for the most signalling tests. The real total cell DL Tx power level equals to the sum of the DL Tx power of the individual physical channels configured. +-- The totalCellTxPowerLvl applies to e.g. the idle mode tests in a non-default multi-cell radio environment. +-- +--************************************************************** + +CellTxPowerLevel ::= CHOICE +{ + defaultCellTxPowerLvl NULL, + totalCellTxPowerLvl DL-TxPower +} + +--************************************************************** +-- +-- CfnTgtSfnFrameOffset +-- 1. The observedValue is provided if the UE reads SFN when measuring "Cell synchronisation information" and sends it to the SS in MEASUREMENT REPORT message. The OFF value in IE COUNT-C-SFN frame difference is applied to the observedValue. +-- 2. If the synchronisation between the target cell and the reference cell is calculated the calculatedAbsoluteValue is applied. Depending upon how to interpret SfnOffset two valid calculations exist. +-- 2.1 If SfnOffset is interpreted as the frames lagging behind: +-- calculated-sfnLagging = (((4096 * 38400) + SfnOffset- Ref * 38400 +TCell-Ref + DOFF*512 - (SfnOffset-Tgt * 38400 + TCell-Tgt)) mod (256 * 38400)) / 38400 +-- 2.2 If SfnOffset is interpreted as the frames in advance: +-- calculated-sfnInAdvance = (((4096 + SfnOffset-Tgt - SfnOffset- Ref) * 38400 +TCell-Ref + DOFF*512 - TCell-Tgt) mod (256 * 38400)) / 38400 +-- The formula can be further simplified in the default condition if SfnOffset- Ref and TCell-Ref are equal to 0: +-- calculated-sfnLagging = (((4096 * 38400) + DOFF*512 - (SfnOffset-Tgt * 38400 + TCell-Tgt)) mod (256 * 38400)) / 38400 +-- calculated-sfnInAdvance = ((DOFF*512 + SfnOffset-Tgt * 38400 - TCell-Tgt) Mod (256 * 38400)) / 38400 +-- calculated-sfnInAdvance = (calculated-sfnLagging + 2* SfnOffset-Tgt) mod 256 +-- calculated-sfnLagging = (calculated-sfnInAdvance + (4096 - SfnOffset-Tgt) * 2) mod 256 +-- The TTCN provides calculated-sfnLagging. +-- +--************************************************************** + +CfnTgtSfnFrameOffset ::= SEQUENCE { + referenceCellId INTEGER (0..63), + cfnFrameOffset CHOICE { + observed INTEGER (0..255), + calculated INTEGER (0..255) } +} + +--************************************************************** +-- +-- CiphActivationInfo +-- DL or UL ciphering activation infoIf RB is omitted in rB-UL-CiphActivationTimeInfo the SS takes no action on this RB and the ciphering configuration keeps unchanged on this RB. CipheringModeCommand = dummy NULL means no ciphering. +-- +--************************************************************** + +CiphActivationInfo ::= CHOICE { + cipheringModeInfo CipheringModeInfo, + rb-UL-CipheringActivationTimeInfo RB-ActivationTimeInfoList, + cipheringModeInfo-r7 CipheringModeInfo-r7 +} + +--************************************************************** +-- +-- CmacConfigReq-FDD +-- To request to configure MAC +-- The IE associatedPhychConfigToFollow should be set to TRUE when there is a associated physical channel configuration to follow (e.g configuration of PICH or MICH). +-- The implementation of the IE "associatedPhychConfigToFollow" can be left to the SS either to wait for the associated physical channel before MAC is configured or to continue the configuration of MAC without waiting for the associated physical channel. +-- If Dual Cell is configured, IE servingAndSecondaryCellActivation is included. +-- Presence of tSN-FieldExtension indicates that the TSN field extension is used as defined in TS 25.321[17]; the absence indicates that 6 bits TSN is used. For 4C-HSDPA tSN-FieldExtension is set to TRUE. +-- +--************************************************************** + +CmacConfigReq-FDD ::= SEQUENCE { + activationTime SS-ActivationTime, + uE-Info UE-Info, + trCHInfo TrCHInfo, + trCH-LogCHMapping TrCH-LogCHMappingList1, + associatedPhychConfigToFollow SEQUENCE (SIZE(1..4)) OF INTEGER OPTIONAL, + servingAndSecondaryCellActivation ServingAndSecondaryCellActivation-Type OPTIONAL, -- for Dual Cell Rel-8 or later @sic R5-103863 sic@ + tSN-FieldExtension BOOLEAN DEFAULT FALSE, -- Rel-9 or later + relAspTypeExtension CmacConfigReq-r10OrLaterExtensionType OPTIONAL -- Rel-10 or later @sic R5-130613 R5-134957 sic@ +} + +--************************************************************** +-- +-- CmacConfigReq-TDD +-- To request to configure MAC +-- +--************************************************************** + +CmacConfigReq-TDD ::= SEQUENCE { + activationTime SS-ActivationTime, + uE-Info UE-Info, + trCHInfo TrCHInfo-TDD, + trCH-LogCHMapping TrCH-LogCHMappingList1-TDD, -- @sic R5-134957 R5w130320: TDD TTCN-2/3 differences sic@ + associatedPhychConfigToFollow SEQUENCE (SIZE(1..4)) OF INTEGER OPTIONAL, + tSN-FieldExtension BOOLEAN DEFAULT FALSE, -- Rel-9 or later @sic R5-134957 sic@ + relAspTypeExtension SEQUENCE{} OPTIONAL -- Rel-10 or later @sic R5-134957 sic@ +} + +--************************************************************** +-- +-- CmacPagingConfigReq +-- +--************************************************************** + +CmacPagingConfigReq ::= SEQUENCE { + pI-BitMapInfo CHOICE { + e18 BIT STRING (SIZE (18)), + e36 BIT STRING (SIZE (36)), + e72 BIT STRING (SIZE (72)), + e144 BIT STRING (SIZE (144))}, + dRX-CycleLength INTEGER (3..9), + iMSI IMSI-GSM-MAP, + t-pich-T-sccpch BOOLEAN -- T-pich > T-sccpch then FALSE +} + +--************************************************************** +-- +-- CmacPagingConfigReq-TDD +-- +--************************************************************** + +CmacPagingConfigReq-TDD ::= SEQUENCE { + pI-BitMapInfo CHOICE { + two-PICH-frame Two-PICH-pI-BitmapInfo, + four-PICH-frame Four-PICH-pI-BitmapInfo + }, + dRX-CycleLength INTEGER (3..9), + iMSI IMSI-GSM-MAP, + t-pich-T-sccpch BOOLEAN -- T-pich > T-sccpch then FALSE +} + +Two-PICH-pI-BitmapInfo ::= CHOICE { + e44 BIT STRING (SIZE (44)), + e88 BIT STRING (SIZE (88)), + e176 BIT STRING (SIZE (176)) +} + +Four-PICH-pI-BitmapInfo ::= CHOICE { + e88 BIT STRING (SIZE (88)), + e176 BIT STRING (SIZE (176)), + e352 BIT STRING (SIZE (352)) +} +--************************************************************** +-- +-- CmacSysinfoConfigReq +-- if bcch-ModificationTime = OMIT SS shall modify the Sysinfo immediately +-- +--************************************************************** + +CmacSysinfoConfigReq ::= SEQUENCE { + sg-REP INTEGER (2..12), + -- Repetition period is the sg-REP-th power of 2. + sg-POS INTEGER (0..2047), + -- The position of each segment is 2 * sg-POS. + bcch-ModificationTime BCCH-ModificationTime OPTIONAL +} + +--************************************************************** +-- +-- CommonOrDedicatedTFS +-- Transport Format Set +-- +--************************************************************** + +CommonOrDedicatedTFS ::= SEQUENCE { + tti CHOICE { + tti10 CommonOrDedicatedTF-InfoList, + tti20 CommonOrDedicatedTF-InfoList, + tti40 CommonOrDedicatedTF-InfoList, + tti80 CommonOrDedicatedTF-InfoList, + dynamic CommonOrDedicatedTF-InfoList-DynamicTTI + }, + semistaticTF-Information SemistaticTF-Information +} + +--************************************************************** +-- +-- CommonOrDedicatedTFS-TDD +-- Transport Format Set +-- CommonOrDedicatedTFS in TTCN-2 +-- +--************************************************************** + +CommonOrDedicatedTFS-TDD ::= SEQUENCE { + tfsMode CHOICE { + dedicatedTransChTFS DedicatedTransChTFS, + commonTransChTFS CommonTransChTFS, + commonTransChTFS-LCR CommonTransChTFS-LCR + } +} + +--************************************************************** +-- +-- CommonOrDedicatedTF-Info +-- Transport Format Set +-- +--************************************************************** + +CommonOrDedicatedTF-Info ::= SEQUENCE { + tb-Size INTEGER (0..5035), + numberOfTbSizeList SEQUENCE (SIZE (1..maxTF)) OF NumberOfTransportBlocks, + logicalChannelList SS-LogicalChannelList +} + +--************************************************************** +-- +-- CommonOrDedicatedTF-InfoList +-- Transport Format Set +-- +--************************************************************** + +CommonOrDedicatedTF-InfoList ::= SEQUENCE (SIZE (1..maxTF)) OF CommonOrDedicatedTF-Info + +--************************************************************** +-- +-- CommonOrDedicatedTF-InfoList-DynamicTTI +-- +--************************************************************** + +CommonOrDedicatedTF-InfoList-DynamicTTI ::= SEQUENCE +{ + tb-Size INTEGER (0..5035), + numberOfTbSizeList SEQUENCE (SIZE (1..maxTF)) OF NumberOfTransportBlocks, + logicalChannelList SS-LogicalChannelList +} + +--************************************************************** +-- +-- CphyRlModifyReq-FDD +-- +--************************************************************** + +CphyRlModifyReq-FDD ::= SEQUENCE { + activationTime SS-ActivationTime, + physicalChannelInfo + CHOICE { + dpch-CompressedModeStatusInfo DPCH-CompressedModeStatusInfo, + secondaryCCPCHInfo SecondaryCCPCHInfo-FDD, + pRACHInfo PRACHInfo-FDD, + dPCHInfo DPCHInfo-FDD, + dPCHInfo-r5 DPCHInfo-r5OrLater-FDD, -- Rel-5 or later + hS-PDSCHInfo HS-PDSCHInfo-r5OrLater-FDD, -- Rel-5 or later + e-DPCHInfo SS-E-DPCH-Info-r6OrLater, -- Rel-6 or later + e-AGCHInfo SS-E-AGCH-Info-FDD, -- Rel-6 or later + e-HICHInfo SS-E-HICH-Info, -- Rel-6 or later + e-RGCHInfo SS-E-RGCH-Info, -- Rel-6 or later + mBMS-MICHInfo SS-MBMS-MICHConfigurationInfo-r6, -- Rel-6 or later @sic R5-112477 sic@ + aICHInfo AICHInfo, + relAspTypeExtension SEQUENCE{} -- Rel-10 or later @sic R5-130613 R5-134957 sic@ + }, + trchConfigToFollow BOOLEAN DEFAULT TRUE, + relAspTypeExtension SEQUENCE{} OPTIONAL -- Rel-10 or later @sic R5-130613 R5-134957 sic@ +} + +--************************************************************** +-- +-- CphyRlModifyReq-TDD +-- To request to Modify the Radio Link +-- +--************************************************************** + +CphyRlModifyReq-TDD ::= SEQUENCE { + activationTime SS-ActivationTime, + physicalChannelInfo CHOICE { + secondaryCCPCHInfo SecondaryCCPCHInfo-TDD, + pRACHInfo PRACHInfo-TDD, + dPCHInfo DPCHInfo-TDD, + dPCHInfo-r5 DPCHInfo-r5OrLater-TDD, -- Rel-5 or later + hS-PDSCHInfo HS-PDSCHInfo-r5OrLater-TDD, -- Rel-5 or later + e-DCHInfo SS-E-DCH-Info-r7, + e-DCH-Non-ScheduledTransGrantInfo SS-Non-ScheduledTransGrantInfoTDD, + e-AGCHInfo SS-E-AGCH-Info-TDD, -- Rel-7 or later + e-HICHInfo SS-E-HICH-Info-TDD, -- Rel-7 or later + mBMS-MICHInfo SS-MBMS-MICHConfigurationInfo-r6, -- Rel-6 or later @sic R5w140013 sic@ + relAspTypeExtension SEQUENCE{} -- Rel-10 or later @sic R5-134957 sic@ + }, + trchConfigToFollow BOOLEAN DEFAULT TRUE, + relAspTypeExtension SEQUENCE{} OPTIONAL -- Rel-10 or later @sic R5-134957 sic@ +} + +--************************************************************** +-- +-- CphyRlSetupReq-FDD +-- To request to setup the Radio Link +-- +--************************************************************** + +CphyRlSetupReq-FDD ::= SEQUENCE { + physicalChannelInfo CHOICE { + primaryCPICHInfo PrimaryCPICHInfo, + secondaryCPICHInfo SecondaryCPICHInfo, + primarySCHInfo PrimarySCHInfo, + secondarySCHInfo SecondarySCHInfo, + primaryCCPCHInfo PrimaryCCPCHInfo-FDD, + secondaryCCPCHInfo SecondaryCCPCHInfo-FDD, + pRACHInfo PRACHInfo-FDD, + pICHInfo PICHInfo-FDD, + aICHInfo AICHInfo, + dPCHInfo DPCHInfo-FDD, + pDSCHInfo PDSCHInfo-FDD, + dPCHInfo-r5 DPCHInfo-r5OrLater-FDD, -- Rel-5 or later + hS-PDSCHInfo HS-PDSCHInfo-r5OrLater-FDD, -- Rel-5 or later + e-DPCHInfo SS-E-DPCH-Info-r6OrLater, -- Rel-6 or later + e-AGCHInfo SS-E-AGCH-Info-FDD, -- Rel-6 or later + e-HICHInfo SS-E-HICH-Info, -- Rel-6 or later + e-RGCHInfo SS-E-RGCH-Info, -- Rel-6 or later + mBMS-MICHInfo SS-MBMS-MICHConfigurationInfo-r6, -- Rel-6 or later @sic R5-112477 sic@ + relAspTypeExtension SEQUENCE{} -- Rel-10 or later @sic R5-130613 R5-134957 sic@ + }, + activationTime SS-ActivationTime, + trchConfigToFollow BOOLEAN DEFAULT TRUE, + relAspTypeExtension SEQUENCE{} OPTIONAL -- Rel-10 or later @sic R5-130613 R5-134957 sic@ +} + +--************************************************************** +-- +-- CphyRlSetupReq-TDD +-- To request to setup the Radio Link +-- +--************************************************************** + +CphyRlSetupReq-TDD ::= SEQUENCE { + physicalChannelInfo CHOICE { + primaryCCPCHInfo PrimaryCCPCHInfo-TDD, + secondaryCCPCHInfo SecondaryCCPCHInfo-TDD, + pRACHInfo PRACHInfo-TDD, + pICHInfo PICHInfo-TDD, + dPCHInfo DPCHInfo-TDD, + pDSCHInfo PDSCHInfo-TDD, + pUSCHInfo PUSCHInfo, + dPCHInfo-r5 DPCHInfo-r5OrLater-TDD, -- Rel-5 or later + hS-PDSCHInfo HS-PDSCHInfo-r5OrLater-TDD, -- Rel-5 or later + e-DCHInfo SS-E-DCH-Info-r7, + e-DCH-Non-ScheduledTransGrantInfo SS-Non-ScheduledTransGrantInfoTDD, + e-AGCHInfo SS-E-AGCH-Info-TDD, -- Rel-7 or later + e-HICHInfo SS-E-HICH-Info-TDD, -- Rel-7 or later + mBMS-MICHInfo SS-MBMS-MICHConfigurationInfo-r6, -- Rel-6 or later @sic R5w140013 sic@ + relAspTypeExtension SEQUENCE{} -- Rel-10 or later @sic R5-134957 sic@ + }, + activationTime SS-ActivationTime OPTIONAL, + trchConfigToFollow BOOLEAN DEFAULT TRUE, + relAspTypeExtension SEQUENCE{} OPTIONAL -- Rel-10 or later @sic R5-134957 sic@ +} + +--************************************************************** +-- +-- CphyTrchConfigReq +-- To request to configure the transport channel. +-- The same TFCS information should be provided to the PHY and MAC layers at all times. When a CPHY-TrCH-Config-REQ is used to configure the PHY layer, a corresponding CMAC-Config-REQ should be sent to the MAC layer to ensure that the configuration is consistent. +-- HS-DSCH MAC-d flows or E-DCH MAC-d flows shall be separately configured whilst the ulconnectedTrCHList, ulTFCS, dlconnectedTrCHList and dlTFCS are omitted. +-- For configuring MBMS if the default TFCS used in the RRC message the dLTFTS shall use the "complete" CHOICE in "ExplicitTFCS-Configuration " IE and the TFCS configuration shall be in line with clause 14.10.1.1/14.10.1.2 of TS 25.331. +-- +--************************************************************** + +CphyTrchConfigReq ::= SEQUENCE { + activationTime SS-ActivationTime, + ulconnectedTrCHList SEQUENCE (SIZE (0..maxTrCH)) OF SEQUENCE { + trchid TransportChannelIdentity, + ul-TransportChannelType SS-UL-TransportChannelType, + transportChannelInfo CommonOrDedicatedTFS + } OPTIONAL, + ulTFCS TFCS OPTIONAL, + dlconnectedTrCHList SEQUENCE (SIZE (0..maxTrCH)) OF SEQUENCE { + trchid TransportChannelIdentity, + dl-TransportChannelType SS-DL-TransportChannelType, + transportChannelInfo CommonOrDedicatedTFS + } OPTIONAL , + dlTFCS TFCS OPTIONAL, + hsDSCHMacdFlows HS-DSCHMACdFlows OPTIONAL, -- Rel-5 or later + e-DCHMacdFlows E-DCHMACdFlows OPTIONAL, -- Rel-6 or later + ehs-DSCH-Flows EHS-DSCH-Flows OPTIONAL, -- Rel-7 or later + ehs-DSCH-CommonFlows EHS-DSCH-CommonFlows OPTIONAL, -- Rel-7 or later + e-DCHMacd-CommonFlows CommonE-DCHMACdFlows OPTIONAL, -- Rel-8 or later + ehs-DSCH-Flows-r9 EHS-DSCH-Flows-r9 OPTIONAL, -- Rel-9 or later @sic R5s110175 sic@ + relAspTypeExtension SEQUENCE{} OPTIONAL -- Rel-10 or later @sic R5-130613 R5-134957 sic@ +} + +--************************************************************** +-- +-- CphyTrchConfigReq-TDD +-- To request to configure the transport channel. +-- The same TFCS information should be provided to the PHY and MAC layers at all times. When a CPHY-TrCH-Config-REQ is used to configure the PHY layer, a corresponding CMAC-Config-REQ should be sent to the MAC layer to ensure that the configuration is consistent. +-- HS-DSCH MAC-d flows or E-DCH MAC-d flows shall be separately configured whilst the ulconnectedTrCHList, ulTFCS, dlconnectedTrCHList and dlTFCS are omitted. +-- For configuring MBMS if the default TFCS used in the RRC message the dLTFTS shall use the "complete" CHOICE in "ExplicitTFCS-Configuration " IE and the TFCS configuration shall be in line with clause 14.10.1.1/14.10.1.2 of TS 25.331. +-- +--************************************************************** + +CphyTrchConfigReq-TDD ::= SEQUENCE { + activationTime SS-ActivationTime, + ulconnectedTrCHList SEQUENCE (SIZE (0..maxTrCH)) OF SEQUENCE { + trchid TransportChannelIdentity, + ul-TransportChannelType SS-UL-TransportChannelType-TDD, -- @sic R5-134957 R5w130320: TDD TTCN-2/3 differences sic@ + transportChannelInfo CommonOrDedicatedTFS-TDD + } OPTIONAL, + ulTFCS TFCS OPTIONAL, + dlconnectedTrCHList SEQUENCE (SIZE (0..maxTrCH)) OF SEQUENCE { + trchid TransportChannelIdentity, + dl-TransportChannelType SS-DL-TransportChannelType, + transportChannelInfo CommonOrDedicatedTFS-TDD + } OPTIONAL , + dlTFCS TFCS OPTIONAL, + hsDSCHMacdFlows HS-DSCHMACdFlows-TDD OPTIONAL, -- Rel-5 or later + e-DCHMacdFlows E-DCHMACdFlows-TDD OPTIONAL, -- Rel-6 or later + ehs-DSCH-Flows EHS-DSCH-Flows OPTIONAL, -- Rel-7 or later + ehs-DSCH-CommonFlows EHS-DSCH-CommonFlows OPTIONAL, -- Rel-7 or later + e-DCHMacd-CommonFlows CommonE-DCHMACdFlows-TDD OPTIONAL, -- Rel-8 or later + ehs-DSCH-Flows-r9 EHS-DSCH-Flows-r9 OPTIONAL, -- Rel-9 or later @sic R5-134957 R5w130320 sic@ + relAspTypeExtension SEQUENCE {} OPTIONAL -- Rel-10 or later @sic R5-134957 sic@ + +} + +--************************************************************** +-- +-- CrlcConfigReq +-- To request to setup, re-configure or release RLC entityThe Stop parameter indicates that the RLC entity shall not transmit or receive RLC PDUs. The Continue parameter indicates that the RLC entity shall continue transmission and reception of RLC PDUs. When the RLC entity is stopped, the RLC timers are not affected. Triggered polls and status transmissions are delayed until the RLC entity is continued. +-- +--************************************************************** + +CrlcConfigReq ::= CHOICE { + setup RBInfo, + reconfigure RBInfo, + release NULL, + sS-stop NULL, + sS-continue NULL +} + +--************************************************************** +-- +-- CrlcConfigReq-TDD +-- To request to setup, re-configure or release RLC entity The Stop parameter indicates that the RLC entity shall not transmit or receive RLC PDUs. The Continue parameter indicates that the RLC entity shall continue transmission and reception of RLC PDUs. When the RLC entity is stopped, the RLC timers are not affected. Triggered polls and status transmissions are delayed until the RLC entity is continued. +-- +--************************************************************** + +CrlcConfigReq-TDD ::= CHOICE { + setup RBInfo-TDD, + reconfigure RBInfo-TDD, + release NULL, + sS-stop NULL, + sS-continue NULL +} + +--************************************************************** +-- +-- DL-DPCHInfo-FDD +-- +--************************************************************** + +DL-DPCHInfo-FDD ::= SEQUENCE { + dl-CommonInformation DL-CommonInformation, + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL, + rl-Information RL-Information-FDD +} + +--************************************************************** +-- +-- DL-DPCHInfo-TDD +-- +--************************************************************** + +DL-DPCHInfo-TDD ::= SEQUENCE { + dl-CommonInformation DL-CommonInformation-r4, + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r4, + powerOffsetOfTFCI-PO1 INTEGER (0..24), + powerOffsetOfTPC-PO2 INTEGER (0..24), --@sic R5w140013 sic@ + dl-TxPower DL-TxPower, + dl-TxPowerMax DL-TxPower, + dl-TxPowerMin DL-TxPower, + dL-TimeslotISCPInfoLCR TimeslotListWithISCP-LCR +} + +--************************************************************** +-- +-- TimeslotListWithISCP-LCR +-- +--************************************************************** +TimeslotListWithISCP-LCR ::= SEQUENCE (SIZE (1..maxTS ) ) OF TimeslotWithISCP-LCR + +--************************************************************** +-- +-- TimeslotWithISCP-LCR +-- +--************************************************************** +TimeslotWithISCP-LCR::= SEQUENCE { + timeslot TimeslotNumber-LCR-r4, + timeslotISCP TimeslotISCP +} + +--************************************************************** +-- +-- DL-DPCHInfo-r5-FDD +-- Applicable Rel-5 or later +-- +--************************************************************** + +DL-DPCHInfo-r5-FDD ::= SEQUENCE { + dl-CommonInformation DL-CommonInformation-r5, + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r5, + rl-Information RL-Information-FDD +} + +--************************************************************** +-- +-- DL-DPCHInfo-r5-TDD +-- Applicable Rel-5 or later +-- +--************************************************************** + +DL-DPCHInfo-r5-TDD ::= SEQUENCE { + dl-CommonInformation DL-CommonInformation-r5, + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r5, + powerOffsetOfTFCI-PO1 INTEGER (0..24), + powerOffsetOfTPC-PO2 INTEGER (0..24), + dl-TxPower DL-TxPower, + dl-TxPowerMax DL-TxPower, + dl-TxPowerMin DL-TxPower, + dL-TimeslotISCPInfoLCR TimeslotListWithISCP-LCR +} + +--************************************************************** +-- +-- DL-DPCHInfo-r6-FDD +-- Applicable Rel-6 or later +-- +--************************************************************** + +DL-DPCHInfo-r6-FDD ::= SEQUENCE { + dl-CommonInformation DL-CommonInformation-r6, + dl-Dpch-InfoPerRL CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r6, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r6 + }, + rl-Information RL-Information-FDD +} + +--************************************************************** +-- +-- DL-DPCHInfo-r6-TDD +-- Applicable Rel-6 or later +-- +--************************************************************** + +DL-DPCHInfo-r6-TDD ::= SEQUENCE { + dl-CommonInformation DL-CommonInformation-r6, + dl-Dpch-InfoPerRL CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r6, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r6 + }, + rl-Information RL-Information-TDD +} + +--************************************************************** +-- +-- DL-DPCHInfo-r7-FDD +-- Applicable Rel-7 or later +-- +--************************************************************** + +DL-DPCHInfo-r7-FDD ::= SEQUENCE { + dl-CommonInformation DL-CommonInformation-r7, + dl-Dpch-InfoPerRL CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r7, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7 + }, + rl-Information RL-Information-FDD +} + +--************************************************************** +-- +-- DL-DPCHInfo-r7-TDD +-- Applicable Rel-7 or later +-- +--************************************************************** + +DL-DPCHInfo-r7-TDD ::= SEQUENCE { + dl-CommonInformation DL-CommonInformation-r7, + dl-Dpch-InfoPerRL CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r7, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7 + }, + rl-Information RL-Information-TDD +} + +--************************************************************** +-- +-- DL-DPCHInfo-r8-FDD +-- Applicable Rel-8 or later +-- +--************************************************************** + +DL-DPCHInfo-r8-FDD ::= SEQUENCE { + dl-CommonInformation DL-CommonInformation-r8, + dl-Dpch-InfoPerRL CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r7, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7 + }, + rl-Information RL-Information-FDD +} + +--************************************************************** +-- +-- DL-DPCHInfo-r8-TDD +-- Applicable Rel-8 or later +-- +--************************************************************** + +DL-DPCHInfo-r8-TDD ::= SEQUENCE { + dl-CommonInformation DL-CommonInformation-r8, + dl-Dpch-InfoPerRL CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r7, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7 + }, + rl-Information RL-Information-TDD +} + +--************************************************************** +-- +-- DL-DPCHInfo-r10-FDD +-- Applicable Rel-10 or later +-- +--************************************************************** +DL-DPCHInfo-r10-FDD ::= SEQUENCE { + dl-CommonInformation DL-CommonInformation-r10, + dl-Dpch-InfoPerRL CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r7, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7 + }, + rl-Information RL-Information-FDD +} + +--************************************************************** +-- +-- DL-DPCHInfo-r10-TDD +-- Applicable Rel-10 or later +-- +--************************************************************** +DL-DPCHInfo-r10-TDD ::= SEQUENCE { + dl-CommonInformation DL-CommonInformation-r10, + dl-Dpch-InfoPerRL CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r7, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7 + }, + rl-Information RL-Information-TDD +} + +--************************************************************** +-- +-- DL-DPCHInfo-r11-FDD +-- Applicable Rel-11 or later +-- +--************************************************************** +DL-DPCHInfo-r11-FDD ::= SEQUENCE { + dl-CommonInformation DL-CommonInformation-r11, + dl-Dpch-InfoPerRL CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r7, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7 + }, + rl-Information RL-Information-FDD +} + +--************************************************************** +-- +-- DL-DPCHInfo-r11-TDD +-- Applicable Rel-11 or later +-- +--************************************************************** +DL-DPCHInfo-r11-TDD ::= SEQUENCE { + dl-CommonInformation DL-CommonInformation-r11, + dl-Dpch-InfoPerRL CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r7, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7 + }, + rl-Information RL-Information-TDD +} + +--************************************************************** +-- +-- DL-TxPower +-- Downlink Tx Power relative to PCPICH +-- +--************************************************************** + +DL-TxPower ::= INTEGER (-35..15) + +--************************************************************** +-- +-- DwPCH-Power +-- Downlink DwPCH Tx Power,DwPCH-power = power * 10 +-- Unit dBm, Range -15dBm .. +40 dBm, Step +0.1dB +-- TDD +--************************************************************** + +DwPCH-Power ::= INTEGER (-150..400) + +--************************************************************** +-- +-- DL-TxPower-PCPICH +-- Absolute Tx Power of PCPICH +-- +--************************************************************** + +DL-TxPower-PCPICH ::= INTEGER (-60..-30) + +--************************************************************** +-- +-- DPCHInfo-FDD +-- The range for powerOffsetOfTPC-PO2 and powerOffsetOfTFCI-PO1 and powerOffsetOfPILOT-PO3 is 0 dB to 6 dB, 0,25 dB per step. +-- +--************************************************************** + +DPCHInfo-FDD ::= SEQUENCE { + ul-DPCHInfo UL-DPCH-Info OPTIONAL, + dl-DPCHInfo DL-DPCHInfo-FDD OPTIONAL +} + +--************************************************************** +-- +-- DPCHInfo-TDD +-- +--************************************************************** + +DPCHInfo-TDD ::= SEQUENCE { + ul-DPCHInfo UL-DPCHInfo-TDD OPTIONAL, + dl-DPCHInfo DL-DPCHInfo-TDD OPTIONAL +} + +--************************************************************** +-- +-- UL-DPCHInfo-TDD +-- +--************************************************************** + +UL-DPCHInfo-TDD ::= SEQUENCE { + ul-DPCHInfo UL-DPCH-Info-r4 +} + +--************************************************************** +-- +-- DPCHInfo-r5OrLater-FDD +-- Applicable Rel-5 or later +-- At least one of the first two fields ul-DPCHInfo or dl-DPCHInfo shall be present. +-- Presence of hs-DPCCHInd means that the HS-DPCCH shall be configured in the uplink DPCH. If hs-DPCCHInd is absent no HS-DPCCH shall be configured in the uplink DPCH, or the configured HS-DPCCH shall be removed in the modify ASP. In the active set which has radio links from more than one cell the HS-DPCCH is configured only in the HS-DSCH serving cell. +-- Three combinations are valid: ul-DPCH-Info only, dl-DPCHInfo only and ul-DPCH-Info + hs-DPCCHInd. +-- Presence of ss-UL-DPCCH-DRX-Info if UL DPCH being configured and presence of ss-DRX-Info if DL F-DPCH being configured indicates that UL-DTX is enabled. +-- ss-DRX-Info is provided as F-DPCH TPC commands need not be transmitted during gaps due to UL-DPCCH DTX (3GPP TS 25.214 [12], subclause 5.1.2.2.1). +-- ul-DPCH-TimingOffset is the timing offset relative to P-CCPCH, it is provided in Rel-7 only when Enhanced Cell FACH Downlink (common-HS-PDSCH-Info) is configured. +--************************************************************** + +DPCHInfo-r5OrLater-FDD ::= CHOICE { + r5 SEQUENCE { + ul-DPCHInfo UL-DPCH-Info-r5 OPTIONAL, + dl-DPCHInfo DL-DPCHInfo-r5-FDD OPTIONAL, + hs-DPCCHInd HS-DPCCHInfo OPTIONAL + }, + r6 SEQUENCE { + ul-DPCHInfo UL-DPCH-Info-r6 OPTIONAL, + dl-DPCHInfo DL-DPCHInfo-r6-FDD OPTIONAL, + hs-DPCCHInd HS-DPCCHInfo OPTIONAL + }, + r7 SEQUENCE { + ul-DPCHInfo UL-DPCH-Info-r7 OPTIONAL, + ul-DPCH-TimingOffset INTEGER (0..38399) OPTIONAL, + -- timing offset relative to P-CCPCH + -- applicable to Rel-7 when Enhanced Cell FACH DL is configured + -- @sic R5-120613 sic@ + dl-DPCHInfo DL-DPCHInfo-r7-FDD OPTIONAL, + hs-DPCCHInd HS-DPCCHInfo OPTIONAL, + ss-UL-DPCCH-DRX-Info SS-UL-DPCCH-DRX-Info OPTIONAL, + ss-DRX-Info DTX-Info OPTIONAL + + }, + r8 SEQUENCE { + ul-DPCHInfo UL-DPCH-Info-r7 OPTIONAL, + dl-DPCHInfo DL-DPCHInfo-r8-FDD OPTIONAL, + hs-DPCCHInd HS-DPCCHInfo-r8 OPTIONAL, -- @sic R5-112477 sic@ + ss-UL-DPCCH-DRX-Info SS-UL-DPCCH-DRX-Info OPTIONAL, + ss-DRX-Info DTX-Info OPTIONAL + }, + relAspTypeExtension DPCHInfo-r10OrLaterExtensionType-FDD + -- Rel-10 or later @sic R5-130613 R5-134957 sic@ +} + +--************************************************************** +-- +-- DPCHInfo-r10OrLaterExtensionType-FDD +-- Applicable Rel-10 or later +-- @sic R5-130613 R5-133682 sic@ +-- +--************************************************************** +DPCHInfo-r10OrLaterExtensionType-FDD ::= CHOICE { + rel10-AspExt SEQUENCE { + ul-DPCHInfo UL-DPCH-Info-r7 OPTIONAL, + dl-DPCHInfo DL-DPCHInfo-r10-FDD OPTIONAL, + hs-DPCCHInd HS-DPCCHInfo-r10 OPTIONAL, + ss-UL-DPCCH-DRX-Info SS-UL-DPCCH-DRX-Info OPTIONAL, + ss-DRX-Info DTX-Info OPTIONAL + }, + rel11-AspExt SEQUENCE { + ul-DPCHInfo UL-DPCH-Info-r11 OPTIONAL, + dl-DPCHInfo DL-DPCHInfo-r11-FDD OPTIONAL, + hs-DPCCHInd HS-DPCCHInfo-r10 OPTIONAL, + ss-UL-DPCCH-DRX-Info SS-UL-DPCCH-DRX-Info OPTIONAL, + ss-DRX-Info DTX-Info OPTIONAL + } +} + +--************************************************************** +-- +-- DPCHInfo-r5OrLater-TDD +-- Applicable Rel-5 or later +-- At least one of the first two fields ul-DPCHInfo or dl-DPCHInfo shall be present. +-- Presence of hs-DPCCHInd means that the HS-DPCCH shall be configured in the uplink DPCH. If hs-DPCCHInd is absent no HS-DPCCH shall be configured in the uplink DPCH, or the configured HS-DPCCH shall be removed in the modify ASP. In the active set which has radio links from more than one cell the HS-DPCCH is configured only in the HS-DSCH serving cell. +-- Three combinations are valid: ul-DPCH-Info only, dl-DPCHInfo only and ul-DPCH-Info + hs-DPCCHInd. +-- +--************************************************************** + +DPCHInfo-r5OrLater-TDD ::= CHOICE { + r5 SEQUENCE { + ul-DPCHInfo UL-DPCH-Info-r5 OPTIONAL, + dl-DPCHInfo DL-DPCHInfo-r5-TDD OPTIONAL, + hs-DPCCHInd HS-DPCCHInfo OPTIONAL + }, + r6 SEQUENCE { + ul-DPCHInfo UL-DPCH-Info-r6 OPTIONAL, + dl-DPCHInfo DL-DPCHInfo-r6-TDD OPTIONAL, + hs-DPCCHInd HS-DPCCHInfo OPTIONAL + }, + r7 SEQUENCE { + ul-DPCHInfo UL-DPCH-Info-r7 OPTIONAL, + dl-DPCHInfo DL-DPCHInfo-r7-TDD OPTIONAL, + hs-DPCCHInd HS-DPCCHInfo OPTIONAL, + ss-UL-DPCCH-DRX-Info SS-UL-DPCCH-DRX-Info OPTIONAL, + ss-DRX-Info DTX-Info OPTIONAL + + }, + r8 SEQUENCE { + ul-DPCHInfo UL-DPCH-Info-r7 OPTIONAL, + dl-DPCHInfo DL-DPCHInfo-r8-TDD OPTIONAL, + hs-DPCCHInd HS-DPCCHInfo-r8 OPTIONAL, -- @sic R5-112477 sic@ + ss-UL-DPCCH-DRX-Info SS-UL-DPCCH-DRX-Info OPTIONAL, + ss-DRX-Info DTX-Info OPTIONAL + }, + relAspTypeExtension DPCHInfo-r10OrLaterExtensionType-TDD +} + +--************************************************************** +-- +-- DPCHInfo-r10OrLaterExtensionType-TDD +-- Applicable Rel-10 or later +-- @sic R5-130613 R5-133682 sic@ +-- +--************************************************************** +DPCHInfo-r10OrLaterExtensionType-TDD ::= CHOICE { + rel10-AspExt SEQUENCE { + ul-DPCHInfo UL-DPCH-Info-r7 OPTIONAL, + dl-DPCHInfo DL-DPCHInfo-r10-TDD OPTIONAL, + hs-DPCCHInd HS-DPCCHInfo-r10 OPTIONAL, + ss-UL-DPCCH-DRX-Info SS-UL-DPCCH-DRX-Info OPTIONAL, + ss-DRX-Info DTX-Info OPTIONAL + }, + rel11-AspExt SEQUENCE { + ul-DPCHInfo UL-DPCH-Info-r11 OPTIONAL, + dl-DPCHInfo DL-DPCHInfo-r11-TDD OPTIONAL, + hs-DPCCHInd HS-DPCCHInfo-r10 OPTIONAL, + ss-UL-DPCCH-DRX-Info SS-UL-DPCCH-DRX-Info OPTIONAL, + ss-DRX-Info DTX-Info OPTIONAL + } +} + +--************************************************************** +-- +-- EHS-DSCH-CommonFlows +-- Rel-7 or later +-- +--************************************************************** + +EHS-DSCH-CommonFlows ::= SEQUENCE { + harqInfo-r7 HARQ-Info-r7 OPTIONAL, --@sic R5w140013 sic@ + common-MAC-ehs-ReorderingQueueList SS-Common-MAC-ehs-ReorderingQueueList OPTIONAL +} + +--************************************************************** +-- +-- EHS-DSCH-Flows +-- Rel-7 or later +-- +--************************************************************** + +EHS-DSCH-Flows ::= SEQUENCE { + harqInfo-r7 HARQ-Info-r7 OPTIONAL, --@sic R5w140013 sic@ + addOrReconfMAC-ehs-ReordQ SS-MAC-ehs-AddReconfReordQueueList OPTIONAL, + ackNackRepetitionFactor ACK-NACK-repetitionFactor OPTIONAL, + mimoStatus BOOLEAN OPTIONAL +} + +--************************************************************** +-- +-- EHS-DSCH-Flows-r9 +-- Rel-9 or later +-- +--************************************************************** + +EHS-DSCH-Flows-r9 ::= SEQUENCE { + harqInfo-r7 HARQ-Info-r7 OPTIONAL, --@sic R5w140013 sic@ + addOrReconfMAC-ehs-ReordQ SS-MAC-ehs-AddReconfReordQueueList-r9 OPTIONAL, + ackNackRepetitionFactor ACK-NACK-repetitionFactor OPTIONAL, + mimoStatus BOOLEAN OPTIONAL + +} + +--************************************************************** +-- +-- EHS-DSCH-Flows-r11 +-- Applicable Rel-11 or later +-- +--************************************************************** +EHS-DSCH-Flows-r11 ::= SEQUENCE { + harqInfo-r11 HARQ-Info-r11 OPTIONAL, + addOrReconfMAC-ehs-ReordQ SS-MAC-ehs-AddReconfReordQueueList-r11 OPTIONAL, + ackNackRepetitionFactor ACK-NACK-repetitionFactor OPTIONAL, + mimoStatus BOOLEAN OPTIONAL +} + + +--************************************************************** +-- +-- CommonE-DCHMACdFlows +-- Rel-6 or later +-- +--************************************************************** + +CommonE-DCHMACdFlows ::= SEQUENCE { + tti E-DCH-TTI, + harq-Info ENUMERATED {rv0 (0), rvtable (1)}, + addReconfMAC-d-FlowList Common-E-DCH-MAC-d-FlowList --@sic R5w140013 sic@ +} + +CommonE-DCHMACdFlows-TDD ::= SEQUENCE { + harq-Info ENUMERATED {rv0 (0), rvtable (1)}, + addReconfMAC-d-FlowList Common-E-DCH-MAC-d-FlowList --@sic R5w140013 sic@ +} + +--************************************************************** +-- +-- E-DCHMACdFlows +-- Rel-6 or later +-- +--************************************************************** + + +E-DCHMACdFlows ::= SEQUENCE { + tti E-DCH-TTI, + harq-Info ENUMERATED {rv0 (0), rvtable (1)}, + addReconf-MAC-d-FlowList E-DCH-AddReconf-MAC-d-FlowList OPTIONAL, + addReconf-MAC-d-FlowList-r7 E-DCH-AddReconf-MAC-d-FlowList-r7 OPTIONAL +} + +--************************************************************** +-- +-- E-DCHMACdFlows-TDD +-- Rel-7 or later +-- E-DCHMACdFlows in TTCN-2 +-- +--************************************************************** + +E-DCHMACdFlows-TDD ::= SEQUENCE { + harq-Info ENUMERATED {rv0 (0), rvtable (1)}, + addReconf-MAC-d-FlowList-r7 E-DCH-AddReconf-MAC-d-FlowList-r7 OPTIONAL --@sic R5w140013 sic@ +} + +--************************************************************** +-- +-- FrequencyBandFDD +-- The frequency band indicator indicates how to interpret the radio frequency broadcast. +-- +--************************************************************** + +FrequencyBandFDD ::= CHOICE { + frequencyBandIndicator RadioFrequencyBandFDD, + frequencyBandIndicator2 RadioFrequencyBandFDD2, + frequencyBandIndicator3 RadioFrequencyBandFDD3, + relAspTypeExtension SEQUENCE{} -- @sic R5-130613 R5-134957 sic@ + +} + +--************************************************************** +-- +-- HS-DPCCHInfo +-- +--************************************************************** + +HS-DPCCHInfo ::= SEQUENCE { + cqi-RepetitionFactor CQI-RepetitionFactor, + ackNackRepetitionFactor ACK-NACK-repetitionFactor, + mimoStatus BOOLEAN DEFAULT FALSE +} + +--************************************************************** +-- +-- HS-DPCCHInfo-r10 +-- Applicable to 4C-HSDPA Rel-10 or later +-- secondaryServing-HS-DSCH-Cell indicates if the HS-DSCH secondary serving cell is activated (see 3GPP TS 25.214 [12], clause 6A.1) +-- The HS-DPCCH code allocation and slot format are set according to 3GPP TS 25.213 [66], clause 4.3.1.2.2. +--************************************************************** + +HS-DPCCHInfo-r10 ::= SEQUENCE { + cqi-RepetitionFactor CQI-RepetitionFactor, + ackNackRepetitionFactor ACK-NACK-repetitionFactor, + mimoStatus BOOLEAN DEFAULT FALSE, + firstSecondaryServing-HS-DSCH-Cell ENUMERATED { deactivated (0), activated (1) } DEFAULT deactivated, + secondSecondaryServing-HS-DSCH-Cell ENUMERATED { deactivated (0), activated (1) } DEFAULT deactivated, + thirdSecondaryServing-HS-DSCH-Cell ENUMERATED { deactivated (0), activated (1) } DEFAULT deactivated + -- Relevant when third secondary cell is configured +} + +--************************************************************** +-- +-- HS-DSCH-DrxCellfach-info +-- +--************************************************************** + +HS-DSCH-DrxCellfach-info ::= SEQUENCE { + t-321 T-321, + hs-dsch-DrxCycleFach HS-DSCH-DrxCycleFach, + hs-dsch-DrxBurstFach HS-DSCH-DrxBurstFach, + drxInterruption-hs-dsch BOOLEAN +} + +--************************************************************** +-- +-- HS-DSCHMACdFlows +-- Applicable Rel-5 or later. +-- Within the ACK/NACK repetition period indicated by ackNackRepetitionFactor the SS shall not transmit MAC-hs PDU's on HS-PDSCH. +-- +--************************************************************** + +HS-DSCHMACdFlows ::= SEQUENCE { + harqInfo HARQ-Info OPTIONAL, + addOrReconfMACdFlow SS-AddOrReconfMAC-dFlow OPTIONAL, + ackNackRepetitionFactor ACK-NACK-repetitionFactor OPTIONAL, + harqInfo-r7 HARQ-Info-r7 OPTIONAL + -- mimoStatus BOOLEAN OPTIONAL No longer in TTCN2 version +} + +HS-DSCHMACdFlows-TDD ::= SEQUENCE { + harqInfo HARQ-Info OPTIONAL, + addOrReconfMACdFlow SS-AddOrReconfMAC-dFlow OPTIONAL, + harqInfo-r7 HARQ-Info-r7 OPTIONAL + -- mimoStatus BOOLEAN OPTIONAL No longer in TTCN2 version +} + + +--************************************************************** +-- +-- HS-PDSCHInfo-r5OrLater +-- Applicable Rel-5 or later +-- When CHY-RL-Setup-REQ is called with CHOICE of hS-PDSCHInfo HS-PDSCH and HS-SCCH shall be configured in SS. +-- The following HS-DSCH related parameters are passed to the SS implicitly by HSDSCH-physical-layer-category: +-- - Maximum number of HS-DSCH codes can be received by UE, +-- - Minimum inter-TTI interval, +-- - Maximum number of bits of an HS-DSCH transport block within an HS-DSCH TTI +-- - Total number of soft channel bits". +-- HSDSCH-physical-Layer-category is also used for interpretation of the meaning of CQI value. +-- +--************************************************************** + +HS-PDSCHInfo-r5OrLater-FDD ::= CHOICE { + r5 SEQUENCE { + hSDSCHPhysicalLayerCategory HSDSCH-physical-layer-category, + h-RNTI H-RNTI, + dlHSPDSCHInformation DL-HSPDSCH-Information, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH +-- hs-PDSCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxPDSCHtimeslot ) ) OF HS-PDSCH-ChannelisationCodeInfo-LCR OPTIONAL, @sic R5-112477r1 sic@ + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE + }, + r6 SEQUENCE { + hSDSCHPhysicalLayerCategory HSDSCH-physical-layer-category, + h-RNTI H-RNTI, + dlHSPDSCHInformation DL-HSPDSCH-Information-r6, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH +-- hs-PDSCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxPDSCHtimeslot ) ) OF HS-PDSCH-ChannelisationCodeInfo-LCR OPTIONAL, @sic R5-112477r1 sic@ + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE + }, + r7 HS-PDSCHInfo-r7-FDD, + r8 HS-PDSCHInfo-r8-FDD, + r9 HS-PDSCHInfo-r9-FDD, -- @sic R5s110175 sic@ + relAspTypeExtension HS-PDSCHInfo-r10OrLaterExtensionType -- Rel-10 or later @sic R5-130613 R5-134957 sic@ +} + +HS-PDSCHInfo-r5OrLater-TDD ::= CHOICE { + r5 SEQUENCE { + hSDSCHPhysicalLayerCategory HSDSCH-physical-layer-category, + h-RNTI H-RNTI, + dlHSPDSCHInformation DL-HSPDSCH-Information, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH + hs-PDSCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxPDSCHtimeslot ) ) OF HS-PDSCH-ChannelisationCodeInfo-LCR, --@sic R5-112477r1 sic@ + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE + }, + r6 SEQUENCE { + hSDSCHPhysicalLayerCategory HSDSCH-physical-layer-category, + h-RNTI H-RNTI, + dlHSPDSCHInformation DL-HSPDSCH-Information-r6, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH + hs-PDSCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxPDSCHtimeslot ) ) OF HS-PDSCH-ChannelisationCodeInfo-LCR, --@sic R5-112477r1 sic@ + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE + }, + r7 HS-PDSCHInfo-r7-TDD, + r8 HS-PDSCHInfo-r8-TDD, + r9 HS-PDSCHInfo-r9-TDD, -- @sic R5s110175 sic@ + relAspTypeExtension SEQUENCE{} -- Rel-10 or later @sic R5-134957 sic@ +} + +--************************************************************** +-- +-- HS-PDSCHInfo-r10OrLaterExtensionType +-- Rel-10 or later +-- hS-PDSCH-Info rel10 extension is applied to 4C HSDPA configurations. +-- The IEs related to HS-DSCH physical layer vategories are mutually exclusive. One of the IE shall be present in the SS configuration. +-- The IE "hsdsch-physical-layer-category-ext4" is present when 2 secondary cells are configured. +-- The IE "hsdsch-physical-layer-category-ext5" is present when 3 secondary cells are configured. +-- The IE "hsdsch-physical-layer-category-ext6" is present when multi-cell operation on 5 or 6 cells are configured. +-- The IE "hsdsch-physical-layer-category-ext7" is present when multi-cell operation on 7 or 8 cells are configured. +-- The IE "hsdsch-physical-layer-category-ext8" is present when MIMO with 4 transmit antenna are configured. +--************************************************************** +HS-PDSCHInfo-r10OrLaterExtensionType ::= CHOICE { + rel10-AspExt SEQUENCE { + hSDSCHPhysicalLayerCategory HSDSCH-physical-layer-category OPTIONAL, + hsdsch-physical-layer-category-ext HSDSCH-physical-layer-category-ext OPTIONAL, + hsdsch-physical-layer-category-ext2 + HSDSCH-physical-layer-category-ext2 OPTIONAL, + hsdsch-physical-layer-category-ext3 + HSDSCH-physical-layer-category-ext3 OPTIONAL, + hsdsch-physical-layer-category-ext4 + HSDSCH-physical-layer-category-ext4 OPTIONAL, + hsdsch-physical-layer-category-ext5 + HSDSCH-physical-layer-category-ext5 OPTIONAL, + h-RNTI H-RNTI, + dlHSPDSCHInformation DL-HSPDSCH-Information-r9, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH + ss-DTX-Info DRX-Info OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimo-Parameters MIMO-Parameters-r9 OPTIONAL, + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE, + hs-SCCH-SttdIndicator BOOLEAN DEFAULT FALSE + }, + rel11-AspExt SEQUENCE { + hSDSCHPhysicalLayerCategory HSDSCH-physical-layer-category OPTIONAL, + hsdsch-physical-layer-category-ext + HSDSCH-physical-layer-category-ext OPTIONAL, + hsdsch-physical-layer-category-ext2 + HSDSCH-physical-layer-category-ext2 OPTIONAL, + hsdsch-physical-layer-category-ext3 + HSDSCH-physical-layer-category-ext3 OPTIONAL, + hsdsch-physical-layer-category-ext4 + HSDSCH-physical-layer-category-ext4 OPTIONAL, + hsdsch-physical-layer-category-ext5 + HSDSCH-physical-layer-category-ext5 OPTIONAL, + hsdsch-physical-layer-category-ext6 + HSDSCH-physical-layer-category-ext6 OPTIONAL, + hsdsch-physical-layer-category-ext7 + HSDSCH-physical-layer-category-ext7 OPTIONAL, + hsdsch-physical-layer-category-ext8 + HSDSCH-physical-layer-category-ext8 OPTIONAL, + h-RNTI H-RNTI, + dlHSPDSCHInformation DL-HSPDSCH-Information-r11, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH + ss-DTX-Info DRX-Info OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimo-Parameters MIMO-Parameters-r9 OPTIONAL, + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE, + hs-SCCH-SttdIndicator BOOLEAN DEFAULT FALSE + } +} + +--************************************************************** +-- +-- HS-PDSCH-ChannelisationCodeInfo-LCR +-- +--************************************************************** + +HS-PDSCH-ChannelisationCodeInfo-LCR ::= SEQUENCE { + timeslotNumber TimeslotNumber-LCR-r4, + startCode HS-ChannelisationCode-LCR, + stopCode HS-ChannelisationCode-LCR +} + + +--************************************************************** +-- +-- HS-PDSCHInfo-r7 +-- +--************************************************************** + +HS-PDSCHInfo-r7-FDD ::= CHOICE { + hS-PDSCH-Info SEQUENCE { + hSDSCHPhysicalLayerCategory HSDSCH-physical-layer-category OPTIONAL, + hsdsch-physical-layer-category-ext HSDSCH-physical-layer-category-ext OPTIONAL, + h-RNTI H-RNTI, + dlHSPDSCHInformation DL-HSPDSCH-Information-r7, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH +-- hs-PDSCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxPDSCHtimeslot ) ) OF HS-PDSCH-ChannelisationCodeInfo-LCR OPTIONAL, @sic R5-112477r1 sic@ + ss-DTX-Info DRX-Info OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimo-Parameters MIMO-Parameters-r7 OPTIONAL, + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE, + hs-SCCH-SttdIndicator BOOLEAN DEFAULT FALSE -- @sic R5-120613 sic@ + + }, + common-HS-PDSCH-Info SEQUENCE { + hsdsch-physical-layer-category-ext HSDSCH-physical-layer-category-ext, -- @sic R5-112477 sic@ + commonOrDedicated-H-RNTI H-RNTI OPTIONAL, -- @sic R5-112477 sic@ + bcchSpecific-H-RNTI H-RNTI, + hs-scch-SystemInfo HS-SCCH-SystemInfo, + hs-dsch-PagingSystemInformation HS-DSCH-PagingSystemInformation OPTIONAL, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE + }, + spare2 SEQUENCE {}, + spare3 SEQUENCE {} +} + +HS-PDSCHInfo-r7-TDD ::= CHOICE { + hS-PDSCH-Info SEQUENCE { + hSDSCHPhysicalLayerCategory HSDSCH-physical-layer-category OPTIONAL, + hsdsch-physical-layer-category-ext HSDSCH-physical-layer-category-ext OPTIONAL, + h-RNTI H-RNTI, + dlHSPDSCHInformation DL-HSPDSCH-Information-r7, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH + hs-PDSCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxPDSCHtimeslot ) ) OF HS-PDSCH-ChannelisationCodeInfo-LCR, --@sic R5-112477r1 sic@ + ss-DTX-Info DRX-Info OPTIONAL, + mimo-Parameters MIMO-Parameters-r7 OPTIONAL, + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE + }, + common-HS-PDSCH-Info SEQUENCE { + hsdsch-physical-layer-category-ext HSDSCH-physical-layer-category-ext, -- @sic R5-112477 sic@ + commonOrDedicated-H-RNTI H-RNTI OPTIONAL, -- @sic R5-112477 sic@ + bcchSpecific-H-RNTI H-RNTI, + hs-scch-SystemInfo HS-SCCH-SystemInfo, + hs-dsch-PagingSystemInformation HS-DSCH-PagingSystemInformation OPTIONAL, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE + }, + spare2 SEQUENCE {}, + spare3 SEQUENCE {} +} + + +--************************************************************** +-- +-- HS-PDSCHInfo-r8-FDD +-- +--************************************************************** + +HS-PDSCHInfo-r8-FDD ::= CHOICE { + hS-PDSCH-Info SEQUENCE { + hSDSCHPhysicalLayerCategory HSDSCH-physical-layer-category OPTIONAL, + hsdsch-physical-layer-category-ext HSDSCH-physical-layer-category-ext OPTIONAL, + hsdsch-physical-layer-category-ext2 HSDSCH-physical-layer-category-ext2 OPTIONAL, + h-RNTI H-RNTI, + dlHSPDSCHInformation DL-HSPDSCH-Information-r8, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH +-- hs-PDSCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxPDSCHtimeslot ) ) OF HS-PDSCH-ChannelisationCodeInfo-LCR OPTIONAL, @sic R5-112477r1 sic@ + ss-DTX-Info DRX-Info OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimo-Parameters MIMO-Parameters-r8 OPTIONAL, + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE, + hs-SCCH-SttdIndicator BOOLEAN DEFAULT FALSE -- @sic R5-120613 sic@ + }, + common-HS-PDSCH-Info SEQUENCE { + hsdsch-physical-layer-category-ext HSDSCH-physical-layer-category-ext, -- @sic R5-112477 sic@ + commonOrDedicated-H-RNTI H-RNTI OPTIONAL, -- @sic R5-112477 sic@ + bcchSpecific-H-RNTI H-RNTI, + hs-scch-SystemInfo HS-SCCH-SystemInfo, + hs-dsch-PagingSystemInformation HS-DSCH-PagingSystemInformation OPTIONAL, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE, + ss-HS-DSCH-DtxCellFach HS-DSCH-DrxCellfach-info OPTIONAL + }, + spare2 SEQUENCE {}, + spare3 SEQUENCE {} +} + +--************************************************************** +-- +-- HS-PDSCHInfo-r8-TDD +-- +--************************************************************** + +HS-PDSCHInfo-r8-TDD ::= CHOICE { + hS-PDSCH-Info SEQUENCE { + hSDSCHPhysicalLayerCategory HSDSCH-physical-layer-category OPTIONAL, + hsdsch-physical-layer-category-ext HSDSCH-physical-layer-category-ext OPTIONAL, + multiCarrier-physical-layer-category MultiCarrier-HSDSCH-physical-layer-category OPTIONAL, + multiCarrier-physicallayer-category-extension MultiCarrier-HSDSCH-physical-layer-category-extension OPTIONAL, + h-RNTI H-RNTI, + dlHSPDSCHInformation DL-HSPDSCH-Information-r8, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH + mimo-Parameters MIMO-Parameters-r8 OPTIONAL, + hs-PDSCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxPDSCHtimeslot ) ) OF HS-PDSCH-ChannelisationCodeInfo-LCR, --@sic R5-140315 sic@ + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL + + }, + common-HS-PDSCH-Info SEQUENCE { + hsdsch-physical-layer-category-ext HSDSCH-physical-layer-category-ext, -- @sic R5-112477 sic@ + commonOrDedicated-H-RNTI H-RNTI OPTIONAL, -- @sic R5-112477 sic@ + bcchSpecific-H-RNTI H-RNTI, + hs-scch-SystemInfo-tdd128 HS-SCCH-SystemInfo-TDD128 OPTIONAL, + hs-pdsch-MidambleConfiguration HS-PDSCH-Midamble-Configuration-TDD128 OPTIONAL, + hs-dsch-PagingSystemInformation-tdd128 HS-DSCH-PagingSystemInformation-TDD128 OPTIONAL, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE, + ss-HS-DSCH-DtxCellFach HS-DSCH-DrxCellfach-info-TDD128 OPTIONAL + }, + spare2 SEQUENCE {}, + spare3 SEQUENCE {} +} + +--************************************************************** +-- +-- HS-PDSCHInfo-r9-FDD +-- +--************************************************************** + +HS-PDSCHInfo-r9-FDD ::= CHOICE { + hS-PDSCH-Info SEQUENCE { + hSDSCHPhysicalLayerCategory HSDSCH-physical-layer-category OPTIONAL, + hsdsch-physical-layer-category-ext HSDSCH-physical-layer-category-ext OPTIONAL, + hsdsch-physical-layer-category-ext2 HSDSCH-physical-layer-category-ext2 OPTIONAL, + hsdsch-physical-layer-category-ext3 HSDSCH-physical-layer-category-ext3 OPTIONAL, + h-RNTI H-RNTI, + dlHSPDSCHInformation DL-HSPDSCH-Information-r9, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH +-- hs-PDSCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxPDSCHtimeslot ) ) OF HS-PDSCH-ChannelisationCodeInfo-LCR OPTIONAL, @sic R5-112477r1 sic@ + ss-DTX-Info DRX-Info OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimo-Parameters MIMO-Parameters-r9 OPTIONAL, + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE, + hs-SCCH-SttdIndicator BOOLEAN DEFAULT FALSE -- @sic R5-120613 sic@ + }, + common-HS-PDSCH-Info SEQUENCE { + hsdsch-physical-layer-category-ext HSDSCH-physical-layer-category-ext, -- @sic R5-112477 sic@ + commonOrDedicated-H-RNTI H-RNTI OPTIONAL, -- @sic R5-112477 sic@ + bcchSpecific-H-RNTI H-RNTI, + hs-scch-SystemInfo HS-SCCH-SystemInfo, + hs-dsch-PagingSystemInformation HS-DSCH-PagingSystemInformation OPTIONAL, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE, + ss-HS-DSCH-DtxCellFach HS-DSCH-DrxCellfach-info OPTIONAL + }, + spare2 SEQUENCE {}, + spare3 SEQUENCE {} +} + +--************************************************************** +-- +-- HS-PDSCHInfo-r9-TDD +-- Applicable Rel-9 or later. +-- Choice of hS-PDSCH-Info will be used for configuring HSD-DSCH with 64QAM and/or CPC. +-- Choice of common-HS-PDSCH-Info will be used for Enhanced Cell-FACH. +-- commonOrDedicated-H-RNTI indicates, the H-RNTI that will be used by UE (either dedicated H-RNTI if provided in RRC message, or selected common H-RNTI transmitted in SIB5). +-- The transmission of BCCH on HS-DSCH is performed by using BCCH specific H-RNTI on the first indexed HS-SCCH code indicated in system information broadcast. +-- Presence of controlChannelDRXInfo-TDD128 makes DL DRX to be enabled. +-- Presence of sps-Information-TDD128 makes SPS operation enabled. +-- Presence of mimo-Parameters indicate MIMO is to be started. +-- The IEs 'hSDSCHPhysicalLayerCategory', 'hsdsch-physical-layer-category-ext', are mutually exclusive. One of the IE shall be present in the SS configuration. The IE If commonOrDedicated-H-RNTI is omitted, HS-SCCHless is to be applied. +-- If hs-DPCCHToFollow is FALSE, the hs-DPCCHInd IE shall not be present when ul-DPCHInfo is configured or reconfigured. +-- Presence of ss-HS-DSCH-DtxCellFach makes HS-DSCH DRX operation enabled and SS shall transmit any requested HS-SCCH and HS-DSCH only in occasions when UE will be listening. +-- hs-PDSCHChannelisationCodeInfo present in TDD configurations. +-- If tS0-Indicator is TRUE, the bit xts,1 of Time slot information in HS-SCCH carries the information for timeslot 0. +--************************************************************** + +HS-PDSCHInfo-r9-TDD ::= CHOICE { + hS-PDSCH-Info SEQUENCE { + hSDSCHPhysicalLayerCategory HSDSCH-physical-layer-category OPTIONAL, + hsdsch-physical-layer-category-ext HSDSCH-physical-layer-category-ext OPTIONAL, + multiCarrier-physical-layer-category MultiCarrier-HSDSCH-physical-layer-category OPTIONAL, + multiCarrier-physicallayer-category-extension MultiCarrier-HSDSCH-physical-layer-category-extension OPTIONAL, + h-RNTI H-RNTI, + dlHSPDSCHInformation DL-HSPDSCH-Information-r9, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH + mimo-Parameters MIMO-Parameters-r9 OPTIONAL, + hs-PDSCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxPDSCHtimeslot ) ) OF HS-PDSCH-ChannelisationCodeInfo-LCR, --@sic R5-140315 sic@ + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL + }, + common-HS-PDSCH-Info SEQUENCE { + hsdsch-physical-layer-category-ext HSDSCH-physical-layer-category-ext, -- @sic R5-112477 sic@ + commonOrDedicated-H-RNTI H-RNTI OPTIONAL, -- @sic R5-112477 sic@ + bcchSpecific-H-RNTI H-RNTI, + hs-scch-SystemInfo-tdd128 HS-SCCH-SystemInfo-TDD128 OPTIONAL, + hs-pdsch-MidambleConfiguration HS-PDSCH-Midamble-Configuration-TDD128 OPTIONAL, + hs-dsch-PagingSystemInformation-tdd128 HS-DSCH-PagingSystemInformation-TDD128 OPTIONAL, + sttd-Indicator BOOLEAN, + hs-SCCH-TxPower DL-TxPower, -- offset related to CPICH + hs-DPCCHToFollow BOOLEAN DEFAULT TRUE, + ss-HS-DSCH-DtxCellFach HS-DSCH-DrxCellfach-info-TDD128 OPTIONAL + }, + spare2 SEQUENCE {}, + spare3 SEQUENCE {} +} + +--************************************************************** +-- +-- HyperFrameNumber +-- +--************************************************************** + +HyperFrameNumber ::= BIT STRING (SIZE (20)) + +--************************************************************** +-- +-- IP-VersionType +-- +--************************************************************** + +IP-VersionType ::= ENUMERATED { iPv4(0), iPv6(1) } + +--************************************************************** +-- +-- Increment-Mode +-- +--************************************************************** + +Increment-Mode ::= ENUMERATED {incPerCFN-Cycle(0), notInc(1), incByOne-IncPerCFN-Cycle(2)} + +--************************************************************** +-- +-- IntegrityActivationInfo +-- Comment DL or UL integrity activation info.At the RRC message sequence numbers specified in the ul-IntegProtActivationInfo the SS shall initialise COUNT-I for the SRB's indicated in the ul-IntegProtActivationInfo and start using the new configuration on uplink for the indicated SRB's.If the START value is omitted in the CRLC-SecurityMode-Config-REQ above COUNT-I initialisation shall not be performed. +-- Type Definition +-- +--************************************************************** + +IntegrityActivationInfo ::= CHOICE { + integrityProtectionModeInfo IntegrityProtectionModeInfo, + ul-IntegProtActivationInfo IntegrityProtActivationInfoList, + integrityProtectionModeInfo-r7 IntegrityProtectionModeInfo-r7 +} + +--************************************************************** +-- +-- IntegrityProtActivationInfoList +-- List of SS IntegrityProtActivationInfo +-- +--************************************************************** + +IntegrityProtActivationInfoList ::= SEQUENCE (SIZE (1..maxRB ) ) OF SS-IntegrityProtActivationTimeInfo + +--************************************************************** +-- +-- IntegrityResult +-- +--************************************************************** + +IntegrityResult ::= CHOICE { + integrityNotUsed NULL, + integrityUsed IntegrityStatus +} + +--************************************************************** +-- +-- IntegrityStatus +-- +--************************************************************** + +IntegrityStatus ::= ENUMERATED { + i-pass(0), + i-fail(1) +} + +--************************************************************** +-- +-- KeyCiphering +-- +--************************************************************** + +KeyCiphering ::= BIT STRING (SIZE (128)) + +--************************************************************** +-- +-- SS-LogicalChannelList +-- +--************************************************************** + +SS-LogicalChannelList ::= CHOICE +{ + allSizes NULL, + configured NULL, + explicitList SEQUENCE (SIZE (1..15)) OF SS-LogicalChannelByRB +} + +--************************************************************** +-- +-- SS-LogicalChannelByRB +-- +--************************************************************** + +SS-LogicalChannelByRB ::= SEQUENCE +{ + rb-Identity INTEGER (-31..32), + logChOfRb INTEGER (0..1) OPTIONAL +} + +--************************************************************** +-- +-- LogicalChannelType +-- +--************************************************************** + +LogicalChannelType ::= ENUMERATED +{ + bCCH (0), + pCCH (1), + cCCH (2), + cTCH (3), + dCCH (4), + dTCH (5), + sHCCH (6), + mTCH (7), + mCCH (8), + mSCH (9) +} + +--************************************************************** +-- +-- MAC-HeaderManipulation +-- +--************************************************************** + +MAC-HeaderManipulation ::= ENUMERATED +{ + normalMacHeader (0), + omitMacHeader (1) +} + +--************************************************************** +-- +-- MimoAntennaConfigType +-- +--************************************************************** + +MimoAntennaConfigType ::= ENUMERATED +{ + noMimo(0), + antenna2pCPICH(1), + antenna2sCPICH(2), + spare(3) +} + +--************************************************************** +-- +-- Mui +-- +--************************************************************** + +Mui ::= INTEGER (0..4095) + +--************************************************************** +-- +-- PDSCHInfo-FDD +-- +--************************************************************** + +PDSCHInfo-FDD ::= SEQUENCE { + fdd-tdd CHOICE { + fdd SEQUENCE { + pdsch-CodeMapping PDSCH-CodeMapping + } , + tdd SEQUENCE { -- TDD not applicable @sic R5-130314 sic@ + } + }, + dl-TxPower DL-TxPower +} + +--************************************************************** +-- +-- PDSCHInfo-TDD +-- +--************************************************************** + +PDSCHInfo-TDD ::= SEQUENCE { + pdsch-Identity PDSCH-Identity, + pdsch-Info PDSCH-Info-r4, + pdsch-PowerControlInfo PDSCH-PowerControlInfo OPTIONAL, + dl-TxPower DL-TxPower +} + +--************************************************************** +-- +-- PUSCHInfo +-- TDD +--************************************************************** + +PUSCHInfo ::= SEQUENCE { + pusch-Identity PUSCH-Identity, + pusch-Info PUSCH-Info-r4, + pusch-PowerControlInfo PUSCH-PowerControlInfo-r4 OPTIONAL +} + +--************************************************************** +-- +-- PICHInfo-FDD +-- +--************************************************************** + +PICHInfo-FDD ::= SEQUENCE { + pichinfo PICH-Info, + dl-TxPower PICH-PowerOffset, + sccpchId-associated INTEGER (0..32) +} + +--************************************************************** +-- +-- PICHInfo-TDD +-- +--************************************************************** + +PICHInfo-TDD ::= SEQUENCE { + pichinfo PICH-Info-LCR-r4, + dl-TxPower PICH-PowerOffset, + sccpchId-associated INTEGER (0..32) +} + +--************************************************************** +-- +-- PRACHInfo-FDD +-- +--************************************************************** + +PRACHInfo-FDD ::= SEQUENCE { + fdd-tdd CHOICE { + fdd SEQUENCE { + preambleSignature AvailableSignatures, + spreadingFactorForDataPart SF-PRACH, + preambleScramblingCode PreambleScramblingCodeWordNumber, + puncturingLimit PuncturingLimit, + accessSlot AvailableSubChannelNumbers + }, + tdd SEQUENCE { -- TDD not applicable @sic R5-140314 sic@ + }, + fdd-prachForEnhUL SEQUENCE { -- Rel-8 or later + -- For rel-99 PRACH + preambleSignature AvailableSignatures, + spreadingFactorForDataPart SF-PRACH, + preambleScramblingCode PreambleScramblingCodeWordNumber, + puncturingLimit PuncturingLimit, + accessSlot AvailableSubChannelNumbers, + + -- For for Enhanced Uplink E-DCH transmission + commonEDCH-PreambleSignature AvailableSignatures, + -- access preamble signature for E-DCH transmission + commonEDCH-PreambleScramblingCode PreambleScramblingCodeWordNumber, + commonEDCH-AccessSlot AvailableSubChannelNumbers + } + + } +} + +--************************************************************** +-- +-- PRACHInfo-TDD +-- +--************************************************************** + +PRACHInfo-TDD ::= SEQUENCE { + pRACH-RACH-Info-LCR-r4 PRACH-RACH-Info-LCR-r4, + accessServiceClass-TDD-LCR AccessServiceClass-TDD-LCR-r4, + fPACH-Power DL-TxPower +} + +--************************************************************** +-- +-- PayloadSize +-- +--************************************************************** + +PayloadSize ::= INTEGER (0..4992) + +--************************************************************** +-- +-- PhysicalChannelIdentity +-- +--************************************************************** + +PhysicalChannelIdentity ::= INTEGER (0..31) + +--************************************************************** +-- +-- PrimaryCCPCHInfo-FDD +-- +--************************************************************** + +PrimaryCCPCHInfo-FDD ::= SEQUENCE { + sttd-Indicator BOOLEAN, + dl-TxPower DL-TxPower + -- timeSlot TimeSlot OPTIONAL, + -- burstType BurstType OPTIONAL, + -- offset Offset OPTIONAL, + -- repetitionPeriod RepetitionPeriod OPTIONAL, + -- repetitionLength RepetitionLength OPTIONAL, +} + +--************************************************************** +-- +-- PrimaryCCPCHInfo-TDD +-- +--************************************************************** + +PrimaryCCPCHInfo-TDD ::= SEQUENCE { + sctd-Indicator ENUMERATED {notApplied(0),applied(1)}, + tstd-Indicator ENUMERATED {notApplied(0),applied(1)}, + commonTimeSlotInfo CommonTimeslotInfo, + dL-TxPower-PCCPCH DL-TxPower-PCCPCH, + relAspTypeExtension SEQUENCE{} OPTIONAL -- Rel-10 or later @sic R5-134957 sic@ +} +--************************************************************** +-- +-- PrimaryCPICHInfo +-- +--************************************************************** + +PrimaryCPICHInfo ::= SEQUENCE { + dl-TxPower-PCPICH DL-TxPower-PCPICH, + txdiversityIndicator BOOLEAN, + mimoAntenna2CPICH MimoAntennaConfigType DEFAULT noMimo, + dC-SecondaryServingCell BOOLEAN DEFAULT FALSE, -- Rel-8 or later + relAspTypeExtension SEQUENCE{} OPTIONAL -- Rel-10 or later @sic R5-134957 sic@ +} + +--************************************************************** +-- +-- PrimarySCHInfo +-- +--************************************************************** + +PrimarySCHInfo ::= SEQUENCE { + tstdIndicator BOOLEAN, + dl-TxPower DL-TxPower +} + +--************************************************************** +-- +-- RBInfo +-- +--************************************************************** + +RBInfo ::= SEQUENCE { + sS-rlc-Info SS-RLC-Info OPTIONAL, + sS-rlc-Info-r8 SS-RLC-Info-r8OrLater OPTIONAL, + rB-LogCH-Mapping RB-LogCH-Mapping, + relAspTypeExtension SEQUENCE{} OPTIONAL -- @sic R5-130613 R5-134957 sic@ +} + +--************************************************************** +-- +-- RBInfo-TDD +-- +--************************************************************** + +RBInfo-TDD ::= SEQUENCE { + sS-rlc-Info SS-RLC-Info-TDD OPTIONAL, + sS-rlc-Info-r8 SS-RLC-Info-r8OrLater-TDD OPTIONAL, + rB-LogCH-Mapping RB-LogCH-Mapping, + relAspTypeExtension SEQUENCE {} OPTIONAL -- Rel-10 or later @sic R5-134957 R5w130320 sic@ +} + +--************************************************************** +-- +-- RB-ConfigType +-- +--************************************************************** + +RB-ConfigType ::= ENUMERATED { + cell-NotConfigured (0), + -- Configurations on DPCH + cell-DCH-StandAloneSRB-NoConn (1), + cell-NoDPCH (2), + cell-DCH-StandAloneSRB (3), + cell-DCH-Speech (4), + cell-DCH-64kPS-RAB-SRB (7), + cell-DCH-2AM-PS (17), + -- Configurations on FACH + cell-FACH-NoConn (18), + cell-FACH (19), + cell-FACH-NoDedicated (20), + cell-FACH-PS (21), + cell-Four-DTCH-PS-CS (44) , + cell-DCH-HS-DSCH(63), + cell-FACH-HS(64), + cell-DCH-64kPS-RAB-SRB-HS(65), + -- E-DCH configurations + cell-DCH-E-HS (84), + cell-DCH-dlSRB-E-HS (85), + cell-E-HS (86), + cell-E-HS-StandAloneSRB (98), + cell-DCH-64kPS-AM-RAB (101), + cell-SecondaryDualCell-SRB (118), + cell-SecondaryDualCell-RAB (119), + cell-SecondaryDualCell-NoConn (123) +} + +--************************************************************** +-- +-- RB-LogCH-Mapping +-- Provide mapping information between RB, logical channel and CN domain. +-- When the logical channel is MTCH, the logicalChannelIdentity shall be consistent with MBMS-LogicalChIdentity in MBMS-PTM-RBInformation-N and MBMS-PTM-RBInformation-C being sent to the UE. +-- +--************************************************************** + +RB-LogCH-Mapping ::= SEQUENCE { + uLlogicalChannelIdentity LogicalChannelIdentity OPTIONAL, + dLlogicalChannelIdentity LogicalChannelIdentity OPTIONAL, + logicalChannelType LogicalChannelType OPTIONAL, + cn-DomainIdentity CN-DomainIdentity OPTIONAL +} + +--************************************************************** +-- +-- RLC-IncMode +-- +--************************************************************** + +RLC-IncMode ::= ENUMERATED {notInc(0), inc(1)} + +--************************************************************** +-- +-- RL-Information-FDD +-- The range for powerOffsetOfTPC-PO2 and powerOffsetOfTFCI-PO1 and powerOffsetOfPILOT-PO3 is 0 dB to 6 dB, 0,25 dB per step. +-- The IE cfnTgtSfnFrameOffset is applied when adding another RL or moving the UE to another cell in DCH state in the timing-maintained hard handover or in the softhandover. The cfnTgtSfnFrameOffset is defined as being the time difference between the CFN and the SFN of the cell in which the RL is to be added. +-- The use of cfnTgtSfnFrameOffset and DOFF (Default DPCH Offset Value) is mutually exclusive. The IE cfnTgtSfnFrameOffset is omitted when configuring the 1st RL, or configuring the RL in the timing re-initialised hard handover where the required synchronisation information is provided in defaultDPCH-offsetValue in DL-CommonInformation. +-- In addition, TmTgt value is provided to dpch-FrameOffset in DL-DPCH-InfoPerRL-r5 or DL-DPCH-InfoPerRL-r6 as CFNchipOffset-Tgt. TmTgt can be observed by the UE, or calculated by the TTCN. If it is calculated, +-- TmTgt = (DOFF*512 + 38400 + TCell-Ref - TCell-Tgt) Mod 38400 +-- +--************************************************************** + +RL-Information-FDD ::= SEQUENCE { + powerOffsetOfTFCI-PO1 INTEGER (0..24), + powerOffsetOfTPC-PO2 INTEGER (0..24), + powerOffsetOfPILOT-PO3 INTEGER (0..24), --OPTIONAL, @sic R5-112477r1, FDD-TDD allignment sic@ + dl-TxPower DL-TxPower, + dl-TxPowerMax DL-TxPower, + dl-TxPowerMin DL-TxPower, + cfnTgtSfnFrameOffset CfnTgtSfnFrameOffset OPTIONAL, + dl-FDPCH-ShoConfig BOOLEAN DEFAULT FALSE -- Rel6 or later +} + +--************************************************************** +-- +-- RL-Information-TDD +-- The range for powerOffsetOfTPC-PO2 and powerOffsetOfTFCI-PO1 and powerOffsetOfPILOT-PO3 is 0 dB to 6 dB, 0,25 dB per step. +-- The IE cfnTgtSfnFrameOffset is applied when adding another RL or moving the UE to another cell in DCH state in the timing-maintained hard handover or in the softhandover. The cfnTgtSfnFrameOffset is defined as being the time difference between the CFN and the SFN of the cell in which the RL is to be added. +-- The use of cfnTgtSfnFrameOffset and DOFF (Default DPCH Offset Value) is mutually exclusive. The IE cfnTgtSfnFrameOffset is omitted when configuring the 1st RL, or configuring the RL in the timing re-initialised hard handover where the required synchronisation information is provided in defaultDPCH-offsetValue in DL-CommonInformation. +-- In addition, TmTgt value is provided to dpch-FrameOffset in DL-DPCH-InfoPerRL-r5 or DL-DPCH-InfoPerRL-r6 as CFNchipOffset-Tgt. TmTgt can be observed by the UE, or calculated by the TTCN. If it is calculated, +-- TmTgt = (DOFF*512 + 38400 + TCell-Ref - TCell-Tgt) Mod 38400 +-- +--************************************************************** + +RL-Information-TDD ::= SEQUENCE { + powerOffsetOfTFCI-PO1 INTEGER (0..24), + powerOffsetOfTPC-PO2 INTEGER (0..24), + powerOffsetOfPILOT-PO3 INTEGER (0..24), --OPTIONAL, @sic R5-112477r1, FDD-TDD allignment sic@ + dl-TxPower DL-TxPower, + dl-TxPowerMax DL-TxPower, + dl-TxPowerMin DL-TxPower, + cfnTgtSfnFrameOffset CfnTgtSfnFrameOffset OPTIONAL, + dL-TimeslotISCPInfoLCR TimeslotListWithISCP OPTIONAL +} + +--************************************************************** +-- +-- RRC-Rel-Status +-- +--************************************************************** + +RRC-Rel-Status ::= ENUMERATED { + cell-Dch(0), + cell-Fach-Dcch(1), + cell-Fach-Ccch(2) +} + +--************************************************************** +-- +-- RRC-SequenceNumber +-- 4 bits long +-- +--************************************************************** + +RRC-SequenceNumber ::= INTEGER (0..15 ) + +--************************************************************** +-- +-- RRC-ServTested +-- +--************************************************************** + +RRC-ServTested ::= ENUMERATED { + speech (0), + conversational-64k (1), + streaming-57-6k (2), + ps-Interactive (3), + ps-Background (4), + ps-Streaming (5), + ps-SubscribedTrafficClass (6) -- @sic R5s110771 sic@ + +} + +--************************************************************** +-- +-- RatType +-- To select route between each channels +-- +--************************************************************** + +RatType ::= ENUMERATED { + fdd(0), + tdd128(1) -- @sic R5-134957 sic@ +} + +--************************************************************** +-- +-- RegOr-MO +-- +--************************************************************** + +RegOr-MO ::= ENUMERATED { + est-Reg(0), + est-MO(1), + est-MT(2) +} + +--************************************************************** +-- +-- RoutingInfo +-- +--************************************************************** + +RoutingInfo ::= CHOICE { + physicalChannelIdentity INTEGER (0..31), + transportChannelIdentity TransportChannelIdentity, + logicalChannelIdentity LogicalChannelIdentity, + rB-Identity INTEGER (-31..32), + cn-DomainIdentity CN-DomainIdentity +} + +--************************************************************** +-- +-- ServingAndSecondaryCellActivation-Type +-- +--************************************************************** + +ServingAndSecondaryCellActivation-Type ::= SEQUENCE { + servingCellId INTEGER(0..63), + secondaryCellId INTEGER(0..63), + secondaryServing-HS-DSCH-Cell ENUMERATED { deactivated (0), activated (1) } DEFAULT deactivated +} + +--************************************************************** +-- +-- CmacConfigReq-r10OrLaterExtensionType +-- Applicable Rel-10 or later +-- servingSecondaryCells is provided in 4C configurations +-- +--************************************************************** +CmacConfigReq-r10OrLaterExtensionType ::= CHOICE { + rel10-AspExt SEQUENCE { + servingSecondaryCells SEQUENCE { -- 3C/4C HSDPA configuration + servingCellId INTEGER(0..63), + secondaryCellActivationList SecondaryCellActivationList-Type + } OPTIONAL + } +} + +--************************************************************** +-- +-- SecondaryCellActivationList-Type +-- +--************************************************************** +SecondaryCellActivationList-Type ::= SEQUENCE (SIZE (1..3)) OF SecondaryCellActivation-Type + +--************************************************************** +-- +-- SecondaryCellActivation-Type +-- +--************************************************************** +SecondaryCellActivation-Type ::= SEQUENCE { + secondaryCellId INTEGER(0..63), + secondaryServingStatus ENUMERATED { deactivated (0), activated (1) } + DEFAULT deactivated +} + +--************************************************************** +-- +-- SCCPCHSlotFormat +-- Reference to TS25.211 +-- +--************************************************************** + +SCCPCHSlotFormat ::= INTEGER (0..17) + +--************************************************************** +-- +-- SIB +-- Union of all system information blocks +-- +--************************************************************** + +SIB ::= CHOICE { + sIB1 SysInfoType1, + sIB2 SysInfoType2, + sIB3 SysInfoType3, + sIB4 SysInfoType4, + sIB5 SysInfoType5, + sIB6 SysInfoType6, + sIB7 SysInfoType7, + sIB8 SysInfoType8, + sIB9 SysInfoType9, + sIB10 SysInfoType10, + sIB11 SysInfoType11, + sIB12 SysInfoType12, + sIB13 SysInfoType13, + sIB13-1 SysInfoType13-1, + sIB13-2 SysInfoType13-2, + sIB13-3 SysInfoType13-3, + sIB13-4 SysInfoType13-4, + sIB14 SysInfoType14, + sIB15 SysInfoType15, + sIB15-1 SysInfoType15-1, + sIB15-2 SysInfoType15-2, + sIB15-3 SysInfoType15-3, + sIB16 SysInfoType16, + sIB17 SysInfoType17, + sIB18 SysInfoType18, + mIB MasterInformationBlock, + sB1 SysInfoTypeSB1, + sB2 SysInfoTypeSB2, + sIB11bis SysInfoType11bis +} + +--************************************************************** +-- +-- SS-ActivationTime +-- +--************************************************************** + +SS-ActivationTime ::= CHOICE { + activationCFN ActivationTime, + activateNow NULL +} + +--************************************************************** +-- +-- SS-AddOrReconfMAC-dFlow +-- Applicable Rel-5 or later. +-- +--************************************************************** + +SS-AddOrReconfMAC-dFlow ::= SEQUENCE { + mac-hs-AddReconfQueue-List SEQUENCE (SIZE(1..maxQueueIDs)) OF SEQUENCE { + mac-hs-AddReconfQueue SS-MAC-hs-AddReconfQueue } OPTIONAL, + mac-hs-DelQueue-List SEQUENCE (SIZE(1..maxQueueIDs)) OF SEQUENCE { + mac-hsQueueId INTEGER(0..7) + } OPTIONAL +} + +--************************************************************** +-- +-- SS-Common-MAC-ehs-ReorderingQueue +-- +--************************************************************** + +SS-Common-MAC-ehs-ReorderingQueue ::= SEQUENCE +{ + common-MAC-ehs-ReorderingQueue Common-MAC-ehs-ReorderingQueue, + priority INTEGER (0..7) +} + +--************************************************************** +-- +-- SS-Common-MAC-ehs-ReorderingQueueList +-- +--************************************************************** + +SS-Common-MAC-ehs-ReorderingQueueList ::= SEQUENCE (SIZE(1..maxQueueIDs)) OF SS-Common-MAC-ehs-ReorderingQueue + + +--************************************************************** +-- +-- SS-DL-LogicalChannelMapping +-- If the macHeaderManipulation field is 'NormalMacHeader', then data transmitted on this logical channel shall have an appropriate MAC header added before it is sent to lower layers for transmission. +-- If the macHeaderManipulation field is 'OmitMacHeader', then data transmitted on this logical channel shall not have any MAC header information added, even if the logical channel type and mapping indicates that there should be a MAC header present. This allows the entire MAC PDU to be specified in the TTCN, so individual fields in the MAC header can be modified. +-- When used for DTCH mapping to MAC-d flow, rlc-SizeList shall choose "configured" according to the configured mAChsAddReconfQueue valules. +-- When the logical channel is MTCH, the logicalChannelIdentity shall be consistent with MBMS-LogicalChIdentity in MBMS-PTM-RBInformation-N and MBMS-PTM-RBInformation-C. +-- +--************************************************************** + +SS-DL-LogicalChannelMapping ::= SEQUENCE { + macHeaderManipulation MAC-HeaderManipulation, + dl-TransportChannelType SS-DL-TransportChannelType, + logicalChannelIdentity LogicalChannelIdentity, + logicalChannelType LogicalChannelType , + rlc-SizeList CHOICE { + allSizes NULL, + configured NULL, + explicitList RLC-SizeExplicitList + }, + mac-LogicalChannelPriority MAC-LogicalChannelPriority OPTIONAL +} + +--************************************************************** +-- +-- SS-DL-RLC-Mode +-- "dl-UM-outOfSeqDelivery" is present only for the DL-RLC entity connected to MCCH, and in the configuration with dl-UM-outOfSeqDelivery present the UM RLC can transmit RLC PDU containing SDU of ACCESS INFORMATION message out of sequence when it is necessary +-- +--************************************************************** + +SS-DL-RLC-Mode ::= SEQUENCE { + dl-PayloadSize PayloadSize OPTIONAL, + dl-RLCModeInfo UL-RLC-Mode, + dl-UM-RLC-LI-size DL-UM-RLC-LI-size OPTIONAL, -- only for UM RLC configuration + dl-UM-outOfSeqDelivery UM-RLC-OutOSeqDelivery-Info-r6 OPTIONAL, + dl-RLC-PDU-size CHOICE { + fixedSize OctetModeRLC-SizeInfoType1, + flexibleSize SS-FlexibleSize + } OPTIONAL +} + +--************************************************************** +-- +-- SS-FlexibleSize +-- +--************************************************************** +SS-FlexibleSize ::= SEQUENCE { + li-Size ENUMERATED { size7 (0), size15 (1)}, -- Size of length indicator + max-RLC-DataField-Size INTEGER (1..1503) OPTIONAL + -- Maximum size of data field of RLC PDU (25.322, 9.2.2.9 and 25.433, 9.2.1.38c) +} + +--************************************************************** +-- +-- SS-DL-TransportChannelType +-- +--************************************************************** + +SS-DL-TransportChannelType ::= ENUMERATED { + dch(0), + fach(1), + bch(2), + pch(3), + dsch(4), + hsdsch(5) -- Rel-5 or later +} + +--************************************************************** +-- +-- SS-DRX-MAC-Info +-- +--************************************************************** +SS-DRX-MAC-Info ::= SEQUENCE { + mac-InactivityThreshold MAC-InactivityThreshold, + mac-dtx-Cycle-2ms MAC-DTX-Cycle-2ms OPTIONAL, + mac-dtx-Cycle-10ms MAC-DTX-Cycle-10ms OPTIONAL, + timingInfo NewTiming +} + + +--************************************************************** +-- +-- SS-E-AGCH-Info-FDD +-- Rel-6 or later. +-- +--************************************************************** + +SS-E-AGCH-Info-FDD ::= CHOICE { + r6 SEQUENCE { + e-AGCHInfo E-AGCH-Information, + tti E-DCH-TTI, + e-AGCH-PowerOffset INTEGER (0..255), + -- Range and Step are FFS (25.433, 9.2.2.13If) + -- Offset relative to P-CPICH + e-RNTI-Primary E-RNTI OPTIONAL, + e-RNTI-Secondary E-RNTI OPTIONAL, + ss-DTX-Info DRX-Info OPTIONAL, + sttdIndicator BOOLEAN DEFAULT FALSE -- @sic R5-120613 sic@ + }, + r8 SEQUENCE { + e-AGCHInfo E-AGCH-Information-r8, + tti E-DCH-TTI, + e-AGCH-PowerOffset INTEGER (0..255), + -- Range and Step are FFS (25.433, 9.2.2.13If) + -- Offset relative to P-CPICH + e-RNTI-Primary E-RNTI OPTIONAL, + e-RNTI-Secondary E-RNTI OPTIONAL, + ss-DTX-Info DRX-Info OPTIONAL, + initialServingGrantValue INTEGER (0..37) OPTIONAL, + sttdIndicator BOOLEAN DEFAULT FALSE -- @sic R5-120613 sic@ + }, + relAspTypeExtension SEQUENCE{} -- Rel-10 or later @sic R5-130613 sic@ +} + +--************************************************************** +-- +-- SS-E-AGCH-Info-TDD +-- Rel-7 or later.SS-E-AGCH-Info in TTCN-2 +-- +--************************************************************** + +SS-E-AGCH-Info-TDD ::= CHOICE { + r7 SEQUENCE { + e-AGCH-ID-TDD INTEGER (0..255), + e-AGCHInfo E-AGCH-Information-r7, + e-AGCH-PowerOffset INTEGER (0..255), + -- Range and Step are FFS (25.433, 9.2.2.13If) + -- Offset relative to P-CPICH + maximum-E-AGCH-Power INTEGER (-350..150), + carrier-Frequency UARFCN OPTIONAL, + e-RNTI E-RNTI OPTIONAL, -- @sic R5w140013 sic@ + ss-DTX-Info DRX-Info OPTIONAL + }, + r8 SEQUENCE { + e-AGCH-ID-TDD INTEGER (0..255), + e-AGCHInfo E-AGCH-Information-r8, + e-AGCH-PowerOffset INTEGER (0..255), + -- Range and Step are FFS (25.433, 9.2.2.13If) + -- Offset relative to P-CPICH + maximum-E-AGCH-Power INTEGER (-350..150), + carrier-Frequency UARFCN OPTIONAL, + e-RNTI E-RNTI OPTIONAL, + ss-E-AGCH-DRX-Info E-AGCH-DRX-Info-TDD128 OPTIONAL --@sic R5w140013 sic@ + }, + relAspTypeExtension SEQUENCE{} -- Rel-10 or later @sic R5-134957 sic@ +} + +--************************************************************** +-- +-- SS-E-DPCH-Info +-- Rel-6 or later. +-- If there is an UL-DPCH configured in the cell the E-DPCH shall use the same scramblingCodeType and scramblingCode as the UL-DPCH +-- +--************************************************************** + +SS-E-DPCH-Info-r6OrLater ::= CHOICE { + r6 SEQUENCE { + e-DPCCH-Info E-DPCCH-Info, + e-DPDCH-Info E-DPDCH-Info, + scramblingCodeType ScramblingCodeType OPTIONAL, + scramblingCode UL-ScramblingCode OPTIONAL, + tti E-DCH-TTI OPTIONAL, + edch-PhysicalLayerCategory INTEGER (1..16) + }, + r7 SEQUENCE { + e-DPCCH-Info E-DPCCH-Info-r7, + e-DPDCH-Info E-DPDCH-Info-r7, + scramblingCodeType ScramblingCodeType OPTIONAL, + scramblingCode UL-ScramblingCode OPTIONAL, + tti E-DCH-TTI OPTIONAL, + edch-PhysicalLayerCategory INTEGER (1..16) OPTIONAL, + edch-PhysicalLayerCategory-extension INTEGER (7) OPTIONAL, + ul-16QAM-Settings UL-16QAM-Settings OPTIONAL + }, + r8 SEQUENCE { + e-DPCCH-Info E-DPCCH-Info-r7, + e-DPDCH-Info E-DPDCH-Info-r8, + scramblingCodeType ScramblingCodeType OPTIONAL, + scramblingCode UL-ScramblingCode OPTIONAL, + tti E-DCH-TTI OPTIONAL, + edch-PhysicalLayerCategory INTEGER (1..16) OPTIONAL, + edch-PhysicalLayerCategory-extension INTEGER (7) OPTIONAL, + ul-16QAM-Settings UL-16QAM-Settings OPTIONAL, + s-offset INTEGER (0..9) OPTIONAL -- Used for enhFACH UL + }, + r9 SEQUENCE { -- @sic R5s110175 sic@ + e-DPCCH-Info E-DPCCH-Info-r7, + e-DPDCH-Info E-DPDCH-Info-r8, + scramblingCodeType ScramblingCodeType OPTIONAL, + scramblingCode UL-ScramblingCode OPTIONAL, + tti E-DCH-TTI OPTIONAL, + edch-PhysicalLayerCategory INTEGER (1..16) OPTIONAL, + edch-PhysicalLayerCategory-extension INTEGER (7) OPTIONAL, + edch-PhysicalLayerCategory-extension2 INTEGER (8..9) OPTIONAL, + ul-16QAM-Settings UL-16QAM-Settings OPTIONAL, + s-offset INTEGER (0..9) OPTIONAL -- Used for enhFACH UL + }, + relAspTypeExtension SEQUENCE{} -- Rel-10 or later @sic R5-130613 sic@ + } + +--************************************************************** +-- +-- SS-E-DCH-Info-r7 +-- Rel-7 or later. +-- TDD +--************************************************************** + +SS-E-DCH-Info-r7 ::= SEQUENCE { + e-RUCCH-Info E-RUCCH-Info OPTIONAL, + e-PUCH-Info SS-E-PUCH-Info OPTIONAL +} + +--************************************************************** +-- +-- SS-E-PUCH-Info +-- Rel-7 or later. +-- TDD +--************************************************************** + +SS-E-PUCH-Info ::= SEQUENCE { + lTGI-Presence BOOLEAN, + e-TFCS-Info E-TFCS-Info, + snpl-ReportType ENUMERATED {type1(0), type2(1)}, + prxBASEdes INTEGER (-112..-50 ), + beaconPLEst BOOLEAN OPTIONAL, + tpc-StepSize TPC-StepSizeTDD, + pebase-PowerControlGAP PowerControlGAP OPTIONAL, + ul-SynchronisationParameters UL-SynchronisationParameters-r4 OPTIONAL, + minimum-Allowed-Code-Rate INTEGER (0..63 ), + maximum-Allowed-Code-Rate INTEGER (0..63 ), + maximumNumOfRetransSchedInfo INTEGER (0..15 ), + retransTimerForSchedInfo ENUMERATED {ms10(0), ms15(1), ms20(2), ms25(3), ms30(4), ms35(5), ms40(6), ms45(7), ms50(8), ms55(9), ms60(10), ms65(11), ms70(12), ms75(13), ms80(14), ms85(15), ms90(16), ms95(17), ms100(18), ms110(19), ms120(20), ms140(21), ms160(22), ms200(23), ms240(24), ms280(25), ms320(26), ms400(27), ms480(28), ms560(29)}, + powerOffsetForSchedInfo INTEGER (0..6 ) OPTIONAL, + e-DCH-phyLayCategory INTEGER (1..6 ) OPTIONAL, + e-PUCH-TS-Information-per-UARFCN SEQUENCE (SIZE (1..maxTS-LCR-1)) OF SS-E-PUCH-Timeslot-Info, + carrier-Frequency UARFCN OPTIONAL +} + +--************************************************************** +-- +-- SS-E-PUCH-Timeslot-Info +-- Rel-7 or later TDD. +-- +--************************************************************** +SS-E-PUCH-Timeslot-Info ::= SEQUENCE { + timeslotNumber TimeslotNumber-LCR-r4, + midambleAllocationMode CHOICE + { + defaultMidamble NULL, + ueSpecificMidamble INTEGER (0..15 ) + }, + midambleConfiguration INTEGER (1..8 ), + channelisation-Code UL-TS-ChannelisationCode + } + +--************************************************************** +-- +-- SS-E-HICH-Info +-- Rel-6 or later. +-- +--************************************************************** + +SS-E-HICH-Info ::= SEQUENCE { + e-HICHInfo E-HICH-Information OPTIONAL, -- @sic R5s110175 sic@ + e-HICHInfoCommonEDCH E-HICH-Information-CommonEdch OPTIONAL, -- @sic R5s110175 sic@ + tti E-DCH-TTI, + e-HICH-PowerOffset INTEGER (0..255), + -- PowerOffset = -32 + offset * 0.25 + -- Unit dB, Range -32dB .. +31.75dB, Step +0.25dB + -- (25.433, 9.2.2.13Id), offset relative to P-CPICH + sttdIndicator BOOLEAN DEFAULT FALSE, -- @sic R5-120613 sic@ + relAspTypeExtension SS-E-HICH-Info-r10OrLaterExtensionType OPTIONAL -- Rel-10 or later @sic R5-130613 R5-134957 sic@ +} + +--************************************************************** +-- +-- SS-E-HICH-Info-TDD +-- Rel-7 or later. SS-E-HICH-Info in TTCN-2 +-- +--************************************************************** + +SS-E-HICH-Info-TDD ::= SEQUENCE { + n-E-HICH INTEGER (4..15 ), + maximum-E-HICH-Power INTEGER (-350..150), + e-HICHInfoList SS-E-HICH-Info-List +} + +--************************************************************** +-- +-- SS-E-HICH-Info-List +-- Rel-7 or later. +-- TDD +--************************************************************** + +SS-E-HICH-Info-List ::= SEQUENCE (SIZE (1..maxNumE-HICH ) ) OF + SS-E-HICH-Info-LCR + +--************************************************************** +-- +-- SS-E-HICH-Info-LCR +-- Rel-7 or later. +-- TDD +--************************************************************** + +SS-E-HICH-Info-LCR ::= SEQUENCE { + e-HICH-ID-TDD INTEGER (0..255), + e-HICH-Type ENUMERATED {scheduled(0), non-scheduled(1)}, + e-HICHInfo E-HICH-Information-LCR, + carrier-Frequency UARFCN OPTIONAL, + e-HICH-PowerOffset INTEGER (0..255) + -- PowerOffset = -32 + offset * 0.25 + -- Unit dB, Range -32dB .. +31.75dB, Step +0.25dB + -- (25.433, 9.2.2.13Id), offset relative to P-CPICH +} + +--************************************************************** +-- +-- SS-E-HICH-Info-r10OrLaterExtensionType +-- Rel-11 or later. +-- Only one of e-HICHInfo, e-HICHInfoCommonEDCH or e-HICHInfo-r11 can be present +--************************************************************** +SS-E-HICH-Info-r10OrLaterExtensionType ::= CHOICE { + rel11-AspExt SEQUENCE { + e-HICHInfo-r11 E-HICH-Information-r11 OPTIONAL + } +} + + +--************************************************************** +-- +-- SS-E-RGCH-Info +-- Rel-6 or later. +-- Presence of ss-DTX-Info indicates DL-DRX is enabled and SS shall transmit any requested RGCH only in occasions when UE is going to listen. +-- Only one of e-RGCHInfo and e-RGCHInfoCommonEDCH can be present +--************************************************************** + +SS-E-RGCH-Info ::= SEQUENCE { + e-RGCHInfo E-RGCH-Information OPTIONAL, -- @sic R5s110175 sic@ + e-RGCHInfoCommonEDCH E-RGCH-Information-CommonEdch OPTIONAL, -- @sic R5s110175 sic@ + tti E-DCH-TTI , + e-RGCH-PowerOffset INTEGER (0..255), + -- Range and Step are FFS (25.433, 9.2.2.13Ie) + -- Offset relative to P-CPICH, + ss-DTX-Info DRX-Info OPTIONAL, + sttdIndicator BOOLEAN DEFAULT FALSE, -- @sic R5-120613 sic@ + relAspTypeExtension SEQUENCE{} OPTIONAL -- Rel-10 or later @sic R5-130613 sic@ +} + +--************************************************************** +-- +-- SS-IntegrityProtActivationTimeInfo +-- Omitting rrc-MessageSequenceNumber means activation time set to "now". +-- +--************************************************************** + +SS-IntegrityProtActivationTimeInfo ::= SEQUENCE +{ + rb-Identity INTEGER (-31..32), + rrc-MessageSequenceNumber RRC-MessageSequenceNumber OPTIONAL +} + +--************************************************************** +-- +-- SS-MAC-ehs-AddReconfReordQ +-- +--************************************************************** + +SS-MAC-ehs-AddReconfReordQ ::= SEQUENCE +{ + mAC-ehs-AddReconfReordQ MAC-ehs-AddReconfReordQ, + priority INTEGER (0..7) +} + +--************************************************************** +-- +-- SS-MAC-ehs-AddReconfReordQ-r9 +-- +--************************************************************** + +SS-MAC-ehs-AddReconfReordQ-r9 ::= SEQUENCE +{ + mAC-ehs-AddReconfReordQ MAC-ehs-AddReconfReordQ-r9, + priority INTEGER (0..7) +} + +--************************************************************** +-- +-- SS-MAC-ehs-AddReconfReordQ-r11 +-- Applicable Rel-11or later +-- The priority of PriorityQueue shall set according to the priority of logical channels which is mapped on to this priority queue. +-- NOTE: The range of priority of PriorityQueue is from 0 to 7 and 0 is the lowest priority. +--************************************************************** +SS-MAC-ehs-AddReconfReordQ-r11 ::= SEQUENCE { + mAC-ehs-AddReconfReordQ MAC-ehs-AddReconfReordQ-r11, + priority INTEGER(0..7) +} + + +--************************************************************** +-- +-- SS-MAC-ehs-AddReconfReordQueueList +-- +--************************************************************** + +SS-MAC-ehs-AddReconfReordQueueList ::= SEQUENCE (SIZE (1..maxQueueIDs)) OF SS-MAC-ehs-AddReconfReordQ + +--************************************************************** +-- +-- SS-MAC-ehs-AddReconfReordQueueList-r9 +-- +--************************************************************** + +SS-MAC-ehs-AddReconfReordQueueList-r9 ::= SEQUENCE (SIZE (1..maxQueueIDs)) OF SS-MAC-ehs-AddReconfReordQ-r9 + +--************************************************************** +-- +-- SS-MAC-ehs-AddReconfReordQueueList-r11 +-- Applicable Rel-11 or later +--************************************************************** + +SS-MAC-ehs-AddReconfReordQueueList-r11 ::= SEQUENCE (SIZE (1..maxQueueIDs)) OF SS-MAC-ehs-AddReconfReordQ-r11 + +--************************************************************** +-- +-- SS-MAC-hs-AddReconfQueue +-- Applicable Rel-5 or later. +-- When writing TTCN constraints the TTCN writer shall set the priority of PriorityQueue in this object correctly acoording to the priority of logical channels which is mapped on to this priority queue. +-- And please note that : the range of priority of PriorityQueue is from 0 to 7 and 0 is the lowest priority. +-- +--************************************************************** + +SS-MAC-hs-AddReconfQueue ::= SEQUENCE { + mAChsAddReconfQueue MAC-hs-AddReconfQueue, + logicalChannelList SEQUENCE OF LogicalChannelIdentity, + -- logical channels mapping onto the priority queue + -- which is specified in maChsAddReconfQueue + priority INTEGER(0..7), + discardTimer ENUMERATED { v20(0),v40(1),v60(2),v80(3),v100(4), + v120(5),v140(6),v160(7),v180(8),v200(9), + v250(10),v300(11),v400(12),v500(13), + v750(14),v1000(15),v1250(16),v1500(17), + v1750(18),v2000(19),v2500(20),v3000(21), + v3500(22),v4000(23),v4500(24),v5000(25), + v7500(26) + } OPTIONAL +} + +--************************************************************** +-- +-- SS-RLC-Info +-- UL and DL have been swapped intentionally in this type definition. This is to maximize re-use of the type definitions in 3GPP TS 25.331 which are intended to configure a UE, where UL is transmission, and DL is reception. For the SS, UL is reception, and DL is transmission. +-- For example, consider configuring a DL AM RLC entity (transmitter) in the SS. The transmission parameters to be configured include PollingInformation, Transmission-RLC-Discard etc. If the DL-AM-RLC-Mode type definition is used to configure this entity, it is only possible to configure reception parameters such as StatusInformation, and receiving window size. +-- By swapping UL and DL, it is possible to configure the DL AM RLC entity using the existing type definition UL-AM-RLC-Info, which contains all of the required transmission parameters. +-- +--************************************************************** + +SS-RLC-Info ::= SEQUENCE { + sS-ul-RLC-Mode DL-RLC-Mode OPTIONAL, + sS-dl-RLC-Mode SS-DL-RLC-Mode OPTIONAL, + rlc-OneSidedReEst BOOLEAN DEFAULT FALSE, + altE-bitInterpretation ENUMERATED {false (0), true (1)} DEFAULT false, + useSpecialValueOfHEField ENUMERATED {false (0), true (1)} DEFAULT false, + uM-SN-DeliveryMode ENUMERATED { nonConfigured(0), configured(1)} DEFAULT nonConfigured +} + +--************************************************************** +-- +-- SS-RLC-Info-TDD +-- UL and DL have been swapped intentionally in this type definition. This is to maximize re-use of the type definitions in 3GPP TS 25.331 which are intended to configure a UE, where UL is transmission, and DL is reception. For the SS, UL is reception, and DL is transmission. +-- For example, consider configuring a DL AM RLC entity (transmitter) in the SS. The transmission parameters to be configured include PollingInformation, Transmission-RLC-Discard etc. If the DL-AM-RLC-Mode type definition is used to configure this entity, it is only possible to configure reception parameters such as StatusInformation, and receiving window size. +-- By swapping UL and DL, it is possible to configure the DL AM RLC entity using the existing type definition UL-AM-RLC-Info, which contains all of the required transmission parameters. +-- +--************************************************************** + +SS-RLC-Info-TDD ::= SEQUENCE { + sS-ul-RLC-Mode DL-RLC-Mode OPTIONAL, + sS-ul-PayloadSize PayloadSize OPTIONAL, + sS-dl-RLC-Mode SS-DL-RLC-Mode OPTIONAL, + rlc-OneSidedReEst BOOLEAN DEFAULT FALSE, + altE-bitInterpretation ENUMERATED {false (0), true (1)} DEFAULT false, + useSpecialValueOfHEField ENUMERATED {false (0), true (1)} DEFAULT false, + uM-SN-DeliveryMode ENUMERATED { nonConfigured(0), configured(1)} DEFAULT nonConfigured + +} + +--************************************************************** +-- +-- SS-RLC-Info-r8OrLater +-- Applicable for r8OrLater +-- UL and DL have been swapped intentionally in this type definition. This is to maximize re-use of the type definitions in 3GPP TS 25.331 which are intended to configure a UE, where UL is transmission, and DL is reception. For the SS, UL is reception, and DL is transmission. +-- For example, consider configuring a DL AM RLC entity (transmitter) in the SS. The transmission parameters to be configured include PollingInformation, Transmission-RLC-Discard etc. If the DL-AM-RLC-Mode type definition is used to configure this entity, it is only possible to configure reception parameters such as StatusInformation, and receiving window size. +-- By swapping UL and DL, it is possible to configure the DL AM RLC entity using the existing type definition UL-AM-RLC-Info, which contains all of the required transmission parameters. +-- +--************************************************************** + +SS-RLC-Info-r8OrLater ::= CHOICE { +r8 SEQUENCE { + sS-ul-RLC-Mode DL-RLC-Mode-r7 OPTIONAL, + sS-dl-RLC-Mode SS-DL-RLC-Mode OPTIONAL, + rlc-OneSidedReEst BOOLEAN DEFAULT FALSE, + altE-bitInterpretation ENUMERATED {false (0), true (1)} DEFAULT false, + useSpecialValueOfHEField ENUMERATED {false (0), true (1)} DEFAULT false, + uM-SN-DeliveryMode ENUMERATED { nonConfigured(0), configured(1)} DEFAULT nonConfigured +}, +relAspTypeExtension SS-RLC-Info-r10OrLaterExtensionType -- Rel-10 or later @sic R5-130613 R5-134957 sic@ +} + +--************************************************************** +-- +-- SS-RLC-Info-r8OrLater-TDD +-- Applicable for r8OrLater +-- UL and DL have been swapped intentionally in this type definition. This is to maximize re-use of the type definitions in 3GPP TS 25.331 which are intended to configure a UE, where UL is transmission, and DL is reception. For the SS, UL is reception, and DL is transmission. +-- For example, consider configuring a DL AM RLC entity (transmitter) in the SS. The transmission parameters to be configured include PollingInformation, Transmission-RLC-Discard etc. If the DL-AM-RLC-Mode type definition is used to configure this entity, it is only possible to configure reception parameters such as StatusInformation, and receiving window size. +-- By swapping UL and DL, it is possible to configure the DL AM RLC entity using the existing type definition UL-AM-RLC-Info, which contains all of the required transmission parameters. +-- +--************************************************************** + +SS-RLC-Info-r8OrLater-TDD ::= CHOICE { +r8 SEQUENCE { + sS-ul-RLC-Mode DL-RLC-Mode-r7 OPTIONAL, + sS-ul-PayloadSize PayloadSize OPTIONAL, + sS-dl-RLC-Mode SS-DL-RLC-Mode OPTIONAL, + rlc-OneSidedReEst BOOLEAN DEFAULT FALSE, + altE-bitInterpretation ENUMERATED {false (0), true (1)} DEFAULT false, + useSpecialValueOfHEField ENUMERATED {false (0), true (1)} DEFAULT false, + uM-SN-DeliveryMode ENUMERATED { nonConfigured(0), configured(1)} DEFAULT nonConfigured +}, +relAspTypeExtension SS-RLC-Info-r10OrLaterExtensionType -- Rel-10 or later @sic R5-134957 sic@ +} + +--************************************************************** +-- +-- SS-RLC-Info-r10OrLaterExtensionType +-- Rel-11 or later +--************************************************************** +SS-RLC-Info-r10OrLaterExtensionType ::= CHOICE { + rel11-AspExt SEQUENCE { -- Rel-11 or later + sS-ul-RLC-Mode DL-RLC-Mode-r11 OPTIONAL, + sS-dl-RLC-Mode SS-DL-RLC-Mode OPTIONAL, + rlc-OneSidedReEst BOOLEAN DEFAULT FALSE, + altE-bitInterpretation ENUMERATED {false (0), true (1)} DEFAULT false, + -- applicable only for UM RLC mode + useSpecialValueOfHEField ENUMERATED {false (0), true (1)} DEFAULT false, + -- applicable only for AM RLC mode + uM-SN-DeliveryMode ENUMERATED { nonConfigured(0), configured(1)} + DEFAULT nonConfigured + } +} + +--************************************************************** +-- +-- SS-UL-DPCCH-DRX-Info +-- +--************************************************************** +SS-UL-DPCCH-DRX-Info ::= SEQUENCE { + ss-DRX-Info DTX-Info OPTIONAL, + + dtx-DRX-timingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + + uplink-DPCCHSlotFormatInformation Uplink-DPCCH-Slot-Format-Information +} + +--************************************************************** +-- +-- SS-UL-LogicalChannelMapping +-- If the macHeaderManipulation field is 'normalMacHeader', then data received on the transport channel supporting this logical channel shall have it's MAC header inspected to determine the appropriate routing, and removed as normal. The MAC SDU shall be passed to the appropriate logical channel. +-- If the macHeaderManipulation field field is 'OmitMacHeader', then data received on the transport channel supporting this logical channel shall have it's MAC header inspected to determine the appropriate routing, but the MAC layer shall not remove the MAC header. Thus the entire MAC PDU shall be passed to the appropriate logical channel, and the MAC header can be checked by the TTCN. +-- +--************************************************************** + +SS-UL-LogicalChannelMapping ::= SEQUENCE { + macHeaderManipulation MAC-HeaderManipulation, + ul-TransportChannelType SS-UL-TransportChannelType, + logicalChannelIdentity LogicalChannelIdentity, + logicalChannelType LogicalChannelType +} + +--************************************************************** +-- +-- SS-UL-LogicalChannelMapping-TDD +-- If the macHeaderManipulation field is 'normalMacHeader', then data received on the transport channel supporting this logical channel shall have it's MAC header inspected to determine the appropriate routing, and removed as normal. The MAC SDU shall be passed to the appropriate logical channel. +-- If the macHeaderManipulation field field is 'OmitMacHeader', then data received on the transport channel supporting this logical channel shall have it's MAC header inspected to determine the appropriate routing, but the MAC layer shall not remove the MAC header. Thus the entire MAC PDU shall be passed to the appropriate logical channel, and the MAC header can be checked by the TTCN. +-- @sic R5-134957 R5w130320: TDD TTCN-2/3 differences sic@ +-- +--************************************************************** + +SS-UL-LogicalChannelMapping-TDD ::= SEQUENCE { + macHeaderManipulation MAC-HeaderManipulation, + ul-TransportChannelType SS-UL-TransportChannelType-TDD, --@sic R5-134957 R5w130320: TDD TTCN-2/3 differences sic@ + logicalChannelIdentity LogicalChannelIdentity, + logicalChannelType LogicalChannelType +} + +--************************************************************** +-- +-- SS-UL-TransportChannelType +-- +--************************************************************** + +SS-UL-TransportChannelType ::= ENUMERATED { + dch(0), + rach(1), + cpch(2), + usch(3), + edch (4) -- Rel-6 or later +} + +--************************************************************** +-- +-- SS-UL-TransportChannelType-TDD +-- @sic R5-134957 R5w130320: TDD TTCN-2/3 differences sic@ +-- +--************************************************************** +SS-UL-TransportChannelType-TDD ::= ENUMERATED { + dch(0), + rach(1), + usch(2), + edch (3) -- Rel-6 or later +} + + +--************************************************************** +-- +-- SecondaryCCPCHInfo-FDD +-- The range for powerOffsetOfTFCI-PO1 and powerOffsetOfPILOT-PO3 is 0 dB to 6 dB, 0.25 dB per step. +-- mbms-softCombTimingOffset is present when L1-combination applies +-- When configuring SCCPCH for MBMS "positionFixedOrFlexible" shall be set to Flexible, and sCCPCHSlotFormat shall be chosen to the one without pilot bits +-- +--************************************************************** + +SecondaryCCPCHInfo-FDD ::= SEQUENCE { + scramblingCode INTEGER(0..15), + dl-ChannelizationCode SF256-AndCodeNumber, + sCCPCHSlotFormat SCCPCHSlotFormat, + timingOffset INTEGER (0..149), + positionFixedOrFlexible PositionFixedOrFlexible, + sttd-Indicator BOOLEAN, + dl-TxPower DL-TxPower, + powerOffsetOfTFCI-PO1 INTEGER (0..24), + powerOffsetOfPILOT-PO3 INTEGER (0..24), + mbms-softCombTimingOffset MBMS-SoftComb-TimingOffset OPTIONAL --Rel-6 or later + -- timeSlot TimeSlot OPTIONAL, + -- burstType BurstType OPTIONAL, + -- midambleShift MidambleShift OPTIONAL, + -- offset Offset OPTIONAL, + -- repetitionPeriod RepetitionPeriod OPTIONAL, + -- repetitionLength RepetitionLength OPTIONAL, + -- tFCIPresence TFCIPresence OPTIONAL, +} + +--************************************************************** +-- +-- SecondaryCCPCHInfo-TDD +-- The range for powerOffsetOfTFCI-PO1 and powerOffsetOfPILOT-PO3 is 0 dB to 6 dB, 0.25 dB per step. +-- mbms-softCombTimingOffset is present when L1-combination applies +-- When configuring SCCPCH for MBMS "positionFixedOrFlexible" shall be set to Flexible, and sCCPCHSlotFormat shall be chosen to the one without pilot bits +-- +--************************************************************** + +SecondaryCCPCHInfo-TDD ::= SEQUENCE { + tstd-Indicator ENUMERATED {notApplied(0),applied(1)}, + sctd-Indicator ENUMERATED {notApplied(0),applied(1)}, + dl-TxPower DL-TxPower, + commonTimeSlotInfo CommonTimeslotInfoSCCPCH, + channelisationCode SCCPCH-ChannelisationCodeList, + individualTimeslotInfo IndividualTimeslotInfo-LCR-r4, + powerOffsetOfTFCI-PO1 INTEGER (0..24) OPTIONAL +} + +--************************************************************** +-- +-- SecondaryCPICHInfo +-- +--************************************************************** + +SecondaryCPICHInfo ::= SEQUENCE { + scramblingCode INTEGER(0..63), + dl-ChannelizationCode SF512-AndCodeNumber, + dl-TxPower DL-TxPower, + mimoAntenna MimoAntennaConfigType DEFAULT noMimo +} + +--************************************************************** +-- +-- SecondarySCHInfo +-- +--************************************************************** + +SecondarySCHInfo ::= SEQUENCE { + tstdIndicator BOOLEAN, + dl-TxPower DL-TxPower +} + +--************************************************************** +-- +-- SecurityInfo +-- The integrityKey is not applicable to MAC +-- Detailed comments: +-- When the SS receives SecuritiyInfo, the SS first stores the contents. The SecurityInfo contents is not activated ion of the contents follows until receiving the subsequent ASP, CRLC-Ciphering-Activate-REQ, CMAC-Ciphering-Activate-REQ or CRLC-Integrity-Activate-REQ. Omitted fields of SecurityInfo shall not be affected by the subsequent ASP at the activation time.EXAMPLE: Omitting of startValue indicates not to re-initialize the relevant COUNT?C or COUNT-I, omitting of cipheringKey indicates that the current ciphering key is valid.. +-- +--************************************************************** + +SecurityInfo ::= SEQUENCE { + cn-DomainIdentity CN-DomainIdentity, + startValue START-Value OPTIONAL, + cipheringKey BIT STRING (SIZE (128)) OPTIONAL, + integrityKey BIT STRING (SIZE (128)) OPTIONAL, + gsmCipheringKey BIT STRING (SIZE (64)) OPTIONAL +} + +--************************************************************** +-- +-- SegmentsOfSysInfoBlock +-- The structure holding the segments of a MIB/SIB/SB, maximum number of segments is 16. +-- +--************************************************************** + +SegmentsOfSysInfoBlock ::= SEQUENCE +{ + segCount INTEGER (1..16), + seg1 BIT STRING (SIZE (1..226)), + seg2 BIT STRING (SIZE (1..222)) OPTIONAL, + seg3 BIT STRING (SIZE (1..222)) OPTIONAL, + seg4 BIT STRING (SIZE (1..222)) OPTIONAL, + seg5 BIT STRING (SIZE (1..222)) OPTIONAL, + seg6 BIT STRING (SIZE (1..222)) OPTIONAL, + seg7 BIT STRING (SIZE (1..222)) OPTIONAL, + seg8 BIT STRING (SIZE (1..222)) OPTIONAL, + seg9 BIT STRING (SIZE (1..222)) OPTIONAL, + seg10 BIT STRING (SIZE (1..222)) OPTIONAL, + seg11 BIT STRING (SIZE (1..222)) OPTIONAL, + seg12 BIT STRING (SIZE (1..222)) OPTIONAL, + seg13 BIT STRING (SIZE (1..222)) OPTIONAL, + seg14 BIT STRING (SIZE (1..222)) OPTIONAL, + seg15 BIT STRING (SIZE (1..222)) OPTIONAL, + seg16 BIT STRING (SIZE (1..222)) OPTIONAL +} + +--************************************************************** +-- +-- SupportFlag +-- The default value noNeed indicates that the SS does not perform the operation mentioned in CRLC-ProhibitRLC-Ack-REQ, but performs the suspension / resume of UL RLC PDU data. +-- If the non default values are taken, the SS has either prohibited, or continued acknowledging RLC SDUs. +-- +--************************************************************** + +SupportFlag ::= ENUMERATED {ackProhibited(0), ackContinued(1), noNeed (2)} + +--************************************************************** +-- +-- Tcell +-- Timing offset between reference channel and this channel ( unit : 256 chips ) +-- +--************************************************************** + +Tcell ::= INTEGER (0..38399) + +--************************************************************** +-- +-- TrCHInfo +-- The same TFCS information should be provided to the PHY and MAC layers at all times. When a CMAC-Config-REQ is used to configure the MAC layer, a corresponding CPHY-TrCH-Config-REQ should be sent to the PHY layer to ensure that the configuration is consistent. +-- For MAC-hs configuration: +-- When ulconnectedTrCHList, ulTFCS, dlconnectedTrCHList and dlTFCS are omitted this ASP configures an MAC-hs entity. +-- +--************************************************************** + +TrCHInfo ::= SEQUENCE +{ + ulconnectedTrCHList SEQUENCE (SIZE (1..maxulTrCH)) OF SEQUENCE { + trchid TransportChannelIdentity, + transportChannelInfo CommonOrDedicatedTFS + } OPTIONAL, + ulTFCS TFCS OPTIONAL, + dlconnectedTrCHList SEQUENCE (SIZE (1..maxdlTrCH)) OF SEQUENCE { + trchid TransportChannelIdentity, + transportChannelInfo CommonOrDedicatedTFS + } OPTIONAL, + dlTFCS TFCS OPTIONAL, + hsDSCHMacdFlows HS-DSCHMACdFlows OPTIONAL, -- Rel-5 or later + ehs-DSCH-Flows EHS-DSCH-Flows OPTIONAL, -- Rel-7 or later + ehs-DSCH-CommonFlows EHS-DSCH-CommonFlows OPTIONAL, -- Rel-7 or later + ehs-DSCH-Flows-r9 EHS-DSCH-Flows-r9 OPTIONAL, -- Rel-9 or later @sic R5s110175 sic@ + relAspTypeExtension TrCHInfo-r10OrLaterExtensionType OPTIONAL -- Rel-10 or later @sic R5-130613 R5-134957 sic@ +} + +--************************************************************** +-- +-- TrCHInfo-TDD +-- The same TFCS information should be provided to the PHY and MAC layers at all times. When a CMAC-Config-REQ is used to configure the MAC layer, a corresponding CPHY-TrCH-Config-REQ should be sent to the PHY layer to ensure that the configuration is consistent. +-- For MAC-hs configuration: +-- When ulconnectedTrCHList, ulTFCS, dlconnectedTrCHList and dlTFCS are omitted this ASP configures an MAC-hs entity. +-- +--************************************************************** + +TrCHInfo-TDD ::= SEQUENCE +{ + ulconnectedTrCHList SEQUENCE (SIZE (1..maxulTrCH)) OF SEQUENCE { + trchid TransportChannelIdentity, + transportChannelInfo CommonOrDedicatedTFS-TDD + } OPTIONAL, + ulTFCS TFCS OPTIONAL, + dlconnectedTrCHList SEQUENCE (SIZE (1..maxdlTrCH)) OF SEQUENCE { + trchid TransportChannelIdentity, + transportChannelInfo CommonOrDedicatedTFS-TDD + } OPTIONAL, + dlTFCS TFCS OPTIONAL, + hsDSCHMacdFlows HS-DSCHMACdFlows-TDD OPTIONAL, -- Rel-5 or later + ehs-DSCH-Flows EHS-DSCH-Flows OPTIONAL, -- Rel-7 or later + ehs-DSCH-CommonFlows EHS-DSCH-CommonFlows OPTIONAL, -- Rel-7 or later + ehs-DSCH-Flows-r9 EHS-DSCH-Flows-r9 OPTIONAL, -- Rel-9 or later + relAspTypeExtension SEQUENCE {} OPTIONAL -- Rel-10 or later @sic R5-130613 sic@ + +} + +--************************************************************** +-- +-- TrCHInfo-r10OrLaterExtensionType +-- Rel-11 or later +-- For rel-11 MAC-ehs configuration: +-- When ulconnectedTrCHList, ulTFCS, dlconnectedTrCHList and dlTFCS are omitted and ehs-DSCH-Flows or E-HS-DSCH-Common Flows or ehs-DSCH-Flows-r11 is present this ASP configures an MAC-ehs entity. +-- Only one of hsDSCHMacdFlows or ehs-DSCH-Flows or ehs-DSCH-Flows-r9 or ehs-DSCH-Flows-r11 can be present. +-- +--************************************************************** +TrCHInfo-r10OrLaterExtensionType ::= CHOICE { + rel11-AspExt SEQUENCE { -- Rel-11 or later + ehs-DSCH-Flows-r11 EHS-DSCH-Flows-r11 OPTIONAL + } +} + +--************************************************************** +-- +-- TrCH-LogCHMappingList +-- maxLogCHperTrCH = 8 +-- +--************************************************************** + +TrCH-LogCHMappingList ::= SEQUENCE (SIZE (1..maxLogCHperTrCH)) OF TrCH-LogicalChannelMapping + +--************************************************************** +-- +-- TrCH-LogCHMappingList-TDD +-- maxLogCHperTrCH = 8 +-- @sic R5-134957: TDD TTCN-2/3 differences sic@ +-- +--************************************************************** + +TrCH-LogCHMappingList-TDD ::= SEQUENCE (SIZE (1..maxLogCHperTrCH)) OF TrCH-LogicalChannelMapping-TDD + +--************************************************************** +-- +-- TrCH-LogCHMappingList1 +-- maxulTrCH = maxdlTrCH = 16 +-- dlconnectedMACdFlows is used for MAC-hs and dlconnectedMAC-ehsFlows for MAC-ehs configurations in dedicated. +-- dlconnectedMAC-ehsCommonFlow is used for MAC-ehs in Common state. For BCCH and PCCH in common state, the mac-ehs-QueueId is omitted, no reordering is applied and the TSN and SI fields are always set to zero (according to 3GPP TS 25.321 [17], subclauses 9.1.4 and 11.6.4.4) +-- dlconnectedMAC-ehsFlowsDC is used when dual cell or 4C-HSDPA is activated. +-- +--************************************************************** + +TrCH-LogCHMappingList1 ::= SEQUENCE +{ + ulconnectedTrCHList SEQUENCE (SIZE (1..maxulTrCH)) OF SEQUENCE { + trchid TransportChannelIdentity, + trCH-LogCHMappingList TrCH-LogCHMappingList} OPTIONAL, + dlconnectedTrCHList SEQUENCE (SIZE (1..maxdlTrCH)) OF SEQUENCE { + trchid TransportChannelIdentity, + trCH-LogCHMappingList TrCH-LogCHMappingList} OPTIONAL, + dlconnectedMACdFlows SEQUENCE (SIZE (1..8)) OF SEQUENCE { + mac-dFlowId MAC-d-FlowIdentity, + trCH-LogCHMappingList TrCH-LogCHMappingList + } OPTIONAL, -- Rel-5 or later + dlconnectedMAC-ehsFlows SEQUENCE (SIZE (1..8)) OF SEQUENCE { + mac-ehs-QueueId MAC-ehs-QueueId, + trCH-LogCHMappingList TrCH-LogCHMappingList + } OPTIONAL, -- Rel-7 or later + dlconnectedMAC-ehsCommonFlows SEQUENCE (SIZE (1..8)) OF SEQUENCE { + mac-ehs-QueueId MAC-ehs-QueueId OPTIONAL, + trCH-LogCHMappingList TrCH-LogCHMappingList + } OPTIONAL, -- Rel-7 or later + dlconnectedMAC-ehsFlowsDC SEQUENCE (SIZE (1..8)) OF SEQUENCE { + mac-ehs-QueueId MAC-ehs-QueueId, -- @sic R5-112477 sic@ + trCH-LogCHMappingList TrCH-LogCHMappingList + } OPTIONAL, -- Rel-8 or later @sic R5-110104 sic@ + relAspTypeExtension SEQUENCE{} OPTIONAL -- Rel-10 or later @sic R5-130613 sic@ +} + +--************************************************************** +-- +-- TrCH-LogCHMappingList1-TDD +-- maxulTrCH = maxdlTrCH = 16 +-- dlconnectedMACdFlows is used for MAC-hs and dlconnectedMAC-ehsFlows for MAC-ehs configurations in dedicated. +-- dlconnectedMAC-ehsCommonFlow is used for MAC-ehs in Common state. For BCCH and PCCH in common state, the mac-ehs-QueueId is omitted, no reordering is applied and the TSN and SI fields are always set to zero (according to 3GPP TS 25.321 [17], subclauses 9.1.4 and 11.6.4.4) +-- dlconnectedMAC-ehsFlowsDC is used when dual cell or 4C-HSDPA is activated. +-- @sic R5-134957: TDD TTCN-2/3 differences sic@ +-- +--************************************************************** +TrCH-LogCHMappingList1-TDD ::= SEQUENCE +{ + ulconnectedTrCHList SEQUENCE (SIZE (1..maxulTrCH)) OF SEQUENCE { + trchid TransportChannelIdentity, + trCH-LogCHMappingList TrCH-LogCHMappingList-TDD} OPTIONAL, + dlconnectedTrCHList SEQUENCE (SIZE (1..maxdlTrCH)) OF SEQUENCE { + trchid TransportChannelIdentity, + trCH-LogCHMappingList TrCH-LogCHMappingList-TDD} OPTIONAL, + dlconnectedMACdFlows SEQUENCE (SIZE (1..8)) OF SEQUENCE { + mac-dFlowId MAC-d-FlowIdentity, + trCH-LogCHMappingList TrCH-LogCHMappingList-TDD + } OPTIONAL, -- Rel-5 or later + dlconnectedMAC-ehsFlows SEQUENCE (SIZE (1..8)) OF SEQUENCE { + mac-ehs-QueueId MAC-ehs-QueueId, + trCH-LogCHMappingList TrCH-LogCHMappingList-TDD + } OPTIONAL, -- Rel-7 or later + dlconnectedMAC-ehsCommonFlows SEQUENCE (SIZE (1..8)) OF SEQUENCE { + mac-ehs-QueueId MAC-ehs-QueueId OPTIONAL, + trCH-LogCHMappingList TrCH-LogCHMappingList-TDD + } OPTIONAL, -- Rel-7 or later + dlconnectedMAC-ehsFlowsDC SEQUENCE (SIZE (1..8)) OF SEQUENCE { + mac-ehs-QueueId MAC-ehs-QueueId, -- @sic R5-112477 sic@ + trCH-LogCHMappingList TrCH-LogCHMappingList-TDD + } OPTIONAL, -- Rel-8 or later @sic R5-110104 sic@ + relAspTypeExtension SEQUENCE{} OPTIONAL -- Rel-10 or later @sic R5-130613 sic@ +} + +--************************************************************** +-- +-- TrCH-LogicalChannelMapping +-- When used for logical channel to MAC-d flow mapping dl-LogicalChannelMapping shall be chosen, +-- +--************************************************************** + +TrCH-LogicalChannelMapping ::= SEQUENCE { + logicalChannel-Mapping CHOICE { + ul-LogicalChannelMapping SS-UL-LogicalChannelMapping, + dl-LogicalChannelMapping SS-DL-LogicalChannelMapping + }, + rB-Identity INTEGER (-31..32) OPTIONAL, + cn-DomainIdentity CN-DomainIdentity OPTIONAL +} + +--************************************************************** +-- +-- TrCH-LogicalChannelMapping-TDD +-- When used for logical channel to MAC-d flow mapping dl-LogicalChannelMapping shall be chosen, +-- @sic R5-134957 R5w130320: TDD TTCN-2/3 differences sic@ +-- +--************************************************************** + +TrCH-LogicalChannelMapping-TDD ::= SEQUENCE { + logicalChannel-Mapping CHOICE { + ul-LogicalChannelMapping SS-UL-LogicalChannelMapping-TDD, -- @sic R5-134957 R5w130320 sic@ + dl-LogicalChannelMapping SS-DL-LogicalChannelMapping + }, + rB-Identity INTEGER (-31..32) OPTIONAL, + cn-DomainIdentity CN-DomainIdentity OPTIONAL +} + +--************************************************************** +-- +-- TrChConfigType +-- +--************************************************************** + + +TrChConfigType ::= CHOICE { + nonDch NULL, + dch ENUMERATED {normal(0), softHO(1)} +} + +--************************************************************** +-- +-- UE-Info +-- The value of c-RNTI-DSCH-RNTI is 16 bits, used either for C-RNTI or DSCH-RNTI. DSCH is configured if the physical channel in CMAC-config-REQ is a PDSCH. Otherwise, C-RNTI is applied. For MAC-hs configuration both u-RNTI and c-RNTI-DSCH-RNTI are omitted. +-- +--************************************************************** + +UE-Info ::= SEQUENCE { + u-RNTI U-RNTI OPTIONAL, + c-RNTI C-RNTI OPTIONAL +} + +--************************************************************** +-- +-- UE-OperationMode +-- +--************************************************************** + +UE-OperationMode ::= ENUMERATED { opModeA (0), opModeC (1) } + +--************************************************************** +-- +-- RabTxInfo +-- Provide test data, number of RBs, and RB Tx info of each RB (RB id, SDU size and number of SDUs) to be transmitted in consecutive TTIs +-- +--************************************************************** + +RabTxInfo ::= SEQUENCE +{ + testData BIT STRING (SIZE (8..163840)), + rbTxInfoList SEQUENCE (SIZE (1..6)) OF RbTxInfo +} + +--************************************************************** +-- +-- RbTxInfo +-- Info on RB id and the actual DL test data size (SDU-Size * number of SDUs). The actual test data is extracted from the first (SDU-Size * number of SDUs) bits in the raw testData buffer. SS shall transmit the actual test data in every TTI.The value nomOfSdu = T / TTI , whereby T=1200 is the duration of the data transmitting in the RAB test, taking into account the test tolerance (+50%) of the UE loop back delay (<800 ms). +-- +--************************************************************** + +RbTxInfo ::= SEQUENCE +{ + rB-Identity INTEGER(-31..32), + sduSize INTEGER(1..163840), + nomOfSdu INTEGER(0..255) -- 0 is set for no data on this RB +} + +--************************************************************** +-- +-- DDI-Mapping +-- Both SRBs and RBs can be mapped onto E-DCH. The mechanism for control of MAC header manipulation (macHeaderManipulation) is applied to individual logical channels to be mapped on E-DCH. Typically, the SRBs are configured in 'NormalMacHeader" mode while the RBs in user plane can be configured either in 'NormalMacHeader" or in "OmitMacHeader" mode. +-- If more than one UL RLC PDU size is configured for the RB (represent by logicalChannelIdentity), the different sizes will use subsequent DDI values starting from the DDI value in this table. +-- If the value of macHeaderManipulation field is 'NormalMacHeader', then data received on the E-DCH MACd flows supporting this logical channel shall have it's MAC header inspected to determine the appropriate routing, and removed as normal. The MACes SDU shall be passed to the appropriate logical channel. +-- If the value of macHeaderManipulation field is 'OmitMacHeader', then data received on the E-DCH MACd flows supporting this logical channel shall have it's MAC header inspected to determine the appropriate routing, then the MAC-es layer shall deliver the MAC-es SDU, SI and the related CFN, subframe number, HARQ process identity to the appropriate logical channel. The TTCN receives these fields by RLC-MAC-es-DATA-IND, then these fields can be checked by the TTCN. +-- HARQ ID = CFN mod 4 for TTI=10ms; +-- HARQ ID = (5*CFN + subframe number) mod 8 for TTI=2ms +-- +--************************************************************** + +DDI-Mapping ::= SEQUENCE { + macHeaderManipulation MAC-HeaderManipulation, + logicalChannelIdentity LogicalChannelIdentity, + e-DCH-MAC-d-FlowIdentity E-DCH-MAC-d-FlowIdentity, + ddi DDI, + rlc-PDU-SizeList RLC-PDU-SizeList, + includeInSchedulingInfo BOOLEAN, + mac-LogicalChannelPriority MAC-LogicalChannelPriority, + logicalChannelType LogicalChannelType, + rB-Identity INTEGER (-31..32) OPTIONAL +} + +--************************************************************** +-- +-- DDI-MappingList +-- +--************************************************************** + +DDI-MappingList ::= SEQUENCE (SIZE (1..31)) OF DDI-Mapping + +--************************************************************** +-- +-- MACeConfig +-- If the macHeaderManipulation field is 'NormalMacHeader' in ddiMappingList, then data received on the E-DCH (MAC-e PDU) shall have it's MAC header inspected to de-multiplex and to determine the appropriate routing, and the MACes PDU shall be passed to the MAC-es together with the relevant DDI, N, CFN and subframe number. +-- If the macHeaderManipulation field field is 'OmitMacHeader', then data received on the E-DCH (MAC-e PDU) shall have it's MAC header inspected to de-multiplex and to determine the appropriate routing, then the MAC-e layer shall delivery the MAC-es PDU, SI and the related CFN, subframe number to the MAC-es entity. +-- connectedToMAC-es field is used to provide the possibility that the E-DCH-MACdFlows from only one MAC-e entity are connected to the MAC-es entity in the inter node B soft handover test cases. +-- The IEs ddiMappinglist and e-DCHMacdFlows can be OMITted when changing the serving cell MAC-e without modification of MAC-e configurations. It will be applied in EDCH SHO. +-- +--************************************************************** + +MACeConfig ::= SEQUENCE { + activationTime SS-ActivationTime, + ddiMappinglist DDI-MappingList OPTIONAL, + e-DCHMacdFlows E-DCHMACdFlows OPTIONAL, + connectedToMAC-es BOOLEAN DEFAULT TRUE, -- can be set to FALSE in inter nodeB SHO + ss-DRX-MAC-Info SS-DRX-MAC-Info OPTIONAL +} + +--************************************************************** +-- +-- MACeConfig-TDD +-- If the macHeaderManipulation field is 'NormalMacHeader' in ddiMappingList, then data received on the E-DCH (MAC-e PDU) shall have it's MAC header inspected to de-multiplex and to determine the appropriate routing, and the MACes PDU shall be passed to the MAC-es together with the relevant DDI, N, CFN and subframe number. +-- If the macHeaderManipulation field field is 'OmitMacHeader', then data received on the E-DCH (MAC-e PDU) shall have it's MAC header inspected to de-multiplex and to determine the appropriate routing, then the MAC-e layer shall delivery the MAC-es PDU, SI and the related CFN, subframe number to the MAC-es entity. +-- connectedToMAC-es field is used to provide the possibility that the E-DCH-MACdFlows from only one MAC-e entity are connected to the MAC-es entity in the inter node B soft handover test cases. +-- The IEs ddiMappinglist and e-DCHMacdFlows can be OMITted when changing the serving cell MAC-e without modification of MAC-e configurations. It will be applied in EDCH SHO. +-- +--************************************************************** + +MACeConfig-TDD ::= SEQUENCE { + activationTime SS-ActivationTime, + ddiMappinglist DDI-MappingList OPTIONAL, + e-DCHMacdFlows E-DCHMACdFlows-TDD OPTIONAL +} + +--************************************************************** +-- +-- MACesConfig +-- MACesConfig establishes the mapping between logical channels and E-DCH-MACd-Flows. +-- When the macTestMode is TRUE, the re-ordering entity shall not elimilate the deplicated packets, but passes them to RLC. macTestMode = "TRUE" is used for testing the retransmission function of HARQ process +-- +--************************************************************** + +MACesConfig ::= SEQUENCE { + activationTime SS-ActivationTime, + ddiMappinglist DDI-MappingList, + macTestMode BOOLEAN DEFAULT FALSE +} + +--************************************************************** +-- +-- ModulationScheme +-- +--************************************************************** + +ModulationScheme ::= ENUMERATED {qpsk (0), qam16 (1), qam64 (2), spare1 (3)} + +--************************************************************** +-- +-- RedundancyVersionList +-- Gives the Redundancy and constellation version coding sequence (Xrv) to be used for each transmission / retransmission. The SIZE (number of Xrv elements in there) of the SEQUENCE implies the number of HARQ transmission / retransmissions to be required. +-- +--************************************************************** + +RedundancyVersionList ::= SEQUENCE (SIZE (1..8)) OF INTEGER (0..7) + +--************************************************************** +-- +-- LCR TDD ONLY START +-- +--************************************************************** +--************************************************************** +-- +-- TimeSlotConfiguration-LCR +-- +--************************************************************** + +TimeSlotConfiguration-LCR ::= SEQUENCE { + timeSlotLCR TimeslotNumber-LCR-r4, + timeSlotStatus ENUMERATED {active(0), notActive(1)}, + timeSlotDirection ENUMERATED {downlink(0), uplink(1)} +} + +--************************************************************** +-- +-- TimeSlotConfigurationList-LCR +-- +--************************************************************** + +TimeSlotConfigurationList-LCR ::= SEQUENCE (SIZE (1..maxTS-LCR)) OF TimeSlotConfiguration-LCR + +--************************************************************** +-- +-- SecondaryFrequencyInfoList +-- +--************************************************************** + +SecondaryFrequencyInfoList ::= SEQUENCE (SIZE(1..maxNumOfSecondFrequency)) OF SecondaryFrequencyInfo + +--************************************************************** +-- +-- SecondaryFrequencyInfo +-- +--************************************************************** + +SecondaryFrequencyInfo ::= SEQUENCE { + frequencyInfo UARFCN, + dLTxAttenuationLevel INTEGER(0..30) +} + +--************************************************************** +-- +-- DwPCHInfo +-- +--************************************************************** + +DwPCHInfo ::= SEQUENCE { + tstd-Indicator ENUMERATED {notApplied(0),applied(1)}, + dwPCH-Power DwPCH-Power +} + +--************************************************************** +-- +-- TransmissionDiversityApplied +-- +--************************************************************** + +TransmissionDiversityApplied ::= ENUMERATED {notApplied(0), applied(1)} + +--************************************************************** +-- +-- SS-Non-ScheduledTransGrantInfoTDD +-- Rel-7 or later. +-- +--************************************************************** + +SS-Non-ScheduledTransGrantInfoTDD ::= CHOICE { + tdd384-768 SEQUENCE + { + timeslotResourceRelatedInfo BIT STRING (SIZE (13 ) ), + powerResourceRelatedInfo INTEGER (1..32 ), + activationTime ActivationTime, + repetitionPeriodAndLength RepetitionPeriodAndLength OPTIONAL, + codeResourceInfo UL-TS-ChannelisationCode + }, + tdd128 SEQUENCE + { + n-E-UCCH INTEGER (1..8 ) OPTIONAL, + n-E-HICH INTEGER (4..15 ) OPTIONAL, + timeslotResourceRelatedInfo BIT STRING (SIZE (5 ) ), + powerResourceRelatedInfo INTEGER (1..32 ), + activationTime ActivationTime, + sfnNum INTEGER (0..1 ), + repetitionPeriodAndLength RepetitionPeriodAndLength OPTIONAL, + codeResourceInfo UL-TS-ChannelisationCode, + e-HICH-Info SEQUENCE + { + e-HICH-ID-TDD INTEGER (0..255 ), + signature-Sequence-Group-Index INTEGER (0..19 ) + } + } +} + +--************************************************************** +-- +-- LCR TDD ONLY END +-- +--************************************************************** +--************************************************************** +-- +-- CMAC-Ciphering-Activate-CNF +-- To confirm to activate or inactivate the ciphering +-- +--************************************************************** + +CMAC-Ciphering-Activate-CNF ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CMAC-Ciphering-Activate-REQ +-- To request to start or, restart or stop downlink ciphering or uplink deciphering. The physicalChannelIdentity of DPCH applies to routingInfo.Do not increment HFN part of COUNT-C if the value of incrementCOUNT-C-Ind is "NotIncr". +-- +--************************************************************** + +CMAC-Ciphering-Activate-REQ ::= SEQUENCE +{ + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + ratType RatType, + cn-DomainIdentity CN-DomainIdentity, + cipheringModeInfo CipheringModeInfo OPTIONAL, + cipheringModeInfo-r7 CipheringModeInfo-r7 OPTIONAL, + incHFN Increment-Mode +} + +--************************************************************** +-- +-- CMAC-Config-CNF +-- For MAC emulator to report that a previous attempt to setup, reconfigure or release a logical channel is successful. +-- +--************************************************************** + +CMAC-Config-CNF ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CMAC-Config-FDD-REQ +-- To request to configure MAC entity. Setup is used for creation of the MAC instances or the MAC resources. Release is used for free the all MAC resources. The reconfiguration is to change the MAC parameters, it is not the MAC modification. +-- +--************************************************************** + +CMAC-Config-FDD-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + ratType RatType, + configMessage CHOICE { + setup CmacConfigReq-FDD, + reconfigure CmacConfigReq-FDD, + release SS-ActivationTime + } +} + +--************************************************************** +-- +-- CMAC-Config-TDD-REQ +-- To request to configure MAC entity. Setup is used for creation of the MAC instances or the MAC resources. Release is used for free the all MAC resources. The reconfiguration is to change the MAC parameters, it is not the MAC modification. +-- +--************************************************************** + +CMAC-Config-TDD-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + ratType RatType, + configMessage CHOICE { + setup CmacConfigReq-TDD, + reconfigure CmacConfigReq-TDD, + release SS-ActivationTime + } +} + +--************************************************************** +-- +-- CMAC-PAGING-Config-CNF +-- To confirm to setup the Paging message +-- +--************************************************************** + +CMAC-PAGING-Config-CNF ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CMAC-PAGING-Config-FDD-REQ +-- To request MAC layer to send the Paging message on the specified configuration. +-- CMAC-PAGING-Config-REQ in TTCN-2 +-- +--************************************************************** + +CMAC-PAGING-Config-FDD-REQ ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo, + ratType RatType, + configMessage CmacPagingConfigReq +} + +--************************************************************** +-- +-- CMAC-PAGING-Config-TDD-REQ +-- To request MAC layer to send the Paging message on the specified configuration. +-- CMAC-PAGING-Config-REQ in TTCN-2 +-- +--************************************************************** + +CMAC-PAGING-Config-TDD-REQ ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo, + ratType RatType, + configMessage CmacPagingConfigReq-TDD +} +--************************************************************** +-- +-- CMAC-SYSINFO-Config-CNF +-- To confirm to setup the BCCH message to MAC layer +-- +--************************************************************** + +CMAC-SYSINFO-Config-CNF ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CMAC-SYSINFO-Config-REQ +-- To request MAC layer to send the BCCH message on the specified configuration. +-- +--************************************************************** + +CMAC-SYSINFO-Config-REQ ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo, + ratType RatType, + configMessage CmacSysinfoConfigReq +} + +--************************************************************** +-- +-- CMAC-SecurityMode-Config-CNF +-- To confirm to configure the MAC security mode +-- +--************************************************************** + +CMAC-SecurityMode-Config-CNF ::= SEQUENCE { + cellId INTEGER (-1..63) +} + +--************************************************************** +-- +-- CMAC-SecurityMode-Config-REQ +-- To request to configure the MAC security mode +-- If there are several CMAC-Ciphering-Activate-REQ follow this ASP, the SS shall take a serial of specified actions on the same contents in this ASP at the activation time indicated in each CMAC-Ciphering-Activate-REQ. +-- +--************************************************************** + +CMAC-SecurityMode-Config-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + macCipheringInfo SecurityInfo +} + +--************************************************************** +-- +-- CPHY-Cell-Config-CNF +-- To confirm to setup the cell parameter +-- +--************************************************************** + +CPHY-Cell-Config-CNF ::= SEQUENCE { + cellId INTEGER (0..63) +} + +--************************************************************** +-- +-- CPHY-Cell-Config-FDD-REQ +-- To request to setup the cell parameter. +-- The unit of tcell is chip; the unit of sfnOffset is frame number. The sfnOffset is defined as the number of frames the SFN shall be shifted, i.e the frames lagging behind or in advance, in comparison to a system reference time. The both interpretations are valid for the test. +-- The primary scrambling code number of the cell is 16*primaryScramblingCode-SS; the unit of dLTxAttenuationLevel is dB. +-- +--************************************************************** + +CPHY-Cell-Config-FDD-REQ ::= SEQUENCE { + cellId INTEGER (0..63), + tcell INTEGER(0..38399), + sfnOffset INTEGER (0 .. 4095 ), + frequencyInfo FrequencyInfo, + primaryScramblingCode-SS INTEGER (0..511), + cellTxPowerLevel CellTxPowerLevel, + dLTxAttenuationLevel INTEGER(0..30|123), + frequencyBandIndicator FrequencyBandFDD, + relAspTypeExtension SEQUENCE{} OPTIONAL -- Rel-10 or later @sic R5-130618 sic@ +} + +--************************************************************** +-- +-- CPHY-Cell-Config-TDD-REQ +-- To request to setup the cell parameter. +-- the unit of dLTxAttenuationLevel is dB. +-- CPHY-Cell-Config-REQ in TTCN-2 +-- +--************************************************************** + +CPHY-Cell-Config-TDD-REQ ::= SEQUENCE { + cellId INTEGER (0..63), + sfnOffset INTEGER (0 .. 4095 ), + frequencyInfo FrequencyInfo, + cellTxPowerLevel CellTxPowerLevel, + dLTxAttenuationLevel INTEGER(0..30|123), + cellParametersID CellParametersID, + timeSlotConfigurationList-LCR TimeSlotConfigurationList-LCR, + dwPCHInfo DwPCHInfo, + transmissionDiversityApplied ENUMERATED {notApplied(0),applied(1)} OPTIONAL, + secondaryFrequencyInfo SecondaryFrequencyInfoList OPTIONAL, + upPCHposition UpPCHposition-LCR OPTIONAL, + relAspTypeExtension SEQUENCE{} OPTIONAL -- Rel-10 or later +} + +--************************************************************** +-- +-- CPHY-Cell-Release-CNF +-- The confirmation to the CPHY-Cell-Release-Req +-- +--************************************************************** + +CPHY-Cell-Release-CNF ::= SEQUENCE { + soft-Reset BOOLEAN, + cell-ID-List SEQUENCE (SIZE (1..8)) OF INTEGER (0..63) -- cell IDs +} + +--************************************************************** +-- +-- CPHY-Cell-Release-REQ +-- 1. This Primitive with "Soft-Reset" flag ON gives a common known starting point/state of SS for a test case. The SS performs the following whenever it receives this primitive with "Soft-Reset" flag ON:Releases all configured Channels and cells (if any) irrespective of Cell ID list IE. +-- 2. Releases the associated Memory Buffers (if any). +-- 3. Cancels all active timers (if any) +-- With "Soft-Reset" flag OFF: +-- 1. Releases cells listed in IE Cell-ID-List and associated configured Channels (if any) +-- 2. Releases the Memory Buffers(if any) associated with Cells listed in IE Cell-ID-List +-- 3. Cancels all active timers (if any) associated with Cells listed in IE Cell-ID-List. +-- +--************************************************************** + +CPHY-Cell-Release-REQ ::= SEQUENCE { + soft-Reset BOOLEAN, + cell-ID-List SEQUENCE (SIZE (1..8)) OF INTEGER (0 .. 63), -- @sic R5-112591 sic@ + rb-Config-List SEQUENCE (SIZE (1..8)) OF INTEGER OPTIONAL -- @sic R5-112591 sic@ +} + +--************************************************************** +-- +-- CPHY-Cell-TxPower-Modify-CNF +-- To confirm to change the DL power +-- +--************************************************************** + +CPHY-Cell-TxPower-Modify-CNF ::= SEQUENCE { + cellId INTEGER (0..63) +} + +--************************************************************** +-- +-- CPHY-Cell-TxPower-Modify-REQ +-- To request to change the DL power +-- +--************************************************************** + +CPHY-Cell-TxPower-Modify-REQ ::= SEQUENCE { + cellId INTEGER (0..63), + dLTxAttenuationLevel INTEGER(0..40|123) +} + +--************************************************************** +-- +-- CPHY-Frame-Number-CNF +-- To return the requested connection frame number. The routingInfo indicates a physical channel. +-- +--************************************************************** + +CPHY-Frame-Number-CNF ::= SEQUENCE{ + cellId INTEGER (0..63), + routingInfo RoutingInfo, + frameNumber INTEGER (0..255) +} + +--************************************************************** +-- +-- CPHY-Frame-Number-REQ +-- To request the physical layer to return a connection frame number on which the next message can be sent at the specified PCO on the specified logical channel. The return frame number shall leave time from current frame number in order to leave some execution time for TTCN preparing next message. The routingInfo indicates a physical channel +-- +--************************************************************** + +CPHY-Frame-Number-REQ ::= SEQUENCE{ + cellId INTEGER (0..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CPHY-Ini-CNF +-- Confirm the test initialisation +-- +--************************************************************** + +CPHY-Ini-CNF ::= SEQUENCE +{ + confirmation NULL +} + +--************************************************************** +-- +-- CPHY-Ini-REQ +-- Request to initialise the test +-- +--************************************************************** + +CPHY-Ini-REQ ::= ENUMERATED { + defaultRadioEnvironment(0), + nonDefaultMultiCell(1) +} + +--************************************************************** +-- +-- CPHY-Out-of-Sync-IND +-- To report that the physical channel synchronization (in FDD mode, sync with uplink DPCCH) was lost as detected by the SS receiver. +-- +--************************************************************** + +CPHY-Out-of-Sync-IND ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CPHY-RL-Modify-CNF +-- To confirm to modify the Radio Link +-- +--************************************************************** + +CPHY-RL-Modify-CNF ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CPHY-RL-Modify-FDD-REQ +-- To request to modify the Radio Link +-- HardHandover (PhysicalChannelReconfig) +-- ChannelisationCodeChange +-- FrequencyChange +-- PhysicalChannelModifyForTrCHReconfig +-- CompressedMode( PhysicalChannelReconfig) +-- Re-Synchronized HardHandover +-- Softhandover +-- +--************************************************************** + +CPHY-RL-Modify-FDD-REQ ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo, + ratType RatType, + modifyMessage CphyRlModifyReq-FDD +} + +--************************************************************** +-- +-- CPHY-RL-Modify-TDD-REQ +-- To request to modify the Radio Link +-- HardHandover (PhysicalChannelReconfig) +-- ChannelisationCodeChange +-- FrequencyChange +-- PhysicalChannelModifyForTrCHReconfig +-- CompressedMode( PhysicalChannelReconfig) +-- Re-Synchronized HardHandover +-- CPHY-RL-Modify-REQ in TTCN-2 +-- +--************************************************************** + +CPHY-RL-Modify-TDD-REQ ::= SEQUENCE { + cellId INTEGER (0..63), + secondaryFrequency UARFCN OPTIONAL, + routingInfo RoutingInfo, + ratType RatType, + modifyMessage CphyRlModifyReq-TDD +} + +--************************************************************** +-- +-- CPHY-RL-Release-CNF +-- PHY emulator confirms that a specified physical channel has been released. +-- +--************************************************************** + +CPHY-RL-Release-CNF ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CPHY-RL-Release-FDD-REQ +-- To request to release the Radio Link +-- +--************************************************************** + +CPHY-RL-Release-FDD-REQ ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo, + activationTime SS-ActivationTime +} + +--************************************************************** +-- +-- CPHY-RL-Release-TDD-REQ +-- To request to release the Radio Link +-- +--************************************************************** + +CPHY-RL-Release-TDD-REQ ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo, + activationTime SS-ActivationTime OPTIONAL +} + +--************************************************************** +-- +-- CPHY-RL-Setup-CNF +-- To confirm to setup the Radio Link +-- +--************************************************************** + +CPHY-RL-Setup-CNF ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CPHY-RL-Setup-FDD-REQ +-- To request to setup the associated transport channels and the Radio Link itself. +-- CPHY-RL-Setup-REQ in TTCN-2 +-- +--************************************************************** + +CPHY-RL-Setup-FDD-REQ ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo, + ratType RatType, + setupMessage CphyRlSetupReq-FDD +} + +--************************************************************** +-- +-- CPHY-RL-Setup-TDD-REQ +-- To request to setup the associated transport channels and the Radio Link itself. +-- CPHY-RL-Setup-REQ in TTCN-2 +-- +--************************************************************** + +CPHY-RL-Setup-TDD-REQ ::= SEQUENCE { + cellId INTEGER (0..63), + secondaryFrequency UARFCN OPTIONAL, + routingInfo RoutingInfo, + ratType RatType, + setupMessage CphyRlSetupReq-TDD +} + +--************************************************************** +-- +-- CPHY-Sync-IND +-- To indicate that physical channel synchronization (in FDD mode, sync with DPCCH) has been achieved. +-- +--************************************************************** + +CPHY-Sync-IND ::= SEQUENCE{ + cellId INTEGER (0..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CPHY-TrCH-Config-CNF +-- To confirm to configure the transport channel +-- +--************************************************************** + +CPHY-TrCH-Config-CNF ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CPHY-TrCH-Config-FDD-REQ +-- To request to configure the transport channel +-- +--************************************************************** + +CPHY-TrCH-Config-FDD-REQ ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo, + ratType RatType, + trchConfigType TrChConfigType, + configMessage CphyTrchConfigReq +} + +--************************************************************** +-- +-- CPHY-TrCH-Config-TDD-REQ +-- To request to configure the transport channel +-- +--************************************************************** + +CPHY-TrCH-Config-TDD-REQ ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo, + ratType RatType, + trchConfigType TrChConfigType, + configMessage CphyTrchConfigReq-TDD +} + +--************************************************************** +-- +-- CPHY-TrCH-Release-CNF +-- To confirm to release tthe Radio Link +-- +--************************************************************** + +CPHY-TrCH-Release-CNF ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CPHY-TrCH-Release-FDD-REQ +-- CPHY-TrCH-Release-TDD-REQ +-- To request to release tthe Radio Link +-- +--************************************************************** + +CPHY-TrCH-Release-FDD-REQ ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo, + trchConfigType TrChConfigType, + activationTime SS-ActivationTime +} + +CPHY-TrCH-Release-TDD-REQ ::= SEQUENCE { + cellId INTEGER (0..63), + routingInfo RoutingInfo, + trchConfigType TrChConfigType, + activationTime SS-ActivationTime OPTIONAL +} + +--************************************************************** +-- +-- CPHY-HS-DPCCH-CQI-MultiCell-CNF +-- To Confirm CPHY-HS-DPCCH-CQI-MultiCell-REQ +-- +--************************************************************** +CPHY-HS-DPCCH-CQI-MultiCell-CNF ::= SEQUENCE { + cellId INTEGER(0..63) +} + +--************************************************************** +-- +-- CPHY-HS-DPCCH-CQI-MultiCell-REQ +-- To enable the SS to start reporting N times of the CQI value received on the HS-DPCCH on cellId when 3C/4C-HSDPA is configured. After N times the SS stops reporting. N is specified as numberOfReports. +-- At the SS initialization reporting of CQI values is disabled. +-- +--************************************************************** +CPHY-HS-DPCCH-CQI-MultiCell-REQ ::= SEQUENCE { + cellId INTEGER(0..63), + ratType RatType, + numberOfReports INTEGER(1..32) +} + +--************************************************************** +-- +-- CPHY-HS-DPCCH-CQI-MultiCell-IND +-- SS generates one indication per subframe when a CQI/PCI value is received on HS-DPCCH after invocation of ASP CPHY-HS-DPCCH-CQI-MultiCell-REQ and before the numberOfReports is reached. +-- This ASP is used for verifying whether the UE has configured the HS-DSCH and starts reception of HS-DSCH (3GPP TS 25.331 [21], subclause 8.6.6.34 and 3GPP TS 25.212 [58], subclause 4.7.4.2). +-- +--************************************************************** +CPHY-HS-DPCCH-CQI-MultiCell-IND ::= SEQUENCE { + cellId INTEGER(0..63), + ratType RatType, + cfn INTEGER (0..255), + subframe INTEGER (0..4), + cqiPci-List CqiPci-List-Type +} + +CqiPci-List-Type ::= SEQUENCE (SIZE (1..2)) OF CqiPci-Type + +CqiPci-Type ::= SEQUENCE { + cqi INTEGER (0..1023), + pci INTEGER (0..3) OPTIONAL, -- MIMO + cqiType ENUMERATED {cqiTypeA(0), cqiTypeB(1)} OPTIONAL -- MIMO +} + +--************************************************************** +-- +-- CPHY-HS-DPCCH-CQI-CNF +-- Applicable Rel-5 or later +-- To Confirm CPHY-HS-DPCCH-CQI-REQ +-- +--************************************************************** +CPHY-HS-DPCCH-CQI-CNF ::= SEQUENCE { + cellId INTEGER(0..63) +} + +--************************************************************** +-- +-- CPHY-HS-DPCCH-CQI-REQ +-- Applicable Rel-5 or later +-- To enable the SS to start reporting N times of the CQI value received on the HS DPCCH. After N times the SS stops reporting. N is specified in numberOfReports. +-- At the SS initialization reporting of CQI values is disabled +-- +--************************************************************** +CPHY-HS-DPCCH-CQI-REQ ::= SEQUENCE { + cellId INTEGER(0..63), + ratType RatType, + numberOfReports INTEGER(1..32) +} + +--************************************************************** +-- +-- CPHY-HS-DPCCH-CQI-IND +-- Applicable Rel-5 or later +-- SS generates the indication when a CQI value is received on HS-DPCCH after invocation of ASP CPHY-HS-DPCCH-CQI-REQ and before the numberOfReports is reached. +-- This ASP is used for verifying whether the UE has configured the HS-DSCH and starts reception of HS-DSCH (3GPP TS 25.331 [21], subclause 8.6.6.34). +-- 'second-cqi' shall be reported when MIMO is configured and dual transport block type A CQI report is received. When second-cqi is present, allowed values for 'cqi' are 0..14. +-- In all other cases (i.e. non MIMO operation, MIMO operation but with CQI type B or single transport block type A CQI reports] 'second-cqi' shall not be reported and range for cqi is 0..30. +-- 'pci' and cqiType shall be present when MIMO is configured. +-- +--************************************************************** +CPHY-HS-DPCCH-CQI-IND ::= SEQUENCE { + cellId INTEGER(0..63), + ratType RatType, + cfn INTEGER (0..255), + subframe INTEGER (0..4), + cqi INTEGER (0..30), + cqiExt CQI-ExtensionType +} + +--************************************************************** +-- +-- CQI-ExtensionType +-- Rel-7 or later +-- The value -1 for second-cqi indicates the absence of the second CQI. +-- +--************************************************************** +CQI-ExtensionType ::= SEQUENCE { + second-cqi INTEGER (-1..14) OPTIONAL, + pci INTEGER (0..3) OPTIONAL, -- MIMO + cqiType ENUMERATED {cqiTypeA(0), cqiTypeB(1)} OPTIONAL -- MIMO +} + +--************************************************************** +-- +-- CPHY-MeasurementConfig-REQ +-- To configure measurement parameters +-- cellDCHMeasOccasionInfo-TDD128: to configure SS for CELL-DCH measurement occasion according to TS 25.331[21] clause 8.5.11a and 8.6.7.26. No DL transmission shall be performed in the calculated timeslot. The activationTime is set to 'activateNow'. +-- +--************************************************************** +CPHY-MeasurementConfig-REQ ::= SEQUENCE { + cellId INTEGER(0..63), + activationTime SS-ActivationTime, + measurement CHOICE { + rel9 SEQUENCE { + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 + -- LCR TDD Rel9 + } + } + } + +--************************************************************** +-- +-- CPHY-MeasurementConfig-CNF +-- Confirm a previous CPHY-MeasurementConfig-REQ being successful. +-- +--************************************************************** +CPHY-MeasurementConfig-CNF ::= SEQUENCE { + cellId INTEGER(0..63) + } + +--************************************************************** +-- +-- CRLC-Ciphering-Activate-CNF +-- To confirm to activate or inactivate the ciphering +-- +--************************************************************** + +CRLC-Ciphering-Activate-CNF ::= SEQUENCE { + cellId INTEGER (-1..63)} + +--************************************************************** +-- +-- CRLC-Ciphering-Activate-REQ +-- To request to start, restart or stop downlink ciphering or uplink deciphering. The RB-identity applied to routingInfo indicates the SRB being not suspended during the execution of the ciphering mode command. Each call of the ASP includes one RLC SN in rb-DL-CiphActivationTimeInfo for the corresponding rb-identity. +-- +--************************************************************** + +CRLC-Ciphering-Activate-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + ratType RatType, + cn-DomainIdentity CN-DomainIdentity, + ciphActivationInfo CiphActivationInfo, + incHFN RLC-IncMode +} + +--************************************************************** +-- +-- CRLC-Config-CNF +-- For RLC emulator to comfirm that a previous attempt to establish, reconfigure or release a radio bearer has been successful +-- +--************************************************************** + +CRLC-Config-CNF ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CRLC-Config-FDD-REQ +-- To request to setup, reconfigure or release RLC entity +-- +--************************************************************** + +CRLC-Config-FDD-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + ratType RatType, + configMessage CrlcConfigReq, + activationTime SS-ActivationTime OPTIONAL +} + +--************************************************************** +-- +-- CRLC-Config-TDD-REQ +-- To request to setup, reconfigure or release RLC entity +-- +--************************************************************** + +CRLC-Config-TDD-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + ratType RatType, + configMessage CrlcConfigReq-TDD, + activationTime SS-ActivationTime OPTIONAL +} + +--************************************************************** +-- +-- CRLC-Integrity-Activate-CNF +-- To confirm to activate or inactivate the integrity protection +-- +--************************************************************** + +CRLC-Integrity-Activate-CNF ::= SEQUENCE { + cellId INTEGER (-1..63) +} + +--************************************************************** +-- +-- CRLC-Integrity-Activate-REQ +-- To request to start or to modify the downlink or uplink integrity protection. The ASP shall be called before the sending of SECURITY MODE COMMAND. It activates the integrity on all SRBs in DL. The ASP shall not be called if the integrity shall be switched off in the test case. +-- +--************************************************************** + +CRLC-Integrity-Activate-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + cn-DomainIdentity CN-DomainIdentity, + integrityActivationInfo IntegrityActivationInfo +} + +--************************************************************** +-- +-- CRLC-Integrity-Failure-IND +-- RLC emulator reports the occurrences of a failure in integrity protection, i.e. reception of an integrity-protected RLC AM/UM SDU containing a non-matching X-MAC value compared to the desired. +-- +--************************************************************** + +CRLC-Integrity-Failure-IND ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + failureCause ENUMERATED { codeNotMatched(0) } +} + +--************************************************************** +-- +-- CRLC-ProhibitRLC-Ack-CNF +-- To confirm that the reception of a CRLC-ProhibitRLC-Ack-REQ. +-- +--************************************************************** + +CRLC-ProhibitRLC-Ack-CNF ::= SEQUENCE{ + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + supportflag SupportFlag DEFAULT noNeed +} + +--************************************************************** +-- +-- CRLC-ProhibitRLC-Ack-REQ +-- To request the SS to prohibit/Continue acknowledging RLC SDUs. +-- +--************************************************************** + + +CRLC-ProhibitRLC-Ack-REQ ::= SEQUENCE{ + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + mode ENUMERATED{prohibit(0), continue(1)} +} + +--************************************************************** +-- +-- CRLC-RRC-MessageSN-CNF +-- To return the counter I value (HFN and RRC message sequence number) for sending the next DL RRC message or for receiving the next UL RRC message on the concerned SRB. +-- COUNT-I-MSB is the 28 MSB of the COUNT-I (HFN) +-- +--************************************************************** + +CRLC-RRC-MessageSN-CNF ::= SEQUENCE +{ + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + count-I-MSB-UL COUNT-I-MSB, + count-I-LSB-UL RRC-SequenceNumber, + count-I-MSB-DL COUNT-I-MSB, + count-I-LSB-DL RRC-SequenceNumber +} + +--************************************************************** +-- +-- CRLC-RRC-MessageSN-REQ +-- To request the SS to return the values in COUNT-I for sending the next DL RRC message or for receiving the next UL RRC message on the concerned SRB. +-- +--************************************************************** + +CRLC-RRC-MessageSN-REQ ::= SEQUENCE +{ + cellId INTEGER (-1..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CRLC-Resume-CNF +-- To confirm the resume request +-- +--************************************************************** + +CRLC-Resume-CNF ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CRLC-Resume-REQ +-- To request to resume data transmission. +-- If the SS implemented the optional suspension of UL data PDUs, then the processing in the UL of data PDUs shall be resumed. Any suspended UL control PDUs and Piggybacked Status shall be preceeded or resumed. +-- +--************************************************************** + +CRLC-Resume-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CRLC-SecurityMode-Config-CNF +-- To confirm to configure the ciphering +-- +--************************************************************** + +CRLC-SecurityMode-Config-CNF ::= SEQUENCE { + cellId INTEGER (-1..63) +} + +--************************************************************** +-- +-- CRLC-SecurityMode-Config-REQ +-- To request to configure the RLC security mode +-- If several subsequent CRLC-Integrity-Activate-REQ or CRLC-Ciphering-Activate-REQ follow this ASP, the SS shall take a serial of specified actions on the same contents in this ASP at the activation time indicated in each CRLC- Integrity (or Ciphering)-Activate-REQ. +-- +--************************************************************** + +CRLC-SecurityMode-Config-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + rlcSecurityInfo SecurityInfo +} + +--************************************************************** +-- +-- CRLC-SequenceNumber-CNF +-- To return the requested counter sequence number to which the next DL PDU to be sent or the expected UL PDU to be received. +-- +--************************************************************** + +CRLC-SequenceNumber-CNF ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + count-C-MSB-UL COUNT-C-MSB , + count-C-LSB-UL RLC-SequenceNumber, + count-C-MSB-DL COUNT-C-MSB , + count-C-LSB-DL RLC-SequenceNumber +} + +--************************************************************** +-- +-- CRLC-SequenceNumber-REQ +-- To request the RLC layer to return current counter sequence numbers to which the next DL PDU to be sent or the expected UL PDU to be received. +-- +--************************************************************** + +CRLC-SequenceNumber-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CRLC-SetRRC-MessageSN-CNF +-- To confirm the RRC message sequence number setting request +-- +--************************************************************** + +CRLC-SetRRC-MessageSN-CNF ::= SEQUENCE +{ + cellId INTEGER (-1..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CRLC-SetRRC-MessageSN-REQ +-- To request the SS to set the RRC message sequence number in COUNT-I to the value specified in this ASP. The ASP is used to initialise SS RRC +-- +--************************************************************** + +CRLC-SetRRC-MessageSN-REQ ::= SEQUENCE +{ + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + count-I-LSB-UL RRC-SequenceNumber OPTIONAL, + count-I-LSB-DL RRC-SequenceNumber OPTIONAL +} + +--************************************************************** +-- +-- CRLC-Suspend-CNF +-- To confirm the suspension of data transmission. The parameter vt indicates either the value of the Send State Variable VT(S) for AM, or the value of Data State Varialble VT(US) for UM. +-- +--************************************************************** + +CRLC-Suspend-CNF ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + vt RLC-SequenceNumber +} + +--************************************************************** +-- +-- CRLC-Suspend-REQ +-- To request the suspension of data transmission. The parameter n indicates that an RLC entity will not send a PDU with "Sequence Number" VT(S)+N for AM and "Sequence Number" VT(US)+N for UM, where N is a non-negative integer. Optionally an SS may start immediate suspension of processing of data PDUs in the UL. The UL control PDUs and Piggybacked Status may optionally be processed. +-- +--************************************************************** + +CRLC-Suspend-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + n RLC-SequenceNumber +} + +--************************************************************** +-- +-- RLC-AM-DATA-CNF +-- +--************************************************************** + +RLC-AM-DATA-CNF ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + mui Mui +} + +--************************************************************** +-- +-- RLC-AM-DATA-IND +-- To indicate to receive DATA using ackowledged mode +-- +--************************************************************** + +RLC-AM-DATA-IND ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + integrityResult IntegrityResult , + aM-message CHOICE { + uL-DCCH-Message UL-DCCH-Message, + uL-CCCH-Message UL-CCCH-Message, + uL-SHCCH-Message UL-SHCCH-Message + } +} + +--************************************************************** +-- +-- RLC-AM-DATA-REQ +-- To request to transmit DATA using ackowledged mode +-- +--************************************************************** + +RLC-AM-DATA-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + confirmationRequest AmConfirmationRequest, + aM-message CHOICE { + dL-DCCH-Message DL-DCCH-Message, + dL-CCCH-Message DL-CCCH-Message, + pCCH-Message PCCH-Message, + dL-SHCCH-Message DL-SHCCH-Message, + bCCH-FACH-Message BCCH-FACH-Message, + bCCH-BCH-Message BCCH-BCH-Message, + invalid-dL-DCCH-Message Invalid-DL-DCCH-Message + -- invalid-dL-CCCH-Message Invalid-DL-CCCH-Message, + -- invalid-dL-SHCCH-Message Invalid-DL-SHCCH-Message + } +} + +--************************************************************** +-- +-- RLC-TR-DATA-IND +-- To indicate to receivet DATA using transparent mode +-- +--************************************************************** + +RLC-TR-DATA-IND ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + tM-message CHOICE { + uL-DCCH-Message UL-DCCH-Message, + uL-CCCH-Message UL-CCCH-Message, + uL-SHCCH-Message UL-SHCCH-Message + } +} + +--************************************************************** +-- +-- RLC-TR-DATA-REQ +-- To request to transmit DATA using transparent mode +-- +--************************************************************** + +RLC-TR-DATA-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + tM-message CHOICE { + dL-DCCH-Message DL-DCCH-Message, + dL-CCCH-Message DL-CCCH-Message, + pCCH-Message PCCH-Message, + dL-SHCCH-Message DL-SHCCH-Message, + bCCH-FACH-Message BCCH-FACH-Message, + bCCH-BCH-Message BCCH-BCH-Message + -- invalid-dL-DCCH-Message Invalid-DL-DCCH-Message, + -- invalid-dL-CCCH-Message Invalid-DL-CCCH-Message, + -- invalid-dL-SHCCH-Message Invalid-DL-SHCCH-Message + } +} + +--************************************************************** +-- +-- RLC-UM-DATA-IND +-- To indicate to receivet DATA using unacknowledged mode +-- +--************************************************************** + +RLC-UM-DATA-IND ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + integrityResult IntegrityResult, + uM-message CHOICE { + uL-DCCH-Message UL-DCCH-Message, + uL-CCCH-Message UL-CCCH-Message, + uL-SHCCH-Message UL-SHCCH-Message + } +} + +--************************************************************** +-- +-- RLC-UM-DATA-REQ +-- To request to transmit DATA using unacknowledged mode +-- +--************************************************************** + +RLC-UM-DATA-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + uM-message CHOICE { + dL-DCCH-Message DL-DCCH-Message, + dL-CCCH-Message DL-CCCH-Message, + pCCH-Message PCCH-Message, + dL-SHCCH-Message DL-SHCCH-Message, + bCCH-FACH-Message BCCH-FACH-Message, + bCCH-BCH-Message BCCH-BCH-Message, + invalid-dL-DCCH-Message Invalid-DL-DCCH-Message --, + -- invalid-dL-CCCH-Message Invalid-DL-CCCH-Message, + -- invalid-dL-SHCCH-Message Invalid-DL-SHCCH-Message + }, + specialLI BOOLEAN +} + +--************************************************************** +-- +-- CMAC-MACe-Config-CNF +-- Confirm a previous CMAC-MACe-Config-REQ being successful. +-- +--************************************************************** + +CMAC-MACe-Config-CNF ::= SEQUENCE { + nodeB-Id INTEGER(0..63) +} + +--************************************************************** +-- +-- CMAC-MACe-Config-FDD-REQ +-- +--************************************************************** + +CMAC-MACe-Config-FDD-REQ ::= SEQUENCE { + nodeB-Id INTEGER(0..63), + configMessage CHOICE { + setup MACeConfig, + reconfig MACeConfig, + reset NULL, + release SS-ActivationTime + } +} + +--************************************************************** +-- +-- CMAC-MACe-Config-TDD-REQ +-- PCO Type: CSAP +-- +--************************************************************** + +CMAC-MACe-Config-TDD-REQ ::= SEQUENCE { + nodeB-Id INTEGER(0..63), + configMessage CHOICE { + setup MACeConfig-TDD, + reconfig MACeConfig-TDD, + reset NULL, + release SS-ActivationTime + } +} + +--************************************************************** +-- +-- CMAC-MACe-NodeB-CellMapping-CNF +-- Confirm a previous CMAC-MACe-NodeB-CellMapping-REQ being successful. +-- +--************************************************************** + +CMAC-MACe-NodeB-CellMapping-CNF ::= SEQUENCE { + nodeB-Id INTEGER(0..63) +} + +--************************************************************** +-- +-- CMAC-MACe-NodeB-CellMapping-REQ +-- To put a set of cells under the control of a MAC-e entity indicated by nodeB-Id, which is configured by CMAC-MAC-e-Config-REQ. +-- This ASP establishes the routing relation between E-DCH related channels in these cells with a MAC-e entity. +-- A cell is mapped to only one NodeB, and the cellId allocation is unique in a test. +-- +--************************************************************** + +CMAC-MACe-NodeB-CellMapping-REQ ::= SEQUENCE { + nodeB-Id INTEGER(0..63), + celllist SEQUENCE OF INTEGER (0..63) +} + +--************************************************************** +-- +-- CMAC-MACes-Config-CNF +-- Confirm a previous CMAC-MACes-Config-REQ being successful. cellId=-1. +-- +--************************************************************** + +CMAC-MACes-Config-CNF ::= SEQUENCE { + cellId INTEGER (-1..63) +} + +--************************************************************** +-- +-- CMAC-MACes-Config-REQ +-- This ASP is used for creating and configuring, reconfiguring, resetting or releasing an MAC-es, a cell / nodeB-independent entity in the SS. cellId=-1. +-- +--************************************************************** + +CMAC-MACes-Config-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + configMessage CHOICE { + setup MACesConfig, + reconfig MACesConfig, + reset NULL, + release SS-ActivationTime } +} + +--************************************************************** +-- +-- CMAC-MAChs-TFRCconfigure-CNF +-- Applicable Rel-5 or later. +-- Confirm a previous CMAC-MAChs-TFRCconfigure-REQ being successful. +-- +--************************************************************** + +CMAC-MAChs-MACehs-TFRCconfigure-CNF ::= SEQUENCE { + cellId INTEGER (-1..63) +} + +--************************************************************** +-- +-- CMAC-MAChs-TFRCconfigure-FDD-REQ +-- Applicable Rel-5 or later. +-- To configure the TFRC selection entity in the MAC-hs entity. +-- channelisationCodeOffset + noOfChannelisationCodes shall not be great than 15; +-- noOfChannelisaionCodes = 0 means to delete the HS-PDSCH and HS-SCCH channels, and release all related resource. +-- If explicit is selected, the SS shall use the values specified here for the parameters "modulationScheme", "channelisationCodeOffset", "noOfChannelisatonCodes ", tbSizeIndexOnHS-SCCH", "redundancyVersion" and "hs-PDSCH-TxPower". +-- If sS-Configured is selected, the values specified here are the ranges for "channelisationCodeOffset", "noOfChannelisationCodes", and the initial value of HS-PDSCH transmission power, the SS shall dynamically select the suitable values for the parameters "modulationScheme", "channelisationCodeOffset", "noOfChannelisatonCodes ", tbSizeIndexOnHS-SCCH", "redundancyVersion" and "hs-PDSCH-TxPower" according to the CQI information reported by the UE and the UE's capability category, +-- +--************************************************************** + +CMAC-MAChs-MACehs-TFRCconfigure-FDD-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + tfrcConfigMode CHOICE { + explicitlyConfigured SEQUENCE { + modulationScheme ModulationScheme, + channelisationCodeOffset INTEGER (1..15), --@sic R5w140013 sic@ + noOfChannelisationCodes INTEGER (1..15), + tbSizeIndexOnHS-SCCH INTEGER (0..63), + minimumInterTTIinterval INTEGER (1..3), + redundancyVersions RedundancyVersionList, + hs-PDSCH-TxPower DL-TxPower -- default offset related + -- to p-CPICH or s-CPICH + }, + sS-Configured SEQUENCE { + minChannelisationCodeOffset INTEGER (1..15), + maxNoOfChannelisationCodes INTEGER (1..15), + iniHS-PDSCH-TxPower DL-TxPower, -- default offset related + -- to p-CPICH or s-CPICH + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoStatus BOOLEAN DEFAULT FALSE + }, + explicitHS-SCCH-LessMode SEQUENCE{ + hs-pdsch-CodeIndex INTEGER (1..15), + hs-scch-LessTFI INTEGER (1..90), + hs-scch-LessSecondCodeApplicability BOOLEAN, + tbs INTEGER (0..3), + -- the index of tbs for HS-SCCH less operation + -- The value should be consistent with code index, TFI and second + -- code applicability + minimumInterTTIinterval INTEGER (1..3), + hs-PDSCH-TxPower DL-TxPower + -- default offset related to p-CPICH or s-CPICH + }, + explicitMIMO SEQUENCE { + modulationSchemeAndNumTB INTEGER(0..7), + -- set according to table 14 of 25.212 + -- Values 1,2 and 5 are used for 64QAM+MIMO. Rel-8 or later + channelisationCodeOffset INTEGER (1..15), + noOfChannelisationCodes INTEGER (1..15), + precodingWeight2 INTEGER (0..3), + -- set according to table 14a of 25.212 + primaryTB-SizeIndexOnHS-SCCH INTEGER (0..63), + secondaryTB-SizeIndexOnHS-SCCH INTEGER (0..63) OPTIONAL, + -- present only if second TB is to be tx as per modulationSchemeAndNumTB + minimumInterTTIinterval INTEGER (1..3), + primaryRedundancyVersions RedundancyVersionList, + secondaryRedundancyVersions RedundancyVersionList OPTIONAL, + -- present only if second TB is to be tx as per modulationSchemeAndNumTB + hs-PDSCH-TxPower DL-TxPower -- default offset related + -- to p-CPICH or s-CPICH + }, + sS-Configured-DC SEQUENCE { + serving-minChannelisationCodeOffset INTEGER (1..15), + serving-maxNoOfChannelisationCodes INTEGER (1..15), + serving-mimoStatus BOOLEAN DEFAULT FALSE, -- Rel-9 or later + sec-minChannelisationCodeOffset INTEGER (1..15), + sec-maxNoOfChannelisationCodes INTEGER (1..15), + sec-mimoStatus BOOLEAN DEFAULT FALSE, -- Rel-9 or later + iniHS-PDSCH-TxPower DL-TxPower, + -- default offset related + -- to p-CPICH or s-CPICH + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL + }, + explicitlyDC SEQUENCE { + servingTFRC SEQUENCE { + modulationScheme ModulationScheme, + channelisationCodeOffset INTEGER (1..15), + noOfChannelisationCodes INTEGER (1..15), + tbSizeIndexOnHS-SCCH INTEGER (0..63), + minimumInterTTIinterval INTEGER (1..3), + redundancyVersions RedundancyVersionList, + hs-PDSCH-TxPower DL-TxPower -- default offset related + -- to p-CPICH or s-CPICH + } OPTIONAL, -- when omitted then no data is sent on the serving HS-DSCH cell + secondaryTFRC SEQUENCE { + modulationScheme ModulationScheme, + channelisationCodeOffset INTEGER (1..15), + noOfChannelisationCodes INTEGER (1..15), + tbSizeIndexOnHS-SCCH INTEGER (0..63), + minimumInterTTIinterval INTEGER (1..3), + redundancyVersions RedundancyVersionList, + hs-PDSCH-TxPower DL-TxPower -- default offset related + -- to p-CPICH or s-CPICH + } OPTIONAL -- when omitted then no data is sent on the secondary HS-DSCH cell + }, + explicitlyDC-MIMO SEQUENCE { -- Rel-9 or later + servingTFRC SEQUENCE{ + modulationSchemeAndNumTB INTEGER(0..7), + -- set according to table 14 of 25.212 + -- Values 1,2 and 5 are used for 64QAM+MIMO. Rel-8 or later + channelisationCodeOffset INTEGER (1..15), + noOfChannelisationCodes INTEGER (1..15), + precodingWeight2 INTEGER (0..3), + -- set according to table 14a of 25.212 + primaryTB-SizeIndexOnHS-SCCH INTEGER (0..63), + secondaryTB-SizeIndexOnHS-SCCH INTEGER (0..63) OPTIONAL, + -- present only if second TB is to be tx + -- as per modulationSchemeAndNumTB + minimumInterTTIinterval INTEGER (1..3), + primaryRedundancyVersions RedundancyVersionList, + secondaryRedundancyVersions RedundancyVersionList OPTIONAL, + -- present only if second TB is to be tx + -- as per modulationSchemeAndNumTB + hs-PDSCH-TxPower DL-TxPower + -- default offset related + -- to p-CPICH or s-CPICH + } OPTIONAL, + -- when omitted then no data is sent on the serving HS-DSCH cell + secondaryTFRC SEQUENCE{ + modulationSchemeAndNumTB INTEGER(0..7), + -- set according to table 14 of 25.212 + -- Values 1,2 and 5 are used for 64QAM+MIMO. Rel-8 or later + channelisationCodeOffset INTEGER (1..15), + noOfChannelisationCodes INTEGER (1..15), + precodingWeight2 INTEGER (0..3), + -- set according to table 14a of 25.212 + primaryTB-SizeIndexOnHS-SCCH INTEGER (0..63), + secondaryTB-SizeIndexOnHS-SCCH INTEGER (0..63) OPTIONAL, + -- present only if second TB is to be tx + -- as per modulationSchemeAndNumTB + minimumInterTTIinterval INTEGER (1..3), + primaryRedundancyVersions RedundancyVersionList, + secondaryRedundancyVersions RedundancyVersionList OPTIONAL, + -- present only if second TB is to be tx + -- as per modulationSchemeAndNumTB + hs-PDSCH-TxPower DL-TxPower + -- default offset related + -- to p-CPICH or s-CPICH + } OPTIONAL + -- when omitted then no data is sent on the secondary HS-DSCH cell + }, + relAspTypeExtension TFRCconfigure-r10OrLaterExtensionType -- Rel-10 or later @sic R5-130613 R5-134957 sic@ + }, + activationTime SS-ActivationTime, + ss-DTX-Info DRX-Info OPTIONAL, + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL +} + +--************************************************************** +-- +-- TFRCconfigure-r10OrLaterExtensionType +-- Rel-10 or later +-- Extension to configure the TFRC selection in the MAC-ehs entity when 4C-HSDPA is configured. +-- +--************************************************************** +TFRCconfigure-r10OrLaterExtensionType ::= CHOICE { + rel10-AspExt CHOICE { + sS-Configured-4C SEQUENCE { -- Rel-10 3C/4C HSDPA + serving-TFRC TFRC-Configured-Type, + firstSecondary-TFRC TFRC-Configured-Type, + secondSecondary-TFRC TFRC-Configured-Type, + thirdSecondary-TFRC TFRC-Configured-Type OPTIONAL, + -- for the third secondary cell when configured + iniHS-PDSCH-TxPower DL-TxPower, + -- default offset related + -- to p-CPICH or s-CPICH + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL + }, + explicitlyConfigured-4C SEQUENCE { -- Rel-10 3C/4C HSDPA + serving-TFRC TFRC-Explicit-Type OPTIONAL, + -- when omitted then no data is sent on the serving HS-DSCH cell + firstSecondary-TFRC TFRC-Explicit-Type OPTIONAL, + -- when omitted then no data is sent on the secondary HS-DSCH cell + secondSecondary-TFRC TFRC-Explicit-Type OPTIONAL, + -- when omitted then no data is sent on the secondary HS-DSCH cell + thirdSecondary-TFRC TFRC-Explicit-Type OPTIONAL + -- for the third secondary cell when configured + -- when omitted then no data is sent on the secondary HS-DSCH cell + }, + explicitlyConfigured-4C-MIMO SEQUENCE { -- Rel-10 3C/4C HSDPA + serving-TFRC TFRC-ExplicitMIMO-Type OPTIONAL, + -- when omitted then no data is sent on the serving HS-DSCH cell + firstSecondary-TFRC TFRC-ExplicitMIMO-Type OPTIONAL, + -- when omitted then no data is sent on the secondary HS-DSCH cell + secondSecondary-TFRC TFRC-ExplicitMIMO-Type OPTIONAL, + -- when omitted then no data is sent on the secondary HS-DSCH cell + thirdSecondary-TFRC TFRC-ExplicitMIMO-Type OPTIONAL + -- for the third secondary cell when configured + -- when omitted then no data is sent on the secondary HS-DSCH cell + } + } +} + +--************************************************************** +-- +-- TFRC-Configured-Type +-- Rel-10 or later. +-- +--************************************************************** + +TFRC-Configured-Type ::= SEQUENCE { + minChannelisationCodeOffset INTEGER (1..15), + maxNoOfChannelisationCodes INTEGER (1..15), + mimoStatus BOOLEAN DEFAULT FALSE +} + +--************************************************************** +-- +-- TFRC-Explicit-Type +-- Rel-10 or later. +-- +--************************************************************** + +TFRC-Explicit-Type ::= SEQUENCE{ + modulationScheme ModulationScheme, + channelisationCodeOffset INTEGER (1..15), + noOfChannelisationCodes INTEGER (1..15), + tbSizeIndexOnHS-SCCH INTEGER (0..63), + minimumInterTTIinterval INTEGER (1..3), + redundancyVersions RedundancyVersionList, + hs-PDSCH-TxPower DL-TxPower -- default offset related + -- to p-CPICH or s-CPICH +} + +--************************************************************** +-- +-- TFRC-ExplicitMIMO-Type +-- Rel-10 or later. +-- +--************************************************************** + +TFRC-ExplicitMIMO-Type ::= SEQUENCE{ + modulationSchemeAndNumTB INTEGER(0..7), + -- set according to table 14 of 25.212 + -- Values 1,2 and 5 are used for 64QAM+MIMO + channelisationCodeOffset INTEGER (1..15), + noOfChannelisationCodes INTEGER (1..15), + precodingWeight2 INTEGER (0..3), + -- set according to table 14a of 25.212 + primaryTB-SizeIndexOnHS-SCCH INTEGER (0..63), + secondaryTB-SizeIndexOnHS-SCCH INTEGER (0..63) OPTIONAL, + -- present only if second TB is to be tx + -- as per modulationSchemeAndNumTB + minimumInterTTIinterval INTEGER (1..3), + primaryRedundancyVersions RedundancyVersionList, + secondaryRedundancyVersions RedundancyVersionList OPTIONAL, + -- present only if second TB is to be tx + -- as per modulationSchemeAndNumTB + hs-PDSCH-TxPower DL-TxPower + -- default offset related + -- to p-CPICH or s-CPICH +} + + +--************************************************************** +-- +-- CMAC-MAChs-MACehs-TFRCconfigure-TDD-REQ +-- Applicable Rel-5 or later. +-- To configure the TFRC selection entity in the MAC-hs entity. +-- channelisationCodeOffset + noOfChannelisationCodes shall not be great than 15; +-- noOfChannelisaionCodes = 0 means to delete the HS-PDSCH and HS-SCCH channels, and release all related resource. +-- If explicit is selected, the SS shall use the values specified here for the parameters "modulationScheme", "channelisationCodeOffset", "noOfChannelisatonCodes ", tbSizeIndexOnHS-SCCH", "redundancyVersion" and "hs-PDSCH-TxPower". +-- If sS-Configured is selected, the values specified here are the ranges for "channelisationCodeOffset", "noOfChannelisationCodes", and the initial value of HS-PDSCH transmission power, the SS shall dynamically select the suitable values for the parameters "modulationScheme", "channelisationCodeOffset", "noOfChannelisatonCodes ", tbSizeIndexOnHS-SCCH", "redundancyVersion" and "hs-PDSCH-TxPower" according to the CQI information reported by the UE and the UE's capability category, +-- +--************************************************************** + +CMAC-MAChs-MACehs-TFRCconfigure-TDD-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + tfrcConfigMode CHOICE { + explicitlyConfigured SEQUENCE { + modulationScheme ModulationScheme, + noOfTimeSlots BIT STRING (SIZE (5)), + startCode HS-ChannelisationCode-LCR, + stopCode HS-ChannelisationCode-LCR, + noOfCodesPerTimeslot INTEGER (0..16), + tbSizeIndexOnHS-SCCH INTEGER (0..63), + redundancyVersions RedundancyVersionList, + hs-PDSCH-TxPower DL-TxPower -- default offset related + -- to p-PCCPCH + }, + sS-Configured SEQUENCE { + numofTimeslots INTEGER (0..6), + startCode HS-ChannelisationCode-LCR, + stopCode HS-ChannelisationCode-LCR, + numofCodesPerTimeslot INTEGER (0..16), + iniHS-PDSCH-TxPower DL-TxPower, -- default offset related + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL + }, + relAspTypeExtension SEQUENCE{} -- Rel-10 or later + }, + activationTime SS-ActivationTime OPTIONAL +} + +--************************************************************** +-- +-- HS-DPCCHInfo-r8 +-- mimoStatus represents status of MIMO and shall be set only if mimo-Parameters are provided in HS-PDSCH configuration. +-- secondaryServing-HS-DSCH-Cell indicates if the HS-DSCH secondary serving cell is activated (see 3GPP TS 25.214[12] cl 6A.1) +-- @sic R5-101047 sic@ +-- +--************************************************************** + +HS-DPCCHInfo-r8 ::= SEQUENCE { + cqi-RepetitionFactor CQI-RepetitionFactor, + ackNackRepetitionFactor ACK-NACK-repetitionFactor, + mimoStatus BOOLEAN DEFAULT FALSE, + secondaryServing-HS-DSCH-Cell ENUMERATED { deactivated (0), activated (1) } DEFAULT deactivated + -- Rel-8 or later +} + +--************************************************************** +-- +-- SS-MBMS-MICHConfigurationInfo-r6 +-- Rel-6 or later. +-- +--************************************************************** + +SS-MBMS-MICHConfigurationInfo-r6 ::= SEQUENCE { + michinfo MBMS-MICHConfigurationInfo-r6, + sccpchId-associated INTEGER (0..31) +} + +--************************************************************** +-- +-- Invalid-DL-DCCH-Message +-- PCO Type: DSAP +-- +--************************************************************** + +Invalid-DL-DCCH-Message ::= SEQUENCE { + integrityCheckInfo [0] IntegrityCheckInfo OPTIONAL +-- asn1-message [1] Invalid-DL-DCCH-MsgType +} + +U-CMAC-CONFIG-REQ ::= CHOICE { + config-FDD CMAC-Config-FDD-REQ, + config-TDD CMAC-Config-TDD-REQ, + sysInfo CMAC-SYSINFO-Config-REQ, + secMode CMAC-SecurityMode-Config-REQ, + cipher CMAC-Ciphering-Activate-REQ, + page-FDD CMAC-PAGING-Config-FDD-REQ, + page-TDD CMAC-PAGING-Config-TDD-REQ, + configMACes CMAC-MACes-Config-REQ, + configMACe-FDD CMAC-MACe-Config-FDD-REQ, + configMACe-TDD CMAC-MACe-Config-TDD-REQ, + nodeB CMAC-MACe-NodeB-CellMapping-REQ, + tfrc-FDD CMAC-MAChs-MACehs-TFRCconfigure-FDD-REQ, + tfrc-TDD CMAC-MAChs-MACehs-TFRCconfigure-TDD-REQ, + configMACi-FDD CMAC-MACi-Config-FDD-REQ, + configMACi-TDD CMAC-MACi-Config-TDD-REQ, + nodeB-MACi CMAC-MACi-NodeB-CellMapping-REQ, + configMACis CMAC-MACis-Config-REQ, + configMACi-AG-FDD CMAC-MACi-AG-FDD-REQ, --@sic R5w140013 sic@ + configMACi-AG-TDD CMAC-MACi-AG-TDD-REQ, --@sic R5w140013 sic@ + configMACiE-TFC-FDD CMAC-MACi-E-TFC-Restriction-FDD-REQ, --@sic R5w140208 sic@ + configMACiE-TFC-TDD CMAC-MACi-E-TFC-Restriction-TDD-REQ, --@sic R5w140208 sic@ + configHARQ-MultiFlow CMAC-MACehs-HARQAssign-MultiFlows-REQ, + configRestriction CMAC-Restriction-REQ +} + +U-CMAC-CONFIG-CNF ::= CHOICE { + config CMAC-Config-CNF, + sysInfo CMAC-SYSINFO-Config-CNF, + secMode CMAC-SecurityMode-Config-CNF, + cipher CMAC-Ciphering-Activate-CNF, + page CMAC-PAGING-Config-CNF, + configMACes CMAC-MACes-Config-CNF, + configMACe CMAC-MACe-Config-CNF, + nodeB CMAC-MACe-NodeB-CellMapping-CNF, + tfrc CMAC-MAChs-MACehs-TFRCconfigure-CNF, + configMACi CMAC-MACi-Config-CNF, + nodeB-MACi CMAC-MACi-NodeB-CellMapping-CNF, + configMACis CMAC-MACis-Config-CNF, + configMACi-AG-FDD CMAC-MACi-AG-FDD-CNF, -- @sic R5-144761 sic@ + configMACi-AG-TDD CMAC-MACi-AG-TDD-CNF, -- @sic R5-144761 sic@ + configMACiE-TFC CMAC-MACi-E-TFC-Restriction-CNF , + configHARQ-MultiFlow CMAC-MACehs-HARQAssign-MultiFlows-CNF, + configRestriction CMAC-Restriction-CNF +} + +U-CPHY-CONFIG-CNF ::= CHOICE { + rlSetup CPHY-RL-Setup-CNF, + rlModify CPHY-RL-Modify-CNF, + rlRelease CPHY-RL-Release-CNF, + trchConfig CPHY-TrCH-Config-CNF, + trchRelease CPHY-TrCH-Release-CNF, + cellConfig CPHY-Cell-Config-CNF, + cellRelease CPHY-Cell-Release-CNF, + ini CPHY-Ini-CNF, + txPower CPHY-Cell-TxPower-Modify-CNF, + frameNo CPHY-Frame-Number-CNF, + sync CPHY-Sync-IND, + outOfSync CPHY-Out-of-Sync-IND, + hSDpcchCQI-MultiCell CPHY-HS-DPCCH-CQI-MultiCell-CNF, -- @sic R5-134957 sic@ + hSDpcchCQI-MultiCellInd CPHY-HS-DPCCH-CQI-MultiCell-IND, -- @sic R5-134957 sic@ + measurementConfig CPHY-MeasurementConfig-CNF, -- @sic R5-134957 sic@ + hSDpcchCQI CPHY-HS-DPCCH-CQI-CNF, + hSDpcchCQI-Ind CPHY-HS-DPCCH-CQI-IND + } + +U-CPHY-CONFIG-REQ ::= CHOICE { + rlSetup-FDD CPHY-RL-Setup-FDD-REQ, + rlSetup-TDD CPHY-RL-Setup-TDD-REQ, + rlModify-FDD CPHY-RL-Modify-FDD-REQ, + rlModify-TDD CPHY-RL-Modify-TDD-REQ, + rlRelease-FDD CPHY-RL-Release-FDD-REQ, + rlRelease-TDD CPHY-RL-Release-TDD-REQ, + trchConfig-FDD CPHY-TrCH-Config-FDD-REQ, + trchConfig-TDD CPHY-TrCH-Config-TDD-REQ, + trchRelease-FDD CPHY-TrCH-Release-FDD-REQ, + trchRelease-TDD CPHY-TrCH-Release-TDD-REQ, + cellConfig-FDD CPHY-Cell-Config-FDD-REQ, + cellConfig-TDD CPHY-Cell-Config-TDD-REQ, + cellRelease CPHY-Cell-Release-REQ, + ini CPHY-Ini-REQ, + txPower CPHY-Cell-TxPower-Modify-REQ, + frameNo CPHY-Frame-Number-REQ, + hSDpcchCQI-MultiCell CPHY-HS-DPCCH-CQI-MultiCell-REQ, -- @sic R5-134957 sic@ + measurementConfig CPHY-MeasurementConfig-REQ, -- @sic R5-134957 sic@ + hSDpcchCQI CPHY-HS-DPCCH-CQI-REQ +} + +U-CRLC-CONFIG-CNF ::= CHOICE { + config CRLC-Config-CNF, + seqNo CRLC-SequenceNumber-CNF, + secMode CRLC-SecurityMode-Config-CNF, + cipher CRLC-Ciphering-Activate-CNF, + integrity CRLC-Integrity-Activate-CNF, + integrityFail CRLC-Integrity-Failure-IND, + setRRCmsgSN CRLC-SetRRC-MessageSN-CNF, + rrcMsgSN CRLC-RRC-MessageSN-CNF, + resume CRLC-Resume-CNF, + suspend CRLC-Suspend-CNF, + prohibit CRLC-ProhibitRLC-Ack-CNF, + bindTestDataMultiFlow CRLC-BindTestDataInMultipleMACehs-PDU-MultiFlows-CNF +} + +U-CRLC-CONFIG-REQ ::= CHOICE { + config-FDD CRLC-Config-FDD-REQ, -- @sic R5-110103 sic@ + config-TDD CRLC-Config-TDD-REQ, -- @sic R5-110103 sic@ + seqNo CRLC-SequenceNumber-REQ, + secMode CRLC-SecurityMode-Config-REQ, + cipher CRLC-Ciphering-Activate-REQ, + integrity CRLC-Integrity-Activate-REQ, + setRRCmsgSN CRLC-SetRRC-MessageSN-REQ, + rrcMsgSN CRLC-RRC-MessageSN-REQ, + resume CRLC-Resume-REQ, + suspend CRLC-Suspend-REQ, + prohibit CRLC-ProhibitRLC-Ack-REQ, + bindTestDataMultiFlow CRLC-BindTestDataInMultipleMACehs-PDU-MultiFlows-REQ +} + +U-CPDCP-CONFIG-CNF ::= CHOICE { + config CPDCP-Config-CNF +} + +U-CPDCP-CONFIG-REQ ::= CHOICE { + config CPDCP-Config-REQ +} +--************************************************************** +-- +-- CMAC-MACi-Config-CNF +-- Rel-8 or later +-- Confirm a previous CMAC-MACi-Config-REQ being successful. +-- +--************************************************************** +CMAC-MACi-Config-CNF ::= SEQUENCE { + nodeB-Id INTEGER(0..63) +} + +--************************************************************** +-- +-- CMAC-MACi-Config-FDD-REQ +-- Rel-8 or later +-- +--************************************************************** +CMAC-MACi-Config-FDD-REQ ::= SEQUENCE { + nodeB-Id INTEGER(0..63), + configMessage CHOICE { + setup MACiConfig-FDD, + reconfig MACiConfig-FDD, + reset NULL, + release SS-ActivationTime + } +} + +--************************************************************** +-- +-- CMAC-MACi-Config-TDD-REQ +-- Rel-8 or later +-- +--************************************************************** +CMAC-MACi-Config-TDD-REQ ::= SEQUENCE { + nodeB-Id INTEGER(0..63), + configMessage CHOICE { + setup MACiConfig-TDD, + reconfig MACiConfig-TDD, + reset NULL, + release SS-ActivationTime + } +} + +--************************************************************** +-- +-- MACiConfig-FDD +-- If the macHeaderManipulation field is 'NormalMacHeader' in lCH-Mappinglist, then data received on the E-DCH (MAC-i PDU) shall have it's MAC header inspected to de-multiplex and to determine the appropriate routing, and the MACis PDU shall be passed to the MAC-is together with the relevant LCH-ID, length, F, CFN and subframe number. +-- If the macHeaderManipulation field field is 'OmitMacHeader', then data received on the E-DCH (MAC-i PDU) shall have it's MAC header inspected to de-multiplex and to determine the appropriate routing, then the MAC-i layer shall deliver the MAC-is PDU, SI and the related CFN, subframe number to the MAC-is entity. +-- connectedToMAC-is field is used to provide the possibility that the E DCH MACdFlows from only one MAC-i entity are connected to the MAC-is entity in the inter node B soft handover test cases. When MAC-i is configured in enhanced FACH UL using commonMac-i-r8, the MAC-i entity is always connected to MAC-is. In DC-HSUPA configuration, one MAC-i entity is connected to the MAC-is entity. In DC-HSUPA, e-DCHMacdFlows is applied to the two E-DCH transport channels in the primary and secondary UL frequency. +-- The IEs lCH-Mappinglist and e-DCHMacdFlows can be OMITted when changing the serving cell MAC-i without modification of MAC-i configurations. It will be applied in EDCH SHO. +-- ss-DRX-MAC-Info presence indicates UL DRX shall be applied. +-- Presence of tSN-FieldExtension indicates that the TSN field extension is used as defined in TS 25.321[17] clause 9.2.4.3; the absence indicates that 6 bits TSN is used. +--************************************************************** +MACiConfig-FDD ::= CHOICE { + mAC-i-r8 SEQUENCE { -- Rel-8 or later + activationTime SS-ActivationTime, + lCH-Mappinglist LCH-MappingList OPTIONAL, + e-DCHMacdFlows E-DCHMACdFlows OPTIONAL, + connectedToMAC-is BOOLEAN DEFAULT TRUE, + -- can be set to FALSE in inter nodeB SHO + ss-DRX-MAC-Info SS-DRX-MAC-Info OPTIONAL + }, + commonMac-i-r8 SEQUENCE { + activationTime SS-ActivationTime, + lCH-Mappinglist LCH-MappingList OPTIONAL, + e-DCHMacdFlows CommonE-DCHMACdFlows OPTIONAL, + additional-E-DCH-TransmitBackoff INTEGER (0..15), + max-CCCH-ResourceAllocation ENUMERATED { + tti8(0), tti12(1), tti16(2), tti20(3), tti24(4), tti32(5), + tti40(6), tti80(7)}, + max-PeriodForCollisionResolution INTEGER (8..24) + }, + mAC-i-r9 SEQUENCE { -- Rel-9 or later + activationTime SS-ActivationTime, + lCH-Mappinglist LCH-MappingList OPTIONAL, + e-DCHMacdFlows E-DCHMACdFlows OPTIONAL, + connectedToMAC-is BOOLEAN DEFAULT TRUE, -- can be set to FALSE in inter nodeB SHO + ss-DRX-MAC-Info SS-DRX-MAC-Info OPTIONAL, + tSN-FieldExtension BOOLEAN DEFAULT FALSE + }, + relAspTypeExtension SEQUENCE{} -- Rel-10 or later @sic R5-130613 sic@ +} + +--************************************************************** +-- +-- MACiConfig-TDD +-- If the macHeaderManipulation field is 'NormalMacHeader' in lCH-Mappinglist, then data received on the E-DCH (MAC-i PDU) shall have it's MAC header inspected to de-multiplex and to determine the appropriate routing, and the MACis PDU shall be passed to the MAC-is together with the relevant LCH-ID, length, F, CFN and subframe number. +-- If the macHeaderManipulation field field is 'OmitMacHeader', then data received on the E-DCH (MAC-i PDU) shall have it's MAC header inspected to de-multiplex and to determine the appropriate routing, then the MAC-i layer shall deliver the MAC-is PDU, SI and the related CFN, subframe number to the MAC-is entity. +-- connectedToMAC-is field is used to provide the possibility that the E DCH MACdFlows from only one MAC-i entity are connected to the MAC-is entity in the inter node B soft handover test cases. When MAC-i is configured in enhanced FACH UL using commonMac-i-r8, the MAC-i entity is always connected to MAC-is. In DC-HSUPA configuration, one MAC-i entity is connected to the MAC-is entity. In DC-HSUPA, e-DCHMacdFlows is applied to the two E-DCH transport channels in the primary and secondary UL frequency. +-- The IEs lCH-Mappinglist and e-DCHMacdFlows can be OMITted when changing the serving cell MAC-i without modification of MAC-i configurations. It will be applied in EDCH SHO. +-- ss-DRX-MAC-Info presence indicates UL DRX shall be applied. +-- +--************************************************************** +MACiConfig-TDD ::= CHOICE { + mAC-i-r8 SEQUENCE { -- Rel-8 or later + activationTime SS-ActivationTime, + lCH-Mappinglist LCH-MappingList OPTIONAL, + e-DCHMacdFlows E-DCHMACdFlows-TDD OPTIONAL, + connectedToMAC-is BOOLEAN DEFAULT TRUE + -- can be set to FALSE in inter nodeB SHO + }, + commonMac-i-r8 SEQUENCE { + activationTime SS-ActivationTime, + lCH-Mappinglist LCH-MappingList OPTIONAL, + e-DCHMacdFlows CommonE-DCHMACdFlows OPTIONAL --@sic R5w140013 sic@ + }, + relAspTypeExtension SEQUENCE{} -- Rel-10 or later @sic R5-130613 sic@ +} + +--************************************************************** +-- +-- CMAC-MACi-NodeB-CellMapping-CNF +-- Rel-8 or later +-- Confirm a previous CMAC-MACi-NodeB-CellMapping-REQ being successful. +-- +--************************************************************** +CMAC-MACi-NodeB-CellMapping-CNF ::= SEQUENCE { + nodeB-Id INTEGER(0..63) +} + +--************************************************************** +-- +-- CMAC-MACi-NodeB-CellMapping-REQ +-- Rel-8 or later +-- To put a set of cells under the control of a MAC-i entity indicated by nodeB-Id, which is configured by CMAC-MAC-i-Config-REQ. +-- This ASP establishes the routing relation between E-DCH related channels in these cells with a MAC-i entity. +-- A cell is mapped to only one NodeB, and the cellId allocation is unique in a test. +-- +--************************************************************** +CMAC-MACi-NodeB-CellMapping-REQ ::= SEQUENCE { + nodeB-Id INTEGER(0..63), + celllist SEQUENCE OF INTEGER (0..63) +} + +--************************************************************** +-- +-- CMAC-MACis-Config-CNF +-- Rel-8 or later +-- Confirm a previous CMAC-MACis-Config-REQ being successful. cellId=-1 except when CCCH is configured to MAC-i is entity. +-- +--************************************************************** +CMAC-MACis-Config-CNF ::= SEQUENCE { + cellId INTEGER(-1..63) +} + +--************************************************************** +-- +-- CMAC-MACis-Config-REQ +-- Rel-8 or later +-- This ASP is used for creating and configuring, reconfiguring, resetting or releasing an MAC-is, a cell / nodeB-independent entity in the SS, cellId=-1 except when CCCH is configured to MAC-i is entity. +-- +--************************************************************** +CMAC-MACis-Config-REQ ::= SEQUENCE { + cellId INTEGER(-1..63), + configMessage CHOICE { + setup MACisConfig, + reconfig MACisConfig, + reset NULL, + release SS-ActivationTime} +} + +--************************************************************** +-- +-- MACisConfig +-- MACisConfig establishes the mapping between logical channels and E DCH-MACd-Flows. +-- When the macTestMode is TRUE, the re-ordering entity shall not eliminate the duplicated packets, but passes them to RLC. macTestMode = "TRUE" is used for testing the retransmission function of HARQ process. +-- Presence of tSN-FieldExtension indicates that the TSN field extension is used as defined in TS 25.321[17] clause 9.2.4.3; the absence indicates that 6 bits TSN is used. +--************************************************************** +MACisConfig ::= CHOICE { + mACis-r8 SEQUENCE { -- Rel-8 or later + activationTime SS-ActivationTime, + lCHMappinglist LCH-MappingList, + macTestMode BOOLEAN DEFAULT FALSE + }, + mACis-r9 SEQUENCE { -- Rel-9 or later + activationTime SS-ActivationTime, + lCHMappinglist LCH-MappingList, + macTestMode BOOLEAN DEFAULT FALSE, + tSN-FieldExtension BOOLEAN DEFAULT FALSE + }, + relAspTypeExtension SEQUENCE{} -- Rel-10 or later @sic r5-130613 sic@ +} + + +--************************************************************** +-- +-- LCH-MappingList +-- +--************************************************************** +LCH-MappingList ::= SEQUENCE (SIZE (1..31)) OF LCH-Mapping + + +--************************************************************** +-- +-- LCH-Mapping +-- Both SRBs and RBs can be mapped onto E-DCH. The mechanism for control of MAC header manipulation (macHeaderManipulation) is applied to individual logical channels to be mapped on E-DCH. Typically, the SRBs are configured in 'NormalMacHeader" mode while the RBs in user plane can be configured either in 'NormalMacHeader" or in "OmitMacHeader" mode. +-- If the value of macHeaderManipulation field is 'NormalMacHeader', then data received on the E-DCH MACd flows supporting this logical channel shall have its MAC header inspected to determine the appropriate routing, and removed as normal. The MACis SDU shall be passed to the appropriate logical channel. +-- If the value of macHeaderManipulation field is 'OmitMacHeader', then data received on the E-DCH MACd flows supporting this logical channel shall have it's MAC header inspected to determine the appropriate routing, then the MAC-is layer shall deliver the MAC-is SDU, LCH-ID, Length, F,SI and the related CFN, subframe number, HARQ process identity to the appropriate logical channel. The TTCN receives these fields by RLC-TR-MACis-DATA-IND, then these fields can be checked by the TTCN. +-- HARQ ID = CFN mod 4 for TTI=10ms; +-- HARQ ID = (5*CFN + subframe number) mod 8 for TTI=2ms +-- +--************************************************************** +LCH-Mapping ::= SEQUENCE { + macHeaderManipulation MAC-HeaderManipulation, + logicalChannelIdentity LogicalChannelIdentity, + e-DCH-MAC-d-FlowIdentity E-DCH-MAC-d-FlowIdentity, + rlc-PDU-Size CHOICE { + flexibleSize RLC-PDU-SizeConstraint, + fixedSize RLC-PDU-SizeList + }, + includeInSchedulingInfo BOOLEAN, + mac-LogicalChannelPriority MAC-LogicalChannelPriority, + logicalChannelType LogicalChannelType, + rB-Identity INTEGER (-31..32) OPTIONAL +} + + +--************************************************************** +-- +-- CMAC-MACi-AG-FDD-CNF @sic R5-144761 sic@ +-- Confirm a previous CMAC-MACi-AG-REQ being successful. +-- +--************************************************************** +CMAC-MACi-AG-FDD-CNF ::= SEQUENCE { + nodeB-Id INTEGER(0..63), + cellId INTEGER(0..63) -- @sic R5-134957 sic@ +} + +--************************************************************** +-- +-- CMAC-MACi-AG-TDD-CNF @sic R5-144761 sic@ +-- Confirm a previous CMAC-MACi-AG-REQ being successful. +-- +--************************************************************** +CMAC-MACi-AG-TDD-CNF ::= SEQUENCE { + nodeB-Id INTEGER(0..63) +} + +--************************************************************** +-- +-- CMAC-MACi-AG-FDD-REQ +-- The hARQProcId shall be converted to the nearest CFN (and subframe number if TTI = 2 ms) by the SS, and the Absolute Grant is sent in that CFN (and subframe number if TTI = 2 ms). +-- The absolute grant is applied on the A-GCH configured in the referred cellId. +-- +--************************************************************** +CMAC-MACi-AG-FDD-REQ ::= SEQUENCE { + nodeB-Id INTEGER(0..63), + cellId INTEGER(0..63), + grantType ENUMERATED {primary(0), secondary(1)}, + absoluteGrantValue BIT STRING(SIZE(5)), + absoluteGrantScope BIT STRING(SIZE(1)), + hARQProcId INTEGER (0..7), + activationTime SS-ActivationTime +} + +--************************************************************** +-- +-- CMAC-MACi-AG-TDD-REQ +-- The hARQProcId shall be converted to the nearest CFN (and subframe number if TTI = 2 ms) by the SS, and the Absolute Grant is sent in that CFN (and subframe number if TTI = 2 ms). +-- The absolute grant is applied on the A-GCH configured in the referred cellId. +-- +--************************************************************** +CMAC-MACi-AG-TDD-REQ ::= SEQUENCE { + nodeB-Id INTEGER(0..63), + absoluteGrantValue BIT STRING(SIZE(5)), + channelisationCode UL-TS-ChannelisationCode, + tRRI BIT STRING(SIZE(5)), + rDI INTEGER(0..7), + eCSN INTEGER(0..7), + eI INTEGER(0..3), + eNI INTEGER(0..7), + hARQProcId INTEGER (0..7), + activationTime SS-ActivationTime +} + +--************************************************************** +-- +-- CMAC-MACi-E-TFC-Restriction-CNF +-- Rel-8 or later +-- For MAC emulator to report that a previous attempt of restricting TFCs have been successful +-- +--************************************************************** +CMAC-MACi-E-TFC-Restriction-CNF ::= SEQUENCE { + nodeB-Id INTEGER(0..63), + cellId INTEGER(0..63) -- @sic R5-134957 sic@ +} + + +--************************************************************** +-- +-- CMAC-MACi-E-TFC-Restriction-FDD-REQ +-- Rel-8 or later +-- To request to configure MACi entity. The field restrictAllowedTFCs is provided to allow the E-TFCI to be restricted on the referred cell Id. The IE fullE-TFCS will be used to remove any previous E-TFCS restriction configured. +-- +--************************************************************** +CMAC-MACi-E-TFC-Restriction-FDD-REQ ::= SEQUENCE { + nodeB-Id INTEGER (0..63), + cellId INTEGER(0..63), -- @sic R5-134957 sic@ + restrictAllowedTFCs CHOICE { + e-TFCS-Restriction E-TFCS-Restriction, + fullE-TFCS NULL } +} + +--************************************************************** +-- +-- CMAC-MACi-E-TFC-Restriction-TDD-REQ +-- Rel-8 or later +-- To request to configure MACi entity. The field restrictAllowedTFCs is provided to allow the E-TFCI to be restricted on the referred cell Id. The IE fullE-TFCS will be used to remove any previous E-TFCS restriction configured. +-- +--************************************************************** +CMAC-MACi-E-TFC-Restriction-TDD-REQ ::= SEQUENCE { + nodeB-Id INTEGER (0..63), + cellId INTEGER(0..63), -- @sic R5-134957 sic@ + restrictAllowedTFCs CHOICE { + e-TFCS-Restriction E-TFCS-Restriction-TDD, + fullE-TFCS NULL + } +} + +E-TFCS-Restriction-TDD ::= SEQUENCE OF INTEGER (0..63) + + +--************************************************************** +-- +-- E-TFCS-Restriction +-- The E-TFCS restriction is a list of E-TFCIs, and can be used to verify that the UE has used a specific TFC. Any data received by the SS using a forbidden TFCI shall be discarded. +-- +--************************************************************** +E-TFCS-Restriction ::= SEQUENCE OF INTEGER (0..127) + + +--************************************************************** +-- +-- CMAC-MACehs-HARQAssign-MultiFlows-CNF +-- Applicable Rel-7 or later +-- Confirm a previous CMAC-MACehs-HARQAssign-MultiFlows-REQ being successful. +-- +--************************************************************** +CMAC-MACehs-HARQAssign-MultiFlows-CNF ::= SEQUENCE { + cellId INTEGER(-1..63) +} + +--************************************************************** +-- +-- CMAC-MACehs-HARQAssign-MultiFlows-REQ +-- Applicable Rel-7 or later +-- To assign the HARQ processes for the simultaneous transmission of the MAC-ehs PDUs on the different flows on the same TTI . +-- After successful transmission the MAC-ehs returns back to normal operation. In the normal operation suitable HARQ processes are selected by HARQ entities in the MAC-ehs to serve the MAC-ehs PDU without TTCN intervening. +-- For Dual Cell, the primaryFlow corresponds to the serving cell, the secPrimaryFlow corresponds to the secondary cell. +-- For MIMO, the primary and secondary HARQ process identities (of serving cell) are set as per 3GPP TS 25.212 [58], subclause 4.6B.2.5. +-- For combined DC-HSDPA and MIMO the primaryFlow and secondary flow correspond to the serving cell, the secPrimaryFlow and secSecondaryFlow to the secondary cell. +-- +--************************************************************** +CMAC-MACehs-HARQAssign-MultiFlows-REQ ::= SEQUENCE { + cellId INTEGER(-1..63), + primaryFlowHarqProcessId INTEGER(0..15|31), -- of serving cell + secondaryFlowHarqProcessId INTEGER(0..15|31) OPTIONAL, -- of serving cell + secPrimaryFlowHarqProcessId INTEGER(0..15|31) OPTIONAL, + -- of secondary cell Rel-9 or later + secSecondaryFlowHarqProcessId INTEGER(0..15|31) OPTIONAL, + -- of secondary cell Rel-9 or later + relAspTypeExtension HARQAssign-MultiFlows-r10OrLaterExtensionType OPTIONAL -- Rel-10 or later @sic R5-130613 R5-134957 sic@ +} + +--************************************************************** +-- +-- CMAC-MACehs-HARQAssign-MultiFlows-REQ +-- Rel-10 or later +-- Extension to assign the HARQ processes for the simultaneous transmission of the MAC-ehs PDUs on the different flows on the second and third secondary cells on the same TTI when 4C-HSDPA is configured. +-- In 4C-HSDPA, the primaryFlow corresponds to the serving cell, the secPrimaryFlow corresponds to the first secondary cell, the thirdPrimaryFlow corresponds to the second secondary cell, the fourthPrimaryFlow corresponds to the third secondary cell, when configured. +-- In 4C-HSDPA and MIMO: the primaryFlow and secondaryFlow corresponds to the serving cell. The secPrimaryFlow and secSecondaryFlow corresponds to the first secondary cell. The thirdPrimaryFlow and thirdSecondaryFlow corresponds to the second secondary cell. The fourthPrimaryFlow and fourthSecondaryFlow corresponds to the third secondary cell, when configured. +-- +--************************************************************** + +HARQAssign-MultiFlows-r10OrLaterExtensionType ::= CHOICE { + rel10-AspExt SEQUENCE { + thirdPrimaryFlowHarqProcessId INTEGER(0..15|31), + -- of third cell + thirdSecondaryFlowHarqProcessId INTEGER(0..15|31) OPTIONAL, + -- for MIMO in third cell + fourthPrimaryFlowHarqProcessId INTEGER(0..15|31) OPTIONAL, + -- of fourth cell for 4C-HSDPA + fourthSecondaryFlowHarqProcessId INTEGER(0..15|31) OPTIONAL + -- for MIMO in fourth cell for 4C-HSDPA + } +} + +--************************************************************** +-- +-- CMAC-Restriction-REQ +-- To request to configure MAC entity. The field restrictAllowedTFCs is provided to allow the UL and/or DL SS TFCS to be restricted for a specific transport channel. This information only needs to be sent to the MAC layer, since it is the MAC layer's responsibility to determine the set of valid TFCs each TTI. +-- +--************************************************************** +CMAC-Restriction-REQ ::= SEQUENCE { + cellId INTEGER (-1..63), + routingInfo RoutingInfo, + ratType RatType, + restrictAllowedTFCs TFC-Restriction +} + +--************************************************************** +-- TFC-Restriction +-- This type is used to specify the allowed TFCs within the current TFCS. A TFC restriction is applicable until a subsequent TFC restriction is applied. TFC restrictions are not cumulative, so each TFC restriction completely replaces the previous TFC restriction.The downlink restriction can be used to ensure that the SS uses a specific TFC for transmission of data, by only allowing the 'No data' TFC, and the 'desired' TFC. It may also be necessary to include one or more 'signalling only' TFCs to allow signalling to occur.The uplink restriction can be used to verify that the UE has used a specific TFC. Any data received by the SS using a forbidden TFCI shall be discarded. +--************************************************************** +TFC-Restriction ::= SEQUENCE { + ulTFCI-Restriction TFC-Subset OPTIONAL, + dlTFCI-Restriction TFC-Subset OPTIONAL +} + +--************************************************************** +-- +-- CMAC-Restriction-CNF +-- For MAC emulator to report that a previous attempt of restricting TFCs have been successful. +-- +--************************************************************** +CMAC-Restriction-CNF ::= SEQUENCE { + cellId INTEGER(-1..63), + routingInfo RoutingInfo +} + + +--************************************************************** +-- +-- CRLC-BindTestDataInMultipleMACehs-PDU-MultiFlows-CNF +-- To confirm the request of binding subsequent data sending RLC-TR/UM/AM-TestDataReq on the specified RB mapped on HS-DSCH. +-- +--************************************************************** +CRLC-BindTestDataInMultipleMACehs-PDU-MultiFlows-CNF ::= SEQUENCE{ + cellId INTEGER(-1..63), + routingInfo RoutingInfo, -- RB ID desired to be given + result ENUMERATED{failure(0), success(1)} +} + +--************************************************************** +-- +-- CRLC-BindTestDataInMultipleMACehs-PDU-MultiFlows-REQ +-- To request of binding subsequent data sending RLC-TR/UM/AM-TestDataReq on the specified RB mapped on HS-DSCH in two MAC-ehs PDUs, one for each primary and secondary flow. +-- On the request, the transmission of the test data is temporarily suppressed on the radio bearer till all SDUs for all flows are received by RLC layer on the Radio Bearer. After receiving all SDU's the RLC layer submits to MAC such that all of them are sent in two MAC-ehs PDUs. +-- +--************************************************************** +CRLC-BindTestDataInMultipleMACehs-PDU-MultiFlows-REQ ::= SEQUENCE{ + cellId INTEGER(-1..63), + routingInfo RoutingInfo, -- RB ID desired to be given + primaryFlowNumOfSDUs INTEGER, + -- Number of RLC SDU's for primary flow of serving cell + secondaryFlowNumOfSDUs INTEGER OPTIONAL, + -- Number of RLC SDU's for secondary flow of serving cell + secPrimaryFlowNumOfSDUs INTEGER OPTIONAL, + -- Number of RLC SDU's for secondary cell primary flow Rel-9 or later + secSecondaryFlowNumOfSDUs INTEGER OPTIONAL, + -- Number of RLC SDU's for secondary cell secondary flow Rel-9 or later + relAspTypeExtension BindTestDataInMultipleMACehs-r10OrLaterExtensionType OPTIONAL -- Rel-10 or later @sic R5-130613 R5-134957 sic@ +} + +--************************************************************** +-- +-- BindTestDataInMultipleMACehs-r10OrLaterExtensionType +-- +--************************************************************** +BindTestDataInMultipleMACehs-r10OrLaterExtensionType ::= CHOICE { + rel10-AspExt SEQUENCE { -- Extension for 4C-HSDPA with or without MIMO + thirdPrimaryFlowNumOfSDUs INTEGER, + -- Number of RLC SDU's for primary flow of third cell + thirdSecondaryFlowNumOfSDUs INTEGER OPTIONAL, + -- Number of RLC SDU's for secondary flow of third cell + fourthPrimaryFlowNumOfSDUs INTEGER OPTIONAL, + -- Number of RLC SDU's for fourth cell primary flow + fourthSecondaryFlowNumOfSDUs INTEGER OPTIONAL + -- Number of RLC SDU's for fourth cell secondary flow + } +} + + +--************************************************************** +-- PDCP ASPs +--************************************************************** +--************************************************************** +-- +-- CPDCP-Config-CNF +-- For PDCP emulator to report that a previous attempt to setup, reconfigure or release a logical channel is successful. +-- +--************************************************************** +CPDCP-Config-CNF ::= SEQUENCE { + cellId INTEGER(-1..63), + routingInfo RoutingInfo +} + +--************************************************************** +-- +-- CPDCP-Config-REQ +-- To request to configure PDCP entity. Setup is used for creation of the PDCP instances or the PDCP resources. +-- Release is used for free the all PDCP resources. +-- The reconfiguration is to change the PDCP parameters. +-- PDCP entity does not belong to a particular cell, the cellId shall assign the value -1. +-- The routingInfo is RB identity which is used to connect this PDCP entity to the RLC entity with the same RB identity and it is also used for PDCP-DATA-REQ ASP to transmit data through this PDCP entity. +-- +--************************************************************** +CPDCP-Config-REQ ::= SEQUENCE { + cellId INTEGER(-1..63), + routingInfo RoutingInfo, + ratType RatType, + configMessage CHOICE { + setup SS-PDCP-Info, + reconfigure SS-PDCP-InfoReconfig, + release NULL + } +} + +--************************************************************** +-- +-- SS-PDCP-Info +-- When configuring downlink direction of the SS, the UL-RFC3095-r4 shall be used; when configuring uplink direction of the SS the DL-RFC3095-r4 shall be used. +-- +--************************************************************** +SS-PDCP-Info ::= SEQUENCE { + pDCP-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + pDCP-Info PDCP-Info-r4, + cSVoHS-Info CS-HSPA-Information OPTIONAL -- Rel-7 or later +} + +--************************************************************** +-- +-- SS-PDCP-InfoReconfig +-- When configuring downlink direction of the SS, the UL-RFC3095-r4 shall be used; when configuring uplink direction of the SS the DL-RFC3095-r4 shall be used. +-- +--************************************************************** +SS-PDCP-InfoReconfig ::= SEQUENCE { + pDCP-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, --@sic R5w140013 sic@ + pDCP-Info PDCP-InfoReconfig-r4, + cSVoHS-Info CS-HSPA-Information OPTIONAL -- Rel-7 or later +} + +END diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ASP_VirtualNoiseDefs.ttcn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ASP_VirtualNoiseDefs.ttcn new file mode 100644 index 0000000..5f63b0d --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ASP_VirtualNoiseDefs.ttcn @@ -0,0 +1,50 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-03-01 18:20:39 +0100 (Sat, 01 Mar 2014) $ +// $Rev: 10766 $ +/******************************************************************************/ + +module UTRAN_ASP_VirtualNoiseDefs { + /* ASP definitions for virtual noise generation in UTRAN cells. + The noise is configurated for an already existing UTRAN cell. + NOTE: For the time being VNG is applicable for UTRAN FDD only as acc. to TS 36.304 clause 5.2.4.5 there is no quality based measurement for UTRAN TDD, GERAN or CDMA2000 */ + + import from CommonDefs all; + + type record UTRAN_VngConfigInfo_Type { + integer IocLevel /* Ioc level; calculati-on is FFS */ + }; + + type union UTRAN_VngConfigRequest_Type { /* configure/activate noise for a given cell; + * NOTE: it is assumed the the associated UTRAN cell has been created beforehand */ + UTRAN_VngConfigInfo_Type Configure, /* configuration of the virtual noise generator; + * regardless of the power level the noise generator is off before it gets activated for this cell; + * whether the configuration can be changed during a test is FFS but if so the noise generator shall be deactivated for this cell */ + Null_Type Activate, /* noise is activated (switched on) for the given cell acc. to the previous configuration; + * while being active the configuration shall not be modified */ + Null_Type Deactivate /* deactivate noise for given cell */ + }; + + type Null_Type UTRAN_VngConfigConfirm_Type; + + type record UTRAN_VNG_CTRL_REQ { + integer CellId, /* id of associated UTRAN cell */ + UTRAN_VngConfigRequest_Type Request + }; + + + type record UTRAN_VNG_CTRL_CNF { + integer CellId, /* id of associated UTRAN cell */ + UTRAN_VngConfigConfirm_Type Confirm + }; + + type port UTRAN_VNG_PORT message { /* UTRAN PTC: Port for virtual noise generator */ + out UTRAN_VNG_CTRL_REQ; + in UTRAN_VNG_CTRL_CNF; + }; +} diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_CellInfo.ttcn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_CellInfo.ttcn new file mode 100644 index 0000000..4b9bafa --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_CellInfo.ttcn @@ -0,0 +1,2494 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-11 11:08:39 +0200 (Thu, 11 Sep 2014) $ +// $Rev: 12201 $ +/******************************************************************************/ + +module UTRAN_CellInfo { + + import from CommonDefs all; + import from Parameters all; + import from CommonIratDefs all; + import from NAS_CommonTypeDefs all; + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_ASP_Definitions language "ASN.1:2002" all; + import from UTRAN_CommonDefs all; + import from UTRAN_RRC_Templates all; + import from UTRAN_RRC_SysInfo_Templates all; + import from UTRAN_ASN1_ASP_Templates all; + import from UTRAN_Parameters all; + import from UTRAN_Component all; + import from NAS_24008Templates_IRAT all; + import from NAS_AuthenticationCommon all; + import from UTRANGERAN_CommonFunctions all; + import from UTRAN_TypeDefs all; + import from TestcaseProperties all; + + /****************************************************************************/ + // global types for control of the UTRAN: + + // const float UTRAN_t_WaitMS_Value := 13.5; + + type enumerated COMMON_TestConfig_Enum {utran_only, utran_geran}; /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + //-------------------------------------------------------------------------- + // UTRAN cell info templates + //-------------------------------------------------------------------------- + + template (value) CN_InformationInfoFull cs_508_CNInfo := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + /* @sic R5s110519 change 5 sic@ */ + plmn_Identity := omit, + cn_CommonGSM_MAP_NAS_SysInfo := hex2oct('0001'H), + cn_DomainInformationListFull := { + { + cn_DomainIdentity := ps_domain, + cn_DomainSpecificNAS_Info := hex2oct('0100'H), + cn_DRX_CycleLengthCoeff := 7 + }, + { + cn_DomainIdentity := cs_domain, + cn_DomainSpecificNAS_Info := hex2oct('1E01'H), + cn_DRX_CycleLengthCoeff := 7 + } + } + }; + + template (value) CN_InformationInfoFull cs_CNInfo_PSCS(PLMN_Identity p_PLMN_Identity, + octetstring p_LAC, + DRX_CycleLengthStructure p_DRX_CycleLengthStructure, + octetstring p_PS_SpecificNAS_Info, + octetstring p_CS_SpecificNAS_Info) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + plmn_Identity := p_PLMN_Identity, + cn_CommonGSM_MAP_NAS_SysInfo := p_LAC, + cn_DomainInformationListFull := { + { + cn_DomainIdentity := ps_domain, + cn_DomainSpecificNAS_Info := p_PS_SpecificNAS_Info, + cn_DRX_CycleLengthCoeff := p_DRX_CycleLengthStructure.cN_PS_DRX_CycleLength + }, + { + cn_DomainIdentity := cs_domain, + cn_DomainSpecificNAS_Info := p_CS_SpecificNAS_Info, + cn_DRX_CycleLengthCoeff := p_DRX_CycleLengthStructure.cN_CS_DRX_CycleLength + } + } + }; + + //---------------------------------------------------------------------------- + // End of UTRAN cell info templates + //---------------------------------------------------------------------------- + + //---------------------------------------------------------------------------- + // UTRAN_SYSTEM_INFORMATION_STEPS + //---------------------------------------------------------------------------- + /* + * @desc initialise sib5/sib5bis + * @param p_Band + * @param p_PowerPICH + * @param p_PowerAICH + * @return SysInfoType5 + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_InitializeSIB5_SIB5Bis(integer p_Band, + PICH_PowerOffset p_PowerPICH, + AICH_PowerOffset p_PowerAICH) return SysInfoType5 + { + var template (value) SysInfoType5 v_SIB5; + + select (p_Band) { + case (1, 2, 3){ + v_SIB5 := cs_SIB5_Def(p_PowerPICH, p_PowerAICH); + } case (4) { + v_SIB5 := cs_SIB5bis_Band4(p_PowerPICH, p_PowerAICH); + } case (5) { + v_SIB5 := cs_SIB5_Band5(p_PowerPICH, p_PowerAICH); + } case (6) { + v_SIB5 := cs_SIB5_Band6(p_PowerPICH, p_PowerAICH); + } case (7) { + v_SIB5 := cs_SIB5_Band7(p_PowerPICH, p_PowerAICH); + } case (8) { + v_SIB5 := cs_SIB5_Band8(p_PowerPICH, p_PowerAICH); + } case (9) { + v_SIB5 := cs_SIB5bis_Band9(p_PowerPICH, p_PowerAICH); + } case (10) { + v_SIB5 := cs_SIB5bis_Band10(p_PowerPICH, p_PowerAICH); + } case (11) { + v_SIB5 := cs_SIB5_Band11(p_PowerPICH, p_PowerAICH); + } case (12) { + v_SIB5 := cs_SIB5_Band12(p_PowerPICH, p_PowerAICH); + } case (13) { + v_SIB5 := cs_SIB5_Band13(p_PowerPICH, p_PowerAICH); + } case (14) { + v_SIB5 := cs_SIB5_Band14(p_PowerPICH, p_PowerAICH); + } case (15) { + v_SIB5 := cs_SIB5_Band15(p_PowerPICH, p_PowerAICH); + } case (16) { + v_SIB5 := cs_SIB5_Band16(p_PowerPICH, p_PowerAICH); + } case (17) { + v_SIB5 := cs_SIB5_Band17(p_PowerPICH, p_PowerAICH); + } case (18) { + v_SIB5 := cs_SIB5_Band18(p_PowerPICH, p_PowerAICH); + } case (19) { + v_SIB5 := cs_SIB5_Band19(p_PowerPICH, p_PowerAICH); + } case (20) { + v_SIB5 := cs_SIB5_Band20(p_PowerPICH, p_PowerAICH); + } case (21) { + v_SIB5 := cs_SIB5_Band21(p_PowerPICH, p_PowerAICH); + } case (22) { + v_SIB5 := cs_SIB5_Band22(p_PowerPICH, p_PowerAICH); + } case (25) { + v_SIB5 := cs_SIB5_Band25(p_PowerPICH, p_PowerAICH); + } + case else { + FatalError(__FILE__, __LINE__, "invalid frequency band"); + } + } + return valueof(v_SIB5); + } + //---------------------------------------------------------------------------- + /* + * @desc initialise SIB11 (FDD) + * @param p_CellList + * @return UTRAN_CellInfoList_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS) + */ + function fl_UTRAN_InitializeSIB11(UTRAN_CellInfoList_Type p_CellList) return UTRAN_CellInfoList_Type + { + var template (value) SysInfoType11 v_SysInfoType11; + var template (value) UTRAN_CellInfoList_Type v_CellList := p_CellList; + var integer v_Index_Cell5 := f_UTRAN_CellInfo_GetIndex(utran_Cell5); + var integer v_Index_Cell7 := f_UTRAN_CellInfo_GetIndex(utran_Cell7); + var integer v_Index_Cell8 := f_UTRAN_CellInfo_GetIndex(utran_Cell8); + var integer v_Index_Cell9 := f_UTRAN_CellInfo_GetIndex(utran_Cell9); + + v_SysInfoType11 := cs_SIB11_Def_FDD(5, + p_CellList[v_Index_Cell5].cellInfo_Specific_FDD.priScrmCode, + 7, + p_CellList[v_Index_Cell7].cellInfo_Specific_FDD.priScrmCode, + 8, + p_CellList[v_Index_Cell8].frequencyInfo, + p_CellList[v_Index_Cell8].cellInfo_Specific_FDD.priScrmCode, + 9, + p_CellList[v_Index_Cell9].frequencyInfo, + p_CellList[v_Index_Cell9].cellInfo_Specific_FDD.priScrmCode); + v_CellList[v_Index_Cell5].sysInfo.SIB11 := v_SysInfoType11; + + v_SysInfoType11 := cs_SIB11_Def_FDD(7, + p_CellList[v_Index_Cell7].cellInfo_Specific_FDD.priScrmCode, + 5, + p_CellList[v_Index_Cell5].cellInfo_Specific_FDD.priScrmCode, + 8, + p_CellList[v_Index_Cell8].frequencyInfo, + p_CellList[v_Index_Cell8].cellInfo_Specific_FDD.priScrmCode, + 9, + p_CellList[v_Index_Cell9].frequencyInfo, + p_CellList[v_Index_Cell9].cellInfo_Specific_FDD.priScrmCode); + v_CellList[v_Index_Cell7].sysInfo.SIB11 := v_SysInfoType11; + + v_SysInfoType11 := cs_SIB11_Freq2_FDD(8, + p_CellList[v_Index_Cell8].cellInfo_Specific_FDD.priScrmCode, + 5, + p_CellList[v_Index_Cell5].frequencyInfo, + p_CellList[v_Index_Cell5].cellInfo_Specific_FDD.priScrmCode, + 7, + p_CellList[v_Index_Cell7].frequencyInfo, + p_CellList[v_Index_Cell7].cellInfo_Specific_FDD.priScrmCode, + 9, + p_CellList[v_Index_Cell9].frequencyInfo, + p_CellList[v_Index_Cell9].cellInfo_Specific_FDD.priScrmCode); + v_CellList[v_Index_Cell8].sysInfo.SIB11 := v_SysInfoType11; + + v_SysInfoType11 := cs_SIB11_Freq2_FDD(9, + p_CellList[v_Index_Cell9].cellInfo_Specific_FDD.priScrmCode, + 5, + p_CellList[v_Index_Cell5].frequencyInfo, + p_CellList[v_Index_Cell5].cellInfo_Specific_FDD.priScrmCode, + 7, + p_CellList[v_Index_Cell7].frequencyInfo, + p_CellList[v_Index_Cell7].cellInfo_Specific_FDD.priScrmCode, + 8, + p_CellList[v_Index_Cell8].frequencyInfo, + p_CellList[v_Index_Cell8].cellInfo_Specific_FDD.priScrmCode); + v_CellList[v_Index_Cell9].sysInfo.SIB11 := v_SysInfoType11; + + return valueof(v_CellList); + } + //---------------------------------------------------------------------------- + /* + * @desc initialise SIB11 (TDD) + * @param p_CellList + * @return UTRAN_CellInfoList_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS) + */ + function fl_UTRAN_InitializeSIB11_TDD(UTRAN_CellInfoList_Type p_CellList) return UTRAN_CellInfoList_Type + { + var template (value) SysInfoType11 v_SysInfoType11; + var template (value) UTRAN_CellInfoList_Type v_CellList := p_CellList; + var integer v_Index_Cell5 := f_UTRAN_CellInfo_GetIndex(utran_Cell5); + var integer v_Index_Cell7 := f_UTRAN_CellInfo_GetIndex(utran_Cell7); + var integer v_Index_Cell8 := f_UTRAN_CellInfo_GetIndex(utran_Cell8); + var integer v_Index_Cell9 := f_UTRAN_CellInfo_GetIndex(utran_Cell9); + + v_SysInfoType11 := cs_SIB11_Def_TDD(5, + p_CellList[v_Index_Cell5].cellInfo_Specific_TDD.cellParametersID, + 7, + p_CellList[v_Index_Cell7].cellInfo_Specific_TDD.cellParametersID, + 8, + p_CellList[v_Index_Cell8].frequencyInfo, + p_CellList[v_Index_Cell8].cellInfo_Specific_TDD.cellParametersID, + 9, + p_CellList[v_Index_Cell9].frequencyInfo, + p_CellList[v_Index_Cell9].cellInfo_Specific_TDD.cellParametersID); + v_CellList[v_Index_Cell5].sysInfo.SIB11 := v_SysInfoType11; + + v_SysInfoType11 := cs_SIB11_Def_TDD(7, + p_CellList[v_Index_Cell7].cellInfo_Specific_TDD.cellParametersID, + 5, + p_CellList[v_Index_Cell5].cellInfo_Specific_TDD.cellParametersID, + 8, + p_CellList[v_Index_Cell8].frequencyInfo, + p_CellList[v_Index_Cell8].cellInfo_Specific_TDD.cellParametersID, + 9, + p_CellList[v_Index_Cell9].frequencyInfo, + p_CellList[v_Index_Cell9].cellInfo_Specific_TDD.cellParametersID); + v_CellList[v_Index_Cell7].sysInfo.SIB11 := v_SysInfoType11; + + v_SysInfoType11 := cs_SIB11_Freq2_TDD(8, + p_CellList[v_Index_Cell8].cellInfo_Specific_TDD.cellParametersID, + 5, + p_CellList[v_Index_Cell5].frequencyInfo, + p_CellList[v_Index_Cell5].cellInfo_Specific_TDD.cellParametersID, + 7, + p_CellList[v_Index_Cell7].frequencyInfo, + p_CellList[v_Index_Cell7].cellInfo_Specific_TDD.cellParametersID, + 9, + p_CellList[v_Index_Cell9].frequencyInfo, + p_CellList[v_Index_Cell9].cellInfo_Specific_TDD.cellParametersID); + v_CellList[v_Index_Cell8].sysInfo.SIB11 := v_SysInfoType11; + + v_SysInfoType11 := cs_SIB11_Freq2_TDD(9, + p_CellList[v_Index_Cell9].cellInfo_Specific_TDD.cellParametersID, + 5, + p_CellList[v_Index_Cell5].frequencyInfo, + p_CellList[v_Index_Cell5].cellInfo_Specific_TDD.cellParametersID, + 7, + p_CellList[v_Index_Cell7].frequencyInfo, + p_CellList[v_Index_Cell7].cellInfo_Specific_TDD.cellParametersID, + 8, + p_CellList[v_Index_Cell8].frequencyInfo, + p_CellList[v_Index_Cell8].cellInfo_Specific_TDD.cellParametersID); + v_CellList[v_Index_Cell9].sysInfo.SIB11 := v_SysInfoType11; + + return valueof(v_CellList); + } + //---------------------------------------------------------------------------- + /* + * @desc Function that adds the GERAN neighbour cells to SIB11 + * @param p_CellList + * @param p_GERANSysInfo + * @return UTRAN_CellInfoList_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS) + */ + function fl_UTRAN_InitializeSIB11_ForGERAN(UTRAN_CellInfoList_Type p_CellList, + CoOrd_GERANSysInfo_List_Type p_GERANSysInfo) return UTRAN_CellInfoList_Type + { + var UTRAN_CellInfoList_Type v_CellList := p_CellList; + // if the first cell is FDD, then they all are + if (v_CellList[0].fdd_tdd == UTRAN_FDD) + { + v_CellList := fl_UTRAN_InitializeSIB11_UG_FDD(v_CellList, p_GERANSysInfo); + } else { + v_CellList := fl_UTRAN_InitializeSIB11_UG_TDD(v_CellList, p_GERANSysInfo); + } + return(v_CellList); + } + //---------------------------------------------------------------------------- + /* + * @desc Function that converts the bit indicating the GERAN band used into the asn1 value + * @param p_BandInd + * @return Frequency_Band + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_GetGeranBandIndicator(B1_Type p_BandInd) return Frequency_Band + { + var Frequency_Band v_ASN1Band:= dcs1800BandUsed; + + if (p_BandInd == '1'B) { + v_ASN1Band := pcs1900BandUsed; + } + return v_ASN1Band; + } + //---------------------------------------------------------------------------- + /* + * @desc Function that adds the GERAN neighbour cells to FDD SIB11 + * @param p_CellList + * @param p_GERANSysInfo + * @return UTRAN_CellInfoList_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS) + */ + function fl_UTRAN_InitializeSIB11_UG_FDD(UTRAN_CellInfoList_Type p_CellList, + CoOrd_GERANSysInfo_List_Type p_GERANSysInfo) return UTRAN_CellInfoList_Type + { + var template (value) SysInfoType11 v_SysInfoType11; + var template (value) UTRAN_CellInfoList_Type v_CellList := p_CellList; + var integer v_Index_Cell5 := f_UTRAN_CellInfo_GetIndex(utran_Cell5); + var integer v_Index_Cell7 := f_UTRAN_CellInfo_GetIndex(utran_Cell7); + var integer v_Index_Cell8 := f_UTRAN_CellInfo_GetIndex(utran_Cell8); + var integer v_Index_Cell9 := f_UTRAN_CellInfo_GetIndex(utran_Cell9); + + v_SysInfoType11 := cs_SIB11_Def_UG_FDD(5, + p_CellList[v_Index_Cell5].cellInfo_Specific_FDD.priScrmCode, + 7, + p_CellList[v_Index_Cell7].cellInfo_Specific_FDD.priScrmCode, + 8, + p_CellList[v_Index_Cell8].frequencyInfo, + p_CellList[v_Index_Cell8].cellInfo_Specific_FDD.priScrmCode, + 9, + p_CellList[v_Index_Cell9].frequencyInfo, + p_CellList[v_Index_Cell9].cellInfo_Specific_FDD.priScrmCode, + oct2int(p_GERANSysInfo[0].Cell_Identity), + bit2int(p_GERANSysInfo[0].Ncc), + bit2int(p_GERANSysInfo[0].Bcc), + f_UTRAN_GetGeranBandIndicator(p_GERANSysInfo[0].BandIndicator), + p_GERANSysInfo[0].Arfcn, + oct2int(p_GERANSysInfo[1].Cell_Identity), + bit2int(p_GERANSysInfo[1].Ncc), + bit2int(p_GERANSysInfo[1].Bcc), + f_UTRAN_GetGeranBandIndicator(p_GERANSysInfo[1].BandIndicator), + p_GERANSysInfo[1].Arfcn, + oct2int(p_GERANSysInfo[2].Cell_Identity), + bit2int(p_GERANSysInfo[2].Ncc), + bit2int(p_GERANSysInfo[2].Bcc), + f_UTRAN_GetGeranBandIndicator(p_GERANSysInfo[2].BandIndicator), + p_GERANSysInfo[2].Arfcn); + + v_CellList[v_Index_Cell5].sysInfo.SIB11 := v_SysInfoType11; + + v_SysInfoType11 := cs_SIB11_Def_UG_FDD(7, + p_CellList[v_Index_Cell7].cellInfo_Specific_FDD.priScrmCode, + 5, + p_CellList[v_Index_Cell5].cellInfo_Specific_FDD.priScrmCode, + 8, + p_CellList[v_Index_Cell8].frequencyInfo, + p_CellList[v_Index_Cell8].cellInfo_Specific_FDD.priScrmCode, + 9, + p_CellList[v_Index_Cell9].frequencyInfo, + p_CellList[v_Index_Cell9].cellInfo_Specific_FDD.priScrmCode, + oct2int(p_GERANSysInfo[0].Cell_Identity), + bit2int(p_GERANSysInfo[0].Ncc), + bit2int(p_GERANSysInfo[0].Bcc), + f_UTRAN_GetGeranBandIndicator(p_GERANSysInfo[0].BandIndicator), + p_GERANSysInfo[0].Arfcn, + oct2int(p_GERANSysInfo[1].Cell_Identity), + bit2int(p_GERANSysInfo[1].Ncc), + bit2int(p_GERANSysInfo[1].Bcc), + f_UTRAN_GetGeranBandIndicator(p_GERANSysInfo[1].BandIndicator), + p_GERANSysInfo[1].Arfcn, + oct2int(p_GERANSysInfo[2].Cell_Identity), + bit2int(p_GERANSysInfo[2].Ncc), + bit2int(p_GERANSysInfo[2].Bcc), + f_UTRAN_GetGeranBandIndicator(p_GERANSysInfo[2].BandIndicator), + p_GERANSysInfo[2].Arfcn); + v_CellList[v_Index_Cell7].sysInfo.SIB11 := v_SysInfoType11; + + v_SysInfoType11 := cs_SIB11_Freq2_UG_FDD(8, + p_CellList[v_Index_Cell8].cellInfo_Specific_FDD.priScrmCode, + 5, + p_CellList[v_Index_Cell5].frequencyInfo, + p_CellList[v_Index_Cell5].cellInfo_Specific_FDD.priScrmCode, + 7, + p_CellList[v_Index_Cell7].frequencyInfo, + p_CellList[v_Index_Cell7].cellInfo_Specific_FDD.priScrmCode, + 9, + p_CellList[v_Index_Cell9].frequencyInfo, + p_CellList[v_Index_Cell9].cellInfo_Specific_FDD.priScrmCode, + oct2int(p_GERANSysInfo[0].Cell_Identity), + bit2int(p_GERANSysInfo[0].Ncc), + bit2int(p_GERANSysInfo[0].Bcc), + f_UTRAN_GetGeranBandIndicator(p_GERANSysInfo[0].BandIndicator), + p_GERANSysInfo[0].Arfcn, + oct2int(p_GERANSysInfo[1].Cell_Identity), + bit2int(p_GERANSysInfo[1].Ncc), + bit2int(p_GERANSysInfo[1].Bcc), + f_UTRAN_GetGeranBandIndicator(p_GERANSysInfo[1].BandIndicator), + p_GERANSysInfo[1].Arfcn, + oct2int(p_GERANSysInfo[2].Cell_Identity), + bit2int(p_GERANSysInfo[2].Ncc), + bit2int(p_GERANSysInfo[2].Bcc), + f_UTRAN_GetGeranBandIndicator(p_GERANSysInfo[2].BandIndicator), + p_GERANSysInfo[2].Arfcn); + v_CellList[v_Index_Cell8].sysInfo.SIB11 := v_SysInfoType11; + + v_SysInfoType11 := cs_SIB11_Freq2_UG_FDD(9, + p_CellList[v_Index_Cell9].cellInfo_Specific_FDD.priScrmCode, + 5, + p_CellList[v_Index_Cell5].frequencyInfo, + p_CellList[v_Index_Cell5].cellInfo_Specific_FDD.priScrmCode, + 7, + p_CellList[v_Index_Cell7].frequencyInfo, + p_CellList[v_Index_Cell7].cellInfo_Specific_FDD.priScrmCode, + 8, + p_CellList[v_Index_Cell8].frequencyInfo, + p_CellList[v_Index_Cell8].cellInfo_Specific_FDD.priScrmCode, + oct2int(p_GERANSysInfo[0].Cell_Identity), + bit2int(p_GERANSysInfo[0].Ncc), + bit2int(p_GERANSysInfo[0].Bcc), + f_UTRAN_GetGeranBandIndicator(p_GERANSysInfo[0].BandIndicator), + p_GERANSysInfo[0].Arfcn, + oct2int(p_GERANSysInfo[1].Cell_Identity), + bit2int(p_GERANSysInfo[1].Ncc), + bit2int(p_GERANSysInfo[1].Bcc), + f_UTRAN_GetGeranBandIndicator(p_GERANSysInfo[1].BandIndicator), + p_GERANSysInfo[1].Arfcn, + oct2int(p_GERANSysInfo[2].Cell_Identity), + bit2int(p_GERANSysInfo[2].Ncc), + bit2int(p_GERANSysInfo[2].Bcc), + f_UTRAN_GetGeranBandIndicator(p_GERANSysInfo[2].BandIndicator), + p_GERANSysInfo[2].Arfcn); + v_CellList[v_Index_Cell9].sysInfo.SIB11 := v_SysInfoType11; + + return valueof(v_CellList); + } + //---------------------------------------------------------------------------- + /* + * @desc Function that adds the GERAN neighbour cells to TDD SIB11 + * @param p_CellList + * @param p_GERANSysInfo + * @return UTRAN_CellInfoList_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS) + */ + function fl_UTRAN_InitializeSIB11_UG_TDD(UTRAN_CellInfoList_Type p_CellList, + CoOrd_GERANSysInfo_List_Type p_GERANSysInfo) return UTRAN_CellInfoList_Type + { + var template (value) SysInfoType11 v_SysInfoType11; + var template (value) UTRAN_CellInfoList_Type v_CellList := p_CellList; + var integer v_Index_Cell5 := f_UTRAN_CellInfo_GetIndex(utran_Cell5); + var integer v_Index_Cell7 := f_UTRAN_CellInfo_GetIndex(utran_Cell7); + var integer v_Index_Cell8 := f_UTRAN_CellInfo_GetIndex(utran_Cell8); + var integer v_Index_Cell9 := f_UTRAN_CellInfo_GetIndex(utran_Cell9); + + v_SysInfoType11 := cs_SIB11_Def_UG_TDD(5, + p_CellList[v_Index_Cell5].cellInfo_Specific_TDD.cellParametersID, + 7, + p_CellList[v_Index_Cell7].cellInfo_Specific_TDD.cellParametersID, + 8, + p_CellList[v_Index_Cell8].frequencyInfo, + p_CellList[v_Index_Cell8].cellInfo_Specific_TDD.cellParametersID, + 9, + p_CellList[v_Index_Cell9].frequencyInfo, + p_CellList[v_Index_Cell9].cellInfo_Specific_TDD.cellParametersID, + oct2int(p_GERANSysInfo[0].Cell_Identity), + bit2int(p_GERANSysInfo[0].Ncc), + bit2int(p_GERANSysInfo[0].Bcc), + f_UTRAN_GetGeranBandIndicator(p_GERANSysInfo[0].BandIndicator), + p_GERANSysInfo[0].Arfcn, + oct2int(p_GERANSysInfo[1].Cell_Identity), + bit2int(p_GERANSysInfo[1].Ncc), + bit2int(p_GERANSysInfo[1].Bcc), + f_UTRAN_GetGeranBandIndicator(p_GERANSysInfo[1].BandIndicator), + p_GERANSysInfo[1].Arfcn, + oct2int(p_GERANSysInfo[2].Cell_Identity), + bit2int(p_GERANSysInfo[2].Ncc), + bit2int(p_GERANSysInfo[2].Bcc), + f_UTRAN_GetGeranBandIndicator(p_GERANSysInfo[2].BandIndicator), + p_GERANSysInfo[2].Arfcn); + v_CellList[v_Index_Cell5].sysInfo.SIB11 := v_SysInfoType11; + + v_SysInfoType11 := cs_SIB11_Def_UG_TDD(7, + p_CellList[v_Index_Cell7].cellInfo_Specific_TDD.cellParametersID, + 5, + p_CellList[v_Index_Cell5].cellInfo_Specific_TDD.cellParametersID, + 8, + p_CellList[v_Index_Cell8].frequencyInfo, + p_CellList[v_Index_Cell8].cellInfo_Specific_TDD.cellParametersID, + 9, + p_CellList[v_Index_Cell9].frequencyInfo, + p_CellList[v_Index_Cell9].cellInfo_Specific_TDD.cellParametersID, + oct2int(p_GERANSysInfo[0].Cell_Identity), + bit2int(p_GERANSysInfo[0].Ncc), + bit2int(p_GERANSysInfo[0].Bcc), + f_UTRAN_GetGeranBandIndicator(p_GERANSysInfo[0].BandIndicator), + p_GERANSysInfo[0].Arfcn, + oct2int(p_GERANSysInfo[1].Cell_Identity), + bit2int(p_GERANSysInfo[1].Ncc), + bit2int(p_GERANSysInfo[1].Bcc), + f_UTRAN_GetGeranBandIndicator(p_GERANSysInfo[1].BandIndicator), + p_GERANSysInfo[1].Arfcn, + oct2int(p_GERANSysInfo[2].Cell_Identity), + bit2int(p_GERANSysInfo[2].Ncc), + bit2int(p_GERANSysInfo[2].Bcc), + f_UTRAN_GetGeranBandIndicator(p_GERANSysInfo[2].BandIndicator), + p_GERANSysInfo[2].Arfcn); + v_CellList[v_Index_Cell7].sysInfo.SIB11 := v_SysInfoType11; + + v_SysInfoType11 := cs_SIB11_Freq2_UG_TDD(8, + p_CellList[v_Index_Cell8].cellInfo_Specific_TDD.cellParametersID, + 5, + p_CellList[v_Index_Cell5].frequencyInfo, + p_CellList[v_Index_Cell5].cellInfo_Specific_TDD.cellParametersID, + 7, + p_CellList[v_Index_Cell7].frequencyInfo, + p_CellList[v_Index_Cell7].cellInfo_Specific_TDD.cellParametersID, + 9, + p_CellList[v_Index_Cell9].frequencyInfo, + p_CellList[v_Index_Cell9].cellInfo_Specific_TDD.cellParametersID, + oct2int(p_GERANSysInfo[0].Cell_Identity), + bit2int(p_GERANSysInfo[0].Ncc), + bit2int(p_GERANSysInfo[0].Bcc), + f_UTRAN_GetGeranBandIndicator(p_GERANSysInfo[0].BandIndicator), + p_GERANSysInfo[0].Arfcn, + oct2int(p_GERANSysInfo[1].Cell_Identity), + bit2int(p_GERANSysInfo[1].Ncc), + bit2int(p_GERANSysInfo[1].Bcc), + f_UTRAN_GetGeranBandIndicator(p_GERANSysInfo[1].BandIndicator), + p_GERANSysInfo[1].Arfcn, + oct2int(p_GERANSysInfo[2].Cell_Identity), + bit2int(p_GERANSysInfo[2].Ncc), + bit2int(p_GERANSysInfo[2].Bcc), + f_UTRAN_GetGeranBandIndicator(p_GERANSysInfo[2].BandIndicator), + p_GERANSysInfo[2].Arfcn); + v_CellList[v_Index_Cell8].sysInfo.SIB11 := v_SysInfoType11; + + v_SysInfoType11 := cs_SIB11_Freq2_UG_TDD(9, + p_CellList[v_Index_Cell9].cellInfo_Specific_TDD.cellParametersID, + 5, + p_CellList[v_Index_Cell5].frequencyInfo, + p_CellList[v_Index_Cell5].cellInfo_Specific_TDD.cellParametersID, + 7, + p_CellList[v_Index_Cell7].frequencyInfo, + p_CellList[v_Index_Cell7].cellInfo_Specific_TDD.cellParametersID, + 8, + p_CellList[v_Index_Cell8].frequencyInfo, + p_CellList[v_Index_Cell8].cellInfo_Specific_TDD.cellParametersID, + oct2int(p_GERANSysInfo[0].Cell_Identity), + bit2int(p_GERANSysInfo[0].Ncc), + bit2int(p_GERANSysInfo[0].Bcc), + f_UTRAN_GetGeranBandIndicator(p_GERANSysInfo[0].BandIndicator), + p_GERANSysInfo[0].Arfcn, + oct2int(p_GERANSysInfo[1].Cell_Identity), + bit2int(p_GERANSysInfo[1].Ncc), + bit2int(p_GERANSysInfo[1].Bcc), + f_UTRAN_GetGeranBandIndicator(p_GERANSysInfo[1].BandIndicator), + p_GERANSysInfo[1].Arfcn, + oct2int(p_GERANSysInfo[2].Cell_Identity), + bit2int(p_GERANSysInfo[2].Ncc), + bit2int(p_GERANSysInfo[2].Bcc), + f_UTRAN_GetGeranBandIndicator(p_GERANSysInfo[2].BandIndicator), + p_GERANSysInfo[2].Arfcn); + v_CellList[v_Index_Cell9].sysInfo.SIB11 := v_SysInfoType11; + return valueof(v_CellList); + } + //---------------------------------------------------------------------------- + /* + * @desc To assign system information for a cell. + * @param p_CellId + * @param p_Band + * @param p_PLMNId + * @param p_PowerPICH + * @param p_PowerAICH + * @param p_Lac + * @param p_Rac + * @param p_NMO + * @param p_T3212 + * @param p_AttFlag + * @param p_URAId + * @param p_DRX + * @param p_TestConfig + * @return UTRAN_CellSysInfo_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS) + */ + function fl_UTRAN_SystemInformation_Init_FDD(UTRAN_CellId_Type p_CellId, + integer p_Band, + PLMN_Identity p_PLMNId, + PICH_PowerOffset p_PowerPICH, + AICH_PowerOffset p_PowerAICH, + octetstring p_Lac, + octetstring p_Rac, + octetstring p_NMO, + octetstring p_T3212, + integer p_AttFlag, + bitstring p_URAId, + DRX_CycleLengthStructure p_DRX, + COMMON_TestConfig_Enum p_TestConfig) return UTRAN_CellSysInfo_Type + { + var B28_Type v_CellIdentity := f_UTRAN_GetCellIndentity(p_CellId); + var template (value) UTRAN_CellSysInfo_Type v_CellSysInfo; + var boolean v_QbasedTestCase := f_GetTestcaseAttrib_Qbased_Rsrq(testcasename()); // Set to TRUE if QBASED test case @sic R5-121384 sic@ + + + v_CellSysInfo.MIB_ValueTagChanged := false; + v_CellSysInfo.SB1_ValueTagChanged := false; + + v_CellSysInfo.MIB := cs_MIB_Def(p_PLMNId); // MIB: default scheduling (will be modified when sending out the SIBs) + v_CellSysInfo.SB1 := cs_SB1_Def; // SB1: default scheduling (will be modified when sending out the SIBs) + + v_CellSysInfo.SIB1 := cs_SIB1_Def(p_Lac, p_Rac, p_NMO, p_T3212, p_AttFlag, p_DRX.cN_PS_DRX_CycleLength,p_DRX.cN_CS_DRX_CycleLength); // SIB1 + v_CellSysInfo.SIB2 := cs_SIB2_Def(p_URAId); // SIB2 + if (p_TestConfig == utran_only) { + v_CellSysInfo.SIB3 := cs_SIB3_DefUTRAN(v_CellIdentity); // SIB3 + v_CellSysInfo.SIB4 := cs_SIB4_DefUTRAN(v_CellIdentity); // SIB4 + } else { + v_CellSysInfo.SIB3 := cs_SIB3_DefUTRAN_GERAN(v_CellIdentity); // SIB3 + v_CellSysInfo.SIB4 := cs_SIB4_DefUTRAN_GERAN(v_CellIdentity); // SIB4 + } + + v_CellSysInfo.SIB5 := f_UTRAN_InitializeSIB5_SIB5Bis(p_Band, p_PowerPICH, p_PowerAICH); // SIB5 + v_CellSysInfo.SIB6 := cs_SIB6_Def(p_PowerPICH, p_PowerAICH); // SIB6 + v_CellSysInfo.SIB7 := cs_SIB7_Def; // SIB7 + + v_CellSysInfo.SIB11 := omit; // SIB11 is initialized later + v_CellSysInfo.SIB12 := cs_SIB12_Def; // SIB12 + v_CellSysInfo.SIB16 := cs_SIB16_Def(tsc_DL_DPCH1_SFP_SRB); // SIB16 + v_CellSysInfo.SIB18 := cs_SIB18_Def; // only one default PLMN, so don't need an intialization function + if (v_QbasedTestCase) { // QBASED test case + v_CellSysInfo.SIB19 := cds_SIB19_Qbased(omit); // to be replaced later with proper data from co-ord msg + } else { + v_CellSysInfo.SIB19 := cs_SIB19_Def(omit); // to be replaced later with proper data from co-ord msg; @sic R5s100871 sic@ + } + v_CellSysInfo.SIB21 := omit; // SIB21 @sic R5-144078 sic@ + v_CellSysInfo.SIB22 := omit; // SIB21 @sic R5-144078 sic@ + // SIB5 or SIB5bis + if ((p_Band == 4) or (p_Band == 9) or (p_Band == 10)) { + v_CellSysInfo.MIB.sibSb_ReferenceList[5].sibSb_Type := {sysInfoType5bis := 1}; + v_CellSysInfo.SIB5_Type := systemInformationBlockType5bis; + } else { + v_CellSysInfo.SIB5_Type := systemInformationBlockType5; + } + + v_CellSysInfo.config := configuration6; // Default sysinfo configuration for LTE-IRAT tc @sic R5-144078 sic@ + return valueof(v_CellSysInfo); + } + //---------------------------------------------------------------------------- + /* + * @desc To assign system information for a cell + * @param p_CellId + * @param p_PLMNId + * @param p_PowerPICH + * @param p_Lac + * @param p_Rac + * @param p_NMO + * @param p_T3212 + * @param p_AttFlag + * @param p_URAId + * @param p_DRX + * @param p_CellParametersID + * @param p_TestConfig + * @return UTRAN_CellSysInfo_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS) + */ + function fl_UTRAN_SystemInformation_Init_TDD(UTRAN_CellId_Type p_CellId, + PLMN_Identity p_PLMNId, + PICH_PowerOffset p_PowerPICH, + octetstring p_Lac, + octetstring p_Rac, + octetstring p_NMO, + octetstring p_T3212, + integer p_AttFlag, + bitstring p_URAId, + DRX_CycleLengthStructure p_DRX, + CellParametersID p_CellParametersID, + COMMON_TestConfig_Enum p_TestConfig) return UTRAN_CellSysInfo_Type + { + var B28_Type v_CellIdentity := f_UTRAN_GetCellIndentity(p_CellId); + var template (value) UTRAN_CellSysInfo_Type v_CellSysInfo; + var boolean v_QbasedTestCase := f_GetTestcaseAttrib_Qbased_Rsrq(testcasename()); // Set to TRUE if QBASED test case @sic R5-121384 sic@ + + v_CellSysInfo.MIB_ValueTagChanged := false; + v_CellSysInfo.SB1_ValueTagChanged := false; + v_CellSysInfo.MIB := cs_MIB_Def(p_PLMNId); // MIB: default scheduling (will be modified when sending out the SIBs) + v_CellSysInfo.SB1 := cs_SB1_Def; // SB1: default scheduling (will be modified when sending out the SIBs) + v_CellSysInfo.SIB1 := cs_SIB1_Def(p_Lac, p_Rac, p_NMO, p_T3212, p_AttFlag, p_DRX.cN_PS_DRX_CycleLength,p_DRX.cN_CS_DRX_CycleLength); // SIB1 + v_CellSysInfo.SIB2 := cs_SIB2_Def(p_URAId); // SIB2 + if (p_TestConfig == utran_only) + { + v_CellSysInfo.SIB3 := cs_SIB3_DefUTRAN_TDD(v_CellIdentity); // SIB3 + v_CellSysInfo.SIB4 := cs_SIB4_DefUTRAN_TDD(v_CellIdentity); // SIB4 + } else { + v_CellSysInfo.SIB3 := cs_SIB3_DefUTRAN_GERAN_TDD(v_CellIdentity); // SIB3 + v_CellSysInfo.SIB4 := cs_SIB4_DefUTRAN_GERAN_TDD(v_CellIdentity); // SIB4 + } + v_CellSysInfo.SIB5 := cs_SIB5_Def_TDD(p_PowerPICH, p_CellParametersID); // SIB5 + v_CellSysInfo.SIB5_Type := systemInformationBlockType5; // @sic R5s120615 sic@ + v_CellSysInfo.SIB6 := cs_SIB6_Def_TDD(p_PowerPICH); // SIB6 + v_CellSysInfo.SIB7 := cs_SIB7_Def_TDD; // SIB7 + v_CellSysInfo.SIB11 := omit; // SIB11 is initialized later + v_CellSysInfo.SIB16 := omit; // @sic R5s120615 sic@ + v_CellSysInfo.SIB12 := cs_SIB12_Def; // SIB12 + v_CellSysInfo.SIB18 := cs_SIB18_Def; // only one default PLMN, so don't need an intialization function + if (v_QbasedTestCase) { + v_CellSysInfo.SIB19 := cds_SIB19_Qbased(omit); // to be replaced later with proper data from co-ord msg + } else { + v_CellSysInfo.SIB19 := cs_SIB19_Def(omit); // to be replaced later with proper data from co-ord msg; @sic R5s100871 sic@ + } + v_CellSysInfo.config := configuration6; // Default sysinfo configuration for LTE-IRAT tc @sic R5-144078 sic@ + v_CellSysInfo.SIB21 := omit; // SIB21 @sic R5-144078 sic@ + v_CellSysInfo.SIB22 := omit; // SIB21 @sic R5-144078 sic@ + + return valueof(v_CellSysInfo); + } + + //---------------------------------------------------------------------------- + // COMMON FUNCTIONS + //---------------------------------------------------------------------------- + /* + * @desc Return the index corresponding to p_CellId + * @param p_CellId + * @return integer + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CellInfo_GetIndex(UTRAN_CellId_Type p_CellId) return integer + { + // @sic R5s130195: Utran cell enhanced sic@ + // @sic R5-133563: added utran34_CellA/B/C... for 34.123-1 NAS tc sic@ + select (p_CellId) { + case (utran_Cell5, utran34_Cell1, utran34_CellA) { + return 0; + } + case (utran_Cell7, utran34_Cell2, utran34_CellB) { + return 1; + } + case (utran_Cell8, utran34_Cell3, utran34_CellC) { + return 2; + } + case (utran_Cell9, utran34_Cell4, utran34_CellD) { + return 3; + } + case (utran34_Cell5, utran34_CellE) { + return 4; + } + case (utran34_Cell6, utran34_CellF) { + return 5; + } + case (utran34_Cell7, utran34_CellG) { + return 6; + } + case (utran34_Cell8, utran34_CellH) { + return 7; + } + case else { + FatalError(__FILE__, __LINE__, "Invalid CellId"); + return 0; + } + } + } + + //---------------------------------------------------------------------------------------------------------- + /* + * @desc Initialise all UTRAN cell info + * @return UTRAN_CellInfoList_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS) + */ + function f_UTRAN_CellArray_Init () return UTRAN_CellInfoList_Type + { + var UTRAN_CellInfoList_Type v_UTRAN_Cells; + var integer v_Index; + + if (px_UTRAN_ModeUnderTest == UTRAN_FDD) { // @sic R5-115770 sic@ + v_Index := f_UTRAN_CellInfo_GetIndex(utran_Cell5); + v_UTRAN_Cells[v_Index] := f_UTRAN_CellInfo_Init_FDD(utran_Cell5); + + v_Index := f_UTRAN_CellInfo_GetIndex(utran_Cell7); + v_UTRAN_Cells[v_Index] := f_UTRAN_CellInfo_Init_FDD(utran_Cell7); + + v_Index := f_UTRAN_CellInfo_GetIndex(utran_Cell8); + v_UTRAN_Cells[v_Index] := f_UTRAN_CellInfo_Init_FDD(utran_Cell8); + + v_Index := f_UTRAN_CellInfo_GetIndex(utran_Cell9); + v_UTRAN_Cells[v_Index] := f_UTRAN_CellInfo_Init_FDD(utran_Cell9); + + v_UTRAN_Cells := fl_UTRAN_InitializeSIB11(v_UTRAN_Cells); // Have to pass the whole array to intialize SIB11 as it uses info from all other cells + } else { // @sic R5-115770 sic@ + v_Index := f_UTRAN_CellInfo_GetIndex(utran_Cell5); + v_UTRAN_Cells[v_Index] := f_UTRAN_CellInfo_Init_TDD(utran_Cell5); + + v_Index := f_UTRAN_CellInfo_GetIndex(utran_Cell7); + v_UTRAN_Cells[v_Index] := f_UTRAN_CellInfo_Init_TDD(utran_Cell7); + + v_Index := f_UTRAN_CellInfo_GetIndex(utran_Cell8); + v_UTRAN_Cells[v_Index] := f_UTRAN_CellInfo_Init_TDD(utran_Cell8); + + v_Index := f_UTRAN_CellInfo_GetIndex(utran_Cell9); + v_UTRAN_Cells[v_Index] := f_UTRAN_CellInfo_Init_TDD(utran_Cell9); + + v_UTRAN_Cells := fl_UTRAN_InitializeSIB11_TDD(v_UTRAN_Cells); // Have to pass the whole array to intialize SIB11 as it uses info from all other cells + } + return v_UTRAN_Cells; + }; + + //---------------------------------------------------------------------------- + /* + * @desc return cell identity for the given cell + * @param p_CellId + * @return B28_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_GetCellIndentity(UTRAN_CellId_Type p_CellId) return B28_Type + { + select (p_CellId) { + case (utran_Cell5) { + return tsc_CellIdCell5; + } + case (utran_Cell7) { + return tsc_CellIdCell7; + } + case (utran_Cell8) { + return tsc_CellIdCell8; + } + case (utran_Cell9) { + return tsc_CellIdCell9; + } + case else { + FatalError(__FILE__, __LINE__, "invalid cellId"); + return int2bit(0, 28); + } + } + } + + //---------------------------------------------------------------------------- + /* + * @desc Function that fills fills the co-ordination message sys info structure to be sent to the other PTCs + * @param p_CellInfo + * @return template (value) IRAT_CoOrd_SysInfo_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_IR_SysInfoInit (UTRAN_CellInfoList_Type p_CellInfo) + return template (value) IRAT_CoOrd_SysInfo_Type + { + var template (value) CoOrd_UTRANSysInfo_Type v_Cell5; + var template (value) CoOrd_UTRANSysInfo_Type v_Cell7; + var template (value) CoOrd_UTRANSysInfo_Type v_Cell8; + var template (value) CoOrd_UTRANSysInfo_Type v_Cell9; + var B1_Type v_Diversity := '0'B; + var B1_Type v_Tstd := '0'B; + var integer v_Index_Cell5 := f_UTRAN_CellInfo_GetIndex(utran_Cell5); + var integer v_Index_Cell7 := f_UTRAN_CellInfo_GetIndex(utran_Cell7); + var integer v_Index_Cell8 := f_UTRAN_CellInfo_GetIndex(utran_Cell8); + var integer v_Index_Cell9 := f_UTRAN_CellInfo_GetIndex(utran_Cell9); + + // if the first cell is FDD, then they all are + if (p_CellInfo[v_Index_Cell5].fdd_tdd == UTRAN_FDD) { + v_Cell5 := {FDD := cs_CoOrdUTRANSysInfo_FDD(p_CellInfo[v_Index_Cell5].frequencyInfo.modeSpecificInfo.fdd.uarfcn_DL, + px_FDD_OperationBand, // @sic R5s130268: adding p_Band sic@ + p_CellInfo[v_Index_Cell5].cellInfo_Specific_FDD.priScrmCode, + p_CellInfo[v_Index_Cell5].cellInfo_Specific_FDD.uL_ScramblingCode, + f_U_Asn2Nas_PlmnId(p_CellInfo[v_Index_Cell5].plmnId), + f_UTRAN_GetCellIndentity(utran_Cell5), + oct2bit(p_CellInfo[v_Index_Cell5].lac), + oct2bit(p_CellInfo[v_Index_Cell5].rac))}; + v_Cell7 := {FDD := cs_CoOrdUTRANSysInfo_FDD(p_CellInfo[v_Index_Cell7].frequencyInfo.modeSpecificInfo.fdd.uarfcn_DL, + px_FDD_OperationBand, // @sic R5s130268: adding p_Band sic@ + p_CellInfo[v_Index_Cell7].cellInfo_Specific_FDD.priScrmCode, + p_CellInfo[v_Index_Cell7].cellInfo_Specific_FDD.uL_ScramblingCode, + f_U_Asn2Nas_PlmnId(p_CellInfo[v_Index_Cell7].plmnId), + f_UTRAN_GetCellIndentity(utran_Cell7), + oct2bit(p_CellInfo[v_Index_Cell7].lac), + oct2bit(p_CellInfo[v_Index_Cell7].rac))}; + v_Cell8 := {FDD := cs_CoOrdUTRANSysInfo_FDD(p_CellInfo[v_Index_Cell8].frequencyInfo.modeSpecificInfo.fdd.uarfcn_DL, + px_FDD_OperationBand, // @sic R5s130268: adding p_Band sic@ + p_CellInfo[v_Index_Cell8].cellInfo_Specific_FDD.priScrmCode, + p_CellInfo[v_Index_Cell8].cellInfo_Specific_FDD.uL_ScramblingCode, + f_U_Asn2Nas_PlmnId(p_CellInfo[v_Index_Cell8].plmnId), + f_UTRAN_GetCellIndentity(utran_Cell8), + oct2bit(p_CellInfo[v_Index_Cell8].lac), + oct2bit(p_CellInfo[v_Index_Cell8].rac))}; + v_Cell9 := {FDD := cs_CoOrdUTRANSysInfo_FDD(p_CellInfo[v_Index_Cell9].frequencyInfo.modeSpecificInfo.fdd.uarfcn_DL, + px_FDD_OperationBand, // @sic R5s130268: adding p_Band sic@ + p_CellInfo[v_Index_Cell9].cellInfo_Specific_FDD.priScrmCode, + p_CellInfo[v_Index_Cell9].cellInfo_Specific_FDD.uL_ScramblingCode, + f_U_Asn2Nas_PlmnId(p_CellInfo[v_Index_Cell9].plmnId), + f_UTRAN_GetCellIndentity(utran_Cell9), + oct2bit(p_CellInfo[v_Index_Cell9].lac), + oct2bit(p_CellInfo[v_Index_Cell9].rac))}; + } + else { // TDD + if (p_CellInfo[v_Index_Cell5].cellInfo_Specific_TDD.transmissionDiversityApplied == applied) { + v_Diversity := '1'B; + } + if (p_CellInfo[v_Index_Cell5].cellInfo_Specific_TDD.dwPCHInfo.tstd_Indicator == applied) { + v_Tstd := '1'B; + } + v_Cell5 := {TDD := cs_CoOrdUTRANSysInfo_TDD(p_CellInfo[v_Index_Cell5].frequencyInfo.modeSpecificInfo.tdd.uarfcn_Nt, + p_CellInfo[v_Index_Cell5].cellInfo_Specific_TDD.cellParametersID, + v_Diversity, + v_Tstd, + f_U_Asn2Nas_PlmnId(p_CellInfo[v_Index_Cell5].plmnId), + f_UTRAN_GetCellIndentity(utran_Cell5), + oct2bit(p_CellInfo[v_Index_Cell5].lac), + oct2bit(p_CellInfo[v_Index_Cell5].rac))}; + if (p_CellInfo[v_Index_Cell7].cellInfo_Specific_TDD.transmissionDiversityApplied == applied) { + v_Diversity := '1'B; + } + if (p_CellInfo[v_Index_Cell7].cellInfo_Specific_TDD.dwPCHInfo.tstd_Indicator == applied) { + v_Tstd := '1'B; + } + v_Cell7 := {TDD := cs_CoOrdUTRANSysInfo_TDD(p_CellInfo[v_Index_Cell7].frequencyInfo.modeSpecificInfo.tdd.uarfcn_Nt, + p_CellInfo[v_Index_Cell7].cellInfo_Specific_TDD.cellParametersID, + v_Diversity, + v_Tstd, + f_U_Asn2Nas_PlmnId(p_CellInfo[v_Index_Cell7].plmnId), + f_UTRAN_GetCellIndentity(utran_Cell7), + oct2bit(p_CellInfo[v_Index_Cell7].lac), + oct2bit(p_CellInfo[v_Index_Cell7].rac))}; + if (p_CellInfo[v_Index_Cell8].cellInfo_Specific_TDD.transmissionDiversityApplied == applied) { + v_Diversity := '1'B; + } + if (p_CellInfo[v_Index_Cell8].cellInfo_Specific_TDD.dwPCHInfo.tstd_Indicator == applied) { + v_Tstd := '1'B; + } + v_Cell8 := {TDD := cs_CoOrdUTRANSysInfo_TDD(p_CellInfo[v_Index_Cell8].frequencyInfo.modeSpecificInfo.tdd.uarfcn_Nt, + p_CellInfo[v_Index_Cell8].cellInfo_Specific_TDD.cellParametersID, + v_Diversity, + v_Tstd, + f_U_Asn2Nas_PlmnId(p_CellInfo[v_Index_Cell8].plmnId), + f_UTRAN_GetCellIndentity(utran_Cell8), + oct2bit(p_CellInfo[v_Index_Cell8].lac), + oct2bit(p_CellInfo[v_Index_Cell8].rac))}; + if (p_CellInfo[v_Index_Cell9].cellInfo_Specific_TDD.transmissionDiversityApplied == applied) { + v_Diversity := '1'B; + } + if (p_CellInfo[v_Index_Cell9].cellInfo_Specific_TDD.dwPCHInfo.tstd_Indicator == applied) { + v_Tstd := '1'B; + } + v_Cell9 := {TDD := cs_CoOrdUTRANSysInfo_TDD(p_CellInfo[v_Index_Cell9].frequencyInfo.modeSpecificInfo.tdd.uarfcn_Nt, + p_CellInfo[v_Index_Cell9].cellInfo_Specific_TDD.cellParametersID, + v_Diversity, + v_Tstd, + f_U_Asn2Nas_PlmnId(p_CellInfo[v_Index_Cell9].plmnId), + f_UTRAN_GetCellIndentity(utran_Cell9), + oct2bit(p_CellInfo[v_Index_Cell9].lac), + oct2bit(p_CellInfo[v_Index_Cell9].rac))}; + } + return cs_CoOrdUTRAN_SysInfo(v_Cell5, v_Cell7, v_Cell8, v_Cell9); + } + + //---------------------------------------------------------------------------- + /* + * @desc initialise sib19 + * @param p_CellInfoList + * @param p_EUTRAInfo + * @return UTRAN_CellInfoList_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_IR_SIB19_Init(UTRAN_CellInfoList_Type p_CellInfoList, + IRAT_CoOrd_SysInfo_Type p_EUTRAInfo) + return UTRAN_CellInfoList_Type + { /* @sic R5s100871 sic@ */ + var UTRAN_CellIdList_Type v_CellIdList := {utran_Cell5, utran_Cell7, utran_Cell8, utran_Cell9}; + var integer i; + var template (value) EUTRA_FrequencyAndPriorityInfoList v_EUTRA_FrequencyAndPriorityInfoList; + + for (i := 0; i < lengthof(p_EUTRAInfo.Eutra); i := i + 1) { //build the EUTRA_FrequencyAndPriorityInfoList + v_EUTRA_FrequencyAndPriorityInfoList[i] := cs_EUTRA_FrequencyAndPriorityInfo(p_EUTRAInfo.Eutra[i].Arfcn, + f_UTRAN_ConvertIntegerToEUTRA_MeasurementBandwidth(p_EUTRAInfo.Eutra[i].DL_Bandwidth)); + } + + for (i := 0; i < lengthof(v_CellIdList); i := i + 1) { // @sic R5s130433 sic@ + p_CellInfoList[i].sysInfo.SIB19 := valueof(cs_SIB19_Def(v_EUTRA_FrequencyAndPriorityInfoList)); + } + return p_CellInfoList; + } + + //---------------------------------------------------------------------------- + /* + * @desc Function that incorporates the information from the other PTC into UTRAN SIBs + * @param p_CellInfoList + * @param p_SysInfoList + * @return UTRAN_CellInfoList_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS) + */ + function f_UTRAN_IR_SIB11And19_Init(UTRAN_CellInfoList_Type p_CellInfoList, + IRAT_CoOrd_SysInfo_List_Type p_SysInfoList) + return UTRAN_CellInfoList_Type + { + var IRAT_CoOrd_SysInfo_Type v_EUTRA_SysInfo; + var IRAT_CoOrd_SysInfo_Type v_GERAN_SysInfo; + var integer v_NoOfPTCs := lengthof(p_SysInfoList); + + select (v_NoOfPTCs) { + case (1) { + v_EUTRA_SysInfo := p_SysInfoList[0]; + } + case (2) { + if(ischosen(p_SysInfoList[0].Eutra)) { + v_EUTRA_SysInfo := p_SysInfoList[0]; + v_GERAN_SysInfo := p_SysInfoList[1]; + } else { + v_GERAN_SysInfo := p_SysInfoList[0]; + v_EUTRA_SysInfo := p_SysInfoList[1]; + } + p_CellInfoList := fl_UTRAN_InitializeSIB11_ForGERAN(p_CellInfoList, v_GERAN_SysInfo.Geran); + } + case else { + FatalError(__FILE__, __LINE__, "wrong PTC configuration specified in test case"); + } + } + p_CellInfoList:= f_UTRAN_IR_SIB19_Init(p_CellInfoList, v_EUTRA_SysInfo); + + return p_CellInfoList; + } + + //---------------------------------------------------------------------------- + /* + * @desc Initialise FDD Cell Info for one cell + * @param p_CellId + * @return UTRAN_CellInfo_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS) + */ + function f_UTRAN_CellInfo_Init_FDD(UTRAN_CellId_Type p_CellId) return UTRAN_CellInfo_Type + { + var UTRAN_CellInfo_Type v_CellInfo; // Hellen>> changed this from template (value) to avoid doing valueof on a not completely initialized template + + var PrimaryScramblingCode v_PriScrmCode; + var bitstring v_URA_IdCell; + var template (value) FrequencyInfo v_FreqInfo; + var UL_ScramblingCode v_UL_ScramblingCode; + var Tcell v_Tcell; + + var template (value) FrequencyInfo v_FreqInfoLow := cs_FreqInfo_FDD(px_UARFCN_D_Low); + var template (value) FrequencyInfo v_FreqInfoMid := cs_FreqInfo_FDD(px_UARFCN_D_Mid); + var template (value) FrequencyInfo v_FreqInfoHigh := cs_FreqInfo_FDD(px_UARFCN_D_High); + + if (px_FDD_OperationBand == 6) { + // For Band 6, the frequency difference between tcv_FreqInfoLow, Mid and High is very short. Then tcv_FreqInfoMid is assigned to the px_UARFCN_D_Low value. + v_FreqInfoMid := cs_FreqInfo_FDD(px_UARFCN_D_Low); + v_FreqInfoHigh:= cs_FreqInfo_FDD(px_UARFCN_D_Low); //@sic R5s140046 sic@ + } + + select (p_CellId) { + case (utran_Cell5) { + v_PriScrmCode := 100; + v_URA_IdCell := tsc_URA_IdCell5; + v_FreqInfo := v_FreqInfoHigh;//According to 36.508 cl. 4.4.2 Table 4.4.2-1 @sic R5s100751, R5-110xxx sic@ + v_UL_ScramblingCode := 0; + v_Tcell := 256; //@sic R5-142973 sic@ + } + case (utran_Cell7) { + v_PriScrmCode := (100 + 50) mod 512; + v_URA_IdCell := tsc_URA_IdCell7; + v_FreqInfo := v_FreqInfoHigh;//According to 36.508 cl. 4.4.2 Table 4.4.2-1 @sic R5s100751, R5-110xxx sic@ + v_UL_ScramblingCode := 1000 mod 16777216; + v_Tcell := 512; //@sic R5-142973 sic@ + } + case (utran_Cell8) { + v_PriScrmCode := (100 + 100) mod 512; + v_URA_IdCell := tsc_URA_IdCell8; + v_FreqInfo := v_FreqInfoMid;//According to 36.508 cl. 4.4.2 Table 4.4.2-1 @sic R5s100751, R5-110xxx sic@ + v_UL_ScramblingCode := 2000 mod 16777216; + v_Tcell := 0; //@sic R5-142973 sic@ + } + case (utran_Cell9) { + v_PriScrmCode := (100 + 150) mod 512; + v_URA_IdCell := tsc_URA_IdCell9; + v_FreqInfo := v_FreqInfoLow;//According to 36.508 cl. 4.4.2 Table 4.4.2-1 + v_UL_ScramblingCode := 3000 mod 16777216; + v_Tcell := 0; //@sic R5-142973 sic@ + } + case else { + FatalError(__FILE__, __LINE__, "Invalid CellId"); + } + } + // initialisation of v_CellInfo + v_CellInfo.cellId := p_CellId; + v_CellInfo.fdd_tdd := UTRAN_FDD; + v_CellInfo.frequencyInfo := valueof(v_FreqInfo); + v_CellInfo.attenuationLevel := tsc_AttenuationCellOFF; + v_CellInfo.cellInfo_Specific_TDD := omit; + v_CellInfo.cellInfo_Specific_FDD.priScrmCode := v_PriScrmCode; + v_CellInfo.cellInfo_Specific_FDD.powerpCPICH := tsc_PowerpCPICH; + v_CellInfo.cellInfo_Specific_FDD.powerpSCH := tsc_PowerpSCH; + v_CellInfo.cellInfo_Specific_FDD.powersSCH := tsc_PowersSCH; + v_CellInfo.cellInfo_Specific_FDD.powerpCCPCH := tsc_PowerpCCPCH_FDD; + v_CellInfo.powersCCPCH := tsc_PowersCCPCH1; + v_CellInfo.powersCCPCH1 := tsc_PowersCCPCH1; + v_CellInfo.cellInfo_Specific_FDD.timingsCCPCH1 := tsc_TimingsCCPCH1; + v_CellInfo.cellInfo_Specific_FDD.tcell := v_Tcell; // @sic R5s120904 R5-142973 sic@ + v_CellInfo.cellInfo_Specific_FDD.powerAICH := tsc_PowerAICH; + v_CellInfo.powerPICH := tsc_PowerPICH; + v_CellInfo.cellTxPowerLevel := { defaultCellTxPowerLvl := NULL }; + v_CellInfo.sfnOffset := tsc_SFN_Offset; + v_CellInfo.puncLimit := tsc_PuncLimit; + v_CellInfo.sf_PRACH := tsc_PRACH1_SF; + v_CellInfo.cellInfo_Specific_FDD.slotFormatsCCPCH1 := tsc_SlotFormatsCCPCH1; + v_CellInfo.plmnId := valueof(cs_UTRAN_HPLMN_Def); + v_CellInfo.lac := tsc_LAC_Def; + v_CellInfo.rac := tsc_RAC_Def; + v_CellInfo.attFlag := tsc_AttOn; + v_CellInfo.nmo := bit2oct(tsc_NMO_I); + v_CellInfo.ura_Identity := v_URA_IdCell; + v_CellInfo.t3212 := tsc_T3212_Def; + v_CellInfo.cRNTI := tsc_CRNTI; + v_CellInfo.uRNTI := valueof(cs_U_RNTI_Def); + v_CellInfo.cellConfig := cell_NotConfigured; + // v_CellInfo.dRX_CycleLength := valueof(c_DRX_CycleLengthStrucDef); + v_CellInfo.dRX_CycleLength.cN_CS_DRX_CycleLength := 7; // TTCN-2: c_DRX_CycleLengthStrucDef + v_CellInfo.dRX_CycleLength.cN_PS_DRX_CycleLength := 7; // TTCN-2: c_DRX_CycleLengthStrucDef + v_CellInfo.dRX_CycleLength.uTRAN_DRX_CycleLength := 9; // TTCN-2: c_DRX_CycleLengthStrucDef + v_CellInfo.cellInfo_Specific_FDD.uL_ScramblingCode := v_UL_ScramblingCode; + v_CellInfo.rlcParams.timerPoll := tp400; + v_CellInfo.rlcParams.timerPollProhibit := tpp200; + v_CellInfo.rlcParams.pollSDU := sdu1; + v_CellInfo.rlcParams.pollWindow := pw99; + v_CellInfo.cellInfo_Specific_FDD.operationBand := f_UTRAN_FrequencyBandFDD(px_FDD_OperationBand); + v_CellInfo.nodeB_Id := 1; + // v_CellInfo.cellInfo_Specific_FDD.isServingCell := true; + v_CellInfo.cellInfo_Specific_FDD.band := px_FDD_OperationBand; + + if(px_FDD_OperationBand == 6) { + // ts_InitJapanMCC_Band6: For each Band 6 cell, set the MCC to the Japan MCC value. + v_CellInfo.plmnId.mcc := f_UTRAN_ConvertMCC_Nas2Asn(px_eJapanMCC_Band6); + } + + v_CellInfo.sysInfo := fl_UTRAN_SystemInformation_Init_FDD(v_CellInfo.cellId, + v_CellInfo.cellInfo_Specific_FDD.band, + v_CellInfo.plmnId, + v_CellInfo.powerPICH, + v_CellInfo.cellInfo_Specific_FDD.powerAICH, + v_CellInfo.lac, + v_CellInfo.rac, + v_CellInfo.nmo, + v_CellInfo.t3212, + v_CellInfo.attFlag, + v_CellInfo.ura_Identity, + v_CellInfo.dRX_CycleLength, + utran_only); + return v_CellInfo; + } + //---------------------------------------------------------------------------- + /* + * @desc Initialise TDD Cell Info for one cell + * @param p_CellId + * @return UTRAN_CellInfo_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS) + */ + function f_UTRAN_CellInfo_Init_TDD(UTRAN_CellId_Type p_CellId) return UTRAN_CellInfo_Type + { + var UTRAN_CellInfo_Type v_CellInfo; // Hellen>> changed this from template (value) to avoid doing valueof on a not completely initialized template + + var CellParametersID v_CellParametersID; + var bitstring v_URA_IdCell; + var template (value) FrequencyInfo v_FreqInfo; + + var template (value) FrequencyInfo v_FreqInfoLow := cs_FreqInfo_TDD(px_UARFCN_Low_TDD); // @sic R5-110803, R5w140207 sic@ + var template (value) FrequencyInfo v_FreqInfoMid := cs_FreqInfo_TDD(px_UARFCN_Mid_TDD); // @sic R5-110803, R5w140207 sic@ + var template (value) FrequencyInfo v_FreqInfoHigh := cs_FreqInfo_TDD(px_UARFCN_High_TDD); // @sic R5-110803, R5w140207 sic@ + + + select (p_CellId) { + case (utran_Cell5) { + v_CellParametersID := tsc_CellParametersID_Cell5; + v_URA_IdCell := tsc_URA_IdCell5; + v_FreqInfo := v_FreqInfoHigh; //@sic R5s130286 sic@ + } + case (utran_Cell7) { + v_CellParametersID := tsc_CellParametersID_Cell7; + v_URA_IdCell := tsc_URA_IdCell7; + v_FreqInfo := v_FreqInfoHigh; //@sic R5s130286 sic@ + } + case (utran_Cell8) { + v_CellParametersID := tsc_CellParametersID_Cell8; + v_URA_IdCell := tsc_URA_IdCell8; + v_FreqInfo := v_FreqInfoMid; //@sic R5s130286 sic@ + } + case (utran_Cell9) { + v_CellParametersID := tsc_CellParametersID_Cell9; + v_URA_IdCell := tsc_URA_IdCell9; + v_FreqInfo := v_FreqInfoLow; + } + case else { + FatalError(__FILE__, __LINE__, "Invalid CellId"); + } + } + // initialisation of v_CellInfo + v_CellInfo.cellId := p_CellId; + v_CellInfo.fdd_tdd := UTRAN_TDD; + v_CellInfo.frequencyInfo := valueof(v_FreqInfo); // @sic R5s120405 sic@ + v_CellInfo.cellInfo_Specific_TDD.upPCHposition := 22; + v_CellInfo.cellInfo_Specific_TDD.upPCHposition_S1 := 22; // @sic R5s120405 sic@ + v_CellInfo.cellInfo_Specific_TDD.upPCHposition_S2 := 22; // @sic R5s120405 sic@ + v_CellInfo.attenuationLevel := tsc_AttenuationCellOFF; + v_CellInfo.cellInfo_Specific_FDD := omit; + v_CellInfo.cellInfo_Specific_TDD.frequencyInfo_S1 := valueof(v_FreqInfo); // @sic R5s120405 sic@ + v_CellInfo.cellInfo_Specific_TDD.frequencyInfo_S2 := valueof(v_FreqInfo); // @sic R5s120405 sic@ + v_CellInfo.cellInfo_Specific_TDD.attenuationLevel_S1 := tsc_AttenuationCellOFF; + v_CellInfo.cellInfo_Specific_TDD.attenuationLevel_S2 := tsc_AttenuationCellOFF; + v_CellInfo.cellInfo_Specific_TDD.cellParametersID := v_CellParametersID; + v_CellInfo.cellInfo_Specific_TDD.powerpCCPCH := tsc_PowerpCCPCH_TDD; + v_CellInfo.powersCCPCH := tsc_PowersCCPCH1; + v_CellInfo.powersCCPCH1 := tsc_PowersCCPCH1; + v_CellInfo.powerPICH := tsc_PowerPICH; + v_CellInfo.cellInfo_Specific_TDD.powerFPACH := tsc_PowerFPACH; + v_CellInfo.cellTxPowerLevel := { defaultCellTxPowerLvl := NULL }; + v_CellInfo.sfnOffset := tsc_SFN_Offset; + v_CellInfo.puncLimit := tsc_PuncLimit; + v_CellInfo.sf_PRACH := omit; // @sic R5s120615 sic@ + v_CellInfo.plmnId := valueof(cs_UTRAN_HPLMN_Def); + v_CellInfo.lac := tsc_LAC_Def; + v_CellInfo.rac := tsc_RAC_Def; + v_CellInfo.attFlag := tsc_AttOn; + v_CellInfo.nmo := bit2oct(tsc_NMO_I); + v_CellInfo.ura_Identity := v_URA_IdCell; + v_CellInfo.t3212 := tsc_T3212_Def; + v_CellInfo.cRNTI := tsc_CRNTI; + v_CellInfo.uRNTI := valueof(cs_U_RNTI_Def); + v_CellInfo.cellConfig := cell_NotConfigured; + // v_CellInfo.dRX_CycleLength := c_DRX_CycleLengthStrucDef; + v_CellInfo.dRX_CycleLength.cN_CS_DRX_CycleLength := 7; // TTCN-2: c_DRX_CycleLengthStrucDef + v_CellInfo.dRX_CycleLength.cN_PS_DRX_CycleLength := 7; // TTCN-2: c_DRX_CycleLengthStrucDef + v_CellInfo.dRX_CycleLength.uTRAN_DRX_CycleLength := 9; // TTCN-2: c_DRX_CycleLengthStrucDef + v_CellInfo.rlcParams.timerPoll := tp400; // @sic R5s120405 sic@ + v_CellInfo.rlcParams.timerPollProhibit := tpp200; // @sic R5s120405 sic@ + v_CellInfo.rlcParams.pollSDU := sdu1; // @sic R5s120405 sic@ + v_CellInfo.rlcParams.pollWindow := pw99; // @sic R5s120405 sic@ + v_CellInfo.cellInfo_Specific_TDD.timeSlotConfigurationList_LCR := valueof(cs_Default_TimeSlot_Config_List); + v_CellInfo.cellInfo_Specific_TDD.transmissionDiversityApplied := notApplied; + v_CellInfo.cellInfo_Specific_TDD.dwPCHInfo := { + tstd_Indicator := notApplied, + dwPCH_Power := tsc_DwPCH_power + }; + v_CellInfo.nodeB_Id := 1; + + v_CellInfo.sysInfo := fl_UTRAN_SystemInformation_Init_TDD(v_CellInfo.cellId, + v_CellInfo.plmnId, + v_CellInfo.powerPICH, + v_CellInfo.lac, + v_CellInfo.rac, + v_CellInfo.nmo, + v_CellInfo.t3212, + v_CellInfo.attFlag, + v_CellInfo.ura_Identity, + v_CellInfo.dRX_CycleLength, + v_CellInfo.cellInfo_Specific_TDD.cellParametersID, + utran_only); + return (v_CellInfo); + } + + //------------------------------------------------------------------------------------------ + /* + * @desc local function to initialise FrequencyBandFDD + * @param p_OperationBand + * @return FrequencyBandFDD + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_FrequencyBandFDD(integer p_OperationBand) return FrequencyBandFDD + { + var template (value) FrequencyBandFDD v_FrequencyBandFDD; + + // this function is also called if UE doesn't support UTRA + if ((p_OperationBand == 1) and (pc_Band1_Supp or not pc_UTRA)) { // @sic R5s110244 sic@ + v_FrequencyBandFDD := cs_RadioFrequencyBandFDD_1; + } else if ((p_OperationBand == 2) and (pc_Band2_Supp or not pc_UTRA)) { // @sic R5s110244 sic@ + v_FrequencyBandFDD := cs_RadioFrequencyBandFDD_2; + } else if ((p_OperationBand == 3) and (pc_Band3_Supp or not pc_UTRA)) { // @sic R5s110244 sic@ + v_FrequencyBandFDD := cs_RadioFrequencyBandFDD_3; + } else if ((p_OperationBand == 4) and (pc_Band4_Supp or not pc_UTRA)) { // @sic R5s110244 sic@ + v_FrequencyBandFDD := cs_RadioFrequencyBandFDD_4; + } else if ((p_OperationBand == 5) and (pc_Band5_Supp or not pc_UTRA)) { // @sic R5s110244 sic@ + v_FrequencyBandFDD := cs_RadioFrequencyBandFDD_5; + } else if ((p_OperationBand == 6) and (pc_Band6_Supp or not pc_UTRA)) { // @sic R5s110244 sic@ + v_FrequencyBandFDD := cs_RadioFrequencyBandFDD_6; + } else if ((p_OperationBand == 7) and (pc_Band7_Supp or not pc_UTRA)) { // @sic R5s110244 sic@ + v_FrequencyBandFDD := cs_RadioFrequencyBandFDD_7; + } else if ((p_OperationBand == 8) and (pc_Band8_Supp or not pc_UTRA)) { // @sic R5s110244 sic@ + v_FrequencyBandFDD := cs_RadioFrequencyBandFDD_8; + } else if ((p_OperationBand == 9) and (pc_Band9_Supp or not pc_UTRA)) { // @sic R5s110244 sic@ + v_FrequencyBandFDD := cs_RadioFrequencyBandFDD_9; + } else if ((p_OperationBand == 10) and (pc_Band10_Supp or not pc_UTRA)) { // @sic R5s110244 sic@ + v_FrequencyBandFDD := cs_RadioFrequencyBandFDD_10; + } else if ((p_OperationBand == 11) and (pc_Band11_Supp or not pc_UTRA)) { // @sic R5s110244 R5s130165 sic@ + v_FrequencyBandFDD := cs_RadioFrequencyBandFDD_11; + } else if ((p_OperationBand == 12) and (pc_Band12_Supp or not pc_UTRA)) { // @sic R5s110244 R5s130165 sic@ + v_FrequencyBandFDD := cs_RadioFrequencyBandFDD_12; + } else if ((p_OperationBand == 13) and (pc_Band13_Supp or not pc_UTRA)) { // @sic R5s110244 R5s130165 sic@ + v_FrequencyBandFDD := cs_RadioFrequencyBandFDD_13; + } else if ((p_OperationBand == 14) and (pc_Band14_Supp or not pc_UTRA)) { // @sic R5s110244 R5s130165 sic@ + v_FrequencyBandFDD := cs_RadioFrequencyBandFDD_14; + } else if ((p_OperationBand == 15) and (false or not pc_UTRA)) { // @sic R5s110244 sic@ + v_FrequencyBandFDD := cs_RadioFrequencyBandFDD_15; + } else if ((p_OperationBand == 16) and (false or not pc_UTRA)) { // @sic R5s110244 sic@ + v_FrequencyBandFDD := cs_RadioFrequencyBandFDD_16; + } else if ((p_OperationBand == 17) and (false or not pc_UTRA)) { // @sic R5s110244 sic@ + v_FrequencyBandFDD := cs_RadioFrequencyBandFDD_17; + } else if ((p_OperationBand == 18) and (false or not pc_UTRA)) { // @sic R5s110244 sic@ + v_FrequencyBandFDD := cs_RadioFrequencyBandFDD_18; + } else if ((p_OperationBand == 19) and (pc_Band19_Supp or not pc_UTRA)) { // @sic R5s110244 R5s130165 sic@ + v_FrequencyBandFDD := cs_RadioFrequencyBandFDD_19; + } else if ((p_OperationBand == 20) and (pc_Band20_Supp or not pc_UTRA)) { // @sic R5s110244 R5s130165 sic@ + v_FrequencyBandFDD := cs_RadioFrequencyBandFDD_20; + } else if ((p_OperationBand == 21) and (pc_Band21_Supp or not pc_UTRA)) { // @sic R5s110244 R5s130165 sic@ + v_FrequencyBandFDD := cs_RadioFrequencyBandFDD_21; + } else if ((p_OperationBand == 22) and (pc_Band22_Supp or not pc_UTRA)) { // @sic R5s110244 R5s130165 sic@ + v_FrequencyBandFDD := cs_RadioFrequencyBandFDD_22; + } else if ((p_OperationBand == 25) and (pc_Band25_Supp or not pc_UTRA)) { // @sic R5s120178 R5s130165 sic@ + v_FrequencyBandFDD := cs_RadioFrequencyBandFDD_25; + } else if ((p_OperationBand == 26) and (pc_Band26_Supp or not pc_UTRA)) { // @sic R5s130195 sic@ + v_FrequencyBandFDD := cs_RadioFrequencyBandFDD_26; + } else { + FatalError(__FILE__, __LINE__, "unknown operation band"); + } + return valueof(v_FrequencyBandFDD); + } + //------------------------------------------------------------------------------------------ + /* + * @desc Converts between NAS internal representation of MCC to the MCC ASN.1 type + * @param p_MCC MCC as plain string of 3 decimal digits + * @return MCC as ASN.1 type (defined as array of 3 integers) + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_ConvertMCC_Nas2Asn(hexstring p_MCC) return MCC + { // Note: there is a EUTRA variant of this function too + return { hex2int(p_MCC[0]), hex2int(p_MCC[1]), hex2int(p_MCC[2]) }; //@sic R5s130498 R5s130730 sic@ + } + //---------------------------------------------------------------------------- + /* + * @desc Initialise UTRAN security + * @return UTRAN_SecurityInfo_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SecurityInfo_Init() runs on UTRAN_PTC return UTRAN_SecurityInfo_Type + { + var template (value) UTRAN_SecurityInfo_Type v_SecurityInfo; + + // Check that for UTRAN TDD, px_UTRAN_CipheringAlgorithm=uea0 + // @sic R5-123750 sic@ + if ((px_UTRAN_ModeUnderTest == UTRAN_TDD) and (px_UTRAN_CipheringAlgorithm != uea0)) { + f_UTRAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "px_UTRAN_CipheringAlgorithm not set to uea0 in UTRAN TDD"); + } + // In TDD uea0 is used: cipheringOnoff is set to false for SS + // @sic R5s130116 sic@ + if (px_UTRAN_ModeUnderTest == UTRAN_TDD) { + v_SecurityInfo.cipheringOnOff := false; + } else { + v_SecurityInfo.cipheringOnOff := true; + } + + v_SecurityInfo.cs_cipheringStarted := false; + v_SecurityInfo.ps_cipheringStarted := false; + v_SecurityInfo.recentSecureDomain := ps_domain; // the domain on which security was recently started, and hence the SRB are ciphered and Integrit protected with this domain. + v_SecurityInfo.dL_CipherMode := cs_CipheringModeCmdOn(uea2); + v_SecurityInfo.dL_CipherMode_r99 := cs_Null_CipheringModeCommand; // @sic R5s120904 sic@ + v_SecurityInfo.uL_CipherMode := omit; + v_SecurityInfo.cipheringAlgorithmCapability := '0000000000000111'B; + v_SecurityInfo.integrityStarted := false; + v_SecurityInfo.dL_Integrity := cs_IntegrityProtectStart(px_FRESH, uia2); + v_SecurityInfo.dL_Integrity_r99 := cs_IntegrityProtectStart_r99(px_FRESH, uia1); // @sic R5s120904 sic@ + v_SecurityInfo.uL_Integrity := omit; + v_SecurityInfo.dl_IntegrityCheckInfo := omit; + v_SecurityInfo.integrProtAlgCap := '0000000000000110'B; //@sic R5s130137 sic@ + v_SecurityInfo.start_CS := '00000000000000000000'B; // Default new key + v_SecurityInfo.start_PS := '00000000000000000000'B; // Default new key + v_SecurityInfo.authKeys.AuthPS := cs_CommonAuthParams_Init(px_eAuthRAND); + v_SecurityInfo.authKeys.HFN := int2bit (0, 20); + v_SecurityInfo.authKeys.AuthCS.CKey := tsc_AuthUndefinedB128; + v_SecurityInfo.authKeys.AuthCS.IKey := tsc_AuthUndefinedB128; + v_SecurityInfo.authKeys.AuthCS.CKeySeq := '111'B; + v_SecurityInfo.authKeys.CSinOtherRAT := false; // @sic R5s110168 change 8.6 sic@ + + return valueof(v_SecurityInfo); + } + + //---------------------------------------------------------------------------- + // GET/SET FUNCTIONS + //---------------------------------------------------------------------------- + /* + * @desc Function that sets the Tcell of the UTRAN cell + * @param p_CellId + * @param p_TCell + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CellInfo_SetTCell(UTRAN_CellId_Type p_CellId, + integer p_TCell) runs on UTRAN_PTC + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + v_CellInfo.cellInfo_Specific_FDD.tcell := p_TCell; + f_UTRAN_CellInfo_Set(p_CellId, v_CellInfo); + }; + + /* + * @desc get info of cell with given index (p_CellId) + * @param p_CellId + * @return UTRAN_CellInfo_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CellInfo_Get(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return UTRAN_CellInfo_Type + { + var integer v_Index := f_UTRAN_CellInfo_GetIndex(p_CellId); + return vc_UTRAN_Global.CellArray[v_Index]; + } + + /* + * @desc set cell info for given cell + * @param p_CellId + * @param p_CellInfo + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CellInfo_Set(UTRAN_CellId_Type p_CellId, + UTRAN_CellInfo_Type p_CellInfo) runs on UTRAN_PTC + { + var integer v_Index := f_UTRAN_CellInfo_GetIndex(p_CellId); + vc_UTRAN_Global.CellArray[v_Index] := p_CellInfo; + } + + /* + * @desc Function that returns the NMO of the UTRAN cell + * @param p_CellId + * @return B2_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CellInfo_GetNMO(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return B2_Type + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return substr(oct2bit(v_CellInfo.nmo), 6, 2); // @sic R5s110705 sic@ + } + + /* + * @desc Function that sets the NMO of the UTRAN cell + * @param p_CellId + * @param p_NMO + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_CellInfo_SetNMO(UTRAN_CellId_Type p_CellId, + B2_Type p_NMO) runs on UTRAN_PTC + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + var O1_Type v_RAC := f_UTRAN_CellInfo_GetRAC(p_CellId); //@sic R5-140633 sic@ + + v_CellInfo.nmo := bit2oct(p_NMO); + v_CellInfo.sysInfo.SIB1.cn_DomainSysInfoList[0].cn_Type.gsm_MAP := v_RAC & bit2oct(p_NMO); //@sic R5-140633 sic@ + + f_UTRAN_CellInfo_Set(p_CellId, v_CellInfo); + } + + /* + * @desc get LAC of UTRAN cell + * @param p_CellId + * @return NAS_Lac + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CellInfo_GetLAC(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return NAS_Lac + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.lac; + } + + /* + * @desc set LAC of UTRAN cell + * @param p_CellId + * @param p_LAC + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_CellInfo_SetLAC(UTRAN_CellId_Type p_CellId, + NAS_Lac p_LAC) runs on UTRAN_PTC + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + v_CellInfo.lac := p_LAC; + v_CellInfo.sysInfo.SIB1.cn_CommonGSM_MAP_NAS_SysInfo := p_LAC; //@sic R5-140633 sic@ + + f_UTRAN_CellInfo_Set(p_CellId, v_CellInfo); + } + + /* + * @desc get RAC of UTRAN cell + * @param p_CellId + * @return NAS_Rac + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CellInfo_GetRAC(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return NAS_Rac + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.rac; + } + + /* + * @desc set RAC of UTRAN cell + * @param p_CellId + * @param p_RAC + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_CellInfo_SetRAC(UTRAN_CellId_Type p_CellId, + NAS_Rac p_RAC) runs on UTRAN_PTC + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + v_CellInfo.rac := p_RAC; + v_CellInfo.sysInfo.SIB1.cn_DomainSysInfoList[0].cn_Type.gsm_MAP := p_RAC & bit2oct(tsc_NMO_I); //@sic R5s130922 sic@ + f_UTRAN_CellInfo_Set(p_CellId, v_CellInfo); + } + + /* + * @desc get the PLMN identity of UTRAN cell + * @param p_CellId + * @return PLMN_Identity + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CellInfo_GetPLMNIdentity(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return PLMN_Identity + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.plmnId; + } + + /* + * @desc set the PLMN identity of UTRAN cell + * @param p_CellId + * @param p_PLMN + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_CellInfo_SetPLMNIdentity(UTRAN_CellId_Type p_CellId, + PLMN_Identity p_PLMN) runs on UTRAN_PTC + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + + v_CellInfo.plmnId.mcc := p_PLMN.mcc; // @sic R5s140326 sic@ + if (px_FDD_OperationBand != 6) { // @sic R5s140326 sic@ + v_CellInfo.plmnId.mnc := p_PLMN.mnc; + } + f_UTRAN_CellInfo_Set(p_CellId, v_CellInfo); + } + + /* + * @desc set the Multiple PLMN identities in the MIB of UTRAN cell + * @param p_CellId + * @param p_PLMN + * @param p_Multiple_PLMN_List + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_CellInfo_SetMultiplePLMNIdentities(UTRAN_CellId_Type p_CellId, + PLMN_Identity p_PLMN, + Multiple_PLMN_List_Type p_Multiple_PLMN_List) runs on UTRAN_PTC + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + v_CellInfo.sysInfo.MIB.plmn_Type.gsm_MAP.plmn_Identity := p_PLMN; + v_CellInfo.sysInfo.MIB.v690NonCriticalExtensions.masterInformationBlock_v690ext.multiplePLMN_List.mibPLMN_Identity := true; + v_CellInfo.sysInfo.MIB.v690NonCriticalExtensions.masterInformationBlock_v690ext.multiplePLMN_List.multiplePLMNs := p_Multiple_PLMN_List; + v_CellInfo.sysInfo.MIB.v690NonCriticalExtensions.v6b0NonCriticalExtensions := omit; // @sic R5s120849 sic@ + f_UTRAN_CellInfo_Set(p_CellId, v_CellInfo); + } + + /* + * @desc Function that returns the NodeB Id + * @param p_CellId + * @return integer + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CellInfo_GetNodeB_Id(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return integer + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.nodeB_Id; + } + + /* + * @desc Function that returns the C_RNTI + * @param p_CellId + * @return C_RNTI + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CellInfo_GetC_RNTI(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return C_RNTI + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.cRNTI; + } + + /* + * @desc Function that returns the U_RNTI + * @param p_CellId + * @return U_RNTI + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CellInfo_GetU_RNTI(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return U_RNTI + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.uRNTI; + } + + /* + * @desc Function that returns the PICH Power Offset + * @param p_CellId + * @return PICH_PowerOffset + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CellInfo_GetPICH_PowerOffset(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return PICH_PowerOffset + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.powerPICH; + } + + /* + * @desc Function that returns the FDD pCCPCH power level + * @param p_CellId + * @return DL_TxPower + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CellInfo_GetpCCPCH_Power_FDD(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return DL_TxPower + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.cellInfo_Specific_FDD.powerpCCPCH; + } + + /* + * @desc Function that returns the TDD pCCPCH Power level + * @param p_CellId + * @return DL_TxPower + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CellInfo_GetpCCPCH_Power_TDD(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return DL_TxPower + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.cellInfo_Specific_TDD.powerpCCPCH; + } + + /* + * @desc Function that returns the sCCPCH1 Power Level + * @param p_CellId + * @return DL_TxPower + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CellInfo_GetsCCPCH1_Power(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return DL_TxPower + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.powersCCPCH1; + } + + /* + * @desc Function that returns the Tx Power Level + * @param p_CellId + * @return CellTxPowerLevel + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CellInfo_GetCellTxPower(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return CellTxPowerLevel + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.cellTxPowerLevel; + } + + /* + * @desc Function that returns the SFN Offset + * @param p_CellId + * @return integer + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CellInfo_GetSFNOffset(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return integer + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.sfnOffset; + } + + /* + * @desc Function that returns the attenuation level of the UTRAN cell + * @param p_CellId + * @return integer + * @status + */ + function f_UTRAN_CellInfo_GetAttenuationLevel(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return integer + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.attenuationLevel; + } + + /* + * @desc To change the reference power level of the UTRAN cell: pCPICH for FDD and pCCPCH for TDD. + * The default power level is -60dB. + * This function shall be used when test prose demands a lower power than the default one. + * @param p_CellId + * @param p_CPICHPower ...the FDD power level + * @param p_PCCPCHPower ...the TDD power level + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_SetReferenceCellPower(UTRAN_CellId_Type p_CellId, + DL_TxPower_PCPICH p_CPICHPower, + DL_TxPower_PCCPCH p_PCCPCHPower) runs on UTRAN_PTC + { + var UTRAN_FDD_TDD_Type v_FDD_TDD_Mode := f_UTRAN_CellInfo_GetFDD_TDD(p_CellId); + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + + if (v_FDD_TDD_Mode == UTRAN_FDD) { // FDD + v_CellInfo.cellInfo_Specific_FDD.powerpCPICH := p_CPICHPower; + f_UTRAN_CellInfo_Set(p_CellId, v_CellInfo); + } + else { //TDD + v_CellInfo.cellInfo_Specific_TDD.powerpCCPCH := p_PCCPCHPower; + f_UTRAN_CellInfo_Set(p_CellId, v_CellInfo); + } + } + + /* + * @desc Function that returns the puncturing limit + * @param p_CellId + * @return PuncturingLimit + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CellInfo_GetPuncturingLimit(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return PuncturingLimit + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.puncLimit; + } + + /* + * @desc Function that returns the SF of the PRACH + * @param p_CellId + * @return SF_PRACH + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CellInfo_GetSF_PRACH(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return SF_PRACH + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.sf_PRACH; + } + + /* + * @desc get frequency info of UTRAN cell + * @param p_CellId + * @return FrequencyInfo + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CellInfo_GetFrequencyInfo(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return FrequencyInfo + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.frequencyInfo; + } + + /* + * @desc get UTRAN cell being FDD or TDD + * @param p_CellId + * @return UTRAN_FDD_TDD_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CellInfo_GetFDD_TDD(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return UTRAN_FDD_TDD_Type + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.fdd_tdd; + } + + /* + * @desc get UTRAN cell being 'fdd' or 'tdd' in RatType (to be used in UTRAN ASPs) + * @param p_CellId + * @return RatType + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CellInfo_GetRatType(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return RatType + { + var RatType v_RatType := fdd; + + if (f_UTRAN_CellInfo_GetFDD_TDD(p_CellId) == UTRAN_TDD){ + v_RatType:=tdd128; + } + return v_RatType; + } + + /* + * @desc get the FDD UL scrambling code + * @param p_CellId + * @return UL_ScramblingCode + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CellInfo_GetULScrmCode_FDD(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return UL_ScramblingCode + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.cellInfo_Specific_FDD.uL_ScramblingCode; + } + + /* + * @desc get FDD specific information of UTRAN cell + * @param p_CellId + * @return UTRAN_CellInfo_Type_FDD + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CellInfo_GetFDDSpecific(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return UTRAN_CellInfo_Type_FDD + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.cellInfo_Specific_FDD; + } + + /* + * @desc get TDD specific information of UTRAN cell + * @param p_CellId + * @return UTRAN_CellInfo_Type_TDD + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CellInfo_GetTDDSpecific(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return UTRAN_CellInfo_Type_TDD + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.cellInfo_Specific_TDD; + } + + /* + * @desc get the RLC parameters of the UTRAN cell + * @param p_CellId + * @return UTRAN_FDD_TDD_Type + * @status + */ + function f_UTRAN_CellInfo_GetRLCParams(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return RlcCtrl_Type + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.rlcParams; + } + + /* + * @desc Function that returns the DRX cycle length structure + * @param p_CellId + * @return DRX_CycleLengthStructure + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CellInfo_GetDRX_CycleLength(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return DRX_CycleLengthStructure + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.dRX_CycleLength; + } + + /* + * @desc Function that returns the Att flag of the UTRAN Cell + * @param p_CellId + * @return integer + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CellInfo_GetAttFlag(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return integer + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.attFlag; + } + + /* + * @desc Function that returns the T3212 value + * @param p_CellId + * @return octetstring + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_UTRAN_CellInfo_GetT3212(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return octetstring + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.t3212; + } + + /* + * @desc Function that returns the TDD Cell Parameters Id + * @param p_CellId + * @return CellParametersID + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_UTRAN_CellInfo_GetCellParametersID_TDD(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return CellParametersID + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.cellInfo_Specific_TDD.cellParametersID; + } + + /* + * @desc Function that returns the FDD primary scrambling code + * @param p_CellId + * @return PrimaryScramblingCode + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_UTRAN_CellInfo_GetPriScrmCode_FDD(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return PrimaryScramblingCode + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.cellInfo_Specific_FDD.priScrmCode; + } + + /* + * @desc Function that returns the RB config type + * @param p_CellId + * @return RB_ConfigType + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CellInfo_GetConfigType(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return RB_ConfigType + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.cellConfig; + } + + /* + * @desc Function that returns the UARFCN of the specified UTRAN cell + * @param p_CellId + * @return UARFCN + * @status APPROVED (LTE_IRAT, UTRAN) + */ + function f_UTRAN_CellInfo_GetUARFCN(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return UARFCN + { + var UARFCN v_UARFCN; + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + var UTRAN_FDD_TDD_Type v_UTRAN_FDD_TDD := f_UTRAN_CellInfo_GetFDD_TDD(p_CellId); + + if (v_UTRAN_FDD_TDD == UTRAN_FDD) { + v_UARFCN := v_CellInfo.frequencyInfo.modeSpecificInfo.fdd.uarfcn_DL; + } else { + v_UARFCN := v_CellInfo.frequencyInfo.modeSpecificInfo.tdd.uarfcn_Nt; + } + return v_UARFCN; + } + + /* + * @desc Function that sets the RB config Type + * @param p_CellId + * @param p_CellConfig + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CellInfo_SetConfigType(UTRAN_CellId_Type p_CellId, RB_ConfigType p_CellConfig) runs on UTRAN_PTC + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + v_CellInfo.cellConfig := p_CellConfig; + f_UTRAN_CellInfo_Set(p_CellId, v_CellInfo); + } + + //---------------------------------------------------------------------------- + // Access to Security Parameters: + + /* + * @desc get SecurityInfo from global structure + * @return UTRAN_SecurityInfo_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_Security_Get() runs on UTRAN_PTC return UTRAN_SecurityInfo_Type + { + return vc_UTRAN_Global.Security; + } + + /* + * @desc set SecurityInfo in global structure + * @param p_Auth_Params + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_Security_Set(UTRAN_SecurityInfo_Type p_Auth_Params) runs on UTRAN_PTC + { + vc_UTRAN_Global.Security := p_Auth_Params; + } + + /* + * @desc set UE SecurityCapability in global structure + * @param p_SecurityCapability + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_SecurityCapability_Set(SecurityCapability p_SecurityCapability) runs on UTRAN_PTC + { + vc_UTRAN_Global.Security.cipheringAlgorithmCapability := p_SecurityCapability.cipheringAlgorithmCap; + vc_UTRAN_Global.Security.integrProtAlgCap := p_SecurityCapability.integrityProtectionAlgorithmCap; + } + + //---------------------------------------------------------------------------- + // Access to Message in Default Parameters: + /* + * @desc get MsgReceivedInDefault from global structure and reset global entry + * @return RRC_DATA_IND + * @status APPROVED (LTE_A, LTE_IRAT, POS) + */ + function f_UTRAN_MsgInDefault_GetRAU() runs on UTRAN_PTC return RRC_DATA_IND + { + var RRC_DATA_IND v_RRC_DATA_IND := vc_UTRAN_Global.MsgInDefault.routingAreaUpdateRequest; + vc_UTRAN_Global.MsgInDefault.routingAreaUpdateRequest := omit; // Set it back to omit now + return v_RRC_DATA_IND; + } + + /* + * @desc Store RoutingAreaUpdateRequest in global structure + * @param p_RoutingAreaUpdateRequest + * @status APPROVED (LTE_A, LTE_IRAT, POS) + */ + function f_UTRAN_MsgInDefault_SetRAU(RRC_DATA_IND p_RoutingAreaUpdateRequest) runs on UTRAN_PTC + { + vc_UTRAN_Global.MsgInDefault.routingAreaUpdateRequest := p_RoutingAreaUpdateRequest; + } + + /* + * @desc check if there is already a message stored in the global structure MsgReceivedInDefault + * @return boolean + * @status APPROVED (LTE_A, LTE_IRAT, POS) + */ + function f_UTRAN_MsgInDefault_CheckRAU() runs on UTRAN_PTC return boolean + { + return isvalue(vc_UTRAN_Global.MsgInDefault.routingAreaUpdateRequest); + } + + /* + * @desc check if there is already a message stored in the global structure MsgReceivedInDefault + * @return boolean + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_MsgInDefault_CheckMRM() runs on UTRAN_PTC return boolean + { // @sic R5s140340 sic@ + return isvalue(vc_UTRAN_Global.MsgInDefault.measurementReport); + } + + /* + * @desc Store MeasurementReport in global structure + * @param p_MeasurementReport + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_MsgInDefault_SetMRM(U_RLC_AM_IND p_MeasurementReport) runs on UTRAN_PTC + { // @sic R5s140340 sic@ + vc_UTRAN_Global.MsgInDefault.measurementReport := p_MeasurementReport; + } + + //---------------------------------------------------------------------------- + /* + * @desc get sys info for given cell + * @param p_CellId + * @return UTRAN_CellSysInfo_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SysInfo_Get(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return UTRAN_CellSysInfo_Type + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.sysInfo; + } + + //---------------------------------------------------------------------------- + /* + * @desc set sys info for given cell + * @param p_CellId + * @param p_SysInfo + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SysInfo_Set(UTRAN_CellId_Type p_CellId, + UTRAN_CellSysInfo_Type p_SysInfo) runs on UTRAN_PTC + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + v_CellInfo.sysInfo := p_SysInfo; + f_UTRAN_CellInfo_Set(p_CellId, v_CellInfo); + } + + /* + * @desc get SIB19 from global cell array + * @param p_CellId + * @return SysInfoType19 + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_SysInfo_GetSIB19(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return SysInfoType19 + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.sysInfo.SIB19; + } + + /* + * @desc Function that sets the SIB19 contents + * @param p_CellId + * @param p_SIB19 + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_UTRAN_SysInfo_SetSIB19(UTRAN_CellId_Type p_CellId, + template (value) SysInfoType19 p_SIB19) runs on UTRAN_PTC + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + v_CellInfo.sysInfo.SIB19 := valueof(p_SIB19); + f_UTRAN_CellInfo_Set(p_CellId, v_CellInfo); + } + + /* + * @desc Function that gets the SIB1 contents + * @param p_CellId + * @return SysInfoType1 + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_SysInfo_GetSIB1(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return SysInfoType1 + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.sysInfo.SIB1; + } + + /* + * @desc Function that sets the SIB1 contents + * @param p_CellId + * @param p_SIB1 + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_SysInfo_SetSIB1(UTRAN_CellId_Type p_CellId, + template (value) SysInfoType1 p_SIB1) runs on UTRAN_PTC + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + v_CellInfo.sysInfo.SIB1 := valueof(p_SIB1); + f_UTRAN_CellInfo_Set(p_CellId, v_CellInfo); + } + + /* + * @desc Function that gets the SIB3 contents + * @param p_CellId + * @return SysInfoType3 + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_SysInfo_GetSIB3(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return SysInfoType3 { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.sysInfo.SIB3; + } + + /* + * @desc Function that sets the SIB3 contents + * @param p_CellId + * @param p_SIB3 + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_SysInfo_SetSIB3(UTRAN_CellId_Type p_CellId, + template (value) SysInfoType3 p_SIB3) runs on UTRAN_PTC + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + v_CellInfo.sysInfo.SIB3 := valueof(p_SIB3); + f_UTRAN_CellInfo_Set(p_CellId, v_CellInfo); + } + + /* + * @desc set MIB for given cell + * @param p_CellId + * @param p_MIB + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SysInfo_SetMIB(UTRAN_CellId_Type p_CellId, + template (value) MasterInformationBlock p_MIB) runs on UTRAN_PTC + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + v_CellInfo.sysInfo.MIB := valueof(p_MIB); + f_UTRAN_CellInfo_Set(p_CellId, v_CellInfo); + } + + /* + * @desc set SB1 for given cell + * @param p_CellId + * @param p_SB1 + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SysInfo_SetSB1(UTRAN_CellId_Type p_CellId, + template (value) SysInfoTypeSB1 p_SB1) runs on UTRAN_PTC + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + v_CellInfo.sysInfo.SB1 := valueof(p_SB1); + f_UTRAN_CellInfo_Set(p_CellId, v_CellInfo); + } + + /* + * @desc Set MIB for given cell + * @param p_CellId + * @param p_MIB_ValueTag + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_SysInfo_SetMIB_ValueTag(UTRAN_CellId_Type p_CellId, + integer p_MIB_ValueTag) runs on UTRAN_PTC + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + v_CellInfo.sysInfo.MIB.mib_ValueTag := p_MIB_ValueTag; + f_UTRAN_CellInfo_Set(p_CellId, v_CellInfo); + } + + /* + * @desc get MIB for given UTRAN cell + * @param p_CellId + * @return MasterInformationBlock + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_SysInfo_GetMIB(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return MasterInformationBlock + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.sysInfo.MIB; + } + + /* + * @desc get SB1 for given UTRAN cell + * @param p_CellId + * @return SysInfoTypeSB1 + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_SysInfo_GetSB1(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return SysInfoTypeSB1 + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.sysInfo.SB1; + } + + /* + * @desc get SIB5 for given UTRAN cell + * @param p_CellId + * @return SysInfoType5 + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_SysInfo_GetSIB5(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return SysInfoType5 + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.sysInfo.SIB5; + } + + /* + * @desc get SIB7 for given UTRAN cell + * @param p_CellId + * @return SysInfoType7 + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_SysInfo_GetSIB7(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return SysInfoType7 + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.sysInfo.SIB7; + } + + /* + * @desc get SIB11 for given UTRAN cell + * @param p_CellId + * @return SysInfoType11 + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_SysInfo_GetSIB11(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return SysInfoType11 + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.sysInfo.SIB11; + } + + /* + * @desc get SIB12 for given UTRAN cell + * @param p_CellId + * @return SysInfoType12 + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_SysInfo_GetSIB12(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return SysInfoType12 + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + return v_CellInfo.sysInfo.SIB12; + } + + /* + * @desc Function that sets the Q-RxLevMin in SIB3 content + * @param p_CellId + * @param p_Q_RxlevMin + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_SysInfo_SetSIB3_QrxLevMin(UTRAN_CellId_Type p_CellId, + Q_RxlevMin p_Q_RxlevMin) runs on UTRAN_PTC + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + + if (f_UTRAN_CellInfo_GetFDD_TDD(p_CellId) == UTRAN_FDD) { //@sic R5s140182 sic@ + v_CellInfo.sysInfo.SIB3.cellSelectReselectInfo.modeSpecificInfo.fdd.q_RxlevMin := p_Q_RxlevMin; + } else { + v_CellInfo.sysInfo.SIB3.cellSelectReselectInfo.modeSpecificInfo.tdd.q_RxlevMin := p_Q_RxlevMin; + } + f_UTRAN_CellInfo_Set(p_CellId, v_CellInfo); + } + + /* + * @desc Function that sets the Q-RxLevMin in SIB4 content + * @param p_CellId + * @param p_Q_RxlevMin + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_SysInfo_SetSIB4_QrxLevMin(UTRAN_CellId_Type p_CellId, + Q_RxlevMin p_Q_RxlevMin) runs on UTRAN_PTC + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + + if (f_UTRAN_CellInfo_GetFDD_TDD(p_CellId) == UTRAN_FDD) { //@sic R5s140182 sic@ + v_CellInfo.sysInfo.SIB4.cellSelectReselectInfo.modeSpecificInfo.fdd.q_RxlevMin := p_Q_RxlevMin; + } else { + v_CellInfo.sysInfo.SIB4.cellSelectReselectInfo.modeSpecificInfo.tdd.q_RxlevMin := p_Q_RxlevMin; + } + f_UTRAN_CellInfo_Set(p_CellId, v_CellInfo); + } + + /* + * @desc Function that sets the Q-QualMin in SIB3 content + * @param p_CellId + * @param p_Q_QualMin + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_SysInfo_SetSIB3_QqualMin(UTRAN_CellId_Type p_CellId, + Q_QualMin p_Q_QualMin) runs on UTRAN_PTC + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + + if (f_UTRAN_CellInfo_GetFDD_TDD(p_CellId) == UTRAN_FDD) { //@sic R5s140182 sic@ + v_CellInfo.sysInfo.SIB3.cellSelectReselectInfo.modeSpecificInfo.fdd.q_QualMin := p_Q_QualMin; + } //Q-Qualmin not defined in for TDD + f_UTRAN_CellInfo_Set(p_CellId, v_CellInfo); + } + + /* + * @desc Function that sets the Q-QualMin in SIB4 content + * @param p_CellId + * @param p_Q_QualMin + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_SysInfo_SetSIB4_QqualMin(UTRAN_CellId_Type p_CellId, + Q_QualMin p_Q_QualMin) runs on UTRAN_PTC + { + var UTRAN_CellInfo_Type v_CellInfo := f_UTRAN_CellInfo_Get(p_CellId); + + if (f_UTRAN_CellInfo_GetFDD_TDD(p_CellId) == UTRAN_FDD) { //@sic R5s140182 sic@ + v_CellInfo.sysInfo.SIB4.cellSelectReselectInfo.modeSpecificInfo.fdd.q_QualMin := p_Q_QualMin; + }//Q-Qualmin not defined in for TDD + f_UTRAN_CellInfo_Set(p_CellId, v_CellInfo); + } + + //---- MobileInfo Set/Get functions ---------------------------------------------- + /* + * @desc get E-UTRA capabilities in the Mobile Info + * @return octetstring + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_MobileInfo_EUTRACapability_Get() runs on UTRAN_PTC return octetstring + { + return vc_UTRAN_Global.MobileInfo.ue_EUTRA_Capability; + } + + /* + * @desc Set E-UTRA capabilities in the mobile info + * @param p_EUTRACapability + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_UTRAN_MobileInfo_EUTRACapability_Set(octetstring p_EUTRACapability) runs on UTRAN_PTC + { + vc_UTRAN_Global.MobileInfo.ue_EUTRA_Capability := p_EUTRACapability; + } + + //---- ConfigurationInfo Set/Get functions ---------------------------------------------- + /* + * @desc Set PDCP Configuration in the Configuration Info + * @param p_Configured + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_PDCP_Configured_Set(boolean p_Configured) runs on UTRAN_PTC + { + vc_UTRAN_Global.ConfigurationInfo.PdcpConfiguration := p_Configured; + } + + /* + * @desc Set TestCaseRelease in the Configuration Info + * @param p_TestCaseRelease + * @status APPROVED (UTRAN) + */ + function f_UTRAN_ConfigurationInfo_TestCaseRelease_Set(UTRAN_FddTddMessageClass_Type p_TestCaseRelease) runs on UTRAN_PTC + { + vc_UTRAN_Global.ConfigurationInfo.TestCaseRelease := p_TestCaseRelease; + } + + /* + * @desc Get PDCP Configuration in the Configuration Info + * @return boolean + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_PDCP_Configured_Get() runs on UTRAN_PTC return boolean + { + return vc_UTRAN_Global.ConfigurationInfo.PdcpConfiguration; + } + + /* + * @desc Get PDCP Configuration in the Configuration Info + * @return UTRAN_FddTddMessageClass_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_ConfigurationInfo_TestCaseRelease_Get() runs on UTRAN_PTC return UTRAN_FddTddMessageClass_Type + { + return vc_UTRAN_Global.ConfigurationInfo.TestCaseRelease; + } + + /* + * @desc Get the UE Release in the Mobile Info + * @return AccessStratumReleaseIndicator + * @status + */ + function f_UTRAN_MobileInfo_UE_Release_Get() runs on UTRAN_PTC return AccessStratumReleaseIndicator + { + return vc_UTRAN_Global.MobileInfo.ue_Release; + } + + /* + * @desc Set UE Release in the mobile info + * @param p_UE_Release + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_MobileInfo_UE_Release_Set(AccessStratumReleaseIndicator p_UE_Release) runs on UTRAN_PTC + { + vc_UTRAN_Global.MobileInfo.ue_Release := p_UE_Release; + } + //---------------------------------------------------------------------------- + // TEST CASE FDD/TDD release + //---------------------------------------------------------------------------- + /* + * @desc To retrieve the default test case FDD/TDD release + * @return UTRAN_FddTddMessageClass_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function fl_GetDefaultTestCaseRelease() return UTRAN_FddTddMessageClass_Type + { + var UTRAN_FddTddMessageClass_Type v_UTRAN_FddTddMessageClass; + // @sic R5-130195 Utran Release sic@ + + if (px_UTRAN_ModeUnderTest == UTRAN_FDD) { //FDD + select (f_GetTestcaseAttrib_UtraFDD_Release(testcasename())) { + case ("FDDr11") { + v_UTRAN_FddTddMessageClass := FDDr11; + } + case ("FDDr10") { + v_UTRAN_FddTddMessageClass := FDDr10; + } + case ("FDDr9") { + v_UTRAN_FddTddMessageClass := FDDr9; + } + case ("FDDr7") { //@sic R5s140558 sic@ + v_UTRAN_FddTddMessageClass := FDDr7; + } + case else { + // By default FDD is release 8 + v_UTRAN_FddTddMessageClass := FDDr8; + } + } + } else { //TDD + select (f_GetTestcaseAttrib_UtraTDD_Release(testcasename())) { + case ("TDDr11") { + v_UTRAN_FddTddMessageClass := TDDr11; + } + case ("TDDr10") { + v_UTRAN_FddTddMessageClass := TDDr10; + } + case else { + // By default TDD is release 9 + v_UTRAN_FddTddMessageClass := TDDr9; + } + } + } + return v_UTRAN_FddTddMessageClass; + } + + //---------------------------------------------------------------------------- + // INITIALISATION + //---------------------------------------------------------------------------- + /* + * @desc To initialise the UTRAN global variables + * @param p_ConfiguredPTCs + * @status APPROVED (LTE_A, LTE_IRAT, POS) + */ + function f_UTRAN_Init(IRAT_ConfiguredPTCs_Type p_ConfiguredPTCs := EUTRA_UTRAN) runs on UTRAN_PTC + { /* @sic R5-113805, R5-113696, R5-113734 sic@ */ + /* f_UTRAN_Init is used as dummy function (without parameters) for the UTRAN PTC when the UTRAN PTC is needed just to get the UTRAN system information */ + var UTRAN_CellIdList_Type v_CellIdList := {utran_Cell5, utran_Cell7, utran_Cell8, utran_Cell9}; + var integer v_Index; + var integer i; + + vc_UTRAN_Global.Ctrl.Default := null; + vc_UTRAN_Global.Ctrl.TestBody := false; + vc_UTRAN_Global.CellArray := f_UTRAN_CellArray_Init(); + vc_UTRAN_Global.MobileInfo.ue_EUTRA_Capability := omit; // @sic R5s120641 sic@ + vc_UTRAN_Global.MobileInfo.ue_OperationMode := omit; + vc_UTRAN_Global.MobileInfo.ue_Release := rel_8; //Default value, will be updated upon receipt of RRC CONNECTION REQUEST + + // Initialise ConfigurationInfo + vc_UTRAN_Global.ConfigurationInfo.PdcpConfiguration := false; // @sic R5s130195 PDCP sic@ + vc_UTRAN_Global.ConfigurationInfo.TestCaseRelease := fl_GetDefaultTestCaseRelease(); // @sic R5-130195 Utran Release sic@ + + // Now update sys info with inter RAT parameters for all cells + select (p_ConfiguredPTCs) + { + case (EUTRA_UTRAN) { + vc_UTRAN_Global.CellArray := f_UTRAN_IR_SIB19_Init(vc_UTRAN_Global.CellArray, f_IRAT_InitialCoOrd(EUTRA, f_UTRAN_IR_SysInfoInit(vc_UTRAN_Global.CellArray))); + } + case (EUTRA_UTRAN_GERAN) { + vc_UTRAN_Global.CellArray := f_UTRAN_IR_SIB11And19_Init(vc_UTRAN_Global.CellArray, f_IRAT_InitialCoOrd_2Ports(EUTRA, GERAN, f_UTRAN_IR_SysInfoInit(vc_UTRAN_Global.CellArray))); + + for (i := 0; i < lengthof(v_CellIdList); i := i + 1) { // @sic R5s130433 sic@ + v_Index := f_UTRAN_CellInfo_GetIndex(v_CellIdList[i]); + f_UTRAN_SysInfo_SetMIB(vc_UTRAN_Global.CellArray[v_Index].cellId, cs_MIB_UTRAN_GERAN_Def(vc_UTRAN_Global.CellArray[i].plmnId)); + f_UTRAN_SysInfo_SetSB1(vc_UTRAN_Global.CellArray[v_Index].cellId, cs_SB1_UTRAN_GERAN_Def); + } + } + } + vc_UTRAN_Global.Security := f_UTRAN_SecurityInfo_Init(); + + vc_UTRAN_Global.MsgInDefault := f_UTRAN_MsgInDefault_Init(); + + f_UTRAN_ActivateDefault(StandardDefault); + } + +} // end module + diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_CommonAspDefs.ttcn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_CommonAspDefs.ttcn new file mode 100644 index 0000000..616355f --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_CommonAspDefs.ttcn @@ -0,0 +1,34 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-07-06 21:15:13 +0200 (Sun, 06 Jul 2014) $ +// $Rev: 11812 $ +/******************************************************************************/ + +module UTRAN_CommonAspDefs { + import from UTRAN_ASP_Definitions language "ASN.1:2002" all; + + // embedded ASP types: + type TrCHInfo.ulconnectedTrCHList UlConnectedTrCHList_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + type TrCHInfo.dlconnectedTrCHList DlConnectedTrCHList_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + type TrCHInfo_TDD.ulconnectedTrCHList UlConnectedTrCHList_TDD_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + type TrCHInfo_TDD.dlconnectedTrCHList DlConnectedTrCHList_TDD_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + type TrCHInfo.ulconnectedTrCHList[-] UlConnectedTrCH_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + type TrCHInfo.dlconnectedTrCHList[-] DlConnectedTrCH_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + type TrCHInfo_TDD.ulconnectedTrCHList[-] UlConnectedTrCH_TDD_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + type TrCHInfo_TDD.dlconnectedTrCHList[-] DlConnectedTrCH_TDD_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + type CphyTrchConfigReq.ulconnectedTrCHList CphyUlConnectedTrCHList_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + type CphyUlConnectedTrCHList_Type[0] CphyUlConnectedTrCH_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + type CphyTrchConfigReq.dlconnectedTrCHList CphyDlConnectedTrCHList_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + type CphyDlConnectedTrCHList_Type[0] CphyDlConnectedTrCH_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + type CphyTrchConfigReq_TDD.ulconnectedTrCHList CphyUlConnectedTrCHList_TDD_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + type CphyUlConnectedTrCHList_TDD_Type[0] CphyUlConnectedTrCH_TDD_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + type CphyTrchConfigReq_TDD.dlconnectedTrCHList CphyDlConnectedTrCHList_TDD_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + type CphyDlConnectedTrCHList_TDD_Type[0] CphyDlConnectedTrCH_TDD_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + type CphyRlSetupReq_FDD.physicalChannelInfo RL_Setup_FDD_PhysicalChannelInfo_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + type CphyRlSetupReq_TDD.physicalChannelInfo RL_Setup_TDD_PhysicalChannelInfo_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ +} diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_CommonDefs.ttcn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_CommonDefs.ttcn new file mode 100644 index 0000000..56491b1 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_CommonDefs.ttcn @@ -0,0 +1,482 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 22:08:20 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12181 $ +/******************************************************************************/ + +module UTRAN_CommonDefs { + import from CommonDefs all; + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from NAS_CommonTypeDefs all; + + //============================================================================= + // Type definitions + //----------------------------------------------------------------------------- + + type integer SS_CN_DomainIdentity (0..1); /* CN domain identity type in TTCN tabular format; @status APPROVED */ + type enumerated UTRAN_DelayForUserPlaneSignalling_Type { noDelay, waitForIP }; //@sic R5s130384 sic@ + + // embedded RRC types: + type TFCS_ReconfAdd.ctfcSize.ctfc2Bit TFCS_ReconfAdd_CtfcSize_Ctfc2Bit_List_Type; /* auxiliary type definition; @status APPROVED */ + type TFCS_ReconfAdd_CtfcSize_Ctfc2Bit_List_Type[0] TFCS_ReconfAdd_CtfcSize_Ctfc2Bit_Type; /* auxiliary type definition; @status APPROVED */ + + type TFCS_ReconfAdd.ctfcSize.ctfc4Bit TFCS_ReconfAdd_CtfcSize_Ctfc4Bit_List_Type; /* auxiliary type definition; @status APPROVED */ + type TFCS_ReconfAdd_CtfcSize_Ctfc4Bit_List_Type[0] TFCS_ReconfAdd_CtfcSize_Ctfc4Bit_Type; /* auxiliary type definition; @status APPROVED */ + + type TFCS_ReconfAdd.ctfcSize.ctfc6Bit TFCS_ReconfAdd_CtfcSize_Ctfc6Bit_List_Type; /* auxiliary type definition; @status APPROVED */ + type TFCS_ReconfAdd_CtfcSize_Ctfc6Bit_List_Type[0] TFCS_ReconfAdd_CtfcSize_Ctfc6Bit_Type; /* auxiliary type definition; @status APPROVED */ + + type TFCS_ReconfAdd.ctfcSize.ctfc8Bit TFCS_ReconfAdd_CtfcSize_Ctfc8Bit_List_Type; /* auxiliary type definition; @status (APPROVED) */ + type TFCS_ReconfAdd_CtfcSize_Ctfc8Bit_List_Type[0] TFCS_ReconfAdd_CtfcSize_Ctfc8Bit_Type; /* auxiliary type definition; @status (APPROVED) */ + + type PhysicalChannelCapability_edch_r6.fdd_edch.supported.edch_PhysicalLayerCategory Edch_PhysicalLayerCat_Type; /* @status APPROVED */ + + type UTRA_PriorityInfoList.utra_ServingCell.priority UtraServingCellPriorityValue_Type; /* @status APPROVED */ + type UTRA_PriorityInfoList.utra_ServingCell.s_PrioritySearch1 UtraServingCellPrioritySearch1_Type; /* @status APPROVED */ + type UTRA_PriorityInfoList.utra_ServingCell.s_PrioritySearch2 UtraServingCellPrioritySearch2_Type; /* @status APPROVED */ + type UTRA_PriorityInfoList.utra_ServingCell.threshServingLow UtraServingCellthreshServingLow_Type; /* @status APPROVED */ + type UTRANMobilityInformation.later_than_r3.criticalExtensions.criticalExtensions.r7.v860NonCriticalExtensions UTRANMobilityInformation_v860ext2_Type; + + type EUTRA_FrequencyAndPriorityInfo.priority EutraFrequencyAndPriorityInfoPriorityValue_Type; /* @status APPROVED */ + type EUTRA_FrequencyAndPriorityInfo.qRxLevMinEUTRA EutraFrequencyAndPriorityInfoQrxLevMin_Type; /* @status APPROVED */ + type EUTRA_FrequencyAndPriorityInfo.threshXhigh EutraFrequencyAndPriorityInfoThreshXhigh_Type; /* @status APPROVED */ + type EUTRA_FrequencyAndPriorityInfo.threshXlow EutraFrequencyAndPriorityInfoThreshXlow_Type; /* @status APPROVED */ + + type RRCConnectionSetupComplete.v370NonCriticalExtensions RRCConnSetupCmpl_v370NonCritExt_Type; /* auxiliary type definition; @status APPROVED */ + type RRCConnectionRelease.later_than_r3.criticalExtensions.r4.v4d0NonCriticalExtensions RRCConnectionRelease_v4d0NonCriticalExtensions_Type; /* @status APPROVED */ + type RRCConnectionReject.r3.laterNonCriticalExtensions RRCConnectionReject_r3_laterNonCriticalExtensions_Type; + + type MultiplePLMN_List_r6.multiplePLMNs Multiple_PLMN_List_Type; + + type UL_CCTrCH_r7.tddOption UL_CCTrCH_r7_TddOption_Type; + type UL_CCTrCH_r4.tddOption UL_CCTrCH_r4_TddOption_Type; + + type TGP_Sequence_r8.tgps_Status TGPS_Status_r8_Type; + + type SysInfoType19.v920NonCriticalExtensions SIB19_v920NonCriticalExtensions_Type; + + type DL_DPCH_InfoCommon_r6.cfnHandling DL_DPCH_CfnHandling_r6_Type; + + type HARQ_Info_r7.numberOfProcesses HarqNrOfProcesses_Type; + type HARQ_Info_r11.numberOfProcesses HarqNrOfProcesses_r11_Type; + + type enumerated UTRAN_FddTddMessageClass_Type {FDDr99, FDDr5, FDDr6, FDDr7, FDDr8, FDDr9, FDDr10, FDDr11, TDDr4, TDDr5, TDDr7, TDDr9, TDDr10, TDDr11}; // @sic R5s130195 Utran Release R5-140314: added FDDr11/TDDr11 sic@ + + type LoggedANRConfigurationInfo.loggingDuration LoggedANRConfigurationInfo_LoggingDuration_Type; + type LoggedANRConfigurationInfo.interRATANRforEUTRAIndicator LoggedANRConfigurationInfo_InterRATANRforEUTRAIndicator_Type; + type LoggedANRConfigurationInfo.interRATANRforGSMIndicator LoggedANRConfigurationInfo_InterRATANRforGSMIndicator_Type; + type DL_HSPDSCH_Information_r9.modeSpecificInfo.fdd.dl_64QAM_Configured DL_64QAM_Configured_Type; + type DL_HSPDSCH_Information_r11.modeSpecificInfo.fdd.dl_64QAM_Configured DL_64QAM_Configured_r11_Type; + type DL_SecondaryCellInfoFDD_r10.configurationInfo.newConfiguration.dl_64QAM_Configured DL_SecondaryCell64QAM_Configured_Type; + type DL_SecondaryCellInfoFDD_r10.configurationInfo.newConfiguration.hS_SCCHChannelisationCodeInfo DL_SecondaryHsScchCodeInfo_Type; + type HS_SCCH_Info_r9.modeSpecificInfo.fdd.hS_SCCHChannelisationCodeInfo HsScchInfo_ChCodeInfo_Type; + type SIB19_v920NonCriticalExtensions_Type.va80NonCriticalExtensions.vb30NonCriticalExtensions.sysInfoType19_vb30ext SIB19_sysInfoType19_vb30ext; + + type DL_InformationPerRL_r8.dl_dpchInfo DL_InformationPerRL_DpchInfo_r8; + type EUTRA_MeasuredCells.rSRP RSRP_Type; + type EUTRA_MeasuredCells.rSRQ RSRQ_Type; + + //============================================================================= + // Constants + //----------------------------------------------------------------------------- + + const float tsc_IdleMode_GenericTimer_UTRAN := 360.0; /* Idle mode generic timer according to 36.523-3 cl. 7.8 + @status APPROVED */ + const integer tsc_AICH1 := 7; /* Physical channel identity for AICH channel associated with first PRACH + @status APPROVED */ + const integer tsc_BCCH1 := 1; /* Logical channel identity for logical channel BCCH mapped on BCH + @status APPROVED */ + const integer tsc_BCCH6 := 6; /* Logical channel identity for logical channel BCCH mapped on FACH + @status APPROVED */ + const integer tsc_BCH1 := 11; /* Identity for transport channel BCH + @status APPROVED */ + const integer tsc_E_AGCH := 14; + const integer tsc_E_DPCH := 22; + const integer tsc_E_HICH := 15; + const integer tsc_E_RGCH := 16; + const integer tsc_FACH1 := 13; /* transport channel identity for FACH + @status APPROVED */ + const integer tsc_FACH2 := 14; /* transport channel identity for second FACH when it is connected to a secondary CCPCH together with PCH + (transport channel identity = 14) + @status APPROVED */ + const integer tsc_F_DPCH := 28; + const integer tsc_HSPDSCH := 18; // physical channel identity for HS-PDSCH. + const integer tsc_PICH1 := 6; /* Physical channel identity for PICH channel associated with first secondary CCPCH + @status APPROVED */ + const integer tsc_PICH2 := 11; // Physical channel identity for PICH2 channel associated with second secondary CCPCH + const integer tsc_PRACH1 := 8; /* Physical channel identity for first PRACH channel + @status APPROVED */ + const integer tsc_PRACH2 := 9; // Physical channel identity for second PRACH channel + const integer tsc_P_CCPCH := 4; /* Physical channel identity for primary CCPCH channel + @status APPROVED */ + const integer tsc_P_CPICH := 0; /* Physical channel identity for primary CPICH channel + @status APPROVED */ + const integer tsc_P_SCH := 1; /* Physical channel identity for primary SCH channel + @status APPROVED */ + const integer tsc_RACH1 := 15; /* transport channel identity for RACH + @status APPROVED */ + const integer tsc_AttOn := 1; /* Attach flag value On + @status APPROVED */ + const integer tsc_AttenuationCellOFF := 123; /* Value of attenuator to be used when setting a Cell OFF (3GPP 34.108 / Table 6.1.4) + @status APPROVED */ + const integer tsc_AttenuationServingCell := -1; /* Value different for FDD/TDD so this is just a flag to be used in f_UTRAN_SetCellPower + @status APPROVED */ + const integer tsc_AttenuationSuitableNeighbourCell := -2; /* Value different for FDD/TDD so this is just a flag to be used in f_UTRAN_SetCellPower + @status APPROVED */ + const integer tsc_AttenuationNonSuitableCell := -3; /* Value different for FDD/TDD so this is just a flag to be used in f_UTRAN_SetCellPower + @status APPROVED */ + const bitstring tsc_CellIdCell5 := '0000000000000000000000000000'B; /* @status APPROVED */ + const bitstring tsc_CellIdCell7 := '0000000000000000000000000001'B; /* @status APPROVED */ + const bitstring tsc_CellIdCell8 := '0000000000000000000000000010'B; /* @status APPROVED */ + const bitstring tsc_CellIdCell9 := '0000000000000000000000000011'B; /* @status APPROVED */ + + + const integer tsc_Now := 512; /* To indicate the system information change starts immediately + @status APPROVED */ + const octetstring tsc_RAC_Def := '01'O; /* Routing Area Code, 1 octet, 3GPP 24.008 clause 10.5.1.12.3 + @status APPROVED */ + const integer tsc_SFN_Offset := 0; /* SFN offset value + @status APPROVED */ + const octetstring tsc_T3212_Def := '1E'O; /* infinite + @status APPROVED */ + const integer tsc_TimingsCCPCH1 := 0; /* timing offset for secondary CCPCH1. default is 0 + @status APPROVED */ + const bitstring tsc_URA_IdCell5 := '0000000000000001'B; /* @status APPROVED */ + const bitstring tsc_URA_IdCell7 := '0000000000000001'B; /* @status APPROVED */ + const bitstring tsc_URA_IdCell8 := '0000000000000010'B; /* @status APPROVED */ + const bitstring tsc_URA_IdCell9 := '0000000000000010'B; /* @status APPROVED */ + + const integer tsc_CellParametersID_Cell1 := 0; /* CellParametersID for CELL5 + @status APPROVED */ + const integer tsc_CellParametersID_Cell2 := 4; /* CellParametersID for CELL5 + @status APPROVED */ + const integer tsc_CellParametersID_Cell3 := 8; /* CellParametersID for CELL5 + @status APPROVED */ + const integer tsc_CellParametersID_Cell4 := 12; /* CellParametersID for CELL5 + @status APPROVED */ + const integer tsc_CellParametersID_Cell5 := 114; /* CellParametersID for CELL5 + @status APPROVED */ + const integer tsc_CellParametersID_Cell6 := 119; /* CellParametersID for CELL5 + @status APPROVED */ + const integer tsc_CellParametersID_Cell7 := 123; /* CellParametersID for CELL7 + @status APPROVED */ + const integer tsc_CellParametersID_Cell8 := 127; /* CellParametersID for CELL8 + @status APPROVED */ + const integer tsc_CellParametersID_Cell9 := 20; /* CellParametersID for CELL9 + @status APPROVED */ + + const integer tsc_DL_CCCH5 := 5; /* Logical channel identity for logical channel CCCH mapped on FACH (downlink) + @status APPROVED */ + const integer tsc_DL_DCCH1 := 1; /* Logical channel identity for DCCH1 (downlink), used by signalling radio bearer 1 + @status APPROVED */ + const integer tsc_DL_DCCH2 := 2; /* Logical channel identity for DCCH2 (downlink), used by signalling radio bearer 2 + @status APPROVED */ + const integer tsc_DL_DCCH3 := 3; /* Logical channel identity for DCCH3 (downlink), used by signalling radio bearer 3 + @status APPROVED */ + const integer tsc_DL_DCCH4 := 4; /* Logical channel identity for DCCH4 (downlink), used by signalling radio bearer 4 + @status APPROVED */ + const integer tsc_DL_DCH1 := 6; /* identity for transport channel DCH1 (downlink), in AMR speech this transport channel is used for RAB subflow#1 + @status APPROVED */ + const integer tsc_DL_DCH2 := 7; /* identity for transport channel DCH2 (downlink), in AMR speech this transport channel is used for RAB subflow#2 + @status APPROVED */ + const integer tsc_DL_DCH3 := 8; /* identity for transport channel DCH3 (downlink), in AMR speech this transport channel is used for RAB subflow#3 + @status APPROVED */ + const integer tsc_DL_DCH4 := 9; // identity for transport channel DCH4 (downlink), in AMR speech + const integer tsc_DL_DCH5 := 10; /* identity for transport channel DCH5 (downlink), in most case this transport channel is used for signalling bearers. + @status APPROVED */ + const integer tsc_DL_DPCH1 := 26; /* physical channel identity for DPCH1(downlink) + @status APPROVED */ + const integer tsc_DL_DTCH1 := 7; /* Logical channel identity for DTCH1 (downlink) + @status APPROVED */ + const integer tsc_DL_DTCH2 := 8; /* Logical channel identity for DTCH2 (downlink) + @status APPROVED */ + const integer tsc_DL_DTCH3 := 9; /* Logical channel identity for DTCH3 (downlink) + @status APPROVED */ + const integer tsc_DL_DTCH4 := 10; // Logical channel identity for DTCH4 (downlink) + const integer tsc_DPCH_PowerOffsetPILOT := 0; /* Power offsett value of PILOT on DPCH + @status APPROVED */ + const integer tsc_DPCH_PowerOffsetTFCI := 0; /* Power offsett value of TFCI on DPCH + @status APPROVED */ + const integer tsc_DPCH_PowerOffsetTPC := 0; /* Power offsett value of TPC on DPCH + @status APPROVED */ + const integer tsc_GainFactorBetaC_Below64k := 11; /* Gain factor Beta C value to be used for RAB UL below 64kbps + @status APPROVED */ + const integer tsc_GainFactorBetaC_Higher64k := 9; // Gain factor Beta C value to be used for RAB UL higher than 64kbps + const integer tsc_GainFactorBetaD := 15; /* @status APPROVED */ + const integer tsc_RB_BCCH := -1; /* radio bearer idenity for bearer on TM + BCCH + BCH used for broadcasting system information blocks + @status APPROVED */ + const integer tsc_RB_BCCH_FACH := -3; /* signalling radio bearer on TM + BCCH + FACH + sCCPCH1 + @status APPROVED */ + const integer tsc_RB_DTCH_E_DCH_MAC1 := -21; // Special RB for DTCH configured in TM for MAC test cases + const integer tsc_RB_DTCH_E_DCH_MAC2 := -22; // Special second RB for DTCH configured in TM for MAC test cases + const integer tsc_RB_PCCH := -2; /* radio bearer idenity for bearer on TM + PCCH + PCH used for sending paging message when there is no RAB subflows for speech + @status APPROVED */ + const integer tsc_RB0 := 0; /* signalling radio bearer on TM + CCCH + @status APPROVED */ + const integer tsc_RB1 := 1; /* sibnalling radio bearer on UM + DCCH + @status APPROVED */ + const integer tsc_RB10 := 10; /* radio access bearer identity, in AMR speech this RB is RAB subflow#1, + in other cases this is a radio access bearer + @status APPROVED */ + const integer tsc_RB11 := 11; /* radio access bearer identity, in AMR speech this RB is RAB subflow#2, + in some other cases this is the signalling radio bearer for TM + BCCH_FACH + @status APPROVED */ + const integer tsc_RB12 := 12; /* radio access bearer, in AMR speech this RB is RAB subflow#3, in some other cases this is the bearer for TM PCCH + @status APPROVED */ + const integer tsc_RB13 := 13; // radio access bearer, in AMR speech this RB is RAB subflow#3, in some other cases this is the bearer for TM PCCH + const integer tsc_RB17 := 17; // Fifth PS Radio Bearer associated with a DTCH on HS-DSCH + const integer tsc_RB26 := 26; // second PS Radio Bearer associated with a DTCH on HS-DSCH + const integer tsc_RB27 := 27; // Third PS Radio Bearer associated with a DTCH on HS-DSCH + const integer tsc_RB28 := 28; // Fourth PS Radio Bearer associated with a DTCH on HS-DSCH + const integer tsc_RB2 := 2; /* signalling radio bearer on AM + DCCH + @status APPROVED */ + const integer tsc_RB20 := 20; /* radio access bearer for PS RAB + @status APPROVED */ + const integer tsc_RB21 := 21; // radio access bearer for PS RAB + const integer tsc_RB22 := 22; // Second AM radio access bearer for PS + const integer tsc_RB24 := 24; // Second AM radio access bearer for PS + const integer tsc_RB25 := 25; /* PS Radio Bearer associated with a DTCH on HS-DSCH + @status APPROVED */ + const integer tsc_RB29 := 29; // RB Id for Radio bearer that carries the 2nd CCCH in the DL + const integer tsc_RB3 := 3; /* signalling radio bearer on AM + DCCH for high priority NAS_DT + @status APPROVED */ + const integer tsc_RB3_DCCH_RRC := -16; /* RB identity used for configuration of AM RLC entity + * in the SS. SS will use it to simulate the high priority + * NAS SRB mapped to DCH for routing UL NAS messages in + * RRC test cases. + * A negative value is used to indicate that the SS + * configuration is not identical to the UE configuration */ + const integer tsc_RB30 := 30; // radio access bearer for CBS RAB + const integer tsc_RB31 := 31; + const integer tsc_RB4 := 4; /* signalling radio bearer on AM + DCCH for low priority NAS_DT + @status APPROVED */ + const integer tsc_RB5 := 5; /* signalling radio bearer on TM + DCCH for AMR Signalling + @status (APPROVED) */ + const integer tsc_RRC_TI := 0; /* RRC Transaction Identifier + @status APPROVED */ + const integer tsc_PCCH1 := 1; /* Logical channel identity for logical channel PCCH + @status APPROVED */ + const integer tsc_PCH1 := 12; /* transport channel identity for PCH + @status APPROVED */ + const integer tsc_N300 := 3; /* @status APPROVED */ + const integer tsc_S_CCPCH1 := 5; /* Physical channel identity for first secondary CCPCH channel + @status APPROVED */ + const integer tsc_S_CCPCH_2ndScrCode := 0; /* Secondary scrambling code for S-CCPCH channels + @status APPROVED */ + const integer tsc_S_CCPCH_PowerOffsetPILOT := 6; /* Power offsett value of PILOT on sCCPCH + @status APPROVED */ + const integer tsc_S_CCPCH_PowerOffsetTFCI := 6; /* Power offsett value of TFCI on sCCPCH + @status APPROVED */ + const integer tsc_S_SCH := 2; /* Physical channel identity for secondary SCH channel + @status APPROVED */ + const SS_CN_DomainIdentity tsc_SS_PS_Domain := 1; /* @status APPROVED */ + const SS_CN_DomainIdentity tsc_SS_CS_Domain := 0; /* @status APPROVED */ + const integer tsc_UL_CCCH5 := 5; /* Logical channel identity for logical channel CCCH mapped RACH (uplink) + @status APPROVED */ + const integer tsc_UL_DCCH1 := 1; /* Logical channel identity for DCCH1 (uplink), used by signalling radio bearer 1 + @status APPROVED */ + const integer tsc_UL_DCCH2 := 2; /* Logical channel identity for DCCH2 (uplink), used by signalling radio bearer 2 + @status APPROVED */ + const integer tsc_UL_DCCH3 := 3; /* Logical channel identity for DCCH3 (uplink), used by signalling radio bearer 3 + @status APPROVED */ + const integer tsc_UL_DCCH4 := 4; /* Logical channel identity for DCCH4 (uplink), used by signalling radio bearer 4 + @status APPROVED */ + const integer tsc_UL_DCH1 := 1; /* identity for transport channel DCH1 (uplink), in AMR speech this transport channel is used for RAB subflow#1 + @status APPROVED */ + const integer tsc_UL_DCH2 := 2; /* identity for transport channel DCH2 (uplink), in AMR speech this transport channel is used for RAB subflow#2 + @status APPROVED */ + const integer tsc_UL_DCH3 := 3; /* identity for transport channel DCH3 (uplink), in AMR speech this transport channel is used for RAB subflow#3 + @status APPROVED */ + const integer tsc_UL_DCH4 := 4; // identity for transport channel DCH4 (upink), in AMR speech + const integer tsc_UL_DCH5 := 5; /* identity for transport channel DCH5 (uplink), in most case this transport channel is used for signalling bearers. + @status APPROVED */ + const integer tsc_UL_DPCH1 := 20; /* physical channel identity for DPCH1(uplink) + @status APPROVED */ + const integer tsc_UL_DTCH1 := 7; /* Logical channel identity for DTCH1 (uplink) + @status APPROVED */ + const integer tsc_UL_DTCH2 := 8; /* Logical channel identity for DTCH2 (uplink) + @status APPROVED */ + const integer tsc_UL_DTCH3 := 9; /* Logical channel identity for DTCH3 (uplink) + @status APPROVED */ + const integer tsc_UL_DTCH4 := 10; // Logical channel identity for DTCH4 (uplink) + + //----------------------------------------------------------------------------- + + const C_RNTI tsc_CRNTI := '0000000000000001'B; /* C RNTI. + Default value: '0000 0000 0000 0001'B + @status APPROVED */ + const H_RNTI tsc_H_RNTI := '1010101010101010'B; + const E_RNTI tsc_E_RNTI := '1010101010101010'B; + + const ChannelisationCode256 tsc_AICH1_ChC := 3; /* Channelization code for tsc_AICH1 + @status APPROVED */ + const SpreadingFactor tsc_UL_DPDCH_SF_SRB := sf64; /* Channelization code for UL DPDCH for an SRB connection with a RAB established + @status APPROVED */ + const DPCCH_PowerOffset tsc_DPCCH_PowerOffset := -40; /* DPCCH power offset value. + @status APPROVED */ + const SF512_AndCodeNumber tsc_DL_DPCH1_ChC_SRB := { sf128 := 0 }; /* Channelization code for tsc_DL_DPCH1 for a SRB connection with a RAB established + @status APPROVED */ + const SF512_AndCodeNumber tsc_Sfc256_C0 := { sf256 := 0 }; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const B16_Type tsc_DL_DPCH1_ChC_SRB_TDD := '0000000000001000'B; /* Channelization code for tsc_DL_DPCH1 for a SRB connection with a RAB established + @status APPROVED */ + const B16_Type tsc_DL_DPCH1_ChC_Speech_TDD := '1100000000000000'B; // Channelization code for tsc_DL_DPCH1 for a SRB connection with a RAB established + const SF512_AndPilot tsc_DL_DPCH1_SFP_SRB := { sfd128 := pb4 }; /* Spreading factor and pilot bits for tsc_DL_DPCH1 for an SRB connection with a RAB established + @status APPROVED */ + const DefaultDPCH_OffsetValueFDD tsc_DefaultDPCH_OffsetValue := 459; /* Default DPCH offset value. Actual value DefaultDPCH-OffsetValueFDD = IE value * 512 + @status APPROVED */ + const DefaultDPCH_OffsetValueTDD tsc_DefaultDPCH_OffsetValue_TDD := 0;/* Default DPCH offset value. Actual value DefaultDPCH-OffsetValueTDD = IE value * 512 + @status APPROVED */ + const ChannelisationCode256 tsc_PICH1_ChC := 2; /* Channelization code for tsc_PICH1 + @status APPROVED */ + const DL_TS_ChannelisationCode tsc_PICH1_ChC_TDD := cc16_5; /* Channelization code for tsc_PICH1 + @status APPROVED */ + const DL_TS_ChannelisationCode tsc_PICH2_ChC := cc16_6; /* Channelization code for tsc_PICH2 + @status APPROVED */ + const SF_PRACH tsc_PRACH1_SF := sfpr64; /* Channelization code for UL DPDCH for PRACH1 + @status APPROVED */ + const PreambleScramblingCodeWordNumber tsc_PRACH1_ScrC := 0; /* Scrambling code for preamble of PRACH1 + @status APPROVED */ + const AvailableSignatures tsc_PRACH1_Signatures := '0000000011111111'B; /* available signatures for PRACH. (from 34.108 cl. 6.1 (SIB5)) + @status APPROVED */ + + const AICH_PowerOffset tsc_PowerAICH := -5; /* relative transmission power level of AICH. The power level is specified relatively to power leve of CPICH in terms of AICH_Ec + @status APPROVED */ + const PICH_PowerOffset tsc_PowerPICH := -5; /* relative transmission power level of PICH. The power level is specified relatively to power level of CPICH in terms of PICH_Ec* + @status APPROVED */ + + const PuncturingLimit tsc_PuncLimit := pl1; /* puncturing limit for PRACH. default value is 1 + Default value: Pl1 + @status APPROVED */ + const SecondaryScramblingCode tsc_DL_DPCH1_2ndScrC := 1; /* secondary scrambling code for DL DPCH1 + @status APPROVED */ + const SF256_AndCodeNumber tsc_S_CCPCH1_ChC := { sf64 := 1 }; /* Channelization code for tsc_S_CCPCH1 + @status APPROVED */ + + const PrimaryCCPCH_TX_Power tsc_PrimaryCCPCH_TX_Power := 30; /* transmission power level of primary CCPCH. Default is 30 dBm in SIB5 + @status APPROVED */ + const SCCPCH_ChannelisationCodeList tsc_S_CCPCH1_1P1F_ChC := {cc16_7, cc16_8}; /* Channelization code for secondary CCPCH + @status APPROVED */ + const SCCPCH_ChannelisationCodeList tsc_S_CCPCH1_1P2F_ChC := {cc16_7, cc16_8, cc16_9, cc16_10, cc16_11}; /* Channelization code of tsc_S_CCPCH1 for 1PCH+2FACH @sic R5-133724 sic@ + @status */ + const TDD_PRACH_CCode_LCR_r4 tsc_PRACH1_ChC := cc8_8; /* channel code for PRACH + @status APPROVED */ + const TDD_FPACH_CCode16_r4 tsc_FPACH1_ChC := cc16_15; /* channel code for FPACH + @status APPROVED */ + const TPC_CombinationIndex tsc_TPC_CombinationIndex := 0; /* @status APPROVED */ + const TPC_StepSizeFDD tsc_TpcStepSize_FDD := 0; /* Value 0 corresponds to 1 dB + @status APPROVED */ + const TPC_StepSizeTDD tsc_TPC_StepSize_TDD := 1; /* @status APPROVED */ + const integer tsc_SS_StepSize_TDD := 1; /* @status APPROVED */ + const UL_TargetSIR tsc_UL_TargetSIR := 25; /* @sic R5-134734 sic@ @status APPROVED */ + const integer tsc_SS_Frequency := 1; /* @status APPROVED */ + const UL_TS_ChannelisationCode tsc_UL_DPCH1_ChC_SRB_13_6 := cc8_1; /* @status */ + const UL_TS_ChannelisationCode tsc_UL_DPCH1_ChC_SRB_3_4 := cc16_1; // @sic R5s120750 sic@ + const UL_TS_ChannelisationCode tsc_UL_DPCH1_ChC_Speech := cc8_1; + const UL_TS_ChannelisationCode tsc_UL_DPCH1_ChC_64k_PS := cc2_1; /* @status APPROVED */ + const UL_TS_ChannelisationCode tsc_UL_DPCH1_ChC_PS_and_ConvSpeech := cc1_1; /* @status APPROVED */ + const MaxAllowedUL_TX_Power tsc_MaxAllowedUL_TX_Power_TDD := 21; //Acc to 34.108 table 6.1.6a @sic R5s130984 sic@ + + const CN_DomainIdentity tsc_PS_Domain := ps_domain; + const CN_DomainIdentity tsc_CS_Domain := cs_domain; + + const MAC_LogicalChannelPriority tsc_MAC_LogicalChannelPrio1 := 1; /* @status APPROVED */ + const MAC_LogicalChannelPriority tsc_MAC_LogicalChannelPrio2 := 2; /* @status APPROVED */ + const MAC_LogicalChannelPriority tsc_MAC_LogicalChannelPrio3 := 3; /* @status APPROVED */ + const MAC_LogicalChannelPriority tsc_MAC_LogicalChannelPrio4 := 4; /* @status APPROVED */ + const MAC_LogicalChannelPriority tsc_MAC_LogicalChannelPrio6 := 6; /* @status APPROVED */ + const MAC_LogicalChannelPriority tsc_MAC_LogicalChannelPrio7 := 7; + const MAC_LogicalChannelPriority tsc_MAC_LogicalChannelPrio8 := 8; /* @status APPROVED */ + + //============================================================================= + // AUXILIARY FUNCTION + //----------------------------------------------------------------------------- + /* + * @desc function to convert template of UTRAN_CellId_Type into template of integer + * @param p_CellId + * @return template (present) integer + * @status APPROVED + */ + function f_UTRAN_TemplateCellId2Int(template (present) UTRAN_CellId_Type p_CellId) return template (present) integer + { + if (isvalue(p_CellId)) { + return f_UtranCellId2Int(valueof(p_CellId)); // @sic R5s130195 Baseline moving to rel-11: UTRAN cellID enhanced sic@ + } else { + return ?; + } + } + + //---------------------------------------------------------------------------- + /* + * @desc Function used for converting an integer input value to a EUTRA_MeasurementBandwidth value. + * The function is used in UTRAN test cases when the EUTRA type v_DL_PrimaryBandwidth needs + * to be converted in to the UTRAN type EUTRA_MeasurementBandwidth. + * @param p_EUTRA_DL_Bandwidth + * @return EUTRA_MeasurementBandwidth + * @status APPROVED_LTE_IRAT + */ + function f_UTRAN_ConvertIntegerToEUTRA_MeasurementBandwidth(integer p_EUTRA_DL_Bandwidth) return EUTRA_MeasurementBandwidth + { + var EUTRA_MeasurementBandwidth v_MeasurementBandwidth; // defined in UTRAN_RRC_ASN1_Definitions + + select (p_EUTRA_DL_Bandwidth) { + case (6) { //1.4MHz + v_MeasurementBandwidth := mbw6; + } + case (15) { //3MHz + v_MeasurementBandwidth := mbw15; + } + case (25) { //5MHz + v_MeasurementBandwidth := mbw25; + } + case (50) { //10MHz + v_MeasurementBandwidth := mbw50; + } + case (75) { //15MHz + v_MeasurementBandwidth := mbw75; + } + case (100) { //20MHz + v_MeasurementBandwidth := mbw100; + } + case else { + FatalError(__FILE__,__LINE__, "invalid value for ChannelBandwidth"); + } + } + return v_MeasurementBandwidth; + } + + //---------------------------------------------------------------------------- + /* + * @desc This function is used to convert PLMN from NAS type to ASN1 type. + * @param p_NAS_PlmnId + * @return PLMN_Identity + * @status + */ + function f_UTRAN_Nas2Asn_PlmnId(NAS_PlmnId p_NAS_PlmnId) return PLMN_Identity + { + var PLMN_Identity v_PLMN_Identity; + var hexstring v_PLMN_hexstring := oct2hex(p_NAS_PlmnId); + + v_PLMN_Identity := { + mcc := { + hex2int(v_PLMN_hexstring[1]), + hex2int(v_PLMN_hexstring[0]), + hex2int(v_PLMN_hexstring[3]) + }, + mnc := { + hex2int(v_PLMN_hexstring[5]), + hex2int(v_PLMN_hexstring[4]) + } + } + + if (v_PLMN_hexstring[2] != 'F'H) { + v_PLMN_Identity.mnc[2] := hex2int(v_PLMN_hexstring[2]); + } + + return v_PLMN_Identity; + } +} diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_CommonFunctions.ttcn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_CommonFunctions.ttcn new file mode 100644 index 0000000..00d1e2f --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_CommonFunctions.ttcn @@ -0,0 +1,2029 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 13:36:02 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12152 $ +/******************************************************************************/ + +module UTRAN_CommonFunctions { + + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_ASP_Definitions language "ASN.1:2002" all; + import from UTRAN_TypeDefs all; + import from UTRAN_CellInfo all; + import from UTRAN_Component all; + import from UTRAN_TTCN_ASP_Templates all; + import from UTRAN_NAS_PDU_Templates all; + import from UTRAN_CommonDefs all; + import from UTRAN_RRC_Templates all; + import from UTRAN_ASN1_ASP_Templates all; + import from UTRAN_ConfigurationSteps all; + import from UTRANGERAN_CommonFunctions all; + import from UTRAN_Parameters all; + import from NAS_24008TypeDefs all; + import from NAS_24008Templates_IRAT all; + import from NAS_CommonTypeDefs all; + import from NAS_CommonTemplates all; + import from NAS_AuthenticationCommon all; + import from NAS_AuxiliaryDefsAndFunctions all; + import from Parameters all; + import from CommonDefs all; + import from CommonIratDefs all; + import from UpperTesterFunctions all; + import from UTRAN_RRC_Templates_r9 all; + import from UTRAN_RRC_Templates_r10 all; + import from UTRAN_RRC_Templates_r11 all; + import from TestcaseProperties all; + + //---------------------------------------------------------------------- + // Type definitions + //---------------------------------------------------------------------- + + type record UTRAN_CFN_Info_Type { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + integer frameNumber, + ActivationTime actTime, + TGCFN tGCFN + }; + + //------------------------------------------------------------------------------------------ + // CALCULATE ACTIVATION TIME + //------------------------------------------------------------------------------------------ + /* + * @desc To Calculate an activation time + * @param p_FrameNumber + * @return ActivationTime + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function fl_UTRAN_CalculateActTime(integer p_FrameNumber) return ActivationTime + { + return (256 + p_FrameNumber - (p_FrameNumber mod 8 + 8)) mod 256; + } + + /* + * @desc Calculates the TGCFN + * @param p_FrameNumber + * @param p_TtiValue .. is equal to tti/10 + * @return TGCFN + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CalculateTGCFN(integer p_FrameNumber, + integer p_TtiValue) return TGCFN + { + return (p_FrameNumber+(256-p_TtiValue)) mod 256; + } + + /* + * @desc To calculate the activation time with the tti value corresponding to the actual SS configuration. + * The tti value passed as parameter to ts_CPHY_ActTime is equal to tti/10 (e.g. tti 40 -> 4) + * Based on 34.108 on SRB tti. + * @param p_CellId + * @return UTRAN_CFN_Info_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_CalculateActTime(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC return UTRAN_CFN_Info_Type + { + var RB_ConfigType v_Rb_ConfigType := f_UTRAN_CellInfo_GetConfigType(p_CellId); + var UTRAN_CFN_Info_Type v_CFN_Info; + var PhysicalChannelIdentity v_PhyChId; + var integer v_TtiValue; + + select (v_Rb_ConfigType) { + case (cell_DCH_Speech, + cell_DCH_64kPS_RAB_SRB, + cell_DCH_64kPS_AM_RAB, //@sic R5s140400 sic@ + cell_DCH_StandAloneSRB, + cell_DCH_HS_DSCH, + cell_DCH_E_HS, + cell_DCH_dlSRB_E_HS, + cell_Four_DTCH_PS_CS, //@sic R5s140096 sic@ + cell_DCH_2AM_PS //@sic R5s140400 sic@ + ) { + //An RRC connection is established. Use DCCH on DL DPCH1 + v_PhyChId := tsc_DL_DPCH1; + v_TtiValue := 4; + } + case (cell_DCH_StandAloneSRB_NoConn) { + //No RRC connection is established. Use CCCH configuration + v_PhyChId := tsc_S_CCPCH1; + v_TtiValue := 1; + } + case (cell_E_HS) { + v_PhyChId := tsc_F_DPCH; + v_TtiValue := 4; + } + case (cell_FACH, + cell_FACH_NoConn) { + //Cell-FACH configured - Activation time does not apply and a1tivation time not needed for Cell-FACH + //Create a "dummy" variable to be used when calling the RB SetUp Cmpl function + //@sic R5s110210 sic@ + v_CFN_Info.frameNumber := 0; + v_CFN_Info.actTime := 0; + v_CFN_Info.tGCFN := 0; + return v_CFN_Info; + } + case else { + FatalError(__FILE__, __LINE__, "Configuration not supported"); + } + } + v_CFN_Info.frameNumber := f_UTRAN_CPHY_GetFrameNumber(p_CellId, v_PhyChId); + v_CFN_Info.actTime := fl_UTRAN_CalculateActTime(v_CFN_Info.frameNumber); + v_CFN_Info.tGCFN := f_UTRAN_CalculateTGCFN(v_CFN_Info.frameNumber, v_TtiValue); + return v_CFN_Info; + } + + //------------------------------------------------------------------------------------------ + /* + * @desc Function which sends the cell info for the UTRAN cell to the EUTRA PTC + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_UTRAN_Send_IR_SysInfoToEUTRA(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + var template (value) CoOrd_UTRANSysInfo_Type v_Cell; + var B1_Type v_Diversity := '0'B; + var B1_Type v_Tstd := '0'B; + var FrequencyInfo v_FreqInfo := f_UTRAN_CellInfo_GetFrequencyInfo(p_CellId); + var UTRAN_CellInfo_Type_FDD v_FDDInfo; + var UTRAN_CellInfo_Type_TDD v_TDDInfo; + + if (f_UTRAN_CellInfo_GetFDD_TDD(p_CellId) == UTRAN_FDD) { + v_FDDInfo := f_UTRAN_CellInfo_GetFDDSpecific(p_CellId); + v_Cell := {FDD := cs_CoOrdUTRANSysInfo_FDD(v_FreqInfo.modeSpecificInfo.fdd.uarfcn_DL, + px_FDD_OperationBand, // @sic R5s130268: adding p_Band sic@ + v_FDDInfo.priScrmCode, + v_FDDInfo.uL_ScramblingCode, + f_U_Asn2Nas_PlmnId(f_UTRAN_CellInfo_GetPLMNIdentity(p_CellId)), + f_UTRAN_GetCellIndentity(p_CellId), + oct2bit(f_UTRAN_CellInfo_GetLAC(p_CellId)), + oct2bit(f_UTRAN_CellInfo_GetRAC(p_CellId)))}; + } + else { // TDD + v_TDDInfo := f_UTRAN_CellInfo_GetTDDSpecific(p_CellId); + if (v_TDDInfo.transmissionDiversityApplied == applied) { + v_Diversity := '1'B; + } + if (v_TDDInfo.dwPCHInfo.tstd_Indicator == applied) { + v_Tstd := '1'B; + } + v_Cell := { + TDD := cs_CoOrdUTRANSysInfo_TDD(v_FreqInfo.modeSpecificInfo.tdd.uarfcn_Nt, + v_TDDInfo.cellParametersID, + v_Diversity, + v_Tstd, + f_U_Asn2Nas_PlmnId(f_UTRAN_CellInfo_GetPLMNIdentity(p_CellId)), + f_UTRAN_GetCellIndentity(p_CellId), + oct2bit(f_UTRAN_CellInfo_GetLAC(p_CellId)), + oct2bit(f_UTRAN_CellInfo_GetRAC(p_CellId))) + }; + } + f_IRAT_SendCoOrd(EUTRA, cms_IRAT_SysInfo(cs_CoOrdUTRAN_SysInfoSingleCell(v_Cell))); + } + + /* + * @desc Function which sends the Authentication parameters for the UTRAN cell to another PTC + * @param p_Port + * @param p_GUTI + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_UTRAN_SendAuthCoOrdParameters(IRAT_CO_ORD_PORT p_Port, + template (omit) CoOrd_GUTIParam_Type p_GUTI := omit) runs on UTRAN_PTC + { + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + p_Port.send(cms_IRAT_AuthInfo(v_SecurityInfo.authKeys.AuthPS, v_SecurityInfo.authKeys.AuthPS, p_GUTI, v_SecurityInfo.authKeys.CSinOtherRAT)); + } + + /* + * @desc Configure and Activate (or deactivate) ciphering for all concerned RBs + * @param p_CellId + * @param p_NewKey + * @param p_CN_Domain + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_RRC_Security(UTRAN_CellId_Type p_CellId, + boolean p_NewKey, + CN_DomainIdentity p_CN_Domain) runs on UTRAN_PTC + { + var RB_ConfigType v_CellConfig := f_UTRAN_CellInfo_GetConfigType(p_CellId); + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + var boolean v_Int_ModifyFlag := false; // True means that an Integrity Modification is being done at that stage. + var template (value) RB_ActivationTimeInfoList v_RB_ActivationTimeInfoList; + var CRLC_RRC_MessageSN_CNF v_CRLC_RRC_MessageSN_CNF; + var RRC_SequenceNumber v_SN_RB0, v_SN_RB1, v_SN_RB2, v_SN_RB2_UL, v_SN_RB3, v_SN_RB4; + var UTRAN_CFN_Info_Type v_CFN_Info := f_CalculateActTime(p_CellId); // @sic R5s120831 sic@ + var ActivationTime v_CipherActTime:= v_CFN_Info.actTime; /* TTCN-2: tcv_CipherActTime is set in f_CMAC_CipherCfg_r6 but only if parameter p_CalcNewActTime is set + and the cell configuration causes configuration of ciphering at the SS + => in TTCN-3 we set CipherActTime and hand it over to f_UTRAN_CMAC_CipherCfg + as well as to fl_UTRAN_StartSecurityUE */ + // @sic R5s120831 sic@ + + v_SecurityInfo.dL_CipherMode := valueof(cs_CipheringModeCmdOn(px_UTRAN_CipheringAlgorithm)); + + if (p_CN_Domain == cs_domain) {v_SecurityInfo.cs_cipheringStarted := true;} + else {v_SecurityInfo.ps_cipheringStarted := true;} + + v_SecurityInfo.recentSecureDomain := p_CN_Domain; + if (v_SecurityInfo.integrityStarted) { // Modify integrity + + v_CRLC_RRC_MessageSN_CNF := f_UTRAN_CRLC_RRC_MessageSN_Get(tsc_RB0); + v_SN_RB0 := v_CRLC_RRC_MessageSN_CNF.count_I_LSB_DL; + + v_CRLC_RRC_MessageSN_CNF := f_UTRAN_CRLC_RRC_MessageSN_Get(tsc_RB1); + v_SN_RB1 := v_CRLC_RRC_MessageSN_CNF.count_I_LSB_DL; + + v_CRLC_RRC_MessageSN_CNF := f_UTRAN_CRLC_RRC_MessageSN_Get(tsc_RB2); + v_SN_RB2 := v_CRLC_RRC_MessageSN_CNF.count_I_LSB_DL; + v_SN_RB2_UL := v_CRLC_RRC_MessageSN_CNF.count_I_LSB_UL; + + v_CRLC_RRC_MessageSN_CNF := f_UTRAN_CRLC_RRC_MessageSN_Get(tsc_RB3); + v_SN_RB3 := v_CRLC_RRC_MessageSN_CNF.count_I_LSB_DL; + + v_CRLC_RRC_MessageSN_CNF := f_UTRAN_CRLC_RRC_MessageSN_Get(tsc_RB4); + v_SN_RB4 := v_CRLC_RRC_MessageSN_CNF.count_I_LSB_DL; + + v_SecurityInfo.dL_Integrity := valueof(cs_IntegrityProtectModify_P(v_SN_RB0, v_SN_RB1, v_SN_RB2, v_SN_RB3, v_SN_RB4, uia2)); + v_Int_ModifyFlag := true; + if (px_UTRAN_CipheringAlgorithm == uea2) { // @sic R5s110216 sic@ + v_SecurityInfo.dL_Integrity.integrityProtectionAlgorithm := uia2; + } + else { + v_SecurityInfo.dL_Integrity.integrityProtectionAlgorithm := uia1; + } + } + else { // Start integrity + v_SecurityInfo.integrityStarted := true; + if (px_UTRAN_CipheringAlgorithm == uea2) { + v_SecurityInfo.dL_Integrity := valueof(cs_IntegrityProtectStart(px_FRESH, uia2)); + } + else { + v_SecurityInfo.dL_Integrity := valueof(cs_IntegrityProtectStart(px_FRESH, uia1)); + } + v_SecurityInfo.dl_IntegrityCheckInfo := valueof(cs_IntegrityCheckInfo0); + v_Int_ModifyFlag := false; + } + + if (p_NewKey == true) { + //Authentication was done, reset HFN + v_SecurityInfo.authKeys.HFN := '00000000000000000000'B; + if (p_CN_Domain == cs_domain) {v_SecurityInfo.start_CS := '00000000000000000000'B;} + else {v_SecurityInfo.start_PS := '00000000000000000000'B;} + } + else { + if (p_CN_Domain == cs_domain) {v_SecurityInfo.authKeys.HFN := v_SecurityInfo.start_CS;} + else {v_SecurityInfo.authKeys.HFN := v_SecurityInfo.start_PS;} + } + f_UTRAN_Security_Set(v_SecurityInfo); // write back information + + // DownloadSecurityKey: + f_UTRAN_SS_DownloadSecurityKey(p_CellId, p_CN_Domain); + + // ActivateSecurity_DL_SS: + if (not v_Int_ModifyFlag) { // If Start of Integrity: Set DL RRC_MSN to 0, else skip it. + f_UTRAN_SetDL_RRC_MessageSN(p_CellId); + } + f_UTRAN_CRLC_IntegrityActivate(cas_CRLC_DL_IntegrityActivateReq(utran_CellDedicated, + v_SecurityInfo.recentSecureDomain, + v_SecurityInfo.dL_Integrity)); + + if (((v_SecurityInfo.ps_cipheringStarted) and (v_SecurityInfo.recentSecureDomain == ps_domain)) or + ((v_SecurityInfo.cs_cipheringStarted) and (v_SecurityInfo.recentSecureDomain == cs_domain))) { + v_RB_ActivationTimeInfoList := f_UTRAN_ActivateCiphering_DL_SS(p_CellId, v_CipherActTime); + } else { + v_RB_ActivationTimeInfoList := cs_RB_ActTimeInfoListSRBs(0, 0, 0, 0); + } + + if (v_Int_ModifyFlag) { + f_UTRAN_CRLC_IntegrityActivate(cas_CRLC_UL_IntegrityActivateReq(utran_CellDedicated, + v_SecurityInfo.recentSecureDomain, + cs_RB2_IntegrityProtActivationInfoList(v_SN_RB2_UL))); + } else { + f_UTRAN_CRLC_IntegrityActivate(cas_CRLC_UL_IntegrityActivateReq(utran_CellDedicated, + v_SecurityInfo.recentSecureDomain, + cs_RB2_IntegrityProtActivationInfoList(0))); + } + f_UTRAN_CRLC_ProhibitRLC_Ack(tsc_RB2, cas_CRLC_ProhibitRLC_Ack_REQ(utran_CellDedicated, tsc_RB2)); + + // lt_StartSecurity_UE: + v_SecurityInfo := fl_UTRAN_StartSecurityUE(p_CellId, + v_CellConfig, + v_SecurityInfo, + v_RB_ActivationTimeInfoList, + p_CN_Domain, + v_CipherActTime); + f_UTRAN_Security_Set(v_SecurityInfo); + + f_UTRAN_CRLC_ProhibitRLC_Ack(tsc_RB2, cas_CRLC_ContinueRLC_Ack_REQ(utran_CellDedicated, tsc_RB2)); + + if (((v_SecurityInfo.ps_cipheringStarted) and (v_SecurityInfo.recentSecureDomain == ps_domain)) or + ((v_SecurityInfo.cs_cipheringStarted) and (v_SecurityInfo.recentSecureDomain == cs_domain))) { + f_UTRAN_CRLC_ResumeSecurity(p_CellId); + } + } + + /* + * @desc To download a new START value In the security Record + * @param p_Domain + * @param p_StartValue + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SS_SecurityDownloadStart(CN_DomainIdentity p_Domain, + START_Value p_StartValue) runs on UTRAN_PTC + { + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + + if (p_Domain == cs_domain) { + v_SecurityInfo.start_CS := p_StartValue; + } else if (p_Domain == ps_domain) { + v_SecurityInfo.start_PS := p_StartValue; + } + f_UTRAN_Security_Set(v_SecurityInfo); + } + + /* + * @desc To download all security keys to CMAC (for DCH cell configurations only) and U_CRLC. + * @param p_CellId + * @param p_Domain + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SS_DownloadSecurityKey(UTRAN_CellId_Type p_CellId, + CN_DomainIdentity p_Domain) runs on UTRAN_PTC + { + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + var RB_ConfigType v_CellConfig := f_UTRAN_CellInfo_GetConfigType(p_CellId); + var B20_Type v_HFN := v_SecurityInfo.authKeys.HFN; + var KeyCiphering v_KC; + var IntegrityKey v_IK; + // var GSM_CipheringKey v_GSM_ck := v_SecurityInfo.authKeys.AuthKcGSM; + + if (p_Domain == cs_domain) { + v_KC := v_SecurityInfo.authKeys.AuthCS.CKey; + v_IK := v_SecurityInfo.authKeys.AuthCS.IKey; + v_HFN := v_SecurityInfo.start_CS; // @sic R5s110788 sic@ + } + else { + v_KC := v_SecurityInfo.authKeys.AuthPS.CK; + v_IK := v_SecurityInfo.authKeys.AuthPS.IK; + v_HFN := v_SecurityInfo.start_PS; // @sic R5s110788 sic@ + } + + select (v_CellConfig) { + case (cell_FACH_NoConn, cell_FACH, cell_FACH_NoDedicated) { + // Cell FACH + f_UTRAN_CRLC_SecurityMode_Config(p_Domain, v_HFN, v_KC, v_IK); + } + case (cell_DCH_StandAloneSRB_NoConn, + cell_DCH_StandAloneSRB, + cell_DCH_64kPS_RAB_SRB, + cell_DCH_64kPS_AM_RAB, //@sic R5s140400 sic@ + cell_DCH_HS_DSCH, // @sic R5s110683 sic@ + cell_DCH_E_HS, + cell_E_HS, + cell_DCH_dlSRB_E_HS) { + // Cell DCH; no TM RAB + f_UTRAN_CRLC_SecurityMode_Config(p_Domain, v_HFN, v_KC, v_IK); + } + case (cell_DCH_Speech, cell_Four_DTCH_PS_CS) { //@sic R5s140096 sic@ + // cell DCH with TM RAB + f_UTRAN_CRLC_SecurityMode_Config(p_Domain, v_HFN, v_KC, v_IK); + f_UTRAN_CMAC_SecurityMode_Config(p_Domain, v_HFN, v_KC); + } + } + } + + /* + * @desc Send SecurityModeCommand and receive SecurityModeComplete and configure SS according to UE configuration + * @param p_CellId + * @param p_CellConfig + * @param p_SecurityInfo + * @param p_RB_ActivationTimeInfoList + * @param p_CN_Domain + * @param p_CipherActTime + * @param p_IntegrityOnly (default value: false) - only set to true after HO when only integrity needs to be configured + * @return UTRAN_SecurityInfo_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function fl_UTRAN_StartSecurityUE(UTRAN_CellId_Type p_CellId, + RB_ConfigType p_CellConfig, + UTRAN_SecurityInfo_Type p_SecurityInfo, + template (value) RB_ActivationTimeInfoList p_RB_ActivationTimeInfoList, + CN_DomainIdentity p_CN_Domain, + ActivationTime p_CipherActTime, + boolean p_IntegrityOnly := false) runs on UTRAN_PTC return UTRAN_SecurityInfo_Type + { + var UTRAN_SecurityInfo_Type v_SecurityInfo := p_SecurityInfo; + var IntegrityProtActivationInfo v_IntegrityActInfo; + var bitstring v_UE_SystemSpecificCap := int2bit(f_InitSystemSpecificCap(),7); + var U_RLC_AM_IND v_RLC_AM_DATA_IND; + var template (omit) ActivationTime v_CipherActTime; + var template (omit) InterRAT_UE_SecurityCapList v_UE_SysSpecCap; + var template (omit) CipheringModeInfo_r7 v_CipheringModeInfo; + + // ********** Send SecurityModeCommand: + if (pc_GERAN) { + v_UE_SysSpecCap := cs_UE_SysSpecCap(v_UE_SystemSpecificCap); + } + else { // NOT pc_GERAN + v_UE_SysSpecCap := omit; + } + + if (((p_CellConfig == cell_DCH_Speech)) and (v_SecurityInfo.recentSecureDomain == cs_domain)) { + // Ciphering on TM RAB present, hence include Ciphering activation time + // Ciphering for signalling RBs 1 to 4 + v_CipherActTime := p_CipherActTime; + } else { + // Ciphering for signalling RBs 1 to 4 + v_CipherActTime := omit; + } + + if (p_IntegrityOnly == true) { // @sic R5s110382 sic@ + v_CipheringModeInfo := omit; + } + else { + v_CipheringModeInfo := cs_CipheringModeInfo_r7(v_SecurityInfo.dL_CipherMode, + p_RB_ActivationTimeInfoList, + v_CipherActTime); + } + + U_AM.send(cas_RLC_Data_Req_NoCnf(utran_CellDedicated, + tsc_RB2, + cs_108_RRC_SecModeCmd(v_SecurityInfo.dl_IntegrityCheckInfo, + cs_RRC_SecModeCmd(tsc_RRC_TI, + v_SecurityInfo.cipheringAlgorithmCapability, + v_SecurityInfo.integrProtAlgCap, + v_CipheringModeInfo, + v_SecurityInfo.dL_Integrity, + p_CN_Domain, + v_UE_SysSpecCap)))); + // ********** Receive SecurityModeComplete: + alt { + [p_IntegrityOnly] U_AM.receive(car_RLC_Data_Ind(utran_CellDedicated, // @sic R5s110382 sic@ + tsc_RB2, + cr_108_RRC_SecModeCmpl(tsc_RRC_TI, omit))) -> value v_RLC_AM_DATA_IND { } + [not p_IntegrityOnly] U_AM.receive(car_RLC_Data_Ind(utran_CellDedicated, + tsc_RB2, + cr_108_RRC_SecModeCmpl(tsc_RRC_TI, ?))) -> value v_RLC_AM_DATA_IND { } + [] U_AM.receive(car_RLC_Data_Ind(utran_CellDedicated, + tsc_RB2, + cr_108_SecModeFail(tsc_RRC_TI, ?))) { + f_UTRAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "Security Failed"); + } + } + + if (not p_IntegrityOnly) { // UL ciphering information is present + v_SecurityInfo.uL_CipherMode := v_RLC_AM_DATA_IND.data.aM_message.uL_DCCH_Message.message_.securityModeComplete.rb_UL_CiphActivationTimeInfo; + // @sic R5s130558 sic@ + f_UTRAN_ActivateCiphering_RLC_UL(f_UTRAN_CellInfo_GetFDD_TDD(p_CellId), v_SecurityInfo.recentSecureDomain, v_SecurityInfo.uL_CipherMode); + } + // integrity: + v_SecurityInfo.uL_Integrity := v_RLC_AM_DATA_IND.data.aM_message.uL_DCCH_Message.message_.securityModeComplete.ul_IntegProtActivationInfo; + v_IntegrityActInfo := v_SecurityInfo.uL_Integrity; + + f_UTRAN_CRLC_IntegrityActivate(cas_CRLC_UL_IntegrityActivateReq(utran_CellDedicated, + v_SecurityInfo.recentSecureDomain, + cs_RestRB_IntegrityProtActivationInfoList(v_IntegrityActInfo.rrc_MessageSequenceNumberList[0], + v_IntegrityActInfo.rrc_MessageSequenceNumberList[1], + v_IntegrityActInfo.rrc_MessageSequenceNumberList[3], + v_IntegrityActInfo.rrc_MessageSequenceNumberList[4]))); + return v_SecurityInfo; + } + + /* + * @desc If UE supports GSM, this step initialises tcv_UE_SystemSpecificCap based on PICS + * @return integer + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_InitSystemSpecificCap() return integer + { + var integer v_UE_SystemSpecificCap := 0; + + if (pc_GERAN) { + v_UE_SystemSpecificCap := v_UE_SystemSpecificCap + 1; //A5_1 always supported + v_UE_SystemSpecificCap := v_UE_SystemSpecificCap + 4; // A5_3 always Supported + } + return v_UE_SystemSpecificCap; + } + + /* + * @desc Send Attach Accept and receive Attach Complete + * @param p_CellId + * @param p_AttachType + * @param p_EPLMN (default value: omit) + * @status APPROVED (LTE_IRAT, POS) + */ + function f_UTRAN_AttachAccept(UTRAN_CellId_Type p_CellId, + B3_Type p_AttachType, + template (omit) PLMN_List p_EPLMN := omit) //@sic R5-134916 sic@ + runs on UTRAN_PTC + { + var octetstring v_PLMN := f_U_Asn2Nas_PlmnId(f_UTRAN_CellInfo_GetPLMNIdentity(p_CellId)); + var octetstring v_LAC := f_UTRAN_CellInfo_GetLAC(p_CellId); + var octetstring v_RAC := f_UTRAN_CellInfo_GetRAC(p_CellId); + var template (omit) MobileIdentity v_TMSI := omit; + + if (p_AttachType == tsc_I_AttachTypeCombined) { // @sic R5-123114 sic@ + v_TMSI := cs_MobileIdTMSIorPTMSI('23'O, px_TMSI_Def); + } + + U_Dc.send(cas_DataReq_PS(utran_CellDedicated, // ATTACH ACCEPT for combined CS/PS + tsc_RB3, + cs_U_AttachAcc(cs_GMM_AttachResult(p_AttachType), + cs_RAI(omit, + cs_LAI(omit, v_PLMN, v_LAC), + v_RAC), + cs_PTMSI_Signature(px_PTMSI_SigDef), + cs_MobileIdTMSIorPTMSI('18'O, px_PTMSI_Def), + v_TMSI, + p_EPLMN))); + + U_Dc.receive(car_PS_UplinkDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_AttachComplete)); + } + + /* + * @desc Complete GMM_IdleUpdated handling NMO I and II, Operation Mode A and Automatic Switch On + * @param p_CellId + * @status APPROVED (LTE_IRAT, POS) + */ + function f_UTRAN_GMMOnly_Attach(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + var START_Value v_START_Value_ps := '00000000000000000000'B; + var START_Value v_START_Value_cs := '00000000000000000000'B; + var RB_ConfigType v_CellConfig; + var RRC_DATA_IND v_RRC_DataInd; + var boolean v_NewKeyFlag := true; + var B2_Type v_NMO := f_UTRAN_CellInfo_GetNMO(p_CellId); + + f_UTRAN_RRC_ConnEst(p_CellId); // Establish RRC connection + v_CellConfig := f_UTRAN_CellInfo_GetConfigType(p_CellId); // Updated in RRC Conn Est + + alt { + [] U_Dc.receive(car_PS_InitDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_AttachReq(cr_AttachType(?, (tsc_I_AttachTypeGPRSAtt, tsc_I_AttachTypeCombined)), + cr_MobileIdAny(omit), + cr_RAI(omit), + ?))) + -> value v_RRC_DataInd { + v_START_Value_ps := v_RRC_DataInd.ttcn_start; + f_UTRAN_SS_SecurityDownloadStart(ps_domain, v_START_Value_ps); + } + [pc_SupportOpModeA and ((v_NMO == tsc_NMO_II) or not pc_AutomaticAttachSwitchON)] U_Dc.receive(car_InitDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_LocationUpdatingRequest)) + -> value v_RRC_DataInd { + v_START_Value_cs := v_RRC_DataInd.ttcn_start; + f_UTRAN_SS_SecurityDownloadStart(cs_domain, v_START_Value_cs); + + if ((v_NMO == tsc_NMO_II) and pc_AutomaticAttachSwitchON) { // need to wait for Attach Req before finishing LAU + U_Dc.receive(car_PS_InitDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_AttachReq(cr_AttachType(?, (tsc_I_AttachTypeGPRSAtt, tsc_I_AttachTypeCombined)), + cr_MobileIdAny(omit), + cr_RAI(omit), + ?))) + -> value v_RRC_DataInd; + v_START_Value_ps := v_RRC_DataInd.ttcn_start; + f_UTRAN_SS_SecurityDownloadStart(ps_domain, v_START_Value_ps); + f_UTRAN_LocationUpdate_WithoutLAUReq(p_CellId, v_START_Value_cs, true); + + } else { // else finish LAU first @sic R5s110705, R5s110801 sic@ + f_UTRAN_LocationUpdate_WithoutLAUReq(p_CellId, v_START_Value_cs, true); + // then trigger the Attach Req + select (v_CellConfig) { + case (cell_FACH) { + f_UTRAN_RRC_ConnRel(p_CellId, cell_Fach_Dcch); + } + case else { + f_UTRAN_RRC_ConnRel(p_CellId, cell_Dch); + } + } + f_Delay(1.0); + f_UT_TriggerAttach(UT); + f_UTRAN_RRC_ConnEst(p_CellId); // Establish RRC connection + + U_Dc.receive(car_PS_InitDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_AttachReq(cr_AttachType(?, (tsc_I_AttachTypeGPRSAtt, tsc_I_AttachTypeCombined)), + cr_MobileIdAny(omit), + cr_RAI(omit), + ?))) + -> value v_RRC_DataInd; + v_START_Value_ps := v_RRC_DataInd.ttcn_start; + f_UTRAN_SS_SecurityDownloadStart(ps_domain, v_START_Value_ps); + } + } + } + + f_UTRAN_GMM_Authentication(); + f_UTRAN_RRC_Security(p_CellId, // SECURITY MODE COMMAND, SECURITY MODE COMPLETE + v_NewKeyFlag, + ps_domain); + + f_UTRAN_AttachAccept(p_CellId, v_RRC_DataInd.msg.attachRequest.attachType.attachType); // ATTACH ACCEPT, ATTACH COMPLETE + + select (v_CellConfig) { + case (cell_FACH) { + f_UTRAN_RRC_ConnRel(p_CellId, cell_Fach_Dcch); + } + case else { + f_UTRAN_RRC_ConnRel(p_CellId, cell_Dch); + } + } + } + + /* + * @desc returns the FACH RRC CONNECTIOn SETUP PDU depending on the message class + * @param p_CellId + * @param p_InitialUE_Id + * @return template (value) DL_CCCH_Message + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_Get_cs_108_RRC_ConnSetupFACH(UTRAN_CellId_Type p_CellId, + template (value) InitialUE_Identity p_InitialUE_Id) + runs on UTRAN_PTC return template (value) DL_CCCH_Message + { // @sic R5-123750 sic@ + + var template (value) DL_CCCH_Message v_RRC_ConnSetupFACH; + var U_RNTI v_U_RNTI := f_UTRAN_CellInfo_GetU_RNTI(p_CellId); + var C_RNTI v_C_RNTI := f_UTRAN_CellInfo_GetC_RNTI(p_CellId); + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI; + + select (f_UTRAN_ConfigurationInfo_TestCaseRelease_Get()) { // @sic R5s130195 Utran Release sic@ + case (FDDr8) { + v_RRC_ConnSetupFACH := cs_108_RRC_ConnSetupFACH_r8_FDD(p_InitialUE_Id, v_RRC_TI, v_U_RNTI, v_C_RNTI); + } + case (FDDr9) { + v_RRC_ConnSetupFACH := cs_108_RRC_ConnSetupFACH_r9_FDD(p_InitialUE_Id, v_RRC_TI, v_U_RNTI, v_C_RNTI); + } + case (FDDr10) { + v_RRC_ConnSetupFACH := cs_108_RRC_ConnSetupFACH_r10_FDD(p_InitialUE_Id, v_RRC_TI, v_U_RNTI, v_C_RNTI); + } + case (FDDr11) { + v_RRC_ConnSetupFACH := cs_108_RRC_ConnSetupFACH_FDD_r11(p_InitialUE_Id, v_RRC_TI, v_U_RNTI, v_C_RNTI); + } + case (TDDr9) { + v_RRC_ConnSetupFACH := cs_108_RRC_ConnSetupFACH_r9_TDD(p_InitialUE_Id, tsc_RRC_TI, v_U_RNTI, v_C_RNTI); + } + case (TDDr10) { + v_RRC_ConnSetupFACH := cs_108_RRC_ConnSetupFACH_r10_TDD(p_InitialUE_Id, tsc_RRC_TI, v_U_RNTI, v_C_RNTI); + } + case (TDDr11) { + v_RRC_ConnSetupFACH := cs_108_RRC_ConnSetupFACH_TDD_r11(p_InitialUE_Id, tsc_RRC_TI, v_U_RNTI, v_C_RNTI); + } + case else { + FatalError(__FILE__, __LINE__, ""); + } + } + return v_RRC_ConnSetupFACH; + } + + /* + * @desc returns the DCH RRC CONNECTIOn SETUP PDU depending on the message class + * @param p_CellId + * @param p_InitialUE_Id + * @return template (value) DL_CCCH_Message + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_Get_cs_108_RRC_ConnSetupDCH(UTRAN_CellId_Type p_CellId, + template (value) InitialUE_Identity p_InitialUE_Id) + runs on UTRAN_PTC return template (value) DL_CCCH_Message + { // @sic R5-123750 sic@ + + var template (value) DL_CCCH_Message v_RRC_ConnSetupDCH; + var U_RNTI v_U_RNTI := f_UTRAN_CellInfo_GetU_RNTI(p_CellId); + var UTRAN_CellInfo_Type_FDD v_CellInfoFDD; // @sic R5s120719 sic@ + var UTRAN_CellInfo_Type_TDD v_CellInfoTDD; // @sic R5s120719 sic@ + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI; + + select (f_UTRAN_ConfigurationInfo_TestCaseRelease_Get()) { // @sic R5s130195 Utran Release sic@ + case (FDDr8) { + v_CellInfoFDD := f_UTRAN_CellInfo_GetFDDSpecific(p_CellId); // @sic R5s120719 sic@ + v_RRC_ConnSetupDCH := cs_108_RRC_ConnSetupDCH_r8_FDD(p_InitialUE_Id, v_RRC_TI, v_CellInfoFDD.priScrmCode, v_U_RNTI, v_CellInfoFDD.uL_ScramblingCode); + } + case (FDDr9) { + v_CellInfoFDD := f_UTRAN_CellInfo_GetFDDSpecific(p_CellId); // @sic R5s120719 sic@ + v_RRC_ConnSetupDCH := cs_108_RRC_ConnSetupDCH_r9_FDD(p_InitialUE_Id, v_RRC_TI, v_CellInfoFDD.priScrmCode, v_U_RNTI, v_CellInfoFDD.uL_ScramblingCode); + } + case (FDDr10) { + v_CellInfoFDD := f_UTRAN_CellInfo_GetFDDSpecific(p_CellId); // @sic R5s120719 sic@ + v_RRC_ConnSetupDCH := cs_108_RRC_ConnSetupDCH_r10_FDD(p_InitialUE_Id, v_RRC_TI, v_CellInfoFDD.priScrmCode, v_U_RNTI, v_CellInfoFDD.uL_ScramblingCode); + } + case (FDDr11) { + v_CellInfoFDD := f_UTRAN_CellInfo_GetFDDSpecific(p_CellId); // @sic R5s120719 sic@ + v_RRC_ConnSetupDCH := cs_108_RRC_ConnSetupDCH_r11_FDD(p_InitialUE_Id, v_RRC_TI, v_CellInfoFDD.priScrmCode, v_U_RNTI, v_CellInfoFDD.uL_ScramblingCode); + } + case (TDDr9) { + v_CellInfoTDD := f_UTRAN_CellInfo_GetTDDSpecific(p_CellId); // @sic R5s120719 sic@ + v_RRC_ConnSetupDCH := cs_108_RRC_ConnSetupDCH_r9_TDD(p_InitialUE_Id, v_RRC_TI, v_U_RNTI, v_CellInfoTDD.cellParametersID); + } + case (TDDr10) { + v_CellInfoTDD := f_UTRAN_CellInfo_GetTDDSpecific(p_CellId); // @sic R5s120719 sic@ + v_RRC_ConnSetupDCH := cs_108_RRC_ConnSetupDCH_r10_TDD(p_InitialUE_Id, v_RRC_TI, v_U_RNTI, v_CellInfoTDD.cellParametersID); + } + case (TDDr11){ + v_RRC_ConnSetupDCH := cs_108_RRC_ConnSetupDCH_r11_TDD(p_InitialUE_Id, v_RRC_TI, v_U_RNTI, v_CellInfoTDD.cellParametersID); + } + case else { + FatalError(__FILE__, __LINE__, ""); + } + } + return v_RRC_ConnSetupDCH; + } + + /* + * @desc Sends RRC CONNECTION SETUP and receives RRC CONNECTION SETUP COMPLETE + * @param p_CellId + * @param p_InitialUE_Id + * @param p_LogResultsAvail_ANR + * @param p_HandleRRCConnSetupComplete (default = true, set to false if called f_UTRAN_SS_SetConfigRRC_RB3) + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_UTRAN_RRC_ConnEst_WithoutRRCConnectionReq(UTRAN_CellId_Type p_CellId, + template (value) InitialUE_Identity p_InitialUE_Id, + template (omit) boolean p_LogResultsAvail_ANR := omit, //@sic R5-134682 sic@ + boolean p_HandleRRCConnSetupComplete := true) // @sic R5s140144 sic@ + runs on UTRAN_PTC + { // This function assumes that DCH is already configured and is ready for an RRC connection to be established + var RB_ConfigType v_CellConfig := f_UTRAN_CellInfo_GetConfigType (p_CellId); + var template (value) DL_CCCH_Message v_RRC_ConnSetup; + + select (v_CellConfig) { + case (cell_FACH_NoConn) { + v_RRC_ConnSetup := f_Get_cs_108_RRC_ConnSetupFACH(p_CellId, p_InitialUE_Id); + f_UTRAN_CellInfo_SetConfigType(p_CellId, cell_FACH); + } + case (cell_DCH_StandAloneSRB_NoConn) { + v_RRC_ConnSetup := f_Get_cs_108_RRC_ConnSetupDCH(p_CellId, p_InitialUE_Id); + f_UTRAN_CellInfo_SetConfigType(p_CellId, cell_DCH_StandAloneSRB); + } + case else { + FatalError(__FILE__, __LINE__, "invalid configuration"); + } + } + U_UM.send(cas_RRC_ConnSetup(p_CellId, tsc_RB0, v_RRC_ConnSetup)); + if (p_HandleRRCConnSetupComplete) { // @sic R5s140144 sic@ + f_UTRAN_Default_BlockDc (true); // @sic R5s130778 sic@ + f_UTRAN_RRC_ReceiveConnSetupCmpl(p_CellId, p_LogResultsAvail_ANR); + f_UTRAN_Default_BlockDc (false); // @sic R5s130778 sic@ + } + } + + /* + * @desc To check the release indicator reported by UE in RRC CONNECTION REQUESt against the test casse release. + * @param p_ReleaseIndicator_UE + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CheckReleaseIndicator(AccessStratumReleaseIndicator p_ReleaseIndicator_UE) runs on UTRAN_PTC + { // @sic R5-123750 sic@ + + select (f_UTRAN_ConfigurationInfo_TestCaseRelease_Get()) { // @sic R5s130195 Utran Release sic@ + case (FDDr7, TDDr7) { + if (not match(p_ReleaseIndicator_UE, complement(rel_4, rel_5, rel_6))) { + FatalError(__FILE__, __LINE__, "Wrong Access Stratum release indicator"); + } + } + case (FDDr8) { + if (not match(p_ReleaseIndicator_UE, complement(rel_4, rel_5, rel_6, rel_7))) { + FatalError(__FILE__, __LINE__, "Wrong Access Stratum release indicator"); + } + } + case (FDDr9, TDDr9) { + if (not match(p_ReleaseIndicator_UE, complement(rel_4, rel_5, rel_6, rel_7, rel_8))) { + FatalError(__FILE__, __LINE__, "Wrong Access Stratum release indicator"); + } + } + case (FDDr10, TDDr10) { // @sic R5s130195 Utran Release sic@ + if (not match(p_ReleaseIndicator_UE, complement(rel_4, rel_5, rel_6, rel_7, rel_8, rel_9))) { + FatalError(__FILE__, __LINE__, "Wrong Access Stratum release indicator"); + } + } + case (FDDr11, TDDr11) { + if (not match(p_ReleaseIndicator_UE, complement(rel_4, rel_5, rel_6, rel_7, rel_8, rel_9, rel_10))) { + FatalError(__FILE__, __LINE__, "Wrong Access Stratum release indicator"); + } + } + case else { + FatalError(__FILE__, __LINE__, ""); + } + } + } + + /* + * @desc The generic Step to establish RRC Connection and bring UE to CELL_FACH or CELL_DCH state. + * In this Step, 5 Signalling Radio Bearers with 3.4kbps DL & UL is setup (RB#0, 1, 2, 3,4). + * @param p_CellId + * @param p_EstCause (default value: ?) + * @param p_LogResultsAvail_ANR + * @param p_HandleRRCConnSetupComplete (default = true, set to false if called f_UTRAN_SS_SetConfigRRC_RB3) + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_UTRAN_RRC_ConnEst(UTRAN_CellId_Type p_CellId, + template (present) EstablishmentCause p_EstCause := ?, + template (omit) boolean p_LogResultsAvail_ANR := omit, //@sic R5-134682 sic@ + boolean p_HandleRRCConnSetupComplete := true // @sic R5s140144 sic@ + ) runs on UTRAN_PTC + { // This function assumes that DCH is already configured and is ready for an RRC connection to be established + + var InitialUE_Identity v_InitialUE_Id; + var RLC_TR_DATA_IND v_RLC_TR_DATA_IND; + + alt { + [] U_TM.receive(car_RRC_ConnReq(p_CellId, + tsc_RB0, + cr_108_RRC_ConnReq_r8(p_EstCause))) -> value v_RLC_TR_DATA_IND + { + v_InitialUE_Id := v_RLC_TR_DATA_IND.tM_message.uL_CCCH_Message.message_.rrcConnectionRequest.initialUE_Identity; + f_UTRAN_CheckReleaseIndicator(v_RLC_TR_DATA_IND.tM_message.uL_CCCH_Message.message_.rrcConnectionRequest.v3d0NonCriticalExtensions.v4b0NonCriticalExtensions.rrcConnectionRequest_v4b0ext.accessStratumReleaseIndicator); + f_UTRAN_MobileInfo_UE_Release_Set(v_RLC_TR_DATA_IND.tM_message.uL_CCCH_Message.message_.rrcConnectionRequest.v3d0NonCriticalExtensions.v4b0NonCriticalExtensions.rrcConnectionRequest_v4b0ext.accessStratumReleaseIndicator); + } + } + f_UTRAN_RRC_ConnEst_WithoutRRCConnectionReq(p_CellId, v_InitialUE_Id, p_LogResultsAvail_ANR, p_HandleRRCConnSetupComplete); + } + + /* + * @desc To assign the Start values in the security info + * @param p_STARTList + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SetSecurityInfo_StartValue(STARTList p_STARTList) runs on UTRAN_PTC + { + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + var integer v_DomainCnt; + var integer I; + + v_DomainCnt := lengthof(p_STARTList); + if ((v_DomainCnt > 0) and (v_DomainCnt <= 2)) { + for (I:=0; I value v_RLC_AM_DATA_IND + { + v_RRCConnectionSetupComplete := v_RLC_AM_DATA_IND.data.aM_message.uL_DCCH_Message.message_.rrcConnectionSetupComplete; + } + // swallow any excess ConnReq messages that haven't been processed yet + [] U_TM.receive(car_RRC_ConnReq(?, tsc_RB0, cr_RRC_RrcConnReqAny)) + { + repeat; + } + } + // get start list + v_STARTList := v_RRCConnectionSetupComplete.startList; + v_SecurityInfo.cipheringAlgorithmCapability := v_RRCConnectionSetupComplete.ue_RadioAccessCapability.securityCapability.cipheringAlgorithmCap; + v_SecurityInfo.integrProtAlgCap := v_RRCConnectionSetupComplete.ue_RadioAccessCapability.securityCapability.integrityProtectionAlgorithmCap; + f_UTRAN_Security_Set(v_SecurityInfo); + // Set start value in Security info + f_UTRAN_SetSecurityInfo_StartValue (v_STARTList); + + // Retrieve and store the EUTRA capabilities in UTRAN to E-UTRAN test cases only + // @sic R5-123734 R5s120660 sic@ + if (f_GetTestcaseAttrib_RetrieveEutraCapabilities(testcasename())) { + v_UeCapabilityContainerBitstring := v_RRCConnectionSetupComplete.v370NonCriticalExtensions.v380NonCriticalExtensions.v3a0NonCriticalExtensions.laterNonCriticalExtensions.v3g0NonCriticalExtensions.v4b0NonCriticalExtensions.v590NonCriticalExtensions.v5c0NonCriticalExtensions.v690NonCriticalExtensions.rrcConnectionSetupComplete_v690ext.ueCapabilityContainer; + + if (decvalue(v_UeCapabilityContainerBitstring, v_UE_CapabilityContainer) != 0) { + FatalError(__FILE__, __LINE__, "UE capability container can not be decoded"); + } else { + f_UTRAN_MobileInfo_EUTRACapability_Set(v_UE_CapabilityContainer.v6b0NonCriticalExtensions.v6e0NonCriticalExtensions.v770NonCriticalExtensions.v790NonCriticalExtensions.v860NonCriticalExtensions.ue_RATSpecificCapability_v860ext.eutra_RadioAccessCapability.ue_EUTRA_Capability); //Anritsu TTCN CR required + } + } + // Check if ANR measurement log available flag + if (isvalue(p_LogResultsAvail_ANR)) { + v_LogMeasAvailExpected_ANR := valueof(p_LogResultsAvail_ANR); + v_LogMeasAvailReceived_ANR := false; + if (ispresent(v_RRCConnectionSetupComplete.v370NonCriticalExtensions.v380NonCriticalExtensions.v3a0NonCriticalExtensions.laterNonCriticalExtensions.v3g0NonCriticalExtensions.v4b0NonCriticalExtensions.v590NonCriticalExtensions.v5c0NonCriticalExtensions.v690NonCriticalExtensions.v770NonCriticalExtensions.va40NonCriticalExtensions.rrcConectionSetupComplete_va40ext)) { + v_RRCConnectionSetupComplete_va40ext_IEs := v_RRCConnectionSetupComplete.v370NonCriticalExtensions.v380NonCriticalExtensions.v3a0NonCriticalExtensions.laterNonCriticalExtensions.v3g0NonCriticalExtensions.v4b0NonCriticalExtensions.v590NonCriticalExtensions.v5c0NonCriticalExtensions.v690NonCriticalExtensions.v770NonCriticalExtensions.va40NonCriticalExtensions.rrcConectionSetupComplete_va40ext; + + v_LogMeasAvailReceived_ANR := ispresent(v_RRCConnectionSetupComplete_va40ext_IEs.loggedANRResultsAvailable) and + match(true_, v_RRCConnectionSetupComplete_va40ext_IEs.loggedANRResultsAvailable); // NOTE: the "match" would not be needed as long as "true" is the only value + } + if (v_LogMeasAvailExpected_ANR == v_LogMeasAvailReceived_ANR) { // Verify that the value of IE Logged ANR Results Available is the same as expected + f_UTRAN_PreliminaryPass(__FILE__, __LINE__, "Correct IE Logged ANR Results Available"); + } else { + f_UTRAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "Incorrect IE Logged ANR Results Available"); + } + } + } + + /* + * @desc To bring the UE from state CELL_DCH/ CELL_FACH to idle state by releasing the RRC connection + * @param p_CellId + * @param p_RRC_RelStatus + * @param p_ConnEstFollows (default value: false) + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_UTRAN_RRC_ConnRel(UTRAN_CellId_Type p_CellId, + RRC_Rel_Status p_RRC_RelStatus, + boolean p_ConnEstFollows := false) runs on UTRAN_PTC + { /* @sic R5s120049: new parameter p_ConnEstFollows; change of default behaviour in case an RRC connection establishment is expected immediately after this function sic@ */ + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + var integer v_N308 := 2; // Maximum number of retransmissions of the RRC CONNECTION RELEASE COMPLETE message. + + f_Delay(1.0); + + if (p_RRC_RelStatus == cell_Dch) { + fl_UTRAN_RRC_ConnRel_DCH(v_SecurityInfo.dl_IntegrityCheckInfo, v_N308); + + } else if (p_RRC_RelStatus == cell_Fach_Dcch) { + U_UM.send(cas_RRC_ConnRelDCCH(utran_CellDedicated, + tsc_RB1, + cs_108_RRC_ConnRelDCCH_r4(v_SecurityInfo.dl_IntegrityCheckInfo, tsc_RRC_TI))); + U_AM.receive(car_RLC_Data_Ind(utran_CellDedicated, + tsc_RB2, + cr_108_RRC_ConnRelCmpl(tsc_RRC_TI))); + f_UTRAN_PreliminaryPass(__FILE__, __LINE__, ""); + f_Delay(1.0); + + } else if (p_RRC_RelStatus == cell_Fach_Ccch) { + U_UM.send(cas_RRC_ConnRelCCCH(p_CellId, + tsc_RB0, + cs_108_RRC_ConnRelCCCH_r5(cs_U_RNTI_Def, tsc_RRC_TI))); + } else { + FatalError(__FILE__, __LINE__, "invalid configuration"); + } + + // TO DO - Implement DPCH re-configuration + + if (p_ConnEstFollows) { f_UTRAN_Default_BlockTM(true); } /* @sic R5s120049 R5s120086 (R5s120107) sic@ */ + f_UTRAN_RestartCRLC_ForNextConnection(p_CellId); + f_UTRAN_SS_ResetSecurityKey(); + if (p_ConnEstFollows) { f_UTRAN_Default_BlockTM(false); } /* @sic R5s120049 R5s120086 (R5s120107) sic@ */ + } + + /* + * @desc To send the RRC Connection Release on DCH + * @param p_IntegrityCheckInfo + * @param p_N308 + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_UTRAN_RRC_ConnRel_DCH(IntegrityCheckInfo p_IntegrityCheckInfo, + integer p_N308) runs on UTRAN_PTC + { + var integer v_K := 1; + timer t_WaitForRrcConRel := f_UG_SetTimerToleranceMax(5.0); + + U_UM.send(cas_RRC_ConnRelDCCH(utran_CellDedicated, + tsc_RB1, + cs_108_RRC_ConnRelDCCH_r4(p_IntegrityCheckInfo, tsc_RRC_TI, p_N308))); + + U_UM.receive(car_RRC_ConnRelCmplUM(utran_CellDedicated, + tsc_RB1, + cr_108_RRC_ConnRelCmpl(tsc_RRC_TI))); + f_UTRAN_PreliminaryPass(__FILE__, __LINE__, ""); + + //UE sends RRC Connection Release Complete for N308 times + do { + t_WaitForRrcConRel.start; + alt { + [] t_WaitForRrcConRel.timeout { + f_UTRAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "Insufficient RRC Connection Release"); + return; + } + [] U_UM.receive(car_RRC_ConnRelCmplUM(utran_CellDedicated, + tsc_RB1, + cr_108_RRC_ConnRelCmpl(tsc_RRC_TI))) { + t_WaitForRrcConRel.stop; + v_K := v_K + 1; + } + } + } while (not (v_K == (p_N308 + 1))); + } + + /* + * @desc Generate authentication paramters and run the GMM Authentication procedure + * See 3GPP 24.008 / 4.7, 3GPP 33.102 / 6.3 and 3GPP 34.108 / 8 (for the computation of authentication paramters for Test USIM) + * See also the detailed description in test Step f_MM_Authentication, on which this test Step is based. + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_GMM_Authentication() runs on UTRAN_PTC + { + var UTRAN_SecurityInfo_Type v_SecurityInfo:= f_UTRAN_Security_Get(); + var Common_AuthenticationParams_Type v_Auth_Params := v_SecurityInfo.authKeys.AuthPS; + var RRC_DATA_IND v_RRC_DataInd; + var AUTHENTICATIONANDCIPHERINGRESPONSE v_AuthAndCipherResp; + var B32_Type v_AuthRES_High; + var bitstring v_AuthRES; + + v_Auth_Params := f_AuthenticationInit(v_Auth_Params); // modified by f_AuthenticationInit + v_SecurityInfo.authKeys.AuthPS := v_Auth_Params; + + // AUTHENTICATION AND CIPHERING REQUEST using relevant PS keys computed before: + U_Dc.send(cas_DataReq_PS(utran_CellDedicated, + tsc_RB3, + cs_U_AuthAndCiphReq(cs_GMM_AuthRAND(px_eAuthRAND), + cs_GMM_KeySeq(v_Auth_Params.KeySeq), + cs_GMM_AUTN(v_Auth_Params.AUTN)))); + alt { + // AUTHENTICATION AND CIPHERING RESPONSE including both Authentication Response paramters (RES and RES ext) + [] U_Dc.receive(car_PS_UplinkDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_AuthAndCiphRsp(cr_AuthRspAny, + cr_AuthCiphRspExtAny))) + -> value v_RRC_DataInd + { + v_AuthAndCipherResp := v_RRC_DataInd.msg.authenticationAndCipheringResponse; + v_AuthRES_High := v_AuthAndCipherResp.authRsp.rES; + v_AuthRES := v_AuthRES_High & v_AuthAndCipherResp.authRspExt.rES; + // Verify that the received Authentication Response parameters match expected response: + if (v_AuthRES != substr(v_Auth_Params.XRES, 0, lengthof(v_AuthRES))) { + f_UTRAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "Authentication Failed"); + } + } + // AUTHENTICATION AND CIPHERING RESPONSE including only one Authentication Response paramters (RES): + [] U_Dc.receive(car_PS_UplinkDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_AuthAndCiphRsp(cr_AuthRspAny, + omit))) + -> value v_RRC_DataInd + { + v_AuthAndCipherResp := v_RRC_DataInd.msg.authenticationAndCipheringResponse; + v_AuthRES_High := v_AuthAndCipherResp.authRsp.rES; + // Verify that the received Authentication Response parameters match expected response: + if (v_AuthRES_High != substr(v_Auth_Params.XRES, 0, lengthof(v_AuthRES_High))) { + f_UTRAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "Authentication Failed"); + } + } + // AUTHENTICATION AND CIPHERING Failure, then stop execution by assigning INCONCLUSIVE verdict as this might be a USIM issue. + [] U_Dc.receive(car_PS_UplinkDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_AuthAndCiphFailureAny)) { + FatalError(__FILE__, __LINE__, "received AUTHENTICATION_AND_CIPHERING_FAILURE"); + } + } + f_UTRAN_Security_Set(v_SecurityInfo); + } + + /* @desc Function used to perform MM Authentication in UTRAN + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_MM_Authentication() runs on UTRAN_PTC + { + var RRC_DATA_IND v_RRC_DataInd; + var AuthRsp v_AuthRsp; + var AuthRspExt v_AuthRspExt; + var bitstring v_AuthRES; + var B32_Type v_AuthRES_High; + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + var Common_AuthenticationParams_Type v_CommonAuthParams := f_AuthenticationInit(v_SecurityInfo.authKeys.AuthPS); + + // @sic R5s110318 sic@ + v_SecurityInfo.authKeys.AuthCS.CKey := v_CommonAuthParams.CK; + v_SecurityInfo.authKeys.AuthCS.IKey := v_CommonAuthParams.IK; + v_SecurityInfo.authKeys.AuthCS.CKeySeq := v_CommonAuthParams.KeySeq; + f_UTRAN_Security_Set(v_SecurityInfo); + + U_Dc.send(cas_DataReq_CS(utran_CellDedicated, + tsc_RB3, + cs_U_AuthReq(v_SecurityInfo.authKeys.AuthCS.CKeySeq, + v_CommonAuthParams.RandValue, + cs_GSM_AUTN(v_CommonAuthParams.AUTN)))); + + alt { + //Receive Authentication Response with extension + [] U_Dc.receive(car_UplinkDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_AuthRspAnyExt)) -> value v_RRC_DataInd + { + v_AuthRsp := v_RRC_DataInd.msg.authenticationResponse.authRsp; + v_AuthRspExt := v_RRC_DataInd.msg.authenticationResponse.authRspExt; + + //First 32 bits of XRES correspond to AuthRsp and remaining bits correspond to AuthRspExt. + //So instead of checking the AuthRsp and AuthRspExt separately,the 2 strings are concatenated and compared against XRES. + v_AuthRES_High := v_AuthRsp.rES; + v_AuthRES := v_AuthRES_High & v_AuthRspExt.rES; + + //Bitwaise XOR of XRES and v_AuthRES should result in all zeroes which implies that the 2 bitstrings should match exactly. + if (v_AuthRES != substr(v_CommonAuthParams.XRES, 0, lengthof(v_AuthRES))) { + f_UTRAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "Received incorrect authentication parameters"); + } + } + + //Receive Authentication Response without extension + [] U_Dc.receive(car_UplinkDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_AuthRspAnyNoExt)) -> value v_RRC_DataInd + { + v_AuthRsp := v_RRC_DataInd.msg.authenticationResponse.authRsp; + v_AuthRES_High := v_AuthRsp.rES; + + //Bitwise XOR of XRES and v_AuthRES should result in all zeroes which implies that the 2 bitstrings should match exactly. + if (v_AuthRES_High != substr(v_CommonAuthParams.XRES, 0, lengthof(v_AuthRES_High))) { + f_UTRAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "Received incorrect authentication parameters"); + } + } + + [] U_Dc.receive(car_UplinkDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_AuthFailAny)) + { + f_UTRAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "Authentication failure received"); + } + } + } + + /* + * @desc To be called after UTRA_Init, before the test case body for every test that doesn't start in UTRAN. + * This will wait until Preamble is finished on EUTRA and it has received the AuthParams + * These are then stored in SecurityInfo + * This will send the parameters to the EUTRA PTC + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_UTRAN_InterRAT_InitialiseAuthParams() runs on UTRAN_PTC + { + f_UTRAN_InterRAT_InitialiseAuthParams_Common(EUTRA); + } + + /* + * @desc To be called after UTRA_Init, before the test case body for every test that doesn't start in UTRAN. + * This will wait until Preamble is finished on EUTRA and it has received the AuthParams + * These are then stored in SecurityInfo + * @param p_Port + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_UTRAN_InterRAT_InitialiseAuthParams_Common(IRAT_CO_ORD_PORT p_Port) runs on UTRAN_PTC + { + var IRAT_Coordination_MSG v_RxdMsg; + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + var bitstring v_CipheringAlgCap := '0000000000000001'B; // default support + var bitstring v_IntAlgCap := '0000000000000010'B; // default support + + p_Port.receive(cmr_IRAT_AuthInfo) -> value v_RxdMsg; // @sic R5s120568 sic@ + + v_SecurityInfo.authKeys.AuthPS := v_RxdMsg.Authentication.AuthPS; + if (isvalue(v_RxdMsg.Authentication.StartPS)) { // @sic R5-120764 sic@ + v_SecurityInfo.start_PS := v_RxdMsg.Authentication.StartPS; + } + if (isvalue(v_RxdMsg.Authentication.StartCS)) { // @sic R5-120764 sic@ + v_SecurityInfo.start_CS := v_RxdMsg.Authentication.StartCS; + } + //@sic R5-120637 enhancements for SRVCC sic@ + if (isvalue(v_RxdMsg.Authentication.AuthCS)) { + v_SecurityInfo.authKeys.AuthCS.CKey := v_RxdMsg.Authentication.AuthCS.CK; + v_SecurityInfo.authKeys.AuthCS.IKey := v_RxdMsg.Authentication.AuthCS.IK; + v_SecurityInfo.authKeys.AuthCS.CKeySeq:= v_RxdMsg.Authentication.AuthCS.KeySeq; + } + + if (isvalue (v_RxdMsg.Authentication.UEACap)) { // @sic R5s130506 sic@ + v_CipheringAlgCap[13] := v_RxdMsg.Authentication.UEACap.Uea2; + v_CipheringAlgCap[14] := v_RxdMsg.Authentication.UEACap.Uea1; + // Now update the stored values + v_SecurityInfo.cipheringAlgorithmCapability := v_CipheringAlgCap; + } + + if (isvalue (v_RxdMsg.Authentication.UIACap)) { // @sic R5s130680, R5s130851 sic@ + v_IntAlgCap[13] := v_RxdMsg.Authentication.UIACap.Uia2; + v_IntAlgCap[14] := v_RxdMsg.Authentication.UIACap.Uia1; + // Now update the stored values + v_SecurityInfo.integrProtAlgCap := v_IntAlgCap; + } + + f_UTRAN_Security_Set(v_SecurityInfo); + } + + /* + * @desc This procedure expects both an RAU and a LAU (i.e. when in NMO2) + * @param p_CellId + * @param p_NoSecurityAfterHO (default value: false) - only set to true in HO test cases @sic R5s110382 sic@ + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_UTRAN_Interleaved_RauLau(UTRAN_CellId_Type p_CellId, + boolean p_NoSecurityAfterHO := false) runs on UTRAN_PTC + { + var RRC_DATA_IND v_RRC_DataInd_RAU, v_RRC_DataInd_LAU; + var B3_Type v_UpdateType_Ra := '000'B; + var octetstring v_PLMN := f_U_Asn2Nas_PlmnId(f_UTRAN_CellInfo_GetPLMNIdentity(p_CellId)); + var octetstring v_LAC := f_UTRAN_CellInfo_GetLAC(p_CellId); + var octetstring v_RAC := f_UTRAN_CellInfo_GetRAC(p_CellId); + var START_Value v_RAU_START_Value := '00000000000000000000'B; + var START_Value v_LAU_START_Value := '00000000000000000000'B; + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + + interleave { + //Step 1c1: Receive Routing Area Update Request message with update type 'RA Update' + [] U_Dc.receive(car_PS_InitDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_RA_UpdReqAny(cr_GMM_UpdateType(?, v_UpdateType_Ra), + cr_RAI(omit), + cr_PTMSI_SignatureAny ifpresent, + ?))) -> value v_RRC_DataInd_RAU {} //FFS - Could KeySeq be derived from Security/Cell info? + //Step 1c6: Wait for Location Updating Request message + [] U_Dc.receive(car_InitDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_LocationUpdatingRequest)) -> value v_RRC_DataInd_LAU {} + } + + // Store flag to be sent to LTE later; @sic R5-110746 sic@ + v_SecurityInfo.authKeys.CSinOtherRAT := true; + f_UTRAN_Security_Set(v_SecurityInfo); + + v_RAU_START_Value := v_RRC_DataInd_RAU.ttcn_start; + v_LAU_START_Value := v_RRC_DataInd_LAU.ttcn_start; + + if (not p_NoSecurityAfterHO) { + //Continue with the Routing Area Update Procedure + //Step 1c2-1c3: SECURITY MODE COMMAND and SECURITY MODE COMPLETE + f_UTRAN_SS_SecurityDownloadStart(ps_domain, v_RAU_START_Value); + f_UTRAN_RRC_Security(p_CellId, false, ps_domain); + } + //Step 1c4: Send ROUTING AREA UPDATE ACCEPT + U_Dc.send(cas_DataReq_PS(p_CellId, tsc_RB3, cs_U_RA_UpdAcc3(cs_GMM_UpdateResult(v_UpdateType_Ra), + cs_RAI(omit, + cs_LAI(omit, v_PLMN, v_LAC), + v_RAC), + cs_PTMSI_Signature(px_PTMSI_SigDef), + cs_MobileIdTMSIorPTMSI('18'O, px_PTMSI_Def), + v_RRC_DataInd_RAU.msg.routingAreaUpdateRequest.pDP_ContextStatus))); // @sic R5-133584 sic@ + + // Step 1c5: Receive ROUTING AREA UPDATE COMPLETE + U_Dc.receive(car_PS_InitDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_RAUpdComplete)); + + //Then do the Location Updating Procedure + //Step 1c7-1c8: SECURITY MODE COMMAND and SECURITY MODE COMPLETE + f_UTRAN_SS_SecurityDownloadStart(cs_domain, v_LAU_START_Value); + f_UTRAN_RRC_Security(p_CellId, false, cs_domain); + + //Step 1c9: Transmits a LOCATION UPDATING ACCEPT message + U_Dc.send(cas_DataReq_CS(utran_CellDedicated, + tsc_RB3, + cs_U_LocUpdAcpTMSI(v_PLMN, v_LAC))); + + //Step 1c10: Receive TMSI Reallocation Complete + U_Dc.receive(car_InitDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_TMSI_ReallocCmpl)); + } + + /* + * @desc Performs Routing Area Update after a PS Handover from EUTRA to UTRAN has been performed, i.e. + * to bring UE from UTRA handover (U3) state to UTRA connected (U2) state. + * This procedure is according to 36.523-3 cl. 10.1.4 PS Routing Area Update procedure + * @param p_CellId + * @param p_AttachType + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_UTRAN_PS_RAU_HO(UTRAN_CellId_Type p_CellId, + UTRAN_GERAN_ATTACH_Type p_AttachType) runs on UTRAN_PTC + { + var B2_Type v_Nmo := f_UTRAN_CellInfo_GetNMO(p_CellId); + var UTRA_POSTAMBLE_CONDITIONS v_Utra_Postamble_Condition := f_UTRA_SetPostambleCondition(p_AttachType); // @sic R5s110176 sic@ + + //Step 1c1 - 1c10: Perform Routing Area procedure and Location Updating procedure for the scenario + // - NMO2 and (C1 or C3) + if (v_Nmo == tsc_NMO_II and ((v_Utra_Postamble_Condition == UTRA_C1) or (v_Utra_Postamble_Condition == UTRA_C3))) { + f_UTRAN_Interleaved_RauLau(p_CellId, true); // @sic R5s110382 sic@ + } + //Step 1a1-1a5 & 1b1-1b5 Routing Area Update/Combined Routing Area Update procedure for the scenarios + // - NMO1 and (C1 or C3) + // - (NMO1 or NMO2) and (C2 or C3) + else { + f_UTRAN_GMM_RAU_MappedContext(p_CellId, true); // @sic R5s110382 sic@ + } + } + + /* + * @desc Disconnects an active CC call. To bring UE from UTRA CS call (U5) state to UTRA connected (U2) state. + * This procedure is according to 36.523-3 cl. 10.1.3 (CC disconnect procedure) + * @param p_CellId + * @param p_TI_S (default : cs_TI_MO) @sic R5s110547, R5s110580 sic@ + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CC_Disconnect(UTRAN_CellId_Type p_CellId, //Currently not needed but kept for any future extension + template (value) TI p_TI_S:= cs_TI_MO) runs on UTRAN_PTC + { // @sic R5s140611 sic@ + // Step 1: Transmit Downlink Direct Transfer with a Disconnect message + U_Dc.send(cas_DataReq_CS(utran_CellDedicated, tsc_RB3, cs_U_Disconnect(p_TI_S))); // @sic R5s110547 sic@ + + // Step 2: Receive Uplink Direct Transfer with a Release message + U_Dc.receive(car_UplinkDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_Rel(cr_TI_Any))); + + // Step 3: Transmit Downlink Direct Transfer with a Release Complete message + U_Dc.send(cas_DataReq_CS(utran_CellDedicated, tsc_RB3, cs_U_RelCmpl(p_TI_S))); // @sic R5s110547 sic@ + } + + /* + * @desc Function to set the postamble conditions based on the UTRA CS/PS domain support + * and the LTE UE Attach type. According to 36.523-3 Table 10.1-1 + * @param p_AttachType + * @return UTRA_POSTAMBLE_CONDITIONS + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRA_SetPostambleCondition(UTRAN_GERAN_ATTACH_Type p_AttachType) return UTRA_POSTAMBLE_CONDITIONS + { + var boolean v_IsCombined := f_UTRAN_AttachTypeCheck(p_AttachType); // @sic R5s110176 sic@ + var UTRA_POSTAMBLE_CONDITIONS v_UTRA_POSTAMBLE_CONDITION := UTRA_C1; + + if (v_IsCombined) {//combined attach case + if (pc_CS and pc_PS) { + v_UTRA_POSTAMBLE_CONDITION := UTRA_C3; + } + else if (pc_CS and (not pc_PS)) { + v_UTRA_POSTAMBLE_CONDITION := UTRA_C4; + } + } + else {//attach case + if (pc_PS and (not pc_CS)) { + v_UTRA_POSTAMBLE_CONDITION := UTRA_C2; + } + } + return v_UTRA_POSTAMBLE_CONDITION; + } + + /* + * @desc Copy of f_EUTRA_AttachTypeCheck. Checks the set parameters pc_Combined_Attach, pc_Attach & px_AttachTypeTested + * and returns a boolean (TRUE is attach is combined, false if attach is PS only) + * @param p_AttachType If the prose doesn't state that the UE is configured for a specific state, then set to NotSpecified + * @return boolean + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_AttachTypeCheck(UTRAN_GERAN_ATTACH_Type p_AttachType) return boolean + { + var boolean v_IsCombined := false; + + select (p_AttachType) { // @sic R5s110176 sic@ + case (Combined) { + v_IsCombined := true; + } + case (PS_Only) { + v_IsCombined := false; + } + case (NotSpecified) { + if (pc_Combined_Attach) { + if (pc_Attach) { // So both set to true + if (px_AttachTypeTested == COMBINED_ATTACH) { // only now check the PIXIT value + v_IsCombined := true; + } + } else { // only combined set to true + v_IsCombined := true; + } + } else if (not pc_Attach) { // so neither set to true + f_SetVerdictInconc(__FILE__, __LINE__, "Neither pc_Attach nor pc_Combined_Attach set to true"); + } + } + } + return v_IsCombined; + } + + /* + * @desc Always to be used when just arrived from EUTRA and are NOT doing a new Authentication + * This function is according to 36.508 cl. 6.4.2.8 Test procedure to check that UE is camped on a new UTRAN cell (steps 4-10) + * @param p_CellId + * @param p_NoSecurityAfterHO (default value: false) - only set to true in HO test cases @sic R5s110382 sic@ + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_UTRAN_GMM_RAU_MappedContext(UTRAN_CellId_Type p_CellId, + boolean p_NoSecurityAfterHO := false) runs on UTRAN_PTC + { + f_UTRAN_GMM_RAU(p_CellId, false, p_NoSecurityAfterHO); + } + + /* + * @desc Performs the Routing Area Procedure (except receiving the RAU Request message). + * Execution of Authentication is dependent on input parameter p_DoAuth + * @param p_CellId + * @param p_START_Value + * @param p_UpdateType + * @param p_PDP_ContextStatus + * @param p_DoAuth (default value: true) + * @param p_NoSecurityAfterHO (default value: false) - only set to true in HO test cases + * @param p_FOP (default value: '1'B) + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_UTRAN_GMM_RAU_Without_RAUReq(UTRAN_CellId_Type p_CellId, + START_Value p_START_Value, + B3_Type p_UpdateType, + template (omit) PDP_ContextStatus p_PDP_ContextStatus, // @sic R5-133584 sic@ + boolean p_DoAuth := true, + boolean p_NoSecurityAfterHO := false, + B1_Type p_FOP := '1'B) runs on UTRAN_PTC + { + var octetstring v_PLMN := f_U_Asn2Nas_PlmnId(f_UTRAN_CellInfo_GetPLMNIdentity(p_CellId)); + var octetstring v_LAC := f_UTRAN_CellInfo_GetLAC(p_CellId); + var octetstring v_RAC := f_UTRAN_CellInfo_GetRAC(p_CellId); + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + var template (value) RRCDataReqType v_RAU_Accept; + + if (not p_NoSecurityAfterHO) { // @sic R5s110216 sic@ + f_UTRAN_SS_SecurityDownloadStart(ps_domain, p_START_Value); + } + + // Store flag to be sent to LTE later; @sic R5-110746 sic@ + if (p_UpdateType == tsc_I_UpdateTypeCombinedWithIMSI or p_UpdateType == tsc_I_UpdateTypeCombined) { + v_SecurityInfo.authKeys.CSinOtherRAT := true; + f_UTRAN_Security_Set(v_SecurityInfo); + } + + if (p_DoAuth) { + f_UTRAN_GMM_Authentication(); + } + + if (not p_NoSecurityAfterHO) { // @sic R5s110216, R5s120951 sic@ + f_UTRAN_RRC_Security(p_CellId, // SECURITY MODE COMMAND, SECURITY MODE COMPLETE + p_DoAuth, + ps_domain); + } + v_RAU_Accept := cs_U_RA_UpdAcc3(cs_GMM_UpdateResult(p_UpdateType), + cs_RAI(omit, + cs_LAI(omit, v_PLMN, v_LAC), + v_RAC), + cs_PTMSI_Signature(px_PTMSI_SigDef), + cs_MobileIdTMSIorPTMSI('18'O, px_PTMSI_Def), + p_PDP_ContextStatus); // @sic R5-133584 sic@ + v_RAU_Accept.routingAreaUpdateAccept.updateResult.fOP := p_FOP; // @sic R5-142978 sic@ + U_Dc.send(cas_DataReq_PS(utran_CellDedicated, + tsc_RB3, + v_RAU_Accept)); + + U_Dc.receive(car_PS_UplinkDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_RAUpdComplete)); + } + + /* + * @desc This function is according to 36.508 cl. 6.4.2.8 with the exception that when p_DoAuth is set to true + * the function also performs Authentication procedure + * @param p_CellId + * @param p_DoAuth (default value: true) + * @param p_NoSecurityAfterHO (default value: false) - only set to true in HO test cases + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_UTRAN_GMM_RAU(UTRAN_CellId_Type p_CellId, + boolean p_DoAuth := true, + boolean p_NoSecurityAfterHO := false) runs on UTRAN_PTC + { + var START_Value v_START_Value := '00000000000000000000'B; + var B3_Type v_UpdateType := '000'B; + var RRC_DATA_IND v_RRC_DataInd; + var PDP_ContextStatus v_PDP_ContextStatus; + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + var template (present) RRCDataIndType v_RAU := cr_U_RA_UpdReqAny(cr_GMM_UpdateType(?, (tsc_I_UpdateTypeRAOnly, tsc_I_UpdateTypeCombined, tsc_I_UpdateTypeCombinedWithIMSI)), // @sic R5s120776 sic@ + cr_RAI(omit), + cr_PTMSI_SignatureAny ifpresent, + ?); + + alt { + [] U_Dc.receive(car_PS_InitDirectTransfer(utran_CellDedicated, + tsc_RB3, + v_RAU)) // @sic R5s110216 sic@ + -> value v_RRC_DataInd {} + [] U_Dc.receive(car_PS_UplinkDirectTransfer(utran_CellDedicated, + tsc_RB3, + v_RAU)) // @sic R5s110216 sic@ + -> value v_RRC_DataInd {} + } + + if (p_DoAuth) { // @sic R5s120141 sic@ + v_START_Value := '00000000000000000000'B; + } else if (ispresent(v_RRC_DataInd.ttcn_start)) { + v_START_Value := v_RRC_DataInd.ttcn_start; + } else { + v_START_Value := v_SecurityInfo.start_PS; // current value. If not previously set, default value is all zeros + } + if (not p_NoSecurityAfterHO) { // @sic R5s110216 sic@ + f_UTRAN_SS_SecurityDownloadStart(ps_domain, v_START_Value); + } + v_UpdateType := f_UG_RauReq_GetUpdateValueForRauAcc(v_RRC_DataInd.msg.routingAreaUpdateRequest); /* @sic R5s120019 Additional Changes sic@ */ + v_PDP_ContextStatus := v_RRC_DataInd.msg.routingAreaUpdateRequest.pDP_ContextStatus; + f_UTRAN_GMM_RAU_Without_RAUReq(p_CellId, v_START_Value, v_UpdateType, v_PDP_ContextStatus, p_DoAuth, p_NoSecurityAfterHO); // @sic R5-133584 sic@ + } + + /* + * @desc To release RRC connection to be used in cases where the UE has been switched off + * @param p_CellId + * @param p_RRC_RelStatus + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_UTRAN_RRC_ConnRel_AfterSwitchOff(UTRAN_CellId_Type p_CellId, + RRC_Rel_Status p_RRC_RelStatus) runs on UTRAN_PTC + { + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + var integer v_N308 := 1; // Maximum number of retransmissions of the RRC CONNECTION RELEASE COMPLETE message. + var integer i := 0; + timer t_WaitForReply := f_UG_SetTimerToleranceMax(1.0); + + f_Delay(1.0); + + if (p_RRC_RelStatus == cell_Dch) { + U_UM.send(cas_RRC_ConnRelDCCH(utran_CellDedicated, + tsc_RB1, + cs_108_RRC_ConnRelDCCH_r4(v_SecurityInfo.dl_IntegrityCheckInfo, tsc_RRC_TI, v_N308))); + for (i := 0; i < (v_N308 + 1); i := i + 1) { + t_WaitForReply.start; + alt { + [] t_WaitForReply.timeout {} // UE may not send the Release Complete + [] U_UM.receive(car_RRC_ConnRelCmplUM(utran_CellDedicated, + tsc_RB1, + cr_108_RRC_ConnRelCmpl(tsc_RRC_TI))) + { + t_WaitForReply.stop; + } + } + } + } else if (p_RRC_RelStatus == cell_Fach_Dcch) { + U_UM.send(cas_RRC_ConnRelDCCH(utran_CellDedicated, + tsc_RB1, + cs_108_RRC_ConnRelDCCH_r4(v_SecurityInfo.dl_IntegrityCheckInfo, tsc_RRC_TI))); + t_WaitForReply.start; + alt { + [] t_WaitForReply.timeout {} // UE may not send the Release Complete + [] U_AM.receive(car_RLC_Data_Ind(utran_CellDedicated, + tsc_RB2, + cr_108_RRC_ConnRelCmpl(tsc_RRC_TI))) + { + t_WaitForReply.stop; + f_Delay(1.0); + } + } + + } else if (p_RRC_RelStatus == cell_Fach_Ccch) { + U_UM.send(cas_RRC_ConnRelCCCH(p_CellId, + tsc_RB0, + cs_108_RRC_ConnRelCCCH_r5(cs_U_RNTI_Def, tsc_RRC_TI))); + } else { + FatalError(__FILE__, __LINE__, "invalid configuration"); + } + + // TO DO - Implement DPCH re-configuration + f_UTRAN_RestartCRLC_ForNextConnection(p_CellId); + f_UTRAN_SS_ResetSecurityKey(); + } + + /* + * @desc Perform the Location Updating procedure including activation of Security + * @param p_CellId + * @param p_DoAuth (default value: false) + * @param p_LocAcceptType (default value: TMSI) + * @status APPROVED (LTE_A, LTE_IRAT, POS) + */ + function f_UTRAN_LocationUpdate(UTRAN_CellId_Type p_CellId, + boolean p_DoAuth := false, + LOCATION_UPDATE_ACCEPT_TYPE p_LocAcceptType := TMSI) runs on UTRAN_PTC + { + var START_Value v_START_Value := '00000000000000000000'B; + var RRC_DATA_IND v_RRC_DataInd; + + //Receive Location Updating Request message + U_Dc.receive(car_InitDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_LocationUpdatingRequest)) -> value v_RRC_DataInd; + v_START_Value := v_RRC_DataInd.ttcn_start; + f_UTRAN_LocationUpdate_WithoutLAUReq(p_CellId, v_START_Value, p_DoAuth, p_LocAcceptType); + } + + type enumerated LOCATION_UPDATE_ACCEPT_TYPE {TMSI, IMSI, NONE}; /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + /* + * @desc Perform the Location Updating procedure including activation of Security, after the LAU + * @param p_CellId + * @param p_START_Value (default value: '00000000000000000000'B) + * @param p_DoAuth (default value: false) + * @param p_LocAcceptType (default value: TMSI) @sic R5-112706 sic@ + * @param p_EPLMN (default value: omit) + * @status APPROVED (LTE_A, LTE_IRAT, POS) + */ + function f_UTRAN_LocationUpdate_WithoutLAUReq(UTRAN_CellId_Type p_CellId, + START_Value p_START_Value := '00000000000000000000'B, + boolean p_DoAuth := false, + LOCATION_UPDATE_ACCEPT_TYPE p_LocAcceptType := TMSI, + template (omit) PLMN_List p_EPLMN := omit) //@sic R5-134916 sic@ + runs on UTRAN_PTC + { /* @sic R5-1100755 sic@ */ + var octetstring v_PLMN := f_U_Asn2Nas_PlmnId(f_UTRAN_CellInfo_GetPLMNIdentity(p_CellId)); + var octetstring v_LAC := f_UTRAN_CellInfo_GetLAC(p_CellId); + var boolean v_NewKeyFlag := false;//No new key generation + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + var template (value) MobileIdentity v_MobileIdIMSI := f_Imsi2MobileIdentity(px_IMSI_Def); + v_MobileIdIMSI.iei := '17'O; // Need to include iei in LUAccept, but function returns without iei @sic R5s120799 sic@ + + // Store flag to be sent to LTE later; @sic R5-110746 sic@ + v_SecurityInfo.authKeys.CSinOtherRAT := true; + f_UTRAN_Security_Set(v_SecurityInfo); + + f_UTRAN_SS_SecurityDownloadStart(cs_domain, p_START_Value); + + if (p_DoAuth) { + f_UTRAN_MM_Authentication(); + v_NewKeyFlag := true; + } + + //Send SECURITY MODE COMMAND and receive SECURITY MODE COMPLETE + f_UTRAN_RRC_Security(p_CellId, v_NewKeyFlag, cs_domain); + + //Send Location Updating Accept message + select (p_LocAcceptType) { // @sic R5-112706 sic@ + case (TMSI) { + U_Dc.send(cas_DataReq_CS(utran_CellDedicated, tsc_RB3, cs_U_LocUpdAcpTMSI(v_PLMN, v_LAC, p_EPLMN))); + //Receive TMSI Reallocation Complete + U_Dc.receive(car_UplinkDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_TMSI_ReallocCmpl)); // @sic R5s110594 sic@ + } + case (IMSI) { + U_Dc.send(cas_DataReq_CS(utran_CellDedicated, tsc_RB3, cs_U_LocUpdAcpIMSI(v_PLMN, v_LAC, v_MobileIdIMSI, p_EPLMN))); + } + case (NONE) { + U_Dc.send(cas_DataReq_CS(utran_CellDedicated, tsc_RB3, cs_U_LocUpdAcp_NoMobId(v_PLMN, v_LAC, p_EPLMN))); + } + } + } + + /* + * @desc To check the UE doesn't attach on the specified cell, within the given time + * @param p_CellId + * @param p_Wait + * @param p_StepNo + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_CheckNoAttachOnCell(UTRAN_CellId_Type p_CellId, + float p_Wait, + charstring p_StepNo) runs on UTRAN_PTC + { + var RLC_TR_DATA_IND v_RLC_TR_DATA_IND; + + timer t_Wait := f_UG_SetTimerToleranceMin(p_Wait); + + t_Wait.start; + alt { + [] U_TM.receive(car_RRC_ConnReq(p_CellId, + tsc_RB0, + cr_108_RRC_ConnReq_r8(?))) + -> value v_RLC_TR_DATA_IND + { + f_UTRAN_SetVerdictFailOrInconc(__FILE__, __LINE__, p_StepNo); + } + [] t_Wait.timeout {} + } + } // f_UTRAN_CheckNoAttachOnCell + + + /* + * @desc Check that during p_TimerVal, no RRC-Data-Ind is received + * @param p_TimerVal + * @param p_LogMsg (default value: "") + * @status APPROVED (UTRAN) + */ + function f_UTRAN_CheckNoDataInd(float p_TimerVal, + charstring p_LogMsg := "") runs on UTRAN_PTC + { + timer t_Timer := p_TimerVal; + + t_Timer.start; + + alt { + [] t_Timer.timeout { + f_UTRAN_PreliminaryPass(__FILE__, __LINE__, p_LogMsg); + } + [] U_Dc.receive(cr_RRC_DATA_IND_Any) { + t_Timer.stop; + f_UTRAN_SetVerdictFailOrInconc(__FILE__, __LINE__, p_LogMsg); + } + } + } + + /* + * @desc Function to configure ciphering for configured RBs in cell p_CellId before HO to UTRAN. @sic R5s110216 sic@ + * @param p_CellId + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_ConfigureCipheringBeforeHO(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + var RB_ConfigType v_CellConfig := f_UTRAN_CellInfo_GetConfigType(p_CellId); + var template (value) RB_ActivationTimeInfoList v_RB_ActivationTimeInfoList := cs_RB_ActTimeInfoListSRBs(0, 0, 0, 0); + var RLC_SequenceNumber v_RLC_SN_RB1, v_RLC_SN_RB2, v_RLC_SN_RB3, v_RLC_SN_RB4, v_RLC_SN_RAB; + //@sic R5s131013 sic@ + /* if (v_SecurityInfo.start_PS == '11111111111111111111'B) { + FatalError(__FILE__, __LINE__, "invalid PS Start Value"); + } */ + f_UTRAN_SS_SecurityDownloadStart(ps_domain, v_SecurityInfo.start_PS); + + v_SecurityInfo.dL_CipherMode := valueof(cs_CipheringModeCmdOn(px_UTRAN_CipheringAlgorithm)); + v_SecurityInfo.ps_cipheringStarted := true; + v_SecurityInfo.recentSecureDomain := ps_domain; + + f_UTRAN_Security_Set(v_SecurityInfo); + f_UTRAN_SS_DownloadSecurityKey(p_CellId, ps_domain); + + v_RLC_SN_RB1 := f_UTRAN_CRLC_SequenceNumber_GetCount_C_LSB_DL(tsc_RB1); + v_RLC_SN_RB2 := f_UTRAN_CRLC_SequenceNumber_GetCount_C_LSB_DL(tsc_RB2); + v_RLC_SN_RB3 := f_UTRAN_CRLC_SequenceNumber_GetCount_C_LSB_DL(tsc_RB3); + v_RLC_SN_RB4 := f_UTRAN_CRLC_SequenceNumber_GetCount_C_LSB_DL(tsc_RB4); + + // @sic R5s130558 sic@ + f_UTRAN_ActivateCiphering_RLC_DL_SS_RB_1_2_3_4(p_CellId, v_SecurityInfo.recentSecureDomain, v_SecurityInfo.dL_CipherMode, v_RLC_SN_RB1, v_RLC_SN_RB2, v_RLC_SN_RB3, v_RLC_SN_RB4); + + if (v_SecurityInfo.recentSecureDomain == ps_domain) { + select (v_CellConfig) { + case (cell_DCH_64kPS_RAB_SRB, cell_Four_DTCH_PS_CS) { + v_RLC_SN_RAB := f_UTRAN_CRLC_SequenceNumber_GetCount_C_LSB_DL(tsc_RB20); + v_RB_ActivationTimeInfoList := cs_RB_ActTimeInfoListSRBs_20(0, 0, 0, 0, v_RLC_SN_RAB); + f_UTRAN_CRLC_DL_CipherCfgRB(p_CellId, v_SecurityInfo.recentSecureDomain, v_SecurityInfo.dL_CipherMode, v_CellConfig, false); //@sic R5s120113 sic@ + } + case (cell_DCH_64kPS_AM_RAB) { //@sic R5s140400 sic@ + v_RLC_SN_RAB := f_UTRAN_CRLC_SequenceNumber_GetCount_C_LSB_DL(tsc_RB20); + v_RB_ActivationTimeInfoList := cs_RB_ActTimeInfoListSRBs_22(0, 0, 0, 0, v_RLC_SN_RAB); + f_UTRAN_CRLC_DL_CipherCfgRB(p_CellId, v_SecurityInfo.recentSecureDomain, v_SecurityInfo.dL_CipherMode, v_CellConfig, false); //@sic R5s120113 sic@ + } + case (cell_DCH_E_HS, cell_E_HS, cell_DCH_HS_DSCH, cell_DCH_dlSRB_E_HS) { // @sic R5s110788 sic@ + v_RLC_SN_RAB := f_UTRAN_CRLC_SequenceNumber_GetCount_C_LSB_DL(tsc_RB25); + v_RB_ActivationTimeInfoList := cs_RB_ActTimeInfoListSRBs_25(0, 0, 0, 0, v_RLC_SN_RAB); + f_UTRAN_CRLC_DL_CipherCfgRB(p_CellId, v_SecurityInfo.recentSecureDomain, v_SecurityInfo.dL_CipherMode, v_CellConfig, false); //@sic R5s120113 sic@ + } + } + } + + f_UTRAN_ActivateCiphering_RLC_UL(f_UTRAN_CellInfo_GetFDD_TDD(p_CellId), v_SecurityInfo.recentSecureDomain, v_RB_ActivationTimeInfoList); + } + + /* + * @desc Function to configure ciphering for configured RBs in cell p_CellId before SRVCC HO to UTRAN. @sic R5s110216 sic@ + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_UTRAN_ConfigureCipheringBeforeHO_SRVCC(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + var RB_ConfigType v_CellConfig := f_UTRAN_CellInfo_GetConfigType(p_CellId); + var template (value) RB_ActivationTimeInfoList v_RB_ActivationTimeInfoList := cs_RB_ActTimeInfoListSRBs(0, 0, 0, 0); + var RLC_SequenceNumber v_RLC_SN_RB1, v_RLC_SN_RB2, v_RLC_SN_RB3, v_RLC_SN_RB4, v_RLC_SN_RAB; + var UTRAN_CFN_Info_Type v_CfnInfo := f_CalculateActTime (p_CellId); + //@sic R5s131013 sic@ + /* if (v_SecurityInfo.start_CS == '11111111111111111111'B) { + FatalError(__FILE__, __LINE__, "invalid CS Start Value"); + } + if (v_SecurityInfo.start_PS == '11111111111111111111'B) { + FatalError(__FILE__, __LINE__, "invalid PS Start Value"); + } */ + + f_UTRAN_SS_SecurityDownloadStart(cs_domain, v_SecurityInfo.start_CS); + f_UTRAN_SS_SecurityDownloadStart(ps_domain, v_SecurityInfo.start_PS); + // PS ciphering if PS bearers are configured. //@sic R5s140259 sic@ + + select (v_CellConfig) { + case (cell_Four_DTCH_PS_CS) { + f_UTRAN_SS_DownloadSecurityKey(p_CellId, ps_domain); + v_RLC_SN_RAB := f_UTRAN_CRLC_SequenceNumber_GetCount_C_LSB_DL(tsc_RB20); + + v_RB_ActivationTimeInfoList := cs_RB_ActTimeInfoList20(v_RLC_SN_RAB); + f_UTRAN_CRLC_DL_CipherCfgRB(p_CellId, ps_domain, v_SecurityInfo.dL_CipherMode, v_CellConfig, false); //@sic R5s120113 sic@ + + f_UTRAN_ActivateCiphering_RLC_UL(f_IRAT_GetUTRAN_FDD_TDD_Mode(), ps_domain, v_RB_ActivationTimeInfoList); + } + } + v_SecurityInfo.dL_CipherMode := valueof(cs_CipheringModeCmdOn(px_UTRAN_CipheringAlgorithm)); + v_SecurityInfo.cs_cipheringStarted := true; + v_SecurityInfo.recentSecureDomain := cs_domain; + + f_UTRAN_Security_Set(v_SecurityInfo); + f_UTRAN_SS_DownloadSecurityKey(p_CellId, cs_domain); + + + v_RLC_SN_RB1 := f_UTRAN_CRLC_SequenceNumber_GetCount_C_LSB_DL(tsc_RB1); + v_RLC_SN_RB2 := f_UTRAN_CRLC_SequenceNumber_GetCount_C_LSB_DL(tsc_RB2); + v_RLC_SN_RB3 := f_UTRAN_CRLC_SequenceNumber_GetCount_C_LSB_DL(tsc_RB3); + v_RLC_SN_RB4 := f_UTRAN_CRLC_SequenceNumber_GetCount_C_LSB_DL(tsc_RB4); + + f_UTRAN_ActivateCiphering_RLC_DL_SS_RB_1_2_3_4(p_CellId, v_SecurityInfo.recentSecureDomain, v_SecurityInfo.dL_CipherMode, v_RLC_SN_RB1, v_RLC_SN_RB2, v_RLC_SN_RB3, v_RLC_SN_RB4); + + // UL Ciphering for SRB's using CS domain + v_RB_ActivationTimeInfoList := cs_RB_ActTimeInfoListSRBs(0,0,0,0); + f_UTRAN_ActivateCiphering_RLC_UL(f_UTRAN_CellInfo_GetFDD_TDD(p_CellId), cs_domain, v_RB_ActivationTimeInfoList); + + // Start Ciphering in MAC for CS TM bearers + f_UTRAN_CMAC_SecurityMode_Config(cs_domain, + v_SecurityInfo.start_CS, + v_SecurityInfo.authKeys.AuthCS.CKey); + + f_UTRAN_CMAC_UL_DL_CipherCfg(p_CellId, + v_SecurityInfo.dL_CipherMode, + v_CfnInfo.actTime , + notInc); + + } + + /* + * @desc Function to configure integrity for configured RBs in cell p_CellId after completed HO to UTRAN. + * i.e. after TTCN has received the HANDOVER TO UTRAN COMPLETE message @sic R5s110216 sic@ + * @param p_CellId + * @param p_Domain (default value: ps_domain) + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_UTRAN_ConfigureIntegrityAfterHO(UTRAN_CellId_Type p_CellId, + CN_DomainIdentity p_Domain := ps_domain) runs on UTRAN_PTC + { //@sic R5-120637 enhancements for integrity in CS domain sic@ + var RB_ConfigType v_CellConfig := f_UTRAN_CellInfo_GetConfigType(p_CellId); + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + var template (value) RB_ActivationTimeInfoList v_RB_ActivationTimeInfoList; + var START_Value v_Start_Value; + var UTRAN_CFN_Info_Type v_CFN_Info := f_CalculateActTime(p_CellId); + var ActivationTime v_IntActTime := v_CFN_Info.actTime; // @sic R5s120831 sic@ + + if (p_Domain == cs_domain) { + v_Start_Value := v_SecurityInfo.start_CS; + } + else{ + v_Start_Value := v_SecurityInfo.start_PS; + } + //@sic R5s140335 sic@ + + f_UTRAN_SS_SecurityDownloadStart(p_Domain, v_Start_Value); + + v_SecurityInfo.recentSecureDomain := p_Domain; + v_SecurityInfo.integrityStarted := true; + if (px_UTRAN_CipheringAlgorithm == uea2) { + v_SecurityInfo.dL_Integrity := valueof(cs_IntegrityProtectStart(px_FRESH, uia2)); + } else { + v_SecurityInfo.dL_Integrity := valueof(cs_IntegrityProtectStart(px_FRESH, uia1)); + } + v_SecurityInfo.dl_IntegrityCheckInfo := valueof(cs_IntegrityCheckInfo0); + + // ActivateSecurity_DL_SS: + f_UTRAN_SetDL_RRC_MessageSN(utran_CellDedicated); + f_UTRAN_CRLC_IntegrityActivate(cas_CRLC_DL_IntegrityActivateReq(utran_CellDedicated, + v_SecurityInfo.recentSecureDomain, + v_SecurityInfo.dL_Integrity)); + f_UTRAN_CRLC_IntegrityActivate(cas_CRLC_UL_IntegrityActivateReq(utran_CellDedicated, + v_SecurityInfo.recentSecureDomain, + cs_RB2_IntegrityProtActivationInfoList(0))); + v_RB_ActivationTimeInfoList := cs_RB_ActTimeInfoListSRBs(0, 0, 0, 0); + v_SecurityInfo := fl_UTRAN_StartSecurityUE(p_CellId, + v_CellConfig, + v_SecurityInfo, + v_RB_ActivationTimeInfoList, + v_SecurityInfo.recentSecureDomain, + v_IntActTime, + true); // @sic R5s110382 sic@ + f_UTRAN_Security_Set(v_SecurityInfo); + } + + /* @desc Function that will send the UTRAN Mobility Information message and receive the UTRAN Mobility Information Confirm message + * @param p_CellId + * @param p_CNInfo (default value: cs_508_CNInfo) + * @param p_UtranMobilityInformation_v860ext2_Type (default value: omit) + * Can be used to specify a non default value for the field UTRANMobilityInformation_v860ext2_Type + * This is typically used when dedicated priority information and validity timer is sent to UE + * @param p_ReceiveConfirmMsg (default value: true) + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_UTRAN_MobilityInformation(UTRAN_CellId_Type p_CellId, + template (omit) CN_InformationInfoFull p_CNInfo := cs_508_CNInfo, //@sic R5s110519 sic@ + template (omit) UTRANMobilityInformation_v860ext2_Type p_UtranMobilityInformation_v860ext2_Type := omit, + boolean p_ReceiveConfirmMsg := true) runs on UTRAN_PTC + { + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + var U_RNTI v_U_RNTI := f_UTRAN_CellInfo_GetU_RNTI(p_CellId); + var C_RNTI v_C_RNTI := f_UTRAN_CellInfo_GetC_RNTI(p_CellId); + + U_AM.send(cas_RLC_Data_Req_NoCnf(utran_CellDedicated, // @sic R5s110386 sic@ + tsc_RB2, + cs_RRC_UtranMobilityInfo(v_SecurityInfo.dl_IntegrityCheckInfo, //IntegrityCheckInfo + tsc_RRC_TI, //RRC_TransactionIdentifier + omit, //IntegrityProtectionModeInfo_r7 + omit, //CipheringModeInfo_r7 + v_U_RNTI, //U_RNTI + v_C_RNTI, //C_RNTI + omit, //H_RNTI + cs_UEConnTimersConst, //UE_ConnTimersAndConstants_r5 + p_CNInfo, //CN_InformationInfoFull @sic R5s110519 sic@ + omit, //PLMN_Identity + omit, //URA_Identity + omit, //SupportChangeUECapab + omit, //DL_CounterSynchronisationInfo_r5 + omit, //UtranMobilityInformation_r7_add_ext + p_UtranMobilityInformation_v860ext2_Type))); //UTRANMobilityInformation_v860ext2_Type + + //Receive UTRAN MOBILITY INFORMATION CONFIRM message + if (p_ReceiveConfirmMsg) { + U_AM.receive(car_RLC_Data_Ind(utran_CellDedicated, // @sic R5s110386 sic@ + tsc_RB2, + cr_108_UTRAN_MobilityInfoCnf(tsc_RRC_TI))); + } + } + + //============================================================================================= + // PAGING TYPE 1 + /* + * @desc To Page the UE in the cs domain + * @param p_CellId + * @param p_PagCause + * @param p_Tmsi + * @status APPROVED (LTE_IRAT, POS, SSNITZ) + */ + function f_UTRAN_PageCS(UTRAN_CellId_Type p_CellId, + PagingCause p_PagCause, + B32_Type p_Tmsi) runs on UTRAN_PTC + { + f_UTRAN_CMAC_Pag1_Cfg(p_CellId); + U_TM.send(cas_PagingType1(p_CellId, tsc_RB_PCCH, cs_RRC_PagingType1(p_PagCause, cs_CN_PageUE_Identity_TMSI(p_Tmsi), cs_domain))); + } + + /* + * @desc To Page the UE + * @param p_CellId + * @param p_PagCause + * @param p_P_tmsi + * @status APPROVED (LTE_A, LTE_IRAT, UTRAN) + */ + function f_UTRAN_Page(UTRAN_CellId_Type p_CellId, + PagingCause p_PagCause, + B32_Type p_P_tmsi) runs on UTRAN_PTC + { + f_UTRAN_CMAC_Pag1_Cfg(p_CellId); + U_TM.send(cas_PagingType1(p_CellId, tsc_RB_PCCH, cs_RRC_PagingType1(p_PagCause, cs_CN_PageUE_Identity_P_TMSI(p_P_tmsi), ps_domain))); + } + + /* + * @desc Page for UE with IMSI + * @param p_CellId + * @param p_PagCause + * @param p_Domain + * @param p_IMSI + * @status + */ + function f_UTRAN_PageIMSI(UTRAN_CellId_Type p_CellId, + PagingCause p_PagCause, + CN_DomainIdentity p_Domain, + hexstring p_IMSI := px_IMSI_Def) runs on UTRAN_PTC + { + f_UTRAN_CMAC_Pag1_Cfg(p_CellId); + U_TM.send(cas_PagingType1(p_CellId, tsc_RB_PCCH, cs_RRC_PagingType1(p_PagCause, cs_CN_PageUE_Identity_IMSI(p_IMSI), p_Domain))); + } + + //============================================================================================= + // UE capability + /* + * @desc To request UTRAN UE capability information and store the security capabilities + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_UE_CapabilityInformation() runs on UTRAN_PTC + { + var UTRAN_SecurityInfo_Type v_SecurityInfo:= f_UTRAN_Security_Get(); + var U_RLC_AM_IND v_RLC_AM_DATA_IND; + + //Transmit a UE CAPABILITY ENQUIRY message requesting all capabilties. + U_AM.send(cas_RLC_Data_Req_NoCnf(utran_CellDedicated, tsc_RB2, cs_UE_CapabilityEnqAll(v_SecurityInfo.dl_IntegrityCheckInfo))); + + //Receive UE CAPABILITY INFORMATION + U_AM.receive(car_RLC_Data_Ind(utran_CellDedicated, tsc_RB2, cr_UE_CapabilityInfoAM(tsc_RRC_TI, ?))) -> value v_RLC_AM_DATA_IND; + + //Transmit a UE CAPABILITY INFORMATION CONFIRM message + U_AM.send(cas_RLC_Data_Req_NoCnf(utran_CellDedicated, tsc_RB2, cs_UE_CapabilityInfoCnfAM(v_SecurityInfo.dl_IntegrityCheckInfo, tsc_RRC_TI))); // @sic R5s130310 sic@ + + // Store the received security capabilities + f_UTRAN_SecurityCapability_Set(v_RLC_AM_DATA_IND.data.aM_message.uL_DCCH_Message.message_.ueCapabilityInformation.ue_RadioAccessCapability.securityCapability); + } + + //---------------------------------------------------------------------------- + // DELAY + /* + * @desc 1.2s delay acc. to 34.108 cl. to allow user-plane signalling + * @param p_WaitDataSignalling (default value: noDelay) + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_DelayForUserPlaneSignalling(UTRAN_DelayForUserPlaneSignalling_Type p_WaitDataSignalling := noDelay) + { /* NOTE: there is no reason to apply any tolerances for the delay */ + /* @sic R5s130384 sic@ */ + + if (p_WaitDataSignalling == waitForIP) { + f_Delay(1.2); + } + } + +} // end of module diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_CommonProcedures.ttcn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_CommonProcedures.ttcn new file mode 100644 index 0000000..4f2fe7e --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_CommonProcedures.ttcn @@ -0,0 +1,1365 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-07 18:37:49 +0200 (Sun, 07 Sep 2014) $ +// $Rev: 12081 $ +/******************************************************************************/ + +module UTRAN_CommonProcedures { + + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_ASP_Definitions language "ASN.1:2002" all; + import from UTRAN_TypeDefs all; + import from UTRAN_CellInfo all; + import from UTRAN_Component all; + import from UTRAN_TTCN_ASP_Templates all; + import from UTRAN_NAS_PDU_Templates all; + import from UTRAN_CommonDefs all; + import from UTRAN_RRC_Templates all; + import from UTRAN_ASN1_ASP_Templates all; + import from UTRAN_ConfigurationSteps all; + import from UTRANGERAN_CommonFunctions all; + import from UTRAN_CommonFunctions all; + import from UTRAN_RAB_Functions all; + import from NAS_24008TypeDefs all; + import from NAS_24008Templates_IRAT all; + import from NAS_CommonTypeDefs all; + import from NAS_CommonTemplates all; + import from NAS_AuthenticationCommon all; + import from Parameters all; + import from CommonDefs all; + import from CommonIratDefs all; + import from UpperTesterFunctions all; + import from IMS_PTC_CoordMsg all; + + template (present) RRCDataIndType cr_U_AnyRAU := + { /* used in a_UTRAN_ReceiveRauRequest */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS) */ + routingAreaUpdateRequest := ? + }; + + /* + * @desc additional default behaviour to receive routingAreaUpdateRequest; + * if there has a routingAreaUpdateRequest been received already verdict FAIL or INCONC is assigned. + * @param p_UplinkDirectTransfer - set to true if called during a CSPS Handover, set to false if called in Idle Mode or CS only Handover // @sic R5s120070, R5s130561 sic@ + * @status APPROVED (LTE_A, LTE_IRAT, POS) + */ + altstep a_UTRAN_ReceiveRauRequest(boolean p_UplinkDirectTransfer) runs on UTRAN_PTC + { + var RRC_DATA_IND v_RAUReq_IND; + + //Receive any Routing Area Update Request message + [] U_Dc.receive(car_PS_InitDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_AnyRAU)) -> value v_RAUReq_IND + { + if (f_UTRAN_MsgInDefault_CheckRAU()){ //Check if the default has already received the message + f_UTRAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "Multiple Routing Area Update Request messages have been received"); + } + if (p_UplinkDirectTransfer) { // @sic R5s120070, R5s130561 sic@ + f_UTRAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "RAU should be received in Uplink Direct Transfer"); + } + else{ + f_UTRAN_MsgInDefault_SetRAU(v_RAUReq_IND); + } + repeat; + } + // @sic R5s120070 sic@ + [] U_Dc.receive(car_PS_UplinkDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_AnyRAU)) -> value v_RAUReq_IND + { + if (f_UTRAN_MsgInDefault_CheckRAU()){ //Check if the default has already received the message + f_UTRAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "Multiple Routing Area Update Request messages have been received"); + } + if (not p_UplinkDirectTransfer) { + f_UTRAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "RAU should be received in Initial Direct Transfer"); + } + else{ + f_UTRAN_MsgInDefault_SetRAU(v_RAUReq_IND); + } + repeat; + } + } + + /* + * @desc Procedure to bring UE, depending on PS/CS and Operation mode of UE, in to a state + * Registered, Idle Mode (state 2) on an UTRAN cell. + * @param p_CellId + * @status APPROVED (LTE_IRAT, POS) + */ + function f_UTRAN_IdleUpdated(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + if (pc_CS and not pc_PS) { + f_UTRAN_RRC_ConnEst(p_CellId); // Establish RRC connection + f_UTRAN_LocationUpdate(p_CellId, true); + f_UTRAN_RRC_ConnRel(p_CellId, cell_Dch); + } else { // PS only or PS and CS + f_UTRAN_GMMOnly_Attach(p_CellId); + } + } + + /* + * @desc Procedure to be used in the test case preamble when UE should be brought to state + * Registered, Idle Mode (state 2) on an UTRAN cell. + * @param p_CellId + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_Preamble(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { /* @sic R5s130347: local GuardTimer sic@ */ + var UTRAN_SecurityInfo_Type v_SecurityInfo; + var Common_AuthenticationParams_Type v_AuthCS; + + timer t_GuardTimer := tsc_GuardTimePreamble; + + t_GuardTimer.start; + + // Switch cell power on + f_UTRAN_SetCellPower(p_CellId, tsc_AttenuationServingCell); + + // Switch on UE + f_UT_SwitchOnUE(UT, false); + + // Establish RRC Connection, perform Authentication, Security Mode procedure, + // Attach procedure and release RRC Connection + f_UTRAN_IdleUpdated(p_CellId); + + // Now get the security parameters that have been updated + v_SecurityInfo := f_UTRAN_Security_Get(); + // AuthCS not the same structure as AuthPS + v_AuthCS := v_SecurityInfo.authKeys.AuthPS; + v_AuthCS.CK := v_SecurityInfo.authKeys.AuthCS.CKey; + v_AuthCS.IK := v_SecurityInfo.authKeys.AuthCS.IKey; + v_AuthCS.KeySeq := v_SecurityInfo.authKeys.AuthCS.CKeySeq; + + EUTRA.send(cms_IRAT_AuthInfo(v_SecurityInfo.authKeys.AuthPS, + v_AuthCS, + omit, // may need to send this eventually + v_SecurityInfo.authKeys.CSinOtherRAT)); + t_GuardTimer.stop; + } + + /* + * @desc Procedure to be used as the pre-Preamble to set the PTMSI, PTMSI Sig and TMSI in the USIM + * @param p_CellId + * @param p_AttachType + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_Pre_Preamble(UTRAN_CellId_Type p_CellId, + UTRAN_GERAN_ATTACH_Type p_AttachType) runs on UTRAN_PTC + { /* @sic R5s130347: local GuardTimer sic@ */ + timer t_GuardTimer := tsc_GuardTimePreamble; + + t_GuardTimer.start; + + f_UTRAN_SetCellPower(p_CellId, tsc_AttenuationServingCell); + f_UT_SwitchOnUE(UT, false); + f_UTRAN_IdleUpdated(p_CellId); + f_UTRAN_SwitchPower_Off(p_CellId, U1_IDLE,p_AttachType); // @sic R5s110176 sic@ + f_UTRAN_SetCellPower(p_CellId, tsc_AttenuationCellOFF); + + // then tell EUTRA it can do it's preamble + f_IRAT_SendCoOrd(EUTRA, cms_IRAT_Trigger); + + t_GuardTimer.stop; + } + + /* + * @desc This procedure is according to 36.523-3 cl. 10.1.5 CS fallback procedure + * @param p_CellId + * @param p_AttachType + * @status APPROVED (LTE_A, LTE_IRAT, POS) + */ + function f_UTRAN_CS_Fallback(UTRAN_CellId_Type p_CellId, + UTRAN_GERAN_ATTACH_Type p_AttachType) runs on UTRAN_PTC + { + var B2_Type v_Nmo := f_UTRAN_CellInfo_GetNMO(p_CellId); + var UTRA_POSTAMBLE_CONDITIONS v_Utra_Postamble_Condition := f_UTRA_SetPostambleCondition(p_AttachType); // @sic R5s110176 sic@ + var RRC_DATA_IND v_RRC_DATA_IND; + var B3_Type v_UpdateType; + var octetstring v_PLMN := f_U_Asn2Nas_PlmnId(f_UTRAN_CellInfo_GetPLMNIdentity(p_CellId)); + var octetstring v_LAC := f_UTRAN_CellInfo_GetLAC(p_CellId); + var octetstring v_RAC := f_UTRAN_CellInfo_GetRAC(p_CellId); + var default v_MyDefaultVar := null; + + if (v_Utra_Postamble_Condition != UTRA_C4) { // UE will send LAU only + //Activate additional default behaviour to capture the Routing Area Update Request message + v_MyDefaultVar := activate(a_UTRAN_ReceiveRauRequest(false)); // @sic R5s120228 sic@ + } + + alt { + //Step 1a1: Receive CM Service Request + [] U_Dc.receive(car_InitDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_ServReqAny(?))) + { + //Step 1a2: Send CM Service Reject with reject cause #32 (Service Option not supported) + U_Dc.send(cas_DataReq_CS(utran_CellDedicated, + tsc_RB3, + cs_U_CM_ServRej(tsc_ServiceOptionNotSupported))); + } + //Step 1b1: Receive Paging Response + [] U_Dc.receive(car_PS_InitDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_PagRsp(?, ?))) + {}//Do nothing + } + + //Step 2a1 - 2a5/ 7b1 - 7b5: Perform Location Updating procedure for the scenario @sic R5s120228 sic@ + // - C4 or (NMO2 and C3) + if (v_Utra_Postamble_Condition == UTRA_C4 or (v_Nmo == tsc_NMO_II and v_Utra_Postamble_Condition == UTRA_C3)) { + f_UTRAN_LocationUpdate(p_CellId); + } + + if (v_Utra_Postamble_Condition != UTRA_C4) { // UE will send LAU only + // @sic R5s120228 sic@ + //Step 1 in parallel behaviour: Receive Routing Area Update Request (if it has not yet been received) + //Deactivate the default + deactivate(v_MyDefaultVar); + + if (f_UTRAN_MsgInDefault_CheckRAU()) { //Check if the default has already received the message + + v_RRC_DATA_IND := f_UTRAN_MsgInDefault_GetRAU(); + + if (not match(v_RRC_DATA_IND, car_PS_InitDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_RA_UpdReqAny(cr_GMM_UpdateType(?, (tsc_I_UpdateTypeRAOnly, tsc_I_UpdateTypeCombined, tsc_I_UpdateTypeCombinedWithIMSI)), // @sic R5-125545 sic@ + cr_RAI(omit), + cr_PTMSI_SignatureAny ifpresent, + ?)))) { + f_UTRAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 1 in parallel behaviour - Routing Area Update Request message is incorrect"); + } + } + else { //Wait till UE sends Routing Area Update Request message + U_Dc.receive(car_PS_InitDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_RA_UpdReqAny(cr_GMM_UpdateType(?, (tsc_I_UpdateTypeRAOnly, tsc_I_UpdateTypeCombined, tsc_I_UpdateTypeCombinedWithIMSI)), // @sic R5-125545 sic@ + cr_RAI(omit), + cr_PTMSI_SignatureAny ifpresent, + ?))) -> value v_RRC_DATA_IND; + } + //SECURITY MODE COMMAND and SECURITY MODE COMPLETE + f_UTRAN_SS_SecurityDownloadStart(ps_domain, v_RRC_DATA_IND.ttcn_start); + f_UTRAN_RRC_Security(p_CellId, false, ps_domain); + + //Send ROUTING AREA UPDATE ACCEPT + v_UpdateType := f_UG_RauReq_GetUpdateValueForRauAcc(v_RRC_DATA_IND.msg.routingAreaUpdateRequest); /* @sic R5s120019 Additional Changes sic@ */ + U_Dc.send(cas_DataReq_PS(utran_CellDedicated, + tsc_RB3, + cs_U_RA_UpdAcc3(cs_GMM_UpdateResult(v_UpdateType), + cs_RAI(omit, cs_LAI(omit, v_PLMN, v_LAC), v_RAC), + cs_PTMSI_Signature(px_PTMSI_SigDef), + cs_MobileIdTMSIorPTMSI('18'O, px_PTMSI_Def), + v_RRC_DATA_IND.msg.routingAreaUpdateRequest.pDP_ContextStatus))); // @sic R5-133584 sic@ + + //Receive ROUTING AREA UPDATE COMPLETE + U_Dc.receive(car_PS_UplinkDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_RAUpdComplete)); + } + + //Step 7a1-7a5: UE will perform combined RAU if initial one was RA Only + if (v_UpdateType == tsc_I_UpdateTypeRAOnly) { // @sic R5-121779 sic@ + // @sic R5-142985 sic@ + f_UTRAN_RRC_ConnRel(p_CellId, cell_Dch, true); + f_UTRAN_RRC_ConnEst(p_CellId); + f_UTRAN_GMM_RAU (p_CellId, false); + } + //Step 8-9: Send RRC Connection Release and receive RRC Connection Release Complete + f_UTRAN_RRC_ConnRel(p_CellId, cell_Dch); + } + + /* + * @desc Function to set the postamble conditions based on the UTRA CS/PS domain support + * and the LTE UE Attach type. According to 36.523-3 Table 10.1-1 + * @param p_AttachType + * @return UTRA_POSTAMBLE_CONDITIONS + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_UTRA_SetPostambleCondition(UTRAN_GERAN_ATTACH_Type p_AttachType) return UTRA_POSTAMBLE_CONDITIONS + { + var boolean v_IsCombined := f_UTRAN_AttachTypeCheck(p_AttachType); // @sic R5s110176 sic@ + var UTRA_POSTAMBLE_CONDITIONS v_UTRA_POSTAMBLE_CONDITION := UTRA_C1; + + if (v_IsCombined) {//combined attach case + if (pc_CS and pc_PS) { + v_UTRA_POSTAMBLE_CONDITION := UTRA_C3; + } + else if (pc_CS and not pc_PS) { + v_UTRA_POSTAMBLE_CONDITION := UTRA_C4; + } + } + else {//attach case + if (pc_PS and not pc_CS) { + v_UTRA_POSTAMBLE_CONDITION := UTRA_C2; + } + } + return v_UTRA_POSTAMBLE_CONDITION; + } + + /* + * @desc Function to bring UE to switched/powered off state after test case execution in UTRA PTC + * This procedure is according to 36.523-3 cl. 10.1 + * @param p_CellId + * @param p_UTRA_POSTAMBLE_STATE - as defined in 36.508 cl. 6.4.3.2 + * @param p_AttachType (default value: NotSpecified) + * @param p_TI_S (default value: cs_TI_MO) + * @status APPROVED (LTE_A, LTE_IRAT, POS) + */ + function f_UTRAN_Postamble(UTRAN_CellId_Type p_CellId, + UTRA_POSTAMBLE_STATE_Type p_UTRA_POSTAMBLE_STATE, + UTRAN_GERAN_ATTACH_Type p_AttachType := NotSpecified, + template (value) TI p_TI_S:= cs_TI_MO) runs on UTRAN_PTC //@sic R5s120086 sic@ + { + var RB_ConfigType v_CellConfig := f_UTRAN_CellInfo_GetConfigType(p_CellId); + + select (p_UTRA_POSTAMBLE_STATE) { + case (U1_IDLE) { + //Switch/Power off UE + f_UTRAN_SwitchPower_Off(p_CellId, U1_IDLE, p_AttachType); // @sic R5s110176 sic@ + } + case (U2_CONNECTED) { + //Switch/Power off UE + f_UTRAN_SwitchPower_Off(p_CellId, U2_CONNECTED, p_AttachType); // @sic R5s110176 sic@ + } + case (U3_HANDOVER) { + //Routing Area Procedures + f_UTRAN_PS_RAU_HO(p_CellId, p_AttachType); // @sic R5s110176 sic@ + f_UTRAN_RRC_ConnRel(p_CellId, cell_Dch); // @sic R5s140552 sic@ + + //Switch/Power off UE + f_UTRAN_SwitchPower_Off(p_CellId, U1_IDLE, p_AttachType); // @sic R5s110176, R5s140552 sic@ + } + case (U4_CSFALLBACK) { + //Perform CS Fallback procedure + f_UTRAN_CS_Fallback(p_CellId, p_AttachType); // @sic R5s110176 sic@ + + //Switch/Power off UE + f_UTRAN_SwitchPower_Off(p_CellId, U1_IDLE, p_AttachType); // @sic R5s110176, R5-121779 sic@ + } + case (U5_CSCALL) { + //Disconnect the active CC call + f_UTRAN_CC_Disconnect(p_CellId, p_TI_S); //@sic R5s120086 sic@ + // @sic R5-142985 sic@ + f_UTRAN_RRC_ConnRel(p_CellId, cell_Dch, true); + f_UTRAN_RRC_ConnEst(p_CellId); + f_UTRAN_GMM_RAU (p_CellId, false); + f_UTRAN_RRC_ConnRel(p_CellId, cell_Dch); // @sic R5s140552 sic@ + + //Switch/Power off UE + f_UTRAN_SwitchPower_Off(p_CellId, U1_IDLE, p_AttachType); // @sic R5s110176, R5s140552 sic@ + } + case (U6_DEREGISTERED) { + //If the UE can be switched off + if (pc_SwitchOnOff == true) { + //Simply switch the UE off + f_UT_SwitchOffUE(UT, false); + } else {//just remove power from UE + f_UT_PowerOffUE(UT); + } + } + case else {//No state defined - just remove power from UE + f_UT_PowerOffUE(UT); + } + } + //Release the UTRAN cell + f_UTRAN_ReleaseCell(p_CellId, v_CellConfig); // @sic R5s110176 sic@ + } + + /* + * @desc Brings UE from UTRA idle (U1) state or UTRA connected (U2) state to UTRA State Off + * This procedure is according to 36.523-3 cl. 10.1.2 (Switch/Power off procedure) + * @param p_CellId + * @param p_Utra_Postamble_State + * @param p_AttachType + * @param p_USIM_Rmvd + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_UTRAN_SwitchPower_Off(UTRAN_CellId_Type p_CellId, + UTRA_POSTAMBLE_STATE_Type p_Utra_Postamble_State, + UTRAN_GERAN_ATTACH_Type p_AttachType, + boolean p_USIM_Rmvd := false) runs on UTRAN_PTC + { + var RB_ConfigType v_CellConfig := f_UTRAN_CellInfo_GetConfigType(p_CellId); + var integer v_AttFlag := f_UTRAN_CellInfo_GetAttFlag(p_CellId); + var RRC_Rel_Status v_RRC_Rel_Status := cell_Dch; + var UTRA_POSTAMBLE_CONDITIONS v_Utra_Postamble_Condition := f_UTRA_SetPostambleCondition(p_AttachType); // @sic R5s110176 sic@ + var B2_Type v_Nmo := f_UTRAN_CellInfo_GetNMO(p_CellId); + var RRC_DATA_IND v_RRC_DataInd; + var U_RLC_AM_IND v_U_RLC_AM_IND; + var UTRAN_SecurityInfo_Type v_SecurityInfo ; + var boolean v_RxdServiceReq := false; // Should only get one + + if (v_CellConfig == cell_FACH or v_CellConfig == cell_FACH_NoConn) { + v_RRC_Rel_Status := cell_Fach_Dcch; + } + + //Step 1: The UE can be switched off or USIM removed + if (pc_SwitchOnOff or p_USIM_Rmvd and pc_USIM_Removal) { // @sic R5s120597r1 sic@ + //Step 1: The UE is switched off + f_UT_SwitchOffUE(UT, p_USIM_Rmvd); + + //Step 2-4: RRC Connection establishment when UE is in UTRA idle end state + if (p_Utra_Postamble_State == U1_IDLE) { + f_UTRAN_RRC_ConnEst(p_CellId, (detach, originatingBackgroundCall)); // @sic R5s140572 sic@ + alt { + [not v_RxdServiceReq] U_Dc.receive(car_PS_InitDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_ServiceRequest(cr_ServiceType('001'B),//Service type 'data' + cr_MobileIdAny (omit), + ?))) -> value v_RRC_DataInd + { // @sic R5-142919, R5s140710 sic@ + f_UTRAN_RRC_Security(p_CellId, false, ps_domain); + f_UTRAN_RB_SetUp_PS_RAB (p_CellId, cell_DCH_64kPS_RAB_SRB, false); // @sic R5s140710 sic@ + U_AM.receive (car_RLC_Data_Ind (utran_CellDedicated, //@sic R5s110210 sic@ + tsc_RB2, + cr_108_RB_SetUpCmpl (tsc_RRC_TI))) -> value v_U_RLC_AM_IND; + v_SecurityInfo := f_UTRAN_Security_Get(); + v_SecurityInfo.start_PS := v_U_RLC_AM_IND.data.aM_message.uL_DCCH_Message.message_.radioBearerSetupComplete.start_Value; + f_UTRAN_Security_Set(v_SecurityInfo); + v_RxdServiceReq := true; + repeat; // now need to detach at NAS level + } + //Step 5a1, 5c1 & 5d1: Receive Detach Request message for the different scenarios + // - NMO1 and (C1 or C3) : detach type = power switched off, GPRS/IMSI combined detach + // - (NMO1 or NMO2) and C2 : detach type = power switched off, PS detach + // - NMO2 and (C1 or C3) : detach type = power switched off, PS detach + [] U_Dc.receive((car_PS_InitDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_DetachRequest), // @sic R5s120162 sic@ + car_PS_UplinkDirectTransfer(utran_CellDedicated, // if received Service Req, then this won't be the first message + tsc_RB3, + cr_U_DetachRequest))) // @sic R5-142919 sic@ + { + if (v_RxdServiceReq) { // @sic R5-142919 sic@ + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); // tell the IMS PTC to stop waiting for the optional deregister + } + //Step 5d2: Receive IMSI Detach indication + // - NMO2 and (C1 or C3) + if (v_AttFlag == 1 and + ((v_Nmo == tsc_NMO_II and (v_Utra_Postamble_Condition == UTRA_C1 or v_Utra_Postamble_Condition == UTRA_C3)))) { // @sic R5s110155, R5-115770 sic@ + U_Dc.receive(car_InitDirectTransfer(utran_CellDedicated, // @sic R5s110155, R5s110695, R5s120529 sic@ + tsc_RB3, + cr_U_Imsi_DetachInd)); + } + } + // Step 5b1 or 5d2: Receive IMSI detach Indication + // - (NMO1 or NMO2) and C4 + // When NMO2 and (C1 or C3) : CS and PS are run independently and SS shall accept either PS detach first or IMSI detach first. + [] U_Dc.receive(car_InitDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_Imsi_DetachInd)) // @sic R5s120902, R5s130273 sic@ + { + if (v_RxdServiceReq) { // @sic R5-142919 sic@ + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); // tell the IMS PTC to stop waiting for the optional deregister + } + //Step 5d1: Receive Detach request for the scenario + // - NMO2 and (C1 or C3) + if (v_AttFlag == 1 and + v_Nmo == tsc_NMO_II and // @sic R5-115770 sic@ + (v_Utra_Postamble_Condition == UTRA_C1 or v_Utra_Postamble_Condition == UTRA_C3)) { + U_Dc.receive((car_PS_InitDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_DetachRequest), // @sic R5s110462 sic@ + car_PS_UplinkDirectTransfer(utran_CellDedicated, // if received Service Req, then this won't be the first message + tsc_RB3, + cr_U_DetachRequest))); // @sic R5-142919 sic@ + } + else {//IMSI Detach only + } + } + } // End of alt + } + else { // UE is in connected mode; @sic R5s110155 sic@ + alt { + [not v_RxdServiceReq] U_Dc.receive(car_PS_UplinkDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_ServiceRequest(cr_ServiceType('001'B),//Service type 'data' + cr_MobileIdAny(omit), + ?))) -> value v_RRC_DataInd + { // @sic R5-142919, R5s140710 sic@ + f_UTRAN_RRC_Security(p_CellId, false, ps_domain); + f_UTRAN_RB_SetUp_PS_RAB (p_CellId, cell_DCH_64kPS_RAB_SRB, false); // @sic R5s140710 sic@ + U_AM.receive (car_RLC_Data_Ind (utran_CellDedicated, //@sic R5s110210 sic@ + tsc_RB2, + cr_108_RB_SetUpCmpl (tsc_RRC_TI))) -> value v_U_RLC_AM_IND; + v_SecurityInfo := f_UTRAN_Security_Get(); + v_SecurityInfo.start_PS := v_U_RLC_AM_IND.data.aM_message.uL_DCCH_Message.message_.radioBearerSetupComplete.start_Value; + f_UTRAN_Security_Set(v_SecurityInfo); + v_RxdServiceReq := true; + repeat; // now need to detach at NAS level + } + //Step 5a1, 5c1 & 5d1: Receive Detach Request message for the different scenarios + // - NMO1 and (C1 or C3) : detach type = power switched off, GPRS/IMSI combined detach + // - (NMO1 or NMO2) and C2 : detach type = power switched off, PS detach + // - NMO2 and (C1 or C3) : detach type = power switched off, PS detach + [] U_Dc.receive(car_PS_UplinkDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_DetachRequest)) // @sic R5s110594 sic@ + { + if (v_RxdServiceReq) { // @sic R5-142919 sic@ + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); // tell the IMS PTC to stop waiting for the optional deregister + } + //Step 5d2: Receive IMSI Detach indication + // - NMO2 and (C1 or C3) + if (v_AttFlag == 1 and + ((v_Nmo == tsc_NMO_II and (v_Utra_Postamble_Condition == UTRA_C1 or v_Utra_Postamble_Condition == UTRA_C3)))) { // @sic R5s110155, R5-115770 sic@ + U_Dc.receive(car_InitDirectTransfer(utran_CellDedicated, // @sic R5s110155, R5s110695, R5s120529 sic@ + tsc_RB3, + cr_U_Imsi_DetachInd)); + } + } + // Step 5b1 or 5d2: Receive IMSI detach Indication + // - (NMO1 or NMO2) and C4 + // When NMO2 and (C1 or C3) : CS and PS are run independently and SS shall accept either PS detach first or IMSI detach first. + [] U_Dc.receive((car_InitDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_Imsi_DetachInd), + car_UplinkDirectTransfer(utran_CellDedicated, // @sic R5s110695, R5s120529, R5s120902, R5s130273 sic@ + tsc_RB3, + cr_U_Imsi_DetachInd))) + { + if (v_RxdServiceReq) { // @sic R5-142919 sic@ + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); // tell the IMS PTC to stop waiting for the optional deregister + } + //Step 5d1: Receive Detach request for the scenario + // - NMO2 and (C1 or C3) + if (v_AttFlag == 1 and + v_Nmo == tsc_NMO_II and // @sic R5-115770 sic@ + (v_Utra_Postamble_Condition == UTRA_C1 or v_Utra_Postamble_Condition == UTRA_C3)) { + U_Dc.receive(car_PS_UplinkDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_DetachRequest)); // @sic R5s110594 sic@ + } + else {//IMSI Detach only + } + } + } // End of alt + } + //Step 6-7: Release RRC connection when the UE has been switched off + f_UTRAN_RRC_ConnRel_AfterSwitchOff(p_CellId, v_RRC_Rel_Status); + } + //Step 1: The power must be removed from the UE + else { + f_UT_PowerOffUE (UT); + } + } // f_UTRAN_SwitchPower_Off + + /* + * @desc Function used in Idle Mode test cases to perform Routing Area Update on the new UTRAN cell. + * @param p_CellId + * @param p_RRC_RelStatus (default value: cell_Fach_Dcch) + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_IdleMode_RAU(UTRAN_CellId_Type p_CellId, + RRC_Rel_Status p_RRC_RelStatus := cell_Fach_Dcch) runs on UTRAN_PTC + { + timer t_IdleMode_GenericTimer := f_UG_SetTimerToleranceMax(tsc_IdleMode_GenericTimer_UTRAN); + + t_IdleMode_GenericTimer.start; + f_UTRAN_508CheckCampOnNewUtranCell(p_CellId, p_RRC_RelStatus); + t_IdleMode_GenericTimer.stop; + } + + /* + * @desc Procedure which aims at checking whether the UE is camping on a new UTRAN cell + * of a test case or not. The procedure is defined in 36.508 table 6.4.2.8-1. + * @param p_CellId + * @param p_RRC_RelStatus (default value: cell_Fach_Dcch) + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_UTRAN_508CheckCampOnNewUtranCell(UTRAN_CellId_Type p_CellId, + RRC_Rel_Status p_RRC_RelStatus := cell_Fach_Dcch) runs on UTRAN_PTC + { + + //Step 1-3: Establish RRC Connection + f_UTRAN_RRC_ConnEst(p_CellId); + + //Step 4-10: Routing Area Update, Authentication and RRC Security + f_UTRAN_GMM_RAU_MappedContext(p_CellId); + + //Step 11-12: Release RRC Connection + f_UTRAN_RRC_ConnRel(p_CellId, p_RRC_RelStatus); + f_UTRAN_PreliminaryPass(__FILE__, __LINE__, "UTRAN Check Camp On New Utran Cell"); + } + + /* @desc Step 7-17 of 34.108 cl. 7.2.3.1 + * From TTCN2 test step ts_CC_EnterU10_MT_Def + * @param p_CellId + * @param p_DoAuth (default: true) ...decides whether or not to do generate new keys + * @param p_PS_RB_Already_Est (default: false) ...decides whether or not to configure or modify SS configuration. + * p_PS_RB_Already_Est = TRUE is used in TC 13.1.4 where a PS RB has already been configured in SS and UE and then a CS Speech RB is set up/configured + * p_PS_RB_Already_Est = FALSE is used in TC 13.1.3 where only a CS Speech RB is set up/configured + * @param p_DoCS_Security (default value: true) + * if p_DoAuth is true, p_DoCS_Security shall also be true + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_MT_SpeechCall_Steps7_17(UTRAN_CellId_Type p_CellId, + boolean p_DoAuth := true, + boolean p_PS_RB_Already_Est := false, + boolean p_DoCS_Security := true) runs on UTRAN_PTC + { + var template (value) Bcap v_Bcap := cs_BcapSpeechMT; + + //Step 7 - 8 + //MM Authentication + if (p_DoAuth) { + f_UTRAN_MM_Authentication(); + } + + //Step 9 - 10 + //Security Mode procedure + //@sic R5s120455 sic@ + if (p_DoCS_Security) { + f_UTRAN_RRC_Security(p_CellId, p_DoAuth, cs_domain); + } + + //Step 11 + //Send Set Up + U_Dc.send(cas_DataReq_CS(utran_CellDedicated, + tsc_RB3, + cs_U_SetupMTCall(v_Bcap))); + + //Step 12 + //Receive Call Confirmed + U_Dc.receive(car_UplinkDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_CallConfirmed(?))); // @sic R5s120070 sic@ + //Step 13 - 14 + //Radio Bearer Establishment + f_UTRAN_Default_BlockDc(true); /* @sic R5s120086 (R5s120107) sic@ */ + if (p_PS_RB_Already_Est) { + f_UTRAN_Setup_RAB_PS_and_ConvSpeech(p_CellId); + } + else { + f_UTRAN_RB_SetUp_Speech(p_CellId); /* @sic R5s120139 - Additional Changes sic@ */ + } + f_UTRAN_Default_BlockDc(false); /* @sic R5s120086 (R5s120107) sic@ */ + + alt { + //Step 15 + [] U_Dc.receive(car_UplinkDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_Alerting(?))) + { + f_UT_AnswerCall(UT); + + //Step 16 + U_Dc.receive(car_UplinkDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_Connect(?))); + } + //Step 16 + [] U_Dc.receive(car_UplinkDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_Connect(?))) + {} + } + + //Step 17 + U_Dc.send(cas_DataReq_CS(utran_CellDedicated, + tsc_RB3, + cs_U_ConnectAck(cs_TI_MT))); + } + + /* @desc Step 6-16 of 34.108 cl. 7.2.3.2 + * @param p_CellId + * @param p_DoAuth (default value: true) + * @param p_PS_RB_Already_Est (default value: false) + * @param p_DoCS_Security (default value: true) + * if p_DoAuth is true, p_DoCS_Security shall also be true + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_M0_SpeechCall_Steps6_16(UTRAN_CellId_Type p_CellId, + boolean p_DoAuth := true, + boolean p_PS_RB_Already_Est := false, + boolean p_DoCS_Security := true) runs on UTRAN_PTC + { + var UTRAN_SecurityInfo_Type v_SecurityInfo; + var TI v_TI_R; + var RRC_DATA_IND v_RRC_DataInd; + + //Steps 6-7: Authentication Request and Authentication Response + if (p_DoAuth) { + v_SecurityInfo := f_UTRAN_Security_Get(); + v_SecurityInfo.authKeys.CSinOtherRAT := true; + f_UTRAN_Security_Set(v_SecurityInfo); + f_UTRAN_MM_Authentication(); + } + + //Step 8-9 + //Security Mode procedure + if (p_DoCS_Security) { + f_UTRAN_RRC_Security(p_CellId, p_DoAuth, cs_domain); + } + + //Step 10 + //Receive Set Up + U_Dc.receive(car_UplinkDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_SetupMOCall(cr_BcapSpeechMO))) // @sic R5s110580 sic@ + -> value v_RRC_DataInd; + v_TI_R := v_RRC_DataInd.msg.setupul.ti; + + f_UTRAN_M0_SpeechCall_Steps11_16 (p_CellId, v_TI_R, p_PS_RB_Already_Est); // @sic R5-142954 sic@ + } + + /* @desc Step 11-16 of 34.108 cl. 7.2.3.2 + * @param p_CellId + * @param p_TI_R + * @param p_PS_RB_Already_Est (default value: false) + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_M0_SpeechCall_Steps11_16(UTRAN_CellId_Type p_CellId, + TI p_TI_R, + boolean p_PS_RB_Already_Est := false) runs on UTRAN_PTC + { + var TI v_TI_S := p_TI_R; + v_TI_S.tiFlag := '1'B; + + //Step 11 - Send Call PROCEEDING + U_Dc.send(cas_DataReq_CS(utran_CellDedicated, tsc_RB3, cs_U_CallProc(v_TI_S))); + + //Step 12-13 - Radio Bearer Establishment + if (p_PS_RB_Already_Est){ + f_UTRAN_Setup_RAB_PS_and_ConvSpeech(p_CellId); + } + else { + f_UTRAN_RB_SetUp_Speech(p_CellId); /* @sic R5s120139 - Additional Changes sic@ */ + } + + //Step 14 - Send Alerting + U_Dc.send(cas_DataReq_CS(utran_CellDedicated, tsc_RB3, cs_U_Alert(v_TI_S))); + + //Step 15 - Send Connect + U_Dc.send(cas_DataReq_CS(utran_CellDedicated, tsc_RB3, cs_U_Connect(v_TI_S))); + + //Step 16 - Receive CONNECT ACKOWLEDGE + U_Dc.receive(car_UplinkDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_ConnAck(p_TI_R))); + } + + /* + * @desc This procedure is used in IMS Emg Call test cases (derived from test case 11.2.8 UTRAN) + * @param p_CellId + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_EmgCallSetup(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + var RLC_TR_DATA_IND v_RLC_TR_DATA_IND; + var InitialUE_Identity v_InitialUE_Id; + var RRC_DATA_IND v_RRC_DataInd; + var template (present) EstablishmentCause v_EstCause := emergencyCall; + var START_Value v_START_Value := '00000000000000000000'B; + var KeySeq v_KeySeq := '111'B; //cipher key sequence number IE: no key is available + var float v_Wait := 60.0; // 60 seconds to allow UE to complete the procedure on CDMA2000 cell + var TI v_TI_R; + timer t_Wait := v_Wait ; // Local wait Timer + + t_Wait.start; + + alt { + //Step 2 + //Check: Does the UE transmit an RRC CONNECTION REQUEST message on Cell 5 with Establishment cause: Emergency Call in the next [60] seconds? + [] U_TM.receive(car_RRC_ConnReq(p_CellId, + tsc_RB0, + cr_108_RRC_ConnReq_r8(v_EstCause))) -> value v_RLC_TR_DATA_IND { + f_UTRAN_PreliminaryPass(__FILE__, __LINE__, "f_UTRAN_EmgCallSetup Step 2"); + v_InitialUE_Id := v_RLC_TR_DATA_IND.tM_message.uL_CCCH_Message.message_.rrcConnectionRequest.initialUE_Identity; + f_UTRAN_CheckReleaseIndicator(v_RLC_TR_DATA_IND.tM_message.uL_CCCH_Message.message_.rrcConnectionRequest.v3d0NonCriticalExtensions.v4b0NonCriticalExtensions.rrcConnectionRequest_v4b0ext.accessStratumReleaseIndicator); + } + [] t_Wait.timeout { + f_UTRAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "f_UTRAN_EmgCallSetup Step 2: RRC Connection Request not received within wait time"); + } + } + + //Step 3 + // The SS transmits an RRC CONNECTION SETUP message. + //Step 4 + // The UE transmits an RRC CONNECTION SETUP COMPLETE message. + f_UTRAN_RRC_ConnEst_WithoutRRCConnectionReq(p_CellId,v_InitialUE_Id); + + //Step 5 + // Check: Does the UE transmit a CM SERVICE REQUEST with CM service type IE indicating "Emergency call establishment"? + U_Dc.receive(car_InitDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_ServReq_MO_Emergency(v_KeySeq, ?))) -> value v_RRC_DataInd; // UE id to be clarified + f_UTRAN_PreliminaryPass(__FILE__, __LINE__, "f_UTRAN_EmgCallSetup Step 5"); + + v_START_Value := v_RRC_DataInd.ttcn_start; + f_UTRAN_SS_SecurityDownloadStart(cs_domain, v_START_Value); + + //Step 6-7 + // The SS transmits an AUTHENTICATION REQUEST message. + // The UE transmits an AUTHENTICATION RESPONSE message. + f_UTRAN_MM_Authentication(); + + //Security Mode procedure + f_UTRAN_RRC_Security(p_CellId, true, cs_domain); // @sic R5s140588 subject to prose CR approval sic@ + + //Step 8 + // Check: Does the UE transmit an EMERGENCY SETUP message? + U_Dc.receive(car_UplinkDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_ESetup(cr_BcapSpeechMO))) -> value v_RRC_DataInd; + f_UTRAN_PreliminaryPass(__FILE__, __LINE__, "f_UTRAN_EmgCallSetup Step 8"); + + //Steps 9-14 of 11.2.8 UTRAN + // steps 11-16 of 34.108 cl. 7.2.3.2.3 + v_TI_R := v_RRC_DataInd.msg.esetup.ti; + f_UTRAN_M0_SpeechCall_Steps11_16(p_CellId, v_TI_R); // @sic R5-142954 sic@ + + } // f_UTRAN_EmgCallSetup + + /* + * @desc This procedure is according to 36.508 cl. 6.4.3.7.1, 6.4.3.7.2, 6.4.3.7.3 or 6.4.3.7.4 + * @param p_CellId + * @param p_MT_Call - Is set to true when MT call branch shall be performed. + * Is set to false when MO call branch shall be performed. + * Default value 'true' + * @param p_PS_RB_Already_Est - Is set to true when a PS bearer is already established and the RAB being setup is CS+PS + * Is set to false when no PS bearer is established already and "pure" CS RAB is established. + * Default value 'false' + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_CS_Fallback_WithRedirection(UTRAN_CellId_Type p_CellId, + boolean p_MT_Call := true, + boolean p_PS_RB_Already_Est := false) runs on UTRAN_PTC + { + + //Steps 1-3: RRC Connection Establishment + f_UTRAN_RRC_ConnEst(p_CellId); + + f_UTRAN_CS_Fallback_WithRedirection_WithoutRRCConnEst(p_CellId, p_MT_Call, p_PS_RB_Already_Est); + } + + /* + * @desc This procedure is according to 36.508 cl. 6.4.3.7.1, 6.4.3.7.2, 6.4.3.7.3 or 6.4.3.7.4 + * @param p_CellId + * @param p_MT_Call - Is set to true when MT call branch shall be performed. + * Is set to false when MO call branch shall be performed. + * Default value 'true' + * @param p_PS_RB_Already_Est - Is set to true when a PS bearer is already established and the RAB being setup is CS+PS + * The RB setup complete after PS RAB establishment is not received. + * Is set to false when no PS bearer is established already and "pure" CS RAB is established. + * Default value 'false' + * @param p_RelRRC (default: false, this is currently only set in 13.1.3) + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_CS_Fallback_WithRedirection_WithoutRRCConnEst(UTRAN_CellId_Type p_CellId, + boolean p_MT_Call := true, + boolean p_PS_RB_Already_Est := false, + boolean p_RelRRC := false) runs on UTRAN_PTC + { + + var RRC_DATA_IND v_RRC_DATA_IND; + var B3_Type v_UpdateType; + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + var octetstring v_PLMN := f_U_Asn2Nas_PlmnId(f_UTRAN_CellInfo_GetPLMNIdentity(p_CellId)); + var octetstring v_LAC := f_UTRAN_CellInfo_GetLAC(p_CellId); + var octetstring v_RAC := f_UTRAN_CellInfo_GetRAC(p_CellId); + var template (value) RRCDataReqType v_RAU_Accept; + var template (present) RRC_DATA_IND v_ServReq; + var default v_MyDefaultVar := null; + + //Activate additional default behaviour to capture the Routing Area Update Request message + v_MyDefaultVar := activate(a_UTRAN_ReceiveRauRequest(false)); // @sic R5s120070 sic@ + + alt { + //Step 4: Receive Paging response + [p_MT_Call] U_Dc.receive(car_InitDirectTransfer(utran_CellDedicated, // @sic R5s120070 sic@ + tsc_RB3, + cr_U_PagRsp(?,// @sic R5s120086 sic@ + cs_MobileIdTMSI(omit, px_TMSI_Def)))) + {} + + //Step 4: Receive CM Service Request + [not p_MT_Call] U_Dc.receive(car_InitDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_ServReqAny(?))) + {} + } + + //Step 5-15: Perform CS call establishment + if (p_MT_Call) { + f_UTRAN_MT_SpeechCall_Steps7_17(p_CellId); + } + else { + f_UTRAN_M0_SpeechCall_Steps6_16(p_CellId); + } + + //Step 1 in parallel behaviour: Receive Routing Area Update Request (if it has not yet been received) + //Deactivate the default + deactivate(v_MyDefaultVar); + + if (f_UTRAN_MsgInDefault_CheckRAU()) { //Check if the default has already received the message + + v_RRC_DATA_IND := f_UTRAN_MsgInDefault_GetRAU(); + + if (not match(v_RRC_DATA_IND, car_PS_InitDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_RA_UpdReqAny(cr_GMM_UpdateType(?, (tsc_I_UpdateTypeRAOnly, tsc_I_UpdateTypeCombined, tsc_I_UpdateTypeCombinedWithIMSI)), // @sic R5-125545 sic@ + cr_RAI(omit), + cr_PTMSI_SignatureAny ifpresent, + ?)))) { + f_UTRAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 1 in parallel behaviour - Routing Area Update Request message is incorrect"); + } + f_Delay (0.5); // @sic R5s130773 make sure SS caught up before continuing sic@ + } + else { //Wait till UE sends Routing Area Update Request message + U_Dc.receive(car_PS_InitDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_RA_UpdReqAny(cr_GMM_UpdateType(?, (tsc_I_UpdateTypeRAOnly, tsc_I_UpdateTypeCombined, tsc_I_UpdateTypeCombinedWithIMSI)), // @sic R5-125545 sic@ + cr_RAI(omit), + cr_PTMSI_SignatureAny ifpresent, + ?))) -> value v_RRC_DATA_IND; + } + //@sic R5s140475 sic@ + v_SecurityInfo := f_UTRAN_Security_Get(); + v_SecurityInfo.authKeys.AuthPS.KeySeq := v_RRC_DATA_IND.msg.routingAreaUpdateRequest.gprsCiphKeySeqNo.keySeq; + f_UTRAN_Security_Set(v_SecurityInfo); + + //Steps 16-17: SECURITY MODE COMMAND and SECURITY MODE COMPLETE + f_UTRAN_SS_SecurityDownloadStart(ps_domain, v_RRC_DATA_IND.ttcn_start); + f_UTRAN_RRC_Security(p_CellId, false, ps_domain); + + //Step 18: Send ROUTING AREA UPDATE ACCEPT + v_UpdateType := f_UG_RauReq_GetUpdateValueForRauAcc(v_RRC_DATA_IND.msg.routingAreaUpdateRequest); /* @sic R5s120019 Additional Changes sic@ */ + v_RAU_Accept := cs_U_RA_UpdAcc3(cs_GMM_UpdateResult(v_UpdateType), + cs_RAI(omit, cs_LAI(omit, v_PLMN, v_LAC), v_RAC), + cs_PTMSI_Signature(px_PTMSI_SigDef), + cs_MobileIdTMSIorPTMSI('18'O, px_PTMSI_Def), + v_RRC_DATA_IND.msg.routingAreaUpdateRequest.pDP_ContextStatus); // @sic R5-133584 sic@ + + U_Dc.send(cas_DataReq_PS(utran_CellDedicated, + tsc_RB3, + v_RAU_Accept)); + + //Step 19: Receive ROUTING AREA UPDATE COMPLETE + U_Dc.receive(car_PS_UplinkDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_RAUpdComplete)); + + v_ServReq := car_PS_UplinkDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_ServiceRequest(cr_ServiceType('001'B),//Service type 'data' + cr_MobileIdTMSI_lv (px_PTMSI_Def), //@sic R5s120485, R5-142919 sic@ + v_SecurityInfo.authKeys.AuthPS.KeySeq)); + if (p_RelRRC) { // @sic R5-144731 sic@ + f_UTRAN_RRC_ConnRel(p_CellId, cell_Dch, true); + v_ServReq := car_PS_InitDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_ServiceRequest(cr_ServiceType('001'B),//Service type 'data' + cr_MobileIdTMSI_lv (px_PTMSI_Def), //@sic R5s120485, R5-142919 sic@ + v_SecurityInfo.authKeys.AuthPS.KeySeq)); + f_UTRAN_RRC_ConnEst (p_CellId); + } + if (p_PS_RB_Already_Est) { + //Step 20: Receive Service Request + U_Dc.receive(v_ServReq) -> value v_RRC_DATA_IND; + U_Dc.send(cas_DataReq_PS(utran_CellDedicated, + tsc_RB3, + cs_U_ServiceAccept)); //@sic R5-130081 sic@ + + + //f_UTRAN_SS_SecurityDownloadStart (ps_domain, v_RRC_DATA_IND.ttcn_start); + //@sic R5s120868 sic@ + + //Step 21-22: Send Radio Bearer Setup message and receive Radio Bearer Setup Complete message + f_UTRAN_Setup_RAB_PS_and_ConvSpeech_PSexists(p_CellId); + // RB Setup complete not received needs to be received in test body for possible race condition with loop back data + } + } + + /* + * @desc This procedure is according to 36.508 cl. 6.4.3.7.5, 6.4.3.7.6 & 6.4.3.7.7 + * @param p_CellId + * @param p_MT_Call - Is set to true when MT call branch shall be performed. + * Is set to false when MO call branch shall be performed. + * Default value 'true' + * Shall not be set to 'true' when p_EmergCall is 'true' + * @param p_EmergCall - Is set to true when procedure is used to set up an emergency call (with USIM instered) + * Default value 'false' + * Shall not be set to 'true' when p_MT_Call is set to 'true' + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_CS_Fallback_WithHandover(UTRAN_CellId_Type p_CellId, + boolean p_MT_Call := true, + boolean p_EmergCall := false) runs on UTRAN_PTC + { + var template (value) TI v_TI_R; + var template (value) TI v_TI_S; + var RRC_DATA_IND v_RRC_DATA_IND; + var B3_Type v_UpdateType; + var default v_MyDefaultVar := null; + var boolean v_ExecuteLAU := false; + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + var PLMN_Identity v_PLMN_Identity := f_UTRAN_CellInfo_GetPLMNIdentity(p_CellId); + var octetstring v_PLMN := f_U_Asn2Nas_PlmnId(v_PLMN_Identity); + var octetstring v_LAC := f_UTRAN_CellInfo_GetLAC(p_CellId); + var octetstring v_RAC := f_UTRAN_CellInfo_GetRAC(p_CellId); + var DRX_CycleLengthStructure v_DRX_CycleLengthStructure := f_UTRAN_CellInfo_GetDRX_CycleLength(p_CellId); + var octetstring v_PSSpecificNAS_Info := v_RAC & bit2oct(f_UTRAN_CellInfo_GetNMO(p_CellId)); + var octetstring v_CSSpecificNAS_Info := f_UTRAN_CellInfo_GetT3212(p_CellId) & int2oct(f_UTRAN_CellInfo_GetAttFlag(p_CellId), 1); + + if (p_MT_Call and p_EmergCall) { + FatalError(__FILE__, __LINE__, "p_MT_Call and p_EmergCall are both set to true"); + } + + //Step 1: Receive HANDOVER TO UTRAN COMPLETE + U_AM.receive(car_RLC_Data_Ind(utran_CellDedicated, + tsc_RB2, + cr_HandoverToUTRANComplete)); + + //Activate additional default behaviour to capture the Routing Area Update Request message + v_MyDefaultVar := activate(a_UTRAN_ReceiveRauRequest(true)); // @sic R5s120070 sic@ + + if (pc_UMI_ProcNeeded_DuringCSFB) { + + f_UTRAN_UE_CapabilityInformation() ; //@sic R5s130137 sic@ + + //Steps 2b1-2b2 + f_UTRAN_ConfigureIntegrityAfterHO(p_CellId); + + //Step 2b3-2b4 + f_UTRAN_MobilityInformation(p_CellId, cs_CNInfo_PSCS(v_PLMN_Identity, + v_LAC, + v_DRX_CycleLengthStructure, + v_PSSpecificNAS_Info, + v_CSSpecificNAS_Info)); + + //Step 2b5: Receive Paging Response or CM Service Request + alt { + // MT Call, expected Paging Response + [p_MT_Call] U_Dc.receive(car_InitDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_PagRsp(?, //@sic R5s1200111 sic@ + cs_MobileIdTMSI(omit, px_TMSI_Def)))) -> value v_RRC_DATA_IND {} + // Emergcy call expect Service request with Emergency call establishment + //@sic R5s120111 sic@ + [p_EmergCall] U_Dc.receive(car_InitDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_ServReq_MO_TMSI_Emergency(?))) -> value v_RRC_DATA_IND {} + + // MO Call [Neither MT nor Emergency] expect Service request with Mobile originating call establishment or packet mode connection establishment + //@sic R5s120111 sic@ + [not p_MT_Call and not p_EmergCall] U_Dc.receive(car_InitDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_ServReq_MO_TMSI(?))) -> value v_RRC_DATA_IND {} + } + } + else { + alt { + //Receive Location updating Request + [] U_Dc.receive(car_InitDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_LocationUpdatingRequest)) -> value v_RRC_DATA_IND + { v_ExecuteLAU := true; } + + // MT Call, expected Paging Response + [p_MT_Call] U_Dc.receive(car_InitDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_PagRsp(?, //@sic R5s1200111 sic@ + cs_MobileIdTMSI(omit, px_TMSI_Def)))) -> value v_RRC_DATA_IND {} + // Emergcy call expect Service request with Emergency call establishment + //@sic R5s120111 sic@ + [p_EmergCall] U_Dc.receive(car_InitDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_ServReq_MO_TMSI_Emergency(?))) -> value v_RRC_DATA_IND {} + + // MO Call [Neither MT nor Emergency] expect Service request with Mobile originating call establishment or packet mode connection establishment + //@sic R5s120111 sic@ + [not p_MT_Call and not p_EmergCall] U_Dc.receive(car_InitDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_ServReq_MO_TMSI(?))) -> value v_RRC_DATA_IND {} + + } + f_UTRAN_UE_CapabilityInformation() ; //@sic R5s130137 sic@ + } + + v_SecurityInfo := f_UTRAN_Security_Get(); // @sic R5s130678 sic@ + if (v_ExecuteLAU) { + //Steps 2a2-2a6: AUTHENTICATION Procedure, SECURITY MODE Procedure and LOCATION UPDATING ACCEPT + f_UTRAN_LocationUpdate_WithoutLAUReq(p_CellId, v_RRC_DATA_IND.ttcn_start, true, NONE); // @sic R5-113660 sic@ + if (not p_MT_Call) { // @sic R5s120819 sic@ + alt { // @sic R5s120673 sic@ + // Emergcy call expect Service request with Emergency call establishment + //@sic R5s120111 sic@ + [p_EmergCall] U_Dc.receive(car_UplinkDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_ServReq_MO_TMSI_Emergency(?))) // @sic R5s120673 sic@ + -> value v_RRC_DATA_IND {} + + // MO Call [Neither MT nor Emergency] expect Service request with Mobile originating call establishment or packet mode connection establishment + //@sic R5s120111 sic@ + [not p_MT_Call and not p_EmergCall] U_Dc.receive(car_UplinkDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_ServReq_MO_TMSI(?))) // @sic R5s120673 sic@ + -> value v_RRC_DATA_IND {} + } + } + + //Steps 2a8-2a9 + f_UTRAN_RRC_Security(p_CellId, false, ps_domain); // @sic R5s120673 sic@ + v_SecurityInfo := f_UTRAN_Security_Get(); + + //Step 2a10-2a11 + f_UTRAN_MobilityInformation(p_CellId, cs_CNInfo_PSCS(v_PLMN_Identity, + v_LAC, + v_DRX_CycleLengthStructure, + v_PSSpecificNAS_Info, + v_CSSpecificNAS_Info)); + + // Step 2a12 @sic R5-131496 sic@ + if (not p_MT_Call) { // @sic R5s130797 sic@ + U_Dc.send ( cas_DataReq_CS ( utran_CellDedicated, tsc_RB3, cs_U_CM_ServAcc ) ); + } + } + else { + //Steps 2b6-2b7: Authentication Request and Authentication Response + f_UTRAN_SS_SecurityDownloadStart(cs_domain, v_RRC_DATA_IND.ttcn_start); + v_SecurityInfo.authKeys.CSinOtherRAT := true; + f_UTRAN_Security_Set(v_SecurityInfo); + f_UTRAN_MM_Authentication(); + + //Steps 2b8-2b9: Security Mode Command and Security Mode Complete for the CS domain + f_UTRAN_RRC_Security(p_CellId, true, cs_domain); + } // @sic R5s120673 sic@ + if (p_EmergCall) { + //Steps 3-9: Mobile origination emergency CS call is established + //Receive Emergency Setup message + U_Dc.receive(car_UplinkDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_ESetup((cr_BcapSpeechMO)))) -> value v_RRC_DATA_IND; + + v_TI_R := v_RRC_DATA_IND.msg.esetup.ti; + v_TI_S := v_TI_R; + v_TI_S.tiFlag := '1'B; + + //Transmit Call Proceeding message + U_Dc.send(cas_DataReq_CS(utran_CellDedicated, tsc_RB3, cs_U_CallProc(v_TI_S))); + + //Transmit Radio Bearer Setup message and Receive Radio Bearer Setup Complete message + f_UTRAN_Setup_RAB_PS_and_ConvSpeech(p_CellId); //@sic R5s120111 sic@ + + //Transmit Alerting message + U_Dc.send(cas_DataReq_CS(utran_CellDedicated, tsc_RB3, cs_U_Alert(v_TI_S))); + + //Transmit Connect message + U_Dc.send(cas_DataReq_CS(utran_CellDedicated, tsc_RB3, cs_U_Connect(v_TI_S))); + + //Receive Connect Acknowledge message + U_Dc.receive(car_UplinkDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_ConnAck(v_TI_R)));//@sic R5s120111 sic@ + } + else if (p_MT_Call) { //Paging response shall have been received + //Steps 3-9: Mobile terminating CS call is established + f_UTRAN_MT_SpeechCall_Steps7_17(p_CellId, false, true, false); //@sic R5s120455 sic@ + } else { //CM service Request shall have been received + //Steps 3-9: Mobile origination emergency CS call is established + f_UTRAN_M0_SpeechCall_Steps6_16(p_CellId, false, true, false); + } + + //Step 1 in parallel behaviour: Receive Routing Area Update Request (if it has not yet been received) + //deactivate the default which checks for RAU + deactivate(v_MyDefaultVar); + if (f_UTRAN_MsgInDefault_CheckRAU()) { //Check if the default has already received the message + v_RRC_DATA_IND := f_UTRAN_MsgInDefault_GetRAU(); + if (not match(v_RRC_DATA_IND, car_PS_UplinkDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_RA_UpdReqAny(cr_GMM_UpdateType(?, (tsc_I_UpdateTypeRAOnly, tsc_I_UpdateTypeCombined, tsc_I_UpdateTypeCombinedWithIMSI)), // @sic R5-125545 sic@ + cr_RAI(omit), + cr_PTMSI_SignatureAny ifpresent, + ?)))) { + f_UTRAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 1 in parallel behaviour - Routing Area Update Request message is incorrect"); + } + } + else { //Wait till UE sends Routing Area Update Request message + U_Dc.receive(car_PS_UplinkDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_RA_UpdReqAny(cr_GMM_UpdateType(?, (tsc_I_UpdateTypeRAOnly, tsc_I_UpdateTypeCombined, tsc_I_UpdateTypeCombinedWithIMSI)), // @sic R5-125545 sic@ + cr_RAI(omit), + cr_PTMSI_SignatureAny ifpresent, + ?))) -> value v_RRC_DATA_IND; + } + + //Step 10: Transmit Routing Area Update Accept + v_UpdateType := f_UG_RauReq_GetUpdateValueForRauAcc(v_RRC_DATA_IND.msg.routingAreaUpdateRequest); + U_Dc.send(cas_DataReq_PS(utran_CellDedicated, tsc_RB3, cs_U_RA_UpdAcc3(cs_GMM_UpdateResult(v_UpdateType), + cs_RAI(omit, cs_LAI(omit, v_PLMN, v_LAC), v_RAC), + cs_PTMSI_Signature(px_PTMSI_SigDef), + cs_MobileIdTMSIorPTMSI('18'O, px_PTMSI_Def), + v_RRC_DATA_IND.msg.routingAreaUpdateRequest.pDP_ContextStatus))); // @sic R5-133584 sic@ + + //Step 11: Receive Routing Area Update Complete + U_Dc.receive(car_PS_UplinkDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_RAUpdComplete)); + } + + /* + * @desc This procedure is according to 36.508 cl. 6.4.3.9.5 for SRVCC/aSRVCC + * @param p_CellId + * @param p_PDP_ContextStatus (default value: omit) + * @param p_UplinkDirectTransfer (default value: false) + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_UTRAN_SRVCC_WithHandover(UTRAN_CellId_Type p_CellId, + template (omit) PDP_ContextStatus p_PDP_ContextStatus := omit, + boolean p_UplinkDirectTransfer := false, + B1_Type p_FOP := '1'B) runs on UTRAN_PTC // @sic R5-133604 R5s140096 R5-144667 sic@ + { + var RRC_DATA_IND v_RRC_DATA_IND; + var B3_Type v_UpdateType; + var default v_MyDefaultVar := null; + var DRX_CycleLengthStructure v_DRX_CycleLengthStructure := f_UTRAN_CellInfo_GetDRX_CycleLength(p_CellId); + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + var PLMN_Identity v_PLMN_Identity := f_UTRAN_CellInfo_GetPLMNIdentity(p_CellId); + var octetstring v_PLMN := f_U_Asn2Nas_PlmnId(v_PLMN_Identity); + var octetstring v_LAC := f_UTRAN_CellInfo_GetLAC(p_CellId); + var octetstring v_RAC := f_UTRAN_CellInfo_GetRAC(p_CellId); + var octetstring v_PSSpecificNAS_Info := v_RAC & bit2oct(f_UTRAN_CellInfo_GetNMO(p_CellId)); + var octetstring v_CSSpecificNAS_Info := f_UTRAN_CellInfo_GetT3212(p_CellId) & int2oct(f_UTRAN_CellInfo_GetAttFlag(p_CellId), 1); + var template (omit) PDP_ContextStatus v_PDP_ContextStatus; + + //Step 1: Receive HANDOVER TO UTRAN COMPLETE + U_AM.receive (car_RLC_Data_Ind(utran_CellDedicated, // @sic R5s130561 sic@ + tsc_RB2, + cr_HandoverToUTRANComplete)); + + //Activate additional default behaviour to capture the Routing Area Update Request message + v_MyDefaultVar := activate(a_UTRAN_ReceiveRauRequest(p_UplinkDirectTransfer)); // @sic R5s130807 sic@ + + //Steps 2-3 + f_UTRAN_ConfigureIntegrityAfterHO(p_CellId, cs_domain); + v_SecurityInfo := f_UTRAN_Security_Get(); + + //Step 4-5 + f_UTRAN_MobilityInformation(p_CellId, cs_CNInfo_PSCS(v_PLMN_Identity, + v_LAC, + v_DRX_CycleLengthStructure, + v_PSSpecificNAS_Info, + v_CSSpecificNAS_Info)); + + //Step 6 + U_Dc.send (cas_DataReq_CS(utran_CellDedicated, tsc_RB3, cs_TMSI_ReallocCmd(v_PLMN, v_LAC, cs_MobileIdTMSIorPTMSI(omit, px_TMSI_Def)))); // @sic R5s130807 sic@ + + //Step 7 + //Receive TMSI Reallocation Complete + // ToDo, need to confirm if uplink direct transfer needs to be allowed. + alt { + [] U_Dc.receive(car_UplinkDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_TMSI_ReallocCmpl)) + {} + [] U_Dc.receive(car_InitDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_TMSI_ReallocCmpl)) + {} + } + + //Step 1 in parallel behaviour: Receive Routing Area Update Request (if it has not yet been received) + //deactivate the default which checks for RAU + deactivate(v_MyDefaultVar); + if (f_UTRAN_MsgInDefault_CheckRAU()) { //Check if the default has already received the message + v_RRC_DATA_IND := f_UTRAN_MsgInDefault_GetRAU(); //@sic R5s140096 sic@ + if (not (match(v_RRC_DATA_IND, car_PS_InitDirectTransfer(utran_CellDedicated, // @sic R5s130561 sic@ + tsc_RB3, + cr_U_RA_UpdReqAny(cr_GMM_UpdateType(?, (tsc_I_UpdateTypeRAOnly, tsc_I_UpdateTypeCombined, tsc_I_UpdateTypeCombinedWithIMSI)), // @sic R5-125545 sic@ + cr_RAI(omit), + cr_PTMSI_SignatureAny ifpresent, + ?))) or + match(v_RRC_DATA_IND,car_PS_UplinkDirectTransfer(utran_CellDedicated, // @sic R5s130561 sic@ + tsc_RB3, + cr_U_RA_UpdReqAny(cr_GMM_UpdateType(?, (tsc_I_UpdateTypeRAOnly, tsc_I_UpdateTypeCombined, tsc_I_UpdateTypeCombinedWithIMSI)), // @sic R5-125545 sic@ + cr_RAI(omit), + cr_PTMSI_SignatureAny ifpresent, + ?))))) + { + f_UTRAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 1 in parallel behaviour - Routing Area Update Request message is incorrect"); + } + } + else { //Wait till UE sends Routing Area Update Request message + alt { //@sic R5s140096 sic@ + [not p_UplinkDirectTransfer] U_Dc.receive (car_PS_InitDirectTransfer(utran_CellDedicated, // @sic R5s130561 sic@ + tsc_RB3, + cr_U_RA_UpdReqAny(cr_GMM_UpdateType(?, (tsc_I_UpdateTypeRAOnly, tsc_I_UpdateTypeCombined, tsc_I_UpdateTypeCombinedWithIMSI)), // @sic R5-125545 sic@ + cr_RAI(omit), + cr_PTMSI_SignatureAny ifpresent, + ?))) -> value v_RRC_DATA_IND + {} + [p_UplinkDirectTransfer] U_Dc.receive (car_PS_UplinkDirectTransfer(utran_CellDedicated, // @sic R5s130561 sic@ + tsc_RB3, + cr_U_RA_UpdReqAny(cr_GMM_UpdateType(?, (tsc_I_UpdateTypeRAOnly, tsc_I_UpdateTypeCombined, tsc_I_UpdateTypeCombinedWithIMSI)), // @sic R5-125545 sic@ + cr_RAI(omit), + cr_PTMSI_SignatureAny ifpresent, + ?))) -> value v_RRC_DATA_IND + {} + } + } + //@sic R5s130561 sic@ + //SMC in PS domain + // @sic R5s130904 sic@ + + //Step 8: Transmit Routing Area Update Accept + v_UpdateType := f_UG_RauReq_GetUpdateValueForRauAcc(v_RRC_DATA_IND.msg.routingAreaUpdateRequest); + f_UTRAN_SS_SecurityDownloadStart(ps_domain, v_RRC_DATA_IND.ttcn_start); + f_UTRAN_RRC_Security(p_CellId, false, ps_domain); + + if (isvalue(p_PDP_ContextStatus)) { // @sic R5-133584 sic@ + v_PDP_ContextStatus := p_PDP_ContextStatus; + } else { + v_PDP_ContextStatus := v_RRC_DATA_IND.msg.routingAreaUpdateRequest.pDP_ContextStatus; + } + U_Dc.send (cas_DataReq_PS(utran_CellDedicated, tsc_RB3, cs_U_RA_UpdAcc3(cs_GMM_UpdateResult(v_UpdateType, p_FOP), // @sic R5-144667 sic@ + cs_RAI(omit, cs_LAI(omit, v_PLMN, v_LAC), v_RAC), + cs_PTMSI_Signature(px_PTMSI_SigDef), + cs_MobileIdTMSIorPTMSI('18'O, px_PTMSI_Def ), + v_PDP_ContextStatus))); // @sic R5s133604 sic@ + + //Step 9: Receive Routing Area Update Complete + U_Dc.receive(car_PS_UplinkDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_RAUpdComplete)); // @sic R5s130561 sic@ + } + + /* + * @desc This procedure is used e.g. in test case 13.4.2.1 + * @param p_CellId + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_PS_Handover(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + var RRC_DATA_IND v_RRC_DATA_IND; + var B3_Type v_UpdateType; + var default v_MyDefaultVar := null; + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + var PLMN_Identity v_PLMN_Identity := f_UTRAN_CellInfo_GetPLMNIdentity(p_CellId); + var octetstring v_PLMN := f_U_Asn2Nas_PlmnId(v_PLMN_Identity); + var octetstring v_LAC := f_UTRAN_CellInfo_GetLAC(p_CellId); + var octetstring v_RAC := f_UTRAN_CellInfo_GetRAC(p_CellId); + var DRX_CycleLengthStructure v_DRX_CycleLengthStructure := f_UTRAN_CellInfo_GetDRX_CycleLength(p_CellId); + var octetstring v_PSSpecificNAS_Info := v_RAC & bit2oct(f_UTRAN_CellInfo_GetNMO(p_CellId)); + var octetstring v_CSSpecificNAS_Info := f_UTRAN_CellInfo_GetT3212(p_CellId) & int2oct(f_UTRAN_CellInfo_GetAttFlag(p_CellId), 1); + + //Step 1: Receive HANDOVER TO UTRAN COMPLETE + U_AM.receive(car_RLC_Data_Ind(utran_CellDedicated, + tsc_RB2, + cr_HandoverToUTRANComplete)); + + //Activate additional default behaviour to capture the Routing Area Update Request message + v_MyDefaultVar := activate(a_UTRAN_ReceiveRauRequest(true)); // @sic R5s120070 sic@ + + //Steps 2b1-2b2 + f_UTRAN_ConfigureIntegrityAfterHO(p_CellId); + v_SecurityInfo := f_UTRAN_Security_Get(); + + //Step 2b3-2b4 + f_UTRAN_MobilityInformation(p_CellId, cs_CNInfo_PSCS(v_PLMN_Identity, + v_LAC, + v_DRX_CycleLengthStructure, + v_PSSpecificNAS_Info, + v_CSSpecificNAS_Info)); + + //Step 1 in parallel behaviour: Receive Routing Area Update Request (if it has not yet been received) + //deactivate the default which checks for RAU + deactivate(v_MyDefaultVar); + if (f_UTRAN_MsgInDefault_CheckRAU()) { //Check if the default has already received the message + v_RRC_DATA_IND := f_UTRAN_MsgInDefault_GetRAU(); + if (not match(v_RRC_DATA_IND, car_PS_UplinkDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_RA_UpdReqAny(cr_GMM_UpdateType(?, (tsc_I_UpdateTypeRAOnly, tsc_I_UpdateTypeCombined, tsc_I_UpdateTypeCombinedWithIMSI)), // @sic R5-125545 sic@ + cr_RAI(omit), + cr_PTMSI_SignatureAny ifpresent, + ?)))) { + f_UTRAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 1 in parallel behaviour - Routing Area Update Request message is incorrect"); + } + } + else { //Wait till UE sends Routing Area Update Request message + U_Dc.receive(car_PS_UplinkDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_RA_UpdReqAny(cr_GMM_UpdateType(?, (tsc_I_UpdateTypeRAOnly, tsc_I_UpdateTypeCombined, tsc_I_UpdateTypeCombinedWithIMSI)), // @sic R5-125545 sic@ + cr_RAI(omit), + cr_PTMSI_SignatureAny ifpresent, + ?))) -> value v_RRC_DATA_IND; + } + + //Step 10: Transmit Routing Area Update Accept + v_UpdateType := f_UG_RauReq_GetUpdateValueForRauAcc(v_RRC_DATA_IND.msg.routingAreaUpdateRequest); + U_Dc.send(cas_DataReq_PS(utran_CellDedicated, tsc_RB3, cs_U_RA_UpdAcc3(cs_GMM_UpdateResult(v_UpdateType), + cs_RAI(omit, cs_LAI(omit, v_PLMN, v_LAC), v_RAC), + cs_PTMSI_Signature(px_PTMSI_SigDef), + cs_MobileIdTMSIorPTMSI('18'O, px_PTMSI_Def), + v_RRC_DATA_IND.msg.routingAreaUpdateRequest.pDP_ContextStatus))); // @sic R5-133584 sic@ + + //Step 11: Receive Routing Area Update Complete + U_Dc.receive(car_PS_UplinkDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_RAUpdComplete)); + } + +} // end of module diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_Component.ttcn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_Component.ttcn new file mode 100644 index 0000000..4561f1e --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_Component.ttcn @@ -0,0 +1,478 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-11 11:08:39 +0200 (Thu, 11 Sep 2014) $ +// $Rev: 12201 $ +/******************************************************************************/ + +module UTRAN_Component { + import from UpperTesterPtcToMtcDefs all; // all messages being defined to communicate with the upper tester; port definitions + import from CommonIratDefs all; // all messages being defined to communicate Geran/Utran components; port definitions + import from CommonDefs all; + import from TestcaseProperties all; + import from NAS_CommonTypeDefs all; + import from NAS_AuthenticationCommon all; + import from UTRAN_TypeDefs all; + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_ASP_Definitions language "ASN.1:2002" all; + import from UTRAN_ASP_VirtualNoiseDefs all; + import from UTRAN_CommonDefs all; + import from UTRAN_ASN1_ASP_Templates all; + import from IP_PTC_CtrlMsgs all; + import from IMS_PTC_CoordMsg all; + + //============================================================================ + // global types for control of the UTRAN: + //---------------------------------------------------------------------------- + + type enumerated SysinfoConfiguration_Type { configuration1, configuration6, configuration7, configuration9, configuration10}; /* @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + @sic R5-144078 sic@ */ + + type record RlcCtrl_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + TimerPoll timerPoll, // value for polling timer, this initial value is for ts_SS_CreateCellFACH. (from 34.123-1). used in RB2, RB3, RB4 + TimerPollProhibit timerPollProhibit, // minimum time between polls, this initial value is for ts_SS_CreateCellFACH. (from 34.123-1). used in RB2, RB3, RB4 + Poll_SDU pollSDU, // number of SDU's between pollings, this initial value is for ts_SS_CreateCellFACH. (from 34.123-1). used in RB2, RB3, RB4. + PollWindow pollWindow // percentage of transmission window,threshold for polling, this initial value is for ts_SS_CreateCellFACH. (from 34.123-1). used in RB2, RB3, RB4. + }; + + type record DRX_CycleLengthStructure { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + // Structure that contains CN DRX cycle length (CS and PS) and the UTRAN DRX Cycle length. + // This type is to be used in the CellInfoCfg in order to keep all DRX values. + CN_DRX_CycleLengthCoefficient cN_CS_DRX_CycleLength optional, + CN_DRX_CycleLengthCoefficient cN_PS_DRX_CycleLength optional, + UTRAN_DRX_CycleLengthCoefficient uTRAN_DRX_CycleLength optional + }; + + type record UTRAN_CellInfo_Type_TDD { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + // This structure contains relevant information describing a cell configuration as needed for basic test Steps like ts_CreateCell and ts_IdleUpdated. + // NOTE: this information is not related to any PDUs, IEs or ASPs + + FrequencyInfo frequencyInfo_S1, // Frequency information for N-Frequency cell + FrequencyInfo frequencyInfo_S2, // Frequency information for N-Frequency cell + UpPCHposition_LCR upPCHposition, + UpPCHposition_LCR upPCHposition_S1, + UpPCHposition_LCR upPCHposition_S2, + + integer attenuationLevel_S1, // Value of RF attenuator + integer attenuationLevel_S2, // Value of RF attenuator + CellParametersID cellParametersID, // Cell Parameters ID + DL_TxPower_PCCPCH powerpCCPCH, + + DL_TxPower powerFPACH, + + TimeSlotConfigurationList_LCR timeSlotConfigurationList_LCR, + TransmissionDiversityApplied transmissionDiversityApplied, + DwPCHInfo dwPCHInfo + }; + + type record UTRAN_CellInfo_Type_FDD { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + // This structure contains relevant information describing a cell configuration as needed for basic test Steps like ts_CreateCell and ts_IdleUpdated. + // NOTE: this information is not related to any PDUs, IEs or ASPs + + PrimaryScramblingCode priScrmCode, // Primary Scrambling Code + DL_TxPower_PCPICH powerpCPICH, // Absolute Tx Power of (primary) CPICH + DL_TxPower powerpCCPCH, // Tx power level of primary CCPCH relative to CPICH + DL_TxPower powerpSCH, // Tx power level of primary SCH relative to CPICH + DL_TxPower powersSCH, // Tx power level of secondary SCH relative to CPICH + + integer timingsCCPCH1, // Timing offset for secondary CCPCH1 + AICH_PowerOffset powerAICH, // Tx power level of AICH relative to CPICH + SCCPCHSlotFormat slotFormatsCCPCH1, // Slot format for secondary CCPCH1 + UL_ScramblingCode uL_ScramblingCode, // To hold the UL scrambling to be used in the cell + FrequencyBandFDD operationBand, + + integer band, // Operation Band used in the cell + Tcell tcell // Tcell value @sic R5-125679 sic@ + }; + + type record UTRAN_CellSysInfo_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + MasterInformationBlock MIB, + SysInfoTypeSB1 SB1, + SysInfoType1 SIB1, + SysInfoType2 SIB2, + SysInfoType3 SIB3, + SysInfoType4 SIB4, + SysInfoType5 SIB5, + SIB_Type SIB5_Type, // holding the SIB5 type, for band 4 and 9 it shall be assigned to systemInformationBlockType5bis + SysInfoType6 SIB6, + SysInfoType7 SIB7, + SysInfoType11 SIB11 optional, // This is not optional, but it has to be set to omit until data from all the cells is present + SysInfoType12 SIB12, + SysInfoType16 SIB16 optional, // @sic R5s120615 sic@ + SysInfoType18 SIB18, + SysInfoType19 SIB19, + SysInfoType21 SIB21 optional, // @sic R5-144078 sic@ + SysInfoType22 SIB22 optional, // @sic R5-144078 sic@ + boolean MIB_ValueTagChanged, // set to TRUE after MIBValueTag changed, set to FALSE after MIB delivered to SS. + boolean SB1_ValueTagChanged, // set to TRUE after SB1ValueTag changed, set to FALSE after SB1 delivered to SS. + SysinfoConfiguration_Type config //UTRAN Sysinfo configuration as defined in 34.108 cl 6.1.0a.2 @sic R5-144078 sic@ + //Field used in UTRAN34 tc only + }; + + type record UTRAN_CellInfo_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + // This structure contains relevant information describing a cell configuration as needed for basic test Steps like ts_CreateCell and ts_IdleUpdated. + // NOTE: this information is not related to any PDUs, IEs or ASPs + UTRAN_CellId_Type cellId, // Cell Id + UTRAN_FDD_TDD_Type fdd_tdd, // whether cell is FDD or TDD + FrequencyInfo frequencyInfo, // Frequency information for current cell + integer attenuationLevel, // Value of RF attenuator + DL_TxPower powersCCPCH, // Tx power level of secondary CCPCH relative to CPICH + DL_TxPower powersCCPCH1, // Tx power level of secondary CCPCH1 relative to CPICH + PICH_PowerOffset powerPICH, // Tx power level of PICH relative to CPICH + CellTxPowerLevel cellTxPowerLevel, // Total cell power level (>= sum of all configured physical channels) + integer sfnOffset, // SFN offset (in frames) + PuncturingLimit puncLimit, // Puncturing limit for PRACH + SF_PRACH sf_PRACH optional, // Spreading factor for PRACH // @sic R5s120615 sic@ + PLMN_Identity plmnId, // even though this is the same definition as EUTRA, will probably be treated differently + NAS_Lac lac, // LAC + NAS_Rac rac, // RAC + integer attFlag, // Attach flag (as broadcasted in BCCH) + octetstring nmo, // Network mode of operation + bitstring ura_Identity, // URA Identity (3GPP 25.331 clause 10.3.2.6) + octetstring t3212, // T3212 value + C_RNTI cRNTI, // cell radio network temporary identity assigned to the UE under test, this initial value is for ts_SS_CreateCellFACH. ( from 34.123-1) + U_RNTI uRNTI, // srnc_Identity and s_RNTI + RB_ConfigType cellConfig, // Current configuration of the cell + RlcCtrl_Type rlcParams, // RLC parameters + DRX_CycleLengthStructure dRX_CycleLength, // To hold the 3 dRX_CycleLength + integer nodeB_Id, + UTRAN_CellInfo_Type_TDD cellInfo_Specific_TDD optional, + UTRAN_CellInfo_Type_FDD cellInfo_Specific_FDD optional, + UTRAN_CellSysInfo_Type sysInfo // SysInfo Structure + }; + + // @sic R5s130350 sic@ + const integer tsc_UTRAN_NumberOfCells := 8; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + type record length (tsc_UTRAN_NumberOfCells) of UTRAN_CellInfo_Type UTRAN_CellInfoList_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + //============================================================================ + + type record AuthCSKeys_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + bitstring CKey, // Ciphering Key; 128 bits (TS 33.102 cl. 6.3.7, TS 34.108 cl. 8.1.2) + bitstring IKey, // Integrity Key; 128 bits (TS 33.102 cl. 6.3.7, TS 34.108 cl. 8.1.2) + KeySeq CKeySeq // Ciphering key sequence number + }; + + type record SecurityCtrl_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + AuthCSKeys_Type AuthCS, + Common_AuthenticationParams_Type AuthPS, + boolean CSinOtherRAT, // Set to true if either LAU or Combined RAU done; @sic R5-110746 sic@ + B20_Type HFN // Hyper Frame Number for CS or PS domain - to be used in security steps + }; + + type record UTRAN_SecurityInfo_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + // This structure contains relevant information independant from the cell + boolean cs_cipheringStarted, // Set to TRUE when ciphering is started, to be initiated in Security Steps and used in RAB establishment Steps + boolean ps_cipheringStarted, // Set to TRUE when ciphering is started, to be initiated in Security Steps and used in RAB establishment Steps + CN_DomainIdentity recentSecureDomain, // the domain on which security was recently started, and hence the SRB are ciphered and Integrit protected with this domain. + CipheringModeCommand_r7 dL_CipherMode, // To hold the DL cipher mode to be used in RAB Steps. + CipheringModeCommand dL_CipherMode_r99, // To hold the DL cipher mode to be used in RAB Steps. @sic R5-125679 sic@ + RB_ActivationTimeInfoList uL_CipherMode optional, // To hold the UL cipher mode to be used in RAB Steps. + bitstring cipheringAlgorithmCapability, // BITSTRING thats hold the ciphering algorithm capability supported by UE + boolean integrityStarted, // Set to TRUE when integrity is started + IntegrityProtectionModeInfo_r7 dL_Integrity, // To hold the DL integrity protection active during a test case + IntegrityProtectionModeInfo dL_Integrity_r99, // To hold the DL integrity protection active during a test case @sic R5-125679 sic@ + IntegrityProtActivationInfo uL_Integrity optional, // To hold the UL integrity protection active during a test case + B16_Type integrProtAlgCap, // To hold the integrity protection algorithm capability + IntegrityCheckInfo dl_IntegrityCheckInfo optional, // To hold the integrity information to be sent + START_Value start_CS, // To hold the START value for CS Domain + START_Value start_PS, // To hold the START value for PS Domain + SecurityCtrl_Type authKeys, // Containing the latest authentication keys + boolean cipheringOnOff // To indicate if Ciphering needs to be enabled or not in SS @sic R5s130116 sic@ + }; + + //============================================================================ + + type record UTRAN_MsgReceivedInDefault_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + RRC_DATA_IND cmServiceRequest optional, + RRC_DATA_IND locationUpdatingRequest optional, + RRC_DATA_IND pagingResponse optional, + RRC_DATA_IND routingAreaUpdateRequest optional, + U_RLC_AM_IND measurementReport optional // @sic R5s140340 sic@ + }; + + //============================================================================ + + type record UTRAN_MobileInfo_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + octetstring ue_EUTRA_Capability optional, // UE-EUTRA-Capability + UE_OperationMode ue_OperationMode optional, // UE UTRAN Operation mode A or C - Used in UTRAN34 test cases + AccessStratumReleaseIndicator ue_Release optional // UE release + }; + + //============================================================================ + + type enumerated UTRAN_Default_Enum_Type {StandardDefault}; /* refers to common default alt_UTRAN_Standard_Default; @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + type record UTRAN_DefaultCtrl_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + boolean U_TM_Blocked, + boolean U_Dc_Blocked + }; + + type record UTRAN_Ctrl_Type { /* @status APPROVED (LTE_A, IMS_IRAT, LTE_IRAT, POS, SSNITZ, UTRAN) */ + default Default, /* default behaviour being activated on UTRAN */ + UTRAN_DefaultCtrl_Type DefaultCtrl, /* to control temporary blocking of ports */ + boolean TestBody /* true: => fail may be assigend + false: => inconc is assigned instead of fail */ + }; + + type record UTRAN_ConfigurationInfo_Type { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + boolean PdcpConfiguration, + UTRAN_FddTddMessageClass_Type TestCaseRelease // @sic R5s130195 Utran release sic@ + }; + + type record UTRAN_Global_Type { /* @status APPROVED (LTE_A, IMS_IRAT, LTE_IRAT, POS, SSNITZ, UTRAN) */ + UTRAN_Ctrl_Type Ctrl, + UTRAN_SecurityInfo_Type Security, + UTRAN_CellInfoList_Type CellArray, + UTRAN_MsgReceivedInDefault_Type MsgInDefault, + UTRAN_MobileInfo_Type MobileInfo, // @sic R5-123734 sic@ + UTRAN_ConfigurationInfo_Type ConfigurationInfo //@sic R5s130195 sic@ + }; + + type component UTRAN_PTC { /* @status APPROVED (LTE_A, IMS_IRAT, LTE_IRAT, POS, SSNITZ, UTRAN) */ + var UTRAN_Global_Type vc_UTRAN_Global; + + port UTRAN_AM_PORT U_AM; + port UTRAN_TM_PORT U_TM; + port UTRAN_UM_PORT U_UM; + port UTRAN_PDCP_PORT U_PDCP; + port UTRAN_CPHY_PORT U_CPHY; + port UTRAN_CMAC_PORT U_CMAC; + port UTRAN_CRLC_PORT U_CRLC; + port UTRAN_CPDCP_PORT U_CPDCP; + port UTRAN_Dc_PORT U_Dc; + + port UTRAN_VNG_PORT U_VNG; + + port UT_PTC_MTC_PORT UT; + port IRAT_CO_ORD_PORT EUTRA; + port IRAT_CO_ORD_PORT GERAN; + port IP_RAT_CTRL_PORT IP; /* @sic R5-125676 sic@ */ + port IMS_IPCAN_CO_ORD_PORT IMS[tsc_NoOfPDNs]; /* @sic R5-142919 sic@ */ + }; + + type component UTRAN_SYSTEM { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + port UTRAN_AM_PORT S_U_AM; + port UTRAN_TM_PORT S_U_TM; + port UTRAN_UM_PORT S_U_UM; + port UTRAN_PDCP_PORT S_U_PDCP; + port UTRAN_CPHY_PORT S_U_CPHY; + port UTRAN_CMAC_PORT S_U_CMAC; + port UTRAN_CRLC_PORT S_U_CRLC; + port UTRAN_CPDCP_PORT S_U_CPDCP; + port UTRAN_Dc_PORT S_U_Dc; + + port UTRAN_VNG_PORT S_U_VNG; + }; + + //============================================================================ + /* + * @desc Map UTRAN's system ports + * @param p_Utran + * @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_PTC_Map(UTRAN_PTC p_Utran) + { + map(p_Utran:U_AM, system:S_U_AM); + map(p_Utran:U_TM, system:S_U_TM); + map(p_Utran:U_UM, system:S_U_UM); + map(p_Utran:U_PDCP, system:S_U_PDCP); + map(p_Utran:U_CPHY, system:S_U_CPHY); + map(p_Utran:U_CMAC, system:S_U_CMAC); + map(p_Utran:U_CRLC, system:S_U_CRLC); + map(p_Utran:U_CPDCP, system:S_U_CPDCP); + map(p_Utran:U_Dc, system:S_U_Dc); + + if (f_GetTestcaseAttrib_Qbased_Rsrq(testcasename())) { // virtual noise generator for RSRQ test cases + map(p_Utran:U_VNG, system:S_U_VNG); + } + } + + //============================================================================ + // standard default behaviour: + template (present) U_RLC_AM_IND cr_U_RLC_AM_IND_Any := ?; /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (present) RLC_TR_DATA_IND cr_RLC_TR_DATA_IND_Any := ?; /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (present) RLC_UM_DATA_IND cr_RLC_UM_DATA_IND_Any := ?; /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (present) U_CPHY_CONFIG_CNF cr_U_CPHY_CONFIG_CNF_Any := ?; /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (present) U_CMAC_CONFIG_CNF cr_U_CMAC_CONFIG_CNF_Any := ?; /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (present) U_CRLC_CONFIG_CNF cr_U_CRLC_CONFIG_CNF_Any := ?; /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (present) RRC_DATA_IND cr_RRC_DATA_IND_Any := ?; /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + /* + * @desc standard default behaviour for UTRAN + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + altstep a_UTRAN_StandardDefault() runs on UTRAN_PTC + { // @sic R5s110431 sic@ + // @sic R5s120049: new parameter to take TM out of the ports to be handled; this is e.g. to deal with an incoming RRC Connection Request directly after RRC Connection Release sic@ + // @sic R5s120086 (R5s120107): global variables instead of special default behaviours to support blocking of further ports (-> U_Dc) and avoid problems with the order of activating defaults sic@ + [] U_CPHY.receive (car_CPHY_Sync_IND (tsc_UL_DPCH1)) { // @sic R5s110216 sic@ + repeat; + } + [] U_CPHY.receive (car_CPHY_Out_of_Sync_IND (tsc_UL_DPCH1)) { // @sic R5s110216 sic@ + repeat; + } + [] U_CRLC.receive (car_CRLC_Integrity_Failure_IND) { // @sic R5s110216 sic@ + repeat; + } + [] U_AM.receive (cr_U_RLC_AM_IND_Any){ + all timer.stop; + f_UTRAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "unexpected receive event at U_AM port"); + } + [not vc_UTRAN_Global.Ctrl.DefaultCtrl.U_TM_Blocked] U_TM.receive (cr_RLC_TR_DATA_IND_Any) { // @sic R5s120098 R5s120086 sic@ + all timer.stop; + f_UTRAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "unexpected receive event at U_TM port"); + } + [] U_UM.receive (cr_RLC_UM_DATA_IND_Any){ + all timer.stop; + f_UTRAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "unexpected receive event at U_UM port"); + } + [] U_CPHY.receive (cr_U_CPHY_CONFIG_CNF_Any){ + all timer.stop; + f_UTRAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "unexpected receive event at U_CPHY port"); + } + [] U_CMAC.receive (cr_U_CMAC_CONFIG_CNF_Any) { + all timer.stop; + f_UTRAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "unexpected receive event at U_CMAC port"); + } + [] U_CRLC.receive (cr_U_CRLC_CONFIG_CNF_Any) { + all timer.stop; + f_UTRAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "unexpected receive event at U_CRLC port"); + } + [not vc_UTRAN_Global.Ctrl.DefaultCtrl.U_Dc_Blocked] U_Dc.receive (cr_RRC_DATA_IND_Any) { + all timer.stop; + f_UTRAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "unexpected receive event at U_Dc port"); + } + // @sic R5s140316 sic@ + [] any timer.timeout { + all timer.stop; + f_UTRAN_SetVerdictFailOrInconc(__FILE__, __LINE__, "unexpected timeout"); + } + } + + //============================================================================ + // common functions: + + /* + * @desc to deal with entry and exit of the test body + * @param p_TestBodyFlag + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_TestBody_Set(boolean p_TestBodyFlag) runs on UTRAN_PTC + { + vc_UTRAN_Global.Ctrl.TestBody := p_TestBodyFlag; + } + + /* + * @desc check whether test body is active + * @return boolean + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function fl_UTRAN_TestBody_Check() runs on UTRAN_PTC return boolean + { + return vc_UTRAN_Global.Ctrl.TestBody; + } + + /* + * @desc set correct verdict: FAIL is assigned only when being in the test body + * @param p_FileName + * @param p_LineNo + * @param p_Msg + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SetVerdictFailOrInconc(charstring p_FileName, + LineNo_Type p_LineNo, + charstring p_Msg) runs on UTRAN_PTC + { + if (fl_UTRAN_TestBody_Check()) { + f_SetVerdict(fail, p_FileName, p_LineNo, p_Msg); + } else { + f_SetVerdict(inconc, p_FileName, p_LineNo, p_Msg); + } + self.kill; // => testcase will terminate immediately + } + + /* + * @desc set correct verdict: prelininary PASS is only be assigned when being in the test body + * @param p_FileName + * @param p_LineNo + * @param p_Msg + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_PreliminaryPass(charstring p_FileName, + LineNo_Type p_LineNo, + charstring p_Msg) runs on UTRAN_PTC + { + if (fl_UTRAN_TestBody_Check()) { + f_SetVerdict(pass, p_FileName, p_LineNo, p_Msg); + } + } + + //---------------------------------------------------------------------------- + + /* + * @desc to (temporarily) block the U_TM port + * @param p_Block + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_Default_BlockTM(boolean p_Block) runs on UTRAN_PTC + { + vc_UTRAN_Global.Ctrl.DefaultCtrl.U_TM_Blocked := p_Block; + } + + /* + * @desc to (temporarily) block the U_Dc port + * @param p_Block + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_UTRAN_Default_BlockDc(boolean p_Block) runs on UTRAN_PTC + { + vc_UTRAN_Global.Ctrl.DefaultCtrl.U_Dc_Blocked := p_Block; + } + + /* + * @desc to activate the standard default behaviour + * @param p_Default identifies a standard behaviour to be activated + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_ActivateDefault(UTRAN_Default_Enum_Type p_Default) runs on UTRAN_PTC + { // @sic R5s120049: new default behaviour "StandardDefault_BlockTM" (removed again due to R5s120086 (R5s120107)) sic@ + // @sic R5s120086 (R5s120107): global variables instead of special default behaviours to support blocking of further ports (-> U_Dc) and avoid problems with the order of activating defaults sic@ + vc_UTRAN_Global.Ctrl.DefaultCtrl.U_TM_Blocked := false; + vc_UTRAN_Global.Ctrl.DefaultCtrl.U_Dc_Blocked := false; + + deactivate(vc_UTRAN_Global.Ctrl.Default); + + select (p_Default) { + case (StandardDefault) { + vc_UTRAN_Global.Ctrl.Default := activate(a_UTRAN_StandardDefault()); + } + case else { + FatalError (__FILE__, __LINE__, "unknown default behaviour"); + } + } + } + + //---------------------------------------------------------------------------- + /* + * @desc Initialise messages which may be received in an additional default behaviour and need to be stored at a globale place + * @return UTRAN_MsgReceivedInDefault_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_MsgInDefault_Init() return UTRAN_MsgReceivedInDefault_Type + { + var UTRAN_MsgReceivedInDefault_Type v_MsgInDefault; + + v_MsgInDefault.cmServiceRequest := omit; + v_MsgInDefault.locationUpdatingRequest := omit; + v_MsgInDefault.pagingResponse := omit; + v_MsgInDefault.routingAreaUpdateRequest := omit; + + return v_MsgInDefault; + } + +} diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ConfigurationSteps.ttcn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ConfigurationSteps.ttcn new file mode 100644 index 0000000..6928a72 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_ConfigurationSteps.ttcn @@ -0,0 +1,3769 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-07 18:37:49 +0200 (Sun, 07 Sep 2014) $ +// $Rev: 12081 $ +/******************************************************************************/ + +module UTRAN_ConfigurationSteps { + + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_ASP_Definitions language "ASN.1:2002" all; + import from NAS_24008TypeDefs all; + import from UTRAN_TypeDefs all; + import from UTRAN_CommonDefs all; + import from UTRAN_CellInfo all; + import from UTRAN_Component all; + import from UTRAN_ASN1_ASP_Templates all; + import from UTRAN_ASN1_ASP_Templates_r10 all; + import from UTRAN_ASN1_ASP_Templates_r11 all; + import from UTRAN_TTCN_ASP_Templates all; + import from UTRAN_RRC_CommonTemplates all; + import from UTRAN_RRC_SysInfo_Templates all; + import from UTRAN_RRC_RAB_Templates all; + import from UTRAN_RRC_RAB_Templates_r9 all; + import from UTRAN_RRC_RAB_Templates_r10 all; + import from UTRAN_ASN1_ASP_RAB_Templates_r11 all; + import from UTRAN_RRC_Templates all; + import from UTRAN_RRC_Templates_r11 all; + import from UTRANGERAN_CommonFunctions all; + import from Parameters all; + import from CommonDefs all; + import from UTRAN_RRC_RAB_Templates_r11 all; + + /* + * @desc To configure measurement parameters for LCR TDD : cellDCHMeasOccasionInfo-TDD128 + * @param p_CellId + * @param p_ActivationTime + * @param p_CellDCHMeasOccasionInfo + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_UTRAN_CPHY_MeasurementConfig_TDD(UTRAN_CellId_Type p_CellId, + template (value) SS_ActivationTime p_ActivationTime, + template (value) CellDCHMeasOccasionInfo_TDD128_r9 p_CellDCHMeasOccasionInfo) runs on UTRAN_PTC + { + U_CPHY.send(cas_CPHY_MeasurementConfig_REQ (p_CellId,p_ActivationTime,p_CellDCHMeasOccasionInfo )); + U_CPHY.receive(car_CPHY_MeasurementConfig_CNF(p_CellId)); + } + + /* + * @desc To request to setup, reconfigure or release RLC entity. + * Procedure waits for confirmation of successful setup, release or reconfiguration. + * @param p_CRLC_Config_REQ + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CRLC_Config(template (value) U_CRLC_CONFIG_REQ p_CRLC_Config_REQ) runs on UTRAN_PTC + { + U_CRLC.send(p_CRLC_Config_REQ); + U_CRLC.receive(car_CRLC_CfgCnf); // we don't care what the values are, we just need to wait for the CNF + } + + /* + * @desc To request to setup the associated transport channel and the Radio Link itself. + * Procedure waits for confirmation of successful setup of the Radio Link. + * @param p_CPHY_RL_Setup_REQ + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CPHY_RL_Setup(template (value) U_CPHY_CONFIG_REQ p_CPHY_RL_Setup_REQ) runs on UTRAN_PTC + { + U_CPHY.send(p_CPHY_RL_Setup_REQ); + U_CPHY.receive(car_RL_SetupCnf); // we don't care what the values are, we just need to wait for the CNF + } + + /* + * @desc To request to release the associated transport channel and the Radio Link itself. + * Procedure waits for confirmation of successful release of the Radio Link. + * @param p_CPHY_RL_Release_REQ + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CPHY_RL_Release(template (value) U_CPHY_CONFIG_REQ p_CPHY_RL_Release_REQ) runs on UTRAN_PTC + { + U_CPHY.send(p_CPHY_RL_Release_REQ); + U_CPHY.receive(car_RL_RelCnf); // we don't care what the values are, we just need to wait for the CNF + } + + /* + * @desc To request to configure the transport channel + * Procedure waits for confirmation of successful configuration of the transport channel + * @param p_CPHY_TrCH_Config_REQ + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CPHY_TrCH_Config(template (value) U_CPHY_CONFIG_REQ p_CPHY_TrCH_Config_REQ) runs on UTRAN_PTC + { + U_CPHY.send(p_CPHY_TrCH_Config_REQ); + U_CPHY.receive(car_TrChCfgCnf); // we don't care what the values are, we just need to wait for the CNF + } + + /* + * @desc To request to release the transport channel + * Procedure waits for confirmation of successful release of the transport channel + * @param p_CPHY_TrCH_Rel_REQ + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CPHY_TrCH_Release(template (value) U_CPHY_CONFIG_REQ p_CPHY_TrCH_Rel_REQ) runs on UTRAN_PTC + { + U_CPHY.send(p_CPHY_TrCH_Rel_REQ); + U_CPHY.receive(car_PHY_RelCnf); // we don't care what the values are, we just need to wait for the CNF + } + + /* + * @desc To request to to configure MAC entity. + * Setup is used for creation of the MAC instances or the MAC resources. + * Release is used for free all the MAC resources. + * Reconfiguration is used for changing the MAC parameters + * Procedure waits for confirmation of successful setup, release or reconfiguration. + * @param p_CMAC_Config_REQ + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CMAC_Config(template (value) U_CMAC_CONFIG_REQ p_CMAC_Config_REQ) runs on UTRAN_PTC + { + U_CMAC.send(p_CMAC_Config_REQ); + U_CMAC.receive(car_CMAC_CfgCnf); // we don't care what the values are, we just need to wait for the CNF + } + + /* + * @desc Configure the MACe + * @param p_CMACe_Config_REQ + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_CMACe_Config(template (value) U_CMAC_CONFIG_REQ p_CMACe_Config_REQ) runs on UTRAN_PTC + { + U_CMAC.send(p_CMACe_Config_REQ); + U_CMAC.receive(car_CMAC_MACe_Config_CNF (?)); // we don't care what the values are, we just need to wait for the CNF + } + /* + * @desc Configure the MACes + * @param p_CellId + * @param p_CMACes_Config_REQ + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_CMACes_Config(UTRAN_CellId_Type p_CellId, + template (value) U_CMAC_CONFIG_REQ p_CMACes_Config_REQ) runs on UTRAN_PTC + { + U_CMAC.send(p_CMACes_Config_REQ); + U_CMAC.receive(car_CMAC_MACes_Config_CNF (p_CellId)); // we don't care what the values are, we just need to wait for the CNF + } + /* + * @desc Modifies the RL channel + * @param p_CPHY_RL_Modify_REQ + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_UTRAN_CPHY_RL_Modify (template (value) U_CPHY_CONFIG_REQ p_CPHY_RL_Modify_REQ ) runs on UTRAN_PTC + { + U_CPHY.send ( p_CPHY_RL_Modify_REQ ); + U_CPHY.receive ( car_RL_ModifyCnf ); + } + + /* + * @desc Configures MAC Hs + * @param p_CellId + * @param p_CMAC_MACHs_Config_REQ + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_UTRAN_CMAC_MACHs_Config ( UTRAN_CellId_Type p_CellId, + template (value) U_CMAC_CONFIG_REQ p_CMAC_MACHs_Config_REQ) runs on UTRAN_PTC + { + U_CMAC.send ( p_CMAC_MACHs_Config_REQ ); + U_CMAC.receive ( car_CMAC_MACHs_CfgCnf ( p_CellId ) ); + } + + /* + * @desc To setup radio bearers : RB1, RB2, RB3, RB4. default values from 34.123-1 + * CRLC is configured with cellId -1 (utran_CellDedicated) + * @param p_FDD_TDD + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SS_RB1_ToRB4_Cfg(UTRAN_FDD_TDD_Type p_FDD_TDD) runs on UTRAN_PTC + { + + if (p_FDD_TDD == UTRAN_FDD) + { + select (f_UTRAN_ConfigurationInfo_TestCaseRelease_Get()) { + case (FDDr11) { + f_UTRAN_SS_RB1_ToRB4_Cfg_FDD_r11 (); + } + case else { + f_UTRAN_SS_RB1_ToRB4_Cfg_FDD(); + } + } + } + else + { + select (f_UTRAN_ConfigurationInfo_TestCaseRelease_Get()) { + case (FDDr11) { + f_UTRAN_SS_RB1_ToRB4_Cfg_FDD_r11 (); + } + case else { + f_UTRAN_SS_RB1_ToRB4_Cfg_TDD(); + } + } + } + } + + /* + * @desc For FDD - To setup radio bearers : RB1, RB2, RB3, RB4. default values from 34.123-1 + * CRLC is configured with cellId -1 (utran_CellDedicated) + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SS_RB1_ToRB4_Cfg_FDD () runs on UTRAN_PTC + { + var template (value) RB_LogCH_Mapping v_RB_LogCH_Mapping_RB1 := cs_RB_LogCH_Mapping(tsc_UL_DCCH1, tsc_DL_DCCH1); + var template (value) RB_LogCH_Mapping v_RB_LogCH_Mapping_RB2 := cs_RB_LogCH_Mapping(tsc_UL_DCCH2, tsc_DL_DCCH2); + var template (value) RB_LogCH_Mapping v_RB_LogCH_Mapping_RB3 := cs_RB_LogCH_Mapping(tsc_UL_DCCH3, tsc_DL_DCCH3); + var template (value) RB_LogCH_Mapping v_RB_LogCH_Mapping_RB4 := cs_RB_LogCH_Mapping(tsc_UL_DCCH4, tsc_DL_DCCH4); + + f_UTRAN_CRLC_Config(cas_RB_UM_Info_FDD(utran_CellDedicated, // configure radio bearers: RB1 (UM + DCCH) and (UM + DCCH) + tsc_RB1, + v_RB_LogCH_Mapping_RB1)); + + f_UTRAN_CRLC_Config(cas_RB_AM_Info_SRB_Fixed_FDD(utran_CellDedicated, // configure radio bearers: RB2 (AM + DCCH) and (AM + DCCH) + tsc_RB2, + v_RB_LogCH_Mapping_RB2, + cs_OctetModeRLC_Size144 )); + + f_UTRAN_CRLC_Config(cas_RB_AM_Info_SRB_Fixed_FDD(utran_CellDedicated, // configure radio bearers: RB3 (AM + DCCH) and (AM + DCCH) + tsc_RB3, + v_RB_LogCH_Mapping_RB3, + cs_OctetModeRLC_Size144 )); + + f_UTRAN_CRLC_Config(cas_RB_AM_Info_SRB_Fixed_FDD(utran_CellDedicated, // configure radio bearers: RB4 (AM + DCCH) and (AM + DCCH) + tsc_RB4, + v_RB_LogCH_Mapping_RB4, + cs_OctetModeRLC_Size144 )); + } + + /* + * @desc For TDD - To setup radio bearers : RB1, RB2, RB3, RB4. default values from 34.123-1 + * CRLC is configured with cellId -1 (utran_CellDedicated) + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SS_RB1_ToRB4_Cfg_TDD () runs on UTRAN_PTC + { + var template (value) RB_LogCH_Mapping v_RB_LogCH_Mapping_RB1 := cs_RB_LogCH_Mapping(tsc_UL_DCCH1, tsc_DL_DCCH1); + var template (value) RB_LogCH_Mapping v_RB_LogCH_Mapping_RB2 := cs_RB_LogCH_Mapping(tsc_UL_DCCH2, tsc_DL_DCCH2); + var template (value) RB_LogCH_Mapping v_RB_LogCH_Mapping_RB3 := cs_RB_LogCH_Mapping(tsc_UL_DCCH3, tsc_DL_DCCH3); + var template (value) RB_LogCH_Mapping v_RB_LogCH_Mapping_RB4 := cs_RB_LogCH_Mapping(tsc_UL_DCCH4, tsc_DL_DCCH4); + + f_UTRAN_CRLC_Config(cas_RB_UM_Info_TDD(utran_CellDedicated, // configure radio bearers: RB1 (UM + DCCH) and (UM + DCCH) @sic R5s120405 sic@ + tsc_RB1, + v_RB_LogCH_Mapping_RB1)); + + f_UTRAN_CRLC_Config(cas_RB_AM_Info_SRB_Fixed_TDD(utran_CellDedicated, // configure radio bearers: RB2 (AM + DCCH) and (AM + DCCH) + tsc_RB2, + v_RB_LogCH_Mapping_RB2, + cs_OctetModeRLC_Size144 )); + + f_UTRAN_CRLC_Config(cas_RB_AM_Info_SRB_Fixed_TDD(utran_CellDedicated, // configure radio bearers: RB3 (AM + DCCH) and (AM + DCCH) + tsc_RB3, + v_RB_LogCH_Mapping_RB3, + cs_OctetModeRLC_Size144 )); + + f_UTRAN_CRLC_Config(cas_RB_AM_Info_SRB_Fixed_TDD(utran_CellDedicated, // configure radio bearers: RB4 (AM + DCCH) and (AM + DCCH) + tsc_RB4, + v_RB_LogCH_Mapping_RB4, + cs_OctetModeRLC_Size144 ));//UTRAN_TDD + } + + /* + * @desc For FDD Rel11 - To setup radio bearers : RB1, RB2, RB3, RB4. default values from 34.123-1 + * CRLC is configured with cellId -1 (utran_CellDedicated) + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SS_RB1_ToRB4_Cfg_FDD_r11() runs on UTRAN_PTC + { + var template (value) RB_LogCH_Mapping v_RB_LogCH_Mapping_RB1 := cs_RB_LogCH_Mapping(tsc_UL_DCCH1, tsc_DL_DCCH1); + var template (value) RB_LogCH_Mapping v_RB_LogCH_Mapping_RB2 := cs_RB_LogCH_Mapping(tsc_UL_DCCH2, tsc_DL_DCCH2); + var template (value) RB_LogCH_Mapping v_RB_LogCH_Mapping_RB3 := cs_RB_LogCH_Mapping(tsc_UL_DCCH3, tsc_DL_DCCH3); + var template (value) RB_LogCH_Mapping v_RB_LogCH_Mapping_RB4 := cs_RB_LogCH_Mapping(tsc_UL_DCCH4, tsc_DL_DCCH4); + + f_UTRAN_CRLC_Config(cas_RB_UM_Info_FDD(utran_CellDedicated, // configure radio bearers: RB1 (UM + DCCH) and (UM + DCCH) + tsc_RB1, + v_RB_LogCH_Mapping_RB1)); + + f_UTRAN_CRLC_Config(cas_CRLC_SetupExtension_FDD(utran_CellDedicated, // configure radio bearers: RB2 (AM + DCCH) and (AM + DCCH) + tsc_RB2, + cs_RB_AM_Info_SRB_Fixed_FDD_r11(cs_OctetModeRLC_Size144), + v_RB_LogCH_Mapping_RB2)); + + f_UTRAN_CRLC_Config(cas_CRLC_SetupExtension_FDD(utran_CellDedicated, // configure radio bearers: RB3 (AM + DCCH) and (AM + DCCH) + tsc_RB3, + cs_RB_AM_Info_SRB_Fixed_FDD_r11(cs_OctetModeRLC_Size144), + v_RB_LogCH_Mapping_RB3)); + + f_UTRAN_CRLC_Config(cas_CRLC_SetupExtension_FDD(utran_CellDedicated, // configure radio bearers: RB4 (AM + DCCH) and (AM + DCCH) + tsc_RB4, + cs_RB_AM_Info_SRB_Fixed_FDD_r11(cs_OctetModeRLC_Size144), + v_RB_LogCH_Mapping_RB4)); + } + + /* + * @desc For TDD Rel11 - To setup radio bearers : RB1, RB2, RB3, RB4. default values from 34.123-1 + * CRLC is configured with cellId -1 (utran_CellDedicated) + */ + function f_UTRAN_SS_RB1_ToRB4_Cfg_TDD_r11() runs on UTRAN_PTC + { + var template (value) RB_LogCH_Mapping v_RB_LogCH_Mapping_RB1 := cs_RB_LogCH_Mapping(tsc_UL_DCCH1, tsc_DL_DCCH1); + var template (value) RB_LogCH_Mapping v_RB_LogCH_Mapping_RB2 := cs_RB_LogCH_Mapping(tsc_UL_DCCH2, tsc_DL_DCCH2); + var template (value) RB_LogCH_Mapping v_RB_LogCH_Mapping_RB3 := cs_RB_LogCH_Mapping(tsc_UL_DCCH3, tsc_DL_DCCH3); + var template (value) RB_LogCH_Mapping v_RB_LogCH_Mapping_RB4 := cs_RB_LogCH_Mapping(tsc_UL_DCCH4, tsc_DL_DCCH4); + + f_UTRAN_CRLC_Config(cas_RB_UM_Info_TDD(utran_CellDedicated, // configure radio bearers: RB1 (UM + DCCH) and (UM + DCCH) + tsc_RB1, + v_RB_LogCH_Mapping_RB1)); + + f_UTRAN_CRLC_Config(cas_CRLC_SetupExtension_TDD(utran_CellDedicated, // configure radio bearers: RB2 (AM + DCCH) and (AM + DCCH) + tsc_RB2, + cs_RB_AM_Info_SRB_Fixed_TDD_r11(cs_OctetModeRLC_Size144), + v_RB_LogCH_Mapping_RB2)); + + f_UTRAN_CRLC_Config(cas_CRLC_SetupExtension_TDD(utran_CellDedicated, // configure radio bearers: RB3 (AM + DCCH) and (AM + DCCH) + tsc_RB3, + cs_RB_AM_Info_SRB_Fixed_TDD_r11(cs_OctetModeRLC_Size144), + v_RB_LogCH_Mapping_RB3)); + + f_UTRAN_CRLC_Config(cas_CRLC_SetupExtension_TDD(utran_CellDedicated, // configure radio bearers: RB4 (AM + DCCH) and (AM + DCCH) + tsc_RB4, + cs_RB_AM_Info_SRB_Fixed_TDD_r11(cs_OctetModeRLC_Size144), + v_RB_LogCH_Mapping_RB4)); + } + + /* + * @desc To configure physical channel DPCH1and connect DCH5 to the physical channel,then map DCCH1-4 on to the DCH5 transport channel. + * Used for setting up stand-alone UL:13.6 DL:13.6 kbps SRBs. + * The transport channel DCH5 carries only dedicated control channels. + * MAC-d is configured with cellId -1 (utran_CellDedicated). + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SS_1DCH_DCCH_Cfg(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + select (f_UTRAN_ConfigurationInfo_TestCaseRelease_Get()) { // @sic R5s130195 Utran Release sic@ + case (FDDr8,FDDr9, TDDr9) { + f_UTRAN_SS_1DCH_DCCH_Cfg_r8(p_CellId); + } + case (FDDr10, TDDr10) { + f_UTRAN_SS_1DCH_DCCH_Cfg_r10(p_CellId); + } + case (FDDr11, TDDr11) { + f_UTRAN_SS_1DCH_DCCH_Cfg_r11(p_CellId); + } + case else { FatalError(__FILE__, __LINE__, "");} + } + } + + /* + * @desc To configure physical channel DPCH1 and connect DCH5 to the physical channel,then map DCCH1-4 on to the DCH5 transport channel. + * Used for setting up stand-alone UL:13.6 DL:13.6 kbps SRBs. + * Function used for rel-8 and rel-9 + * The transport channel DCH5 carries only dedicated control channels. + * MAC-d is configured with cellId -1 (utran_CellDedicated). + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SS_1DCH_DCCH_Cfg_r8(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + var UL_ScramblingCode v_UL_ScramCodeFDD; //@sic R5s120909 sic@ + + if (f_UTRAN_CellInfo_GetFDD_TDD(p_CellId) == UTRAN_FDD) { + v_UL_ScramCodeFDD := f_UTRAN_CellInfo_GetULScrmCode_FDD (p_CellId); + f_UTRAN_CPHY_RL_Setup(cas_DL_DPCH_SetupInfo_FDD(p_CellId, + tsc_DL_DPCH1, + cs_DL_DPCH_SRB_StandAloneDPCH_FDD(tsc_DL_DPCH1_2ndScrC), + cs_ActivateNow)); + f_UTRAN_CPHY_TrCH_Config(cas_DCH_148_TTI_10_DL_InfoActNow_FDD(p_CellId,tsc_DL_DPCH1)); + + f_UTRAN_CMAC_Config(cas_CMAC_CfgInfo_FDD(utran_CellDedicated, + tsc_DL_DPCH1, + cs_UE_Info, // C-RNTI and U-RNTI are not needed on DPCH + cs_TrChInfoDL_13_6_StandAlone_FDD, + cs_TrLogMappingDL_4DCCH)); + f_UTRAN_CPHY_RL_Setup(cas_UL_DPCH_SetupInfo_FDD(p_CellId, + tsc_UL_DPCH1, + cs_UL_DPCH_13_6_StandAlone_FDD(v_UL_ScramCodeFDD), + cs_ActivateNow)); + + f_UTRAN_CPHY_TrCH_Config(cas_DCH_148_TTI_10_UL_InfoActNow_FDD(p_CellId, tsc_UL_DPCH1)); + + f_UTRAN_CMAC_Config(cas_CMAC_CfgInfo_FDD(utran_CellDedicated, + tsc_UL_DPCH1, + cs_UE_Info, // C-RNTI and U-RNTI are not needed on DPCH + cs_TrChInfoUL_13_6_StandAlone_FDD, + cs_TrLogMappingUL_4DCCH)); + } + else {//UTRAN_TDD + + f_UTRAN_CPHY_RL_Setup(cas_DL_DPCH_SetupInfo_TDD(p_CellId, + tsc_DL_DPCH1, + cs_DL_DPCH_SRB_StandAlone_TDD, + cs_ActivateNow)); + f_UTRAN_CPHY_TrCH_Config(cas_DCH_148_TTI_40_DL_InfoActNow_TDD(p_CellId,tsc_DL_DPCH1)); // @sic r5s120750 sic@ + + f_UTRAN_CMAC_Config(cas_CMAC_CfgInfo_TDD(utran_CellDedicated, + tsc_DL_DPCH1, + cs_UE_Info, // C-RNTI and U-RNTI are not needed on DPCH + cs_TrChInfoDL_3_4_StandAlone_TDD, // @sic r5s120750 sic@ + cs_TrLogMappingDL_4DCCH_TDD)); + f_UTRAN_CPHY_RL_Setup(cas_UL_DPCH_SetupInfo_TDD(p_CellId, + tsc_UL_DPCH1, + cs_UL_DPCH_3_4_StandAlone_TDD, + cs_ActivateNow)); + + f_UTRAN_CPHY_TrCH_Config(cas_DCH_148_TTI_40_UL_InfoActNow_TDD(p_CellId, tsc_UL_DPCH1)); // @sic r5s120750 sic@ + + f_UTRAN_CMAC_Config(cas_CMAC_CfgInfo_TDD(utran_CellDedicated, + tsc_UL_DPCH1, + cs_UE_Info, // C-RNTI and U-RNTI are not needed on DPCH + cs_TrChInfoUL_3_4_StandAlone_TDD, // @sic r5s120750 sic@ + cs_TrLogMappingUL_4DCCH_TDD)); + } + } + + /* + * @desc To configure physical channel DPCH1 and connect DCH5 to the physical channel,then map DCCH1-4 on to the DCH5 transport channel. + * Used for setting up stand-alone UL:13.6 DL:13.6 kbps SRBs. + * Function used for rel-10 + * The transport channel DCH5 carries only dedicated control channels. + * MAC-d is configured with cellId -1 (utran_CellDedicated). + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SS_1DCH_DCCH_Cfg_r10(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + var UL_ScramblingCode v_UL_ScramCodeFDD; + + if (f_UTRAN_CellInfo_GetFDD_TDD(p_CellId) == UTRAN_FDD) { + v_UL_ScramCodeFDD := f_UTRAN_CellInfo_GetULScrmCode_FDD (p_CellId); + f_UTRAN_CPHY_RL_Setup(cas_DPCH_SetupInfo_FDD_r10(p_CellId, + tsc_DL_DPCH1, + cs_DL_DPCHInfo_r10_Extension_FDD( cs_DL_DPCH_SRB_StandAloneDPCH_FDD_r10(tsc_DL_DPCH1_2ndScrC)), + cs_ActivateNow)); + f_UTRAN_CPHY_TrCH_Config(cas_DCH_148_TTI_10_DL_InfoActNow_FDD(p_CellId,tsc_DL_DPCH1)); + + f_UTRAN_CMAC_Config(cas_CMAC_CfgInfo_FDD(utran_CellDedicated, + tsc_DL_DPCH1, + cs_UE_Info, // C-RNTI and U-RNTI are not needed on DPCH + cs_TrChInfoDL_13_6_StandAlone_FDD, + cs_TrLogMappingDL_4DCCH)); + f_UTRAN_CPHY_RL_Setup(cas_DPCH_SetupInfo_FDD_r10(p_CellId, + tsc_UL_DPCH1, + cs_UL_DPCHInfo_r10_Extension_FDD(cs_UL_DPCH_13_6_StandAlone_FDD(v_UL_ScramCodeFDD)), + cs_ActivateNow)); + + f_UTRAN_CPHY_TrCH_Config(cas_DCH_148_TTI_10_UL_InfoActNow_FDD(p_CellId, tsc_UL_DPCH1)); + + f_UTRAN_CMAC_Config(cas_CMAC_CfgInfo_FDD(utran_CellDedicated, + tsc_UL_DPCH1, + cs_UE_Info, // C-RNTI and U-RNTI are not needed on DPCH + cs_TrChInfoUL_13_6_StandAlone_FDD, + cs_TrLogMappingUL_4DCCH)); + } + else {//UTRAN_TDD + + f_UTRAN_CPHY_RL_Setup(cas_DPCH_SetupInfo_TDD_r10(p_CellId, + tsc_DL_DPCH1, + cs_DL_DPCHInfo_r10_Extension_TDD( cs_DL_DPCH_SRB_StandAlone_TDD_r10), + cs_ActivateNow)); + + f_UTRAN_CPHY_TrCH_Config(cas_DCH_148_TTI_40_DL_InfoActNow_TDD(p_CellId,tsc_DL_DPCH1)); // @sic r5s120750 sic@ + + f_UTRAN_CMAC_Config(cas_CMAC_CfgInfo_TDD(utran_CellDedicated, + tsc_DL_DPCH1, + cs_UE_Info, // C-RNTI and U-RNTI are not needed on DPCH + cs_TrChInfoDL_3_4_StandAlone_TDD, // @sic r5s120750 sic@ + cs_TrLogMappingDL_4DCCH_TDD)); + + f_UTRAN_CPHY_RL_Setup(cas_DPCH_SetupInfo_TDD_r10(p_CellId, + tsc_UL_DPCH1, + cs_UL_DPCHInfo_r10_Extension_TDD(cs_UL_DPCH_3_4_StandAlone_TDD), + cs_ActivateNow)); + + f_UTRAN_CPHY_TrCH_Config(cas_DCH_148_TTI_40_UL_InfoActNow_TDD(p_CellId, tsc_UL_DPCH1)); // @sic r5s120750 sic@ + + f_UTRAN_CMAC_Config(cas_CMAC_CfgInfo_TDD(utran_CellDedicated, + tsc_UL_DPCH1, + cs_UE_Info, // C-RNTI and U-RNTI are not needed on DPCH + cs_TrChInfoUL_3_4_StandAlone_TDD, // @sic r5s120750 sic@ + cs_TrLogMappingUL_4DCCH_TDD)); + } + } + + /* + * @desc To configure physical channel DPCH1 and connect DCH5 to the physical channel,then map DCCH1-4 on to the DCH5 transport channel. + * Used for setting up stand-alone UL:13.6 DL:13.6 kbps SRBs. + * Function used for rel-10 + * The transport channel DCH5 carries only dedicated control channels. + * MAC-d is configured with cellId -1 (utran_CellDedicated). + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SS_1DCH_DCCH_Cfg_r11(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + var UL_ScramblingCode v_UL_ScramCodeFDD; + + if (f_UTRAN_CellInfo_GetFDD_TDD(p_CellId) == UTRAN_FDD) { + v_UL_ScramCodeFDD := f_UTRAN_CellInfo_GetULScrmCode_FDD (p_CellId); + + f_UTRAN_CPHY_RL_Setup(cas_DPCH_SetupInfo_FDD_r10(p_CellId, + tsc_DL_DPCH1, + cs_DL_DPCHInfo_r11_Extension_FDD(cs_DL_DPCH_SRB_StandAloneDPCH_FDD_r11(tsc_DL_DPCH1_2ndScrC)), + cs_ActivateNow)); + f_UTRAN_CPHY_TrCH_Config(cas_DCH_148_TTI_10_DL_InfoActNow_FDD(p_CellId,tsc_DL_DPCH1)); + + f_UTRAN_CMAC_Config(cas_CMAC_CfgInfo_FDD(utran_CellDedicated, + tsc_DL_DPCH1, + cs_UE_Info, // C-RNTI and U-RNTI are not needed on DPCH + cs_TrChInfoDL_13_6_StandAlone_FDD, + cs_TrLogMappingDL_4DCCH)); + f_UTRAN_CPHY_RL_Setup(cas_DPCH_SetupInfo_FDD_r10(p_CellId, + tsc_UL_DPCH1, + cs_UL_DPCHInfo_r11_Extension_FDD(cs_UL_DPCH_13_6_StandAlone_FDD_r11(v_UL_ScramCodeFDD)), + cs_ActivateNow)); + + f_UTRAN_CPHY_TrCH_Config(cas_DCH_148_TTI_10_UL_InfoActNow_FDD(p_CellId, tsc_UL_DPCH1)); + + f_UTRAN_CMAC_Config(cas_CMAC_CfgInfo_FDD(utran_CellDedicated, + tsc_UL_DPCH1, + cs_UE_Info, // C-RNTI and U-RNTI are not needed on DPCH + cs_TrChInfoUL_13_6_StandAlone_FDD, + cs_TrLogMappingUL_4DCCH)); + } + else {//UTRAN_TDD + f_UTRAN_CPHY_RL_Setup(cas_DPCH_SetupInfo_TDD_r10(p_CellId, + tsc_DL_DPCH1, + cs_DL_DPCHInfo_r11_Extension_TDD( cs_DL_DPCH_SRB_StandAlone_TDD_r11), + cs_ActivateNow)); + + f_UTRAN_CPHY_TrCH_Config(cas_DCH_148_TTI_40_DL_InfoActNow_TDD(p_CellId,tsc_DL_DPCH1)); // @sic r5s120750 sic@ + + f_UTRAN_CMAC_Config(cas_CMAC_CfgInfo_TDD(utran_CellDedicated, + tsc_DL_DPCH1, + cs_UE_Info, // C-RNTI and U-RNTI are not needed on DPCH + cs_TrChInfoDL_3_4_StandAlone_TDD, // @sic r5s120750 sic@ + cs_TrLogMappingDL_4DCCH_TDD)); + + f_UTRAN_CPHY_RL_Setup(cas_DPCH_SetupInfo_TDD_r10(p_CellId, + tsc_UL_DPCH1, + cs_UL_DPCHInfo_r10_Extension_TDD(cs_UL_DPCH_3_4_StandAlone_TDD), + cs_ActivateNow)); + + f_UTRAN_CPHY_TrCH_Config(cas_DCH_148_TTI_40_UL_InfoActNow_TDD(p_CellId, tsc_UL_DPCH1)); // @sic r5s120750 sic@ + + f_UTRAN_CMAC_Config(cas_CMAC_CfgInfo_TDD(utran_CellDedicated, + tsc_UL_DPCH1, + cs_UE_Info, // C-RNTI and U-RNTI are not needed on DPCH + cs_TrChInfoUL_3_4_StandAlone_TDD, // @sic r5s120750 sic@ + cs_TrLogMappingUL_4DCCH_TDD)); + } + } + + /* + * @desc To setup the radio bearer (RB_BCCH) which is used for sending system information blocks. + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SS_RB_BCCH_BCH_Cfg(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + var template (value) RB_LogCH_Mapping v_RB_LogCH_Mapping := cs_RB_LogCH_Mapping(omit, tsc_BCCH1); + + if (f_UTRAN_CellInfo_GetFDD_TDD(p_CellId) == UTRAN_FDD) { + f_UTRAN_CRLC_Config(cas_RB_BCCH_Info_FDD(p_CellId, tsc_RB_BCCH, v_RB_LogCH_Mapping)); + } + else { + f_UTRAN_CRLC_Config(cas_RB_BCCH_Info_TDD(p_CellId, tsc_RB_BCCH, v_RB_LogCH_Mapping)); // configure radio bearer (RB_BCCH) for BCCH on TM + BCCH + BCH, used for sending system information blocks + } + } + + /* + * @desc To setup radio bearer (RB_PCCH) used for paging message sending + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SS_RB_PCCH_Cfg(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + var template (value) RB_LogCH_Mapping v_RB_LogCH_Mapping := cs_RB_LogCH_Mapping(omit, tsc_PCCH1); + + if (f_UTRAN_CellInfo_GetFDD_TDD(p_CellId) == UTRAN_FDD) { + f_UTRAN_CRLC_Config(cas_RB_PCCH_Info_FDD(p_CellId, // configure radio bearer(RB_PCCH) on TM + PCCH + PCH, used for sending paging message + tsc_RB_PCCH, + v_RB_LogCH_Mapping)); + } + else { + f_UTRAN_CRLC_Config(cas_RB_PCCH_Info_TDD(p_CellId, // configure radio bearer(RB_PCCH) on TM + PCCH + PCH, used for sending paging message + tsc_RB_PCCH, + v_RB_LogCH_Mapping)); + } + } + + /* + * @desc This test Step sets up a cell with stand-alone UL:3.4 DL:3.4 kbps SRBs for DCCH which consists of the following: + * For a first cell: + * physical channels: p-SCH, s-SCH, p-CPICH, p-CCPCH, s-CCPCH, PRACH and DPCH; + * transport channesl: BCH, FACH, PCH, RACH, DCH; + * logical channels: BCCH, CCCH, PCCH, DCCH; and + * signalling radio bearer RB0 on FACH and RACH; signalling bearer RB1, RB2, RB3, RB4 on DCH. + * + * For cells other than the first cell + * physical channels: p-SCH, s-SCH, p-CPICH, p-CCPCH, s-CCPCH, PRACH (no DPCH) + * transport channesl: BCH, FACH, PCH, RACH (no DCH) + * logical channels: BCCH, CCCH, PCCH (no DCCH) + * signalling radio bearer RB0 on FACH and RACH (not RB1 RB2 RB3 RB4 on DCH) + * + * Cell configuration supporting UL:3.4 DL:3.4 kbps stand-alone signalling RB. + * CRLC is configured with cellId -1 (utran_CellDedicated) + * CMAC for DCCH (MAC-d) is configured with cellId -1 (utran_CellDedicated). + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT, POS) + */ + function f_UTRAN_SS_CreateCellDCH(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + + f_UTRAN_SS_CellCfg(p_CellId); + f_UTRAN_SS_BCH_SCH_CPICH_Cfg(p_CellId); + f_UTRAN_SS_PCH_FACH_CCCH_Cfg(p_CellId); + f_UTRAN_SS_RACH_CCCH_Cfg(p_CellId); + if (f_UTRAN_NoOfConfiguredCells() == 0) { // first cell to be created + f_UTRAN_SS_1DCH_DCCH_Cfg(p_CellId); + f_UTRAN_SS_RB_BCCH_BCH_Cfg(p_CellId); + f_UTRAN_SS_RB_PCCH_Cfg(p_CellId); + f_UTRAN_SS_RB0_Cfg(p_CellId); + f_UTRAN_SS_RB1_ToRB4_Cfg(f_UTRAN_CellInfo_GetFDD_TDD(p_CellId)); + + f_UTRAN_CellInfo_SetConfigType(p_CellId, cell_DCH_StandAloneSRB_NoConn); + + } else { // further cell to be created + f_UTRAN_SS_RB_BCCH_BCH_Cfg(p_CellId); + f_UTRAN_SS_RB_PCCH_Cfg(p_CellId); + f_UTRAN_SS_RB0_Cfg(p_CellId); + f_UTRAN_CellInfo_SetConfigType(p_CellId, cell_NoDPCH); + } + } + + /* + * @desc To setup a baseline cell which consists of the following: + * For a first cell_FACH cell + * physical channels: p-SCH, s-SCH, p-CPICH, p-CCPCH, s-CCPCH and PRACH; + * transport channesl: BCH, FACH, PCH, RACH; + * logical channels: BCCH, CCCH, PCCH, DCCH; and + * signalling radio bearer RB0(CCCH), RB1(UM DCCH), RB2(AM DCCH), RB3(AM DCCH for NAS high priority), RB4(AM DCCH for NAS low priority) on FACH and RACH, + * RB-3(TM BCCH FACH) on FACH, RB20(AM DTCH) on FACH and RACH, RB-1 (TM, BCCH) on BCH, RB-2 (TM, PCCH, PCH) + * + * For cells other than the first cell + * Same physical channels as for the first cell (p-SCH, s-SCH, p-CPICH, p-CCPCH, s-CCPCH and PRACH); + * Same transport channels as for the first cell (BCH, FACH, PCH, RACH); + * Logical channels: BCCH, CCCH, PCCH, no DCCH + * Signalling radio bearer RB0(CCCH), RB-3(TM BCCH FACH) on FACH, RB-1 (TM, BCCH) on BCH, RB-2 (TM, PCCH, PCH) + * + * CRLC is configured with cellId -1 (utran_CellDedicated) + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_UTRAN_SS_CreateCellFACH(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + f_UTRAN_SS_CellCfg(p_CellId); + f_UTRAN_SS_BCH_SCH_CPICH_Cfg(p_CellId); + + if (f_UTRAN_NoOfConfiguredCells() == 0) { // first cell to be created + if (f_UTRAN_CellInfo_GetFDD_TDD(p_CellId) == UTRAN_FDD) { + f_UTRAN_SS_PCH_2FACH_CCCH_DCCH_BCCH_DTCH_Cfg(p_CellId); + } + else { + f_UTRAN_SS_PCH_2FACH_CCCH_DCCH_BCCH_DTCH_TDD_Cfg(p_CellId); + } + f_UTRAN_SS_RACH_CCCH_DCCH_DTCH_Cfg(p_CellId); + f_UTRAN_SS_RB_BCCH_BCH_Cfg(p_CellId); + f_UTRAN_SS_RB_PCCH_Cfg(p_CellId); + f_UTRAN_SS_RB0_Cfg(p_CellId); + f_UTRAN_SS_RB1_ToRB4_Cfg(f_UTRAN_CellInfo_GetFDD_TDD(p_CellId)); + f_UTRAN_SS_RB_BCCH_FACH_Cfg(p_CellId); // RB9 is on BCCH-FACH + f_UTRAN_SS_RB20_AM_PS_Cfg (p_CellId, cs_OctetModeRLC_Size336 ); + f_UTRAN_CellInfo_SetConfigType(p_CellId, cell_FACH_NoConn); + } + else { // Not first cell to be created + f_UTRAN_SS_PCH_FACH_CCCH_Cfg(p_CellId); + f_UTRAN_SS_RACH_CCCH_Cfg(p_CellId); + f_UTRAN_SS_RB_BCCH_BCH_Cfg(p_CellId); + f_UTRAN_SS_RB_PCCH_Cfg(p_CellId); + f_UTRAN_SS_RB0_Cfg(p_CellId); + f_UTRAN_CellInfo_SetConfigType(p_CellId, cell_FACH_NoDedicated); + } + } + + /* + * @desc To configure a secondary CCPCH ( tsc_S_CCPCH1), then connect PCH and 2 FACH's to the secondary CCPCH. + * Finally to map PCCH to PCH and DCCH1, DCCH2, DCCH3, DCCH4, CCCH, BCCH(for BCCH_FACH) to FACH1 and DTCH to FACH2. + * One secondary CCPCH( tsc_S_CCPCH1) for PCH and FACH. PCCH mapping to PCH and DCCH1, DCCH2, DCCH3, DCCH4, CCCH, BCCH(for BCCH_FACH) to FACH1, and DTCH to FACH2. + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_UTRAN_SS_PCH_2FACH_CCCH_DCCH_BCCH_DTCH_Cfg(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + var UTRAN_CellInfo_Type_FDD v_CellInfoFDD := f_UTRAN_CellInfo_GetFDDSpecific(p_CellId); + + f_UTRAN_CPHY_RL_Setup(cas_SCCPCH_Info_FDD(p_CellId, // s-CCPCH1 + tsc_S_CCPCH1, + tsc_S_CCPCH_2ndScrCode, + tsc_S_CCPCH1_ChC, + v_CellInfoFDD.slotFormatsCCPCH1, + f_UTRAN_CellInfo_GetsCCPCH1_Power(p_CellId), + v_CellInfoFDD.timingsCCPCH1)); + f_UTRAN_CPHY_TrCH_Config(cas_PCH_2_FACH_InfoActNow_FDD(p_CellId, tsc_S_CCPCH1)); // connect PCH and FACH to s-CCPCH1 + + f_UTRAN_CMAC_Config(cads_CMAC_CfgInfoAssPhyChFollow_FDD (p_CellId, // map PCCH to PCH, and map CCCH, BCCH, DTCH and DCCH's to FACH. + tsc_S_CCPCH1, // C-RNTI and U-RNTI are needed when DCCH/DTCH are mapped on S-CCPCH + cs_UE_Info(f_UTRAN_CellInfo_GetU_RNTI(p_CellId), f_UTRAN_CellInfo_GetC_RNTI(p_CellId)), + cs_TrChInfoPCH_FACH_PS_FDD, + cs_TrLogMappingPCH_FACH_PS_FDD)); + f_UTRAN_CPHY_RL_Setup(cas_PICH_Info_FDD(p_CellId, + cs_PichInfo_FDD, + f_UTRAN_CellInfo_GetPICH_PowerOffset(p_CellId), + tsc_S_CCPCH1)); + } + + /* + * @desc To configure a secondary CCPCH ( tsc_S_CCPCH1), then connect PCH and 2 FACH's to the secondary CCPCH. + * Finally to map PCCH to PCH and DCCH1, DCCH2, DCCH3, DCCH4, CCCH, BCCH(for BCCH_FACH) and DTCH to FACH1. + * One secondary CCPCH( tsc_S_CCPCH1) for PCH and FACH. PCCH mapping to PCH and DCCH1, DCCH2, DCCH3, DCCH4, CCCH, BCCH(for BCCH_FACH) and DTCH to FACH1. + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_UTRAN_SS_PCH_2FACH_CCCH_DCCH_BCCH_DTCH_TDD_Cfg(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + f_UTRAN_CPHY_RL_Setup(cas_SCCPCH_Info_TDD(p_CellId, // s-CCPCH1 + tsc_S_CCPCH1, + f_UTRAN_CellInfo_GetsCCPCH1_Power(p_CellId))); + f_UTRAN_CPHY_TrCH_Config(cas_PCH_2_FACH_InfoActNow_TDD(p_CellId, tsc_S_CCPCH1)); //@sic R5-133724 sic@ + + f_UTRAN_CMAC_Config(cads_CMAC_CfgInfoAssPhyChFollow_TDD (p_CellId, // map PCCH to PCH, and map CCCH, BCCH, DTCH and DCCH's to FACH. @sic R5s120405 sic@ + tsc_S_CCPCH1, // C-RNTI and U-RNTI are needed when DCCH/DTCH are mapped on S-CCPCH + cs_UE_Info(f_UTRAN_CellInfo_GetU_RNTI(p_CellId), f_UTRAN_CellInfo_GetC_RNTI(p_CellId)), + cs_TrChInfoPCH_FACH_PS_TDD, + cs_TrLogMappingPCH_FACH_PS_TDD)); + f_UTRAN_CPHY_RL_Setup(cas_PICH_Info_TDD(p_CellId, // PICH + cs_PichInfo_TDD, + f_UTRAN_CellInfo_GetPICH_PowerOffset(p_CellId), + tsc_S_CCPCH1)); + } + + /* + * @desc To configure AICH and PRACH physical channels and connect RACH onto PRACH, + * then map five logical channels (CCCH, DCCH1, DCCH2, DCCH3, DCCH4) to RACH + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_UTRAN_SS_RACH_CCCH_DCCH_DTCH_Cfg(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + var UTRAN_CellInfo_Type_FDD v_CellInfoFDD; + var UTRAN_CellInfo_Type_TDD v_CellInfoTDD; + + if (f_UTRAN_CellInfo_GetFDD_TDD(p_CellId) == UTRAN_FDD) { + v_CellInfoFDD := f_UTRAN_CellInfo_GetFDDSpecific(p_CellId); + f_UTRAN_CPHY_RL_Setup(cas_AichInfo(p_CellId, // AICH + tsc_AICH1, + cs_AICH_Info, + v_CellInfoFDD.powerAICH)); + f_UTRAN_CPHY_RL_Setup(cas_PRACH_Info_FDD(p_CellId, // PRACH + tsc_PRACH1, + tsc_PRACH1_Signatures, + tsc_PRACH1_ScrC, + f_UTRAN_CellInfo_GetPuncturingLimit(p_CellId), + f_UTRAN_CellInfo_GetSF_PRACH(p_CellId), + tsc_SubChNum)); + f_UTRAN_CPHY_TrCH_Config(cas_RACH_InfoActNow_FDD(p_CellId, tsc_PRACH1)); // connectRACH to PRACH + f_UTRAN_CMAC_Config(cas_CMAC_CfgInfo_FDD(p_CellId, // mapping CCCH to RACH. + tsc_PRACH1, + cs_UE_Info(omit, f_UTRAN_CellInfo_GetC_RNTI(p_CellId)), + cs_TrChInfoRACH1_FDD, + cs_TrLogMappingRACH_DTCH)); + } + else { + v_CellInfoTDD := f_UTRAN_CellInfo_GetTDDSpecific(p_CellId); + f_UTRAN_CPHY_RL_Setup(cas_PRACH_Info_TDD(p_CellId, // PRACH + tsc_PRACH1,v_CellInfoTDD.powerFPACH)); + f_UTRAN_CPHY_TrCH_Config(cas_RACH_InfoActNow_TDD(p_CellId, tsc_PRACH1)); // connectRACH to PRACH + f_UTRAN_CMAC_Config(cas_CMAC_CfgInfo_TDD(p_CellId, // mapping CCCH to RACH. + tsc_PRACH1, + cs_UE_Info(omit, f_UTRAN_CellInfo_GetC_RNTI(p_CellId)), + cs_TrChInfoRACH1_TDD, + cs_TrLogMappingRACH_DTCH_TDD)); + } + } + + /* + * @desc To configure AICH and PRACH physical channels and connect RACH onto PRACH, then map one logical channel (CCCH) to RACH + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SS_RACH_CCCH_Cfg(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + var UTRAN_CellInfo_Type_FDD v_CellInfoFDD; + var UTRAN_CellInfo_Type_TDD v_CellInfoTDD; + + if (f_UTRAN_CellInfo_GetFDD_TDD(p_CellId) == UTRAN_FDD) { + v_CellInfoFDD := f_UTRAN_CellInfo_GetFDDSpecific(p_CellId); + f_UTRAN_CPHY_RL_Setup(cas_AichInfo(p_CellId, // AICH + tsc_AICH1, + cs_AICH_Info, + v_CellInfoFDD.powerAICH)); + + f_UTRAN_CPHY_RL_Setup(cas_PRACH_Info_FDD(p_CellId, // PRACH + tsc_PRACH1, + tsc_PRACH1_Signatures, + tsc_PRACH1_ScrC, + f_UTRAN_CellInfo_GetPuncturingLimit(p_CellId), + f_UTRAN_CellInfo_GetSF_PRACH(p_CellId), + tsc_SubChNum)); + + f_UTRAN_CPHY_TrCH_Config(cas_RACH_InfoActNow_FDD(p_CellId, tsc_PRACH1)); // connectRACH to PRACH + + f_UTRAN_CMAC_Config(cas_CMAC_CfgInfo_FDD(p_CellId, // mapping CCCH to RACH. + tsc_PRACH1, + cs_UE_Info, + cs_TrChInfoRACH1_FDD, + cs_TrLogMappingRACH2)); + } + else { + v_CellInfoTDD := f_UTRAN_CellInfo_GetTDDSpecific(p_CellId); + f_UTRAN_CPHY_RL_Setup(cas_PRACH_Info_TDD(p_CellId, // PRACH + tsc_PRACH1,v_CellInfoTDD.powerFPACH)); + + f_UTRAN_CPHY_TrCH_Config(cas_RACH_InfoActNow_TDD(p_CellId, tsc_PRACH1)); // connectRACH to PRACH + + f_UTRAN_CMAC_Config(cas_CMAC_CfgInfo_TDD(p_CellId, // mapping CCCH to RACH. + tsc_PRACH1, + cs_UE_Info, + cs_TrChInfoRACH1_TDD, + cs_TrLogMappingRACH2_TDD)); + } + } + + /* + * @desc Function which returns the number of already configured cells + * @param p_CellIdList + * @return integer + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_NoOfConfiguredCells_Common(UTRAN_CellIdList_Type p_CellIdList) runs on UTRAN_PTC return integer + { + var integer v_Cnt := 0; + var integer i; + + for (i:=0; i < lengthof(p_CellIdList); i:=i+1) { + if (f_UTRAN_CellInfo_GetConfigType(p_CellIdList[i]) != cell_NotConfigured) { + v_Cnt := v_Cnt + 1; + } + } + return v_Cnt; + } + + /* + * @desc Function which returns the number of already configured cells + * @return integer + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_NoOfConfiguredCells() runs on UTRAN_PTC return integer + { + var UTRAN_CellIdList_Type v_CellIdList := {utran_Cell5, utran_Cell7, utran_Cell8, utran_Cell9}; + return f_UTRAN_NoOfConfiguredCells_Common(v_CellIdList); + } + + /* + * @desc The first cell created between utran_Cell5/7 is configured with Tcell value 0. + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function fl_UTRAN_CheckFirstCellCreated(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + select (p_CellId) { + case (utran_Cell5) { + if (f_UTRAN_CellInfo_GetConfigType(utran_Cell7) == cell_NotConfigured) { + f_UTRAN_CellInfo_SetTCell (p_CellId, 0); + } + } + case (utran_Cell7) { + if (f_UTRAN_CellInfo_GetConfigType (utran_Cell5) == cell_NotConfigured) { + f_UTRAN_CellInfo_SetTCell(p_CellId, 0); + } + } + case else {} //Nothing to do for other UTRAN cells + } + } + + /* + * @desc To setup the cell parameter in CPHY, if the cell 'p_CellId' is the first one to be created, then CPHY shall be initialised using CHY_INIT_REquest ASP. + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_UTRAN_SS_CellCfg(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + var UTRAN_CellInfo_Type_FDD v_CellInfoFDD; + var UTRAN_CellInfo_Type_TDD v_CellInfoTDD; + + if (f_UTRAN_NoOfConfiguredCells() == 0) { // first cell to be created + U_CPHY.send(cas_InitReqDef); + U_CPHY.receive(car_IniCnf); + } + if (f_UTRAN_CellInfo_GetFDD_TDD(p_CellId) == UTRAN_FDD) { + fl_UTRAN_CheckFirstCellCreated(p_CellId); //@sic R5-142973 sic@ + v_CellInfoFDD := f_UTRAN_CellInfo_GetFDDSpecific(p_CellId); + + U_CPHY.send(cas_CellCfgReq_FDD(p_CellId, + v_CellInfoFDD.tcell, // This was tCell, but don't use this anymore + f_UTRAN_CellInfo_GetFrequencyInfo(p_CellId), + v_CellInfoFDD.priScrmCode, + tsc_AttenuationCellOFF, // start with the cell switched off + f_UTRAN_CellInfo_GetSFNOffset(p_CellId), + f_UTRAN_CellInfo_GetCellTxPower(p_CellId), + v_CellInfoFDD.operationBand)); + U_CPHY.receive(car_CellCfgCnf(p_CellId)); + } + else { + v_CellInfoTDD := f_UTRAN_CellInfo_GetTDDSpecific(p_CellId); + U_CPHY.send(cas_CellCfgReq_TDD(p_CellId, + f_UTRAN_CellInfo_GetFrequencyInfo(p_CellId), + v_CellInfoTDD.cellParametersID, + tsc_AttenuationCellOFF, // start with the cell switched off + f_UTRAN_CellInfo_GetSFNOffset(p_CellId), + f_UTRAN_CellInfo_GetCellTxPower(p_CellId), + v_CellInfoTDD.dwPCHInfo)); + U_CPHY.receive(car_CellCfgCnf(p_CellId)); + } + } + + /* + * @desc To configure P-CCPCH, P-SCH, S-SCH and P-CPICH physical channels. To map BCH to P-PCCPCH, then to map logical channel BCCH to transport channel BCH. + * Fr TDD : f_SS_BCH_PCCPCH_Cfg in TTCN-2. + * To configure P-CCPCH physical channels and map BCH to P-PCCPCH, then to map logical channel BCCH to transport channel BCH. + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SS_BCH_SCH_CPICH_Cfg(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + var UTRAN_CellInfo_Type_FDD v_CellInfoFDD; + + if (f_UTRAN_CellInfo_GetFDD_TDD(p_CellId) == UTRAN_FDD) { + v_CellInfoFDD := f_UTRAN_CellInfo_GetFDDSpecific(p_CellId); + f_UTRAN_CPHY_RL_Setup(cas_PCPICH_Info_FDD(p_CellId, v_CellInfoFDD.powerpCPICH)); // p-CPICH + f_UTRAN_CPHY_RL_Setup(cas_PSCH_Info_FDD( p_CellId, v_CellInfoFDD.powerpSCH)); // p-SCH + f_UTRAN_CPHY_RL_Setup(cas_SSCH_Info_FDD( p_CellId, v_CellInfoFDD.powersSCH)); // s-SCH + f_UTRAN_CPHY_RL_Setup(cas_PCCPCH_Info_FDD(p_CellId, f_UTRAN_CellInfo_GetpCCPCH_Power_FDD(p_CellId))); // p-CCPCH + + f_UTRAN_CPHY_TrCH_Config(cas_BCH_InfoActNow_FDD(p_CellId)); // BCH connected to p-CCPCH + + f_UTRAN_CMAC_Config(cas_CMAC_CfgInfo_FDD(p_CellId, // mapping BCCH to BCH. C-RNTI and U-RNTI are not needed on P-CCPCH + tsc_P_CCPCH, + cs_UE_Info, + cs_TrChInfoBCH1_FDD, + cs_TrLogMappingBCH1)); + } + else { + f_UTRAN_CPHY_RL_Setup(cas_PCCPCH_Info_TDD(p_CellId, f_UTRAN_CellInfo_GetpCCPCH_Power_TDD(p_CellId))); // p-CCPCH + + f_UTRAN_CPHY_TrCH_Config(cas_BCH_InfoActNow_TDD(p_CellId)); // BCH connected to p-CCPCH + + f_UTRAN_CMAC_Config(cas_CMAC_CfgInfo_TDD(p_CellId, // mapping BCCH to BCH. C-RNTI and U-RNTI are not needed on P-CCPCH + tsc_P_CCPCH, + cs_UE_Info, + cs_TrChInfoBCH1_TDD, + cs_TrLogMappingBCH1_TDD)); + } + } + + /* + * @desc To configure a secondary CCPCH ( tsc_S_CCPCH1), then connect PCH and FACH to the secondary CCPCH. + * (34.108 cl. 4.2.1), finally to map PCCH to PCH and CCCH to FACH. + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SS_PCH_FACH_CCCH_Cfg(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + var UTRAN_CellInfo_Type_FDD v_CellInfoFDD; + + if (f_UTRAN_CellInfo_GetFDD_TDD(p_CellId) == UTRAN_FDD) { + v_CellInfoFDD := f_UTRAN_CellInfo_GetFDDSpecific(p_CellId); + f_UTRAN_CPHY_RL_Setup(cas_SCCPCH_Info_FDD(p_CellId, // s-CCPCH1 + tsc_S_CCPCH1, + tsc_S_CCPCH_2ndScrCode, + tsc_S_CCPCH1_ChC, + v_CellInfoFDD.slotFormatsCCPCH1, + f_UTRAN_CellInfo_GetsCCPCH1_Power(p_CellId), + v_CellInfoFDD.timingsCCPCH1)); + + f_UTRAN_CPHY_TrCH_Config(cas_PCH_2_FACH_InfoActNow_FDD(p_CellId, tsc_S_CCPCH1)); // connect PCH and FACH to s-CCPCH1 + + f_UTRAN_CMAC_Config(cads_CMAC_CfgInfoAssPhyChFollow_FDD(p_CellId, // map PCCH to PCH. + tsc_S_CCPCH1, + cs_UE_Info, // U-RNTI and C-RNTI are not needed (no DCCH/DTCH) + cs_TrChInfoPCH_FACH_PS_FDD, + cs_TrLogMappingPCH_FACH_CellDCH)); + + f_UTRAN_CPHY_RL_Setup(cas_PICH_Info_FDD(p_CellId, // PICH + cs_PichInfo_FDD, + f_UTRAN_CellInfo_GetPICH_PowerOffset(p_CellId), + tsc_S_CCPCH1)); + } + else { + f_UTRAN_CPHY_RL_Setup(cas_SCCPCH_Info_TDD(p_CellId, // s-CCPCH1 + tsc_S_CCPCH1, + f_UTRAN_CellInfo_GetsCCPCH1_Power(p_CellId))); + + f_UTRAN_CPHY_TrCH_Config(cas_PCH_2_FACH_InfoActNow_TDD(p_CellId, tsc_S_CCPCH1)); // connect PCH and FACH to s-CCPCH1 + + f_UTRAN_CMAC_Config(cads_CMAC_CfgInfoAssPhyChFollow_TDD (p_CellId, // map PCCH to PCH. @sic R5s120750 sic@ + tsc_S_CCPCH1, + cs_UE_Info, // U-RNTI and C-RNTI are not needed (no DCCH/DTCH) + cs_TrChInfoPCH_FACH_PS_TDD, + cs_TrLogMappingPCH_FACH_CellDCH_TDD)); + + f_UTRAN_CPHY_RL_Setup(cas_PICH_Info_TDD(p_CellId, + cs_PichInfo_TDD, + f_UTRAN_CellInfo_GetPICH_PowerOffset(p_CellId), + tsc_S_CCPCH1)); + } + } + + /* + * @desc To setup radio bearers : + * RB0 ( the downlink is UM + CCCH + FACH + sCCPCH1 and uplink is TM + CCCH + RACH + PRACH). + * The configuration is adapted from 34.108 cl. 6.10.2.4.3 and 6.10.2.4.4 + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SS_RB0_Cfg(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + var template (value) RB_LogCH_Mapping v_RB_LogCH_Mapping_DL := cs_RB_LogCH_Mapping(omit, tsc_DL_CCCH5); + var template (value) RB_LogCH_Mapping v_RB_LogCH_Mapping_UL := cs_RB_LogCH_Mapping(tsc_UL_CCCH5, omit); + + if (f_UTRAN_CellInfo_GetFDD_TDD(p_CellId) == UTRAN_FDD) { + f_UTRAN_CRLC_Config(cas_RB_UM_DL_Info_FDD(p_CellId, // configure radio bearers (downlink): RB0 (UM + CCCH + FACH) + tsc_RB0, + v_RB_LogCH_Mapping_DL)); + f_UTRAN_CRLC_Config(cas_RB_TM_UL_Info_FDD(p_CellId, // cofigure radio bearers (uplink): RB0 (TM + CCCH + RACH) + tsc_RB0, + 238, + v_RB_LogCH_Mapping_UL)); + } + else { + f_UTRAN_CRLC_Config(cas_RB_UM_DL_Info_TDD(p_CellId, // configure radio bearers (downlink): RB0 (UM + CCCH + FACH) + tsc_RB0, + // 0, // @sic R5-110103 changed by Chen sic@ + v_RB_LogCH_Mapping_DL)); + f_UTRAN_CRLC_Config(cas_RB_TM_UL_Info_TDD(p_CellId, + tsc_RB0, + 168, // @sic R5-110103 changed by Chen sic@ + 168, //@sic R5s140233 sic@ + v_RB_LogCH_Mapping_UL)); + } + } + + /* + * @desc Setup radio bearers : RB20. default values from 34.108 cl. 6.10.2.4.4 and 6.10.2.4.3.3 + * @param p_CellId + * @param p_RLC_Size + * @param p_LogChUL (default value: tsc_UL_DTCH1) + * @param p_LogChDL (default value: tsc_DL_DTCH1) + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_UTRAN_SS_RB20_AM_PS_Cfg(UTRAN_CellId_Type p_CellId, + template (value) OctetModeRLC_SizeInfoType1 p_RLC_Size, + template (value) LogicalChannelIdentity p_LogChUL := tsc_UL_DTCH1, + template (value) LogicalChannelIdentity p_LogChDL := tsc_DL_DTCH1) runs on UTRAN_PTC //@sic R5s120455 sic@ + { + var template (value) RB_LogCH_Mapping v_RB_LogCH_Mapping_RB20 := cs_RB_LogCH_Mapping(p_LogChUL, p_LogChDL ); //@sic R5s120455 sic@ + + if (f_UTRAN_CellInfo_GetFDD_TDD(p_CellId) == UTRAN_FDD) { + select (f_UTRAN_ConfigurationInfo_TestCaseRelease_Get()) { + case (FDDr11) { + f_UTRAN_CRLC_Config(cas_CRLC_SetupExtension_FDD( + utran_CellDedicated, + tsc_RB20, + cs_RB_AM_Info_RAB_Extension_FDD_r11(p_RLC_Size), + v_RB_LogCH_Mapping_RB20 )); + } + case else { + f_UTRAN_CRLC_Config(cas_RB_AM_Info_RAB_FDD(utran_CellDedicated, tsc_RB20, v_RB_LogCH_Mapping_RB20, p_RLC_Size)); + } + } + } + else { + select (f_UTRAN_ConfigurationInfo_TestCaseRelease_Get()) { + case (TDDr11) { + f_UTRAN_CRLC_Config(cas_CRLC_SetupExtension_TDD( + utran_CellDedicated, + tsc_RB20, + cs_RB_AM_Info_RAB_Extension_TDD_r11(p_RLC_Size), + v_RB_LogCH_Mapping_RB20 )); + } + case else { + f_UTRAN_CRLC_Config(cas_RB_AM_Info_RAB_TDD(utran_CellDedicated, tsc_RB20, v_RB_LogCH_Mapping_RB20, p_RLC_Size)); + } + } + } + } + + /* + * @desc Setup radio bearers : RB9 (downlink only) this bearer is for BCCH-FACH (TM + BCCH + FACH + sCCPCH1). + * The configuration is adapted from 34.108 cl. 6.10.2.4.3. + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_UTRAN_SS_RB_BCCH_FACH_Cfg(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + var template (value) RB_LogCH_Mapping v_RB_LogCH_Mapping := cs_RB_LogCH_Mapping(omit, tsc_BCCH6); + + if (f_UTRAN_CellInfo_GetFDD_TDD(p_CellId) == UTRAN_FDD) { + f_UTRAN_CRLC_Config(cas_RB_TM_DL_InfoNoSeg_FDD(p_CellId, tsc_RB_BCCH_FACH, 166, v_RB_LogCH_Mapping)); + } + else { + f_UTRAN_CRLC_Config(cas_RB_TM_DL_InfoNoSeg_TDD(p_CellId, tsc_RB_BCCH_FACH, 166, v_RB_LogCH_Mapping)); + } + } + + /* + * @desc To change the power level of the UTRAN cell + * @param p_CellId + * @param p_DL_TxPowerLevel ...the FDD power level as specified in prose or the level defined by one of the constants (e.g. tsc_AttenuationCellOFF) + * @param p_TDD_DL_TxPowerLevel (default value: -3) ...the TDD power level as specified in prose. This parameters is only used when actual power level actual is specified. + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SetCellPower (UTRAN_CellId_Type p_CellId, + integer p_DL_TxPowerLevel, + integer p_TDD_DL_TxPowerLevel := -3 ) runs on UTRAN_PTC + { + var UTRAN_CellInfo_Type_FDD v_CellInfo_FDD; + var UTRAN_CellInfo_Type_TDD v_CellInfo_TDD; + var integer v_AttenuationLevelToSet := 0; + + if (p_DL_TxPowerLevel <0) { + if (f_UTRAN_CellInfo_GetFDD_TDD(p_CellId) == UTRAN_FDD) { + v_CellInfo_FDD := f_UTRAN_CellInfo_GetFDDSpecific (p_CellId); // @sic R5s11278 sic@ + select (p_DL_TxPowerLevel) { + case (-1) { // Serving Cell + v_AttenuationLevelToSet := 0; + } + case (-2) { // Suitable Neighbour Cell + v_AttenuationLevelToSet := 10; + } + case (-3) { // Non Suitable Cell + v_AttenuationLevelToSet := 30; + } + case else { + v_AttenuationLevelToSet := v_CellInfo_FDD.powerpCPICH - p_DL_TxPowerLevel; + } + } + } + else { // TDD + v_CellInfo_TDD := f_UTRAN_CellInfo_GetTDDSpecific (p_CellId); // @sic R5s11278 sic@ + select (p_DL_TxPowerLevel) { + case (-1) { // Serving Cell + v_AttenuationLevelToSet := 0; + } + case (-2) { // Suitable Neighbour Cell + v_AttenuationLevelToSet := 10; + } + case (-3) { // Non Suitable Cell + v_AttenuationLevelToSet := 31; + } + case else { + v_AttenuationLevelToSet := v_CellInfo_TDD.powerpCCPCH - p_TDD_DL_TxPowerLevel; + } + } + } + } else if (p_DL_TxPowerLevel == tsc_AttenuationCellOFF) { // @sic R5s110014 sic@ + v_AttenuationLevelToSet := tsc_AttenuationCellOFF; + } + else { + FatalError(__FILE__, __LINE__,"UTRAN power level is incorrectly specified"); + } + + U_CPHY.send(cas_CellTxPowerModifyReq (p_CellId, v_AttenuationLevelToSet)); + U_CPHY.receive(car_CellTxPowerModifyCnf(p_CellId)); + } + + /* + * @desc To release the UTRAN cell, and all channels currently configured on it + * @param p_CellId + * @param p_RBConfig + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_ReleaseCell(UTRAN_CellId_Type p_CellId, + RB_ConfigType p_RBConfig) runs on UTRAN_PTC + { + U_CPHY.send(cas_CPHY_Cell_Release_REQ (p_CellId, p_RBConfig)); // @sic R5s110176 sic@ + U_CPHY.receive(car_CPHY_Cell_Release_CNF(p_CellId)); + } + + /* + * @desc 1. If the p_SIBBitString is less than or equal to 226 bits,the bit string is fit into one segment. + * If the bit string is less than 226 bits but more than 214 bits, the segment shall be padded to 226 bits long with padding bits set to '0'B. + * 2. If the input operand p_SIBBitString is longer than 226 bits it is segmented from left to right into segments, each segment except the last one is 222 bits . + * The last segment may be 222 bits or shorter. If the length of last segment is greater than 214 bits pad it to 222 bits with padding bits set to '0'B. + * 3. The number of segments is assigned to segCount field of the result. + * 4. The first segment is assigned to seg1 field of the result, the second segment + * is assigned to the seg2 field of the result, the third segment is assigned to the + * seg3 field of the result, and so on till the last segment. + * @param p_SIBBitString + * @return SegmentsOfSysInfoBlock + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SIB_Bitstring_Segmentation(bitstring p_SIBBitString) return SegmentsOfSysInfoBlock + { + var SegmentsOfSysInfoBlock v_Segments; + var integer v_TotalLength := lengthof(p_SIBBitString); + var integer v_Count := 0; + var bitstring v_SegmentArray [16]; + + if (v_TotalLength <= 226) + { + v_Count := 1; + if ((v_TotalLength> 214) and (v_TotalLength <226)) + { + v_SegmentArray[0] := p_SIBBitString & int2bit(0, (226 - v_TotalLength)); + } + else { + v_SegmentArray[0] := p_SIBBitString; + } + } + else { // longer than 226 + do { // @sic R5s110782 sic@ + if (v_TotalLength >= 222) // Data fixed segment + { + v_SegmentArray[v_Count] := substr(p_SIBBitString, 0, 222); // Segment the first 222 bits + v_TotalLength := v_TotalLength - 222; + p_SIBBitString := substr (p_SIBBitString, 222, v_TotalLength); // then remove this amount from the overall string + } + else if (v_TotalLength < 222 and v_TotalLength > 214) // Data fixed segment (filled with padding) + { + v_SegmentArray[v_Count] := substr(p_SIBBitString, 0, v_TotalLength) & int2bit(0, (222 - v_TotalLength)); + v_TotalLength := 0; // to finish the loop + } + else // Data variable segment <=214 + { + v_SegmentArray[v_Count] := p_SIBBitString; + v_TotalLength := 0; // to finish the loop + } + v_Count := v_Count + 1; + } while (v_TotalLength > 0); + } + + v_Segments.segCount := v_Count; + v_Segments.seg1 := v_SegmentArray[0]; + if (v_Count > 1) { + v_Segments.seg2 := v_SegmentArray[1]; + } else { + v_Segments.seg2 := omit; + } + if (v_Count > 2) { + v_Segments.seg3 := v_SegmentArray[2]; + } else { + v_Segments.seg3 := omit; + } + if (v_Count > 3) { + v_Segments.seg4 := v_SegmentArray[3]; + } else { + v_Segments.seg4 := omit; + } + if (v_Count > 4) { + v_Segments.seg5 := v_SegmentArray[4]; + } else { + v_Segments.seg5 := omit; + } + if (v_Count > 5) { + v_Segments.seg6 := v_SegmentArray[5]; + } else { + v_Segments.seg6 := omit; + } + if (v_Count > 6) { + v_Segments.seg7 := v_SegmentArray[6]; + } else { + v_Segments.seg7 := omit; + } + if (v_Count > 7) { + v_Segments.seg8 := v_SegmentArray[7]; + } else { + v_Segments.seg8 := omit; + } + if (v_Count > 8) { + v_Segments.seg9 := v_SegmentArray[8]; + } else { + v_Segments.seg9 := omit; + } + if (v_Count > 9) { + v_Segments.seg10 := v_SegmentArray[9]; + } else { + v_Segments.seg10 := omit; + } + if (v_Count > 10) { + v_Segments.seg11 := v_SegmentArray[10]; + } else { + v_Segments.seg11 := omit; + } + if (v_Count > 11) { + v_Segments.seg12 := v_SegmentArray[11]; + } else { + v_Segments.seg12 := omit; + } + if (v_Count > 12) { + v_Segments.seg13 := v_SegmentArray[12]; + } else { + v_Segments.seg13 := omit; + } + if (v_Count > 13) { + v_Segments.seg14 := v_SegmentArray[13]; + } else { + v_Segments.seg14 := omit; + } + if (v_Count > 14) { + v_Segments.seg15 := v_SegmentArray[14]; + } else { + v_Segments.seg15 := omit; + } + if (v_Count > 15) { + v_Segments.seg16 := v_SegmentArray[15]; + } else { + v_Segments.seg16 := omit; + } + return v_Segments; + } + + /* + * @desc Sends the default System Information messages, when there's only EUTRA and UTRAN components + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT, POS) + */ + function f_UTRAN_SendDefSysInfo(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + var UTRAN_CellSysInfo_Type v_CellSysInfo := f_UTRAN_SysInfo_Get(p_CellId); + var UTRAN_FDD_TDD_Type v_FDD_TDD_Mode := f_UTRAN_CellInfo_GetFDD_TDD (p_CellId); + var RatType v_RatType := fdd; + + if (v_FDD_TDD_Mode == UTRAN_TDD) { + v_RatType := tdd128; + } + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, 6, 27, cs_SIB_MsgNoSegment, tsc_Now, v_RatType); + f_UTRAN_SendSIB1_SIB2(p_CellId, tsc_Now, v_RatType); + f_UTRAN_SendSIB5(p_CellId, v_CellSysInfo.SIB5_Type, tsc_Now, 6, v_RatType); + f_UTRAN_SendSIB6(p_CellId, tsc_Now, v_RatType); + f_UTRAN_SendSIB3_4_7_18(p_CellId, tsc_Now, v_RatType); + f_UTRAN_SendSIB11(p_CellId, tsc_Now, 6, v_RatType); + f_UTRAN_SendSIB12(p_CellId, tsc_Now, v_RatType); + f_UTRAN_SendSIB19(p_CellId, tsc_Now, v_RatType); + + f_UTRAN_SendSB1(p_CellId, tsc_Now, v_RatType); + f_UTRAN_SendMIB(p_CellId, tsc_Now, v_RatType); + } + + /* + * @desc Sends the default System Information messages, when there's EUTRA, UTRAN and GERAN components + * @param p_CellId + * @status + */ + function f_UTRAN_GERAN_LTE_SendDefSysInfo(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC { + + var UTRAN_CellSysInfo_Type v_CellSysInfo := f_UTRAN_SysInfo_Get(p_CellId); + var UTRAN_FDD_TDD_Type v_FDD_TDD_Mode := f_UTRAN_CellInfo_GetFDD_TDD (p_CellId); + var RatType v_RatType := fdd; + + if (v_FDD_TDD_Mode == UTRAN_TDD) { + v_RatType := tdd128; + } + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, 7, 61, cs_SIB_MsgNoSegment, tsc_Now, v_RatType); + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, 7, 62, cs_SIB_MsgNoSegment, tsc_Now, v_RatType); + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, 7, 63, cs_SIB_MsgNoSegment, tsc_Now, v_RatType); + f_UTRAN_SendSIB1_Long(p_CellId, tsc_Now, v_RatType); + f_UTRAN_SendSIB2_Long(p_CellId, tsc_Now, v_RatType); + f_UTRAN_SendSIB3_Long(p_CellId, tsc_Now, v_RatType); + f_UTRAN_SendSIB4_Long(p_CellId, tsc_Now, v_RatType); + f_UTRAN_SendSIB5(p_CellId, v_CellSysInfo.SIB5_Type, tsc_Now, 7, v_RatType); + f_UTRAN_SendSIB7_Long(p_CellId, tsc_Now, v_RatType); + f_UTRAN_SendSIB11(p_CellId, tsc_Now, 7, v_RatType); + f_UTRAN_SendSIB16(p_CellId, tsc_Now, v_RatType); + f_UTRAN_SendSIB18_Long(p_CellId, tsc_Now, v_RatType); + f_UTRAN_SendSIB19_Long(p_CellId, tsc_Now, v_RatType); + + f_UTRAN_SendSB1(p_CellId, tsc_Now, v_RatType); + f_UTRAN_SendMIB(p_CellId, tsc_Now, v_RatType); + } + + /* + * @desc To change ValueTag either in MIB or in SB1 (depending on p_SIB_Type) + * @param p_CellSysInfo + * @param p_SIB_Type + * @return UTRAN_CellSysInfo_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SIB_ChangeValueTag(UTRAN_CellSysInfo_Type p_CellSysInfo, + SIB_Type p_SIB_Type) return UTRAN_CellSysInfo_Type + { + var UTRAN_CellSysInfo_Type v_CellSysInfo := p_CellSysInfo; + var PLMN_ValueTag v_PLMN_ValueTag; // for sib1 + var CellValueTag v_CellValueTag; // for the other sibs + + select (p_SIB_Type) { + case (systemInformationBlockType1) { + v_PLMN_ValueTag := v_CellSysInfo.MIB.sibSb_ReferenceList[1].sibSb_Type.sysInfoType1; + v_CellSysInfo.MIB.sibSb_ReferenceList[1].sibSb_Type.sysInfoType1 := v_PLMN_ValueTag mod 256 + 1; + } + case (systemInformationBlockType2) { + v_CellValueTag := v_CellSysInfo.MIB.sibSb_ReferenceList[2].sibSb_Type.sysInfoType2; + v_CellSysInfo.MIB.sibSb_ReferenceList[2].sibSb_Type.sysInfoType2 := v_CellValueTag mod 4 + 1; + } + case (systemInformationBlockType3) { + v_CellValueTag := v_CellSysInfo.MIB.sibSb_ReferenceList[3].sibSb_Type.sysInfoType3; + v_CellSysInfo.MIB.sibSb_ReferenceList[3].sibSb_Type.sysInfoType3 := v_CellValueTag mod 4 + 1; + } + case (systemInformationBlockType4) { + v_CellValueTag := v_CellSysInfo.MIB.sibSb_ReferenceList[4].sibSb_Type.sysInfoType4; + v_CellSysInfo.MIB.sibSb_ReferenceList[4].sibSb_Type.sysInfoType4 := v_CellValueTag mod 4 + 1; + } + case (systemInformationBlockType5) { + v_CellValueTag := v_CellSysInfo.MIB.sibSb_ReferenceList[5].sibSb_Type.sysInfoType5; + v_CellSysInfo.MIB.sibSb_ReferenceList[5].sibSb_Type.sysInfoType5 := v_CellValueTag mod 4 + 1; + } + case (systemInformationBlockType5bis) { + v_CellValueTag := v_CellSysInfo.MIB.sibSb_ReferenceList[5].sibSb_Type.sysInfoType5bis; + v_CellSysInfo.MIB.sibSb_ReferenceList[5].sibSb_Type.sysInfoType5bis := v_CellValueTag mod 4 + 1; + } + case (systemInformationBlockType6) { + v_CellValueTag := v_CellSysInfo.SB1.sib_ReferenceList[0].sib_Type.sysInfoType6; + v_CellSysInfo.SB1.sib_ReferenceList[0].sib_Type.sysInfoType6 := v_CellValueTag mod 4 + 1; + } + case (systemInformationBlockType11) { + v_CellValueTag := v_CellSysInfo.SB1.sib_ReferenceList[2].sib_Type.sysInfoType11; + v_CellSysInfo.SB1.sib_ReferenceList[2].sib_Type.sysInfoType11 := v_CellValueTag mod 4 + 1; + } + case (systemInformationBlockType12) { + v_CellValueTag := v_CellSysInfo.SB1.sib_ReferenceList[3].sib_Type.sysInfoType12; + v_CellSysInfo.SB1.sib_ReferenceList[3].sib_Type.sysInfoType12 := v_CellValueTag mod 4 + 1; + } + case (systemInformationBlockType18) { + v_CellValueTag := v_CellSysInfo.SB1.sib_ReferenceList[4].sib_Type.sysInfoType18; + v_CellSysInfo.SB1.sib_ReferenceList[4].sib_Type.sysInfoType18 := v_CellValueTag mod 4 + 1; + } + case (extensionType) { + v_CellValueTag := v_CellSysInfo.SB1.v6b0NonCriticalExtensions.v860NonCriticalExtensions.sysInfoTypeSB1_v860ext.extSIBTypeInfoSchedulingInfo_List[0].valueTagInfo.cellValueTag; + v_CellSysInfo.SB1.v6b0NonCriticalExtensions.v860NonCriticalExtensions.sysInfoTypeSB1_v860ext.extSIBTypeInfoSchedulingInfo_List[0].valueTagInfo.cellValueTag := v_CellValueTag mod 4 + 1; + } + case (schedulingBlock1) { + v_CellValueTag := v_CellSysInfo.MIB.sibSb_ReferenceList[0].sibSb_Type.sysInfoTypeSB1; + v_CellSysInfo.MIB.sibSb_ReferenceList[0].sibSb_Type.sysInfoTypeSB1 := v_CellValueTag mod 4 + 1; + } + } + return v_CellSysInfo; + } + + /* + * @desc To change ValueTag in MIB + * @param p_CellSysInfo + * @return UTRAN_CellSysInfo_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function fl_UTRAN_MIB_ChangeValueTag(UTRAN_CellSysInfo_Type p_CellSysInfo) return UTRAN_CellSysInfo_Type + { + var UTRAN_CellSysInfo_Type v_CellSysInfo := p_CellSysInfo; + var MIB_ValueTag v_MIB_ValueTag; + + if (not v_CellSysInfo.MIB_ValueTagChanged) { + v_MIB_ValueTag := v_CellSysInfo.MIB.mib_ValueTag; + v_CellSysInfo.MIB.mib_ValueTag := v_MIB_ValueTag mod 8 + 1; + v_CellSysInfo.MIB_ValueTagChanged := true; + } + return v_CellSysInfo; + } + + /* + * @desc To change ValueTag in SB1 + * @param p_CellSysInfo + * @return UTRAN_CellSysInfo_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SB1_ChangeValueTag(UTRAN_CellSysInfo_Type p_CellSysInfo) return UTRAN_CellSysInfo_Type + { + var UTRAN_CellSysInfo_Type v_CellSysInfo := p_CellSysInfo; + + if (not v_CellSysInfo.SB1_ValueTagChanged) { + v_CellSysInfo := f_UTRAN_SIB_ChangeValueTag(v_CellSysInfo, schedulingBlock1); + v_CellSysInfo := fl_UTRAN_MIB_ChangeValueTag(v_CellSysInfo); + v_CellSysInfo.SB1_ValueTagChanged := true; + } + return v_CellSysInfo; + } + + /* + * @desc Sends the schedule of a SIB + * @param p_CellId + * @param p_Repetition + * @param p_Position + * @param p_Message + * @param p_Timing + * @param p_RatType + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_BCCH_BCH_Msg_Schedule(UTRAN_CellId_Type p_CellId, + integer p_Repetition, + integer p_Position, + template (value) BCCH_BCH_Message p_Message, + integer p_Timing, + RatType p_RatType) runs on UTRAN_PTC + { + var template (value) U_CMAC_CONFIG_REQ v_SysInfo; + + if (p_Timing >= 512) { + v_SysInfo := cas_SysInfo_Schedul(p_CellId, p_Repetition, p_Position, p_RatType); + } else { + v_SysInfo := cas_SysInfo_Schedul(p_CellId, p_Repetition, p_Position, p_RatType, p_Timing); + } + U_CMAC.send(v_SysInfo); + U_CMAC.receive(car_SysInfoCfgCnf(p_CellId, tsc_RB_BCCH)); + U_TM.send(cas_BCCH_BCH_DataReq(p_CellId, tsc_RB_BCCH, p_Message)); + } + + /* + * @desc local function to decide whether the last segment is cs_SIB_MsgLastShort or cs_SIB_MsgLast + * @param p_SIB_Type + * @param p_SegIndex + * @param p_SIBData + * @return template (value) BCCH_BCH_Message + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function fl_UTRAN_SIB_MsgLastSegment(SIB_Type p_SIB_Type, + integer p_SegIndex, + bitstring p_SIBData) return template (value) BCCH_BCH_Message + { + var template (value) BCCH_BCH_Message v_BCCH_BCH_Message; + if (lengthof(p_SIBData) <= 214) { + v_BCCH_BCH_Message := cs_SIB_MsgLastShort(p_SIB_Type, p_SegIndex, p_SIBData); + } else { + v_BCCH_BCH_Message := cs_SIB_MsgLast(p_SIB_Type, p_SegIndex, p_SIBData); + } + return v_BCCH_BCH_Message; + } + + /* + * @desc local function to decide whether the segment is cs_SIB_MsgCmpl or cs_SIB_MsgCmplList1 + * @param p_SIB_Type + * @param p_SIBData + * @return template (value) BCCH_BCH_Message + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function fl_UTRAN_SIB_MsgInOneSegment(SIB_Type p_SIB_Type, + bitstring p_SIBData) return template (value) BCCH_BCH_Message + { + var template (value) BCCH_BCH_Message v_BCCH_BCH_Message; + + if (lengthof(p_SIBData) == 226) { + v_BCCH_BCH_Message := cs_SIB_MsgCmpl(p_SIB_Type, p_SIBData); + } else { + v_BCCH_BCH_Message := cs_SIB_MsgCmplList1(p_SIB_Type, p_SIBData); + } + return v_BCCH_BCH_Message; + } + + /* + * @desc codes the SIB's bitstrings to BCCH_BCH_Messages + * @param p_SIB_Type + * @param p_Segments + * @param p_MaxNoOfSegm + * @return template (value) UTRAN_SIB_BCCH_BCH_Messages_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SIB_Segmentation(SIB_Type p_SIB_Type, + SegmentsOfSysInfoBlock p_Segments, + integer p_MaxNoOfSegm) return template (value) UTRAN_SIB_BCCH_BCH_Messages_Type + { + var template (value) UTRAN_SIB_BCCH_BCH_Messages_Type v_SIB_BCCH_BCH_Msg; + + if (p_Segments.segCount > p_MaxNoOfSegm) { + FatalError(__FILE__, __LINE__,"to many segments"); + } else { + if (p_Segments.segCount == 1) { + v_SIB_BCCH_BCH_Msg.Seg1 := fl_UTRAN_SIB_MsgInOneSegment(p_SIB_Type, p_Segments.seg1); + v_SIB_BCCH_BCH_Msg.Seg2 := cs_SIB_MsgNoSegment; + v_SIB_BCCH_BCH_Msg.Seg3 := cs_SIB_MsgNoSegment; + v_SIB_BCCH_BCH_Msg.Seg4 := cs_SIB_MsgNoSegment; + v_SIB_BCCH_BCH_Msg.Seg5 := cs_SIB_MsgNoSegment; + v_SIB_BCCH_BCH_Msg.Seg6 := cs_SIB_MsgNoSegment; + v_SIB_BCCH_BCH_Msg.Seg7 := cs_SIB_MsgNoSegment; + v_SIB_BCCH_BCH_Msg.Seg8 := cs_SIB_MsgNoSegment; + + } else if (p_Segments.segCount == 2) { + v_SIB_BCCH_BCH_Msg.Seg1 := cs_SIB_MsgFirst(p_SIB_Type, 2, p_Segments.seg1); + v_SIB_BCCH_BCH_Msg.Seg2 := fl_UTRAN_SIB_MsgLastSegment(p_SIB_Type, 1, p_Segments.seg2); + v_SIB_BCCH_BCH_Msg.Seg3 := cs_SIB_MsgNoSegment; + v_SIB_BCCH_BCH_Msg.Seg4 := cs_SIB_MsgNoSegment; + v_SIB_BCCH_BCH_Msg.Seg5 := cs_SIB_MsgNoSegment; + v_SIB_BCCH_BCH_Msg.Seg6 := cs_SIB_MsgNoSegment; + v_SIB_BCCH_BCH_Msg.Seg7 := cs_SIB_MsgNoSegment; + v_SIB_BCCH_BCH_Msg.Seg8 := cs_SIB_MsgNoSegment; + + } else if (p_Segments.segCount == 3) { + v_SIB_BCCH_BCH_Msg.Seg1 := cs_SIB_MsgFirst(p_SIB_Type, 3, p_Segments.seg1); + v_SIB_BCCH_BCH_Msg.Seg2 := cs_SIB_MsgSubsequent(p_SIB_Type, 1, p_Segments.seg2); + v_SIB_BCCH_BCH_Msg.Seg3 := fl_UTRAN_SIB_MsgLastSegment(p_SIB_Type, 2, p_Segments.seg3); + v_SIB_BCCH_BCH_Msg.Seg4 := cs_SIB_MsgNoSegment; + v_SIB_BCCH_BCH_Msg.Seg5 := cs_SIB_MsgNoSegment; + v_SIB_BCCH_BCH_Msg.Seg6 := cs_SIB_MsgNoSegment; + v_SIB_BCCH_BCH_Msg.Seg7 := cs_SIB_MsgNoSegment; + v_SIB_BCCH_BCH_Msg.Seg8 := cs_SIB_MsgNoSegment; + + } else if (p_Segments.segCount == 4) { + v_SIB_BCCH_BCH_Msg.Seg1 := cs_SIB_MsgFirst(p_SIB_Type, 4, p_Segments.seg1); + v_SIB_BCCH_BCH_Msg.Seg2 := cs_SIB_MsgSubsequent(p_SIB_Type, 1, p_Segments.seg2); + v_SIB_BCCH_BCH_Msg.Seg3 := cs_SIB_MsgSubsequent(p_SIB_Type, 2, p_Segments.seg3); + v_SIB_BCCH_BCH_Msg.Seg4 := fl_UTRAN_SIB_MsgLastSegment(p_SIB_Type, 3, p_Segments.seg4); + v_SIB_BCCH_BCH_Msg.Seg5 := cs_SIB_MsgNoSegment; + v_SIB_BCCH_BCH_Msg.Seg6 := cs_SIB_MsgNoSegment; + v_SIB_BCCH_BCH_Msg.Seg7 := cs_SIB_MsgNoSegment; + v_SIB_BCCH_BCH_Msg.Seg8 := cs_SIB_MsgNoSegment; + } else if (p_Segments.segCount == 5) { + v_SIB_BCCH_BCH_Msg.Seg1 := cs_SIB_MsgFirst(p_SIB_Type, 4, p_Segments.seg1); + v_SIB_BCCH_BCH_Msg.Seg2 := cs_SIB_MsgSubsequent(p_SIB_Type, 1, p_Segments.seg2); + v_SIB_BCCH_BCH_Msg.Seg3 := cs_SIB_MsgSubsequent(p_SIB_Type, 2, p_Segments.seg3); + v_SIB_BCCH_BCH_Msg.Seg4 := cs_SIB_MsgSubsequent(p_SIB_Type, 2, p_Segments.seg4); + v_SIB_BCCH_BCH_Msg.Seg5 := fl_UTRAN_SIB_MsgLastSegment(p_SIB_Type, 3, p_Segments.seg5); + v_SIB_BCCH_BCH_Msg.Seg6 := cs_SIB_MsgNoSegment; + v_SIB_BCCH_BCH_Msg.Seg7 := cs_SIB_MsgNoSegment; + v_SIB_BCCH_BCH_Msg.Seg8 := cs_SIB_MsgNoSegment; + } else if (p_Segments.segCount == 6) { + v_SIB_BCCH_BCH_Msg.Seg1 := cs_SIB_MsgFirst(p_SIB_Type, 4, p_Segments.seg1); + v_SIB_BCCH_BCH_Msg.Seg2 := cs_SIB_MsgSubsequent(p_SIB_Type, 1, p_Segments.seg2); + v_SIB_BCCH_BCH_Msg.Seg3 := cs_SIB_MsgSubsequent(p_SIB_Type, 2, p_Segments.seg3); + v_SIB_BCCH_BCH_Msg.Seg4 := cs_SIB_MsgSubsequent(p_SIB_Type, 2, p_Segments.seg4); + v_SIB_BCCH_BCH_Msg.Seg5 := cs_SIB_MsgSubsequent(p_SIB_Type, 2, p_Segments.seg5); + v_SIB_BCCH_BCH_Msg.Seg6 := fl_UTRAN_SIB_MsgLastSegment(p_SIB_Type, 3, p_Segments.seg6); + v_SIB_BCCH_BCH_Msg.Seg7 := cs_SIB_MsgNoSegment; + v_SIB_BCCH_BCH_Msg.Seg8 := cs_SIB_MsgNoSegment; + } else if (p_Segments.segCount == 7) { + v_SIB_BCCH_BCH_Msg.Seg1 := cs_SIB_MsgFirst(p_SIB_Type, 4, p_Segments.seg1); + v_SIB_BCCH_BCH_Msg.Seg2 := cs_SIB_MsgSubsequent(p_SIB_Type, 1, p_Segments.seg2); + v_SIB_BCCH_BCH_Msg.Seg3 := cs_SIB_MsgSubsequent(p_SIB_Type, 2, p_Segments.seg3); + v_SIB_BCCH_BCH_Msg.Seg4 := cs_SIB_MsgSubsequent(p_SIB_Type, 2, p_Segments.seg4); + v_SIB_BCCH_BCH_Msg.Seg5 := cs_SIB_MsgSubsequent(p_SIB_Type, 2, p_Segments.seg5); + v_SIB_BCCH_BCH_Msg.Seg6 := cs_SIB_MsgSubsequent(p_SIB_Type, 2, p_Segments.seg6); + v_SIB_BCCH_BCH_Msg.Seg7 := fl_UTRAN_SIB_MsgLastSegment(p_SIB_Type, 3, p_Segments.seg7); + v_SIB_BCCH_BCH_Msg.Seg8 := cs_SIB_MsgNoSegment; + } else if (p_Segments.segCount == 8) { + v_SIB_BCCH_BCH_Msg.Seg1 := cs_SIB_MsgFirst(p_SIB_Type, 4, p_Segments.seg1); + v_SIB_BCCH_BCH_Msg.Seg2 := cs_SIB_MsgSubsequent(p_SIB_Type, 1, p_Segments.seg2); + v_SIB_BCCH_BCH_Msg.Seg3 := cs_SIB_MsgSubsequent(p_SIB_Type, 2, p_Segments.seg3); + v_SIB_BCCH_BCH_Msg.Seg4 := cs_SIB_MsgSubsequent(p_SIB_Type, 2, p_Segments.seg4); + v_SIB_BCCH_BCH_Msg.Seg5 := cs_SIB_MsgSubsequent(p_SIB_Type, 2, p_Segments.seg5); + v_SIB_BCCH_BCH_Msg.Seg6 := cs_SIB_MsgSubsequent(p_SIB_Type, 2, p_Segments.seg6); + v_SIB_BCCH_BCH_Msg.Seg7 := cs_SIB_MsgSubsequent(p_SIB_Type, 2, p_Segments.seg7); + v_SIB_BCCH_BCH_Msg.Seg8 := fl_UTRAN_SIB_MsgLastSegment(p_SIB_Type, 3, p_Segments.seg8); + } + } + return v_SIB_BCCH_BCH_Msg; + } + + /* + * @desc Sends SIB1 & SIB2 (E + U configured) SIB1 is concatenated with SIB2. + * system information on air changes immediatly if p_Timing => 512. + * change of system information on air starts at the frame number = p_Timing. + * @param p_CellId + * @param p_Timing + * @param p_RatType + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SendSIB1_SIB2(UTRAN_CellId_Type p_CellId, + integer p_Timing, + RatType p_RatType) runs on UTRAN_PTC + { + var UTRAN_CellSysInfo_Type v_CellSysInfo := f_UTRAN_SysInfo_Get(p_CellId); + var SegmentsOfSysInfoBlock v_Segments; + var template (value) BCCH_BCH_Message v_BCCH_BCH_Message; + + v_Segments.seg1 := encvalue(v_CellSysInfo.SIB1); + v_Segments.seg2 := encvalue(v_CellSysInfo.SIB2); + + if ((lengthof(v_Segments.seg1) + lengthof(v_Segments.seg2)) > 201) { + FatalError(__FILE__, __LINE__,"sib1 and sib2 are more than 201 bits"); + } + else { + v_BCCH_BCH_Message := cs_SIB_MsgCmplList2(systemInformationBlockType1, + v_Segments.seg1, + systemInformationBlockType2, + v_Segments.seg2); + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, 6, 11, v_BCCH_BCH_Message, p_Timing, p_RatType); + } + v_CellSysInfo := f_UTRAN_SIB_ChangeValueTag(v_CellSysInfo, systemInformationBlockType1); + v_CellSysInfo := f_UTRAN_SIB_ChangeValueTag(v_CellSysInfo, systemInformationBlockType2); + v_CellSysInfo := fl_UTRAN_MIB_ChangeValueTag(v_CellSysInfo); + f_UTRAN_SysInfo_Set(p_CellId, v_CellSysInfo); // write back sysinfo + } + + /* + * @desc Sends SIB1 only (E + U + G configured) + * system information on air changes immediatly if p_Timing => 512. + * change of system information on air starts at the frame number = p_Timing. + * @param p_CellId + * @param p_Timing + * @param p_RatType + * @status + */ + function f_UTRAN_SendSIB1_Long(UTRAN_CellId_Type p_CellId, + integer p_Timing, + RatType p_RatType) runs on UTRAN_PTC { + + var UTRAN_CellSysInfo_Type v_CellSysInfo := f_UTRAN_SysInfo_Get(p_CellId); + var SegmentsOfSysInfoBlock v_Segments; + var template (value) BCCH_BCH_Message v_BCCH_BCH_Message; + + v_Segments.seg1 := encvalue(v_CellSysInfo.SIB1); + + if (lengthof(v_Segments.seg1) == 226) { + v_BCCH_BCH_Message := cs_SIB_MsgCmpl(systemInformationBlockType1, + v_Segments.seg1); + } else { + v_BCCH_BCH_Message := cs_SIB_MsgCmplList1(systemInformationBlockType1, + v_Segments.seg1); + } + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, 7, 5, v_BCCH_BCH_Message, p_Timing, p_RatType); + v_CellSysInfo := f_UTRAN_SIB_ChangeValueTag(v_CellSysInfo, systemInformationBlockType1); + v_CellSysInfo := fl_UTRAN_MIB_ChangeValueTag(v_CellSysInfo); + f_UTRAN_SysInfo_Set(p_CellId, v_CellSysInfo); // write back sys info + } + + /* + * @desc Sends SIB2 only (E + U + G configured) + * system information on air changes immediatly if p_Timing => 512. + * change of system information on air starts at the frame number = p_Timing. + * @param p_CellId + * @param p_Timing + * @param p_RatType + * @status + */ + function f_UTRAN_SendSIB2_Long(UTRAN_CellId_Type p_CellId, + integer p_Timing, + RatType p_RatType) runs on UTRAN_PTC { + + var UTRAN_CellSysInfo_Type v_CellSysInfo := f_UTRAN_SysInfo_Get(p_CellId); + var SegmentsOfSysInfoBlock v_Segments; + var template (value) BCCH_BCH_Message v_BCCH_BCH_Message; + + v_Segments.seg1 := encvalue(v_CellSysInfo.SIB2); + + if (lengthof(v_Segments.seg1) == 226) { + v_BCCH_BCH_Message := cs_SIB_MsgCmpl(systemInformationBlockType2, + v_Segments.seg1); + } else { + v_BCCH_BCH_Message := cs_SIB_MsgCmplList1(systemInformationBlockType2, + v_Segments.seg1); + } + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, 7, 7, v_BCCH_BCH_Message, p_Timing, p_RatType); + v_CellSysInfo := f_UTRAN_SIB_ChangeValueTag(v_CellSysInfo, systemInformationBlockType2); + v_CellSysInfo := fl_UTRAN_MIB_ChangeValueTag(v_CellSysInfo); + f_UTRAN_SysInfo_Set(p_CellId, v_CellSysInfo); // write back sys info + } + + /* + * @desc Sends SIB3 only (E + U + G configured) + * system information on air changes immediatly if p_Timing => 512. + * change of system information on air starts at the frame number = p_Timing. + * @param p_CellId + * @param p_Timing + * @param p_RatType + * @status + */ + function f_UTRAN_SendSIB3_Long(UTRAN_CellId_Type p_CellId, + integer p_Timing, + RatType p_RatType) runs on UTRAN_PTC { + + var UTRAN_CellSysInfo_Type v_CellSysInfo := f_UTRAN_SysInfo_Get(p_CellId); + var SegmentsOfSysInfoBlock v_Segments; + var template (value) BCCH_BCH_Message v_BCCH_BCH_Message; + + v_Segments.seg1 := encvalue(v_CellSysInfo.SIB3); + + if (lengthof(v_Segments.seg1) == 226) { + v_BCCH_BCH_Message := cs_SIB_MsgCmpl(systemInformationBlockType3, + v_Segments.seg1); + } else { + v_BCCH_BCH_Message := cs_SIB_MsgCmplList1(systemInformationBlockType3, + v_Segments.seg1); + } + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, 6, 13, v_BCCH_BCH_Message, p_Timing, p_RatType); + v_CellSysInfo := f_UTRAN_SIB_ChangeValueTag(v_CellSysInfo, systemInformationBlockType3); + v_CellSysInfo := fl_UTRAN_MIB_ChangeValueTag(v_CellSysInfo); + f_UTRAN_SysInfo_Set(p_CellId, v_CellSysInfo); // write back sys info + } + + /* + * @desc Sends SIB4 only (E + U + G configured) + * system information on air changes immediatly if p_Timing => 512. + * change of system information on air starts at the frame number = p_Timing. + * @param p_CellId + * @param p_Timing + * @param p_RatType + * @status + */ + function f_UTRAN_SendSIB4_Long(UTRAN_CellId_Type p_CellId, + integer p_Timing, + RatType p_RatType) runs on UTRAN_PTC { + + var UTRAN_CellSysInfo_Type v_CellSysInfo := f_UTRAN_SysInfo_Get(p_CellId); + var SegmentsOfSysInfoBlock v_Segments; + var template (value) BCCH_BCH_Message v_BCCH_BCH_Message; + + v_Segments.seg1 := encvalue(v_CellSysInfo.SIB4); + + if (lengthof(v_Segments.seg1) == 226) { + v_BCCH_BCH_Message := cs_SIB_MsgCmpl(systemInformationBlockType4, + v_Segments.seg1); + } else { + v_BCCH_BCH_Message := cs_SIB_MsgCmplList1(systemInformationBlockType4, + v_Segments.seg1); + } + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, 6, 15, v_BCCH_BCH_Message, p_Timing, p_RatType); + v_CellSysInfo := f_UTRAN_SIB_ChangeValueTag(v_CellSysInfo, systemInformationBlockType4); + v_CellSysInfo := fl_UTRAN_MIB_ChangeValueTag(v_CellSysInfo); + f_UTRAN_SysInfo_Set(p_CellId, v_CellSysInfo); // write back sys info + } + + /* + * @desc Sends SIB5 only (E + U + G or E + U configured) + * @param p_CellId + * @param p_SIB_Type + * @param p_Timing + * @param p_Repetition + * @param p_RatType + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SendSIB5(UTRAN_CellId_Type p_CellId, + SIB_Type p_SIB_Type, // systemInformationBlockType5 or systemInformationBlockType5bis + integer p_Timing, + integer p_Repetition, + RatType p_RatType) runs on UTRAN_PTC + { + var UTRAN_CellSysInfo_Type v_CellSysInfo := f_UTRAN_SysInfo_Get(p_CellId); + var template (value) UTRAN_SIB_BCCH_BCH_Messages_Type v_SIB_BCCH_BCH_Msg; + var SegmentsOfSysInfoBlock v_Segments; + var integer v_Pos[4]; + var template (value) SchedulingInformation v_SchedulingInfo[4]; + var template (value) SchedulingInformation v_SchedulingInfo_MIB; + + if ((p_SIB_Type != systemInformationBlockType5) and (p_SIB_Type != systemInformationBlockType5bis)) { + FatalError(__FILE__, __LINE__,"invalid SIB Type"); + } + v_Pos[0] := 19; + v_Pos[1] := 21; + v_Pos[2] := 22; + v_Pos[3] := 23; + v_SchedulingInfo[0] := cs_SIB5_Schedul1; + v_SchedulingInfo[1] := cs_SIB5_Schedul2; + v_SchedulingInfo[2] := cs_SIB5_Schedul3; + v_SchedulingInfo[3] := cs_SIB5_Schedul4; + + v_Segments := f_UTRAN_SIB_Bitstring_Segmentation(encvalue(v_CellSysInfo.SIB5)); + v_SIB_BCCH_BCH_Msg := f_UTRAN_SIB_Segmentation(p_SIB_Type, v_Segments, 4); + + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, p_Repetition, v_Pos[0], v_SIB_BCCH_BCH_Msg.Seg1, p_Timing, p_RatType); + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, p_Repetition, v_Pos[1], v_SIB_BCCH_BCH_Msg.Seg2, p_Timing, p_RatType); + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, p_Repetition, v_Pos[2], v_SIB_BCCH_BCH_Msg.Seg3, p_Timing, p_RatType); + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, p_Repetition, v_Pos[3], v_SIB_BCCH_BCH_Msg.Seg4, p_Timing, p_RatType); + + if (v_Segments.segCount == 1) { + v_SchedulingInfo_MIB := v_SchedulingInfo[0]; + } else if (v_Segments.segCount == 2) { + v_SchedulingInfo_MIB := v_SchedulingInfo[1]; + } else if (v_Segments.segCount == 3) { + v_SchedulingInfo_MIB := v_SchedulingInfo[2]; + } else if (v_Segments.segCount == 4) { + v_SchedulingInfo_MIB := v_SchedulingInfo[3]; + } else { + FatalError(__FILE__, __LINE__,"sib5: more than 4 segments"); + } + + v_CellSysInfo.MIB.sibSb_ReferenceList[5].scheduling := valueof(v_SchedulingInfo_MIB); + + v_CellSysInfo := f_UTRAN_SIB_ChangeValueTag(v_CellSysInfo, p_SIB_Type); + v_CellSysInfo := fl_UTRAN_MIB_ChangeValueTag(v_CellSysInfo); + f_UTRAN_SysInfo_Set(p_CellId, v_CellSysInfo); + } + + /* + * @desc Sends SIB6 only (E + U + G or E + U configured) + * @param p_CellId + * @param p_Timing + * @param p_RatType + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SendSIB6(UTRAN_CellId_Type p_CellId, + integer p_Timing, + RatType p_RatType) runs on UTRAN_PTC + { + var UTRAN_CellSysInfo_Type v_CellSysInfo := f_UTRAN_SysInfo_Get(p_CellId); + var template (value) UTRAN_SIB_BCCH_BCH_Messages_Type v_SIB_BCCH_BCH_Msg; + var SegmentsOfSysInfoBlock v_Segments; + var integer v_Repetition := 6; + var integer v_Pos[4]; + var template (value) SchedulingInformation v_SchedulingInfo[4]; + var template (value) SchedulingInformation v_SchedulingInfo_SB1; + + v_Pos[0] := 3; + v_Pos[1] := 5; + v_Pos[2] := 6; + v_Pos[3] := 7; + v_SchedulingInfo[0] := cs_SIB6_Schedul1; + v_SchedulingInfo[1] := cs_SIB6_Schedul2; + v_SchedulingInfo[2] := cs_SIB6_Schedul3; + v_SchedulingInfo[3] := cs_SIB6_Schedul4; + + v_Segments := f_UTRAN_SIB_Bitstring_Segmentation(encvalue(v_CellSysInfo.SIB6)); + v_SIB_BCCH_BCH_Msg := f_UTRAN_SIB_Segmentation(systemInformationBlockType6, v_Segments, 4); + + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, v_Repetition, v_Pos[0], v_SIB_BCCH_BCH_Msg.Seg1, p_Timing, p_RatType); + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, v_Repetition, v_Pos[1], v_SIB_BCCH_BCH_Msg.Seg2, p_Timing, p_RatType); + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, v_Repetition, v_Pos[2], v_SIB_BCCH_BCH_Msg.Seg3, p_Timing, p_RatType); + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, v_Repetition, v_Pos[3], v_SIB_BCCH_BCH_Msg.Seg4, p_Timing, p_RatType); + + if (v_Segments.segCount == 1) { + v_SchedulingInfo_SB1 := v_SchedulingInfo[0]; + } else if (v_Segments.segCount == 2) { + v_SchedulingInfo_SB1 := v_SchedulingInfo[1]; + } else if (v_Segments.segCount == 3) { + v_SchedulingInfo_SB1 := v_SchedulingInfo[2]; + } else if (v_Segments.segCount == 4) { + v_SchedulingInfo_SB1 := v_SchedulingInfo[3]; + } else { + FatalError(__FILE__, __LINE__,"sib6: more than 4 segments"); + } + + v_CellSysInfo.SB1.sib_ReferenceList[0].scheduling := valueof(v_SchedulingInfo_SB1); + + v_CellSysInfo := f_UTRAN_SIB_ChangeValueTag(v_CellSysInfo, systemInformationBlockType6); + v_CellSysInfo := f_UTRAN_SB1_ChangeValueTag(v_CellSysInfo); + f_UTRAN_SysInfo_Set(p_CellId, v_CellSysInfo); + } + + /* + * @desc Sends SIB3, SIB 4, SIB 7 and SIB 18 (E + U configured) + * @param p_CellId + * @param p_Timing + * @param p_RatType + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SendSIB3_4_7_18(UTRAN_CellId_Type p_CellId, + integer p_Timing, + RatType p_RatType) runs on UTRAN_PTC + { + var UTRAN_CellSysInfo_Type v_CellSysInfo := f_UTRAN_SysInfo_Get(p_CellId); + var SegmentsOfSysInfoBlock v_SegmentsSib7; + var SegmentsOfSysInfoBlock v_Segments; + var template (value) BCCH_BCH_Message v_BCCH_BCH_Message; + var integer v_Repetition := 6; + + v_SegmentsSib7 := f_UTRAN_SIB_Bitstring_Segmentation(encvalue( v_CellSysInfo.SIB7)); + + if (v_SegmentsSib7.segCount != 1) { + FatalError(__FILE__, __LINE__,"sib7: more than 1 segment"); + } + else { + v_BCCH_BCH_Message := fl_UTRAN_SIB_MsgInOneSegment(systemInformationBlockType7, v_SegmentsSib7.seg1); + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, v_Repetition, 2, v_BCCH_BCH_Message, p_Timing, p_RatType); + + v_Segments.seg1 := encvalue(v_CellSysInfo.SIB3); + + if ((lengthof(v_Segments.seg1) + lengthof(v_SegmentsSib7.seg1)) > 201) { + FatalError(__FILE__, __LINE__,"sib3 and sib7 are more than 201 bits"); + } + else { + v_BCCH_BCH_Message := cs_SIB_MsgCmplList2(systemInformationBlockType7, + v_SegmentsSib7.seg1, + systemInformationBlockType3, + v_Segments.seg1); + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, v_Repetition, 10, v_BCCH_BCH_Message, p_Timing, p_RatType); + } + + v_Segments.seg1 := encvalue(v_CellSysInfo.SIB4); + + if ((lengthof(v_Segments.seg1) + lengthof(v_SegmentsSib7.seg1)) > 201) { + FatalError(__FILE__, __LINE__,"sib4 and sib7 are more than 201 bits"); + } + else { + v_BCCH_BCH_Message := cs_SIB_MsgCmplList2(systemInformationBlockType7, + v_SegmentsSib7.seg1, + systemInformationBlockType4, + v_Segments.seg1); + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, v_Repetition, 26, v_BCCH_BCH_Message, p_Timing, p_RatType); + } + + + v_Segments.seg1 := encvalue(v_CellSysInfo.SIB18); + + if ((lengthof(v_Segments.seg1) + lengthof(v_SegmentsSib7.seg1)) > 201) { + FatalError(__FILE__, __LINE__,"sib18 and sib7 are more than 201 bits"); + } + else { + v_BCCH_BCH_Message := cs_SIB_MsgCmplList2(systemInformationBlockType7, + v_SegmentsSib7.seg1, + systemInformationBlockType18, + v_Segments.seg1); + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, v_Repetition, 18, v_BCCH_BCH_Message, p_Timing, p_RatType); + } + } + v_CellSysInfo := f_UTRAN_SIB_ChangeValueTag(v_CellSysInfo, systemInformationBlockType3); + v_CellSysInfo := f_UTRAN_SIB_ChangeValueTag(v_CellSysInfo, systemInformationBlockType4); + v_CellSysInfo := f_UTRAN_SIB_ChangeValueTag(v_CellSysInfo, systemInformationBlockType18); + v_CellSysInfo := f_UTRAN_SB1_ChangeValueTag(v_CellSysInfo); + // there is no valueTag for sib7 + v_CellSysInfo := fl_UTRAN_MIB_ChangeValueTag(v_CellSysInfo); + f_UTRAN_SysInfo_Set(p_CellId, v_CellSysInfo); + } + + /* + * @desc Sends SIB7 only (E + U + G configured) + * system information on air changes immediatly if p_Timing => 512. + * change of system information on air starts at the frame number = p_Timing. + * @param p_CellId + * @param p_Timing + * @param p_RatType + * @status + */ + function f_UTRAN_SendSIB7_Long(UTRAN_CellId_Type p_CellId, + integer p_Timing, + RatType p_RatType) runs on UTRAN_PTC + { + + var UTRAN_CellSysInfo_Type v_CellSysInfo := f_UTRAN_SysInfo_Get(p_CellId); + var SegmentsOfSysInfoBlock v_Segments; + var template (value) BCCH_BCH_Message v_BCCH_BCH_Message; + + v_Segments.seg1 := encvalue(v_CellSysInfo.SIB7); + + if (lengthof(v_Segments.seg1) == 226) { + v_BCCH_BCH_Message := cs_SIB_MsgCmpl(systemInformationBlockType7, + v_Segments.seg1); + } else { + v_BCCH_BCH_Message := cs_SIB_MsgCmplList1(systemInformationBlockType7, + v_Segments.seg1); + } + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, 5, 11, v_BCCH_BCH_Message, p_Timing, p_RatType); + f_UTRAN_SysInfo_Set(p_CellId, v_CellSysInfo); // write back sys info + } + + /* + * @desc Sends SIB11 only (E + U + G or E + U configured) + * @param p_CellId + * @param p_Timing + * @param p_Repetition + * @param p_RatType + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SendSIB11(UTRAN_CellId_Type p_CellId, + integer p_Timing, + integer p_Repetition, + RatType p_RatType) runs on UTRAN_PTC + { + var UTRAN_CellSysInfo_Type v_CellSysInfo := f_UTRAN_SysInfo_Get(p_CellId); + var template (value) UTRAN_SIB_BCCH_BCH_Messages_Type v_SIB_BCCH_BCH_Msg; + var SegmentsOfSysInfoBlock v_Segments; + var integer v_Pos[4]; + var template (value) SchedulingInformation v_SchedulingInfo_SB1; + + v_Segments := f_UTRAN_SIB_Bitstring_Segmentation(encvalue(v_CellSysInfo.SIB11)); + + v_Pos[0] := 29; + v_Pos[1] := 30; + v_Pos[2] := 31; + v_SIB_BCCH_BCH_Msg := f_UTRAN_SIB_Segmentation(systemInformationBlockType11, v_Segments, 3); + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, p_Repetition, v_Pos[0], v_SIB_BCCH_BCH_Msg.Seg1, p_Timing, p_RatType); + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, p_Repetition, v_Pos[1], v_SIB_BCCH_BCH_Msg.Seg2, p_Timing, p_RatType); + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, p_Repetition, v_Pos[2], v_SIB_BCCH_BCH_Msg.Seg3, p_Timing, p_RatType); + + if (v_Segments.segCount == 1) { + v_SchedulingInfo_SB1 := cs_SIB11_Schedul1; + } else if (v_Segments.segCount == 2) { + v_SchedulingInfo_SB1 := cs_SIB11_Schedul2; + } else if (v_Segments.segCount == 3) { + v_SchedulingInfo_SB1 := cs_SIB11_Schedul3; + } else { + FatalError(__FILE__, __LINE__,"sib11: more than 3 segments"); + } + + v_CellSysInfo.SB1.sib_ReferenceList[2].scheduling := valueof(v_SchedulingInfo_SB1); + v_CellSysInfo := f_UTRAN_SIB_ChangeValueTag(v_CellSysInfo, systemInformationBlockType11); + v_CellSysInfo := f_UTRAN_SB1_ChangeValueTag(v_CellSysInfo); + f_UTRAN_SysInfo_Set(p_CellId, v_CellSysInfo); + } + + /* + * @desc Sends SIB12 only (E + U configured) + * @param p_CellId + * @param p_Timing + * @param p_RatType + * @status APPROVED (LTE_A, POS, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SendSIB12(UTRAN_CellId_Type p_CellId, + integer p_Timing, + RatType p_RatType) runs on UTRAN_PTC + { + var UTRAN_CellSysInfo_Type v_CellSysInfo := f_UTRAN_SysInfo_Get(p_CellId); + var template (value) BCCH_BCH_Message v_BCCH_BCH_Message; + var SegmentsOfSysInfoBlock v_SegmentsSib12; + + v_SegmentsSib12.seg1 := encvalue(v_CellSysInfo.SIB12); + + if (lengthof(v_SegmentsSib12.seg1) == 226) { + v_BCCH_BCH_Message := cs_SIB_MsgCmpl(systemInformationBlockType12, + v_SegmentsSib12.seg1); + } else { + v_BCCH_BCH_Message := cs_SIB_MsgCmplList1(systemInformationBlockType12, + v_SegmentsSib12.seg1); + } + + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, 6, 13, v_BCCH_BCH_Message, p_Timing, p_RatType); + v_CellSysInfo := f_UTRAN_SIB_ChangeValueTag(v_CellSysInfo, systemInformationBlockType12); + v_CellSysInfo := f_UTRAN_SB1_ChangeValueTag(v_CellSysInfo); + f_UTRAN_SysInfo_Set(p_CellId, v_CellSysInfo); + } + + /* + * @desc Sends SIB19 only (E + U configured) + * @param p_CellId + * @param p_Timing + * @param p_RatType + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SendSIB19(UTRAN_CellId_Type p_CellId, + integer p_Timing, + RatType p_RatType) runs on UTRAN_PTC + { + var UTRAN_CellSysInfo_Type v_CellSysInfo := f_UTRAN_SysInfo_Get(p_CellId); + var template (value) UTRAN_SIB_BCCH_BCH_Messages_Type v_SIB_BCCH_BCH_Msg; + var SegmentsOfSysInfoBlock v_SegmentsSib19; + var integer v_Repetition := 6; + var integer v_Pos[4]; + var template (value) SchedulingInformation v_SchedulingInfo_SB1; + + v_SegmentsSib19 := f_UTRAN_SIB_Bitstring_Segmentation(encvalue(v_CellSysInfo.SIB19)); + + v_Pos[0] := 14; + v_Pos[1] := 15; + + v_SIB_BCCH_BCH_Msg := f_UTRAN_SIB_Segmentation(extensionType, v_SegmentsSib19, 2); + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, v_Repetition, v_Pos[0], v_SIB_BCCH_BCH_Msg.Seg1, p_Timing, p_RatType); + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, v_Repetition, v_Pos[1], v_SIB_BCCH_BCH_Msg.Seg2, p_Timing, p_RatType); + + if (v_SegmentsSib19.segCount == 1) { + v_SchedulingInfo_SB1 := cs_SIB19_Schedul1; + } else if (v_SegmentsSib19.segCount == 2) { + v_SchedulingInfo_SB1 := cs_SIB19_Schedul2; + } else { + FatalError(__FILE__, __LINE__,"sib19: more than 2 segments"); + } + + v_CellSysInfo.SB1.v6b0NonCriticalExtensions.v860NonCriticalExtensions.sysInfoTypeSB1_v860ext.extSIBTypeInfoSchedulingInfo_List[0].schedulingInfo := valueof(v_SchedulingInfo_SB1); + v_CellSysInfo := f_UTRAN_SIB_ChangeValueTag(v_CellSysInfo, extensionType); + v_CellSysInfo := f_UTRAN_SB1_ChangeValueTag(v_CellSysInfo); + f_UTRAN_SysInfo_Set(p_CellId, v_CellSysInfo); + } + + /* + * @desc Sends SIB19 only (E + U + G configured) + * @param p_CellId + * @param p_Timing + * @param p_RatType + * @status + */ + function f_UTRAN_SendSIB16(UTRAN_CellId_Type p_CellId, + integer p_Timing, + RatType p_RatType) runs on UTRAN_PTC + { + var UTRAN_CellSysInfo_Type v_CellSysInfo := f_UTRAN_SysInfo_Get(p_CellId); + var template (value) UTRAN_SIB_BCCH_BCH_Messages_Type v_SIB_BCCH_BCH_Msg; + var SegmentsOfSysInfoBlock v_Segments; + var integer v_Repetition := 7; + var integer v_Pos[8]; + var template (value) SchedulingInformation v_SchedulingInfo_SB1; + + v_Segments := f_UTRAN_SIB_Bitstring_Segmentation(encvalue (v_CellSysInfo.SIB16)); + + v_Pos[0] := 35; + v_Pos[1] := 37; + v_Pos[2] := 38; + v_Pos[3] := 39; + v_Pos[4] := 51; + v_Pos[5] := 53; + v_Pos[6] := 54; + v_Pos[7] := 55; + v_SIB_BCCH_BCH_Msg := f_UTRAN_SIB_Segmentation(systemInformationBlockType16, v_Segments, 8); + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, v_Repetition, v_Pos[0], v_SIB_BCCH_BCH_Msg.Seg1, p_Timing, p_RatType); + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, v_Repetition, v_Pos[1], v_SIB_BCCH_BCH_Msg.Seg2, p_Timing, p_RatType); + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, v_Repetition, v_Pos[2], v_SIB_BCCH_BCH_Msg.Seg3, p_Timing, p_RatType); + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, v_Repetition, v_Pos[3], v_SIB_BCCH_BCH_Msg.Seg4, p_Timing, p_RatType); + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, v_Repetition, v_Pos[4], v_SIB_BCCH_BCH_Msg.Seg5, p_Timing, p_RatType); + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, v_Repetition, v_Pos[5], v_SIB_BCCH_BCH_Msg.Seg6, p_Timing, p_RatType); + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, v_Repetition, v_Pos[6], v_SIB_BCCH_BCH_Msg.Seg7, p_Timing, p_RatType); + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, v_Repetition, v_Pos[7], v_SIB_BCCH_BCH_Msg.Seg8, p_Timing, p_RatType); + + if (v_Segments.segCount == 1) { + v_SchedulingInfo_SB1 := cs_SIB16_Schedul1; + } else if (v_Segments.segCount == 2) { + v_SchedulingInfo_SB1 := cs_SIB16_Schedul2; + } else if (v_Segments.segCount == 3) { + v_SchedulingInfo_SB1 := cs_SIB16_Schedul3; + } else if (v_Segments.segCount == 4){ + v_SchedulingInfo_SB1 := cs_SIB16_Schedul4; + } else if (v_Segments.segCount == 5) { + v_SchedulingInfo_SB1 := cs_SIB16_Schedul5; + } else if (v_Segments.segCount == 6) { + v_SchedulingInfo_SB1 := cs_SIB16_Schedul6; + } else if (v_Segments.segCount == 7) { + v_SchedulingInfo_SB1 := cs_SIB16_Schedul7; + } else if (v_Segments.segCount == 8) { + v_SchedulingInfo_SB1 := cs_SIB16_Schedul8; + } else { + FatalError(__FILE__, __LINE__,"sib16: more than 8 segments"); + } + + v_CellSysInfo.SB1.sib_ReferenceList[2].scheduling := valueof(v_SchedulingInfo_SB1); + v_CellSysInfo := f_UTRAN_SIB_ChangeValueTag(v_CellSysInfo, systemInformationBlockType16); + v_CellSysInfo := f_UTRAN_SB1_ChangeValueTag(v_CellSysInfo); + f_UTRAN_SysInfo_Set(p_CellId, v_CellSysInfo); + } + + /* + * @desc Sends SIB18 only (E + U + G configured) + * @param p_CellId + * @param p_Timing + * @param p_RatType + * @status + */ + function f_UTRAN_SendSIB18_Long(UTRAN_CellId_Type p_CellId, + integer p_Timing, + RatType p_RatType) runs on UTRAN_PTC + { + var UTRAN_CellSysInfo_Type v_CellSysInfo := f_UTRAN_SysInfo_Get(p_CellId); + var SegmentsOfSysInfoBlock v_Segments; + var template (value) BCCH_BCH_Message v_BCCH_BCH_Message; + + v_Segments.seg1 := encvalue(v_CellSysInfo.SIB18); + + if (lengthof(v_Segments.seg1) == 226) { + v_BCCH_BCH_Message := cs_SIB_MsgCmpl(systemInformationBlockType18, + v_Segments.seg1); + } else { + v_BCCH_BCH_Message := cs_SIB_MsgCmplList1(systemInformationBlockType18, + v_Segments.seg1); + } + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, 7, 6, v_BCCH_BCH_Message, p_Timing, p_RatType); + v_CellSysInfo := f_UTRAN_SIB_ChangeValueTag(v_CellSysInfo, systemInformationBlockType18); + v_CellSysInfo := fl_UTRAN_MIB_ChangeValueTag(v_CellSysInfo); + f_UTRAN_SysInfo_Set(p_CellId, v_CellSysInfo); // write back sys info + } + + /* + * @desc Sends SIB19 only (E + U + G configured) + * @param p_CellId + * @param p_Timing + * @param p_RatType + * @status + */ + function f_UTRAN_SendSIB19_Long(UTRAN_CellId_Type p_CellId, + integer p_Timing, + RatType p_RatType) runs on UTRAN_PTC + { + var UTRAN_CellSysInfo_Type v_CellSysInfo := f_UTRAN_SysInfo_Get(p_CellId); + var template (value) UTRAN_SIB_BCCH_BCH_Messages_Type v_SIB_BCCH_BCH_Msg; + var SegmentsOfSysInfoBlock v_Segments; + var integer v_Repetition := 7; + var integer v_Pos[4]; + var template (value) SchedulingInformation v_SchedulingInfo_SB1; + + v_Segments := f_UTRAN_SIB_Bitstring_Segmentation(encvalue(v_CellSysInfo.SIB19)); + + v_Pos[0] := 46; + v_Pos[1] := 61; + v_Pos[2] := 62; + v_SIB_BCCH_BCH_Msg := f_UTRAN_SIB_Segmentation(extensionType, v_Segments, 3); + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, v_Repetition, v_Pos[0], v_SIB_BCCH_BCH_Msg.Seg1, p_Timing, p_RatType); + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, v_Repetition, v_Pos[1], v_SIB_BCCH_BCH_Msg.Seg2, p_Timing, p_RatType); + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, v_Repetition, v_Pos[2], v_SIB_BCCH_BCH_Msg.Seg3, p_Timing, p_RatType); + + if (v_Segments.segCount == 1) { + v_SchedulingInfo_SB1 := cs_SIB19_Schedul1_LongNeighCellInfo; + } else if (v_Segments.segCount == 2) { + v_SchedulingInfo_SB1 := cs_SIB19_Schedul2_LongNeighCellInfo; + } else if (v_Segments.segCount == 3) { + v_SchedulingInfo_SB1 := cs_SIB19_Schedul3_LongNeighCellInfo; + } else { + FatalError(__FILE__, __LINE__,"sib19: more than 3 segments"); + } + + v_CellSysInfo.SB1.v6b0NonCriticalExtensions.v860NonCriticalExtensions.sysInfoTypeSB1_v860ext.extSIBTypeInfoSchedulingInfo_List[0].schedulingInfo := valueof(v_SchedulingInfo_SB1); + v_CellSysInfo := f_UTRAN_SIB_ChangeValueTag(v_CellSysInfo, extensionType); + v_CellSysInfo := f_UTRAN_SB1_ChangeValueTag(v_CellSysInfo); + f_UTRAN_SysInfo_Set(p_CellId, v_CellSysInfo); + } + + /* + * @desc Sends SB1 + * system information on air changes immediatly if p_Timing => 512. + * change of system information on air starts at the frame number = p_Timing. + * @param p_CellId + * @param p_Timing + * @param p_RatType + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SendSB1(UTRAN_CellId_Type p_CellId, + integer p_Timing, + RatType p_RatType) runs on UTRAN_PTC + { + var UTRAN_CellSysInfo_Type v_CellSysInfo := f_UTRAN_SysInfo_Get(p_CellId); + var SegmentsOfSysInfoBlock v_Segments := f_UTRAN_SIB_Bitstring_Segmentation(encvalue (v_CellSysInfo.SB1)); + var template (value) BCCH_BCH_Message v_BCCH_BCH_Message; + var integer v_Repetition := 4; + var integer v_Position := 1; + + if (v_Segments.segCount > 1) { + FatalError(__FILE__, __LINE__,"sb1: more than 1 segment"); + + } else { + v_BCCH_BCH_Message := fl_UTRAN_SIB_MsgInOneSegment(schedulingBlock1, v_Segments.seg1); + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, v_Repetition, v_Position, v_BCCH_BCH_Message, p_Timing, p_RatType); + v_CellSysInfo := f_UTRAN_SB1_ChangeValueTag(v_CellSysInfo); + v_CellSysInfo.MIB.sibSb_ReferenceList[0].scheduling := valueof(cs_SB1_Schedul1); + v_CellSysInfo.SB1_ValueTagChanged := false; + f_UTRAN_SysInfo_Set(p_CellId, v_CellSysInfo); // write back sys info + } + } + + /* + * @desc Sends MIB + * system information on air changes immediatly if p_Timing => 512. + * change of system information on air starts at the frame number = p_Timing. + * @param p_CellId + * @param p_Timing + * @param p_RatType + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SendMIB(UTRAN_CellId_Type p_CellId, + integer p_Timing, + RatType p_RatType) runs on UTRAN_PTC + { + var UTRAN_CellSysInfo_Type v_CellSysInfo := f_UTRAN_SysInfo_Get(p_CellId); + var MasterInformationBlock v_MIB := v_CellSysInfo.MIB; + var SegmentsOfSysInfoBlock v_Segments; + var template (value) BCCH_BCH_Message v_BCCH_BCH_Message; + var integer v_Repetition := 3; + var integer v_Position := 0; + + v_CellSysInfo.MIB.plmn_Type.gsm_MAP.plmn_Identity := f_UTRAN_CellInfo_GetPLMNIdentity (p_CellId); + v_MIB := v_CellSysInfo.MIB; // @sic R5s110168 change 8.8 sic@ + + v_Segments := f_UTRAN_SIB_Bitstring_Segmentation(encvalue( v_MIB)); + + if (v_Segments.segCount > 1) { + FatalError(__FILE__, __LINE__,"mib: more than 1 segment"); + + } else { + v_BCCH_BCH_Message := fl_UTRAN_SIB_MsgInOneSegment(masterInformationBlock, v_Segments.seg1); + f_UTRAN_BCCH_BCH_Msg_Schedule(p_CellId, v_Repetition, v_Position, v_BCCH_BCH_Message, p_Timing, p_RatType); + + v_CellSysInfo.MIB_ValueTagChanged := false; + f_UTRAN_SysInfo_Set(p_CellId, v_CellSysInfo); // write back sys info + } + } + + /* + * @desc To download all security keys to CMAC (for DCH cell configurations only) and U_CRLC. + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SS_ResetSecurityKey() runs on UTRAN_PTC + { + var UTRAN_SecurityInfo_Type v_SecurityOld := f_UTRAN_Security_Get(); + var UTRAN_SecurityInfo_Type v_SecurityInfoNew := f_UTRAN_SecurityInfo_Init(); + // Keep old authentication parameters in case authentication is not re-done + v_SecurityInfoNew.authKeys.AuthPS := v_SecurityOld.authKeys.AuthPS; + v_SecurityInfoNew.authKeys.AuthCS.CKey := v_SecurityOld.authKeys.AuthCS.CKey; + v_SecurityInfoNew.authKeys.AuthCS.IKey := v_SecurityOld.authKeys.AuthCS.IKey; + v_SecurityInfoNew.authKeys.AuthCS.CKeySeq := v_SecurityOld.authKeys.AuthCS.CKeySeq; + v_SecurityInfoNew.authKeys.CSinOtherRAT := v_SecurityOld.authKeys.CSinOtherRAT; // @sic R5s110168 change 8.7 sic@ + v_SecurityInfoNew.cipheringAlgorithmCapability := v_SecurityOld.cipheringAlgorithmCapability; // @sic R5s110788 sic@ + v_SecurityInfoNew.integrProtAlgCap := v_SecurityOld.integrProtAlgCap; // @sic R5s110788 sic@ + + + f_UTRAN_Security_Set(v_SecurityInfoNew); + } + + + + /* + * @desc To get a frame number from the given phyiscal channel + * @param p_CellId + * @param p_PhysicalChannelIdentity + * @return integer + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CPHY_GetFrameNumber(UTRAN_CellId_Type p_CellId, + PhysicalChannelIdentity p_PhysicalChannelIdentity) runs on UTRAN_PTC return integer + { + var U_CPHY_CONFIG_CNF v_CPHY_Frame_Number_CNF; + var integer v_FrameNumber := 0; + + U_CPHY.send(cas_GetFrameNum(p_CellId, p_PhysicalChannelIdentity)); + U_CPHY.receive(car_GetFrameNum(p_CellId, p_PhysicalChannelIdentity)) -> value v_CPHY_Frame_Number_CNF; + v_FrameNumber := v_CPHY_Frame_Number_CNF.frameNo.frameNumber; + + return v_FrameNumber; + } + + /* + * @desc To Activate ciphering for UL in the SS + * @param p_UTRAN_FDD_TDD + * @param p_CN_Domain + * @param p_ActivationTimeInfoList + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_ActivateCiphering_RLC_UL(UTRAN_FDD_TDD_Type p_UTRAN_FDD_TDD, + CN_DomainIdentity p_CN_Domain, + template (value) RB_ActivationTimeInfoList p_ActivationTimeInfoList) runs on UTRAN_PTC + { + if (p_UTRAN_FDD_TDD == UTRAN_FDD) { + f_UTRAN_CRLC_CipheringActivate(cas_CRLC_UL_CipherActReq_FDD(utran_CellDedicated, + p_CN_Domain, + p_ActivationTimeInfoList, + notInc)); + } + else { + f_UTRAN_CRLC_CipheringActivate(cas_CRLC_UL_CipherActReq_TDD(utran_CellDedicated, + p_CN_Domain, + p_ActivationTimeInfoList, + notInc)); + } + } + + /* + * @desc To Activate ciphering for DL in the SS for given RB + * @param p_UTRAN_FDD_TDD + * @param p_CN_Domain + * @param p_CipherMode + * @param p_RB + * @param p_SN_RB + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_ActivateCiphering_RLC_DL(UTRAN_FDD_TDD_Type p_UTRAN_FDD_TDD, + CN_DomainIdentity p_CN_Domain, + CipheringModeCommand_r7 p_CipherMode, + integer p_RB, + RLC_SequenceNumber p_SN_RB) runs on UTRAN_PTC + { + if (p_UTRAN_FDD_TDD == UTRAN_FDD) { + f_UTRAN_CRLC_CipheringActivate(cas_CRLC_DL_CipherActReq_FDD(utran_CellDedicated, + p_CN_Domain, + p_RB, + p_CipherMode, + p_SN_RB, + notInc)); + } + else { + f_UTRAN_CRLC_CipheringActivate(cas_CRLC_DL_CipherActReq_TDD(utran_CellDedicated, + p_CN_Domain, + p_RB, + p_CipherMode, + p_SN_RB, + notInc)); + } + } + + /* + * @desc To Activate ciphering for DL in the SS: RB1..4, RLC + * @param p_CellId + * @param p_CN_Domain + * @param p_CipherMode + * @param p_SN_RB1 + * @param p_SN_RB2 + * @param p_SN_RB3 + * @param p_SN_RB4 + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_ActivateCiphering_RLC_DL_SS_RB_1_2_3_4(UTRAN_CellId_Type p_CellId, + CN_DomainIdentity p_CN_Domain, + CipheringModeCommand_r7 p_CipherMode, + RLC_SequenceNumber p_SN_RB1, + RLC_SequenceNumber p_SN_RB2, + RLC_SequenceNumber p_SN_RB3, + RLC_SequenceNumber p_SN_RB4) runs on UTRAN_PTC + { + var UTRAN_FDD_TDD_Type v_UTRAN_FDD_TDD := f_UTRAN_CellInfo_GetFDD_TDD(p_CellId); + f_UTRAN_ActivateCiphering_RLC_DL(v_UTRAN_FDD_TDD, p_CN_Domain, p_CipherMode, tsc_RB1, p_SN_RB1); + f_UTRAN_ActivateCiphering_RLC_DL(v_UTRAN_FDD_TDD, p_CN_Domain, p_CipherMode, tsc_RB2, p_SN_RB2); + f_UTRAN_ActivateCiphering_RLC_DL(v_UTRAN_FDD_TDD, p_CN_Domain, p_CipherMode, tsc_RB3, p_SN_RB3); + f_UTRAN_ActivateCiphering_RLC_DL(v_UTRAN_FDD_TDD, p_CN_Domain, p_CipherMode, tsc_RB4, p_SN_RB4); + } + + + /* + * @desc To Activate ciphering for DL in the SS + * @param p_CellId + * @param p_CipherActTime + * @return template (value) RB_ActivationTimeInfoList + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_ActivateCiphering_DL_SS(UTRAN_CellId_Type p_CellId, + ActivationTime p_CipherActTime) runs on UTRAN_PTC return template (value) RB_ActivationTimeInfoList + { + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + var RB_ConfigType v_CellConfig := f_UTRAN_CellInfo_GetConfigType(p_CellId); + var template (value) RB_ActivationTimeInfoList v_RB_ActivationTimeInfoList; + var RLC_SequenceNumber v_RLC_SN_RB1, v_RLC_SN_RB2, v_RLC_SN_RB3, v_RLC_SN_RB4, v_RLC_SN_RAB; + + v_RLC_SN_RB1 := f_UTRAN_CRLC_SequenceNumber_GetCount_C_LSB_DL(tsc_RB1); + v_RLC_SN_RB2 := f_UTRAN_CRLC_SequenceNumber_GetCount_C_LSB_DL(tsc_RB2); + v_RLC_SN_RB3 := f_UTRAN_CRLC_SequenceNumber_GetCount_C_LSB_DL(tsc_RB3); + v_RLC_SN_RB4 := f_UTRAN_CRLC_SequenceNumber_GetCount_C_LSB_DL(tsc_RB4); + + f_UTRAN_CRLC_Suspend(tsc_RB1, v_RLC_SN_RB1); + f_UTRAN_CRLC_Suspend(tsc_RB3, v_RLC_SN_RB3); + f_UTRAN_CRLC_Suspend(tsc_RB4, v_RLC_SN_RB4); + + // @sic R5s130558 sic@ + f_UTRAN_ActivateCiphering_RLC_DL_SS_RB_1_2_3_4(p_CellId, v_SecurityInfo.recentSecureDomain, v_SecurityInfo.dL_CipherMode, v_RLC_SN_RB1, v_RLC_SN_RB2 + 2, v_RLC_SN_RB3, v_RLC_SN_RB4); //@sic R5s130647 sic@ + + v_RB_ActivationTimeInfoList := cs_RB_ActTimeInfoListSRBs(v_RLC_SN_RB1, + v_RLC_SN_RB2 + 2, + v_RLC_SN_RB3, + v_RLC_SN_RB4); + if (v_SecurityInfo.recentSecureDomain == ps_domain) { + select (v_CellConfig) { + case (cell_DCH_64kPS_RAB_SRB, cell_Four_DTCH_PS_CS) { //@sic R5s140096 sic@ + v_RLC_SN_RAB := f_UTRAN_CRLC_SequenceNumber_GetCount_C_LSB_DL(tsc_RB20); + v_RB_ActivationTimeInfoList := cs_RB_ActTimeInfoListSRBs_20(v_RLC_SN_RB1, + v_RLC_SN_RB2 + 2, + v_RLC_SN_RB3, + v_RLC_SN_RB4, + v_RLC_SN_RAB); + f_UTRAN_CRLC_DL_CipherCfgRB ( p_CellId, v_SecurityInfo.recentSecureDomain, v_SecurityInfo.dL_CipherMode, v_CellConfig, true ); // @sic R5s110305 sic@ + } + case (cell_DCH_64kPS_AM_RAB ) { //@sic R5s140400 sic@ + v_RLC_SN_RAB := f_UTRAN_CRLC_SequenceNumber_GetCount_C_LSB_DL(tsc_RB22); + v_RB_ActivationTimeInfoList := cs_RB_ActTimeInfoListSRBs_22(v_RLC_SN_RB1, + v_RLC_SN_RB2 + 2, + v_RLC_SN_RB3, + v_RLC_SN_RB4, + v_RLC_SN_RAB); + f_UTRAN_CRLC_DL_CipherCfgRB ( p_CellId, v_SecurityInfo.recentSecureDomain, v_SecurityInfo.dL_CipherMode, v_CellConfig, true ); + } + case (cell_DCH_E_HS, cell_E_HS, cell_DCH_dlSRB_E_HS, cell_DCH_HS_DSCH) { + v_RLC_SN_RAB := f_UTRAN_CRLC_SequenceNumber_GetCount_C_LSB_DL(tsc_RB25); + v_RB_ActivationTimeInfoList := cs_RB_ActTimeInfoListSRBs_25(v_RLC_SN_RB1, + v_RLC_SN_RB2 + 2, + v_RLC_SN_RB3, + v_RLC_SN_RB4, + v_RLC_SN_RAB); + f_UTRAN_CRLC_DL_CipherCfgRB ( p_CellId, v_SecurityInfo.recentSecureDomain, v_SecurityInfo.dL_CipherMode, v_CellConfig, true ); // @sic R5s110305 sic@ + } + } + } + f_UTRAN_CMAC_CipherCfg(p_CellId, p_CipherActTime, v_SecurityInfo.dL_CipherMode, incPerCFN_Cycle); + return (v_RB_ActivationTimeInfoList); + } + + /* + * @desc Configure ciphering for RLC layer for one configured AM/UM RABs + * From Benchmark-function ts_CRLC_DL_CipherCfgRB & ts_CRLC_DL_CipherCfgRB_HS + * @param p_CellId + * @param p_Cn_DomainIdentity + * @param p_CipherMode + * @param p_RB_Id + * @param p_Suspend + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CRLC_DL_CipherCfgOneRB(UTRAN_CellId_Type p_CellId, + CN_DomainIdentity p_Cn_DomainIdentity, + CipheringModeCommand_r7 p_CipherMode, + integer p_RB_Id, + boolean p_Suspend) runs on UTRAN_PTC + { + var RLC_SequenceNumber v_RLC_SN_RAB := 0; + + if (p_Suspend) { + v_RLC_SN_RAB := f_UTRAN_CRLC_SequenceNumber_GetCount_C_LSB_DL(p_RB_Id); + f_UTRAN_CRLC_Suspend(p_RB_Id, v_RLC_SN_RAB); + } + f_UTRAN_ActivateCiphering_RLC_DL(f_UTRAN_CellInfo_GetFDD_TDD(p_CellId), p_Cn_DomainIdentity, p_CipherMode, p_RB_Id, v_RLC_SN_RAB); + } + + /* + * @desc Configure ciphering for RLC layer for configured AM/UM RABs + * From Benchmark-function ts_CRLC_DL_CipherCfgRB & ts_CRLC_DL_CipherCfgRB_HS + * @param p_CellId + * @param p_Cn_DomainIdentity + * @param p_CipherMode + * @param p_RbType + * @param p_Suspend + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CRLC_DL_CipherCfgRB(UTRAN_CellId_Type p_CellId, + CN_DomainIdentity p_Cn_DomainIdentity, + CipheringModeCommand_r7 p_CipherMode, + RB_ConfigType p_RbType, + boolean p_Suspend) runs on UTRAN_PTC + { + //var RLC_SequenceNumber v_RLC_SN_RAB := 0; + var integer v_RB_Id; + + if ( p_Cn_DomainIdentity == ps_domain ) { + select (p_RbType) { + case (cell_DCH_64kPS_RAB_SRB, cell_FACH_PS, cell_Four_DTCH_PS_CS) { // @sic R5s110210 R5s140096 sic@ + v_RB_Id := tsc_RB20; + } + case (cell_DCH_HS_DSCH, cell_DCH_E_HS, cell_E_HS, cell_DCH_dlSRB_E_HS, cell_FACH_HS) { + v_RB_Id := tsc_RB25; + } + case else { + FatalError(__FILE__, __LINE__,"Configuration not supported"); + } + } + } else { + FatalError(__FILE__, __LINE__,"CS branch not yet implemented"); + } + f_UTRAN_CRLC_DL_CipherCfgOneRB(p_CellId, p_Cn_DomainIdentity, p_CipherMode, v_RB_Id, p_Suspend); + } + + /* + * @desc To request to start or to modify the downlink ur uplink integrity protection. + * The ASP shall be called before the sending of Security mode Command. It activates the integrity on all SRBs in DL. + * The ASP shall not be used if integrity is to be switched off in the test case. + * @param p_CRLC_Integrity_Activate_REQ + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CRLC_IntegrityActivate(template (value) U_CRLC_CONFIG_REQ p_CRLC_Integrity_Activate_REQ) runs on UTRAN_PTC + { + U_CRLC.send(p_CRLC_Integrity_Activate_REQ); + U_CRLC.receive(car_CRLC_IntegrityActivateCnf(utran_CellDedicated)); + } + + /* + * @desc Resume radio bearers for the security procedure + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CRLC_ResumeSecurity(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + var RB_ConfigType v_CellConfig := f_UTRAN_CellInfo_GetConfigType(p_CellId); + + f_UTRAN_CRLC_Resume(tsc_RB1); + f_UTRAN_CRLC_Resume(tsc_RB3); + f_UTRAN_CRLC_Resume(tsc_RB4); + + select (v_CellConfig) { + case (cell_DCH_64kPS_RAB_SRB, cell_Four_DTCH_PS_CS) { + if (v_SecurityInfo.recentSecureDomain == ps_domain) { + f_UTRAN_CRLC_Resume(tsc_RB20); + } + } + case (cell_DCH_E_HS, cell_E_HS, cell_DCH_dlSRB_E_HS, cell_DCH_HS_DSCH) { + f_UTRAN_CRLC_Resume(tsc_RB25); + } + } + + } + + /* + * @desc To request to resume data transmission. + * @param p_RB_Id + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CRLC_Resume(integer p_RB_Id) runs on UTRAN_PTC + { + U_CRLC.send(cas_ResumeRB(utran_CellDedicated, p_RB_Id)); + U_CRLC.receive(car_ResumeRB(utran_CellDedicated, p_RB_Id)); + } + + /* + * @desc To request the suspension of data transmission. + * Optionally SS may start immediate suspension of processing of data PDUs in UL. The UL control PDUs and Piggybacked + * status may optionally be processed. + * @param p_RB_Id + * @param p_RLC_SeqNum - indicates that an RLC entity will not send a PDU with sequence number VT(S)+N for AM + * and sequence number VT(US)+N for UM, where N is a non negative number. + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CRLC_Suspend(integer p_RB_Id, + RLC_SequenceNumber p_RLC_SeqNum) runs on UTRAN_PTC + { + U_CRLC.send(cas_RLC_SuspendRB(utran_CellDedicated, p_RB_Id, p_RLC_SeqNum)); + U_CRLC.receive(car_SuspendRB(utran_CellDedicated, p_RB_Id)); + } + + /* + * @desc To request the SS tp prohibit/continue acknowledging RLC SDUs + * @param p_RB_Id + * @param p_CRLC_ProhibitRLC_Ack_REQ + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CRLC_ProhibitRLC_Ack(integer p_RB_Id, + template (value) U_CRLC_CONFIG_REQ p_CRLC_ProhibitRLC_Ack_REQ) runs on UTRAN_PTC + { + U_CRLC.send(p_CRLC_ProhibitRLC_Ack_REQ); + U_CRLC.receive(car_CRLC_ProhibitRLC_Ack_CNF(utran_CellDedicated, p_RB_Id)); + } + + /* + * @desc To request to configure the RLC Security Mode. + * @param p_Domain + * @param p_HFN + * @param p_KC + * @param p_IK + * @param p_GSM_ck + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CRLC_SecurityMode_Config(CN_DomainIdentity p_Domain, + template (omit) HyperFrameNumber p_HFN, + template (omit) KeyCiphering p_KC, + template (omit) IntegrityKey p_IK := omit, + template (omit) GSM_CipheringKey p_GSM_ck := omit) runs on UTRAN_PTC + { + U_CRLC.send(cas_CRLC_SecurityModeCfgReq(utran_CellDedicated, p_Domain, p_HFN, p_KC, p_IK, p_GSM_ck)); + U_CRLC.receive(car_CRLC_SecurityModeCfgCnf(utran_CellDedicated)); + } + + /* + * @desc To download all security keys to U_CMAC. + * Only the keys/Parameters to be downloaded will be passed as parameters, rest will be omitted depending on the PICS. + * @param p_Domain + * @param p_HFN + * @param p_KC + * @param p_IK + * @param p_GSM_ck + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CMAC_SecurityMode_Config(CN_DomainIdentity p_Domain, + template (omit) HyperFrameNumber p_HFN, + template (omit) KeyCiphering p_KC := omit, + template (omit) IntegrityKey p_IK := omit, + template (omit) GSM_CipheringKey p_GSM_ck := omit) runs on UTRAN_PTC + { + U_CMAC.send(cas_CMAC_SecurityModeCfgReq(utran_CellDedicated, p_Domain, p_HFN, p_KC, p_IK, p_GSM_ck)); + U_CMAC.receive(car_CMAC_SecurityModeCfgCnf(utran_CellDedicated)); + } + + /* + * @desc To request the RLC layer to return the current counter sequece number to which the next DL PDU to be sent or + * the expected UL PDU to be received. + * @param p_RB_Id + * @return CRLC_SequenceNumber_CNF + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CRLC_SequenceNumber_Get(integer p_RB_Id) runs on UTRAN_PTC return CRLC_SequenceNumber_CNF + { + var U_CRLC_CONFIG_CNF v_CRLC_SequenceNumber_CNF; + + U_CRLC.send(cas_GetRLC_SeqNum(utran_CellDedicated, p_RB_Id)); + U_CRLC.receive(car_GetRLC_SeqNum(utran_CellDedicated, p_RB_Id)) -> value v_CRLC_SequenceNumber_CNF; + return v_CRLC_SequenceNumber_CNF.seqNo; + } + + /* + * @desc return DL RLC_SequenceNumber for given RB + * @param p_RB_Id + * @return RLC_SequenceNumber + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CRLC_SequenceNumber_GetCount_C_LSB_DL(integer p_RB_Id) runs on UTRAN_PTC return RLC_SequenceNumber + { + var CRLC_SequenceNumber_CNF v_CRLC_SequenceNumber_CNF := f_UTRAN_CRLC_SequenceNumber_Get(p_RB_Id); + return v_CRLC_SequenceNumber_CNF.count_C_LSB_DL; + } + + /* + * @desc To request the SS to set the RRC message sequence number in COUNT-I to the value specified in this ASP. + * The function is used to initialise the SS RRC. + * @param p_CellId + * @param p_RB_Id + * @param p_SN + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CRLC_SetRRC_MessageSN(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + RRC_SequenceNumber p_SN) runs on UTRAN_PTC + { + U_CRLC.send(cas_DL_CRLC_SetRRC_MSN_REQ(p_CellId, p_RB_Id, p_SN)); + U_CRLC.receive(car_CRLC_SetRRC_MSN_CNF(p_CellId, p_RB_Id)); + } + + /* + * @desc To request the SS to return the values in COUNT-I for sending the next DL RRC message + * or for receiving the next UL RRC message on the concerned SRB + * @param p_RB_Id + * @return CRLC_RRC_MessageSN_CNF + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CRLC_RRC_MessageSN_Get(integer p_RB_Id) runs on UTRAN_PTC return CRLC_RRC_MessageSN_CNF + { + var U_CRLC_CONFIG_CNF v_CRLC_RRC_MessageSN_CNF; + + U_CRLC.send(cas_CRLC_RRC_MessageSN_REQ(utran_CellDedicated, p_RB_Id)); + U_CRLC.receive(car_CRLC_RRC_MessageSN_CNF(utran_CellDedicated, p_RB_Id)) -> value v_CRLC_RRC_MessageSN_CNF; + + return v_CRLC_RRC_MessageSN_CNF.rrcMsgSN; + } + + /* + * @desc To Set the Message sequence number in DL to all 0 for RB0 to RB4 + * This step to be used when Integrity is to be started + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SetDL_RRC_MessageSN(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + f_UTRAN_CRLC_SetRRC_MessageSN(p_CellId, tsc_RB0, 0); + f_UTRAN_CRLC_SetRRC_MessageSN(p_CellId, tsc_RB1, 0); + f_UTRAN_CRLC_SetRRC_MessageSN(p_CellId, tsc_RB2, 0); + f_UTRAN_CRLC_SetRRC_MessageSN(p_CellId, tsc_RB3, 0); + f_UTRAN_CRLC_SetRRC_MessageSN(p_CellId, tsc_RB4, 0); + } + + /* + * @desc To request to start or restart downlink ciphering or uplink deciphering. + * @param p_CRLC_Ciphering_Activate_REQ + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CRLC_CipheringActivate(template (value) U_CRLC_CONFIG_REQ p_CRLC_Ciphering_Activate_REQ) runs on UTRAN_PTC + { + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + + if (v_SecurityInfo.cipheringOnOff) { //@sic R5s130558 sic@ + U_CRLC.send(p_CRLC_Ciphering_Activate_REQ); + U_CRLC.receive(car_CRLC_CipherActCnf(utran_CellDedicated)); + } + } + + /* + * @desc To Configure the MAC Layer with the + * @param p_CellId + * @param p_CipherActTime + * @param p_CipherMode + * @param p_IncrDcr + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CMAC_CipherCfg(UTRAN_CellId_Type p_CellId, + ActivationTime p_CipherActTime, + CipheringModeCommand_r7 p_CipherMode, + Increment_Mode p_IncrDcr) runs on UTRAN_PTC + { + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + var RB_ConfigType v_CellConfig := f_UTRAN_CellInfo_GetConfigType(p_CellId); + + if ((v_CellConfig == cell_DCH_Speech) and (v_SecurityInfo.recentSecureDomain == cs_domain)) { + f_UTRAN_CMAC_UL_DL_CipherCfg(p_CellId, //@sic R5s130243 sic@ + p_CipherMode, + p_CipherActTime, + p_IncrDcr); + } + } + + /* + * @desc To request to start or restart downlink ciphering or uplink deciphering. + * @param p_PhyChId + * @param p_CMAC_Ciphering_Activate_REQ + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CMAC_CipheringActivate(integer p_PhyChId, + template (value) U_CMAC_CONFIG_REQ p_CMAC_Ciphering_Activate_REQ) runs on UTRAN_PTC + { + U_CMAC.send(p_CMAC_Ciphering_Activate_REQ); + U_CMAC.receive(car_CMAC_CipherActCnf(utran_CellDedicated, p_PhyChId)); + } + + /* + * @desc To activate MAC ciphering in both directions + * @param p_CellId + * @param p_CipherMode + * @param p_ActTime + * @param p_IncrDcr + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CMAC_UL_DL_CipherCfg( UTRAN_CellId_Type p_CellId, //@sic R5s130243 sic@ + CipheringModeCommand_r7 p_CipherMode, + integer p_ActTime, + Increment_Mode p_IncrDcr) runs on UTRAN_PTC + { + var RatType v_RatType := f_UTRAN_CellInfo_GetRatType( p_CellId ); //@sic R5s130243 sic@ + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + + if (v_SecurityInfo.cipheringOnOff) { //@sic R5s130558 sic@ + + f_UTRAN_CMAC_CipheringActivate(tsc_DL_DPCH1, + cas_CMAC_DL_CipherActReq(utran_CellDedicated, + tsc_DL_DPCH1, + p_CipherMode, + p_ActTime, + p_IncrDcr, + v_RatType)); + f_UTRAN_CMAC_CipheringActivate(tsc_UL_DPCH1, + cas_CMAC_UL_CipherActReq(utran_CellDedicated, + tsc_UL_DPCH1, + p_CipherMode, + p_ActTime, + p_IncrDcr, + v_RatType)); + } + } + + /* + * @desc To restart CRLC for the next RRC connection + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_UTRAN_RestartCRLC_ForNextConnection(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + var RB_ConfigType v_CellConfig := f_UTRAN_CellInfo_GetConfigType(p_CellId); + var UTRAN_FDD_TDD_Type v_FDD_TDD := f_UTRAN_CellInfo_GetFDD_TDD(p_CellId); + + select (v_CellConfig) { + case (cell_DCH_StandAloneSRB) { + f_UTRAN_CRLC_RelReconfSRB(v_FDD_TDD); + f_UTRAN_CellInfo_SetConfigType(p_CellId, cell_DCH_StandAloneSRB_NoConn); + } + case (cell_FACH) { + f_UTRAN_CRLC_RelReconfSRB(v_FDD_TDD); + f_UTRAN_CellInfo_SetConfigType(p_CellId, cell_FACH_NoConn); + } + case (cell_DCH_Speech, + cell_DCH_64kPS_RAB_SRB, + cell_Four_DTCH_PS_CS) { // @sic R5s120070 sic@ + f_UTRAN_SS_ReconfRAB_ToSRB(p_CellId); + f_UTRAN_CellInfo_SetConfigType(p_CellId, cell_DCH_StandAloneSRB_NoConn); + } + case (cell_DCH_E_HS, + cell_E_HS, + cell_DCH_HS_DSCH, + cell_DCH_dlSRB_E_HS) { // @sic R5s110683 sic@ + f_UTRAN_SS_ReconfRAB_ToSRB(p_CellId); + f_UTRAN_CellInfo_SetConfigType(p_CellId, cell_DCH_StandAloneSRB_NoConn); + } + case else { + FatalError(__FILE__, __LINE__, "invalid configuration"); + } + } + } + + /* + * @desc To release the DPCH + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SS_RelDPCH(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + var RB_ConfigType v_CellConfig := f_UTRAN_CellInfo_GetConfigType(p_CellId); + var UTRAN_FDD_TDD_Type v_FDD_TDD := f_UTRAN_CellInfo_GetFDD_TDD(p_CellId); + var integer v_NodeB := f_UTRAN_CellInfo_GetNodeB_Id(p_CellId); + + f_UTRAN_CRLC_Rel(utran_CellDedicated, tsc_RB1, v_FDD_TDD); + f_UTRAN_CRLC_Rel(utran_CellDedicated, tsc_RB2, v_FDD_TDD); + f_UTRAN_CRLC_Rel(utran_CellDedicated, tsc_RB3, v_FDD_TDD); + f_UTRAN_CRLC_Rel(utran_CellDedicated, tsc_RB4, v_FDD_TDD); + + select (v_CellConfig) { + case (cell_DCH_StandAloneSRB_NoConn, cell_DCH_StandAloneSRB) { + // Nothing extra to do in this case + } + case (cell_DCH_Speech) { + f_UTRAN_CRLC_Rel(utran_CellDedicated, tsc_RB10, v_FDD_TDD); + f_UTRAN_CRLC_Rel(utran_CellDedicated, tsc_RB11, v_FDD_TDD); + f_UTRAN_CRLC_Rel(utran_CellDedicated, tsc_RB12, v_FDD_TDD); + f_UTRAN_CellInfo_SetConfigType(p_CellId, cell_DCH_StandAloneSRB_NoConn); + } + case (cell_DCH_64kPS_RAB_SRB, cell_DCH_2AM_PS) { //@sic R5s140387 sic@ + f_UTRAN_CPDCP_Rel(p_CellId, tsc_RB20); //@sic R5s130195 PDCP sic@ + f_UTRAN_CRLC_Rel(utran_CellDedicated, tsc_RB20, v_FDD_TDD); + } + case ( cell_DCH_64kPS_AM_RAB ) { //@sic R5s140400 sic@ + f_UTRAN_CPDCP_Rel(p_CellId, tsc_RB22); + f_UTRAN_CRLC_Rel(utran_CellDedicated, tsc_RB22, v_FDD_TDD); + } + case (cell_Four_DTCH_PS_CS){ //@sic R5s120070 sic@ + f_UTRAN_CPDCP_Rel(p_CellId, tsc_RB20); //@sic R5s130195 PDCP sic@ + f_UTRAN_CRLC_Rel(utran_CellDedicated, tsc_RB20, v_FDD_TDD); + f_UTRAN_CRLC_Rel(utran_CellDedicated, tsc_RB10, v_FDD_TDD); + f_UTRAN_CRLC_Rel(utran_CellDedicated, tsc_RB11, v_FDD_TDD); + f_UTRAN_CRLC_Rel(utran_CellDedicated, tsc_RB12, v_FDD_TDD); + f_UTRAN_CellInfo_SetConfigType(p_CellId, cell_DCH_StandAloneSRB_NoConn); + } + + case (cell_DCH_HS_DSCH) { + f_UTRAN_CPDCP_Rel(p_CellId, tsc_RB25); //@sic R5s130195 PDCP sic@ + f_UTRAN_CRLC_Rel(utran_CellDedicated, tsc_RB25, v_FDD_TDD); + if (v_FDD_TDD == UTRAN_FDD) { + f_UTRAN_CMAC_Config(cas_MAC_FDD_Release(p_CellId, tsc_HSPDSCH)); // @sic R5s110788 sic@ + f_UTRAN_CPHY_TrCH_Release (cas_PHY_ReleaseDCH_FDD(p_CellId, tsc_HSPDSCH, cs_TrChConfigTypeNonDCH)); // @sic R5s110386, R5-113036 sic@ + f_UTRAN_CPHY_RL_Release (cas_RL_RelReq_FDD(p_CellId, tsc_HSPDSCH)); + } + else { //TDD + f_UTRAN_CMAC_Config(cas_MAC_TDD_Release(p_CellId, tsc_HSPDSCH)); // @sic R5s110788 sic@ + f_UTRAN_CPHY_TrCH_Release (cas_PHY_ReleaseDCH_TDD(p_CellId, tsc_HSPDSCH, cs_TrChConfigTypeNonDCH)); // @sic R5s110386, R5-113036 sic@ + f_UTRAN_CPHY_RL_Release (cas_RL_RelReq_TDD(p_CellId, tsc_HSPDSCH)); + } + } + case (cell_DCH_E_HS, + cell_E_HS, + cell_DCH_dlSRB_E_HS) { + f_UTRAN_CPDCP_Rel(p_CellId, tsc_RB25); //@sic R5s130195 PDCP sic@ + f_UTRAN_CRLC_Rel(utran_CellDedicated, tsc_RB25, v_FDD_TDD); + U_CMAC.send(cas_CMAC_MACes_Release_REQ(utran_CellDedicated)); + U_CMAC.receive(car_CMAC_MACes_Config_CNF(utran_CellDedicated)); + if (v_FDD_TDD == UTRAN_FDD) { + U_CMAC.send(cas_CMAC_MACe_Release_FDD_REQ(v_NodeB)); + U_CMAC.receive(car_CMAC_MACe_Config_CNF(v_NodeB)); + f_UTRAN_CMAC_Config(cas_MAC_FDD_Release(p_CellId, tsc_HSPDSCH)); // @sic R5s120397 sic@ + f_UTRAN_CPHY_TrCH_Release (cas_PHY_ReleaseDCH_FDD(p_CellId, tsc_E_DPCH, cs_TrChConfigTypeNonDCH)); // @sic R5s110386, R5-113036 sic@ + f_UTRAN_CPHY_TrCH_Release (cas_PHY_ReleaseDCH_FDD(p_CellId, tsc_HSPDSCH, cs_TrChConfigTypeNonDCH)); // @sic R5s110386, R5-113036 sic@ + f_UTRAN_CPHY_RL_Release (cas_RL_RelReq_FDD(p_CellId, tsc_E_DPCH)); + f_UTRAN_CPHY_RL_Release (cas_RL_RelReq_FDD(p_CellId, tsc_E_HICH)); + f_UTRAN_CPHY_RL_Release (cas_RL_RelReq_FDD(p_CellId, tsc_E_AGCH)); + f_UTRAN_CPHY_RL_Release (cas_RL_RelReq_FDD(p_CellId, tsc_HSPDSCH)); + if (v_CellConfig == cell_E_HS) { + f_UTRAN_CPHY_RL_Release (cas_RL_RelReq_FDD(p_CellId, tsc_F_DPCH)); + f_UTRAN_CPHY_RL_Release (cas_RL_RelReq_FDD(p_CellId, tsc_UL_DPCH1)); // @sic R5s120551 sic@ + } + } + else { //TDD + U_CMAC.send(cas_CMAC_MACe_Release_TDD_REQ(v_NodeB)); + U_CMAC.receive(car_CMAC_MACe_Config_CNF(v_NodeB)); + f_UTRAN_CMAC_Config(cas_MAC_TDD_Release(utran_CellDedicated, tsc_HSPDSCH)); + f_UTRAN_CPHY_TrCH_Release (cas_PHY_ReleaseDCH_TDD(p_CellId, tsc_E_DPCH, cs_TrChConfigTypeNonDCH)); // @sic R5s110386, R5-113036 sic@ + f_UTRAN_CPHY_TrCH_Release (cas_PHY_ReleaseDCH_TDD(p_CellId, tsc_HSPDSCH, cs_TrChConfigTypeNonDCH)); // @sic R5s110386, R5-113036 sic@ + f_UTRAN_CPHY_RL_Release (cas_RL_RelReq_TDD(p_CellId, tsc_E_DPCH)); + f_UTRAN_CPHY_RL_Release (cas_RL_RelReq_TDD(p_CellId, tsc_E_HICH)); + f_UTRAN_CPHY_RL_Release (cas_RL_RelReq_TDD(p_CellId, tsc_HSPDSCH)); + // No F-DPCH/DL-DPCH is configured in cell_E_HS @sic R5s130605 sic@ + } + } + case else { + FatalError(__FILE__, __LINE__, "invalid configuration"); + } + } + if (v_FDD_TDD == UTRAN_FDD) { + if ((v_CellConfig != cell_E_HS) and + (v_CellConfig != cell_DCH_dlSRB_E_HS)) { // not applicable for Cell_E_HS @sic R5s120551 sic@ + f_UTRAN_CMAC_Config(cas_MAC_FDD_Release(utran_CellDedicated, tsc_DL_DPCH1)); + f_UTRAN_CMAC_Config(cas_MAC_FDD_Release(utran_CellDedicated, tsc_UL_DPCH1)); + f_UTRAN_CPHY_TrCH_Release (cas_PHY_ReleaseDCH_FDD(p_CellId, tsc_DL_DPCH1, cs_TrChConfigTypeDCH_NoSHO)); // @sic R5s110386, R5-113036 sic@ + f_UTRAN_CPHY_TrCH_Release (cas_PHY_ReleaseDCH_FDD(p_CellId, tsc_UL_DPCH1, cs_TrChConfigTypeDCH_NoSHO)); // @sic R5s110386, R5-113036 sic@ + f_UTRAN_CPHY_RL_Release (cas_RL_RelReq_FDD(p_CellId, tsc_DL_DPCH1)); + f_UTRAN_CPHY_RL_Release (cas_RL_RelReq_FDD(p_CellId, tsc_UL_DPCH1)); + } else if (v_CellConfig == cell_DCH_dlSRB_E_HS) { + f_UTRAN_CMAC_Config(cas_MAC_FDD_Release(utran_CellDedicated, tsc_DL_DPCH1)); + f_UTRAN_CPHY_TrCH_Release (cas_PHY_ReleaseDCH_FDD(p_CellId, tsc_DL_DPCH1, cs_TrChConfigTypeDCH_NoSHO)); // @sic R5s110386, R5-113036 sic@ + f_UTRAN_CPHY_RL_Release (cas_RL_RelReq_FDD(p_CellId, tsc_DL_DPCH1)); + f_UTRAN_CPHY_RL_Release (cas_RL_RelReq_FDD(p_CellId, tsc_UL_DPCH1)); + } + } + else { //TDD + f_UTRAN_CMAC_Config(cas_MAC_TDD_Release(utran_CellDedicated, tsc_DL_DPCH1)); + f_UTRAN_CMAC_Config(cas_MAC_TDD_Release(utran_CellDedicated, tsc_UL_DPCH1)); + f_UTRAN_CPHY_TrCH_Release (cas_PHY_ReleaseDCH_TDD(p_CellId, tsc_DL_DPCH1, cs_TrChConfigTypeDCH_NoSHO)); // @sic R5s110386, R5-113036 sic@ + f_UTRAN_CPHY_TrCH_Release (cas_PHY_ReleaseDCH_TDD(p_CellId, tsc_UL_DPCH1, cs_TrChConfigTypeDCH_NoSHO)); // @sic R5s110386, R5-113036 sic@ + f_UTRAN_CPHY_RL_Release (cas_RL_RelReq_TDD(p_CellId, tsc_DL_DPCH1)); + f_UTRAN_CPHY_RL_Release (cas_RL_RelReq_TDD(p_CellId, tsc_UL_DPCH1)); + } + } + + /* + * @desc To reconfigure the RAB to SRBs + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_UTRAN_SS_ReconfRAB_ToSRB(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + var UTRAN_FDD_TDD_Type v_FDD_TDD := f_UTRAN_CellInfo_GetFDD_TDD(p_CellId); + + f_UTRAN_SS_RelDPCH(p_CellId); + f_UTRAN_SS_1DCH_DCCH_Cfg(p_CellId); + f_UTRAN_SS_RB1_ToRB4_Cfg(v_FDD_TDD); + } + + /* + * @desc To release RLC counter sequence number for SRB 1 to 4, by first releasing them and then setting them up again. + * This step is used only in conjonction with the RRC Connestion Release step. + * The configuration for SRBs 1 to 4 is the same as the one used for cell_DCH and cell_FACH. + * @param p_FDD_TDD + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_UTRAN_CRLC_RelReconfSRB(UTRAN_FDD_TDD_Type p_FDD_TDD) runs on UTRAN_PTC + { + f_UTRAN_CRLC_Rel(utran_CellDedicated, tsc_RB1, p_FDD_TDD); // @sic R5s110171 sic@ + f_UTRAN_CRLC_Rel(utran_CellDedicated, tsc_RB2, p_FDD_TDD); // @sic R5s110171 sic@ + f_UTRAN_CRLC_Rel(utran_CellDedicated, tsc_RB3, p_FDD_TDD); // @sic R5s110171 sic@ + f_UTRAN_CRLC_Rel(utran_CellDedicated, tsc_RB4, p_FDD_TDD); // @sic R5s110171 sic@ + f_UTRAN_SS_RB1_ToRB4_Cfg(p_FDD_TDD); + } + + /* + * @desc To release radio bearer + * @param p_CellId + * @param p_RB_Id + * @param p_FDD_TDD + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CRLC_Rel(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + UTRAN_FDD_TDD_Type p_FDD_TDD) runs on UTRAN_PTC // @sic R5s110171 sic@ + { + if (p_FDD_TDD == UTRAN_FDD) { // @sic R5-110103, R5s110171 sic@ + U_CRLC.send(cas_CRLC_RB_RelReq_FDD(p_CellId, p_RB_Id)); + } else { + U_CRLC.send(cas_CRLC_RB_RelReq_TDD(p_CellId, p_RB_Id)); + } + U_CRLC.receive(car_CRLC_CfgCnf); + } + + + /* + * @desc Page the UE for change of SI + * @param p_CellId + * @param p_MIB_ValueTag + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_SendPage1_ModifySI (UTRAN_CellId_Type p_CellId, MIB_ValueTag p_MIB_ValueTag) runs on UTRAN_PTC + { + f_Delay (5.0); // wait before sending a paging type 1 message + f_UTRAN_CMAC_Pag1_Cfg(p_CellId); + U_TM.send (cas_PagingType1 (p_CellId, tsc_RB_PCCH, cs_RRC_PagingType1_ModifySI (p_MIB_ValueTag))); + U_TM.send (cas_SysInfoChangeInd (p_CellId, tsc_RB_BCCH_FACH, cs_SysInfoChangeInd (p_MIB_ValueTag))); + } + + /* + * @desc Configure paging on the MAC layer. Step to be used when UE is in Idle Mode + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CMAC_Pag1_Cfg (UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + var DRX_CycleLengthStructure v_DRX_Cycle := f_UTRAN_CellInfo_GetDRX_CycleLength(p_CellId); // Paging Indicator calculation defined in 23.304 cl 8.3 + var bitstring v_PI := '000000000000000000'B; + var IMSI_GSM_MAP v_IMSI_GsmMap := f_U_ConvertImsi2ASN(px_IMSI_Def); + var integer v_PI_Int := 0; + var integer i; + + // @sic R5s110215 sic@ + // The Page Indicator to use is calculated by using the following formula: + // PI = DRX Index mod Np where DRX Index = IMSI div 8192, 25.304, cl. 8.3 + for (i := 0; i< lengthof(v_IMSI_GsmMap); i := i+1) + { + v_PI_Int := (v_PI_Int * 10) + v_IMSI_GsmMap[i]; + } + v_PI_Int := v_PI_Int/8192; + // @sic R5s120744 sic@ + if (f_UTRAN_CellInfo_GetFDD_TDD(p_CellId) == UTRAN_FDD){ // FDD + v_PI_Int := v_PI_Int mod 18; + v_PI[v_PI_Int] := '1'B; + } else { // TDD + v_PI := '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'B; + v_PI_Int := v_PI_Int mod 176; + v_PI[v_PI_Int] := '1'B; + } + + if (pc_CS and pc_PS) { // UE supports CS and PS + if (v_DRX_Cycle.cN_CS_DRX_CycleLength <= v_DRX_Cycle.cN_PS_DRX_CycleLength) { + // CN Drx Cycle length for CS is smaller than PS, then CN Drx Cycle length for CS is used + v_DRX_Cycle.uTRAN_DRX_CycleLength := v_DRX_Cycle.cN_CS_DRX_CycleLength; //Lidia + + } else { + // CN Drx Cycle length for CS is not smaller than PS, then CN Drx Cycle length for PS is used + v_DRX_Cycle.uTRAN_DRX_CycleLength := v_DRX_Cycle.cN_PS_DRX_CycleLength; + + } + } else if (pc_CS and not (pc_PS)) { + // UE supports only CS, the CN Drx cycle length for CS is used + v_DRX_Cycle.uTRAN_DRX_CycleLength := v_DRX_Cycle.cN_CS_DRX_CycleLength; + + } else if (pc_PS and not (pc_CS)) { + // UE supports only PS, the CN Drx cycle length for PS is used + v_DRX_Cycle.uTRAN_DRX_CycleLength := v_DRX_Cycle.cN_PS_DRX_CycleLength; + } + + //paging TDSCDMA new change + // @sic R5s120744 sic@ + if (f_UTRAN_CellInfo_GetFDD_TDD(p_CellId) == UTRAN_FDD){ + // FDD + U_CMAC.send(cas_CMAC_PagingCfgReq_FDD(p_CellId, tsc_S_CCPCH1, fdd, cs_MAC_PagingCfg_FDD (v_PI, v_DRX_Cycle.uTRAN_DRX_CycleLength, f_U_ConvertImsi2ASN(px_IMSI_Def)))); + } else { + // TDD + U_CMAC.send(cas_CMAC_PagingCfgReq_TDD(p_CellId, tsc_S_CCPCH1, tdd128, cs_MAC_PagingCfg_TDD (v_PI, v_DRX_Cycle.uTRAN_DRX_CycleLength, f_U_ConvertImsi2ASN(px_IMSI_Def)))); + } + U_CMAC.receive (car_CMAC_PagingCfgCnf(p_CellId, tsc_S_CCPCH1)); + } + + /* + * @desc To send a new version of SIB 3 and the MIB, then page the UE about the SIB change + * @param p_CellId + * @param p_SIB3 + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_SysInfoModifySIB3 (UTRAN_CellId_Type p_CellId, + template (value) SysInfoType3 p_SIB3) runs on UTRAN_PTC + { + var UTRAN_CellSysInfo_Type v_CellSysInfo := f_UTRAN_SysInfo_Get(p_CellId); + var UTRAN_FDD_TDD_Type v_FDD_TDD_Mode := f_UTRAN_CellInfo_GetFDD_TDD (p_CellId); + var RatType v_RatType; + + if (v_FDD_TDD_Mode == UTRAN_TDD) { + v_RatType := tdd128; + } else { + v_RatType := fdd; + } + + v_CellSysInfo.SIB3 := valueof(p_SIB3); + v_CellSysInfo := fl_UTRAN_MIB_ChangeValueTag(v_CellSysInfo); + + f_UTRAN_SysInfo_Set(p_CellId, v_CellSysInfo); + f_UTRAN_SendSIB3_4_7_18 (p_CellId, tsc_Now, v_RatType); + f_UTRAN_SendSB1 (p_CellId, tsc_Now, v_RatType); + f_UTRAN_SendMIB (p_CellId, tsc_Now, v_RatType); + f_UTRAN_SendPage1_ModifySI (p_CellId, v_CellSysInfo.MIB.mib_ValueTag); + } + + /* + * @desc To send a new version of SIB 19 and the MIB, then page the UE about the SIB change + * @param p_CellId + * @param p_SIB19 + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_SysInfoModifySIB19 (UTRAN_CellId_Type p_CellId, + template (value) SysInfoType19 p_SIB19) runs on UTRAN_PTC + { + var UTRAN_CellSysInfo_Type v_CellSysInfo := f_UTRAN_SysInfo_Get(p_CellId); + var UTRAN_FDD_TDD_Type v_FDD_TDD_Mode := f_UTRAN_CellInfo_GetFDD_TDD (p_CellId); + var RatType v_RatType := fdd; + + if (v_FDD_TDD_Mode == UTRAN_TDD) { + v_RatType := tdd128; + } else { + v_RatType := fdd; + } + v_CellSysInfo.SIB19 := valueof(p_SIB19); + v_CellSysInfo := fl_UTRAN_MIB_ChangeValueTag(v_CellSysInfo); + + f_UTRAN_SysInfo_Set(p_CellId, v_CellSysInfo); + f_UTRAN_SendSIB19 (p_CellId, tsc_Now, v_RatType); + f_UTRAN_SendSB1 (p_CellId, tsc_Now, v_RatType); + f_UTRAN_SendMIB (p_CellId, tsc_Now, v_RatType); + f_UTRAN_SendPage1_ModifySI (p_CellId, v_CellSysInfo.MIB.mib_ValueTag); + } + + /* + * @desc Reconfigure SS for routing UL NAS message in the AM PCO. + * RB3 is reconfigured to tsc_RB3_DCCH_RRC ( RB -16 ) + * @param p_CellId + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_SS_SetConfigRRC_RB3(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + var RB_ConfigType v_CellConfig := f_UTRAN_CellInfo_GetConfigType(p_CellId); + var UTRAN_FDD_TDD_Type v_UTRAN_FDD_TDD := f_UTRAN_CellInfo_GetFDD_TDD(p_CellId); + var C_RNTI v_CRNTI := f_UTRAN_CellInfo_GetC_RNTI(p_CellId); + + select (v_CellConfig) { + case (cell_FACH, cell_FACH_NoConn) { // FDD + if (v_UTRAN_FDD_TDD == UTRAN_FDD) { + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(p_CellId, + tsc_PRACH1, + cs_UE_Info (omit, v_CRNTI), + cs_TrChInfoRACH1_FDD, + cds_TrLogMappingRACH_DTCH_RRC_RB3, + cs_ActivateNow )); + f_UTRAN_CRLC_Config(cas_RB_AM_ReconfMapping_FDD(utran_CellDedicated, + tsc_RB3_DCCH_RRC, + cs_RB_LogCH_Mapping(tsc_UL_DCCH3, omit))); + } else { // TDD + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_TDD(p_CellId, + tsc_PRACH1, + cs_UE_Info(omit, v_CRNTI), + cs_TrChInfoRACH1_TDD, + cds_TrLogMappingRACH_DTCH_RRC_RB3_TDD, + cs_ActivateNow)); + f_UTRAN_CRLC_Config(cas_RB_AM_ReconfMapping_TDD(utran_CellDedicated, + tsc_RB3_DCCH_RRC, + cs_RB_LogCH_Mapping(tsc_UL_DCCH3, omit))); + } + } + case (cell_DCH_StandAloneSRB, cell_DCH_StandAloneSRB_NoConn) { + if (v_UTRAN_FDD_TDD == UTRAN_FDD) { // FDD + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(utran_CellDedicated, + tsc_UL_DPCH1, + cs_UE_Info (omit, omit), + cs_TrChInfoUL_13_6_StandAlone_FDD, + cds_TrLogMappingUL_4DCCH_RRC_RB3, + cs_ActivateNow)); + f_UTRAN_CRLC_Config(cas_RB_AM_ReconfMapping_FDD(utran_CellDedicated, + tsc_RB3_DCCH_RRC, + cs_RB_LogCH_Mapping (tsc_UL_DCCH3, omit))); + } else { // TDD + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_TDD(utran_CellDedicated, + tsc_UL_DPCH1, + cs_UE_Info, + cs_TrChInfoUL_13_6_StandAlone_TDD, + cds_TrLogMappingUL_4DCCH_RRC_RB3_TDD, + cs_ActivateNow)); + f_UTRAN_CRLC_Config(cas_RB_AM_ReconfMapping_TDD(utran_CellDedicated, + tsc_RB3_DCCH_RRC, + cs_RB_LogCH_Mapping(tsc_UL_DCCH3, omit))); + } + } + case (cell_DCH_Speech) { + //FFS - implementation need is under investigation + } + + /* + case (cell_DCH_64kCS_RAB_SRB) { + //FFS - implementation need is under investigation + } + case (cell_DCH_57_6kCS_RAB_SRB) { + //FFS - implementation need is under investigation + } + */ + case (cell_DCH_64kPS_RAB_SRB) { + //FFS - implementation need is under investigation + } + } + } + + /* + * @desc Reconfigure SS for routing UL NAS message in the Dc PCO. + * tsc_RB3_DCCH_RRC ( -16 ) is reconfigured to tsc_RB3 + * @param p_CellId + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_SS_RemoveConfigRRC_RB3(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + var RB_ConfigType v_CellConfig := f_UTRAN_CellInfo_GetConfigType (p_CellId); + var UTRAN_FDD_TDD_Type v_UTRAN_FDD_TDD := f_UTRAN_CellInfo_GetFDD_TDD (p_CellId); + var C_RNTI v_CRNTI := f_UTRAN_CellInfo_GetC_RNTI ( p_CellId ); + + select (v_CellConfig) { + case (cell_FACH, cell_FACH_NoConn) { + if (v_UTRAN_FDD_TDD == UTRAN_FDD) { //FDD + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(p_CellId, + tsc_PRACH1, + cs_UE_Info(omit, v_CRNTI), + cs_TrChInfoRACH1_FDD, + cs_TrLogMappingRACH_DTCH, + cs_ActivateNow)); + f_UTRAN_CRLC_Config(cas_RB_AM_ReconfMapping_FDD(utran_CellDedicated, + tsc_RB3, + cs_RB_LogCH_Mapping(tsc_UL_DCCH3, omit))); + } else { // TDD + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_TDD(p_CellId, + tsc_PRACH1, + cs_UE_Info(omit, v_CRNTI), + cs_TrChInfoRACH1_TDD, + cs_TrLogMappingRACH_DTCH_TDD, + cs_ActivateNow)); + f_UTRAN_CRLC_Config(cas_RB_AM_ReconfMapping_TDD(utran_CellDedicated, + tsc_RB3, + cs_RB_LogCH_Mapping(tsc_UL_DCCH3, omit))); + } + } + case (cell_DCH_StandAloneSRB, cell_DCH_StandAloneSRB_NoConn) { + if (v_UTRAN_FDD_TDD == UTRAN_FDD) { // FDD + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(utran_CellDedicated, + tsc_UL_DPCH1, + cs_UE_Info, + cs_TrChInfoUL_13_6_StandAlone_FDD, + cs_TrLogMappingUL_4DCCH, + cs_ActivateNow)); + f_UTRAN_CRLC_Config(cas_RB_AM_ReconfMapping_FDD(utran_CellDedicated, + tsc_RB3, + cs_RB_LogCH_Mapping(tsc_UL_DCCH3, omit))); + } else { // TDD + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_TDD(utran_CellDedicated, + tsc_UL_DPCH1, + cs_UE_Info, + cs_TrChInfoUL_13_6_StandAlone_TDD, + cs_TrLogMappingUL_4DCCH_TDD, + cs_ActivateNow)); + f_UTRAN_CRLC_Config(cas_RB_AM_ReconfMapping_TDD(utran_CellDedicated, + tsc_RB3, + cs_RB_LogCH_Mapping(tsc_UL_DCCH3, omit))); + } + } + case (cell_DCH_Speech) { + //FFS - implementation need is under investigation + } + case (cell_DCH_64kPS_RAB_SRB) { + //FFS - implementation need is under investigation + } + + /* + case (cell_DCH_64kCS_RAB_SRB) { + //FFS - implementation need is under investigation + } + case (cell_DCH_57_6kCS_RAB_SRB) { + //FFS - implementation need is under investigation + } + */ + case (cell_DCH_64kPS_RAB_SRB) { + //FFS - implementation need is under investigation + } + } + } + + /* + * @desc Reconfigure MAC when a new C_RNTI is assigned to UE. + * C-RNTI is necessary when DCCH/DTCH mapped on PRACH. + * From TTCN2 ts_CMAC_New_RNTI_Reconf + * @param p_CellId + * @param p_New_CRNTI + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_UTRAN_SS_New_CRNTI (UTRAN_CellId_Type p_CellId, + C_RNTI p_New_CRNTI) runs on UTRAN_PTC { + + var RB_ConfigType v_CellConfig := f_UTRAN_CellInfo_GetConfigType (p_CellId); + var UTRAN_FDD_TDD_Type v_UTRAN_FDD_TDD := f_UTRAN_CellInfo_GetFDD_TDD (p_CellId); + + if ((v_CellConfig == cell_FACH) or + (v_CellConfig == cell_FACH_PS) or + (v_CellConfig == cell_FACH_NoConn)){ + + if ( v_UTRAN_FDD_TDD == UTRAN_FDD ) {//FDD + //Reconfigure RLC size to allow C-RNTI in MAC header + //Configure radio bearers: RB1 (UM + DCCH) and (UM + DCCH); Payload size=136 (default) + f_UTRAN_CRLC_Config(cas_RB_UM_ReconfigInfo_FDD(utran_CellDedicated, // @sic R5s110278, R5s110315 sic@ + tsc_RB1, + cs_RB_LogCH_Mapping(tsc_UL_DCCH1, + tsc_DL_DCCH1))); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(p_CellId, + tsc_PRACH1, + cs_UE_Info(omit, p_New_CRNTI), + cs_TrChInfoRACH1_FDD, + cs_TrLogMappingRACH_DTCH, + cs_ActivateNow)); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(p_CellId, + tsc_S_CCPCH1, + cs_UE_Info(omit, p_New_CRNTI), + cs_TrChInfoPCH_FACH_PS_FDD, + cs_TrLogMappingPCH_FACH_PS_FDD, + cs_ActivateNow)); + } + else{ //TDD + f_UTRAN_CRLC_Config(cas_RB_UM_ReconfigInfo_TDD(utran_CellDedicated, // @sic R5s110278 R5s120744 sic@ + tsc_RB1, + cs_RB_LogCH_Mapping(tsc_UL_DCCH1, + tsc_DL_DCCH1))); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_TDD(p_CellId, + tsc_PRACH1, + cs_UE_Info(omit, p_New_CRNTI), + cs_TrChInfoRACH1_TDD, + cs_TrLogMappingRACH_DTCH_TDD, + cs_ActivateNow)); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_TDD(p_CellId, + tsc_S_CCPCH1, + cs_UE_Info(omit, p_New_CRNTI), + cs_TrChInfoPCH_FACH_PS_TDD, + cs_TrLogMappingPCH_FACH_PS_TDD, + cs_ActivateNow)); + + } + } else if ((v_CellConfig == cell_FACH_HS)) { + if ( v_UTRAN_FDD_TDD == UTRAN_FDD ) {//FDD + //Reconfigure RLC size to allow C-RNTI in MAC header + //Configure radio bearers: RB1 (UM + DCCH) and (UM + DCCH); Payload size=136 (default) + f_UTRAN_CRLC_Config(cas_RB_UM_ReconfigInfo_FDD(utran_CellDedicated, // @sic R5s110278, R5s110315 sic@ + tsc_RB1, + cs_RB_LogCH_Mapping(tsc_UL_DCCH1, + tsc_DL_DCCH1))); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(p_CellId, + tsc_PRACH1, + cs_UE_Info(omit, p_New_CRNTI), + cs_TrChInfoRACH1_FDD, + cds_TrLogMappingRACH_DTCH_HS, + cs_ActivateNow)); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(p_CellId, + tsc_S_CCPCH1, + cs_UE_Info(omit, p_New_CRNTI), + cs_TrChInfoPCH_FACH_PS_FDD, + cds_TrLogMappingPCH_FACH_PS_HS_FDD, + cs_ActivateNow)); + } + } else {//Configuration does not apply + FatalError(__FILE__, __LINE__,"Configuration of new CRNTI can not be performed as cell is not propoerly configured"); + } + } + + /* + * @desc Function for transistion of UE to CELL_PCH. + * Function is according to 34.108 cl. 7.4.2.7.1 + * @param p_CellId + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_TransitToCellPCH(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + + var RB_ConfigType v_CellConfiguration := f_UTRAN_CellInfo_GetConfigType (p_CellId); + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get (); + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI; + + if ((v_CellConfiguration == cell_FACH_PS) or (v_CellConfiguration == cell_FACH_HS)) { + + f_Delay(0.5);//Wait 500ms to allow any outstanding acknowledgements to be received. + + // Step 1 + //Send PHYSICAL CHANNEL RECONFIGURATION message + select (f_UTRAN_ConfigurationInfo_TestCaseRelease_Get()) { // @sic R5s120952 R5s130195 Utran release sic@ + case (FDDr8) { + U_AM.send ( cas_RLC_Data_Req_NoCnf ( utran_CellDedicated, // @sic R5s110210 sic@ + tsc_RB2, + cs_PhysicalChannelReconfiguration (v_SecurityInfo.dl_IntegrityCheckInfo, + v_RRC_TI, + omit,//Activation time is set to omit as Cell-FACH + omit, + cell_PCH, + cs_UTRAN_DRX_CycleLengthCoefficient_r7(3), + tsc_MaxAllowPwr))); + } + case (TDDr9, FDDr9) { // @sic R5s120952 sic@ + U_AM.send ( cas_RLC_Data_Req_NoCnf ( utran_CellDedicated, + tsc_RB2, + cs_PhysicalChannelReconfiguration_r9 (v_SecurityInfo.dl_IntegrityCheckInfo, + v_RRC_TI, + omit,//Activation time is set to omit as Cell-FACH + omit, + cell_PCH, + cs_UTRAN_DRX_CycleLengthCoefficient_r7(3), + tsc_MaxAllowPwr))); + } + case (TDDr10, FDDr10) { // @sic R5s130195 sic@ + U_AM.send ( cas_RLC_Data_Req_NoCnf ( utran_CellDedicated, + tsc_RB2, + cs_PhysicalChannelReconfiguration_r10 (v_SecurityInfo.dl_IntegrityCheckInfo, + v_RRC_TI, + omit,//Activation time is set to omit as Cell-FACH + omit, + cell_PCH, + cs_UTRAN_DRX_CycleLengthCoefficient_r7(3), + tsc_MaxAllowPwr))); + } + case (TDDr11, FDDr11) { + U_AM.send ( cas_RLC_Data_Req_NoCnf ( utran_CellDedicated, + tsc_RB2, + cs_PhysicalChannelReconfiguration_r11 (v_SecurityInfo.dl_IntegrityCheckInfo, + v_RRC_TI, + omit,//Activation time is set to omit as Cell-FACH + omit, + cell_PCH, + cs_UTRAN_DRX_CycleLengthCoefficient_r7(3), + tsc_MaxAllowPwr))); + } + case else { + FatalError(__FILE__, __LINE__, ""); + } + } + + //Since SS is configured to Cell-FACH no reconfiguring is needed + + //Step 2 + //Receive PHYSICAL CHANNEL RECONFIGURATION COMPLETE + U_AM.receive (car_RLC_Data_Ind (utran_CellDedicated, // @sic R5s110210 sic@ + tsc_RB2, + cr_PhysicalChannelReconfigurationComplete(v_RRC_TI))); + + f_Delay(0.5);//Wait 500ms to allow any outstanding acknowledgements to be received. + } + else { + FatalError(__FILE__, __LINE__, "Configuration not supported. Only cell_FACH_PS or cell_FACH_HS is supported"); + } + } + + /* + * @desc Reconfigures the cell if it's not ready for an RRC connection establishment + * @param p_CellId .. Cell to which the UE is expected to establish a connection + * @param p_OtherCell .. Id of the other UTRAN Cell, if one is configured (default value: omit) + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_PrepareCellRRC_ConnEst(UTRAN_CellId_Type p_CellId, + template (omit) UTRAN_CellId_Type p_OtherCell := omit) runs on UTRAN_PTC + { + var RB_ConfigType v_OtherCellConfig, v_CellConfig := f_UTRAN_CellInfo_GetConfigType (p_CellId); + var UTRAN_FDD_TDD_Type v_FDD_TDD := f_UTRAN_CellInfo_GetFDD_TDD ( p_CellId ); + var C_RNTI v_CRNTI := f_UTRAN_CellInfo_GetC_RNTI ( p_CellId ); + var U_RNTI v_URNTI := f_UTRAN_CellInfo_GetU_RNTI ( p_CellId ); + var boolean v_OtherCellExists := false; + var UTRAN_CellId_Type v_OtherCell; + + if (isvalue (p_OtherCell)) { // other cell exists + v_OtherCellExists := true; + v_OtherCell := valueof (p_OtherCell); + v_OtherCellConfig := f_UTRAN_CellInfo_GetConfigType(v_OtherCell); + } + + select (v_CellConfig) { + case (cell_DCH_StandAloneSRB_NoConn, + cell_FACH_NoConn) { + // Do nothing + } + case (cell_NoDPCH, + cell_DCH_Speech, + cell_DCH_64kPS_RAB_SRB) { + if (v_OtherCellExists) { + if (v_OtherCellConfig == cell_DCH_StandAloneSRB_NoConn or + v_OtherCellConfig == cell_DCH_StandAloneSRB or + v_OtherCellConfig == cell_DCH_Speech or + v_OtherCellConfig == cell_DCH_64kPS_RAB_SRB) { + f_UTRAN_SS_RelDPCH (v_OtherCell); + f_UTRAN_CellInfo_SetConfigType (v_OtherCell, cell_NoDPCH); + f_UTRAN_SS_1DCH_DCCH_Cfg(p_CellId); + f_UTRAN_SS_RB1_ToRB4_Cfg(v_FDD_TDD); + f_UTRAN_CellInfo_SetConfigType (p_CellId, cell_DCH_StandAloneSRB_NoConn); + } + } + } + case (cell_FACH_NoDedicated) { + if (v_OtherCellExists) { + if (v_OtherCellConfig == cell_FACH_NoConn or + v_OtherCellConfig ==cell_FACH or + v_OtherCellConfig == cell_FACH_PS) { + f_UTRAN_CRLC_Rel (v_OtherCell, tsc_RB_BCCH_FACH, v_FDD_TDD); + if (v_FDD_TDD == UTRAN_FDD) + { + f_UTRAN_CMAC_Config (cas_CMAC_ReconfigInfo_FDD ( v_OtherCell, + tsc_S_CCPCH1, + cs_UE_Info (omit, omit), + cs_TrChInfoPCH_FACH_PS_FDD, + cs_TrLogMappingPCH_FACH_CellDCH, + cs_ActivateNow )); + f_UTRAN_CMAC_Config ( cas_CMAC_ReconfigInfo_FDD ( v_OtherCell, + tsc_PRACH1, + cs_UE_Info (omit, omit), + cs_TrChInfoRACH1_FDD, + cs_TrLogMappingRACH2, + cs_ActivateNow )); + f_UTRAN_CellInfo_SetConfigType (v_OtherCell, cell_FACH_NoDedicated); + f_UTRAN_CMAC_Config (cas_CMAC_ReconfigInfo_FDD ( p_CellId, + tsc_S_CCPCH1, + cs_UE_Info (v_URNTI, v_CRNTI), + cs_TrChInfoPCH_FACH_PS_FDD, + cs_TrLogMappingPCH_FACH_PS_FDD, + cs_ActivateNow )); + f_UTRAN_CMAC_Config ( cas_CMAC_ReconfigInfo_FDD ( p_CellId, + tsc_PRACH1, + cs_UE_Info (omit, v_CRNTI), + cs_TrChInfoRACH1_FDD, + cs_TrLogMappingRACH_DTCH, + cs_ActivateNow )); + } + else {//UTRAN_TDD + f_UTRAN_CMAC_Config (cas_CMAC_ReconfigInfo_TDD ( v_OtherCell, + tsc_S_CCPCH1, + cs_UE_Info (omit, omit), + cs_TrChInfoPCH_FACH_PS_TDD, + cs_TrLogMappingPCH_FACH_CellDCH_TDD, + cs_ActivateNow )); + f_UTRAN_CMAC_Config ( cas_CMAC_ReconfigInfo_TDD ( v_OtherCell, + tsc_PRACH1, + cs_UE_Info (omit, omit), + cs_TrChInfoRACH1_TDD, + cs_TrLogMappingRACH2_TDD, + cs_ActivateNow )); + f_UTRAN_CellInfo_SetConfigType (v_OtherCell, cell_FACH_NoDedicated); + f_UTRAN_CMAC_Config (cas_CMAC_ReconfigInfo_TDD ( p_CellId, + tsc_S_CCPCH1, + cs_UE_Info (v_URNTI, v_CRNTI), + cs_TrChInfoPCH_FACH_PS_TDD, + cs_TrLogMappingPCH_FACH_PS_TDD, + cs_ActivateNow )); + f_UTRAN_CMAC_Config ( cas_CMAC_ReconfigInfo_TDD ( p_CellId, + tsc_PRACH1, + cs_UE_Info (omit, v_CRNTI), + cs_TrChInfoRACH1_TDD, + cs_TrLogMappingRACH_DTCH_TDD, + cs_ActivateNow )); + + } + f_UTRAN_SS_RB_BCCH_FACH_Cfg (p_CellId); + f_UTRAN_CellInfo_SetConfigType (p_CellId, cell_FACH_NoConn); + } else if ((v_OtherCellConfig == cell_FACH_HS) and (v_FDD_TDD == UTRAN_FDD)) { + f_UTRAN_CMAC_Config (cas_CMAC_ReconfigInfo_FDD ( v_OtherCell, + tsc_S_CCPCH1, + cs_UE_Info (omit, omit), + cs_TrChInfoPCH_FACH_PS_FDD, + cs_TrLogMappingPCH_FACH_CellDCH, + cs_ActivateNow )); + f_UTRAN_CMAC_Config ( cas_CMAC_ReconfigInfo_FDD ( v_OtherCell, + tsc_PRACH1, + cs_UE_Info (omit, omit), + cs_TrChInfoRACH1_FDD, + cs_TrLogMappingRACH2, + cs_ActivateNow )); + f_UTRAN_CellInfo_SetConfigType (v_OtherCell, cell_FACH_NoDedicated); + f_UTRAN_CMAC_Config (cas_CMAC_ReconfigInfo_FDD ( p_CellId, + tsc_S_CCPCH1, + cs_UE_Info (v_URNTI, v_CRNTI), + cs_TrChInfoPCH_FACH_PS_FDD, + cds_TrLogMappingPCH_FACH_PS_HS_FDD, + cs_ActivateNow )); + f_UTRAN_CMAC_Config ( cas_CMAC_ReconfigInfo_FDD ( p_CellId, + tsc_PRACH1, + cs_UE_Info (omit, v_CRNTI), + cs_TrChInfoRACH1_FDD, + cds_TrLogMappingRACH_DTCH_HS, + cs_ActivateNow )); + } + } + } + } + } + //------------------------------------------------------------------------------------------------------ + // PDCP + //------------------------------------------------------------------------------------------------------ + /* + * @desc To request to setup, reconfigure or release PDCP entity. + * Procedure waits for confirmation of successful setup, release or reconfiguration. + * @param p_CPDCP_Config_REQ + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_SS_PDCP_Cfg(template (value) U_CPDCP_CONFIG_REQ p_CPDCP_Config_REQ) runs on UTRAN_PTC + { // @sic R5s130195 PDCP sic@ + U_CPDCP.send(p_CPDCP_Config_REQ); + U_CPDCP.receive(car_CPDCP_CfgCnf); // we just need to wait for the CNF + } + + /* + * @desc To request to setup PDCP entity. + * @param p_CellId + * @param p_RB_Id + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_SS_RB_ConfigurePDCP(UTRAN_CellId_Type p_CellId, + integer p_RB_Id) runs on UTRAN_PTC + { // @sic R5s130195 PDCP sic@ + f_UTRAN_SS_PDCP_Cfg(cas_PDCP_CfgReq(utran_CellDedicated, //@sic R5-131129 sic@ + p_RB_Id, + f_UTRAN_CellInfo_GetRatType (p_CellId), + cs_PDCP_Info_DCH_PS)); + f_UTRAN_PDCP_Configured_Set(true); + } + + /* + * @desc To release PDCP radio bearer + * @param p_CellId + * @param p_RB_Id + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_UTRAN_CPDCP_Rel(UTRAN_CellId_Type p_CellId, + integer p_RB_Id) runs on UTRAN_PTC + { // @sic R5s130195 PDCP sic@ + + if (f_UTRAN_PDCP_Configured_Get() == true) { + f_UTRAN_SS_PDCP_Cfg(cas_CPDCP_RB_RelReq( utran_CellDedicated, p_RB_Id, f_UTRAN_CellInfo_GetRatType(p_CellId))); + f_UTRAN_PDCP_Configured_Set(false); + } + } + + + +} diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_MDT_Templates.ttcn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_MDT_Templates.ttcn new file mode 100644 index 0000000..8f31dff --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_MDT_Templates.ttcn @@ -0,0 +1,348 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-11 11:17:38 +0200 (Thu, 11 Sep 2014) $ +// $Rev: 12203 $ +/******************************************************************************/ + +module UTRAN_MDT_Templates { + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_CommonDefs all; + import from UTRAN_RRC_Templates all; + import from UTRAN_ASP_Definitions language "ASN.1:2002" all; + + //**************************************************************** + //Specific Templates + //**************************************************************** + type EUTRA_FrequencyInfo_r11.widebandRSRQMeasurements EUTRA_FrequencyInfo_r11_widebandRSRQMeasurements_Type; + type TGP_SequenceShort_r10.freqSpecificCompressedMode TGP_SequenceShort_r10_freqSpecificCompressedMode_Type; + type TGP_Sequence_r10.tgps_Status TGPS_Status_r10_Type; + + template (value) DL_DCCH_Message cs_MeasurementControl_TDD_r10(IntegrityCheckInfo p_Integrityinfo, + MeasurementIdentity p_MeasurementIdentity, + template (value) MeasurementCommand_r10 p_MeasurementCommand, + template (omit) CellDCHMeasOccasionInfo_TDD128_r9 p_CellDCHMeasOccasionInfo_TDD128, + RRC_TransactionIdentifier p_RRC_TI := tsc_RRC_TI) := + { /* @status APPROVED (LTE_A) */ + integrityCheckInfo := p_Integrityinfo, + message_ := { + measurementControl := { + later_than_r3 := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + later_than_r4 := { + rrc_TransactionIdentifier_MSP := p_RRC_TI, + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + r10 := { + measurementControl_r10 := { + measurementIdentity := p_MeasurementIdentity, + measurementCommand := p_MeasurementCommand, + measurementReportingMode := cs_MeasurementReportingMode, + additionalMeasurementList := omit, + cellDCHMeasOccasionInfo_TDD128 := p_CellDCHMeasOccasionInfo_TDD128, + dpch_CompressedModeStatusInfo := omit + }, + measurementControl_r10_add_ext := omit, + vaa0NonCriticalExtensions := omit + } + } + } + } + } + } + } + } + } + } + } + }; + + template (value) MeasurementCommand_r10 cs_MeasurementCommand_SetupInterRatEutra_r10(template (value) EUTRA_FrequencyInfoList p_EUTRA_FrequencyInfoList, + template (omit) InterRATMeasQuantity_r8 p_InterRATMeasQuantity, + template (omit) InterRATReportingQuantity_r8 p_InterRATReportingQuantity, + template (value) InterRATEventList p_InterRATEventList) := + { /* @status APPROVED (LTE_A) */ + setup := { + interRATMeasurement := { + interRATMeasurementObjects := { + eutra_FrequencyList := { + eutraFrequencyRemoval := { + removeNoFrequencies := NULL + }, + eutraNewFrequencies := p_EUTRA_FrequencyInfoList, + eutraSIAcquisition := omit + } + }, + interRATMeasQuantity := p_InterRATMeasQuantity, + interRATReportingQuantity := p_InterRATReportingQuantity, + reportCriteria := { + interRATReportingCriteria := { + interRATEventList := p_InterRATEventList + } + }, + idleIntervalInfo := omit + } + } + }; + + template (value) DL_DCCH_Message cs_MeasurementControl_InterRATMeasurement_TDD_r10(IntegrityCheckInfo p_Integrityinfo, + RRC_TransactionIdentifier p_RRC_TI, + integer p_EutraCell_ARFCN, + EUTRA_MeasurementBandwidth p_EutraCell_MeasBandwidth, + template (omit) CellDCHMeasOccasionInfo_TDD128_r9 p_CellDCHMeasOccasionInfo_TDD128) := + // Default values according to 36.508 Table 4.7B.1-3: MEASUREMENT CONTROL for Inter-RAT + /* @status APPROVED (LTE_A) */ + cs_MeasurementControl_TDD_r10(p_Integrityinfo, + 3, + cs_MeasurementCommand_SetupInterRatEutra_r10(cs_EUTRA_FrequencyInfoList_1Entry(p_EutraCell_ARFCN, p_EutraCell_MeasBandwidth), + cs_InterRATMeasQuantity_TDD_r8(primaryCCPCH_RSCP, rsrp), + cs_InterRATReportingQuantity_r8, + {cs_InterRATEvent3a_Def}), + p_CellDCHMeasOccasionInfo_TDD128, + p_RRC_TI); + + template (value) MeasurementCommand_r11 cs_MeasurementCommand_SetupInterRatEutra_r11(template (value) EUTRA_FrequencyInfoList_r11 p_EUTRA_FrequencyInfoList, + template (omit) InterRATMeasQuantity_r8 p_InterRATMeasQuantity, + template (omit) InterRATReportingQuantity_r8 p_InterRATReportingQuantity, + template (value) InterRATEventList p_InterRATEventList) := + { /* @status */ + setup := { + interRATMeasurement := { + interRATMeasurementObjects := { + eutra_FrequencyList := { + eutraFrequencyRemoval := { + removeNoFrequencies := NULL + }, + eutraNewFrequencies := p_EUTRA_FrequencyInfoList, + eutraSIAcquisition := omit + } + }, + interRATMeasQuantity := p_InterRATMeasQuantity, + interRATReportingQuantity := p_InterRATReportingQuantity, + reportCriteria := { + interRATReportingCriteria := { + interRATEventList := p_InterRATEventList + } + }, + idleIntervalInfo := omit + } + } + }; + + template (value) EUTRA_FrequencyInfo_r11 cs_EUTRA_FrequencyInfo_r11(integer p_EutraCell_ARFCN, + template (omit) EARFCNExtension p_EARFCNExtension := omit, + EUTRA_MeasurementBandwidth p_EutraCell_MeasBandwidth, + template (omit) EUTRA_BlacklistedCellPerFreqList p_EUTRA_BlacklistedCellPerFreqList := omit, + template (omit) EUTRA_FrequencyInfo_r11_widebandRSRQMeasurements_Type p_WidebandRSRQMeasurements := omit) := + { /* @status */ + earfcn := p_EutraCell_ARFCN, + earfcnExt := p_EARFCNExtension, + measurementBandwidth := p_EutraCell_MeasBandwidth, + eutra_blackListedCellList := p_EUTRA_BlacklistedCellPerFreqList, + widebandRSRQMeasurements := p_WidebandRSRQMeasurements + }; + + template (value) EUTRA_FrequencyInfoList_r11 cs_EUTRA_FrequencyInfoList_r11_1Entry(integer p_EutraCell_ARFCN, + EUTRA_MeasurementBandwidth p_EutraCell_MeasBandwidth) := + { /* @status */ + cs_EUTRA_FrequencyInfo_r11(p_EutraCell_ARFCN, omit, p_EutraCell_MeasBandwidth) + }; + + template (value) DL_DCCH_Message cs_MeasurementControl_r11(IntegrityCheckInfo p_Integrityinfo, + MeasurementIdentity p_MeasurementIdentity, + template (value) MeasurementCommand_r11 p_MeasurementCommand, + template (omit) CellDCHMeasOccasionInfo_TDD128_r9 p_CellDCHMeasOccasionInfo_TDD128, + template (omit) DPCH_CompressedModeStatusInfo_r10 p_DPCH_CompressedModeStatusInfo_r10 := omit, + RRC_TransactionIdentifier p_RRC_TI := tsc_RRC_TI) := + { /* @status */ + integrityCheckInfo := p_Integrityinfo, + message_ := { + measurementControl := { + later_than_r3 := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + later_than_r4 := { + rrc_TransactionIdentifier_MSP := p_RRC_TI, + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + r11 := { + measurementControl_r11 := { + measurementIdentity := p_MeasurementIdentity, + measurementCommand := p_MeasurementCommand, + measurementReportingMode := cs_MeasurementReportingMode, + additionalMeasurementList := omit, + cellDCHMeasOccasionInfo_TDD128 := p_CellDCHMeasOccasionInfo_TDD128, + dpch_CompressedModeStatusInfo := p_DPCH_CompressedModeStatusInfo_r10 + }, + measurementControl_r11_add_ext := omit, + nonCriticalExtensions := omit + } + } + } + } + } + } + } + } + } + } + } + } + }; + + template (value) DPCH_CompressedModeStatusInfo_r10 cs_DPCH_CompressedModeStatusInfo_r10(TGPS_Reconfiguration_CFN p_Tgps_Reconfiguration_CFN, + TGCFN p_TGCFN, + template (omit) TGP_SequenceShort_r10_freqSpecificCompressedMode_Type p_FreqSpecificCompressedMode := omit) := + { /* @status APPROVED */ + tgps_Reconfiguration_CFN := p_Tgps_Reconfiguration_CFN, + tgp_SequenceShortList := { + { + tgpsi := 1, + tgps_Status := { + activate_ := { + tgcfn := p_TGCFN + } + }, + freqSpecificCompressedMode := p_FreqSpecificCompressedMode + } + } + }; + + template (value) DL_DCCH_Message cs_MeasurementControl_InterRATMeasurement_FDD_r11(IntegrityCheckInfo p_Integrityinfo, + RRC_TransactionIdentifier p_RRC_TI, + integer p_EutraCell_ARFCN, + EUTRA_MeasurementBandwidth p_EutraCell_MeasBandwidth, + TGPS_Reconfiguration_CFN p_Tgps_Reconfiguration_CFN, + TGCFN p_TGCFN) := + // Default values according to 36.508 Table 4.7B.1-3: MEASUREMENT CONTROL for Inter-RAT + /* @status */ + cs_MeasurementControl_r11(p_Integrityinfo, + 3, + cs_MeasurementCommand_SetupInterRatEutra_r11(cs_EUTRA_FrequencyInfoList_r11_1Entry(p_EutraCell_ARFCN, p_EutraCell_MeasBandwidth), + cs_InterRATMeasQuantity_r8(cpich_RSCP, rsrp), + cs_InterRATReportingQuantity_r8, + {cs_InterRATEvent3a_Def}), + omit, + cs_DPCH_CompressedModeStatusInfo_r10(p_Tgps_Reconfiguration_CFN, p_TGCFN), + p_RRC_TI); + + template (value) DL_DCCH_Message cs_MeasurementControl_InterRATMeasurement_NoCompMode_FDD_r11(IntegrityCheckInfo p_Integrityinfo, + RRC_TransactionIdentifier p_RRC_TI, + integer p_EutraCell_ARFCN, + EUTRA_MeasurementBandwidth p_EutraCell_MeasBandwidth) := + // Default values according to 36.508 Table 4.7B.1-3: MEASUREMENT CONTROL for Inter-RAT + /* @status */ + cs_MeasurementControl_r11(p_Integrityinfo, + 3, + cs_MeasurementCommand_SetupInterRatEutra_r11(cs_EUTRA_FrequencyInfoList_r11_1Entry(p_EutraCell_ARFCN, p_EutraCell_MeasBandwidth), + cs_InterRATMeasQuantity_r8(cpich_RSCP, rsrp), + cs_InterRATReportingQuantity_r8, + {cs_InterRATEvent3a_Def}), + omit, + omit, + p_RRC_TI); + + template (value) DL_DCCH_Message cs_MeasurementControl_InterRATMeasurement_TDD_r11(IntegrityCheckInfo p_Integrityinfo, + RRC_TransactionIdentifier p_RRC_TI, + integer p_EutraCell_ARFCN, + EUTRA_MeasurementBandwidth p_EutraCell_MeasBandwidth, + template (omit) CellDCHMeasOccasionInfo_TDD128_r9 p_CellDCHMeasOccasionInfo_TDD128) := + // Default values according to 36.508 Table 4.7B.1-3: MEASUREMENT CONTROL for Inter-RAT + /* @status */ + cs_MeasurementControl_r11(p_Integrityinfo, + 3, + cs_MeasurementCommand_SetupInterRatEutra_r11(cs_EUTRA_FrequencyInfoList_r11_1Entry(p_EutraCell_ARFCN, p_EutraCell_MeasBandwidth), + cs_InterRATMeasQuantity_TDD_r8(primaryCCPCH_RSCP, rsrp), + cs_InterRATReportingQuantity_r8, + {cs_InterRATEvent3a_Def}), + p_CellDCHMeasOccasionInfo_TDD128, + omit, + p_RRC_TI); + + template (value) DL_DCCH_Message cs_HandoverFromUTRANCommand_EUTRA_r11 (IntegrityCheckInfo p_Integrityinfo, + RRC_TransactionIdentifier p_RRC_TI, + octetstring p_Eutra_Message) := + { /* TS 36.508 Table 4.7B.1-2: HANDOVER FROM UTRAN COMMAND */ + /* @status */ + integrityCheckInfo := p_Integrityinfo, + message_ := { + handoverFromUTRANCommand_EUTRA := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + criticalExtensions := { + r11 := { + handoverFromUTRANCommand_EUTRA_r11 := { + rsr_vcc_Info := omit, + activationTime := omit, + toHandoverRAB_Info := { + { + rab_Identity := { + gsm_MAP_RAB_Identity := '00000101'B + }, + //mbms_SessionIdentity := omit, //- Not specified in message + //mbms_ServiceIdentity := omit, + cn_DomainIdentity := ps_domain, + nas_Synchronisation_Indicator := omit, //not present specified + re_EstablishmentTimer := useT315 + } + }, + eutra_Message := p_Eutra_Message + }, + handoverFromUTRANCommand_EUTRA_r11_add_ext := omit, + nonCriticalExtensions := omit + } + } + } + } + } + }; + + template (value) TGPS_Status_r10_Type cs_TGPS_Status_r10_Deactive := + { /* @status */ + deactivate_ := NULL + }; + + template (value) DPCH_CompressedModeInfo_r10 cs_DPCH_CompressedModeInfo_r10(template (value) TGPS_Status_r10_Type p_Status, + template (value) UL_DL_Mode p_UL_DL_Mode) := + { /* @status */ + tgp_SequenceList := { + { + tgpsi := 1, + tgps_Status := p_Status, + tgps_ConfigurationParams := { + tgmp := e_UTRA, + freqSpecificCompressedMode := omit, + tgprc := 0, + tgsn := 8, + tgl1 := 10, + tgl2 := omit, + tgd := 270, + tgpl1 := 12, + rpp := mode0, + itp := mode0, + ul_DL_Mode := p_UL_DL_Mode,//UL and DL, UL only or DL only (depending on the UE capability) + dl_FrameType := dl_FrameTypeB, + deltaSIR1 := 20, + deltaSIRAfter1 := 10, + deltaSIR2 := omit, + deltaSIRAfter2 := omit, + nidentifyAbort := omit, + treconfirmAbort := omit + } + } + } + }; + +} //end of module diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_NAS_PDU_Templates.ttcn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_NAS_PDU_Templates.ttcn new file mode 100644 index 0000000..544350d --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_NAS_PDU_Templates.ttcn @@ -0,0 +1,565 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-07 18:37:49 +0200 (Sun, 07 Sep 2014) $ +// $Rev: 12081 $ +/******************************************************************************/ + +module UTRAN_NAS_PDU_Templates { + import from UTRAN_TypeDefs all; + import from NAS_24008TypeDefs all; + import from CommonDefs all; + import from NAS_CommonTypeDefs all; + import from NAS_CommonTemplates all; + import from NAS_24008Templates_IRAT all; + + import from Parameters all; + import from UTRAN_Parameters all; + + //============================================================================ + // UTRAN specific NAS templates + //---------------------------------------------------------------------------- + + template (value) SERVICEACCEPT cs_ServiceAccept := + { /* @status APPROVED (LTE_IRAT) */ + skipIndicator := '0000'B, + gMMProtocolDiscriminator := tsc_GMM_PD, + msgType := '00001101'B, + pDP_ContextStatus := omit, + mBMS_ContextStatus := omit + }; + + //============================================================================ + // PDU Templates: RRCDataReqType + //---------------------------------------------------------------------------- + template (value) RRCDataReqType cs_U_ServiceAccept := //@sic R5-130081 sic@ + { /* @status APPROVED (LTE_IRAT) */ + serviceAccept := cs_ServiceAccept + }; + + template (value) RRCDataReqType cs_U_AttachAcc(template (value) AttachResult p_AttachRes, + template (value) RoutingAreaId p_RAI, + template (omit) PTMSI_Signature p_PTMSIsig, + template (omit) MobileIdentity p_PTMSI, + template (omit) MobileIdentity p_TMSI, + template (omit) PLMN_List p_EPLMN := omit, //@sic R5-134916 sic@ + template (omit) GMM_Cause p_GmmCause := omit, //@sic R5-140946 sic@ + template (omit) AddNtwFeatureSupport p_AddNwFeatSupport := omit,//@sic R5-140946 sic@ + template (omit) GPRS_Timer2 p_T3302Value:= omit //@sic R5-140946 sic@ + ) := + { /* @status APPROVED (LTE_IRAT, POS, SSNITZ, UTRAN) */ + attachAccept := cs_AttachAcc_Common(p_AttachRes, p_RAI, p_PTMSIsig, p_PTMSI, p_EPLMN, p_TMSI, p_GmmCause, p_AddNwFeatSupport, p_T3302Value) // @sic R5-123114 sic@, @sic R5-140946 sic@ + }; + + //---------------------------------------------------------------------------- + + template (value) RRCDataReqType cs_U_AttachReject( RejCau p_Cause) := + { /* @status APPROVED (LTE_IRAT) */ + attachReject := cs_AttachRej_Common(p_Cause) // @sic R5s110596 sic@ + }; + + //---------------------------------------------------------------------------- + + template (value) RRCDataReqType cs_U_AuthReq(template (value) KeySeq p_KeySeq, + template (value) MM_RAND p_RAND, + template (value) AUTN p_AUTN) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + authenticationRequest := cs_AuthReq_Common(p_KeySeq, p_RAND, p_AUTN) + }; + + //---------------------------------------------------------------------------- + + template (value) RRCDataReqType cs_U_AuthAndCiphReq(template (value) RAND p_Rand, + template (value) CiphKeySeqNum p_CiphKeySeqNum, + template (value) AUTN p_Autn) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + authenticationAndCipheringRequest := cs_AuthAndCiphReq_Common(p_Rand, p_CiphKeySeqNum, int2bit (enum2int(px_GPRS_CipheringAlgorithm), 3), p_Autn) // @sic R5-130618, R5s130132 sic@ + }; + + //---------------------------------------------------------------------------- + + template (value) RRCDataReqType cs_U_LocUpdAcpTMSI(octetstring p_PLMN, + octetstring p_LAC, + template (omit) PLMN_List p_EPLMN := omit) := //@sic R5-134916 sic@ + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + locationUpdatingAccept := cs_LocUpdAcp_Common (p_PLMN, p_LAC, cs_MobileIdTMSIorPTMSI ('17'O, px_TMSI_Def), p_EPLMN) + }; + + //---------------------------------------------------------------------------- + + template (value) RRCDataReqType cs_U_LocUpdAcpIMSI(octetstring p_PLMN, + octetstring p_LAC, + template (value) MobileIdentity p_IMSIMobileIdWithIEI, + template (omit) PLMN_List p_EPLMN := omit) := //@sic R5-134916 sic@ + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + locationUpdatingAccept := cs_LocUpdAcp_Common (p_PLMN, p_LAC, p_IMSIMobileIdWithIEI, p_EPLMN) + }; + //---------------------------------------------------------------------------- + + template (value) RRCDataReqType cs_U_LocUpdAcp_NoMobId(octetstring p_PLMN, // @sic R5-112706 sic@ + octetstring p_LAC, + template (omit) PLMN_List p_EPLMN := omit) := //@sic R5-134916 sic@ + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + locationUpdatingAccept := cs_LocUpdAcp_Common (p_PLMN, p_LAC, omit, p_EPLMN) + }; + + //---------------------------------------------------------------------------- + + template (value) RRCDataReqType cs_U_RA_UpdAcc3(template (value) UpdateResult p_UpdateResult, + template (value) RoutingAreaId p_RAI, + template (omit) PTMSI_Signature p_PTMSIsig, + template (omit) MobileIdentity p_PTMSI, + template (omit) PDP_ContextStatus p_PDP_ContextStatus) := // @sic R5-133604 sic@ + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + routingAreaUpdateAccept := cs_RA_UpdAcc_Common (p_UpdateResult, + p_RAI, + p_PTMSIsig, + p_PTMSI, + p_PDP_ContextStatus) + }; + + template (value) RRCDataReqType cs_TMSI_ReallocCmd(octetstring p_PLMN, + octetstring p_LAC, + template (omit) MobileIdentity p_MobileId) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + tmsiReallocationCommand := cs_TMSI_ReallocCmplCmd_Common ( p_PLMN, p_LAC, p_MobileId) + }; + + //---------------------------------------------------------------------------- + + template (value) RRCDataReqType cs_U_RAUpdReject(template (value) GMM_Cause p_RejectCause) := + { /* @status APPROVED (LTE_IRAT) */ + routingAreaUpdateReject := cs_RAUpdReject_Common (p_RejectCause) + }; + + //---------------------------------------------------------------------------- + + template (value) RRCDataReqType cs_U_CM_ServAcc := + { /* @status APPROVED (LTE_IRAT) */ + cmServiceAccept := { + skipIndicator := '0000'B, + mMProtocolDiscriminator := '0101'B, + msgType := '00100001'B + } + }; + + //---------------------------------------------------------------------------- + + template (value) RRCDataReqType cs_U_CM_ServRej(RejCau p_RejCau) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS) */ + cmServiceReject := cs_CM_ServRej (p_RejCau) + }; + + //---------------------------------------------------------------------------- + + template (value) RRCDataReqType cs_U_CallProc ( template (value) TI p_TI ):= + { /* @status APPROVED (LTE_IRAT) */ + callProceeding := cs_CallProc_Common ( p_TI ) + }; + + //---------------------------------------------------------------------------- + + template (value) RRCDataReqType cs_U_Alert ( template (value) TI p_TI ) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + alertingdl := cs_Alert_Common ( p_TI ) + }; + + //---------------------------------------------------------------------------- + + template (value) RRCDataReqType cs_U_Connect ( template (value) TI p_TI ) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + connectdl := cs_Connect_Common ( p_TI ) + }; + + //---------------------------------------------------------------------------- + + template (value) RRCDataReqType cs_U_ServiceReject(RejCau p_GmmCause) := + { + serviceReject := { + skipIndicator := '0000'B, + gMMProtocolDiscriminator := tsc_GMM_PD, + msgType := '00001110'B, + gmmCause := p_GmmCause, + t3346Value := omit /* cl. 10.5.7.4 O TLV 3 IEI=0x3A @sic R5s120178 Baseline Moving sic@*/ + } + }; + + //---------------------------------------------------------------------------- + + template (value) RRCDataReqType cs_U_ActivatePDPContextAccept(template (value) ACTIVATEPDPCONTEXTACCEPTdl p_ActivatePDPContextAccept) := + { /* @status APPROVED (LTE_IRAT, UTRAN) */ + activatePDPContextAccept := p_ActivatePDPContextAccept + }; + + //---------------------------------------------------------------------------- + + template (value) RRCDataReqType cs_U_DetachAcc(template (value) DETACHACCEPTMO p_DetachAcc := cs_DetachAcc) := + { /* @status APPROVED (UTRAN) */ + detachAcceptMO := p_DetachAcc + }; + + //---------------------------------------------------------------------------- + + template (value) RRCDataReqType cs_U_Disconnect ( template (value) TI p_Ti ) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + disconnectDL := cs_Disconnect_Common(p_Ti) + }; + + //---------------------------------------------------------------------------- + + template (value) RRCDataReqType cs_U_RelCmpl(template (value) TI p_Ti) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + releaseComplete := cs_RelCmpl_Common(p_Ti) + }; + + //============================================================================ + // PDU Templates: RRCDataIndType + //---------------------------------------------------------------------------- + + template (present) RRCDataIndType cr_U_AttachComplete := + { /* @status APPROVED (LTE_IRAT, POS, SSNITZ, UTRAN) */ + attachComplete := cr_AttachComplete_Common + }; + + //---------------------------------------------------------------------------- + + template (present) RRCDataIndType cr_U_DetachRequest(template DetachType p_Type := cr_DetachTypeOnSwitchOff, + template MobileIdentity p_Ptmsi := cr_MobileIdAny('18'O) ifpresent, + template PTMSI_Signature p_Signature := cr_PTMSI_Signature2Any ifpresent) := // @sic R5s110112 sic@ + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + /* @sic R5s140387 : default values for p_Type and p_Ptmsi => removed at calling side sic@ */ + detachRequest := cr_DetachReq_Common(p_Type, p_Ptmsi, p_Signature) + }; + + //---------------------------------------------------------------------------- + + template (present) RRCDataIndType cr_U_AttachReq(template (present) AttachType p_AttachType, + template (present) MobileIdentity p_MobId, + template (present) RoutingAreaId p_RAI, + template (present) KeySeq p_KeySeq, + template (present) MS_RadioAccessCap_LV p_MS_RadioAccessCap := cr_MS_RadioAccessCapLVAny) := + { /* @status APPROVED (LTE_IRAT, POS) */ + attachRequest := cr_AttachReq_Common(p_AttachType, p_MobId, p_RAI, p_KeySeq, p_MS_RadioAccessCap) + }; + + template (present) RRCDataIndType cr_U_AttachReq_MSandUENetworkCap(template (present) AttachType p_AttachType, + template (present) MobileIdentity p_MobId, + template (present) RoutingAreaId p_RAI, + template (present) KeySeq p_KeySeq, + template (present) MS_RadioAccessCap_LV p_MS_RadioAccessCap := cr_MS_RadioAccessCapLVAny, + template UE_NetworkCap p_UENetworkCap := cr_UENetworkCap_Any ('58'O) ifpresent) := + { /* @status APPROVED (LTE_IRAT) */ + attachRequest := cr_AttachReq_Common(p_AttachType, + p_MobId, + p_RAI, + p_KeySeq, + p_MS_RadioAccessCap, + -, + -, + -, + -, + -, + -, + -, + p_UENetworkCap) + }; + + //---------------------------------------------------------------------------- + + template (present) RRCDataIndType cr_U_AttachReqIMSInoTMSI (template (present) AttachType p_AttachType, + template (present) MobileIdentity p_MobIdIMSI, + template (present) RoutingAreaId p_RAI, + template TMSI_Status p_TMSI_Status := cr_TMSI_Status ('0'B)) := + { /* @status APPROVED (LTE_IRAT) */ + attachRequest := cr_AttachReq_Common(p_AttachType, + p_MobIdIMSI, + p_RAI, + '111'B, // No key available + -, + omit, // No P-TMSI + -, + p_TMSI_Status, // @sic R5s110279 sic@ + -, + -, + -, + -, + -, + omit, + omit) + }; + + //---------------------------------------------------------------------------- + + template (present) RRCDataIndType cr_U_AuthFailAny := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + authenticationFailure := cr_AuthFailAny_Common + }; + + //---------------------------------------------------------------------------- + + template (present) RRCDataIndType cr_U_AuthAndCiphFailureAny := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + authenticationAndCipheringFailure := cr_AuthAndCiphFailure_Common + }; + + //---------------------------------------------------------------------------- + + template (present) RRCDataIndType cr_U_AuthAndCiphRsp(template AuthRsp p_AuthRsp, + template AuthRspExt p_AuthRspExt) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + authenticationAndCipheringResponse := cr_AuthAndCiphRsp_Common (p_AuthRsp, p_AuthRspExt) + }; + + //---------------------------------------------------------------------------- + + template (present) RRCDataIndType cr_U_AuthRspAnyExt := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + authenticationResponse := cr_AuthResponse_Common(cr_AuthRspExtAny) + }; + + //---------------------------------------------------------------------------- + + template (present) RRCDataIndType cr_U_AuthRspAnyNoExt := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + authenticationResponse := cr_AuthResponse_Common + }; + + //---------------------------------------------------------------------------- + + template (present) RRCDataIndType cr_U_LocationUpdatingRequest := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + locationUpdatingRequest := cr_LocUpdReq_Common(?) + }; + + template (present) RRCDataIndType cr_U_LocationUpdatingRequestIMSI := + { + locationUpdatingRequest := cr_LocUpdReq_Common(?, cdr_LocUpdTypeIMSI) + }; + + template (present) RRCDataIndType cr_U_LocationUpdatingRequestNormal := + { /* @status APPROVED (LTE_IRAT) */ + locationUpdatingRequest := cr_LocUpdReq_Common(?, cr_LocUpdTypeNormal) + }; + + template (present) RRCDataIndType cr_U_LocationUpdatingRequestAll(template (present) KeySeq p_KeySeq, + template (present) LocUpdType p_Type := ?, // @sic R5-112114 sic@ + template (present) LocAreaId p_LocAreaId := cr_LAI_Any_v, + template (present) MS_Clsmk1 p_MSClsmk1 := cr_MS_Clsmk1_Any, + template (present) MobileIdentity p_MobileId := cr_MobileIdAny(omit), + template MS_Clsmk2 p_MSClsmk2 := cr_MS_Clsmk2_Any_tlv('33'O)) := + { /* @status APPROVED (LTE_IRAT) */ + locationUpdatingRequest := cr_LocUpdReq_Common(p_KeySeq, p_Type, p_LocAreaId, p_MSClsmk1, p_MobileId, p_MSClsmk2) + }; + + //---------------------------------------------------------------------------- + + template (present) RRCDataIndType cr_U_RA_UpdReqAny(template (present) UpdateType p_UpdateType, + template (present) RoutingAreaId p_RAI, + template PTMSI_Signature p_PTMSISig, + template (present) KeySeq p_KeySeq, + template (present) MS_RadioAccessCap_LV p_MsRadioAccessCap := cr_MS_RadioAccessCapLVAny) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + routingAreaUpdateRequest := cr_RAURequest_Common(p_UpdateType, + p_RAI, + p_PTMSISig, + cr_TMSI_Status ('0'B), + p_KeySeq, + p_MsRadioAccessCap) + }; + + template (present) RRCDataIndType cr_U_RA_UpdReq_MSandUENetworkCap(template (present) UpdateType p_UpdateType, + template (present) RoutingAreaId p_RAI, + template PTMSI_Signature p_PTMSISig, + template (present) KeySeq p_KeySeq, + template (present) MS_RadioAccessCap_LV p_MsRadioAccessCap := cr_MS_RadioAccessCapLVAny, + template UE_NetworkCap p_UENetworkCap := cr_UENetworkCap_Any ('58'O)) := + { /* @status APPROVED (LTE_IRAT) */ + routingAreaUpdateRequest := cr_RAURequest_Common(p_UpdateType, + p_RAI, + p_PTMSISig, + cr_TMSI_Status ('0'B), + p_KeySeq, + p_MsRadioAccessCap, + -, + -, + -, + -, + -, + -, + -, + p_UENetworkCap) + }; + + //---------------------------------------------------------------------------- + + template (present) RRCDataIndType cr_U_PagRsp(template (present) KeySeq p_KeySeq, + template (present) MobileIdentity p_MobileId) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ) */ + pagingResponse := cr_PagRsp_Common ( p_KeySeq, p_MobileId ) + }; + + //---------------------------------------------------------------------------- + + template (present) RRCDataIndType cr_U_RAUpdComplete := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + routingAreaUpdateComplete:= cr_RAUpdComplete_Common + }; + + //---------------------------------------------------------------------------- + + template (present) RRCDataIndType cr_U_ESetup(template (present) Bcap p_Bcap := cr_BcapSpeechMO) := + { /* @status APPROVED (LTE_IRAT) */ + esetup := cr_ESetup (p_Bcap) + }; + + //---------------------------------------------------------------------------- + + template (present) RRCDataIndType cr_U_ServReqAny(template (present) KeySeq p_KeySeq) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cmServiceRequest := cr_CM_ServReq ( p_KeySeq ) + }; + + template (present) RRCDataIndType cr_U_ServReq_MO_TMSI(template (present) KeySeq p_KeySeq) := + { /* @status APPROVED (LTE_IRAT) */ + cmServiceRequest := cr_CM_ServReq(p_KeySeq, + '0001'B, //'Mobile originating call establishment or packet mode connection establishment' + cr_MobileIdTMSI_lv (px_TMSI_Def)) + }; + + template (present) RRCDataIndType cr_U_ServReq_MO_TMSI_Emergency (template (present) KeySeq p_KeySeq) := + /* @status APPROVED (LTE_IRAT) */ + //@sic R5s120111 sic@ + cr_U_ServReq_MO_Emergency ( p_KeySeq, cr_MobileIdTMSI_lv (px_TMSI_Def) ); + + template (present) RRCDataIndType cr_U_ServReq_MO_Emergency(template (present) KeySeq p_KeySeq, + template (present) MobileIdentity p_MobileIdentity := cr_MobileIdAny(omit)) := + { /* @status APPROVED (LTE_IRAT) */ + //@sic R5s120111 sic@ + cmServiceRequest := cr_CM_ServReq(p_KeySeq, + '0010'B, //'Emergency call establishment' + p_MobileIdentity) + }; + + //---------------------------------------------------------------------------- + + template (present) RRCDataIndType cr_U_ConnAck(template TI p_TI) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + connectAcknowledge := cr_ConnAck_Common(p_TI) + }; + + //---------------------------------------------------------------------------- + + template (present) RRCDataIndType cr_U_ServiceRequest(template ServiceType p_ServiceType, + template MobileIdentity p_PTMSI, + template (present) KeySeq p_KeySeq) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + serviceRequest := { + skipIndicator := '0000'B, + gMMProtocolDiscriminator := tsc_GMM_PD, + msgType := '00001100'B, + serviceType := p_ServiceType, + ciphKeySeqNo := cr_CiphKeySeqNum(omit, p_KeySeq), + ptmsi := p_PTMSI, + pDP_ContextStatus := cr_PDP_ContextStatusAny ifpresent, + mBMS_ContextStatus := cr_MBMS_ContextStatusAny ifpresent, + uplinkDataStatus := cr_UplinkDataStatusAny ifpresent, + deviceProperties := cr_DeviceProperties('D'H) ifpresent /* cl. 10.5.7.8 O TV 1 IEI=0xD- @sic R5s120178 Baseline Moving sic@*/ + } + }; + + //---------------------------------------------------------------------------- + + template (present) RRCDataIndType cr_U_TMSI_ReallocCmpl := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tmsiReallocationComplete := cr_TMSI_ReallocCmpl_Common + }; + + //---------------------------------------------------------------------------- + + template (present) RRCDataIndType cr_U_GMM_Status(template (present) RejCau p_Cause) := + { + gmmStatus := { + skipIndicator := '0000'B, + gMMProtocolDiscriminator := tsc_GMM_PD, + msgType := '00100000'B, + cause := p_Cause + } + }; + + //---------------------------------------------------------------------------- + + template (present) RRCDataIndType cr_U_Imsi_DetachInd := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + imsiDetachIndication := cr_IMSI_DetachInd_Common (-, ?) // @sic R5s110777, R5-120624 sic@ + }; + + //---------------------------------------------------------------------------- + + template (present) RRCDataIndType cr_U_DeactPdpContextAcp(template DEACTIVATEPDPCONTEXTACCEPT p_DeactPdpCntxAcp) := + { /* @status APPROVED (UTRAN) */ + deactivatePDPContextAccept := p_DeactPdpCntxAcp + }; + + //---------------------------------------------------------------------------- + + template (present) RRCDataIndType cr_U_ActPDP_ContextReqMo(template (present) QualityOfService p_QualityOfService := cr_QualityOfService_Any) := + { /* @status APPROVED (LTE_IRAT, UTRAN) */ + /* @sic R5s110771 sic@ */ + activatePDPContextRequestul := cr_ActPDP_ContextReqMO_Common ( p_QualityOfService ) + }; + + //---------------------------------------------------------------------------- + + template (present) RRCDataIndType cr_U_Rel(template TI p_Ti) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + releaseUL := cr_Rel_Common(p_Ti) + }; + + template (present) RRCDataIndType cr_U_CallConfirmed(template TI p_TI, + template StreamId p_StrId := *) := // @sic R5s120070 sic@ + { /* @status APPROVED (LTE_IRAT, SSNITZ) */ + callConfirmed := cr_CallConf_Common (p_TI, p_StrId) + }; + + template (value) RRCDataReqType cs_U_SetupDL(template (value) SETUPdl p_SETUPdl) := + { /* @status APPROVED (LTE_IRAT, SSNITZ) */ + setupdl := p_SETUPdl + }; + + template (value) RRCDataReqType cs_U_SetupMTCall(template (value) Bcap p_Bcap) := cs_U_SetupDL(cs_SetupMT_Common(p_Bcap)); /* @status APPROVED (LTE_IRAT) */ + + template (present) RRCDataIndType cr_U_SetupMOCall(template (present) Bcap p_Bcap) := + { /* @status APPROVED (LTE_IRAT, SSNITZ) */ + setupul := cdr_SetupMO_Speech_Common(p_Bcap) + }; + + template (present) RRCDataIndType cr_U_Alerting (template TI p_TI) := + { /* @status APPROVED (SSNITZ, LTE_IRAT) */ + alertingul := cr_Alert_Common (p_TI) + }; + + template (present) RRCDataIndType cr_U_Connect(template TI p_TI) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + connectul := cr_Connect_Common (p_TI) + }; + + template (value) RRCDataReqType cs_U_ConnectAck(template (value) TI p_TI) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + connectAcknowledge := cs_ConnAck_Common(p_TI) + }; + + //---------------------------------------------------------------------------- + template (value) RRCDataReqType cs_U_ReleaseComplete(template (value) TI p_TI, + B4_Type p_PD := '0011'B, // Call related SS + template (omit) Cau p_Cau := omit, + template (omit) FacilityIE p_Facility := omit) := + { /* @status APPROVED (POS) */ + releaseComplete := cs_RelCmpl_Common (p_TI, p_PD, p_Cau, p_Facility) + }; + + +} diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RAB_Functions.ttcn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RAB_Functions.ttcn new file mode 100644 index 0000000..c034538 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RAB_Functions.ttcn @@ -0,0 +1,4132 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-10 21:20:35 +0200 (Wed, 10 Sep 2014) $ +// $Rev: 12193 $ +/******************************************************************************/ + +module UTRAN_RAB_Functions { + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_ASP_Definitions language "ASN.1:2002" all; + import from UTRAN_Parameters all; + import from UTRAN_Component all; + import from UTRAN_RRC_RAB_Templates all; + import from UTRAN_RRC_RAB_Templates_r9 all; + import from UTRAN_RRC_RAB_Templates_r10 all; + import from UTRAN_RRC_RAB_Templates_r11 all; + import from UTRAN_CellInfo all; + import from UTRAN_CommonFunctions all; + import from UTRANGERAN_CommonFunctions all; + import from UTRAN_TTCN_ASP_Templates all; + import from UTRAN_NAS_PDU_Templates all; + import from UTRAN_CommonDefs all; + import from UTRAN_RRC_CommonTemplates all; + import from UTRAN_RRC_Templates all; + import from UTRAN_RRC_Templates_r11 all; + import from UTRAN_ASN1_ASP_Templates all; + import from UTRAN_ASN1_ASP_Templates_r10 all; + import from UTRAN_ASN1_ASP_Templates_r11 all; + import from UTRAN_ASN1_ASP_RAB_Templates all; + import from UTRAN34_ASN1_ASP_Templates_r10 all; + import from UTRAN_ASN1_ASP_RAB_Templates_r10 all; + import from UTRAN_ASN1_ASP_RAB_Templates_r11 all; + import from UTRAN_TypeDefs all; + import from UTRAN_ConfigurationSteps all; + import from CommonIratDefs all; + import from CommonDefs all; + import from Parameters all; + import from UpperTesterFunctions all; + import from IP_PTC_CtrlMsgs all; + + import from NAS_24008TypeDefs all; + import from NAS_24008Templates_IRAT all; + import from NAS_CommonTypeDefs all; + import from NAS_CommonTemplates all; + import from UTRAN_MDT_Templates all; + + const float tsc_DelaySetupFACH := 0.06; /* Delay in seconds used after sending the RAB SETUP in CELL_FACH state + @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + const float tsc_DelaySetupFACH_TDD := 0.10; /* Delay in seconds used after sending the RAB SETUP in CELL_FACH state + Deviation from the value used in TCCN-2 TDD (0.06) as an exeption + @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + + //---------------------------------------------------------------------- + // Init functions + //---------------------------------------------------------------------- + + /* + * @desc Function will return the RRC establishment cause based on the set PIXIT parameters + * @return template (value) EstablishmentCause + * @status APPROVED (LTE_IRAT, UTRAN) + */ + function f_GetMoEstCause() return template (value) EstablishmentCause + { + var template (value) EstablishmentCause v_EstablishmentCause; + + if (pc_Interactive and (px_RRC_PS_ServTested == ps_Interactive)) { + v_EstablishmentCause := originatingInteractiveCall; + } + else if (pc_Background and (px_RRC_PS_ServTested == ps_Background)) { + v_EstablishmentCause := originatingBackgroundCall; + } + else if (pc_Streaming and (px_RRC_PS_ServTested == ps_Streaming)) { + v_EstablishmentCause := originatingStreamingCall; + } + else if (px_RRC_PS_ServTested == ps_SubscribedTrafficClass) { // @sic R5s110771 sic@ + v_EstablishmentCause := originatingSubscribedTrafficCall; + } + else { + FatalError(__FILE__, __LINE__, "Configuration not supported"); + }; + return v_EstablishmentCause; + } + + /* + * @desc Initialise QoS, Delay and Traffic Class + * @param p_CellId + * @param p_RB_Configuration (default value: cell_DCH_64kPS_RAB_SRB) + * @return template (value) QualityOfService + * @status APPROVED (LTE_IRAT, UTRAN) + */ + function f_UTRAN_InitialiseQoS(UTRAN_CellId_Type p_CellId, + RB_ConfigType p_RB_Configuration := cell_DCH_64kPS_RAB_SRB) + runs on UTRAN_PTC return template (value) QualityOfService + { + var B3_Type v_DlyClass, v_TrafficClass; + var template (value) QualityOfService v_QualityOfService; + var B8_Type v_MaxSDU_Size := '00100000'B;//maxSDU_Size is 320 + var B8_Type v_MaxBitRateUL, v_MaxBitRateDL; + var B4_Type v_PeakThroughput; + var template (omit) B8_Type v_BitRateExt := omit; + var B8_Type v_BitRateUL_64kbps := '01000000'B;//64kbps + var UTRAN_FDD_TDD_Type v_FDD_TDD_Mode := f_UTRAN_CellInfo_GetFDD_TDD(p_CellId); + + if (pc_Interactive and ((px_RRC_PS_ServTested == ps_Interactive) or (px_RRC_PS_ServTested == ps_SubscribedTrafficClass))) { // @sic R5s110771 sic@ + v_DlyClass := '011'B; + v_TrafficClass := '011'B; + } + else if (pc_Background and (px_RRC_PS_ServTested == ps_Background)) { + v_DlyClass := '100'B; + v_TrafficClass := '100'B; + } + else {//Default values for all other cases + v_DlyClass := '011'B; + v_TrafficClass := '011'B; + } + + if (v_FDD_TDD_Mode == UTRAN_FDD) {//Cell is FDD + // pc_HSDSCH_UE_Category_FDD is used to determine the QoS as MAC-ehs and dual cell configuration is not configured. Ref: 25.331 cl. 10.3.3.25 Note 5, 6 and 12 + + select (pc_HSDSCH_UE_Category_FDD) { // @sic R5w140207 sic@ + case (1, 2) { + v_PeakThroughput := '1000'B;//PTC=8 + v_MaxBitRateDL := '10001001'B;//Downlink bit rate=1173 kbps + if ((pc_EDCH_UE_Category_FDD == 4) or (pc_EDCH_UE_Category_FDD == 6)) { // @sic R5w140207 sic@ + v_PeakThroughput := '1001'B;//PTC=9 + } + } + case (3, 4){ + v_PeakThroughput := '1000'B;//PTC=8 + v_MaxBitRateDL := '10010010'B;//Downlink bit rate=1759 kbps + if ((pc_EDCH_UE_Category_FDD == 4) or (pc_EDCH_UE_Category_FDD == 6)) { // @sic R5w140207 sic@ + v_PeakThroughput := '1001'B;//PTC=9 + } + } + case (5, 6) { + v_PeakThroughput := '1001'B;//PTC=9 + v_MaxBitRateDL := '10101110'B;//Downlink bit rate=3520 kbps + } + case (7, 8) { + v_PeakThroughput := '1001'B;//PTC=9 + v_MaxBitRateDL := '11100000'B;//Downlink bit rate=6720 kbps + } + case (9) { + v_PeakThroughput := '1001'B;//PTC=9 + v_MaxBitRateDL := '11100000'B;//Downlink bit rate=9600 kbps + v_BitRateExt := '00001010'B; + } + case (10) { + v_PeakThroughput := '1001'B;//PTC=9 + v_MaxBitRateDL := '11111110'B;//Downlink bit rate=13400 kbps + v_BitRateExt := '00110000'B; + } + case (11) { + v_MaxBitRateDL := '10000011'B;//Downlink bit rate=800 kbps + select (pc_EDCH_UE_Category_FDD) { // @sic R5w140207 sic@ + case (2, 3, 4) { + v_PeakThroughput := '1000'B;//PTC=8 + } + case (4, 6) { + v_PeakThroughput := '1001'B;//PTC=9 + } + case else { + v_PeakThroughput := '0111'B;//PTC=7 + } + } + } + case (12) { + v_MaxBitRateDL := '10010000'B;//Downlink bit rate=1600 kbps + select (pc_EDCH_UE_Category_FDD) { // @sic R5w140207 sic@ + case (4, 6) { + v_PeakThroughput := '1001'B;//PTC=9 + } + case else { + v_PeakThroughput := '1000'B;//PTC=8 + } + } + } + case else { + FatalError(__FILE__, __LINE__, "Invalid HSDSCH UE Category"); + } + } + + // pc_EDCH_UE_Category is used to determine the QoS for UL + select (pc_EDCH_UE_Category_FDD) { // @sic R5w140207 sic@ + case (1) { v_MaxBitRateUL := oct2bit('81'O); } //640 kbps for EDCH category 1 UE + case (2) { v_MaxBitRateUL := oct2bit('8B'O); } //1280 kbps for EDCH category 2 UE + case (3) { v_MaxBitRateUL := oct2bit('8C'O); } //1344 kbps for EDCH category 3 UE + case (4) { v_MaxBitRateUL := oct2bit('A1'O); } //2688 kbps for EDCH category 4 UE + case (5) { v_MaxBitRateUL := oct2bit('94'O); } //1856 kbps for EDCH category 5 UE + case (6) { v_MaxBitRateUL := oct2bit('CC'O); } //5440 kbps for EDCH category 6 UE + case else { + FatalError(__FILE__, __LINE__, "Incorrect value of pc_EDCH_UE_Category_FDD"); // @sic R5w140207 sic@ + } + } + } + else {//Cell is TDD + v_PeakThroughput := '0100'B; + + select (pc_HSDSCH_UE_Category_TDD) { // @sic R5w140207 sic@ + case (1, 2, 3, 4, 5, 6) { + v_MaxBitRateDL := '10001100'B; //Downlink bit rate=1216 kbps + } + case (7, 8, 9, 10, 11, 12) { + v_MaxBitRateDL := '10010110'B;//Downlink bit rate=1792 kbps + } + case (13, 14, 15) { + v_MaxBitRateDL := '10100010'B;//Downlink bit rate=3648 kbps + } + case else { + FatalError(__FILE__, __LINE__, "Invalid HSDSCH UE Category"); + } + } + + select (pc_EDCH_UE_Category_TDD) { // @sic R5w140207 sic@ + // pc_EDCH_UE_Category is used to determine the QoS for UL + case (1) { v_MaxBitRateUL := oct2bit('7D'O); } //551 kbps for EDCH category 1 UE + case (2) { v_MaxBitRateUL := oct2bit('84'O); } //832 kbps for EDCH category 2 UE + case (3) { v_MaxBitRateUL := oct2bit('89'O); } //1106 kbps for EDCH category 3 UE + case (4) { v_MaxBitRateUL := oct2bit('8A'O); } //1170 kbps for EDCH category 4 UE + case (5) { v_MaxBitRateUL := oct2bit('9A'O); } //2232 kbps for EDCH category 5 UE + case (6) { v_MaxBitRateUL := oct2bit('9A'O); } //2232 kbps for EDCH category 6 UE + case else { + FatalError(__FILE__, __LINE__, "Incorrect value of pc_EDCH_UE_Category_TDD"); // @sic R5w140207 sic@ + } + } + } + + select (p_RB_Configuration) { + case (cell_FACH_PS, cell_FACH_HS, cell_DCH_64kPS_RAB_SRB) { + v_QualityOfService := cs_QoS_InteractiveOrBackgroundMT(v_DlyClass, v_TrafficClass); + } + case (cell_DCH_HS_DSCH) { + v_QualityOfService := cds_QoS_InteractiveOrBackgroundMT_HS(v_DlyClass, + v_TrafficClass, + v_PeakThroughput, + v_MaxSDU_Size, + v_BitRateUL_64kbps, + v_MaxBitRateDL, + v_BitRateExt); + } + case (cell_DCH_E_HS) { + v_QualityOfService := cds_QoS_InteractiveOrBackgroundMT_HS(v_DlyClass, + v_TrafficClass, + v_PeakThroughput, + v_MaxSDU_Size, + v_MaxBitRateUL, + v_MaxBitRateDL, + v_BitRateExt); + } + case else { + FatalError(__FILE__, __LINE__, "RAB Configuration not supported"); + } + } + return v_QualityOfService; + } + + //---------------------------------------------------------------------- + // Functions + //---------------------------------------------------------------------- + + /* + * @desc To set up physical channel DPCH1 and connect DCH1and DCH5 to the physical channel. + * Then map DCCH1-4 on to the DCH5 transport channel and map DTCH1 to the DCH1 transport channel. + * @param p_CellId + * @param p_UL_TrChConfig + * @param p_DL_TrChConfig + * @param p_UL_TrCHInfo + * @param p_DL_TrCHInfo + * @param p_UL_TrLogMapping + * @param p_DL_TrLogMapping + * @param p_DL_DPCHInfo + * @param p_UL_DPCH_Info + * @param p_ActivationTime + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_SS_Config_64kPS_FDD(UTRAN_CellId_Type p_CellId, + template (value) CphyTrchConfigReq p_UL_TrChConfig, + template (value) CphyTrchConfigReq p_DL_TrChConfig, + template (value) TrCHInfo p_UL_TrCHInfo, + template (value) TrCHInfo p_DL_TrCHInfo, + template (value) TrCH_LogCHMappingList1 p_UL_TrLogMapping, + template (value) TrCH_LogCHMappingList1 p_DL_TrLogMapping, + template (value) DL_DPCHInfo_r8_FDD p_DL_DPCHInfo, + template (value) UL_DPCH_Info_r7 p_UL_DPCH_Info, + template (value) SS_ActivationTime p_ActivationTime) runs on UTRAN_PTC + { + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_FDD (p_CellId, + tsc_DL_DPCH1, + cs_DPCHInfo_DL_FDD(p_DL_DPCHInfo), + p_ActivationTime)); + + f_UTRAN_CPHY_TrCH_Config(cas_TrChCfgInfo_FDD (p_CellId, + tsc_DL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + p_DL_TrChConfig)); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(utran_CellDedicated, // @sic R5s110216 sic@ + tsc_DL_DPCH1, + cs_UE_Info, + p_DL_TrCHInfo, + p_DL_TrLogMapping, + p_ActivationTime)); + + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_FDD (p_CellId, + tsc_UL_DPCH1, + cs_DPCHInfo_UL_FDD (p_UL_DPCH_Info), + p_ActivationTime)); + + f_UTRAN_CPHY_TrCH_Config(cas_TrChCfgInfo_FDD (p_CellId, + tsc_UL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + p_UL_TrChConfig)); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(utran_CellDedicated, // @sic R5s110216 sic@ + tsc_UL_DPCH1, + cs_UE_Info, + p_UL_TrCHInfo, + p_UL_TrLogMapping, + p_ActivationTime)); + } + + /* + * @desc To set up physical channel DPCH1 and connect DCH1and DCH5 to the physical channel. + * Then map DCCH1-4 on to the DCH5 transport channel and map DTCH1 to the DCH1 transport channel. + * In rel-10 + * @param p_CellId + * @param p_UL_TrChConfig + * @param p_DL_TrChConfig + * @param p_UL_TrCHInfo + * @param p_DL_TrCHInfo + * @param p_UL_TrLogMapping + * @param p_DL_TrLogMapping + * @param p_DL_DPCHInfo + * @param p_UL_DPCH_Info + * @param p_ActivationTime + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_SS_Config_64kPS_FDD_r10(UTRAN_CellId_Type p_CellId, + template (value) CphyTrchConfigReq p_UL_TrChConfig, + template (value) CphyTrchConfigReq p_DL_TrChConfig, + template (value) TrCHInfo p_UL_TrCHInfo, + template (value) TrCHInfo p_DL_TrCHInfo, + template (value) TrCH_LogCHMappingList1 p_UL_TrLogMapping, + template (value) TrCH_LogCHMappingList1 p_DL_TrLogMapping, + template (value) DL_DPCHInfo_r10_FDD p_DL_DPCHInfo, + template (value) UL_DPCH_Info_r7 p_UL_DPCH_Info, + template (value) SS_ActivationTime p_ActivationTime) runs on UTRAN_PTC + { + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_FDD(p_CellId, + tsc_DL_DPCH1, + cs_DPCHInfo_Extension_FDD(cs_DL_DPCHInfo_r10_Extension_FDD(p_DL_DPCHInfo)), + p_ActivationTime)); + + f_UTRAN_CPHY_TrCH_Config(cas_TrChCfgInfo_FDD(p_CellId, + tsc_DL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + p_DL_TrChConfig)); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(utran_CellDedicated, // @sic R5s110216 sic@ + tsc_DL_DPCH1, + cs_UE_Info, + p_DL_TrCHInfo, + p_DL_TrLogMapping, + p_ActivationTime)); + + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_FDD(p_CellId, + tsc_UL_DPCH1, + cs_DPCHInfo_Extension_FDD(cs_UL_DPCHInfo_r10_Extension_FDD(p_UL_DPCH_Info)), + p_ActivationTime)); + + f_UTRAN_CPHY_TrCH_Config(cas_TrChCfgInfo_FDD(p_CellId, + tsc_UL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + p_UL_TrChConfig)); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(utran_CellDedicated, // @sic R5s110216 sic@ + tsc_UL_DPCH1, + cs_UE_Info, + p_UL_TrCHInfo, + p_UL_TrLogMapping, + p_ActivationTime)); + } + + /* + * @desc To set up physical channel DPCH1 and connect DCH1and DCH5 to the physical channel. + * Then map DCCH1-4 on to the DCH5 transport channel and map DTCH1 to the DCH1 transport channel. + * In rel-10 TDD + * @param p_CellId + * @param p_UL_TrChConfig + * @param p_DL_TrChConfig + * @param p_UL_TrCHInfo + * @param p_DL_TrCHInfo + * @param p_UL_TrLogMapping + * @param p_DL_TrLogMapping + * @param p_DL_DPCHInfo + * @param p_UL_DPCH_Info + * @param p_ActTime + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_SS_Config_64kPS_TDD_r10(UTRAN_CellId_Type p_CellId, + template (value) CphyTrchConfigReq_TDD p_UL_TrChConfig, + template (value) CphyTrchConfigReq_TDD p_DL_TrChConfig, + template (value) TrCHInfo_TDD p_UL_TrCHInfo, + template (value) TrCHInfo_TDD p_DL_TrCHInfo, + template (value) TrCH_LogCHMappingList1_TDD p_UL_TrLogMapping, + template (value) TrCH_LogCHMappingList1_TDD p_DL_TrLogMapping, + template (value) DL_DPCH_InfoPerRL_r7 p_DL_DPCHInfo, + template (value) UL_DPCH_Info_r7 p_UL_DPCH_Info, + template (value) SS_ActivationTime p_ActTime) runs on UTRAN_PTC + { + f_UTRAN_CPHY_RL_Modify (cas_RL_Modify_DPCHInfo_TDD(p_CellId, + tsc_DL_DPCH1, + cs_DPCHInfo_Extension_TDD(cs_DL_DPCHInfo_r10_Extension_TDD(cs_DL_DPCH_TDD_r10(p_DL_DPCHInfo))), + p_ActTime)); + + f_UTRAN_CPHY_TrCH_Config (cas_TrChCfgInfo_TDD(p_CellId, + tsc_DL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + p_DL_TrChConfig)); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_TDD(utran_CellDedicated, // @sic R5s120750 sic@ + tsc_DL_DPCH1, + cs_UE_Info, + p_DL_TrCHInfo, + p_DL_TrLogMapping, + p_ActTime)); + + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_TDD (p_CellId, + tsc_UL_DPCH1, + cs_DPCHInfo_UL_TDD (p_UL_DPCH_Info), + p_ActTime)); + + f_UTRAN_CPHY_TrCH_Config(cas_TrChCfgInfo_TDD(p_CellId, + tsc_UL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + p_UL_TrChConfig)); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_TDD(utran_CellDedicated, // @sic R5s120750 sic@ + tsc_UL_DPCH1, + cs_UE_Info, + p_UL_TrCHInfo, + p_UL_TrLogMapping, + p_ActTime)); + } + + /* + * @desc To set up physical channel DPCH1 and connect DCH1and DCH5 to the physical channel. + * Then map DCCH1-4 on to the DCH5 transport channel and map DTCH1 to the DCH1 transport channel. + * In rel-11 + * @param p_CellId + * @param p_UL_TrChConfig + * @param p_DL_TrChConfig + * @param p_UL_TrCHInfo + * @param p_DL_TrCHInfo + * @param p_UL_TrLogMapping + * @param p_DL_TrLogMapping + * @param p_DL_DPCHInfo + * @param p_UL_DPCH_Info + * @param p_ActivationTime + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_SS_Config_64kPS_FDD_r11(UTRAN_CellId_Type p_CellId, + template (value) CphyTrchConfigReq p_UL_TrChConfig, + template (value) CphyTrchConfigReq p_DL_TrChConfig, + template (value) TrCHInfo p_UL_TrCHInfo, + template (value) TrCHInfo p_DL_TrCHInfo, + template (value) TrCH_LogCHMappingList1 p_UL_TrLogMapping, + template (value) TrCH_LogCHMappingList1 p_DL_TrLogMapping, + template (value) DL_DPCHInfo_r11_FDD p_DL_DPCHInfo, + template (value) UL_DPCH_Info_r11 p_UL_DPCH_Info, + template (value) SS_ActivationTime p_ActivationTime) runs on UTRAN_PTC + { + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_FDD(p_CellId, + tsc_DL_DPCH1, + cs_DPCHInfo_Extension_FDD(cs_DL_DPCHInfo_r11_Extension_FDD(p_DL_DPCHInfo)), + p_ActivationTime)); + + f_UTRAN_CPHY_TrCH_Config(cas_TrChCfgInfo_FDD(p_CellId, + tsc_DL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + p_DL_TrChConfig)); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(utran_CellDedicated, + tsc_DL_DPCH1, + cs_UE_Info, + p_DL_TrCHInfo, + p_DL_TrLogMapping, + p_ActivationTime)); + + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_FDD(p_CellId, + tsc_UL_DPCH1, + cs_DPCHInfo_Extension_FDD(cs_UL_DPCHInfo_r11_Extension_FDD(p_UL_DPCH_Info)), + p_ActivationTime)); + + f_UTRAN_CPHY_TrCH_Config(cas_TrChCfgInfo_FDD(p_CellId, + tsc_UL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + p_UL_TrChConfig)); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(utran_CellDedicated, + tsc_UL_DPCH1, + cs_UE_Info, + p_UL_TrCHInfo, + p_UL_TrLogMapping, + p_ActivationTime)); + } + + /* + * @desc To set up physical channel DPCH1 and connect DCH1and DCH5 to the physical channel. + * Then map DCCH1-4 on to the DCH5 transport channel and map DTCH1 to the DCH1 transport channel. + * In rel-11 TDD + * @param p_CellId + * @param p_UL_TrChConfig + * @param p_DL_TrChConfig + * @param p_UL_TrCHInfo + * @param p_DL_TrCHInfo + * @param p_UL_TrLogMapping + * @param p_DL_TrLogMapping + * @param p_DL_DPCHInfo + * @param p_UL_DPCH_Info + * @param p_ActTime + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_SS_Config_64kPS_TDD_r11(UTRAN_CellId_Type p_CellId, + template (value) CphyTrchConfigReq_TDD p_UL_TrChConfig, + template (value) CphyTrchConfigReq_TDD p_DL_TrChConfig, + template (value) TrCHInfo_TDD p_UL_TrCHInfo, + template (value) TrCHInfo_TDD p_DL_TrCHInfo, + template (value) TrCH_LogCHMappingList1_TDD p_UL_TrLogMapping, + template (value) TrCH_LogCHMappingList1_TDD p_DL_TrLogMapping, + template (value) DL_DPCHInfo_r11_TDD p_DL_DPCHInfo, + template (value) UL_DPCH_Info_r11 p_UL_DPCH_Info, + template (value) SS_ActivationTime p_ActTime) runs on UTRAN_PTC + { + f_UTRAN_CPHY_RL_Modify (cas_RL_Modify_DPCHInfo_TDD(p_CellId, + tsc_DL_DPCH1, + cs_DPCHInfo_Extension_TDD(cs_DL_DPCHInfo_r11_Extension_TDD(p_DL_DPCHInfo,omit)), + p_ActTime)); + + f_UTRAN_CPHY_TrCH_Config (cas_TrChCfgInfo_TDD(p_CellId, + tsc_DL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + p_DL_TrChConfig)); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_TDD(utran_CellDedicated, // @sic R5s120750 sic@ + tsc_DL_DPCH1, + cs_UE_Info, + p_DL_TrCHInfo, + p_DL_TrLogMapping, + p_ActTime)); + + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_TDD(p_CellId, + tsc_UL_DPCH1, + cs_DPCHInfo_Extension_TDD(cs_UL_DPCHInfo_r11_Extension_TDD(p_UL_DPCH_Info)), + p_ActTime)); + + f_UTRAN_CPHY_TrCH_Config(cas_TrChCfgInfo_TDD(p_CellId, + tsc_UL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + p_UL_TrChConfig)); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_TDD(utran_CellDedicated, // @sic R5s120750 sic@ + tsc_UL_DPCH1, + cs_UE_Info, + p_UL_TrCHInfo, + p_UL_TrLogMapping, + p_ActTime)); + } + + /* + * @desc To set up physical channel DPCH1 and connect DCH1and DCH5 to the physical channel. + * Then map DCCH1-4 on to the DCH5 transport channel and map DTCH1 to the DCH1 transport channel. + * @param p_CellId + * @param p_UL_TrChConfig + * @param p_DL_TrChConfig + * @param p_UL_TrCHInfo + * @param p_DL_TrCHInfo + * @param p_UL_TrLogMapping + * @param p_DL_TrLogMapping + * @param p_DL_DPCHInfo + * @param p_UL_DPCH_Info + * @param p_ActTime + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_SS_Config_64kPS_TDD(UTRAN_CellId_Type p_CellId, + template (value) CphyTrchConfigReq_TDD p_UL_TrChConfig, + template (value) CphyTrchConfigReq_TDD p_DL_TrChConfig, + template (value) TrCHInfo_TDD p_UL_TrCHInfo, + template (value) TrCHInfo_TDD p_DL_TrCHInfo, + template (value) TrCH_LogCHMappingList1_TDD p_UL_TrLogMapping, + template (value) TrCH_LogCHMappingList1_TDD p_DL_TrLogMapping, + template (value) DL_DPCHInfo_r8_TDD p_DL_DPCHInfo, + template (value) UL_DPCH_Info_r7 p_UL_DPCH_Info, + template (value) SS_ActivationTime p_ActTime) runs on UTRAN_PTC + { + f_UTRAN_CPHY_RL_Modify (cas_RL_Modify_DPCHInfo_TDD(p_CellId, + tsc_DL_DPCH1, + cs_DPCHInfo_DL_TDD (p_DL_DPCHInfo), + p_ActTime)); + + f_UTRAN_CPHY_TrCH_Config (cas_TrChCfgInfo_TDD(p_CellId, + tsc_DL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + p_DL_TrChConfig)); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_TDD(utran_CellDedicated, // @sic R5s120750 sic@ + tsc_DL_DPCH1, + cs_UE_Info, + p_DL_TrCHInfo, + p_DL_TrLogMapping, + p_ActTime)); + + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_TDD (p_CellId, + tsc_UL_DPCH1, + cs_DPCHInfo_UL_TDD (p_UL_DPCH_Info), + p_ActTime)); + + f_UTRAN_CPHY_TrCH_Config(cas_TrChCfgInfo_TDD(p_CellId, + tsc_UL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + p_UL_TrChConfig)); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_TDD(utran_CellDedicated, // @sic R5s120750 sic@ + tsc_UL_DPCH1, + cs_UE_Info, + p_UL_TrCHInfo, + p_UL_TrLogMapping, + p_ActTime)); + } + + /* + * @desc If no activation time is specified "now" will be used. This is to be used for HOs to UTRAN. + * @param p_CellId + * @param p_ActTime (default value: cs_ActivateNow) + * @param p_LoopbackRLC_PDU (default value: false) + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_SS_Config_64kPS_RAB(UTRAN_CellId_Type p_CellId, + template (value) SS_ActivationTime p_ActTime := cs_ActivateNow, + boolean p_LoopbackRLC_PDU := false) // @sic R5s130195 PDCP sic@ + runs on UTRAN_PTC + { + var UL_ScramblingCode v_UL_ScramblingCode; + + select (f_UTRAN_ConfigurationInfo_TestCaseRelease_Get()) { // @sic R5s130195 Utran Release sic@ + case (FDDr8, FDDr9) { + // Configure SS for cell_DCH_64kPS_RAB_SRB configuration + // Same reconfiguration for FDDr8 and FDDr9 + v_UL_ScramblingCode := f_UTRAN_CellInfo_GetULScrmCode_FDD(p_CellId); + f_SS_Config_64kPS_FDD(p_CellId, + cs_CphyTrchConfigReq_UL_TrCh_FDD(p_ActTime, + cs_DCH_336_148_UL_Info_FDD, + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + cs_CphyTrchConfigReq_DL_TrCh_FDD(p_ActTime, + cs_DCH_336_148_DL_Info_FDD, + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Tx(cs_PowerOffsetInfoHigher64k)), + cs_TrCHInfo_UL_TrCh_FDD(cs_TrChInfoTrCHListUL_336_148_FDD, + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + cs_TrCHInfo_DL_TrCh_FDD(cs_TrChInfoTrCHListDL_336_148_FDD, + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Tx(cs_PowerOffsetInfoHigher64k)), + cs_TrLogMappingUL_4DCCH_1DTCH(tsc_RB20), + cs_TrLogMappingDL_4DCCH_1DTCH_PS, + cs_DL_DPCH_FDD(cs_DL_CommonInformationRB_SetUp_FDD(tsc_DL_DPCH1_SFP_64k_PS, flexible), + tsc_DL_DPCH1_ChC_64k_PS, + -, + tsc_DL_TxPower_DPCH_64k), + cs_UL_DPCH_Info_FDD(tsc_UL_DPDCH_SF_64k_PS, + pl0_96, + v_UL_ScramblingCode), p_ActTime); + } + case (FDDr10) { + // Configure SS for cell_DCH_64kPS_RAB_SRB configuration + v_UL_ScramblingCode := f_UTRAN_CellInfo_GetULScrmCode_FDD(p_CellId); + f_SS_Config_64kPS_FDD_r10(p_CellId, + cs_CphyTrchConfigReq_UL_TrCh_FDD(p_ActTime, + cs_DCH_336_148_UL_Info_FDD, + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + cs_CphyTrchConfigReq_DL_TrCh_FDD(p_ActTime, + cs_DCH_336_148_DL_Info_FDD, + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Tx(cs_PowerOffsetInfoHigher64k)), + cs_TrCHInfo_UL_TrCh_FDD(cs_TrChInfoTrCHListUL_336_148_FDD, + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + cs_TrCHInfo_DL_TrCh_FDD(cs_TrChInfoTrCHListDL_336_148_FDD, + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Tx(cs_PowerOffsetInfoHigher64k)), + cs_TrLogMappingUL_4DCCH_1DTCH(tsc_RB20), + cs_TrLogMappingDL_4DCCH_1DTCH_PS, + cs_DL_DPCH_FDD_r10(cs_DL_CommonInformationRB_SetUp_FDD_r10(tsc_DL_DPCH1_SFP_64k_PS, flexible), + tsc_DL_DPCH1_ChC_64k_PS, + -, + tsc_DL_TxPower_DPCH_64k), + cs_UL_DPCH_Info_FDD(tsc_UL_DPDCH_SF_64k_PS, + pl0_96, + v_UL_ScramblingCode), p_ActTime); + } + case (FDDr11) { + // Configure SS for cell_DCH_64kPS_RAB_SRB configuration + v_UL_ScramblingCode := f_UTRAN_CellInfo_GetULScrmCode_FDD(p_CellId); + f_SS_Config_64kPS_FDD_r11(p_CellId, + cs_CphyTrchConfigReq_UL_TrCh_FDD(p_ActTime, + cs_DCH_336_148_UL_Info_FDD, + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + cs_CphyTrchConfigReq_DL_TrCh_FDD(p_ActTime, + cs_DCH_336_148_DL_Info_FDD, + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Tx(cs_PowerOffsetInfoHigher64k)), + cs_TrCHInfo_UL_TrCh_FDD(cs_TrChInfoTrCHListUL_336_148_FDD, + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + cs_TrCHInfo_DL_TrCh_FDD(cs_TrChInfoTrCHListDL_336_148_FDD, + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Tx(cs_PowerOffsetInfoHigher64k)), + cs_TrLogMappingUL_4DCCH_1DTCH(tsc_RB20), + cs_TrLogMappingDL_4DCCH_1DTCH_PS, + cs_DL_DPCH_FDD_r11(cs_DL_CommonInformationRB_SetUp_FDD_r11(tsc_DL_DPCH1_SFP_64k_PS, flexible), + tsc_DL_DPCH1_ChC_64k_PS, + -, + tsc_DL_TxPower_DPCH_64k), + cs_UL_DPCH_Info_FDD_r11(tsc_UL_DPDCH_SF_64k_PS, + pl0_96, + v_UL_ScramblingCode), p_ActTime); + } + case (TDDr9){ + // Step 1: Configure a dedicated channel in the UTRAN TDD configuration according to 34.108 cl. 6.11.5.4.1.26 + f_SS_Config_64kPS_TDD(p_CellId, + cs_CphyTrchConfigReq_UL_TrCh_TDD(p_ActTime, + cs_DCH_336_148_UL_Info_TDD, + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + cs_CphyTrchConfigReq_DL_TrCh_TDD(p_ActTime, + cs_DCH_336_148_DL_Info_TDD, + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Tx(cs_PowerOffsetInfo_TDD)), + cs_TrChInfoUL_336_148_TDD, + cs_TrChInfoDL_336_148_TDD, + cs_TrLogMappingUL_4DCCH_1DTCH_TDD(tsc_RB20), + cs_TrLogMappingDL_4DCCH_1DTCH_PS_TDD, + cs_DL_DPCH_64k_PS_TDD, + cs_UL_DPCH_64k_PS_TDD, + p_ActTime); + } + case (TDDr10){ + f_SS_Config_64kPS_TDD_r10(p_CellId, + cs_CphyTrchConfigReq_UL_TrCh_TDD(p_ActTime, + cs_DCH_336_148_UL_Info_TDD, + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + cs_CphyTrchConfigReq_DL_TrCh_TDD(p_ActTime, + cs_DCH_336_148_DL_Info_TDD, + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Tx(cs_PowerOffsetInfo_TDD)), + cs_TrChInfoUL_336_148_TDD, + cs_TrChInfoDL_336_148_TDD, + cs_TrLogMappingUL_4DCCH_1DTCH_TDD(tsc_RB20), + cs_TrLogMappingDL_4DCCH_1DTCH_PS_TDD, + cs_DL_DPCH_InfoPerRL_r7_64k_PS_TDD, + cs_UL_DPCH_64k_PS_TDD, + p_ActTime); + } + case (TDDr11){ + f_SS_Config_64kPS_TDD_r11(p_CellId, + cs_CphyTrchConfigReq_UL_TrCh_TDD(p_ActTime, + cs_DCH_336_148_UL_Info_TDD, + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + cs_CphyTrchConfigReq_DL_TrCh_TDD(p_ActTime, + cs_DCH_336_148_DL_Info_TDD, + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Tx(cs_PowerOffsetInfo_TDD)), + cs_TrChInfoUL_336_148_TDD, + cs_TrChInfoDL_336_148_TDD, + cs_TrLogMappingUL_4DCCH_1DTCH_TDD(tsc_RB20), + cs_TrLogMappingDL_4DCCH_1DTCH_PS_TDD, + cs_DL_DPCH_TDD_r11(cs_DL_DPCH_InfoPerRL_r7_64k_PS_TDD), + cs_UL_DPCH_64k_PS_TDD_r11, + p_ActTime); + } + case else { + FatalError(__FILE__, __LINE__, "Not a valid message class"); + } + } + + // Setup radio bearer B20. + //* Default values from 34.108 cl. 6.10.2.4.4 and 6.10.2.4.3.3 + f_UTRAN_SS_RB20_AM_PS_Cfg(p_CellId, cs_OctetModeRLC_Size336); + + // Configure PDCP when there is no loopback of RLC PDU @sic R5s130195 PDCP sic@ + if (not(p_LoopbackRLC_PDU)) { + f_SS_RB_ConfigurePDCP(p_CellId, tsc_RB20); + } + + f_UTRAN_CellInfo_SetConfigType(p_CellId, cell_DCH_64kPS_RAB_SRB); + } + + /* + * @desc If no activation time is specified "now" will be used. This is to be used for HOs to UTRAN. + * @param p_CellId + * @param p_ActTime (default value: cs_ActivateNow) + * @param p_LoopbackRLC_PDU (default value: false) + * @status APPROVED (LTE_IRAT) + */ + function f_SS_Config_64kPS_DCH4_RAB(UTRAN_CellId_Type p_CellId, + template (value) SS_ActivationTime p_ActTime := cs_ActivateNow, + boolean p_LoopbackRLC_PDU := false) // @sic R5s130195 PDCP sic@ + runs on UTRAN_PTC + { + var UL_ScramblingCode v_UL_ScramblingCode; + var UTRAN_FDD_TDD_Type v_FDD_TDD_Mode := f_UTRAN_CellInfo_GetFDD_TDD(p_CellId); + + if (v_FDD_TDD_Mode == UTRAN_FDD) { + + v_UL_ScramblingCode := f_UTRAN_CellInfo_GetULScrmCode_FDD(p_CellId); + select (f_UTRAN_ConfigurationInfo_TestCaseRelease_Get()) { // @sic R5s130195 Utran Release sic@ + case (FDDr8, FDDr9) { + // Configure SS for cell_DCH_64kPS_RAB_SRB configuration + f_SS_Config_64kPS_FDD(p_CellId, + cs_CphyTrchConfigReq_UL_TrCh_FDD(p_ActTime, + cs_DCH_336_148_UL_Info_FDD(tsc_UL_DCH4), + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + cs_CphyTrchConfigReq_DL_TrCh_FDD(p_ActTime, + cs_DCH_336_148_DL_Info_FDD(tsc_DL_DCH4), + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Tx(cs_PowerOffsetInfoHigher64k)), + cs_TrCHInfo_UL_TrCh_FDD(cs_TrChInfoTrCHListUL_336_148_FDD(tsc_UL_DCH4), + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + cs_TrCHInfo_DL_TrCh_FDD(cs_TrChInfoTrCHListDL_336_148_FDD(tsc_DL_DCH4), + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Tx(cs_PowerOffsetInfoHigher64k)), + cs_TrLogMappingUL_4DCCH_1DTCH(tsc_RB20, tsc_UL_DCH4,tsc_UL_DTCH4), //@sic R5s120455 sic@ + cs_TrLogMappingDL_4DCCH_1DTCH_PS (tsc_DL_DCH4,tsc_DL_DTCH4), + cs_DL_DPCH_FDD(cs_DL_CommonInformationRB_SetUp_FDD(tsc_DL_DPCH1_SFP_64k_PS, flexible), + tsc_DL_DPCH1_ChC_64k_PS, + -, + tsc_DL_TxPower_DPCH_64k), + cs_UL_DPCH_Info_FDD(tsc_UL_DPDCH_SF_64k_PS, + pl0_96, + v_UL_ScramblingCode), p_ActTime); + } + case (FDDr10) { + // Configure SS for cell_DCH_64kPS_RAB_SRB configuration + f_SS_Config_64kPS_FDD_r10(p_CellId, + cs_CphyTrchConfigReq_UL_TrCh_FDD(p_ActTime, + cs_DCH_336_148_UL_Info_FDD(tsc_UL_DCH4), + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + cs_CphyTrchConfigReq_DL_TrCh_FDD(p_ActTime, + cs_DCH_336_148_DL_Info_FDD(tsc_DL_DCH4), + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Tx(cs_PowerOffsetInfoHigher64k)), + cs_TrCHInfo_UL_TrCh_FDD(cs_TrChInfoTrCHListUL_336_148_FDD(tsc_UL_DCH4), + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + cs_TrCHInfo_DL_TrCh_FDD(cs_TrChInfoTrCHListDL_336_148_FDD(tsc_DL_DCH4), + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Tx(cs_PowerOffsetInfoHigher64k)), + cs_TrLogMappingUL_4DCCH_1DTCH(tsc_RB20, tsc_UL_DCH4,tsc_UL_DTCH4), //@sic R5s120455 sic@ + cs_TrLogMappingDL_4DCCH_1DTCH_PS (tsc_DL_DCH4,tsc_DL_DTCH4), + cs_DL_DPCH_FDD_r10(cs_DL_CommonInformationRB_SetUp_FDD_r10(tsc_DL_DPCH1_SFP_64k_PS, flexible), + tsc_DL_DPCH1_ChC_64k_PS, + -, + tsc_DL_TxPower_DPCH_64k), + cs_UL_DPCH_Info_FDD(tsc_UL_DPDCH_SF_64k_PS, + pl0_96, + v_UL_ScramblingCode), p_ActTime); + } + case ( FDDr11) { + // Configure SS for cell_DCH_64kPS_RAB_SRB configuration + f_SS_Config_64kPS_FDD_r11(p_CellId, + cs_CphyTrchConfigReq_UL_TrCh_FDD(p_ActTime, + cs_DCH_336_148_UL_Info_FDD(tsc_UL_DCH4), + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + cs_CphyTrchConfigReq_DL_TrCh_FDD(p_ActTime, + cs_DCH_336_148_DL_Info_FDD(tsc_DL_DCH4), + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Tx(cs_PowerOffsetInfoHigher64k)), + cs_TrCHInfo_UL_TrCh_FDD(cs_TrChInfoTrCHListUL_336_148_FDD(tsc_UL_DCH4), + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + cs_TrCHInfo_DL_TrCh_FDD(cs_TrChInfoTrCHListDL_336_148_FDD(tsc_DL_DCH4), + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Tx(cs_PowerOffsetInfoHigher64k)), + cs_TrLogMappingUL_4DCCH_1DTCH(tsc_RB20, tsc_UL_DCH4,tsc_UL_DTCH4), //@sic R5s120455 sic@ + cs_TrLogMappingDL_4DCCH_1DTCH_PS (tsc_DL_DCH4,tsc_DL_DTCH4), + cs_DL_DPCH_FDD_r11(cs_DL_CommonInformationRB_SetUp_FDD_r11(tsc_DL_DPCH1_SFP_64k_PS, flexible), + tsc_DL_DPCH1_ChC_64k_PS, + -, + tsc_DL_TxPower_DPCH_64k), + cs_UL_DPCH_Info_FDD_r11(tsc_UL_DPDCH_SF_64k_PS, + pl0_96, + v_UL_ScramblingCode), p_ActTime); + + } + case else { FatalError(__FILE__, __LINE__, "FDD release not supported");} + } + } else if (v_FDD_TDD_Mode == UTRAN_TDD) { + // Step 1: Configure a dedicated channel in the UTRAN TDD configuration according to 34.108 cl. 6.11.5.4.1.26 + select (f_UTRAN_ConfigurationInfo_TestCaseRelease_Get()) { // @sic R5s130195 Utran Release sic@ + case (TDDr9) { + f_SS_Config_64kPS_TDD(p_CellId, + cs_CphyTrchConfigReq_UL_TrCh_TDD(p_ActTime, + cs_DCH_336_148_UL_Info_TDD(tsc_UL_DCH4), //@sic R5s130662 sic@ + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + cs_CphyTrchConfigReq_DL_TrCh_TDD(p_ActTime, + cs_DCH_336_148_DL_Info_TDD(tsc_DL_DCH4),//@sic R5s130662, R5s140476 sic@ + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Tx(cs_PowerOffsetInfo_TDD)), + cs_TrCHInfo_UL_TrCh_TDD(cs_TrChInfoTrCHListUL_336_148_TDD(tsc_UL_DCH4),//@sic R5s130662 sic@ + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + cs_TrCHInfo_DL_TrCh_TDD(cs_TrChInfoTrCHListDL_336_148_TDD(tsc_DL_DCH4), //@sic R5s130662 sic@ + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Tx(cs_PowerOffsetInfo_TDD)), + cs_TrLogMappingUL_4DCCH_1DTCH_TDD(tsc_RB20, tsc_UL_DCH4,tsc_UL_DTCH4), //@sic R5s120455 sic@ + cs_TrLogMappingDL_4DCCH_1DTCH_PS_TDD (tsc_DL_DCH4,tsc_DL_DTCH4), + cs_DL_DPCH_64k_PS_TDD, + cs_UL_DPCH_64k_PS_TDD, + p_ActTime); + } + case (TDDr10) { + f_SS_Config_64kPS_TDD_r10(p_CellId, + cs_CphyTrchConfigReq_UL_TrCh_TDD(p_ActTime, + cs_DCH_336_148_UL_Info_TDD(tsc_UL_DCH4), //@sic R5s130662 sic@ + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + cs_CphyTrchConfigReq_DL_TrCh_TDD(p_ActTime, + cs_DCH_336_148_DL_Info_TDD(tsc_DL_DCH4),//@sic R5s130662, R5s140476 sic@ + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Tx(cs_PowerOffsetInfo_TDD)), + cs_TrCHInfo_UL_TrCh_TDD(cs_TrChInfoTrCHListUL_336_148_TDD(tsc_UL_DCH4),//@sic R5s130662 sic@ + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + cs_TrCHInfo_DL_TrCh_TDD(cs_TrChInfoTrCHListDL_336_148_TDD(tsc_DL_DCH4), //@sic R5s130662 sic@ + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Tx(cs_PowerOffsetInfo_TDD)), + cs_TrLogMappingUL_4DCCH_1DTCH_TDD(tsc_RB20, tsc_UL_DCH4,tsc_UL_DTCH4), //@sic R5s120455 sic@ + cs_TrLogMappingDL_4DCCH_1DTCH_PS_TDD (tsc_DL_DCH4,tsc_DL_DTCH4), + cs_DL_DPCH_InfoPerRL_r7_64k_PS_TDD, + cs_UL_DPCH_64k_PS_TDD, + p_ActTime); + } + case (TDDr11) { + f_SS_Config_64kPS_TDD_r11(p_CellId, + cs_CphyTrchConfigReq_UL_TrCh_TDD(p_ActTime, + cs_DCH_336_148_UL_Info_TDD(tsc_UL_DCH4), //@sic R5s130662 sic@ + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + cs_CphyTrchConfigReq_DL_TrCh_TDD(p_ActTime, + cs_DCH_336_148_DL_Info_TDD(tsc_DL_DCH4),//@sic R5s130662, R5s140476 sic@ + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Tx(cs_PowerOffsetInfo_TDD)), + cs_TrCHInfo_UL_TrCh_TDD(cs_TrChInfoTrCHListUL_336_148_TDD(tsc_UL_DCH4),//@sic R5s130662 sic@ + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + cs_TrCHInfo_DL_TrCh_TDD(cs_TrChInfoTrCHListDL_336_148_TDD(tsc_DL_DCH4), //@sic R5s130662 sic@ + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Tx(cs_PowerOffsetInfo_TDD)), + cs_TrLogMappingUL_4DCCH_1DTCH_TDD(tsc_RB20, tsc_UL_DCH4,tsc_UL_DTCH4), //@sic R5s120455 sic@ + cs_TrLogMappingDL_4DCCH_1DTCH_PS_TDD (tsc_DL_DCH4,tsc_DL_DTCH4), + cs_DL_DPCH_TDD_r11(cs_DL_DPCH_InfoPerRL_r7_64k_PS_TDD), + cs_UL_DPCH_64k_PS_TDD_r11, + p_ActTime); + } + case else { FatalError(__FILE__, __LINE__, "TDD release not supported");} + } + } + + // Setup radio bearer B20. + // Default values from 34.108 cl. 6.10.2.4.4 and 6.10.2.4.3.3 + f_UTRAN_SS_RB20_AM_PS_Cfg(p_CellId, cs_OctetModeRLC_Size336,tsc_UL_DTCH4,tsc_DL_DTCH4); //@sic R5s120455 sic@ + + // Configure PDCP when there is no loopback of RLC PDU @sic R5s130195 PDCP sic@ + if (not(p_LoopbackRLC_PDU)) { + f_SS_RB_ConfigurePDCP(p_CellId, tsc_RB20); + } + + f_UTRAN_CellInfo_SetConfigType(p_CellId, cell_DCH_64kPS_RAB_SRB); + } + + /* + * @desc Function to receive the Service Request message + * @param p_CN_Domain + * @param p_Type (default value: ?) + * @status APPROVED (LTE_A, LTE_IRAT, UTRAN) + */ + function f_UTRAN_GMM_ServReq(CN_DomainIdentity p_CN_Domain, + template (present) B3_Type p_Type := ?) runs on UTRAN_PTC + { + var START_Value v_START_Value := '00000000000000000000'B; + var RRC_DATA_IND v_RRC_DataInd; + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + var KeySeq v_KeySeqPs := v_SecurityInfo.authKeys.AuthPS.KeySeq; + + alt { + [p_CN_Domain == cs_domain] U_Dc.receive(car_InitDirectTransfer(utran_CellDedicated, // @sic R5s110465 sic@ + tsc_RB3, + cr_U_ServReqAny (p_Type))) + -> value v_RRC_DataInd {} + [p_CN_Domain == ps_domain] U_Dc.receive(car_PS_InitDirectTransfer(utran_CellDedicated, // @sic R5s110465 sic@ + tsc_RB3, + cr_U_ServiceRequest(cr_ServiceType(p_Type), + cs_MobileIdTMSIorPTMSI (omit, px_PTMSI_Def), // @sic R5s110466 sic@ + v_KeySeqPs))) + -> value v_RRC_DataInd {} + } + v_START_Value := v_RRC_DataInd.ttcn_start; + f_UTRAN_SS_SecurityDownloadStart(p_CN_Domain, v_START_Value); + } + + /* + * @desc Function for receiving the Activate PDP Request from UE + * @param p_ExpectedQualityOfService + * @return ACTIVATEPDPCONTEXTREQUESTul + * @status APPROVED (LTE_IRAT, UTRAN) + */ + function f_UTRAN_PS_SessionAct_ReceivePDP_Req(template (present) QualityOfService p_ExpectedQualityOfService := cr_QualityOfService_Any) runs on UTRAN_PTC return ACTIVATEPDPCONTEXTREQUESTul + { + var RRC_DATA_IND v_RRC_DataInd; + + U_Dc.receive(car_PS_UplinkDirectTransfer(utran_CellDedicated, // @sic R5s110465 sic@ + tsc_RB3, + cr_U_ActPDP_ContextReqMo(p_ExpectedQualityOfService))) // @sic R5s110771 sic@ + -> value v_RRC_DataInd; + + return v_RRC_DataInd.msg.activatePDPContextRequestul; + } + + + /* + * @desc Increments the currently stored start value by 2, so as to emulate the 25.331 clause 8.5.9 + * This mechanism will not work if more than 4096 messages [FRame numbers for TM mode in MAC] have been passed since last transmission + * @param p_Start + * @return START_Value + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_CalculateStartValue_ConnectedMode(START_Value p_Start) return START_Value + { + var START_Value v_START_Value := int2bit((bit2int(p_Start) + 2), 20); + return v_START_Value; + }; + + + /* + * @desc Function to configure security in SS for the newly established + * Radio Bearer, before receiving the Radio Bearer Setup Complete message from UE + * @param p_CellId + * @param p_Cn_DomainIdentity + * @param p_RbType + * @param p_KC + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_UTRAN_SS_CipheringAM_RAB_UL_DL(UTRAN_CellId_Type p_CellId, + CN_DomainIdentity p_Cn_DomainIdentity, + RB_ConfigType p_RbType, + template (omit) KeyCiphering p_KC) runs on UTRAN_PTC + { + var RLC_SequenceNumber v_RLC_SNs := 0; + var template (value) RB_ActivationTimeInfoList v_RB_ActivationTimeInfoList; + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + + select (p_RbType) { + case (cell_FACH_PS, cell_DCH_64kPS_RAB_SRB) { + v_RB_ActivationTimeInfoList := cs_RB_ActTimeInfoList20(v_RLC_SNs); + } + // HSD configurations: + case (cell_DCH_HS_DSCH) { + v_RB_ActivationTimeInfoList := cs_RB_ActTimeInfoList25(v_RLC_SNs); + } + // HSU configurations: + case (cell_DCH_E_HS, + cell_E_HS, + cell_DCH_dlSRB_E_HS, + cell_FACH_HS) { + v_RB_ActivationTimeInfoList := cs_RB_ActTimeInfoList25(v_RLC_SNs); + } + case else { + FatalError(__FILE__, __LINE__, "Configuaration not supported"); + } + } + + f_UTRAN_CRLC_SecurityMode_Config(v_SecurityInfo.recentSecureDomain, + v_SecurityInfo.start_PS, + p_KC); //@sic R5s110210 sic@ + + f_UTRAN_CRLC_DL_CipherCfgRB(p_CellId, + p_Cn_DomainIdentity, + v_SecurityInfo.dL_CipherMode, + p_RbType, + false); //Do not suspend RLC since RB is established only + + f_UTRAN_ActivateCiphering_RLC_UL(f_UTRAN_CellInfo_GetFDD_TDD(p_CellId), ps_domain, v_RB_ActivationTimeInfoList); + } + + /* + * @desc To be used when CS RAB bearer is set up and security has been activated for CS. + * Function will + * - config security at S for the RB SetUp Complete message + * - receive the Radio Bearer Setup Complete message + * - configure security in SS + * @param p_CellId + * @param p_ActivationTime + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_ReceiveRB_SetupCmpl_CipheringStartedTM_RAB(UTRAN_CellId_Type p_CellId, //@sic R5s130243 sic@ + ActivationTime p_ActivationTime) runs on UTRAN_PTC + { + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + var ActivationTime v_NewCipheringActTime; + var U_RLC_AM_IND v_U_RLC_AM_IND; + + f_UTRAN_CMAC_SecurityMode_Config(v_SecurityInfo.recentSecureDomain, + v_SecurityInfo.start_CS, + v_SecurityInfo.authKeys.AuthCS.CKey); + + f_UTRAN_CMAC_UL_DL_CipherCfg(p_CellId, + v_SecurityInfo.dL_CipherMode, + p_ActivationTime, + notInc); + + //Receive Radio Bearer Setup Complete message + U_AM.receive(car_RLC_Data_Ind(utran_CellDedicated, + tsc_RB2, + cr_108_RB_SetUpCmpl(tsc_RRC_TI))) -> value v_U_RLC_AM_IND; + + v_NewCipheringActTime := v_U_RLC_AM_IND.data.aM_message.uL_DCCH_Message.message_.radioBearerSetupComplete.count_C_ActivationTime; + v_SecurityInfo.start_CS := v_U_RLC_AM_IND.data.aM_message.uL_DCCH_Message.message_.radioBearerSetupComplete.start_Value; + f_UTRAN_CMAC_SecurityMode_Config(v_SecurityInfo.recentSecureDomain, + v_SecurityInfo.start_CS, + v_SecurityInfo.authKeys.AuthCS.CKey); + + f_UTRAN_CMAC_UL_DL_CipherCfg(p_CellId, + v_SecurityInfo.dL_CipherMode, + p_ActivationTime, + notInc); + + //Store the security information + f_UTRAN_Security_Set(v_SecurityInfo); + } + + /* + * @desc To be used when CS RAB bearer is set up and security has not yet been activated for CR. + * Function will + * - receive the Radio Bearer Setup Complete message + * - configure security in SS if USIM is present in UE + * @param p_CellId + * @param p_USIM + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_ReceiveRB_SetupCmpl_CipheringNotStartedTM_RAB(UTRAN_CellId_Type p_CellId, //@sic R5s130243 sic@ + boolean p_USIM) runs on UTRAN_PTC + { + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + var ActivationTime v_NewCipheringActTime; + var U_RLC_AM_IND v_U_RLC_AM_IND; + + //Receive Radio Bearer Setup Complete message + alt{ + //No start value. No RB UL cipher + [] U_AM.receive(car_RLC_Data_Ind(utran_CellDedicated, + tsc_RB2, + cr_108_RB_SetUpCmpl(tsc_RRC_TI, omit))) -> value v_U_RLC_AM_IND + { } + //A new start value is provided + [] U_AM.receive(car_RLC_Data_Ind(utran_CellDedicated, + tsc_RB2, + cr_108_RB_SetUpCmpl(tsc_RRC_TI))) -> value v_U_RLC_AM_IND + { + v_SecurityInfo.start_CS := v_U_RLC_AM_IND.data.aM_message.uL_DCCH_Message.message_.radioBearerSetupComplete.start_Value; + } + } + if (p_USIM) { //USIM present in UE + v_NewCipheringActTime := v_U_RLC_AM_IND.data.aM_message.uL_DCCH_Message.message_.radioBearerSetupComplete.count_C_ActivationTime; + + f_UTRAN_CMAC_SecurityMode_Config(v_SecurityInfo.recentSecureDomain, + v_SecurityInfo.start_CS); + f_UTRAN_CMAC_UL_DL_CipherCfg (p_CellId, + v_SecurityInfo.dL_CipherMode, + v_NewCipheringActTime, + notInc); + } + + //Store the security information + f_UTRAN_Security_Set(v_SecurityInfo); + } + + /* + * @desc To receive the RB Setup complete message for speech and perform associated Security configuration in SS + * @param p_CellId + * @param p_ActivationTime + * @param p_USIM (default value: true) + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_RRC_ReceiveRB_SetupCmpl_Speech (UTRAN_CellId_Type p_CellId, //@sic R5s130243 sic@ + ActivationTime p_ActivationTime, //@sic R5s110210 sic@ + boolean p_USIM := true) //@sic R5s110210 sic@ + runs on UTRAN_PTC + { /* @sic R5s120139 - Additional Changes sic@ */ + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + + if ((v_SecurityInfo.cs_cipheringStarted == true)) { + f_UTRAN_ReceiveRB_SetupCmpl_CipheringStartedTM_RAB(p_CellId, p_ActivationTime); //@sic R5s110210 sic@ + } + else if (v_SecurityInfo.cs_cipheringStarted == false) { + f_UTRAN_ReceiveRB_SetupCmpl_CipheringNotStartedTM_RAB(p_CellId, p_USIM); //@sic R5s110210 sic@ + } + } + + /* + * @desc To receive the RB Setup complete message for PS RAB and perform associated Security configuration in SS + * @param p_CellId + * @param p_RbType + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_UTRAN_RRC_ReceiveRB_SetupCmpl_PS_RAB(UTRAN_CellId_Type p_CellId, + RB_ConfigType p_RbType) runs on UTRAN_PTC + { /* @sic R5s120139 - Additional Changes sic@ */ + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + var boolean v_CipheringNotStarted := not ((v_SecurityInfo.ps_cipheringStarted == true) and + (v_SecurityInfo.recentSecureDomain == ps_domain)); + var U_RLC_AM_IND v_U_RLC_AM_IND; + + alt { + [v_CipheringNotStarted] U_AM.receive(car_RLC_Data_Ind(utran_CellDedicated, //@sic R5s110210 sic@ + tsc_RB2, + cr_108_RB_SetUpCmpl(tsc_RRC_TI, omit))) // no START value sent by the UE + {} // No start value, no RB UL cipher + [] U_AM.receive(car_RLC_Data_Ind(utran_CellDedicated, //@sic R5s110210 sic@ + tsc_RB2, + cr_108_RB_SetUpCmpl(tsc_RRC_TI))) + -> value v_U_RLC_AM_IND + { //A new start value is provided + v_SecurityInfo.start_PS := v_U_RLC_AM_IND.data.aM_message.uL_DCCH_Message.message_.radioBearerSetupComplete.start_Value; + f_UTRAN_Security_Set(v_SecurityInfo); + } + } + + f_UTRAN_SS_CipheringAM_RAB_UL_DL(p_CellId, v_SecurityInfo.recentSecureDomain, p_RbType, v_SecurityInfo.authKeys.AuthPS.CK); //@sic R5s130512 sic@ + } + + /* + * @desc to modify physical channel DPCH1and connect DCH1, DCH2, DCH3 and DCH5 to the physical channel, + * then map DCCH1-4 on to the DCH5 transport channel and map DTCH(subflow#1), DTCH(subflow#2), DTCH(subflow#3) + * to the DCH1, DCH2, DCH3 transport channel respectively. + * Used for AMR speech. + * @param p_CellId + * @param p_SS_ActTime + * @param p_DL_CommonInformation + * @param p_UL_DPCH_Info + * @param p_HS_DPCCHInfo + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_SS_4DCH_Modify_FDD(UTRAN_CellId_Type p_CellId, + template (value) SS_ActivationTime p_SS_ActTime, + template (value) DL_CommonInformation_r8 p_DL_CommonInformation, + template (value) UL_DPCH_Info_r7 p_UL_DPCH_Info, + template (omit) HS_DPCCHInfo_r8 p_HS_DPCCHInfo) runs on UTRAN_PTC + { + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_FDD (p_CellId, + tsc_DL_DPCH1, + cs_DPCHInfo_DL_FDD (cs_DL_DPCH_FDD(p_DL_CommonInformation, tsc_DL_DPCH1_ChC_Speech)), + p_SS_ActTime)); // @sic R5s130561 sic@ + f_UTRAN_CPHY_TrCH_Config (cas_DCH4_DL_Info_FDD(p_CellId, + tsc_DL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + p_SS_ActTime)); // @sic R5s130561 sic@ + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(utran_CellDedicated, // @sic R5s120049 sic@ + tsc_DL_DPCH1, + cs_UE_Info, + cs_TrChInfoDL_122_AMR_FDD, + cs_TrLogMappingDL_4DCCH_3DTCH, + p_SS_ActTime)); // @sic R5s130561 sic@ + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_FDD (p_CellId, + tsc_UL_DPCH1, + cs_DPCHInfo_UL_FDD (p_UL_DPCH_Info, p_HS_DPCCHInfo), + p_SS_ActTime)); // @sic R5s130561 sic@ + f_UTRAN_CPHY_TrCH_Config(cas_DCH4_UL_Info_FDD(p_CellId, + tsc_UL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + p_SS_ActTime)); // @sic R5s130561 sic@ + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(utran_CellDedicated, // @sic R5s120049 sic@ + tsc_UL_DPCH1, + cs_UE_Info, + cs_TrChInfoUL_122_AMR_FDD, + cs_TrLogMappingUL_4DCCH_3DTCH, + p_SS_ActTime)); // @sic R5s130561 sic@ + } + + /* + * @desc to modify physical channel DPCH1and connect DCH1, DCH2, DCH3 and DCH5 to the physical channel, + * then map DCCH1-4 on to the DCH5 transport channel and map DTCH(subflow#1), DTCH(subflow#2), DTCH(subflow#3) + * to the DCH1, DCH2, DCH3 transport channel respectively. + * Used for AMR speech in rel-10 + * @param p_CellId + * @param p_SS_ActTime + * @param p_DL_CommonInformation + * @param p_UL_DPCH_Info + * @param p_HS_DPCCHInfo + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_SS_4DCH_Modify_FDD_r10(UTRAN_CellId_Type p_CellId, + template (value) SS_ActivationTime p_SS_ActTime, + template (value) DL_CommonInformation_r10 p_DL_CommonInformation, + template (value) UL_DPCH_Info_r7 p_UL_DPCH_Info, + template (omit) HS_DPCCHInfo_r8 p_HS_DPCCHInfo) runs on UTRAN_PTC + { + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_FDD (p_CellId, + tsc_DL_DPCH1, + cs_DPCHInfo_Extension_FDD(cs_DL_DPCHInfo_r10_Extension_FDD(cs_DL_DPCH_FDD_r10(p_DL_CommonInformation, tsc_DL_DPCH1_ChC_Speech))), + p_SS_ActTime)); + f_UTRAN_CPHY_TrCH_Config (cas_DCH4_DL_Info_FDD(p_CellId, + tsc_DL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + p_SS_ActTime)); + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(utran_CellDedicated, // @sic R5s120049 sic@ + tsc_DL_DPCH1, + cs_UE_Info, + cs_TrChInfoDL_122_AMR_FDD, + cs_TrLogMappingDL_4DCCH_3DTCH, + p_SS_ActTime)); // @sic R5s130561 sic@ + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_FDD(p_CellId, + tsc_UL_DPCH1, + cs_DPCHInfo_UL_FDD (p_UL_DPCH_Info, p_HS_DPCCHInfo), + p_SS_ActTime)); // @sic R5s130561 sic@ + f_UTRAN_CPHY_TrCH_Config(cas_DCH4_UL_Info_FDD(p_CellId, + tsc_UL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + p_SS_ActTime)); // @sic R5s130561 sic@ + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(utran_CellDedicated, // @sic R5s120049 sic@ + tsc_UL_DPCH1, + cs_UE_Info, + cs_TrChInfoUL_122_AMR_FDD, + cs_TrLogMappingUL_4DCCH_3DTCH, + p_SS_ActTime)); // @sic R5s130561 sic@ + } + + /* + * @desc to modify physical channel DPCH1and connect DCH1, DCH2, DCH3 and DCH5 to the physical channel, + * then map DCCH1-4 on to the DCH5 transport channel and map DTCH(subflow#1), DTCH(subflow#2), DTCH(subflow#3) + * to the DCH1, DCH2, DCH3 transport channel respectively. + * Used for AMR speech in rel-10 + * @param p_CellId + * @param p_SS_ActTime + * @param p_UL_DPCH_Info + * @param p_HS_DPCCHInfo + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_SS_4DCH_Modify_TDD_r10(UTRAN_CellId_Type p_CellId, + template (value) SS_ActivationTime p_SS_ActTime, + template (value) UL_DPCH_Info_r7 p_UL_DPCH_Info, + template (omit) HS_DPCCHInfo_r8 p_HS_DPCCHInfo) runs on UTRAN_PTC + { + f_UTRAN_CPHY_RL_Modify (cas_RL_Modify_DPCHInfo_TDD(p_CellId, + tsc_DL_DPCH1, + cs_DPCHInfo_Extension_TDD(cs_DL_DPCHInfo_r10_Extension_TDD(cs_DL_DPCH_TDD_r10(cs_DL_DPCH_InfoPerRL_Speech_TDD))), + p_SS_ActTime)); // @sic R5s130561 sic@ + + f_UTRAN_CPHY_TrCH_Config (cas_DCH4_DL_Info_TDD(p_CellId, + tsc_DL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + p_SS_ActTime)); // @sic R5s130561 sic@ + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_TDD(utran_CellDedicated, // @sic R5s120049 sic@ + tsc_DL_DPCH1, + cs_UE_Info, + cs_TrChInfoDL_122_AMR_TDD, + cs_TrLogMappingDL_4DCCH_3DTCH_TDD, + p_SS_ActTime)); // @sic R5s130561 sic@ + + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_TDD(p_CellId, + tsc_UL_DPCH1, + cs_DPCHInfo_UL_TDD (p_UL_DPCH_Info, p_HS_DPCCHInfo), + p_SS_ActTime)); // @sic R5s130561 sic@ + f_UTRAN_CPHY_TrCH_Config(cas_DCH4_UL_Info_TDD(p_CellId, + tsc_UL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + p_SS_ActTime)); // @sic R5s130561 sic@ + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_TDD(utran_CellDedicated, // @sic R5s120049 sic@ + tsc_UL_DPCH1, + cs_UE_Info, + cs_TrChInfoUL_122_AMR_TDD, + cs_TrLogMappingUL_4DCCH_3DTCH_TDD, + p_SS_ActTime)); // @sic R5s130561 sic@ + } + + /* + * @desc to modify physical channel DPCH1and connect DCH1, DCH2, DCH3 and DCH5 to the physical channel, + * then map DCCH1-4 on to the DCH5 transport channel and map DTCH(subflow#1), DTCH(subflow#2), DTCH(subflow#3) + * to the DCH1, DCH2, DCH3 transport channel respectively. + * Used for AMR speech in rel-11 + * @param p_CellId + * @param p_SS_ActTime + * @param p_DL_CommonInformation + * @param p_UL_DPCH_Info + * @param p_HS_DPCCHInfo + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_SS_4DCH_Modify_FDD_r11(UTRAN_CellId_Type p_CellId, + template (value) SS_ActivationTime p_SS_ActTime, + template (value) DL_CommonInformation_r11 p_DL_CommonInformation, + template (value) UL_DPCH_Info_r11 p_UL_DPCH_Info, + template (omit) HS_DPCCHInfo_r10 p_HS_DPCCHInfo) runs on UTRAN_PTC + { + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_FDD (p_CellId, + tsc_DL_DPCH1, + cs_DPCHInfo_Extension_FDD(cs_DL_DPCHInfo_r11_Extension_FDD(cs_DL_DPCH_FDD_r11(p_DL_CommonInformation, tsc_DL_DPCH1_ChC_Speech))), + p_SS_ActTime)); + f_UTRAN_CPHY_TrCH_Config (cas_DCH4_DL_Info_FDD(p_CellId, + tsc_DL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + p_SS_ActTime)); + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(utran_CellDedicated, + tsc_DL_DPCH1, + cs_UE_Info, + cs_TrChInfoDL_122_AMR_FDD, + cs_TrLogMappingDL_4DCCH_3DTCH, + p_SS_ActTime)); + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_FDD(p_CellId, + tsc_UL_DPCH1, + cs_DPCHInfo_Extension_FDD(cs_UL_DPCHInfo_r11_Extension_FDD(p_UL_DPCH_Info, p_HS_DPCCHInfo)), + p_SS_ActTime)); + f_UTRAN_CPHY_TrCH_Config(cas_DCH4_UL_Info_FDD(p_CellId, + tsc_UL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + p_SS_ActTime)); + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(utran_CellDedicated, + tsc_UL_DPCH1, + cs_UE_Info, + cs_TrChInfoUL_122_AMR_FDD, + cs_TrLogMappingUL_4DCCH_3DTCH, + p_SS_ActTime)); + } + + /* + * @desc to modify physical channel DPCH1and connect DCH1, DCH2, DCH3 and DCH5 to the physical channel, + * then map DCCH1-4 on to the DCH5 transport channel and map DTCH(subflow#1), DTCH(subflow#2), DTCH(subflow#3) + * to the DCH1, DCH2, DCH3 transport channel respectively. + * Used for AMR speech in rel-11 + * @param p_CellId + * @param p_SS_ActTime + * @param p_UL_DPCH_Info + * @param p_HS_DPCCHInfo + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_SS_4DCH_Modify_TDD_r11(UTRAN_CellId_Type p_CellId, + template (value) SS_ActivationTime p_SS_ActTime, + template (value) UL_DPCH_Info_r11 p_UL_DPCH_Info, + template (omit) HS_DPCCHInfo_r10 p_HS_DPCCHInfo) runs on UTRAN_PTC + { + f_UTRAN_CPHY_RL_Modify (cas_RL_Modify_DPCHInfo_TDD(p_CellId, + tsc_DL_DPCH1, + cs_DPCHInfo_Extension_TDD(cs_DL_DPCHInfo_r11_Extension_TDD(cs_DL_DPCH_TDD_r11(cs_DL_DPCH_InfoPerRL_Speech_TDD))), + p_SS_ActTime)); // @sic R5s130561 sic@ + + f_UTRAN_CPHY_TrCH_Config (cas_DCH4_DL_Info_TDD(p_CellId, + tsc_DL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + p_SS_ActTime)); // @sic R5s130561 sic@ + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_TDD(utran_CellDedicated, // @sic R5s120049 sic@ + tsc_DL_DPCH1, + cs_UE_Info, + cs_TrChInfoDL_122_AMR_TDD, + cs_TrLogMappingDL_4DCCH_3DTCH_TDD, + p_SS_ActTime)); // @sic R5s130561 sic@ + + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_TDD (p_CellId, + tsc_UL_DPCH1, + cs_DPCHInfo_Extension_TDD(cs_UL_DPCHInfo_r11_Extension_TDD(p_UL_DPCH_Info, p_HS_DPCCHInfo)), + p_SS_ActTime)); // @sic R5s130561 sic@ + f_UTRAN_CPHY_TrCH_Config(cas_DCH4_UL_Info_TDD(p_CellId, + tsc_UL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + p_SS_ActTime)); // @sic R5s130561 sic@ + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_TDD(utran_CellDedicated, // @sic R5s120049 sic@ + tsc_UL_DPCH1, + cs_UE_Info, + cs_TrChInfoUL_122_AMR_TDD, + cs_TrLogMappingUL_4DCCH_3DTCH_TDD, + p_SS_ActTime)); // @sic R5s130561 sic@ + } + + /* + * @desc to modify physical channel DPCH1and connect DCH1, DCH2, DCH3 and DCH5 to the physical channel, + * then map DCCH1-4 on to the DCH5 transport channel and map DTCH(subflow#1), DTCH(subflow#2), DTCH(subflow#3) + * to the DCH1, DCH2, DCH3 transport channel respectively. + * Used for AMR speech. + * @param p_CellId + * @param p_SS_ActTime + * @param p_UL_DPCH_Info + * @param p_HS_DPCCHInfo + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_SS_4DCH_Modify_TDD(UTRAN_CellId_Type p_CellId, + template (value) SS_ActivationTime p_SS_ActTime, + template (value) UL_DPCH_Info_r7 p_UL_DPCH_Info, + template (omit) HS_DPCCHInfo_r8 p_HS_DPCCHInfo) runs on UTRAN_PTC + { + f_UTRAN_CPHY_RL_Modify (cas_RL_Modify_DPCHInfo_TDD(p_CellId, + tsc_DL_DPCH1, + cs_DPCHInfo_DL_TDD (cs_DL_DPCH_122_AMR_TDD), + p_SS_ActTime)); // @sic R5s130561 sic@ + + f_UTRAN_CPHY_TrCH_Config (cas_DCH4_DL_Info_TDD(p_CellId, + tsc_DL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + p_SS_ActTime)); // @sic R5s130561 sic@ + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_TDD(utran_CellDedicated, // @sic R5s120049 sic@ + tsc_DL_DPCH1, + cs_UE_Info, + cs_TrChInfoDL_122_AMR_TDD, + cs_TrLogMappingDL_4DCCH_3DTCH_TDD, + p_SS_ActTime)); // @sic R5s130561 sic@ + + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_TDD (p_CellId, + tsc_UL_DPCH1, + cs_DPCHInfo_UL_TDD (p_UL_DPCH_Info, p_HS_DPCCHInfo), + p_SS_ActTime)); // @sic R5s130561 sic@ + f_UTRAN_CPHY_TrCH_Config(cas_DCH4_UL_Info_TDD(p_CellId, + tsc_UL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + p_SS_ActTime)); // @sic R5s130561 sic@ + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_TDD(utran_CellDedicated, // @sic R5s120049 sic@ + tsc_UL_DPCH1, + cs_UE_Info, + cs_TrChInfoUL_122_AMR_TDD, + cs_TrLogMappingUL_4DCCH_3DTCH_TDD, + p_SS_ActTime)); // @sic R5s130561 sic@ + } + + /* + * @desc To configure SS to packet CELL_DCH / HS-DSCH. + * DL: [max bit rate depending on UE category] / PS RAB + * UL DCH: 64 kbps + * @param p_CellId + * @param p_ActTime + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_SS_HS_DSCH_PDSCH_Cfg_DPCH_Modify_FDD(UTRAN_CellId_Type p_CellId, + template (value) SS_ActivationTime p_ActTime) runs on UTRAN_PTC + { // To downgrade Signalling Channels in DL to 3.4 + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_FDD(p_CellId, + tsc_DL_DPCH1, + cs_DPCHInfo_DL_FDD (cs_DL_DPCH_FDD(cs_DL_CommonInformationRB_SetUp_FDD(tsc_DL_DPCH1_SFP_SRB_3_4k, fixed, false), tsc_Sfc256_C0)), // @sic R5s110683 sic@ + p_ActTime)); + + f_UTRAN_CPHY_TrCH_Config(cas_TrChCfgInfo_FDD(p_CellId, + tsc_DL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + cs_CphyTrchConfigReq_DL_TrCh_FDD(p_ActTime, + cs_DCH_148_DL_FDD, + cs_TFCS_Cmpl0_1_Tx_FDD(cs_PowerOffsetInfoBelow64k)))); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(utran_CellDedicated, // @sic R5s110683 sic@ + tsc_DL_DPCH1, + cs_UE_Info(omit, omit), + cs_TrCHInfo_DL_TrCh_FDD(cs_TrChInfoTrCHListDL_34_StandAlone_FDD, + cs_TFCS_Cmpl0_1_Tx_FDD(cs_PowerOffsetInfoBelow64k)), + cs_TrLogMappingDL_4DCCH, + p_ActTime)); + + // Configure HSDPA channels + f_UTRAN_CPHY_RL_Setup(cas_RL_SetupInfo_FDD(p_CellId, + tsc_HSPDSCH, + cs_DL_Cell_DCH_HS_DSCH_PS_RAB_FDD(pc_HSDSCH_UE_Category_FDD, // @sic R5w140207 sic@ + cs_DL_HSPDSCH_Information_FDD(cs_HS_SCCH_Info_FDD, cs_Measurement_Feedback_Info), + false), + p_ActTime)); + + f_UTRAN_CPHY_TrCH_Config(cas_TrChCfgInfo_FDD(p_CellId, + tsc_HSPDSCH, + cs_TrChConfigTypeNonDCH, + cs_CphyTrchConfigReq_HS_DSCHMacdFlows_FDD(p_ActTime, + cs_HS_DSCHMacdFlows(cs_HARQ_Info_FDD, + cs_SS_AddOrReconfMAC_dFlow(cs_SS_MAC_hs_AddReconfQueue(cs_MAC_hs_AddReconfQueue)))))); // @sic R5s120397 sic@ + + // To configure/Reconfigure MAC_HS in Explicit TFRC config mode. + f_UTRAN_CMAC_MACHs_Config(p_CellId, cas_CMAC_MAChs_TFRC_ExplicitConfigReq_FDD(p_CellId)); + + f_UTRAN_CMAC_Config(cas_CMAC_CfgInfo_FDD(p_CellId, + tsc_HSPDSCH, + cs_UE_Info (omit, omit), + cs_TrCHInfo_HS_DSCHMacdFlows_FDD(cs_HS_DSCHMacdFlows(cs_HARQ_Info_FDD, + cs_SS_AddOrReconfMAC_dFlow(cs_SS_MAC_hs_AddReconfQueue(cs_MAC_hs_AddReconfQueue)))), // @sic R5s120397 sic@ + cs_TrLogMappingDL_MAC_HS)); + + + // to modify UL DPCH (ul_DataRate = r64) + f_UTRAN_CPHY_RL_Modify (cas_RL_Modify_DPCHInfo_FDD (p_CellId, + tsc_UL_DPCH1, + cs_DPCHInfo_UL_FDD (cs_UL_DPCH_InfoACK_HSDPA_FDD(tsc_UL_DPDCH_SF_64k_PS, + pl0_96, + f_UTRAN_CellInfo_GetULScrmCode_FDD(p_CellId)), + cs_HS_DPCCHInfo), // @sic R5s110683 sic@ + p_ActTime)); + + f_UTRAN_CPHY_TrCH_Config (cas_TrChCfgInfo_FDD(p_CellId, + tsc_UL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + cs_CphyTrchConfigReq_UL_TrCh_FDD(p_ActTime, + cs_DCH_336_148_UL_Info_FDD, + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx))); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(utran_CellDedicated, // @sic R5s110683 sic@ + tsc_UL_DPCH1, + cs_UE_Info(omit, omit), + cs_TrCHInfo_UL_TrCh_FDD(cs_TrChInfoTrCHListUL_336_148_FDD, + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), // @sic R5s110788 sic@ + cs_TrLogMappingUL_4DCCH_1DTCH(tsc_RB25), + p_ActTime)); + + } + + /* + * @desc To configure SS to packet CELL_DCH / HS-DSCH using r9. + * DL: [max bit rate depending on UE category] / PS RAB + * UL DCH: 64 kbps + * @param p_CellId + * @param p_ActTime + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_SS_HS_DSCH_PDSCH_Cfg_DPCH_Modify_FDD_r9(UTRAN_CellId_Type p_CellId, + template (value) SS_ActivationTime p_ActTime) runs on UTRAN_PTC + { // to downgrade Signalling Channels in DL to 3.4 + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_FDD(p_CellId, + tsc_DL_DPCH1, + cs_DPCHInfo_DL_FDD (cs_DL_DPCH_FDD(cs_DL_CommonInformationRB_SetUp_FDD(tsc_DL_DPCH1_SFP_SRB_3_4k, fixed, false), tsc_Sfc256_C0)), // @sic R5s110683 sic@ + p_ActTime)); + + f_UTRAN_CPHY_TrCH_Config(cas_TrChCfgInfo_FDD(p_CellId, + tsc_DL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + cs_CphyTrchConfigReq_DL_TrCh_FDD(p_ActTime, + cs_DCH_148_DL_FDD, + cs_TFCS_Cmpl0_1_Tx_FDD(cs_PowerOffsetInfoBelow64k)))); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(utran_CellDedicated, // @sic R5s110683 sic@ + tsc_DL_DPCH1, + cs_UE_Info(omit, omit), + cs_TrCHInfo_DL_TrCh_FDD(cs_TrChInfoTrCHListDL_34_StandAlone_FDD, + cs_TFCS_Cmpl0_1_Tx_FDD(cs_PowerOffsetInfoBelow64k)), + cs_TrLogMappingDL_4DCCH, + p_ActTime)); + + // Configure HSDPA channels + f_UTRAN_CPHY_RL_Setup(cas_RL_SetupInfo_FDD(p_CellId, + tsc_HSPDSCH, + cs_DL_Cell_DCH_HS_DSCH_PS_RAB_r9_FDD(pc_HSDSCH_UE_Category_FDD, // @sic R5w140207 sic@ + cs_DL_HSPDSCH_Information_r9_FDD(cs_HS_SCCH_Info_r9_FDD, cs_Measurement_Feedback_Info), + false), + p_ActTime)); + + f_UTRAN_CPHY_TrCH_Config(cas_TrChCfgInfo_FDD(p_CellId, + tsc_HSPDSCH, + cs_TrChConfigTypeNonDCH, + cs_CphyTrchConfigReq_HS_DSCHMacdFlows_FDD(p_ActTime, + cs_HS_DSCHMacdFlows(cs_HARQ_Info_FDD, + cs_SS_AddOrReconfMAC_dFlow(cs_SS_MAC_hs_AddReconfQueue(cs_MAC_hs_AddReconfQueue)))))); // @sic R5s120397 sic@ + + // To configure/Reconfigure MAC_HS in Explicit TFRC config mode. + f_UTRAN_CMAC_MACHs_Config(p_CellId, cas_CMAC_MAChs_TFRC_ExplicitConfigReq_FDD(p_CellId)); + + f_UTRAN_CMAC_Config(cas_CMAC_CfgInfo_FDD(p_CellId, + tsc_HSPDSCH, + cs_UE_Info (omit, omit), + cs_TrCHInfo_HS_DSCHMacdFlows_FDD(cs_HS_DSCHMacdFlows(cs_HARQ_Info_FDD, + cs_SS_AddOrReconfMAC_dFlow(cs_SS_MAC_hs_AddReconfQueue(cs_MAC_hs_AddReconfQueue)))), // @sic R5s120397 sic@ + cs_TrLogMappingDL_MAC_HS)); + + + // to modify UL DPCH (ul_DataRate = r64) + f_UTRAN_CPHY_RL_Modify (cas_RL_Modify_DPCHInfo_FDD (p_CellId, + tsc_UL_DPCH1, + cs_DPCHInfo_UL_FDD (cs_UL_DPCH_InfoACK_HSDPA_FDD(tsc_UL_DPDCH_SF_64k_PS, + pl0_96, + f_UTRAN_CellInfo_GetULScrmCode_FDD(p_CellId)), + cs_HS_DPCCHInfo), // @sic R5s110683 sic@ + p_ActTime)); + + f_UTRAN_CPHY_TrCH_Config (cas_TrChCfgInfo_FDD(p_CellId, + tsc_UL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + cs_CphyTrchConfigReq_UL_TrCh_FDD(p_ActTime, + cs_DCH_336_148_UL_Info_FDD, + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx))); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(utran_CellDedicated, // @sic R5s110683 sic@ + tsc_UL_DPCH1, + cs_UE_Info(omit, omit), + cs_TrCHInfo_UL_TrCh_FDD(cs_TrChInfoTrCHListUL_336_148_FDD, + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), // @sic R5s110788 sic@ + cs_TrLogMappingUL_4DCCH_1DTCH(tsc_RB25), + p_ActTime)); + + } + + /* + * @desc To configure SS to packet CELL_DCH / HS-DSCH using r9. + * DL: [max bit rate depending on UE category] / PS RAB + * UL DCH: 64 kbps + * @param p_CellId + * @param p_ActTime + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_SS_HS_DSCH_PDSCH_Cfg_DPCH_Modify_FDD_r10(UTRAN_CellId_Type p_CellId, + template (value) SS_ActivationTime p_ActTime) runs on UTRAN_PTC + { // to downgrade Signalling Channels in DL to 3.4 + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_FDD(p_CellId, + tsc_DL_DPCH1, + cs_DPCHInfo_Extension_FDD(cs_DL_DPCHInfo_r10_Extension_FDD(cs_DL_DPCH_FDD_r10(cs_DL_CommonInformationRB_SetUp_FDD_r10(tsc_DL_DPCH1_SFP_SRB_3_4k, fixed, false), tsc_Sfc256_C0))), + p_ActTime)); + + f_UTRAN_CPHY_TrCH_Config(cas_TrChCfgInfo_FDD(p_CellId, + tsc_DL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + cs_CphyTrchConfigReq_DL_TrCh_FDD(p_ActTime, + cs_DCH_148_DL_FDD, + cs_TFCS_Cmpl0_1_Tx_FDD(cs_PowerOffsetInfoBelow64k)))); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(utran_CellDedicated, // @sic R5s110683 sic@ + tsc_DL_DPCH1, + cs_UE_Info(omit, omit), + cs_TrCHInfo_DL_TrCh_FDD(cs_TrChInfoTrCHListDL_34_StandAlone_FDD, + cs_TFCS_Cmpl0_1_Tx_FDD(cs_PowerOffsetInfoBelow64k)), + cs_TrLogMappingDL_4DCCH, + p_ActTime)); + + // Configure HSDPA channels + f_UTRAN_CPHY_RL_Setup(cas_RL_SetupInfo_FDD(p_CellId, + tsc_HSPDSCH, + cs_DL_Cell_DCH_HS_DSCH_PS_RAB_r9_FDD(pc_HSDSCH_UE_Category_FDD, // @sic R5w140207 sic@ + cs_DL_HSPDSCH_Information_r9_FDD(cs_HS_SCCH_Info_r9_FDD, cs_Measurement_Feedback_Info), + false), + p_ActTime)); + f_UTRAN_CPHY_TrCH_Config(cas_TrChCfgInfo_FDD(p_CellId, + tsc_HSPDSCH, + cs_TrChConfigTypeNonDCH, + cs_CphyTrchConfigReq_HS_DSCHMacdFlows_FDD(p_ActTime, + cs_HS_DSCHMacdFlows(cs_HARQ_Info_FDD, + cs_SS_AddOrReconfMAC_dFlow(cs_SS_MAC_hs_AddReconfQueue(cs_MAC_hs_AddReconfQueue)))))); // @sic R5s120397 sic@ + + // To configure/Reconfigure MAC_HS in Explicit TFRC config mode. + f_UTRAN_CMAC_MACHs_Config(p_CellId, cas_CMAC_MAChs_TFRC_ExplicitConfigReq_FDD(p_CellId)); + f_UTRAN_CMAC_Config(cas_CMAC_CfgInfo_FDD(p_CellId, + tsc_HSPDSCH, + cs_UE_Info (omit, omit), + cs_TrCHInfo_HS_DSCHMacdFlows_FDD(cs_HS_DSCHMacdFlows(cs_HARQ_Info_FDD, + cs_SS_AddOrReconfMAC_dFlow(cs_SS_MAC_hs_AddReconfQueue(cs_MAC_hs_AddReconfQueue)))), // @sic R5s120397 sic@ + cs_TrLogMappingDL_MAC_HS)); + + + // to modify UL DPCH (ul_DataRate = r64) + f_UTRAN_CPHY_RL_Modify (cas_RL_Modify_DPCHInfo_FDD (p_CellId, + tsc_UL_DPCH1, + cs_DPCHInfo_Extension_FDD(cs_UL_DPCHInfo_r10_Extension_FDD(cs_UL_DPCH_InfoACK_HSDPA_FDD(tsc_UL_DPDCH_SF_64k_PS, + pl0_96, + f_UTRAN_CellInfo_GetULScrmCode_FDD(p_CellId)), + cs_HS_DPCCHInfo_r10)), // @sic R5s110683 sic@ + p_ActTime)); + + f_UTRAN_CPHY_TrCH_Config (cas_TrChCfgInfo_FDD(p_CellId, + tsc_UL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + cs_CphyTrchConfigReq_UL_TrCh_FDD(p_ActTime, + cs_DCH_336_148_UL_Info_FDD, + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx))); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(utran_CellDedicated, // @sic R5s110683 sic@ + tsc_UL_DPCH1, + cs_UE_Info(omit, omit), + cs_TrCHInfo_UL_TrCh_FDD(cs_TrChInfoTrCHListUL_336_148_FDD, + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), // @sic R5s110788 sic@ + cs_TrLogMappingUL_4DCCH_1DTCH(tsc_RB25), + p_ActTime)); + + } + + /* + * @desc To configure SS to packet CELL_DCH / HS-DSCH using r10. + * DL: [max bit rate depending on UE category] / PS RAB + * UL DCH: 64 kbps + * @param p_CellId + * @param p_ActTime + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_SS_HS_DSCH_PDSCH_Cfg_DPCH_Modify_TDD_r10(UTRAN_CellId_Type p_CellId, + template (value) SS_ActivationTime p_ActTime) runs on UTRAN_PTC + { // to downgrade Signalling Channels in DL to 3.4 + f_UTRAN_CPHY_RL_Modify (cas_RL_Modify_DPCHInfo_TDD (p_CellId, + tsc_DL_DPCH1, + cs_DPCHInfo_Extension_TDD(cs_DL_DPCHInfo_r10_Extension_TDD(cs_DL_DPCH_TDD_r10(cs_DL_DPCH_InfoPerRL_SRB_TDD))), + p_ActTime)); + + f_UTRAN_CPHY_TrCH_Config(cas_TrChCfgInfo_TDD(p_CellId, + tsc_DL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + cs_CphyTrchConfigReq_DL_TrCh_TDD(p_ActTime, + cs_DCH_148_DL_TDD, + cs_TFCS_Cmpl0_1_Tx_TDD))); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_TDD(utran_CellDedicated, // @sic R5s110683 sic@ + tsc_DL_DPCH1, + cs_UE_Info(omit, omit), + cs_TrCHInfo_DL_TrCh_TDD(cs_TrChInfoTrCHListDL_34_StandAlone_TDD, + cs_TFCS_Cmpl0_1_Tx_TDD), + cs_TrLogMappingDL_4DCCH_TDD, + p_ActTime)); + + // Configure HSDPA channels + f_UTRAN_CPHY_RL_Setup(cas_RL_SetupInfo_TDD(p_CellId, + tsc_HSPDSCH, + cs_DL_Cell_DCH_HS_DSCH_PS_RAB_TDD(pc_HSDSCH_UE_Category_TDD, // @sic R5w140207 sic@ + cs_DL_HSPDSCH_Information_TDD(cs_HS_SCCH_Info_TDD, + cs_HS_PDSCH_Midamble_Configuration_TDD128), + false), + p_ActTime)); + + f_UTRAN_CPHY_TrCH_Config(cas_TrChCfgInfo_TDD(p_CellId, + tsc_HSPDSCH, + cs_TrChConfigTypeNonDCH, + cs_CphyTrchConfigReq_HS_DSCHMacdFlows_TDD(p_ActTime, + cs_HS_DSCHMacdFlows_TDD(cs_HARQ_Info_TDD, + cs_SS_AddOrReconfMAC_dFlow(cs_SS_MAC_hs_AddReconfQueue(cs_MAC_hs_AddReconfQueue)))))); // @sic R5s120397 sic@ + + // To configure/Reconfigure MAC_HS in Explicit TFRC config mode. + f_UTRAN_CMAC_MACHs_Config(p_CellId, cas_CMAC_MAChs_TFRC_ExplicitConfigReq_TDD(p_CellId)); + + f_UTRAN_CMAC_Config(cas_CMAC_CfgInfo_TDD(p_CellId, // @sic R5s130604 sic@ + tsc_HSPDSCH, + cs_UE_Info (omit, omit), + cs_TrCHInfo_HS_DSCHMacdFlows_TDD(cs_HS_DSCHMacdFlows_TDD(cs_HARQ_Info_TDD, // @sic R5-113036 sic@ + cs_SS_AddOrReconfMAC_dFlow(cs_SS_MAC_hs_AddReconfQueue(cs_MAC_hs_AddReconfQueue)))), // @sic R5s120397 sic@ + cs_TrLogMappingDL_MAC_HS_TDD)); + + // to modify UL DPCH (ul_DataRate = r64) + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_TDD(p_CellId, + tsc_UL_DPCH1, + cs_DPCHInfo_Extension_TDD(cs_UL_DPCHInfo_r10_Extension_TDD(cs_UL_DPCH_64k_PS_TDD, cs_HS_DPCCHInfo_r10)), + p_ActTime)); + + f_UTRAN_CPHY_TrCH_Config(cas_TrChCfgInfo_TDD(p_CellId, + tsc_UL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + cs_CphyTrchConfigReq_UL_TrCh_TDD(p_ActTime, + cs_DCH_336_148_UL_Info_TDD, + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx))); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_TDD(utran_CellDedicated, // @sic R5s130604 sic@ + tsc_UL_DPCH1, + cs_UE_Info(omit, omit), + cs_TrChInfoUL_336_148_TDD, + cs_TrLogMappingUL_4DCCH_1DTCH_TDD(tsc_RB25), + p_ActTime)); + } + + /* + * @desc To configure SS to packet CELL_DCH / HS-DSCH using r9. + * DL: [max bit rate depending on UE category] / PS RAB + * UL DCH: 64 kbps + * @param p_CellId + * @param p_ActTime + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_SS_HS_DSCH_PDSCH_Cfg_DPCH_Modify_FDD_r11(UTRAN_CellId_Type p_CellId, + template (value) SS_ActivationTime p_ActTime) runs on UTRAN_PTC + { // to downgrade Signalling Channels in DL to 3.4 + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_FDD(p_CellId, + tsc_DL_DPCH1, + cs_DPCHInfo_Extension_FDD(cs_DL_DPCHInfo_r11_Extension_FDD(cs_DL_DPCH_FDD_r11(cs_DL_CommonInformationRB_SetUp_FDD_r11(tsc_DL_DPCH1_SFP_SRB_3_4k, fixed, false), tsc_Sfc256_C0))), + p_ActTime)); + + f_UTRAN_CPHY_TrCH_Config(cas_TrChCfgInfo_FDD(p_CellId, + tsc_DL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + cs_CphyTrchConfigReq_DL_TrCh_FDD(p_ActTime, + cs_DCH_148_DL_FDD, + cs_TFCS_Cmpl0_1_Tx_FDD(cs_PowerOffsetInfoBelow64k)))); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(utran_CellDedicated, + tsc_DL_DPCH1, + cs_UE_Info(omit, omit), + cs_TrCHInfo_DL_TrCh_FDD(cs_TrChInfoTrCHListDL_34_StandAlone_FDD, + cs_TFCS_Cmpl0_1_Tx_FDD(cs_PowerOffsetInfoBelow64k)), + cs_TrLogMappingDL_4DCCH, + p_ActTime)); + + // Configure HSDPA channels + f_UTRAN_CPHY_RL_Setup(cas_RL_SetupInfo_FDD(p_CellId, + tsc_HSPDSCH, + cs_HS_PDSCHInfoExtension_FDD_r10OrLater(cs_HSPDSCH_Information_FDD_r11(pc_HSDSCH_UE_Category_FDD, // @sic R5w140207 sic@ + cs_DL_HSPDSCH_Information_FDD_r11(cs_HS_SCCH_Info_r9_FDD, cs_Measurement_Feedback_Info_r11), + false)), + p_ActTime)); + + f_UTRAN_CPHY_TrCH_Config(cas_TrChCfgInfo_FDD(p_CellId, + tsc_HSPDSCH, + cs_TrChConfigTypeNonDCH, + cs_CphyTrchConfigReq_HS_DSCHMacdFlows_FDD(p_ActTime, + cs_HS_DSCHMacdFlows(cs_HARQ_Info_FDD, + cs_SS_AddOrReconfMAC_dFlow(cs_SS_MAC_hs_AddReconfQueue(cs_MAC_hs_AddReconfQueue)))))); // @sic R5s120397 sic@ + + // To configure/Reconfigure MAC_HS in Explicit TFRC config mode. + f_UTRAN_CMAC_MACHs_Config(p_CellId, cas_CMAC_MAChs_TFRC_ExplicitConfigReq_FDD(p_CellId)); + + f_UTRAN_CMAC_Config(cas_CMAC_CfgInfo_FDD(p_CellId, + tsc_HSPDSCH, + cs_UE_Info (omit, omit), + cs_TrCHInfo_HS_DSCHMacdFlows_FDD(cs_HS_DSCHMacdFlows(cs_HARQ_Info_FDD, + cs_SS_AddOrReconfMAC_dFlow(cs_SS_MAC_hs_AddReconfQueue(cs_MAC_hs_AddReconfQueue)))), // @sic R5s120397 sic@ + cs_TrLogMappingDL_MAC_HS)); + + + // to modify UL DPCH (ul_DataRate = r64) + f_UTRAN_CPHY_RL_Modify (cas_RL_Modify_DPCHInfo_FDD(p_CellId, + tsc_UL_DPCH1, + cs_DPCHInfo_Extension_FDD(cs_UL_DPCHInfo_r11_Extension_FDD(cs_UL_DPCH_InfoACK_HSDPA_FDD_r11(tsc_UL_DPDCH_SF_64k_PS, + pl0_96, + f_UTRAN_CellInfo_GetULScrmCode_FDD(p_CellId)), + cs_HS_DPCCHInfo_r10)), + p_ActTime)); + + f_UTRAN_CPHY_TrCH_Config (cas_TrChCfgInfo_FDD(p_CellId, + tsc_UL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + cs_CphyTrchConfigReq_UL_TrCh_FDD(p_ActTime, + cs_DCH_336_148_UL_Info_FDD, + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx))); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(utran_CellDedicated, + tsc_UL_DPCH1, + cs_UE_Info(omit, omit), + cs_TrCHInfo_UL_TrCh_FDD(cs_TrChInfoTrCHListUL_336_148_FDD, + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + cs_TrLogMappingUL_4DCCH_1DTCH(tsc_RB25), + p_ActTime)); + } + + /* + * @desc To configure SS to packet CELL_DCH / HS-DSCH using r11. + * DL: [max bit rate depending on UE category] / PS RAB + * UL DCH: 64 kbps + * @param p_CellId + * @param p_ActTime + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_SS_HS_DSCH_PDSCH_Cfg_DPCH_Modify_TDD_r11(UTRAN_CellId_Type p_CellId, + template (value) SS_ActivationTime p_ActTime) runs on UTRAN_PTC + { // to downgrade Signalling Channels in DL to 3.4 + f_UTRAN_CPHY_RL_Modify (cas_RL_Modify_DPCHInfo_TDD(p_CellId, + tsc_DL_DPCH1, + cs_DPCHInfo_Extension_TDD(cs_DL_DPCHInfo_r11_Extension_TDD(cs_DL_DPCH_TDD_r11(cs_DL_DPCH_InfoPerRL_SRB_TDD))), + p_ActTime)); + + f_UTRAN_CPHY_TrCH_Config(cas_TrChCfgInfo_TDD(p_CellId, + tsc_DL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + cs_CphyTrchConfigReq_DL_TrCh_TDD(p_ActTime, + cs_DCH_148_DL_TDD, + cs_TFCS_Cmpl0_1_Tx_TDD))); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_TDD(utran_CellDedicated, // @sic R5s110683 sic@ + tsc_DL_DPCH1, + cs_UE_Info(omit, omit), + cs_TrCHInfo_DL_TrCh_TDD(cs_TrChInfoTrCHListDL_34_StandAlone_TDD, + cs_TFCS_Cmpl0_1_Tx_TDD), + cs_TrLogMappingDL_4DCCH_TDD, + p_ActTime)); + + // Configure HSDPA channels + f_UTRAN_CPHY_RL_Setup(cas_RL_SetupInfo_TDD(p_CellId, + tsc_HSPDSCH, + cs_DL_Cell_DCH_HS_DSCH_PS_RAB_TDD(pc_HSDSCH_UE_Category_TDD, // @sic R5w140207 sic@ + cs_DL_HSPDSCH_Information_TDD(cs_HS_SCCH_Info_TDD, + cs_HS_PDSCH_Midamble_Configuration_TDD128), + false), + p_ActTime)); + + f_UTRAN_CPHY_TrCH_Config(cas_TrChCfgInfo_TDD(p_CellId, + tsc_HSPDSCH, + cs_TrChConfigTypeNonDCH, + cs_CphyTrchConfigReq_HS_DSCHMacdFlows_TDD(p_ActTime, + cs_HS_DSCHMacdFlows_TDD(cs_HARQ_Info_TDD, + cs_SS_AddOrReconfMAC_dFlow(cs_SS_MAC_hs_AddReconfQueue(cs_MAC_hs_AddReconfQueue)))))); // @sic R5s120397 sic@ + + // To configure/Reconfigure MAC_HS in Explicit TFRC config mode. + f_UTRAN_CMAC_MACHs_Config(p_CellId, cas_CMAC_MAChs_TFRC_ExplicitConfigReq_TDD(p_CellId)); + + f_UTRAN_CMAC_Config(cas_CMAC_CfgInfo_TDD(p_CellId, // @sic R5s130604 sic@ + tsc_HSPDSCH, + cs_UE_Info (omit, omit), + cs_TrCHInfo_HS_DSCHMacdFlows_TDD(cs_HS_DSCHMacdFlows_TDD(cs_HARQ_Info_TDD, // @sic R5-113036 sic@ + cs_SS_AddOrReconfMAC_dFlow(cs_SS_MAC_hs_AddReconfQueue(cs_MAC_hs_AddReconfQueue)))), // @sic R5s120397 sic@ + cs_TrLogMappingDL_MAC_HS_TDD)); + + + // to modify UL DPCH (ul_DataRate = r64) + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_TDD (p_CellId, + tsc_UL_DPCH1, + cs_DPCHInfo_Extension_TDD(cs_UL_DPCHInfo_r11_Extension_TDD(cs_UL_DPCH_64k_PS_TDD_r11, cs_HS_DPCCHInfo_r10)), + p_ActTime)); + + f_UTRAN_CPHY_TrCH_Config(cas_TrChCfgInfo_TDD(p_CellId, + tsc_UL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + cs_CphyTrchConfigReq_UL_TrCh_TDD(p_ActTime, + cs_DCH_336_148_UL_Info_TDD, + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx))); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_TDD(utran_CellDedicated, // @sic R5s130604 sic@ + tsc_UL_DPCH1, + cs_UE_Info(omit, omit), + cs_TrChInfoUL_336_148_TDD, + cs_TrLogMappingUL_4DCCH_1DTCH_TDD(tsc_RB25), + p_ActTime)); + } + + /* + * @desc To configure SS to packet CELL_DCH / HS-DSCH. + * DL: [max bit rate depending on UE category] / PS RAB + * UL DCH: 64 kbps + * @param p_CellId + * @param p_ActTime + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_SS_HS_DSCH_PDSCH_Cfg_DPCH_Modify_TDD(UTRAN_CellId_Type p_CellId, + template (value) SS_ActivationTime p_ActTime) runs on UTRAN_PTC + { // to downgrade Signalling Channels in DL to 3.4 + f_UTRAN_CPHY_RL_Modify (cas_RL_Modify_DPCHInfo_TDD (p_CellId, + tsc_DL_DPCH1, + cs_DPCHInfo_DL_TDD (cs_DL_DPCH_SRB_StandAlone_TDD), + p_ActTime)); + + f_UTRAN_CPHY_TrCH_Config(cas_TrChCfgInfo_TDD(p_CellId, + tsc_DL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + cs_CphyTrchConfigReq_DL_TrCh_TDD(p_ActTime, + cs_DCH_148_DL_TDD, + cs_TFCS_Cmpl0_1_Tx_TDD))); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_TDD(utran_CellDedicated, // @sic R5s110683 sic@ + tsc_DL_DPCH1, + cs_UE_Info(omit, omit), + cs_TrCHInfo_DL_TrCh_TDD(cs_TrChInfoTrCHListDL_34_StandAlone_TDD, + cs_TFCS_Cmpl0_1_Tx_TDD), + cs_TrLogMappingDL_4DCCH_TDD, + p_ActTime)); + + // Configure HSDPA channels + f_UTRAN_CPHY_RL_Setup(cas_RL_SetupInfo_TDD(p_CellId, + tsc_HSPDSCH, + cs_DL_Cell_DCH_HS_DSCH_PS_RAB_TDD(pc_HSDSCH_UE_Category_TDD, // @sic R5w140207 sic@ + cs_DL_HSPDSCH_Information_TDD(cs_HS_SCCH_Info_TDD, + cs_HS_PDSCH_Midamble_Configuration_TDD128), + false), + p_ActTime)); + + f_UTRAN_CPHY_TrCH_Config(cas_TrChCfgInfo_TDD(p_CellId, + tsc_HSPDSCH, + cs_TrChConfigTypeNonDCH, + cs_CphyTrchConfigReq_HS_DSCHMacdFlows_TDD(p_ActTime, + cs_HS_DSCHMacdFlows_TDD(cs_HARQ_Info_TDD, + cs_SS_AddOrReconfMAC_dFlow(cs_SS_MAC_hs_AddReconfQueue(cs_MAC_hs_AddReconfQueue)))))); // @sic R5s120397 sic@ + + // To configure/Reconfigure MAC_HS in Explicit TFRC config mode. + f_UTRAN_CMAC_MACHs_Config(p_CellId, cas_CMAC_MAChs_TFRC_ExplicitConfigReq_TDD(p_CellId)); + + f_UTRAN_CMAC_Config(cas_CMAC_CfgInfo_TDD(p_CellId, // @sic R5s130604 sic@ + tsc_HSPDSCH, + cs_UE_Info (omit, omit), + cs_TrCHInfo_HS_DSCHMacdFlows_TDD(cs_HS_DSCHMacdFlows_TDD(cs_HARQ_Info_TDD, // @sic R5-113036 sic@ + cs_SS_AddOrReconfMAC_dFlow(cs_SS_MAC_hs_AddReconfQueue(cs_MAC_hs_AddReconfQueue)))), // @sic R5s120397 sic@ + cs_TrLogMappingDL_MAC_HS_TDD)); + + + // to modify UL DPCH (ul_DataRate = r64) + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_TDD (p_CellId, + tsc_UL_DPCH1, + cs_DPCHInfo_UL_TDD (cs_UL_DPCH_64k_PS_TDD, cs_HS_DPCCHInfo), + p_ActTime)); + + f_UTRAN_CPHY_TrCH_Config(cas_TrChCfgInfo_TDD(p_CellId, + tsc_UL_DPCH1, + cs_TrChConfigTypeDCH_NoSHO, + cs_CphyTrchConfigReq_UL_TrCh_TDD(p_ActTime, + cs_DCH_336_148_UL_Info_TDD, + cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx))); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_TDD(utran_CellDedicated, // @sic R5s130604 sic@ + tsc_UL_DPCH1, + cs_UE_Info(omit, omit), + cs_TrChInfoUL_336_148_TDD, + cs_TrLogMappingUL_4DCCH_1DTCH_TDD(tsc_RB25), + p_ActTime)); + } + + /* + * @desc setup radio bearers RB10, RB11, RB12 for radio beaer subflow#1, subflow#2, subflow#3 + * Default values from 34.108 cl. 6.10.2.4.4 and 6.10.2.4.3.3 + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_SS_RB10_ToRB12_TM_Cfg (UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { // @sic R5s120953 adding parameter p_CellId sic@ + var template (value) RB_LogCH_Mapping v_RB_LogCH_Mapping_RB10 := cs_RB_LogCH_Mapping(tsc_UL_DTCH1, tsc_DL_DTCH1); + var template (value) RB_LogCH_Mapping v_RB_LogCH_Mapping_RB11 := cs_RB_LogCH_Mapping(tsc_UL_DTCH2, tsc_DL_DTCH2); + var template (value) RB_LogCH_Mapping v_RB_LogCH_Mapping_RB12 := cs_RB_LogCH_Mapping(tsc_UL_DTCH3, tsc_DL_DTCH3); + + select (f_UTRAN_CellInfo_GetFDD_TDD(p_CellId)) { + case (UTRAN_FDD) { + select (f_UTRAN_ConfigurationInfo_TestCaseRelease_Get()) { + case(FDDr8, FDDr9, FDDr10) { + f_UTRAN_CRLC_Config(cas_RB_TM_UL_Info_FDD(utran_CellDedicated, // @sic R5s110596 sic@ + tsc_RB10, + 81, + v_RB_LogCH_Mapping_RB10)); + + f_UTRAN_CRLC_Config(cas_RB_TM_UL_Info_FDD(utran_CellDedicated, // @sic R5s110596 sic@ + tsc_RB11, + 103, + v_RB_LogCH_Mapping_RB11)); + + f_UTRAN_CRLC_Config(cas_RB_TM_UL_Info_FDD(utran_CellDedicated, // @sic R5s110596 sic@ + tsc_RB12, + 60, + v_RB_LogCH_Mapping_RB12)); + } + case(FDDr11) { + f_UTRAN_CRLC_Config(cas_CRLC_SetupExtension_FDD(utran_CellDedicated, + tsc_RB10, + cs_RB_TM_UL_Info_FDD_r11(81), + v_RB_LogCH_Mapping_RB10)); + + f_UTRAN_CRLC_Config(cas_CRLC_SetupExtension_FDD(utran_CellDedicated, + tsc_RB11, + cs_RB_TM_UL_Info_FDD_r11(103), + v_RB_LogCH_Mapping_RB11)); + + f_UTRAN_CRLC_Config(cas_CRLC_SetupExtension_FDD(utran_CellDedicated, + tsc_RB12, + cs_RB_TM_UL_Info_FDD_r11(60), + v_RB_LogCH_Mapping_RB12)); + + } + case else { FatalError(__FILE__, __LINE__, "FDD release not handled");} + } + } + case (UTRAN_TDD) { + select (f_UTRAN_ConfigurationInfo_TestCaseRelease_Get()) { + case(TDDr9, TDDr10) { + f_UTRAN_CRLC_Config(cas_RB_TM_UL_Info_TDD(utran_CellDedicated, + tsc_RB10, + 81, + 81, + v_RB_LogCH_Mapping_RB10)); + + f_UTRAN_CRLC_Config(cas_RB_TM_UL_Info_TDD(utran_CellDedicated, + tsc_RB11, + 103, + 103, + v_RB_LogCH_Mapping_RB11)); + + f_UTRAN_CRLC_Config(cas_RB_TM_UL_Info_TDD(utran_CellDedicated, + tsc_RB12, + 60, + 60, + v_RB_LogCH_Mapping_RB12)); + } + case(TDDr11) { + f_UTRAN_CRLC_Config(cas_CRLC_SetupExtension_TDD(utran_CellDedicated, + tsc_RB10, + cs_RB_TM_UL_Info_TDD_r11(81), + v_RB_LogCH_Mapping_RB10)); + + f_UTRAN_CRLC_Config(cas_CRLC_SetupExtension_TDD(utran_CellDedicated, + tsc_RB11, + cs_RB_TM_UL_Info_TDD_r11(103), + v_RB_LogCH_Mapping_RB11)); + + f_UTRAN_CRLC_Config(cas_CRLC_SetupExtension_TDD(utran_CellDedicated, + tsc_RB12, + cs_RB_TM_UL_Info_TDD_r11(60), + v_RB_LogCH_Mapping_RB12)); + + } + + case else { + FatalError(__FILE__, __LINE__, "Cell is neither FDD nor TDD"); + } + } + } + } + } + + /* + * @desc cofigure radio bearers : RB25 DTCH on HS-DSCH and DTCH on DPCH associated HS-DSCH + * @param p_CellId + * @param p_PayloadSize + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_SS_RB25_AM_PS_Cfg(UTRAN_CellId_Type p_CellId, + integer p_PayloadSize) runs on UTRAN_PTC + { + select (f_UTRAN_CellInfo_GetFDD_TDD(p_CellId)) { + case (UTRAN_FDD) { + select (f_UTRAN_ConfigurationInfo_TestCaseRelease_Get()) { + case (FDDr11) { + f_UTRAN_CRLC_Config(cas_CRLC_SetupExtension_FDD(utran_CellDedicated,tsc_RB25,cs_RB25_AM_Info_FDD_r11(p_PayloadSize, cds_UL_AM_RLC_HSDPA), cs_RB25_LogChMapping)); + } + case else { + f_UTRAN_CRLC_Config(cas_RB25_AM_Info_FDD(-, -, p_PayloadSize)); // @sic R5s110596 sic@ + } + } + } + case (UTRAN_TDD) { + select (f_UTRAN_ConfigurationInfo_TestCaseRelease_Get()) { + case (TDDr11) { + f_UTRAN_CRLC_Config(cas_CRLC_SetupExtension_TDD(utran_CellDedicated,tsc_RB25,cs_RB25_AM_Info_TDD_r11(p_PayloadSize, cds_UL_AM_RLC_HSDPA), cs_RB25_LogChMapping)); + } + case else { + f_UTRAN_CRLC_Config(cas_RB25_AM_Info_TDD(-, -, p_PayloadSize)); // @sic R5s110596 sic@ + } + } + } + case else { + FatalError(__FILE__, __LINE__, "Cell is neither FDD nor TDD"); + } + } + } + + /* + * @desc Common step to configure RB25 for configurations A12, A13, A14 and A15 + * From FDD TTCN2 test step ts_SS_RLC_Setup_HSU + * @param p_CellId + * @status APPROVED (LTE_IRAT) + */ + function f_SS_RB25_AM_HSPA_Cfg(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + if (f_UTRAN_CellInfo_GetFDD_TDD(p_CellId) == UTRAN_FDD) { + f_UTRAN_CRLC_Config(cas_RB25_AM_Info_FDD(-, -, -, cds_UL_AM_RLC_HSU)); + } + else { + f_UTRAN_CRLC_Config(cas_RB25_AM_Info_TDD(-, -, -, cds_UL_AM_RLC_HSU)); + } + } + + /* + * @desc If no activation time is specified "now" will be used. This is to be used for HOs to UTRAN. + * @param p_CellId + * @param p_ActTime (default value: cs_ActivateNow) + * @param p_LoopbackRLC_PDU (default value: false) + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_SS_Config_HSDPA_64kUL_RAB(UTRAN_CellId_Type p_CellId, + template (value) SS_ActivationTime p_ActTime := cs_ActivateNow, + boolean p_LoopbackRLC_PDU := false) // @sic R5s130195 PDCP sic@ + runs on UTRAN_PTC + { + select (f_UTRAN_ConfigurationInfo_TestCaseRelease_Get()) { // @sic R5s130195 Utran Release sic@ + case (FDDr8) { + // Configure SS in FDD r8 + f_SS_HS_DSCH_PDSCH_Cfg_DPCH_Modify_FDD(p_CellId, p_ActTime); + } + case (FDDr9) { + // Configure SS in FDD r9 + f_SS_HS_DSCH_PDSCH_Cfg_DPCH_Modify_FDD_r9(p_CellId, p_ActTime); + } + case (FDDr10) { + // Configure SS in FDD r10 + f_SS_HS_DSCH_PDSCH_Cfg_DPCH_Modify_FDD_r10(p_CellId, p_ActTime); + } + case (FDDr11) { + // Configure SS in FDD r11 + f_SS_HS_DSCH_PDSCH_Cfg_DPCH_Modify_FDD_r11(p_CellId, p_ActTime); + } + case (TDDr9) { + f_SS_HS_DSCH_PDSCH_Cfg_DPCH_Modify_TDD(p_CellId, p_ActTime); + } + case (TDDr10){ + f_SS_HS_DSCH_PDSCH_Cfg_DPCH_Modify_TDD_r10(p_CellId, p_ActTime); + } + case (TDDr11){ + f_SS_HS_DSCH_PDSCH_Cfg_DPCH_Modify_TDD_r11(p_CellId, p_ActTime); + } + case else { + FatalError(__FILE__, __LINE__, "Not a valid message class"); + } + } + + // Setup radio bearer RB25 + f_SS_RB25_AM_PS_Cfg(p_CellId, 320); + + // Configure PDCP when there is no loopback of RLC PDU @sic R5s130195 PDCP sic@ + if (not(p_LoopbackRLC_PDU)) { + f_SS_RB_ConfigurePDCP(p_CellId, tsc_RB25); + } + + f_UTRAN_CellInfo_SetConfigType(p_CellId, cell_DCH_HS_DSCH); + } + + /* + * @desc send RB setup to the UE (on RB2) and wait for local confirmation when requested + * @param p_RB_SetUp + * @param p_CnfFlag (default value: true) + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_UTRAN_RB_SetUp_Send(template (value) DL_DCCH_Message p_RB_SetUp, + boolean p_CnfFlag := true) runs on UTRAN_PTC + { + var UTRAN_CellId_Type v_CellId := utran_CellDedicated; //@sic R5s110210 sic@ + + if (p_CnfFlag) { + U_AM.send(cas_RLC_Data_Req_Cnf(v_CellId, tsc_RB2, tsc_Mui, p_RB_SetUp)); + // Receive Acknowledgement on the RB Setup message + U_AM.receive (car_AM_DataMuiCnf (v_CellId, tsc_RB2, tsc_Mui)); + } + else { + U_AM.send(cas_RLC_Data_Req_NoCnf(v_CellId, tsc_RB2, p_RB_SetUp)); + } + } + + /* + * @desc returns the RADIO BEARER SETUP for 64k PS depending on the message class + * @param p_CellId + * @param p_CfnInfo + * @return template (value) DL_DCCH_Message + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_Get_cs_108_RB_SetUp64k_PS(UTRAN_CellId_Type p_CellId, + UTRAN_CFN_Info_Type p_CfnInfo) + runs on UTRAN_PTC return template (value) DL_DCCH_Message + { // @sic R5-123750 sic@ + + var template (value) DL_DCCH_Message v_RadioBearerSetup; + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); // @sic R5s130195 Utran Release sic@ + + select (f_UTRAN_ConfigurationInfo_TestCaseRelease_Get()) { + case (FDDr8) { + v_RadioBearerSetup := cs_108_RB_SetUp64k_PS_FDD(v_SecurityInfo.dl_IntegrityCheckInfo, + p_CfnInfo.actTime, + tsc_RAB_DefPS, //@sic R5s110210 sic@ + f_UTRAN_CellInfo_GetULScrmCode_FDD (p_CellId), + f_UTRAN_CellInfo_GetPriScrmCode_FDD (p_CellId)); + } + case (FDDr9) { + v_RadioBearerSetup := cs_108_RB_SetUp64k_PS_r9_FDD(v_SecurityInfo.dl_IntegrityCheckInfo, + p_CfnInfo.actTime, + tsc_RAB_DefPS, + f_UTRAN_CellInfo_GetULScrmCode_FDD (p_CellId), + f_UTRAN_CellInfo_GetPriScrmCode_FDD (p_CellId)); + } + case (FDDr10) { + v_RadioBearerSetup := cs_108_RB_SetUp64k_PS_r10_FDD(v_SecurityInfo.dl_IntegrityCheckInfo, + p_CfnInfo.actTime, + tsc_RAB_DefPS, + f_UTRAN_CellInfo_GetULScrmCode_FDD (p_CellId), + f_UTRAN_CellInfo_GetPriScrmCode_FDD (p_CellId)); + } + case (FDDr11) { + v_RadioBearerSetup := cs_108_RB_SetUp64k_PS_FDD_r11(v_SecurityInfo.dl_IntegrityCheckInfo, + p_CfnInfo.actTime, + tsc_RAB_DefPS, + f_UTRAN_CellInfo_GetULScrmCode_FDD (p_CellId), + f_UTRAN_CellInfo_GetPriScrmCode_FDD (p_CellId)); + } + case (TDDr9) { + v_RadioBearerSetup := cs_108_RB_SetUp64k_PS_TDD(v_SecurityInfo.dl_IntegrityCheckInfo, + p_CfnInfo.actTime, + tsc_RAB_DefPS, //@sic R5s110210 sic@ + f_UTRAN_CellInfo_GetCellParametersID_TDD (p_CellId)); + } + case (TDDr10){ + v_RadioBearerSetup := cs_108_RB_SetUp64k_PS_r10_TDD(v_SecurityInfo.dl_IntegrityCheckInfo, + p_CfnInfo.actTime, + tsc_RAB_DefPS, + f_UTRAN_CellInfo_GetCellParametersID_TDD (p_CellId)); + } + case (TDDr11){ + v_RadioBearerSetup := cs_108_RB_SetUp64k_PS_r11_TDD(v_SecurityInfo.dl_IntegrityCheckInfo, + p_CfnInfo.actTime, + tsc_RAB_DefPS, + f_UTRAN_CellInfo_GetCellParametersID_TDD (p_CellId)); + } + case else { + FatalError(__FILE__, __LINE__, "Not a valid message class"); + } + } + return v_RadioBearerSetup; + } + + /* + * @desc returns the RADIO BEARER SETUP depending on the message class + * @param p_CellId + * @param p_CfnInfo + * @return template (value) DL_DCCH_Message + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_Get_cs_108_RB_SetUpHS_FromDCH_UL_64k(UTRAN_CellId_Type p_CellId, + UTRAN_CFN_Info_Type p_CfnInfo) runs on UTRAN_PTC return template (value) DL_DCCH_Message + { // @sic R5-123750 sic@ + + var template (value) DL_DCCH_Message v_RadioBearerSetup; + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + + select (f_UTRAN_ConfigurationInfo_TestCaseRelease_Get()) { // @sic R5s130195 Utran Release sic@ + case (FDDr8) { + v_RadioBearerSetup := cs_108_RB_SetUpHS_FromDCH_UL_64k_FDD (v_SecurityInfo.dl_IntegrityCheckInfo, + p_CfnInfo.actTime, + tsc_RAB_DefPS, //@sic R5s110210 sic@ + f_UTRAN_CellInfo_GetULScrmCode_FDD (p_CellId), // @sic R5s120686 sic@ + f_UTRAN_CellInfo_GetPriScrmCode_FDD (p_CellId)); + } + case (FDDr9) { + v_RadioBearerSetup := cs_108_RB_SetUpHS_FromDCH_UL_64k_r9_FDD (v_SecurityInfo.dl_IntegrityCheckInfo, + p_CfnInfo.actTime, + tsc_RAB_DefPS, //@sic R5s110210 sic@ + f_UTRAN_CellInfo_GetULScrmCode_FDD (p_CellId), // @sic R5s120686 sic@ + f_UTRAN_CellInfo_GetPriScrmCode_FDD (p_CellId)); + } + case (FDDr10) { + v_RadioBearerSetup := cs_108_RB_SetUpHS_FromDCH_UL_64k_r10_FDD (v_SecurityInfo.dl_IntegrityCheckInfo, + p_CfnInfo.actTime, + tsc_RAB_DefPS, + f_UTRAN_CellInfo_GetULScrmCode_FDD (p_CellId), + f_UTRAN_CellInfo_GetPriScrmCode_FDD (p_CellId)); + } + case (FDDr11) { + v_RadioBearerSetup := cs_108_RB_SetUpHS_FromDCH_UL_64k_FDD_r11 (v_SecurityInfo.dl_IntegrityCheckInfo, + p_CfnInfo.actTime, + tsc_RAB_DefPS, + f_UTRAN_CellInfo_GetULScrmCode_FDD (p_CellId), + f_UTRAN_CellInfo_GetPriScrmCode_FDD (p_CellId)); + } + case (TDDr9) { + v_RadioBearerSetup := cs_108_RB_SetUpHS_FromDCH_UL_64k_TDD (v_SecurityInfo.dl_IntegrityCheckInfo, + p_CfnInfo.actTime, + tsc_RAB_DefPS, //@sic R5s110210 sic@ + f_UTRAN_CellInfo_GetCellParametersID_TDD(p_CellId)); + } + case (TDDr10) { + v_RadioBearerSetup := cs_108_RB_SetUpHS_FromDCH_UL_64k_r10_TDD (v_SecurityInfo.dl_IntegrityCheckInfo, + p_CfnInfo.actTime, + tsc_RAB_DefPS, //@sic R5s110210 sic@ + f_UTRAN_CellInfo_GetCellParametersID_TDD(p_CellId)); + } + case (TDDr11) { + v_RadioBearerSetup := cs_108_RB_SetUpHS_FromDCH_UL_64k_r11_TDD (v_SecurityInfo.dl_IntegrityCheckInfo, + p_CfnInfo.actTime, + tsc_RAB_DefPS, + f_UTRAN_CellInfo_GetCellParametersID_TDD(p_CellId)); + } + case else { + FatalError(__FILE__, __LINE__, ""); + } + } + return v_RadioBearerSetup; + } + + /* + * @desc returns the RADIO BEARER SETUP depending on the message class + * @return template (value) DL_DCCH_Message + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_Get_cs_108_RB_SetUpFACH_PS() runs on UTRAN_PTC return template (value) DL_DCCH_Message + { // @sic R5-123750 sic@ + + var template (value) DL_DCCH_Message v_RadioBearerSetup; + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + var C_RNTI v_New_CRNTI := '1010101010101010'B; + + select (f_UTRAN_ConfigurationInfo_TestCaseRelease_Get()) { // @sic R5s130195 Utran Release sic@ + case (FDDr8) { + v_RadioBearerSetup := cs_108_RB_SetUpFACH_PS_FDD(v_SecurityInfo.dl_IntegrityCheckInfo, v_New_CRNTI, tsc_RAB_DefPS); + } + case (FDDr9) { + v_RadioBearerSetup := cs_108_RB_SetUpFACH_PS_FDD_r9(v_SecurityInfo.dl_IntegrityCheckInfo, v_New_CRNTI, tsc_RAB_DefPS); + } + case (FDDr10) { + v_RadioBearerSetup := cs_108_RB_SetUpFACH_PS_FDD_r10(v_SecurityInfo.dl_IntegrityCheckInfo, v_New_CRNTI, tsc_RAB_DefPS); + } + case (FDDr11) { + v_RadioBearerSetup := cs_108_RB_SetUpFACH_PS_FDD_r11(v_SecurityInfo.dl_IntegrityCheckInfo, v_New_CRNTI, tsc_RAB_DefPS); + } + case (TDDr9) { + v_RadioBearerSetup := cs_108_RB_SetUpFACH_PS_TDD(v_SecurityInfo.dl_IntegrityCheckInfo, v_New_CRNTI, tsc_RAB_DefPS); + } + case (TDDr10) { + v_RadioBearerSetup := cs_108_RB_SetUpFACH_PS_TDD_r10(v_SecurityInfo.dl_IntegrityCheckInfo, v_New_CRNTI, tsc_RAB_DefPS); + } + case (TDDr11) { + v_RadioBearerSetup := cs_108_RB_SetUpFACH_PS_TDD_r11(v_SecurityInfo.dl_IntegrityCheckInfo, v_New_CRNTI, tsc_RAB_DefPS); + } + case else { + FatalError(__FILE__, __LINE__, ""); + } + } + return v_RadioBearerSetup; + } + + /* + * @desc returns the RADIO BEARER SETUP depending on the message class + * @param p_CellId + * @param p_CfnInfo + * @return template (value) DL_DCCH_Message + * @status APPROVED (LTE_IRAT) + */ + function f_Get_cs_108_RB_SetUpSpeech (UTRAN_CellId_Type p_CellId, + UTRAN_CFN_Info_Type p_CfnInfo) runs on UTRAN_PTC return template (value) DL_DCCH_Message + { + // @sic R5-123750 sic@ + var template (value) DL_DCCH_Message v_RadioBearerSetup; + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + var UTRAN_CellInfo_Type_TDD v_CellInfoTDD; //@sic R5s110752 R5s120719 sic@ + + select (f_UTRAN_ConfigurationInfo_TestCaseRelease_Get()) { // @sic R5s130195 Utran Release sic@ + case (FDDr8) { + v_RadioBearerSetup := cs_108_RB_SetUpSpeech_FDD(v_SecurityInfo.dl_IntegrityCheckInfo, + p_CfnInfo.actTime, + tsc_RAB_DefCS, + f_UTRAN_CellInfo_GetPriScrmCode_FDD (p_CellId), + f_UTRAN_CellInfo_GetULScrmCode_FDD (p_CellId)); + } + case (FDDr9) { + v_RadioBearerSetup := cs_108_RB_SetUpSpeech_r9_FDD(v_SecurityInfo.dl_IntegrityCheckInfo, + p_CfnInfo.actTime, + tsc_RAB_DefCS, + f_UTRAN_CellInfo_GetPriScrmCode_FDD (p_CellId), + f_UTRAN_CellInfo_GetULScrmCode_FDD (p_CellId)); + } + case (FDDr10) { + v_RadioBearerSetup := cs_108_RB_SetUpSpeech_r10_FDD(v_SecurityInfo.dl_IntegrityCheckInfo, + p_CfnInfo.actTime, + tsc_RAB_DefCS, + f_UTRAN_CellInfo_GetPriScrmCode_FDD (p_CellId), + f_UTRAN_CellInfo_GetULScrmCode_FDD (p_CellId)); + } + case (FDDr11) { + v_RadioBearerSetup := cs_108_RB_SetUpSpeech_r11_FDD(v_SecurityInfo.dl_IntegrityCheckInfo, + p_CfnInfo.actTime, + tsc_RAB_DefCS, + f_UTRAN_CellInfo_GetPriScrmCode_FDD (p_CellId), + f_UTRAN_CellInfo_GetULScrmCode_FDD (p_CellId)); + } + case (TDDr9) { + v_CellInfoTDD := f_UTRAN_CellInfo_GetTDDSpecific(p_CellId); // @sic R5s120719 sic@ + v_RadioBearerSetup := cs_108_RB_SetUpSpeech_TDD(v_SecurityInfo.dl_IntegrityCheckInfo, + p_CfnInfo.actTime, + tsc_RAB_DefCS, + v_CellInfoTDD.cellParametersID); + } + case (TDDr10) { + v_CellInfoTDD := f_UTRAN_CellInfo_GetTDDSpecific(p_CellId); // @sic R5s120719 sic@ + v_RadioBearerSetup := cs_108_RB_SetUpSpeech_r10_TDD(v_SecurityInfo.dl_IntegrityCheckInfo, + p_CfnInfo.actTime, + tsc_RAB_DefCS, + v_CellInfoTDD.cellParametersID); + } + case (TDDr11) { + v_CellInfoTDD := f_UTRAN_CellInfo_GetTDDSpecific(p_CellId); // @sic R5s120719 sic@ + v_RadioBearerSetup := cs_108_RB_SetUpSpeech_r11_TDD(v_SecurityInfo.dl_IntegrityCheckInfo, + p_CfnInfo.actTime, + tsc_RAB_DefCS, + v_CellInfoTDD.cellParametersID); + } + case else { + FatalError(__FILE__, __LINE__, ""); + } + } + return v_RadioBearerSetup; + } + + + /* + * @desc returns the RADIO BEARER SETUP depending on the message class + * @param p_CellId + * @param p_CfnInfo + * @return template (value) DL_DCCH_Message + * @status APPROVED (LTE_IRAT) + */ + function f_Get_cs_108_RB_SetUpPSandConvSpeech(UTRAN_CellId_Type p_CellId, + UTRAN_CFN_Info_Type p_CfnInfo) + runs on UTRAN_PTC return template (value) DL_DCCH_Message + { // @sic R5-123750 sic@ + + var template (value) DL_DCCH_Message v_RadioBearerSetup; + var B8_Type v_RAB_ID := tsc_RAB_DefCS; + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + + select (f_UTRAN_ConfigurationInfo_TestCaseRelease_Get()) { // @sic R5s130195 Utran Release sic@ + case (FDDr8) { + v_RadioBearerSetup := cs_108_RB_SetUpPSandConvSpeech_FDD(v_SecurityInfo.dl_IntegrityCheckInfo, + p_CfnInfo.actTime, + v_RAB_ID, + f_UTRAN_CellInfo_GetPriScrmCode_FDD (p_CellId), + f_UTRAN_CellInfo_GetULScrmCode_FDD (p_CellId)); + } + case (FDDr9) { + v_RadioBearerSetup := cs_108_RB_SetUpPSandConvSpeech_r9_FDD(v_SecurityInfo.dl_IntegrityCheckInfo, + p_CfnInfo.actTime, + v_RAB_ID, + f_UTRAN_CellInfo_GetPriScrmCode_FDD (p_CellId), + f_UTRAN_CellInfo_GetULScrmCode_FDD (p_CellId)); + } + case (FDDr10) { + v_RadioBearerSetup := cs_108_RB_SetUpPSandConvSpeech_r10_FDD(v_SecurityInfo.dl_IntegrityCheckInfo, + p_CfnInfo.actTime, + v_RAB_ID, + f_UTRAN_CellInfo_GetPriScrmCode_FDD (p_CellId), + f_UTRAN_CellInfo_GetULScrmCode_FDD (p_CellId)); + } + case (FDDr11) { + v_RadioBearerSetup := cs_108_RB_SetUpPSandConvSpeech_FDD_r11(v_SecurityInfo.dl_IntegrityCheckInfo, + p_CfnInfo.actTime, + v_RAB_ID, + f_UTRAN_CellInfo_GetPriScrmCode_FDD (p_CellId), + f_UTRAN_CellInfo_GetULScrmCode_FDD (p_CellId)); + } + case (TDDr9) { + v_RadioBearerSetup := cs_108_RB_SetUpPSandConvSpeech_TDD(v_SecurityInfo.dl_IntegrityCheckInfo, + p_CfnInfo.actTime, + v_RAB_ID, + f_UTRAN_CellInfo_GetCellParametersID_TDD (p_CellId)); + } + case (TDDr10){ + v_RadioBearerSetup := cs_108_RB_SetUpPSandConvSpeech_r10_TDD(v_SecurityInfo.dl_IntegrityCheckInfo, + p_CfnInfo.actTime, + v_RAB_ID, + f_UTRAN_CellInfo_GetCellParametersID_TDD (p_CellId)); + } + case (TDDr11) { + v_RadioBearerSetup := cs_108_RB_SetUpPSandConvSpeech_TDD_r11(v_SecurityInfo.dl_IntegrityCheckInfo, + p_CfnInfo.actTime, + v_RAB_ID, + f_UTRAN_CellInfo_GetCellParametersID_TDD (p_CellId)); + } + case else { + FatalError(__FILE__, __LINE__, ""); + } + } + return v_RadioBearerSetup; + } + + /* + * @desc returns the RADIO BEARER SETUP depending on the message class + * @param p_CellId + * @param p_CfnInfo + * @return template (value) DL_DCCH_Message + * @status APPROVED (LTE_IRAT) + */ + function f_Get_cs_108_RB_SetUpPSandConvSpeech_PSexists(UTRAN_CellId_Type p_CellId, + UTRAN_CFN_Info_Type p_CfnInfo) + runs on UTRAN_PTC return template (value) DL_DCCH_Message + { // @sic R5-123750 sic@ + + var template (value) DL_DCCH_Message v_RadioBearerSetup; + var B8_Type v_RAB_ID := tsc_RAB_DefPS; //@sic R5s120668 sic@ + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + + select (f_UTRAN_ConfigurationInfo_TestCaseRelease_Get()) { // @sic R5s130195 Utran Release sic@ + case (FDDr8) { + v_RadioBearerSetup := cs_108_RB_SetUpPSandConvSpeech_PSexists_FDD(v_SecurityInfo.dl_IntegrityCheckInfo, + p_CfnInfo.actTime, + v_RAB_ID, + f_UTRAN_CellInfo_GetPriScrmCode_FDD(p_CellId), + f_UTRAN_CellInfo_GetULScrmCode_FDD(p_CellId)); + } + case (FDDr9) { + v_RadioBearerSetup := cs_108_RB_SetUpPSandConvSpeech_PSexists_FDD_r9(v_SecurityInfo.dl_IntegrityCheckInfo, + p_CfnInfo.actTime, + v_RAB_ID, + f_UTRAN_CellInfo_GetPriScrmCode_FDD(p_CellId), + f_UTRAN_CellInfo_GetULScrmCode_FDD(p_CellId)); + } + case (FDDr10) { + v_RadioBearerSetup := cs_108_RB_SetUpPSandConvSpeech_PSexists_FDD_r10(v_SecurityInfo.dl_IntegrityCheckInfo, + p_CfnInfo.actTime, + v_RAB_ID, + f_UTRAN_CellInfo_GetPriScrmCode_FDD(p_CellId), + f_UTRAN_CellInfo_GetULScrmCode_FDD(p_CellId)); + } + case (FDDr11) { + v_RadioBearerSetup := cs_108_RB_SetUpPSandConvSpeech_PSexists_FDD_r11(v_SecurityInfo.dl_IntegrityCheckInfo, + p_CfnInfo.actTime, + v_RAB_ID, + f_UTRAN_CellInfo_GetPriScrmCode_FDD(p_CellId), + f_UTRAN_CellInfo_GetULScrmCode_FDD(p_CellId)); + } + case (TDDr9) { + v_RadioBearerSetup := cs_108_RB_SetUpPSandConvSpeech_PSexists_TDD(v_SecurityInfo.dl_IntegrityCheckInfo, //@sic R5s130606 sic@ + p_CfnInfo.actTime, + v_RAB_ID, + f_UTRAN_CellInfo_GetCellParametersID_TDD(p_CellId)); + } + case (TDDr10){ + v_RadioBearerSetup := cs_108_RB_SetUpPSandConvSpeech_PSexists_TDD_r10(v_SecurityInfo.dl_IntegrityCheckInfo, //@sic R5s130606 sic@ + p_CfnInfo.actTime, + v_RAB_ID, + f_UTRAN_CellInfo_GetCellParametersID_TDD(p_CellId)); + } + case (TDDr11) { + v_RadioBearerSetup := cs_108_RB_SetUpPSandConvSpeech_PSexists_TDD_r11(v_SecurityInfo.dl_IntegrityCheckInfo, //@sic R5s130606 sic@ + p_CfnInfo.actTime, + v_RAB_ID, + f_UTRAN_CellInfo_GetCellParametersID_TDD(p_CellId)); + } + case else { + FatalError(__FILE__, __LINE__, ""); + } + } + return v_RadioBearerSetup; + } + + /* @desc To setup a PS RADIO BEARER and to reconfigure the SS accordingly. + * See TS 36.508 cl. 4.8.3 for more details what bearers are configured. + * @param p_CellId + * @param p_RbType + * @param p_WaitForSetupCmpl (default value: true) + * @param p_LoopbackRLC_PDU (default value: false) + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_UTRAN_RB_SetUp_PS_RAB(UTRAN_CellId_Type p_CellId, + RB_ConfigType p_RbType, + boolean p_WaitForSetupCmpl := true, + boolean p_LoopbackRLC_PDU := false) // @sic R5s130195 PDCP sic@ + runs on UTRAN_PTC + { /* @sic R5s120139 - Additional Changes sic@ */ + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + var UTRAN_CFN_Info_Type v_CfnInfo := f_CalculateActTime (p_CellId); + var template (value) SS_ActivationTime v_SS_ActivationTime := cs_ActivateCFN (v_CfnInfo.actTime); + var C_RNTI v_New_CRNTI := '1010101010101010'B; + var boolean v_CnfReq := true; //@sic R5s110210 Additional MCC160 changes sic@ + + if (not p_WaitForSetupCmpl) { // @sic R5s120139 sic@ + // estimate the start value since we cannot take it from the Setup Complete message + v_SecurityInfo.start_PS := f_CalculateStartValue_ConnectedMode(v_SecurityInfo.start_PS); + f_UTRAN_Security_Set(v_SecurityInfo); + } + + select (p_RbType) { + case (cell_DCH_64kPS_RAB_SRB) { + // Send RB_Set Up for DCH 64k PS for FDD + f_UTRAN_RB_SetUp_Send (f_Get_cs_108_RB_SetUp64k_PS(p_CellId, v_CfnInfo)); + + //Configure 64k PS RAB at SS + f_SS_Config_64kPS_RAB (p_CellId, v_SS_ActivationTime, p_LoopbackRLC_PDU); // @sic R5s130195 PDCP sic@ + } + case (cell_DCH_HS_DSCH) { + f_UTRAN_RB_SetUp_Send (f_Get_cs_108_RB_SetUpHS_FromDCH_UL_64k(p_CellId, v_CfnInfo)); //@sic R5s110210 Additional MCC160 changes sic@ + + // Configure HSDPA (64k in UL) RAB at SS + f_SS_Config_HSDPA_64kUL_RAB (p_CellId, v_SS_ActivationTime, p_LoopbackRLC_PDU); // @sic R5s130195 PDCP sic@ + } + case (cell_FACH_PS){ + // Send RB_Set Up + f_UTRAN_RB_SetUp_Send (f_Get_cs_108_RB_SetUpFACH_PS(), + not v_CnfReq); //@sic R5s110210 Additional MCC160 changes sic@ + //Delay after sending the RAB SETUP in CELL FACH state; legacy of TTCN-2 suite; kept as exception only + if (f_UTRAN_CellInfo_GetFDD_TDD(p_CellId) == UTRAN_TDD) + { + f_Delay(tsc_DelaySetupFACH_TDD); //@sic R5s140468 sic@ + } else { + f_Delay(tsc_DelaySetupFACH); + }; + + //Reconfigure SS with the new C-RNTI + f_UTRAN_SS_New_CRNTI(p_CellId, v_New_CRNTI); + // Configure PDCP when there is no loopback of RLC PDU @sic R5s130195 PDCP sic@ + if (not(p_LoopbackRLC_PDU)) { f_SS_RB_ConfigurePDCP(p_CellId, tsc_RB20); } + + f_UTRAN_CellInfo_SetConfigType (p_CellId, cell_FACH_PS); + } + case (cell_DCH_E_HS) { + FatalError(__FILE__, __LINE__, "Configuration not supported"); + } + case else { + FatalError(__FILE__, __LINE__, "Invalid configuration"); + } + } + if (p_WaitForSetupCmpl) { + f_UTRAN_RRC_ReceiveRB_SetupCmpl_PS_RAB (p_CellId, p_RbType); + } + else { // @sic R5s120139 sic@ + // just apply the ciphering at SS using the estimated start value + f_UTRAN_SS_CipheringAM_RAB_UL_DL(p_CellId, ps_domain, p_RbType, v_SecurityInfo.authKeys.AuthPS.CK); + } + } + + /* @desc To setup a Speech RADIO BEARER and to reconfigure the SS accordingly. + * See TS 36.508 cl. 4.8.3 for more details what bearers are configured. + * @param p_CellId + * @param p_USIM (default value: true) + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_RB_SetUp_Speech (UTRAN_CellId_Type p_CellId, + boolean p_USIM := true) //@sic R5s110210 sic@ + runs on UTRAN_PTC + { /* @sic R5s120139 - Additional Changes sic@ */ + var UTRAN_CFN_Info_Type v_CfnInfo := f_CalculateActTime (p_CellId); + var template (value) SS_ActivationTime v_SS_ActivationTime := cs_ActivateCFN(v_CfnInfo.actTime); + + f_UTRAN_RB_SetUp_Send (f_Get_cs_108_RB_SetUpSpeech (p_CellId, v_CfnInfo)); //@sic R5s110210 Additional MCC160 changes sic@ + + //Configure SS with for CS Speech RAB + select (f_UTRAN_ConfigurationInfo_TestCaseRelease_Get()) { // @sic R5s130195 Utran Release sic@ + case (FDDr8, FDDr9) { + f_SS_4DCH_Modify_FDD (p_CellId, + v_SS_ActivationTime, // @sic R5s130561 sic@ + cs_DL_CommonInformationRB_SetUpSpeech (tsc_DL_DPCH1_SFP_Speech), + cs_UL_DPCH_Info_FDD (tsc_UL_DPDCH_SF_Speech, + pl0_84, + f_UTRAN_CellInfo_GetULScrmCode_FDD (p_CellId)), + omit); + } + case (FDDr10) { + f_SS_4DCH_Modify_FDD_r10 (p_CellId, + v_SS_ActivationTime, // @sic R5s130561 sic@ + cs_DL_CommonInformationRB_SetUpSpeech_r10 (tsc_DL_DPCH1_SFP_Speech), + cs_UL_DPCH_Info_FDD (tsc_UL_DPDCH_SF_Speech, + pl0_84, + f_UTRAN_CellInfo_GetULScrmCode_FDD (p_CellId)), + omit); + + } + case (FDDr11) { + f_SS_4DCH_Modify_FDD_r11 (p_CellId, + v_SS_ActivationTime, + cs_DL_CommonInformationRB_SetUpSpeech_r11 (tsc_DL_DPCH1_SFP_Speech), + cs_UL_DPCH_Info_FDD_r11 (tsc_UL_DPDCH_SF_Speech, + pl0_84, + f_UTRAN_CellInfo_GetULScrmCode_FDD (p_CellId)), + omit); + + } + case (TDDr9) { + f_SS_4DCH_Modify_TDD (p_CellId, + v_SS_ActivationTime, // @sic R5s130561 sic@ + cs_UL_DPCH_Speech_TDD, + omit); + } + case (TDDr10) { + f_SS_4DCH_Modify_TDD_r10 (p_CellId, + v_SS_ActivationTime, // @sic R5s130561 sic@ + cs_UL_DPCH_Speech_TDD, + omit); + } + case (TDDr11) { + f_SS_4DCH_Modify_TDD_r11 (p_CellId, + v_SS_ActivationTime, + cs_UL_DPCH_Speech_TDD_r11, + omit); + } + case else { + FatalError(__FILE__, __LINE__, ""); + } + } + + f_SS_RB10_ToRB12_TM_Cfg (p_CellId); // @sic R5s110596 R5s120953 sic@ + + //Save cell configuration + f_UTRAN_CellInfo_SetConfigType (p_CellId, cell_DCH_Speech); + + f_UTRAN_RRC_ReceiveRB_SetupCmpl_Speech (p_CellId, v_CfnInfo.actTime, p_USIM); + } + + /* + * @desc To establish mobile originated PDP Context. + * This test step will send PDP Context Accept on CellDedicated + * @param p_IP_TypeNo + * @param p_Addr + * @param p_LenOct + * @param p_Ti_S + * @param p_QualityOfService + * @param p_RB_ConfigType + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_SendActivatePDP_Accept (template (value) PDP_TypeNo p_IP_TypeNo, + template (omit) AddressInfo p_Addr, + template (value) Type4Length_Type p_LenOct, + TI p_Ti_S, + template (value) QualityOfService p_QualityOfService, + RB_ConfigType p_RB_ConfigType) runs on UTRAN_PTC + { + var template (value) LLC_SAPI v_LLC_SAPI := cs_LLC_SAPI_UMTS; + var template (value) QualityOfService v_QualityOfService; + var template (value) PktDataProtoAddr v_PktDataProtoAddr := cs_PktDataProtoAddrMT (p_LenOct, p_IP_TypeNo, p_Addr); + + if (pc_GERAN){//UE support GERAN => send with LLC SAPI set as 3 + v_LLC_SAPI := cs_LLC_SAPI_03; // @sic R5s110515 sic@ + } + + select (p_RB_ConfigType) { + case (cell_DCH_64kPS_RAB_SRB) { + v_QualityOfService := cs_QoS_InteractiveOrBackgroundMT (p_QualityOfService.delayClass, p_QualityOfService.trafficClass); + } + case (cell_FACH_PS, cell_FACH_HS) { // Acc to 34.123-3 Table 8.10.2 @sic R5-133508 sic@ + v_QualityOfService := cs_QoS_InteractiveOrBackgroundMT_32kbps (p_QualityOfService.delayClass, p_QualityOfService.trafficClass); + } + case (cell_DCH_HS_DSCH) { + v_QualityOfService := cds_QoS_InteractiveOrBackgroundMT_HS(p_QualityOfService.delayClass, + p_QualityOfService.trafficClass, + p_QualityOfService.peakThroughput, + p_QualityOfService.maxSduSize, + p_QualityOfService.maxBitRateUL, + p_QualityOfService.maxBitRateDL, + p_QualityOfService.maxBitRateDL_Ext); + } + case else { + FatalError(__FILE__, __LINE__, "Radio Bearar configuration not supported"); + } + } + + //Send PDP Context Activation Accept + U_Dc.send (cas_DataReq_PS (utran_CellDedicated, // @sic R5s110465 sic@ + tsc_RB3, + cs_U_ActivatePDPContextAccept(cs_ActPDP_ContextAcpMT_Common (p_Ti_S, + v_LLC_SAPI, + v_QualityOfService, + cs_RadioPriorityHigh (omit), + v_PktDataProtoAddr, + omit, + omit)))); + } + + //------------------------------------------------------------------------------------ + // Physical Channel Reconfiguration - Configuration of Compressed Mode in UE and SS + //------------------------------------------------------------------------------------ + + /* + * @desc Performs activation of compressed mode (through Physical channel reconfiguration) for TCs 8_4_2_2 and 8_4_2_4 + * NOTE: compressed mode is only activated for FDD and when pc_UTRA_CompressedModeRequired is set + * @param p_CellId + * @param p_TGPS_Status_r8_Type .. cs_TGPS_Status_Active or cs_TGPS_Status_Deactive + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_UTRAN_PhyChReconf_InterRatCompresseModeSet_Common(UTRAN_CellId_Type p_CellId, + template (value) TGPS_Status_r8_Type p_TGPS_Status_r8_Type) runs on UTRAN_PTC + { // @sic R5s120686 sic@ + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI; + var RB_ConfigType v_CellConfig := f_UTRAN_CellInfo_GetConfigType(p_CellId); + var template (value) DL_CommonInformation_r8 v_DL_CommonInformation; + var SF512_AndCodeNumber v_SF512_AndCodeNumber; + var SF512_AndPilot v_SF512_AndPilot := tsc_DL_DPCH1_SFP_SRB; + var PositionFixedOrFlexible v_PositionFixedOrFlexible := flexible; + var boolean v_TfciExistence := false; + var DL_TxPower v_DL_TxPower; + var UTRAN_FDD_TDD_Type v_FDD_TDD_Mode := f_UTRAN_CellInfo_GetFDD_TDD(p_CellId); + var UL_ScramblingCode v_UL_ScramblingCode; + var template (value) UL_DL_Mode v_UL_DL_Mode_ULDL := cs_UL_DL_Mode_ULDL_HLS; + var template (value) UL_DL_Mode v_UL_DL_Mode_ULonly := cs_UL_DL_Mode_UL_HLS; + var template (value) UL_DL_Mode v_UL_DL_Mode_DLonly := cs_UL_DL_Mode_DL_HLS; + var template (value) UL_DL_Mode v_UL_DL_Mode; + + select (v_CellConfig) { + case (cell_DCH_Speech) { + FatalError (__FILE__,__LINE__, "Speech branch not yet supported"); + } + case (cell_DCH_64kPS_RAB_SRB) { + v_SF512_AndCodeNumber := tsc_DL_DPCH1_ChC_64k_PS; + v_SF512_AndPilot := tsc_DL_DPCH1_SFP_64k_PS; + v_PositionFixedOrFlexible := flexible; + v_TfciExistence := true; + v_DL_TxPower := tsc_DL_TxPower_DPCH_64k; + } + case (cell_DCH_StandAloneSRB) { + v_SF512_AndCodeNumber := tsc_DL_DPCH1_ChC_SRB; + v_SF512_AndPilot := tsc_DL_DPCH1_SFP_SRB; + v_PositionFixedOrFlexible := fixed; + v_DL_TxPower := tsc_DL_TxPower_DPCH; + v_UL_DL_Mode_ULDL := cs_UL_DL_Mode_ULDL_SF2; + v_UL_DL_Mode_ULonly := cs_UL_DL_Mode_UL_SF2; + v_UL_DL_Mode_DLonly := cs_UL_DL_Mode_DL_SF2; + } + case (cell_DCH_HS_DSCH) { // @sic R5s120535 sic@ + v_SF512_AndPilot := tsc_DL_DPCH1_SFP_SRB_3_4k; + v_SF512_AndCodeNumber := tsc_Sfc256_C0; + v_PositionFixedOrFlexible := fixed; // Anritsu_8424 - fixed postion must used + v_TfciExistence := false; // Anritsu_8424 - No TCFI + v_DL_TxPower := tsc_DL_TxPower_DPCH; + v_UL_DL_Mode_ULDL := cs_UL_DL_Mode_ULDL_HSDPA; + v_UL_DL_Mode_ULonly := cs_UL_DL_Mode_UL_HLS; + v_UL_DL_Mode_DLonly := cs_UL_DL_Mode_DL_SF2; // Anritsu_8424 - SF/2 must be used for HSDPA + } + case (cell_DCH_E_HS) { + FatalError (__FILE__,__LINE__, "HSDPA/HSUPA branch not supported"); + } + case else { + FatalError (__FILE__,__LINE__, "Invalid Cell configuration"); + } + } + + if (v_FDD_TDD_Mode == UTRAN_FDD) { + v_UL_ScramblingCode := f_UTRAN_CellInfo_GetULScrmCode_FDD(p_CellId); + + if (not pc_InterRAT_UL_CompressedModeRequired and not pc_InterRAT_DL_CompressedModeRequired) { + // Compressed mode does not need to be configured + return; + } + else if (pc_InterRAT_UL_CompressedModeRequired and pc_InterRAT_DL_CompressedModeRequired) { + v_UL_DL_Mode := v_UL_DL_Mode_ULDL; + } + else if (pc_InterRAT_DL_CompressedModeRequired) { + v_UL_DL_Mode := v_UL_DL_Mode_DLonly; + v_TfciExistence := true; + } + else if (pc_InterRAT_UL_CompressedModeRequired) { + v_UL_DL_Mode := v_UL_DL_Mode_ULonly; + v_TfciExistence := true; + } + else { + FatalError (__FILE__,__LINE__, "Invalid PICS settings"); + } + + // Transmit Physical Channel Configuration including Compressed Mode parameters for UL and/or DL + + v_DL_CommonInformation := cs_DL_CommonInformationRB_SetUp_FDD(v_SF512_AndPilot, + v_PositionFixedOrFlexible, + v_TfciExistence, + cs_DPCH_CompressedModeInfo(p_TGPS_Status_r8_Type, v_UL_DL_Mode), + omit); + + U_AM.send(cas_RLC_Data_Req_NoCnf(utran_CellDedicated, + tsc_RB2, + cs_PhysicalChannelReconfiguration(v_SecurityInfo.dl_IntegrityCheckInfo, + v_RRC_TI, + omit, + v_DL_CommonInformation))); + if (pc_InterRAT_DL_CompressedModeRequired) { + // Configure compressed mode in SS DL + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_FDD(p_CellId, + tsc_DL_DPCH1, + cs_DPCHInfo_DL_FDD(cs_DL_DPCH_FDD(v_DL_CommonInformation, + v_SF512_AndCodeNumber, + -, + v_DL_TxPower)), + cs_ActivateNow, + false)); // @sic R5s120462 sic@ + } + if (pc_InterRAT_UL_CompressedModeRequired) { + // Configure compressed mode in SS UL + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_FDD(p_CellId, + tsc_UL_DPCH1, + cs_DPCHInfo_UL_FDD(cs_UL_DPCH_Info_FDD(tsc_UL_DPDCH_SF_64k_PS, + pl0_96, + v_UL_ScramblingCode)), + cs_ActivateNow, + false)); // @sic R5s120462 sic@ + } + + // Receive Physical Channel Reconfiguration Complete + U_AM.receive(car_RLC_Data_Ind(utran_CellDedicated, + tsc_RB2, + cr_PhysicalChannelReconfigurationComplete(v_RRC_TI))); + } + else { + FatalError (__FILE__,__LINE__, "No compressed mode needed for TDD "); + } + } + + /* + * @desc Wrapper function + * @param p_CellId + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_UTRAN_PhyChReconf_InterRatCompresseModeSet_842x(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { // @sic R5s120686 sic@ + f_UTRAN_PhyChReconf_InterRatCompresseModeSet_Common(p_CellId, cs_TGPS_Status_Deactive); + } + + /* + * @desc Wrapper function + * @param p_CellId + * @param p_Tgcfn + * @status + */ + function f_UTRAN_PhyChReconf_InterRatCompresseModeActivate(UTRAN_CellId_Type p_CellId, + TGCFN p_Tgcfn) runs on UTRAN_PTC // @sic R5-123655 sic@ + { + f_UTRAN_PhyChReconf_InterRatCompresseModeSet_Common(p_CellId, cs_TGPS_Status_Active(p_Tgcfn)); + } + + //------------------------------------------------------------------------------------ + // Radio Bearer Establishement in UTRAN + //------------------------------------------------------------------------------------ + + /* + * @desc Performs UTRA PS RB Establishment according to TS 34.108 subclause 7.4.2 in a UTRAN cell. + * @param p_CellId + * @param p_RB_Configuration .. Radio Bearer type to be configured + * @param p_LoopBack (default: false) .. set to true if do not need to trigger UE to initiate call (as in loopback) + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_UE_PsRB_Est(UTRAN_CellId_Type p_CellId, + RB_ConfigType p_RB_Configuration, + boolean p_LoopBack := false) runs on UTRAN_PTC + { + var template (value) EstablishmentCause v_EstCause := f_GetMoEstCause(); + var RB_ConfigType v_CellConfiguration := f_UTRAN_CellInfo_GetConfigType(p_CellId); + var ACTIVATEPDPCONTEXTREQUESTul v_ActPdpContextReq; + var template (value) PktDataProtoAddr v_ExpectedPDN_Address; + var boolean v_NewKeyFlag := true; + var TI v_Ti_R, v_Ti_S;// Transaction Identifier. r = value used to receive CC PDU. s = value used to send CC PDU. + var template (value) QualityOfService v_QualityOfService; + var octetstring v_LAC, v_RAC; + var bitstring v_Ptmsi_Def := oct2bit(px_PTMSI_Def); + var CoOrd_GUTIParam_Type v_GUTI; + var integer v_DedicatedId := 1; + + //Init QoS and PDN Address parameters only if PS RAB is to be configured + if ((p_RB_Configuration == cell_DCH_64kPS_RAB_SRB) or + (p_RB_Configuration == cell_DCH_HS_DSCH) or + (p_RB_Configuration == cell_DCH_E_HS) or + (p_RB_Configuration == cell_FACH_PS) or + (p_RB_Configuration == cell_FACH_HS)) + { + v_ExpectedPDN_Address := f_UG_GetPktDataProtoAddr (true); + v_QualityOfService := f_UTRAN_InitialiseQoS (p_CellId, p_RB_Configuration); + } + else + { + FatalError(__FILE__, __LINE__, "Configuration not supported"); + } + + if (not p_LoopBack) { // @sic R5s120097 sic@ + //Initiate an outgoing PS call + f_UT_ActivatePDPContextUG (UT, v_DedicatedId, v_QualityOfService, ""); + } + + if ((v_CellConfiguration == cell_DCH_StandAloneSRB_NoConn) or + (v_CellConfiguration == cell_FACH_NoConn)) + { + // Activate DHCP and ICMPv6 @sic R5-125676 sic@ + f_UTRAN_IP_Handling_Start_Configuration(PDN_1, p_RB_Configuration); //@sic R5s130512 sic@ + + //Steps 1-3 in 34.108 cl. 7.4.2.2.2.3: RRC connection establishment procedure for MO PS calls on DCH + f_UTRAN_RRC_ConnEst (p_CellId, v_EstCause); + + // Step 4 in 34.108 cl. 7.4.2.2.2.3: RRC connection establishment procedure for MO PS calls on DCH + f_UTRAN_GMM_ServReq (ps_domain); // @sic R5s110465 sic@ + + //Perform NAS session activation procedure for packet switched sessions (34.108 cl. 7.4.2.4.2) + //Steps 1-2 in 34.108 cl. 7.4.2.4.2: Generate authentication and run authentication procedure + f_UTRAN_GMM_Authentication(); + + //Step 3-4 in 34.108 cl. 7.4.2.4.2: Transmit Security Mode Comamnd & Receive Security Mode Comlpete + f_UTRAN_RRC_Security (p_CellId, v_NewKeyFlag, ps_domain); + + //Step 5 in 34.108 cl. 7.4.2.4.2: Receive PDP Context Activation Request + v_ActPdpContextReq := f_UTRAN_PS_SessionAct_ReceivePDP_Req (); //@sic R5s110465, R5s110771 sic@ + + //Assign v_RAB_Id (BITSTRING[8]) with the NSAPI (BITSTRING[4]) value received in ACTIVATE PDP CONTEXT REQUEST message: + //v_RAB_Id := int2bit (bit2int (v_ActPdpContextReq.requestedNSAPI.nSAPI_Value), 8); + //Radio Bearer Identity is set according to 34.108 cl 9.1.1 RADIO BEARER SETUP message for condition A3, A6 or A9. + v_Ti_R := v_ActPdpContextReq.ti; + v_Ti_S.tiFlag := '1'B; + v_Ti_S.tiVal := v_Ti_R.tiVal; + + //Step 1-3 in 34.108 cl. 7.4.2.6.2.3: Radio access bearer establishment procedure for PS mobilie originated calls. + //Step 1-2 in 34.108 cl. 7.4.2.6.2.3: Send RADIO BEARER SETUP and receive COMPLETE + f_UTRAN_RB_SetUp_PS_RAB (p_CellId, p_RB_Configuration); /* @sic R5s120139 - Additional Changes sic@ */ + + //Step 3 in 34.108 cl. 7.4.2.6.2.3: Send ACTIVATE PDP CONTEXT ACCEPT + f_UTRAN_SendActivatePDP_Accept (v_ExpectedPDN_Address.pDP_TypeNo, + v_ExpectedPDN_Address.addrInfo, + v_ExpectedPDN_Address.iel, + v_Ti_S, + v_QualityOfService, + p_RB_Configuration); + } + else + { + FatalError(__FILE__, __LINE__, "Cell is not properly configured"); + } + + // Now transfer over the security parameters @sic R5s120097 sic@ + v_LAC := f_UTRAN_CellInfo_GetLAC(p_CellId); + v_RAC := f_UTRAN_CellInfo_GetRAC(p_CellId); + v_GUTI.MME_GroupId := oct2bit(v_LAC); + v_GUTI.MME_Code := substr (v_Ptmsi_Def, 8, 8); + v_GUTI.M_TMSI := '11'B & substr (v_Ptmsi_Def, 2, 6) & oct2bit(v_RAC) & substr (v_Ptmsi_Def, 16, 16); + + f_UTRAN_SendAuthCoOrdParameters (EUTRA, v_GUTI); + } + + /* + * @desc Return the RB used in the configuration RB20/25 + * @param p_RB_Configuration + * @return integer + * @status APPROVED (LTE_A, LTE_IRAT, UTRAN) + */ + function fl_UTRAN_IP_Handling_GetDrbId(RB_ConfigType p_RB_Configuration) return integer + { + var integer v_DrbId; + + select (p_RB_Configuration) { + case (cell_DCH_64kPS_RAB_SRB, cell_FACH_PS, cell_Four_DTCH_PS_CS) { + v_DrbId := tsc_RB20; + } + case (cell_DCH_E_HS, cell_DCH_HS_DSCH, cell_E_HS, cell_DCH_dlSRB_E_HS, cell_FACH_HS) { + v_DrbId := tsc_RB25; + } + case else { + FatalError(__FILE__, __LINE__, "Configuration not supported"); + } + } + return v_DrbId; + } + + + /* + * @desc start DHCP and ICMPv6 server for given RAB 20 or RAB 25 depending on the configuration + * @param p_PdnIndex + * @param p_RB_Configuration + * @status APPROVED (LTE_A, LTE_IRAT, UTRAN) + */ + function f_UTRAN_IP_Handling_Start_Configuration(PDN_Index_Type p_PdnIndex, + RB_ConfigType p_RB_Configuration) runs on UTRAN_PTC + { // @sic R5-125676 sic@ + var UTRAN_CellId_Type v_CellId := utran_CellDedicated; // @sic R5s140578 change 2.1: cell id is always utran_CellDedicated sic@ + var integer v_DrbId := fl_UTRAN_IP_Handling_GetDrbId (p_RB_Configuration); // @sic R5s140161 sic@ + + f_IP_Handling_Start(IP, p_PdnIndex, cs_DrbInfo_UTRAN(v_CellId, v_DrbId)); + } + + /* + * @desc To reconfigure IP to a new UTRAN cell & RB + * @param p_CellId + * @param p_RB_Configuration + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_UTRAN_IP_Handling_Change_Configuration(UTRAN_CellId_Type p_CellId, + RB_ConfigType p_RB_Configuration) runs on UTRAN_PTC + { + var integer v_DrbId := fl_UTRAN_IP_Handling_GetDrbId (p_RB_Configuration); //@sic R5s140161 sic@ + + f_IP_ChangeUtranCell(IP, enum2int(p_CellId), v_DrbId); + } + + /* + * @desc Configure a UTRA PS Radio Bearer in UE and SS according to TS 34.108 subclause 6.10.2.4.1.26 + * Interactive or background / UL:64 DL: 64 kbps / PS RAB + UL:3.4 DL:3.4 kbps SRBs for DCCH + * @param p_CellId + * @param p_WaitDataSignalling (default value: noDelay) + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_UE_64kPS_Rb_Est(UTRAN_CellId_Type p_CellId, UTRAN_DelayForUserPlaneSignalling_Type p_WaitDataSignalling := noDelay) runs on UTRAN_PTC + { + f_UTRAN_UE_PsRB_Est(p_CellId, cell_DCH_64kPS_RAB_SRB); + // Optional 1.2s delay acc. to 34.108 cl. 7.2.6 to allow user-plane signalling + f_UTRAN_DelayForUserPlaneSignalling(p_WaitDataSignalling); // @sic R5-133560 sic@ + } + + //* @desc Configure a UTRA HSDPA Radio Bearer in UE and SS according to TS 34.108 subclause 6.10.2.4.5.1 + //* Interactive or background / UL:64 DL: [max bit rate depending on UE category] / PS RAB + UL:3.4 DL:3.4 kbps SRBs for DCCH + function f_UTRAN_UE_HSDPA_Rb_Est(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC { + f_UTRAN_UE_PsRB_Est(p_CellId, cell_DCH_HS_DSCH); + } + + //* @desc Configure a UTRA HSUPA/HSDPA Radio Bearer in UE and SS according to TS 34.108 subclause 6.10.2.4.6.3 + //* Interactive or background / UL:64 DL: [max bit rate depending on UE category] / PS RAB + UL:3.4 DL:3.4 kbps SRBs for DCCH + function f_UTRAN_UE_HSUPA_Rb_Est(UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC { + f_UTRAN_UE_PsRB_Est(p_CellId, cell_DCH_E_HS); + } + + /* + * @desc Configure a PS Radio Bearer in UE and SS according to TS + * Interactive or background / UL:64 DL: 64 kbps / PS RAB + UL:3.4 DL:3.4 kbps SRBs for DCCH + * @param p_CellId + * @param p_WaitDataSignalling (default value: noDelay) + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_UE_FACH_PS_Rb_Est(UTRAN_CellId_Type p_CellId, UTRAN_DelayForUserPlaneSignalling_Type p_WaitDataSignalling := noDelay) runs on UTRAN_PTC + { + f_UTRAN_UE_PsRB_Est (p_CellId, cell_FACH_PS); + // Optional 1.2s delay acc. to 34.108 cl. 7.2.6 to allow user-plane signalling + f_UTRAN_DelayForUserPlaneSignalling(p_WaitDataSignalling); // @sic R5s130384 sic@ + } + + /* + * @desc Step 7 to 11 of test procedure in TS 34.123-1 subclause 12.9.14.4 + * The UE performs Network initiated RAB re-establishment in a UTRAN cell + * @param p_CellId + * @param p_RB_Configuration + * @param p_LoopbackRLC_PDU (default value: false) + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_UTRAN_MT_RAB_ReEst(UTRAN_CellId_Type p_CellId, + RB_ConfigType p_RB_Configuration, + boolean p_LoopbackRLC_PDU := false) // @sic R5s130195 PDCP sic@ + runs on UTRAN_PTC + { + // Activate DHCP and ICMPv6 @sic R5-125676 sic@ + f_UTRAN_IP_Handling_Start_Configuration(PDN_1, p_RB_Configuration); //@sic R5s130512 sic@ + + f_UTRAN_Page(p_CellId, terminatingInteractiveCall, oct2bit(px_PTMSI_Def)); + f_UTRAN_RRC_ConnEst(p_CellId, terminatingInteractiveCall); + + // RRC connection establishment procedure for MO PS calls on DCH + f_UTRAN_GMM_ServReq(ps_domain); + + // Transmit Security Mode Comamnd & Receive Security Mode Comlpete + f_UTRAN_RRC_Security(p_CellId, false, ps_domain); + + f_UTRAN_RB_SetUp_PS_RAB(p_CellId, p_RB_Configuration, -, p_LoopbackRLC_PDU); /* @sic R5s120139 - Additional Changes sic@ */ + } + + /* + * @desc to configure physical channel DPCH1 and connect DCH1, DCH2, DCH3, DCH4 and DCH5 to the physical channel, then map DCCH1-4 on the DCH5 transport + * channel and map DTCH(subflow#1), DTCH(subflow#2), DTCH(subflow#3), DTCH(subflow#4) to the DCH1, DCH2, DCH3 and DCH4 and transport channel respectively. + * Used for conversational Speech/UL:12.2 kbps DL: 12.2 kbps/Interactive or background / UL: 64 DL: 64kbps / PS RAB + UL 3.4 DL: 3.4 kbps SRBs for DCCH. + * @param p_CellId + * @param p_SS_ActTime + * @param p_DL_CommonInformation + * @param p_UL_DPCH_Info + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_SS_5DCH_Modify_PS_and_ConvSpeech_FDD(UTRAN_CellId_Type p_CellId, + template (value) SS_ActivationTime p_SS_ActTime, //@sic R5s140096 sic@ + template (value) DL_CommonInformation_r8 p_DL_CommonInformation, + template (value) UL_DPCH_Info_r7 p_UL_DPCH_Info) runs on UTRAN_PTC + { + f_UTRAN_CPHY_RL_Modify (cas_RL_Modify_DPCHInfo_FDD (p_CellId, + tsc_DL_DPCH1, + cs_DPCHInfo_DL_FDD (cs_DL_DPCH_FDD(p_DL_CommonInformation, + tsc_DL_DPCH1_ChC_64k_PS, + tsc_DL_DPCH1_2ndScrC, + tsc_DL_TxPower_DPCH_64k)), + p_SS_ActTime)); + + f_UTRAN_CPHY_TrCH_Config (cs_DlDch1To5_DlTfcs0To119_FDD (p_CellId, + tsc_DL_DPCH1, + cs_DCH_148_TFS_FDD, + cs_DCH_81_TFS_DL_FDD, + cs_DCH_103_TFS_FDD, + cs_DCH_60_TFS_FDD, + cs_DCH_336_TFS_FDD, + p_SS_ActTime)); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(utran_CellDedicated, // @sic R5s120070 sic@ + tsc_DL_DPCH1, + cs_UE_Info, + cs_TrCHInfoDL_5_0To119_FDD(cs_DCH_148_TFS_FDD, + cs_DCH_81_TFS_DL_FDD, + cs_DCH_103_TFS_FDD, + cs_DCH_60_TFS_FDD, + cs_DCH_336_TFS_FDD), + cs_TrLogMappingDL_TM3_AM1, + p_SS_ActTime)); + + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_FDD (p_CellId, + tsc_UL_DPCH1, + cs_DPCHInfo_UL_FDD (p_UL_DPCH_Info), + p_SS_ActTime)); + + f_UTRAN_CPHY_TrCH_Config(cs_UlDch1To5_UlTfcs0To119_FDD (p_CellId, + tsc_UL_DPCH1, + cs_DCH_148_TFS_FDD, + cs_DCH_81_TFS_FDD, + cs_DCH_103_TFS_FDD, + cs_DCH_60_TFS_FDD, + cs_DCH_336_TFS_FDD, + p_SS_ActTime)); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(utran_CellDedicated, // @sic R5s120070 sic@ + tsc_UL_DPCH1, + cs_UE_Info, + cs_TrCHInfoUL_5_0To119_FDD(cs_DCH_148_TFS_FDD, + cs_DCH_81_TFS_FDD, + cs_DCH_103_TFS_FDD, + cs_DCH_60_TFS_FDD, + cs_DCH_336_TFS_FDD), + cs_TrLogMappingUL_TM3_AM1, + p_SS_ActTime)); + }; + + /* + * @desc to configure physical channel DPCH1 and connect DCH1, DCH2, DCH3, DCH4 and DCH5 to the physical channel, then map DCCH1-4 on the DCH5 transport + * channel and map DTCH(subflow#1), DTCH(subflow#2), DTCH(subflow#3), DTCH(subflow#4) to the DCH1, DCH2, DCH3 and DCH4 and transport channel respectively. + * Used for conversational Speech/UL:12.2 kbps DL: 12.2 kbps/Interactive or background / UL: 64 DL: 64kbps / PS RAB + UL 3.4 DL: 3.4 kbps SRBs for DCCH. + * Used for rel-10 test cases + * @param p_CellId + * @param p_SS_ActTime + * @param p_DL_CommonInformation + * @param p_UL_DPCH_Info + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_SS_5DCH_Modify_PS_and_ConvSpeech_FDD_r10(UTRAN_CellId_Type p_CellId, + template (value) SS_ActivationTime p_SS_ActTime, // @sic R5s140096 sic@ + template (value) DL_CommonInformation_r8 p_DL_CommonInformation, + template (value) UL_DPCH_Info_r7 p_UL_DPCH_Info) runs on UTRAN_PTC + { + f_UTRAN_CPHY_RL_Modify (cas_RL_Modify_DPCHInfo_FDD (p_CellId, + tsc_DL_DPCH1, + cs_DPCHInfo_DL_FDD (cs_DL_DPCH_FDD(p_DL_CommonInformation, + tsc_DL_DPCH1_ChC_64k_PS, + tsc_DL_DPCH1_2ndScrC, + tsc_DL_TxPower_DPCH_64k)), + p_SS_ActTime)); + + f_UTRAN_CPHY_TrCH_Config (cs_DlDch1To5_DlTfcs0To119_FDD (p_CellId, + tsc_DL_DPCH1, + cs_DCH_148_TFS_FDD, + cs_DCH_81_TFS_DL_FDD, + cs_DCH_103_TFS_FDD, + cs_DCH_60_TFS_FDD, + cs_DCH_336_TFS_FDD, + p_SS_ActTime)); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(utran_CellDedicated, // @sic R5s120070 sic@ + tsc_DL_DPCH1, + cs_UE_Info, + cs_TrCHInfoDL_5_0To119_FDD(cs_DCH_148_TFS_FDD, + cs_DCH_81_TFS_DL_FDD, + cs_DCH_103_TFS_FDD, + cs_DCH_60_TFS_FDD, + cs_DCH_336_TFS_FDD), + cs_TrLogMappingDL_TM3_AM1, + p_SS_ActTime)); + + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_FDD(p_CellId, + tsc_UL_DPCH1, + cs_DPCHInfo_UL_FDD (p_UL_DPCH_Info), + p_SS_ActTime)); + + f_UTRAN_CPHY_TrCH_Config(cs_UlDch1To5_UlTfcs0To119_FDD(p_CellId, + tsc_UL_DPCH1, + cs_DCH_148_TFS_FDD, + cs_DCH_81_TFS_FDD, + cs_DCH_103_TFS_FDD, + cs_DCH_60_TFS_FDD, + cs_DCH_336_TFS_FDD, + p_SS_ActTime)); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(utran_CellDedicated, // @sic R5s120070 sic@ + tsc_UL_DPCH1, + cs_UE_Info, + cs_TrCHInfoUL_5_0To119_FDD(cs_DCH_148_TFS_FDD, + cs_DCH_81_TFS_FDD, + cs_DCH_103_TFS_FDD, + cs_DCH_60_TFS_FDD, + cs_DCH_336_TFS_FDD), + cs_TrLogMappingUL_TM3_AM1, + p_SS_ActTime)); + } + + /* + * @desc to configure physical channel DPCH1 and connect DCH1, DCH2, DCH3, DCH4 and DCH5 to the physical channel, then map DCCH1-4 on the DCH5 transport + * channel and map DTCH(subflow#1), DTCH(subflow#2), DTCH(subflow#3), DTCH(subflow#4) to the DCH1, DCH2, DCH3 and DCH4 and transport channel respectively. + * Used for conversational Speech/UL:12.2 kbps DL: 12.2 kbps/Interactive or background / UL: 64 DL: 64kbps / PS RAB + UL 3.4 DL: 3.4 kbps SRBs for DCCH. + * Used for rel-10 test cases + * @param p_CellId + * @param p_SS_ActTime + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_SS_5DCH_Modify_PS_and_ConvSpeech_TDD_r10(UTRAN_CellId_Type p_CellId, + template (value) SS_ActivationTime p_SS_ActTime) runs on UTRAN_PTC + { + f_UTRAN_CPHY_RL_Modify (cas_RL_Modify_DPCHInfo_TDD (p_CellId, + tsc_DL_DPCH1, + cs_DPCHInfo_Extension_TDD(cs_DL_DPCHInfo_r10_Extension_TDD(cs_DL_DPCH_TDD_r10(cs_DL_DPCH_InfoPerRL_r7_PS_and_ConvSpeech_TDD))), + p_SS_ActTime)); + + f_UTRAN_CPHY_TrCH_Config (cs_DlDch1To5_DlTfcs0To119_TDD (p_CellId, + tsc_DL_DPCH1, + cs_DCH_148_TFS_DL_TDD, + cs_DCH_81_TFS_DL_TDD, + cs_DCH_103_TFS_TDD, + cs_DCH_60_TFS_TDD, + cs_DCH_336_TFS_TDD, + p_SS_ActTime)); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_TDD(utran_CellDedicated, // @sic R5s120070 sic@ + tsc_DL_DPCH1, + cs_UE_Info, + cs_TrCHInfoDL_5_0To119_TDD(cs_DCH_148_TFS_DL_TDD, + cs_DCH_81_TFS_DL_TDD, + cs_DCH_103_TFS_TDD, + cs_DCH_60_TFS_TDD, + cs_DCH_336_TFS_TDD), + cs_TrLogMappingDL_TM3_AM1_TDD, + p_SS_ActTime)); + + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_TDD(p_CellId, + tsc_UL_DPCH1, + cs_DPCHInfo_UL_TDD (cs_UL_DPCH_PS_and_ConvSpeech_TDD), + p_SS_ActTime)); + + f_UTRAN_CPHY_TrCH_Config(cs_UlDch1To5_UlTfcs0To119_TDD(p_CellId, + tsc_UL_DPCH1, + cs_DCH_148_TFS_UL_TDD, + cs_DCH_81_TFS_TDD, + cs_DCH_103_TFS_TDD, + cs_DCH_60_TFS_TDD, + cs_DCH_336_TFS_TDD, + p_SS_ActTime)); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_TDD(utran_CellDedicated, // @sic R5s120070 sic@ + tsc_UL_DPCH1, + cs_UE_Info, + cs_TrCHInfoUL_5_0To119_TDD(cs_DCH_148_TFS_UL_TDD, + cs_DCH_81_TFS_TDD, + cs_DCH_103_TFS_TDD, + cs_DCH_60_TFS_TDD, + cs_DCH_336_TFS_TDD), + cs_TrLogMappingUL_TM3_AM1_TDD, + p_SS_ActTime)); + } + + /* + * @desc to configure physical channel DPCH1 and connect DCH1, DCH2, DCH3, DCH4 and DCH5 to the physical channel, then map DCCH1-4 on the DCH5 transport + * channel and map DTCH(subflow#1), DTCH(subflow#2), DTCH(subflow#3), DTCH(subflow#4) to the DCH1, DCH2, DCH3 and DCH4 and transport channel respectively. + * Used for conversational Speech/UL:12.2 kbps DL: 12.2 kbps/Interactive or background / UL: 64 DL: 64kbps / PS RAB + UL 3.4 DL: 3.4 kbps SRBs for DCCH. + * Used for rel-10 test cases + * @param p_CellId + * @param p_SS_ActTime + * @param p_DL_CommonInformation + * @param p_UL_DPCH_Info + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_SS_5DCH_Modify_PS_and_ConvSpeech_FDD_r11(UTRAN_CellId_Type p_CellId, + template (value) SS_ActivationTime p_SS_ActTime, //@sic R5s140096 sic@ + template (value) DL_CommonInformation_r11 p_DL_CommonInformation, + template (value) UL_DPCH_Info_r11 p_UL_DPCH_Info) runs on UTRAN_PTC + { + f_UTRAN_CPHY_RL_Modify (cas_RL_Modify_DPCHInfo_FDD (p_CellId, + tsc_DL_DPCH1, + cs_DPCHInfo_Extension_FDD(cs_DL_DPCHInfo_r11_Extension_FDD(cs_DL_DPCH_FDD_r11(p_DL_CommonInformation, + tsc_DL_DPCH1_ChC_64k_PS, + tsc_DL_DPCH1_2ndScrC, + tsc_DL_TxPower_DPCH_64k))), + p_SS_ActTime)); + + f_UTRAN_CPHY_TrCH_Config (cs_DlDch1To5_DlTfcs0To119_FDD(p_CellId, + tsc_DL_DPCH1, + cs_DCH_148_TFS_FDD, + cs_DCH_81_TFS_DL_FDD, + cs_DCH_103_TFS_FDD, + cs_DCH_60_TFS_FDD, + cs_DCH_336_TFS_FDD, + p_SS_ActTime)); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(utran_CellDedicated, + tsc_DL_DPCH1, + cs_UE_Info, + cs_TrCHInfoDL_5_0To119_FDD(cs_DCH_148_TFS_FDD, + cs_DCH_81_TFS_DL_FDD, + cs_DCH_103_TFS_FDD, + cs_DCH_60_TFS_FDD, + cs_DCH_336_TFS_FDD), + cs_TrLogMappingDL_TM3_AM1, + p_SS_ActTime)); + + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_FDD(p_CellId, + tsc_UL_DPCH1, + cs_DPCHInfo_Extension_FDD(cs_UL_DPCHInfo_r11_Extension_FDD(p_UL_DPCH_Info)), + p_SS_ActTime)); + + f_UTRAN_CPHY_TrCH_Config(cs_UlDch1To5_UlTfcs0To119_FDD(p_CellId, + tsc_UL_DPCH1, + cs_DCH_148_TFS_FDD, + cs_DCH_81_TFS_FDD, + cs_DCH_103_TFS_FDD, + cs_DCH_60_TFS_FDD, + cs_DCH_336_TFS_FDD, + p_SS_ActTime)); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_FDD(utran_CellDedicated, + tsc_UL_DPCH1, + cs_UE_Info, + cs_TrCHInfoUL_5_0To119_FDD(cs_DCH_148_TFS_FDD, + cs_DCH_81_TFS_FDD, + cs_DCH_103_TFS_FDD, + cs_DCH_60_TFS_FDD, + cs_DCH_336_TFS_FDD), + cs_TrLogMappingUL_TM3_AM1, + p_SS_ActTime)); + } + + /* + * @desc to configure physical channel DPCH1 and connect DCH1, DCH2, DCH3, DCH4 and DCH5 to the physical channel, then map DCCH1-4 on the DCH5 transport + * channel and map DTCH(subflow#1), DTCH(subflow#2), DTCH(subflow#3), DTCH(subflow#4) to the DCH1, DCH2, DCH3 and DCH4 and transport channel respectively. + * Used for conversational Speech/UL:12.2 kbps DL: 12.2 kbps/Interactive or background / UL: 64 DL: 64kbps / PS RAB + UL 3.4 DL: 3.4 kbps SRBs for DCCH. + * Used for rel-11 test cases + * @param p_CellId + * @param p_SS_ActTime + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_SS_5DCH_Modify_PS_and_ConvSpeech_TDD_r11(UTRAN_CellId_Type p_CellId, + template (value) SS_ActivationTime p_SS_ActTime) runs on UTRAN_PTC + { + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_TDD(p_CellId, + tsc_DL_DPCH1, + cs_DPCHInfo_Extension_TDD(cs_DL_DPCHInfo_r11_Extension_TDD(cs_DL_DPCH_TDD_r11(cs_DL_DPCH_InfoPerRL_r7_PS_and_ConvSpeech_TDD))), + p_SS_ActTime)); + + f_UTRAN_CPHY_TrCH_Config(cs_DlDch1To5_DlTfcs0To119_TDD(p_CellId, + tsc_DL_DPCH1, + cs_DCH_148_TFS_DL_TDD, + cs_DCH_81_TFS_DL_TDD, + cs_DCH_103_TFS_TDD, + cs_DCH_60_TFS_TDD, + cs_DCH_336_TFS_TDD, + p_SS_ActTime)); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_TDD(utran_CellDedicated, // @sic R5s120070 sic@ + tsc_DL_DPCH1, + cs_UE_Info, + cs_TrCHInfoDL_5_0To119_TDD(cs_DCH_148_TFS_DL_TDD, + cs_DCH_81_TFS_DL_TDD, + cs_DCH_103_TFS_TDD, + cs_DCH_60_TFS_TDD, + cs_DCH_336_TFS_TDD), + cs_TrLogMappingDL_TM3_AM1_TDD, + p_SS_ActTime)); + + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_TDD(p_CellId, + tsc_UL_DPCH1, + cs_DPCHInfo_Extension_TDD(cs_UL_DPCHInfo_r11_Extension_TDD(cs_UL_DPCH_64k_PS_TDD_r11)), + p_SS_ActTime)); + + f_UTRAN_CPHY_TrCH_Config(cs_UlDch1To5_UlTfcs0To119_TDD(p_CellId, + tsc_UL_DPCH1, + cs_DCH_148_TFS_UL_TDD, + cs_DCH_81_TFS_TDD, + cs_DCH_103_TFS_TDD, + cs_DCH_60_TFS_TDD, + cs_DCH_336_TFS_TDD, + p_SS_ActTime)); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_TDD(utran_CellDedicated, // @sic R5s120070 sic@ + tsc_UL_DPCH1, + cs_UE_Info, + cs_TrCHInfoUL_5_0To119_TDD(cs_DCH_148_TFS_UL_TDD, + cs_DCH_81_TFS_TDD, + cs_DCH_103_TFS_TDD, + cs_DCH_60_TFS_TDD, + cs_DCH_336_TFS_TDD), + cs_TrLogMappingUL_TM3_AM1_TDD, + p_SS_ActTime)); + } + + /* + * @desc as f_SS_5DCH_Modify_PS_and_ConvSpeech_FDD but for TDD + * @param p_CellId + * @param p_SS_ActTime + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_SS_5DCH_Modify_PS_and_ConvSpeech_TDD(UTRAN_CellId_Type p_CellId, + template (value) SS_ActivationTime p_SS_ActTime) runs on UTRAN_PTC + { + + f_UTRAN_CPHY_RL_Modify (cas_RL_Modify_DPCHInfo_TDD (p_CellId, + tsc_DL_DPCH1, + cs_DPCHInfo_DL_TDD (cs_DL_DPCH_PS_and_ConvSpeech_TDD), + p_SS_ActTime)); + + f_UTRAN_CPHY_TrCH_Config (cs_DlDch1To5_DlTfcs0To119_TDD (p_CellId, + tsc_DL_DPCH1, + cs_DCH_148_TFS_DL_TDD, + cs_DCH_81_TFS_DL_TDD, + cs_DCH_103_TFS_TDD, + cs_DCH_60_TFS_TDD, + cs_DCH_336_TFS_TDD, + p_SS_ActTime)); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_TDD(utran_CellDedicated, // @sic R5s120070 sic@ + tsc_DL_DPCH1, + cs_UE_Info, + cs_TrCHInfoDL_5_0To119_TDD(cs_DCH_148_TFS_DL_TDD, + cs_DCH_81_TFS_DL_TDD, + cs_DCH_103_TFS_TDD, + cs_DCH_60_TFS_TDD, + cs_DCH_336_TFS_TDD), + cs_TrLogMappingDL_TM3_AM1_TDD, + p_SS_ActTime)); + + f_UTRAN_CPHY_RL_Modify(cas_RL_Modify_DPCHInfo_TDD (p_CellId, + tsc_UL_DPCH1, + cs_DPCHInfo_UL_TDD (cs_UL_DPCH_PS_and_ConvSpeech_TDD), + p_SS_ActTime)); + + f_UTRAN_CPHY_TrCH_Config(cs_UlDch1To5_UlTfcs0To119_TDD (p_CellId, + tsc_UL_DPCH1, + cs_DCH_148_TFS_UL_TDD, + cs_DCH_81_TFS_TDD, + cs_DCH_103_TFS_TDD, + cs_DCH_60_TFS_TDD, + cs_DCH_336_TFS_TDD, + p_SS_ActTime)); + + f_UTRAN_CMAC_Config(cas_CMAC_ReconfigInfo_TDD(utran_CellDedicated, // @sic R5s120070 sic@ + tsc_UL_DPCH1, + cs_UE_Info, + cs_TrCHInfoUL_5_0To119_TDD(cs_DCH_148_TFS_UL_TDD, + cs_DCH_81_TFS_TDD, + cs_DCH_103_TFS_TDD, + cs_DCH_60_TFS_TDD, + cs_DCH_336_TFS_TDD), + cs_TrLogMappingUL_TM3_AM1_TDD, + p_SS_ActTime)); + }; + + /* @desc From TTCN2 ts_SendRB_SetUpInteractBackg_64k_ConvSpeech_PS_CS: + * Test step for RB setup message for Interactive or background / UL:64 DL:64 kbps / PS RAB + Transport and + * physical channel Infornation for both combined PS and for Conversational / speech / UL:12.2 DL:12.2 kbps / CS RAB + * @param p_CellId + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_Setup_RAB_PS_and_ConvSpeech (UTRAN_CellId_Type p_CellId) runs on UTRAN_PTC + { + var U_RLC_AM_IND v_UTRAN_RLC_AM_IND; + var UTRAN_CFN_Info_Type v_CfnInfo := f_CalculateActTime (p_CellId); + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get (); + + f_UTRAN_RB_SetUp_Send (f_Get_cs_108_RB_SetUpPSandConvSpeech (p_CellId, v_CfnInfo)); + select (f_UTRAN_ConfigurationInfo_TestCaseRelease_Get()) { // @sic R5s130195 Utran Release sic@ + case (FDDr8, FDDr9) { + //Configure SS for additional CS Speech RAB + // FDDr8 and FDDr9 + f_SS_5DCH_Modify_PS_and_ConvSpeech_FDD (p_CellId, + cs_ActivateCFN(v_CfnInfo.actTime), + cs_DL_CommonInformationRB_SetUp_FDD (tsc_DL_DPCH1_SFP_64k_PS, flexible), + cs_UL_DPCH_Info_FDD (tsc_UL_DPDCH_SF_64k_PS, + pl0_76, + f_UTRAN_CellInfo_GetULScrmCode_FDD (p_CellId))); + } + case(FDDr10) { + f_SS_5DCH_Modify_PS_and_ConvSpeech_FDD_r10 (p_CellId, + cs_ActivateCFN(v_CfnInfo.actTime), + cs_DL_CommonInformationRB_SetUp_FDD (tsc_DL_DPCH1_SFP_64k_PS, flexible), + cs_UL_DPCH_Info_FDD (tsc_UL_DPDCH_SF_64k_PS, + pl0_76, + f_UTRAN_CellInfo_GetULScrmCode_FDD (p_CellId))); + } + case(FDDr11) { + f_SS_5DCH_Modify_PS_and_ConvSpeech_FDD_r11 (p_CellId, + cs_ActivateCFN(v_CfnInfo.actTime), + cs_DL_CommonInformationRB_SetUp_FDD_r11 (tsc_DL_DPCH1_SFP_64k_PS, flexible), + cs_UL_DPCH_Info_FDD_r11(tsc_UL_DPDCH_SF_64k_PS, + pl0_76, + f_UTRAN_CellInfo_GetULScrmCode_FDD (p_CellId))); + } + case (TDDr9) { + //Configure SS with for CS Speech RAB + // TDDr9 + f_SS_5DCH_Modify_PS_and_ConvSpeech_TDD (p_CellId, + cs_ActivateCFN(v_CfnInfo.actTime)); + } + case (TDDr10) { + //Configure SS with for CS Speech RAB + // TDDr10 + f_SS_5DCH_Modify_PS_and_ConvSpeech_TDD_r10 (p_CellId, + cs_ActivateCFN(v_CfnInfo.actTime)); + } + case (TDDr11) { + f_SS_5DCH_Modify_PS_and_ConvSpeech_TDD_r11 (p_CellId, + cs_ActivateCFN(v_CfnInfo.actTime)); + } + case else { + FatalError(__FILE__, __LINE__, "Not a valid message class"); + } + } + + + f_SS_RB10_ToRB12_TM_Cfg (p_CellId); // @sic R5s110596 R5S120953 sic@ + + //Save cell configuration + f_UTRAN_CellInfo_SetConfigType (p_CellId, cell_Four_DTCH_PS_CS); + + f_UTRAN_CMAC_SecurityMode_Config (v_SecurityInfo.recentSecureDomain, + v_SecurityInfo.start_CS, + v_SecurityInfo.authKeys.AuthCS.CKey); + + f_UTRAN_CMAC_UL_DL_CipherCfg (p_CellId, //@sic R5s130243 sic@ + v_SecurityInfo.dL_CipherMode, + v_CfnInfo.actTime, + notInc); + + //Receive Radio Bearer Setup Complete message + U_AM.receive(car_RLC_Data_Ind (utran_CellDedicated, // @sic R5s120070 sic@ + tsc_RB2, + cr_108_RB_SetUpCmpl (tsc_RRC_TI))) -> value v_UTRAN_RLC_AM_IND; + + v_SecurityInfo.start_CS := v_UTRAN_RLC_AM_IND.data.aM_message.uL_DCCH_Message.message_.radioBearerSetupComplete.start_Value; + + //Store the security information + f_UTRAN_Security_Set (v_SecurityInfo); + //Download security keys to SS + f_UTRAN_SS_DownloadSecurityKey (p_CellId, cs_domain); + } + + /* @desc Test step for RB setup message for PS RAB when Conversational / speech is already established + * Does not receive RB Setup complete + * @param p_CellId + * @param p_LoopbackRLC_PDU (default value: false) + * @status APPROVED (LTE_IRAT) + */ + function f_UTRAN_Setup_RAB_PS_and_ConvSpeech_PSexists(UTRAN_CellId_Type p_CellId, + boolean p_LoopbackRLC_PDU := false) // @sic R5s130195 PDCP sic@ + runs on UTRAN_PTC + { // @sic R5s120301 sic@ + var UTRAN_CFN_Info_Type v_CfnInfo := f_CalculateActTime (p_CellId); + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get (); + + f_UTRAN_RB_SetUp_Send(f_Get_cs_108_RB_SetUpPSandConvSpeech_PSexists(p_CellId, v_CfnInfo)); + + select (f_UTRAN_ConfigurationInfo_TestCaseRelease_Get()) { // @sic R5s130195 Utran Release sic@ + case (FDDr8, FDDr9) { + //Configure SS for additional CS Speech RAB + // FDDr8 and FDDr9 + f_SS_5DCH_Modify_PS_and_ConvSpeech_FDD(p_CellId, + cs_ActivateCFN (v_CfnInfo.actTime), + cs_DL_CommonInformationRB_SetUp_FDD (tsc_DL_DPCH1_SFP_64k_PS, flexible), + cs_UL_DPCH_Info_FDD(tsc_UL_DPDCH_SF_64k_PS, + pl0_76, + f_UTRAN_CellInfo_GetULScrmCode_FDD(p_CellId))); + } + case (FDDr10) { + f_SS_5DCH_Modify_PS_and_ConvSpeech_FDD_r10(p_CellId, + cs_ActivateCFN (v_CfnInfo.actTime), + cs_DL_CommonInformationRB_SetUp_FDD (tsc_DL_DPCH1_SFP_64k_PS, flexible), + cs_UL_DPCH_Info_FDD(tsc_UL_DPDCH_SF_64k_PS, + pl0_76, + f_UTRAN_CellInfo_GetULScrmCode_FDD(p_CellId))); + + } + case (FDDr11) { + f_SS_5DCH_Modify_PS_and_ConvSpeech_FDD_r11(p_CellId, + cs_ActivateCFN (v_CfnInfo.actTime), + cs_DL_CommonInformationRB_SetUp_FDD_r11 (tsc_DL_DPCH1_SFP_64k_PS, flexible), + cs_UL_DPCH_Info_FDD_r11(tsc_UL_DPDCH_SF_64k_PS, + pl0_76, + f_UTRAN_CellInfo_GetULScrmCode_FDD(p_CellId))); + + } + case (TDDr9) { + //Configure SS with for CS Speech RAB + // TDDr9 + f_SS_5DCH_Modify_PS_and_ConvSpeech_TDD(p_CellId, + cs_ActivateCFN(v_CfnInfo.actTime)); + } + case (TDDr10){ + f_SS_5DCH_Modify_PS_and_ConvSpeech_TDD_r10(p_CellId, + cs_ActivateCFN(v_CfnInfo.actTime)); + } + case (TDDr11) { + f_SS_5DCH_Modify_PS_and_ConvSpeech_TDD_r11(p_CellId, + cs_ActivateCFN(v_CfnInfo.actTime)); + } + case else { + FatalError(__FILE__, __LINE__, "Not a valid message class"); + } + + } + + f_UTRAN_SS_RB20_AM_PS_Cfg (p_CellId, cs_OctetModeRLC_Size336, tsc_UL_DTCH4, tsc_DL_DTCH4); // @sic R5s130195 PDCP sic@ + // Configure PDCP when there is no loopback of RLC PDU @sic R5s130195 PDCP sic@ + if (not(p_LoopbackRLC_PDU)) { + f_SS_RB_ConfigurePDCP(p_CellId, tsc_RB20); + } + + v_SecurityInfo.start_PS := f_CalculateStartValue_ConnectedMode(v_SecurityInfo.start_PS); + f_UTRAN_Security_Set(v_SecurityInfo); + + f_UTRAN_SS_CipheringAM_RAB_UL_DL(p_CellId, ps_domain, cell_DCH_64kPS_RAB_SRB, v_SecurityInfo.authKeys.AuthPS.CK); + } + + /* + * @desc If no activation time is specified "now" will be used. This is to be used for HOs to UTRAN. + * @param p_CellId + * @param p_ActTime (default value: cs_ActivateNow) + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_SS_Config_ConvSpeech_RAB(UTRAN_CellId_Type p_CellId, + template (value) SS_ActivationTime p_ActTime := cs_ActivateNow) runs on UTRAN_PTC + { + var UL_ScramblingCode v_UL_ScramblingCode; + var UTRAN_FDD_TDD_Type v_FDD_TDD_Mode := f_UTRAN_CellInfo_GetFDD_TDD(p_CellId); + + + if (v_FDD_TDD_Mode == UTRAN_FDD) { + + v_UL_ScramblingCode := f_UTRAN_CellInfo_GetULScrmCode_FDD(p_CellId); + select (f_UTRAN_ConfigurationInfo_TestCaseRelease_Get()){ + case(FDDr8, FDDr9) { + // Configure SS for cell_DCH_64kPS_RAB_SRB configuration + f_SS_4DCH_Modify_FDD(p_CellId, + p_ActTime, + cs_DL_CommonInformationRB_SetUpSpeech (tsc_DL_DPCH1_SFP_Speech), + cs_UL_DPCH_Info_FDD(tsc_UL_DPDCH_SF_Speech, + pl0_84, + f_UTRAN_CellInfo_GetULScrmCode_FDD(p_CellId)), + omit); + } + case (FDDr10) { + // Configure SS for cell_DCH_64kPS_RAB_SRB configuration + f_SS_4DCH_Modify_FDD_r10(p_CellId, + p_ActTime, + cs_DL_CommonInformationRB_SetUpSpeech_r10 (tsc_DL_DPCH1_SFP_Speech), + cs_UL_DPCH_Info_FDD(tsc_UL_DPDCH_SF_Speech, + pl0_84, + f_UTRAN_CellInfo_GetULScrmCode_FDD(p_CellId)), + omit); + } + case(FDDr11) { + // Configure SS for cell_DCH_64kPS_RAB_SRB configuration + f_SS_4DCH_Modify_FDD_r11(p_CellId, + p_ActTime, + cs_DL_CommonInformationRB_SetUpSpeech_r11 (tsc_DL_DPCH1_SFP_Speech), + cs_UL_DPCH_Info_FDD_r11(tsc_UL_DPDCH_SF_Speech, + pl0_84, + f_UTRAN_CellInfo_GetULScrmCode_FDD(p_CellId)), + omit); + } + case else { FatalError(__FILE__, __LINE__, "FDD release not handled")} + } + } + else if (v_FDD_TDD_Mode == UTRAN_TDD) { + // Step 1: Configure a dedicated channel in the UTRAN TDD configuration according to 34.108 cl. 6.11.5.4.1.26 + select (f_UTRAN_ConfigurationInfo_TestCaseRelease_Get()){ + case (TDDr9) { + f_SS_4DCH_Modify_TDD (p_CellId, + p_ActTime, + cs_UL_DPCH_Speech_TDD, + omit); + } + case (TDDr10) { + f_SS_4DCH_Modify_TDD_r10 (p_CellId, + p_ActTime, + cs_UL_DPCH_Speech_TDD, + omit); + } + case (TDDr11) { + f_SS_4DCH_Modify_TDD_r11 (p_CellId, + p_ActTime, + cs_UL_DPCH_Speech_TDD_r11, + omit); + } + case else { + FatalError(__FILE__, __LINE__, ""); + } + } + } + + // Setup radio bearer 10 to 12. + // Default values from 34.108 cl. 6.10.2.4.4 and 6.10.2.4.3.3 + f_SS_RB10_ToRB12_TM_Cfg(p_CellId); //@sic R5s120953 sic@ + + //Save cell configuration + f_UTRAN_CellInfo_SetConfigType(p_CellId, cell_DCH_Speech); + } + + /* + * @desc If no activation time is specified "now" will be used. This is to be used for HOs to UTRAN. + * @param p_CellId + * @param p_ActTime (default value: cs_ActivateNow) + * @param p_LoopbackRLC_PDU (default value: false) + * @status APPROVED (LTE_A, LTE_IRAT) + */ + function f_SS_Config_ConvSpeech_64kPS_RAB(UTRAN_CellId_Type p_CellId, + template (value) SS_ActivationTime p_ActTime := cs_ActivateNow, + boolean p_LoopbackRLC_PDU := false) // @sic R5s130195 PDCP sic@ + runs on UTRAN_PTC + { + var UL_ScramblingCode v_UL_ScramblingCode; + var UTRAN_FDD_TDD_Type v_FDD_TDD_Mode := f_UTRAN_CellInfo_GetFDD_TDD(p_CellId); + + if (v_FDD_TDD_Mode == UTRAN_FDD) { + + v_UL_ScramblingCode := f_UTRAN_CellInfo_GetULScrmCode_FDD(p_CellId); + select (f_UTRAN_ConfigurationInfo_TestCaseRelease_Get()) { + case (FDDr8, FDDr9) { + // Configure SS for cell_DCH_64kPS_RAB_SRB configuration + f_SS_5DCH_Modify_PS_and_ConvSpeech_FDD (p_CellId, + p_ActTime, + cs_DL_CommonInformationRB_SetUp_FDD (tsc_DL_DPCH1_SFP_64k_PS, flexible), + cs_UL_DPCH_Info_FDD (tsc_UL_DPDCH_SF_64k_PS, + pl0_76, + f_UTRAN_CellInfo_GetULScrmCode_FDD (p_CellId))); + } + case (FDDr10) { + // Configure SS for cell_DCH_64kPS_RAB_SRB configuration + f_SS_5DCH_Modify_PS_and_ConvSpeech_FDD_r10 (p_CellId, + p_ActTime, + cs_DL_CommonInformationRB_SetUp_FDD (tsc_DL_DPCH1_SFP_64k_PS, flexible), + cs_UL_DPCH_Info_FDD (tsc_UL_DPDCH_SF_64k_PS, + pl0_76, + f_UTRAN_CellInfo_GetULScrmCode_FDD (p_CellId))); + } + case (FDDr11) { + // Configure SS for cell_DCH_64kPS_RAB_SRB configuration + f_SS_5DCH_Modify_PS_and_ConvSpeech_FDD_r11 (p_CellId, + p_ActTime, + cs_DL_CommonInformationRB_SetUp_FDD_r11 (tsc_DL_DPCH1_SFP_64k_PS, flexible), + cs_UL_DPCH_Info_FDD_r11 (tsc_UL_DPDCH_SF_64k_PS, + pl0_76, + f_UTRAN_CellInfo_GetULScrmCode_FDD (p_CellId))); + } + case else { + FatalError(__FILE__, __LINE__, "Not a valid FDD release"); + } + } + } else if (v_FDD_TDD_Mode == UTRAN_TDD) { + //Configure SS with for CS Speech RAB + select (f_UTRAN_ConfigurationInfo_TestCaseRelease_Get()) { + case (TDDr9) { + f_SS_5DCH_Modify_PS_and_ConvSpeech_TDD (p_CellId, + p_ActTime); + } + case (TDDr10) { + f_SS_5DCH_Modify_PS_and_ConvSpeech_TDD_r10 (p_CellId, + p_ActTime); + } + case (TDDr11) { + f_SS_5DCH_Modify_PS_and_ConvSpeech_TDD_r11 (p_CellId, + p_ActTime); + } + case else { + FatalError(__FILE__, __LINE__, "Not a valid message class"); + } + } + } + + // Setup radio bearer 10 to 12. + //* Default values from 34.108 cl. 6.10.2.4.4 and 6.10.2.4.3.3 + f_SS_RB10_ToRB12_TM_Cfg(p_CellId); //@sic R5s120953 sic@ + // Setup radio bearer RB20 + f_UTRAN_SS_RB20_AM_PS_Cfg (p_CellId, cs_OctetModeRLC_Size336, tsc_UL_DTCH4, tsc_DL_DTCH4 ); + + // Configure PDCP when there is no loopback of RLC PDU @sic R5s130195 PDCP sic@ + if (not(p_LoopbackRLC_PDU)) { f_SS_RB_ConfigurePDCP(p_CellId, tsc_RB20); } //@sic R5s140259 sic@ + + //Save cell configuration + f_UTRAN_CellInfo_SetConfigType (p_CellId, cell_Four_DTCH_PS_CS); + } + function f_UTRAN_PhyChReconf_InterRatCompresseModeSet_Common_r11(UTRAN_CellId_Type p_CellId, + template (value) TGPS_Status_r10_Type p_TGPS_Status_r10_Type) runs on UTRAN_PTC + { + var UTRAN_SecurityInfo_Type v_SecurityInfo := f_UTRAN_Security_Get(); + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI; + var RB_ConfigType v_CellConfig := f_UTRAN_CellInfo_GetConfigType(p_CellId); + var template (value) DL_CommonInformation_r11 v_DL_CommonInformation; + var SF512_AndCodeNumber v_SF512_AndCodeNumber; + var SF512_AndPilot v_SF512_AndPilot := tsc_DL_DPCH1_SFP_SRB; + var PositionFixedOrFlexible v_PositionFixedOrFlexible := flexible; + var boolean v_TfciExistence := false; + var DL_TxPower v_DL_TxPower; + var UTRAN_FDD_TDD_Type v_FDD_TDD_Mode := f_UTRAN_CellInfo_GetFDD_TDD(p_CellId); + var UL_ScramblingCode v_UL_ScramblingCode; + var template (value) UL_DL_Mode v_UL_DL_Mode_ULDL := cs_UL_DL_Mode_ULDL_HLS; + var template (value) UL_DL_Mode v_UL_DL_Mode_ULonly := cs_UL_DL_Mode_UL_HLS; + var template (value) UL_DL_Mode v_UL_DL_Mode_DLonly := cs_UL_DL_Mode_DL_HLS; + var template (value) UL_DL_Mode v_UL_DL_Mode; + + select (v_CellConfig) { + case (cell_DCH_Speech) { + FatalError (__FILE__,__LINE__, "Speech branch not yet supported"); + } + case (cell_DCH_64kPS_RAB_SRB) { + v_SF512_AndCodeNumber := tsc_DL_DPCH1_ChC_64k_PS; + v_SF512_AndPilot := tsc_DL_DPCH1_SFP_64k_PS; + v_PositionFixedOrFlexible := flexible; + v_TfciExistence := true; + v_DL_TxPower := tsc_DL_TxPower_DPCH_64k; + } + case (cell_DCH_StandAloneSRB) { + v_SF512_AndCodeNumber := tsc_DL_DPCH1_ChC_SRB; + v_SF512_AndPilot := tsc_DL_DPCH1_SFP_SRB; + v_PositionFixedOrFlexible := fixed; + v_DL_TxPower := tsc_DL_TxPower_DPCH; + v_UL_DL_Mode_ULDL := cs_UL_DL_Mode_ULDL_SF2; + v_UL_DL_Mode_ULonly := cs_UL_DL_Mode_UL_SF2; + v_UL_DL_Mode_DLonly := cs_UL_DL_Mode_DL_SF2; + } + case (cell_DCH_HS_DSCH) { + v_SF512_AndPilot := tsc_DL_DPCH1_SFP_SRB_3_4k; + v_SF512_AndCodeNumber := tsc_Sfc256_C0; + v_PositionFixedOrFlexible := fixed; + v_TfciExistence := false; + v_DL_TxPower := tsc_DL_TxPower_DPCH; + v_UL_DL_Mode_ULDL := cs_UL_DL_Mode_ULDL_HSDPA; + v_UL_DL_Mode_ULonly := cs_UL_DL_Mode_UL_HLS; + v_UL_DL_Mode_DLonly := cs_UL_DL_Mode_DL_SF2; + } + case (cell_DCH_E_HS) { + FatalError (__FILE__,__LINE__, "HSDPA/HSUPA branch not supported"); + } + case else { + FatalError (__FILE__,__LINE__, "Invalid Cell configuration"); + } + } + + if (v_FDD_TDD_Mode == UTRAN_FDD) { + v_UL_ScramblingCode := f_UTRAN_CellInfo_GetULScrmCode_FDD(p_CellId); + + if (not pc_InterRAT_UL_CompressedModeRequired and not pc_InterRAT_DL_CompressedModeRequired) { + // Compressed mode does not need to be configured + return; + } + else if (pc_InterRAT_UL_CompressedModeRequired and pc_InterRAT_DL_CompressedModeRequired) { + v_UL_DL_Mode := v_UL_DL_Mode_ULDL; + } + else if (pc_InterRAT_DL_CompressedModeRequired) { + v_UL_DL_Mode := v_UL_DL_Mode_DLonly; + v_TfciExistence := true; + } + else if (pc_InterRAT_UL_CompressedModeRequired) { + v_UL_DL_Mode := v_UL_DL_Mode_ULonly; + v_TfciExistence := true; + } + else { + FatalError (__FILE__,__LINE__, "Invalid PICS settings"); + } + + // Transmit Physical Channel Configuration including Compressed Mode parameters for UL and/or DL + + v_DL_CommonInformation := cs_DL_CommonInformationRB_SetUp_FDD_r11(v_SF512_AndPilot, + v_PositionFixedOrFlexible, + v_TfciExistence, + cs_DPCH_CompressedModeInfo_r10(p_TGPS_Status_r10_Type, v_UL_DL_Mode), + omit); + + U_AM.send(cas_RLC_Data_Req_NoCnf(utran_CellDedicated, + tsc_RB2, + cs_PhysicalChannelReconfiguration_r11(v_SecurityInfo.dl_IntegrityCheckInfo, + v_RRC_TI, + omit, + v_DL_CommonInformation))); + if (pc_InterRAT_DL_CompressedModeRequired) { + // Configure compressed mode in SS DL + f_UTRAN_CPHY_RL_Modify(cas_108_DL_DPCH_ModifyInfo_r10(p_CellId, + tsc_DL_DPCH1, + cs_DL_DPCHInfo_r11_Extension_FDD(cs_DL_DPCH_FDD_r11(v_DL_CommonInformation, + v_SF512_AndCodeNumber, + -, + v_DL_TxPower)), + cs_ActivateNow, + false)); + } + if (pc_InterRAT_UL_CompressedModeRequired) { + // Configure compressed mode in SS UL + f_UTRAN_CPHY_RL_Modify(cas_108_DL_DPCH_ModifyInfo_r10(p_CellId, + tsc_UL_DPCH1, + cs_UL_DPCHInfo_r11_Extension_FDD(cs_UL_DPCH_Info_FDD_r11(tsc_UL_DPDCH_SF_64k_PS, + pl0_96, + v_UL_ScramblingCode)), + cs_ActivateNow, + false)); + } + + // Receive Physical Channel Reconfiguration Complete + U_AM.receive(car_RLC_Data_Ind(utran_CellDedicated, + tsc_RB2, + cr_PhysicalChannelReconfigurationComplete(v_RRC_TI))); + } + else { + FatalError (__FILE__,__LINE__, "No compressed mode needed for TDD "); + } + } +} diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_ASN1_Definitions.asn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_ASN1_Definitions.asn new file mode 100644 index 0000000..959b03f --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_ASN1_Definitions.asn @@ -0,0 +1,33804 @@ +UTRAN-RRC-ASN1-Definitions DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN +-- ***** RRC ASN.1 definitions extracted from TS 25.331 (Revision b.5.0) ***** +--************************************************************** +-- +-- Downlink DCCH messages +-- +--************************************************************** + +DL-DCCH-Message ::= SEQUENCE { + integrityCheckInfo IntegrityCheckInfo OPTIONAL, + message DL-DCCH-MessageType +} + +DL-DCCH-MessageType ::= CHOICE { + activeSetUpdate ActiveSetUpdate, + assistanceDataDelivery AssistanceDataDelivery, + cellChangeOrderFromUTRAN CellChangeOrderFromUTRAN, + cellUpdateConfirm CellUpdateConfirm, + counterCheck CounterCheck, + downlinkDirectTransfer DownlinkDirectTransfer, + handoverFromUTRANCommand-GSM HandoverFromUTRANCommand-GSM, + handoverFromUTRANCommand-CDMA2000 HandoverFromUTRANCommand-CDMA2000, + measurementControl MeasurementControl, + pagingType2 PagingType2, + physicalChannelReconfiguration PhysicalChannelReconfiguration, + physicalSharedChannelAllocation PhysicalSharedChannelAllocation, + radioBearerReconfiguration RadioBearerReconfiguration, + radioBearerRelease RadioBearerRelease, + radioBearerSetup RadioBearerSetup, + rrcConnectionRelease RRCConnectionRelease, + securityModeCommand SecurityModeCommand, + signallingConnectionRelease SignallingConnectionRelease, + transportChannelReconfiguration TransportChannelReconfiguration, + transportFormatCombinationControl TransportFormatCombinationControl, + ueCapabilityEnquiry UECapabilityEnquiry, + ueCapabilityInformationConfirm UECapabilityInformationConfirm, + uplinkPhysicalChannelControl UplinkPhysicalChannelControl, + uraUpdateConfirm URAUpdateConfirm, + utranMobilityInformation UTRANMobilityInformation, + handoverFromUTRANCommand-GERANIu HandoverFromUTRANCommand-GERANIu, + mbmsModifiedServicesInformation MBMSModifiedServicesInformation, + etwsPrimaryNotificationWithSecurity ETWSPrimaryNotificationWithSecurity, + handoverFromUTRANCommand-EUTRA HandoverFromUTRANCommand-EUTRA, + ueInformationRequest UEInformationRequest, + loggingMeasurementConfiguration LoggingMeasurementConfiguration, + spare1 NULL +} + +--************************************************************** +-- +-- Uplink DCCH messages +-- +--************************************************************** + +UL-DCCH-Message ::= SEQUENCE { + integrityCheckInfo IntegrityCheckInfo OPTIONAL, + message UL-DCCH-MessageType +} + +UL-DCCH-MessageType ::= CHOICE { + activeSetUpdateComplete ActiveSetUpdateComplete, + activeSetUpdateFailure ActiveSetUpdateFailure, + cellChangeOrderFromUTRANFailure CellChangeOrderFromUTRANFailure, + counterCheckResponse CounterCheckResponse, + handoverToUTRANComplete HandoverToUTRANComplete, + initialDirectTransfer InitialDirectTransfer, + handoverFromUTRANFailure HandoverFromUTRANFailure, + measurementControlFailure MeasurementControlFailure, + measurementReport MeasurementReport, + physicalChannelReconfigurationComplete + PhysicalChannelReconfigurationComplete, + physicalChannelReconfigurationFailure + PhysicalChannelReconfigurationFailure, + radioBearerReconfigurationComplete RadioBearerReconfigurationComplete, + radioBearerReconfigurationFailure RadioBearerReconfigurationFailure, + radioBearerReleaseComplete RadioBearerReleaseComplete, + radioBearerReleaseFailure RadioBearerReleaseFailure, + radioBearerSetupComplete RadioBearerSetupComplete, + radioBearerSetupFailure RadioBearerSetupFailure, + rrcConnectionReleaseComplete RRCConnectionReleaseComplete, + rrcConnectionSetupComplete RRCConnectionSetupComplete, + rrcStatus RRCStatus, + securityModeComplete SecurityModeComplete, + securityModeFailure SecurityModeFailure, + signallingConnectionReleaseIndication + SignallingConnectionReleaseIndication, + transportChannelReconfigurationComplete + TransportChannelReconfigurationComplete, + transportChannelReconfigurationFailure + TransportChannelReconfigurationFailure, + transportFormatCombinationControlFailure + TransportFormatCombinationControlFailure, + ueCapabilityInformation UECapabilityInformation, + uplinkDirectTransfer UplinkDirectTransfer, + utranMobilityInformationConfirm UTRANMobilityInformationConfirm, + utranMobilityInformationFailure UTRANMobilityInformationFailure, + mbmsModificationRequest MBMSModificationRequest, + ul-DCCH-MessageType-ext UL-DCCH-MessageType-ext +} + +UL-DCCH-MessageType-ext ::= CHOICE { + ueInformationResponse UEInformationResponse, + spare15 NULL, + spare14 NULL, + spare13 NULL, + spare12 NULL, + spare11 NULL, + spare10 NULL, + spare9 NULL, + spare8 NULL, + spare7 NULL, + spare6 NULL, + spare5 NULL, + spare4 NULL, + spare3 NULL, + spare2 NULL, + spare1 NULL +} + +--************************************************************** +-- +-- Downlink CCCH messages +-- +--************************************************************** + +DL-CCCH-Message ::= SEQUENCE { + integrityCheckInfo IntegrityCheckInfo OPTIONAL, + message DL-CCCH-MessageType +} + +DL-CCCH-MessageType ::= CHOICE { + cellUpdateConfirm CellUpdateConfirm-CCCH, + rrcConnectionReject RRCConnectionReject, + rrcConnectionRelease RRCConnectionRelease-CCCH, + rrcConnectionSetup RRCConnectionSetup, + uraUpdateConfirm URAUpdateConfirm-CCCH, + -- dummy is not used in the specification. If received it is ignored by the UE. + -- See TS 23.041 for handling of warning security information by Cell Broadcast Center. + dummy ETWSPrimaryNotificationWithSecurity, + spare2 NULL, + spare1 NULL +} + +--************************************************************** +-- +-- Uplink CCCH messages +-- +--************************************************************** + +UL-CCCH-Message ::= SEQUENCE { + integrityCheckInfo IntegrityCheckInfo OPTIONAL, + message UL-CCCH-MessageType +} + +UL-CCCH-MessageType ::= CHOICE { + cellUpdate CellUpdate, + rrcConnectionRequest RRCConnectionRequest, + uraUpdate URAUpdate, + uL-CCCH-MessageType-r11 UL-CCCH-MessageType-r11 +} + +UL-CCCH-MessageType-r11 ::= CHOICE { + cellUpdate CellUpdateFDD-r11, + spare3 NULL, + spare2 NULL, + spare1 NULL +} + +--************************************************************** +-- +-- PCCH messages +-- +--************************************************************** + +PCCH-Message ::= SEQUENCE { + message PCCH-MessageType +} + +PCCH-MessageType ::= CHOICE { + pagingType1 PagingType1, + spare NULL +} + +--************************************************************** +-- +-- Downlink SHCCH messages +-- +--************************************************************** + +DL-SHCCH-Message ::= SEQUENCE { + message DL-SHCCH-MessageType +} + +DL-SHCCH-MessageType ::= CHOICE { + physicalSharedChannelAllocation PhysicalSharedChannelAllocation, + spare NULL +} + +--************************************************************** +-- +-- Uplink SHCCH messages +-- +--************************************************************** + +UL-SHCCH-Message ::= SEQUENCE { + message UL-SHCCH-MessageType +} + +UL-SHCCH-MessageType ::= CHOICE { + puschCapacityRequest PUSCHCapacityRequest, + spare NULL +} + + +--************************************************************** +-- +-- BCCH messages sent on FACH +-- +--************************************************************** + +BCCH-FACH-Message ::= SEQUENCE { + message BCCH-FACH-MessageType +} + +BCCH-FACH-MessageType ::= CHOICE { +-- dummy is not used in this version of the specification, it should +-- not be sent and if received UE behaviour is unspecified. + dummy SystemInformation-FACH, + systemInformationChangeIndication SystemInformationChangeIndication, + spare2 NULL, + spare1 NULL +} + +--************************************************************** +-- +-- BCCH messages sent on BCH +-- +--************************************************************** + +BCCH-BCH-Message ::= SEQUENCE { + message SystemInformation-BCH +} + +--************************************************************** +-- +-- MCCH messages +-- +--************************************************************** + +MCCH-Message ::= SEQUENCE { + message MCCH-MessageType +} + +MCCH-MessageType ::= CHOICE { + mbmsAccessInformation MBMSAccessInformation, + mbmsCommonPTMRBInformation MBMSCommonPTMRBInformation, + mbmsCurrentCellPTMRBInformation MBMSCurrentCellPTMRBInformation, + mbmsGeneralInformation MBMSGeneralInformation, + mbmsModifiedServicesInformation MBMSModifiedServicesInformation, + mbmsNeighbouringCellPTMRBInformation + MBMSNeighbouringCellPTMRBInformation, + mbmsUnmodifiedServicesInformation MBMSUnmodifiedServicesInformation, + spare9 NULL, + spare8 NULL, + spare7 NULL, + spare6 NULL, + spare5 NULL, + spare4 NULL, + spare3 NULL, + spare2 NULL, + spare1 NULL +} + +--************************************************************** +-- +-- MSCH messages +-- +--************************************************************** + +MSCH-Message ::= SEQUENCE { + message MSCH-MessageType +} + +MSCH-MessageType ::= CHOICE { + mbmsSchedulingInformation MBMSSchedulingInformation, + spare3 NULL, + spare2 NULL, + spare1 NULL +} + +-- *************************************************** +-- +-- ACTIVE SET UPDATE (FDD only) +-- +-- *************************************************** + +ActiveSetUpdate ::= CHOICE { + r3 SEQUENCE { + activeSetUpdate-r3 ActiveSetUpdate-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + activeSetUpdate-r3-add-ext BIT STRING OPTIONAL, + v4b0NonCriticalExtensions SEQUENCE { + activeSetUpdate-v4b0ext ActiveSetUpdate-v4b0ext-IEs, + v590NonCriticalExtensions SEQUENCE { + activeSetUpdate-v590ext ActiveSetUpdate-v590ext-IEs, + v690NonCriticalExtensions SEQUENCE { + activeSetUpdate-v690ext ActiveSetUpdate-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r6 SEQUENCE { + activeSetUpdate-r6 ActiveSetUpdate-r6-IEs, + activeSetUpdate-r6-add-ext BIT STRING OPTIONAL, + v6b0NonCriticalExtensions SEQUENCE { + activeSetUpdate-v6b0ext ActiveSetUpdate-v6b0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r7 SEQUENCE { + activeSetUpdate-r7 ActiveSetUpdate-r7-IEs, + activeSetUpdate-r7-add-ext BIT STRING OPTIONAL, + v780NonCriticalExtensions SEQUENCE { + activeSetUpdate-v780ext ActiveSetUpdate-v780ext-IEs, + v7f0NonCriticalExtensions SEQUENCE { + activeSetUdpate-v7f0ext ActiveSetUpdate-v7f0ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + activeSetUdpate-v7g0ext ActiveSetUpdate-v7g0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r8 SEQUENCE { + activeSetUpdate-r8 ActiveSetUpdate-r8-IEs, + -- Container for adding non critical extensions after freezing REL-9 + activeSetUpdate-r8-add-ext BIT STRING OPTIONAL, + v890NonCriticalExtensions SEQUENCE { + activeSetUpdate-v890ext ActiveSetUpdate-v890ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + activeSetUpdate-v7g0ext ActiveSetUpdate-v7g0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r9 SEQUENCE { + activeSetUpdate-r9 ActiveSetUpdate-r9-IEs, + -- Container for adding non critical extensions after freezing REL-10 + activeSetUpdate-r9-add-ext BIT STRING OPTIONAL, + v950NonCriticalExtensions SEQUENCE { + activeSetUpdate-v950ext ActiveSetUpdate-v950ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r10 SEQUENCE { + activeSetUpdate-r10 ActiveSetUpdate-r10-IEs, + -- Container for adding non critical extensions after freezing + -- REL-11 + activeSetUpdate-r10-add-ext BIT STRING OPTIONAL, + vb50NonCriticalExtensions SEQUENCE { + activeSetUpdate-vb50ext ActiveSetUpdate-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r11 SEQUENCE { + activeSetUpdate-r11 ActiveSetUpdate-r11-IEs, + -- Container for adding non critical extensions after freezing + -- REL-12 + activeSetUpdate-r11-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } + } + } + } + } + } +} + +ActiveSetUpdate-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + -- dummy and dummy2 are not used in this version of the specification, they should + -- not be sent and if received they should be ignored. + dummy IntegrityProtectionModeInfo OPTIONAL, + dummy2 CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + newU-RNTI U-RNTI OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- Radio bearer IEs + -- dummy3 is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy3 DL-CounterSynchronisationInfo OPTIONAL, + -- Physical channel IEs + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + rl-AdditionInformationList RL-AdditionInformationList OPTIONAL, + rl-RemovalInformationList RL-RemovalInformationList OPTIONAL, + tx-DiversityMode TX-DiversityMode OPTIONAL, + -- dummy4 is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy4 SSDT-Information OPTIONAL +} + +ActiveSetUpdate-v4b0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SSDT-UL OPTIONAL, + -- The order of the RLs in IE cell-id-PerRL-List is the same as + -- in IE RL-AdditionInformationList included in this message + cell-id-PerRL-List CellIdentity-PerRL-List OPTIONAL +} + +ActiveSetUpdate-v590ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dpc-Mode DPC-Mode, + dl-TPC-PowerOffsetPerRL-List DL-TPC-PowerOffsetPerRL-List OPTIONAL +} + +ActiveSetUpdate-v690ext-IEs ::= SEQUENCE { + -- Core network IEs + primary-plmn-Identity PLMN-Identity OPTIONAL +} + +ActiveSetUpdate-r6-IEs ::= SEQUENCE { + -- User equipment IEs + activationTime ActivationTime OPTIONAL, + newU-RNTI U-RNTI OPTIONAL, + newH-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- Physical channel IEs + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + rl-AdditionInformationList RL-AdditionInformationList-r6 OPTIONAL, + rl-RemovalInformationList RL-RemovalInformationList OPTIONAL, + tx-DiversityMode TX-DiversityMode OPTIONAL, + dpc-Mode DPC-Mode OPTIONAL, + serving-HSDSCH-CellInformation Serving-HSDSCH-CellInformation OPTIONAL, + e-dch-ReconfigurationInfo E-DCH-ReconfigurationInfo OPTIONAL +} + +ActiveSetUpdate-v6b0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + rl-AdditionInformation-list-v6b0ext RL-AdditionInformation-list-v6b0ext OPTIONAL +} + +ActiveSetUpdate-r7-IEs ::= SEQUENCE { + -- User equipment IEs + activationTime ActivationTime OPTIONAL, + newU-RNTI U-RNTI OPTIONAL, + newH-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- Physical channel IEs + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r7 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + rl-AdditionInformationList RL-AdditionInformationList-r7 OPTIONAL, + rl-RemovalInformationList RL-RemovalInformationList OPTIONAL, + tx-DiversityMode TX-DiversityMode OPTIONAL, + dpc-Mode DPC-Mode OPTIONAL, + serving-HSDSCH-CellInformation Serving-HSDSCH-CellInformation-r7 OPTIONAL, + e-dch-ReconfigurationInfo E-DCH-ReconfigurationInfo-r7 OPTIONAL, + ul-16QAM-Config UL-16QAM-Config OPTIONAL, + e-dch-ReconfInfoSameCell E-DCH-RL-InfoSameServingCell OPTIONAL, + e-TFC-Boost-Info E-TFC-Boost-Info-r7 OPTIONAL, + e-DPDCH-PowerInterpolation E-DPDCH-PowerInterpolation OPTIONAL +} + +ActiveSetUpdate-v780ext-IEs ::= SEQUENCE { + -- Physical channel IEs + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL +} + +ActiveSetUpdate-v7f0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + mimoParameters MIMO-Parameters-v7f0ext OPTIONAL +} + +ActiveSetUpdate-v7g0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + mimoParameters MIMO-Parameters-v7g0ext OPTIONAL +} + +ActiveSetUpdate-r8-IEs ::= SEQUENCE { + -- User equipment IEs + activationTime ActivationTime OPTIONAL, + newU-RNTI U-RNTI OPTIONAL, + newH-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- Physical channel IEs + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r8 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + rl-AdditionInformationList RL-AdditionInformationList-r8 OPTIONAL, + servingCellChangeParameters ServingCellChangeParameters OPTIONAL, + rl-RemovalInformationList RL-RemovalInformationList OPTIONAL, + tx-DiversityMode TX-DiversityMode OPTIONAL, + dpc-Mode DPC-Mode OPTIONAL, + serving-HSDSCH-CellInformation Serving-HSDSCH-CellInformation-r8 OPTIONAL, + e-dch-ReconfigurationInfo E-DCH-ReconfigurationInfo-r7 OPTIONAL, + ul-16QAM-Config UL-16QAM-Config OPTIONAL, + e-dch-ReconfInfoSameCell E-DCH-RL-InfoSameServingCell OPTIONAL, + e-TFC-Boost-Info E-TFC-Boost-Info-r7 OPTIONAL, + e-DPDCH-PowerInterpolation E-DPDCH-PowerInterpolation OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD OPTIONAL +} + +ActiveSetUpdate-v890ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-SecondaryCellInfoFDD-v890ext DL-SecondaryCellInfoFDD-v890ext OPTIONAL, + mimoParameters MIMO-Parameters-v7f0ext OPTIONAL, + rl-AdditionInformationList RL-AdditionInformationList-v890ext OPTIONAL +} + +ActiveSetUpdate-r9-IEs ::= SEQUENCE { + -- User equipment IEs + activationTime ActivationTime OPTIONAL, + newU-RNTI U-RNTI OPTIONAL, + newH-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- Physical channel IEs + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + e-dch-ReconfigurationInfo-SecULFrequency + E-DCH-ReconfigurationInfo-SecULFrequency OPTIONAL, + rl-AdditionInformationList RL-AdditionInformationList-r9 OPTIONAL, + rl-AdditionInformationList-SecULFreq + RL-AdditionInformationList-SecULFreq OPTIONAL, + servingCellChangeParameters ServingCellChangeParameters OPTIONAL, + rl-RemovalInformationList RL-RemovalInformationList OPTIONAL, + rl-RemovalInformationList-SecULFreq + RL-RemovalInformationList-SecULFreq OPTIONAL, + tx-DiversityMode TX-DiversityMode OPTIONAL, + dpc-Mode DPC-Mode OPTIONAL, + serving-HSDSCH-CellInformation Serving-HSDSCH-CellInformation-r9 OPTIONAL, + e-dch-ReconfigurationInfo E-DCH-ReconfigurationInfo-r7 OPTIONAL, + ul-16QAM-Config UL-16QAM-Config OPTIONAL, + e-dch-ReconfInfoSameCell E-DCH-RL-InfoSameServingCell OPTIONAL, + e-TFC-Boost-Info E-TFC-Boost-Info-r7 OPTIONAL, + e-DPDCH-PowerInterpolation E-DPDCH-PowerInterpolation OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r9 OPTIONAL +} + +ActiveSetUpdate-v950ext-IEs ::= SEQUENCE { + -- Physical channel IEs + secondaryCellMimoParameters SecondaryCellMIMOparametersFDD-v950ext OPTIONAL, + rl-AdditionInformationList RL-AdditionInformationList-v950ext OPTIONAL +} + +ActiveSetUpdate-r10-IEs ::= SEQUENCE { + -- User equipment IEs + activationTime ActivationTime OPTIONAL, + newU-RNTI U-RNTI OPTIONAL, + newH-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- Physical channel IEs + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + e-dch-ReconfigurationInfo-SecULFrequency + E-DCH-ReconfigurationInfo-SecULFrequency OPTIONAL, + rl-AdditionInformationList RL-AdditionInformationList-r10 OPTIONAL, + rl-AdditionInformationList-SecULFreq + RL-AdditionInformationList-SecULFreq OPTIONAL, + servingCellChangeParameters ServingCellChangeParameters OPTIONAL, + rl-RemovalInformationList RL-RemovalInformationList OPTIONAL, + rl-RemovalInformationList-SecULFreq + RL-RemovalInformationList-SecULFreq OPTIONAL, + tx-DiversityMode TX-DiversityMode OPTIONAL, + dpc-Mode DPC-Mode OPTIONAL, + serving-HSDSCH-CellInformation Serving-HSDSCH-CellInformation-r9 OPTIONAL, + e-dch-ReconfigurationInfo E-DCH-ReconfigurationInfo-r7 OPTIONAL, + ul-16QAM-Config UL-16QAM-Config OPTIONAL, + e-dch-ReconfInfoSameCell E-DCH-RL-InfoSameServingCell OPTIONAL, + e-TFC-Boost-Info E-TFC-Boost-Info-r7 OPTIONAL, + e-DPDCH-PowerInterpolation E-DPDCH-PowerInterpolation OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r10 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD OPTIONAL +} + +ActiveSetUpdate-vb50ext-IEs ::= SEQUENCE { + ulOLTDInfoFDD UL-OLTD-InfoFDD OPTIONAL, + rl-AdditionInformationList RL-AdditionInformationList-vb50ext + OPTIONAL +} + +ActiveSetUpdate-r11-IEs ::= SEQUENCE { + -- User equipment IEs + activationTime ActivationTime OPTIONAL, + newU-RNTI U-RNTI OPTIONAL, + newH-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- Physical channel IEs + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + mimo4x4Parameters MIMO4x4-Parameters OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + e-dch-ReconfigurationInfo-SecULFrequency + E-DCH-ReconfigurationInfo-SecULFrequency OPTIONAL, + ul-CLTD-InfoFDD UL-CLTD-InfoFDD OPTIONAL, + f-tpich-ReconfigurationInfo F-TPICH-ReconfigurationInfo OPTIONAL, + ul-OLTD-InfoFDD UL-OLTD-InfoFDD OPTIONAL, + rl-AdditionInformationList RL-AdditionInformationList-r11 OPTIONAL, + rl-AdditionInformationList-SecULFreq + RL-AdditionInformationList-SecULFreq OPTIONAL, + servingCellChangeParameters ServingCellChangeParameters OPTIONAL, + rl-RemovalInformationList RL-RemovalInformationList OPTIONAL, + rl-RemovalInformationList-SecULFreq + RL-RemovalInformationList-SecULFreq OPTIONAL, + tx-DiversityMode TX-DiversityMode OPTIONAL, + dpc-Mode DPC-Mode OPTIONAL, + serving-HSDSCH-CellInformation Serving-HSDSCH-CellInformation-r11 OPTIONAL, + e-dch-ReconfigurationInfo E-DCH-ReconfigurationInfo-r11 OPTIONAL, + ul-16QAM-Config UL-16QAM-Config OPTIONAL, + ul-64QAM-Config UL-64QAM-Config OPTIONAL, + ul-MIMO-InfoFDD UL-MIMO-InfoFDD OPTIONAL, + e-dch-ReconfInfoSameCell E-DCH-RL-InfoSameServingCell OPTIONAL, + e-TFC-Boost-Info E-TFC-Boost-Info-r7 OPTIONAL, + e-DPDCH-PowerInterpolation E-DPDCH-PowerInterpolation OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD2 AdditionalDLSecCellInfoListFDD2 OPTIONAL +} + +-- *************************************************** +-- +-- ACTIVE SET UPDATE COMPLETE (FDD only) +-- +-- *************************************************** + +ActiveSetUpdateComplete ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy IntegrityProtActivationInfo OPTIONAL, + -- Radio bearer IEs + -- dummy2 and dummy3 are not used in this version of the specification, they should + -- not be sent and if received they should be ignored. + dummy2 RB-ActivationTimeInfoList OPTIONAL, + dummy3 UL-CounterSynchronisationInfo OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + activeSetUpdateComplete-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +-- *************************************************** +-- +-- ACTIVE SET UPDATE FAILURE (FDD only) +-- +-- *************************************************** + +ActiveSetUpdateFailure ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + failureCause FailureCauseWithProtErr, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + activeSetUpdateFailure-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +-- *************************************************** +-- +-- ASSISTANCE DATA DELIVERY-- +-- *************************************************** + +AssistanceDataDelivery ::= CHOICE { + r3 SEQUENCE { + assistanceDataDelivery-r3 AssistanceDataDelivery-r3-IEs, + v3a0NonCriticalExtensions SEQUENCE { + assistanceDataDelivery-v3a0ext AssistanceDataDelivery-v3a0ext, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + assistanceDataDelivery-r3-add-ext BIT STRING OPTIONAL, + v4b0NonCriticalExtensions SEQUENCE { + assistanceDataDelivery-v4b0ext AssistanceDataDelivery-v4b0ext-IEs, + v770NonCriticalExtension SEQUENCE { + assistanceDataDelivery-v770ext AssistanceDataDelivery-v770ext-IEs, + v860NonCriticalExtension SEQUENCE { + assistanceDataDelivery-v860ext AssistanceDataDelivery-v860ext-IEs, + v920NonCriticalExtension SEQUENCE { + assistanceDataDelivery-v920ext AssistanceDataDelivery-v920ext-IEs, + va40NonCriticalExtension SEQUENCE { + assistanceDataDelivery-va40ext + AssistanceDataDelivery-va40ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions SEQUENCE {} + } +} + +AssistanceDataDelivery-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + -- Measurement Information Elements + ue-positioning-GPS-AssistanceData UE-Positioning-GPS-AssistanceData OPTIONAL, + ue-positioning-OTDOA-AssistanceData-UEB UE-Positioning-OTDOA-AssistanceData-UEB OPTIONAL +} + +AssistanceDataDelivery-v3a0ext ::= SEQUENCE { + sfn-Offset-Validity SFN-Offset-Validity OPTIONAL +} + +AssistanceDataDelivery-v4b0ext-IEs ::= SEQUENCE { + ue-Positioning-OTDOA-AssistanceData-r4ext UE-Positioning-OTDOA-AssistanceData-r4ext OPTIONAL +} + +AssistanceDataDelivery-v770ext-IEs ::= SEQUENCE { + ue-Positioning-OTDOA-AssistanceData-UEB-ext + UE-Positioning-OTDOA-AssistanceData-UEB-ext OPTIONAL, + ue-Positioning-GPS-AssistanceData UE-Positioning-GPS-AssistanceData-v770ext OPTIONAL, + ue-positioning-GANSS-AssistanceData UE-Positioning-GANSS-AssistanceData OPTIONAL +} + +AssistanceDataDelivery-v860ext-IEs ::= SEQUENCE { + ue-positioning-GANSS-AssistanceData-v860ext + UE-Positioning-GANSS-AssistanceData-v860ext OPTIONAL +} + +AssistanceDataDelivery-v920ext-IEs ::= SEQUENCE { + ue-positioning-GPS-AssistanceData-v920ext + UE-Positioning-GPS-AssistanceData-v920ext OPTIONAL, + ue-positioning-GANSS-AssistanceData-v920ext + UE-Positioning-GANSS-AssistanceData-v920ext OPTIONAL +} + +AssistanceDataDelivery-va40ext-IEs ::= SEQUENCE { + ue-positioning-GPS-AssistanceData-va40ext + UE-Positioning-GPS-AssistanceData-va40ext OPTIONAL, + ue-positioning-GANSS-AssistanceData-va40ext + UE-Positioning-GANSS-AssistanceData-va40ext OPTIONAL +} + +-- *************************************************** +-- +-- CELL CHANGE ORDER FROM UTRAN +-- +-- *************************************************** + +CellChangeOrderFromUTRAN ::= CHOICE { + r3 SEQUENCE { + cellChangeOrderFromUTRAN-IEs CellChangeOrderFromUTRAN-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + cellChangeOrderFromUTRAN-r3-add-ext BIT STRING OPTIONAL, + v590NonCriticalExtensions SEQUENCE { + cellChangeOrderFromUTRAN-v590ext CellChangeOrderFromUTRAN-v590ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions SEQUENCE {} + } +} + +CellChangeOrderFromUTRAN-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy IntegrityProtectionModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + -- the IE rab-InformationList is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. The IE may be used in a later + -- version of the protocol and hence it is not changed into a dummy + rab-InformationList RAB-InformationList OPTIONAL, + interRAT-TargetCellDescription InterRAT-TargetCellDescription +} + +CellChangeOrderFromUTRAN-v590ext-IEs ::= SEQUENCE { + geran-SystemInfoType CHOICE { + sI GERAN-SystemInformation, + pSI GERAN-SystemInformation + } OPTIONAL +} + +-- *************************************************** +-- +-- CELL CHANGE ORDER FROM UTRAN FAILURE +-- +-- *************************************************** + +CellChangeOrderFromUTRANFailure ::= CHOICE { + r3 SEQUENCE { + cellChangeOrderFromUTRANFailure-r3 + CellChangeOrderFromUTRANFailure-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + cellChangeOrderFromUTRANFailure-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + -- dummy is not used in this version of the specification and it + -- should be ignored. + dummy SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions SEQUENCE {} + } +} + +CellChangeOrderFromUTRANFailure-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy IntegrityProtectionModeInfo OPTIONAL, + interRAT-ChangeFailureCause InterRAT-ChangeFailureCause +} + +-- *************************************************** +-- +-- CELL UPDATE +-- +-- *************************************************** + +CellUpdate ::= SEQUENCE { + -- User equipment IEs + u-RNTI U-RNTI, + startList STARTList, + am-RLC-ErrorIndicationRb2-3or4 BOOLEAN, + am-RLC-ErrorIndicationRb5orAbove BOOLEAN, + cellUpdateCause CellUpdateCause, + -- TABULAR: RRC transaction identifier is nested in FailureCauseWithProtErrTrId + failureCause FailureCauseWithProtErrTrId OPTIONAL, + rb-timer-indicator Rb-timer-indicator, + -- Measurement IEs + measuredResultsOnRACH MeasuredResultsOnRACH OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + -- The cellUpdate-r3-add-ext can be omitted if its inclusion would result in the + -- size of the message exceeding the maximum PDU size possible for CCCH + -- transmission + cellUpdate-r3-add-ext BIT STRING + (CONTAINING CellUpdate-r3-add-ext-IEs) OPTIONAL, + v590NonCriticalExtensions SEQUENCE { + cellUpdate-v590ext CellUpdate-v590ext, + v690NonCriticalExtensions SEQUENCE { + cellUpdate-v690ext CellUpdate-v690ext-IEs, + v6b0NonCriticalExtensions SEQUENCE { + cellUpdate-v6b0ext CellUpdate-v6b0ext-IEs, + v770NonCriticalExtensions SEQUENCE { + cellUpdate-v770ext CellUpdate-v770ext-IEs, + v860NonCriticalExtensions SEQUENCE { + cellUpdate-v860ext CellUpdate-v860ext-IEs, + -- The va40NonCriticalExtensions can be omitted if its inclusion + -- would result in the size of the message exceeding the maximum PDU + -- size possible for CCCH transmission + va40NonCriticalExtensions SEQUENCE { + cellUpdate-va40ext CellUpdate-va40ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + cellUpdate-vb50ext CellUpdate-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +CellUpdate-r3-add-ext-IEs ::= SEQUENCE { + cellUpdate-v7e0ext CellUpdate-v7e0ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + cellUpdate-v7g0ext CellUpdate-v7g0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +CellUpdate-v590ext ::= SEQUENCE { + establishmentCause EstablishmentCause OPTIONAL +} + +CellUpdate-v690ext-IEs ::= SEQUENCE { + -- User equipment IEs + cellUpdateCause-ext CellUpdateCause-ext OPTIONAL, + trafficVolumeIndicator ENUMERATED { true } OPTIONAL, + -- Measurement IEs + measuredResultsOnRACHinterFreq MeasuredResultsOnRACHinterFreq OPTIONAL, + reconfigurationStatusIndicator ENUMERATED { true } OPTIONAL +} + +CellUpdate-v6b0ext-IEs ::= SEQUENCE { + -- MBMS IEs + -- The mbmsSelectedServices can be omitted if its inclusion would result in the + -- size of the message exceeding the maximum PDU size possible for CCCH transmission + mbmsSelectedServices MBMS-SelectedServicesShort OPTIONAL +} + +CellUpdate-v770ext-IEs ::= SEQUENCE { + -- User equipment IEs + csCallType ENUMERATED { speech, video, other, spare } OPTIONAL, + hspdschReception-CellFach ENUMERATED { true } OPTIONAL, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + capabilityChangeIndicator ENUMERATED { true } OPTIONAL +} + +CellUpdate-v7e0ext-IEs ::= SEQUENCE { + -- User equipment IEs + supportForTwoDRXSchemesInPCH ENUMERATED { true } OPTIONAL +} + +CellUpdate-v7g0ext-IEs ::= SEQUENCE { + -- Measurement IEs + measuredResultsOnRACH-v7g0ext MeasuredResultsOnRACH-v7g0ext OPTIONAL +} + +CellUpdate-v860ext-IEs ::= SEQUENCE { + -- User equipment IEs + supportOfCommonEDCH ENUMERATED { true } OPTIONAL, + supportOfHS-DSCHDRXOperation ENUMERATED { true } OPTIONAL, + supportOfMACiis ENUMERATED { true } OPTIONAL, + supportOfSPSOperation ENUMERATED { true } OPTIONAL, + supportOfControlChannelDRXOperation + ENUMERATED { true } OPTIONAL +} + +CellUpdate-va40ext-IEs ::= SEQUENCE { + -- User equipment IEs + securityRevertStatusIndicator ENUMERATED { revertedBack, normalOperation } OPTIONAL, + -- Other IEs + loggedMeasAvailable ENUMERATED { true } OPTIONAL, + loggedANRResultsAvailable ENUMERATED { true } OPTIONAL +} + +-- TABULAR: TDD related IEs, MBMS IEs, and supportForTwoDRXSchemesInPCH are omitted compared to +-- tabular for the purpose of coding optimisation +CellUpdateFDD-r11 ::= SEQUENCE { +-- User equipment IEs + u-RNTI U-RNTI, + startList STARTList, + am-RLC-ErrorIndicationRb2-3or4 BOOLEAN, + am-RLC-ErrorIndicationRb5orAbove BOOLEAN, + cellUpdateCause CellUpdateCause, + -- TABULAR: RRC transaction identifier is nested in FailureCauseWithProtErrTrId + failureCause FailureCauseWithProtErrTrId OPTIONAL, + rb-timer-indicator Rb-timer-indicator, + establishmentCause EstablishmentCause OPTIONAL, + trafficVolumeIndicator ENUMERATED { true } OPTIONAL, + reconfigurationStatusIndicator ENUMERATED { true } OPTIONAL, + csCallType ENUMERATED { speech, video, other, spare } OPTIONAL, + hspdschReception-CellFach ENUMERATED { true } OPTIONAL, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + capabilityChangeIndicator ENUMERATED { true } OPTIONAL, + supportOfCommonEDCH ENUMERATED { true } OPTIONAL, + supportOfHS-DSCHDRXOperation ENUMERATED { true } OPTIONAL, + supportOfMACiis ENUMERATED { true } OPTIONAL, + securityRevertStatusIndicator ENUMERATED { revertedBack, normalOperation } OPTIONAL, + spare4 ENUMERATED { true } OPTIONAL, + spare3 ENUMERATED { true } OPTIONAL, + spare2 ENUMERATED { true } OPTIONAL, + spare1 ENUMERATED { true } OPTIONAL, +-- Measurement IEs + measuredResultsOnRACH MeasuredResultsOnRACHFDD-r11 OPTIONAL, +-- Other IEs + loggedMeasAvailable ENUMERATED { true } OPTIONAL, + loggedANRResultsAvailable ENUMERATED { true } OPTIONAL +} + +CellUpdate-vb50ext-IEs ::= SEQUENCE { + -- Measurement IEs + measuredResultsOnRACHEUTRAFreq MeasuredResultsOnRACH-EUTRAFreq OPTIONAL +} + +-- *************************************************** +-- +-- CELL UPDATE CONFIRM +-- +-- *************************************************** + +CellUpdateConfirm ::= CHOICE { + r3 SEQUENCE { + cellUpdateConfirm-r3 CellUpdateConfirm-r3-IEs, + v3a0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v3a0ext CellUpdateConfirm-v3a0ext, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + cellUpdateConfirm-r3-add-ext BIT STRING OPTIONAL, + v4b0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v4b0ext CellUpdateConfirm-v4b0ext-IEs, + v590NonCriticalExtenstions SEQUENCE { + cellUpdateConfirm-v590ext CellUpdateConfirm-v590ext-IEs, + v5d0NonCriticalExtenstions SEQUENCE { + cellUpdateConfirm-v5d0ext CellUpdateConfirm-v5d0ext-IEs, + v690NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v690ext CellUpdateConfirm-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r4 SEQUENCE { + cellUpdateConfirm-r4 CellUpdateConfirm-r4-IEs, + v4d0NonCriticalExtensions SEQUENCE { + -- Container for adding non critical extensions after freezing REL-5 + cellUpdateConfirm-r4-add-ext BIT STRING OPTIONAL, + v590NonCriticalExtenstions SEQUENCE { + cellUpdateConfirm-v590ext CellUpdateConfirm-v590ext-IEs, + v5d0NonCriticalExtenstions SEQUENCE { + cellUpdateConfirm-v5d0ext CellUpdateConfirm-v5d0ext-IEs, + v690NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v690ext CellUpdateConfirm-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r5 SEQUENCE { + cellUpdateConfirm-r5 CellUpdateConfirm-r5-IEs, + -- Container for adding non critical extensions after freezing REL-6 + cellUpdateConfirm-r5-add-ext BIT STRING OPTIONAL, + v5d0NonCriticalExtenstions SEQUENCE { + cellUpdateConfirm-v5d0ext CellUpdateConfirm-v5d0ext-IEs, + v690NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v690ext CellUpdateConfirm-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r6 SEQUENCE { + cellUpdateConfirm-r6 CellUpdateConfirm-r6-IEs, + -- Container for adding non critical extensions after freezing REL-7 + cellUpdateConfirm-r6-add-ext BIT STRING OPTIONAL, + v6b0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v6b0ext CellUpdateConfirm-v6b0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r7 SEQUENCE { + cellUpdateConfirm-r7 CellUpdateConfirm-r7-IEs, + -- Container for adding non critical extensions after freezing REL-8 + cellUpdateConfirm-r7-add-ext BIT STRING + (CONTAINING CellUpdateConfirm-r7-add-ext-IEs) OPTIONAL, + v780NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v780ext CellUpdateConfirm-v780ext-IEs, + v860NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v860ext CellUpdateConfirm-v860ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r8 SEQUENCE { + cellUpdateConfirm-r8 CellUpdateConfirm-r8-IEs, + -- Container for adding non critical extensions after freezing REL-9 + cellUpdateConfirm-r8-add-ext BIT STRING OPTIONAL, + v7d0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v7d0ext CellUpdateConfirm-v7d0ext-IEs, + v7f0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v7f0ext CellUpdateConfirm-v7f0ext-IEs, + v890NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v890ext + CellUpdateConfirm-v890ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v7g0ext + CellUpdateConfirm-v7g0ext-IEs, + v8a0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v8a0ext + CellUpdateConfirm-v8a0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r9 SEQUENCE { + cellUpdateConfirm-r9 CellUpdateConfirm-r9-IEs, + -- Container for adding non critical extensions after + -- freezing REL-10 + cellUpdateConfirm-r9-add-ext BIT STRING OPTIONAL, + v950NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v950ext CellUpdateConfirm-v950ext-IEs, + v9c0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v9c0ext CellUpdateConfirm-v9c0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r10 SEQUENCE { + cellUpdateConfirm-r10 CellUpdateConfirm-r10-IEs, + -- Container for adding non critical extensions after + -- freezing REL-11 + cellUpdateConfirm-r10-add-ext BIT STRING OPTIONAL, + v9c0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v9c0ext CellUpdateConfirm-v9c0ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-vb50ext + CellUpdateConfirm-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r11 SEQUENCE { + cellUpdateConfirm-r11 CellUpdateConfirm-r11-IEs, + -- Container for adding non critical extensions after + -- freezing REL-12 + cellUpdateConfirm-r11-add-ext + BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } + } + } + } + } + } + } + } +} + +CellUpdateConfirm-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + rlc-Re-establishIndicatorRb2-3or4 BOOLEAN, + rlc-Re-establishIndicatorRb5orAbove BOOLEAN, + -- CN information elements + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + rb-InformationReleaseList RB-InformationReleaseList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + modeSpecificTransChInfo CHOICE { + fdd SEQUENCE { + -- dummy and dummy2 are not used in this version of the specification, they should + -- not be sent and if received they should be ignored. + dummy CPCH-SetID OPTIONAL, + dummy2 DRAC-StaticInformationList OPTIONAL + }, + tdd NULL + }, + dl-CommonTransChInfo DL-CommonTransChInfo OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement OPTIONAL, + modeSpecificPhysChInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-CommonInformation DL-CommonInformation OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List OPTIONAL +} + +CellUpdateConfirm-v3a0ext ::= SEQUENCE { + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received the UE behaviour + -- is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL +} + +CellUpdateConfirm-v4b0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SSDT-UL OPTIONAL, + -- The order of the RLs in IE cell-id-PerRL-List is the same as + -- in IE DL-InformationPerRL-List included in this message + cell-id-PerRL-List CellIdentity-PerRL-List OPTIONAL +} + +CellUpdateConfirm-v590ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-TPC-PowerOffsetPerRL-List DL-TPC-PowerOffsetPerRL-List OPTIONAL +} + +CellUpdateConfirm-v5d0ext-IEs ::= SEQUENCE { + --Radio Bearer IEs + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL +} +CellUpdateConfirm-r4-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received + -- the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + rlc-Re-establishIndicatorRb2-3or4 BOOLEAN, + rlc-Re-establishIndicatorRb5orAbove BOOLEAN, + -- CN information elements + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + rb-InformationReleaseList RB-InformationReleaseList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r4 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + modeSpecificTransChInfo CHOICE { + fdd SEQUENCE { + -- dummy and dummy2 are not used in this version of the specification, they should + -- not be sent and if received they should be ignored. + dummy CPCH-SetID OPTIONAL, + dummy2 DRAC-StaticInformationList OPTIONAL + }, + tdd NULL + }, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r4 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement-r4 OPTIONAL, + modeSpecificPhysChInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-CommonInformation DL-CommonInformation-r4 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r4 OPTIONAL +} + +CellUpdateConfirm-r5-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received + -- the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + rlc-Re-establishIndicatorRb2-3or4 BOOLEAN, + rlc-Re-establishIndicatorRb5orAbove BOOLEAN, + -- CN information elements + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + rb-InformationReleaseList RB-InformationReleaseList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r5 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r5 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + modeSpecificTransChInfo CHOICE { + fdd SEQUENCE { + -- dummy and dummy2 are not used in this version of the specification, they should + -- not be sent and if received they should be ignored. + dummy CPCH-SetID OPTIONAL, + dummy2 DRAC-StaticInformationList OPTIONAL + }, + tdd NULL + }, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r5 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r5 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement-r5 OPTIONAL, + modeSpecificPhysChInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-HSPDSCH-Information DL-HSPDSCH-Information OPTIONAL, + dl-CommonInformation DL-CommonInformation-r5 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r5 OPTIONAL +} + +CellUpdateConfirm-r6-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + rlc-Re-establishIndicatorRb2-3or4 BOOLEAN, + rlc-Re-establishIndicatorRb5orAbove BOOLEAN, + -- CN information elements + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + rb-InformationReleaseList RB-InformationReleaseList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r6 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r6 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r6 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r5 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r5 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r6 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r6 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r6 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r6 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r6 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +CellUpdateConfirm-v690ext-IEs ::= SEQUENCE { + -- Core network IEs + primary-plmn-Identity PLMN-Identity OPTIONAL, + -- Physical channel IEs + -- The IE harq-Preamble-Mode should not be used in the r3 and r4 versions of the message + -- If included in the r3 or r4 version of the message, the UE should ignore the IE + harq-Preamble-Mode HARQ-Preamble-Mode OPTIONAL, + beaconPLEst BEACON-PL-Est OPTIONAL, + postVerificationPeriod ENUMERATED { true } OPTIONAL, + dhs-sync DHS-Sync OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +CellUpdateConfirm-v6b0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-InformationPerRL-List-v6b0ext DL-InformationPerRL-List-v6b0ext OPTIONAL +} + +CellUpdateConfirm-r7-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + waitTime WaitTime OPTIONAL, + rlc-Re-establishIndicatorRb2-3or4 BOOLEAN, + rlc-Re-establishIndicatorRb5orAbove BOOLEAN, + -- CN information elements + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Radio bearer IEs + rb-InformationReleaseList RB-InformationReleaseList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r7 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r7 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r7 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r7 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r7 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r7 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r7 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r7 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r7 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +CellUpdateConfirm-r7-add-ext-IEs ::= SEQUENCE { + cellUpdateConfirm-v7d0ext CellUpdateConfirm-v7d0ext-IEs OPTIONAL, + v7f0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v7f0ext CellUpdateConfirm-v7f0ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v7g0ext CellUpdateConfirm-v7g0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +CellUpdateConfirm-v780ext-IEs ::= SEQUENCE { + -- Physical channel IEs + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL +} + +CellUpdateConfirm-v7d0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + ul-EDCH-Information UL-EDCH-Information-ext OPTIONAL +} + +CellUpdateConfirm-v7f0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + mimoParameters MIMO-Parameters-v7f0ext OPTIONAL +} + +CellUpdateConfirm-v7g0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + mimoParameters MIMO-Parameters-v7g0ext OPTIONAL +} + +CellUpdateConfirm-r8-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + waitTime WaitTime OPTIONAL, + rlc-Re-establishIndicatorRb2-3or4 BOOLEAN, + rlc-Re-establishIndicatorRb5orAbove BOOLEAN, + -- CN information elements + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Specification mode information + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy DefaultConfigForCellFACH OPTIONAL, + -- Radio bearer IEs + rab-InformationSetup RAB-InformationSetup-r8 OPTIONAL, + rb-InformationReleaseList RB-InformationReleaseList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r8 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r8 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r7 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r8 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r8 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r8 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +CellUpdateConfirm-v860ext-IEs ::= SEQUENCE { + rab-InformationSetup SEQUENCE { + rab-InformationSetup-r7 RAB-InformationSetup-r7, + rab-InformationSetup-v820ext RAB-InformationSetup-v820ext + } OPTIONAL +} + +CellUpdateConfirm-v890ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-SecondaryCellInfoFDD-v890ext DL-SecondaryCellInfoFDD-v890ext OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8-ext OPTIONAL +} + +CellUpdateConfirm-v8a0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8-ext2 OPTIONAL +} + +CellUpdateConfirm-r9-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + waitTime WaitTime OPTIONAL, + rlc-Re-establishIndicatorRb2-3or4 BOOLEAN, + rlc-Re-establishIndicatorRb5orAbove BOOLEAN, + -- CN information elements + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Specification mode information + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy DefaultConfigForCellFACH OPTIONAL, + -- Radio bearer IEs + rab-InformationSetup RAB-InformationSetup-r8 OPTIONAL, + rb-InformationReleaseList RB-InformationReleaseList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r8 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r8 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r9 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r9 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r8 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r9 OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +CellUpdateConfirm-v950ext-IEs ::= SEQUENCE { + -- Physical channel IEs + secondaryCellMimoParameters SecondaryCellMIMOparametersFDD-v950ext OPTIONAL +} + +CellUpdateConfirm-v9c0ext-IEs ::= SEQUENCE { + -- For 1.28Mcps TDD only + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-TDD128-v9c0ext OPTIONAL +} + +CellUpdateConfirm-r10-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + -- dummy2 is not used in this version of the specification, it should + -- not be sent. + dummy2 SR-VCC-Info OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + waitTime WaitTime OPTIONAL, + rlc-Re-establishIndicatorRb2-3or4 BOOLEAN, + rlc-Re-establishIndicatorRb5orAbove BOOLEAN, + -- CN information elements + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Specification mode information + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy DefaultConfigForCellFACH OPTIONAL, + -- Radio bearer IEs + rab-InformationSetup RAB-InformationSetup-r8 OPTIONAL, + rb-InformationReleaseList RB-InformationReleaseList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r8 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r8 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r9 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r9 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + ul-MulticarrierEDCHInfo-TDD128 UL-MulticarrierEDCHInfo-TDD128 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r10 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r10 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + mu-MIMO-Info-TDD128 MU-MIMO-Info-TDD128 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +CellUpdateConfirm-vb50ext-IEs ::= SEQUENCE { + ulOLTDInfoFDD UL-OLTD-InfoFDD OPTIONAL +} + +CellUpdateConfirm-r11-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + -- dummy2 is not used in this version of the specification, it should + -- not be sent. + dummy2 SR-VCC-Info OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + waitTime WaitTime OPTIONAL, + rlc-Re-establishIndicatorRb2-3or4 BOOLEAN, + rlc-Re-establishIndicatorRb5orAbove BOOLEAN, + -- CN information elements + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Specification mode information + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy DefaultConfigForCellFACH OPTIONAL, + -- Radio bearer IEs + rab-InformationSetup RAB-InformationSetup-r8 OPTIONAL, + rb-InformationReleaseList RB-InformationReleaseList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r11 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r8 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r11 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + mimo4x4Parameters MIMO4x4-Parameters OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r11 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r11 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + ul-MulticarrierEDCHInfo-TDD128 UL-MulticarrierEDCHInfo-TDD128 OPTIONAL, + ul-CLTD-InfoFDD UL-CLTD-InfoFDD OPTIONAL, + ul-OLTD-InfoFDD UL-OLTD-InfoFDD OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r11 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r11 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r11 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD2 AdditionalDLSecCellInfoListFDD2 OPTIONAL, + commonERGCHInfoFDD CommonERGCHInfoFDD OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + mu-MIMO-Info-TDD128 MU-MIMO-Info-TDD128 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +-- *************************************************** +-- +-- CELL UPDATE CONFIRM for CCCH +-- +-- *************************************************** + +CellUpdateConfirm-CCCH ::= CHOICE { + r3 SEQUENCE { + -- User equipment IEs + u-RNTI U-RNTI, + -- The rest of the message is identical to the one sent on DCCH. + cellUpdateConfirm-r3 CellUpdateConfirm-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + cellUpdateConfirm-CCCH-r3-add-ext BIT STRING OPTIONAL, + v4b0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v4b0ext CellUpdateConfirm-v4b0ext-IEs, + v590NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v590ext CellUpdateConfirm-v590ext-IEs, + v5d0NonCriticalExtenstions SEQUENCE { + cellUpdateConfirm-v5d0ext CellUpdateConfirm-v5d0ext-IEs, + v690NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v690ext CellUpdateConfirm-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + u-RNTI U-RNTI, + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r4 SEQUENCE { + -- The rest of the message is identical to the one sent on DCCH. + cellUpdateConfirm-r4 CellUpdateConfirm-r4-IEs, + v4d0NonCriticalExtensions SEQUENCE { + -- Container for adding non critical extensions after freezing REL-5 + cellUpdateConfirm-CCCH-r4-add-ext BIT STRING OPTIONAL, + v590NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v590ext CellUpdateConfirm-v590ext-IEs, + v5d0NonCriticalExtenstions SEQUENCE { + cellUpdateConfirm-v5d0ext CellUpdateConfirm-v5d0ext-IEs, + v690NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v690ext CellUpdateConfirm-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r5 SEQUENCE { + cellUpdateConfirm-r5 CellUpdateConfirm-r5-IEs, + cellUpdateConfirm-CCCH-r5-add-ext BIT STRING OPTIONAL, + v5d0NonCriticalExtenstions SEQUENCE { + cellUpdateConfirm-v5d0ext CellUpdateConfirm-v5d0ext-IEs, + v690NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v690ext CellUpdateConfirm-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r6 SEQUENCE { + cellUpdateConfirm-r6 CellUpdateConfirm-r6-IEs, + cellUpdateConfirm-r6-add-ext BIT STRING OPTIONAL, + v6b0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v6b0ext CellUpdateConfirm-v6b0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r7 SEQUENCE { + cellUpdateConfirm-r7 CellUpdateConfirm-r7-IEs, + cellUpdateConfirm-r7-add-ext BIT STRING + (CONTAINING CellUpdateConfirm-r7-add-ext-IEs) OPTIONAL, + v780NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v780ext CellUpdateConfirm-v780ext-IEs, + v860NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v860ext CellUpdateConfirm-v860ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r8 SEQUENCE { + cellUpdateConfirm-r8 CellUpdateConfirm-r8-IEs, + cellUpdateConfirm-r8-add-ext BIT STRING OPTIONAL, + v7d0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v7d0ext CellUpdateConfirm-v7d0ext-IEs, + v890NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v890ext + CellUpdateConfirm-v890ext-IEs, + v8a0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v8a0ext + CellUpdateConfirm-v8a0ext-IEs, + v7f0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v7f0ext + CellUpdateConfirm-v7f0ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-v7g0ext + CellUpdateConfirm-v7g0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r9 SEQUENCE { + cellUpdateConfirm-r9 CellUpdateConfirm-r9-IEs, + -- Container for adding non critical extensions after + -- freezing REL-10 + cellUpdateConfirm-r9-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions CHOICE { + r10 SEQUENCE { + cellUpdateConfirm-r10 CellUpdateConfirm-r10-IEs, + -- Container for adding non critical extensions after + -- freezing REL-11 + cellUpdateConfirm-r10-add-ext BIT STRING OPTIONAL, + vb50NonCriticalExtensions SEQUENCE { + cellUpdateConfirm-vb50ext + CellUpdateConfirm-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r11 SEQUENCE { + cellUpdateConfirm-r11 CellUpdateConfirm-r11-IEs, + -- Container for adding non critical extensions after + -- freezing REL-12 + cellUpdateConfirm-r11-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } + } + } + } + } + } + } + } +} + +-- *************************************************** +-- +-- COUNTER CHECK +-- +-- *************************************************** + +CounterCheck ::= CHOICE { + r3 SEQUENCE { + counterCheck-r3 CounterCheck-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + counterCheck-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions SEQUENCE {} + } +} + +CounterCheck-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + -- Radio bearer IEs + rb-COUNT-C-MSB-InformationList RB-COUNT-C-MSB-InformationList +} + +-- *************************************************** +-- +-- COUNTER CHECK RESPONSE +-- +-- *************************************************** + +CounterCheckResponse ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + -- Radio bearer IEs + rb-COUNT-C-InformationList RB-COUNT-C-InformationList OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + counterCheckResponse-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +-- *************************************************** +-- +-- DOWNLINK DIRECT TRANSFER +-- +-- *************************************************** + +DownlinkDirectTransfer ::= CHOICE { + r3 SEQUENCE { + downlinkDirectTransfer-r3 DownlinkDirectTransfer-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + downlinkDirectTransfer-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions SEQUENCE {} + } +} + +DownlinkDirectTransfer-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + -- Core network IEs + cn-DomainIdentity CN-DomainIdentity, + nas-Message NAS-Message +} + +-- *************************************************** +-- +-- ETWS PRIMARY NOTIFICATION WITH SECURITY +-- +-- *************************************************** + +ETWSPrimaryNotificationWithSecurity ::= SEQUENCE { + -- Other IEs + etws-Information ETWS-Information, + -- dummy is not used in the specification. If received it is ignored by the UE. + -- See TS 23.041 for handling of warning security information by Cell Broadcast Center. + dummy ETWS-WarningSecurityInfo OPTIONAL, + -- Non critical extensions + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +-- *************************************************** +-- +-- HANDOVER TO UTRAN COMMAND +-- +-- *************************************************** + +HandoverToUTRANCommand ::= CHOICE { + r3 SEQUENCE { + handoverToUTRANCommand-r3 HandoverToUTRANCommand-r3-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions CHOICE { + r4 SEQUENCE { + handoverToUTRANCommand-r4 HandoverToUTRANCommand-r4-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions CHOICE { + r5 SEQUENCE { + handoverToUTRANCommand-r5 HandoverToUTRANCommand-r5-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions CHOICE { + r6 SEQUENCE { + handoverToUTRANCommand-r6 HandoverToUTRANCommand-r6-IEs, + v6b0NonCriticalExtensions SEQUENCE { + handoverToUTRANCommand-v6b0ext HandoverToUTRANCommand-v6b0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r7 SEQUENCE { + handoverToUTRANCommand-r7 HandoverToUTRANCommand-r7-IEs, + v780NonCriticalExtensions SEQUENCE { + handoverToUTRANCommand-v780ext HandoverToUTRANCommand-v780ext-IEs, + v820NonCriticalExtensions SEQUENCE { + handoverToUTRANCommand-v820ext HandoverToUTRANCommand-v820ext-IEs, + v7d0NonCriticalExtensions SEQUENCE { + handoverToUTRANCommand-v7d0ext + HandoverToUTRANCommand-v7d0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r8 SEQUENCE { + handoverToUTRANCommand-r8 HandoverToUTRANCommand-r8-IEs, + v7d0NonCriticalExtensions SEQUENCE { + handoverToUTRANCommand-v7d0ext HandoverToUTRANCommand-v7d0ext-IEs, + v890NonCriticalExtensions SEQUENCE { + handoverToUTRANCommand-v890ext + HandoverToUTRANCommand-v890ext-IEs, + v8a0NonCriticalExtensions SEQUENCE { + handoverToUTRANCommand-v8a0ext + HandoverToUTRANCommand-v8a0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r9 SEQUENCE { + handoverToUTRANCommand-r9 HandoverToUTRANCommand-r9-IEs, + v9c0NonCriticalExtensions SEQUENCE { + handoverToUTRANCommand-v9c0ext + HandoverToUTRANCommand-v9c0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions HandoverToUTRANCommand-LaterCriticalExtensions + } + } + } + } + } + } +} + + +HandoverToUTRANCommand-r3-IEs ::= SEQUENCE { + -- User equipment IEs + new-U-RNTI U-RNTI-Short, + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy ActivationTime OPTIONAL, + cipheringAlgorithm CipheringAlgorithm OPTIONAL, + -- Radio bearer IEs + -- Specification mode information + specificationMode CHOICE { + complete SEQUENCE { + srb-InformationSetupList SRB-InformationSetupList, + rab-InformationSetupList RAB-InformationSetupList OPTIONAL, + ul-CommonTransChInfo UL-CommonTransChInfo, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList, + dl-CommonTransChInfo DL-CommonTransChInfo, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList, + ul-DPCH-Info UL-DPCH-Info, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + -- dummy and dummy2 are not used in this version of specification, + -- they should not be sent and if received they should be ignored. + dummy DL-PDSCH-Information OPTIONAL, + dummy2 CPCH-SetInfo OPTIONAL + }, + tdd NULL + }, + dl-CommonInformation DL-CommonInformation, + dl-InformationPerRL-List DL-InformationPerRL-List, + frequencyInfo FrequencyInfo + }, + preconfiguration SEQUENCE { +-- All IEs that include an FDD/TDD choice are split in two IEs for this message, +-- one for the FDD only elements and one for the TDD only elements, so that one +-- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity + } + }, + rab-Info RAB-Info-Post OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostFDD, + dl-CommonInformationPost DL-CommonInformationPost, + dl-InformationPerRL-List DL-InformationPerRL-ListPostFDD, + frequencyInfo FrequencyInfoFDD + }, + tdd SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostTDD, + dl-CommonInformationPost DL-CommonInformationPost, + dl-InformationPerRL DL-InformationPerRL-PostTDD, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + } + } + } + }, + -- Physical channel IEs + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power +} + +HandoverToUTRANCommand-r4-IEs ::= SEQUENCE { + -- User equipment IEs + new-U-RNTI U-RNTI-Short, + cipheringAlgorithm CipheringAlgorithm OPTIONAL, + -- Radio bearer IEs + -- Specification mode information + specificationMode CHOICE { + complete SEQUENCE { + srb-InformationSetupList SRB-InformationSetupList, + rab-InformationSetupList RAB-InformationSetupList-r4 OPTIONAL, + ul-CommonTransChInfo UL-CommonTransChInfo-r4, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList, + dl-CommonTransChInfo DL-CommonTransChInfo-r4, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r4, + ul-DPCH-Info UL-DPCH-Info-r4, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + -- dummy and dummy2 are not used in this version of specification, + -- they should not be sent and if received they should be ignored. + dummy DL-PDSCH-Information OPTIONAL, + dummy2 CPCH-SetInfo OPTIONAL + }, + tdd NULL + }, + dl-CommonInformation DL-CommonInformation-r4, + dl-InformationPerRL-List DL-InformationPerRL-List-r4, + frequencyInfo FrequencyInfo + }, + preconfiguration SEQUENCE { +-- All IEs that include an FDD/TDD choice are split in two IEs for this message, +-- one for the FDD only elements and one for the TDD only elements, so that one +-- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r4 + } + }, + rab-Info RAB-Info-Post OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostFDD, + dl-CommonInformationPost DL-CommonInformationPost, + dl-InformationPerRL-List DL-InformationPerRL-ListPostFDD, + frequencyInfo FrequencyInfoFDD + }, + tdd CHOICE { + tdd384 SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostTDD, + dl-InformationPerRL DL-InformationPerRL-PostTDD, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + }, + tdd128 SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostTDD-LCR-r4, + dl-InformationPerRL DL-InformationPerRL-PostTDD-LCR-r4, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + } + } + } + } + }, + -- Physical channel IEs + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power +} + +HandoverToUTRANCommand-r5-IEs ::= SEQUENCE { + -- User equipment IEs + new-U-RNTI U-RNTI-Short, + cipheringAlgorithm CipheringAlgorithm OPTIONAL, + -- Radio bearer IEs + -- Specification mode information + specificationMode CHOICE { + complete SEQUENCE { + srb-InformationSetupList SRB-InformationSetupList-r5, + rab-InformationSetupList RAB-InformationSetupList-r5 OPTIONAL, + ul-CommonTransChInfo UL-CommonTransChInfo-r4, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList, + dl-CommonTransChInfo DL-CommonTransChInfo-r4, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r5, + ul-DPCH-Info UL-DPCH-Info-r5, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + -- dummy and dummy2 are not used in this version of specification, + -- they should not be sent and if received they should be ignored. + dummy DL-PDSCH-Information OPTIONAL, + dummy2 CPCH-SetInfo OPTIONAL + }, + tdd NULL + }, + dl-CommonInformation DL-CommonInformation-r4, + dl-InformationPerRL-List DL-InformationPerRL-List-r5, + frequencyInfo FrequencyInfo + }, + preconfiguration SEQUENCE { +-- All IEs that include an FDD/TDD choice are split in two IEs for this message, +-- one for the FDD only elements and one for the TDD only elements, so that one +-- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r5 + } + }, + rab-Info RAB-Info-Post OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostFDD, + dl-CommonInformationPost DL-CommonInformationPost, + dl-InformationPerRL-List DL-InformationPerRL-ListPostFDD, + frequencyInfo FrequencyInfoFDD + }, + tdd CHOICE { + tdd384 SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostTDD, + dl-InformationPerRL DL-InformationPerRL-PostTDD, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + }, + tdd128 SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostTDD-LCR-r4, + dl-InformationPerRL DL-InformationPerRL-PostTDD-LCR-r4, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + } + } + } + } + }, + -- Physical channel IEs + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power +} + +HandoverToUTRANCommand-r6-IEs ::= SEQUENCE { + -- User equipment IEs + new-U-RNTI U-RNTI-Short, + cipheringAlgorithm CipheringAlgorithm OPTIONAL, + -- Radio bearer IEs + -- Specification mode information + specificationMode CHOICE { + complete SEQUENCE { + srb-InformationSetupList SRB-InformationSetupList-r6, + rab-InformationSetupList RAB-InformationSetupList-r6 OPTIONAL, + ul-CommonTransChInfo UL-CommonTransChInfo-r4, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r6, + dl-CommonTransChInfo DL-CommonTransChInfo-r4, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r5, + ul-DPCH-Info UL-DPCH-Info-r6, + ul-EDCH-Information UL-EDCH-Information-r6 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r6 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r6, + dl-InformationPerRL-List DL-InformationPerRL-List-r6, + frequencyInfo FrequencyInfo + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6 + } + }, + rab-Info RAB-Info-Post OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostFDD, + dl-CommonInformationPost DL-CommonInformationPost, + dl-InformationPerRL-List DL-InformationPerRL-ListPostFDD, + frequencyInfo FrequencyInfoFDD + }, + tdd CHOICE { + tdd384 SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostTDD, + dl-InformationPerRL DL-InformationPerRL-PostTDD, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + }, + tdd128 SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostTDD-LCR-r4, + dl-InformationPerRL DL-InformationPerRL-PostTDD-LCR-r4, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + } + } + } + } + }, + -- Physical channel IEs + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power +} + +HandoverToUTRANCommand-v6b0ext-IEs ::= SEQUENCE { + ue-hspa-identities UE-HSPA-Identities-r6 OPTIONAL +} + +HandoverToUTRANCommand-r7-IEs ::= SEQUENCE { + -- User equipment IEs + new-U-RNTI U-RNTI-Short, + cipheringAlgorithm CipheringAlgorithm-r7 OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + -- Radio bearer IEs + -- Specification mode information + specificationMode CHOICE { + complete SEQUENCE { + srb-InformationSetupList SRB-InformationSetupList-r7, + rab-InformationSetupList RAB-InformationSetupList-r7 OPTIONAL, + ul-CommonTransChInfo UL-CommonTransChInfo-r4, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r7, + dl-CommonTransChInfo DL-CommonTransChInfo-r4, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r7, + ul-DPCH-Info UL-DPCH-Info-r7, + ul-EDCH-Information UL-EDCH-Information-r7 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r7 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r7, + dl-InformationPerRL-List DL-InformationPerRL-List-r7, + frequencyInfo FrequencyInfo, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6 + } + }, + rab-Info RAB-Info-Post OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostFDD, + dl-CommonInformationPost DL-CommonInformationPost, + dl-InformationPerRL-List DL-InformationPerRL-ListPostFDD, + frequencyInfo FrequencyInfoFDD + }, + tdd CHOICE { + tdd384 SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostTDD, + dl-InformationPerRL DL-InformationPerRL-PostTDD, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + }, + tdd128 SEQUENCE { + ul-DPCH-Info UL-DPCH-Info-r7, + dl-InformationPerRL DL-InformationPerRL-PostTDD-LCR-r4, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL + }, + tdd768 SEQUENCE { + ul-DPCH-Info UL-DPCH-Info-r7, + dl-InformationPerRL DL-InformationPerRL-List-r7, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + } + } + } + } + }, + -- Physical channel IEs + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power +} + +HandoverToUTRANCommand-v780ext-IEs ::= SEQUENCE { + -- Physical channel IEs + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL +} + +HandoverToUTRANCommand-v7d0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + ul-EDCH-Information UL-EDCH-Information-ext OPTIONAL +} + +HandoverToUTRANCommand-r8-IEs ::= SEQUENCE { + -- User equipment IEs + new-U-RNTI U-RNTI-Short, + cipheringAlgorithm CipheringAlgorithm-r7 OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + -- Radio bearer IEs + -- Specification mode information + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy DefaultConfigForCellFACH OPTIONAL, + specificationMode CHOICE { + complete SEQUENCE { + srb-InformationSetupList SRB-InformationSetupList-r8, + rab-InformationSetupList RAB-InformationSetupList-r8 OPTIONAL, + ul-CommonTransChInfo UL-CommonTransChInfo-r4, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8, + dl-CommonTransChInfo DL-CommonTransChInfo-r4, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r7, + ul-DPCH-Info UL-DPCH-Info-r7, + ul-EDCH-Information UL-EDCH-Information-r8 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r8, + dl-InformationPerRL-List DL-InformationPerRL-List-r7, + frequencyInfo FrequencyInfo, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored + dummy DLUL-HSPA-Information-r8 OPTIONAL + } + }, + rab-Info RAB-Info-Post OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostFDD, + dl-CommonInformationPost DL-CommonInformationPost, + dl-InformationPerRL-List DL-InformationPerRL-ListPostFDD, + frequencyInfo FrequencyInfoFDD + }, + tdd CHOICE { + tdd384 SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostTDD, + dl-InformationPerRL DL-InformationPerRL-PostTDD, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + }, + tdd128 SEQUENCE { + ul-DPCH-Info UL-DPCH-Info-r7, + dl-InformationPerRL DL-InformationPerRL-PostTDD-LCR-r4, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL + }, + tdd768 SEQUENCE { + ul-DPCH-Info UL-DPCH-Info-r7, + dl-InformationPerRL DL-InformationPerRL-List-r7, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + } + } + } + } + }, + -- Physical channel IEs + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power +} + +HandoverToUTRANCommand-v820ext-IEs ::= SEQUENCE { + -- Radio bearer IEs + rab-InformationSetupList RAB-InformationSetupList-v820ext OPTIONAL +} + +HandoverToUTRANCommand-v890ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8-ext OPTIONAL +} + +HandoverToUTRANCommand-v8a0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8-ext2 OPTIONAL +} + +HandoverToUTRANCommand-r9-IEs ::= SEQUENCE { + -- User equipment IEs + new-U-RNTI U-RNTI-Short, + cipheringAlgorithm CipheringAlgorithm-r7 OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + -- Radio bearer IEs + -- Specification mode information + defaultConfigForCellFACH DefaultConfigForCellFACH OPTIONAL, + specificationMode CHOICE { + complete SEQUENCE { + srb-InformationSetupList SRB-InformationSetupList-r8, + rab-InformationSetupList RAB-InformationSetupList-r8 OPTIONAL, + ul-CommonTransChInfo UL-CommonTransChInfo-r4, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8, + dl-CommonTransChInfo DL-CommonTransChInfo-r4, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r9, + ul-DPCH-Info UL-DPCH-Info-r7, + ul-EDCH-Information UL-EDCH-Information-r9 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r8, + dl-InformationPerRL-List DL-InformationPerRL-List-r7, + frequencyInfo FrequencyInfo, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored + dummy DLUL-HSPA-Information-r9 OPTIONAL + } + }, + rab-Info RAB-Info-Post OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostFDD, + dl-CommonInformationPost DL-CommonInformationPost, + dl-InformationPerRL-List DL-InformationPerRL-ListPostFDD, + frequencyInfo FrequencyInfoFDD + }, + tdd CHOICE { + tdd384 SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostTDD, + dl-InformationPerRL DL-InformationPerRL-PostTDD, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + }, + tdd128 SEQUENCE { + ul-DPCH-Info UL-DPCH-Info-r7, + dl-InformationPerRL DL-InformationPerRL-PostTDD-LCR-r4, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL + }, + tdd768 SEQUENCE { + ul-DPCH-Info UL-DPCH-Info-r7, + dl-InformationPerRL DL-InformationPerRL-List-r7, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + } + } + } + } + }, + -- Physical channel IEs + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power +} + +HandoverToUTRANCommand-v9c0ext-IEs ::= SEQUENCE { + -- For 1.28Mcps TDD only + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-TDD128-v9c0ext OPTIONAL +} + +HandoverToUTRANCommand-LaterCriticalExtensions ::= CHOICE { + r10 SEQUENCE { + handoverToUTRANCommand-r10 HandoverToUTRANCommand-r10-IEs, + v9c0NonCriticalExtensions SEQUENCE { + handoverToUTRANCommand-v9c0ext + HandoverToUTRANCommand-v9c0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r11 SEQUENCE { + handoverToUTRANCommand-r11 HandoverToUTRANCommand-r11-IEs, + -- Container for adding non critical extensions after freezing REL-12 + handoverToUTRANCommand-r11-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } +} + +HandoverToUTRANCommand-r10-IEs ::= SEQUENCE { + -- User equipment IEs + new-U-RNTI U-RNTI-Short, + cipheringAlgorithm CipheringAlgorithm-r7 OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + -- Radio bearer IEs + -- Specification mode information + defaultConfigForCellFACH DefaultConfigForCellFACH OPTIONAL, + specificationMode CHOICE { + complete SEQUENCE { + srb-InformationSetupList SRB-InformationSetupList-r8, + rab-InformationSetupList RAB-InformationSetupList-r8 OPTIONAL, + ul-CommonTransChInfo UL-CommonTransChInfo-r4, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8, + dl-CommonTransChInfo DL-CommonTransChInfo-r4, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r9, + ul-DPCH-Info UL-DPCH-Info-r7, + ul-EDCH-Information UL-EDCH-Information-r9 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r10, + dl-InformationPerRL-List DL-InformationPerRL-List-r7, + frequencyInfo FrequencyInfo, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored + dummy DLUL-HSPA-Information-r10 OPTIONAL + } + }, + rab-Info RAB-Info-Post OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostFDD, + dl-CommonInformationPost DL-CommonInformationPost, + dl-InformationPerRL-List DL-InformationPerRL-ListPostFDD, + frequencyInfo FrequencyInfoFDD + }, + tdd CHOICE { + tdd384 SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostTDD, + dl-InformationPerRL DL-InformationPerRL-PostTDD, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + }, + tdd128 SEQUENCE { + ul-DPCH-Info UL-DPCH-Info-r7, + dl-InformationPerRL DL-InformationPerRL-PostTDD-LCR-r4, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL + }, + tdd768 SEQUENCE { + ul-DPCH-Info UL-DPCH-Info-r7, + dl-InformationPerRL DL-InformationPerRL-List-r7, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + } + } + } + } + }, + -- Physical channel IEs + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power +} + +HandoverToUTRANCommand-r11-IEs ::= SEQUENCE { + -- User equipment IEs + new-U-RNTI U-RNTI-Short, + cipheringAlgorithm CipheringAlgorithm-r7 OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + -- Radio bearer IEs + -- Specification mode information + defaultConfigForCellFACH DefaultConfigForCellFACH OPTIONAL, + specificationMode CHOICE { + complete SEQUENCE { + srb-InformationSetupList SRB-InformationSetupList-r8, + rab-InformationSetupList RAB-InformationSetupList-r8 OPTIONAL, + ul-CommonTransChInfo UL-CommonTransChInfo-r4, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8, + dl-CommonTransChInfo DL-CommonTransChInfo-r4, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r11, + ul-DPCH-Info UL-DPCH-Info-r11, + ul-EDCH-Information UL-EDCH-Information-r11 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r11 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r10, + dl-InformationPerRL-List DL-InformationPerRL-List-r11, + frequencyInfo FrequencyInfo, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6 + } + }, + rab-Info RAB-Info-Post OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostFDD, + dl-CommonInformationPost DL-CommonInformationPost, + dl-InformationPerRL-List DL-InformationPerRL-ListPostFDD, + frequencyInfo FrequencyInfoFDD + }, + tdd CHOICE { + tdd384 SEQUENCE { + ul-DPCH-Info UL-DPCH-InfoPostTDD, + dl-InformationPerRL DL-InformationPerRL-PostTDD, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + }, + tdd128 SEQUENCE { + ul-DPCH-Info UL-DPCH-Info-r7, + dl-InformationPerRL DL-InformationPerRL-PostTDD-LCR-r4, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL + }, + tdd768 SEQUENCE { + ul-DPCH-Info UL-DPCH-Info-r7, + dl-InformationPerRL DL-InformationPerRL-List-r7, + frequencyInfo FrequencyInfoTDD, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + } + } + } + } + }, + -- Physical channel IEs + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power +} + +-- *************************************************** +-- +-- HANDOVER TO UTRAN COMPLETE +-- +-- *************************************************** + +HandoverToUTRANComplete ::= SEQUENCE { + --TABULAR: Integrity protection shall not be performed on this message. + -- User equipment IEs + -- TABULAR: startList is conditional on history. + startList STARTList OPTIONAL, + -- Radio bearer IEs + count-C-ActivationTime ActivationTime OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + handoverToUTRANComplete-r3-add-ext BIT STRING OPTIONAL, + va40NonCriticalExtensions SEQUENCE { + handoverToUTRANComplete-va40ext HandoverToUTRANComplete-va40ext, + vb50NonCriticalExtensions SEQUENCE { + handoverToUTRANComplete-vb50ext HandoverToUTRANComplete-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +HandoverToUTRANComplete-va40ext ::= SEQUENCE { + loggedMeasAvailable ENUMERATED { true } OPTIONAL +} + +HandoverToUTRANComplete-vb50ext-IEs ::= SEQUENCE { + connEstFailInfoAvailable ENUMERATED { true } OPTIONAL +} + +-- *************************************************** +-- +-- INITIAL DIRECT TRANSFER +-- +-- *************************************************** + +InitialDirectTransfer ::= SEQUENCE { + -- Core network IEs + cn-DomainIdentity CN-DomainIdentity, + intraDomainNasNodeSelector IntraDomainNasNodeSelector, + nas-Message NAS-Message, + -- Measurement IEs + measuredResultsOnRACH MeasuredResultsOnRACH OPTIONAL, + v3a0NonCriticalExtensions SEQUENCE { + initialDirectTransfer-v3a0ext InitialDirectTransfer-v3a0ext, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + initialDirectTransfer-r3-add-ext BIT STRING + (CONTAINING InitialDirectTransfer-r3-add-ext-IEs) OPTIONAL, + v590NonCriticalExtensions SEQUENCE { + initialDirectTransfer-v590ext InitialDirectTransfer-v590ext, + v690NonCriticalExtensions SEQUENCE { + initialDirectTransfer-v690ext InitialDirectTransfer-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + initialDirectTransfer-v770ext InitialDirectTransfer-v770ext-IEs, + v860NonCriticalExtensions SEQUENCE { + initialDirectTransfer-v860ext InitialDirectTransfer-v860ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + initialDirectTransfer-vb50ext InitialDirectTransfer-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +InitialDirectTransfer-v3a0ext ::= SEQUENCE { + -- start-value shall always be included in this version of the protocol + start-Value START-Value OPTIONAL +} +InitialDirectTransfer-v590ext ::= SEQUENCE { + establishmentCause EstablishmentCause OPTIONAL +} + +InitialDirectTransfer-v690ext-IEs ::= SEQUENCE { + -- Core network IEs + plmn-Identity PLMN-Identity OPTIONAL, + -- Measurement IEs + measuredResultsOnRACHinterFreq MeasuredResultsOnRACHinterFreq OPTIONAL, + -- MBMS IEs + mbms-JoinedInformation MBMS-JoinedInformation-r6 OPTIONAL +} + +InitialDirectTransfer-v770ext-IEs ::= SEQUENCE { + csCallType ENUMERATED { speech, video, other, spare } OPTIONAL +} + +InitialDirectTransfer-v860ext-IEs ::= SEQUENCE { + supportOfCSG ENUMERATED { true } OPTIONAL +} + +InitialDirectTransfer-r3-add-ext-IEs ::= SEQUENCE { + initialDirectTransfer-v7g0ext InitialDirectTransfer-v7g0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +InitialDirectTransfer-v7g0ext-IEs ::= SEQUENCE { + -- Measurement IEs + measuredResultsOnRACH-v7g0ext MeasuredResultsOnRACH-v7g0ext OPTIONAL +} + +InitialDirectTransfer-vb50ext-IEs ::= SEQUENCE { + -- Measurement IEs + measuredResultsOnRACHEUTRAFreq MeasuredResultsOnRACH-EUTRAFreq OPTIONAL +} + +-- *************************************************** +-- +-- HANDOVER FROM UTRAN COMMAND +-- +-- *************************************************** + +HandoverFromUTRANCommand-GSM ::= CHOICE { + r3 SEQUENCE { + handoverFromUTRANCommand-GSM-r3 + HandoverFromUTRANCommand-GSM-r3-IEs, + -- UTRAN should not include the IE laterNonCriticalExtensions when it sets the IE + -- gsm-message included in handoverFromUTRANCommand-GSM-r3 to single-GSM-Message. The UE + -- behaviour upon receiving a message with this combination of IE values is unspecified. + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + handoverFromUTRANCommand-GSM-r3-add-ext BIT STRING OPTIONAL, + -- UTRAN may apply the r3 version of the message to perform PS handover + -- for a single RAB only + v690NonCriticalExtensions SEQUENCE { + handoverFromUTRANCommand-GSM-v690ext HandoverFromUTRANCommand-GSM-v690ext-IEs, + v860NonCriticalExtensions SEQUENCE { + handoverFromUTRANCommand-GSM-v860ext + HandoverFromUTRANCommand-GSM-v860ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r6 SEQUENCE { + handoverFromUTRANCommand-GSM-r6 HandoverFromUTRANCommand-GSM-r6-IEs, + handoverFromUTRANCommand-GSM-r6-add-ext BIT STRING OPTIONAL, + v860NonCriticalExtensions SEQUENCE { + handoverFromUTRANCommand-GSM-v860ext + HandoverFromUTRANCommand-GSM-v860ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } +} + +HandoverFromUTRANCommand-GSM-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + activationTime ActivationTime OPTIONAL, + -- Radio bearer IEs + toHandoverRAB-Info RAB-Info OPTIONAL, + -- Measurement IEs + frequency-band Frequency-Band, + -- Other IEs + gsm-message CHOICE { + -- In the single-GSM-Message case the following rules apply: + -- 1> the GSM message directly follows the basic production; the final padding that + -- results when PER encoding the abstract syntax value is removed prior to appending + -- the GSM message. + -- 2> the RRC message excluding the GSM part, does not contain a length determinant; + -- there is no explicit parameter indicating the size of the included GSM message. + -- 3> depending on need, final padding (all "0"s) is added to ensure the final result + -- comprises a full number of octets + single-GSM-Message SEQUENCE {}, + gsm-MessageList SEQUENCE { + gsm-Messages GSM-MessageList + } + } +} + +HandoverFromUTRANCommand-GSM-r6-IEs ::= SEQUENCE { + -- User equipment IEs + activationTime ActivationTime OPTIONAL, + -- Radio bearer IEs + toHandoverRAB-Info RAB-InformationList-r6 OPTIONAL, + -- Measurement IEs + frequency-band Frequency-Band, + -- Other IEs + gsm-message CHOICE { + -- In the single-GSM-Message case the following rules apply: + -- 1> the GSM message directly follows the basic production; the final padding that + -- results when PER encoding the abstract syntax value is removed prior to appending + -- the GSM message. + -- 2> the RRC message excluding the GSM part, does not contain a length determinant; + -- there is no explicit parameter indicating the size of the included GSM message. + -- 3> depending on need, final padding (all "0"s) is added to ensure the final result + -- comprises a full number of octets + single-GSM-Message SEQUENCE {}, + gsm-MessageList SEQUENCE { + gsm-Messages GSM-MessageList + } + }, + geran-SystemInfoType CHOICE { + sI GERAN-SystemInformation, + pSI GERAN-SystemInformation + } OPTIONAL +} + +HandoverFromUTRANCommand-GSM-v690ext-IEs ::= SEQUENCE { + geran-SystemInfoType CHOICE { + sI GERAN-SystemInformation, + pSI GERAN-SystemInformation + } OPTIONAL +} + +HandoverFromUTRANCommand-GSM-v860ext-IEs ::= SEQUENCE { + sr-vcc-SecurityRABInfo SR-VCC-SecurityRABInfo-v860ext OPTIONAL +} + +HandoverFromUTRANCommand-GERANIu ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + handoverFromUTRANCommand-GERANIu CHOICE { + r5 SEQUENCE { + handoverFromUTRANCommand-GERANIu-r5 + HandoverFromUTRANCommand-GERANIu-r5-IEs, + -- UTRAN should not include the IE nonCriticalExtensions when it sets + -- the IE geranIu-message included in handoverFromUTRANCommand-GERANIu-r5 to + -- single-GERANIu-Message + -- The UE behaviour upon receiving a message including this combination of IE values is + -- not specified + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + later-than-r5 SEQUENCE { + criticalExtensions SEQUENCE {} + } + } +} + +HandoverFromUTRANCommand-GERANIu-r5-IEs ::= SEQUENCE { + -- User equipment IEs + activationTime ActivationTime OPTIONAL, + -- Measurement IEs + frequency-Band Frequency-Band, + -- Other IEs + geranIu-Message CHOICE { + -- In the single-GERANIu-Message case the following rules apply: + -- 1> the GERAN Iu message directly follows the basic production; the final padding that + -- results when PER encoding the abstract syntax value is removed prior to appending + -- the GERAN Iu message. + -- 2> the RRC message excluding the GERAN Iu part does not contain a length determinant; +-- there is no explicit parameter indicating the size of the included GERAN Iu +-- message. + -- 3> depending on need, final padding (all "0"s) is added to ensure the final result + -- comprises a full number of octets. + single-GERANIu-Message SEQUENCE {}, + geranIu-MessageList SEQUENCE { + geranIu-Messages GERANIu-MessageList + } + } +} + +HandoverFromUTRANCommand-CDMA2000 ::= CHOICE { + r3 SEQUENCE { + handoverFromUTRANCommand-CDMA2000-r3 + HandoverFromUTRANCommand-CDMA2000-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + handoverFromUTRANCommand-CDMA2000-r3-add-ext + BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions SEQUENCE {} + } +} + +HandoverFromUTRANCommand-CDMA2000-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + activationTime ActivationTime OPTIONAL, + -- Radio bearer IEs + toHandoverRAB-Info RAB-Info OPTIONAL, + -- Other IEs + cdma2000-MessageList CDMA2000-MessageList +} + +HandoverFromUTRANCommand-EUTRA ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r8 SEQUENCE { + handoverFromUTRANCommand-EUTRA-r8 HandoverFromUTRANCommand-EUTRA-r8-IEs, + handoverFromUTRANCommand-EUTRA-r8-add-ext + BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions CHOICE { + r11 SEQUENCE { + handoverFromUTRANCommand-EUTRA-r11 HandoverFromUTRANCommand-EUTRA-r11-IEs, + handoverFromUTRANCommand-EUTRA-r11-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } +} + +HandoverFromUTRANCommand-EUTRA-r8-IEs ::= SEQUENCE { + -- User equipment IEs + activationTime ActivationTime OPTIONAL, + -- Radio bearer IEs + toHandoverRAB-Info RAB-InformationList OPTIONAL, + -- Other IEs + eutra-Message OCTET STRING +} + +HandoverFromUTRANCommand-EUTRA-r11-IEs ::= SEQUENCE { + -- User equipment IEs + rsr-vcc-Info RSR-VCC-Info OPTIONAL, + activationTime ActivationTime OPTIONAL, + -- Radio bearer IEs + toHandoverRAB-Info RAB-InformationList OPTIONAL, + -- Other IEs + eutra-Message OCTET STRING +} + +-- *************************************************** +-- +-- HANDOVER FROM UTRAN FAILURE +-- +-- *************************************************** + +HandoverFromUTRANFailure ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + -- Other IEs + interRAT-HO-FailureCause InterRAT-HO-FailureCause OPTIONAL, + -- In case the interRATMessage to be transferred is for GERAN Iu mode, the + -- message should be placed in the HandoverFromUtranFailure-v590ext-IEs + -- non-critical extension container. + -- In case the interRATMessage to be transferred is for E-UTRA, the + -- message should be placed in the HandoverFromUtranFailure-v860ext-IEs + -- non-critical extension container. + interRATMessage CHOICE { + gsm SEQUENCE { + gsm-MessageList GSM-MessageList + }, + cdma2000 SEQUENCE { + cdma2000-MessageList CDMA2000-MessageList + } + } OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + handoverFromUTRANFailure-r3-add-ext BIT STRING OPTIONAL, + v590NonCriticalExtensions SEQUENCE { + handoverFromUTRANFailure-v590ext HandoverFromUtranFailure-v590ext-IEs, + v860NonCriticalExtensions SEQUENCE { + handoverFromUTRANFailure-v860ext HandoverFromUtranFailure-v860ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +HandoverFromUtranFailure-v590ext-IEs ::= SEQUENCE { + geranIu-MessageList GERANIu-MessageList OPTIONAL +} + +HandoverFromUtranFailure-v860ext-IEs ::= SEQUENCE { + eutra-Message OCTET STRING OPTIONAL +} + +-- *************************************************** +-- +-- INTER RAT HANDOVER INFO +-- +-- *************************************************** + +InterRATHandoverInfo ::= SEQUENCE { + -- This structure is defined for historical reasons, backward compatibility with 44.018 + predefinedConfigStatusList CHOICE { + absent NULL, + present PredefinedConfigStatusList + }, + uE-SecurityInformation CHOICE { + absent NULL, + present UE-SecurityInformation + }, + ue-CapabilityContainer CHOICE { + absent NULL, + -- present is an octet aligned string containing IE UE-RadioAccessCapabilityInfo + present OCTET STRING (SIZE (0..63)) + }, + -- Non critical extensions + v390NonCriticalExtensions CHOICE { + absent NULL, + present SEQUENCE { + interRATHandoverInfo-v390ext InterRATHandoverInfo-v390ext-IEs, + v3a0NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v3a0ext InterRATHandoverInfo-v3a0ext-IEs, + laterNonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v3d0ext InterRATHandoverInfo-v3d0ext-IEs, + -- Container for additional R99 extensions + interRATHandoverInfo-r3-add-ext BIT STRING + (CONTAINING InterRATHandoverInfo-r3-add-ext-IEs) OPTIONAL, + v3g0NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v3g0ext InterRATHandoverInfo-v3g0ext-IEs, + v4b0NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v4b0ext InterRATHandoverInfo-v4b0ext-IEs, + v4d0NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v4d0ext InterRATHandoverInfo-v4d0ext-IEs, + -- Reserved for future non critical extension + v590NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v590ext + InterRATHandoverInfo-v590ext-IEs, + v690NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v690ext + InterRATHandoverInfo-v690ext-IEs, + v6b0NonCriticalExtensions + InterRATHandoverInfo-NonCriticalExtension-v6b0-IEs OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } + } +} + +InterRATHandoverInfo-v390ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v380ext UE-RadioAccessCapability-v380ext OPTIONAL, + dl-PhysChCapabilityFDD-v380ext DL-PhysChCapabilityFDD-v380ext +} + +InterRATHandoverInfo-v3a0ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v3a0ext UE-RadioAccessCapability-v3a0ext OPTIONAL +} + +InterRATHandoverInfo-v3d0ext-IEs ::= SEQUENCE { + -- User equipment IEs + uESpecificBehaviourInformation1interRAT UESpecificBehaviourInformation1interRAT OPTIONAL +} + +InterRATHandoverInfo-v3g0ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v3g0ext UE-RadioAccessCapability-v3g0ext OPTIONAL +} + +InterRATHandoverInfo-r3-add-ext-IEs ::= SEQUENCE { + interRATHandoverInfo-v690ext1 InterRATHandoverInfo-v690ext1-IEs, + v7e0NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v7e0ext InterRATHandoverInfo-v7e0ext-IEs, + v7f0NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v7f0ext InterRATHandoverInfo-v7f0ext-IEs, + va40NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-va40ext InterRATHandoverInfoBand-va40ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +InterRATHandoverInfo-v4b0ext-IEs ::= SEQUENCE { + -- User equipment IEs + accessStratumReleaseIndicator AccessStratumReleaseIndicator +} + +InterRATHandoverInfo-v4d0ext-IEs ::= SEQUENCE { + -- User equipment IEs + tdd128-RF-Capability RadioFrequencyBandTDDList OPTIONAL +} + +InterRATHandoverInfo-v590ext-IEs ::= SEQUENCE { + -- User equipment IEs + predefinedConfigStatusListComp PredefinedConfigStatusListComp OPTIONAL, + ue-RadioAccessCapabilityComp UE-RadioAccessCapabilityComp OPTIONAL +} + +InterRATHandoverInfo-v690ext1-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v650ext UE-RadioAccessCapability-v650ext OPTIONAL +} + +InterRATHandoverInfo-v690ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-SecurityInformation2 UE-SecurityInformation2 OPTIONAL, + ue-RadioAccessCapabilityComp UE-RadioAccessCapabilityComp-ext OPTIONAL, + ue-RadioAccessCapabilityComp2 UE-RadioAccessCapabilityComp2 +} + +InterRATHandoverInfo-NonCriticalExtension-v6b0-IEs ::= SEQUENCE { + interRATHandoverInfo-v6b0ext InterRATHandoverInfo-v6b0ext-IEs, + v6e0NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v6e0ext InterRATHandoverInfo-v6e0ext-IEs, + v770NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v770ext InterRATHandoverInfo-v770ext-IEs, + v790nonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v790ext InterRATHandoverInfo-v790ext-IEs, + v860NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v860ext InterRATHandoverInfo-v860ext-IEs, + v880NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v880ext InterRATHandoverInfo-v880ext-IEs, + v920NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v920ext InterRATHandoverInfo-v920ext-IEs, + v8b0NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v8b0ext + InterRATHandoverInfo-v8b0ext-IEs, + v950NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-v950ext + InterRATHandoverInfo-v950ext-IEs, + va40NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-va40ext + InterRATHandoverInfo-va40ext-IEs, + va80NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-va80ext + InterRATHandoverInfo-va80ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + interRATHandoverInfo-vb50ext + InterRATHandoverInfo-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +InterRATHandoverInfo-v6b0ext-IEs ::= SEQUENCE { + -- User equipment IEs + supportForSIB11bis ENUMERATED { true } OPTIONAL +} + +InterRATHandoverInfo-v6e0ext-IEs ::= SEQUENCE { + -- User equipment IEs + supportForFDPCH ENUMERATED { true } OPTIONAL +} + +InterRATHandoverInfo-v770ext-IEs ::= SEQUENCE { + ue-RadioAccessCapabilityInfo UE-RadioAccessCapabilityInfo-v770ext OPTIONAL, + ue-RadioAccessCapabilityComp UE-RadioAccessCapabilityComp-v770ext OPTIONAL, + ue-RadioAccessCapabilityComp2 UE-RadioAccessCapabilityComp2-v770ext OPTIONAL +} + +InterRATHandoverInfo-v790ext-IEs ::= SEQUENCE { + -- User equipment IEs + supportForEDPCCHPowerBoosting ENUMERATED { true } OPTIONAL +} + +InterRATHandoverInfo-v7e0ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability UE-RadioAccessCapability-v7e0ext OPTIONAL +} + +InterRATHandoverInfo-v7f0ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability UE-RadioAccessCapability-v7f0ext OPTIONAL, + ue-RadioAccessCapabilityComp2 UE-RadioAccessCapabilityComp2-v7f0ext OPTIONAL +} + +InterRATHandoverInfo-v860ext-IEs ::= SEQUENCE { + ue-RadioAccessCapabilityInfo UE-RadioAccessCapability-v860ext OPTIONAL, + ue-RadioAccessCapabilityComp2 UE-RadioAccessCapabilityComp2-v860ext OPTIONAL +} + +InterRATHandoverInfo-v880ext-IEs ::= SEQUENCE { + -- UE radio access capability + ue-RadioAccessCapabilityInfo UE-RadioAccessCapability-v880ext OPTIONAL, + ue-RadioAccessCapabilityInfo-TDD128 UE-RadioAccessCapabilityComp-TDD128 OPTIONAL +} + +InterRATHandoverInfo-v920ext-IEs ::= SEQUENCE { + ue-RadioAccessCapabilityInfo UE-RadioAccessCapability-v920ext OPTIONAL, + ue-RadioAccessCapabilityComp2 UE-RadioAccessCapabilityComp2-v920ext OPTIONAL +} + +InterRATHandoverInfo-v8b0ext-IEs ::= SEQUENCE { + -- UE radio access capability + ue-RadioAccessCapabilityInfo UE-RadioAccessCapabilityInfo-TDD128-v8b0ext OPTIONAL +} + +InterRATHandoverInfo-v950ext-IEs ::= SEQUENCE { + -- User equipment IEs + pdcp-Capability PDCP-Capability-r4-ext OPTIONAL +} + +InterRATHandoverInfo-va40ext-IEs ::= SEQUENCE { + ue-RadioAccessCapabilityInfo UE-RadioAccessCapability-va40ext OPTIONAL, + ue-RadioAccessCapabilityComp2 UE-RadioAccessCapabilityComp2-va40ext OPTIONAL +} + +InterRATHandoverInfoBand-va40ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapabBand UE-RadioAccessCapabBand-va40ext OPTIONAL, + rf-CapabilityFDDComp RF-CapabBandListFDDComp-ext2 OPTIONAL +} + +InterRATHandoverInfo-va80ext-IEs ::= SEQUENCE { + ue-RadioAccessCapabilityInfo-va80ext UE-RadioAccessCapability-va80ext OPTIONAL +} + +InterRATHandoverInfo-vb50ext-IEs ::= SEQUENCE { + ue-RadioAccessCapabilityInfo-vb50ext UE-RadioAccessCapability-vb50ext OPTIONAL, + ue-RadioAccessCapabilityComp2 UE-RadioAccessCapabilityComp2-vb50ext OPTIONAL, + ue-RadioAccessCapabilityInfo-TDD128 UE-RadioAccessCapabilityInfo-TDD128-vb50ext OPTIONAL +} + +-- *************************************************** +-- +-- MEASUREMENT CONTROL +-- +-- *************************************************** + +MeasurementControl ::= CHOICE { + -- The Rel-4 functionality of UE Positioning OTDOA AssistanceData TDD is only available + -- in the later-than-r3 branch of this message (i.e. through the use of the IE + -- ue-Positioning-OTDOA-AssistanceData-r4) + r3 SEQUENCE { + measurementControl-r3 MeasurementControl-r3-IEs, + v390nonCriticalExtensions SEQUENCE { + measurementControl-v390ext MeasurementControl-v390ext, + v3a0NonCriticalExtensions SEQUENCE { + measurementControl-v3a0ext MeasurementControl-v3a0ext, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + measurementControl-r3-add-ext BIT STRING OPTIONAL, + v4b0NonCriticalExtensions SEQUENCE{ + -- The content of the v4b0 non-critical extension has been removed. If sent + -- to a UE of AS release 4, the UE behaviour is unspecified. A UE of AS + -- release 5 onward shall comply with the v4b0 and later extensions in this + -- branch of the message. + v590NonCriticalExtensions SEQUENCE { + measurementControl-v590ext MeasurementControl-v590ext-IEs, + v5b0NonCriticalExtensions SEQUENCE { + measurementControl-v5b0ext MeasurementControl-v5b0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + -- Least significant part of extended "RRC transaction identifier" (Rel-5 onward) + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r4 SEQUENCE { + measurementControl-r4 MeasurementControl-r4-IEs, + v4d0NonCriticalExtensions SEQUENCE { + -- Container for adding non critical extensions after freezing REL-5 + measurementControl-r4-add-ext BIT STRING OPTIONAL, + v590NonCriticalExtensions SEQUENCE{ + measurementControl-v590ext MeasurementControl-v590ext-IEs, + v5b0NonCriticalExtensions SEQUENCE { + measurementControl-v5b0ext MeasurementControl-v5b0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r4 SEQUENCE { + -- Most significant part of extended "RRC transaction identifier" (MSP): + -- extended "RRC transaction identifier" = + -- rrc-TransactionIdentifier-MSP * 4 + rrc-TransactionIdentifier + rrc-TransactionIdentifier-MSP RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r6 SEQUENCE { + measurementControl-r6 MeasurementControl-r6-IEs, + v6a0NonCriticalExtensions SEQUENCE { + measurementControl-v6a0ext MeasurementControl-v6a0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r7 SEQUENCE { + measurementControl-r7 MeasurementControl-r7-IEs, + -- Container for adding non critical extensions after freezing REL-7 + measurementControl-r7-add-ext BIT STRING OPTIONAL, + v7b0NonCriticalExtensions SEQUENCE { + measurementControl-v7b0ext MeasurementControl-v7b0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r8 SEQUENCE { + measurementControl-r8 MeasurementControl-r8-IEs, + -- Container for adding non critical extensions after freezing REL-9 + measurementControl-r8-add-ext BIT STRING OPTIONAL, + v8a0NonCriticalExtensions SEQUENCE { + measurementControl-v8a0ext MeasurementControl-v8a0ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + measurementControl-vb50ext MeasurementControl-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r9 SEQUENCE { + measurementControl-r9 MeasurementControl-r9-IEs, + -- Container for adding non critical extensions after freezing REL-10 + measurementControl-r9-add-ext BIT STRING OPTIONAL, + v970NonCriticalExtensions SEQUENCE { + measurementControl-v970ext + MeasurementControl-v970ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + measurementControl-vb50ext + MeasurementControl-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r10 SEQUENCE { + measurementControl-r10 MeasurementControl-r10-IEs, + -- Container for adding non critical extensions after + -- freezing REL-11 + measurementControl-r10-add-ext BIT STRING OPTIONAL, + vaa0NonCriticalExtensions SEQUENCE { + measurementControl-vaa0ext + MeasurementControl-vaa0ext-IEs, + vab0NonCriticalExtensions SEQUENCE { + measurementControl-vab0ext + MeasurementControl-vab0ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + measurementControl-vb50ext + MeasurementControl-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r11 SEQUENCE { + measurementControl-r11 + MeasurementControl-r11-IEs, + -- Container for adding non critical extensions after + -- freezing REL-12 + measurementControl-r11-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } + } + } + } + } + } + } + } +} + +MeasurementControl-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + -- Measurement IEs + measurementIdentity MeasurementIdentity, + -- TABULAR: The measurement type is included in MeasurementCommand. + measurementCommand MeasurementCommand, + measurementReportingMode MeasurementReportingMode OPTIONAL, + additionalMeasurementList AdditionalMeasurementID-List OPTIONAL, + -- Physical channel IEs + dpch-CompressedModeStatusInfo DPCH-CompressedModeStatusInfo OPTIONAL +} + +MeasurementControl-v390ext ::= SEQUENCE { + ue-Positioning-Measurement-v390ext UE-Positioning-Measurement-v390ext OPTIONAL +} + +MeasurementControl-v3a0ext ::= SEQUENCE { + sfn-Offset-Validity SFN-Offset-Validity OPTIONAL +} + +MeasurementControl-r4-IEs ::= SEQUENCE { + -- Measurement IEs + measurementIdentity MeasurementIdentity, + -- TABULAR: The measurement type is included in measurementCommand. + measurementCommand MeasurementCommand-r4, + measurementReportingMode MeasurementReportingMode OPTIONAL, + additionalMeasurementList AdditionalMeasurementID-List OPTIONAL, + -- Physical channel IEs + dpch-CompressedModeStatusInfo DPCH-CompressedModeStatusInfo OPTIONAL +} + +MeasurementControl-v590ext-IEs ::= SEQUENCE { + measurementCommand-v590ext CHOICE { + -- the choice "intra-frequency" shall be used for the case of intra-frequency measurement, + -- as well as when intra-frequency events are configured for inter-frequency measurement + intra-frequency Intra-FreqEventCriteriaList-v590ext, + inter-frequency Inter-FreqEventCriteriaList-v590ext + } OPTIONAL, + intraFreqReportingCriteria-1b-r5 IntraFreqReportingCriteria-1b-r5 OPTIONAL, + intraFreqEvent-1d-r5 IntraFreqEvent-1d-r5 OPTIONAL, + -- Most significant part of extended "RRC transaction identifier" (MSP): + -- extended "RRC transaction identifier" = + -- rrc-TransactionIdentifier-MSP-v590ext * 4 + rrc-TransactionIdentifier + rrc-TransactionIdentifier-MSP-v590ext RRC-TransactionIdentifier +} + +MeasurementControl-v5b0ext-IEs ::= SEQUENCE { + interRATCellInfoIndication InterRATCellInfoIndication OPTIONAL +} + +MeasurementControl-r6-IEs ::= SEQUENCE { + -- Measurement IEs + measurementIdentity MeasurementIdentity, + -- TABULAR: The measurement type is included in measurementCommand. + measurementCommand MeasurementCommand-r6, + measurementReportingMode MeasurementReportingMode OPTIONAL, + additionalMeasurementList AdditionalMeasurementID-List OPTIONAL, + -- Physical channel IEs + dpch-CompressedModeStatusInfo DPCH-CompressedModeStatusInfo OPTIONAL +} + +MeasurementControl-v6a0ext-IEs ::= SEQUENCE { + intraFreqReportingCriteria-1b-r5 IntraFreqReportingCriteria-1b-r5 OPTIONAL +} + + +MeasurementControl-r7-IEs ::= SEQUENCE { + -- Measurement IEs + measurementIdentity MeasurementIdentity, + -- TABULAR: The measurement type is included in measurementCommand. + measurementCommand MeasurementCommand-r7, + measurementReportingMode MeasurementReportingMode OPTIONAL, + additionalMeasurementList AdditionalMeasurementID-List OPTIONAL, + -- Physical channel IEs + dpch-CompressedModeStatusInfo DPCH-CompressedModeStatusInfo OPTIONAL +} + +MeasurementControl-v7b0ext-IEs ::= SEQUENCE { + -- Measurement IEs + newInterFreqCellList NewInterFreqCellList-v7b0ext OPTIONAL +} + +MeasurementControl-r8-IEs ::= SEQUENCE { + -- Measurement IEs + measurementIdentity MeasurementIdentity, + -- TABULAR: The measurement type is included in measurementCommand. + measurementCommand MeasurementCommand-r8, + measurementReportingMode MeasurementReportingMode OPTIONAL, + additionalMeasurementList AdditionalMeasurementID-List OPTIONAL, + -- Physical channel IEs + dpch-CompressedModeStatusInfo DPCH-CompressedModeStatusInfo OPTIONAL +} + +MeasurementControl-v8a0ext-IEs ::= SEQUENCE { + -- Measurement IEs + newIntraFreqCellList NewIntraFreqCellList-LCR-v8a0ext OPTIONAL, + newInterFreqCellList NewInterFreqCellList-LCR-v8a0ext OPTIONAL +} + +MeasurementControl-r9-IEs ::= SEQUENCE { + -- Measurement IEs + -- if the UE supports extended measurements, "measurementIdentity" + -- shall be ignored if "measurementIdentity" in MeasurementControl-v970ext-IEs + -- is present, and the value of that element shall be used instead. + measurementIdentity MeasurementIdentity, + -- TABULAR: The measurement type is included in measurementCommand. + measurementCommand MeasurementCommand-r9, + measurementReportingMode MeasurementReportingMode OPTIONAL, + -- if the UE supports extended measurements, "additionalMeasurementList" + -- shall be ignored if "additionalMeasurementList" in MeasurementControl-v970ext-IEs + -- is present, and the value of that element shall be used instead. + additionalMeasurementList AdditionalMeasurementID-List OPTIONAL, + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL, + -- Physical channel IEs + dpch-CompressedModeStatusInfo DPCH-CompressedModeStatusInfo OPTIONAL +} + +MeasurementControl-v970ext-IEs ::= SEQUENCE { + -- Measurement IEs + measurementIdentity MeasurementIdentity-r9 OPTIONAL, + additionalMeasurementList AdditionalMeasurementID-List-r9 OPTIONAL +} + +MeasurementControl-r10-IEs ::= SEQUENCE { + -- Measurement IEs + -- if the UE supports extended measurements, "measurementIdentity" + -- shall be ignored if "measurementIdentity" in MeasurementControl-vab0ext-IEs + -- is present, and the value of that element shall be used instead. + measurementIdentity MeasurementIdentity, + -- TABULAR: The measurement type is included in measurementCommand. + measurementCommand MeasurementCommand-r10, + measurementReportingMode MeasurementReportingMode OPTIONAL, + -- if the UE supports extended measurements, "additionalMeasurementList" + -- shall be ignored if "additionalMeasurementList" in MeasurementControl-vab0ext-IEs + -- is present, and the value of that element shall be used instead. + additionalMeasurementList AdditionalMeasurementID-List OPTIONAL, + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL, + -- Physical channel IEs + dpch-CompressedModeStatusInfo DPCH-CompressedModeStatusInfo-r10 OPTIONAL +} + +MeasurementControl-vaa0ext-IEs ::= SEQUENCE { + -- Measurement IEs + periodicalReportingCriteriaOnSecULFreq + PeriodicalWithReportingCellStatusOnSecULFreq OPTIONAL +} + +MeasurementControl-vab0ext-IEs ::= MeasurementControl-v970ext-IEs + +MeasurementControl-r11-IEs ::= SEQUENCE { + -- Measurement IEs + measurementIdentity MeasurementIdentity-r9, + -- TABULAR: The measurement type is included in measurementCommand. + measurementCommand MeasurementCommand-r11, + measurementReportingMode MeasurementReportingMode OPTIONAL, + additionalMeasurementList AdditionalMeasurementID-List-r9 OPTIONAL, + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL, + -- Physical channel IEs + dpch-CompressedModeStatusInfo DPCH-CompressedModeStatusInfo-r10 OPTIONAL +} + +MeasurementControl-vb50ext-IEs ::= SEQUENCE { + -- Measurement IEs + interRATMeasurement InterRATMeasurement-r11 OPTIONAL +} + +-- *************************************************** +-- +-- MEASUREMENT CONTROL FAILURE +-- +-- *************************************************** + +MeasurementControlFailure ::= SEQUENCE { + -- User equipment IEs + -- Least significant part of extended "RRC transaction identifier" (Rel-5 onward) + rrc-TransactionIdentifier RRC-TransactionIdentifier, + failureCause FailureCauseWithProtErr, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + measurementControlFailure-r3-add-ext BIT STRING OPTIONAL, + v590NonCriticalExtensions SEQUENCE { + measurementControlFailure-v590ext MeasurementControlFailure-v590ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +MeasurementControlFailure-v590ext-IEs ::= SEQUENCE { + -- Most significant part of extended "RRC transaction identifier" (MSP): + -- extended "RRC transaction identifier" = + -- rrc-TransactionIdentifier-MSP-v590ext * 4 + rrc-TransactionIdentifier + -- If the rrc-TransactionIdentifier-MSP-v590ext was not received in the MEASUREMENT CONTROL + -- message, then the rrc-TransactionIdentifier-MSP-v590ext shall be set to zero + rrc-TransactionIdentifier-MSP-v590ext RRC-TransactionIdentifier +} + +-- *************************************************** +-- +-- MEASUREMENT REPORT +-- +-- *************************************************** + +MeasurementReport ::= SEQUENCE { + -- Measurement IEs + -- if the UE supports extended measurements, "measurementIdentity" + -- shall be ignored if "measurementIdentity" in MeasurementReport-v970ext-IEs + -- is present, and the value of that element shall be used instead. + measurementIdentity MeasurementIdentity, + measuredResults MeasuredResults OPTIONAL, + measuredResultsOnRACH MeasuredResultsOnRACH OPTIONAL, + additionalMeasuredResults MeasuredResultsList OPTIONAL, + eventResults EventResults OPTIONAL, + -- Non-critical extensions + v390nonCriticalExtensions SEQUENCE { + measurementReport-v390ext MeasurementReport-v390ext, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + measurementReport-r3-add-ext BIT STRING OPTIONAL, + v4b0NonCriticalExtensions SEQUENCE { + measurementReport-v4b0ext MeasurementReport-v4b0ext-IEs, + -- Extension mechanism for non-Rel4 information + v590NonCriticalExtensions SEQUENCE { + measurementReport-v590ext MeasurementReport-v590ext-IEs, + v5b0NonCriticalExtensions SEQUENCE { + measurementReport-v5b0ext MeasurementReport-v5b0ext-IEs, + v690NonCriticalExtensions SEQUENCE { + measurementReport-v690ext MeasurementReport-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + measurementReport-v770ext MeasurementReport-v770ext-IEs, + v860NonCriticalExtensions SEQUENCE { + measurementReport-v860ext MeasurementReport-v860ext-IEs, + v920NonCriticalExtensions SEQUENCE { + measurementReport-v920ext MeasurementReport-v920ext-IEs, + v970NonCriticalExtensions SEQUENCE { + measurementReport-v970ext-IE + MeasurementReport-v970ext-IEs, + va40NonCriticalExtensions SEQUENCE { + measurementReport-va40ext + MeasurementReport-va40ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + measurementReport-vb50ext + MeasurementReport-vb50ext-IEs, + nonCriticalExtensions + SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +MeasurementReport-v390ext ::= SEQUENCE { + measuredResults-v390ext MeasuredResults-v390ext OPTIONAL +} + +MeasurementReport-v4b0ext-IEs ::= SEQUENCE { + interFreqEventResults-LCR InterFreqEventResults-LCR-r4-ext OPTIONAL, + -- additionalMeasuredResults-LCR shall contain measurement results and additional measurement + -- results list. + additionalMeasuredResults-LCR MeasuredResultsList-LCR-r4-ext OPTIONAL, + -- dummy is not used in this version of the specification. It should not be sent and + -- if received it should be ignored. + dummy PrimaryCPICH-Info OPTIONAL +} + +MeasurementReport-v590ext-IEs ::= SEQUENCE { + measuredResults-v590ext MeasuredResults-v590ext OPTIONAL +} + +MeasurementReport-v5b0ext-IEs ::= SEQUENCE { + interRATCellInfoIndication InterRATCellInfoIndication OPTIONAL +} + +MeasurementReport-v690ext-IEs ::= SEQUENCE { + measuredResultsOnRACHinterFreq MeasuredResultsOnRACHinterFreq OPTIONAL +} + +MeasurementReport-v770ext-IEs ::= SEQUENCE { + measuredResults MeasuredResults-v770ext OPTIONAL, + additionalMeasuredResults MeasuredResultsList-v770xet OPTIONAL, + eventResults EventResults-v770ext OPTIONAL, + ue-Positioning-OTDOA-MeasuredResults + UE-Positioning-OTDOA-MeasuredResultsTDD-ext OPTIONAL +} + +MeasurementReport-v860ext-IEs ::= SEQUENCE { + activationTime ActivationTime OPTIONAL, + measuredResults MeasuredResults-v860ext OPTIONAL, + additionalMeasuredResults MeasuredResultsList-v860ext OPTIONAL, + eventResults EventResults-v860ext OPTIONAL, + eutra-MeasuredResults EUTRA-MeasuredResults OPTIONAL, + eutra-EventResults EUTRA-EventResults OPTIONAL +} + +MeasurementReport-v920ext-IEs ::= SEQUENCE { + cSGProximityIndication CSGProximityIndication OPTIONAL, + measuredResults MeasuredResults-v920ext OPTIONAL, + measuredResultsOnSecUlFreq MeasuredResultsOnSecUlFreq OPTIONAL, + additionalMeasuredResults MeasuredResultsList-v920ext OPTIONAL, + additionalMeasuredResultsOnSecUlFreq + MeasuredResultsListOnSecUlFreq OPTIONAL, + eventResultsOnSecUlFreq EventResultsOnSecUlFreq OPTIONAL, + eutra-MeasuredResults EUTRA-MeasuredResults-v920ext OPTIONAL +} + +MeasurementReport-v970ext-IEs ::= SEQUENCE { + measurementIdentity MeasurementIdentityExt OPTIONAL +} + +MeasurementReport-va40ext-IEs ::= SEQUENCE { + eventResults EventResults-va40ext OPTIONAL, + loggedMeasAvailable ENUMERATED { true } OPTIONAL, + loggedANRResultsAvailable ENUMERATED { true } OPTIONAL +} + +MeasurementReport-vb50ext-IEs ::= SEQUENCE { + -- Measurement IEs + measuredResultsOnRACHEUTRAFreq MeasuredResultsOnRACH-EUTRAFreq OPTIONAL, + eutra-EventResultsForCELLFACH EUTRA-EventResultsForCELLFACH OPTIONAL, + cSGProximityIndication CSGProximityIndication-vb50ext OPTIONAL, + eutra-MeasuredResults EUTRA-MeasuredResults-vb50ext OPTIONAL, + eutra-EventResults EUTRA-EventResults-vb50ext OPTIONAL +} + +-- *************************************************** +-- +-- PAGING TYPE 1 +-- +-- *************************************************** + +PagingType1 ::= SEQUENCE { + -- User equipment IEs + pagingRecordList PagingRecordList OPTIONAL, + -- Other IEs + bcch-ModificationInfo BCCH-ModificationInfo OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + pagingType1-r3-add-ext BIT STRING OPTIONAL, + v590NonCriticalExtensions SEQUENCE { + pagingType1-v590ext PagingType1-v590ext-IEs, + v860NonCriticalExtensions SEQUENCE { + pagingType1-v860ext PagingType1-v860ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +PagingType1-v590ext-IEs ::= SEQUENCE { + -- User equipment IEs + pagingRecord2List PagingRecord2List-r5 OPTIONAL +} + +PagingType1-v860ext-IEs ::= SEQUENCE { + -- Other IEs + etws-Information ETWS-Information OPTIONAL +} + +-- *************************************************** +-- +-- PAGING TYPE 2 +-- +-- *************************************************** + +PagingType2 ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + pagingCause PagingCause, + -- Core network IEs + cn-DomainIdentity CN-DomainIdentity, + pagingRecordTypeID PagingRecordTypeID, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + pagingType2-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +-- *************************************************** +-- +-- PHYSICAL CHANNEL RECONFIGURATION +-- +-- *************************************************** + +PhysicalChannelReconfiguration ::= CHOICE { + r3 SEQUENCE { + physicalChannelReconfiguration-r3 + PhysicalChannelReconfiguration-r3-IEs, + v3a0NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v3a0ext PhysicalChannelReconfiguration-v3a0ext, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + physicalChannelReconfiguration-r3-add-ext BIT STRING OPTIONAL, + v4b0NonCriticalExtenstions SEQUENCE { + physicalChannelReconfiguration-v4b0ext + PhysicalChannelReconfiguration-v4b0ext-IEs, + v590NonCriticalExtenstions SEQUENCE { + physicalChannelReconfiguration-v590ext + PhysicalChannelReconfiguration-v590ext-IEs, + v690NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v690ext + PhysicalChannelReconfiguration-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v770ext + PhysicalChannelReconfiguration-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r4 SEQUENCE { + physicalChannelReconfiguration-r4 + PhysicalChannelReconfiguration-r4-IEs, + v4d0NonCriticalExtensions SEQUENCE { + -- Container for adding non critical extensions after freezing REL-5 + physicalChannelReconfiguration-r4-add-ext BIT STRING OPTIONAL, + v590NonCriticalExtenstions SEQUENCE { + physicalChannelReconfiguration-v590ext + PhysicalChannelReconfiguration-v590ext-IEs, + v690NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v690ext + PhysicalChannelReconfiguration-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v770ext + PhysicalChannelReconfiguration-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r5 SEQUENCE { + physicalChannelReconfiguration-r5 + PhysicalChannelReconfiguration-r5-IEs, + -- Container for adding non critical extensions after freezing REL-6 + physicalChannelReconfiguration-r5-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v690ext + PhysicalChannelReconfiguration-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v770ext + PhysicalChannelReconfiguration-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r6 SEQUENCE { + physicalChannelReconfiguration-r6 + PhysicalChannelReconfiguration-r6-IEs, + -- Container for adding non critical extensions after freezing REL-7 + physicalChannelReconfiguration-r6-add-ext BIT STRING OPTIONAL, + v6b0NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v6b0ext + PhysicalChannelReconfiguration-v6b0ext-IEs, + v770NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v770ext + PhysicalChannelReconfiguration-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r7 SEQUENCE { + physicalChannelReconfiguration-r7 + PhysicalChannelReconfiguration-r7-IEs, + -- Container for adding non critical extensions after freezing REL-7 + physicalChannelReconfiguration-r7-add-ext BIT STRING OPTIONAL, + v780NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v780ext + PhysicalChannelReconfiguration-v780ext-IEs, + v7d0NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v7d0ext + PhysicalChannelReconfiguration-v7d0ext-IEs, + v7f0NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v7f0ext + PhysicalChannelReconfiguration-v7f0ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v7g0ext + PhysicalChannelReconfiguration-v7g0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r8 SEQUENCE { + physicalChannelReconfiguration-r8 + PhysicalChannelReconfiguration-r8-IEs, + -- Container for adding non critical extensions after freezing REL-9 + physicalChannelReconfiguration-r8-add-ext BIT STRING OPTIONAL, + v7d0NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v7d0ext + PhysicalChannelReconfiguration-v7d0ext-IEs, + v7f0NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v7f0ext + PhysicalChannelReconfiguration-v7f0ext-IEs, + v890NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v890ext + PhysicalChannelReconfiguration-v890ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v7g0ext + PhysicalChannelReconfiguration-v7g0ext-IEs, + v8a0NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v8a0ext + PhysicalChannelReconfiguration-v8a0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r9 SEQUENCE { + physicalChannelReconfiguration-r9 + PhysicalChannelReconfiguration-r9-IEs, + -- Container for adding non critical extensions after + -- freezing REL-10 + physicalChannelReconfiguration-r9-add-ext + BIT STRING OPTIONAL, + v950NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-v950ext + PhysicalChannelReconfiguration-v950ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r10 SEQUENCE { + physicalChannelReconfiguration-r10 + PhysicalChannelReconfiguration-r10-IEs, + -- Container for adding non critical extensions after + -- freezing REL-11 + physicalChannelReconfiguration-r10-add-ext + BIT STRING OPTIONAL, + vb50NonCriticalExtensions SEQUENCE { + physicalChannelReconfiguration-vb50ext + PhysicalChannelReconfiguration-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r11 SEQUENCE { + physicalChannelReconfiguration-r11 + PhysicalChannelReconfiguration-r11-IEs, + -- Container for adding non critical extensions after + -- freezing REL-12 + physicalChannelReconfiguration-r11-add-ext + BIT STRING OPTIONAL, + nonCriticalExtensions + SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } + } + } + } + } + } + } + } +} + +PhysicalChannelReconfiguration-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + -- Note: the reference to CPCH in the element name below is incorrect. The name is not + -- changed to keep it aligned with R99. + ul-ChannelRequirement UL-ChannelRequirementWithCPCH-SetID OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-CommonInformation DL-CommonInformation OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List OPTIONAL +} + +PhysicalChannelReconfiguration-v3a0ext ::= SEQUENCE { + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received the UE behaviour + -- is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL +} + +PhysicalChannelReconfiguration-v4b0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SSDT-UL OPTIONAL, + -- The order of the RLs in IE cell-id-PerRL-List is the same as + -- in IE DL-InformationPerRL-List included in this message + cell-id-PerRL-List CellIdentity-PerRL-List OPTIONAL +} + +PhysicalChannelReconfiguration-v590ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-TPC-PowerOffsetPerRL-List DL-TPC-PowerOffsetPerRL-List OPTIONAL +} + +PhysicalChannelReconfiguration-r4-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received + -- the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + -- Note: the reference to CPCH in the element name below is incorrect. The name is not + -- changed to keep it aligned with R99. + ul-ChannelRequirement UL-ChannelRequirementWithCPCH-SetID-r4 OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-CommonInformation DL-CommonInformation-r4 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r4 OPTIONAL +} + +PhysicalChannelReconfiguration-r5-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received + -- the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + -- Note: the reference to CPCH in the element name below is incorrect. The name is not + -- changed to keep it aligned with R99. + ul-ChannelRequirement UL-ChannelRequirementWithCPCH-SetID-r5 OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-HSPDSCH-Information DL-HSPDSCH-Information OPTIONAL, + dl-CommonInformation DL-CommonInformation-r5 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r5 OPTIONAL +} + +PhysicalChannelReconfiguration-r6-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r6 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r6 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r6 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r6 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r6 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +PhysicalChannelReconfiguration-v690ext-IEs ::= SEQUENCE { + -- User Equipment IEs + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + -- Core network IEs + primary-plmn-Identity PLMN-Identity OPTIONAL, + -- Physical channel IEs + -- The IE harq-Preamble-Mode should not be used in the r3 and r4 versions of the message + -- If included in the r3 or r4 version of the message, the UE should ignore the IE + harq-Preamble-Mode HARQ-Preamble-Mode OPTIONAL, + beaconPLEst BEACON-PL-Est OPTIONAL, + postVerificationPeriod ENUMERATED { true } OPTIONAL, + dhs-sync DHS-Sync OPTIONAL, + timingMaintainedSynchInd TimingMaintainedSynchInd OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +PhysicalChannelReconfiguration-v6b0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-InformationPerRL-List-v6b0ext DL-InformationPerRL-List-v6b0ext OPTIONAL +} + +PhysicalChannelReconfiguration-r7-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + responseToChangeOfUE-Capability ENUMERATED { true } OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r7 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r7 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r7 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r7 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r7 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +PhysicalChannelReconfiguration-v770ext-IEs ::= SEQUENCE { + -- User equipment IEs + ueMobilityStateIndicator High-MobilityDetected OPTIONAL +} + +PhysicalChannelReconfiguration-v780ext-IEs ::= SEQUENCE { + -- Transport channel IEs + harqInfo HARQ-Info-r7 OPTIONAL, + -- Physical channel IEs + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL +} + +PhysicalChannelReconfiguration-v7d0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + ul-EDCH-Information UL-EDCH-Information-ext OPTIONAL +} + +PhysicalChannelReconfiguration-v7f0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + mimoParameters MIMO-Parameters-v7f0ext OPTIONAL +} + +PhysicalChannelReconfiguration-v7g0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + mimoParameters MIMO-Parameters-v7g0ext OPTIONAL +} + +PhysicalChannelReconfiguration-r8-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + responseToChangeOfUE-Capability ENUMERATED { true } OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + harqInfo HARQ-Info-r7 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r8 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r8 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r8 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +PhysicalChannelReconfiguration-v890ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-SecondaryCellInfoFDD-v890ext DL-SecondaryCellInfoFDD-v890ext OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8-ext OPTIONAL +} + +PhysicalChannelReconfiguration-v8a0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8-ext2 OPTIONAL +} + +PhysicalChannelReconfiguration-r9-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + responseToChangeOfUE-Capability ENUMERATED { true } OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + harqInfo HARQ-Info-r7 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r9 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r8 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r9 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +PhysicalChannelReconfiguration-v950ext-IEs ::= SEQUENCE { + -- Physical channel IEs + secondaryCellMimoParameters SecondaryCellMIMOparametersFDD-v950ext OPTIONAL +} + +PhysicalChannelReconfiguration-r10-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + responseToChangeOfUE-Capability ENUMERATED { true } OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + harqInfo HARQ-Info-r7 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r9 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + ul-MulticarrierEDCHInfo-TDD128 UL-MulticarrierEDCHInfo-TDD128 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r10 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r10 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD OPTIONAL, + mu-MIMO-Info-TDD128 MU-MIMO-Info-TDD128 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +PhysicalChannelReconfiguration-vb50ext-IEs ::= SEQUENCE { + ulOLTDInfoFDD UL-OLTD-InfoFDD OPTIONAL +} + +PhysicalChannelReconfiguration-r11-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + responseToChangeOfUE-Capability ENUMERATED { true } OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + harqInfo HARQ-Info-r11 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + mimo4x4Parameters MIMO4x4-Parameters OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r11 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r11 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + ul-MulticarrierEDCHInfo-TDD128 UL-MulticarrierEDCHInfo-TDD128 OPTIONAL, + ul-CLTD-InfoFDD UL-CLTD-InfoFDD OPTIONAL, + ul-OLTD-InfoFDD UL-OLTD-InfoFDD OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r11 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r11 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r11 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD2 AdditionalDLSecCellInfoListFDD2 OPTIONAL, + commonERGCHInfoFDD CommonERGCHInfoFDD OPTIONAL, + mu-MIMO-Info-TDD128 MU-MIMO-Info-TDD128 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +-- *************************************************** +-- +-- PHYSICAL CHANNEL RECONFIGURATION COMPLETE +-- +-- *************************************************** + +PhysicalChannelReconfigurationComplete ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + ul-IntegProtActivationInfo IntegrityProtActivationInfo OPTIONAL, + -- TABULAR: UL-TimingAdvance is applicable for TDD mode only. + ul-TimingAdvance UL-TimingAdvance OPTIONAL, + -- Radio bearer IEs + count-C-ActivationTime ActivationTime OPTIONAL, + -- dummy is not used in this version of the specification and + -- it should be ignored by the receiver. + dummy RB-ActivationTimeInfoList OPTIONAL, + ul-CounterSynchronisationInfo UL-CounterSynchronisationInfo OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + physicalChannelReconfigurationComplete-r3-add-ext BIT STRING OPTIONAL, + v770NonCriticalExtensions SEQUENCE { + physicalChannelReconfigurationComplete-v770ext + PhysicalChannelReconfigurationComplete-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +PhysicalChannelReconfigurationComplete-v770ext-IEs ::= SEQUENCE { + -- TABULAR: EXT-UL-TimingAdvance is applicable for TDD mode only. + ext-UL-TimingAdvance EXT-UL-TimingAdvance OPTIONAL, + deferredMeasurementControlReading ENUMERATED { true } OPTIONAL +} + + +-- *************************************************** +-- +-- PHYSICAL CHANNEL RECONFIGURATION FAILURE +-- +-- *************************************************** + +PhysicalChannelReconfigurationFailure ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier OPTIONAL, + failureCause FailureCauseWithProtErr, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + physicalChannelReconfigurationFailure-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +-- *************************************************** +-- +-- PHYSICAL SHARED CHANNEL ALLOCATION (TDD only) +-- +-- *************************************************** + +PhysicalSharedChannelAllocation ::= CHOICE { + r3 SEQUENCE { + physicalSharedChannelAllocation-r3 + PhysicalSharedChannelAllocation-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + physicalSharedChannelAllocation-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + dsch-RNTI DSCH-RNTI OPTIONAL, + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r4 SEQUENCE { + physicalSharedChannelAllocation-r4 + PhysicalSharedChannelAllocation-r4-IEs, + v4d0NonCriticalExtensions SEQUENCE { + -- Container for adding non critical extensions after freezing REL-5 + physicalSharedChannelAllocation-r4-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + physicalSharedChannelAllocation-v690ext + PhysicalSharedChannelAllocation-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + physicalSharedChannelAllocation-v770ext + PhysicalSharedChannelAllocation-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } +} + +PhysicalSharedChannelAllocation-r3-IEs ::= SEQUENCE { + -- TABULAR: Integrity protection shall not be performed on this message. + -- User equipment IEs + dsch-RNTI DSCH-RNTI OPTIONAL, + rrc-TransactionIdentifier RRC-TransactionIdentifier, + -- Physical channel IEs + ul-TimingAdvance UL-TimingAdvanceControl OPTIONAL, + pusch-CapacityAllocationInfo PUSCH-CapacityAllocationInfo OPTIONAL, + pdsch-CapacityAllocationInfo PDSCH-CapacityAllocationInfo OPTIONAL, + -- TABULAR: If confirmRequest is not present, the default value "No Confirm" + -- shall be used as specified in 10.2.25. + confirmRequest ENUMERATED { + confirmPDSCH, confirmPUSCH } OPTIONAL, + trafficVolumeReportRequest INTEGER (0..255) OPTIONAL, + iscpTimeslotList TimeslotList OPTIONAL, + requestPCCPCHRSCP BOOLEAN +} + +PhysicalSharedChannelAllocation-r4-IEs ::= SEQUENCE { + -- TABULAR: Integrity protection shall not be performed on this message. + -- Physical channel IEs + ul-TimingAdvance UL-TimingAdvanceControl-r4 OPTIONAL, + pusch-CapacityAllocationInfo PUSCH-CapacityAllocationInfo-r4 OPTIONAL, + pdsch-CapacityAllocationInfo PDSCH-CapacityAllocationInfo-r4 OPTIONAL, + -- TABULAR: If confirmRequest is not present, the default value "No Confirm" + -- shall be used as specified in 10.2.25. + confirmRequest ENUMERATED { + confirmPDSCH, confirmPUSCH } OPTIONAL, + trafficVolumeReportRequest INTEGER (0..255) OPTIONAL, + iscpTimeslotList TimeslotList-r4 OPTIONAL, + requestPCCPCHRSCP BOOLEAN +} + +PhysicalSharedChannelAllocation-v690ext-IEs ::= SEQUENCE { + -- Physical Channel IEs + beaconPLEst BEACON-PL-Est OPTIONAL +} + +PhysicalSharedChannelAllocation-v770ext-IEs ::= SEQUENCE { + ul-TimingAdvance UL-TimingAdvanceControl-r7 OPTIONAL, + pusch-CapacityAllocationInfo PUSCH-CapacityAllocationInfo-r7 OPTIONAL, + pdsch-CapacityAllocationInfo PDSCH-CapacityAllocationInfo-r7 OPTIONAL +} + +-- *************************************************** +-- +-- PUSCH CAPACITY REQUEST (TDD only) +-- +-- *************************************************** + +PUSCHCapacityRequest ::= SEQUENCE { + -- User equipment IEs + dsch-RNTI DSCH-RNTI OPTIONAL, + -- Measurement IEs + trafficVolume TrafficVolumeMeasuredResultsList OPTIONAL, + timeslotListWithISCP TimeslotListWithISCP OPTIONAL, + primaryCCPCH-RSCP PrimaryCCPCH-RSCP OPTIONAL, + allocationConfirmation CHOICE { + pdschConfirmation PDSCH-Identity, + puschConfirmation PUSCH-Identity + } OPTIONAL, + protocolErrorIndicator ProtocolErrorIndicatorWithMoreInfo, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + puschCapacityRequest-r3-add-ext BIT STRING OPTIONAL, + v590NonCriticalExtensions SEQUENCE { + puschCapacityRequest-v590ext PUSCHCapacityRequest-v590ext, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +PUSCHCapacityRequest-v590ext ::= SEQUENCE { + primaryCCPCH-RSCP-delta DeltaRSCP OPTIONAL +} + +-- *************************************************** +-- +-- RADIO BEARER RECONFIGURATION +-- +-- *************************************************** + +RadioBearerReconfiguration ::= CHOICE { + r3 SEQUENCE { + radioBearerReconfiguration-r3 RadioBearerReconfiguration-r3-IEs, + -- Prefix "v3ao" is used (in one instance) to keep alignment with R99 + v3aoNonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v3a0ext RadioBearerReconfiguration-v3a0ext, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + radioBearerReconfiguration-r3-add-ext BIT STRING OPTIONAL, + v4b0NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v4b0ext + RadioBearerReconfiguration-v4b0ext-IEs, + v590NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v590ext + RadioBearerReconfiguration-v590ext-IEs, + v5d0NonCriticalExtenstions SEQUENCE { + radioBearerReconfiguration-v5d0ext + RadioBearerReconfiguration-v5d0ext-IEs, + v690NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v690ext + RadioBearerReconfiguration-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v770ext + RadioBearerReconfiguration-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r4 SEQUENCE { + radioBearerReconfiguration-r4 RadioBearerReconfiguration-r4-IEs, + v4d0NonCriticalExtensions SEQUENCE { + -- Container for adding non critical extensions after freezing REL-5 + radioBearerReconfiguration-r4-add-ext BIT STRING OPTIONAL, + v590NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v590ext + RadioBearerReconfiguration-v590ext-IEs, + v5d0NonCriticalExtenstions SEQUENCE { + radioBearerReconfiguration-v5d0ext + RadioBearerReconfiguration-v5d0ext-IEs, + v690NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v690ext + RadioBearerReconfiguration-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v770ext + RadioBearerReconfiguration-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r5 SEQUENCE { + radioBearerReconfiguration-r5 RadioBearerReconfiguration-r5-IEs, + -- Container for adding non critical extensions after freezing REL-6 + radioBearerReconfiguration-r5-add-ext BIT STRING OPTIONAL, + v5d0NonCriticalExtenstions SEQUENCE { + radioBearerReconfiguration-v5d0ext RadioBearerReconfiguration-v5d0ext-IEs, + v690NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v690ext + RadioBearerReconfiguration-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v770ext + RadioBearerReconfiguration-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r6 SEQUENCE { + radioBearerReconfiguration-r6 RadioBearerReconfiguration-r6-IEs, + -- Container for adding non critical extensions after freezing REL-7 + radioBearerReconfiguration-r6-add-ext BIT STRING OPTIONAL, + v6b0NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v6b0ext + RadioBearerReconfiguration-v6b0ext-IEs, + v6f0NonCriticalExtensions SEQUENCE { + radioBearerRconfiguration-v6f0ext + RadioBearerReconfiguration-v6f0ext-IEs, + v770NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v770ext + RadioBearerReconfiguration-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r7 SEQUENCE { + radioBearerReconfiguration-r7 RadioBearerReconfiguration-r7-IEs, + v780NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v780ext + RadioBearerReconfiguration-v780ext-IEs, + v790NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v790ext + RadioBearerReconfiguration-v790ext-IEs, + v7d0NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v7d0ext + RadioBearerReconfiguration-v7d0ext-IEs, + v7f0NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v7f0ext + RadioBearerReconfiguration-v7f0ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v7g0ext + RadioBearerReconfiguration-v7g0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r8 SEQUENCE { + radioBearerReconfiguration-r8 RadioBearerReconfiguration-r8-IEs, + -- Container for adding non critical extensions after freezing REL-9 + radioBearerReconfiguration-r8-add-ext BIT STRING OPTIONAL, + v7d0NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v7d0ext + RadioBearerReconfiguration-v7d0ext-IEs, + v7f0NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v7f0ext + RadioBearerReconfiguration-v7f0ext-IEs, + v890NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v890ext + RadioBearerReconfiguration-v890ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v7g0ext + RadioBearerReconfiguration-v7g0ext-IEs, + v8a0NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v8a0ext + RadioBearerReconfiguration-v8a0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r9 SEQUENCE { + radioBearerReconfiguration-r9 + RadioBearerReconfiguration-r9-IEs, + -- Container for adding non critical extensions after + -- freezing REL-10 + radioBearerReconfiguration-r9-add-ext + BIT STRING OPTIONAL, + v950NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v950ext + RadioBearerReconfiguration-v950ext-IEs, + v9c0NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v9c0ext + RadioBearerReconfiguration-v9c0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r10 SEQUENCE { + radioBearerReconfiguration-r10 + RadioBearerReconfiguration-r10-IEs, + -- Container for adding non critical extensions after + -- freezing REL-11 + radioBearerReconfiguration-r10-add-ext + BIT STRING OPTIONAL, + v9c0NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-v9c0ext + RadioBearerReconfiguration-v9c0ext-IEs, + vaa0NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-vaa0ext + RadioBearerReconfiguration-vaa0ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + radioBearerReconfiguration-vb50ext + RadioBearerReconfiguration-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r11 SEQUENCE { + radioBearerReconfiguration-r11 + RadioBearerReconfiguration-r11-IEs, + -- Container for adding non critical extensions after + -- freezing REL-12 + radioBearerReconfiguration-r11-add-ext + BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } + } + } + } + } + } + } + } +} + +RadioBearerReconfiguration-vaa0ext-IEs ::= SEQUENCE { + um-RLC-ReEstablishmentRBList RB-IdentityList OPTIONAL +} + +RadioBearerReconfiguration-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList OPTIONAL, + -- NOTE: IE rb-InformationReconfigList should be optional in later versions + -- of this message + rb-InformationReconfigList RB-InformationReconfigList, + rb-InformationAffectedList RB-InformationAffectedList OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + -- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification, + -- they should not be sent and if received they should be ignored. + dummy CHOICE { + fdd SEQUENCE { + dummy1 CPCH-SetID OPTIONAL, + dummy2 DRAC-StaticInformationList OPTIONAL + }, + tdd NULL + } OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfo2List OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement OPTIONAL, + modeSpecificPhysChInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-CommonInformation DL-CommonInformation OPTIONAL, + -- NOTE: IE dl-InformationPerRL-List is optional in later versions + -- of this message + dl-InformationPerRL-List DL-InformationPerRL-List +} + +RadioBearerReconfiguration-v3a0ext ::= SEQUENCE { + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received the UE behaviour + -- is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL +} + +RadioBearerReconfiguration-v4b0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SSDT-UL OPTIONAL, + -- The order of the RLs in IE cell-id-PerRL-List is the same as + -- in IE DL-InformationPerRL-List included in this message + cell-id-PerRL-List CellIdentity-PerRL-List OPTIONAL +} + +RadioBearerReconfiguration-v590ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-TPC-PowerOffsetPerRL-List DL-TPC-PowerOffsetPerRL-List OPTIONAL +} + +RadioBearerReconfiguration-v5d0ext-IEs ::= SEQUENCE { + --Radio Bearer IEs + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL +} + +RadioBearerReconfiguration-r4-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received + -- the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r4 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + -- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification, + -- they should not be sent and if received they should be ignored. + dummy CHOICE { + fdd SEQUENCE { + dummy1 CPCH-SetID OPTIONAL, + dummy2 DRAC-StaticInformationList OPTIONAL + }, + tdd NULL + } OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r4 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement-r4 OPTIONAL, + modeSpecificPhysChInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-CommonInformation DL-CommonInformation-r4 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r4 OPTIONAL +} + +RadioBearerReconfiguration-r5-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received + -- the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Specification mode information + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r5 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r5 OPTIONAL, + rb-PDCPContextRelocationList RB-PDCPContextRelocationList OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + -- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the + -- specification, they should not be sent and if received they should be ignored. + dummy CHOICE { + fdd SEQUENCE { + dummy1 CPCH-SetID OPTIONAL, + dummy2 DRAC-StaticInformationList OPTIONAL + }, + tdd NULL + } OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r5 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r5 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r5 + } + } + } + }, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement-r5 OPTIONAL, + modeSpecificPhysChInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-HSPDSCH-Information DL-HSPDSCH-Information OPTIONAL, + dl-CommonInformation DL-CommonInformation-r5 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r5 OPTIONAL +} + +RadioBearerReconfiguration-r6-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Specification mode information + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r6 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r6 OPTIONAL, + rb-PDCPContextRelocationList RB-PDCPContextRelocationList OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r6 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r5 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r5 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6 + } + } + } + }, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r6 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r6 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r6 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r6 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r6 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +RadioBearerReconfiguration-v690ext-IEs ::= SEQUENCE { + -- User Equipment IEs + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + -- Core network IEs + primary-plmn-Identity PLMN-Identity OPTIONAL, + -- Physical channel IEs + -- The IE harq-Preamble-Mode should not be used in the r3 and r4 versions of the message + -- If included in the r3 or r4 version of the message, the UE should ignore the IE + harq-Preamble-Mode HARQ-Preamble-Mode OPTIONAL, + beaconPLEst BEACON-PL-Est OPTIONAL, + postVerificationPeriod ENUMERATED { true } OPTIONAL, + dhs-sync DHS-Sync OPTIONAL, + timingMaintainedSynchInd TimingMaintainedSynchInd OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +RadioBearerReconfiguration-v6b0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-InformationPerRL-List-v6b0ext DL-InformationPerRL-List-v6b0ext OPTIONAL +} + +RadioBearerReconfiguration-v6f0ext-IEs ::= SEQUENCE { + -- Specification mode information + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + rab-InformationMBMSPtpList RAB-InformationMBMSPtpList OPTIONAL + } + } +} + +RadioBearerReconfiguration-r7-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + responseToChangeOfUE-Capability ENUMERATED { true } OPTIONAL, + -- Specification mode information + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList OPTIONAL, + rab-InformationMBMSPtpList RAB-InformationMBMSPtpList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r7 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r7 OPTIONAL, + rb-PDCPContextRelocationList RB-PDCPContextRelocationList OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r7 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r7 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6 + } + } + } + }, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r7 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r7 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r7 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r7 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r7 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +RadioBearerReconfiguration-v770ext-IEs ::= SEQUENCE { + -- User equipment IEs + ueMobilityStateIndicator High-MobilityDetected OPTIONAL +} + +RadioBearerReconfiguration-v780ext-IEs ::= SEQUENCE { + -- Physical channel IEs + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL +} + +RadioBearerReconfiguration-v790ext-IEs ::= SEQUENCE { + -- Container for adding non critical extensions after freezing REL-8 + radioBearerReconfiguration-r7-add-ext BIT STRING OPTIONAL +} + +RadioBearerReconfiguration-v7d0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + ul-EDCH-Information UL-EDCH-Information-ext OPTIONAL +} + +RadioBearerReconfiguration-v7f0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + mimoParameters MIMO-Parameters-v7f0ext OPTIONAL +} + +RadioBearerReconfiguration-v7g0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + mimoParameters MIMO-Parameters-v7g0ext OPTIONAL +} + +RadioBearerReconfiguration-r8-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + responseToChangeOfUE-Capability ENUMERATED { true } OPTIONAL, + -- Specification mode information + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy DefaultConfigForCellFACH OPTIONAL, + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList-r8 OPTIONAL, + rab-InformationMBMSPtpList RAB-InformationMBMSPtpList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r8 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r8 OPTIONAL, + rb-PDCPContextRelocationList RB-PDCPContextRelocationList OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r7 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6 + } + } + } + }, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r8 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r8 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r8 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +RadioBearerReconfiguration-v890ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-SecondaryCellInfoFDD-v890ext DL-SecondaryCellInfoFDD-v890ext OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8-ext OPTIONAL +} + +RadioBearerReconfiguration-v8a0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8-ext2 OPTIONAL +} + +RadioBearerReconfiguration-r9-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + responseToChangeOfUE-Capability ENUMERATED { true } OPTIONAL, + -- Specification mode information + defaultConfigForCellFACH DefaultConfigForCellFACH OPTIONAL, + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList-r8 OPTIONAL, + rab-InformationMBMSPtpList RAB-InformationMBMSPtpList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r8 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r8 OPTIONAL, + rb-PDCPContextRelocationList RB-PDCPContextRelocationList OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r9 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6 + } + } + } + }, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r9 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r8 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r9 OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +RadioBearerReconfiguration-v950ext-IEs ::= SEQUENCE { + -- Physical channel IEs + secondaryCellMimoParameters SecondaryCellMIMOparametersFDD-v950ext OPTIONAL +} + +RadioBearerReconfiguration-v9c0ext-IEs ::= SEQUENCE { + -- For 1.28Mcps TDD only + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-TDD128-v9c0ext OPTIONAL +} + +RadioBearerReconfiguration-r10-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + responseToChangeOfUE-Capability ENUMERATED { true } OPTIONAL, + -- Specification mode information + defaultConfigForCellFACH DefaultConfigForCellFACH OPTIONAL, + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList-r8 OPTIONAL, + rab-InformationMBMSPtpList RAB-InformationMBMSPtpList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r8 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r8 OPTIONAL, + rb-PDCPContextRelocationList RB-PDCPContextRelocationList OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r9 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6 + } + } + } + }, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r9 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + ul-MulticarrierEDCHInfo-TDD128 UL-MulticarrierEDCHInfo-TDD128 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r10 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r10 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + mu-MIMO-Info-TDD128 MU-MIMO-Info-TDD128 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +RadioBearerReconfiguration-vb50ext-IEs ::= SEQUENCE { + ulOLTDInfoFDD UL-OLTD-InfoFDD OPTIONAL +} + +RadioBearerReconfiguration-r11-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + responseToChangeOfUE-Capability ENUMERATED { true } OPTIONAL, + -- Specification mode information + defaultConfigForCellFACH DefaultConfigForCellFACH OPTIONAL, + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList-r8 OPTIONAL, + rab-InformationMBMSPtpList RAB-InformationMBMSPtpList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r11 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r8 OPTIONAL, + rb-PDCPContextRelocationList RB-PDCPContextRelocationList OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + umRlc-ReEstablishmentRBList RB-IdentityList OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r11 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6 + } + } + } + }, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + mimo4x4Parameters MIMO4x4-Parameters OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r11 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r11 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + ul-MulticarrierEDCHInfo-TDD128 UL-MulticarrierEDCHInfo-TDD128 OPTIONAL, + ul-CLTD-InfoFDD UL-CLTD-InfoFDD OPTIONAL, + ul-OLTD-InfoFDD UL-OLTD-InfoFDD OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r11 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r11 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r11 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD2 AdditionalDLSecCellInfoListFDD2 OPTIONAL, + commonERGCHInfoFDD CommonERGCHInfoFDD OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + mu-MIMO-Info-TDD128 MU-MIMO-Info-TDD128 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +-- *************************************************** +-- +-- RADIO BEARER RECONFIGURATION COMPLETE +-- +-- *************************************************** + +RadioBearerReconfigurationComplete ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + ul-IntegProtActivationInfo IntegrityProtActivationInfo OPTIONAL, + -- TABULAR: UL-TimingAdvance is applicable for TDD mode only. + ul-TimingAdvance UL-TimingAdvance OPTIONAL, + -- Radio bearer IEs + count-C-ActivationTime ActivationTime OPTIONAL, + -- dummy is not used in this version of the specification and + -- it should be ignored by the receiver. + dummy RB-ActivationTimeInfoList OPTIONAL, + ul-CounterSynchronisationInfo UL-CounterSynchronisationInfo OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + radioBearerReconfigurationComplete-r3-add-ext BIT STRING OPTIONAL, + v770NonCriticalExtensions SEQUENCE { + radioBearerReconfigurationComplete-v770ext + RadioBearerReconfigurationComplete-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +RadioBearerReconfigurationComplete-v770ext-IEs ::= SEQUENCE { + -- TABULAR: EXT-UL-TimingAdvance is applicable for TDD mode only. + ext-UL-TimingAdvance EXT-UL-TimingAdvance OPTIONAL, + deferredMeasurementControlReading ENUMERATED { true } OPTIONAL +} + +-- *************************************************** +-- +-- RADIO BEARER RECONFIGURATION FAILURE +-- +-- *************************************************** + +RadioBearerReconfigurationFailure ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + failureCause FailureCauseWithProtErr, + -- Radio bearer IEs + potentiallySuccesfulBearerList RB-IdentityList OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + radioBearerReconfigurationFailure-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +-- *************************************************** +-- +-- RADIO BEARER RELEASE +-- +-- *************************************************** + +RadioBearerRelease ::= CHOICE { + r3 SEQUENCE { + radioBearerRelease-r3 RadioBearerRelease-r3-IEs, + v3a0NonCriticalExtensions SEQUENCE { + radioBearerRelease-v3a0ext RadioBearerRelease-v3a0ext, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + radioBearerRelease-r3-add-ext BIT STRING OPTIONAL, + v4b0NonCriticalExtensions SEQUENCE { + radioBearerRelease-v4b0ext RadioBearerRelease-v4b0ext-IEs, + v590NonCriticalExtensions SEQUENCE { + radioBearerRelease-v590ext RadioBearerRelease-v590ext-IEs, + v690NonCriticalExtensions SEQUENCE { + radioBearerRelease-v690ext RadioBearerRelease-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + radioBearerRelease-v770ext RadioBearerRelease-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r4 SEQUENCE { + radioBearerRelease-r4 RadioBearerRelease-r4-IEs, + v4d0NonCriticalExtensions SEQUENCE { + -- Container for adding non critical extensions after freezing REL-5 + radioBearerRelease-r4-add-ext BIT STRING OPTIONAL, + v590NonCriticalExtensions SEQUENCE { + radioBearerRelease-v590ext RadioBearerRelease-v590ext-IEs, + v690NonCriticalExtensions SEQUENCE { + radioBearerRelease-v690ext RadioBearerRelease-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + radioBearerRelease-v770ext RadioBearerRelease-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r5 SEQUENCE { + radioBearerRelease-r5 RadioBearerRelease-r5-IEs, + -- Container for adding non critical extensions after freezing REL-6 + radioBearerRelease-r5-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + radioBearerRelease-v690ext RadioBearerRelease-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + radioBearerRelease-v770ext RadioBearerRelease-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r6 SEQUENCE { + radioBearerRelease-r6 RadioBearerRelease-r6-IEs, + -- Container for adding non critical extensions after freezing REL-7 + radioBearerRelease-r6-add-ext BIT STRING OPTIONAL, + v6b0NonCriticalExtensions SEQUENCE { + radioBearerRelease-v6b0ext RadioBearerRelease-v6b0ext-IEs, + v770NonCriticalExtensions SEQUENCE { + radioBearerRelease-v770ext RadioBearerRelease-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r7 SEQUENCE { + radioBearerRelease-r7 RadioBearerRelease-r7-IEs, + -- Container for adding non critical extensions after freezing REL-8 + radioBearerRelease-r7-add-ext BIT STRING OPTIONAL, + v780NonCriticalExtensions SEQUENCE { + radioBearerRelease-v780ext RadioBearerRelease-v780ext-IEs, + v7d0NonCriticalExtensions SEQUENCE { + radioBearerRelease-v7d0ext RadioBearerRelease-v7d0ext-IEs, + v7f0NonCriticalExtensions SEQUENCE { + radioBearerRelease-v7f0ext RadioBearerRelease-v7f0ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + radioBearerRelease-v7g0ext + RadioBearerRelease-v7g0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r8 SEQUENCE { + radioBearerRelease-r8 RadioBearerRelease-r8-IEs, + -- Container for adding non critical extensions after freezing REL-9 + radioBearerRelease-r8-add-ext BIT STRING OPTIONAL, + v7d0NonCriticalExtensions SEQUENCE { + radioBearerRelease-v7d0ext RadioBearerRelease-v7d0ext-IEs, + v7f0NonCriticalExtensions SEQUENCE { + radioBearerRelease-v7f0ext RadioBearerRelease-v7f0ext-IEs, + v890NonCriticalExtensions SEQUENCE { + radioBearerRelease-v890ext + RadioBearerRelease-v890ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + radioBearerRelease-v7g0ext + RadioBearerRelease-v7g0ext-IEs, + v8a0NonCriticalExtensions SEQUENCE { + radioBearerRelease-v8a0ext + RadioBearerRelease-v8a0ext-IEs, + nonCriticalExtensions + SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r9 SEQUENCE { + radioBearerRelease-r9 RadioBearerRelease-r9-IEs, + -- Container for adding non critical extensions after + -- freezing REL-10 + radioBearerRelease-r9-add-ext BIT STRING OPTIONAL, + v950NonCriticalExtensions SEQUENCE { + radioBearerRelease-v950ext RadioBearerRelease-v950ext-IEs, + v970NonCriticalExtensions SEQUENCE { + radioBearerRelease-v970ext RadioBearerRelease-v970ext-IEs, + v9c0NonCriticalExtensions SEQUENCE { + radioBearerRelease-v9c0ext RadioBearerRelease-v9c0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r10 SEQUENCE { + radioBearerRelease-r10 RadioBearerRelease-r10-IEs, + -- Container for adding non critical extensions after + -- freezing REL-11 + radioBearerRelease-r10-add-ext BIT STRING OPTIONAL, + v9c0NonCriticalExtensions SEQUENCE { + radioBearerRelease-v9c0ext RadioBearerRelease-v9c0ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + radioBearerRelease-vb50ext + RadioBearerRelease-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r11 SEQUENCE { + radioBearerRelease-r11 + RadioBearerRelease-r11-IEs, + -- Container for adding non critical extensions after + -- freezing REL-12 + radioBearerRelease-r11-add-ext + BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } + } + } + } + } + } + } + } +} + +RadioBearerRelease-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo OPTIONAL, + signallingConnectionRelIndication CN-DomainIdentity OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList OPTIONAL, + rb-InformationReleaseList RB-InformationReleaseList, + rb-InformationAffectedList RB-InformationAffectedList OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + -- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification, + -- they should not be sent and if received they should be ignored. + dummy CHOICE { + fdd SEQUENCE { + dummy1 CPCH-SetID OPTIONAL, + dummy2 DRAC-StaticInformationList OPTIONAL + }, + tdd NULL + } OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfo2List OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement OPTIONAL, + modeSpecificPhysChInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-CommonInformation DL-CommonInformation OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List OPTIONAL +} + +RadioBearerRelease-v3a0ext ::= SEQUENCE { + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received the UE behaviour + -- is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL +} + +RadioBearerRelease-v4b0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SSDT-UL OPTIONAL, + -- The order of the RLs in IE cell-id-PerRL-List is the same as + -- in IE DL-InformationPerRL-List included in this message + cell-id-PerRL-List CellIdentity-PerRL-List OPTIONAL +} + +RadioBearerRelease-v590ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-TPC-PowerOffsetPerRL-List DL-TPC-PowerOffsetPerRL-List OPTIONAL +} + +RadioBearerRelease-r4-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received + -- the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo OPTIONAL, + signallingConnectionRelIndication CN-DomainIdentity OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList OPTIONAL, + rb-InformationReleaseList RB-InformationReleaseList, + rb-InformationAffectedList RB-InformationAffectedList OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + -- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification, + -- they should not be sent and if received they should be ignored. + dummy CHOICE { + fdd SEQUENCE { + dummy1 CPCH-SetID OPTIONAL, + dummy2 DRAC-StaticInformationList OPTIONAL + }, + tdd NULL + } OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r4 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement-r4 OPTIONAL, + modeSpecificPhysChInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-CommonInformation DL-CommonInformation-r4 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r4 OPTIONAL +} + +RadioBearerRelease-r5-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo OPTIONAL, + signallingConnectionRelIndication CN-DomainIdentity OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList OPTIONAL, + rb-InformationReleaseList RB-InformationReleaseList, + rb-InformationAffectedList RB-InformationAffectedList-r5 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + -- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification, + -- they should not be sent and if received they should be ignored. + dummy CHOICE { + fdd SEQUENCE { + dummy1 CPCH-SetID OPTIONAL, + dummy2 DRAC-StaticInformationList OPTIONAL + }, + tdd NULL + } OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r5 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r5 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement-r5 OPTIONAL, + modeSpecificPhysChInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-HSPDSCH-Information DL-HSPDSCH-Information OPTIONAL, + dl-CommonInformation DL-CommonInformation-r5 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r5 OPTIONAL +} + +RadioBearerRelease-v690ext-IEs ::= SEQUENCE { + -- Core network IEs + primary-plmn-Identity PLMN-Identity OPTIONAL, + -- Physical channel IEs + -- The IE harq-Preamble-Mode should not be used in the r3 and r4 versions of the message + -- If included in the r3 or r4 version of the message, the UE should ignore the IE + harq-Preamble-Mode HARQ-Preamble-Mode OPTIONAL, + beaconPLEst BEACON-PL-Est OPTIONAL, + postVerificationPeriod ENUMERATED { true } OPTIONAL, + dhs-sync DHS-Sync OPTIONAL, + timingMaintainedSynchInd TimingMaintainedSynchInd OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + mbms-RB-ListReleasedToChangeTransferMode + RB-InformationReleaseList OPTIONAL +} + +RadioBearerRelease-r6-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + signallingConnectionRelIndication CN-DomainIdentity OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList OPTIONAL, + rb-InformationReleaseList RB-InformationReleaseList, + rb-InformationReconfigList RB-InformationReconfigList-r6 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r6 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r6 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r5 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r5 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r6 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r6 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r6 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r6 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r6 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + mbms-RB-ListReleasedToChangeTransferMode + RB-InformationReleaseList OPTIONAL +} + +RadioBearerRelease-v6b0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-InformationPerRL-List-v6b0ext DL-InformationPerRL-List-v6b0ext OPTIONAL +} + +RadioBearerRelease-r7-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + signallingConnectionRelIndication CN-DomainIdentity OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList OPTIONAL, + rb-InformationReleaseList RB-InformationReleaseList, + rb-InformationReconfigList RB-InformationReconfigList-r7 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r7 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r7 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r7 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r7 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r7 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r7 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r7 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r7 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + mbms-RB-ListReleasedToChangeTransferMode + RB-InformationReleaseList OPTIONAL +} + +RadioBearerRelease-v770ext-IEs ::= SEQUENCE { + -- User equipment IEs + ueMobilityStateIndicator High-MobilityDetected OPTIONAL +} + +RadioBearerRelease-v780ext-IEs ::= SEQUENCE { + -- Physical channel IEs + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL +} + +RadioBearerRelease-v7d0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + ul-EDCH-Information UL-EDCH-Information-ext OPTIONAL +} + +RadioBearerRelease-v7f0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + mimoParameters MIMO-Parameters-v7f0ext OPTIONAL +} + +RadioBearerRelease-v7g0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + mimoParameters MIMO-Parameters-v7g0ext OPTIONAL +} + +RadioBearerRelease-r8-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + signallingConnectionRelIndication CN-DomainIdentity OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList-r8 OPTIONAL, + rb-InformationReleaseList RB-InformationReleaseList, + rb-InformationReconfigList RB-InformationReconfigList-r8 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r8 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r7 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r8 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r8 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r8 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + mbms-RB-ListReleasedToChangeTransferMode + RB-InformationReleaseList OPTIONAL +} + +RadioBearerRelease-v890ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-SecondaryCellInfoFDD-v890ext DL-SecondaryCellInfoFDD-v890ext OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8-ext OPTIONAL +} + +RadioBearerRelease-v8a0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8-ext2 OPTIONAL +} + +RadioBearerRelease-r9-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + signallingConnectionRelIndication CN-DomainIdentity OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList-r8 OPTIONAL, + rb-InformationReleaseList RB-InformationReleaseList, + rb-InformationReconfigList RB-InformationReconfigList-r8 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r8 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r9 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r9 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r8 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r9 OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + mbms-RB-ListReleasedToChangeTransferMode + RB-InformationReleaseList OPTIONAL +} + +RadioBearerRelease-v950ext-IEs ::= SEQUENCE { + -- Physical channel IEs + secondaryCellMimoParameters SecondaryCellMIMOparametersFDD-v950ext OPTIONAL +} + +RadioBearerRelease-v970ext-IEs ::= SEQUENCE { + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +RadioBearerRelease-v9c0ext-IEs ::= SEQUENCE { + -- For 1.28Mcps TDD only + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-TDD128-v9c0ext OPTIONAL +} + +RadioBearerRelease-r10-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + signallingConnectionRelIndication CN-DomainIdentity OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList-r8 OPTIONAL, + rb-InformationReleaseList RB-InformationReleaseList, + rb-InformationReconfigList RB-InformationReconfigList-r8 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r8 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r9 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r9 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + ul-MulticarrierEDCHInfo-TDD128 UL-MulticarrierEDCHInfo-TDD128 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r10 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r10 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + mu-MIMO-Info-TDD128 MU-MIMO-Info-TDD128 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + mbms-RB-ListReleasedToChangeTransferMode + RB-InformationReleaseList OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +RadioBearerRelease-vb50ext-IEs ::= SEQUENCE { + ulOLTDInfoFDD UL-OLTD-InfoFDD OPTIONAL +} + +RadioBearerRelease-r11-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + signallingConnectionRelIndication CN-DomainIdentity OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Radio bearer IEs + rab-InformationReconfigList RAB-InformationReconfigList-r8 OPTIONAL, + rb-InformationReleaseList RB-InformationReleaseList, + rb-InformationReconfigList RB-InformationReconfigList-r11 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r8 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r11 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + mimo4x4Parameters MIMO4x4-Parameters OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r11 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r11 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + ul-MulticarrierEDCHInfo-TDD128 UL-MulticarrierEDCHInfo-TDD128 OPTIONAL, + ul-CLTD-InfoFDD UL-CLTD-InfoFDD OPTIONAL, + ul-OLTD-InfoFDD UL-OLTD-InfoFDD OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r11 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r11 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r11 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD2 AdditionalDLSecCellInfoListFDD2 OPTIONAL, + commonERGCHInfoFDD CommonERGCHInfoFDD OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + mu-MIMO-Info-TDD128 MU-MIMO-Info-TDD128 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + mbms-RB-ListReleasedToChangeTransferMode + RB-InformationReleaseList OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +-- *************************************************** +-- +-- RADIO BEARER RELEASE COMPLETE +-- +-- *************************************************** + +RadioBearerReleaseComplete ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + ul-IntegProtActivationInfo IntegrityProtActivationInfo OPTIONAL, + -- TABULAR: UL-TimingAdvance is applicable for TDD mode only. + ul-TimingAdvance UL-TimingAdvance OPTIONAL, + -- Radio bearer IEs + count-C-ActivationTime ActivationTime OPTIONAL, + -- dummy is not used in this version of the specification and + -- it should be ignored by the receiver. + dummy RB-ActivationTimeInfoList OPTIONAL, + ul-CounterSynchronisationInfo UL-CounterSynchronisationInfo OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + radioBearerReleaseComplete-r3-add-ext BIT STRING OPTIONAL, + v770NonCriticalExtensions SEQUENCE { + radioBearerReleaseComplete-v770ext + RadioBearerReleaseComplete-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +RadioBearerReleaseComplete-v770ext-IEs ::= SEQUENCE { + -- TABULAR: EXT-UL-TimingAdvance is applicable for TDD mode only. + ext-UL-TimingAdvance EXT-UL-TimingAdvance OPTIONAL, + deferredMeasurementControlReading ENUMERATED { true } OPTIONAL +} + +-- *************************************************** +-- +-- RADIO BEARER RELEASE FAILURE +-- +-- *************************************************** + +RadioBearerReleaseFailure ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + failureCause FailureCauseWithProtErr, + -- Radio bearer IEs + potentiallySuccesfulBearerList RB-IdentityList OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + radioBearerReleaseFailure-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +-- *************************************************** +-- +-- RADIO BEARER SETUP +-- +-- *************************************************** + +RadioBearerSetup ::= CHOICE { + r3 SEQUENCE { + radioBearerSetup-r3 RadioBearerSetup-r3-IEs, + v3a0NonCriticalExtensions SEQUENCE { + radioBearerSetup-v3a0ext RadioBearerSetup-v3a0ext, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + radioBearerSetup-r3-add-ext BIT STRING OPTIONAL, + v4b0NonCriticalExtensions SEQUENCE { + radioBearerSetup-v4b0ext RadioBearerSetup-v4b0ext-IEs, + v590NonCriticalExtensions SEQUENCE { + radioBearerSetup-v590ext RadioBearerSetup-v590ext-IEs, + v5d0NonCriticalExtenstions SEQUENCE { + radioBearerSetup-v5d0ext RadioBearerSetup-v5d0ext-IEs, + v690NonCriticalExtensions SEQUENCE { + radioBearerSetup-v690ext RadioBearerSetup-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r4 SEQUENCE { + radioBearerSetup-r4 RadioBearerSetup-r4-IEs, + v4d0NonCriticalExtensions SEQUENCE { + -- Container for adding non critical extensions after freezing REL-5 + radioBearerSetup-r4-add-ext BIT STRING OPTIONAL, + v590NonCriticalExtensions SEQUENCE { + radioBearerSetup-v590ext RadioBearerSetup-v590ext-IEs, + v5d0NonCriticalExtenstions SEQUENCE { + radioBearerSetup-v5d0ext RadioBearerSetup-v5d0ext-IEs, + v690NonCriticalExtensions SEQUENCE { + radioBearerSetup-v690ext RadioBearerSetup-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r5 SEQUENCE { + radioBearerSetup-r5 RadioBearerSetup-r5-IEs, + -- Container for adding non critical extensions after freezing REL-6 + radioBearerSetup-r5-add-ext BIT STRING OPTIONAL, + v5d0NonCriticalExtenstions SEQUENCE { + radioBearerSetup-v5d0ext RadioBearerSetup-v5d0ext-IEs, + v690NonCriticalExtensions SEQUENCE { + radioBearerSetup-v690ext RadioBearerSetup-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r6 SEQUENCE { + radioBearerSetup-r6 RadioBearerSetup-r6-IEs, + -- Container for adding non critical extensions after freezing REL-7 + radioBearerSetup-r6-add-ext BIT STRING OPTIONAL, + v6b0NonCriticalExtensions SEQUENCE { + radioBearerSetup-v6b0ext RadioBearerSetup-v6b0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r7 SEQUENCE { + radioBearerSetup-r7 RadioBearerSetup-r7-IEs, + -- Container for adding non critical extensions after freezing REL-8 + radioBearerSetup-r7-add-ext BIT STRING + (CONTAINING RadioBearerSetup-r7-add-ext-IEs) OPTIONAL, + v780NonCriticalExtensions SEQUENCE { + radioBearerSetup-v780ext RadioBearerSetup-v780ext-IEs, + v820NonCriticalExtensions SEQUENCE { + radioBearerSetup-v820ext RadioBearerSetup-v820ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r8 SEQUENCE { + radioBearerSetup-r8 RadioBearerSetup-r8-IEs, + -- Container for adding non critical extensions after freezing REL-9 + radioBearerSetup-r8-add-ext BIT STRING OPTIONAL, + v7d0NonCriticalExtensions SEQUENCE { + radioBearerSetup-v7d0ext RadioBearerSetup-v7d0ext-IEs, + v7f0NonCriticalExtensions SEQUENCE { + radioBearerSetup-v7f0ext RadioBearerSetup-v7f0ext-IEs, + v890NonCriticalExtensions SEQUENCE { + radioBearerSetup-v890ext + RadioBearerSetup-v890ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + radioBearerSetup-v7g0ext + RadioBearerSetup-v7g0ext-IEs, + v8a0NonCriticalExtensions SEQUENCE { + radioBearerSetup-v8a0ext + RadioBearerSetup-v8a0ext-IEs, + nonCriticalExtensions + SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r9 SEQUENCE { + radioBearerSetup-r9 RadioBearerSetup-r9-IEs, + -- Container for adding non critical extensions after + -- freezing REL-10 + radioBearerSetup-r9-add-ext BIT STRING OPTIONAL, + v950NonCriticalExtensions SEQUENCE { + radioBearerSetup-v950ext RadioBearerSetup-v950ext-IEs, + v9c0NonCriticalExtensions SEQUENCE { + radioBearerSetup-v9c0ext RadioBearerSetup-v9c0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r10 SEQUENCE { + radioBearerSetup-r10 RadioBearerSetup-r10-IEs, + -- Container for adding non critical extensions after + -- freezing REL-11 + radioBearerSetup-r10-add-ext BIT STRING OPTIONAL, + v9c0NonCriticalExtensions SEQUENCE { + radioBearerSetup-v9c0ext RadioBearerSetup-v9c0ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + radioBearerSetup-vb50ext + RadioBearerSetup-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r11 SEQUENCE { + radioBearerSetup-r11 RadioBearerSetup-r11-IEs, + -- Container for adding non critical extensions after + -- freezing REL-12 + radioBearerSetup-r11-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } + } + } + } + } + } + } + } +} + +RadioBearerSetup-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList OPTIONAL, + rab-InformationSetupList RAB-InformationSetupList OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + -- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification, + -- they should not be sent and if received they should be ignored. + dummy CHOICE { + fdd SEQUENCE { + dummy1 CPCH-SetID OPTIONAL, + dummy2 DRAC-StaticInformationList OPTIONAL + }, + tdd NULL + } OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement OPTIONAL, + modeSpecificPhysChInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-CommonInformation DL-CommonInformation OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List OPTIONAL +} + +RadioBearerSetup-v3a0ext ::= SEQUENCE { + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received the UE behaviour + -- is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL +} + +RadioBearerSetup-v4b0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SSDT-UL OPTIONAL, + -- The order of the RLs in IE cell-id-PerRL-List is the same as + -- in IE DL-InformationPerRL-List included in this message + cell-id-PerRL-List CellIdentity-PerRL-List OPTIONAL +} + +RadioBearerSetup-v590ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-TPC-PowerOffsetPerRL-List DL-TPC-PowerOffsetPerRL-List OPTIONAL +} + +RadioBearerSetup-v5d0ext-IEs ::= SEQUENCE { + --Radio Bearer IEs + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL +} + +RadioBearerSetup-r4-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received + -- the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList OPTIONAL, + rab-InformationSetupList RAB-InformationSetupList-r4 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + -- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification, + -- they should not be sent and if received they should be ignored. + dummy CHOICE { + fdd SEQUENCE { + dummy1 CPCH-SetID OPTIONAL, + dummy2 DRAC-StaticInformationList OPTIONAL + }, + tdd NULL + } OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r4 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement-r4 OPTIONAL, + modeSpecificPhysChInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-CommonInformation DL-CommonInformation-r4 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r4 OPTIONAL +} + +RadioBearerSetup-r5-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received + -- the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList-r5 OPTIONAL, + rab-InformationSetupList RAB-InformationSetupList-r5 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r5 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + -- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification, + -- they should not be sent and if received they should be ignored. + dummy CHOICE { + fdd SEQUENCE { + dummy1 CPCH-SetID OPTIONAL, + dummy2 DRAC-StaticInformationList OPTIONAL + }, + tdd NULL + } OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r5 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r5 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement-r5 OPTIONAL, + modeSpecificPhysChInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-HSPDSCH-Information DL-HSPDSCH-Information OPTIONAL, + dl-CommonInformation DL-CommonInformation-r5 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r5 OPTIONAL +} + +RadioBearerSetup-v690ext-IEs ::= SEQUENCE { + -- Core network IEs + primary-plmn-Identity PLMN-Identity OPTIONAL, + -- Physical channel IEs + -- The IE harq-Preamble-Mode should not be used in the r3 and r4 versions of the message + -- If included in the r3 or r4 version of the message, the UE should ignore the IE + harq-Preamble-Mode HARQ-Preamble-Mode OPTIONAL, + beaconPLEst BEACON-PL-Est OPTIONAL, + postVerificationPeriod ENUMERATED { true } OPTIONAL, + dhs-sync DHS-Sync OPTIONAL, + timingMaintainedSynchInd TimingMaintainedSynchInd OPTIONAL, + -- Radio bearer IEs + rab-InformationSetupList RAB-InformationSetupList-r6-ext OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +RadioBearerSetup-r6-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList-r6 OPTIONAL, + rab-InformationSetupList RAB-InformationSetupList-r6 OPTIONAL, + rab-InformationReconfigList RAB-InformationReconfigList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r6 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r6 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r6 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r5 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r5 OPTIONAL + }, + -- dummy is not used in this version of the specification + -- if it is sent, the UE behaviour is unspecified. + dummy SEQUENCE { + rab-Info RAB-Info-r6, + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6, + rb-InformationChangedList RB-InformationChangedList-r6 OPTIONAL, + powerOffsetInfoShort PowerOffsetInfoShort + } + }, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r6 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r6 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r6 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r6 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r6 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +RadioBearerSetup-v6b0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-InformationPerRL-List-v6b0ext DL-InformationPerRL-List-v6b0ext OPTIONAL, + -- MBMS IEs + -- The order of the RABs in IE rab-InformationSetupListExt is the same as + -- in IE rab-InformationSetupList that is included in this message + rab-InformationSetupListExt RAB-InformationSetupList-v6b0ext OPTIONAL +} + +RadioBearerSetup-r7-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList-r7 OPTIONAL, + rab-InformationSetupList RAB-InformationSetupList-r7 OPTIONAL, + rab-InformationReconfigList RAB-InformationReconfigList OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r7 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r7 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r7 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r7 OPTIONAL + }, + -- dummy is not used in this version of the specification + -- if it is sent, the UE behaviour is unspecified. + dummy NULL + }, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r7 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r7 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r7 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r7 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r7 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +RadioBearerSetup-r7-add-ext-IEs ::= SEQUENCE { + radioBearerSetup-v7d0ext RadioBearerSetup-v7d0ext-IEs OPTIONAL, + v7f0NonCriticalExtensions SEQUENCE { + radioBearerSetup-v7f0ext RadioBearerSetup-v7f0ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + radioBearerSetup-v7g0ext RadioBearerSetup-v7g0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +RadioBearerSetup-v780ext-IEs ::= SEQUENCE { + -- Physical channel IEs + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL +} + +RadioBearerSetup-v7d0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + ul-EDCH-Information UL-EDCH-Information-ext OPTIONAL +} + +RadioBearerSetup-v7f0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + mimoParameters MIMO-Parameters-v7f0ext OPTIONAL +} + +RadioBearerSetup-v7g0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + mimoParameters MIMO-Parameters-v7g0ext OPTIONAL +} + +RadioBearerSetup-r8-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + sr-vcc-Info SR-VCC-Info OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList-r8 OPTIONAL, + rab-InformationSetupList RAB-InformationSetupList-r8 OPTIONAL, + rab-InformationReconfigList RAB-InformationReconfigList-r8 OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r8 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r8 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r7 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r8 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r8 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r8 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +RadioBearerSetup-v820ext-IEs ::= SEQUENCE { + -- Radio bearer IEs + rab-InformationSetupList RAB-InformationSetupList-v820ext OPTIONAL +} + +RadioBearerSetup-v890ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-SecondaryCellInfoFDD-v890ext DL-SecondaryCellInfoFDD-v890ext OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8-ext OPTIONAL +} + +RadioBearerSetup-v8a0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8-ext2 OPTIONAL +} + +RadioBearerSetup-r9-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + sr-vcc-Info SR-VCC-Info OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList-r8 OPTIONAL, + rab-InformationSetupList RAB-InformationSetupList-r8 OPTIONAL, + rab-InformationReconfigList RAB-InformationReconfigList-r8 OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r8 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r8 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r9 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r9 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r8 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r9 OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +RadioBearerSetup-v950ext-IEs::= SEQUENCE { + -- Physical channel IEs + secondaryCellMimoParameters SecondaryCellMIMOparametersFDD-v950ext OPTIONAL +} + +RadioBearerSetup-v9c0ext-IEs::= SEQUENCE { + -- For 1.28Mcps TDD only + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-TDD128-v9c0ext OPTIONAL +} + +RadioBearerSetup-r10-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + sr-vcc-Info SR-VCC-Info OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList-r8 OPTIONAL, + rab-InformationSetupList RAB-InformationSetupList-r8 OPTIONAL, + rab-InformationReconfigList RAB-InformationReconfigList-r8 OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r8 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r8 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r9 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r9 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + ul-MulticarrierEDCHInfo-TDD128 UL-MulticarrierEDCHInfo-TDD128 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r10 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r10 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + mu-MIMO-Info-TDD128 MU-MIMO-Info-TDD128 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +RadioBearerSetup-vb50ext-IEs ::= SEQUENCE { + ulOLTDInfoFDD UL-OLTD-InfoFDD OPTIONAL +} + +RadioBearerSetup-r11-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + sr-vcc-Info SR-VCC-Info OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList-r11 OPTIONAL, + rab-InformationSetupList RAB-InformationSetupList-r11 OPTIONAL, + rab-InformationReconfigList RAB-InformationReconfigList-r8 OPTIONAL, + rb-InformationReconfigList RB-InformationReconfigList-r11 OPTIONAL, + rb-InformationAffectedList RB-InformationAffectedList-r8 OPTIONAL, + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + pdcp-ROHC-TargetMode PDCP-ROHC-TargetMode OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-deletedTransChInfoList UL-DeletedTransChInfoList-r6 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-DeletedTransChInfoList DL-DeletedTransChInfoList-r7 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r11 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + mimo4x4Parameters MIMO4x4-Parameters OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r11 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r11 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + ul-MulticarrierEDCHInfo-TDD128 UL-MulticarrierEDCHInfo-TDD128 OPTIONAL, + ul-CLTD-InfoFDD UL-CLTD-InfoFDD OPTIONAL, + ul-OLTD-InfoFDD UL-OLTD-InfoFDD OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r11 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r11 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r11 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD2 AdditionalDLSecCellInfoListFDD2 OPTIONAL, + commonERGCHInfoFDD CommonERGCHInfoFDD OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + mu-MIMO-Info-TDD128 MU-MIMO-Info-TDD128 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +-- *************************************************** +-- +-- RADIO BEARER SETUP COMPLETE +-- +-- *************************************************** + +RadioBearerSetupComplete ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + ul-IntegProtActivationInfo IntegrityProtActivationInfo OPTIONAL, + -- TABULAR: UL-TimingAdvance is applicable for TDD mode only. + ul-TimingAdvance UL-TimingAdvance OPTIONAL, + start-Value START-Value OPTIONAL, + -- Radio bearer IEs + count-C-ActivationTime ActivationTime OPTIONAL, + -- dummy is not used in this version of the specification and + -- it should be ignored by the receiver. + dummy RB-ActivationTimeInfoList OPTIONAL, + ul-CounterSynchronisationInfo UL-CounterSynchronisationInfo OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + radioBearerSetupComplete-r3-add-ext BIT STRING OPTIONAL, + v770NonCriticalExtensions SEQUENCE { + radioBearerSetupComplete-v770ext + RadioBearerSetupComplete-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +RadioBearerSetupComplete-v770ext-IEs ::= SEQUENCE { + -- TABULAR: EXT-UL-TimingAdvance is applicable for TDD mode only. + ext-UL-TimingAdvance EXT-UL-TimingAdvance OPTIONAL, + deferredMeasurementControlReading ENUMERATED { true } OPTIONAL +} + +-- *************************************************** +-- +-- RADIO BEARER SETUP FAILURE +-- +-- *************************************************** + +RadioBearerSetupFailure ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + failureCause FailureCauseWithProtErr, + -- Radio bearer IEs + potentiallySuccesfulBearerList RB-IdentityList OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + radioBearerSetupFailure-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +-- *************************************************** +-- +-- RRC CONNECTION REJECT +-- +-- *************************************************** + +RRCConnectionReject ::= CHOICE { + r3 SEQUENCE { + rrcConnectionReject-r3 RRCConnectionReject-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + rrcConnectionReject-r3-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + rrcConnectionReject-v690ext RRCConnectionReject-v690ext-IEs, + v6f0NonCriticalExtensions SEQUENCE { + rrcConnectionReject-v6f0ext RRCConnectionReject-v6f0ext-IEs, + v860NonCriticalExtensions SEQUENCE { + rrcConnectionReject-v860ext RRCConnectionReject-v860ext-IEs, + va40NonCriticalExtensions SEQUENCE { + rrcConnectionReject-va40ext RRCConnectionReject-va40ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + rrcConnectionReject-vb50ext RRCConnectionReject-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + initialUE-Identity InitialUE-Identity, + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions SEQUENCE {} + } +} + +RRCConnectionReject-r3-IEs ::= SEQUENCE { + -- TABULAR: Integrity protection shall not be performed on this message. + -- User equipment IEs + initialUE-Identity InitialUE-Identity, + rrc-TransactionIdentifier RRC-TransactionIdentifier, + rejectionCause RejectionCause, + waitTime WaitTime, + redirectionInfo RedirectionInfo OPTIONAL +} + +RRCConnectionReject-v690ext-IEs ::= SEQUENCE { + redirectionInfo-v690ext GSM-TargetCellInfoList OPTIONAL +} + +RRCConnectionReject-v6f0ext-IEs ::= SEQUENCE { + countingCompletion ENUMERATED { true } OPTIONAL +} + +RRCConnectionReject-v860ext-IEs ::= SEQUENCE { + redirectionInfo RedirectionInfo-v860ext OPTIONAL +} + +RRCConnectionReject-va40ext-IEs ::= SEQUENCE { + extendedWaitTime ExtendedWaitTime OPTIONAL +} + +RRCConnectionReject-vb50ext-IEs ::= SEQUENCE { + eutra-TargetFreqInfoList EUTRA-TargetFreqInfoList-vb50ext OPTIONAL +} + +-- *************************************************** +-- +-- RRC CONNECTION RELEASE +-- +-- *************************************************** + +RRCConnectionRelease ::= CHOICE { + r3 SEQUENCE { + rrcConnectionRelease-r3 RRCConnectionRelease-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + rrcConnectionRelease-r3-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-v690ext RRCConnectionRelease-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-v770ext RRCConnectionRelease-v770ext-IEs, + v860NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-v860ext RRCConnectionRelease-v860ext-IEs, + va40NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-va40ext RRCConnectionRelease-va40ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r4 SEQUENCE { + rrcConnectionRelease-r4 RRCConnectionRelease-r4-IEs, + v4d0NonCriticalExtensions SEQUENCE { + -- Container for adding non critical extensions after freezing REL-6 + rrcConnectionRelease-r4-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-v690ext RRCConnectionRelease-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-v770ext RRCConnectionRelease-v770ext-IEs, + v860NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-v860ext RRCConnectionRelease-v860ext-IEs, + va40NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-va40ext + RRCConnectionRelease-va40ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-vb50ext + RRCConnectionRelease-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } +} + +RRCConnectionRelease-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + -- n-308 is conditional on the UE state + n-308 N-308 OPTIONAL, + releaseCause ReleaseCause, + rplmn-information Rplmn-Information OPTIONAL +} + +RRCConnectionRelease-r4-IEs ::= SEQUENCE { + -- User equipment IEs + -- n-308 is conditional on the UE state. + n-308 N-308 OPTIONAL, + releaseCause ReleaseCause, + rplmn-information Rplmn-Information-r4 OPTIONAL +} + +RRCConnectionRelease-v690ext-IEs ::= SEQUENCE { + redirectionInfo-v690ext RedirectionInfo-r6 OPTIONAL +} + +RRCConnectionRelease-v770ext-IEs ::= SEQUENCE { + -- User equipment IEs + ueMobilityStateIndicator High-MobilityDetected OPTIONAL +} + +RRCConnectionRelease-v860ext-IEs ::= SEQUENCE { + -- Other IEs + redirectionInfo RedirectionInfo-v860ext OPTIONAL +} + +RRCConnectionRelease-va40ext-IEs ::= SEQUENCE { + extendedWaitTime ExtendedWaitTime OPTIONAL +} + +RRCConnectionRelease-vb50ext-IEs ::= SEQUENCE { + -- Other IEs + eutra-TargetFreqInfoList EUTRA-TargetFreqInfoList-vb50ext OPTIONAL +} + +-- *************************************************** +-- +-- RRC CONNECTION RELEASE for CCCH +-- +-- *************************************************** + +RRCConnectionRelease-CCCH ::= CHOICE { + r3 SEQUENCE { + rrcConnectionRelease-CCCH-r3 RRCConnectionRelease-CCCH-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + rrcConnectionRelease-CCCH-r3-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-v690ext RRCConnectionRelease-CCCH-v690ext-IEs, + v860NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-v860ext RRCConnectionRelease-CCCH-v860ext-IEs, + va40NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-va40ext RRCConnectionRelease-va40ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + u-RNTI U-RNTI, + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r4 SEQUENCE { + rrcConnectionRelease-CCCH-r4 RRCConnectionRelease-CCCH-r4-IEs, + v4d0NonCriticalExtensions SEQUENCE { + -- Container for adding non critical extensions after freezing REL-5 + rrcConnectionRelease-CCCH-r4-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-v690ext RRCConnectionRelease-CCCH-v690ext-IEs, + v860NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-v860ext RRCConnectionRelease-CCCH-v860ext-IEs, + va40NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-va40ext + RRCConnectionRelease-va40ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions SEQUENCE { + -- TABULAR: CHOICE IdentityType (U-RNTI, GroupIdentity) is replaced with the + -- optional element groupIdentity, since the U-RNTI is mandatory in ASN.1. + -- In case CHOICE IdentityType is equal to GroupIdentity the value of the U-RNTI + -- shall be ignored by a UE complying with this version of the message. + groupIdentity SEQUENCE ( SIZE (1 .. maxURNTI-Group) ) OF + GroupReleaseInformation OPTIONAL, + criticalExtensions CHOICE { + r5 SEQUENCE { + rrcConnectionRelease-CCCH-r5 RRCConnectionRelease-CCCH-r5-IEs, + -- Container for adding non critical extensions after freezing REL-6 + rrcConnectionRelease-CCCH-r5-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-v690ext RRCConnectionRelease-CCCH-v690ext-IEs, + v860NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-v860ext + RRCConnectionRelease-CCCH-v860ext-IEs, + va40NonCriticalExtensions SEQUENCE { + rrcConnectionRelease-va40ext + RRCConnectionRelease-va40ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } + } + } +} + +RRCConnectionRelease-CCCH-r3-IEs ::= SEQUENCE { + -- User equipment IEs + u-RNTI U-RNTI, + -- The rest of the message is identical to the one sent on DCCH. + rrcConnectionRelease RRCConnectionRelease-r3-IEs +} + +RRCConnectionRelease-CCCH-r4-IEs ::= SEQUENCE { + -- The rest of the message is identical to the one sent on DCCH. + rrcConnectionRelease RRCConnectionRelease-r4-IEs +} + +-- The R5 and R4 sequence of IEs are identical in this message +RRCConnectionRelease-CCCH-r5-IEs ::= RRCConnectionRelease-CCCH-r4-IEs + +-- The R6 non-critical extension is identical to the one sent on DCCH. +RRCConnectionRelease-CCCH-v690ext-IEs ::= RRCConnectionRelease-v690ext-IEs + +-- The R8 non-critical extension is identical to the one sent on DCCH. +RRCConnectionRelease-CCCH-v860ext-IEs ::= RRCConnectionRelease-v860ext-IEs + +-- The R10 non-critical extension is identical to the one sent on DCCH. +RRCConnectionRelease-CCCH-va40ext-IEs ::= RRCConnectionRelease-va40ext-IEs + +-- *************************************************** +-- +-- RRC CONNECTION RELEASE COMPLETE +-- +-- *************************************************** + +RRCConnectionReleaseComplete ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + errorIndication FailureCauseWithProtErr OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + rrcConnectionReleaseComplete-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +-- *************************************************** +-- +-- RRC CONNECTION REQUEST +-- +-- *************************************************** + +RRCConnectionRequest ::= SEQUENCE { + -- TABULAR: Integrity protection shall not be performed on this message. + -- User equipment IEs + initialUE-Identity InitialUE-Identity, + establishmentCause EstablishmentCause, + -- protocolErrorIndicator is MD, but for compactness reasons no default value + -- has been assigned to it. + protocolErrorIndicator ProtocolErrorIndicator, + -- Measurement IEs + measuredResultsOnRACH MeasuredResultsOnRACH OPTIONAL, + -- Non critical Extensions + v3d0NonCriticalExtensions SEQUENCE { + rRCConnectionRequest-v3d0ext RRCConnectionRequest-v3d0ext-IEs, + -- Reserved for future non critical extension + v4b0NonCriticalExtensions SEQUENCE { + rrcConnectionRequest-v4b0ext RRCConnectionRequest-v4b0ext-IEs, + v590NonCriticalExtensions SEQUENCE { + rrcConnectionRequest-v590ext RRCConnectionRequest-v590ext-IEs, + v690NonCriticalExtensions SEQUENCE { + rrcConnectionRequest-v690ext RRCConnectionRequest-v690ext-IEs, + -- Reserved for future non critical extension + v6b0NonCriticalExtensions SEQUENCE { + rrcConnectionRequest-v6b0ext RRCConnectionRequest-v6b0ext-IEs, + v6e0NonCriticalExtensions SEQUENCE { + rrcConnectionRequest-v6e0ext RRCConnectionRequest-v6e0ext-IEs, + v770NonCriticalExtensions SEQUENCE { + rrcConnectionRequest-v770ext + RRCConnectionRequest-v770ext-IEs, + v7b0NonCriticalExtensions SEQUENCE { + rrcConnectionRequest-v7b0ext + RRCConnectionRequest-v7b0ext-IEs, + v860NonCriticalExtensions SEQUENCE { + rrcConnectionRequest-v860ext + RRCConnectionRequest-v860ext-IEs, + v7e0NonCriticalExtensions SEQUENCE { + rrcConnectionRequest-v7e0ext + RRCConnectionRequest-v7e0ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + rrcConnectionRequest-v7g0ext + RRCConnectionRequest-v7g0ext-IEs, + v920NonCriticalExtensions SEQUENCE { + rrcConnectionRequest-v920ext + RRCConnectionRequest-v920ext-IEs, + v940NonCriticalExtensions SEQUENCE { + rrcConnectionRequest-v940ext + RRCConnectionRequest-v940ext-IEs, + va40NonCriticalExtensions + RRCConnectionRequest-NonCriticalExts-va40-IEs + OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +RRCConnectionRequest-v3d0ext-IEs ::= SEQUENCE { + -- User equipment IEs + uESpecificBehaviourInformation1idle UESpecificBehaviourInformation1idle OPTIONAL +} + +RRCConnectionRequest-v4b0ext-IEs ::= SEQUENCE { + -- User equipment IEs + accessStratumReleaseIndicator AccessStratumReleaseIndicator +} + +RRCConnectionRequest-v590ext-IEs ::= SEQUENCE { + -- User equipment IEs + predefinedConfigStatusInfo BOOLEAN +} + +RRCConnectionRequest-v690ext-IEs ::= SEQUENCE { + -- User equipment IEs + ueCapabilityIndication ENUMERATED { hsdch, hsdch-edch } OPTIONAL, + -- Measurement IEs + measuredResultsOnRACHinterFreq MeasuredResultsOnRACHinterFreq OPTIONAL, + domainIndicator CHOICE { + cs-domain SEQUENCE { + csCallType ENUMERATED {speech, video, other, spare } + }, + ps-domain NULL + } +} + +RRCConnectionRequest-v6b0ext-IEs ::= SEQUENCE { + -- MBMS IEs + mbmsSelectedServices MBMS-SelectedServicesShort OPTIONAL +} + +RRCConnectionRequest-v6e0ext-IEs ::= SEQUENCE { + -- User equipment IEs + supportForFDPCH ENUMERATED { true } OPTIONAL +} + +RRCConnectionRequest-v770ext-IEs ::= SEQUENCE { + -- User equipment IEs + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + hspdschReception-CellFach ENUMERATED { true } OPTIONAL, + mac-ehsSupport ENUMERATED { true } OPTIONAL, + discontinuousDpcchTransmission ENUMERATED { true } OPTIONAL +} + +RRCConnectionRequest-v7b0ext-IEs ::= SEQUENCE { + -- User equipment IEs + supportForE-FDPCH ENUMERATED { true } OPTIONAL +} + +RRCConnectionRequest-v7e0ext-IEs ::= SEQUENCE { + supportForCSVoiceoverHSPA ENUMERATED { true } OPTIONAL +} + +RRCConnectionRequest-v7g0ext-IEs ::= SEQUENCE { + -- Measurement IEs + measuredResultsOnRACH-v7g0ext MeasuredResultsOnRACH-v7g0ext OPTIONAL +} + +RRCConnectionRequest-v860ext-IEs ::= SEQUENCE { + -- User equipment IEs + supportOfCommonEDCH ENUMERATED { true } OPTIONAL, + multiCellSupport ENUMERATED { true } OPTIONAL, + pre-redirectionInfo Pre-RedirectionInfo OPTIONAL, + supportOfMACiis ENUMERATED { true } OPTIONAL, + supportOfSPSOperation ENUMERATED { true } OPTIONAL +} + +RRCConnectionRequest-v920ext-IEs ::= SEQUENCE { + -- User equipment IEs + supportOfDualCellMIMO ENUMERATED { true } OPTIONAL +} + +RRCConnectionRequest-v940ext-IEs ::= SEQUENCE { + -- User equipment IEs + systemInformationContainerStoredIndicator ENUMERATED { true } OPTIONAL +} + +RRCConnectionRequest-v9b0ext-IEs ::= SEQUENCE { + -- User equipment IEs + cSFBIndication ENUMERATED { true } OPTIONAL +} + +RRCConnectionRequest-NonCriticalExts-va40-IEs ::= SEQUENCE { + rrcConnectionRequest-va40ext RRCConnectionRequest-va40ext-IEs, + v9b0NonCriticalExtensions SEQUENCE { + rrcConnectionRequest-v9b0ext RRCConnectionRequest-v9b0ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + rrcConnectionRequest-vb50ext RRCConnectionRequest-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +RRCConnectionRequest-va40ext-IEs ::= SEQUENCE { + -- User equipment IEs + -- For 1.28 Mcps TDD, IE ”supportOfMoreThanTwoCellsOrMIMO4x4” represent MU-MIMO capability, + -- higherRate indicates uplink and downlink MU-MIMO, lowerRate indicates uplink MU-MIMO + supportOfMoreThanTwoCellsOrMIMO4x4 ENUMERATED { higherRate, lowerRate } OPTIONAL, + supportOf1stFrequencyBand ENUMERATED { true } OPTIONAL, + supportOf2ndFrequencyBand ENUMERATED { true } OPTIONAL +} + +RRCConnectionRequest-vb50ext-IEs ::= SEQUENCE { + -- Measurement IEs + measuredResultsOnRACHEUTRAFreq MeasuredResultsOnRACH-EUTRAFreq OPTIONAL +} + +-- *************************************************** +-- +-- RRC CONNECTION SETUP +-- +-- *************************************************** + +RRCConnectionSetup ::= CHOICE { + r3 SEQUENCE { + rrcConnectionSetup-r3 RRCConnectionSetup-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + rrcConnectionSetup-r3-add-ext BIT STRING OPTIONAL, + v4b0NonCriticalExtensions SEQUENCE { + rrcConnectionSetup-v4b0ext RRCConnectionSetup-v4b0ext-IEs, + v590NonCriticalExtensions SEQUENCE { + rrcConnectionSetup-v590ext RRCConnectionSetup-v590ext-IEs, + v690NonCriticalExtensions SEQUENCE { + rrcConnectionSetup-v690ext RRCConnectionSetup-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + initialUE-Identity InitialUE-Identity, + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r4 SEQUENCE { + rrcConnectionSetup-r4 RRCConnectionSetup-r4-IEs, + v4d0NonCriticalExtensions SEQUENCE { + -- Container for adding non critical extensions after freezing REL-5 + rrcConnectionSetup-r4-add-ext BIT STRING OPTIONAL, + v590NonCriticalExtensions SEQUENCE { + rrcConnectionSetup-v590ext RRCConnectionSetup-v590ext-IEs, + v690NonCriticalExtensions SEQUENCE { + rrcConnectionSetup-v690ext RRCConnectionSetup-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r5 SEQUENCE { + rrcConnectionSetup-r5 RRCConnectionSetup-r5-IEs, + -- Container for adding non critical extensions after freezing REL-6 + rrcConnectionSetup-r5-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + rrcConnectionSetup-v690ext RRCConnectionSetup-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r6 SEQUENCE { + rrcConnectionSetup-r6 RRCConnectionSetup-r6-IEs, + -- Container for adding non critical extensions after freezing REL-7 + rrcConnectionSetup-r6-add-ext BIT STRING OPTIONAL, + v6b0NonCriticalExtensions SEQUENCE { + rrcConnectionSetup-v6b0ext RRCConnectionSetup-v6b0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r7 SEQUENCE { + rrcConnectionSetup-r7 RRCConnectionSetup-r7-IEs, + -- Container for adding non critical extensions after freezing REL-8 + rrcConnectionSetup-r7-add-ext BIT STRING OPTIONAL, + v780NonCriticalExtensions SEQUENCE { + rrcConnectionSetup-v780ext RRCConnectionSetup-v780ext-IEs, + v7d0NonCriticalExtensions SEQUENCE { + rrcConnectionSetup-v7d0ext RRCConnectionSetup-v7d0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r8 SEQUENCE { + rrcConnectionSetup-r8 RRCConnectionSetup-r8-IEs, + -- Container for adding non critical extensions after freezing REL-9 + rrcConnectionSetup-r8-add-ext BIT STRING OPTIONAL, + v7d0NonCriticalExtensions SEQUENCE { + rrcConnectionSetup-v7d0ext RRCConnectionSetup-v7d0ext-IEs, + v890NonCriticalExtensions SEQUENCE { + rrcConnectionSetup-v890ext + RRCConnectionSetup-v890ext-IEs, + v8a0NonCriticalExtensions SEQUENCE { + rrcConnectionSetup-v8a0ext + RRCConnectionSetup-v8a0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r9 SEQUENCE { + rrcConnectionSetup-r9 RRCConnectionSetup-r9-IEs, + -- Container for adding non critical extensions after + -- freezing REL-10 + rrcConnectionSetup-r9-add-ext + BIT STRING OPTIONAL, + v950NonCriticalExtensions SEQUENCE { + rrcConnectionSetup-v950ext RRCConnectionSetup-v950ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r10 SEQUENCE { + rrcConnectionSetup-r10 RRCConnectionSetup-r10-IEs, + -- Container for adding non critical extensions after + -- freezing REL-11 + rrcConnectionSetup-r10-add-ext + BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions CHOICE { + r11 SEQUENCE { + rrcConnectionSetup-r11 + RRCConnectionSetup-r11-IEs, + -- Container for adding non critical extensions after + -- freezing REL-12 + rrcConnectionSetup-r11-add-ext + BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } + } + } + } + } + } + } + } +} + +RRCConnectionSetup-r3-IEs ::= SEQUENCE { + -- TABULAR: Integrity protection shall not be performed on this message. + -- User equipment IEs + initialUE-Identity InitialUE-Identity, + rrc-TransactionIdentifier RRC-TransactionIdentifier, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI, + new-c-RNTI C-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient, + -- TABULAR: If capabilityUpdateRequirement is not present, the default value + -- defined in 10.3.3.2 shall be used. + capabilityUpdateRequirement CapabilityUpdateRequirement OPTIONAL, + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList2, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo OPTIONAL, + -- NOTE: ul-AddReconfTransChInfoList should be optional in later versions of + -- this message + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList, + dl-CommonTransChInfo DL-CommonTransChInfo OPTIONAL, + -- NOTE: dl-AddReconfTransChInfoList should be optional in later versions + -- of this message + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement OPTIONAL, + dl-CommonInformation DL-CommonInformation OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List OPTIONAL +} + +RRCConnectionSetup-v4b0ext-IEs ::= SEQUENCE { + capabilityUpdateRequirement-r4-ext CapabilityUpdateRequirement-r4-ext OPTIONAL, + -- Physical channel IEs + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SSDT-UL OPTIONAL, + -- The order of the RLs in IE cell-id-PerRL-List is the same as + -- in IE DL-InformationPerRL-List included in this message + cell-id-PerRL-List CellIdentity-PerRL-List OPTIONAL +} + +RRCConnectionSetup-v590ext-IEs ::= SEQUENCE { + -- User equipment IEs + systemSpecificCapUpdateReq SystemSpecificCapUpdateReq-v590ext OPTIONAL, + -- Physical channel IEs + dl-TPC-PowerOffsetPerRL-List DL-TPC-PowerOffsetPerRL-List OPTIONAL +} + +RRCConnectionSetup-r4-IEs ::= SEQUENCE { + -- TABULAR: Integrity protection shall not be performed on this message. + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI, + new-c-RNTI C-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient, + -- TABULAR: If capabilityUpdateRequirement is not present, the default value + -- defined in 10.3.3.2 shall be used. + capabilityUpdateRequirement CapabilityUpdateRequirement-r4 OPTIONAL, + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList2, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r4 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement-r4 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r4 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r4 OPTIONAL +} + +RRCConnectionSetup-r5-IEs ::= SEQUENCE { + -- TABULAR: Integrity protection shall not be performed on this message. + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI, + new-c-RNTI C-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient, + -- TABULAR: If capabilityUpdateRequirement is not present, the default value + -- defined in 10.3.3.2 shall be used. + capabilityUpdateRequirement CapabilityUpdateRequirement-r5 OPTIONAL, + -- Specification mode information + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList2, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r4 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r5 + } + } + } + }, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement-r4 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r4 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r5bis OPTIONAL +} + +RRCConnectionSetup-v690ext-IEs ::= SEQUENCE { + -- Physical Channel IEs + beaconPLEst BEACON-PL-Est OPTIONAL, + postVerificationPeriod ENUMERATED { true } OPTIONAL +} + +RRCConnectionSetup-r6-IEs ::= SEQUENCE { + -- TABULAR: Integrity protection shall not be performed on this message. + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI, + new-c-RNTI C-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient, + -- TABULAR: If capabilityUpdateRequirement is not present, the default value + -- defined in 10.3.3.2 shall be used. + capabilityUpdateRequirement CapabilityUpdateRequirement-r5 OPTIONAL, + -- Specification mode information + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList2-r6, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r6 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r5 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6 + } + } + } + }, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r6 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r6 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r6 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r6 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r6 OPTIONAL +} + +RRCConnectionSetup-v6b0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-InformationPerRL-List-v6b0ext DL-InformationPerRL-List-v6b0ext OPTIONAL +} + +RRCConnectionSetup-r7-IEs ::= SEQUENCE { + -- TABULAR: Integrity protection shall not be performed on this message. + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI, + new-c-RNTI C-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7, + -- TABULAR: If capabilityUpdateRequirement is not present, the default value + -- defined in 10.3.3.2 shall be used. + capabilityUpdateRequirement CapabilityUpdateRequirement-r7 OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN, + -- Specification mode information + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList2-r7, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r7 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r7 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6 + } + } + } + }, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r7 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r7 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r7 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r7 OPTIONAL +} + +RRCConnectionSetup-v780ext-IEs ::= SEQUENCE { + -- Physical channel IEs + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL +} + +RRCConnectionSetup-v7d0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + ul-EDCH-Information UL-EDCH-Information-ext OPTIONAL +} + +RRCConnectionSetup-r8-IEs ::= SEQUENCE { + -- TABULAR: Integrity protection shall not be performed on this message. + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI, + new-c-RNTI C-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7, + -- TABULAR: If capabilityUpdateRequirement is not present, the default value + -- defined in 10.3.3.2 shall be used. + capabilityUpdateRequirement CapabilityUpdateRequirement-r8 OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN, + -- Specification mode information + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy DefaultConfigForCellFACH OPTIONAL, + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList2-r8, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r7 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6 + } + } + } + }, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r8 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r8 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL +} + +RRCConnectionSetup-v890ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-SecondaryCellInfoFDD-v890ext DL-SecondaryCellInfoFDD-v890ext OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8-ext OPTIONAL +} + +RRCConnectionSetup-v8a0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8-ext2 OPTIONAL +} + +RRCConnectionSetup-r9-IEs ::= SEQUENCE { + -- TABULAR: Integrity protection shall not be performed on this message. + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI, + new-c-RNTI C-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7, + -- TABULAR: If capabilityUpdateRequirement is not present, the default value + -- defined in 10.3.3.2 shall be used. + capabilityUpdateRequirement CapabilityUpdateRequirement-r8 OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN, + -- Specification mode information + defaultConfigForCellFACH DefaultConfigForCellFACH OPTIONAL, + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList2-r8, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r9 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6 + } + } + } + }, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r9 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r8 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r9 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL +} + +RRCConnectionSetup-v950ext-IEs ::= SEQUENCE { + -- Physical channel IEs + secondaryCellMimoParameters SecondaryCellMIMOparametersFDD-v950ext OPTIONAL +} + +RRCConnectionSetup-r10-IEs ::= SEQUENCE { + -- TABULAR: Integrity protection shall not be performed on this message. + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI, + new-c-RNTI C-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7, + -- TABULAR: If capabilityUpdateRequirement is not present, the default value + -- defined in 10.3.3.2 shall be used. + capabilityUpdateRequirement CapabilityUpdateRequirement-r8 OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN, + -- Specification mode information + defaultConfigForCellFACH DefaultConfigForCellFACH OPTIONAL, + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList2-r8, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r9 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6 + } + } + } + }, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r9 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r10 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r10 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + mu-MIMO-Info-TDD128 MU-MIMO-Info-TDD128 OPTIONAL +} + +RRCConnectionSetup-r11-IEs ::= SEQUENCE { + -- TABULAR: Integrity protection shall not be performed on this message. + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI, + new-c-RNTI C-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7, + -- TABULAR: If capabilityUpdateRequirement is not present, the default value + -- defined in 10.3.3.2 shall be used. + capabilityUpdateRequirement CapabilityUpdateRequirement-r8 OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN, + -- Specification mode information + defaultConfigForCellFACH DefaultConfigForCellFACH OPTIONAL, + specificationMode CHOICE { + complete SEQUENCE { + -- Radio bearer IEs + srb-InformationSetupList SRB-InformationSetupList2-r8, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r11 OPTIONAL + }, + preconfiguration SEQUENCE { + -- All IEs that include an FDD/TDD choice are split in two IEs for this message, + -- one for the FDD only elements and one for the TDD only elements, so that one + -- FDD/TDD choice in this level is sufficient. + preConfigMode CHOICE { + predefinedConfigIdentity PredefinedConfigIdentity, + defaultConfig SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdentity DefaultConfigIdentity-r6 + } + } + } + }, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r11 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r11 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r11 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r10 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD-r11 OPTIONAL, + commonERGCHInfoFDD CommonERGCHInfoFDD OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + mu-MIMO-Info-TDD128 MU-MIMO-Info-TDD128 OPTIONAL +} + +-- *************************************************** +-- +-- RRC CONNECTION SETUP COMPLETE +-- +-- *************************************************** + +RRCConnectionSetupComplete ::= SEQUENCE { + -- TABULAR: Integrity protection shall not be performed on this message. + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + startList STARTList, + ue-RadioAccessCapability UE-RadioAccessCapability OPTIONAL, + -- Other IEs + ue-RATSpecificCapability InterRAT-UE-RadioAccessCapabilityList OPTIONAL, + -- Non critical extensions + v370NonCriticalExtensions SEQUENCE { + rrcConnectionSetupComplete-v370ext RRCConnectionSetupComplete-v370ext, + v380NonCriticalExtensions SEQUENCE { + rrcConnectionSetupComplete-v380ext RRCConnectionSetupComplete-v380ext-IEs, + -- Reserved for future non critical extension + v3a0NonCriticalExtensions SEQUENCE { + rrcConnectionSetupComplete-v3a0ext RRCConnectionSetupComplete-v3a0ext-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + rrcConnectionSetupComplete-r3-add-ext BIT STRING + (CONTAINING RRCConnectionSetupComplete-r3-add-ext-IEs) OPTIONAL, + v3g0NonCriticalExtensions SEQUENCE { + rrcConnectionSetupComplete-v3g0ext RRCConnectionSetupComplete-v3g0ext-IEs, + v4b0NonCriticalExtensions SEQUENCE { + rrcConnectionSetupComplete-v4b0ext + RRCConnectionSetupComplete-v4b0ext-IEs, + v590NonCriticalExtensions SEQUENCE { + rrcConnectionSetupComplete-v590ext + RRCConnectionSetupComplete-v590ext-IEs, + v5c0NonCriticalExtensions SEQUENCE { + rrcConnectionSetupComplete-v5c0ext + RRCConnectionSetupComplete-v5c0ext-IEs, + v690NonCriticalExtensions SEQUENCE { + rrcConnectionSetupComplete-v690ext + RRCConnectionSetupComplete-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + rrcConectionSetupComplete-v770ext + RRCConnectionSetupComplete-v770ext-IEs, + va40NonCriticalExtensions SEQUENCE { + rrcConectionSetupComplete-va40ext + RRCConnectionSetupComplete-va40ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + rrcConnectionSetupComplete-vb50ext + RRCConnectionSetupComplete-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +RRCConnectionSetupComplete-v370ext ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v370ext UE-RadioAccessCapability-v370ext OPTIONAL +} + +RRCConnectionSetupComplete-v380ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v380ext UE-RadioAccessCapability-v380ext OPTIONAL, + dl-PhysChCapabilityFDD-v380ext DL-PhysChCapabilityFDD-v380ext +} + +RRCConnectionSetupComplete-v3a0ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v3a0ext UE-RadioAccessCapability-v3a0ext OPTIONAL +} + +RRCConnectionSetupComplete-v3g0ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v3g0ext UE-RadioAccessCapability-v3g0ext OPTIONAL +} + +RRCConnectionSetupComplete-r3-add-ext-IEs ::= SEQUENCE { + rrcConnectionSetupComplete-v650ext RRCConnectionSetupComplete-v650ext-IEs OPTIONAL, + v680NonCriticalExtensions SEQUENCE { + rrcConnectionSetupComplete-v680ext RRCConnectionSetupComplete-v680ext-IEs, + v7e0NonCriticalExtensions SEQUENCE { + rrcConnectionSetupComplete-v7e0ext RRCConnectionSetupComplete-v7e0ext-IEs, + v7f0NonCriticalExtensions SEQUENCE { + rrcConnectionSetupComplete-v7f0ext + RRCConnectionSetupComplete-v7f0ext-IEs, + va40NonCriticalExtensions SEQUENCE { + rrcConnectionSetupCompleteBand-va40ext + RRCConnectionSetupCompleteBand-va40ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +RRCConnectionSetupComplete-v4b0ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v4b0ext UE-RadioAccessCapability-v4b0ext OPTIONAL +} + +RRCConnectionSetupComplete-v590ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v590ext UE-RadioAccessCapability-v590ext OPTIONAL, + -- Other IEs + ue-RATSpecificCapability-v590ext InterRAT-UE-RadioAccessCapability-v590ext OPTIONAL +} + +RRCConnectionSetupComplete-v5c0ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v5c0ext UE-RadioAccessCapability-v5c0ext OPTIONAL +} + +RRCConnectionSetupComplete-v650ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v650ext UE-RadioAccessCapability-v650ext +} + +RRCConnectionSetupComplete-v680ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v680ext UE-RadioAccessCapability-v680ext +} + +RRCConnectionSetupComplete-v690ext-IEs ::= SEQUENCE { + -- User equipment IEs + ueCapabilityContainer BIT STRING + (CONTAINING UE-CapabilityContainer-IEs) OPTIONAL +} + +RRCConnectionSetupComplete-v770ext-IEs ::= SEQUENCE { + -- Other IEs + deferredMeasurementControlReading ENUMERATED { true } OPTIONAL +} + +RRCConnectionSetupComplete-v7e0ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability UE-RadioAccessCapability-v7e0ext +} + +RRCConnectionSetupComplete-v7f0ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability UE-RadioAccessCapability-v7f0ext OPTIONAL +} + +RRCConnectionSetupComplete-va40ext-IEs ::= SEQUENCE { + -- Other IEs + loggedMeasAvailable ENUMERATED { true } OPTIONAL, + loggedANRResultsAvailable ENUMERATED { true } OPTIONAL} + +RRCConnectionSetupCompleteBand-va40ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapabBand UE-RadioAccessCapabBand-va40ext OPTIONAL +} + +RRCConnectionSetupComplete-vb50ext-IEs ::= SEQUENCE { + -- Other IEs + connEstFailInfoAvailable ENUMERATED { true } OPTIONAL +} + +-- *************************************************** +-- +-- RRC FAILURE INFO +-- +-- *************************************************** + +RRC-FailureInfo ::= CHOICE { + r3 SEQUENCE { + rRC-FailureInfo-r3 RRC-FailureInfo-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + rrc-FailureInfo-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions SEQUENCE {} +} + +RRC-FailureInfo-r3-IEs ::= SEQUENCE { + -- Non-RRC IEs + failureCauseWithProtErr FailureCauseWithProtErr +} + +-- *************************************************** +-- +-- RRC STATUS +-- +-- *************************************************** + +RRCStatus ::= SEQUENCE { + -- Other IEs + -- TABULAR: Identification of received message is nested in + -- ProtocolErrorMoreInformation + protocolErrorInformation ProtocolErrorMoreInformation, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + rrcStatus-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +-- *************************************************** +-- +-- SECURITY MODE COMMAND +-- +-- *************************************************** + +SecurityModeCommand ::= CHOICE { + r3 SEQUENCE { + securityModeCommand-r3 SecurityModeCommand-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + securityModeCommand-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r7 SEQUENCE{ + securityModeCommand-r7 SecurityModeCommand-r7-IEs, + -- Container for adding non critical extensions after freezing REL-8 + securityModeCommand-r7-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } +} + +SecurityModeCommand-r3-IEs ::= SEQUENCE { +-- TABULAR: Integrity protection shall always be performed on this message. + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + securityCapability SecurityCapability, + cipheringModeInfo CipheringModeInfo OPTIONAL, + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + -- Core network IEs + cn-DomainIdentity CN-DomainIdentity, + -- Other IEs + ue-SystemSpecificSecurityCap InterRAT-UE-SecurityCapList OPTIONAL +} + +SecurityModeCommand-r7-IEs ::= SEQUENCE { +-- TABULAR: Integrity protection shall always be performed on this message. + -- User equipment IEs + securityCapability SecurityCapability, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + -- Core network IEs + cn-DomainIdentity CN-DomainIdentity, + -- Other IEs + ue-SystemSpecificSecurityCap InterRAT-UE-SecurityCapList OPTIONAL +} + +-- *************************************************** +-- +-- SECURITY MODE COMPLETE +-- +-- *************************************************** + +SecurityModeComplete ::= SEQUENCE { +-- TABULAR: Integrity protection shall always be performed on this message. + + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + ul-IntegProtActivationInfo IntegrityProtActivationInfo OPTIONAL, + -- Radio bearer IEs + rb-UL-CiphActivationTimeInfo RB-ActivationTimeInfoList OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + securityModeComplete-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +-- *************************************************** +-- +-- SECURITY MODE FAILURE +-- +-- *************************************************** + +SecurityModeFailure ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + failureCause FailureCauseWithProtErr, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + securityModeFailure-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +-- *************************************************** +-- +-- SIGNALLING CONNECTION RELEASE +-- +-- *************************************************** + +SignallingConnectionRelease ::= CHOICE { + r3 SEQUENCE { + signallingConnectionRelease-r3 SignallingConnectionRelease-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + signallingConnectionRelease-r3-add-ext BIT STRING OPTIONAL, + va40NonCriticalExtensions SEQUENCE { + signallingConnectionRelease-va40ext SignallingConnectionRelease-va40ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions SEQUENCE {} + } +} + +SignallingConnectionRelease-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + -- Core network IEs + cn-DomainIdentity CN-DomainIdentity +} + +SignallingConnectionRelease-va40ext-IEs ::= SEQUENCE { + extendedWaitTime ExtendedWaitTime OPTIONAL +} + +-- *************************************************** +-- +-- SIGNALLING CONNECTION RELEASE INDICATION +-- +-- *************************************************** + +SignallingConnectionReleaseIndication ::= SEQUENCE { + -- Core network IEs + cn-DomainIdentity CN-DomainIdentity, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + signallingConnectionReleaseIndication-r3-add-ext BIT STRING OPTIONAL, + v860nonCriticalExtentions SEQUENCE { + signallingConnectionReleaseIndication-v860ext + SignallingConnectionReleaseIndication-v860ext, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SignallingConnectionReleaseIndication-v860ext ::= SEQUENCE { + signallingConnectionReleaseIndicationCause + ENUMERATED { uERequestedPSDataSessionEnd, anyOtherCause } +} + +-- *************************************************** +-- +-- SYSTEM INFORMATION for BCH +-- +-- *************************************************** + +SystemInformation-BCH ::= SEQUENCE { + -- Other information elements + sfn-Prime SFN-Prime, + payload CHOICE { + noSegment NULL, + firstSegment FirstSegment, + subsequentSegment SubsequentSegment, + lastSegmentShort LastSegmentShort, + lastAndFirst SEQUENCE { + lastSegmentShort LastSegmentShort, + firstSegment FirstSegmentShort + }, + lastAndComplete SEQUENCE { + lastSegmentShort LastSegmentShort, + completeSIB-List CompleteSIB-List + }, + lastAndCompleteAndFirst SEQUENCE { + lastSegmentShort LastSegmentShort, + completeSIB-List CompleteSIB-List, + firstSegment FirstSegmentShort + }, + completeSIB-List CompleteSIB-List, + completeAndFirst SEQUENCE { + completeSIB-List CompleteSIB-List, + firstSegment FirstSegmentShort + }, + completeSIB CompleteSIB, + lastSegment LastSegment, + spare5 NULL, + spare4 NULL, + spare3 NULL, + spare2 NULL, + spare1 NULL + } +} + +-- *************************************************** +-- +-- SYSTEM INFORMATION for FACH +-- +-- *************************************************** + +-- this IE is not used in this version of the specification. +SystemInformation-FACH ::= SEQUENCE { + -- Other information elements + payload CHOICE { + noSegment NULL, + firstSegment FirstSegment, + subsequentSegment SubsequentSegment, + lastSegmentShort LastSegmentShort, + lastAndFirst SEQUENCE { + lastSegmentShort LastSegmentShort, + firstSegment FirstSegmentShort + }, + lastAndComplete SEQUENCE { + lastSegmentShort LastSegmentShort, + completeSIB-List CompleteSIB-List + }, + lastAndCompleteAndFirst SEQUENCE { + lastSegmentShort LastSegmentShort, + completeSIB-List CompleteSIB-List, + firstSegment FirstSegmentShort + }, + completeSIB-List CompleteSIB-List, + completeAndFirst SEQUENCE { + completeSIB-List CompleteSIB-List, + firstSegment FirstSegmentShort + }, + completeSIB CompleteSIB, + lastSegment LastSegment, + spare5 NULL, + spare4 NULL, + spare3 NULL, + spare2 NULL, + spare1 NULL + } +} + +-- *************************************************** +-- +-- First segment +-- +-- *************************************************** + +FirstSegment ::= SEQUENCE { + -- Other information elements + sib-Type SIB-Type, + seg-Count SegCount, + sib-Data-fixed SIB-Data-fixed +} + +-- *************************************************** +-- +-- First segment (short) +-- +-- *************************************************** + +FirstSegmentShort ::= SEQUENCE { + -- Other information elements + sib-Type SIB-Type, + seg-Count SegCount, + sib-Data-variable SIB-Data-variable +} + +-- *************************************************** +-- +-- Subsequent segment +-- +-- *************************************************** + +SubsequentSegment ::= SEQUENCE { + -- Other information elements + sib-Type SIB-Type, + segmentIndex SegmentIndex, + sib-Data-fixed SIB-Data-fixed +} + +-- *************************************************** +-- +-- Last segment +-- +-- *************************************************** + +LastSegment ::= SEQUENCE { + -- Other information elements + sib-Type SIB-Type, + segmentIndex SegmentIndex, + -- For sib-Data-fixed, in case the SIB data is less than 222 bits, padding + -- shall be used. The same padding bits shall be used as defined in clause 12.1 + sib-Data-fixed SIB-Data-fixed +} + +LastSegmentShort ::= SEQUENCE { + -- Other information elements + sib-Type SIB-Type, + segmentIndex SegmentIndex, + sib-Data-variable SIB-Data-variable +} + +-- *************************************************** +-- +-- Complete SIB +-- +-- *************************************************** + +CompleteSIB-List ::= SEQUENCE (SIZE (1..maxSIBperMsg)) OF + CompleteSIBshort + +CompleteSIB ::= SEQUENCE { + -- Other information elements + sib-Type SIB-Type, + -- For sib-Data-fixed, in case the SIB data is less than 226 bits, padding + -- shall be used. The same padding bits shall be used as defined in clause 12.1 + sib-Data-fixed BIT STRING (SIZE (226)) +} + +CompleteSIBshort ::= SEQUENCE { + -- Other information elements + sib-Type SIB-Type, + sib-Data-variable SIB-Data-variable +} + +-- *************************************************** +-- +-- SYSTEM INFORMATION CHANGE INDICATION +-- +-- *************************************************** + +SystemInformationChangeIndication ::= SEQUENCE { + -- Other IEs + bcch-ModificationInfo BCCH-ModificationInfo, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + systemInformationChangeIndication-r3-add-ext BIT STRING OPTIONAL, + v860NonCriticalExtensions SEQUENCE { + systemInformationChangeIndication-v860ext + SystemInformationChangeIndication-v860ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SystemInformationChangeIndication-v860ext-IEs ::= SEQUENCE { + -- Other IEs + etws-Information ETWS-Information OPTIONAL +} + +-- *************************************************** +-- +-- TRANSPORT CHANNEL RECONFIGURATION +-- +-- *************************************************** + +TransportChannelReconfiguration ::= CHOICE { + r3 SEQUENCE { + transportChannelReconfiguration-r3 + TransportChannelReconfiguration-r3-IEs, + v3a0NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v3a0ext + TransportChannelReconfiguration-v3a0ext, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + transportChannelReconfiguration-r3-add-ext BIT STRING OPTIONAL, + v4b0NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v4b0ext + TransportChannelReconfiguration-v4b0ext-IEs, + v590NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v590ext + TransportChannelReconfiguration-v590ext-IEs, + v690NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v690ext + TransportChannelReconfiguration-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v770ext + TransportChannelReconfiguration-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r4 SEQUENCE { + transportChannelReconfiguration-r4 + TransportChannelReconfiguration-r4-IEs, + v4d0NonCriticalExtensions SEQUENCE { + -- Container for adding non critical extensions after freezing REL-5 + transportChannelReconfiguration-r4-add-ext BIT STRING OPTIONAL, + v590NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v590ext + TransportChannelReconfiguration-v590ext-IEs, + v690NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v690ext + TransportChannelReconfiguration-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v770ext + TransportChannelReconfiguration-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r5 SEQUENCE { + transportChannelReconfiguration-r5 + TransportChannelReconfiguration-r5-IEs, + -- Container for adding non critical extensions after freezing REL-6 + transportChannelReconfiguration-r5-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v690ext + TransportChannelReconfiguration-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v770ext + TransportChannelReconfiguration-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r6 SEQUENCE { + transportChannelReconfiguration-r6 + TransportChannelReconfiguration-r6-IEs, + -- Container for adding non critical extensions after freezing REL-7 + transportChannelReconfiguration-r6-add-ext BIT STRING OPTIONAL, + v6b0NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v6b0ext + TransportChannelReconfiguration-v6b0ext-IEs, + v770NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v770ext + TransportChannelReconfiguration-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r7 SEQUENCE { + transportChannelReconfiguration-r7 + TransportChannelReconfiguration-r7-IEs, + -- Container for adding non critical extensions after freezing REL-8 + transportChannelReconfiguration-r7-add-ext BIT STRING OPTIONAL, + v780NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v780ext + TransportChannelReconfiguration-v780ext-IEs, + v7d0NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v7d0ext + TransportChannelReconfiguration-v7d0ext-IEs, + v7f0NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v7f0ext + TransportChannelReconfiguration-v7f0ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v7g0ext + TransportChannelReconfiguration-v7g0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r8 SEQUENCE { + transportChannelReconfiguration-r8 + TransportChannelReconfiguration-r8-IEs, + -- Container for adding non critical extensions after freezing REL-9 + transportChannelReconfiguration-r8-add-ext + BIT STRING OPTIONAL, + v7d0NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v7d0ext + TransportChannelReconfiguration-v7d0ext-IEs, + v7f0NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v7f0ext + TransportChannelReconfiguration-v7f0ext-IEs, + v890NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v890ext + TransportChannelReconfiguration-v890ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v7g0ext + TransportChannelReconfiguration-v7g0ext-IEs, + v8a0NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v8a0ext + TransportChannelReconfiguration-v8a0ext-IEs, + nonCriticalExtensions + SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r9 SEQUENCE { + transportChannelReconfiguration-r9 + TransportChannelReconfiguration-r9-IEs, + -- Container for adding non critical extensions after + -- freezing REL-10 + transportChannelReconfiguration-r9-add-ext + BIT STRING OPTIONAL, + v950NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v950ext + TransportChannelReconfiguration-v950ext-IEs, + v9c0NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v9c0ext + TransportChannelReconfiguration-v9c0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r10 SEQUENCE { + transportChannelReconfiguration-r10 + TransportChannelReconfiguration-r10-IEs, + -- Container for adding non critical extensions after + -- freezing REL-11 + transportChannelReconfiguration-r10-add-ext + BIT STRING OPTIONAL, + v9c0NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-v9c0ext + TransportChannelReconfiguration-v9c0ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + transportChannelReconfiguration-vb50ext + TransportChannelReconfiguration-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r11 SEQUENCE { + transportChannelReconfiguration-r11 + TransportChannelReconfiguration-r11-IEs, + -- Container for adding non critical extensions after + -- freezing REL-12 + transportChannelReconfiguration-r11-add-ext + BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } + } + } + } + } + } + } + } +} + +TransportChannelReconfiguration-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + -- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification, + -- they should not be sent and if received they should be ignored. + dummy CHOICE { + fdd SEQUENCE { + dummy1 CPCH-SetID OPTIONAL, + dummy2 DRAC-StaticInformationList OPTIONAL + }, + tdd NULL + } OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement OPTIONAL, + modeSpecificPhysChInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-CommonInformation DL-CommonInformation OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List OPTIONAL +} + +TransportChannelReconfiguration-v3a0ext ::= SEQUENCE { + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received + -- the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL +} + +TransportChannelReconfiguration-v4b0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SSDT-UL OPTIONAL, + -- The order of the RLs in IE cell-id-PerRL-List is the same as + -- in IE DL-InformationPerRL-List included in this message + cell-id-PerRL-List CellIdentity-PerRL-List OPTIONAL +} + +TransportChannelReconfiguration-v590ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-TPC-PowerOffsetPerRL-List DL-TPC-PowerOffsetPerRL-List OPTIONAL +} + +TransportChannelReconfiguration-r4-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received + -- the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + -- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification, + -- they should not be sent and if received they should be ignored. + dummy CHOICE { + fdd SEQUENCE { + dummy1 CPCH-SetID OPTIONAL, + dummy2 DRAC-StaticInformationList OPTIONAL + }, + tdd NULL + } OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r4 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement-r4 OPTIONAL, + modeSpecificPhysChInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-CommonInformation DL-CommonInformation-r4 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r4 OPTIONAL +} + +TransportChannelReconfiguration-r5-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, and if received + -- the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList OPTIONAL, + -- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification, + -- they should not be sent and if received they should be ignored. + dummy CHOICE { + fdd SEQUENCE { + dummy1 CPCH-SetID OPTIONAL, + dummy2 DRAC-StaticInformationList OPTIONAL + }, + tdd NULL + } OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r5 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-ChannelRequirement UL-ChannelRequirement-r5 OPTIONAL, + modeSpecificPhysChInfo CHOICE { + fdd SEQUENCE { + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy DL-PDSCH-Information OPTIONAL + }, + tdd NULL + }, + dl-HSPDSCH-Information DL-HSPDSCH-Information OPTIONAL, + dl-CommonInformation DL-CommonInformation-r5 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r5 OPTIONAL +} + +TransportChannelReconfiguration-v690ext-IEs ::= SEQUENCE { + -- User Equipment IEs + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + -- Core network IEs + primary-plmn-Identity PLMN-Identity OPTIONAL, + -- Physical channel IEs + -- The IE harq-Preamble-Mode should not be used in the r3 and r4 versions of the message + -- If included in the r3 or r4 version of the message, the UE should ignore the IE + harq-Preamble-Mode HARQ-Preamble-Mode OPTIONAL, + beaconPLEst BEACON-PL-Est OPTIONAL, + postVerificationPeriod ENUMERATED { true } OPTIONAL, + dhs-sync DHS-Sync OPTIONAL, + timingMaintainedSynchInd TimingMaintainedSynchInd OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +TransportChannelReconfiguration-r6-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r6 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r5 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r6 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r6 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r6 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r6 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r6 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +TransportChannelReconfiguration-v6b0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-InformationPerRL-List-v6b0ext DL-InformationPerRL-List-v6b0ext OPTIONAL +} + +TransportChannelReconfiguration-r7-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + responseToChangeOfUE-Capability ENUMERATED { true } OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r7 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r7 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r7 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r7 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r7 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r7 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r7 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +TransportChannelReconfiguration-v770ext-IEs ::= SEQUENCE { + -- User equipment IEs + ueMobilityStateIndicator High-MobilityDetected OPTIONAL +} + +TransportChannelReconfiguration-v780ext-IEs ::= SEQUENCE { + -- Physical channel IEs + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL +} + +TransportChannelReconfiguration-v7d0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + ul-EDCH-Information UL-EDCH-Information-ext OPTIONAL +} + +TransportChannelReconfiguration-v7f0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + mimoParameters MIMO-Parameters-v7f0ext OPTIONAL +} + +TransportChannelReconfiguration-v7g0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + mimoParameters MIMO-Parameters-v7g0ext OPTIONAL +} + +TransportChannelReconfiguration-r8-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + responseToChangeOfUE-Capability ENUMERATED { true } OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r7 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r8 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r8 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r8 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +TransportChannelReconfiguration-v890ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-SecondaryCellInfoFDD-v890ext DL-SecondaryCellInfoFDD-v890ext OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8-ext OPTIONAL +} + +TransportChannelReconfiguration-v8a0ext-IEs ::= SEQUENCE { + -- Physical channel IEs + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8-ext2 OPTIONAL +} + +TransportChannelReconfiguration-r9-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + responseToChangeOfUE-Capability ENUMERATED { true } OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r9 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r9 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r8 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r9 OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +TransportChannelReconfiguration-v950ext-IEs ::= SEQUENCE { + -- Physical channel IEs + secondaryCellMimoParameters SecondaryCellMIMOparametersFDD-v950ext OPTIONAL +} + +TransportChannelReconfiguration-v9c0ext-IEs ::= SEQUENCE { + -- For 1.28Mcps TDD only + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-TDD128-v9c0ext OPTIONAL +} + +TransportChannelReconfiguration-r10-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + responseToChangeOfUE-Capability ENUMERATED { true } OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r9 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r7 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r9 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + ul-MulticarrierEDCHInfo-TDD128 UL-MulticarrierEDCHInfo-TDD128 OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r10 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r10 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + mu-MIMO-Info-TDD128 MU-MIMO-Info-TDD128 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +TransportChannelReconfiguration-vb50ext-IEs ::= SEQUENCE { + ulOLTDInfoFDD UL-OLTD-InfoFDD OPTIONAL +} + +TransportChannelReconfiguration-r11-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + activationTime ActivationTime OPTIONAL, + delayRestrictionFlag DelayRestrictionFlag OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + -- The IE "new-DSCH-RNTI" should not be included in FDD mode, + -- and if received the UE behaviour is unspecified + new-DSCH-RNTI DSCH-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- Core network IEs + cn-InformationInfo CN-InformationInfo-r6 OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + responseToChangeOfUE-Capability ENUMERATED { true } OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL, + -- Transport channel IEs + ul-CommonTransChInfo UL-CommonTransChInfo-r4 OPTIONAL, + ul-AddReconfTransChInfoList UL-AddReconfTransChInfoList-r8 OPTIONAL, + dl-CommonTransChInfo DL-CommonTransChInfo-r4 OPTIONAL, + dl-AddReconfTransChInfoList DL-AddReconfTransChInfoList-r11 OPTIONAL, + -- Physical channel IEs + frequencyInfo FrequencyInfo OPTIONAL, + multi-frequencyInfo Multi-frequencyInfo-LCR-r7 OPTIONAL, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + mimo4x4Parameters MIMO4x4-Parameters OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + ul-DPCH-Info UL-DPCH-Info-r11 OPTIONAL, + ul-EDCH-Information UL-EDCH-Information-r11 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + ul-MulticarrierEDCHInfo-TDD128 UL-MulticarrierEDCHInfo-TDD128 OPTIONAL, + ul-CLTD-InfoFDD UL-CLTD-InfoFDD OPTIONAL, + ul-OLTD-InfoFDD UL-OLTD-InfoFDD OPTIONAL, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r11 OPTIONAL, + dl-CommonInformation DL-CommonInformation-r11 OPTIONAL, + dl-InformationPerRL-List DL-InformationPerRL-List-r11 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD2 AdditionalDLSecCellInfoListFDD2 OPTIONAL, + commonERGCHInfoFDD CommonERGCHInfoFDD OPTIONAL, + controlChannelDRXInfo-TDD128 ControlChannelDRXInfo-TDD128-r8 OPTIONAL, + sps-Information-TDD128 SPS-Information-TDD128-r8 OPTIONAL, + mu-MIMO-Info-TDD128 MU-MIMO-Info-TDD128 OPTIONAL, + -- MBMS IEs + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL, + -- Measurement IEs for LCR + cellDCHMeasOccasionInfo-TDD128 CellDCHMeasOccasionInfo-TDD128-r9 OPTIONAL +} + +-- *************************************************** +-- +-- TRANSPORT CHANNEL RECONFIGURATION COMPLETE +-- +-- *************************************************** + +TransportChannelReconfigurationComplete ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + ul-IntegProtActivationInfo IntegrityProtActivationInfo OPTIONAL, + -- TABULAR: UL-TimingAdvance is applicable for TDD mode only. + ul-TimingAdvance UL-TimingAdvance OPTIONAL, + -- Radio bearer IEs + count-C-ActivationTime ActivationTime OPTIONAL, + -- dummy is not used in this version of the specification and + -- it should be ignored by the receiver. + dummy RB-ActivationTimeInfoList OPTIONAL, + ul-CounterSynchronisationInfo UL-CounterSynchronisationInfo OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + transportChannelReconfigurationComplete-r3-add-ext BIT STRING OPTIONAL, + v770NonCriticalExtensions SEQUENCE { + transportChannelReconfigurationComplete-v770ext + TransportChannelReconfigurationComplete-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +TransportChannelReconfigurationComplete-v770ext-IEs ::= SEQUENCE { + -- TABULAR: EXT-UL-TimingAdvance is applicable for TDD mode only. + ext-UL-TimingAdvance EXT-UL-TimingAdvance OPTIONAL, + deferredMeasurementControlReading ENUMERATED { true } OPTIONAL +} + +-- *************************************************** +-- +-- TRANSPORT CHANNEL RECONFIGURATION FAILURE +-- +-- *************************************************** + +TransportChannelReconfigurationFailure ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + failureCause FailureCauseWithProtErr, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + transportChannelReconfigurationFailure-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +-- ********************************************************* +-- +-- TRANSPORT FORMAT COMBINATION CONTROL in AM or UM RLC mode +-- +-- ********************************************************* + +TransportFormatCombinationControl ::= SEQUENCE { + -- rrc-TransactionIdentifier is always included in this version of the specification + rrc-TransactionIdentifier RRC-TransactionIdentifier OPTIONAL, + modeSpecificInfo CHOICE { + fdd NULL, + tdd SEQUENCE { + tfcs-ID TFCS-Identity OPTIONAL + } + }, + dpch-TFCS-InUplink TFC-Subset, + activationTimeForTFCSubset ActivationTime OPTIONAL, + tfc-ControlDuration TFC-ControlDuration OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + transportFormatCombinationControl-r3-add-ext BIT STRING OPTIONAL, + v820NonCriticalExtensions SEQUENCE { + transportformatcombinationcontrol-v820ext + TransportFormatCombinationControl-v820ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +TransportFormatCombinationControl-v820ext-IEs ::= SEQUENCE { + -- Transport Format Combination Control IEs + ul-AMR-Rate UL-AMR-Rate OPTIONAL +} + +-- *************************************************** +-- +-- TRANSPORT FORMAT COMBINATION CONTROL FAILURE +-- +-- *************************************************** + +TransportFormatCombinationControlFailure ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + failureCause FailureCauseWithProtErr, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + transportFormatCombinationControlFailure-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +-- *************************************************** +-- +-- UE CAPABILITY ENQUIRY +-- +-- *************************************************** + +UECapabilityEnquiry ::= CHOICE { + r3 SEQUENCE { + ueCapabilityEnquiry-r3 UECapabilityEnquiry-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + ueCapabilityEnquiry-r3-add-ext BIT STRING OPTIONAL, + v4b0NonCriticalExtensions SEQUENCE { + ueCapabilityEnquiry-v4b0ext UECapabilityEnquiry-v4b0ext-IEs, + v590NonCriticalExtensions SEQUENCE { + ueCapabilityEnquiry-v590ext UECapabilityEnquiry-v590ext-IEs, + v770NonCriticalExtensions SEQUENCE { + ueCapabilityEnquiry-v770ext UECapabilityEnquiry-v770ext-IEs, + v860NonCriticalExtensions SEQUENCE { + ueCapabilityEnquiry-v860ext UECapabilityEnquiry-v860ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions SEQUENCE {} + } +} + +UECapabilityEnquiry-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + capabilityUpdateRequirement CapabilityUpdateRequirement +} + +UECapabilityEnquiry-v4b0ext-IEs ::= SEQUENCE { + capabilityUpdateRequirement-r4-ext CapabilityUpdateRequirement-r4-ext +} + +UECapabilityEnquiry-v590ext-IEs ::= SEQUENCE { + systemSpecificCapUpdateReq SystemSpecificCapUpdateReq-v590ext +} + +UECapabilityEnquiry-v770ext-IEs ::= SEQUENCE { + capabilityUpdateRequirement CapabilityUpdateRequirement-v770ext OPTIONAL +} + +UECapabilityEnquiry-v860ext-IEs ::= SEQUENCE { + capabilityUpdateRequirement CapabilityUpdateRequirement-v860ext OPTIONAL +} + +-- *************************************************** +-- +-- UE CAPABILITY INFORMATION +-- +-- *************************************************** + +UECapabilityInformation ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier OPTIONAL, + ue-RadioAccessCapability UE-RadioAccessCapability OPTIONAL, + -- Other IEs + ue-RATSpecificCapability InterRAT-UE-RadioAccessCapabilityList OPTIONAL, + v370NonCriticalExtensions SEQUENCE { + ueCapabilityInformation-v370ext UECapabilityInformation-v370ext, + v380NonCriticalExtensions SEQUENCE { + ueCapabilityInformation-v380ext UECapabilityInformation-v380ext-IEs, + v3a0NonCriticalExtensions SEQUENCE { + ueCapabilityInformation-v3a0ext UECapabilityInformation-v3a0ext-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + ueCapabilityInformation-r3-add-ext BIT STRING + (CONTAINING UECapabilityInformation-r3-add-ext-IEs) OPTIONAL, + -- Reserved for future non critical extension + v4b0NonCriticalExtensions SEQUENCE { + ueCapabilityInformation-v4b0ext UECapabilityInformation-v4b0ext, + v590NonCriticalExtensions SEQUENCE { + ueCapabilityInformation-v590ext UECapabilityInformation-v590ext, + v5c0NonCriticalExtensions SEQUENCE { + ueCapabilityInformation-v5c0ext + UECapabilityInformation-v5c0ext, + v690NonCriticalExtensions SEQUENCE { + ueCapabilityInformation-v690ext + UECapabilityInformation-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +UECapabilityInformation-v370ext ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v370ext UE-RadioAccessCapability-v370ext OPTIONAL +} + +UECapabilityInformation-v380ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v380ext UE-RadioAccessCapability-v380ext OPTIONAL, + dl-PhysChCapabilityFDD-v380ext DL-PhysChCapabilityFDD-v380ext +} + +UECapabilityInformation-v3a0ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v3a0ext UE-RadioAccessCapability-v3a0ext OPTIONAL +} + +UECapabilityInformation-r3-add-ext-IEs ::= SEQUENCE { + ueCapabilityInformation-v650ext UECapabilityInformation-v650ext-IEs OPTIONAL, + v680NonCriticalExtensions SEQUENCE { + ueCapabilityInformation-v680ext UECapabilityInformation-v680ext-IEs, + v7e0NonCriticalExtensions SEQUENCE { + ueCapabilityInformation-v7e0ext UECapabilityInformation-v7e0ext-IEs, + v7f0NonCriticalExtensions SEQUENCE { + ueCapabilityInformation-v7f0ext UECapabilityInformation-v7f0ext-IEs, + va40NonCriticalExtensions SEQUENCE { + ueCapabilityInformation-va40ext + UECapabilityInformation-va40ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +UECapabilityInformation-v4b0ext ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v4b0ext UE-RadioAccessCapability-v4b0ext OPTIONAL +} + +UECapabilityInformation-v590ext ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v3g0ext UE-RadioAccessCapability-v3g0ext OPTIONAL, + ue-RadioAccessCapability-v590ext UE-RadioAccessCapability-v590ext OPTIONAL, + -- Other IEs + ue-RATSpecificCapability-v590ext InterRAT-UE-RadioAccessCapability-v590ext OPTIONAL +} + +UECapabilityInformation-v5c0ext ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v5c0ext UE-RadioAccessCapability-v5c0ext OPTIONAL +} + +UECapabilityInformation-v650ext-IEs ::= SEQUENCE { + ue-RadioAccessCapability-v650ext UE-RadioAccessCapability-v650ext +} + +UECapabilityInformation-v680ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability-v680ext UE-RadioAccessCapability-v680ext +} + +UECapabilityInformation-v690ext-IEs ::= SEQUENCE { + -- User equipment IEs + ueCapabilityContainer BIT STRING + (CONTAINING UE-CapabilityContainer-IEs) OPTIONAL +} + +UECapabilityInformation-v7e0ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability UE-RadioAccessCapability-v7e0ext +} + +UECapabilityInformation-v7f0ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapability UE-RadioAccessCapability-v7f0ext OPTIONAL +} + +UECapabilityInformation-va40ext-IEs ::= SEQUENCE { + -- User equipment IEs + ue-RadioAccessCapabBand UE-RadioAccessCapabBand-va40ext OPTIONAL +} + +-- *************************************************** +-- +-- UE CAPABILITY INFORMATION CONFIRM +-- +-- *************************************************** + +UECapabilityInformationConfirm ::= CHOICE { + r3 SEQUENCE { + ueCapabilityInformationConfirm-r3 + UECapabilityInformationConfirm-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + ueCapabilityInformationConfirm-r3-add-ext BIT STRING OPTIONAL, + v770NonCriticalExtensions SEQUENCE { + ueCapabilityInformationConfirm-v770ext UECapabilityInformationConfirm-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions SEQUENCE {} + } +} + +UECapabilityInformationConfirm-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier +} + +UECapabilityInformationConfirm-v770ext-IEs ::= SEQUENCE { + -- User equipment IEs + acceptanceOfChangeOfCapability ENUMERATED { + refused, accepted, acceptedWithReconfigurationToFollow + } OPTIONAL +} + +-- *************************************************** +-- +-- UPLINK DIRECT TRANSFER +-- +-- *************************************************** + +UplinkDirectTransfer ::= SEQUENCE { + -- Core network IEs + cn-DomainIdentity CN-DomainIdentity, + nas-Message NAS-Message, + -- Measurement IEs + measuredResultsOnRACH MeasuredResultsOnRACH OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + uplinkDirectTransfer-r3-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + uplinkDirectTransfer-v690ext UplinkDirectTransfer-v690ext-IEs, + v7g0NonCriticalExtensions SEQUENCE { + uplinkDirectTransfer-v7g0ext UplinkDirectTransfer-v7g0ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + uplinkDirectTransfer-vb50ext UplinkDirectTransfer-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +UplinkDirectTransfer-v690ext-IEs ::= SEQUENCE { + -- Measurement IEs + measuredResultsOnRACHinterFreq MeasuredResultsOnRACHinterFreq OPTIONAL +} + +UplinkDirectTransfer-v7g0ext-IEs ::= SEQUENCE { + -- Measurement IEs + measuredResultsOnRACH-v7g0ext MeasuredResultsOnRACH-v7g0ext OPTIONAL +} + +UplinkDirectTransfer-vb50ext-IEs ::= SEQUENCE { + -- Measurement IEs + measuredResultsOnRACHEUTRAFreq MeasuredResultsOnRACH-EUTRAFreq OPTIONAL +} + +-- *************************************************** +-- +-- UPLINK PHYSICAL CHANNEL CONTROL +-- +-- *************************************************** + +UplinkPhysicalChannelControl ::= CHOICE { + r3 SEQUENCE { + uplinkPhysicalChannelControl-r3 UplinkPhysicalChannelControl-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + uplinkPhysicalChannelControl-r3-add-ext BIT STRING OPTIONAL, + v4b0NonCriticalExtensions SEQUENCE { + uplinkPysicalChannelControl-v4b0ext UplinkPhysicalChannelControl-v4b0ext-IEs, + -- Extension mechanism for non-release 4 information + noncriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r4 SEQUENCE { + uplinkPhysicalChannelControl-r4 UplinkPhysicalChannelControl-r4-IEs, + v4d0NonCriticalExtensions SEQUENCE { + -- Container for adding non critical extensions after freezing REL-5 + uplinkPhysicalChannelControl-r4-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + uplinkPhysicalChannelControl-v690ext + UplinkPhysicalChannelControl-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r5 SEQUENCE { + uplinkPhysicalChannelControl-r5 UplinkPhysicalChannelControl-r5-IEs, + -- Container for adding non critical extensions after freezing REL-6 + uplinkPhysicalChannelControl-r5-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + uplinkPhysicalChannelControl-v690ext + UplinkPhysicalChannelControl-v690ext-IEs, + v6a0NonCriticalExtensions SEQUENCE{ + uplinkPhysicalChannelControl-v6a0ext + UplinkPhysicalChannelControl-v6a0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r7 SEQUENCE { + uplinkPhysicalChannelControl-r7 UplinkPhysicalChannelControl-r7-IEs, + -- Container for adding non critical extensions after freezing REL-8 + uplinkPhysicalChannelControl-r7-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } + } + } +} + +UplinkPhysicalChannelControl-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + -- Physical channel IEs + ccTrCH-PowerControlInfo CCTrCH-PowerControlInfo OPTIONAL, + timingAdvance UL-TimingAdvanceControl OPTIONAL, + alpha Alpha OPTIONAL, + specialBurstScheduling SpecialBurstScheduling OPTIONAL, + prach-ConstantValue ConstantValueTdd OPTIONAL, + pusch-ConstantValue ConstantValueTdd OPTIONAL +} + +UplinkPhysicalChannelControl-v4b0ext-IEs ::= SEQUENCE { + -- In case of TDD, openLoopPowerControl-IPDL-TDD is included instead of IE + -- up-IPDL-Parameters in up-OTDOA-AssistanceData + openLoopPowerControl-IPDL-TDD OpenLoopPowerControl-IPDL-TDD-r4 OPTIONAL +} + +UplinkPhysicalChannelControl-r4-IEs ::= SEQUENCE { + -- Physical channel IEs + ccTrCH-PowerControlInfo CCTrCH-PowerControlInfo-r4 OPTIONAL, + specialBurstScheduling SpecialBurstScheduling OPTIONAL, + tddOption CHOICE { + tdd384 SEQUENCE { + timingAdvance UL-TimingAdvanceControl-r4 OPTIONAL, + alpha Alpha OPTIONAL, + prach-ConstantValue ConstantValueTdd OPTIONAL, + pusch-ConstantValue ConstantValueTdd OPTIONAL, + openLoopPowerControl-IPDL-TDD OpenLoopPowerControl-IPDL-TDD-r4 OPTIONAL + }, + tdd128 SEQUENCE { + ul-SynchronisationParameters UL-SynchronisationParameters-r4 OPTIONAL + } + } +} + +UplinkPhysicalChannelControl-r5-IEs ::= SEQUENCE { + -- Physical channel IEs + ccTrCH-PowerControlInfo CCTrCH-PowerControlInfo-r5 OPTIONAL, + specialBurstScheduling SpecialBurstScheduling OPTIONAL, + tddOption CHOICE { + tdd384 SEQUENCE { + timingAdvance UL-TimingAdvanceControl-r4 OPTIONAL, + alpha Alpha OPTIONAL, + prach-ConstantValue ConstantValueTdd OPTIONAL, + pusch-ConstantValue ConstantValueTdd OPTIONAL, + openLoopPowerControl-IPDL-TDD OpenLoopPowerControl-IPDL-TDD-r4 OPTIONAL, + hs-SICH-PowerControl HS-SICH-Power-Control-Info-TDD384 OPTIONAL + }, + tdd128 SEQUENCE { + ul-SynchronisationParameters UL-SynchronisationParameters-r4 OPTIONAL + } + } +} + +UplinkPhysicalChannelControl-v690ext-IEs ::= SEQUENCE { + -- Physical Channel IEs + beaconPLEst BEACON-PL-Est OPTIONAL +} + +UplinkPhysicalChannelControl-v6a0ext-IEs ::= SEQUENCE { + -- Physical Channel IEs + desired-HS-SICH-PowerLevel INTEGER (-120..-58) OPTIONAL, + tpc-Step-Size ENUMERATED { s1, s2, s3 , spare1 } OPTIONAL +} + +UplinkPhysicalChannelControl-r7-IEs ::= SEQUENCE { + -- Physical channel IEs + ccTrCH-PowerControlInfo CCTrCH-PowerControlInfo-r7 OPTIONAL, + specialBurstScheduling SpecialBurstScheduling OPTIONAL, + tddOption CHOICE { + tdd384 SEQUENCE { + timingAdvance UL-TimingAdvanceControl-r4 OPTIONAL, + alpha Alpha OPTIONAL, + prach-ConstantValue ConstantValueTdd OPTIONAL, + pusch-ConstantValue ConstantValueTdd OPTIONAL, + openLoopPowerControl-IPDL-TDD OpenLoopPowerControl-IPDL-TDD-r4 OPTIONAL, + hs-SICH-PowerControl HS-SICH-Power-Control-Info-TDD384 OPTIONAL + }, + tdd768 SEQUENCE { + timingAdvance UL-TimingAdvanceControl-r7 OPTIONAL, + alpha Alpha OPTIONAL, + prach-ConstantValue ConstantValueTdd OPTIONAL, + pusch-ConstantValue ConstantValueTdd OPTIONAL, + openLoopPowerControl-IPDL-TDD OpenLoopPowerControl-IPDL-TDD-r4 OPTIONAL, + hs-SICH-PowerControl HS-SICH-Power-Control-Info-TDD768 OPTIONAL + }, + tdd128 SEQUENCE { + ul-SynchronisationParameters UL-SynchronisationParameters-r4 OPTIONAL, + desired-HS-SICH-PowerLevel INTEGER (-120..-58) OPTIONAL, + tpc-Step-Size ENUMERATED { s1, s2, s3 , spare1 } OPTIONAL + } + } +} + +-- *************************************************** +-- +-- URA UPDATE +-- +-- *************************************************** + +URAUpdate ::= SEQUENCE { + -- User equipment IEs + u-RNTI U-RNTI, + ura-UpdateCause URA-UpdateCause, + protocolErrorIndicator ProtocolErrorIndicatorWithMoreInfo, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + uraUpdate-r3-add-ext BIT STRING + (CONTAINING URAUpdate-r3-add-ext-IEs) OPTIONAL, + v770NonCriticalExtensions SEQUENCE { + uraUpdate-v770ext UraUpdate-v770ext-IEs, + v860NonCriticalExtensions SEQUENCE { + uraUpdate-v860ext URAUpdate-v860ext-IEs, + va40NonCriticalExtensions SEQUENCE { + uraUpdate-va40ext URAUpdate-va40ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +URAUpdate-r3-add-ext-IEs ::= SEQUENCE { + uraUpdate-v7e0ext URAUpdate-v7e0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +UraUpdate-v770ext-IEs ::= SEQUENCE { + -- User equipment IEs + support-hsdschReception-CellUraPch ENUMERATED { true } OPTIONAL, + support-hsdschReception-CellFach ENUMERATED { true } OPTIONAL +} + +URAUpdate-v7e0ext-IEs ::= SEQUENCE { + -- User equipment IEs + supportForTwoDRXSchemesInPCH ENUMERATED { true } OPTIONAL +} + +URAUpdate-v860ext-IEs ::= SEQUENCE { + -- User equipment IEs + supportOfHS-DSCHDRXOperation ENUMERATED { true } OPTIONAL, + supportOfCommonEDCH ENUMERATED { true } OPTIONAL, + supportOfMACiis ENUMERATED { true } OPTIONAL +} + +URAUpdate-va40ext-IEs ::= SEQUENCE { + loggedMeasAvailable ENUMERATED { true } OPTIONAL, + loggedANRResultsAvailable ENUMERATED { true } OPTIONAL +} + +-- *************************************************** +-- +-- URA UPDATE CONFIRM +-- +-- *************************************************** + +URAUpdateConfirm ::= CHOICE { + r3 SEQUENCE { + uraUpdateConfirm-r3 URAUpdateConfirm-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + uraUpdateConfirm-r3-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + uraUpdateConfirm-v690ext URAUpdateConfirm-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r5 SEQUENCE { + uraUpdateConfirm-r5 URAUpdateConfirm-r5-IEs, + v690NonCriticalExtensions SEQUENCE { + uraUpdateConfirm-v690ext URAUpdateConfirm-v690ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r7 SEQUENCE { + uraUpdateConfirm-r7 URAUpdateConfirm-r7-IEs, + -- Container for adding non critical extensions after freezing REL-8 + uraUpdateConfirm-r7-add-ext BIT STRING OPTIONAL, + v860NonCriticalExtensions SEQUENCE { + uraUpdateConfirm-v860ext URAUpdateConfirm-v860ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } + } +} + +URAUpdateConfirm-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- CN information elements + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo OPTIONAL +} + +URAUpdateConfirm-r5-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient OPTIONAL, + -- CN information elements + cn-InformationInfo CN-InformationInfo OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL +} + +URAUpdateConfirm-v690ext-IEs ::= SEQUENCE { + -- Core network IEs + primary-plmn-Identity PLMN-Identity OPTIONAL +} + +URAUpdateConfirm-r7-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + rrc-StateIndicator RRC-StateIndicator, + utran-DRX-CycleLengthCoeff UTRAN-DRX-CycleLengthCoefficient-r7 OPTIONAL, + -- CN information elements + cn-InformationInfo CN-InformationInfo OPTIONAL, + primary-plmn-Identity PLMN-Identity OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL +} + +URAUpdateConfirm-v860ext-IEs ::= SEQUENCE { + -- User equipment IEs + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + -- Specification mode information + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy DefaultConfigForCellFACH OPTIONAL +} + +-- *************************************************** +-- +-- URA UPDATE CONFIRM for CCCH +-- +-- *************************************************** + +URAUpdateConfirm-CCCH ::= CHOICE { + r3 SEQUENCE { + uraUpdateConfirm-CCCH-r3 URAUpdateConfirm-CCCH-r3-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + uraUpdateConfirm-CCCH-r3-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + uraUpdateConfirm-v690ext URAUpdateConfirm-v690ext-IEs, + v860NonCriticalExtensions SEQUENCE { + uraUpdateConfirm-v860ext URAUpdateConfirm-v860ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + u-RNTI U-RNTI, + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions SEQUENCE {} + } +} + +URAUpdateConfirm-CCCH-r3-IEs ::= SEQUENCE { + -- User equipment IEs + u-RNTI U-RNTI, + -- The rest of the message is identical to the one sent on DCCH. + uraUpdateConfirm URAUpdateConfirm-r3-IEs +} + +-- *************************************************** +-- +-- UTRAN MOBILITY INFORMATION +-- +-- *************************************************** + +UTRANMobilityInformation ::= CHOICE { + r3 SEQUENCE { + utranMobilityInformation-r3 UTRANMobilityInformation-r3-IEs, + v3a0NonCriticalExtensions SEQUENCE { + utranMobilityInformation-v3a0ext UTRANMobilityInformation-v3a0ext-IEs, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + utranMobilityInformation-r3-add-ext BIT STRING OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + utranMobilityInformation-v690ext UtranMobilityInformation-v690ext-IEs, + v860NonCriticalExtentions SEQUENCE { + utranMobilityInformation-v860ext UTRANMobilityInformation-v860ext1-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + }, + later-than-r3 SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r5 SEQUENCE { + utranMobilityInformation-r5 UTRANMobilityInformation-r5-IEs, + v690NonCriticalExtensions SEQUENCE { + utranMobilityInformation-v690ext UtranMobilityInformation-v690ext-IEs, + v860NonCriticalExtentions SEQUENCE { + utranMobilityInformation-v860ext UTRANMobilityInformation-v860ext1-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r7 SEQUENCE{ + utranMobilityInformation-r7 UTRANMobilityInformation-r7-IEs, + -- Container for adding non critical extensions after freezing REL-8 + utranMobilityInformation-r7-add-ext BIT STRING OPTIONAL, + v860NonCriticalExtensions SEQUENCE { + utranMobilityInformation-v860ext UTRANMobilityInformation-v860ext2-IEs, + vb50NonCriticalExtentions SEQUENCE { + utranMobilityInformation-vb50ext + UTRANMobilityInformation-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + }, + criticalExtensions CHOICE { + r11 SEQUENCE{ + utranMobilityInformation-r11 UTRANMobilityInformation-r11-IEs, + -- Container for adding non critical extensions after freezing REL-12 + utranMobilityInformation-r11-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } + } + } +} + +UTRANMobilityInformation-r3-IEs ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + ue-ConnTimersAndConstants UE-ConnTimersAndConstants OPTIONAL, + -- CN information elements + cn-InformationInfo CN-InformationInfoFull OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo OPTIONAL, + -- Extension mechanism for non- release99 information + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +UTRANMobilityInformation-v3a0ext-IEs ::= SEQUENCE { + ue-ConnTimersAndConstants-v3a0ext UE-ConnTimersAndConstants-v3a0ext +} + +UTRANMobilityInformation-r5-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo OPTIONAL, + cipheringModeInfo CipheringModeInfo OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + ue-ConnTimersAndConstants UE-ConnTimersAndConstants-r5 OPTIONAL, + -- CN information elements + cn-InformationInfo CN-InformationInfoFull OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL +} + +UtranMobilityInformation-v690ext-IEs ::= SEQUENCE { + -- Core network IEs + primary-plmn-Identity PLMN-Identity OPTIONAL +} + +UTRANMobilityInformation-r7-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + ue-ConnTimersAndConstants UE-ConnTimersAndConstants-r5 OPTIONAL, + -- CN information elements + cn-InformationInfo CN-InformationInfoFull OPTIONAL, + primary-plmn-Identity PLMN-Identity OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL +} + +UTRANMobilityInformation-v860ext1-IEs ::= SEQUENCE { + -- User equipment IEs + -- UE shall take into account the following ue-ConnTimersAndConstants + -- only when ue-ConnTimersAndConstants IE is present in + -- UTRANMobilityInformation-r3-IEs or UTRANMobilityInformation-r5-IEs. + -- Otherwise, UE shall discard it. + ue-ConnTimersAndConstants UE-ConnTimersAndConstants-v860ext +} + +UTRANMobilityInformation-v860ext2-IEs ::= SEQUENCE { + -- User equipment IEs + newPrimary-E-RNTI E-RNTI OPTIONAL, + -- UE shall take into account the following ue-ConnTimersAndConstants + -- only when ue-ConnTimersAndConstants IE is present in + -- UTRANMobilityInformation-r7-IEs. Otherwise, UE shall discard it. + ue-ConnTimersAndConstants UE-ConnTimersAndConstants-v860ext, + -- UTRAN Mobility IEs + dedicatedPriorityInformation DedicatedPriorityInformation OPTIONAL +} + +UTRANMobilityInformation-vb50ext-IEs ::= SEQUENCE { + -- UTRAN Mobility IEs + dedicatedPriorityInformation DedicatedPriorityInformation-r11 OPTIONAL +} + +UTRANMobilityInformation-r11-IEs ::= SEQUENCE { + -- User equipment IEs + integrityProtectionModeInfo IntegrityProtectionModeInfo-r7 OPTIONAL, + cipheringModeInfo CipheringModeInfo-r7 OPTIONAL, + new-U-RNTI U-RNTI OPTIONAL, + new-C-RNTI C-RNTI OPTIONAL, + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + ue-ConnTimersAndConstants UE-ConnTimersAndConstants-r11 OPTIONAL, + -- CN information elements + cn-InformationInfo CN-InformationInfoFull OPTIONAL, + primary-plmn-Identity PLMN-Identity OPTIONAL, + -- UTRAN mobility IEs + ura-Identity URA-Identity OPTIONAL, + supportForChangeOfUE-Capability BOOLEAN OPTIONAL, + dedicatedPriorityInformation DedicatedPriorityInformation-r11 OPTIONAL, + -- Radio bearer IEs + dl-CounterSynchronisationInfo DL-CounterSynchronisationInfo-r5 OPTIONAL +} + +-- *************************************************** +-- +-- UTRAN MOBILITY INFORMATION CONFIRM +-- +-- *************************************************** + +UTRANMobilityInformationConfirm ::= SEQUENCE { + -- User equipment IEs + rrc-TransactionIdentifier RRC-TransactionIdentifier, + ul-IntegProtActivationInfo IntegrityProtActivationInfo OPTIONAL, + -- Radio bearer IEs + count-C-ActivationTime ActivationTime OPTIONAL, + -- dummy is not used in this version of the specification and + -- it should be ignored by the receiver. + dummy RB-ActivationTimeInfoList OPTIONAL, + ul-CounterSynchronisationInfo UL-CounterSynchronisationInfo OPTIONAL, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + utranMobilityInformationConfirm-r3-add-ext BIT STRING OPTIONAL, + v770NonCriticalExtension SEQUENCE { + utranMobilityInformationConfirm-v770ext + UTRANMobilityInformationConfirm-v770ext-IEs, + va40NonCriticalExtensions SEQUENCE { + utranMobilityInformationConfirm-va40ext + UTRANMobilityInformationConfirm-va40ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +UTRANMobilityInformationConfirm-v770ext-IEs ::= SEQUENCE { + deferredMeasurementControlReading ENUMERATED { true } OPTIONAL +} + +UTRANMobilityInformationConfirm-va40ext-IEs ::= SEQUENCE { + loggedMeasAvailable ENUMERATED { true } OPTIONAL +} + +-- *************************************************** +-- +-- UTRAN MOBILITY INFORMATION FAILURE +-- +-- *************************************************** + +UTRANMobilityInformationFailure ::= SEQUENCE { + -- UE information elements + rrc-TransactionIdentifier RRC-TransactionIdentifier, + failureCause FailureCauseWithProtErr, + laterNonCriticalExtensions SEQUENCE { + -- Container for additional R99 extensions + utranMobilityInformationFailure-r3-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +-- *************************************************** +-- +-- MBMS ACCESS INFORMATION +-- +-- *************************************************** + +MBMSAccessInformation ::= SEQUENCE { + -- Access Information IEs + mbms-ServiceAccessInfoList MBMS-ServiceAccessInfoList-r6, + -- Non critical extensions + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +-- *************************************************** +-- +-- MBMS COMMON PTM RB INFORMATION +-- +-- *************************************************** + +MBMSCommonPTMRBInformation ::= SEQUENCE { + -- Common PTM RB Information IEs + mbms-CommonRBInformationList MBMS-CommonRBInformationList-r6, + mbms-TranspChInfoForEachTrCh MBMS-TranspChInfoForEachTrCh-r6, + mbms-TranspChInfoForEachCCTrCh MBMS-TranspChInfoForEachCCTrCh-r6 OPTIONAL, + -- For FDD and TDD 3.84Mcps in a cell operating in MBSFN only mode and for TDD 7.68Mcps the + -- IE mbms-PhyChInformationList shall be ignored. + mbms-PhyChInformationList MBMS-PhyChInformationList-r6, + -- Non critical extensions + v770NonCriticalExtensions SEQUENCE { + mbmsCommonPTMRBInformation-v770ext + MBMSCommonPTMRBInformation-v770ext-IEs, + v780NonCriticalExtensions SEQUENCE { + mbmsCommonPTMRBInformation-v780ext + MBMSCommonPTMRBInformation-v780ext-IEs, + v860NonCriticalExtensions SEQUENCE { + mbmsCommonPTMRBInformation-v860ext + MBMSCommonPTMRBInformation-v860ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +MBMSCommonPTMRBInformation-v770ext-IEs ::= SEQUENCE { + -- TABULAR: CHOICE mode == "FDD or TDD" + mbms-PhyChInformationList-r7 MBMS-PhyChInformationList-r7 OPTIONAL +} + +MBMSCommonPTMRBInformation-v780ext-IEs ::= SEQUENCE { + mbsfn-TDDInformation-LCR MBSFN-TDDInformation-LCR OPTIONAL +} + +MBMSCommonPTMRBInformation-v860ext-IEs ::= SEQUENCE { + -- TABULAR: CHOICE mode == "3.84 Mcps TDD IMB" + mbms-PhyChInformationList MBMS-PhyChInformationList-IMB384 OPTIONAL +} + +-- *************************************************** +-- +-- MBMS CURRENT CELL PTM RB INFORMATION +-- +-- *************************************************** + +MBMSCurrentCellPTMRBInformation ::= SEQUENCE { + -- Current Cell PTM RB Information IEs + mbms-CurrentCell-SCCPCHList MBMS-CurrentCell-SCCPCHList-r6 OPTIONAL, + mbms-SIBType5-SCCPCHList MBMS-SIBType5-SCCPCHList-r6 OPTIONAL, + -- Non critical extensions + v770NonCriticalExtensions SEQUENCE { + mbmsCurrentCellPTMRBInfo-v770ext + MBMSCurrentCellPTMRBInfo-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +MBMSCurrentCellPTMRBInfo-v770ext-IEs ::= SEQUENCE { + mbsfn-TDM-Info-List MBSFN-TDM-Info-List OPTIONAL +} + +-- *************************************************** +-- +-- MBMS GENERAL INFORMATION +-- +-- *************************************************** + +MBMSGeneralInformation ::= SEQUENCE { + -- MBMS General Information IEs + mbms-PreferredFrequencyInfo MBMS-PreferredFrequencyList-r6 OPTIONAL, + mbms-TimersAndCounters MBMS-TimersAndCounters-r6, + michConfigurationInfo MBMS-MICHConfigurationInfo-r6, + cellGroupIdentity MBMS-CellGroupIdentity-r6, + mschDefaultConfigurationInfo MBMS-MSCH-ConfigurationInfo-r6 OPTIONAL, + -- Non critical extensions + v6b0NonCriticalExtensions SEQUENCE { + mbmsGeneralInformation-v6b0ext MBMSGeneralInformation-v6b0ext-IEs, + v770NonCriticalExtensions SEQUENCE { + mbmsGeneralInformation-v770ext MBMSGeneralInformation-v770ext-IEs, + v860NonCriticalExtensions SEQUENCE { + mbmsGeneralInformation-v860ext MBMSGeneralInformation-v860ext-IEs, + v890NoncriticalExtensions SEQUENCE { + mbmsGeneralInformation-v890ext MBMSGeneralInformation-v890ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +MBMSGeneralInformation-v6b0ext-IEs ::= SEQUENCE { + indicateChangeInSelectedServices BOOLEAN +} + +MBMSGeneralInformation-v770ext-IEs ::= SEQUENCE { + mbmsMICHConfiguration MBMS-MICHConfigurationInfo-v770ext OPTIONAL, + mbsfnInterFrequencyNeighbourList + MBSFN-InterFrequencyNeighbourList-r7 OPTIONAL +} + +MBMSGeneralInformation-v860ext-IEs ::= SEQUENCE { + mbsfnInterFrequencyNeighbourList + MBSFN-InterFrequencyNeighbourList-v860ext OPTIONAL +} + +MBMSGeneralInformation-v890ext-IEs ::= SEQUENCE { + mbmsNetworkStandardTimeInformation-LCR + MBMS-NetworkStandardTimeInformation-LCR-v890ext OPTIONAL, + mbmsMICHConfiguration MBMS-MICHConfigurationInfo-v890ext OPTIONAL +} + +-- *************************************************** +-- +-- MBMS MODIFICATION REQUEST +-- +-- *************************************************** + +MBMSModificationRequest ::= SEQUENCE { + -- MBMS Modification Request IEs + mbms-PreferredFreqRequest MBMS-ServiceIdentity-r6 OPTIONAL, + rb-InformationReleaseList RB-InformationReleaseList OPTIONAL, + -- Non critical extensions + v6b0NonCriticalExtensions SEQUENCE { + mbmsModificationRequest-v6b0ext MBMSModificationRequest-v6b0ext-IEs, + v6f0NonCriticalExtensions SEQUENCE { + mbmsModificationRequest-v6f0ext MBMSModificationRequest-v6f0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +MBMSModificationRequest-v6b0ext-IEs ::= SEQUENCE { + mbmsSelectedServiceInfo MBMS-SelectedServiceInfo +} + +MBMSModificationRequest-v6f0ext-IEs ::= SEQUENCE { + mbmsSupportOfServiceChangeForAPtpRB ENUMERATED { true } OPTIONAL +} + +-- *************************************************** +-- +-- MBMS MODIFIED SERVICES INFORMATION +-- +-- *************************************************** + +MBMSModifiedServicesInformation ::= SEQUENCE { + -- MBMS Modified Services Information IEs + modifedServiceList MBMS-ModifedServiceList-r6 OPTIONAL, + mbms-ReacquireMCCH ENUMERATED { true } OPTIONAL, + mbms-DynamicPersistenceLevel DynamicPersistenceLevel OPTIONAL, + endOfModifiedMCCHInformation INTEGER (1..16) OPTIONAL, + mbmsNumberOfNeighbourCells MBMS-NumberOfNeighbourCells-r6, + mbms-AllUnmodifiedPTMServices ENUMERATED { true } OPTIONAL, + mbms-PTMActivationTime MBMS-PTMActivationTime-r6 OPTIONAL, + -- Non critical extensions + v770NonCriticalExtensions SEQUENCE { + mbmsModifiedServicesInformation-v770ext + MBMSModifiedServicesInformation-v770ext-IEs, + v7c0NonCriticalExtensions SEQUENCE { + mbmsModifiedServicesInformation-v7c0ext + MBMSModifiedServicesInformation-v7c0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +MBMSModifiedServicesInformation-v770ext-IEs ::= SEQUENCE { + modifiedServiceList MBMS-ModifiedServiceList-v770ext OPTIONAL, + mib-ValueTag MIB-ValueTag OPTIONAL +} + +MBMSModifiedServicesInformation-v7c0ext-IEs ::= SEQUENCE { + modifiedServiceList MBMS-ModifiedServiceList-LCR-v7c0ext OPTIONAL +} + +-- *************************************************** +-- +-- MBMS NEIGHBOURING CELL PTM RB INFORMATION +-- +-- *************************************************** + +MBMSNeighbouringCellPTMRBInformation ::= SEQUENCE { + -- MBMS Neighbouring Cell PTM RB Information IEs + neighbouringCellIdentity IntraFreqCellID, + neighbouringCellSCCPCHList MBMS-NeighbouringCellSCCPCHList-r6, + -- Non critical extensions + v770NonCriticalExtensions SEQUENCE { + mbmsNeighbouringCellPTMRBInformation-v770ext + MBMSNeighbouringCellPTMRBInformation-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +MBMSNeighbouringCellPTMRBInformation-v770ext-IEs ::= SEQUENCE { + -- The "choice_PhyCH" in the tabular is realized by using the following IE due to the + -- constraint in the ASN.1 implementation. + neighbouringCellSCCPCHList MBMS-NeighbouringCellSCCPCHList-v770ext OPTIONAL +} + + +-- *************************************************** +-- +-- MBMS SCHEDULING INFORMATION +-- +-- *************************************************** + +MBMSSchedulingInformation ::= SEQUENCE { + -- MBMS Scheduling Information IEs + serviceSchedulingInfoList MBMS-ServiceSchedulingInfoList-r6, + -- Non critical extensions + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +-- *************************************************** +-- +-- MBMS UNMODIFIED SERVICES INFORMATION +-- +-- *************************************************** + +MBMSUnmodifiedServicesInformation ::= SEQUENCE { + -- MBMS Unmodified Services Information IEs + unmodifiedServiceList MBMS-UnmodifiedServiceList-r6 OPTIONAL, + -- Non critical extensions + v770NonCriticalExtensions SEQUENCE { + mbmsUnmodifiedServicesInformation-v770ext + MBMSUnmodifiedServicesInformation-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +MBMSUnmodifiedServicesInformation-v770ext-IEs ::= SEQUENCE { + unmodifiedServiceList MBMS-UnmodifiedServiceList-v770ext OPTIONAL +} + +-- *************************************************** +-- +-- System Information Container +-- +-- *************************************************** + +System-Information-Container ::= SEQUENCE { + mib OCTET STRING (CONTAINING MasterInformationBlock), + sysInfoTypeSB1 OCTET STRING (CONTAINING SysInfoTypeSB1) OPTIONAL, + sysInfoTypeSB2 OCTET STRING (CONTAINING SysInfoTypeSB2) OPTIONAL, + sysInfoType1 OCTET STRING (CONTAINING SysInfoType1), + sysInfoType3 OCTET STRING (CONTAINING SysInfoType3), + sysInfoType5 OCTET STRING (CONTAINING SysInfoType5), + sysInfoType7 OCTET STRING (CONTAINING SysInfoType7), + sysInfoType11 OCTET STRING (CONTAINING SysInfoType11) OPTIONAL, + sysInfoType11bis OCTET STRING (CONTAINING SysInfoType11bis) OPTIONAL, + sysInfoType12 OCTET STRING (CONTAINING SysInfoType12) OPTIONAL, + vb50NonCriticalExtensions SEQUENCE { + system-Information-Container-vb50ext System-Information-Container-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +System-Information-Container-vb50ext-IEs ::= SEQUENCE { + sysInfoType22 OCTET STRING (CONTAINING SysInfoType22) OPTIONAL +} + +-- *************************************************** +-- +-- LOGGING MEASUREMENT CONFIGURATION +-- +-- *************************************************** + +LoggingMeasurementConfiguration ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r10 SEQUENCE { + loggingMeasurementConfiguration-r10-IEs LoggingMeasurementConfiguration-r10-IEs, + -- Container for additional R10 extensions + loggingMeasurementConfiguration-r10-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions CHOICE { + r11 SEQUENCE { + loggingMeasurementConfiguration-r11-IEs LoggingMeasurementConfiguration-r11-IEs, + loggingMeasurementConfiguration-r11-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } +} + +LoggingMeasurementConfiguration-r10-IEs ::= SEQUENCE { + loggedMeasurementsConfigurationInfo LoggedMeasurementsConfigurationInfo OPTIONAL, + loggedANRConfigurationInfo LoggedANRConfigurationInfo OPTIONAL +} + +LoggingMeasurementConfiguration-r11-IEs ::= SEQUENCE { + loggedMeasurementsConfigurationInfo LoggedMeasurementsConfigurationInfo-r11 OPTIONAL, + loggedANRConfigurationInfo LoggedANRConfigurationInfo OPTIONAL +} + +-- *************************************************** +-- +-- UE INFORMATION RESPONSE +-- +-- *************************************************** + +UEInformationResponse ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + loggedMeasReport LoggedMeasReport OPTIONAL, + loggedANRReportInfoList LoggedANRReportInfoList OPTIONAL, + vb50NonCriticalExtensions SEQUENCE { + ueInformationResponse-vb50ext UEInformationResponse-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +UEInformationResponse-vb50ext-IEs ::= SEQUENCE { + loggedMeasReport LoggedMeasReport-vb50ext OPTIONAL, + connectionEstablishmentFailureReport + ConnectionEstablishmentFailureReport OPTIONAL, + loggedANRReportInfoList LoggedANRReportInfoList-vb50ext OPTIONAL +} + +-- *************************************************** +-- +-- UE INFORMATION REQUEST +-- +-- *************************************************** + +UEInformationRequest ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + criticalExtensions CHOICE { + r10 SEQUENCE { + ueInformationRequest-r10 UEInformationRequest-r10-IEs, + -- Container for additional R10 extensions + ueInformationRequest-r10-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions CHOICE { + r11 SEQUENCE { + ueInformationRequest-r11 UEInformationRequest-r11-IEs, + -- Container for additional R11 extensions + ueInformationRequest-r11-add-ext BIT STRING OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL + }, + criticalExtensions SEQUENCE {} + } + } +} + +UEInformationRequest-r10-IEs ::= SEQUENCE { + loggedMeasReportRequest ENUMERATED { true } OPTIONAL, + loggedANRReportRequest ENUMERATED { true } OPTIONAL +} + +UEInformationRequest-r11-IEs ::= SEQUENCE { + loggedMeasReportRequest ENUMERATED { true } OPTIONAL, + loggedANRReportRequest ENUMERATED { true } OPTIONAL, + connectionEstablishmentFailureRequest ENUMERATED { true } OPTIONAL +} + +-- *************************************************** +-- +-- CORE NETWORK INFORMATION ELEMENTS (10.3.1) +-- +-- *************************************************** + +Ansi-41-IDNNS ::= BIT STRING (SIZE (14)) + +CN-DomainIdentity ::= ENUMERATED { + cs-domain, + ps-domain } + +CN-DomainInformation ::= SEQUENCE { + cn-DomainIdentity CN-DomainIdentity, + cn-DomainSpecificNAS-Info NAS-SystemInformationGSM-MAP +} + +CN-DomainInformationFull ::= SEQUENCE { + cn-DomainIdentity CN-DomainIdentity, + cn-DomainSpecificNAS-Info NAS-SystemInformationGSM-MAP, + cn-DRX-CycleLengthCoeff CN-DRX-CycleLengthCoefficient +} + +CN-DomainInformationList ::= SEQUENCE (SIZE (1..maxCNdomains)) OF + CN-DomainInformation + +CN-DomainInformationListFull ::= SEQUENCE (SIZE (1..maxCNdomains)) OF + CN-DomainInformationFull + +CN-DomainSysInfo ::= SEQUENCE { + cn-DomainIdentity CN-DomainIdentity, + cn-Type CHOICE { + gsm-MAP NAS-SystemInformationGSM-MAP, + ansi-41 NAS-SystemInformationANSI-41 + }, + cn-DRX-CycleLengthCoeff CN-DRX-CycleLengthCoefficient +} + +CN-DomainSysInfoList ::= SEQUENCE (SIZE (1..maxCNdomains)) OF + CN-DomainSysInfo + +CN-InformationInfo ::= SEQUENCE { + plmn-Identity PLMN-Identity OPTIONAL, + cn-CommonGSM-MAP-NAS-SysInfo NAS-SystemInformationGSM-MAP OPTIONAL, + cn-DomainInformationList CN-DomainInformationList OPTIONAL +} + +CN-InformationInfo-r6 ::= SEQUENCE { + plmn-Identity PLMN-Identity OPTIONAL, + cn-CommonGSM-MAP-NAS-SysInfo NAS-SystemInformationGSM-MAP OPTIONAL, + cn-DomainInformationList CN-DomainInformationList OPTIONAL, + primary-plmn-Identity PLMN-Identity OPTIONAL +} + +CN-InformationInfoFull ::= SEQUENCE { + plmn-Identity PLMN-Identity OPTIONAL, + cn-CommonGSM-MAP-NAS-SysInfo NAS-SystemInformationGSM-MAP OPTIONAL, + cn-DomainInformationListFull CN-DomainInformationListFull OPTIONAL +} + +Digit ::= INTEGER (0..9) + +DomainSpecificEAB-Parameters ::= SEQUENCE { + cs-DomainSpecificEAB-Parameters EAB-Configuration OPTIONAL, + ps-DomainSpecificEAB-Parameters EAB-Configuration OPTIONAL, + commonEAB-Parameters EAB-Configuration OPTIONAL +} + +EAB-AccessClassBarredList ::= SEQUENCE (SIZE (10)) OF + AccessClassBarred + +EAB-Configuration ::= SEQUENCE { + eab-Category ENUMERATED {a,b,c}, + eab-AccessClassBarredList EAB-AccessClassBarredList +} + +EAB-Parameters ::= CHOICE { + eab-ParametersPerPLMN-List EAB-ParametersPerPLMN-List, + eab-ParametersForAll DomainSpecificEAB-Parameters +} + +EAB-ParametersPerPLMN ::= SEQUENCE { + domainSpecificEAB-Parameters DomainSpecificEAB-Parameters OPTIONAL +} + +EAB-ParametersPerPLMN-List ::= SEQUENCE (SIZE (1..6)) OF EAB-ParametersPerPLMN + +Ec-N0forANR ::= SEQUENCE { + ec-N0 INTEGER (-24..0) OPTIONAL +} + +Gsm-map-IDNNS ::= SEQUENCE { + routingbasis CHOICE { + localPTMSI SEQUENCE { + routingparameter RoutingParameter + }, + tMSIofsamePLMN SEQUENCE { + routingparameter RoutingParameter + }, + tMSIofdifferentPLMN SEQUENCE { + routingparameter RoutingParameter + }, + iMSIresponsetopaging SEQUENCE { + routingparameter RoutingParameter + }, + iMSIcauseUEinitiatedEvent SEQUENCE { + routingparameter RoutingParameter + }, + iMEI SEQUENCE { + routingparameter RoutingParameter + }, + spare2 SEQUENCE { + routingparameter RoutingParameter + }, + spare1 SEQUENCE { + routingparameter RoutingParameter + } + }, + -- dummy is not used in this version of the specification and + -- it should be ignored by the receiver. + dummy BOOLEAN +} + +IMEI ::= SEQUENCE (SIZE (15)) OF + IMEI-Digit + +IMEI-Digit ::= INTEGER (0..15) + +IMSI-GSM-MAP ::= SEQUENCE (SIZE (6..21)) OF + Digit + +IntraDomainNasNodeSelector ::= SEQUENCE { + version CHOICE { + release99 SEQUENCE { + cn-Type CHOICE { + gsm-Map-IDNNS Gsm-map-IDNNS, + ansi-41-IDNNS Ansi-41-IDNNS + } + }, + later SEQUENCE { + futurecoding BIT STRING (SIZE (15)) + } + } +} + +LAI ::= SEQUENCE { + plmn-Identity PLMN-Identity, + lac BIT STRING (SIZE (16)) +} + +LocationRegistrationAccessClassBarredList ::= SEQUENCE (SIZE (15)) OF + AccessClassBarred + +LocationRegistrationParameters ::= CHOICE { + noRestriction NULL, + restriction LocationRegistrationAccessClassBarredList +} + +MCC ::= SEQUENCE (SIZE (3)) OF + Digit + +MNC ::= SEQUENCE (SIZE (2..3)) OF + Digit + +MultiplePLMN-List-r6 ::= SEQUENCE { + mibPLMN-Identity BOOLEAN, + multiplePLMNs SEQUENCE (SIZE (1..5)) OF + PLMN-IdentityWithOptionalMCC-r6 +} + +NAS-Message ::= OCTET STRING (SIZE (1..4095)) + +NAS-Synchronisation-Indicator ::= BIT STRING(SIZE(4)) + +NAS-SystemInformationGSM-MAP ::= OCTET STRING (SIZE (1..8)) + +P-TMSI-GSM-MAP ::= BIT STRING (SIZE (32)) + +PagingPermissionWithAccessControlForSharedNetwork ::= CHOICE { + pagingPermissionWithAccessControlList PagingPermissionWithAccessControlList, + pagingPermissionWithAccessControlForAll PagingPermissionWithAccessControlParameters +} + +PagingPermissionWithAccessControlList ::= SEQUENCE { + pagingPermissionWithAccessControlParametersForOperator1 + PagingPermissionWithAccessControlParameters OPTIONAL, + pagingPermissionWithAccessControlParametersForOperator2 + PagingPermissionWithAccessControlParameters OPTIONAL, + pagingPermissionWithAccessControlParametersForOperator3 + PagingPermissionWithAccessControlParameters OPTIONAL, + pagingPermissionWithAccessControlParametersForOperator4 + PagingPermissionWithAccessControlParameters OPTIONAL, + pagingPermissionWithAccessControlParametersForOperator5 + PagingPermissionWithAccessControlParameters OPTIONAL +} + +PagingPermissionWithAccessControlParameters ::= SEQUENCE { + pagingResponseRestrictionIndicator ENUMERATED {all, cS, pS, none}, + locationRegistrationRestrictionIndicator ENUMERATED {all, cS, pS}, + locationRegistration LocationRegistrationParameters +} + +PagingRecordTypeID ::= ENUMERATED { + imsi-GSM-MAP, + tmsi-GSM-MAP-P-TMSI, + imsi-DS-41, + tmsi-DS-41 } + +PLMN-Identity ::= SEQUENCE { + mcc MCC, + mnc MNC +} + +PLMN-IdentityWithOptionalMCC-r6 ::= SEQUENCE { + mcc MCC OPTIONAL, + mnc MNC +} + +PLMN-Type ::= CHOICE { + gsm-MAP SEQUENCE { + plmn-Identity PLMN-Identity + }, + ansi-41 SEQUENCE { + p-REV P-REV, + min-P-REV Min-P-REV, + sid SID, + nid NID + }, + gsm-MAP-and-ANSI-41 SEQUENCE { + plmn-Identity PLMN-Identity, + p-REV P-REV, + min-P-REV Min-P-REV, + sid SID, + nid NID + }, + spare NULL +} + +RAB-Identity ::= CHOICE { + gsm-MAP-RAB-Identity BIT STRING (SIZE (8)), + ansi-41-RAB-Identity BIT STRING (SIZE (8)) +} + +RAI ::= SEQUENCE { + lai LAI, + rac RoutingAreaCode +} + +RoutingAreaCode ::= BIT STRING (SIZE (8)) + +RoutingParameter ::= BIT STRING (SIZE (10)) + +TMSI-GSM-MAP ::= BIT STRING (SIZE (32)) + +-- *************************************************** +-- +-- UTRAN MOBILITY INFORMATION ELEMENTS (10.3.2) +-- +-- *************************************************** + +AccessClassBarred ::= ENUMERATED { + barred, notBarred } + +AccessClassBarredList ::= SEQUENCE (SIZE (maxAC)) OF + AccessClassBarred + +AllowedIndicator ::= ENUMERATED { + allowed, notAllowed } + +CellAccessRestriction ::= SEQUENCE { + cellBarred CellBarred, + cellReservedForOperatorUse ReservedIndicator, + cellReservationExtension ReservedIndicator, + -- NOTE: IE accessClassBarredList should not be included if the IE CellAccessRestriction + -- is included in the IE SysInfoType4 + accessClassBarredList AccessClassBarredList OPTIONAL +} + +CellAccessRestriction-v870ext ::= SEQUENCE { + cellReservedForCSG ENUMERATED { true } OPTIONAL +} + +CellBarred ::= CHOICE { + barred SEQUENCE { + intraFreqCellReselectionInd AllowedIndicator, + t-Barred T-Barred + }, + notBarred NULL +} + +CellIdentity ::= BIT STRING (SIZE (28)) + +CellIdentity-PerRL-List ::= SEQUENCE (SIZE (1..maxRL)) OF CellIdentity + +CellIDListItem ::= SEQUENCE { + cell-Identity CellIdentity, + plmn-Identity PLMN-Identity OPTIONAL +} + +CellSelectReselectInfoSIB-3-4 ::= SEQUENCE { + mappingInfo MappingInfo OPTIONAL, + cellSelectQualityMeasure CHOICE { + cpich-Ec-N0 SEQUENCE { + -- Default value for q-HYST-2-S is q-HYST-1-S + q-HYST-2-S Q-Hyst-S OPTIONAL + }, + cpich-RSCP NULL + }, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + s-Intrasearch S-SearchQual OPTIONAL, + s-Intersearch S-SearchQual OPTIONAL, + s-SearchHCS S-SearchRXLEV OPTIONAL, + rat-List RAT-FDD-InfoList OPTIONAL, + q-QualMin Q-QualMin, + q-RxlevMin Q-RxlevMin + }, + tdd SEQUENCE { + s-Intrasearch S-SearchRXLEV OPTIONAL, + s-Intersearch S-SearchRXLEV OPTIONAL, + s-SearchHCS S-SearchRXLEV OPTIONAL, + rat-List RAT-TDD-InfoList OPTIONAL, + q-RxlevMin Q-RxlevMin + } + }, + q-Hyst-l-S Q-Hyst-S, + t-Reselection-S T-Reselection-S, + hcs-ServingCellInformation HCS-ServingCellInformation OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power +} + +CSG-DedicatedFrequencyInfoList ::= SEQUENCE (SIZE (1..maxDedicatedCSGFreq)) OF + FrequencyInfo + +CSG-Identity ::= BIT STRING (SIZE (27)) + +CSG-PSCSplitInfo ::= SEQUENCE { + -- Actual value = IE value * 8 + startPSC INTEGER (0..63), + numberOfPSCs ENUMERATED { psc5, psc10, psc15, psc20, + psc30, psc40, psc50, psc64, psc80, + psc120, psc160, psc256, alltheRest, + spare3, spare2, spare1 }, + -- Actual value = IE value * 8 + pscRange2Offset INTEGER (1..63) OPTIONAL +} + +DomainSpecificAccessRestrictionForSharedNetwork-v670ext ::= CHOICE { + domainSpecificAccessRestictionList DomainSpecificAccessRestrictionList-v670ext, + domainSpecificAccessRestictionParametersForAll + DomainSpecificAccessRestrictionParam-v670ext +} + +DomainSpecificAccessRestrictionList-v670ext ::= SEQUENCE { + domainSpecificAccessRestrictionParametersForOperator1 + DomainSpecificAccessRestrictionParam-v670ext OPTIONAL, + domainSpecificAccessRestrictionParametersForOperator2 + DomainSpecificAccessRestrictionParam-v670ext OPTIONAL, + domainSpecificAccessRestrictionParametersForOperator3 + DomainSpecificAccessRestrictionParam-v670ext OPTIONAL, + domainSpecificAccessRestrictionParametersForOperator4 + DomainSpecificAccessRestrictionParam-v670ext OPTIONAL, + domainSpecificAccessRestrictionParametersForOperator5 + DomainSpecificAccessRestrictionParam-v670ext OPTIONAL +} + +DomainSpecificAccessRestrictionParam-v670ext ::= SEQUENCE { + cSDomainSpecificAccessRestriction DomainSpecificAccessRestriction-v670ext, + pSDomainSpecificAccessRestriction DomainSpecificAccessRestriction-v670ext +} + +DomainSpecificAccessRestriction-v670ext ::= CHOICE { + noRestriction NULL, + restriction SEQUENCE { + domainSpecficAccessClassBarredList AccessClassBarredList OPTIONAL + } +} + +MapParameter ::= INTEGER (0..127) + +Mapping ::= SEQUENCE { + rat RAT, + mappingFunctionParameterList MappingFunctionParameterList +} + +Mapping-LCR-r4 ::= SEQUENCE { + mappingFunctionParameterList MappingFunctionParameterList +} + +MappingFunctionParameter ::= SEQUENCE { + functionType MappingFunctionType, + mapParameter1 MapParameter OPTIONAL, + mapParameter2 MapParameter, + -- The presence of upperLimit is conditional on the number of repetition + upperLimit UpperLimit OPTIONAL +} + +MappingFunctionParameterList ::= SEQUENCE (SIZE (1..maxMeasIntervals)) OF + MappingFunctionParameter + +MappingFunctionType ::= ENUMERATED { + linear, + functionType2, + functionType3, + functionType4 } + +-- In MappingInfo list, mapping for FDD and 3.84Mcps TDD is defined. +-- For 1.28Mcps TDD, Mapping-LCR-r4 is used instead. +MappingInfo ::= SEQUENCE (SIZE (1..maxRAT)) OF + Mapping + +OccurrenceSequenceNumberOfPICH ::= INTEGER (1..maxSCCPCH) + +DedicatedPriorityInformation ::= SEQUENCE { + action CHOICE { + clearDedicatedPriorities NULL, + configureDedicatedPriorities SEQUENCE { + t-322 T-322 OPTIONAL, + priorityLevelList PriorityLevelList OPTIONAL, + eutraDetection BOOLEAN + } + } +} + +DedicatedPriorityInformation-r11 ::= SEQUENCE { + action CHOICE { + clearDedicatedPriorities NULL, + configureDedicatedPriorities SEQUENCE { + t-322 T-322 OPTIONAL, + priorityLevelList PriorityLevelList-r11 OPTIONAL, + eutraDetection BOOLEAN + } + } +} + +PriorityLevel ::= SEQUENCE { + priority INTEGER (0..maxPrio-1) OPTIONAL, + radioAccessTechnology CHOICE { + utraFDD SEQUENCE (SIZE (1..maxNumFDDFreqs)) OF SEQUENCE{ + uarfcn UARFCN + }, + utraTDD SEQUENCE (SIZE (1..maxNumTDDFreqs)) OF SEQUENCE{ + uarfcn UARFCN + }, + eutra SEQUENCE (SIZE (1..maxNumEUTRAFreqs)) OF SEQUENCE{ + earfcn EARFCN + }, + gsm SEQUENCE { + gsm-CellGroup GSM-CellGroup + } + } +} + +PriorityLevel-r11 ::= SEQUENCE { + priority INTEGER (0..maxPrio-1) OPTIONAL, + radioAccessTechnology CHOICE { + utraFDD SEQUENCE (SIZE (1..maxNumFDDFreqs)) OF SEQUENCE{ + uarfcn UARFCN + }, + utraTDD SEQUENCE (SIZE (1..maxNumTDDFreqs)) OF SEQUENCE{ + uarfcn UARFCN + }, + eutra SEQUENCE (SIZE (1..maxNumEUTRAFreqs)) OF + EARFCNRange, + gsm SEQUENCE { + gsm-CellGroup GSM-CellGroup + } + } +} + +PriorityLevelList ::= SEQUENCE (SIZE (1..maxPrio)) OF + PriorityLevel + +PriorityLevelList-r11 ::= SEQUENCE (SIZE (1..maxPrio)) OF + PriorityLevel-r11 + +-- Actual value Q-Hyst-S = IE value * 2 +Q-Hyst-S ::= INTEGER (0..20) + +Q-Hyst-S-Fine ::= INTEGER (0..40) + +RAT ::= ENUMERATED { + utra-FDD, + utra-TDD, + gsm, + cdma2000 } + +RAT-FDD-Info ::= SEQUENCE { + rat-Identifier RAT-Identifier, + s-SearchRAT S-SearchQual, + s-HCS-RAT S-SearchRXLEV OPTIONAL, + s-Limit-SearchRAT S-SearchQual +} + +RAT-FDD-InfoList ::= SEQUENCE (SIZE (1..maxOtherRAT)) OF + RAT-FDD-Info + +RAT-Identifier ::= ENUMERATED { + gsm, cdma2000 } + +RAT-TDD-Info ::= SEQUENCE { + rat-Identifier RAT-Identifier, + s-SearchRAT S-SearchRXLEV, + s-HCS-RAT S-SearchRXLEV OPTIONAL, + s-Limit-SearchRAT S-SearchRXLEV +} + +RAT-TDD-InfoList ::= SEQUENCE (SIZE (1..maxOtherRAT)) OF + RAT-TDD-Info + +ReservedIndicator ::= ENUMERATED { + reserved, + notReserved } + +-- Actual value S-SearchQual = IE value * 2 +S-SearchQual ::= INTEGER (-16..10) + +-- Actual value S-SearchRXLEV = (IE value * 2) + 1 +S-SearchRXLEV ::= INTEGER (-53..45) + +-- Actual value ScalingFactor = IE value * 0.1 +SpeedDependentScalingFactor ::= INTEGER (0..10) + +T-Barred ::= ENUMERATED { + s10, s20, s40, s80, + s160, s320, s640, s1280 } + +T-Reselection-S ::= INTEGER (0..31) + +-- Actual value T-Reselection-S-Fine = IE value * 0.2 +T-Reselection-S-Fine ::= INTEGER (0..31) + +-- Actual value ScalingFactor = IE value * 0.25 +TreselectionScalingFactor ::= INTEGER (4..19) + +-- Actual value ScalingFactor2 = IE value * 0.25 +TreselectionScalingFactor2 ::= INTEGER (1..16) + +-- For UpperLimit, the used range depends on the RAT used. +UpperLimit ::= INTEGER (1..91) + +URA-Identity ::= BIT STRING (SIZE (16)) + +URA-IdentityList ::= SEQUENCE (SIZE (1..maxURA)) OF + URA-Identity + +-- *************************************************** +-- +-- USER EQUIPMENT INFORMATION ELEMENTS (10.3.3) +-- +-- *************************************************** + +AccessStratumReleaseIndicator ::= ENUMERATED { + rel-4, rel-5, rel-6, rel-7, rel-8, + rel-9, rel-10, rel-11, spare8, + spare7, spare6, spare5, spare4, spare3, + spare2, spare1 } + +-- TABULAR : for ActivationTime, value 'now' always appear as default, and is encoded +-- by absence of the field +ActivationTime ::= INTEGER (0..255) + +BackoffControlParams ::= SEQUENCE { + n-AP-RetransMax N-AP-RetransMax, + n-AccessFails N-AccessFails, + nf-BO-NoAICH NF-BO-NoAICH, + ns-BO-Busy NS-BO-Busy, + nf-BO-AllBusy NF-BO-AllBusy, + nf-BO-Mismatch NF-BO-Mismatch, + t-CPCH T-CPCH +} + +BandComb ::= INTEGER (1..256) + +C-RNTI ::= BIT STRING (SIZE (16)) + +CapabilityUpdateRequirement ::= SEQUENCE { + ue-RadioCapabilityFDDUpdateRequirement BOOLEAN, + -- ue-RadioCapabilityTDDUpdateRequirement is for 3.84Mcps TDD update requirement + ue-RadioCapabilityTDDUpdateRequirement BOOLEAN, + systemSpecificCapUpdateReqList SystemSpecificCapUpdateReqList OPTIONAL +} + +CapabilityUpdateRequirement-r4-ext ::= SEQUENCE { + ue-RadioCapabilityUpdateRequirement-TDD128 BOOLEAN +} + +CapabilityUpdateRequirement-r4 ::= SEQUENCE { + ue-RadioCapabilityFDDUpdateRequirement-FDD BOOLEAN, + ue-RadioCapabilityTDDUpdateRequirement-TDD384 BOOLEAN, + ue-RadioCapabilityTDDUpdateRequirement-TDD128 BOOLEAN, + systemSpecificCapUpdateReqList SystemSpecificCapUpdateReqList OPTIONAL +} + +CapabilityUpdateRequirement-r5 ::= SEQUENCE { + ue-RadioCapabilityFDDUpdateRequirement-FDD BOOLEAN, + ue-RadioCapabilityTDDUpdateRequirement-TDD384 BOOLEAN, + ue-RadioCapabilityTDDUpdateRequirement-TDD128 BOOLEAN, + systemSpecificCapUpdateReqList SystemSpecificCapUpdateReqList-r5 OPTIONAL +} + +CapabilityUpdateRequirement-v770ext ::= SEQUENCE { + ue-RadioCapabilityTDDUpdateRequirement-TDD768 BOOLEAN +} + +CapabilityUpdateRequirement-r7 ::= SEQUENCE { + ue-RadioCapabilityFDDUpdateRequirement-FDD BOOLEAN, + ue-RadioCapabilityTDDUpdateRequirement-TDD384 BOOLEAN, + ue-RadioCapabilityTDDUpdateRequirement-TDD768 BOOLEAN, + ue-RadioCapabilityTDDUpdateRequirement-TDD128 BOOLEAN, + systemSpecificCapUpdateReqList SystemSpecificCapUpdateReqList-r5 OPTIONAL +} + +CapabilityUpdateRequirement-v860ext ::= SEQUENCE { + -- If both IEs are present, the elements in the IE SystemSpecificCapUpdateReqList-r8 + -- shall be appended to the elements in the IE SystemSpecificCapUpdateReqList + systemSpecificCapUpdateReqList SystemSpecificCapUpdateReqList-r8 OPTIONAL +} + +CapabilityUpdateRequirement-r8 ::= SEQUENCE { + ue-RadioCapabilityFDDUpdateRequirement-FDD BOOLEAN, + ue-RadioCapabilityTDDUpdateRequirement-TDD384 BOOLEAN, + ue-RadioCapabilityTDDUpdateRequirement-TDD768 BOOLEAN, + ue-RadioCapabilityTDDUpdateRequirement-TDD128 BOOLEAN, + systemSpecificCapUpdateReqList SystemSpecificCapUpdateReqList-r8 OPTIONAL +} + +-- If the IE CellUpdateCause has the value 'cellUpdateCause-ext', the actual value is +-- defined in the IE CellUpdateCause-ext. +CellUpdateCause ::= ENUMERATED { + cellReselection, + periodicalCellUpdate, + uplinkDataTransmission, + utran-pagingResponse, + re-enteredServiceArea, + radiolinkFailure, + rlc-unrecoverableError, + cellUpdateCause-ext } + +-- The IE CellUpdateCause-ext shall be present, if the IE CellUpdateCause has the +-- value 'cellUpdateCause-ext'. +-- dummy is not used in this version of the specification, it should not be sent +-- and if received it should be ignored by the receiver. +CellUpdateCause-ext ::= ENUMERATED { + mbms-Reception, + mbms-PTP-RB-Request, + dummy, + spare1 } + + +ChipRateCapability ::= ENUMERATED { + mcps3-84, mcps1-28 } + +CipheringAlgorithm ::= ENUMERATED { + uea0, uea1 } + +CipheringAlgorithm-r7 ::= ENUMERATED { + uea0, uea1, uea2 } + +CipheringModeCommand ::= CHOICE { + startRestart CipheringAlgorithm, + dummy NULL +} + +CipheringModeCommand-r7 ::= SEQUENCE { + startRestart CipheringAlgorithm-r7 +} + +CipheringModeInfo ::= SEQUENCE { + -- TABULAR: The ciphering algorithm is included in the CipheringModeCommand. + cipheringModeCommand CipheringModeCommand, + activationTimeForDPCH ActivationTime OPTIONAL, + rb-DL-CiphActivationTimeInfo RB-ActivationTimeInfoList OPTIONAL +} + +CipheringModeInfo-r7 ::= SEQUENCE { + -- TABULAR: The ciphering algorithm is included in the CipheringModeCommand. + cipheringModeCommand CipheringModeCommand-r7, + activationTimeForDPCH ActivationTime OPTIONAL, + rb-DL-CiphActivationTimeInfo RB-ActivationTimeInfoList OPTIONAL +} + +CN-DRX-CycleLengthCoefficient ::= INTEGER (6..9) + +CN-PagedUE-Identity ::= CHOICE { + imsi-GSM-MAP IMSI-GSM-MAP, + tmsi-GSM-MAP TMSI-GSM-MAP, + p-TMSI-GSM-MAP P-TMSI-GSM-MAP, + imsi-DS-41 IMSI-DS-41, + tmsi-DS-41 TMSI-DS-41, + spare3 NULL, + spare2 NULL, + spare1 NULL +} + +CompressedModeMeasCapability ::= SEQUENCE { + fdd-Measurements BOOLEAN, + -- TABULAR: The IEs tdd-Measurements, gsm-Measurements and multiCarrierMeasurements + -- are made optional since they are conditional based on another information element. + -- Their absence corresponds to the case where the condition is not true. + -- The IE 'tdd-Measurements' applies to either or both TDD 3.84 Mcps and TDD 7.68 Mcps, + -- depending on the RF capability conditions. + tdd-Measurements BOOLEAN OPTIONAL, + gsm-Measurements GSM-Measurements OPTIONAL, + multiCarrierMeasurements BOOLEAN OPTIONAL +} + +CompressedModeMeasCapability-LCR-r4 ::= SEQUENCE { + tdd128-Measurements BOOLEAN OPTIONAL +} + +CompressedModeMeasCapability-v860ext ::= SEQUENCE { + adjacentFrequencyMeasurements ENUMERATED { true } OPTIONAL +} + +CompressedModeMeasCapability-v920ext ::= SEQUENCE { + interBandMeasurements ENUMERATED { true } OPTIONAL +} + +CompressedModeMeasCapability-va40ext ::= SEQUENCE { + enhancedInterFrequencyMeasurements ENUMERATED { true } OPTIONAL, + freqSpecificCompressedMode ENUMERATED { true } OPTIONAL +} + +CompressedModeMeasCapabEUTRA ::= SEQUENCE { + radioFrequencyBandEUTRA RadioFrequencyBandEUTRA, + compressedMode BOOLEAN +} + +CompressedModeMeasCapabEUTRAExt ::=SEQUENCE { + radioFrequencyBandEUTRA RadioFrequencyBandEUTRAExt +} + +CompressedModeMeasCapabEUTRAList ::= SEQUENCE (SIZE (1..maxFreqBandsEUTRA)) OF + CompressedModeMeasCapabEUTRA + +CompressedModeMeasCapabEUTRAList2 ::= SEQUENCE (SIZE (1..maxFreqBandsEUTRA)) OF + CompressedModeMeasCapabEUTRAExt + +CompressedModeMeasCapabFDDList ::= SEQUENCE (SIZE (1..maxFreqBandsFDD)) OF + CompressedModeMeasCapabFDD + +CompressedModeMeasCapabFDDList2 ::= SEQUENCE (SIZE (1..maxFreqBandsFDD)) OF + CompressedModeMeasCapabFDD2 + +CompressedModeMeasCapabFDDList3 ::= SEQUENCE (SIZE (1..maxFreqBandsFDD-ext2)) OF + CompressedModeMeasCapabFDD3 + +CompressedModeMeasCapabFDDList-ext ::= SEQUENCE (SIZE (1..maxFreqBandsFDD)) OF + CompressedModeMeasCapabFDD-ext + +CompressedModeMeasCapabFDD ::= SEQUENCE { + radioFrequencyBandFDD RadioFrequencyBandFDD OPTIONAL, + dl-MeasurementsFDD BOOLEAN, + ul-MeasurementsFDD BOOLEAN +} + +CompressedModeMeasCapabFDD2 ::= SEQUENCE { + -- UE may omit both IEs if this IE indicates the compressed mode capability within the same + -- frequency band. Otherwise, the UE shall include either one of the following OPTIONAL IEs. + radioFrequencyBandFDD RadioFrequencyBandFDD OPTIONAL, + radioFrequencyBandFDD2 RadioFrequencyBandFDD2 OPTIONAL, + dl-MeasurementsFDD BOOLEAN, + ul-MeasurementsFDD BOOLEAN +} + +CompressedModeMeasCapabFDD3 ::= SEQUENCE { + -- UE may omit radioFrequencyBandFDD3 if this IE indicates the compressed mode capability within + -- the same frequency band. Otherwise, the UE shall include the IE. + radioFrequencyBandFDD3 RadioFrequencyBandFDD3 OPTIONAL, + dl-MeasurementsFDD BOOLEAN, + ul-MeasurementsFDD BOOLEAN +} + +CompressedModeMeasCapabFDD-ext ::= SEQUENCE { + radioFrequencyBandFDD2 RadioFrequencyBandFDD2, + dl-MeasurementsFDD BOOLEAN, + ul-MeasurementsFDD BOOLEAN +} + +CompressedModeMeasCapabTDDList ::= SEQUENCE (SIZE (1..maxFreqBandsTDD)) OF + CompressedModeMeasCapabTDD + +CompressedModeMeasCapabTDD ::= SEQUENCE { + radioFrequencyBandTDD RadioFrequencyBandTDD, + dl-MeasurementsTDD BOOLEAN, + ul-MeasurementsTDD BOOLEAN +} + +CompressedModeMeasCapabGSMList ::= SEQUENCE (SIZE (1..maxFreqBandsGSM)) OF + CompressedModeMeasCapabGSM + +CompressedModeMeasCapabGSM ::= SEQUENCE { + radioFrequencyBandGSM RadioFrequencyBandGSM, + dl-MeasurementsGSM BOOLEAN, + ul-MeasurementsGSM BOOLEAN +} + +CompressedModeMeasCapabMC ::= SEQUENCE { + dl-MeasurementsMC BOOLEAN, + ul-MeasurementsMC BOOLEAN +} + +CPCH-Parameters ::= SEQUENCE { + initialPriorityDelayList InitialPriorityDelayList OPTIONAL, + backoffControlParams BackoffControlParams, + -- TABULAR: TPC step size nested inside PowerControlAlgorithm + powerControlAlgorithm PowerControlAlgorithm, + dl-DPCCH-BER DL-DPCCH-BER +} + +CSG-ProximityIndicationCapability ::= SEQUENCE { + supportOfIntraFreqProximityIndication ENUMERATED { true } OPTIONAL, + supportOfInterFreqProximityIndication ENUMERATED { true } OPTIONAL, + supportOfE-UtraProximityIndication ENUMERATED { true } OPTIONAL +} + +DL-CapabilityWithSimultaneousHS-DSCHConfig ::= ENUMERATED{kbps32, kbps64, kbps128, kbps384} + +DL-DPCCH-BER ::= INTEGER (0..63) + +DL-InformationPerSecondaryRL-List ::= SEQUENCE (SIZE (1..maxEDCHRL)) OF + DL-InformationPerSecondaryRL + +DL-InformationPerSecondaryRL ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + cell-id CellIdentity OPTIONAL, + dl-FDPCHInfoPerRL-SecULFreq DL-FDPCH-InfoPerRL-r7, + e-AGCH-Information E-AGCH-Information OPTIONAL, + e-HICH-Information E-HICH-Information OPTIONAL, + e-RGCH-Info CHOICE { + e-RGCH-Information E-RGCH-Information, + releaseIndicator NULL + } OPTIONAL +} + +DL-PhysChCapabilityFDD ::= SEQUENCE { + -- The IE "maxNoDPCH-PDSCH-Codes" only gives information on the maximum number of DPCH Codes. + maxNoDPCH-PDSCH-Codes INTEGER (1..8), + maxNoPhysChBitsReceived MaxNoPhysChBitsReceived, + supportForSF-512 BOOLEAN, + -- dummy and dummy2 are not used in this version of the specification + -- and if received they should be ignored. + dummy BOOLEAN, + dummy2 SimultaneousSCCPCH-DPCH-Reception +} + +DL-PhysChCapabilityFDD-v380ext ::= SEQUENCE { + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SupportOfDedicatedPilotsForChEstimation OPTIONAL +} + +SupportOfDedicatedPilotsForChEstimation ::= ENUMERATED { true } + +DL-PhysChCapabilityFDD-v770ext ::= SEQUENCE { + hsdsch-physical-layer-category-ext HSDSCH-physical-layer-category-ext OPTIONAL, + hsscchlessHsdschOperation ENUMERATED { true } OPTIONAL, + enhancedFdpch ENUMERATED { true } OPTIONAL, + hsdschReception-CellFach ENUMERATED { true } OPTIONAL, + hsdschReception-CellUraPch ENUMERATED { true } OPTIONAL +} + +DL-PhysChCapabilityFDD-v860ext ::= SEQUENCE { + hsdsch-physical-layer-category-ext2 HSDSCH-physical-layer-category-ext2 OPTIONAL, + supportOfTargetCellPreConfig ENUMERATED { true } OPTIONAL, + supportOfHsdschDrxOperation ENUMERATED { true } OPTIONAL +} + +DL-PhysChCapabilityFDD-v920ext ::= SEQUENCE { + hsdsch-physical-layer-category-ext3 HSDSCH-physical-layer-category-ext3 OPTIONAL, + supportOfMimoOnlySingleStream ENUMERATED { true } OPTIONAL +} + +DL-PhysChCapabilityFDD-va40ext ::= SEQUENCE { + hsdsch-physical-layer-category-ext4 HSDSCH-physical-layer-category-ext4 OPTIONAL, + hsdsch-physical-layer-category-ext5 HSDSCH-physical-layer-category-ext5 OPTIONAL +} + +DL-PhysChCapabilityFDD-vb50ext ::= SEQUENCE { + hsdsch-physical-layer-category-ext6 HSDSCH-physical-layer-category-ext6 OPTIONAL, + hsdsch-physical-layer-category-ext7 HSDSCH-physical-layer-category-ext7 OPTIONAL, + hsdsch-physical-layer-category-ext8 HSDSCH-physical-layer-category-ext8 OPTIONAL, + supportOf4x4MimoDualStreamRestriction ENUMERATED { true } OPTIONAL, + supportOfHS-DSCHSecondDRXOperation ENUMERATED { true } OPTIONAL, + supportOfNodeBTrigHS-DPCCHTransmission ENUMERATED { true } OPTIONAL +} + +DL-PhysChCapabilityTDD ::= SEQUENCE { + maxTS-PerFrame MaxTS-PerFrame, + maxPhysChPerFrame MaxPhysChPerFrame, + minimumSF MinimumSF-DL, + supportOfPDSCH BOOLEAN, + maxPhysChPerTS MaxPhysChPerTS +} + +DL-PhysChCapabilityTDD-LCR-r4 ::= SEQUENCE { + maxTS-PerSubFrame MaxTS-PerSubFrame-r4, + maxPhysChPerFrame MaxPhysChPerSubFrame-r4, + minimumSF MinimumSF-DL, + supportOfPDSCH BOOLEAN, + maxPhysChPerTS MaxPhysChPerTS, + supportOf8PSK BOOLEAN +} + +DL-PhysChCapabilityTDD-128-v770ext ::= SEQUENCE { + multiCarrier-physical-layer-category MultiCarrier-HSDSCH-physical-layer-category OPTIONAL +} + +DL-PhysChCapabilityTDD-128-v860ext ::= SEQUENCE { + hSDSCH-physical-layer-category-extension + HSDSCH-physical-layer-category-extension OPTIONAL, + multiCarrier-physical-layer-category-extension + MultiCarrier-HSDSCH-physical-layer-category-extension OPTIONAL, + supportOfSFModeForHSPDSCHDualStream ENUMERATED { sf1, sf1sf16 } OPTIONAL +} + +DL-PhysChCapabilityInfoTDD-128-va40ext::= SEQUENCE { + multiCarrier-physical-layer-category-extension2 + MultiCarrier-HSDSCH-physical-layer-category-extension2 OPTIONAL +} + +DL-PhysChCapabilityTDD-768 ::= SEQUENCE { + maxTS-PerFrame MaxTS-PerFrame, + maxPhysChPerFrame MaxPhysChPerFrame-768, + minimumSF MinimumSF-DL-768, + supportOfPDSCH BOOLEAN, + tdd768-hspdsch CHOICE { + supported HSDSCH-physical-layer-category, + unsupported NULL + }, + maxPhysChPerTS MaxPhysChPerTS-768 +} + +DL-PhysChCapabilityInfoTDD-768 ::= SEQUENCE { + maxTS-PerFrame MaxTS-PerFrame, + maxPhysChPerFrame MaxPhysChPerFrame-768, + minimumSF MinimumSF-DL-768, + supportOfPDSCH BOOLEAN, + maxPhysChPerTS MaxPhysChPerTS-768 +} + +DL-TransChCapability ::= SEQUENCE { + maxNoBitsReceived MaxNoBits, + maxConvCodeBitsReceived MaxNoBits, + turboDecodingSupport TurboSupport, + maxSimultaneousTransChs MaxSimultaneousTransChsDL, + maxSimultaneousCCTrCH-Count MaxSimultaneousCCTrCH-Count, + maxReceivedTransportBlocks MaxTransportBlocksDL, + maxNumberOfTFC MaxNumberOfTFC-DL, + maxNumberOfTF MaxNumberOfTF +} + +DRAC-SysInfo ::= SEQUENCE { + transmissionProbability TransmissionProbability, + maximumBitRate MaximumBitRate +} + +DRAC-SysInfoList ::= SEQUENCE (SIZE (1..maxDRACclasses)) OF + DRAC-SysInfo + +DSCH-RNTI ::= BIT STRING (SIZE (16)) + +DelayRestrictionFlag ::= ENUMERATED { true } + +E-RNTI ::= BIT STRING (SIZE (16)) + +ESN-DS-41 ::= BIT STRING (SIZE (32)) + +EstablishmentCause ::= ENUMERATED { + originatingConversationalCall, + originatingStreamingCall, + originatingInteractiveCall, + originatingBackgroundCall, + originatingSubscribedTrafficCall, + terminatingConversationalCall, + terminatingStreamingCall, + terminatingInteractiveCall, + terminatingBackgroundCall, + emergencyCall, + interRAT-CellReselection, + interRAT-CellChangeOrder, + registration, + detach, + originatingHighPrioritySignalling, + originatingLowPrioritySignalling, + callRe-establishment, + terminatingHighPrioritySignalling, + terminatingLowPrioritySignalling, + terminatingCauseUnknown, + mbms-Reception, + mbms-PTP-RB-Request, + delayTolerantAccess, + spare9, + spare8, + spare7, + spare6, + spare5, + spare4, + spare3, + spare2, + spare1 } + +ExtendedWaitTime ::= INTEGER (1..1800) + +FailureCauseWithProtErr ::= CHOICE { + configurationUnsupported NULL, + physicalChannelFailure NULL, + incompatibleSimultaneousReconfiguration + NULL, + compressedModeRuntimeError TGPSI, + protocolError ProtocolErrorInformation, + cellUpdateOccurred NULL, + invalidConfiguration NULL, + configurationIncomplete NULL, + unsupportedMeasurement NULL, + mbmsSessionAlreadyReceivedCorrectly NULL, + lowerPriorityMBMSService NULL, + spare5 NULL, + spare4 NULL, + spare3 NULL, + spare2 NULL, + spare1 NULL +} + +FailureCauseWithProtErrTrId ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + failureCause FailureCauseWithProtErr +} + +FrequencyBandsIndicatorSupport ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + frequencyBandsSupportFDD FrequencyBandsRedirectionFDD + }, + tdd SEQUENCE { + frequencyBandsSupportTDD128 FrequencyBandsIndicatorTDD128 + } + } +} + +FrequencyBandsIndicatorTDD128 ::= SEQUENCE (SIZE (1..maxFreqBandsIndicatorSupport)) OF + FrequencyBandsIndicatorSupportTDD128 + +FrequencyBandsIndicatorSupportTDD128 ::= SEQUENCE { + frequencyBandsIndicatorTDD RadioFrequencyBandTDD-r10 +} + +FrequencyBandsRedirectionFDD ::= SEQUENCE (SIZE (1..maxFreqBandsIndicatorSupport)) OF + FrequencyBandsIndicatorFDD + +FrequencyBandsIndicatorFDD ::= CHOICE { + frequencyBandsIndicator1 RadioFrequencyBandFDD, + frequencyBandsIndicator2 RadioFrequencyBandFDD2, + frequencyBandsIndicator3 RadioFrequencyBandFDD3 +} + +GANSS-Mode ::= ENUMERATED { + networkBased, + uEBased, + both, + none } + +GroupIdentityWithReleaseInformation ::= SEQUENCE { + rrc-ConnectionReleaseInformation RRC-ConnectionReleaseInformation, + groupReleaseInformation GroupReleaseInformation + } + +GroupReleaseInformation ::= SEQUENCE { + uRNTI-Group U-RNTI-Group +} + +GSM-Measurements ::= SEQUENCE { + gsm900 BOOLEAN, + dcs1800 BOOLEAN, + gsm1900 BOOLEAN +} + +H-RNTI ::= BIT STRING (SIZE (16)) + +High-MobilityDetected ::= ENUMERATED { high-MobilityDetected } + +HSDSCH-physical-layer-category ::= INTEGER (1..64) + +HSDSCH-physical-layer-category-ext ::= INTEGER (1..20) + +HSDSCH-physical-layer-category-ext2 ::= INTEGER (21..24) + +HSDSCH-physical-layer-category-ext3 ::= INTEGER (25..28) + +HSDSCH-physical-layer-category-ext4 ::= INTEGER (29..30) + +HSDSCH-physical-layer-category-ext5 ::= INTEGER (31..32) + +HSDSCH-physical-layer-category-ext6 ::= INTEGER (33..34) + +HSDSCH-physical-layer-category-ext7 ::= INTEGER (35..36) + +HSDSCH-physical-layer-category-ext8 ::= INTEGER (37..38) + +HSDSCH-physical-layer-category-extension ::= INTEGER (1..64) + +MultiCarrier-HSDSCH-physical-layer-category ::= INTEGER (1..64) + +MultiCarrier-HSDSCH-physical-layer-category-extension ::= INTEGER (1..36) + +MultiCarrier-HSDSCH-physical-layer-category-extension2 ::= INTEGER (37..64) + +MultiflowCapabBandCombination ::= SEQUENCE { + numberOfCellsBandA INTEGER(2..6), + numberOfFrequenciesBandA INTEGER(1..3), + numberOfCellsBandB INTEGER(2..6), + numberOfFrequenciesBandB INTEGER(1..3) +} + +MultiflowCapabBandCombList ::= SEQUENCE (SIZE (1..16)) OF MultiflowCapabBandCombination + +MultiflowCapability ::= SEQUENCE { + mimoInDifferentBands MultiflowMIMOCapability OPTIONAL, + longerHARQProcessing ENUMERATED { true } OPTIONAL +} + +MultiflowPerBandCapability ::= SEQUENCE { + numberOfCells INTEGER(2..8), + numberOfFrequencies INTEGER(1..4), + mimo MultiflowMIMOCapability OPTIONAL, + nonContiguousCapability MultiflowNonContiguousCapability OPTIONAL +} + +MultiflowMIMOCapability ::= ENUMERATED { single-stream, dual-stream } + +MultiflowNonContiguousCapability ::= SEQUENCE { + gapSize ENUMERATED { fiveMHz, tenMHz, anyGapSize, + spare5, spare4, spare3, spare2, spare1 } +} + +UESpecificBehaviourInformation1idle ::= BIT STRING (SIZE (4)) + +UESpecificBehaviourInformation1interRAT ::= BIT STRING (SIZE (8)) + +IdleIntervalMeasCapabEUTRA ::= SEQUENCE { + radioFrequencyBandEUTRA RadioFrequencyBandEUTRA, + idleInterval BOOLEAN +} + +IdleIntervalMeasCapabEUTRAExtension ::= SEQUENCE { + radioFrequencyBandEUTRA RadioFrequencyBandEUTRAExt +} + +IdleIntervalMeasCapabEUTRAList ::= SEQUENCE (SIZE (1..maxFreqBandsEUTRA)) OF + IdleIntervalMeasCapabEUTRA + +IdleIntervalMeasCapabEUTRAExtensionList ::= SEQUENCE (SIZE (1..maxFreqBandsEUTRA)) OF + IdleIntervalMeasCapabEUTRAExtension + +IMSI-and-ESN-DS-41 ::= SEQUENCE { + imsi-DS-41 IMSI-DS-41, + esn-DS-41 ESN-DS-41 +} + +IMSI-DS-41 ::= OCTET STRING (SIZE (5..7)) + +InitialPriorityDelayList ::= SEQUENCE (SIZE (1..maxASC)) OF + NS-IP + +InitialUE-Identity ::= CHOICE { + imsi IMSI-GSM-MAP, + tmsi-and-LAI TMSI-and-LAI-GSM-MAP, + p-TMSI-and-RAI P-TMSI-and-RAI-GSM-MAP, + imei IMEI, + esn-DS-41 ESN-DS-41, + imsi-DS-41 IMSI-DS-41, + imsi-and-ESN-DS-41 IMSI-and-ESN-DS-41, + tmsi-DS-41 TMSI-DS-41 +} + +IntegrityCheckInfo ::= SEQUENCE { + messageAuthenticationCode MessageAuthenticationCode, + rrc-MessageSequenceNumber RRC-MessageSequenceNumber +} + +IntegrityProtActivationInfo ::= SEQUENCE { + rrc-MessageSequenceNumberList RRC-MessageSequenceNumberList +} + +IntegrityProtectionAlgorithm ::= ENUMERATED { + uia1 } + +IntegrityProtectionAlgorithm-r7 ::= ENUMERATED { + uia1, uia2 } + +IntegrityProtectionModeCommand ::= CHOICE { + startIntegrityProtection SEQUENCE { + integrityProtInitNumber IntegrityProtInitNumber + }, + modify SEQUENCE { + dl-IntegrityProtActivationInfo IntegrityProtActivationInfo + } +} + +IntegrityProtectionModeInfo ::= SEQUENCE { + -- TABULAR: DL integrity protection activation info and Integrity + -- protection intialisation number have been nested inside + -- IntegrityProtectionModeCommand. + integrityProtectionModeCommand IntegrityProtectionModeCommand, + integrityProtectionAlgorithm IntegrityProtectionAlgorithm OPTIONAL +} + +IntegrityProtectionModeInfo-r7 ::= SEQUENCE { + -- TABULAR: DL integrity protection activation info and Integrity + -- protection intialisation number have been nested inside + -- IntegrityProtectionModeCommand. + integrityProtectionModeCommand IntegrityProtectionModeCommand, + integrityProtectionAlgorithm IntegrityProtectionAlgorithm-r7 OPTIONAL +} + +IntegrityProtInitNumber ::= BIT STRING (SIZE (32)) + +-- dummy is not used in this version of the specification, it should +-- not be sent and if received it should be ignored. +MaxHcContextSpace ::= ENUMERATED { + dummy, by1024, by2048, by4096, + by8192 } + +MaxHcContextSpace-r5-ext ::= ENUMERATED { + by16384, by32768, by65536, by131072 } + + +MaxROHC-ContextSessions-r4 ::= ENUMERATED { + s2, s4, s8, s12, s16, s24, s32, s48, + s64, s128, s256, s512, s1024, s16384 } + +MaximumAM-EntityNumberRLC-Cap ::= ENUMERATED { + dummy, am4, am5, am6, + am8, am16, am30 } + +-- Actual value MaximumBitRate = IE value * 16 +MaximumBitRate ::= INTEGER (0..32) + +MaximumRLC-WindowSize ::= ENUMERATED { mws2047, mws4095 } + +MaxNoDPDCH-BitsTransmitted ::= ENUMERATED { + b600, b1200, b2400, b4800, + b9600, b19200, b28800, b38400, + b48000, b57600 } + +MaxNoBits ::= ENUMERATED { + b640, b1280, b2560, b3840, b5120, + b6400, b7680, b8960, b10240, + b20480, b40960, b81920, b163840 } + +MaxNoPhysChBitsReceived ::= ENUMERATED { + dummy, b1200, b2400, b3600, + b4800, b7200, b9600, b14400, + b19200, b28800, b38400, b48000, + b57600, b67200, b76800 } + +MaxNoSCCPCH-RL ::= ENUMERATED { + rl1 } + +MaxNumberOfTF ::= ENUMERATED { + tf32, tf64, tf128, tf256, + tf512, tf1024 } + +MaxNumberOfTFC-DL ::= ENUMERATED { + tfc16, tfc32, tfc48, tfc64, tfc96, + tfc128, tfc256, tfc512, tfc1024 } + +MaxNumberOfTFC-UL ::= ENUMERATED { + dummy1, dummy2, tfc16, tfc32, tfc48, tfc64, + tfc96, tfc128, tfc256, tfc512, tfc1024 } + +-- the values 1 to 4 for MaxPhysChPerFrame are not used in this version of the protocol +MaxPhysChPerFrame ::= INTEGER (1..224) + +MaxPhysChPerFrame-768 ::= INTEGER (1..448) + +MaxPhysChPerSubFrame-r4 ::= INTEGER (1..96) + +MaxPhysChPerTimeslot ::= ENUMERATED { + ts1, ts2 } + +MaxPhysChPerTimeslot-LCR-r7 ::= INTEGER (1..4) + +-- the values 1 to 4 for MaxPhysChPerTS are not used in this version of the protocol +MaxPhysChPerTS ::= INTEGER (1..16) + +MaxPhysChPerTS-768 ::= INTEGER (1..32) + +MaxSimultaneousCCTrCH-Count ::= INTEGER (1..8) + +MaxSimultaneousTransChsDL ::= ENUMERATED { + e4, e8, e16, e32 } + +MaxSimultaneousTransChsUL ::= ENUMERATED { + dummy, e4, e8, e16, e32 } + +MaxTransportBlocksDL ::= ENUMERATED { + tb4, tb8, tb16, tb32, tb48, + tb64, tb96, tb128, tb256, tb512 } + +MaxTransportBlocksUL ::= ENUMERATED { + dummy, tb4, tb8, tb16, tb32, tb48, + tb64, tb96, tb128, tb256, tb512 } + +MaxTS-PerFrame ::= INTEGER (1..14) + +MaxTS-PerSubFrame-r4 ::= INTEGER (1..6) + +-- TABULAR: MeasurementCapability contains dependencies to UE-MultiModeRAT-Capability, +-- the conditional fields have been left mandatory for now. +MeasurementCapability ::= SEQUENCE { + downlinkCompressedMode CompressedModeMeasCapability, + uplinkCompressedMode CompressedModeMeasCapability +} + +MeasurementCapabilityExt ::= SEQUENCE{ + compressedModeMeasCapabFDDList CompressedModeMeasCapabFDDList, + compressedModeMeasCapabTDDList CompressedModeMeasCapabTDDList OPTIONAL, + compressedModeMeasCapabGSMList CompressedModeMeasCapabGSMList OPTIONAL, + compressedModeMeasCapabMC CompressedModeMeasCapabMC OPTIONAL +} + +MeasurementCapabilityExt2 ::= SEQUENCE{ + compressedModeMeasCapabFDDList CompressedModeMeasCapabFDDList2, + compressedModeMeasCapabTDDList CompressedModeMeasCapabTDDList OPTIONAL, + compressedModeMeasCapabGSMList CompressedModeMeasCapabGSMList OPTIONAL, + compressedModeMeasCapabMC CompressedModeMeasCapabMC OPTIONAL +} + +MeasurementCapabilityExt3 ::= SEQUENCE { + compressedModeMeasCapabEUTRAList CompressedModeMeasCapabEUTRAList OPTIONAL +} + +MeasurementCapabilityExt4 ::= SEQUENCE{ + compressedModeMeasCapabFDDList2 CompressedModeMeasCapabFDDList2 OPTIONAL, + compressedModeMeasCapabFDDList3 CompressedModeMeasCapabFDDList3 OPTIONAL, + compressedModeMeasCapabTDDList CompressedModeMeasCapabTDDList OPTIONAL, + compressedModeMeasCapabGSMList CompressedModeMeasCapabGSMList OPTIONAL, + compressedModeMeasCapabMC CompressedModeMeasCapabMC OPTIONAL, + compressedModeMeasCapabEUTRAList CompressedModeMeasCapabEUTRAList OPTIONAL +} + +MeasurementCapabilityExt5 ::= SEQUENCE { + compressedModeMeasCapabEUTRAList CompressedModeMeasCapabEUTRAList2 OPTIONAL +} + +MeasurementCapability-r4-ext ::= SEQUENCE { + downlinkCompressedMode-LCR CompressedModeMeasCapability-LCR-r4, + uplinkCompressedMode-LCR CompressedModeMeasCapability-LCR-r4 +} + +MeasurementCapability-v860ext ::= SEQUENCE { + downlinkCompressedMode CompressedModeMeasCapability-v860ext +} + +MeasurementCapability-v920ext ::= SEQUENCE { + downlinkCompressedMode CompressedModeMeasCapability-v920ext +} + +MeasurementCapability-va40ext ::= SEQUENCE { + interFrequencyDetectedSetMeasurements ENUMERATED { true } OPTIONAL, + downlinkCompressedMode CompressedModeMeasCapability-va40ext +} + +MeasurementCapability-vb50ext ::= SEQUENCE { + interFrequencyMeasOnConfigCarriersWithoutCompMode ENUMERATED { true } OPTIONAL, + cellsExcludedFromDetectedSetMeasurements ENUMERATED { true } OPTIONAL +} + +MeasurementCapabilityTDD ::= SEQUENCE { + idleIntervalMeasCapabEUTRAList IdleIntervalMeasCapabEUTRAList OPTIONAL +} + +MeasurementCapabilityTDD-vb50ext ::= SEQUENCE { + idleIntervalMeasCapabEUTRAList IdleIntervalMeasCapabEUTRAExtensionList OPTIONAL +} + +MessageAuthenticationCode ::= BIT STRING (SIZE (32)) + +MinimumSF-DL ::= ENUMERATED { + sf1, sf16 } + +MinimumSF-DL-768 ::= ENUMERATED { + sf1, sf32 } + +MinimumSF-UL ::= ENUMERATED { + sf1, sf2, sf4, sf8, dummy } + +NonContiguousMultiCellCombinationList ::= SEQUENCE (SIZE (1..maxNonContiguousMultiCellCombinations)) OF + NonContiguousMultiCell + +NonContiguousMultiCell ::= SEQUENCE { + aggregatedCells ENUMERATED { nc-2c, nc-3c, nc-4c }, + gapSize ENUMERATED { fiveMHz, tenMHz, anyGapSize, + spare5, spare4, spare3, spare2, spare1 }, + nonContiguousMultiCellCombination22 ENUMERATED { true } OPTIONAL, + nonContiguousMultiCellCombination31-13 ENUMERATED { true } OPTIONAL +} + +MultiModeCapability ::= ENUMERATED { + tdd, fdd, fdd-tdd } + +MultiRAT-Capability ::= SEQUENCE { + supportOfGSM BOOLEAN, + supportOfMulticarrier BOOLEAN +} + +MultiModeRAT-Capability-v590ext ::= SEQUENCE { + supportOfUTRAN-ToGERAN-NACC BOOLEAN +} + +MultiModeRAT-Capability-v680ext ::= SEQUENCE { + supportOfHandoverToGAN ENUMERATED { doesSupportHandoverToGAN } OPTIONAL +} + +MultiModeRAT-Capability-v770ext ::= SEQUENCE { + supportOfPSHandoverToGAN ENUMERATED { doesSupportPSHandoverToGAN } OPTIONAL +} + +MultiModeRAT-Capability-v860ext ::= SEQUENCE { + supportOfEUTRAFDD ENUMERATED { doesSupportEUTRAFDD } OPTIONAL, + supportOfInterRATHOToEUTRAFDD ENUMERATED { doesSupportInterRATHOToEUTRAFDD } OPTIONAL, + supportOfEUTRATDD ENUMERATED { doesSupportEUTRATDD } OPTIONAL, + supportOfInterRATHOToEUTRATDD ENUMERATED { doesSupportInterRATHOToEUTRATDD } OPTIONAL, + eutraFeatureGroupIndicators BIT STRING (SIZE (4)) OPTIONAL +} + +MultiModeRAT-Capability-vb50ext ::= SEQUENCE { + supportOfEUTRAFDDMeasurementReportingInCELLFACH ENUMERATED { doesSupportOfEUTRAFDDMeasurementReportingInCELLFACH } OPTIONAL, + supportOfEUTRATDDMeasurementReportingInCELLFACH ENUMERATED { doesSupportOfEUTRATDDMeasurementReportingInCELLFACH } OPTIONAL +} + +N-300 ::= INTEGER (0..7) + +N-301 ::= INTEGER (0..7) + +N-302 ::= INTEGER (0..7) + +N-304 ::= INTEGER (0..7) + +N-308 ::= INTEGER (1..8) + +N-310 ::= INTEGER (0..7) + +N-312 ::= ENUMERATED { + s1, s50, s100, s200, s400, + s600, s800, s1000 } + +N-312ext ::= ENUMERATED { + s2, s4, s10, s20 } + +N-312-r5 ::= ENUMERATED { + s1, s2, s4, s10, s20, + s50, s100, s200, s400, + s600, s800, s1000 } + +N-313 ::= ENUMERATED { + s1, s2, s4, s10, s20, + s50, s100, s200 } + +N-315 ::= ENUMERATED { + s1, s50, s100, s200, s400, + s600, s800, s1000 } + +N-315ext ::= ENUMERATED { + s2, s4, s10, s20 } + +N-315-r5 ::= ENUMERATED { + s1, s2, s4, s10, s20, + s50, s100, s200, s400, + s600, s800, s1000 } + + +N-AccessFails ::= INTEGER (1..64) + +N-AP-RetransMax ::= INTEGER (1..64) + +NeighCellSI-AcquisitionCapability ::= SEQUENCE { + supportOfIntraFreqSIAcquisitionForHO ENUMERATED { true } OPTIONAL, + supportOfInterFreqSIAcquisitionForHO ENUMERATED { true } OPTIONAL, + supportOfE-UtraSIAcquisitionForHO ENUMERATED { true } OPTIONAL +} + +NetworkAssistedGANSS-Supported-List ::= SEQUENCE (SIZE (1..maxGANSS)) OF SEQUENCE { + gANSS-Id ENUMERATED { + sbas, modernizedGPS, qzss, glonass, spare4, + spare3, spare2, spare1 } OPTIONAL, + gANSS-Mode GANSS-Mode, + gANSS-SignalId GANSS-Signal-Id OPTIONAL, + supportForUE-GANSS-TimingOfCellFrames BOOLEAN, + supportForUE-GANSS-CarrierPhaseMeasurement BOOLEAN OPTIONAL +} + +-- Each element in the NetworkAssistedGANSS-Supported-List-v860ext provides extension information +-- to the corresponding element (position) in the NetworkAssistedGANSS-Supported-List +NetworkAssistedGANSS-Supported-List-v860ext ::= SEQUENCE (SIZE (1..maxGANSS)) OF SEQUENCE { + sbas-Ids BIT STRING (SIZE (8)) OPTIONAL, + gANSS-SignalIds BIT STRING (SIZE (8)) OPTIONAL, + non-native-AD-choices-supported ENUMERATED { true } OPTIONAL +} + +NetworkAssistedGPS-Supported ::= ENUMERATED { + networkBased, + ue-Based, + bothNetworkAndUE-Based, + noNetworkAssistedGPS } + +NF-BO-AllBusy ::= INTEGER (0..31) + +NF-BO-NoAICH ::= INTEGER (0..31) + +NF-BO-Mismatch ::= INTEGER (0..127) + +NS-BO-Busy ::= INTEGER (0..63) + +NS-IP ::= INTEGER (0..28) + +P-TMSI-and-RAI-GSM-MAP ::= SEQUENCE { + p-TMSI P-TMSI-GSM-MAP, + rai RAI +} + +PagingCause ::= ENUMERATED { + terminatingConversationalCall, + terminatingStreamingCall, + terminatingInteractiveCall, + terminatingBackgroundCall, + terminatingHighPrioritySignalling, + terminatingLowPrioritySignalling, + terminatingCauseUnknown, + spare + } + +PagingRecord ::= CHOICE { + cn-Identity SEQUENCE { + pagingCause PagingCause, + cn-DomainIdentity CN-DomainIdentity, + cn-pagedUE-Identity CN-PagedUE-Identity + }, + utran-Identity SEQUENCE { + u-RNTI U-RNTI, + cn-OriginatedPage-connectedMode-UE SEQUENCE { + pagingCause PagingCause, + cn-DomainIdentity CN-DomainIdentity, + pagingRecordTypeID PagingRecordTypeID + } OPTIONAL + } +} + +PagingRecord2-r5 ::= CHOICE { + utran-SingleUE-Identity SEQUENCE { + u-RNTI U-RNTI, + cn-OriginatedPage-connectedMode-UE SEQUENCE { + pagingCause PagingCause, + cn-DomainIdentity CN-DomainIdentity, + pagingRecordTypeID PagingRecordTypeID + } OPTIONAL, + rrc-ConnectionReleaseInformation RRC-ConnectionReleaseInformation + }, + utran-GroupIdentity SEQUENCE ( SIZE (1 .. maxURNTI-Group) ) OF + GroupIdentityWithReleaseInformation +} + +PagingRecordList ::= SEQUENCE (SIZE (1..maxPage1)) OF + PagingRecord + +PagingRecord2List-r5 ::= SEQUENCE (SIZE (1..maxPage1)) OF + PagingRecord2-r5 + +PDCP-Capability ::= SEQUENCE { + losslessSRNS-RelocationSupport BOOLEAN, + -- If present, the "maxHcContextSpace" in the IE "PDCP-Capability-r5-ext" overrides the + -- "supported" value in this IE. The value in this IE may be used by a pre-REL-5 UTRAN. + supportForRfc2507 CHOICE { + notSupported NULL, + supported MaxHcContextSpace + } +} + +PDCP-Capability-r4-ext ::= SEQUENCE { + supportForRfc3095 CHOICE { + notSupported NULL, + supported SEQUENCE { + maxROHC-ContextSessions MaxROHC-ContextSessions-r4 DEFAULT s16, + reverseCompressionDepth INTEGER (0..65535) DEFAULT 0 + } + } +} + +PDCP-Capability-r5-ext ::= SEQUENCE { + supportForRfc3095ContextRelocation BOOLEAN, + maxHcContextSpace MaxHcContextSpace-r5-ext OPTIONAL +} + +PDCP-Capability-r5-ext2 ::= SEQUENCE { + losslessDLRLC-PDUSizeChange ENUMERATED { true } OPTIONAL +} + +PDCP-Capability-v770ext ::= SEQUENCE { + supportForCSVoiceoverHSPA ENUMERATED { true } OPTIONAL +} + +PhysicalChannelCapability ::= SEQUENCE { + fddPhysChCapability SEQUENCE { + downlinkPhysChCapability DL-PhysChCapabilityFDD, + uplinkPhysChCapability UL-PhysChCapabilityFDD + } OPTIONAL, + -- tddPhysChCapability describes the 3.84Mcps TDD physical channel capability + tddPhysChCapability SEQUENCE { + downlinkPhysChCapability DL-PhysChCapabilityTDD, + uplinkPhysChCapability UL-PhysChCapabilityTDD + } OPTIONAL +} + +PhysicalChannelCapability-v770ext ::= SEQUENCE { + fddPhysChCapability SEQUENCE { + downlinkPhysChCapability DL-PhysChCapabilityFDD-v770ext, + uplinkPhysChCapability UL-PhysChCapabilityFDD-v770ext + } OPTIONAL, + tddPhysChCapability-384 SEQUENCE { + -- No TDD384 DL physical channel capability extension + uplinkPhysChCapability UL-PhysChCapabilityTDD-384-v770ext + } OPTIONAL, + tddPhysChCapability-768 SEQUENCE { + downlinkPhysChCapability DL-PhysChCapabilityTDD-768, + uplinkPhysChCapability UL-PhysChCapabilityTDD-768 + } OPTIONAL, + tddPhysChCapability-128 SEQUENCE { + downlinkPhysChCapability DL-PhysChCapabilityTDD-128-v770ext, + uplinkPhysChCapability UL-PhysChCapabilityTDD-128-v770ext + } OPTIONAL +} + +PhysicalChannelCapability-v860ext ::= SEQUENCE { + fddPhysChCapability SEQUENCE { + downlinkPhysChCapability DL-PhysChCapabilityFDD-v860ext + } OPTIONAL, + tddPhysChCapability-128 SEQUENCE { + downlinkPhysChCapability DL-PhysChCapabilityTDD-128-v860ext + } OPTIONAL +} + +PhysicalChannelCapability-v920ext ::= SEQUENCE { + fddPhysChCapability SEQUENCE { + downlinkPhysChCapability DL-PhysChCapabilityFDD-v920ext, + uplinkPhysChCapability UL-PhysChCapabilityFDD-v920ext + } OPTIONAL +} + +PhysicalChannelCapability-va40ext ::= SEQUENCE { + fddPhysChCapability SEQUENCE { + downlinkPhysChCapability DL-PhysChCapabilityFDD-va40ext + } OPTIONAL, + tddPhysChCapability-128 SEQUENCE { + downlinkPhysChCapability DL-PhysChCapabilityInfoTDD-128-va40ext, + uplinkPhysChCapability UL-PhysChCapabilityInfoTDD-128-va40ext + } OPTIONAL +} + +PhysicalChannelCapability-vb50ext ::= SEQUENCE { + fddPhysChCapability SEQUENCE { + downlinkPhysChCapability DL-PhysChCapabilityFDD-vb50ext, + uplinkPhysChCapability UL-PhysChCapabilityFDD-vb50ext + } OPTIONAL +} + +PhysicalChannelCapabilityInfo-v770ext ::= SEQUENCE { + tddPhysChCapability-768 SEQUENCE { + downlinkPhysChCapability DL-PhysChCapabilityInfoTDD-768, + uplinkPhysChCapability UL-PhysChCapabilityTDD + } OPTIONAL, + tddPhysChCapability-128 SEQUENCE { + uplinkPhysChCapability UL-PhysChCapabilityInfoTDD-128-v770ext + } OPTIONAL +} + +-- PhysicalChannelCapability-LCR-r4 describes the 1.28Mcps TDD physical channel capability +PhysicalChannelCapability-LCR-r4 ::= SEQUENCE { + tdd128-PhysChCapability SEQUENCE { + downlinkPhysChCapability DL-PhysChCapabilityTDD-LCR-r4, + uplinkPhysChCapability UL-PhysChCapabilityTDD-LCR-r4 + } OPTIONAL +} + +-- PhysicalChannelCapability-hspdsch-r5 describes the HS-PDSCH physical channel capability +PhysicalChannelCapability-hspdsch-r5 ::= SEQUENCE { + fdd-hspdsch CHOICE { + supported SEQUENCE { + -- hsdsch-physical-layer-category values shall be restricted to the range [1..12] + -- even if the UE physical capability category is above 12. + hsdsch-physical-layer-category HSDSCH-physical-layer-category, + -- dummy and dummy2 are not used in this version of the specification + -- and if received they should be ignored. + dummy BOOLEAN, + dummy2 BOOLEAN + }, + unsupported NULL + }, + tdd384-hspdsch CHOICE { + supported HSDSCH-physical-layer-category, + unsupported NULL + }, + tdd128-hspdsch CHOICE { + supported HSDSCH-physical-layer-category, + unsupported NULL + } +} + +PNBSCH-Allocation-r4 ::= SEQUENCE { + numberOfRepetitionsPerSFNPeriod ENUMERATED { + c2, c3, c4, c5, c6, c7, c8, c9, c10, + c12, c14, c16, c18, c20, c24, c28, c32, + c36, c40, c48, c56, c64, c72, c80 } +} + +Pre-RedirectionInfo ::= SEQUENCE { + supportEUTRA-FDD BOOLEAN, + supportEUTRA-TDD BOOLEAN +} + +ProtocolErrorCause ::= ENUMERATED { + asn1-ViolationOrEncodingError, + messageTypeNonexistent, + messageNotCompatibleWithReceiverState, + ie-ValueNotComprehended, + informationElementMissing, + messageExtensionNotComprehended, + spare2, spare1 } + +ProtocolErrorIndicator ::= ENUMERATED { + noError, errorOccurred } + +ProtocolErrorIndicatorWithMoreInfo ::= + CHOICE { + noError NULL, + errorOccurred SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + protocolErrorInformation ProtocolErrorInformation + } +} + +ProtocolErrorMoreInformation ::= SEQUENCE { + diagnosticsType CHOICE { + type1 CHOICE { + asn1-ViolationOrEncodingError NULL, + messageTypeNonexistent NULL, + messageNotCompatibleWithReceiverState + IdentificationOfReceivedMessage, + ie-ValueNotComprehended IdentificationOfReceivedMessage, + conditionalInformationElementError IdentificationOfReceivedMessage, + messageExtensionNotComprehended IdentificationOfReceivedMessage, + spare1 NULL, + spare2 NULL + }, + spare NULL + } +} + +RadioFrequencyBandEUTRA ::= INTEGER (1..64) + +RadioFrequencyBandEUTRAExt ::= INTEGER (65..256) + +RadioFrequencyBandFDD ::= ENUMERATED { + -- fdd2100, fdd1900, fdd1800 correspond to Band I, Band II and Band III respectively + fdd2100, + fdd1900, + fdd1800, + bandVI, + bandIV, + bandV, + bandVII, + extension-indicator } + +RadioFrequencyBandFDD2 ::= ENUMERATED { + bandVIII, + bandIX, + bandX, + bandXI, + bandXII, + bandXIII, + bandXIV, + bandXV, + bandXVI, + bandXVII, + bandXVIII, + bandXIX, + bandXX, + bandXXI, + bandXXII, + extension-indicator } + +RadioFrequencyBandFDD3 ::= ENUMERATED {spare64, spare63, bandXXV, bandXXVI, spare60, spare59, spare58, spare57, spare56, spare55, spare54, spare53, spare52, spare51, spare50, spare49, spare48, spare47, spare46, spare45, spare44, spare43, spare42, spare41, spare40, spare39, spare38, spare37, spare36, spare35, spare34, spare33, spare32, spare31, spare30, spare29, spare28, spare27, spare26, spare25, spare24, spare23, spare22, spare21, spare20, spare19, spare18, spare17, spare16, spare15, spare14, spare13, spare12, spare11, spare10, spare9, spare8, spare7, spare6, spare5, spare4, spare3, spare2, extension-indicator } + +RadioFrequencyBandTDDList ::= ENUMERATED { + a, b, c, ab, ac, bc, abc, spare } + +RadioFrequencyBandTDDList-r7 ::= ENUMERATED { + a, b, c, d, ab, ac, ad, bc, bd, cd, abc, abd, acd, bcd, + abcd, notabcd } + +RadioFrequencyBandTDDext ::= ENUMERATED { + e, f, g, h, i, j, k, l, m, n, o, p, spare4, spare3, + spare2, spare1 } + +RadioFrequencyBandTDDextList ::= SEQUENCE (SIZE (1..maxFreqBandsTDD-ext)) OF + RadioFrequencyBandTDDext + +RadioFrequencyBandTDD ::= ENUMERATED { + a, b, c, d } + +RadioFrequencyBandTDD-r10 ::= ENUMERATED { + a, b, c, d, e, f, spare2, spare1 } + +RadioFrequencyBandGSM ::= ENUMERATED { + gsm450, + gsm480, + gsm850, + gsm900P, + gsm900E, + gsm1800, + gsm1900, + spare9, spare8, spare7, spare6, spare5, + spare4, spare3, spare2, spare1} + +Rb-timer-indicator ::= SEQUENCE { + t314-expired BOOLEAN, + t315-expired BOOLEAN } + +Re-EstablishmentTimer ::= ENUMERATED { + useT314, useT315 +} + +RedirectionInfo ::= CHOICE { + frequencyInfo FrequencyInfo, + interRATInfo InterRATInfo +} + +RedirectionInfo-r6 ::= CHOICE { + frequencyInfo FrequencyInfo, + interRATInfo InterRATInfo-r6 +} + +RedirectionInfo-v860ext ::= CHOICE { + -- CHOICE frequencyInfo is provided in IE RedirectionInfo or IE RedirectionInfo-r6 + frequencyInfo NULL, + interRATInfo InterRATInfo-v860ext +} + +RejectionCause ::= ENUMERATED { + congestion, + unspecified } + +ReleaseCause ::= ENUMERATED { + normalEvent, + unspecified, + pre-emptiveRelease, + congestion, + re-establishmentReject, + directedsignallingconnectionre-establishment, + userInactivity, + spare } + +RF-Capability ::= SEQUENCE { + fddRF-Capability SEQUENCE { + ue-PowerClass UE-PowerClass, + txRxFrequencySeparation TxRxFrequencySeparation + } OPTIONAL, + tddRF-Capability SEQUENCE { + ue-PowerClass UE-PowerClass, + radioFrequencyTDDBandList RadioFrequencyBandTDDList, + chipRateCapability ChipRateCapability + } OPTIONAL +} + +RF-Capability-r4-ext ::= SEQUENCE { + tddRF-Capability SEQUENCE { + ue-PowerClass UE-PowerClass, + radioFrequencyBandTDDList RadioFrequencyBandTDDList, + chipRateCapability ChipRateCapability + } OPTIONAL +} + +RF-Capability-v770ext ::= SEQUENCE { + -- If TDD384 and/or TDD128 RF capability is indicated in IEs 'RF-Capability' or + -- 'RF-Capability-r4-ext', the corresponding IE 'RadioFrequencyBandTDDList-r7' shall + -- be included in this IE. + tdd384RF-Capability RadioFrequencyBandTDDList-r7 OPTIONAL, + tdd768RF-Capability SEQUENCE { + ue-PowerClass UE-PowerClass, + radioFrequencyBandTDDList RadioFrequencyBandTDDList-r7 + -- The element 'chipRateCapability' = 'mcps7-68' + } OPTIONAL, + tdd128RF-Capability RadioFrequencyBandTDDList-r7 OPTIONAL +} + +RF-Capability-v860ext ::= SEQUENCE { + tdd128RF-Capability RadioFrequencyBandTDDextList OPTIONAL, + tdd384RF-Capability RadioFrequencyBandTDDextList OPTIONAL, + tdd768RF-Capability RadioFrequencyBandTDDextList OPTIONAL +} + +RF-Capability-vaa0ext ::= SEQUENCE { + supportOfMFBI ENUMERATED { true } OPTIONAL +} + +RLC-Capability ::= SEQUENCE { + -- If present, the "totalRLC-AM-BufferSize" in the IE "RLC-Capability-r5-ext" overrides the + -- corresponding value in this IE. The value in this IE may be used by a pre-REL-5 UTRAN. + totalRLC-AM-BufferSize TotalRLC-AM-BufferSize, + maximumRLC-WindowSize MaximumRLC-WindowSize, + maximumAM-EntityNumber MaximumAM-EntityNumberRLC-Cap +} + +RLC-Capability-r5-ext ::= SEQUENCE { + totalRLC-AM-BufferSize TotalRLC-AM-BufferSize-r5-ext OPTIONAL +} + +RLC-Capability-v770ext ::= SEQUENCE { + supportOfTwoLogicalChannel BOOLEAN +} + +RLC-Capability-v920ext ::= SEQUENCE { + totalRLC-AM-BufferSize TotalRLC-AM-BufferSize-v920ext OPTIONAL +} + +RLC-Capability-va40ext ::= SEQUENCE { + totalRLC-AM-BufferSize TotalRLC-AM-BufferSize-va40ext OPTIONAL +} + +RLC-Capability-vb50ext ::= SEQUENCE { + totalRLC-AM-BufferSize TotalRLC-AM-BufferSize-vb50ext OPTIONAL +} + +RRC-ConnectionReleaseInformation ::= CHOICE { + noRelease NULL, + release SEQUENCE { + releaseCause ReleaseCause + } +} + +RRC-MessageSequenceNumber ::= INTEGER (0..15) + + +RRC-MessageSequenceNumberList ::= SEQUENCE (SIZE (4..5)) OF + RRC-MessageSequenceNumber + +RRC-StateIndicator ::= ENUMERATED { + cell-DCH, cell-FACH, cell-PCH, ura-PCH } + +RRC-TransactionIdentifier ::= INTEGER (0..3) + +RSR-VCC-Info ::= SEQUENCE { + nonce BIT STRING (SIZE (128)) OPTIONAL, + ims-Information OCTET STRING (SIZE (1.. 32)) +} + +S-RNTI ::= BIT STRING (SIZE (20)) + +S-RNTI-2 ::= BIT STRING (SIZE (10)) + +SecurityCapability ::= SEQUENCE { + cipheringAlgorithmCap BIT STRING { + -- For each bit value "0" means false/ not supported + spare15(0), + spare14(1), + spare13(2), + spare12(3), + spare11(4), + spare10(5), + spare9(6), + spare8(7), + spare7(8), + spare6(9), + spare5(10), + spare4(11), + spare3(12), + uea2(13), + uea1(14), + uea0(15) + } (SIZE (16)), + integrityProtectionAlgorithmCap BIT STRING { + -- For each bit value "0" means false/ not supported + spare15(0), + spare14(1), + spare13(2), + spare12(3), + spare11(4), + spare10(5), + spare9(6), + spare8(7), + spare7(8), + spare6(9), + spare5(10), + spare4(11), + spare3(12), + uia2(13), + uia1(14), + spare0(15) + } (SIZE (16)) +} + +SecondaryServingEDCHCell-Info ::= SEQUENCE { + primary-E-RNTI E-RNTI OPTIONAL, + secondary-E-RNTI E-RNTI OPTIONAL + } + +SecondaryEDCH-Info-Common ::= SEQUENCE { + frequencyInfo FrequencyInfo, + scramblingCodeType ScramblingCodeType, + scramblingCodeNumber UL-ScramblingCode, + ms2-SchedTransmGrantHARQAlloc BIT STRING (SIZE (8)) OPTIONAL, + servingGrant SEQUENCE { + primary-Secondary-GrantSelector ENUMERATED { primary, secondary } + } OPTIONAL, + minReduced-E-DPDCH-GainFactor MinReduced-E-DPDCH-GainFactor OPTIONAL, + e-DCH-minimumSet-E-TFCI E-DCH-MinimumSet-E-TFCI OPTIONAL, + dpcchPowerOffset-SecondaryULFrequency INTEGER(0..7), + pc-Preamble PC-Preamble +} + +Serving-HSDSCH-CellInformation ::= SEQUENCE { + deltaACK DeltaACK OPTIONAL, + deltaNACK DeltaNACK OPTIONAL, + harq-Preamble-Mode HARQ-Preamble-Mode, + primaryCPICH-Info PrimaryCPICH-Info OPTIONAL, + dl-hspdsch-Information DL-HSPDSCH-Information OPTIONAL, + harqInfo HARQ-Info OPTIONAL, + mac-hsResetIndicator ENUMERATED { true } OPTIONAL +} + +Serving-HSDSCH-CellInformation-r7 ::= SEQUENCE { + deltaACK DeltaACK OPTIONAL, + deltaNACK DeltaNACK OPTIONAL, + harq-Preamble-Mode HARQ-Preamble-Mode, + primaryCPICH-Info PrimaryCPICH-Info OPTIONAL, + dl-hspdsch-Information DL-HSPDSCH-Information-r7 OPTIONAL, + harqInfo HARQ-Info-r7 OPTIONAL, + mac-hsResetIndicator ENUMERATED { true } OPTIONAL +} + +Serving-HSDSCH-CellInformation-r8 ::= SEQUENCE { + deltaACK DeltaACK OPTIONAL, + deltaNACK DeltaNACK OPTIONAL, + harq-Preamble-Mode HARQ-Preamble-Mode, + primaryCPICH-Info PrimaryCPICH-Info OPTIONAL, + dl-hspdsch-Information DL-HSPDSCH-Information-r8 OPTIONAL, + harqInfo HARQ-Info-r7 OPTIONAL, + mac-hsResetIndicator ENUMERATED { true } OPTIONAL +} + +Serving-HSDSCH-CellInformation-r9 ::= SEQUENCE { + deltaACK DeltaACK OPTIONAL, + deltaNACK DeltaNACK OPTIONAL, + harq-Preamble-Mode HARQ-Preamble-Mode, + primaryCPICH-Info PrimaryCPICH-Info OPTIONAL, + dl-hspdsch-Information DL-HSPDSCH-Information-r9 OPTIONAL, + harqInfo HARQ-Info-r7 OPTIONAL, + mac-hsResetIndicator ENUMERATED { true } OPTIONAL +} + +Serving-HSDSCH-CellInformation-r11 ::= SEQUENCE { + deltaACK DeltaACK-r11 OPTIONAL, + deltaNACK DeltaNACK-r11 OPTIONAL, + harq-Preamble-Mode HARQ-Preamble-Mode, + primaryCPICH-Info PrimaryCPICH-Info OPTIONAL, + dl-hspdsch-Information DL-HSPDSCH-Information-r11 OPTIONAL, + harqInfo HARQ-Info-r11 OPTIONAL, + mac-hsResetIndicator ENUMERATED { true } OPTIONAL, + mac-hsResetIndicator-assisting ENUMERATED { true } OPTIONAL +} + +SimultaneousSCCPCH-DPCH-Reception ::= CHOICE { + notSupported NULL, + supported SEQUENCE { + maxNoSCCPCH-RL MaxNoSCCPCH-RL, + -- simultaneousSCCPCH-DPCH-DPDCH-Reception is applicable only if + -- the IE Support of PDSCH = TRUE + -- Note: the reference to DPDCH in the element name below is incorrect (see tabular). The + -- name is not changed, to keep it aligned with R99. + simultaneousSCCPCH-DPCH-DPDCH-Reception BOOLEAN + } +} + +SRNC-Identity ::= BIT STRING (SIZE (12)) + +SR-VCC-Info ::= SEQUENCE { + nonce BIT STRING (SIZE (128)) OPTIONAL +} + +SR-VCC-SecurityRABInfo-v860ext ::= SEQUENCE { + sr-vcc-Info SR-VCC-Info, + rab-InfoReplace RAB-InfoReplace +} + +START-Value ::= BIT STRING (SIZE (20)) + +STARTList ::= SEQUENCE (SIZE (1..maxCNdomains)) OF + STARTSingle + +STARTSingle ::= SEQUENCE { + cn-DomainIdentity CN-DomainIdentity, + start-Value START-Value +} + +SystemSpecificCapUpdateReq ::= ENUMERATED { + gsm } + +SystemSpecificCapUpdateReq-v590ext ::= ENUMERATED { + geranIu } + +SystemSpecificCapUpdateReq-r5 ::= ENUMERATED { + gsm, geranIu } + +SystemSpecificCapUpdateReq-r8 ::= ENUMERATED { + gsm, geranIu, eutra, spare5, + spare4, spare3, spare2, spare1 } + +SystemSpecificCapUpdateReqList ::= SEQUENCE (SIZE (1..maxSystemCapability)) OF + SystemSpecificCapUpdateReq + +SystemSpecificCapUpdateReqList-r5 ::= SEQUENCE (SIZE (1..maxSystemCapability)) OF + SystemSpecificCapUpdateReq-r5 + +SystemSpecificCapUpdateReqList-r8 ::= SEQUENCE (SIZE (1..maxSystemCapability)) OF + SystemSpecificCapUpdateReq-r8 + +T-300 ::= ENUMERATED { + ms100, ms200, ms400, ms600, ms800, + ms1000, ms1200, ms1400, ms1600, + ms1800, ms2000, ms3000, ms4000, + ms6000, ms8000 } + +T-301 ::= ENUMERATED { + ms100, ms200, ms400, ms600, ms800, + ms1000, ms1200, ms1400, ms1600, + ms1800, ms2000, ms3000, ms4000, + ms6000, ms8000, spare } + +T-302 ::= ENUMERATED { + ms100, ms200, ms400, ms600, ms800, + ms1000, ms1200, ms1400, ms1600, + ms1800, ms2000, ms3000, ms4000, + ms6000, ms8000, spare } + +T-304 ::= ENUMERATED { + ms100, ms200, ms400, + ms1000, ms2000, spare3, spare2, spare1 } + +T-305 ::= ENUMERATED { + noUpdate, m5, m10, m30, + m60, m120, m360, m720 } + +T-307 ::= ENUMERATED { + s5, s10, s15, s20, + s30, s40, s50, spare } + +T-308 ::= ENUMERATED { + ms40, ms80, ms160, ms320 } + +T-309 ::= INTEGER (1..8) + +T-310 ::= ENUMERATED { + ms40, ms80, ms120, ms160, + ms200, ms240, ms280, ms320 } + +T-311 ::= ENUMERATED { + ms250, ms500, ms750, ms1000, + ms1250, ms1500, ms1750, ms2000 } + +-- The value 0 for T-312 is not used in this version of the specification +T-312 ::= INTEGER (0..15) + +T-313 ::= INTEGER (0..15) + +T-314 ::= ENUMERATED { + s0, s2, s4, s6, s8, + s12, s16, s20 } + +T-315 ::= ENUMERATED { + s0, s10, s30, s60, s180, + s600, s1200, s1800 } + +T-316 ::= ENUMERATED { + s0, s10, s20, s30, s40, + s50, s-inf, spare } + +-- All the values are changed to "infinity" in Rel-5 +T-317 ::= ENUMERATED { + infinity0, infinity1, infinity2, infinity3, infinity4, + infinity5, infinity6, infinity7} + +T-318 ::= ENUMERATED { + ms250, ms500, ms750, ms1000, ms1250, ms1500, + ms1750, ms2000, ms3000, ms4000, ms6000, ms8000, + ms10000, ms12000, ms16000 } + +T-319 ::= ENUMERATED { + ms80, ms160, ms320, ms640, ms1280, ms2560, ms5120 } + +T-321 ::= ENUMERATED { + ms100, ms200, ms400, ms800 } + +T-322 ::= ENUMERATED { m5, m10, m20, m30, m60, + m120, m180, spare1 } + +T-323 ::= ENUMERATED { s0, s5, s10, s20, s30, s60, s90, s120 } + +T-328 ::= ENUMERATED { ms20, ms40, ms60, ms80 } + +T-329 ::= ENUMERATED { s05p, s1, s2, s4 } + +T-CPCH ::= ENUMERATED { + ct0, ct1 } + +TMSI-and-LAI-GSM-MAP ::= SEQUENCE { + tmsi TMSI-GSM-MAP, + lai LAI +} + +TMSI-DS-41 ::= OCTET STRING (SIZE (2..17)) + +TotalRLC-AM-BufferSize ::= ENUMERATED { + dummy, kb10, kb50, kb100, + kb150, kb500, kb1000, spare } + +TotalRLC-AM-BufferSize-r5-ext ::= ENUMERATED { + kb200, kb300, kb400, kb750 } + +TotalRLC-AM-BufferSize-v920ext ::= ENUMERATED { + kb1150, kb1250 } + +TotalRLC-AM-BufferSize-va40ext ::= ENUMERATED { + kb1500, kb1800, kb2300, kb2550 } + +TotalRLC-AM-BufferSize-vb50ext ::= ENUMERATED { + kb3400, kb3500, kb4400, kb4500, kb5000, spare3, spare2, spare1 } + +-- Actual value TransmissionProbability = IE value * 0.125 +TransmissionProbability ::= INTEGER (1..8) + +TransportChannelCapability ::= SEQUENCE { + dl-TransChCapability DL-TransChCapability, + ul-TransChCapability UL-TransChCapability +} + +TurboSupport ::= CHOICE { + notSupported NULL, + supported MaxNoBits +} + +-- Values defined as spare shall not be sent in this version of the protocol. If a spare value is +-- received, it should be interpreted as 'default-RxTX-sparation'. +TxRxFrequencySeparation ::= ENUMERATED { + default-TxRx-separation, spare2, spare1 } + +U-RNTI ::= SEQUENCE { + srnc-Identity SRNC-Identity, + s-RNTI S-RNTI +} + +U-RNTI-Group ::= CHOICE { +-- TABULAR: not following the tabular strictly, but this will most likely save bits + all NULL, + u-RNTI-BitMaskIndex-b1 BIT STRING (SIZE (31)), + u-RNTI-BitMaskIndex-b2 BIT STRING (SIZE (30)), + u-RNTI-BitMaskIndex-b3 BIT STRING (SIZE (29)), + u-RNTI-BitMaskIndex-b4 BIT STRING (SIZE (28)), + u-RNTI-BitMaskIndex-b5 BIT STRING (SIZE (27)), + u-RNTI-BitMaskIndex-b6 BIT STRING (SIZE (26)), + u-RNTI-BitMaskIndex-b7 BIT STRING (SIZE (25)), + u-RNTI-BitMaskIndex-b8 BIT STRING (SIZE (24)), + u-RNTI-BitMaskIndex-b9 BIT STRING (SIZE (23)), + u-RNTI-BitMaskIndex-b10 BIT STRING (SIZE (22)), + u-RNTI-BitMaskIndex-b11 BIT STRING (SIZE (21)), + u-RNTI-BitMaskIndex-b12 BIT STRING (SIZE (20)), + u-RNTI-BitMaskIndex-b13 BIT STRING (SIZE (19)), + u-RNTI-BitMaskIndex-b14 BIT STRING (SIZE (18)), + u-RNTI-BitMaskIndex-b15 BIT STRING (SIZE (17)), + u-RNTI-BitMaskIndex-b16 BIT STRING (SIZE (16)), + u-RNTI-BitMaskIndex-b17 BIT STRING (SIZE (15)), + u-RNTI-BitMaskIndex-b18 BIT STRING (SIZE (14)), + u-RNTI-BitMaskIndex-b19 BIT STRING (SIZE (13)), + u-RNTI-BitMaskIndex-b20 BIT STRING (SIZE (12)), + u-RNTI-BitMaskIndex-b21 BIT STRING (SIZE (11)), + u-RNTI-BitMaskIndex-b22 BIT STRING (SIZE (10)), + u-RNTI-BitMaskIndex-b23 BIT STRING (SIZE (9)), + u-RNTI-BitMaskIndex-b24 BIT STRING (SIZE (8)), + u-RNTI-BitMaskIndex-b25 BIT STRING (SIZE (7)), + u-RNTI-BitMaskIndex-b26 BIT STRING (SIZE (6)), + u-RNTI-BitMaskIndex-b27 BIT STRING (SIZE (5)), + u-RNTI-BitMaskIndex-b28 BIT STRING (SIZE (4)), + u-RNTI-BitMaskIndex-b29 BIT STRING (SIZE (3)), + u-RNTI-BitMaskIndex-b30 BIT STRING (SIZE (2)), + u-RNTI-BitMaskIndex-b31 BIT STRING (SIZE (1)) +} + +U-RNTI-Short ::= SEQUENCE { + srnc-Identity SRNC-Identity, + s-RNTI-2 S-RNTI-2 +} + +UE-BasedNetworkPerformanceMeasurementsParameters ::= SEQUENCE { + supportOfLoggedMeasurementsIdlePCH ENUMERATED { true } OPTIONAL +} + +UE-CapabilityContainer-IEs ::= SEQUENCE { +-- Container for transparent transfer of capability information not related to +-- features for which early implementation is desired + ue-RadioAccessCapability-v690ext UE-RadioAccessCapability-v690ext, + ue-RATSpecificCapability-v690ext InterRAT-UE-RadioAccessCapability-v690ext OPTIONAL, + v6b0NonCriticalExtensions SEQUENCE { + ue-RadioAccessCapability-v6b0ext UE-RadioAccessCapability-v6b0ext-IEs, + v6e0NonCriticalExtensions SEQUENCE { + ue-RadioAccessCapability-v6e0ext UE-RadioAccessCapability-v6e0ext-IEs, + v770NonCriticalExtensions SEQUENCE { + ue-RadioAccessCapability-v770ext UE-RadioAccessCapability-v770ext-IEs, + v790NonCriticalExtensions SEQUENCE { + ue-RadioAccessCapability-v790ext UE-RadioAccessCapability-v790ext-IEs, + v860NonCriticalExtensions SEQUENCE { + ue-RadioAccessCapability-v860ext + UE-RadioAccessCapability-v860ext-IEs, + ue-RATSpecificCapability-v860ext + InterRAT-UE-RadioAccessCapability-v860ext OPTIONAL, + v880NonCriticalExtensions SEQUENCE { + ue-RadioAccessCapability-v880ext + UE-RadioAccessCapability-v880ext-IEs, + v890NonCriticalExtensions SEQUENCE { + ue-RadioAccessCapability-v890ext + UE-RadioAccessCapability-v890ext-IEs, + v920NonCriticalExtensions SEQUENCE { + ue-RadioAccessCapability-v920ext + UE-RadioAccessCapability-v920ext-IEs, + v970NonCriticalExtensions SEQUENCE { + ue-RadioAccessCapability-v970ext + UE-RadioAccessCapability-v970ext-IEs, + va40NonCriticalExtensions SEQUENCE { + ue-RadioAccessCapability-va40ext + UE-RadioAccessCapability-va40ext-IEs, + va60NonCriticalExtensions SEQUENCE { + ue-RadioAccessCapability-va60ext + UE-RadioAccessCapability-va60ext-IEs, + va80NonCriticalExtensions SEQUENCE { + ue-RadioAccessCapability-va80ext + UE-RadioAccessCapability-va80ext-IEs, + laterNonCriticalExtensions + UE-RadioAccessCapability-LaterNonCriticalExtensions OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +UE-RadioAccessCapability-v6b0ext-IEs ::= SEQUENCE { + -- User equipment IEs + supportForSIB11bis ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapability-v6e0ext-IEs ::= SEQUENCE { + -- User equipment IEs + supportForFDPCH ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapability-v770ext-IEs ::= SEQUENCE { + -- User equipment IEs + pdcp-Capability PDCP-Capability-v770ext OPTIONAL, + rlc-Capability RLC-Capability-v770ext, + rf-Capability RF-Capability-v770ext OPTIONAL, + physicalChannelCapability PhysicalChannelCapability-v770ext, + multiModeRAT-Capability MultiModeRAT-Capability-v770ext, + ue-PositioningCapability UE-PositioningCapability-v770ext, + mac-ehsSupport ENUMERATED { true } OPTIONAL, + ue-specificCapabilityInformation UE-SpecificCapabilityInformation-LCRTDD OPTIONAL +} + +UE-RadioAccessCapability-v790ext-IEs ::= SEQUENCE { + -- User equipment IEs + supportForEDPCCHPowerBoosting ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapability-v860ext-IEs ::= SEQUENCE { + -- UE radio access capability + rf-Capability RF-Capability-v860ext OPTIONAL, + physicalChannelCapability PhysicalChannelCapability-v860ext, + multiModeRAT-Capability MultiModeRAT-Capability-v860ext, + ue-PositioningCapability UE-PositioningCapability-v860ext, + measurementCapability MeasurementCapability-v860ext OPTIONAL, + measurementCapabilityTDD MeasurementCapabilityTDD OPTIONAL, + supportOfCommonEDCH ENUMERATED { true } OPTIONAL, + supportOfMACiis ENUMERATED { true } OPTIONAL, + supportOfSPSOperation ENUMERATED { true } OPTIONAL, + supportOfControlChannelDRXOperation ENUMERATED { true } OPTIONAL, + supportOfCSG ENUMERATED { true } OPTIONAL, + -- UE radio access capability extension + ue-RadioAccessCapabBandFDDList3 UE-RadioAccessCapabBandFDDList3 OPTIONAL +} + +UE-RadioAccessCapability-v880ext-IEs ::= SEQUENCE { + -- UE radio access capability + supportForPriorityReselectionInUTRAN ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapability-v890ext-IEs ::= SEQUENCE { + -- UE radio access capability + supportCellSpecificTxDiversityinDC-Operation ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapability-v920ext-IEs ::= SEQUENCE { + -- UE physical channel capability, + ue-RadioAccessCapabBandCombList UE-RadioAccessCapabBandCombList OPTIONAL, + physicalChannelCapability PhysicalChannelCapability-v920ext, + rlc-Capability RLC-Capability-v920ext, + supportOfenhancedTS0 ENUMERATED { true } OPTIONAL, + measurementCapability MeasurementCapability-v920ext OPTIONAL, + -- UE radio access capability + csgProximityIndicationCapability CSG-ProximityIndicationCapability OPTIONAL, + neighCellSI-AcquisitionCapability NeighCellSI-AcquisitionCapability OPTIONAL +} + +UE-RadioAccessCapability-v970ext-IEs ::= SEQUENCE { + -- UE physical channel capability + ue-ExtendedMeasurementSupport ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapability-v9c0ext-IEs ::= SEQUENCE { + -- UE voice over IMS related capability + voiceOverUTRA-PS-HS-Support ENUMERATED { true } OPTIONAL, + srvcc-SupportFromUTRA-to-UTRA ENUMERATED { true } OPTIONAL, + srvcc-SupportFromUTRA-to-GERAN ENUMERATED { true } OPTIONAL, + -- UE radio access capability + ue-supportMac-ehsWindowSizeExtension ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapability-LaterNonCriticalExtensions ::= SEQUENCE { + v9c0NonCriticalExtensions SEQUENCE { + ue-RadioAccessCapability-v9c0ext UE-RadioAccessCapability-v9c0ext-IEs, + vaa0NonCriticalExtensions SEQUENCE { + ue-RadioAccessCapability-vaa0ext UE-RadioAccessCapability-vaa0ext-IEs, + vb50NonCriticalExtensions SEQUENCE { + ue-RadioAccessCapability-vb50ext UE-RadioAccessCapability-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } +} + + +UE-RadioAccessCapability-va40ext-IEs ::= SEQUENCE { + -- UE physical channel capability + ue-RadioAccessCapabBandCombList-va40ext + UE-RadioAccessCapabBandCombList-va40ext OPTIONAL, + physicalChannelCapability PhysicalChannelCapability-va40ext, + rlc-Capability RLC-Capability-va40ext, + measurementCapability MeasurementCapability-va40ext OPTIONAL, + supportOfMUMIMO ENUMERATED { uplink, uplink-and-downlink } OPTIONAL, + supportForDualCellMimoInDifferentBands ENUMERATED { true } OPTIONAL, + ue-BasedNetworkPerformanceMeasurementsParameters + UE-BasedNetworkPerformanceMeasurementsParameters OPTIONAL, + supportOfUTRANANR ENUMERATED { true } OPTIONAL, + -- UE radio access capability extension + ue-RadioAccessCapabBandFDDList4 UE-RadioAccessCapabBandFDDList4 OPTIONAL +} + +UE-RadioAccessCapability-va60ext-IEs ::= SEQUENCE { + ue-RadioAccessCapabBandFDDList4 UE-RadioAccessCapabBandFDDList4-va60ext OPTIONAL +} + +UE-RadioAccessCapability-va80ext-IEs ::= SEQUENCE { + ue-RadioAccessCapabBandFDDList4 UE-RadioAccessCapabBandFDDList4-va80ext OPTIONAL +} + +UE-RadioAccessCapability-vaa0ext-IEs ::= SEQUENCE { + supportOfUMRLCre-establish-via-reconfig ENUMERATED { true } OPTIONAL, + rf-capability RF-Capability-vaa0ext OPTIONAL +} + +UE-RadioAccessCapability-vb50ext-IEs ::= SEQUENCE { + multiModeRAT-Capability MultiModeRAT-Capability-vb50ext, + supportOfCommonERGCHBasedInterferenceControl ENUMERATED { true } OPTIONAL, + supportOfFallbackToR99PRACH ENUMERATED { true } OPTIONAL, + supportOfConcurrentDeployment ENUMERATED { true } OPTIONAL, + supportOfTTIalignmentAndPerHARQProcess ENUMERATED { true } OPTIONAL, + -- UE physical channel capability + ue-RadioAccessCapabBandCombList-vb50ext + UE-RadioAccessCapabBandCombList-vb50ext OPTIONAL, + multiflowCapabBandCombList MultiflowCapabBandCombList OPTIONAL, + physicalChannelCapability PhysicalChannelCapability-vb50ext, + rlc-Capability RLC-Capability-vb50ext, + multiflowCapability MultiflowCapability OPTIONAL, + -- UE radio access capability extension + ue-RadioAccessCapabBandFDDList6 UE-RadioAccessCapabBandFDDList6 OPTIONAL, + -- Measurement capability + measurementCapability MeasurementCapability-vb50ext OPTIONAL, + measurementCapabilityTDD MeasurementCapabilityTDD-vb50ext OPTIONAL, + -- UE voice over IMS related capability + rsrvcc-SupportFromUTRA-CS-to-EUTRA-FDD ENUMERATED { true } OPTIONAL, + rsrvcc-SupportFromUTRA-CS-to-EUTRA-TDD ENUMERATED { true } OPTIONAL, + supportOfHSDPCCHPowerOffsetExtension ENUMERATED { true } OPTIONAL, + supportOfSTTDOnDLControlChannelsWhenMultiflowOperationIsActive ENUMERATED { true } OPTIONAL +} + +UE-ConnTimersAndConstants ::= SEQUENCE { +-- Optional is used also for parameters for which the default value is the last one read in SIB1 +-- t-301 and n-301 should not be used by the UE in this version of the specification + t-301 T-301 DEFAULT ms2000, + n-301 N-301 DEFAULT 2, + t-302 T-302 DEFAULT ms4000, + n-302 N-302 DEFAULT 3, + t-304 T-304 DEFAULT ms2000, + n-304 N-304 DEFAULT 2, + t-305 T-305 DEFAULT m30, + t-307 T-307 DEFAULT s30, + t-308 T-308 DEFAULT ms160, + t-309 T-309 DEFAULT 5, + t-310 T-310 DEFAULT ms160, + n-310 N-310 DEFAULT 4, + t-311 T-311 DEFAULT ms2000, + t-312 T-312 DEFAULT 1, + -- n-312 shall be ignored if n-312 in UE-ConnTimersAndConstants-v3a0ext is present, and the + -- value of that element shall be used instead. + n-312 N-312 DEFAULT s1, + t-313 T-313 DEFAULT 3, + n-313 N-313 DEFAULT s20, + t-314 T-314 DEFAULT s12, + t-315 T-315 DEFAULT s180, + -- n-315 shall be ignored if n-315 in UE-ConnTimersAndConstants-v3a0ext is present, and the + -- value of that element shall be used instead. + n-315 N-315 DEFAULT s1, + t-316 T-316 DEFAULT s30, + t-317 T-317 DEFAULT infinity4 +} + +UE-ConnTimersAndConstants-v3a0ext ::= SEQUENCE { + n-312 N-312ext OPTIONAL, + n-315 N-315ext OPTIONAL +} + +UE-ConnTimersAndConstants-r5 ::= SEQUENCE { +-- Optional is used also for parameters for which the default value is the last one read in SIB1 +-- t-301 and n-301 should not be used by the UE in this version of the specification + t-301 T-301 DEFAULT ms2000, + n-301 N-301 DEFAULT 2, + t-302 T-302 DEFAULT ms4000, + n-302 N-302 DEFAULT 3, + t-304 T-304 DEFAULT ms2000, + n-304 N-304 DEFAULT 2, + t-305 T-305 DEFAULT m30, + t-307 T-307 DEFAULT s30, + t-308 T-308 DEFAULT ms160, + t-309 T-309 DEFAULT 5, + t-310 T-310 DEFAULT ms160, + n-310 N-310 DEFAULT 4, + t-311 T-311 DEFAULT ms2000, + t-312 T-312 DEFAULT 1, + n-312 N-312-r5 DEFAULT s1, + t-313 T-313 DEFAULT 3, + n-313 N-313 DEFAULT s20, + t-314 T-314 DEFAULT s12, + t-315 T-315 DEFAULT s180, + n-315 N-315-r5 DEFAULT s1, + t-316 T-316 DEFAULT s30, + t-317 T-317 DEFAULT infinity4 +} + +UE-ConnTimersAndConstants-v860ext ::= SEQUENCE { + t-323 T-323 OPTIONAL +} + +UE-ConnTimersAndConstants-r11 ::= SEQUENCE { +-- Optional is used also for parameters for which the default value is the last one read in SIB1 +-- t-301 and n-301 should not be used by the UE in this version of the specification + t-301 T-301 DEFAULT ms2000, + n-301 N-301 DEFAULT 2, + t-302 T-302 DEFAULT ms4000, + n-302 N-302 DEFAULT 3, + t-304 T-304 DEFAULT ms2000, + n-304 N-304 DEFAULT 2, + t-305 T-305 DEFAULT m30, + t-307 T-307 DEFAULT s30, + t-308 T-308 DEFAULT ms160, + t-309 T-309 DEFAULT 5, + t-310 T-310 DEFAULT ms160, + n-310 N-310 DEFAULT 4, + t-311 T-311 DEFAULT ms2000, + t-312 T-312 DEFAULT 1, + n-312 N-312-r5 DEFAULT s1, + t-313 T-313 DEFAULT 3, + n-313 N-313 DEFAULT s20, + t-314 T-314 DEFAULT s12, + t-315 T-315 DEFAULT s180, + n-315 N-315-r5 DEFAULT s1, + t-316 T-316 DEFAULT s30, + t-317 T-317 DEFAULT infinity4, + t-323 T-323 OPTIONAL +} + +UE-GANSSPositioning-Capability ::= SEQUENCE { + networkAssistedGANSS-supportedList NetworkAssistedGANSS-Supported-List OPTIONAL +} + +UE-GANSSPositioning-Capability-v860ext-IEs ::= SEQUENCE { + networkAssistedGANSS-supportedList NetworkAssistedGANSS-Supported-List-v860ext OPTIONAL +} + +UE-IdleTimersAndConstants ::= SEQUENCE { + t-300 T-300, + n-300 N-300, + t-312 T-312, + -- n-312 shall be ignored if n-312 in UE-IdleTimersAndConstants-v3a0ext is present, and the + -- value of that element shall be used instead. + n-312 N-312 +} + +UE-HSPA-Identities-r6 ::= SEQUENCE { + new-H-RNTI H-RNTI OPTIONAL, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL +} + +UE-IdleTimersAndConstants-v3a0ext ::= SEQUENCE { + n-312 N-312ext OPTIONAL +} + +UE-MultiModeRAT-Capability ::= SEQUENCE { + multiRAT-CapabilityList MultiRAT-Capability, + multiModeCapability MultiModeCapability +} + +UE-PowerClass ::= INTEGER (1..4) + +UE-PowerClassExt ::= ENUMERATED {class1, class2, class3, class4, + spare4, spare3, spare2, spare1 } + +UE-RadioAccessCapability ::= SEQUENCE { + -- UE-RadioAccessCapability is compatible with R99, although accessStratumReleaseIndicator + -- is removed from this IE, since its encoding did not result in bits. The + -- accessStratumReleaseIndicator is provided in the relevant REL-4 extension IEs. + pdcp-Capability PDCP-Capability, + rlc-Capability RLC-Capability, + transportChannelCapability TransportChannelCapability, + rf-Capability RF-Capability, + physicalChannelCapability PhysicalChannelCapability, + ue-MultiModeRAT-Capability UE-MultiModeRAT-Capability, + securityCapability SecurityCapability, + ue-positioning-Capability UE-Positioning-Capability, + measurementCapability MeasurementCapability OPTIONAL +} + +UE-RadioAccessCapabilityInfo ::= SEQUENCE { + ue-RadioAccessCapability UE-RadioAccessCapability, + ue-RadioAccessCapability-v370ext UE-RadioAccessCapability-v370ext +} + +UE-RadioAccessCapability-v370ext ::= SEQUENCE { + ue-RadioAccessCapabBandFDDList UE-RadioAccessCapabBandFDDList +} + +UE-RadioAccessCapability-v380ext ::= SEQUENCE { + ue-PositioningCapabilityExt-v380 UE-PositioningCapabilityExt-v380 +} + +UE-RadioAccessCapability-v3a0ext ::= SEQUENCE { + ue-PositioningCapabilityExt-v3a0 UE-PositioningCapabilityExt-v3a0 +} + +UE-RadioAccessCapability-v3g0ext ::= SEQUENCE { + ue-PositioningCapabilityExt-v3g0 UE-PositioningCapabilityExt-v3g0 +} + +UE-RadioAccessCapability-v650ext ::= SEQUENCE { + ue-RadioAccessCapabBandFDDList2 UE-RadioAccessCapabBandFDDList2, + -- This IE shall be included if the UE also supports Band I-VII + ue-RadioAccessCapabBandFDDList-ext UE-RadioAccessCapabBandFDDList-ext OPTIONAL +} + +UE-RadioAccessCapability-v690ext ::= SEQUENCE { + physicalchannelcapability-edch PhysicalChannelCapability-edch-r6, + -- TABULAR: deviceType is MD in tabular description + -- Default value is 'doesBenefitFromBatteryConsumptionOptimisation' + deviceType ENUMERATED { doesNotBenefitFromBatteryConsumptionOptimisation } OPTIONAL +} + +UE-RadioAccessCapability-v7e0ext ::= SEQUENCE { + -- User equipment IEs + supportForTwoDRXSchemesInPCH ENUMERATED { true } OPTIONAL, + supportEDPDCHPowerInterpolation ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapability-v7f0ext ::= SEQUENCE { + supportofTxDivOnNonMIMOChannel ENUMERATED { true } OPTIONAL, + -- IE physicalChannelCapability-LCR and ue-RadioAccessCapabilityComp-TDD128 shall only be + -- included in InterRATHandoverInfo for 1.28 Mcps TDD, otherwise these IEs are not needed here. + physicalChannelCapability-LCR PhysicalChannelCapability-LCR-r4 OPTIONAL, + ue-RadioAccessCapabilityComp-TDD128 UE-RadioAccessCapabilityComp-TDD128-v7f0ext OPTIONAL +} + +UE-RadioAccessCapabilityInfo-v770ext ::= SEQUENCE { + rf-Capability RF-Capability-v770ext OPTIONAL, + physicalChannelCapability PhysicalChannelCapabilityInfo-v770ext, + ganssSupportIndication ENUMERATED { true } OPTIONAL, + mac-ehsSupport ENUMERATED { true } OPTIONAL, + ue-SpecificCapabilityInformation UE-SpecificCapabilityInformation-LCRTDD OPTIONAL +} + +UE-RadioAccessCapabilityInfo-TDD128-v8b0ext ::= SEQUENCE { + -- INTER RAT HANDOVER INFO + measurementCapabilityTDD MeasurementCapabilityTDD OPTIONAL, + hSDSCH-physical-layer-category-extension + HSDSCH-physical-layer-category-extension OPTIONAL +} + +UE-RadioAccessCapabilityInfo-TDD128-vb50ext ::= SEQUENCE { + -- INTER RAT HANDOVER INFO + measurementCapabilityTDD MeasurementCapabilityTDD-vb50ext OPTIONAL +} + +UE-RadioAccessCapability-v860ext ::= SEQUENCE { + ue-RadioAccessCapabBandFDDList3 UE-RadioAccessCapabBandFDDList3 +} + +UE-RadioAccessCapability-v880ext ::= SEQUENCE { + -- INTER RAT HANDOVER INFO + supportForPriorityReselectionInUTRAN ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapability-v890ext ::= SEQUENCE { + -- UE radio access capability + supportCellSpecificTxDiversityinDC-Operation ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapability-v920ext ::= SEQUENCE { + supportOfenhancedTS0 ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapability-va40ext ::= SEQUENCE { + ue-RadioAccessCapabBandFDDList4 UE-RadioAccessCapabBandFDDList4 +} + +UE-RadioAccessCapability-va60ext ::= SEQUENCE { + ue-RadioAccessCapabBandFDDList4 UE-RadioAccessCapabBandFDDList4-va60ext OPTIONAL +} + +UE-RadioAccessCapability-va80ext ::= SEQUENCE { + ue-RadioAccessCapabBandFDDList4-va60ext UE-RadioAccessCapabBandFDDList4-va60ext OPTIONAL, + ue-RadioAccessCapabBandFDDList4-va80ext UE-RadioAccessCapabBandFDDList4-va80ext OPTIONAL +} + +UE-RadioAccessCapability-vb50ext ::= SEQUENCE { + ue-RadioAccessCapabBandFDDList6 UE-RadioAccessCapabBandFDDList6 OPTIONAL +} + +UE-RadioAccessCapabBand-va40ext ::= SEQUENCE { + ue-RadioAccessCapabBandFDDList5 UE-RadioAccessCapabBandFDDList5, + -- This IE shall be included if the UE also supports Band I – Band XXII + ue-RadioAccessCapabBandFDDList-ext2 UE-RadioAccessCapabBandFDDList-ext2 OPTIONAL +} + +UE-RadioAccessCapabBandFDDList2 ::= SEQUENCE (SIZE (1..maxFreqBandsFDD)) OF + UE-RadioAccessCapabBandFDD2 + +UE-RadioAccessCapabBandFDDList3 ::= SEQUENCE (SIZE (1..maxFreqBandsFDD)) OF + UE-RadioAccessCapabBandFDD3 + +UE-RadioAccessCapabBandFDDList4 ::= SEQUENCE (SIZE (1..maxFreqBandsFDD)) OF + UE-RadioAccessCapabBandFDD4 + +UE-RadioAccessCapabBandFDDList4-va60ext ::= SEQUENCE (SIZE (1..maxFreqBandsFDD)) OF + UE-RadioAccessCapabBandFDD4-va60ext + +UE-RadioAccessCapabBandFDDList4-va80ext ::= SEQUENCE (SIZE (1..maxFreqBandsFDD-ext3)) OF + UE-RadioAccessCapabBandFDD4-va80ext + +UE-RadioAccessCapabBandFDDList5 ::= SEQUENCE (SIZE (1..maxFreqBandsFDD-ext2)) OF + UE-RadioAccessCapabBandFDD5 + +UE-RadioAccessCapabBandFDDList6 ::= SEQUENCE (SIZE (1..maxFreqBandsFDD3)) OF + UE-RadioAccessCapabBandFDD6 + +UE-RadioAccessCapabBandFDD2 ::= SEQUENCE { + radioFrequencyBandFDD2 RadioFrequencyBandFDD2, + fddRF-Capability SEQUENCE { + ue-PowerClass UE-PowerClassExt, + txRxFrequencySeparation TxRxFrequencySeparation + } OPTIONAL, + measurementCapability2 MeasurementCapabilityExt2 +} + +UE-RadioAccessCapabBandFDD3 ::= SEQUENCE { + -- UE may omit both IEs if this IE indicates the same EUTRA compressed + -- mode capability for all supported UTRA bands + -- Otherwise, the UE shall include either one of the following OPTIONAL IEs. + radioFrequencyBandFDD RadioFrequencyBandFDD OPTIONAL, + radioFrequencyBandFDD2 RadioFrequencyBandFDD2 OPTIONAL, + measurementCapability3 MeasurementCapabilityExt3 +} + +UE-RadioAccessCapabBandFDD4 ::= SEQUENCE { + -- UE may omit all the radioFrequencyBand IEs if this IE indicates the same + -- capability for all supported UTRA bands + -- Otherwise, the UE shall include either one of the following OPTIONAL IEs. + radioFrequencyBandFDD RadioFrequencyBandFDD OPTIONAL, + radioFrequencyBandFDD2 RadioFrequencyBandFDD2 OPTIONAL, + radioFrequencyBandFDD3 RadioFrequencyBandFDD3 OPTIONAL, + additionalSecondaryCells ENUMERATED { a1, a2 } OPTIONAL, + nonContiguousMultiCellCombinationList NonContiguousMultiCellCombinationList OPTIONAL +} + +UE-RadioAccessCapabBandFDD4-va60ext ::= SEQUENCE { + supportofULOLTD ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapabBandFDD4-va80ext ::= SEQUENCE { + -- UE may omit all the radioFrequencyBand IEs if this IE indicates the same + -- capability for all supported UTRA bands + -- Otherwise, the UE shall include either one of the following OPTIONAL IEs. + radioFrequencyBandFDD RadioFrequencyBandFDD OPTIONAL, + radioFrequencyBandFDD2 RadioFrequencyBandFDD2 OPTIONAL, + radioFrequencyBandFDD3 RadioFrequencyBandFDD3 OPTIONAL, + additionalSecondaryCells ENUMERATED { a1, a2 } OPTIONAL, + nonContiguousMultiCellCombinationList NonContiguousMultiCellCombinationList OPTIONAL, + supportofULOLTD ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapabBandFDD5 ::= SEQUENCE { + radioFrequencyBandFDD3 RadioFrequencyBandFDD3, + fddRF-Capability SEQUENCE { + ue-PowerClass UE-PowerClassExt, + txRxFrequencySeparation TxRxFrequencySeparation + } OPTIONAL, + measurementCapability4 MeasurementCapabilityExt4 +} + +UE-RadioAccessCapabBandFDD6 ::= SEQUENCE { + -- UE may omit all the radioFrequencyBand IEs if this IE indicates the same + -- capability for all supported UTRA bands + -- Otherwise, the UE shall include either one of the following OPTIONAL IEs. + radioFrequencyBandFDD RadioFrequencyBandFDD OPTIONAL, + radioFrequencyBandFDD2 RadioFrequencyBandFDD2 OPTIONAL, + radioFrequencyBandFDD3 RadioFrequencyBandFDD3 OPTIONAL, + additionalSecondaryCells2 ENUMERATED { a3, a4, a5, a6 } OPTIONAL, + supportOfULCLTD ENUMERATED { true } OPTIONAL, + multiflowCapability MultiflowPerBandCapability OPTIONAL, + mimo4x4CapabilityBand ENUMERATED { true } OPTIONAL, + supportOfULMIMO ENUMERATED { true } OPTIONAL, + measurementCapability5 MeasurementCapabilityExt5, + freqSpecificCompressedModeForNonContiguous ENUMERATED { true } OPTIONAL +} + +UE-PositioningCapabilityExt-v380 ::= SEQUENCE { + rx-tx-TimeDifferenceType2Capable BOOLEAN +} + +UE-PositioningCapabilityExt-v3a0 ::= SEQUENCE { + validity-CellPCH-UraPCH ENUMERATED { true } +} + +UE-PositioningCapabilityExt-v3g0 ::= SEQUENCE { + sfn-sfnType2Capability ENUMERATED { true } +} + +UE-PositioningCapability-v770ext ::= SEQUENCE { + ue-GANSSPositioning-Capability UE-GANSSPositioning-Capability OPTIONAL +} + +UE-PositioningCapability-v860ext ::= SEQUENCE { + ue-GANSSPositioning-Capability-v860ext + UE-GANSSPositioning-Capability-v860ext-IEs OPTIONAL +} + +UE-RadioAccessCapabBandCombList ::= SEQUENCE (SIZE (1..16)) OF BandComb + +UE-RadioAccessCapabBandFDDList ::= SEQUENCE (SIZE (1..maxFreqBandsFDD)) OF + UE-RadioAccessCapabBandFDD + +UE-RadioAccessCapabBandFDDList-ext ::= SEQUENCE (SIZE (1..maxFreqBandsFDD)) OF + UE-RadioAccessCapabBandFDD-ext + +UE-RadioAccessCapabBandFDDList-ext2 ::= SEQUENCE (SIZE (1..maxFreqBandsFDD2)) OF + UE-RadioAccessCapabBandFDD-ext2 + +UE-RadioAccessCapabBandFDD ::= SEQUENCE{ + radioFrequencyBandFDD RadioFrequencyBandFDD, + fddRF-Capability SEQUENCE { + ue-PowerClass UE-PowerClassExt, + txRxFrequencySeparation TxRxFrequencySeparation + } OPTIONAL, + measurementCapability MeasurementCapabilityExt +} + +UE-RadioAccessCapabBandFDD-ext ::= SEQUENCE { + radioFrequencyBandFDD RadioFrequencyBandFDD, + compressedModeMeasCapabFDDList-ext CompressedModeMeasCapabFDDList-ext +} + +UE-RadioAccessCapabBandFDD-ext2 ::= SEQUENCE { + radioFrequencyBandFDD RadioFrequencyBandFDD OPTIONAL, + radioFrequencyBandFDD2 RadioFrequencyBandFDD2 OPTIONAL, + compressedModeMeasCapabFDDList3 CompressedModeMeasCapabFDDList3 +} + +UE-RadioAccessCapability-v4b0ext ::= SEQUENCE { + pdcp-Capability-r4-ext PDCP-Capability-r4-ext, + tdd-CapabilityExt SEQUENCE { + rf-Capability RF-Capability-r4-ext, + physicalChannelCapability-LCR PhysicalChannelCapability-LCR-r4, + measurementCapability-r4-ext MeasurementCapability-r4-ext + } OPTIONAL, + -- IE " AccessStratumReleaseIndicator" is not needed in RRC CONNECTION SETUP COMPLETE + accessStratumReleaseIndicator AccessStratumReleaseIndicator OPTIONAL +} + +UE-RadioAccessCapabilityComp ::= SEQUENCE { + totalAM-RLCMemoryExceeds10kB BOOLEAN, + rf-CapabilityComp RF-CapabilityComp +} + +UE-RadioAccessCapabilityComp-ext ::= SEQUENCE { + rf-CapabilityFDDComp RF-CapabBandListFDDComp-ext +} + +UE-RadioAccessCapabilityComp-TDD128-v7f0ext ::= SEQUENCE { + hSDSCH-physical-layer-category + HSDSCH-physical-layer-category OPTIONAL, + multiCarrier-physical-layer-category + MultiCarrier-HSDSCH-physical-layer-category OPTIONAL, + tdd-edch-PhysicalLayerCategory INTEGER (1..6) OPTIONAL, + dl-CapabilityWithSimultaneousHS-DSCHConfig + DL-CapabilityWithSimultaneousHS-DSCHConfig OPTIONAL, + supportForCSVoiceoverHSPA ENUMERATED { true } OPTIONAL, + totalRLC-AM-BufferSize TotalRLC-AM-BufferSize-r5-ext OPTIONAL +} + +UE-RadioAccessCapabilityComp-v770ext ::= SEQUENCE { + rf-CapabilityComp RF-CapabilityComp-v770ext, + securityCapabilityIndication ENUMERATED { true } OPTIONAL, + ganssSupportIndication ENUMERATED { true } OPTIONAL, + mac-ehsSupport ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapabilityComp2 ::= SEQUENCE { + fddPhysicalChannelCapab-hspdsch-edch SEQUENCE { + dl-CapabilityWithSimultaneousHS-DSCHConfig + DL-CapabilityWithSimultaneousHS-DSCHConfig OPTIONAL, + physicalChannelCapabComp-hspdsch-r6 HSDSCH-physical-layer-category, + physicalChannelCapability-edch-r6 PhysicalChannelCapability-edch-r6 + } OPTIONAL +} + +UE-RadioAccessCapabilityComp2-v770ext ::= SEQUENCE { + hsdsch-physical-layer-category-ext HSDSCH-physical-layer-category-ext OPTIONAL, + edch-PhysicalLayerCategory-extension INTEGER (7) OPTIONAL, + hsscchlessHsdschOperation ENUMERATED { true } OPTIONAL, + enhancedFdpch ENUMERATED { true } OPTIONAL, + hsdschReception-CellFach ENUMERATED { true } OPTIONAL, + hsdschReception-CellUraPch ENUMERATED { true } OPTIONAL, + discontinuousDpcchTransmission ENUMERATED { true } OPTIONAL, + slotFormat4 ENUMERATED { true } OPTIONAL, + pdcp-Capability PDCP-Capability-v770ext OPTIONAL +} + +UE-RadioAccessCapabilityComp2-v7f0ext ::= SEQUENCE { + supportofTxDivOnNonMIMOChannel ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapabilityComp2-v860ext ::= SEQUENCE { + hsdsch-physical-layer-category-ext2 HSDSCH-physical-layer-category-ext2 OPTIONAL, + supportOfMACiis ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapabilityComp2-v920ext ::= SEQUENCE { + hsdsch-physical-layer-category-ext3 HSDSCH-physical-layer-category-ext3 OPTIONAL, + edch-PhysicalLayerCategory-extension2 INTEGER (8..9) OPTIONAL +} + +UE-RadioAccessCapabilityComp2-va40ext ::= SEQUENCE { + hsdsch-physical-layer-category-ext4 HSDSCH-physical-layer-category-ext4 OPTIONAL, + hsdsch-physical-layer-category-ext5 HSDSCH-physical-layer-category-ext5 OPTIONAL +} + +UE-RadioAccessCapabilityComp2-vb50ext ::= SEQUENCE { + hsdsch-physical-layer-category-ext6 HSDSCH-physical-layer-category-ext6 OPTIONAL, + hsdsch-physical-layer-category-ext7 HSDSCH-physical-layer-category-ext7 OPTIONAL, + hsdsch-physical-layer-category-ext8 HSDSCH-physical-layer-category-ext8 OPTIONAL, + edch-PhysicalLayerCategory-extension3 INTEGER (10..12) OPTIONAL, + supportOfHSDPCCHPowerOffsetExtension ENUMERATED { true } OPTIONAL +} + +UE-RadioAccessCapabilityComp-TDD128 ::= SEQUENCE { + tdd128RF-Capability RadioFrequencyBandTDDextList OPTIONAL, + supportOfSFModeForHSPDSCHDualStream ENUMERATED { sf1, sf1sf16 } OPTIONAL, + supportOfCommonEDCH ENUMERATED { true } OPTIONAL, + supportOfMACiis ENUMERATED { true } OPTIONAL, + supportOfSPSOperation ENUMERATED { true } OPTIONAL, + supportOfControlChannelDRXOperation ENUMERATED { true } OPTIONAL +} + +RF-CapabilityComp ::= SEQUENCE { + fdd CHOICE { + notSupported NULL, + supported RF-CapabBandListFDDComp + }, + tdd384-RF-Capability CHOICE { + notSupported NULL, + supported RadioFrequencyBandTDDList + }, + tdd128-RF-Capability CHOICE { + notSupported NULL, + supported RadioFrequencyBandTDDList + } +} + +RF-CapabilityComp-v770ext ::= SEQUENCE { + -- If support of TDD384 and/or TDD128 RF capability is indicated in IEs 'RF-CapabilityComp', + -- the corresponding IE 'RadioFrequencyBandTDDList-r7' shall be included in this IE. + tdd384-RF-Capability RadioFrequencyBandTDDList-r7 OPTIONAL, + tdd768-RF-Capability CHOICE { + notSupported NULL, + supported RadioFrequencyBandTDDList-r7 + }, + tdd128-RF-Capability RadioFrequencyBandTDDList-r7 OPTIONAL +} + +-- NOTE: This IE defines the supported TX/RX frequency separation for the respective supported +-- frequency band. Values defined as spare shall not be sent in this version of the protocol. +-- If a spare value is received, it should be interpreted as 'default-RxTX-sparation'. +RF-CapabBandFDDComp ::= ENUMERATED { notSupported, + default-TxRx-separation, spare2, spare1 } + +RF-CapabBandListFDDComp ::= SEQUENCE (SIZE (1..maxFreqBandsFDD)) OF + -- The first entry corresponds with the first value of IE RadioFrequencyBandFDD, + -- fdd2100, and so on. No more than seven entries should be included in this IE. The + -- 8'th entry, if present, shall be ignored. + -- An extension of this IE may be provided using the IE 'RF-CapabBandListFDDComp-ext'. + RF-CapabBandFDDComp + +RF-CapabBandListFDDComp-ext ::= SEQUENCE (SIZE (1..maxFreqBandsFDD-ext)) OF + -- The first entry corresponds with the first value of IE RadioFrequencyBandFDD2, + -- bandVIII, and so on. + RF-CapabBandFDDComp + +RF-CapabBandListFDDComp-ext2 ::= SEQUENCE (SIZE (1..maxFreqBandsFDD-ext2)) OF + -- The first entry corresponds with the first value of IE RadioFrequencyBandFDD3, + -- 23 (Band XXIII), and so on. + RF-CapabBandFDDComp + +UE-RadioAccessCapabBandCombList-va40ext ::= SEQUENCE (SIZE (1..16)) OF SupportedCarrierCombination + +UE-RadioAccessCapabBandCombList-vb50ext ::= SEQUENCE (SIZE (1..16)) OF + SupportedCarrierCombination-ext + +SupportedCarrierCombination ::= SEQUENCE { + carrierCombination12 BOOLEAN, + carrierCombination21 BOOLEAN, + carrierCombination13 BOOLEAN, + carrierCombination31 BOOLEAN, + carrierCombination22 BOOLEAN +} + +SupportedCarrierCombination-ext ::= SEQUENCE { + carrierCombination14 BOOLEAN, + carrierCombination41 BOOLEAN, + carrierCombination15 BOOLEAN, + carrierCombination51 BOOLEAN, + carrierCombination16 BOOLEAN, + carrierCombination61 BOOLEAN, + carrierCombination17 BOOLEAN, + carrierCombination71 BOOLEAN, + carrierCombination23 BOOLEAN, + carrierCombination32 BOOLEAN, + carrierCombination24 BOOLEAN, + carrierCombination42 BOOLEAN, + carrierCombination25 BOOLEAN, + carrierCombination52 BOOLEAN, + carrierCombination26 BOOLEAN, + carrierCombination62 BOOLEAN, + carrierCombination33 BOOLEAN, + carrierCombination34 BOOLEAN, + carrierCombination43 BOOLEAN, + carrierCombination44 BOOLEAN, + carrierCombination35 BOOLEAN, + carrierCombination53 BOOLEAN +} + +UE-RadioAccessCapability-v590ext ::= SEQUENCE { + dl-CapabilityWithSimultaneousHS-DSCHConfig + DL-CapabilityWithSimultaneousHS-DSCHConfig OPTIONAL, + pdcp-Capability-r5-ext PDCP-Capability-r5-ext, + rlc-Capability-r5-ext RLC-Capability-r5-ext, + physicalChannelCapability PhysicalChannelCapability-hspdsch-r5, + multiModeRAT-Capability-v590ext MultiModeRAT-Capability-v590ext +} + +UE-RadioAccessCapability-v5c0ext ::= SEQUENCE { + pdcp-Capability-r5-ext2 PDCP-Capability-r5-ext2 +} + +UE-RadioAccessCapability-v680ext ::= SEQUENCE { + multiModeRAT-Capability-v680ext MultiModeRAT-Capability-v680ext +} + +UL-OLTD-InfoFDD ::= SEQUENCE { + ulOLTDActivation ENUMERATED {true} +} + +UL-PhysChCapabilityFDD ::= SEQUENCE { + maxNoDPDCH-BitsTransmitted MaxNoDPDCH-BitsTransmitted, + -- dummy is not used in this version of the specification and + -- it should be ignored by the receiver. + dummy BOOLEAN +} + +UL-PhysChCapabilityFDD-r6 ::= SEQUENCE { + maxNoDPDCH-BitsTransmitted MaxNoDPDCH-BitsTransmitted, + physicalchannelcapability-edch PhysicalChannelCapability-edch-r6 +} + +UL-PhysChCapabilityFDD-v770ext ::= SEQUENCE { + edch-PhysicalLayerCategory-extension INTEGER (7) OPTIONAL, + discontinuousDpcchTransmission ENUMERATED { true } OPTIONAL, + slotFormat4 ENUMERATED { true } OPTIONAL +} + +UL-PhysChCapabilityFDD-v920ext ::= SEQUENCE { + edch-PhysicalLayerCategory-extension2 INTEGER (8..9) OPTIONAL +} +UL-PhysChCapabilityFDD-vb50ext ::= SEQUENCE { + edch-PhysicalLayerCategory-extension3 INTEGER (10..12) OPTIONAL +} + +UL-PhysChCapabilityTDD ::= SEQUENCE { + maxTS-PerFrame MaxTS-PerFrame, + maxPhysChPerTimeslot MaxPhysChPerTimeslot, + minimumSF MinimumSF-UL, + supportOfPUSCH BOOLEAN +} + +UL-PhysChCapabilityTDD-384-v770ext ::= SEQUENCE { + tdd384-edch CHOICE { + supported SEQUENCE { + tdd-edch-PhysicalLayerCategory INTEGER (1..16) + }, + unsupported NULL + } +} + +UL-PhysChCapabilityTDD-LCR-r4 ::= SEQUENCE { + maxTS-PerSubFrame MaxTS-PerSubFrame-r4, + maxPhysChPerTimeslot MaxPhysChPerTimeslot, + minimumSF MinimumSF-UL, + supportOfPUSCH BOOLEAN, + supportOf8PSK BOOLEAN +} + +UL-PhysChCapabilityTDD-128-v770ext ::= SEQUENCE { + maxPhysChPerTimeslot MaxPhysChPerTimeslot-LCR-r7, + tdd128-edch CHOICE { + supported SEQUENCE { + tdd-edch-PhysicalLayerCategory INTEGER (1..6) + }, + unsupported NULL + } +} + +UL-PhysChCapabilityInfoTDD-128-v770ext ::= SEQUENCE { + maxPhysChPerTimeslot MaxPhysChPerTimeslot-LCR-r7 +} + +UL-PhysChCapabilityInfoTDD-128-va40ext ::= SEQUENCE { + multiCarrier-EdchPhysicalLayerCategory-128 INTEGER (1..8) OPTIONAL, + maxNumberCarrierForMCHSUPA-TDD ENUMERATED {nf-2, nf-3, nf-6, spare} OPTIONAL +} + +UL-PhysChCapabilityTDD-768 ::= SEQUENCE { + maxTS-PerFrame MaxTS-PerFrame, + maxPhysChPerTimeslot MaxPhysChPerTimeslot, + minimumSF MinimumSF-UL, + supportOfPUSCH BOOLEAN, + tdd384-edch CHOICE { + supported SEQUENCE { + tdd-edch-PhysicalLayerCategory INTEGER (1..16) + }, + unsupported NULL + } +} + +UL-SecondaryCellInfoFDD ::= CHOICE { + continue NULL, + newConfiguration SEQUENCE { + secondaryServingEDCHCell-Info SecondaryServingEDCHCell-Info OPTIONAL, + secondaryEDCH-Info-Common SecondaryEDCH-Info-Common OPTIONAL, + dl-InformationPerSecondaryRL-List DL-InformationPerSecondaryRL-List OPTIONAL + } +} + +PhysicalChannelCapability-edch-r6 ::= SEQUENCE { + fdd-edch CHOICE { + supported SEQUENCE { + edch-PhysicalLayerCategory INTEGER (1..16) + }, + unsupported NULL + } +} + +UL-TransChCapability ::= SEQUENCE { + maxNoBitsTransmitted MaxNoBits, + maxConvCodeBitsTransmitted MaxNoBits, + turboEncodingSupport TurboSupport, + maxSimultaneousTransChs MaxSimultaneousTransChsUL, + modeSpecificInfo CHOICE { + fdd NULL, + tdd SEQUENCE { + maxSimultaneousCCTrCH-Count MaxSimultaneousCCTrCH-Count + } + }, + maxTransmittedBlocks MaxTransportBlocksUL, + maxNumberOfTFC MaxNumberOfTFC-UL, + maxNumberOfTF MaxNumberOfTF +} + +UE-Positioning-Capability ::= SEQUENCE { + standaloneLocMethodsSupported BOOLEAN, + ue-BasedOTDOA-Supported BOOLEAN, + networkAssistedGPS-Supported NetworkAssistedGPS-Supported, + supportForUE-GPS-TimingOfCellFrames BOOLEAN, + supportForIPDL BOOLEAN +} + +UE-SecurityInformation ::= SEQUENCE { + start-CS START-Value +} + +UE-SecurityInformation2 ::= SEQUENCE { + start-PS START-Value +} + +UE-SpecificCapabilityInformation-LCRTDD ::= ENUMERATED { + nF, + nFMc-TriRx-UniTx, + nFMc-TriRx-TriTx, + nFMc-HexRx-UniTx, + nFMc-HexRx-TriTx, + nFMc-HexRx-HexTx, + nFMc-TwoRx-UniTx-Discontiguous, + nFMc-TwoRx-TwoTx-Discontiguous, + nFMc-TwoRx-UniTx-Contiguous, + nFMc-TwoRx-TwoTx-Contiguous, + spare6, + spare5, + spare4, + spare3, + spare2, + spare1 } + +URA-UpdateCause ::= ENUMERATED { + changeOfURA, + periodicURAUpdate, + dummy, + spare1 } + +UTRAN-DRX-CycleLengthCoefficient ::= INTEGER (3..9) + +UTRAN-DRX-CycleLengthCoefficient-r7 ::= SEQUENCE { + drx-CycleLengthCoefficient INTEGER (3..9), + drx-CycleLengthCoefficient2 INTEGER (3..9) OPTIONAL, + timeForDRXCycle2 T-319 OPTIONAL +} + +WaitTime ::= INTEGER (0..15) + +-- *************************************************** +-- +-- RADIO BEARER INFORMATION ELEMENTS (10.3.4) +-- +-- *************************************************** + +AlgorithmSpecificInfo ::= CHOICE { + rfc2507-Info RFC2507-Info +} + +AlgorithmSpecificInfo-r4 ::= CHOICE { + rfc2507-Info RFC2507-Info, + rfc3095-Info RFC3095-Info-r4 +} + +CID-InclusionInfo-r4 ::= ENUMERATED { + pdcp-Header, + rfc3095-PacketFormat } + +CommonRBMappingInfo ::= SEQUENCE { + logicalChannelIdentity LogicalChannelIdentity, + mac-ehs-QueueId MAC-ehs-QueueId +} + +-- Upper limit of COUNT-C is 2^32 - 1 +COUNT-C ::= INTEGER (0..4294967295) + +-- Upper limit of COUNT-C-MSB is 2^25 - 1 +COUNT-C-MSB ::= INTEGER (0..33554431) + +CS-HSPA-Information ::= SEQUENCE { + ul-AMR-Rate UL-AMR-Rate OPTIONAL, + maxCS-Delay MaxCS-Delay +} + +DefaultConfigForCellFACH ::= SEQUENCE { + defaultConfigMode DefaultConfigMode, + defaultConfigIdForCellFACH DefaultConfigIdForCellFACH +} + +DefaultConfigIdentity ::= INTEGER (0..10) + +DefaultConfigIdentity-r4 ::= INTEGER (0..12) + +DefaultConfigIdentity-r5 ::= INTEGER (0..13) + +-- DefaultConfigIdentity-r6 values 25..31 are spare and shall not be used in this version of +-- the protocol +DefaultConfigIdentity-r6 ::= INTEGER (0..31) + +-- DefaultConfigIdForCellFACH values 1..15 are spare and shall not be used in this version of +-- the protocol +DefaultConfigIdForCellFACH ::= INTEGER (0..15) + +DefaultConfigMode ::= ENUMERATED { + fdd, + tdd } + +DDI ::= INTEGER (0..62) + +DL-AM-RLC-Mode ::= SEQUENCE { + inSequenceDelivery BOOLEAN, + receivingWindowSize ReceivingWindowSize, + dl-RLC-StatusInfo DL-RLC-StatusInfo +} + +DL-AM-RLC-Mode-r5 ::= SEQUENCE { + dl-RLC-PDU-size OctetModeRLC-SizeInfoType1, + inSequenceDelivery BOOLEAN, + receivingWindowSize ReceivingWindowSize, + dl-RLC-StatusInfo DL-RLC-StatusInfo +} + +DL-AM-RLC-Mode-r7 ::= SEQUENCE { + dl-RLC-PDU-size CHOICE { + fixedSize OctetModeRLC-SizeInfoType1, + flexibleSize ENUMERATED { size7, size15 } + }, + inSequenceDelivery BOOLEAN, + receivingWindowSize ReceivingWindowSize, + dl-RLC-StatusInfo DL-RLC-StatusInfo +} + +DL-AM-RLC-Mode-r11 ::= SEQUENCE { + dl-RLC-PDU-size CHOICE { + fixedSize OctetModeRLC-SizeInfoType1, + flexibleSize ENUMERATED { size7, size15 } + }, + inSequenceDelivery BOOLEAN, + receivingWindowSize ReceivingWindowSize, + dl-RLC-StatusInfo DL-RLC-StatusInfo-r11 +} + +DL-CounterSynchronisationInfo ::= SEQUENCE { + rB-WithPDCP-InfoList RB-WithPDCP-InfoList OPTIONAL +} + +DL-CounterSynchronisationInfo-r5 ::= SEQUENCE { + rb-WithPDCP-InfoList RB-WithPDCP-InfoList OPTIONAL, + rb-PDCPContextRelocationList RB-PDCPContextRelocationList OPTIONAL +} + +DL-LogicalChannelMapping ::= SEQUENCE { + -- TABULAR: DL-TransportChannelType contains TransportChannelIdentity as well. + dl-TransportChannelType DL-TransportChannelType, + logicalChannelIdentity LogicalChannelIdentity OPTIONAL +} + +DL-LogicalChannelMapping-r5 ::= SEQUENCE { + -- TABULAR: DL-TransportChannelType contains TransportChannelIdentity as well. + dl-TransportChannelType DL-TransportChannelType-r5, + logicalChannelIdentity LogicalChannelIdentity OPTIONAL +} + +DL-LogicalChannelMapping-r7 ::= SEQUENCE { + -- TABULAR: DL-TransportChannelType contains TransportChannelIdentity as well. + dl-TransportChannelType DL-TransportChannelType-r7, + logicalChannelIdentity LogicalChannelIdentity OPTIONAL +} + +DL-LogicalChannelMappingList ::= SEQUENCE (SIZE (1..maxLoCHperRLC)) OF + DL-LogicalChannelMapping + +DL-LogicalChannelMappingList-r5 ::= SEQUENCE (SIZE (1..maxLoCHperRLC)) OF + DL-LogicalChannelMapping-r5 + +DL-LogicalChannelMappingList-r7 ::= SEQUENCE (SIZE (1..maxLoCHperRLC)) OF + DL-LogicalChannelMapping-r7 + +DL-Reception-Window-Size-r6 ::= ENUMERATED { size32, size48, size64, size80, size96, size112 } + +DL-RFC3095-r4 ::= SEQUENCE { + -- dummy is not used in this version of the specification and shall be ignored by the receiver. + dummy CID-InclusionInfo-r4, + max-CID INTEGER (1..16383) DEFAULT 15, + reverseDecompressionDepth INTEGER (0..65535) DEFAULT 0 +} + +DL-RLC-Mode ::= CHOICE { + dl-AM-RLC-Mode DL-AM-RLC-Mode, + dl-UM-RLC-Mode NULL, + dl-TM-RLC-Mode DL-TM-RLC-Mode +} + +DL-RLC-Mode-r5 ::= CHOICE { + dl-AM-RLC-Mode DL-AM-RLC-Mode-r5, + dl-UM-RLC-Mode DL-UM-RLC-Mode-r5, + dl-TM-RLC-Mode DL-TM-RLC-Mode +} + +DL-RLC-Mode-r6 ::= CHOICE { + dl-AM-RLC-Mode DL-AM-RLC-Mode-r5, + dl-UM-RLC-Mode DL-UM-RLC-Mode-r6, + dl-TM-RLC-Mode DL-TM-RLC-Mode +} + +DL-RLC-Mode-r7 ::= CHOICE { + dl-AM-RLC-Mode DL-AM-RLC-Mode-r7, + dl-UM-RLC-Mode DL-UM-RLC-Mode-r6, + dl-TM-RLC-Mode DL-TM-RLC-Mode +} + +DL-RLC-Mode-r11 ::= CHOICE { + dl-AM-RLC-Mode DL-AM-RLC-Mode-r11, + dl-UM-RLC-Mode DL-UM-RLC-Mode-r6, + dl-TM-RLC-Mode DL-TM-RLC-Mode +} + +DL-RLC-StatusInfo ::= SEQUENCE { + timerStatusProhibit TimerStatusProhibit OPTIONAL, + -- dummy is not used in this version of the specification, it should not be sent + -- and if received they should be ignored. + dummy TimerEPC OPTIONAL, + missingPDU-Indicator BOOLEAN, + timerStatusPeriodic TimerStatusPeriodic OPTIONAL +} + +DL-RLC-StatusInfo-r11 ::= SEQUENCE { + timerStatusProhibit TimerStatusProhibit OPTIONAL, + missingPDU-Indicator BOOLEAN, + timerStatusPeriodic TimerStatusPeriodic OPTIONAL, + timerReordering TimerReordering OPTIONAL +} + +DL-TM-RLC-Mode ::= SEQUENCE { + segmentationIndication BOOLEAN +} + +DL-TransportChannelType ::= CHOICE { + dch TransportChannelIdentity, + fach NULL, + -- The choice "dsch" should not be used in FDD mode, and if received + -- the UE behaviour is unspecified. + dsch TransportChannelIdentity, + -- The choice "dch-and-dsch" should not be used in FDD mode, and if received the UE + -- behaviour is unspecified + dch-and-dsch TransportChannelIdentityDCHandDSCH +} + +DL-TransportChannelType-r5 ::= CHOICE { + dch TransportChannelIdentity, + fach NULL, + -- The choice "dsch" should not be used in FDD mode, and if received + -- the UE behaviour is unspecified. + dsch TransportChannelIdentity, + -- The choice "dch-and-dsch" should not be used in FDD mode, and if received the UE + -- behaviour is unspecified + dch-and-dsch TransportChannelIdentityDCHandDSCH, + hsdsch MAC-d-FlowIdentity, + dch-and-hsdsch MAC-d-FlowIdentityDCHandHSDSCH +} + +DL-TransportChannelType-r7 ::= CHOICE { + dch TransportChannelIdentity, + fach NULL, + -- The choice "dsch" should not be used in FDD mode, and if received + -- the UE behaviour is unspecified. + dsch TransportChannelIdentity, + -- The choice "dch-and-dsch" should not be used in FDD mode, and if received the UE + -- behaviour is unspecified + dch-and-dsch TransportChannelIdentityDCHandDSCH, + hsdsch CHOICE { + mac-hs MAC-d-FlowIdentity, + mac-ehs MAC-ehs-QueueId + }, + dch-and-hsdsch CHOICE { + mac-hs MAC-d-FlowIdentityDCHandHSDSCH, + mac-ehs MAC-ehs-QueueIdDCHandHSDSCH + } +} + +DL-UM-RLC-LI-size ::= ENUMERATED { + size7, size15 } + +DL-UM-RLC-Mode-r5 ::= SEQUENCE { + dl-UM-RLC-LI-size DL-UM-RLC-LI-size +} + +DL-UM-RLC-Mode-r6 ::= SEQUENCE { + dl-UM-RLC-LI-size DL-UM-RLC-LI-size, + dl-Reception-Window-Size DL-Reception-Window-Size-r6 OPTIONAL +} + +ExpectReordering ::= ENUMERATED { + reorderingNotExpected, + reorderingExpected } + +ExplicitDiscard ::= SEQUENCE { + timerMRW TimerMRW, + timerDiscard TimerDiscard, + maxMRW MaxMRW +} + +HeaderCompressionInfo ::= SEQUENCE { + algorithmSpecificInfo AlgorithmSpecificInfo +} + +HeaderCompressionInfoList ::= SEQUENCE (SIZE (1..maxPDCPAlgoType)) OF + HeaderCompressionInfo + +HeaderCompressionInfo-r4 ::= SEQUENCE { + algorithmSpecificInfo AlgorithmSpecificInfo-r4 +} + +HeaderCompressionInfoList-r4 ::= SEQUENCE (SIZE (1..maxPDCPAlgoType)) OF + HeaderCompressionInfo-r4 + +LogicalChannelIdentity ::= INTEGER (1..15) + +LosslessSRNS-RelocSupport ::= CHOICE { + supported MaxPDCP-SN-WindowSize, + notSupported NULL +} + +MAC-d-HFN-initial-value ::= BIT STRING (SIZE (24)) + +MAC-LogicalChannelPriority ::= INTEGER (1..8) + +-- Actual value MaxCS-Delay = (IE value * 10) + 20 +MaxCS-Delay ::= INTEGER (0..18) + +MaxDAT ::= ENUMERATED { + dat1, dat2, dat3, dat4, dat5, dat6, + dat7, dat8, dat9, dat10, dat15, dat20, + dat25, dat30, dat35, dat40 } + +MaxDAT-Retransmissions ::= SEQUENCE { + maxDAT MaxDAT, + timerMRW TimerMRW, + maxMRW MaxMRW +} + +MaxMRW ::= ENUMERATED { + mm1, mm4, mm6, mm8, mm12, mm16, + mm24, mm32 } + +MaxPDCP-SN-WindowSize ::= ENUMERATED { + sn255, sn65535 } + +MaxRST ::= ENUMERATED { + rst1, rst4, rst6, rst8, rst12, + rst16, rst24, rst32 } + +NoExplicitDiscard ::= ENUMERATED { + dt10, dt20, dt30, dt40, dt50, + dt60, dt70, dt80, dt90, dt100 } + +PDCP-Info ::= SEQUENCE { + losslessSRNS-RelocSupport LosslessSRNS-RelocSupport OPTIONAL, + -- TABULAR: pdcp-PDU-Header is MD in the tabular format and it can be encoded + -- in one bit, so the OPTIONAL is removed for compactness. + pdcp-PDU-Header PDCP-PDU-Header, + headerCompressionInfoList HeaderCompressionInfoList OPTIONAL +} + +PDCP-Info-r4 ::= SEQUENCE { + losslessSRNS-RelocSupport LosslessSRNS-RelocSupport OPTIONAL, + -- TABULAR: pdcp-PDU-Header is MD in the tabular format and it can be encoded + -- in one bit, so the OPTIONAL is removed for compactness. + pdcp-PDU-Header PDCP-PDU-Header, + headerCompressionInfoList HeaderCompressionInfoList-r4 OPTIONAL +} + +PDCP-InfoReconfig ::= SEQUENCE { + pdcp-Info PDCP-Info, + -- dummy is not used in this version of the specification and + -- it should be ignored. + dummy INTEGER (0..65535) +} + +PDCP-InfoReconfig-r4 ::= SEQUENCE { + pdcp-Info PDCP-Info-r4 +} + +PDCP-PDU-Header ::= ENUMERATED { + present, absent } + +PDCP-ROHC-TargetMode ::= ENUMERATED { o-Mode, r-Mode } + +PDCP-SN-Info ::= INTEGER (0..65535) + +Poll-PDU ::= ENUMERATED { + pdu1, pdu2, pdu4, pdu8, pdu16, + pdu32, pdu64, pdu128 } + +Poll-SDU ::= ENUMERATED { + sdu1, sdu4, sdu16, sdu64 } + +PollingInfo ::= SEQUENCE { + timerPollProhibit TimerPollProhibit OPTIONAL, + timerPoll TimerPoll OPTIONAL, + poll-PDU Poll-PDU OPTIONAL, + poll-SDU Poll-SDU OPTIONAL, + lastTransmissionPDU-Poll BOOLEAN, + lastRetransmissionPDU-Poll BOOLEAN, + pollWindow PollWindow OPTIONAL, + timerPollPeriodic TimerPollPeriodic OPTIONAL +} + +PollWindow ::= ENUMERATED { + pw50, pw60, pw70, pw80, pw85, + pw90, pw95, pw99 } + +PredefinedConfigIdentity ::= INTEGER (0..15) + +PredefinedConfigValueTag ::= INTEGER (0..15) + +PredefinedRB-Configuration ::= SEQUENCE { + re-EstablishmentTimer Re-EstablishmentTimer, + srb-InformationList SRB-InformationSetupList, + rb-InformationList RB-InformationSetupList +} + +PreDefRadioConfiguration ::= SEQUENCE { + -- Radio bearer IEs + predefinedRB-Configuration PredefinedRB-Configuration, + -- Transport channel IEs + preDefTransChConfiguration PreDefTransChConfiguration, + -- Physical channel IEs + preDefPhyChConfiguration PreDefPhyChConfiguration +} + +PreDefRadioConfiguration-v770ext ::= SEQUENCE { + -- Physical channel IEs + preDefPhyChConfiguration PreDefPhyChConfiguration-v770ext +} + +PreDefRadioConfiguration-v920ext ::= SEQUENCE { + -- Transport channel IEs + mac-ehsWindowSize MAC-hs-WindowSize-r9 +} + +PredefinedConfigStatusList ::= SEQUENCE (SIZE (maxPredefConfig)) OF + PredefinedConfigStatusInfo + +PredefinedConfigStatusInfo ::= CHOICE { + storedWithValueTagSameAsPrevius NULL, + other CHOICE { + notStored NULL, + storedWithDifferentValueTag PredefinedConfigValueTag + } +} + +PredefinedConfigStatusListComp ::= SEQUENCE { + setsWithDifferentValueTag PredefinedConfigSetsWithDifferentValueTag, + otherEntries PredefinedConfigStatusListVarSz OPTIONAL +} + +PredefinedConfigSetsWithDifferentValueTag ::= SEQUENCE (SIZE (1..2)) OF + PredefinedConfigSetWithDifferentValueTag + +PredefinedConfigSetWithDifferentValueTag ::= SEQUENCE { + startPosition INTEGER (0..10) DEFAULT 0, + -- numberOfEntries INTEGER (6..16), + -- numberOfEntries is covered by the size of the list in IE PredefinedConfigValueTagList + valueTagList PredefinedConfigValueTagList +} + + +PredefinedConfigValueTagList ::= SEQUENCE (SIZE (1..maxPredefConfig)) OF + PredefinedConfigValueTag + +PredefinedConfigStatusListVarSz ::= SEQUENCE (SIZE (1..maxPredefConfig)) OF + PredefinedConfigStatusInfo + +RAB-Info ::= SEQUENCE { + rab-Identity RAB-Identity, + cn-DomainIdentity CN-DomainIdentity, + nas-Synchronisation-Indicator NAS-Synchronisation-Indicator OPTIONAL, + re-EstablishmentTimer Re-EstablishmentTimer +} + +RAB-Info-r6-ext ::= SEQUENCE { + mbms-SessionIdentity MBMS-SessionIdentity OPTIONAL +} + +RAB-Info-v6b0ext ::= SEQUENCE { + mbms-ServiceIdentity OCTET STRING (SIZE (3)) +} + +RAB-Info-r6 ::= SEQUENCE { + rab-Identity RAB-Identity, + mbms-SessionIdentity MBMS-SessionIdentity OPTIONAL, + cn-DomainIdentity CN-DomainIdentity, + nas-Synchronisation-Indicator NAS-Synchronisation-Indicator OPTIONAL, + re-EstablishmentTimer Re-EstablishmentTimer +} + +RAB-Info-r7 ::= SEQUENCE { + rab-Identity RAB-Identity, + mbms-SessionIdentity MBMS-SessionIdentity OPTIONAL, + mbms-ServiceIdentity OCTET STRING (SIZE (3)) OPTIONAL, + cn-DomainIdentity CN-DomainIdentity, + nas-Synchronisation-Indicator NAS-Synchronisation-Indicator OPTIONAL, + re-EstablishmentTimer Re-EstablishmentTimer +} + +RAB-InfoReplace ::= SEQUENCE { + rab-Identity RAB-Identity, + cn-DomainIdentity CN-DomainIdentity +} + +RAB-InformationList ::= SEQUENCE (SIZE (1..maxRABsetup)) OF + RAB-Info + +RAB-InformationList-r6 ::= SEQUENCE (SIZE (1..maxRABsetup)) OF + RAB-Info-r6 + +RAB-InformationReconfigList ::= SEQUENCE (SIZE (1.. maxRABsetup)) OF + RAB-InformationReconfig + +RAB-InformationReconfigList-r8 ::= SEQUENCE (SIZE (1..maxRABsetup)) OF + RAB-InformationReconfig-r8 + +RAB-InformationReconfig ::= SEQUENCE { + rab-Identity RAB-Identity, + cn-DomainIdentity CN-DomainIdentity, + nas-Synchronisation-Indicator NAS-Synchronisation-Indicator +} + +RAB-InformationReconfig-r8 ::= SEQUENCE { + rab-Identity RAB-Identity, + cn-DomainIdentity CN-DomainIdentity, + nas-Synchronisation-Indicator NAS-Synchronisation-Indicator, + cs-HSPA-Information CS-HSPA-Information OPTIONAL +} + +RAB-Info-Post ::= SEQUENCE { + rab-Identity RAB-Identity, + cn-DomainIdentity CN-DomainIdentity, + nas-Synchronisation-Indicator NAS-Synchronisation-Indicator OPTIONAL +} + +RAB-InformationMBMSPtp ::= SEQUENCE { + rb-Identity RB-Identity, + mbms-ServiceIdentity OCTET STRING (SIZE (3)), + mbms-SessionIdentity MBMS-SessionIdentity OPTIONAL +} + +RAB-InformationMBMSPtpList ::= SEQUENCE (SIZE (1..maxMBMSservSelect)) OF + RAB-InformationMBMSPtp + +RAB-InformationSetup ::= SEQUENCE { + rab-Info RAB-Info, + rb-InformationSetupList RB-InformationSetupList +} + +RAB-InformationSetup-r4 ::= SEQUENCE { + rab-Info RAB-Info, + rb-InformationSetupList RB-InformationSetupList-r4 +} + +RAB-InformationSetup-r5 ::= SEQUENCE { + rab-Info RAB-Info, + rb-InformationSetupList RB-InformationSetupList-r5 +} + +RAB-InformationSetup-r6-ext ::= SEQUENCE { + rab-Info-r6-ext RAB-Info-r6-ext +} + +RAB-InformationSetup-r6 ::= SEQUENCE { + rab-Info RAB-Info-r6, + rb-InformationSetupList RB-InformationSetupList-r6 +} + +RAB-InformationSetup-v6b0ext ::= SEQUENCE { + rab-Info-v6b0ext RAB-Info-v6b0ext OPTIONAL +} + +RAB-InformationSetup-r7 ::= SEQUENCE { + rab-Info RAB-Info-r7, + rb-InformationSetupList RB-InformationSetupList-r7 +} + +RAB-InformationSetup-r8 ::= SEQUENCE { + rab-Info RAB-Info-r7, + cs-HSPA-Information CS-HSPA-Information OPTIONAL, + rab-InfoReplace RAB-InfoReplace OPTIONAL, + rb-InformationSetupList RB-InformationSetupList-r8 +} + +RAB-InformationSetup-v820ext ::= SEQUENCE { + cs-HSPA-Information CS-HSPA-Information OPTIONAL +} + +RAB-InformationSetup-r11 ::= SEQUENCE { + rab-Info RAB-Info-r7, + cs-HSPA-Information CS-HSPA-Information OPTIONAL, + rab-InfoReplace RAB-InfoReplace OPTIONAL, + rb-InformationSetupList RB-InformationSetupList-r11 +} + +RAB-InformationSetupList ::= SEQUENCE (SIZE (1..maxRABsetup)) OF + RAB-InformationSetup + +RAB-InformationSetupList-r4 ::= SEQUENCE (SIZE (1..maxRABsetup)) OF + RAB-InformationSetup-r4 + +RAB-InformationSetupList-r5 ::= SEQUENCE (SIZE (1..maxRABsetup)) OF + RAB-InformationSetup-r5 + +RAB-InformationSetupList-r6 ::= SEQUENCE (SIZE (1..maxRABsetup)) OF + RAB-InformationSetup-r6 + +-- The IE 'RAB-InformationSetupList-r6-ext' provides elements of extension information, which +-- are added to the corresponding elements of the IE 'RAB-InformationSetupList/-r4/-r5'. +RAB-InformationSetupList-r6-ext ::= SEQUENCE (SIZE (1..maxRABsetup)) OF + RAB-InformationSetup-r6-ext + +RAB-InformationSetupList-v6b0ext ::= SEQUENCE (SIZE (1..maxRABsetup)) OF + RAB-InformationSetup-v6b0ext + +RAB-InformationSetupList-r7 ::= SEQUENCE (SIZE (1..maxRABsetup)) OF + RAB-InformationSetup-r7 + +RAB-InformationSetupList-r8 ::= SEQUENCE (SIZE (1..maxRABsetup)) OF + RAB-InformationSetup-r8 + +RAB-InformationSetupList-v820ext ::= SEQUENCE (SIZE (1..maxRABsetup)) OF + RAB-InformationSetup-v820ext + +RAB-InformationSetupList-r11 ::= SEQUENCE (SIZE (1..maxRABsetup)) OF + RAB-InformationSetup-r11 + +RB-ActivationTimeInfo ::= SEQUENCE { + rb-Identity RB-Identity, + rlc-SequenceNumber RLC-SequenceNumber +} + +RB-ActivationTimeInfoList ::= SEQUENCE (SIZE (1..maxRB)) OF + RB-ActivationTimeInfo + +RB-COUNT-C-Information ::= SEQUENCE { + rb-Identity RB-Identity, + count-C-UL COUNT-C, + count-C-DL COUNT-C +} + +RB-COUNT-C-InformationList ::= SEQUENCE (SIZE (1..maxRBallRABs)) OF + RB-COUNT-C-Information + +RB-COUNT-C-MSB-Information ::= SEQUENCE { + rb-Identity RB-Identity, + count-C-MSB-UL COUNT-C-MSB, + count-C-MSB-DL COUNT-C-MSB +} + +RB-COUNT-C-MSB-InformationList ::= SEQUENCE (SIZE (1..maxRBallRABs)) OF + RB-COUNT-C-MSB-Information + +RB-Identity ::= INTEGER (1..32) + +RB-IdentityList ::= SEQUENCE (SIZE (1..maxRB)) OF + RB-Identity + +RB-InformationAffected ::= SEQUENCE { + rb-Identity RB-Identity, + rb-MappingInfo RB-MappingInfo +} + +RB-InformationAffected-r5 ::= SEQUENCE { + rb-Identity RB-Identity, + rb-MappingInfo RB-MappingInfo-r5 +} + +RB-InformationAffected-r6 ::= SEQUENCE { + rb-Identity RB-Identity, + rb-MappingInfo RB-MappingInfo-r6 +} + +RB-InformationAffected-r7 ::= SEQUENCE { + rb-Identity RB-Identity, + rb-MappingInfo RB-MappingInfo-r7 +} + +RB-InformationAffected-r8 ::= SEQUENCE { + rb-Identity RB-Identity, + rb-MappingInfo RB-MappingInfo-r8 +} + +RB-InformationAffectedList ::= SEQUENCE (SIZE (1..maxRB)) OF + RB-InformationAffected + +RB-InformationAffectedList-r5 ::= SEQUENCE (SIZE (1..maxRB)) OF + RB-InformationAffected-r5 + +RB-InformationAffectedList-r6 ::= SEQUENCE (SIZE (1..maxRB)) OF + RB-InformationAffected-r6 + +RB-InformationAffectedList-r7 ::= SEQUENCE (SIZE (1..maxRB)) OF + RB-InformationAffected-r7 + +RB-InformationAffectedList-r8 ::= SEQUENCE (SIZE (1..maxRB)) OF + RB-InformationAffected-r8 + +RB-InformationChanged-r6 ::= SEQUENCE { + rb-Identity RB-Identity, + rb-Change CHOICE { + release NULL, + re-mapToDefaultRb RB-Identity + } +} + +RB-InformationChangedList-r6 ::= SEQUENCE (SIZE (1..maxRB)) OF + RB-InformationChanged-r6 + +RB-InformationReconfig ::= SEQUENCE { + rb-Identity RB-Identity, + pdcp-Info PDCP-InfoReconfig OPTIONAL, + pdcp-SN-Info PDCP-SN-Info OPTIONAL, + rlc-Info RLC-Info OPTIONAL, + rb-MappingInfo RB-MappingInfo OPTIONAL, + rb-StopContinue RB-StopContinue OPTIONAL +} + +RB-InformationReconfig-r4 ::= SEQUENCE { + rb-Identity RB-Identity, + pdcp-Info PDCP-InfoReconfig-r4 OPTIONAL, + pdcp-SN-Info PDCP-SN-Info OPTIONAL, + rlc-Info RLC-Info OPTIONAL, + rb-MappingInfo RB-MappingInfo OPTIONAL, + rb-StopContinue RB-StopContinue OPTIONAL +} + +RB-InformationReconfig-r5 ::= SEQUENCE { + rb-Identity RB-Identity, + pdcp-Info PDCP-InfoReconfig-r4 OPTIONAL, + pdcp-SN-Info PDCP-SN-Info OPTIONAL, + rlc-Info RLC-Info-r5 OPTIONAL, + rb-MappingInfo RB-MappingInfo-r5 OPTIONAL, + rb-StopContinue RB-StopContinue OPTIONAL +} + +RB-InformationReconfig-r6 ::= SEQUENCE { + rb-Identity RB-Identity, + pdcp-Info PDCP-InfoReconfig-r4 OPTIONAL, + pdcp-SN-Info PDCP-SN-Info OPTIONAL, + rlc-Info RLC-Info-r6 OPTIONAL, + rb-MappingInfo RB-MappingInfo-r6 OPTIONAL, + rb-StopContinue RB-StopContinue OPTIONAL +} + +RB-InformationReconfig-r7 ::= SEQUENCE { + rb-Identity RB-Identity, + pdcp-Info PDCP-InfoReconfig-r4 OPTIONAL, + pdcp-SN-Info PDCP-SN-Info OPTIONAL, + rlc-Info RLC-Info-r7 OPTIONAL, + rb-MappingInfo RB-MappingInfo-r7 OPTIONAL, + rb-StopContinue RB-StopContinue OPTIONAL +} + +RB-InformationReconfig-r8 ::= SEQUENCE { + rb-Identity RB-Identity, + pdcp-Info PDCP-InfoReconfig-r4 OPTIONAL, + pdcp-SN-Info PDCP-SN-Info OPTIONAL, + rlc-Info RLC-Info-r7 OPTIONAL, + rb-MappingInfo RB-MappingInfo-r8 OPTIONAL, + rb-StopContinue RB-StopContinue OPTIONAL +} + +RB-InformationReconfig-r11 ::= SEQUENCE { + rb-Identity RB-Identity, + pdcp-Info PDCP-InfoReconfig-r4 OPTIONAL, + pdcp-SN-Info PDCP-SN-Info OPTIONAL, + rlc-Info RLC-Info-r11 OPTIONAL, + rb-MappingInfo RB-MappingInfo-r8 OPTIONAL, + rb-StopContinue RB-StopContinue OPTIONAL +} + +RB-InformationReconfigList ::= SEQUENCE (SIZE (1..maxRB)) OF + RB-InformationReconfig + +RB-InformationReconfigList-r4 ::= SEQUENCE (SIZE (1..maxRB)) OF + RB-InformationReconfig-r4 + +RB-InformationReconfigList-r5 ::= SEQUENCE (SIZE (1..maxRB)) OF + RB-InformationReconfig-r5 + +RB-InformationReconfigList-r6 ::= SEQUENCE (SIZE (1..maxRB)) OF + RB-InformationReconfig-r6 + +RB-InformationReconfigList-r7 ::= SEQUENCE (SIZE (1..maxRB)) OF + RB-InformationReconfig-r7 + +RB-InformationReconfigList-r8 ::= SEQUENCE (SIZE (1..maxRB)) OF + RB-InformationReconfig-r8 + +RB-InformationReconfigList-r11 ::= SEQUENCE (SIZE (1..maxRB)) OF + RB-InformationReconfig-r11 + +RB-InformationReleaseList ::= SEQUENCE (SIZE (1..maxRB)) OF + RB-Identity + +RB-InformationSetup ::= SEQUENCE { + rb-Identity RB-Identity, + pdcp-Info PDCP-Info OPTIONAL, + rlc-InfoChoice RLC-InfoChoice, + rb-MappingInfo RB-MappingInfo +} + +RB-InformationSetup-r4 ::= SEQUENCE { + rb-Identity RB-Identity, + pdcp-Info PDCP-Info-r4 OPTIONAL, + rlc-InfoChoice RLC-InfoChoice, + rb-MappingInfo RB-MappingInfo +} + +RB-InformationSetup-r5 ::= SEQUENCE { + rb-Identity RB-Identity, + pdcp-Info PDCP-Info-r4 OPTIONAL, + rlc-InfoChoice RLC-InfoChoice-r5, + rb-MappingInfo RB-MappingInfo-r5 +} + +RB-InformationSetup-r6 ::= SEQUENCE { + rb-Identity RB-Identity, + pdcp-Info PDCP-Info-r4 OPTIONAL, + rlc-InfoChoice RLC-InfoChoice-r6, + rb-MappingInfo RB-MappingInfo-r6 +} + +RB-InformationSetup-r7 ::= SEQUENCE { + rb-Identity RB-Identity, + pdcp-Info PDCP-Info-r4 OPTIONAL, + rlc-InfoChoice RLC-InfoChoice-r7, + rb-MappingInfo RB-MappingInfo-r7 +} + +RB-InformationSetup-r8 ::= SEQUENCE { + rb-Identity RB-Identity, + pdcp-Info PDCP-Info-r4 OPTIONAL, + rlc-InfoChoice RLC-InfoChoice-r7, + rb-MappingInfo RB-MappingInfo-r8 +} + +RB-InformationSetup-r11 ::= SEQUENCE { + rb-Identity RB-Identity, + pdcp-Info PDCP-Info-r4 OPTIONAL, + rlc-InfoChoice RLC-InfoChoice-r11, + rb-MappingInfo RB-MappingInfo-r8 +} + +RB-InformationSetupList ::= SEQUENCE (SIZE (1..maxRBperRAB)) OF + RB-InformationSetup + +RB-InformationSetupList-r4 ::= SEQUENCE (SIZE (1..maxRBperRAB)) OF + RB-InformationSetup-r4 + +RB-InformationSetupList-r5 ::= SEQUENCE (SIZE (1..maxRBperRAB)) OF + RB-InformationSetup-r5 + +RB-InformationSetupList-r6 ::= SEQUENCE (SIZE (1..maxRBperRAB)) OF + RB-InformationSetup-r6 + +RB-InformationSetupList-r7 ::= SEQUENCE (SIZE (1..maxRBperRAB)) OF + RB-InformationSetup-r7 + +RB-InformationSetupList-r8 ::= SEQUENCE (SIZE (1..maxRBperRAB)) OF + RB-InformationSetup-r8 + +RB-InformationSetupList-r11 ::= SEQUENCE (SIZE (1..maxRBperRAB)) OF + RB-InformationSetup-r11 + +RB-MappingInfo ::= SEQUENCE (SIZE (1..maxRBMuxOptions)) OF + RB-MappingOption + +RB-MappingInfo-r5 ::= SEQUENCE (SIZE (1..maxRBMuxOptions)) OF + RB-MappingOption-r5 + +RB-MappingInfo-r6 ::= SEQUENCE (SIZE (1..maxRBMuxOptions)) OF + RB-MappingOption-r6 + +RB-MappingInfo-r7 ::= SEQUENCE (SIZE (1..maxRBMuxOptions)) OF + RB-MappingOption-r7 + +RB-MappingInfo-r8 ::= SEQUENCE (SIZE (1..maxRBMuxOptions)) OF + RB-MappingOption-r8 + +RB-MappingOption ::= SEQUENCE { + ul-LogicalChannelMappings UL-LogicalChannelMappings OPTIONAL, + dl-LogicalChannelMappingList DL-LogicalChannelMappingList OPTIONAL +} + +RB-MappingOption-r5 ::= SEQUENCE { + ul-LogicalChannelMappings UL-LogicalChannelMappings OPTIONAL, + dl-LogicalChannelMappingList DL-LogicalChannelMappingList-r5 OPTIONAL +} + +RB-MappingOption-r6 ::= SEQUENCE { + ul-LogicalChannelMappings UL-LogicalChannelMappings-r6 OPTIONAL, + dl-LogicalChannelMappingList DL-LogicalChannelMappingList-r5 OPTIONAL +} + +RB-MappingOption-r7 ::= SEQUENCE { + ul-LogicalChannelMappings UL-LogicalChannelMappings-r6 OPTIONAL, + dl-LogicalChannelMappingList DL-LogicalChannelMappingList-r7 OPTIONAL +} + +RB-MappingOption-r8 ::= SEQUENCE { + ul-LogicalChannelMappings UL-LogicalChannelMappings-r8 OPTIONAL, + dl-LogicalChannelMappingList DL-LogicalChannelMappingList-r7 OPTIONAL +} + +RB-PDCPContextRelocation ::= SEQUENCE { + rb-Identity RB-Identity, + dl-RFC3095-Context-Relocation BOOLEAN, + ul-RFC3095-Context-Relocation BOOLEAN +} + +RB-PDCPContextRelocationList ::= SEQUENCE (SIZE (1..maxRBallRABs)) OF + RB-PDCPContextRelocation + +RB-StopContinue ::= ENUMERATED { + stopRB, continueRB } + +RB-WithPDCP-Info ::= SEQUENCE { + rb-Identity RB-Identity, + pdcp-SN-Info PDCP-SN-Info +} + +RB-WithPDCP-InfoList ::= SEQUENCE (SIZE (1..maxRBallRABs)) OF + RB-WithPDCP-Info + +ReceivingWindowSize ::= ENUMERATED { + rw1, rw8, rw16, rw32, rw64, rw128, rw256, + rw512, rw768, rw1024, rw1536, rw2047, + rw2560, rw3072, rw3584, rw4095 } + +RFC2507-Info ::= SEQUENCE { + f-MAX-PERIOD INTEGER (1..65535) DEFAULT 256, + f-MAX-TIME INTEGER (1..255) DEFAULT 5, + max-HEADER INTEGER (60..65535) DEFAULT 168, + tcp-SPACE INTEGER (3..255) DEFAULT 15, + non-TCP-SPACE INTEGER (3..65535) DEFAULT 15, + -- TABULAR: expectReordering has only two possible values, so using Optional or Default + -- would be wasteful + expectReordering ExpectReordering +} + +RFC3095-Info-r4 ::= SEQUENCE { + rohcProfileList ROHC-ProfileList-r4, + ul-RFC3095 UL-RFC3095-r4 OPTIONAL, + dl-RFC3095 DL-RFC3095-r4 OPTIONAL +} + +RLC-Info ::= SEQUENCE { + ul-RLC-Mode UL-RLC-Mode OPTIONAL, + dl-RLC-Mode DL-RLC-Mode OPTIONAL +} + +RLC-Info-r5 ::= SEQUENCE { + ul-RLC-Mode UL-RLC-Mode OPTIONAL, + dl-RLC-Mode DL-RLC-Mode-r5 OPTIONAL, + rlc-OneSidedReEst BOOLEAN +} + +RLC-Info-r6 ::= SEQUENCE { + ul-RLC-Mode UL-RLC-Mode OPTIONAL, + dl-RLC-Mode DL-RLC-Mode-r6 OPTIONAL, + rlc-OneSidedReEst BOOLEAN, + altE-bitInterpretation ENUMERATED { true } OPTIONAL +} + +RLC-Info-r7 ::= SEQUENCE { + ul-RLC-Mode UL-RLC-Mode OPTIONAL, + dl-RLC-Mode DL-RLC-Mode-r7 OPTIONAL, + rlc-OneSidedReEst BOOLEAN, + altE-bitInterpretation ENUMERATED { true } OPTIONAL, + useSpecialValueOfHEField ENUMERATED { true } OPTIONAL +} + +RLC-Info-r11 ::= SEQUENCE { + ul-RLC-Mode UL-RLC-Mode OPTIONAL, + dl-RLC-Mode DL-RLC-Mode-r11 OPTIONAL, + rlc-OneSidedReEst BOOLEAN, + altE-bitInterpretation ENUMERATED { true } OPTIONAL, + useSpecialValueOfHEField ENUMERATED { true } OPTIONAL +} + +RLC-Info-MCCH-r6 ::= SEQUENCE { + dl-UM-RLC-LI-size DL-UM-RLC-LI-size, + dl-UM-RLC-OutOSeqDelivery-Info UM-RLC-OutOSeqDelivery-Info-r6 OPTIONAL +} + +RLC-Info-MSCH-r6 ::= SEQUENCE { + dl-UM-RLC-LI-size DL-UM-RLC-LI-size +} + +RLC-Info-MTCH-r6 ::= SEQUENCE { + dl-UM-RLC-LI-size DL-UM-RLC-LI-size, + dl-UM-RLC-DuplAvoid-Reord-Info UM-RLC-DuplAvoid-Reord-Info-r6 OPTIONAL +} + +RLC-InfoChoice ::= CHOICE { + rlc-Info RLC-Info, + same-as-RB RB-Identity +} + +RLC-InfoChoice-r5 ::= CHOICE { + rlc-Info RLC-Info-r5, + same-as-RB RB-Identity +} + +RLC-InfoChoice-r6 ::= CHOICE { + rlc-Info RLC-Info-r6, + same-as-RB RB-Identity +} + +RLC-InfoChoice-r7 ::= CHOICE { + rlc-Info RLC-Info-r7, + same-as-RB RB-Identity +} + +RLC-InfoChoice-r11 ::= CHOICE { + rlc-Info RLC-Info-r11, + same-as-RB RB-Identity +} + +RLC-PDU-Size ::= OctetModeRLC-SizeInfoType1 + +RLC-PDU-SizeConstraint ::= SEQUENCE { + lengthIndicatorSize ENUMERATED { size7, size15 } OPTIONAL, + -- the actual values are (IE value * 8) + 16 + minRLC-PDU-Size INTEGER (0..1503), + largestRLC-PDU-Size INTEGER (0..1503) +} + +RLC-PDU-SizeList ::= SEQUENCE (SIZE (1..maxRLCPDUsizePerLogChan)) OF + RLC-PDU-Size + +RLC-SequenceNumber ::= INTEGER (0..4095) + +RLC-SizeInfo ::= SEQUENCE { + rlc-SizeIndex INTEGER (1..maxTF) +} + +RLC-SizeExplicitList ::= SEQUENCE (SIZE (1..maxTF)) OF + RLC-SizeInfo + +ROHC-Profile-r4 ::= INTEGER (1..3) + +ROHC-ProfileList-r4 ::= SEQUENCE (SIZE (1..maxROHC-Profile-r4)) OF + ROHC-Profile-r4 + +ROHC-PacketSize-r4 ::= INTEGER (2..1500) + +ROHC-PacketSizeList-r4 ::= SEQUENCE (SIZE (1..maxROHC-PacketSizes-r4)) OF + ROHC-PacketSize-r4 + +SRB-InformationSetup ::= SEQUENCE { + -- The default value for rb-Identity is the smallest value not used yet. + rb-Identity RB-Identity OPTIONAL, + rlc-InfoChoice RLC-InfoChoice, + rb-MappingInfo RB-MappingInfo +} + +SRB-InformationSetup-r5 ::= SEQUENCE { + -- The default value for rb-Identity is the smallest value not used yet. + rb-Identity RB-Identity OPTIONAL, + rlc-InfoChoice RLC-InfoChoice-r5, + rb-MappingInfo RB-MappingInfo-r5 +} + +SRB-InformationSetup-r6 ::= SEQUENCE { + -- The default value for rb-Identity is the smallest value not used yet. + rb-Identity RB-Identity OPTIONAL, + rlc-InfoChoice RLC-InfoChoice-r6, + rb-MappingInfo RB-MappingInfo-r6 +} + +SRB-InformationSetup-r7 ::= SEQUENCE { + -- The default value for rb-Identity is the smallest value not used yet. + rb-Identity RB-Identity OPTIONAL, + rlc-InfoChoice RLC-InfoChoice-r7, + rb-MappingInfo RB-MappingInfo-r7 +} + +SRB-InformationSetup-r8 ::= SEQUENCE { + -- The default value for rb-Identity is the smallest value not used yet. + rb-Identity RB-Identity OPTIONAL, + rlc-InfoChoice RLC-InfoChoice-r7, + rb-MappingInfo RB-MappingInfo-r8 +} + +SRB-InformationSetup-r11 ::= SEQUENCE { + -- The default value for rb-Identity is the smallest value not used yet. + rb-Identity RB-Identity OPTIONAL, + rlc-InfoChoice RLC-InfoChoice-r11, + rb-MappingInfo RB-MappingInfo-r8 +} + +SRB-InformationSetupList ::= SEQUENCE (SIZE (1..maxSRBsetup)) OF + SRB-InformationSetup + +SRB-InformationSetupList-r5 ::= SEQUENCE (SIZE (1..maxSRBsetup)) OF + SRB-InformationSetup-r5 + +SRB-InformationSetupList-r6 ::= SEQUENCE (SIZE (1..maxSRBsetup)) OF + SRB-InformationSetup-r6 + +SRB-InformationSetupList-r7 ::= SEQUENCE (SIZE (1..maxSRBsetup)) OF + SRB-InformationSetup-r7 + +SRB-InformationSetupList-r8 ::= SEQUENCE (SIZE (1..maxSRBsetup)) OF + SRB-InformationSetup-r8 + +SRB-InformationSetupList-r11 ::= SEQUENCE (SIZE (1..maxSRBsetup)) OF + SRB-InformationSetup-r11 + +SRB-InformationSetupList2 ::= SEQUENCE (SIZE (3..4)) OF + SRB-InformationSetup + +SRB-InformationSetupList2-r6 ::= SEQUENCE (SIZE (3..4)) OF + SRB-InformationSetup-r6 + +SRB-InformationSetupList2-r7 ::= SEQUENCE (SIZE (3..4)) OF + SRB-InformationSetup-r7 + +SRB-InformationSetupList2-r8 ::= SEQUENCE (SIZE (3..4)) OF + SRB-InformationSetup-r8 + +TimerDAR-r6 ::= ENUMERATED { + ms40, ms80, ms120, ms160, ms240, ms320, ms480, ms640, + ms960, ms1280, ms1920, ms2560, ms3840, ms5120 } + +TimerDiscard ::= ENUMERATED { + td0-1, td0-25, td0-5, td0-75, + td1, td1-25, td1-5, td1-75, + td2, td2-5, td3, td3-5, td4, + td4-5, td5, td7-5 } + +TimerEPC ::= ENUMERATED { + te50, te60, te70, te80, te90, + te100, te120, te140, te160, te180, + te200, te300, te400, te500, te700, + te900 } + +TimerMRW ::= ENUMERATED { + te50, te60, te70, te80, te90, te100, + te120, te140, te160, te180, te200, + te300, te400, te500, te700, te900 } + +TimerOSD-r6 ::= ENUMERATED { + ms40, ms80, ms120, ms160, ms240, ms320, ms480, ms640, + ms960, ms1280, ms1920, ms2560, ms3840, ms5120 } + +TimerPoll ::= ENUMERATED { + tp10, tp20, tp30, tp40, tp50, + tp60, tp70, tp80, tp90, tp100, + tp110, tp120, tp130, tp140, tp150, + tp160, tp170, tp180, tp190, tp200, + tp210, tp220, tp230, tp240, tp250, + tp260, tp270, tp280, tp290, tp300, + tp310, tp320, tp330, tp340, tp350, + tp360, tp370, tp380, tp390, tp400, + tp410, tp420, tp430, tp440, tp450, + tp460, tp470, tp480, tp490, tp500, + tp510, tp520, tp530, tp540, tp550, + tp600, tp650, tp700, tp750, tp800, + tp850, tp900, tp950, tp1000 } + +TimerPollPeriodic ::= ENUMERATED { + tper100, tper200, tper300, tper400, + tper500, tper750, tper1000, tper2000 } + +TimerPollProhibit ::= ENUMERATED { + tpp10, tpp20, tpp30, tpp40, tpp50, + tpp60, tpp70, tpp80, tpp90, tpp100, + tpp110, tpp120, tpp130, tpp140, tpp150, + tpp160, tpp170, tpp180, tpp190, tpp200, + tpp210, tpp220, tpp230, tpp240, tpp250, + tpp260, tpp270, tpp280, tpp290, tpp300, + tpp310, tpp320, tpp330, tpp340, tpp350, + tpp360, tpp370, tpp380, tpp390, tpp400, + tpp410, tpp420, tpp430, tpp440, tpp450, + tpp460, tpp470, tpp480, tpp490, tpp500, + tpp510, tpp520, tpp530, tpp540, tpp550, + tpp600, tpp650, tpp700, tpp750, tpp800, + tpp850, tpp900, tpp950, tpp1000 } + +TimerReordering ::= ENUMERATED { + tr50, tr100, tr150, tr200, tr400, tr600, tr800, tr1000 } + +TimerRST ::= ENUMERATED { + tr50, tr100, tr150, tr200, tr250, tr300, + tr350, tr400, tr450, tr500, tr550, + tr600, tr700, tr800, tr900, tr1000 } + +TimerStatusPeriodic ::= ENUMERATED { + tsp100, tsp200, tsp300, tsp400, tsp500, + tsp750, tsp1000, tsp2000 } + +TimerStatusProhibit ::= ENUMERATED { + tsp10,tsp20,tsp30,tsp40,tsp50, + tsp60,tsp70,tsp80,tsp90,tsp100, + tsp110,tsp120,tsp130,tsp140,tsp150, + tsp160,tsp170,tsp180,tsp190,tsp200, + tsp210,tsp220,tsp230,tsp240,tsp250, + tsp260,tsp270,tsp280,tsp290,tsp300, + tsp310,tsp320,tsp330,tsp340,tsp350, + tsp360,tsp370,tsp380,tsp390,tsp400, + tsp410,tsp420,tsp430,tsp440,tsp450, + tsp460,tsp470,tsp480,tsp490,tsp500, + tsp510,tsp520,tsp530,tsp540,tsp550, + tsp600,tsp650,tsp700,tsp750,tsp800, + tsp850,tsp900,tsp950,tsp1000 } + +TransmissionRLC-Discard ::= CHOICE { + timerBasedExplicit ExplicitDiscard, + timerBasedNoExplicit NoExplicitDiscard, + maxDAT-Retransmissions MaxDAT-Retransmissions, + noDiscard MaxDAT +} + +TransmissionWindowSize ::= ENUMERATED { + tw1, tw8, tw16, tw32, tw64, tw128, tw256, + tw512, tw768, tw1024, tw1536, tw2047, + tw2560, tw3072, tw3584, tw4095 } + +-- Actual bit rate per each value is defined in [62] and [63] +UL-AMR-Rate ::= ENUMERATED { + t0, t1, t2, t3, t4, t5, t6, t7, t8, spare7, spare6, spare5, + spare4, spare3, spare2, spare1 } + +UL-AM-RLC-Mode ::= SEQUENCE { + transmissionRLC-Discard TransmissionRLC-Discard, + transmissionWindowSize TransmissionWindowSize, + timerRST TimerRST, + max-RST MaxRST, + pollingInfo PollingInfo OPTIONAL +} + +UL-CounterSynchronisationInfo ::= SEQUENCE { + rB-WithPDCP-InfoList RB-WithPDCP-InfoList OPTIONAL, + startList STARTList +} + +UL-LogicalChannelMapping ::= SEQUENCE { + -- TABULAR: UL-TransportChannelType contains TransportChannelIdentity as well. + ul-TransportChannelType UL-TransportChannelType, + logicalChannelIdentity LogicalChannelIdentity OPTIONAL, + rlc-SizeList CHOICE { + allSizes NULL, + configured NULL, + explicitList RLC-SizeExplicitList + }, + mac-LogicalChannelPriority MAC-LogicalChannelPriority +} + +UL-LogicalChannelMapping-r6 ::= SEQUENCE { + ul-TrCH-Type CHOICE { + dch-rach-usch SEQUENCE { + -- TABULAR: UL-TransportChannelType contains TransportChannelIdentity as well. + ul-TransportChannelType UL-TransportChannelType, + logicalChannelIdentity LogicalChannelIdentity OPTIONAL, + rlc-SizeList CHOICE { + allSizes NULL, + configured NULL, + explicitList RLC-SizeExplicitList + } + }, + e-dch SEQUENCE { + logicalChannelIdentity LogicalChannelIdentity, + e-DCH-MAC-d-FlowIdentity E-DCH-MAC-d-FlowIdentity, + ddi DDI, + rlc-PDU-SizeList RLC-PDU-SizeList, + includeInSchedulingInfo BOOLEAN + } + }, + mac-LogicalChannelPriority MAC-LogicalChannelPriority +} + +UL-LogicalChannelMapping-r8 ::= SEQUENCE { + ul-TrCH-Type CHOICE { + dch-rach-usch SEQUENCE { + -- TABULAR: UL-TransportChannelType contains TransportChannelIdentity as well. + ul-TransportChannelType UL-TransportChannelType, + logicalChannelIdentity LogicalChannelIdentity OPTIONAL, + rlc-SizeList CHOICE { + allSizes NULL, + configured NULL, + explicitList RLC-SizeExplicitList + } + }, + e-dch SEQUENCE { + logicalChannelIdentity LogicalChannelIdentity, + e-DCH-MAC-d-FlowIdentity E-DCH-MAC-d-FlowIdentity, + rlc-PDU-Size CHOICE { + fixedSize SEQUENCE { + ddi DDI, + rlc-PDU-SizeList RLC-PDU-SizeList + }, + flexibleSize RLC-PDU-SizeConstraint + }, + includeInSchedulingInfo BOOLEAN + } + }, + mac-LogicalChannelPriority MAC-LogicalChannelPriority +} + +UL-LogicalChannelMappingList ::= SEQUENCE { + -- rlc-LogicalChannelMappingIndicator shall be set to TRUE in this version + -- of the specification + rlc-LogicalChannelMappingIndicator BOOLEAN, + ul-LogicalChannelMapping SEQUENCE (SIZE (maxLoCHperRLC)) OF + UL-LogicalChannelMapping +} + +UL-LogicalChannelMappingList-r6 ::= SEQUENCE { + -- rlc-LogicalChannelMappingIndicator shall be set to TRUE in this version + -- of the specification + rlc-LogicalChannelMappingIndicator BOOLEAN, + ul-LogicalChannelMapping SEQUENCE (SIZE (maxLoCHperRLC)) OF + UL-LogicalChannelMapping-r6 +} + +UL-LogicalChannelMappingList-r8 ::= SEQUENCE { + -- rlc-LogicalChannelMappingIndicator shall be set to TRUE in this version + -- of the specification + rlc-LogicalChannelMappingIndicator BOOLEAN, + ul-LogicalChannelMapping SEQUENCE (SIZE (maxLoCHperRLC)) OF + UL-LogicalChannelMapping-r8 +} + +UL-LogicalChannelMappings ::= CHOICE { + oneLogicalChannel UL-LogicalChannelMapping, + twoLogicalChannels UL-LogicalChannelMappingList +} + +UL-LogicalChannelMappings-r6 ::= CHOICE { + oneLogicalChannel UL-LogicalChannelMapping-r6, + twoLogicalChannels UL-LogicalChannelMappingList-r6 +} + +UL-LogicalChannelMappings-r8 ::= CHOICE { + oneLogicalChannel UL-LogicalChannelMapping-r8, + twoLogicalChannels UL-LogicalChannelMappingList-r8 +} + +UL-RFC3095-r4 ::= SEQUENCE { + -- dummy1 is not used in this version of the specification and shall be ignored by the receiver. + dummy1 CID-InclusionInfo-r4, + max-CID INTEGER (1..16383) DEFAULT 15, + -- dummy is not used in this version of the specification and + -- it should be ignored by the receiver. + dummy ROHC-PacketSizeList-r4 +} + +UL-RLC-Mode ::= CHOICE { + ul-AM-RLC-Mode UL-AM-RLC-Mode, + ul-UM-RLC-Mode UL-UM-RLC-Mode, + ul-TM-RLC-Mode UL-TM-RLC-Mode, + spare NULL +} + +UL-TM-RLC-Mode ::= SEQUENCE { + transmissionRLC-Discard TransmissionRLC-Discard OPTIONAL, + segmentationIndication BOOLEAN +} + +UL-UM-RLC-Mode ::= SEQUENCE { + transmissionRLC-Discard TransmissionRLC-Discard OPTIONAL +} + +UL-TransportChannelType ::= CHOICE { + dch TransportChannelIdentity, + rach NULL, + -- dummy is not used in this version of the specification and + -- if received the UE behaviour is not specified. + dummy NULL, + usch TransportChannelIdentity +} + +UM-RLC-DuplAvoid-Reord-Info-r6 ::= SEQUENCE { + timer-DAR TimerDAR-r6, + widowSize-DAR WindowSizeDAR-r6 +} + +UM-RLC-OutOSeqDelivery-Info-r6 ::= SEQUENCE { + timer-OSD TimerOSD-r6 OPTIONAL, + windowSize-OSD WindowSizeOSD-r6 +} + +WindowSizeDAR-r6 ::= ENUMERATED { + ws4, ws8, ws16, ws32, ws40, ws48, + ws56, ws64 } + +WindowSizeOSD-r6 ::= ENUMERATED { + ws8, ws16, ws32, ws40, ws48, + ws56, ws64 } + +-- *************************************************** +-- +-- TRANSPORT CHANNEL INFORMATION ELEMENTS (10.3.5) +-- +-- *************************************************** + +AddOrReconfMAC-dFlow ::= SEQUENCE { + mac-hs-AddReconfQueue-List MAC-hs-AddReconfQueue-List OPTIONAL, + mac-hs-DelQueue-List MAC-hs-DelQueue-List OPTIONAL +} + +AddOrReconfMAC-ehs-ReordQ ::= SEQUENCE { + mac-ehs-AddReconfQueue-List MAC-ehs-AddReconfReordQ-List OPTIONAL, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy MAC-ehs-DelReordQ-List OPTIONAL +} + +AddOrReconfMAC-ehs-ReordQ-r9 ::= SEQUENCE { + mac-ehs-AddReconfQueue-List MAC-ehs-AddReconfReordQ-List-r9 OPTIONAL +} + +AddOrReconfMAC-ehs-ReordQ-TDD128-v9c0ext ::= SEQUENCE { + mac-ehs-AddReconfQueue-List MAC-ehs-AddReconfReordQ-List-TDD128-v9c0ext OPTIONAL +} + +AddOrReconfMAC-ehs-ReordQ-r11 ::= SEQUENCE { + mac-ehs-AddReconfQueue-List MAC-ehs-AddReconfReordQ-List-r11 OPTIONAL +} + +AllowedTFC-List ::= SEQUENCE (SIZE (1..maxTFC)) OF + TFC-Value + +AllowedTFI-List ::= SEQUENCE (SIZE (1..maxTF)) OF + INTEGER (0..31) + +BitModeRLC-SizeInfo ::= CHOICE { + sizeType1 INTEGER (0..127), + -- Actual value sizeType2 = (part1 * 8) + 128 + part2 + sizeType2 SEQUENCE { + part1 INTEGER (0..15), + part2 INTEGER (1..7) OPTIONAL + }, + -- Actual value sizeType3 = (part1 * 16) + 256 + part2 + sizeType3 SEQUENCE { + part1 INTEGER (0..47), + part2 INTEGER (1..15) OPTIONAL + }, + -- Actual value sizeType4 = (part1 * 64) + 1024 + part2 + sizeType4 SEQUENCE { + part1 INTEGER (0..62), + part2 INTEGER (1..63) OPTIONAL + } +} + +-- Actual value BLER-QualityValue = IE value * 0.1 +BLER-QualityValue ::= INTEGER (-63..0) + +ChannelCodingType ::= CHOICE { + -- noCoding is only used for TDD in this version of the specification, + -- otherwise it should be ignored + noCoding NULL, + convolutional CodingRate, + turbo NULL +} + +CodingRate ::= ENUMERATED { + half, + third } + +Common-E-DCH-MAC-d-Flow ::= SEQUENCE { + mac-d-FlowIdentity E-DCH-MAC-d-FlowIdentity, + mac-d-FlowPowerOffset E-DCH-MAC-d-FlowPowerOffset, + mac-d-FlowMaxRetrans E-DCH-MAC-d-FlowMaxRetrans, + mac-d-FlowMultiplexingList E-DCH-MAC-d-FlowMultiplexingList OPTIONAL, + e-dch-mac-d-flow-retransmission-timer E-DCH-MAC-d-FlowRetransTimer OPTIONAL +} + +Common-E-DCH-MAC-d-FlowList ::= SEQUENCE (SIZE (1..maxE-DCHMACdFlow)) OF + Common-E-DCH-MAC-d-Flow + +Common-E-DCH-MAC-d-Flow-Info-ConcurrentTTI ::= SEQUENCE { + mac-d-FlowIdentity E-DCH-MAC-d-FlowIdentity, + mac-d-FlowPowerOffset E-DCH-MAC-d-FlowPowerOffset OPTIONAL, + mac-d-FlowMaxRetrans E-DCH-MAC-d-FlowMaxRetrans OPTIONAL +} + +Common-E-DCH-MAC-d-Flow-Info-List-ConcurrentTTI ::= SEQUENCE (SIZE (1..maxE-DCHMACdFlow)) OF + Common-E-DCH-MAC-d-Flow-Info-ConcurrentTTI + +CommonDynamicTF-Info ::= SEQUENCE { + rlc-Size CHOICE { + fdd SEQUENCE { + octetModeRLC-SizeInfoType2 OctetModeRLC-SizeInfoType2 + }, + tdd SEQUENCE { + commonTDD-Choice CHOICE { + bitModeRLC-SizeInfo BitModeRLC-SizeInfo, + octetModeRLC-SizeInfoType1 OctetModeRLC-SizeInfoType1 + } + } + }, + numberOfTbSizeList SEQUENCE (SIZE (1..maxTF)) OF + NumberOfTransportBlocks, + logicalChannelList LogicalChannelList +} + +CommonDynamicTF-Info-DynamicTTI ::= SEQUENCE { + commonTDD-Choice CHOICE { + bitModeRLC-SizeInfo BitModeRLC-SizeInfo, + octetModeRLC-SizeInfoType1 OctetModeRLC-SizeInfoType1 + }, + numberOfTbSizeAndTTIList NumberOfTbSizeAndTTIList, + logicalChannelList LogicalChannelList +} + +CommonDynamicTF-InfoList ::= SEQUENCE (SIZE (1..maxTF)) OF + CommonDynamicTF-Info + +CommonDynamicTF-InfoList-DynamicTTI ::= SEQUENCE (SIZE (1..maxTF)) OF + CommonDynamicTF-Info-DynamicTTI + +CommonTransChTFS ::= SEQUENCE { + tti CHOICE { + tti10 CommonDynamicTF-InfoList, + tti20 CommonDynamicTF-InfoList, + tti40 CommonDynamicTF-InfoList, + tti80 CommonDynamicTF-InfoList, + dynamic CommonDynamicTF-InfoList-DynamicTTI + }, + semistaticTF-Information SemistaticTF-Information +} + +CommonTransChTFS-LCR ::= SEQUENCE { + tti CHOICE { + tti5 CommonDynamicTF-InfoList, + tti10 CommonDynamicTF-InfoList, + tti20 CommonDynamicTF-InfoList, + tti40 CommonDynamicTF-InfoList, + tti80 CommonDynamicTF-InfoList, + dynamic CommonDynamicTF-InfoList-DynamicTTI + }, + semistaticTF-Information SemistaticTF-Information +} + +Common-MAC-ehs-ReorderingQueue ::= SEQUENCE { + mac-ehs-QueueId MAC-ehs-QueueId, + t1-ReleaseTimer T1-ReleaseTimer, + reorderingResetTimer Treset-ResetTimer OPTIONAL, + mac-ehsWindowSize MAC-hs-WindowSize +} + +Common-MAC-ehs-ReorderingQueueList ::= SEQUENCE (SIZE (1.. maxCommonQueueID)) OF + Common-MAC-ehs-ReorderingQueue + +Concurrent-Deployment-2ms-10ms-TTI ::= SEQUENCE { + tti-selection CHOICE { + fixed SEQUENCE { + fixed-TTI-Selection ENUMERATED { tti2, tti10 } + }, + threshold-based SEQUENCE { + common-E-DCH-TTI-Selection-Thresh INTEGER (0..15) + } + }, + concurrent-TTI-Partition-Index INTEGER (0..maxEDCHs-1), + commonEDCHSystemInfoParamConcurrentTTI CommonEDCHSystemInfoParamConcurrentTTI OPTIONAL +} + +CPCH-SetID ::= INTEGER (1..maxCPCHsets) + +CRC-Size ::= ENUMERATED { + crc0, crc8, crc12, crc16, crc24 } + +DedicatedDynamicTF-Info ::= SEQUENCE { + rlc-Size CHOICE { + bitMode BitModeRLC-SizeInfo, + octetModeType1 OctetModeRLC-SizeInfoType1 + }, + numberOfTbSizeList SEQUENCE (SIZE (1..maxTF)) OF + NumberOfTransportBlocks, + logicalChannelList LogicalChannelList +} + +DedicatedDynamicTF-Info-DynamicTTI ::= SEQUENCE { + rlc-Size CHOICE { + bitMode BitModeRLC-SizeInfo, + octetModeType1 OctetModeRLC-SizeInfoType1 + }, + numberOfTbSizeAndTTIList NumberOfTbSizeAndTTIList, + logicalChannelList LogicalChannelList +} + +DedicatedDynamicTF-InfoList ::= SEQUENCE (SIZE (1..maxTF)) OF + DedicatedDynamicTF-Info + +DedicatedDynamicTF-InfoList-DynamicTTI ::= SEQUENCE (SIZE (1..maxTF)) OF + DedicatedDynamicTF-Info-DynamicTTI + +DedicatedTransChTFS ::= SEQUENCE { + tti CHOICE { + tti10 DedicatedDynamicTF-InfoList, + tti20 DedicatedDynamicTF-InfoList, + tti40 DedicatedDynamicTF-InfoList, + tti80 DedicatedDynamicTF-InfoList, + dynamic DedicatedDynamicTF-InfoList-DynamicTTI + }, + semistaticTF-Information SemistaticTF-Information +} + +-- The maximum allowed size of DL-AddReconfTransChInfo2List sequence is 16 +DL-AddReconfTransChInfo2List ::= SEQUENCE (SIZE (1..maxTrCHpreconf)) OF + DL-AddReconfTransChInformation2 + +-- The maximum allowed size of DL-AddReconfTransChInfoList sequence is 16 +DL-AddReconfTransChInfoList ::= SEQUENCE (SIZE (1..maxTrCHpreconf)) OF + DL-AddReconfTransChInformation + +-- The maximum allowed size of DL-AddReconfTransChInfoList-r4 sequence is 16 +DL-AddReconfTransChInfoList-r4 ::= SEQUENCE (SIZE (1..maxTrCHpreconf)) OF + DL-AddReconfTransChInformation-r4 + +-- The maximum allowed size of DL-AddReconfTransChInfoList-r5 sequence is 16 +DL-AddReconfTransChInfoList-r5 ::= SEQUENCE (SIZE (1..maxTrCHpreconf)) OF + DL-AddReconfTransChInformation-r5 + +-- The maximum allowed size of DL-AddReconfTransChInfoList-r7 sequence is 16 +DL-AddReconfTransChInfoList-r7 ::= SEQUENCE (SIZE (1..maxTrCHpreconf)) OF + DL-AddReconfTransChInformation-r7 + +DL-AddReconfTransChInfoList-r9 ::= SEQUENCE (SIZE (1..maxTrCHpreconf)) OF + DL-AddReconfTransChInformation-r9 + +DL-AddReconfTransChInfoList-TDD128-v9c0ext ::= SEQUENCE (SIZE (1..maxTrCHpreconf)) OF + DL-AddReconfTransChInformation-TDD128-v9c0ext + +DL-AddReconfTransChInfoList-r11 ::= SEQUENCE (SIZE (1..maxTrCHpreconf)) OF + DL-AddReconfTransChInformation-r11 + +-- ASN.1 for IE "Added or Reconfigured DL TrCH information" +-- in case of messages other than: Radio Bearer Release message and +-- Radio Bearer Reconfiguration message +DL-AddReconfTransChInformation ::= SEQUENCE { + dl-TransportChannelType DL-TrCH-Type, + dl-transportChannelIdentity TransportChannelIdentity, + tfs-SignallingMode CHOICE { + explicit-config TransportFormatSet, + sameAsULTrCH UL-TransportChannelIdentity + }, + dch-QualityTarget QualityTarget OPTIONAL, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy TM-SignallingInfo OPTIONAL +} + +DL-AddReconfTransChInformation-r4 ::= SEQUENCE { + dl-TransportChannelType DL-TrCH-Type, + dl-transportChannelIdentity TransportChannelIdentity, + tfs-SignallingMode CHOICE { + explicit-config TransportFormatSet, + sameAsULTrCH UL-TransportChannelIdentity + }, + dch-QualityTarget QualityTarget OPTIONAL +} + +DL-AddReconfTransChInformation-r5 ::= SEQUENCE { + dl-TransportChannelType DL-TrCH-TypeId1-r5, + tfs-SignallingMode CHOICE { + explicit-config TransportFormatSet, + sameAsULTrCH UL-TransportChannelIdentity, + hsdsch HSDSCH-Info + }, + dch-QualityTarget QualityTarget OPTIONAL +} + +DL-AddReconfTransChInformation-r7 ::= SEQUENCE { + dl-TransportChannelType DL-TrCH-TypeId1-r5, + tfs-SignallingMode CHOICE { + explicit-config TransportFormatSet, + sameAsULTrCH UL-TransportChannelIdentity, + hsdsch HSDSCH-Info-r7 + }, + dch-QualityTarget QualityTarget OPTIONAL +} + +DL-AddReconfTransChInformation-r9 ::= SEQUENCE { + dl-TransportChannelType DL-TrCH-TypeId1-r5, + tfs-SignallingMode CHOICE { + explicit-config TransportFormatSet, + sameAsULTrCH UL-TransportChannelIdentity, + hsdsch HSDSCH-Info-r9 + }, + dch-QualityTarget QualityTarget OPTIONAL +} + +DL-AddReconfTransChInformation-TDD128-v9c0ext ::= SEQUENCE { + hsdsch HSDSCH-Info-TDD128-v9c0ext OPTIONAL +} + +DL-AddReconfTransChInformation-r11 ::= SEQUENCE { + dl-TransportChannelType DL-TrCH-TypeId1-r5, + tfs-SignallingMode CHOICE { + explicit-config TransportFormatSet, + sameAsULTrCH UL-TransportChannelIdentity, + hsdsch HSDSCH-Info-r11 + }, + dch-QualityTarget QualityTarget OPTIONAL +} + +-- ASN.1 for IE "Added or Reconfigured DL TrCH information" +-- in case of Radio Bearer Release message and +-- Radio Bearer Reconfiguration message +DL-AddReconfTransChInformation2 ::= SEQUENCE { + dl-TransportChannelType DL-TrCH-Type, + transportChannelIdentity TransportChannelIdentity, + tfs-SignallingMode CHOICE { + explicit-config TransportFormatSet, + sameAsULTrCH UL-TransportChannelIdentity + }, + qualityTarget QualityTarget OPTIONAL +} + +DL-CommonTransChInfo ::= SEQUENCE { + sccpch-TFCS TFCS OPTIONAL, + -- modeSpecificInfo should be optional. A new version of this IE should be defined + -- to be used in later versions of messages using this IE + modeSpecificInfo CHOICE { + fdd SEQUENCE { + dl-Parameters CHOICE { + dl-DCH-TFCS TFCS, + sameAsUL NULL + } OPTIONAL + }, + tdd SEQUENCE { + individualDL-CCTrCH-InfoList IndividualDL-CCTrCH-InfoList + OPTIONAL + } + } +} + +DL-CommonTransChInfo-r4 ::= SEQUENCE { + sccpch-TFCS TFCS OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + dl-Parameters CHOICE { + dl-DCH-TFCS SEQUENCE { + tfcs TFCS OPTIONAL + }, + sameAsUL NULL + } OPTIONAL + }, + tdd SEQUENCE { + individualDL-CCTrCH-InfoList IndividualDL-CCTrCH-InfoList + OPTIONAL + } + } OPTIONAL +} + +DL-DeletedTransChInfoList ::= SEQUENCE (SIZE (1..maxTrCH)) OF + DL-TransportChannelIdentity + +DL-DeletedTransChInfoList-r5 ::= SEQUENCE (SIZE (1..maxTrCH)) OF + DL-TransportChannelIdentity-r5 + +DL-DeletedTransChInfoList-r7 ::= SEQUENCE (SIZE (1..maxTrCH)) OF + DL-TransportChannelIdentity-r7 + +DL-TransportChannelIdentity ::= SEQUENCE { + dl-TransportChannelType DL-TrCH-Type, + dl-TransportChannelIdentity TransportChannelIdentity +} + +DL-TransportChannelIdentity-r5 ::= SEQUENCE { + dl-TransportChannelType DL-TrCH-TypeId2-r5 +} + +DL-TransportChannelIdentity-r7 ::= SEQUENCE { + dl-TransportChannelType DL-TrCH-TypeId2-r7 +} + +-- The choice "dsch" should not be used in FDD mode, and if received the UE behaviour is unspecified +DL-TrCH-Type ::= ENUMERATED {dch, dsch} + +DL-TrCH-TypeId1-r5 ::= CHOICE { + dch TransportChannelIdentity, + -- The choice "dsch" should not be used in FDD mode, and if received + -- the UE behaviour is unspecified. + dsch TransportChannelIdentity, + hsdsch NULL +} + +DL-TrCH-TypeId2-r5 ::= CHOICE { + dch TransportChannelIdentity, + -- The choice "dsch" should not be used in FDD mode, and if received + -- the UE behaviour is unspecified. + dsch TransportChannelIdentity, + hsdsch MAC-d-FlowIdentity +} + +DL-TrCH-TypeId2-r7 ::= CHOICE { + dch TransportChannelIdentity, + -- The choice "dsch" should not be used in FDD mode, and if received + -- the UE behaviour is unspecified. + dsch TransportChannelIdentity, + hsdsch CHOICE { + mac-hs MAC-d-FlowIdentity, + mac-ehs MAC-ehs-QueueId + } +} + +DRAC-ClassIdentity ::= INTEGER (1..maxDRACclasses) + +DRAC-StaticInformation ::= SEQUENCE { + transmissionTimeValidity TransmissionTimeValidity, + timeDurationBeforeRetry TimeDurationBeforeRetry, + drac-ClassIdentity DRAC-ClassIdentity +} + +DRAC-StaticInformationList ::= SEQUENCE (SIZE (1..maxTrCH)) OF + DRAC-StaticInformation + +E-DCH-AddReconf-MAC-d-Flow ::= SEQUENCE { + mac-d-FlowIdentity E-DCH-MAC-d-FlowIdentity, + mac-d-FlowPowerOffset E-DCH-MAC-d-FlowPowerOffset OPTIONAL, + mac-d-FlowMaxRetrans E-DCH-MAC-d-FlowMaxRetrans OPTIONAL, + mac-d-FlowMultiplexingList E-DCH-MAC-d-FlowMultiplexingList OPTIONAL, + transmissionGrantType CHOICE { + non-ScheduledTransGrantInfo SEQUENCE { + maxMAC-e-PDUContents INTEGER (1..19982), + ms2-NonSchedTransmGrantHARQAlloc BIT STRING (SIZE (8)) OPTIONAL + }, + scheduledTransmissionGrantInfo NULL + } OPTIONAL +} + +E-DCH-AddReconf-MAC-d-Flow-r7 ::= SEQUENCE { + mac-d-FlowIdentity E-DCH-MAC-d-FlowIdentity, + mac-d-FlowPowerOffset E-DCH-MAC-d-FlowPowerOffset OPTIONAL, + mac-d-FlowMaxRetrans E-DCH-MAC-d-FlowMaxRetrans OPTIONAL, + mac-d-FlowRetransTimer E-DCH-MAC-d-FlowRetransTimer OPTIONAL, + mac-d-FlowMultiplexingList E-DCH-MAC-d-FlowMultiplexingList OPTIONAL, + transmissionGrantType CHOICE { + non-ScheduledTransGrantInfo SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + maxMAC-e-PDUContents INTEGER (1..19982), + ms2-NonSchedTransmGrantHARQAlloc BIT STRING (SIZE (8)) OPTIONAL + }, + tdd NULL + } + }, + scheduledTransmissionGrantInfo NULL + } OPTIONAL +} + +E-DCH-AddReconf-MAC-d-FlowList ::= SEQUENCE (SIZE (1..maxE-DCHMACdFlow)) OF + E-DCH-AddReconf-MAC-d-Flow + +E-DCH-AddReconf-MAC-d-FlowList-r7 ::= SEQUENCE (SIZE (1..maxE-DCHMACdFlow)) OF + E-DCH-AddReconf-MAC-d-Flow-r7 + +E-DCH-MAC-d-FlowIdentity ::= INTEGER (0..maxE-DCHMACdFlow-1) + +E-DCH-MAC-d-FlowMaxRetrans ::= INTEGER (0..15) + +E-DCH-MAC-d-FlowMultiplexingList ::= BIT STRING (SIZE (maxE-DCHMACdFlow)) + +E-DCH-MAC-d-FlowPowerOffset ::= INTEGER (0..6) + +E-DCH-MAC-d-FlowRetransTimer ::= ENUMERATED { + ms10, ms15, ms20, ms25, ms30, ms35, ms40, ms45, ms50, + ms55, ms60, ms65, ms70, ms75, ms80, ms85, ms90, ms95, + ms100, ms110, ms120, ms140, ms160, ms200, ms240, ms280, + ms320, ms400, ms480, ms560 } + +E-DCH-TTI ::= ENUMERATED { tti2, tti10 } + +ExplicitTFCS-Configuration ::= CHOICE { + complete TFCS-ReconfAdd, + addition TFCS-ReconfAdd, + removal TFCS-RemovalList, + replacement SEQUENCE { + tfcsRemoval TFCS-RemovalList, + tfcsAdd TFCS-ReconfAdd + } +} + +GainFactor ::= INTEGER (0..15) + +GainFactorInformation ::= CHOICE { + signalledGainFactors SignalledGainFactors, + computedGainFactors ReferenceTFC-ID +} + +HSDSCH-Info ::= SEQUENCE { + harqInfo HARQ-Info OPTIONAL, + addOrReconfMAC-dFlow AddOrReconfMAC-dFlow OPTIONAL +} + +HSDSCH-Info-r7 ::= SEQUENCE { + harqInfo HARQ-Info-r7 OPTIONAL, + dl-MAC-HeaderType CHOICE { + mac-hs AddOrReconfMAC-dFlow, + mac-ehs AddOrReconfMAC-ehs-ReordQ + } OPTIONAL +} + +HSDSCH-Info-r9 ::= SEQUENCE { + harqInfo HARQ-Info-r7 OPTIONAL, + dl-MAC-HeaderType CHOICE { + mac-hs AddOrReconfMAC-dFlow, + mac-ehs AddOrReconfMAC-ehs-ReordQ-r9 + } OPTIONAL +} + +HSDSCH-Info-TDD128-v9c0ext ::= SEQUENCE { + mac-ehs AddOrReconfMAC-ehs-ReordQ-TDD128-v9c0ext OPTIONAL +} + +HSDSCH-Info-r11 ::= SEQUENCE { + harqInfo HARQ-Info-r11 OPTIONAL, + dl-MAC-HeaderType CHOICE { + mac-hs AddOrReconfMAC-dFlow, + mac-ehs AddOrReconfMAC-ehs-ReordQ-r11 + } OPTIONAL +} + +HARQ-Info ::= SEQUENCE { + numberOfProcesses INTEGER (1..8), + memoryPartitioning CHOICE { + implicit NULL, + explicit SEQUENCE (SIZE (1..maxHProcesses)) OF + HARQMemorySize + } +} + +HARQ-Info-r7 ::= SEQUENCE { + numberOfProcesses ENUMERATED { n1, n2, n3, n4, n5, n6, n7, n8, + n12, n14, n16 }, + memoryPartitioning CHOICE { + implicit NULL, + explicit SEQUENCE { + memorySize SEQUENCE (SIZE (1..maxHProcesses)) OF + HARQMemorySize, + additionalMemorySizesForMIMO SEQUENCE (SIZE (1..maxHProcesses)) OF + HARQMemorySize OPTIONAL + } + } +} + +HARQ-Info-r11 ::= SEQUENCE { + numberOfProcesses ENUMERATED { n1, n2, n3, n4, n5, n6, n7, n8, + n12, n14, n16, n24, n28, n32 }, + memoryPartitioning CHOICE { + implicit NULL, + explicit SEQUENCE { + memorySize SEQUENCE (SIZE (1..maxHProcesses)) OF + HARQMemorySize, + additionalMemorySizesForMIMO SEQUENCE (SIZE (1..maxHProcesses)) OF + HARQMemorySize OPTIONAL, + additionalMemorySizesThirdMIMOStream SEQUENCE (SIZE (1..maxHProcesses)) OF + HARQMemorySize OPTIONAL, + additionalMemorySizesFourthMIMOStream SEQUENCE (SIZE (1..maxHProcesses)) OF + HARQMemorySize OPTIONAL + } + } +} + +HARQMemorySize ::= ENUMERATED { + hms800, hms1600, hms2400, hms3200, hms4000, + hms4800, hms5600, hms6400, hms7200, hms8000, + hms8800, hms9600, hms10400, hms11200, hms12000, + hms12800, hms13600, hms14400, hms15200, hms16000, + hms17600, hms19200, hms20800, hms22400, hms24000, + hms25600, hms27200, hms28800, hms30400, hms32000, + hms36000, hms40000, hms44000, hms48000, hms52000, + hms56000, hms60000, hms64000, hms68000, hms72000, + hms76000, hms80000, hms88000, hms96000, hms104000, + hms112000, hms120000, hms128000, hms136000, hms144000, + hms152000, hms160000, hms176000, hms192000, hms208000, + hms224000, hms240000, hms256000, hms272000, hms288000, + hms304000 } + +IndividualDL-CCTrCH-Info ::= SEQUENCE { + dl-TFCS-Identity TFCS-Identity, + tfcs-SignallingMode CHOICE { + explicit-config TFCS, + sameAsUL TFCS-Identity + } +} + +IndividualDL-CCTrCH-InfoList ::= SEQUENCE (SIZE (1..maxCCTrCH)) OF + IndividualDL-CCTrCH-Info + +IndividualUL-CCTrCH-Info ::= SEQUENCE { + ul-TFCS-Identity TFCS-Identity, + ul-TFCS TFCS , + tfc-Subset TFC-Subset +} + +IndividualUL-CCTrCH-InfoList ::= SEQUENCE (SIZE (1..maxCCTrCH)) OF + IndividualUL-CCTrCH-Info + +LogicalChannelByRB ::= SEQUENCE { + rb-Identity RB-Identity, + logChOfRb INTEGER (0..1) OPTIONAL +} + +LogicalChannelList ::= CHOICE { + allSizes NULL, + configured NULL, + explicitList SEQUENCE (SIZE (1..15)) OF + LogicalChannelByRB +} + +MAC-d-FlowIdentityDCHandHSDSCH ::= SEQUENCE { + dch-transport-ch-id TransportChannelIdentity, + hsdsch-mac-d-flow-id MAC-d-FlowIdentity +} + +MAC-d-FlowIdentity ::= INTEGER (0..7) + +MAC-d-PDU-SizeInfo-List ::= SEQUENCE (SIZE(1.. maxMAC-d-PDUsizes)) OF + MAC-d-PDUsizeInfo + +--MAC-d-Pdu sizes need to be defined +MAC-d-PDUsizeInfo ::= SEQUENCE{ + mac-d-PDU-Size INTEGER (1..5000), + mac-d-PDU-Index INTEGER(0..7) +} + +MAC-hs-AddReconfQueue-List ::= SEQUENCE (SIZE(1..maxQueueIDs)) OF + MAC-hs-AddReconfQueue + +MAC-hs-AddReconfQueue ::= SEQUENCE { + mac-hsQueueId INTEGER(0..7), + mac-dFlowId MAC-d-FlowIdentity, + reorderingReleaseTimer T1-ReleaseTimer, + mac-hsWindowSize MAC-hs-WindowSize, + mac-d-PDU-SizeInfo-List MAC-d-PDU-SizeInfo-List OPTIONAL +} + +MAC-hs-DelQueue-List ::= SEQUENCE (SIZE(1..maxQueueIDs)) OF + MAC-hs-DelQueue + +MAC-hs-DelQueue ::= SEQUENCE { + mac-hsQueueId INTEGER(0..7) +} + +MAC-ehs-AddReconfReordQ-List ::= SEQUENCE (SIZE(1..maxQueueIDs)) OF + MAC-ehs-AddReconfReordQ + +MAC-ehs-AddReconfReordQ-List-r9 ::= SEQUENCE (SIZE(1..maxQueueIDs)) OF + MAC-ehs-AddReconfReordQ-r9 + +MAC-ehs-AddReconfReordQ-List-TDD128-v9c0ext ::= SEQUENCE (SIZE(1..maxQueueIDs)) OF + MAC-ehs-AddReconfReordQ-TDD128-v9c0ext + +MAC-ehs-AddReconfReordQ-List-r11 ::= SEQUENCE (SIZE(1..maxQueueIDs)) OF + MAC-ehs-AddReconfReordQ-r11 + +MAC-ehs-AddReconfReordQ ::= SEQUENCE { + mac-ehs-QueueId MAC-ehs-QueueId, + reorderingReleaseTimer T1-ReleaseTimer, + reorderingResetTimer Treset-ResetTimer OPTIONAL, + mac-ehsWindowSize MAC-hs-WindowSize +} + +MAC-ehs-AddReconfReordQ-r9 ::= SEQUENCE { + mac-ehs-QueueId MAC-ehs-QueueId, + reorderingReleaseTimer T1-ReleaseTimer, + reorderingResetTimer Treset-ResetTimer OPTIONAL, + mac-ehsWindowSize MAC-hs-WindowSize-r9 +} + +MAC-ehs-AddReconfReordQ-TDD128-v9c0ext ::= SEQUENCE { + mac-ehsWindowSize-extension MAC-ehs-WindowSize-TDD128-v9c0ext OPTIONAL +} + +MAC-ehs-AddReconfReordQ-r11 ::= SEQUENCE { + mac-ehs-QueueId MAC-ehs-QueueId, + reorderingReleaseTimer T1-ReleaseTimer, + reorderingResetTimer Treset-ResetTimer OPTIONAL, + mac-ehsWindowSize MAC-hs-WindowSize-r11, + -- For 1.28Mcps TDD only + mac-ehsWindowSize-extension MAC-ehs-WindowSize-TDD128-v9c0ext OPTIONAL +} + +MAC-ehs-DelReordQ-List ::= SEQUENCE (SIZE(1..maxQueueIDs)) OF + MAC-ehs-DelReordQ + +MAC-ehs-DelReordQ ::= SEQUENCE { + mac-ehs-QueueId MAC-ehs-QueueId +} + +MAC-ehs-QueueIdDCHandHSDSCH ::= SEQUENCE { + dch-transport-ch-id TransportChannelIdentity, + hsdsch-mac-ehs-QueueId MAC-ehs-QueueId +} + +MAC-ehs-QueueId ::= INTEGER (0..7) + +MAC-hs-WindowSize ::= ENUMERATED { + mws4, mws6, mws8, mws12, mws16, mws24, mws32 } + +MAC-hs-WindowSize-r9 ::= ENUMERATED { + mws4, mws6, mws8, mws12, mws16, mws24, mws32, + mw64, mw128 } + +MAC-ehs-WindowSize-TDD128-v9c0ext ::= ENUMERATED { + mws96, mws160, mws192, mws256 } + +MAC-hs-WindowSize-r11 ::= ENUMERATED { + mws4, mws6, mws8, mws12, mws16, mws24, mws32, + mws64, mws128, mws256, spare6, spare5, spare4, + spare3, spare2, spare1 } + +NumberOfTbSizeAndTTIList ::= SEQUENCE (SIZE (1..maxTF)) OF SEQUENCE { + numberOfTransportBlocks NumberOfTransportBlocks, + transmissionTimeInterval TransmissionTimeInterval +} + +MessType ::= ENUMERATED { + transportFormatCombinationControl } + +Non-allowedTFC-List ::= SEQUENCE (SIZE (1..maxTFC)) OF + TFC-Value + +NumberOfTransportBlocks ::= CHOICE { + zero NULL, + one NULL, + small INTEGER (2..17), + large INTEGER (18..512) +} + +OctetModeRLC-SizeInfoType1 ::= CHOICE { + -- Actual size = (8 * sizeType1) + 16 + sizeType1 INTEGER (0..31), + sizeType2 SEQUENCE { + -- Actual size = (32 * part1) + 272 + (part2 * 8) + part1 INTEGER (0..23), + part2 INTEGER (1..3) OPTIONAL + }, + sizeType3 SEQUENCE { + -- Actual size = (64 * part1) + 1040 + (part2 * 8) + part1 INTEGER (0..61), + part2 INTEGER (1..7) OPTIONAL + } +} + +OctetModeRLC-SizeInfoType2 ::= CHOICE { + -- Actual size = (sizeType1 * 8) + 48 + sizeType1 INTEGER (0..31), + -- Actual size = (sizeType2 * 16) + 312 + sizeType2 INTEGER (0..63), + -- Actual size = (sizeType3 *64) + 1384 + sizeType3 INTEGER (0..56) +} + +PowerOffsetInfoShort ::= SEQUENCE { + referenceTFC TFC-Value, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + gainFactorBetaC GainFactor + }, + tdd NULL + }, + gainFactorBetaD GainFactor +} + +PowerOffsetInformation ::= SEQUENCE { + gainFactorInformation GainFactorInformation, + -- PowerOffsetPp-m is always absent in TDD + powerOffsetPp-m PowerOffsetPp-m OPTIONAL +} + +PowerOffsetPp-m ::= INTEGER (-5..10) + +PreDefTransChConfiguration ::= SEQUENCE { + ul-CommonTransChInfo UL-CommonTransChInfo, + ul-AddReconfTrChInfoList UL-AddReconfTransChInfoList, + dl-CommonTransChInfo DL-CommonTransChInfo, + dl-TrChInfoList DL-AddReconfTransChInfoList +} + +QualityTarget ::= SEQUENCE { + bler-QualityValue BLER-QualityValue +} + +RateMatchingAttribute ::= INTEGER (1..hiRM) + + +ReferenceTFC-ID ::= INTEGER (0..3) + +RestrictedTrChInfo ::= SEQUENCE { + ul-TransportChannelType UL-TrCH-Type, + restrictedTrChIdentity TransportChannelIdentity, + allowedTFI-List AllowedTFI-List OPTIONAL +} + +RestrictedTrChInfoList ::= SEQUENCE (SIZE (1..maxTrCH)) OF + RestrictedTrChInfo + +SemistaticTF-Information ::= SEQUENCE { + -- TABULAR: Transmission time interval has been included in the IE CommonTransChTFS. + channelCodingType ChannelCodingType, + rateMatchingAttribute RateMatchingAttribute, + crc-Size CRC-Size +} + +SignalledGainFactors ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + gainFactorBetaC GainFactor + }, + tdd NULL + }, + gainFactorBetaD GainFactor, + referenceTFC-ID ReferenceTFC-ID OPTIONAL +} + +SplitTFCI-Signalling ::= SEQUENCE { + splitType SplitType OPTIONAL, + tfci-Field2-Length INTEGER (1..10) OPTIONAL, + tfci-Field1-Information ExplicitTFCS-Configuration OPTIONAL, + tfci-Field2-Information TFCI-Field2-Information OPTIONAL +} + +SplitType ::= ENUMERATED { + hardSplit, logicalSplit } + +T1-ReleaseTimer ::= ENUMERATED { + rt10, rt20, rt30, rt40, rt50, + rt60, rt70, rt80, rt90, rt100, + rt120, rt140, rt160, rt200, rt300, + rt400 } + +TFC-Subset ::= CHOICE { + minimumAllowedTFC-Number TFC-Value, + allowedTFC-List AllowedTFC-List, + non-allowedTFC-List Non-allowedTFC-List, + restrictedTrChInfoList RestrictedTrChInfoList, + fullTFCS NULL +} + +TFC-SubsetList ::= SEQUENCE (SIZE (1.. maxTFCsub)) OF SEQUENCE { + modeSpecificInfo CHOICE { + fdd NULL, + tdd SEQUENCE { + tfcs-ID TFCS-Identity OPTIONAL + } + }, + tfc-Subset TFC-Subset +} + +TFC-Value ::= INTEGER (0..1023) + +TFCI-Field2-Information ::= CHOICE { + tfci-Range TFCI-RangeList, + explicit-config ExplicitTFCS-Configuration +} + +TFCI-Range ::= SEQUENCE { + maxTFCIField2Value INTEGER (1..1023), + tfcs-InfoForDSCH TFCS-InfoForDSCH +} + +TFCI-RangeList ::= SEQUENCE (SIZE (1..maxPDSCH-TFCIgroups)) OF + TFCI-Range + +TFCS ::= CHOICE { + normalTFCI-Signalling ExplicitTFCS-Configuration, + -- dummy is not used in this version of specification, it should + -- not be sent and if received the UE behaviour is not specified. + dummy SplitTFCI-Signalling +} + +TFCS-Identity ::= SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + sharedChannelIndicator BOOLEAN +} + +TFCS-IdentityPlain ::= INTEGER (1..8) + +TFCS-InfoForDSCH ::= CHOICE { + ctfc2bit INTEGER (0..3), + ctfc4bit INTEGER (0..15), + ctfc6bit INTEGER (0..63), + ctfc8bit INTEGER (0..255), + ctfc12bit INTEGER (0..4095), + ctfc16bit INTEGER (0..65535), + ctfc24bit INTEGER (0..16777215) +} + +TFCS-ReconfAdd ::= SEQUENCE{ + ctfcSize CHOICE{ + ctfc2Bit SEQUENCE (SIZE (1..maxTFC)) OF SEQUENCE { + ctfc2 INTEGER (0..3), + powerOffsetInformation PowerOffsetInformation OPTIONAL + }, + ctfc4Bit SEQUENCE (SIZE (1..maxTFC)) OF SEQUENCE { + ctfc4 INTEGER (0..15), + powerOffsetInformation PowerOffsetInformation OPTIONAL + }, + ctfc6Bit SEQUENCE (SIZE (1..maxTFC)) OF SEQUENCE { + ctfc6 INTEGER (0..63), + powerOffsetInformation PowerOffsetInformation OPTIONAL + }, + ctfc8Bit SEQUENCE (SIZE (1..maxTFC)) OF SEQUENCE { + ctfc8 INTEGER (0..255), + powerOffsetInformation PowerOffsetInformation OPTIONAL + }, + ctfc12Bit SEQUENCE (SIZE(1..maxTFC)) OF SEQUENCE { + ctfc12 INTEGER (0..4095), + powerOffsetInformation PowerOffsetInformation OPTIONAL + }, + ctfc16Bit SEQUENCE (SIZE (1..maxTFC)) OF SEQUENCE { + ctfc16 INTEGER(0..65535), + powerOffsetInformation PowerOffsetInformation OPTIONAL + }, + ctfc24Bit SEQUENCE (SIZE (1..maxTFC)) OF SEQUENCE { + ctfc24 INTEGER(0..16777215), + powerOffsetInformation PowerOffsetInformation OPTIONAL + } + } +} + +TFCS-Removal ::= SEQUENCE { + tfci INTEGER (0..1023) +} + +TFCS-RemovalList ::= SEQUENCE (SIZE (1..maxTFC)) OF + TFCS-Removal + +TimeDurationBeforeRetry ::= INTEGER (1..256) + +TM-SignallingInfo ::= SEQUENCE { + messType MessType, + tm-SignallingMode CHOICE { + mode1 NULL, + mode2 SEQUENCE { + -- in ul-controlledTrChList, TrCH-Type is always DCH + ul-controlledTrChList UL-ControlledTrChList + } + } +} + +TransmissionTimeInterval ::= ENUMERATED { + tti10, tti20, tti40, tti80 } + +TransmissionTimeValidity ::= INTEGER (1..256) + +TransportChannelIdentity ::= INTEGER (1..32) + +TransportChannelIdentityDCHandDSCH ::= SEQUENCE { + dch-transport-ch-id TransportChannelIdentity, + dsch-transport-ch-id TransportChannelIdentity +} + + +TransportFormatSet ::= CHOICE { + dedicatedTransChTFS DedicatedTransChTFS, + commonTransChTFS CommonTransChTFS +} + +TransportFormatSet-LCR ::= CHOICE { + dedicatedTransChTFS DedicatedTransChTFS, + commonTransChTFS-LCR CommonTransChTFS-LCR +} + +Treset-ResetTimer ::= ENUMERATED { + rt1, rt2, rt3, rt4 } + +-- The maximum allowed size of UL-AddReconfTransChInfoList sequence is 16 +UL-AddReconfTransChInfoList ::= SEQUENCE (SIZE (1..maxTrCHpreconf)) OF + UL-AddReconfTransChInformation + +-- The maximum allowed size of UL-AddReconfTransChInfoList-r6 sequence is 32 +UL-AddReconfTransChInfoList-r6 ::= SEQUENCE (SIZE (1..maxTrCH)) OF + UL-AddReconfTransChInformation-r6 + +-- The maximum allowed size of UL-AddReconfTransChInfoList-r7 sequence is 32 +UL-AddReconfTransChInfoList-r7 ::= SEQUENCE (SIZE (1..maxTrCH)) OF + UL-AddReconfTransChInformation-r7 + +-- The maximum allowed size of UL-AddReconfTransChInfoList-r8 sequence is 32 +UL-AddReconfTransChInfoList-r8 ::= SEQUENCE (SIZE (1..maxTrCH)) OF + UL-AddReconfTransChInformation-r8 + +UL-AddReconfTransChInformation ::= SEQUENCE { + ul-TransportChannelType UL-TrCH-Type, + transportChannelIdentity TransportChannelIdentity, + transportFormatSet TransportFormatSet +} + +UL-AddReconfTransChInformation-r6 ::= CHOICE { + dch-usch SEQUENCE { + ul-TransportChannelType UL-TrCH-Type, + transportChannelIdentity TransportChannelIdentity, + transportFormatSet TransportFormatSet + }, + e-dch SEQUENCE { + tti E-DCH-TTI, + harq-Info ENUMERATED { rv0, rvtable }, + addReconf-MAC-d-FlowList E-DCH-AddReconf-MAC-d-FlowList OPTIONAL + } +} + +UL-AddReconfTransChInformation-r7 ::= CHOICE { + dch-usch SEQUENCE { + ul-TransportChannelType UL-TrCH-Type, + transportChannelIdentity TransportChannelIdentity, + transportFormatSet TransportFormatSet + }, + e-dch SEQUENCE { + modeSpecific CHOICE { + fdd SEQUENCE { + tti E-DCH-TTI + }, + tdd NULL + }, + harq-Info ENUMERATED { rv0, rvtable }, + addReconf-MAC-d-FlowList E-DCH-AddReconf-MAC-d-FlowList-r7 OPTIONAL + } +} + +UL-AddReconfTransChInformation-r8 ::= CHOICE { + dch-usch SEQUENCE { + ul-TransportChannelType UL-TrCH-Type, + transportChannelIdentity TransportChannelIdentity, + transportFormatSet TransportFormatSet + }, + e-dch SEQUENCE { + ul-MAC-HeaderType ENUMERATED { mac-iis } OPTIONAL, + modeSpecific CHOICE { + fdd SEQUENCE { + tti E-DCH-TTI + }, + tdd NULL + }, + harq-Info ENUMERATED { rv0, rvtable }, + addReconf-MAC-d-FlowList E-DCH-AddReconf-MAC-d-FlowList-r7 OPTIONAL + } +} + +UL-CommonTransChInfo ::= SEQUENCE { + -- TABULAR: tfc-subset is applicable to FDD only, TDD specifies tfc-subset in individual + -- CCTrCH Info. + tfc-Subset TFC-Subset OPTIONAL, + prach-TFCS TFCS OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ul-TFCS TFCS + }, + tdd SEQUENCE { + + individualUL-CCTrCH-InfoList IndividualUL-CCTrCH-InfoList + OPTIONAL + } + } OPTIONAL +} + +UL-CommonTransChInfo-r4 ::= SEQUENCE { + -- TABULAR: tfc-subset is applicable to FDD only, TDD specifies tfc-subset in individual + -- CCTrCH Info. + tfc-Subset TFC-Subset OPTIONAL, + prach-TFCS TFCS OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ul-TFCS TFCS + }, + tdd SEQUENCE { + individualUL-CCTrCH-InfoList IndividualUL-CCTrCH-InfoList OPTIONAL + } + } OPTIONAL, + tfc-SubsetList TFC-SubsetList OPTIONAL +} + +-- In UL-ControlledTrChList, TrCH-Type is always DCH +UL-ControlledTrChList ::= SEQUENCE (SIZE (1..maxTrCH)) OF + TransportChannelIdentity + +UL-DeletedTransChInfoList ::= SEQUENCE (SIZE (1..maxTrCH)) OF + UL-TransportChannelIdentity + +UL-DeletedTransChInfoList-r6 ::= SEQUENCE (SIZE (1..maxTrCH)) OF + UL-TransportChannelIdentity-r6 + +UL-TransportChannelIdentity ::= SEQUENCE { + ul-TransportChannelType UL-TrCH-Type, + ul-TransportChannelIdentity TransportChannelIdentity +} + +UL-TransportChannelIdentity-r6 ::= CHOICE { + dch-usch SEQUENCE { + ul-TransportChannelType UL-TrCH-Type, + ul-TransportChannelIdentity TransportChannelIdentity + }, + e-dch E-DCH-MAC-d-FlowIdentity +} + +UL-TrCH-Type ::= ENUMERATED {dch, usch} + +USCH-TransportChannelsInfo ::= SEQUENCE (SIZE (1..maxTrCH)) OF + SEQUENCE { + usch-TransportChannelIdentity TransportChannelIdentity, + usch-TFS TransportFormatSet +} + +-- *************************************************** +-- +-- PHYSICAL CHANNEL INFORMATION ELEMENTS (10.3.6) +-- +-- *************************************************** + +ACK-NACK-repetitionFactor ::= INTEGER(1..4) + +AC-To-ASC-Mapping ::= INTEGER (0..7) + +AC-To-ASC-MappingTable ::= SEQUENCE (SIZE (maxASCmap)) OF + AC-To-ASC-Mapping + +AccessServiceClass-FDD ::= SEQUENCE { + availableSignatureStartIndex INTEGER (0..15), + availableSignatureEndIndex INTEGER (0..15), + + assignedSubChannelNumber BIT STRING { + b3(0), + b2(1), + b1(2), + b0(3) + } (SIZE(4)) +} + +AccessServiceClass-TDD ::= SEQUENCE { + channelisationCodeIndices BIT STRING { + chCodeIndex7(0), + chCodeIndex6(1), + chCodeIndex5(2), + chCodeIndex4(3), + chCodeIndex3(4), + chCodeIndex2(5), + chCodeIndex1(6), + chCodeIndex0(7) + } (SIZE(8)) OPTIONAL, + subchannelSize CHOICE { + size1 NULL, + size2 SEQUENCE { + -- subch0 means bitstring '01' in the tabular, subch1 means bitsring '10' + subchannels ENUMERATED { subch0, subch1 } OPTIONAL + }, + size4 SEQUENCE { + subchannels BIT STRING { + subCh3(0), + subCh2(1), + subCh1(2), + subCh0(3) + } (SIZE(4)) OPTIONAL + }, + size8 SEQUENCE { + subchannels BIT STRING { + subCh7(0), + subCh6(1), + subCh5(2), + subCh4(3), + subCh3(4), + subCh2(5), + subCh1(6), + subCh0(7) + } (SIZE(8)) OPTIONAL + } + } +} + +AccessServiceClass-TDD-r7 ::= SEQUENCE { + channelisationCodeIndices BIT STRING { + chCodeIndex15(0), + chCodeIndex14(1), + chCodeIndex13(2), + chCodeIndex12(3), + chCodeIndex11(4), + chCodeIndex10(5), + chCodeIndex9(6), + chCodeIndex8(7), + chCodeIndex7(8), + chCodeIndex6(9), + chCodeIndex5(10), + chCodeIndex4(11), + chCodeIndex3(12), + chCodeIndex2(13), + chCodeIndex1(14), + chCodeIndex0(15) + } (SIZE(16)) OPTIONAL, + subchannelSize CHOICE { + size1 NULL, + size2 SEQUENCE { + -- subch0 means bitstring '01' in the tabular, subch1 means bitsring '10' + subchannels ENUMERATED { subch0, subch1 } OPTIONAL + }, + size4 SEQUENCE { + subchannels BIT STRING { + subCh3(0), + subCh2(1), + subCh1(2), + subCh0(3) + } (SIZE(4)) OPTIONAL + }, + size8 SEQUENCE { + subchannels BIT STRING { + subCh7(0), + subCh6(1), + subCh5(2), + subCh4(3), + subCh3(4), + subCh2(5), + subCh1(6), + subCh0(7) + } (SIZE(8)) OPTIONAL + }, + size16 SEQUENCE { + subchannels BIT STRING { + subCh15(0), + subCh14(1), + subCh13(2), + subCh12(3), + subCh11(4), + subCh10(5), + subCh9(6), + subCh8(7), + subCh7(8), + subCh6(9), + subCh5(10), + subCh4(11), + subCh3(12), + subCh2(13), + subCh1(14), + subCh0(15) + } (SIZE(16)) OPTIONAL + } + } +} + +AccessServiceClass-TDD-LCR-r4 ::= SEQUENCE { + availableSYNC-UlCodesIndics BIT STRING { + sulCodeIndex7(0), + sulCodeIndex6(1), + sulCodeIndex5(2), + sulCodeIndex4(3), + sulCodeIndex3(4), + sulCodeIndex2(5), + sulCodeIndex1(6), + sulCodeIndex0(7) + } (SIZE(8)) OPTIONAL, + subchannelSize CHOICE { + size1 NULL, + size2 SEQUENCE { + -- subch0 means bitstring '01' in the tabular, subch1 means bitsring '10'. + subchannels ENUMERATED { subch0, subch1 } OPTIONAL + }, + size4 SEQUENCE { + subchannels BIT STRING { + subCh3(0), + subCh2(1), + subCh1(2), + subCh0(3) + } (SIZE(4)) OPTIONAL + }, + size8 SEQUENCE { + subchannels BIT STRING { + subCh7(0), + subCh6(1), + subCh5(2), + subCh4(3), + subCh3(4), + subCh2(5), + subCh1(6), + subCh0(7) + } (SIZE(8)) OPTIONAL + } + } + +} + +ActivationTimeOffset ::= INTEGER (0 .. 255) + +AdditionalPRACH-TF-and-TFCS-CCCH-IEs ::= SEQUENCE { + powerOffsetInformation PowerOffsetInformation, + dynamicTFInformationCCCH DynamicTFInformationCCCH +} + +AdditionalPRACH-TF-and-TFCS-CCCH ::= SEQUENCE { + additionalPRACH-TF-and-TFCS-CCCH-IEs AdditionalPRACH-TF-and-TFCS-CCCH-IEs OPTIONAL +} + +-- The order is the same as in the PRACH-SystemInformationList +AdditionalPRACH-TF-and-TFCS-CCCH-List ::= SEQUENCE (SIZE (1..maxPRACH)) OF + AdditionalPRACH-TF-and-TFCS-CCCH + +AdditionalDLSecCellInfoListFDD ::= SEQUENCE (SIZE (2)) OF + AdditionalDLSecCellInfoFDD + +AdditionalDLSecCellInfoListFDD-r11 ::= SEQUENCE (SIZE (2)) OF + AdditionalDLSecCellInfoFDD-r11 + +AdditionalDLSecCellInfoListFDD2 ::= SEQUENCE (SIZE (4)) OF + AdditionalDLSecCellInfoFDD-r11 + +-- AdditionalDLSecCellInfoFDD is introduced to avoid a SEQUENCE of SEQUENCE, a convention in RAN2. +AdditionalDLSecCellInfoFDD ::= SEQUENCE { + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r10 OPTIONAL +} + +AdditionalDLSecCellInfoFDD-r11 ::= SEQUENCE { + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r11 OPTIONAL +} + +AICH-Info ::= SEQUENCE { + channelisationCode256 ChannelisationCode256, + sttd-Indicator BOOLEAN, + aich-TransmissionTiming AICH-TransmissionTiming +} + +AICH-Info-Compressed ::= SEQUENCE { + channelisationCode256 ChannelisationCode256 +} + +AICH-PowerOffset ::= INTEGER (-22..5) + +AICH-TransmissionTiming ::= ENUMERATED { + e0, e1 } + +AllocationPeriodInfo ::= SEQUENCE { + allocationActivationTime INTEGER (0..255), + allocationDuration INTEGER (1..256) +} + +-- Actual value Alpha = IE value * 0.125 +Alpha ::= INTEGER (0..8) + +Antenna3And4 ::= SEQUENCE { + antenna3And4-S-CPICH Antenna3And4-S-CPICH OPTIONAL, + antenna3And4-D-CPICH Antenna3And4-D-CPICH OPTIONAL +} + +Antenna3And4-S-CPICH ::= SEQUENCE { + antenna3-S-CPICH Antenna3-S-CPICH OPTIONAL, + antenna4-S-CPICH Antenna4-S-CPICH OPTIONAL, + s-cpich-PowerOffset-Mimo S-CPICH-PowerOffset-4x4MIMO OPTIONAL +} + +Antenna3And4-D-CPICH ::= SEQUENCE { + antenna3-D-CPICH Antenna3-D-CPICH OPTIONAL, + antenna4-D-CPICH Antenna4-D-CPICH OPTIONAL, + d-cpich-PowerOffset-Mimo D-CPICH-PowerOffset-4x4MIMO OPTIONAL, + initialD-CPICHStatus ENUMERATED { activated } OPTIONAL +} + +Antenna3-D-CPICH ::= SEQUENCE { + channelisationCode ChannelisationCode256 +} + +Antenna4-D-CPICH ::= SEQUENCE { + channelisationCode ChannelisationCode256 +} + +Antenna3-S-CPICH ::= SEQUENCE { + channelisationCode ChannelisationCode256 +} + +Antenna4-S-CPICH ::= SEQUENCE { + channelisationCode ChannelisationCode256 +} + +AP-AICH-ChannelisationCode ::= INTEGER (0..255) + +AP-PreambleScramblingCode ::= INTEGER (0..79) + +AP-Signature ::= INTEGER (0..15) + +AP-Signature-VCAM ::= SEQUENCE { + ap-Signature AP-Signature, + availableAP-SubchannelList AvailableAP-SubchannelList OPTIONAL +} + +AP-Subchannel ::= INTEGER (0..11) + +ASCSetting-FDD ::= SEQUENCE { + -- TABULAR: accessServiceClass-FDD is MD in tabular description + -- Default value is previous ASC + -- If this is the first ASC, the default value is all available signature and sub-channels + accessServiceClass-FDD AccessServiceClass-FDD OPTIONAL +} + +ASCSetting-TDD ::= SEQUENCE { + -- TABULAR: accessServiceClass-TDD is MD in tabular description + -- Default value is previous ASC + -- If this is the first ASC, the default value is all available channelisation codes and + -- all available sub-channels with subchannelSize=size1. + accessServiceClass-TDD AccessServiceClass-TDD OPTIONAL +} + +ASCSetting-TDD-r7 ::= SEQUENCE { + -- TABULAR: accessServiceClass-TDD is MD in tabular description + -- Default value is previous ASC + -- If this is the first ASC, the default value is all available channelisation codes and + -- all available sub-channels with subchannelSize=size1. + accessServiceClass-TDD AccessServiceClass-TDD-r7 OPTIONAL +} + +ASCSetting-TDD-LCR-r4 ::= SEQUENCE { + -- TABULAR: accessServiceClass-TDD-LCR is MD in tabular description + -- Default value is previous ASC + -- If this is the first ASC, the default value is all available SYNC_UL codes and + -- all available sub-channels with subchannelSize=size1. + accessServiceClass-TDD-LCR AccessServiceClass-TDD-LCR-r4 OPTIONAL +} + +AvailableAP-Signature-VCAMList ::= SEQUENCE (SIZE (1..maxPCPCH-APsig)) OF + AP-Signature-VCAM + +AvailableAP-SignatureList ::= SEQUENCE (SIZE (1..maxPCPCH-APsig)) OF + AP-Signature + +AvailableAP-SubchannelList ::= SEQUENCE (SIZE (1..maxPCPCH-APsubCh)) OF + AP-Subchannel + +AvailableMinimumSF-ListVCAM ::= SEQUENCE (SIZE (1..maxPCPCH-SF)) OF + AvailableMinimumSF-VCAM + +AvailableMinimumSF-VCAM ::= SEQUENCE { + minimumSpreadingFactor MinimumSpreadingFactor, + nf-Max NF-Max, + maxAvailablePCPCH-Number MaxAvailablePCPCH-Number, + availableAP-Signature-VCAMList AvailableAP-Signature-VCAMList +} + +AvailableSignatures ::= BIT STRING { + signature15(0), + signature14(1), + signature13(2), + signature12(3), + signature11(4), + signature10(5), + signature9(6), + signature8(7), + signature7(8), + signature6(9), + signature5(10), + signature4(11), + signature3(12), + signature2(13), + signature1(14), + signature0(15) + } (SIZE(16)) + +AvailableSubChannelNumbers ::= BIT STRING { + subCh11(0), + subCh10(1), + subCh9(2), + subCh8(3), + subCh7(4), + subCh6(5), + subCh5(6), + subCh4(7), + subCh3(8), + subCh2(9), + subCh1(10), + subCh0(11) + } (SIZE(12)) + +BEACON-PL-Est ::= ENUMERATED { true } + +BurstType ::= ENUMERATED { + type1, type2 } + +-- Actual value Bler-Target = IE value * 0.05 +Bler-Target ::= INTEGER (-63..0) + +CCTrCH-PowerControlInfo ::= SEQUENCE { + tfcs-Identity TFCS-Identity OPTIONAL, + ul-DPCH-PowerControlInfo UL-DPCH-PowerControlInfo +} + +CCTrCH-PowerControlInfo-r4 ::= SEQUENCE { + tfcs-Identity TFCS-Identity OPTIONAL, + ul-DPCH-PowerControlInfo UL-DPCH-PowerControlInfo-r4 +} + +CCTrCH-PowerControlInfo-r5 ::= SEQUENCE { + tfcs-Identity TFCS-Identity OPTIONAL, + ul-DPCH-PowerControlInfo UL-DPCH-PowerControlInfo-r5 +} + +CCTrCH-PowerControlInfo-r7 ::= SEQUENCE { + tfcs-Identity TFCS-Identity OPTIONAL, + ul-DPCH-PowerControlInfo UL-DPCH-PowerControlInfo-r7 +} + +CD-AccessSlotSubchannel ::= INTEGER (0..11) + +CD-AccessSlotSubchannelList ::= SEQUENCE (SIZE (1..maxPCPCH-CDsubCh)) OF + CD-AccessSlotSubchannel + +CD-CA-ICH-ChannelisationCode ::= INTEGER (0..255) + +CD-PreambleScramblingCode ::= INTEGER (0..79) + +CD-SignatureCode ::= INTEGER (0..15) + +CD-SignatureCodeList ::= SEQUENCE (SIZE (1..maxPCPCH-CDsig)) OF + CD-SignatureCode + +CellAndChannelIdentity ::= SEQUENCE { + -- burstType may be set to either value and should be ignored by the receiver for 1.28 Mcps TDD. + burstType BurstType, + midambleShift MidambleShiftLong, + timeslot TimeslotNumber, + cellParametersID CellParametersID + } + +CellParametersID ::= INTEGER (0..127) + +Cfntargetsfnframeoffset ::= INTEGER(0..255) + +ChannelAssignmentActive ::= CHOICE { + notActive NULL, + isActive AvailableMinimumSF-ListVCAM +} + +ChannelisationCode256 ::= INTEGER (0..255) + +ChannelReqParamsForUCSM ::= SEQUENCE { + availableAP-SignatureList AvailableAP-SignatureList, + availableAP-SubchannelList AvailableAP-SubchannelList OPTIONAL +} + +ClosedLoopTimingAdjMode ::= ENUMERATED { + slot1, slot2 } + +CodeNumberDSCH ::= INTEGER (0..255) + +CodeRange ::= SEQUENCE { + pdsch-CodeMapList PDSCH-CodeMapList +} + +CodeResourceInformation-TDD128 ::= SEQUENCE { + start-code HS-ChannelisationCode-LCR, + stop-code HS-ChannelisationCode-LCR +} + +CodeWordSet ::= ENUMERATED { + longCWS, + mediumCWS, + shortCWS, + ssdtOff } + +Common-E-DCH-ResourceInfoList ::= SEQUENCE { + s-offset INTEGER (0..9) OPTIONAL, + f-dpch-ChannelisationCodeNumber INTEGER (0..255) OPTIONAL, + e-RGCH-Information E-RGCH-Information-CommonEdch OPTIONAL, + e-hich-Info E-HICH-Information-CommonEdch, + ul-DPCH-CodeInfoForCommonEDCH UL-DPCH-CodeInfoForCommonEDCH +} + +Common-E-DCH-ResourceInfoListExt ::= SEQUENCE { + twoMsHarqConfiguration TwoMsHarqConfiguration +} + +Common-E-RNTI-Info ::= SEQUENCE (SIZE (1..maxERUCCH)) OF + SEQUENCE { + starting-E-RNTI E-RNTI, + number-of-group INTEGER (1..maxERNTIgroup), + number-of-ENRTI-per-group INTEGER (1..maxERNTIperGroup) +} + +CommonEDCHResourceConfigInfoListExt::= SEQUENCE { + scheduledTransmissionConfiguration ScheduledTransmissionConfiguration OPTIONAL, + cOffset INTEGER (0..29) OPTIONAL +} + + -- For FDD, the network should not include the IE CommonEDCHSystemInfo. + -- Instead, the IE commonEDCHSystemInfoFDD should be used. + -- If included, the UE behavior is unspecified. +CommonEDCHSystemInfo ::= SEQUENCE { + ul-InterferenceForCommonEDCH UL-Interference OPTIONAL, + common-E-DCH-MAC-d-FlowList Common-E-DCH-MAC-d-FlowList, + modeSpecificInfo CHOICE { + dummy SEQUENCE {}, + tdd CHOICE { + tdd768 NULL, + tdd384 NULL, + tdd128 SEQUENCE { + e-RUCCH-Info E-RUCCH-Info-TDD128, + e-PUCH-Info E-PUCH-Info-TDD128, + e-hich-Information E-HICH-Information-TDD128, + e-agch-Information E-AGCH-Information-TDD128, + harq-Info ENUMERATED { rv0, rvtable }, + ccch-transmission-Info SEQUENCE { + common-e-rnti-Info Common-E-RNTI-Info, + harq-MaximumNumberOfRetransmissions INTEGER (0..7), + harq-retransmission-timer ENUMERATED { + ms10, ms15, ms20, ms25, + ms30, ms35, ms40, ms45, + ms50, ms55, ms60, ms65, + ms70, ms75, ms80, ms85, + ms90, ms95, ms100, ms110, + ms120, ms140, ms160 }, + harq-power-offset INTEGER (0..6) + } + } + } + } +} + +CommonEDCHSystemInfoFDD ::= SEQUENCE { + ul-InterferenceForCommonEDCH UL-Interference OPTIONAL, + common-E-DCH-MAC-d-FlowList Common-E-DCH-MAC-d-FlowList, + prach-PreambleForEnhancedUplink PRACH-PreambleForEnhancedUplink, + initialServingGrantValue INTEGER (0..37), + e-dch-TTI E-DCH-TTI, + e-agch-Information E-AGCH-Information, + harq-Info ENUMERATED { rv0, rvtable }, + ul-DPCHpowerControlInfoForCommonEDCH + UL-DPCHpowerControlInfoForCommonEDCH, + e-dpcch-Info E-DPCCH-Info-r7, + e-dpdch-Info E-DPDCH-Info-r8, + -- Actual value dl-FDPCH-TPCcommandErrorRate = IE value * 0.01 + dl-FDPCH-TPCcommandErrorRate INTEGER (1..10), + additional-E-DCH-TransmitBackoff INTEGER (0..15), + max-CCCH-ResourceAllocation ENUMERATED { + tti8, tti12, tti16, tti20, tti24, tti32, + tti40, tti80 }, + max-PeriodForCollisionResolution INTEGER (8..24), + e-dch-TransmitContinuationOffset ENUMERATED { + tti0, tti4, tti8, tti16, tti24, tti40, + tti80,infinity }, + ack-nack-support-on-HS-DPCCH BOOLEAN, + measurement-Feedback-Info Measurement-Feedback-Info-r7 OPTIONAL, + common-E-DCH-ResourceInfoList SEQUENCE (SIZE (1..maxEDCHs)) OF + Common-E-DCH-ResourceInfoList +} + +CommonEDCHSystemInfoParamConcurrentTTI ::= SEQUENCE { + common-E-DCH-MAC-d-Flow-Info-List-ConcurrentTTI + Common-E-DCH-MAC-d-Flow-Info-List-ConcurrentTTI OPTIONAL, + initialServingGrantValue INTEGER (0..37) OPTIONAL, + e-agch-Information E-AGCH-Information OPTIONAL, + ul-DPCHpowerControlInfoConcurrentTTI + UL-DPCHpowerControlInfoConcurrentTTI OPTIONAL, + e-DPCCH-DPCCH-PowerOffset E-DPCCH-DPCCH-PowerOffset OPTIONAL, + e-dpdch-Info E-DPDCH-Info-r8, + additional-E-DCH-TransmitBackoff INTEGER (0..15) OPTIONAL, + max-CCCH-ResourceAllocation ENUMERATED { + tti8, tti12, tti16, tti20, tti24, tti32, + tti40, tti80 } OPTIONAL, + max-PeriodForCollisionResolution INTEGER (8..24) OPTIONAL, + e-dch-TransmitContinuationOffset ENUMERATED { + tti0, tti4, tti8, tti16, tti24, tti40, + tti80,infinity } OPTIONAL, + measurement-Feedback-Info-ConcurrentTTI Measurement-Feedback-Info-ConcurrentTTI OPTIONAL +} + +CommonERGCHChannelConfig ::= SEQUENCE { + channelisationCode INTEGER (0..127) OPTIONAL, + signatureSequence INTEGER (0..39) OPTIONAL +} + +CommonERGCHInfoFDD ::= SEQUENCE { + configurationInfo CHOICE { + continue NULL, + newConfiguration SEQUENCE { + eRGCHNeighbourCellList BIT STRING (SIZE (maxCellMeas)), + commonERGCHChannelConfigList SEQUENCE (SIZE (1.. maxCellMeas)) OF + CommonERGCHChannelConfig, + minimumServingGrantValue INTEGER (0..37) OPTIONAL, + reportingRange ReportingRange, + filterCoefficient FilterCoefficient DEFAULT fc0 + } + } +} + +CommonTimeslotInfo ::= SEQUENCE { + -- TABULAR: secondInterleavingMode is MD, but since it can be encoded in a single + -- bit it is not defined as OPTIONAL. + secondInterleavingMode SecondInterleavingMode, + tfci-Coding TFCI-Coding OPTIONAL, + puncturingLimit PuncturingLimit, + repetitionPeriodAndLength RepetitionPeriodAndLength OPTIONAL +} + +CommonTimeslotInfoMBMS ::= SEQUENCE { + -- TABULAR: secondInterleavingMode is MD, but since it can be encoded in a single + -- bit it is not defined as OPTIONAL. + secondInterleavingMode SecondInterleavingMode, + tfci-Coding TFCI-Coding OPTIONAL, + puncturingLimit PuncturingLimit +} + +CommonTimeslotInfoSCCPCH ::= SEQUENCE { + -- TABULAR: secondInterleavingMode is MD, but since it can be encoded in a single + -- bit it is not defined as OPTIONAL. + secondInterleavingMode SecondInterleavingMode, + tfci-Coding TFCI-Coding OPTIONAL, + puncturingLimit PuncturingLimit, + repetitionPeriodLengthAndOffset RepetitionPeriodLengthAndOffset OPTIONAL +} + +ConstantValue ::= INTEGER (-35..-10) + +ConstantValueTdd ::= INTEGER (-35..10) + +ControlChannelDRXCycle-TDD128 ::= ENUMERATED { + sub-frames-1, sub-frames-2, sub-frames-4, sub-frames-8, + sub-frames-16, sub-frames-32, sub-frames-64, spare1 } + +ControlChannelDRXInfo-TDD128-r8 ::= SEQUENCE { + controlChannelDrxOperation CHOICE { + continue SEQUENCE { + enablingDelay EnablingDelay-TDD128 OPTIONAL + }, + newOperation SEQUENCE { + hS-SCCH-Drx-Info HS-SCCH-DRX-Info-TDD128, + e-AGCH-Drx-Info E-AGCH-DRX-Info-TDD128 OPTIONAL, + enablingDelay EnablingDelay-TDD128 + } + } +} + +CPCH-PersistenceLevels ::= SEQUENCE { + cpch-SetID CPCH-SetID, + dynamicPersistenceLevelTF-List DynamicPersistenceLevelTF-List +} + +CPCH-PersistenceLevelsList ::= SEQUENCE (SIZE (1..maxCPCHsets)) OF + CPCH-PersistenceLevels + +CPCH-SetInfo ::= SEQUENCE { + cpch-SetID CPCH-SetID, + transportFormatSet TransportFormatSet, + tfcs TFCS, + ap-PreambleScramblingCode AP-PreambleScramblingCode, + ap-AICH-ChannelisationCode AP-AICH-ChannelisationCode, + cd-PreambleScramblingCode CD-PreambleScramblingCode, + cd-CA-ICH-ChannelisationCode CD-CA-ICH-ChannelisationCode, + cd-AccessSlotSubchannelList CD-AccessSlotSubchannelList OPTIONAL, + cd-SignatureCodeList CD-SignatureCodeList OPTIONAL, + deltaPp-m DeltaPp-m, + ul-DPCCH-SlotFormat UL-DPCCH-SlotFormat, + n-StartMessage N-StartMessage, + n-EOT N-EOT, + -- TABULAR: VCAM info has been nested inside ChannelAssignmentActive, + -- which in turn is mandatory since it's only a binary choice. + channelAssignmentActive ChannelAssignmentActive, + cpch-StatusIndicationMode CPCH-StatusIndicationMode, + pcpch-ChannelInfoList PCPCH-ChannelInfoList +} + +CPCH-SetInfoList ::= SEQUENCE (SIZE (1..maxCPCHsets)) OF + CPCH-SetInfo + +CPCH-StatusIndicationMode ::= ENUMERATED { + pa-mode, + pamsf-mode } + +CQI-DTX-Timer ::= ENUMERATED { + sub-frames-0, + sub-frames-1, + sub-frames-2, + sub-frames-4, + sub-frames-8, + sub-frames-16, + sub-frames-32, + sub-frames-64, + sub-frames-128, + sub-frames-256, + sub-frames-512, + sub-frames-Infinity, + spare4, + spare3, + spare2, + spare1 } + +CQI-RepetitionFactor ::= INTEGER(1..4) + +CSICH-PowerOffset ::= INTEGER (-10..5) + +D-CPICH-PowerOffset-4x4MIMO ::= INTEGER (-12..0) + +-- DefaultDPCH-OffsetValueFDD and DefaultDPCH-OffsetValueTDD corresponds to +-- IE "Default DPCH Offset Value" depending on the mode. +-- Actual value DefaultDPCH-OffsetValueFDD = IE value * 512 +DefaultDPCH-OffsetValueFDD ::= INTEGER (0..599) + +DefaultDPCH-OffsetValueTDD ::= INTEGER (0..7) + +DeltaPp-m ::= INTEGER (-10..10) + +DeltaCQI ::= INTEGER (0..8) + +DeltaCQI-r11 ::= INTEGER (0..10) + +DeltaNACK ::= INTEGER (0..8) + +DeltaNACK-r11 ::= INTEGER (0..10) + +DeltaACK ::= INTEGER (0..8) + +DeltaACK-r11 ::= INTEGER (0..10) + +-- Actual value DeltaSIR = IE value * 0.1 +DeltaSIR ::= INTEGER (0..30) + +DHS-Sync ::= INTEGER (-20..10) + +DL-CCTrCh ::= SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + timeInfo TimeInfo, + commonTimeslotInfo CommonTimeslotInfo OPTIONAL, + dl-CCTrCH-TimeslotsCodes DownlinkTimeslotsCodes OPTIONAL, + ul-CCTrChTPCList UL-CCTrChTPCList OPTIONAL +} + +DL-CCTrCh-r4 ::= SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + timeInfo TimeInfo, + commonTimeslotInfo CommonTimeslotInfo OPTIONAL, + tddOption CHOICE { + tdd384 SEQUENCE { + dl-CCTrCH-TimeslotsCodes DownlinkTimeslotsCodes OPTIONAL + }, + tdd128 SEQUENCE { + dl-CCTrCH-TimeslotsCodes DownlinkTimeslotsCodes-LCR-r4 OPTIONAL + } + }, + ul-CCTrChTPCList UL-CCTrChTPCList OPTIONAL +} + +DL-CCTrCh-r7 ::= SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + timeInfo TimeInfo, + commonTimeslotInfo CommonTimeslotInfo OPTIONAL, + tddOption CHOICE { + tdd384 SEQUENCE { + dl-CCTrCH-TimeslotsCodes DownlinkTimeslotsCodes-r7 OPTIONAL + }, + tdd768 SEQUENCE { + dl-CCTrCH-TimeslotsCodes DownlinkTimeslotsCodes-VHCR OPTIONAL + }, + tdd128 SEQUENCE { + dl-CCTrCH-TimeslotsCodes DownlinkTimeslotsCodes-LCR-r4 OPTIONAL + } + }, + ul-CCTrChTPCList UL-CCTrChTPCList OPTIONAL +} + +DL-CCTrChList ::= SEQUENCE (SIZE (1..maxCCTrCH)) OF + DL-CCTrCh + +DL-CCTrChList-r7 ::= SEQUENCE (SIZE (1..maxCCTrCH)) OF + DL-CCTrCh-r7 + +DL-CCTrChList-r4 ::= SEQUENCE (SIZE (1..maxCCTrCH)) OF + DL-CCTrCh-r4 + +DL-CCTrChListToRemove ::= SEQUENCE (SIZE (1..maxCCTrCH)) OF + TFCS-IdentityPlain + +DL-ChannelisationCode ::= SEQUENCE { + secondaryScramblingCode SecondaryScramblingCode OPTIONAL, + sf-AndCodeNumber SF512-AndCodeNumber, + scramblingCodeChange ScramblingCodeChange OPTIONAL +} + +DL-ChannelisationCodeList ::= SEQUENCE (SIZE (1..maxDPCH-DLchan)) OF + DL-ChannelisationCode + +DL-CommonInformation ::= SEQUENCE { + dl-DPCH-InfoCommon DL-DPCH-InfoCommon OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + defaultDPCH-OffsetValue DefaultDPCH-OffsetValueFDD OPTIONAL, + dpch-CompressedModeInfo DPCH-CompressedModeInfo OPTIONAL, + tx-DiversityMode TX-DiversityMode OPTIONAL, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SSDT-Information OPTIONAL + }, + tdd SEQUENCE { + defaultDPCH-OffsetValue DefaultDPCH-OffsetValueTDD OPTIONAL + } + } +} + +DL-CommonInformation-r4 ::= SEQUENCE { + dl-DPCH-InfoCommon DL-DPCH-InfoCommon-r4 OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + defaultDPCH-OffsetValue DefaultDPCH-OffsetValueFDD OPTIONAL, + dpch-CompressedModeInfo DPCH-CompressedModeInfo OPTIONAL, + tx-DiversityMode TX-DiversityMode OPTIONAL, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SSDT-Information-r4 OPTIONAL + }, + tdd SEQUENCE { + tddOption CHOICE { + tdd384 NULL, + tdd128 SEQUENCE { + tstd-Indicator BOOLEAN + } + }, + defaultDPCH-OffsetValue DefaultDPCH-OffsetValueTDD OPTIONAL + } + } +} + + +DL-CommonInformation-r5 ::= SEQUENCE { + dl-DPCH-InfoCommon DL-DPCH-InfoCommon-r4 OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + defaultDPCH-OffsetValue DefaultDPCH-OffsetValueFDD OPTIONAL, + dpch-CompressedModeInfo DPCH-CompressedModeInfo OPTIONAL, + tx-DiversityMode TX-DiversityMode OPTIONAL, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SSDT-Information-r4 OPTIONAL + }, + tdd SEQUENCE { + tddOption CHOICE { + tdd384 NULL, + tdd128 SEQUENCE { + tstd-Indicator BOOLEAN + } + }, + defaultDPCH-OffsetValue DefaultDPCH-OffsetValueTDD OPTIONAL + } + }, + mac-hsResetIndicator ENUMERATED { true } OPTIONAL +} + +DL-CommonInformation-r6 ::= SEQUENCE { + dl-dpchInfoCommon CHOICE { + dl-DPCH-InfoCommon DL-DPCH-InfoCommon-r6, + dl-FDPCH-InfoCommon DL-FDPCH-InfoCommon-r6 + } OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + defaultDPCH-OffsetValue DefaultDPCH-OffsetValueFDD OPTIONAL, + dpch-CompressedModeInfo DPCH-CompressedModeInfo OPTIONAL, + tx-DiversityMode TX-DiversityMode OPTIONAL + }, + tdd SEQUENCE { + tddOption CHOICE { + tdd384 NULL, + tdd128 SEQUENCE { + tstd-Indicator BOOLEAN + } + }, + defaultDPCH-OffsetValue DefaultDPCH-OffsetValueTDD OPTIONAL + } + }, + mac-hsResetIndicator ENUMERATED { true } OPTIONAL, + postVerificationPeriod ENUMERATED { true } OPTIONAL +} + +DL-CommonInformation-r7 ::= SEQUENCE { + dl-dpchInfoCommon CHOICE { + dl-DPCH-InfoCommon DL-DPCH-InfoCommon-r6, + dl-FDPCH-InfoCommon DL-FDPCH-InfoCommon-r6 + } OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + defaultDPCH-OffsetValue DefaultDPCH-OffsetValueFDD OPTIONAL, + dpch-CompressedModeInfo DPCH-CompressedModeInfo OPTIONAL, + tx-DiversityMode TX-DiversityMode OPTIONAL + }, + tdd SEQUENCE { + tddOption CHOICE { + tdd384 NULL, + tdd768 NULL, + tdd128 SEQUENCE { + tstd-Indicator BOOLEAN + } + }, + defaultDPCH-OffsetValue DefaultDPCH-OffsetValueTDD OPTIONAL + } + }, + mac-hsResetIndicator ENUMERATED { true } OPTIONAL, + postVerificationPeriod ENUMERATED { true } OPTIONAL +} + +DL-CommonInformation-r8 ::= SEQUENCE { + dl-dpchInfoCommon CHOICE { + dl-DPCH-InfoCommon DL-DPCH-InfoCommon-r6, + dl-FDPCH-InfoCommon DL-FDPCH-InfoCommon-r6 + } OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + defaultDPCH-OffsetValue DefaultDPCH-OffsetValueFDD OPTIONAL, + dpch-CompressedModeInfo DPCH-CompressedModeInfo-r8 OPTIONAL, + tx-DiversityMode TX-DiversityMode OPTIONAL + }, + tdd SEQUENCE { + tddOption CHOICE { + tdd384 NULL, + tdd768 NULL, + tdd128 SEQUENCE { + tstd-Indicator BOOLEAN + } + }, + defaultDPCH-OffsetValue DefaultDPCH-OffsetValueTDD OPTIONAL + } + }, + mac-hsResetIndicator ENUMERATED { true } OPTIONAL, + postVerificationPeriod ENUMERATED { true } OPTIONAL +} + +DL-CommonInformation-r10 ::= SEQUENCE { + dl-dpchInfoCommon CHOICE { + dl-DPCH-InfoCommon DL-DPCH-InfoCommon-r6, + dl-FDPCH-InfoCommon DL-FDPCH-InfoCommon-r6 + } OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + defaultDPCH-OffsetValue DefaultDPCH-OffsetValueFDD OPTIONAL, + dpch-CompressedModeInfo DPCH-CompressedModeInfo-r10 OPTIONAL, + tx-DiversityMode TX-DiversityMode OPTIONAL + }, + tdd SEQUENCE { + tddOption CHOICE { + tdd384 NULL, + tdd768 NULL, + tdd128 SEQUENCE { + tstd-Indicator BOOLEAN + } + }, + defaultDPCH-OffsetValue DefaultDPCH-OffsetValueTDD OPTIONAL + } + }, + mac-hsResetIndicator ENUMERATED { true } OPTIONAL, + postVerificationPeriod ENUMERATED { true } OPTIONAL +} + +DL-CommonInformation-r11 ::= SEQUENCE { + dl-dpchInfoCommon CHOICE { + dl-DPCH-InfoCommon DL-DPCH-InfoCommon-r6, + dl-FDPCH-InfoCommon DL-FDPCH-InfoCommon-r6 + } OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + defaultDPCH-OffsetValue DefaultDPCH-OffsetValueFDD OPTIONAL, + dpch-CompressedModeInfo DPCH-CompressedModeInfo-r10 OPTIONAL, + tx-DiversityMode TX-DiversityMode OPTIONAL + }, + tdd SEQUENCE { + tddOption CHOICE { + tdd384 NULL, + tdd768 NULL, + tdd128 SEQUENCE { + tstd-Indicator BOOLEAN + } + }, + defaultDPCH-OffsetValue DefaultDPCH-OffsetValueTDD OPTIONAL + } + }, + mac-hsResetIndicator ENUMERATED { true } OPTIONAL, + postVerificationPeriod ENUMERATED { true } OPTIONAL, + mac-hsResetIndicator-assisting ENUMERATED { true } OPTIONAL +} + +DL-CommonInformationPost ::= SEQUENCE { + dl-DPCH-InfoCommon DL-DPCH-InfoCommonPost +} + +DL-CommonInformationPredef ::= SEQUENCE { + dl-DPCH-InfoCommon DL-DPCH-InfoCommonPredef OPTIONAL +} + +DL-CompressedModeMethod ::= ENUMERATED { + -- dummy is not used in this version of the specification, it should + -- not be sent and if received the UE behaviour is not specified. + dummy, sf-2, + higherLayerScheduling } + +DL-DPCH-InfoCommon ::= SEQUENCE { + cfnHandling CHOICE { + maintain NULL, + initialise SEQUENCE { + -- IE dummy is not used in this version of the specification + -- The IE should not be sent and if received it should be ignored + dummy Cfntargetsfnframeoffset OPTIONAL + } + }, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + dl-DPCH-PowerControlInfo DL-DPCH-PowerControlInfo OPTIONAL, + powerOffsetPilot-pdpdch PowerOffsetPilot-pdpdch, + dl-rate-matching-restriction Dl-rate-matching-restriction OPTIONAL, + -- TABULAR: The number of pilot bits is nested inside the spreading factor. + spreadingFactorAndPilot SF512-AndPilot, + positionFixedOrFlexible PositionFixedOrFlexible, + tfci-Existence BOOLEAN + }, + tdd SEQUENCE { + dl-DPCH-PowerControlInfo DL-DPCH-PowerControlInfo OPTIONAL + } + } +} + +DL-DPCH-InfoCommon-r4 ::= SEQUENCE { + cfnHandling CHOICE { + maintain NULL, + initialise SEQUENCE { + -- IE dummy is not used in this version of the specification + -- The IE should not be sent and if received it should be ignored + dummy Cfntargetsfnframeoffset OPTIONAL + } + }, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + dl-DPCH-PowerControlInfo DL-DPCH-PowerControlInfo OPTIONAL, + powerOffsetPilot-pdpdch PowerOffsetPilot-pdpdch, + dl-rate-matching-restriction Dl-rate-matching-restriction OPTIONAL, + -- TABULAR: The number of pilot bits is nested inside the spreading factor. + spreadingFactorAndPilot SF512-AndPilot, + positionFixedOrFlexible PositionFixedOrFlexible, + tfci-Existence BOOLEAN + }, + tdd SEQUENCE { + dl-DPCH-PowerControlInfo DL-DPCH-PowerControlInfo OPTIONAL + } + }, +-- The IE mac-d-HFN-initial-value should be absent in the RRCConnectionSetup-r4-IEs or +-- RRCConnectionSetup-r5-IEs or HandoverToUTRANCommand-r4-IEs or HandoverToUTRANCommand-r5-IEs and +-- if the IE is included, the general error handling for conditional IEs applies. + mac-d-HFN-initial-value MAC-d-HFN-initial-value OPTIONAL + +} + +DL-DPCH-InfoCommon-r6 ::= SEQUENCE { + cfnHandling CHOICE { + maintain SEQUENCE { + timingmaintainedsynchind TimingMaintainedSynchInd OPTIONAL + }, + initialise NULL + }, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + dl-DPCH-PowerControlInfo DL-DPCH-PowerControlInfo OPTIONAL, + powerOffsetPilot-pdpdch PowerOffsetPilot-pdpdch, + dl-rate-matching-restriction Dl-rate-matching-restriction OPTIONAL, + -- TABULAR: The number of pilot bits is nested inside the spreading factor. + spreadingFactorAndPilot SF512-AndPilot, + positionFixedOrFlexible PositionFixedOrFlexible, + tfci-Existence BOOLEAN + }, + tdd SEQUENCE { + dl-DPCH-PowerControlInfo DL-DPCH-PowerControlInfo OPTIONAL + } + }, + -- The IE mac-d-HFN-initial-value should be absent in the RRCConnectionSetup and the + -- HandoverToUTRANCommand messages. If the IE is included, the general error handling + -- for conditional IEs applies. + mac-d-HFN-initial-value MAC-d-HFN-initial-value OPTIONAL +} + +DL-DPCH-InfoCommonPost ::= SEQUENCE { + dl-DPCH-PowerControlInfo DL-DPCH-PowerControlInfo OPTIONAL +} + +DL-DPCH-InfoCommonPredef ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + -- TABULAR: The number of pilot bits is nested inside the spreading factor. + spreadingFactorAndPilot SF512-AndPilot, + positionFixedOrFlexible PositionFixedOrFlexible, + tfci-Existence BOOLEAN + }, + tdd SEQUENCE { + commonTimeslotInfo CommonTimeslotInfo + } + } +} + +DL-DPCH-InfoPerRL ::= CHOICE { + fdd SEQUENCE { + pCPICH-UsageForChannelEst PCPICH-UsageForChannelEst, + dpch-FrameOffset DPCH-FrameOffset, + secondaryCPICH-Info SecondaryCPICH-Info OPTIONAL, + dl-ChannelisationCodeList DL-ChannelisationCodeList, + tpc-CombinationIndex TPC-CombinationIndex, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SSDT-CellIdentity OPTIONAL, + closedLoopTimingAdjMode ClosedLoopTimingAdjMode OPTIONAL + }, + tdd SEQUENCE { + dl-CCTrChListToEstablish DL-CCTrChList OPTIONAL, + dl-CCTrChListToRemove DL-CCTrChListToRemove OPTIONAL + } +} + +DL-DPCH-InfoPerRL-r4 ::= CHOICE { + fdd SEQUENCE { + pCPICH-UsageForChannelEst PCPICH-UsageForChannelEst, + dpch-FrameOffset DPCH-FrameOffset, + secondaryCPICH-Info SecondaryCPICH-Info OPTIONAL, + dl-ChannelisationCodeList DL-ChannelisationCodeList, + tpc-CombinationIndex TPC-CombinationIndex, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SSDT-CellIdentity OPTIONAL, + closedLoopTimingAdjMode ClosedLoopTimingAdjMode OPTIONAL + }, + tdd SEQUENCE { + dl-CCTrChListToEstablish DL-CCTrChList-r4 OPTIONAL, + dl-CCTrChListToRemove DL-CCTrChListToRemove OPTIONAL + } +} + +DL-DPCH-InfoPerRL-r5 ::= CHOICE { + fdd SEQUENCE { + pCPICH-UsageForChannelEst PCPICH-UsageForChannelEst, + dpch-FrameOffset DPCH-FrameOffset, + secondaryCPICH-Info SecondaryCPICH-Info OPTIONAL, + dl-ChannelisationCodeList DL-ChannelisationCodeList, + tpc-CombinationIndex TPC-CombinationIndex, + powerOffsetTPC-pdpdch PowerOffsetTPC-pdpdch OPTIONAL, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SSDT-CellIdentity OPTIONAL, + closedLoopTimingAdjMode ClosedLoopTimingAdjMode OPTIONAL + }, + tdd SEQUENCE { + dl-CCTrChListToEstablish DL-CCTrChList-r4 OPTIONAL, + dl-CCTrChListToRemove DL-CCTrChListToRemove OPTIONAL + } +} + +DL-DPCH-InfoPerRL-r6 ::= CHOICE { + fdd SEQUENCE { + pCPICH-UsageForChannelEst PCPICH-UsageForChannelEst, + dpch-FrameOffset DPCH-FrameOffset, + secondaryCPICH-Info SecondaryCPICH-Info OPTIONAL, + dl-ChannelisationCodeList DL-ChannelisationCodeList, + tpc-CombinationIndex TPC-CombinationIndex, + powerOffsetTPC-pdpdch PowerOffsetTPC-pdpdch OPTIONAL, + closedLoopTimingAdjMode ClosedLoopTimingAdjMode OPTIONAL + }, + tdd SEQUENCE { + dl-CCTrChListToEstablish DL-CCTrChList-r4 OPTIONAL, + dl-CCTrChListToRemove DL-CCTrChListToRemove OPTIONAL + } +} + +DL-DPCH-InfoPerRL-r7 ::= CHOICE { + fdd SEQUENCE { + pCPICH-UsageForChannelEst PCPICH-UsageForChannelEst, + dpch-FrameOffset DPCH-FrameOffset, + secondaryCPICH-Info SecondaryCPICH-Info OPTIONAL, + dl-ChannelisationCodeList DL-ChannelisationCodeList, + tpc-CombinationIndex TPC-CombinationIndex, + powerOffsetTPC-pdpdch PowerOffsetTPC-pdpdch OPTIONAL, + closedLoopTimingAdjMode ClosedLoopTimingAdjMode OPTIONAL + }, + tdd SEQUENCE { + dl-CCTrChListToEstablish DL-CCTrChList-r7 OPTIONAL, + dl-CCTrChListToRemove DL-CCTrChListToRemove OPTIONAL + } +} + +DL-FDPCH-InfoPerRL-r6 ::= SEQUENCE { + pCPICH-UsageForChannelEst PCPICH-UsageForChannelEst, + fdpch-FrameOffset DPCH-FrameOffset, + secondaryCPICH-Info SecondaryCPICH-Info OPTIONAL, + secondaryScramblingCode SecondaryScramblingCode OPTIONAL, + dl-ChannelisationCode INTEGER (0..255), + tpc-CombinationIndex TPC-CombinationIndex +} + +DL-FDPCH-InfoPerRL-r7 ::= SEQUENCE { + pCPICH-UsageForChannelEst PCPICH-UsageForChannelEst, + fdpch-FrameOffset DPCH-FrameOffset, + fdpch-SlotFormat FDPCH-SlotFormat OPTIONAL, + secondaryCPICH-Info SecondaryCPICH-Info OPTIONAL, + secondaryScramblingCode SecondaryScramblingCode OPTIONAL, + dl-ChannelisationCode INTEGER (0..255), + tpc-CombinationIndex TPC-CombinationIndex, + sttdIndication STTDIndication OPTIONAL +} + +DL-DPCH-InfoPerRL-PostFDD ::= SEQUENCE { + pCPICH-UsageForChannelEst PCPICH-UsageForChannelEst, + dl-ChannelisationCode DL-ChannelisationCode, + tpc-CombinationIndex TPC-CombinationIndex +} + +DL-DPCH-InfoPerRL-PostTDD ::= SEQUENCE { + dl-DPCH-TimeslotsCodes DownlinkTimeslotsCodes +} + +DL-DPCH-InfoPerRL-PostTDD-LCR-r4 ::= SEQUENCE { + dl-CCTrCH-TimeslotsCodes DownlinkTimeslotsCodes-LCR-r4 +} + +DL-DPCH-PowerControlInfo ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + dpc-Mode DPC-Mode + }, + tdd SEQUENCE { + tpc-StepSizeTDD TPC-StepSizeTDD OPTIONAL + } + } +} + +DL-FDPCH-InfoCommon-r6 ::= SEQUENCE { + cfnHandling CHOICE { + maintain SEQUENCE { + timingmaintainedsynchind TimingMaintainedSynchInd OPTIONAL + }, + initialise NULL + }, + dl-FDPCH-PowerControlInfo DL-DPCH-PowerControlInfo OPTIONAL, + -- Actual value dl-FDPCH-TPCcommandErrorRate = IE value * 0.01 + -- dl-FDPCH-TPCcommandErrorRate values 11..16 are spare and shall not be used in this version of + -- the protocol. + -- In addition, this IE shall always be included otherwise the UE behaviour is unspecified. + dl-FDPCH-TPCcommandErrorRate INTEGER (1..16) OPTIONAL +} + +DL-FrameType ::= ENUMERATED { + dl-FrameTypeA, dl-FrameTypeB } + +DL-HSPDSCH-Information ::= SEQUENCE { + hs-scch-Info HS-SCCH-Info OPTIONAL, + measurement-feedback-Info Measurement-Feedback-Info OPTIONAL, + modeSpecificInfo CHOICE { + tdd CHOICE{ + tdd384 SEQUENCE { + dl-HSPDSCH-TS-Configuration DL-HSPDSCH-TS-Configuration OPTIONAL + }, + tdd128 SEQUENCE { + hs-PDSCH-Midamble-Configuration-tdd128 + HS-PDSCH-Midamble-Configuration-TDD128 OPTIONAL + } + }, + fdd NULL + } +} + +DL-HSPDSCH-Information-r6 ::= SEQUENCE { + hs-scch-Info HS-SCCH-Info-r6 OPTIONAL, + measurement-feedback-Info Measurement-Feedback-Info OPTIONAL, + modeSpecificInfo CHOICE { + tdd CHOICE { + tdd384 SEQUENCE { + dl-HSPDSCH-TS-Configuration DL-HSPDSCH-TS-Configuration OPTIONAL + }, + tdd128 SEQUENCE { + hs-PDSCH-Midamble-Configuration-tdd128 + HS-PDSCH-Midamble-Configuration-TDD128 OPTIONAL + } + }, + fdd NULL + } +} + +DL-HSPDSCH-Information-r7 ::= SEQUENCE { + hs-scch-Info HS-SCCH-Info-r7 OPTIONAL, + measurement-feedback-Info Measurement-Feedback-Info-r7 OPTIONAL, + modeSpecificInfo CHOICE { + tdd CHOICE { + tdd384 SEQUENCE { + dl-HSPDSCH-TS-Configuration DL-HSPDSCH-TS-Configuration OPTIONAL + }, + tdd768 SEQUENCE { + dl-HSPDSCH-TS-Configuration DL-HSPDSCH-TS-Configuration-VHCR OPTIONAL + }, + tdd128 SEQUENCE { + hs-PDSCH-Midamble-Configuration-tdd128 + HS-PDSCH-Midamble-Configuration-TDD128 OPTIONAL, + dl-MultiCarrier-Information DL-MultiCarrier-Information OPTIONAL + } + }, + fdd SEQUENCE { + dl-64QAM-Configured ENUMERATED { true } OPTIONAL + } + } +} + +DL-HSPDSCH-Information-r8 ::= SEQUENCE { + hs-scch-Info HS-SCCH-Info-r7 OPTIONAL, + measurement-feedback-Info Measurement-Feedback-Info-r7 OPTIONAL, + modeSpecificInfo CHOICE { + tdd CHOICE { + tdd384 SEQUENCE { + dl-HSPDSCH-TS-Configuration DL-HSPDSCH-TS-Configuration OPTIONAL + }, + tdd768 SEQUENCE { + dl-HSPDSCH-TS-Configuration DL-HSPDSCH-TS-Configuration-VHCR OPTIONAL + }, + tdd128 SEQUENCE { + hs-PDSCH-Midamble-Configuration-tdd128 + HS-PDSCH-Midamble-Configuration-TDD128 OPTIONAL, + dl-MultiCarrier-Information DL-MultiCarrier-Information OPTIONAL + } + }, + fdd SEQUENCE { + dl-64QAM-Configured ENUMERATED { true } OPTIONAL, + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL + } + } +} + +DL-HSPDSCH-Information-r8-ext ::= SEQUENCE { + modeSpecificInfo CHOICE { + tdd CHOICE { + tdd384 NULL, + tdd768 NULL, + tdd128 SEQUENCE { + outofSyncWindow OutofSyncWindow OPTIONAL + } + }, + fdd NULL + } +} + +DL-HSPDSCH-Information-r8-ext2 ::= SEQUENCE { + hs-scch-Info HS-SCCH-Info-r8-ext OPTIONAL +} + +DL-HSPDSCH-Information-r9 ::= SEQUENCE { + hs-scch-Info HS-SCCH-Info-r9 OPTIONAL, + measurement-feedback-Info Measurement-Feedback-Info-r7 OPTIONAL, + modeSpecificInfo CHOICE { + tdd CHOICE { + tdd384 SEQUENCE { + dl-HSPDSCH-TS-Configuration DL-HSPDSCH-TS-Configuration OPTIONAL + }, + tdd768 SEQUENCE { + dl-HSPDSCH-TS-Configuration DL-HSPDSCH-TS-Configuration-VHCR OPTIONAL + }, + tdd128 SEQUENCE { + hs-PDSCH-Midamble-Configuration-tdd128 + HS-PDSCH-Midamble-Configuration-TDD128 OPTIONAL, + dl-MultiCarrier-Information DL-MultiCarrier-Information OPTIONAL, + tS0-Indicator ENUMERATED { true } OPTIONAL, + outofSyncWindow OutofSyncWindow OPTIONAL + } + }, + fdd SEQUENCE { + dl-64QAM-Configured ENUMERATED { true } OPTIONAL, + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL + } + } +} + +DL-HSPDSCH-Information-r11 ::= SEQUENCE { + hs-scch-Info HS-SCCH-Info-r9 OPTIONAL, + measurement-feedback-Info Measurement-Feedback-Info-r11 OPTIONAL, + modeSpecificInfo CHOICE { + tdd CHOICE { + tdd384 SEQUENCE { + dl-HSPDSCH-TS-Configuration DL-HSPDSCH-TS-Configuration OPTIONAL + }, + tdd768 SEQUENCE { + dl-HSPDSCH-TS-Configuration DL-HSPDSCH-TS-Configuration-VHCR OPTIONAL + }, + tdd128 SEQUENCE { + hs-PDSCH-Midamble-Configuration-tdd128 + HS-PDSCH-Midamble-Configuration-TDD128 OPTIONAL, + dl-MultiCarrier-Information DL-MultiCarrier-Information OPTIONAL, + tS0-Indicator ENUMERATED { true } OPTIONAL, + outofSyncWindow OutofSyncWindow OPTIONAL + } + }, + fdd SEQUENCE { + dl-64QAM-Configured ENUMERATED { true } OPTIONAL, + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL + } + } +} + +OutofSyncWindow ::= ENUMERATED { + ms40, ms80, ms160, ms320, + ms640, spare3, spare2, spare1 } + +DL-HSPDSCH-MultiCarrier-Information ::= SEQUENCE (SIZE (1..maxTDD128Carrier)) OF + SEQUENCE { + uarfcn-Carrier UARFCN, + harqInfo HARQ-Info OPTIONAL, + hs-PDSCH-Midamble-Configuration HS-PDSCH-Midamble-Configuration-TDD128 OPTIONAL, + hs-SCCH-TDD128-MultiCarrier SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-TDD128-MultiCarrier OPTIONAL + } + +-- The IE 'DL-HSPDSCH-TS-Configuration' applies to tdd-384 REL-5 onward +DL-HSPDSCH-TS-Configuration ::= SEQUENCE (SIZE (1..maxTS-1)) OF + SEQUENCE { + timeslot TimeslotNumber, + midambleShiftAndBurstType MidambleShiftAndBurstType-DL +} + +-- The IE 'DL-HSPDSCH-TS-Configuration-VHCR' applies to tdd-768 REL-7 onward +DL-HSPDSCH-TS-Configuration-VHCR ::= SEQUENCE (SIZE (1..maxTS-1)) OF + SEQUENCE { + timeslot TimeslotNumber, + midambleShiftAndBurstType MidambleShiftAndBurstType-DL-VHCR +} + +DL-InformationPerRL ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + -- dummy1 and dummy 2 are not used in this version of specification, they should + -- not be sent and if received they should be ignored. + dummy1 PDSCH-SHO-DCH-Info OPTIONAL, + dummy2 PDSCH-CodeMapping OPTIONAL + }, + tdd PrimaryCCPCH-Info + }, + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL OPTIONAL, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SCCPCH-InfoForFACH OPTIONAL +} + +DL-InformationPerRL-r4 ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + -- dummy1 and dummy 2 are not used in this version of specification, they should + -- not be sent and if received they should be ignored. + dummy1 PDSCH-SHO-DCH-Info OPTIONAL, + dummy2 PDSCH-CodeMapping OPTIONAL + }, + tdd PrimaryCCPCH-Info-r4 + }, + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r4 OPTIONAL, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SCCPCH-InfoForFACH-r4 OPTIONAL, + cell-id CellIdentity OPTIONAL +} + +DL-InformationPerRL-r5 ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + -- dummy1 and dummy 2 are not used in this version of specification, they should + -- not be sent and if received they should be ignored. + dummy1 PDSCH-SHO-DCH-Info OPTIONAL, + dummy2 PDSCH-CodeMapping OPTIONAL, + servingHSDSCH-RL-indicator BOOLEAN + }, + tdd PrimaryCCPCH-Info-r4 + }, + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r5 OPTIONAL, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SCCPCH-InfoForFACH-r4 OPTIONAL, + cell-id CellIdentity OPTIONAL +} + +DL-InformationPerRL-r5bis ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + -- dummy1 and dummy 2 are not used in this version of specification, they should + -- not be sent and if received they should be ignored. + dummy1 PDSCH-SHO-DCH-Info OPTIONAL, + dummy2 PDSCH-CodeMapping OPTIONAL + }, + tdd PrimaryCCPCH-Info-r4 + }, + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r5 OPTIONAL, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SCCPCH-InfoForFACH-r4 OPTIONAL, + cell-id CellIdentity OPTIONAL +} + +DL-InformationPerRL-r6 ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + servingHSDSCH-RL-indicator BOOLEAN, + servingEDCH-RL-indicator BOOLEAN + }, + tdd PrimaryCCPCH-Info-r4 + }, + dl-dpchInfo CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r6, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r6 + } OPTIONAL, + e-AGCH-Information E-AGCH-Information OPTIONAL, + e-HICH-Info CHOICE { + e-HICH-Information E-HICH-Information, + releaseIndicator NULL + } OPTIONAL, + e-RGCH-Info CHOICE { + e-RGCH-Information E-RGCH-Information, + releaseIndicator NULL + } OPTIONAL, + cell-id CellIdentity OPTIONAL +} + +DL-InformationPerRL-v6b0ext ::= SEQUENCE { + sttdIndication STTDIndication OPTIONAL +} + +DL-InformationPerRL-r7 ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + servingHSDSCH-RL-indicator BOOLEAN, + servingEDCH-RL-indicator BOOLEAN + }, + tdd PrimaryCCPCH-Info-r4 + }, + dl-dpchInfo CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r7, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7 + } OPTIONAL, + e-AGCH-Information E-AGCH-Information-r7 OPTIONAL, + modeSpecificInfo2 CHOICE { + fdd SEQUENCE { + e-HICH-Info CHOICE { + e-HICH-Information E-HICH-Information, + releaseIndicator NULL + } OPTIONAL, + e-RGCH-Info CHOICE { + e-RGCH-Information E-RGCH-Information, + releaseIndicator NULL + } OPTIONAL + }, + tdd CHOICE { + tdd384-tdd768 SEQUENCE { + e-HICH-Info E-HICH-Information-TDD384-768 OPTIONAL + }, + tdd128 SEQUENCE { + e-HICH-Info E-HICH-Information-TDD128 OPTIONAL + } + } + }, + cell-id CellIdentity OPTIONAL +} + +DL-InformationPerRL-r8 ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + servingHSDSCH-RL-indicator BOOLEAN, + servingEDCH-RL-indicator BOOLEAN + }, + tdd PrimaryCCPCH-Info-r4 + }, + dl-dpchInfo CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r7, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7 + } OPTIONAL, + e-AGCH-Information E-AGCH-Information-r8 OPTIONAL, + modeSpecificInfo2 CHOICE { + fdd SEQUENCE { + e-HICH-Info CHOICE { + e-HICH-Information E-HICH-Information, + releaseIndicator NULL + } OPTIONAL, + e-RGCH-Info CHOICE { + e-RGCH-Information E-RGCH-Information, + releaseIndicator NULL + } OPTIONAL + }, + tdd CHOICE { + tdd384-tdd768 SEQUENCE { + e-HICH-Info E-HICH-Information-TDD384-768 OPTIONAL + }, + tdd128 SEQUENCE { + e-HICH-Info E-HICH-Information-TDD128 OPTIONAL + } + } + }, + cell-id CellIdentity OPTIONAL +} + +DL-InformationPerRL-r11 ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + servingHSDSCH-RL-indicator BOOLEAN, + servingEDCH-RL-indicator BOOLEAN + }, + tdd PrimaryCCPCH-Info-r4 + }, + dl-dpchInfo CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r7, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7 + } OPTIONAL, + e-AGCH-Information E-AGCH-Information-r8 OPTIONAL, + e-ROCH-Information E-ROCH-Information OPTIONAL, + modeSpecificInfo2 CHOICE { + fdd SEQUENCE { + e-HICH-Info CHOICE { + e-HICH-Information E-HICH-Information-r11, + releaseIndicator NULL, + secondaryReleaseIndicator NULL + } OPTIONAL, + e-RGCH-Info CHOICE { + e-RGCH-Information E-RGCH-Information, + releaseIndicator NULL + } OPTIONAL, + f-TPICH-Info CHOICE { + f-TPICH-Information F-TPICH-Information, + releaseIndicator NULL + } OPTIONAL + }, + tdd CHOICE { + tdd384-tdd768 SEQUENCE { + e-HICH-Info E-HICH-Information-TDD384-768 OPTIONAL + }, + tdd128 SEQUENCE { + e-HICH-Info E-HICH-Information-TDD128 OPTIONAL + } + } + }, + cell-id CellIdentity OPTIONAL +} + +DL-InformationPerRL-List ::= SEQUENCE (SIZE (1..maxRL)) OF + DL-InformationPerRL + +DL-InformationPerRL-List-r4 ::= SEQUENCE (SIZE (1..maxRL)) OF + DL-InformationPerRL-r4 + +DL-InformationPerRL-List-r5 ::= SEQUENCE (SIZE (1..maxRL)) OF + DL-InformationPerRL-r5 + +DL-InformationPerRL-List-r6 ::= SEQUENCE (SIZE (1..maxRL)) OF + DL-InformationPerRL-r6 + +DL-InformationPerRL-List-v6b0ext ::= SEQUENCE (SIZE (1..maxRL)) OF + DL-InformationPerRL-v6b0ext + +DL-InformationPerRL-List-r5bis ::= SEQUENCE (SIZE (1..maxRL)) OF + DL-InformationPerRL-r5bis + +DL-InformationPerRL-List-r7 ::= SEQUENCE (SIZE (1..maxRL)) OF + DL-InformationPerRL-r7 + +DL-InformationPerRL-List-r8 ::= SEQUENCE (SIZE (1..maxRL)) OF + DL-InformationPerRL-r8 + +DL-InformationPerRL-List-r11 ::= SEQUENCE (SIZE (1..maxRL)) OF + DL-InformationPerRL-r11 + +DL-InformationPerRL-ListPostFDD ::= SEQUENCE (SIZE (1..maxRL)) OF + DL-InformationPerRL-PostFDD + +DL-InformationPerRL-PostFDD ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-PostFDD +} + +DL-InformationPerRL-PostTDD ::= SEQUENCE { + primaryCCPCH-Info PrimaryCCPCH-InfoPost, + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-PostTDD +} + +DL-InformationPerRL-PostTDD-LCR-r4 ::= SEQUENCE { + primaryCCPCH-Info PrimaryCCPCH-InfoPostTDD-LCR-r4, + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-PostTDD-LCR-r4 +} + +--for 1.28Mcps TDD Multi-Carrier +DL-MultiCarrier-Information ::= SEQUENCE { + tsn-Length ENUMERATED { tsn-6bits, tsn-9bits } OPTIONAL, + multiCarrierNumber INTEGER (1..maxTDD128Carrier) OPTIONAL, + dl-HSPDSCH-MultiCarrier-Information DL-HSPDSCH-MultiCarrier-Information OPTIONAL +} + +DL-PDSCH-Information ::= SEQUENCE { + -- dummy1 and dummy 2 are not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy1 PDSCH-SHO-DCH-Info OPTIONAL, + dummy2 PDSCH-CodeMapping OPTIONAL +} + +Dl-rate-matching-restriction ::= SEQUENCE { + restrictedTrCH-InfoList RestrictedTrCH-InfoList OPTIONAL +} + +DL-SecondaryCellInfoFDD ::= CHOICE { + continue NULL, + newConfiguration SEQUENCE { + new-H-RNTI H-RNTI, + dl-64QAM-Configured ENUMERATED { true } OPTIONAL, + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL, + primaryCPICH-Info PrimaryCPICH-Info, + dl-ScramblingCode SecondaryScramblingCode OPTIONAL, + hS-SCCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-Codes, + measurementPowerOffset MeasurementPowerOffset, + uarfcn-DL UARFCN + } +} + +DL-SecondaryCellInfoFDD-v890ext ::= SEQUENCE { + differentTxModeFromServingHS-DSCHCell ENUMERATED { different } OPTIONAL +} + +DL-SecondaryCellInfoFDD-r9 ::= SEQUENCE { + configurationInfo CHOICE { + continue NULL, + newConfiguration SEQUENCE { + new-H-RNTI H-RNTI, + dl-64QAM-Configured ENUMERATED { true } OPTIONAL, + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL, + primaryCPICH-Info PrimaryCPICH-Info, + dl-ScramblingCode SecondaryScramblingCode OPTIONAL, + hS-SCCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-Codes, + measurementPowerOffset MeasurementPowerOffset, + uarfcn-DL UARFCN, + differentTxModeFromServingHS-DSCHCell ENUMERATED { different } OPTIONAL + } + }, + secondaryCellMIMOparameters SecondaryCellMIMOparametersFDD OPTIONAL +} + +DL-SecondaryCellInfoFDD-r10 ::= SEQUENCE { + configurationInfo CHOICE { + continue NULL, + newConfiguration SEQUENCE { + new-H-RNTI H-RNTI, + dl-64QAM-Configured ENUMERATED { true } OPTIONAL, + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL, + primaryCPICH-Info PrimaryCPICH-Info, + dl-ScramblingCode SecondaryScramblingCode OPTIONAL, + hS-SCCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-Codes, + measurementPowerOffset MeasurementPowerOffset, + uarfcn-DL UARFCN, + differentTxModeFromServingHS-DSCHCell ENUMERATED { different } OPTIONAL + } + }, + secondaryCellMIMOparameters SecondaryCellMIMOparametersFDD-r10 OPTIONAL +} + +DL-SecondaryCellInfoFDD-r11 ::= SEQUENCE { + configurationInfo CHOICE { + continue NULL, + newConfiguration SEQUENCE { + new-H-RNTI H-RNTI, + dl-64QAM-Configured ENUMERATED { true } OPTIONAL, + hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL, + primaryCPICH-Info PrimaryCPICH-Info, + dl-ScramblingCode SecondaryScramblingCode OPTIONAL, + hS-SCCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-Codes, + measurementPowerOffset MeasurementPowerOffset, + measurementPowerOffset1 MeasurementPowerOffset OPTIONAL, + uarfcn-DL UARFCN, + differentTxModeFromServingHS-DSCHCell ENUMERATED { different } OPTIONAL, + multiflowConfigurationInfo MultiflowConfigurationInfo OPTIONAL + } + }, + secondaryCellMIMOparameters SecondaryCellMIMOparametersFDD-r10 OPTIONAL, + secondaryCell4x4MIMOparameters SecondaryCell4x4MIMOparametersFDD OPTIONAL +} + +DL-TPC-PowerOffsetPerRL ::= SEQUENCE { + powerOffsetTPC-pdpdch PowerOffsetTPC-pdpdch OPTIONAL +} + +-- NOTE: The radio links in the following list have a one-to-one mapping with the +-- radio links in the message. +DL-TPC-PowerOffsetPerRL-List ::= SEQUENCE (SIZE (1..maxRL)) OF + DL-TPC-PowerOffsetPerRL + +DL-TS-ChannelisationCode ::= ENUMERATED { + cc16-1, cc16-2, cc16-3, cc16-4, + cc16-5, cc16-6, cc16-7, cc16-8, + cc16-9, cc16-10, cc16-11, cc16-12, + cc16-13, cc16-14, cc16-15, cc16-16 } + +DL-TS-ChannelisationCode-VHCR ::= ENUMERATED { + cc32-1, cc32-2, cc32-3, cc32-4, + cc132-5, cc32-6, cc32-7, cc32-8, + cc32-9, cc32-10, cc32-11, cc32-12, + cc32-13, cc32-14, cc32-15, cc32-16, + cc32-17, cc32-18, cc32-19, cc32-20, + cc32-21, cc32-22, cc32-23, cc32-24, + cc32-25, cc32-26, cc32-27, cc32-28, + cc32-29, cc32-30, cc32-31, cc32-32 } + +DL-TS-ChannelisationCodesShort ::= SEQUENCE { + codesRepresentation CHOICE { + consecutive SEQUENCE { + firstChannelisationCode DL-TS-ChannelisationCode, + lastChannelisationCode DL-TS-ChannelisationCode + }, + bitmap BIT STRING { + chCode16-SF16(0), + chCode15-SF16(1), + chCode14-SF16(2), + chCode13-SF16(3), + chCode12-SF16(4), + chCode11-SF16(5), + chCode10-SF16(6), + chCode9-SF16(7), + chCode8-SF16(8), + chCode7-SF16(9), + chCode6-SF16(10), + chCode5-SF16(11), + chCode4-SF16(12), + chCode3-SF16(13), + chCode2-SF16(14), + chCode1-SF16(15) + } (SIZE (16)) + } +} + +DL-TS-ChannelisationCodesShort-VHCR ::= SEQUENCE { + codesRepresentation CHOICE { + consecutive SEQUENCE { + firstChannelisationCode DL-TS-ChannelisationCode-VHCR, + lastChannelisationCode DL-TS-ChannelisationCode-VHCR + }, + bitmap BIT STRING { + chCode32-SF32(0), + chCode31-SF32(1), + chCode30-SF32(2), + chCode29-SF32(3), + chCode28-SF32(4), + chCode27-SF32(5), + chCode26-SF32(6), + chCode25-SF32(7), + chCode24-SF32(8), + chCode23-SF32(9), + chCode22-SF32(10), + chCode21-SF32(11), + chCode20-SF32(12), + chCode19-SF32(13), + chCode18-SF32(14), + chCode17-SF32(15), + chCode16-SF32(16), + chCode15-SF32(17), + chCode14-SF32(18), + chCode13-SF32(19), + chCode12-SF32(20), + chCode11-SF32(21), + chCode10-SF32(22), + chCode9-SF32(23), + chCode8-SF32(24), + chCode7-SF32(25), + chCode6-SF32(26), + chCode5-SF32(27), + chCode4-SF32(28), + chCode3-SF32(29), + chCode2-SF32(30), + chCode1-SF32(31) + } (SIZE (32)) + } +} + +DL-ChannelCodes-MBSFN-IMB384 ::= SEQUENCE { + firstChannelisationCode INTEGER (1..15), + lastChannelisationCode INTEGER (1..15) OPTIONAL +} + +DLUL-HSPA-Information-r8 ::= SEQUENCE { + ul-EDCH-Information UL-EDCH-Information-r8, + dl-CommonInformation DL-CommonInformation-r8, + dl-InformationPerRL-List DL-InformationPerRL-List-r7, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r8 +} + +DLUL-HSPA-Information-r9 ::= SEQUENCE { + ul-EDCH-Information UL-EDCH-Information-r9, + dl-CommonInformation DL-CommonInformation-r8, + dl-InformationPerRL-List DL-InformationPerRL-List-r7, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 +} + +DLUL-HSPA-Information-r10 ::= SEQUENCE { + ul-EDCH-Information UL-EDCH-Information-r9, + dl-CommonInformation DL-CommonInformation-r10, + dl-InformationPerRL-List DL-InformationPerRL-List-r7, + dl-HSPDSCH-Information DL-HSPDSCH-Information-r9 +} + +DownlinkAdditionalTimeslots ::= SEQUENCE { + parameters CHOICE { + sameAsLast SEQUENCE { + timeslotNumber TimeslotNumber + }, + newParameters SEQUENCE { + individualTimeslotInfo IndividualTimeslotInfo, + dl-TS-ChannelisationCodesShort DL-TS-ChannelisationCodesShort + } + } +} + +DownlinkAdditionalTimeslots-VHCR ::= SEQUENCE { + parameters CHOICE { + sameAsLast SEQUENCE { + timeslotNumber TimeslotNumber + }, + newParameters SEQUENCE { + individualTimeslotInfo IndividualTimeslotInfo-VHCR, + dl-TS-ChannelisationCodesShort DL-TS-ChannelisationCodesShort-VHCR + } + } +} + +DownlinkAdditionalTimeslots-LCR-r4 ::= SEQUENCE { + parameters CHOICE { + sameAsLast SEQUENCE { + timeslotNumber TimeslotNumber-LCR-r4 + }, + newParameters SEQUENCE { + individualTimeslotInfo IndividualTimeslotInfo-LCR-r4, + dl-TS-ChannelisationCodesShort DL-TS-ChannelisationCodesShort + } + } +} + +DownlinkAdditionalTimeslots-r7 ::= SEQUENCE { + parameters CHOICE { + sameAsLast SEQUENCE { + timeslotNumber TimeslotNumber + }, + newParameters SEQUENCE { + individualTimeslotInfo IndividualTimeslotInfo-r7, + dl-TS-ChannelisationCodesShort DL-TS-ChannelisationCodesShort + } + } +} + +DownlinkTimeslotsCodes ::= SEQUENCE { + firstIndividualTimeslotInfo IndividualTimeslotInfo, + dl-TS-ChannelisationCodesShort DL-TS-ChannelisationCodesShort, + moreTimeslots CHOICE { + noMore NULL, + additionalTimeslots CHOICE { + consecutive INTEGER (1..maxTS-1), + timeslotList SEQUENCE (SIZE (1..maxTS-1)) OF + DownlinkAdditionalTimeslots + } + } +} + +DownlinkTimeslotsCodes-VHCR ::= SEQUENCE { + firstIndividualTimeslotInfo IndividualTimeslotInfo-VHCR, + dl-TS-ChannelisationCodesShort DL-TS-ChannelisationCodesShort-VHCR, + moreTimeslots CHOICE { + noMore NULL, + additionalTimeslots CHOICE { + consecutive INTEGER (1..maxTS-1), + timeslotList SEQUENCE (SIZE (1..maxTS-1)) OF + DownlinkAdditionalTimeslots-VHCR + } + } +} + +DownlinkTimeslotsCodes-LCR-r4 ::= SEQUENCE { + firstIndividualTimeslotInfo IndividualTimeslotInfo-LCR-r4, + dl-TS-ChannelisationCodesShort DL-TS-ChannelisationCodesShort, + moreTimeslots CHOICE { + noMore NULL, + additionalTimeslots CHOICE { + consecutive INTEGER (1..maxTS-LCR-1), + timeslotList SEQUENCE (SIZE (1..maxTS-LCR-1)) OF + DownlinkAdditionalTimeslots-LCR-r4 + } + } +} +DownlinkTimeslotsCodes-r7 ::= SEQUENCE { + firstIndividualTimeslotInfo IndividualTimeslotInfo-r7, + dl-TS-ChannelisationCodesShort DL-TS-ChannelisationCodesShort, + moreTimeslots CHOICE { + noMore NULL, + additionalTimeslots CHOICE { + consecutive INTEGER (1..maxTS-1), + timeslotList SEQUENCE (SIZE (1..maxTS-1)) OF + DownlinkAdditionalTimeslots-r7 + } + } +} + +DPC-Mode ::= ENUMERATED { + singleTPC, + tpcTripletInSoft } + +-- Actual value DPCCH-PowerOffset = IE value * 2 +DPCCH-PowerOffset ::= INTEGER (-82..-3) + +-- Actual value DPCCH-PowerOffset2 = 2 + (IE value * 4) +DPCCH-PowerOffset2 ::= INTEGER (-28..-13) + +DPCH-CompressedModeInfo ::= SEQUENCE { + tgp-SequenceList TGP-SequenceList +} + +DPCH-CompressedModeInfo-r8 ::= SEQUENCE { + tgp-SequenceList TGP-SequenceList-r8 +} + +DPCH-CompressedModeInfo-r10 ::= SEQUENCE { + tgp-SequenceList TGP-SequenceList-r10 +} + +DPCH-CompressedModeStatusInfo ::= SEQUENCE { + tgps-Reconfiguration-CFN TGPS-Reconfiguration-CFN, + tgp-SequenceShortList SEQUENCE (SIZE (1..maxTGPS)) OF + TGP-SequenceShort +} + +DPCH-CompressedModeStatusInfo-r10 ::= SEQUENCE { + tgps-Reconfiguration-CFN TGPS-Reconfiguration-CFN, + tgp-SequenceShortList SEQUENCE (SIZE (1..maxTGPS)) OF + TGP-SequenceShort-r10 +} + +-- Actual value DPCH-FrameOffset = IE value * 256 +DPCH-FrameOffset ::= INTEGER (0..149) + +FDPCH-SlotFormat ::= INTEGER (0..9) + +UE-DRX-Cycle-InactivityThreshold ::= ENUMERATED { + sub-frames-0, + sub-frames-1, + sub-frames-2, + sub-frames-4, + sub-frames-8, + sub-frames-16, + sub-frames-32, + sub-frames-64, + sub-frames-128, + sub-frames-256, + sub-frames-512, + spare5, + spare4, + spare3, + spare2, + spare1 } + +DRX-Info ::= SEQUENCE { + ue-drx-Cycle UE-DRX-Cycle, + ue-drx-Cycle-InactivityThreshold UE-DRX-Cycle-InactivityThreshold, + ue-GrantMonitoring-InactivityThreshold + UE-GrantMonitoring-InactivityThreshold, + ue-drx-GrantMonitoring BOOLEAN +} + +DSCH-Mapping ::= SEQUENCE { + maxTFCI-Field2Value MaxTFCI-Field2Value, + spreadingFactor SF-PDSCH, + codeNumber CodeNumberDSCH, + multiCodeInfo MultiCodeInfo +} + +DSCH-MappingList ::= SEQUENCE (SIZE (1..maxPDSCH-TFCIgroups)) OF + DSCH-Mapping + +DSCH-RadioLinkIdentifier ::= INTEGER (0..511) + +DSCH-TransportChannelsInfo ::= SEQUENCE (SIZE (1..maxTrCH)) OF + SEQUENCE { + dsch-transport-channel-identity TransportChannelIdentity, + dsch-TFS TransportFormatSet +} + +DTX-DRX-Info-r7 ::= SEQUENCE { + dtx-Info DTX-Info OPTIONAL, + drx-Info DRX-Info OPTIONAL, + uplink-DPCCHSlotFormatInformation Uplink-DPCCH-Slot-Format-Information +} + +DTX-E-DCH-TTI-10ms ::= SEQUENCE { + ue-dtx-Cycle1-10ms UE-DTX-Cycle1-10ms, + ue-dtx-Cycle2-10ms UE-DTX-Cycle2-10ms, + mac-dtx-Cycle-10ms MAC-DTX-Cycle-10ms +} + +DTX-E-DCH-TTI-2ms ::= SEQUENCE { + ue-dtx-Cycle1-2ms UE-DTX-Cycle1-2ms, + ue-dtx-Cycle2-2ms UE-DTX-Cycle2-2ms, + mac-dtx-Cycle-2ms MAC-DTX-Cycle-2ms +} + +DTX-Info ::= SEQUENCE { + e-dch-TTI-Length CHOICE { + dtx-e-dch-TTI-10ms DTX-E-DCH-TTI-10ms, + dtx-e-dch-TTI-2ms DTX-E-DCH-TTI-2ms + }, + ue-dtx-cycle2InactivityThreshold UE-DTX-Cycle2InactivityThreshold, + ue-dtx-cycle2DefaultSG INTEGER (0..38) OPTIONAL, + -- if ue-dtx-long-preamble-length is not present, the value is '2 slots' + ue-dtx-long-preamble-length UE-DTX-long-preamble-length OPTIONAL, + mac-InactivityThreshold MAC-InactivityThreshold, + cqi-dtx-Timer CQI-DTX-Timer, + ue-dpcch-Burst1 UE-DPCCH-Burst, + ue-dpcch-Burst2 UE-DPCCH-Burst +} + +DurationTimeInfo ::= INTEGER (1..4096) + +DynamicPersistenceLevel ::= INTEGER (1..8) + +DynamicPersistenceLevelList ::= SEQUENCE (SIZE (1..maxPRACH)) OF + DynamicPersistenceLevel + +DynamicPersistenceLevelTF-List ::= SEQUENCE (SIZE (1..maxTF-CPCH)) OF + DynamicPersistenceLevel + +DynamicTFInformationCCCH ::= SEQUENCE { + octetModeRLC-SizeInfoType2 OctetModeRLC-SizeInfoType2 +} + +E-AGCH-ChannelisationCode ::= INTEGER (0..255) + +E-AGCH-DRX-Info-TDD128 ::= SEQUENCE { + e-AGCH-DRX-InfoType CHOICE { + sameAsHS-SCCH NULL, + e-AGCH-DRX-Parameters SEQUENCE { + e-AGCH-DRX-Cycle ControlChannelDRXCycle-TDD128, + e-AGCH-InactivityMonitorThreshold E-AGCH-InactivityMonitorThreshold-TDD128 + OPTIONAL, + e-AGCH-DRX-Offset INTEGER (0..63) + } + } +} + +E-AGCH-InactivityMonitorThreshold-TDD128 ::= ENUMERATED { + radio-frames-0, radio-frames-1, radio-frames-2, + radio-frames-4, radio-frames-8, radio-frames-16, + radio-frames-32, radio-frames-64, radio-frames-128, + radio-frames-256, radio-frames-512, + spare5, spare4, spare3, spare2, infinity } + +E-AGCH-Individual ::= SEQUENCE { + tS-number INTEGER (0..14), + channelisation-code DL-TS-ChannelisationCode, + midambleShiftAndBurstType MidambleShiftAndBurstType-EDCH +} + +E-AGCH-Individual-VHCR ::= SEQUENCE { + tS-number INTEGER (0..14), + channelisation-code DL-TS-ChannelisationCode-VHCR, + midambleShiftAndBurstType MidambleShiftAndBurstType-EDCH +} + +E-AGCH-Individual-LCR ::= SEQUENCE { + timeslotNumber TimeslotNumber-LCR-r4, + firstChannelisationCode HS-ChannelisationCode-LCR, + secondChannelisationCode HS-ChannelisationCode-LCR, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble INTEGER (0..15) + }, + -- Actual value midambleConfiguration = IE value * 2 + midambleConfiguration INTEGER (1..8) +} + +E-AGCH-Information ::= SEQUENCE { + e-AGCH-ChannelisationCode E-AGCH-ChannelisationCode +} + +E-AGCH-Information-r7 ::= SEQUENCE { + modeSpecific CHOICE { + fdd SEQUENCE { + e-AGCH-ChannelisationCode E-AGCH-ChannelisationCode + }, + tdd CHOICE { + tdd384 SEQUENCE { + long-Term-Grant-Indicator BOOLEAN OPTIONAL, + length-of-TTRI-field INTEGER (1..12), + e-AGCH-Set-Config E-AGCH-Set-Config, + e-AGCH-BLER-Target Bler-Target + }, + tdd768 SEQUENCE { + long-Term-Grant-Indicator BOOLEAN OPTIONAL, + length-of-TTRI-field INTEGER (1..12), + e-AGCH-Set-Config E-AGCH-Set-Config-VHCR, + e-AGCH-BLER-Target Bler-Target + }, + tdd128 SEQUENCE { + rdi-Indicator BOOLEAN, + tpc-StepSize TPC-StepSizeTDD, + e-AGCH-Set-Config E-AGCH-Set-Config-LCR, + e-AGCH-BLER-Target Bler-Target + } + } + } +} + +E-AGCH-Information-r8 ::= SEQUENCE { + modeSpecific CHOICE { + fdd SEQUENCE { + e-AGCH-ChannelisationCode E-AGCH-ChannelisationCode + }, + tdd CHOICE { + tdd384 SEQUENCE { + long-Term-Grant-Indicator BOOLEAN OPTIONAL, + length-of-TTRI-field INTEGER (1..12), + e-AGCH-Set-Config E-AGCH-Set-Config, + e-AGCH-BLER-Target Bler-Target + }, + tdd768 SEQUENCE { + long-Term-Grant-Indicator BOOLEAN OPTIONAL, + length-of-TTRI-field INTEGER (1..12), + e-AGCH-Set-Config E-AGCH-Set-Config-VHCR, + e-AGCH-BLER-Target Bler-Target + }, + tdd128 SEQUENCE { + rdi-Indicator BOOLEAN, + tpc-StepSize TPC-StepSizeTDD, + e-AGCH-Set-Config E-AGCH-Set-Config-LCR, + e-AGCH-BLER-Target Bler-Target, + e-AGCH-InactivityMonitorThreshold E-AGCH-InactivityMonitorThreshold-TDD128 + OPTIONAL + } + } + } +} + +E-AGCH-Information-TDD128 ::= SEQUENCE { + rdi-Indicator BOOLEAN, + tpc-StepSize TPC-StepSizeTDD, + e-AGCH-Set-Config E-AGCH-Set-Config-LCR, + e-AGCH-BLER-Target Bler-Target +} + +E-AGCH-Set-Config ::= SEQUENCE (SIZE (1..maxNumE-AGCH)) OF + E-AGCH-Individual + +E-AGCH-Set-Config-VHCR ::= SEQUENCE (SIZE (1..maxNumE-AGCH)) OF + E-AGCH-Individual-VHCR + +E-AGCH-Set-Config-LCR ::= SEQUENCE (SIZE (1..maxNumE-AGCH)) OF + E-AGCH-Individual-LCR + +E-ROCH-ChannelisationCode ::= INTEGER (0..255) + +E-ROCH-Information ::= SEQUENCE { + e-ROCH-ChannelisationCode E-ROCH-ChannelisationCode, + e-roch-e-rnti E-RNTI +} + +E-DCH-MinimumSet-E-TFCI ::= INTEGER (0..127) + +E-DCH-ReconfigurationInfo ::= SEQUENCE { + e-DCH-RL-InfoNewServingCell E-DCH-RL-InfoNewServingCell OPTIONAL, + e-DCH-RL-InfoOtherCellList SEQUENCE (SIZE (1..maxEDCHRL)) OF + E-DCH-RL-InfoOtherCell OPTIONAL +} + +E-DCH-ReconfigurationInfo-r7 ::= SEQUENCE { + e-DCH-RL-InfoNewServingCell E-DCH-RL-InfoNewServingCell-r7 OPTIONAL, + e-DCH-RL-InfoOtherCellList SEQUENCE (SIZE (1..maxEDCHRL)) OF + E-DCH-RL-InfoOtherCell OPTIONAL +} + +E-DCH-ReconfigurationInfo-r11 ::= SEQUENCE { + e-DCH-RL-InfoNewServingCell E-DCH-RL-InfoNewServingCell-r11 OPTIONAL, + e-DCH-RL-InfoOtherCellList SEQUENCE (SIZE (1..maxEDCHRL)) OF + E-DCH-RL-InfoOtherCell-r11 OPTIONAL +} + +E-DCH-ReconfigurationInfo-SecULFrequency ::= SEQUENCE { + e-DCH-RL-InfoNewSecServingCell E-DCH-RL-InfoNewSecServingCell OPTIONAL, + e-DCH-RL-InfoOtherCellList-SecULFreq SEQUENCE (SIZE (1..maxEDCHRL)) OF + E-DCH-RL-InfoOtherCell-SecULFreq OPTIONAL +} + +E-DCH-RL-InfoNewServingCell ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + e-AGCH-Information E-AGCH-Information, + servingGrant SEQUENCE { + value INTEGER (0..38) OPTIONAL, + primary-Secondary-GrantSelector ENUMERATED { primary, secondary } + } OPTIONAL, + e-DPCCH-DPCCH-PowerOffset E-DPCCH-DPCCH-PowerOffset OPTIONAL, + reference-E-TFCIs E-DPDCH-Reference-E-TFCIList OPTIONAL, + powerOffsetForSchedInfo INTEGER (0..6) OPTIONAL, + threeIndexStepThreshold INTEGER (0..37) OPTIONAL, + twoIndexStepThreshold INTEGER (0..37) OPTIONAL, + e-HICH-Information E-HICH-Information OPTIONAL, + e-RGCH-Info CHOICE { + e-RGCH-Information E-RGCH-Information, + releaseIndicator NULL + } OPTIONAL +} + +E-DCH-RL-InfoNewServingCell-r7 ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + e-AGCH-Information E-AGCH-Information, + servingGrant SEQUENCE { + value INTEGER (0..38) OPTIONAL, + primary-Secondary-GrantSelector ENUMERATED { primary, secondary } + } OPTIONAL, + e-DPCCH-DPCCH-PowerOffset E-DPCCH-DPCCH-PowerOffset OPTIONAL, + reference-E-TFCIs E-DPDCH-Reference-E-TFCIList-r7 OPTIONAL, + powerOffsetForSchedInfo INTEGER (0..6) OPTIONAL, + threeIndexStepThreshold INTEGER (0..37) OPTIONAL, + twoIndexStepThreshold INTEGER (0..37) OPTIONAL, + e-HICH-Information E-HICH-Information OPTIONAL, + e-RGCH-Info CHOICE { + e-RGCH-Information E-RGCH-Information, + releaseIndicator NULL + } OPTIONAL +} + +E-DCH-RL-InfoNewServingCell-r11 ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + e-AGCH-Information E-AGCH-Information, + e-ROCH-Information E-ROCH-Information OPTIONAL, + servingGrant SEQUENCE { + value INTEGER (0..38) OPTIONAL, + primary-Secondary-GrantSelector ENUMERATED { primary, secondary } + } OPTIONAL, + e-DPCCH-DPCCH-PowerOffset E-DPCCH-DPCCH-PowerOffset OPTIONAL, + reference-E-TFCIs E-DPDCH-Reference-E-TFCIList-r7 OPTIONAL, + powerOffsetForSchedInfo INTEGER (0..6) OPTIONAL, + threeIndexStepThreshold INTEGER (0..37) OPTIONAL, + twoIndexStepThreshold INTEGER (0..37) OPTIONAL, + e-HICH-Information E-HICH-Information-r11 OPTIONAL, + e-RGCH-Info CHOICE { + e-RGCH-Information E-RGCH-Information, + releaseIndicator NULL + } OPTIONAL +} + +E-DCH-RL-InfoNewSecServingCell ::= SEQUENCE { + e-AGCH-Information E-AGCH-Information, + e-HICH-Information E-HICH-Information OPTIONAL, + e-RGCH-Info CHOICE { + e-RGCH-Information E-RGCH-Information, + releaseIndicator NULL + } OPTIONAL +} + +E-DCH-RL-InfoOtherCell ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + e-HICH-Info CHOICE { + e-HICH-Information E-HICH-Information, + releaseIndicator NULL + } OPTIONAL, + e-RGCH-Info CHOICE { + e-RGCH-Information E-RGCH-Information, + releaseIndicator NULL + } OPTIONAL +} + +E-DCH-RL-InfoOtherCell-r11 ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + e-HICH-Info CHOICE { + e-HICH-Information E-HICH-Information-r11, + releaseIndicator NULL, + secondaryReleaseIndicator NULL + } OPTIONAL, + e-RGCH-Info CHOICE { + e-RGCH-Information E-RGCH-Information, + releaseIndicator NULL + } OPTIONAL +} + +E-DCH-RL-InfoOtherCell-SecULFreq ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + e-HICH-Information E-HICH-Information OPTIONAL, + e-RGCH-Info CHOICE { + e-RGCH-Information E-RGCH-Information, + releaseIndicator NULL + } OPTIONAL +} + +E-DCH-RL-InfoSameServingCell ::= SEQUENCE { + e-DPCCH-DPCCH-PowerOffset E-DPCCH-DPCCH-PowerOffset OPTIONAL, + reference-E-TFCIs E-DPDCH-Reference-E-TFCIList-r7 OPTIONAL +} + +E-DCH-SPS-Information-TDD128 ::= SEQUENCE { + e-dch-SPS-Operation CHOICE { + continue NULL, + newOperation E-DCH-SPS-NewOperation-TDD128 + } +} + +E-DCH-SPS-NewOperation-TDD128 ::= SEQUENCE { + e-hich-Info E-HICH-Information-For-SPS-TDD128, + e-dch-TxPattern E-DCH-TxPatternList-TDD128 OPTIONAL, + initialSPSInfoForEDCH SEQUENCE { + n-E-UCCH INTEGER (1..8), + codeResourceInfo UL-TS-ChannelisationCode, + timeslotResourceRelatedInfo BIT STRING (SIZE (5)), + powerResourceRelatedInfo INTEGER (1..32), + activationTime ActivationTime, + subframeNum INTEGER (0..1), + initialTxPatternIndex INTEGER (0..maxEDCHTxPattern-TDD128-1) + } OPTIONAL +} + +E-DCH-TxPatternList-TDD128 ::= SEQUENCE (SIZE (1..maxEDCHTxPattern-TDD128)) OF + SEQUENCE { + repetitionPeriodAndLength RepetitionPeriodAndLengthForSPS +} + +E-DPCCH-Info ::= SEQUENCE { + e-DPCCH-DPCCH-PowerOffset E-DPCCH-DPCCH-PowerOffset, + happyBit-DelayCondition HappyBit-DelayCondition +} + +E-DPCCH-Info-r7 ::= SEQUENCE { + e-DPCCH-DPCCH-PowerOffset E-DPCCH-DPCCH-PowerOffset, + happyBit-DelayCondition HappyBit-DelayCondition, + e-TFC-Boost-Info E-TFC-Boost-Info-r7 OPTIONAL, + e-DPDCH-PowerInterpolation E-DPDCH-PowerInterpolation OPTIONAL +} + +E-DPCCH-DPCCH-PowerOffset ::= INTEGER (0..8) + +E-DPDCH-Info ::= SEQUENCE { + e-TFCI-TableIndex E-TFCI-TableIndex, + e-DCH-MinimumSet-E-TFCI E-DCH-MinimumSet-E-TFCI OPTIONAL, + reference-E-TFCIs E-DPDCH-Reference-E-TFCIList, + maxChannelisationCodes E-DPDCH-MaxChannelisationCodes, + pl-NonMax E-DPDCH-PL-NonMax, + schedulingInfoConfiguration E-DPDCH-SchedulingInfoConfiguration, + threeIndexStepThreshold INTEGER (0..37) OPTIONAL, + twoIndexStepThreshold INTEGER (0..37) OPTIONAL +} + +E-DPDCH-Info-r7 ::= SEQUENCE { + e-TFCI-TableIndex E-TFCI-TableIndex, + e-DCH-MinimumSet-E-TFCI E-DCH-MinimumSet-E-TFCI OPTIONAL, + reference-E-TFCIs E-DPDCH-Reference-E-TFCIList-r7, + maxChannelisationCodes E-DPDCH-MaxChannelisationCodes, + pl-NonMax E-DPDCH-PL-NonMax, + schedulingInfoConfiguration E-DPDCH-SchedulingInfoConfiguration, + threeIndexStepThreshold INTEGER (0..37) OPTIONAL, + twoIndexStepThreshold INTEGER (0..37) OPTIONAL +} + +E-DPDCH-Info-r8 ::= SEQUENCE { + e-TFCI-TableIndex E-TFCI-TableIndex, + e-DCH-MinimumSet-E-TFCI E-DCH-MinimumSet-E-TFCI OPTIONAL, + reference-E-TFCIs E-DPDCH-Reference-E-TFCIList-r7, + minReduced-E-DPDCH-GainFactor MinReduced-E-DPDCH-GainFactor OPTIONAL, + maxChannelisationCodes E-DPDCH-MaxChannelisationCodes, + pl-NonMax E-DPDCH-PL-NonMax, + schedulingInfoConfiguration E-DPDCH-SchedulingInfoConfiguration, + threeIndexStepThreshold INTEGER (0..37) OPTIONAL, + twoIndexStepThreshold INTEGER (0..37) OPTIONAL +} + +E-DPDCH-PeriodicyOfSchedInfo ::= ENUMERATED { + everyEDCHTTI, ms4, ms10, ms20, ms50, ms100, ms200, ms500, + ms1000 } + +-- The actual value of E-DPDCH-PL-NonMax is: IE value * 0.04 +E-DPDCH-PL-NonMax ::= INTEGER (11..25) + +E-DPDCH-PowerInterpolation ::= BOOLEAN + +E-DPDCH-Reference-E-TFCI ::= SEQUENCE { + reference-E-TFCI INTEGER (0..127), + reference-E-TFCI-PO INTEGER (0..29) +} + +E-DPDCH-Reference-E-TFCI-r7 ::= SEQUENCE { + reference-E-TFCI INTEGER (0..127), + reference-E-TFCI-PO-r7 INTEGER (0..31) +} + +E-DPDCH-Reference-E-TFCIList ::= SEQUENCE (SIZE (1..8)) OF E-DPDCH-Reference-E-TFCI + +E-DPDCH-Reference-E-TFCIList-r7 ::= SEQUENCE (SIZE (1..8)) OF E-DPDCH-Reference-E-TFCI-r7 + +E-DPDCH-SchedulingInfoConfiguration ::= SEQUENCE { + periodicityOfSchedInfo-NoGrant E-DPDCH-PeriodicyOfSchedInfo OPTIONAL, + periodicityOfSchedInfo-Grant E-DPDCH-PeriodicyOfSchedInfo OPTIONAL, + powerOffsetForSchedInfo INTEGER (0..6) +} + +E-DPDCH-SchedulingTransmConfiguration ::= SEQUENCE { + ms2-SchedTransmGrantHARQAlloc BIT STRING (SIZE (8)) OPTIONAL, + servingGrant SEQUENCE { + value INTEGER (0..38), + primary-Secondary-GrantSelector ENUMERATED { primary, secondary } + } OPTIONAL +} + +E-DPDCH-MaxChannelisationCodes ::= ENUMERATED { + sf256, sf128, sf64, sf32, sf16, sf8, sf4, sf4x2, + sf2x2, sf4x2-and-sf2x2 } + +E-HICH-ChannelisationCode ::= INTEGER (0..127) + +E-HICH-Information ::= SEQUENCE { + channelisationCode E-HICH-ChannelisationCode, + signatureSequence E-HICH-RGCH-SignatureSequence +} + +E-HICH-Information-r11 ::= SEQUENCE { + channelisationCode E-HICH-ChannelisationCode, + signatureSequence E-HICH-RGCH-SignatureSequence, + secondarySignatureSequence E-HICH-RGCH-SignatureSequence OPTIONAL +} + +E-HICH-Information-CommonEdch ::= SEQUENCE { + channelisationCode E-HICH-ChannelisationCode OPTIONAL, + signatureSequence E-HICH-RGCH-SignatureSequence OPTIONAL +} + +E-HICH-Information-TDD384-768 ::= SEQUENCE { + n-E-HICH INTEGER (4..44), + tS-Number INTEGER (0..14), + modeSpecificInfo CHOICE { + tdd384 DL-TS-ChannelisationCode, + tdd768 DL-TS-ChannelisationCode-VHCR + }, + burst-Type ENUMERATED { type1, type2 }, + midamble-Allocation-Mode ENUMERATED { default, common } +} + +E-HICH-Information-LCR ::= SEQUENCE { + ei INTEGER (0..3), + timeslotNumber TimeslotNumber-LCR-r4, + channelisation-Code HS-ChannelisationCode-LCR, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + ueSpecificMidamble INTEGER (0..15) + }, + -- Actual value midambleConfiguration = IE value * 2 + midambleConfiguration INTEGER (1..8) +} + +E-HICH-Information-TDD128 ::= SEQUENCE { + n-E-HICH INTEGER (4..15), + e-HICH-InfoList E-HICH-Information-LCR-List +} + +E-HICH-Information-LCR-List ::= SEQUENCE (SIZE (1..maxNumE-HICH)) OF + E-HICH-Information-LCR + +E-HICH-RGCH-SignatureSequence ::= INTEGER (0..39) + +E-HICH-Information-For-SPS-TDD128 ::= SEQUENCE { + configurationmode CHOICE{ + implicit SEQUENCE { + ei INTEGER (0..3) OPTIONAL + }, + explicit SEQUENCE { + timeslotNumber TimeslotNumber-LCR-r4, + channelisation-Code HS-ChannelisationCode-LCR, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + ueSpecificMidamble INTEGER (0..15) + }, + -- Actual value midambleConfiguration = IE value * 2 + midambleConfiguration INTEGER (1..8) + } + }, + signatureSequenceGroupIndex INTEGER (0..19) +} + +E-PUCH-Info ::= SEQUENCE { + e-TFCS-Info E-TFCS-Info, + modeSpecificInfo CHOICE { + tdd348-tdd768 SEQUENCE { + noSlotsForTFCIandTPC INTEGER (1..12), + e-PUCH-ContantValue INTEGER (-35..10), + e-PUCH-TS-ConfigurationList SEQUENCE (SIZE (1..maxTS-2)) OF E-PUCH-TS-Slots, + e-PUCH-CodeHopping BOOLEAN, + e-PUCH-TPC-Step-Size INTEGER (1..3), + minimum-Allowed-Code-Rate INTEGER (0..63), + maximum-Allowed-Code-Rate INTEGER (0..63) + }, + tdd128 SEQUENCE { + snpl-ReportType ENUMERATED { type1, type2 } OPTIONAL, + prxdes-base INTEGER (-112..-50), + beaconPLEst BOOLEAN OPTIONAL, + tpc-StepSize TPC-StepSizeTDD, + pebase-PowerControlGAP PowerControlGAP OPTIONAL, + ul-SynchronisationParameters UL-SynchronisationParameters-r4 OPTIONAL, + e-PUCH-TS-ConfigurationList SEQUENCE (SIZE (1..maxTS-LCR-1)) OF + E-PUCH-TS-Slots-LCR, + minimum-Allowed-Code-Rate INTEGER (0..63), + maximum-Allowed-Code-Rate INTEGER (0..63), + maximumNumOfRetransSchedInfo INTEGER (0..15), + retransTimerForSchedInfo ENUMERATED { ms10, ms15, ms20, ms25, ms30, ms35, + ms40, ms45, ms50, ms55, ms60, ms65, ms70, ms75, + ms80, ms85, ms90, ms95, ms100, ms110, ms120, + ms140, ms160, ms200, ms240,ms280, ms320, ms400, + ms480, ms560 } + } + }, + -- For 3.84/7.68 TDD only, should be ignored for 1.28Mcps TDD mode + powerOffsetForSchedInfo INTEGER (0..6) OPTIONAL +} + +E-PUCH-Info-TDD128 ::= SEQUENCE { + e-TFCS-Info E-TFCS-Info, + snpl-ReportType ENUMERATED { type1, type2 } OPTIONAL, + prxdes-base INTEGER (-112..-50), + beaconPLEst BOOLEAN OPTIONAL, + tpc-StepSize TPC-StepSizeTDD, + pebase-PowerControlGAP INTEGER (1..255) OPTIONAL, + ul-SynchronisationParameters UL-SynchronisationParameters-r4 OPTIONAL, + e-PUCH-TS-ConfigurationList SEQUENCE (SIZE (1..maxTS-LCR-1)) OF + E-PUCH-TS-Slots-LCR, + minimum-Allowed-Code-Rate INTEGER (0..63), + maximum-Allowed-Code-Rate INTEGER (0..63), + maximumNumOfRetransSchedInfo INTEGER (0..15), + retransTimerForSchedInfo ENUMERATED { ms10, ms15, ms20, ms25, ms30, ms35, + ms40, ms45, ms50, ms55, ms60, ms65, ms70, ms75, + ms80, ms85, ms90, ms95, ms100, ms110, ms120, + ms140, ms160, ms200, ms240,ms280, ms320, ms400, + ms480, ms560 }, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy INTEGER (0..6) OPTIONAL +} + +E-PUCH-Info-MulticarrierEDCH-TDD128 ::= SEQUENCE { + e-PUCH-TS-ConfigurationList SEQUENCE (SIZE (1..maxTS-LCR-1)) OF + E-PUCH-TS-Slots-LCR +} + +E-PUCH-TS-Slots ::= SEQUENCE { + ts-Number INTEGER (0..14), + midambleShiftAndBurstType MidambleShiftAndBurstType-EDCH +} + +E-PUCH-TS-Slots-LCR ::= SEQUENCE { + -- Note: For 1.28Mcps TDD operation, valid value for timeslotNumber is INTEGER (1..5) + timeslotNumber TimeslotNumber-LCR-r4, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + ueSpecificMidamble INTEGER (0..15) + }, + -- Actual value midambleConfiguration = IE value * 2 + midambleConfiguration INTEGER (1..8) +} + +E-RGCH-CombinationIndex ::= INTEGER (0..5) + +E-RGCH-Information ::= SEQUENCE { + signatureSequence E-HICH-RGCH-SignatureSequence, + rg-CombinationIndex E-RGCH-CombinationIndex +} + +E-RGCH-Information-CommonEdch ::= SEQUENCE { + signatureSequence E-HICH-RGCH-SignatureSequence OPTIONAL +} + +E-RUCCH-AccessServiceClass ::= PRACH-Partitioning-LCR-r4 + +E-RUCCH-Info ::= SEQUENCE { + modeSpecificInfo CHOICE { + tdd384-tdd768 SEQUENCE { + e-RUCCH-ConstantValue INTEGER (-35..10), + e-RUCCH-PersistenceScalingFactor PersistenceScalingFactor, + t-RUCCH ENUMERATED {ms40, ms80, ms120, ms160, ms200, + ms240, ms280, ms320} OPTIONAL, + e-RUCCH-TS-Number INTEGER (0..14) OPTIONAL, + e-RUCCH-Midamble ENUMERATED {direct, direct-Inverted} OPTIONAL, + t-adv ENUMERATED { sec1, sec2, sec4, sec8, sec16, + sec32, sec128, infinity } OPTIONAL, + t-SCHED ENUMERATED { zero, ms40, ms80, ms160, ms250, + sec1, sec2, sec4 } OPTIONAL, + modeSpecificInfo CHOICE { + tdd384 CHOICE { + sF16 SEQUENCE (SIZE (1..8)) OF SF16Codes, + sF8 SEQUENCE (SIZE (1..8)) OF SF8Codes + }, + tdd768 CHOICE { + sF32 SEQUENCE (SIZE (1..16)) OF SF32Codes, + sF816 SEQUENCE (SIZE (1..16)) OF SF16Codes2 + } + } + }, + tdd128 SEQUENCE { + t-RUCCH ENUMERATED { ms20, ms40, ms60, ms80, ms120, + ms160, ms200, ms240, ms280, ms320, + ms400, ms500, ms600, ms800, ms1000, + ms2000 } OPTIONAL, + n-RUCCH INTEGER (0..7) OPTIONAL, + t-WAIT ENUMERATED { everyEDCHTTI, ms40, ms80, ms160, + ms320, ms640, ms1000, ms2000 } OPTIONAL, + t-SI ENUMERATED { everyEDCHTTI, ms20, ms40, ms60, ms80, + ms160, ms200 } OPTIONAL, + extendedEstimationWindow INTEGER (2..5) OPTIONAL, + e-RUCCH-AccessServiceClass E-RUCCH-AccessServiceClass OPTIONAL, + e-RUCCH-PersistenceScalingFactor PersistenceScalingFactorList OPTIONAL, + sync-UL-InfoForE-RUCCH SYNC-UL-InfoForE-RUCCH OPTIONAL, + prach-information PRACH-Information-LCR-List OPTIONAL + } + } +} + +E-RUCCH-Info-TDD128 ::= SEQUENCE { + t-RUCCH ENUMERATED { ms20, ms40, ms60, ms80, ms120, + ms160, ms200, ms240, ms280, ms320, + ms400, ms500, ms600, ms800, ms1000, + ms2000 } OPTIONAL, + n-RUCCH INTEGER (0..7) OPTIONAL, + t-WAIT ENUMERATED { everyEDCHTTI, ms40, ms80, ms160, + ms320, ms640, ms1000, ms2000 } OPTIONAL, + t-SI ENUMERATED { everyEDCHTTI, ms20, ms40, ms60, ms80, + ms160, ms200 } OPTIONAL, + extendedEstimationWindow INTEGER (2..5) OPTIONAL, + e-RUCCH-AccessServiceClass E-RUCCH-AccessServiceClass OPTIONAL, + e-RUCCH-PersistenceScalingFactor PersistenceScalingFactorList OPTIONAL, + sync-UL-InfoForE-RUCCH SYNC-UL-InfoForE-RUCCH OPTIONAL, + prach-information PRACH-Information-LCR-List OPTIONAL +} + +E-TFC-Boost-Info-r7 ::= SEQUENCE { + e-TFCI-Boost INTEGER (0..127), + delta-T2TP INTEGER (0..6) OPTIONAL +} + +E-TFCI-TableIndex ::= INTEGER (0..1) + +E-TFCS-Info ::= SEQUENCE { + reference-Beta-QPSK-List SEQUENCE (SIZE (1..8)) OF Reference-Beta-QPSK, + reference-Beta-16QAM-List SEQUENCE (SIZE (1..8)) OF Reference-Beta-16QAM +} + +EARFCN ::= INTEGER (0..65535) + +EARFCNExtension ::= INTEGER (65536..262143) + +EARFCNRange ::= SEQUENCE { +-- If the IE earfcn is set to a value of 65535, then the EARFCN +-- value for that instance shall be read from the IE earfcnExt. + earfcn EARFCN, + earfcnExt EARFCNExtension OPTIONAL +} + +EnablingDelay ::= ENUMERATED { + radio-frames-0, + radio-frames-1, + radio-frames-2, + radio-frames-4, + radio-frames-8, + radio-frames-16, + radio-frames-32, + radio-frames-64, + radio-frames-128, + spare7, + spare6, + spare5, + spare4, + spare3, + spare2, + spare1 } + +EnablingDelay-TDD128 ::= ENUMERATED { + radio-frames-0, radio-frames-1, radio-frames-2, + radio-frames-4, radio-frames-8, radio-frames-16, + radio-frames-32, radio-frames-64, radio-frames-128, + spare7, spare6, spare5, spare4, spare3, spare2, + infinity } + +EXT-UL-TimingAdvance ::= SEQUENCE { + modeSpecificInfo CHOICE { + tdd384 SEQUENCE { + ex-ul-TimingAdvance INTEGER (0..255) + }, + tdd768 SEQUENCE { + ex-ul-TimingAdvance INTEGER (0..511) + } + } +} + +FACH-PCH-Information ::= SEQUENCE { + transportFormatSet TransportFormatSet, + transportChannelIdentity TransportChannelIdentity, + ctch-Indicator BOOLEAN +} + +FACH-PCH-InformationList ::= SEQUENCE (SIZE (1..maxFACHPCH)) OF + FACH-PCH-Information + +Fallback-R99-PRACH-info-IEs::= SEQUENCE { + cCCH-Fallback BOOLEAN, + dCCH-Fallback BOOLEAN +} + +Feedback-cycle ::= ENUMERATED { + fc0, fc2, fc4, fc8, fc10, fc20, fc40, fc80, fc160} + +Feedback-cycle-r7 ::= ENUMERATED { + fc0, fc2, fc4, fc8, fc10, fc20, fc40, fc80, fc160, + fc16, fc32, fc64, spare4, spare3, spare2, spare1 } + +FPACH-Info-r4 ::= SEQUENCE { + timeslot TimeslotNumber-LCR-r4, + channelisationCode TDD-FPACH-CCode16-r4, + midambleShiftAndBurstType MidambleShiftAndBurstType-LCR-r4, + wi Wi-LCR +} + +F-TPICH-InfoNewServingCell ::= SEQUENCE { + f-tpich-Information F-TPICH-Information +} + +F-TPICH-InfoOtherCell ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + f-tpich-Info CHOICE { + f-tpich-Information F-TPICH-Information, + releaseIndicator NULL + } +} + +F-TPICH-Information ::= SEQUENCE { + ftpich-SlotFormat FTPICH-SlotFormat, + ftpich-CodeNumber INTEGER (0..255), + ftpich-FrameOffset FTPICH-FrameOffset +} + +F-TPICH-ReconfigurationInfo ::= SEQUENCE { + f-tpich-InfoNewServingCell F-TPICH-InfoNewServingCell OPTIONAL, + f-tpich-InfoOtherCellList SEQUENCE (SIZE (1..maxRL)) OF + F-TPICH-InfoOtherCell OPTIONAL +} + +-- Actual value FTPICH-FrameOffset = IE value * 256 +FTPICH-FrameOffset ::= INTEGER (0..149) + +FTPICH-SlotFormat ::= INTEGER (0..9) + +FreqIndexListForEnhancedMeas ::= SEQUENCE (SIZE (1..maxFreqMeasWithoutCM)) OF + FrequencyIndexForEnhancedMeas + +FrequencyInfo ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd FrequencyInfoFDD, + tdd FrequencyInfoTDD } +} + +FrequencyInfoFDD ::= SEQUENCE { + uarfcn-UL UARFCN OPTIONAL, + uarfcn-DL UARFCN +} + +FrequencyInfoTDD ::= SEQUENCE { + uarfcn-Nt UARFCN +} + +FrequencyIndexForEnhancedMeas ::= INTEGER (0..maxCellMeas-1) + +HappyBit-DelayCondition ::= ENUMERATED { + ms2, ms10, ms20, ms50, ms100, ms200, ms500, ms1000 } + +HARQ-Preamble-Mode ::= INTEGER (0..1) + +HS-ChannelisationCode-LCR ::= ENUMERATED { + cc16-1, cc16-2, cc16-3, cc16-4, + cc16-5, cc16-6, cc16-7, cc16-8, + cc16-9, cc16-10, cc16-11, cc16-12, + cc16-13, cc16-14, cc16-15, cc16-16 } + +HS-ChannelisationCodeSetInfo-LCR ::= SEQUENCE { + startCode HS-ChannelisationCode-LCR, + stopCode HS-ChannelisationCode-LCR +} + +HS-DSCH-CommonSystemInformation ::= SEQUENCE { + ccch-MappingInfo CommonRBMappingInfo, + srb1-MappingInfo CommonRBMappingInfo OPTIONAL, + common-MAC-ehs-ReorderingQueueList Common-MAC-ehs-ReorderingQueueList, + hs-scch-SystemInfo HS-SCCH-SystemInfo, + harq-SystemInfo HARQ-Info, + common-H-RNTI-information SEQUENCE (SIZE (1..maxCommonHRNTI)) OF + H-RNTI, + bcchSpecific-H-RNTI H-RNTI +} + +HS-DSCH-CommonSystemInformation-TDD128 ::= SEQUENCE { + ccch-MappingInfo CommonRBMappingInfo, + srb1-MappingInfo CommonRBMappingInfo OPTIONAL, + common-MAC-ehs-ReorderingQueueList Common-MAC-ehs-ReorderingQueueList, + hs-scch-SystemInfo-tdd128 HS-SCCH-SystemInfo-TDD128, + harq-SystemInfo HARQ-Info, + hs-pdsch-MidambleConfiguration HS-PDSCH-Midamble-Configuration-TDD128, + common-H-RNTI-information SEQUENCE (SIZE (1..maxCommonHRNTI)) OF H-RNTI, + bcchSpecific-H-RNTI H-RNTI +} + +HS-DSCH-DrxBurstFach ::= ENUMERATED { + f1, f2, f4, f8, f16, spare3, spare2, spare1 } + +HS-DSCH-DrxCellfach-info ::= SEQUENCE { + t-321 T-321, + hs-dsch-DrxCycleFach HS-DSCH-DrxCycleFach, + hs-dsch-DrxBurstFach HS-DSCH-DrxBurstFach, + drxInterruption-hs-dsch BOOLEAN +} + +HS-DSCH-DrxCellfach-info-TDD128 ::= SEQUENCE { + t-321 T-321, + hs-dsch-DrxCycleFach HS-DSCH-DrxCycleFach, + hs-dsch-DrxBurstFach HS-DSCH-DrxBurstFach +} + +HS-DSCH-DrxCellfach-SecondDrx-info ::= SEQUENCE { + hs-dsch-SecondDrx-CycleFach HS-DSCH-SecondDrx-CycleFach, + drx-level CHOICE { + one-level-DRX SEQUENCE { + hs-dsch-Second-Rx-BurstFach HS-DSCH-Second-Rx-BurstFach OPTIONAL, + t329 T-329 OPTIONAL + }, + two-level-DRX SEQUENCE { + t328 T-328 OPTIONAL, + hs-dsch-First-Rx-BurstFach HS-DSCH-First-Rx-BurstFach OPTIONAL, + hs-dsch-First-Drx-CycleFach HS-DSCH-First-Drx-CycleFach OPTIONAL, + hs-dsch-Second-Rx-BurstFach HS-DSCH-Second-Rx-BurstFach OPTIONAL, + t329 T-329 OPTIONAL + } + } +} + +HS-DSCH-DrxCycleFach ::= ENUMERATED { + f4, f8, f16, f32 } + +HS-DSCH-First-Drx-CycleFach ::= ENUMERATED { + f2, f4, f8, f16, f32, f64 } + +HS-DSCH-First-Rx-BurstFach ::= ENUMERATED { + f0p4, f0p8 } + +HS-DSCH-PagingSystemInformation ::= SEQUENCE { + dlScramblingCode SecondaryScramblingCode OPTIONAL, + pich-ForHSDPASupportedPagingList SEQUENCE (SIZE (1..maxSCCPCH)) OF + PICH-ForHSDPASupportedPaging, + numberOfPcchTransmissions INTEGER(1..5), + transportBlockSizeList SEQUENCE (SIZE (1..2)) OF + TransportBlockSizeIndex +} + +HS-DSCH-PagingSystemInformation-TDD128 ::= SEQUENCE { + pich-ForHsdschList SEQUENCE (SIZE (1..maxSCCPCH)) OF + PICH-ForHSDPASupportedPaging-TDD128, + dtch-DCCH-reception-window-size INTEGER (1..16), + pcch-InformationList PCCH-InformationList OPTIONAL +} + +HS-DSCH-RxPatternList-TDD128 ::= SEQUENCE (SIZE (1..maxRxPatternForHSDSCH-TDD128)) OF + SEQUENCE { + repetitionPeriodAndLength RepetitionPeriodAndLengthForSPS +} + +HS-DSCH-Second-Rx-BurstFach ::= ENUMERATED { + f1, f2 } + +HS-DSCH-SecondDrx-CycleFach ::= ENUMERATED { + f4, f8, f16, f32, f64, f128, f256, f512 } + +HS-DSCH-TBSizeTable ::= ENUMERATED { octetAligned } + +HS-DSCH-TbsList-TDD128 ::= SEQUENCE (SIZE (1..maxTbsForHSDSCH-TDD128)) OF + SEQUENCE { + hs-dsch-TBSizeIndex INTEGER (1..63) +} + +HS-DSCH-SPS-Information-TDD128 ::= SEQUENCE { + hs-dsch-SPS-Operation CHOICE { + continue NULL, + newOperation HS-DSCH-SPS-NewOperation-TDD128 + } +} + +HS-DSCH-SPS-NewOperation-TDD128 ::= SEQUENCE { + hs-dsch-TbsList HS-DSCH-TbsList-TDD128 OPTIONAL, + hs-dsch-RxPatternList HS-DSCH-RxPatternList-TDD128 OPTIONAL, + hARQInfoForSPS SEQUENCE { + numberOfProcesses INTEGER (1..8), + memorySize HARQMemorySize + } OPTIONAL, + hs-sich-List HS-SICH-List-TDD128, + initialSPSInfoForHSDSCH SEQUENCE { + timeslotInfo BIT STRING (SIZE (5)), + codeResourceInfo HS-ChannelisationCodeSetInfo-LCR, + activationTime ActivationTime, + sfnNum INTEGER (0..1), + initialRxPatternIndex INTEGER (0..maxRxPatternForHSDSCH-TDD128-1), + initialTfsIndex INTEGER (0..maxTbsForHSDSCH-TDD128-1), + modulation ENUMERATED { modQPSK, mod16QAM }, + hs-sich-Index INTEGER (0..maxHSSICH-TDD128-1) + } OPTIONAL +} + +HS-PDSCH-Midamble-Configuration-TDD128 ::= SEQUENCE { + midambleAllocationMode CHOICE{ + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble INTEGER (0..15) + }, + -- Actual value midambleConfiguration = IE value * 2 + midambleConfiguration INTEGER (1..8) +} + +HS-SCCH-Info ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + hS-SCCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-Codes, + dl-ScramblingCode SecondaryScramblingCode OPTIONAL + }, + tdd CHOICE { + tdd384 SEQUENCE { + nack-ack-power-offset INTEGER (-7..8), + hs-SICH-PowerControl-Info HS-SICH-Power-Control-Info-TDD384, + hS-SCCH-SetConfiguration SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-TDD384 + }, + tdd128 SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-TDD128 + } + } +} + +HS-SCCH-Info-r6 ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + hS-SCCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-Codes, + dl-ScramblingCode SecondaryScramblingCode OPTIONAL + }, + tdd CHOICE { + tdd384 SEQUENCE { + nack-ack-power-offset INTEGER (-7..8), + hs-SICH-PowerControl-Info HS-SICH-Power-Control-Info-TDD384, + dhs-sync DHS-Sync OPTIONAL, + bler-target Bler-Target, + hS-SCCH-SetConfiguration SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-TDD384-r6 + }, + tdd128 SEQUENCE { + nack-ack-power-offset INTEGER (-7..8), + power-level-HSSICH INTEGER (-120..-58), + tpc-step-size ENUMERATED { s1, s2, s3 , spare1 }, + bler-target Bler-Target, + hS-SCCH-SetConfiguration SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-TDD128-r6 + } + } + } +} + +HS-SCCH-Info-r7 ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + hS-SCCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-Codes, + dl-ScramblingCode SecondaryScramblingCode OPTIONAL + }, + tdd CHOICE { + tdd384 SEQUENCE { + nack-ack-power-offset INTEGER (-7..8), + hs-SICH-PowerControl-Info HS-SICH-Power-Control-Info-TDD384, + dhs-sync DHS-Sync OPTIONAL, + bler-target Bler-Target, + hS-SCCH-SetConfiguration SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-TDD384-r6 + }, + tdd768 SEQUENCE { + nack-ack-power-offset INTEGER (-7..8), + hs-SICH-PowerControl-Info HS-SICH-Power-Control-Info-TDD768, + dhs-sync DHS-Sync OPTIONAL, + bler-target Bler-Target, + hS-SCCH-SetConfiguration SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-TDD768 + }, + tdd128 SEQUENCE { + nack-ack-power-offset INTEGER (-7..8), + power-level-HSSICH INTEGER (-120..-58), + tpc-step-size ENUMERATED { s1, s2, s3 , spare1 }, + bler-target Bler-Target, + powerControlGAP PowerControlGAP OPTIONAL, + pathlossCompensationSwitch BOOLEAN OPTIONAL, + hS-SCCH-SetConfiguration SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-TDD128-r6 + } + } + } +} + +HS-SCCH-Info-r8-ext ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd NULL, + tdd CHOICE { + tdd384 NULL, + tdd768 NULL, + tdd128 SEQUENCE { + hS-SCCH-tpc-step-size ENUMERATED { s1, s2, s3, spare1 } OPTIONAL + } + } + } +} + +HS-SCCH-Info-r9 ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + hS-SCCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-Codes, + dl-ScramblingCode SecondaryScramblingCode OPTIONAL + }, + tdd CHOICE { + tdd384 SEQUENCE { + nack-ack-power-offset INTEGER (-7..8), + hs-SICH-PowerControl-Info HS-SICH-Power-Control-Info-TDD384, + dhs-sync DHS-Sync OPTIONAL, + bler-target Bler-Target, + hS-SCCH-SetConfiguration SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-TDD384-r6 + }, + tdd768 SEQUENCE { + nack-ack-power-offset INTEGER (-7..8), + hs-SICH-PowerControl-Info HS-SICH-Power-Control-Info-TDD768, + dhs-sync DHS-Sync OPTIONAL, + bler-target Bler-Target, + hS-SCCH-SetConfiguration SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-TDD768 + }, + tdd128 SEQUENCE { + nack-ack-power-offset INTEGER (-7..8), + power-level-HSSICH INTEGER (-120..-58), + tpc-step-size ENUMERATED { s1, s2, s3, spare1 }, + bler-target Bler-Target, + hS-SCCH-tpc-step-size ENUMERATED { s1, s2, s3, spare1 } OPTIONAL, + powerControlGAP PowerControlGAP OPTIONAL, + pathlossCompensationSwitch BOOLEAN OPTIONAL, + hS-SCCH-SetConfiguration SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-TDD128-r6 + } + } + } +} + +HS-SCCH-DRX-InactivityThreshold-TDD128 ::= ENUMERATED { + sub-frames-1, sub-frames-2, sub-frames-4, + sub-frames-8, sub-frames-16, sub-frames-32, + sub-frames-64, sub-frames-128, sub-frames-256, + sub-frames-512, + spare6, spare5, spare4, spare3, spare2, + infinity } + +HS-SCCH-DRX-Info-TDD128 ::= SEQUENCE { + hS-SCCH-DRX-Cycle ControlChannelDRXCycle-TDD128, + hS-SCCH-DRX-InactivityThreshold HS-SCCH-DRX-InactivityThreshold-TDD128 OPTIONAL, + hS-SCCH-DRX-Offset INTEGER (0..63) +} + +HS-SCCH-Codes ::= INTEGER (0..127) + +HS-SCCH-Less-NewOperation ::= SEQUENCE { + hs-pdsch-CodeIndex INTEGER (1..15), + hs-scch-LessTFS HS-SCCH-LessTFSList +} + +HS-SCCH-LessInfo-r7 ::= SEQUENCE { + hs-scchLessOperation CHOICE { + continue NULL, + newOperation HS-SCCH-Less-NewOperation + } +} + +HS-SCCH-LessTFSList ::= SEQUENCE (SIZE (1..maxHS-SCCHLessTrBlk)) OF + SEQUENCE { + hs-scch-LessTFSI INTEGER (1..90), + hs-scch-LessSecondCodeSupport BOOLEAN +} + +HS-SCCH-SystemInfo ::= SEQUENCE { + dl-ScramblingCode SecondaryScramblingCode OPTIONAL, + hS-SCCHChannelisationCodeInfo SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-Codes +} + +HS-SCCH-SystemInfo-TDD128 ::= SEQUENCE { + hs-SCCH-SetConfiguration SEQUENCE (SIZE (1..maxHSSCCHs)) OF + HS-SCCH-TDD128-r6, + power-level-HSSICH INTEGER (-120..-58), + nack-ack-power-offset INTEGER (-7..8), + tpc-step-size ENUMERATED { s1, s2, s3 , spare1 }, + bler-target Bler-Target, + power-control-gap INTEGER (1..255) OPTIONAL, + pathloss-compensation-switch BOOLEAN OPTIONAL +} + +HS-SCCH-TDD128 ::= SEQUENCE { + timeslotNumber TimeslotNumber-LCR-r4, + firstChannelisationCode HS-ChannelisationCode-LCR, + secondChannelisationCode HS-ChannelisationCode-LCR, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble INTEGER(0..15) + }, + -- Actual value midambleConfiguration = IE value * 2 + midambleConfiguration INTEGER (1..8), + bler-target Bler-Target, + hs-sich-configuration HS-SICH-Configuration-TDD128 +} + +HS-SCCH-TDD128-r6 ::= SEQUENCE { + timeslotNumber TimeslotNumber-LCR-r4, + firstChannelisationCode HS-ChannelisationCode-LCR, + secondChannelisationCode HS-ChannelisationCode-LCR, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble INTEGER(0..15) + }, + -- Actual value midambleConfiguration = IE value * 2 + midambleConfiguration INTEGER (1..8), + hs-sich-configuration HS-SICH-Configuration-TDD128-r6 +} + +--for TDD128 Multi-Carrier +HS-SCCH-TDD128-MultiCarrier ::= SEQUENCE { + uarfcn-HS-SCCH-Rx UARFCN, + timeslotNumber TimeslotNumber-LCR-r4, + firstChannelisationCode HS-ChannelisationCode-LCR, + secondChannelisationCode HS-ChannelisationCode-LCR, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble INTEGER(0..15) + }, + -- Actual value midambleConfiguration = IE value * 2 + midambleConfiguration INTEGER (1..8), + bler-target Bler-Target, + hs-sich-configuration HS-SICH-Configuration-TDD128 +} + +HS-SICH-Configuration-TDD128 ::= SEQUENCE { + timeslotNumber TimeslotNumber-LCR-r4, + channelisationCode HS-ChannelisationCode-LCR, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftLong + } + }, + -- Actual value midambleConfiguration = IE value * 2 + midambleConfiguration INTEGER (1..8), + nack-ack-power-offset INTEGER (-7..8), + power-level-HSSICH INTEGER (-120..-58), + tpc-step-size ENUMERATED { s1, s2, s3 , spare1} +} + +HS-SICH-Configuration-TDD128-r6 ::= SEQUENCE { + timeslotNumber TimeslotNumber-LCR-r4, + channelisationCode HS-ChannelisationCode-LCR, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftLong + } + }, + -- Actual value midambleConfiguration = IE value * 2 + midambleConfiguration INTEGER (1..8) +} + +HS-SICH-List-TDD128 ::= SEQUENCE (SIZE (1..maxHSSICH-TDD128)) OF + CHOICE { + implicit SEQUENCE { + hS-SCCH-Index INTEGER (0..maxHSSCCHs-1) + }, + explicit SEQUENCE { + hS-SICH-Info HS-SICH-Configuration-TDD128-r6 + } +} + +--The order of the list corresponds to the order of HS-SCCHs in HS-SCCH info +HS-SICH-ReferenceSignalInfoList ::= SEQUENCE ( SIZE (1.. maxHSSCCHs)) OF + SEQUENCE { + -- Actual value midambleConfiguration = IE value * 2 + midambleConfiguration INTEGER (1..8), + midambleShift INTEGER (0..15), + timeSlot INTEGER (1..5) +} + +HS-SCCH-TDD384 ::= SEQUENCE { + timeslotNumber TimeslotNumber, + channelisationCode DL-TS-ChannelisationCode, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftLong + } + }, + midambleconfiguration MidambleConfigurationBurstType1and3, + bler-target Bler-Target, + hs-sich-configuration HS-SICH-Configuration-TDD384 +} + +HS-SCCH-TDD384-r6 ::= SEQUENCE { + timeslotNumber TimeslotNumber, + channelisationCode DL-TS-ChannelisationCode, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftLong + } + }, + midambleconfiguration MidambleConfigurationBurstType1and3, + hs-sich-configuration HS-SICH-Configuration-TDD384 +} + +HS-SCCH-TDD768 ::= SEQUENCE { + timeslotNumber TimeslotNumber, + channelisationCode DL-TS-ChannelisationCode-VHCR, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftLong + } + }, + midambleconfiguration MidambleConfigurationBurstType1and3, + hs-sich-configuration HS-SICH-Configuration-TDD768 +} + +HS-SICH-Configuration-TDD384 ::= SEQUENCE { + timeslotNumber TimeslotNumber, + channelisationCode DL-TS-ChannelisationCode, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftLong + } + }, + midambleconfiguration MidambleConfigurationBurstType1and3 +} + +HS-SICH-Configuration-TDD768 ::= SEQUENCE { + timeslotNumber TimeslotNumber, + channelisationCode DL-TS-ChannelisationCode-VHCR, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftLong + } + }, + midambleconfiguration MidambleConfigurationBurstType1and3 +} + +HS-SICH-Power-Control-Info-TDD384 ::= SEQUENCE { + -- Actual value ul-target-SIR = IE value * 0.5 + ul-target-SIR INTEGER (-22..40), + -- Note: IE 'ConstantValue' is used (instead of IE 'ConstantValueTDD') to keep + -- compatibility with REL-5 + hs-sich-ConstantValue ConstantValue +} + +HS-SICH-Power-Control-Info-TDD768 ::= SEQUENCE { + -- Actual value ul-target-SIR = IE value * 0.5 + ul-target-SIR INTEGER (-22..40), + -- Note: IE 'ConstantValue' is used (instead of IE 'ConstantValueTDD') to keep + -- compatibility with REL-5 + hs-sich-ConstantValue ConstantValue +} + +IndividualTimeslotInfo ::= SEQUENCE { + timeslotNumber TimeslotNumber, + tfci-Existence BOOLEAN, + midambleShiftAndBurstType MidambleShiftAndBurstType +} + +IndividualTimeslotInfo-VHCR ::= SEQUENCE { + timeslotNumber TimeslotNumber, + tfci-Existence BOOLEAN, + midambleShiftAndBurstType-VHCR MidambleShiftAndBurstType-VHCR +} + +IndividualTimeslotInfo-LCR-r4 ::= SEQUENCE { + timeslotNumber TimeslotNumber-LCR-r4, + tfci-Existence BOOLEAN, + midambleShiftAndBurstType MidambleShiftAndBurstType-LCR-r4, + modulation ENUMERATED { mod-QPSK, mod-8PSK }, + ss-TPC-Symbols ENUMERATED { zero, one, sixteenOverSF }, + additionalSS-TPC-Symbols INTEGER(1..15) OPTIONAL +} + +IndividualTimeslotInfo-LCR-r4-ext ::= SEQUENCE { +-- timeslotNumber and tfci-Existence is taken from IndividualTimeslotInfo. +-- midambleShiftAndBurstType in IndividualTimeslotInfo shall be ignored. + midambleShiftAndBurstType MidambleShiftAndBurstType-LCR-r4, + modulation ENUMERATED { mod-QPSK, mod-8PSK }, + ss-TPC-Symbols ENUMERATED { zero, one, sixteenOverSF } +} + +IndividualTimeslotInfo-r7 ::= SEQUENCE { + timeslotNumber TimeslotNumber, + tfci-Existence BOOLEAN, + midambleShiftAndBurstType MidambleShiftAndBurstType-r7 +} + +IndividualTS-Interference ::= SEQUENCE { + timeslot TimeslotNumber, + ul-TimeslotInterference TDD-UL-Interference +} + +IndividualTS-InterferenceList ::= SEQUENCE (SIZE (1..maxTS)) OF + IndividualTS-Interference + +ITP ::= ENUMERATED { + mode0, mode1 } + +NidentifyAbort ::= INTEGER (1..128) + +MAC-DTX-Cycle-10ms ::= ENUMERATED { + sub-frames-5, + sub-frames-10, + sub-frames-20, + spare1 } + +MAC-DTX-Cycle-2ms ::= ENUMERATED { + sub-frames-1, + sub-frames-4, + sub-frames-5, + sub-frames-8, + sub-frames-10, + sub-frames-16, + sub-frames-20, + spare1 } + +MAC-InactivityThreshold ::= ENUMERATED { + e-dch-tti-1, + e-dch-tti-2, + e-dch-tti-4, + e-dch-tti-8, + e-dch-tti-16, + e-dch-tti-32, + e-dch-tti-64, + e-dch-tti-128, + e-dch-tti-256, + e-dch-tti-512, + e-dch-tti-Infinity, + spare5, + spare4, + spare3, + spare2, + spare1 } + +MaxAllowedUL-TX-Power ::= INTEGER (-50..33) + +MaxAvailablePCPCH-Number ::= INTEGER (1..64) +MaxPowerIncrease-r4 ::= INTEGER (0..3) + +MaxTFCI-Field2Value ::= INTEGER (1..1023) + +Measurement-Feedback-Info ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + measurementPowerOffset MeasurementPowerOffset, + feedback-cycle Feedback-cycle, + cqi-RepetitionFactor CQI-RepetitionFactor, + deltaCQI DeltaCQI + }, + tdd NULL + } +} + +Measurement-Feedback-Info-r7 ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + measurementPowerOffset MeasurementPowerOffset, + feedback-cycle Feedback-cycle-r7, + cqi-RepetitionFactor CQI-RepetitionFactor, + deltaCQI DeltaCQI + }, + tdd NULL + } +} + +Measurement-Feedback-Info-r11 ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + measurementPowerOffset MeasurementPowerOffset, + feedback-cycle Feedback-cycle-r7, + cqi-RepetitionFactor CQI-RepetitionFactor, + cqi-RepetitionFactor-Assisting CQI-RepetitionFactor OPTIONAL, + deltaCQI DeltaCQI-r11 + }, + tdd NULL + } +} + +Measurement-Feedback-Info-ConcurrentTTI ::= SEQUENCE { + feedback-cycle Feedback-cycle-r7 OPTIONAL, + cqi-RepetitionFactor CQI-RepetitionFactor OPTIONAL, + deltaCQI DeltaCQI OPTIONAL +} + +MidambleConfigurationBurstType1and3 ::= ENUMERATED {ms4, ms8, ms16} + +MidambleConfigurationBurstType1 ::= ENUMERATED {ms4, ms8, ms16} + +MidambleConfigurationBurstType2 ::= ENUMERATED {ms3, ms6} + +MidambleConfigurationBurstType2-VHCR ::= ENUMERATED {ms4, ms8} + +MidambleShiftAndBurstType ::= SEQUENCE { + burstType CHOICE { + type1 SEQUENCE { + midambleConfigurationBurstType1and3 MidambleConfigurationBurstType1and3, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftLong + } + } + }, + type2 SEQUENCE { + midambleConfigurationBurstType2 MidambleConfigurationBurstType2, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftShort + } + } + }, + type3 SEQUENCE { + midambleConfigurationBurstType1and3 MidambleConfigurationBurstType1and3, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftLong + } + } + } + } +} + +MidambleShiftAndBurstType-VHCR ::= SEQUENCE { + burstType CHOICE { + type1 SEQUENCE { + midambleConfigurationBurstType1and3 MidambleConfigurationBurstType1and3, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftLong + } + } + }, + type2 SEQUENCE { + midambleConfigurationBurstType2 MidambleConfigurationBurstType2-VHCR, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftShort-VHCR + } + } + }, + type3 SEQUENCE { + midambleConfigurationBurstType1and3 MidambleConfigurationBurstType1and3, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftLong + } + } + }, + -- mbsfnBurstType4 is only used DL + mbsfnBurstType4 NULL + } +} + +MidambleShiftAndBurstType-r7 ::= SEQUENCE { + burstType CHOICE { + type1 SEQUENCE { + midambleConfigurationBurstType1and3 MidambleConfigurationBurstType1and3, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftLong + } + } + }, + type2 SEQUENCE { + midambleConfigurationBurstType2 MidambleConfigurationBurstType2, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftShort + } + } + }, + type3 SEQUENCE { + midambleConfigurationBurstType1and3 MidambleConfigurationBurstType1and3, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftLong + } + } + }, + -- mbsfnBurstType4 is only used DL + mbsfnBurstType4 NULL + } +} + +MidambleShiftAndBurstType-DL ::= SEQUENCE { + burstType CHOICE { + type1 SEQUENCE { + midambleConfigurationBurstType1and3 MidambleConfigurationBurstType1and3, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftLong + } + } + }, + type2 SEQUENCE { + midambleConfigurationBurstType2 MidambleConfigurationBurstType2, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftShort + } + } + } + } +} + +MidambleShiftAndBurstType-DL-VHCR ::= SEQUENCE { + burstType CHOICE { + type1 SEQUENCE { + midambleConfigurationBurstType1and3 MidambleConfigurationBurstType1and3, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftLong + } + } + }, + type2 SEQUENCE { + midambleConfigurationBurstType2 MidambleConfigurationBurstType2-VHCR, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftShort-VHCR + } + } + } + } +} + +MidambleShiftAndBurstType-LCR-r4 ::= SEQUENCE { + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift INTEGER (0..15) + } + }, + -- Actual value midambleConfiguration = IE value * 2 + midambleConfiguration INTEGER (1..8) +} + +MidambleShiftAndBurstType-EDCH ::= SEQUENCE { + burstType CHOICE { + type1 SEQUENCE { + midambleConfigurationBurstType1 MidambleConfigurationBurstType1, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftLong + } + } + }, + type2 SEQUENCE { + midambleConfigurationBurstType2 MidambleConfigurationBurstType2, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + commonMidamble NULL, + ueSpecificMidamble SEQUENCE { + midambleShift MidambleShiftShort + } + } + } + } +} + +MidambleShiftLong ::= INTEGER (0..15) + + +MidambleShiftShort ::= INTEGER (0..5) + +MidambleShiftShort-VHCR ::= INTEGER (0..7) + +MIMO-N-M-Ratio ::= ENUMERATED { + mnm1-2, mnm2-3, mnm3-4, mnm4-5, mnm5-6, + mnm6-7, mnm7-8, mnm8-9, mnm9-10, mnm1-1 } + +MIMO-Operation ::= ENUMERATED { + start, continue } + +MIMO-Parameters-r7 ::= SEQUENCE { + mimoOperation MIMO-Operation, + mimoN-M-Ratio MIMO-N-M-Ratio OPTIONAL, + mimoPilotConfiguration MIMO-PilotConfiguration OPTIONAL +} + +MIMO4x4-Parameters ::= SEQUENCE { + configurationInfo CHOICE { + continue NULL, + newConfiguration SEQUENCE { + mimo4x4N-M-Ratio MIMO-N-M-Ratio OPTIONAL, + mimo4x4PilotConfiguration MIMO4x4-PilotConfiguration OPTIONAL, + precodingWeightSetRestriction BIT STRING (SIZE (64)) OPTIONAL + } + } +} + +MIMO-Parameters-v7f0ext ::= MIMO-PilotConfiguration-v7f0ext + +MIMO-Parameters-v7g0ext ::= SEQUENCE { + precodingWeightSetRestriction ENUMERATED { true } OPTIONAL +} + +MIMO-Parameters-r8 ::= SEQUENCE { + mimoOperation MIMO-Operation, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + mimoN-M-Ratio MIMO-N-M-Ratio OPTIONAL, + mimoPilotConfiguration MIMO-PilotConfiguration OPTIONAL + }, + tdd CHOICE { + tdd128 SEQUENCE { + mimoSFModeForHSPDSCHDualStream ENUMERATED {sf1, sf1sf16}, + hs-sich-ReferenceSignalInfoList HS-SICH-ReferenceSignalInfoList OPTIONAL + }, + tdd384-tdd768 NULL + } + } +} + +MIMO-Parameters-r9 ::= SEQUENCE { + mimoOperation MIMO-Operation, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + mimoN-M-Ratio MIMO-N-M-Ratio OPTIONAL, + mimoPilotConfiguration MIMO-PilotConfiguration-r9 OPTIONAL, + precodingWeightSetRestriction ENUMERATED { true } OPTIONAL + }, + tdd CHOICE { + tdd128 SEQUENCE { + mimoSFModeForHSPDSCHDualStream ENUMERATED {sf1, sf1sf16}, + hs-sich-ReferenceSignalInfoList HS-SICH-ReferenceSignalInfoList OPTIONAL + }, + tdd384-tdd768 NULL + } + } +} + +MIMO-PilotConfiguration ::= SEQUENCE { + secondCPICH-Pattern CHOICE { + normalPattern NULL, + diversityPattern SEQUENCE { + channelisationCode ChannelisationCode256 + } + } +} + +MIMO-PilotConfiguration-v7f0ext ::= SEQUENCE { + s-cpich-PowerOffset-Mimo S-CPICH-PowerOffset-MIMO OPTIONAL +} + +MIMO-PilotConfiguration-r9 ::= SEQUENCE { + secondCPICH-Pattern CHOICE { + normalPattern NULL, + diversityPattern SEQUENCE { + channelisationCode ChannelisationCode256, + s-cpich-PowerOffset-Mimo S-CPICH-PowerOffset-MIMO OPTIONAL + } + } +} + +MIMO4x4-PilotConfiguration ::= SEQUENCE { + antenna2 MIMO-PilotConfiguration-r9 OPTIONAL, + antenna3And4 Antenna3And4 OPTIONAL +} + +MinimumSpreadingFactor ::= ENUMERATED { + sf4, sf8, sf16, sf32, + sf64, sf128, sf256 } + +MinReduced-E-DPDCH-GainFactor ::= ENUMERATED { + m8-15, m11-15, m15-15, m21-15, m30-15, + m42-15, m60-15, m84-15 } + +MultiCodeInfo ::= INTEGER (1..16) + +-- These IEs are applied for 1.28 Mcps TDD only +Multi-frequencyInfo-LCR-r7 ::= SEQUENCE { + -- If the secondary frequency is present, it indicates working frequency + secondFrequencyInfo FrequencyInfoTDD OPTIONAL, + fPachFrequencyInfo FrequencyInfoTDD OPTIONAL, + --If a cell UpPCH uses other uplink service timeslot, it indicates the UpPCH position + upPCHpositionInfo UpPCHposition-LCR OPTIONAL +} + +MultiflowCellType ::= ENUMERATED { intra-nodeB, inter-nodeB } + +MultiflowConfigurationInfo ::= SEQUENCE { + cellType MultiflowCellType, + timeReferenceCell ENUMERATED { true } OPTIONAL +} + +MU-MIMO-Info-TDD128 ::= CHOICE { + continue NULL, + newConfiguration SEQUENCE { + mu-MIMO-Operation MU-MIMO-Operation, + standaloneMidambleInfo StandaloneMidambleInfo-TDD128 OPTIONAL + } +} + +MU-MIMO-Operation ::= ENUMERATED { + uL, dL, uLandDL, spare } + +N-EOT ::= INTEGER (0..7) + +N-GAP ::= ENUMERATED { + f2, f4, f8 } + +N-PCH ::= INTEGER (1..8) + +N-StartMessage ::= INTEGER (1..8) + +NB01 ::= INTEGER (0..50) + +NewTiming ::= SEQUENCE { + enablingDelay EnablingDelay, + ue-dtx-drx-Offset UE-DTX-DRX-Offset +} + +NF-Max ::= INTEGER (1..64) + +NodeB-Trigger-HS-DPCCH-Transmission ::= SEQUENCE { + hs-dpcch-TransmitContinuationOffset ENUMERATED { + ms10, ms20, ms30, ms40, ms80, ms160, + ms320, ms800} OPTIONAL +} + +Non-ScheduledTransGrantInfoTDD ::= CHOICE { + tdd384-768 SEQUENCE { + timeslotResourceRelatedInfo BIT STRING (SIZE (13)), + powerResourceRelatedInfo INTEGER (1..32), + activationTime ActivationTime, + repetitionPeriodAndLength RepetitionPeriodAndLength OPTIONAL, + codeResourceInfo UL-TS-ChannelisationCode + }, + tdd128 SEQUENCE { + n-E-UCCH INTEGER (1..8) OPTIONAL, + n-E-HICH INTEGER (4..15) OPTIONAL, + timeslotResourceRelatedInfo BIT STRING (SIZE (5)), + powerResourceRelatedInfo INTEGER (1..32), + activationTime ActivationTime, + sfnNum INTEGER (0..1), + repetitionPeriodAndLength RepetitionPeriodAndLength OPTIONAL, + codeResourceInfo UL-TS-ChannelisationCode, + e-HICH-Info SEQUENCE { + timeslotNumber TimeslotNumber-LCR-r4, + channelisation-Code HS-ChannelisationCode-LCR, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + ueSpecificMidamble INTEGER (0..15) + }, + -- Actual value midambleConfiguration = IE value * 2 + midambleConfiguration INTEGER (1..8), + signatureSequenceGroupIndex INTEGER (0..19) + } + } +} + +Non-ScheduledTransGrantInfoTDD-ext ::= CHOICE { + tdd384-768 NULL, + tdd128 SEQUENCE { + t-SI-nst ENUMERATED { + everyEDCHTTI, ms20, ms40, ms60, ms80, ms160, + ms200 } OPTIONAL + } +} + +Non-ScheduledTransGrantInfoTDD-r9 ::= CHOICE { + tdd384-768 SEQUENCE { + timeslotResourceRelatedInfo BIT STRING (SIZE (13)), + powerResourceRelatedInfo INTEGER (1..32), + activationTime ActivationTime, + repetitionPeriodAndLength RepetitionPeriodAndLength OPTIONAL, + codeResourceInfo UL-TS-ChannelisationCode + }, + tdd128 SEQUENCE { + n-E-UCCH INTEGER (1..8) OPTIONAL, + n-E-HICH INTEGER (4..15) OPTIONAL, + timeslotResourceRelatedInfo BIT STRING (SIZE (5)), + powerResourceRelatedInfo INTEGER (1..32), + activationTime ActivationTime, + sfnNum INTEGER (0..1), + repetitionPeriodAndLength RepetitionPeriodAndLength OPTIONAL, + codeResourceInfo UL-TS-ChannelisationCode, + e-HICH-Info SEQUENCE { + timeslotNumber TimeslotNumber-LCR-r4, + channelisation-Code HS-ChannelisationCode-LCR, + midambleAllocationMode CHOICE { + defaultMidamble NULL, + ueSpecificMidamble INTEGER (0..15) + }, + -- Actual value midambleConfiguration = IE value * 2 + midambleConfiguration INTEGER (1..8), + signatureSequenceGroupIndex INTEGER (0..19) + }, + t-SI-nst ENUMERATED { + everyEDCHTTI, ms20, ms40, ms60, ms80, ms160, + ms200 } OPTIONAL + } +} + +NumberOfDPDCH ::= INTEGER (1..maxDPDCH-UL) + +NumberOfFBI-Bits ::= INTEGER (1..2) + +NumberOfTPC-Bits ::= ENUMERATED { tpc4 } + +OpenLoopPowerControl-TDD ::= SEQUENCE { + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power, + -- alpha, prach-ConstantValue, dpch-ConstantValue and pusch-ConstantValue + -- shall be ignored in 1.28Mcps TDD mode. + alpha Alpha OPTIONAL, + prach-ConstantValue ConstantValueTdd, + dpch-ConstantValue ConstantValueTdd, + pusch-ConstantValue ConstantValueTdd OPTIONAL +} + +OpenLoopPowerControl-IPDL-TDD-r4 ::= SEQUENCE { + ipdl-alpha Alpha, + maxPowerIncrease MaxPowerIncrease-r4 +} + +PagingIndicatorLength ::= ENUMERATED { + pi4, pi8, pi16 } + +PC-Preamble ::= INTEGER (0..7) + +PCCH-InformationList ::= SEQUENCE { + paging-associatedHspdschInfo SEQUENCE (SIZE (1.. maxSCCPCH)) OF + SEQUENCE { + hs-pdsch-MidambleConfiguration HS-PDSCH-Midamble-Configuration-TDD128, + timeslotResourceRelatedInfo BIT STRING (SIZE (6)), + codeResourceInformation CodeResourceInformation-TDD128 + }, + paging-sub-Channel-size INTEGER (1..3), + transportBlockSizeList SEQUENCE (SIZE (1..2)) OF TransportBlockSizeIndex +} + +PCP-Length ::= ENUMERATED { + as0, as8 } + +PCPCH-ChannelInfo ::= SEQUENCE { + pcpch-UL-ScramblingCode INTEGER (0..79), + pcpch-DL-ChannelisationCode INTEGER (0..511), + pcpch-DL-ScramblingCode SecondaryScramblingCode OPTIONAL, + pcp-Length PCP-Length, + ucsm-Info UCSM-Info OPTIONAL +} + +PCPCH-ChannelInfoList ::= SEQUENCE (SIZE (1..maxPCPCHs)) OF + PCPCH-ChannelInfo + +PCPICH-UsageForChannelEst ::= ENUMERATED { + mayBeUsed, + shallNotBeUsed } + +PDSCH-CapacityAllocationInfo ::= SEQUENCE { + -- pdsch-PowerControlInfo is conditional on new-configuration branch below, if this + -- selected the IE is OPTIONAL otherwise it should not be sent + pdsch-PowerControlInfo PDSCH-PowerControlInfo OPTIONAL, + pdsch-AllocationPeriodInfo AllocationPeriodInfo, + configuration CHOICE { + old-Configuration SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + pdsch-Identity PDSCH-Identity + }, + new-Configuration SEQUENCE { + pdsch-Info PDSCH-Info, + pdsch-Identity PDSCH-Identity OPTIONAL + } + } +} + +PDSCH-CapacityAllocationInfo-r4 ::= SEQUENCE { + pdsch-AllocationPeriodInfo AllocationPeriodInfo, + configuration CHOICE { + old-Configuration SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + pdsch-Identity PDSCH-Identity + }, + new-Configuration SEQUENCE { + pdsch-Info PDSCH-Info-r4, + pdsch-Identity PDSCH-Identity OPTIONAL, + pdsch-PowerControlInfo PDSCH-PowerControlInfo OPTIONAL + } + } +} + +PDSCH-CapacityAllocationInfo-r7 ::= SEQUENCE { + pdsch-AllocationPeriodInfo AllocationPeriodInfo, + configuration CHOICE { + old-Configuration SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + pdsch-Identity PDSCH-Identity + }, + new-Configuration SEQUENCE { + pdsch-Info PDSCH-Info-r7, + pdsch-Identity PDSCH-Identity OPTIONAL, + pdsch-PowerControlInfo PDSCH-PowerControlInfo OPTIONAL + } + } +} + +PDSCH-CodeInfo ::= SEQUENCE { + spreadingFactor SF-PDSCH, + codeNumber CodeNumberDSCH, + multiCodeInfo MultiCodeInfo +} + +PDSCH-CodeInfoList ::= SEQUENCE (SIZE (1..maxTFCI-2-Combs)) OF + PDSCH-CodeInfo + +PDSCH-CodeMap ::= SEQUENCE { + spreadingFactor SF-PDSCH, + multiCodeInfo MultiCodeInfo, + codeNumberStart CodeNumberDSCH, + codeNumberStop CodeNumberDSCH +} + +PDSCH-CodeMapList ::= SEQUENCE (SIZE (1..maxPDSCH-TFCIgroups)) OF + PDSCH-CodeMap + +PDSCH-CodeMapping ::= SEQUENCE { + dl-ScramblingCode SecondaryScramblingCode OPTIONAL, + signallingMethod CHOICE { + codeRange CodeRange, + tfci-Range DSCH-MappingList, + explicit-config PDSCH-CodeInfoList, + replace ReplacedPDSCH-CodeInfoList + } +} + +PDSCH-Identity ::= INTEGER (1..hiPDSCHidentities) + +PDSCH-Info ::= SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + commonTimeslotInfo CommonTimeslotInfo OPTIONAL, + pdsch-TimeslotsCodes DownlinkTimeslotsCodes OPTIONAL +} + +PDSCH-Info-r4 ::= SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + commonTimeslotInfo CommonTimeslotInfo OPTIONAL, + tddOption CHOICE { + tdd384 SEQUENCE { + pdsch-TimeslotsCodes DownlinkTimeslotsCodes OPTIONAL + }, + tdd128 SEQUENCE { + pdsch-TimeslotsCodes DownlinkTimeslotsCodes-LCR-r4 OPTIONAL + } + } +} + +PDSCH-Info-r7 ::= SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + commonTimeslotInfo CommonTimeslotInfo OPTIONAL, + tddOption CHOICE { + tdd384 SEQUENCE { + pdsch-TimeslotsCodes DownlinkTimeslotsCodes OPTIONAL + }, + tdd768 SEQUENCE { + pdsch-TimeslotsCodes DownlinkTimeslotsCodes-VHCR OPTIONAL + }, + tdd128 SEQUENCE { + pdsch-TimeslotsCodes DownlinkTimeslotsCodes-LCR-r4 OPTIONAL + } + } +} + +PDSCH-Info-LCR-r4 ::= SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + commonTimeslotInfo CommonTimeslotInfo OPTIONAL, + pdsch-TimeslotsCodes DownlinkTimeslotsCodes-LCR-r4 OPTIONAL +} + +PDSCH-PowerControlInfo ::= SEQUENCE { + tpc-StepSizeTDD TPC-StepSizeTDD OPTIONAL, + ul-CCTrChTPCList UL-CCTrChTPCList OPTIONAL +} + +PDSCH-SHO-DCH-Info ::= SEQUENCE { + dsch-RadioLinkIdentifier DSCH-RadioLinkIdentifier, + rl-IdentifierList RL-IdentifierList OPTIONAL +} + +PDSCH-SysInfo ::= SEQUENCE { + pdsch-Identity PDSCH-Identity, + pdsch-Info PDSCH-Info, + dsch-TFS TransportFormatSet OPTIONAL, + dsch-TFCS TFCS OPTIONAL +} + +PDSCH-SysInfo-VHCR-r7 ::= SEQUENCE { + pdsch-Identity PDSCH-Identity, + pdsch-Info PDSCH-Info-r7, + dsch-TransportChannelsInfo DSCH-TransportChannelsInfo OPTIONAL, + dsch-TFCS TFCS OPTIONAL +} + +PDSCH-SysInfo-HCR-r5 ::= SEQUENCE { + pdsch-Identity PDSCH-Identity, + pdsch-Info PDSCH-Info, + dsch-TransportChannelsInfo DSCH-TransportChannelsInfo OPTIONAL, + dsch-TFCS TFCS OPTIONAL +} + +PDSCH-SysInfo-LCR-r4 ::= SEQUENCE { + pdsch-Identity PDSCH-Identity, + pdsch-Info PDSCH-Info-LCR-r4, + dsch-TFS TransportFormatSet OPTIONAL, + dsch-TFCS TFCS OPTIONAL +} + +PDSCH-SysInfoList ::= SEQUENCE (SIZE (1..maxPDSCH)) OF + PDSCH-SysInfo + +PDSCH-SysInfoList-VHCR-r7 ::= SEQUENCE (SIZE (1..maxPDSCH)) OF PDSCH-SysInfo-VHCR-r7 + +PDSCH-SysInfoList-HCR-r5 ::= SEQUENCE (SIZE (1..maxPDSCH)) OF PDSCH-SysInfo-HCR-r5 + +PDSCH-SysInfoList-LCR-r4 ::= SEQUENCE (SIZE (1..maxPDSCH)) OF + PDSCH-SysInfo-LCR-r4 + +PDSCH-SysInfoList-SFN ::= SEQUENCE (SIZE (1..maxPDSCH)) OF + SEQUENCE { + pdsch-SysInfo PDSCH-SysInfo, + sfn-TimeInfo SFN-TimeInfo OPTIONAL +} + +PDSCH-SysInfoList-SFN-HCR-r5 ::= SEQUENCE (SIZE (1..maxPDSCH)) OF + SEQUENCE { + pdsch-SysInfo PDSCH-SysInfo-HCR-r5, + sfn-TimeInfo SFN-TimeInfo OPTIONAL +} + +PDSCH-SysInfoList-SFN-LCR-r4 ::= SEQUENCE (SIZE (1..maxPDSCH)) OF + SEQUENCE { + pdsch-SysInfo PDSCH-SysInfo-LCR-r4, + sfn-TimeInfo SFN-TimeInfo OPTIONAL +} + +PersistenceScalingFactor ::= ENUMERATED { + psf0-9, psf0-8, psf0-7, psf0-6, + psf0-5, psf0-4, psf0-3, psf0-2 } + +PersistenceScalingFactorList ::= SEQUENCE (SIZE (1..maxASCpersist)) OF + PersistenceScalingFactor + +PI-CountPerFrame ::= ENUMERATED { + e18, e36, e72, e144 } + +PichChannelisationCodeList-LCR-r4 ::= SEQUENCE (SIZE (1..2)) OF + DL-TS-ChannelisationCode + +PICH-ForHSDPASupportedPaging ::= SEQUENCE { + hsdpa-AssociatedPichInfo PICH-Info, + hs-pdschChannelisationCode INTEGER(1..15) +} + +PICH-ForHSDPASupportedPaging-TDD128 ::= CHOICE { + implicit SEQUENCE { + occurrenceSequenceNumberOfPICH OccurrenceSequenceNumberOfPICH OPTIONAL + }, + explicit PICH-Info-LCR-r4 +} + +PICH-Info ::= CHOICE { + fdd SEQUENCE { + channelisationCode256 ChannelisationCode256, + pi-CountPerFrame PI-CountPerFrame, + sttd-Indicator BOOLEAN + }, + tdd SEQUENCE { + channelisationCode TDD-PICH-CCode OPTIONAL, + timeslot TimeslotNumber OPTIONAL, + midambleShiftAndBurstType MidambleShiftAndBurstType, + repetitionPeriodLengthOffset RepPerLengthOffset-PICH OPTIONAL, + pagingIndicatorLength PagingIndicatorLength DEFAULT pi4, + n-GAP N-GAP DEFAULT f4, + n-PCH N-PCH DEFAULT 2 + } +} + +PICH-Info-HCR-VHCR-r7 ::= SEQUENCE { + channelisationCode CHOICE { + tdd384 TDD-PICH-CCode, + tdd768 TDD768-PICH-CCode + } OPTIONAL, + timeslot TimeslotNumber OPTIONAL, + midambleShiftAndBurstType MidambleShiftAndBurstType, + repetitionPeriodLengthOffset RepPerLengthOffset-PICH OPTIONAL, + pagingIndicatorLength PagingIndicatorLength DEFAULT pi4, + n-GAP N-GAP DEFAULT f4, + n-PCH N-PCH DEFAULT 2 +} + +PICH-Info-LCR-r4 ::= SEQUENCE { + timeslot TimeslotNumber-LCR-r4 OPTIONAL, + pichChannelisationCodeList-LCR-r4 PichChannelisationCodeList-LCR-r4, + midambleShiftAndBurstType MidambleShiftAndBurstType-LCR-r4, + repetitionPeriodLengthOffset RepPerLengthOffset-PICH OPTIONAL, + pagingIndicatorLength PagingIndicatorLength DEFAULT pi4, + n-GAP N-GAP DEFAULT f4, + n-PCH N-PCH DEFAULT 2 +} + +PICH-PowerOffset ::= INTEGER (-10..5) + +PilotBits128 ::= ENUMERATED { + pb4, pb8 } + +PilotBits256 ::= ENUMERATED { + pb2, pb4, pb8 } + + -- Actual measurement power offset value = IE value * 0.5 +MeasurementPowerOffset ::= INTEGER (-12..26) + +PLCCH-Info ::= SEQUENCE { + plcchSequenceNumber INTEGER(1..14), + timeslotNumber TimeslotNumber-LCR-r4, + channelisationCode DL-TS-ChannelisationCode, + tpcCommandTargetRate TPC-CommandTargetRate +} + +PositionFixedOrFlexible ::= ENUMERATED { + fixed, + flexible } + +PowerControlAlgorithm ::= CHOICE { + algorithm1 TPC-StepSizeFDD, + algorithm2 NULL +} + +PowerControlGAP ::= INTEGER (0..255) + +PowerOffsetPilot-pdpdch ::= INTEGER (0..24) + +PowerOffsetTPC-pdpdch ::= INTEGER (0..24) + +PowerRampStep ::= INTEGER (1..8) + +PRACH-ChanCodes-LCR-r4 ::= SEQUENCE (SIZE (1..4)) OF + TDD-PRACH-CCode-LCR-r4 + +PRACH-ChanCodes-List-LCR ::= SEQUENCE (SIZE (1..2)) OF + TDD-PRACH-CCode-LCR-r4 + +PRACH-Definition-LCR-r4 ::= SEQUENCE { + timeslot TimeslotNumber-PRACH-LCR-r4, + prach-ChanCodes-LCR PRACH-ChanCodes-LCR-r4, + midambleShiftAndBurstType MidambleShiftAndBurstType-LCR-r4, + fpach-Info FPACH-Info-r4 +} + +PRACH-Information-LCR ::= SEQUENCE { + timeslot TimeslotNumber-PRACH-LCR-r4, + prach-ChanCodes-list-LCR PRACH-ChanCodes-List-LCR, + midambleShiftAndBurstType MidambleShiftAndBurstType-LCR-r4, + fpach-Info FPACH-Info-r4 OPTIONAL +} + +PRACH-Information-LCR-List ::= SEQUENCE (SIZE (1..maxPRACH-FPACH)) OF + PRACH-Information-LCR + +PRACH-Midamble ::= ENUMERATED { + direct, + direct-Inverted } + +PRACH-Partitioning ::= CHOICE { + fdd SEQUENCE (SIZE (1..maxASC)) OF + -- TABULAR: If only "NumASC+1" (with, NumASC+1 < maxASC) ASCSetting-FDD are listed, + -- the remaining (NumASC+2 through maxASC) ASCs are unspecified. + ASCSetting-FDD, + tdd SEQUENCE (SIZE (1..maxASC)) OF + -- TABULAR: If only "NumASC+1" (with, NumASC+1 < maxASC) ASCSetting-TDD are listed, + -- the remaining (NumASC+2 through maxASC) ASCs are unspecified. + ASCSetting-TDD +} + +PRACH-Partitioning-r7 ::= CHOICE { + fdd SEQUENCE (SIZE (1..maxASC)) OF + -- TABULAR: If only "NumASC+1" (with, NumASC+1 < maxASC) ASCSetting-FDD are listed, + -- the remaining (NumASC+2 through maxASC) ASCs are unspecified. + ASCSetting-FDD, + tdd SEQUENCE (SIZE (1..maxASC)) OF + -- TABULAR: If only "NumASC+1" (with, NumASC+1 < maxASC) ASCSetting-TDD are listed, + -- the remaining (NumASC+2 through maxASC) ASCs are unspecified. + ASCSetting-TDD-r7 +} + +PRACH-Partitioning-LCR-r4 ::= SEQUENCE (SIZE (1..maxASC)) OF + -- TABULAR: If only "NumASC+1" (with, NumASC+1 < maxASC) ASCSetting-TDD-LCR-r4 are listed, + -- the remaining (NumASC+2 through maxASC) ASCs are unspecified. + ASCSetting-TDD-LCR-r4 + +PRACH-PowerOffset ::= SEQUENCE { + powerRampStep PowerRampStep, + preambleRetransMax PreambleRetransMax +} + +PRACH-PreambleForEnhancedUplink ::= SEQUENCE { + availableSignatures AvailableSignatures OPTIONAL, + e-ai-Indication BOOLEAN, + preambleScramblingCodeWordNumber PreambleScramblingCodeWordNumber OPTIONAL, + availableSubChannelNumbers AvailableSubChannelNumbers OPTIONAL, + prach-Partitioning PRACH-Partitioning-r7 OPTIONAL, + persistenceScalingFactorList PersistenceScalingFactorList OPTIONAL, + ac-To-ASC-MappingTable AC-To-ASC-MappingTable OPTIONAL, + primaryCPICH-TX-Power PrimaryCPICH-TX-Power OPTIONAL, + constantValue ConstantValue OPTIONAL, + prach-PowerOffset PRACH-PowerOffset OPTIONAL, + rach-TransmissionParameters RACH-TransmissionParameters OPTIONAL, + aich-Info AICH-Info OPTIONAL, + powerOffsetPp-e INTEGER (-5..10) +} +PRACH-PreambleForEnhancedUplinkExt ::= SEQUENCE { + availableSignatures AvailableSignatures, + preambleScramblingCodeWordNumber PreambleScramblingCodeWordNumber, + aich-Info AICH-Info-Compressed OPTIONAL +} + +PRACH-PreambleForEnhancedUplinkExtList ::= SEQUENCE (SIZE (1..maxPRACH-EUL)) OF + PRACH-PreambleForEnhancedUplinkExtWithWeight + + +PRACH-PreambleForEnhancedUplinkExtWithWeight ::= SEQUENCE { + prach-PreambleForEnhancedUplinkExt PRACH-PreambleForEnhancedUplinkExt, + -- Actual value weight = IE value * 0.2 + weight INTEGER (1..5) OPTIONAL +} + + + + +PRACH-RACH-Info ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + availableSignatures AvailableSignatures, + availableSF SF-PRACH, + preambleScramblingCodeWordNumber PreambleScramblingCodeWordNumber, + puncturingLimit PuncturingLimit, + availableSubChannelNumbers AvailableSubChannelNumbers + }, + tdd SEQUENCE { + timeslot TimeslotNumber, + channelisationCodeList TDD-PRACH-CCodeList, + prach-Midamble PRACH-Midamble + } + } +} + +PRACH-RACH-Info-VHCR-r7 ::= SEQUENCE { + timeslot TimeslotNumber, + channelisationCodeList TDD768-PRACH-CCodeList, + prach-Midamble PRACH-Midamble +} + +PRACH-RACH-Info-LCR-v770ext ::= SEQUENCE { + e-RUCCH-Sync-UL-Codes-Bitmap Sync-UL-Codes-Bitmap +} + +PRACH-RACH-Info-LCR-r4 ::= SEQUENCE { + sync-UL-Info SYNC-UL-Info-r4, + prach-DefinitionList SEQUENCE (SIZE (1..maxPRACH-FPACH)) OF + PRACH-Definition-LCR-r4 +} + +PRACH-SystemInformation ::= SEQUENCE { + prach-RACH-Info PRACH-RACH-Info, + transportChannelIdentity TransportChannelIdentity, + rach-TransportFormatSet TransportFormatSet OPTIONAL, + rach-TFCS TFCS OPTIONAL, + prach-Partitioning PRACH-Partitioning OPTIONAL, + persistenceScalingFactorList PersistenceScalingFactorList OPTIONAL, + ac-To-ASC-MappingTable AC-To-ASC-MappingTable OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-TX-Power PrimaryCPICH-TX-Power OPTIONAL, + constantValue ConstantValue OPTIONAL, + prach-PowerOffset PRACH-PowerOffset OPTIONAL, + rach-TransmissionParameters RACH-TransmissionParameters OPTIONAL, + aich-Info AICH-Info OPTIONAL + }, + tdd NULL + } +} + +PRACH-SystemInformation-VHCR-r7 ::= SEQUENCE { + prach-RACH-Info PRACH-RACH-Info-VHCR-r7, + prach-Partitioning PRACH-Partitioning-r7 OPTIONAL +} + +PRACH-SystemInformation-LCR-r4 ::= SEQUENCE { + prach-RACH-Info-LCR PRACH-RACH-Info-LCR-r4, + rach-TransportFormatSet-LCR TransportFormatSet-LCR OPTIONAL, + prach-Partitioning-LCR PRACH-Partitioning-LCR-r4 OPTIONAL +} + +PRACH-SystemInformation-LCR-v770ext ::= SEQUENCE { + prach-RACH-Info-LCR PRACH-RACH-Info-LCR-v770ext +} + +PRACH-SystemInformationList ::= SEQUENCE (SIZE (1..maxPRACH)) OF + PRACH-SystemInformation + +PRACH-SystemInformationList-VHCR-r7 ::= SEQUENCE (SIZE (1..maxPRACH)) OF + PRACH-SystemInformation-VHCR-r7 + +PRACH-SystemInformationList-LCR-r4 ::= SEQUENCE (SIZE (1..maxPRACH)) OF + PRACH-SystemInformation-LCR-r4 + +PRACH-SystemInformationList-LCR-v770ext ::= SEQUENCE (SIZE (1..maxPRACH)) OF + PRACH-SystemInformation-LCR-v770ext + +PreambleRetransMax ::= INTEGER (1..64) + +PreambleScramblingCodeWordNumber ::= INTEGER (0..15) + +PreDefPhyChConfiguration ::= SEQUENCE { + ul-DPCH-InfoPredef UL-DPCH-InfoPredef, + dl-CommonInformationPredef DL-CommonInformationPredef OPTIONAL +} + +PreDefPhyChConfiguration-v770ext ::= SEQUENCE { + ul-DPCH-InfoPredef UL-DPCH-InfoPredef-v770ext +} + +PrimaryCCPCH-Info ::= CHOICE { + fdd SEQUENCE { + tx-DiversityIndicator BOOLEAN + }, + tdd SEQUENCE { + -- syncCase should be ignored for 1.28Mcps TDD mode + syncCase CHOICE { + syncCase1 SEQUENCE { + timeslot TimeslotNumber + }, + syncCase2 SEQUENCE { + timeslotSync2 TimeslotSync2 + } + } OPTIONAL, + cellParametersID CellParametersID OPTIONAL, + sctd-Indicator BOOLEAN + } +} + +PrimaryCCPCH-Info-r4 ::= CHOICE { + fdd SEQUENCE { + tx-DiversityIndicator BOOLEAN + }, + tdd SEQUENCE { + tddOption CHOICE { + tdd384-tdd768 SEQUENCE { + syncCase CHOICE { + syncCase1 SEQUENCE { + timeslot TimeslotNumber + }, + syncCase2 SEQUENCE { + timeslotSync2 TimeslotSync2 + } + } OPTIONAL + }, + tdd128 SEQUENCE { + tstd-Indicator BOOLEAN + } + }, + cellParametersID CellParametersID OPTIONAL, + sctd-Indicator BOOLEAN + } +} + +PrimaryCCPCH-Info-LCR-r4 ::= SEQUENCE { + tstd-Indicator BOOLEAN, + cellParametersID CellParametersID OPTIONAL, + sctd-Indicator BOOLEAN +} + +-- For 1.28Mcps TDD, the following IE includes elements for the PCCPCH Info additional to those +-- in PrimaryCCPCH-Info +PrimaryCCPCH-Info-LCR-r4-ext ::= SEQUENCE { + tstd-Indicator BOOLEAN +} + +PrimaryCCPCH-InfoPost ::= SEQUENCE { + syncCase CHOICE { + syncCase1 SEQUENCE { + timeslot TimeslotNumber + }, + syncCase2 SEQUENCE { + timeslotSync2 TimeslotSync2 + } + }, + cellParametersID CellParametersID, + sctd-Indicator BOOLEAN +} + +PrimaryCCPCH-InfoPostTDD-LCR-r4 ::= SEQUENCE { + tstd-Indicator BOOLEAN, + cellParametersID CellParametersID, + sctd-Indicator BOOLEAN +} + +PrimaryCCPCH-TX-Power ::= INTEGER (6..43) + +PrimaryCPICH-Info ::= SEQUENCE { + primaryScramblingCode PrimaryScramblingCode +} + +PrimaryCPICH-TX-Power ::= INTEGER (-10..50) + +PrimaryScramblingCode ::= INTEGER (0..511) + +PuncturingLimit ::= ENUMERATED { + pl0-40, pl0-44, pl0-48, pl0-52, pl0-56, + pl0-60, pl0-64, pl0-68, pl0-72, pl0-76, + pl0-80, pl0-84, pl0-88, pl0-92, pl0-96, pl1 } + +PUSCH-CapacityAllocationInfo ::= SEQUENCE { + pusch-Allocation CHOICE { + pusch-AllocationPending NULL, + pusch-AllocationAssignment SEQUENCE { + pusch-AllocationPeriodInfo AllocationPeriodInfo, + pusch-PowerControlInfo UL-TargetSIR OPTIONAL, + configuration CHOICE { + old-Configuration SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + pusch-Identity PUSCH-Identity + }, + new-Configuration SEQUENCE { + pusch-Info PUSCH-Info, + pusch-Identity PUSCH-Identity OPTIONAL + } + } + } + } +} + +PUSCH-CapacityAllocationInfo-r4 ::= SEQUENCE { + pusch-Allocation CHOICE { + pusch-AllocationPending NULL, + pusch-AllocationAssignment SEQUENCE { + pusch-AllocationPeriodInfo AllocationPeriodInfo, + pusch-PowerControlInfo PUSCH-PowerControlInfo-r4 OPTIONAL, + configuration CHOICE { + old-Configuration SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + pusch-Identity PUSCH-Identity + }, + new-Configuration SEQUENCE { + pusch-Info PUSCH-Info-r4, + pusch-Identity PUSCH-Identity OPTIONAL + } + } + } + } +} + +PUSCH-CapacityAllocationInfo-r7 ::= SEQUENCE { + pusch-Allocation CHOICE { + pusch-AllocationPending NULL, + pusch-AllocationAssignment SEQUENCE { + pusch-AllocationPeriodInfo AllocationPeriodInfo, + pusch-PowerControlInfo PUSCH-PowerControlInfo-r7 OPTIONAL, + configuration CHOICE { + old-Configuration SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + pusch-Identity PUSCH-Identity + }, + new-Configuration SEQUENCE { + pusch-Info PUSCH-Info-VHCR, + pusch-Identity PUSCH-Identity OPTIONAL + } + } + } + } +} + +PUSCH-Identity ::= INTEGER (1..hiPUSCHidentities) + +PUSCH-Info ::= SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + commonTimeslotInfo CommonTimeslotInfo OPTIONAL, + pusch-TimeslotsCodes UplinkTimeslotsCodes OPTIONAL +} + +PUSCH-Info-r4 ::= SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + commonTimeslotInfo CommonTimeslotInfo OPTIONAL, + tddOption CHOICE { + tdd384 SEQUENCE { + pusch-TimeslotsCodes UplinkTimeslotsCodes OPTIONAL + }, + tdd128 SEQUENCE { + pusch-TimeslotsCodes UplinkTimeslotsCodes-LCR-r4 OPTIONAL + } + } +} + +PUSCH-Info-VHCR ::= SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + commonTimeslotInfo CommonTimeslotInfo OPTIONAL, + pusch-TimeslotsCodes-VHCR UplinkTimeslotsCodes-VHCR OPTIONAL +} + +PUSCH-Info-LCR-r4 ::= SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + + commonTimeslotInfo CommonTimeslotInfo OPTIONAL, + pusch-TimeslotsCodes UplinkTimeslotsCodes-LCR-r4 OPTIONAL +} + +PUSCH-PowerControlInfo-r4 ::= SEQUENCE { + -- The IE ul-TargetSIR corresponds to PRX-PUSCHdes for 1.28Mcps TDD + -- Actual value PRX-PUSCHdes = (value of IE "ul-TargetSIR" - 120) + ul-TargetSIR UL-TargetSIR, + tddOption CHOICE { + tdd384 NULL, + tdd128 SEQUENCE { + tpc-StepSize TPC-StepSizeTDD OPTIONAL + } + } +} + +PUSCH-PowerControlInfo-r7 ::= SEQUENCE { + -- The IE ul-TargetSIR corresponds to PRX-PUSCHdes for 1.28Mcps TDD + -- Actual value PRX-PUSCHdes = (value of IE "ul-TargetSIR" - 120) + ul-TargetSIR UL-TargetSIR, + tddOption CHOICE { + tdd384 NULL, + tdd768 NULL, + tdd128 SEQUENCE { + tpc-StepSize TPC-StepSizeTDD OPTIONAL + } + } +} + +PUSCH-SysInfo ::= SEQUENCE { + pusch-Identity PUSCH-Identity, + pusch-Info PUSCH-Info, + usch-TFS TransportFormatSet OPTIONAL, + usch-TFCS TFCS OPTIONAL +} + +PUSCH-SysInfo-VHCR ::= SEQUENCE { + pusch-Identity PUSCH-Identity, + pusch-Info-VHCR PUSCH-Info-VHCR, + usch-TransportChannelsInfo USCH-TransportChannelsInfo OPTIONAL, + usch-TFCS TFCS OPTIONAL +} + +PUSCH-SysInfo-HCR-r5 ::= SEQUENCE { + pusch-Identity PUSCH-Identity, + pusch-Info PUSCH-Info, + usch-TransportChannelsInfo USCH-TransportChannelsInfo OPTIONAL, + usch-TFCS TFCS OPTIONAL +} + +PUSCH-SysInfo-LCR-r4 ::= SEQUENCE { + pusch-Identity PUSCH-Identity, + pusch-Info PUSCH-Info-LCR-r4, + usch-TFS TransportFormatSet OPTIONAL, + usch-TFCS TFCS OPTIONAL +} + +PUSCH-SysInfoList ::= SEQUENCE (SIZE (1..maxPUSCH)) OF + PUSCH-SysInfo + +PUSCH-SysInfoList-HCR-r5 ::= SEQUENCE (SIZE (1..maxPUSCH)) OF PUSCH-SysInfo-HCR-r5 + +PUSCH-SysInfoList-LCR-r4 ::= SEQUENCE (SIZE (1..maxPUSCH)) OF + PUSCH-SysInfo-LCR-r4 + +PUSCH-SysInfoList-SFN ::= SEQUENCE (SIZE (1..maxPUSCH)) OF + SEQUENCE { + pusch-SysInfo PUSCH-SysInfo, + sfn-TimeInfo SFN-TimeInfo OPTIONAL +} + +PUSCH-SysInfoList-SFN-HCR-r5 ::= SEQUENCE (SIZE (1..maxPUSCH)) OF + SEQUENCE { + pusch-SysInfo PUSCH-SysInfo-HCR-r5, + sfn-TimeInfo SFN-TimeInfo OPTIONAL +} + +PUSCH-SysInfoList-SFN-LCR-r4 ::= SEQUENCE (SIZE (1..maxPUSCH)) OF + SEQUENCE { + pusch-SysInfo PUSCH-SysInfo-LCR-r4, + sfn-TimeInfo SFN-TimeInfo OPTIONAL +} + +PUSCH-SysInfoList-SFN-VHCR ::= SEQUENCE (SIZE (1..maxPUSCH)) OF + SEQUENCE { + pusch-SysInfo-VHCR PUSCH-SysInfo-VHCR, + sfn-TimeInfo SFN-TimeInfo OPTIONAL +} + +RACH-TransmissionParameters ::= SEQUENCE { + mmax INTEGER (1..32), + nb01Min NB01, + nb01Max NB01 +} + +ReducedScramblingCodeNumber ::= INTEGER (0..8191) + +Reference-Beta-QPSK ::= SEQUENCE { + reference-Code-Rate INTEGER (0..10), + reference-Beta INTEGER (-15..16) +} + +Reference-Beta-16QAM ::= SEQUENCE { + reference-Code-Rate INTEGER (0..10), + reference-Beta INTEGER (-15..16) +} + +RepetitionPeriodAndLength ::= CHOICE { + repetitionPeriod1 NULL, + -- repetitionPeriod2 could just as well be NULL also. + repetitionPeriod2 INTEGER (1..1), + repetitionPeriod4 INTEGER (1..3), + repetitionPeriod8 INTEGER (1..7), + repetitionPeriod16 INTEGER (1..15), + repetitionPeriod32 INTEGER (1..31), + repetitionPeriod64 INTEGER (1..63) +} + +RepetitionPeriodLengthAndOffset ::= CHOICE { + repetitionPeriod1 NULL, + repetitionPeriod2 SEQUENCE { + length NULL, + offset INTEGER (0..1) + }, + repetitionPeriod4 SEQUENCE { + length INTEGER (1..3), + offset INTEGER (0..3) + }, + repetitionPeriod8 SEQUENCE { + length INTEGER (1..7), + offset INTEGER (0..7) + }, + repetitionPeriod16 SEQUENCE { + length INTEGER (1..15), + offset INTEGER (0..15) + }, + repetitionPeriod32 SEQUENCE { + length INTEGER (1..31), + offset INTEGER (0..31) + }, + repetitionPeriod64 SEQUENCE { + length INTEGER (1..63), + offset INTEGER (0..63) + } +} + +RepetitionPeriodAndLengthForSPS ::= CHOICE { + repetitionPeriod1 NULL, + -- repetitionPeriod2 could just as well be NULL also. + repetitionPeriod2 INTEGER (1..1), + repetitionPeriod4 INTEGER (1..3), + repetitionPeriod8 INTEGER (1..7), + repetitionPeriod16 INTEGER (1..15), + repetitionPeriod32 INTEGER (1..31) +} + +ReplacedPDSCH-CodeInfo ::= SEQUENCE { + tfci-Field2 MaxTFCI-Field2Value, + spreadingFactor SF-PDSCH, + codeNumber CodeNumberDSCH, + multiCodeInfo MultiCodeInfo +} + +ReplacedPDSCH-CodeInfoList ::= SEQUENCE (SIZE (1..maxTFCI-2-Combs)) OF + ReplacedPDSCH-CodeInfo + +RepPerLengthOffset-PICH ::= CHOICE { + rpp4-2 INTEGER (0..3), + rpp8-2 INTEGER (0..7), + rpp8-4 INTEGER (0..7), + rpp16-2 INTEGER (0..15), + rpp16-4 INTEGER (0..15), + rpp32-2 INTEGER (0..31), + rpp32-4 INTEGER (0..31), + rpp64-2 INTEGER (0..63), + rpp64-4 INTEGER (0..63) +} + +RepPerLengthOffset-MICH ::= CHOICE { + rpp4-2 INTEGER (0..3), + rpp8-2 INTEGER (0..7), + rpp8-4 INTEGER (0..7), + rpp16-2 INTEGER (0..15), + rpp16-4 INTEGER (0..15), + rpp32-2 INTEGER (0..31), + rpp32-4 INTEGER (0..31), + rpp64-2 INTEGER (0..63), + rpp64-4 INTEGER (0..63) +} + +RestrictedTrCH ::= SEQUENCE { + dl-restrictedTrCh-Type DL-TrCH-Type, + restrictedDL-TrCH-Identity TransportChannelIdentity, + allowedTFIList AllowedTFI-List +} + +RestrictedTrCH-InfoList ::= SEQUENCE (SIZE(1..maxTrCH)) OF + RestrictedTrCH + +RL-AdditionInformation ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL, + -- dummy and dummy2 are not used in this version of specification + -- and the IEs should be ignored. + dummy BOOLEAN, + dummy2 SCCPCH-InfoForFACH OPTIONAL +} + +RL-AdditionInformation-r6 ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + cell-Id CellIdentity OPTIONAL, + dl-dpchInfo CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r5, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r6 + }, + e-HICH-Information E-HICH-Information OPTIONAL, + e-RGCH-Information E-RGCH-Information OPTIONAL +} + +RL-AdditionInformation-r7 ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + cell-Id CellIdentity OPTIONAL, + dl-dpchInfo CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r5, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7 + }, + e-HICH-Information E-HICH-Information OPTIONAL, + e-RGCH-Information E-RGCH-Information OPTIONAL +} + +RL-AdditionInformation-r8 ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + cell-Id CellIdentity OPTIONAL, + dl-dpchInfo CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r5, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7 + }, + e-HICH-Information E-HICH-Information OPTIONAL, + e-RGCH-Information E-RGCH-Information OPTIONAL, + targetCellPreconfigInfo TargetCellPreconfigInfo OPTIONAL +} + +RL-AdditionInformation-r9 ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + cell-Id CellIdentity OPTIONAL, + dl-dpchInfo CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r5, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7 + }, + e-HICH-Information E-HICH-Information OPTIONAL, + e-RGCH-Information E-RGCH-Information OPTIONAL, + targetCellPreconfigInfo TargetCellPreconfigInfo-r9 OPTIONAL +} + +RL-AdditionInformation-r10 ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + cell-Id CellIdentity OPTIONAL, + dl-dpchInfo CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r5, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7 + }, + e-HICH-Information E-HICH-Information OPTIONAL, + e-RGCH-Information E-RGCH-Information OPTIONAL, + targetCellPreconfigInfo TargetCellPreconfigInfo-r10 OPTIONAL +} + +RL-AdditionInformation-vb50ext ::= SEQUENCE { + targetCellPreconfigInfo TargetCellPreconfigInfo-vb50ext OPTIONAL +} + +RL-AdditionInformation-r11 ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + cell-Id CellIdentity OPTIONAL, + dl-dpchInfo CHOICE { + dl-DPCH-InfoPerRL DL-DPCH-InfoPerRL-r5, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7 + }, + e-HICH-Information E-HICH-Information-r11 OPTIONAL, + e-RGCH-Information E-RGCH-Information OPTIONAL, + f-TPICH-Information F-TPICH-Information OPTIONAL, + targetCellPreconfigInfo TargetCellPreconfigInfo-r11 OPTIONAL +} + +RL-AdditionInformation-v6b0ext ::= SEQUENCE { + sttdIndication STTDIndication OPTIONAL +} + +RL-AdditionInformation-v890ext ::= SEQUENCE { + targetCellPreconfigInfo TargetCellPreconfigInfo-v890ext OPTIONAL +} + +RL-AdditionInformation-v950ext ::= SEQUENCE { + targetCellPreconfigInfo TargetCellPreconfigInfo-v950ext OPTIONAL +} + +RL-AdditionInformationList ::= SEQUENCE (SIZE (1..maxRL-1)) OF + RL-AdditionInformation + +RL-AdditionInformationList-r6 ::= SEQUENCE (SIZE (1..maxRL-1)) OF + RL-AdditionInformation-r6 + +RL-AdditionInformationList-r7 ::= SEQUENCE (SIZE (1..maxRL-1)) OF + RL-AdditionInformation-r7 + +RL-AdditionInformation-list-v6b0ext ::= SEQUENCE (SIZE (1..maxRL)) OF + RL-AdditionInformation-v6b0ext + +RL-AdditionInformationList-r8 ::= SEQUENCE (SIZE(1..maxRL-1)) OF + RL-AdditionInformation-r8 + +RL-AdditionInformationList-v890ext ::= SEQUENCE (SIZE (1..maxRL-1)) OF + RL-AdditionInformation-v890ext + +RL-AdditionInformationList-r9 ::= SEQUENCE (SIZE(1..maxRL-1)) OF + RL-AdditionInformation-r9 + +RL-AdditionInformationList-v950ext ::= SEQUENCE (SIZE(1..maxRL-1)) OF + RL-AdditionInformation-v950ext + +RL-AdditionInformationList-r10 ::= SEQUENCE (SIZE(1..maxRL-1)) OF + RL-AdditionInformation-r10 + +RL-AdditionInformationList-vb50ext ::= SEQUENCE (SIZE(1..maxRL-1)) OF + RL-AdditionInformation-vb50ext + +RL-AdditionInformationList-r11 ::= SEQUENCE (SIZE(1..maxRL-1)) OF + RL-AdditionInformation-r11 + +RL-AdditionInformationList-SecULFreq ::= SEQUENCE (SIZE(1..maxEDCHRL-1)) OF + RL-AdditionInformation-SecULFreq + + +RL-AdditionInformation-SecULFreq ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + cell-id CellIdentity OPTIONAL, + dl-FDPCH-InfoPerRL DL-FDPCH-InfoPerRL-r7, + e-HICH-Information E-HICH-Information, + e-RGCH-Information E-RGCH-Information OPTIONAL +} + +RL-IdentifierList ::= SEQUENCE (SIZE (1..maxRL)) OF + PrimaryCPICH-Info + +RL-RemovalInformationList ::= SEQUENCE (SIZE (1..maxRL)) OF + PrimaryCPICH-Info + +RL-RemovalInformationList-SecULFreq ::= SEQUENCE (SIZE(1..maxEDCHRL)) OF + PrimaryCPICH-Info + +RPP ::= ENUMERATED { + mode0, mode1 } + +S-Field ::= ENUMERATED { + e1bit, e2bits } + +SCCPCH-ChannelisationCode ::= ENUMERATED { + cc16-1, cc16-2, cc16-3, cc16-4, + cc16-5, cc16-6, cc16-7, cc16-8, + cc16-9, cc16-10, cc16-11, cc16-12, + cc16-13, cc16-14, cc16-15, cc16-16 } + +SCCPCH-ChannelisationCode-VHCR ::= ENUMERATED { + cc32-1, cc32-2, cc32-3, cc32-4, + cc32-5, cc32-6, cc32-7, cc32-8, + cc32-9, cc32-10, cc32-11, cc32-12, + cc32-13, cc32-14, cc32-15, cc32-16, + cc32-17, cc32-18, cc32-19, cc32-20, + cc32-21, cc32-22, cc32-23, cc32-24, + cc32-25, cc32-26, cc32-27, cc32-28, + cc32-29, cc32-30, cc32-31, cc32-32 } + +SCCPCH-ChannelisationCodeList ::= SEQUENCE (SIZE (1..16)) OF + SCCPCH-ChannelisationCode + +SCCPCH-ChannelisationCodeList-VHCR ::= SEQUENCE (SIZE (1..32)) OF + SCCPCH-ChannelisationCode-VHCR + +SCCPCH-InfoForFACH ::= SEQUENCE { + secondaryCCPCH-Info SecondaryCCPCH-Info, + tfcs TFCS, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + fach-PCH-InformationList FACH-PCH-InformationList, + sib-ReferenceListFACH SIB-ReferenceListFACH + }, + tdd SEQUENCE { + fach-PCH-InformationList FACH-PCH-InformationList + } + } +} + +SCCPCH-InfoForFACH-r4 ::= SEQUENCE { + secondaryCCPCH-Info SecondaryCCPCH-Info-r4, + tfcs TFCS, + fach-PCH-InformationList FACH-PCH-InformationList, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + sib-ReferenceListFACH SIB-ReferenceListFACH + }, + tdd NULL + } +} + +SCCPCH-SystemInformation ::= SEQUENCE { + secondaryCCPCH-Info SecondaryCCPCH-Info, + tfcs TFCS OPTIONAL, + fach-PCH-InformationList FACH-PCH-InformationList OPTIONAL, + pich-Info PICH-Info OPTIONAL +} + +SCCPCH-SystemInformation-LCR-r4-ext ::= SEQUENCE { + secondaryCCPCH-LCR-Extensions SecondaryCCPCH-Info-LCR-r4-ext, + -- pich-Info in the SCCPCH-SystemInformation IE shall be absent, + -- and instead the following used. + pich-Info PICH-Info-LCR-r4 OPTIONAL +} + +SCCPCH-SystemInformation-HCR-VHCR-r7 ::= SEQUENCE { + secondaryCCPCH-Info SecondaryCCPCH-Info-HCR-VHCR-r7, + tfcs TFCS OPTIONAL, + fach-PCH-InformationList FACH-PCH-InformationList OPTIONAL, + pich-Info PICH-Info-HCR-VHCR-r7 OPTIONAL +} + +SCCPCH-SystemInformationList ::= SEQUENCE (SIZE (1..maxSCCPCH)) OF + SCCPCH-SystemInformation + +SCCPCH-SystemInformationList-HCR-VHCR-r7 ::= SEQUENCE (SIZE (1..maxSCCPCH)) OF + SCCPCH-SystemInformation-HCR-VHCR-r7 + +-- SCCPCH-SystemInformationList-LCR-r4-ext includes elements additional to those in +-- SCCPCH-SystemInformationList for the 1.28Mcps TDD. The order of the IEs +-- indicates which SCCPCH-SystemInformation-LCR-r4-ext IE extends which +-- SCCPCH-SystemInformation IE. +SCCPCH-SystemInformationList-LCR-r4-ext ::= SEQUENCE (SIZE (1..maxSCCPCH)) OF + SCCPCH-SystemInformation-LCR-r4-ext + +-- The SCCPCH-SystemInformation-MBMS-r6 is used for an S-CCPCH dedicated for MBMS purposes. +SCCPCH-SystemInformation-MBMS-r6 ::= SEQUENCE { + secondaryCCPCHInfo-MBMS SecondaryCCPCHInfo-MBMS-r6, + transportFormatCombinationSet TFCS, + fachCarryingMCCH SEQUENCE { + mcch-transportFormatSet TransportFormatSet, + mcch-ConfigurationInfo MBMS-MCCH-ConfigurationInfo-r6 + }, + fachCarryingMTCH-List MBMS-FACHCarryingMTCH-List OPTIONAL, + -- If schedulingInformation is provided + fachCarryingMSCH SEQUENCE { + msch-transportFormatSet TransportFormatSet, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy MBMS-MSCH-ConfigurationInfo-r6 + } OPTIONAL +} + +-- The SCCPCH-SystemInformation-MBMS-r7 is used for an S-CCPCH dedicated for MBMS purposes. +SCCPCH-SystemInformation-MBMS-r7 ::= SEQUENCE { + secondaryCCPCHInfo-MBMS SecondaryCCPCHInfo-MBMS-r7, + transportFormatCombinationSet TFCS, + fachCarryingMCCH SEQUENCE { + mcch-transportFormatSet TransportFormatSet, + mcch-ConfigurationInfo MBMS-MCCH-ConfigurationInfo-r6 + }, + fachCarryingMTCH-List MBMS-FACHCarryingMTCH-List OPTIONAL, + -- If schedulingInformation is provided + fachCarryingMSCH SEQUENCE { + msch-transportFormatSet TransportFormatSet + } OPTIONAL +} + +S-CPICH-PowerOffset-MIMO ::= INTEGER (-6..0) + +S-CPICH-PowerOffset-4x4MIMO ::= INTEGER (-12..0) + +ScheduledTransmissionConfiguration ::= SEQUENCE { + common-E-DCH-ResourceInfoListExt SEQUENCE (SIZE (1..maxEDCHs)) OF + Common-E-DCH-ResourceInfoListExt +} + +ScramblingCodeChange ::= ENUMERATED { + codeChange, noCodeChange } + +ScramblingCodeType ::= ENUMERATED { + shortSC, + longSC } + +SecondaryCCPCH-Info ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + -- dummy1 is not used in this version of the specification and should be ignored. + dummy1 PCPICH-UsageForChannelEst, + -- dummy2 is not used in this version of the specification. It should not + -- be sent and if received it should be ignored. + dummy2 SecondaryCPICH-Info OPTIONAL, + secondaryScramblingCode SecondaryScramblingCode OPTIONAL, + sttd-Indicator BOOLEAN, + sf-AndCodeNumber SF256-AndCodeNumber, + pilotSymbolExistence BOOLEAN, + tfci-Existence BOOLEAN, + positionFixedOrFlexible PositionFixedOrFlexible, + timingOffset TimingOffset DEFAULT 0 + }, + tdd SEQUENCE { + -- TABULAR: the offset is included in CommonTimeslotInfoSCCPCH + commonTimeslotInfo CommonTimeslotInfoSCCPCH, + individualTimeslotInfo IndividualTimeslotInfo, + channelisationCode SCCPCH-ChannelisationCodeList + } + } +} + +SecondaryCCPCH-Info-r4 ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + secondaryScramblingCode SecondaryScramblingCode OPTIONAL, + sttd-Indicator BOOLEAN, + sf-AndCodeNumber SF256-AndCodeNumber, + pilotSymbolExistence BOOLEAN, + tfci-Existence BOOLEAN, + positionFixedOrFlexible PositionFixedOrFlexible, + timingOffset TimingOffset DEFAULT 0 + }, + tdd SEQUENCE { + -- TABULAR: the offset is included in CommonTimeslotInfoSCCPCH + commonTimeslotInfo CommonTimeslotInfoSCCPCH, + tddOption CHOICE { + tdd384 SEQUENCE { + individualTimeslotInfo IndividualTimeslotInfo + }, + tdd128 SEQUENCE { + individualTimeslotInfo IndividualTimeslotInfo-LCR-r4 + } + }, + channelisationCode SCCPCH-ChannelisationCodeList + } + } +} + +SecondaryCCPCH-Info-HCR-VHCR-r7 ::= SEQUENCE { + modeSpecificInfo CHOICE { + tdd384 SEQUENCE { + individualTimeslotInfo IndividualTimeslotInfo-r7, + channelisationCode SCCPCH-ChannelisationCodeList + }, + tdd768 SEQUENCE { + individualTimeslotInfo IndividualTimeslotInfo-VHCR, + channelisationCode SCCPCH-ChannelisationCodeList-VHCR + } + } +} + +SecondaryCCPCH-Info-LCR-r4-ext ::= SEQUENCE { + individualTimeslotLCR-Ext IndividualTimeslotInfo-LCR-r4-ext +} + +SecondaryCCPCHFrameType2Info ::= SEQUENCE { + subFrameNumber INTEGER (0..4), + dl-ChannelisationCodes DL-ChannelCodes-MBSFN-IMB384, + modulation CHOICE { + modQPSK NULL, + mod16QAM SEQUENCE { + cpich-SecCCPCH-PowerOffset INTEGER (-11..4) + } + } +} + +SecondaryCCPCHInfo-MBMS-r6 ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + secondaryScramblingCode SecondaryScramblingCode OPTIONAL, + sttd-Indicator BOOLEAN, + sf-AndCodeNumber SF256-AndCodeNumber, + timingOffset TimingOffset DEFAULT 0 + }, + tdd384 SEQUENCE { + commonTimeslotInfoMBMS CommonTimeslotInfoMBMS, + downlinkTimeslotsCodes DownlinkTimeslotsCodes + }, + tdd128 SEQUENCE { + commonTimeslotInfoMBMS CommonTimeslotInfoMBMS, + downlinkTimeslotsCodes DownlinkTimeslotsCodes-LCR-r4 + } + } +} + +SecondaryCCPCHInfo-MBMS-r7 ::= SEQUENCE { + modeSpecificInfo CHOICE { + -- The CHOICE fdd is used for both "fdd" and "3.84 Mcps TDD MBSFN IMB" + fdd SEQUENCE { + -- The IE secondaryScramblingCode is not applicable for "3.84 Mcps TDD MBSFN IMB" + secondaryScramblingCode SecondaryScramblingCode OPTIONAL, + -- The IE sttd-Indicator is not applicable for cells operating in MBSFN mode, + -- the UE behaviour is unspecified + sttd-Indicator BOOLEAN, + sf-AndCodeNumber SF256-AndCodeNumber, + -- The IE timingOffset is not applicable for "3.84 Mcps TDD MBSFN IMB" + timingOffset TimingOffset DEFAULT 0, + modulation CHOICE { + modQPSK NULL, + -- The CHOICE mod16QAM is not applicable for MCCH in "3.84 Mcps TDD MBSFN IMB" + mod16QAM INTEGER (-11..4) + } OPTIONAL + }, + tdd384 SEQUENCE { + commonTimeslotInfoMBMS CommonTimeslotInfoMBMS, + downlinkTimeslotsCodes DownlinkTimeslotsCodes-r7, + modulation ENUMERATED { modQPSK, mod16QAM } + }, + tdd768 SEQUENCE { + commonTimeslotInfoMBMS CommonTimeslotInfoMBMS, + downlinkTimeslotsCodes DownlinkTimeslotsCodes-VHCR, + modulation ENUMERATED { modQPSK, mod16QAM } + }, + tdd128 SEQUENCE { + commonTimeslotInfoMBMS CommonTimeslotInfoMBMS, + downlinkTimeslotsCodes DownlinkTimeslotsCodes-LCR-r4, + mbsfnSpecialTimeSlot TimeSlotLCR-ext OPTIONAL, + modulation ENUMERATED { modQPSK, mod16QAM } + } + } +} + +SecondaryCCPCHInfoDiff-MBMS ::= SEQUENCE { + secondaryScramblingCode SecondaryScramblingCode OPTIONAL, + sttd-Indicator BOOLEAN, + sf-AndCodeNumber SF256-AndCodeNumber OPTIONAL, + timingOffset TimingOffset OPTIONAL +} + +SecondaryCPICH-Info ::= SEQUENCE { + secondaryDL-ScramblingCode SecondaryScramblingCode OPTIONAL, + channelisationCode ChannelisationCode256 +} + +SecondaryScramblingCode ::= INTEGER (1..15) + +SecondaryCellMIMOparametersFDD ::= CHOICE { + continue NULL, + newConfiguration SEQUENCE { + mimoN-M-Ratio MIMO-N-M-Ratio OPTIONAL, + mimoPilotConfiguration MIMO-PilotConfiguration-r9 OPTIONAL + } +} + +SecondaryCellMIMOparametersFDD-v950ext ::= SEQUENCE { + precodingWeightSetRestriction ENUMERATED { true } OPTIONAL +} + +SecondaryCellMIMOparametersFDD-r10 ::= CHOICE { + continue NULL, + newConfiguration SEQUENCE { + mimoN-M-Ratio MIMO-N-M-Ratio OPTIONAL, + mimoPilotConfiguration MIMO-PilotConfiguration-r9 OPTIONAL, + precodingWeightSetRestriction ENUMERATED { true } OPTIONAL + } +} + +SecondaryCell4x4MIMOparametersFDD ::= SEQUENCE { + configurationInfo CHOICE { + continue NULL, + newConfiguration SEQUENCE { + mimoN-M-Ratio MIMO-N-M-Ratio OPTIONAL, + mimoPilotConfiguration MIMO4x4-PilotConfiguration OPTIONAL, + precodingWeightSetRestriction BIT STRING (SIZE (64)) OPTIONAL + } + } +} + +SecondInterleavingMode ::= ENUMERATED { + frameRelated, timeslotRelated } + +ServingCellChangeMACreset ::= BOOLEAN + +ServingCellChangeMsgType ::= ENUMERATED { + radioBearerSetup, + radioBearerReconfiguration, + transportChannelReconfiguration, + physicalChannelReconfiguration } + +ServingCellChangeParameters ::= SEQUENCE { + servingCellChangeMACreset ServingCellChangeMACreset, + servingCellChangeMsgType ServingCellChangeMsgType, + servingCellChangeTrId ServingCellChangeTrId +} + +ServingCellChangeTrId ::= INTEGER (0..3) + +SF8Codes ::= ENUMERATED { + cc8-1, cc8-2, cc8-3, cc8-4, cc8-5, cc8-6, cc8-7, cc8-8} + +SF16Codes ::= ENUMERATED { + cc16-1, cc16-2, cc16-3, cc16-4, cc16-5, cc16-6, cc16-7, + cc16-8} + +SF16Codes2 ::= ENUMERATED { + cc16-1, cc16-2, cc16-3, cc16-4, cc16-5, cc16-6, cc16-7, + cc16-8, cc16-9, cc16-10, cc16-11, cc16-12, cc16-13, cc16-14, + cc16-15, cc16-16} + +SF32Codes ::= ENUMERATED { + cc32-1, cc32-2, cc32-3, cc32-4, cc32-5, cc32-6, cc32-7, + cc32-8, cc32-9, cc32-10, cc32-11, cc32-12, cc32-13, cc32-14, + cc32-15, cc32-16} + +-- SF256-AndCodeNumber encodes both "Spreading factor" and "Code Number" +SF256-AndCodeNumber ::= CHOICE { + sf4 INTEGER (0..3), + sf8 INTEGER (0..7), + sf16 INTEGER (0..15), + sf32 INTEGER (0..31), + sf64 INTEGER (0..63), + sf128 INTEGER (0..127), + sf256 INTEGER (0..255) +} + +-- SF512-AndCodeNumber encodes both "Spreading factor" and "Code Number" +SF512-AndCodeNumber ::= CHOICE { + sf4 INTEGER (0..3), + sf8 INTEGER (0..7), + sf16 INTEGER (0..15), + sf32 INTEGER (0..31), + sf64 INTEGER (0..63), + sf128 INTEGER (0..127), + sf256 INTEGER (0..255), + sf512 INTEGER (0..511) +} + +-- SF512-AndPilot encodes both "Spreading factor" and "Number of bits for Pilot bits" +SF512-AndPilot ::= CHOICE { + sfd4 NULL, + sfd8 NULL, + sfd16 NULL, + sfd32 NULL, + sfd64 NULL, + sfd128 PilotBits128, + sfd256 PilotBits256, + sfd512 NULL +} +SF-PDSCH ::= ENUMERATED { + sfp4, sfp8, sfp16, sfp32, + sfp64, sfp128, sfp256 } + +SF-PRACH ::= ENUMERATED { + sfpr32, sfpr64, sfpr128, sfpr256 } + +SFN-TimeInfo ::= SEQUENCE { + activationTimeSFN INTEGER (0..4095), + physChDuration DurationTimeInfo +} + +-- actual scheduling value = 2(signalled value +1) and is the periodicity of sending +-- special burst frames +SpecialBurstScheduling ::= INTEGER (0..7) + +SpreadingFactor ::= ENUMERATED { + sf4, sf8, sf16, sf32, + sf64, sf128, sf256 } + +SPS-Information-TDD128-r8 ::= SEQUENCE { + e-dch-SPS-Info E-DCH-SPS-Information-TDD128 OPTIONAL, + hs-dsch-SPS-Info HS-DSCH-SPS-Information-TDD128 OPTIONAL +} + +SRB-delay ::= INTEGER (0..7) + +SSDT-CellIdentity ::= ENUMERATED { + ssdt-id-a, ssdt-id-b, ssdt-id-c, + ssdt-id-d, ssdt-id-e, ssdt-id-f, + ssdt-id-g, ssdt-id-h } + +SSDT-Information ::= SEQUENCE { + s-Field S-Field, + codeWordSet CodeWordSet +} + +SSDT-Information-r4 ::= SEQUENCE { + s-Field S-Field, + codeWordSet CodeWordSet, + ssdt-UL-r4 SSDT-UL OPTIONAL +} + +SSDT-UL ::= ENUMERATED { + ul, ul-AndDL } + +StandaloneMidambleInfo-TDD128 ::= SEQUENCE { + -- Actual value midambleConfiguration = IE value * 2 + midambleConfiguration INTEGER (1..8), + midambleShift INTEGER (0..15), + timeSlotInformation BIT STRING (SIZE (5)), + activationTime ActivationTime, + subframeNum INTEGER (0..1), + repetitionPeriod ENUMERATED { + v1, v2, v4, v8, + v16, v32, v64, spare}, + referenceBeta INTEGER (-15..16) OPTIONAL +} + +STTDIndication ::= ENUMERATED { true } + +SynchronisationParameters-r4 ::= SEQUENCE { + sync-UL-CodesBitmap BIT STRING { + code7(0), + code6(1), + code5(2), + code4(3), + code3(4), + code2(5), + code1(6), + code0(7) + } (SIZE (8)), + fpach-Info FPACH-Info-r4, + -- Actual value prxUpPCHdes = IE value - 120 + prxUpPCHdes INTEGER (0..62), + sync-UL-Procedure SYNC-UL-Procedure-r4 OPTIONAL +} + +Sync-UL-Codes-Bitmap ::= BIT STRING { + code7(0), + code6(1), + code5(2), + code4(3), + code3(4), + code2(5), + code1(6), + code0(7) + } (SIZE (8)) + +SYNC-UL-Procedure-r4 ::= SEQUENCE { + max-SYNC-UL-Transmissions ENUMERATED { tr1, tr2, tr4, tr8 }, + powerRampStep INTEGER (0..3) +} + +SYNC-UL-Info-r4 ::= SEQUENCE { + sync-UL-Codes-Bitmap Sync-UL-Codes-Bitmap, + -- Actual value prxUpPCHdes = IE value - 120 + prxUpPCHdes INTEGER (0..62), + powerRampStep INTEGER (0..3), + max-SYNC-UL-Transmissions ENUMERATED { tr1, tr2, tr4, tr8 }, + mmax INTEGER(1..32) +} + +SYNC-UL-InfoForE-RUCCH ::= SEQUENCE { + prxUpPCHdes INTEGER (0..62) OPTIONAL, + powerRampStep INTEGER (0..3) OPTIONAL, + max-SYNC-UL-Transmissions ENUMERATED { tr1, tr2, tr4, tr8 } OPTIONAL, + e-RUCCH-Sync-UL-Codes-Bitmap Sync-UL-Codes-Bitmap, + mmax INTEGER(1..32) +} + +TargetCellPreconfigInfo ::= SEQUENCE { + activationTimeOffset ActivationTimeOffset OPTIONAL, + new-H-RNTI H-RNTI, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + serving-HSDSCH-CellInformation Serving-HSDSCH-CellInformation-r8, + e-dch-ReconfigurationInfo E-DCH-ReconfigurationInfo-r7, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r8 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD OPTIONAL +} + +TargetCellPreconfigInfo-v890ext ::= MIMO-Parameters-v7f0ext + +TargetCellPreconfigInfo-r9 ::= SEQUENCE { + activationTimeOffset ActivationTimeOffset OPTIONAL, + new-H-RNTI H-RNTI, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + serving-HSDSCH-CellInformation Serving-HSDSCH-CellInformation-r9, + e-dch-ReconfigurationInfo E-DCH-ReconfigurationInfo-r7, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r9 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + e-dch-ReconfigurationInfo-SecULFrequency + E-DCH-ReconfigurationInfo-SecULFrequency OPTIONAL +} + +TargetCellPreconfigInfo-v950ext ::= SecondaryCellMIMOparametersFDD-v950ext + +TargetCellPreconfigInfo-r10 ::= SEQUENCE { + activationTimeOffset ActivationTimeOffset OPTIONAL, + new-H-RNTI H-RNTI, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + serving-HSDSCH-CellInformation Serving-HSDSCH-CellInformation-r9, + e-dch-ReconfigurationInfo E-DCH-ReconfigurationInfo-r7, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r10 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + e-dch-ReconfigurationInfo-SecULFrequency + E-DCH-ReconfigurationInfo-SecULFrequency OPTIONAL +} + +TargetCellPreconfigInfo-vb50ext ::= SEQUENCE { + ulOLTDInfoFDD UL-OLTD-InfoFDD OPTIONAL +} + +TargetCellPreconfigInfo-r11 ::= SEQUENCE { + activationTimeOffset ActivationTimeOffset OPTIONAL, + new-H-RNTI H-RNTI, + newPrimary-E-RNTI E-RNTI OPTIONAL, + newSecondary-E-RNTI E-RNTI OPTIONAL, + serving-HSDSCH-CellInformation Serving-HSDSCH-CellInformation-r11, + e-dch-ReconfigurationInfo E-DCH-ReconfigurationInfo-r11, + dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL, + dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL, + hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL, + mimoParameters MIMO-Parameters-r9 OPTIONAL, + mimo4x4Parameters MIMO4x4-Parameters OPTIONAL, + dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD AdditionalDLSecCellInfoListFDD-r11 OPTIONAL, + additionalDLSecCellInfoListFDD2 AdditionalDLSecCellInfoListFDD2 OPTIONAL, + ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL, + e-dch-ReconfigurationInfo-SecULFrequency + E-DCH-ReconfigurationInfo-SecULFrequency OPTIONAL, + ul-CLTD-InfoFDD UL-CLTD-InfoFDD OPTIONAL, + f-tpich-ReconfigurationInfo F-TPICH-ReconfigurationInfo OPTIONAL, + uL-OLTD-InfoFDD UL-OLTD-InfoFDD OPTIONAL, + ul-16QAM-Config UL-16QAM-Config OPTIONAL, + ul-64QAM-Config UL-64QAM-Config OPTIONAL, + ul-MIMO-Info UL-MIMO-InfoFDD OPTIONAL +} + +TDD-FPACH-CCode16-r4 ::= ENUMERATED { + cc16-1, cc16-2, cc16-3, cc16-4, + cc16-5, cc16-6, cc16-7, cc16-8, + cc16-9, cc16-10, cc16-11, cc16-12, + cc16-13, cc16-14, cc16-15, cc16-16 } + +TDD-UL-Interference ::= INTEGER (-110..-52) + +TDD-PICH-CCode ::= ENUMERATED { + cc16-1, cc16-2, cc16-3, cc16-4, + cc16-5, cc16-6, cc16-7, cc16-8, + cc16-9, cc16-10, cc16-11, cc16-12, + cc16-13, cc16-14, cc16-15, cc16-16 } + +TDD768-PICH-CCode ::= ENUMERATED { + cc32-1, cc32-2, cc32-3, cc32-4, + cc32-5, cc32-6, cc32-7, cc32-8, + cc32-9, cc32-10, cc32-11, cc32-12, + cc32-13, cc32-14, cc32-15, cc32-16, + cc32-17, cc32-18, cc32-19, cc32-20, + cc32-21, cc32-22, cc32-23, cc32-24, + cc32-25, cc32-26, cc32-27, cc32-28, + cc32-29, cc32-30, cc32-31, cc32-32 } + +TDD-MBSFNInformation ::= SEQUENCE (SIZE (1..maxTS)) OF + TDD-MBSFNTSlotInfo + +TDD-MBSFNTSlotInfo ::= SEQUENCE { + timeSlotNumber TimeslotNumber, + cellParametersID CellParametersID +} + +TDD-PRACH-CCode8 ::= ENUMERATED { + cc8-1, cc8-2, cc8-3, cc8-4, + cc8-5, cc8-6, cc8-7, cc8-8 } + +TDD-PRACH-CCode16 ::= ENUMERATED { + cc16-1, cc16-2, cc16-3, cc16-4, + cc16-5, cc16-6, cc16-7, cc16-8, + cc16-9, cc16-10, cc16-11, cc16-12, + cc16-13, cc16-14, cc16-15, cc16-16 } + +TDD-PRACH-CCode-LCR-r4 ::= ENUMERATED { + cc4-1, cc4-2, cc4-3, cc4-4, + cc8-1, cc8-2, cc8-3, cc8-4, + cc8-5, cc8-6, cc8-7, cc8-8, + cc16-1, cc16-2, cc16-3, cc16-4, + cc16-5, cc16-6, cc16-7, cc16-8, + cc16-9, cc16-10, cc16-11, cc16-12, + cc16-13, cc16-14, cc16-15, cc16-16 } + +TDD-PRACH-CCodeList ::= CHOICE { + sf8 SEQUENCE (SIZE (1..8)) OF + TDD-PRACH-CCode8, +-- Channelisation codes cc16-9, cc16-10, cc16-11, cc16-12, cc16-13, cc16-14, +-- cc16-15 and cc16-16 shall not be used + sf16 SEQUENCE (SIZE (1..8)) OF + TDD-PRACH-CCode16 +} + +TDD768-PRACH-CCode16 ::= ENUMERATED { + cc16-1, cc16-2, cc16-3, cc16-4, + cc16-5, cc16-6, cc16-7, cc16-8, + cc16-9, cc16-10, cc16-11, cc16-12, + cc16-13, cc16-14, cc16-15, cc16-16 } + +TDD768-PRACH-CCode32 ::= ENUMERATED { + cc32-1, cc32-2, cc32-3, cc32-4, + cc32-5, cc32-6, cc32-7, cc32-8, + cc32-9, cc32-10, cc32-11, cc32-12, + cc32-13, cc32-14, cc32-15, cc32-16 } + +TDD768-PRACH-CCodeList ::= CHOICE { + sf32 SEQUENCE (SIZE (1..16)) OF + TDD768-PRACH-CCode32, +-- Channelisation codes cc32-17, cc32-18, cc32-19, cc32-20, cc32-21, cc32-22, +-- cc32-23, cc32-24, cc32-25, cc32-26, cc32-27, cc32-28, cc32-29, cc32-30, cc32-31 +-- and cc32-32 shall not be used + sf16 SEQUENCE (SIZE (1..16)) OF + TDD768-PRACH-CCode16 +} + +TFC-ControlDuration ::= ENUMERATED { + tfc-cd1, tfc-cd2, tfc-cd4, tfc-cd8, + tfc-cd16, tfc-cd24, tfc-cd32, + tfc-cd48, tfc-cd64, tfc-cd128, + tfc-cd192, tfc-cd256, tfc-cd512 } + +TFCI-Coding ::= ENUMERATED { + tfci-bits-4, tfci-bits-8, + tfci-bits-16, tfci-bits-32 } + +TGCFN ::= INTEGER (0..255) + +-- In TGD, value 270 represents "undefined" in the tabular description. +TGD ::= INTEGER (15..270) + +TGL ::= INTEGER (1..14) + +TGMP ::= ENUMERATED { + tdd-Measurement, fdd-Measurement, + gsm-CarrierRSSIMeasurement, + gsm-initialBSICIdentification, gsmBSICReconfirmation, + multi-carrier } + +TGMP-r8 ::= ENUMERATED { + tdd-Measurement, fdd-Measurement, + gsm-CarrierRSSIMeasurement, + gsm-initialBSICIdentification, gsmBSICReconfirmation, + multi-carrier, e-UTRA, spare } + +TGP-Sequence ::= SEQUENCE { + tgpsi TGPSI, + tgps-Status CHOICE { + activate SEQUENCE { + tgcfn TGCFN + }, + deactivate NULL + }, + tgps-ConfigurationParams TGPS-ConfigurationParams OPTIONAL +} + +TGP-Sequence-r8 ::= SEQUENCE { + tgpsi TGPSI, + tgps-Status CHOICE { + activate SEQUENCE { + tgcfn TGCFN + }, + deactivate NULL + }, + tgps-ConfigurationParams TGPS-ConfigurationParams-r8 OPTIONAL +} + +TGP-Sequence-r10 ::= SEQUENCE { + tgpsi TGPSI, + tgps-Status CHOICE { + activate SEQUENCE { + tgcfn TGCFN + }, + deactivate NULL + }, + tgps-ConfigurationParams TGPS-ConfigurationParams-r10 OPTIONAL +} + +TGPS-Reconfiguration-CFN ::= INTEGER (0..255) + +TGP-SequenceList ::= SEQUENCE (SIZE (1..maxTGPS)) OF + TGP-Sequence + +TGP-SequenceList-r8 ::= SEQUENCE (SIZE (1..maxTGPS)) OF + TGP-Sequence-r8 + +TGP-SequenceList-r10 ::= SEQUENCE (SIZE (1..maxTGPS)) OF + TGP-Sequence-r10 + +TGP-SequenceShort ::= SEQUENCE { + tgpsi TGPSI, + tgps-Status CHOICE { + activate SEQUENCE { + tgcfn TGCFN + }, + deactivate NULL + } +} + +TGP-SequenceShort-r10 ::= SEQUENCE { + tgpsi TGPSI, + tgps-Status CHOICE { + activate SEQUENCE { + tgcfn TGCFN + }, + deactivate NULL + }, + freqSpecificCompressedMode ENUMERATED { true } OPTIONAL +} + +TGPL ::= INTEGER (1..144) + +-- TABULAR: In TGPRC, value 0 represents "infinity" in the tabular description. +TGPRC ::= INTEGER (0..511) + +TGPS-ConfigurationParams ::= SEQUENCE { + tgmp TGMP, + tgprc TGPRC, + tgsn TGSN, + tgl1 TGL, + tgl2 TGL OPTIONAL, + tgd TGD, + tgpl1 TGPL, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it shall be ignored. + dummy TGPL OPTIONAL, + rpp RPP, + itp ITP, + -- TABULAR: Compressed mode method is nested inside UL-DL-Mode + ul-DL-Mode UL-DL-Mode, + dl-FrameType DL-FrameType, + deltaSIR1 DeltaSIR, + deltaSIRAfter1 DeltaSIR, + deltaSIR2 DeltaSIR OPTIONAL, + deltaSIRAfter2 DeltaSIR OPTIONAL, + nidentifyAbort NidentifyAbort OPTIONAL, + treconfirmAbort TreconfirmAbort OPTIONAL +} + +TGPS-ConfigurationParams-r8 ::= SEQUENCE { + tgmp TGMP-r8, + tgprc TGPRC, + tgsn TGSN, + tgl1 TGL, + tgl2 TGL OPTIONAL, + tgd TGD, + tgpl1 TGPL, + rpp RPP, + itp ITP, + -- TABULAR: Compressed mode method is nested inside UL-DL-Mode + ul-DL-Mode UL-DL-Mode, + dl-FrameType DL-FrameType, + deltaSIR1 DeltaSIR, + deltaSIRAfter1 DeltaSIR, + deltaSIR2 DeltaSIR OPTIONAL, + deltaSIRAfter2 DeltaSIR OPTIONAL, + nidentifyAbort NidentifyAbort OPTIONAL, + treconfirmAbort TreconfirmAbort OPTIONAL +} + +TGPS-ConfigurationParams-r10 ::= SEQUENCE { + tgmp TGMP-r8, + freqSpecificCompressedMode ENUMERATED { true } OPTIONAL, + tgprc TGPRC, + tgsn TGSN, + tgl1 TGL, + tgl2 TGL OPTIONAL, + tgd TGD, + tgpl1 TGPL, + rpp RPP, + itp ITP, + -- TABULAR: Compressed mode method is nested inside UL-DL-Mode + ul-DL-Mode UL-DL-Mode, + dl-FrameType DL-FrameType, + deltaSIR1 DeltaSIR, + deltaSIRAfter1 DeltaSIR, + deltaSIR2 DeltaSIR OPTIONAL, + deltaSIRAfter2 DeltaSIR OPTIONAL, + nidentifyAbort NidentifyAbort OPTIONAL, + treconfirmAbort TreconfirmAbort OPTIONAL +} + +TGPSI ::= INTEGER (1..maxTGPS) + +TGSN ::= INTEGER (0..14) + +TimeInfo ::= SEQUENCE { + activationTime ActivationTime OPTIONAL, + durationTimeInfo DurationTimeInfo OPTIONAL +} + +TimeSlotLCR-ext ::= ENUMERATED { + ts7, spare3, spare2, spare1 } + +TimeslotList ::= SEQUENCE (SIZE (1..maxTS)) OF + TimeslotNumber + +TimeslotList-r4 ::= CHOICE { +-- the choice for 7.68 Mcps TDD is as for 3.84 Mcps TDD -- + tdd384 SEQUENCE (SIZE (1..maxTS)) OF + TimeslotNumber, + tdd128 SEQUENCE (SIZE (1..maxTS-LCR)) OF + TimeslotNumber-LCR-r4 +} + +-- If TimeslotNumber is included for a 1.28Mcps TDD description, it shall take values from 0..6 +TimeslotNumber ::= INTEGER (0..14) + +TimeslotNumber-LCR-r4 ::= INTEGER (0..6) + +TimeslotNumber-PRACH-LCR-r4 ::= INTEGER (1..6) + +TimeslotSync2 ::= INTEGER (0..6) + +DTX-DRX-TimingInfo-r7 ::= SEQUENCE { + timing CHOICE { + continue NULL, + newTiming NewTiming + } +} + +-- Actual value TimingOffset = IE value * 256 +TimingOffset ::= INTEGER (0..149) + +TimingMaintainedSynchInd ::= ENUMERATED { false } + +TPC-CombinationIndex ::= INTEGER (0..5) + +TPC-CommandTargetRate ::= INTEGER (0..10) + +-- Actual value TPC-StepSizeFDD = IE value + 1 +TPC-StepSizeFDD ::= INTEGER (0..1) + +TPC-StepSizeTDD ::= INTEGER (1..3) + +TransportBlockSizeIndex ::= INTEGER (1..32) + +-- Actual value TreconfirmAbort = IE value * 0.5 seconds +TreconfirmAbort ::= INTEGER (1..20) + +TwoMsHarqConfiguration ::= SEQUENCE { + harqProcessAllocation BIT STRING (SIZE (8)) OPTIONAL +} + +TX-DiversityMode ::= ENUMERATED { + noDiversity, + sttd, + closedLoopMode1, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy } + +UARFCN ::= INTEGER (0..16383) + +UCSM-Info ::= SEQUENCE { + minimumSpreadingFactor MinimumSpreadingFactor, + nf-Max NF-Max, + channelReqParamsForUCSM ChannelReqParamsForUCSM +} + +UE-DPCCH-Burst ::= ENUMERATED { + sub-frames-1, + sub-frames-2, + sub-frames-5, + spare1 } + +UE-DRX-Cycle ::= ENUMERATED { + sub-frames-4, + sub-frames-5, + sub-frames-8, + sub-frames-10, + sub-frames-16, + sub-frames-20, + spare2, + spare1 } + +UE-DTX-Cycle1-10ms ::= ENUMERATED { + sub-frames-1, + sub-frames-5, + sub-frames-10, + sub-frames-20 } + +UE-DTX-Cycle1-2ms ::= ENUMERATED { + sub-frames-1, + sub-frames-4, + sub-frames-5, + sub-frames-8, + sub-frames-10, + sub-frames-16, + sub-frames-20, + spare1 } + +UE-DTX-Cycle2-10ms ::= ENUMERATED { + sub-frames-5, + sub-frames-10, + sub-frames-20, + sub-frames-40, + sub-frames-80, + sub-frames-160, + spare2, + spare1 } + +UE-DTX-Cycle2-2ms ::= ENUMERATED { + sub-frames-4, + sub-frames-5, + sub-frames-8, + sub-frames-10, + sub-frames-16, + sub-frames-20, + sub-frames-32, + sub-frames-40, + sub-frames-64, + sub-frames-80, + sub-frames-128, + sub-frames-160, + spare4, + spare3, + spare2, + spare1 } + +UE-DTX-Cycle2InactivityThreshold ::= ENUMERATED { + e-dch-tti-1, + e-dch-tti-4, + e-dch-tti-8, + e-dch-tti-16, + e-dch-tti-32, + e-dch-tti-64, + e-dch-tti-128, + e-dch-tti-256, + spare8, + spare7, + spare6, + spare5, + spare4, + spare3, + spare2, + spare1 } + +UE-DTX-long-preamble-length ::= ENUMERATED { + slots-4, + slots-15 } + +UE-DTX-DRX-Offset ::= INTEGER (0..159) + +UE-GrantMonitoring-InactivityThreshold ::= ENUMERATED { + e-dch-tti-0, + e-dch-tti-1, + e-dch-tti-2, + e-dch-tti-4, + e-dch-tti-8, + e-dch-tti-16, + e-dch-tti-32, + e-dch-tti-64, + e-dch-tti-128, + e-dch-tti-256, + spare6, + spare5, + spare4, + spare3, + spare2, + spare1 } + +UL-16QAM-Config ::= SEQUENCE { + ul-16QAM-Settings UL-16QAM-Settings OPTIONAL, + e-TFCI-TableIndex E-TFCI-TableIndex OPTIONAL, + mac-es-e-resetIndicator ENUMERATED { true } OPTIONAL +} + +UL-16QAM-Settings ::= SEQUENCE { + beta-Ed-Gain-E-AGCH-Table-Selection INTEGER (0..1) +} + +UL-64QAM-Config ::= SEQUENCE { + ul-64QAM-Settings UL-64QAM-Settings OPTIONAL, + mac-is-i-resetIndicator ENUMERATED { true } OPTIONAL +} + +UL-64QAM-Settings ::= SEQUENCE { + beta-Ed-Gain-E-AGCH-Table-Selection INTEGER (0..1) +} + +UL-CCTrCH ::= SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + ul-TargetSIR UL-TargetSIR, + timeInfo TimeInfo, + commonTimeslotInfo CommonTimeslotInfo OPTIONAL, + ul-CCTrCH-TimeslotsCodes UplinkTimeslotsCodes OPTIONAL +} + +UL-CCTrCH-r4 ::= SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + -- The IE ul-TargetSIR corresponds to PRX-DPCHdes for 1.28Mcps TDD + -- Actual value PRX-DPCHdes = (value of IE "ul-TargetSIR" - 120) + ul-TargetSIR UL-TargetSIR, + timeInfo TimeInfo, + commonTimeslotInfo CommonTimeslotInfo OPTIONAL, + tddOption CHOICE { + tdd384 SEQUENCE { + ul-CCTrCH-TimeslotsCodes UplinkTimeslotsCodes OPTIONAL + }, + tdd128 SEQUENCE { + ul-CCTrCH-TimeslotsCodes UplinkTimeslotsCodes-LCR-r4 OPTIONAL + } + } +} + +UL-CCTrCH-r7 ::= SEQUENCE { + tfcs-ID TFCS-IdentityPlain DEFAULT 1, + -- The IE ul-TargetSIR corresponds to PRX-DPCHdes for 1.28Mcps TDD + -- Actual value PRX-DPCHdes = (value of IE "ul-TargetSIR" - 120) + ul-TargetSIR UL-TargetSIR, + timeInfo TimeInfo, + commonTimeslotInfo CommonTimeslotInfo OPTIONAL, + tddOption CHOICE { + tdd384 SEQUENCE { + ul-CCTrCH-TimeslotsCodes UplinkTimeslotsCodes OPTIONAL + }, + tdd768 SEQUENCE { + ul-CCTrCH-TimeslotsCodes UplinkTimeslotsCodes-VHCR OPTIONAL + }, + tdd128 SEQUENCE { + ul-CCTrCH-TimeslotsCodes UplinkTimeslotsCodes-LCR-r7 OPTIONAL + } + } +} + +UL-CCTrCHList ::= SEQUENCE (SIZE (1..maxCCTrCH)) OF + UL-CCTrCH + +UL-CCTrCHList-r4 ::= SEQUENCE (SIZE (1..maxCCTrCH)) OF + UL-CCTrCH-r4 + +UL-CCTrCHList-r7 ::= SEQUENCE (SIZE (1..maxCCTrCH)) OF + UL-CCTrCH-r7 + +UL-CCTrCHListToRemove ::= SEQUENCE (SIZE (1..maxCCTrCH)) OF + TFCS-IdentityPlain + +UL-CCTrChTPCList ::= SEQUENCE (SIZE (0..maxCCTrCH)) OF + TFCS-Identity + +UL-ChannelRequirement ::= CHOICE { + ul-DPCH-Info UL-DPCH-Info, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received the UE behaviour is not specified. + dummy CPCH-SetInfo +} + +UL-ChannelRequirement-r4 ::= CHOICE { + ul-DPCH-Info UL-DPCH-Info-r4, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received the UE behaviour is not specified. + dummy CPCH-SetInfo +} + +UL-ChannelRequirement-r5 ::= CHOICE { + ul-DPCH-Info UL-DPCH-Info-r5, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received the UE behaviour is not specified. + dummy CPCH-SetInfo +} + +-- Note: the reference to CPCH in the element name below is incorrect. The name is not +-- changed to keep it aligned with R99. +UL-ChannelRequirementWithCPCH-SetID ::= CHOICE { + ul-DPCH-Info UL-DPCH-Info, + -- dummy1 and dummy 2 are not used in this version of the specification, they should + -- not be sent and if received the UE behaviour is not specified. + dummy1 CPCH-SetInfo, + dummy2 CPCH-SetID +} + +-- Note: the reference to CPCH in the element name below is incorrect. The name is not +-- changed to keep it aligned with R99. +UL-ChannelRequirementWithCPCH-SetID-r4 ::= CHOICE { + ul-DPCH-Info UL-DPCH-Info-r4, + -- dummy1 and dummy2 are not used in this version of the specification, they + -- should not be sent and if received the UE behaviour is not specified. + dummy1 CPCH-SetInfo, + dummy2 CPCH-SetID +} + +-- Note: the reference to CPCH in the element name below is incorrect. The name is not +-- changed to keep it aligned with R99. +UL-ChannelRequirementWithCPCH-SetID-r5 ::= CHOICE { + ul-DPCH-Info UL-DPCH-Info-r5, + -- dummy1 and dummy2 are not used in this version of the specification, they should + -- not be sent and if received the UE behaviour is not specified. + dummy1 CPCH-SetInfo, + dummy2 CPCH-SetID +} + + +UL-CLTD-InfoFDD ::= SEQUENCE { + configurationInfo CHOICE { + continue NULL, + newConfiguration SEQUENCE { + s-dpcch-Info S-DPCCH-Information, + initial-CLTD-ActivationState ENUMERATED { first-state, second-state } OPTIONAL, + primaryCPICH-Info PrimaryCPICH-Info OPTIONAL + } + } +} + +UL-CompressedModeMethod ::= ENUMERATED { + sf-2, + higherLayerScheduling } + +UL-DL-Mode ::= CHOICE { + ul UL-CompressedModeMethod, + dl DL-CompressedModeMethod, + ul-and-dl SEQUENCE { + ul UL-CompressedModeMethod, + dl DL-CompressedModeMethod + }} + +UL-DPCCH-SlotFormat ::= ENUMERATED { + slf0, slf1, slf2 } + +UL-DPCH-CodeInfoForCommonEDCH ::= SEQUENCE { + ul-DPCCHscramblingCodeType ScramblingCodeType, + ul-DPCCHscramblingCode UL-ScramblingCode OPTIONAL +} + +UL-DPCH-Info ::= SEQUENCE { + ul-DPCH-PowerControlInfo UL-DPCH-PowerControlInfo OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + scramblingCodeType ScramblingCodeType, + scramblingCode UL-ScramblingCode, + numberOfDPDCH NumberOfDPDCH DEFAULT 1, + spreadingFactor SpreadingFactor, + tfci-Existence BOOLEAN, + -- numberOfFBI-Bits is conditional based on history + numberOfFBI-Bits NumberOfFBI-Bits OPTIONAL, + puncturingLimit PuncturingLimit + }, + tdd SEQUENCE { + ul-TimingAdvance UL-TimingAdvanceControl OPTIONAL, + ul-CCTrCHList UL-CCTrCHList OPTIONAL, + ul-CCTrCHListToRemove UL-CCTrCHListToRemove OPTIONAL + } + } +} + +UL-DPCH-Info-r4 ::= SEQUENCE { + ul-DPCH-PowerControlInfo UL-DPCH-PowerControlInfo-r4 OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + scramblingCodeType ScramblingCodeType, + scramblingCode UL-ScramblingCode, + numberOfDPDCH NumberOfDPDCH DEFAULT 1, + spreadingFactor SpreadingFactor, + tfci-Existence BOOLEAN, + -- numberOfFBI-Bits is conditional based on history + numberOfFBI-Bits NumberOfFBI-Bits OPTIONAL, + puncturingLimit PuncturingLimit + }, + tdd SEQUENCE { + ul-TimingAdvance UL-TimingAdvanceControl-r4 OPTIONAL, + ul-CCTrCHList UL-CCTrCHList-r4 OPTIONAL, + ul-CCTrCHListToRemove UL-CCTrCHListToRemove OPTIONAL + } + } +} + +UL-DPCH-Info-r5 ::= SEQUENCE { + ul-DPCH-PowerControlInfo UL-DPCH-PowerControlInfo-r5 OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + scramblingCodeType ScramblingCodeType, + scramblingCode UL-ScramblingCode, + numberOfDPDCH NumberOfDPDCH DEFAULT 1, + spreadingFactor SpreadingFactor, + tfci-Existence BOOLEAN, + -- numberOfFBI-Bits is conditional based on history + numberOfFBI-Bits NumberOfFBI-Bits OPTIONAL, + puncturingLimit PuncturingLimit + }, + tdd SEQUENCE { + ul-TimingAdvance UL-TimingAdvanceControl-r4 OPTIONAL, + ul-CCTrCHList UL-CCTrCHList-r4 OPTIONAL, + ul-CCTrCHListToRemove UL-CCTrCHListToRemove OPTIONAL + } + } +} + +UL-DPCH-Info-r6 ::= SEQUENCE { + ul-DPCH-PowerControlInfo UL-DPCH-PowerControlInfo-r6 OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + scramblingCodeType ScramblingCodeType, + scramblingCode UL-ScramblingCode, + dpdchPresence CHOICE { + present SEQUENCE { + numberOfDPDCH NumberOfDPDCH DEFAULT 1, + spreadingFactor SpreadingFactor, + tfci-Existence BOOLEAN, + -- numberOfFBI-Bits is conditional based on history + numberOfFBI-Bits NumberOfFBI-Bits OPTIONAL, + puncturingLimit PuncturingLimit + }, + notPresent SEQUENCE { + tfci-Existence BOOLEAN, + -- numberOfFBI-Bits is conditional based on history + numberOfFBI-Bits NumberOfFBI-Bits OPTIONAL + } + } + }, + tdd SEQUENCE { + ul-TimingAdvance UL-TimingAdvanceControl-r4 OPTIONAL, + ul-CCTrCHList UL-CCTrCHList-r4 OPTIONAL, + ul-CCTrCHListToRemove UL-CCTrCHListToRemove OPTIONAL + } + } +} + +UL-DPCH-Info-r7 ::= SEQUENCE { + ul-DPCH-PowerControlInfo UL-DPCH-PowerControlInfo-r7 OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + scramblingCodeType ScramblingCodeType, + scramblingCode UL-ScramblingCode, + dpdchPresence CHOICE { + present SEQUENCE { + numberOfDPDCH NumberOfDPDCH DEFAULT 1, + spreadingFactor SpreadingFactor, + tfci-Existence BOOLEAN, + -- numberOfFBI-Bits is conditional based on history + numberOfFBI-Bits NumberOfFBI-Bits OPTIONAL, + numberOfTPC-Bits NumberOfTPC-Bits OPTIONAL, + puncturingLimit PuncturingLimit + }, + notPresent SEQUENCE { + tfci-Existence BOOLEAN, + -- numberOfFBI-Bits is conditional based on history + numberOfFBI-Bits NumberOfFBI-Bits OPTIONAL, + numberOfTPC-Bits NumberOfTPC-Bits OPTIONAL + } + } + }, + tdd SEQUENCE { + ul-TimingAdvance UL-TimingAdvanceControl-r7 OPTIONAL, + ul-CCTrCHList UL-CCTrCHList-r7 OPTIONAL, + ul-CCTrCHListToRemove UL-CCTrCHListToRemove OPTIONAL + } + } +} + +UL-DPCH-Info-r11 ::= SEQUENCE { + ul-DPCH-PowerControlInfo UL-DPCH-PowerControlInfo-r11 OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + scramblingCodeType ScramblingCodeType, + scramblingCode UL-ScramblingCode, + dpdchPresence CHOICE { + present SEQUENCE { + numberOfDPDCH NumberOfDPDCH DEFAULT 1, + spreadingFactor SpreadingFactor, + tfci-Existence BOOLEAN, + -- numberOfFBI-Bits is conditional based on history + numberOfFBI-Bits NumberOfFBI-Bits OPTIONAL, + numberOfTPC-Bits NumberOfTPC-Bits OPTIONAL, + puncturingLimit PuncturingLimit + }, + notPresent SEQUENCE { + tfci-Existence BOOLEAN, + -- numberOfFBI-Bits is conditional based on history + numberOfFBI-Bits NumberOfFBI-Bits OPTIONAL, + numberOfTPC-Bits NumberOfTPC-Bits OPTIONAL + } + } + }, + tdd SEQUENCE { + ul-TimingAdvance UL-TimingAdvanceControl-r7 OPTIONAL, + ul-CCTrCHList UL-CCTrCHList-r7 OPTIONAL, + ul-CCTrCHListToRemove UL-CCTrCHListToRemove OPTIONAL + } + } +} + +UL-DPCH-InfoPostFDD ::= SEQUENCE { + ul-DPCH-PowerControlInfo UL-DPCH-PowerControlInfoPostFDD, + scramblingCodeType ScramblingCodeType, + reducedScramblingCodeNumber ReducedScramblingCodeNumber, + spreadingFactor SpreadingFactor + +} + +UL-DPCH-InfoPostTDD ::= SEQUENCE { + ul-DPCH-PowerControlInfo UL-DPCH-PowerControlInfoPostTDD, + ul-TimingAdvance UL-TimingAdvanceControl OPTIONAL, + ul-CCTrCH-TimeslotsCodes UplinkTimeslotsCodes +} + +UL-DPCH-InfoPostTDD-LCR-r4 ::= SEQUENCE { + ul-DPCH-PowerControlInfo UL-DPCH-PowerControlInfoPostTDD-LCR-r4, + ul-TimingAdvance UL-TimingAdvanceControl-LCR-r4 OPTIONAL, + ul-CCTrCH-TimeslotsCodes UplinkTimeslotsCodes-LCR-r4 +} + +UL-DPCH-InfoPredef ::= SEQUENCE { + ul-DPCH-PowerControlInfo UL-DPCH-PowerControlInfoPredef, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + tfci-Existence BOOLEAN, + puncturingLimit PuncturingLimit + }, + tdd SEQUENCE { + commonTimeslotInfo CommonTimeslotInfo + } + } +} + +UL-DPCH-InfoPredef-v770ext ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + numberOfTPC-Bits NumberOfTPC-Bits OPTIONAL + }, + tdd NULL } +} + +UL-DPCH-PowerControlInfo ::= CHOICE { + fdd SEQUENCE { + dpcch-PowerOffset DPCCH-PowerOffset, + pc-Preamble PC-Preamble, + sRB-delay SRB-delay, + -- TABULAR: TPC step size nested inside PowerControlAlgorithm + powerControlAlgorithm PowerControlAlgorithm + }, + tdd SEQUENCE { + ul-TargetSIR UL-TargetSIR OPTIONAL, + ul-OL-PC-Signalling CHOICE { + broadcast-UL-OL-PC-info NULL, + individuallySignalled SEQUENCE { + individualTS-InterferenceList IndividualTS-InterferenceList, + dpch-ConstantValue ConstantValueTdd, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + } + } OPTIONAL + } +} + +UL-DPCH-PowerControlInfo-r4 ::= CHOICE { + fdd SEQUENCE { + dpcch-PowerOffset DPCCH-PowerOffset, + pc-Preamble PC-Preamble, + sRB-delay SRB-delay, + -- TABULAR: TPC step size nested inside PowerControlAlgorithm + powerControlAlgorithm PowerControlAlgorithm + }, + tdd SEQUENCE { + -- The IE ul-TargetSIR corresponds to PRX-DPCHdes for 1.28Mcps TDD + -- Actual value PRX-DPCHdes = (value of IE "ul-TargetSIR" - 120) + ul-TargetSIR UL-TargetSIR OPTIONAL, + ul-OL-PC-Signalling CHOICE { + broadcast-UL-OL-PC-info NULL, + individuallySignalled SEQUENCE { + tddOption CHOICE { + tdd384 SEQUENCE { + individualTS-InterferenceList IndividualTS-InterferenceList, + dpch-ConstantValue ConstantValue + }, + tdd128 SEQUENCE { + tpc-StepSize TPC-StepSizeTDD + } + }, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + } + } + } +} + +UL-DPCH-PowerControlInfo-r5 ::= CHOICE { + fdd SEQUENCE { + dpcch-PowerOffset DPCCH-PowerOffset, + pc-Preamble PC-Preamble, + sRB-delay SRB-delay, + -- TABULAR: TPC step size nested inside PowerControlAlgorithm + powerControlAlgorithm PowerControlAlgorithm, + deltaACK DeltaACK OPTIONAL, + deltaNACK DeltaNACK OPTIONAL, + ack-NACK-repetition-factor ACK-NACK-repetitionFactor OPTIONAL + }, + tdd SEQUENCE { + -- The IE ul-TargetSIR corresponds to PRX-DPCHdes for 1.28Mcps TDD + -- Actual value PRX-DPCHdes = (value of IE "ul-TargetSIR" - 120) + ul-TargetSIR UL-TargetSIR OPTIONAL, + ul-OL-PC-Signalling CHOICE { + broadcast-UL-OL-PC-info NULL, + individuallySignalled SEQUENCE { + tddOption CHOICE { + tdd384 SEQUENCE { + individualTS-InterferenceList IndividualTS-InterferenceList, + dpch-ConstantValue ConstantValue + }, + tdd128 SEQUENCE { + tpc-StepSize TPC-StepSizeTDD + } + }, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + } + } + } +} + +UL-DPCH-PowerControlInfo-r6 ::= CHOICE { + fdd SEQUENCE { + dpcch-PowerOffset DPCCH-PowerOffset, + pc-Preamble PC-Preamble, + sRB-delay SRB-delay, + -- TABULAR: TPC step size nested inside PowerControlAlgorithm + powerControlAlgorithm PowerControlAlgorithm, + deltaACK DeltaACK OPTIONAL, + deltaNACK DeltaNACK OPTIONAL, + ack-NACK-repetition-factor ACK-NACK-repetitionFactor OPTIONAL, + harq-Preamble-Mode HARQ-Preamble-Mode + }, + tdd SEQUENCE { + -- The IE ul-TargetSIR corresponds to PRX-DPCHdes for 1.28Mcps TDD + -- Actual value PRX-DPCHdes = (value of IE "ul-TargetSIR" - 120) + ul-TargetSIR UL-TargetSIR OPTIONAL, + ul-OL-PC-Signalling CHOICE { + broadcast-UL-OL-PC-info NULL, + individuallySignalled SEQUENCE { + tddOption CHOICE { + tdd384 SEQUENCE { + individualTS-InterferenceList IndividualTS-InterferenceList, + dpch-ConstantValue ConstantValue + }, + tdd128 SEQUENCE { + beaconPLEst BEACON-PL-Est OPTIONAL, + tpc-StepSize TPC-StepSizeTDD + } + }, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + } + } + } +} + +UL-DPCH-PowerControlInfo-r7 ::= CHOICE { + fdd SEQUENCE { + dpcch-PowerOffset DPCCH-PowerOffset, + pc-Preamble PC-Preamble, + sRB-delay SRB-delay, + -- TABULAR: TPC step size nested inside PowerControlAlgorithm + powerControlAlgorithm PowerControlAlgorithm, + deltaACK DeltaACK OPTIONAL, + deltaNACK DeltaNACK OPTIONAL, + ack-NACK-repetition-factor ACK-NACK-repetitionFactor OPTIONAL, + harq-Preamble-Mode HARQ-Preamble-Mode + }, + tdd SEQUENCE { + -- The IE ul-TargetSIR corresponds to PRX-DPCHdes for 1.28Mcps TDD + -- Actual value PRX-DPCHdes = (value of IE "ul-TargetSIR" - 120) + ul-TargetSIR UL-TargetSIR OPTIONAL, + ul-OL-PC-Signalling CHOICE { + broadcast-UL-OL-PC-info NULL, + individuallySignalled SEQUENCE { + tddOption CHOICE { + tdd384 SEQUENCE { + individualTS-InterferenceList IndividualTS-InterferenceList, + dpch-ConstantValue ConstantValue + }, + tdd768 SEQUENCE { + individualTS-InterferenceList IndividualTS-InterferenceList, + dpch-ConstantValue ConstantValue + }, + tdd128 SEQUENCE { + beaconPLEst BEACON-PL-Est OPTIONAL, + tpc-StepSize TPC-StepSizeTDD + } + }, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + } + } + } +} + +UL-DPCH-PowerControlInfo-r11 ::= CHOICE { + fdd SEQUENCE { + dpcch-PowerOffset DPCCH-PowerOffset, + pc-Preamble PC-Preamble, + sRB-delay SRB-delay, + -- TABULAR: TPC step size nested inside PowerControlAlgorithm + powerControlAlgorithm PowerControlAlgorithm, + deltaACK DeltaACK-r11 OPTIONAL, + deltaNACK DeltaNACK-r11 OPTIONAL, + ack-NACK-repetition-factor ACK-NACK-repetitionFactor OPTIONAL, + ack-NACK-repetition-factor-assisting ACK-NACK-repetitionFactor OPTIONAL, + harq-Preamble-Mode HARQ-Preamble-Mode + }, + tdd SEQUENCE { + -- The IE ul-TargetSIR corresponds to PRX-DPCHdes for 1.28Mcps TDD + -- Actual value PRX-DPCHdes = (value of IE "ul-TargetSIR" - 120) + ul-TargetSIR UL-TargetSIR OPTIONAL, + ul-OL-PC-Signalling CHOICE { + broadcast-UL-OL-PC-info NULL, + individuallySignalled SEQUENCE { + tddOption CHOICE { + tdd384 SEQUENCE { + individualTS-InterferenceList IndividualTS-InterferenceList, + dpch-ConstantValue ConstantValue + }, + tdd768 SEQUENCE { + individualTS-InterferenceList IndividualTS-InterferenceList, + dpch-ConstantValue ConstantValue + }, + tdd128 SEQUENCE { + beaconPLEst BEACON-PL-Est OPTIONAL, + tpc-StepSize TPC-StepSizeTDD + } + }, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power + } + } + } +} + +UL-DPCHpowerControlInfoConcurrentTTI ::= SEQUENCE { + deltaACK DeltaACK OPTIONAL, + deltaNACK DeltaNACK OPTIONAL, + ack-NACK-repetition-factor ACK-NACK-repetitionFactor OPTIONAL +} + +UL-DPCHpowerControlInfoForCommonEDCH ::= SEQUENCE { + -- TABULAR: TPC step size nested inside PowerControlAlgorithm + powerControlAlgorithm PowerControlAlgorithm, + deltaACK DeltaACK OPTIONAL, + deltaNACK DeltaNACK OPTIONAL, + ack-NACK-repetition-factor ACK-NACK-repetitionFactor OPTIONAL +} + +UL-DPCH-PowerControlInfoPostFDD ::= SEQUENCE { + -- DPCCH-PowerOffset2 has a smaller range to save bits + dpcch-PowerOffset DPCCH-PowerOffset2, + pc-Preamble PC-Preamble, + sRB-delay SRB-delay +} + +UL-DPCH-PowerControlInfoPostTDD ::= SEQUENCE { + ul-TargetSIR UL-TargetSIR, + ul-TimeslotInterference TDD-UL-Interference +} + +UL-DPCH-PowerControlInfoPostTDD-LCR-r4 ::= SEQUENCE { + -- The IE ul-TargetSIR corresponds to PRX-DPCHdes for 1.28Mcps TDD + -- Actual value PRX-DPCHdes = (value of IE "ul-TargetSIR" - 120) + ul-TargetSIR UL-TargetSIR +} + +UL-DPCH-PowerControlInfoPredef ::= CHOICE { + fdd SEQUENCE { + -- TABULAR: TPC step size nested inside PowerControlAlgorithm + powerControlAlgorithm PowerControlAlgorithm + }, + tdd SEQUENCE { + -- dpch-ConstantValue shall be ignored if in 1.28Mcps TDD mode. + dpch-ConstantValue ConstantValueTdd + } +} + + +UL-EDCH-Information-ext ::= CHOICE { + fdd NULL, + tdd SEQUENCE { + non-ScheduledTransGrantInfo Non-ScheduledTransGrantInfoTDD-ext OPTIONAL + } +} + +UL-EDCH-Information-r6 ::= SEQUENCE { + mac-es-e-resetIndicator ENUMERATED { true } OPTIONAL, + e-DPCCH-Info E-DPCCH-Info OPTIONAL, + e-DPDCH-Info E-DPDCH-Info OPTIONAL, + schedulingTransmConfiguration E-DPDCH-SchedulingTransmConfiguration OPTIONAL +} + +UL-EDCH-Information-r7 ::= SEQUENCE { + mac-es-e-resetIndicator ENUMERATED { true } OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + e-DPCCH-Info E-DPCCH-Info-r7 OPTIONAL, + e-DPDCH-Info E-DPDCH-Info-r7 OPTIONAL, + schedulingTransmConfiguration E-DPDCH-SchedulingTransmConfiguration OPTIONAL, + ul-16QAM-Settings UL-16QAM-Settings OPTIONAL + }, + tdd SEQUENCE { + e-RUCCH-Info E-RUCCH-Info OPTIONAL, + e-PUCH-Info E-PUCH-Info OPTIONAL, + non-ScheduledTransGrantInfo Non-ScheduledTransGrantInfoTDD OPTIONAL + } + } +} + +UL-EDCH-Information-r8 ::= SEQUENCE { + mac-es-e-resetIndicator ENUMERATED { true } OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + e-DPCCH-Info E-DPCCH-Info-r7 OPTIONAL, + e-DPDCH-Info E-DPDCH-Info-r8 OPTIONAL, + schedulingTransmConfiguration E-DPDCH-SchedulingTransmConfiguration OPTIONAL, + ul-16QAM-Settings UL-16QAM-Settings OPTIONAL + }, + tdd SEQUENCE { + e-RUCCH-Info E-RUCCH-Info OPTIONAL, + e-PUCH-Info E-PUCH-Info OPTIONAL, + non-ScheduledTransGrantInfo Non-ScheduledTransGrantInfoTDD OPTIONAL + } + } +} + +UL-EDCH-Information-r9 ::= SEQUENCE { + mac-es-e-resetIndicator ENUMERATED { true } OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + e-DPCCH-Info E-DPCCH-Info-r7 OPTIONAL, + e-DPDCH-Info E-DPDCH-Info-r8 OPTIONAL, + schedulingTransmConfiguration E-DPDCH-SchedulingTransmConfiguration OPTIONAL, + ul-16QAM-Settings UL-16QAM-Settings OPTIONAL + }, + tdd SEQUENCE { + e-RUCCH-Info E-RUCCH-Info OPTIONAL, + e-PUCH-Info E-PUCH-Info OPTIONAL, + non-ScheduledTransGrantInfo Non-ScheduledTransGrantInfoTDD-r9 OPTIONAL + } + } +} + +UL-EDCH-Information-r11 ::= SEQUENCE { + mac-es-e-resetIndicator ENUMERATED { true } OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + e-DPCCH-Info E-DPCCH-Info-r7 OPTIONAL, + e-DPDCH-Info E-DPDCH-Info-r8 OPTIONAL, + ul-MIMO-Info UL-MIMO-InfoFDD OPTIONAL, + schedulingTransmConfiguration E-DPDCH-SchedulingTransmConfiguration OPTIONAL, + ul-16QAM-Settings UL-16QAM-Settings OPTIONAL, + ul-64QAM-Settings UL-64QAM-Settings OPTIONAL + }, + tdd SEQUENCE { + e-RUCCH-Info E-RUCCH-Info OPTIONAL, + e-PUCH-Info E-PUCH-Info OPTIONAL, + non-ScheduledTransGrantInfo Non-ScheduledTransGrantInfoTDD-r9 OPTIONAL + } + } +} + +UL-MIMO-InfoFDD ::= SEQUENCE { + configurationInfo CHOICE { + continue NULL, + newConfiguration SEQUENCE { + s-e-dpcch-power-offset INTEGER(0..17), + rank2-minimum-E-TFCI E-DCH-MinimumSet-E-TFCI, + inter-stream-compensation INTEGER(0..15) OPTIONAL + } + } +} + +UL-MulticarrierEDCH-InfolistItem-TDD128 ::= SEQUENCE { + uarfcn UARFCN, + prxdes-base INTEGER (-112..-50), + e-PUCH-info E-PUCH-Info-MulticarrierEDCH-TDD128 OPTIONAL, + e-AGCH-info E-AGCH-Information-TDD128 OPTIONAL, + e-HICH-info E-HICH-Information-TDD128 OPTIONAL +} + +UL-MulticarrierEDCH-Infolist-TDD128 ::= SEQUENCE (SIZE (1..maxTDD128Carrier-1)) OF + UL-MulticarrierEDCH-InfolistItem-TDD128 + +UL-MulticarrierEDCH-Deletelist-TDD128 ::= SEQUENCE (SIZE (1..maxTDD128Carrier-1)) OF + UARFCN + +UL-MulticarrierEDCHInfo-TDD128 ::= SEQUENCE { + configuration-info CHOICE { + continue NULL, + newConfiguration UL-MulticarrierEDCH-NewConfigurationInfo-TDD128 + } +} + +UL-MulticarrierEDCH-NewConfigurationInfo-TDD128 ::= SEQUENCE { + tsn-Length ENUMERATED { tsn-14bits } OPTIONAL, + ul-MulticarrierEDCH-Infolist UL-MulticarrierEDCH-Infolist-TDD128 OPTIONAL, + ul-MulticarrierEDCH-Deletelist UL-MulticarrierEDCH-Deletelist-TDD128 OPTIONAL +} + +UL-Interference ::= INTEGER (-110..-70) + +UL-ScramblingCode ::= INTEGER (0..16777215) + + +UL-SynchronisationParameters-r4 ::= SEQUENCE { + stepSize INTEGER (1..8), + frequency INTEGER (1..8) +} + +-- Actual value UL-TargetSIR = (IE value * 0.5) - 11 +UL-TargetSIR ::= INTEGER (0..62) + +UL-TimingAdvance ::= INTEGER (0..63) + +UL-TimingAdvanceControl ::= CHOICE { + disabled NULL, + enabled SEQUENCE { + ul-TimingAdvance UL-TimingAdvance OPTIONAL, + activationTime ActivationTime OPTIONAL + } +} + +UL-TimingAdvanceControl-r4 ::= CHOICE { + disabled NULL, + enabled SEQUENCE { + tddOption CHOICE { + tdd384 SEQUENCE { + ul-TimingAdvance UL-TimingAdvance OPTIONAL, + activationTime ActivationTime OPTIONAL + }, + tdd128 SEQUENCE { + ul-SynchronisationParameters UL-SynchronisationParameters-r4 OPTIONAL, + synchronisationParameters SynchronisationParameters-r4 OPTIONAL + } + } + } +} + +UL-TimingAdvanceControl-r7 ::= CHOICE { + disabled NULL, + enabled SEQUENCE { + tddOption CHOICE { + tdd384 SEQUENCE { + ul-TimingAdvance UL-TimingAdvance OPTIONAL, + ext-UL-TimingAdvance EXT-UL-TimingAdvance OPTIONAL, + activationTime ActivationTime OPTIONAL + }, + tdd768 SEQUENCE { + ext-UL-TimingAdvance EXT-UL-TimingAdvance OPTIONAL, + activationTime ActivationTime OPTIONAL + }, + tdd128 SEQUENCE { + ul-SynchronisationParameters UL-SynchronisationParameters-r4 OPTIONAL, + synchronisationParameters SynchronisationParameters-r4 OPTIONAL + } + } + } +} + +UL-TimingAdvanceControl-LCR-r4 ::= CHOICE { + disabled NULL, + enabled SEQUENCE { + ul-SynchronisationParameters UL-SynchronisationParameters-r4 OPTIONAL, + synchronisationParameters SynchronisationParameters-r4 OPTIONAL + } +} + +UL-TS-ChannelisationCode ::= ENUMERATED { + cc1-1, cc2-1, cc2-2, + cc4-1, cc4-2, cc4-3, cc4-4, + cc8-1, cc8-2, cc8-3, cc8-4, + cc8-5, cc8-6, cc8-7, cc8-8, + cc16-1, cc16-2, cc16-3, cc16-4, + cc16-5, cc16-6, cc16-7, cc16-8, + cc16-9, cc16-10, cc16-11, cc16-12, + cc16-13, cc16-14, cc16-15, cc16-16 } + +UL-TS-ChannelisationCodeList ::= SEQUENCE (SIZE (1..2)) OF + UL-TS-ChannelisationCode + +UL-TS-ChannelisationCodeList-r7 ::= SEQUENCE (SIZE (1..2)) OF + SEQUENCE { + ul-TS-Channelisation-Code UL-TS-ChannelisationCode, + plcch-info PLCCH-Info OPTIONAL +} + +UL-TS-ChannelisationCode-VHCR ::= ENUMERATED { + cc1-1, cc2-1, cc2-2, + cc4-1, cc4-2, cc4-3, cc4-4, + cc8-1, cc8-2, cc8-3, cc8-4, + cc8-5, cc8-6, cc8-7, cc8-8, + cc16-1, cc16-2, cc16-3, cc16-4, + cc16-5, cc16-6, cc16-7, cc16-8, + cc16-9, cc16-10, cc16-11, cc16-12, + cc16-13, cc16-14, cc16-15, cc16-16, + cc32-1, cc32-2, cc32-3, cc32-4, + cc32-5, cc32-6, cc32-7, cc32-8, + cc32-9, cc32-10, cc32-11, cc32-12, + cc32-13, cc32-14, cc32-15, cc32-16, + cc32-17, cc32-18, cc32-19, cc32-20, + cc32-21, cc32-22, cc32-23, cc32-24, + cc32-25, cc32-26, cc32-27, cc32-28, + cc32-29, cc32-30, cc32-31, cc32-32 } + +UL-TS-ChannelisationCodeList-VHCR ::= SEQUENCE (SIZE (1..2)) OF + UL-TS-ChannelisationCode-VHCR + +Uplink-DPCCH-Slot-Format-Information ::= ENUMERATED { + slot-format-1, + -- dummy is not used in this version of + -- specification, it should not be sent and if + -- received it should be ignored. + dummy, + slot-format-4, + spare1 } + +UplinkAdditionalTimeslots ::= SEQUENCE { + parameters CHOICE { + sameAsLast SEQUENCE { + timeslotNumber TimeslotNumber + }, + newParameters SEQUENCE { + individualTimeslotInfo IndividualTimeslotInfo, + ul-TS-ChannelisationCodeList UL-TS-ChannelisationCodeList + } + } +} + +UplinkAdditionalTimeslots-LCR-r4 ::= SEQUENCE { + parameters CHOICE { + sameAsLast SEQUENCE { + timeslotNumber TimeslotNumber + }, + newParameters SEQUENCE { + individualTimeslotInfo IndividualTimeslotInfo-LCR-r4, + ul-TS-ChannelisationCodeList UL-TS-ChannelisationCodeList + } + } +} + +UplinkAdditionalTimeslots-LCR-r7 ::= SEQUENCE { + parameters CHOICE { + sameAsLast SEQUENCE { + timeslotNumber TimeslotNumber + -- plcch-info assigned as previously defined slot + }, + newParameters SEQUENCE { + individualTimeslotInfo IndividualTimeslotInfo-LCR-r4, + ul-TS-ChannelisationCodeList UL-TS-ChannelisationCodeList-r7 + } + } +} + +UplinkAdditionalTimeslots-VHCR ::= SEQUENCE { + parameters CHOICE { + sameAsLast SEQUENCE { + timeslotNumber TimeslotNumber + }, + newParameters SEQUENCE { + individualTimeslotInfo IndividualTimeslotInfo-VHCR, + ul-TS-ChannelisationCodeList UL-TS-ChannelisationCodeList + } + } +} + +UplinkTimeslotsCodes ::= SEQUENCE { + dynamicSFusage BOOLEAN, + firstIndividualTimeslotInfo IndividualTimeslotInfo, + ul-TS-ChannelisationCodeList UL-TS-ChannelisationCodeList, + moreTimeslots CHOICE { + noMore NULL, + additionalTimeslots CHOICE { + consecutive SEQUENCE { + numAdditionalTimeslots INTEGER (1..maxTS-1) + }, + timeslotList SEQUENCE (SIZE (1..maxTS-1)) OF + UplinkAdditionalTimeslots + } + } +} + +UplinkTimeslotsCodes-VHCR ::= SEQUENCE { + dynamicSFusage BOOLEAN, + firstIndividualTimeslotInfo IndividualTimeslotInfo-VHCR, + ul-TS-ChannelisationCodeList UL-TS-ChannelisationCodeList-VHCR, + moreTimeslots CHOICE { + noMore NULL, + additionalTimeslots CHOICE { + consecutive SEQUENCE { + numAdditionalTimeslots INTEGER (1..maxTS-1) + }, + timeslotList SEQUENCE (SIZE (1..maxTS-1)) OF + UplinkAdditionalTimeslots-VHCR + } + } +} + +UplinkTimeslotsCodes-LCR-r4 ::= SEQUENCE { + dynamicSFusage BOOLEAN, + firstIndividualTimeslotInfo IndividualTimeslotInfo-LCR-r4, + ul-TS-ChannelisationCodeList UL-TS-ChannelisationCodeList, + moreTimeslots CHOICE { + noMore NULL, + additionalTimeslots CHOICE { + consecutive SEQUENCE { + numAdditionalTimeslots INTEGER (1..maxTS-LCR-1) + }, + timeslotList SEQUENCE (SIZE (1..maxTS-LCR-1)) OF + UplinkAdditionalTimeslots-LCR-r4 + } + } +} + +UplinkTimeslotsCodes-LCR-r7 ::= SEQUENCE { + dynamicSFusage BOOLEAN, + firstIndividualTimeslotInfo IndividualTimeslotInfo-LCR-r4, + ul-TS-ChannelisationCodeList UL-TS-ChannelisationCodeList-r7, + moreTimeslots CHOICE { + noMore NULL, + additionalTimeslots CHOICE { + consecutive SEQUENCE { + -- the choice of 'consecutive' is not needed because there is only 1 option. + numAdditionalTimeslots INTEGER (1..maxTS-LCR-1) + }, + timeslotList SEQUENCE (SIZE (1..maxTS-LCR-1)) OF + UplinkAdditionalTimeslots-LCR-r7 + } + } +} + +UpPCHposition-LCR ::= INTEGER (0..127) + +Wi-LCR ::= INTEGER (1..4) + +-- *************************************************** +-- +-- MEASUREMENT INFORMATION ELEMENTS (10.3.7) +-- +-- *************************************************** + +AcquisitionSatInfo ::= SEQUENCE { + satID SatID, + -- Actual value dopplerOthOrder = IE value * 2.5 + doppler0thOrder INTEGER (-2048..2047), + extraDopplerInfo ExtraDopplerInfo OPTIONAL, + codePhase INTEGER (0..1022), + integerCodePhase INTEGER (0..19), + gps-BitNumber INTEGER (0..3), + codePhaseSearchWindow CodePhaseSearchWindow, + azimuthAndElevation AzimuthAndElevation OPTIONAL +} + +AcquisitionSatInfo-va40ext ::= SEQUENCE { + azimuthAndElevation AzimuthAndElevation-va40ext OPTIONAL +} + +AcquisitionSatInfo-r10 ::= SEQUENCE { + satID SatID, + -- Actual value dopplerOthOrder = IE value * 2.5 + doppler0thOrder INTEGER (-2048..2047), + extraDopplerInfo ExtraDopplerInfo OPTIONAL, + codePhase INTEGER (0..1022), + integerCodePhase INTEGER (0..19), + gps-BitNumber INTEGER (0..3), + codePhaseSearchWindow CodePhaseSearchWindow, + azimuthAndElevation AzimuthAndElevation-r10 OPTIONAL +} + +AcquisitionSatInfoList ::= SEQUENCE (SIZE (1..maxSat)) OF + AcquisitionSatInfo + +AcquisitionSatInfoList-va40ext ::= SEQUENCE (SIZE (1..maxSat)) OF + AcquisitionSatInfo-va40ext + +AcquisitionSatInfoList-r10 ::= SEQUENCE (SIZE (1..maxSat)) OF + AcquisitionSatInfo-r10 + +AdditionalMeasurementID-List ::= SEQUENCE (SIZE (1..maxAdditionalMeas)) OF + MeasurementIdentity + +AdditionalMeasurementID-List-r9 ::= SEQUENCE (SIZE (1..maxAdditionalMeas)) OF + MeasurementIdentity-r9 + +AlmanacSatInfo ::= SEQUENCE { + dataID INTEGER (0..3), + satID SatID, + e BIT STRING (SIZE (16)), + t-oa BIT STRING (SIZE (8)), + deltaI BIT STRING (SIZE (16)), + omegaDot BIT STRING (SIZE (16)), + satHealth BIT STRING (SIZE (8)), + a-Sqrt BIT STRING (SIZE (24)), + omega0 BIT STRING (SIZE (24)), + m0 BIT STRING (SIZE (24)), + omega BIT STRING (SIZE (24)), + af0 BIT STRING (SIZE (11)), + af1 BIT STRING (SIZE (11)) +} + +AlmanacSatInfoList ::= SEQUENCE (SIZE (1..maxSat)) OF + AlmanacSatInfo + +ALM-ECEFsbasAlmanacSet ::= SEQUENCE { + sat-info-SBASecefList GANSS-SAT-Info-Almanac-SBASecefList +} + +ALM-GlonassAlmanacSet ::= SEQUENCE { + sat-info-GLOkpList GANSS-SAT-Info-Almanac-GLOkpList +} + +ALM-keplerianParameters ::= SEQUENCE { + -- time of week by 4096s steps + t-oa INTEGER (0..147), + iod-a INTEGER (0..3), + sat-info-kpList GANSS-SAT-Info-Almanac-KpList +} + +ALM-MidiAlmanacSet ::= SEQUENCE { + -- time of week by 4096s steps + t-oa INTEGER (0..147), + sat-info-MIDIkpList GANSS-SAT-Info-Almanac-MIDIkpList +} + +ALM-NAVKeplerianSet ::= SEQUENCE { + -- time of week by 4096s steps + t-oa INTEGER (0..147), + sat-info-NAVkpList GANSS-SAT-Info-Almanac-NAVkpList +} + +ALM-ReducedKeplerianSet ::= SEQUENCE { + -- time of week by 4096s steps + t-oa INTEGER (0..147), + sat-info-REDkpList GANSS-SAT-Info-Almanac-REDkpList +} + +AuxInfoGANSS-ID1 ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF AuxInfoGANSS-ID1-element + +AuxInfoGANSS-ID1-element ::= SEQUENCE { + svID INTEGER(0..63), + signalsAvailable BIT STRING (SIZE(8)) +} + +AuxInfoGANSS-ID3 ::= SEQUENCE (SIZE (1.. maxGANSSSat)) OF AuxInfoGANSS-ID3-element + +AuxInfoGANSS-ID3-element ::= SEQUENCE { + svID INTEGER (0..63), + signalsAvailable BIT STRING (SIZE (8)), + channelNumber INTEGER (-7..13) +} + +AverageRLC-BufferPayload ::= ENUMERATED { + pla0, pla4, pla8, pla16, pla32, + pla64, pla128, pla256, pla512, + pla1024, pla2k, pla4k, pla8k, pla16k, + pla32k, pla64k, pla128k, pla256k, + pla512k, pla1024k, spare12, spare11, + spare10, spare9, spare8, spare7, spare6, + spare5, spare4, spare3, spare2, spare1 } + +AzimuthAndElevation ::= SEQUENCE { + -- Actual value azimuth = IE value * 11.25 + IE value of azimuthLSB * 0.703125 degrees + azimuth INTEGER (0..31), + -- Actual value elevation = IE value * 11.25 + IE value of elevationLSB * 0.703125 degrees + elevation INTEGER (0..7) +} + +AzimuthAndElevation-va40ext ::= SEQUENCE { + azimuthLSB INTEGER (0..15), + elevationLSB INTEGER (0..15) +} + +AzimuthAndElevation-r10 ::= SEQUENCE { + -- Actual value azimuth = IE value * 11.25 + IE value of azimuthLSB * 0.703125 degrees + azimuth INTEGER (0..31), + -- Actual value elevation = IE value * 11.25 + IE value of elevationLSB * 0.703125 degrees + elevation INTEGER (0..7), + azimuthLSB INTEGER (0..15), + elevationLSB INTEGER (0..15) +} + +BadSatList ::= SEQUENCE (SIZE (1..maxSat)) OF + INTEGER (0..63) + +Frequency-Band ::= ENUMERATED { + dcs1800BandUsed, pcs1900BandUsed } + +BCCH-ARFCN ::= INTEGER (0..1023) + +BLER-MeasurementResults ::= SEQUENCE { + transportChannelIdentity TransportChannelIdentity, + dl-TransportChannelBLER DL-TransportChannelBLER OPTIONAL +} + +BLER-MeasurementResultsList ::= SEQUENCE (SIZE (1..maxTrCH)) OF + BLER-MeasurementResults + +BLER-TransChIdList ::= SEQUENCE (SIZE (1..maxTrCH)) OF + TransportChannelIdentity + +BSIC-VerificationRequired ::= ENUMERATED { + required, notRequired } + +BSICReported ::= CHOICE { + -- Value maxCellMeas is not allowed for verifiedBSIC + verifiedBSIC INTEGER (0..maxCellMeas), + nonVerifiedBSIC BCCH-ARFCN +} + +BurstModeParameters ::= SEQUENCE { + burstStart INTEGER (0..15), + burstLength INTEGER (10..25), + burstFreq INTEGER (1..16) +} + +CellDCH-ReportCriteria ::= CHOICE { + intraFreqReportingCriteria IntraFreqReportingCriteria, + periodicalReportingCriteria PeriodicalReportingCriteria +} + +CellDCH-ReportCriteria-LCR-r4 ::= CHOICE { + intraFreqReportingCriteria IntraFreqReportingCriteria-LCR-r4, + periodicalReportingCriteria PeriodicalReportingCriteria +} + +CellDCHMeasOccasionPattern-LCR ::= SEQUENCE { + patternIdentifier INTEGER(0..maxMeasOccasionPattern-1), + statusFlag ENUMERATED { + activate, deactivate}, + measurementPurpose BIT STRING (SIZE (5)) OPTIONAL, + measurementOccasionPatternParameter MeasurementOccasionPatternParameter OPTIONAL +} +CellDCHMeasOccasionInfo-TDD128-r9::= SEQUENCE { + cellDCHMeasOccasionSequenceList SEQUENCE (SIZE (1..maxMeasOccasionPattern)) OF + CellDCHMeasOccasionPattern-LCR +} + +-- Actual value CellIndividualOffset = IE value * 0.5 +CellIndividualOffset ::= INTEGER (-20..20) + + +CellInfo ::= SEQUENCE { + cellIndividualOffset CellIndividualOffset DEFAULT 0, + referenceTimeDifferenceToCell ReferenceTimeDifferenceToCell OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info OPTIONAL, + primaryCPICH-TX-Power PrimaryCPICH-TX-Power OPTIONAL, + readSFN-Indicator BOOLEAN, + tx-DiversityIndicator BOOLEAN + }, + tdd SEQUENCE { + primaryCCPCH-Info PrimaryCCPCH-Info, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power OPTIONAL, + timeslotInfoList TimeslotInfoList OPTIONAL, + readSFN-Indicator BOOLEAN + } + } +} + +CellInfo-r4 ::= SEQUENCE { + cellIndividualOffset CellIndividualOffset DEFAULT 0, + referenceTimeDifferenceToCell ReferenceTimeDifferenceToCell OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info OPTIONAL, + primaryCPICH-TX-Power PrimaryCPICH-TX-Power OPTIONAL, + readSFN-Indicator BOOLEAN, + tx-DiversityIndicator BOOLEAN + }, + tdd SEQUENCE { + primaryCCPCH-Info PrimaryCCPCH-Info-r4, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power OPTIONAL, + timeslotInfoList TimeslotInfoList-r4 OPTIONAL, + readSFN-Indicator BOOLEAN + + } + } +} + +CellInfo-LCR-r8-ext ::= SEQUENCE { + cellSelectionReselectionInfo CellSelectReselectInfoMC-RSCP OPTIONAL +} + +CellInfo-r9 ::= SEQUENCE { + cellIndividualOffset CellIndividualOffset DEFAULT 0, + referenceTimeDifferenceToCell ReferenceTimeDifferenceToCell OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info OPTIONAL, + primaryCPICH-TX-Power PrimaryCPICH-TX-Power OPTIONAL, + readSFN-Indicator BOOLEAN, + tx-DiversityIndicator BOOLEAN + }, + tdd SEQUENCE { + primaryCCPCH-Info PrimaryCCPCH-Info-r4, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power OPTIONAL, + timeslotInfoList TimeslotInfoList-r4 OPTIONAL, + readSFN-Indicator BOOLEAN + } + }, + -- For 1.28 Mcps TDD, cellSelectionReselectionInfo is optional present when sent + -- in Measurement Control.For FDD, this IE is not needed. + cellSelectionReselectionInfo CellSelectReselectInfoMC-RSCP OPTIONAL +} + +CellInfoListToBeExcluded::= SEQUENCE (SIZE (1..maxExcludedDetectedSetCells )) OF + PrimaryCPICH-Info + +CellInfoSI-RSCP ::= SEQUENCE { + cellIndividualOffset CellIndividualOffset DEFAULT 0, + referenceTimeDifferenceToCell ReferenceTimeDifferenceToCell OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info OPTIONAL, + primaryCPICH-TX-Power PrimaryCPICH-TX-Power OPTIONAL, + readSFN-Indicator BOOLEAN, + tx-DiversityIndicator BOOLEAN + }, + tdd SEQUENCE { + primaryCCPCH-Info PrimaryCCPCH-Info, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power OPTIONAL, + timeslotInfoList TimeslotInfoList OPTIONAL, + readSFN-Indicator BOOLEAN + } + }, + cellSelectionReselectionInfo CellSelectReselectInfoSIB-11-12-RSCP OPTIONAL +} + +CellInfoSI-RSCP-LCR-r4 ::= SEQUENCE { + cellIndividualOffset CellIndividualOffset DEFAULT 0, + referenceTimeDifferenceToCell ReferenceTimeDifferenceToCell OPTIONAL, + primaryCCPCH-Info PrimaryCCPCH-Info-LCR-r4, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power OPTIONAL, + timeslotInfoList TimeslotInfoList-LCR-r4 OPTIONAL, + readSFN-Indicator BOOLEAN, + cellSelectionReselectionInfo CellSelectReselectInfoSIB-11-12-RSCP OPTIONAL +} + +CellInfoSI-ECN0 ::= SEQUENCE { + cellIndividualOffset CellIndividualOffset DEFAULT 0, + referenceTimeDifferenceToCell ReferenceTimeDifferenceToCell OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info OPTIONAL, + primaryCPICH-TX-Power PrimaryCPICH-TX-Power OPTIONAL, + readSFN-Indicator BOOLEAN, + tx-DiversityIndicator BOOLEAN + }, + tdd SEQUENCE { + primaryCCPCH-Info PrimaryCCPCH-Info, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power OPTIONAL, + timeslotInfoList TimeslotInfoList OPTIONAL, + readSFN-Indicator BOOLEAN + } + }, + cellSelectionReselectionInfo CellSelectReselectInfoSIB-11-12-ECN0 OPTIONAL +} + +CellInfoSI-ECN0-LCR-r4 ::= SEQUENCE { + cellIndividualOffset CellIndividualOffset DEFAULT 0, + referenceTimeDifferenceToCell ReferenceTimeDifferenceToCell OPTIONAL, + primaryCCPCH-Info PrimaryCCPCH-Info-LCR-r4, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power OPTIONAL, + timeslotInfoList TimeslotInfoList-LCR-r4 OPTIONAL, + readSFN-Indicator BOOLEAN, + cellSelectionReselectionInfo CellSelectReselectInfoSIB-11-12-ECN0 OPTIONAL +} + +CellInfoSI-HCS-RSCP ::= SEQUENCE { + cellIndividualOffset CellIndividualOffset DEFAULT 0, + referenceTimeDifferenceToCell ReferenceTimeDifferenceToCell OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info OPTIONAL, + primaryCPICH-TX-Power PrimaryCPICH-TX-Power OPTIONAL, + readSFN-Indicator BOOLEAN, + tx-DiversityIndicator BOOLEAN + }, + tdd SEQUENCE { + primaryCCPCH-Info PrimaryCCPCH-Info, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power OPTIONAL, + timeslotInfoList TimeslotInfoList OPTIONAL, + readSFN-Indicator BOOLEAN + } + }, + cellSelectionReselectionInfo CellSelectReselectInfoSIB-11-12-HCS-RSCP OPTIONAL +} + +CellInfoSI-HCS-RSCP-LCR-r4 ::= SEQUENCE { + cellIndividualOffset CellIndividualOffset DEFAULT 0, + referenceTimeDifferenceToCell ReferenceTimeDifferenceToCell OPTIONAL, + primaryCCPCH-Info PrimaryCCPCH-Info-LCR-r4, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power OPTIONAL, + timeslotInfoList TimeslotInfoList-LCR-r4 OPTIONAL, + readSFN-Indicator BOOLEAN, + cellSelectionReselectionInfo CellSelectReselectInfoSIB-11-12-HCS-RSCP OPTIONAL +} + +CellInfoSI-HCS-ECN0 ::= SEQUENCE { + cellIndividualOffset CellIndividualOffset DEFAULT 0, + referenceTimeDifferenceToCell ReferenceTimeDifferenceToCell OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info OPTIONAL, + primaryCPICH-TX-Power PrimaryCPICH-TX-Power OPTIONAL, + readSFN-Indicator BOOLEAN, + tx-DiversityIndicator BOOLEAN + }, + tdd SEQUENCE { + primaryCCPCH-Info PrimaryCCPCH-Info, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power OPTIONAL, + timeslotInfoList TimeslotInfoList OPTIONAL, + readSFN-Indicator BOOLEAN + } + }, + cellSelectionReselectionInfo CellSelectReselectInfoSIB-11-12-HCS-ECN0 OPTIONAL +} + +CellInfoSI-HCS-ECN0-LCR-r4 ::= SEQUENCE { + cellIndividualOffset CellIndividualOffset DEFAULT 0, + referenceTimeDifferenceToCell ReferenceTimeDifferenceToCell OPTIONAL, + primaryCCPCH-Info PrimaryCCPCH-Info-LCR-r4, + primaryCCPCH-TX-Power PrimaryCCPCH-TX-Power OPTIONAL, + timeslotInfoList TimeslotInfoList-LCR-r4 OPTIONAL, + readSFN-Indicator BOOLEAN, + cellSelectionReselectionInfo CellSelectReselectInfoSIB-11-12-HCS-ECN0 OPTIONAL +} + +CellMeasuredResults ::= SEQUENCE { + cellIdentity CellIdentity OPTIONAL, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy SFN-SFN-ObsTimeDifference OPTIONAL, + cellSynchronisationInfo CellSynchronisationInfo OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + cpich-Ec-N0 CPICH-Ec-N0 OPTIONAL, + cpich-RSCP CPICH-RSCP OPTIONAL, + pathloss Pathloss OPTIONAL + }, + tdd SEQUENCE { + cellParametersID CellParametersID, + proposedTGSN TGSN OPTIONAL, + primaryCCPCH-RSCP PrimaryCCPCH-RSCP OPTIONAL, + pathloss Pathloss OPTIONAL, + timeslotISCP-List TimeslotISCP-List OPTIONAL + } + } +} + +-- The IE is created in order to add missing DeltaRSCPPerCell IE from Rel-5. +CellMeasuredResults-r9 ::= SEQUENCE { + cellIdentity CellIdentity OPTIONAL, + cellSynchronisationInfo CellSynchronisationInfo OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + cpich-Ec-N0 CPICH-Ec-N0 OPTIONAL, + cpich-RSCP CPICH-RSCP OPTIONAL, + deltaRSCPPerCell DeltaRSCPPerCell OPTIONAL, + pathloss Pathloss OPTIONAL + }, + tdd SEQUENCE { + cellParametersID CellParametersID, + proposedTGSN TGSN OPTIONAL, + primaryCCPCH-RSCP PrimaryCCPCH-RSCP OPTIONAL, + pathloss Pathloss OPTIONAL, + timeslotISCP-List TimeslotISCP-List OPTIONAL + } + } +} + +CellMeasuredResults-v920ext ::= SEQUENCE { + csgIdentity CSG-Identity OPTIONAL, + csgMemberIndication ENUMERATED { member } OPTIONAL +} + +CellMeasurementEventResults ::= CHOICE { + fdd SEQUENCE (SIZE (1..maxCellMeas)) OF + PrimaryCPICH-Info, + tdd SEQUENCE (SIZE (1..maxCellMeas)) OF + PrimaryCCPCH-Info +} + +CellMeasurementEventResultsOnSecUlFreq ::= CHOICE { + fdd SEQUENCE (SIZE (1.. maxCellMeasOnSecULFreq)) OF + PrimaryCPICH-Info, + spare NULL +} + +CellMeasurementEventResults-LCR-r4 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + PrimaryCCPCH-Info-LCR-r4 + +CellReportingQuantities ::= SEQUENCE { + -- dummy is not used in this version of the specification + -- and if received it should be ignored. + dummy SFN-SFN-OTD-Type, + cellIdentity-reportingIndicator BOOLEAN, + cellSynchronisationInfoReportingIndicator BOOLEAN, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + cpich-Ec-N0-reportingIndicator BOOLEAN, + cpich-RSCP-reportingIndicator BOOLEAN, + pathloss-reportingIndicator BOOLEAN + }, + tdd SEQUENCE { + timeslotISCP-reportingIndicator BOOLEAN, + proposedTGSN-ReportingRequired BOOLEAN, + primaryCCPCH-RSCP-reportingIndicator BOOLEAN, + pathloss-reportingIndicator BOOLEAN + } + } +} + +CellSelectReselectInfoMC-RSCP ::= SEQUENCE { + q-OffsetS-N Q-OffsetS-N DEFAULT 0, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + hcs-NeighbouringCellInformation-RSCP + HCS-NeighbouringCellInformation-RSCP OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + q-QualMin Q-QualMin OPTIONAL, + q-RxlevMin Q-RxlevMin OPTIONAL + }, + tdd SEQUENCE { + q-RxlevMin Q-RxlevMin OPTIONAL + }, + gsm SEQUENCE { + q-RxlevMin Q-RxlevMin OPTIONAL + } + } +} + +CellSelectReselectInfoSIB-11-12 ::= SEQUENCE { + q-Offset1S-N Q-OffsetS-N DEFAULT 0, + q-Offset2S-N Q-OffsetS-N OPTIONAL, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + hcs-NeighbouringCellInformation-RSCP + HCS-NeighbouringCellInformation-RSCP OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + q-QualMin Q-QualMin OPTIONAL, + q-RxlevMin Q-RxlevMin OPTIONAL + }, + tdd SEQUENCE { + q-RxlevMin Q-RxlevMin OPTIONAL + }, + gsm SEQUENCE { + q-RxlevMin Q-RxlevMin OPTIONAL + } + } +} + +CellSelectReselectInfoSIB-11-12-RSCP ::= SEQUENCE { + q-OffsetS-N Q-OffsetS-N DEFAULT 0, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + q-QualMin Q-QualMin OPTIONAL, + q-RxlevMin Q-RxlevMin OPTIONAL + }, + tdd SEQUENCE { + q-RxlevMin Q-RxlevMin OPTIONAL + }, + gsm SEQUENCE { + q-RxlevMin Q-RxlevMin OPTIONAL + } + } +} + +CellSelectReselectInfoSIB-11-12-ECN0 ::= SEQUENCE { + q-Offset1S-N Q-OffsetS-N DEFAULT 0, + q-Offset2S-N Q-OffsetS-N DEFAULT 0, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + q-QualMin Q-QualMin OPTIONAL, + q-RxlevMin Q-RxlevMin OPTIONAL + }, + tdd SEQUENCE { + q-RxlevMin Q-RxlevMin OPTIONAL + }, + gsm SEQUENCE { + q-RxlevMin Q-RxlevMin OPTIONAL + } + } +} + +CellSelectReselectInfoSIB-11-12-HCS-RSCP ::= SEQUENCE { + q-OffsetS-N Q-OffsetS-N DEFAULT 0, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + hcs-NeighbouringCellInformation-RSCP + HCS-NeighbouringCellInformation-RSCP OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + q-QualMin Q-QualMin OPTIONAL, + q-RxlevMin Q-RxlevMin OPTIONAL + }, + tdd SEQUENCE { + q-RxlevMin Q-RxlevMin OPTIONAL + }, + gsm SEQUENCE { + q-RxlevMin Q-RxlevMin OPTIONAL + } + } +} + +CellSelectReselectInfoSIB-11-12-HCS-ECN0 ::= SEQUENCE { + q-Offset1S-N Q-OffsetS-N DEFAULT 0, + q-Offset2S-N Q-OffsetS-N DEFAULT 0, + maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL, + hcs-NeighbouringCellInformation-ECN0 + HCS-NeighbouringCellInformation-ECN0 OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + q-QualMin Q-QualMin OPTIONAL, + q-RxlevMin Q-RxlevMin OPTIONAL + }, + tdd SEQUENCE { + q-RxlevMin Q-RxlevMin OPTIONAL + }, + gsm SEQUENCE { + q-RxlevMin Q-RxlevMin OPTIONAL + } + } +} + +CellSelectReselectInfo-v590ext ::= SEQUENCE { + deltaQrxlevmin DeltaQrxlevmin OPTIONAL, + deltaQhcs DeltaRSCP OPTIONAL +} + +CellSelectReselectInfoPCHFACH-v5b0ext ::= SEQUENCE { + q-Hyst-l-S-PCH Q-Hyst-S-Fine OPTIONAL, + q-Hyst-l-S-FACH Q-Hyst-S-Fine OPTIONAL, + q-Hyst-2-S-PCH Q-Hyst-S-Fine OPTIONAL, + q-Hyst-2-S-FACH Q-Hyst-S-Fine OPTIONAL, + t-Reselection-S-PCH T-Reselection-S OPTIONAL, + t-Reselection-S-FACH T-Reselection-S-Fine OPTIONAL +} + +CellSelectReselectInfoTreselectionScaling-v5c0ext ::= SEQUENCE { + -- For speed detection, the same HCS parameters are utilised + non-HCS-t-CR-Max T-CRMax OPTIONAL, + speedDependentScalingFactor SpeedDependentScalingFactor OPTIONAL, + interFrequencyTreselectionScalingFactor TreselectionScalingFactor OPTIONAL, + interRATTreselectionScalingFactor TreselectionScalingFactor OPTIONAL +} + +CellsForInterFreqMeasList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + InterFreqCellID + +CellsForInterRATMeasList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + InterRATCellID + +CellsForIntraFreqMeasList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + IntraFreqCellID + +CellsForIntraFreqMeasListOnSecULFreq ::= SEQUENCE (SIZE (1..maxCellMeasOnSecULFreq)) OF + IntraFreqCellIDOnSecULFreq + +CellSynchronisationInfo ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + countC-SFN-Frame-difference CountC-SFN-Frame-difference OPTIONAL, + tm INTEGER(0..38399) + }, + tdd SEQUENCE { + countC-SFN-Frame-difference CountC-SFN-Frame-difference OPTIONAL + } + } +} + +CellToReport ::= SEQUENCE { + bsicReported BSICReported +} + +CellToReportList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + CellToReport + +CNAVclockModel ::= SEQUENCE { + cnavToc BIT STRING (SIZE (11)), + cnavTop BIT STRING (SIZE (11)), + cnavURA0 BIT STRING (SIZE (5)), + cnavURA1 BIT STRING (SIZE (3)), + cnavURA2 BIT STRING (SIZE (3)), + cnavAf2 BIT STRING (SIZE (10)), + cnavAf1 BIT STRING (SIZE (20)), + cnavAf0 BIT STRING (SIZE (26)), + cnavTgd BIT STRING (SIZE (13)), + cnavISCl1cp BIT STRING (SIZE (13)) OPTIONAL, + cnavISCl1cd BIT STRING (SIZE (13)) OPTIONAL, + cnavISCl1ca BIT STRING (SIZE (13)) OPTIONAL, + cnavISCl2c BIT STRING (SIZE (13)) OPTIONAL, + cnavISCl5i5 BIT STRING (SIZE (13)) OPTIONAL, + cnavISCl5q5 BIT STRING (SIZE (13)) OPTIONAL +} + +CodePhaseSearchWindow ::= ENUMERATED { + w1023, w1, w2, w3, w4, w6, w8, + w12, w16, w24, w32, w48, w64, + w96, w128, w192 } + +CountC-SFN-Frame-difference ::= SEQUENCE { + -- Actual value countC-SFN-High = IE value * 256 + countC-SFN-High INTEGER(0..15), + off INTEGER(0..255) +} + +-- SPARE: CPICH-Ec-No, Max = 49 +-- Values above Max are spare +CPICH-Ec-N0 ::= INTEGER (0..63) + +-- SPARE: CPICH- RSCP, Max = 91 +-- Values above Max are spare +CPICH-RSCP ::= INTEGER (0..127) + +CSGCellInfo ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + startPSC PrimaryCPICH-Info, + numberOfPSCs INTEGER (1..512) + }, + tdd NULL + } +} + +CSGCellInfoList ::= SEQUENCE (SIZE (1..maxMeasCSGRange)) OF + CSGCellInfo + +CSGInterFreqCellInfo ::= SEQUENCE { + frequencyInfo FrequencyInfo, + cSGInterFreqCellInfoListperFreq CSGCellInfoList +} + +CSGInterFreqCellInfoList ::= SEQUENCE (SIZE (1..maxFreq)) OF + CSGInterFreqCellInfo + +CSGIntraFreqCellInfoList ::= CSGCellInfoList + +CSGProximityDetection ::= SEQUENCE { + uTRACSGProximityDetec ENUMERATED { enable } OPTIONAL, + e-UTRACSGProximityDetec ENUMERATED { enable } OPTIONAL +} + +CSGProximityIndication ::= SEQUENCE { + cSGproximityInd ENUMERATED {entering, leaving }, + radioAccessTechnology CHOICE { + uTRA SEQUENCE { + cSGFrequencyInfoUTRA FrequencyInfo + }, + e-UTRA SEQUENCE { + cSGFrequencyInfoEUTRA EARFCN + } + } +} + +CSGProximityIndication-vb50ext ::= SEQUENCE { + cSGFrequencyInfoEUTRA EARFCNExtension OPTIONAL +} + +DataBitAssistance ::= SEQUENCE { + ganss-signal-id GANSS-Signal-Id, + data-bits BIT STRING (SIZE (1..1024)) +} + +DataBitAssistanceList ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF + DataBitAssistanceSat + +DataBitAssistanceSat ::= SEQUENCE { + satID INTEGER(0..63), + dataBitAssistanceSgnList DataBitAssistanceSgnList +} + +DataBitAssistanceSgnList ::= SEQUENCE (SIZE (1..maxSgnType)) OF + DataBitAssistance + +DeltaPRC ::= INTEGER (-127..127) + +--Actual value DeltaQrxlevmin = IE value * 2 +DeltaQrxlevmin ::= INTEGER (-2..-1) + +DeltaRSCP ::= INTEGER (-5..-1) + +DeltaRSCPPerCell ::= SEQUENCE { + deltaRSCP DeltaRSCP OPTIONAL +} + +-- Actual value DeltaRRC = IE value * 0.032 +DeltaRRC ::= INTEGER (-7..7) + +DeltaUT1 ::= SEQUENCE { + b1 BIT STRING (SIZE (11)), + b2 BIT STRING (SIZE (10)) +} + +DGANSSInfo ::= SEQUENCE { + ganssSignalId GANSS-Signal-Id OPTIONAL, + ganssStatusHealth GANSS-Status-Health, + dgansssignalInformationList DGANSSSignalInformationList OPTIONAL +} + +DGANSSInfo-r9 ::= SEQUENCE { + ganssSignalId GANSS-Signal-Id OPTIONAL, + ganssStatusHealth GANSS-Status-Health, + dgansssignalInformationList DGANSSSignalInformationList-r9 OPTIONAL +} + +DGANSSInfo-v920ext ::= SEQUENCE { + dgansssignalInformationList DGANSSSignalInformationList-v920ext OPTIONAL +} + +DGANSSInfoList ::= SEQUENCE (SIZE (1..maxSgnType)) OF + DGANSSInfo + +DGANSSInfoList-r9 ::= SEQUENCE (SIZE (1..maxSgnType)) OF + DGANSSInfo-r9 + +DGANSSInfoList-v920ext ::= SEQUENCE (SIZE (1..maxSgnType)) OF + DGANSSInfo-v920ext + +DGANSSSignalInformation ::= SEQUENCE { + satId INTEGER (0..63), + iode-dganss BIT STRING (SIZE (10)), + udre UDRE, + ganss-prc INTEGER (-2047..2047), -- scale factor 0.32 + ganss-rrc INTEGER (-127..127) -- scale factor 0.032 +} + +DGANSSSignalInformation-r9 ::= SEQUENCE { + satId INTEGER (0..63), + iode-dganss BIT STRING (SIZE (10)), + udre UDRE, + ganss-prc INTEGER (-2047..2047), -- scale factor 0.32 + ganss-rrc INTEGER (-127..127), -- scale factor 0.032 + udreGrowthRate UDREGrowthRate OPTIONAL, + udreValidityTime UDREValidityTime OPTIONAL +} + +DGANSSSignalInformation-v920ext ::= SEQUENCE { + udreGrowthRate UDREGrowthRate OPTIONAL, + udreValidityTime UDREValidityTime OPTIONAL +} + +DGANSSSignalInformationList ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF + DGANSSSignalInformation + +DGANSSSignalInformationList-r9 ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF + DGANSSSignalInformation-r9 + +DGANSSSignalInformationList-v920ext ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF + DGANSSSignalInformation-v920ext + +DGANSS-Sig-Id-Req ::= BIT STRING (SIZE (8)) + +DGPS-CorrectionSatInfo ::= SEQUENCE { + satID SatID, + iode IODE, + udre UDRE, + prc PRC, + rrc RRC, +-- dummy1 and dummy2 are not used in this version of the specification and should be ignored. + dummy1 DeltaPRC, + dummy2 DeltaRRC, + -- dummy3 and dummy4 are not used in this version of the specification. They should not + -- be sent and if received they should be ignored. + dummy3 DeltaPRC OPTIONAL, + dummy4 DeltaRRC OPTIONAL +} + +DGPS-CorrectionSatInfo-r9 ::= SEQUENCE { + satID SatID, + iode IODE, + udre UDRE, + prc PRC, + rrc RRC, + udreGrowthRate UDREGrowthRate OPTIONAL, + udreValidityTime UDREValidityTime OPTIONAL +} + +DGPS-CorrectionSatInfo-v920ext ::= SEQUENCE { + udreGrowthRate UDREGrowthRate OPTIONAL, + udreValidityTime UDREValidityTime OPTIONAL +} + +DGPS-CorrectionSatInfoList ::= SEQUENCE (SIZE (1..maxSat)) OF + DGPS-CorrectionSatInfo + +DGPS-CorrectionSatInfoList-r9 ::= SEQUENCE (SIZE (1..maxSat)) OF + DGPS-CorrectionSatInfo-r9 + +DGPS-CorrectionSatInfoList-v920ext ::= SEQUENCE (SIZE (1..maxSat)) OF + DGPS-CorrectionSatInfo-v920ext + +DiffCorrectionStatus ::= ENUMERATED { + udre-1-0, udre-0-75, udre-0-5, udre-0-3, + udre-0-2, udre-0-1, noData, invalidData } + +DL-TransportChannelBLER ::= INTEGER (0..63) + +DopplerUncertainty ::= ENUMERATED { + hz12-5, hz25, hz50, hz100, hz200, + spare3, spare2, spare1 } + +EllipsoidPoint ::= SEQUENCE { + latitudeSign ENUMERATED { north, south }, + latitude INTEGER (0..8388607), + longitude INTEGER (-8388608..8388607) +} + + +EllipsoidPointAltitude ::= SEQUENCE { + latitudeSign ENUMERATED { north, south }, + latitude INTEGER (0..8388607), + longitude INTEGER (-8388608..8388607), + altitudeDirection ENUMERATED {height, depth}, + altitude INTEGER (0..32767) +} + + +EllipsoidPointAltitudeEllipsoide ::= SEQUENCE { + latitudeSign ENUMERATED { north, south }, + latitude INTEGER (0..8388607), + longitude INTEGER (-8388608..8388607), + altitudeDirection ENUMERATED {height, depth}, + altitude INTEGER (0..32767), + uncertaintySemiMajor INTEGER (0..127), + uncertaintySemiMinor INTEGER (0..127), + -- Actual value orientationMajorAxis = IE value * 2 + orientationMajorAxis INTEGER (0..89), + uncertaintyAltitude INTEGER (0..127), + confidence INTEGER (0..100) +} + + +EllipsoidPointUncertCircle ::= SEQUENCE { + latitudeSign ENUMERATED { north, south }, + latitude INTEGER (0..8388607), + longitude INTEGER (-8388608..8388607), + uncertaintyCode INTEGER (0..127) +} + + +EllipsoidPointUncertEllipse ::= SEQUENCE { + latitudeSign ENUMERATED { north, south }, + latitude INTEGER (0..8388607), + longitude INTEGER (-8388608..8388607), + uncertaintySemiMajor INTEGER (0..127), + uncertaintySemiMinor INTEGER (0..127), + -- Actual value orientationMajorAxis = IE value * 2 + orientationMajorAxis INTEGER (0..89), + confidence INTEGER (0..100) +} + + +EnvironmentCharacterisation ::= ENUMERATED { + possibleHeavyMultipathNLOS, + lightMultipathLOS, + notDefined, + spare } + +Eutra-EventResult ::= SEQUENCE { + earfcn EARFCN, + reportedCells SEQUENCE (SIZE (1..maxReportedEUTRACellPerFreq)) OF + EUTRA-PhysicalCellIdentity +} + +EUTRA-EventResult-vb50ext ::= SEQUENCE { + earfcn EARFCNExtension OPTIONAL +} + +Eutra-EventResultList ::= SEQUENCE (SIZE (1..maxReportedEUTRAFreqs)) OF + Eutra-EventResult + +EUTRA-EventResultList-vb50ext ::= SEQUENCE (SIZE (1..maxReportedEUTRAFreqs)) OF + EUTRA-EventResult-vb50ext + +EUTRA-EventResults ::= SEQUENCE { + eventID EventIDInterRAT, + eutra-EventResultsList Eutra-EventResultList +} + +EUTRA-EventResults-vb50ext ::= SEQUENCE { + eutra-EventResultsList EUTRA-EventResultList-vb50ext +} + +EUTRA-EventResultsForCELLFACH ::= SEQUENCE { + eutraFrequencyIndicator BIT STRING (SIZE (maxNumEUTRAFreqs-FACH)) +} + +EUTRA-FrequencyAndPriorityInfo ::= SEQUENCE { + earfcn EARFCN, + measurementBandwidth EUTRA-MeasurementBandwidth OPTIONAL, + priority INTEGER (0..maxPrio-1), + -- Actual value = IE value * 2 + qRxLevMinEUTRA INTEGER (-70..-22), + -- Actual value = IE value * 2 + threshXhigh INTEGER (0..31), + -- Actual value = IE value * 2 + threshXlow INTEGER (0..31), + eutra-blackListedCellList EUTRA-BlacklistedCellPerFreqList OPTIONAL, + eutraDetection BOOLEAN +} + +EUTRA-FrequencyAndPriorityInfo-v920ext ::= SEQUENCE { + qqualMinEUTRA INTEGER (-34..-3) OPTIONAL, + threshXhigh2 INTEGER (0..31) OPTIONAL, + threshXlow2 INTEGER (0..31) OPTIONAL +} + +EUTRA-FrequencyAndPriorityInfo-vb50ext ::= SEQUENCE { + qqualMinEUTRA-WB INTEGER (-34..-3) OPTIONAL +} + +EUTRA-FrequencyAndPriorityInfoExtension-vb50ext ::= SEQUENCE { + earfcn EARFCNExtension, + measurementBandwidth EUTRA-MeasurementBandwidth OPTIONAL, + priority INTEGER (0..maxPrio-1), + -- Actual value = IE value * 2 + qRxLevMinEUTRA INTEGER (-70..-22), + -- Actual value = IE value * 2 + threshXhigh INTEGER (0..31), + -- Actual value = IE value * 2 + threshXlow INTEGER (0..31), + qqualMinEUTRA INTEGER (-34..-3) OPTIONAL, + threshXhigh2 INTEGER (0..31) OPTIONAL, + threshXlow2 INTEGER (0..31) OPTIONAL, + eutra-blackListedCellList EUTRA-BlacklistedCellPerFreqList OPTIONAL, + eutraDetection BOOLEAN +} + +EUTRA-FrequencyAndPriorityInfoExtensionList ::= SEQUENCE (SIZE (1..maxNumEUTRAFreqs)) OF + EUTRA-FrequencyAndPriorityInfoExtension-vb50ext + +EUTRA-FrequencyAndPriorityInfoList ::= SEQUENCE (SIZE (1..maxNumEUTRAFreqs)) OF + EUTRA-FrequencyAndPriorityInfo + +EUTRA-FrequencyAndPriorityInfoList-v920ext ::= SEQUENCE (SIZE (1..maxNumEUTRAFreqs)) OF + EUTRA-FrequencyAndPriorityInfo-v920ext + +EUTRA-FrequencyAndPriorityInfoList-vb50ext ::= SEQUENCE (SIZE (1..maxNumEUTRAFreqs)) OF + EUTRA-FrequencyAndPriorityInfo-vb50ext + +EUTRA-FrequencyList ::= SEQUENCE { + eutraFrequencyRemoval EUTRA-FrequencyRemoval, + eutraNewFrequencies EUTRA-FrequencyInfoList OPTIONAL +} + +EUTRA-FrequencyList-r9 ::= SEQUENCE { + eutraFrequencyRemoval EUTRA-FrequencyRemoval, + eutraNewFrequencies EUTRA-FrequencyInfoList OPTIONAL, + eutraSIAcquisition EUTRA-SIAcquisition OPTIONAL +} + +EUTRA-FrequencyList-r11 ::= SEQUENCE { + eutraFrequencyRemoval EUTRA-FrequencyRemoval-r11, + eutraNewFrequencies EUTRA-FrequencyInfoList-r11 OPTIONAL, + eutraSIAcquisition EUTRA-SIAcquisition-r11 OPTIONAL +} + +EUTRA-SIAcquisition ::= SEQUENCE { + earfcn EARFCN, + physicalCellIdentity EUTRA-PhysicalCellIdentity +} + +EUTRA-SIAcquisition-r11 ::= SEQUENCE { +-- If the IE earfcn is set to a value of 65535, then the EARFCN +-- value for that instance shall be read from the IE earfcnExt. + earfcn EARFCN, + earfcnExt EARFCNExtension OPTIONAL, + physicalCellIdentity EUTRA-PhysicalCellIdentity +} + +EUTRA-MeasuredCells ::= SEQUENCE { + physicalCellIdentity EUTRA-PhysicalCellIdentity, + rSRP INTEGER (0..97) OPTIONAL, + rSRQ INTEGER (0..33) OPTIONAL +} + +Eutra-MeasuredResult ::= SEQUENCE { + earfcn EARFCN, + measuredEUTRACells SEQUENCE (SIZE (1..maxReportedEUTRACellPerFreq)) OF + EUTRA-MeasuredCells +} + +EUTRA-MeasuredResult-vb50ext ::= SEQUENCE { + earfcn EARFCNExtension OPTIONAL +} + +Eutra-MeasuredResultList ::= SEQUENCE (SIZE (1..maxReportedEUTRAFreqs)) OF + Eutra-MeasuredResult + +EUTRA-MeasuredResultList-vb50ext ::= SEQUENCE (SIZE (1..maxReportedEUTRAFreqs)) OF + EUTRA-MeasuredResult-vb50ext + +EUTRA-MeasuredResults ::= SEQUENCE { + eutraMeasuredResultList Eutra-MeasuredResultList +} + +EUTRA-MeasuredResults-vb50ext ::= SEQUENCE { + eutraMeasuredResultList EUTRA-MeasuredResultList-vb50ext +} + +EUTRA-MeasuredCells-v920ext ::= SEQUENCE { + eutraSIacquisitionResults EUTRA-SIacquisitionResults +} + +Eutra-MeasuredResult-v920ext ::= SEQUENCE { + measuredEUTRACells-v920ext SEQUENCE (SIZE (1..maxReportedEUTRACellPerFreq)) OF + EUTRA-MeasuredCells-v920ext +} + +Eutra-MeasuredResultList-v920ext ::= SEQUENCE (SIZE (1..maxReportedEUTRAFreqs)) OF + Eutra-MeasuredResult-v920ext + + +EUTRA-MeasuredResults-v920ext ::= SEQUENCE { + eutraMeasuredResultList-v920ext Eutra-MeasuredResultList-v920ext +} + +EUTRA-SIacquisitionResults ::= SEQUENCE { + cgiInfo SEQUENCE { + plmn-Identity PLMN-Identity, + cellIdentity BIT STRING (SIZE (28)), + trackingAreaCode BIT STRING (SIZE (16)) + }, + csgIdentity CSG-Identity OPTIONAL, + csgMemberIndication ENUMERATED { member } OPTIONAL +} + +EUTRA-FrequencyRemoval ::= CHOICE { + removeAllFrequencies NULL, + removeSomeFrequencies SEQUENCE (SIZE (1..maxNumEUTRAFreqs)) OF + EARFCN, + removeNoFrequencies NULL +} + +EUTRA-FrequencyRemoval-r11 ::= CHOICE { + removeAllFrequencies NULL, + removeSomeFrequencies FrequenciesToRemove, + removeNoFrequencies NULL +} + +EUTRA-FrequencyInfoList ::= SEQUENCE (SIZE (1..maxNumEUTRAFreqs)) OF + EUTRA-FrequencyInfo + +EUTRA-FrequencyInfoList-r11 ::= SEQUENCE (SIZE (1..maxNumEUTRAFreqs)) OF + EUTRA-FrequencyInfo-r11 + +EUTRA-FrequencyInfo ::= SEQUENCE { + earfcn EARFCN, + measurementBandwidth EUTRA-MeasurementBandwidth OPTIONAL, + eutra-blackListedCellList EUTRA-BlacklistedCellPerFreqList OPTIONAL +} + +EUTRA-FrequencyInfo-r11 ::= SEQUENCE { +-- If the IE earfcn is set to a value of 65535, then the EARFCN +-- value for that instance shall be read from the IE earfcnExt. + earfcn EARFCN, + earfcnExt EARFCNExtension OPTIONAL, + measurementBandwidth EUTRA-MeasurementBandwidth OPTIONAL, + eutra-blackListedCellList EUTRA-BlacklistedCellPerFreqList OPTIONAL, + widebandRSRQMeasurements ENUMERATED {true} OPTIONAL +} + +EUTRA-FrequencyRACHReportingInfo ::= SEQUENCE { + eutra-FrequencyListIndicator BIT STRING (SIZE (maxNumEUTRAFreqs)), + eutra-FrequencyRepQuantityRACH ENUMERATED { rsrp, rsrq }, + eutra-FrequencyRACHReportingThreshold INTEGER (0..97), + rachReportingPriority ENUMERATED { intraEUTRAInter, interIntraEUTRA, + interEUTRAIntra, eUTRAIntraInter, + eUTRAInterIntra, spare3, + spare2, spare1 } OPTIONAL +} + +EUTRA-MeasurementBandwidth ::= ENUMERATED { mbw6, mbw15, mbw25, mbw50, mbw75, mbw100 } + +EUTRA-MeasurementForCELLFACH ::= SEQUENCE { + eutraFrequenciesForMeasurement SEQUENCE (SIZE (1..maxNumEUTRAFreqs-FACH)) OF + EARFCNRange, + reportCriteria ENUMERATED { event-triggeredreporting, periodicalReporting }, + measurementQuantity ENUMERATED { rsrp, rsrq }, + reportingThreshold INTEGER (0..97) +} + +FrequenciesToRemove ::= SEQUENCE (SIZE (1..maxNumEUTRAFreqs)) OF + EARFCNRange + +Event1a ::= SEQUENCE { + triggeringCondition TriggeringCondition2, + reportingRange ReportingRange, + forbiddenAffectCellList ForbiddenAffectCellList OPTIONAL, + w W, + reportDeactivationThreshold ReportDeactivationThreshold, + reportingAmount ReportingAmount, + reportingInterval ReportingInterval +} + +Event1a-r4 ::= SEQUENCE { + triggeringCondition TriggeringCondition2, + reportingRange ReportingRange, + forbiddenAffectCellList ForbiddenAffectCellList-r4 OPTIONAL, + w W, + reportDeactivationThreshold ReportDeactivationThreshold, + reportingAmount ReportingAmount, + reportingInterval ReportingInterval +} + +Event1a-OnSecUlFreq-r9 ::= SEQUENCE { + triggeringCondition TriggeringCondition2, + reportingRange ReportingRange, + forbiddenAffectCellListOnSecULFreq ForbiddenAffectCellListOnSecULFreq OPTIONAL, + w W, + reportDeactivationThreshold ReportDeactivationThreshold, + reportingAmount ReportingAmount, + reportingInterval ReportingInterval +} + +Event1a-LCR-r4 ::= SEQUENCE { + triggeringCondition TriggeringCondition2, + reportingRange ReportingRange, + forbiddenAffectCellList ForbiddenAffectCellList-LCR-r4 OPTIONAL, + w W, + reportDeactivationThreshold ReportDeactivationThreshold, + reportingAmount ReportingAmount, + reportingInterval ReportingInterval +} + +Event1b ::= SEQUENCE { + triggeringCondition TriggeringCondition1, + reportingRange ReportingRange, + forbiddenAffectCellList ForbiddenAffectCellList OPTIONAL, + w W +} + +Event1b-r4 ::= SEQUENCE { + triggeringCondition TriggeringCondition1, + reportingRange ReportingRange, + forbiddenAffectCellList ForbiddenAffectCellList-r4 OPTIONAL, + w W +} + +Event1b-r7 ::= SEQUENCE { + triggeringCondition TriggeringCondition1, + reportingRange ReportingRange, + forbiddenAffectCellList ForbiddenAffectCellList-r4 OPTIONAL, + w W, + periodicReportingInfo-1b PeriodicReportingInfo-1b OPTIONAL +} + +Event1b-OnSecUlFreq-r9 ::= SEQUENCE { + triggeringCondition TriggeringCondition1, + reportingRange ReportingRange, + forbiddenAffectCellListOnSecULFreq ForbiddenAffectCellListOnSecULFreq OPTIONAL, + w W, + periodicReportingInfo-1b PeriodicReportingInfo-1b OPTIONAL +} + +Event1b-LCR-r4 ::= SEQUENCE { + triggeringCondition TriggeringCondition1, + reportingRange ReportingRange, + forbiddenAffectCellList ForbiddenAffectCellList-LCR-r4 OPTIONAL, + w W +} + +Event1c ::= SEQUENCE { + replacementActivationThreshold ReplacementActivationThreshold, + reportingAmount ReportingAmount, + reportingInterval ReportingInterval +} + +Event1d ::= SEQUENCE { + triggeringCondition TriggeringCondition2 OPTIONAL, + useCIO BOOLEAN OPTIONAL +} + +Event1e ::= SEQUENCE { + triggeringCondition TriggeringCondition2, + thresholdUsedFrequency ThresholdUsedFrequency +} + +Event1e-r6 ::= SEQUENCE { + triggeringCondition TriggeringCondition2, + thresholdUsedFrequency ThresholdUsedFrequency-r6 +} + +Event1f ::= SEQUENCE { + triggeringCondition TriggeringCondition1, + thresholdUsedFrequency ThresholdUsedFrequency +} + +Event1f-r6 ::= SEQUENCE { + triggeringCondition TriggeringCondition1, + thresholdUsedFrequency ThresholdUsedFrequency-r6 +} + +Event1j-r6 ::= SEQUENCE { + replacementActivationThreshold ReplacementActivationThreshold, + reportingAmount ReportingAmount, + reportingInterval ReportingInterval +} + +Event2a ::= SEQUENCE { + -- dummy is not used in this version of the specification and should be ignored + dummy Threshold, + usedFreqW W, + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL, + nonUsedFreqParameterList NonUsedFreqParameterList OPTIONAL +} + +Event2a-r6 ::= SEQUENCE { + usedFreqW W, + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL, + nonUsedFreqParameterList NonUsedFreqWList-r6 OPTIONAL +} + +Event2a-r10 ::= SEQUENCE { + usedFreqW W, + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus-r10 OPTIONAL, + nonUsedFreqParameterList NonUsedFreq2aParameterList-r10 OPTIONAL +} + +Event2a-r11 ::= SEQUENCE { + usedFreqW W, + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus-r10 OPTIONAL, + nonUsedFreqParameterList NonUsedFreq2aParameterList-r11 OPTIONAL +} + +Event2b ::= SEQUENCE { + usedFreqThreshold Threshold, + usedFreqW W, + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL, + nonUsedFreqParameterList NonUsedFreqParameterList OPTIONAL +} + +Event2b-r6 ::= SEQUENCE { + usedFreqThreshold Threshold-r6, + usedFreqW W, + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL, + nonUsedFreqParameterList NonUsedFreqParameterList-r6 OPTIONAL +} + +Event2b-r10 ::= SEQUENCE { + usedFreqThreshold Threshold-r6, + usedFreqW W, + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus-r10 OPTIONAL, + nonUsedFreqParameterList NonUsedFreqParameterList-r10 OPTIONAL +} + +Event2b-r11 ::= SEQUENCE { + usedFreqThreshold Threshold-r6, + usedFreqW W, + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus-r10 OPTIONAL, + nonUsedFreqParameterList NonUsedFreqParameterList-r11 OPTIONAL +} + +Event2c ::= SEQUENCE { + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL, + nonUsedFreqParameterList NonUsedFreqParameterList OPTIONAL +} + +Event2c-r6 ::= SEQUENCE { + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL, + nonUsedFreqParameterList NonUsedFreqParameterList-r6 OPTIONAL +} + +Event2c-r10 ::= SEQUENCE { + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus-r10 OPTIONAL, + nonUsedFreqParameterList NonUsedFreqParameterList-r10 OPTIONAL +} + +Event2c-r11 ::= SEQUENCE { + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus-r10 OPTIONAL, + nonUsedFreqParameterList NonUsedFreqParameterList-r11 OPTIONAL +} + +Event2d ::= SEQUENCE { + usedFreqThreshold Threshold, + usedFreqW W, + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL +} + +Event2d-r6 ::= SEQUENCE { + usedFreqThreshold Threshold-r6, + usedFreqW W, + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL +} + +Event2d-r10 ::= SEQUENCE { + usedFreqThreshold Threshold-r6, + usedFreqW W, + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus-r10 OPTIONAL +} + +Event2e ::= SEQUENCE { + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL, + nonUsedFreqParameterList NonUsedFreqParameterList OPTIONAL +} + +Event2e-r6 ::= SEQUENCE { + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL, + nonUsedFreqParameterList NonUsedFreqParameterList-r6 OPTIONAL +} + +Event2e-r10 ::= SEQUENCE { + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus-r10 OPTIONAL, + nonUsedFreqParameterList NonUsedFreqParameterList-r10 OPTIONAL +} + +Event2e-r11 ::= SEQUENCE { + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus-r10 OPTIONAL, + nonUsedFreqParameterList NonUsedFreqParameterList-r11 OPTIONAL +} + +Event2f ::= SEQUENCE { + usedFreqThreshold Threshold, + usedFreqW W, + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL +} + +Event2f-r6 ::= SEQUENCE { + usedFreqThreshold Threshold-r6, + usedFreqW W, + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL +} + +Event2f-r10 ::= SEQUENCE { + usedFreqThreshold Threshold-r6, + usedFreqW W, + hysteresis HysteresisInterFreq, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus-r10 OPTIONAL +} + +Event3a ::= SEQUENCE { + thresholdOwnSystem Threshold, + w W, + thresholdOtherSystem Threshold, + hysteresis Hysteresis, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL +} + +Event3b ::= SEQUENCE { + thresholdOtherSystem Threshold, + hysteresis Hysteresis, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL + +} + +Event3c ::= SEQUENCE { + thresholdOtherSystem Threshold, + hysteresis Hysteresis, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL +} + +Event3d ::= SEQUENCE { + hysteresis Hysteresis, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL +} + +EventIDInterFreq ::= ENUMERATED { + e2a, e2b, e2c, e2d, e2e, e2f, spare2, spare1 } + +EventIDInterRAT ::= ENUMERATED { + e3a, e3b, e3c, e3d } + +EventIDIntraFreq ::= ENUMERATED { + e1a, e1b, e1c, e1d, e1e, + e1f, e1g, e1h, e1i, e1j, + spare6, spare5, spare4, spare3, spare2, + spare1 } + +EventResults ::= CHOICE { + intraFreqEventResults IntraFreqEventResults, + interFreqEventResults InterFreqEventResults, + interRATEventResults InterRATEventResults, + trafficVolumeEventResults TrafficVolumeEventResults, + qualityEventResults QualityEventResults, + ue-InternalEventResults UE-InternalEventResults, + ue-positioning-MeasurementEventResults UE-Positioning-MeasurementEventResults, + spare NULL +} + +EventResults-v770ext ::= CHOICE { + ue-positioning-MeasurementEventResults UE-Positioning-MeasurementEventResults-v770ext +} + +EventResults-v860ext ::= CHOICE { + ue-positioning-MeasurementEventResults UE-Positioning-MeasurementEventResults-v860ext +} + +EventResults-va40ext ::= CHOICE { + interFreqEventResults InterFreqEventResults-va40ext +} + +EventResultsOnSecUlFreq ::= SEQUENCE { + intraFreqEventResults IntraFreqEventResultsOnSecUlFreq +} + +ExtraDoppler ::= SEQUENCE { + -- Doppler 1st order term, -0.2..+0.1 m/s2 + -- ( = -42..+21 with 1/210 m/s2 resolution) + dopplerFirstOrder INTEGER (-42.. 21), + dopplerUncertainty ENUMERATED { dopU40, dopU20, dopU10, dopU5, dopU2-5, + spare3, spare2, spare1 } +} + +ExtraDopplerInfo ::= SEQUENCE { + -- Actual value doppler1stOrder = IE value * 0.023 + doppler1stOrder INTEGER (-42..21), + dopplerUncertainty DopplerUncertainty +} + +FACH-MeasurementOccasionInfo ::= SEQUENCE { + fACH-meas-occasion-coeff INTEGER (1..12) OPTIONAL, + inter-freq-FDD-meas-ind BOOLEAN, + -- inter-freq-TDD-meas-ind is for 3.84Mcps TDD and 7.68 Mcps TDD. For 1.28Mcps TDD, the IE in + -- FACH-MeasurementOccasionInfo-LCR-r4-ext is used. + inter-freq-TDD-meas-ind BOOLEAN, + inter-RAT-meas-ind SEQUENCE (SIZE (1..maxOtherRAT)) OF + RAT-Type OPTIONAL +} + +FACH-MeasurementOccasionInfo-LCR-r4-ext ::= SEQUENCE { + inter-freq-TDD128-meas-ind BOOLEAN +} + +FilterCoefficient ::= ENUMERATED { + fc0, fc1, fc2, fc3, fc4, fc5, + fc6, fc7, fc8, fc9, fc11, fc13, + fc15, fc17, fc19, spare1 } + +-- Actual value FineSFN-SFN = IE value * 0.0625 +FineSFN-SFN ::= INTEGER (0..15) + +ForbiddenAffectCell ::= CHOICE { + fdd PrimaryCPICH-Info, + tdd PrimaryCCPCH-Info +} + +ForbiddenAffectCell-r4 ::= CHOICE { + fdd PrimaryCPICH-Info, + tdd PrimaryCCPCH-Info-r4 +} + +ForbiddenAffectCell-LCR-r4 ::= SEQUENCE { + tdd PrimaryCCPCH-Info-LCR-r4 +} + +ForbiddenAffectCellList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + ForbiddenAffectCell + +ForbiddenAffectCellList-r4 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + ForbiddenAffectCell-r4 + +ForbiddenAffectCellList-LCR-r4 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + ForbiddenAffectCell-LCR-r4 + +ForbiddenAffectCellListOnSecULFreq ::= SEQUENCE (SIZE (1.. maxCellMeasOnSecULFreq)) OF + ForbiddenAffectCellOnSecULFreq + +ForbiddenAffectCellOnSecULFreq ::= SEQUENCE { + primaryCPICH PrimaryCPICH-Info +} + +FreqQualityEstimateQuantity-FDD ::= ENUMERATED { + cpich-Ec-N0, + cpich-RSCP } + +FreqQualityEstimateQuantity-TDD ::= ENUMERATED { + primaryCCPCH-RSCP } + +GanssDataBits ::= SEQUENCE { + ganssTod INTEGER (0..86399), + dataBitAssistance ReqDataBitAssistance +} + +GANSSDecipheringKeys ::= SEQUENCE { + currentDecipheringKey BIT STRING (SIZE (56)), + nextDecipheringKey BIT STRING (SIZE (56)) +} + +GANSSGenericData ::= SEQUENCE { + ganssId INTEGER (0..7) OPTIONAL, + ganssTimeModelsList GANSSTimeModelsList OPTIONAL, + uePositioningDGANSSCorrections UE-Positioning-DGANSSCorrections OPTIONAL, + uePositioningGANSSNavigationModel UE-Positioning-GANSS-NavigationModel OPTIONAL, + uePositioningGANSSRealTimeIntegrity UE-Positioning-GANSS-RealTimeIntegrity OPTIONAL, + uePositioningGANSSDataBitAssistance UE-Positioning-GANSS-Data-Bit-Assistance OPTIONAL, + uePositioningGANSSReferenceMeasurementInfo + UE-Positioning-GANSS-ReferenceMeasurementInfo OPTIONAL, + uePositioningGANSSAlmanac UE-Positioning-GANSS-Almanac OPTIONAL, + uePositioningGANSSUTCModel UE-Positioning-GANSS-UTCModel OPTIONAL +} + +GANSSGenericData-v860ext ::= SEQUENCE { + uePositiningGANSSsbasID UE-Positioning-GANSS-SBAS-ID OPTIONAL, + uePositioningGANSSAddNavigationModels + UE-Positioning-GANSS-AddNavigationModels OPTIONAL, + uePositioningGANSSAlmanac UE-Positioning-GANSS-Almanac-v860ext OPTIONAL, + uePositioningGANSSAddUTCModels UE-Positioning-GANSS-AddUTCModels OPTIONAL, + uePositioningGANSSAuxiliaryInfo UE-Positioning-GANSS-AuxiliaryInfo OPTIONAL +} + +GANSSGenericData-r8 ::= SEQUENCE { + ganssId INTEGER (0..7) OPTIONAL, + uePositiningGANSSsbasID UE-Positioning-GANSS-SBAS-ID OPTIONAL, + ganssTimeModelsList GANSSTimeModelsList OPTIONAL, + uePositioningDGANSSCorrections UE-Positioning-DGANSSCorrections OPTIONAL, + uePositioningGANSSNavigationModel UE-Positioning-GANSS-NavigationModel OPTIONAL, + uePositioningGANSSAddNavigationModels + UE-Positioning-GANSS-AddNavigationModels OPTIONAL, + uePositioningGANSSRealTimeIntegrity UE-Positioning-GANSS-RealTimeIntegrity OPTIONAL, + uePositioningGANSSDataBitAssistance UE-Positioning-GANSS-Data-Bit-Assistance OPTIONAL, + uePositioningGANSSReferenceMeasurementInfo + UE-Positioning-GANSS-ReferenceMeasurementInfo OPTIONAL, + uePositioningGANSSAlmanac UE-Positioning-GANSS-Almanac-r8 OPTIONAL, + uePositioningGANSSUTCModel UE-Positioning-GANSS-UTCModel OPTIONAL, + uePositioningGANSSAddUTCModels UE-Positioning-GANSS-AddUTCModels OPTIONAL, + uePositioningGANSSAuxiliaryInfo UE-Positioning-GANSS-AuxiliaryInfo OPTIONAL +} + +GANSSGenericData-r9 ::= SEQUENCE { + ganssId INTEGER (0..7) OPTIONAL, + uePositiningGANSSsbasID UE-Positioning-GANSS-SBAS-ID OPTIONAL, + ganssTimeModelsList GANSSTimeModelsList OPTIONAL, + uePositioningDGANSSCorrections UE-Positioning-DGANSSCorrections-r9 OPTIONAL, + uePositioningGANSSNavigationModel UE-Positioning-GANSS-NavigationModel OPTIONAL, + uePositioningGANSSAddNavigationModels + UE-Positioning-GANSS-AddNavigationModels OPTIONAL, + uePositioningGANSSRealTimeIntegrity UE-Positioning-GANSS-RealTimeIntegrity OPTIONAL, + uePositioningGANSSDataBitAssistance UE-Positioning-GANSS-Data-Bit-Assistance OPTIONAL, + uePositioningGANSSReferenceMeasurementInfo + UE-Positioning-GANSS-ReferenceMeasurementInfo OPTIONAL, + uePositioningGANSSAlmanac UE-Positioning-GANSS-Almanac-r8 OPTIONAL, + uePositioningGANSSUTCModel UE-Positioning-GANSS-UTCModel OPTIONAL, + uePositioningGANSSAddUTCModels UE-Positioning-GANSS-AddUTCModels OPTIONAL, + uePositioningGANSSAuxiliaryInfo UE-Positioning-GANSS-AuxiliaryInfo OPTIONAL +} + +GANSSGenericData-v920ext ::= SEQUENCE { + uePositioningDGANSSCorrections UE-Positioning-DGANSSCorrections-v920ext OPTIONAL +} + +GANSSGenericData-va40ext ::= SEQUENCE { + ganssTimeModelsList GANSSTimeModelsList-va40ext OPTIONAL, + uePositioningGANSSReferenceMeasurementInfo + UE-Positioning-GANSS-ReferenceMeasurementInfo-va40ext + OPTIONAL, + uePositioningGANSSAlmanac UE-Positioning-GANSS-Almanac-va40ext OPTIONAL +} + +GANSSGenericData-r10 ::= SEQUENCE { + ganssId INTEGER (0..7) OPTIONAL, + uePositiningGANSSsbasID UE-Positioning-GANSS-SBAS-ID OPTIONAL, + ganssTimeModelsList GANSSTimeModelsList-r10 OPTIONAL, + uePositioningDGANSSCorrections UE-Positioning-DGANSSCorrections-r9 OPTIONAL, + uePositioningGANSSNavigationModel UE-Positioning-GANSS-NavigationModel OPTIONAL, + uePositioningGANSSAddNavigationModels + UE-Positioning-GANSS-AddNavigationModels OPTIONAL, + uePositioningGANSSRealTimeIntegrity UE-Positioning-GANSS-RealTimeIntegrity OPTIONAL, + uePositioningGANSSDataBitAssistance UE-Positioning-GANSS-Data-Bit-Assistance OPTIONAL, + uePositioningGANSSReferenceMeasurementInfo + UE-Positioning-GANSS-ReferenceMeasurementInfo-r10 + OPTIONAL, + uePositioningGANSSAlmanac UE-Positioning-GANSS-Almanac-r10 OPTIONAL, + uePositioningGANSSUTCModel UE-Positioning-GANSS-UTCModel OPTIONAL, + uePositioningGANSSAddUTCModels UE-Positioning-GANSS-AddUTCModels OPTIONAL, + uePositioningGANSSAuxiliaryInfo UE-Positioning-GANSS-AuxiliaryInfo OPTIONAL +} + +GANSSGenericDataList ::= SEQUENCE (SIZE (1..maxGANSS)) OF + GANSSGenericData + +GANSSGenericDataList-v860ext ::= SEQUENCE (SIZE (1..maxGANSS)) OF + GANSSGenericData-v860ext + +GANSSGenericDataList-r8 ::= SEQUENCE (SIZE (1..maxGANSS)) OF + GANSSGenericData-r8 + +GANSSGenericDataList-r9 ::= SEQUENCE (SIZE (1..maxGANSS)) OF + GANSSGenericData-r9 + +GANSSGenericDataList-v920ext ::= SEQUENCE (SIZE (1..maxGANSS)) OF + GANSSGenericData-v920ext + +GANSSGenericDataList-va40ext ::= SEQUENCE (SIZE (1..maxGANSS)) OF + GANSSGenericData-va40ext + +GANSSGenericDataList-r10 ::= SEQUENCE (SIZE (1..maxGANSS)) OF + GANSSGenericData-r10 + +GANSSGenericMeasurementInfo ::= SEQUENCE (SIZE (1..maxGANSS)) OF SEQUENCE { + ganssId INTEGER (0..7) OPTIONAL, + ganssMeasurementSignalList GANSSMeasurementSignalList +} + +GANSSGenericMeasurementInfo-v860ext ::= SEQUENCE (SIZE (1..maxGANSS)) OF SEQUENCE { + ganssMeasurementSignalList GANSSMeasurementSignalList-v860ext +} + +GANSSMeasurementParameters ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF SEQUENCE { + satId INTEGER (0..63), + cSurNzero INTEGER (0..63), + multipathIndicator ENUMERATED { nm, low, medium, high }, + carrierQualityIndication BIT STRING (SIZE (2)) OPTIONAL, + ganssCodePhase INTEGER (0..2097151), + ganssIntegerCodePhase INTEGER (0..63) OPTIONAL, + codePhaseRmsError INTEGER (0..63), + doppler INTEGER (-32768..32767), + adr INTEGER (0..33554431) OPTIONAL +} + +GANSSMeasurementParameters-v860ext ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF SEQUENCE { + ganssIntegerCodePhaseExt INTEGER (64..127) OPTIONAL +} + +GANSSMeasurementSignalList ::= SEQUENCE (SIZE (1..maxSgnType)) OF SEQUENCE { + ganssSignalId GANSS-Signal-Id OPTIONAL, + ganssCodePhaseAmbiguity INTEGER (0..31) OPTIONAL, + ganssMeasurementParameters GANSSMeasurementParameters +} + +GANSSMeasurementSignalList-v860ext ::= SEQUENCE (SIZE (1..maxSgnType)) OF SEQUENCE { + ganssCodePhaseAmbiguityExt INTEGER (32..127) OPTIONAL, + ganssMeasurementParameters GANSSMeasurementParameters-v860ext +} + +GanssNavigationModelAdditionalData ::= SEQUENCE { + ganssWeek INTEGER (0..4095), + ganssToe INTEGER (0..167), + t-toeLimit INTEGER (0..10), + satellitesListRelatedDataList SatellitesListRelatedDataList OPTIONAL +} + +GANSSReferenceTimeOnly ::= SEQUENCE { + gANSS-tod INTEGER (0..3599999), + gANSS-timeId INTEGER (0..7) OPTIONAL, + gANSS-tod-uncertainty INTEGER (0..127) OPTIONAL +} + +GanssReqGenericData ::= SEQUENCE { + ganssId INTEGER (0..7) OPTIONAL, + ganssRealTimeIntegrity BOOLEAN, + ganssDifferentialCorrection DGANSS-Sig-Id-Req OPTIONAL, + ganssAlmanac BOOLEAN, + ganssNavigationModel BOOLEAN, + ganssTimeModelGNSS-GNSS BIT STRING (SIZE (8)) OPTIONAL, + ganssReferenceMeasurementInfo BOOLEAN, + ganssDataBits GanssDataBits OPTIONAL, + ganssUTCModel BOOLEAN, + ganssNavigationModelAdditionalData GanssNavigationModelAdditionalData OPTIONAL +} + +GanssReqGenericData-v860ext ::= SEQUENCE { + sbasId UE-Positioning-GANSS-SBAS-ID OPTIONAL, + ganssAddNavigationModel ENUMERATED { true } OPTIONAL, + ganssAddUTCmodel ENUMERATED { true } OPTIONAL, + ganssAuxInfo ENUMERATED { true } OPTIONAL, + ganssAddADchoices SEQUENCE { + orbitModelID INTEGER (0..7) OPTIONAL, + clockModelID INTEGER (0..7) OPTIONAL, + utcModelID INTEGER (0..7) OPTIONAL, + almanacModelID INTEGER (0..7) OPTIONAL + } OPTIONAL +} + +GanssRequestedGenericAssistanceDataList ::= SEQUENCE (SIZE (1..maxGANSS)) OF + GanssReqGenericData + +GanssRequestedGenericAssistanceDataList-v860ext ::= SEQUENCE (SIZE (1..maxGANSS)) OF + GanssReqGenericData-v860ext + +GANSSSatelliteInformation ::= SEQUENCE { + ganssSatId INTEGER (0..63), + dopplerZeroOrder INTEGER (-2048..2047), -- scale factor 0.5m/s + extraDoppler ExtraDoppler OPTIONAL, + codePhase INTEGER (0..1023), + integerCodePhase INTEGER (0..127), + codePhaseSearchWindow BIT STRING (SIZE (5)), + azimuthandElevation AzimuthAndElevation OPTIONAL +} + +GANSSSatelliteInformation-va40ext ::= SEQUENCE { + azimuthAndElevation AzimuthAndElevation-va40ext OPTIONAL +} + +GANSSSatelliteInformation-r10 ::= SEQUENCE { + ganssSatId INTEGER (0..63), + dopplerZeroOrder INTEGER (-2048..2047), -- scale factor 0.5m/s + extraDoppler ExtraDoppler OPTIONAL, + codePhase INTEGER (0..1023), + integerCodePhase INTEGER (0..127), + codePhaseSearchWindow BIT STRING (SIZE (5)), + azimuthandElevation AzimuthAndElevation-r10 OPTIONAL +} + +GANSSSatelliteInformationList ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF + GANSSSatelliteInformation + +GANSSSatelliteInformationList-va40ext ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF + GANSSSatelliteInformation-va40ext + +GANSSSatelliteInformationList-r10 ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF + GANSSSatelliteInformation-r10 + +GANSSTimeModelsList ::= SEQUENCE (SIZE (1..maxGANSS-1)) OF + UE-Positioning-GANSS-TimeModel + +GANSSTimeModelsList-va40ext ::= SEQUENCE (SIZE (1.. maxGANSS-1)) OF + UE-Positioning-GANSS-TimeModel-va40ext + +GANSSTimeModelsList-r10 ::= SEQUENCE (SIZE (1..maxGANSS-1)) OF + UE-Positioning-GANSS-TimeModel-r10 + +GANSS-SAT-Info-Almanac-GLOkp ::= SEQUENCE { + gloAlmNA BIT STRING (SIZE (11)), + gloAlmnA BIT STRING (SIZE (5)), + gloAlmHA BIT STRING (SIZE (5)), + gloAlmLambdaA BIT STRING (SIZE (21)), + gloAlmTlambdaA BIT STRING (SIZE (21)), + gloAlmDeltaIA BIT STRING (SIZE (18)), + gloAkmDeltaTA BIT STRING (SIZE (22)), + gloAlmDeltaTdotA BIT STRING (SIZE (7)), + gloAlmEpsilonA BIT STRING (SIZE (15)), + gloAlmOmegaA BIT STRING (SIZE (16)), + gloAlmTauA BIT STRING (SIZE (10)), + gloAlmCA BIT STRING (SIZE (1)), + gloAlmMA BIT STRING (SIZE (2)) OPTIONAL +} + +GANSS-SAT-Info-Almanac-Kp ::= SEQUENCE { + svId INTEGER(0..63), + ganss-alm-e BIT STRING (SIZE (11)), + ganss-delta-I-alm BIT STRING (SIZE (11)), + ganss-omegadot-alm BIT STRING (SIZE (11)), + ganss-svhealth-alm BIT STRING (SIZE (4)), + ganss-delta-a-sqrt-alm BIT STRING (SIZE (17)), + ganss-omegazero-alm BIT STRING (SIZE (16)), + ganss-m-zero-alm BIT STRING (SIZE (16)), + ganss-omega-alm BIT STRING (SIZE (16)), + ganss-af-zero-alm BIT STRING (SIZE (14)), + ganss-af-one-alm BIT STRING (SIZE (11)) +} + +GANSS-SAT-Info-Almanac-MIDIkp ::= SEQUENCE { + svID INTEGER(0..63), + midiAlmE BIT STRING (SIZE (11)), + midiAlmDeltaI BIT STRING (SIZE (11)), + midiAlmOmegaDot BIT STRING (SIZE (11)), + midiAlmSqrtA BIT STRING (SIZE (17)), + midiAlmOmega0 BIT STRING (SIZE (16)), + midiAlmOmega BIT STRING (SIZE (16)), + midiAlmMo BIT STRING (SIZE (16)), + midiAlmaf0 BIT STRING (SIZE (11)), + midiAlmaf1 BIT STRING (SIZE (10)), + midiAlmL1Health BIT STRING (SIZE (1)), + midiAlmL2Health BIT STRING (SIZE (1)), + midiAlmL5Health BIT STRING (SIZE (1)) +} + +GANSS-SAT-Info-Almanac-NAVkp ::= SEQUENCE { + svID INTEGER(0..63), + navAlmE BIT STRING (SIZE (16)), + navAlmDeltaI BIT STRING (SIZE (16)), + navAlmOMEGADOT BIT STRING (SIZE (16)), + navAlmSVHealth BIT STRING (SIZE (8)), + navAlmSqrtA BIT STRING (SIZE (24)), + navAlmOMEGAo BIT STRING (SIZE (24)), + navAlmOmega BIT STRING (SIZE (24)), + navAlmMo BIT STRING (SIZE (24)), + navAlmaf0 BIT STRING (SIZE (11)), + navAlmaf1 BIT STRING (SIZE (11)) +} + +GANSS-SAT-Info-Almanac-REDkp ::= SEQUENCE { + svID INTEGER(0..63), + redAlmDeltaA BIT STRING (SIZE (8)), + redAlmOmega0 BIT STRING (SIZE (7)), + redAlmPhi0 BIT STRING (SIZE (7)), + redAlmL1Health BIT STRING (SIZE (1)), + redAlmL2Health BIT STRING (SIZE (1)), + redAlmL5Health BIT STRING (SIZE (1)) +} + +GANSS-SAT-Info-Almanac-SBASecef ::= SEQUENCE { + sbasAlmDataID BIT STRING (SIZE (2)), + svID INTEGER (0..63), + sbasAlmHealth BIT STRING (SIZE (8)), + sbasAlmXg BIT STRING (SIZE (15)), + sbasAlmYg BIT STRING (SIZE (15)), + sbasAlmZg BIT STRING (SIZE (9)), + sbasAlmXgdot BIT STRING (SIZE (3)), + sbasAlmYgDot BIT STRING (SIZE (3)), + sbasAlmZgDot BIT STRING (SIZE (4)), + sbasAlmTo BIT STRING (SIZE (11)) +} + +GANSS-SAT-Info-Almanac-GLOkpList ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF + GANSS-SAT-Info-Almanac-GLOkp + +GANSS-SAT-Info-Almanac-KpList ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF + GANSS-SAT-Info-Almanac-Kp + +GANSS-SAT-Info-Almanac-MIDIkpList ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF + GANSS-SAT-Info-Almanac-MIDIkp + +GANSS-SAT-Info-Almanac-NAVkpList ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF + GANSS-SAT-Info-Almanac-NAVkp + +GANSS-SAT-Info-Almanac-REDkpList ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF + GANSS-SAT-Info-Almanac-REDkp + +GANSS-SAT-Info-Almanac-SBASecefList ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF + GANSS-SAT-Info-Almanac-SBASecef + +Ganss-Sat-Info-AddNav ::= SEQUENCE { + satId INTEGER (0..63), + svHealth BIT STRING (SIZE (6)), + iod BIT STRING (SIZE (11)), + ganssClockModel UE-Positioning-GANSS-AddClockModels, + ganssOrbitModel UE-Positioning-GANSS-AddOrbitModels +} + +Ganss-Sat-Info-Nav ::= SEQUENCE { + satId INTEGER (0..63), + svHealth BIT STRING (SIZE (5)), + iod BIT STRING (SIZE (10)), + ganssClockModel UE-Positioning-GANSS-ClockModel, + ganssOrbitModel UE-Positioning-GANSS-OrbitModel +} + +Ganss-Sat-Info-AddNavList ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF + Ganss-Sat-Info-AddNav + +Ganss-Sat-Info-NavList ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF + Ganss-Sat-Info-Nav + +GANSS-Signal-Id ::= INTEGER (0..7) + +GANSS-Status-Health ::= ENUMERATED { + udre-scale-1dot0, + udre-scale-0dot75, + udre-scale-0dot5, + udre-scale-0dot3, + udre-scale-0dot2, + udre-scale-0dot1, + no-data, + invalid-data } + +GANSS-Storm-Flag ::= SEQUENCE { + storm-flag-one BOOLEAN, + storm-flag-two BOOLEAN, + storm-flag-three BOOLEAN, + storm-flag-four BOOLEAN, + storm-flag-five BOOLEAN +} + +GLONASSclockModel ::= SEQUENCE { + gloTau BIT STRING (SIZE (22)), + gloGamma BIT STRING (SIZE (11)), + gloDeltaTau BIT STRING (SIZE (5)) OPTIONAL +} + +GPS-MeasurementParam ::= SEQUENCE { + satelliteID INTEGER (0..63), + c-N0 INTEGER (0..63), + doppler INTEGER (-32768..32768), + wholeGPS-Chips INTEGER (0..1022), + fractionalGPS-Chips INTEGER (0..1023), + multipathIndicator MultipathIndicator, + pseudorangeRMS-Error INTEGER (0..63) +} + +GPS-MeasurementParamList ::= SEQUENCE (SIZE (1..maxSat)) OF + GPS-MeasurementParam + +GSM-CarrierRSSI ::= BIT STRING (SIZE (6)) + +GSM-CellGroup ::= SEQUENCE { + startingARFCN BCCH-ARFCN, + bandIndicator ENUMERATED { dcs1800, pcs1900 }, + followingARFCNs CHOICE { + explicitListOfARFCNs SEQUENCE (SIZE (0..31)) OF BCCH-ARFCN, + equallySpacedARFCNs SEQUENCE { + arfcn-Spacing INTEGER (1..8), + numberOfFollowingARFCNs INTEGER (0..31) + }, + variableBitMapOfARFCNs OCTET STRING (SIZE (1..16)), + continuousRangeOfARFCNs SEQUENCE { + endingARFCN BCCH-ARFCN + } + } +} + +GSM-MeasuredResults ::= SEQUENCE { + gsm-CarrierRSSI GSM-CarrierRSSI OPTIONAL, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy INTEGER (46..173) OPTIONAL, + bsicReported BSICReported, + -- dummy2 is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy2 ObservedTimeDifferenceToGSM OPTIONAL +} + +GSM-MeasuredResultsList ::= SEQUENCE (SIZE (1..maxReportedGSMCells)) OF + GSM-MeasuredResults + +GPS-TOW-1msec ::= INTEGER (0..604799999) + +GPS-TOW-1sec ::= INTEGER (0..604799) + +GPS-TOW-Assist ::= SEQUENCE { + satID SatID, + tlm-Message BIT STRING (SIZE (14)), + tlm-Reserved BIT STRING (SIZE (2)), + alert BOOLEAN, + antiSpoof BOOLEAN +} + +GPS-TOW-AssistList ::= SEQUENCE (SIZE (1..maxSat)) OF + GPS-TOW-Assist + +GSM-CellID ::= SEQUENCE { + gsm-CellID INTEGER (0..maxCellMeas-1) +} + +GSM-PriorityInfo ::= SEQUENCE { + gsmCellGroup GSM-CellGroup, + priority INTEGER (0..maxPrio-1), + -- Actual value = IE value * 2 + 1 + qRxLevMinGSM INTEGER (-58..-13), + -- Actual value = IE value * 2 + threshXhigh INTEGER (0..31), + -- Actual value = IE value * 2 + threshXlow INTEGER (0..31) +} + +GSM-PriorityInfoList ::= SEQUENCE (SIZE (1..maxNumGSMCellGroup)) OF + GSM-PriorityInfo + +GSMCellGroupingList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + GSM-CellID + +HCS-CellReselectInformation-RSCP ::= SEQUENCE { + -- TABULAR: The default value for penaltyTime is "notUsed" + -- Temporary offset is nested inside PenaltyTime-RSCP + penaltyTime PenaltyTime-RSCP +} + +HCS-CellReselectInformation-ECN0 ::= SEQUENCE { + -- TABULAR: The default value for penaltyTime is "notUsed" + -- Temporary offset is nested inside PenaltyTime-ECN0 + penaltyTime PenaltyTime-ECN0 +} + +HCS-NeighbouringCellInformation-RSCP ::= SEQUENCE { + hcs-PRIO HCS-PRIO DEFAULT 0, + q-HCS Q-HCS DEFAULT 0, + hcs-CellReselectInformation HCS-CellReselectInformation-RSCP +} + +HCS-NeighbouringCellInformation-ECN0 ::= SEQUENCE { + hcs-PRIO HCS-PRIO DEFAULT 0, + q-HCS Q-HCS DEFAULT 0, + hcs-CellReselectInformation HCS-CellReselectInformation-ECN0 +} + +HCS-PRIO ::= INTEGER (0..7) + +HCS-ServingCellInformation ::= SEQUENCE { + hcs-PRIO HCS-PRIO DEFAULT 0, + q-HCS Q-HCS DEFAULT 0, + t-CR-Max T-CRMax OPTIONAL +} + +HorizontalVelocity ::= SEQUENCE { + bearing INTEGER (0..359), + horizontalSpeed INTEGER (0..2047) + } + +HorizontalWithVerticalVelocity ::= SEQUENCE { + verticalSpeedDirection ENUMERATED { upward, downward }, + bearing INTEGER (0..359), + horizontalSpeed INTEGER (0..2047), + verticalSpeed INTEGER (0..255) +} + +HorizontalVelocityWithUncertainty ::= SEQUENCE { + bearing INTEGER (0..359), + horizontalSpeed INTEGER (0..2047), + horizontalSpeedUncertainty INTEGER (0..255) +} + +HorizontalWithVerticalVelocityAndUncertainty ::= SEQUENCE { + verticalSpeedDirection ENUMERATED { upward, downward }, + bearing INTEGER (0..359), + horizontalSpeed INTEGER (0..2047), + verticalSpeed INTEGER (0..255), + horizontalUncertaintySpeed INTEGER (0..255), + verticalUncertaintySpeed INTEGER (0..255) +} + +-- Actual value Hysteresis = IE value * 0.5 +Hysteresis ::= INTEGER (0..15) + +-- Actual value HysteresisInterFreq = IE value * 0.5 +HysteresisInterFreq ::= INTEGER (0..29) + +IdleIntervalInfo ::= SEQUENCE { + k INTEGER (2..3) OPTIONAL, + offset INTEGER (0..7) OPTIONAL +} + +InterFreqCell ::= SEQUENCE { + frequencyInfo FrequencyInfo, + nonFreqRelatedEventResults CellMeasurementEventResults +} + +InterFreqCell-LCR-r4 ::= SEQUENCE { + frequencyInfo FrequencyInfo, + nonFreqRelatedEventResults CellMeasurementEventResults-LCR-r4 +} + +InterFreqCellID ::= INTEGER (0..maxCellMeas-1) + +InterFreqCellInfoList ::= SEQUENCE { + removedInterFreqCellList RemovedInterFreqCellList OPTIONAL, + newInterFreqCellList NewInterFreqCellList OPTIONAL, + cellsForInterFreqMeasList CellsForInterFreqMeasList OPTIONAL +} + +InterFreqCellInfoList-r4 ::= SEQUENCE { + removedInterFreqCellList RemovedInterFreqCellList OPTIONAL, + newInterFreqCellList NewInterFreqCellList-r4 OPTIONAL, + cellsForInterFreqMeasList CellsForInterFreqMeasList OPTIONAL +} + +InterFreqCellInfoList-r8 ::= SEQUENCE { + removedInterFreqCellList RemovedInterFreqCellList OPTIONAL, + newInterFreqCellList NewInterFreqCellList-r8 OPTIONAL, + cellsForInterFreqMeasList CellsForInterFreqMeasList OPTIONAL +} + +InterFreqCellInfoList-r9 ::= SEQUENCE { + removedInterFreqCellList RemovedInterFreqCellList OPTIONAL, + newInterFreqCellList NewInterFreqCellList-r9 OPTIONAL, + cellsForInterFreqMeasList CellsForInterFreqMeasList OPTIONAL, + cSGInterFreqCellInfoList CSGInterFreqCellInfoList OPTIONAL, + interFreqSIAcquisition InterFreqSIAcquisition OPTIONAL +} + +InterFreqCellInfoList-r10 ::= SEQUENCE { + removedInterFreqCellList RemovedInterFreqCellList OPTIONAL, + newInterFreqCellList NewInterFreqCellList-r10 OPTIONAL, + cellsForInterFreqMeasList CellsForInterFreqMeasList OPTIONAL, + cSGInterFreqCellInfoList CSGInterFreqCellInfoList OPTIONAL, + interFreqSIAcquisition InterFreqSIAcquisition OPTIONAL +} + +InterFreqSIAcquisition ::= SEQUENCE { + frequencyInfo FrequencyInfo, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryScramblingCode PrimaryCPICH-Info + }, + tdd NULL + } +} + + +InterFreqCellInfoSI-List-RSCP ::= SEQUENCE { + removedInterFreqCellList RemovedInterFreqCellList OPTIONAL, + newInterFreqCellList NewInterFreqCellSI-List-RSCP OPTIONAL +} + +InterFreqCellInfoSI-List-ECN0 ::= SEQUENCE { + removedInterFreqCellList RemovedInterFreqCellList OPTIONAL, + newInterFreqCellList NewInterFreqCellSI-List-ECN0 OPTIONAL +} + +InterFreqCellInfoSI-List-HCS-RSCP ::= SEQUENCE { + removedInterFreqCellList RemovedInterFreqCellList OPTIONAL, + newInterFreqCellList NewInterFreqCellSI-List-HCS-RSCP OPTIONAL +} +InterFreqCellInfoSI-List-HCS-ECN0 ::= SEQUENCE { + removedInterFreqCellList RemovedInterFreqCellList OPTIONAL, + newInterFreqCellList NewInterFreqCellSI-List-HCS-ECN0 OPTIONAL +} + +InterFreqCellInfoSI-List-RSCP-LCR ::= SEQUENCE { + removedInterFreqCellList RemovedInterFreqCellList OPTIONAL, + newInterFreqCellList NewInterFreqCellSI-List-RSCP-LCR-r4 OPTIONAL +} + +InterFreqCellInfoSI-List-ECN0-LCR ::= SEQUENCE { + removedInterFreqCellList RemovedInterFreqCellList OPTIONAL, + newInterFreqCellList NewInterFreqCellSI-List-ECN0-LCR-r4 OPTIONAL +} + +InterFreqCellInfoSI-List-HCS-RSCP-LCR ::= SEQUENCE { + removedInterFreqCellList RemovedInterFreqCellList OPTIONAL, + newInterFreqCellList NewInterFreqCellSI-List-HCS-RSCP-LCR-r4 OPTIONAL +} +InterFreqCellInfoSI-List-HCS-ECN0-LCR ::= SEQUENCE { + removedInterFreqCellList RemovedInterFreqCellList OPTIONAL, + newInterFreqCellList NewInterFreqCellSI-List-HCS-ECN0-LCR-r4 OPTIONAL +} + +InterFreqCellList ::= SEQUENCE (SIZE (1..maxFreq)) OF + InterFreqCell + +InterFreqCellList-LCR-r4-ext ::= SEQUENCE (SIZE (1..maxFreq)) OF + InterFreqCell-LCR-r4 + +InterFreqCellMeasuredResultsList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + CellMeasuredResults + +InterFreqCellMeasuredResultsList-v920ext ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + CellMeasuredResults-v920ext + +InterFreqEvent ::= CHOICE { + event2a Event2a, + event2b Event2b, + event2c Event2c, + event2d Event2d, + event2e Event2e, + event2f Event2f +} + +InterFreqEvent-r6 ::= CHOICE { + event2a Event2a-r6, + event2b Event2b-r6, + event2c Event2c-r6, + event2d Event2d-r6, + event2e Event2e-r6, + event2f Event2f-r6 +} + +InterFreqEvent-r10 ::= CHOICE { + event2a Event2a-r10, + event2b Event2b-r10, + event2c Event2c-r10, + event2d Event2d-r10, + event2e Event2e-r10, + event2f Event2f-r10 +} + +InterFreqEvent-r11 ::= CHOICE { + event2a Event2a-r11, + event2b Event2b-r11, + event2c Event2c-r11, + event2d Event2d-r10, + event2e Event2e-r11, + event2f Event2f-r10 +} + +InterFreqEventList ::= SEQUENCE (SIZE (1..maxMeasEvent)) OF + InterFreqEvent + +InterFreqEventList-r6 ::= SEQUENCE (SIZE (1..maxMeasEvent)) OF + InterFreqEvent-r6 + +InterFreqEventList-r10 ::= SEQUENCE (SIZE (1..maxMeasEvent)) OF + InterFreqEvent-r10 + +InterFreqEventList-r11 ::= SEQUENCE (SIZE (1..maxMeasEvent)) OF + InterFreqEvent-r11 + +--Following IE shall be used regardless of CPICH RSCP(FDD) or Primary CCPCH RSCP(TDD) +--The order of the list corresponds to the order of the cells in InterFrequencyMeasuredResultsList +--The IE is only used for measured results and not for additional measured results. +InterFrequencyMeasuredResultsList-v590ext ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + DeltaRSCPPerCell + +Inter-FreqEventCriteria-v590ext ::= SEQUENCE { + threholdUsedFrequency-delta DeltaRSCP, + threholdNonUsedFrequency-deltaList ThreholdNonUsedFrequency-deltaList OPTIONAL +} + +--The order of the list corresponds to the order of the events in Inter-FreqEventList +Inter-FreqEventCriteriaList-v590ext ::= SEQUENCE (SIZE (1..maxMeasEvent)) OF + Inter-FreqEventCriteria-v590ext + +--The order of the list corresponds to the order of relevant events in Intra-FreqEventCriteriaList +--i.e. the first element of the list corresponds to the first occurance of event 1e, 1f, 1h, 1i, +--the second element of the list corresponds to the second occurance of event 1e, 1f, 1h, 1i +Intra-FreqEventCriteriaList-v590ext ::= SEQUENCE (SIZE (1..maxMeasEvent)) OF + DeltaRSCP + +--Following IE shall be used regardless of CPICH RSCP(FDD) or Primary CCPCH RSCP(TDD) +--The order of the list corresponds to the order of the cells in IntraFrequencyMeasuredResultsList +--The IE is only used for measured results and not for additional measured results. +IntraFrequencyMeasuredResultsList-v590ext ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + DeltaRSCPPerCell + + +InterFreqEventResults ::= SEQUENCE { + eventID EventIDInterFreq, + interFreqCellList InterFreqCellList OPTIONAL +} + +InterFreqEventResults-va40ext ::= SEQUENCE { + detectedSetTrigger ENUMERATED {true} OPTIONAL +} + +InterFreqEventResults-LCR-r4-ext ::= SEQUENCE { + eventID EventIDInterFreq, + interFreqCellList InterFreqCellList-LCR-r4-ext OPTIONAL +} + +InterFreqMeasQuantity ::= SEQUENCE { + reportingCriteria CHOICE { + intraFreqReportingCriteria SEQUENCE { + intraFreqMeasQuantity IntraFreqMeasQuantity + }, + interFreqReportingCriteria SEQUENCE { + filterCoefficient FilterCoefficient DEFAULT fc0, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + freqQualityEstimateQuantity-FDD FreqQualityEstimateQuantity-FDD + }, + tdd SEQUENCE { + freqQualityEstimateQuantity-TDD FreqQualityEstimateQuantity-TDD + } + } + } + } +} + +InterFreqMeasuredResults ::= SEQUENCE { + frequencyInfo FrequencyInfo OPTIONAL, + utra-CarrierRSSI UTRA-CarrierRSSI OPTIONAL, + interFreqCellMeasuredResultsList InterFreqCellMeasuredResultsList OPTIONAL +} + +InterFreqMeasuredResults-v920ext ::= SEQUENCE { + interFreqCellMeasuredResultsList InterFreqCellMeasuredResultsList-v920ext OPTIONAL +} + +InterFreqMeasuredResultsList ::= SEQUENCE (SIZE (1..maxFreq)) OF + InterFreqMeasuredResults + +InterFreqMeasuredResultsList-v920ext ::= SEQUENCE (SIZE (1..maxFreq)) OF + InterFreqMeasuredResults-v920ext + +InterFreqMeasurementSysInfo-RSCP ::= SEQUENCE { + interFreqCellInfoSI-List InterFreqCellInfoSI-List-RSCP OPTIONAL +} + +InterFreqMeasurementSysInfo-ECN0 ::= SEQUENCE { + interFreqCellInfoSI-List InterFreqCellInfoSI-List-ECN0 OPTIONAL +} + +InterFreqMeasurementSysInfo-HCS-RSCP ::= SEQUENCE { + interFreqCellInfoSI-List InterFreqCellInfoSI-List-HCS-RSCP OPTIONAL +} + +InterFreqMeasurementSysInfo-HCS-ECN0 ::= SEQUENCE { + interFreqCellInfoSI-List InterFreqCellInfoSI-List-HCS-ECN0 OPTIONAL +} + +InterFreqMeasurementSysInfo-RSCP-LCR-r4 ::= SEQUENCE { + interFreqCellInfoSI-List InterFreqCellInfoSI-List-RSCP-LCR OPTIONAL +} + +InterFreqMeasurementSysInfo-ECN0-LCR-r4 ::= SEQUENCE { + interFreqCellInfoSI-List InterFreqCellInfoSI-List-ECN0-LCR OPTIONAL +} + +InterFreqMeasurementSysInfo-HCS-RSCP-LCR-r4 ::= SEQUENCE { + interFreqCellInfoSI-List InterFreqCellInfoSI-List-HCS-RSCP-LCR OPTIONAL +} + +InterFreqMeasurementSysInfo-HCS-ECN0-LCR-r4 ::= SEQUENCE { + interFreqCellInfoSI-List InterFreqCellInfoSI-List-HCS-ECN0-LCR OPTIONAL +} + +InterFreqRACHRepCellsList ::= SEQUENCE (SIZE (1..maxFreq)) OF +InterFreqCellID + +Dummy-InterFreqRACHReportingInfo ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + interFreqRepQuantityRACH-FDD InterFreqRepQuantityRACH-FDD + }, + tdd SEQUENCE { + interFreqRepQuantityRACH-TDDList InterFreqRepQuantityRACH-TDDList + }, + interFreqRACHReportingThreshold Threshold, + maxReportedCellsOnRACHinterFreq MaxReportedCellsOnRACHinterFreq + } +} + +InterFreqRACHReportingInfo ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + interFreqRepQuantityRACH-FDD InterFreqRepQuantityRACH-FDD + }, + tdd SEQUENCE { + interFreqRepQuantityRACH-TDDList InterFreqRepQuantityRACH-TDDList + } + }, + interFreqRACHReportingThreshold Threshold, + maxReportedCellsOnRACHinterFreq MaxReportedCellsOnRACHinterFreq +} + +InterFreqReportCriteria ::= CHOICE { + intraFreqReportingCriteria IntraFreqReportingCriteria, + interFreqReportingCriteria InterFreqReportingCriteria, + periodicalReportingCriteria PeriodicalWithReportingCellStatus, + noReporting ReportingCellStatusOpt +} + +InterFreqReportCriteria-r4 ::= CHOICE { + intraFreqReportingCriteria IntraFreqReportingCriteria-r4, + interFreqReportingCriteria InterFreqReportingCriteria, + periodicalReportingCriteria PeriodicalWithReportingCellStatus, + noReporting ReportingCellStatusOpt +} + +InterFreqReportCriteria-r6 ::= CHOICE { + intraFreqReportingCriteria IntraFreqReportingCriteria-r6, + interFreqReportingCriteria InterFreqReportingCriteria-r6, + periodicalReportingCriteria PeriodicalWithReportingCellStatus, + noReporting ReportingCellStatusOpt +} + +InterFreqReportCriteria-r7 ::= CHOICE { + intraFreqReportingCriteria IntraFreqReportingCriteria-r7, + interFreqReportingCriteria InterFreqReportingCriteria-r6, + periodicalReportingCriteria PeriodicalWithReportingCellStatus, + noReporting ReportingCellStatusOpt +} + +InterFreqReportCriteria-r9 ::= CHOICE { + intraFreqReportingCriteria IntraFreqReportingCriteria-r9, + interFreqReportingCriteria InterFreqReportingCriteria-r6, + periodicalReportingCriteria PeriodicalWithReportingCellStatus, + noReporting ReportingCellStatusOpt +} + +InterFreqReportCriteria-r10 ::= CHOICE { + intraFreqReportingCriteria IntraFreqReportingCriteria-r9, + interFreqReportingCriteria InterFreqReportingCriteria-r10, + periodicalReportingCriteria PeriodicalWithReportingCellStatus-r10, + noReporting ReportingCellStatusOpt-r10 +} + +InterFreqReportCriteria-r11 ::= CHOICE { + intraFreqReportingCriteria IntraFreqReportingCriteria-r11, + interFreqReportingCriteria InterFreqReportingCriteria-r11, + periodicalReportingCriteria PeriodicalWithReportingCellStatus-r10, + noReporting ReportingCellStatusOpt-r10 +} + +InterFreqReportingCriteria ::= SEQUENCE { + interFreqEventList InterFreqEventList OPTIONAL +} + +InterFreqReportingCriteria-r6 ::= SEQUENCE { + interFreqEventList InterFreqEventList-r6 OPTIONAL +} + +InterFreqReportingCriteria-r10 ::= SEQUENCE { + interFreqEventList InterFreqEventList-r10 OPTIONAL +} + +InterFreqReportingCriteria-r11 ::= SEQUENCE { + interFreqEventList InterFreqEventList-r11 OPTIONAL +} + +InterFreqReportingQuantity ::= SEQUENCE { + utra-Carrier-RSSI BOOLEAN, + frequencyQualityEstimate BOOLEAN, + nonFreqRelatedQuantities CellReportingQuantities +} + +InterFreqRepQuantityRACH-FDD ::= ENUMERATED { + cpich-EcN0, cpich-RSCP } + +-- dummy is not used in this version of the specification, it should +-- not be sent and if received the UE behaviour is not specified. +InterFreqRepQuantityRACH-TDD ::= ENUMERATED { + dummy, + primaryCCPCH-RSCP } + +InterFreqRepQuantityRACH-TDDList ::= SEQUENCE (SIZE (1..2)) OF + InterFreqRepQuantityRACH-TDD + +InterFrequencyMeasurement ::= SEQUENCE { + interFreqCellInfoList InterFreqCellInfoList, + interFreqMeasQuantity InterFreqMeasQuantity OPTIONAL, + interFreqReportingQuantity InterFreqReportingQuantity OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + interFreqSetUpdate UE-AutonomousUpdateMode OPTIONAL, + reportCriteria InterFreqReportCriteria +} + + +InterFrequencyMeasurement-r4 ::= SEQUENCE { + interFreqCellInfoList InterFreqCellInfoList-r4, + interFreqMeasQuantity InterFreqMeasQuantity OPTIONAL, + interFreqReportingQuantity InterFreqReportingQuantity OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + interFreqSetUpdate UE-AutonomousUpdateMode OPTIONAL, + reportCriteria InterFreqReportCriteria-r4 +} + +InterFrequencyMeasurement-r6 ::= SEQUENCE { + interFreqCellInfoList InterFreqCellInfoList-r4, + interFreqMeasQuantity InterFreqMeasQuantity OPTIONAL, + interFreqReportingQuantity InterFreqReportingQuantity OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + interFreqSetUpdate UE-AutonomousUpdateMode OPTIONAL, + reportCriteria InterFreqReportCriteria-r6 +} + +InterFrequencyMeasurement-r7 ::= SEQUENCE { + interFreqCellInfoList InterFreqCellInfoList-r4, + interFreqMeasQuantity InterFreqMeasQuantity OPTIONAL, + interFreqReportingQuantity InterFreqReportingQuantity OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + interFreqSetUpdate UE-AutonomousUpdateMode OPTIONAL, + reportCriteria InterFreqReportCriteria-r7 +} + +InterFrequencyMeasurement-r8 ::= SEQUENCE { + interFreqCellInfoList InterFreqCellInfoList-r8, + interFreqMeasQuantity InterFreqMeasQuantity OPTIONAL, + interFreqReportingQuantity InterFreqReportingQuantity OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + interFreqSetUpdate UE-AutonomousUpdateMode OPTIONAL, + adjacentFrequencyIndex INTEGER (0..31) OPTIONAL, + reportCriteria InterFreqReportCriteria-r7 +} + +InterFrequencyMeasurement-r9 ::= SEQUENCE { + interFreqCellInfoList InterFreqCellInfoList-r9, + interFreqMeasQuantity InterFreqMeasQuantity OPTIONAL, + interFreqReportingQuantity InterFreqReportingQuantity OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + interFreqSetUpdate UE-AutonomousUpdateMode OPTIONAL, + adjacentFrequencyIndex INTEGER (0..31) OPTIONAL, + interBandFrequencyIndex INTEGER (0..31) OPTIONAL, + reportCriteria InterFreqReportCriteria-r9 +} + +InterFrequencyMeasurement-r10 ::= SEQUENCE { + interFreqCellInfoList InterFreqCellInfoList-r10, + interFreqMeasQuantity InterFreqMeasQuantity OPTIONAL, + interFreqReportingQuantity InterFreqReportingQuantity OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + interFreqSetUpdate UE-AutonomousUpdateMode OPTIONAL, + adjacentFrequencyIndex INTEGER (0..31) OPTIONAL, + interBandFrequencyIndex INTEGER (0..31) OPTIONAL, + freqIndexListForEnhancedMeas FreqIndexListForEnhancedMeas OPTIONAL, + reportCriteria InterFreqReportCriteria-r10 +} + +InterFrequencyMeasurement-r11 ::= SEQUENCE { + interFreqCellInfoList InterFreqCellInfoList-r10, + interFreqMeasQuantity InterFreqMeasQuantity OPTIONAL, + interFreqReportingQuantity InterFreqReportingQuantity OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + interFreqSetUpdate UE-AutonomousUpdateMode OPTIONAL, + adjacentFrequencyIndex INTEGER (0..31) OPTIONAL, + interBandFrequencyIndex INTEGER (0..31) OPTIONAL, + freqIndexListForEnhancedMeas FreqIndexListForEnhancedMeas OPTIONAL, + reportCriteria InterFreqReportCriteria-r11 +} + +InterRAT-TargetCellDescription ::= SEQUENCE { + technologySpecificInfo CHOICE { + gsm SEQUENCE { + bsic BSIC, + frequency-band Frequency-Band, + bcch-ARFCN BCCH-ARFCN, + ncMode NC-Mode OPTIONAL + }, + is-2000 NULL, + spare2 NULL, + spare1 NULL + } +} + +InterRATCellID ::= INTEGER (0..maxCellMeas-1) + +InterRATCellInfoIndication ::= INTEGER (0..3) + +InterRATCellInfoList ::= SEQUENCE { + removedInterRATCellList RemovedInterRATCellList, + -- NOTE: Future revisions of dedicated messages including IE newInterRATCellList + -- should use a corrected version of this IE + newInterRATCellList NewInterRATCellList, + cellsForInterRATMeasList CellsForInterRATMeasList OPTIONAL +} + +InterRATCellInfoList-B ::= SEQUENCE { + removedInterRATCellList RemovedInterRATCellList, + -- NOTE: IE newInterRATCellList should be optional. However, system information + -- does not support message versions. Hence, this can not be corrected + newInterRATCellList NewInterRATCellList-B +} + +InterRATCellInfoList-r4 ::= SEQUENCE { + removedInterRATCellList RemovedInterRATCellList, + newInterRATCellList NewInterRATCellList OPTIONAL, + cellsForInterRATMeasList CellsForInterRATMeasList OPTIONAL +} + +InterRATCellInfoList-r6 ::= SEQUENCE { + removedInterRATCellList RemovedInterRATCellList, + newInterRATCellList NewInterRATCellList OPTIONAL, + cellsForInterRATMeasList CellsForInterRATMeasList OPTIONAL, + interRATCellInfoIndication-r6 InterRATCellInfoIndication OPTIONAL +} + +InterRATCellIndividualOffset ::= INTEGER (-50..50) + +InterRATEvent ::= CHOICE { + event3a Event3a, + event3b Event3b, + event3c Event3c, + event3d Event3d +} + +InterRATEventList ::= SEQUENCE (SIZE (1..maxMeasEvent)) OF + InterRATEvent + +InterRATEventResults ::= SEQUENCE { + eventID EventIDInterRAT, + cellToReportList CellToReportList +} + +InterRATInfo ::= ENUMERATED { + gsm } + +InterRATInfo-r6 ::= SEQUENCE { + rat InterRATInfo, + gsm-TargetCellInfoList GSM-TargetCellInfoList OPTIONAL +} + +InterRATInfo-v860ext ::= CHOICE { + -- CHOICE gsm is provided in IE InterRATInfo or IE InterRATInfo-r6 + gsm NULL, + eutra SEQUENCE { + eutra-TargetFreqInfoList EUTRA-TargetFreqInfoList + } +} + +InterRATMeasQuantity ::= SEQUENCE { + measQuantityUTRAN-QualityEstimate IntraFreqMeasQuantity OPTIONAL, + ratSpecificInfo CHOICE { + gsm SEQUENCE { + measurementQuantity MeasurementQuantityGSM, + filterCoefficient FilterCoefficient DEFAULT fc0, + bsic-VerificationRequired BSIC-VerificationRequired + }, + is-2000 SEQUENCE { + tadd-EcIo INTEGER (0..63), + tcomp-EcIo INTEGER (0..15), + softSlope INTEGER (0..63) OPTIONAL, + addIntercept INTEGER (0..63) OPTIONAL + } + } +} + +InterRATMeasQuantity-r8 ::= SEQUENCE { + measQuantityUTRAN-QualityEstimate IntraFreqMeasQuantity OPTIONAL, + ratSpecificInfo CHOICE { + gsm SEQUENCE { + measurementQuantity MeasurementQuantityGSM, + filterCoefficient FilterCoefficient DEFAULT fc0, + bsic-VerificationRequired BSIC-VerificationRequired + }, + is-2000 SEQUENCE { + tadd-EcIo INTEGER (0..63), + tcomp-EcIo INTEGER (0..15), + softSlope INTEGER (0..63) OPTIONAL, + addIntercept INTEGER (0..63) OPTIONAL + }, + e-UTRA SEQUENCE { + measurementQuantity MeasurementQuantityEUTRA, + filterCoefficient FilterCoefficient DEFAULT fc0 + } + } +} + +InterRATMeasuredResults ::= CHOICE { + gsm GSM-MeasuredResultsList, + spare NULL +} + +InterRATMeasuredResultsList ::= SEQUENCE (SIZE (1..maxOtherRAT-16)) OF + InterRATMeasuredResults + +InterRATMeasurement ::= SEQUENCE { + interRATCellInfoList InterRATCellInfoList OPTIONAL, + interRATMeasQuantity InterRATMeasQuantity OPTIONAL, + interRATReportingQuantity InterRATReportingQuantity OPTIONAL, + reportCriteria InterRATReportCriteria +} + +InterRATMeasurement-r4 ::= SEQUENCE { + interRATCellInfoList InterRATCellInfoList-r4 OPTIONAL, + interRATMeasQuantity InterRATMeasQuantity OPTIONAL, + interRATReportingQuantity InterRATReportingQuantity OPTIONAL, + reportCriteria InterRATReportCriteria +} + +InterRATMeasurement-r6 ::= SEQUENCE { + interRATCellInfoList InterRATCellInfoList-r6 OPTIONAL, + interRATMeasQuantity InterRATMeasQuantity OPTIONAL, + interRATReportingQuantity InterRATReportingQuantity OPTIONAL, + reportCriteria InterRATReportCriteria +} + +InterRATMeasurement-r8 ::= SEQUENCE { + interRATMeasurementObjects CHOICE { + interRATCellInfoList InterRATCellInfoList-r6, + eutra-FrequencyList EUTRA-FrequencyList + } OPTIONAL, + interRATMeasQuantity InterRATMeasQuantity-r8 OPTIONAL, + interRATReportingQuantity InterRATReportingQuantity-r8 OPTIONAL, + reportCriteria InterRATReportCriteria, + idleIntervalInfo IdleIntervalInfo OPTIONAL +} + +InterRATMeasurement-r9 ::= SEQUENCE { + interRATMeasurementObjects CHOICE { + interRATCellInfoList InterRATCellInfoList-r6, + eutra-FrequencyList EUTRA-FrequencyList-r9 + } OPTIONAL, + interRATMeasQuantity InterRATMeasQuantity-r8 OPTIONAL, + interRATReportingQuantity InterRATReportingQuantity-r8 OPTIONAL, + reportCriteria InterRATReportCriteria, + idleIntervalInfo IdleIntervalInfo OPTIONAL +} + +InterRATMeasurement-r11 ::= SEQUENCE { + interRATMeasurementObjects CHOICE { + interRATCellInfoList InterRATCellInfoList-r6, + eutra-FrequencyList EUTRA-FrequencyList-r11 + } OPTIONAL, + interRATMeasQuantity InterRATMeasQuantity-r8 OPTIONAL, + interRATReportingQuantity InterRATReportingQuantity-r8 OPTIONAL, + reportCriteria InterRATReportCriteria, + idleIntervalInfo IdleIntervalInfo OPTIONAL +} + +InterRATMeasurementSysInfo ::= SEQUENCE { + interRATCellInfoList InterRATCellInfoList OPTIONAL +} + +InterRATMeasurementSysInfo-B ::= SEQUENCE { + interRATCellInfoList InterRATCellInfoList-B OPTIONAL +} + +InterRATReportCriteria ::= CHOICE { + interRATReportingCriteria InterRATReportingCriteria, + periodicalReportingCriteria PeriodicalWithReportingCellStatus, + noReporting ReportingCellStatusOpt +} + +InterRATReportingCriteria ::= SEQUENCE { + interRATEventList InterRATEventList OPTIONAL +} + +InterRATReportingQuantity ::= SEQUENCE { + utran-EstimatedQuality BOOLEAN, + ratSpecificInfo CHOICE { + gsm SEQUENCE { + -- dummy and dummy2 are not used in this version of the specification + -- and when received they should be ignored. + dummy BOOLEAN, + dummy2 BOOLEAN, + gsm-Carrier-RSSI BOOLEAN + } + } +} + +InterRATReportingQuantity-r8 ::= SEQUENCE { + utran-EstimatedQuality BOOLEAN, + ratSpecificInfo CHOICE { + gsm SEQUENCE { + gsm-Carrier-RSSI BOOLEAN + }, + eutra SEQUENCE { + reportingQuantity ENUMERATED { measurementQuantity, + both } + } + } +} + +IntraFreqCellID ::= INTEGER (0..maxCellMeas-1) + +IntraFreqCellIDOnSecULFreq ::= INTEGER (0..maxCellMeasOnSecULFreq-1) + +IntraFreqCellInfoList ::= SEQUENCE { + removedIntraFreqCellList RemovedIntraFreqCellList OPTIONAL, + newIntraFreqCellList NewIntraFreqCellList OPTIONAL, + cellsForIntraFreqMeasList CellsForIntraFreqMeasList OPTIONAL +} + +IntraFreqCellInfoList-r4 ::= SEQUENCE { + removedIntraFreqCellList RemovedIntraFreqCellList OPTIONAL, + newIntraFreqCellList NewIntraFreqCellList-r4 OPTIONAL, + cellsForIntraFreqMeasList CellsForIntraFreqMeasList OPTIONAL +} + +IntraFreqCellInfoListInfoOnSecULFreq ::= SEQUENCE { + removedIntraFreqCellList RemovedIntraFreqCellListOnSecULFreq OPTIONAL, + newIntraFreqCellList NewIntraFreqCellListOnSecULFreq OPTIONAL, + cellsForIntraFreqMeasList CellsForIntraFreqMeasListOnSecULFreq OPTIONAL +} + +IntraFreqCellInfoListOnSecULFreq ::= SEQUENCE { + intraFreqCellInfoListOnSecULFreq IntraFreqCellInfoListInfoOnSecULFreq +} + +IntraFreqCellInfoList-r9 ::= SEQUENCE { + removedIntraFreqCellList RemovedIntraFreqCellList OPTIONAL, + newIntraFreqCellList NewIntraFreqCellList-r9 OPTIONAL, + cellsForIntraFreqMeasList CellsForIntraFreqMeasList OPTIONAL, + cSGIntraFreqCellInfoList CSGIntraFreqCellInfoList OPTIONAL, + intraFreqSIAcquisition IntraFreqSIAcquisition OPTIONAL + +} + +IntraFreqCellInfoList-r10 ::= SEQUENCE { + removedIntraFreqCellList RemovedIntraFreqCellList OPTIONAL, + newIntraFreqCellList NewIntraFreqCellList-r10 OPTIONAL, + cellsForIntraFreqMeasList CellsForIntraFreqMeasList OPTIONAL, + cSGIntraFreqCellInfoList CSGIntraFreqCellInfoList OPTIONAL, + intraFreqSIAcquisition IntraFreqSIAcquisition OPTIONAL +} + +IntraFreqSIAcquisitionInfo::= SEQUENCE (SIZE (1..maxSIrequest)) OF + PrimaryCPICH-Info + +IntraFreqSIAcquisition ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + intraFreqSIAcquisitionInfo IntraFreqSIAcquisitionInfo OPTIONAL + }, + tdd NULL + } +} + +IntraFreqCellInfoSI-List-RSCP ::= SEQUENCE { + removedIntraFreqCellList RemovedIntraFreqCellList OPTIONAL, + newIntraFreqCellList NewIntraFreqCellSI-List-RSCP +} + +IntraFreqCellInfoSI-List-ECN0 ::= SEQUENCE { + removedIntraFreqCellList RemovedIntraFreqCellList OPTIONAL, + newIntraFreqCellList NewIntraFreqCellSI-List-ECN0 +} + +IntraFreqCellInfoSI-List-HCS-RSCP ::= SEQUENCE { + removedIntraFreqCellList RemovedIntraFreqCellList OPTIONAL, + newIntraFreqCellList NewIntraFreqCellSI-List-HCS-RSCP +} + +IntraFreqCellInfoSI-List-HCS-ECN0 ::= SEQUENCE { + removedIntraFreqCellList RemovedIntraFreqCellList OPTIONAL, + newIntraFreqCellList NewIntraFreqCellSI-List-HCS-ECN0 +} + +IntraFreqCellInfoSI-List-RSCP-LCR-r4 ::= SEQUENCE { + removedIntraFreqCellList RemovedIntraFreqCellList OPTIONAL, + newIntraFreqCellList NewIntraFreqCellSI-List-RSCP-LCR-r4 +} + +IntraFreqCellInfoSI-List-ECN0-LCR-r4 ::= SEQUENCE { + removedIntraFreqCellList RemovedIntraFreqCellList OPTIONAL, + newIntraFreqCellList NewIntraFreqCellSI-List-ECN0-LCR-r4 +} + +IntraFreqCellInfoSI-List-HCS-RSCP-LCR-r4 ::= SEQUENCE { + removedIntraFreqCellList RemovedIntraFreqCellList OPTIONAL, + newIntraFreqCellList NewIntraFreqCellSI-List-HCS-RSCP-LCR-r4 +} + +IntraFreqCellInfoSI-List-HCS-ECN0-LCR-r4 ::= SEQUENCE { + removedIntraFreqCellList RemovedIntraFreqCellList OPTIONAL, + newIntraFreqCellList NewIntraFreqCellSI-List-HCS-ECN0-LCR-r4 +} + +IntraFreqEvent ::= CHOICE { + e1a Event1a, + e1b Event1b, + e1c Event1c, + e1d NULL, + e1e Event1e, + e1f Event1f, + e1g NULL, + e1h ThresholdUsedFrequency, + e1i ThresholdUsedFrequency +} + +IntraFreqEvent-r4 ::= CHOICE { + e1a Event1a-r4, + e1b Event1b-r4, + e1c Event1c, + e1d NULL, + e1e Event1e, + e1f Event1f, + e1g NULL, + e1h ThresholdUsedFrequency, + e1i ThresholdUsedFrequency +} + +IntraFreqEvent-LCR-r4 ::= CHOICE { + e1a Event1a-LCR-r4, + e1b Event1b-LCR-r4, + e1c Event1c, + e1d NULL, + e1e Event1e, + e1f Event1f, + e1g NULL, + e1h ThresholdUsedFrequency, + e1i ThresholdUsedFrequency +} + +IntraFreqEvent-r6 ::= CHOICE { + e1a Event1a-r4, + e1b Event1b-r4, + e1c Event1c, + e1d Event1d, + e1e Event1e-r6, + e1f Event1f-r6, + e1g NULL, + e1h ThresholdUsedFrequency-r6, + e1i ThresholdUsedFrequency-r6, + e1j Event1j-r6 +} + +IntraFreqEvent-r7 ::= CHOICE { + e1a Event1a-r4, + e1b Event1b-r7, + e1c Event1c, + e1d Event1d, + e1e Event1e-r6, + e1f Event1f-r6, + e1g NULL, + e1h ThresholdUsedFrequency-r6, + e1i ThresholdUsedFrequency-r6, + e1j Event1j-r6 +} + +IntraFreqEventOnSecULFreq ::= CHOICE { + e1a Event1a-OnSecUlFreq-r9, + e1b Event1b-OnSecUlFreq-r9, + e1c Event1c, + e1e Event1e-r6, + e1f Event1f-r6 +} + +IntraFreqEvent-1d-r5 ::= SEQUENCE { + triggeringCondition TriggeringCondition2 OPTIONAL, + useCIO BOOLEAN OPTIONAL +} + +IntraFreqEventCriteria ::= SEQUENCE { + event IntraFreqEvent, + hysteresis Hysteresis, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL +} + +IntraFreqEventCriteria-r4 ::= SEQUENCE { + event IntraFreqEvent-r4, + hysteresis Hysteresis, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL +} + +IntraFreqEventCriteria-LCR-r4 ::= SEQUENCE { + event IntraFreqEvent-LCR-r4, + hysteresis Hysteresis, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL +} + +IntraFreqEventCriteria-r6 ::= SEQUENCE { + event IntraFreqEvent-r6, + hysteresis Hysteresis, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL +} + +IntraFreqEventCriteria-r7 ::= SEQUENCE { + event IntraFreqEvent-r7, + hysteresis Hysteresis, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL +} + +IntraFreqEventCriteriaOnSecULFreq ::= SEQUENCE { + event IntraFreqEventOnSecULFreq, + hysteresis Hysteresis, + timeToTrigger TimeToTrigger, + reportingCellStatus ReportingCellStatus OPTIONAL +} + +IntraFreqEventCriteriaList ::= SEQUENCE (SIZE (1..maxMeasEvent)) OF + IntraFreqEventCriteria + +IntraFreqEventCriteriaList-r4 ::= SEQUENCE (SIZE (1..maxMeasEvent)) OF + IntraFreqEventCriteria-r4 + +IntraFreqEventCriteriaList-LCR-r4 ::= SEQUENCE (SIZE (1..maxMeasEvent)) OF + IntraFreqEventCriteria-LCR-r4 + +IntraFreqEventCriteriaList-r6 ::= SEQUENCE (SIZE (1..maxMeasEvent)) OF + IntraFreqEventCriteria-r6 + +IntraFreqEventCriteriaList-r7 ::= SEQUENCE (SIZE (1..maxMeasEvent)) OF + IntraFreqEventCriteria-r7 + +IntraFreqEventCriteriaListOnSecULFreq ::= SEQUENCE{ + frequencyInfo FrequencyInfo, + intraFreqEventCriteria SEQUENCE (SIZE (1..maxMeasEventOnSecULFreq)) OF + IntraFreqEventCriteriaOnSecULFreq +} + +IntraFreqEventResults ::= SEQUENCE { + eventID EventIDIntraFreq, + cellMeasurementEventResults CellMeasurementEventResults +} + +IntraFreqEventResultsOnSecUlFreq ::= SEQUENCE { + eventID EventIDIntraFreq, + cellMeasurementEventResultsOnSecUlFreq CellMeasurementEventResultsOnSecUlFreq +} + +IntraFreqMeasQuantity ::= SEQUENCE { + filterCoefficient FilterCoefficient DEFAULT fc0, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + intraFreqMeasQuantity-FDD IntraFreqMeasQuantity-FDD + }, + tdd SEQUENCE { + intraFreqMeasQuantity-TDDList IntraFreqMeasQuantity-TDDList + } + } +} + +-- If IntraFreqMeasQuantity-FDD is used in InterRATMeasQuantity, then only +-- cpich-Ec-N0 and cpich-RSCP are allowed. +-- dummy is not used in this version of the specification, it should +-- not be sent and if received the UE behaviour is not specified. +IntraFreqMeasQuantity-FDD ::= ENUMERATED { + cpich-Ec-N0, + cpich-RSCP, + pathloss, + dummy } + +IntraFreqMeasQuantity-FDD-sib3 ::= ENUMERATED { + cpich-Ec-N0, cpich-RSCP } + +-- dummy is not used in this version of the specification, it should +-- not be sent and if received the UE behaviour is not specified. +IntraFreqMeasQuantity-TDD ::= ENUMERATED { + primaryCCPCH-RSCP, + pathloss, + timeslotISCP, + dummy } + +IntraFreqMeasQuantity-TDDList ::= SEQUENCE (SIZE (1..4)) OF + IntraFreqMeasQuantity-TDD + +IntraFreqMeasQuantity-TDD-sib3List ::= SEQUENCE (SIZE (1..2)) OF + ENUMERATED { primaryCCPCH-RSCP, timeslotISCP } + +IntraFreqMeasuredResultsList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + CellMeasuredResults + +IntraFreqMeasuredResultsList-v920ext ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + CellMeasuredResults-v920ext + + +IntraFreqMeasurementSysInfo-RSCP ::= SEQUENCE { + intraFreqMeasurementID MeasurementIdentity DEFAULT 1, + intraFreqCellInfoSI-List IntraFreqCellInfoSI-List-RSCP OPTIONAL, + intraFreqMeasQuantity IntraFreqMeasQuantity OPTIONAL, + intraFreqReportingQuantityForRACH IntraFreqReportingQuantityForRACH OPTIONAL, + maxReportedCellsOnRACH MaxReportedCellsOnRACH OPTIONAL, + reportingInfoForCellDCH ReportingInfoForCellDCH OPTIONAL +} + +IntraFreqMeasurementSysInfo-ECN0 ::= SEQUENCE { + intraFreqMeasurementID MeasurementIdentity DEFAULT 1, + intraFreqCellInfoSI-List IntraFreqCellInfoSI-List-ECN0 OPTIONAL, + intraFreqMeasQuantity IntraFreqMeasQuantity OPTIONAL, + intraFreqReportingQuantityForRACH IntraFreqReportingQuantityForRACH OPTIONAL, + maxReportedCellsOnRACH MaxReportedCellsOnRACH OPTIONAL, + reportingInfoForCellDCH ReportingInfoForCellDCH OPTIONAL +} + +IntraFreqMeasurementSysInfo-HCS-RSCP ::= SEQUENCE { + intraFreqMeasurementID MeasurementIdentity DEFAULT 1, + intraFreqCellInfoSI-List IntraFreqCellInfoSI-List-HCS-RSCP OPTIONAL, + intraFreqMeasQuantity IntraFreqMeasQuantity OPTIONAL, + intraFreqReportingQuantityForRACH IntraFreqReportingQuantityForRACH OPTIONAL, + maxReportedCellsOnRACH MaxReportedCellsOnRACH OPTIONAL, + reportingInfoForCellDCH ReportingInfoForCellDCH OPTIONAL +} + +IntraFreqMeasurementSysInfo-HCS-ECN0 ::= SEQUENCE { + intraFreqMeasurementID MeasurementIdentity DEFAULT 1, + intraFreqCellInfoSI-List IntraFreqCellInfoSI-List-HCS-ECN0 OPTIONAL, + intraFreqMeasQuantity IntraFreqMeasQuantity OPTIONAL, + intraFreqReportingQuantityForRACH IntraFreqReportingQuantityForRACH OPTIONAL, + maxReportedCellsOnRACH MaxReportedCellsOnRACH OPTIONAL, + reportingInfoForCellDCH ReportingInfoForCellDCH OPTIONAL +} + +IntraFreqMeasurementSysInfo-RSCP-LCR-r4 ::= SEQUENCE { + intraFreqMeasurementID MeasurementIdentity DEFAULT 1, + intraFreqCellInfoSI-List IntraFreqCellInfoSI-List-RSCP-LCR-r4 OPTIONAL, + intraFreqMeasQuantity IntraFreqMeasQuantity OPTIONAL, + intraFreqReportingQuantityForRACH IntraFreqReportingQuantityForRACH OPTIONAL, + maxReportedCellsOnRACH MaxReportedCellsOnRACH OPTIONAL, + reportingInfoForCellDCH ReportingInfoForCellDCH-LCR-r4 OPTIONAL +} + +IntraFreqMeasurementSysInfo-ECN0-LCR-r4 ::= SEQUENCE { + intraFreqMeasurementID MeasurementIdentity DEFAULT 1, + intraFreqCellInfoSI-List IntraFreqCellInfoSI-List-ECN0-LCR-r4 OPTIONAL, + intraFreqMeasQuantity IntraFreqMeasQuantity OPTIONAL, + intraFreqReportingQuantityForRACH IntraFreqReportingQuantityForRACH OPTIONAL, + maxReportedCellsOnRACH MaxReportedCellsOnRACH OPTIONAL, + reportingInfoForCellDCH ReportingInfoForCellDCH-LCR-r4 OPTIONAL +} + +IntraFreqMeasurementSysInfo-HCS-RSCP-LCR-r4 ::= SEQUENCE { + intraFreqMeasurementID MeasurementIdentity DEFAULT 1, + intraFreqCellInfoSI-List IntraFreqCellInfoSI-List-HCS-RSCP-LCR-r4 OPTIONAL, + intraFreqMeasQuantity IntraFreqMeasQuantity OPTIONAL, + intraFreqReportingQuantityForRACH IntraFreqReportingQuantityForRACH OPTIONAL, + maxReportedCellsOnRACH MaxReportedCellsOnRACH OPTIONAL, + reportingInfoForCellDCH ReportingInfoForCellDCH-LCR-r4 OPTIONAL +} + +IntraFreqMeasurementSysInfo-HCS-ECN0-LCR-r4 ::= SEQUENCE { + intraFreqMeasurementID MeasurementIdentity DEFAULT 1, + intraFreqCellInfoSI-List IntraFreqCellInfoSI-List-HCS-ECN0-LCR-r4 OPTIONAL, + intraFreqMeasQuantity IntraFreqMeasQuantity OPTIONAL, + intraFreqReportingQuantityForRACH IntraFreqReportingQuantityForRACH OPTIONAL, + maxReportedCellsOnRACH MaxReportedCellsOnRACH OPTIONAL, + reportingInfoForCellDCH ReportingInfoForCellDCH-LCR-r4 OPTIONAL +} + +IntraFreqReportCriteria ::= CHOICE { + intraFreqReportingCriteria IntraFreqReportingCriteria, + periodicalReportingCriteria PeriodicalWithReportingCellStatus, + noReporting ReportingCellStatusOpt +} + +IntraFreqReportCriteria-r4 ::= CHOICE { + intraFreqReportingCriteria IntraFreqReportingCriteria-r4, + periodicalReportingCriteria PeriodicalWithReportingCellStatus, + noReporting ReportingCellStatusOpt +} + +IntraFreqReportCriteria-r6 ::= CHOICE { + intraFreqReportingCriteria IntraFreqReportingCriteria-r6, + periodicalReportingCriteria PeriodicalWithReportingCellStatus, + noReporting ReportingCellStatusOpt +} + +IntraFreqReportCriteria-r7 ::= CHOICE { + intraFreqReportingCriteria IntraFreqReportingCriteria-r7, + periodicalReportingCriteria PeriodicalWithReportingCellStatus, + noReporting ReportingCellStatusOpt +} + +IntraFreqReportCriteria-r9 ::= CHOICE { + intraFreqReportingCriteria IntraFreqReportingCriteria-r9, + periodicalReportingCriteria PeriodicalWithReportingCellStatus, + noReporting ReportingCellStatusOpt +} + +IntraFreqReportCriteria-r11 ::= CHOICE { + intraFreqReportingCriteria IntraFreqReportingCriteria-r11, + periodicalReportingCriteria PeriodicalWithReportingCellStatus, + noReporting ReportingCellStatusOpt +} + +IntraFreqReportingCriteria ::= SEQUENCE { + eventCriteriaList IntraFreqEventCriteriaList OPTIONAL +} + +IntraFreqReportingCriteria-r4 ::= SEQUENCE { + eventCriteriaList IntraFreqEventCriteriaList-r4 OPTIONAL +} + +IntraFreqReportingCriteria-LCR-r4 ::= SEQUENCE { + eventCriteriaList IntraFreqEventCriteriaList-LCR-r4 OPTIONAL +} + +IntraFreqReportingCriteria-r6 ::= SEQUENCE { + eventCriteriaList IntraFreqEventCriteriaList-r6 OPTIONAL +} + +IntraFreqReportingCriteria-r7 ::= SEQUENCE { + eventCriteriaList IntraFreqEventCriteriaList-r7 OPTIONAL +} + +IntraFreqReportingCriteria-r9 ::= SEQUENCE { + eventCriteriaList IntraFreqEventCriteriaList-r7 OPTIONAL, + eventCriteriaListOnSecULFreq IntraFreqEventCriteriaListOnSecULFreq OPTIONAL +} + +IntraFreqReportingCriteria-r11 ::= SEQUENCE { + eventCriteriaList IntraFreqEventCriteriaList-r7 OPTIONAL, + eventCriteriaListOnSecULFreq IntraFreqEventCriteriaListOnSecULFreq OPTIONAL, + excludedCellInfoList CellInfoListToBeExcluded OPTIONAL +} + +IntraFreqReportingCriteria-1b-r5 ::= SEQUENCE { + periodicReportingInfo-1b PeriodicReportingInfo-1b +} + +IntraFreqReportingQuantity ::= SEQUENCE { + activeSetReportingQuantities CellReportingQuantities, + monitoredSetReportingQuantities CellReportingQuantities, + detectedSetReportingQuantities CellReportingQuantities OPTIONAL +} + +IntraFreqReportingQuantityForRACH ::= SEQUENCE { + sfn-SFN-OTD-Type SFN-SFN-OTD-Type, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + intraFreqRepQuantityRACH-FDD IntraFreqRepQuantityRACH-FDD + }, + tdd SEQUENCE { + intraFreqRepQuantityRACH-TDDList IntraFreqRepQuantityRACH-TDDList + } + } +} + +IntraFreqRepQuantityRACH-FDD ::= ENUMERATED { + cpich-EcN0, cpich-RSCP, + pathloss, noReport } + +IntraFreqRepQuantityRACH-TDD ::= ENUMERATED { + timeslotISCP, + primaryCCPCH-RSCP, + noReport } + +IntraFreqRepQuantityRACH-TDDList ::= SEQUENCE (SIZE (1..2)) OF + IntraFreqRepQuantityRACH-TDD + +IntraFrequencyMeasurement ::= SEQUENCE { + intraFreqCellInfoList IntraFreqCellInfoList OPTIONAL, + intraFreqMeasQuantity IntraFreqMeasQuantity OPTIONAL, + intraFreqReportingQuantity IntraFreqReportingQuantity OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + reportCriteria IntraFreqReportCriteria OPTIONAL +} + +IntraFrequencyMeasurement-r4 ::= SEQUENCE { + intraFreqCellInfoList IntraFreqCellInfoList-r4 OPTIONAL, + intraFreqMeasQuantity IntraFreqMeasQuantity OPTIONAL, + intraFreqReportingQuantity IntraFreqReportingQuantity OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + reportCriteria IntraFreqReportCriteria-r4 OPTIONAL +} + +IntraFrequencyMeasurement-r6 ::= SEQUENCE { + intraFreqCellInfoList IntraFreqCellInfoList-r4 OPTIONAL, + intraFreqMeasQuantity IntraFreqMeasQuantity OPTIONAL, + intraFreqReportingQuantity IntraFreqReportingQuantity OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + -- reportCriteria is optional in later versions of this message + reportCriteria IntraFreqReportCriteria-r6 +} + +IntraFrequencyMeasurement-r7 ::= SEQUENCE { + intraFreqCellInfoList IntraFreqCellInfoList-r4 OPTIONAL, + intraFreqMeasQuantity IntraFreqMeasQuantity OPTIONAL, + intraFreqReportingQuantity IntraFreqReportingQuantity OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + reportCriteria IntraFreqReportCriteria-r7 OPTIONAL +} + +IntraFrequencyMeasurement-r9 ::= SEQUENCE { + intraFreqCellInfoList IntraFreqCellInfoList-r9 OPTIONAL, + intraFreqCellInfoListOnSecULFreq IntraFreqCellInfoListOnSecULFreq OPTIONAL, + intraFreqMeasQuantity IntraFreqMeasQuantity OPTIONAL, + intraFreqReportingQuantity IntraFreqReportingQuantity OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + reportCriteria IntraFreqReportCriteria-r9 OPTIONAL +} + +IntraFrequencyMeasurement-r10 ::= SEQUENCE { + intraFreqCellInfoList IntraFreqCellInfoList-r10 OPTIONAL, + intraFreqCellInfoListOnSecULFreq IntraFreqCellInfoListOnSecULFreq OPTIONAL, + intraFreqMeasQuantity IntraFreqMeasQuantity OPTIONAL, + intraFreqReportingQuantity IntraFreqReportingQuantity OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + reportCriteria IntraFreqReportCriteria-r9 OPTIONAL +} + +IntraFrequencyMeasurement-r11 ::= SEQUENCE { + intraFreqCellInfoList IntraFreqCellInfoList-r10 OPTIONAL, + intraFreqCellInfoListOnSecULFreq IntraFreqCellInfoListOnSecULFreq OPTIONAL, + intraFreqMeasQuantity IntraFreqMeasQuantity OPTIONAL, + intraFreqReportingQuantity IntraFreqReportingQuantity OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + reportCriteria IntraFreqReportCriteria-r11 OPTIONAL, + periodicalReportingCriteriaOnSecULFreq + PeriodicalWithReportingCellStatusOnSecULFreq OPTIONAL +} + +IntraFrequencyMeasuredResultsListOnSecULFreq ::= SEQUENCE (SIZE (1..maxCellMeasOnSecULFreq)) OF + CellMeasuredResults-r9 + +IntraUTRAANR ::= SEQUENCE { + loggingAbsoluteThreshold LoggingAbsoluteThreshold, + loggingRelativeThreshold LoggingRelativeThreshold OPTIONAL +} + +IODE ::= INTEGER (0..255) + +IP-Length ::= ENUMERATED { + ipl5, ipl10 } + +IP-PCCPCH-r4 ::= BOOLEAN + +IP-Spacing ::= ENUMERATED { + e5, e7, e10, e15, e20, + e30, e40, e50 } + +IP-Spacing-TDD ::= ENUMERATED { + e30, e40, e50, e70, e100} + +IS-2000SpecificMeasInfo ::= ENUMERATED { + frequency, timeslot, colourcode, + outputpower, pn-Offset } + +LoggedANRConfigurationInfo ::= SEQUENCE { + loggingDuration ENUMERATED { min10, min30, hr1, spare2, spare1 }, + intraUTRAANR IntraUTRAANR OPTIONAL, + interRATANRforEUTRAIndicator ENUMERATED { true } OPTIONAL, + interRATANRforGSMIndicator ENUMERATED { true } OPTIONAL +} + +LoggedANRReportInfoList ::= SEQUENCE (SIZE (1..maxNumANRLoggedItems)) OF + LoggedANRReportInfo + +LoggedANRReportInfoList-vb50ext ::= SEQUENCE (SIZE (1..maxNumANRLoggedItems)) OF + LoggedANRReportInfo-vb50ext + +LoggedANRReportInfo ::= SEQUENCE { + plmn-Identity PLMN-Identity, + servingCell CellIdentity, + loggedCellInfo LoggedCellInfo +} + +LoggedANRReportInfo-vb50ext ::= SEQUENCE { + loggedCellInfo LoggedCellInfo-vb50ext +} + +LoggedCellInfo ::= CHOICE { + loggedUTRACellInfo LoggedUTRACellInfo, + loggedEUTRACellInfo LoggedEUTRACellInfo, + loggedGSMCellInfo LoggedGSMCellInfo +} + +LoggedCellInfo-vb50ext ::= CHOICE { + loggedEUTRACellInfo LoggedEUTRACellInfo-vb50ext +} + +LoggedConnectionEstablishmentFailureInfo-FDD ::= SEQUENCE { + loggedConnectionEstablishmentFailureAccessInfo-FDD + LoggedConnectionEstablishmentFailureAccessInfo-FDD, + loggedMeasFailedCellMeas LoggedMeasServingCellMeas-FDD, + loggedMeasIntrafreqNeighbourList LoggedMeasIntrafreqNeighbourList-FDD OPTIONAL, + loggedMeasInterfreqList LoggedMeasInterfreqList-FDD OPTIONAL, + loggedMeasInterRATNeighbourMeas LoggedMeasInterRATNeighbourMeas-vb50ext OPTIONAL, + loggedConnectionEstablishmentFailureLocationInfo + LoggedConnectionEstablishmentFailureLocationInfo OPTIONAL +} + +LoggedConnectionEstablishmentFailureInfo-TDD128 ::= SEQUENCE { + loggedConnectionEstablishmentFailureAccessInfo-TDD + LoggedConnectionEstablishmentFailureAccessInfo-TDD, + loggedMeasFailedCellMeas LoggedMeasServingCellMeas-TDD128, + loggedMeasIntrafreqNeighbourList LoggedMeasIntrafreqNeighbourMeasList-TDD128 OPTIONAL, + loggedMeasInterfreqList LoggedMeasInterfreqList-TDD128 OPTIONAL, + loggedMeasInterRATNeighbourMeas LoggedMeasInterRATNeighbourMeas-vb50ext OPTIONAL, + loggedConnectionEstablishmentFailureLocationInfo + LoggedConnectionEstablishmentFailureLocationInfo OPTIONAL +} + +LoggedConnectionEstablishmentFailureAccessInfo-FDD ::= SEQUENCE { + numberOfRRCMsgTransmitted INTEGER (0..8) +} + +LoggedConnectionEstablishmentFailureAccessInfo-TDD ::= SEQUENCE { + numberOfRRCMsgTransmitted INTEGER (0..8), + fpachReceived BOOLEAN, + e-RUCCHFailure BOOLEAN OPTIONAL +} + +LoggedConnectionEstablishmentFailureLocationInfo ::= SEQUENCE { + location CHOICE { + ellipsoidPoint EllipsoidPoint, + ellipsoidPointUncertCircle EllipsoidPointUncertCircle, + ellipsoidPointUncertEllipse EllipsoidPointUncertEllipse, + ellipsoidPointAltitude EllipsoidPointAltitude, + ellipsoidPointAltitudeEllipse EllipsoidPointAltitudeEllipsoide + }, + horizontalVelocity HorizontalVelocity OPTIONAL +} + +ConnectionEstablishmentFailureReport ::= SEQUENCE { + timeSinceFailure INTEGER (0..172800), + modeSpecificInfo CHOICE { + fdd SEQUENCE { + loggedConnectionEstablishmentFailureInfo + LoggedConnectionEstablishmentFailureInfo-FDD + }, + tdd SEQUENCE { + loggedConnectionEstablishmentFailureInfo + LoggedConnectionEstablishmentFailureInfo-TDD128 + } + } +} + +LoggedEUTRACellInfo ::= SEQUENCE { + plmn-Identity PLMN-Identity, + trackingAreaCode BIT STRING (SIZE (16)), + eutraCellIdentity BIT STRING (SIZE (28)), + earfcn EARFCN, + physicalCellIdentity EUTRA-PhysicalCellIdentity +} + +LoggedEUTRACellInfo-vb50ext ::= SEQUENCE { + earfcn EARFCNExtension OPTIONAL +} + +LoggedGSMCellInfo ::= SEQUENCE { + plmn-Identity PLMN-Identity, + lac BIT STRING (SIZE (16)), + gsmCellIdentity BIT STRING (SIZE (16)), + bcch-ARFCN BCCH-ARFCN, + bandIndicator Frequency-Band, + bsic BSIC +} + +LoggedMeasurementsConfigurationInfo ::= SEQUENCE { + absoluteTimeInfo BIT STRING (SIZE(48)), + loggingDuration ENUMERATED {min10, min20, min40, hr1, hr1min30,hr2,spare2,spare1}, + loggingInterval ENUMERATED {li128,li256,li512,li1024,li2048,li3072,li4096,li6144}, + traceReference TraceReference, + traceRecordingSession TraceRecordingSession, + tce-Id TCE-Id, + areaConfiguration CHOICE { + cellIDList SEQUENCE (SIZE (1..32)) OF + CellIdentity, + locationAreaList SEQUENCE (SIZE (1..8)) OF + LAI, + routingAreaList SEQUENCE (SIZE (1..8)) OF + RAI + } OPTIONAL +} + +LoggedMeasurementsConfigurationInfo-r11 ::= SEQUENCE { + absoluteTimeInfo BIT STRING (SIZE(48)), + loggingDuration ENUMERATED {min10, min20, min40, hr1, hr1min30,hr2,spare2,spare1}, + loggingInterval ENUMERATED {li128,li256,li512,li1024,li2048,li3072,li4096,li6144}, + traceReference TraceReference, + traceRecordingSession TraceRecordingSession, + tce-Id TCE-Id, + plmnList PlmnList OPTIONAL, + areaConfiguration CHOICE { + cellIDList SEQUENCE (SIZE (1..32)) OF CellIDListItem, + locationAreaList SEQUENCE (SIZE (1..8)) OF + LAI, + routingAreaList SEQUENCE (SIZE (1..8)) OF + RAI + } OPTIONAL +} + +LoggedMeasInterfreqList-FDD ::= SEQUENCE (SIZE (1..maxNumFDDFreqs)) OF + LoggedMeasInterfreqInfo-FDD + +LoggedMeasInterfreqInfo-FDD ::= SEQUENCE { + frequencyInfo FrequencyInfo, + loggedMeasInterfreqNeighbourList SEQUENCE (SIZE (1..maxnumLoggedMeas)) OF + LoggedMeasNeighbourInfo-FDD +} + +LoggedMeasInterfreqInfo-TDD128 ::= SEQUENCE { + frequencyInfo FrequencyInfo, + loggedMeasInterfreqNeighbourList LoggedMeasInterfreqNeighbourList-TDD128 +} + +LoggedMeasInterRATNeighbourMeas ::= SEQUENCE { + loggedMeasEUTRAFreqList LoggedMeasEUTRAFreqList OPTIONAL, + loggedMeasGSMNeighbourCellsList LoggedMeasGSMNeighbourCellsList OPTIONAL +} + +LoggedMeasInterRATNeighbourMeas-vb50ext ::= SEQUENCE { + loggedMeasEUTRAFreqList LoggedMeasEUTRAFreqList-vb50ext +} + +LoggedMeasIntrafreqNeighbourList-FDD ::= SEQUENCE (SIZE (1..maxnumLoggedMeas)) OF + LoggedMeasNeighbourInfo-FDD + +LoggedMeasNeighbourInfo-FDD ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + cpich-RSCP CPICH-RSCP, + cpich-Ec-N0 CPICH-Ec-N0 +} + +LoggedMeasIntrafreqNeighbourMeasList-TDD128 ::= SEQUENCE (SIZE (1..maxnumLoggedMeas)) OF + LoggedMeasNeighbourMeas-TDD128 + +LoggedMeasNeighbourMeas-TDD128 ::= SEQUENCE { + cellParametersID CellParametersID, + primaryCCPCH-RSCP PrimaryCCPCH-RSCP +} + +LoggedMeasGSMNeighbourCellsList ::= SEQUENCE (SIZE (1..maxnumLoggedMeas)) OF + LoggedMeasGSMNeighbourCellsinfo + +LoggedMeasGSMNeighbourCellsinfo ::= SEQUENCE { + bsic BSIC, + frequency-band Frequency-Band, + bcch-ARFCN BCCH-ARFCN, + gsm-CarrierRSSI GSM-CarrierRSSI +} + +LoggedMeasEUTRAFreqList ::= SEQUENCE (SIZE (1..maxNumEUTRAFreqs))OF + LoggedMeasEUTRAFreqInfo + +LoggedMeasEUTRAFreqList-vb50ext ::= SEQUENCE (SIZE (1..maxNumEUTRAFreqs)) OF + LoggedMeasEUTRAFreqInfo-vb50ext + +LoggedMeasEUTRAFreqInfo ::= SEQUENCE { + earfcn EARFCN, + loggedMeasEUTRAFreqNeighbourInfoList SEQUENCE (SIZE (1.. maxnumLoggedMeas)) OF + LoggedMeasEUTRAFreqNeighbourInfo +} + +LoggedMeasEUTRAFreqInfo-vb50ext ::= SEQUENCE { + earfcn EARFCNExtension OPTIONAL +} + +LoggedMeasEUTRAFreqNeighbourInfo ::= SEQUENCE { + physicalCellIdentity EUTRA-PhysicalCellIdentity, + rSRP INTEGER (0..97) , + rSRQ INTEGER (0..33) +} + +LoggedMeasInfo-FDD ::= SEQUENCE { + relativeTimeStamp INTEGER (0..7200), + loggedMeasServingCellMeas LoggedMeasServingCellMeas-FDD, + loggedMeasIntrafreqNeighbourList LoggedMeasIntrafreqNeighbourList-FDD OPTIONAL, + loggedMeasInterfreqList LoggedMeasInterfreqList-FDD OPTIONAL, + loggedMeasInterRATNeighbourMeas LoggedMeasInterRATNeighbourMeas OPTIONAL, + loggedMeasLocationInfo LoggedMeasLocationInfo OPTIONAL +} + +LoggedMeasInfo-FDD-vb50ext ::= SEQUENCE { + loggedMeasServingCellMeas LoggedMeasServingCellMeas-FDD-vb50ext OPTIONAL, + loggedMeasLocationInfo LoggedMeasLocationInfo-vb50ext OPTIONAL, + loggedMeasInterRATNeighbourMeas LoggedMeasInterRATNeighbourMeas-vb50ext OPTIONAL +} + +LoggedMeasInfo-TDD128 ::= SEQUENCE { + relativeTimeStamp INTEGER (0..7200), + loggedMeasServingCellMeas LoggedMeasServingCellMeas-TDD128, + loggedMeasIntrafreqNeighbourList LoggedMeasIntrafreqNeighbourMeasList-TDD128 OPTIONAL, + loggedMeasInterfreqList LoggedMeasInterfreqList-TDD128 OPTIONAL, + loggedMeasInterRATNeighbourMeas LoggedMeasInterRATNeighbourMeas OPTIONAL, + loggedMeasLocationInfo LoggedMeasLocationInfo OPTIONAL +} + +LoggedMeasInfo-TDD128-vb50ext ::= SEQUENCE { + loggedMeasServingCellMeas LoggedMeasServingCellMeas-TDD128-vb50ext OPTIONAL, + loggedMeasLocationInfo LoggedMeasLocationInfo-vb50ext OPTIONAL, + loggedMeasInterRATNeighbourMeas LoggedMeasInterRATNeighbourMeas-vb50ext OPTIONAL +} + +LoggedMeasInfoList-FDD ::= SEQUENCE (SIZE (1.. maxLoggedMeasReport)) OF LoggedMeasInfo-FDD + +LoggedMeasInfoList-FDD-vb50ext ::= SEQUENCE (SIZE (1..maxLoggedMeasReport)) OF LoggedMeasInfo-FDD-vb50ext + +LoggedMeasInfoList-TDD128 ::= SEQUENCE (SIZE (1.. maxLoggedMeasReport)) OF LoggedMeasInfo-TDD128 + +LoggedMeasInfoList-TDD128-vb50ext ::= SEQUENCE (SIZE (1..maxLoggedMeasReport)) OF LoggedMeasInfo-TDD128-vb50ext + +LoggedMeasInfoList ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + loggedMeasInfoList LoggedMeasInfoList-FDD + }, + tdd SEQUENCE { + loggedMeasInfoList LoggedMeasInfoList-TDD128 + } + } +} + +LoggedMeasInfoList-vb50ext ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + loggedMeasInfoList LoggedMeasInfoList-FDD-vb50ext + }, + tdd SEQUENCE { + loggedMeasInfoList LoggedMeasInfoList-TDD128-vb50ext + } + } +} + +LoggedMeasInterfreqList-TDD128 ::= SEQUENCE (SIZE (1..maxNumTDDFreqs)) OF + LoggedMeasInterfreqInfo-TDD128 + +LoggedMeasInterfreqNeighbourList-TDD128 ::= SEQUENCE (SIZE (1..maxnumLoggedMeas)) OF + LoggedMeasNeighbourMeas-TDD128 + +LoggedMeasLocationInfo ::= CHOICE { + ellipsoidPoint EllipsoidPoint, + ellipsoidPointAltitude EllipsoidPointAltitude +} + +LoggedMeasLocationInfo-vb50ext ::= CHOICE { + ellipsoidPointUncertCircle EllipsoidPointUncertCircle, + ellipsoidPointUncertEllipse EllipsoidPointUncertEllipse, + ellipsoidPointAltitudeEllipse EllipsoidPointAltitudeEllipsoide +} + +LoggedMeasReport ::= SEQUENCE { + absoluteTimeInfo BIT STRING (SIZE(48)), + traceReference TraceReference, + traceRecordingSession TraceRecordingSession, + tce-Id TCE-Id, + loggedMeasInfoList LoggedMeasInfoList OPTIONAL, + loggedMeasAvailable ENUMERATED { true } OPTIONAL +} + +LoggedMeasReport-vb50ext ::= SEQUENCE { + loggedMeasInfoList LoggedMeasInfoList-vb50ext OPTIONAL +} + +LoggedMeasServingCellMeas-FDD ::= SEQUENCE { + cellIdentity CellIdentity, + cpich-RSCP CPICH-RSCP, + cpich-Ec-N0 CPICH-Ec-N0 +} + +LoggedMeasServingCellMeas-FDD-vb50ext ::= SEQUENCE { + plmnIdentity PLMN-Identity OPTIONAL +} + +LoggedMeasServingCellMeas-TDD128 ::= SEQUENCE { + cellIdentity CellIdentity, + primaryCCPCH-RSCP PrimaryCCPCH-RSCP +} + +LoggedMeasServingCellMeas-TDD128-vb50ext ::= SEQUENCE { + plmnIdentity PLMN-Identity OPTIONAL +} + +LoggedUTRACellInfo ::= SEQUENCE { + plmn-Identity PLMN-Identity, + cellIdentity CellIdentity, + uarfcn UARFCN, + cellParametersID CellParametersID OPTIONAL, + primaryScramblingCode PrimaryScramblingCode OPTIONAL +} + +LoggingAbsoluteThreshold ::= CHOICE { + rscpforANR RSCPforANR, + ec-N0forANR Ec-N0forANR +} + +-- it applies to RSCP by step of 2 and Ec/N0 by step of 1 +-- Actual value LoggingRelativeThreshold = IE value * 2 (RSCP) +-- Actual value LoggingRelativeThreshold = IE value (Ec/N0) +LoggingRelativeThreshold ::= INTEGER (-4..16) + +KeplerianParameters ::= SEQUENCE { + toe-nav BIT STRING (SIZE (14)), + ganss-omega-nav BIT STRING (SIZE (32)), + delta-n-nav BIT STRING (SIZE (16)), + m-zero-nav BIT STRING (SIZE (32)), + omegadot-nav BIT STRING (SIZE (24)), + ganss-e-nav BIT STRING (SIZE (32)), + idot-nav BIT STRING (SIZE (14)), + a-sqrt-nav BIT STRING (SIZE (32)), + i-zero-nav BIT STRING (SIZE (32)), + omega-zero-nav BIT STRING (SIZE (32)), + c-rs-nav BIT STRING (SIZE (16)), + c-is-nav BIT STRING (SIZE (16)), + c-us-nav BIT STRING (SIZE (16)), + c-rc-nav BIT STRING (SIZE (16)), + c-ic-nav BIT STRING (SIZE (16)), + c-uc-nav BIT STRING (SIZE (16)) +} + +MaxNumberOfReportingCellsType1 ::= ENUMERATED { + e1, e2, e3, e4, e5, e6} + +MaxNumberOfReportingCellsType2 ::= ENUMERATED { + e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12} + +MaxNumberOfReportingCellsType3 ::= ENUMERATED { + viactCellsPlus1, + viactCellsPlus2, + viactCellsPlus3, + viactCellsPlus4, + viactCellsPlus5, + viactCellsPlus6 } + +MaxReportedCellsOnRACH ::= ENUMERATED { + noReport, + currentCell, + currentAnd-1-BestNeighbour, + currentAnd-2-BestNeighbour, + currentAnd-3-BestNeighbour, + currentAnd-4-BestNeighbour, + currentAnd-5-BestNeighbour, + currentAnd-6-BestNeighbour } + +MaxReportedCellsOnRACHinterFreq ::= INTEGER (1..8) + +MeasuredResults ::= CHOICE { + intraFreqMeasuredResultsList IntraFreqMeasuredResultsList, + interFreqMeasuredResultsList InterFreqMeasuredResultsList, + interRATMeasuredResultsList InterRATMeasuredResultsList, + trafficVolumeMeasuredResultsList TrafficVolumeMeasuredResultsList, + qualityMeasuredResults QualityMeasuredResults, + ue-InternalMeasuredResults UE-InternalMeasuredResults, + ue-positioning-MeasuredResults UE-Positioning-MeasuredResults, + spare NULL +} + +MeasuredResultsOnSecUlFreq ::= SEQUENCE { + intraFreqMeasuredResultsList IntraFrequencyMeasuredResultsListOnSecULFreq +} + +MeasuredResults-v390ext ::= SEQUENCE { + ue-positioning-MeasuredResults-v390ext UE-Positioning-MeasuredResults-v390ext +} + + +MeasuredResults-v590ext ::= CHOICE { + intraFrequencyMeasuredResultsList IntraFrequencyMeasuredResultsList-v590ext, + interFrequencyMeasuredResultsList InterFrequencyMeasuredResultsList-v590ext +} + +MeasuredResults-v770ext ::= CHOICE { + ueInternalMeasuredResults UE-InternalMeasuredResults-v770ext, + ue-positioning-MeasuredResults UE-Positioning-MeasuredResults-v770ext +} + +MeasuredResults-v860ext ::= CHOICE { + ue-positioning-MeasuredResults UE-Positioning-MeasuredResults-v860ext +} + +MeasuredResultsList-v920ext ::= SEQUENCE (SIZE (1..maxAdditionalMeas)) OF + MeasuredResults-v920ext + +MeasuredResultsListOnSecUlFreq ::= SEQUENCE (SIZE (1..maxAdditionalMeas)) OF + MeasuredResultsOnSecUlFreq + +MeasuredResults-v920ext ::= CHOICE { + intraFreqMeasuredResultsList IntraFreqMeasuredResultsList-v920ext, + interFreqMeasuredResultsList InterFreqMeasuredResultsList-v920ext +} + +MeasuredResults-LCR-r4 ::= CHOICE { + intraFreqMeasuredResultsList IntraFreqMeasuredResultsList, + interFreqMeasuredResultsList InterFreqMeasuredResultsList, + interRATMeasuredResultsList InterRATMeasuredResultsList, + trafficVolumeMeasuredResultsList TrafficVolumeMeasuredResultsList, + qualityMeasuredResults QualityMeasuredResults, + ue-InternalMeasuredResults UE-InternalMeasuredResults-LCR-r4, + ue-positioniing-MeasuredResults UE-Positioning-MeasuredResults, + spare NULL +} + +MeasuredResultsList ::= SEQUENCE (SIZE (1..maxAdditionalMeas)) OF + MeasuredResults + +MeasuredResultsList-LCR-r4-ext ::= SEQUENCE (SIZE (1..maxAdditionalMeas)) OF + MeasuredResults-LCR-r4 + +MeasuredResultsList-v770xet ::= SEQUENCE (SIZE (1..maxAdditionalMeas)) OF SEQUENCE { + -- The 'measuredResults' element shall be present, if 'v770' extended measurement results + -- associated with the corresponding element in the IE 'MeasuredResultList' shall be + -- provided, otherwise it is not needed + measuredResults MeasuredResults-v770ext OPTIONAL +} + +MeasuredResultsList-v860ext ::= SEQUENCE (SIZE (1..maxAdditionalMeas)) OF SEQUENCE { + -- The 'measuredResults' element shall be present, if 'v860' extended measurement results + -- associated with the corresponding element in the IE 'MeasuredResultList' shall be + -- provided, otherwise it is not needed + measuredResults MeasuredResults-v860ext OPTIONAL +} + +MeasuredResultsOnRACH ::= SEQUENCE { + currentCell SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + measurementQuantity CHOICE { + cpich-Ec-N0 CPICH-Ec-N0, + cpich-RSCP CPICH-RSCP, + pathloss Pathloss, + spare NULL + } + }, + tdd SEQUENCE { + -- For 3.84 Mcps, 7.68 Mcps and 1.28 Mcps TDD + timeslotISCP TimeslotISCP-List OPTIONAL, + primaryCCPCH-RSCP PrimaryCCPCH-RSCP OPTIONAL + } + } + }, + monitoredCells MonitoredCellRACH-List OPTIONAL +} + +MeasuredResultsOnRACH-v7g0ext ::= SEQUENCE { + currentCell-DeltaRSCP DeltaRSCPPerCell OPTIONAL, + monitoredCellRACH-List-v7g0ext MonitoredCellRACH-List-v7g0ext OPTIONAL +} + +--The order of the list corresponds to the order of the cells in MonitoredCellRACH-List +MonitoredCellRACH-List-v7g0ext ::= SEQUENCE (SIZE (1..8)) OF + DeltaRSCPPerCell + +--TDD choice is removed, compared to tabular, in order to optimise FDD format +MeasuredResultsOnRACHFDD-r11 ::= SEQUENCE { + currentCell SEQUENCE { + measurementQuantity CHOICE { + cpich-Ec-N0 CPICH-Ec-N0, + cpich-RSCP CPICH-RSCP, + pathloss Pathloss, + spare NULL + } + }, + measuredResultsUsedFreq MonitoredCellRACH-ListFDD-r11 OPTIONAL, + measuredResultsNonUsedFreq MeasuredResultsOnRACHinterFreq OPTIONAL, + measuredResultsEUTRAFreq MeasuredResultsOnRACH-EUTRAFreq OPTIONAL +} + +MeasuredResultsOnRACHinterFreq ::= SEQUENCE { + interFreqCellIndication-SIB11 INTEGER (0..1), + interFreqCellIndication-SIB12 INTEGER (0..1), + interFreqRACHRepCellsList InterFreqRACHRepCellsList +} +MeasuredResultsOnRACH-EUTRAFreq ::= SEQUENCE { + eutraFrequencyIndication-SIB19 INTEGER (0..1), + eutraFrequencyIndicator BIT STRING (SIZE (maxNumEUTRAFreqs-FACH)) +} + +MeasurementCommand ::= CHOICE { + setup MeasurementType, + modify SEQUENCE { + measurementType MeasurementType OPTIONAL + }, + release NULL +} + +MeasurementCommand-r4 ::= CHOICE { + setup MeasurementType-r4, + modify SEQUENCE { + measurementType MeasurementType-r4 OPTIONAL + }, + release NULL +} + +MeasurementCommand-r6 ::= CHOICE { + setup MeasurementType-r6, + modify SEQUENCE { + measurementType MeasurementType-r6 OPTIONAL + }, + release NULL +} + +MeasurementCommand-r7 ::= CHOICE { + setup MeasurementType-r7, + modify SEQUENCE { + measurementType MeasurementType-r7 OPTIONAL + }, + release NULL +} + +MeasurementCommand-r8 ::= CHOICE { + setup MeasurementType-r8, + modify SEQUENCE { + measurementType MeasurementType-r8 OPTIONAL + }, + release NULL +} + +MeasurementCommand-r9 ::= CHOICE { + setup MeasurementType-r9, + modify SEQUENCE { + measurementType MeasurementType-r9 OPTIONAL + }, + release NULL +} + +MeasurementCommand-r10 ::= CHOICE { + setup MeasurementType-r10, + modify SEQUENCE { + measurementType MeasurementType-r10 OPTIONAL + }, + release NULL +} + +MeasurementCommand-r11 ::= CHOICE { + setup MeasurementType-r11, + modify SEQUENCE { + measurementType MeasurementType-r11 OPTIONAL + }, + release NULL +} + +MeasurementControlSysInfo ::= SEQUENCE { + -- CHOICE cellSelectQualityMeasure represents PCCPCH-RSCP in TDD mode. + use-of-HCS CHOICE { + hcs-not-used SEQUENCE { + cellSelectQualityMeasure CHOICE { + cpich-RSCP SEQUENCE { + intraFreqMeasurementSysInfo IntraFreqMeasurementSysInfo-RSCP OPTIONAL, + interFreqMeasurementSysInfo InterFreqMeasurementSysInfo-RSCP OPTIONAL + }, + cpich-Ec-N0 SEQUENCE { + intraFreqMeasurementSysInfo IntraFreqMeasurementSysInfo-ECN0 OPTIONAL, + interFreqMeasurementSysInfo InterFreqMeasurementSysInfo-ECN0 OPTIONAL + } + }, + interRATMeasurementSysInfo InterRATMeasurementSysInfo-B OPTIONAL + }, + hcs-used SEQUENCE { + cellSelectQualityMeasure CHOICE { + cpich-RSCP SEQUENCE { + intraFreqMeasurementSysInfo IntraFreqMeasurementSysInfo-HCS-RSCP OPTIONAL, + interFreqMeasurementSysInfo InterFreqMeasurementSysInfo-HCS-RSCP OPTIONAL + }, + cpich-Ec-N0 SEQUENCE { + intraFreqMeasurementSysInfo IntraFreqMeasurementSysInfo-HCS-ECN0 OPTIONAL, + interFreqMeasurementSysInfo InterFreqMeasurementSysInfo-HCS-ECN0 OPTIONAL + } + }, + interRATMeasurementSysInfo InterRATMeasurementSysInfo OPTIONAL + } + }, + trafficVolumeMeasSysInfo TrafficVolumeMeasSysInfo OPTIONAL, + -- dummy is not used in this version of specification and it shall be ignored by the UE. + dummy UE-InternalMeasurementSysInfo OPTIONAL +} + +MeasurementControlSysInfoExtension ::= SEQUENCE { + -- CHOICE cellSelectQualityMeasure represents PCCPCH-RSCP in TDD mode. + use-of-HCS CHOICE { + hcs-not-used SEQUENCE { + cellSelectQualityMeasure CHOICE { + cpich-RSCP SEQUENCE { + newIntraFreqCellList NewIntraFreqCellSI-List-RSCP OPTIONAL, + newInterFreqCellList NewInterFreqCellSI-List-RSCP OPTIONAL + }, + cpich-Ec-N0 SEQUENCE { + newIntraFreqCellList NewIntraFreqCellSI-List-ECN0 OPTIONAL, + newInterFreqCellList NewInterFreqCellSI-List-ECN0 OPTIONAL + } + }, + newInterRATCellList NewInterRATCellList OPTIONAL + }, + hcs-used SEQUENCE { + cellSelectQualityMeasure CHOICE { + cpich-RSCP SEQUENCE { + newIntraFreqCellList NewIntraFreqCellSI-List-HCS-RSCP OPTIONAL, + newInterFreqCellList NewInterFreqCellSI-List-HCS-RSCP OPTIONAL + }, + cpich-Ec-N0 SEQUENCE { + newIntraFreqCellList NewIntraFreqCellSI-List-HCS-ECN0 OPTIONAL, + newInterFreqCellList NewInterFreqCellSI-List-HCS-ECN0 OPTIONAL + } + }, + newInterRATCellList NewInterRATCellList OPTIONAL + } + } +} + +MeasurementControlSysInfoExtensionAddon-r5 ::= SEQUENCE { + --The order of the list corresponds to the order of cell in newIntraFrequencyCellInfoList + newIntraFrequencyCellInfoListAddon-r5 SEQUENCE (SIZE (1..maxCellMeas)) OF + CellSelectReselectInfo-v590ext OPTIONAL, + --The order of the list corresponds to the order of cell in newInterFrequencyCellInfoList + newInterFrequencyCellInfoListAddon-r5 SEQUENCE (SIZE (1..maxCellMeas)) OF + CellSelectReselectInfo-v590ext OPTIONAL, + --The order of the list corresponds to the order of cell in newInterRATCellInfoList + newInterRATCellInfoListAddon-r5 SEQUENCE (SIZE (1..maxCellMeas)) OF + CellSelectReselectInfo-v590ext OPTIONAL +} + +MeasurementControlSysInfoExtension-LCR-r4 ::= SEQUENCE { + -- CHOICE cellSelectQualityMeasure represents PCCPCH-RSCP in TDD mode. + use-of-HCS CHOICE { + hcs-not-used SEQUENCE { + cellSelectQualityMeasure CHOICE { + cpich-RSCP SEQUENCE { + newIntraFreqCellList NewIntraFreqCellSI-List-RSCP-LCR-r4 OPTIONAL, + newInterFreqCellList NewInterFreqCellSI-List-RSCP-LCR-r4 OPTIONAL + }, + cpich-Ec-N0 SEQUENCE { + newIntraFreqCellList NewIntraFreqCellSI-List-ECN0-LCR-r4 OPTIONAL, + newInterFreqCellList NewInterFreqCellSI-List-ECN0-LCR-r4 OPTIONAL + } + }, + newInterRATCellList NewInterRATCellList OPTIONAL + }, + hcs-used SEQUENCE { + cellSelectQualityMeasure CHOICE { + cpich-RSCP SEQUENCE { + newIntraFreqCellList NewIntraFreqCellSI-List-HCS-RSCP-LCR-r4 OPTIONAL, + newInterFreqCellList NewInterFreqCellSI-List-HCS-RSCP-LCR-r4 OPTIONAL + }, + cpich-Ec-N0 SEQUENCE { + newIntraFreqCellList NewIntraFreqCellSI-List-HCS-ECN0-LCR-r4 OPTIONAL, + newInterFreqCellList NewInterFreqCellSI-List-HCS-ECN0-LCR-r4 OPTIONAL + } + }, + newInterRATCellList NewInterRATCellList OPTIONAL + } + } +} + +MeasurementControlSysInfo-LCR-r4-ext ::= SEQUENCE { + -- CHOICE use-of-HCS shall have the same value as the use-of-HCS + -- in MeasurementControlSysInfo + -- CHOICE cellSelectQualityMeasure represents PCCPCH-RSCP in TDD mode. + use-of-HCS CHOICE { + hcs-not-used SEQUENCE { + -- CHOICE cellSelectQualityMeasure shall have the same value as the + -- cellSelectQualityMeasure in MeasurementControlSysInfo + cellSelectQualityMeasure CHOICE { + cpich-RSCP SEQUENCE { + intraFreqMeasurementSysInfo IntraFreqMeasurementSysInfo-RSCP-LCR-r4 OPTIONAL, + interFreqMeasurementSysInfo InterFreqMeasurementSysInfo-RSCP-LCR-r4 OPTIONAL + }, + cpich-Ec-N0 SEQUENCE { + intraFreqMeasurementSysInfo IntraFreqMeasurementSysInfo-ECN0-LCR-r4 OPTIONAL, + interFreqMeasurementSysInfo InterFreqMeasurementSysInfo-ECN0-LCR-r4 OPTIONAL + } + } + }, + hcs-used SEQUENCE { + -- CHOICE cellSelectQualityMeasure shall have the same value as the + -- cellSelectQualityMeasure in MeasurementControlSysInfo + cellSelectQualityMeasure CHOICE { + cpich-RSCP SEQUENCE { + intraFreqMeasurementSysInfo IntraFreqMeasurementSysInfo-HCS-RSCP-LCR-r4 OPTIONAL, + interFreqMeasurementSysInfo InterFreqMeasurementSysInfo-HCS-RSCP-LCR-r4 OPTIONAL + }, + cpich-Ec-N0 SEQUENCE { + intraFreqMeasurementSysInfo IntraFreqMeasurementSysInfo-HCS-ECN0-LCR-r4 OPTIONAL, + interFreqMeasurementSysInfo InterFreqMeasurementSysInfo-HCS-ECN0-LCR-r4 OPTIONAL + } + } + } + } +} + +MeasurementIdentity ::= INTEGER (1..16) + +MeasurementIdentityExt ::= INTEGER (17..32) + +MeasurementIdentity-r9 ::= INTEGER (1..32) + +MeasurementOccasionPatternParameter ::= SEQUENCE { + measurement-Occasion-Coeff INTEGER (1..9), + measurement-Occasion-Offset INTEGER (0..511), + measurement-Occasion-Length INTEGER (1..512), + timeslotBitmap BIT STRING (SIZE (7)) OPTIONAL +} + +MeasurementQuantityGSM ::= ENUMERATED { + gsm-CarrierRSSI, + dummy } + +MeasurementQuantityEUTRA ::= ENUMERATED { + rsrp, + rsrq } + +MeasurementReportingMode ::= SEQUENCE { + measurementReportTransferMode TransferMode, + periodicalOrEventTrigger PeriodicalOrEventTrigger +} + +MeasurementType ::= CHOICE { + intraFrequencyMeasurement IntraFrequencyMeasurement, + interFrequencyMeasurement InterFrequencyMeasurement, + interRATMeasurement InterRATMeasurement, + ue-positioning-Measurement UE-Positioning-Measurement, + trafficVolumeMeasurement TrafficVolumeMeasurement, + qualityMeasurement QualityMeasurement, + ue-InternalMeasurement UE-InternalMeasurement +} + +MeasurementType-r4 ::= CHOICE { + intraFrequencyMeasurement IntraFrequencyMeasurement-r4, + interFrequencyMeasurement InterFrequencyMeasurement-r4, + interRATMeasurement InterRATMeasurement-r4, + up-Measurement UE-Positioning-Measurement-r4, + trafficVolumeMeasurement TrafficVolumeMeasurement, + qualityMeasurement QualityMeasurement, + ue-InternalMeasurement UE-InternalMeasurement-r4 +} + +MeasurementType-r6 ::= CHOICE { + intraFrequencyMeasurement IntraFrequencyMeasurement-r6, + interFrequencyMeasurement InterFrequencyMeasurement-r6, + interRATMeasurement InterRATMeasurement-r6, + up-Measurement UE-Positioning-Measurement-r4, + trafficVolumeMeasurement TrafficVolumeMeasurement, + qualityMeasurement QualityMeasurement, + ue-InternalMeasurement UE-InternalMeasurement-r4 +} + +MeasurementType-r7 ::= CHOICE { + intraFrequencyMeasurement IntraFrequencyMeasurement-r7, + interFrequencyMeasurement InterFrequencyMeasurement-r7, + interRATMeasurement InterRATMeasurement-r6, + up-Measurement UE-Positioning-Measurement-r7, + trafficVolumeMeasurement TrafficVolumeMeasurement, + qualityMeasurement QualityMeasurement, + ue-InternalMeasurement UE-InternalMeasurement-r4 +} + +MeasurementType-r8 ::= CHOICE { + intraFrequencyMeasurement IntraFrequencyMeasurement-r7, + interFrequencyMeasurement InterFrequencyMeasurement-r8, + interRATMeasurement InterRATMeasurement-r8, + up-Measurement UE-Positioning-Measurement-r8, + trafficVolumeMeasurement TrafficVolumeMeasurement, + qualityMeasurement QualityMeasurement, + ue-InternalMeasurement UE-InternalMeasurement-r4 +} + +MeasurementType-r9 ::= CHOICE { + intraFrequencyMeasurement IntraFrequencyMeasurement-r9, + interFrequencyMeasurement InterFrequencyMeasurement-r9, + interRATMeasurement InterRATMeasurement-r9, + up-Measurement UE-Positioning-Measurement-r9, + trafficVolumeMeasurement TrafficVolumeMeasurement, + qualityMeasurement QualityMeasurement, + ue-InternalMeasurement UE-InternalMeasurement-r4, + csgProximityDetection CSGProximityDetection +} + +MeasurementType-r10 ::= CHOICE { + intraFrequencyMeasurement IntraFrequencyMeasurement-r10, + interFrequencyMeasurement InterFrequencyMeasurement-r10, + interRATMeasurement InterRATMeasurement-r9, + up-Measurement UE-Positioning-Measurement-r10, + trafficVolumeMeasurement TrafficVolumeMeasurement, + qualityMeasurement QualityMeasurement, + ue-InternalMeasurement UE-InternalMeasurement-r4, + csgProximityDetection CSGProximityDetection +} + +MeasurementType-r11 ::= CHOICE { + intraFrequencyMeasurement IntraFrequencyMeasurement-r11, + interFrequencyMeasurement InterFrequencyMeasurement-r11, + interRATMeasurement InterRATMeasurement-r11, + up-Measurement UE-Positioning-Measurement-r10, + trafficVolumeMeasurement TrafficVolumeMeasurement, + qualityMeasurement QualityMeasurement, + ue-InternalMeasurement UE-InternalMeasurement-r4, + csgProximityDetection CSGProximityDetection, + eutraMeasurementForCELLFACH EUTRA-MeasurementForCELLFACH +} + +MeasurementValidity ::= SEQUENCE { + ue-State ENUMERATED { + cell-DCH, all-But-Cell-DCH, all-States } +} + +MonitoredCellRACH-List ::= SEQUENCE (SIZE (1..8)) OF + MonitoredCellRACH-Result + +MonitoredCellRACH-Result ::= SEQUENCE { + sfn-SFN-ObsTimeDifference SFN-SFN-ObsTimeDifference OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + measurementQuantity CHOICE { + cpich-Ec-N0 CPICH-Ec-N0, + cpich-RSCP CPICH-RSCP, + pathloss Pathloss, + spare NULL + } OPTIONAL + }, + tdd SEQUENCE { + cellParametersID CellParametersID, + primaryCCPCH-RSCP PrimaryCCPCH-RSCP + } + } +} + +MonitoredCellRACH-ListFDD-r11 ::= SEQUENCE (SIZE (1..8)) OF + MonitoredCellRACH-ResultFDD-r11 + +--TDD choice is removed, compared to tabular, in order to optimise FDD format +MonitoredCellRACH-ResultFDD-r11 ::= SEQUENCE { + sfn-SFN-ObsTimeDifference SFN-SFN-ObsTimeDifference OPTIONAL, + primaryCPICH-Info PrimaryCPICH-Info, + measurementQuantity CHOICE { + cpich-Ec-N0 CPICH-Ec-N0, + cpich-RSCP CPICH-RSCP, + pathloss Pathloss, + spare NULL + } +} + +MultipathIndicator ::= ENUMERATED { + nm, + low, + medium, + high } + +MultipleEUTRAFrequencyBandIndicatorList ::= SEQUENCE (SIZE (1.. maxMultipleFrequencyBandsEUTRA)) OF + RadioFrequencyBandEUTRA + +MultipleEUTRAFrequencyBandIndicatorExtensionList ::= SEQUENCE (SIZE (1.. maxMultipleFrequencyBandsEUTRA)) + OF RadioFrequencyBandEUTRAExt + +MultipleEUTRAFrequencyBandInfo ::= SEQUENCE { + multipleEUTRAFrequencyBandIndicatorlist MultipleEUTRAFrequencyBandIndicatorList OPTIONAL +} + +MultipleEUTRAFrequencyBandExtensionInfo ::= SEQUENCE { + multipleEUTRAFrequencyBandIndicatorlist MultipleEUTRAFrequencyBandIndicatorExtensionList OPTIONAL +} + +MultipleEUTRAFrequencyInfoList ::= SEQUENCE (SIZE (1.. maxNumEUTRAFreqs)) OF + MultipleEUTRAFrequencyBandInfo + +MultipleEUTRAFrequencyInfoExtensionList ::= SEQUENCE (SIZE (1.. maxNumEUTRAFreqs)) OF + MultipleEUTRAFrequencyBandExtensionInfo + +MultipleFrequencyBandIndicatorListFDD::= SEQUENCE (SIZE (1..maxMultipleFrequencyBandsFDD)) OF + FrequencyBandsIndicatorFDD + +MultipleFrequencyBandInfo ::= SEQUENCE { + multipleFrequencyBandIndicatorListFDD MultipleFrequencyBandIndicatorListFDD OPTIONAL +} + +MultipleFrequencyInfoListFDD ::= SEQUENCE (SIZE (1.. maxNumFDDFreqs)) OF + MultipleFrequencyBandInfo + +N-CR-T-CRMaxHyst ::= SEQUENCE { + n-CR INTEGER (1..16) DEFAULT 8, + t-CRMaxHyst T-CRMaxHyst +} + +NAVclockModel ::= SEQUENCE { + navToc BIT STRING (SIZE (16)), + navaf2 BIT STRING (SIZE (8)), + navaf1 BIT STRING (SIZE (16)), + navaf0 BIT STRING (SIZE (22)), + navTgd BIT STRING (SIZE (8)) +} + +NavigationModelSatInfo ::= SEQUENCE { + satID SatID, + satelliteStatus SatelliteStatus, + ephemerisParameter EphemerisParameter OPTIONAL +} + +NavigationModelSatInfoList ::= SEQUENCE (SIZE (1..maxSat)) OF + NavigationModelSatInfo + +NavModel-CNAVKeplerianSet ::= SEQUENCE { + cnavTop BIT STRING (SIZE (11)), + cnavURAindex BIT STRING (SIZE (5)), + cnavDeltaA BIT STRING (SIZE (26)), + cnavAdot BIT STRING (SIZE (25)), + cnavDeltaNo BIT STRING (SIZE (17)), + cnavDeltaNoDot BIT STRING (SIZE (23)), + cnavMo BIT STRING (SIZE (33)), + cnavE BIT STRING (SIZE (33)), + cnavOmega BIT STRING (SIZE (33)), + cnavOMEGA0 BIT STRING (SIZE (33)), + cnavDeltaOmegaDot BIT STRING (SIZE (17)), + cnavIo BIT STRING (SIZE (33)), + cnavIoDot BIT STRING (SIZE (15)), + cnavCis BIT STRING (SIZE (16)), + cnavCic BIT STRING (SIZE (16)), + cnavCrs BIT STRING (SIZE (24)), + cnavCrc BIT STRING (SIZE (24)), + cnavCus BIT STRING (SIZE (21)), + cnavCuc BIT STRING (SIZE (21)) +} + +NavModel-GLONASSecef ::= SEQUENCE { + gloEn BIT STRING (SIZE (5)), + gloP1 BIT STRING (SIZE (2)), + gloP2 BIT STRING (SIZE (1)), + gloM BIT STRING (SIZE (2)) OPTIONAL, + gloX BIT STRING (SIZE (27)), + gloXdot BIT STRING (SIZE (24)), + gloXdotdot BIT STRING (SIZE (5)), + gloY BIT STRING (SIZE (27)), + gloYdot BIT STRING (SIZE (24)), + gloYdotdot BIT STRING (SIZE (5)), + gloZ BIT STRING (SIZE (27)), + gloZdot BIT STRING (SIZE (24)), + gloZdotdot BIT STRING (SIZE (5)) +} + +NavModel-NAVKeplerianSet ::= SEQUENCE { + navURA BIT STRING (SIZE (4)), + navFitFlag BIT STRING (SIZE (1)), + navToe BIT STRING (SIZE (16)), + navOmega BIT STRING (SIZE (32)), + navDeltaN BIT STRING (SIZE (16)), + navM0 BIT STRING (SIZE (32)), + navOmegaADot BIT STRING (SIZE (24)), + navE BIT STRING (SIZE (32)), + navIDot BIT STRING (SIZE (14)), + navAPowerHalf BIT STRING (SIZE (32)), + navI0 BIT STRING (SIZE (32)), + navOmegaA0 BIT STRING (SIZE (32)), + navCrs BIT STRING (SIZE (16)), + navCis BIT STRING (SIZE (16)), + navCus BIT STRING (SIZE (16)), + navCrc BIT STRING (SIZE (16)), + navCic BIT STRING (SIZE (16)), + navCuc BIT STRING (SIZE (16)) +} + +NavModel-SBASecef ::= SEQUENCE { + sbasTo BIT STRING (SIZE (13)) OPTIONAL, + sbasAccuracy BIT STRING (SIZE (4)), + sbasXg BIT STRING (SIZE (30)), + sbasYg BIT STRING (SIZE (30)), + sbasZg BIT STRING (SIZE (25)), + sbasXgDot BIT STRING (SIZE (17)), + sbasYgDot BIT STRING (SIZE (17)), + sbasZgDot BIT STRING (SIZE (18)), + sbasXgDotDot BIT STRING (SIZE (10)), + sbagYgDotDot BIT STRING (SIZE (10)), + sbasZgDotDot BIT STRING (SIZE (10)) +} + +EphemerisParameter ::= SEQUENCE { + codeOnL2 BIT STRING (SIZE (2)), + uraIndex BIT STRING (SIZE (4)), + satHealth BIT STRING (SIZE (6)), + iodc BIT STRING (SIZE (10)), + l2Pflag BIT STRING (SIZE (1)), + sf1Revd SubFrame1Reserved, + t-GD BIT STRING (SIZE (8)), + t-oc BIT STRING (SIZE (16)), + af2 BIT STRING (SIZE (8)), + af1 BIT STRING (SIZE (16)), + af0 BIT STRING (SIZE (22)), + c-rs BIT STRING (SIZE (16)), + delta-n BIT STRING (SIZE (16)), + m0 BIT STRING (SIZE (32)), + c-uc BIT STRING (SIZE (16)), + e BIT STRING (SIZE (32)), + c-us BIT STRING (SIZE (16)), + a-Sqrt BIT STRING (SIZE (32)), + t-oe BIT STRING (SIZE (16)), + fitInterval BIT STRING (SIZE (1)), + aodo BIT STRING (SIZE (5)), + c-ic BIT STRING (SIZE (16)), + omega0 BIT STRING (SIZE (32)), + c-is BIT STRING (SIZE (16)), + i0 BIT STRING (SIZE (32)), + c-rc BIT STRING (SIZE (16)), + omega BIT STRING (SIZE (32)), + omegaDot BIT STRING (SIZE (24)), + iDot BIT STRING (SIZE (14)) +} +NC-Mode ::= BIT STRING (SIZE (3)) + +Neighbour ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + neighbourIdentity PrimaryCPICH-Info OPTIONAL, + uE-RX-TX-TimeDifferenceType2Info UE-RX-TX-TimeDifferenceType2Info OPTIONAL + }, + tdd SEQUENCE { + neighbourAndChannelIdentity CellAndChannelIdentity OPTIONAL + } + }, + neighbourQuality NeighbourQuality, + sfn-SFN-ObsTimeDifference2 SFN-SFN-ObsTimeDifference2} + +Neighbour-v390ext ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + frequencyInfo FrequencyInfo + }, + tdd NULL + } +} + +NeighbourList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + Neighbour + +Neighbour-TDD-r7 ::= SEQUENCE { + uarfcn UARFCN OPTIONAL +} + +-- The order of the cells in IE NeighbourList-TDD-r7 shall be the +-- same as the order in IE NeighbourList +NeighbourList-TDD-r7 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF Neighbour-TDD-r7 + +-- The order of the cells in IE NeighbourList-v390ext shall be the +-- same as the order in IE NeighbourList +NeighbourList-v390ext ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + Neighbour-v390ext + +NeighbourQuality ::= SEQUENCE { + ue-Positioning-OTDOA-Quality UE-Positioning-OTDOA-Quality +} + +NewInterFreqCell ::= SEQUENCE { + interFreqCellID InterFreqCellID OPTIONAL, + frequencyInfo FrequencyInfo OPTIONAL, + cellInfo CellInfo +} + +NewInterFreqCell-r4 ::= SEQUENCE { + interFreqCellID InterFreqCellID OPTIONAL, + frequencyInfo FrequencyInfo OPTIONAL, + cellInfo CellInfo-r4 +} + +NewInterFreqCell-v7b0ext ::= SEQUENCE { + intraSecondaryFreqIndicator BOOLEAN +} + +NewInterFreqCell-LCR-v8a0ext ::= SEQUENCE { + cellInfo-LCR-r8 CellInfo-LCR-r8-ext OPTIONAL +} + +NewInterFreqCell-r8 ::= SEQUENCE { + interFreqCellID InterFreqCellID OPTIONAL, + frequencyInfo FrequencyInfo OPTIONAL, + cellInfo CellInfo-r4, + modeSpecificInfo CHOICE { + noInfo NULL, + tdd128 SEQUENCE { + intraSecondaryFreqIndicator BOOLEAN + } + } +} + +NewInterFreqCell-r9 ::= SEQUENCE { + interFreqCellID InterFreqCellID OPTIONAL, + frequencyInfo FrequencyInfo OPTIONAL, + cellInfo CellInfo-r9, + modeSpecificInfo CHOICE { + noInfo NULL, + tdd128 SEQUENCE { + intraSecondaryFreqIndicator BOOLEAN + } + } +} + +NewInterFreqCell-r10 ::= SEQUENCE { + interFreqCellID InterFreqCellID OPTIONAL, + frequencyInfo FrequencyInfo OPTIONAL, + cellInfo CellInfo-r9, + modeSpecificInfo CHOICE { + noInfo NULL, + tdd128 SEQUENCE { + intraSecondaryFreqIndicator BOOLEAN, + sNPLMonitorSetIndicator-TDD128 BIT STRING (SIZE (5)) OPTIONAL + } + } +} + +NewInterFreqCellList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterFreqCell + +NewInterFreqCellList-r4 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterFreqCell-r4 + +-- The order of the list corresponds to the order of cells in newInterFreqCellList +NewInterFreqCellList-v7b0ext ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterFreqCell-v7b0ext + +-- The order of the list corresponds to the order of cells in newInterFreqCellList +NewInterFreqCellList-LCR-v8a0ext ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterFreqCell-LCR-v8a0ext + +NewInterFreqCellList-r8 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterFreqCell-r8 + +NewInterFreqCellList-r9 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterFreqCell-r9 + +NewInterFreqCellList-r10 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterFreqCell-r10 + +NewInterFreqCellSI-RSCP ::= SEQUENCE { + interFreqCellID InterFreqCellID OPTIONAL, + frequencyInfo FrequencyInfo OPTIONAL, + cellInfo CellInfoSI-RSCP +} + +NewInterFreqCellSI-ECN0 ::= SEQUENCE { + interFreqCellID InterFreqCellID OPTIONAL, + frequencyInfo FrequencyInfo OPTIONAL, + cellInfo CellInfoSI-ECN0 +} + +NewInterFreqCellSI-HCS-RSCP ::= SEQUENCE { + interFreqCellID InterFreqCellID OPTIONAL, + frequencyInfo FrequencyInfo OPTIONAL, + cellInfo CellInfoSI-HCS-RSCP +} + +NewInterFreqCellSI-HCS-ECN0 ::= SEQUENCE { + interFreqCellID InterFreqCellID OPTIONAL, + frequencyInfo FrequencyInfo OPTIONAL, + cellInfo CellInfoSI-HCS-ECN0 +} + +NewInterFreqCellSI-RSCP-LCR-r4 ::= SEQUENCE { + interFreqCellID InterFreqCellID OPTIONAL, + frequencyInfo FrequencyInfo OPTIONAL, + cellInfo CellInfoSI-RSCP-LCR-r4 +} + +NewInterFreqCellSI-ECN0-LCR-r4 ::= SEQUENCE { + interFreqCellID InterFreqCellID OPTIONAL, + frequencyInfo FrequencyInfo OPTIONAL, + cellInfo CellInfoSI-ECN0-LCR-r4 +} + +NewInterFreqCellSI-HCS-RSCP-LCR-r4 ::= SEQUENCE { + interFreqCellID InterFreqCellID OPTIONAL, + frequencyInfo FrequencyInfo OPTIONAL, + cellInfo CellInfoSI-HCS-RSCP-LCR-r4 +} + +NewInterFreqCellSI-HCS-ECN0-LCR-r4 ::= SEQUENCE { + interFreqCellID InterFreqCellID OPTIONAL, + frequencyInfo FrequencyInfo OPTIONAL, + cellInfo CellInfoSI-HCS-ECN0-LCR-r4 +} + +NewInterFreqCellSI-List-ECN0 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterFreqCellSI-ECN0 + +NewInterFreqCellSI-List-HCS-RSCP ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterFreqCellSI-HCS-RSCP + +NewInterFreqCellSI-List-HCS-ECN0 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterFreqCellSI-HCS-ECN0 + +NewInterFreqCellSI-List-RSCP ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterFreqCellSI-RSCP + +NewInterFreqCellSI-List-ECN0-LCR-r4 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterFreqCellSI-ECN0-LCR-r4 + +NewInterFreqCellSI-List-HCS-RSCP-LCR-r4 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterFreqCellSI-HCS-RSCP-LCR-r4 + +NewInterFreqCellSI-List-HCS-ECN0-LCR-r4 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterFreqCellSI-HCS-ECN0-LCR-r4 + +NewInterFreqCellSI-List-RSCP-LCR-r4 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterFreqCellSI-RSCP-LCR-r4 + +NewInterRATCell ::= SEQUENCE { + interRATCellID InterRATCellID OPTIONAL, + technologySpecificInfo CHOICE { + gsm SEQUENCE { + cellSelectionReselectionInfo CellSelectReselectInfoSIB-11-12 OPTIONAL, + interRATCellIndividualOffset InterRATCellIndividualOffset, + bsic BSIC, + frequency-band Frequency-Band, + bcch-ARFCN BCCH-ARFCN, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy NULL OPTIONAL + }, + is-2000 SEQUENCE { + is-2000SpecificMeasInfo IS-2000SpecificMeasInfo + }, + -- ASN.1 inconsistency: NewInterRATCellList should be optional within + -- InterRATCellInfoList. The UE shall consider IE NewInterRATCell with + -- technologySpecificInfo set to "absent" as valid and handle the + -- message as if the IE NewInterRATCell was absent + absent NULL, + spare1 NULL + } +} + +NewInterRATCell-B ::= SEQUENCE { + interRATCellID InterRATCellID OPTIONAL, + technologySpecificInfo CHOICE { + gsm SEQUENCE { + cellSelectionReselectionInfo CellSelectReselectInfoSIB-11-12 OPTIONAL, + interRATCellIndividualOffset InterRATCellIndividualOffset, + bsic BSIC, + frequency-band Frequency-Band, + bcch-ARFCN BCCH-ARFCN, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy NULL OPTIONAL + }, + is-2000 SEQUENCE { + is-2000SpecificMeasInfo IS-2000SpecificMeasInfo + }, + -- ASN.1 inconsistency: NewInterRATCellList-B should be optional within + -- InterRATCellInfoList-B. The UE shall consider IE NewInterRATCell-B with + -- technologySpecificInfo set to "absent" as valid and handle the + -- message as if the IE NewInterRATCell-B was absent + absent NULL, + spare1 NULL + } +} + +NewInterRATCellList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterRATCell + +NewInterRATCellList-B ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewInterRATCell-B + +NewIntraFreqCell ::= SEQUENCE { + intraFreqCellID IntraFreqCellID OPTIONAL, + cellInfo CellInfo +} + +NewIntraFreqCell-r4 ::= SEQUENCE { + intraFreqCellID IntraFreqCellID OPTIONAL, + cellInfo CellInfo-r4 +} +NewIntraFreqCell-r9 ::= SEQUENCE { + intraFreqCellID IntraFreqCellID OPTIONAL, + cellInfo CellInfo-r9 +} + +NewIntraFreqCell-r10 ::= SEQUENCE { + intraFreqCellID IntraFreqCellID OPTIONAL, + cellInfo CellInfo-r9, + modeSpecificInfo CHOICE { + noInfo NULL, + tdd128 SEQUENCE { + sNPLMonitorSetIndicator-TDD128 BIT STRING (SIZE (5)) OPTIONAL + } + } +} + +NewIntraFreqCellOnSecULFreq ::= SEQUENCE { + intraFreqCellIDOnSecULFreq IntraFreqCellIDOnSecULFreq OPTIONAL, + cellInfo CellInfo-r4 +} + +NewIntraFreqCellList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewIntraFreqCell + +NewIntraFreqCellList-r4 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewIntraFreqCell-r4 + +NewIntraFreqCellList-r9 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewIntraFreqCell-r9 + +NewIntraFreqCellList-r10 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewIntraFreqCell-r10 + +NewIntraFreqCell-LCR-v8a0ext ::= SEQUENCE { + cellInfo-LCR-r8 CellInfo-LCR-r8-ext OPTIONAL +} + +-- The order of the list corresponds to the order of cells in newIntraFreqCellList +NewIntraFreqCellList-LCR-v8a0ext ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewIntraFreqCell-LCR-v8a0ext + +NewIntraFreqCellListOnSecULFreq ::= SEQUENCE (SIZE (1..maxCellMeasOnSecULFreq)) OF + NewIntraFreqCellOnSecULFreq + +NewIntraFreqCellSI-RSCP ::= SEQUENCE { + intraFreqCellID IntraFreqCellID OPTIONAL, + cellInfo CellInfoSI-RSCP +} + +NewIntraFreqCellSI-ECN0 ::= SEQUENCE { + intraFreqCellID IntraFreqCellID OPTIONAL, + cellInfo CellInfoSI-ECN0 +} +NewIntraFreqCellSI-HCS-RSCP ::= SEQUENCE { + intraFreqCellID IntraFreqCellID OPTIONAL, + cellInfo CellInfoSI-HCS-RSCP +} + +NewIntraFreqCellSI-HCS-ECN0 ::= SEQUENCE { + intraFreqCellID IntraFreqCellID OPTIONAL, + cellInfo CellInfoSI-HCS-ECN0 +} + +NewIntraFreqCellSI-RSCP-LCR-r4 ::= SEQUENCE { + intraFreqCellID IntraFreqCellID OPTIONAL, + cellInfo CellInfoSI-RSCP-LCR-r4 +} + +NewIntraFreqCellSI-ECN0-LCR-r4 ::= SEQUENCE { + intraFreqCellID IntraFreqCellID OPTIONAL, + cellInfo CellInfoSI-ECN0-LCR-r4 +} +NewIntraFreqCellSI-HCS-RSCP-LCR-r4 ::= SEQUENCE { + intraFreqCellID IntraFreqCellID OPTIONAL, + cellInfo CellInfoSI-HCS-RSCP-LCR-r4 +} + +NewIntraFreqCellSI-HCS-ECN0-LCR-r4 ::= SEQUENCE { + intraFreqCellID IntraFreqCellID OPTIONAL, + cellInfo CellInfoSI-HCS-ECN0-LCR-r4 +} + +NewIntraFreqCellSI-List-RSCP ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewIntraFreqCellSI-RSCP + +NewIntraFreqCellSI-List-ECN0 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewIntraFreqCellSI-ECN0 + +NewIntraFreqCellSI-List-HCS-RSCP ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewIntraFreqCellSI-HCS-RSCP + +NewIntraFreqCellSI-List-HCS-ECN0 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewIntraFreqCellSI-HCS-ECN0 + +NewIntraFreqCellSI-List-RSCP-LCR-r4 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewIntraFreqCellSI-RSCP-LCR-r4 + +NewIntraFreqCellSI-List-ECN0-LCR-r4 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewIntraFreqCellSI-ECN0-LCR-r4 + +NewIntraFreqCellSI-List-HCS-RSCP-LCR-r4 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewIntraFreqCellSI-HCS-RSCP-LCR-r4 + +NewIntraFreqCellSI-List-HCS-ECN0-LCR-r4 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + NewIntraFreqCellSI-HCS-ECN0-LCR-r4 + + -- IE "nonUsedFreqThreshold" is not needed in case of event 2a + -- In case of event 2a UTRAN should include value 0 within IE "nonUsedFreqThreshold" + -- In case of event 2a, the UE shall be ignore IE "nonUsedFreqThreshold" + -- In later versions of the message including this IE, a special version of + -- IE "NonUsedFreqParameterList" may be defined for event 2a, namely a + -- version not including IE "nonUsedFreqThreshold" +NonUsedFreqParameter ::= SEQUENCE { + nonUsedFreqThreshold Threshold, + nonUsedFreqW W +} + +NonUsedFreqParameter-r6 ::= SEQUENCE { + nonUsedFreqThreshold Threshold-r6, + nonUsedFreqW W +} + +NonUsedFreqParameter-r10 ::= SEQUENCE { + nonUsedFreqThreshold Threshold-r6, + nonUsedFreqW W, + nonUsedFreqTriggeringConditionDetectedCells ENUMERATED { true } OPTIONAL +} + +NonUsedFreqParameter-r11 ::= SEQUENCE { + nonUsedFreqThreshold Threshold-r6, + nonUsedFreqW W, + nonUsedFreqTriggeringConditionDetectedCells ENUMERATED { true } OPTIONAL, + excludedCellInfoList CellInfoListToBeExcluded OPTIONAL +} + +NonUsedFreq2aParameter-r10 ::= SEQUENCE { + nonUsedFreqW W, + nonUsedFreqTriggeringConditionDetectedCells ENUMERATED { true } OPTIONAL +} + +NonUsedFreq2aParameter-r11 ::= SEQUENCE { + nonUsedFreqW W, + nonUsedFreqTriggeringConditionDetectedCells ENUMERATED { true } OPTIONAL, + excludedCellInfoList CellInfoListToBeExcluded OPTIONAL +} + +NonUsedFreqParameterList ::= SEQUENCE (SIZE (1..maxFreq)) OF + NonUsedFreqParameter + +NonUsedFreqParameterList-r6 ::= SEQUENCE (SIZE (1..maxFreq)) OF + NonUsedFreqParameter-r6 + +NonUsedFreqParameterList-r10 ::= SEQUENCE (SIZE (1..maxFreq)) OF + NonUsedFreqParameter-r10 + +NonUsedFreqParameterList-r11 ::= SEQUENCE (SIZE (1..maxFreq)) OF + NonUsedFreqParameter-r11 + +NonUsedFreq2aParameterList-r10 ::= SEQUENCE (SIZE (1..maxFreq)) OF + NonUsedFreq2aParameter-r10 + +NonUsedFreq2aParameterList-r11 ::= SEQUENCE (SIZE (1..maxFreq)) OF + NonUsedFreq2aParameter-r11 + +NonUsedFreqWList-r6 ::= SEQUENCE (SIZE (1..maxFreq)) OF W + +ObservedTimeDifferenceToGSM ::= INTEGER (0..4095) + +OTDOA-SearchWindowSize ::= ENUMERATED { + c20, c40, c80, c160, c320, + c640, c1280, moreThan1280 } + +-- SPARE: Pathloss, Max = 158 +-- Values above Max are spare +Pathloss ::= INTEGER (46..173) + +PenaltyTime-RSCP ::= CHOICE { + notUsed NULL, + pt10 TemporaryOffset1, + pt20 TemporaryOffset1, + pt30 TemporaryOffset1, + pt40 TemporaryOffset1, + pt50 TemporaryOffset1, + pt60 TemporaryOffset1 +} + +PenaltyTime-ECN0 ::= CHOICE { + notUsed NULL, + pt10 TemporaryOffsetList, + pt20 TemporaryOffsetList, + pt30 TemporaryOffsetList, + pt40 TemporaryOffsetList, + pt50 TemporaryOffsetList, + pt60 TemporaryOffsetList +} + +PendingTimeAfterTrigger ::= ENUMERATED { + ptat0-25, ptat0-5, ptat1, + ptat2, ptat4, ptat8, ptat16 } + +PeriodicalOrEventTrigger ::= ENUMERATED { + periodical, + eventTrigger } + +PeriodicalReportingCriteria ::= SEQUENCE { + reportingAmount ReportingAmount DEFAULT ra-Infinity, + reportingInterval ReportingIntervalLong +} + +PeriodicReportingInfo-1b ::= SEQUENCE { + reportingAmount ReportingAmount, + reportingInterval ReportingInterval +} + +PeriodicalWithReportingCellStatus ::= SEQUENCE { + periodicalReportingCriteria PeriodicalReportingCriteria, + reportingCellStatus ReportingCellStatus OPTIONAL +} + +PeriodicalWithReportingCellStatus-r10 ::= SEQUENCE { + periodicalReportingCriteria PeriodicalReportingCriteria, + reportingCellStatus ReportingCellStatus-r10 OPTIONAL +} + +PeriodicalWithReportingCellStatusOnSecULFreq ::= SEQUENCE { + frequencyInfo FrequencyInfo, + periodicalWithReportingCellStatus PeriodicalWithReportingCellStatus-r10 +} + +PLMNIdentitiesOfNeighbourCells ::= SEQUENCE { + plmnsOfIntraFreqCellsList PLMNsOfIntraFreqCellsList OPTIONAL, + plmnsOfInterFreqCellsList PLMNsOfInterFreqCellsList OPTIONAL, + plmnsOfInterRATCellsList PLMNsOfInterRATCellsList OPTIONAL +} + +PLMNIdentitiesOfNeighbourCells-v860ext ::= SEQUENCE { + multipleplmnsOfIntraFreqCellsList MultiplePLMNsOfIntraFreqCellsList OPTIONAL, + multipleplmnsOfInterFreqCellsList MultiplePLMNsOfInterFreqCellsList OPTIONAL +} + +PlmnList ::= SEQUENCE (SIZE (1..maxNumMDTPLMN)) OF PLMN-Identity + +PLMNsOfInterFreqCellsList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + SEQUENCE { + plmn-Identity PLMN-Identity OPTIONAL +} + +MultiplePLMNsOfInterFreqCellsList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + SEQUENCE { + multiplePLMN-list SEQUENCE (SIZE (1..6)) OF + PLMN-IdentityWithOptionalMCC-r6 OPTIONAL +} + +PLMNsOfIntraFreqCellsList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + SEQUENCE { + plmn-Identity PLMN-Identity OPTIONAL +} + +MultiplePLMNsOfIntraFreqCellsList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + SEQUENCE { + multiplePLMN-list SEQUENCE (SIZE (1..6)) OF + PLMN-IdentityWithOptionalMCC-r6 OPTIONAL +} + +PLMNsOfInterRATCellsList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + SEQUENCE { + plmn-Identity PLMN-Identity OPTIONAL +} + +PositionEstimate ::= CHOICE { + ellipsoidPoint EllipsoidPoint, + ellipsoidPointUncertCircle EllipsoidPointUncertCircle, + ellipsoidPointUncertEllipse EllipsoidPointUncertEllipse, + ellipsoidPointAltitude EllipsoidPointAltitude, + ellipsoidPointAltitudeEllipse EllipsoidPointAltitudeEllipsoide +} + +PositioningMethod ::= ENUMERATED { + otdoa, + gps, + otdoaOrGPS, cellID } + +-- Actual value PRC = IE value * 0.32 +PRC ::= INTEGER (-2047..2047) + +-- SPARE: PrimaryCCPCH-RSCP, Max = 91 +-- Values above Max are spare +PrimaryCCPCH-RSCP ::= INTEGER (0..127) + +Q-HCS ::= INTEGER (0..99) + +Q-OffsetS-N ::= INTEGER (-50..50) + +Q-QualMin ::= INTEGER (-24..0) + +Q-QualMin-Offset ::= INTEGER (1..16) + +-- Actual value Q-RxlevMin = (IE value * 2) + 1 +Q-RxlevMin ::= INTEGER (-58..-13) + +-- Actual value Q-RxlevMin-Offset = (IE value * 2) +Q-RxlevMin-Offset ::= INTEGER (1..8) + +QualityEventResults ::= SEQUENCE (SIZE (1..maxTrCH)) OF + TransportChannelIdentity + +QualityMeasuredResults ::= SEQUENCE { + blerMeasurementResultsList BLER-MeasurementResultsList OPTIONAL, + modeSpecificInfo CHOICE { + fdd NULL, + tdd SEQUENCE { + sir-MeasurementResults SIR-MeasurementList OPTIONAL + } + } +} + +QualityMeasurement ::= SEQUENCE { + qualityReportingQuantity QualityReportingQuantity OPTIONAL, + reportCriteria QualityReportCriteria +} + +QualityReportCriteria ::= CHOICE { + qualityReportingCriteria QualityReportingCriteria, + periodicalReportingCriteria PeriodicalReportingCriteria, + noReporting NULL +} + +QualityReportingCriteria ::= SEQUENCE (SIZE (1..maxTrCH)) OF + QualityReportingCriteriaSingle + +QualityReportingCriteriaSingle ::= SEQUENCE { + transportChannelIdentity TransportChannelIdentity, + totalCRC INTEGER (1..512), + badCRC INTEGER (1..512), + pendingAfterTrigger INTEGER (1..512) +} + +QualityReportingQuantity ::= SEQUENCE { + dl-TransChBLER BOOLEAN, + bler-dl-TransChIdList BLER-TransChIdList OPTIONAL, + modeSpecificInfo CHOICE { + fdd NULL, + tdd SEQUENCE { + sir-TFCS-List SIR-TFCS-List OPTIONAL + } + } +} + +RAT-Type ::= ENUMERATED { + gsm, is2000 } + +ReferenceCellPosition ::= CHOICE { + ellipsoidPoint EllipsoidPoint, + ellipsoidPointWithAltitude EllipsoidPointAltitude +} + +-- ReferenceLocation, as defined in 23.032 +ReferenceLocation ::= SEQUENCE { + ellipsoidPointAltitudeEllipsoide EllipsoidPointAltitudeEllipsoide +} + +ReferenceLocationGANSS ::= SEQUENCE { + ellipsoidPointAltitudeEllipsoide EllipsoidPointAltitudeEllipsoide +} + +ReferenceTimeDifferenceToCell ::= CHOICE { + -- Actual value accuracy40 = IE value * 40 + accuracy40 INTEGER (0..960), + -- Actual value accuracy256 = IE value * 256 + accuracy256 INTEGER (0..150), + -- Actual value accuracy2560 = IE value * 2560 + accuracy2560 INTEGER (0..15) +} + +RemovedInterFreqCellList ::= CHOICE { + removeAllInterFreqCells NULL, + removeSomeInterFreqCells SEQUENCE (SIZE (1..maxCellMeas)) OF + InterFreqCellID, + removeNoInterFreqCells NULL +} + +RemovedInterRATCellList ::= CHOICE { + removeAllInterRATCells NULL, + removeSomeInterRATCells SEQUENCE (SIZE (1..maxCellMeas)) OF + InterRATCellID, + removeNoInterRATCells NULL +} + +RemovedIntraFreqCellList ::= CHOICE { + removeAllIntraFreqCells NULL, + removeSomeIntraFreqCells SEQUENCE (SIZE (1..maxCellMeas)) OF + IntraFreqCellID, + removeNoIntraFreqCells NULL +} + +RemovedIntraFreqCellListOnSecULFreq ::= CHOICE { + removeAllIntraFreqCells NULL, + removeSomeIntraFreqCells SEQUENCE (SIZE (1..maxCellMeasOnSecULFreq)) OF + IntraFreqCellIDOnSecULFreq, + removeNoIntraFreqCells NULL +} + +ReplacementActivationThreshold ::= ENUMERATED { + notApplicable, t1, t2, + t3, t4, t5, t6, t7 } + +ReportDeactivationThreshold ::= ENUMERATED { + notApplicable, t1, t2, + t3, t4, t5, t6, t7 } + +ReportingAmount ::= ENUMERATED { + ra1, ra2, ra4, ra8, ra16, ra32, + ra64, ra-Infinity } + +ReportingCellStatus ::= CHOICE{ + withinActiveSet MaxNumberOfReportingCellsType1, + withinMonitoredSetUsedFreq MaxNumberOfReportingCellsType1, + withinActiveAndOrMonitoredUsedFreq MaxNumberOfReportingCellsType1, + withinDetectedSetUsedFreq MaxNumberOfReportingCellsType1, + withinMonitoredAndOrDetectedUsedFreq + MaxNumberOfReportingCellsType1, + allActiveplusMonitoredSet MaxNumberOfReportingCellsType3, + allActivePlusDetectedSet MaxNumberOfReportingCellsType3, + allActivePlusMonitoredAndOrDetectedSet + MaxNumberOfReportingCellsType3, + withinVirtualActSet MaxNumberOfReportingCellsType1, + withinMonitoredSetNonUsedFreq MaxNumberOfReportingCellsType1, + withinMonitoredAndOrVirtualActiveSetNonUsedFreq + MaxNumberOfReportingCellsType1, + allVirtualActSetplusMonitoredSetNonUsedFreq + MaxNumberOfReportingCellsType3, + withinActSetOrVirtualActSet-InterRATcells + MaxNumberOfReportingCellsType2, + withinActSetAndOrMonitoredUsedFreqOrVirtualActSetAndOrMonitoredNonUsedFreq + MaxNumberOfReportingCellsType2 +} + +ReportingCellStatus-r10 ::= CHOICE{ + withinActiveSet MaxNumberOfReportingCellsType1, + withinMonitoredSetUsedFreq MaxNumberOfReportingCellsType1, + withinActiveAndOrMonitoredUsedFreq MaxNumberOfReportingCellsType1, + withinDetectedSetUsedFreq MaxNumberOfReportingCellsType1, + withinMonitoredAndOrDetectedUsedFreq + MaxNumberOfReportingCellsType1, + allActiveplusMonitoredSet MaxNumberOfReportingCellsType3, + allActivePlusDetectedSet MaxNumberOfReportingCellsType3, + allActivePlusMonitoredAndOrDetectedSet + MaxNumberOfReportingCellsType3, + withinVirtualActSet MaxNumberOfReportingCellsType1, + withinMonitoredSetNonUsedFreq MaxNumberOfReportingCellsType1, + withinMonitoredAndOrVirtualActiveSetNonUsedFreq + MaxNumberOfReportingCellsType1, + allVirtualActSetplusMonitoredSetNonUsedFreq + MaxNumberOfReportingCellsType3, + withinActSetOrVirtualActSet-InterRATcells + MaxNumberOfReportingCellsType2, + withinActSetAndOrMonitoredUsedFreqOrVirtualActSetAndOrMonitoredNonUsedFreq + MaxNumberOfReportingCellsType2, + allVirtualActSetplusMonitoredSetplusDetectedSetNonUsedFreq + MaxNumberOfReportingCellsType3 +} + +ReportingCellStatusOpt ::= SEQUENCE { + reportingCellStatus ReportingCellStatus OPTIONAL +} + +ReportingCellStatusOpt-r10 ::= SEQUENCE { + reportingCellStatus ReportingCellStatus-r10 OPTIONAL +} + +ReportingInfoForCellDCH ::= SEQUENCE { + intraFreqReportingQuantity IntraFreqReportingQuantity, + measurementReportingMode MeasurementReportingMode, + reportCriteria CellDCH-ReportCriteria +} + +ReportingInfoForCellDCH-LCR-r4 ::= SEQUENCE { + intraFreqReportingQuantity IntraFreqReportingQuantity, + measurementReportingMode MeasurementReportingMode, + reportCriteria CellDCH-ReportCriteria-LCR-r4 +} + +ReportingInterval ::= ENUMERATED { + noPeriodicalreporting, ri0-25, + ri0-5, ri1, ri2, ri4, ri8, ri16 } + +ReportingIntervalLong ::= ENUMERATED { + ril0, ril0-25, ril0-5, ril1, + ril2, ril3, ril4, ril6, ril8, + ril12, ril16, ril20, ril24, + ril28, ril32, ril64 } + -- When the value "ril0" is used, the UE behaviour is not + -- defined. + +-- Actual value ReportingRange = IE value * 0.5 +ReportingRange ::= INTEGER (0..29) + +ReqDataBitAssistance ::= SEQUENCE { + ganssSignalID DGANSS-Sig-Id-Req, + ganssDataBitInterval INTEGER(0..15), + ganssSatelliteInfo SEQUENCE (SIZE (1..maxGANSSSat)) OF INTEGER(0..63) OPTIONAL +} + +RL-AdditionInfoList ::= SEQUENCE (SIZE (1..maxRL)) OF + PrimaryCPICH-Info + +RL-InformationLists ::= SEQUENCE { + rl-AdditionInfoList RL-AdditionInfoList OPTIONAL, + rL-RemovalInformationList RL-RemovalInformationList OPTIONAL +} + +RLC-BuffersPayload ::= ENUMERATED { + pl0, pl4, pl8, pl16, pl32, + pl64, pl128, pl256, pl512, pl1024, + pl2k, pl4k, pl8k, pl16k, pl32k, + pl64k, pl128k, pl256k, pl512k, pl1024k, + spare12, spare11, spare10, spare9, spare8, + spare7, spare6, spare5, spare4, spare3, + spare2, spare1 } + +-- Actual value RRC = IE value * 0.032 +RRC ::= INTEGER (-127..127) + +RSCPforANR ::= SEQUENCE { + rSCP INTEGER (-120..-25) OPTIONAL +} + +SatData ::= SEQUENCE{ + satID SatID, + iode IODE +} + +SatDataList ::= SEQUENCE (SIZE (0..maxSat)) OF + SatData + +SatellitesListRelatedData ::= SEQUENCE { + satId INTEGER (0..63), + iod INTEGER (0..1023) +} + +SatellitesListRelatedDataList ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF + SatellitesListRelatedData + +SatelliteStatus ::= ENUMERATED { + ns-NN-U, + es-SN, + es-NN-U, + rev2, + rev } + +Satellite-clock-model ::= SEQUENCE { + t-oc BIT STRING (SIZE (14)), + af2 BIT STRING (SIZE (12)), + af1 BIT STRING (SIZE (18)), + af0 BIT STRING (SIZE (28)), + tgd BIT STRING (SIZE (10)) OPTIONAL, + model-id INTEGER (0..1) OPTIONAL +} + +Satellite-clock-modelList ::= SEQUENCE (SIZE (1..maxSatClockModels)) OF Satellite-clock-model + +-- Identifies the satellite and is equal to (SV ID No - 1) where SV ID No is defined in [12]. +SatID ::= INTEGER (0..63) + +SBASclockModel ::= SEQUENCE { + sbasTo BIT STRING (SIZE (13)), + sbasAgfo BIT STRING (SIZE (12)), + sbasAgf1 BIT STRING (SIZE (8)) +} + +S-DPCCH-Information ::= SEQUENCE { + s-DPCCH-DPCCH-PowerOffset S-DPCCH-DPCCH-PowerOffset +} + +S-DPCCH-DPCCH-PowerOffset ::= INTEGER (0..6) + +SFN-Offset-Validity ::= ENUMERATED { false } + +SFN-SFN-Drift ::= ENUMERATED { + sfnsfndrift0, sfnsfndrift1, sfnsfndrift2, + sfnsfndrift3, sfnsfndrift4, sfnsfndrift5, + sfnsfndrift8, sfnsfndrift10, sfnsfndrift15, + sfnsfndrift25, sfnsfndrift35, sfnsfndrift50, + sfnsfndrift65, sfnsfndrift80, sfnsfndrift100, + sfnsfndrift-1, sfnsfndrift-2, sfnsfndrift-3, + sfnsfndrift-4, sfnsfndrift-5, sfnsfndrift-8, + sfnsfndrift-10, sfnsfndrift-15, sfnsfndrift-25, + sfnsfndrift-35, sfnsfndrift-50, sfnsfndrift-65, + sfnsfndrift-80, sfnsfndrift-100} + +SFN-SFN-ObsTimeDifference ::= CHOICE { + type1 SFN-SFN-ObsTimeDifference1, + type2 SFN-SFN-ObsTimeDifference2 +} + +-- SPARE: SFN-SFN-ObsTimeDifference1, Max = 9830399 +-- For 1.28Mcps TDD, Max value of SFN-SFN-ObsTimeDifference1 is 3276799. +-- Values above Max are spare +SFN-SFN-ObsTimeDifference1 ::= INTEGER (0..16777215) + +-- SPARE: SFN-SFN-ObsTimeDifference2, Max = 40961 +-- For 1.28Mcps TDD, Max value of SFN-SFN-ObsTimeDifference2 is 27649. +-- Values above Max are spare +SFN-SFN-ObsTimeDifference2 ::= INTEGER (0..65535) + +SFN-SFN-OTD-Type ::= ENUMERATED { + noReport, + type1, + type2 } + +SFN-SFN-RelTimeDifference1 ::= SEQUENCE { + sfn-Offset INTEGER (0 .. 4095), + sfn-sfn-Reltimedifference INTEGER (0.. 38399) +} + +SFN-TOW-Uncertainty ::= ENUMERATED { + lessThan10, + moreThan10 } + + +SIR ::= INTEGER (0..63) + + +SIR-MeasurementList ::= SEQUENCE (SIZE (1..maxCCTrCH)) OF + SIR-MeasurementResults + + +SIR-MeasurementResults ::= SEQUENCE { + tfcs-ID TFCS-IdentityPlain, + sir-TimeslotList SIR-TimeslotList +} + +SIR-TFCS ::= TFCS-IdentityPlain + + +SIR-TFCS-List ::= SEQUENCE (SIZE (1..maxCCTrCH)) OF + SIR-TFCS + +SIR-TimeslotList ::= SEQUENCE (SIZE (1..maxTS)) OF + SIR + +-- SubFrame1Reserved, reserved bits in subframe 1 of the GPS navigation message +SubFrame1Reserved ::= SEQUENCE { + reserved1 BIT STRING (SIZE (23)), + reserved2 BIT STRING (SIZE (24)), + reserved3 BIT STRING (SIZE (24)), + reserved4 BIT STRING (SIZE (16)) +} + +T-ADVinfo ::= SEQUENCE { + t-ADV INTEGER(0..2047), + sfn INTEGER(0..4095) +} + +T-ADVinfo-ext ::= SEQUENCE { + t-ADV INTEGER (0..8191), + sfn INTEGER (0..4095) +} + +T-CRMax ::= CHOICE { + notUsed NULL, + t30 N-CR-T-CRMaxHyst, + t60 N-CR-T-CRMaxHyst, + t120 N-CR-T-CRMaxHyst, + t180 N-CR-T-CRMaxHyst, + t240 N-CR-T-CRMaxHyst +} + +T-CRMaxHyst ::= ENUMERATED { + notUsed, t10, t20, t30, + t40, t50, t60, t70 } + +TCE-Id ::= SEQUENCE { + tce-Id OCTET STRING (SIZE (1)) +} + +TemporaryOffset1 ::= ENUMERATED { + to3, to6, to9, to12, to15, + to18, to21, infinite } + +TemporaryOffset2 ::= ENUMERATED { + to2, to3, to4, to6, to8, + to10, to12, infinite } + +TemporaryOffsetList ::= SEQUENCE { + temporaryOffset1 TemporaryOffset1, + temporaryOffset2 TemporaryOffset2 +} + +Threshold ::= INTEGER (-115..0) + +Threshold-r6 ::= INTEGER (-120..0) + +-- The order of the list corresponds to the order of frequency defined in Inter-FreqEventCriteria +ThreholdNonUsedFrequency-deltaList ::= SEQUENCE (SIZE (1..maxFreq)) OF + DeltaRSCPPerCell + +ThresholdPositionChange ::= ENUMERATED { + pc10, pc20, pc30, pc40, pc50, + pc100, pc200, pc300, pc500, + pc1000, pc2000, pc5000, pc10000, + pc20000, pc50000, pc100000 } + +ThresholdSFN-GANSS-TOW ::= ENUMERATED { + us1, us2, us3, us5, us10, + us20, us50, us100 } + +ThresholdSFN-GPS-TOW ::= ENUMERATED { + ms1, ms2, ms3, ms5, ms10, + ms20, ms50, ms100 } + +ThresholdSFN-GPS-TOW-us ::= ENUMERATED { + us1, us2, us3, us5, us10, + us20, us50, us100 } + +ThresholdSFN-SFN-Change ::= ENUMERATED { + c0-25, c0-5, c1, c2, c3, c4, c5, + c10, c20, c50, c100, c200, c500, + c1000, c2000, c5000 } + +ThresholdUsedFrequency ::= INTEGER (-115..165) + +ThresholdUsedFrequency-r6 ::= INTEGER (-120..165) + +-- Actual value TimeInterval = IE value * 20. +TimeInterval ::= INTEGER (1..13) + + +TimeslotInfo ::= SEQUENCE { + timeslotNumber TimeslotNumber, + burstType BurstType +} + +TimeslotInfo-LCR-r4 ::= SEQUENCE { + timeslotNumber TimeslotNumber-LCR-r4 +} + +TimeslotInfoList ::= SEQUENCE (SIZE (1..maxTS)) OF + TimeslotInfo + +TimeslotInfoList-LCR-r4 ::= SEQUENCE (SIZE (1..maxTS-LCR)) OF + TimeslotInfo-LCR-r4 + +TimeslotInfoList-r4 ::= CHOICE { + -- the choice for 7.68 Mcps TDD is the same as for 3.84 Mcps TDD -- + tdd384 SEQUENCE (SIZE (1..maxTS)) OF + TimeslotInfo, + tdd128 SEQUENCE (SIZE (1..maxTS-LCR)) OF + TimeslotInfo-LCR-r4 +} + +-- SPARE: TimeslotISCP, Max = 91 +-- Values above Max are spare +TimeslotISCP ::= INTEGER (0..127) + + +-- TimeslotISCP-List shall not include more than 6 elements in 1.28Mcps TDD mode. +TimeslotISCP-List ::= SEQUENCE (SIZE (1..maxTS)) OF + TimeslotISCP + +TimeslotListWithISCP ::= SEQUENCE (SIZE (1..maxTS)) OF + TimeslotWithISCP + +TimeslotWithISCP ::= SEQUENCE { + timeslot TimeslotNumber, + timeslotISCP TimeslotISCP +} + +TimeToTrigger ::= ENUMERATED { + ttt0, ttt10, ttt20, ttt40, ttt60, + ttt80, ttt100, ttt120, ttt160, + ttt200, ttt240, tt320, ttt640, + ttt1280, ttt2560, ttt5000 } + +TraceReference ::= SEQUENCE { + plmn-Identity PLMN-Identity, + traceId OCTET STRING (SIZE (3)) +} + +TraceRecordingSession ::= SEQUENCE { + traceRecordingSession OCTET STRING (SIZE (2)) +} + +TrafficVolumeEventParam ::= SEQUENCE { + eventID TrafficVolumeEventType, + reportingThreshold TrafficVolumeThreshold, + timeToTrigger TimeToTrigger OPTIONAL, + pendingTimeAfterTrigger PendingTimeAfterTrigger OPTIONAL, + tx-InterruptionAfterTrigger TX-InterruptionAfterTrigger OPTIONAL +} + +TrafficVolumeEventResults ::= SEQUENCE { + ul-transportChannelCausingEvent UL-TrCH-Identity, + trafficVolumeEventIdentity TrafficVolumeEventType +} + +TrafficVolumeEventType ::= ENUMERATED { + e4a, + e4b } + +TrafficVolumeMeasQuantity ::= CHOICE { + rlc-BufferPayload NULL, + averageRLC-BufferPayload TimeInterval, + varianceOfRLC-BufferPayload TimeInterval +} + +TrafficVolumeMeasSysInfo ::= SEQUENCE { + trafficVolumeMeasurementID MeasurementIdentity DEFAULT 4, + trafficVolumeMeasurementObjectList TrafficVolumeMeasurementObjectList OPTIONAL, + trafficVolumeMeasQuantity TrafficVolumeMeasQuantity OPTIONAL, + trafficVolumeReportingQuantity TrafficVolumeReportingQuantity OPTIONAL, + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy TrafficVolumeReportingCriteria OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + measurementReportingMode MeasurementReportingMode, + reportCriteriaSysInf TrafficVolumeReportCriteriaSysInfo + +} + +TrafficVolumeMeasuredResults ::= SEQUENCE { + rb-Identity RB-Identity, + rlc-BuffersPayload RLC-BuffersPayload OPTIONAL, + averageRLC-BufferPayload AverageRLC-BufferPayload OPTIONAL, + varianceOfRLC-BufferPayload VarianceOfRLC-BufferPayload OPTIONAL +} + +TrafficVolumeMeasuredResultsList ::= SEQUENCE (SIZE (1..maxRB)) OF + TrafficVolumeMeasuredResults + +TrafficVolumeMeasurement ::= SEQUENCE { + trafficVolumeMeasurementObjectList TrafficVolumeMeasurementObjectList OPTIONAL, + trafficVolumeMeasQuantity TrafficVolumeMeasQuantity OPTIONAL, + trafficVolumeReportingQuantity TrafficVolumeReportingQuantity OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + reportCriteria TrafficVolumeReportCriteria +} + +TrafficVolumeMeasurementObjectList ::= SEQUENCE (SIZE (1..maxTrCH)) OF + UL-TrCH-Identity + +TrafficVolumeReportCriteria ::= CHOICE { + trafficVolumeReportingCriteria TrafficVolumeReportingCriteria, + periodicalReportingCriteria PeriodicalReportingCriteria, + noReporting NULL +} + +TrafficVolumeReportCriteriaSysInfo ::= CHOICE { + trafficVolumeReportingCriteria TrafficVolumeReportingCriteria, + periodicalReportingCriteria PeriodicalReportingCriteria +} + +TrafficVolumeReportingCriteria ::= SEQUENCE { + -- NOTE: transChCriteriaList should be mandatory in later versions of this message + transChCriteriaList TransChCriteriaList OPTIONAL +} + +TrafficVolumeReportingQuantity ::= SEQUENCE { + rlc-RB-BufferPayload BOOLEAN, + rlc-RB-BufferPayloadAverage BOOLEAN, + rlc-RB-BufferPayloadVariance BOOLEAN +} + +TrafficVolumeThreshold ::= ENUMERATED { + th8, th16, th32, th64, th128, + th256, th512, th1024, th2k, th3k, + th4k, th6k, th8k, th12k, th16k, + th24k, th32k, th48k, th64k, th96k, + th128k, th192k, th256k, th384k, + th512k, th768k } + +TransChCriteria ::= SEQUENCE { + ul-transportChannelID UL-TrCH-Identity OPTIONAL, + eventSpecificParameters SEQUENCE (SIZE (1..maxMeasParEvent)) OF + TrafficVolumeEventParam OPTIONAL +} + +TransChCriteriaList ::= SEQUENCE (SIZE (1..maxTrCH)) OF + TransChCriteria + +TransferMode ::= ENUMERATED { + acknowledgedModeRLC, + unacknowledgedModeRLC } + +TransmittedPowerThreshold ::= INTEGER (-50..33) + +TriggeringCondition1 ::= ENUMERATED { + activeSetCellsOnly, + monitoredSetCellsOnly, + activeSetAndMonitoredSetCells } + +TriggeringCondition2 ::= ENUMERATED { + activeSetCellsOnly, + monitoredSetCellsOnly, + activeSetAndMonitoredSetCells, + detectedSetCellsOnly, + detectedSetAndMonitoredSetCells } + +Tutran-Ganss-DriftRate ::= ENUMERATED { + ugdr0, ugdr1, ugdr2, ugdr5, ugdr10, ugdr15 , ugdr25, + ugdr50, ugdr-1, ugdr-2, ugdr-5, ugdr-10, ugdr-15, + ugdr-25, ugdr-50, spare } + +TX-InterruptionAfterTrigger ::= ENUMERATED { + txiat0-25, txiat0-5, txiat1, + txiat2, txiat4, txiat8, txiat16 } + +UDRE ::= ENUMERATED { + lessThan1, + between1-and-4, + between4-and-8, + over8 } + +UDREGrowthRate ::= ENUMERATED { + growth-1-5, + growth-2, + growth-4, + growth-6, + growth-8, + growth-10, + growth-12, + growth-16 } + +UDREValidityTime ::= ENUMERATED { + val-20sec, + val-40sec, + val-80sec, + val-160sec, + val-320sec, + val-640sec, + val-1280sec, + val-2560sec } + +UE-6AB-Event ::= SEQUENCE { + timeToTrigger TimeToTrigger, + transmittedPowerThreshold TransmittedPowerThreshold +} + +UE-6FG-Event ::= SEQUENCE { + timeToTrigger TimeToTrigger, + -- in 1.28 Mcps TDD ue-RX-TX-TimeDifferenceThreshold corresponds to TADV Threshold + ue-RX-TX-TimeDifferenceThreshold UE-RX-TX-TimeDifferenceThreshold +} + +-- dummy and dummy2 are not used in this version of the specification, they should +-- not be sent and if received the UE behaviour is not specified. +UE-AutonomousUpdateMode ::= CHOICE { + dummy NULL, + onWithNoReporting NULL, + dummy2 RL-InformationLists +} + +UE-InternalEventParam ::= CHOICE { + event6a UE-6AB-Event, + event6b UE-6AB-Event, + event6c TimeToTrigger, + event6d TimeToTrigger, + event6e TimeToTrigger, + event6f UE-6FG-Event, + event6g UE-6FG-Event +} + +UE-InternalEventParamList ::= SEQUENCE (SIZE (1..maxMeasEvent)) OF + UE-InternalEventParam + +UE-InternalEventResults ::= CHOICE { + event6a NULL, + event6b NULL, + event6c NULL, + event6d NULL, + event6e NULL, + event6f PrimaryCPICH-Info, + event6g PrimaryCPICH-Info, + spare NULL +} + +UE-InternalMeasQuantity ::= SEQUENCE { + measurementQuantity UE-MeasurementQuantity, + filterCoefficient FilterCoefficient DEFAULT fc0 +} + +UE-InternalMeasuredResults ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ue-TransmittedPowerFDD UE-TransmittedPower OPTIONAL, + ue-RX-TX-ReportEntryList UE-RX-TX-ReportEntryList OPTIONAL + }, + tdd SEQUENCE { + ue-TransmittedPowerTDD-List UE-TransmittedPowerTDD-List OPTIONAL, + appliedTA UL-TimingAdvance OPTIONAL + } + } +} + +UE-InternalMeasuredResults-LCR-r4 ::= SEQUENCE { + ue-TransmittedPowerTDD-List UE-TransmittedPowerTDD-List OPTIONAL, + -- If TA value is not greater than 2047, then use this IE to report. + t-ADVinfo T-ADVinfo OPTIONAL +} + +UE-InternalMeasuredResults-v770ext ::= SEQUENCE { + modeSpecificInfo CHOICE { + tdd384-768 SEQUENCE { + appliedTA EXT-UL-TimingAdvance OPTIONAL + }, + tdd128 SEQUENCE { + -- If TA value is greater than 2047, then use this IE to report + t-ADVinfo T-ADVinfo-ext OPTIONAL + } + } +} + +UE-InternalMeasurement ::= SEQUENCE { + ue-InternalMeasQuantity UE-InternalMeasQuantity OPTIONAL, + ue-InternalReportingQuantity UE-InternalReportingQuantity OPTIONAL, + reportCriteria UE-InternalReportCriteria +} + +UE-InternalMeasurement-r4 ::= SEQUENCE { + ue-InternalMeasQuantity UE-InternalMeasQuantity OPTIONAL, + ue-InternalReportingQuantity UE-InternalReportingQuantity-r4 OPTIONAL, + reportCriteria UE-InternalReportCriteria +} + +UE-InternalMeasurementSysInfo ::= SEQUENCE { + ue-InternalMeasurementID MeasurementIdentity DEFAULT 5, + ue-InternalMeasQuantity UE-InternalMeasQuantity +} + +UE-InternalReportCriteria ::= CHOICE { + ue-InternalReportingCriteria UE-InternalReportingCriteria, + periodicalReportingCriteria PeriodicalReportingCriteria, + noReporting NULL +} + +UE-InternalReportingCriteria ::= SEQUENCE { + ue-InternalEventParamList UE-InternalEventParamList OPTIONAL +} + +UE-InternalReportingQuantity ::= SEQUENCE { + ue-TransmittedPower BOOLEAN, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ue-RX-TX-TimeDifference BOOLEAN + }, + tdd SEQUENCE { + appliedTA BOOLEAN + } + } +} + +UE-InternalReportingQuantity-r4 ::= SEQUENCE { + ue-TransmittedPower BOOLEAN, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ue-RX-TX-TimeDifference BOOLEAN + }, + tdd SEQUENCE { + tddOption CHOICE { + -- appliedTA applies to both 3.84 Mcps TDD and to 7.68 Mcps TDD. + -- Therefore, no additional choice of TDD mode is necessary + tdd384 SEQUENCE { + appliedTA BOOLEAN + }, + tdd128 SEQUENCE { + t-ADVinfo BOOLEAN + } + } + } + } +} + +-- TABULAR: UE-MeasurementQuantity, for 3.84 Mcps TDD only the first two values +-- ue-TransmittedPower and utra-Carrier-RSSI are used. +-- For 1.28 Mcps TDD ue-RX-TX-TimeDifference corresponds to T-ADV in the tabular +UE-MeasurementQuantity ::= ENUMERATED { + ue-TransmittedPower, + utra-Carrier-RSSI, + ue-RX-TX-TimeDifference } + +UE-RX-TX-ReportEntry ::= SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info, + ue-RX-TX-TimeDifferenceType1 UE-RX-TX-TimeDifferenceType1 +} + +UE-RX-TX-ReportEntryList ::= SEQUENCE (SIZE (1..maxRL)) OF + UE-RX-TX-ReportEntry + +-- SPARE: UE-RX-TX-TimeDifferenceType1, Max = 1280 +-- Values above Max are spare +UE-RX-TX-TimeDifferenceType1 ::= INTEGER (768..1791) + + +UE-RX-TX-TimeDifferenceType2 ::= INTEGER (0..8191) + +UE-RX-TX-TimeDifferenceType2Info ::= SEQUENCE { + ue-RX-TX-TimeDifferenceType2 UE-RX-TX-TimeDifferenceType2, + neighbourQuality NeighbourQuality +} + +-- In 1.28 Mcps TDD, actual value for +-- T-ADV Threshold = (UE-RX-TX-TimeDifferenceThreshold - 768) * 0.125 +UE-RX-TX-TimeDifferenceThreshold ::= INTEGER (768..1280) + +UE-TransmittedPower ::= INTEGER (0..104) + +UE-TransmittedPowerTDD-List ::= SEQUENCE (SIZE (1..maxTS)) OF + UE-TransmittedPower + +UL-TrCH-Identity ::= CHOICE{ + dch TransportChannelIdentity, + -- Note: the reference to CPCH in the element name below is incorrect. The name is not changed + -- to keep it aligned with R99. + rachorcpch NULL, + usch TransportChannelIdentity +} + +UE-Positioning-Accuracy ::= BIT STRING (SIZE (7)) + + +UE-Positioning-CipherParameters ::= SEQUENCE { + cipheringKeyFlag BIT STRING (SIZE (1)), + cipheringSerialNumber INTEGER (0..65535) +} + +UE-Positioning-DGANSSCorrections ::= SEQUENCE { + dganssreferencetime INTEGER (0..119), -- scale factor 30s + dganssInfoList DGANSSInfoList +} + +UE-Positioning-DGANSSCorrections-r9 ::= SEQUENCE { + dganssreferencetime INTEGER (0..119), -- scale factor 30s + dganssInfoList DGANSSInfoList-r9 +} + +UE-Positioning-DGANSSCorrections-v920ext ::= SEQUENCE { + dganssInfoList DGANSSInfoList-v920ext +} + +UE-Positioning-Error ::= SEQUENCE { + errorReason UE-Positioning-ErrorCause, + ue-positioning-GPS-additionalAssistanceDataRequest + UE-Positioning-GPS-AdditionalAssistanceDataRequest OPTIONAL +} + +UE-Positioning-Error-r7 ::= SEQUENCE { + errorReason UE-Positioning-ErrorCause-r7, + ue-positioning-GPS-additionalAssistanceDataRequest + UE-Positioning-GPS-AdditionalAssistanceDataRequest OPTIONAL, + ue-positioning-GANSS-additionalAssistanceDataRequest + UE-Positioning-GANSS-AdditionalAssistanceDataRequest OPTIONAL +} + +UE-Positioning-Error-v860ext ::= SEQUENCE { + ue-positioning-GANSS-additionalAssistanceDataRequest + UE-Positioning-GANSS-AdditionalAssistanceDataRequest-v860ext OPTIONAL +} + +UE-Positioning-ErrorCause ::= ENUMERATED { + notEnoughOTDOA-Cells, + notEnoughGPS-Satellites, + assistanceDataMissing, + notAccomplishedGPS-TimingOfCellFrames, + undefinedError, + requestDeniedByUser, + notProcessedAndTimeout, + referenceCellNotServingCell } + +UE-Positioning-ErrorCause-r7 ::= ENUMERATED { + notEnoughOTDOA-Cells, + notEnoughGPS-Satellites, + assistanceDataMissing, + notAccomplishedGPS-TimingOfCellFrames, + undefinedError, + requestDeniedByUser, + notProcessedAndTimeout, + referenceCellNotServingCell, + notEnoughGANSS-Satellites, + notAccomplishedGANSS-TimingOfCellFrames, + spare6, spare5, spare4, spare3, spare2, spare1 } + +UE-Positioning-EventParam ::= SEQUENCE { + reportingAmount ReportingAmount, + reportFirstFix BOOLEAN, + measurementInterval UE-Positioning-MeasurementInterval, + eventSpecificInfo UE-Positioning-EventSpecificInfo +} + +UE-Positioning-EventParam-r7 ::= SEQUENCE { + reportingAmount ReportingAmount, + reportFirstFix BOOLEAN, + measurementInterval UE-Positioning-MeasurementInterval, + eventSpecificInfo UE-Positioning-EventSpecificInfo-r7 +} + +UE-Positioning-EventParamList ::= SEQUENCE (SIZE (1..maxMeasEvent)) OF + UE-Positioning-EventParam + +UE-Positioning-EventParamList-r7 ::= SEQUENCE (SIZE (1..maxMeasEvent)) OF + UE-Positioning-EventParam-r7 + +UE-Positioning-EventSpecificInfo ::= CHOICE { + e7a ThresholdPositionChange, + e7b ThresholdSFN-SFN-Change, + e7c ThresholdSFN-GPS-TOW +} + +UE-Positioning-EventSpecificInfo-r7 ::= CHOICE { + e7a ThresholdPositionChange, + e7b ThresholdSFN-SFN-Change, + e7c ThresholdSFN-GPS-TOW-us, + e7d ThresholdSFN-GANSS-TOW +} + +-- This IE, if included, shall contain exactly one of the optional elements +UE-Positioning-GANSS-AddUTCModels ::= SEQUENCE { + utcModel1 UTCmodelSet1 OPTIONAL, + utcModel2 UTCmodelSet2 OPTIONAL, + utcModel3 UTCmodelSet3 OPTIONAL +} + +UE-Positioning-GANSS-Almanac ::= SEQUENCE{ + ganss-wk-number INTEGER (0..255), + alm-keplerianParameters ALM-keplerianParameters OPTIONAL +} + +-- This IE, if included, shall contain exactly one of the optional elements +UE-Positioning-GANSS-Almanac-v860ext ::= SEQUENCE { + alm-keplerianNAVAlmanac ALM-NAVKeplerianSet OPTIONAL, + alm-keplerianReducedAlmanac ALM-ReducedKeplerianSet OPTIONAL, + alm-keplerianMidiAlmanac ALM-MidiAlmanacSet OPTIONAL, + alm-keplerianGLONASS ALM-GlonassAlmanacSet OPTIONAL, + alm-ecefSBASAlmanac ALM-ECEFsbasAlmanacSet OPTIONAL +} + +UE-Positioning-GANSS-Almanac-r8 ::= SEQUENCE{ + ganss-wk-number INTEGER (0..255), + alm-keplerianParameters ALM-keplerianParameters OPTIONAL, + alm-keplerianNAVAlmanac ALM-NAVKeplerianSet OPTIONAL, + alm-keplerianReducedAlmanac ALM-ReducedKeplerianSet OPTIONAL, + alm-keplerianMidiAlmanac ALM-MidiAlmanacSet OPTIONAL, + alm-keplerianGLONASS ALM-GlonassAlmanacSet OPTIONAL, + alm-ecefSBASAlmanac ALM-ECEFsbasAlmanacSet OPTIONAL +} + +UE-Positioning-GANSS-Almanac-va40ext ::= SEQUENCE { + complete-Almanac-Provided BOOLEAN OPTIONAL +} + +UE-Positioning-GANSS-Almanac-r10 ::= SEQUENCE{ + ganss-wk-number INTEGER (0..255), + complete-Almanac-Provided BOOLEAN OPTIONAL, + alm-keplerianParameters ALM-keplerianParameters OPTIONAL, + alm-keplerianNAVAlmanac ALM-NAVKeplerianSet OPTIONAL, + alm-keplerianReducedAlmanac ALM-ReducedKeplerianSet OPTIONAL, + alm-keplerianMidiAlmanac ALM-MidiAlmanacSet OPTIONAL, + alm-keplerianGLONASS ALM-GlonassAlmanacSet OPTIONAL, + alm-ecefSBASAlmanac ALM-ECEFsbasAlmanacSet OPTIONAL +} + +UE-Positioning-GANSS-AdditionalAssistanceDataRequest ::= SEQUENCE { + ganssReferenceTime BOOLEAN, + ganssreferenceLocation BOOLEAN, + ganssIonosphericModel BOOLEAN, + ganssRequestedGenericAssistanceDataList GanssRequestedGenericAssistanceDataList +} + +UE-Positioning-GANSS-AdditionalAssistanceDataRequest-v860ext ::= SEQUENCE { + ganssAddIonoModelReq BIT STRING (SIZE (2)) OPTIONAL, + ganssEOPreq ENUMERATED { true } OPTIONAL, + ganssRequestedGenericAssistanceDataList + GanssRequestedGenericAssistanceDataList-v860ext +} + +UE-Positioning-GANSS-AddIonoModel ::= SEQUENCE { + dataID BIT STRING (SIZE (2)), + alpha-beta-parameters UE-Positioning-GPS-IonosphericModel +} + +UE-Positioning-GANSS-AddNavigationModels ::= SEQUENCE { + non-broadcastIndication ENUMERATED { true } OPTIONAL, + ganssSatInfoNavList Ganss-Sat-Info-AddNavList +} + +UE-Positioning-GANSS-AssistanceData ::= SEQUENCE { + ue-positioning-GANSS-ReferenceTime UE-Positioning-GANSS-ReferenceTime OPTIONAL, + uePositioningGanssReferencePosition ReferenceLocationGANSS OPTIONAL, + uePositioningGanssIonosphericModel UE-Positioning-GANSS-IonosphericModel OPTIONAL, + ganssGenericDataList GANSSGenericDataList OPTIONAL +} + +UE-Positioning-GANSS-AssistanceData-v860ext ::= SEQUENCE { + uePositioningGanssAddIonoModel UE-Positioning-GANSS-AddIonoModel OPTIONAL, + uePositioningGanssEarthOrientationPara UE-Positioning-GANSS-EarthOrientPara OPTIONAL, + ganssGenericDataList GANSSGenericDataList-v860ext OPTIONAL +} + +UE-Positioning-GANSS-AssistanceData-r8 ::= SEQUENCE { + ue-positioning-GANSS-ReferenceTime UE-Positioning-GANSS-ReferenceTime OPTIONAL, + uePositioningGanssReferencePosition ReferenceLocationGANSS OPTIONAL, + uePositioningGanssIonosphericModel UE-Positioning-GANSS-IonosphericModel OPTIONAL, + uePositioningGanssAddIonoModel UE-Positioning-GANSS-AddIonoModel OPTIONAL, + uePositioningGanssEarthOrientationPara + UE-Positioning-GANSS-EarthOrientPara OPTIONAL, + ganssGenericDataList GANSSGenericDataList-r8 OPTIONAL +} + +UE-Positioning-GANSS-AssistanceData-r9 ::= SEQUENCE { + ue-positioning-GANSS-ReferenceTime UE-Positioning-GANSS-ReferenceTime OPTIONAL, + uePositioningGanssReferencePosition ReferenceLocationGANSS OPTIONAL, + uePositioningGanssIonosphericModel UE-Positioning-GANSS-IonosphericModel OPTIONAL, + uePositioningGanssAddIonoModel UE-Positioning-GANSS-AddIonoModel OPTIONAL, + uePositioningGanssEarthOrientationPara + UE-Positioning-GANSS-EarthOrientPara OPTIONAL, + ganssGenericDataList GANSSGenericDataList-r9 OPTIONAL +} + +UE-Positioning-GANSS-AssistanceData-v920ext ::= SEQUENCE { + ganssGenericDataList GANSSGenericDataList-v920ext OPTIONAL +} + +UE-Positioning-GANSS-AssistanceData-va40ext ::= SEQUENCE { + ue-positioning-GANSS-ReferenceTime UE-Positioning-GANSS-ReferenceTime-va40ext OPTIONAL, + ganssGenericDataList GANSSGenericDataList-va40ext OPTIONAL +} + +UE-Positioning-GANSS-AssistanceData-r10 ::= SEQUENCE { + ue-positioning-GANSS-ReferenceTime UE-Positioning-GANSS-ReferenceTime-r10 OPTIONAL, + uePositioningGanssReferencePosition ReferenceLocationGANSS OPTIONAL, + uePositioningGanssIonosphericModel UE-Positioning-GANSS-IonosphericModel OPTIONAL, + uePositioningGanssAddIonoModel UE-Positioning-GANSS-AddIonoModel OPTIONAL, + uePositioningGanssEarthOrientationPara + UE-Positioning-GANSS-EarthOrientPara OPTIONAL, + ganssGenericDataList GANSSGenericDataList-r10 OPTIONAL +} + +UE-Positioning-GANSS-AuxiliaryInfo ::= CHOICE { + -- This choice may only be present if GANSS ID indicates Modernized GPS + ganssID1 AuxInfoGANSS-ID1, + -- This choice may only be present if GANSS ID indicates GLONASS + ganssID3 AuxInfoGANSS-ID3 +} + +UE-Positioning-GANSS-ClockModel ::= SEQUENCE { + satellite-clock-modelList Satellite-clock-modelList +} + +-- This IE, if included, shall contain exactly one of the optional elements +UE-Positioning-GANSS-AddClockModels ::= SEQUENCE { + navClockModel NAVclockModel OPTIONAL, + cnavClockModel CNAVclockModel OPTIONAL, + glonassClockModel GLONASSclockModel OPTIONAL, + sbasClockModel SBASclockModel OPTIONAL +} + +-- This IE, if included, shall contain exactly one of the optional elements +UE-Positioning-GANSS-AddOrbitModels ::= SEQUENCE { + navKeplerianSet NavModel-NAVKeplerianSet OPTIONAL, + cnavKeplerianSet NavModel-CNAVKeplerianSet OPTIONAL, + glonassECEF NavModel-GLONASSecef OPTIONAL, + sbasECEF NavModel-SBASecef OPTIONAL +} + +UE-Positioning-GANSS-Data ::= SEQUENCE { + ganssDataCipheringInfo UE-Positioning-CipherParameters OPTIONAL, + ganssDecipheringKeys GANSSDecipheringKeys OPTIONAL, + uePositioningGanssReferenceTime UE-Positioning-GANSS-ReferenceTime OPTIONAL, + uePositioningGanssReferencePosition ReferenceLocationGANSS OPTIONAL, + uePositioningGanssIonosphericModel UE-Positioning-GANSS-IonosphericModel OPTIONAL, + ganssGenericDataList GANSSGenericDataList OPTIONAL +} + +UE-Positioning-GANSS-Data-Bit-Assistance ::= SEQUENCE { + ganss-tod INTEGER (0..59), + dataBitAssistanceList DataBitAssistanceList +} + +UE-Positioning-GANSS-EarthOrientPara ::= SEQUENCE { + teop BIT STRING (SIZE (16)), + pmX BIT STRING (SIZE (21)), + pmXdot BIT STRING (SIZE (15)), + pmY BIT STRING (SIZE (21)), + pmYdot BIT STRING (SIZE (15)), + deltaUT1 BIT STRING (SIZE (31)), + deltaUT1dot BIT STRING (SIZE (19)) +} + +UE-Positioning-GANSS-IonosphericModel ::= SEQUENCE { + alpha-zero-ionos BIT STRING (SIZE (12)), + alpha-one-ionos BIT STRING (SIZE (12)), + alpha-two-ionos BIT STRING (SIZE (12)), + gANSS-storm-flags GANSS-Storm-Flag OPTIONAL +} + +UE-Positioning-GANSS-MeasuredResults ::= SEQUENCE { + referenceTime CHOICE { + utran-GANSSReferenceTimeResult UTRAN-GANSSReferenceTime, + ganssReferenceTimeOnly GANSSReferenceTimeOnly + }, + ganssGenericMeasurementInfo GANSSGenericMeasurementInfo +} + +UE-Positioning-GANSS-MeasuredResults-v860ext ::= SEQUENCE { + ganssGenericMeasurementInfo GANSSGenericMeasurementInfo-v860ext +} + +UE-Positioning-GANSS-NavigationModel ::= SEQUENCE { + non-broadcastIndication ENUMERATED { true } OPTIONAL, + ganssSatInfoNavList Ganss-Sat-Info-NavList +} + +UE-Positioning-GANSS-OrbitModel ::= SEQUENCE { + keplerianParameters KeplerianParameters OPTIONAL +} + +UE-Positioning-GANSS-RealTimeIntegrity ::= SEQUENCE (SIZE (1..maxGANSSSat)) OF SEQUENCE { + bad-ganss-satId INTEGER (0..63), + bad-ganss-signalId BIT STRING (SIZE (8)) OPTIONAL +} + +UE-Positioning-GANSS-ReferenceMeasurementInfo ::= SEQUENCE { + ganssSignalId GANSS-Signal-Id OPTIONAL, + satelliteInformationList GANSSSatelliteInformationList +} + +UE-Positioning-GANSS-ReferenceMeasurementInfo-va40ext ::= SEQUENCE { + satelliteInformationList GANSSSatelliteInformationList-va40ext +} + +UE-Positioning-GANSS-ReferenceMeasurementInfo-r10 ::= SEQUENCE { + ganssSignalId GANSS-Signal-Id OPTIONAL, + satelliteInformationList GANSSSatelliteInformationList-r10 +} + +UE-Positioning-GANSS-ReferenceTime ::= SEQUENCE { + ganssDay INTEGER (0..8191) OPTIONAL, + ganssTod INTEGER (0..86399), + ganssTodUncertainty INTEGER (0..127) OPTIONAL, + ganssTimeId INTEGER (0..7) OPTIONAL, + utran-ganssreferenceTime SEQUENCE { + timingOfCellFrames INTEGER (0..3999999), + mode CHOICE { + fdd SEQUENCE { + primary-CPICH-Info PrimaryCPICH-Info + }, + tdd SEQUENCE { + cellParameters CellParametersID + } + }, + referenceSfn INTEGER (0..4095) + } OPTIONAL, + tutran-ganss-driftRate Tutran-Ganss-DriftRate OPTIONAL +} + +UE-Positioning-GANSS-ReferenceTime-va40ext ::= SEQUENCE { + ganss-Day-Cycle-Number INTEGER (0..7) OPTIONAL +} + +UE-Positioning-GANSS-ReferenceTime-r10 ::= SEQUENCE { + ganssDay INTEGER (0..8191) OPTIONAL, + ganss-Day-Cycle-Number INTEGER (0..7) OPTIONAL, + ganssTod INTEGER (0..86399), + ganssTodUncertainty INTEGER (0..127) OPTIONAL, + ganssTimeId INTEGER (0..7) OPTIONAL, + utran-ganssreferenceTime SEQUENCE { + timingOfCellFrames INTEGER (0..3999999), + mode CHOICE { + fdd SEQUENCE { + primary-CPICH-Info PrimaryCPICH-Info + }, + tdd SEQUENCE { + cellParameters CellParametersID + } + }, + referenceSfn INTEGER (0..4095) + } OPTIONAL, + tutran-ganss-driftRate Tutran-Ganss-DriftRate OPTIONAL +} + +UE-Positioning-GANSS-SBAS-ID ::= ENUMERATED { + waas, + egnos, + msas, + gagan, + spare4, + spare3, + spare2, + spare1 } + +UE-Positioning-GANSS-TimeModel ::= SEQUENCE { + ganss-timeModelreferenceTime INTEGER (0..37799), -- scale factor 16s + ganss-t-a0 INTEGER (-2147483648..2147483647), -- scale factor 2-35 + -- 'ganss-t-al' scale factor 2-51 + ganss-t-a1 INTEGER (-8388608..8388607) OPTIONAL, + -- 'ganss-t-a2' scale factor 2-68 + ganss-t-a2 INTEGER (-64..63) OPTIONAL, + gnss-to-id ENUMERATED { gps, galileo, qzss, + glonass, spare4, spare3, spare2, spare1 }, + ganss-wk-number INTEGER (0..8191) OPTIONAL +} + +UE-Positioning-GANSS-TimeModel-va40ext ::= SEQUENCE { + deltaT INTEGER (-128..127) OPTIONAL +} + +UE-Positioning-GANSS-TimeModel-r10 ::= SEQUENCE { + ganss-timeModelreferenceTime INTEGER (0..37799), -- scale factor 16s + ganss-t-a0 INTEGER (-2147483648..2147483647), -- scale factor 2-35 + -- 'ganss-t-al' scale factor 2-51 + ganss-t-a1 INTEGER (-8388608..8388607) OPTIONAL, + -- 'ganss-t-a2' scale factor 2-68 + ganss-t-a2 INTEGER (-64..63) OPTIONAL, + gnss-to-id ENUMERATED { gps, galileo, qzss, + glonass, spare4, spare3, spare2, spare1 }, + ganss-wk-number INTEGER (0..8191) OPTIONAL, + deltaT INTEGER (-128..127) OPTIONAL +} + +UE-Positioning-GANSS-TimeModels ::= SEQUENCE (SIZE (1..maxGANSS-1)) OF + UE-Positioning-GANSS-TimeModel + +UE-Positioning-GANSS-TimeModels-va40ext ::= SEQUENCE (SIZE (1..maxGANSS-1)) OF + UE-Positioning-GANSS-TimeModel-va40ext + +UE-Positioning-GANSS-UTCModel ::= SEQUENCE { + a-one-utc BIT STRING (SIZE (24)), + a-zero-utc BIT STRING (SIZE (32)), + t-ot-utc BIT STRING (SIZE (8)), + delta-t-ls-utc BIT STRING (SIZE (8)), + w-n-t-utc BIT STRING (SIZE (8)), + w-n-lsf-utc BIT STRING (SIZE (8)), + dn-utc BIT STRING (SIZE (8)), + delta-t-lsf-utc BIT STRING (SIZE (8)) +} + +UE-Positioning-GPS-AcquisitionAssistance ::= SEQUENCE { + gps-ReferenceTime GPS-TOW-1msec, + utran-GPSReferenceTime UTRAN-GPSReferenceTime OPTIONAL, + satelliteInformationList AcquisitionSatInfoList +} + +UE-Positioning-GPS-AcquisitionAssistance-v770ext ::= SEQUENCE { + ue-Positioning-GPS-ReferenceTimeUncertainty + UE-Positioning-GPS-ReferenceTimeUncertainty OPTIONAL +} + +UE-Positioning-GPS-AcquisitionAssistance-r7 ::= SEQUENCE { + gps-ReferenceTime GPS-TOW-1msec, + utran-GPSReferenceTime UTRAN-GPSReferenceTime OPTIONAL, + ue-Positioning-GPS-ReferenceTimeUncertainty + UE-Positioning-GPS-ReferenceTimeUncertainty OPTIONAL, + satelliteInformationList AcquisitionSatInfoList +} + +UE-Positioning-GPS-AcquisitionAssistance-va40ext ::= SEQUENCE { + satelliteInformationList AcquisitionSatInfoList-va40ext +} + +UE-Positioning-GPS-AcquisitionAssistance-r10 ::= SEQUENCE { + gps-ReferenceTime GPS-TOW-1msec, + utran-GPSReferenceTime UTRAN-GPSReferenceTime OPTIONAL, + ue-Positioning-GPS-ReferenceTimeUncertainty + UE-Positioning-GPS-ReferenceTimeUncertainty + OPTIONAL, + satelliteInformationList AcquisitionSatInfoList-r10 +} + +UE-Positioning-GPS-AdditionalAssistanceDataRequest ::= SEQUENCE { + almanacRequest BOOLEAN, + utcModelRequest BOOLEAN, + ionosphericModelRequest BOOLEAN, + navigationModelRequest BOOLEAN, + dgpsCorrectionsRequest BOOLEAN, + referenceLocationRequest BOOLEAN, + referenceTimeRequest BOOLEAN, + aquisitionAssistanceRequest BOOLEAN, + realTimeIntegrityRequest BOOLEAN, + navModelAddDataRequest UE-Positioning-GPS-NavModelAddDataReq OPTIONAL +} + +UE-Positioning-GPS-Almanac ::= SEQUENCE { + wn-a BIT STRING (SIZE (8)), + almanacSatInfoList AlmanacSatInfoList, + sv-GlobalHealth BIT STRING (SIZE (364)) OPTIONAL +} + +UE-Positioning-GPS-Almanac-va40ext ::= SEQUENCE { + complete-Almanac-Provided BOOLEAN OPTIONAL +} + +UE-Positioning-GPS-Almanac-r10 ::= SEQUENCE { + wn-a BIT STRING (SIZE (8)), + complete-Almanac-Provided BOOLEAN OPTIONAL, + almanacSatInfoList AlmanacSatInfoList, + sv-GlobalHealth BIT STRING (SIZE (364)) OPTIONAL +} + +UE-Positioning-GPS-AssistanceData ::= SEQUENCE { + ue-positioning-GPS-ReferenceTime UE-Positioning-GPS-ReferenceTime OPTIONAL, + ue-positioning-GPS-ReferenceLocation ReferenceLocation OPTIONAL, + ue-positioning-GPS-DGPS-Corrections UE-Positioning-GPS-DGPS-Corrections OPTIONAL, + ue-positioning-GPS-NavigationModel UE-Positioning-GPS-NavigationModel OPTIONAL, + ue-positioning-GPS-IonosphericModel UE-Positioning-GPS-IonosphericModel OPTIONAL, + ue-positioning-GPS-UTC-Model UE-Positioning-GPS-UTC-Model OPTIONAL, + ue-positioning-GPS-Almanac UE-Positioning-GPS-Almanac OPTIONAL, + ue-positioning-GPS-AcquisitionAssistance + UE-Positioning-GPS-AcquisitionAssistance OPTIONAL, + ue-positioning-GPS-Real-timeIntegrity BadSatList OPTIONAL, + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy UE-Positioning-GPS-ReferenceCellInfo OPTIONAL +} + +UE-Positioning-GPS-AssistanceData-v770ext ::= SEQUENCE { + ue-positioning-GPS-ReferenceTime UE-Positioning-GPS-ReferenceTime-v770ext OPTIONAL, + ue-positioning-GPS-AcquisitionAssistance + UE-Positioning-GPS-AcquisitionAssistance-v770ext OPTIONAL +} + +UE-Positioning-GPS-AssistanceData-r7 ::= SEQUENCE { + ue-positioning-GPS-ReferenceTime UE-Positioning-GPS-ReferenceTime-r7 OPTIONAL, + ue-positioning-GPS-ReferenceLocation ReferenceLocation OPTIONAL, + ue-positioning-GPS-DGPS-Corrections UE-Positioning-GPS-DGPS-Corrections OPTIONAL, + ue-positioning-GPS-NavigationModel UE-Positioning-GPS-NavigationModel OPTIONAL, + ue-positioning-GPS-IonosphericModel UE-Positioning-GPS-IonosphericModel OPTIONAL, + ue-positioning-GPS-UTC-Model UE-Positioning-GPS-UTC-Model OPTIONAL, + ue-positioning-GPS-Almanac UE-Positioning-GPS-Almanac OPTIONAL, + ue-positioning-GPS-AcquisitionAssistance + UE-Positioning-GPS-AcquisitionAssistance-r7 OPTIONAL, + ue-positioning-GPS-Real-timeIntegrity BadSatList OPTIONAL +} + +UE-Positioning-GPS-AssistanceData-r9 ::= SEQUENCE { + ue-positioning-GPS-ReferenceTime UE-Positioning-GPS-ReferenceTime-r7 OPTIONAL, + ue-positioning-GPS-ReferenceLocation ReferenceLocation OPTIONAL, + ue-positioning-GPS-DGPS-Corrections UE-Positioning-GPS-DGPS-Corrections-r9 OPTIONAL, + ue-positioning-GPS-NavigationModel UE-Positioning-GPS-NavigationModel OPTIONAL, + ue-positioning-GPS-IonosphericModel UE-Positioning-GPS-IonosphericModel OPTIONAL, + ue-positioning-GPS-UTC-Model UE-Positioning-GPS-UTC-Model OPTIONAL, + ue-positioning-GPS-Almanac UE-Positioning-GPS-Almanac OPTIONAL, + ue-positioning-GPS-AcquisitionAssistance + UE-Positioning-GPS-AcquisitionAssistance-r7 OPTIONAL, + ue-positioning-GPS-Real-timeIntegrity BadSatList OPTIONAL +} + +UE-Positioning-GPS-AssistanceData-v920ext ::= SEQUENCE { + ue-positioning-GPS-DGPS-Corrections UE-Positioning-GPS-DGPS-Corrections-v920ext OPTIONAL +} + +UE-Positioning-GPS-AssistanceData-va40ext ::= SEQUENCE { + ue-positioning-GPS-ReferenceTime UE-Positioning-GPS-ReferenceTime-va40ext OPTIONAL, + ue-positioning-GPS-Almanac UE-Positioning-GPS-Almanac-va40ext OPTIONAL, + ue-positioning-GPS-AcquisitionAssistance + UE-Positioning-GPS-AcquisitionAssistance-va40ext + OPTIONAL +} + +UE-Positioning-GPS-AssistanceData-r10 ::= SEQUENCE { + ue-positioning-GPS-ReferenceTime UE-Positioning-GPS-ReferenceTime-r10 OPTIONAL, + ue-positioning-GPS-ReferenceLocation ReferenceLocation OPTIONAL, + ue-positioning-GPS-DGPS-Corrections UE-Positioning-GPS-DGPS-Corrections-r9 OPTIONAL, + ue-positioning-GPS-NavigationModel UE-Positioning-GPS-NavigationModel OPTIONAL, + ue-positioning-GPS-IonosphericModel UE-Positioning-GPS-IonosphericModel OPTIONAL, + ue-positioning-GPS-UTC-Model UE-Positioning-GPS-UTC-Model OPTIONAL, + ue-positioning-GPS-Almanac UE-Positioning-GPS-Almanac-r10 OPTIONAL, + ue-positioning-GPS-AcquisitionAssistance + UE-Positioning-GPS-AcquisitionAssistance-r10 + OPTIONAL, + ue-positioning-GPS-Real-timeIntegrity BadSatList OPTIONAL +} + +UE-Positioning-GPS-DGPS-Corrections ::= SEQUENCE { + gps-TOW GPS-TOW-1sec, + statusHealth DiffCorrectionStatus, + dgps-CorrectionSatInfoList DGPS-CorrectionSatInfoList +} + +UE-Positioning-GPS-DGPS-Corrections-r9 ::= SEQUENCE { + gps-TOW GPS-TOW-1sec, + statusHealth DiffCorrectionStatus, + dgps-CorrectionSatInfoList DGPS-CorrectionSatInfoList-r9 +} + +UE-Positioning-GPS-DGPS-Corrections-v920ext ::= SEQUENCE { + dgps-CorrectionSatInfoList DGPS-CorrectionSatInfoList-v920ext +} + +UE-Positioning-GPS-IonosphericModel ::= SEQUENCE { + alpha0 BIT STRING (SIZE (8)), + alpha1 BIT STRING (SIZE (8)), + alpha2 BIT STRING (SIZE (8)), + alpha3 BIT STRING (SIZE (8)), + beta0 BIT STRING (SIZE (8)), + beta1 BIT STRING (SIZE (8)), + beta2 BIT STRING (SIZE (8)), + beta3 BIT STRING (SIZE (8)) +} + +UE-Positioning-GPS-MeasurementResults ::= SEQUENCE { + referenceTime CHOICE { + utran-GPSReferenceTimeResult UTRAN-GPSReferenceTimeResult, + gps-ReferenceTimeOnly GPS-TOW-1msec + }, + gps-MeasurementParamList GPS-MeasurementParamList +} + +UE-Positioning-GPS-MeasurementResults-v770ext ::= SEQUENCE { + ue-Positioning-GPS-ReferenceTimeUncertainty + UE-Positioning-GPS-ReferenceTimeUncertainty OPTIONAL +} + +UE-Positioning-GPS-NavigationModel ::= SEQUENCE { + navigationModelSatInfoList NavigationModelSatInfoList +} + +UE-Positioning-GPS-NavModelAddDataReq ::= SEQUENCE { + gps-Week INTEGER (0..1023), + -- SPARE: gps-Toe, Max = 167 + -- Values above Max are spare + gps-Toe INTEGER (0..255), + -- SPARE: tToeLimit, Max = 10 + -- Values above Max are spare + tToeLimit INTEGER (0..15), + satDataList SatDataList +} + +UE-Positioning-GPS-ReferenceCellInfo ::= SEQUENCE{ + modeSpecificInfo CHOICE { + fdd SEQUENCE { + referenceIdentity PrimaryCPICH-Info + }, + tdd SEQUENCE { + referenceIdentity CellParametersID + } + } +} + +UE-Positioning-GPS-ReferenceTime ::= SEQUENCE { + gps-Week INTEGER (0..1023), + gps-tow-1msec GPS-TOW-1msec, + utran-GPSReferenceTime UTRAN-GPSReferenceTime OPTIONAL, + sfn-tow-Uncertainty SFN-TOW-Uncertainty OPTIONAL, + utran-GPS-DriftRate UTRAN-GPS-DriftRate OPTIONAL, + gps-TOW-AssistList GPS-TOW-AssistList OPTIONAL +} + +UE-Positioning-GPS-ReferenceTime-v770ext ::= SEQUENCE { + ue-Positioning-GPS-ReferenceTimeUncertainty + UE-Positioning-GPS-ReferenceTimeUncertainty OPTIONAL +} + +UE-Positioning-GPS-ReferenceTime-r7 ::= SEQUENCE { + gps-Week INTEGER (0..1023), + gps-tow-1msec GPS-TOW-1msec, + utran-GPSReferenceTime UTRAN-GPSReferenceTime OPTIONAL, + ue-Positioning-GPS-ReferenceTimeUncertainty + UE-Positioning-GPS-ReferenceTimeUncertainty OPTIONAL, + sfn-tow-Uncertainty SFN-TOW-Uncertainty OPTIONAL, + utran-GPS-DriftRate UTRAN-GPS-DriftRate OPTIONAL, + gps-TOW-AssistList GPS-TOW-AssistList OPTIONAL +} + +UE-Positioning-GPS-ReferenceTime-va40ext ::= SEQUENCE { + gps-Week-Cycle-Number INTEGER (0..7) OPTIONAL +} + +UE-Positioning-GPS-ReferenceTime-r10 ::= SEQUENCE { + gps-Week INTEGER (0..1023), + gps-Week-Cycle-Number INTEGER (0..7) OPTIONAL, + gps-tow-1msec GPS-TOW-1msec, + utran-GPSReferenceTime UTRAN-GPSReferenceTime OPTIONAL, + ue-Positioning-GPS-ReferenceTimeUncertainty + UE-Positioning-GPS-ReferenceTimeUncertainty + OPTIONAL, + sfn-tow-Uncertainty SFN-TOW-Uncertainty OPTIONAL, + utran-GPS-DriftRate UTRAN-GPS-DriftRate OPTIONAL, + gps-TOW-AssistList GPS-TOW-AssistList OPTIONAL +} + +UE-Positioning-GPS-ReferenceTimeUncertainty ::= INTEGER (0..127) + +UE-Positioning-GPS-UTC-Model ::= SEQUENCE { + a1 BIT STRING (SIZE (24)), + a0 BIT STRING (SIZE (32)), + t-ot BIT STRING (SIZE (8)), + wn-t BIT STRING (SIZE (8)), + delta-t-LS BIT STRING (SIZE (8)), + wn-lsf BIT STRING (SIZE (8)), + dn BIT STRING (SIZE (8)), + delta-t-LSF BIT STRING (SIZE (8)) +} + +UE-Positioning-IPDL-Parameters ::= SEQUENCE { + ip-Spacing IP-Spacing, + ip-Length IP-Length, + ip-Offset INTEGER (0..9), + seed INTEGER (0..63), + burstModeParameters BurstModeParameters OPTIONAL +} + +UE-Positioning-IPDL-Parameters-r4 ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ip-Spacing IP-Spacing, + ip-Length IP-Length, + ip-Offset INTEGER (0..9), + seed INTEGER (0..63) + }, + tdd SEQUENCE { + ip-Spacing-TDD IP-Spacing-TDD, + ip-slot INTEGER (0..14), + ip-Start INTEGER (0..4095), + ip-PCCPCG IP-PCCPCH-r4 OPTIONAL + } + }, + burstModeParameters BurstModeParameters OPTIONAL +} + +UE-Positioning-IPDL-Parameters-TDD-r4-ext ::= SEQUENCE { + ip-Spacing IP-Spacing-TDD, + ip-slot INTEGER (0..14), + ip-Start INTEGER (0..4095), + ip-PCCPCG IP-PCCPCH-r4 OPTIONAL, + burstModeParameters BurstModeParameters +} + +UE-Positioning-MeasuredResults ::= SEQUENCE { + ue-positioning-OTDOA-Measurement UE-Positioning-OTDOA-Measurement OPTIONAL, + -- Extended 'ue-positioning-PositionEstimateInfo' information may be provided using IE + -- 'UE-Positioning-PositionEstimateInfo-v770ext' in IE 'UE-Positioning-MeasuredResults-v770ext'. + ue-positioning-PositionEstimateInfo UE-Positioning-PositionEstimateInfo OPTIONAL, + ue-positioning-GPS-Measurement UE-Positioning-GPS-MeasurementResults OPTIONAL, + -- The 'ue-positioning-Error' information may be provided using IE 'UE-Positioning-Error-r7' in + -- IE 'UE-Positioning-MeasuredResults-v770ext'. + -- If IE 'UE-Positioning-Error-r7' is present, the corresponding IE 'UE-Positioning-Error' shall + -- be excluded. + ue-positioning-Error UE-Positioning-Error OPTIONAL +} + +UE-Positioning-MeasuredResults-v770ext ::= SEQUENCE { + ue-positioning-PositionEstimateInfo UE-Positioning-PositionEstimateInfo-v770ext OPTIONAL, + ue-positioning-GPS-Measurement UE-Positioning-GPS-MeasurementResults-v770ext + OPTIONAL, + ue-positioning-Error UE-Positioning-Error-r7 OPTIONAL, + ue-positioning-Ganss-MeasuredResults UE-Positioning-GANSS-MeasuredResults OPTIONAL +} + +UE-Positioning-MeasuredResults-v390ext ::= SEQUENCE { + ue-Positioning-OTDOA-Measurement-v390ext UE-Positioning-OTDOA-Measurement-v390ext +} + +UE-Positioning-MeasuredResults-v860ext ::= SEQUENCE { + ue-positioning-Error UE-Positioning-Error-v860ext OPTIONAL, + ue-positioning-Ganss-MeasurementResults UE-Positioning-GANSS-MeasuredResults-v860ext OPTIONAL +} + +UE-Positioning-Measurement ::= SEQUENCE { + ue-positioning-ReportingQuantity UE-Positioning-ReportingQuantity, + reportCriteria UE-Positioning-ReportCriteria, + ue-positioning-OTDOA-AssistanceData UE-Positioning-OTDOA-AssistanceData OPTIONAL, + ue-positioning-GPS-AssistanceData UE-Positioning-GPS-AssistanceData OPTIONAL +} + +UE-Positioning-Measurement-v390ext ::= SEQUENCE { + ue-positioning-ReportingQuantity-v390ext + UE-Positioning-ReportingQuantity-v390ext OPTIONAL, + measurementValidity MeasurementValidity OPTIONAL, + ue-positioning-OTDOA-AssistanceData-UEB UE-Positioning-OTDOA-AssistanceData-UEB OPTIONAL +} + +UE-Positioning-Measurement-r4 ::= SEQUENCE { + ue-positioning-ReportingQuantity UE-Positioning-ReportingQuantity-r4, + measurementValidity MeasurementValidity OPTIONAL, + reportCriteria UE-Positioning-ReportCriteria, + ue-positioning-OTDOA-AssistanceData UE-Positioning-OTDOA-AssistanceData-r4 OPTIONAL, + ue-positioning-GPS-AssistanceData UE-Positioning-GPS-AssistanceData OPTIONAL +} + +UE-Positioning-Measurement-r7 ::= SEQUENCE { + ue-positioning-ReportingQuantity UE-Positioning-ReportingQuantity-r7, + measurementValidity MeasurementValidity OPTIONAL, + reportCriteria UE-Positioning-ReportCriteria-r7, + ue-positioning-OTDOA-AssistanceData UE-Positioning-OTDOA-AssistanceData-r7 OPTIONAL, + ue-positioning-GPS-AssistanceData UE-Positioning-GPS-AssistanceData-r7 OPTIONAL, + ue-positioning-GANSS-AssistanceData UE-Positioning-GANSS-AssistanceData OPTIONAL +} + +UE-Positioning-Measurement-r8 ::= SEQUENCE { + ue-positioning-ReportingQuantity UE-Positioning-ReportingQuantity-r8, + measurementValidity MeasurementValidity OPTIONAL, + reportCriteria UE-Positioning-ReportCriteria-r7, + ue-positioning-OTDOA-AssistanceData UE-Positioning-OTDOA-AssistanceData-r7 OPTIONAL, + ue-positioning-GPS-AssistanceData UE-Positioning-GPS-AssistanceData-r7 OPTIONAL, + ue-positioning-GANSS-AssistanceData UE-Positioning-GANSS-AssistanceData-r8 OPTIONAL +} + +UE-Positioning-Measurement-r9 ::= SEQUENCE { + ue-positioning-ReportingQuantity UE-Positioning-ReportingQuantity-r8, + measurementValidity MeasurementValidity OPTIONAL, + reportCriteria UE-Positioning-ReportCriteria-r7, + ue-positioning-OTDOA-AssistanceData UE-Positioning-OTDOA-AssistanceData-r7 OPTIONAL, + ue-positioning-GPS-AssistanceData UE-Positioning-GPS-AssistanceData-r9 OPTIONAL, + ue-positioning-GANSS-AssistanceData UE-Positioning-GANSS-AssistanceData-r9 OPTIONAL +} + +UE-Positioning-Measurement-r10 ::= SEQUENCE { + ue-positioning-ReportingQuantity UE-Positioning-ReportingQuantity-r8, + measurementValidity MeasurementValidity OPTIONAL, + reportCriteria UE-Positioning-ReportCriteria-r7, + ue-positioning-OTDOA-AssistanceData UE-Positioning-OTDOA-AssistanceData-r7 OPTIONAL, + ue-positioning-GPS-AssistanceData UE-Positioning-GPS-AssistanceData-r10 OPTIONAL, + ue-positioning-GANSS-AssistanceData UE-Positioning-GANSS-AssistanceData-r10 OPTIONAL +} + +UE-Positioning-MeasurementEventResults ::= CHOICE { + -- In case of 'event7a' reporting, if IE 'UE-Positioning-PositionEstimateInfo' is not needed, + -- CHOICE shall be set to 'additionalOrReplacedPosMeasEvent'and the 'event7a' shall be included + -- in IE 'UE-Positioning-MeasurementEventResults-v770ext'. + event7a UE-Positioning-PositionEstimateInfo, + event7b UE-Positioning-OTDOA-Measurement, + event7c UE-Positioning-GPS-MeasurementResults, + -- If CHOICE is set to 'additionalOrReplacedPosMeasEvent', + -- IE 'UE-Positioning-MeasurementEventResults-v770ext' shall be present. + additionalOrReplacedPosMeasEvent NULL +} + +UE-Positioning-MeasurementEventResults-v770ext ::= CHOICE { + event7a UE-Positioning-PositionEstimateInfo-v770ext, + event7c UE-Positioning-GPS-MeasurementResults-v770ext, + event7d UE-Positioning-GANSS-MeasuredResults, + spare NULL +} + +UE-Positioning-MeasurementEventResults-v860ext ::= CHOICE { + event7d UE-Positioning-GANSS-MeasuredResults-v860ext +} + +UE-Positioning-MeasurementInterval ::= ENUMERATED { + e5, e15, e60, e300, + e900, e1800, e3600, e7200 } + +UE-Positioning-MethodType ::= ENUMERATED { + ue-Assisted, + ue-Based, + ue-BasedPreferred, + ue-AssistedPreferred } + +UE-Positioning-OTDOA-AssistanceData ::= SEQUENCE { + ue-positioning-OTDOA-ReferenceCellInfo + UE-Positioning-OTDOA-ReferenceCellInfo OPTIONAL, + ue-positioning-OTDOA-NeighbourCellList + UE-Positioning-OTDOA-NeighbourCellList OPTIONAL +} + +UE-Positioning-OTDOA-AssistanceData-r4 ::= SEQUENCE { + ue-positioning-OTDOA-ReferenceCellInfo + UE-Positioning-OTDOA-ReferenceCellInfo-r4 OPTIONAL, + ue-positioning-OTDOA-NeighbourCellList + UE-Positioning-OTDOA-NeighbourCellList-r4 OPTIONAL +} + +UE-Positioning-OTDOA-AssistanceData-r4ext ::= SEQUENCE { + -- In case of TDD these IPDL parameters shall be used for the reference cell instead of + -- IPDL Parameters in IE UE-Positioning-OTDOA-ReferenceCellInfo + ue-Positioning-IPDL-Parameters-TDD-r4-ext + UE-Positioning-IPDL-Parameters-TDD-r4-ext OPTIONAL, + -- These IPDL parameters shall be used for the neighbour cells in case of TDD instead of + -- IPDL Parameters in IE UE-Positioning-OTDOA-NeighbourCellInfoList. The cells shall be + -- listed in the same order as in IE UE-Positioning-OTDOA-NeighbourCellInfoList + ue-Positioning-IPDL-Parameters-TDDList-r4-ext + UE-Positioning-IPDL-Parameters-TDDList-r4-ext OPTIONAL +} + +UE-Positioning-OTDOA-AssistanceData-UEB ::= SEQUENCE { + ue-positioning-OTDOA-ReferenceCellInfo-UEB + UE-Positioning-OTDOA-ReferenceCellInfo-UEB OPTIONAL, + ue-positioning-OTDOA-NeighbourCellList-UEB + UE-Positioning-OTDOA-NeighbourCellList-UEB OPTIONAL +} + +UE-Positioning-OTDOA-AssistanceData-UEB-ext ::= SEQUENCE { + ue-positioning-OTDOA-ReferenceCellInfo-UEB-ext + UE-Positioning-OTDOA-ReferenceCellInfo-UEB-ext OPTIONAL, + ue-positioning-OTDOA-NeighbourCellList-UEB-ext + UE-Positioning-OTDOA-NeighbourCellList-UEB-ext OPTIONAL +} + +UE-Positioning-OTDOA-AssistanceData-r7 ::= SEQUENCE { + ue-positioning-OTDOA-ReferenceCellInfo UE-Positioning-OTDOA-ReferenceCellInfo-r7 OPTIONAL, + ue-positioning-OTDOA-NeighbourCellList UE-Positioning-OTDOA-NeighbourCellList-r7 OPTIONAL +} + +UE-Positioning-IPDL-Parameters-TDDList-r4-ext ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + UE-Positioning-IPDL-Parameters-TDD-r4-ext + +UE-Positioning-OTDOA-MeasuredResultsTDD-ext ::= SEQUENCE { + neighbourList NeighbourList-TDD-r7 OPTIONAL +} + +UE-Positioning-OTDOA-Measurement ::= SEQUENCE { + sfn INTEGER (0..4095), + modeSpecificInfo CHOICE { + fdd SEQUENCE { + referenceCellIDentity PrimaryCPICH-Info, + ue-RX-TX-TimeDifferenceType2Info UE-RX-TX-TimeDifferenceType2Info + }, + tdd SEQUENCE { + referenceCellIdentity CellParametersID + } + }, + neighbourList NeighbourList OPTIONAL +} + +UE-Positioning-OTDOA-Measurement-v390ext ::= SEQUENCE { + neighbourList-v390ext NeighbourList-v390ext +} + +UE-Positioning-OTDOA-NeighbourCellInfo ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info + }, + tdd SEQUENCE{ + cellAndChannelIdentity CellAndChannelIdentity + } + }, + frequencyInfo FrequencyInfo OPTIONAL, + ue-positioning-IPDL-Paremeters UE-Positioning-IPDL-Parameters OPTIONAL, + sfn-SFN-RelTimeDifference SFN-SFN-RelTimeDifference1, + sfn-SFN-Drift SFN-SFN-Drift OPTIONAL, + searchWindowSize OTDOA-SearchWindowSize, + positioningMode CHOICE{ + ueBased SEQUENCE {}, + ueAssisted SEQUENCE {} + } +} + +UE-Positioning-OTDOA-NeighbourCellInfo-r4 ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info + }, + tdd SEQUENCE{ + cellAndChannelIdentity CellAndChannelIdentity + } + }, + frequencyInfo FrequencyInfo OPTIONAL, + ue-positioning-IPDL-Paremeters UE-Positioning-IPDL-Parameters-r4 OPTIONAL, + sfn-SFN-RelTimeDifference SFN-SFN-RelTimeDifference1, + sfn-Offset-Validity SFN-Offset-Validity OPTIONAL, + sfn-SFN-Drift SFN-SFN-Drift OPTIONAL, + searchWindowSize OTDOA-SearchWindowSize, + positioningMode CHOICE { + ueBased SEQUENCE { + relativeNorth INTEGER (-20000..20000) OPTIONAL, + relativeEast INTEGER (-20000..20000) OPTIONAL, + relativeAltitude INTEGER (-4000..4000) OPTIONAL, + fineSFN-SFN FineSFN-SFN OPTIONAL, + -- actual value roundTripTime = (IE value * 0.0625) + 876 + roundTripTime INTEGER (0.. 32766) OPTIONAL + }, + ueAssisted SEQUENCE {} + } +} + +UE-Positioning-OTDOA-NeighbourCellInfo-UEB ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info + }, + tdd SEQUENCE{ + cellAndChannelIdentity CellAndChannelIdentity + } + }, + frequencyInfo FrequencyInfo OPTIONAL, + ue-positioning-IPDL-Paremeters UE-Positioning-IPDL-Parameters OPTIONAL, + sfn-SFN-RelTimeDifference SFN-SFN-RelTimeDifference1, + sfn-SFN-Drift SFN-SFN-Drift OPTIONAL, + searchWindowSize OTDOA-SearchWindowSize, + relativeNorth INTEGER (-20000..20000) OPTIONAL, + relativeEast INTEGER (-20000..20000) OPTIONAL, + relativeAltitude INTEGER (-4000..4000) OPTIONAL, + fineSFN-SFN FineSFN-SFN, + -- actual value roundTripTime = (IE value * 0.0625) + 876 + roundTripTime INTEGER (0..32766) OPTIONAL +} + +UE-Positioning-OTDOA-NeighbourCellInfo-UEB-ext ::= SEQUENCE { + -- actual value roundTripTimeExtension = (IE value * 0.0625) + roundTripTimeExtension INTEGER (0..70274) OPTIONAL +} + +UE-Positioning-OTDOA-NeighbourCellInfo-r7 ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info + }, + tdd SEQUENCE{ + cellAndChannelIdentity CellAndChannelIdentity + } + }, + frequencyInfo FrequencyInfo OPTIONAL, + ue-positioning-IPDL-Paremeters UE-Positioning-IPDL-Parameters-r4 OPTIONAL, + sfn-SFN-RelTimeDifference SFN-SFN-RelTimeDifference1, + sfn-Offset-Validity SFN-Offset-Validity OPTIONAL, + sfn-SFN-Drift SFN-SFN-Drift OPTIONAL, + searchWindowSize OTDOA-SearchWindowSize, + positioningMode CHOICE { + ueBased SEQUENCE { + relativeNorth INTEGER (-20000..20000) OPTIONAL, + relativeEast INTEGER (-20000..20000) OPTIONAL, + relativeAltitude INTEGER (-4000..4000) OPTIONAL, + fineSFN-SFN FineSFN-SFN OPTIONAL, + -- actual value roundTripTime = (IE value * 0.0625) + 876 + roundTripTime INTEGER (0.. 32766) OPTIONAL, + -- actual value roundTripTimeExtension = (IE value * 0.0625) + roundTripTimeExtension INTEGER (0..70274) OPTIONAL + }, + ueAssisted SEQUENCE {} + } +} + +UE-Positioning-OTDOA-NeighbourCellList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + UE-Positioning-OTDOA-NeighbourCellInfo + +UE-Positioning-OTDOA-NeighbourCellList-r4 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + UE-Positioning-OTDOA-NeighbourCellInfo-r4 + +UE-Positioning-OTDOA-NeighbourCellList-UEB ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + UE-Positioning-OTDOA-NeighbourCellInfo-UEB + +-- The order of the list corresponds to the order of UE-Positioning-OTDOA-NeighbourCellInfo-UEB +-- in UE-Positioning-OTDOA-NeighbourCellList-UEB +UE-Positioning-OTDOA-NeighbourCellList-UEB-ext ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + UE-Positioning-OTDOA-NeighbourCellInfo-UEB-ext + +UE-Positioning-OTDOA-NeighbourCellList-r7 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF + UE-Positioning-OTDOA-NeighbourCellInfo-r7 + +UE-Positioning-OTDOA-Quality ::= SEQUENCE { + stdResolution BIT STRING (SIZE (2)), + numberOfOTDOA-Measurements BIT STRING (SIZE (3)), + stdOfOTDOA-Measurements BIT STRING (SIZE (5)) +} + +UE-Positioning-OTDOA-ReferenceCellInfo ::= SEQUENCE { + sfn INTEGER (0..4095) OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info + }, + tdd SEQUENCE{ + cellAndChannelIdentity CellAndChannelIdentity + } + }, + frequencyInfo FrequencyInfo OPTIONAL, + positioningMode CHOICE { + ueBased SEQUENCE {}, + ueAssisted SEQUENCE {} + }, + ue-positioning-IPDL-Paremeters UE-Positioning-IPDL-Parameters OPTIONAL +} + +UE-Positioning-OTDOA-ReferenceCellInfo-r4 ::= SEQUENCE { + sfn INTEGER (0..4095) OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info + }, + tdd SEQUENCE{ + cellAndChannelIdentity CellAndChannelIdentity + } + }, + frequencyInfo FrequencyInfo OPTIONAL, + positioningMode CHOICE { + ueBased SEQUENCE { + cellPosition ReferenceCellPosition OPTIONAL, + -- actual value roundTripTime = (IE value * 0.0625) + 876 + roundTripTime INTEGER (0..32766) OPTIONAL + }, + ueAssisted SEQUENCE {} + }, + ue-positioning-IPDL-Paremeters UE-Positioning-IPDL-Parameters-r4 OPTIONAL +} + +UE-Positioning-OTDOA-ReferenceCellInfo-UEB ::= SEQUENCE { + sfn INTEGER (0..4095) OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info + }, + tdd SEQUENCE{ + cellAndChannelIdentity CellAndChannelIdentity + } + }, + frequencyInfo FrequencyInfo OPTIONAL, + cellPosition ReferenceCellPosition OPTIONAL, + -- actual value roundTripTime = (IE value * 0.0625) + 876 + roundTripTime INTEGER (0..32766) OPTIONAL, + ue-positioning-IPDL-Paremeters UE-Positioning-IPDL-Parameters OPTIONAL +} + +UE-Positioning-OTDOA-ReferenceCellInfo-UEB-ext ::= SEQUENCE { + -- actual value roundTripTimeExtension = (IE value * 0.0625) + roundTripTimeExtension INTEGER (0..70274) OPTIONAL +} + +UE-Positioning-OTDOA-ReferenceCellInfo-r7 ::= SEQUENCE { + sfn INTEGER (0..4095) OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info + }, + tdd SEQUENCE{ + cellAndChannelIdentity CellAndChannelIdentity + } + }, + frequencyInfo FrequencyInfo OPTIONAL, + positioningMode CHOICE { + ueBased SEQUENCE { + cellPosition ReferenceCellPosition OPTIONAL, + -- actual value roundTripTime = (IE value * 0.0625) + 876 + roundTripTime INTEGER (0..32766) OPTIONAL, + -- actual value roundTripTimeExtension = (IE value * 0.0625) + roundTripTimeExtension INTEGER (0..70274) OPTIONAL + }, + ueAssisted SEQUENCE {} + }, + ue-positioning-IPDL-Paremeters UE-Positioning-IPDL-Parameters-r4 OPTIONAL +} + +UE-Positioning-PositionEstimateInfo ::= SEQUENCE { + referenceTime CHOICE { + utran-GPSReferenceTimeResult UTRAN-GPSReferenceTimeResult, + gps-ReferenceTimeOnly GPS-TOW-1msec, + cell-Timing SEQUENCE { + sfn INTEGER (0..4095), + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-Info PrimaryCPICH-Info + }, + tdd SEQUENCE{ + cellAndChannelIdentity CellAndChannelIdentity + } + } + } + }, + positionEstimate PositionEstimate +} + +UE-Positioning-PositionEstimateInfo-v770ext ::= SEQUENCE { + referenceTimeOptions CHOICE { + -- If 'earlier-than-r7', IE 'UE-Positioning-PositionEstimateInfo' shall be included. + earlier-than-r7 NULL, + -- If 'r7', the corresponding IE 'UE-Positioning-PositionEstimateInfo' shall be excluded. + r7 SEQUENCE { + referenceTime CHOICE { + utran-GANSSReferenceTimeResult UTRAN-GANSSReferenceTime, + ganssReferenceTimeOnly GANSSReferenceTimeOnly + }, + positionEstimate PositionEstimate + } + }, + positionData BIT STRING (SIZE (16)), + velocityEstimate VelocityEstimate OPTIONAL, + ue-Positioning-GPS-ReferenceTimeUncertainty + UE-Positioning-GPS-ReferenceTimeUncertainty OPTIONAL +} + +UE-Positioning-ReportCriteria ::= CHOICE { + ue-positioning-ReportingCriteria UE-Positioning-EventParamList, + periodicalReportingCriteria PeriodicalReportingCriteria, + noReporting NULL +} + +UE-Positioning-ReportCriteria-r7 ::= CHOICE { + ue-positioning-ReportingCriteria UE-Positioning-EventParamList-r7, + periodicalReportingCriteria PeriodicalReportingCriteria, + noReporting NULL +} + +UE-Positioning-ReportingQuantity ::= SEQUENCE { + methodType UE-Positioning-MethodType, + positioningMethod PositioningMethod, + -- dummy1 is not used in this version of specification and it should + -- be ignored. + dummy1 UE-Positioning-ResponseTime, + horizontal-Accuracy UE-Positioning-Accuracy OPTIONAL, + gps-TimingOfCellWanted BOOLEAN, + -- dummy2 is not used in this version of specification and it should + -- be ignored. + dummy2 BOOLEAN, + additionalAssistanceDataRequest BOOLEAN, + environmentCharacterisation EnvironmentCharacterisation OPTIONAL +} + +UE-Positioning-ReportingQuantity-v390ext ::= SEQUENCE { + vertical-Accuracy UE-Positioning-Accuracy +} + +UE-Positioning-ReportingQuantity-r4 ::= SEQUENCE { + methodType UE-Positioning-MethodType, + positioningMethod PositioningMethod, + horizontalAccuracy UE-Positioning-Accuracy OPTIONAL, + verticalAccuracy UE-Positioning-Accuracy OPTIONAL, + gps-TimingOfCellWanted BOOLEAN, + additionalAssistanceDataReq BOOLEAN, + environmentCharacterisation EnvironmentCharacterisation OPTIONAL +} + +UE-Positioning-ReportingQuantity-r7 ::= SEQUENCE { + methodType UE-Positioning-MethodType, + positioningMethod PositioningMethod, + horizontalAccuracy UE-Positioning-Accuracy OPTIONAL, + verticalAccuracy UE-Positioning-Accuracy OPTIONAL, + gps-TimingOfCellWanted BOOLEAN, + additionalAssistanceDataReq BOOLEAN, + environmentCharacterisation EnvironmentCharacterisation OPTIONAL, + velocityRequested ENUMERATED { true } OPTIONAL, + gANSSPositioningMethods BIT STRING (SIZE (16)) OPTIONAL, + gANSSTimingOfCellWanted BIT STRING (SIZE (8)) OPTIONAL, + gANSSCarrierPhaseMeasurementRequested + BIT STRING (SIZE (8)) OPTIONAL +} + +UE-Positioning-ReportingQuantity-r8 ::= SEQUENCE { + methodType UE-Positioning-MethodType, + positioningMethod PositioningMethod, + horizontalAccuracy UE-Positioning-Accuracy OPTIONAL, + verticalAccuracy UE-Positioning-Accuracy OPTIONAL, + gps-TimingOfCellWanted BOOLEAN, + additionalAssistanceDataReq BOOLEAN, + environmentCharacterisation EnvironmentCharacterisation OPTIONAL, + velocityRequested ENUMERATED { true } OPTIONAL, + gANSSPositioningMethods BIT STRING (SIZE (16)) OPTIONAL, + gANSSTimingOfCellWanted BIT STRING (SIZE (8)) OPTIONAL, + gANSSCarrierPhaseMeasurementRequested + BIT STRING (SIZE (8)) OPTIONAL, + gANSSMultiFreqMeasurementRequested BIT STRING (SIZE (8)) OPTIONAL +} + +UE-Positioning-ResponseTime ::= ENUMERATED { + s1, s2, s4, s8, s16, + s32, s64, s128 } + +UTCmodelSet1 ::= SEQUENCE { + utcA0 BIT STRING (SIZE (16)), + utcA1 BIT STRING (SIZE (13)), + utcA2 BIT STRING (SIZE (7)), + utcDeltaTls BIT STRING (SIZE (8)), + utcTot BIT STRING (SIZE (16)), + utcWNot BIT STRING (SIZE (13)), + utcWNlsf BIT STRING (SIZE (8)), + utcDN BIT STRING (SIZE (4)), + utcDeltaTlsf BIT STRING (SIZE (8)) +} + +UTCmodelSet2 ::= SEQUENCE { + nA BIT STRING (SIZE (11)), + tauC BIT STRING (SIZE (32)), + deltaUT1 DeltaUT1 OPTIONAL, + kp BIT STRING (SIZE (2)) OPTIONAL +} + +UTCmodelSet3 ::= SEQUENCE { + utcA1wnt BIT STRING (SIZE (24)), + utcA0wnt BIT STRING (SIZE (32)), + utcTot BIT STRING (SIZE (8)), + utcWNt BIT STRING (SIZE (8)), + utcDeltaTls BIT STRING (SIZE (8)), + utcWNlsf BIT STRING (SIZE (8)), + utcDN BIT STRING (SIZE (8)), + utcDeltaTlsf BIT STRING (SIZE (8)), + utcStandardID BIT STRING (SIZE (3)) +} + +-- SPARE: UTRA-CarrierRSSI, Max = 76 +-- Values above Max are spare +UTRA-CarrierRSSI ::= INTEGER (0..127) + +UTRAN-GANSSReferenceTime ::= SEQUENCE { + ue-GANSSTimingOfCellFrames SEQUENCE { + -- Actual value [ns] = (ms-Part * 4294967296 + ls-Part) * 250 + -- Actual values [ns] > 86399999999750 are reserved and are considered a protocol error + ms-Part INTEGER (0..80), + ls-Part INTEGER (0..4294967295) + }, + gANSS-TimeId INTEGER (0..7) OPTIONAL, + gANSS-TimeUncertainty INTEGER (0..127) OPTIONAL, + mode CHOICE { + fdd SEQUENCE { + primary-CPICH-Info PrimaryCPICH-Info + }, + tdd SEQUENCE { + cellParameters CellParametersID + } + }, + referenceSfn INTEGER (0..4095) +} + +UTRAN-FDD-FrequencyList ::= SEQUENCE (SIZE(1..maxNumFDDFreqs)) OF + UTRAN-FDD-Frequency + +UTRAN-FDD-Frequency ::= SEQUENCE { + uarfcn UARFCN, + priority INTEGER (0..maxPrio-1), + -- Actual value = IE value * 2 + threshXhigh INTEGER (0..31), + -- Actual value = IE value * 2 + threshXlow INTEGER (0..31), + qQualMinFDD INTEGER (-24..0) OPTIONAL, + -- Actual value = IE value * 2 + 1 + qRxLevMinFDD INTEGER (-60..-13) OPTIONAL +} + +UTRAN-TDD-FrequencyList ::= SEQUENCE (SIZE(1..maxNumTDDFreqs)) OF + UTRAN-TDD-Frequency + +UTRAN-TDD-Frequency ::= SEQUENCE { + uarfcn UARFCN, + priority INTEGER (0..maxPrio-1), + -- Actual value = IE value * 2 + threshXhigh INTEGER (0..31), + -- Actual value = IE value * 2 + threshXlow INTEGER (0..31), + -- Actual value = IE value * 2 + 1 + qRxLevMinTDD INTEGER (-60..-13) OPTIONAL +} + +UTRAN-GPS-DriftRate ::= ENUMERATED { + utran-GPSDrift0, utran-GPSDrift1, utran-GPSDrift2, + utran-GPSDrift5, utran-GPSDrift10, utran-GPSDrift15, + utran-GPSDrift25, utran-GPSDrift50, utran-GPSDrift-1, + utran-GPSDrift-2, utran-GPSDrift-5, utran-GPSDrift-10, + utran-GPSDrift-15, utran-GPSDrift-25, utran-GPSDrift-50} + +UTRAN-GPSReferenceTime ::= SEQUENCE { + -- For utran-GPSTimingOfCell values above 2322431999999 are not + -- used in this version of the specification + -- Actual value utran-GPSTimingOfCell = (ms-part * 4294967296) + ls-part + utran-GPSTimingOfCell SEQUENCE { + ms-part INTEGER (0..1023), + ls-part INTEGER (0..4294967295) + }, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + referenceIdentity PrimaryCPICH-Info + }, + tdd SEQUENCE { + referenceIdentity CellParametersID + } + } OPTIONAL, + sfn INTEGER (0..4095) +} + +UTRAN-GPSReferenceTimeResult ::= SEQUENCE { + -- For ue-GPSTimingOfCell values above 37158911999999 are not + -- used in this version of the specification + -- Actual value ue-GPSTimingOfCell = (ms-part * 4294967296) + ls-part + ue-GPSTimingOfCell SEQUENCE { + ms-part INTEGER (0.. 16383), + ls-part INTEGER (0..4294967295) + }, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + referenceIdentity PrimaryCPICH-Info + }, + tdd SEQUENCE { + referenceIdentity CellParametersID + } + }, + sfn INTEGER (0..4095) +} + +UTRA-PriorityInfoList ::= SEQUENCE { + utra-ServingCell SEQUENCE { + priority INTEGER (0..maxPrio-1), + -- Actual value = IE value * 2 + s-PrioritySearch1 INTEGER (0..31), + -- Actual value = IE value, default value is 0 + s-PrioritySearch2 INTEGER (0..7) OPTIONAL, + -- Actual value = IE value * 2 + threshServingLow INTEGER (0..31) + }, + utran-FDD-FrequencyList UTRAN-FDD-FrequencyList OPTIONAL, + utran-TDD-FrequencyList UTRAN-TDD-FrequencyList OPTIONAL +} + +UTRA-PriorityInfoList-v920ext ::= SEQUENCE { + threshServingLow2 INTEGER (0..31) OPTIONAL +} + +VarianceOfRLC-BufferPayload ::= ENUMERATED { + plv0, plv4, plv8, plv16, plv32, plv64, + plv128, plv256, plv512, plv1024, + plv2k, plv4k, plv8k, plv16k, spare2, spare1 } + +VelocityEstimate ::= CHOICE { + horizontalVelocity HorizontalVelocity, + horizontalWithVerticalVelocity HorizontalWithVerticalVelocity, + horizontalVelocityWithUncertainty HorizontalVelocityWithUncertainty, + horizontalWithVerticalVelocityAndUncertainty HorizontalWithVerticalVelocityAndUncertainty +} + +-- Actual value W = IE value * 0.1 +W ::= INTEGER (0..20) + +-- *************************************************** +-- +-- OTHER INFORMATION ELEMENTS (10.3.8) +-- +-- *************************************************** + +BCC ::= INTEGER (0..7) + +BCCH-ModificationInfo ::= SEQUENCE { + mib-ValueTag MIB-ValueTag, + bcch-ModificationTime BCCH-ModificationTime OPTIONAL +} + +-- Actual value BCCH-ModificationTime = IE value * 8 +BCCH-ModificationTime ::= INTEGER (0..511) + +BSIC ::= SEQUENCE { + ncc NCC, + bcc BCC +} + +CBS-DRX-Level1Information ::= SEQUENCE { + ctch-AllocationPeriod INTEGER (1..256), + cbs-FrameOffset INTEGER (0..255) +} + +CBS-DRX-Level1Information-extension-r6 ::= ENUMERATED {p8, p16, p32, p64, p128, p256} + +CDMA2000-Message ::= SEQUENCE { + msg-Type BIT STRING (SIZE (8)), + payload BIT STRING (SIZE (1..512)) +} + +CDMA2000-MessageList ::= SEQUENCE (SIZE (1..maxInterSysMessages)) OF + CDMA2000-Message + +CDMA2000-UMTS-Frequency-List ::= SEQUENCE (SIZE (1..maxNumCDMA2000Freqs)) OF + FrequencyInfoCDMA2000 + +CellValueTag ::= INTEGER (1..4) + +DataTransmFrequency ::= SEQUENCE { + dataTransmFreqGranularity ENUMERATED { ms100, ms250, ms500, ms1000, + ms2000, ms5000, ms10000, ms60000 }, + numberOfDataTransmOcc INTEGER (1..610) +} + +DataVolumeHistory ::= SEQUENCE { + dataVolumeMontoringWindow INTEGER (1..120), + dataTransmFrequency DataTransmFrequency OPTIONAL, + dataVolumePerRB DataVolumePerRB-List OPTIONAL +} + +DataVolumePerRB ::= SEQUENCE { + rb-Identity RB-Identity, + dataVolume INTEGER (0..4294967295) +} + +DataVolumePerRB-List ::= SEQUENCE (SIZE (1..maxRB)) OF DataVolumePerRB + +DeferredMeasurementControlReadingSupport ::= SEQUENCE { + -- If modeSpecificInfo is not present, deferred SIB11, SIB11bis and SIB12 reading + -- with default measurement quantities applies + modeSpecificInfo CHOICE { + fdd SEQUENCE { + intraFreqMeasQuantity-FDD IntraFreqMeasQuantity-FDD-sib3 + }, + tdd SEQUENCE { + intraFreqMeasQuantity-TDDList IntraFreqMeasQuantity-TDD-sib3List + } + } OPTIONAL +} + +ETWS-Information ::= SEQUENCE { + warningType OCTET STRING (SIZE (1..2)), + messageIdentifier OCTET STRING (SIZE (2)), + serialNumber OCTET STRING (SIZE (2)) +} + +-- This IE is not used in the specification. +ETWS-WarningSecurityInfo ::= OCTET STRING + +EUTRA-BlacklistedCell ::= SEQUENCE { + physicalCellIdentity EUTRA-PhysicalCellIdentity +} + +EUTRA-BlacklistedCellPerFreqList ::= SEQUENCE (SIZE (1..maxEUTRACellPerFreq)) OF + EUTRA-BlacklistedCell + +EUTRA-PhysicalCellIdentity ::= INTEGER (0..503) + +EUTRA-RadioAccessCapability ::= SEQUENCE { + ue-EUTRA-Capability OCTET STRING +} + +EUTRA-TargetFreqInfoList ::= SEQUENCE (SIZE (1..maxEUTRATargetFreqs)) OF + EUTRA-TargetFreqInfo + +EUTRA-TargetFreqInfoList-vb50ext ::= SEQUENCE (SIZE (1..maxEUTRATargetFreqs)) OF + EUTRA-TargetFreqInfo-vb50ext + +EUTRA-TargetFreqInfo ::= SEQUENCE { + dlEUTRACarrierFreq EARFCN, + eutraBlacklistedCellPerFreqList EUTRA-BlacklistedCellPerFreqList OPTIONAL +} + +EUTRA-TargetFreqInfo-vb50ext ::= SEQUENCE { + earfcn EARFCNExtension OPTIONAL +} + +--Actual value = 2^(IE value) +ExpirationTimeFactor ::= INTEGER (1..8) + +ExtGANSS-SchedulingInfo ::= SEQUENCE { + extensionGANSS-SIBType SIB-TypeExtGANSS, + schedulingInfo SchedulingInformation, + valueTagInfo ValueTagInfo +} + +-- For each extended GANSS SIB type the value tag information is added at the end +ExtGANSS-SIBTypeInfoSchedulingInfoList ::= SEQUENCE (SIZE (1..maxGANSS)) OF + ExtGANSS-SIBTypeInfoSchedulingInfo + +ExtGANSS-SIBTypeInfoSchedulingInfo ::= SEQUENCE { + ganssID INTEGER (0..7) OPTIONAL, + sbasID UE-Positioning-GANSS-SBAS-ID OPTIONAL, + ganssScheduling SEQUENCE (SIZE (1..maxSIB)) OF + ExtGANSS-SchedulingInfo +} + +-- For each extended SIB type the value tag information is added at the end +ExtSIBTypeInfoSchedulingInfo-List ::= SEQUENCE (SIZE (1..maxSIB)) OF + ExtSIBTypeInfoSchedulingInfo + +ExtSIBTypeInfoSchedulingInfo ::= SEQUENCE { + extensionSIB-Type SIB-TypeExt, + schedulingInfo SchedulingInformation, + valueTagInfo ValueTagInfo +} + +-- For each extended SIB type the value tag information is added at the end +ExtSIBTypeInfoSchedulingInfo-List2 ::= SEQUENCE (SIZE (1..maxSIB)) OF + ExtSIBTypeInfoSchedulingInfo2 + +ExtSIBTypeInfoSchedulingInfo2 ::= SEQUENCE { + extensionSIB-Type2 SIB-TypeExt2, + schedulingInfo SchedulingInformation, + valueTagInfo ValueTagInfo +} + +FDD-UMTS-Frequency-List ::= SEQUENCE (SIZE (1..maxNumFDDFreqs)) OF + -- NOTE1: The IE "UARFCN (Nlow)" corresponds to + -- "uarfcn-DL" in FrequencyInfoFDD. + -- NOTE2: The IE "UARFCN (Nupper)" corresponds to + -- "uarfcn-UL" in FrequencyInfoFDD. + FrequencyInfoFDD + +FrequencyInfoCDMA2000 ::= SEQUENCE { + band-Class BIT STRING (SIZE (5)), + cdma-Freq BIT STRING (SIZE(11)) +} + +GERAN-SystemInfoBlock ::= OCTET STRING (SIZE (1..23)) + +GERAN-SystemInformation ::= SEQUENCE (SIZE (1..maxGERAN-SI)) OF GERAN-SystemInfoBlock + +GSM-BA-Range ::= SEQUENCE { + gsmLowRangeUARFCN UARFCN, + gsmUpRangeUARFCN UARFCN +} + +GSM-BA-Range-List ::= SEQUENCE (SIZE (1..maxNumGSMFreqRanges)) OF + GSM-BA-Range + + +-- This IE is formatted as 'TLV' and is coded in the same way as the Mobile Station Classmark 2 +-- information element in [5]. The first octet is the Mobile station classmark 2 IEI and its value +-- shall be set to 33H. The second octet is the Length of mobile station classmark 2 and its value +-- shall be set to 3. The octet 3 contains the first octet of the value part of the Mobile Station +-- Classmark 2 information element, the octet 4 contains the second octet of the value part of the +-- Mobile Station Classmark 2 information element and so on. For each of these octets, the first/ +-- leftmost/ most significant bit of the octet contains b8 of the corresponding octet of the Mobile +-- Station Classmark 2. +GSM-Classmark2 ::= OCTET STRING (SIZE (5)) + +-- This IE is formatted as 'V' and is coded in the same way as the value part in the Mobile station +-- classmark 3 information element in [5] +-- The value part is specified by means of CSN.1, which encoding results in a bit string, to which +-- final padding may be appended upto the next octet boundary [5]. The first/ leftmost bit of the +-- CSN.1 bit string is placed in the first/ leftmost/ most significant bit of the first +-- octet. This continues until the last bit of the CSN.1 bit string, which is placed in the last/ +-- rightmost/ least significant bit of the last octet. +GSM-Classmark3 ::= OCTET STRING (SIZE (1..32)) + +GSM-MessageList ::= SEQUENCE (SIZE (1..maxInterSysMessages)) OF + BIT STRING (SIZE (1..512)) + +GSM-MS-RadioAccessCapability ::= OCTET STRING (SIZE (1..64)) + +GsmSecurityCapability ::= BIT STRING { + -- For each bit value "0" means false/ not supported + a5-7(0), + a5-6(1), + a5-5(2), + a5-4(3), + a5-3(4), + a5-2(5), + a5-1(6) + } (SIZE (7)) + +GSM-TargetCellInfoList ::= SEQUENCE (SIZE (1..maxGSMTargetCells)) OF + GSM-TargetCellInfo + + +GSM-TargetCellInfo ::= SEQUENCE { + bcch-ARFCN BCCH-ARFCN, + frequency-band Frequency-Band, + bsic BSIC OPTIONAL +} + +HNBName ::= OCTET STRING (SIZE(1..maxHNBNameSize)) + +IdentificationOfReceivedMessage ::= SEQUENCE { + rrc-TransactionIdentifier RRC-TransactionIdentifier, + receivedMessageType ReceivedMessageType +} + +InterRAT-ChangeFailureCause ::= CHOICE { + configurationUnacceptable NULL, + physicalChannelFailure NULL, + protocolError ProtocolErrorInformation, + unspecified NULL, + spare4 NULL, + spare3 NULL, + spare2 NULL, + spare1 NULL +} + +GERANIu-MessageList ::= SEQUENCE (SIZE (1..maxInterSysMessages)) OF + BIT STRING (SIZE (1..32768)) + +GERANIu-RadioAccessCapability ::= BIT STRING (SIZE (1..170)) + +InterRAT-UE-RadioAccessCapability ::= CHOICE { + gsm SEQUENCE { + gsm-Classmark2 GSM-Classmark2, + gsm-Classmark3 GSM-Classmark3 + }, + cdma2000 SEQUENCE { + cdma2000-MessageList CDMA2000-MessageList + } +} + +InterRAT-UE-RadioAccessCapabilityList ::= SEQUENCE (SIZE(1..maxInterSysMessages)) OF + InterRAT-UE-RadioAccessCapability + +InterRAT-UE-RadioAccessCapability-v590ext ::= SEQUENCE { + geranIu-RadioAccessCapability GERANIu-RadioAccessCapability +} + +InterRAT-UE-RadioAccessCapability-v690ext ::= SEQUENCE { + supportOfInter-RAT-PS-Handover ENUMERATED { doesSupporInter-RAT-PS-Handover } OPTIONAL, + gsm-MS-RadioAccessCapability GSM-MS-RadioAccessCapability +} + +InterRAT-UE-RadioAccessCapability-v860ext ::= SEQUENCE { + eutra-RadioAccessCapability EUTRA-RadioAccessCapability OPTIONAL +} + +InterRAT-UE-SecurityCapability ::= CHOICE { + gsm SEQUENCE { + gsmSecurityCapability GsmSecurityCapability + } +} + +InterRAT-UE-SecurityCapList ::= SEQUENCE (SIZE(1..maxInterSysMessages)) OF + InterRAT-UE-SecurityCapability + +InterRAT-HO-FailureCause ::= CHOICE { + configurationUnacceptable NULL, + physicalChannelFailure NULL, + protocolError ProtocolErrorInformation, + interRAT-ProtocolError NULL, + unspecified NULL, + spare11 NULL, + spare10 NULL, + spare9 NULL, + spare8 NULL, + spare7 NULL, + spare6 NULL, + spare5 NULL, + spare4 NULL, + spare3 NULL, + spare2 NULL, + spare1 NULL +} + +MasterInformationBlock ::= SEQUENCE { + mib-ValueTag MIB-ValueTag, + -- TABULAR: The PLMN identity and ANSI-41 core network information + -- are included in PLMN-Type. + plmn-Type PLMN-Type, + sibSb-ReferenceList SIBSb-ReferenceList, + -- Extension mechanism for non- release99 information + v690NonCriticalExtensions SEQUENCE { + masterInformationBlock-v690ext MasterInformationBlock-v690ext, + v6b0NonCriticalExtensions SEQUENCE { + masterInformationBlock-v6b0ext MasterInformationBlock-v6b0ext-IEs, + v860NonCriticalExtensions SEQUENCE { + masterInformationBlock-v860ext MasterInformationBlock-v860ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +MasterInformationBlock-v690ext ::= SEQUENCE { + multiplePLMN-List MultiplePLMN-List-r6 OPTIONAL +} + +MasterInformationBlock-v6b0ext-IEs ::= SEQUENCE { + extSIBTypeInfoSchedulingInfo-List ExtSIBTypeInfoSchedulingInfo-List OPTIONAL +} + +MasterInformationBlock-v860ext-IEs ::= SEQUENCE { + extSIBTypeInfoSchedulingInfo-List ExtSIBTypeInfoSchedulingInfo-List2 OPTIONAL, + extGANSS-SIBTypeInfoSchedulingInfoList + ExtGANSS-SIBTypeInfoSchedulingInfoList OPTIONAL, + csg-Indicator ENUMERATED { true } OPTIONAL +} + +MIB-ValueTag ::= INTEGER (1..8) + +NCC ::= INTEGER (0..7) + +PLMN-ValueTag ::= INTEGER (1..256) + + +PredefinedConfigIdentityAndValueTag ::= SEQUENCE { + predefinedConfigIdentity PredefinedConfigIdentity, + predefinedConfigValueTag PredefinedConfigValueTag +} + +ProtocolErrorInformation ::= SEQUENCE { + diagnosticsType CHOICE { + type1 SEQUENCE { + protocolErrorCause ProtocolErrorCause + }, + spare NULL + } +} + +ReceivedMessageType ::= ENUMERATED { + activeSetUpdate, + cellChangeOrderFromUTRAN, + cellUpdateConfirm, + counterCheck, + downlinkDirectTransfer, + interRATHandoverCommand, + measurementControl, + pagingType2, + physicalChannelReconfiguration, + physicalSharedChannelAllocation, + radioBearerReconfiguration, + radioBearerRelease, + radioBearerSetup, + rrcConnectionRelease, + rrcConnectionReject, + rrcConnectionSetup, + securityModeCommand, + signallingConnectionRelease, + transportChannelReconfiguration, + transportFormatCombinationControl, + ueCapabilityEnquiry, + ueCapabilityInformationConfirm, + uplinkPhysicalChannelControl, + uraUpdateConfirm, + utranMobilityInformation, + assistanceDataDelivery, + spare6, spare5, spare4, spare3, spare2, + spare1 +} + +Rplmn-Information ::= SEQUENCE { + gsm-BA-Range-List GSM-BA-Range-List OPTIONAL, + fdd-UMTS-Frequency-List FDD-UMTS-Frequency-List OPTIONAL, + tdd-UMTS-Frequency-List TDD-UMTS-Frequency-List OPTIONAL, + cdma2000-UMTS-Frequency-List CDMA2000-UMTS-Frequency-List OPTIONAL +} + +Rplmn-Information-r4 ::= SEQUENCE { + gsm-BA-Range-List GSM-BA-Range-List OPTIONAL, + fdd-UMTS-Frequency-List FDD-UMTS-Frequency-List OPTIONAL, + -- the option is the same for 7.68 Mcps TDD as for 3.84 Mcps TDD + -- i.e. TDD-UMTS-Frequency-List applies + tdd384-UMTS-Frequency-List TDD-UMTS-Frequency-List OPTIONAL, + tdd128-UMTS-Frequency-List TDD-UMTS-Frequency-List OPTIONAL, + cdma2000-UMTS-Frequency-List CDMA2000-UMTS-Frequency-List OPTIONAL +} + +SchedulingInformation ::= SEQUENCE { + scheduling SEQUENCE { + segCount SegCount DEFAULT 1, + sib-Pos CHOICE { + -- The element name indicates the repetition period and the value + -- (multiplied by two) indicates the position of the first segment. + rep4 INTEGER (0..1), + rep8 INTEGER (0..3), + rep16 INTEGER (0..7), + rep32 INTEGER (0..15), + rep64 INTEGER (0..31), + rep128 INTEGER (0..63), + rep256 INTEGER (0..127), + rep512 INTEGER (0..255), + rep1024 INTEGER (0..511), + rep2048 INTEGER (0..1023), + rep4096 INTEGER (0..2047) + }, + sib-PosOffsetInfo SibOFF-List OPTIONAL + } +} + +SchedulingInformationSIB ::= SEQUENCE { + sib-Type SIB-TypeAndTag, + scheduling SchedulingInformation +} + +SchedulingInformationSIBSb ::= SEQUENCE { + sibSb-Type SIBSb-TypeAndTag, + scheduling SchedulingInformation +} + +SegCount ::= INTEGER (1..16) + +SegmentIndex ::= INTEGER (1..15) + +-- Actual value SFN-Prime = 2 * IE value +SFN-Prime ::= INTEGER (0..2047) + + +SIB-Data-fixed ::= BIT STRING (SIZE (222)) + + +SIB-Data-variable ::= BIT STRING (SIZE (1..214)) + +SIBOccurIdentity ::= INTEGER (0..15) + +SIBOccurrenceIdentityAndValueTag ::= SEQUENCE { + sibOccurIdentity SIBOccurIdentity, + sibOccurValueTag SIBOccurValueTag +} + +SIBOccurValueTag ::= INTEGER (0..15) + +SIB-ReferenceList ::= SEQUENCE (SIZE (1..maxSIB)) OF + SchedulingInformationSIB + +SIBSb-ReferenceList ::= SEQUENCE (SIZE (1..maxSIB)) OF + SchedulingInformationSIBSb + +SIB-ReferenceListFACH ::= SEQUENCE (SIZE (1..maxSIB-FACH)) OF + SchedulingInformationSIB + +SIB-Type ::= ENUMERATED { + masterInformationBlock, + systemInformationBlockType1, + systemInformationBlockType2, + systemInformationBlockType3, + systemInformationBlockType4, + systemInformationBlockType5, + systemInformationBlockType6, + systemInformationBlockType7, + -- dummy, dummy2 and dummy3 are not used in this version of the specification, + -- they should not be sent. If they are received they should be ignored + dummy, + dummy2, + dummy3, + systemInformationBlockType11, + systemInformationBlockType12, + systemInformationBlockType13, + systemInformationBlockType13-1, + systemInformationBlockType13-2, + systemInformationBlockType13-3, + systemInformationBlockType13-4, + systemInformationBlockType14, + systemInformationBlockType15, + systemInformationBlockType15-1, + systemInformationBlockType15-2, + systemInformationBlockType15-3, + systemInformationBlockType16, + systemInformationBlockType17, + systemInformationBlockType15-4, + systemInformationBlockType18, + schedulingBlock1, + schedulingBlock2, + systemInformationBlockType15-5, + systemInformationBlockType5bis, + extensionType } + +SIB-TypeAndTag ::= CHOICE { + sysInfoType1 PLMN-ValueTag, + sysInfoType2 CellValueTag, + sysInfoType3 CellValueTag, + sysInfoType4 CellValueTag, + sysInfoType5 CellValueTag, + sysInfoType6 CellValueTag, + sysInfoType7 NULL, + -- dummy, dummy2 and dummy3 are not used in this version of the specification, + -- they should not be sent. If they are received the UE behaviour is not specified. + dummy CellValueTag, + dummy2 NULL, + dummy3 NULL, + sysInfoType11 CellValueTag, + sysInfoType12 CellValueTag, + sysInfoType13 CellValueTag, + sysInfoType13-1 CellValueTag, + sysInfoType13-2 CellValueTag, + sysInfoType13-3 CellValueTag, + sysInfoType13-4 CellValueTag, + sysInfoType14 NULL, + sysInfoType15 CellValueTag, + sysInfoType16 PredefinedConfigIdentityAndValueTag, + sysInfoType17 NULL, + sysInfoType15-1 CellValueTag, + sysInfoType15-2 SIBOccurrenceIdentityAndValueTag, + sysInfoType15-3 SIBOccurrenceIdentityAndValueTag, + sysInfoType15-4 CellValueTag, + sysInfoType18 CellValueTag, + sysInfoType15-5 CellValueTag, + sysInfoType5bis CellValueTag, + spare4 NULL, + spare3 NULL, + spare2 NULL, + spare1 NULL +} + +SIBSb-TypeAndTag ::= CHOICE { + sysInfoType1 PLMN-ValueTag, + sysInfoType2 CellValueTag, + sysInfoType3 CellValueTag, + sysInfoType4 CellValueTag, + sysInfoType5 CellValueTag, + sysInfoType6 CellValueTag, + sysInfoType7 NULL, + -- dummy, dummy2 and dummy3 are not used in this version of the specification, + -- they should not be sent. If they are received the UE behaviour is not specified. + dummy CellValueTag, + dummy2 NULL, + dummy3 NULL, + sysInfoType11 CellValueTag, + sysInfoType12 CellValueTag, + sysInfoType13 CellValueTag, + sysInfoType13-1 CellValueTag, + sysInfoType13-2 CellValueTag, + sysInfoType13-3 CellValueTag, + sysInfoType13-4 CellValueTag, + sysInfoType14 NULL, + sysInfoType15 CellValueTag, + sysInfoType16 PredefinedConfigIdentityAndValueTag, + sysInfoType17 NULL, + sysInfoTypeSB1 CellValueTag, + sysInfoTypeSB2 CellValueTag, + sysInfoType15-1 CellValueTag, + sysInfoType15-2 SIBOccurrenceIdentityAndValueTag, + sysInfoType15-3 SIBOccurrenceIdentityAndValueTag, + sysInfoType15-4 CellValueTag, + sysInfoType18 CellValueTag, + sysInfoType15-5 CellValueTag, + sysInfoType5bis CellValueTag, + spare2 NULL, + spare1 NULL +} + +SIB-TypeExt ::= CHOICE { + systemInfoType11bis NULL, + systemInfoType15bis NULL, + systemInfoType15-1bis NULL, + systemInfoType15-2bis NULL, + systemInfoType15-3bis NULL, + systemInfoType15-6 NULL, + systemInfoType15-7 NULL, + systemInfoType15-8 NULL +} + +SIB-TypeExt2 ::= CHOICE { + systemInfoType19 NULL, + systemInfoType15-2ter NULL, + systemInfoType20 NULL, + systemInfoType21 NULL, + systemInfoType22 NULL, + spare3 NULL, + spare2 NULL, + spare1 NULL +} + +SIB-TypeExtGANSS ::= CHOICE { + systemInfoType15-1bis NULL, + systemInfoType15-2bis NULL, + systemInfoType15-2ter NULL, + systemInfoType15-3bis NULL, + systemInfoType15-6 NULL, + systemInfoType15-7 NULL, + systemInfoType15-8 NULL, + spare9 NULL, + spare8 NULL, + spare7 NULL, + spare6 NULL, + spare5 NULL, + spare4 NULL, + spare3 NULL, + spare2 NULL, + spare1 NULL +} + +SibOFF ::= ENUMERATED { + so2, so4, so6, so8, so10, + so12, so14, so16, so18, + so20, so22, so24, so26, + so28, so30, so32 } + +SibOFF-List ::= SEQUENCE (SIZE (1..15)) OF + SibOFF + +SysInfoType1 ::= SEQUENCE { + -- Core network IEs + cn-CommonGSM-MAP-NAS-SysInfo NAS-SystemInformationGSM-MAP, + cn-DomainSysInfoList CN-DomainSysInfoList, + -- User equipment IEs + ue-ConnTimersAndConstants UE-ConnTimersAndConstants OPTIONAL, + ue-IdleTimersAndConstants UE-IdleTimersAndConstants OPTIONAL, + -- Extension mechanism for non- release99 information + v3a0NonCriticalExtensions SEQUENCE { + sysInfoType1-v3a0ext SysInfoType1-v3a0ext-IEs, + v860NonCriticalExtentions SEQUENCE { + sysInfoType1-v860ext SysInfoType1-v860ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType1-v3a0ext-IEs ::= SEQUENCE { + ue-ConnTimersAndConstants-v3a0ext UE-ConnTimersAndConstants-v3a0ext, + ue-IdleTimersAndConstants-v3a0ext UE-IdleTimersAndConstants-v3a0ext +} + +SysInfoType1-v860ext-IEs ::= SEQUENCE { + ue-ConnTimersAndConstants UE-ConnTimersAndConstants-v860ext +} + +SysInfoType2 ::= SEQUENCE { + -- UTRAN mobility IEs + ura-IdentityList URA-IdentityList, + -- Extension mechanism for non- release99 information + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +SysInfoType3 ::= SEQUENCE { + sib4indicator BOOLEAN, + -- UTRAN mobility IEs + cellIdentity CellIdentity, + cellSelectReselectInfo CellSelectReselectInfoSIB-3-4, + cellAccessRestriction CellAccessRestriction, + -- Extension mechanism for non- release99 information + v4b0NonCriticalExtensions SEQUENCE { + sysInfoType3-v4b0ext SysInfoType3-v4b0ext-IEs, + v590NonCriticalExtension SEQUENCE { + sysInfoType3-v590ext SysInfoType3-v590ext, + v5c0NoncriticalExtension SEQUENCE { + sysInfoType3-v5c0ext SysInfoType3-v5c0ext-IEs, + v670NonCriticalExtension SEQUENCE { + sysInfoType3-v670ext SysInfoType3-v670ext, + v770NonCriticalExtension SEQUENCE { + sysInfoType3-v770ext SysInfoType3-v770ext-IEs, + v830NonCriticalExtension SEQUENCE { + sysInfoType3-v830ext SysInfoType3-v830ext-IEs, + v860NonCriticalExtension SEQUENCE { + sysInfoType3-v860ext SysInfoType3-v860ext-IEs, + v870NonCriticalExtension SEQUENCE { + sysInfoType3-v870ext SysInfoType3-v870ext-IEs, + v900NonCriticalExtension SEQUENCE { + sysInfoType3-v920ext SysInfoType3-v920ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType3-v4b0ext-IEs ::= SEQUENCE { + mapping-LCR Mapping-LCR-r4 OPTIONAL +} + +SysInfoType3-v590ext ::= SEQUENCE { + cellSelectReselectInfo-v590ext CellSelectReselectInfo-v590ext OPTIONAL +} + +SysInfoType3-v5c0ext-IEs ::= SEQUENCE { + cellSelectReselectInfoTreselectionScaling-v5c0ext + CellSelectReselectInfoTreselectionScaling-v5c0ext OPTIONAL +} + +SysInfoType3-v670ext ::= SEQUENCE { + domainSpecificAccessRestrictionParametersForPLMNOfMIB + DomainSpecificAccessRestrictionParam-v670ext OPTIONAL, + domainSpecificAccessRestictionForSharedNetwork + DomainSpecificAccessRestrictionForSharedNetwork-v670ext OPTIONAL +} + +SysInfoType3-v770ext-IEs ::= SEQUENCE { + deferredMeasurementControlReadingSupport + DeferredMeasurementControlReadingSupport OPTIONAL, + q-QualMin-Offset Q-QualMin-Offset OPTIONAL, + q-RxlevMin-Offset Q-RxlevMin-Offset OPTIONAL, + mbsfnOnlyService MBSFNOnlyService OPTIONAL +} + +SysInfoType3-v830ext-IEs ::= SEQUENCE { + pagingPermissionWithAccessControlParametersForPLMNOfMIB + PagingPermissionWithAccessControlParameters OPTIONAL, + pagingPermissionWithAccessControlParametersForSharedNetwork + PagingPermissionWithAccessControlForSharedNetwork OPTIONAL +} + +SysInfoType3-v860ext-IEs ::= SEQUENCE { + csgIdentity CSG-Identity OPTIONAL, + csg-PSCSplitInfo CSG-PSCSplitInfo OPTIONAL +} + +SysInfoType3-v870ext-IEs ::= SEQUENCE { + cellAccessRestriction CellAccessRestriction-v870ext OPTIONAL +} + +SysInfoType3-v920ext-IEs ::= SEQUENCE { + imsEmergencySupportIndicator ENUMERATED { supported } OPTIONAL +} + +SysInfoType4 ::= SEQUENCE { + -- UTRAN mobility IEs + cellIdentity CellIdentity, + cellSelectReselectInfo CellSelectReselectInfoSIB-3-4, + cellAccessRestriction CellAccessRestriction, + -- Extension mechanism for non- release99 information + v4b0NonCriticalExtensions SEQUENCE { + sysInfoType4-v4b0ext SysInfoType4-v4b0ext-IEs, + v590NonCriticalExtension SEQUENCE { + sysInfoType4-v590ext SysInfoType4-v590ext, + v5b0NonCriticalExtension SEQUENCE { + sysInfoType4-v5b0ext SysInfoType4-v5b0ext-IEs, + v5c0NonCriticalExtension SEQUENCE { + sysInfoType4-v5c0ext SysInfoType4-v5c0ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType4-v4b0ext-IEs ::= SEQUENCE { + mapping-LCR Mapping-LCR-r4 OPTIONAL +} + + +SysInfoType4-v590ext ::= SEQUENCE { + cellSelectReselectInfo-v590ext CellSelectReselectInfo-v590ext OPTIONAL +} + +SysInfoType4-v5b0ext-IEs ::= SEQUENCE { + cellSelectReselectInfoPCHFACH-v5b0ext CellSelectReselectInfoPCHFACH-v5b0ext OPTIONAL +} + +SysInfoType4-v5c0ext-IEs ::= SEQUENCE { + cellSelectReselectInfoTreselectionScaling-v5c0ext + CellSelectReselectInfoTreselectionScaling-v5c0ext OPTIONAL +} + +SysInfoType5 ::= SEQUENCE { + sib6indicator BOOLEAN, + -- Physical channel IEs + pich-PowerOffset PICH-PowerOffset, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + aich-PowerOffset AICH-PowerOffset + }, + tdd SEQUENCE { + -- If PDSCH/PUSCH is configured for 1.28Mcps or 7.68Mcps TDD, the following IEs should be absent + -- and the info included in the respective tdd128SpecificInfo or tdd768SpecificInfo instead. + -- If PDSCH/PUSCH is configured for 3.84Mcps TDD in R5, HCR-r5-SpecificInfo should also be + -- included. + pusch-SysInfoList-SFN PUSCH-SysInfoList-SFN OPTIONAL, + pdsch-SysInfoList-SFN PDSCH-SysInfoList-SFN OPTIONAL, + openLoopPowerControl-TDD OpenLoopPowerControl-TDD + } + }, + primaryCCPCH-Info PrimaryCCPCH-Info OPTIONAL, + prach-SystemInformationList PRACH-SystemInformationList, + sCCPCH-SystemInformationList SCCPCH-SystemInformationList, + -- cbs-DRX-Level1Information is conditional on any of the CTCH indicator IEs in + -- sCCPCH-SystemInformationList + cbs-DRX-Level1Information CBS-DRX-Level1Information OPTIONAL, + -- Extension mechanism for non- release99 information + v4b0NonCriticalExtensions SEQUENCE { + sysInfoType5-v4b0ext SysInfoType5-v4b0ext-IEs OPTIONAL, + -- Extension mechanism for non- rel-4 information + v590NonCriticalExtensions SEQUENCE { + sysInfoType5-v590ext SysInfoType5-v590ext-IEs OPTIONAL, + v650NonCriticalExtensions SEQUENCE { + sysInfoType5-v650ext SysInfoType5-v650ext-IEs OPTIONAL, + v680NonCriticalExtensions SEQUENCE { + sysInfoType5-v680ext SysInfoType5-v680ext-IEs OPTIONAL, + v690NonCriticalExtensions SEQUENCE { + sysInfoType5-v690ext SysInfoType5-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + sysInfoType5-v770ext SysInfoType5-v770ext-IEs, + v860NonCriticalExtensions SEQUENCE { + sysInfoType5-v860ext SysInfoType5-v860ext-IEs, + v890NonCriticalExtensions SEQUENCE { + sysInfoType5-v890ext SysInfoType5-v890ext-IEs, + v8b0NonCriticalExtensions SEQUENCE { + sysInfoType5-v8b0ext + SysInfoType5-v8b0ext-IEs, + v8d0NonCriticalExtensions SEQUENCE { + sysInfoType5-v8d0ext + SysInfoType5-v8d0ext-IEs, + va40NonCriticalExtensions SEQUENCE { + sysInfoType5-va40ext + SysInfoType5-va40ext-IEs, + va80NonCriticalExtensions SEQUENCE { + sysInfoType5-va80ext SysInfoType5-va80ext-IEs, + vb50NonCriticalExtensions + SysInfoType5-NonCriticalExtensions-vb50-IEs + OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType5-v4b0ext-IEs ::= SEQUENCE { + --The following IE PNBSCH-Allocation-r4 shall be used for 3.84Mcps TDD only. + pNBSCH-Allocation-r4 PNBSCH-Allocation-r4 OPTIONAL, + -- In case of TDD, the following IE is included instead of the + -- IE up-IPDL-Parameter in up-OTDOA-AssistanceData. + openLoopPowerControl-IPDL-TDD OpenLoopPowerControl-IPDL-TDD-r4 OPTIONAL, +-- If SysInfoType5 is sent to describe a 1.28Mcps TDD cell, the IE PRACH-RACH-Info included in +-- PRACH-SystemInformationList shall be ignored, the IE PRACH-Partitioning and the +-- IE rach-TransportFormatSet shall be absent and the corresponding IE in the following +-- PRACH-SystemInformationList-LCR-r4 shall be used + prach-SystemInformationList-LCR-r4 PRACH-SystemInformationList-LCR-r4 OPTIONAL, + tdd128SpecificInfo SEQUENCE { + pusch-SysInfoList-SFN PUSCH-SysInfoList-SFN-LCR-r4 OPTIONAL, + pdsch-SysInfoList-SFN PDSCH-SysInfoList-SFN-LCR-r4 OPTIONAL, + pCCPCH-LCR-Extensions PrimaryCCPCH-Info-LCR-r4-ext OPTIONAL, + sCCPCH-LCR-ExtensionsList SCCPCH-SystemInformationList-LCR-r4-ext + } OPTIONAL, + frequencyBandIndicator RadioFrequencyBandFDD OPTIONAL +} + +SysInfoType5-v590ext-IEs ::= SEQUENCE { + hcr-r5-SpecificInfo SEQUENCE { + pusch-SysInfoList-SFN PUSCH-SysInfoList-SFN-HCR-r5 OPTIONAL, + pdsch-SysInfoList-SFN PDSCH-SysInfoList-SFN-HCR-r5 OPTIONAL + } OPTIONAL +} + +SysInfoType5-v650ext-IEs ::= SEQUENCE { + frequencyBandIndicator2 RadioFrequencyBandFDD2 +} + +SysInfoType5-v680ext-IEs ::= SEQUENCE { + -- TABULAR: HSDPA Cell Indicator is MD in tabular description + -- Default value is 'HSDPA Capability not indicated' + hsdpa-CellIndicator ENUMERATED { hsdpa-CapableCell } OPTIONAL +} + +SysInfoType5-v690ext-IEs ::= SEQUENCE { + -- TABULAR: E-DCH Cell Indicator is MD in tabular description + -- Default value is 'E-DCH Capability not indicated' + edch-CellIndicator ENUMERATED { edch-CapableCell } OPTIONAL, + sccpch-SystemInformation-MBMS CHOICE { + mcchOnSCCPCHusedForNonMBMS MBMS-MCCH-ConfigurationInfo-r6, + mcchOnSCCPCHusedOnlyForMBMS SCCPCH-SystemInformation-MBMS-r6 + } OPTIONAL, + additionalPRACH-TF-and-TFCS-CCCH-List AdditionalPRACH-TF-and-TFCS-CCCH-List OPTIONAL, + cBS-DRX-Level1Information-extension CBS-DRX-Level1Information-extension-r6 OPTIONAL +} + +SysInfoType5-v770ext-IEs ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + hs-dsch-CommonSystemInformation HS-DSCH-CommonSystemInformation, + hs-dsch-PagingSystemInformation HS-DSCH-PagingSystemInformation OPTIONAL + }, + tdd768 SEQUENCE { + pusch-SysInfoList-SFN PUSCH-SysInfoList-SFN-VHCR OPTIONAL, + pdsch-SysInfoList-SFN PDSCH-SysInfoList-VHCR-r7 OPTIONAL, + -- If SysInfoType5 is sent to configure a 7.68Mcps TDD cell, the 'prach-RACH-Info' in + -- IE PRACH-SystemInformationList shall be ignored, 'prach-Partitioning' shall be absent + -- and the corresponding IE in the following IE PRACH-SystemInformationList-VHCR-r7 + -- shall be used instead. + prach-SystemInformationList PRACH-SystemInformationList-VHCR-r7 OPTIONAL + }, + tdd128 SEQUENCE { + prach-SystemInformationList PRACH-SystemInformationList-LCR-v770ext OPTIONAL + } + } OPTIONAL, + -- If SysInfoType5 is sent to configure a 7.68 Mcps TDD cell (in any mode) or a 3.84 Mcps TDD + -- cell operating in MBSFN mode, IE SCCPCH-SystemInformationList-HCR-VHCR-r7 is used, otherwise + -- IE SCCPCH-SystemInformationList-r6 is used. + sccpch-SystemInformationList SCCPCH-SystemInformationList-HCR-VHCR-r7 OPTIONAL, + sccpch-SystemInformation-MBMS CHOICE { + -- If choice is 'mcchOnSCCPCHusedForNonMBMS', IE MBMS-MCCH-ConfigurationInfo-r6 is used. + -- If choice is 'mcchOnSCCPCHusedOnlyForMBMS', IE MBMS-MCCH-ConfigurationInfo-r7 is used + -- to configure a 7.68Mcps TDD cell or a cell operating in MBSFN mode, otherwise IE + -- SCCPCH-SystemInformation-MBMS-r6 is used. + mcchOnSCCPCHusedOnlyForMBMS SCCPCH-SystemInformation-MBMS-r7 + } OPTIONAL, + tDD-MBSFNInformation TDD-MBSFNInformation OPTIONAL +} + +SysInfoType5-v860ext-IEs ::= SEQUENCE { + -- The field 'dummy' shall be marked absent in SysInfoType5 and SysInfoType5bis. A failure to + -- comply with this requirement may prevent the UE to receive any service in the cell. The UE + -- may treat the cell as barred. + dummy SEQUENCE {} OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + hs-dsch-DrxCellfach-info HS-DSCH-DrxCellfach-info OPTIONAL + }, + tdd128 SEQUENCE { + hs-dsch-CommonSysInfo SEQUENCE { + hs-dsch-CommonSystemInformation HS-DSCH-CommonSystemInformation-TDD128, + hs-dsch-PagingSystemInformation HS-DSCH-PagingSystemInformation-TDD128 OPTIONAL + } OPTIONAL, + hs-dsch-DrxCellfach-info HS-DSCH-DrxCellfach-info-TDD128 OPTIONAL + } + } +} + +SysInfoType5-v890ext-IEs ::= SEQUENCE { + secondFrequencyInfo FrequencyInfoTDD OPTIONAL, + commonEDCHSystemInfo CommonEDCHSystemInfo OPTIONAL +} + +SysInfoType5-v8b0ext-IEs ::= SEQUENCE { + tresetUsageIndicator ENUMERATED { true } OPTIONAL, + upPCHpositionInfo UpPCHposition-LCR OPTIONAL +} + +SysInfoType5-v8d0ext-IEs ::= SEQUENCE { + commonEDCHSystemInfoFDD CommonEDCHSystemInfoFDD OPTIONAL +} + +SysInfoType5-va40ext-IEs ::= SEQUENCE { + frequencyBandsIndicatorSupport FrequencyBandsIndicatorSupport OPTIONAL, + frequencyBandIndicator3 RadioFrequencyBandFDD3 OPTIONAL +} + +SysInfoType5-va80ext-IEs ::= SEQUENCE { + multipleFrequencyBandIndicatorListFDD MultipleFrequencyBandIndicatorListFDD OPTIONAL +} + +SysInfoType5-NonCriticalExtensions-vb50-IEs::= SEQUENCE { + sysInfoType5-vb50ext SysInfoType5-vb50ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +SysInfoType5-vb50ext-IEs ::= SEQUENCE { + sib22indicator BOOLEAN, + cellUpdateMessageOptimisedEncoding ENUMERATED { true } OPTIONAL +} + +-- SysInfoType5bis uses the same structure as SysInfoType5 +SysInfoType5bis ::= SysInfoType5 + +SysInfoType6 ::= SEQUENCE { + -- Physical channel IEs + pich-PowerOffset PICH-PowerOffset, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + aich-PowerOffset AICH-PowerOffset, + -- dummy is not used in this version of specification, it should + -- not be sent and if received it should be ignored. + dummy CSICH-PowerOffset OPTIONAL + }, + tdd SEQUENCE { + -- If PDSCH/PUSCH is configured for 1.28Mcps TDD, pusch-SysInfoList-SFN, + -- pdsch-SysInfoList-SFN and openLoopPowerControl-TDD should be absent + -- and the info included in the tdd128SpecificInfo instead. + -- If PDSCH/PUSCH is configured for 7.68Mcps TDD, pusch-SysInfoList-SFN + -- and pdsch-SysInfoList-SFN should be absent and the info included in the + -- tdd768SpecificInfo instead. + -- If PDSCH/PUSCH is configured for 3.84Mcps TDD in R5, HCR-r5-SpecificInfo should + -- also be included. + pusch-SysInfoList-SFN PUSCH-SysInfoList-SFN OPTIONAL, + pdsch-SysInfoList-SFN PDSCH-SysInfoList-SFN OPTIONAL, + openLoopPowerControl-TDD OpenLoopPowerControl-TDD + } + }, + primaryCCPCH-Info PrimaryCCPCH-Info OPTIONAL, + prach-SystemInformationList PRACH-SystemInformationList OPTIONAL, + sCCPCH-SystemInformationList SCCPCH-SystemInformationList OPTIONAL, + cbs-DRX-Level1Information CBS-DRX-Level1Information OPTIONAL, + -- Conditional on any of the CTCH indicator IEs in + -- sCCPCH-SystemInformationList + -- Extension mechanism for non- release99 information + v4b0NonCriticalExtensions SEQUENCE { + sysInfoType6-v4b0ext SysInfoType6-v4b0ext-IEs OPTIONAL, + -- Extension mechanism for non- rel-4 information + v590NonCriticalExtensions SEQUENCE { + sysInfoType6-v590ext SysInfoType6-v590ext-IEs OPTIONAL, + v650nonCriticalExtensions SEQUENCE { + sysInfoType6-v650ext SysInfoType6-v650ext-IEs OPTIONAL, + v690nonCriticalExtensions SEQUENCE { + sysInfoType6-v690ext SysInfoType6-v690ext-IEs, + v770NonCriticalExtensions SEQUENCE { + sysInfoType6-v770ext SysInfoType6-v770ext-IEs, + va40NonCriticalExtensions SEQUENCE { + sysInfoType6-va40ext SysInfoType6-va40ext-IEs, + va80NonCriticalExtensions SEQUENCE { + sysInfoType6-va80ext SysInfoType6-va80ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType6-v4b0ext-IEs ::= SEQUENCE { + -- openLoopPowerControl-IPDL-TDD is present only if IPDLs are applied for TDD + openLoopPowerControl-IPDL-TDD OpenLoopPowerControl-IPDL-TDD-r4 OPTIONAL, + -- If SysInfoType6 is sent to describe a 1.28Mcps TDD cell, the IE PRACH-RACH-Info included + -- in PRACH-SystemInformationList shall be ignored, the IE PRACH-Partitioning and the + -- IE rach-TransportFormatSet shall be absent and the corresponding IEs in the following + -- PRACH-SystemInformationList-LCR-r4 shall be used + prach-SystemInformationList-LCR-r4 PRACH-SystemInformationList-LCR-r4 OPTIONAL, + tdd128SpecificInfo SEQUENCE { + pusch-SysInfoList-SFN PUSCH-SysInfoList-SFN-LCR-r4 OPTIONAL, + pdsch-SysInfoList-SFN PDSCH-SysInfoList-SFN-LCR-r4 OPTIONAL, + pCCPCH-LCR-Extensions PrimaryCCPCH-Info-LCR-r4-ext OPTIONAL, + sCCPCH-LCR-ExtensionsList SCCPCH-SystemInformationList-LCR-r4-ext OPTIONAL + } OPTIONAL, + frequencyBandIndicator RadioFrequencyBandFDD OPTIONAL +} + +SysInfoType6-v590ext-IEs ::= SEQUENCE { + hcr-r5-SpecificInfo SEQUENCE { + pusch-SysInfoList-SFN PUSCH-SysInfoList-SFN-HCR-r5 OPTIONAL, + pdsch-SysInfoList-SFN PDSCH-SysInfoList-SFN-HCR-r5 OPTIONAL + } OPTIONAL +} + +SysInfoType6-v650ext-IEs ::= SEQUENCE { + frequencyBandIndicator2 RadioFrequencyBandFDD2 +} + +SysInfoType6-v690ext-IEs ::= SEQUENCE { + additionalPRACH-TF-and-TFCS-CCCH-List AdditionalPRACH-TF-and-TFCS-CCCH-List OPTIONAL +} + +SysInfoType6-v770ext-IEs ::= SEQUENCE { + tdd768SpecificInfo SEQUENCE { + pusch-SysInfoList-SFN PUSCH-SysInfoList-SFN-VHCR OPTIONAL, + pdsch-SysInfoList-SFN PDSCH-SysInfoList-VHCR-r7 OPTIONAL, + -- If SysInfoType6 is sent to configure a 7.68Mcps TDD cell, the 'prach-RACH-Info' in + -- IE PRACH-SystemInformationList shall be ignored, 'prach-Partitioning' shall be absent + -- and the corresponding IE in the following IE PRACH-SystemInformationList-VHCR-r7 + -- shall be used instead. + prach-SystemInformationList PRACH-SystemInformationList-VHCR-r7 OPTIONAL + } OPTIONAL, + -- If SysInfoType6 is sent to configure a 7.68 Mcps TDD cell, + -- IE SCCPCH-SystemInformationList-HCR-VHCR-r7 is used, otherwise + -- IE SCCPCH-SystemInformationList-r6 is used. + sccpch-SystemInformationList SCCPCH-SystemInformationList-HCR-VHCR-r7 OPTIONAL +} + +SysInfoType6-va40ext-IEs ::= SEQUENCE { + frequencyBandIndicator3 RadioFrequencyBandFDD3 OPTIONAL +} + +SysInfoType6-va80ext-IEs ::= SEQUENCE { + multipleFrequencyBandIndicatorListFDD MultipleFrequencyBandIndicatorListFDD OPTIONAL +} + +SysInfoType7 ::= SEQUENCE { + -- Physical channel IEs + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ul-Interference UL-Interference + }, + tdd NULL + }, + prach-Information-SIB5-List DynamicPersistenceLevelList, + prach-Information-SIB6-List DynamicPersistenceLevelList OPTIONAL, + expirationTimeFactor ExpirationTimeFactor OPTIONAL, + -- Extension mechanism for non- release99 information + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +-- This IE is not used in this version of the specification. +-- It was kept only for backwards compatibility reasons +SysInfoType8 ::= SEQUENCE { + -- User equipment IEs + -- dummy1, dummy2, dummy3 are not used in this version of the specification and + -- they should be ignored by the receiver. + dummy1 CPCH-Parameters, + -- Physical channel IEs + dummy2 CPCH-SetInfoList, + dummy3 CSICH-PowerOffset, + -- Extension mechanism for non- release99 information + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +-- This IE is not used in this version of the specification. +-- It was kept only for backwards compatibility reasons +SysInfoType9 ::= SEQUENCE { + -- Physical channel IEs + -- dummy is not used in this version of the specification and + -- it should be ignored by the receiver. + dummy CPCH-PersistenceLevelsList, + -- Extension mechanism for non- release99 information + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +-- This IE is not used in this version of the specification. +-- It was kept only for backwards compatibility reasons +SysInfoType10 ::= SEQUENCE { + -- User equipment IEs + -- dummy is not used in this version of the specification, it should + -- not be sent and if received it should be ignored. + dummy DRAC-SysInfoList, + -- Extension mechanism for non- release99 information + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +SysInfoType11 ::= SEQUENCE { + sib12indicator BOOLEAN, + -- Measurement IEs + fach-MeasurementOccasionInfo FACH-MeasurementOccasionInfo OPTIONAL, + measurementControlSysInfo MeasurementControlSysInfo, + -- Extension mechanism for non- release99 information + v4b0NonCriticalExtensions SEQUENCE { + sysInfoType11-v4b0ext SysInfoType11-v4b0ext-IEs OPTIONAL, + v590NonCriticalExtension SEQUENCE { + sysInfoType11-v590ext SysInfoType11-v590ext-IEs, + v690NonCriticalExtensions SEQUENCE { + sysInfoType11-v690ext SysInfoType11-v690ext-IEs, + v6b0NonCriticalExtensions SEQUENCE { + sysInfoType11-v6b0ext SysInfoType11-v6b0ext-IEs, + v770NonCriticalExtensions SEQUENCE { + sysInfoType11-v770ext SysInfoType11-v770ext-IEs, + v7b0NonCriticalExtensions SEQUENCE { + sysInfoType11-v7b0ext SysInfoType11-v7b0ext-IEs, + v860NonCriticalExtensions SEQUENCE { + sysInfoType11-v860ext SysInfoType11-v860ext-IEs, + va80NonCriticalExtensions SEQUENCE { + sysInfoType11-va80ext SysInfoType11-va80ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType11-v4b0ext-IEs ::= SEQUENCE { + fach-MeasurementOccasionInfo-LCR-Ext FACH-MeasurementOccasionInfo-LCR-r4-ext OPTIONAL, + measurementControlSysInfo-LCR MeasurementControlSysInfo-LCR-r4-ext +} + +SysInfoType11-v590ext-IEs ::= SEQUENCE { + --The order of the list corresponds to the order of cell in newIntraFrequencyCellInfoList + newIntraFrequencyCellInfoList-v590ext SEQUENCE (SIZE (1..maxCellMeas)) OF + CellSelectReselectInfo-v590ext OPTIONAL, + --The order of the list corresponds to the order of cell in newInterFrequencyCellInfoList + newInterFrequencyCellInfoList-v590ext SEQUENCE (SIZE (1..maxCellMeas)) OF + CellSelectReselectInfo-v590ext OPTIONAL, + --The order of the list corresponds to the order of cell in newInterRATCellInfoList + newInterRATCellInfoList-v590ext SEQUENCE (SIZE (1..maxCellMeas)) OF + CellSelectReselectInfo-v590ext OPTIONAL, + intraFreqEventCriteriaList-v590ext Intra-FreqEventCriteriaList-v590ext OPTIONAL, + intraFreqReportingCriteria-1b-r5 IntraFreqReportingCriteria-1b-r5 OPTIONAL, + intraFreqEvent-1d-r5 IntraFreqEvent-1d-r5 OPTIONAL +} + +SysInfoType11-v690ext-IEs ::= SEQUENCE { + -- dummy is not used in this version of the specification. If received, the UE behaviour + -- is not specified. + dummy Dummy-InterFreqRACHReportingInfo OPTIONAL +} + +SysInfoType11-v6b0ext-IEs ::= SEQUENCE { + -- Measurement IEs + interFreqRACHReportingInfo InterFreqRACHReportingInfo OPTIONAL +} + +SysInfoType11-v770ext-IEs ::= SEQUENCE { + -- Measurement IEs + mbsfnFrequencyList MBSFNFrequencyList OPTIONAL +} + +SysInfoType11-v7b0ext-IEs ::= SEQUENCE { + -- Measurement IEs + newInterFreqCellList NewInterFreqCellList-v7b0ext OPTIONAL +} + +SysInfoType11-v860ext-IEs ::= SEQUENCE { + -- Measurement IEs + mbsfnFrequencyList MBSFNFrequencyList-v860ext OPTIONAL +} + +SysInfoType11-va80ext-IEs ::= SEQUENCE { + -- Measurement IEs + multipleFrequencyInfoListFDD MultipleFrequencyInfoListFDD OPTIONAL +} + +SysInfoType11bis ::= SEQUENCE { + -- Measurement IEs + measurementControlSysInfo MeasurementControlSysInfoExtension OPTIONAL, + measurementControlSysInfo-LCR MeasurementControlSysInfoExtension-LCR-r4 OPTIONAL, + measurementControlSysInfoExtensionAddon-r5 + MeasurementControlSysInfoExtensionAddon-r5 OPTIONAL, + -- Extension mechanism for non-release99 information + v7b0NonCriticalExtensions SEQUENCE { + sysInfoType11bis-v7b0ext SysInfoType11bis-v7b0ext-IEs, + v860NonCriticalExtensions SEQUENCE { + sysInfoType11bis-v860ext SysInfoType11bis-v860ext-IEs, + va80NonCriticalExtensions SEQUENCE { + sysInfoType11bis-va80ext SysInfoType11bis-va80ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType11bis-v7b0ext-IEs ::= SEQUENCE { + -- Measurement IEs + newInterFreqCellList NewInterFreqCellList-v7b0ext OPTIONAL +} + +SysInfoType11bis-v860ext-IEs ::= SEQUENCE { + -- UTRAN mobility IEs + csg-PSCSplitInfo CSG-PSCSplitInfo OPTIONAL, + csg-DedicatedFrequencyInfoList CSG-DedicatedFrequencyInfoList OPTIONAL +} + +SysInfoType11bis-va80ext-IEs ::= SEQUENCE { + -- Measurement IEs + multipleFrequencyInfoListFDD MultipleFrequencyInfoListFDD OPTIONAL +} + +SysInfoType12 ::= SEQUENCE { + -- Measurement IEs + fach-MeasurementOccasionInfo FACH-MeasurementOccasionInfo OPTIONAL, + measurementControlSysInfo MeasurementControlSysInfo, + -- Extension mechanism for non- release99 information + v4b0NonCriticalExtensions SEQUENCE { + sysInfoType12-v4b0ext SysInfoType12-v4b0ext-IEs OPTIONAL, + v590NonCriticalExtension SEQUENCE { + sysInfoType12-v590ext SysInfoType12-v590ext-IEs, + v690NonCriticalExtensions SEQUENCE { + sysInfoType12-v690ext SysInfoType12-v690ext-IEs, + v6b0NonCriticalExtensions SEQUENCE { + sysInfoType12-v6b0ext SysInfoType12-v6b0ext-IEs, + v7b0NonCriticalExtensions SEQUENCE { + sysInfoType12-v7b0ext SysInfoType12-v7b0ext-IEs, + va80NonCriticalExtensions SEQUENCE { + sysInfoType12-va80ext SysInfoType12-va80ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType12-v4b0ext-IEs ::= SEQUENCE { + fach-MeasurementOccasionInfo-LCR-Ext FACH-MeasurementOccasionInfo-LCR-r4-ext OPTIONAL, + measurementControlSysInfo-LCR MeasurementControlSysInfo-LCR-r4-ext +} + +SysInfoType12-v590ext-IEs ::= SEQUENCE { + --The order of the list corresponds to the order of cell in newIntraFrequencyCellInfoList + newIntraFrequencyCellInfoList-v590ext SEQUENCE (SIZE (1..maxCellMeas)) OF + CellSelectReselectInfo-v590ext OPTIONAL, + --The order of the list corresponds to the order of cell in newInterFrequencyCellInfoList + newInterFrequencyCellInfoList-v590ext SEQUENCE (SIZE (1..maxCellMeas)) OF + CellSelectReselectInfo-v590ext OPTIONAL, + --The order of the list corresponds to the order of cell in newInterRATCellInfoList + newInterRATCellInfoList-v590ext SEQUENCE (SIZE (1..maxCellMeas)) OF + CellSelectReselectInfo-v590ext OPTIONAL, + intraFreqEventCriteriaList-v590ext Intra-FreqEventCriteriaList-v590ext OPTIONAL, + intraFreqReportingCriteria-1b-r5 IntraFreqReportingCriteria-1b-r5 OPTIONAL, + intraFreqEvent-1d-r5 IntraFreqEvent-1d-r5 OPTIONAL +} + +SysInfoType12-v690ext-IEs ::= SEQUENCE { + -- dummy is not used in this version of the specification. If received, the UE behaviour + -- is not specified. + dummy Dummy-InterFreqRACHReportingInfo OPTIONAL +} + +SysInfoType12-v6b0ext-IEs ::= SEQUENCE { + -- Measurement IEs + interFreqRACHReportingInfo InterFreqRACHReportingInfo OPTIONAL +} + +SysInfoType12-v7b0ext-IEs ::= SEQUENCE { + -- Measurement IEs + newInterFreqCellList NewInterFreqCellList-v7b0ext OPTIONAL +} + +SysInfoType12-va80ext-IEs ::= SEQUENCE { + -- Measurement IEs + multipleFrequencyInfoListFDD MultipleFrequencyInfoListFDD OPTIONAL +} + +SysInfoType13 ::= SEQUENCE { + -- Core network IEs + cn-DomainSysInfoList CN-DomainSysInfoList, + -- User equipment IEs + ue-IdleTimersAndConstants UE-IdleTimersAndConstants OPTIONAL, + capabilityUpdateRequirement CapabilityUpdateRequirement OPTIONAL, + -- Extension mechanism for non- release99 information + v3a0NonCriticalExtensions SEQUENCE { + sysInfoType13-v3a0ext SysInfoType13-v3a0ext-IEs, + v4b0NonCriticalExtensions SEQUENCE { + sysInfoType13-v4b0ext SysInfoType13-v4b0ext-IEs, + -- Extension mechanism for non- release99 information + v770NonCriticalExtensions SEQUENCE { + sysInfoType13-v770ext SysInfoType13-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType13-v3a0ext-IEs ::= SEQUENCE { + ue-IdleTimersAndConstants-v3a0ext UE-IdleTimersAndConstants-v3a0ext +} + +SysInfoType13-v4b0ext-IEs ::= SEQUENCE { + capabilityUpdateRequirement-r4Ext CapabilityUpdateRequirement-r4-ext OPTIONAL +} + +SysInfoType13-v770ext-IEs ::= SEQUENCE { + capabilityUpdateRequirement CapabilityUpdateRequirement-v770ext OPTIONAL +} + +SysInfoType13-1 ::= SEQUENCE { + -- ANSI-41 IEs + ansi-41-RAND-Information ANSI-41-RAND-Information, + -- Extension mechanism for non- release99 information + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +SysInfoType13-2 ::= SEQUENCE { + -- ANSI-41 IEs + ansi-41-UserZoneID-Information ANSI-41-UserZoneID-Information, + -- Extension mechanism for non- release99 information + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +SysInfoType13-3 ::= SEQUENCE { + -- ANSI-41 IEs + ansi-41-PrivateNeighbourListInfo ANSI-41-PrivateNeighbourListInfo, + -- Extension mechanism for non- release99 information + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +SysInfoType13-4 ::= SEQUENCE { + -- ANSI-41 IEs + ansi-41-GlobalServiceRedirectInfo + ANSI-41-GlobalServiceRedirectInfo, + -- Extension mechanism for non- release99 information + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +SysInfoType14 ::= SEQUENCE { + -- Physical channel IEs + individualTS-InterferenceList IndividualTS-InterferenceList, + expirationTimeFactor ExpirationTimeFactor OPTIONAL, + -- Extension mechanism for non- release99 information + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +SysInfoType15 ::= SEQUENCE { + -- Measurement IEs + ue-positioning-GPS-CipherParameters UE-Positioning-CipherParameters OPTIONAL, + ue-positioning-GPS-ReferenceLocation ReferenceLocation, + ue-positioning-GPS-ReferenceTime UE-Positioning-GPS-ReferenceTime, + ue-positioning-GPS-Real-timeIntegrity BadSatList OPTIONAL, + -- Extension mechanism for non- release99 information + v4b0NonCriticalExtensions SEQUENCE { + sysInfoType15-v4b0ext SysInfoType15-v4b0ext-IEs, + -- Extension mechanism for non- release4 information + v770NonCriticalExtensions SEQUENCE { + sysInfoType15-v770ext SysInfoType15-v770ext-IEs, + va40NonCriticalExtensions SEQUENCE { + sysInfoType15-va40ext SysInfoType15-va40ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType15-v4b0ext-IEs ::= SEQUENCE { + up-Ipdl-Parameters-TDD UE-Positioning-IPDL-Parameters-TDD-r4-ext OPTIONAL +} + +SysInfoType15-v770ext-IEs ::= SEQUENCE { + -- Measurement IEs + ue-Positioning-GPS-ReferenceTime UE-Positioning-GPS-ReferenceTime-v770ext +} + +SysInfoType15-va40ext-IEs ::= SEQUENCE { + -- Measurement IEs + ue-Positioning-GPS-ReferenceTime UE-Positioning-GPS-ReferenceTime-va40ext +} + +SysInfoType15bis ::= SEQUENCE { + -- Measurement IEs + ue-positioning-GANSS-ReferencePosition ReferenceLocationGANSS, + ue-positioning-GANSS-ReferenceTime UE-Positioning-GANSS-ReferenceTime, + ue-positioning-GANSS-IonosphericModel UE-Positioning-GANSS-IonosphericModel OPTIONAL, + -- Extension mechanism for non-release99 information + v860NonCriticalExtensions SEQUENCE { + sysInfoType15bis-v860ext SysInfoType15bis-v860ext-IEs, + va40NonCriticalExtensions SEQUENCE { + sysInfoType15bis-va40ext SysInfoType15bis-va40ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType15bis-v860ext-IEs ::= SEQUENCE { + -- Measurement IEs + ue-Positioning-GANSS-AddIonoModel UE-Positioning-GANSS-AddIonoModel OPTIONAL, + ue-Positioning-GANSS-EarthOrientationPara + UE-Positioning-GANSS-EarthOrientPara OPTIONAL +} + +SysInfoType15bis-va40ext-IEs ::= SEQUENCE { + -- Measurement IEs + ue-positioning-GANSS-ReferenceTime UE-Positioning-GANSS-ReferenceTime-va40ext +} + +SysInfoType15-1 ::= SEQUENCE { + -- DGPS corrections + ue-positioning-GPS-DGPS-Corrections UE-Positioning-GPS-DGPS-Corrections, + -- Extension mechanism for non- release99 information + v920NonCriticalExtensions SEQUENCE { + sysInfoType15-1-v920ext SysInfoType15-1-v920ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +SysInfoType15-1-v920ext-IEs ::= SEQUENCE { + -- Measurement IEs + ue-positioning-GPS-DGPS-Corrections UE-Positioning-GPS-DGPS-Corrections-v920ext +} + +SysInfoType15-1bis ::= SEQUENCE { + -- Measurement IEs + ue-positioning-GANSS-DGANSS-Corrections UE-Positioning-DGANSSCorrections, + -- Extension mechanism for non-release99 information + v920NonCriticalExtensions SEQUENCE { + sysInfoType15-1bis-v920ext SysInfoType15-1bis-v920ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +SysInfoType15-1bis-v920ext-IEs ::= SEQUENCE { + -- Measurement IEs + ue-positioning-GANSS-DGANSS-Corrections UE-Positioning-DGANSSCorrections-v920ext +} + +SysInfoType15-2 ::= SEQUENCE { + -- Ephemeris and clock corrections + transmissionTOW GPS-TOW-1sec, + satID SatID, + ephemerisParameter EphemerisParameter, + -- Extension mechanism for non- release99 information + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +SysInfoType15-2bis ::= SEQUENCE { + -- Measurement IEs + ue-positioning-GANSS-navigationModel UE-Positioning-GANSS-NavigationModel, + -- Extension mechanism for non-release99 information + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +SysInfoType15-2ter ::= SEQUENCE { + -- Measurement IEs + ue-positioning-GANSS-AddNavigationModels UE-Positioning-GANSS-AddNavigationModels, + -- Extension mechanism for non-release99 information + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +SysInfoType15-3 ::= SEQUENCE { + -- Almanac and other data + transmissionTOW GPS-TOW-1sec, + ue-positioning-GPS-Almanac UE-Positioning-GPS-Almanac OPTIONAL, + ue-positioning-GPS-IonosphericModel UE-Positioning-GPS-IonosphericModel OPTIONAL, + ue-positioning-GPS-UTC-Model UE-Positioning-GPS-UTC-Model OPTIONAL, + satMask BIT STRING (SIZE (1..32)) OPTIONAL, + lsbTOW BIT STRING (SIZE (8)) OPTIONAL, + -- Extension mechanism for non- release99 information + va40NonCriticalExtensions SEQUENCE { + sysInfoType15-3-va40ext SysInfoType15-3-va40ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +SysInfoType15-3-va40ext-IEs ::= SEQUENCE { + -- Measurement IEs + ue-positioning-GPS-Almanac UE-Positioning-GPS-Almanac-va40ext OPTIONAL +} + +SysInfoType15-3bis ::= SEQUENCE { + -- Measurement IEs + ue-positioning-GANSS-Almanac UE-Positioning-GANSS-Almanac OPTIONAL, + ue-positioning-GANSS-TimeModels UE-Positioning-GANSS-TimeModels OPTIONAL, + ue-positioning-GANSS-UTC-Model UE-Positioning-GANSS-UTCModel OPTIONAL, + -- Extension mechanism for non-release99 information + v860NonCriticalExtensions SEQUENCE { + sysInfoType15-3bis-v860ext SysInfoType15-3bis-v860ext-IEs, + va40NonCriticalExtensions SEQUENCE { + sysInfoType15-3bis-va40ext SysInfoType15-3bis-va40ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType15-3bis-v860ext-IEs ::= SEQUENCE { + -- Measurement IEs + ue-Positioning-GANSS-Almanac UE-Positioning-GANSS-Almanac-v860ext OPTIONAL, + ue-Positioning-GANSS-AddUTCModels UE-Positioning-GANSS-AddUTCModels OPTIONAL, + ue-Positioning-GANSS-AuxiliaryInfo UE-Positioning-GANSS-AuxiliaryInfo OPTIONAL +} + +SysInfoType15-3bis-va40ext-IEs ::= SEQUENCE { + -- Measurement IEs + ue-Positioning-GANSS-Almanac UE-Positioning-GANSS-Almanac-va40ext OPTIONAL, + ue-positioning-GANSS-TimeModels UE-Positioning-GANSS-TimeModels-va40ext OPTIONAL +} + +SysInfoType15-4 ::= SEQUENCE { + -- Measurement IEs + ue-positioning-OTDOA-CipherParameters UE-Positioning-CipherParameters OPTIONAL, + ue-positioning-OTDOA-AssistanceData UE-Positioning-OTDOA-AssistanceData, + v3a0NonCriticalExtensions SEQUENCE { + sysInfoType15-4-v3a0ext SysInfoType15-4-v3a0ext, + -- Extension mechanism for non- release99 information + v4b0NonCriticalExtensions SEQUENCE { + sysInfoType15-4-v4b0ext SysInfoType15-4-v4b0ext, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType15-4-v3a0ext ::= SEQUENCE { + sfn-Offset-Validity SFN-Offset-Validity OPTIONAL +} + +SysInfoType15-4-v4b0ext ::= SEQUENCE { + ue-Positioning-OTDOA-AssistanceData-r4ext UE-Positioning-OTDOA-AssistanceData-r4ext OPTIONAL +} + +SysInfoType15-5 ::= SEQUENCE { + -- Measurement IEs + ue-positioning-OTDOA-AssistanceData-UEB UE-Positioning-OTDOA-AssistanceData-UEB, + v3a0NonCriticalExtensions SEQUENCE { + sysInfoType15-5-v3a0ext SysInfoType15-5-v3a0ext, + -- Extension mechanism for non- release99 information + v770NonCriticalExtensions SEQUENCE { + sysInfoType15-5-v770ext SysInfoType15-5-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType15-5-v3a0ext ::= SEQUENCE { + sfn-Offset-Validity SFN-Offset-Validity OPTIONAL +} + +SysInfoType15-5-v770ext-IEs ::= SEQUENCE { + ue-Positioning-OTDOA-AssistanceData-UEB-ext + UE-Positioning-OTDOA-AssistanceData-UEB-ext OPTIONAL +} + +SysInfoType15-6 ::= SEQUENCE { + -- Measurement IEs + ue-positioning-GANSS-TOD INTEGER (0..86399), + ue-positioning-GANSS-ReferenceMeasurementInformation + UE-Positioning-GANSS-ReferenceMeasurementInfo, + -- Extension mechanism for non-release99 information + va40NonCriticalExtensions SEQUENCE { + sysInfoType15-6-va40ext SysInfoType15-6-va40ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL +} + +SysInfoType15-6-va40ext-IEs ::= SEQUENCE { + ue-positioning-GANSS-ReferenceMeasurementInformation + UE-Positioning-GANSS-ReferenceMeasurementInfo-va40ext +} + +SysInfoType15-7 ::= SEQUENCE { + -- Measurement IEs + ue-positioning-GANSS-DataBitAssistance UE-Positioning-GANSS-Data-Bit-Assistance, + -- Extension mechanism for non-release99 information + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +SysInfoType15-8 ::= SEQUENCE { + -- Measurement IEs + ue-positioning-GANSS-DataCipheringInfo UE-Positioning-CipherParameters OPTIONAL, + ue-positioning-GANSS-realTimeIntegrity UE-Positioning-GANSS-RealTimeIntegrity OPTIONAL, + -- Extension mechanism for non-release99 information + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +SysInfoType16 ::= SEQUENCE { + -- Radio bearer IEs + preDefinedRadioConfiguration PreDefRadioConfiguration, + -- Extension mechanism for non- release99 information + v770NonCriticalExtensions SEQUENCE { + sysInfoType16-v770ext SysInfoType16-v770ext-IEs, + v920NonCriticalExtensions SEQUENCE { + sysInfoType16-v920ext SysInfoType16-v920ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType16-v770ext-IEs ::= SEQUENCE { + preDefinedRadioConfiguration PreDefRadioConfiguration-v770ext +} + +SysInfoType16-v920ext-IEs ::= SEQUENCE { + preDefinedRadioConfiguration PreDefRadioConfiguration-v920ext +} + +SysInfoType17 ::= SEQUENCE { + -- Physical channel IEs + -- If PDSCH/PUSCH is configured for 1.28Mcps or 7.68Mcps TDD, pusch-SysInfoList and + -- pdsch-SysInfoList should be absent and the info included in the respective + -- tdd128SpecificInfo or tdd768SpecificInfo instead. + -- If PDSCH/PUSCH is configured for 3.84Mcps TDD in R5, HCR-r5-SpecificInfo should also be + -- included. + pusch-SysInfoList PUSCH-SysInfoList OPTIONAL, + pdsch-SysInfoList PDSCH-SysInfoList OPTIONAL, + -- Extension mechanism for non- release99 information + v4b0NonCriticalExtensions SEQUENCE { + sysInfoType17-v4b0ext SysInfoType17-v4b0ext-IEs, + v590NonCriticalExtensions SEQUENCE { + sysInfoType17-v590ext SysInfoType17-v590ext-IEs OPTIONAL, + v770NonCriticalExtensions SEQUENCE { + sysInfoType17-v770ext SysInfoType17-v770ext-IEs, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType17-v4b0ext-IEs ::= SEQUENCE { + tdd128SpecificInfo SEQUENCE { + pusch-SysInfoList PUSCH-SysInfoList-LCR-r4 OPTIONAL, + pdsch-SysInfoList PDSCH-SysInfoList-LCR-r4 OPTIONAL + } OPTIONAL +} + +SysInfoType17-v590ext-IEs ::= SEQUENCE { + hcr-r5-SpecificInfo SEQUENCE { + pusch-SysInfoList PUSCH-SysInfoList-HCR-r5 OPTIONAL, + pdsch-SysInfoList PDSCH-SysInfoList-HCR-r5 OPTIONAL + } OPTIONAL +} + +SysInfoType17-v770ext-IEs ::= SEQUENCE { + tdd768SpecificInfo SEQUENCE { + pusch-SysInfoList-SFN PUSCH-SysInfoList-SFN-VHCR OPTIONAL, + pdsch-SysInfoList-SFN PDSCH-SysInfoList-VHCR-r7 OPTIONAL + } OPTIONAL +} + +SysInfoType18 ::= SEQUENCE { + idleModePLMNIdentities PLMNIdentitiesOfNeighbourCells OPTIONAL, + connectedModePLMNIdentities PLMNIdentitiesOfNeighbourCells OPTIONAL, + -- Extension mechanism for non- release99 information + v6b0NonCriticalExtensions SEQUENCE { + sysInfoType18-v6b0ext SysInfoType18-v6b0ext, + v860NonCriticalExtensions SEQUENCE { + sysInfoType18-v860ext SysInfoType18-v860ext, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType18-v6b0ext ::= SEQUENCE { + idleModePLMNIdentitiesSIB11bis PLMNIdentitiesOfNeighbourCells OPTIONAL, + connectedModePLMNIdentitiesSIB11bis PLMNIdentitiesOfNeighbourCells OPTIONAL +} + +SysInfoType18-v860ext ::= SEQUENCE { + idleModePLMNIdentities PLMNIdentitiesOfNeighbourCells-v860ext OPTIONAL, + connectedModePLMNIdentities PLMNIdentitiesOfNeighbourCells-v860ext OPTIONAL +} + +SysInfoType19 ::= SEQUENCE { + -- Measurement IEs + utra-PriorityInfoList UTRA-PriorityInfoList, + gsm-PriorityInfoList GSM-PriorityInfoList OPTIONAL, + eutra-FrequencyAndPriorityInfoList EUTRA-FrequencyAndPriorityInfoList OPTIONAL, + -- Extension mechanism for non-release8 information + v920NonCriticalExtensions SEQUENCE { + sysInfoType19-v920ext SysInfoType19-v920ext, + va80NonCriticalExtensions SEQUENCE { + sysInfoType19-va80ext SysInfoType19-va80ext, + vb30NonCriticalExtensions SEQUENCE { + sysInfoType19-vb30ext SysInfoType19-vb30ext, + vb50NonCriticalExtensions SEQUENCE { + sysInfoType19-vb50ext SysInfoType19-vb50ext, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoType19-v920ext ::= SEQUENCE { + utra-PriorityInfoList-v920ext UTRA-PriorityInfoList-v920ext, + eutra-FrequencyAndPriorityInfoList-v920ext EUTRA-FrequencyAndPriorityInfoList-v920ext +} + +SysInfoType19-va80ext ::= SEQUENCE { + multipleEutraFrequencyInfoList MultipleEUTRAFrequencyInfoList OPTIONAL +} + +SysInfoType19-vb30ext ::= SEQUENCE { + cell-fach-meas-ind ENUMERATED { high-priority-layers, all-layers } OPTIONAL +} + +SysInfoType19-vb50ext ::= SEQUENCE { + gsmTreselectionScalingFactor TreselectionScalingFactor2 OPTIONAL, + eutraTreselectionScalingFactor TreselectionScalingFactor2 OPTIONAL, + numberOfApplicableEARFCN INTEGER (0..7) OPTIONAL, + eutra-FrequencyAndPriorityInfoList-vb50ext EUTRA-FrequencyAndPriorityInfoList-vb50ext OPTIONAL, + eutra-FrequencyAndPriorityInfoExtensionList EUTRA-FrequencyAndPriorityInfoExtensionList OPTIONAL, + multipleEutraFrequencyInfoExtensionList MultipleEUTRAFrequencyInfoExtensionList OPTIONAL, + -- Measurement IEs + eutra-FrequencyRACHReportingInfo EUTRA-FrequencyRACHReportingInfo OPTIONAL +} + +SysInfoType20 ::= SEQUENCE { + hNBName HNBName OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +SysInfoType21 ::= SEQUENCE { + eab-Parameters EAB-Parameters OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +SysInfoType22 ::= SEQUENCE { +-- In the Tabular there are separate definitions for prach-PreambleForEnhancedUplinkListType1Ext +-- and prach-PreambleForEnhancedUplinkListType2Ext/prach-PreambleForEnhancedUplinkListType3Ext even +-- though the contents are the same. The only difference is in how the IE “Weight” is used in +-- calculating the weight for each signalled PRACH Control Parameters. +-- To simplify the ASN.1, a single definition is used here for all three cases. + prach-PreambleForEnhancedUplinkListType1Ext + PRACH-PreambleForEnhancedUplinkExtList OPTIONAL, + prach-PreambleForEnhancedUplinkListType2Ext + PRACH-PreambleForEnhancedUplinkExtList OPTIONAL, + prach-PreambleForEnhancedUplinkListType3Ext + PRACH-PreambleForEnhancedUplinkExtList OPTIONAL, + concurrent-Deployment-2ms-10ms-TTI Concurrent-Deployment-2ms-10ms-TTI OPTIONAL, + nodeB-Trigger-HS-DPCCH-Transmission NodeB-Trigger-HS-DPCCH-Transmission OPTIONAL, + fallback-R99-PRACH-info Fallback-R99-PRACH-info-IEs OPTIONAL, + commonEDCHResourceConfigInfoListExt CommonEDCHResourceConfigInfoListExt OPTIONAL, + hs-dsch-DrxCellfach-SecondDrx-info HS-DSCH-DrxCellfach-SecondDrx-info OPTIONAL, + nonCriticalExtensions SEQUENCE {} OPTIONAL +} + +SysInfoTypeSB1 ::= SEQUENCE { + -- Other IEs + sib-ReferenceList SIB-ReferenceList, + -- Extension mechanism for non- release99 information + v6b0NonCriticalExtensions SEQUENCE { + sysInfoTypeSB1-v6b0ext SysInfoTypeSB1-v6b0ext, + v860NonCriticalExtensions SEQUENCE { + sysInfoTypeSB1-v860ext SysInfoTypeSB1-v860ext, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoTypeSB1-v6b0ext ::= SEQUENCE { + extSIBTypeInfoSchedulingInfo-List ExtSIBTypeInfoSchedulingInfo-List OPTIONAL +} + +SysInfoTypeSB1-v860ext ::= SEQUENCE { + extSIBTypeInfoSchedulingInfo-List ExtSIBTypeInfoSchedulingInfo-List2 OPTIONAL, + extGANSS-SIBTypeInfoSchedulingInfoList + ExtGANSS-SIBTypeInfoSchedulingInfoList OPTIONAL +} + +SysInfoTypeSB2 ::= SEQUENCE { + -- Other IEs + sib-ReferenceList SIB-ReferenceList, + -- Extension mechanism for non- release99 information + v6b0NonCriticalExtensions SEQUENCE { + sysInfoTypeSB2-v6b0ext SysInfoTypeSB2-v6b0ext, + v860NonCriticalExtensions SEQUENCE { + sysInfoTypeSB2-v860ext SysInfoTypeSB2-v860ext, + nonCriticalExtensions SEQUENCE {} OPTIONAL + } OPTIONAL + } OPTIONAL +} + +SysInfoTypeSB2-v6b0ext ::= SEQUENCE { + extSIBTypeInfoSchedulingInfo-List ExtSIBTypeInfoSchedulingInfo-List OPTIONAL +} + +SysInfoTypeSB2-v860ext ::= SEQUENCE { + extSIBTypeInfoSchedulingInfo-List ExtSIBTypeInfoSchedulingInfo-List2 OPTIONAL, + extGANSS-SIBTypeInfoSchedulingInfoList + ExtGANSS-SIBTypeInfoSchedulingInfoList OPTIONAL +} + +TDD-UMTS-Frequency-List ::= SEQUENCE (SIZE (1..maxNumTDDFreqs)) OF + FrequencyInfoTDD + +UE-HistoryInformation ::= SEQUENCE { + ue-InactivityPeriod INTEGER (1..120), + ueMobilityStateIndicator High-MobilityDetected OPTIONAL, + ul-dataVolumeHistory DataVolumeHistory OPTIONAL, + dl-dataVolumeHistory DataVolumeHistory OPTIONAL +} + +-- For systemInformationBlockType11bis the Value Tag Info "CellValueTag" is used +ValueTagInfo ::= CHOICE { + none NULL, + cellValueTag CellValueTag, + plmn-ValueTag PLMN-ValueTag, + sIBOccurrenceIdentityAndValueTag SIBOccurrenceIdentityAndValueTag +} + +-- *************************************************** +-- +-- ANSI-41 INFORMATION ELEMENTS (10.3.9) +-- +-- *************************************************** + +ANSI-41-GlobalServiceRedirectInfo ::= ANSI-41-NAS-Parameter +ANSI-41-PrivateNeighbourListInfo ::= ANSI-41-NAS-Parameter +ANSI-41-RAND-Information ::= ANSI-41-NAS-Parameter +ANSI-41-UserZoneID-Information ::= ANSI-41-NAS-Parameter +ANSI-41-NAS-Parameter ::= BIT STRING (SIZE (1..2048)) + +Min-P-REV ::= BIT STRING (SIZE (8)) + +NAS-SystemInformationANSI-41 ::= ANSI-41-NAS-Parameter +NID ::= BIT STRING (SIZE (16)) + +P-REV ::= BIT STRING (SIZE (8)) + +SID ::= BIT STRING (SIZE (15)) + +-- *************************************************** +-- +-- MBMS INFORMATION ELEMENTS (10.3.9a) +-- +-- *************************************************** + +MBMS-AccessProbabilityFactor ::= ENUMERATED { + apf0, apf32, apf64, apf96, apf128, apf160, apf192, + apf224, apf256, apf288, apf320, apf352, apf384, apf416, + apf448, apf480, apf512, apf544, apf576, apf608, apf640, + apf672, apf704, apf736, apf768, apf800, apf832, apf864, + apf896, apf928, apf960, apf1000 } + +MBMS-CellGroupIdentity-r6 ::= BIT STRING (SIZE (12)) + +MBMS-CommonCCTrChIdentity ::= INTEGER (1..32) + +MBMS-CommonPhyChIdentity ::= INTEGER (1..32) + +MBMS-CommonRBIdentity ::= INTEGER (1..32) + +MBMS-CommonRBInformation-r6 ::= SEQUENCE { + commonRBIdentity MBMS-CommonRBIdentity, + pdcp-Info PDCP-Info-r4, + rlc-Info RLC-Info-MTCH-r6 +} + +MBMS-CommonRBInformationList-r6 ::= SEQUENCE (SIZE (1..maxMBMS-CommonRB)) OF + MBMS-CommonRBInformation-r6 + +MBMS-CommonTrChIdentity ::= INTEGER (1..32) + +MBMS-ConnectedModeCountingScope ::= SEQUENCE { + countingForUraPCH BOOLEAN, + countingForCellPCH BOOLEAN, + countingForCellFACH BOOLEAN +} + +MBMS-CurrentCell-SCCPCH-r6 ::= SEQUENCE { + sccpchIdentity MBMS-SCCPCHIdentity OPTIONAL, + secondaryCCPCH-Info MBMS-CommonPhyChIdentity, + softComb-TimingOffset MBMS-SoftComb-TimingOffset OPTIONAL, + -- If the IE transpCh-InfoCommonForAllTrCh is absent, the default TFCS as specified + -- in 14.10.1 applies + transpCh-InfoCommonForAllTrCh MBMS-CommonCCTrChIdentity OPTIONAL, + transpCHInformation MBMS-TrCHInformation-CurrList +} + +MBMS-CurrentCell-SCCPCHList-r6 ::= SEQUENCE (SIZE (1..maxSCCPCH)) OF + MBMS-CurrentCell-SCCPCH-r6 + +MBMS-FACHCarryingMTCH-List ::= SEQUENCE (SIZE (1..maxFACHPCH)) OF + TransportFormatSet + +MBMS-JoinedInformation-r6 ::= SEQUENCE { + p-TMSI P-TMSI-GSM-MAP OPTIONAL +} + +MBMS-L1CombiningSchedule-32 ::= SEQUENCE { + -- Actual L1 combining schedule values (offset, start, duration) = IE value * 4 + cycleOffset INTEGER (0..7) OPTIONAL, + mtch-L1CombiningPeriodList SEQUENCE (SIZE (1..maxMBMS-L1CP)) OF SEQUENCE { + periodStart INTEGER (0..7), + periodDuration INTEGER (1..8) + } +} + +MBMS-L1CombiningSchedule-64 ::= SEQUENCE { + -- Actual L1 combining schedule values (offset, start, duration) = IE value * 4 + cycleOffset INTEGER (0..15) OPTIONAL, + mtch-L1CombiningPeriodList SEQUENCE (SIZE (1..maxMBMS-L1CP)) OF SEQUENCE { + periodStart INTEGER (0..15), + periodDuration INTEGER (1..16) + } +} + +MBMS-L1CombiningSchedule-128 ::= SEQUENCE { + -- Actual L1 combining schedule values (offset, start, duration) = IE value * 4 + cycleOffset INTEGER (0..31) OPTIONAL, + mtch-L1CombiningPeriodList SEQUENCE (SIZE (1..maxMBMS-L1CP)) OF SEQUENCE { + periodStart INTEGER (0..31), + periodDuration INTEGER (1..32) + } +} + +MBMS-L1CombiningSchedule-256 ::= SEQUENCE { + -- Actual L1 combining schedule values (offset, start, duration) = IE value * 4 + cycleOffset INTEGER (0..63) OPTIONAL, + mtch-L1CombiningPeriodList SEQUENCE (SIZE (1..maxMBMS-L1CP)) OF SEQUENCE { + periodStart INTEGER (0..63), + periodDuration INTEGER (1..64) + } +} + +MBMS-L1CombiningSchedule-512 ::= SEQUENCE { + -- Actual L1 combining schedule values (offset, start, duration) = IE value * 4 + cycleOffset INTEGER (0..127) OPTIONAL, + mtch-L1CombiningPeriodList SEQUENCE (SIZE (1..maxMBMS-L1CP)) OF SEQUENCE { + periodStart INTEGER (0..127), + periodDuration INTEGER (1..128) + } +} + +MBMS-L1CombiningSchedule-1024 ::= SEQUENCE { + -- Actual L1 combining schedule values (offset, start, duration) = IE value * 4 + cycleOffset INTEGER (0..255) OPTIONAL, + mtch-L1CombiningPeriodList SEQUENCE (SIZE (1..maxMBMS-L1CP)) OF SEQUENCE { + periodStart INTEGER (0..255), + periodDuration INTEGER (1..256) + } +} + +MBMS-L1CombiningSchedule ::= CHOICE { + cycleLength-32 MBMS-L1CombiningSchedule-32, + cycleLength-64 MBMS-L1CombiningSchedule-64, + cycleLength-128 MBMS-L1CombiningSchedule-128, + cycleLength-256 MBMS-L1CombiningSchedule-256, + cycleLength-512 MBMS-L1CombiningSchedule-512, + cycleLength-1024 MBMS-L1CombiningSchedule-1024 +} + +MBMS-L1CombiningTransmTimeDiff ::= INTEGER (0..3) + +MBMS-L23Configuration ::= CHOICE { + sameAsCurrent SEQUENCE { + currentCell-SCCPCH MBMS-SCCPCHIdentity, + msch-ConfigurationInfo MBMS-MSCH-ConfigurationInfo-r6 OPTIONAL + }, + different SEQUENCE { + -- If the IE transpCh-InfoCommonForAllTrCh is absent, the default TFCS as specified + -- in 14.10.1 applies + transpCh-InfoCommonForAllTrCh MBMS-CommonCCTrChIdentity OPTIONAL, + transpCHInformation MBMS-TrCHInformation-NeighbList + } +} + +MBMS-LogicalChIdentity ::= INTEGER (1..15) + +MBMS-MCCH-ConfigurationInfo-r6 ::= SEQUENCE { + accessInfoPeriodCoefficient INTEGER (0..3), + repetitionPeriodCoefficient INTEGER (0..3), + modificationPeriodCoefficient INTEGER (7..10), + rlc-Info RLC-Info-MCCH-r6, + tctf-Presence MBMS-TCTF-Presence OPTIONAL +} + +MBMS-MICHConfigurationInfo-r6 ::= SEQUENCE { + michPowerOffset MBMS-MICHPowerOffset, + mode CHOICE { + fdd SEQUENCE { + channelisationCode256 ChannelisationCode256, + ni-CountPerFrame MBMS-NI-CountPerFrame, + sttd-Indicator BOOLEAN + }, + -- The CHOICE tdd384 is used for both tdd384 and tdd768. If IE + -- 'MBMS-MICHConfigurationInfo-v770ext' is not present, tdd384 applies. + tdd384 SEQUENCE { + timeslot TimeslotNumber, + midambleShiftAndBurstType MidambleShiftAndBurstType, + channelisationCode DL-TS-ChannelisationCode, + repetitionPeriodLengthOffset RepPerLengthOffset-MICH OPTIONAL, + mbmsNotificationIndLength MBMS-MICHNotificationIndLength DEFAULT mn4 + }, + tdd128 SEQUENCE { + timeslot TimeslotNumber-LCR-r4, + midambleShiftAndBurstType MidambleShiftAndBurstType-LCR-r4, + channelisationCodeList SEQUENCE (SIZE (1..2)) OF + DL-TS-ChannelisationCode, + repetitionPeriodLengthOffset RepPerLengthOffset-MICH OPTIONAL, + mbmsNotificationIndLength MBMS-MICHNotificationIndLength DEFAULT mn4 + } + } +} + +MBMS-MICHConfigurationInfo-v770ext ::= SEQUENCE { + mode CHOICE { + -- For tdd384, IE 'MidambleShiftAndBurstType-r7' replaces IE 'MidambleShiftAndBurstType' + -- in IE 'MBMS-MICHConfigurationInfo-r6'. IE 'MidambleShiftAndBurstType' shall be ignored. + tdd384 SEQUENCE { + midambleShiftAndBurstType MidambleShiftAndBurstType-r7 + }, + -- For tdd768, the CHIOCE tdd384 in IE 'MBMS-MICHConfigurationInfo-r6' applies, except + -- that IE 'MidambleShiftAndBurstType-VHCR' replaces IE 'MidambleShiftAndBurstType'. IE + -- 'MidambleShiftAndBurstType' shall be ignored. + tdd768 SEQUENCE { + midambleShiftAndBurstType MidambleShiftAndBurstType-VHCR + }, + tdd128 SEQUENCE { + mbsfnSpecialTimeSlot TimeSlotLCR-ext OPTIONAL + } + } +} + +MBMS-MICHConfigurationInfo-v890ext ::= SEQUENCE { + mode CHOICE { + imb384 SEQUENCE { + channelisationCode256 ChannelisationCode256, + ni-CountPerFrame MBMS-NI-CountPerFrame-IMB384 + } + } +} + +MBMS-MICHNotificationIndLength ::= ENUMERATED { mn4, mn8, mn16 } + +MBMS-MICHPowerOffset ::= INTEGER (-10..5) + +MBMS-ModifedService-r6 ::= SEQUENCE { + mbms-TransmissionIdentity MBMS-TransmissionIdentity, + mbms-RequiredUEAction MBMS-RequiredUEAction-Mod, + mbms-PreferredFrequency CHOICE { + mcch MBMS-PFLIndex, + dcch MBMS-PFLInfo + } OPTIONAL, + --dummy is not used. If received it shall be ignored. + dummy ENUMERATED { true } OPTIONAL, + continueMCCHReading BOOLEAN +} + +MBMS-ModifedServiceList-r6 ::= SEQUENCE (SIZE (1..maxMBMSservModif)) OF + MBMS-ModifedService-r6 + +MBMS-ModifiedService-v770ext ::= SEQUENCE { + mbsfnClusterFrequency MBSFN-ClusterFrequency-r7 OPTIONAL +} + +MBMS-ModifiedService-LCR-v7c0ext ::= SEQUENCE { + rbReleaseCause MBMS-PTM-RBReleaseCause-LCR-r7 OPTIONAL +} + +-- IE 'MBMS-ModifiedServiceList-v770ext' contains a list of extension data +-- associated with the MBMS transmission identities at the corresponding +-- positions in IE 'MBMS-ModifedServiceList-r6' +MBMS-ModifiedServiceList-v770ext ::= SEQUENCE (SIZE (1..maxMBMSservModif)) OF + MBMS-ModifiedService-v770ext + +-- IE 'MBMS-ModifiedServiceList-LCR-v7c0ext' contains a list of extension data +-- associated with the MBMS transmission identities at the corresponding +-- positions in IE 'MBMS-ModifedServiceList-r6' +MBMS-ModifiedServiceList-LCR-v7c0ext ::= SEQUENCE (SIZE (1..maxMBMSservModif)) OF + MBMS-ModifiedService-LCR-v7c0ext + +MBMS-MSCH-ConfigurationInfo-r6 ::= SEQUENCE { + mschShedulingInfo MBMS-MSCHSchedulingInfo OPTIONAL, + rlc-Info RLC-Info-MSCH-r6 OPTIONAL, + tctf-Presence MBMS-TCTF-Presence OPTIONAL +} + +MBMS-MSCHSchedulingInfo ::= CHOICE { + schedulingPeriod-32-Offset INTEGER (0..31), + schedulingPeriod-64-Offset INTEGER (0..63), + schedulingPeriod-128-Offset INTEGER (0..127), + schedulingPeriod-256-Offset INTEGER (0..255), + schedulingPeriod-512-Offset INTEGER (0..511), + schedulingPeriod-1024-Offset INTEGER (0..1023) +} + +MBMS-NeighbouringCellSCCPCH-r6 ::= SEQUENCE { + secondaryCCPCH-Info MBMS-CommonPhyChIdentity, + secondaryCCPCHPwrOffsetDiff MBMS-SCCPCHPwrOffsetDiff OPTIONAL, + layer1Combining CHOICE { + fdd SEQUENCE { + softComb-TimingOffset MBMS-SoftComb-TimingOffset, + mbms-L1CombiningTransmTimeDiff MBMS-L1CombiningTransmTimeDiff, + mbms-L1CombiningSchedule MBMS-L1CombiningSchedule OPTIONAL + }, + tdd NULL + } OPTIONAL, + mbms-L23Configuration MBMS-L23Configuration +} + +MBMS-NeighbouringCellSCCPCH-v770ext ::= SEQUENCE { + secondaryCCPCH-Info MBMS-CommonPhyChIdentity OPTIONAL, + secondaryCCPCH-InfoDiff SecondaryCCPCHInfoDiff-MBMS, + secondaryCCPCHPwrOffsetDiff MBMS-SCCPCHPwrOffsetDiff OPTIONAL, + layer1Combining CHOICE { + fdd SEQUENCE { + softComb-TimingOffset MBMS-SoftComb-TimingOffset, + mbms-L1CombiningTransmTimeDiff MBMS-L1CombiningTransmTimeDiff, + mbms-L1CombiningSchedule MBMS-L1CombiningSchedule OPTIONAL + }, + tdd NULL + } OPTIONAL, + mbms-L23Configuration MBMS-L23Configuration +} + +MBMS-NeighbouringCellSCCPCHList-r6 ::= SEQUENCE (SIZE (1..maxSCCPCH)) OF + MBMS-NeighbouringCellSCCPCH-r6 + +-- IE "MBMS-NeighbouringCellSCCPCHList-v770ext" may be received as an extension of the IE +-- "MBMS-NeighbouringCellSCCPCHList-r6". When both lists are received in the same message +-- and the total number of list elements is greater than constant value 'maxSCCPCH', the +-- UE behaviour is unspecified. +MBMS-NeighbouringCellSCCPCHList-v770ext ::= SEQUENCE (SIZE (1..maxSCCPCH)) OF + MBMS-NeighbouringCellSCCPCH-v770ext + +MBMS-NetworkStandardTimeInformation-LCR-v890ext ::= SEQUENCE { + networkStandardTime BIT STRING (SIZE (40)), + correlativeSFN INTEGER (0..4095) OPTIONAL +} + +MBMS-NI-CountPerFrame ::= ENUMERATED { ni18, ni36, ni72, ni144 } + +MBMS-NI-CountPerFrame-IMB384 ::= ENUMERATED { ni16, ni32, ni64, ni128 } + +MBMS-NumberOfNeighbourCells-r6 ::= INTEGER (0..32) + +MBMS-PFLIndex ::= INTEGER (1..maxMBMS-Freq) + +MBMS-PFLInfo ::= FrequencyInfo + +MBMS-PhyChInformation-IMB384 ::= SEQUENCE { + mbms-CommonPhyChIdentity MBMS-CommonPhyChIdentity, + secondaryCCPCHInfo-MBMS SecondaryCCPCHFrameType2Info +} + +MBMS-PhyChInformationList-IMB384 ::= SEQUENCE (SIZE (1..maxMBMS-CommonPhyCh)) OF + MBMS-PhyChInformation-IMB384 + +MBMS-PhyChInformation-r6 ::= SEQUENCE { + mbms-CommonPhyChIdentity MBMS-CommonPhyChIdentity, + secondaryCCPCHInfo-MBMS SecondaryCCPCHInfo-MBMS-r6 +} + +MBMS-PhyChInformation-r7 ::= SEQUENCE { + mbms-CommonPhyChIdentity MBMS-CommonPhyChIdentity, + secondaryCCPCHInfo-MBMS SecondaryCCPCHInfo-MBMS-r7 +} + +MBMS-PhyChInformationList-r6 ::= SEQUENCE (SIZE (1..maxMBMS-CommonPhyCh)) OF + MBMS-PhyChInformation-r6 + +MBMS-PhyChInformationList-r7 ::= SEQUENCE (SIZE (1..maxMBMS-CommonPhyCh)) OF + MBMS-PhyChInformation-r7 + +MBMS-PL-ServiceRestrictInfo-r6 ::= ENUMERATED { true } + +MBMS-PreferredFrequencyInfo-r6 ::= SEQUENCE { + mbmsPreferredFrequency INTEGER (1..maxMBMS-Freq) OPTIONAL, + layerConvergenceInformation CHOICE { + mbms-Qoffset MBMS-Qoffset, + mbms-HCSoffset INTEGER (0..7) + }, + mbms-PL-ServiceRestrictInfo MBMS-PL-ServiceRestrictInfo-r6 OPTIONAL +} + +MBMS-PreferredFrequencyList-r6 ::= SEQUENCE (SIZE (1..maxMBMS-Freq)) OF + MBMS-PreferredFrequencyInfo-r6 + +MBMS-PTMActivationTime-r6 ::= INTEGER (0..2047) + +MBMS-PTM-RBInformation-C ::= SEQUENCE { + rbInformation MBMS-CommonRBIdentity, + shortTransmissionID MBMS-ShortTransmissionID, + logicalChIdentity MBMS-LogicalChIdentity +} + +MBMS-PTM-RBInformation-CList ::= SEQUENCE (SIZE (1..maxRBperTrCh)) OF + MBMS-PTM-RBInformation-C + +MBMS-PTM-RBInformation-N ::= SEQUENCE { + shortTransmissionID MBMS-ShortTransmissionID, + logicalChIdentity MBMS-LogicalChIdentity, + layer1-CombiningStatus BOOLEAN} + +MBMS-PTM-RBInformation-NList ::= SEQUENCE (SIZE (1..maxRBperTrCh)) OF + MBMS-PTM-RBInformation-N + +MBMS-PTM-RBReleaseCause-LCR-r7 ::= ENUMERATED { + normalRelease, outOfMBMSServiceCoverageInRAN, + networkAbnormalRelease, + spare5, spare4, spare3, spare2, spare1 } + +MBMS-Qoffset ::= ENUMERATED { q4, q8, q12, q16, q20, q30, q40, qInfinity } + +MBMS-RequiredUEAction-Mod ::= ENUMERATED { + none, + acquireCountingInfo, + acquireCountingInfoPTM-RBsUnmodified, + acquirePTM-RBInfo, + requestPTPRB, + releasePTM-RB } + +MBMS-RequiredUEAction-UMod ::= ENUMERATED { + none, + acquirePTM-RBInfo, + requestPTPRB } + +MBMS-SCCPCHIdentity ::= INTEGER (1..maxSCCPCH) + +MBMS-SCCPCHPwrOffsetDiff ::= ENUMERATED { mcpo-minus6, mcpo-minus3, mcpo-plus3, mcpo-plus6 } + +MBMS-SelectedServiceInfo ::= SEQUENCE { + status CHOICE { + none NULL, + some MBMS-SelectedServicesListFull + } +} + +MBMS-SelectedServicesListFull ::= SEQUENCE (SIZE (1..maxMBMSservSelect)) OF + MBMS-ServiceIdentity-r6 + +MBMS-SelectedServicesListShort ::= SEQUENCE (SIZE (1..maxMBMSservSelect)) OF + MBMS-ShortTransmissionID + +MBMS-SelectedServicesShort ::= SEQUENCE { + mbms-SelectedServicesList MBMS-SelectedServicesListShort, + modificationPeriodIdentity INTEGER (0..1) +} + +MBMS-ServiceAccessInfo-r6 ::= SEQUENCE { + shortTransmissionID MBMS-ShortTransmissionID, + accessprobabilityFactor-Idle MBMS-AccessProbabilityFactor, + accessprobabilityFactor-Connected MBMS-AccessProbabilityFactor OPTIONAL, + mbms-ConnectedModeCountingScope MBMS-ConnectedModeCountingScope +} + +MBMS-ServiceAccessInfoList-r6 ::= SEQUENCE (SIZE (1..maxMBMSservCount)) OF + MBMS-ServiceAccessInfo-r6 + +MBMS-ServiceIdentity-r6 ::= SEQUENCE { + serviceIdentity OCTET STRING (SIZE (3)), + plmn-Identity CHOICE { + -- The 'sameAsMIB-PLMN-Id' choice refers to the 'PLMN Identity' (R99) in MIB. + sameAsMIB-PLMN-Id NULL, + other CHOICE { + -- The 'sameAsMIB-MultiPLMN-Id' choice refers to one of the (1..5) PLMN Identities + -- provided in the 'Multiple PLMN List' (REL-6) in MIB. + sameAsMIB-MultiPLMN-Id INTEGER (1..5), + explicitPLMN-Id PLMN-Identity + } + } +} + +MBMS-ServiceSchedulingInfo-r6 ::= SEQUENCE { + mbms-TransmissionIdentity MBMS-TransmissionIdentity, + mbms-ServiceTransmInfoList MBMS-ServiceTransmInfoList OPTIONAL, + nextSchedulingperiod INTEGER (0..31) +} + +MBMS-ServiceSchedulingInfoList-r6 ::= SEQUENCE (SIZE (1..maxMBMSservSched)) OF + MBMS-ServiceSchedulingInfo-r6 + +MBMS-ServiceTransmInfo ::= SEQUENCE { + -- Actual values (start, duration) = IE values * 4 + start INTEGER (0..255), + duration INTEGER (1..256) +} + +MBMS-ServiceTransmInfoList ::= SEQUENCE (SIZE (1..maxMBMSTransmis)) OF + MBMS-ServiceTransmInfo + +MBMS-SessionIdentity ::= OCTET STRING (SIZE (1)) + +MBMS-ShortTransmissionID ::= INTEGER (1..maxMBMSservUnmodif) + +MBMS-SIBType5-SCCPCH-r6 ::= SEQUENCE { + sccpchIdentity MBMS-SCCPCHIdentity, + transpCHInformation MBMS-TrCHInformation-SIB5List +} + +MBMS-SIBType5-SCCPCHList-r6 ::= SEQUENCE (SIZE (1..maxSCCPCH)) OF + MBMS-SIBType5-SCCPCH-r6 + +MBMS-SoftComb-TimingOffset ::= ENUMERATED { ms0, ms10, ms20, ms40 } + +MBMS-TCTF-Presence ::= ENUMERATED { false } + +MBMS-TimersAndCounters-r6 ::= SEQUENCE { + t-318 T-318 DEFAULT ms1000 +} + +MBMS-TransmissionIdentity ::= SEQUENCE { + mbms-ServiceIdentity MBMS-ServiceIdentity-r6, + mbms-SessionIdentity MBMS-SessionIdentity OPTIONAL +} + +MBMS-TranspChInfoForCCTrCh-r6 ::= SEQUENCE { + commonCCTrChIdentity MBMS-CommonCCTrChIdentity, + transportFormatCombinationSet TFCS +} + + +MBMS-TranspChInfoForEachCCTrCh-r6 ::= SEQUENCE (SIZE (1..maxMBMS-CommonCCTrCh)) OF + MBMS-TranspChInfoForCCTrCh-r6 + +MBMS-TranspChInfoForEachTrCh-r6 ::= SEQUENCE (SIZE (1..maxMBMS-CommonTrCh)) OF + MBMS-TranspChInfoForTrCh-r6 + +MBMS-TranspChInfoForTrCh-r6 ::= SEQUENCE { + commonTrChIdentity MBMS-CommonTrChIdentity, + transportFormatSet TransportFormatSet +} + +MBMS-TrCHInformation-Curr ::= SEQUENCE { + transpCh-Info MBMS-CommonTrChIdentity, + rbInformation MBMS-PTM-RBInformation-CList OPTIONAL, + msch-ConfigurationInfo MBMS-MSCH-ConfigurationInfo-r6 OPTIONAL +} + +MBMS-TrCHInformation-CurrList ::= SEQUENCE (SIZE (1..maxFACHPCH)) OF + MBMS-TrCHInformation-Curr + +MBMS-TrCHInformation-Neighb ::= SEQUENCE { + transpCh-Info MBMS-CommonTrChIdentity, + transpCh-CombiningStatus BOOLEAN, + rbInformation MBMS-PTM-RBInformation-NList OPTIONAL, + msch-ConfigurationInfo MBMS-MSCH-ConfigurationInfo-r6 OPTIONAL +} + +MBMS-TrCHInformation-NeighbList ::= SEQUENCE (SIZE (1..maxFACHPCH)) OF + MBMS-TrCHInformation-Neighb + +MBMS-TrCHInformation-SIB5 ::= SEQUENCE { + transpCh-Identity INTEGER (1..maxFACHPCH), + rbInformation MBMS-PTM-RBInformation-CList OPTIONAL, + msch-ConfigurationInfo MBMS-MSCH-ConfigurationInfo-r6 OPTIONAL +} + +MBMS-TrCHInformation-SIB5List ::= SEQUENCE (SIZE (1..maxFACHPCH)) OF + MBMS-TrCHInformation-SIB5 + +MBMS-UnmodifiedService-r6 ::= SEQUENCE { + mbms-TransmissionIdentity MBMS-TransmissionIdentity, + mbms-RequiredUEAction MBMS-RequiredUEAction-UMod, + mbms-PreferredFrequency MBMS-PFLIndex OPTIONAL +} + +MBMS-UnmodifiedServiceList-r6 ::= SEQUENCE (SIZE (1..maxMBMSservUnmodif)) OF + MBMS-UnmodifiedService-r6 + +MBMS-UnmodifiedService-v770ext ::= SEQUENCE { + mbsfnClusterFrequency MBSFN-ClusterFrequency-r7 OPTIONAL +} + +-- IE 'MBMS-UnmodifiedServiceList-v770ext' contains a list of extension data +-- associated with the MBMS transmission identities at the corresponding +-- positions in IE 'MBMS-UnmodifiedServiceList-r6' +MBMS-UnmodifiedServiceList-v770ext ::= SEQUENCE (SIZE (1..maxMBMSservUnmodif)) OF + MBMS-UnmodifiedService-v770ext + +MBSFN-ClusterFrequency-r7 ::= INTEGER (1..maxMBSFNClusters) + +MBSFNFrequency ::= SEQUENCE { + frequencyInfo FrequencyInfo, + -- IE "cellParameterID" is used only for MBSFN clusters operating in 1.28 Mcps TDD mode. + cellParametersID CellParametersID OPTIONAL +} + +MBSFNFrequency-v860ext ::= SEQUENCE { + imb-Indication ENUMERATED { true } OPTIONAL +} + +MBSFNFrequencyList ::= SEQUENCE (SIZE (0..maxMBSFNClusters)) OF + MBSFNFrequency + +-- List of extensions to the corresponding elements of IE "MBSFNFrequencyList" +MBSFNFrequencyList-v860ext ::= SEQUENCE (SIZE (0..maxMBSFNClusters)) OF + MBSFNFrequency-v860ext + +MBSFNOnlyService ::= ENUMERATED {true} + +MBSFNservicesNotNotified-r7 ::= SEQUENCE { + notificationOfAllMBSFNServicesInTheBand + ENUMERATED { true } OPTIONAL +} + +MBSFNInterFrequencyNeighbour-r7 ::= SEQUENCE { + mbsfnFrequency FrequencyInfo, + mbsfnServicesNotification CHOICE { + mbsfnServicesNotified NULL, + mbsfnServicesNotNotified MBSFNservicesNotNotified-r7 + } +} + +MBSFNInterFrequencyNeighbour-v860ext ::= SEQUENCE { + imb-Indication ENUMERATED { true } OPTIONAL +} + +MBSFN-InterFrequencyNeighbourList-r7 ::= SEQUENCE (SIZE (1..maxMBSFNClusters)) OF + MBSFNInterFrequencyNeighbour-r7 + +-- List of extensions to the corresponding elements of IE "MBSFN-InterFrequencyNeighbourList-r7" +MBSFN-InterFrequencyNeighbourList-v860ext ::= SEQUENCE (SIZE (1..maxMBSFNClusters)) OF + MBSFNInterFrequencyNeighbour-v860ext + +MBSFN-TDDInformation ::= SEQUENCE (SIZE (1..maxTS)) OF + MBSFN-TDDTimeSlotInfo + +MBSFN-TDDInformation-LCR ::= SEQUENCE (SIZE (1..maxMBSFNClusters)) OF + MBSFN-TDDTimeSlotInfo-LCR + +MBSFN-TDDTimeSlotInfo ::= SEQUENCE { + timeSlotNumber TimeslotNumber-LCR-r4, + cellParametersID CellParametersID +} + +MBSFN-TDDTimeSlotInfo-LCR ::= SEQUENCE { + frequencyIndex INTEGER (1..maxMBSFNClusters), + timeSlotList MBSFN-TDDInformation +} + +MBSFN-TDM-Info ::= SEQUENCE { + shortTransmissionID MBMS-ShortTransmissionID, + tDMPeriod INTEGER (2..9), + tDMOffset INTEGER (0..8), + tDMLength INTEGER (1..8) +} + +MBSFN-TDM-Info-List ::= SEQUENCE (SIZE (1..maxMBMSservUnmodif)) OF + MBSFN-TDM-Info + +hiPDSCHidentities INTEGER ::= 64 +hiPUSCHidentities INTEGER ::= 64 +hiRM INTEGER ::= 256 +maxAC INTEGER ::= 16 +maxAdditionalMeas INTEGER ::= 4 +maxASC INTEGER ::= 8 +maxASCmap INTEGER ::= 7 +maxASCpersist INTEGER ::= 6 +maxCCTrCH INTEGER ::= 8 +maxCellMeas INTEGER ::= 32 +maxCellMeasOnSecULFreq INTEGER ::= 32 +maxCellMeas-1 INTEGER ::= 31 +maxCellMeasOnSecULFreq-1 INTEGER ::= 31 +maxCNdomains INTEGER ::= 4 +maxCommonHRNTI INTEGER ::= 4 +maxCommonQueueID INTEGER ::= 2 +maxCPCHsets INTEGER ::= 16 +maxDedicatedCSGFreq INTEGER ::= 4 +maxDPCH-DLchan INTEGER ::= 8 +maxDPDCH-UL INTEGER ::= 6 +maxDRACclasses INTEGER ::= 8 +maxExcludedDetectedSetCells INTEGER ::= 64 +maxE-DCHMACdFlow INTEGER ::= 8 +maxE-DCHMACdFlow-1 INTEGER ::= 7 +maxMultipleFrequencyBandsFDD INTEGER ::= 8 +maxMultipleFrequencyBandsEUTRA INTEGER ::= 8 +maxEUTRACellPerFreq INTEGER ::= 16 +maxEUTRATargetFreqs INTEGER ::= 8 +maxEDCHRL INTEGER ::= 4 +maxEDCHRL-1 INTEGER ::= 3 +maxEDCHs INTEGER ::= 32 +maxEDCHs-1 INTEGER ::= 31 +maxEDCHTxPattern-TDD128 INTEGER ::= 4 -- maxEDCHTxPattern-TDD128 should be 3 +maxEDCHTxPattern-TDD128-1 INTEGER ::= 3 -- maxEDCHTxPattern-TDD128-1 should be 2 +maxERNTIgroup INTEGER ::= 32 +maxERNTIperGroup INTEGER ::= 2 +maxERUCCH INTEGER ::= 256 +maxFACHPCH INTEGER ::= 8 +maxFreq INTEGER ::= 8 +maxFreqBandsEUTRA INTEGER ::= 16 +maxFreqBandsFDD INTEGER ::= 8 +maxFreqBandsFDD2 INTEGER ::= 22 +maxFreqBandsFDD3 INTEGER ::= 86 +maxFreqBandsFDD-ext INTEGER ::= 15 -- maxFreqBandsFDD-ext ::= 22 - (maxFreqBandsFDD - 1) +maxFreqBandsFDD-ext2 INTEGER ::= 64 -- maxFreqBandsFDD-ext2 ::= 86 - maxFreqBandsFDD2 +maxFreqBandsFDD-ext3 INTEGER ::= 78 -- maxFreqBandsFDD-ext3 ::= 86 - maxFreqBandsFDD +maxFreqBandsIndicatorSupport INTEGER ::= 2 +maxFreqBandsTDD INTEGER ::= 4 +maxFreqBandsTDD-ext INTEGER ::= 16 +maxFreqBandsGSM INTEGER ::= 16 +maxFreqMeasWithoutCM INTEGER ::= 2 +maxGANSS INTEGER ::= 8 +maxGANSS-1 INTEGER ::= 7 +maxGANSSSat INTEGER ::= 64 +maxGANSSSat-1 INTEGER ::= 63 +maxGERAN-SI INTEGER ::= 8 +maxGSMTargetCells INTEGER ::= 32 +maxHNBNameSize INTEGER ::= 48 +maxHProcesses INTEGER ::= 8 +maxHS-SCCHLessTrBlk INTEGER ::= 4 +maxHSDSCHTBIndex INTEGER ::= 64 +maxHSDSCHTBIndex-tdd384 INTEGER ::= 512 +maxHSSCCHs INTEGER ::= 4 +maxHSSCCHs-1 INTEGER ::= 3 +maxHSSICH-TDD128 INTEGER ::= 4 +maxHSSICH-TDD128-1 INTEGER ::= 3 +maxInterSysMessages INTEGER ::= 4 +maxLoCHperRLC INTEGER ::= 2 +maxLoggedMeasReport INTEGER ::= 128 +maxMAC-d-PDUsizes INTEGER ::= 8 +maxMBMS-CommonCCTrCh INTEGER ::= 32 +maxMBMS-CommonPhyCh INTEGER ::= 32 +maxMBMS-CommonRB INTEGER ::= 32 +maxMBMS-CommonTrCh INTEGER ::= 32 +maxMBMS-Freq INTEGER ::= 4 +maxMBMS-L1CP INTEGER ::= 4 +maxMBMSservCount INTEGER ::= 8 +maxMBMSservModif INTEGER ::= 32 +maxMBMSservSched INTEGER ::= 16 +maxMBMSservSelect INTEGER ::= 8 +maxMBMSservUnmodif INTEGER ::= 64 +maxMBMSTransmis INTEGER ::= 4 +maxMBSFNClusters INTEGER ::= 16 +maxMeasCSGRange INTEGER ::= 4 +maxMeasEvent INTEGER ::= 8 +maxMeasEventOnSecULFreq INTEGER ::= 8 +maxMeasIntervals INTEGER ::= 3 +maxMeasOccasionPattern INTEGER ::= 5 +maxMeasOccasionPattern-1 INTEGER ::= 4 +maxMeasParEvent INTEGER ::= 2 +maxNonContiguousMultiCellCombinations INTEGER ::= 3 +maxNumCDMA2000Freqs INTEGER ::= 8 +maxNumE-AGCH INTEGER ::= 4 +maxNumE-HICH INTEGER ::= 4 +maxNumEUTRAFreqs INTEGER ::= 8 +maxNumEUTRAFreqs-FACH INTEGER ::= 4 +maxNumGSMCellGroup INTEGER ::= 16 +maxNumGSMFreqRanges INTEGER ::= 32 +maxNumFDDFreqs INTEGER ::= 8 +maxNumANRLoggedItems INTEGER ::= 4 +maxnumLoggedMeas INTEGER ::= 8 +maxNumMDTPLMN INTEGER ::= 15 +maxNumTDDFreqs INTEGER ::= 8 +maxNoOfMeas INTEGER ::= 16 +maxOtherRAT INTEGER ::= 15 +maxOtherRAT-16 INTEGER ::= 16 +maxPage1 INTEGER ::= 8 +maxPCPCH-APsig INTEGER ::= 16 +maxPCPCH-APsubCh INTEGER ::= 12 +maxPCPCH-CDsig INTEGER ::= 16 +maxPCPCH-CDsubCh INTEGER ::= 12 +maxPCPCH-SF INTEGER ::= 7 +maxPCPCHs INTEGER ::= 64 +maxPDCPAlgoType INTEGER ::= 8 +maxPDSCH INTEGER ::= 8 +maxPDSCH-TFCIgroups INTEGER ::= 256 +maxPRACH INTEGER ::= 16 +maxPRACH-EUL INTEGER ::= 4 +maxPRACH-FPACH INTEGER ::= 8 +maxPredefConfig INTEGER ::= 16 +maxPrio INTEGER ::= 8 +maxPrio-1 INTEGER ::= 7 +maxPUSCH INTEGER ::= 8 +maxQueueIDs INTEGER ::= 8 +maxRABsetup INTEGER ::= 16 +maxRAT INTEGER ::= 16 +maxRB INTEGER ::= 32 +maxRBallRABs INTEGER ::= 27 +maxRBMuxOptions INTEGER ::= 8 +maxRBperRAB INTEGER ::= 8 +maxRBperTrCh INTEGER ::= 16 +maxReportedEUTRACellPerFreq INTEGER ::= 4 +maxReportedEUTRAFreqs INTEGER ::= 4 +maxReportedGSMCells INTEGER ::= 8 +maxRL INTEGER ::= 8 +maxRL-1 INTEGER ::= 7 +maxRLCPDUsizePerLogChan INTEGER ::= 32 +maxRFC3095-CID INTEGER ::= 16384 +maxROHC-PacketSizes-r4 INTEGER ::= 16 +maxROHC-Profile-r4 INTEGER ::= 8 +maxRxPatternForHSDSCH-TDD128 INTEGER ::= 4 -- maxRxPatternForHSDSCH-TDD128 should be 3 +maxRxPatternForHSDSCH-TDD128-1 INTEGER ::= 3 -- maxRxPatternForHSDSCH-TDD128-1 should be 2 +maxSat INTEGER ::= 16 +maxSatClockModels INTEGER ::= 4 +maxSCCPCH INTEGER ::= 16 +maxSgnType INTEGER ::= 8 +maxSIB INTEGER ::= 32 +maxSIB-FACH INTEGER ::= 8 +maxSIBperMsg INTEGER ::= 16 +maxSIrequest INTEGER ::= 4 +maxSRBsetup INTEGER ::= 8 +maxSystemCapability INTEGER ::= 16 +maxTDD128Carrier INTEGER ::= 6 +maxTDD128Carrier-1 INTEGER ::= 5 +maxTbsForHSDSCH-TDD128 INTEGER ::= 4 +maxTbsForHSDSCH-TDD128-1 INTEGER ::= 3 +maxTF INTEGER ::= 32 +maxTF-CPCH INTEGER ::= 16 +maxTFC INTEGER ::= 1024 +maxTFCsub INTEGER ::= 1024 +maxTFCI-2-Combs INTEGER ::= 512 +maxTGPS INTEGER ::= 6 +maxTrCH INTEGER ::= 32 +-- maxTrCHpreconf should be 16 but has been set to 32 for compatibility +maxTrCHpreconf INTEGER ::= 32 +maxTS INTEGER ::= 14 +maxTS-1 INTEGER ::= 13 +maxTS-2 INTEGER ::= 12 +maxTS-LCR INTEGER ::= 6 +maxTS-LCR-1 INTEGER ::= 5 +maxURA INTEGER ::= 8 +maxURNTI-Group INTEGER ::= 8 + +END diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_CommonTemplates.ttcn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_CommonTemplates.ttcn new file mode 100644 index 0000000..0cc92b3 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_CommonTemplates.ttcn @@ -0,0 +1,1177 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-10 18:07:49 +0200 (Wed, 10 Sep 2014) $ +// $Rev: 12192 $ +/******************************************************************************/ + +module UTRAN_RRC_CommonTemplates { + import from UTRAN_CommonDefs all; + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + + //============================================================================= + // Common RRC Templates + //----------------------------------------------------------------------------- + + template (value) TFCS_ReconfAdd_CtfcSize_Ctfc2Bit_Type cs_TFCS_CtfcSize_Ctfc2Bit(integer p_Ctfc2Bit, + template (omit) PowerOffsetInformation p_PowerOffsetInfo := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ctfc2 := p_Ctfc2Bit, + powerOffsetInformation := p_PowerOffsetInfo + }; + + template (value) TFCS_ReconfAdd_CtfcSize_Ctfc4Bit_Type cs_TFCS_CtfcSize_Ctfc4Bit(integer p_Ctfc4Bit, + template (omit) PowerOffsetInformation p_PowerOffsetInfo := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ctfc4 := p_Ctfc4Bit, + powerOffsetInformation := p_PowerOffsetInfo + }; + + template (value) TFCS_ReconfAdd_CtfcSize_Ctfc6Bit_Type cs_TFCS_CtfcSize_Ctfc6Bit(integer p_Ctfc6Bit, + template (omit) PowerOffsetInformation p_PowerOffsetInfo := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ctfc6 := p_Ctfc6Bit, + powerOffsetInformation := p_PowerOffsetInfo + }; + template (value) TFCS_ReconfAdd_CtfcSize_Ctfc6Bit_Type cs_TFCS_ReconfAdd_Ctfc6Bit(TFCS_ReconfAdd_CtfcSize_Ctfc6Bit_Type.ctfc6 p_Ctfc6, + template (omit) PowerOffsetInformation p_PowerOffsetInfo := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, UTRAN) */ + ctfc6 := p_Ctfc6, + powerOffsetInformation := p_PowerOffsetInfo + }; + + template (value) TFCS_ReconfAdd_CtfcSize_Ctfc8Bit_Type cs_TFCS_CtfcSize_Ctfc8Bit(integer p_Ctfc8Bit, + template (omit) PowerOffsetInformation p_PowerOffsetInfo := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + ctfc8 := p_Ctfc8Bit, + powerOffsetInformation := p_PowerOffsetInfo + }; + + //============================================================================= + + template (value) AccessServiceClass_TDD_LCR_r4 cs_AccessServiceClass_TDD_LCR_r4 := + { /* AccessServiceClass for LCR TDD; TDD only */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + availableSYNC_UlCodesIndics := '11111111'B, + subchannelSize := {size1 := NULL} + }; + + //============================================================================= + + template (value) CommonTransChTFS cs_PCH_TFS_UE_TDD := + { /* TFS for PCH; TDD only */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tti := { + tti20 := { + { + rlc_Size := { + tdd := { + commonTDD_Choice := { + octetModeRLC_SizeInfoType1 := {sizeType1 := 28} + } + } + }, + numberOfTbSizeList := { {zero := NULL}, + {one := NULL} }, + logicalChannelList := {allSizes := NULL} + } + } + }, + semistaticTF_Information := { + channelCodingType := {convolutional := half}, + rateMatchingAttribute := 230, + crc_Size := crc16 + } + }; + + template (value) CommonTransChTFS cs_FACH_TFS_UE_TDD := + { /* TFS for FACH; TDD only */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tti := { + tti20 := { + { + rlc_Size := { + tdd := { + commonTDD_Choice := { + bitModeRLC_SizeInfo:= { + sizeType2 := { part1 := 5, + part2 := 3 } + } + } + } + }, + numberOfTbSizeList := { {zero := NULL}, + {one := NULL}, + {small := 2} }, + logicalChannelList := {allSizes := NULL} + } + } + }, + semistaticTF_Information := { + channelCodingType := {convolutional := half}, + rateMatchingAttribute := 230, + crc_Size := crc16 + } + }; + + template (value) CommonTransChTFS cs_FACH_TFS_PS_UE_TDD := + { /* TFS for PS FACH; TDD only */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tti := { + tti20 := { + { + rlc_Size := { + tdd := { + commonTDD_Choice := { + bitModeRLC_SizeInfo := { //@sic R5-133724 sic@ + sizeType3 := { + part1 := 6, + part2 := 11 + } + } + } + } + }, + numberOfTbSizeList := { + {zero := NULL}, + {one := NULL}, + {small := 2} + }, + logicalChannelList := {allSizes := NULL} + } + } + }, + semistaticTF_Information := { + channelCodingType := {turbo := NULL}, + rateMatchingAttribute := 130, + crc_Size := crc16 + } + }; + + template (value) CommonTransChTFS cs_PCH_TFS_UE := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tti := { + tti10 := { + { + rlc_Size := { + fdd := { + octetModeRLC_SizeInfoType2 := { + sizeType1 := 24 + } + } + }, + numberOfTbSizeList := { {zero := NULL}, + {one := NULL} }, + logicalChannelList := {allSizes := NULL} + } + } + }, + semistaticTF_Information := { + channelCodingType := {convolutional := half}, + rateMatchingAttribute := 230, + crc_Size := crc16 + } + }; + + template (value) CommonTransChTFS cs_FACH_TFS_UE := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tti := { + tti10 := { + { + rlc_Size := { + fdd := { + octetModeRLC_SizeInfoType2 := { + sizeType1:= 15 + } + } + }, + numberOfTbSizeList := { {zero := NULL}, + {one := NULL}, + {small := 2} }, + logicalChannelList := {allSizes := NULL} + } + } + }, + semistaticTF_Information := + { + channelCodingType := {convolutional := half}, + rateMatchingAttribute := 220, + crc_Size := crc16 + } + }; + + template (value) CommonTransChTFS cs_FACH_TFS_PS_UE := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tti := { + tti10 := { + { + rlc_Size := { + fdd := { + octetModeRLC_SizeInfoType2 := { + sizeType2 := 3 + } + } + }, + numberOfTbSizeList := { + {zero := NULL}, + {one := NULL} + }, + logicalChannelList := {allSizes := NULL} + } + } + }, + semistaticTF_Information := { + channelCodingType := {turbo := NULL}, + rateMatchingAttribute := 130, + crc_Size := crc16 + } + }; + + template (value) CommonTransChTFS cs_RACH_TFS_UE_FDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tti := { + tti20 := { + { + rlc_Size := { + fdd := { + octetModeRLC_SizeInfoType2 := { + sizeType1 := 15 + } + } + }, + numberOfTbSizeList := { + { + one := NULL + } + }, + logicalChannelList := { + configured := NULL + } + }, + { + rlc_Size := { + fdd := { + octetModeRLC_SizeInfoType2 := { + sizeType2 := 3 + } + } + }, + numberOfTbSizeList := { + { + one := NULL + } + }, + logicalChannelList := { + configured := NULL + } + } + } + }, + semistaticTF_Information := { + channelCodingType := { + convolutional := half + }, + rateMatchingAttribute := 150, + crc_Size := crc16 + } + }; + + template (value) CommonTransChTFS_LCR cs_RACH_TFS_LCR := + { /* TFS for RACH; TDD only */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tti := { + tti10 := { + { + rlc_Size := { + tdd := { + commonTDD_Choice := { + bitModeRLC_SizeInfo:= { + sizeType2 := { part1 := 5, + part2 := 2 } + } + } + } + }, + numberOfTbSizeList := { {one := NULL} }, // @sic R5s120405 sic@ + logicalChannelList := {configured := NULL} + } + } + }, + semistaticTF_Information := { + channelCodingType := {convolutional := half}, + rateMatchingAttribute := 110, + crc_Size := crc16 + } + }; + + //----------------------------------------------------------------------------- + + template (value) PICH_Info_LCR_r4 cs_PichInfo_TDD := + { /* TDD only */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + timeslot := 0, + pichChannelisationCodeList_LCR_r4 := { + tsc_PICH1_ChC_TDD, + tsc_PICH2_ChC + }, + midambleShiftAndBurstType := { + midambleAllocationMode := { defaultMidamble := NULL }, + midambleConfiguration := 4 + }, + repetitionPeriodLengthOffset := { rpp64_2 := 0}, + pagingIndicatorLength := pi4, + n_GAP := f4, + n_PCH := 2 + }; + + template (value) PRACH_RACH_Info_LCR_r4 cs_PRACH_RACH_Info_LCR_r4(TDD_PRACH_CCode_LCR_r4 p_UL_TS_ChannelisationCode, + TDD_FPACH_CCode16_r4 p_DL_TS_ChannelisationCode) := + { /* PRACH_RACH_Info for LCR TDD; TDD only */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + sync_UL_Info := { + sync_UL_Codes_Bitmap := '11111111'B, + prxUpPCHdes := 15, + powerRampStep := 3, + max_SYNC_UL_Transmissions := tr8, + mmax := 2 + }, + prach_DefinitionList := { + { + timeslot := 1, + prach_ChanCodes_LCR := {p_UL_TS_ChannelisationCode}, + midambleShiftAndBurstType := { + midambleAllocationMode := {defaultMidamble := NULL}, + midambleConfiguration := 8 //@sic R5s140007 sic@ + }, + fpach_Info := { + timeslot := 0, + channelisationCode := p_DL_TS_ChannelisationCode, + midambleShiftAndBurstType := { + midambleAllocationMode := {defaultMidamble := NULL}, + midambleConfiguration := 4 + }, + wi := 4 + } + } + } + }; + + //----------------------------------------------------------------------------- + + template (value) CommonTimeslotInfoSCCPCH cs_CommonTimeslotInfoSCCPCH := + { /* CommonTimeslotInfo for SCCPCH; TDD only */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + secondInterleavingMode := frameRelated, + tfci_Coding := tfci_bits_16, + puncturingLimit := pl0_72, + repetitionPeriodLengthAndOffset := {repetitionPeriod64 := { + length_ := 58, + offset := 6 + } + } + }; + + //----------------------------------------------------------------------------- + + template (value) DedicatedTransChTFS cs_DCH_60_TFS_UE := + { /* transport format set for RAB subflow#3 on dedicated channel used in message sent to UE: + * TTI = 20 ms; + * two transport formats: TransportBlocks = 0, TB size = 60 bits; TansportBlock = 1, Size = 60. + * rlc_Size = TB_Size ( DCH, w/o MUX) + * coding = convolutional; + * coding rate = 1/2; + * CRCsize = N/A; + * RateMatching = 235 */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tti := { + tti20 := { + { + rlc_Size := { + bitMode := { + sizeType1:= 60 + } + }, + numberOfTbSizeList := { + { zero := NULL }, + { one := NULL } + }, + logicalChannelList := { allSizes := NULL } + } + } + }, + semistaticTF_Information := { + channelCodingType := {convolutional := half}, + rateMatchingAttribute := 235, + crc_Size := crc0 + } + }; + + template (value) DedicatedTransChTFS cs_DCH_81_TFS_UE := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tti := { + tti20 := { + { + rlc_Size := { + bitMode := { + sizeType1:= 81 + } + }, + numberOfTbSizeList := {{ zero := NULL }}, + logicalChannelList := { + allSizes := NULL + } + }, + { + rlc_Size := { + bitMode := { + sizeType1 := 39 + } + }, + numberOfTbSizeList := {{ one := NULL }}, + logicalChannelList := { + allSizes := NULL + } + }, + { + rlc_Size := { + bitMode := { + sizeType1:= 81 + } + }, + numberOfTbSizeList := {{ one := NULL }}, + logicalChannelList := { + allSizes := NULL + } + } + } + }, + semistaticTF_Information := { + channelCodingType := { + convolutional := third + }, + rateMatchingAttribute := 200, + crc_Size := crc12 + } + }; + + template (value) DedicatedTransChTFS cs_DCH_103_TFS_UE := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tti := { + tti20 := { + { + rlc_Size := { + bitMode := { + sizeType1:= 103 + } + }, + numberOfTbSizeList := { + { zero := NULL }, + { one := NULL } + }, + logicalChannelList := { + allSizes := NULL + } + } + } + }, + semistaticTF_Information := { + channelCodingType := {convolutional := third}, + rateMatchingAttribute := 190, + crc_Size := crc0 + } + }; + + + template (value) DedicatedDynamicTF_Info cs_DedicatedDynamicTF_Info_148 := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rlc_Size := { + bitMode := { + sizeType2 := { + part1 := 2, + part2 := omit + } + } + }, + numberOfTbSizeList := { + { zero := NULL }, + { one := NULL } + }, + logicalChannelList := { + allSizes := NULL + } + }; + + template (value) DedicatedTransChTFS cs_DCH_148_TFS_UE_UL_Common(RateMatchingAttribute p_RateMatchingAttribute) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tti := { + tti40 := { + cs_DedicatedDynamicTF_Info_148 + } + }, + semistaticTF_Information := { + channelCodingType := { + convolutional := third + }, + rateMatchingAttribute := p_RateMatchingAttribute, + crc_Size := crc16 + } + }; + + template (value) DedicatedTransChTFS cs_DCH_148_TFS_UE_UL := cs_DCH_148_TFS_UE_UL_Common(170); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) DedicatedTransChTFS cs_DCH_148_TFS_DL_TDD_UE := cs_DCH_148_TFS_UE_UL_Common(170); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + //@sic R5s130345 sic@ + + template (value) DedicatedTransChTFS cs_DCH_148_TTI_10_TFS_UE := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tti := { + tti10 := { + cs_DedicatedDynamicTF_Info_148 + } + }, + semistaticTF_Information := { + channelCodingType := { + convolutional := third + }, + rateMatchingAttribute := 160, // dummy value, value is not needed for 13.6 kbps @sic R5s110242 sic@ + crc_Size := crc16 + } + }; + template (value) DedicatedTransChTFS cs_DCH_148_TTI_20_TFS_UE := + { /* @status */ + tti := { + tti20 := { + cs_DedicatedDynamicTF_Info_148 + } + }, + semistaticTF_Information := { + channelCodingType := {convolutional := third}, + rateMatchingAttribute := 165, + crc_Size := crc16 + } + }; + + template (value) CommonTransChTFS cs_BCH_246_TTI_20_TFS_LCR := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tti := { + tti20 := { + { + rlc_Size := { + tdd := { + commonTDD_Choice := { + bitModeRLC_SizeInfo := { + sizeType2 := + { + part1 := 14, + part2 := 6 + } + } + } + } + }, + numberOfTbSizeList := {{ one := NULL }}, + logicalChannelList := {configured := NULL} + } + } + }, + semistaticTF_Information := { + channelCodingType := {convolutional := third}, + rateMatchingAttribute := 1, + crc_Size := crc16 + } + }; + + //----------------------------------------------------------------------------- + + template (value) PowerOffsetInformation cs_PowerOffsetInfo_FDD(integer p_GainFactorBetaC) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + gainFactorInformation := { + signalledGainFactors := { + modeSpecificInfo := { + fdd := { + gainFactorBetaC := p_GainFactorBetaC + } + }, + gainFactorBetaD := tsc_GainFactorBetaD, + referenceTFC_ID := 0 + } + }, + powerOffsetPp_m := omit + }; + + template (value) PowerOffsetInformation cs_PowerOffsetInfoBelow64k := cs_PowerOffsetInfo_FDD(tsc_GainFactorBetaC_Below64k); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) PowerOffsetInformation cs_PowerOffsetInfoHigher64k := cs_PowerOffsetInfo_FDD(tsc_GainFactorBetaC_Higher64k); /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + + template (value) PowerOffsetInformation cs_PowerOffsetInfoComputed := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + gainFactorInformation := { + computedGainFactors := 0 + }, + powerOffsetPp_m := omit + }; + + template (value) PowerOffsetInformation cs_PowerOffsetInfo_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + gainFactorInformation := { + signalledGainFactors := { + modeSpecificInfo := { + tdd := NULL + }, + gainFactorBetaD := tsc_GainFactorBetaD, + referenceTFC_ID := 0 + } + }, + powerOffsetPp_m := omit + }; + + //----------------------------------------------------------------------------- + + template (value) TFCS cs_TFCS_CmplFACH_Tx(template (omit) PowerOffsetInformation p_PowerOffsetInformation) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + normalTFCI_Signalling := { + complete := { + ctfcSize := { + ctfc4Bit := { + cs_TFCS_CtfcSize_Ctfc4Bit(0, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc4Bit(1, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc4Bit(2, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc4Bit(3, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc4Bit(4, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc4Bit(5, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc4Bit(6, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc4Bit(8, p_PowerOffsetInformation) + } + } + } + } + }; + + template (value) TFCS cs_TFCS_SCCPCH_LCR := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + normalTFCI_Signalling := { + complete := { + ctfcSize := { + ctfc6Bit := { + cs_TFCS_CtfcSize_Ctfc6Bit(0), + cs_TFCS_CtfcSize_Ctfc6Bit(1), + cs_TFCS_CtfcSize_Ctfc6Bit(2), + cs_TFCS_CtfcSize_Ctfc6Bit(3), + cs_TFCS_CtfcSize_Ctfc6Bit(4), + cs_TFCS_CtfcSize_Ctfc6Bit(5), + cs_TFCS_CtfcSize_Ctfc6Bit(6), // @sic R5-133724 sic@ + cs_TFCS_CtfcSize_Ctfc6Bit(7), + cs_TFCS_CtfcSize_Ctfc6Bit(8), + cs_TFCS_CtfcSize_Ctfc6Bit(9), + cs_TFCS_CtfcSize_Ctfc6Bit(10), + cs_TFCS_CtfcSize_Ctfc6Bit(11), + cs_TFCS_CtfcSize_Ctfc6Bit(12), + cs_TFCS_CtfcSize_Ctfc6Bit(13), + cs_TFCS_CtfcSize_Ctfc6Bit(14), + cs_TFCS_CtfcSize_Ctfc6Bit(15), + cs_TFCS_CtfcSize_Ctfc6Bit(16), + cs_TFCS_CtfcSize_Ctfc6Bit(17) + } + } + } + } + }; + + template (value) TFCS cs_TFCS_Cmpl0(template (omit) PowerOffsetInformation p_PowerOffsetInformation) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + normalTFCI_Signalling := { + complete := { + ctfcSize := { + ctfc2Bit := { + cs_TFCS_CtfcSize_Ctfc2Bit(0, p_PowerOffsetInformation) + } + } + } + } + }; + + template (value) TFCS cs_TFCS_Cmpl0_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + normalTFCI_Signalling := { + complete := { + ctfcSize := { + ctfc2Bit := { + { + ctfc2 := 0, + powerOffsetInformation := { + gainFactorInformation := { + signalledGainFactors := { + modeSpecificInfo := { + tdd := NULL + }, + gainFactorBetaD := tsc_GainFactorBetaD, + referenceTFC_ID := 0 + } + }, + powerOffsetPp_m := omit + } + } + } + } + } + } + }; + + template (value) TFCS cs_TFCS_Cmpl0_1_Tx_FDD(template (omit) PowerOffsetInformation p_PowerOffsetInfo) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + normalTFCI_Signalling := { + complete := { + ctfcSize := { + ctfc2Bit := { + cs_TFCS_CtfcSize_Ctfc2Bit(0, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc2Bit(1, p_PowerOffsetInfo) + } + } + } + } + }; + + template (value) TFCS cs_TFCS_Cmpl0_1_Rx := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + normalTFCI_Signalling := { + complete := { + ctfcSize := { + ctfc2Bit := { + cs_TFCS_CtfcSize_Ctfc2Bit(0), + cs_TFCS_CtfcSize_Ctfc2Bit(1) + } + } + } + } + }; + + template (value) TFCS cs_TFCS_Cmpl0_1_2_Rx := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + normalTFCI_Signalling := { + complete := { + ctfcSize := { + ctfc2Bit := { + cs_TFCS_CtfcSize_Ctfc2Bit(0), + cs_TFCS_CtfcSize_Ctfc2Bit(1), + cs_TFCS_CtfcSize_Ctfc2Bit(2) + } + } + } + } + }; + + template (value) TFCS cs_TFCS_Cmpl0_1_Tx_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + normalTFCI_Signalling := { + complete := { + ctfcSize := { + ctfc2Bit := { + cs_TFCS_CtfcSize_Ctfc2Bit(0), + cs_TFCS_CtfcSize_Ctfc2Bit(1) + } + } + } + } + }; + + //----------------------------------------------------------------------------- + + template (value) DL_DPCH_InfoCommon_r6 cs_DL_DPCH_InfoCommon_FDD_r6(template (value) DL_DPCH_CfnHandling_r6_Type p_DL_DPCH_CfnHandling, + SF512_AndPilot p_Sf, + PositionFixedOrFlexible p_FixedFlexible, + boolean p_TFCI_Existence) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cfnHandling := p_DL_DPCH_CfnHandling, + modeSpecificInfo := { + fdd := { + dl_DPCH_PowerControlInfo := { + modeSpecificInfo := { + fdd := { + dpc_Mode := singleTPC + } + } + }, + powerOffsetPilot_pdpdch := tsc_DPCH_PowerOffsetPILOT, + dl_rate_matching_restriction := omit, + spreadingFactorAndPilot := p_Sf, + positionFixedOrFlexible := p_FixedFlexible, + tfci_Existence := p_TFCI_Existence + } + }, + mac_d_HFN_initial_value := omit + }; + + template (value) DL_DPCH_InfoCommon_r6 cs_DL_DPCH_InfoCommon_TDD_r6(template (value) DL_DPCH_CfnHandling_r6_Type p_DL_DPCH_CfnHandling := cs_DL_DPCH_CfnHandling_Initialise_r6) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cfnHandling := p_DL_DPCH_CfnHandling, + modeSpecificInfo := { + tdd := { + dl_DPCH_PowerControlInfo := { + modeSpecificInfo := { + tdd := { + tpc_StepSizeTDD := tsc_TPC_StepSize_TDD + } + } + } + } + }, + mac_d_HFN_initial_value := omit + }; + + //----------------------------------------------------------------------------- + + template (value) DL_CommonInformation_r8 cs_DL_CommonInformation_FDD_r8(template (value) DL_DPCH_CfnHandling_r6_Type p_DL_DPCH_CfnHandling, + SF512_AndPilot p_Sf, + PositionFixedOrFlexible p_PositionFixedOrFlexible := flexible, + boolean p_TfciExistence := true, + template (omit) DefaultDPCH_OffsetValueFDD p_DefaultDPCH_OffsetValue := omit, + template (omit) DPCH_CompressedModeInfo_r8 p_DPCH_CompressedModeInfo := omit, + template (omit) TX_DiversityMode p_TX_DiversityMode := noDiversity) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + dl_dpchInfoCommon := { + dl_DPCH_InfoCommon := cs_DL_DPCH_InfoCommon_FDD_r6(p_DL_DPCH_CfnHandling, p_Sf, p_PositionFixedOrFlexible, p_TfciExistence) + }, + modeSpecificInfo := { + fdd := { + defaultDPCH_OffsetValue := p_DefaultDPCH_OffsetValue, + dpch_CompressedModeInfo := p_DPCH_CompressedModeInfo, + tx_DiversityMode := p_TX_DiversityMode + } + }, + mac_hsResetIndicator := omit, + postVerificationPeriod := omit + }; + + template (value) DL_CommonInformation_r8 cs_DL_CommonInfoDCH_SRB_FDD(SF512_AndPilot p_Sf, + PositionFixedOrFlexible p_FixedFlexible, + boolean p_TFCI_Existence) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_DL_CommonInformation_FDD_r8(cs_DL_DPCH_CfnHandling_Initialise_r6, p_Sf, p_FixedFlexible, p_TFCI_Existence, tsc_DefaultDPCH_OffsetValue); + + + template (value) DL_CommonInformation_r8 cs_DL_CommonInformationRB_SetUp_FDD(SF512_AndPilot p_Sf, + PositionFixedOrFlexible p_PositionFixedOrFlexible, + boolean p_TfciExistence := true, + template (omit) DPCH_CompressedModeInfo_r8 p_DPCH_CompressedModeInfo := omit, + template (omit) TX_DiversityMode p_TX_DiversityMode := noDiversity) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_DL_CommonInformation_FDD_r8(cs_DL_DPCH_CfnHandling_Maintain_r6(omit), p_Sf, p_PositionFixedOrFlexible, p_TfciExistence, omit, p_DPCH_CompressedModeInfo, p_TX_DiversityMode); + + template (value) DL_CommonInformation_r8 cs_DL_CommonInformationRB_SetUpSpeech(SF512_AndPilot p_Sf) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_DL_CommonInformationRB_SetUp_FDD(p_Sf, fixed, false); + + + template (value) DL_DPCH_CfnHandling_r6_Type cs_DL_DPCH_CfnHandling_Maintain_r6(template (omit) TimingMaintainedSynchInd p_TimingMaintainedSynchInd := false_) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + maintain := { + timingmaintainedsynchind := p_TimingMaintainedSynchInd + } + }; + + template (value) DL_DPCH_CfnHandling_r6_Type cs_DL_DPCH_CfnHandling_Initialise_r6 := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + initialise := NULL + }; + + template (value) DL_CommonInformation_r8 cs_DL_CommonInfo_r8_TDD(template (value) DL_DPCH_CfnHandling_r6_Type p_DL_DPCH_CfnHandling := cs_DL_DPCH_CfnHandling_Initialise_r6) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + /* @sic R5s120954: new parameter p_DL_DPCH_CfnHandling sic@ */ + dl_dpchInfoCommon := { + dl_DPCH_InfoCommon := cs_DL_DPCH_InfoCommon_TDD_r6(p_DL_DPCH_CfnHandling) + }, + modeSpecificInfo := { + tdd := { + tddOption := { + tdd128 := { + tstd_Indicator := false + } + }, + defaultDPCH_OffsetValue := tsc_DefaultDPCH_OffsetValue_TDD + } + }, + mac_hsResetIndicator := omit, + postVerificationPeriod := omit + }; + + template (value) DL_FDPCH_InfoCommon_r6 cs_DL_FDPCH_InfoCommon_r6 := + { /* @status APPROVED (LTE_IRAT, UTRAN) */ + cfnHandling := { initialise := NULL }, + dl_FDPCH_PowerControlInfo := { + modeSpecificInfo := { + fdd := { + dpc_Mode := singleTPC + } + } + }, + dl_FDPCH_TPCcommandErrorRate := 4 + }; + + template (value) DL_CommonInformation_r8 cs_DL_CommonInformationF_DPCH_FDD := + { /* @status APPROVED (LTE_IRAT) */ + dl_dpchInfoCommon := { + dl_FDPCH_InfoCommon := cs_DL_FDPCH_InfoCommon_r6 + }, + modeSpecificInfo := { + fdd := { + defaultDPCH_OffsetValue := tsc_DefaultDPCH_OffsetValue, + dpch_CompressedModeInfo := omit, + tx_DiversityMode := noDiversity + } + }, + mac_hsResetIndicator := omit, + postVerificationPeriod := omit + }; + + template (value) DL_DPCH_InfoPerRL_r7 cs_DL_DPCH_InfoPerRL_SRB_FDD(SF512_AndCodeNumber p_SpreadingFactorDPCH, + template (omit) SecondaryScramblingCode p_SecScramblingCodeDPCH) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + fdd := { + pCPICH_UsageForChannelEst := mayBeUsed, + dpch_FrameOffset := (( (tsc_DefaultDPCH_OffsetValue*512 ) mod 38400)/256 ), /* DPCH-FrameOffset = DefaultDPCH-OffsetValueFDD MOD 38400 + Actual value DPCH-FrameOffset = IE value * 256 + Actual value DefaultDPCH-OffsetValueFDD = IE value * 512 */ + secondaryCPICH_Info := omit, + dl_ChannelisationCodeList := { + { + secondaryScramblingCode := p_SecScramblingCodeDPCH, + sf_AndCodeNumber := p_SpreadingFactorDPCH, + scramblingCodeChange := omit + } + }, + tpc_CombinationIndex := tsc_TPC_CombinationIndex, + powerOffsetTPC_pdpdch := omit, + closedLoopTimingAdjMode := omit + } + }; + + template (value) DL_DPCH_InfoPerRL_r7 cs_DL_DPCH_InfoPerRL_SRB_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tdd := { + dl_CCTrChListToEstablish := { + { + tfcs_ID := 1, + timeInfo := { + activationTime := omit, + durationTimeInfo := omit + }, + commonTimeslotInfo := { + secondInterleavingMode := frameRelated, + tfci_Coding := tfci_bits_8, // @sic R5s120750 sic@ + puncturingLimit := pl1, + repetitionPeriodAndLength := { repetitionPeriod1:= NULL } + }, + tddOption := { + tdd128 := { + dl_CCTrCH_TimeslotsCodes := { + firstIndividualTimeslotInfo := { + timeslotNumber := 4, + tfci_Existence := true, + midambleShiftAndBurstType := { + midambleAllocationMode := { + defaultMidamble := NULL + }, + midambleConfiguration := 8 + }, + modulation := mod_QPSK, + ss_TPC_Symbols := one, + additionalSS_TPC_Symbols := omit + }, + dl_TS_ChannelisationCodesShort := { + codesRepresentation := { + bitmap := tsc_DL_DPCH1_ChC_SRB_TDD + } + }, + moreTimeslots := { + noMore := NULL + } + } + } + }, + ul_CCTrChTPCList := omit + } + }, + dl_CCTrChListToRemove := omit + } + }; + + //----------------------------------------------------------------------------- + + template (value) RB_ActivationTimeInfo cs_RB_ActTimeInfo(integer p_RB_Id, + RLC_SequenceNumber p_N) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rb_Identity := p_RB_Id, + rlc_SequenceNumber := p_N + }; + + //----------------------------------------------------------------------------- + + template (value) OctetModeRLC_SizeInfoType1 cs_OctetModeRLC_Size144 := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + sizeType1 := 16 //144 : 128 payload size + 16 + }; + + // ----------------------------------------------------------------------------- + + template (value) OctetModeRLC_SizeInfoType1 cs_OctetModeRLC_Size336 := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + //@sic R5s120113 moved from UTRAN_RRC_Templates sic@ + sizeType2 := { // Actual size = (32 * part1) + 272 + (part2 * 8) + part1 := 2, + part2 := omit + } + }; + + + template (value) DL_AM_RLC_Mode_r7 cs_DL_AM_RLC_r7 := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + dl_RLC_PDU_size := { + fixedSize := cs_OctetModeRLC_Size336 //@sic R5s120113 sic@ + }, + inSequenceDelivery := true, + receivingWindowSize := rw128, + dl_RLC_StatusInfo := { + timerStatusProhibit := tsp200, + // timerEPC OMIT + dummy := omit, + missingPDU_Indicator := true, + timerStatusPeriodic := omit + } + }; + + template (value) DL_AM_RLC_Mode_r7 cds_DL_AM_RLC_SRB_r7 modifies cs_DL_AM_RLC_r7 := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + dl_RLC_PDU_size := { + fixedSize := cs_OctetModeRLC_Size144 //@sic R5s120113 sic@ + }, + receivingWindowSize := rw32 + }; + + template (value) DL_AM_RLC_Mode_r7 cds_DL_AM_RLC_HSDPA modifies cs_DL_AM_RLC_r7 := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + receivingWindowSize := rw768, + dl_RLC_StatusInfo := { + timerStatusProhibit := tsp100 + } + }; + + //----------------------------------------------------------------------------- + + template (value) UL_AM_RLC_Mode cs_UL_AM_RLC := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + transmissionRLC_Discard := { + noDiscard := dat15 + }, + transmissionWindowSize := tw128, + timerRST := tr500, + max_RST := rst4, + pollingInfo := { + timerPollProhibit := tpp200, + timerPoll := tp200, + poll_PDU := omit, + poll_SDU := sdu1, + lastTransmissionPDU_Poll := true, + lastRetransmissionPDU_Poll := true, + pollWindow := pw99, + timerPollPeriodic := omit + } + }; + + template (value) UL_AM_RLC_Mode cds_UL_AM_RLC_SRB modifies cs_UL_AM_RLC := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + transmissionWindowSize := tw32, + max_RST := rst1 + }; + + template (value) UL_AM_RLC_Mode cds_UL_AM_RLC_HSDPA modifies cs_UL_AM_RLC := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + pollingInfo := { + timerPollProhibit := tpp100, + timerPoll := tp100 + } + }; + + template (value) UL_AM_RLC_Mode cds_UL_AM_RLC_HSU modifies cs_UL_AM_RLC := + { /* @status APPROVED (LTE_IRAT) */ + transmissionWindowSize := tw256, + pollingInfo := { + timerPollProhibit := tpp100, + timerPoll := tp100 + } + }; + + //----------------------------------------------------------------------------- + + template (value) TransmissionRLC_Discard cs_TransmissionRLC_Discard_TimerBasedNoExplicit(NoExplicitDiscard p_NoExplicitDiscard := dt50) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + timerBasedNoExplicit := p_NoExplicitDiscard + }; + + template (value) UL_UM_RLC_Mode cs_UL_UM_RLC_Mode(template (omit) TransmissionRLC_Discard p_TransmissionRLC_Discard := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + transmissionRLC_Discard := p_TransmissionRLC_Discard + }; + + template (value) DL_UM_RLC_Mode_r6 cs_DL_UM_RLC_Mode_r6(DL_UM_RLC_LI_size p_DL_UM_RLC_LI_size := size7, + DL_Reception_Window_Size_r6 p_DL_Reception_Window_Size_r6 := size32) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + dl_UM_RLC_LI_size := p_DL_UM_RLC_LI_size, + dl_Reception_Window_Size := p_DL_Reception_Window_Size_r6 + }; + + //----------------------------------------------------------------------------- + + template (value) RLC_Info_r7 cs_RLC_InfoAM_Common(template (value) UL_AM_RLC_Mode p_UL_AM_RLC_Mode, + template (value) DL_AM_RLC_Mode_r7 p_DL_AM_RLC_Mode, + template (omit) RLC_Info_r7.useSpecialValueOfHEField p_UseSpecialValueOfHEField := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ul_RLC_Mode := { + ul_AM_RLC_Mode := p_UL_AM_RLC_Mode + }, + dl_RLC_Mode := { + dl_AM_RLC_Mode := p_DL_AM_RLC_Mode + }, + rlc_OneSidedReEst := false, + altE_bitInterpretation := omit,// not specified in RADIO BEARER SETUP acc. to TS 34.108 ch 9 + useSpecialValueOfHEField := p_UseSpecialValueOfHEField //default false + }; + + template (value) RLC_Info_r7 cs_RLC_InfoAM_Def := cs_RLC_InfoAM_Common(cs_UL_AM_RLC, cs_DL_AM_RLC_r7); /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + template (value) RLC_Info_r7 cs_RLC_InfoAM_HSU := cs_RLC_InfoAM_Common(cds_UL_AM_RLC_HSU, cds_DL_AM_RLC_HSDPA); /* @status APPROVED (LTE_IRAT) */ + template (value) RLC_Info_r7 cs_RLC_InfoAM_HSDPA := cs_RLC_InfoAM_Common(cds_UL_AM_RLC_HSDPA, cds_DL_AM_RLC_HSDPA); /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + + template (value) RLC_Info_r7 cs_RLC_InfoUM_Common(template (value) UL_UM_RLC_Mode p_UL_UM_RLC_Mode := cs_UL_UM_RLC_Mode, + template (value) DL_UM_RLC_Mode_r6 p_DL_UM_RLC_Mode := cs_DL_UM_RLC_Mode_r6) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ul_RLC_Mode := { + ul_UM_RLC_Mode := p_UL_UM_RLC_Mode + }, + dl_RLC_Mode := { + dl_UM_RLC_Mode := p_DL_UM_RLC_Mode + }, + rlc_OneSidedReEst := false, + altE_bitInterpretation := omit,// not specified in RADIO BEARER SETUP acc. to TS 34.108 ch 9 + useSpecialValueOfHEField := omit//default false + }; + + template (value) RLC_Info_r7 cs_RLC_InfoTM_Def := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + ul_RLC_Mode := { + ul_TM_RLC_Mode := { + transmissionRLC_Discard := omit, + segmentationIndication := false + } + }, + dl_RLC_Mode := { + dl_TM_RLC_Mode := { + segmentationIndication := false + } + }, + rlc_OneSidedReEst := false, + altE_bitInterpretation := omit, + useSpecialValueOfHEField := omit + }; + +} diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_Handover_Templates.ttcn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_Handover_Templates.ttcn new file mode 100644 index 0000000..97e03b9 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_Handover_Templates.ttcn @@ -0,0 +1,51 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-01-27 00:37:43 +0100 (Mon, 27 Jan 2014) $ +// $Rev: 10455 $ +/******************************************************************************/ + +module UTRAN_RRC_Handover_Templates { + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + + + template (value) DL_DCCH_Message cs_HandoverFromUTRANCommand_EUTRA (IntegrityCheckInfo p_Integrityinfo, + RRC_TransactionIdentifier p_RRC_TI, + octetstring p_Eutra_Message) := + { /* TS 36.508 Table 4.7B.1-2: HANDOVER FROM UTRAN COMMAND */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + integrityCheckInfo := p_Integrityinfo, + message_ := { + handoverFromUTRANCommand_EUTRA := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + r8 := { + handoverFromUTRANCommand_EUTRA_r8 := { + activationTime := omit, + toHandoverRAB_Info := { + { + rab_Identity := { + gsm_MAP_RAB_Identity := '00000101'B + }, + //mbms_SessionIdentity := omit, //- Not specified in message + //mbms_ServiceIdentity := omit, + cn_DomainIdentity := ps_domain, + nas_Synchronisation_Indicator := omit, //not present specified + re_EstablishmentTimer := useT315 + } + }, + eutra_Message := p_Eutra_Message + }, + handoverFromUTRANCommand_EUTRA_r8_add_ext := omit, + nonCriticalExtensions := omit + } + } + } + } + }; + +} diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_RAB_Templates.ttcn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_RAB_Templates.ttcn new file mode 100644 index 0000000..2861af3 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_RAB_Templates.ttcn @@ -0,0 +1,1939 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 22:08:20 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12181 $ +/******************************************************************************/ + +module UTRAN_RRC_RAB_Templates { + + //---------------------------------------------------------------------------- + // Import part + //---------------------------------------------------------------------------- + + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from CommonDefs all; + import from UTRAN_CommonDefs all; + import from UTRAN_RRC_CommonTemplates all; + import from UTRAN_RRC_Templates all; + import from UTRAN_Parameters all; // pc_HSDSCH_UE_Category_FDD, pc_HSDSCH_UE_Category_TDD + + //-------------------------------------------- + // Constants + //-------------------------------------------- + + const B8_Type tsc_RAB_DefCS := '00000001'B; /* Default RAB Id for the CS domain + @status APPROVED (LTE_A, LTE_IRAT) */ + const B8_Type tsc_RAB_DefPS := '00000101'B; /* Default AB Id for the PS domain + @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + const integer tsc_Mui := 0; /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + + const TimeslotNumber_LCR_r4 tsc_DL_TS_SCCH := 5; /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + + const SF512_AndCodeNumber tsc_DL_DPCH1_ChC_64k_PS := { sf32 := 0 }; /* Channelization code for tsc_DL_DPCH1 for a 64 kbps PS configuration + @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + const SF512_AndCodeNumber tsc_DL_DPCH1_ChC_Speech := { sf128 := 0 }; /* Channelization code for tsc_DL_DPCH1 for a speech configuration + @status APPROVED (LTE_A, LTE_IRAT) */ + const SF512_AndPilot tsc_DL_DPCH1_SFP_64k_PS := { sfd32 := NULL }; /* Spreading factor and pilot bits + @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + const SF512_AndPilot tsc_DL_DPCH1_SFP_SRB_3_4k := { sfd256 := pb4 }; /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + const SF512_AndPilot tsc_DL_DPCH1_SFP_Speech := { sfd128 := pb4 }; /* Spreading factor and pilot bits for tsc_DL_DPCH1 for a speech configuration + @status APPROVED (LTE_A, LTE_IRAT) */ + const SpreadingFactor tsc_UL_DPDCH_SF_64k_PS := sf16; /* Channelization code for UL DPDCH for a 64 kbps PS configuration + @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + const SpreadingFactor tsc_UL_DPDCH_SF_Speech := sf64; /* Channelization code for UL DPDCH for a speech configuration + @status APPROVED (LTE_A, LTE_IRAT) */ + const MaxAllowedUL_TX_Power tsc_MaxAllowPwr := 33; /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + const TimeslotNumber tsc_UL_TS_SICH := 1; /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) @sic R5s130661 sic@*/ + const HS_SCCH_Codes tsc_HS_SCCH_ChC7 := 7; /* Channelization code for HS-SCCH + @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + const E_AGCH_ChannelisationCode tsc_E_AGCH_ChannelisationCode := 10; /* channelisation code acc. TS 34.108 + @status APPROVED (LTE_IRAT, UTRAN) */ + const E_DCH_MAC_d_FlowMaxRetrans tsc_E_DCH_MAC_d_FlowMaxRetrans_DTCH := 7; /* max. no. of retransmissions for DTCH MAC-d flows + @status APPROVED (LTE_IRAT, UTRAN) */ + const E_DCH_MAC_d_FlowPowerOffset tsc_E_DCH_MAC_d_FlowPowerOffset := 0; /* E-DCH MAC-d flow power offset + @status APPROVED (LTE_IRAT, UTRAN) */ + const E_DCH_MAC_d_FlowIdentity tsc_E_DCH_MAC_d_FlowId_DTCH1 := 2; /* MAC-d flow id for 1st DTCH mapped on E-DCH + @status APPROVED (LTE_IRAT, UTRAN) */ + const E_DCH_MAC_d_FlowMaxRetrans tsc_E_DCH_MAC_d_FlowMaxRetrans_DCCH := 7; /* max. no. of retransmissions for DCCH MAC-d flows + @status APPROVED (LTE_IRAT, UTRAN) */ + const E_DCH_MAC_d_FlowIdentity tsc_E_DCH_MAC_d_FlowId_DCCH := 1; /* MAC-d flow id for DCCH mapped on E-DCH + @status APPROVED (LTE_IRAT, UTRAN) */ + const E_HICH_ChannelisationCode tsc_E_HICH_ChannelisationCode := 4; /* channelisation code acc. TS 34.108 + @status APPROVED (LTE_IRAT, UTRAN) */ + const MAC_d_FlowIdentity tsc_HS_DSCH_MAC_d_FlowId_DTCH1 := 0; /* @status APPROVED (LTE_IRAT) */ + const DDI tsc_E_DCH_DDI_1 := 1; /* @status APPROVED (LTE_IRAT, UTRAN) */ + const DDI tsc_E_DCH_DDI_2 := 2; /* @status APPROVED (LTE_IRAT, UTRAN) */ + const DDI tsc_E_DCH_DDI_3 := 3; /* @status APPROVED (LTE_IRAT, UTRAN) */ + const DDI tsc_E_DCH_DDI_4 := 4; /* @status APPROVED (LTE_IRAT, UTRAN) */ + const DDI tsc_E_DCH_DDI_5 := 5; /* @status APPROVED (LTE_IRAT, UTRAN) */ + const B8_Type tsc_RAB_DefPS_HS := '00000101'B; /* Default RAB Id for HS AM DTCH for PS domain + @status APPROVED (LTE_IRAT, UTRAN) */ + const MAC_LogicalChannelPriority tsc_UL_MAC_Prt1 := 1; /* @status APPROVED (LTE_IRAT) */ + const MAC_LogicalChannelPriority tsc_UL_MAC_Prt2 := 2; /* @status APPROVED (LTE_IRAT) */ + const MAC_LogicalChannelPriority tsc_UL_MAC_Prt3 := 3; /* @status APPROVED (LTE_IRAT) */ + const MAC_LogicalChannelPriority tsc_UL_MAC_Prt4 := 4; /* @status APPROVED (LTE_IRAT) */ + const E_HICH_RGCH_SignatureSequence tsc_E_HICH_SignatureSequence := 1; /* @status APPROVED (LTE_IRAT, UTRAN) */ + const integer tsc_F_DPCH_ChannelisationCode := 12; /* @status APPROVED (LTE_IRAT, UTRAN) */ + const E_HICH_RGCH_SignatureSequence tsc_E_RGCH_SignatureSequence := 0; /* acc. TS 34.108 + @status APPROVED (UTRAN) */ + + + //---------------------------------------------------------------------- + // Template init functions + //---------------------------------------------------------------------- + + /* + * @desc Function that determines the number of HARQ processes according to 34.108 cl. 6.10.2.4.5 Parameter Set + * @return HarqNrOfProcesses_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function f_GetNrOfHarqProcesses_FDD() return HarqNrOfProcesses_Type + { + var HarqNrOfProcesses_Type v_NumberOfProcesses; + + select (pc_HSDSCH_UE_Category_FDD) { // @sic R5w140207 sic@ + case (1, 2) { + v_NumberOfProcesses := n2; + } + case (3, 4, 11) { + v_NumberOfProcesses := n3; + } + case else { + v_NumberOfProcesses := n6; + } + } + return v_NumberOfProcesses; + } + + /* + * @desc Function that determines the number of HARQ processes for TDD + * @return HarqNrOfProcesses_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_GetNrOfHarqProcesses_TDD() return HarqNrOfProcesses_Type + { + var HarqNrOfProcesses_Type v_NumberOfProcesses; + + select (pc_HSDSCH_UE_Category_TDD) { // @sic R5w140207 sic@ + case (2, 5, 8, 11, 14) { + v_NumberOfProcesses := n6; + } + case (3, 6, 9, 12, 15) { + v_NumberOfProcesses := n8; + } + case else { + v_NumberOfProcesses := n4; + } + } + return v_NumberOfProcesses; + }; + + /* + * @desc Function that determines the TTI value based on UE EDCH category + * @return E_DCH_TTI + * @status APPROVED (LTE_IRAT, UTRAN) + */ + function f_Get_EDCH_TTI_Value() return E_DCH_TTI + { + var E_DCH_TTI v_E_DCH_TTI_Value := tti2; + + // @sic R5w140207 sic@ + if (pc_EDCH_UE_Category_FDD == 1 or pc_EDCH_UE_Category_FDD == 3 or pc_EDCH_UE_Category_FDD == 5 or + pc_EDCH_UE_Category_TDD == 1 or pc_EDCH_UE_Category_TDD == 3 or pc_EDCH_UE_Category_TDD == 5 ) { + v_E_DCH_TTI_Value := tti10; + } + return v_E_DCH_TTI_Value; + }; + + //============================================================================ + // Common RRC templates + //---------------------------------------------------------------------------- + + template (value) U_RNTI_Short cs_URNTI_Short := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + srnc_Identity := '000000000001'B, + s_RNTI_2 := '0000000001'B + }; + + //============================================================================ + // HSDPA templates + //---------------------------------------------------------------------------- + + template (value) HARQ_Info_r7 cs_HARQ_Info_FDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + numberOfProcesses := f_GetNrOfHarqProcesses_FDD(), + memoryPartitioning := { + implicit := NULL + } + }; + + template (value) HARQ_Info_r7 cs_HARQ_Info_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + numberOfProcesses := f_GetNrOfHarqProcesses_TDD(), + memoryPartitioning := { + implicit := NULL + } + }; + + template (value) Measurement_Feedback_Info_r7 cs_Measurement_Feedback_Info := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + modeSpecificInfo := { + fdd := { + measurementPowerOffset := 12, // Actual measurement power offset value = IE value * 0.5 + feedback_cycle := fc4, // Feedback cycle + cqi_RepetitionFactor := 1, // According to 34.108 cl. 9.1.1 RADIO BEARER SETUP + deltaCQI := 5 + } + } + }; + + template (value) AddOrReconfMAC_dFlow cs_AddOrReconfMAC_dFlow(template (value) MAC_hs_AddReconfQueue p_MAC_hs_AddReconfQueue) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + mac_hs_AddReconfQueue_List := { + p_MAC_hs_AddReconfQueue + }, + mac_hs_DelQueue_List := omit + }; + + template (value) AddOrReconfMAC_dFlow cs_AddOrReconfMAC_dFlow2(template (value) MAC_hs_AddReconfQueue p_MAC_hs_AddReconfQueue1, + template (value) MAC_hs_AddReconfQueue p_MAC_hs_AddReconfQueue2) := + { /* @status APPROVED (LTE_IRAT) */ + mac_hs_AddReconfQueue_List := { + p_MAC_hs_AddReconfQueue1, + p_MAC_hs_AddReconfQueue2 + }, + mac_hs_DelQueue_List := omit + }; + + template (value) MAC_hs_AddReconfQueue cs_MAC_hs_AddReconfQueue ( integer p_PDUSize := 336, + integer p_Id := 0 // @sic R5s120671 sic@ + ) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + mac_hsQueueId := p_Id, + mac_dFlowId := p_Id, + reorderingReleaseTimer := rt50, + mac_hsWindowSize := mws16, + mac_d_PDU_SizeInfo_List := { + { + mac_d_PDU_Size := p_PDUSize, // @sic R5s120397 sic@ + mac_d_PDU_Index := 0 + } + } + }; + + template (value) HSDSCH_Info_r7 cs_HSDSCH_Info_r7(template (value) HARQ_Info_r7 p_HARQ_Info, + template (value) AddOrReconfMAC_dFlow p_AddOrReconfMAC_dFlow) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + harqInfo := p_HARQ_Info, + dl_MAC_HeaderType := { + mac_hs := p_AddOrReconfMAC_dFlow + } + }; + + template (value) HS_SCCH_Info_r7 cs_HS_SCCH_Info_FDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + modeSpecificInfo := { + fdd := { + hS_SCCHChannelisationCodeInfo := { + tsc_HS_SCCH_ChC7 + }, + dl_ScramblingCode := omit + } + } + }; + + template (value) HS_SCCH_TDD128_r6 cs_HS_SCCH_TDD128_r6(HS_ChannelisationCode_LCR p_FirstChannelisationCode, + HS_ChannelisationCode_LCR p_SecondChannelisationCode, + HS_ChannelisationCode_LCR p_HS_SICH_ChannelisationCode) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + timeslotNumber := tsc_DL_TS_SCCH, + firstChannelisationCode := p_FirstChannelisationCode, + secondChannelisationCode := p_SecondChannelisationCode, + midambleAllocationMode := { + defaultMidamble := NULL + }, + midambleConfiguration := 4, + hs_sich_configuration := { + timeslotNumber := tsc_UL_TS_SICH, + channelisationCode := p_HS_SICH_ChannelisationCode, + midambleAllocationMode := { + defaultMidamble := NULL + }, + midambleConfiguration := 8 //@sic R5s140007 sic@ + } + }; + + template (value) HS_SCCH_Info_r9 cs_HS_SCCH_Info_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + modeSpecificInfo := { + tdd := { + tdd128 := { + nack_ack_power_offset := 0, + power_level_HSSICH := -60, + tpc_step_size := s1, + bler_target := 0, + hS_SCCH_tpc_step_size := omit, + powerControlGAP := omit, + pathlossCompensationSwitch := omit, + hS_SCCH_SetConfiguration := { + cs_HS_SCCH_TDD128_r6(cc16_5, cc16_6, cc16_11), + cs_HS_SCCH_TDD128_r6(cc16_7, cc16_8, cc16_12), + cs_HS_SCCH_TDD128_r6(cc16_9, cc16_10, cc16_13), + cs_HS_SCCH_TDD128_r6(cc16_11, cc16_12, cc16_14) + } + } + } + } + }; + + template (value) DL_HSPDSCH_Information_r8 cs_DL_HSPDSCH_Information_FDD ( template (value) HS_SCCH_Info_r7 p_HS_SCCH_Info, + template (value) Measurement_Feedback_Info_r7 p_Measurement_Feedback_Info ) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + hs_scch_Info := p_HS_SCCH_Info, + measurement_feedback_Info := p_Measurement_Feedback_Info, + modeSpecificInfo := { + fdd := { + dl_64QAM_Configured := omit, + hs_DSCH_TBSizeTable := omit//FFS - check value + } + } + }; + + template (value) DL_HSPDSCH_Information_r9 cs_DL_HSPDSCH_Information_TDD ( template (value) HS_SCCH_Info_r9 p_HS_SCCH_Info, + template (value) HS_PDSCH_Midamble_Configuration_TDD128 p_HS_PDSCH_Midamble_Configuration_TDD128 ) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + hs_scch_Info := p_HS_SCCH_Info, + measurement_feedback_Info := omit, + modeSpecificInfo := { + tdd := { + tdd128 := { + hs_PDSCH_Midamble_Configuration_tdd128 := p_HS_PDSCH_Midamble_Configuration_TDD128, + dl_MultiCarrier_Information := omit, + tS0_Indicator:= omit, + outofSyncWindow:= omit + } + } + } + }; + + template (value) HS_PDSCH_Midamble_Configuration_TDD128 cs_HS_PDSCH_Midamble_Configuration_TDD128 := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + midambleAllocationMode := { + defaultMidamble := NULL + }, + midambleConfiguration := 8 //@sic R5s140007 sic@ + }; + + //============================================================================ + // HSPA templates + //---------------------------------------------------------------------------- + + template (value) E_AGCH_Information_r7 cs_E_AGCH_Info_FDD_r7 := + { /* @status APPROVED (LTE_IRAT) */ + modeSpecific := { + fdd := { + e_AGCH_ChannelisationCode := tsc_E_AGCH_ChannelisationCode + } + } + }; + + template (value) E_AGCH_Information_r8 cs_E_AGCH_Info_FDD_r8 := + { /* @status APPROVED (LTE_IRAT, UTRAN) */ + modeSpecific := { + fdd := { + e_AGCH_ChannelisationCode := tsc_E_AGCH_ChannelisationCode + } + } + }; + + template (value) E_AGCH_Information_r8 cs_E_AGCH_Info_TDD_r8 := + { /* @status APPROVED (LTE_IRAT) */ + modeSpecific := { + tdd := { + tdd128 := { + rdi_Indicator := false, + tpc_StepSize := 1, + e_AGCH_Set_Config := { + { + timeslotNumber := 6, + firstChannelisationCode := cc16_13, + secondChannelisationCode := cc16_14, + midambleAllocationMode := { defaultMidamble := NULL}, + midambleConfiguration := 8 + } + }, + e_AGCH_BLER_Target := -5, + e_AGCH_InactivityMonitorThreshold := omit + } + } + } + }; + + template (value) E_RGCH_Information cs_E_RGCH_Info := + { /* @status APPROVED (UTRAN) */ + signatureSequence := tsc_E_RGCH_SignatureSequence, + rg_CombinationIndex := 0 + }; + + template (value) E_HICH_Information cs_E_HICH_Info := + { /* @status APPROVED (LTE_IRAT, UTRAN) */ + channelisationCode := tsc_E_HICH_ChannelisationCode, + signatureSequence := tsc_E_HICH_SignatureSequence + }; + + template (value) DL_FDPCH_InfoPerRL_r7 cs_DL_DPCH_InfoPerRL_FDPCH_FDD(template (omit) FDPCH_SlotFormat p_FDPCH_SlotFormat := omit, + integer p_F_DPCH_ChannelisationCode := tsc_F_DPCH_ChannelisationCode) := + { /* @status APPROVED (LTE_IRAT, UTRAN) */ + pCPICH_UsageForChannelEst := mayBeUsed, + fdpch_FrameOffset := ((tsc_DefaultDPCH_OffsetValue * 512) mod 38400) / 256, + fdpch_SlotFormat := p_FDPCH_SlotFormat, + secondaryCPICH_Info := omit, + secondaryScramblingCode := omit, + dl_ChannelisationCode := p_F_DPCH_ChannelisationCode, + tpc_CombinationIndex := tsc_TPC_CombinationIndex, + sttdIndication := omit + }; + + template (value) E_DPDCH_Info_r8 cs_E_DPDCH_Info := + { /* @status APPROVED (LTE_IRAT, UTRAN) */ + e_TFCI_TableIndex := 0, + e_DCH_MinimumSet_E_TFCI := 9, + reference_E_TFCIs := { + { + reference_E_TFCI := 11, + reference_E_TFCI_PO_r7 := 4 + }, + { + reference_E_TFCI := 83, + reference_E_TFCI_PO_r7 := 16 + } + }, + minReduced_E_DPDCH_GainFactor := omit, + maxChannelisationCodes := sf4x2, + pl_NonMax := 21, + schedulingInfoConfiguration := { + periodicityOfSchedInfo_NoGrant := omit, + periodicityOfSchedInfo_Grant := omit, + powerOffsetForSchedInfo := 0 + }, + threeIndexStepThreshold := omit, // default: 0 + twoIndexStepThreshold := omit // default: 0 + }; + + template (value) E_DPCCH_Info_r7 cs_E_DPCCH_Info := + { /* @status APPROVED (LTE_IRAT, UTRAN) */ + e_DPCCH_DPCCH_PowerOffset := 0, + happyBit_DelayCondition := ms100 , + e_TFC_Boost_Info := omit, + e_DPDCH_PowerInterpolation := omit + }; + + template (value) E_RUCCH_Info cs_E_RUCCH_Info := + { /* @status APPROVED (LTE_IRAT) */ + modeSpecificInfo := { + tdd128 := { + t_RUCCH := ms200, + n_RUCCH := 3, + t_WAIT := ms320, + t_SI := ms20, + extendedEstimationWindow := 3, + e_RUCCH_AccessServiceClass := { + { accessServiceClass_TDD_LCR := cs_AccessServiceClass_TDD_LCR_r4 }, + { accessServiceClass_TDD_LCR := cs_AccessServiceClass_TDD_LCR_r4 }, + { accessServiceClass_TDD_LCR := cs_AccessServiceClass_TDD_LCR_r4 }, + { accessServiceClass_TDD_LCR := cs_AccessServiceClass_TDD_LCR_r4 }, + { accessServiceClass_TDD_LCR := cs_AccessServiceClass_TDD_LCR_r4 }, + { accessServiceClass_TDD_LCR := cs_AccessServiceClass_TDD_LCR_r4 }, + { accessServiceClass_TDD_LCR := cs_AccessServiceClass_TDD_LCR_r4 } + }, + e_RUCCH_PersistenceScalingFactor := { psf0_9, psf0_9, psf0_9, psf0_9, psf0_9}, + sync_UL_InfoForE_RUCCH := { + prxUpPCHdes := 0, + powerRampStep := 1, + max_SYNC_UL_Transmissions := tr4, + e_RUCCH_Sync_UL_Codes_Bitmap := '00001111'B, + mmax := 4 + }, + prach_information := { + { + timeslot := 1, + prach_ChanCodes_list_LCR := { cc8_8 }, + midambleShiftAndBurstType := { + midambleAllocationMode := {defaultMidamble := NULL}, + midambleConfiguration := 8 + }, + fpach_Info := { + timeslot := 0, + channelisationCode := tsc_FPACH1_ChC, + midambleShiftAndBurstType := { + midambleAllocationMode := {defaultMidamble := NULL}, + midambleConfiguration := 8 + }, + wi := 4 + } + } + } + } + } + }; + + template (value) E_TFCS_Info cs_E_TFCS_Info := + { /* @status APPROVED (LTE_IRAT) */ + reference_Beta_QPSK_List := { + { + reference_Code_Rate := 2, + reference_Beta := -10 + }, + { + reference_Code_Rate := 8, + reference_Beta := -3 + } + }, + reference_Beta_16QAM_List := { + { + reference_Code_Rate := 2, + reference_Beta := -5 + }, + { + reference_Code_Rate := 8, + reference_Beta := 2 + } + } + }; + + template (value) E_PUCH_Info cs_E_PUCH_Info := + { /* @status APPROVED (LTE_IRAT) */ + e_TFCS_Info := cs_E_TFCS_Info, + modeSpecificInfo := { + tdd128 := { + snpl_ReportType := type1, + prxdes_base := -112, + beaconPLEst := false, + tpc_StepSize := 1, + pebase_PowerControlGAP := 254, + ul_SynchronisationParameters := { + stepSize := 1, + frequency := 1 + }, + e_PUCH_TS_ConfigurationList := { + { + timeslotNumber := 2, + midambleAllocationMode := {defaultMidamble := NULL}, + midambleConfiguration := 8 + } + }, + minimum_Allowed_Code_Rate := 0, + maximum_Allowed_Code_Rate := 63, + maximumNumOfRetransSchedInfo := 4, + retransTimerForSchedInfo := ms40 + } + }, + powerOffsetForSchedInfo := 0 + }; + + template (value) RLC_PDU_SizeList cs_RLC_PDU_SizeList_336 := + { /* @status APPROVED (LTE_IRAT) */ + { + sizeType2 := { + part1 := 2, + part2 := omit + } + } + }; + + template (value) RLC_PDU_SizeList cs_RLC_PDU_SizeList_144 := + { /* @status APPROVED (LTE_IRAT, UTRAN) */ + { sizeType1 := 16 } + }; + + //---------------------------------------------------------------------------- + template (value) UL_LogicalChannelMappings_r8 cs_UL_LogicalChannelMappings_E_DCH_fixedSize_r8(LogicalChannelIdentity p_LogicalChannelIdUL := tsc_UL_DTCH1, + E_DCH_MAC_d_FlowIdentity p_E_DCH_MAC_d_FlowIdentity := tsc_E_DCH_MAC_d_FlowId_DTCH1, + DDI p_DDI := tsc_E_DCH_DDI_5, + template (value) RLC_PDU_SizeList p_RLC_PDU_SizeList := cs_RLC_PDU_SizeList_144, + boolean p_IncludeInSchedulingInfo := true, + MAC_LogicalChannelPriority p_LogicalChannelPriority := 8) := + { /* @status APPROVED (LTE_IRAT, UTRAN) */ + oneLogicalChannel := { + ul_TrCH_Type := { + e_dch := { + logicalChannelIdentity := p_LogicalChannelIdUL, + e_DCH_MAC_d_FlowIdentity := p_E_DCH_MAC_d_FlowIdentity, + rlc_PDU_Size := { + fixedSize := { + ddi := p_DDI, + rlc_PDU_SizeList := p_RLC_PDU_SizeList + } + }, + includeInSchedulingInfo := p_IncludeInSchedulingInfo + } + }, + mac_LogicalChannelPriority := p_LogicalChannelPriority + } + }; + + template (value) RB_MappingOption_r8 cs_RB_MappingOptionPS_RAB1_EDCH_HSDSCH := + { /* @status APPROVED (LTE_IRAT) */ + ul_LogicalChannelMappings := cs_UL_LogicalChannelMappings_E_DCH_fixedSize_r8(-, -, -, cs_RLC_PDU_SizeList_336), + dl_LogicalChannelMappingList := { + { + dl_TransportChannelType := { + hsdsch := { + mac_hs := tsc_HS_DSCH_MAC_d_FlowId_DTCH1 + } + }, + logicalChannelIdentity := omit + } + } + }; + + template (value) RB_MappingOption_r8 cs_RB_MappingOptionSRB_EDCH_HSDSCH_r8(LogicalChannelIdentity p_LogicalChannelIdUL, + DDI p_DDI, + MAC_LogicalChannelPriority p_LogicalChannelPriority, + LogicalChannelIdentity p_LogicalChannelIdDL) := + { /* @status APPROVED (LTE_IRAT) */ + ul_LogicalChannelMappings := cs_UL_LogicalChannelMappings_E_DCH_fixedSize_r8(p_LogicalChannelIdUL, 1, p_DDI, -, false, p_LogicalChannelPriority), + dl_LogicalChannelMappingList := { + { + dl_TransportChannelType := { + hsdsch := { + mac_hs := 1 // @sic R5s120397 sic@ + } + }, + logicalChannelIdentity := p_LogicalChannelIdDL + } + } + }; + + //---------------------------------------------------------------------------- + + template (value) DL_DPCH_InfoPerRL_r7 cs_DL_DPCH_InfoPerRL_r7_64k_PS_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + tdd := { + dl_CCTrChListToEstablish := { + { + tfcs_ID := 1, + timeInfo := { + activationTime := omit, + durationTimeInfo := omit + }, + commonTimeslotInfo := { + secondInterleavingMode := frameRelated, + tfci_Coding := tfci_bits_16, + puncturingLimit := pl0_56, // @sic R5s120871 sic@ + repetitionPeriodAndLength := { repetitionPeriod1:= NULL } + }, + tddOption := { + tdd128 := { + dl_CCTrCH_TimeslotsCodes := { + firstIndividualTimeslotInfo := { + timeslotNumber := 4, + tfci_Existence := true, + midambleShiftAndBurstType := { + midambleAllocationMode := {defaultMidamble := NULL}, + midambleConfiguration := 8 //@sic R5s140007 sic@ + }, + modulation := mod_QPSK, + ss_TPC_Symbols := one, + additionalSS_TPC_Symbols := omit + }, // first + dl_TS_ChannelisationCodesShort := { + codesRepresentation := { bitmap := '1111111100000000'B} + }, + moreTimeslots := { noMore := NULL} + } // dl_CCTrCH + } + }, //tdd128 + ul_CCTrChTPCList := omit + } + }, + dl_CCTrChListToRemove := omit + } + }; + + template (value) DL_DPCH_InfoPerRL_r7 cs_DL_DPCH_InfoPerRL_r7_PS_and_ConvSpeech_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + tdd := { + dl_CCTrChListToEstablish := { + { + tfcs_ID := 1, + timeInfo := { + activationTime := omit, + durationTimeInfo := omit + }, + commonTimeslotInfo := { + secondInterleavingMode := frameRelated, + tfci_Coding := tfci_bits_16, + puncturingLimit := pl0_56, //@sic R5s130447 sic@ + repetitionPeriodAndLength := { repetitionPeriod1:= NULL } + }, + tddOption := { + tdd128 := { + dl_CCTrCH_TimeslotsCodes := { + firstIndividualTimeslotInfo := { + timeslotNumber := 6, + tfci_Existence := true, + midambleShiftAndBurstType := { + midambleAllocationMode := {defaultMidamble := NULL}, + midambleConfiguration := 8 //@sic R5s140007 sic@ + }, + modulation := mod_QPSK, + ss_TPC_Symbols := one, + additionalSS_TPC_Symbols := omit + }, // first + dl_TS_ChannelisationCodesShort := { + codesRepresentation := { bitmap := '0000001111111111'B} + }, + moreTimeslots := { noMore := NULL} + } // dl_CCTrCH + } + }, //tdd128 + ul_CCTrChTPCList := omit + } + }, + dl_CCTrChListToRemove := omit + } + }; + + template (value) DL_DPCH_InfoPerRL_r7 cs_DL_DPCH_InfoPerRL_Speech_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + tdd := { + dl_CCTrChListToEstablish := { + { + tfcs_ID := 1, + timeInfo := { + activationTime := omit, + durationTimeInfo := omit + }, + commonTimeslotInfo := { + secondInterleavingMode := frameRelated, + tfci_Coding := tfci_bits_16, // @sic R5s120956 sic@ + puncturingLimit := pl0_48, + repetitionPeriodAndLength := { repetitionPeriod1:= NULL } + }, + tddOption := { + tdd128 := { + dl_CCTrCH_TimeslotsCodes := { + firstIndividualTimeslotInfo := { + timeslotNumber := 4, + tfci_Existence := true, + midambleShiftAndBurstType := { + midambleAllocationMode := { + defaultMidamble := NULL + }, + midambleConfiguration := 8 + }, + modulation := mod_QPSK, + ss_TPC_Symbols := one, + additionalSS_TPC_Symbols := omit + }, + dl_TS_ChannelisationCodesShort := { + codesRepresentation := { + bitmap := tsc_DL_DPCH1_ChC_Speech_TDD + } + }, + moreTimeslots := { + noMore := NULL + } + } + } + }, + ul_CCTrChTPCList := omit + } + }, + dl_CCTrChListToRemove := omit + } + }; + + //---------------------------------------------------------------------------- + + template (value) TFCS cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx := + { /* Values according to condition A3 in TS 34.108 clause 9.1.1: DL Transport channel information common for all transport channel */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + normalTFCI_Signalling := { + complete := { + ctfcSize := { + ctfc4Bit := { + cs_TFCS_CtfcSize_Ctfc4Bit(0), + cs_TFCS_CtfcSize_Ctfc4Bit(1), + cs_TFCS_CtfcSize_Ctfc4Bit(2), + cs_TFCS_CtfcSize_Ctfc4Bit(3), + cs_TFCS_CtfcSize_Ctfc4Bit(4), + cs_TFCS_CtfcSize_Ctfc4Bit(5), + cs_TFCS_CtfcSize_Ctfc4Bit(6), + cs_TFCS_CtfcSize_Ctfc4Bit(7), + cs_TFCS_CtfcSize_Ctfc4Bit(8), + cs_TFCS_CtfcSize_Ctfc4Bit(9) + } + } + } + } + }; + + template (value) TFCS cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Tx ( template (value) PowerOffsetInformation p_PowerOffsetInformation ) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + normalTFCI_Signalling := { + complete := { + ctfcSize := { + ctfc4Bit := { + cs_TFCS_CtfcSize_Ctfc4Bit(0, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc4Bit(1, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc4Bit(2, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc4Bit(3, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc4Bit(4, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc4Bit(5, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc4Bit(6, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc4Bit(7, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc4Bit(8, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc4Bit(9, p_PowerOffsetInformation) + } + } + } + } + }; + + template (value) TFCS cs_TFCS_Cmpl0_1_11_12_13_23_Tx ( template (value) PowerOffsetInformation p_PowerOffsetInformation ) := + { /* used for SPEECH RAB: 36.508 cl. 4.8.3 Table 4.8.3-1 + UTRA Speech TS 34.108 subclause 6.10.2.4.1.4 */ + /* @status APPROVED (LTE_A, LTE_IRAT, UTRAN) */ + normalTFCI_Signalling := { + complete := { + ctfcSize := { + ctfc6Bit := { + cs_TFCS_ReconfAdd_Ctfc6Bit(0, cs_PowerOffsetInfoComputed), + cs_TFCS_ReconfAdd_Ctfc6Bit(1, cs_PowerOffsetInfoComputed), + cs_TFCS_ReconfAdd_Ctfc6Bit(11, cs_PowerOffsetInfoComputed), + cs_TFCS_ReconfAdd_Ctfc6Bit(12, cs_PowerOffsetInfoComputed), + cs_TFCS_ReconfAdd_Ctfc6Bit(13, cs_PowerOffsetInfoComputed), + cs_TFCS_ReconfAdd_Ctfc6Bit(23, p_PowerOffsetInformation) + } + } + } + } + }; + + template (value) TFCS cs_TFCS_Cmpl0_1_11_12_13_23_Rx := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + normalTFCI_Signalling := { + complete := { + ctfcSize := { + ctfc6Bit := { + cs_TFCS_ReconfAdd_Ctfc6Bit(0, omit), + cs_TFCS_ReconfAdd_Ctfc6Bit(1, omit), + cs_TFCS_ReconfAdd_Ctfc6Bit(11, omit), + cs_TFCS_ReconfAdd_Ctfc6Bit(12, omit), + cs_TFCS_ReconfAdd_Ctfc6Bit(13, omit), + cs_TFCS_ReconfAdd_Ctfc6Bit(23, omit) + } + } + } + } + }; + + //---------------------------------------------------------------------------- + + template (value) UL_DPCH_Info_r7 cs_UL_DPCH_InfoACK_HSDPA_FDD(SpreadingFactor p_SprdFct, + PuncturingLimit p_PuncLimit, + UL_ScramblingCode p_UL_ScramblingCode) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_UL_DPCH_Info_FDD(p_SprdFct, p_PuncLimit, p_UL_ScramblingCode, cs_UL_DPCH_PowerControlInfo_r7_FDD(3, 3, 1)); + + template (value) UL_DPCH_Info_r7 cs_UL_DPCH_OnlyHS_PDSCH_FDD (UL_ScramblingCode p_UL_ScramblingCode) := + { /* @status APPROVED (LTE_IRAT, UTRAN) */ + ul_DPCH_PowerControlInfo := cs_UL_DPCH_PowerControlInfo_r7_FDD(3, 3, 1), + modeSpecificInfo := { + fdd := { + scramblingCodeType := longSC, + scramblingCode := p_UL_ScramblingCode, + dpdchPresence := { + notPresent := { + tfci_Existence := false, + numberOfFBI_Bits := omit, + numberOfTPC_Bits := omit + } + } + } + } + }; + + template (value) UL_DPCH_Info_r7 cs_UL_DPCH_OnlyHS_PDSCH_TDD(UL_TargetSIR p_UL_TargetSIR := 62, + template (omit) ActivationTime p_ActivationTime := omit, + TFCI_Coding p_TFCI_Coding := tfci_bits_16 + ) := + { /* @status APPROVED (LTE_IRAT) */ + ul_DPCH_PowerControlInfo := cs_UL_DPCH_PowerControlInfo_r7_TDD(p_UL_TargetSIR), + modeSpecificInfo := { + tdd := { + ul_TimingAdvance := cs_TDD_UL_TimingAdvanceControl_r7, + ul_CCTrCHList := { + cs_UL_CCTrCH_TDD_r7(-, p_UL_TargetSIR, p_ActivationTime, p_TFCI_Coding, pl1, cs_CommonTimeslotInfo_TDD128(1, 8)) + }, + ul_CCTrCHListToRemove := omit + } + } + }; + + + template (value) UL_DPCH_Info_r7 cs_UL_DPCH_64k_PS_TDD := cs_UL_DPCH_Info_1TS_TDD (1, omit, tfci_bits_16, pl0_56,1, tsc_UL_DPCH1_ChC_64k_PS); /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) @sic R5s120955 sic@ */ + template (value) UL_DPCH_Info_r7 cs_UL_DPCH_Speech_TDD := cs_UL_DPCH_Info_1TS_TDD (1, omit, tfci_bits_16, pl0_48,1, tsc_UL_DPCH1_ChC_Speech); /* @status APPROVED (LTE_A, LTE_IRAT) @sic R5s120956 sic@*/ + template (value) UL_DPCH_Info_r7 cs_UL_DPCH_PS_and_ConvSpeech_TDD := cs_UL_DPCH_Info_1TS_TDD (1, omit, tfci_bits_16, pl0_92,3, tsc_UL_DPCH1_ChC_PS_and_ConvSpeech); /* @status APPROVED (LTE_A, LTE_IRAT) @sicR5s130447 sic@ */ + + //---------------------------------------------------------------------------- + + template (value) UL_CommonTransChInfo_r4 cs_UL_CommTrChInfoDCH_PS_64k_FDD := cs_UL_CommTrChInfoDCCH_Common_FDD(cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Tx(cs_PowerOffsetInfoHigher64k)); /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + template (value) UL_CommonTransChInfo_r4 cs_UL_CommTrChInfoTM_12_2k_FDD := cs_UL_CommTrChInfoDCCH_Common_FDD(cs_TFCS_Cmpl0_1_11_12_13_23_Tx(cs_PowerOffsetInfoBelow64k)); /* @status APPROVED (LTE_A, LTE_IRAT) */ + + template (value) UL_CommonTransChInfo_r4 cs_UL_CommTrChInfoDCH_PS_64k_TDD := cs_UL_CommTrChInfoDCCH_Common_TDD(cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Tx(cs_PowerOffsetInfo_TDD)); /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + template (value) UL_CommonTransChInfo_r4 cs_UL_CommTrChInfoTM_12_2k_TDD := cs_UL_CommTrChInfoDCCH_Common_TDD(cs_TFCS_Cmpl0_1_11_12_13_23_Tx(cs_PowerOffsetInfo_TDD)); /* @status APPROVED (LTE_A, LTE_IRAT) */ + + //---------------------------------------------------------------------------- + + //---------------------------------------------------------------------------- + + template (value) RLC_SizeExplicitList cs_RLC_SizeExplicit2 := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + { rlc_SizeIndex := 2 } + }; + + template (value) RLC_SizeExplicitList cs_RLC_SizeExplicit1 := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + // @sic R5s130009 sic@ + { rlc_SizeIndex := 1 } + } + + template (value) DedicatedTransChTFS cs_DCH_81_TFS_DL_UE := + { /* transport format set for RAB subflow#1 on dedicated channel + TS 34.108 cl. 6.10.2.4.1.4: + TTI = 20 ms; + three transport formats: TransportBlocks = 1, TB size = 0 bits; TransportBlocks = 1, TB size = 39 bits; TansportBlock = 1, Size = 81. + coding = convolutional; + coding rate = 1/3; + CRCsize = 12; + RateMatching = 200 */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + tti := { + tti20 := { + { + rlc_Size := { + bitMode := { + sizeType1 := 0 + } + }, + numberOfTbSizeList := { + { one := NULL } + }, + logicalChannelList := { + allSizes := NULL + } + }, + { + rlc_Size := { + bitMode := { + sizeType1 := 39 + } + }, + numberOfTbSizeList := { + { one := NULL } + }, + logicalChannelList := { + allSizes := NULL + } + }, + { + rlc_Size := { + bitMode := { + sizeType1 := 81 + } + }, + numberOfTbSizeList := { + { one := NULL } + }, + logicalChannelList := { + allSizes := NULL + } + } + } + }, + semistaticTF_Information := { + channelCodingType := { + convolutional := third + }, + rateMatchingAttribute := 200, + crc_Size := crc12 + } + }; + + template (value) DedicatedTransChTFS cs_DCH_336_TFS_UE := + { /* Transport format set for transport channel used in CreateCell_DCH_64kPS_RAB_SRB for message sent to UE + 3GPP TS 34.108 clause 6.10.2.4.1.24 + TTI = 20 ms; + 5 transport formats: + TB size always=336 bits; TransportBlocks = 0,1,2,3 and 4 ; + rlsc_Size = TB_Size ( DCH, w/o MUX) + coding = turbo; + CRCsize = 16; + RateMatching = 150 */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + tti := { + tti20 := { + { + rlc_Size := { + octetModeType1 := { + sizeType2 := { + part1 := 2, + part2 := omit + } + } + }, + numberOfTbSizeList := { + { zero := NULL }, + { one := NULL }, + { small := 2 }, + { small := 3 }, + { small := 4 } + }, + logicalChannelList := { + allSizes := NULL + } + } + } + }, + semistaticTF_Information := { + channelCodingType := { + turbo := NULL + }, + rateMatchingAttribute := 150, + crc_Size := crc16 + } + }; + + template (value) DedicatedTransChTFS cds_DCH_336_TFS_0_UE modifies cs_DCH_336_TFS_UE := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + tti := { + tti20 := { + [0]:={ + numberOfTbSizeList := { + { zero := NULL } + } + } + } + } + }; + + //---------------------------------------------------------------------------- + + template (value) UL_AddReconfTransChInfoList_r8 cs_UL_AddReconfTransChInfoListDCH_PS_64k (TransportChannelIdentity p_PS_TransportChannelIdentity := tsc_UL_DCH1) := + { /* Values according to the condition A3 in TS 34.108 clause 9.1.1: Added or Reconfigured UL TrCH information */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + // @sic R5s120070 sic@ + cs_UL_AddReconfTransChInfoDCCH(p_PS_TransportChannelIdentity, cs_DCH_336_TFS_UE), + cs_UL_AddReconfTransChInfoDCCH(tsc_UL_DCH5, cs_DCH_148_TFS_UE_UL) + }; + + template (value) UL_AddReconfTransChInfoList_r8 cs_UL_AddReconfTransChInfoListTM_12_2k := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_UL_AddReconfTransChInfoDCCH(tsc_UL_DCH1, cs_DCH_81_TFS_UE), + cs_UL_AddReconfTransChInfoDCCH(tsc_UL_DCH2, cs_DCH_103_TFS_UE), + cs_UL_AddReconfTransChInfoDCCH(tsc_UL_DCH3, cs_DCH_60_TFS_UE), + cs_UL_AddReconfTransChInfoDCCH(tsc_UL_DCH5, cs_DCH_148_TFS_UE_UL) + }; + + //---------------------------------------------------------------------------- + + template (value) DL_AddReconfTransChInformation_r7 cs_DL_AddReconfTransChHSDSCHInfo_HSDPA_r7 ( template (value) HSDSCH_Info_r7 p_HSDSCH_Info ) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + dl_TransportChannelType := { + hsdsch := NULL + }, + tfs_SignallingMode := { + hsdsch := p_HSDSCH_Info + }, + dch_QualityTarget := omit + }; + + template (value) DL_AddReconfTransChInformation_r7 cs_DL_AddReconfTransChInfo_WithoutQuality(TransportChannelIdentity p_DlTrChId, + TransportChannelIdentity p_UlTrChId ) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_DL_AddReconfTransChInfo_r7(p_DlTrChId, p_UlTrChId, omit); + + template (value) DL_AddReconfTransChInformation_r7 cs_DL_AddReconfTransChInfoExplicit(TransportChannelIdentity p_TransportChannelId, + template (value) DedicatedTransChTFS p_DedicatedTransChTFS, + template (omit) QualityTarget p_QualityTarget := cs_QualityTarget) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + // @sic R5s120301 sic@ + dl_TransportChannelType := { + dch := p_TransportChannelId + }, + tfs_SignallingMode := { + explicit_config := { + dedicatedTransChTFS := p_DedicatedTransChTFS + } + }, + dch_QualityTarget := p_QualityTarget + }; + + template (value) DL_AddReconfTransChInformation_r7 cs_DL_AddReconfTransChInfoDCH_PS_TFCS(TransportChannelIdentity p_TransportChannelId) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + /* @sic R5s120686 sic@ */ + cs_DL_AddReconfTransChInfoExplicit(p_TransportChannelId, cds_DCH_336_TFS_0_UE); + + template (value) DL_AddReconfTransChInfoList_r7 cs_DL_AddReconfTransChInfoListTM_12_2k := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_DL_AddReconfTransChInfoExplicit(tsc_DL_DCH1, cs_DCH_81_TFS_DL_UE, omit), + cs_DL_AddReconfTransChInfo_WithoutQuality ( tsc_DL_DCH2, tsc_UL_DCH2 ), + cs_DL_AddReconfTransChInfo_WithoutQuality ( tsc_DL_DCH3, tsc_UL_DCH3 ), + cs_DL_AddReconfTransChInfo_r7(tsc_DL_DCH5, tsc_UL_DCH5) + }; + + template (value) DL_AddReconfTransChInfoList_r7 cs_DL_AddReconfTransChInfoListDCH_PS_64k(TransportChannelIdentity p_DL_PS_TransportChannelIdentity := tsc_DL_DCH1, + TransportChannelIdentity p_UL_PS_TransportChannelIdentity := tsc_UL_DCH1) := + { /* According to the corresponding IE in the RADIO BEARER SETUP message using condition A3 in TS 34.108 clause 9.1.1: Added or Reconfigured DL TrCH information */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + // @sic R5s120070 sic@ + cs_DL_AddReconfTransChInfo_r7 ( p_DL_PS_TransportChannelIdentity, p_UL_PS_TransportChannelIdentity ), + cs_DL_AddReconfTransChInfo_r7 ( tsc_DL_DCH5, tsc_UL_DCH5 ) + }; + + template (value) DL_AddReconfTransChInfoList_r7 cs_DL_AddReconfTransChInfoList_2DCH_HS_PS_HSPA_r7(template (value) HARQ_Info_r7 p_HARQ_Info) := + { /* @status APPROVED (LTE_IRAT) */ + // @sic R5s120397 sic@ + cs_DL_AddReconfTransChHSDSCHInfo_HSDPA_r7 (cs_HSDSCH_Info_r7 (p_HARQ_Info, cs_AddOrReconfMAC_dFlow2 (cs_MAC_hs_AddReconfQueue, cs_MAC_hs_AddReconfQueue(148,1)))) // @sic R5s120671 sic@ + }; + + + template (value) DL_AddReconfTransChInfoList_r7 cs_DL_AddReconfTransChInfoList_1DCH_HS_PS_HSDPA_r7(template (value) HARQ_Info_r7 p_HARQ_Info) := + { /* @status APPROVED (LTE_IRAT) */ + cs_DL_AddReconfTransChInfo_r7(tsc_DL_DCH5, tsc_UL_DCH5), + cs_DL_AddReconfTransChHSDSCHInfo_HSDPA_r7 (cs_HSDSCH_Info_r7 (p_HARQ_Info, cs_AddOrReconfMAC_dFlow (cs_MAC_hs_AddReconfQueue))) + }; + + template (value) DL_AddReconfTransChInfoList_r7 cs_DL_AddReconfTransChInfoList_2DCH_HS_PS_HSDPA_r7(template (value) HARQ_Info_r7 p_HARQ_Info) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + // @sic R5s120686 sic@ + cs_DL_AddReconfTransChInfo_r7(tsc_DL_DCH5, tsc_UL_DCH5), + cs_DL_AddReconfTransChInfoDCH_PS_TFCS (tsc_DL_DCH1), + cs_DL_AddReconfTransChHSDSCHInfo_HSDPA_r7 (cs_HSDSCH_Info_r7 (p_HARQ_Info, cs_AddOrReconfMAC_dFlow (cs_MAC_hs_AddReconfQueue(336)))) + }; + + template (value) DL_AddReconfTransChInfoList_r7 cs_DL_AddReconfTransChInfoList_1DCH_HS_PS_HSDPA_FDD := cs_DL_AddReconfTransChInfoList_1DCH_HS_PS_HSDPA_r7(cs_HARQ_Info_FDD); /* @status APPROVED (LTE_IRAT) */ + template (value) DL_AddReconfTransChInfoList_r7 cs_DL_AddReconfTransChInfoList_2DCH_HS_PS_HSPA_FDD := cs_DL_AddReconfTransChInfoList_2DCH_HS_PS_HSPA_r7(cs_HARQ_Info_FDD); /* @status APPROVED (LTE_IRAT); @sic R5s120397 sic@ */ + template (value) DL_AddReconfTransChInfoList_r7 cs_DL_AddReconfTransChInfoList_2DCH_HS_PS_HSDPA_FDD := cs_DL_AddReconfTransChInfoList_2DCH_HS_PS_HSDPA_r7(cs_HARQ_Info_FDD); /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN); @sic R5s120686 sic@ */ + + //============================================================================ + + template (value) UL_LogicalChannelMappings_r8 cs_UL_LogicalChannelMappings_r8_DCH(TransportChannelIdentity p_TransportChannelId, + MAC_LogicalChannelPriority p_MAC_LogicalChannelPriority) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + oneLogicalChannel := { + ul_TrCH_Type := { + dch_rach_usch := { + ul_TransportChannelType := { + dch := p_TransportChannelId + }, + logicalChannelIdentity := omit, + rlc_SizeList := { + configured := NULL + } + } + }, + mac_LogicalChannelPriority := p_MAC_LogicalChannelPriority + } + }; + + template (value) UL_LogicalChannelMappings_r8 cs_UL_LogicalChannelMappings_r8_RACH(LogicalChannelIdentity p_LogicalChannelId, + MAC_LogicalChannelPriority p_MAC_LogicalChannelPriority, + template (value) RLC_SizeExplicitList p_UL_RACH_RLC_SizeExplicitList := cs_RLC_SizeExplicit2) := // @sic R5s130009 sic@ + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + oneLogicalChannel := { + ul_TrCH_Type := { + dch_rach_usch := { + ul_TransportChannelType := { + rach := NULL + }, + logicalChannelIdentity := p_LogicalChannelId, + rlc_SizeList := { + explicitList := p_UL_RACH_RLC_SizeExplicitList // @sic R5s130009 sic@ + } + } + }, + mac_LogicalChannelPriority := p_MAC_LogicalChannelPriority + } + }; + + template (value) DL_LogicalChannelMappingList_r7 cs_DL_LogicalChannelMappingList_r7_DCH(TransportChannelIdentity p_TransportChannelId, + template (omit) LogicalChannelIdentity p_LogicalChannelIdentity := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + { + dl_TransportChannelType := { + dch := p_TransportChannelId + }, + logicalChannelIdentity := p_LogicalChannelIdentity + } + }; + + template (value) DL_LogicalChannelMappingList_r7 cs_DL_LogicalChannelMappingList_r7_FACH(LogicalChannelIdentity p_LogicalChannelId) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + { + dl_TransportChannelType := { + fach := NULL + }, + logicalChannelIdentity := p_LogicalChannelId + } + }; + + template (value) DL_LogicalChannelMappingList_r7 cs_DL_LogicalChannelMappingList_r7_HSDSCH(MAC_d_FlowIdentity p_MAC_d_FlowIdentity := 0) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + { + dl_TransportChannelType := { + hsdsch := { + mac_hs := p_MAC_d_FlowIdentity + } + }, + logicalChannelIdentity := omit + } + }; + + //---------------------------------------------------------------------------- + + template (value) RAB_Info_r7 cs_RAB_InfoPS_Common(bitstring p_RAB_Id, + CN_DomainIdentity p_DomainIdentity, + Re_EstablishmentTimer p_ReEstTimer) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + rab_Identity := { + gsm_MAP_RAB_Identity := p_RAB_Id + }, + mbms_SessionIdentity := omit, + mbms_ServiceIdentity := omit, + cn_DomainIdentity := p_DomainIdentity, + nas_Synchronisation_Indicator := omit, + re_EstablishmentTimer := p_ReEstTimer + }; + + template (value) RAB_Info_r7 cs_RAB_InfoPS(bitstring p_RAB_Id, + Re_EstablishmentTimer p_ReEstTimer := useT315) := + /* @status APPROVED (LTE_A, LTE_IRAT, UTRAN, POS) */ + cs_RAB_InfoPS_Common(p_RAB_Id, ps_domain, p_ReEstTimer); + + template (value) RAB_InformationSetup_r8 cs_RAB_Info_PS_Common(bitstring p_RAB_Id, + integer p_RB_Id, + template (omit) PDCP_Info_r4 p_PDCP_Info, + template (value) RLC_Info_r7 p_RLC_Info, + template (value) RB_MappingInfo_r8 p_RB_MappingInfo) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + rab_Info := cs_RAB_InfoPS(p_RAB_Id), + cs_HSPA_Information := omit, + rab_InfoReplace := omit, + rb_InformationSetupList := { + { + rb_Identity := p_RB_Id, + pdcp_Info := p_PDCP_Info, + rlc_InfoChoice := { + rlc_Info := p_RLC_Info + }, + rb_MappingInfo := p_RB_MappingInfo + } + } + }; + + template (value) PDCP_Info_r4 cs_PDCP_Info_DCH_PS := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + losslessSRNS_RelocSupport := { + notSupported := NULL + }, + pdcp_PDU_Header := absent, + headerCompressionInfoList := omit + }; + + template (value) RB_MappingInfo_r8 cs_RB_MappingInfo_PS(TransportChannelIdentity p_DL_PS_TransportChannelIdentity := tsc_DL_DCH1, // @sic R5s120070 sic@ + TransportChannelIdentity p_UL_PS_TransportChannelIdentity := tsc_UL_DCH1, // @sic R5s120070 sic@ + template (value) RLC_SizeExplicitList p_UL_RACH_RLC_SizeExplicitList := cs_RLC_SizeExplicit2) := // @sic R5s130009 sic@ + + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + { + ul_LogicalChannelMappings := cs_UL_LogicalChannelMappings_r8_DCH(p_UL_PS_TransportChannelIdentity, tsc_MAC_LogicalChannelPrio8), + dl_LogicalChannelMappingList := cs_DL_LogicalChannelMappingList_r7_DCH(p_DL_PS_TransportChannelIdentity) + }, + { + ul_LogicalChannelMappings := cs_UL_LogicalChannelMappings_r8_RACH(tsc_UL_DTCH1, tsc_MAC_LogicalChannelPrio8, p_UL_RACH_RLC_SizeExplicitList), + dl_LogicalChannelMappingList := cs_DL_LogicalChannelMappingList_r7_FACH(tsc_DL_DTCH1) + } + }; + + template (value) RB_MappingInfo_r8 cs_RB_MappingInfo_PS_HSDPA := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + { + ul_LogicalChannelMappings := cs_UL_LogicalChannelMappings_r8_DCH(tsc_UL_DCH1, tsc_MAC_LogicalChannelPrio8), + dl_LogicalChannelMappingList := cs_DL_LogicalChannelMappingList_r7_HSDSCH + } + }; + + template (value) RB_MappingInfo_r8 cs_RB_MappingInfo_PS_HSDPA_3Mux := + { /* three multiplexing options @sic R5s120686 sic@ */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + { + ul_LogicalChannelMappings := cs_UL_LogicalChannelMappings_r8_DCH(tsc_UL_DCH1, tsc_MAC_LogicalChannelPrio8), //@sic R5s130979 sic@ + dl_LogicalChannelMappingList := cs_DL_LogicalChannelMappingList_r7_DCH(tsc_DL_DCH1) + }, + { + ul_LogicalChannelMappings := cs_UL_LogicalChannelMappings_r8_DCH(tsc_UL_DCH1, tsc_MAC_LogicalChannelPrio8), + dl_LogicalChannelMappingList := cs_DL_LogicalChannelMappingList_r7_HSDSCH + }, + { + ul_LogicalChannelMappings := cs_UL_LogicalChannelMappings_r8_RACH(tsc_UL_DTCH1, tsc_MAC_LogicalChannelPrio8), + dl_LogicalChannelMappingList := cs_DL_LogicalChannelMappingList_r7_FACH(tsc_DL_DTCH1) + } + }; + + template (value) RAB_InformationSetup_r8 cs_RAB_InfoFACH_PS(bitstring p_RAB_Id, + template (value) RLC_Info_r7 p_RLC_Info, + template (value) RLC_SizeExplicitList p_UL_RACH_RLC_SizeExplicitList := cs_RLC_SizeExplicit2 //@sic R5s130432 sic@ + ) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RAB_Info_PS_Common(p_RAB_Id, tsc_RB20, omit, p_RLC_Info, cs_RB_MappingInfo_PS(-,-, p_UL_RACH_RLC_SizeExplicitList)); + + template (value) RAB_InformationSetup_r8 cs_RAB_InfoSetupDCH_PS_64k (bitstring p_RAB_Id, + template (value) RLC_Info_r7 p_RLC_Info, + TransportChannelIdentity p_DL_PS_TransportChannelIdentity := tsc_DL_DCH1, //@sic R5s140096 sic@ + TransportChannelIdentity p_UL_PS_TransportChannelIdentity := tsc_UL_DCH1 //@sic R5s140096 sic@ + ) := + /* Values according to 34.108 cl. 9.1.1 Message RADIO BEARER SETUP message: AM or UM using condition A3 */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RAB_Info_PS_Common(p_RAB_Id, tsc_RB20, cs_PDCP_Info_DCH_PS, p_RLC_Info, cs_RB_MappingInfo_PS(p_DL_PS_TransportChannelIdentity, p_UL_PS_TransportChannelIdentity)); + + template (value) RAB_InformationSetup_r8 cs_RAB_InfoSetupDCH_PS_64k_TDD (bitstring p_RAB_Id, + template (value) RLC_Info_r7 p_RLC_Info ) := + /* Values according to 34.108 cl. 9.1.1 Message RADIO BEARER SETUP message: AM or UM using condition A3 */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + /* @sic R5s130009 sic@ */ + cs_RAB_Info_PS_Common(p_RAB_Id, tsc_RB20, cs_PDCP_Info_DCH_PS, p_RLC_Info, cs_RB_MappingInfo_PS(-, -, cs_RLC_SizeExplicit1)); + + + template (value) RAB_InformationSetup_r8 cs_RAB_InfoSetupDCH_PS_HSDPA (bitstring p_RAB_Id, + template (value) RLC_Info_r7 p_RLC_Info ) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RAB_Info_PS_Common(p_RAB_Id, tsc_RB25, cs_PDCP_Info_DCH_PS, p_RLC_Info, cs_RB_MappingInfo_PS_HSDPA); + + template (value) RAB_InformationSetup_r8 cs_RAB_InfoSetupHSUPA_RB25_1MuxOption := + /* @status APPROVED (LTE_IRAT) */ + cs_RAB_Info_PS_Common(tsc_RAB_DefPS_HS, tsc_RB25, cs_PDCP_Info_DCH_PS, cs_RLC_InfoAM_HSU, {cs_RB_MappingOptionPS_RAB1_EDCH_HSDSCH}); + + //---------------------------------------------------------------------------- + + template (value) RB_InformationSetup_r8 cs_RB_InformationSetup_SpeechFlow ( RB_Identity p_RB_Identity, + TransportChannelIdentity p_UL_TransportChannelId, + MAC_LogicalChannelPriority p_MAC_LogicalChannelPriority, + TransportChannelIdentity p_DL_TransportChannelId) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + rb_Identity := p_RB_Identity, + pdcp_Info := omit, + rlc_InfoChoice := { + rlc_Info := cs_RLC_InfoTM_Def + }, + rb_MappingInfo := { + { + ul_LogicalChannelMappings := cs_UL_LogicalChannelMappings_r8_DCH(p_UL_TransportChannelId, p_MAC_LogicalChannelPriority), + dl_LogicalChannelMappingList := cs_DL_LogicalChannelMappingList_r7_DCH(p_DL_TransportChannelId) + } + } + }; + + template (value) RAB_InformationSetup_r8 cs_RAB_InfoSetupTM_12_2k (Re_EstablishmentTimer p_ReEstTimer, + bitstring p_RAB_Id) := + { /* 36.508 cl. 4.8.3 Table 4.8.3-1: + UTRA Speech TS 34.108 subclause 6.10.2.4.1.4 Conversational / speech / UL:12.2 DL:12.2 kbps / CS RAB + UL:3.4 DL:3.4 kbps SRBs for DCCH */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + rab_Info := cs_RAB_InfoPS_Common(p_RAB_Id, cs_domain, p_ReEstTimer), + cs_HSPA_Information := omit, + rab_InfoReplace := omit, + rb_InformationSetupList := { + // RB_InformationSetupList + cs_RB_InformationSetup_SpeechFlow ( tsc_RB10, tsc_UL_DCH1, tsc_MAC_LogicalChannelPrio6, tsc_DL_DCH1 ), + cs_RB_InformationSetup_SpeechFlow ( tsc_RB11, tsc_UL_DCH2, tsc_MAC_LogicalChannelPrio6, tsc_DL_DCH2 ), + cs_RB_InformationSetup_SpeechFlow ( tsc_RB12, tsc_UL_DCH3, tsc_MAC_LogicalChannelPrio6, tsc_DL_DCH3 ) + } + }; + + //============================================================================ + + template (value) TGPS_Status_r8_Type cs_TGPS_Status_Active(TGCFN p_Tgcfn) := + { // @sic R5-123655 sic@ + activate_ := { + tgcfn := p_Tgcfn + } + }; + + template (value) TGPS_Status_r8_Type cs_TGPS_Status_Deactive := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + // @sic R5-123655 sic@ + deactivate_ := NULL + }; + + template (value) DPCH_CompressedModeInfo_r8 cs_DPCH_CompressedModeInfo(template (value) TGPS_Status_r8_Type p_Status, + template (value) UL_DL_Mode p_UL_DL_Mode) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + tgp_SequenceList := { + { + tgpsi := 1, + tgps_Status := p_Status, + tgps_ConfigurationParams := { + tgmp := e_UTRA, // @sic R5-120620 sic@ + tgprc := 0, + tgsn := 8, // @sic R5-120620 sic@ + tgl1 := 10, // @sic R5-120620 sic@ + tgl2 := omit, + tgd := 270, + tgpl1 := 12, // @sic R5-120620 sic@ + rpp := mode0, + itp := mode0, + ul_DL_Mode := p_UL_DL_Mode,//UL and DL, UL only or DL only (depending on the UE capability) + dl_FrameType := dl_FrameTypeB, + deltaSIR1 := 20, + deltaSIRAfter1 := 10, + deltaSIR2 := omit, + deltaSIRAfter2 := omit, + nidentifyAbort := omit, + treconfirmAbort := omit + } + } + } + }; + + //============================================================================ + // PDUs used for RAB establishment + //============================================================================ + // Radio Bearer Setup + //---------------------------------------------------------------------------- + + template (value) DL_DCCH_Message cs_RadioBearerSetup_r8(IntegrityCheckInfo p_Integrityinfo, + template (value) RadioBearerSetup_r8_IEs p_RadioBearerSetup) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + integrityCheckInfo := p_Integrityinfo, + message_ := { + radioBearerSetup := { + later_than_r3 := { + rrc_TransactionIdentifier := tsc_RRC_TI, + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + r8 := { + radioBearerSetup_r8 := p_RadioBearerSetup, + radioBearerSetup_r8_add_ext := omit, + v7d0NonCriticalExtensions := omit + } + } + } + } + } + } + } + } + } + }; + + //---------------------------------------------------------------------------- + + template (value) RadioBearerSetup_r8_IEs cs_RadioBearerSetup_r8_IEs_Omit := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + integrityProtectionModeInfo := omit, + cipheringModeInfo := omit, + sr_vcc_Info := omit, + activationTime := omit, + new_U_RNTI := omit, + new_C_RNTI := omit, + new_DSCH_RNTI := omit, + new_H_RNTI := omit, + newPrimary_E_RNTI := omit, + newSecondary_E_RNTI := omit, + rrc_StateIndicator := cell_DCH, + utran_DRX_CycleLengthCoeff := omit, + ura_Identity := omit, + supportForChangeOfUE_Capability := omit, + cn_InformationInfo := omit, + srb_InformationSetupList := omit, + rab_InformationSetupList := omit, + rab_InformationReconfigList := omit, + rb_InformationReconfigList := omit, + rb_InformationAffectedList := omit, + dl_CounterSynchronisationInfo := omit, + pdcp_ROHC_TargetMode := omit, + ul_CommonTransChInfo := omit, + ul_deletedTransChInfoList := omit, + ul_AddReconfTransChInfoList := omit, + dl_CommonTransChInfo := omit, + dl_DeletedTransChInfoList := omit, + dl_AddReconfTransChInfoList := omit, + frequencyInfo := omit, + multi_frequencyInfo := omit, + dtx_drx_TimingInfo := omit, + dtx_drx_Info := omit, + hs_scch_LessInfo := omit, + mimoParameters := omit, + maxAllowedUL_TX_Power := omit, + ul_DPCH_Info := omit, + ul_EDCH_Information := omit, + dl_HSPDSCH_Information := omit, + dl_CommonInformation := omit, + dl_InformationPerRL_List := omit, + dl_SecondaryCellInfoFDD := omit, + controlChannelDRXInfo_TDD128 := omit, + sps_Information_TDD128 := omit, + mbms_PL_ServiceRestrictInfo := omit + }; + + //---------------------------------------------------------------------------- + + template (value) RadioBearerSetup_r8_IEs cds_RadioBearerSetup_r8_IEs_FACH_PS_FDD (C_RNTI p_C_RNTI, + bitstring p_RAB_Id) + modifies cs_RadioBearerSetup_r8_IEs_Omit := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + new_C_RNTI := p_C_RNTI, + new_H_RNTI := omit, //@sic R5s110210 sic@ + rrc_StateIndicator := cell_FACH, + rab_InformationSetupList := { + cs_RAB_InfoFACH_PS(p_RAB_Id, cs_RLC_InfoAM_Def) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCH_PS_64k_FDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_FDD(cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCH_PS_64k + }; + + template (value) DL_DCCH_Message cs_108_RB_SetUpFACH_PS_FDD (IntegrityCheckInfo p_Integrityinfo, + C_RNTI p_C_RNTI, + bitstring p_RAB_Id) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RadioBearerSetup_r8(p_Integrityinfo, cds_RadioBearerSetup_r8_IEs_FACH_PS_FDD(p_C_RNTI, p_RAB_Id)); + + + + //---------------------------------------------------------------------------- + + template (value) RadioBearerSetup_r8_IEs cds_RadioBearerSetup_r8_IEs_HS_FromDCH_UL_64k_FDD (ActivationTime p_Activetime, + bitstring p_RAB_Id, + UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode) + modifies cs_RadioBearerSetup_r8_IEs_Omit := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + activationTime := p_Activetime, + new_H_RNTI := tsc_H_RNTI, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_Info_PS_Common(p_RAB_Id, tsc_RB25, cs_PDCP_Info_DCH_PS, cs_RLC_InfoAM_HSDPA, cs_RB_MappingInfo_PS_HSDPA_3Mux) //@sic R5s120686 sic@ + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCH_PS_64k_FDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_FDD ( cs_TFCS_Cmpl0_1_Rx ), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoList_2DCH_HS_PS_HSDPA_FDD, //@sic R5s120686 sic@ + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_InfoACK_HSDPA_FDD(tsc_UL_DPDCH_SF_64k_PS, pl0_96, p_UL_ScramblingCode ), + dl_HSPDSCH_Information := cs_DL_HSPDSCH_Information_FDD (cs_HS_SCCH_Info_FDD, cs_Measurement_Feedback_Info ), + dl_CommonInformation := cs_DL_CommonInformationRB_SetUp_FDD (tsc_DL_DPCH1_SFP_SRB_3_4k, fixed, false), // @sic R5s120686 sic@ + dl_InformationPerRL_List := cds_DL_InfoPerRL_HSDPA_r8_FDD (p_PrimScramblingCode, tsc_Sfc256_C0, tsc_DL_DPCH1_2ndScrC ) + }; + + template (value) DL_DCCH_Message cs_108_RB_SetUpHS_FromDCH_UL_64k_FDD (IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode) := + /* ASN.1 PDU Constraint Defined in TS 34.108 clause 9. But uses 64 K uplink */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RadioBearerSetup_r8(p_Integrityinfo, cds_RadioBearerSetup_r8_IEs_HS_FromDCH_UL_64k_FDD (p_Activetime, p_RAB_Id, p_UL_ScramblingCode, p_PrimScramblingCode)); + + + + //---------------------------------------------------------------------------- + + template (value) RadioBearerSetup_r8_IEs cds_RadioBearerSetup_r8_IEs_64k_PS_FDD (ActivationTime p_Activetime, + bitstring p_RAB_Id, + UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode) + modifies cs_RadioBearerSetup_r8_IEs_Omit := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + activationTime := p_Activetime, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupDCH_PS_64k (p_RAB_Id, cs_RLC_InfoAM_Def) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCH_PS_64k_FDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_FDD (cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCH_PS_64k, + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_Info_FDD (tsc_UL_DPDCH_SF_64k_PS, pl0_96, p_UL_ScramblingCode), + dl_CommonInformation := cs_DL_CommonInformationRB_SetUp_FDD (tsc_DL_DPCH1_SFP_64k_PS, flexible), + dl_InformationPerRL_List := cs_DL_InformationPerRL_r8_FDD (p_PrimScramblingCode, tsc_DL_DPCH1_ChC_64k_PS, tsc_DL_DPCH1_2ndScrC) + }; + + template (value) DL_DCCH_Message cs_108_RB_SetUp64k_PS_FDD (IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode) := + /* ASN.1 PDU Constraint. Defined in TS 34.108 clause 9 */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RadioBearerSetup_r8(p_Integrityinfo, cds_RadioBearerSetup_r8_IEs_64k_PS_FDD(p_Activetime, p_RAB_Id, p_UL_ScramblingCode, p_PrimScramblingCode)); + + + + //---------------------------------------------------------------------------- + + template (value) RadioBearerSetup_r8_IEs cds_RadioBearerSetup_r8_IEs_Speech_FDD (ActivationTime p_Activetime, + bitstring p_RAB_Id, + UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode) + modifies cs_RadioBearerSetup_r8_IEs_Omit := + { /* @status APPROVED (LTE_IRAT) */ + activationTime := p_Activetime, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupTM_12_2k ( useT314, p_RAB_Id) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfoTM_12_2k_FDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListTM_12_2k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoSameAsUL_r4_FDD, + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListTM_12_2k, + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_Info_FDD (tsc_UL_DPDCH_SF_Speech, pl0_84, p_UL_ScramblingCode), + dl_CommonInformation := cs_DL_CommonInformationRB_SetUpSpeech (tsc_DL_DPCH1_SFP_Speech), + dl_InformationPerRL_List := cs_DL_InformationPerRL_r8_FDD (p_PrimScramblingCode, tsc_DL_DPCH1_ChC_Speech, tsc_DL_DPCH1_2ndScrC) + }; + + template (value) DL_DCCH_Message cs_108_RB_SetUpSpeech_FDD ( IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + PrimaryScramblingCode p_PrimScramblingCode, + UL_ScramblingCode p_UL_ScramblingCode ) := + /* @status APPROVED (LTE_IRAT) */ + cs_RadioBearerSetup_r8(p_Integrityinfo, cds_RadioBearerSetup_r8_IEs_Speech_FDD(p_Activetime, p_RAB_Id, p_UL_ScramblingCode, p_PrimScramblingCode)); + + + //============================================================================ + // Physical Channel Reconfiguration + //---------------------------------------------------------------------------- + + template (value) DL_DCCH_Message cs_PhysicalChannelReconfiguration(IntegrityCheckInfo p_Integrityinfo, + RRC_TransactionIdentifier p_RRC_TI := tsc_RRC_TI, + template (omit) ActivationTime p_ActivationTime, + template (omit) DL_CommonInformation_r8 p_DL_CommonInformation, + RRC_StateIndicator p_RRC_StateIndicator := cell_DCH, + template (omit) UTRAN_DRX_CycleLengthCoefficient_r7 p_UTRAN_DRX_CycleLengthCoefficient_r7 := omit, + template (omit) MaxAllowedUL_TX_Power p_MaxAllowedUL_TX_Power := omit) := + { /* Default values from 36.508 Table 4.7B.1-5: PHYSICAL CHANNEL RECONFIGURATION */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + integrityCheckInfo := p_Integrityinfo, + message_ := { + physicalChannelReconfiguration := { + later_than_r3 := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + r8:= { + physicalChannelReconfiguration_r8 := { + //-- User equipment IEs + integrityProtectionModeInfo := omit, + cipheringModeInfo := omit, + activationTime := p_ActivationTime, + delayRestrictionFlag := omit, + new_U_RNTI := omit, + new_C_RNTI := omit, + new_DSCH_RNTI := omit, + new_H_RNTI := omit, + newPrimary_E_RNTI := omit, + newSecondary_E_RNTI := omit, + rrc_StateIndicator := p_RRC_StateIndicator, + ueMobilityStateIndicator := omit, + utran_DRX_CycleLengthCoeff := p_UTRAN_DRX_CycleLengthCoefficient_r7, + cn_InformationInfo := omit, + ura_Identity := omit, + supportForChangeOfUE_Capability := omit, + responseToChangeOfUE_Capability := omit, + dl_CounterSynchronisationInfo := omit, + harqInfo := omit, + frequencyInfo := omit, + multi_frequencyInfo := omit, + dtx_drx_TimingInfo := omit, + dtx_drx_Info := omit, + hs_scch_LessInfo := omit, + mimoParameters := omit, + maxAllowedUL_TX_Power := p_MaxAllowedUL_TX_Power, + ul_DPCH_Info := omit,//FFS - cds_PhyChReconf64kPSEventTriggerCompModeDL_U is used in TTCN2. Split depending on RAB type? + ul_EDCH_Information := omit, + dl_HSPDSCH_Information := omit, + dl_CommonInformation := p_DL_CommonInformation, + dl_InformationPerRL_List := omit, + dl_SecondaryCellInfoFDD := omit, + controlChannelDRXInfo_TDD128 := omit, + sps_Information_TDD128 := omit, + mbms_PL_ServiceRestrictInfo := omit + }, + physicalChannelReconfiguration_r8_add_ext := omit, + v7d0NonCriticalExtensions := omit /* @sic R5s100135 sic@ */ + } + } + } + } + } + } + } + } + } + }; + + template (value) TFCS cs_TFCS_Cmpl0_To119_Tx (template (omit) PowerOffsetInformation p_PowerOffsetInformation):= + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + normalTFCI_Signalling := { + complete := { + ctfcSize := { + ctfc8Bit := { + cs_TFCS_CtfcSize_Ctfc8Bit(0, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc8Bit(1, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc8Bit(11, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc8Bit(12, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc8Bit(13, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc8Bit(23, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc8Bit(24, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc8Bit(25, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc8Bit(35, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc8Bit(36, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc8Bit(37, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc8Bit(47, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc8Bit(48, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc8Bit(49, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc8Bit(59, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc8Bit(60, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc8Bit(61, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc8Bit(71, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc8Bit(72, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc8Bit(73, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc8Bit(83, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc8Bit(84, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc8Bit(85, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc8Bit(95, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc8Bit(96, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc8Bit(97, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc8Bit(107, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc8Bit(108, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc8Bit(109, cs_PowerOffsetInfoComputed), + cs_TFCS_CtfcSize_Ctfc8Bit(119, p_PowerOffsetInformation) + } + } + } + } + }; + + template (value) TFCS cs_TFCS_Cmpl0_To119_Rx := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + normalTFCI_Signalling := { + complete := { + ctfcSize := { + ctfc8Bit := { + cs_TFCS_CtfcSize_Ctfc8Bit(0), + cs_TFCS_CtfcSize_Ctfc8Bit(1), + cs_TFCS_CtfcSize_Ctfc8Bit(11), + cs_TFCS_CtfcSize_Ctfc8Bit(12), + cs_TFCS_CtfcSize_Ctfc8Bit(13), + cs_TFCS_CtfcSize_Ctfc8Bit(23), + cs_TFCS_CtfcSize_Ctfc8Bit(24), + cs_TFCS_CtfcSize_Ctfc8Bit(25), + cs_TFCS_CtfcSize_Ctfc8Bit(35), + cs_TFCS_CtfcSize_Ctfc8Bit(36), + cs_TFCS_CtfcSize_Ctfc8Bit(37), + cs_TFCS_CtfcSize_Ctfc8Bit(47), + cs_TFCS_CtfcSize_Ctfc8Bit(48), + cs_TFCS_CtfcSize_Ctfc8Bit(49), + cs_TFCS_CtfcSize_Ctfc8Bit(59), + cs_TFCS_CtfcSize_Ctfc8Bit(60), + cs_TFCS_CtfcSize_Ctfc8Bit(61), + cs_TFCS_CtfcSize_Ctfc8Bit(71), + cs_TFCS_CtfcSize_Ctfc8Bit(72), + cs_TFCS_CtfcSize_Ctfc8Bit(73), + cs_TFCS_CtfcSize_Ctfc8Bit(83), + cs_TFCS_CtfcSize_Ctfc8Bit(84), + cs_TFCS_CtfcSize_Ctfc8Bit(85), + cs_TFCS_CtfcSize_Ctfc8Bit(95), + cs_TFCS_CtfcSize_Ctfc8Bit(96), + cs_TFCS_CtfcSize_Ctfc8Bit(97), + cs_TFCS_CtfcSize_Ctfc8Bit(107), + cs_TFCS_CtfcSize_Ctfc8Bit(108), + cs_TFCS_CtfcSize_Ctfc8Bit(109), + cs_TFCS_CtfcSize_Ctfc8Bit(119) + } + } + } + } + }; + + template (value) UL_CommonTransChInfo_r4 cs_UL_CommTrChInfo_TM3_AM1_0To119_FDD := cs_UL_CommTrChInfoDCCH_Common_FDD(cs_TFCS_Cmpl0_To119_Tx(cs_PowerOffsetInfoHigher64k)); /* @status APPROVED (LTE_A, LTE_IRAT) */ + template (value) UL_CommonTransChInfo_r4 cs_UL_CommTrChInfo_TM3_AM1_0To119_TDD := cs_UL_CommTrChInfoDCCH_Common_TDD(cs_TFCS_Cmpl0_To119_Tx(cs_PowerOffsetInfo_TDD)); /* @status APPROVED (LTE_A, LTE_IRAT) */ + + template (value) RadioBearerSetup_r8_IEs cds_RadioBearerSetup_r8_IEs_PSandConvSpeech_FDD(ActivationTime p_Activetime, + bitstring p_RAB_Id, + PrimaryScramblingCode p_PrimScramblingCode, + UL_ScramblingCode p_UL_ScramblingCode) + modifies cs_RadioBearerSetup_r8_IEs_Omit := + { /* @status APPROVED (LTE_IRAT) */ + activationTime := p_Activetime, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupTM_12_2k (useT314, p_RAB_Id) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfo_TM3_AM1_0To119_FDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListTM_12_2k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_FDD(cs_TFCS_Cmpl0_To119_Rx), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListTM_12_2k, + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_Info_FDD (tsc_UL_DPDCH_SF_64k_PS, pl0_76, p_UL_ScramblingCode), + dl_CommonInformation := cs_DL_CommonInformationRB_SetUp_FDD (tsc_DL_DPCH1_SFP_64k_PS, flexible), + dl_InformationPerRL_List := cs_DL_InformationPerRL_r8_FDD (p_PrimScramblingCode, tsc_DL_DPCH1_ChC_64k_PS, tsc_DL_DPCH1_2ndScrC) + }; + + template (value) DL_DCCH_Message cs_108_RB_SetUpPSandConvSpeech_FDD ( IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + PrimaryScramblingCode p_PrimScramblingCode, + UL_ScramblingCode p_UL_ScramblingCode ) := + /* @status APPROVED (LTE_IRAT) */ + cs_RadioBearerSetup_r8(p_Integrityinfo, cds_RadioBearerSetup_r8_IEs_PSandConvSpeech_FDD(p_Activetime, p_RAB_Id, p_PrimScramblingCode, p_UL_ScramblingCode)); + + + + template (value) CellBarred cs_CellNotBarred := + { /* @status APPROVED (LTE_IRAT) */ + notBarred := NULL + }; + + template (value) AccessClassBarredList cs_AllAccessClassesBarred_AllBarred := + { /* @status APPROVED (LTE_IRAT) */ + barred,//Access Class Barred0 + barred,//Access Class Barred1 + barred,//Access Class Barred2 + barred,//Access Class Barred3 + barred,//Access Class Barred4 + barred,//Access Class Barred5 + barred,//Access Class Barred6 + barred,//Access Class Barred7 + barred,//Access Class Barred8 + barred,//Access Class Barred9 + barred,//Access Class Barred10 + barred,//Access Class Barred11 + barred,//Access Class Barred12 + barred,//Access Class Barred13 + barred,//Access Class Barred14 + barred //Access Class Barred15 + }; + + template (value) SysInfoType3.v4b0NonCriticalExtensions cs_DSACRestriction_PPAC_ParametersForPLMNOfMIB := + { /* @status APPROVED (LTE_IRAT) */ + sysInfoType3_v4b0ext := { + mapping_LCR := omit //FFS - no value defined in specific message contents + }, + v590NonCriticalExtension := { + sysInfoType3_v590ext := { + cellSelectReselectInfo_v590ext := omit //FFS - no value defined in specific message contents + }, + v5c0NoncriticalExtension := { + sysInfoType3_v5c0ext := { + cellSelectReselectInfoTreselectionScaling_v5c0ext := omit //FFS - no value defined in specific message contents + }, + v670NonCriticalExtension := { + sysInfoType3_v670ext := { + domainSpecificAccessRestrictionParametersForPLMNOfMIB := { + cSDomainSpecificAccessRestriction := { + restriction := { + domainSpecficAccessClassBarredList := cs_AllAccessClassesBarred_AllBarred + } + }, + pSDomainSpecificAccessRestriction := { + noRestriction := NULL + } + }, + domainSpecificAccessRestictionForSharedNetwork := omit //FFS - no value defined in specific message contents + }, + v770NonCriticalExtension := { + sysInfoType3_v770ext := { + deferredMeasurementControlReadingSupport := omit, //FFS - no value defined in specific message contents + q_QualMin_Offset := omit, //FFS - no value defined in specific message contents + q_RxlevMin_Offset := omit, //FFS - no value defined in specific message contents + mbsfnOnlyService := omit //FFS - no value defined in specific message contents + }, + v830NonCriticalExtension := { + sysInfoType3_v830ext := { + pagingPermissionWithAccessControlParametersForPLMNOfMIB := { + pagingResponseRestrictionIndicator := none_, + locationRegistrationRestrictionIndicator := all_, + locationRegistration := { + noRestriction := NULL + } + }, + pagingPermissionWithAccessControlParametersForSharedNetwork := omit //FFS - no value defined in specific message contents + }, + v860NonCriticalExtension := omit + } + } + } + } + } + }; + + template (value) UL_AddReconfTransChInfoList_r8 cs_UL_AddReconfTransChInfoListDCH_PS_64k_Only(TransportChannelIdentity p_PS_TransportChannelIdentity := tsc_UL_DCH4) := + { /* Values according to the condition A3 in TS 34.108 clause 9.1.1: Added or Reconfigured UL TrCH information */ + /* @status APPROVED (LTE_IRAT) */ + cs_UL_AddReconfTransChInfoDCCH(p_PS_TransportChannelIdentity, cs_DCH_336_TFS_UE) + }; + + + template (value) DL_AddReconfTransChInfoList_r7 cs_DL_AddReconfTransChInfoListDCH_PS_64k_Only := + { /* @status APPROVED (LTE_IRAT) */ + cs_DL_AddReconfTransChInfoExplicit(tsc_DL_DCH4, cs_DCH_336_TFS_UE) + }; + + + template (value) RAB_InformationSetup_r8 cs_RAB_InfoSetupDCH_PS_64k_DCH4 (bitstring p_RAB_Id, + template (value) RLC_Info_r7 p_RLC_Info ) := + /* @status APPROVED (LTE_IRAT) */ + cs_RAB_Info_PS_Common(p_RAB_Id, tsc_RB20, cs_PDCP_Info_DCH_PS, p_RLC_Info, cs_RB_MappingInfo_PS (tsc_DL_DCH4, tsc_UL_DCH4)); + + template (value) RadioBearerSetup_r8_IEs cds_RadioBearerSetup_r8_IEs_PSandConvSpeech_PSexists_FDD(ActivationTime p_Activetime, + bitstring p_RAB_Id, + PrimaryScramblingCode p_PrimScramblingCode, + UL_ScramblingCode p_UL_ScramblingCode) + modifies cs_RadioBearerSetup_r8_IEs_Omit := + { /* @status APPROVED (LTE_IRAT) */ + // @sic R5s120301 sic@ + activationTime := p_Activetime, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupDCH_PS_64k_DCH4 (p_RAB_Id, cs_RLC_InfoAM_Def) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfo_TM3_AM1_0To119_FDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k_Only, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_FDD(cs_TFCS_Cmpl0_To119_Rx), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCH_PS_64k_Only, + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_Info_FDD (tsc_UL_DPDCH_SF_64k_PS, pl0_76, p_UL_ScramblingCode), + dl_CommonInformation := cs_DL_CommonInformationRB_SetUp_FDD (tsc_DL_DPCH1_SFP_64k_PS, flexible), + dl_InformationPerRL_List := cs_DL_InformationPerRL_r8_FDD (p_PrimScramblingCode, tsc_DL_DPCH1_ChC_64k_PS, tsc_DL_DPCH1_2ndScrC) + }; + + template (value) DL_DCCH_Message cs_108_RB_SetUpPSandConvSpeech_PSexists_FDD ( IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + PrimaryScramblingCode p_PrimScramblingCode, + UL_ScramblingCode p_UL_ScramblingCode ) := + /* @status APPROVED (LTE_IRAT) */ + // @sic R5s120301 sic@ + cs_RadioBearerSetup_r8(p_Integrityinfo, cds_RadioBearerSetup_r8_IEs_PSandConvSpeech_PSexists_FDD(p_Activetime, p_RAB_Id, p_PrimScramblingCode, p_UL_ScramblingCode)); + + +} diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_RAB_Templates_r10.ttcn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_RAB_Templates_r10.ttcn new file mode 100644 index 0000000..52a53e3 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_RAB_Templates_r10.ttcn @@ -0,0 +1,557 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-07 18:37:49 +0200 (Sun, 07 Sep 2014) $ +// $Rev: 12081 $ +/******************************************************************************/ + +module UTRAN_RRC_RAB_Templates_r10 { + + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_CommonDefs all; + import from UTRAN_RRC_CommonTemplates all; + import from UTRAN_RRC_Templates all; + import from UTRAN_RRC_RAB_Templates all; + import from UTRAN_RRC_RAB_Templates_r9 all; + import from UTRAN_RRC_Templates_r10 all; + + + //============================================================================ + // Information element + //============================================================================ + + template (value) DL_CommonInformation_r10 cs_DL_CommonInformationRB_SetUp_FDD_r10(SF512_AndPilot p_Sf, + PositionFixedOrFlexible p_PositionFixedOrFlexible, + boolean p_TfciExistence := true, + template (omit) DPCH_CompressedModeInfo_r10 p_DPCH_CompressedModeInfo := omit, + template (omit) TX_DiversityMode p_TX_DiversityMode := noDiversity) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_DL_CommonInfo_FDD_r10(cs_DL_DPCH_CfnHandling_Maintain_r6(omit), p_Sf, p_PositionFixedOrFlexible, p_TfciExistence, omit, p_DPCH_CompressedModeInfo, p_TX_DiversityMode); + + + template (value) DL_CommonInformation_r10 cs_DL_CommonInformationRB_SetUpSpeech_r10(SF512_AndPilot p_Sf) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_DL_CommonInformationRB_SetUp_FDD_r10 (p_Sf, fixed, false); + + //--------------------------------------------------------------------------------------------------------------------- + // Physical channel reconfiguration + //--------------------------------------------------------------------------------------------------------------------- + template (value) DL_DCCH_Message cs_PhysicalChannelReconfiguration_r10(IntegrityCheckInfo p_Integrityinfo, + RRC_TransactionIdentifier p_RRC_TI, + template (omit) ActivationTime p_ActivationTime, + template (omit) DL_CommonInformation_r10 p_DL_CommonInformation, + RRC_StateIndicator p_RRC_StateIndicator := cell_DCH, + template (omit) UTRAN_DRX_CycleLengthCoefficient_r7 p_UTRAN_DRX_CycleLengthCoefficient_r7 := omit, + template (omit) MaxAllowedUL_TX_Power p_MaxAllowedUL_TX_Power := omit) := + { /* Default values from 36.508 Table 4.7B.1-5: PHYSICAL CHANNEL RECONFIGURATION */ + /* @status APPROVED (LTE_IRAT) */ + integrityCheckInfo := p_Integrityinfo, + message_ := { + physicalChannelReconfiguration := { + later_than_r3 := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { criticalExtensions := { + r10:= { + physicalChannelReconfiguration_r10 := { + //-- User equipment IEs + integrityProtectionModeInfo := omit, + cipheringModeInfo := omit, + activationTime := p_ActivationTime, + delayRestrictionFlag := omit, + new_U_RNTI := omit, + new_C_RNTI := omit, + new_DSCH_RNTI := omit, + new_H_RNTI := omit, + newPrimary_E_RNTI := omit, + newSecondary_E_RNTI := omit, + rrc_StateIndicator := p_RRC_StateIndicator, + ueMobilityStateIndicator := omit, + utran_DRX_CycleLengthCoeff := p_UTRAN_DRX_CycleLengthCoefficient_r7, + cn_InformationInfo := omit, + ura_Identity := omit, + supportForChangeOfUE_Capability := omit, + responseToChangeOfUE_Capability := omit, + dl_CounterSynchronisationInfo := omit, + harqInfo := omit, + frequencyInfo := omit, + multi_frequencyInfo := omit, + dtx_drx_TimingInfo := omit, + dtx_drx_Info := omit, + hs_scch_LessInfo := omit, + mimoParameters := omit, + controlChannelDRXInfo_TDD128 := omit, + sps_Information_TDD128 := omit, + maxAllowedUL_TX_Power := p_MaxAllowedUL_TX_Power, + ul_DPCH_Info := omit, + ul_EDCH_Information := omit, + ul_SecondaryCellInfoFDD := omit, + ul_MulticarrierEDCHInfo_TDD128 := omit, + dl_HSPDSCH_Information := omit, + dl_CommonInformation := p_DL_CommonInformation, + dl_InformationPerRL_List := omit, + dl_SecondaryCellInfoFDD := omit, + additionalDLSecCellInfoListFDD := omit, + mu_MIMO_Info_TDD128 := omit, + mbms_PL_ServiceRestrictInfo := omit, + cellDCHMeasOccasionInfo_TDD128 := omit + }, + physicalChannelReconfiguration_r10_add_ext := omit , + vb50NonCriticalExtensions := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + } + } + } + } + } + } + } + } + } + } + } + }; + + //--------------------------------------------------------------------------------------------------------------------- + // Radio Bearer Setup + //---------------------------------------------------------------------------- + template (value) DL_DCCH_Message cs_RadioBearerSetup_r10(IntegrityCheckInfo p_Integrityinfo, + template (value) RadioBearerSetup_r10_IEs p_RadioBearerSetup) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + integrityCheckInfo := p_Integrityinfo, + message_ := { + radioBearerSetup := { + later_than_r3 := { + rrc_TransactionIdentifier := tsc_RRC_TI, + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + r10 := { + radioBearerSetup_r10 := p_RadioBearerSetup, + radioBearerSetup_r10_add_ext := omit, + v9c0NonCriticalExtensions := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + } + } + } + } + } + } + } + } + } + } + } + }; + + //---------------------------------------------------------------------------- + template (value) RadioBearerSetup_r10_IEs cs_RadioBearerSetup_r10_IEs_Omit := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + integrityProtectionModeInfo := omit, + cipheringModeInfo := omit, + sr_vcc_Info := omit, + activationTime := omit, + new_U_RNTI := omit, + new_C_RNTI := omit, + new_DSCH_RNTI := omit, + new_H_RNTI := omit, + newPrimary_E_RNTI := omit, + newSecondary_E_RNTI := omit, + rrc_StateIndicator := cell_DCH, + utran_DRX_CycleLengthCoeff := omit, + ura_Identity := omit, + supportForChangeOfUE_Capability := omit, + cn_InformationInfo := omit, + srb_InformationSetupList := omit, + rab_InformationSetupList := omit, + rab_InformationReconfigList := omit, + rb_InformationReconfigList := omit, + rb_InformationAffectedList := omit, + dl_CounterSynchronisationInfo := omit, + pdcp_ROHC_TargetMode := omit, + ul_CommonTransChInfo := omit, + ul_deletedTransChInfoList := omit, + ul_AddReconfTransChInfoList := omit, + dl_CommonTransChInfo := omit, + dl_DeletedTransChInfoList := omit, + dl_AddReconfTransChInfoList := omit, + frequencyInfo := omit, + multi_frequencyInfo := omit, + dtx_drx_TimingInfo := omit, + dtx_drx_Info := omit, + hs_scch_LessInfo := omit, + mimoParameters := omit, + maxAllowedUL_TX_Power := omit, + ul_DPCH_Info := omit, + ul_EDCH_Information := omit, + ul_SecondaryCellInfoFDD := omit, + ul_MulticarrierEDCHInfo_TDD128 := omit, + dl_HSPDSCH_Information := omit, + dl_CommonInformation := omit, + dl_InformationPerRL_List := omit, + dl_SecondaryCellInfoFDD := omit, + additionalDLSecCellInfoListFDD := omit, + controlChannelDRXInfo_TDD128 := omit, + sps_Information_TDD128 := omit, + mu_MIMO_Info_TDD128 := omit, + mbms_PL_ServiceRestrictInfo := omit, + cellDCHMeasOccasionInfo_TDD128 := omit + }; + + //---------------------------------------------------------------------------- + template (value) RadioBearerSetup_r10_IEs cds_RadioBearerSetup_r10_IEs_64k_PS_FDD(ActivationTime p_Activetime, + bitstring p_RAB_Id, + UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode) + modifies cs_RadioBearerSetup_r10_IEs_Omit := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + activationTime := p_Activetime, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupDCH_PS_64k (p_RAB_Id, cs_RLC_InfoAM_Def) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCH_PS_64k_FDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_FDD (cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCH_PS_64k_r9, + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_Info_FDD (tsc_UL_DPDCH_SF_64k_PS, pl0_96, p_UL_ScramblingCode), + dl_CommonInformation := cs_DL_CommonInformationRB_SetUp_FDD_r10 (tsc_DL_DPCH1_SFP_64k_PS, flexible), + dl_InformationPerRL_List := cs_DL_InformationPerRL_r8_FDD (p_PrimScramblingCode, tsc_DL_DPCH1_ChC_64k_PS, tsc_DL_DPCH1_2ndScrC) + }; + + template (value) RadioBearerSetup_r10_IEs cds_RadioBearerSetup_r10_IEs_64k_PS_TDD (ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) + modifies cs_RadioBearerSetup_r10_IEs_Omit := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + activationTime := p_Activetime, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupDCH_PS_64k_TDD (p_RAB_Id, cs_RLC_InfoAM_Def) // @sic R5s130009 sic@ + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCH_PS_64k_TDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_TDD (cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCH_PS_64k_r9, + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_64k_PS_TDD, + dl_CommonInformation := cs_DL_CommonInfo_r10_TDD (cs_DL_DPCH_CfnHandling_Maintain_r6), // @sic R5s120954 sic@ + dl_InformationPerRL_List := cs_DL_InformationPerRL_r8_TDD (p_CellParametersID, cs_DL_DPCH_InfoPerRL_r7_64k_PS_TDD) + }; + + template (value) DL_DCCH_Message cs_108_RB_SetUp64k_PS_r10_FDD(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode) := + /* ASN.1 PDU Constraint. Defined in TS 34.108 clause 9 */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RadioBearerSetup_r10(p_Integrityinfo, cds_RadioBearerSetup_r10_IEs_64k_PS_FDD(p_Activetime, p_RAB_Id, p_UL_ScramblingCode, p_PrimScramblingCode)); + + template (value) DL_DCCH_Message cs_108_RB_SetUp64k_PS_r10_TDD(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) := + /* ASN.1 PDU Constraint. Defined in TS 34.108 clause 9. */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RadioBearerSetup_r10(p_Integrityinfo, cds_RadioBearerSetup_r10_IEs_64k_PS_TDD(p_Activetime, p_RAB_Id, p_CellParametersID)); + + //---------------------------------------------------------------------------- + template (value) RadioBearerSetup_r10_IEs cds_RadioBearerSetup_r10_IEs_HS_FromDCH_UL_64k_FDD(ActivationTime p_Activetime, + bitstring p_RAB_Id, + UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode) + modifies cs_RadioBearerSetup_r10_IEs_Omit := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + activationTime := p_Activetime, + new_H_RNTI := tsc_H_RNTI, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupDCH_PS_HSDPA (p_RAB_Id, cs_RLC_InfoAM_HSDPA) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCH_PS_64k_FDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_FDD(cs_TFCS_Cmpl0_1_Rx), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoList_2DCH_HS_PS_HSDPA_r9_FDD, + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_InfoACK_HSDPA_FDD (tsc_UL_DPDCH_SF_64k_PS, pl0_96, p_UL_ScramblingCode), + dl_HSPDSCH_Information := cs_DL_HSPDSCH_Information_r9_FDD (cs_HS_SCCH_Info_r9_FDD, cs_Measurement_Feedback_Info), + dl_CommonInformation := cs_DL_CommonInformationRB_SetUp_FDD_r10 (tsc_DL_DPCH1_SFP_SRB_3_4k, flexible), + dl_InformationPerRL_List := cds_DL_InfoPerRL_HSDPA_r8_FDD (p_PrimScramblingCode, tsc_Sfc256_C0, tsc_DL_DPCH1_2ndScrC) + }; + + template (value) RadioBearerSetup_r10_IEs cds_RadioBearerSetup_r10_IEs_HS_FromDCH_UL_64k_TDD(ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) + modifies cs_RadioBearerSetup_r10_IEs_Omit := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + activationTime := p_Activetime, + new_H_RNTI := tsc_H_RNTI, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupDCH_PS_HSDPA (p_RAB_Id, cs_RLC_InfoAM_HSDPA)//FFS - Check values + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCH_PS_64k_TDD,//FFS - Check values + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k,//FFs - check values + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_TDD(cs_TFCS_Cmpl0_1_Rx),//FFS - check values + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoList_2DCH_HS_PS_HSDPA_r9_TDD,//FFS - check values + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_64k_PS_TDD, + dl_HSPDSCH_Information := cs_DL_HSPDSCH_Information_TDD (cs_HS_SCCH_Info_TDD, cs_HS_PDSCH_Midamble_Configuration_TDD128), + dl_CommonInformation := cs_DL_CommonInfo_r10_TDD, + dl_InformationPerRL_List := cs_DL_InformationPerRL_r8_TDD (p_CellParametersID, cs_DL_DPCH_InfoPerRL_SRB_TDD) + }; + + template (value) DL_DCCH_Message cs_108_RB_SetUpHS_FromDCH_UL_64k_r10_FDD(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode) := + /* ASN.1 PDU Constraint Defined in TS 34.108 clause 9. But uses 64 K uplink */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RadioBearerSetup_r10(p_Integrityinfo, cds_RadioBearerSetup_r10_IEs_HS_FromDCH_UL_64k_FDD (p_Activetime, p_RAB_Id, p_UL_ScramblingCode, p_PrimScramblingCode)); + + template (value) DL_DCCH_Message cs_108_RB_SetUpHS_FromDCH_UL_64k_r10_TDD(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) := + /* PDU Constraint Defined in TS 34.108 clause 9. But uses 64 K uplink */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RadioBearerSetup_r10(p_Integrityinfo, cds_RadioBearerSetup_r10_IEs_HS_FromDCH_UL_64k_TDD (p_Activetime, p_RAB_Id, p_CellParametersID)); + + //---------------------------------------------------------------------------- + template (value) RadioBearerSetup_r10_IEs cds_RadioBearerSetup_r10_IEs_FACH_PS_FDD(C_RNTI p_C_RNTI, + bitstring p_RAB_Id) + modifies cs_RadioBearerSetup_r10_IEs_Omit := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + new_C_RNTI := p_C_RNTI, + new_H_RNTI := omit, + rrc_StateIndicator := cell_FACH, + rab_InformationSetupList := { + cs_RAB_InfoFACH_PS(p_RAB_Id, cs_RLC_InfoAM_Def) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCH_PS_64k_FDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_FDD(cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCH_PS_64k_r9 + }; + + template (value) RadioBearerSetup_r10_IEs cds_RadioBearerSetup_r10_IEs_FACH_PS_TDD(C_RNTI p_C_RNTI, + bitstring p_RAB_Id) + modifies cs_RadioBearerSetup_r10_IEs_Omit := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + new_C_RNTI := p_C_RNTI, + new_H_RNTI := omit, + rrc_StateIndicator := cell_FACH, + rab_InformationSetupList := { + cs_RAB_InfoFACH_PS(p_RAB_Id, cs_RLC_InfoAM_Def) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCH_PS_64k_TDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_TDD(cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCH_PS_64k_r9 + }; + + template (value) DL_DCCH_Message cs_108_RB_SetUpFACH_PS_FDD_r10(IntegrityCheckInfo p_Integrityinfo, + C_RNTI p_C_RNTI, + bitstring p_RAB_Id) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RadioBearerSetup_r10(p_Integrityinfo, cds_RadioBearerSetup_r10_IEs_FACH_PS_FDD(p_C_RNTI, p_RAB_Id)); + + template (value) DL_DCCH_Message cs_108_RB_SetUpFACH_PS_TDD_r10(IntegrityCheckInfo p_Integrityinfo, + C_RNTI p_C_RNTI, + bitstring p_RAB_Id) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RadioBearerSetup_r10(p_Integrityinfo, cds_RadioBearerSetup_r10_IEs_FACH_PS_TDD(p_C_RNTI, p_RAB_Id)); + + //---------------------------------------------------------------------------- + template (value) RadioBearerSetup_r10_IEs cds_RadioBearerSetup_r10_IEs_Speech_FDD(ActivationTime p_Activetime, + bitstring p_RAB_Id, + UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode) + modifies cs_RadioBearerSetup_r10_IEs_Omit := + { /* @status APPROVED (LTE_IRAT) */ + activationTime := p_Activetime, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupTM_12_2k(useT314, p_RAB_Id) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfoTM_12_2k_FDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListTM_12_2k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoSameAsUL_r4_FDD, + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListTM_12_2k_r9, + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_Info_FDD (tsc_UL_DPDCH_SF_Speech, pl0_84, p_UL_ScramblingCode), + dl_CommonInformation := cs_DL_CommonInformationRB_SetUpSpeech_r10 (tsc_DL_DPCH1_SFP_Speech), + dl_InformationPerRL_List := cs_DL_InformationPerRL_r8_FDD (p_PrimScramblingCode, tsc_DL_DPCH1_ChC_Speech, tsc_DL_DPCH1_2ndScrC) + }; + + template (value) RadioBearerSetup_r10_IEs cds_RadioBearerSetup_r10_IEs_Speech_TDD(ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) + modifies cs_RadioBearerSetup_r10_IEs_Omit := + { /* @status APPROVED (LTE_IRAT) */ + activationTime := p_Activetime, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupTM_12_2k (useT314, p_RAB_Id) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfoTM_12_2k_TDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListTM_12_2k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoSameAsUL_r4_TDD, + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListTM_12_2k_r9, + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_Speech_TDD, + dl_CommonInformation := cs_DL_CommonInfo_r10_TDD, + dl_InformationPerRL_List := cs_DL_InformationPerRL_r8_TDD (p_CellParametersID, cs_DL_DPCH_InfoPerRL_Speech_TDD) + }; + + template (value) DL_DCCH_Message cs_108_RB_SetUpSpeech_r10_FDD(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + PrimaryScramblingCode p_PrimScramblingCode, + UL_ScramblingCode p_UL_ScramblingCode) := + /* @status APPROVED (LTE_IRAT) */ + cs_RadioBearerSetup_r10(p_Integrityinfo, cds_RadioBearerSetup_r10_IEs_Speech_FDD(p_Activetime, p_RAB_Id, p_UL_ScramblingCode, p_PrimScramblingCode)); + + template (value) DL_DCCH_Message cs_108_RB_SetUpSpeech_r10_TDD(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) := + /* @status APPROVED (LTE_IRAT) */ + cs_RadioBearerSetup_r10(p_Integrityinfo, cds_RadioBearerSetup_r10_IEs_Speech_TDD(p_Activetime, p_RAB_Id, p_CellParametersID)); + + //---------------------------------------------------------------------------- + template (value) RadioBearerSetup_r10_IEs cds_RadioBearerSetup_r10_IEs_PSandConvSpeech_FDD(ActivationTime p_Activetime, + bitstring p_RAB_Id, + PrimaryScramblingCode p_PrimScramblingCode, + UL_ScramblingCode p_UL_ScramblingCode) + modifies cs_RadioBearerSetup_r10_IEs_Omit := + { /* @status APPROVED (LTE_IRAT) */ + activationTime := p_Activetime, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupTM_12_2k (useT314, p_RAB_Id) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfo_TM3_AM1_0To119_FDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListTM_12_2k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_FDD(cs_TFCS_Cmpl0_To119_Rx), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListTM_12_2k_r9, + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_Info_FDD (tsc_UL_DPDCH_SF_64k_PS, pl0_76, p_UL_ScramblingCode), + dl_CommonInformation := cs_DL_CommonInformationRB_SetUp_FDD_r10 (tsc_DL_DPCH1_SFP_64k_PS, flexible), + dl_InformationPerRL_List := cs_DL_InformationPerRL_r8_FDD (p_PrimScramblingCode, tsc_DL_DPCH1_ChC_64k_PS, tsc_DL_DPCH1_2ndScrC) + }; + + template (value) RadioBearerSetup_r10_IEs cds_RadioBearerSetup_r10_IEs_PSandConvSpeech_TDD(ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) + modifies cs_RadioBearerSetup_r10_IEs_Omit := + { /* @status APPROVED (LTE_IRAT) */ + activationTime := p_Activetime, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupTM_12_2k (useT314, p_RAB_Id) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfo_TM3_AM1_0To119_TDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListTM_12_2k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_TDD(cs_TFCS_Cmpl0_To119_Rx), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListTM_12_2k_r9, + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_Speech_TDD, + dl_CommonInformation := cs_DL_CommonInfo_r10_TDD, + dl_InformationPerRL_List := cs_DL_InformationPerRL_r8_TDD (p_CellParametersID, cs_DL_DPCH_InfoPerRL_r7_64k_PS_TDD) + }; + + template (value) DL_DCCH_Message cs_108_RB_SetUpPSandConvSpeech_r10_FDD(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + PrimaryScramblingCode p_PrimScramblingCode, + UL_ScramblingCode p_UL_ScramblingCode) := + /* @status APPROVED (LTE_IRAT) */ + cs_RadioBearerSetup_r10(p_Integrityinfo, cds_RadioBearerSetup_r10_IEs_PSandConvSpeech_FDD(p_Activetime, p_RAB_Id, p_PrimScramblingCode, p_UL_ScramblingCode)); + + template (value) DL_DCCH_Message cs_108_RB_SetUpPSandConvSpeech_r10_TDD(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) := + /* @status APPROVED (LTE_IRAT) */ + cs_RadioBearerSetup_r10(p_Integrityinfo, cds_RadioBearerSetup_r10_IEs_PSandConvSpeech_TDD(p_Activetime, p_RAB_Id, p_CellParametersID)); + + //---------------------------------------------------------------------------- + template (value) RadioBearerSetup_r10_IEs cds_RadioBearerSetup_r10_IEs_PSandConvSpeech_PSexists_FDD(ActivationTime p_Activetime, + bitstring p_RAB_Id, + PrimaryScramblingCode p_PrimScramblingCode, + UL_ScramblingCode p_UL_ScramblingCode) + modifies cs_RadioBearerSetup_r10_IEs_Omit := + { /* @status APPROVED (LTE_IRAT) */ + activationTime := p_Activetime, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupDCH_PS_64k_DCH4 (p_RAB_Id, cs_RLC_InfoAM_Def) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfo_TM3_AM1_0To119_FDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k_Only, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_FDD(cs_TFCS_Cmpl0_To119_Rx), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCH_PS_64k_Only_r9, + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_Info_FDD (tsc_UL_DPDCH_SF_64k_PS, pl0_76, p_UL_ScramblingCode), + dl_CommonInformation := cs_DL_CommonInformationRB_SetUp_FDD_r10 (tsc_DL_DPCH1_SFP_64k_PS, flexible), + dl_InformationPerRL_List := cs_DL_InformationPerRL_r8_FDD (p_PrimScramblingCode, tsc_DL_DPCH1_ChC_64k_PS, tsc_DL_DPCH1_2ndScrC) + }; + + template (value) RadioBearerSetup_r10_IEs cds_RadioBearerSetup_r10_IEs_PSandConvSpeech_PSexists_TDD(ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) + modifies cs_RadioBearerSetup_r10_IEs_Omit := + { /* @status APPROVED (LTE_IRAT) */ + // @sic R5s130606 sic@ + activationTime := p_Activetime, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupDCH_PS_64k_DCH4 (p_RAB_Id, cs_RLC_InfoAM_Def) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfo_TM3_AM1_0To119_TDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k_Only, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_TDD(cs_TFCS_Cmpl0_To119_Rx), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCH_PS_64k_Only_r9, + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_PS_and_ConvSpeech_TDD, + dl_CommonInformation := cs_DL_CommonInfo_r10_TDD(cs_DL_DPCH_CfnHandling_Maintain_r6), + dl_InformationPerRL_List := cs_DL_InformationPerRL_r8_TDD (p_CellParametersID, cs_DL_DPCH_InfoPerRL_r7_PS_and_ConvSpeech_TDD) + }; + + template (value) DL_DCCH_Message cs_108_RB_SetUpPSandConvSpeech_PSexists_FDD_r10(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + PrimaryScramblingCode p_PrimScramblingCode, + UL_ScramblingCode p_UL_ScramblingCode) := + /* @status APPROVED (LTE_IRAT) */ + cs_RadioBearerSetup_r10(p_Integrityinfo, cds_RadioBearerSetup_r10_IEs_PSandConvSpeech_PSexists_FDD(p_Activetime, p_RAB_Id, p_PrimScramblingCode, p_UL_ScramblingCode)); + + template (value) DL_DCCH_Message cs_108_RB_SetUpPSandConvSpeech_PSexists_TDD_r10(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) := + /* @status APPROVED (LTE_IRAT) */ + // @sic R5s130606 sic@ + cs_RadioBearerSetup_r10(p_Integrityinfo, cds_RadioBearerSetup_r10_IEs_PSandConvSpeech_PSexists_TDD(p_Activetime, p_RAB_Id, p_CellParametersID)); + + template (value) DL_DCCH_Message cs_108_RB_SetUpPSandConvSpeech_TDD_r10(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) := + cs_RadioBearerSetup_r10(p_Integrityinfo, cds_RadioBearerSetup_r10_IEs_PSandConvSpeech_TDD(p_Activetime, p_RAB_Id, p_CellParametersID)); + +} diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_RAB_Templates_r11.ttcn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_RAB_Templates_r11.ttcn new file mode 100644 index 0000000..34a323a --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_RAB_Templates_r11.ttcn @@ -0,0 +1,943 @@ +/* *****************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-08-29 10:23:18 +0200 (Fri, 29 Aug 2014) $ +// $Rev: 11945 $ +/* *****************************************************************************/ + +module UTRAN_RRC_RAB_Templates_r11 { + + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_CommonDefs all; + import from UTRAN_Parameters all; + import from UTRAN_RRC_CommonTemplates all; + import from UTRAN_RRC_Templates all; + import from UTRAN_RRC_RAB_Templates all; + import from UTRAN_RRC_RAB_Templates_r9 all; + import from UTRAN_RRC_Templates_r11 all; + + //---------------------------------------------------------------------- + // Template init functions + //---------------------------------------------------------------------- + + /* + * @desc Function that determines the number of HARQ processes according to 34.108 cl. 6.10.2.4.5 Parameter Set + * @return HarqNrOfProcesses_r11_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_GetNrOfHarqProcesses_FDD_r11() return HarqNrOfProcesses_r11_Type + { + var HarqNrOfProcesses_r11_Type v_NumberOfProcesses; + + select (pc_HSDSCH_UE_Category_FDD) { // @sic R5w140207 sic@ + case (1, 2) { + v_NumberOfProcesses := n2; + } + case (3, 4, 11) { + v_NumberOfProcesses := n3; + } + case else { + v_NumberOfProcesses := n6; + } + } + return v_NumberOfProcesses; + }; + + /* + * @desc Function that determines the number of HARQ processes according to 34.108 cl. 6.11.5.4.6 Parameter Set + * @return HarqNrOfProcesses_r11_Type + * @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) + */ + function f_GetNrOfHarqProcesses_TDD_r11() return HarqNrOfProcesses_r11_Type + { + var HarqNrOfProcesses_r11_Type v_NumberOfProcesses; + + select (pc_HSDSCH_UE_Category_TDD) { // @sic R5w140207 sic@ + case (2, 5, 8, 11, 14) { + v_NumberOfProcesses := n6; + } + case (3, 6, 9, 12, 15) { + v_NumberOfProcesses := n8; + } + case else { + v_NumberOfProcesses := n4; + } + } + return v_NumberOfProcesses; + }; + + //============================================================================ + // Information element + //============================================================================ + template (value) DL_CommonInformation_r11 cs_DL_CommonInformationRB_SetUp_FDD_r11(SF512_AndPilot p_Sf, + PositionFixedOrFlexible p_PositionFixedOrFlexible, + boolean p_TfciExistence := true, + template (omit) DPCH_CompressedModeInfo_r10 p_DPCH_CompressedModeInfo := omit, + template (omit) TX_DiversityMode p_TX_DiversityMode := noDiversity) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_DL_CommonInfo_FDD_r11(cs_DL_DPCH_CfnHandling_Maintain_r6(omit), p_Sf, p_PositionFixedOrFlexible, p_TfciExistence, omit, p_DPCH_CompressedModeInfo, p_TX_DiversityMode); + + template (value) DL_CommonInformation_r11 cs_DL_CommonInformationRB_SetUpSpeech_r11(SF512_AndPilot p_Sf) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_DL_CommonInformationRB_SetUp_FDD_r11(p_Sf, fixed, false); + + + // ----------------------------------------------------------------------------- + + template (value) DL_InformationPerRL_List_r11 cs_DL_InformationPerRL_FDD_r11(PrimaryScramblingCode p_PrimaryScramblingCode, + SF512_AndCodeNumber p_Sf, + SecondaryScramblingCode p_SecondaryScramblingCode, + boolean p_ServingHSDSCH_RL_indicator := false) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + { + modeSpecificInfo := { + fdd := { + primaryCPICH_Info := { + primaryScramblingCode := p_PrimaryScramblingCode + }, + servingHSDSCH_RL_indicator := p_ServingHSDSCH_RL_indicator, + servingEDCH_RL_indicator := false + } + }, + dl_dpchInfo := { + dl_DPCH_InfoPerRL := cs_DL_DPCH_InfoPerRL_SRB_FDD(p_Sf, p_SecondaryScramblingCode) + }, + e_AGCH_Information := omit, + e_ROCH_Information := omit, + modeSpecificInfo2 := { + fdd := { + e_HICH_Info := omit, + e_RGCH_Info := omit, + f_TPICH_Info := omit + } + }, + cell_id := omit + } + }; + + template (value) DL_InformationPerRL_List_r11 cs_DL_InformationPerRL_TDD_r11 ( CellParametersID p_CellParametersID, + template (value) DL_DPCH_InfoPerRL_r7 p_DL_DPCH_InfoPerRL_r7 ) := + { /* According to condition A3 in TS 34.108 clause 9.1.1: Downlink information for each radio link list */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + { + modeSpecificInfo := { + tdd := { + tdd := { + tddOption := { + tdd128 := { + tstd_Indicator := false + } + }, + cellParametersID := p_CellParametersID, + sctd_Indicator := false + } + } + }, + dl_dpchInfo := { + dl_DPCH_InfoPerRL := p_DL_DPCH_InfoPerRL_r7 + }, + e_AGCH_Information := omit, + e_ROCH_Information := omit, + modeSpecificInfo2 := { + tdd := { + tdd128 := { + e_HICH_Info := omit + } + } + }, + cell_id := omit + } + }; + + template (value) DL_InformationPerRL_List_r11 cs_DL_InfoPerRL_HSDPA_FDD_r11(PrimaryScramblingCode p_PrimaryScramblingCode, + SF512_AndCodeNumber p_Sf, + SecondaryScramblingCode p_SecondaryScramblingCode) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_DL_InformationPerRL_FDD_r11(p_PrimaryScramblingCode, p_Sf, p_SecondaryScramblingCode, true); + + // ----------------------------------------------------------------------------- + template (value) DL_AddReconfTransChInformation_r11 cs_DL_AddReconfTransChInfo_WithoutQuality_r11(TransportChannelIdentity p_DlTrChId, + TransportChannelIdentity p_UlTrChId) := + /* @status APPROVED (LTE_IRAT) */ + cs_DL_AddReconfTransChInfo_r11(p_DlTrChId, p_UlTrChId, omit); + + template (value) DL_AddReconfTransChInformation_r11 cs_DL_AddReconfTransChHSDSCHInfo_HSDPA_r11(template (value) HSDSCH_Info_r11 p_HSDSCH_Info) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + dl_TransportChannelType := { + hsdsch := NULL + }, + tfs_SignallingMode := { + hsdsch := p_HSDSCH_Info + }, + dch_QualityTarget := omit + }; + + template (value) DL_AddReconfTransChInfoList_r11 cs_DL_AddReconfTransChInfoListDCH_PS_64k_Only_r11 := + { /* @status APPROVED (LTE_IRAT) */ + cs_DL_AddReconfTransChInfoExplicit_r11(tsc_DL_DCH4, cs_DCH_336_TFS_UE) + }; + + template (value) DL_AddReconfTransChInfoList_r11 cs_DL_AddReconfTransChInfoListDCH_PS_64k_r11(TransportChannelIdentity p_DL_PS_TransportChannelIdentity := tsc_DL_DCH1, + TransportChannelIdentity p_UL_PS_TransportChannelIdentity := tsc_UL_DCH1) := + { /* According to the corresponding IE in the RADIO BEARER SETUP message using condition A3 in TS 34.108 clause 9.1.1: Added or Reconfigured DL TrCH information */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_DL_AddReconfTransChInfo_r11( p_DL_PS_TransportChannelIdentity, p_UL_PS_TransportChannelIdentity), + cs_DL_AddReconfTransChInfo_r11(tsc_DL_DCH5, tsc_UL_DCH5) + }; + + template (value) DL_AddReconfTransChInfoList_r11 cs_DL_AddReconfTransChInfoListTM_12_2k_r11 := + { /* @status APPROVED (LTE_IRAT) */ + cs_DL_AddReconfTransChInfoExplicit_r11(tsc_DL_DCH1, cs_DCH_81_TFS_DL_UE, omit), + cs_DL_AddReconfTransChInfo_WithoutQuality_r11(tsc_DL_DCH2, tsc_UL_DCH2), + cs_DL_AddReconfTransChInfo_WithoutQuality_r11(tsc_DL_DCH3, tsc_UL_DCH3), + cs_DL_AddReconfTransChInfo_r11(tsc_DL_DCH5, tsc_UL_DCH5) + }; + + template (value) DL_AddReconfTransChInfoList_r11 cs_DL_AddReconfTransChInfoList_2DCH_HS_PS_HSDPA_r11(template (value) HARQ_Info_r11 p_HARQ_Info) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_DL_AddReconfTransChInfo_r11(tsc_DL_DCH5, tsc_UL_DCH5), + cs_DL_AddReconfTransChInfoExplicit_r11(tsc_DL_DCH1, cds_DCH_336_TFS_0_UE), + cs_DL_AddReconfTransChHSDSCHInfo_HSDPA_r11 (cs_HSDSCH_Info_r11 (p_HARQ_Info, cs_AddOrReconfMAC_dFlow (cs_MAC_hs_AddReconfQueue))) + }; + + template (value) DL_AddReconfTransChInfoList_r11 cs_DL_AddReconfTransChInfoList_2DCH_HS_PS_HSDPA_FDD_r11 := cs_DL_AddReconfTransChInfoList_2DCH_HS_PS_HSDPA_r11(cs_HARQ_Info_FDD_r11); /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + + template (value) DL_AddReconfTransChInfoList_r11 cs_DL_AddReconfTransChInfoList_2DCH_HS_PS_HSDPA_TDD_r11 := cs_DL_AddReconfTransChInfoList_2DCH_HS_PS_HSDPA_r11(cs_HARQ_Info_TDD_r11); /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + + //----------------------------------------------------------------------------------------------- + + template (value) DL_AM_RLC_Mode_r11 cds_DL_AM_RLC_HSDPA_r11 modifies cs_DL_AM_RLC_r11 := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + receivingWindowSize := rw768, + dl_RLC_StatusInfo := { + timerStatusProhibit := tsp100 + } + }; + + //----------------------------------------------------------------------------------------------- + template (value) RLC_Info_r11 cs_RLC_InfoAM_Common_r11(template (value) UL_AM_RLC_Mode p_UL_AM_RLC_Mode, + template (value) DL_AM_RLC_Mode_r11 p_DL_AM_RLC_Mode) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + ul_RLC_Mode := { + ul_AM_RLC_Mode := p_UL_AM_RLC_Mode + }, + dl_RLC_Mode := { + dl_AM_RLC_Mode := p_DL_AM_RLC_Mode + }, + rlc_OneSidedReEst := false, + altE_bitInterpretation := omit,// not specified in RADIO BEARER SETUP acc. to TS 34.108 ch 9 + useSpecialValueOfHEField := omit//default false + }; + + template (value) RLC_Info_r11 cs_RLC_InfoAM_Def_r11 := cs_RLC_InfoAM_Common_r11(cs_UL_AM_RLC, cs_DL_AM_RLC_r11); /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + + template (value) RLC_Info_r11 cs_RLC_InfoTM_Def_r11 := + { /* @status APPROVED (LTE_IRAT) */ + ul_RLC_Mode := { + ul_TM_RLC_Mode := { + transmissionRLC_Discard := omit, + segmentationIndication := false + } + }, + dl_RLC_Mode := { + dl_TM_RLC_Mode := { + segmentationIndication := false + } + }, + rlc_OneSidedReEst := false, + altE_bitInterpretation := omit, + useSpecialValueOfHEField := omit + }; + + template (value) RLC_Info_r11 cs_RLC_InfoAM_HSDPA_r11 := cs_RLC_InfoAM_Common_r11(cds_UL_AM_RLC_HSDPA, cds_DL_AM_RLC_HSDPA_r11); /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + + //----------------------------------------------------------------------------------------------- + + template (value) RB_InformationSetup_r11 cs_RB_InformationSetup_SpeechFlow_r11(RB_Identity p_RB_Identity, + TransportChannelIdentity p_UL_TransportChannelId, + MAC_LogicalChannelPriority p_MAC_LogicalChannelPriority, + TransportChannelIdentity p_DL_TransportChannelId) := + { /* @status APPROVED (LTE_IRAT) */ + rb_Identity := p_RB_Identity, + pdcp_Info := omit, + rlc_InfoChoice := { + rlc_Info := cs_RLC_InfoTM_Def_r11 + }, + rb_MappingInfo := { + { + ul_LogicalChannelMappings := cs_UL_LogicalChannelMappings_r8_DCH(p_UL_TransportChannelId, p_MAC_LogicalChannelPriority), + dl_LogicalChannelMappingList := cs_DL_LogicalChannelMappingList_r7_DCH(p_DL_TransportChannelId) + } + } + }; + + template (value) RAB_InformationSetup_r11 cs_RAB_Info_PS_Common_r11(bitstring p_RAB_Id, + integer p_RB_Id, + template (omit) PDCP_Info_r4 p_PDCP_Info, + template (value) RLC_Info_r11 p_RLC_Info, + template (value) RB_MappingInfo_r8 p_RB_MappingInfo) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + rab_Info := cs_RAB_InfoPS(p_RAB_Id), + cs_HSPA_Information := omit, + rab_InfoReplace := omit, + rb_InformationSetupList := { + { + rb_Identity := p_RB_Id, + pdcp_Info := p_PDCP_Info, + rlc_InfoChoice := { + rlc_Info := p_RLC_Info + }, + rb_MappingInfo := p_RB_MappingInfo + } + } + }; + + template (value) RAB_InformationSetup_r11 cs_RAB_InfoSetupDCH_PS_64k_r11(bitstring p_RAB_Id, + template (value) RLC_Info_r11 p_RLC_Info) := + /* Values according to 34.108 cl. 9.1.1 Message RADIO BEARER SETUP message: AM or UM using condition A3 */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RAB_Info_PS_Common_r11(p_RAB_Id, tsc_RB20, cs_PDCP_Info_DCH_PS, p_RLC_Info, cs_RB_MappingInfo_PS); + + template (value) RAB_InformationSetup_r11 cs_RAB_InfoSetupDCH_PS_64k_r11_TDD(bitstring p_RAB_Id, + template (value) RLC_Info_r11 p_RLC_Info) := + /* Values according to 34.108 cl. 9.1.1 Message RADIO BEARER SETUP message: AM or UM using condition A3 */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RAB_Info_PS_Common_r11(p_RAB_Id, tsc_RB20, cs_PDCP_Info_DCH_PS, p_RLC_Info, cs_RB_MappingInfo_PS(-, -, cs_RLC_SizeExplicit1)); + + template (value) RAB_InformationSetup_r11 cs_RAB_InfoFACH_PS_r11(bitstring p_RAB_Id, + template (value) RLC_Info_r11 p_RLC_Info, + template (value) RLC_SizeExplicitList p_UL_RACH_RLC_SizeExplicitList := cs_RLC_SizeExplicit2) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RAB_Info_PS_Common_r11(p_RAB_Id, tsc_RB20, omit, p_RLC_Info, cs_RB_MappingInfo_PS(-, -, p_UL_RACH_RLC_SizeExplicitList)); + + template (value) RAB_InformationSetup_r11 cs_RAB_InfoSetupTM_12_2k_r11(Re_EstablishmentTimer p_ReEstTimer, + bitstring p_RAB_Id) := + { /* 36.508 cl. 4.8.3 Table 4.8.3-1: + UTRA Speech TS 34.108 subclause 6.10.2.4.1.4 Conversational / speech / UL:12.2 DL:12.2 kbps / CS RAB + UL:3.4 DL:3.4 kbps SRBs for DCCH */ + /* @status APPROVED (LTE_IRAT) */ + rab_Info := cs_RAB_InfoPS_Common(p_RAB_Id, cs_domain, p_ReEstTimer), + cs_HSPA_Information := omit, + rab_InfoReplace := omit, + rb_InformationSetupList := { + // RB_InformationSetupList + cs_RB_InformationSetup_SpeechFlow_r11(tsc_RB10, tsc_UL_DCH1, tsc_MAC_LogicalChannelPrio6, tsc_DL_DCH1), + cs_RB_InformationSetup_SpeechFlow_r11(tsc_RB11, tsc_UL_DCH2, tsc_MAC_LogicalChannelPrio6, tsc_DL_DCH2), + cs_RB_InformationSetup_SpeechFlow_r11(tsc_RB12, tsc_UL_DCH3, tsc_MAC_LogicalChannelPrio6, tsc_DL_DCH3) + } + }; + + template (value) RAB_InformationSetup_r11 cs_RAB_InfoSetupDCH_PS_HSDPA_r11(bitstring p_RAB_Id, + template (value) RLC_Info_r11 p_RLC_Info) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RAB_Info_PS_Common_r11(p_RAB_Id, tsc_RB25, cs_PDCP_Info_DCH_PS, p_RLC_Info, cs_RB_MappingInfo_PS_HSDPA); + + template (value) RAB_InformationSetup_r11 cs_RAB_InfoSetupDCH_PS_64k_DCH4_r11(bitstring p_RAB_Id, + template (value) RLC_Info_r11 p_RLC_Info) := + /* @status APPROVED (LTE_IRAT) */ + cs_RAB_Info_PS_Common_r11(p_RAB_Id, tsc_RB20, cs_PDCP_Info_DCH_PS, p_RLC_Info, cs_RB_MappingInfo_PS (tsc_DL_DCH4, tsc_UL_DCH4)); + + //============================================================================ + // HSDPA templates + //---------------------------------------------------------------------------- + + template (value) HARQ_Info_r11 cs_HARQ_Info_FDD_r11 := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + numberOfProcesses := f_GetNrOfHarqProcesses_FDD_r11(), + memoryPartitioning := { + implicit := NULL + } + }; + + template (value) HARQ_Info_r11 cs_HARQ_Info_TDD_r11 := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + numberOfProcesses := f_GetNrOfHarqProcesses_TDD_r11(), + memoryPartitioning := { + implicit := NULL + } + }; + + // ----------------------------------------------------------------------------- + template (value) HSDSCH_Info_r11 cs_HSDSCH_Info_r11(template (value) HARQ_Info_r11 p_HARQ_Info, + template (value) AddOrReconfMAC_dFlow p_AddOrReconfMAC_dFlow) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + harqInfo := p_HARQ_Info, + dl_MAC_HeaderType := { + mac_hs := p_AddOrReconfMAC_dFlow + } + }; + + template (value) DL_HSPDSCH_Information_r11 cs_DL_HSPDSCH_Information_FDD_r11(template (value) HS_SCCH_Info_r9 p_HS_SCCH_Info, + template (value) Measurement_Feedback_Info_r11 p_Measurement_Feedback_Info, + template (omit) DL_64QAM_Configured_r11_Type p_DL_64QAM_Configured_type := omit, + template (omit) HS_DSCH_TBSizeTable p_OctetAligned := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + hs_scch_Info := p_HS_SCCH_Info, + measurement_feedback_Info := p_Measurement_Feedback_Info, + modeSpecificInfo := { + fdd := { + dl_64QAM_Configured := p_DL_64QAM_Configured_type, + hs_DSCH_TBSizeTable := p_OctetAligned + } + } + }; + + template (value) DL_HSPDSCH_Information_r11 cs_DL_HSPDSCH_Information_TDD_r11 ( template (value) HS_SCCH_Info_r9 p_HS_SCCH_Info, + template (value) HS_PDSCH_Midamble_Configuration_TDD128 p_HS_PDSCH_Midamble_Configuration_TDD128 ) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + hs_scch_Info := p_HS_SCCH_Info, + measurement_feedback_Info := omit, + modeSpecificInfo := { + tdd := { + tdd128 := { + hs_PDSCH_Midamble_Configuration_tdd128 := p_HS_PDSCH_Midamble_Configuration_TDD128, + dl_MultiCarrier_Information := omit, + tS0_Indicator:= omit, + outofSyncWindow:= omit + } + } + } + }; + + template (value) Measurement_Feedback_Info_r11 cs_Measurement_Feedback_Info_r11 := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + modeSpecificInfo := { + fdd := { + measurementPowerOffset := 12, // Actual measurement power offset value = IE value * 0.5 + feedback_cycle := fc4, // Feedback cycle + cqi_RepetitionFactor := 1, // According to 34.108 cl. 9.1.1 RADIO BEARER SETUP + cqi_RepetitionFactor_Assisting := omit, + deltaCQI := 5 + } + } + }; + + //--------------------------------------------------------------------------------------------------------------------- + // Physical channel reconfiguration + //--------------------------------------------------------------------------------------------------------------------- + template (value) DL_DCCH_Message cs_PhysicalChannelReconfiguration_r11(IntegrityCheckInfo p_Integrityinfo, + RRC_TransactionIdentifier p_RRC_TI, + template (omit) ActivationTime p_ActivationTime, + template (omit) DL_CommonInformation_r11 p_DL_CommonInformation, + RRC_StateIndicator p_RRC_StateIndicator := cell_DCH, + template (omit) UTRAN_DRX_CycleLengthCoefficient_r7 p_UTRAN_DRX_CycleLengthCoefficient_r7 := omit, + template (omit) MaxAllowedUL_TX_Power p_MaxAllowedUL_TX_Power := omit) := + { /* Default values from 36.508 Table 4.7B.1-5: PHYSICAL CHANNEL RECONFIGURATION */ + /* @status APPROVED (LTE_IRAT) */ + integrityCheckInfo := p_Integrityinfo, + message_ := { + physicalChannelReconfiguration := { + later_than_r3 := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + r11:= { + physicalChannelReconfiguration_r11 := { + //-- User equipment IEs + integrityProtectionModeInfo := omit, + cipheringModeInfo := omit, + activationTime := p_ActivationTime, + delayRestrictionFlag := omit, + new_U_RNTI := omit, + new_C_RNTI := omit, + new_DSCH_RNTI := omit, + new_H_RNTI := omit, + newPrimary_E_RNTI := omit, + newSecondary_E_RNTI := omit, + rrc_StateIndicator := p_RRC_StateIndicator, + ueMobilityStateIndicator := omit, + utran_DRX_CycleLengthCoeff := p_UTRAN_DRX_CycleLengthCoefficient_r7, + cn_InformationInfo := omit, + ura_Identity := omit, + supportForChangeOfUE_Capability := omit, + responseToChangeOfUE_Capability := omit, + dl_CounterSynchronisationInfo := omit, + harqInfo := omit, + frequencyInfo := omit, + multi_frequencyInfo := omit, + dtx_drx_TimingInfo := omit, + dtx_drx_Info := omit, + hs_scch_LessInfo := omit, + mimoParameters := omit, + mimo4x4Parameters := omit, + controlChannelDRXInfo_TDD128 := omit, + sps_Information_TDD128 := omit, + maxAllowedUL_TX_Power := p_MaxAllowedUL_TX_Power, + ul_DPCH_Info := omit, + ul_EDCH_Information := omit, + ul_SecondaryCellInfoFDD := omit, + ul_MulticarrierEDCHInfo_TDD128 := omit, + ul_CLTD_InfoFDD := omit, + ul_OLTD_InfoFDD := omit, + dl_HSPDSCH_Information := omit, + dl_CommonInformation := p_DL_CommonInformation, + dl_InformationPerRL_List := omit, + dl_SecondaryCellInfoFDD := omit, + additionalDLSecCellInfoListFDD := omit, + additionalDLSecCellInfoListFDD2 := omit, + commonERGCHInfoFDD := omit, + mu_MIMO_Info_TDD128 := omit, + mbms_PL_ServiceRestrictInfo := omit, + cellDCHMeasOccasionInfo_TDD128 := omit + }, + physicalChannelReconfiguration_r11_add_ext := omit , + nonCriticalExtensions := omit + } + } + } + } + } + } + } + } + } + } + } + } + }; + + //--------------------------------------------------------------------------------------------------------------------- + // Radio Bearer Setup + //---------------------------------------------------------------------------- + template (value) DL_DCCH_Message cs_RadioBearerSetup_r11(IntegrityCheckInfo p_Integrityinfo, + template (value) RadioBearerSetup_r11_IEs p_RadioBearerSetup) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + integrityCheckInfo := p_Integrityinfo, + message_ := { + radioBearerSetup := { + later_than_r3 := { + rrc_TransactionIdentifier := tsc_RRC_TI, + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + r11 := { + radioBearerSetup_r11 := p_RadioBearerSetup, + radioBearerSetup_r11_add_ext := omit, + nonCriticalExtensions := omit + } + } + } + } + } + } + } + } + } + } + } + } + }; + + //---------------------------------------------------------------------------- + template (value) RadioBearerSetup_r11_IEs cs_RadioBearerSetup_r11_IEs_Omit := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + integrityProtectionModeInfo := omit, + cipheringModeInfo := omit, + sr_vcc_Info := omit, + activationTime := omit, + new_U_RNTI := omit, + new_C_RNTI := omit, + new_DSCH_RNTI := omit, + new_H_RNTI := omit, + newPrimary_E_RNTI := omit, + newSecondary_E_RNTI := omit, + rrc_StateIndicator := cell_DCH, + utran_DRX_CycleLengthCoeff := omit, + ura_Identity := omit, + supportForChangeOfUE_Capability := omit, + cn_InformationInfo := omit, + srb_InformationSetupList := omit, + rab_InformationSetupList := omit, + rab_InformationReconfigList := omit, + rb_InformationReconfigList := omit, + rb_InformationAffectedList := omit, + dl_CounterSynchronisationInfo := omit, + pdcp_ROHC_TargetMode := omit, + ul_CommonTransChInfo := omit, + ul_deletedTransChInfoList := omit, + ul_AddReconfTransChInfoList := omit, + dl_CommonTransChInfo := omit, + dl_DeletedTransChInfoList := omit, + dl_AddReconfTransChInfoList := omit, + frequencyInfo := omit, + multi_frequencyInfo := omit, + dtx_drx_TimingInfo := omit, + dtx_drx_Info := omit, + hs_scch_LessInfo := omit, + mimoParameters := omit, + mimo4x4Parameters := omit, + maxAllowedUL_TX_Power := omit, + ul_DPCH_Info := omit, + ul_EDCH_Information := omit, + ul_SecondaryCellInfoFDD := omit, + ul_MulticarrierEDCHInfo_TDD128 := omit, + ul_CLTD_InfoFDD := omit, + ul_OLTD_InfoFDD := omit, + dl_HSPDSCH_Information := omit, + dl_CommonInformation := omit, + dl_InformationPerRL_List := omit, + dl_SecondaryCellInfoFDD := omit, + additionalDLSecCellInfoListFDD := omit, + additionalDLSecCellInfoListFDD2 := omit, + commonERGCHInfoFDD := omit, + controlChannelDRXInfo_TDD128 := omit, + sps_Information_TDD128 := omit, + mu_MIMO_Info_TDD128 := omit, + mbms_PL_ServiceRestrictInfo := omit, + cellDCHMeasOccasionInfo_TDD128 := omit + }; + + //---------------------------------------------------------------------------- + template (value) RadioBearerSetup_r11_IEs cds_RadioBearerSetup_r11_IEs_64k_PS_FDD(ActivationTime p_Activetime, + bitstring p_RAB_Id, + UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode) + modifies cs_RadioBearerSetup_r11_IEs_Omit := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + activationTime := p_Activetime, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupDCH_PS_64k_r11 (p_RAB_Id, cs_RLC_InfoAM_Def_r11) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCH_PS_64k_FDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_FDD (cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCH_PS_64k_r11, + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_Info_FDD_r11 (tsc_UL_DPDCH_SF_64k_PS, pl0_96, p_UL_ScramblingCode), + dl_CommonInformation := cs_DL_CommonInformationRB_SetUp_FDD_r11 (tsc_DL_DPCH1_SFP_64k_PS, flexible), + dl_InformationPerRL_List := cs_DL_InformationPerRL_FDD_r11 (p_PrimScramblingCode, tsc_DL_DPCH1_ChC_64k_PS, tsc_DL_DPCH1_2ndScrC) + }; + + template (value) RadioBearerSetup_r11_IEs cds_RadioBearerSetup_r11_IEs_64k_PS_TDD (ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) + modifies cs_RadioBearerSetup_r11_IEs_Omit := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + activationTime := p_Activetime, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupDCH_PS_64k_r11_TDD (p_RAB_Id, cs_RLC_InfoAM_Def_r11) // @sic R5s130009 sic@ + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCH_PS_64k_TDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_TDD (cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCH_PS_64k_r11, + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_64k_PS_TDD_r11, + dl_CommonInformation := cs_DL_CommonInfo_r11_TDD (cs_DL_DPCH_CfnHandling_Maintain_r6), // @sic R5s120954 sic@ + dl_InformationPerRL_List := cs_DL_InformationPerRL_TDD_r11 (p_CellParametersID, cs_DL_DPCH_InfoPerRL_r7_64k_PS_TDD) + }; + + template (value) DL_DCCH_Message cs_108_RB_SetUp64k_PS_FDD_r11(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode) := + /* ASN.1 PDU Constraint. Defined in TS 34.108 clause 9 */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RadioBearerSetup_r11(p_Integrityinfo, cds_RadioBearerSetup_r11_IEs_64k_PS_FDD(p_Activetime, p_RAB_Id, p_UL_ScramblingCode, p_PrimScramblingCode)); + + template (value) DL_DCCH_Message cs_108_RB_SetUp64k_PS_r11_TDD(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) := + /* ASN.1 PDU Constraint. Defined in TS 34.108 clause 9. */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RadioBearerSetup_r11(p_Integrityinfo, cds_RadioBearerSetup_r11_IEs_64k_PS_TDD(p_Activetime, p_RAB_Id, p_CellParametersID)); + + //---------------------------------------------------------------------------- + template (value) RadioBearerSetup_r11_IEs cds_RadioBearerSetup_r11_IEs_FACH_PS_FDD(C_RNTI p_C_RNTI, + bitstring p_RAB_Id) + modifies cs_RadioBearerSetup_r11_IEs_Omit := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + new_C_RNTI := p_C_RNTI, + new_H_RNTI := omit, + rrc_StateIndicator := cell_FACH, + rab_InformationSetupList := { + cs_RAB_InfoFACH_PS_r11(p_RAB_Id, cs_RLC_InfoAM_Def_r11) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCH_PS_64k_FDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_FDD(cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCH_PS_64k_r11 + }; + + template (value) RadioBearerSetup_r11_IEs cds_RadioBearerSetup_r11_IEs_FACH_PS_TDD(C_RNTI p_C_RNTI, + bitstring p_RAB_Id) + modifies cs_RadioBearerSetup_r11_IEs_Omit := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + new_C_RNTI := p_C_RNTI, + new_H_RNTI := omit, + rrc_StateIndicator := cell_FACH, + rab_InformationSetupList := { + cs_RAB_InfoFACH_PS_r11(p_RAB_Id, cs_RLC_InfoAM_Def_r11) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCH_PS_64k_TDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_TDD(cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCH_PS_64k_r11 + }; + + template (value) DL_DCCH_Message cs_108_RB_SetUpFACH_PS_FDD_r11(IntegrityCheckInfo p_Integrityinfo, + C_RNTI p_C_RNTI, + bitstring p_RAB_Id) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RadioBearerSetup_r11(p_Integrityinfo, cds_RadioBearerSetup_r11_IEs_FACH_PS_FDD(p_C_RNTI, p_RAB_Id)); + + template (value) DL_DCCH_Message cs_108_RB_SetUpFACH_PS_TDD_r11(IntegrityCheckInfo p_Integrityinfo, + C_RNTI p_C_RNTI, + bitstring p_RAB_Id) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RadioBearerSetup_r11(p_Integrityinfo, cds_RadioBearerSetup_r11_IEs_FACH_PS_TDD(p_C_RNTI, p_RAB_Id)); + + + //---------------------------------------------------------------------------- + template (value) RadioBearerSetup_r11_IEs cds_RadioBearerSetup_r11_IEs_Speech_FDD(ActivationTime p_Activetime, + bitstring p_RAB_Id, + UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode) + modifies cs_RadioBearerSetup_r11_IEs_Omit := + { /* @status APPROVED (LTE_IRAT) */ + activationTime := p_Activetime, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupTM_12_2k_r11(useT314, p_RAB_Id) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfoTM_12_2k_FDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListTM_12_2k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoSameAsUL_r4_FDD, + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListTM_12_2k_r11, + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_Info_FDD_r11 (tsc_UL_DPDCH_SF_Speech, pl0_84, p_UL_ScramblingCode), + dl_CommonInformation := cs_DL_CommonInformationRB_SetUpSpeech_r11 (tsc_DL_DPCH1_SFP_Speech), + dl_InformationPerRL_List := cs_DL_InformationPerRL_FDD_r11 (p_PrimScramblingCode, tsc_DL_DPCH1_ChC_Speech, tsc_DL_DPCH1_2ndScrC) + }; + + template (value) RadioBearerSetup_r11_IEs cds_RadioBearerSetup_r11_IEs_Speech_TDD(ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) + modifies cs_RadioBearerSetup_r11_IEs_Omit := + { /* @status APPROVED (LTE_IRAT) */ + activationTime := p_Activetime, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupTM_12_2k_r11 (useT314, p_RAB_Id) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfoTM_12_2k_TDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListTM_12_2k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoSameAsUL_r4_TDD, + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListTM_12_2k_r11, + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_Speech_TDD_r11, + dl_CommonInformation := cs_DL_CommonInfo_r11_TDD, + dl_InformationPerRL_List := cs_DL_InformationPerRL_TDD_r11 (p_CellParametersID, cs_DL_DPCH_InfoPerRL_Speech_TDD) + }; + + template (value) DL_DCCH_Message cs_108_RB_SetUpSpeech_r11_FDD(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + PrimaryScramblingCode p_PrimScramblingCode, + UL_ScramblingCode p_UL_ScramblingCode) := + /* @status APPROVED (LTE_IRAT) */ + cs_RadioBearerSetup_r11(p_Integrityinfo, cds_RadioBearerSetup_r11_IEs_Speech_FDD(p_Activetime, p_RAB_Id, p_UL_ScramblingCode, p_PrimScramblingCode)); + + template (value) DL_DCCH_Message cs_108_RB_SetUpSpeech_r11_TDD(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) := + /* @status APPROVED (LTE_IRAT) */ + cs_RadioBearerSetup_r11(p_Integrityinfo, cds_RadioBearerSetup_r11_IEs_Speech_TDD(p_Activetime, p_RAB_Id, p_CellParametersID)); + + //---------------------------------------------------------------------------- + template (value) RadioBearerSetup_r11_IEs cds_RadioBearerSetup_r11_IEs_HS_FromDCH_UL_64k_FDD(ActivationTime p_Activetime, + bitstring p_RAB_Id, + UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode) + modifies cs_RadioBearerSetup_r11_IEs_Omit := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + activationTime := p_Activetime, + new_H_RNTI := tsc_H_RNTI, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupDCH_PS_HSDPA_r11 (p_RAB_Id, cs_RLC_InfoAM_HSDPA_r11) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCH_PS_64k_FDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_FDD(cs_TFCS_Cmpl0_1_Rx), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoList_2DCH_HS_PS_HSDPA_FDD_r11, + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_InfoACK_HSDPA_FDD_r11 (tsc_UL_DPDCH_SF_64k_PS, pl0_96, p_UL_ScramblingCode), + dl_HSPDSCH_Information := cs_DL_HSPDSCH_Information_FDD_r11 (cs_HS_SCCH_Info_r9_FDD, cs_Measurement_Feedback_Info_r11), + dl_CommonInformation := cs_DL_CommonInformationRB_SetUp_FDD_r11 (tsc_DL_DPCH1_SFP_SRB_3_4k, flexible), + dl_InformationPerRL_List := cs_DL_InfoPerRL_HSDPA_FDD_r11(p_PrimScramblingCode, tsc_Sfc256_C0, tsc_DL_DPCH1_2ndScrC) + }; + + template (value) RadioBearerSetup_r11_IEs cds_RadioBearerSetup_r11_IEs_HS_FromDCH_UL_64k_TDD(ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) + modifies cs_RadioBearerSetup_r11_IEs_Omit := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + activationTime := p_Activetime, + new_H_RNTI := tsc_H_RNTI, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupDCH_PS_HSDPA_r11 (p_RAB_Id, cs_RLC_InfoAM_HSDPA_r11)//FFS - Check values + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCH_PS_64k_TDD,//FFS - Check values + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k,//FFs - check values + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_TDD(cs_TFCS_Cmpl0_1_Rx),//FFS - check values + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoList_2DCH_HS_PS_HSDPA_TDD_r11,//FFS - check values + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_64k_PS_TDD_r11, + dl_HSPDSCH_Information := cs_DL_HSPDSCH_Information_TDD_r11(cs_HS_SCCH_Info_TDD,cs_HS_PDSCH_Midamble_Configuration_TDD128), + dl_CommonInformation := cs_DL_CommonInfo_r11_TDD, + dl_InformationPerRL_List := cs_DL_InformationPerRL_TDD_r11 (p_CellParametersID, cs_DL_DPCH_InfoPerRL_SRB_TDD) + }; + + template (value) DL_DCCH_Message cs_108_RB_SetUpHS_FromDCH_UL_64k_FDD_r11(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode) := + /* ASN.1 PDU Constraint Defined in TS 34.108 clause 9. But uses 64 K uplink */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RadioBearerSetup_r11(p_Integrityinfo, cds_RadioBearerSetup_r11_IEs_HS_FromDCH_UL_64k_FDD (p_Activetime, p_RAB_Id, p_UL_ScramblingCode, p_PrimScramblingCode)); + + template (value) DL_DCCH_Message cs_108_RB_SetUpHS_FromDCH_UL_64k_r11_TDD(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) := + /* PDU Constraint Defined in TS 34.108 clause 9. But uses 64 K uplink */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RadioBearerSetup_r11(p_Integrityinfo, cds_RadioBearerSetup_r11_IEs_HS_FromDCH_UL_64k_TDD (p_Activetime, p_RAB_Id, p_CellParametersID)); + + //---------------------------------------------------------------------------- + template (value) RadioBearerSetup_r11_IEs cds_RadioBearerSetup_r11_IEs_PSandConvSpeech_FDD(ActivationTime p_Activetime, + bitstring p_RAB_Id, + PrimaryScramblingCode p_PrimScramblingCode, + UL_ScramblingCode p_UL_ScramblingCode) + modifies cs_RadioBearerSetup_r11_IEs_Omit := + { /* @status APPROVED (LTE_IRAT) */ + activationTime := p_Activetime, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupTM_12_2k_r11 (useT314, p_RAB_Id) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfo_TM3_AM1_0To119_FDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListTM_12_2k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_FDD(cs_TFCS_Cmpl0_To119_Rx), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListTM_12_2k_r11, + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_Info_FDD_r11 (tsc_UL_DPDCH_SF_64k_PS, pl0_76, p_UL_ScramblingCode), + dl_CommonInformation := cs_DL_CommonInformationRB_SetUp_FDD_r11 (tsc_DL_DPCH1_SFP_64k_PS, flexible), + dl_InformationPerRL_List := cs_DL_InformationPerRL_FDD_r11 (p_PrimScramblingCode, tsc_DL_DPCH1_ChC_64k_PS, tsc_DL_DPCH1_2ndScrC) + }; + + template (value) RadioBearerSetup_r11_IEs cds_RadioBearerSetup_r11_IEs_PSandConvSpeech_TDD(ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) + modifies cs_RadioBearerSetup_r11_IEs_Omit := + { /* @status APPROVED (LTE_IRAT) */ + activationTime := p_Activetime, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupTM_12_2k_r11 (useT314, p_RAB_Id) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfo_TM3_AM1_0To119_TDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListTM_12_2k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_TDD(cs_TFCS_Cmpl0_To119_Rx), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListTM_12_2k_r11, + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_Speech_TDD_r11, + dl_CommonInformation := cs_DL_CommonInfo_r11_TDD, + dl_InformationPerRL_List := cs_DL_InformationPerRL_TDD_r11 (p_CellParametersID, cs_DL_DPCH_InfoPerRL_r7_64k_PS_TDD) + }; + + template (value) DL_DCCH_Message cs_108_RB_SetUpPSandConvSpeech_FDD_r11(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + PrimaryScramblingCode p_PrimScramblingCode, + UL_ScramblingCode p_UL_ScramblingCode) := + /* @status APPROVED (LTE_IRAT) */ + cs_RadioBearerSetup_r11(p_Integrityinfo, cds_RadioBearerSetup_r11_IEs_PSandConvSpeech_FDD(p_Activetime, p_RAB_Id, p_PrimScramblingCode, p_UL_ScramblingCode)); + + template (value) DL_DCCH_Message cs_108_RB_SetUpPSandConvSpeech_TDD_r11(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) := + /* @status APPROVED (LTE_IRAT) */ + cs_RadioBearerSetup_r11(p_Integrityinfo, cds_RadioBearerSetup_r11_IEs_PSandConvSpeech_TDD(p_Activetime, p_RAB_Id, p_CellParametersID)); + + //---------------------------------------------------------------------------- + template (value) RadioBearerSetup_r11_IEs cds_RadioBearerSetup_r11_IEs_PSandConvSpeech_PSexists_FDD(ActivationTime p_Activetime, + bitstring p_RAB_Id, + PrimaryScramblingCode p_PrimScramblingCode, + UL_ScramblingCode p_UL_ScramblingCode) + modifies cs_RadioBearerSetup_r11_IEs_Omit := + { /* @status APPROVED (LTE_IRAT) */ + activationTime := p_Activetime, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupDCH_PS_64k_DCH4_r11 (p_RAB_Id, cs_RLC_InfoAM_Def_r11) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfo_TM3_AM1_0To119_FDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k_Only, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_FDD(cs_TFCS_Cmpl0_To119_Rx), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCH_PS_64k_Only_r11, + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_Info_FDD_r11 (tsc_UL_DPDCH_SF_64k_PS, pl0_76, p_UL_ScramblingCode), + dl_CommonInformation := cs_DL_CommonInformationRB_SetUp_FDD_r11 (tsc_DL_DPCH1_SFP_64k_PS, flexible), + dl_InformationPerRL_List := cs_DL_InformationPerRL_FDD_r11 (p_PrimScramblingCode, tsc_DL_DPCH1_ChC_64k_PS, tsc_DL_DPCH1_2ndScrC) + }; + + template (value) RadioBearerSetup_r11_IEs cds_RadioBearerSetup_r11_IEs_PSandConvSpeech_PSexists_TDD(ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) + modifies cs_RadioBearerSetup_r11_IEs_Omit := + { /* @status APPROVED (LTE_IRAT) */ + activationTime := p_Activetime, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupDCH_PS_64k_DCH4_r11 (p_RAB_Id, cs_RLC_InfoAM_Def_r11) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfo_TM3_AM1_0To119_TDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k_Only, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_TDD(cs_TFCS_Cmpl0_To119_Rx), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCH_PS_64k_Only_r11, + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_PS_and_ConvSpeech_TDD_r11, + dl_CommonInformation := cs_DL_CommonInfo_r11_TDD(cs_DL_DPCH_CfnHandling_Maintain_r6), + dl_InformationPerRL_List := cs_DL_InformationPerRL_TDD_r11 (p_CellParametersID, cs_DL_DPCH_InfoPerRL_r7_64k_PS_TDD) + }; + + template (value) DL_DCCH_Message cs_108_RB_SetUpPSandConvSpeech_PSexists_FDD_r11(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + PrimaryScramblingCode p_PrimScramblingCode, + UL_ScramblingCode p_UL_ScramblingCode) := + /* @status APPROVED (LTE_IRAT) */ + cs_RadioBearerSetup_r11(p_Integrityinfo, cds_RadioBearerSetup_r11_IEs_PSandConvSpeech_PSexists_FDD(p_Activetime, p_RAB_Id, p_PrimScramblingCode, p_UL_ScramblingCode)); + + template (value) DL_DCCH_Message cs_108_RB_SetUpPSandConvSpeech_PSexists_TDD_r11(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) := + /* @status APPROVED (LTE_IRAT) */ + cs_RadioBearerSetup_r11(p_Integrityinfo, cds_RadioBearerSetup_r11_IEs_PSandConvSpeech_PSexists_TDD(p_Activetime, p_RAB_Id, p_CellParametersID)); + +} diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_RAB_Templates_r9.ttcn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_RAB_Templates_r9.ttcn new file mode 100644 index 0000000..6307b08 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_RAB_Templates_r9.ttcn @@ -0,0 +1,693 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-07 18:37:49 +0200 (Sun, 07 Sep 2014) $ +// $Rev: 12081 $ +/******************************************************************************/ + +module UTRAN_RRC_RAB_Templates_r9 { + + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_CommonDefs all; + import from UTRAN_RRC_CommonTemplates all; + import from UTRAN_RRC_Templates all; + import from UTRAN_RRC_Templates_r9 all; + import from UTRAN_RRC_RAB_Templates all; + + template (value) HSDSCH_Info_r9 cs_HSDSCH_Info_r9(template (value) HARQ_Info_r7 p_HARQ_Info, + template (value) AddOrReconfMAC_dFlow p_AddOrReconfMAC_dFlow) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + harqInfo := p_HARQ_Info, + dl_MAC_HeaderType := { + mac_hs := p_AddOrReconfMAC_dFlow + } + }; + + + + template (value) HS_SCCH_Info_r9 cs_HS_SCCH_Info_r9_FDD_Common(HsScchInfo_ChCodeInfo_Type p_ChannelisationCodeList) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + modeSpecificInfo := { + fdd := { + hS_SCCHChannelisationCodeInfo := p_ChannelisationCodeList, + dl_ScramblingCode := omit + } + } + }; + + template (value) HS_SCCH_Info_r9 cs_HS_SCCH_Info_r9_FDD := cs_HS_SCCH_Info_r9_FDD_Common({tsc_HS_SCCH_ChC7}); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + + template (value) DL_HSPDSCH_Information_r9 cs_DL_HSPDSCH_Information_r9_FDD(template (value) HS_SCCH_Info_r9 p_HS_SCCH_Info, + template (value) Measurement_Feedback_Info_r7 p_Measurement_Feedback_Info, + template (omit) DL_64QAM_Configured_Type p_DL_64QAM_Configured_type := omit, //@sic R5-134957 sic@ + template (omit) HS_DSCH_TBSizeTable p_OctetAligned := omit) := //@sic R5-134957 sic@ + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + hs_scch_Info := p_HS_SCCH_Info, + measurement_feedback_Info := p_Measurement_Feedback_Info, + modeSpecificInfo := { + fdd := { + dl_64QAM_Configured := p_DL_64QAM_Configured_type, + hs_DSCH_TBSizeTable := p_OctetAligned + } + } + }; + + template (value) DL_AddReconfTransChInformation_r9 cs_DL_AddReconfTransChHSDSCHInfo_HSDPA_r9(template (value) HSDSCH_Info_r9 p_HSDSCH_Info) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + dl_TransportChannelType := { + hsdsch := NULL + }, + tfs_SignallingMode := { + hsdsch := p_HSDSCH_Info + }, + dch_QualityTarget := omit + }; + + template (value) DL_AddReconfTransChInfoList_r9 cs_DL_AddReconfTransChInfoListTM_12_2k_r9 := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_DL_AddReconfTransChInfoExplicit_r9(tsc_DL_DCH1, cs_DCH_81_TFS_DL_UE, omit), + cs_DL_AddReconfTransChInfo_WithoutQuality_r9(tsc_DL_DCH2, tsc_UL_DCH2), + cs_DL_AddReconfTransChInfo_WithoutQuality_r9(tsc_DL_DCH3, tsc_UL_DCH3), + cs_DL_AddReconfTransChInfo_r9(tsc_DL_DCH5, tsc_UL_DCH5) + }; + + template (value) DL_AddReconfTransChInformation_r9 cs_DL_AddReconfTransChInfo_WithoutQuality_r9(TransportChannelIdentity p_DlTrChId, + TransportChannelIdentity p_UlTrChId) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_DL_AddReconfTransChInfo_r9(p_DlTrChId, p_UlTrChId, omit); + + template (value) DL_AddReconfTransChInfoList_r9 cs_DL_AddReconfTransChInfoListDCH_PS_64k_r9 (TransportChannelIdentity p_DL_PS_TransportChannelIdentity := tsc_DL_DCH1, + TransportChannelIdentity p_UL_PS_TransportChannelIdentity := tsc_UL_DCH1) := + { /* According to the corresponding IE in the RADIO BEARER SETUP message using condition A3 in TS 34.108 clause 9.1.1: Added or Reconfigured DL TrCH information */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_DL_AddReconfTransChInfo_r9( p_DL_PS_TransportChannelIdentity, p_UL_PS_TransportChannelIdentity ), // @sic R5s130447 sic@ + cs_DL_AddReconfTransChInfo_r9(tsc_DL_DCH5, tsc_UL_DCH5) + }; + + template (value) DL_AddReconfTransChInfoList_r9 cs_DL_AddReconfTransChInfoList_2DCH_HS_PS_HSDPA_r9(template (value) HARQ_Info_r7 p_HARQ_Info) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_DL_AddReconfTransChInfo_r9(tsc_DL_DCH5, tsc_UL_DCH5), + cs_DL_AddReconfTransChInfoExplicit_r9(tsc_DL_DCH1, cds_DCH_336_TFS_0_UE), + cs_DL_AddReconfTransChHSDSCHInfo_HSDPA_r9 (cs_HSDSCH_Info_r9 (p_HARQ_Info, cs_AddOrReconfMAC_dFlow (cs_MAC_hs_AddReconfQueue))) + }; + + template (value) DL_AddReconfTransChInfoList_r9 cs_DL_AddReconfTransChInfoListDCH_PS_64k_Only_r9 := + { /* @status APPROVED (LTE_IRAT) */ + cs_DL_AddReconfTransChInfoExplicit_r9(tsc_DL_DCH4, cs_DCH_336_TFS_UE) + }; + + template (value) DL_AddReconfTransChInfoList_r9 cs_DL_AddReconfTransChInfoList_1DCH_HS_PS_HSDPA_r9(template (value) HARQ_Info_r7 p_HARQ_Info) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_DL_AddReconfTransChInfo_r9(tsc_DL_DCH5, tsc_UL_DCH5), + cs_DL_AddReconfTransChHSDSCHInfo_HSDPA_r9 (cs_HSDSCH_Info_r9 (p_HARQ_Info, cs_AddOrReconfMAC_dFlow (cs_MAC_hs_AddReconfQueue))) + }; + + template (value) DL_AddReconfTransChInfoList_r9 cs_DL_AddReconfTransChInfoList_2DCH_HS_PS_HSPA_r9(template (value) HARQ_Info_r7 p_HARQ_Info) := + { /* @status APPROVED (LTE_IRAT) */ + cs_DL_AddReconfTransChHSDSCHInfo_HSDPA_r9 (cs_HSDSCH_Info_r9 (p_HARQ_Info, cs_AddOrReconfMAC_dFlow2 (cs_MAC_hs_AddReconfQueue, cs_MAC_hs_AddReconfQueue(148,1)))) // @sic R5s120671 sic@ + }; + + template (value) DL_AddReconfTransChInfoList_r9 cs_DL_AddReconfTransChInfoList_2DCH_HS_PS_HSDPA_r9_FDD := cs_DL_AddReconfTransChInfoList_2DCH_HS_PS_HSDPA_r9(cs_HARQ_Info_FDD); /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + template (value) DL_AddReconfTransChInfoList_r9 cs_DL_AddReconfTransChInfoList_2DCH_HS_PS_HSDPA_r9_TDD := cs_DL_AddReconfTransChInfoList_2DCH_HS_PS_HSDPA_r9(cs_HARQ_Info_TDD); /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + template (value) DL_AddReconfTransChInfoList_r9 cs_DL_AddReconfTransChInfoList_1DCH_HS_PS_HSDPA_TDD := cs_DL_AddReconfTransChInfoList_1DCH_HS_PS_HSDPA_r9(cs_HARQ_Info_TDD); /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + template (value) DL_AddReconfTransChInfoList_r9 cs_DL_AddReconfTransChInfoList_2DCH_HS_PS_HSPA_TDD := cs_DL_AddReconfTransChInfoList_2DCH_HS_PS_HSPA_r9(cs_HARQ_Info_TDD); /* @status APPROVED (LTE_IRAT) */ + + template (value) E_DCH_AddReconf_MAC_d_Flow_r7 cs_E_DCH_AddReconf_MAC_d_Flow_DTCH_r7 := + { /* @status APPROVED (LTE_IRAT, UTRAN) */ + mac_d_FlowIdentity := tsc_E_DCH_MAC_d_FlowId_DTCH1, + mac_d_FlowPowerOffset := tsc_E_DCH_MAC_d_FlowPowerOffset, + mac_d_FlowMaxRetrans := tsc_E_DCH_MAC_d_FlowMaxRetrans_DTCH, + mac_d_FlowRetransTimer := omit, + mac_d_FlowMultiplexingList := omit, + transmissionGrantType := { + scheduledTransmissionGrantInfo := NULL + } + }; + + //============================================================================ + // PDUs used for RAB establishment + //============================================================================ + // Radio Bearer Setup + //---------------------------------------------------------------------------- + + template (value) DL_DCCH_Message cs_RadioBearerSetup_r9(IntegrityCheckInfo p_Integrityinfo, + template (value) RadioBearerSetup_r9_IEs p_RadioBearerSetup) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + integrityCheckInfo := p_Integrityinfo, + message_ := { + radioBearerSetup := { + later_than_r3 := { + rrc_TransactionIdentifier := tsc_RRC_TI, + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + r9 := { + radioBearerSetup_r9 := p_RadioBearerSetup, + radioBearerSetup_r9_add_ext := omit, + v950NonCriticalExtensions := omit + } + } + } + } + } + } + } + } + } + } + }; + + //---------------------------------------------------------------------------- + + template (value) RadioBearerSetup_r9_IEs cs_RadioBearerSetup_r9_IEs_Omit := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + integrityProtectionModeInfo := omit, + cipheringModeInfo := omit, + sr_vcc_Info := omit, + activationTime := omit, + new_U_RNTI := omit, + new_C_RNTI := omit, + new_DSCH_RNTI := omit, + new_H_RNTI := omit, + newPrimary_E_RNTI := omit, + newSecondary_E_RNTI := omit, + rrc_StateIndicator := cell_DCH, + utran_DRX_CycleLengthCoeff := omit, + ura_Identity := omit, + supportForChangeOfUE_Capability := omit, + cn_InformationInfo := omit, + srb_InformationSetupList := omit, + rab_InformationSetupList := omit, + rab_InformationReconfigList := omit, + rb_InformationReconfigList := omit, + rb_InformationAffectedList := omit, + dl_CounterSynchronisationInfo := omit, + pdcp_ROHC_TargetMode := omit, + ul_CommonTransChInfo := omit, + ul_deletedTransChInfoList := omit, + ul_AddReconfTransChInfoList := omit, + dl_CommonTransChInfo := omit, + dl_DeletedTransChInfoList := omit, + dl_AddReconfTransChInfoList := omit, + frequencyInfo := omit, + multi_frequencyInfo := omit, + dtx_drx_TimingInfo := omit, + dtx_drx_Info := omit, + hs_scch_LessInfo := omit, + mimoParameters := omit, + maxAllowedUL_TX_Power := omit, + ul_DPCH_Info := omit, + ul_EDCH_Information := omit, + ul_SecondaryCellInfoFDD := omit, + dl_HSPDSCH_Information := omit, + dl_CommonInformation := omit, + dl_InformationPerRL_List := omit, + dl_SecondaryCellInfoFDD := omit, + controlChannelDRXInfo_TDD128 := omit, + sps_Information_TDD128 := omit, + mbms_PL_ServiceRestrictInfo := omit, + cellDCHMeasOccasionInfo_TDD128 := omit + }; + + //---------------------------------------------------------------------------- + + template (value) RadioBearerSetup_r9_IEs cds_RadioBearerSetup_r9_IEs_FACH_PS_FDD(C_RNTI p_C_RNTI, + bitstring p_RAB_Id) + modifies cs_RadioBearerSetup_r9_IEs_Omit := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + new_C_RNTI := p_C_RNTI, + new_H_RNTI := omit, + rrc_StateIndicator := cell_FACH, + rab_InformationSetupList := { + cs_RAB_InfoFACH_PS(p_RAB_Id, cs_RLC_InfoAM_Def) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCH_PS_64k_FDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_FDD(cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCH_PS_64k_r9 + }; + + template (value) RadioBearerSetup_r9_IEs cds_RadioBearerSetup_r9_IEs_FACH_PS_TDD(C_RNTI p_C_RNTI, + bitstring p_RAB_Id) + modifies cs_RadioBearerSetup_r9_IEs_Omit := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + new_C_RNTI := p_C_RNTI, + new_H_RNTI := omit, + rrc_StateIndicator := cell_FACH, + rab_InformationSetupList := { + cs_RAB_InfoFACH_PS(p_RAB_Id, cs_RLC_InfoAM_Def, cs_RLC_SizeExplicit1) //@sic R5s130432 sic@ + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCH_PS_64k_TDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_TDD(cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCH_PS_64k_r9 + }; + + template (value) RadioBearerSetup_r9_IEs cds_RadioBearerSetup_r9_IEs_HS_FromDCH_UL_64k_FDD(ActivationTime p_Activetime, + bitstring p_RAB_Id, + UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode) + modifies cs_RadioBearerSetup_r9_IEs_Omit := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + activationTime := p_Activetime, + new_H_RNTI := tsc_H_RNTI, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupDCH_PS_HSDPA (p_RAB_Id, cs_RLC_InfoAM_HSDPA) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCH_PS_64k_FDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_FDD(cs_TFCS_Cmpl0_1_Rx), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoList_2DCH_HS_PS_HSDPA_r9_FDD, + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_InfoACK_HSDPA_FDD (tsc_UL_DPDCH_SF_64k_PS, pl0_96, p_UL_ScramblingCode), + dl_HSPDSCH_Information := cs_DL_HSPDSCH_Information_r9_FDD (cs_HS_SCCH_Info_r9_FDD, cs_Measurement_Feedback_Info), + dl_CommonInformation := cs_DL_CommonInformationRB_SetUp_FDD (tsc_DL_DPCH1_SFP_SRB_3_4k, flexible), + dl_InformationPerRL_List := cds_DL_InfoPerRL_HSDPA_r8_FDD (p_PrimScramblingCode, tsc_Sfc256_C0, tsc_DL_DPCH1_2ndScrC) + }; + + + template (value) RadioBearerSetup_r9_IEs cds_RadioBearerSetup_r9_IEs_HS_FromDCH_UL_64k_TDD(ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) + modifies cs_RadioBearerSetup_r9_IEs_Omit := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + activationTime := p_Activetime, + new_H_RNTI := tsc_H_RNTI, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupDCH_PS_HSDPA (p_RAB_Id, cs_RLC_InfoAM_HSDPA)//FFS - Check values + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCH_PS_64k_TDD,//FFS - Check values + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k,//FFs - check values + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_TDD(cs_TFCS_Cmpl0_1_Rx),//FFS - check values + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoList_1DCH_HS_PS_HSDPA_TDD,//@sic R5s140520 sic@ + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_64k_PS_TDD, + dl_HSPDSCH_Information := cs_DL_HSPDSCH_Information_TDD (cs_HS_SCCH_Info_TDD, cs_HS_PDSCH_Midamble_Configuration_TDD128), + dl_CommonInformation := cs_DL_CommonInfo_r8_TDD, + dl_InformationPerRL_List := cs_DL_InformationPerRL_r8_TDD (p_CellParametersID, cs_DL_DPCH_InfoPerRL_SRB_TDD) + }; + + template (value) DL_DCCH_Message cs_108_RB_SetUpHS_FromDCH_UL_64k_r9_FDD(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode) := + /* ASN.1 PDU Constraint Defined in TS 34.108 clause 9. But uses 64 K uplink */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RadioBearerSetup_r9(p_Integrityinfo, cds_RadioBearerSetup_r9_IEs_HS_FromDCH_UL_64k_FDD (p_Activetime, p_RAB_Id, p_UL_ScramblingCode, p_PrimScramblingCode)); + + + template (value) DL_DCCH_Message cs_108_RB_SetUpHS_FromDCH_UL_64k_r9_TDD(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) := + /* PDU Constraint Defined in TS 34.108 clause 9. But uses 64 K uplink */ + + cs_RadioBearerSetup_r9(p_Integrityinfo, cds_RadioBearerSetup_r9_IEs_HS_FromDCH_UL_64k_TDD (p_Activetime, p_RAB_Id, p_CellParametersID)); + + //---------------------------------------------------------------------------- + + template (value) RadioBearerSetup_r9_IEs cds_RadioBearerSetup_r9_IEs_64k_PS_FDD(ActivationTime p_Activetime, + bitstring p_RAB_Id, + UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode) + modifies cs_RadioBearerSetup_r9_IEs_Omit := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + activationTime := p_Activetime, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupDCH_PS_64k (p_RAB_Id, cs_RLC_InfoAM_Def) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCH_PS_64k_FDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_FDD (cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCH_PS_64k_r9, + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_Info_FDD (tsc_UL_DPDCH_SF_64k_PS, pl0_96, p_UL_ScramblingCode), + dl_CommonInformation := cs_DL_CommonInformationRB_SetUp_FDD (tsc_DL_DPCH1_SFP_64k_PS, flexible), + dl_InformationPerRL_List := cs_DL_InformationPerRL_r8_FDD (p_PrimScramblingCode, tsc_DL_DPCH1_ChC_64k_PS, tsc_DL_DPCH1_2ndScrC) + }; + + template (value) RadioBearerSetup_r9_IEs cds_RadioBearerSetup_r9_IEs_64k_PS_TDD (ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) + modifies cs_RadioBearerSetup_r9_IEs_Omit := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + activationTime := p_Activetime, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupDCH_PS_64k_TDD (p_RAB_Id, cs_RLC_InfoAM_Def) // @sic R5s130009 sic@ + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCH_PS_64k_TDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_TDD (cs_TFCS_Cmpl0_1_2_3_4_5_6_7_8_9_Rx), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCH_PS_64k_r9, + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_64k_PS_TDD, + dl_CommonInformation := cs_DL_CommonInfo_r8_TDD, // @sic R5s120954 sic@ + dl_InformationPerRL_List := cs_DL_InformationPerRL_r8_TDD (p_CellParametersID, cs_DL_DPCH_InfoPerRL_r7_64k_PS_TDD) + }; + + template (value) DL_DCCH_Message cs_108_RB_SetUp64k_PS_r9_FDD(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode) := + /* ASN.1 PDU Constraint. Defined in TS 34.108 clause 9 */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RadioBearerSetup_r9(p_Integrityinfo, cds_RadioBearerSetup_r9_IEs_64k_PS_FDD(p_Activetime, p_RAB_Id, p_UL_ScramblingCode, p_PrimScramblingCode)); + + + template (value) DL_DCCH_Message cs_108_RB_SetUp64k_PS_r9_TDD(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) := + /* ASN.1 PDU Constraint. Defined in TS 34.108 clause 9. */ + + cs_RadioBearerSetup_r9(p_Integrityinfo, cds_RadioBearerSetup_r9_IEs_64k_PS_TDD(p_Activetime, p_RAB_Id, p_CellParametersID)); + + //---------------------------------------------------------------------------- + + template (value) RadioBearerSetup_r9_IEs cds_RadioBearerSetup_r9_IEs_Speech_FDD (ActivationTime p_Activetime, + bitstring p_RAB_Id, + UL_ScramblingCode p_UL_ScramblingCode, + PrimaryScramblingCode p_PrimScramblingCode) + modifies cs_RadioBearerSetup_r9_IEs_Omit := + { /* @status APPROVED (LTE_IRAT) */ + activationTime := p_Activetime, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupTM_12_2k(useT314, p_RAB_Id) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfoTM_12_2k_FDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListTM_12_2k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoSameAsUL_r4_FDD, + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListTM_12_2k_r9, + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_Info_FDD (tsc_UL_DPDCH_SF_Speech, pl0_84, p_UL_ScramblingCode), + dl_CommonInformation := cs_DL_CommonInformationRB_SetUpSpeech (tsc_DL_DPCH1_SFP_Speech), + dl_InformationPerRL_List := cs_DL_InformationPerRL_r8_FDD (p_PrimScramblingCode, tsc_DL_DPCH1_ChC_Speech, tsc_DL_DPCH1_2ndScrC) + }; + + template (value) RadioBearerSetup_r9_IEs cds_RadioBearerSetup_r9_IEs_Speech_TDD(ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) + modifies cs_RadioBearerSetup_r9_IEs_Omit := + { /* @status APPROVED (LTE_IRAT) */ + activationTime := p_Activetime, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupTM_12_2k (useT314, p_RAB_Id) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfoTM_12_2k_TDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListTM_12_2k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoSameAsUL_r4_TDD, + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListTM_12_2k_r9, + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_Speech_TDD, + dl_CommonInformation := cs_DL_CommonInfo_r8_TDD, + dl_InformationPerRL_List := cs_DL_InformationPerRL_r8_TDD (p_CellParametersID, cs_DL_DPCH_InfoPerRL_Speech_TDD) + }; + + template (value) DL_DCCH_Message cs_108_RB_SetUpSpeech_r9_FDD(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + PrimaryScramblingCode p_PrimScramblingCode, + UL_ScramblingCode p_UL_ScramblingCode) := + /* @status APPROVED (LTE_IRAT) */ + cs_RadioBearerSetup_r9(p_Integrityinfo, cds_RadioBearerSetup_r9_IEs_Speech_FDD(p_Activetime, p_RAB_Id, p_UL_ScramblingCode, p_PrimScramblingCode)); + + template (value) DL_DCCH_Message cs_108_RB_SetUpSpeech_r9_TDD(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) := + + cs_RadioBearerSetup_r9(p_Integrityinfo, cds_RadioBearerSetup_r9_IEs_Speech_TDD(p_Activetime, p_RAB_Id, p_CellParametersID)); + + template (value) RadioBearerSetup_r9_IEs cds_RadioBearerSetup_r9_IEs_PSandConvSpeech_FDD(ActivationTime p_Activetime, + bitstring p_RAB_Id, + PrimaryScramblingCode p_PrimScramblingCode, + UL_ScramblingCode p_UL_ScramblingCode) + modifies cs_RadioBearerSetup_r9_IEs_Omit := + { /* @status APPROVED (LTE_IRAT) */ + activationTime := p_Activetime, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupTM_12_2k (useT314, p_RAB_Id) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfo_TM3_AM1_0To119_FDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListTM_12_2k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_FDD(cs_TFCS_Cmpl0_To119_Rx), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListTM_12_2k_r9, + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_Info_FDD (tsc_UL_DPDCH_SF_64k_PS, pl0_76, p_UL_ScramblingCode), + dl_CommonInformation := cs_DL_CommonInformationRB_SetUp_FDD (tsc_DL_DPCH1_SFP_64k_PS, flexible), + dl_InformationPerRL_List := cs_DL_InformationPerRL_r8_FDD (p_PrimScramblingCode, tsc_DL_DPCH1_ChC_64k_PS, tsc_DL_DPCH1_2ndScrC) + }; + + template (value) DL_DCCH_Message cs_108_RB_SetUpPSandConvSpeech_r9_FDD(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + PrimaryScramblingCode p_PrimScramblingCode, + UL_ScramblingCode p_UL_ScramblingCode) := + /* @status APPROVED (LTE_IRAT) */ + cs_RadioBearerSetup_r9(p_Integrityinfo, cds_RadioBearerSetup_r9_IEs_PSandConvSpeech_FDD(p_Activetime, p_RAB_Id, p_PrimScramblingCode, p_UL_ScramblingCode)); + + template (value) RadioBearerSetup_r9_IEs cds_RadioBearerSetup_r9_IEs_PSandConvSpeech_TDD(ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) + modifies cs_RadioBearerSetup_r9_IEs_Omit := + { /* @status APPROVED (LTE_IRAT) */ + activationTime := p_Activetime, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupTM_12_2k (useT314, p_RAB_Id) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfo_TM3_AM1_0To119_TDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListTM_12_2k, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_TDD(cs_TFCS_Cmpl0_To119_Rx), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListTM_12_2k_r9, + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_PS_and_ConvSpeech_TDD , //@sic R5s130356 sic@ + dl_CommonInformation := cs_DL_CommonInfo_r8_TDD(cs_DL_DPCH_CfnHandling_Maintain_r6), + dl_InformationPerRL_List := cs_DL_InformationPerRL_r8_TDD (p_CellParametersID, cs_DL_DPCH_InfoPerRL_r7_PS_and_ConvSpeech_TDD) + }; + + template (value) DL_DCCH_Message cs_108_RB_SetUpPSandConvSpeech_r9_TDD(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) := + + cs_RadioBearerSetup_r9(p_Integrityinfo, cds_RadioBearerSetup_r9_IEs_PSandConvSpeech_TDD(p_Activetime, p_RAB_Id, p_CellParametersID)); + + + template (value) DL_AddReconfTransChInformation_r9 cs_DL_AddReconfTransChInfoExplicit_r9(integer p_TransportChannelId, + template (value) DedicatedTransChTFS p_DedicatedTransChTFS, + template (omit) QualityTarget p_QualityTarget := cs_QualityTarget) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + dl_TransportChannelType := { + dch := p_TransportChannelId + }, + tfs_SignallingMode := { + explicit_config := { + dedicatedTransChTFS := p_DedicatedTransChTFS + } + }, + dch_QualityTarget := p_QualityTarget + }; + + template (value) DL_DCCH_Message cs_108_RB_SetUpHS_FromDCH_UL_64k_TDD(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) := + /* PDU Constraint Defined in TS 34.108 clause 9. But uses 64 K uplink */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RadioBearerSetup_r9(p_Integrityinfo, cds_RadioBearerSetup_r9_IEs_HS_FromDCH_UL_64k_TDD (p_Activetime, p_RAB_Id, p_CellParametersID)); + + + template (value) DL_DCCH_Message cs_108_RB_SetUp64k_PS_TDD(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) := + /* ASN.1 PDU Constraint. Defined in TS 34.108 clause 9. */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RadioBearerSetup_r9(p_Integrityinfo, cds_RadioBearerSetup_r9_IEs_64k_PS_TDD(p_Activetime, p_RAB_Id, p_CellParametersID)); + + + template (value) DL_DCCH_Message cs_108_RB_SetUpSpeech_TDD(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) := + /* @status APPROVED (LTE_IRAT) */ + cs_RadioBearerSetup_r9(p_Integrityinfo, cds_RadioBearerSetup_r9_IEs_Speech_TDD(p_Activetime, p_RAB_Id, p_CellParametersID)); + + + template (value) DL_DCCH_Message cs_108_RB_SetUpPSandConvSpeech_TDD(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) := + /* @status APPROVED (LTE_IRAT) */ + cs_RadioBearerSetup_r9(p_Integrityinfo, cds_RadioBearerSetup_r9_IEs_PSandConvSpeech_TDD(p_Activetime, p_RAB_Id, p_CellParametersID)); + + + template (value) DL_DCCH_Message cs_108_RB_SetUpFACH_PS_TDD(IntegrityCheckInfo p_Integrityinfo, + C_RNTI p_C_RNTI, + bitstring p_RAB_Id) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RadioBearerSetup_r9(p_Integrityinfo, cds_RadioBearerSetup_r9_IEs_FACH_PS_TDD(p_C_RNTI, p_RAB_Id)); + + template (value) DL_DCCH_Message cs_108_RB_SetUpFACH_PS_FDD_r9(IntegrityCheckInfo p_Integrityinfo, + C_RNTI p_C_RNTI, + bitstring p_RAB_Id) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RadioBearerSetup_r9(p_Integrityinfo, cds_RadioBearerSetup_r9_IEs_FACH_PS_FDD(p_C_RNTI, p_RAB_Id)); + + + template (value) RadioBearerSetup_r9_IEs cds_RadioBearerSetup_r9_IEs_PSandConvSpeech_PSexists_FDD(ActivationTime p_Activetime, + bitstring p_RAB_Id, + PrimaryScramblingCode p_PrimScramblingCode, + UL_ScramblingCode p_UL_ScramblingCode) + modifies cs_RadioBearerSetup_r9_IEs_Omit := + { /* @status APPROVED (LTE_IRAT) */ + activationTime := p_Activetime, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupDCH_PS_64k_DCH4 (p_RAB_Id, cs_RLC_InfoAM_Def) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfo_TM3_AM1_0To119_FDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k_Only, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_FDD(cs_TFCS_Cmpl0_To119_Rx), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCH_PS_64k_Only_r9, + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_Info_FDD (tsc_UL_DPDCH_SF_64k_PS, pl0_76, p_UL_ScramblingCode), + dl_CommonInformation := cs_DL_CommonInformationRB_SetUp_FDD (tsc_DL_DPCH1_SFP_64k_PS, flexible), + dl_InformationPerRL_List := cs_DL_InformationPerRL_r8_FDD (p_PrimScramblingCode, tsc_DL_DPCH1_ChC_64k_PS, tsc_DL_DPCH1_2ndScrC) + }; + + template (value) RadioBearerSetup_r9_IEs cds_RadioBearerSetup_r9_IEs_PSandConvSpeech_PSexists_TDD(ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) + modifies cs_RadioBearerSetup_r9_IEs_Omit := + { /* @status APPROVED (LTE_IRAT) */ + // @sic R5s130606 sic@ + activationTime := p_Activetime, + rrc_StateIndicator := cell_DCH, + rab_InformationSetupList := { + cs_RAB_InfoSetupDCH_PS_64k_DCH4 (p_RAB_Id, cs_RLC_InfoAM_Def) + }, + ul_CommonTransChInfo := cs_UL_CommTrChInfo_TM3_AM1_0To119_TDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCH_PS_64k_Only, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoDCH_TDD(cs_TFCS_Cmpl0_To119_Rx), + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCH_PS_64k_Only_r9, + maxAllowedUL_TX_Power := tsc_MaxAllowPwr, + ul_DPCH_Info := cs_UL_DPCH_PS_and_ConvSpeech_TDD , + dl_CommonInformation := cs_DL_CommonInfo_r8_TDD(cs_DL_DPCH_CfnHandling_Maintain_r6), + dl_InformationPerRL_List := cs_DL_InformationPerRL_r8_TDD (p_CellParametersID, cs_DL_DPCH_InfoPerRL_r7_PS_and_ConvSpeech_TDD) + }; + + template (value) DL_DCCH_Message cs_108_RB_SetUpPSandConvSpeech_PSexists_FDD_r9(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + PrimaryScramblingCode p_PrimScramblingCode, + UL_ScramblingCode p_UL_ScramblingCode) := + /* @status APPROVED (LTE_IRAT) */ + cs_RadioBearerSetup_r9(p_Integrityinfo, cds_RadioBearerSetup_r9_IEs_PSandConvSpeech_PSexists_FDD(p_Activetime, p_RAB_Id, p_PrimScramblingCode, p_UL_ScramblingCode)); + + + template (value) DL_DCCH_Message cs_108_RB_SetUpPSandConvSpeech_PSexists_TDD(IntegrityCheckInfo p_Integrityinfo, + ActivationTime p_Activetime, + bitstring p_RAB_Id, + CellParametersID p_CellParametersID) := + /* @status APPROVED (LTE_IRAT) */ + // @sic R5s130606 sic@ + cs_RadioBearerSetup_r9(p_Integrityinfo, cds_RadioBearerSetup_r9_IEs_PSandConvSpeech_PSexists_TDD(p_Activetime, p_RAB_Id, p_CellParametersID)); + + + //--------------------------------------------------------------------------------------------------------------------- + // Physical channel reconfiguration + //--------------------------------------------------------------------------------------------------------------------- + template (value) DL_DCCH_Message cs_PhysicalChannelReconfiguration_r9(IntegrityCheckInfo p_Integrityinfo, + RRC_TransactionIdentifier p_RRC_TI, + template (omit) ActivationTime p_ActivationTime, + template (omit) DL_CommonInformation_r8 p_DL_CommonInformation, + RRC_StateIndicator p_RRC_StateIndicator := cell_DCH, + template (omit) UTRAN_DRX_CycleLengthCoefficient_r7 p_UTRAN_DRX_CycleLengthCoefficient_r7 := omit, + template (omit) MaxAllowedUL_TX_Power p_MaxAllowedUL_TX_Power := omit) := + { /* Default values from 36.508 Table 4.7B.1-5: PHYSICAL CHANNEL RECONFIGURATION */ + /* @status APPROVED (LTE_IRAT) */ + integrityCheckInfo := p_Integrityinfo, + message_ := { + physicalChannelReconfiguration := { + later_than_r3 := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + r9:= { + physicalChannelReconfiguration_r9 := { + //-- User equipment IEs + integrityProtectionModeInfo := omit, + cipheringModeInfo := omit, + activationTime := p_ActivationTime, + delayRestrictionFlag := omit, + new_U_RNTI := omit, + new_C_RNTI := omit, + new_DSCH_RNTI := omit, + new_H_RNTI := omit, + newPrimary_E_RNTI := omit, + newSecondary_E_RNTI := omit, + rrc_StateIndicator := p_RRC_StateIndicator, + ueMobilityStateIndicator := omit, + utran_DRX_CycleLengthCoeff := p_UTRAN_DRX_CycleLengthCoefficient_r7, + cn_InformationInfo := omit, + ura_Identity := omit, + supportForChangeOfUE_Capability := omit, + responseToChangeOfUE_Capability := omit, + dl_CounterSynchronisationInfo := omit, + harqInfo := omit, + frequencyInfo := omit, + multi_frequencyInfo := omit, + dtx_drx_TimingInfo := omit, + dtx_drx_Info := omit, + hs_scch_LessInfo := omit, + mimoParameters := omit, + controlChannelDRXInfo_TDD128 := omit, + sps_Information_TDD128 := omit, + maxAllowedUL_TX_Power := p_MaxAllowedUL_TX_Power, + ul_DPCH_Info := omit, + ul_EDCH_Information := omit, + ul_SecondaryCellInfoFDD := omit, + dl_HSPDSCH_Information := omit, + dl_CommonInformation := p_DL_CommonInformation, + dl_InformationPerRL_List := omit, + dl_SecondaryCellInfoFDD := omit, + mbms_PL_ServiceRestrictInfo := omit, + cellDCHMeasOccasionInfo_TDD128 := omit + }, + physicalChannelReconfiguration_r9_add_ext := omit , + v950NonCriticalExtensions := omit + } + } + } + } + } + } + } + } + } + } + }; +} diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_SysInfo_Templates.ttcn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_SysInfo_Templates.ttcn new file mode 100644 index 0000000..0530bc4 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_SysInfo_Templates.ttcn @@ -0,0 +1,2533 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-07 18:37:49 +0200 (Sun, 07 Sep 2014) $ +// $Rev: 12081 $ +/******************************************************************************/ + +module UTRAN_RRC_SysInfo_Templates { + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from CommonDefs all; + import from UTRAN_CommonDefs all; + import from UTRAN_RRC_CommonTemplates all; + + ////////////////////////////////////////////////////////////////////////////////////////////////// + // MIB, SB1 + ////////////////////////////////////////////////////////////////////////////////////////////////// + // ============================================================================= + // templates to shorten and simplify TTCN-2 implementation + + template (value) SchedulingInformation.scheduling.sib_Pos cs_SIB_Pos_Rep16(integer p_Pos) := { rep16 := p_Pos }; /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) SchedulingInformation.scheduling.sib_Pos cs_SIB_Pos_Rep64(integer p_Pos) := { rep64 := p_Pos }; /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) SchedulingInformation.scheduling.sib_Pos cs_SIB_Pos_Rep128(integer p_Pos) := { rep128 := p_Pos }; /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + template (value) SchedulingInformation cs_SchedulingInformation(template (value) SchedulingInformation.scheduling.sib_Pos p_SIB_Pos, + template (omit) SegCount p_SegCount := omit, // DEFAULT: 1 + template (omit) SibOFF_List p_SIB_PosOffsetInfo := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + scheduling := { + segCount := p_SegCount, + sib_Pos := p_SIB_Pos, + sib_PosOffsetInfo := p_SIB_PosOffsetInfo + } + }; + + template (value) SchedulingInformation cs_SB1_Schedul1 := cs_SchedulingInformation(cs_SIB_Pos_Rep16 (1), 1); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + template (value) SchedulingInformation cs_SIB5_Schedul1 := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (19), 1); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) SchedulingInformation cs_SIB5_Schedul2 := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (19), 2, {so4}); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) SchedulingInformation cs_SIB5_Schedul3 := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (19), 3, {so4, so2}); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) SchedulingInformation cs_SIB5_Schedul4 := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (19), 4, {so4, so2, so2}); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + template (value) SchedulingInformation cs_SIB6_Schedul1 := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (3), 1); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) SchedulingInformation cs_SIB6_Schedul2 := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (3), 2, {so4}); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) SchedulingInformation cs_SIB6_Schedul3 := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (3), 3, {so4, so2}); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) SchedulingInformation cs_SIB6_Schedul4 := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (3), 4, {so4, so2, so2}); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + template (value) SchedulingInformation cs_SIB11_Schedul1 := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (29), 1); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) SchedulingInformation cs_SIB11_Schedul2 := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (29), 2, {so2}); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) SchedulingInformation cs_SIB11_Schedul3 := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (29), 3, {so2, so2}); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + template (value) SchedulingInformation cs_SIB19_Schedul1 := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (14), 1); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) SchedulingInformation cs_SIB19_Schedul2 := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (14), 2, {so2}); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + template (value) SchedulingInformation cs_SIB16_Schedul1 := cs_SchedulingInformation(cs_SIB_Pos_Rep128 (35), 1); + template (value) SchedulingInformation cs_SIB16_Schedul2 := cs_SchedulingInformation(cs_SIB_Pos_Rep128 (35), 2, {so4}); + template (value) SchedulingInformation cs_SIB16_Schedul3 := cs_SchedulingInformation(cs_SIB_Pos_Rep128 (35), 3, {so4, so2}); + template (value) SchedulingInformation cs_SIB16_Schedul4 := cs_SchedulingInformation(cs_SIB_Pos_Rep128 (35), 4, {so4, so2, so2}); + template (value) SchedulingInformation cs_SIB16_Schedul5 := cs_SchedulingInformation(cs_SIB_Pos_Rep128 (35), 5, {so4, so2, so2, so24}); + template (value) SchedulingInformation cs_SIB16_Schedul6 := cs_SchedulingInformation(cs_SIB_Pos_Rep128 (35), 6, {so4, so2, so2, so24, so4}); + template (value) SchedulingInformation cs_SIB16_Schedul7 := cs_SchedulingInformation(cs_SIB_Pos_Rep128 (35), 7, {so4, so2, so2, so24, so4, so2}); + template (value) SchedulingInformation cs_SIB16_Schedul8 := cs_SchedulingInformation(cs_SIB_Pos_Rep128 (35), 8, {so4, so2, so2, so24, so4, so2, so2}); + + template (value) SchedulingInformation cs_SIB5_Schedul1_LongNeighCellInfo := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (18), 1); + template (value) SchedulingInformation cs_SIB5_Schedul2_LongNeighCellInfo := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (18), 2, {so2}); + template (value) SchedulingInformation cs_SIB5_Schedul3_LongNeighCellInfo := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (18), 3, {so2, so4}); + template (value) SchedulingInformation cs_SIB5_Schedul4_LongNeighCellInfo := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (18), 4, {so2, so4, so2}); + + template (value) SchedulingInformation cs_SIB6_Schedul1_LongNeighCellInfo := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (2), 1); + template (value) SchedulingInformation cs_SIB6_Schedul2_LongNeighCellInfo := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (2), 2, {so2}); + template (value) SchedulingInformation cs_SIB6_Schedul3_LongNeighCellInfo := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (2), 3, {so2, so4}); + template (value) SchedulingInformation cs_SIB6_Schedul4_LongNeighCellInfo := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (2), 4, {so2, so4, so2}); + + template (value) SchedulingInformation cs_SIB11_Schedul1_LongNeighCellInfo := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (26), 1); + template (value) SchedulingInformation cs_SIB11_Schedul2_LongNeighCellInfo := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (26), 2, {so2}); + template (value) SchedulingInformation cs_SIB11_Schedul3_LongNeighCellInfo := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (26), 3, {so2, so4}); + template (value) SchedulingInformation cs_SIB11_Schedul4_LongNeighCellInfo := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (26), 4, {so2, so4, so2}); + + template (value) SchedulingInformation cs_SIB19_Schedul1_LongNeighCellInfo := cs_SchedulingInformation(cs_SIB_Pos_Rep128 (46), 1); + template (value) SchedulingInformation cs_SIB19_Schedul2_LongNeighCellInfo := cs_SchedulingInformation(cs_SIB_Pos_Rep128 (46), 2, {so30}); + template (value) SchedulingInformation cs_SIB19_Schedul3_LongNeighCellInfo := cs_SchedulingInformation(cs_SIB_Pos_Rep128 (46), 3, {so30, so2}); + + // ============================================================================= + // Default setting of MIB. 3GPP TS 34.123-3 clause 8.4.3 + // Assum no segmentation for SIB1, SIB2, SIB3, SIB4. + // Contains scheduling informations for SIB1, SIB2, SIB3, SIB4, SIB5 and SB1 only, the scheduling information for other SIBs are in SysInfoTypeSB1. + // The value 1 of valueTags is a place holder. actual values of them will be non-zero and assigned dynamically in various SendSystemInformation test Steps. + // ----------------------------------------------------------------------------- + template (value) MasterInformationBlock cs_MIB_Def(template (value) PLMN_Identity p_PLMN) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + mib_ValueTag := 1, + plmn_Type := { + gsm_MAP := { + plmn_Identity := p_PLMN + } + }, + sibSb_ReferenceList := { + { + sibSb_Type := { sysInfoTypeSB1 := 1 }, + scheduling := cs_SchedulingInformation(cs_SIB_Pos_Rep16 (1) ) + }, + { + sibSb_Type := { sysInfoType1 := 1 }, + scheduling := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (11) ) + }, + { + sibSb_Type := { sysInfoType2 := 1 }, + scheduling := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (11) ) + }, + { + sibSb_Type := { sysInfoType3 := 1 }, + scheduling := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (10) ) + }, + { + sibSb_Type := { sysInfoType4 := 1 }, + scheduling := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (26) ) + }, + { + sibSb_Type := { sysInfoType5 := 1 }, + scheduling := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (19), 4, {so4, so2, so2} ) + } + }, + v690NonCriticalExtensions := omit + }; + // ----------------------------------------------------------------------------- + template (value) MasterInformationBlock cs_MIB_UTRAN_GERAN_Def(PLMN_Identity p_PLMN) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + mib_ValueTag := 1, + plmn_Type := { + gsm_MAP := { + plmn_Identity := p_PLMN + } + }, + sibSb_ReferenceList := { + { + sibSb_Type := { sysInfoTypeSB1 := 1 }, + scheduling := cs_SchedulingInformation(cs_SIB_Pos_Rep16 (1) ) + }, + { + sibSb_Type := { sysInfoType1 := 1 }, + scheduling := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (10) ) + }, + { + sibSb_Type := { sysInfoType2 := 1 }, + scheduling := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (10) ) + }, + { + sibSb_Type := { sysInfoType3 := 1 }, + scheduling := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (7) ) + }, + { + sibSb_Type := { sysInfoType4 := 1 }, + scheduling := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (31) ) + }, + { + sibSb_Type := { sysInfoType5 := 1 }, + scheduling := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (18), 4, {so2, so4, so2} ) + } + }, + v690NonCriticalExtensions := omit + }; + + template (value) MasterInformationBlock cds_MIB_MultiplePlmnList(template (value) PLMN_Identity p_PLMN, + Multiple_PLMN_List_Type p_Multiple_PLMN_List) + modifies cs_MIB_Def := + { + v690NonCriticalExtensions := { + masterInformationBlock_v690ext := { + multiplePLMN_List := { + mibPLMN_Identity := true, + multiplePLMNs := p_Multiple_PLMN_List + } + }, + v6b0NonCriticalExtensions := omit + } + }; + + // ============================================================================= + // Default setting of SB1. scheduling is defined in 3GPP TS 34.123-3 clause 8.4.3 + // Assume no segmentation for SIB7. + // Contains scheduling informations for SIB6, SIB7, SIB11, SIB12, SIB18 only, the scheduling information for other SIBs may be added later. + // The value 1 of valueTags is a place holder. actual values of them will be non-zero and assigned dynamically in various SendSystemInformation test Steps. + // ----------------------------------------------------------------------------- + template (value) SysInfoTypeSB1 cs_SB1_Def := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + sib_ReferenceList := { + { + sib_Type := { sysInfoType6 := 1 }, + scheduling := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (3), 4, {so4, so2, so2} ) + }, + { + sib_Type := { sysInfoType7 := NULL }, + scheduling := cs_SchedulingInformation(cs_SIB_Pos_Rep16 (2) ) + }, + { + sib_Type := { sysInfoType11 := 1 }, + scheduling := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (29), 3, {so2, so2} ) + }, + { + sib_Type := { sysInfoType12 := 1 }, + scheduling := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (13), 1 ) // @sic R5s100871 sic@ + }, + { + sib_Type := { sysInfoType18 := 1 }, + scheduling := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (18) ) + } + }, + v6b0NonCriticalExtensions := { + sysInfoTypeSB1_v6b0ext := { + extSIBTypeInfoSchedulingInfo_List := omit + }, + v860NonCriticalExtensions := { + sysInfoTypeSB1_v860ext := { + extSIBTypeInfoSchedulingInfo_List := { + { + extensionSIB_Type2 := { systemInfoType19 := NULL }, + schedulingInfo := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (13), 3, {so2, so2} ), + valueTagInfo := { cellValueTag := 1} + } + }, + extGANSS_SIBTypeInfoSchedulingInfoList := omit + }, + nonCriticalExtensions := omit + } + } + }; + // ----------------------------------------------------------------------------- + template (value) SysInfoTypeSB1 cs_SB1_UTRAN_GERAN_Def := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + sib_ReferenceList := { + { + sib_Type := { sysInfoType6 := 1 }, + scheduling := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (2), 4, {so2, so4, so2} ) + }, + { + sib_Type := { sysInfoType7 := NULL }, + scheduling := cs_SchedulingInformation(cs_SIB_Pos_Rep16 (7) ) + }, + { + sib_Type := { sysInfoType11 := 1 }, + scheduling := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (26), 4, {so2, so4, so2} ) + }, + { + sib_Type := { sysInfoType12 := 1 }, + scheduling := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (11), 4, {so4, so2, so2} ) + }, + { + sib_Type := { sysInfoType18 := 1 }, + scheduling := cs_SchedulingInformation(cs_SIB_Pos_Rep64 (23) ) + } + }, + v6b0NonCriticalExtensions := { + sysInfoTypeSB1_v6b0ext := { + extSIBTypeInfoSchedulingInfo_List := omit + }, + v860NonCriticalExtensions := { + sysInfoTypeSB1_v860ext := { + extSIBTypeInfoSchedulingInfo_List := { + { + extensionSIB_Type2 := { systemInfoType19 := NULL }, + schedulingInfo := cs_SchedulingInformation(cs_SIB_Pos_Rep128 (46), 3, {so30, so2} ), + valueTagInfo := {cellValueTag := 1} + } + }, + extGANSS_SIBTypeInfoSchedulingInfoList := omit + }, + nonCriticalExtensions := omit + } + } + }; + + ////////////////////////////////////////////////////////////////////////////////////////////////// + // SIB 1 + ////////////////////////////////////////////////////////////////////////////////////////////////// + // ============================================================================= + // Default system information block type 1 + // ----------------------------------------------------------------------------- + template (value) SysInfoType1 cs_SIB1_Def(octetstring p_Lac, + octetstring p_Rac, + octetstring p_NMO, + octetstring p_T3212, + integer p_AttFlag, + CN_DRX_CycleLengthCoefficient p_DRX_1, + CN_DRX_CycleLengthCoefficient p_DRX_2) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cn_CommonGSM_MAP_NAS_SysInfo := p_Lac, + cn_DomainSysInfoList := { + { + cn_DomainIdentity := ps_domain, + cn_Type := { + gsm_MAP := p_Rac & p_NMO + }, + cn_DRX_CycleLengthCoeff := p_DRX_1 + }, + { + cn_DomainIdentity := cs_domain, + cn_Type := { + gsm_MAP := p_T3212 & int2oct(p_AttFlag, 1) + }, + cn_DRX_CycleLengthCoeff := p_DRX_2 + } + }, + ue_ConnTimersAndConstants := { + t_301 := omit, + n_301 := omit, + t_302 := omit, + n_302 := omit, + t_304 := omit, + n_304 := omit, + t_305 := omit, + t_307 := omit, + t_308 := omit, + t_309 := omit, + t_310 := omit, + n_310 := omit, + t_311 := omit, + t_312 := omit, + n_312 := omit, + t_313 := omit, + n_313 := omit, + t_314 := omit, + t_315 := omit, + n_315 := omit, + t_316 := omit, + t_317 := omit + }, + ue_IdleTimersAndConstants := { + t_300 := ms4000, + n_300 := tsc_N300, + t_312 := 10, + n_312 := s1 + }, + v3a0NonCriticalExtensions := omit + }; + + ////////////////////////////////////////////////////////////////////////////////////////////////// + // SIB 2 + ////////////////////////////////////////////////////////////////////////////////////////////////// + // ============================================================================= + // Default system information block type 2 + // for cell 1 and cell 2. + // ----------------------------------------------------------------------------- + template (value) SysInfoType2 cs_SIB2_Def(bitstring p_URAId) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ura_IdentityList := { + p_URAId + }, + nonCriticalExtensions := omit + }; + + ////////////////////////////////////////////////////////////////////////////////////////////////// + // SIB 3, SIB 4 + ////////////////////////////////////////////////////////////////////////////////////////////////// + // ============================================================================= + // Common templates for system information block type 3 and type 4 + // ----------------------------------------------------------------------------- + + template (value) CellSelectReselectInfoSIB_3_4 cs_CellSelectReselectInfoSIB_3_4(template (value) CellSelectReselectInfoSIB_3_4.modeSpecificInfo p_ModeSpecificInfo, + MaxAllowedUL_TX_Power p_MaxAllowedUL_TX_Power) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + mappingInfo := omit, + cellSelectQualityMeasure := { + cpich_RSCP := NULL + }, + modeSpecificInfo := p_ModeSpecificInfo, + q_Hyst_l_S := 1, // (IE value*2) + t_Reselection_S := 0, + hcs_ServingCellInformation := omit, + maxAllowedUL_TX_Power := p_MaxAllowedUL_TX_Power + }; + + template (value) RAT_FDD_InfoList cs_RAT_FDD_InfoList_GERAN := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + { + rat_Identifier := gsm, + s_SearchRAT := -16, + s_HCS_RAT := omit, + s_Limit_SearchRAT := 0 + } + }; + + template (value) RAT_TDD_InfoList cs_RAT_TDD_InfoList_GERAN := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + { + rat_Identifier := gsm, + s_SearchRAT := -32, + s_HCS_RAT := omit, + s_Limit_SearchRAT := 0 + } + }; + + template (value) CellSelectReselectInfoSIB_3_4.modeSpecificInfo cs_SIB3_4_ModeSpecificInfo_FDD(template (omit) RAT_FDD_InfoList p_RAT_FDD_InfoList := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + fdd := { + s_Intrasearch := 8, // IE value * 2 + s_Intersearch := 8, // IE value * 2 + s_SearchHCS := omit, + rat_List := p_RAT_FDD_InfoList, + q_QualMin := -24, + q_RxlevMin := -40 // (IE value * 2) + 1. Value according to 34.108 cl. 6.1.5 + } + }; + + template (value) CellSelectReselectInfoSIB_3_4.modeSpecificInfo cs_SIB3_ModeSpecificInfo_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tdd := { + s_Intrasearch := 10, + s_Intersearch := 10, + s_SearchHCS := omit, + rat_List := omit, + q_RxlevMin := -41 //(IE value * 2) + 1. Value according to 34.108 cl. 6.1.6 + } + }; + + template (value) CellSelectReselectInfoSIB_3_4.modeSpecificInfo cs_SIB4_ModeSpecificInfo_TDD(template (omit) RAT_TDD_InfoList p_RAT_TDD_InfoList := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tdd := { + s_Intrasearch := 10, // IE value * 2 + s_Intersearch := 10, // IE value * 2 + s_SearchHCS := omit, + rat_List := p_RAT_TDD_InfoList, + q_RxlevMin := -52 // (IE value * 2) + 1 + } + }; + + template (value) CellSelectReselectInfoSIB_3_4.modeSpecificInfo cs_SIB3_ModeSpecificInfo_TDD_GERAN := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tdd := { + s_Intrasearch := 21, + s_Intersearch := 21, + s_SearchHCS := omit, + rat_List := cs_RAT_TDD_InfoList_GERAN, + q_RxlevMin := -41 //(IE value * 2) + 1. Value according to 34.108 cl. 6.1.6 + } + }; + + // ============================================================================= + // Default system information block type 3 + // ----------------------------------------------------------------------------- + template (value) SysInfoType3 cs_SIB3_Common(B28_Type p_CellIdentity, + template (value) CellSelectReselectInfoSIB_3_4 p_CellSelectReselectInfoSIB_3_4) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + sib4indicator := true, + cellIdentity := p_CellIdentity, + cellSelectReselectInfo := p_CellSelectReselectInfoSIB_3_4, + cellAccessRestriction := { + cellBarred := { + notBarred := NULL + }, + cellReservedForOperatorUse := notReserved, + cellReservationExtension := notReserved, + accessClassBarredList := { + notBarred, + notBarred, + notBarred, + notBarred, + notBarred, + notBarred, + notBarred, + notBarred, + notBarred, + notBarred, + notBarred, + notBarred, + notBarred, + notBarred, + notBarred, + notBarred + } + }, + v4b0NonCriticalExtensions := omit + }; + + template (value) SysInfoType3 cs_SIB3_DefUTRAN(B28_Type p_CellIdentity) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_SIB3_Common(p_CellIdentity, cs_CellSelectReselectInfoSIB_3_4(cs_SIB3_4_ModeSpecificInfo_FDD, 21)); + + template (value) SysInfoType3 cs_SIB3_DefUTRAN_GERAN(B28_Type p_CellIdentity) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_SIB3_Common(p_CellIdentity, cs_CellSelectReselectInfoSIB_3_4(cs_SIB3_4_ModeSpecificInfo_FDD(cs_RAT_FDD_InfoList_GERAN), 21)); + + template (value) SysInfoType3 cs_SIB3_DefUTRAN_TDD(B28_Type p_CellIdentity) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_SIB3_Common(p_CellIdentity, cs_CellSelectReselectInfoSIB_3_4(cs_SIB3_ModeSpecificInfo_TDD, tsc_MaxAllowedUL_TX_Power_TDD)); + + template (value) SysInfoType3 cs_SIB3_DefUTRAN_GERAN_TDD(B28_Type p_CellIdentity) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_SIB3_Common(p_CellIdentity, cs_CellSelectReselectInfoSIB_3_4(cs_SIB3_ModeSpecificInfo_TDD_GERAN, tsc_MaxAllowedUL_TX_Power_TDD)); + + template (value) SysInfoType3 cds_SIB3_Barred(B28_Type p_CellIdentity, + template (value) CellSelectReselectInfoSIB_3_4 p_CellSelectReselectInfoSIB_3_4, + template (value) CellAccessRestriction p_CellAccessRestriction, + template (omit) SysInfoType3.v4b0NonCriticalExtensions p_V4b0NonCriticalExtensions) + modifies cs_SIB3_Common := + { /* @status APPROVED (LTE_IRAT) */ + cellAccessRestriction := p_CellAccessRestriction, + v4b0NonCriticalExtensions := p_V4b0NonCriticalExtensions + }; + + template (value) CSG_PSCSplitInfo cs_CSG_PSCSplitInfo ( CSG_PSCSplitInfo.startPSC p_StartPSC, CSG_PSCSplitInfo.numberOfPSCs p_NumberOfPSC) := + { /* @status APPROVED (LTE_IRAT) */ + startPSC := p_StartPSC, + numberOfPSCs := p_NumberOfPSC, + pscRange2Offset := omit + }; + + template (value) SysInfoType3 cds_SIB3_Csg(B28_Type p_CellIdentity, + CSG_Identity p_CSG_Identity, + template (omit) CSG_PSCSplitInfo p_CSG_PSCSplitInfo) + modifies cs_SIB3_DefUTRAN := + { /* @status APPROVED (LTE_IRAT) */ + v4b0NonCriticalExtensions := { + sysInfoType3_v4b0ext:= { + mapping_LCR := omit + }, + v590NonCriticalExtension := { + sysInfoType3_v590ext:= { + cellSelectReselectInfo_v590ext := omit + }, + v5c0NoncriticalExtension := { + sysInfoType3_v5c0ext:= { + cellSelectReselectInfoTreselectionScaling_v5c0ext := omit + }, + v670NonCriticalExtension := { + sysInfoType3_v670ext := { + domainSpecificAccessRestrictionParametersForPLMNOfMIB := omit, + domainSpecificAccessRestictionForSharedNetwork := omit + }, + v770NonCriticalExtension := { + sysInfoType3_v770ext := { + deferredMeasurementControlReadingSupport := omit, + q_QualMin_Offset := omit, + q_RxlevMin_Offset := omit, + mbsfnOnlyService := omit + }, + v830NonCriticalExtension := { + sysInfoType3_v830ext := { + pagingPermissionWithAccessControlParametersForPLMNOfMIB := omit, + pagingPermissionWithAccessControlParametersForSharedNetwork := omit + }, + v860NonCriticalExtension := { + sysInfoType3_v860ext := { + csgIdentity := p_CSG_Identity, + csg_PSCSplitInfo := p_CSG_PSCSplitInfo + }, + v870NonCriticalExtension := omit + } + } + } + } + } + } + } + }; + + template (value) CellAccessRestriction cs_CellAccessRestriction_Common(template (value) CellBarred p_CellBarred, + template (value) ReservedIndicator p_CellReservedForOperatorUse, + template (value) ReservedIndicator p_CellReservationExtension, + template (omit) AccessClassBarredList p_AccessClassBarredList) := + { /* @status APPROVED (LTE_IRAT) */ + cellBarred := p_CellBarred, + cellReservedForOperatorUse := p_CellReservedForOperatorUse, + cellReservationExtension := p_CellReservationExtension, + accessClassBarredList := p_AccessClassBarredList + }; + + // ============================================================================= + // ASN.1 Type Constraint + // Default system information block type 4, used in connected mode. + // ----------------------------------------------------------------------------- + template (value) SysInfoType4 cs_SIB4_Common(B28_Type p_CellIdentity, + template (value) CellSelectReselectInfoSIB_3_4 p_CellSelectReselectInfoSIB_3_4) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cellIdentity := p_CellIdentity, + cellSelectReselectInfo := p_CellSelectReselectInfoSIB_3_4, + cellAccessRestriction := { + cellBarred := { + notBarred := NULL + }, + cellReservedForOperatorUse := notReserved, + cellReservationExtension := notReserved, + accessClassBarredList := omit + }, + v4b0NonCriticalExtensions := omit + }; + + template (value) SysInfoType4 cs_SIB4_DefUTRAN(B28_Type p_CellIdentity) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_SIB4_Common(p_CellIdentity, cs_CellSelectReselectInfoSIB_3_4(cs_SIB3_4_ModeSpecificInfo_FDD, 21)); + + template (value) SysInfoType4 cs_SIB4_DefUTRAN_GERAN(B28_Type p_CellIdentity) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_SIB4_Common(p_CellIdentity, cs_CellSelectReselectInfoSIB_3_4(cs_SIB3_4_ModeSpecificInfo_FDD(cs_RAT_FDD_InfoList_GERAN), 21)); + + template (value) SysInfoType4 cs_SIB4_DefUTRAN_TDD(B28_Type p_CellIdentity) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_SIB4_Common(p_CellIdentity, cs_CellSelectReselectInfoSIB_3_4(cs_SIB4_ModeSpecificInfo_TDD, tsc_MaxAllowedUL_TX_Power_TDD)); + + template (value) SysInfoType4 cs_SIB4_DefUTRAN_GERAN_TDD(B28_Type p_CellIdentity) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_SIB4_Common(p_CellIdentity, cs_CellSelectReselectInfoSIB_3_4(cs_SIB4_ModeSpecificInfo_TDD(cs_RAT_TDD_InfoList_GERAN), tsc_MaxAllowedUL_TX_Power_TDD)); + + ////////////////////////////////////////////////////////////////////////////////////////////////// + // SIB 5 + ////////////////////////////////////////////////////////////////////////////////////////////////// + + // ============================================================================= + // Templates used by SIB5 (TDD) + // ----------------------------------------------------------------------------- + template (value) OpenLoopPowerControl_TDD cs_OpenLoopPowerControl_TDD := + { /* Default OpenLoopPowerControl_TDD; TDD only */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + primaryCCPCH_TX_Power := tsc_PrimaryCCPCH_TX_Power, + alpha := omit, + prach_ConstantValue := 0, + dpch_ConstantValue := 0, + pusch_ConstantValue := omit + }; + + template (value) IndividualTimeslotInfo_LCR_r4_ext cs_IndividualTimeslotInfo_LCR_r4_ext_SCCPCH := + { /* used in system info, reference to "cb_IndividualTimeslotInfo_LCR_r4_SCCPCH"; TDD only */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + midambleShiftAndBurstType := { + midambleAllocationMode := {defaultMidamble := NULL}, + midambleConfiguration := 4 + }, + modulation := mod_QPSK, + ss_TPC_Symbols := zero + }; + + template (value) IndividualTimeslotInfo cs_IndividualTimeslotInfo_SCCPCH := + { /* IndividualTimeslotInfo for SCCPCH; TDD only */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + timeslotNumber := 0, + tfci_Existence := true, + midambleShiftAndBurstType := { + burstType := { + type1 := { + midambleConfigurationBurstType1and3 := ms4, + midambleAllocationMode := {defaultMidamble := NULL} + } + } + } + }; + + // ============================================================================= + // Default system information block type 5 for TDD + // ----------------------------------------------------------------------------- + template (value) SysInfoType5 cs_SIB5_Def_TDD(PICH_PowerOffset p_PowerPICH, + CellParametersID p_CellParametersID) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + sib6indicator := true, + pich_PowerOffset := p_PowerPICH, + modeSpecificInfo := { + tdd := { + pusch_SysInfoList_SFN := omit, + pdsch_SysInfoList_SFN := omit, + openLoopPowerControl_TDD := cs_OpenLoopPowerControl_TDD + } + }, + primaryCCPCH_Info := { + tdd := { + syncCase := omit, + cellParametersID := p_CellParametersID, + sctd_Indicator := false + } + }, + prach_SystemInformationList := { + { + prach_RACH_Info := { + modeSpecificInfo := { + tdd := { + timeslot := 1, + channelisationCodeList := {sf8 := { cc8_8 } }, + prach_Midamble := direct + } + } + }, + transportChannelIdentity := tsc_RACH1, + rach_TransportFormatSet := omit, + rach_TFCS := { + normalTFCI_Signalling := { + complete := { + ctfcSize := { + ctfc2Bit := { + cs_TFCS_CtfcSize_Ctfc2Bit(0) // @sic R5s120405 sic@ + } + } + } + } + }, + prach_Partitioning := omit, + persistenceScalingFactorList := { + psf0_9, + psf0_9, + psf0_9, + psf0_9, + psf0_9 + }, + ac_To_ASC_MappingTable := { + 6, + 5, + 4, + 3, + 2, + 1, + 0 + }, + modeSpecificInfo := { + tdd := NULL + } + } + }, + sCCPCH_SystemInformationList := { + { + secondaryCCPCH_Info := { + modeSpecificInfo := { + tdd := { + commonTimeslotInfo := cs_CommonTimeslotInfoSCCPCH, + individualTimeslotInfo := cs_IndividualTimeslotInfo_SCCPCH, + channelisationCode := tsc_S_CCPCH1_1P2F_ChC //@sic R5-133724 sic@ + } + } + }, + tfcs := { + normalTFCI_Signalling := { + complete := { + ctfcSize := { + ctfc6Bit := { // @sic R5-133724 sic@ + cs_TFCS_CtfcSize_Ctfc6Bit(0), + cs_TFCS_CtfcSize_Ctfc6Bit(1), + cs_TFCS_CtfcSize_Ctfc6Bit(2), + cs_TFCS_CtfcSize_Ctfc6Bit(3), + cs_TFCS_CtfcSize_Ctfc6Bit(4), + cs_TFCS_CtfcSize_Ctfc6Bit(5), //@sic R5s130008 sic@ + cs_TFCS_CtfcSize_Ctfc6Bit(6), //@sic R5-133724 sic@ } + cs_TFCS_CtfcSize_Ctfc6Bit(7), + cs_TFCS_CtfcSize_Ctfc6Bit(8), + cs_TFCS_CtfcSize_Ctfc6Bit(9), + cs_TFCS_CtfcSize_Ctfc6Bit(10), + cs_TFCS_CtfcSize_Ctfc6Bit(11), + cs_TFCS_CtfcSize_Ctfc6Bit(12), + cs_TFCS_CtfcSize_Ctfc6Bit(13), + cs_TFCS_CtfcSize_Ctfc6Bit(14), + cs_TFCS_CtfcSize_Ctfc6Bit(15), + cs_TFCS_CtfcSize_Ctfc6Bit(16), + cs_TFCS_CtfcSize_Ctfc6Bit(17) + } + } + } + } + }, + fach_PCH_InformationList := { + { + transportFormatSet := { + commonTransChTFS := cs_PCH_TFS_UE_TDD + }, + transportChannelIdentity := tsc_PCH1, // PCH + ctch_Indicator := false + }, + { + transportFormatSet := { + commonTransChTFS := cs_FACH_TFS_UE_TDD + }, + transportChannelIdentity := tsc_FACH1, // FACH + ctch_Indicator := false + }, // @sic R5s120405 sic@ + { // @sic R5-133724 sic@ + transportFormatSet := { + commonTransChTFS := cs_FACH_TFS_PS_UE_TDD + }, + transportChannelIdentity := tsc_FACH2, + ctch_Indicator := false + } + }, + pich_Info := omit + } + }, + cbs_DRX_Level1Information := omit, + v4b0NonCriticalExtensions := { + sysInfoType5_v4b0ext := + { + pNBSCH_Allocation_r4 := omit, + openLoopPowerControl_IPDL_TDD := omit, + prach_SystemInformationList_LCR_r4 := + { + { + prach_RACH_Info_LCR := cs_PRACH_RACH_Info_LCR_r4(tsc_PRACH1_ChC, tsc_FPACH1_ChC), + rach_TransportFormatSet_LCR := {commonTransChTFS_LCR := cs_RACH_TFS_LCR}, + prach_Partitioning_LCR := + { + // accessServiceClass-TDD-LCR is MD, please see comment on IE 'ASCSetting-TDD-LCR-r4' in 25.331-480, + { accessServiceClass_TDD_LCR := cs_AccessServiceClass_TDD_LCR_r4 }, + { accessServiceClass_TDD_LCR := cs_AccessServiceClass_TDD_LCR_r4 }, + { accessServiceClass_TDD_LCR := cs_AccessServiceClass_TDD_LCR_r4 }, + { accessServiceClass_TDD_LCR := cs_AccessServiceClass_TDD_LCR_r4 }, + { accessServiceClass_TDD_LCR := cs_AccessServiceClass_TDD_LCR_r4 }, + { accessServiceClass_TDD_LCR := cs_AccessServiceClass_TDD_LCR_r4 }, + { accessServiceClass_TDD_LCR := cs_AccessServiceClass_TDD_LCR_r4 } + } // End of PRACH-Partitioning-LCR-r4 + } + }, // End of prach_SystemInformationList-LCR-r4 + tdd128SpecificInfo := + { + pusch_SysInfoList_SFN := omit, + pdsch_SysInfoList_SFN := omit, + pCCPCH_LCR_Extensions := { tstd_Indicator := false }, + sCCPCH_LCR_ExtensionsList := { + { + secondaryCCPCH_LCR_Extensions := + { + individualTimeslotLCR_Ext := cs_IndividualTimeslotInfo_LCR_r4_ext_SCCPCH + }, + pich_Info := cs_PichInfo_TDD + } + } // End of SCCPCH-SystemInformationList-LCR-r4-ext + }, // End of TddSpecificInfo + frequencyBandIndicator := omit + },// End of sysInfoType5-v4xyext + v590NonCriticalExtensions := { + sysInfoType5_v590ext := omit, + v650NonCriticalExtensions := { + sysInfoType5_v650ext := omit, + v680NonCriticalExtensions := { + sysInfoType5_v680ext := { + hsdpa_CellIndicator := hsdpa_CapableCell + }, + v690NonCriticalExtensions := omit // @sic R5s140233 sic@ + } + } + } + } + }; + + // ============================================================================= + // Default system information block type 5 for FDD + // ----------------------------------------------------------------------------- + template (value) SysInfoType5 cs_SIB5_Def(PICH_PowerOffset p_PowerPICH, + AICH_PowerOffset p_PowerAICH) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + sib6indicator := true, + pich_PowerOffset := p_PowerPICH, + modeSpecificInfo := { + fdd := { + aich_PowerOffset := p_PowerAICH + } + }, + primaryCCPCH_Info := omit, + prach_SystemInformationList := { + { + prach_RACH_Info := { + modeSpecificInfo := { + fdd := { + availableSignatures := tsc_PRACH1_Signatures, + availableSF := tsc_PRACH1_SF, + preambleScramblingCodeWordNumber := tsc_PRACH1_ScrC, + puncturingLimit := pl1, + availableSubChannelNumbers := '111111111111'B + } + } + }, + transportChannelIdentity := tsc_RACH1, + rach_TransportFormatSet := { + commonTransChTFS := cs_RACH_TFS_UE_FDD + }, + rach_TFCS := { + normalTFCI_Signalling := { + complete := { + ctfcSize := { + ctfc2Bit := { + { + ctfc2 := 0, + powerOffsetInformation := { + gainFactorInformation := { + computedGainFactors := 0 + }, + powerOffsetPp_m := 0 + } + }, + { + ctfc2 := 1, + powerOffsetInformation := { + gainFactorInformation := { + signalledGainFactors := { + modeSpecificInfo := { + fdd := { + gainFactorBetaC := tsc_GainFactorBetaC_Below64k + } + }, + gainFactorBetaD := 15, + referenceTFC_ID := 0 + } + }, + powerOffsetPp_m := 0 + } + } + } + } + } + } + }, + prach_Partitioning := { + fdd := { + { + accessServiceClass_FDD := omit + }, + { + accessServiceClass_FDD := { + availableSignatureStartIndex := 0, + availableSignatureEndIndex := 7, + assignedSubChannelNumber := '1111'B + } + }, + { + accessServiceClass_FDD := omit + }, + { + accessServiceClass_FDD := { + availableSignatureStartIndex := 0, + availableSignatureEndIndex := 7, + assignedSubChannelNumber := '1111'B + } + }, + { + accessServiceClass_FDD := omit + }, + { + accessServiceClass_FDD := { + availableSignatureStartIndex := 0, + availableSignatureEndIndex := 7, + assignedSubChannelNumber := '1111'B + } + }, + { + accessServiceClass_FDD := omit + }, + { + accessServiceClass_FDD := { + availableSignatureStartIndex := 0, + availableSignatureEndIndex := 7, + assignedSubChannelNumber := '1111'B + } + } + } + }, + persistenceScalingFactorList := { + psf0_9, + psf0_9, + psf0_9, + psf0_9, + psf0_9, + psf0_9 + }, + ac_To_ASC_MappingTable := { + 6, + 5, + 4, + 3, + 2, + 1, + 0 + }, + modeSpecificInfo := { + fdd := { + primaryCPICH_TX_Power := 31, + constantValue := -10, + prach_PowerOffset := { + powerRampStep := 3, // db + preambleRetransMax := 4 + }, + rach_TransmissionParameters := { + mmax := 2, + nb01Min := 3, + nb01Max := 10 + }, + aich_Info := { + channelisationCode256 := tsc_AICH1_ChC, + sttd_Indicator := false, + aich_TransmissionTiming := e0 + } + } + } + } + }, + sCCPCH_SystemInformationList := { + { + secondaryCCPCH_Info := { + modeSpecificInfo := { + fdd := { + dummy1 := mayBeUsed, // mandatory ie + dummy2 := omit, + secondaryScramblingCode := omit, + sttd_Indicator := false, + sf_AndCodeNumber := tsc_S_CCPCH1_ChC, + pilotSymbolExistence := false, + tfci_Existence := true, + positionFixedOrFlexible := flexible, + timingOffset := 0 + } + } + }, + tfcs := { + normalTFCI_Signalling := { + complete := { + ctfcSize := { + ctfc4Bit := { + cs_TFCS_CtfcSize_Ctfc4Bit(0), + cs_TFCS_CtfcSize_Ctfc4Bit(1), + cs_TFCS_CtfcSize_Ctfc4Bit(2), + cs_TFCS_CtfcSize_Ctfc4Bit(3), + cs_TFCS_CtfcSize_Ctfc4Bit(4), + cs_TFCS_CtfcSize_Ctfc4Bit(5), + cs_TFCS_CtfcSize_Ctfc4Bit(6), + cs_TFCS_CtfcSize_Ctfc4Bit(8) + } + } + } + } + }, + fach_PCH_InformationList := { + { + transportFormatSet := { + commonTransChTFS := cs_PCH_TFS_UE + }, + transportChannelIdentity := tsc_PCH1, // PCH + ctch_Indicator := false + }, + { + transportFormatSet := { + commonTransChTFS := cs_FACH_TFS_UE + }, + transportChannelIdentity := tsc_FACH1, // FACH + ctch_Indicator := false + }, + { + transportFormatSet := { + commonTransChTFS := cs_FACH_TFS_PS_UE + }, + transportChannelIdentity := tsc_FACH2, // FACH + ctch_Indicator := false + } + }, + pich_Info := { + fdd := { + channelisationCode256 := tsc_PICH1_ChC, + pi_CountPerFrame := e18, + sttd_Indicator := false + } + } + } + }, + cbs_DRX_Level1Information := omit, + v4b0NonCriticalExtensions := { // @sic R5s110215 sic@ + sysInfoType5_v4b0ext := omit, + v590NonCriticalExtensions := { + sysInfoType5_v590ext := omit, + v650NonCriticalExtensions := { + sysInfoType5_v650ext := omit, + v680NonCriticalExtensions := { + sysInfoType5_v680ext := omit, + v690NonCriticalExtensions := { + sysInfoType5_v690ext := cs_SysInfoType5_v690ext_IEs_AddRACH_TF, + v770NonCriticalExtensions := omit + + } + } + } + } + } + }; + + // ============================================================================= + // Common derived template for band-specific information + // ----------------------------------------------------------------------------- + + + template (value) SysInfoType5 cds_SIB5_v650ext(PICH_PowerOffset p_PowerPICH, + AICH_PowerOffset p_PowerAICH, + RadioFrequencyBandFDD2 p_RadioFrequencyBandFDD2) modifies cs_SIB5_Def := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + v4b0NonCriticalExtensions := { + sysInfoType5_v4b0ext := { // @sic R5s120573 sic@ + pNBSCH_Allocation_r4 := omit, + openLoopPowerControl_IPDL_TDD := omit, + prach_SystemInformationList_LCR_r4 := omit, + tdd128SpecificInfo := omit, + frequencyBandIndicator := extension_indicator + }, + v590NonCriticalExtensions := { + v650NonCriticalExtensions := { + sysInfoType5_v650ext := { + frequencyBandIndicator2 := p_RadioFrequencyBandFDD2 + } // @sic R5s120178 sic@ + } + } + } + }; + + template (value) SysInfoType5 cds_SIB5_v4b0ext(PICH_PowerOffset p_PowerPICH, + AICH_PowerOffset p_PowerAICH, + RadioFrequencyBandFDD p_RadioFrequencyBandFDD) modifies cs_SIB5_Def := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + v4b0NonCriticalExtensions := { + sysInfoType5_v4b0ext := { + pNBSCH_Allocation_r4 := omit, + openLoopPowerControl_IPDL_TDD := omit, + prach_SystemInformationList_LCR_r4 := omit, + tdd128SpecificInfo := omit, + frequencyBandIndicator := p_RadioFrequencyBandFDD + } // @sic R5s120177 sic@ + } + }; + + template (value) SysInfoType5 cds_SIB5_va40ext (PICH_PowerOffset p_PowerPICH, + AICH_PowerOffset p_PowerAICH, + RadioFrequencyBandFDD3 p_RadioFrequencyBandFDD3) + modifies cs_SIB5_Def := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + // @sic R5s120178 sic@ + v4b0NonCriticalExtensions := { + sysInfoType5_v4b0ext := omit, + v590NonCriticalExtensions := { + v650NonCriticalExtensions := { + v680NonCriticalExtensions := { + v690NonCriticalExtensions := { + v770NonCriticalExtensions := { + sysInfoType5_v770ext := { + modeSpecificInfo := omit, + sccpch_SystemInformationList := omit, + sccpch_SystemInformation_MBMS := omit, + tDD_MBSFNInformation := omit + }, + v860NonCriticalExtensions := { + sysInfoType5_v860ext := { + dummy := omit, + modeSpecificInfo := { fdd := { hs_dsch_DrxCellfach_info := omit } } + }, + v890NonCriticalExtensions := { + sysInfoType5_v890ext := { + secondFrequencyInfo:= omit, + commonEDCHSystemInfo:=omit}, + v8b0NonCriticalExtensions := { + sysInfoType5_v8b0ext := { + tresetUsageIndicator := omit, + upPCHpositionInfo := omit }, + v8d0NonCriticalExtensions := { + sysInfoType5_v8d0ext := { commonEDCHSystemInfoFDD := omit }, + va40NonCriticalExtensions := { + sysInfoType5_va40ext := { + frequencyBandsIndicatorSupport := omit, + frequencyBandIndicator3 := p_RadioFrequencyBandFDD3 + }, + va80NonCriticalExtensions := omit + } + } + } + } + } + } + } + } + } + } + } + }; + + template (value) AdditionalPRACH_TF_and_TFCS_CCCH_List cs_AddPRACH_TF_TFS_CCCH_FDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + { + additionalPRACH_TF_and_TFCS_CCCH_IEs := + { + powerOffsetInformation := { + gainFactorInformation := { + signalledGainFactors := { + modeSpecificInfo := { + fdd := { + gainFactorBetaC := 11 + } + }, + gainFactorBetaD := 15, + referenceTFC_ID := 0 + } + }, + powerOffsetPp_m := 0 + }, + dynamicTFInformationCCCH := { + octetModeRLC_SizeInfoType2 := { + sizeType1:= 24 // Actual size = (sizeType1 * 8) + 48 + } + } + } + } + }; + + template (value) SysInfoType5_v690ext_IEs cs_SysInfoType5_v690ext_IEs_AddRACH_TF := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + edch_CellIndicator := omit, + sccpch_SystemInformation_MBMS := omit, + additionalPRACH_TF_and_TFCS_CCCH_List := cs_AddPRACH_TF_TFS_CCCH_FDD, + cBS_DRX_Level1Information_extension := omit + }; + + template (value) SysInfoType5 cs_SIB5_Band5(PICH_PowerOffset p_PowerPICH, AICH_PowerOffset p_PowerAICH) := cds_SIB5_v4b0ext(p_PowerPICH, p_PowerAICH, bandV); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) SysInfoType5 cs_SIB5_Band6(PICH_PowerOffset p_PowerPICH, AICH_PowerOffset p_PowerAICH) := cds_SIB5_v4b0ext(p_PowerPICH, p_PowerAICH, bandVI); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) SysInfoType5 cs_SIB5_Band7(PICH_PowerOffset p_PowerPICH, AICH_PowerOffset p_PowerAICH) := cds_SIB5_v4b0ext(p_PowerPICH, p_PowerAICH, bandVII); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + template (value) SysInfoType5 cs_SIB5_Band8 (PICH_PowerOffset p_PowerPICH, AICH_PowerOffset p_PowerAICH) := cds_SIB5_v650ext(p_PowerPICH, p_PowerAICH, bandVIII); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) SysInfoType5 cs_SIB5_Band11(PICH_PowerOffset p_PowerPICH, AICH_PowerOffset p_PowerAICH) := cds_SIB5_v650ext(p_PowerPICH, p_PowerAICH, bandXI); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) SysInfoType5 cs_SIB5_Band12(PICH_PowerOffset p_PowerPICH, AICH_PowerOffset p_PowerAICH) := cds_SIB5_v650ext(p_PowerPICH, p_PowerAICH, bandXII); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) SysInfoType5 cs_SIB5_Band13(PICH_PowerOffset p_PowerPICH, AICH_PowerOffset p_PowerAICH) := cds_SIB5_v650ext(p_PowerPICH, p_PowerAICH, bandXIII); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) SysInfoType5 cs_SIB5_Band14(PICH_PowerOffset p_PowerPICH, AICH_PowerOffset p_PowerAICH) := cds_SIB5_v650ext(p_PowerPICH, p_PowerAICH, bandXIV); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) SysInfoType5 cs_SIB5_Band15(PICH_PowerOffset p_PowerPICH, AICH_PowerOffset p_PowerAICH) := cds_SIB5_v650ext(p_PowerPICH, p_PowerAICH, bandXV); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) SysInfoType5 cs_SIB5_Band16(PICH_PowerOffset p_PowerPICH, AICH_PowerOffset p_PowerAICH) := cds_SIB5_v650ext(p_PowerPICH, p_PowerAICH, bandXVI); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) SysInfoType5 cs_SIB5_Band17(PICH_PowerOffset p_PowerPICH, AICH_PowerOffset p_PowerAICH) := cds_SIB5_v650ext(p_PowerPICH, p_PowerAICH, bandXVII); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) SysInfoType5 cs_SIB5_Band18(PICH_PowerOffset p_PowerPICH, AICH_PowerOffset p_PowerAICH) := cds_SIB5_v650ext(p_PowerPICH, p_PowerAICH, bandXVIII); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) SysInfoType5 cs_SIB5_Band19(PICH_PowerOffset p_PowerPICH, AICH_PowerOffset p_PowerAICH) := cds_SIB5_v650ext(p_PowerPICH, p_PowerAICH, bandXIX); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) SysInfoType5 cs_SIB5_Band20(PICH_PowerOffset p_PowerPICH, AICH_PowerOffset p_PowerAICH) := cds_SIB5_v650ext(p_PowerPICH, p_PowerAICH, bandXX); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) SysInfoType5 cs_SIB5_Band21(PICH_PowerOffset p_PowerPICH, AICH_PowerOffset p_PowerAICH) := cds_SIB5_v650ext(p_PowerPICH, p_PowerAICH, bandXXI); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) SysInfoType5 cs_SIB5_Band22(PICH_PowerOffset p_PowerPICH, AICH_PowerOffset p_PowerAICH) := cds_SIB5_v650ext(p_PowerPICH, p_PowerAICH, bandXXII); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + template (value) SysInfoType5 cs_SIB5_Band25(PICH_PowerOffset p_PowerPICH, AICH_PowerOffset p_PowerAICH) := cds_SIB5_va40ext(p_PowerPICH, p_PowerAICH, bandXXV); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + /* NOTE: + In ASN.1 definition SysInfoType5bis := SysInfoType5 + Then to facilitate implementation, SIB5bis constraint is defined as SysInfoType5 */ + template (value) SysInfoType5 cs_SIB5bis_Band4 (PICH_PowerOffset p_PowerPICH, AICH_PowerOffset p_PowerAICH) := cds_SIB5_v4b0ext(p_PowerPICH, p_PowerAICH, bandIV); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) SysInfoType5 cs_SIB5bis_Band9 (PICH_PowerOffset p_PowerPICH, AICH_PowerOffset p_PowerAICH) := cds_SIB5_v650ext(p_PowerPICH, p_PowerAICH, bandIX); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) SysInfoType5 cs_SIB5bis_Band10(PICH_PowerOffset p_PowerPICH, AICH_PowerOffset p_PowerAICH) := cds_SIB5_v650ext(p_PowerPICH, p_PowerAICH, bandX); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + ////////////////////////////////////////////////////////////////////////////////////////////////// + // SIB 6 + ////////////////////////////////////////////////////////////////////////////////////////////////// + // ============================================================================= + // Default system information block type 6, used in connected mode. + // Similar to cb_SIB5_Def, except "AC-to-ASC mapping table" not present + // ----------------------------------------------------------------------------- + template (value) SysInfoType6 cs_SIB6_Def(PICH_PowerOffset p_PowerPICH, + AICH_PowerOffset p_PowerAICH) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + pich_PowerOffset := p_PowerPICH, + modeSpecificInfo := { + fdd := { + aich_PowerOffset := p_PowerAICH, + dummy := omit + } + }, + primaryCCPCH_Info := omit, + prach_SystemInformationList := omit, + sCCPCH_SystemInformationList := omit, + cbs_DRX_Level1Information := omit, + v4b0NonCriticalExtensions := omit + }; + + // ============================================================================= + // Default system information block type 6, used in connected mode. + // Similar to cb_SIB5_Def, except "AC-to-ASC mapping table" not present + // ----------------------------------------------------------------------------- + template (value) SysInfoType6 cs_SIB6_Def_TDD(PICH_PowerOffset p_PowerPICH) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + pich_PowerOffset := p_PowerPICH, + modeSpecificInfo := { + tdd := { + pusch_SysInfoList_SFN := omit, + pdsch_SysInfoList_SFN := omit, + openLoopPowerControl_TDD := { + primaryCCPCH_TX_Power := 12, + alpha := omit, + prach_ConstantValue := 0, + dpch_ConstantValue := 0, + pusch_ConstantValue := omit + } + } + }, + primaryCCPCH_Info := omit, + prach_SystemInformationList := omit, + sCCPCH_SystemInformationList := omit, + cbs_DRX_Level1Information := omit, + v4b0NonCriticalExtensions := omit + }; + + ////////////////////////////////////////////////////////////////////////////////////////////////// + // SIB 7 + ////////////////////////////////////////////////////////////////////////////////////////////////// + // ============================================================================= + // Default system information block type 7 (FDD) + // ----------------------------------------------------------------------------- + template (value) SysInfoType7 cs_SIB7_Def := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + modeSpecificInfo := { + fdd := { + ul_Interference := -100 + } + }, + prach_Information_SIB5_List := { + 2 + }, + prach_Information_SIB6_List := omit, + expirationTimeFactor := omit, + nonCriticalExtensions := omit + }; + + // ============================================================================= + // Default system information block type 7 (TDD) + // ----------------------------------------------------------------------------- + template (value) SysInfoType7 cs_SIB7_Def_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + modeSpecificInfo := {tdd := NULL}, + prach_Information_SIB5_List := { + 2 + }, + prach_Information_SIB6_List := { + 2 + }, + expirationTimeFactor := omit, + nonCriticalExtensions := omit + }; + + ////////////////////////////////////////////////////////////////////////////////////////////////// + // SIB 11 + ////////////////////////////////////////////////////////////////////////////////////////////////// + + // ============================================================================= + // Common templates for SIB11 (FDD) + // ----------------------------------------------------------------------------- + + template (value) NewIntraFreqCellSI_RSCP cs_NewIntraFreqCell_FDD(integer p_CellId, + PrimaryScramblingCode p_PrimaryScramblingCode, + boolean p_ReadSFN_Indicator) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + intraFreqCellID := p_CellId, + cellInfo := { + cellIndividualOffset := omit, // default value + referenceTimeDifferenceToCell := omit, + modeSpecificInfo := { + fdd := { + primaryCPICH_Info := { + primaryScramblingCode := p_PrimaryScramblingCode + }, + primaryCPICH_TX_Power := omit, + readSFN_Indicator := p_ReadSFN_Indicator, + tx_DiversityIndicator := false + } + }, + cellSelectionReselectionInfo := omit + } + }; + + template (value) NewInterFreqCellSI_RSCP cs_NewInterFreqCell_FDD(integer p_CellId, + FrequencyInfo p_FrequencyInfo, + PrimaryScramblingCode p_PrimaryScramblingCode) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + interFreqCellID := p_CellId, + frequencyInfo := p_FrequencyInfo, + cellInfo := { + cellIndividualOffset := omit, // default value + referenceTimeDifferenceToCell := omit, + modeSpecificInfo := { + fdd := { + primaryCPICH_Info := { + primaryScramblingCode := p_PrimaryScramblingCode + }, + primaryCPICH_TX_Power := omit, + readSFN_Indicator := false, + tx_DiversityIndicator := false + } + }, + cellSelectionReselectionInfo := omit // value same as the serving cell + } + }; + + template (value) NewInterRATCell_B cs_NewInterRATCell(integer p_GERANCell_Id, + integer p_GERANCell_Ncc, + integer p_GERANCell_Bcc, + Frequency_Band p_GERANCell_BandInd, + integer p_GERANCell_Freq) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS) */ + interRATCellID := p_GERANCell_Id, + technologySpecificInfo := { + gsm := { + cellSelectionReselectionInfo := omit, + interRATCellIndividualOffset := 0, + bsic := { + ncc := p_GERANCell_Ncc, + bcc := p_GERANCell_Bcc + }, + frequency_band := p_GERANCell_BandInd, + bcch_ARFCN := p_GERANCell_Freq, + dummy := omit + } + } + }; + + // ============================================================================= + // Default system information block type 11 (FDD) + // ----------------------------------------------------------------------------- + + template (value) IntraFreqEventCriteriaList cs_IntraFreqEvent1b_1c := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + { + event := { + e1b := { + triggeringCondition := activeSetCellsOnly, + reportingRange := 10, // Actual value ReportingRange = IE value * 0.5 + forbiddenAffectCellList := omit, + w := 1 + } + }, + hysteresis := 0, + timeToTrigger := ttt640, + reportingCellStatus := { + withinActiveAndOrMonitoredUsedFreq := e3 + } + }, + { + event := { + e1c := { + replacementActivationThreshold := t3, + reportingAmount := ra4, + reportingInterval := ri4 + } + }, + hysteresis := 0, + timeToTrigger := ttt640, + reportingCellStatus := { + withinActiveAndOrMonitoredUsedFreq := e3 + } + } + }; + + template (value) SysInfoType11 cs_SIB11_Common_FDD(template (value) NewIntraFreqCellSI_List_RSCP p_NewIntraFreqCellList, + template (value) NewInterFreqCellSI_List_RSCP p_NewInterFreqCellList, + template (omit) InterRATMeasurementSysInfo_B p_InterRATMeasurementSysInfo := omit, + boolean p_Sib12indicator := true) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + sib12indicator := p_Sib12indicator, + fach_MeasurementOccasionInfo := omit, + measurementControlSysInfo := { + use_of_HCS := { + hcs_not_used := { + cellSelectQualityMeasure := { + cpich_RSCP := { + intraFreqMeasurementSysInfo := { + intraFreqMeasurementID := omit, // default value + intraFreqCellInfoSI_List := { + removedIntraFreqCellList := omit, // removedIntraFreqCellList in SIB11 is not used and ignored by the UE + newIntraFreqCellList := p_NewIntraFreqCellList + }, + intraFreqMeasQuantity := { + filterCoefficient := omit, // default value + modeSpecificInfo := { + fdd := { + intraFreqMeasQuantity_FDD := cpich_RSCP + } + } + }, + intraFreqReportingQuantityForRACH := omit, + maxReportedCellsOnRACH := omit, + reportingInfoForCellDCH := { + intraFreqReportingQuantity := { + activeSetReportingQuantities := { + dummy := noReport, + cellIdentity_reportingIndicator := true, + cellSynchronisationInfoReportingIndicator := false, + modeSpecificInfo := { + fdd := { + cpich_Ec_N0_reportingIndicator := false, + cpich_RSCP_reportingIndicator := true, + pathloss_reportingIndicator := false + } + } + }, + monitoredSetReportingQuantities := { + dummy := noReport, + cellIdentity_reportingIndicator := true, + cellSynchronisationInfoReportingIndicator := true, + modeSpecificInfo := { + fdd := { + cpich_Ec_N0_reportingIndicator := false, + cpich_RSCP_reportingIndicator := true, + pathloss_reportingIndicator := false + } + } + }, + detectedSetReportingQuantities := omit + }, + measurementReportingMode := { + measurementReportTransferMode := acknowledgedModeRLC, + periodicalOrEventTrigger := eventTrigger + }, + reportCriteria := { + intraFreqReportingCriteria := { + eventCriteriaList := cs_IntraFreqEvent1b_1c + } + } + } + }, + interFreqMeasurementSysInfo := { + interFreqCellInfoSI_List := { + removedInterFreqCellList := omit, // removedInterFreqCellList in SIB11 is not used and ignored by the UE + newInterFreqCellList := p_NewInterFreqCellList + } + } + } + }, + interRATMeasurementSysInfo := p_InterRATMeasurementSysInfo + } + }, + trafficVolumeMeasSysInfo := omit, + dummy := omit + }, + v4b0NonCriticalExtensions := omit + }; + + // ----------------------------------------------------------------------------- + + template (value) NewIntraFreqCellSI_List_RSCP cs_NewIntraFreqCellList_Def_FDD(integer p_ActiveCellInfo_CellId, + PrimaryScramblingCode p_ActiveCellInfo_PriScrmCode, + integer p_IntraCellInfo2_CellId, + PrimaryScramblingCode p_IntraCellInfo2_PriScrmCode) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS) */ + cs_NewIntraFreqCell_FDD(p_ActiveCellInfo_CellId, p_ActiveCellInfo_PriScrmCode, false), // readSFN_Indicator := false + cs_NewIntraFreqCell_FDD(p_IntraCellInfo2_CellId, p_IntraCellInfo2_PriScrmCode, true) // readSFN_Indicator := true + }; + + template (value) NewInterFreqCellSI_List_RSCP cs_NewInterFreqCellList_Def_FDD(integer p_InterCellInfo3_CellId, + FrequencyInfo p_InterCellInfo3_FreqInfo, + PrimaryScramblingCode p_InterCellInfo3_PriScrmCode, + integer p_InterCellInfo4_CellId, + FrequencyInfo p_InterCellInfo4_FreqInfo, + PrimaryScramblingCode p_InterCellInfo4_PriScrmCode) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS) */ + cs_NewInterFreqCell_FDD(p_InterCellInfo3_CellId, p_InterCellInfo3_FreqInfo, p_InterCellInfo3_PriScrmCode), + cs_NewInterFreqCell_FDD(p_InterCellInfo4_CellId, p_InterCellInfo4_FreqInfo, p_InterCellInfo4_PriScrmCode) + }; + + // ----------------------------------------------------------------------------- + + template (value) NewIntraFreqCellSI_List_RSCP cs_NewIntraFreqCellList_Freq2_FDD(integer p_ActiveCellInfo_CellId, + PrimaryScramblingCode p_ActiveCellInfo_PriScrmCode) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS) */ + cs_NewIntraFreqCell_FDD(p_ActiveCellInfo_CellId, p_ActiveCellInfo_PriScrmCode, false) // readSFN_Indicator := false + }; + + template (value) NewInterFreqCellSI_List_RSCP cs_NewInterFreqCellList_Freq2_FDD(integer p_InterCellInfo2_CellId, + FrequencyInfo p_InterCellInfo2_FreqInfo, + PrimaryScramblingCode p_InterCellInfo2_PriScrmCode, + integer p_InterCellInfo3_CellId, + FrequencyInfo p_InterCellInfo3_FreqInfo, + PrimaryScramblingCode p_InterCellInfo3_PriScrmCode, + integer p_InterCellInfo4_CellId, + FrequencyInfo p_InterCellInfo4_FreqInfo, + PrimaryScramblingCode p_InterCellInfo4_PriScrmCode) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS) */ + cs_NewInterFreqCell_FDD(p_InterCellInfo2_CellId, p_InterCellInfo2_FreqInfo, p_InterCellInfo2_PriScrmCode), + cs_NewInterFreqCell_FDD(p_InterCellInfo3_CellId, p_InterCellInfo3_FreqInfo, p_InterCellInfo3_PriScrmCode), + cs_NewInterFreqCell_FDD(p_InterCellInfo4_CellId, p_InterCellInfo4_FreqInfo, p_InterCellInfo4_PriScrmCode) + }; + + // ----------------------------------------------------------------------------- + + template (omit) InterRATMeasurementSysInfo_B cs_InterRATMeasurementSysInfo_UG(integer p_GERANCell1_Id, + integer p_GERANCell1_Ncc, + integer p_GERANCell1_Bcc, + Frequency_Band p_GERANCell1_BandInd, + integer p_GERANCell1_Freq, + integer p_GERANCell2_Id, + integer p_GERANCell2_Ncc, + integer p_GERANCell2_Bcc, + Frequency_Band p_GERANCell2_BandInd, + integer p_GERANCell2_Freq, + integer p_GERANCell3_Id, + integer p_GERANCell3_Ncc, + integer p_GERANCell3_Bcc, + Frequency_Band p_GERANCell3_BandInd, + integer p_GERANCell3_Freq) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS) */ + interRATCellInfoList := { + removedInterRATCellList := { + removeNoInterRATCells := NULL + }, + newInterRATCellList := { + cs_NewInterRATCell(p_GERANCell1_Id, p_GERANCell1_Ncc, p_GERANCell1_Bcc, p_GERANCell1_BandInd, p_GERANCell1_Freq), + cs_NewInterRATCell(p_GERANCell2_Id, p_GERANCell2_Ncc, p_GERANCell2_Bcc, p_GERANCell2_BandInd, p_GERANCell2_Freq), + cs_NewInterRATCell(p_GERANCell3_Id, p_GERANCell3_Ncc, p_GERANCell3_Bcc, p_GERANCell3_BandInd, p_GERANCell3_Freq) + } + } + }; + + // ----------------------------------------------------------------------------- + + template (value) SysInfoType11 cs_SIB11_Def_FDD(integer p_ActiveCellInfo_CellId, + PrimaryScramblingCode p_ActiveCellInfo_PriScrmCode, + integer p_IntraCellInfo2_CellId, + PrimaryScramblingCode p_IntraCellInfo2_PriScrmCode, + integer p_InterCellInfo3_CellId, + FrequencyInfo p_InterCellInfo3_FreqInfo, + PrimaryScramblingCode p_InterCellInfo3_PriScrmCode, + integer p_InterCellInfo4_CellId, + FrequencyInfo p_InterCellInfo4_FreqInfo, + PrimaryScramblingCode p_InterCellInfo4_PriScrmCode) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS) */ + cs_SIB11_Common_FDD( cs_NewIntraFreqCellList_Def_FDD(p_ActiveCellInfo_CellId, p_ActiveCellInfo_PriScrmCode, + p_IntraCellInfo2_CellId, p_IntraCellInfo2_PriScrmCode), + cs_NewInterFreqCellList_Def_FDD(p_InterCellInfo3_CellId, p_InterCellInfo3_FreqInfo, p_InterCellInfo3_PriScrmCode, + p_InterCellInfo4_CellId, p_InterCellInfo4_FreqInfo, p_InterCellInfo4_PriScrmCode)); + + template (value) SysInfoType11 cs_SIB11_Freq2_FDD(integer p_ActiveCellInfo_CellId, + PrimaryScramblingCode p_ActiveCellInfo_PriScrmCode, + integer p_InterCellInfo2_CellId, + FrequencyInfo p_InterCellInfo2_FreqInfo, + PrimaryScramblingCode p_InterCellInfo2_PriScrmCode, + integer p_InterCellInfo3_CellId, + FrequencyInfo p_InterCellInfo3_FreqInfo, + PrimaryScramblingCode p_InterCellInfo3_PriScrmCode, + integer p_InterCellInfo4_CellId, + FrequencyInfo p_InterCellInfo4_FreqInfo, + PrimaryScramblingCode p_InterCellInfo4_PriScrmCode) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS) */ + cs_SIB11_Common_FDD( cs_NewIntraFreqCellList_Freq2_FDD(p_ActiveCellInfo_CellId, p_ActiveCellInfo_PriScrmCode), + cs_NewInterFreqCellList_Freq2_FDD(p_InterCellInfo2_CellId, p_InterCellInfo2_FreqInfo, p_InterCellInfo2_PriScrmCode, + p_InterCellInfo3_CellId, p_InterCellInfo3_FreqInfo, p_InterCellInfo3_PriScrmCode, + p_InterCellInfo4_CellId, p_InterCellInfo4_FreqInfo, p_InterCellInfo4_PriScrmCode)); + + + template (value) SysInfoType11 cs_SIB11_Def_UG_FDD(integer p_ActiveCellInfo_CellId, + PrimaryScramblingCode p_ActiveCellInfo_PriScrmCode, + integer p_IntraCellInfo2_CellId, + PrimaryScramblingCode p_IntraCellInfo2_PriScrmCode, + integer p_InterCellInfo3_CellId, + FrequencyInfo p_InterCellInfo3_FreqInfo, + PrimaryScramblingCode p_InterCellInfo3_PriScrmCode, + integer p_InterCellInfo4_CellId, + FrequencyInfo p_InterCellInfo4_FreqInfo, + PrimaryScramblingCode p_InterCellInfo4_PriScrmCode, + integer p_GERANCell1_Id, + integer p_GERANCell1_Ncc, + integer p_GERANCell1_Bcc, + Frequency_Band p_GERANCell1_BandInd, + integer p_GERANCell1_Freq, + integer p_GERANCell2_Id, + integer p_GERANCell2_Ncc, + integer p_GERANCell2_Bcc, + Frequency_Band p_GERANCell2_BandInd, + integer p_GERANCell2_Freq, + integer p_GERANCell3_Id, + integer p_GERANCell3_Ncc, + integer p_GERANCell3_Bcc, + Frequency_Band p_GERANCell3_BandInd, + integer p_GERANCell3_Freq) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS) */ + cs_SIB11_Common_FDD( cs_NewIntraFreqCellList_Def_FDD(p_ActiveCellInfo_CellId, p_ActiveCellInfo_PriScrmCode, + p_IntraCellInfo2_CellId, p_IntraCellInfo2_PriScrmCode), + cs_NewInterFreqCellList_Def_FDD(p_InterCellInfo3_CellId, p_InterCellInfo3_FreqInfo, p_InterCellInfo3_PriScrmCode, + p_InterCellInfo4_CellId, p_InterCellInfo4_FreqInfo, p_InterCellInfo4_PriScrmCode), + cs_InterRATMeasurementSysInfo_UG(p_GERANCell1_Id, p_GERANCell1_Ncc, p_GERANCell1_Bcc, p_GERANCell1_BandInd, p_GERANCell1_Freq, + p_GERANCell2_Id, p_GERANCell2_Ncc, p_GERANCell2_Bcc, p_GERANCell2_BandInd, p_GERANCell2_Freq, + p_GERANCell3_Id, p_GERANCell3_Ncc, p_GERANCell3_Bcc, p_GERANCell3_BandInd, p_GERANCell3_Freq), + false); // sib12indicator := false + + + template (value) SysInfoType11 cs_SIB11_Freq2_UG_FDD(integer p_ActiveCellInfo_CellId, + PrimaryScramblingCode p_ActiveCellInfo_PriScrmCode, + integer p_InterCellInfo2_CellId, + FrequencyInfo p_InterCellInfo2_FreqInfo, + PrimaryScramblingCode p_InterCellInfo2_PriScrmCode, + integer p_InterCellInfo3_CellId, + FrequencyInfo p_InterCellInfo3_FreqInfo, + PrimaryScramblingCode p_InterCellInfo3_PriScrmCode, + integer p_InterCellInfo4_CellId, + FrequencyInfo p_InterCellInfo4_FreqInfo, + PrimaryScramblingCode p_InterCellInfo4_PriScrmCode, + integer p_GERANCell1_Id, + integer p_GERANCell1_Ncc, + integer p_GERANCell1_Bcc, + Frequency_Band p_GERANCell1_BandInd, + integer p_GERANCell1_Freq, + integer p_GERANCell2_Id, + integer p_GERANCell2_Ncc, + integer p_GERANCell2_Bcc, + Frequency_Band p_GERANCell2_BandInd, + integer p_GERANCell2_Freq, + integer p_GERANCell3_Id, + integer p_GERANCell3_Ncc, + integer p_GERANCell3_Bcc, + Frequency_Band p_GERANCell3_BandInd, + integer p_GERANCell3_Freq) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS) */ + cs_SIB11_Common_FDD( cs_NewIntraFreqCellList_Freq2_FDD(p_ActiveCellInfo_CellId, p_ActiveCellInfo_PriScrmCode), + cs_NewInterFreqCellList_Freq2_FDD(p_InterCellInfo2_CellId, p_InterCellInfo2_FreqInfo, p_InterCellInfo2_PriScrmCode, + p_InterCellInfo3_CellId, p_InterCellInfo3_FreqInfo, p_InterCellInfo3_PriScrmCode, + p_InterCellInfo4_CellId, p_InterCellInfo4_FreqInfo, p_InterCellInfo4_PriScrmCode), + cs_InterRATMeasurementSysInfo_UG(p_GERANCell1_Id, p_GERANCell1_Ncc, p_GERANCell1_Bcc, p_GERANCell1_BandInd, p_GERANCell1_Freq, + p_GERANCell2_Id, p_GERANCell2_Ncc, p_GERANCell2_Bcc, p_GERANCell2_BandInd, p_GERANCell2_Freq, + p_GERANCell3_Id, p_GERANCell3_Ncc, p_GERANCell3_Bcc, p_GERANCell3_BandInd, p_GERANCell3_Freq)); + + + // ============================================================================= + // Common templates for SIB11 (TDD) + // ----------------------------------------------------------------------------- + + + // NewIntraFreqCellSI-List-RSCP-LCR-r4, NewIntraFreqCellSI-RSCP-LCR-r4, CellInfoSI-RSCP-LCR-r4 + // NewInterFreqCellSI-List-RSCP-LCR-r4 + + + + + template (value) NewIntraFreqCellSI_RSCP_LCR_r4 cs_NewIntraFreqCell_TDD(integer p_CellId, + CellParametersID p_CellParametersID, + boolean p_ReadSFN_Indicator) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + intraFreqCellID := p_CellId, + cellInfo := { + cellIndividualOffset := omit, // default value + referenceTimeDifferenceToCell := omit, + primaryCCPCH_Info := { + tstd_Indicator := false, + cellParametersID := p_CellParametersID, + sctd_Indicator := false + }, + primaryCCPCH_TX_Power := omit, + timeslotInfoList := omit, + readSFN_Indicator := p_ReadSFN_Indicator, + cellSelectionReselectionInfo := omit + } + }; + + template (value) NewInterFreqCellSI_RSCP_LCR_r4 cs_NewInterFreqCell_TDD(integer p_CellId, + FrequencyInfo p_FrequencyInfo, + CellParametersID p_CellParametersID) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + interFreqCellID := p_CellId, + frequencyInfo := p_FrequencyInfo, + cellInfo := { + cellIndividualOffset := omit, // default value + referenceTimeDifferenceToCell := omit, + primaryCCPCH_Info := { + tstd_Indicator := false, + cellParametersID := p_CellParametersID, + sctd_Indicator := false + }, + primaryCCPCH_TX_Power := omit, + timeslotInfoList := omit, + readSFN_Indicator := false, + cellSelectionReselectionInfo := omit // value same as the serving cell + } + }; + + // ============================================================================= + // Default system information block type 11 (TDD) + // ----------------------------------------------------------------------------- + + template (value) SysInfoType11 cs_SIB11_Common_TDD (template (value) NewIntraFreqCellSI_List_RSCP_LCR_r4 p_NewIntraFreqCellSI_List, + template (value) NewInterFreqCellSI_List_RSCP_LCR_r4 p_NewInterFreqCellSI_List, + template (omit) InterRATMeasurementSysInfo_B p_InterRATMeasurementSysInfo := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + sib12indicator := true, + fach_MeasurementOccasionInfo := omit, + measurementControlSysInfo := { + use_of_HCS := { + hcs_not_used := { + cellSelectQualityMeasure := { + cpich_RSCP := { + intraFreqMeasurementSysInfo := omit, + interFreqMeasurementSysInfo := omit + } // End of cellSelectQualityMeasure + }, + interRATMeasurementSysInfo := p_InterRATMeasurementSysInfo + } // End of use_of_HCS + }, + trafficVolumeMeasSysInfo := omit, + dummy := omit + }, // End of measurementControlSysInfo + v4b0NonCriticalExtensions := { + sysInfoType11_v4b0ext := { + fach_MeasurementOccasionInfo_LCR_Ext := omit, + measurementControlSysInfo_LCR := { + use_of_HCS := { + hcs_not_used := { + cellSelectQualityMeasure := { + cpich_RSCP := { + intraFreqMeasurementSysInfo := { + intraFreqMeasurementID := omit, // default value 1 + intraFreqCellInfoSI_List := { + removedIntraFreqCellList := omit, // removedIntraFreqCellList in SIB11 is not used and ignored by the UE + newIntraFreqCellList := p_NewIntraFreqCellSI_List + },//End of intraFreqCellInfo + intraFreqMeasQuantity := { + filterCoefficient := omit, // default value + modeSpecificInfo := { + tdd := { + intraFreqMeasQuantity_TDDList := { primaryCCPCH_RSCP } + } + } + }, + intraFreqReportingQuantityForRACH := omit, + maxReportedCellsOnRACH := omit, + reportingInfoForCellDCH := omit + }, // End of intraFreqMeasurementSysInfo-RSCP-LCR-r4 + interFreqMeasurementSysInfo := { + interFreqCellInfoSI_List := { + removedInterFreqCellList := omit, // removedInterFreqCellList in SIB11 is not used and ignored by the UE + newInterFreqCellList := p_NewInterFreqCellSI_List + } // End of interFreqCellInfoSI_List + }// End of interFreqMeasurementSysInfo + } // End of cpich_RSCP + } + } // End of hcs_not_used + } + } // End of MeasurementControlSysInfo_LCR_r4_ext + }, // End of SysInfoType11_v4xyext_IES + v590NonCriticalExtension := omit + } // End of v4xyNonCriticalExtensions + }; + + // ----------------------------------------------------------------------------- + + template (value) NewIntraFreqCellSI_List_RSCP_LCR_r4 cs_NewIntraFreqCellList_Def_TDD(integer p_ActiveCellInfo_CellId, + CellParametersID p_ActiveCellInfo_CellParametersID, + integer p_IntraCellInfo2_CellId, + CellParametersID p_IntraCellInfo2_CellParametersID) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS) */ + cs_NewIntraFreqCell_TDD(p_ActiveCellInfo_CellId, p_ActiveCellInfo_CellParametersID, false), // readSFN_Indicator := false + cs_NewIntraFreqCell_TDD(p_IntraCellInfo2_CellId, p_IntraCellInfo2_CellParametersID, true) // readSFN_Indicator := true + }; + + template (value) NewInterFreqCellSI_List_RSCP_LCR_r4 cs_NewInterFreqCellList_Def_TDD(integer p_InterCellInfo3_CellId, + FrequencyInfo p_InterCellInfo3_FreqInfo, + PrimaryScramblingCode p_InterCellInfo3_CellParametersID, + integer p_InterCellInfo4_CellId, + FrequencyInfo p_InterCellInfo4_FreqInfo, + PrimaryScramblingCode p_InterCellInfo4_CellParametersID) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS) */ + cs_NewInterFreqCell_TDD(p_InterCellInfo3_CellId, p_InterCellInfo3_FreqInfo, p_InterCellInfo3_CellParametersID), + cs_NewInterFreqCell_TDD(p_InterCellInfo4_CellId, p_InterCellInfo4_FreqInfo, p_InterCellInfo4_CellParametersID) + }; + + + // ----------------------------------------------------------------------------- + + template (value) NewIntraFreqCellSI_List_RSCP_LCR_r4 cs_NewIntraFreqCellList_Freq2_TDD(integer p_ActiveCellInfo_CellId, + CellParametersID p_ActiveCellInfo_CellParametersID) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS) */ + cs_NewIntraFreqCell_TDD(p_ActiveCellInfo_CellId, p_ActiveCellInfo_CellParametersID, false) // readSFN_Indicator := false + }; + + template (value) NewInterFreqCellSI_List_RSCP_LCR_r4 cs_NewInterFreqCellList_Freq2_TDD(integer p_InterCellInfo2_CellId, + FrequencyInfo p_InterCellInfo2_FreqInfo, + PrimaryScramblingCode p_InterCellInfo2_CellParametersID, + integer p_InterCellInfo3_CellId, + FrequencyInfo p_InterCellInfo3_FreqInfo, + PrimaryScramblingCode p_InterCellInfo3_CellParametersID, + integer p_InterCellInfo4_CellId, + FrequencyInfo p_InterCellInfo4_FreqInfo, + PrimaryScramblingCode p_InterCellInfo4_CellParametersID) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS) */ + cs_NewInterFreqCell_TDD(p_InterCellInfo2_CellId, p_InterCellInfo2_FreqInfo, p_InterCellInfo2_CellParametersID), + cs_NewInterFreqCell_TDD(p_InterCellInfo3_CellId, p_InterCellInfo3_FreqInfo, p_InterCellInfo3_CellParametersID), + cs_NewInterFreqCell_TDD(p_InterCellInfo4_CellId, p_InterCellInfo4_FreqInfo, p_InterCellInfo4_CellParametersID) + }; + + // ----------------------------------------------------------------------------- + + template (value) SysInfoType11 cs_SIB11_Def_TDD ( integer p_ActiveCellInfo_CellId, + CellParametersID p_ActiveCellInfo_CellParametersID, + integer p_IntraCellInfo2_CellId, + CellParametersID p_IntraCellInfo2_CellParametersID, + integer p_InterCellInfo3_CellId, + FrequencyInfo p_InterCellInfo3_FreqInfo, + CellParametersID p_InterCellInfo3_CellParametersID, + integer p_InterCellInfo4_CellId, + FrequencyInfo p_InterCellInfo4_FreqInfo, + CellParametersID p_InterCellInfo4_CellParametersID) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS) */ + cs_SIB11_Common_TDD (cs_NewIntraFreqCellList_Def_TDD(p_ActiveCellInfo_CellId, p_ActiveCellInfo_CellParametersID, + p_IntraCellInfo2_CellId, p_IntraCellInfo2_CellParametersID), + cs_NewInterFreqCellList_Def_TDD(p_InterCellInfo3_CellId, p_InterCellInfo3_FreqInfo, p_InterCellInfo3_CellParametersID, + p_InterCellInfo4_CellId, p_InterCellInfo4_FreqInfo, p_InterCellInfo4_CellParametersID)); + + template (value) SysInfoType11 cs_SIB11_Freq2_TDD ( integer p_ActiveCellInfo_CellId, + CellParametersID p_ActiveCellInfo_CellParametersID, + integer p_InterCellInfo2_CellId, + FrequencyInfo p_InterCellInfo2_FreqInfo, + CellParametersID p_InterCellInfo2_CellParametersID, + integer p_InterCellInfo3_CellId, + FrequencyInfo p_InterCellInfo3_FreqInfo, + CellParametersID p_InterCellInfo3_CellParametersID, + integer p_InterCellInfo4_CellId, + FrequencyInfo p_InterCellInfo4_FreqInfo, + CellParametersID p_InterCellInfo4_CellParametersID) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS) */ + cs_SIB11_Common_TDD (cs_NewIntraFreqCellList_Freq2_TDD(p_ActiveCellInfo_CellId, p_ActiveCellInfo_CellParametersID), + cs_NewInterFreqCellList_Freq2_TDD(p_InterCellInfo2_CellId, p_InterCellInfo2_FreqInfo, p_InterCellInfo2_CellParametersID, + p_InterCellInfo3_CellId, p_InterCellInfo3_FreqInfo, p_InterCellInfo3_CellParametersID, + p_InterCellInfo4_CellId, p_InterCellInfo4_FreqInfo, p_InterCellInfo4_CellParametersID)); + + // ============================================================================= + + template (value) SysInfoType11 cs_SIB11_Def_UG_TDD(integer p_ActiveCellInfo_CellId, + CellParametersID p_ActiveCellInfo_CellParametersID, + integer p_IntraCellInfo2_CellId, + CellParametersID p_IntraCellInfo2_CellParametersID, + integer p_InterCellInfo3_CellId, + FrequencyInfo p_InterCellInfo3_FreqInfo, + CellParametersID p_InterCellInfo3_CellParametersID, + integer p_InterCellInfo4_CellId, + FrequencyInfo p_InterCellInfo4_FreqInfo, + CellParametersID p_InterCellInfo4_CellParametersID, + integer p_GERANCell1_Id, + integer p_GERANCell1_Ncc, + integer p_GERANCell1_Bcc, + Frequency_Band p_GERANCell1_BandInd, + integer p_GERANCell1_Freq, + integer p_GERANCell2_Id, + integer p_GERANCell2_Ncc, + integer p_GERANCell2_Bcc, + Frequency_Band p_GERANCell2_BandInd, + integer p_GERANCell2_Freq, + integer p_GERANCell3_Id, + integer p_GERANCell3_Ncc, + integer p_GERANCell3_Bcc, + Frequency_Band p_GERANCell3_BandInd, + integer p_GERANCell3_Freq) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS) */ + cs_SIB11_Common_TDD (cs_NewIntraFreqCellList_Def_TDD(p_ActiveCellInfo_CellId, p_ActiveCellInfo_CellParametersID, + p_IntraCellInfo2_CellId, p_IntraCellInfo2_CellParametersID), + cs_NewInterFreqCellList_Def_TDD(p_InterCellInfo3_CellId, p_InterCellInfo3_FreqInfo, p_InterCellInfo3_CellParametersID, + p_InterCellInfo4_CellId, p_InterCellInfo4_FreqInfo, p_InterCellInfo4_CellParametersID), + cs_InterRATMeasurementSysInfo_UG(p_GERANCell1_Id, p_GERANCell1_Ncc, p_GERANCell1_Bcc, p_GERANCell1_BandInd, p_GERANCell1_Freq, + p_GERANCell2_Id, p_GERANCell2_Ncc, p_GERANCell2_Bcc, p_GERANCell2_BandInd, p_GERANCell2_Freq, + p_GERANCell3_Id, p_GERANCell3_Ncc, p_GERANCell3_Bcc, p_GERANCell3_BandInd, p_GERANCell3_Freq)); + + template (value) SysInfoType11 cs_SIB11_Freq2_UG_TDD(integer p_ActiveCellInfo_CellId, + CellParametersID p_ActiveCellInfo_CellParametersID, + integer p_InterCellInfo2_CellId, + FrequencyInfo p_InterCellInfo2_FreqInfo, + CellParametersID p_InterCellInfo2_CellParametersID, + integer p_InterCellInfo3_CellId, + FrequencyInfo p_InterCellInfo3_FreqInfo, + CellParametersID p_InterCellInfo3_CellParametersID, + integer p_InterCellInfo4_CellId, + FrequencyInfo p_InterCellInfo4_FreqInfo, + CellParametersID p_InterCellInfo4_CellParametersID, + integer p_GERANCell1_Id, + integer p_GERANCell1_Ncc, + integer p_GERANCell1_Bcc, + Frequency_Band p_GERANCell1_BandInd, + integer p_GERANCell1_Freq, + integer p_GERANCell2_Id, + integer p_GERANCell2_Ncc, + integer p_GERANCell2_Bcc, + Frequency_Band p_GERANCell2_BandInd, + integer p_GERANCell2_Freq, + integer p_GERANCell3_Id, + integer p_GERANCell3_Ncc, + integer p_GERANCell3_Bcc, + Frequency_Band p_GERANCell3_BandInd, + integer p_GERANCell3_Freq) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS) */ + cs_SIB11_Common_TDD (cs_NewIntraFreqCellList_Freq2_TDD(p_ActiveCellInfo_CellId, p_ActiveCellInfo_CellParametersID), + cs_NewInterFreqCellList_Freq2_TDD(p_InterCellInfo2_CellId, p_InterCellInfo2_FreqInfo, p_InterCellInfo2_CellParametersID, + p_InterCellInfo3_CellId, p_InterCellInfo3_FreqInfo, p_InterCellInfo3_CellParametersID, + p_InterCellInfo4_CellId, p_InterCellInfo4_FreqInfo, p_InterCellInfo4_CellParametersID), + cs_InterRATMeasurementSysInfo_UG(p_GERANCell1_Id, p_GERANCell1_Ncc, p_GERANCell1_Bcc, p_GERANCell1_BandInd, p_GERANCell1_Freq, + p_GERANCell2_Id, p_GERANCell2_Ncc, p_GERANCell2_Bcc, p_GERANCell2_BandInd, p_GERANCell2_Freq, + p_GERANCell3_Id, p_GERANCell3_Ncc, p_GERANCell3_Bcc, p_GERANCell3_BandInd, p_GERANCell3_Freq)); + + ////////////////////////////////////////////////////////////////////////////////////////////////// + // SIB 12 + ////////////////////////////////////////////////////////////////////////////////////////////////// + + // ============================================================================= + // Default system information block type 12, used in connected mode. To be used by cell A,B,C,G and H: + // - 5 intra cells frequency of the same frequency + // - 3 inter cell frequency of the same frequency. + // Similar to c_SIB11_def except that "detectedSetReportingQuantities" is not present and "timeToTrigger" = 0 + // ----------------------------------------------------------------------------- + template (value) SysInfoType12 cs_SIB12_Def := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + fach_MeasurementOccasionInfo := omit, + measurementControlSysInfo := { + use_of_HCS := { + hcs_not_used := { + cellSelectQualityMeasure := { + cpich_RSCP := { + intraFreqMeasurementSysInfo := omit, + interFreqMeasurementSysInfo := omit + } + }, + interRATMeasurementSysInfo := omit + } + }, + trafficVolumeMeasSysInfo := omit, + dummy := omit + }, + v4b0NonCriticalExtensions := omit + }; + + ////////////////////////////////////////////////////////////////////////////////////////////////// + // SIB 16 + ////////////////////////////////////////////////////////////////////////////////////////////////// + template (value) SysInfoType16 cs_SIB16_Def (SF512_AndPilot p_SF512_AndPilot):= + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + preDefinedRadioConfiguration := { + predefinedRB_Configuration := cs_PredefinedRB_CfgSIB16, + preDefTransChConfiguration := cs_PreDefTransChCfg_Speech12_2k, + preDefPhyChConfiguration := cs_PreDefPhyChCfgSIB16 ( p_SF512_AndPilot) + }, + v770NonCriticalExtensions := omit + }; + + template (value) PreDefPhyChConfiguration cs_PreDefPhyChCfgSIB16 (SF512_AndPilot p_SF512_AndPilot):= + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ul_DPCH_InfoPredef := cs_UL_DPCH_InfoPredefSIB16, + dl_CommonInformationPredef := cs_DL_CommonInformationPredefSIB16 ( p_SF512_AndPilot ) + }; + + template (value) UL_DPCH_InfoPredef cs_UL_DPCH_InfoPredefSIB16 := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ul_DPCH_PowerControlInfo := { + fdd := { + powerControlAlgorithm := { + algorithm1 := 1 + } + } + }, + modeSpecificInfo := { + fdd := { + tfci_Existence := false, + puncturingLimit := pl0_88 + } + } + }; + + template (value) DL_CommonInformationPredef cs_DL_CommonInformationPredefSIB16 (SF512_AndPilot p_SF512_AndPilot):= + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + dl_DPCH_InfoCommon := { + modeSpecificInfo := { + fdd := { + spreadingFactorAndPilot := p_SF512_AndPilot, + positionFixedOrFlexible := fixed, + tfci_Existence := false + } + } + } + }; + + template (value) TFCS_ReconfAdd_CtfcSize_Ctfc6Bit_Type cs_TFCS_ReconfAdd_Ctfc6Bit_SI(TFCS_ReconfAdd_CtfcSize_Ctfc6Bit_Type.ctfc6 p_Ctfc6) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ctfc6 := p_Ctfc6, + powerOffsetInformation := { + gainFactorInformation := { + signalledGainFactors := { + modeSpecificInfo := { + fdd := { + gainFactorBetaC := 0 + } + }, + gainFactorBetaD := 0, + referenceTFC_ID := omit + } + }, + powerOffsetPp_m := 0 + } + }; + + + template (value) PreDefTransChConfiguration cs_PreDefTransChCfg_Speech12_2k := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ul_CommonTransChInfo := { + tfc_Subset := {allowedTFC_List := {0, 1, 2, 3, 4, 5}}, + prach_TFCS := omit, + modeSpecificInfo := { + fdd := { + ul_TFCS := { + normalTFCI_Signalling := { + addition := { + ctfcSize := { + ctfc6Bit := { + cs_TFCS_ReconfAdd_Ctfc6Bit_SI(0), + cs_TFCS_ReconfAdd_Ctfc6Bit_SI(1), + cs_TFCS_ReconfAdd_Ctfc6Bit_SI(11), + cs_TFCS_ReconfAdd_Ctfc6Bit_SI(12), + cs_TFCS_ReconfAdd_Ctfc6Bit_SI(13), + cs_TFCS_ReconfAdd_Ctfc6Bit_SI(23) + } + } + } + } + } + } + } + }, + ul_AddReconfTrChInfoList := { + { + ul_TransportChannelType := dch, + transportChannelIdentity := tsc_UL_DCH1, + transportFormatSet := { + dedicatedTransChTFS := cs_DCH_81_TFS_UE + } + }, + { + ul_TransportChannelType := dch, + transportChannelIdentity := tsc_UL_DCH2, + transportFormatSet := { + dedicatedTransChTFS := cs_DCH_103_TFS_UE + } + }, + { + ul_TransportChannelType := dch, + transportChannelIdentity := tsc_UL_DCH3, + transportFormatSet := { + dedicatedTransChTFS := cs_DCH_60_TFS_UE + } + }, + { + ul_TransportChannelType := dch, + transportChannelIdentity := tsc_UL_DCH5, + transportFormatSet := { + dedicatedTransChTFS := cs_DCH_148_TFS_UE_UL + } + } + }, + dl_CommonTransChInfo := { + sccpch_TFCS := omit, + modeSpecificInfo := { + fdd := { + dl_Parameters := { + sameAsUL := NULL + } + } + } + }, + dl_TrChInfoList := { + { + dl_TransportChannelType := dch, + dl_transportChannelIdentity := tsc_DL_DCH1, + tfs_SignallingMode := { + sameAsULTrCH := { + ul_TransportChannelType := dch, + ul_TransportChannelIdentity := tsc_UL_DCH1 + } + }, + dch_QualityTarget := { + bler_QualityValue := 0 + }, + dummy := omit + }, + { + dl_TransportChannelType := dch, + dl_transportChannelIdentity := tsc_DL_DCH2, + tfs_SignallingMode := { + sameAsULTrCH := { + ul_TransportChannelType := dch, + ul_TransportChannelIdentity := tsc_UL_DCH2 + } + }, + dch_QualityTarget := { + bler_QualityValue := 0 + }, + dummy := omit + }, + { + dl_TransportChannelType := dch, + dl_transportChannelIdentity := tsc_DL_DCH3, + tfs_SignallingMode := { + sameAsULTrCH := { + ul_TransportChannelType := dch, + ul_TransportChannelIdentity := tsc_UL_DCH3 + } + }, + dch_QualityTarget := { + bler_QualityValue := 0 + }, + dummy := omit + }, + { + dl_TransportChannelType := dch, + dl_transportChannelIdentity := tsc_DL_DCH5, + tfs_SignallingMode := { + sameAsULTrCH := { + ul_TransportChannelType := dch, + ul_TransportChannelIdentity := tsc_UL_DCH5 + } + }, + dch_QualityTarget := { bler_QualityValue := 0}, + dummy := omit + } + } + }; + + //================================================================================================ + + template (value) UL_LogicalChannelMappings cs_UL_LogicalChannelMappings_OneChannel_DCH(TransportChannelIdentity p_TransportChannelIdentity, + LogicalChannelIdentity p_LogicalChannelIdentity, + MAC_LogicalChannelPriority p_LogicalChannelPriority) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + oneLogicalChannel := { + ul_TransportChannelType := { + dch := p_TransportChannelIdentity + }, + logicalChannelIdentity := p_LogicalChannelIdentity, + rlc_SizeList := { + configured := NULL + }, + mac_LogicalChannelPriority := p_LogicalChannelPriority + } + }; + + template (value) DL_LogicalChannelMappingList cs_DL_LogicalChannelMapping_OneChannel_DCH(TransportChannelIdentity p_TransportChannelIdentity, + LogicalChannelIdentity p_LogicalChannelIdentity) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + { + dl_TransportChannelType := { + dch := p_TransportChannelIdentity + }, + logicalChannelIdentity := p_LogicalChannelIdentity + } + }; + + template (value) RLC_InfoChoice cs_PredefinedRB_CfgSIB16_RLC_InfoChoice_RB0 := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rlc_Info := { + ul_RLC_Mode := { + ul_UM_RLC_Mode := { + transmissionRLC_Discard := { + timerBasedNoExplicit := dt100 + } + } + }, + dl_RLC_Mode := { + dl_UM_RLC_Mode := NULL + } + } + }; + + template (value) RLC_InfoChoice cs_PredefinedRB_CfgSIB16_RLC_InfoChoice_RB2_RB3_RB4 := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rlc_Info := { + ul_RLC_Mode := { + ul_AM_RLC_Mode := { + transmissionRLC_Discard := { + maxDAT_Retransmissions := { + maxDAT := dat4, + timerMRW := te100, + maxMRW := mm4 + } + }, + transmissionWindowSize := tw8, + timerRST := tr500, + max_RST := rst4, + pollingInfo := { + timerPollProhibit := tpp200, + timerPoll := tp200, + poll_PDU := omit, + poll_SDU := sdu1, + lastTransmissionPDU_Poll := true, + lastRetransmissionPDU_Poll := true, + pollWindow := pw99, + timerPollPeriodic := omit + } + } + }, + dl_RLC_Mode := { + dl_AM_RLC_Mode := { + inSequenceDelivery := true, + receivingWindowSize := rw8, + dl_RLC_StatusInfo := { + timerStatusProhibit := tsp200, + dummy := te200, + missingPDU_Indicator := true, + timerStatusPeriodic := omit + } + } + } + } + }; + + template (value) RLC_InfoChoice cs_PredefinedRB_CfgSIB16_RLC_InfoChoice_RB10_RB11_RB12 := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rlc_Info := { + ul_RLC_Mode := { + ul_TM_RLC_Mode := { + transmissionRLC_Discard := omit, + segmentationIndication := true + } + }, + dl_RLC_Mode := { + dl_TM_RLC_Mode := { + segmentationIndication := true + } + } + } + }; + + template (value) PredefinedRB_Configuration cs_PredefinedRB_CfgSIB16:= + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + re_EstablishmentTimer := useT315, + srb_InformationList := { + { + rb_Identity := tsc_RB1, + rlc_InfoChoice := cs_PredefinedRB_CfgSIB16_RLC_InfoChoice_RB0, + rb_MappingInfo := { + { + ul_LogicalChannelMappings := cs_UL_LogicalChannelMappings_OneChannel_DCH(tsc_UL_DCH5, tsc_UL_DCCH1, tsc_MAC_LogicalChannelPrio1), + dl_LogicalChannelMappingList := cs_DL_LogicalChannelMapping_OneChannel_DCH(tsc_DL_DCH5, tsc_DL_DCCH1) + } + } + }, + { + rb_Identity := tsc_RB2, + rlc_InfoChoice := cs_PredefinedRB_CfgSIB16_RLC_InfoChoice_RB2_RB3_RB4, + rb_MappingInfo := { + { + ul_LogicalChannelMappings := cs_UL_LogicalChannelMappings_OneChannel_DCH(tsc_UL_DCH5, tsc_UL_DCCH2, tsc_MAC_LogicalChannelPrio2), + dl_LogicalChannelMappingList := cs_DL_LogicalChannelMapping_OneChannel_DCH(tsc_DL_DCH5, tsc_DL_DCCH2) + } + } + }, + { + rb_Identity := tsc_RB3, + rlc_InfoChoice := cs_PredefinedRB_CfgSIB16_RLC_InfoChoice_RB2_RB3_RB4, + rb_MappingInfo := { + { + ul_LogicalChannelMappings := cs_UL_LogicalChannelMappings_OneChannel_DCH(tsc_UL_DCH5, tsc_UL_DCCH3, tsc_MAC_LogicalChannelPrio3), + dl_LogicalChannelMappingList := cs_DL_LogicalChannelMapping_OneChannel_DCH(tsc_DL_DCH5, tsc_DL_DCCH3) + } + } + }, + { + rb_Identity := tsc_RB4, + rlc_InfoChoice := cs_PredefinedRB_CfgSIB16_RLC_InfoChoice_RB2_RB3_RB4, + rb_MappingInfo := { + { + ul_LogicalChannelMappings := cs_UL_LogicalChannelMappings_OneChannel_DCH(tsc_UL_DCH5, tsc_UL_DCCH4, tsc_MAC_LogicalChannelPrio4), + dl_LogicalChannelMappingList := cs_DL_LogicalChannelMapping_OneChannel_DCH(tsc_DL_DCH5, tsc_DL_DCCH4) + } + } + } + }, + rb_InformationList := { + { + rb_Identity := tsc_RB10, + pdcp_Info := omit, + rlc_InfoChoice := cs_PredefinedRB_CfgSIB16_RLC_InfoChoice_RB10_RB11_RB12, + rb_MappingInfo := { + { + ul_LogicalChannelMappings := cs_UL_LogicalChannelMappings_OneChannel_DCH(tsc_UL_DCH1, tsc_UL_DTCH1, tsc_MAC_LogicalChannelPrio6), + dl_LogicalChannelMappingList := cs_DL_LogicalChannelMapping_OneChannel_DCH(tsc_DL_DCH1, tsc_DL_DTCH1) + } + } + }, + { + rb_Identity := tsc_RB11, + pdcp_Info := omit, + rlc_InfoChoice := cs_PredefinedRB_CfgSIB16_RLC_InfoChoice_RB10_RB11_RB12, + rb_MappingInfo := { + { + ul_LogicalChannelMappings := cs_UL_LogicalChannelMappings_OneChannel_DCH(tsc_UL_DCH2, tsc_UL_DTCH2, tsc_MAC_LogicalChannelPrio6), + dl_LogicalChannelMappingList := cs_DL_LogicalChannelMapping_OneChannel_DCH(tsc_DL_DCH2, tsc_DL_DTCH2) + } + } + }, + { + rb_Identity := tsc_RB12, + pdcp_Info := omit, + rlc_InfoChoice := cs_PredefinedRB_CfgSIB16_RLC_InfoChoice_RB10_RB11_RB12, + rb_MappingInfo := { + { + ul_LogicalChannelMappings := cs_UL_LogicalChannelMappings_OneChannel_DCH(tsc_UL_DCH3, tsc_UL_DTCH3, tsc_MAC_LogicalChannelPrio6), + dl_LogicalChannelMappingList := cs_DL_LogicalChannelMapping_OneChannel_DCH(tsc_DL_DCH3, tsc_DL_DTCH3) + } + } + } + } + }; + + ////////////////////////////////////////////////////////////////////////////////////////////////// + // SIB 18 + ////////////////////////////////////////////////////////////////////////////////////////////////// + + template (value) SysInfoType18 cs_SIB18_Def := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + idleModePLMNIdentities := { + plmnsOfIntraFreqCellsList := omit, + plmnsOfInterFreqCellsList := omit, + plmnsOfInterRATCellsList := omit + }, + connectedModePLMNIdentities := omit, + v6b0NonCriticalExtensions := omit + }; + + ////////////////////////////////////////////////////////////////////////////////////////////////// + // SIB 19 + ////////////////////////////////////////////////////////////////////////////////////////////////// + + template (value) EUTRA_FrequencyAndPriorityInfoList cs_Eutra_FreqAndPriList_OneEntry_Common ( EARFCN p_Earfcn, + template (omit) EUTRA_MeasurementBandwidth p_MeasurementBandwidth, + EutraFrequencyAndPriorityInfoPriorityValue_Type p_PriorityValue, + EutraFrequencyAndPriorityInfoQrxLevMin_Type p_QrxLevMinEutra, + EutraFrequencyAndPriorityInfoThreshXhigh_Type p_ThreshXhigh, + EutraFrequencyAndPriorityInfoThreshXlow_Type p_ThreshXlow, + template (omit) EUTRA_BlacklistedCellPerFreqList p_Eutra_blackListedCellList, + boolean p_EutraDetection ) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + { + earfcn := p_Earfcn, + measurementBandwidth := p_MeasurementBandwidth, + priority := p_PriorityValue, + qRxLevMinEUTRA := p_QrxLevMinEutra, + threshXhigh := p_ThreshXhigh, + threshXlow := p_ThreshXlow, + eutra_blackListedCellList := p_Eutra_blackListedCellList, + eutraDetection := p_EutraDetection + } + }; + + template (value) EUTRA_FrequencyAndPriorityInfoList cs_Eutra_FreqAndPriList_OneEntry_Def ( EARFCN p_Earfcn, + EUTRA_MeasurementBandwidth p_MeasurementBandwidth, + EutraFrequencyAndPriorityInfoPriorityValue_Type p_PriorityValue := 4 ) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_Eutra_FreqAndPriList_OneEntry_Common ( p_Earfcn, + p_MeasurementBandwidth, + p_PriorityValue, + -53, // @sic R5-120312 sic@ + 2, + 1, + omit, + true ); + + template (value) EUTRA_FrequencyAndPriorityInfo cs_EUTRA_FrequencyAndPriorityInfo(EARFCN p_E_Cell, + EUTRA_MeasurementBandwidth p_EUTRA_MeasurementBandwidth) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + earfcn := p_E_Cell, + measurementBandwidth := p_EUTRA_MeasurementBandwidth, //@sic R5s100871 sic@ + priority := 4, + qRxLevMinEUTRA := -53, //@sic R5s120321 sic@ + threshXhigh := 2, + threshXlow := 1, + eutra_blackListedCellList := omit, + eutraDetection := true + }; + + template (value) UTRA_PriorityInfoList cs_Utra_PriorityInfoList_Common(UtraServingCellPriorityValue_Type p_Priority_value, + UtraServingCellPrioritySearch1_Type p_S_PrioritySearch1, + template (omit) UtraServingCellPrioritySearch2_Type p_S_PrioritySearch2 := omit, + UtraServingCellthreshServingLow_Type p_ThreshServingLow) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + /* @sic R5s120964: new parameter p_S_PrioritySearch2 sic@ */ + utra_ServingCell := { + priority := p_Priority_value, + s_PrioritySearch1 := p_S_PrioritySearch1, + s_PrioritySearch2 := p_S_PrioritySearch2, + threshServingLow := p_ThreshServingLow + }, + utran_FDD_FrequencyList := omit, + utran_TDD_FrequencyList := omit + }; + + template (value) UTRA_PriorityInfoList cs_Utra_PriorityInfoList_Def(UtraServingCellPriorityValue_Type p_Priority_value := 3, + UtraServingCellPrioritySearch1_Type p_S_PrioritySearch1 := 0, + UtraServingCellthreshServingLow_Type p_ThreshServingLow := 0) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_Utra_PriorityInfoList_Common(p_Priority_value, p_S_PrioritySearch1, -, p_ThreshServingLow); + + template (value) SysInfoType19 cs_SIB19_Common(template (omit) UTRA_PriorityInfoList p_Utra_PriorityInfoList, + template (omit) GSM_PriorityInfoList p_Gsm_PriorityInfoList, + template (omit) EUTRA_FrequencyAndPriorityInfoList p_Eutra_FrequencyAndPriorityInfoList, + template (omit) SIB19_v920NonCriticalExtensions_Type p_NonCriticalExtensions := omit) := + { /* SIB19 acc. to 36.508 Table 4.4.4.1-1 */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + /* @sic R5s120964 sic@: new parameter p_NonCriticalExtensions */ + utra_PriorityInfoList := p_Utra_PriorityInfoList, + gsm_PriorityInfoList := p_Gsm_PriorityInfoList, + eutra_FrequencyAndPriorityInfoList := p_Eutra_FrequencyAndPriorityInfoList, + v920NonCriticalExtensions := p_NonCriticalExtensions /* @sic R5s110176 Baseline Moving sic@ */ + }; + + + template (value) SysInfoType19 cs_SIB19_Def (template (omit) EUTRA_FrequencyAndPriorityInfoList p_Eutra_FrequencyAndPriorityInfoList) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_SIB19_Common ( cs_Utra_PriorityInfoList_Def, omit, p_Eutra_FrequencyAndPriorityInfoList ); + + template (value) SysInfoType19 cds_SIB19_Qbased (template (omit) EUTRA_FrequencyAndPriorityInfoList p_Eutra_FrequencyAndPriorityInfoList) + modifies cs_SIB19_Def := + { // SIB19 acc. to 36.508 Table 4.4.4.1-1 with condition QBASED + /* @status APPROVED (LTE_A, LTE_IRAT, POS) */ + v920NonCriticalExtensions := { + sysInfoType19_v920ext:= { + utra_PriorityInfoList_v920ext:={ threshServingLow2:=7}, + eutra_FrequencyAndPriorityInfoList_v920ext := {{ + qqualMinEUTRA := -20, + threshXhigh2 := 5, + threshXlow2:= 5 + } + } + }, + va80NonCriticalExtensions := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + } + }; + + template (value) SysInfoType19 cs_SIB19_UtraAndOneEutraEntry ( template (value) UTRA_PriorityInfoList p_Utra_PriorityInfoList, + template (value) EUTRA_FrequencyAndPriorityInfoList p_Eutra_FrequencyAndPriorityInfoList ) := + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_SIB19_Common ( p_Utra_PriorityInfoList, omit, p_Eutra_FrequencyAndPriorityInfoList ); + + template (value) MasterInformationBlock cds_MIB_Csg (template (value) PLMN_Identity p_PLMN) + modifies cs_MIB_Def := + { /* @status APPROVED (LTE_IRAT) */ + v690NonCriticalExtensions := { + masterInformationBlock_v690ext := { + multiplePLMN_List := omit + }, + v6b0NonCriticalExtensions := { + masterInformationBlock_v6b0ext := { + extSIBTypeInfoSchedulingInfo_List := omit + }, + v860NonCriticalExtensions := { + masterInformationBlock_v860ext := { + extSIBTypeInfoSchedulingInfo_List := omit, + extGANSS_SIBTypeInfoSchedulingInfoList := omit, + csg_Indicator := true_ + }, + nonCriticalExtensions := omit + } + } + } + }; + +} diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_Templates.ttcn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_Templates.ttcn new file mode 100644 index 0000000..93de7c9 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_Templates.ttcn @@ -0,0 +1,2712 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 16:27:54 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12163 $ +/******************************************************************************/ + +module UTRAN_RRC_Templates { + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_CommonDefs all; + import from CommonDefs all; + import from UTRAN_RRC_CommonTemplates all; + import from UTRAN_Parameters all; + import from Parameters all; + import from TestcaseProperties all; + import from UTRANGERAN_CommonFunctions all; + + // ----------------------------------------------------------------------------- + + template (value) PLMN_Identity cs_UTRAN_HPLMN_Def := + { /* This is the same as the EUTRA template, but using a different ASN.1 definition */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + mcc := {0,0,1}, + mnc := {0,1} + }; + + // ----------------------------------------------------------------------------- + + template (value) RRCConnectionRelease_v4d0NonCriticalExtensions_Type cs_RRCConnectionRelease_NonCriticalExtensions_EutraReDirection(template (value) EUTRA_TargetFreqInfoList p_EUTRA_TargetFreqInfoList) := + { /* @status APPROVED (LTE_IRAT) */ + rrcConnectionRelease_r4_add_ext := omit, + v690NonCriticalExtensions := { + rrcConnectionRelease_v690ext := { + redirectionInfo_v690ext := omit + }, + v770NonCriticalExtensions := { + rrcConnectionRelease_v770ext := { + ueMobilityStateIndicator := omit + }, + v860NonCriticalExtensions := { + rrcConnectionRelease_v860ext := { + redirectionInfo := { + interRATInfo := { + eutra := { + eutra_TargetFreqInfoList := p_EUTRA_TargetFreqInfoList + } + } + } + }, + va40NonCriticalExtensions := omit /* @sic R5s120178 BASELINE MOVING 2012 (nonCriticalExtensions renamed to va40NonCriticalExtensions) sic@ */ + } + } + } + }; + + template (value) EUTRA_TargetFreqInfo cs_EUTRA_TargetFreqInfo(EARFCN p_DlEUTRACarrierFreq) := + { /* @status APPROVED (LTE_IRAT) */ + dlEUTRACarrierFreq := p_DlEUTRACarrierFreq, + eutraBlacklistedCellPerFreqList := omit + }; + + + template (value) FrequencyInfo cs_FreqInfo_ULDL_FDD(template (omit) UARFCN p_UarfcnUL := omit, + UARFCN p_UarfcnDL) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + modeSpecificInfo := { + fdd := { + uarfcn_UL := p_UarfcnUL, + uarfcn_DL := p_UarfcnDL + } + } + }; + + + template (value) FrequencyInfo cs_FreqInfo_FDD(UARFCN p_UarfcnDL) := + /* Absence of the UL UARFCN is equivalent to applying the default duplex distance defined for the operating frequency. + According to RAN2 only default duplex distance is used */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_FreqInfo_ULDL_FDD(-, p_UarfcnDL); + + template (value) FrequencyInfo cs_FreqInfo_TDD(UARFCN p_UarfcnNt) := + { /* Absence of the UL UARFCN is equivalent to applying the default duplex distance defined for the operating frequency. + According to RAN2 only default duplex distance is used */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + modeSpecificInfo := { + tdd := { + uarfcn_Nt := p_UarfcnNt + } + } + }; + + // ----------------------------------------------------------------------------- + + template (value) U_RNTI cs_U_RNTI_Def := + { /* Default U_RNTI identity */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + srnc_Identity := px_SRNC_Id, + s_RNTI := px_SRNTI + }; + + + // --------------------------------------------------------------------------- + + template (value) RB_ActivationTimeInfoList cs_RB_ActTimeInfoListSRBs(RLC_SequenceNumber p_RLC_SN1, + RLC_SequenceNumber p_RLC_SN2, + RLC_SequenceNumber p_RLC_SN3, + RLC_SequenceNumber p_RLC_SN4) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_RB_ActTimeInfo(tsc_RB1, p_RLC_SN1), + cs_RB_ActTimeInfo(tsc_RB2, p_RLC_SN2), + cs_RB_ActTimeInfo(tsc_RB3, p_RLC_SN3), + cs_RB_ActTimeInfo(tsc_RB4, p_RLC_SN4) + }; + + template (value) RB_ActivationTimeInfoList cs_RB_ActTimeInfoListSRBs_20(RLC_SequenceNumber p_RLC_SN1, + RLC_SequenceNumber p_RLC_SN2, + RLC_SequenceNumber p_RLC_SN3, + RLC_SequenceNumber p_RLC_SN4, + RLC_SequenceNumber p_RLC_SN20) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_RB_ActTimeInfo(tsc_RB1, p_RLC_SN1), + cs_RB_ActTimeInfo(tsc_RB2, p_RLC_SN2), + cs_RB_ActTimeInfo(tsc_RB3, p_RLC_SN3), + cs_RB_ActTimeInfo(tsc_RB4, p_RLC_SN4), + cs_RB_ActTimeInfo(tsc_RB20, p_RLC_SN20) + }; + + template (value) RB_ActivationTimeInfoList cs_RB_ActTimeInfoListSRBs_20_21(RLC_SequenceNumber p_RLC_SN1, + RLC_SequenceNumber p_RLC_SN2, + RLC_SequenceNumber p_RLC_SN3, + RLC_SequenceNumber p_RLC_SN4, + RLC_SequenceNumber p_RLC_SN20, + RLC_SequenceNumber p_RLC_SN21) := + { + cs_RB_ActTimeInfo(tsc_RB1, p_RLC_SN1), + cs_RB_ActTimeInfo(tsc_RB2, p_RLC_SN2), + cs_RB_ActTimeInfo(tsc_RB3, p_RLC_SN3), + cs_RB_ActTimeInfo(tsc_RB4, p_RLC_SN4), + cs_RB_ActTimeInfo(tsc_RB20, p_RLC_SN20), + cs_RB_ActTimeInfo(tsc_RB21, p_RLC_SN21) + }; + + template (value) RB_ActivationTimeInfoList cs_RB_ActTimeInfoListSRBs_20_22(RLC_SequenceNumber p_RLC_SN1, + RLC_SequenceNumber p_RLC_SN2, + RLC_SequenceNumber p_RLC_SN3, + RLC_SequenceNumber p_RLC_SN4, + RLC_SequenceNumber p_RLC_SN20, + RLC_SequenceNumber p_RLC_SN22) := + { + cs_RB_ActTimeInfo(tsc_RB1, p_RLC_SN1), + cs_RB_ActTimeInfo(tsc_RB2, p_RLC_SN2), + cs_RB_ActTimeInfo(tsc_RB3, p_RLC_SN3), + cs_RB_ActTimeInfo(tsc_RB4, p_RLC_SN4), + cs_RB_ActTimeInfo(tsc_RB20, p_RLC_SN20), + cs_RB_ActTimeInfo(tsc_RB22, p_RLC_SN22) + }; + + template (value) RB_ActivationTimeInfoList cs_RB_ActTimeInfoListSRBs_21(RLC_SequenceNumber p_RLC_SN1, + RLC_SequenceNumber p_RLC_SN2, + RLC_SequenceNumber p_RLC_SN3, + RLC_SequenceNumber p_RLC_SN4, + RLC_SequenceNumber p_RLC_SN21) := + { + cs_RB_ActTimeInfo(tsc_RB1, p_RLC_SN1), + cs_RB_ActTimeInfo(tsc_RB2, p_RLC_SN2), + cs_RB_ActTimeInfo(tsc_RB3, p_RLC_SN3), + cs_RB_ActTimeInfo(tsc_RB4, p_RLC_SN4), + cs_RB_ActTimeInfo(tsc_RB21, p_RLC_SN21) + }; + + template (value) RB_ActivationTimeInfoList cs_RB_ActTimeInfoListSRBs_22(RLC_SequenceNumber p_RLC_SN1, + RLC_SequenceNumber p_RLC_SN2, + RLC_SequenceNumber p_RLC_SN3, + RLC_SequenceNumber p_RLC_SN4, + RLC_SequenceNumber p_RLC_SN22) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_RB_ActTimeInfo(tsc_RB1, p_RLC_SN1), + cs_RB_ActTimeInfo(tsc_RB2, p_RLC_SN2), + cs_RB_ActTimeInfo(tsc_RB3, p_RLC_SN3), + cs_RB_ActTimeInfo(tsc_RB4, p_RLC_SN4), + cs_RB_ActTimeInfo(tsc_RB22, p_RLC_SN22) + }; + + template (value) RB_ActivationTimeInfoList cs_RB_ActTimeInfoListSRBs_25(RLC_SequenceNumber p_RLC_SN1, + RLC_SequenceNumber p_RLC_SN2, + RLC_SequenceNumber p_RLC_SN3, + RLC_SequenceNumber p_RLC_SN4, + RLC_SequenceNumber p_RLC_SN25) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_RB_ActTimeInfo(tsc_RB1, p_RLC_SN1), + cs_RB_ActTimeInfo(tsc_RB2, p_RLC_SN2), + cs_RB_ActTimeInfo(tsc_RB3, p_RLC_SN3), + cs_RB_ActTimeInfo(tsc_RB4, p_RLC_SN4), + cs_RB_ActTimeInfo(tsc_RB25, p_RLC_SN25) + }; + + template (value) RB_ActivationTimeInfoList cs_RB_ActTimeInfoListSRBs_25_17(RLC_SequenceNumber p_RLC_SN1, + RLC_SequenceNumber p_RLC_SN2, + RLC_SequenceNumber p_RLC_SN3, + RLC_SequenceNumber p_RLC_SN4, + RLC_SequenceNumber p_RLC_SN25, + RLC_SequenceNumber p_RLC_SN17) := + { + cs_RB_ActTimeInfo(tsc_RB1, p_RLC_SN1), + cs_RB_ActTimeInfo(tsc_RB2, p_RLC_SN2), + cs_RB_ActTimeInfo(tsc_RB3, p_RLC_SN3), + cs_RB_ActTimeInfo(tsc_RB4, p_RLC_SN4), + cs_RB_ActTimeInfo(tsc_RB25, p_RLC_SN25), + cs_RB_ActTimeInfo(tsc_RB17, p_RLC_SN17) + }; + + template (value) RB_ActivationTimeInfoList cs_RB_ActTimeInfoList25(RLC_SequenceNumber p_RLC_SN25) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RB_ActTimeInfo(tsc_RB25, p_RLC_SN25) + }; + + template (value) RB_ActivationTimeInfoList cs_RB_ActTimeInfoList20(RLC_SequenceNumber p_RLC_SN20) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_RB_ActTimeInfo(tsc_RB20, p_RLC_SN20) + }; + + // --------------------------------------------------------------------------- + + template (value) IntegrityProtectionModeInfo cs_IntegrityProtectStart_r99(bitstring p_Integrityprotnumber, + IntegrityProtectionAlgorithm p_Alg) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + integrityProtectionModeCommand := { + startIntegrityProtection := { + integrityProtInitNumber := p_Integrityprotnumber + } + }, + integrityProtectionAlgorithm := p_Alg + }; + + template (value) IntegrityProtectionModeInfo_r7 cs_IntegrityProtectStart(bitstring p_Integrityprotnumber, + IntegrityProtectionAlgorithm_r7 p_Alg) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + integrityProtectionModeCommand := { + startIntegrityProtection := { + integrityProtInitNumber := p_Integrityprotnumber + } + }, + integrityProtectionAlgorithm := p_Alg + }; + + template (value) CipheringModeCommand cs_Null_CipheringModeCommand := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + dummy := NULL + }; + + template (value) CipheringModeCommand_r7 cs_CipheringModeCmdOn(CipheringAlgorithm_r7 p_CipheringAlgorithm) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + startRestart := p_CipheringAlgorithm + }; + + template (value) IntegrityCheckInfo cs_IntegrityCheckInfo0 := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + messageAuthenticationCode := '00000000000000000000000000000000'B, + rrc_MessageSequenceNumber := 0 + }; + + //---------------------------------------------------------------------------- + + template (value) PICH_Info cs_PichInfo_FDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + fdd := { + channelisationCode256 := tsc_PICH1_ChC, + pi_CountPerFrame := e18, + sttd_Indicator := false + } + }; + + // ----------------------------------------------------------------------------- + + template (value) CommonTransChTFS_LCR cs_RACH_TFS_UE_TDD := + { + tti := { + tti10 := { + { + rlc_Size := { + tdd := { + commonTDD_Choice := { + bitModeRLC_SizeInfo := { + sizeType2 := { + part1 := 5, + part2 := 2 + } + } + } + } + }, + numberOfTbSizeList := { + { + one := NULL + } + }, + logicalChannelList := { + configured := NULL + } + } + } + }, + semistaticTF_Information := { + channelCodingType := { + convolutional := half + }, + rateMatchingAttribute := 110, + crc_Size := crc16 + } + }; + + // ----------------------------------------------------------------------------- + + template (value) UL_DPCH_PowerControlInfo_r7 cs_UL_DPCH_PowerControlInfo_r7_FDD(template (omit) DeltaACK p_DeltaACK := omit, + template (omit) DeltaNACK p_DeltaNACK := omit, + template (omit) ACK_NACK_repetitionFactor p_ACK_NACK_RepetitionFactor := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + fdd := { + dpcch_PowerOffset := tsc_DPCCH_PowerOffset, + pc_Preamble := 1, + sRB_delay := 7, + powerControlAlgorithm := { + algorithm1 := tsc_TpcStepSize_FDD + }, + deltaACK := p_DeltaACK, + deltaNACK := p_DeltaNACK, + ack_NACK_repetition_factor := p_ACK_NACK_RepetitionFactor, + harq_Preamble_Mode := 0 + } + }; + + template (value) UL_DPCH_PowerControlInfo_r7 cs_UL_DPCH_PowerControlInfo_r7_TDD(UL_TargetSIR p_UL_TargetSIR := tsc_UL_TargetSIR) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tdd := { + ul_TargetSIR := p_UL_TargetSIR, + ul_OL_PC_Signalling := { + individuallySignalled := { + tddOption := { + tdd128 := { + beaconPLEst := omit, + tpc_StepSize := tsc_TPC_StepSize_TDD // 1 + } + }, + primaryCCPCH_TX_Power := tsc_PrimaryCCPCH_TX_Power // 12 + } + } + } + }; + + template (value) UL_TimingAdvanceControl_r7 cs_TDD_UL_TimingAdvanceControl_r7(template (omit) SynchronisationParameters_r4 p_SynchronisationParameters := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + enabled := { + tddOption := { + tdd128 := { + ul_SynchronisationParameters := { + stepSize := tsc_SS_StepSize_TDD, + frequency := tsc_SS_Frequency + }, + synchronisationParameters := p_SynchronisationParameters + } + } + } + }; + + template (value) UL_CCTrCH_r7_TddOption_Type cs_CommonTimeslotInfo_TDD128(TimeslotNumber_LCR_r4 p_TimeslotNumber_UL, + integer p_MidambleConfiguration := 8, //@sic R5s140007 sic@ + UL_TS_ChannelisationCode p_UL_TS_ChannelisationCode := tsc_UL_DPCH1_ChC_64k_PS) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tdd128 := { + ul_CCTrCH_TimeslotsCodes := { + dynamicSFusage := false, + firstIndividualTimeslotInfo := { + timeslotNumber := p_TimeslotNumber_UL, + tfci_Existence := true, + midambleShiftAndBurstType := { + midambleAllocationMode := {defaultMidamble := NULL}, + midambleConfiguration := p_MidambleConfiguration + }, + modulation := mod_QPSK, + ss_TPC_Symbols := one, + additionalSS_TPC_Symbols := omit + }, + ul_TS_ChannelisationCodeList := { + { + ul_TS_Channelisation_Code := p_UL_TS_ChannelisationCode, + plcch_info := omit + } + }, + moreTimeslots := { noMore := NULL } + } + } + }; + + template (value) UL_CCTrCH_r7 cs_UL_CCTrCH_TDD_r7(TFCS_IdentityPlain p_TFCS_ID := 1, + UL_TargetSIR p_UL_TargetSIR, + template (omit) ActivationTime p_ActivationTime, + TFCI_Coding p_TFCI_Coding, + PuncturingLimit p_PuncturingLimit, + template (value) UL_CCTrCH_r7_TddOption_Type p_TddOption) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tfcs_ID := p_TFCS_ID, + ul_TargetSIR := p_UL_TargetSIR, + timeInfo := { + activationTime := p_ActivationTime, + durationTimeInfo := omit + }, + commonTimeslotInfo := { + secondInterleavingMode := frameRelated, + tfci_Coding := p_TFCI_Coding, + puncturingLimit := p_PuncturingLimit, + repetitionPeriodAndLength := {repetitionPeriod1:= NULL} + }, + tddOption := p_TddOption ///cs_CommonTimeslotInfo_TDD128(p_TimeslotNumber_UL, -, p_UL_TS_ChannelisationCode) + }; + + // ----------------------------------------------------------------------------- + + template (value) UL_DPCH_Info_r7 cs_UL_DPCH_Info_FDD(SpreadingFactor p_SprdFct, + PuncturingLimit p_PuncLimit, + UL_ScramblingCode p_UL_ScramblingCode, + template (value) UL_DPCH_PowerControlInfo_r7 p_UL_DPCH_PowerControlInfo_r7 := cs_UL_DPCH_PowerControlInfo_r7_FDD) := + { /* According to condition A3 in TS 34.108 clause 9.1.1: Uplink DPCH info */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + /* @sic R5-123750 sic@ */ + ul_DPCH_PowerControlInfo := p_UL_DPCH_PowerControlInfo_r7, + modeSpecificInfo := { + fdd := { + scramblingCodeType := longSC, + scramblingCode := p_UL_ScramblingCode, + dpdchPresence := { + present_ := { + numberOfDPDCH := omit, // DEFAULT: 1 + spreadingFactor := p_SprdFct, + tfci_Existence := true, + numberOfFBI_Bits := omit, + numberOfTPC_Bits := omit, + puncturingLimit := p_PuncLimit + } + } + } + } + }; + + template (value) UL_DPCH_Info_r7 cs_UL_DPCH_InfoACK_NACK_FDD(SpreadingFactor p_SprdFct, + PuncturingLimit p_PuncLimit, + UL_ScramblingCode p_UL_ScramblingCode, + template (omit) DeltaACK p_DeltaACK := omit, + template (omit) DeltaNACK p_DeltaNACK := omit, + template (omit) ACK_NACK_repetitionFactor p_ACK_NACK_RepetitionFactor := omit) := + /* @status APPROVED (UTRAN) */ + cs_UL_DPCH_Info_FDD(p_SprdFct, p_PuncLimit, p_UL_ScramblingCode, cs_UL_DPCH_PowerControlInfo_r7_FDD(p_DeltaACK, p_DeltaNACK, p_ACK_NACK_RepetitionFactor)); + + template (value) UL_DPCH_Info_r7 cs_UL_DPCH_13_6_StandAlone_FDD(UL_ScramblingCode p_UL_ScramblingCode) := cs_UL_DPCH_Info_FDD(tsc_UL_DPDCH_SF_SRB, pl1, p_UL_ScramblingCode); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + template (value) UL_DPCH_Info_r7 cs_UL_DPCH_13_6_StandAlone_TDD := cs_UL_DPCH_Info_1TS_TDD(1, omit, tfci_bits_8, pl0_64,1, tsc_UL_DPCH1_ChC_SRB_13_6); /* @sic R5s130356 sic@ */ + template (value) UL_DPCH_Info_r7 cs_UL_DPCH_3_4_StandAlone_TDD := cs_UL_DPCH_Info_1TS_TDD(1, omit, tfci_bits_8, pl1,1, tsc_UL_DPCH1_ChC_SRB_3_4); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN); @sic R5s120750 sic@ */ + + template (value) UL_DPCH_Info_r7 cs_UL_DPCH_Info_1TS_TDD(TFCS_IdentityPlain p_TFCS_ID, + template (omit) ActivationTime p_ActivationTime, + TFCI_Coding p_TFCI_Coding, + PuncturingLimit p_PuncturingLimit, + TimeslotNumber_LCR_r4 p_TimeslotNumber_UL, + UL_TS_ChannelisationCode p_UL_TS_ChannelisationCode, + template (omit) SynchronisationParameters_r4 p_SynchronisationParameters := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + /* p_SynchronisationParameters .. to be used for handover (omit in other cases) */ + /* @sic R5-123750 sic@ */ + ul_DPCH_PowerControlInfo := cs_UL_DPCH_PowerControlInfo_r7_TDD(tsc_UL_TargetSIR), + modeSpecificInfo := { + tdd := { + ul_TimingAdvance := cs_TDD_UL_TimingAdvanceControl_r7(p_SynchronisationParameters), + ul_CCTrCHList := { + cs_UL_CCTrCH_TDD_r7(p_TFCS_ID, tsc_UL_TargetSIR, p_ActivationTime, p_TFCI_Coding, p_PuncturingLimit, cs_CommonTimeslotInfo_TDD128(p_TimeslotNumber_UL, -, p_UL_TS_ChannelisationCode)) + }, + ul_CCTrCHListToRemove := omit + } + } + }; + + // ----------------------------------------------------------------------------- + + template (value) UL_CommonTransChInfo_r4 cs_UL_CommTrChInfoDCCH_Common_FDD(template (value) TFCS p_UL_TFCS) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tfc_Subset := omit, + prach_TFCS := omit, + modeSpecificInfo := { + fdd := { + ul_TFCS := p_UL_TFCS + } + }, + tfc_SubsetList := omit + }; + + template (value) UL_CommonTransChInfo_r4 cs_UL_CommTrChInfoDCCH_13_6k_r4_FDD := cs_UL_CommTrChInfoDCCH_Common_FDD(cs_TFCS_Cmpl0_1_Tx_FDD(cs_PowerOffsetInfoBelow64k)); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + template (value) UL_CommonTransChInfo_r4 cs_UL_CommTrChInfoDCCH_Common_TDD(template (value) TFCS p_UL_TFCS) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, POS, SSNITZ, UTRAN) */ + tfc_Subset := omit, + prach_TFCS := omit, + modeSpecificInfo := { + tdd := { + individualUL_CCTrCH_InfoList := { + { + ul_TFCS_Identity := { + tfcs_ID := 1, + sharedChannelIndicator := false + }, + ul_TFCS := p_UL_TFCS, + tfc_Subset := {fullTFCS := NULL} + } + } + } + }, + tfc_SubsetList := omit + }; + + template (value) UL_CommonTransChInfo_r4 cs_UL_CommTrChInfoDCCH_3_4k_r4_TDD := cs_UL_CommTrChInfoDCCH_Common_TDD(cs_TFCS_Cmpl0_1_Tx_TDD); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + // ----------------------------------------------------------------------------- + + template (value) UL_AddReconfTransChInformation_r8 cs_UL_AddReconfTransChInfoDCCH(integer p_TransportChannelId, + template (value) DedicatedTransChTFS p_DedicatedTransChTFS) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + dch_usch := { + ul_TransportChannelType := dch, + transportChannelIdentity := p_TransportChannelId, + transportFormatSet := { + dedicatedTransChTFS := p_DedicatedTransChTFS + } + } + }; + + template (value) UL_AddReconfTransChInfoList_r8 cs_UL_AddReconfTransChInfoListDCCH_3_4k_r8 := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_UL_AddReconfTransChInfoDCCH(tsc_UL_DCH5, cs_DCH_148_TFS_UE_UL) + }; + + template (value) UL_AddReconfTransChInfoList_r8 cs_UL_AddReconfTransChInfoListDCCH_3_4k_r8_TDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + // @sic R5s120750 sic@ + cs_UL_AddReconfTransChInfoDCCH(tsc_UL_DCH5, cs_DCH_148_TFS_DL_TDD_UE) + }; + + template (value) UL_AddReconfTransChInfoList_r8 cs_UL_AddReconfTransChInfoListDCCH_13_6k_r8 := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_UL_AddReconfTransChInfoDCCH(tsc_UL_DCH5, cs_DCH_148_TTI_10_TFS_UE) + }; + + // ----------------------------------------------------------------------------- + + template (value) DL_CommonTransChInfo_r4 cs_DL_CommonTransChInfoSameAsUL_r4_FDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + sccpch_TFCS := omit, + modeSpecificInfo := { + fdd := { + dl_Parameters := { + sameAsUL := NULL + } + } + } + }; + + template (value) DL_CommonTransChInfo_r4 cs_DL_CommonTransChInfoDCH_FDD(template (value) TFCS p_Tfcs) := + { /* Values according to condition A3 in TS 34.108 clause 9.1.1: DL Transport channel information common for all transport channel */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + sccpch_TFCS := omit, + modeSpecificInfo := { + fdd := { + dl_Parameters := { + dl_DCH_TFCS := { + tfcs := p_Tfcs + } + } + } + } + }; + + template (value) DL_CommonTransChInfo_r4 cs_DL_CommonTransChInfoSameAsUL_r4_TDD := + { /* Values according to condition A3 in TS 34.108 clause 9.1.1: DL Transport channel information common for all transport channel */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + sccpch_TFCS := omit, + modeSpecificInfo := { + tdd := { + individualDL_CCTrCH_InfoList := { + { + dl_TFCS_Identity := { + tfcs_ID := 1, + sharedChannelIndicator := false + }, + tfcs_SignallingMode := { + sameAsUL := { + tfcs_ID := 1, + sharedChannelIndicator := false + } + } + } + } + } + } + }; + + template (value) DL_CommonTransChInfo_r4 cs_DL_CommonTransChInfoDCH_TDD(template (value) TFCS p_Tfcs) := + { /* Values according to condition A3 in TS 34.108 clause 9.1.1: DL Transport channel information common for all transport channel */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + sccpch_TFCS := omit, + modeSpecificInfo := { + tdd := { + individualDL_CCTrCH_InfoList := {{ + dl_TFCS_Identity := { + tfcs_ID := 1, + sharedChannelIndicator := false + }, + tfcs_SignallingMode := { + explicit_config := p_Tfcs + } + } + } + } + } + }; + + // ----------------------------------------------------------------------------- + + template (value) QualityTarget cs_QualityTarget(BLER_QualityValue p_QualityValue := -20) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + bler_QualityValue := p_QualityValue // Actual Value = IE Value * 0.1 + }; + + // ----------------------------------------------------------------------------- + + template (value) DL_AddReconfTransChInformation_r7 cs_DL_AddReconfTransChInfo_r7(TransportChannelIdentity p_DlTrChId, + TransportChannelIdentity p_UlTrChId, + template (omit) QualityTarget p_QualityTarget := cs_QualityTarget) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + dl_TransportChannelType := { + dch := p_DlTrChId + }, + tfs_SignallingMode := { + sameAsULTrCH := { + ul_TransportChannelType := dch, + ul_TransportChannelIdentity := p_UlTrChId + } + }, + dch_QualityTarget := p_QualityTarget + }; + + template (value) DL_AddReconfTransChInfoList_r7 cs_DL_AddReconfTransChInfoListDCCH_SRB_r7 := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_DL_AddReconfTransChInfo_r7(tsc_DL_DCH5, tsc_UL_DCH5) + }; + + // ----------------------------------------------------------------------------- + + template (value) RB_MappingOption_r8 cs_RB_MappingOptionSRB_DCH_DCH_r8(LogicalChannelIdentity p_LogicalChannelIdUL, + MAC_LogicalChannelPriority p_LogicalChannelPriority, + LogicalChannelIdentity p_LogicalChannelIdDL) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ul_LogicalChannelMappings := { + oneLogicalChannel := { + ul_TrCH_Type := { + dch_rach_usch := { + ul_TransportChannelType := { + dch := tsc_UL_DCH5 + }, + logicalChannelIdentity := p_LogicalChannelIdUL, + rlc_SizeList := { + configured := NULL + } + } + }, + mac_LogicalChannelPriority := p_LogicalChannelPriority + } + }, + dl_LogicalChannelMappingList := { + { + dl_TransportChannelType := { + dch := tsc_DL_DCH5 + }, + logicalChannelIdentity := p_LogicalChannelIdDL + } + } + }; + + template (value) RB_MappingOption_r8 cs_RB_MappingOptionSRB_RACH_FACH_r8(LogicalChannelIdentity p_LogicalChannelIdUL, + MAC_LogicalChannelPriority p_LogicalChannelPriority, + LogicalChannelIdentity p_LogicalChannelIdDL) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ul_LogicalChannelMappings := { + oneLogicalChannel := { + ul_TrCH_Type := { + dch_rach_usch := { + ul_TransportChannelType := { + rach := NULL + }, + logicalChannelIdentity := p_LogicalChannelIdUL, + rlc_SizeList := { + explicitList := { + { + rlc_SizeIndex := 1 + } + } + } + } + }, + mac_LogicalChannelPriority := p_LogicalChannelPriority + } + }, + dl_LogicalChannelMappingList := { + { + dl_TransportChannelType := { + fach := NULL + }, + logicalChannelIdentity := p_LogicalChannelIdDL + } + } + }; + + // ----------------------------------------------------------------------------- + + template (value) DL_InformationPerRL_List_r7 cs_DL_InformationPerRL_r7_FDD(PrimaryScramblingCode p_ScrmbCode, + SF512_AndCodeNumber p_Sf, + SecondaryScramblingCode p_SecondaryScramblingCode) := + { /* According to condition A3 in TS 34.108 clause 9.1.1: Downlink information for each radio link list */ + /* @status APPROVED (LTE_A, LTE_IRAT, SSNITZ, UTRAN) */ + { + modeSpecificInfo := { + fdd := { + primaryCPICH_Info := { + primaryScramblingCode := p_ScrmbCode + }, + servingHSDSCH_RL_indicator := false, + servingEDCH_RL_indicator := false + } + }, + dl_dpchInfo := { + dl_DPCH_InfoPerRL := cs_DL_DPCH_InfoPerRL_SRB_FDD(p_Sf, p_SecondaryScramblingCode) + }, + e_AGCH_Information := omit, + modeSpecificInfo2 := { + fdd := { + e_HICH_Info := omit, + e_RGCH_Info := omit + } + }, + cell_id := omit + } + }; + + template (value) DL_InformationPerRL_List_r7 cs_DL_InformationPerRL_r7_TDD(CellParametersID p_CellParametersID, + template (value) DL_DPCH_InfoPerRL_r7 p_DL_DPCH_InfoPerRL_r7) := + { /* According to condition A3 in TS 34.108 clause 9.1.1: Downlink information for each radio link list */ + /* @status APPROVED (LTE_A, LTE_IRAT, SSNITZ, UTRAN) */ + { + modeSpecificInfo := { + tdd := { + tdd := { + tddOption := { + tdd128 := { + tstd_Indicator := false + } + }, + cellParametersID := p_CellParametersID, + sctd_Indicator := false + } + } + }, + dl_dpchInfo := { + dl_DPCH_InfoPerRL := p_DL_DPCH_InfoPerRL_r7 + }, + e_AGCH_Information := omit, + modeSpecificInfo2 := { + tdd := { + tdd128 := { + e_HICH_Info := omit + } + } + }, + cell_id := omit + } + }; + + template (value) DL_InformationPerRL_List_r7 cds_DL_InfoPerRL_HSDPA_r7_FDD(PrimaryScramblingCode p_ScrmbCode, + SF512_AndCodeNumber p_Sf, + SecondaryScramblingCode p_SecondaryScramblingCode) + modifies cs_DL_InformationPerRL_r7_FDD := + { /* @status APPROVED (LTE_IRAT) */ + [0] := { + modeSpecificInfo := { + fdd := { + servingHSDSCH_RL_indicator := true + } + } + } + }; + + // ----------------------------------------------------------------------------- + + template (value) DL_InformationPerRL_List_r8 cs_DL_InformationPerRL_r8_FDD(PrimaryScramblingCode p_PrimaryScramblingCode, + SF512_AndCodeNumber p_SpreadingFactorDPCH, + template (omit) SecondaryScramblingCode p_SecondaryScramblingCode) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + { + modeSpecificInfo := { + fdd := { + primaryCPICH_Info := { + primaryScramblingCode := p_PrimaryScramblingCode + }, + servingHSDSCH_RL_indicator := false, + servingEDCH_RL_indicator := false + } + }, + dl_dpchInfo := { + dl_DPCH_InfoPerRL := cs_DL_DPCH_InfoPerRL_SRB_FDD(p_SpreadingFactorDPCH, p_SecondaryScramblingCode) + }, + e_AGCH_Information := omit, + modeSpecificInfo2 := { + fdd := { + e_HICH_Info := omit, + e_RGCH_Info := omit + } + }, + cell_id := omit + } + }; + + template (value) DL_InformationPerRL_List_r8 cds_DL_InfoPerRL_HSDPA_r8_FDD(PrimaryScramblingCode p_PrimaryScramblingCode, + SF512_AndCodeNumber p_SpreadingFactorDPCH, + template (omit) SecondaryScramblingCode p_SecondaryScramblingCode) + modifies cs_DL_InformationPerRL_r8_FDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + [0] := { + modeSpecificInfo := { + fdd := { + servingHSDSCH_RL_indicator := true + } + } + } + }; + + template (value) DL_InformationPerRL_List_r8 cs_DL_InformationPerRL_r8_TDD(CellParametersID p_CellParametersID, + template (value) DL_DPCH_InfoPerRL_r7 p_DL_DPCH_InfoPerRL_r7) := + { /* According to condition A3 in TS 34.108 clause 9.1.1: Downlink information for each radio link list */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + { + modeSpecificInfo := { + tdd := { + tdd := { + tddOption := { + tdd128 := { + tstd_Indicator := false + } + }, + cellParametersID := p_CellParametersID, + sctd_Indicator := false + } + } + }, + dl_dpchInfo := { + dl_DPCH_InfoPerRL := p_DL_DPCH_InfoPerRL_r7 + }, + e_AGCH_Information := omit, + modeSpecificInfo2 := { + tdd := { + tdd128 := { + e_HICH_Info := omit + } + } + }, + cell_id := omit + } + }; + + // ----------------------------------------------------------------------------- + + template (value) BCCH_BCH_Message cs_SIB_MsgNoSegment := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + message_ := { + sfn_Prime := 0, + payload := {noSegment := NULL} + } + }; + +/* template (value) BCCH_BCH_Message cs_SIB_MsgLastCmplList1 (SIB_Type p_SIBType1, */ +/* integer p_SegIndex1, */ +/* SIB_Data_variable p_SIBData1, */ +/* SIB_Type p_SIBType2, */ +/* SIB_Data_variable p_SIBData2) := */ +/* { // !!!!! NOT USED !!!!! */ +/* message_ := { */ +/* sfn_Prime := 0, */ +/* payload := { */ +/* lastAndComplete := { */ +/* lastSegmentShort := { */ +/* sib_Type := p_SIBType1, */ +/* segmentIndex := p_SegIndex1, */ +/* sib_Data_variable := p_SIBData1 */ +/* }, */ +/* completeSIB_List :={ */ +/* { */ +/* sib_Type := p_SIBType2, */ +/* sib_Data_variable := p_SIBData2 */ +/* } */ +/* } */ +/* } */ +/* } */ +/* } */ +/* }; */ + + template (value) BCCH_BCH_Message cs_SIB_MsgCmpl(SIB_Type p_SIBType, + bitstring p_SIBData) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + message_ := { + sfn_Prime := 0, + payload := { + completeSIB := { + sib_Type := p_SIBType, + sib_Data_fixed := p_SIBData + } + } + } + }; + + template (value) BCCH_BCH_Message cs_SIB_MsgCmplList1(SIB_Type p_SIBType, + SIB_Data_variable p_SIBData) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + message_ := { + sfn_Prime := 0, + payload := { + completeSIB_List := { + { + sib_Type := p_SIBType, + sib_Data_variable := p_SIBData + } + } + } + } + }; + + template (value) BCCH_BCH_Message cs_SIB_MsgCmplList2(SIB_Type p_SIBType1, + SIB_Data_variable p_SIBData1, + SIB_Type p_SIBType2, + SIB_Data_variable p_SIBData2) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + message_ := { + sfn_Prime := 0, + payload := { + completeSIB_List := { + { + sib_Type := p_SIBType1, + sib_Data_variable := p_SIBData1 + }, + { + sib_Type := p_SIBType2, + sib_Data_variable := p_SIBData2 + } + } + } + } + }; + + template (value) BCCH_BCH_Message cs_SIB_MsgLast(SIB_Type p_SIBType, + integer p_SegIndex, + SIB_Data_fixed p_SIBData) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + message_ := { + sfn_Prime := 0, + payload := { + lastSegment := { + sib_Type := p_SIBType, + segmentIndex := p_SegIndex, + sib_Data_fixed := p_SIBData + } + } + } + }; + + template (value) BCCH_BCH_Message cs_SIB_MsgLastShort(SIB_Type p_SIBType, + integer p_SegIndex, + SIB_Data_variable p_SIBData) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + message_ := { + sfn_Prime := 0, + payload := { + lastSegmentShort := { + sib_Type := p_SIBType, + segmentIndex := p_SegIndex, + sib_Data_variable := p_SIBData + } + } + } + }; + + template (value) BCCH_BCH_Message cs_SIB_MsgFirst(SIB_Type p_SIBType, + integer p_SegCount, + SIB_Data_fixed p_SIBData) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + message_ := { + sfn_Prime := 0, // place holder + payload := { + firstSegment := { + sib_Type := p_SIBType, + seg_Count := p_SegCount, + sib_Data_fixed := p_SIBData + } + } + } + }; + + template (value) BCCH_BCH_Message cs_SIB_MsgSubsequent(SIB_Type p_SIBType, + integer p_SegIndex, + SIB_Data_fixed p_SIBData) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + message_ := { + sfn_Prime := 0, + payload := { + subsequentSegment := { + sib_Type := p_SIBType, + segmentIndex := p_SegIndex, + sib_Data_fixed := p_SIBData + } + } + } + }; + + // ----------------------------------------------------------------------------- + + template (value) BCCH_FACH_Message cs_SysInfoChangeInd(MIB_ValueTag p_MIB_ValueTag) := + { /* @status APPROVED (LTE_IRAT) */ + message_ := { + systemInformationChangeIndication := { + // System Information Change Indication + bcch_ModificationInfo := { + mib_ValueTag := p_MIB_ValueTag, + bcch_ModificationTime := omit // 0 + }, + laterNonCriticalExtensions := omit + } + } + }; + + //================================================================================================ + // UE Capability Container + //------------------------------------------------------------------------------------------------ + + template (present) UE_CapabilityContainer_IEs cr_CapContainer_CheckOfeutraFeatureGroupIndicators(bitstring p_EutraFeatureGroupIndicators := '1000'B) := + { + ue_RadioAccessCapability_v690ext := ?, + ue_RATSpecificCapability_v690ext := *, + v6b0NonCriticalExtensions := { + ue_RadioAccessCapability_v6b0ext := ?, + v6e0NonCriticalExtensions := { + ue_RadioAccessCapability_v6e0ext := ?, + v770NonCriticalExtensions := { + ue_RadioAccessCapability_v770ext := ?, + v790NonCriticalExtensions := { + ue_RadioAccessCapability_v790ext := ?, + v860NonCriticalExtensions := { + ue_RadioAccessCapability_v860ext := { + rf_Capability := *, + physicalChannelCapability := ?, + multiModeRAT_Capability := { + supportOfEUTRAFDD := *, + supportOfInterRATHOToEUTRAFDD := *, + supportOfEUTRATDD := *, + supportOfInterRATHOToEUTRATDD := *, + eutraFeatureGroupIndicators := p_EutraFeatureGroupIndicators + }, + ue_PositioningCapability := ?, + measurementCapability := *, + measurementCapabilityTDD := *, + supportOfCommonEDCH := *, + supportOfMACiis := *, + supportOfSPSOperation := *, + supportOfControlChannelDRXOperation := *, + supportOfCSG := *, + ue_RadioAccessCapabBandFDDList3 := * + }, + ue_RATSpecificCapability_v860ext := *, + v880NonCriticalExtensions := * + } + } + } + } + } + } + + template (value) DL_DCCH_Message cs_UE_CapabilityInfoCnfAM(IntegrityCheckInfo p_IntegrityCheckInfo, + RRC_TransactionIdentifier p_RRC_TI) := + { /* @status APPROVED (LTE_IRAT, UTRAN) */ + integrityCheckInfo := p_IntegrityCheckInfo, + message_ := { + ueCapabilityInformationConfirm := { + r3 := { + ueCapabilityInformationConfirm_r3 := { + rrc_TransactionIdentifier := p_RRC_TI + }, + laterNonCriticalExtensions := omit + } + } + } + }; + + //================================================================================================ + // RRC Security Mode Command + //------------------------------------------------------------------------------------------------ + + template (value) InterRAT_UE_SecurityCapList cs_UE_SysSpecCap(bitstring p_SysSpecCap) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + { + gsm := { + gsmSecurityCapability := p_SysSpecCap + } + } + }; + + template (value) CipheringModeInfo_r7 cs_CipheringModeInfo_r7(CipheringModeCommand_r7 p_CipheringModeCommand, + template (value) RB_ActivationTimeInfoList p_RB_ActivationTimeInfoList, + template (omit) integer p_ActTimeDPCH) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cipheringModeCommand := p_CipheringModeCommand, + activationTimeForDPCH := p_ActTimeDPCH, + rb_DL_CiphActivationTimeInfo := p_RB_ActivationTimeInfoList + }; + + template (value) SecurityModeCommand cs_RRC_SecModeCmd(RRC_TransactionIdentifier p_RRC_Ti, + bitstring p_SecurityCapability, + bitstring p_IntegrProtAlgCap, + template (omit) CipheringModeInfo_r7 p_CipheringModeInfo, + template (omit) IntegrityProtectionModeInfo_r7 p_IntegrityMode, + CN_DomainIdentity p_CN_Domain, + template (omit) InterRAT_UE_SecurityCapList p_SystemSpecCap) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + /* @sic R5s110382 additional changes: Merge of cs_RRC_SecModeCmdInt and cs_RRC_SecModeCmdCiphInt sic@ */ + later_than_r3 := { + rrc_TransactionIdentifier := p_RRC_Ti, + criticalExtensions := { + r7 := { + securityModeCommand_r7 := { + securityCapability := { + cipheringAlgorithmCap := p_SecurityCapability, + integrityProtectionAlgorithmCap := p_IntegrProtAlgCap + }, + cipheringModeInfo := p_CipheringModeInfo, + integrityProtectionModeInfo := p_IntegrityMode, + cn_DomainIdentity := p_CN_Domain, + ue_SystemSpecificSecurityCap := p_SystemSpecCap + }, + securityModeCommand_r7_add_ext := omit, + nonCriticalExtensions := omit + } + } + } + }; + + template (value) DL_DCCH_Message cs_108_RRC_SecModeCmd(IntegrityCheckInfo p_IntegrityCheckInfo, + template (value) SecurityModeCommand p_SecModeCmd) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + integrityCheckInfo := p_IntegrityCheckInfo, + message_ := { + securityModeCommand := p_SecModeCmd + } + }; + + //================================================================================================ + // RRC Security Mode Complete + //------------------------------------------------------------------------------------------------ + + template (present) UL_DCCH_Message cr_108_RRC_SecModeCmpl(RRC_TransactionIdentifier p_RRC_Ti, + template RB_ActivationTimeInfoList p_RB_ActivationTimeInfoList) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + integrityCheckInfo := *, + message_:= { + securityModeComplete := { + rrc_TransactionIdentifier := p_RRC_Ti, + ul_IntegProtActivationInfo := ?, + rb_UL_CiphActivationTimeInfo := p_RB_ActivationTimeInfoList, + laterNonCriticalExtensions := * + } + } + }; + + //================================================================================================ + // RRC Security Mode Failure + //------------------------------------------------------------------------------------------------ + + template (present) UL_DCCH_Message cr_108_SecModeFail(RRC_TransactionIdentifier p_RRC_Ti, + template FailureCauseWithProtErr p_FailureCauseWithProtErr) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + integrityCheckInfo := *, + message_ := { + securityModeFailure := { + rrc_TransactionIdentifier := p_RRC_Ti, + failureCause := p_FailureCauseWithProtErr, + laterNonCriticalExtensions := * + } + } + }; + + //================================================================================================ + // RRC Connection Request + //------------------------------------------------------------------------------------------------ + + template (present) UL_CCCH_Message cr_108_RRC_ConnReq_r8(template (present) EstablishmentCause p_EstCause := ?) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + // @sic R5-120756 sic@ + integrityCheckInfo := omit, + message_ := { + rrcConnectionRequest := { + initialUE_Identity := ({imsi := ?}, {tmsi_and_LAI := ?}, {p_TMSI_and_RAI := ?}, {imei := ?}), + establishmentCause := p_EstCause, + protocolErrorIndicator := noError, + measuredResultsOnRACH := *, + v3d0NonCriticalExtensions := * + } + } + }; + + template (present) UL_CCCH_Message cdr_RRC_ConnReqWith_v860extOptional(template (present) EstablishmentCause p_EstCause := ?, + template (present) RRCConnectionRequest_v860ext_IEs p_V860ext_IEs, // @sic R5s130287 sic@ + template (present) RRCConnectionRequest_v690ext_IEs p_RRCConnectionRequest_v690ext_IEs := ?) // @sic R5s130287 sic@ + modifies cr_108_RRC_ConnReq_r8 := + { /* @status APPROVED (LTE_IRAT) */ + // @sic R5-120756 sic@ + message_ := { + rrcConnectionRequest := { + v3d0NonCriticalExtensions := { + rRCConnectionRequest_v3d0ext := ?, + v4b0NonCriticalExtensions := { + rrcConnectionRequest_v4b0ext := { + accessStratumReleaseIndicator := ? + }, + v590NonCriticalExtensions := { + rrcConnectionRequest_v590ext := ?, + v690NonCriticalExtensions := { + rrcConnectionRequest_v690ext := p_RRCConnectionRequest_v690ext_IEs, + v6b0NonCriticalExtensions := { + rrcConnectionRequest_v6b0ext := ?, + v6e0NonCriticalExtensions := { + rrcConnectionRequest_v6e0ext := ?, + v770NonCriticalExtensions := { + rrcConnectionRequest_v770ext := ?, + v7b0NonCriticalExtensions := { + rrcConnectionRequest_v7b0ext := ?, + v860NonCriticalExtensions := { + rrcConnectionRequest_v860ext := p_V860ext_IEs, + v7e0NonCriticalExtensions := * // @sic R5s120294 sic@ + } ifpresent // @sic R5s130287 sic@ + } ifpresent // @sic R5s120923 sic@ + } ifpresent // @sic R5s140118 sic@ + } ifpresent // @sic R5s140118 sic@ + } ifpresent // @sic R5s140118 sic@ + } + } + } + } + } + } + }; + + template (present) UL_CCCH_Message cdr_RRC_ConnReqWith_v860ext(template (present) EstablishmentCause p_EstCause := ?, + template RRCConnectionRequest_v860ext_IEs p_V860ext_IEs, + template RRCConnectionRequest_v690ext_IEs p_RRCConnectionRequest_v690ext_IEs := ?) + modifies cr_108_RRC_ConnReq_r8 := + { /* @status APPROVED (LTE_IRAT) */ + // @sic R5-120756 sic@ + message_ := { + rrcConnectionRequest := { + v3d0NonCriticalExtensions := { + rRCConnectionRequest_v3d0ext := ?, + v4b0NonCriticalExtensions := { + rrcConnectionRequest_v4b0ext := { + accessStratumReleaseIndicator := ? + }, + v590NonCriticalExtensions := { + rrcConnectionRequest_v590ext := ?, + v690NonCriticalExtensions := { + rrcConnectionRequest_v690ext := p_RRCConnectionRequest_v690ext_IEs, + v6b0NonCriticalExtensions := { + rrcConnectionRequest_v6b0ext := ?, + v6e0NonCriticalExtensions := { + rrcConnectionRequest_v6e0ext := ?, + v770NonCriticalExtensions := { + rrcConnectionRequest_v770ext := ?, + v7b0NonCriticalExtensions := { + rrcConnectionRequest_v7b0ext := ?, + v860NonCriticalExtensions := { + rrcConnectionRequest_v860ext := p_V860ext_IEs, + v7e0NonCriticalExtensions := * // @sic R5s120294 sic@ + } + } + } + } + } + } + } + } + } + } + } + }; + + template (present) UL_CCCH_Message cdr_RRC_ConnReq_InitialUEId(template (present) EstablishmentCause p_EstCause := ?, + template (present) InitialUE_Identity p_UEId) + modifies cr_108_RRC_ConnReq_r8 := + { /* @status APPROVED (LTE_IRAT) */ + message_ := { + rrcConnectionRequest := { + initialUE_Identity := p_UEId + } + } + }; + + template (present) InitialUE_Identity cr_UEId_TMSI_LAI (PLMN_Identity p_PLMN, + O2_Type p_LAC) := + { /* @status APPROVED (LTE_IRAT) */ + tmsi_and_LAI := { + tmsi := oct2bit(px_TMSI_Def), + lai := { + plmn_Identity := p_PLMN, + lac := oct2bit(p_LAC) + } + } + }; + + template (present) UE_RadioAccessCapability_v860ext_IEs cr_UE_RadioAccessCapMultiRATCap(template (present) MultiModeRAT_Capability_v860ext p_UE_MultiModeRAT_Capability) := + /* @status APPROVED (LTE_IRAT) */ + cr_UE_RadioAccessCap(*, ?, p_UE_MultiModeRAT_Capability, ?, *, *, *); + + template (present) UE_RadioAccessCapability_v860ext_IEs cr_UE_RadioAccessCap(template RF_Capability_v860ext p_RF_Capability_v860ext, + template (present) PhysicalChannelCapability_v860ext p_PhysicalChannelCapability_v860ext, + template (present) MultiModeRAT_Capability_v860ext p_MultiModeRAT_Capability_v860ext, + template (present) UE_PositioningCapability_v860ext p_UE_PositioningCapability_v860ext, + template MeasurementCapability_v860ext p_MeasurementCapability_v860ext, + template MeasurementCapabilityTDD p_MeasurementCapabilityTDD, + template UE_RadioAccessCapabBandFDDList3 p_UE_RadioAccessCapabBandFDDList3) := + { /* @status APPROVED (LTE_IRAT) */ + rf_Capability := p_RF_Capability_v860ext, + physicalChannelCapability := p_PhysicalChannelCapability_v860ext, + multiModeRAT_Capability := p_MultiModeRAT_Capability_v860ext, + ue_PositioningCapability := p_UE_PositioningCapability_v860ext, + measurementCapability := p_MeasurementCapability_v860ext, + measurementCapabilityTDD := p_MeasurementCapabilityTDD, + supportOfCommonEDCH := *, + supportOfMACiis := *, + supportOfSPSOperation := *, + supportOfControlChannelDRXOperation := *, + supportOfCSG := *, + ue_RadioAccessCapabBandFDDList3 := p_UE_RadioAccessCapabBandFDDList3 + }; + + template (present) MultiModeRAT_Capability_v860ext cr_MultiModeRATCap_NotSupportEUTRA := + { /* @status APPROVED (LTE_IRAT)! */ + supportOfEUTRAFDD := omit, + supportOfInterRATHOToEUTRAFDD := omit, + supportOfEUTRATDD := omit, + supportOfInterRATHOToEUTRATDD := omit, + eutraFeatureGroupIndicators := * // @sic R5-125757 sic@ + }; + + template (present) RRCConnectionRequest_v860ext_IEs cr_RRCConnReq_v860ext(template (present) boolean p_SupportEUTRA_FDD := ?, + template (present) boolean p_SupportEUTRA_TDD := ?) := + { /* @status APPROVED (LTE_IRAT) */ + supportOfCommonEDCH := *, + multiCellSupport := *, + pre_redirectionInfo := { + supportEUTRA_FDD := p_SupportEUTRA_FDD, + supportEUTRA_TDD := p_SupportEUTRA_TDD + }, + supportOfMACiis := *, + supportOfSPSOperation := * // @sic R5s120068 sic@ + }; + + template (present) RRCConnectionRequest_v860ext_IEs cdr_RRCConnReq_v860ext_OptionalEUTRA(template (present) boolean p_SupportEUTRA_FDD := ?, + template (present) boolean p_SupportEUTRA_TDD := ?) + modifies cr_RRCConnReq_v860ext:= + { // This is different to cr_RRCConnReq_v860ext because here, the IE pre_redirectionInfo itself is optional + /* @status APPROVED (LTE_IRAT) */ + pre_redirectionInfo := { + supportEUTRA_FDD := p_SupportEUTRA_FDD, + supportEUTRA_TDD := p_SupportEUTRA_TDD + } ifpresent + }; + + template (present) UL_CCCH_Message cr_RRC_RrcConnReqAny := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + integrityCheckInfo := omit, + message_ := { + rrcConnectionRequest := { + initialUE_Identity := ?, + establishmentCause := ?, + protocolErrorIndicator := noError, + measuredResultsOnRACH := *, + v3d0NonCriticalExtensions := * + } + } + }; + + template (present) RRCConnectionRequest_v690ext_IEs cr_RRCConnReq_v690ext_PSDomain := + { /* @status APPROVED (LTE_IRAT) */ + ueCapabilityIndication := *, + measuredResultsOnRACHinterFreq := *, + domainIndicator := { + ps_domain := NULL + } + }; + + template (value) DL_CCCH_Message cs_RRCConnReject(IntegrityCheckInfo p_IntegrityCheckInfo, + InitialUE_Identity p_InitialUEId, + integer p_WaitTime := 0, + RRC_TransactionIdentifier p_RRC_Ti := tsc_RRC_TI, + template (omit) RRCConnectionReject_r3_laterNonCriticalExtensions_Type p_LaterNonCriticalExtensions := omit) := + { /* @status APPROVED (LTE_IRAT) */ + integrityCheckInfo := p_IntegrityCheckInfo, + message_ := { + rrcConnectionReject := { + r3 := { + rrcConnectionReject_r3 := { + initialUE_Identity := p_InitialUEId, + rrc_TransactionIdentifier := p_RRC_Ti, + rejectionCause := unspecified, + waitTime := p_WaitTime, + redirectionInfo := omit + }, + laterNonCriticalExtensions := p_LaterNonCriticalExtensions + } + } + } + }; + + //================================================================================================ + // RRC Connection Setup + //------------------------------------------------------------------------------------------------ + + template (value) SRB_InformationSetup_r8 cs_SRB_InfoSetupAM_DCH_r8(LogicalChannelIdentity p_LogicalChannelIdUL, + MAC_LogicalChannelPriority p_LogicalChannelPriorityDCH, + MAC_LogicalChannelPriority p_LogicalChannelPriorityRACH, + LogicalChannelIdentity p_LogicalChannelIdDL) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rb_Identity := omit, + rlc_InfoChoice := { + rlc_Info := cs_RLC_InfoAM_Common(cds_UL_AM_RLC_SRB, cds_DL_AM_RLC_SRB_r7) + }, + rb_MappingInfo := { + cs_RB_MappingOptionSRB_DCH_DCH_r8(p_LogicalChannelIdUL, p_LogicalChannelPriorityDCH, p_LogicalChannelIdDL), + cs_RB_MappingOptionSRB_RACH_FACH_r8(p_LogicalChannelIdUL, p_LogicalChannelPriorityRACH, p_LogicalChannelIdDL) + } + }; + + template (value) SRB_InformationSetup_r8 cs_SRB_InfoSetupUM_DCH_r8(LogicalChannelIdentity p_LogicalChannelIdUL, + MAC_LogicalChannelPriority p_LogicalChannelPriorityDCH, + MAC_LogicalChannelPriority p_LogicalChannelPriorityRACH, + LogicalChannelIdentity p_LogicalChannelIdDL) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rb_Identity := omit, + rlc_InfoChoice := { + rlc_Info := { + ul_RLC_Mode := { + ul_UM_RLC_Mode := { + transmissionRLC_Discard := omit + } + }, + dl_RLC_Mode := { + dl_UM_RLC_Mode := { + dl_UM_RLC_LI_size := size7, + dl_Reception_Window_Size := size32 + } + }, + rlc_OneSidedReEst := false, + altE_bitInterpretation := omit, + useSpecialValueOfHEField := omit + } + }, + rb_MappingInfo := { + cs_RB_MappingOptionSRB_DCH_DCH_r8(p_LogicalChannelIdUL, p_LogicalChannelPriorityDCH, p_LogicalChannelIdDL), + cs_RB_MappingOptionSRB_RACH_FACH_r8(p_LogicalChannelIdUL, p_LogicalChannelPriorityRACH, p_LogicalChannelIdDL) + } + }; + + template (value) SRB_InformationSetup_r8 cs_SRB_InfoSetupAM_FACH_r8(template (omit) RB_Identity p_RB_Id, + LogicalChannelIdentity p_LogicalChannelIdUL, + MAC_LogicalChannelPriority p_LogicalChannelPriorityDCH, + MAC_LogicalChannelPriority p_LogicalChannelPriorityRACH, + LogicalChannelIdentity p_LogicalChannelIdDL) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rb_Identity := p_RB_Id, + rlc_InfoChoice := { + rlc_Info := cs_RLC_InfoAM_Common(cds_UL_AM_RLC_SRB, cds_DL_AM_RLC_SRB_r7) + }, + rb_MappingInfo := { + cs_RB_MappingOptionSRB_RACH_FACH_r8(p_LogicalChannelIdUL, p_LogicalChannelPriorityRACH, p_LogicalChannelIdDL), + cs_RB_MappingOptionSRB_DCH_DCH_r8 (p_LogicalChannelIdUL, p_LogicalChannelPriorityDCH, p_LogicalChannelIdDL) + } + }; + + template (value) SRB_InformationSetup_r8 cs_SRB_InfoSetupUM_FACH_r8(template (omit) RB_Identity p_RB_Id, + LogicalChannelIdentity p_LogicalChannelIdUL, + MAC_LogicalChannelPriority p_LogicalChannelPriorityDCH, + MAC_LogicalChannelPriority p_LogicalChannelPriorityRACH, + LogicalChannelIdentity p_LogicalChannelIdDL) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + rb_Identity := p_RB_Id, + rlc_InfoChoice := { + rlc_Info := cs_RLC_InfoUM_Common(cs_UL_UM_RLC_Mode(cs_TransmissionRLC_Discard_TimerBasedNoExplicit)) + }, + rb_MappingInfo := { + cs_RB_MappingOptionSRB_RACH_FACH_r8(p_LogicalChannelIdUL, p_LogicalChannelPriorityRACH, p_LogicalChannelIdDL), + cs_RB_MappingOptionSRB_DCH_DCH_r8 (p_LogicalChannelIdUL, p_LogicalChannelPriorityDCH, p_LogicalChannelIdDL) + } + }; + + //------------------------------------------------------------------------------------------------ + + template (value) UTRAN_DRX_CycleLengthCoefficient_r7 cs_UTRAN_DRX_CycleLengthCoefficient_r7(UTRAN_DRX_CycleLengthCoefficient_r7.drx_CycleLengthCoefficient p_DRX_CycleLengthCoefficient := 9) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + drx_CycleLengthCoefficient := p_DRX_CycleLengthCoefficient, + drx_CycleLengthCoefficient2 := omit, + timeForDRXCycle2 := omit + }; + + template (value) CapabilityUpdateRequirement_r8 cs_CapabilityUpdateRequirement_r8_FDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ue_RadioCapabilityFDDUpdateRequirement_FDD := true, + ue_RadioCapabilityTDDUpdateRequirement_TDD384 := false, + ue_RadioCapabilityTDDUpdateRequirement_TDD768 := false, + ue_RadioCapabilityTDDUpdateRequirement_TDD128 := false, + systemSpecificCapUpdateReqList := fl_GetSystemSpecificCapability() // @sic R5s120660 sic@ + }; + + template (value) CapabilityUpdateRequirement_r8 cds_CapabilityUpdateRequirement_r8_TDD modifies cs_CapabilityUpdateRequirement_r8_FDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ue_RadioCapabilityFDDUpdateRequirement_FDD := false, + ue_RadioCapabilityTDDUpdateRequirement_TDD128 := true + }; + + template (value) SRB_InformationSetupList2_r8 cs_SRB_InformationSetupList2_r8_FACH := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_SRB_InfoSetupUM_FACH_r8(omit, tsc_UL_DCCH1, 1, 1, tsc_DL_DCCH1), + cs_SRB_InfoSetupAM_FACH_r8(omit, tsc_UL_DCCH2, 2, 2, tsc_DL_DCCH2), + cs_SRB_InfoSetupAM_FACH_r8(omit, tsc_UL_DCCH3, 3, 3, tsc_DL_DCCH3), + cs_SRB_InfoSetupAM_FACH_r8(omit, tsc_UL_DCCH4, 4, 4, tsc_DL_DCCH4) + }; + + template (value) SRB_InformationSetupList2_r8 cs_SRB_InformationSetupList2_r8_DCH := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_SRB_InfoSetupUM_DCH_r8(tsc_UL_DCCH1, 1, 1, tsc_DL_DCCH1), + cs_SRB_InfoSetupAM_DCH_r8(tsc_UL_DCCH2, 2, 2, tsc_DL_DCCH2), + cs_SRB_InfoSetupAM_DCH_r8(tsc_UL_DCCH3, 3, 3, tsc_DL_DCCH3), + cs_SRB_InfoSetupAM_DCH_r8(tsc_UL_DCCH4, 4, 4, tsc_DL_DCCH4) + }; + + template (value) RRCConnectionSetup_r8_IEs cs_RRCConnectionSetup_r8_IEs_FACH_FDD(U_RNTI p_U_RNTI_New, + C_RNTI p_CRNTI_New) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + activationTime := omit, + new_U_RNTI := p_U_RNTI_New, + new_c_RNTI := p_CRNTI_New, + new_H_RNTI := omit, + newPrimary_E_RNTI := omit, + newSecondary_E_RNTI := omit, + rrc_StateIndicator := cell_FACH, + utran_DRX_CycleLengthCoeff := cs_UTRAN_DRX_CycleLengthCoefficient_r7, + capabilityUpdateRequirement := cs_CapabilityUpdateRequirement_r8_FDD, + supportForChangeOfUE_Capability := false, + dummy := omit, /* @sic R5s120178 BASELINE MOVING 2012 (defaultConfigForCellFACH renamed to dummy) sic@ */ + specificationMode := { + complete := { + srb_InformationSetupList := cs_SRB_InformationSetupList2_r8_FACH, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCCH_13_6k_r4_FDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCCH_3_4k_r8, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoSameAsUL_r4_FDD, + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCCH_SRB_r7 + } + }, + frequencyInfo := omit, + multi_frequencyInfo := omit, + dtx_drx_TimingInfo := omit, + dtx_drx_Info := omit, + hs_scch_LessInfo := omit, + maxAllowedUL_TX_Power := omit, + ul_DPCH_Info := omit, + ul_EDCH_Information := omit, + dl_HSPDSCH_Information := omit, + dl_CommonInformation := omit, + dl_InformationPerRL_List := omit, + dl_SecondaryCellInfoFDD := omit, + sps_Information_TDD128 := omit + }; + + template (value) RRCConnectionSetup_r8_IEs cs_RRCConnectionSetup_r8_IEs_FACH_TDD(U_RNTI p_U_RNTI_New, + C_RNTI p_CRNTI_New) := + { /* @status (APPROVED (LTE_IRAT)) */ + activationTime := omit, + new_U_RNTI := p_U_RNTI_New, + new_c_RNTI := p_CRNTI_New, + new_H_RNTI := omit, + newPrimary_E_RNTI := omit, + newSecondary_E_RNTI := omit, + rrc_StateIndicator := cell_FACH, + utran_DRX_CycleLengthCoeff := cs_UTRAN_DRX_CycleLengthCoefficient_r7, + capabilityUpdateRequirement := cds_CapabilityUpdateRequirement_r8_TDD, + supportForChangeOfUE_Capability := false, + dummy := omit, /* @sic R5s120178 BASELINE MOVING 2012 (defaultConfigForCellFACH renamed to dummy) sic@ */ + specificationMode := { + complete := { + srb_InformationSetupList := cs_SRB_InformationSetupList2_r8_FACH, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCCH_3_4k_r4_TDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCCH_3_4k_r8, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoSameAsUL_r4_TDD, + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCCH_SRB_r7 + } + }, + frequencyInfo := omit, + multi_frequencyInfo := omit, + dtx_drx_TimingInfo := omit, + dtx_drx_Info := omit, + hs_scch_LessInfo := omit, + maxAllowedUL_TX_Power := omit, + ul_DPCH_Info := omit, + ul_EDCH_Information := omit, + dl_HSPDSCH_Information := omit, + dl_CommonInformation := omit, + dl_InformationPerRL_List := omit, + dl_SecondaryCellInfoFDD := omit, + sps_Information_TDD128 := omit + }; + + template (value) RRCConnectionSetup_r8_IEs cs_RRCConnectionSetup_r8_IEs_DCH_FDD(PrimaryScramblingCode p_PrmbScrmCode, + U_RNTI p_U_RNTI_New, + UL_ScramblingCode p_UL_ScramblingCode) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + activationTime := omit, + new_U_RNTI := p_U_RNTI_New, + new_c_RNTI := omit, + new_H_RNTI := omit, + newPrimary_E_RNTI := omit, + newSecondary_E_RNTI := omit, + rrc_StateIndicator := cell_DCH, + utran_DRX_CycleLengthCoeff := cs_UTRAN_DRX_CycleLengthCoefficient_r7, + capabilityUpdateRequirement := cs_CapabilityUpdateRequirement_r8_FDD, + supportForChangeOfUE_Capability := false, + dummy := omit, /* @sic R5s120178 BASELINE MOVING 2012 (defaultConfigForCellFACH renamed to dummy) sic@ */ + specificationMode := { + complete := { + srb_InformationSetupList := cs_SRB_InformationSetupList2_r8_DCH, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCCH_13_6k_r4_FDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCCH_13_6k_r8, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoSameAsUL_r4_FDD, + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCCH_SRB_r7 + } + }, + frequencyInfo := omit, + multi_frequencyInfo := omit, + dtx_drx_TimingInfo := omit, + dtx_drx_Info := omit, + hs_scch_LessInfo := omit, + maxAllowedUL_TX_Power := omit, + ul_DPCH_Info := cs_UL_DPCH_13_6_StandAlone_FDD(p_UL_ScramblingCode), + ul_EDCH_Information := omit, + dl_HSPDSCH_Information := omit, + dl_CommonInformation := cs_DL_CommonInfoDCH_SRB_FDD(tsc_DL_DPCH1_SFP_SRB, fixed, false), + dl_InformationPerRL_List := cs_DL_InformationPerRL_r8_FDD(p_PrmbScrmCode, tsc_DL_DPCH1_ChC_SRB, tsc_DL_DPCH1_2ndScrC), + dl_SecondaryCellInfoFDD := omit, + sps_Information_TDD128 := omit + }; + + template (value) RRCConnectionSetup_r8_IEs cs_RRCConnectionSetup_r8_IEs_DCH_TDD(U_RNTI p_U_RNTI_New, + CellParametersID p_CellParametersID) := + { + activationTime := omit, + new_U_RNTI := p_U_RNTI_New, + new_c_RNTI := omit, + new_H_RNTI := omit, + newPrimary_E_RNTI := omit, + newSecondary_E_RNTI := omit, + rrc_StateIndicator := cell_DCH, + utran_DRX_CycleLengthCoeff := cs_UTRAN_DRX_CycleLengthCoefficient_r7, + capabilityUpdateRequirement := cds_CapabilityUpdateRequirement_r8_TDD, + supportForChangeOfUE_Capability := false, + dummy := omit, + specificationMode := { + complete := { + srb_InformationSetupList := cs_SRB_InformationSetupList2_r8_DCH, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCCH_3_4k_r4_TDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCCH_3_4k_r8_TDD, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoSameAsUL_r4_TDD, + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCCH_SRB_r7 + } + }, + frequencyInfo := omit, + multi_frequencyInfo := omit, + dtx_drx_TimingInfo := omit, + dtx_drx_Info := omit, + hs_scch_LessInfo := omit, + maxAllowedUL_TX_Power := omit, + ul_DPCH_Info := cs_UL_DPCH_3_4_StandAlone_TDD, + ul_EDCH_Information := omit, + dl_HSPDSCH_Information := omit, + dl_CommonInformation := cs_DL_CommonInfo_r8_TDD, + dl_InformationPerRL_List := cs_DL_InformationPerRL_r8_TDD(p_CellParametersID, cs_DL_DPCH_InfoPerRL_SRB_TDD), + dl_SecondaryCellInfoFDD := omit, + sps_Information_TDD128 := omit + }; + + //------------------------------------------------------------------------------------------------ + + template (value) DL_CCCH_Message cs_108_RRC_ConnSetup_r8(template (value) InitialUE_Identity p_InitUEId, + RRC_TransactionIdentifier p_RRC_Ti, + template (value) RRCConnectionSetup_r8_IEs p_RRCConnectionSetup_r8_IEs) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + integrityCheckInfo := omit, + message_ := { + rrcConnectionSetup := { + later_than_r3 := { + initialUE_Identity := p_InitUEId, + rrc_TransactionIdentifier := p_RRC_Ti, + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + r8 := { + rrcConnectionSetup_r8 := p_RRCConnectionSetup_r8_IEs, + rrcConnectionSetup_r8_add_ext := omit, + v7d0NonCriticalExtensions := omit + } + } + } + } + } + } + } + } + } + }; + + template (value) DL_CCCH_Message cs_108_RRC_ConnSetupFACH_r8_FDD(template (value) InitialUE_Identity p_InitUEId, + RRC_TransactionIdentifier p_RRC_Ti, + U_RNTI p_U_RNTI_New, + C_RNTI p_CRNTI_New) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_108_RRC_ConnSetup_r8(p_InitUEId, p_RRC_Ti, cs_RRCConnectionSetup_r8_IEs_FACH_FDD(p_U_RNTI_New, p_CRNTI_New)); + + template (value) DL_CCCH_Message cs_108_RRC_ConnSetupFACH_r8_TDD(template (value) InitialUE_Identity p_InitUEId, + RRC_TransactionIdentifier p_RRC_Ti, + U_RNTI p_U_RNTI_New, + C_RNTI p_CRNTI_New) := + /* @status (APPROVED (LTE_IRAT)) */ + cs_108_RRC_ConnSetup_r8(p_InitUEId, p_RRC_Ti, cs_RRCConnectionSetup_r8_IEs_FACH_TDD(p_U_RNTI_New, p_CRNTI_New)); + + template (value) DL_CCCH_Message cs_108_RRC_ConnSetupDCH_r8_FDD(template (value) InitialUE_Identity p_InitUEId, + RRC_TransactionIdentifier p_RRC_Ti, + PrimaryScramblingCode p_PrmbScrmCode, + U_RNTI p_U_RNTI_New, + UL_ScramblingCode p_UL_ScramblingCode) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_108_RRC_ConnSetup_r8(p_InitUEId, p_RRC_Ti, cs_RRCConnectionSetup_r8_IEs_DCH_FDD(p_PrmbScrmCode, p_U_RNTI_New, p_UL_ScramblingCode)); + + template (value) DL_CCCH_Message cs_108_RRC_ConnSetupDCH_r8_TDD(template (value) InitialUE_Identity p_InitUEId, + RRC_TransactionIdentifier p_RRC_Ti, + U_RNTI p_U_RNTI_New, + CellParametersID p_CellParametersID) := + cs_108_RRC_ConnSetup_r8(p_InitUEId, p_RRC_Ti, cs_RRCConnectionSetup_r8_IEs_DCH_TDD(p_U_RNTI_New, p_CellParametersID)); + + //================================================================================================ + // RRC Connection Release + //------------------------------------------------------------------------------------------------ + + template (value) DL_CCCH_Message cs_108_RRC_ConnRelCCCH_r4(template (value) U_RNTI p_U_rnti, + RRC_TransactionIdentifier p_RRC_Ti) := + {/* @status APPROVED (SSNITZ, UTRAN) */ + integrityCheckInfo := omit, + message_ := { + rrcConnectionRelease := { + later_than_r3 := { + u_RNTI := p_U_rnti, + rrc_TransactionIdentifier := p_RRC_Ti, + criticalExtensions := { + r4:= { + rrcConnectionRelease_CCCH_r4 := { + rrcConnectionRelease := { + n_308 := omit, + releaseCause := normalEvent, + rplmn_information := omit + } + }, + v4d0NonCriticalExtensions := omit + } + } + } + } + } + }; + + template (value) DL_CCCH_Message cs_108_RRC_ConnRelCCCH_r5(template (value) U_RNTI p_U_rnti, + RRC_TransactionIdentifier p_RRC_Ti) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + integrityCheckInfo := omit, + message_ := { + rrcConnectionRelease := { + later_than_r3 := { + u_RNTI := p_U_rnti, + rrc_TransactionIdentifier := p_RRC_Ti, + criticalExtensions := { + criticalExtensions := { + groupIdentity := omit, + criticalExtensions := { + r5 := { + rrcConnectionRelease_CCCH_r5 := { + rrcConnectionRelease := { + n_308 := omit, + releaseCause := normalEvent, + rplmn_information := omit + } + }, + rrcConnectionRelease_CCCH_r5_add_ext := omit, // ?? + v690NonCriticalExtensions := omit + } + } + } + } + } + } + } + }; + + template (value) DL_DCCH_Message cs_108_RRC_ConnRelDCCH_r4(IntegrityCheckInfo p_IntegrityCheckInfo, + RRC_TransactionIdentifier p_RRC_Ti, + template (omit) integer p_N308 := omit, + template (omit) ReleaseCause p_ReleaseCause := normalEvent, + template (omit) RRCConnectionRelease_v4d0NonCriticalExtensions_Type p_NonCriticalExtensions := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + integrityCheckInfo := p_IntegrityCheckInfo, + message_ := { + rrcConnectionRelease := { + later_than_r3 := { + rrc_TransactionIdentifier := p_RRC_Ti, + criticalExtensions := { + r4 := { + rrcConnectionRelease_r4 := { + n_308 := p_N308, + releaseCause := p_ReleaseCause, + rplmn_information := omit + }, + v4d0NonCriticalExtensions := p_NonCriticalExtensions + } + } + } + } + } + }; + + //================================================================================================ + // RRC Connection Release Complete + //------------------------------------------------------------------------------------------------ + + template (present) UL_DCCH_Message cr_108_RRC_ConnRelCmpl(RRC_TransactionIdentifier p_RRC_Ti) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + integrityCheckInfo := *, + message_ := { + rrcConnectionReleaseComplete := { + rrc_TransactionIdentifier := p_RRC_Ti, + errorIndication := *, + laterNonCriticalExtensions := * + } + } + }; + + //================================================================================================ + // RRC Connection Setup Complete + //------------------------------------------------------------------------------------------------ + + template (present) UL_DCCH_Message cr_RRC_ConnSetupCmpl_Common(template (present) RRC_TransactionIdentifier p_RRC_TI := tsc_RRC_TI, + template (present) STARTList p_STARTList, + template UE_RadioAccessCapability p_UE_RadioAccessCapability, + template InterRAT_UE_RadioAccessCapabilityList p_InterRAT_UE_RadioAccessCapabilityList, + template RRCConnSetupCmpl_v370NonCritExt_Type p_V370NonCriticalExtensions) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + integrityCheckInfo := omit, + message_ := { + rrcConnectionSetupComplete := { + rrc_TransactionIdentifier := p_RRC_TI, + startList := p_STARTList, + ue_RadioAccessCapability := p_UE_RadioAccessCapability, + ue_RATSpecificCapability := p_InterRAT_UE_RadioAccessCapabilityList, + v370NonCriticalExtensions := p_V370NonCriticalExtensions + } + } + }; + + template (present) UL_DCCH_Message cr_108_RRC_ConnSetupCmpl(RRC_TransactionIdentifier p_RRC_Ti, + template (present) STARTList p_STARTList) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cr_RRC_ConnSetupCmpl_Common(p_RRC_Ti, p_STARTList, *, *, *); + + template (present) UL_DCCH_Message cr_RRC_ConnSetupCmpl_UERadioAccessCap(template (present) RRC_TransactionIdentifier p_RRC_Ti := tsc_RRC_TI, + template (present) STARTList p_STARTList, + template UE_RadioAccessCapability p_UE_RadioAccessCapability) := + /* @status APPROVED (SSNITZ, UTRAN) */ + cr_RRC_ConnSetupCmpl_Common(p_RRC_Ti, p_STARTList, p_UE_RadioAccessCapability, *, *); + + template (present) UL_DCCH_Message cr_RRC_ConnSetupCmpl_V370NonCriticalExtensions(template (present) RRC_TransactionIdentifier p_RRC_Ti, + template (present) STARTList p_STARTList, + template (present) RRCConnSetupCmpl_v370NonCritExt_Type p_V370NonCriticalExtensions) := + cr_RRC_ConnSetupCmpl_Common(p_RRC_Ti, p_STARTList, *, *, p_V370NonCriticalExtensions); + + + template (present) RRCConnSetupCmpl_v370NonCritExt_Type cr_RRCConnSetupCompl_v690NonCriticalExtensions := + { + rrcConnectionSetupComplete_v370ext := ?, + v380NonCriticalExtensions := { + rrcConnectionSetupComplete_v380ext := ?, + v3a0NonCriticalExtensions := { + rrcConnectionSetupComplete_v3a0ext := ?, + laterNonCriticalExtensions := { + rrcConnectionSetupComplete_r3_add_ext := ?, + v3g0NonCriticalExtensions := { + rrcConnectionSetupComplete_v3g0ext := ?, + v4b0NonCriticalExtensions := { + rrcConnectionSetupComplete_v4b0ext := ?, + v590NonCriticalExtensions := { + rrcConnectionSetupComplete_v590ext := ?, + v5c0NonCriticalExtensions := { + rrcConnectionSetupComplete_v5c0ext := ?, + v690NonCriticalExtensions := { + rrcConnectionSetupComplete_v690ext := { + ueCapabilityContainer := ? + }, + v770NonCriticalExtensions := * + } + } + } + } + } + } + } + } + } + + //================================================================================================ + // Paging + //------------------------------------------------------------------------------------------------ + + template (value) PCCH_Message cs_RRC_PagingType1_ModifySI(MIB_ValueTag p_MIB_ValueTag) := + { /* @status APPROVED (LTE_IRAT) */ + message_ := { + pagingType1 := { + pagingRecordList := omit, + bcch_ModificationInfo := { + mib_ValueTag := p_MIB_ValueTag, + bcch_ModificationTime := omit // changed immediately + }, + laterNonCriticalExtensions := omit + } + } + }; + + template (value) PCCH_Message cs_RRC_PagingType1(PagingCause p_PagCause, + template(value) CN_PagedUE_Identity p_CN_PageUE_Identity, + CN_DomainIdentity p_Domain) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + message_ := { + pagingType1 := cs_PagingType1(p_PagCause, p_CN_PageUE_Identity, p_Domain) + } + }; + + template (value) PagingType1 cs_PagingType1(PagingCause p_PagCause, + template(value) CN_PagedUE_Identity p_CN_PageUE_Identity, + CN_DomainIdentity p_Domain) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + pagingRecordList := { + { + cn_Identity := { + pagingCause := p_PagCause, + cn_DomainIdentity := p_Domain, + cn_pagedUE_Identity := p_CN_PageUE_Identity + } + } + }, + bcch_ModificationInfo := omit, + laterNonCriticalExtensions := omit + }; + + template(value) CN_PagedUE_Identity cs_CN_PageUE_Identity_P_TMSI(bitstring p_P_Tmsi) := + { /* @status APPROVED (LTE_A, LTE_IRAT, UTRAN) */ + p_TMSI_GSM_MAP := p_P_Tmsi + }; + + template(value) CN_PagedUE_Identity cs_CN_PageUE_Identity_TMSI(bitstring p_Tmsi) := + { /* @status APPROVED (LTE_IRAT, POS, SSNITZ) */ + tmsi_GSM_MAP := p_Tmsi + }; + + template(value) CN_PagedUE_Identity cs_CN_PageUE_Identity_IMSI(hexstring p_Imsi) := + { + imsi_GSM_MAP := f_U_ConvertImsi2ASN(p_Imsi) + }; + + //================================================================================================ + // Utran Mobility Information + //------------------------------------------------------------------------------------------------ + + template (value) UE_ConnTimersAndConstants_r5 cs_UEConnTimersConst := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + t_301 := ms2000, + n_301 := 2, + t_302 := ms4000, + n_302 := 3, + t_304 := ms1000, + n_304 := 3, + t_305 := m60, + t_307 := s50, + t_308 := ms320, + t_309 := 8, + t_310 := ms320, + n_310 := 5, + t_311 := ms500, + t_312 := 5, + n_312 := s200, + t_313 := 10, + n_313 := s200, + t_314 := s20, + t_315 := s30, + n_315 := s200, + t_316 := s50, + t_317 := infinity7 + }; + + template (value) DL_DCCH_Message cs_RRC_UtranMobilityInfo(IntegrityCheckInfo p_IntegrityCheckInfo, + RRC_TransactionIdentifier p_RRC_Ti, + template (omit) IntegrityProtectionModeInfo_r7 p_IntegrProtModeInfo, + template (omit) CipheringModeInfo_r7 p_CipherModeInfo, + U_RNTI p_URNTI, + C_RNTI p_CRNTI, + template (omit) H_RNTI p_HRNTI, + template (omit) UE_ConnTimersAndConstants_r5 p_UEConnTimersConst, + template (omit) CN_InformationInfoFull p_CNInfo, + template (omit) PLMN_Identity p_PLMNId, + template (omit) URA_Identity p_URAId, + template (omit) boolean p_SupportChangeUECapab, + template (omit) DL_CounterSynchronisationInfo_r5 p_DlCounterSyncInfo, + template (omit) bitstring p_UtranMobilityInformation_r7_add_ext, + template (omit) UTRANMobilityInformation_v860ext2_Type p_UtranMobilityInformation_v860ext2_Type) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + integrityCheckInfo := p_IntegrityCheckInfo, + message_ := { + utranMobilityInformation := { + later_than_r3 := { + rrc_TransactionIdentifier := p_RRC_Ti, + criticalExtensions := { + criticalExtensions:= { + r7 := { + utranMobilityInformation_r7 := { + integrityProtectionModeInfo := p_IntegrProtModeInfo, + cipheringModeInfo := p_CipherModeInfo, + new_U_RNTI := p_URNTI, + new_C_RNTI := p_CRNTI, + new_H_RNTI := p_HRNTI, + ue_ConnTimersAndConstants := p_UEConnTimersConst, + cn_InformationInfo := p_CNInfo, + primary_plmn_Identity := p_PLMNId, + ura_Identity := p_URAId , + supportForChangeOfUE_Capability := p_SupportChangeUECapab, + dl_CounterSynchronisationInfo := p_DlCounterSyncInfo + }, + utranMobilityInformation_r7_add_ext := p_UtranMobilityInformation_r7_add_ext, + v860NonCriticalExtensions := p_UtranMobilityInformation_v860ext2_Type + } + } + } + } + } + } + }; + + //================================================================================================ + // Measurement Control + //------------------------------------------------------------------------------------------------ + + template (value) MeasurementReportingMode cs_MeasurementReportingMode := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + measurementReportTransferMode := acknowledgedModeRLC, + periodicalOrEventTrigger := eventTrigger + }; + + template (value) DPCH_CompressedModeStatusInfo cs_DPCH_CompressedModeStatusInfo(TGPS_Reconfiguration_CFN p_Tgps_Reconfiguration_CFN, + TGCFN p_TGCFN) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + tgps_Reconfiguration_CFN := p_Tgps_Reconfiguration_CFN, + tgp_SequenceShortList := { + { + tgpsi := 1, + tgps_Status := { + activate_ := { + tgcfn := p_TGCFN + } + } + } + } + }; + + template (value) EUTRA_FrequencyInfo cs_EUTRA_FrequencyInfo(integer p_EutraCell_ARFCN, + EUTRA_MeasurementBandwidth p_EutraCell_MeasBandwidth) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + earfcn := p_EutraCell_ARFCN, + measurementBandwidth := p_EutraCell_MeasBandwidth, + eutra_blackListedCellList := omit + }; + + template (value) EUTRA_FrequencyInfoList cs_EUTRA_FrequencyInfoList_1Entry(integer p_EutraCell_ARFCN, + EUTRA_MeasurementBandwidth p_EutraCell_MeasBandwidth) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_EUTRA_FrequencyInfo(p_EutraCell_ARFCN, p_EutraCell_MeasBandwidth) + }; + + template (value) InterRATMeasQuantity_r8 cs_InterRATMeasQuantity_r8(IntraFreqMeasQuantity_FDD p_IntraFreqMeasQuantity_FDD := cpich_Ec_N0, + MeasurementQuantityEUTRA p_MeasurementQuantityEUTRA := rsrq) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + measQuantityUTRAN_QualityEstimate := { + filterCoefficient := fc0, + modeSpecificInfo := { + fdd := { + intraFreqMeasQuantity_FDD := p_IntraFreqMeasQuantity_FDD + } + } + }, + ratSpecificInfo := { + e_UTRA := { + measurementQuantity := p_MeasurementQuantityEUTRA, + filterCoefficient := fc0 + } + } + }; + + template (value) InterRATMeasQuantity_r8 cs_InterRATMeasQuantity_TDD_r8(IntraFreqMeasQuantity_TDD p_IntraFreqMeasQuantity_TDD := primaryCCPCH_RSCP, + MeasurementQuantityEUTRA p_MeasurementQuantityEUTRA := rsrq) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + measQuantityUTRAN_QualityEstimate := { + filterCoefficient := fc0, + modeSpecificInfo := { + tdd := { + intraFreqMeasQuantity_TDDList := {p_IntraFreqMeasQuantity_TDD} + } + } + }, + ratSpecificInfo := { + e_UTRA := { + measurementQuantity := p_MeasurementQuantityEUTRA, + filterCoefficient := fc0 + } + } + }; + + template (value) InterRATReportingQuantity_r8 cs_InterRATReportingQuantity_r8 := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + utran_EstimatedQuality := false, + ratSpecificInfo := { + eutra := { + reportingQuantity := both + } + } + }; + + template (value) MeasurementCommand_r8 cs_MeasurementCommand_SetupInterRatEutra_r8(template (value) EUTRA_FrequencyInfoList p_EUTRA_FrequencyInfoList, + template (omit) InterRATMeasQuantity_r8 p_InterRATMeasQuantity, + template (omit) InterRATReportingQuantity_r8 p_InterRATReportingQuantity, + template (value) InterRATEventList p_InterRATEventList) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + setup := { + interRATMeasurement := { + interRATMeasurementObjects := { + eutra_FrequencyList := { + eutraFrequencyRemoval := { + removeNoFrequencies := NULL + }, + eutraNewFrequencies := p_EUTRA_FrequencyInfoList + } + }, + interRATMeasQuantity := p_InterRATMeasQuantity, + interRATReportingQuantity := p_InterRATReportingQuantity, + reportCriteria := { + interRATReportingCriteria := { + interRATEventList := p_InterRATEventList + } + }, + idleIntervalInfo := omit + } + } + }; + + template (value) DL_DCCH_Message cs_MeasurementControl_InterRATMeasurement(IntegrityCheckInfo p_Integrityinfo, + RRC_TransactionIdentifier p_RRC_TI, + integer p_EutraCell_ARFCN, + EUTRA_MeasurementBandwidth p_EutraCell_MeasBandwidth, + TGPS_Reconfiguration_CFN p_Tgps_Reconfiguration_CFN, + TGCFN p_TGCFN) := + // Default values according to 36.508 Table 4.7B.1-3: MEASUREMENT CONTROL for Inter-RAT and special settings @sic R5s120686 sic@ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_MeasurementControl_r8(p_Integrityinfo, + 3, + cs_MeasurementCommand_SetupInterRatEutra_r8(cs_EUTRA_FrequencyInfoList_1Entry(p_EutraCell_ARFCN, p_EutraCell_MeasBandwidth), + cs_InterRATMeasQuantity_r8(cpich_RSCP, rsrp), // @sic R5-122105 sic@ @sic R5s130195 BASELINE MOVING 2013 sic@ + cs_InterRATReportingQuantity_r8, + {cs_InterRATEvent3a_Def}), + cs_DPCH_CompressedModeStatusInfo(p_Tgps_Reconfiguration_CFN, p_TGCFN), + p_RRC_TI); // @sic R5-122105 sic@ + + + template (value) DL_DCCH_Message cs_MeasurementControl_InterRATMeasurement_NoCompMode(IntegrityCheckInfo p_Integrityinfo, + RRC_TransactionIdentifier p_RRC_TI, + integer p_EutraCell_ARFCN, + EUTRA_MeasurementBandwidth p_EutraCell_MeasBandwidth) := + // Default values according to 36.508 Table 4.7B.1-3: MEASUREMENT CONTROL for Inter-RAT and special settings @sic R5s120686 sic@ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_MeasurementControl_r8(p_Integrityinfo, + 3, + cs_MeasurementCommand_SetupInterRatEutra_r8(cs_EUTRA_FrequencyInfoList_1Entry(p_EutraCell_ARFCN, p_EutraCell_MeasBandwidth), + cs_InterRATMeasQuantity_r8(cpich_RSCP, rsrp), // @sic R5-122105 sic@ @sic R5s130195 BASELINE MOVING 2013 sic@ + cs_InterRATReportingQuantity_r8, + {cs_InterRATEvent3a_Def}), + omit, // @sic R5s140149 subject to prose CR approval sic@ + p_RRC_TI); // @sic R5-122105 sic@ + + template (value) DL_DCCH_Message cs_MeasurementControl_r8(IntegrityCheckInfo p_Integrityinfo, + MeasurementIdentity p_MeasurementIdentity, + template (value) MeasurementCommand_r8 p_MeasurementCommand, + template (omit) DPCH_CompressedModeStatusInfo p_DPCH_CompressedModeStatusInfo, + RRC_TransactionIdentifier p_RRC_TI := tsc_RRC_TI) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + integrityCheckInfo := p_Integrityinfo, + message_ := { + measurementControl := { + later_than_r3 := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + later_than_r4 := { + rrc_TransactionIdentifier_MSP := p_RRC_TI, + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + r8 := { + measurementControl_r8 := { + measurementIdentity := p_MeasurementIdentity, + measurementCommand := p_MeasurementCommand, + measurementReportingMode := cs_MeasurementReportingMode, + additionalMeasurementList := omit, + dpch_CompressedModeStatusInfo := p_DPCH_CompressedModeStatusInfo + }, + measurementControl_r8_add_ext := omit, + v8a0NonCriticalExtensions := omit /* @sic R5s110176 Baseline Moving sic@ */ + } + } + } + } + } + } + } + } + } + }; + + template (value) DL_DCCH_Message cs_MeasurementControl_InterRATMeasurement_InterRATEventList(IntegrityCheckInfo p_Integrityinfo, + integer p_EutraCell_ARFCN, + EUTRA_MeasurementBandwidth p_EutraCell_MeasBandwidth, + template (value) InterRATEventList p_InterRATEventList, + TGPS_Reconfiguration_CFN p_Tgps_Reconfiguration_CFN, + TGCFN p_TGCFN, + RRC_TransactionIdentifier p_RRC_TI := tsc_RRC_TI) := + /* @status APPROVED (LTE_IRAT) */ + cs_MeasurementControl_r8(p_Integrityinfo, + 3, + cs_MeasurementCommand_SetupInterRatEutra_r8(cs_EUTRA_FrequencyInfoList_1Entry(p_EutraCell_ARFCN, p_EutraCell_MeasBandwidth), + cs_InterRATMeasQuantity_r8(-, rsrp), // @sic R5s120565 sic@ @sic R5s130195 BASELINE MOVING 2013 sic@ + cs_InterRATReportingQuantity_r8, + p_InterRATEventList), + cs_DPCH_CompressedModeStatusInfo(p_Tgps_Reconfiguration_CFN, p_TGCFN), + p_RRC_TI); + + //---------------------------------------------------------------------------- + + template (value) DL_DCCH_Message cs_MeasurementControl_InterRATMeasurement_InterRATEventList_NoCompMode(IntegrityCheckInfo p_Integrityinfo, + integer p_EutraCell_ARFCN, + EUTRA_MeasurementBandwidth p_EutraCell_MeasBandwidth, + template (value) InterRATEventList p_InterRATEventList, + RRC_TransactionIdentifier p_RRC_TI := tsc_RRC_TI) := + /* @status APPROVED (LTE_IRAT) */ + cs_MeasurementControl_r8(p_Integrityinfo, + 3, + cs_MeasurementCommand_SetupInterRatEutra_r8(cs_EUTRA_FrequencyInfoList_1Entry(p_EutraCell_ARFCN, p_EutraCell_MeasBandwidth), + cs_InterRATMeasQuantity_r8(-, rsrp), // @sic R5s120565 sic@ @sic R5s130195 BASELINE MOVING 2013 sic@ + cs_InterRATReportingQuantity_r8, + p_InterRATEventList), + omit, + p_RRC_TI); + + //---------------------------------------------------------------------------- + template (value) InterRATEvent cs_InterRATEvent3a_Def := + { // Default values according to 36.508 Table 4.7B.1-3: MEASUREMENT CONTROL for Inter-RAT + /* @status APPROVED (LTE_A, LTE_IRAT) */ + event3a := { + thresholdOwnSystem := -66, + w := 0, + thresholdOtherSystem := -80, + hysteresis := 0, + timeToTrigger := ttt10, + reportingCellStatus := { + withinActSetOrVirtualActSet_InterRATcells := e2 + } + } + }; + + template (value) InterRATEvent cs_InterRATEvent3c := + { /* @status APPROVED (LTE_IRAT) */ + event3c := { + thresholdOtherSystem := -80, + hysteresis := 0, + timeToTrigger := ttt10, + reportingCellStatus := { + withinActSetOrVirtualActSet_InterRATcells := e2 + } + } + }; + + //================================================================================================ + // Utran MEASUREMENT REPORT + //------------------------------------------------------------------------------------------------ + + template (present) UL_DCCH_Message cr_MeasurementReport := + { // 36.508 Table 4.7B.1-4: MEASUREMENT REPORT + /* @status APPROVED (LTE_A, LTE_IRAT) */ + integrityCheckInfo := *, + message_ := { + measurementReport := { + measurementIdentity := 3, + measuredResults := omit, + measuredResultsOnRACH := omit, + additionalMeasuredResults := omit, + eventResults := omit, + v390nonCriticalExtensions := * + } + } + }; + + template (present) UL_DCCH_Message cr_MeasurementReport_EUTRACell(EARFCN p_EARFCN, + EUTRA_PhysicalCellIdentity p_PhysicalCellIdentity, + template (present) RSRP_Type p_RSRP, + template (present) RSRQ_Type p_RSRQ) := + { /* @status */ /* @sic R5-134720 sic@*/ + integrityCheckInfo := *, + message_ := { + measurementReport := { + measurementIdentity := 3, + measuredResults := omit, + measuredResultsOnRACH := omit, + additionalMeasuredResults := omit, + eventResults := omit, + v390nonCriticalExtensions :={ + measurementReport_v390ext := ?, + laterNonCriticalExtensions :={ + measurementReport_r3_add_ext := *, + v4b0NonCriticalExtensions := { + measurementReport_v4b0ext := ?, + v590NonCriticalExtensions := { + measurementReport_v590ext := ?, + v5b0NonCriticalExtensions := { + measurementReport_v5b0ext := ?, + v690NonCriticalExtensions := { + measurementReport_v690ext := ?, + v770NonCriticalExtensions := { + measurementReport_v770ext := ?, + v860NonCriticalExtensions := { + measurementReport_v860ext := { + activationTime := *, + measuredResults := *, + additionalMeasuredResults := *, + eventResults := *, + eutra_MeasuredResults := { + eutraMeasuredResultList := { + { + earfcn := p_EARFCN, + measuredEUTRACells := { + { + physicalCellIdentity := p_PhysicalCellIdentity, + rSRP := p_RSRP, + rSRQ := p_RSRQ + } + } + } + } + }, + eutra_EventResults := { + eventID := e3a, + eutra_EventResultsList := { + { + earfcn := p_EARFCN, + reportedCells :={ + p_PhysicalCellIdentity + } + } + } + } + }, + v920NonCriticalExtensions := * + } + } + } + } + + } + } + } + } + } + } + }; + + //================================================================================================ + // Utran Mobility Information Confirm + //------------------------------------------------------------------------------------------------ + + template (present) UL_DCCH_Message cr_108_UTRAN_MobilityInfoCnf(RRC_TransactionIdentifier p_RRC_Ti) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + integrityCheckInfo := *, + message_ := { + utranMobilityInformationConfirm := { + rrc_TransactionIdentifier := p_RRC_Ti, + ul_IntegProtActivationInfo := *, + count_C_ActivationTime := *, + dummy := *, + ul_CounterSynchronisationInfo := *, + laterNonCriticalExtensions := * + } + } + }; + + //================================================================================================ + // Hnadover To Utran Complete + //------------------------------------------------------------------------------------------------ + + template (present) UL_DCCH_Message cr_HandoverToUTRANComplete := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + integrityCheckInfo := *, + message_ := { + handoverToUTRANComplete := { + startList := *, + count_C_ActivationTime := *, + laterNonCriticalExtensions := * + } + } + }; + + //================================================================================================ + // Initial Direct Transfer + //------------------------------------------------------------------------------------------------ + + template (present) InitialDirectTransfer_v590ext cr_InitialDirectTransfer_v590ext(template EstablishmentCause p_EstablishmentCause := omit) := + { /* @status APPROVED (LTE_IRAT) */ + establishmentCause := p_EstablishmentCause + }; + + template (present) InitialDirectTransfer_v690ext_IEs cr_InitialDirectTransfer_v690ext(template PLMN_Identity p_PLMN_Id := *, + template MeasuredResultsOnRACHinterFreq p_MeasuredResultsOnRACHinterFreq := *, + template MBMS_JoinedInformation_r6 p_MBMS_JoinedInformation := omit) := + { /* @status APPROVED (LTE_IRAT) */ + plmn_Identity := p_PLMN_Id, + measuredResultsOnRACHinterFreq := p_MeasuredResultsOnRACHinterFreq, + mbms_JoinedInformation := p_MBMS_JoinedInformation + }; + + template (present) UL_DCCH_Message cr_108_InitDirectTransfer(template RoutingParameter p_RoutParameter, + CN_DomainIdentity p_CN_DomainId := ps_domain) := // @sic R5s110801 sic@ + /* @status */ + cr_InitDirectTransfer_All (p_RoutParameter, p_CN_DomainId); + + template (present) UL_DCCH_Message cr_InitDirectTransfer_All(template RoutingParameter p_RoutParameter, + CN_DomainIdentity p_CN_DomainId := ps_domain, + template (present) START_Value p_StartValue := ?, // @sic R5s110801 sic@ + template EstablishmentCause p_EstCause := omit, + template PLMN_Identity p_PLMN_Id := *, + template MeasuredResultsOnRACHinterFreq p_MeasuredResultsOnRACHinterFreq := *, + template MBMS_JoinedInformation_r6 p_MBMS_JoinedInformation := omit) := // @sic R5s110801 sic@ + /* @status APPROVED (LTE_IRAT) */ + cr_InitDirectTransfer_Common(p_RoutParameter, + p_CN_DomainId, + p_StartValue, + cr_InitialDirectTransfer_v590ext(p_EstCause), + cr_InitialDirectTransfer_v690ext(p_PLMN_Id, p_MeasuredResultsOnRACHinterFreq, p_MBMS_JoinedInformation)); + + template (present) UL_DCCH_Message cr_InitDirectTransfer_Common(template RoutingParameter p_RoutParameter, + CN_DomainIdentity p_CN_DomainId := ps_domain, + template (present) START_Value p_StartValue := ?, // @sic R5s110801 sic@ + template InitialDirectTransfer_v590ext p_InitialDirectTransfer_v590ext, + template InitialDirectTransfer_v690ext_IEs p_InitialDirectTransfer_v690ext) := // @sic R5s110801 sic@ + { /* @status APPROVED (LTE_IRAT) */ + integrityCheckInfo := *, + message_ := { + initialDirectTransfer := { + cn_DomainIdentity := p_CN_DomainId, + intraDomainNasNodeSelector := { + version := { + release99 := { + cn_Type := { + gsm_Map_IDNNS := { + routingbasis := { + localPTMSI := { + routingparameter := p_RoutParameter + } + }, + dummy := ? + } + } + } + } + }, + nas_Message := ?, + measuredResultsOnRACH := *, + v3a0NonCriticalExtensions := { + initialDirectTransfer_v3a0ext := { + start_Value := p_StartValue // @sic R5s110801 sic@ + }, + laterNonCriticalExtensions := { + initialDirectTransfer_r3_add_ext := *, + v590NonCriticalExtensions := { + initialDirectTransfer_v590ext := p_InitialDirectTransfer_v590ext, + v690NonCriticalExtensions := { + initialDirectTransfer_v690ext := p_InitialDirectTransfer_v690ext, + v770NonCriticalExtensions := * + } ifpresent + } ifpresent + } ifpresent + } + } + } + }; + + //================================================================================================ + // Radio Bearer Setup Complete + //------------------------------------------------------------------------------------------------ + + template (present) UL_DCCH_Message cr_108_RB_SetUpCmpl(RRC_TransactionIdentifier p_RRC_Ti, + template START_Value p_StartValue:= ?) := + { /* ASN.1 PDU Constraint defined in TS 34.108 clause 9 */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + integrityCheckInfo := *, + message_ := { + radioBearerSetupComplete := { + rrc_TransactionIdentifier := p_RRC_Ti, + ul_IntegProtActivationInfo := *, + ul_TimingAdvance := *, + start_Value := p_StartValue, + count_C_ActivationTime := *, + dummy := *, + ul_CounterSynchronisationInfo := *, + laterNonCriticalExtensions := ({ // @sic R5s110210 sic@ + radioBearerSetupComplete_r3_add_ext := *, + v770NonCriticalExtensions := ({ // @sic R5s110210 sic@ + radioBearerSetupComplete_v770ext := { + ext_UL_TimingAdvance := *, + deferredMeasurementControlReading := omit }, + nonCriticalExtensions := * // @sic R5s110210 sic@ + } + , omit) // @sic R5s110210 sic@ + } + , omit) // @sic R5s110210 sic@ + } + } + }; + + //================================================================================================ + // Physical Channel Reconfiguration Complete + //------------------------------------------------------------------------------------------------ + + template (present) UL_DCCH_Message cr_PhysicalChannelReconfigurationComplete(RRC_TransactionIdentifier p_RRC_TI := tsc_RRC_TI) := + { /* Values according to 36.508 Table 4.7B.1-6: PHYSICAL CHANNEL RECONFIGURATION COMPLETE */ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + integrityCheckInfo := *, + message_ := { + physicalChannelReconfigurationComplete := { + rrc_TransactionIdentifier := p_RRC_TI, + ul_IntegProtActivationInfo := *, + ul_TimingAdvance := *, + count_C_ActivationTime := *, + dummy := *, + ul_CounterSynchronisationInfo := *, + laterNonCriticalExtensions := ({ // @sic R5s110210 sic@ + physicalChannelReconfigurationComplete_r3_add_ext := *, + v770NonCriticalExtensions := ({ // @sic R5s110210 sic@ + physicalChannelReconfigurationComplete_v770ext := { + ext_UL_TimingAdvance := *, // @sic R5s110210 sic@ + deferredMeasurementControlReading := omit }, + nonCriticalExtensions := *} // @sic R5s110210 sic@ + , omit) // @sic R5s110210 sic@ + } + , omit) // @sic R5s110210 sic@ + } + } + }; + + //================================================================================================ + // Signalling Connection release indication + //------------------------------------------------------------------------------------------------ + template (present) UL_DCCH_Message cr_108_RRC_SigConnRelInd(CN_DomainIdentity p_CN_DomainId := ps_domain) := + { /* @status APPROVED (LTE_IRAT) */ + integrityCheckInfo := *, + message_ := { + signallingConnectionReleaseIndication := { + cn_DomainIdentity := p_CN_DomainId, + laterNonCriticalExtensions := { + signallingConnectionReleaseIndication_r3_add_ext := *, + v860nonCriticalExtentions := { + signallingConnectionReleaseIndication_v860ext := { + signallingConnectionReleaseIndicationCause := ? + }, + nonCriticalExtensions := * + } + } + } + } + }; + + //================================================================================================ + // UE Capability Enquiry + //------------------------------------------------------------------------------------------------ + template (value) DL_DCCH_Message cs_UE_CapabilityEnqAll(IntegrityCheckInfo p_IntegrityCheckInfo, + RRC_TransactionIdentifier p_RRC_TI := tsc_RRC_TI) := + { /* @status APPROVED (LTE_IRAT, UTRAN) */ + integrityCheckInfo := p_IntegrityCheckInfo, + message_ := { + ueCapabilityEnquiry := { + r3 := { + ueCapabilityEnquiry_r3 := { + rrc_TransactionIdentifier := p_RRC_TI, + capabilityUpdateRequirement := { + ue_RadioCapabilityFDDUpdateRequirement := true, + ue_RadioCapabilityTDDUpdateRequirement := true, + systemSpecificCapUpdateReqList := {gsm} + } + }, + laterNonCriticalExtensions := { + ueCapabilityEnquiry_r3_add_ext := omit, + v4b0NonCriticalExtensions := { + ueCapabilityEnquiry_v4b0ext := { + capabilityUpdateRequirement_r4_ext := { + ue_RadioCapabilityUpdateRequirement_TDD128 := true + } + }, + v590NonCriticalExtensions := { + ueCapabilityEnquiry_v590ext := { + systemSpecificCapUpdateReq := geranIu + }, + v770NonCriticalExtensions := { + ueCapabilityEnquiry_v770ext := { + capabilityUpdateRequirement := { + ue_RadioCapabilityTDDUpdateRequirement_TDD768 := true + } + }, + v860NonCriticalExtensions := { + ueCapabilityEnquiry_v860ext := { + capabilityUpdateRequirement := { + systemSpecificCapUpdateReqList := { gsm, geranIu, eutra} + } + }, + nonCriticalExtensions := omit + } + } + } + } + } + } + } + } + }; + + //================================================================================================ + // UE Capability Information + //------------------------------------------------------------------------------------------------ + template (present) UL_DCCH_Message cr_UE_CapabilityInfoAM(RRC_TransactionIdentifier p_RRC_TI, + template UE_RadioAccessCapability p_UE_RadioAccessCapability := *) := + { /* @status APPROVED (LTE_IRAT, UTRAN) */ + integrityCheckInfo := *, + message_ := { + ueCapabilityInformation := { + rrc_TransactionIdentifier := p_RRC_TI, + ue_RadioAccessCapability := p_UE_RadioAccessCapability, + ue_RATSpecificCapability := *, + v370NonCriticalExtensions := * + } + } + }; + + /* + * @desc Local function returning the system specific capabilities to be requested to UE + * In UTRAN to E-UTRA test cases UE shall report gsm and eutra capabilities + * @return SystemSpecificCapUpdateReqList_r8 + * @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) + */ + function fl_GetSystemSpecificCapability() return SystemSpecificCapUpdateReqList_r8 + { // @sic R5s120660 sic@ + + var SystemSpecificCapUpdateReqList_r8 v_SystemSpecificCapUpdateReqList; + + if (f_GetTestcaseAttrib_RetrieveEutraCapabilities(testcasename())) { + v_SystemSpecificCapUpdateReqList := {gsm, eutra}; + } else { + v_SystemSpecificCapUpdateReqList := {gsm}; + } + return v_SystemSpecificCapUpdateReqList; + } + +} diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_Templates_r10.ttcn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_Templates_r10.ttcn new file mode 100644 index 0000000..39ed2d3 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_Templates_r10.ttcn @@ -0,0 +1,306 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-10 18:07:49 +0200 (Wed, 10 Sep 2014) $ +// $Rev: 12192 $ +/******************************************************************************/ + +module UTRAN_RRC_Templates_r10 { + + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_CommonDefs all; + import from UTRAN_RRC_Templates_r9 all; + import from UTRAN_RRC_Templates all; + import from UTRAN_RRC_CommonTemplates all; + + //-------------------------------------------------------------------------------------------------------------- + + template (value) DL_CommonInformation_r10 cs_DL_CommonInfo_FDD_r10(template (value) DL_DPCH_CfnHandling_r6_Type p_DL_DPCH_CfnHandling, + SF512_AndPilot p_Sf, + PositionFixedOrFlexible p_PositionFixedOrFlexible := flexible, + boolean p_TfciExistence := true, + template (omit) DefaultDPCH_OffsetValueFDD p_DefaultDPCH_OffsetValue := omit, + template (omit) DPCH_CompressedModeInfo_r10 p_DPCH_CompressedModeInfo := omit, + template (omit) TX_DiversityMode p_TX_DiversityMode := noDiversity) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + dl_dpchInfoCommon := { + dl_DPCH_InfoCommon := cs_DL_DPCH_InfoCommon_FDD_r6(p_DL_DPCH_CfnHandling, p_Sf, p_PositionFixedOrFlexible, p_TfciExistence) + }, + modeSpecificInfo := { + fdd := { + defaultDPCH_OffsetValue := p_DefaultDPCH_OffsetValue, + dpch_CompressedModeInfo := p_DPCH_CompressedModeInfo, + tx_DiversityMode := p_TX_DiversityMode + } + }, + mac_hsResetIndicator := omit, + postVerificationPeriod := omit + }; + + template (value) DL_CommonInformation_r10 cs_DL_CommonInfoDCH_SRB_FDD_r10(SF512_AndPilot p_Sf, + PositionFixedOrFlexible p_FixedFlexible, + boolean p_TfciExistence, + template (value) DL_DPCH_CfnHandling_r6_Type p_DL_DPCH_CfnHandling := cs_DL_DPCH_CfnHandling_Initialise_r6, + template (omit) DefaultDPCH_OffsetValueFDD p_Dpch_Doff := tsc_DefaultDPCH_OffsetValue) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_DL_CommonInfo_FDD_r10(p_DL_DPCH_CfnHandling, p_Sf, p_FixedFlexible, p_TfciExistence, p_Dpch_Doff); //@sic R5s140782 sic@Ff_UTRAN34_RB_Release_HSDSCH_4C + + template (value) DL_CommonInformation_r10 cs_DL_CommonInfo_r10_TDD(template (value) DL_DPCH_CfnHandling_r6_Type p_DL_DPCH_CfnHandling := cs_DL_DPCH_CfnHandling_Initialise_r6) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + /* @sic R5s120954: new parameter p_DL_DPCH_CfnHandling sic@ */ + dl_dpchInfoCommon := { + dl_DPCH_InfoCommon := cs_DL_DPCH_InfoCommon_TDD_r6(p_DL_DPCH_CfnHandling) + }, + modeSpecificInfo := { + tdd := { + tddOption := { + tdd128 := { + tstd_Indicator := false + } + }, + defaultDPCH_OffsetValue := tsc_DefaultDPCH_OffsetValue_TDD + } + }, + mac_hsResetIndicator := omit, + postVerificationPeriod := omit + }; + + //===================================================================================================================== + // RRC CONNECTION SETUP + //===================================================================================================================== + template (value) DL_CCCH_Message cs_108_RRC_ConnSetup_r10(template (value) InitialUE_Identity p_InitUEId, + RRC_TransactionIdentifier p_RRC_Ti, + template (value) RRCConnectionSetup_r10_IEs p_RRCConnectionSetup_r10_IEs) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + integrityCheckInfo := omit, + message_ := { + rrcConnectionSetup := { + later_than_r3 := { + initialUE_Identity := p_InitUEId, + rrc_TransactionIdentifier := p_RRC_Ti, + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + r10 := { + rrcConnectionSetup_r10 := p_RRCConnectionSetup_r10_IEs, + rrcConnectionSetup_r10_add_ext := omit, + nonCriticalExtensions := omit + } + } + } + } + } + } + } + } + } + } + } + }; + + //----------------------------------------------------------------------------------------------------------- + // RRC CONNECTION SETUP DCH + template (value) RRCConnectionSetup_r10_IEs cs_RRCConnectionSetup_r10_IEs_DCH_FDD(PrimaryScramblingCode p_PrmbScrmCode, + U_RNTI p_U_RNTI_New, + UL_ScramblingCode p_UL_ScramblingCode) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + activationTime := omit, + new_U_RNTI := p_U_RNTI_New, + new_c_RNTI := omit, + new_H_RNTI := omit, + newPrimary_E_RNTI := omit, + newSecondary_E_RNTI := omit, + rrc_StateIndicator := cell_DCH, + utran_DRX_CycleLengthCoeff := cs_UTRAN_DRX_CycleLengthCoefficient_r7, + capabilityUpdateRequirement := cs_CapabilityUpdateRequirement_r8_FDD, + supportForChangeOfUE_Capability := false, + defaultConfigForCellFACH := omit, + specificationMode := { + complete := { + srb_InformationSetupList := cs_SRB_InformationSetupList2_r8_DCH, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCCH_13_6k_r4_FDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCCH_13_6k_r8, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoSameAsUL_r4_FDD, + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCCH_SRB_r9 + } + }, + frequencyInfo := omit, + multi_frequencyInfo := omit, + dtx_drx_TimingInfo := omit, + dtx_drx_Info := omit, + hs_scch_LessInfo := omit, + maxAllowedUL_TX_Power := omit, + ul_DPCH_Info := cs_UL_DPCH_13_6_StandAlone_FDD(p_UL_ScramblingCode), + ul_EDCH_Information := omit, + dl_HSPDSCH_Information := omit, + dl_CommonInformation := cs_DL_CommonInfoDCH_SRB_FDD_r10(tsc_DL_DPCH1_SFP_SRB, fixed, false), + dl_InformationPerRL_List := cs_DL_InformationPerRL_r8_FDD(p_PrmbScrmCode, tsc_DL_DPCH1_ChC_SRB, tsc_DL_DPCH1_2ndScrC), + dl_SecondaryCellInfoFDD := omit, + additionalDLSecCellInfoListFDD := omit, + sps_Information_TDD128 := omit, + mu_MIMO_Info_TDD128 := omit + }; + + template (value) RRCConnectionSetup_r10_IEs cs_RRCConnectionSetup_r10_IEs_DCH_TDD(U_RNTI p_U_RNTI_New, + CellParametersID p_CellParametersID) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + activationTime := omit, + new_U_RNTI := p_U_RNTI_New, + new_c_RNTI := omit, + new_H_RNTI := omit, + newPrimary_E_RNTI := omit, + newSecondary_E_RNTI := omit, + rrc_StateIndicator := cell_DCH, + utran_DRX_CycleLengthCoeff := cs_UTRAN_DRX_CycleLengthCoefficient_r7, + capabilityUpdateRequirement := cds_CapabilityUpdateRequirement_r8_TDD, + supportForChangeOfUE_Capability := false, + defaultConfigForCellFACH := omit, + specificationMode := { + complete := { + srb_InformationSetupList := cs_SRB_InformationSetupList2_r8_DCH, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCCH_3_4k_r4_TDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCCH_3_4k_r8_TDD, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoSameAsUL_r4_TDD, + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCCH_SRB_r9 + } + }, + frequencyInfo := omit, + multi_frequencyInfo := omit, + dtx_drx_TimingInfo := omit, + dtx_drx_Info := omit, + hs_scch_LessInfo := omit, + maxAllowedUL_TX_Power := omit, + ul_DPCH_Info := cs_UL_DPCH_3_4_StandAlone_TDD, + ul_EDCH_Information := omit, + dl_HSPDSCH_Information := omit, + dl_CommonInformation := cs_DL_CommonInfo_r10_TDD, + dl_InformationPerRL_List := cs_DL_InformationPerRL_r8_TDD ( p_CellParametersID, cs_DL_DPCH_InfoPerRL_SRB_TDD ), + dl_SecondaryCellInfoFDD := omit, + additionalDLSecCellInfoListFDD := omit, + sps_Information_TDD128 := omit, + mu_MIMO_Info_TDD128 := omit + }; + + template (value) DL_CCCH_Message cs_108_RRC_ConnSetupDCH_r10_FDD(template (value) InitialUE_Identity p_InitUEId, + RRC_TransactionIdentifier p_RRC_Ti, + PrimaryScramblingCode p_PrmbScrmCode, + U_RNTI p_U_RNTI_New, + UL_ScramblingCode p_UL_ScramblingCode) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_108_RRC_ConnSetup_r10(p_InitUEId, p_RRC_Ti, cs_RRCConnectionSetup_r10_IEs_DCH_FDD(p_PrmbScrmCode, p_U_RNTI_New, p_UL_ScramblingCode)); + + template (value) DL_CCCH_Message cs_108_RRC_ConnSetupDCH_r10_TDD(template (value) InitialUE_Identity p_InitUEId, + RRC_TransactionIdentifier p_RRC_Ti, + U_RNTI p_U_RNTI_New, + CellParametersID p_CellParametersID) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_108_RRC_ConnSetup_r10(p_InitUEId, p_RRC_Ti, cs_RRCConnectionSetup_r10_IEs_DCH_TDD(p_U_RNTI_New, p_CellParametersID)); + + //----------------------------------------------------------------------------------------------------------- + // RRC CONNECTION SETUP FACH + template (value) RRCConnectionSetup_r10_IEs cs_RRCConnectionSetup_r10_IEs_FACH_FDD(U_RNTI p_U_RNTI_New, + C_RNTI p_CRNTI_New) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + activationTime := omit, + new_U_RNTI := p_U_RNTI_New, + new_c_RNTI := p_CRNTI_New, + new_H_RNTI := omit, + newPrimary_E_RNTI := omit, + newSecondary_E_RNTI := omit, + rrc_StateIndicator := cell_FACH, + utran_DRX_CycleLengthCoeff := cs_UTRAN_DRX_CycleLengthCoefficient_r7, + capabilityUpdateRequirement := cs_CapabilityUpdateRequirement_r8_FDD, + supportForChangeOfUE_Capability := false, + defaultConfigForCellFACH := omit, + specificationMode := { + complete := { + srb_InformationSetupList := cs_SRB_InformationSetupList2_r8_FACH, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCCH_13_6k_r4_FDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCCH_3_4k_r8, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoSameAsUL_r4_FDD, + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCCH_SRB_r9 + } + }, + frequencyInfo := omit, + multi_frequencyInfo := omit, + dtx_drx_TimingInfo := omit, + dtx_drx_Info := omit, + hs_scch_LessInfo := omit, + maxAllowedUL_TX_Power := omit, + ul_DPCH_Info := omit, + ul_EDCH_Information := omit, + dl_HSPDSCH_Information := omit, + dl_CommonInformation := omit, + dl_InformationPerRL_List := omit, + dl_SecondaryCellInfoFDD := omit, + additionalDLSecCellInfoListFDD := omit, + sps_Information_TDD128 := omit, + mu_MIMO_Info_TDD128 := omit + }; + + template (value) RRCConnectionSetup_r10_IEs cs_RRCConnectionSetup_r10_IEs_FACH_TDD(U_RNTI p_U_RNTI_New, + C_RNTI p_CRNTI_New) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + activationTime := omit, + new_U_RNTI := p_U_RNTI_New, + new_c_RNTI := p_CRNTI_New, + new_H_RNTI := omit, + newPrimary_E_RNTI := omit, + newSecondary_E_RNTI := omit, + rrc_StateIndicator := cell_FACH, + utran_DRX_CycleLengthCoeff := cs_UTRAN_DRX_CycleLengthCoefficient_r7, + capabilityUpdateRequirement := cds_CapabilityUpdateRequirement_r8_TDD, + supportForChangeOfUE_Capability := false, + defaultConfigForCellFACH := omit, + specificationMode := { + complete := { + srb_InformationSetupList := cs_SRB_InformationSetupList2_r8_FACH, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCCH_3_4k_r4_TDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCCH_3_4k_r8, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoSameAsUL_r4_TDD, + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCCH_SRB_r9 + } + }, + frequencyInfo := omit, + multi_frequencyInfo := omit, + dtx_drx_TimingInfo := omit, + dtx_drx_Info := omit, + hs_scch_LessInfo := omit, + maxAllowedUL_TX_Power := omit, + ul_DPCH_Info := omit, + ul_EDCH_Information := omit, + dl_HSPDSCH_Information := omit, + dl_CommonInformation := omit, + dl_InformationPerRL_List := omit, + dl_SecondaryCellInfoFDD := omit, + additionalDLSecCellInfoListFDD := omit, + sps_Information_TDD128 := omit, + mu_MIMO_Info_TDD128 := omit + }; + + // ----------------------------------------------------------------------------- + template (value) DL_CCCH_Message cs_108_RRC_ConnSetupFACH_r10_FDD(template (value) InitialUE_Identity p_InitUEId, + RRC_TransactionIdentifier p_RRC_Ti, + U_RNTI p_U_RNTI_New, + C_RNTI p_CRNTI_New) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_108_RRC_ConnSetup_r10(p_InitUEId, p_RRC_Ti, cs_RRCConnectionSetup_r10_IEs_FACH_FDD(p_U_RNTI_New, p_CRNTI_New)); + + template (value) DL_CCCH_Message cs_108_RRC_ConnSetupFACH_r10_TDD(template (value) InitialUE_Identity p_InitUEId, + RRC_TransactionIdentifier p_RRC_Ti, + U_RNTI p_U_RNTI_New, + C_RNTI p_CRNTI_New) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_108_RRC_ConnSetup_r10(p_InitUEId, p_RRC_Ti, cs_RRCConnectionSetup_r10_IEs_FACH_TDD(p_U_RNTI_New, p_CRNTI_New)); + +} + + diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_Templates_r11.ttcn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_Templates_r11.ttcn new file mode 100644 index 0000000..a5f319f --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_Templates_r11.ttcn @@ -0,0 +1,480 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-07-06 21:15:13 +0200 (Sun, 06 Jul 2014) $ +// $Rev: 11812 $ +/******************************************************************************/ + +module UTRAN_RRC_Templates_r11 { + + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_CommonDefs all; + import from UTRAN_RRC_Templates all; + import from UTRAN_RRC_Templates_r10 all; + import from UTRAN_RRC_CommonTemplates all; + + // ----------------------------------------------------------------------------- + + template (value) UL_DPCH_PowerControlInfo_r11 cs_UL_DPCH_PowerControlInfo_FDD_r11(template (omit) DeltaACK p_DeltaACK := omit, + template (omit) DeltaNACK p_DeltaNACK := omit, + template (omit) ACK_NACK_repetitionFactor p_ACK_NACK_RepetitionFactor := omit) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + fdd := { + dpcch_PowerOffset := tsc_DPCCH_PowerOffset, + pc_Preamble := 1, + sRB_delay := 7, + powerControlAlgorithm := { + algorithm1 := tsc_TpcStepSize_FDD + }, + deltaACK := p_DeltaACK, + deltaNACK := p_DeltaNACK, + ack_NACK_repetition_factor := p_ACK_NACK_RepetitionFactor, + ack_NACK_repetition_factor_assisting := omit, + harq_Preamble_Mode := 0 + } + }; + + template (value) UL_DPCH_PowerControlInfo_r11 cs_UL_DPCH_PowerControlInfo_TDD_r11(UL_TargetSIR p_UL_TargetSIR := tsc_UL_TargetSIR) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + tdd := { + ul_TargetSIR := p_UL_TargetSIR, + ul_OL_PC_Signalling := { + individuallySignalled := { + tddOption := { + tdd128 := { + beaconPLEst := omit, + tpc_StepSize := tsc_TPC_StepSize_TDD // 1 + } + }, + primaryCCPCH_TX_Power := tsc_PrimaryCCPCH_TX_Power // 12 + } + } + } + }; + + //-------------------------------------------------------------------------------------------------------------- + + template (value) UL_DPCH_Info_r11 cs_UL_DPCH_Info_FDD_r11(SpreadingFactor p_SprdFct, + PuncturingLimit p_PuncLimit, + UL_ScramblingCode p_UL_ScramblingCode, + template (value) UL_DPCH_PowerControlInfo_r11 p_UL_DPCH_PowerControlInfo := cs_UL_DPCH_PowerControlInfo_FDD_r11) := + { /* According to condition A3 in TS 34.108 clause 9.1.1: Uplink DPCH info */ + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + ul_DPCH_PowerControlInfo := p_UL_DPCH_PowerControlInfo, + modeSpecificInfo := { + fdd := { + scramblingCodeType := longSC, + scramblingCode := p_UL_ScramblingCode, + dpdchPresence := { + present_ := { + numberOfDPDCH := omit, // DEFAULT: 1 + spreadingFactor := p_SprdFct, + tfci_Existence := true, + numberOfFBI_Bits := omit, + numberOfTPC_Bits := omit, + puncturingLimit := p_PuncLimit + } + } + } + } + }; + + template (value) UL_DPCH_Info_r11 cs_UL_DPCH_13_6_StandAlone_FDD_r11(UL_ScramblingCode p_UL_ScramblingCode) := cs_UL_DPCH_Info_FDD_r11(tsc_UL_DPDCH_SF_SRB, pl1, p_UL_ScramblingCode); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + + template (value) UL_DPCH_Info_r11 cs_UL_DPCH_InfoACK_HSDPA_FDD_r11(SpreadingFactor p_SprdFct, + PuncturingLimit p_PuncLimit, + UL_ScramblingCode p_UL_ScramblingCode) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cs_UL_DPCH_Info_FDD_r11(p_SprdFct, p_PuncLimit, p_UL_ScramblingCode, cs_UL_DPCH_PowerControlInfo_FDD_r11(3, 3, 1)); + + template (value) UL_DPCH_Info_r11 cs_UL_DPCH_Info_1TS_TDD_r11(TFCS_IdentityPlain p_TFCS_ID, + template (omit) ActivationTime p_ActivationTime, + TFCI_Coding p_TFCI_Coding, + PuncturingLimit p_PuncturingLimit, + TimeslotNumber_LCR_r4 p_TimeslotNumber_UL, + UL_TS_ChannelisationCode p_UL_TS_ChannelisationCode ) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + /* @sic R5-123750 sic@ */ + ul_DPCH_PowerControlInfo := cs_UL_DPCH_PowerControlInfo_TDD_r11(tsc_UL_TargetSIR), + modeSpecificInfo := { + tdd := { + ul_TimingAdvance := cs_TDD_UL_TimingAdvanceControl_r7, + ul_CCTrCHList := { + cs_UL_CCTrCH_TDD_r7(p_TFCS_ID, tsc_UL_TargetSIR, p_ActivationTime, p_TFCI_Coding, p_PuncturingLimit, cs_CommonTimeslotInfo_TDD128(p_TimeslotNumber_UL, -, p_UL_TS_ChannelisationCode)) + }, + ul_CCTrCHListToRemove := omit + } + } + }; + + template (value) UL_DPCH_Info_r11 cs_UL_DPCH_64k_PS_TDD_r11 := cs_UL_DPCH_Info_1TS_TDD_r11 (1, omit, tfci_bits_16, pl0_56,1, tsc_UL_DPCH1_ChC_64k_PS); /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + + template (value) UL_DPCH_Info_r11 cs_UL_DPCH_Speech_TDD_r11 := cs_UL_DPCH_Info_1TS_TDD_r11 (1, omit, tfci_bits_16, pl0_48,1, tsc_UL_DPCH1_ChC_Speech); /* @status APPROVED (LTE_A, LTE_IRAT) */ + + template (value) UL_DPCH_Info_r11 cs_UL_DPCH_3_4_StandAlone_TDD_r11 := cs_UL_DPCH_Info_1TS_TDD_r11 (1, omit, tfci_bits_8, pl1,1, tsc_UL_DPCH1_ChC_SRB_3_4); /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN); @sic R5s120750 sic@ */ + + template (value) UL_DPCH_Info_r11 cs_UL_DPCH_PS_and_ConvSpeech_TDD_r11 := cs_UL_DPCH_Info_1TS_TDD_r11 (1, omit, tfci_bits_16, pl0_92,3, tsc_UL_DPCH1_ChC_PS_and_ConvSpeech); /* @status APPROVED (LTE_IRAT) */ + + //-------------------------------------------------------------------------------------------------------------- + template (value) DL_CommonInformation_r11 cs_DL_CommonInfo_FDD_r11(template (value) DL_DPCH_CfnHandling_r6_Type p_DL_DPCH_CfnHandling, + SF512_AndPilot p_Sf, + PositionFixedOrFlexible p_PositionFixedOrFlexible := flexible, + boolean p_TfciExistence := true, + template (omit) DefaultDPCH_OffsetValueFDD p_DefaultDPCH_OffsetValue := omit, + template (omit) DPCH_CompressedModeInfo_r10 p_DPCH_CompressedModeInfo := omit, + template (omit) TX_DiversityMode p_TX_DiversityMode := noDiversity) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + dl_dpchInfoCommon := { + dl_DPCH_InfoCommon := cs_DL_DPCH_InfoCommon_FDD_r6(p_DL_DPCH_CfnHandling, p_Sf, p_PositionFixedOrFlexible, p_TfciExistence) + }, + modeSpecificInfo := { + fdd := { + defaultDPCH_OffsetValue := p_DefaultDPCH_OffsetValue, + dpch_CompressedModeInfo := p_DPCH_CompressedModeInfo, + tx_DiversityMode := p_TX_DiversityMode + } + }, + mac_hsResetIndicator := omit, + postVerificationPeriod := omit, + mac_hsResetIndicator_assisting := omit + }; + + template (value) DL_CommonInformation_r11 cs_DL_CommonInfoDCH_SRB_FDD_r11(SF512_AndPilot p_Sf, + PositionFixedOrFlexible p_FixedFlexible, + boolean p_TfciExistence, + template (value) DL_DPCH_CfnHandling_r6_Type p_DL_DPCH_CfnHandling := cs_DL_DPCH_CfnHandling_Initialise_r6) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_DL_CommonInfo_FDD_r11(p_DL_DPCH_CfnHandling, p_Sf, p_FixedFlexible, p_TfciExistence, tsc_DefaultDPCH_OffsetValue); + + template (value) DL_CommonInformation_r11 cs_DL_CommonInfo_r11_TDD(template (value) DL_DPCH_CfnHandling_r6_Type p_DL_DPCH_CfnHandling := cs_DL_DPCH_CfnHandling_Initialise_r6) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + /* @sic R5s120954: new parameter p_DL_DPCH_CfnHandling sic@ */ + dl_dpchInfoCommon := { + dl_DPCH_InfoCommon := cs_DL_DPCH_InfoCommon_TDD_r6(p_DL_DPCH_CfnHandling) + }, + modeSpecificInfo := { + tdd := { + tddOption := { + tdd128 := { + tstd_Indicator := false + } + }, + defaultDPCH_OffsetValue := tsc_DefaultDPCH_OffsetValue_TDD + } + }, + mac_hsResetIndicator := omit, + postVerificationPeriod := omit, + mac_hsResetIndicator_assisting := omit + }; + + // ----------------------------------------------------------------------------- + + template (value) DL_AddReconfTransChInformation_r11 cs_DL_AddReconfTransChInfo_r11(TransportChannelIdentity p_DlTrChId, + TransportChannelIdentity p_UlTrChId, + template (omit) QualityTarget p_QualityTarget := cs_QualityTarget) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + dl_TransportChannelType := { + dch := p_DlTrChId + }, + tfs_SignallingMode := { + sameAsULTrCH := { + ul_TransportChannelType := dch, + ul_TransportChannelIdentity := p_UlTrChId + } + }, + dch_QualityTarget := p_QualityTarget + }; + + template (value) DL_AddReconfTransChInfoList_r11 cs_DL_AddReconfTransChInfoListDCCH_SRB_r11 := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_DL_AddReconfTransChInfo_r11(tsc_DL_DCH5, tsc_UL_DCH5) + }; + + template (value) DL_AddReconfTransChInformation_r11 cs_DL_AddReconfTransChInfoExplicit_r11(integer p_TransportChannelId, + template (value) DedicatedTransChTFS p_DedicatedTransChTFS, + template (omit) QualityTarget p_QualityTarget := cs_QualityTarget) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + dl_TransportChannelType := { + dch := p_TransportChannelId + }, + tfs_SignallingMode := { + explicit_config := { + dedicatedTransChTFS := p_DedicatedTransChTFS + } + }, + dch_QualityTarget := p_QualityTarget + }; + + //===================================================================================================================== + // RLC + //===================================================================================================================== + + template (value) DL_AM_RLC_Mode_r11 cs_DL_AM_RLC_r11 := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + dl_RLC_PDU_size := { + fixedSize := cs_OctetModeRLC_Size336 + }, + inSequenceDelivery := true, + receivingWindowSize := rw128, + dl_RLC_StatusInfo := { + timerStatusProhibit := tsp200, + missingPDU_Indicator := true, + timerStatusPeriodic := omit, + timerReordering := omit + } + }; + + template (value) DL_AM_RLC_Mode_r11 cds_DL_AM_RLC_SRB_r11 modifies cs_DL_AM_RLC_r11 := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + dl_RLC_PDU_size := { + fixedSize := cs_OctetModeRLC_Size144 + }, + receivingWindowSize := rw32 + }; + + //===================================================================================================================== + // RRC CONNECTION SETUP + //===================================================================================================================== + template (value) DL_CCCH_Message cs_108_RRC_ConnSetup_r11(template (value) InitialUE_Identity p_InitUEId, + RRC_TransactionIdentifier p_RRC_Ti, + template (value) RRCConnectionSetup_r11_IEs p_RRCConnectionSetup_r11_IEs) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + integrityCheckInfo := omit, + message_ := { + rrcConnectionSetup := { + later_than_r3 := { + initialUE_Identity := p_InitUEId, + rrc_TransactionIdentifier := p_RRC_Ti, + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + r11 := { + rrcConnectionSetup_r11 := p_RRCConnectionSetup_r11_IEs, + rrcConnectionSetup_r11_add_ext := omit, + nonCriticalExtensions := omit + } + } + } + } + } + } + } + } + } + } + } + } + }; + + //----------------------------------------------------------------------------------------------------------- + // RRC CONNECTION SETUP DCH + template (value) RRCConnectionSetup_r11_IEs cs_RRCConnectionSetup_r11_IEs_DCH_FDD(PrimaryScramblingCode p_PrmbScrmCode, + U_RNTI p_U_RNTI_New, + UL_ScramblingCode p_UL_ScramblingCode) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + activationTime := omit, + new_U_RNTI := p_U_RNTI_New, + new_c_RNTI := omit, + new_H_RNTI := omit, + newPrimary_E_RNTI := omit, + newSecondary_E_RNTI := omit, + rrc_StateIndicator := cell_DCH, + utran_DRX_CycleLengthCoeff := cs_UTRAN_DRX_CycleLengthCoefficient_r7, + capabilityUpdateRequirement := cs_CapabilityUpdateRequirement_r8_FDD, + supportForChangeOfUE_Capability := false, + defaultConfigForCellFACH := omit, + specificationMode := { + complete := { + srb_InformationSetupList := cs_SRB_InformationSetupList2_r8_DCH, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCCH_13_6k_r4_FDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCCH_13_6k_r8, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoSameAsUL_r4_FDD, + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCCH_SRB_r11 + } + }, + frequencyInfo := omit, + multi_frequencyInfo := omit, + dtx_drx_TimingInfo := omit, + dtx_drx_Info := omit, + hs_scch_LessInfo := omit, + maxAllowedUL_TX_Power := omit, + ul_DPCH_Info := cs_UL_DPCH_13_6_StandAlone_FDD_r11(p_UL_ScramblingCode), + ul_EDCH_Information := omit, + dl_HSPDSCH_Information := omit, + dl_CommonInformation := cs_DL_CommonInfoDCH_SRB_FDD_r10(tsc_DL_DPCH1_SFP_SRB, fixed, false), + dl_InformationPerRL_List := cs_DL_InformationPerRL_r8_FDD(p_PrmbScrmCode, tsc_DL_DPCH1_ChC_SRB, tsc_DL_DPCH1_2ndScrC), + dl_SecondaryCellInfoFDD := omit, + additionalDLSecCellInfoListFDD := omit, + commonERGCHInfoFDD := omit, + sps_Information_TDD128 := omit, + mu_MIMO_Info_TDD128 := omit + }; + + template (value) RRCConnectionSetup_r11_IEs cs_RRCConnectionSetup_r11_IEs_DCH_TDD(U_RNTI p_U_RNTI_New, + CellParametersID p_CellParametersID) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + activationTime := omit, + new_U_RNTI := p_U_RNTI_New, + new_c_RNTI := omit, + new_H_RNTI := omit, + newPrimary_E_RNTI := omit, + newSecondary_E_RNTI := omit, + rrc_StateIndicator := cell_DCH, + utran_DRX_CycleLengthCoeff := cs_UTRAN_DRX_CycleLengthCoefficient_r7, + capabilityUpdateRequirement := cds_CapabilityUpdateRequirement_r8_TDD, + supportForChangeOfUE_Capability := false, + defaultConfigForCellFACH := omit, + specificationMode := { + complete := { + srb_InformationSetupList := cs_SRB_InformationSetupList2_r8_DCH, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCCH_3_4k_r4_TDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCCH_3_4k_r8_TDD, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoSameAsUL_r4_TDD, + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCCH_SRB_r11 + } + }, + frequencyInfo := omit, + multi_frequencyInfo := omit, + dtx_drx_TimingInfo := omit, + dtx_drx_Info := omit, + hs_scch_LessInfo := omit, + maxAllowedUL_TX_Power := omit, + ul_DPCH_Info := cs_UL_DPCH_3_4_StandAlone_TDD_r11, + ul_EDCH_Information := omit, + dl_HSPDSCH_Information := omit, + dl_CommonInformation := cs_DL_CommonInfo_r10_TDD, + dl_InformationPerRL_List := cs_DL_InformationPerRL_r8_TDD ( p_CellParametersID, cs_DL_DPCH_InfoPerRL_SRB_TDD ), + dl_SecondaryCellInfoFDD := omit, + additionalDLSecCellInfoListFDD := omit, + commonERGCHInfoFDD := omit, + sps_Information_TDD128 := omit, + mu_MIMO_Info_TDD128 := omit + }; + + template (value) DL_CCCH_Message cs_108_RRC_ConnSetupDCH_r11_FDD(template (value) InitialUE_Identity p_InitUEId, + RRC_TransactionIdentifier p_RRC_Ti, + PrimaryScramblingCode p_PrmbScrmCode, + U_RNTI p_U_RNTI_New, + UL_ScramblingCode p_UL_ScramblingCode) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_108_RRC_ConnSetup_r11(p_InitUEId, p_RRC_Ti, cs_RRCConnectionSetup_r11_IEs_DCH_FDD(p_PrmbScrmCode, p_U_RNTI_New, p_UL_ScramblingCode)); + + template (value) DL_CCCH_Message cs_108_RRC_ConnSetupDCH_r11_TDD(template (value) InitialUE_Identity p_InitUEId, + RRC_TransactionIdentifier p_RRC_Ti, + U_RNTI p_U_RNTI_New, + CellParametersID p_CellParametersID) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_108_RRC_ConnSetup_r11(p_InitUEId, p_RRC_Ti, cs_RRCConnectionSetup_r11_IEs_DCH_TDD(p_U_RNTI_New, p_CellParametersID)); + + //----------------------------------------------------------------------------------------------------------- + // RRC CONNECTION SETUP FACH + template (value) RRCConnectionSetup_r11_IEs cs_RRCConnectionSetup_r11_IEs_FACH_FDD(U_RNTI p_U_RNTI_New, + C_RNTI p_CRNTI_New) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + activationTime := omit, + new_U_RNTI := p_U_RNTI_New, + new_c_RNTI := p_CRNTI_New, + new_H_RNTI := omit, + newPrimary_E_RNTI := omit, + newSecondary_E_RNTI := omit, + rrc_StateIndicator := cell_FACH, + utran_DRX_CycleLengthCoeff := cs_UTRAN_DRX_CycleLengthCoefficient_r7, + capabilityUpdateRequirement := cs_CapabilityUpdateRequirement_r8_FDD, + supportForChangeOfUE_Capability := false, + defaultConfigForCellFACH := omit, + specificationMode := { + complete := { + srb_InformationSetupList := cs_SRB_InformationSetupList2_r8_FACH, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCCH_13_6k_r4_FDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCCH_3_4k_r8, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoSameAsUL_r4_FDD, + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCCH_SRB_r11 + } + }, + frequencyInfo := omit, + multi_frequencyInfo := omit, + dtx_drx_TimingInfo := omit, + dtx_drx_Info := omit, + hs_scch_LessInfo := omit, + maxAllowedUL_TX_Power := omit, + ul_DPCH_Info := omit, + ul_EDCH_Information := omit, + dl_HSPDSCH_Information := omit, + dl_CommonInformation := omit, + dl_InformationPerRL_List := omit, + dl_SecondaryCellInfoFDD := omit, + additionalDLSecCellInfoListFDD := omit, + commonERGCHInfoFDD := omit, + sps_Information_TDD128 := omit, + mu_MIMO_Info_TDD128 := omit + }; + + template (value) RRCConnectionSetup_r11_IEs cs_RRCConnectionSetup_r11_IEs_FACH_TDD(U_RNTI p_U_RNTI_New, + C_RNTI p_CRNTI_New) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + activationTime := omit, + new_U_RNTI := p_U_RNTI_New, + new_c_RNTI := p_CRNTI_New, + new_H_RNTI := omit, + newPrimary_E_RNTI := omit, + newSecondary_E_RNTI := omit, + rrc_StateIndicator := cell_FACH, + utran_DRX_CycleLengthCoeff := cs_UTRAN_DRX_CycleLengthCoefficient_r7, + capabilityUpdateRequirement := cds_CapabilityUpdateRequirement_r8_TDD, + supportForChangeOfUE_Capability := false, + defaultConfigForCellFACH := omit, + specificationMode := { + complete := { + srb_InformationSetupList := cs_SRB_InformationSetupList2_r8_FACH, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCCH_3_4k_r4_TDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCCH_3_4k_r8, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoSameAsUL_r4_TDD, + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCCH_SRB_r11 + } + }, + frequencyInfo := omit, + multi_frequencyInfo := omit, + dtx_drx_TimingInfo := omit, + dtx_drx_Info := omit, + hs_scch_LessInfo := omit, + maxAllowedUL_TX_Power := omit, + ul_DPCH_Info := omit, + ul_EDCH_Information := omit, + dl_HSPDSCH_Information := omit, + dl_CommonInformation := omit, + dl_InformationPerRL_List := omit, + dl_SecondaryCellInfoFDD := omit, + additionalDLSecCellInfoListFDD := omit, + commonERGCHInfoFDD := omit, + sps_Information_TDD128 := omit, + mu_MIMO_Info_TDD128 := omit + }; + + // ----------------------------------------------------------------------------- + + template (value) DL_CCCH_Message cs_108_RRC_ConnSetupFACH_FDD_r11(template (value) InitialUE_Identity p_InitUEId, + RRC_TransactionIdentifier p_RRC_Ti, + U_RNTI p_U_RNTI_New, + C_RNTI p_CRNTI_New) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_108_RRC_ConnSetup_r11(p_InitUEId, p_RRC_Ti, cs_RRCConnectionSetup_r11_IEs_FACH_FDD(p_U_RNTI_New, p_CRNTI_New)); + + template (value) DL_CCCH_Message cs_108_RRC_ConnSetupFACH_TDD_r11(template (value) InitialUE_Identity p_InitUEId, + RRC_TransactionIdentifier p_RRC_Ti, + U_RNTI p_U_RNTI_New, + C_RNTI p_CRNTI_New) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_108_RRC_ConnSetup_r11(p_InitUEId, p_RRC_Ti, cs_RRCConnectionSetup_r11_IEs_FACH_TDD(p_U_RNTI_New, p_CRNTI_New)); + +} + + diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_Templates_r9.ttcn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_Templates_r9.ttcn new file mode 100644 index 0000000..a845098 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_RRC_Templates_r9.ttcn @@ -0,0 +1,336 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-07-06 21:15:13 +0200 (Sun, 06 Jul 2014) $ +// $Rev: 11812 $ +/******************************************************************************/ + +module UTRAN_RRC_Templates_r9 { + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_CommonDefs all; + import from UTRAN_RRC_CommonTemplates all; + import from UTRAN_RRC_Templates all; + + // ----------------------------------------------------------------------------- + + template (value) DL_AddReconfTransChInformation_r9 cs_DL_AddReconfTransChInfo_r9(TransportChannelIdentity p_DlTrChId, + TransportChannelIdentity p_UlTrChId, + template (omit) QualityTarget p_QualityTarget := cs_QualityTarget) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + dl_TransportChannelType := { + dch := p_DlTrChId + }, + tfs_SignallingMode := { + sameAsULTrCH := { + ul_TransportChannelType := dch, + ul_TransportChannelIdentity := p_UlTrChId + } + }, + dch_QualityTarget := p_QualityTarget + }; + + template (value) DL_AddReconfTransChInfoList_r9 cs_DL_AddReconfTransChInfoListDCCH_SRB_r9 := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_DL_AddReconfTransChInfo_r9(tsc_DL_DCH5, tsc_UL_DCH5) + }; + + + template (value) RRCConnectionSetup_r9_IEs cs_RRCConnectionSetup_r9_IEs_FACH_FDD(U_RNTI p_U_RNTI_New, + C_RNTI p_CRNTI_New) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + activationTime := omit, + new_U_RNTI := p_U_RNTI_New, + new_c_RNTI := p_CRNTI_New, + new_H_RNTI := omit, + newPrimary_E_RNTI := omit, + newSecondary_E_RNTI := omit, + rrc_StateIndicator := cell_FACH, + utran_DRX_CycleLengthCoeff := cs_UTRAN_DRX_CycleLengthCoefficient_r7, + capabilityUpdateRequirement := cs_CapabilityUpdateRequirement_r8_FDD, + supportForChangeOfUE_Capability := false, + defaultConfigForCellFACH := omit, + specificationMode := { + complete := { + srb_InformationSetupList := cs_SRB_InformationSetupList2_r8_FACH, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCCH_13_6k_r4_FDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCCH_3_4k_r8, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoSameAsUL_r4_FDD, + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCCH_SRB_r9 + } + }, + frequencyInfo := omit, + multi_frequencyInfo := omit, + dtx_drx_TimingInfo := omit, + dtx_drx_Info := omit, + hs_scch_LessInfo := omit, + maxAllowedUL_TX_Power := omit, + ul_DPCH_Info := omit, + ul_EDCH_Information := omit, + dl_HSPDSCH_Information := omit, + dl_CommonInformation := omit, + dl_InformationPerRL_List := omit, + dl_SecondaryCellInfoFDD := omit, + sps_Information_TDD128 := omit + }; + + template (value) RRCConnectionSetup_r9_IEs cds_RRCConnectionSetup_r9_IEs_FACH_TDD(U_RNTI p_U_RNTI_New, + C_RNTI p_CRNTI_New) + modifies cs_RRCConnectionSetup_r9_IEs_FACH_FDD := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + capabilityUpdateRequirement := cds_CapabilityUpdateRequirement_r8_TDD, + specificationMode := { + complete := { + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCCH_3_4k_r4_TDD, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoSameAsUL_r4_TDD + } + } + }; + + template (value) RRCConnectionSetup_r9_IEs cs_RRCConnectionSetup_r9_IEs_DCH_FDD(PrimaryScramblingCode p_PrmbScrmCode, + U_RNTI p_U_RNTI_New, + UL_ScramblingCode p_UL_ScramblingCode) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + activationTime := omit, + new_U_RNTI := p_U_RNTI_New, + new_c_RNTI := omit, + new_H_RNTI := omit, + newPrimary_E_RNTI := omit, + newSecondary_E_RNTI := omit, + rrc_StateIndicator := cell_DCH, + utran_DRX_CycleLengthCoeff := cs_UTRAN_DRX_CycleLengthCoefficient_r7, + capabilityUpdateRequirement := cs_CapabilityUpdateRequirement_r8_FDD, + supportForChangeOfUE_Capability := false, + defaultConfigForCellFACH := omit, + specificationMode := { + complete := { + srb_InformationSetupList := cs_SRB_InformationSetupList2_r8_DCH, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCCH_13_6k_r4_FDD, + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCCH_13_6k_r8, + dl_CommonTransChInfo := cs_DL_CommonTransChInfoSameAsUL_r4_FDD, + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCCH_SRB_r9 + } + }, + frequencyInfo := omit, + multi_frequencyInfo := omit, + dtx_drx_TimingInfo := omit, + dtx_drx_Info := omit, + hs_scch_LessInfo := omit, + maxAllowedUL_TX_Power := omit, + ul_DPCH_Info := cs_UL_DPCH_13_6_StandAlone_FDD(p_UL_ScramblingCode), + ul_EDCH_Information := omit, + dl_HSPDSCH_Information := omit, + dl_CommonInformation := cs_DL_CommonInfoDCH_SRB_FDD(tsc_DL_DPCH1_SFP_SRB, fixed, false), + dl_InformationPerRL_List := cs_DL_InformationPerRL_r8_FDD(p_PrmbScrmCode, tsc_DL_DPCH1_ChC_SRB, tsc_DL_DPCH1_2ndScrC), + dl_SecondaryCellInfoFDD := omit, + sps_Information_TDD128 := omit + }; + + template (value) RRCConnectionSetup_r9_IEs cs_RRCConnectionSetup_r9_IEs_DCH_TDD(U_RNTI p_U_RNTI_New, + CellParametersID p_CellParametersID) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + activationTime := omit, + new_U_RNTI := p_U_RNTI_New, + new_c_RNTI := omit, + new_H_RNTI := omit, + newPrimary_E_RNTI := omit, + newSecondary_E_RNTI := omit, + rrc_StateIndicator := cell_DCH, + utran_DRX_CycleLengthCoeff := cs_UTRAN_DRX_CycleLengthCoefficient_r7, + capabilityUpdateRequirement := cds_CapabilityUpdateRequirement_r8_TDD, + supportForChangeOfUE_Capability := false, + defaultConfigForCellFACH := omit, + specificationMode := { + complete := { + srb_InformationSetupList := cs_SRB_InformationSetupList2_r8_DCH, + ul_CommonTransChInfo := cs_UL_CommTrChInfoDCCH_3_4k_r4_TDD, // @sic R5s120750 sic@ + ul_AddReconfTransChInfoList := cs_UL_AddReconfTransChInfoListDCCH_3_4k_r8_TDD, // @sic R5s120750 sic@ + dl_CommonTransChInfo := cs_DL_CommonTransChInfoSameAsUL_r4_TDD, + dl_AddReconfTransChInfoList := cs_DL_AddReconfTransChInfoListDCCH_SRB_r9 + } + }, + frequencyInfo := omit, + multi_frequencyInfo := omit, + dtx_drx_TimingInfo := omit, + dtx_drx_Info := omit, + hs_scch_LessInfo := omit, + maxAllowedUL_TX_Power := omit, + ul_DPCH_Info := cs_UL_DPCH_3_4_StandAlone_TDD, // @sic R5s120750 sic@ + ul_EDCH_Information := omit, + dl_HSPDSCH_Information := omit, + dl_CommonInformation := cs_DL_CommonInfo_r8_TDD, + dl_InformationPerRL_List := cs_DL_InformationPerRL_r8_TDD ( p_CellParametersID, cs_DL_DPCH_InfoPerRL_SRB_TDD ), + dl_SecondaryCellInfoFDD := omit, + sps_Information_TDD128 := omit + }; + + //------------------------------------------------------------------------------------------------ + + template (value) DL_CCCH_Message cs_108_RRC_ConnSetup_r9(template (value) InitialUE_Identity p_InitUEId, + RRC_TransactionIdentifier p_RRC_Ti, + template (value) RRCConnectionSetup_r9_IEs p_RRCConnectionSetup_r9_IEs) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + integrityCheckInfo := omit, + message_ := { + rrcConnectionSetup := { + later_than_r3 := { + initialUE_Identity := p_InitUEId, + rrc_TransactionIdentifier := p_RRC_Ti, + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + r9 := { + rrcConnectionSetup_r9 := p_RRCConnectionSetup_r9_IEs, + rrcConnectionSetup_r9_add_ext := omit, + v950NonCriticalExtensions := omit + } + } + } + } + } + } + } + } + } + } + }; + + template (value) DL_CCCH_Message cs_108_RRC_ConnSetupFACH_r9_FDD(template (value) InitialUE_Identity p_InitUEId, + RRC_TransactionIdentifier p_RRC_Ti, + U_RNTI p_U_RNTI_New, + C_RNTI p_CRNTI_New) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_108_RRC_ConnSetup_r9(p_InitUEId, p_RRC_Ti, cs_RRCConnectionSetup_r9_IEs_FACH_FDD(p_U_RNTI_New, p_CRNTI_New)); + + template (value) DL_CCCH_Message cs_108_RRC_ConnSetupFACH_r9_TDD(template (value) InitialUE_Identity p_InitUEId, + RRC_TransactionIdentifier p_RRC_Ti, + U_RNTI p_U_RNTI_New, + C_RNTI p_CRNTI_New) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_108_RRC_ConnSetup_r9(p_InitUEId, p_RRC_Ti, cds_RRCConnectionSetup_r9_IEs_FACH_TDD(p_U_RNTI_New, p_CRNTI_New)); + + template (value) DL_CCCH_Message cs_108_RRC_ConnSetupDCH_r9_FDD(template (value) InitialUE_Identity p_InitUEId, + RRC_TransactionIdentifier p_RRC_Ti, + PrimaryScramblingCode p_PrmbScrmCode, + U_RNTI p_U_RNTI_New, + UL_ScramblingCode p_UL_ScramblingCode) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_108_RRC_ConnSetup_r9(p_InitUEId, p_RRC_Ti, cs_RRCConnectionSetup_r9_IEs_DCH_FDD(p_PrmbScrmCode, p_U_RNTI_New, p_UL_ScramblingCode)); + + template (value) DL_CCCH_Message cs_108_RRC_ConnSetupDCH_r9_TDD(template (value) InitialUE_Identity p_InitUEId, + RRC_TransactionIdentifier p_RRC_Ti, + U_RNTI p_U_RNTI_New, + CellParametersID p_CellParametersID) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cs_108_RRC_ConnSetup_r9(p_InitUEId, p_RRC_Ti, cs_RRCConnectionSetup_r9_IEs_DCH_TDD(p_U_RNTI_New, p_CellParametersID)); + + template (value) DL_DCCH_Message cs_MeasurementControl_InterRATMeasurement_TDD_r9(IntegrityCheckInfo p_Integrityinfo, + RRC_TransactionIdentifier p_RRC_TI, + integer p_EutraCell_ARFCN, + EUTRA_MeasurementBandwidth p_EutraCell_MeasBandwidth, + template (omit) CellDCHMeasOccasionInfo_TDD128_r9 p_CellDCHMeasOccasionInfo_TDD128, + template (value) InterRATEventList p_InterRATEventList := {cs_InterRATEvent3a_Def}) := // @sic R5s140120 sic@ + // Default values according to 36.508 Table 4.7B.1-3: MEASUREMENT CONTROL for Inter-RAT and special settings @sic R5s120686 sic@ + /* @status APPROVED (LTE_A, LTE_IRAT) */ + cs_MeasurementControl_TDD_r9(p_Integrityinfo, + 3, + cs_MeasurementCommand_SetupInterRatEutra_r9(cs_EUTRA_FrequencyInfoList_1Entry(p_EutraCell_ARFCN, p_EutraCell_MeasBandwidth), + cs_InterRATMeasQuantity_TDD_r8(primaryCCPCH_RSCP, rsrp), // @sic R5-122105 sic@ @sic R5s130195 BASELINE MOVING 2013 sic@ + cs_InterRATReportingQuantity_r8, + p_InterRATEventList), // @sic R5s140120 sic@ + p_CellDCHMeasOccasionInfo_TDD128, // @sic R5s130342 sic@ + p_RRC_TI); + + template (value) DL_DCCH_Message cs_MeasurementControl_TDD_r9(IntegrityCheckInfo p_Integrityinfo, + MeasurementIdentity p_MeasurementIdentity, + template (value) MeasurementCommand_r9 p_MeasurementCommand, + template (omit) CellDCHMeasOccasionInfo_TDD128_r9 p_CellDCHMeasOccasionInfo_TDD128, + RRC_TransactionIdentifier p_RRC_TI := tsc_RRC_TI) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + integrityCheckInfo := p_Integrityinfo, + message_ := { + measurementControl := { + later_than_r3 := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + later_than_r4 := { + rrc_TransactionIdentifier_MSP := p_RRC_TI, + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + criticalExtensions := { + r9 := { + measurementControl_r9 := { + measurementIdentity := p_MeasurementIdentity, + measurementCommand := p_MeasurementCommand, + measurementReportingMode := cs_MeasurementReportingMode, + additionalMeasurementList := omit, + cellDCHMeasOccasionInfo_TDD128 := p_CellDCHMeasOccasionInfo_TDD128, // @sic R5s130342 sic@ + dpch_CompressedModeStatusInfo := omit + }, + measurementControl_r9_add_ext := omit, + v970NonCriticalExtensions := omit + } + } + } + } + } + } + } + } + } + } + }; + + template (value) MeasurementCommand_r9 cs_MeasurementCommand_SetupInterRatEutra_r9(template (value) EUTRA_FrequencyInfoList p_EUTRA_FrequencyInfoList, + template (omit) InterRATMeasQuantity_r8 p_InterRATMeasQuantity, + template (omit) InterRATReportingQuantity_r8 p_InterRATReportingQuantity, + template (value) InterRATEventList p_InterRATEventList) := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + setup := { + interRATMeasurement := { + interRATMeasurementObjects := { + eutra_FrequencyList := { + eutraFrequencyRemoval := { + removeNoFrequencies := NULL + }, + eutraNewFrequencies := p_EUTRA_FrequencyInfoList, + eutraSIAcquisition := omit + } + }, + interRATMeasQuantity := p_InterRATMeasQuantity, + interRATReportingQuantity := p_InterRATReportingQuantity, + reportCriteria := { + interRATReportingCriteria := { + interRATEventList := p_InterRATEventList + } + }, + idleIntervalInfo := omit + } + } + }; + + template (value) CellDCHMeasOccasionInfo_TDD128_r9 cs_CellDCHMeasOccasionInfo_TDD128_r9 := + { /* @status APPROVED (LTE_A, LTE_IRAT) */ + cellDCHMeasOccasionSequenceList := { + { + patternIdentifier := 0, + statusFlag := activate_, + measurementPurpose := '00001'B, + measurementOccasionPatternParameter := { + measurement_Occasion_Coeff := 3, + measurement_Occasion_Offset := 0, + measurement_Occasion_Length := 1, + timeslotBitmap := omit + } + } + } + }; + +} diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_TTCN_ASP_Templates.ttcn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_TTCN_ASP_Templates.ttcn new file mode 100644 index 0000000..97e0776 --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_TTCN_ASP_Templates.ttcn @@ -0,0 +1,204 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-07 18:37:49 +0200 (Sun, 07 Sep 2014) $ +// $Rev: 12081 $ +/******************************************************************************/ + +module UTRAN_TTCN_ASP_Templates { + import from CommonDefs all; + import from UTRAN_TypeDefs all; + import from UTRAN_CommonDefs all; + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_ASP_Definitions language "ASN.1:2002" all; + + //============================================================================ + + template (value) U_RLC_AM_REQ cas_RLC_Data_Req_Common(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + AmConfirmationRequest p_AmConfirmationRequest, + template (value) DL_DCCH_Message p_Pdu) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + data := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + confirmationRequest := p_AmConfirmationRequest, + aM_message := { + dL_DCCH_Message := p_Pdu + } + } + }; + + template (value) U_RLC_AM_REQ cas_RLC_Data_Req_Cnf(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + Mui p_Mui, + template (value) DL_DCCH_Message p_Pdu) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cas_RLC_Data_Req_Common(p_CellId, p_RB_Id, {confirmationRequested := p_Mui}, p_Pdu); + + template (value) U_RLC_AM_REQ cas_RLC_Data_Req_NoCnf(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + template (value) DL_DCCH_Message p_Pdu) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cas_RLC_Data_Req_Common(p_CellId, p_RB_Id, {noConfirmationRequest := NULL}, p_Pdu); + + //---------------------------------------------------------------------------- + + template (present) U_RLC_AM_IND car_RLC_Data_Ind(UTRAN_CellId_Type p_CellId, + integer p_RB_Id, + template UL_DCCH_Message p_Pdu) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + data := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB_Id + }, + integrityResult := ?, + aM_message := { + uL_DCCH_Message := p_Pdu + } + } + }; + + //---------------------------------------------------------------------------- + + template (present) U_RLC_AM_IND car_AM_DataMuiCnf(UTRAN_CellId_Type p_CellId, + integer p_RB, + Mui p_Mui) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + cnf := { + cellId := f_UtranCellId2Int(p_CellId), + routingInfo := { + rB_Identity := p_RB + }, + mui := p_Mui + } + }; + + //============================================================================ + + template (value) RRC_DATA_REQ cas_DataReq_Common(UTRAN_CellId_Type p_CellId, + SS_RB_Identity p_Rb, + SS_CN_DomainIdentity p_CN_Domain, + template (value) RRCDataReqType p_Pdu) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cellId := f_UtranCellId2Int(p_CellId), + rB_Id := p_Rb, + ch := omit, // always set to omit + sapId := omit, // always set to omit + cN_Domain := p_CN_Domain, + msg := p_Pdu + }; + + template (value) RRC_DATA_REQ cas_DataReq_CS(UTRAN_CellId_Type p_CellId, + SS_RB_Identity p_Rb, + template (value) RRCDataReqType p_Pdu) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cas_DataReq_Common(p_CellId, p_Rb, tsc_SS_CS_Domain, p_Pdu); + + template (value) RRC_DATA_REQ cas_DataReq_PS(UTRAN_CellId_Type p_CellId, + SS_RB_Identity p_Rb, + template (value) RRCDataReqType p_Pdu) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cas_DataReq_Common(p_CellId, p_Rb, tsc_SS_PS_Domain, p_Pdu); + + //============================================================================ + + template (present) RRC_DATA_IND car_CommonDirectTransfer(UTRAN_CellId_Type p_CellId, + template (present) SS_RB_Identity p_Rb, + template (present) SS_CN_DomainIdentity p_DomainIdentity, + template START_Value p_Start, + template (present) RRCDataIndType p_Pdu) := + { /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + cellId := f_UtranCellId2Int(p_CellId), + rB_Id := p_Rb, + ch := omit, // always set to omit + sapId := omit, // always set to omit + cN_Domain := p_DomainIdentity, + ttcn_start := p_Start, + msg := p_Pdu + }; + + template (present) RRC_DATA_IND car_InitDirectTransfer(UTRAN_CellId_Type p_CellId, + template (present) SS_RB_Identity p_Rb, + template (present) RRCDataIndType p_Pdu) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + car_CommonDirectTransfer(p_CellId, p_Rb, tsc_SS_CS_Domain, ?, p_Pdu); + + template (present) RRC_DATA_IND car_PS_InitDirectTransfer(UTRAN_CellId_Type p_CellId, + template (present) SS_RB_Identity p_Rb, + template (present) RRCDataIndType p_Pdu) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + car_CommonDirectTransfer(p_CellId, p_Rb, tsc_SS_PS_Domain, ?, p_Pdu); + + template (present) RRC_DATA_IND car_PS_UplinkDirectTransfer(UTRAN_CellId_Type p_CellId, + template (present) SS_RB_Identity p_Rb, + template (present) RRCDataIndType p_Pdu) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + car_CommonDirectTransfer(p_CellId, p_Rb, tsc_SS_PS_Domain, omit, p_Pdu); + + template (present) RRC_DATA_IND car_UplinkDirectTransfer(UTRAN_CellId_Type p_CellId, + template (present) SS_RB_Identity p_Rb, + template (present) RRCDataIndType p_Pdu) := + /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + car_CommonDirectTransfer(p_CellId, p_Rb, tsc_SS_CS_Domain, omit, p_Pdu); + + + template (value) SS_E_PUCH_Info cs_SS_E_PUCH_Info := + { /* @status APPROVED (LTE_IRAT) */ + lTGI_Presence := false, + e_TFCS_Info := { + reference_Beta_QPSK_List := { + { + reference_Code_Rate := 2, + reference_Beta := -10 + }, + { + reference_Code_Rate := 8, + reference_Beta := -3 + } + }, + reference_Beta_16QAM_List := { + { + reference_Code_Rate := 2, + reference_Beta := -5 + }, + { + reference_Code_Rate := 8, + reference_Beta := 2 + } + } + }, + snpl_ReportType := type1, + prxBASEdes := -112, + beaconPLEst := false, + tpc_StepSize := 1, + pebase_PowerControlGAP := 254, + ul_SynchronisationParameters := { + stepSize := 1, + frequency := 1 + }, + minimum_Allowed_Code_Rate := 0, + maximum_Allowed_Code_Rate := 63, + maximumNumOfRetransSchedInfo := 4, + retransTimerForSchedInfo := ms40, + powerOffsetForSchedInfo := omit, + e_DCH_phyLayCategory := 1, + e_PUCH_TS_Information_per_UARFCN := { + { + timeslotNumber := 2, + midambleAllocationMode := {defaultMidamble := NULL}, + midambleConfiguration := 8, + channelisation_Code := cc1_1 + } + }, + carrier_Frequency := omit + }; + +} diff --git a/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_TypeDefs.ttcn b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_TypeDefs.ttcn new file mode 100644 index 0000000..349dbde --- /dev/null +++ b/LTE_A_IWD_14wk37/Common/UTRAN/UTRAN_TypeDefs.ttcn @@ -0,0 +1,259 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-05 19:27:02 +0200 (Fri, 05 Sep 2014) $ +// $Rev: 12079 $ +/******************************************************************************/ + +module UTRAN_TypeDefs +{ + import from UTRAN_ASP_Definitions language "ASN.1:2002" all; + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from NAS_CommonTypeDefs all; + import from UTRAN_CommonDefs all; + import from NAS_24008TypeDefs all; + import from NAS_34109TypeDefs all; + + type enumerated UTRA_POSTAMBLE_STATE_Type {U1_IDLE, U2_CONNECTED, U3_HANDOVER, U4_CSFALLBACK, U5_CSCALL, U6_DEREGISTERED}; + type enumerated UTRA_POSTAMBLE_CONDITIONS {UTRA_C1, UTRA_C2, UTRA_C3, UTRA_C4} + + type integer SS_RB_Identity (-31..32); // RB identity type in TTCN tabular format + + group Ports { + type port UTRAN_AM_PORT message { + in U_RLC_AM_IND; + out U_RLC_AM_REQ; + }; + type port UTRAN_CMAC_PORT message { + in U_CMAC_CONFIG_CNF; + out U_CMAC_CONFIG_REQ; + }; + type port UTRAN_CPHY_PORT message { + in U_CPHY_CONFIG_CNF; + out U_CPHY_CONFIG_REQ; + }; + type port UTRAN_CRLC_PORT message { + in U_CRLC_CONFIG_CNF; + out U_CRLC_CONFIG_REQ; + }; + type port UTRAN_Dc_PORT message { + in RRC_DATA_IND; + out RRC_DATA_REQ; + }; + type port UTRAN_TM_PORT message { + in RLC_TR_DATA_IND; + out RLC_TR_DATA_REQ; + }; + type port UTRAN_UM_PORT message { + in RLC_UM_DATA_IND; + out RLC_UM_DATA_REQ; + }; + type port UTRAN_CPDCP_PORT message { + in U_CPDCP_CONFIG_CNF; + out U_CPDCP_CONFIG_REQ; + }; + type port UTRAN_PDCP_PORT message { + in PDCP_DATA_IND; + out PDCP_DATA_REQ; + }; + }; // end group Ports + + // ============================================================================= + // ASP Type Definition + // ----------------------------------------------------------------------------- + type union U_RLC_AM_IND { // @sic R5-103846 sic@ + RLC_AM_DATA_CNF cnf, + RLC_AM_DATA_IND data, + RLC_AM_TestDataInd testData + }; + + // ============================================================================= + // ASP Type Definition + // ----------------------------------------------------------------------------- + type union U_RLC_AM_REQ { // @sic R5-103846 sic@ + RLC_AM_DATA_REQ data, + RLC_AM_TestDataReq testData + }; + + // ============================================================================= + // ASP Type Definition + // To request the transmission of unstructured data using acknowledged mode in the downlink direction + // ----------------------------------------------------------------------------- + type record RLC_AM_TestDataReq { + integer cellId optional, + SS_RB_Identity rB_Id optional, // RB identity (RB3 or RB4) + TrD_PDU data optional + }; + + // ============================================================================= + // ASP Type Definition + // To indicate the reception of unstructured data using acknowledged mode in the uplink direction + // ----------------------------------------------------------------------------- + type record RLC_AM_TestDataInd { + integer cellId optional, + SS_RB_Identity rB_Id optional, // RB identity (RB3 or RB4) + TrD_PDU data optional + }; + + // ============================================================================= + // ASP Type Definition + // The ASP is used to indicate the receipt of the NAS PDU message using acknowledged operation (NAS <- RRC). + // ----------------------------------------------------------------------------- + type record RRC_DATA_IND { + integer cellId, // Cell Id + SS_RB_Identity rB_Id, // RB identity (RB3 or RB4_Type) + LogicChGERAN ch optional, // Logical channel (used for interworking with GERAN) + SapId sapId optional, // RRC SAP identifier (SAP0) + SS_CN_DomainIdentity cN_Domain, // CN domain identity + START_Value ttcn_start optional, // Mandatory in INITIAL DIRECT TRANSFER + RRCDataIndType msg // NAS PDU + }; + + // ============================================================================= + // ASP Type Definition + // The ASP is used to request the transmission of the NAS PDU message using acknowledged operation (NAS -> RRC). + // ----------------------------------------------------------------------------- + type record RRC_DATA_REQ { + integer cellId, + SS_RB_Identity rB_Id, // RB identity (RB3 or RB4_Type) + LogicChGERAN ch optional, // Logical channel (used for interworking with GERAN) + SapId sapId optional, // RRC SAP identifier (SAP0) + SS_CN_DomainIdentity cN_Domain, // CN domain identity + RRCDataReqType msg // NAS PDU + }; + + type union RRCDataIndType { + GMM_STATUS gmmStatus, + ACTIVATEPDPCONTEXTREQUESTul activatePDPContextRequestul, + ACTIVATERBTESTMODECOMPLETE activateRBTestModeComplete, + ACTIVATESECONDARYPDPCONTEXTREQUESTul activateSecondaryPDPContextRequestul, + ALERTINGul alertingul, + ATTACHCOMPLETE attachComplete, + ATTACHREQUEST attachRequest, + AUTHENTICATIONANDCIPHERINGRESPONSE authenticationAndCipheringResponse, + AUTHENTICATIONFAILURE authenticationFailure, + AUTHENTICATIONRESPONSE authenticationResponse, + AUTHENTICATION_AND_CIPHERING_FAILURE authenticationAndCipheringFailure, + CALLCONFIRMED callConfirmed, + CMSERVICEREQUEST cmServiceRequest, + CONNECTACKNOWLEDGE connectAcknowledge, + CONNECTul connectul, + DEACTIVATEPDPCONTEXTACCEPT deactivatePDPContextAccept, + DEACTIVATEPDPCONTEXTREQUEST deactivatePDPContextRequest, + DEACTIVATERBTESTMODECOMPLETE deactivateRBTestModeComplete, + DETACHREQUESTMO detachRequest, + ESETUP esetup, + IMSIDETACHINDICATION imsiDetachIndication, + LOCATIONUPDATINGREQUEST locationUpdatingRequest, + MODIFYPDPCONTEXTACCEPT_ul modifyPDPContextAccept, + PAGINGRESPONSE pagingResponse, + REGISTER register, + RELEASECOMPLETE releaseComplete, + RELEASEul releaseUL, + ROUTINGAREAUPDATEREQUEST routingAreaUpdateRequest, + ROUTING_AREA_UPDATE_COMPLETE routingAreaUpdateComplete, + SERVICEREQUEST serviceRequest, + SETUPul setupul, + SMSTATUS smStatus, + TMSIREALLOCATIONCOMPLETE tmsiReallocationComplete, + CLOSEUETESTLOOPCOMPLETE closeUeTestLoopComplete, // @sic R5s130195 Baseline Moving sic@ + OPENUETESTLOOPCOMPLETE openUeTestLoopComplete, + HOLD hold, //@sic R5-140683 sic@, + RETRIEVE retrieve, + FACILITY facility, // @sic R5-140683 sic@ + STATUS status, // @sic R5-140414 sic@ + DISCONNECTul disconnectUL, + MODIFYPDPCONTEXTREQUEST_ul modifyPDPContextRequest + }; + + type union RRCDataReqType { + ACTIVATERBTESTMODE activateRBTestMode, + ACTIVATESECONDARYPDPCONTEXTACCEPTdl activateSecondaryPDPContextAcceptdl, + ALERTINGdl alertingdl, + ATTACHACCEPT attachAccept, + ATTACHREJECT attachReject, // @sic R5s110596 sic@ + AUTHENTICATIONANDCIPHERINGREQUEST authenticationAndCipheringRequest, + AUTHENTICATIONREQUEST authenticationRequest, + CALLPROCEEDING callProceeding, + CMSERVICEACCEPT cmServiceAccept, + CMSERVICEREJECT cmServiceReject, + CONNECTACKNOWLEDGE connectAcknowledge, + CONNECTdl connectdl, + DEACTIVATEPDPCONTEXTACCEPT deactivatePDPContextAccept, + DEACTIVATEPDPCONTEXTREQUEST deactivatePDPContextRequest, + DEACTIVATERBTESTMODE deactivateRBTestMode, + DETACHACCEPTMO detachAcceptMO, + DISCONNECTdl disconnectDL, + FACILITY facility, + LOCATIONUPDATINGACCEPT locationUpdatingAccept, + LOCATIONUPDATINGREJECT locationUpdatingReject, + ACTIVATEPDPCONTEXTREJECT activatePDPContextReject, + ACTIVATEPDPCONTEXTACCEPTdl activatePDPContextAccept, + REGISTER register, + RELEASECOMPLETE releaseComplete, + REQUESTSECONDARYPDPCONTEXTACTIVATIONdl requestSecondaryPDPContextActivationdl, + RESETUEPOSITIONINGSTOREDINFORMATION resetUePositioningStoredInfo, + ROUTINGAREAUPDATEACCEPT routingAreaUpdateAccept, + ROUTINGAREAUPDATEREJECT routingAreaUpdateReject, + MODIFYPDPCONTEXTREQUEST_dl modifyPDPContextRequest, + SERVICEACCEPT serviceAccept, + SERVICEREJECT serviceReject, + SETUPdl setupdl, + SMSTATUS smStatus, + CLOSEUETESTLOOP closeUeTestLoop, // @sic R5s130195 Baseline Moving sic@ + OPENUETESTLOOP openUeTestLoop, + UPDATEUELOCATIONINFORMATION updateUeLocationInformation, + TMSIREALLOCATIONCOMMAND tmsiReallocationCommand, + HOLDACKNOWLEDGE holdAcknowledge, // @sic R5-140683 sic@ + STATUS_ENQUIRY statusEnquiry, // @sic R5-140414 sic@ + HOLDREJECT holdReject, + RETRIEVEACKNOWLEDGE retrieveAcknowledge, + RETRIEVEREJECT retrieveReject, + GMM_INFORMATION gmmInformation, // @sic R5-140717 sic@ + MM_INFORMATION mmInformation, // @sic R5-140718 sic@ + RELEASEdl releaseDL, + MODIFYPDPCONTEXTACCEPT_ul modifyPDPContextAccept + }; + + // ============================================================================= + // Structure Type Definition + // This is internally used to contain the SIB segments + // ----------------------------------------------------------------------------- + type record UTRAN_SIB_BCCH_BCH_Messages_Type { + BCCH_BCH_Message Seg1, + BCCH_BCH_Message Seg2, + BCCH_BCH_Message Seg3, + BCCH_BCH_Message Seg4, + BCCH_BCH_Message Seg5, + BCCH_BCH_Message Seg6, + BCCH_BCH_Message Seg7, + BCCH_BCH_Message Seg8 + }; + + // ============================================================================= + // PDCP + // ============================================================================= + // ASP Type Definition + // To request to transmit data (PDCP PDU) + // ----------------------------------------------------------------------------- + type record PDCP_DATA_REQ { + integer cellId optional, + SS_RB_Identity rB_Id optional, + PDCP_PDU data optional + }; + + // ============================================================================= + // ASP Type Definition + // To indicate to receive data (PDCP PDU) + // ----------------------------------------------------------------------------- + type record PDCP_DATA_IND { + integer cellId optional, + SS_RB_Identity rB_Id optional, + PDCP_PDU data optional + }; +} + diff --git a/LTE_A_IWD_14wk37/LTE_A/10/ESM_A_Testcases.ttcn b/LTE_A_IWD_14wk37/LTE_A/10/ESM_A_Testcases.ttcn new file mode 100644 index 0000000..b463c5a --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/10/ESM_A_Testcases.ttcn @@ -0,0 +1,757 @@ +// *************************************************************************** +// * $Date: 2013-08-19 12:44:31 +0200 (Mo, 19 Aug 2013)$ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// * $Rev: 11917 $ +// *************************************************************************** + +module ESM_A_Testcases { + + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_Component all; + import from EUTRA_CellInfo all; + import from EUTRA_ASP_SrbDefs all; + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from EUTRA_RRC_Templates all; + import from EUTRA_SRB_Templates all; + import from EUTRA_DRB_Templates all; + import from EUTRA_AspCommon_Templates all; + import from EUTRA_CommonProcedures all; + import from NAS_CommonTypeDefs all; + import from NAS_AuxiliaryDefsAndFunctions all; + import from EPS_NAS_TypeDefs all; + import from EPS_NAS_Constants all; + import from EPS_NAS_Templates all; + import from NAS_CommonTemplates all; + import from EPS_NAS_MsgContainers all; + import from EUTRA_RRCSteps all; + import from EUTRA_NASSteps all; + import from EUTRA_ConfigurationSteps all; + import from UpperTesterFunctions all; + import from EUTRA_SecurityFunctions all; + import from EUTRA_SecuritySteps all; + import from EUTRA_Timing all; + import from IP_PTC_CtrlMsgs all; + + template (present) NAS_UL_Message_Type cr_EXT_SERVICE_REQUEST_DeviceProperties(NAS_KsiValue p_KsiValue, + EPS_M_Tmsi p_MTmsi, + template (present) DeviceProperties p_DeviceProperties) := + /* @status APPROVED (LTE_A) */ + cr_EXT_SERVICE_REQUEST_Common(p_KsiValue, + '1000'B, // packet services via S1 + p_MTmsi, + -, + p_DeviceProperties); + + + template (present) NAS_UL_Message_Type cr_PDNConnReqAdditionalPDN_DeviceProperties(template (present) PdnTypeValue p_PDNTypeValue, + template AccessPointName p_AccessPointName, + template DeviceProperties p_DeviceProperties) := // 'initial request' 24.008 clause 10.5.6.17 + /* @status APPROVED (LTE, LTE_A, LTE_IRAT) */ + cr_PDN_CONNECTIVITY_REQUEST_Common(-, -, p_PDNTypeValue, '001'B, omit, p_AccessPointName, -, p_DeviceProperties); + + template (present) NAS_UL_Message_Type cdr_BearerResourceModReq_DeviceProperties(template (present) ProcedureTransactionIdentifier p_ProcTi, + EPS_BearerIdentity p_LinkedEpsBearerId, + template ESM_Cause p_Cause, + template DeviceProperties p_DeviceProperties) + modifies cr_508_BearerResourceModReq := + { /* @status APPROVED (LTE) */ + bEARER_RESOURCE_MODIFICATION_REQUEST := { + deviceProperties := p_DeviceProperties + } + }; + + template (present) EstablishmentCause cr_EstablishmentCause_delayTolerantAccess := delayTolerantAccess_v1020; /* @status APPROVED (LTE_A) */ + template (value) EPS_NetworkFeatureSupport cs_EPS_NwkFtSup_ExtServiceReq := cs_EPS_NwkFtSup_Common('1'B, -, -, -, '1'B); /* @status APPROVED (LTE_A) */ + + //---------------------------------------------------------------------------- + /* same as the function in ESM_Testcases.ttcn + * @desc Send RRCConnectionReconfiguration with piggy-backed ACTIVATE DEFAULT EPS BEARER CONTEXT REQUEST and + * ACTIVATE DEDICATED EPS BEARER CONTEXT REQUEST for a default and a dedicated bearer to an additional PDN. + * Note: This functions is used when activating a default bearer to an additional PDN. + * @param p_CellId + * @param p_RRC_TI + * @param p_DefaultEpsBearerId + * @param p_DedicatedEpsBearerId + * @param p_EpsTI + * @param p_AccessPointName + * @param p_PDN_Address + * @param p_PCO + * @status APPROVED (LTE) + */ + function f_EUTRA_TxActivateDedicatedBearerCtxtOnAdditionalPDN (EUTRA_CellId_Type p_CellId, + RRC_TransactionIdentifier p_RRC_TI, + EPS_BearerIdentity p_DefaultEpsBearerId, + EPS_BearerIdentity p_DedicatedEpsBearerId, + template (value) ProcedureTransactionIdentifier p_EpsTI, + template (value) AccessPointName p_AccessPointName, + template (value) PDN_Address p_PDN_Address, + template (omit) ProtocolConfigOptions p_PCO) runs on EUTRA_PTC + { + // send RRCConnectionReconfiguration with piggy-backed ACTIVATE DEFAULT EPS BEARER CONTEXT REQUEST + var ProcedureTransactionIdentifier v_EpsTi2 := tsc_PTI_Unassigned; + var template (value) NAS_DL_Message_Type v_ActDefaultEPSBearerCxtReq := + cs_508_ActivateDefEpsBearerContextRequest(p_DefaultEpsBearerId, + p_EpsTI, + p_AccessPointName, + p_PDN_Address, + -, + p_PCO); + var template (value) NAS_DL_Message_Type v_ActDedicatedEPSBearerCxtReq := + cs_508_ActDedicatedEPSBearerCxtReq(p_DedicatedEpsBearerId, + v_EpsTi2, + cs_LinkedId(hex2bit( p_DefaultEpsBearerId)), + cds_EPS_QoS_Dedi_nonGBR_QCI, + f_EUTRA_Get_508_TrafficFlowTemplate(2, p_DedicatedEpsBearerId)); + + var template (value) NAS_MSG_RequestList_Type v_NAS_MsgList := { + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, v_ActDefaultEPSBearerCxtReq), + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, v_ActDedicatedEPSBearerCxtReq) + }; + + var DRB_IdentityList_Type v_DrbList := { + tsc_DRB2, + tsc_DRB3 + }; + + f_IP_ChangeEutraCell(IP, p_CellId); + f_EUTRA_RRCConnectionReconfigurationWithPiggyNAS_DrbReconfig(p_CellId, p_RRC_TI, v_DrbList, v_NAS_MsgList); + + } + + //============================================================================ + /* + * @desc REFERENCE TS 36.523-1 clause 10.5.1a + * @status + */ + function f_TC_10_5_1a_EUTRA() runs on EUTRA_PTC + { /* UE requested PDN connectivity accepted / Dual priority / T3396 override */ + + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c1); + + // Create cell and send out system information + f_EUTRA_CellConfig_DRB_Common(eutra_CellA, 1, 0); + + //Equip UE with a USIM containing default values except for those shown in TC10.5.1a + f_UT_USIM_Insert(UT, "36.523-1 Table 10.5.1a.3.1-1"); //@sic R5-140958 sic@* + + f_EUTRA_Preamble(eutra_CellA, STATE2_IDLEUPDATE,-,-,cs_EPS_NwkFtSup_ExtServiceReq); // @sic R5-142890 sic@ + + f_EUTRA_TestBody_Set(true); + fl_TC_10_5_1a_Body(); + f_EUTRA_TestBody_Set(false); + + f_EUTRA_Postamble(eutra_CellA, E2_CONNECTED); + } + + function fl_TC_10_5_1a_Body() runs on EUTRA_PTC + { + var EPS_BearerIdentity v_EpsBearerId2 := '6'H; + var NAS_MSG_Indication_Type v_NasInd; + var ProcedureTransactionIdentifier v_PTId_UE; + var template (omit) ProtocolConfigOptions v_Pco; + var template (value) AccessPointName v_AccessPointName; + var PDN_Address v_PDN_Address2; + var SRB_COMMON_IND v_ReceivedAsp; + var PDN_CONNECTIVITY_REQUEST v_PDNConnReq; + var NasCount_Type v_NasCountUL; + var EUTRA_SecurityParams_Type v_SecurityParams := f_EUTRA_Security_Get(); + var template (value) EUTRA_FDD_TDD_CellInfo_Type v_EUTRA_FDD_TDD_Info := f_EUTRA_CellInfo_GetFDD_TDD_Info (eutra_CellA); //Get FDD or TDD mode from Cell-configuration + var octetstring v_APN_Value := tsc_APN1; // APN-1(New PDN name), different from default + var GutiParameters_Type v_GutiParams := f_EUTRA_CellInfo_GetGuti(eutra_CellA); + var B1_Type v_DeviceProperties_1 := '1'B ; + var B1_Type v_DeviceProperties_0 := '0'B ; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var template (value) ESM_Cause v_EsmCause26; + + timer t_T3396:= f_EUTRA_SetTimerToleranceMin(eutra_CellA, nasTimer, 60.0); + + // Cause the UE to request connectivity to an additional PDN. + //@siclog "Step 1" siclog@ + f_UT_RequestAdditionalPDNConnectivity(UT, hex2int(v_EpsBearerId2), tsc_APN1_string); + + + //@siclog "Step 2" siclog@ + // RRC establishment cause shall be set to Delay tolerant according to 24.301 Table D.1.1 + v_NasInd:= f_EUTRA_RRC_ConnEst_DefWithNas(eutra_CellA, + tsc_RRC_TI_Def, + cr_EstablishmentCause_delayTolerantAccess, // @sic R5-142890 sic@ + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_EXT_SERVICE_REQUEST_DeviceProperties(v_SecurityParams.KSIasme, + bit2oct(v_GutiParams.M_TMSI), + cr_DeviceProperties('D'H, v_DeviceProperties_1)))); + + + + //@siclog "Step 3" siclog@ + // The SS establishes a DRB associated with the default EPS bearer context activated during the preamble. + // Activate security in AS with parameters from AKA performed in preamble + v_NasCountUL := v_NasInd.SecurityProtection.NasCount; + v_SecurityParams := f_EUTRA_Authentication_InitAS(v_SecurityParams, v_NasCountUL); + v_SecurityParams := f_EUTRA_RRC_ActivateSecurity(eutra_CellA, + v_SecurityParams, + v_NasCountUL); + f_EUTRA_Security_Set(v_SecurityParams); + + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_CellA, + cs_TimingInfo_Now, + cs_RRCConnectionReconfiguration_Common(v_RRC_TI, + omit, + omit, + cs_508_RadioResourceConfigDedicated_SRB2( {cs_508_DRB_ToAddMod_DEFAULT_AM (tsc_DRB1)}, + cs_508_MAC_MainConfig_Explicit_RBC_DrxL, + cs_508_PhysicalConfigDedicated_Default_RBC(v_EUTRA_FDD_TDD_Info.cqi_ReportConfig, + v_EUTRA_FDD_TDD_Info.soundingRS_UL_Config, + f_EUTRA_CellInfo_GetAntennaInfoDedicated (eutra_CellA))), + omit))); + + // receive RRCConnectionReconfigurationComplete + SRB.receive(car_SRB1_RrcPdu_IND(eutra_CellA, + cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + + //@siclog "Step 4" siclog@ + // Check: Does the UE transmit a PDN CONNECTIVITY REQUEST as specified to request an additional PDN? + SRB.receive(car_SRB2_NasPdu_IND(eutra_CellA, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_PDNConnReqAdditionalPDN_DeviceProperties(f_GetPdnType(), + cr_AccessPointName(v_APN_Value), + cr_DeviceProperties('D'H, v_DeviceProperties_1))))) -> value v_ReceivedAsp; + + + v_PDNConnReq := v_ReceivedAsp.Signalling.Nas[0].Pdu.Msg.pDN_CONNECTIVITY_REQUEST; + v_PTId_UE := v_PDNConnReq.procedureTransactionIdentifier; + + // The SS transmits a PDN CONNECTIVITY REJECT message. + //@siclog "Step 5" siclog@ + v_EsmCause26 := cs_ESM_Cause_v ('00011010'B); + SRB.send(cas_SRB2_NasPdu_REQ(eutra_CellA, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_PdnConnectReject( '0'H, // no EPS bearer assigned + v_PTId_UE, + v_EsmCause26, + cs_GprsTimer3(tsc_Gprs3TimerUnit_1min, '00001'B))))); + // timer T3396 start + t_T3396.start; + + // Cause the UE to request connectivity to the same PDN used in step 1 with the NAS signalling low priority indicator set to indicate normal priority. + //@siclog "Step 6" siclog@ + f_UT_RequestAdditionalPDNConnectivity(UT, hex2int(v_EpsBearerId2), tsc_APN1_string); // @sic R5-142890 sic@ + + alt{ + []t_T3396.timeout + { + t_T3396.stop; + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "T3396 timeout, either operator too slow (1 min), or UE failure"); + } + + []//@siclog "Step 7" siclog@ + // Check: Does the UE transmit a PDN CONNECTIVITY REQUEST as specified to request an additional PDN before the time indicated by timer T3396 has passed? + SRB.receive(car_SRB2_NasPdu_IND(eutra_CellA, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_PDNConnReqAdditionalPDN_DeviceProperties(f_GetPdnType(), + cr_AccessPointName(v_APN_Value), + cr_DeviceProperties('D'H, v_DeviceProperties_0))))) -> value v_ReceivedAsp + { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 7"); + t_T3396.stop; + } + } + + v_PDNConnReq := v_ReceivedAsp.Signalling.Nas[0].Pdu.Msg.pDN_CONNECTIVITY_REQUEST; + v_PTId_UE := v_PDNConnReq.procedureTransactionIdentifier; + v_AccessPointName := cs_AccessPointName(v_APN_Value); + v_Pco := v_PDNConnReq.protocolConfigurationOptions; + + // Change from DRB1 to DRB2 to handle U Plane data + f_EUTRA_StartIPfor2ndPDN(eutra_CellA); + + //@siclog "Step 8" siclog@ + // The SS transmits an ACTIVATE DEFAULT EPS BEARER CONTEXT REQUEST message with IE EPS Bearer Identity set to new EPS bearer context. + // Ask UE to get its additional IP adress via DHCP or ICMP + v_PDN_Address2 := f_EUTRA_GetPDNAddress (f_CheckPCOforIPallocationViaNas (v_Pco), PDN_2); + f_EUTRA_TxActivateDefaultEpsBearerCtxtReq_DrbReconfig (eutra_CellA, + v_RRC_TI, + v_EpsBearerId2, // Default bearer ID to additional PDN + v_PTId_UE, // use value as defined by the UE + v_AccessPointName, + v_PDN_Address2, + f_GetDefaultProtocolConfigOptions(v_Pco)); + // Check: Does the UE transmit an ACTIVATE DEFAULT EPS BEARER CONTEXT ACCEPT message for the additional default EPS bearer? + //@siclog "Step 9" siclog@ + SRB.receive(car_SRB2_NasPdu_IND(eutra_CellA, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_ActivateDefEpsBearerContextAccept(v_EpsBearerId2)))); + + // 1.2s delay acc. to 36.508 cl. 4.5A.1 to allow user-plane signalling + f_EUTRA_DelayForUserPlaneSignalling(); + } + + //============================================================================ + /* + * @desc REFERENCE TS 36.523-1 clause 10.5.1b + * @status + */ + function f_TC_10_5_1b_EUTRA() runs on EUTRA_PTC + { /* UE requested PDN connectivity accepted / Dual priority / T3396 override */ + + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c1); + + // Create cell and send out system information + f_EUTRA_CellConfig_DRB_Common(eutra_CellA, 1, 0); + + //Equip UE with a USIM containing default values except for those shown in TC10.5.1b + f_UT_USIM_Insert(UT, "36.523-1 Table 10.5.1b.3.1-1");// Dual priority configuration in pre-test condition is under discussion + + f_EUTRA_Preamble(eutra_CellA, STATE2_IDLEUPDATE,-,-,cs_EPS_NwkFtSup_ExtServiceReq); // @sic R5-142889 sic@ + + f_EUTRA_TestBody_Set(true); + fl_TC_10_5_1b_Body(); + f_EUTRA_TestBody_Set(false); + + f_EUTRA_Postamble(eutra_CellA, E2_CONNECTED); + } + + function fl_TC_10_5_1b_Body() runs on EUTRA_PTC + { + var EPS_BearerIdentity v_EpsBearerId2 := '6'H; + var NAS_MSG_Indication_Type v_NasInd; + var EUTRA_SecurityParams_Type v_SecurityParams := f_EUTRA_Security_Get(); + var octetstring v_APN_Value := tsc_APN1; // APN-1(New PDN name), different from default + var GutiParameters_Type v_GutiParams := f_EUTRA_CellInfo_GetGuti(eutra_CellA); + var NasCount_Type v_NasCountUL; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var template (value) EUTRA_FDD_TDD_CellInfo_Type v_EUTRA_FDD_TDD_Info := f_EUTRA_CellInfo_GetFDD_TDD_Info (eutra_CellA); + var B1_Type v_DeviceProperties_1 := '1'B ; + var B1_Type v_DeviceProperties_0 := '0'B ; + timer t_T3346:= f_EUTRA_SetTimerToleranceMax(eutra_CellA, nasTimer, 60.0); + + // Cause the UE to request connectivity to an additional PDN. + //@siclog "Step 1" siclog@ + f_UT_RequestAdditionalPDNConnectivity(UT, hex2int(v_EpsBearerId2), tsc_APN1_string); + + + //@siclog "Step 1A- 2" siclog@ + // RRC establishment cause shall be set to Delay tolerant according to 24.301 Table D.1.1 + v_NasInd:= f_EUTRA_RRC_ConnEst_DefWithNas(eutra_CellA, + tsc_RRC_TI_Def, + cr_EstablishmentCause_delayTolerantAccess, // @sic R5-142889 sic@ + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_EXT_SERVICE_REQUEST_DeviceProperties(v_SecurityParams.KSIasme, + bit2oct(v_GutiParams.M_TMSI), + cr_DeviceProperties('D'H, v_DeviceProperties_1)))); + //+ The SS transmits a SERVICE REJECT message with the EMM cause set to #22 + //+ (UE identity cannot be derived by the network). + //@siclog "Step 3" siclog@ + SRB.send(cas_SRB1_NasPdu_REQ(eutra_CellA, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_NoSecurityProtection, + cs_508_SERVICE_REJECT(tsc_Cause_Congestion, + cs_GprsTimer_tv('5F'O, '000'B, '11110'B))))); //@sic R5-142874 sic@ + + + //@siclog "Step 4" siclog@ + + t_T3346.start; + + f_EUTRA_RRC_ConnectionRelease(eutra_CellA); //Release cause= other + + //@siclog "Step 5" siclog@ + //Cause the UE to request connectivity to the same PDN as used in step 1, with the NAS signalling low priority indicator set to indicate normal priority. + f_UT_RequestAdditionalPDNConnectivity(UT, hex2int(v_EpsBearerId2), tsc_APN1_string); + + //@siclog "Step 5A- 6" siclog@ + v_NasInd:= f_EUTRA_RRC_ConnEst_DefWithNas(eutra_CellA, + tsc_RRC_TI_Def, + cr_EstablishmentCause_MoData, // @sic R5-142889 sic@ + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_EXT_SERVICE_REQUEST_DeviceProperties(v_SecurityParams.KSIasme, + bit2oct(v_GutiParams.M_TMSI), + cr_DeviceProperties('D'H, v_DeviceProperties_0)))); + + //@siclog "Step 6A" siclog@ + // The SS establishes a DRB associated with the default EPS bearer context activated + + // @sic R5-142889 sic@ + v_NasCountUL := v_NasInd.SecurityProtection.NasCount; + v_SecurityParams := f_EUTRA_Authentication_InitAS(v_SecurityParams, v_NasCountUL); + v_SecurityParams := f_EUTRA_RRC_ActivateSecurity(eutra_CellA, + v_SecurityParams, + v_NasCountUL); + f_EUTRA_Security_Set(v_SecurityParams); + + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_CellA, + cs_TimingInfo_Now, + cs_RRCConnectionReconfiguration_Common(v_RRC_TI, + omit, + omit, + cs_508_RadioResourceConfigDedicated_SRB2( {cs_508_DRB_ToAddMod_DEFAULT_AM (tsc_DRB1)}, + cs_508_MAC_MainConfig_Explicit_RBC_DrxL, + cs_508_PhysicalConfigDedicated_Default_RBC(v_EUTRA_FDD_TDD_Info.cqi_ReportConfig, + v_EUTRA_FDD_TDD_Info.soundingRS_UL_Config, + f_EUTRA_CellInfo_GetAntennaInfoDedicated (eutra_CellA))), + omit))); + // receive RRCConnectionReconfigurationComplete + SRB.receive(car_SRB1_RrcPdu_IND(eutra_CellA, cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + + + //@siclog "Step 7" siclog@ + + alt{ + + [] SRB.receive(car_SRB2_NasPdu_IND (eutra_CellA, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_PDNConnReqAdditionalPDN_DeviceProperties(f_GetPdnType(), + cr_AccessPointName(v_APN_Value), + cr_DeviceProperties('D'H, v_DeviceProperties_0))))) + { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 7"); + t_T3346.stop; + } + + [] t_T3346.timeout + { + + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "T3396 timeout, No PDN as specified in Table 10.5.1b.3.3-5 received"); + } + } + + } + + //============================================================================ + /* + * @desc REFERENCE TS 36.523-1 clause 10.5.4 + * @status APPROVED (LTE_A) + */ + function f_TC_10_5_4_EUTRA() runs on EUTRA_PTC + { /* UE requested PDN connectivity not accepted / Network reject with Extended Wait Timer */ + + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c1); + + // Create cell and send out system information + f_EUTRA_CellConfig_DRB_Common(eutra_CellA, 1, 0); + //Equip UE with a USIM containing default values except for those shown in Table 10.5.4.3.1-2 + f_UT_USIM_Insert(UT, "36.523-1 Table 10.5.4.3.1-2"); + + f_EUTRA_Preamble (eutra_CellA, STATE2_IDLEUPDATE, -, -, cs_EPS_NwkFtSup_ExtServiceReq); // @sic R5s140153 sic@ + + f_EUTRA_TestBody_Set(true); + fl_TC_10_5_4_Body(); + f_EUTRA_TestBody_Set(false); + + f_EUTRA_Postamble(eutra_CellA, E2_CONNECTED); + } // function f_TC_10_5_4_EUTRA + + /* + * @desc test body of TC_10_5_4 + * @status APPROVED (LTE_A) + */ + function fl_TC_10_5_4_Body() runs on EUTRA_PTC + { + var EPS_BearerIdentity v_EpsBearerId2 := '6'H; + var NAS_MSG_Indication_Type v_NasInd; + var ProcedureTransactionIdentifier v_PTId_UE; + var template (omit) ProtocolConfigOptions v_Pco; + var template (value) AccessPointName v_AccessPointName; + var PDN_Address v_PDN_Address2; + var SRB_COMMON_IND v_ReceivedAsp; + var PDN_CONNECTIVITY_REQUEST v_PDNConnReq; + var NasCount_Type v_NasCountUL; + var EUTRA_SecurityParams_Type v_SecurityParams := f_EUTRA_Security_Get(); + var template (value) EUTRA_FDD_TDD_CellInfo_Type v_EUTRA_FDD_TDD_Info := f_EUTRA_CellInfo_GetFDD_TDD_Info (eutra_CellA); //Get FDD or TDD mode from Cell-configuration + var octetstring v_APN_Value := tsc_APN3; // APN-3(New PDN name), different from default, i.e. APN for which service is granted, see step 7 + + var GutiParameters_Type v_GutiParams := f_EUTRA_CellInfo_GetGuti(eutra_CellA); + + var B1_Type v_DeviceProperties := '1'B; + var ReleaseCause v_ReleaseCause := other; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var ExtendedWaitTime_r10_Type v_ExtendedWaitTime_r10 := 60; // @sic R5-143213 sic@ + + var float v_T3346Val := f_EUTRA_SetTimerToleranceMin(eutra_CellA, nasTimer, int2float(v_ExtendedWaitTime_r10)) - (int2float(tsc_EUTRA_DelayAfterRRCConnectionRelease) / 1000.0); + + // Cause the UE to request connectivity to an additional PDN. + //@siclog "Step 1" siclog@ + f_UT_RequestAdditionalPDNConnectivity(UT, hex2int(v_EpsBearerId2), tsc_APN1_string); + + //The UE transmits an RRCConnectionRequest message with establishment cause set to delayTolerantAccess_v1020 + //@siclog "Step 1A" siclog@ + //Check: Does the UE transmit EXTENDED SERVICE REQUEST message? + //@siclog "Step 2" siclog@ + v_NasInd:= f_EUTRA_RRC_ConnEst_DefWithNas(eutra_CellA, + tsc_RRC_TI_Def, + cr_EstablishmentCause_delayTolerantAccess, + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_EXT_SERVICE_REQUEST_DeviceProperties(v_SecurityParams.KSIasme, + bit2oct(v_GutiParams.M_TMSI), + cr_DeviceProperties('D'H,v_DeviceProperties)))); // @sic R5s140153 sic@ + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 2"); + + //The SS releases the RRC connection. + //@siclog "Step 3" siclog@ + f_EUTRA_RRC_ConnectionRelease_Common(eutra_CellA, + cs_RRCConnectionRelease_extendedWaitTime_r10(v_RRC_TI, + v_ReleaseCause, + v_ExtendedWaitTime_r10)); + // Cause the UE to request connectivity to an additional PDN. + //@siclog "Step 3A" siclog@ + f_UT_RequestAdditionalPDNConnectivity(UT, hex2int(v_EpsBearerId2), tsc_APN2_string); // @sic R5-143213 sic@ + + //@siclog "Step 4" siclog@ + //Check: Does the UE transmit an RRCConnectionRequest message within 60 s? + if (f_EUTRA_RRC_RRCConnectionRequest_Check(eutra_CellA, v_T3346Val)) { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 4"); + } + // Cause the UE to request connectivity to an additional PDN. + //@siclog "Step 4AA" siclog@ + f_UT_RequestAdditionalPDNConnectivity(UT, hex2int(v_EpsBearerId2), tsc_APN3_string); // @sic R5-143213 sic@ + + //The UE transmits an RRCConnectionRequest message with establishment cause set to delayTolerantAccess_v1020 + //@siclog "Step 4A" siclog@ + //The UE transmits an EXTENDED SERVICE REQUEST message. + //@siclog "Step 5" siclog@ + v_NasInd:= f_EUTRA_RRC_ConnEst_DefWithNas(eutra_CellA, + tsc_RRC_TI_Def, + cr_EstablishmentCause_delayTolerantAccess, + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_EXT_SERVICE_REQUEST_DeviceProperties(v_SecurityParams.KSIasme, + bit2oct(v_GutiParams.M_TMSI), + cr_DeviceProperties('D'H,v_DeviceProperties)))); // @sic R5s140153 sic@ + //@siclog "Step 6" siclog@ + // The SS establishes a DRB associated with the default EPS bearer context activated during the preamble. + // Activate security in AS with parameters from AKA performed in preamble + v_NasCountUL := v_NasInd.SecurityProtection.NasCount; + v_SecurityParams := f_EUTRA_Authentication_InitAS(v_SecurityParams, v_NasCountUL); + v_SecurityParams := f_EUTRA_RRC_ActivateSecurity(eutra_CellA, + v_SecurityParams, + v_NasCountUL); + f_EUTRA_Security_Set(v_SecurityParams); + + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_CellA, + cs_TimingInfo_Now, + cs_RRCConnectionReconfiguration_Common(v_RRC_TI, + omit, + omit, + cs_508_RadioResourceConfigDedicated_SRB2( {cs_508_DRB_ToAddMod_DEFAULT_AM (tsc_DRB1)}, + cs_508_MAC_MainConfig_Explicit_RBC_DrxL, + cs_508_PhysicalConfigDedicated_Default_RBC(v_EUTRA_FDD_TDD_Info.cqi_ReportConfig, + v_EUTRA_FDD_TDD_Info.soundingRS_UL_Config, + f_EUTRA_CellInfo_GetAntennaInfoDedicated (eutra_CellA))), + omit))); + // receive RRCConnectionReconfigurationComplete + SRB.receive(car_SRB1_RrcPdu_IND(eutra_CellA, + cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + //@siclog "Step 7" siclog@ + // Check: Does the UE transmit a PDN CONNECTIVITY REQUEST as specified to request an additional PDN? + SRB.receive(car_SRB2_NasPdu_IND(eutra_CellA, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_PDNConnReqAdditionalPDN_DeviceProperties(f_GetPdnType(), + cr_AccessPointName(v_APN_Value), + cr_DeviceProperties('C'H, v_DeviceProperties))))) -> value v_ReceivedAsp; // @sic R5s140153 sic@ + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 7"); + + v_PDNConnReq := v_ReceivedAsp.Signalling.Nas[0].Pdu.Msg.pDN_CONNECTIVITY_REQUEST; + v_PTId_UE := v_PDNConnReq.procedureTransactionIdentifier; + v_AccessPointName := cs_AccessPointName(v_APN_Value); + v_Pco := v_PDNConnReq.protocolConfigurationOptions; + + // Change from DRB1 to DRB2 to handle U Plane data + f_EUTRA_StartIPfor2ndPDN(eutra_CellA); + + //@siclog "Step 8" siclog@ + // The SS transmits an ACTIVATE DEFAULT EPS BEARER CONTEXT REQUEST message with IE EPS Bearer Identity set to new EPS bearer context. + // Ask UE to get its additional IP adress via DHCP or ICMP + v_PDN_Address2 := f_EUTRA_GetPDNAddress (f_CheckPCOforIPallocationViaNas (v_Pco), PDN_2); + f_EUTRA_TxActivateDefaultEpsBearerCtxtReq_DrbReconfig (eutra_CellA, + v_RRC_TI, + v_EpsBearerId2, // Default bearer ID to additional PDN + v_PTId_UE, // use value as defined by the UE + v_AccessPointName, + v_PDN_Address2, + f_GetDefaultProtocolConfigOptions(v_Pco)); + // Check: Does the UE transmit an ACTIVATE DEFAULT EPS BEARER CONTEXT ACCEPT message for the additional default EPS bearer? + //@siclog "Step 9" siclog@ + SRB.receive(car_SRB2_NasPdu_IND(eutra_CellA, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_ActivateDefEpsBearerContextAccept(v_EpsBearerId2)))); + + // 1.2s delay acc. to 36.508 cl. 4.5A.1 to allow user-plane signalling + f_EUTRA_DelayForUserPlaneSignalling(); + + } + + //============================================================================ + /* + * @desc REFERENCE TS 36.523-1 clause 10.8.8 + * @status + */ + function f_TC_10_8_8_EUTRA() runs on EUTRA_PTC + { /* UE requested bearer resource modification / Dual priority / low priority override */ + + f_UT_USIM_Insert(UT, "36.523-1 Table 10.8.8.3.1-1");// // @sic R5-140958 sic@ + + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c1); + + // Create cell and send out system information + f_EUTRA_CellConfig_DRB_Common(eutra_CellA, 2, 0); + f_EUTRA_Preamble(eutra_CellA, STATE2_IDLEUPDATE); + + f_EUTRA_TestBody_Set(true); + fl_TC_10_8_8_Body(); + + // Postamble + f_EUTRA_TestBody_Set(false); + f_EUTRA_Postamble(eutra_CellA, E2_CONNECTED); + + } + + function fl_TC_10_8_8_Body() runs on EUTRA_PTC + { + var EPS_BearerIdentity v_EpsBearerId2 := '6'H; + var EPS_BearerIdentity v_EpsDedicatedBearerId := '7'H; + var ProcedureTransactionIdentifier v_PTId_UE; + var template (omit) ProtocolConfigOptions v_Pco; + var template (value) AccessPointName v_AccessPointName; + var PDN_Address v_PDN_Address2; + var SRB_COMMON_IND v_ReceivedAsp; + var PDN_CONNECTIVITY_REQUEST v_PDNConnReq; + var NAS_MSG_Indication_Type v_NasInd; + var template (value) EUTRA_FDD_TDD_CellInfo_Type v_EUTRA_FDD_TDD_Info := f_EUTRA_CellInfo_GetFDD_TDD_Info (eutra_CellA); //Get FDD or TDD mode from Cell-configuration + var EUTRA_SecurityParams_Type v_SecurityParams := f_EUTRA_Security_Get(); + var NasCount_Type v_NasCountUL; + var template (value) PhysicalConfigDedicated_AntennaInfo_Type v_AntennaInfo := f_EUTRA_CellInfo_GetAntennaInfoDedicated (eutra_CellA); + var octetstring v_APN_Value := tsc_APN1; // APN-1(New PDN name), different from default + var B1_Type v_DeviceProperties := '0'B ; + var ProcedureTransactionIdentifier v_EpsTi := tsc_PTI_Unassigned; + + + // Cause the UE to request connectivity to an additional PDN. + //@siclog "Step 1" siclog@ + f_UT_RequestAdditionalPDNConnectivity(UT, hex2int(v_EpsBearerId2), tsc_APN1_string); // APN-1(New PDN name), different from default + + // UE sends SERVICE REQUEST message + //@siclog "Step 2" siclog@ + v_NasInd := f_EUTRA_RRC_ConnEst_DefWithNas(eutra_CellA, + tsc_RRC_TI_Def, + cr_EstablishmentCause_MoData, + cr_NAS_Indication (tsc_SHT_IntegrityProtected, + cr_508_SERVICE_REQUEST(f_EUTRA_SecurityKSIasme_Get()))); + + //@siclog "Step 3" siclog@ + // The SS establishes SRB2 and DRB associated with default EPS bearer context. + // (a first PDN obtained during the attach procedure). + v_NasCountUL := v_NasInd.SecurityProtection.NasCount; + v_SecurityParams := f_EUTRA_Authentication_InitAS(v_SecurityParams, v_NasCountUL); + v_SecurityParams := f_EUTRA_RRC_ActivateSecurity(eutra_CellA, + v_SecurityParams, + v_NasCountUL); + f_EUTRA_Security_Set(v_SecurityParams); + + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_CellA, + cs_TimingInfo_Now, + cs_RRCConnectionReconfiguration_Common(tsc_RRC_TI_Def, + omit, + omit, + cs_508_RadioResourceConfigDedicated_SRB2( {cs_508_DRB_ToAddMod_DEFAULT_AM(tsc_DRB1)}, + cs_508_MAC_MainConfig_Explicit_RBC_DrxL, + cs_508_PhysicalConfigDedicated_Default_RBC(v_EUTRA_FDD_TDD_Info.cqi_ReportConfig, + v_EUTRA_FDD_TDD_Info.soundingRS_UL_Config, + v_AntennaInfo)), + omit))); + // receive RRCConnectionReconfigurationComplete + SRB.receive(car_SRB1_RrcPdu_IND(eutra_CellA, + cr_508_RRCConnectionReconfigurationComplete(tsc_RRC_TI_Def))); + + // Step 4. Check: Does the UE include the Device properties IE set to "MS is not configured for NAS signalling low priority"? + SRB.receive(car_SRB2_NasPdu_IND(eutra_CellA, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_PDNConnReqAdditionalPDN_DeviceProperties(f_GetPdnType(), + cr_AccessPointName(v_APN_Value), + cr_DeviceProperties('D'H, v_DeviceProperties))))) -> value v_ReceivedAsp; + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 4"); + + v_NasInd := v_ReceivedAsp.Signalling.Nas[0]; + v_PDNConnReq := v_NasInd.Pdu.Msg.pDN_CONNECTIVITY_REQUEST; + + // Get Procedure transaction identifier assigned by the UE + v_PTId_UE := v_PDNConnReq.procedureTransactionIdentifier; + v_AccessPointName := cs_AccessPointName(v_APN_Value); + v_Pco := v_PDNConnReq.protocolConfigurationOptions; + + // Change from DRB1 to DRB2 to handle U Plane data + f_EUTRA_StartIPfor2ndPDN(eutra_CellA); + + // The SS transmits an ACTIVATE DEFAULT EPS BEARER CONTEXT REQUEST and + // a ACTIVATE DEDICATED EPS BEARER CONTEXT REQUEST included + // in dedicatedInfoNASList of RRCConnectionReconfiguration message. + // Ask UE to get its additional IP adress via DHCP or ICMP + //@siclog "Step 5" siclog@ + v_PDN_Address2 := f_EUTRA_GetPDNAddress (f_CheckPCOforIPallocationViaNas (v_Pco), PDN_2); + f_EUTRA_TxActivateDedicatedBearerCtxtOnAdditionalPDN(eutra_CellA, + tsc_RRC_TI_Def, + v_EpsBearerId2, // Default bearer ID to additional PDN + v_EpsDedicatedBearerId, // Dedicated bearer ID + v_PTId_UE, // use value as defined by the UE + v_AccessPointName, + v_PDN_Address2, + f_GetDefaultProtocolConfigOptions(v_Pco)); + + // Check: Does the UE transmit an ACTIVATE DEFAULT EPS BEARER CONTEXT ACCEPT message as specified? + // Parallel behaviour: Check: Does the UE transmit an ACTIVATE DEDICATED EPS BEARER CONTEXT ACCEPT message as specified? + //@siclog "Step 6" siclog@ + interleave { + [] SRB.receive(car_SRB2_NasPdu_IND(eutra_CellA, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_ActivateDefEpsBearerContextAccept(v_EpsBearerId2)))) + {} + [] SRB.receive(car_SRB2_NasPdu_IND(eutra_CellA, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_ActDedicatedEPSBearerCxtAccept(v_EpsDedicatedBearerId)))) + {} + }; + + // 1.2s delay acc. to 36.508 cl. 4.5A.1 to allow user-plane signalling + f_EUTRA_DelayForUserPlaneSignalling(); + + //Cause the UE to request bearer resource modification of dedicated EPS bearer associated with the 2nd PDN connectivity. + //@siclog "Step 7" siclog@ + f_UT_RequestModifyDedicatedBearer (UT, + hex2int(v_EpsDedicatedBearerId), + hex2int(v_EpsBearerId2), + cs_508_EPS_QoS_Dedicated_1, + f_EUTRA_Get_508_TrafficFlowTemplate_2_Modify (v_EpsDedicatedBearerId)); + + // Check: Does the UE transmit a BEARER RESOURCE MODIFICATION REQUEST message + // with the low priority indicator to "MS is not configured for NAS signalling low priority" ? + //@siclog "Step 8" siclog@ + SRB.receive(car_SRB2_NasPdu_IND(eutra_CellA, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cdr_BearerResourceModReq_DeviceProperties(?, + v_EpsBearerId2, + omit, + cr_DeviceProperties('D'H, v_DeviceProperties))))) -> value v_ReceivedAsp; + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 8"); + // Store procedure transaction id to be used in SS responses. + v_EpsTi := v_ReceivedAsp.Signalling.Nas[0].Pdu.Msg.bEARER_RESOURCE_MODIFICATION_REQUEST.procedureTransactionIdentifier; + + // The SS transmits an ACTIVATE DEDICATED EPS BEARER CONTEXT REQUEST message. + //@siclog "Step 9" siclog@ changed into below + f_EUTRA_TxDedicatedEpsBearerCtxtReq(eutra_CellA, + tsc_DRB3, + v_EpsDedicatedBearerId, + v_EpsTi, + cs_LinkedId(hex2bit(v_EpsBearerId2)), + cs_508_EPS_QoS_Dedicated_1, + f_EUTRA_Get_508_TrafficFlowTemplate(1, v_EpsDedicatedBearerId)); + + //@siclog "Step 10" siclog@ + SRB.receive(car_SRB2_NasPdu_IND(eutra_CellA, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_ActDedicatedEPSBearerCxtAccept(v_EpsDedicatedBearerId)))); + } +} diff --git a/LTE_A_IWD_14wk37/LTE_A/13/ASRVCC_EUTRA.ttcn b/LTE_A_IWD_14wk37/LTE_A/13/ASRVCC_EUTRA.ttcn new file mode 100644 index 0000000..59fcc25 --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/13/ASRVCC_EUTRA.ttcn @@ -0,0 +1,2250 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-11 16:21:32 +0200 (Thu, 11 Sep 2014) $ +// $Rev: 12214 $ +/******************************************************************************/ + +module ASRVCC_EUTRA { + + + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_SRVCC all; + import from GERAN_SRVCC all; + import from EUTRA_Component all; + import from EUTRA_CellInfo all; + import from EUTRA_CommonDefs all; + import from EUTRA_RRC_Templates all; + import from EUTRA_SRB_Templates all; + import from EUTRA_AspCommon_Templates all; + import from EUTRA_SecuritySteps all; + import from EUTRA_CommonProcedures all; + import from EPS_NAS_TypeDefs all; + import from EUTRA_RRCSteps all; + import from EUTRA_ConfigurationSteps all; + import from CommonDefs all; + import from EUTRA_Measurement_Templates all; + import from EUTRA_IRATFunctions all; + import from CommonIratDefs all; + import from EUTRA_ASP_TypeDefs all; + import from IMS_PTC_CoordMsg all; + import from EUTRA_CellCfg_Templates all; + import from EUTRA_CommonSRVCC all; + import from EUTRA_AuxiliaryFunctions all; + import from EUTRA_BandDependentParam all; + import from EPS_NAS_Templates all; + import from EPS_NAS_Constants all; + import from EUTRA_NASSteps all; + import from EUTRA_SecurityFunctions all; + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.7 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_7_EUTRA() runs on EUTRA_PTC + { // Inter-system mobility / E-UTRA voice to UTRA CS voice / aSRVCC / MO call + + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c4); + f_EUTRA_CellInfo_InitMaxReferencePower (eutra_Cell1, -60); + f_EUTRA_CellConfig_DefPlusUM_RoHC(eutra_Cell1); + f_EUTRA_Preamble (eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_SetCellPower(eutra_Cell1, -60); + + f_EUTRA_TestBody_Set(true); + + fl_TC_13_4_3_7_Body(); + + f_IRAT_WaitForCoOrd_Trigger(UTRAN); + //@siclog "step 40" siclog@ + f_EUTRA_SetCellPower(eutra_Cell1, tsc_NonSuitableOffCellRS_EPRE); //@sic R5-142879 sic@ + + f_EUTRA_TestBody_Set(false); + f_EUTRA_ReleaseAllCells (); + } + + /* + * @desc test body of TC_13_4_3_7 + * @status APPROVED (LTE_A) + */ + function fl_TC_13_4_3_7_Body() runs on EUTRA_PTC + { + var AbsoluteCellPower_Type v_T1_RS_EPRE_Cell1 := -84; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var NasCount_Type v_NasCountDL; + var integer v_UTRAN_PhysChId_Cell5; + var octetstring v_HandoverToUtranCommand; + var octetstring v_Nas_SecurityParamFromEUTRA; + var Frequency_IE_Type v_Frequency_IE_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell1); + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell1:= f_EUTRA_BandDependentParam(v_Frequency_IE_Cell1.DL_ChBandwidth, v_Frequency_IE_Cell1.UL_ChBandwidth); + var integer v_UTRAN_ARFCN_Cell5; + var IRAT_CoOrd_SysInfo_Type v_UTRANSysInfo; + var CoOrd_UTRANSysInfoFDD_Type v_UTRANSysInfoFDD; + var CoOrd_UTRANSysInfoTDD_Type v_UTRANSysInfoTDD; + //var ProcedureTransactionIdentifier v_EpsProcedureTransactionId := '00'O; + var template (present) UL_DCCH_Message v_MeasRpt; + var template (value) DL_DCCH_Message v_Reconfig; + + v_UTRANSysInfo := f_IRAT_WaitForCoOrd_SysInfo (UTRAN); + + if (ischosen (v_UTRANSysInfo.Utran[0].FDD)) { + v_UTRANSysInfoFDD := v_UTRANSysInfo.Utran[0].FDD; + v_UTRAN_ARFCN_Cell5 := v_UTRANSysInfo.Utran[0].FDD.Freq; + v_UTRAN_PhysChId_Cell5 := v_UTRANSysInfo.Utran[0].FDD.ScramblingCode; + v_HandoverToUtranCommand := f_U_EncodeHandoverToUtran_Speech_FDD(v_UTRANSysInfoFDD.UplinkScrambingCode, + v_UTRANSysInfoFDD.ScramblingCode, + v_UTRANSysInfoFDD.Freq); + v_MeasRpt := cr_MeasurementReport_Utran_1Entry_FDD_RSCP(1, v_UTRAN_PhysChId_Cell5); + v_Reconfig := cs_RRCConnectionReconfiguration_SRVCC_FDD(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_UTRAN_ARFCN_Cell5, + v_UTRAN_PhysChId_Cell5); + } + else { + v_UTRANSysInfoTDD := v_UTRANSysInfo.Utran[0].TDD; + v_UTRAN_ARFCN_Cell5 := v_UTRANSysInfo.Utran[0].TDD.Freq; + v_UTRAN_PhysChId_Cell5 := v_UTRANSysInfo.Utran[0].TDD.CellParametersID; + v_HandoverToUtranCommand := f_U_EncodeHandoverToUtran_Speech_TDD(v_UTRANSysInfoTDD.CellParametersID, + v_UTRANSysInfoTDD.Freq); + v_MeasRpt := cr_MeasurementReport_Utran_1Entry_TDD_RSCP(1, v_UTRAN_PhysChId_Cell5); + v_Reconfig := cs_RRCConnectionReconfiguration_SRVCC_TDD(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_UTRAN_ARFCN_Cell5, + v_UTRAN_PhysChId_Cell5); + } + + // @siclog "Step 1" siclog@ + // The SS configures UTRA cell 5 to reference configuration according 36.508 table 4.8.3-1, condition UTRA PS RB + Speech . + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + + // @siclog "Steps 2-13" siclog@ + /* Steps 1 to 12 of the generic test procedure for + * IMS MO speech call (TS 36.508 4.5A.6.3-1). + */ + f_EUTRA_GenericIMS_MO_SpeechCallInitiation(eutra_Cell1); + + //@siclog "Step 14" siclog@ + f_EUTRA_RRCConnectionReconfigurationWithPiggyNAS_DrbReconfig(eutra_Cell1, + tsc_RRC_TI_Def, + {tsc_DRB2}, + {cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_508_ActDedicatedEPSBearerCxtReq(tsc_EpsDedicatedBearerId, + tsc_PTI_Unassigned, + cs_LinkedId(hex2bit(tsc_EpsDefaultBearerId)), + cds_EPS_QoS_Dedicated_4, // @sic R5s140590 sic@ + f_EUTRA_Get_508_TrafficFlowTemplate(4, tsc_EpsDedicatedBearerId)))}, // @sic R5s140590 sic@ + UM_Mode); + + //@siclog "Step 15" siclog@ + SRB.receive(car_SRB2_NasPdu_IND(eutra_Cell1, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_ActDedicatedEPSBearerCxtAccept(tsc_EpsDedicatedBearerId)))); + //Wait for completion of IMS signalling + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); + + // @siclog "Step 16" siclog@ + // The SS transmits an RRCConnectionReconfiguration message on Cell 1 to setup inter RAT measurement and reporting for event B2. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + v_Reconfig)); // @sic R5-144670 sic@ + + // @siclog "Step 17" siclog@ + // The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + + // @siclog "Step 18" siclog@ + // The SS changes the power level for Cell 1 and Cell 5 according to the row "T1" in table 13.4.3.7.3.2-1 + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + f_EUTRA_SetCellPower(eutra_Cell1, v_T1_RS_EPRE_Cell1); + + // @siclog "Step 19" siclog@ + // The UE transmits a MeasurementReport message on Cell 1 to report event B2 for Cell 5. + + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, v_MeasRpt)); + + //@siclog "Step 20-21" siclog@ + f_EUTRA_UTRA_Capability (eutra_Cell1, true); + + f_IRAT_WaitForCoOrd_Trigger(UTRAN); + + //NAS-securityParamFromEUTRA is the 4 least significant bits of the NAS downlink COUNT value according to Table 13.1.4.3.3-6 + v_NasCountDL := f_EUTRA_SS_NAS_CountGetDLNext(); + v_Nas_SecurityParamFromEUTRA := substr(v_NasCountDL, 3, 1); + // @siclog "Step 22" siclog@ + // The SS transmits a MobilityFromEUTRACommand message on Cell 1. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_MobilityFromEutraCommand_Handover(tsc_RRC_TI_Def, false,//@sic R5-142880 sic@ + utra, v_HandoverToUtranCommand, v_Nas_SecurityParamFromEUTRA, omit))); + // @sic R5s140188 sic@ + } + + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.8 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_8_EUTRA() runs on EUTRA_PTC + { // Inter-system mobility / E-UTRA voice to UTRA CS voice / aSRVCC / MO call / Forked responses + + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c4); + f_EUTRA_CellInfo_InitMaxReferencePower (eutra_Cell1, -60); + // Create cell and send out system information + f_EUTRA_CellConfig_DefPlusUM_RoHC(eutra_Cell1); + f_EUTRA_Preamble (eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_SetCellPower(eutra_Cell1, -60); + + f_EUTRA_TestBody_Set(true); + + fl_TC_13_4_3_8_Body(); + + // Postamble + f_IRAT_WaitForCoOrd_Trigger(UTRAN); + //@siclog "step 33" siclog@ + f_EUTRA_SetCellPower(eutra_Cell1, tsc_NonSuitableOffCellRS_EPRE); //@sic R5-142879 sic@ + f_EUTRA_TestBody_Set(false); + f_EUTRA_ReleaseAllCells (); + } // function f_TC_13_4_3_8_EUTRA + + /* + * @desc test body of TC_13_4_3_8 + * @status APPROVED (LTE_A) + */ + function fl_TC_13_4_3_8_Body() runs on EUTRA_PTC + { + var AbsoluteCellPower_Type v_T1_RS_EPRE_Cell1 := -84; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var NasCount_Type v_NasCountDL; + var integer v_UTRAN_PhysChId_Cell5; + var octetstring v_HandoverToUtranCommand; + var octetstring v_Nas_SecurityParamFromEUTRA; + var Frequency_IE_Type v_Frequency_IE_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs (eutra_Cell1); + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell1 := f_EUTRA_BandDependentParam(v_Frequency_IE_Cell1.DL_ChBandwidth, v_Frequency_IE_Cell1.UL_ChBandwidth); + var integer v_UTRAN_ARFCN_Cell5; + var IRAT_CoOrd_SysInfo_Type v_UTRANSysInfo; + var CoOrd_UTRANSysInfoFDD_Type v_UTRANSysInfoFDD; + var CoOrd_UTRANSysInfoTDD_Type v_UTRANSysInfoTDD; + var template (present) UL_DCCH_Message v_MeasRpt; + var template (value) DL_DCCH_Message v_Reconfig; + + v_UTRANSysInfo := f_IRAT_WaitForCoOrd_SysInfo(UTRAN); + + if (ischosen (v_UTRANSysInfo.Utran[0].FDD)) { + v_UTRANSysInfoFDD := v_UTRANSysInfo.Utran[0].FDD; + v_UTRAN_ARFCN_Cell5 := v_UTRANSysInfo.Utran[0].FDD.Freq; + v_UTRAN_PhysChId_Cell5 := v_UTRANSysInfo.Utran[0].FDD.ScramblingCode; + v_HandoverToUtranCommand := f_U_EncodeHandoverToUtran_Speech_FDD(v_UTRANSysInfoFDD.UplinkScrambingCode, + v_UTRANSysInfoFDD.ScramblingCode, + v_UTRANSysInfoFDD.Freq); + v_Reconfig := cs_RRCConnectionReconfiguration_SRVCC_FDD(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_UTRAN_ARFCN_Cell5, + v_UTRAN_PhysChId_Cell5); + + v_MeasRpt := cr_MeasurementReport_Utran_1Entry_FDD_RSCP(1, v_UTRAN_PhysChId_Cell5); + } + else { + v_UTRANSysInfoTDD := v_UTRANSysInfo.Utran[0].TDD; + v_UTRAN_ARFCN_Cell5 := v_UTRANSysInfo.Utran[0].TDD.Freq; + v_UTRAN_PhysChId_Cell5 := v_UTRANSysInfo.Utran[0].TDD.CellParametersID; + v_HandoverToUtranCommand := f_U_EncodeHandoverToUtran_Speech_TDD(v_UTRANSysInfoTDD.CellParametersID, + v_UTRANSysInfoTDD.Freq); + v_Reconfig := cs_RRCConnectionReconfiguration_SRVCC_TDD(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_UTRAN_ARFCN_Cell5, + v_UTRAN_PhysChId_Cell5); + + v_MeasRpt := cr_MeasurementReport_Utran_1Entry_TDD_RSCP(1, v_UTRAN_PhysChId_Cell5); + } + + // @siclog "Step 1" siclog@ + // The SS configures UTRA cell 5 to reference configuration according 36.508 table 4.8.3-1, condition UTRA PS RB + Speech . + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + + // @siclog "Steps 2-12" siclog@ + /* Steps 1 to 12 of the generic test procedure for + * IMS MO speech call (TS 36.508 4.5A.6.3-1). + */ + f_EUTRA_GenericIMS_MO_SpeechCallInitiation(eutra_Cell1); + + //@siclog "Steps 14" siclog@ + f_EUTRA_RRCConnectionReconfigurationWithPiggyNAS_DrbReconfig(eutra_Cell1, + tsc_RRC_TI_Def, + {tsc_DRB2}, + {cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_508_ActDedicatedEPSBearerCxtReq(tsc_EpsDedicatedBearerId, + tsc_PTI_Unassigned, + cs_LinkedId(hex2bit(tsc_EpsDefaultBearerId)), + cds_EPS_QoS_Dedicated_4, // @sic R5s140590 sic@ + f_EUTRA_Get_508_TrafficFlowTemplate(4, tsc_EpsDedicatedBearerId)))}, // @sic R5s140590 sic@ + UM_Mode); + + //@siclog "Step 15" siclog@ + SRB.receive(car_SRB2_NasPdu_IND(eutra_Cell1, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_ActDedicatedEPSBearerCxtAccept(tsc_EpsDedicatedBearerId)))); + // Send trigger to IMS PTC + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); + + // Annex C.27 of TS 34.229-1. The UE receives forked response. + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); + + // @siclog "Step 17" siclog@ + // The SS transmits an RRCConnectionReconfiguration message on Cell 1 to setup inter RAT measurement and reporting for event B2. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + v_Reconfig)); // @sic R5-144670 sic@ + + // @siclog "Step 18" siclog@ + // The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + + // @siclog "Step 19" siclog@ + // The SS changes the power level for Cell 1 and Cell 5 according to the row "T1" in table 13.4.3.7.3.2-1 + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + f_EUTRA_SetCellPower(eutra_Cell1, v_T1_RS_EPRE_Cell1); + + // @siclog "Step 20" siclog@ + // The UE transmits a MeasurementReport message on Cell 1 to report event B2 for Cell 5. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, v_MeasRpt)); + + //@siclog "Step 21-22" siclog@ + f_EUTRA_UTRA_Capability(eutra_Cell1, true); + + f_IRAT_WaitForCoOrd_Trigger(UTRAN); + + //NAS-securityParamFromEUTRA is the 4 least significant bits of the NAS downlink COUNT value according to Table 13.1.4.3.3-6 + v_NasCountDL := f_EUTRA_SS_NAS_CountGetDLNext(); + v_Nas_SecurityParamFromEUTRA := substr(v_NasCountDL, 3, 1); + // @siclog "Step 23" siclog@ + // The SS transmits a MobilityFromEUTRACommand message on Cell 1. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_MobilityFromEutraCommand_Handover(tsc_RRC_TI_Def, false,//@sic R5-142880 sic@ + utra, v_HandoverToUtranCommand, v_Nas_SecurityParamFromEUTRA, omit))); + // @sic R5s140188 sic@ + + } // function fl_TC_13_4_3_8_Body + + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.9 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_9_EUTRA() runs on EUTRA_PTC + { // Inter-system mobility / E-UTRA voice to UTRA CS voice / aSRVCC / MO call/ SRVCC HO failure + + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c4); + f_EUTRA_CellInfo_InitMaxReferencePower (eutra_Cell1, -60); + f_EUTRA_CellConfig_DefPlusUM_RoHC(eutra_Cell1); + f_EUTRA_Preamble (eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_SetCellPower(eutra_Cell1, -60); + + f_EUTRA_TestBody_Set(true); + + fl_TC_13_4_3_9_Body(); + + // Postamble + f_EUTRA_TestBody_Set(false); + f_EUTRA_Postamble(eutra_Cell1, E2_CONNECTED); + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); + } + + /* + * @desc test body of TC_13_4_3_9 + * @status APPROVED (LTE_A) + */ + function fl_TC_13_4_3_9_Body() runs on EUTRA_PTC + { + var AbsoluteCellPower_Type v_T1_RS_EPRE_Cell1 := -84; + var AbsoluteCellPower_Type v_T2_RS_EPRE_Cell1 := -85; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var NasCount_Type v_NasCountDL; + var integer v_UTRAN_PhysChId_Cell5; + var octetstring v_HandoverToUtranCommand; + var octetstring v_Nas_SecurityParamFromEUTRA; + var Frequency_IE_Type v_Frequency_IE_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs (eutra_Cell1); + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell1:= f_EUTRA_BandDependentParam(v_Frequency_IE_Cell1.DL_ChBandwidth, v_Frequency_IE_Cell1.UL_ChBandwidth); + var integer v_UTRAN_ARFCN_Cell5; + var IRAT_CoOrd_SysInfo_Type v_UTRANSysInfo; + var CoOrd_UTRANSysInfoFDD_Type v_UTRANSysInfoFDD; + var CoOrd_UTRANSysInfoTDD_Type v_UTRANSysInfoTDD; + //var ProcedureTransactionIdentifier v_EpsProcedureTransactionId := '00'O; + var PhysCellId v_PhysicalCellIdentity_Cell1:= f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell1);//Get cell specific parameters for Cell 1 + var EUTRA_SecurityParams_Type v_AuthParams; + var NextHopChainingCount v_NextHopChainingCount := 0; + var template (present) UL_DCCH_Message v_MeasRpt; + var template (value) DL_DCCH_Message v_Reconfig; + var ShortMAC_I v_ShortMAC_I; + + v_UTRANSysInfo := f_IRAT_WaitForCoOrd_SysInfo (UTRAN); + + if (ischosen (v_UTRANSysInfo.Utran[0].FDD)) { + v_UTRANSysInfoFDD := v_UTRANSysInfo.Utran[0].FDD; + v_UTRAN_ARFCN_Cell5 := v_UTRANSysInfo.Utran[0].FDD.Freq; + v_UTRAN_PhysChId_Cell5 := v_UTRANSysInfo.Utran[0].FDD.ScramblingCode; + v_HandoverToUtranCommand := f_U_EncodeHandoverToUtran_Speech_FDD(v_UTRANSysInfoFDD.UplinkScrambingCode, + v_UTRANSysInfoFDD.ScramblingCode, + v_UTRANSysInfoFDD.Freq); + v_Reconfig := cs_RRCConnectionReconfiguration_SRVCC_FDD(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_UTRAN_ARFCN_Cell5, + v_UTRAN_PhysChId_Cell5); + + v_MeasRpt := cr_MeasurementReport_Utran_1Entry_FDD_RSCP(1, v_UTRAN_PhysChId_Cell5); + } + else { + v_UTRANSysInfoTDD := v_UTRANSysInfo.Utran[0].TDD; + v_UTRAN_ARFCN_Cell5 := v_UTRANSysInfo.Utran[0].TDD.Freq; + v_UTRAN_PhysChId_Cell5 := v_UTRANSysInfo.Utran[0].TDD.CellParametersID; + v_HandoverToUtranCommand := f_U_EncodeHandoverToUtran_Speech_TDD(v_UTRANSysInfoTDD.CellParametersID, + v_UTRANSysInfoTDD.Freq); + + v_Reconfig := cs_RRCConnectionReconfiguration_SRVCC_TDD(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_UTRAN_ARFCN_Cell5, + v_UTRAN_PhysChId_Cell5); + + v_MeasRpt := cr_MeasurementReport_Utran_1Entry_TDD_RSCP(1, v_UTRAN_PhysChId_Cell5); + } + + // @siclog "Step 1" siclog@ + // The SS configures UTRA cell 5 to reference configuration according 36.508 table 4.8.3-1, condition UTRA PS RB + Speech . + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + + // @siclog "Steps 2-13" siclog@ + /* Steps 1 to 12 of the generic test procedure for + * IMS MO speech call (TS 36.508 4.5A.6.3-1). + */ + f_EUTRA_GenericIMS_MO_SpeechCallInitiation(eutra_Cell1); + + //@siclog "Step 14" siclog@ + f_EUTRA_RRCConnectionReconfigurationWithPiggyNAS_DrbReconfig(eutra_Cell1, + tsc_RRC_TI_Def, + {tsc_DRB2}, + {cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_508_ActDedicatedEPSBearerCxtReq(tsc_EpsDedicatedBearerId, + tsc_PTI_Unassigned, + cs_LinkedId(hex2bit(tsc_EpsDefaultBearerId)), + cds_EPS_QoS_Dedicated_4, // @sic R5s140590 sic@ + f_EUTRA_Get_508_TrafficFlowTemplate(4, tsc_EpsDedicatedBearerId)))}, // @sic R5s140590 sic@ + UM_Mode); + + //@siclog "Step 15" siclog@ + SRB.receive(car_SRB2_NasPdu_IND(eutra_Cell1, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_ActDedicatedEPSBearerCxtAccept(tsc_EpsDedicatedBearerId)))); + + //Wait for completion of IMS signalling + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); + + // @siclog "Step 16" siclog@ + // The SS transmits an RRCConnectionReconfiguration message on Cell 1 to setup inter RAT measurement and reporting for event B2. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + v_Reconfig)); // @sic R5-144670 sic@ + + // @siclog "Step 17" siclog@ + // The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + + // @siclog "Step 18" siclog@ + // The SS changes the power level for Cell 1 and Cell 5 according to the row "T1" in table 13.4.3.9.3.2-1 + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + f_EUTRA_SetCellPower(eutra_Cell1, v_T1_RS_EPRE_Cell1); + + // @siclog "Step 19" siclog@ + // The UE transmits a MeasurementReport message on Cell 1 to report event B2 for Cell 5. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, v_MeasRpt)); + + // @siclog "Step 20" siclog@ + // The SS changes the power level for Cell 1 and Cell 5 according to the row "T2" in table 13.4.3.9.3.2-1 + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + f_EUTRA_SetCellPower(eutra_Cell1, v_T2_RS_EPRE_Cell1); + + //@siclog "Step 21-22" siclog@ + f_EUTRA_UTRA_Capability (eutra_Cell1, true); + + //NAS-securityParamFromEUTRA is the 4 least significant bits of the NAS downlink COUNT value according to Table 13.1.4.3.3-6 + v_NasCountDL := f_EUTRA_SS_NAS_CountGetDLNext(); + v_Nas_SecurityParamFromEUTRA := substr(v_NasCountDL, 3, 1); + + // @siclog "Step 23" siclog@ + // The SS transmits a MobilityFromEUTRACommand message on Cell 1. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_MobilityFromEutraCommand_Handover(tsc_RRC_TI_Def, false,//@sic R5-142880 sic@ + utra, v_HandoverToUtranCommand, v_Nas_SecurityParamFromEUTRA, omit))); + // @sic R5s140370 sic@ + f_EUTRA_SS_SRBs_DRBs_Reset_StopULGrant_noPUCCHSync_PDCP_CountMaintian ( eutra_Cell1,-,-, 100 ); // + v_ShortMAC_I := f_Calculate_ShortMAC(eutra_Cell1, eutra_Cell1); + f_EUTRA_SS_ConfigRachProcedure_Def(eutra_Cell1, tsc_C_RNTI_Def); + + //@siclog "Step 24" siclog@ + /* Check: Does the UE initiate an RRC connection re-establisment procedure and transmit an RRCConnectionReestablishmentRequest message on Cell 2? */ + SRB.receive(car_SRB0_RrcPdu_IND(eutra_Cell1, + cr_508_RRCConnectionReestablishmentRequest(tsc_C_RNTI_Def, + v_PhysicalCellIdentity_Cell1, + cr_ReestablishmentCause_HandoverFailure, // @sic R5-144671 sic@ + v_ShortMAC_I))); // @sic R5s140370 sic@ + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 24"); + + // Activate RRC security at SS target cell for SRB 1, 2 and 1 AM DRB + v_AuthParams := f_EUTRA_SS_AS_ActivateSecurity_HO_Reest(eutra_Cell1, f_EUTRA_Security_Get(), v_NextHopChainingCount); //@sic R5100744 sic@ + f_EUTRA_Security_Set(v_AuthParams); + + //@siclog "Step 25" siclog@ + /* The SS transmits RRCConnectionReestablishment message. */ + f_EUTRA_RRC_RRCConnectionReestablishment_Def(eutra_Cell1, -, v_NextHopChainingCount); + + //@siclog "Step 26" siclog@ + /* UE transmits an RRCConnectionReestablishmentComplete message */ + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionReestablishmentComplete(tsc_RRC_TI_Def))); + + //@siclog "Step 27-28" siclog@ + f_EUTRA_RRC_RRCConnectionReconfiguration_Resume_SRB2_DRBs(eutra_Cell1, tsc_RRC_TI_Def); + + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); // To execute IMS parallel behaviour in Table 13.4.3.9.3.2-4 + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); // Wait for IMS to complete + + } // function fl_TC_13_4_3_9_Body + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.10 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_10_EUTRA() runs on EUTRA_PTC + { // Inter-system mobility / E-UTRA voice to UTRA CS voice / aSRVCC / MT call + + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c4); + f_EUTRA_CellInfo_InitMaxReferencePower(eutra_Cell1, -60); + + // Create cell and send out system information + f_EUTRA_CellConfig_DefPlusUM_RoHC(eutra_Cell1); + // f_IRAT_WaitForCoOrd_Trigger(UTRAN); + f_EUTRA_Preamble (eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_SetCellPower(eutra_Cell1, -60); + + f_EUTRA_TestBody_Set(true); + + fl_TC_13_4_3_10_Body(); + + f_IRAT_WaitForCoOrd_Trigger(UTRAN); + //@siclog "step 41" siclog@ + f_EUTRA_SetCellPower(eutra_Cell1, tsc_NonSuitableOffCellRS_EPRE); //@sic R5-142879 sic@ + f_EUTRA_TestBody_Set(false); + f_EUTRA_ReleaseAllCells (); + } + + /* + * @desc test body of TC_13_4_3_10 + * @status APPROVED (LTE_A) + */ + function fl_TC_13_4_3_10_Body() runs on EUTRA_PTC + { + var AbsoluteCellPower_Type v_T1_RS_EPRE_Cell1 := -84; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var NasCount_Type v_NasCountDL; + var integer v_UTRAN_PhysChId_Cell5; + var octetstring v_HandoverToUtranCommand; + var octetstring v_Nas_SecurityParamFromEUTRA; + var Frequency_IE_Type v_Frequency_IE_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs (eutra_Cell1); + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell1:= f_EUTRA_BandDependentParam(v_Frequency_IE_Cell1.DL_ChBandwidth, v_Frequency_IE_Cell1.UL_ChBandwidth); + var integer v_UTRAN_ARFCN_Cell5; + var IRAT_CoOrd_SysInfo_Type v_UTRANSysInfo; + var CoOrd_UTRANSysInfoFDD_Type v_UTRANSysInfoFDD; + var CoOrd_UTRANSysInfoTDD_Type v_UTRANSysInfoTDD; + var template (present) UL_DCCH_Message v_MeasRpt; + var template (value) DL_DCCH_Message v_Reconfig; + + v_UTRANSysInfo := f_IRAT_WaitForCoOrd_SysInfo (UTRAN); + + if (ischosen (v_UTRANSysInfo.Utran[0].FDD)) { + v_UTRANSysInfoFDD := v_UTRANSysInfo.Utran[0].FDD; + v_UTRAN_ARFCN_Cell5 := v_UTRANSysInfo.Utran[0].FDD.Freq; + v_UTRAN_PhysChId_Cell5 := v_UTRANSysInfo.Utran[0].FDD.ScramblingCode; + v_HandoverToUtranCommand := f_U_EncodeHandoverToUtran_Speech_FDD(v_UTRANSysInfoFDD.UplinkScrambingCode, + v_UTRANSysInfoFDD.ScramblingCode, + v_UTRANSysInfoFDD.Freq); + v_Reconfig := cs_RRCConnectionReconfiguration_SRVCC_FDD(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_UTRAN_ARFCN_Cell5, + v_UTRAN_PhysChId_Cell5); + + v_MeasRpt := cr_MeasurementReport_Utran_1Entry_FDD_RSCP(1, v_UTRAN_PhysChId_Cell5); + } + else { + v_UTRANSysInfoTDD := v_UTRANSysInfo.Utran[0].TDD; + v_UTRAN_ARFCN_Cell5 := v_UTRANSysInfo.Utran[0].TDD.Freq; + v_UTRAN_PhysChId_Cell5 := v_UTRANSysInfo.Utran[0].TDD.CellParametersID; + v_HandoverToUtranCommand := f_U_EncodeHandoverToUtran_Speech_TDD(v_UTRANSysInfoTDD.CellParametersID, + v_UTRANSysInfoTDD.Freq); + v_Reconfig := cs_RRCConnectionReconfiguration_SRVCC_TDD(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_UTRAN_ARFCN_Cell5, + v_UTRAN_PhysChId_Cell5); + + v_MeasRpt := cr_MeasurementReport_Utran_1Entry_TDD_RSCP(1, v_UTRAN_PhysChId_Cell5); + } + + // @siclog "Step 1" siclog@ + // The SS configures UTRA cell 5 to reference configuration according 36.508 table 4.8.3-1, condition UTRA PS RB + Speech . + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + + // @siclog "Steps 2-23" siclog@ + // Make the UE attempt an IMS speech call + f_EUTRA_GenericIMS_MT_SpeechCall(eutra_Cell1); + + // @siclog "Step 24" siclog@ + // The SS transmits an RRCConnectionReconfiguration message on Cell 1 to setup inter RAT measurement and reporting for event B2. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + v_Reconfig)); // @sic R5-144670 sic@ + + // @siclog "Step 25" siclog@ + // The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + + // @siclog "Step 26" siclog@ + // The SS changes the power level for Cell 1 and Cell 5 according to the row "T1" in table 13.4.3.10.3.2-1 + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + f_EUTRA_SetCellPower(eutra_Cell1, v_T1_RS_EPRE_Cell1); + + // @siclog "Step 27" siclog@ + // The UE transmits a MeasurementReport message on Cell 1 to report event B2 for Cell 5. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, v_MeasRpt)); + + //@siclog "Step 28-29" siclog@ + f_EUTRA_UTRA_Capability (eutra_Cell1, true); + + f_IRAT_WaitForCoOrd_Trigger(UTRAN); + + //nas-securityParamFromEUTRA is the 4 least significant bits of the NAS downlink COUNT value according to Table 13.1.4.3.3-6 + v_NasCountDL := f_EUTRA_SS_NAS_CountGetDLNext(); + v_Nas_SecurityParamFromEUTRA := substr(v_NasCountDL, 3, 1); + // @siclog "Step 30" siclog@ + // The SS transmits a MobilityFromEUTRACommand message on Cell 1. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_MobilityFromEutraCommand_Handover(tsc_RRC_TI_Def, false,//@sic R5-142880 sic@ + utra, v_HandoverToUtranCommand, v_Nas_SecurityParamFromEUTRA, omit))); + // @sic R5s140188 sic@ + } + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.11 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_11_EUTRA() runs on EUTRA_PTC + { // Inter-system mobility / E-UTRA voice to UTRA CS voice / aSRVCC / MT call / SRVCC HO failure + + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c4); + f_EUTRA_CellInfo_InitMaxReferencePower (eutra_Cell1, -60); + f_EUTRA_CellConfig_DefPlusUM_RoHC(eutra_Cell1); + f_EUTRA_Preamble (eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_SetCellPower(eutra_Cell1, -60); + + f_EUTRA_TestBody_Set(true); + + fl_TC_13_4_3_11_Body(); + + f_EUTRA_TestBody_Set(false); + f_EUTRA_Postamble(eutra_Cell1, E2_CONNECTED); + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); + } + + /* + * @desc test body of TC_13_4_3_11 + * @status APPROVED (LTE_A) + */ + function fl_TC_13_4_3_11_Body() runs on EUTRA_PTC + { + var AbsoluteCellPower_Type v_T1_RS_EPRE_Cell1 := -84; + var AbsoluteCellPower_Type v_T2_RS_EPRE_Cell1 := -85; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var NasCount_Type v_NasCountDL; + var integer v_UTRAN_PhysChId_Cell5; + var octetstring v_HandoverToUtranCommand, v_Nas_SecurityParamFromEUTRA; + //var integer v_UTRAN_ARFCN_f8; //Cell5 + var Frequency_IE_Type v_Frequency_IE_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs (eutra_Cell1); + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell1:= f_EUTRA_BandDependentParam(v_Frequency_IE_Cell1.DL_ChBandwidth, v_Frequency_IE_Cell1.UL_ChBandwidth); + var integer v_UTRAN_ARFCN_Cell5; + var IRAT_CoOrd_SysInfo_Type v_UTRANSysInfo; + var CoOrd_UTRANSysInfoFDD_Type v_UTRANSysInfoFDD; + var CoOrd_UTRANSysInfoTDD_Type v_UTRANSysInfoTDD; + var PhysCellId v_PhysicalCellIdentity_Cell1:= f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell1);//Get cell specific parameters for Cell 1 + var EUTRA_SecurityParams_Type v_AuthParams; + var NextHopChainingCount v_NextHopChainingCount := 0; + var template (present) UL_DCCH_Message v_MeasRpt; + var template (value) DL_DCCH_Message v_Reconfig; + var ShortMAC_I v_ShortMAC_I; + + v_UTRANSysInfo := f_IRAT_WaitForCoOrd_SysInfo (UTRAN); + + if (ischosen (v_UTRANSysInfo.Utran[0].FDD)) { + v_UTRANSysInfoFDD := v_UTRANSysInfo.Utran[0].FDD; + v_UTRAN_ARFCN_Cell5 := v_UTRANSysInfo.Utran[0].FDD.Freq; + v_UTRAN_PhysChId_Cell5 := v_UTRANSysInfo.Utran[0].FDD.ScramblingCode; + v_HandoverToUtranCommand := f_U_EncodeHandoverToUtran_Speech_FDD(v_UTRANSysInfoFDD.UplinkScrambingCode, + v_UTRANSysInfoFDD.ScramblingCode, + v_UTRANSysInfoFDD.Freq); + + v_Reconfig := cs_RRCConnectionReconfiguration_SRVCC_FDD(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_UTRAN_ARFCN_Cell5, + v_UTRAN_PhysChId_Cell5); + + v_MeasRpt := cr_MeasurementReport_Utran_1Entry_FDD_RSCP(1, v_UTRAN_PhysChId_Cell5); + } + else { + v_UTRANSysInfoTDD := v_UTRANSysInfo.Utran[0].TDD; + v_UTRAN_ARFCN_Cell5 := v_UTRANSysInfo.Utran[0].TDD.Freq; + v_UTRAN_PhysChId_Cell5 := v_UTRANSysInfo.Utran[0].TDD.CellParametersID; + v_HandoverToUtranCommand := f_U_EncodeHandoverToUtran_Speech_TDD(v_UTRANSysInfoTDD.CellParametersID, + v_UTRANSysInfoTDD.Freq); + + v_Reconfig := cs_RRCConnectionReconfiguration_SRVCC_TDD(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_UTRAN_ARFCN_Cell5, + v_UTRAN_PhysChId_Cell5); + + v_MeasRpt := cr_MeasurementReport_Utran_1Entry_TDD_RSCP(1, v_UTRAN_PhysChId_Cell5); + } + + // @siclog "Step 1" siclog@ + // The SS configures UTRA cell 5 to reference configuration according 36.508 table 4.8.3-1, condition UTRA PS RB + Speech . + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + + // @siclog "Steps 2-23" siclog@ + // Make the UE attempt an IMS speech call + f_EUTRA_GenericIMS_MT_SpeechCall(eutra_Cell1); + + // @siclog "Step 24" siclog@ + // The SS transmits an RRCConnectionReconfiguration message on Cell 1 to setup inter RAT measurement and reporting for event B2. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + v_Reconfig)); // @sic R5-144670 sic@ + + // @siclog "Step 25" siclog@ + // The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + + // @siclog "Step 26" siclog@ + // The SS changes the power level for Cell 1 and Cell 5 according to the row "T1" in table 13.4.3.10.3.2-1 + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + f_EUTRA_SetCellPower(eutra_Cell1, v_T1_RS_EPRE_Cell1); + + // @siclog "Step 27" siclog@ + // The UE transmits a MeasurementReport message on Cell 1 to report event B2 for Cell 5. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, v_MeasRpt)); + + // @siclog "Step 28" siclog@ + // The SS changes the power level for Cell 1 and Cell 5 according to the row "T2" in table 13.4.3.10.3.2-1 + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + f_EUTRA_SetCellPower(eutra_Cell1, v_T2_RS_EPRE_Cell1); + + //@siclog "Step 29-30" siclog@ + f_EUTRA_UTRA_Capability (eutra_Cell1, true); + + //NAS-securityParamFromEUTRA is the 4 least significant bits of the NAS downlink COUNT value according to Table 13.1.4.3.3-6 + v_NasCountDL := f_EUTRA_SS_NAS_CountGetDLNext(); + v_Nas_SecurityParamFromEUTRA := substr(v_NasCountDL, 3, 1); + // @siclog "Step 31" siclog@ + // The SS transmits a MobilityFromEUTRACommand message on Cell 1. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_MobilityFromEutraCommand_Handover(tsc_RRC_TI_Def, false, //@sic R5-142880 sic@ + utra, v_HandoverToUtranCommand, v_Nas_SecurityParamFromEUTRA, omit))); + + f_EUTRA_SS_SRBs_DRBs_Reset_StopULGrant_noPUCCHSync_PDCP_CountMaintian ( eutra_Cell1,-,-, 100 ); // + v_ShortMAC_I := f_Calculate_ShortMAC(eutra_Cell1, eutra_Cell1); + f_EUTRA_SS_ConfigRachProcedure_Def(eutra_Cell1, tsc_C_RNTI_Def); + + //@siclog "Step 32" siclog@ + /* Check: Does the UE initiate an RRC connection re-establisment procedure and transmit an RRCConnectionReestablishmentRequest message on Cell 2? */ + SRB.receive(car_SRB0_RrcPdu_IND(eutra_Cell1, + cr_508_RRCConnectionReestablishmentRequest(tsc_C_RNTI_Def, + v_PhysicalCellIdentity_Cell1, + cr_ReestablishmentCause_HandoverFailure, //@sic R5s140592 sic@ + v_ShortMAC_I))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 32"); + + // Activate RRC security at SS target cell for SRB 1, 2 and 1 AM DRB + v_AuthParams := f_EUTRA_SS_AS_ActivateSecurity_HO_Reest(eutra_Cell1, f_EUTRA_Security_Get(), v_NextHopChainingCount); //@sic R5100744 sic@ + f_EUTRA_Security_Set(v_AuthParams); + + //@siclog "Step 33" siclog@ + /* The SS transmits RRCConnectionReestablishment message. */ + f_EUTRA_RRC_RRCConnectionReestablishment_Def(eutra_Cell1, -, v_NextHopChainingCount); + + //@siclog "Step 34" siclog@ + /* UE transmits an RRCConnectionReestablishmentComplete message */ + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionReestablishmentComplete(tsc_RRC_TI_Def))); + + //The SS transmits an RRCConnectionReconfiguration message on Cell 1. + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); // To excute IMS parallel behaviour in Table 13.4.3.9.3.2-4 + //@siclog "Step 35 - 36" siclog@ + f_EUTRA_RRC_RRCConnectionReconfiguration_Resume_SRB2_DRBs(eutra_Cell1, tsc_RRC_TI_Def); + + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); + f_EUTRA_DeactivateEPS_BearerContext (eutra_Cell1, tsc_EpsDedicatedBearerId); // @sic R5-144672 sic@ + } // function fl_TC_13_4_3_11_Body + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.13 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_13_EUTRA() runs on EUTRA_PTC + { /* Inter-system mobility / E-UTRA voice to UTRA CS voice / aSRVCC / MT call / SRVCC HO cancelled / User answers in PS domain */ + + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c4); + // Create cell and send out system information + f_EUTRA_CellInfo_InitMaxReferencePower (eutra_Cell1, -60); //@sic R5s140459 sic@ + f_EUTRA_CellConfig_DefPlusUM_RoHC(eutra_Cell1); + //f_IRAT_WaitForCoOrd_Trigger(UTRAN); // wait for UTRAN side to do pre-preamble @sic R5s110776 sic@ + f_EUTRA_Preamble (eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_SetCellPower(eutra_Cell1, -60); //@sic R5s140459 sic@ + + f_EUTRA_TestBody_Set(true); + + fl_TC_13_4_3_13_Body(); + + // Postamble + f_EUTRA_TestBody_Set(false); + //@sic R5s140459 sic@ + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); // Just inform UTRAN PTC that EUTRAN PTC ended procedure + f_EUTRA_Postamble(eutra_Cell1, E2_CONNECTED); + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); + } + + /* + * @desc test body of TC_13_4_3_13 + * @status APPROVED (LTE_A) + */ + function fl_TC_13_4_3_13_Body() runs on EUTRA_PTC + { + var AbsoluteCellPower_Type v_T1_RS_EPRE_Cell1 := -84; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var integer v_UTRAN_PhysChId_Cell5; + var octetstring v_HandoverToUtranCommand; + //var integer v_UTRAN_ARFCN_f8; //Cell5 + var Frequency_IE_Type v_Frequency_IE_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell1); + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell1 := f_EUTRA_BandDependentParam(v_Frequency_IE_Cell1.DL_ChBandwidth, v_Frequency_IE_Cell1.UL_ChBandwidth); + var integer v_UTRAN_ARFCN_Cell5; + var IRAT_CoOrd_SysInfo_Type v_UTRANSysInfo; + var CoOrd_UTRANSysInfoFDD_Type v_UTRANSysInfoFDD; + var CoOrd_UTRANSysInfoTDD_Type v_UTRANSysInfoTDD; + var template (present) UL_DCCH_Message v_MeasRpt; + var template (value) DL_DCCH_Message v_Reconfig; + + v_UTRANSysInfo := f_IRAT_WaitForCoOrd_SysInfo (UTRAN); + + if (ischosen(v_UTRANSysInfo.Utran[0].FDD)) { + v_UTRANSysInfoFDD := v_UTRANSysInfo.Utran[0].FDD; + v_UTRAN_ARFCN_Cell5 := v_UTRANSysInfo.Utran[0].FDD.Freq; + v_UTRAN_PhysChId_Cell5 := v_UTRANSysInfo.Utran[0].FDD.ScramblingCode; + v_HandoverToUtranCommand := f_U_EncodeHandoverToUtran_Speech_FDD(v_UTRANSysInfoFDD.UplinkScrambingCode, + v_UTRANSysInfoFDD.ScramblingCode, + v_UTRANSysInfoFDD.Freq); + + v_Reconfig := cs_RRCConnectionReconfiguration_SRVCC_FDD(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_UTRAN_ARFCN_Cell5, + v_UTRAN_PhysChId_Cell5); + + v_MeasRpt := cr_MeasurementReport_Utran_1Entry_FDD_RSCP(1, v_UTRAN_PhysChId_Cell5); + } + else { + v_UTRANSysInfoTDD := v_UTRANSysInfo.Utran[0].TDD; + v_UTRAN_ARFCN_Cell5 := v_UTRANSysInfo.Utran[0].TDD.Freq; + v_UTRAN_PhysChId_Cell5 := v_UTRANSysInfo.Utran[0].TDD.CellParametersID; + v_HandoverToUtranCommand := f_U_EncodeHandoverToUtran_Speech_TDD(v_UTRANSysInfoTDD.CellParametersID, + v_UTRANSysInfoTDD.Freq); + v_Reconfig := cs_RRCConnectionReconfiguration_SRVCC_TDD(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_UTRAN_ARFCN_Cell5, + v_UTRAN_PhysChId_Cell5); + + v_MeasRpt := cr_MeasurementReport_Utran_1Entry_TDD_RSCP(1, v_UTRAN_PhysChId_Cell5); + } + + // @siclog "Step 1" siclog@ + // The SS configures UTRA cell 5 to reference configuration according 36.508 table 4.8.3-1, condition UTRA PS RB + Speech . + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + + // @siclog "Steps 2-23" siclog@ + /* Steps 1 to 22 of the Steps 1 to 22 of the generic test procedure for + * IMS MT speech call (TS 36.508 4.5A.7.3-1). + * Note: Steps correspond to IMS steps 5-11 in 34.229-1 Annex C.11, i.e + * Handover happens while UE is ringing + */ + f_EUTRA_GenericIMS_MT_SpeechCall(eutra_Cell1); + + // @siclog "Step 24" siclog@ + // The SS transmits an RRCConnectionReconfiguration message on Cell 1 to setup inter RAT measurement and reporting for event B2. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + v_Reconfig)); // @sic R5-144670 sic@ + + // @siclog "Step 25" siclog@ + // The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + + // @siclog "Step 26" siclog@ + // The SS changes the power level for Cell 1 and Cell 5 according to the row "T1" in table 13.4.3.13.3.2-1 + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + f_EUTRA_SetCellPower(eutra_Cell1, v_T1_RS_EPRE_Cell1); + + // @siclog "Step 27" siclog@ + // The UE transmits a MeasurementReport message on Cell 1 to report event B2 for Cell 5. + //@sic R5s140459 sic@ + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, v_MeasRpt)); + + // @siclog "Step 28-29" siclog@ + //Void + //@sic R5-141132 sic@ + + // @siclog "Step 30" siclog@ + SRB.send(cas_SRB1_NasPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_Notification(tsc_EpsDefaultBearerId)))); + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); + f_EUTRA_DeactivateEPS_BearerContext (eutra_Cell1, tsc_EpsDedicatedBearerId); // @sic R5-144673 sic@ + } + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.14 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_14_EUTRA() runs on EUTRA_PTC + { // Inter-system mobility / E-UTRA PS voice + PS data to UTRA CS voice + PS data / aSRVCC / MO call + + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c4); + f_EUTRA_CellInfo_InitMaxReferencePower(eutra_Cell1, -60); + f_EUTRA_CellConfig_DefPlusUM_RoHC(eutra_Cell1); + f_EUTRA_Preamble (eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_SetCellPower(eutra_Cell1, -60); + + f_EUTRA_TestBody_Set(true); + + fl_TC_13_4_3_14_Body(); + + f_IRAT_WaitForCoOrd_Trigger(UTRAN); + //@siclog "step 38" siclog@ + f_EUTRA_SetCellPower(eutra_Cell1, tsc_NonSuitableOffCellRS_EPRE); //@sic R5-142879 sic@ + f_EUTRA_TestBody_Set(false); + f_EUTRA_ReleaseAllCells (); + } + + /* + * @desc test body of TC_13_4_3_14 + * @status APPROVED (LTE_A) + */ + function fl_TC_13_4_3_14_Body() runs on EUTRA_PTC + { + var AbsoluteCellPower_Type v_T1_RS_EPRE_Cell1 := -84; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var NasCount_Type v_NasCountDL; + var integer v_UTRAN_PhysChId_Cell5; + var octetstring v_HandoverToUtranCommand; + var octetstring v_Nas_SecurityParamFromEUTRA; + var Frequency_IE_Type v_Frequency_IE_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs (eutra_Cell1); + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell1 := f_EUTRA_BandDependentParam(v_Frequency_IE_Cell1.DL_ChBandwidth, v_Frequency_IE_Cell1.UL_ChBandwidth); + var integer v_UTRAN_ARFCN_Cell5; + var IRAT_CoOrd_SysInfo_Type v_UTRANSysInfo; + var CoOrd_UTRANSysInfoFDD_Type v_UTRANSysInfoFDD; + var CoOrd_UTRANSysInfoTDD_Type v_UTRANSysInfoTDD; + //var ProcedureTransactionIdentifier v_EpsProcedureTransactionId := '00'O; + var template (present) UL_DCCH_Message v_MeasRpt; + var template (value) DL_DCCH_Message v_Reconfig; + + v_UTRANSysInfo := f_IRAT_WaitForCoOrd_SysInfo (UTRAN); + + if (ischosen (v_UTRANSysInfo.Utran[0].FDD)) { + v_UTRANSysInfoFDD := v_UTRANSysInfo.Utran[0].FDD; + v_UTRAN_ARFCN_Cell5 := v_UTRANSysInfo.Utran[0].FDD.Freq; + v_UTRAN_PhysChId_Cell5 := v_UTRANSysInfo.Utran[0].FDD.ScramblingCode; + v_HandoverToUtranCommand := f_U_EncodeHandoverToUtran_64kPS_Speech_FDD(v_UTRANSysInfoFDD.UplinkScrambingCode, + v_UTRANSysInfoFDD.ScramblingCode, + v_UTRANSysInfoFDD.Freq); + v_Reconfig := cs_RRCConnectionReconfiguration_SRVCC_FDD(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_UTRAN_ARFCN_Cell5, + v_UTRAN_PhysChId_Cell5); + + v_MeasRpt := cr_MeasurementReport_Utran_1Entry_FDD_RSCP(1, v_UTRAN_PhysChId_Cell5); + } + else { + v_UTRANSysInfoTDD := v_UTRANSysInfo.Utran[0].TDD; + v_UTRAN_ARFCN_Cell5 := v_UTRANSysInfo.Utran[0].TDD.Freq; + v_UTRAN_PhysChId_Cell5 := v_UTRANSysInfo.Utran[0].TDD.CellParametersID; + v_HandoverToUtranCommand := f_U_EncodeHandoverToUtran_64kPS_Speech_TDD(v_UTRANSysInfoTDD.CellParametersID, + v_UTRANSysInfoTDD.Freq); + v_Reconfig := cs_RRCConnectionReconfiguration_SRVCC_TDD(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_UTRAN_ARFCN_Cell5, + v_UTRAN_PhysChId_Cell5); + + v_MeasRpt := cr_MeasurementReport_Utran_1Entry_TDD_RSCP(1, v_UTRAN_PhysChId_Cell5); + } + + // @siclog "Step 1" siclog@ + // The SS configures UTRA cell 5 to reference configuration according 36.508 table 4.8.3-1, condition UTRA PS RB + Speech . + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + + // @siclog "Steps 2-15" siclog@ + /* Steps 2 to 15 of the generic test procedure for + * IMS MO speech call (TS 36.508 4.5A.10.3-1). + */ + f_EUTRA_GenericIMS_MO_SpeechCallInitiation(eutra_Cell1); + + //@siclog "Step 13-14 (TS 36.508 4.5A.10.3-1)" siclog@ + f_EUTRA_RRCConnectionReconfigurationWithPiggyNAS_DrbReconfig(eutra_Cell1, + tsc_RRC_TI_Def, + {tsc_DRB2}, + {cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_508_ActDedicatedEPSBearerCxtReq(tsc_EpsDedicatedBearerId, + tsc_PTI_Unassigned, + cs_LinkedId(hex2bit(tsc_EpsDefaultBearerId)), + cds_EPS_QoS_Dedicated_4, // @sic R5s140590 sic@ + f_EUTRA_Get_508_TrafficFlowTemplate(4, tsc_EpsDedicatedBearerId)))}, // @sic R5s140590 sic@ + UM_Mode); + //@siclog "Step 15" siclog@ + SRB.receive(car_SRB2_NasPdu_IND(eutra_Cell1, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_ActDedicatedEPSBearerCxtAccept(tsc_EpsDedicatedBearerId)))); + //Wait for completion of IMS signalling + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); + + // @siclog "Step 16" siclog@ + // The SS transmits an RRCConnectionReconfiguration message on Cell 1 to setup inter RAT measurement and reporting for event B2. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + v_Reconfig)); // @sic R5-144670 sic@ + + // @siclog "Step 17" siclog@ + // The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + + // @siclog "Step 18" siclog@ + // The SS changes the power level for Cell 1 and Cell 5 according to the row "T1" in table 13.4.3.7.3.2-1 + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + f_EUTRA_SetCellPower(eutra_Cell1, v_T1_RS_EPRE_Cell1); + + // @siclog "Step 19" siclog@ + // The UE transmits a MeasurementReport message on Cell 1 to report event B2 for Cell 5. + + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, v_MeasRpt)); + + //@siclog "Step 20-21" siclog@ + f_EUTRA_UTRA_Capability (eutra_Cell1, true, true); + + f_IRAT_WaitForCoOrd_Trigger(UTRAN); + + //NAS-securityParamFromEUTRA is the 4 least significant bits of the NAS downlink COUNT value according to Table 13.1.4.3.3-6 + v_NasCountDL := f_EUTRA_SS_NAS_CountGetDLNext(); + v_Nas_SecurityParamFromEUTRA := substr(v_NasCountDL, 3, 1); + // @siclog "Step 22" siclog@ + // The SS transmits a MobilityFromEUTRACommand message on Cell 1. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_MobilityFromEutraCommand_Handover(tsc_RRC_TI_Def, false, //@sic R5-142880 sic@ + utra, v_HandoverToUtranCommand, v_Nas_SecurityParamFromEUTRA, omit))); + // @sic R5s140188 sic@ + } + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.15 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_15_EUTRA() runs on EUTRA_PTC + { // Inter-system mobility / E-UTRA PS voice + PS data to UTRA CS voice + PS data / aSRVCC / MO call / SRVCC HO Cancelled + + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c4); + f_EUTRA_CellInfo_InitMaxReferencePower (eutra_Cell1, -60); //@sic R5s140478 sic@ + // Create cell and send out system information + f_EUTRA_CellConfig_DefPlusUM_RoHC(eutra_Cell1); + // f_IRAT_WaitForCoOrd_Trigger(UTRAN); // wait for UTRAN preamble to complete + f_EUTRA_Preamble (eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_SetCellPower(eutra_Cell1, -60); ////@sic R5s140478 sic@ + + f_EUTRA_TestBody_Set(true); + + fl_TC_13_4_3_15_Body(); + + // Postamble + f_EUTRA_TestBody_Set(false); + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); // @sic R5s140635 sic@ + f_EUTRA_Postamble(eutra_Cell1, E2_CONNECTED); + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); + + } + + /* + * @desc testbody of TC_13_4_3_15 + * @status APPROVED (LTE_A) + */ + function fl_TC_13_4_3_15_Body() runs on EUTRA_PTC + { + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var integer v_UTRAN_PhysChId_Cell5; + var octetstring v_HandoverToUtranCommand; + var Frequency_IE_Type v_Frequency_IE_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs (eutra_Cell1); + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell1:= f_EUTRA_BandDependentParam(v_Frequency_IE_Cell1.DL_ChBandwidth, v_Frequency_IE_Cell1.UL_ChBandwidth); + var integer v_UTRAN_ARFCN_Cell5; + var IRAT_CoOrd_SysInfo_Type v_UTRANSysInfo; + var CoOrd_UTRANSysInfoFDD_Type v_UTRANSysInfoFDD; + var CoOrd_UTRANSysInfoTDD_Type v_UTRANSysInfoTDD; + var template (present) UL_DCCH_Message v_MeasRpt; + var template (value) DL_DCCH_Message v_Reconfig; + + v_UTRANSysInfo := f_IRAT_WaitForCoOrd_SysInfo (UTRAN); + + if (ischosen (v_UTRANSysInfo.Utran[0].FDD)) { + v_UTRANSysInfoFDD := v_UTRANSysInfo.Utran[0].FDD; + v_UTRAN_ARFCN_Cell5 := v_UTRANSysInfo.Utran[0].FDD.Freq; + v_UTRAN_PhysChId_Cell5 := v_UTRANSysInfo.Utran[0].FDD.ScramblingCode; + v_HandoverToUtranCommand := f_U_EncodeHandoverToUtran_64kPS_Speech_FDD(v_UTRANSysInfoFDD.UplinkScrambingCode, + v_UTRANSysInfoFDD.ScramblingCode, + v_UTRANSysInfoFDD.Freq); + + v_Reconfig := cs_RRCConnectionReconfiguration_SRVCC_FDD(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_UTRAN_ARFCN_Cell5, + v_UTRAN_PhysChId_Cell5); + + v_MeasRpt := cr_MeasurementReport_Utran_1Entry_FDD_RSCP(1, v_UTRAN_PhysChId_Cell5); + } + else { + v_UTRANSysInfoTDD := v_UTRANSysInfo.Utran[0].TDD; + v_UTRAN_ARFCN_Cell5 := v_UTRANSysInfo.Utran[0].TDD.Freq; + v_UTRAN_PhysChId_Cell5 := v_UTRANSysInfo.Utran[0].TDD.CellParametersID; + v_HandoverToUtranCommand := f_U_EncodeHandoverToUtran_64kPS_Speech_TDD(v_UTRANSysInfoTDD.CellParametersID, + v_UTRANSysInfoTDD.Freq); + v_Reconfig := cs_RRCConnectionReconfiguration_SRVCC_TDD(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_UTRAN_ARFCN_Cell5, + v_UTRAN_PhysChId_Cell5); + + v_MeasRpt := cr_MeasurementReport_Utran_1Entry_TDD_RSCP(1, v_UTRAN_PhysChId_Cell5); + } + + // @siclog "Step 1" siclog@ + // The SS configures UTRA cell 5 to reference configuration according 36.508 table 4.8.3-1, condition UTRA PS RB + Speech . + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); + // @siclog "Steps 2-13" siclog@ + /* Steps 1 to 12 of the generic test procedure for + * IMS MO speech call (TS 36.508 4.5A.6.3-1). + */ + f_EUTRA_GenericIMS_MO_SpeechCallInitiation(eutra_Cell1); + + // @sic R5s140478 subject to prose CR approval sic@ + //@siclog "Step 14" siclog@ + f_EUTRA_RRCConnectionReconfigurationWithPiggyNAS_DrbReconfig(eutra_Cell1, + tsc_RRC_TI_Def, + {tsc_DRB2}, + {cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_508_ActDedicatedEPSBearerCxtReq(tsc_EpsDedicatedBearerId, + tsc_PTI_Unassigned, + cs_LinkedId(hex2bit(tsc_EpsDefaultBearerId)), + cds_EPS_QoS_Dedicated_4, // @sic R5s140590 sic@ + f_EUTRA_Get_508_TrafficFlowTemplate(4, tsc_EpsDedicatedBearerId)))}, // @sic R5s140590 sic@ + UM_Mode); + + //@siclog "Step 15" siclog@ + SRB.receive(car_SRB2_NasPdu_IND(eutra_Cell1, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_ActDedicatedEPSBearerCxtAccept(tsc_EpsDedicatedBearerId)))); + //Wait for completion of IMS signalling + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); // @sic R5s140604 sic@ + + // @siclog "Step 14" siclog@ + // The SS transmits an RRCConnectionReconfiguration message on Cell 1 to setup inter RAT measurement and reporting for event B2. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + v_Reconfig)); // @sic R5-144670 sic@ + + // @siclog "Step 15" siclog@ + // The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + // @siclog "Step 16" siclog@ + f_EUTRA_SetCellPower(eutra_Cell1, -84); + + // @siclog "Step 17" siclog@ + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, v_MeasRpt)); + + // @siclog "Step 18" siclog@ + SRB.send(cas_SRB1_NasPdu_REQ(eutra_Cell1, //@sic R5s140378 sic@ + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_Notification(tsc_EpsDefaultBearerId)))); + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); + f_EUTRA_DeactivateEPS_BearerContext (eutra_Cell1, tsc_EpsDedicatedBearerId); // @sic R5-144674 sic@ + } + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.16 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_16_EUTRA() runs on EUTRA_PTC + { // Inter-system mobility / E-UTRA PS voice + PS data to UTRA CS voice + PS data / aSRVCC / MT call + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c4); + f_EUTRA_CellInfo_InitMaxReferencePower(eutra_Cell1, -60); + f_EUTRA_CellConfig_DefPlusUM_RoHC(eutra_Cell1); + f_EUTRA_Preamble (eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_SetCellPower(eutra_Cell1, -60); + + f_EUTRA_TestBody_Set(true); + + fl_TC_13_4_3_16_Body(); + + // Postamble + f_IRAT_WaitForCoOrd_Trigger(UTRAN); + //@siclog "step 40" siclog@ + f_EUTRA_SetCellPower(eutra_Cell1, tsc_NonSuitableOffCellRS_EPRE); //@sic R5-142879 sic@ + f_EUTRA_TestBody_Set(false); + + f_EUTRA_ReleaseAllCells (); + } + + /* + * @desc test body of TC_13_4_3_16 + * @status APPROVED (LTE_A) + */ + function fl_TC_13_4_3_16_Body() runs on EUTRA_PTC + { + var AbsoluteCellPower_Type v_T1_RS_EPRE_Cell1 := -84; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var NasCount_Type v_NasCountDL; + var integer v_UTRAN_PhysChId_Cell5; + var octetstring v_HandoverToUtranCommand; + var octetstring v_Nas_SecurityParamFromEUTRA; + var Frequency_IE_Type v_Frequency_IE_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell1); + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell1 := f_EUTRA_BandDependentParam(v_Frequency_IE_Cell1.DL_ChBandwidth, v_Frequency_IE_Cell1.UL_ChBandwidth); + var integer v_UTRAN_ARFCN_Cell5; + var IRAT_CoOrd_SysInfo_Type v_UTRANSysInfo; + var CoOrd_UTRANSysInfoFDD_Type v_UTRANSysInfoFDD; + var CoOrd_UTRANSysInfoTDD_Type v_UTRANSysInfoTDD; + var template (present) UL_DCCH_Message v_MeasRpt; + var template (value) DL_DCCH_Message v_Reconfig; + + v_UTRANSysInfo := f_IRAT_WaitForCoOrd_SysInfo (UTRAN); + + if (ischosen (v_UTRANSysInfo.Utran[0].FDD)) { + v_UTRANSysInfoFDD := v_UTRANSysInfo.Utran[0].FDD; + v_UTRAN_ARFCN_Cell5 := v_UTRANSysInfo.Utran[0].FDD.Freq; + v_UTRAN_PhysChId_Cell5 := v_UTRANSysInfo.Utran[0].FDD.ScramblingCode; + v_HandoverToUtranCommand := f_U_EncodeHandoverToUtran_64kPS_Speech_FDD(v_UTRANSysInfoFDD.UplinkScrambingCode, + v_UTRANSysInfoFDD.ScramblingCode, + v_UTRANSysInfoFDD.Freq); + v_Reconfig := cs_RRCConnectionReconfiguration_SRVCC_FDD(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_UTRAN_ARFCN_Cell5, + v_UTRAN_PhysChId_Cell5); + + v_MeasRpt := cr_MeasurementReport_Utran_1Entry_FDD_RSCP(1, v_UTRAN_PhysChId_Cell5); + } + else { + v_UTRANSysInfoTDD := v_UTRANSysInfo.Utran[0].TDD; + v_UTRAN_ARFCN_Cell5 := v_UTRANSysInfo.Utran[0].TDD.Freq; + v_UTRAN_PhysChId_Cell5 := v_UTRANSysInfo.Utran[0].TDD.CellParametersID; + v_HandoverToUtranCommand := f_U_EncodeHandoverToUtran_64kPS_Speech_TDD(v_UTRANSysInfoTDD.CellParametersID, + v_UTRANSysInfoTDD.Freq); + v_Reconfig := cs_RRCConnectionReconfiguration_SRVCC_TDD(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_UTRAN_ARFCN_Cell5, + v_UTRAN_PhysChId_Cell5); + + v_MeasRpt := cr_MeasurementReport_Utran_1Entry_TDD_RSCP(1, v_UTRAN_PhysChId_Cell5); + } + + // @siclog "Step 1" siclog@ + // The SS configures UTRA cell 5 to reference configuration according 36.508 table 4.8.3-1, condition UTRA PS RB + Speech . + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + + // @siclog "Steps 2-23" siclog@ + // Make the UE attempt an IMS speech call + f_EUTRA_GenericIMS_MT_SpeechCall(eutra_Cell1); + + // @siclog "Step 24" siclog@ + // The SS transmits an RRCConnectionReconfiguration message on Cell 1 to setup inter RAT measurement and reporting for event B2. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + v_Reconfig)); // @sic R5-144670 sic@ + + // @siclog "Step 25" siclog@ + // The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + + // @siclog "Step 26" siclog@ + // The SS changes the power level for Cell 1 and Cell 5 according to the row "T1" in table 13.4.3.10.3.2-1 + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + f_EUTRA_SetCellPower(eutra_Cell1, v_T1_RS_EPRE_Cell1); + + // @siclog "Step 27" siclog@ + // The UE transmits a MeasurementReport message on Cell 1 to report event B2 for Cell 5. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, v_MeasRpt)); + + //@siclog "Step 28-29" siclog@ + f_EUTRA_UTRA_Capability (eutra_Cell1, true, true); + + f_IRAT_WaitForCoOrd_Trigger(UTRAN); + + //nas-securityParamFromEUTRA is the 4 least significant bits of the NAS downlink COUNT value according to Table 13.1.4.3.3-6 + v_NasCountDL := f_EUTRA_SS_NAS_CountGetDLNext(); + v_Nas_SecurityParamFromEUTRA := substr(v_NasCountDL, 3, 1); + // @siclog "Step 30" siclog@ + // The SS transmits a MobilityFromEUTRACommand message on Cell 1. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_MobilityFromEutraCommand_Handover(tsc_RRC_TI_Def, false, //@sic R5-142880 sic@ + utra, v_HandoverToUtranCommand, v_Nas_SecurityParamFromEUTRA, omit))); + // Release DRX configuration + f_EUTRA_SS_DrxCtrlConfig(eutra_Cell1, cs_DrxCtrl_None); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.24 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_24_EUTRA() runs on EUTRA_PTC + { // Inter-system mobility / E-UTRA voice to GSM CS voice / aSRVCC / MO call + + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c5); // @sic R5s140697 sic@ + // Create cell and send out system information + f_EUTRA_CellConfig_DefPlusUM_RoHC(eutra_Cell1); + f_EUTRA_Preamble (eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_SetCellPower(eutra_Cell1, -85); + + f_EUTRA_TestBody_Set(true); + + fl_TC_13_4_3_24_Body(); + + // Postamble + f_IRAT_WaitForCoOrd_Trigger(GERAN); + f_EUTRA_SetCellPower(eutra_Cell1, tsc_NonSuitableOffCellRS_EPRE); //@sic R5-142563 sic@ + f_EUTRA_TestBody_Set(false); + f_EUTRA_ReleaseAllCells (); + } // function f_TC_13_4_3_24_EUTRA + + /* + * @desc test body of TC_13_4_3_24 + * @status APPROVED (LTE_A) + */ + function fl_TC_13_4_3_24_Body() runs on EUTRA_PTC + { + var IRAT_CoOrd_SysInfo_Type v_GERANSysInfo; + var IRAT_CoOrd_SysInfo_Type v_GERANSysInfof12; + var IRAT_CoOrd_SysInfo_Type v_GERANSysInfof13; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var Frequency_IE_Type v_Frequency_IE_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell1); + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell1:= f_EUTRA_BandDependentParam(v_Frequency_IE_Cell1.DL_ChBandwidth, v_Frequency_IE_Cell1.UL_ChBandwidth); + var ARFCN_ValueGERAN v_GERAN_ARFCN_f11,v_GERAN_ARFCN_Tch ; //Cell24 toDo v_GERAN_ARFCN_Tch + var PhysCellIdGERAN v_GERAN_PhysChId_Cell24; + var BandIndicatorGERAN v_BandIndicatorGERAN_Cell24; + var octetstring v_HandoverToGeranCommand; + var octetstring v_Nas_SecurityParamFromEUTRA; + var NasCount_Type v_NasCountDL; + var template (value) DL_DCCH_Message v_Meas; + + //Coordinate with GERAN component to receive GERAN frequencies + v_GERANSysInfo := f_IRAT_WaitForCoOrd_SysInfo (GERAN); + v_GERANSysInfof12 := f_IRAT_WaitForCoOrd_SysInfo (GERAN); + v_GERANSysInfof13 := f_IRAT_WaitForCoOrd_SysInfo (GERAN); + + v_GERAN_ARFCN_f11 := v_GERANSysInfo.Geran[0].Arfcn; + v_GERAN_ARFCN_Tch := v_GERANSysInfo.Geran[0].TCHArfcn; + v_GERAN_PhysChId_Cell24 := { + networkColourCode := v_GERANSysInfo.Geran[0].Ncc, + baseStationColourCode := v_GERANSysInfo.Geran[0].Bcc + } + + if (v_GERANSysInfo.Geran[0].BandIndicator == '0'B) { + v_BandIndicatorGERAN_Cell24 := dcs1800; + } + else { + v_BandIndicatorGERAN_Cell24 := pcs1900; + } + v_HandoverToGeranCommand := f_G_EncodeHandoverToGERAN_FH_NonHopping(v_GERAN_ARFCN_f11, + v_GERAN_ARFCN_Tch, + v_GERAN_PhysChId_Cell24.networkColourCode, + v_GERAN_PhysChId_Cell24.baseStationColourCode, + true); + // @siclog "Step 1" siclog@ + // The SS configures Geran cell to reference configuration . + f_IRAT_SendCoOrd(GERAN, cms_IRAT_Trigger); + + // @siclog "Steps 2-12" siclog@ + /* Steps 1 to 12 of the generic test procedure for + * IMS MO speech call (TS 36.508 4.5A.6.3-1). + */ + f_EUTRA_GenericIMS_MO_SpeechCallInitiation(eutra_Cell1); + + // @siclog "Step 13" siclog@ + f_EUTRA_RRCConnectionReconfigurationWithPiggyNAS_DrbReconfig(eutra_Cell1, + tsc_RRC_TI_Def, + {tsc_DRB2}, + {cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_508_ActDedicatedEPSBearerCxtReq(tsc_EpsDedicatedBearerId, + tsc_PTI_Unassigned, + cs_LinkedId(hex2bit(tsc_EpsDefaultBearerId)), + cds_EPS_QoS_Dedicated_4, // @sic R5s140590 sic@ + f_EUTRA_Get_508_TrafficFlowTemplate(4, tsc_EpsDedicatedBearerId)))}, // @sic R5s140590 sic@ + UM_Mode); + + //@siclog "Step 14" siclog@ + SRB.receive(car_SRB2_NasPdu_IND(eutra_Cell1, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_ActDedicatedEPSBearerCxtAccept(tsc_EpsDedicatedBearerId)))); + //Wait for completion of IMS signalling + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); + + f_EUTRA_SendAuthParameters (eutra_Cell1, GERAN, false, true); + + v_Meas := cs_RRCConnectionReconfiguration_SRVCC_GERAN(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_GERAN_ARFCN_f11, + v_BandIndicatorGERAN_Cell24, + f_ConvertGERANNeighCell (v_GERANSysInfof12.Geran[0].Arfcn, v_GERANSysInfof13.Geran[0]. Arfcn)); + + // @siclog "Step 15" siclog@ + // The SS transmits an RRCConnectionReconfiguration message on Cell 1 to setup inter RAT measurement and reporting for event B2. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + v_Meas)); + // @siclog "Step 16" siclog@ + // The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + + // @siclog "Step 17" siclog@ + // The SS changes the power level for Cell 1 and Cell 24 according to the row "T1" in table 13.4.3.7.3.2-1 + f_IRAT_SendCoOrd(GERAN, cms_IRAT_Trigger); + f_EUTRA_SetCellPower(eutra_Cell1, -85); + + // @siclog "Step 18" siclog@ + // The UE transmits a MeasurementReport message on Cell 1 to report event B2 for Cell 24. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, + cr_MeasurementReport_Geran_1Entry(1, v_GERAN_PhysChId_Cell24))); + //nas-securityParamFromEUTRA is the 4 least significant bits of the NAS downlink COUNT value according to Table 13.1.4.3.3-6 + v_NasCountDL := f_EUTRA_SS_NAS_CountGetDLNext(); + v_Nas_SecurityParamFromEUTRA := substr(v_NasCountDL, 3, 1); + // @siclog "Step " siclog@ + // The SS transmits a MobilityFromEUTRACommand message on Cell 1. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_MobilityFromEutraCommand_Handover(tsc_RRC_TI_Def, + false,//@sic R5-142880 sic@ + geran, + v_HandoverToGeranCommand, + v_Nas_SecurityParamFromEUTRA, + omit, + cs_MobilityFromEUTRACommand_v8a0_IEs(v_BandIndicatorGERAN_Cell24)))); + + + } // function fl_TC_13_4_3_24_Body + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.25 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_25_EUTRA() runs on EUTRA_PTC + { // Inter-system mobility / E-UTRA voice to GSM CS voice / aSRVCC / MO call / Forked Responses + + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c5); // @sic R5s140711 sic@ + f_EUTRA_CellInfo_InitMaxReferencePower(eutra_Cell1, -60); + // Create cell and send out system information + f_EUTRA_CellConfig_DefPlusUM_RoHC(eutra_Cell1); + f_EUTRA_Preamble(eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_SetCellPower(eutra_Cell1, -60); + + f_EUTRA_TestBody_Set(true); + + fl_TC_13_4_3_25_Body(); + + // Postamble + f_IRAT_WaitForCoOrd_Trigger(GERAN); + f_EUTRA_TestBody_Set(false); + f_EUTRA_SetCellPower(eutra_Cell1, tsc_NonSuitableOffCellRS_EPRE); //@sic R5-142563 sic@ + f_EUTRA_ReleaseAllCells (); + } // function f_TC_13_4_3_25_EUTRA + + /* + * @desc test body of TC_13_4_3_25 + * @status APPROVED (LTE_A) + */ + function fl_TC_13_4_3_25_Body() runs on EUTRA_PTC + { + var IRAT_CoOrd_SysInfo_Type v_GERANSysInfo; + var IRAT_CoOrd_SysInfo_Type v_GERANSysInfof12; + var IRAT_CoOrd_SysInfo_Type v_GERANSysInfof13; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var Frequency_IE_Type v_Frequency_IE_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs (eutra_Cell1); + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell1:= f_EUTRA_BandDependentParam(v_Frequency_IE_Cell1.DL_ChBandwidth, v_Frequency_IE_Cell1.UL_ChBandwidth); + var ARFCN_ValueGERAN v_GERAN_ARFCN_f11; //Cell24 toDo v_GERAN_ARFCN_Tch + var ARFCN_ValueGERAN v_GERAN_ARFCN_Tch; //Cell24 toDo v_GERAN_ARFCN_Tch + var PhysCellIdGERAN v_GERAN_PhysChId_Cell24; + var BandIndicatorGERAN v_BandIndicatorGERAN_Cell24; + var template (value) DL_DCCH_Message v_Meas; + var octetstring v_HandoverToGeranCommand; + var octetstring v_Nas_SecurityParamFromEUTRA; + var NasCount_Type v_NasCountDL; + + //Coordinate with GERAN component to receive GERAN frequencies + v_GERANSysInfo := f_IRAT_WaitForCoOrd_SysInfo (GERAN); + v_GERANSysInfof12 := f_IRAT_WaitForCoOrd_SysInfo (GERAN); + v_GERANSysInfof13 := f_IRAT_WaitForCoOrd_SysInfo (GERAN); + + v_GERAN_ARFCN_f11 := v_GERANSysInfo.Geran[0].Arfcn; + v_GERAN_ARFCN_Tch := v_GERANSysInfo.Geran[0].TCHArfcn; + v_GERAN_PhysChId_Cell24 := { + networkColourCode := v_GERANSysInfo.Geran[0].Ncc, + baseStationColourCode := v_GERANSysInfo.Geran[0].Bcc + } + + if (v_GERANSysInfo.Geran[0].BandIndicator == '0'B) { + v_BandIndicatorGERAN_Cell24 := dcs1800; + } + else { + v_BandIndicatorGERAN_Cell24 := pcs1900; + } + v_HandoverToGeranCommand := f_G_EncodeHandoverToGERAN_FH_NonHopping(v_GERAN_ARFCN_f11, + v_GERAN_ARFCN_Tch, + v_GERAN_PhysChId_Cell24.networkColourCode, + v_GERAN_PhysChId_Cell24.baseStationColourCode, + true); + // @siclog "Step 1" siclog@ + // The SS configures Geran cell to reference configuration . + f_IRAT_SendCoOrd(GERAN, cms_IRAT_Trigger); + + // @siclog "Steps 2-12" siclog@ + /* Steps 1 to 12 of the generic test procedure for + * IMS MO speech call (TS 36.508 4.5A.6.3-1). + */ + f_EUTRA_GenericIMS_MO_SpeechCallInitiation(eutra_Cell1); + + // @siclog "Step 13" siclog@ + f_EUTRA_RRCConnectionReconfigurationWithPiggyNAS_DrbReconfig(eutra_Cell1, + tsc_RRC_TI_Def, + {tsc_DRB2}, + {cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_508_ActDedicatedEPSBearerCxtReq(tsc_EpsDedicatedBearerId, + tsc_PTI_Unassigned, + cs_LinkedId(hex2bit(tsc_EpsDefaultBearerId)), + cds_EPS_QoS_Dedicated_4, // @sic R5s140590 sic@ + f_EUTRA_Get_508_TrafficFlowTemplate(4, tsc_EpsDedicatedBearerId)))}, // @sic R5s140590 sic@ + UM_Mode); + + //@siclog "Step 14" siclog@ + SRB.receive(car_SRB2_NasPdu_IND(eutra_Cell1, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_ActDedicatedEPSBearerCxtAccept(tsc_EpsDedicatedBearerId)))); + // Steps 5 to 11 in Annex C.21 are executed + // C.27 is executed + //Wait for completion of IMS signalling + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); + + f_EUTRA_SendAuthParameters (eutra_Cell1, GERAN, false, true); + + v_Meas := cs_RRCConnectionReconfiguration_GERAN_F1F11(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_GERAN_ARFCN_f11, + v_BandIndicatorGERAN_Cell24, + f_ConvertGERANNeighCell (v_GERANSysInfof12.Geran[0].Arfcn, v_GERANSysInfof13.Geran[0]. Arfcn), + cs_QuantityConfigGERAN(rssi, omit)); + + v_Meas.message_.c1.rrcConnectionReconfiguration.criticalExtensions.c1.rrcConnectionReconfiguration_r8.measConfig.reportConfigToAddModList[0].reportConfig.reportConfigInterRAT.triggerType.event.eventId.eventB2.b2_Threshold2.b2_Threshold2GERAN := (-75 + 110); // @sic R5-142563 sic@ + + // @siclog "Step 16" siclog@ + // The SS transmits an RRCConnectionReconfiguration message on Cell 1 to setup inter RAT measurement and reporting for event B2. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + v_Meas)); + + // @siclog "Step 17" siclog@ + // The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + + // @siclog "Step 18" siclog@ + // The SS changes the power level for Cell 1 and Cell 24 according to the row "T1" in table 13.4.3.7.3.2-1 + f_IRAT_SendCoOrd(GERAN, cms_IRAT_Trigger); + f_EUTRA_SetCellPower(eutra_Cell1, -80); + + // @siclog "Step 19" siclog@ + // The UE transmits a MeasurementReport message on Cell 1 to report event B2 for Cell 24. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, + cr_MeasurementReport_Geran_1Entry(1, v_GERAN_PhysChId_Cell24))); + //nas-securityParamFromEUTRA is the 4 least significant bits of the NAS downlink COUNT value according to Table 13.1.4.3.3-6 + v_NasCountDL := f_EUTRA_SS_NAS_CountGetDLNext(); + v_Nas_SecurityParamFromEUTRA := substr(v_NasCountDL, 3, 1); + + // @siclog "Step 20" siclog@ + // The SS transmits a MobilityFromEUTRACommand message on Cell 1. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_MobilityFromEutraCommand_Handover(tsc_RRC_TI_Def, + false,//@sic R5-142880 sic@ + geran, + v_HandoverToGeranCommand, + v_Nas_SecurityParamFromEUTRA, + omit, + cs_MobilityFromEUTRACommand_v8a0_IEs(v_BandIndicatorGERAN_Cell24)))); + + + } // function fl_TC_13_4_3_25_Body + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.26 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_26_EUTRA() runs on EUTRA_PTC + { // Inter-system mobility / E-UTRA voice to GSM CS voice / aSRVCC / MO call / SRVCC HO Failure + + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c5); // @sic R5s140697 sic@ + f_EUTRA_CellInfo_InitMaxReferencePower (eutra_Cell1, -65); + // Create cell and send out system information + f_EUTRA_CellConfig_DefPlusUM_RoHC(eutra_Cell1); + f_EUTRA_Preamble (eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_SetCellPower(eutra_Cell1, -65); + + f_EUTRA_TestBody_Set(true); + + fl_TC_13_4_3_26_Body(); + + // Postamble + f_EUTRA_TestBody_Set(false); + f_EUTRA_Postamble(eutra_Cell1, E2_CONNECTED); + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); + } // function f_TC_13_4_3_26_EUTRA + + /* + * @desc test body of TC_13_4_3_26 + * @status APPROVED (LTE_A) + */ + function fl_TC_13_4_3_26_Body() runs on EUTRA_PTC + { + var IRAT_CoOrd_SysInfo_Type v_GERANSysInfo; + var IRAT_CoOrd_SysInfo_Type v_GERANSysInfof12; + var IRAT_CoOrd_SysInfo_Type v_GERANSysInfof13; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var Frequency_IE_Type v_Frequency_IE_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs (eutra_Cell1); + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell1:= f_EUTRA_BandDependentParam(v_Frequency_IE_Cell1.DL_ChBandwidth, v_Frequency_IE_Cell1.UL_ChBandwidth); + var ARFCN_ValueGERAN v_GERAN_ARFCN_f11; + var ARFCN_ValueGERAN v_GERAN_ARFCN_Tch ; + var PhysCellIdGERAN v_GERAN_PhysChId_Cell24; + var BandIndicatorGERAN v_BandIndicatorGERAN_Cell24; + var octetstring v_HandoverToGeranCommand; + var octetstring v_Nas_SecurityParamFromEUTRA; + var NasCount_Type v_NasCountDL; + var ShortMAC_I v_ShortMAC_I; + var NextHopChainingCount v_NextHopChainingCount := 0; + var PhysCellId v_PhysicalCellIdentity_Cell1:= f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell1);//Get cell specific parameters for Cell 1 + var EUTRA_SecurityParams_Type v_AuthParams; + var template (value) DL_DCCH_Message v_Meas; + var template RRCConnectionReestablishmentComplete_v920_IEs v_ReestCompleteExt := cr_RRCConnectionReestablishmentComplete_v920_IEs(cr_RRCConnectionReestablishmentComplete_v8a0_IEsAny ifpresent); + + if (f_EUTRA_MobileInfo_GetUECapability_AccessStratumRelease() == rel8 or f_EUTRA_MobileInfo_GetUECapability_AccessStratumRelease() == rel9) { // @sic R5s140699 sic@ + v_ReestCompleteExt := cr_RRCConnectionReestablishmentComplete_v920_IEs(cr_RRCConnectionReestablishmentComplete_v8a0_IEsAny ifpresent) ifpresent; + } + //Coordinate with GERAN component to receive GERAN frequencies + v_GERANSysInfo := f_IRAT_WaitForCoOrd_SysInfo(GERAN); + v_GERANSysInfof12 := f_IRAT_WaitForCoOrd_SysInfo(GERAN); + v_GERANSysInfof13 := f_IRAT_WaitForCoOrd_SysInfo(GERAN); + + v_GERAN_ARFCN_f11 := v_GERANSysInfo.Geran[0].Arfcn; + v_GERAN_ARFCN_Tch := v_GERANSysInfo.Geran[0].TCHArfcn; + v_GERAN_PhysChId_Cell24 := { + networkColourCode := v_GERANSysInfo.Geran[0].Ncc, + baseStationColourCode := v_GERANSysInfo.Geran[0].Bcc + } + + if (v_GERANSysInfo.Geran[0].BandIndicator == '0'B) { + v_BandIndicatorGERAN_Cell24 := dcs1800; + } + else { + v_BandIndicatorGERAN_Cell24 := pcs1900; + } + v_HandoverToGeranCommand := f_G_EncodeHandoverToGERAN_FH_NonHopping(v_GERAN_ARFCN_f11, + v_GERAN_ARFCN_Tch, + v_GERAN_PhysChId_Cell24.networkColourCode, + v_GERAN_PhysChId_Cell24.baseStationColourCode, + true); + // @siclog "Step 1" siclog@ + // The SS configures Geran cell to reference configuration . + f_IRAT_SendCoOrd(GERAN, cms_IRAT_Trigger); + + // @siclog "Steps 2-12" siclog@ + /* Steps 1 to 12 of the generic test procedure for + * IMS MO speech call (TS 36.508 4.5A.6.3-1). + */ + f_EUTRA_GenericIMS_MO_SpeechCallInitiation(eutra_Cell1); + + // @siclog "Step 13" siclog@ + f_EUTRA_RRCConnectionReconfigurationWithPiggyNAS_DrbReconfig(eutra_Cell1, + tsc_RRC_TI_Def, + {tsc_DRB2}, + {cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_508_ActDedicatedEPSBearerCxtReq(tsc_EpsDedicatedBearerId, + tsc_PTI_Unassigned, + cs_LinkedId(hex2bit(tsc_EpsDefaultBearerId)), + cds_EPS_QoS_Dedicated_4, // @sic R5s140590 sic@ + f_EUTRA_Get_508_TrafficFlowTemplate(4, tsc_EpsDedicatedBearerId)))}, // @sic R5s140590 sic@ + UM_Mode); + + //@siclog "Step 14" siclog@ + SRB.receive(car_SRB2_NasPdu_IND(eutra_Cell1, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_ActDedicatedEPSBearerCxtAccept(tsc_EpsDedicatedBearerId)))); + //Wait for completion of IMS signalling + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); + + f_EUTRA_SendAuthParameters(eutra_Cell1, GERAN, false, true); + + // @siclog "Step 16" siclog@ + // The SS transmits an RRCConnectionReconfiguration message on Cell 1 to setup inter RAT measurement and reporting for event B2. + v_Meas := cs_RRCConnectionReconfiguration_SRVCC_GERAN(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_GERAN_ARFCN_f11, + v_BandIndicatorGERAN_Cell24, + f_ConvertGERANNeighCell (v_GERANSysInfof12.Geran[0].Arfcn, v_GERANSysInfof13.Geran[0]. Arfcn)); + v_Meas.message_.c1.rrcConnectionReconfiguration.criticalExtensions.c1.rrcConnectionReconfiguration_r8.measConfig.reportConfigToAddModList[0].reportConfig.reportConfigInterRAT.triggerType.event.eventId.eventB2.b2_Threshold1.threshold_RSRP := (-90 + 140); // @sic R5s140697 sic@ + v_Meas.message_.c1.rrcConnectionReconfiguration.criticalExtensions.c1.rrcConnectionReconfiguration_r8.measConfig.reportConfigToAddModList[0].reportConfig.reportConfigInterRAT.triggerType.event.eventId.eventB2.b2_Threshold2.b2_Threshold2GERAN := (-100 + 110); // @sic R5s140697 sic@ + + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + v_Meas)); + + // @siclog "Step 17" siclog@ + // The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + + // @siclog "Step 18" siclog@ + // The SS changes the power level for Cell 1 and Cell 24 according to the row "T1" in table 13.4.3.7.3.2-1 + f_IRAT_SendCoOrd(GERAN, cms_IRAT_Trigger); + f_EUTRA_SetCellPower(eutra_Cell1, -85); + + // @siclog "Step 19" siclog@ + // The UE transmits a MeasurementReport message on Cell 1 to report event B2 for Cell 24. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, + cr_MeasurementReport_Geran_1Entry(1, v_GERAN_PhysChId_Cell24))); + //nas-securityParamFromEUTRA is the 4 least significant bits of the NAS downlink COUNT value according to Table 13.1.4.3.3-6 + v_NasCountDL := f_EUTRA_SS_NAS_CountGetDLNext(); + v_Nas_SecurityParamFromEUTRA := substr(v_NasCountDL, 3, 1); + + // Turn GERAN cell off + f_IRAT_SendCoOrd(GERAN, cms_IRAT_Trigger); + + //@siclog "Step 21 - 22 Void" siclog@ + + // @siclog "Step 23" siclog@ + // The SS transmits a MobilityFromEUTRACommand message on Cell 1. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_MobilityFromEutraCommand_Handover(tsc_RRC_TI_Def, + false,//@sic R5-142880 sic@ + geran, + v_HandoverToGeranCommand, + v_Nas_SecurityParamFromEUTRA, + omit, + cs_MobilityFromEUTRACommand_v8a0_IEs(v_BandIndicatorGERAN_Cell24)))); + + f_EUTRA_SS_SRBs_DRBs_Reset_StopULGrant_noPUCCHSync_PDCP_CountMaintian ( eutra_Cell1, -,-, 100 ); // @sic R5s140043, R5s140699 sic@ + v_ShortMAC_I := f_Calculate_ShortMAC(eutra_Cell1, eutra_Cell1); + f_EUTRA_SS_ConfigRachProcedure_Def(eutra_Cell1, tsc_C_RNTI_Def); // @sic R5s140043 sic@ + + // @siclog "Step 24" siclog@ + // The UE transmits an RRCConnectionReestablishmentRequest on Cell 1. + SRB.receive(car_SRB0_RrcPdu_IND(eutra_Cell1, + cr_508_RRCConnectionReestablishmentRequest(tsc_C_RNTI_Def, + v_PhysicalCellIdentity_Cell1, + cr_ReestablishmentCause_HandoverFailure, // @sic R5s140699 sic@ + v_ShortMAC_I))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 24"); + + // Activate RRC security at SS target cell for SRB 1, 2 and 1 AM DRB + v_AuthParams := f_EUTRA_SS_AS_ActivateSecurity_HO_Reest(eutra_Cell1, f_EUTRA_Security_Get(), v_NextHopChainingCount); + f_EUTRA_Security_Set(v_AuthParams); + + // @siclog "Step 25" siclog@ + // The SS transmits an RRCConnectionReestablishment message on Cell 1. + f_EUTRA_RRC_RRCConnectionReestablishment_Def(eutra_Cell1, -, v_NextHopChainingCount); + + // @siclog "Step 26" siclog@ + // The UE transmits an RRCConnectionReestablishmentComplete on Cell 1 + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionReestablishmentComplete(tsc_RRC_TI_Def, v_ReestCompleteExt))); + + //The SS transmits an RRCConnectionReconfiguration message on Cell 1. + //The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + // @siclog "Step 27" siclog@ + f_EUTRA_RRC_RRCConnectionReconfiguration_Resume_SRB2_DRBs(eutra_Cell1, tsc_RRC_TI_Def); + // @siclog "Step 1 of parallel behaviour" siclog@ + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); + + //Wait Trigger from IMS PTC + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); + // If we get here, the parallel behaviour on the IMS PTC must have completed successfully + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Parallel Behaviour Step 1"); + + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); + } // function fl_TC_13_4_3_26_Body + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.27 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_27_EUTRA() runs on EUTRA_PTC + { // Inter-system mobility / E-UTRA voice to GSM CS voice / aSRVCC / MT call + + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c5); // @sic R5s140703 sic@ + + // Create cell and send out system information + f_EUTRA_CellConfig_DefPlusUM_RoHC(eutra_Cell1); + f_EUTRA_Preamble (eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_SetCellPower(eutra_Cell1, -85); + + f_EUTRA_TestBody_Set(true); + + fl_TC_13_4_3_27_Body(); + + // Postamble + f_IRAT_WaitForCoOrd_Trigger(GERAN); + f_EUTRA_SetCellPower(eutra_Cell1, tsc_NonSuitableOffCellRS_EPRE); //@sic R5-142563 sic@ + f_EUTRA_TestBody_Set(false); + f_EUTRA_ReleaseAllCells (); + } // function f_TC_13_4_3_27_EUTRA + + /* + * @desc + * @status APPROVED (LTE_A) + */ + function fl_TC_13_4_3_27_Body() runs on EUTRA_PTC + { + var IRAT_CoOrd_SysInfo_Type v_GERANSysInfo; + var IRAT_CoOrd_SysInfo_Type v_GERANSysInfof12; + var IRAT_CoOrd_SysInfo_Type v_GERANSysInfof13; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var Frequency_IE_Type v_Frequency_IE_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell1); + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell1:= f_EUTRA_BandDependentParam(v_Frequency_IE_Cell1.DL_ChBandwidth, v_Frequency_IE_Cell1.UL_ChBandwidth); + var ARFCN_ValueGERAN v_GERAN_ARFCN_f11,v_GERAN_ARFCN_Tch; + var PhysCellIdGERAN v_GERAN_PhysChId_Cell24; + var BandIndicatorGERAN v_BandIndicatorGERAN_Cell24; + var octetstring v_HandoverToGeranCommand; + var octetstring v_Nas_SecurityParamFromEUTRA; + var NasCount_Type v_NasCountDL; + var template (value) DL_DCCH_Message v_Meas; + + //Coordinate with GERAN component to receive GERAN frequencies + v_GERANSysInfo := f_IRAT_WaitForCoOrd_SysInfo (GERAN); + v_GERANSysInfof12 := f_IRAT_WaitForCoOrd_SysInfo (GERAN); + v_GERANSysInfof13 := f_IRAT_WaitForCoOrd_SysInfo (GERAN); + + v_GERAN_ARFCN_f11 := v_GERANSysInfo.Geran[0].Arfcn; + v_GERAN_ARFCN_Tch := v_GERANSysInfo.Geran[0].TCHArfcn; + v_GERAN_PhysChId_Cell24 := { + networkColourCode := v_GERANSysInfo.Geran[0].Ncc, + baseStationColourCode := v_GERANSysInfo.Geran[0].Bcc + } + + if (v_GERANSysInfo.Geran[0].BandIndicator == '0'B) { + v_BandIndicatorGERAN_Cell24 := dcs1800; + } + else { + v_BandIndicatorGERAN_Cell24 := pcs1900; + } + v_HandoverToGeranCommand := f_G_EncodeHandoverToGERAN_FH_NonHopping(v_GERAN_ARFCN_f11, + v_GERAN_ARFCN_Tch, + v_GERAN_PhysChId_Cell24.networkColourCode, + v_GERAN_PhysChId_Cell24.baseStationColourCode, + true); + // The SS configures Geran cell to reference configuration . + f_IRAT_SendCoOrd(GERAN, cms_IRAT_Trigger); + + /* Steps 1 to 22 of the Steps 1 to 22 of the generic test procedure for + * IMS MT speech call (TS 36.508 4.5A.7.3-1). + * Note: Steps correspond to IMS steps 5-11 in 34.229-1 Annex C.11, i.e + * Handover happens while UE is ringing + */ + f_EUTRA_GenericIMS_MT_SpeechCall(eutra_Cell1); + + f_EUTRA_SendAuthParameters (eutra_Cell1, GERAN, false, true); + + // @sic R5-142563 sic@ + v_Meas := cs_RRCConnectionReconfiguration_SRVCC_GERAN(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_GERAN_ARFCN_f11, + v_BandIndicatorGERAN_Cell24, + f_ConvertGERANNeighCell (v_GERANSysInfof12.Geran[0].Arfcn, v_GERANSysInfof13.Geran[0]. Arfcn)); + + // @siclog "Step 23" siclog@ + // The SS transmits an RRCConnectionReconfiguration message on Cell 1 to setup inter RAT measurement and reporting for event B2. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + v_Meas)); + // @siclog "Step 24" siclog@ + // The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + + // @siclog "Step 25" siclog@ + // The SS changes the power level for Cell 1 and Cell 24 according to the row "T1" + f_IRAT_SendCoOrd(GERAN, cms_IRAT_Trigger); + f_EUTRA_SetCellPower(eutra_Cell1, -85); + + // @siclog "Step 26" siclog@ + // The UE transmits a MeasurementReport message on Cell 1 to report event B2 for Cell 24. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, + cr_MeasurementReport_Geran_1Entry(1, v_GERAN_PhysChId_Cell24))); + //nas-securityParamFromEUTRA is the 4 least significant bits of the NAS downlink COUNT value according to Table 13.1.4.3.3-6 + v_NasCountDL := f_EUTRA_SS_NAS_CountGetDLNext(); + v_Nas_SecurityParamFromEUTRA := substr(v_NasCountDL, 3, 1); + + // @siclog "Step 27" siclog@ + // The SS transmits a MobilityFromEUTRACommand message on Cell 1. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_MobilityFromEutraCommand_Handover(tsc_RRC_TI_Def, + false,//@sic R5-142880 sic@ + geran, + v_HandoverToGeranCommand, + v_Nas_SecurityParamFromEUTRA, + omit, + cs_MobilityFromEUTRACommand_v8a0_IEs(v_BandIndicatorGERAN_Cell24)))); + + + } // function fl_TC_13_4_3_27_Body + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.28 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_28_EUTRA() runs on EUTRA_PTC + { // Inter-system mobility / E-UTRA voice to GERAN CS voice / aSRVCC / MT call / SRVCC HO Failure + + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c5); // @sic R5s140705 sic@ + f_EUTRA_CellInfo_InitMaxReferencePower(eutra_Cell1, -65); + // Create cell and send out system information + f_EUTRA_CellConfig_DefPlusUM_RoHC(eutra_Cell1); + f_EUTRA_Preamble(eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_SetCellPower(eutra_Cell1, -65); + + f_EUTRA_TestBody_Set(true); + + fl_TC_13_4_3_28_Body(); + + // Postamble + f_EUTRA_TestBody_Set(false); + f_EUTRA_Postamble(eutra_Cell1, E2_CONNECTED); + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); + } // function f_TC_13_4_3_28_EUTRA + + /* + * @desc test body of TC_13_4_3_28 + * @status APPROVED (LTE_A) + */ + function fl_TC_13_4_3_28_Body() runs on EUTRA_PTC + { + var IRAT_CoOrd_SysInfo_Type v_GERANSysInfo; + var IRAT_CoOrd_SysInfo_Type v_GERANSysInfof12; + var IRAT_CoOrd_SysInfo_Type v_GERANSysInfof13; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var Frequency_IE_Type v_Frequency_IE_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs (eutra_Cell1); + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell1:= f_EUTRA_BandDependentParam(v_Frequency_IE_Cell1.DL_ChBandwidth, v_Frequency_IE_Cell1.UL_ChBandwidth); + var ARFCN_ValueGERAN v_GERAN_ARFCN_f11; + var ARFCN_ValueGERAN v_GERAN_ARFCN_Tch; + var PhysCellIdGERAN v_GERAN_PhysChId_Cell24; + var BandIndicatorGERAN v_BandIndicatorGERAN_Cell24; + var octetstring v_HandoverToGeranCommand; + var octetstring v_Nas_SecurityParamFromEUTRA; + var NasCount_Type v_NasCountDL; + var ShortMAC_I v_ShortMAC_I; + var NextHopChainingCount v_NextHopChainingCount := 0; + var PhysCellId v_PhysicalCellIdentity_Cell1:= f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell1);//Get cell specific parameters for Cell 1 + var EUTRA_SecurityParams_Type v_AuthParams; + var template (value) DL_DCCH_Message v_Meas; + var template RRCConnectionReestablishmentComplete_v920_IEs v_ReestCompleteExt := cr_RRCConnectionReestablishmentComplete_v920_IEs(cr_RRCConnectionReestablishmentComplete_v8a0_IEsAny ifpresent); + + if (f_EUTRA_MobileInfo_GetUECapability_AccessStratumRelease() == rel8 or f_EUTRA_MobileInfo_GetUECapability_AccessStratumRelease() == rel9) { // @sic R5s140699 sic@ + v_ReestCompleteExt := cr_RRCConnectionReestablishmentComplete_v920_IEs(cr_RRCConnectionReestablishmentComplete_v8a0_IEsAny ifpresent) ifpresent; + } + + //Coordinate with GERAN component to receive GERAN frequencies + v_GERANSysInfo := f_IRAT_WaitForCoOrd_SysInfo (GERAN); + v_GERANSysInfof12 := f_IRAT_WaitForCoOrd_SysInfo (GERAN); + v_GERANSysInfof13 := f_IRAT_WaitForCoOrd_SysInfo (GERAN); + + v_GERAN_ARFCN_f11 := v_GERANSysInfo.Geran[0].Arfcn; + v_GERAN_ARFCN_Tch := v_GERANSysInfo.Geran[0].TCHArfcn; + v_GERAN_PhysChId_Cell24 := { + networkColourCode := v_GERANSysInfo.Geran[0].Ncc, + baseStationColourCode := v_GERANSysInfo.Geran[0].Bcc + } + + if (v_GERANSysInfo.Geran[0].BandIndicator == '0'B) { + v_BandIndicatorGERAN_Cell24 := dcs1800; + } + else { + v_BandIndicatorGERAN_Cell24 := pcs1900; + } + v_HandoverToGeranCommand := f_G_EncodeHandoverToGERAN_FH_NonHopping(v_GERAN_ARFCN_f11, + v_GERAN_ARFCN_Tch, + v_GERAN_PhysChId_Cell24.networkColourCode, + v_GERAN_PhysChId_Cell24.baseStationColourCode, + true); + // @siclog "Step 1" siclog@ + // The SS configures Geran cell to reference configuration . + f_IRAT_SendCoOrd(GERAN, cms_IRAT_Trigger); + + /* Steps 2 to 23 of the Steps 1 to 22 of the generic test procedure for + * IMS MT speech call (TS 36.508 4.5A.7.3-1). + * Note: Steps correspond to IMS steps 5-11 in 34.229-1 Annex C.11, i.e + * Handover happens while UE is ringing + */ + f_EUTRA_GenericIMS_MT_SpeechCall(eutra_Cell1); + + f_EUTRA_SendAuthParameters(eutra_Cell1, GERAN, false, true); + + // @siclog "Step 24" siclog@ + // The SS transmits an RRCConnectionReconfiguration message on Cell 1 to setup inter RAT measurement and reporting for event B2. + v_Meas := cs_RRCConnectionReconfiguration_SRVCC_GERAN(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_GERAN_ARFCN_f11, + v_BandIndicatorGERAN_Cell24, + f_ConvertGERANNeighCell (v_GERANSysInfof12.Geran[0].Arfcn, v_GERANSysInfof13.Geran[0]. Arfcn)); + v_Meas.message_.c1.rrcConnectionReconfiguration.criticalExtensions.c1.rrcConnectionReconfiguration_r8.measConfig.reportConfigToAddModList[0].reportConfig.reportConfigInterRAT.triggerType.event.eventId.eventB2.b2_Threshold1.threshold_RSRP := (-90 + 140); // @sic R5s140697 sic@ + v_Meas.message_.c1.rrcConnectionReconfiguration.criticalExtensions.c1.rrcConnectionReconfiguration_r8.measConfig.reportConfigToAddModList[0].reportConfig.reportConfigInterRAT.triggerType.event.eventId.eventB2.b2_Threshold2.b2_Threshold2GERAN := (-100 + 110); // @sic R5s140697 sic@ + + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + v_Meas)); + + // @siclog "Step 25" siclog@ + // The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + + // @siclog "Step 26" siclog@ + // The SS changes the power level for Cell 1 and Cell 24 according to the row "T1" + f_IRAT_SendCoOrd(GERAN, cms_IRAT_Trigger); + f_EUTRA_SetCellPower(eutra_Cell1, -85); + + // @siclog "Step 27" siclog@ + // The UE transmits a MeasurementReport message on Cell 1 to report event B2 for Cell 24. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, + cr_MeasurementReport_Geran_1Entry(1, v_GERAN_PhysChId_Cell24))); + //nas-securityParamFromEUTRA is the 4 least significant bits of the NAS downlink COUNT value according to Table 13.1.4.3.3-6 + v_NasCountDL := f_EUTRA_SS_NAS_CountGetDLNext(); + v_Nas_SecurityParamFromEUTRA := substr(v_NasCountDL, 3, 1); + + // @siclog "Step 28" siclog@ + // The SS changes the power level for Cell 24 according to the row "T2" + f_IRAT_SendCoOrd(GERAN, cms_IRAT_Trigger); + + //@siclog "Step 29 - 30 Void" siclog@ + + // @siclog "Step 31" siclog@ + // The SS transmits a MobilityFromEUTRACommand message on Cell 1. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_MobilityFromEutraCommand_Handover(tsc_RRC_TI_Def, + false,//@sic R5-142880 sic@ + geran, + v_HandoverToGeranCommand, + v_Nas_SecurityParamFromEUTRA, + omit, + cs_MobilityFromEUTRACommand_v8a0_IEs(v_BandIndicatorGERAN_Cell24)))); + + + f_EUTRA_SS_SRBs_DRBs_Reset_StopULGrant_noPUCCHSync_PDCP_CountMaintian ( eutra_Cell1, -,-, 100 ); + v_ShortMAC_I := f_Calculate_ShortMAC(eutra_Cell1, eutra_Cell1); + f_EUTRA_SS_ConfigRachProcedure_Def(eutra_Cell1, tsc_C_RNTI_Def); + + // @siclog "Step 32" siclog@ + // The UE transmits an RRCConnectionReestablishmentRequest on Cell 1. + SRB.receive(car_SRB0_RrcPdu_IND(eutra_Cell1, + cr_508_RRCConnectionReestablishmentRequest(tsc_C_RNTI_Def, + v_PhysicalCellIdentity_Cell1, + cr_ReestablishmentCause_HandoverFailure, // @sic R5s140705 sic@ + v_ShortMAC_I))); + + // Activate RRC security at SS target cell for SRB 1, 2 and 1 AM DRB + v_AuthParams := f_EUTRA_SS_AS_ActivateSecurity_HO_Reest(eutra_Cell1, f_EUTRA_Security_Get(), v_NextHopChainingCount); + f_EUTRA_Security_Set(v_AuthParams); + + // @siclog "Step 33" siclog@ + // The SS transmits an RRCConnectionReestablishment message on Cell 1. + f_EUTRA_RRC_RRCConnectionReestablishment_Def(eutra_Cell1, -, v_NextHopChainingCount); + + // @siclog "Step 34" siclog@ + // The UE transmits an RRCConnectionReestablishmentComplete on Cell 1 + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionReestablishmentComplete(tsc_RRC_TI_Def, v_ReestCompleteExt))); // @sic R5-144675 sic@ + + //The SS transmits an RRCConnectionReconfiguration message on Cell 1. + //The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + // @siclog "Step 35" siclog@ + f_EUTRA_RRC_RRCConnectionReconfiguration_Resume_SRB2_DRBs(eutra_Cell1, tsc_RRC_TI_Def); + // @siclog "Step 1 of parallel behaviour" siclog@ + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); + + //Wait Trigger from IMS PTC + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); + // If we get here, the parallel behaviour on the IMS PTC must have completed successfully + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Parallel Behaviour Step 1"); + + } // function fl_TC_13_4_3_28_Body + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.30 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_30_EUTRA() runs on EUTRA_PTC + { // Inter-system mobility / E-UTRA voice to GERAN CS voice / aSRVCC / MT call / SRVCC HO Failure + + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c5); // @sic R5s140714 sic@ + f_EUTRA_CellInfo_InitMaxReferencePower(eutra_Cell1, -60); + // Create cell and send out system information + f_EUTRA_CellConfig_DefPlusUM_RoHC(eutra_Cell1); + f_EUTRA_Preamble (eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_SetCellPower(eutra_Cell1, -60); + + f_EUTRA_TestBody_Set(true); + + fl_TC_13_4_3_30_Body(); + + // Postamble + f_EUTRA_TestBody_Set(false); + f_EUTRA_Postamble(eutra_Cell1, E2_CONNECTED); + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); + } // function f_TC_13_4_3_30_EUTRA + + /* + * @desc test body of TC_13_4_3_30 + * @status APPROVED (LTE_A) + */ + function fl_TC_13_4_3_30_Body() runs on EUTRA_PTC + { + var IRAT_CoOrd_SysInfo_Type v_GERANSysInfo; + var IRAT_CoOrd_SysInfo_Type v_GERANSysInfof12; + var IRAT_CoOrd_SysInfo_Type v_GERANSysInfof13; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var Frequency_IE_Type v_Frequency_IE_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell1); + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell1:= f_EUTRA_BandDependentParam(v_Frequency_IE_Cell1.DL_ChBandwidth, v_Frequency_IE_Cell1.UL_ChBandwidth); + var ARFCN_ValueGERAN v_GERAN_ARFCN_f11; + var ARFCN_ValueGERAN v_GERAN_ARFCN_Tch; + var PhysCellIdGERAN v_GERAN_PhysChId_Cell24; + var BandIndicatorGERAN v_BandIndicatorGERAN_Cell24; + var octetstring v_HandoverToGeranCommand; + var octetstring v_Nas_SecurityParamFromEUTRA; + var NasCount_Type v_NasCountDL; + + //Coordinate with GERAN component to receive GERAN frequencies + v_GERANSysInfo := f_IRAT_WaitForCoOrd_SysInfo (GERAN); + v_GERANSysInfof12 := f_IRAT_WaitForCoOrd_SysInfo(GERAN); + v_GERANSysInfof13 := f_IRAT_WaitForCoOrd_SysInfo(GERAN); + + v_GERAN_ARFCN_f11 := v_GERANSysInfo.Geran[0].Arfcn; + v_GERAN_ARFCN_Tch := v_GERANSysInfo.Geran[0].TCHArfcn; + v_GERAN_PhysChId_Cell24 := { + networkColourCode := v_GERANSysInfo.Geran[0].Ncc, + baseStationColourCode := v_GERANSysInfo.Geran[0].Bcc + } + + if (v_GERANSysInfo.Geran[0].BandIndicator == '0'B) { + v_BandIndicatorGERAN_Cell24 := dcs1800; + } + else { + v_BandIndicatorGERAN_Cell24 := pcs1900; + } + v_HandoverToGeranCommand := f_G_EncodeHandoverToGERAN_FH_NonHopping(v_GERAN_ARFCN_f11, + v_GERAN_ARFCN_Tch, + v_GERAN_PhysChId_Cell24.networkColourCode, + v_GERAN_PhysChId_Cell24.baseStationColourCode, + true); + // The SS configures Geran cell to reference configuration. + f_IRAT_SendCoOrd(GERAN, cms_IRAT_Trigger); + + /* Steps 1 to 22 of the Steps 1 to 22 of the generic test procedure for + * IMS MT speech call (TS 36.508 4.5A.7.3-1). + * Note: Steps correspond to IMS steps 5-11 in 34.229-1 Annex C.11, i.e + * Handover happens while UE is ringing + */ + // @siclog "Steps 1 - 22" siclog@ + f_EUTRA_GenericIMS_MT_SpeechCall(eutra_Cell1); + + f_EUTRA_SendAuthParameters (eutra_Cell1, GERAN, false, true); + + // @siclog "Step 23" siclog@ + // The SS transmits an RRCConnectionReconfiguration message on Cell 1 to setup inter RAT measurement and reporting for event B2. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_RRCConnectionReconfiguration_GERAN_F1F11(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_GERAN_ARFCN_f11, + v_BandIndicatorGERAN_Cell24, + f_ConvertGERANNeighCell (v_GERANSysInfof12.Geran[0].Arfcn, v_GERANSysInfof13.Geran[0]. Arfcn), + cs_QuantityConfigGERAN(rssi, omit)))); + // @siclog "Step 24" siclog@ + // The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + + // @siclog "Step 25" siclog@ + // The SS changes the power level for Cell 1 and Cell 24 according to the row "T1" + f_IRAT_SendCoOrd(GERAN, cms_IRAT_Trigger); + f_EUTRA_SetCellPower(eutra_Cell1, -80); + + // @siclog "Step 26" siclog@ + // The UE transmits a MeasurementReport message on Cell 1 to report event B2 for Cell 24. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, + cr_MeasurementReport_Geran_1Entry(1, v_GERAN_PhysChId_Cell24))); + //nas-securityParamFromEUTRA is the 4 least significant bits of the NAS downlink COUNT value according to Table 13.1.4.3.3-6 + v_NasCountDL := f_EUTRA_SS_NAS_CountGetDLNext(); + v_Nas_SecurityParamFromEUTRA := substr(v_NasCountDL, 3, 1); + + // @siclog "Step 27" siclog@ + // The SS transmits a NOTIFICATION message + SRB.send(cas_SRB1_NasPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_Notification(tsc_EpsDefaultBearerId)))); // + + // now tell IMS PTC to take over + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); + //Wait Trigger from IMS PTC + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); + // If we get here, the parallel behaviour on the IMS PTC must have completed successfully + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 28"); + + f_IRAT_SendCoOrd(GERAN, cms_IRAT_Trigger); + } // function fl_TC_13_4_3_30_Body + +} diff --git a/LTE_A_IWD_14wk37/LTE_A/13/ASRVCC_EUTRA_GERAN.ttcn b/LTE_A_IWD_14wk37/LTE_A/13/ASRVCC_EUTRA_GERAN.ttcn new file mode 100644 index 0000000..91952c9 --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/13/ASRVCC_EUTRA_GERAN.ttcn @@ -0,0 +1,334 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-05 19:27:02 +0200 (Fri, 05 Sep 2014) $ +// $Rev: 12079 $ +/******************************************************************************/ + +module ASRVCC_EUTRA_GERAN +{ + import from GERAN_Component all; + import from GERAN_Templates all; + import from GERAN_TypeDefs all; + import from GERAN_CommonFunctions all; + import from GERAN_CellInfo all; + import from CommonDefs all; + import from CommonIratDefs all; + import from NAS_CommonTypeDefs all; + import from NAS_24008TypeDefs all; + import from NAS_24008Templates_IRAT all; + import from UpperTesterFunctions all; + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.24 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_24_GERAN() runs on GERAN_PTC + { // Inter-system mobility / E-UTRA voice to GSM CS voice / aSRVCC / MO call + + var G_LogicChType v_TchType; + + //Initialise cell info and configure cell 24 + f_GERAN_Init(EUTRA_GERAN); + + f_GERAN_Send_IR_SysInfoToEUTRA(geran_Cell24); + f_GERAN_Send_IR_SysInfoToEUTRA(geran_Cell25); + f_GERAN_Send_IR_SysInfoToEUTRA(geran_Cell26); + + f_GERAN_CreateCell (geran_Cell24); + + //Set cell power according to "T0" + f_IRAT_WaitForCoOrd_Trigger (EUTRA); + f_GERAN_SetCellPowerLevel (geran_Cell24, -85); + + f_GERAN_TestBody_Set(true); + + //Receive updated auth parameters + f_GERAN_InterRAT_InitialiseAuthParams(); + + //Create the physical channel in GERAN cell + f_GERAN_CreateTCH (geran_Cell24); + + //Set cell power according to "T1" + f_IRAT_WaitForCoOrd_Trigger (EUTRA); + f_GERAN_SetCellPowerLevel (geran_Cell24, -65); + f_GERAN_SetChPwrLevel (geran_Cell24, tsc_TchCh, -65); + + // @siclog "Step 20" siclog@ + f_GERAN_CSHOAccessAndPhysicalInformation (geran_Cell24, "Step 20"); + + //@siclog "Step 21-25" siclog@ + v_TchType := f_TMSI_Relocation_AndConnect(geran_Cell24); + f_GERAN_PreliminaryPass (__FILE__, __LINE__, "Step 25"); + + //@siclog "Step 26-40" siclog@ + f_GERAN_CC_Disconnect ( geran_Cell24, v_TchType ); + f_G_ChannelRelease (geran_Cell24, tsc_TchCh, v_TchType, 15); // @sic R5s140697 sic@ + f_GERAN_508CheckCampOnNewGeranCell (geran_Cell24, false, -, -, true); // @sic R5s140697 sic@ + + f_GERAN_TestBody_Set(false); + + //Perform postamble + f_GERAN_Postamble(geran_Cell24, G1_IDLE, -, -, v_TchType); + } // end of 13.4.3.24 + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.25 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_25_GERAN() runs on GERAN_PTC + { // Inter-system mobility / E-UTRA voice to GSM CS voice / aSRVCC / MO call / Forked Response + + var G_LogicChType v_TchType; + + //Initialise cell info and configure cell 24 + f_GERAN_Init(EUTRA_GERAN); + + f_GERAN_Send_IR_SysInfoToEUTRA(geran_Cell24); + f_GERAN_Send_IR_SysInfoToEUTRA(geran_Cell25); + f_GERAN_Send_IR_SysInfoToEUTRA(geran_Cell26); + + f_GERAN_CreateCell (geran_Cell24); + + //Set cell power according to "T0" + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + f_GERAN_SetCellPowerLevel(geran_Cell24, -85); + + f_GERAN_TestBody_Set(true); + + //Receive updated auth parameters + f_GERAN_InterRAT_InitialiseAuthParams(); + + //Create the physical channel in GERAN cell + f_GERAN_CreateTCH (geran_Cell24); + + //Set cell power according to "T1" + f_IRAT_WaitForCoOrd_Trigger (EUTRA); + f_GERAN_SetCellPowerLevel (geran_Cell24, -65); + f_GERAN_SetChPwrLevel (geran_Cell24, tsc_TchCh, -65); + + // @siclog "Step 21" siclog@ + f_GERAN_CSHOAccessAndPhysicalInformation(geran_Cell24, "Step 21"); + + //@siclog "Step 22-26" siclog@ + v_TchType := f_TMSI_Relocation_AndConnect(geran_Cell24); + f_GERAN_PreliminaryPass(__FILE__, __LINE__, "Step 26"); + + //@siclog "Step 27-41" siclog@ + f_GERAN_CC_Disconnect ( geran_Cell24, v_TchType ); + f_G_ChannelRelease (geran_Cell24, tsc_TchCh, v_TchType, 15); + f_GERAN_508CheckCampOnNewGeranCell (geran_Cell24, false, -, -, true); + + f_GERAN_TestBody_Set(false); + + //Perform postamble + f_GERAN_Postamble(geran_Cell24, G1_IDLE, -, -, v_TchType); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.26 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_26_GERAN() runs on GERAN_PTC + { // Inter-system mobility / E-UTRA voice to GSM CS voice / aSRVCC / MO call / SRVCC HO Failure + + //Initialise cell info and configure cell 24 + f_GERAN_Init(EUTRA_GERAN); + + f_GERAN_Send_IR_SysInfoToEUTRA(geran_Cell24); + f_GERAN_Send_IR_SysInfoToEUTRA(geran_Cell25); + f_GERAN_Send_IR_SysInfoToEUTRA(geran_Cell26); + + f_GERAN_CreateCell (geran_Cell24); + + //Set cell power according to "T0" + f_IRAT_WaitForCoOrd_Trigger (EUTRA); + f_GERAN_SetCellPowerLevel (geran_Cell24, -85); + + f_GERAN_TestBody_Set(true); + + //Receive updated auth parameters + f_GERAN_InterRAT_InitialiseAuthParams(); + + //Create the physical channel in GERAN cell + f_GERAN_CreateTCH (geran_Cell24); + + //Set cell power according to "T1" + f_IRAT_WaitForCoOrd_Trigger (EUTRA); + f_GERAN_SetCellPowerLevel (geran_Cell24, -65); + f_GERAN_SetChPwrLevel (geran_Cell24, tsc_TchCh, -65); + + f_IRAT_WaitForCoOrd_Trigger (EUTRA); + //Set cell power according to "T2" + f_GERAN_SetCellPowerLevel (geran_Cell24, tsc_GERAN_ChPwrLvl_Off); + + // End of the test for GERAN + f_GERAN_TestBody_Set(false); + + //Perform postamble + f_GERAN_SS_CellRelease (geran_Cell24, -, true); // @sic R5s140699 sic@ + } + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.27 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_27_GERAN() runs on GERAN_PTC + { // Inter-system mobility / E-UTRA voice to GSM CS voice / aSRVCC / MT call + + var template (value) TI v_Ti_S := cs_TI_MT; + var G_L2_DATAMESSAGE_IND v_Connect; + var G_LogicChType v_ChannelType; + var SubChannelNumber v_SubChannel; + var template (present) TI v_Ti_R := v_Ti_S; + v_Ti_R.tiFlag := '1'B; + + //Initialise cell info and configure cell 24 + f_GERAN_Init(EUTRA_GERAN); + + f_GERAN_Send_IR_SysInfoToEUTRA(geran_Cell24); + f_GERAN_Send_IR_SysInfoToEUTRA(geran_Cell25); + f_GERAN_Send_IR_SysInfoToEUTRA(geran_Cell26); + + f_GERAN_CreateCell (geran_Cell24); + + //Set cell power according to "T0" + f_IRAT_WaitForCoOrd_Trigger (EUTRA); + f_GERAN_SetCellPowerLevel (geran_Cell24, -85); + + f_GERAN_TestBody_Set(true); + + //Receive updated auth parameters + f_GERAN_InterRAT_InitialiseAuthParams(); + + //Create the physical channel in GERAN cell + f_GERAN_CreateTCH (geran_Cell24); + + //Set cell power according to "T1" + f_IRAT_WaitForCoOrd_Trigger (EUTRA); + f_GERAN_SetCellPowerLevel (geran_Cell24, -65); + f_GERAN_SetChPwrLevel (geran_Cell24, tsc_TchCh, -65); + + // @siclog "Step 28" siclog@ + f_GERAN_CSHOAccessAndPhysicalInformation (geran_Cell24, "Step 28"); + + //@siclog "Step 29-31" siclog@ + v_ChannelType := f_TMSI_Relocation_AndConnect(geran_Cell24, false); + + //Tell EUTRA PTC that test case is over @sic R5s140703 sic@ + f_IRAT_SendCoOrd (EUTRA, cms_IRAT_Trigger); + + // @siclog "Step 32" siclog@ + f_UT_AnswerCall (UT); + + // @siclog "Step 33" siclog@ + G_L2.receive (car_G_L2_DATA_IND (geran_Cell24, 0, tsc_TchCh, ?, ?, ?, cr_G_Connect ( v_Ti_R ))) -> value v_Connect; + f_GERAN_PreliminaryPass (__FILE__, __LINE__, "Step 36"); + v_ChannelType := v_Connect.l3.g_LogicChType; + v_SubChannel := v_Connect.l3.subChannel; + + // @siclog "Step 34" siclog@ + G_L2.send (cas_G_L2_DATA_REQ(geran_Cell24, 0, tsc_TchCh, v_ChannelType, v_SubChannel, cs_G_RFN_Omit, cs_G_ConnectAck ( v_Ti_S ))); + + // @siclog "Step 35-37 VOID" siclog@ + // @siclog "Step 38-52" siclog@ + f_GERAN_CC_Disconnect ( geran_Cell24, v_ChannelType ); + f_G_ChannelRelease (geran_Cell24, tsc_TchCh, v_ChannelType, 15); // @sic R5s140703 sic@ + f_GERAN_508CheckCampOnNewGeranCell (geran_Cell24, false, -, -, true); // @sic R5s140703 sic@ + + f_GERAN_TestBody_Set(false); + + //Perform postamble + f_GERAN_Postamble(geran_Cell24, G1_IDLE, -, -, v_ChannelType); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.28 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_28_GERAN() runs on GERAN_PTC + { // Inter-system mobility / E-UTRA voice to GSM CS voice / aSRVCC / MT call / SRVCC HO Failure + + //Initialise cell info and configure cell 24 + f_GERAN_Init(EUTRA_GERAN); + + f_GERAN_Send_IR_SysInfoToEUTRA(geran_Cell24); + f_GERAN_Send_IR_SysInfoToEUTRA(geran_Cell25); + f_GERAN_Send_IR_SysInfoToEUTRA(geran_Cell26); + + f_GERAN_CreateCell (geran_Cell24); + + //Set cell power according to "T0" + f_IRAT_WaitForCoOrd_Trigger (EUTRA); + f_GERAN_SetCellPowerLevel (geran_Cell24, -85); + + f_GERAN_TestBody_Set(true); + + //Receive updated auth parameters + f_GERAN_InterRAT_InitialiseAuthParams(); + + //Create the physical channel in GERAN cell + f_GERAN_CreateTCH (geran_Cell24); + + //Set cell power according to "T1" + f_IRAT_WaitForCoOrd_Trigger (EUTRA); + f_GERAN_SetCellPowerLevel (geran_Cell24, -65); + f_GERAN_SetChPwrLevel (geran_Cell24, tsc_TchCh, -65); + + f_IRAT_WaitForCoOrd_Trigger (EUTRA); + //Set cell power according to "T2" + f_GERAN_SetCellPowerLevel (geran_Cell24, tsc_GERAN_ChPwrLvl_Off); + + // End of the test for GERAN + f_GERAN_TestBody_Set(false); + + //Perform postamble + f_GERAN_SS_CellRelease (geran_Cell24, -, true); // @sic R5s140705 sic@ + } + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.30 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_30_GERAN() runs on GERAN_PTC + { // Inter-system mobility / E-UTRA voice to GSM CS voice / aSRVCC / MT call / SRVCC HO cancelled / User answers in PS domain + + //Initialise cell info and configure cell 24 + f_GERAN_Init(EUTRA_GERAN); + + f_GERAN_Send_IR_SysInfoToEUTRA(geran_Cell24); + f_GERAN_Send_IR_SysInfoToEUTRA(geran_Cell25); + f_GERAN_Send_IR_SysInfoToEUTRA(geran_Cell26); + + f_GERAN_CreateCell(geran_Cell24); + + //Set cell power according to "T0" + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + f_GERAN_SetCellPowerLevel(geran_Cell24, -85); + + f_GERAN_TestBody_Set(true); + + //Receive updated auth parameters + f_GERAN_InterRAT_InitialiseAuthParams(); + + //Create the physical channel in GERAN cell + f_GERAN_CreateTCH(geran_Cell24); + + //Set cell power according to "T1" + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + f_GERAN_SetCellPowerLevel(geran_Cell24, -65); + f_GERAN_SetChPwrLevel(geran_Cell24, tsc_TchCh, -65); + + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + // End of the test for GERAN + f_GERAN_TestBody_Set(false); + + //Perform postamble + f_GERAN_SS_CellRelease(geran_Cell24, -, true); // @sic R5s140699 sic@ + } + +} diff --git a/LTE_A_IWD_14wk37/LTE_A/13/ASRVCC_EUTRA_IMS.ttcn b/LTE_A_IWD_14wk37/LTE_A/13/ASRVCC_EUTRA_IMS.ttcn new file mode 100644 index 0000000..5621c4c --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/13/ASRVCC_EUTRA_IMS.ttcn @@ -0,0 +1,754 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-05 19:27:02 +0200 (Fri, 05 Sep 2014) $ +// $Rev: 12079 $ +/******************************************************************************/ + +module ASRVCC_EUTRA_IMS { + + import from IMS_Component all; + import from LibSip_SIPTypesAndValues all; + import from IMS_PTC_CoordMsg all; + import from IMS_Procedures_Common all; + import from IMS_Procedures_Registration all; + import from IMS_Procedures_CallControl all; + import from IMS_ASP_TypeDefs all; + import from IMS_ASP_Templates all; + import from IMS_SIP_Templates all; + import from IP_ASP_TypeDefs all; + import from LibSip_SDPTypes all; + import from UpperTesterFunctions all; + import from IMS_CommonParameters all; + import from IMS_CommonSRVCC all; + + /* + * @desc + * @param p_InviteRequestWithSdp + * @param p_MessageHeader_Prev183Response + * @param p_GeolocationInfo (default value: false) + * @status APPROVED (LTE_A) + */ + function fl_IMS_MOCallSetup_AnnexC21_Steps5To11(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp, + MessageHeader p_MessageHeader_Prev183Response, + boolean p_GeolocationInfo := false) runs on IMS_PTC return SDP_Message + { /* @sic R5s140686, R5-144755: returns latest SDP message sent by the UE sic@ */ + var SDP_Message v_LatestSDP := f_IMS_MOCallSetup_AnnexC21_Steps5_8(p_InviteRequestWithSdp, p_MessageHeader_Prev183Response, p_GeolocationInfo); + f_IMS_MOCallSetup_AnnexC21C25_Step9_11(p_InviteRequestWithSdp); + return v_LatestSDP; + } + + /* + * @desc + * @param p_InviteRequestWithSdp + * @param p_PrevSDP_Message + * @return SDP_Message + * @status APPROVED (LTE_A) + */ + function fl_IMS_MOCallSetup_AnnexC27(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp, + template (omit) SDP_Message p_PrevSDP_Message) runs on IMS_PTC return SDP_Message + { /* returns the "latest SDP offer" received from the UE */ + /* @sic R5s140686, R5-144755: parameter p_PrevSDP_Message sic@ */ + var charstring v_LocalTag := "INVITE-To-Tag-Forked"; + var template (value) MessageHeader v_MessageHeader_Response183; + var SDP_Message v_SDP_LatestOffer; + + /* initialise 2nd dialog */ + f_IMS_PTC_ImsInfo_DialogInit(dialogRemote, p_InviteRequestWithSdp.Invite.msgHeader, secondDialog); + f_IMS_PTC_ImsInfo_DialogSetLocalTag(v_LocalTag, secondDialog); + f_IMS_PTC_ImsInfo_ActivateDialog(secondDialog); + + // @siclog "Step 1" siclog@ + v_MessageHeader_Response183 := f_IMS_MOCallSetup_AnnexC21_Step4(p_InviteRequestWithSdp); + + // @siclog "Step 2 - 5" siclog@ + v_SDP_LatestOffer := f_IMS_MOCallSetup_AnnexC21_Steps5_8(p_InviteRequestWithSdp, v_MessageHeader_Response183, -, -, p_PrevSDP_Message); + + // @siclog "Step 6 - 8" siclog@ + f_IMS_MOCallSetup_AnnexC21C25_Step9_11(p_InviteRequestWithSdp); + + f_IMS_PTC_ImsInfo_ActivateDialog(firstDialog); // toggle back to first dialog + + return v_SDP_LatestOffer; + } + + //============================================================================ + /* + * @desc MT speech call setup according to 34.229-1 Annex C.11, steps 5 to 11 + * @param p_InviteRequestWithSdp + * @param p_SessionInProgress183 + * @status APPROVED (LTE_A) + */ + function f_IMS_MTCallSetup_AnnexC11_Steps5_11(IMS_InviteRequestWithSdp_Type p_InviteRequestWithSdp, + IMS_Response_Type p_SessionInProgress183) runs on IMS_PTC + { + var MessageHeader v_MessageHeader_PrevReliableResponse := p_SessionInProgress183.msgHeader; + + // Step 5 - 6. Send PRACK, Receive 200 OK + f_IMS_MTCallSetup_SendPRACK_ReceiveOK(p_InviteRequestWithSdp.Invite, v_MessageHeader_PrevReliableResponse); + + // Step 7 - 11. Send UPDATE, Receive 200 OK, Receive optional 180 Ringing and send PRACK if requested + f_IMS_MTCallSetup_AnnexC11_Steps7_11(p_InviteRequestWithSdp); + }; + + /* + * @desc Establishment of IMS MT Speech call, IMS signalling acc. to 36.508 cl. 4.5A.7 upto step 11 + * @status APPROVED (LTE_A) + */ + function fl_IMS_GenericIMS_MT_SpeechCall_C11_UpToStep11() runs on IMS_PTC + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: v_InviteRequestWithSdp instead of v_InviteRequest sic@ */ + var IMS_ResponseWithSdp_Type v_ResponseWithSdp; + var IMS_Response_Type v_SessionInProgress183; + + //Wait for Co-ordination message from EUTRA + f_IMS_IPCAN_WaitForTrigger(IPCAN); + v_InviteRequestWithSdp := f_IMS_MTCallSetup_AnnexC11_INVITE(); + v_ResponseWithSdp := f_IMS_MTCallSetup_AnnexC11_Steps1_4(v_InviteRequestWithSdp); + v_SessionInProgress183 := v_ResponseWithSdp.Response; + + // Inform EUTRA: IMS Call established. + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + + //Wait for Co-ordination message from EUTRA + f_IMS_IPCAN_WaitForTrigger(IPCAN); + f_IMS_MTCallSetup_AnnexC11_Steps5_11(v_InviteRequestWithSdp, v_SessionInProgress183); + // Inform EUTRA: IMS Call established. + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + } + + //============================================================================ + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.7 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_7_IMS1()runs on IMS_PTC + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: IMS_InviteRequestWithSdp_Type instead of IMS_DATA_REQ */ + var MessageHeader v_MessageHeader_Response183; + + f_IMS_PTC_Init(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + f_IMS_Registration(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + + f_IMS_IPCAN_WaitForTrigger(IPCAN); + f_UT_RequestIMSCall(MMI, px_IMS_CalleeUri); // @sic R5-134290 sic@ + + /* Table 13.4.3.7.3.2-3: Parallel behaviour + Steps 5-11 expected sequence defined in annex C.21 of TS 34.229-1 [35]. + NOTE: IMS MO speech call is in alerting phase. + */ + v_InviteRequestWithSdp := f_IMS_MOCallSetup_AnnexC21_Step2_A4(); + + f_IMS_IPCAN_WaitForTrigger(IPCAN); + v_MessageHeader_Response183 := f_IMS_MOCallSetup_AnnexC21_Step3_4(v_InviteRequestWithSdp); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140589 sic@ + + fl_IMS_MOCallSetup_AnnexC21_Steps5To11(v_InviteRequestWithSdp, v_MessageHeader_Response183); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + + f_IMS_PTC_SetRanType(UTRAN_FDD); + f_IMS_IpcanReleaseWithOptionalDeregistrationOtherIPCAN(); // @sic R5-142919 sic@ + } + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.8 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_8_IMS1() runs on IMS_PTC + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: IMS_InviteRequestWithSdp_Type instead of IMS_DATA_REQ */ + var MessageHeader v_MessageHeader_Response183; + var SDP_Message v_LatestSDP; + + f_IMS_PTC_Init(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + f_IMS_Registration(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + + f_IMS_IPCAN_WaitForTrigger(IPCAN); + f_UT_RequestIMSCall(MMI, px_IMS_CalleeUri); // @sic R5-134290 sic@ + + /* Table 13.4.3.8.3.2-3: Parallel behaviour + Steps 5-11 expected sequence defined in annex C.21 of TS 34.229-1 [35]. + NOTE: IMS MO speech call is in alerting phase. + */ + v_InviteRequestWithSdp := f_IMS_MOCallSetup_AnnexC21_Step2_A4(); + + f_IMS_IPCAN_WaitForTrigger(IPCAN); + v_MessageHeader_Response183 := f_IMS_MOCallSetup_AnnexC21_Step3_4(v_InviteRequestWithSdp); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140572 sic@ + + v_LatestSDP := fl_IMS_MOCallSetup_AnnexC21_Steps5To11(v_InviteRequestWithSdp, v_MessageHeader_Response183); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + + f_IMS_IPCAN_WaitForTrigger(IPCAN); + + /* Expected sequence defined in annex C.27 of TS 34.229-1 [35]. + * NOTE: The UE receives forked response. + */ + fl_IMS_MOCallSetup_AnnexC27(v_InviteRequestWithSdp, v_LatestSDP); /* @sic R5s140686, R5-144755: v_LatestSDP sic@ */ + + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + f_IMS_PTC_SetRanType(UTRAN_FDD); + f_IMS_IpcanReleaseWithOptionalDeregistrationOtherIPCAN(); // @sic R5-142919 sic@ + + } // f_TC_13_4_3_8_IMS1 + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.9 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_9_IMS1() runs on IMS_PTC + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: IMS_InviteRequestWithSdp_Type instead of IMS_DATA_REQ */ + var MessageHeader v_MessageHeader_Response183; + + f_IMS_PTC_Init(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + f_IMS_Registration(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + + f_IMS_IPCAN_WaitForTrigger(IPCAN); + f_UT_RequestIMSCall(MMI, px_IMS_CalleeUri); // @sic R5-134290 sic@ + + /* Table 13.4.3.9.3.2-3: Parallel behaviour + Steps 5-11 expected sequence defined in annex C.21 of TS 34.229-1 [35]. + NOTE: IMS MO speech call is in alerting phase. + */ + v_InviteRequestWithSdp := f_IMS_MOCallSetup_AnnexC21_Step2_A4(); + + f_IMS_IPCAN_WaitForTrigger(IPCAN); + v_MessageHeader_Response183 := f_IMS_MOCallSetup_AnnexC21_Step3_4(v_InviteRequestWithSdp); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140572 sic@ + + fl_IMS_MOCallSetup_AnnexC21_Steps5To11(v_InviteRequestWithSdp, v_MessageHeader_Response183); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + + f_IMS_IPCAN_WaitForTrigger(IPCAN); + + // Parallel behaviour Table 13.4.3.9.3.2-4 + /* Expected sequence defined in annex C.28 of TS 34.229-1 + * Generic test procedure for SIP UPDATE after aSRVCC handover failure/cancelled + */ + f_IMS_SRVCC_AnnexC28(v_InviteRequestWithSdp.Invite, v_MessageHeader_Response183); + + + // Steps 12-13 expected sequence defined in annex C.21 of TS 34.229-1 + f_IMS_MOCallSetup_AnnexC21C25_Step12_13(v_InviteRequestWithSdp); + f_IMS_CallReleaseMO(v_InviteRequestWithSdp.Invite); // @sic R5-144671 sic@ + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + f_IMS_IpcanReleaseWithOptionalDeregistration(); + } + + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.11 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_10_IMS1 ()runs on IMS_PTC + { + f_IMS_PTC_Init(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + f_IMS_Registration(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + + // Steps 1 to 22 of the generic test procedure for IMS MT speech call (TS 36.508 4.5A.7.3-1). + /* Where TS 36.508 4.5A.7.3-1 Steps 16 to 22 specifies: + Steps 5-11 expected sequence defined in annex C.11 of TS 34.229-1 [35]. MTSI MT speech. + */ + fl_IMS_GenericIMS_MT_SpeechCall_C11_UpToStep11(); + f_IMS_PTC_SetRanType(UTRAN_FDD); + f_IMS_IpcanReleaseWithOptionalDeregistrationOtherIPCAN(); // @sic R5-142919 sic@ + } + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.11 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_11_IMS1 ()runs on IMS_PTC + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: v_InviteRequestWithSdp instead of v_InviteRequest sic@ */ + var MessageHeader v_MessageHeader_Invite; + var IMS_ResponseWithSdp_Type v_ResponseWithSdp; + var IMS_Response_Type v_SessionInProgress183; + var SipUrl v_ContactUrl; + var template (value) MessageHeader v_MessageHeader_Ack; + var InternetProtocol_Type v_Protocol; + + f_IMS_PTC_Init(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + f_IMS_Registration(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + + // Steps 1 to 22 of the generic test procedure for IMS MT speech call (TS 36.508 4.5A.7.3-1). + /* Where TS 36.508 4.5A.7.3-1 Steps 16 to 22 specifies: + Steps 5-11 expected sequence defined in annex C.11 of TS 34.229-1 [35]. MTSI MT speech. + */ + //Wait for Co-ordination message from EUTRA + f_IMS_IPCAN_WaitForTrigger(IPCAN); + v_InviteRequestWithSdp := f_IMS_MTCallSetup_AnnexC11_INVITE(); + v_ResponseWithSdp := f_IMS_MTCallSetup_AnnexC11_Steps1_4(v_InviteRequestWithSdp); + v_SessionInProgress183 := v_ResponseWithSdp.Response; + + // Inform EUTRA: IMS Call established. + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + + //Wait for Co-ordination message from EUTRA + f_IMS_IPCAN_WaitForTrigger(IPCAN); + f_IMS_MTCallSetup_AnnexC11_Steps5_11(v_InviteRequestWithSdp, v_SessionInProgress183); + // Inform EUTRA: IMS Call established. + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + + f_IMS_IPCAN_WaitForTrigger(IPCAN); // Wait to complete the HO failure on EUTRA side + + // Table 13.4.3.11.3.2-3: Parallel behaviour - Update procedure, Annex C.28 + f_IMS_SRVCC_AnnexC28(v_InviteRequestWithSdp.Invite); + + f_UT_AnswerCall(MMI); // @sic R5s140592 sic@ + // Steps 12-13 expected sequence defined in annex C.21 of TS 34.229-1 [35]. + v_Protocol := f_IMS_PTC_ImsInfo_GetTransportProtocol(); + v_MessageHeader_Invite := v_InviteRequestWithSdp.Invite.msgHeader; + f_IMS_ReceiveResponse(v_MessageHeader_Invite, v_Protocol, cr_Response(c_statusLine200, f_IMS_OtherResponse_200_MessageHeaderRX(v_InviteRequestWithSdp.Invite.msgHeader))); + v_MessageHeader_Ack := f_IMS_AckRequest_MessageHeaderTX(v_InviteRequestWithSdp.Invite); + v_ContactUrl := f_IMS_PTC_ImsInfo_GetContactUrl(); + IMS_Client.send(cas_IMS_Ack_Request(cs_IMS_RoutingInfo(v_Protocol), cs_ACK_Request(v_ContactUrl, v_MessageHeader_Ack))); + f_IMS_CallReleaseMT(v_InviteRequestWithSdp.Invite, v_ContactUrl); // @sic R5-144672 sic@ + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + + f_IMS_IpcanReleaseWithOptionalDeregistration(); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.13 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_13_IMS1 ()runs on IMS_PTC + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: v_InviteRequestWithSdp instead of v_InviteRequest sic@ */ + var MessageHeader v_RequestHeader_Invite; + var IMS_Response_Type v_SessionInProgress183; + var IMS_ResponseWithSdp_Type v_ResponseWithSdp; + var SipUrl v_ContactUrl; + //var template (value) MessageHeader v_MessageHeader_Ack; + + f_IMS_PTC_Init(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + f_IMS_Registration(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + + // Steps 1 to 22 of the generic test procedure for IMS MT speech call (TS 36.508 4.5A.7.3-1). + /* Where TS 36.508 4.5A.7.3-1 Steps 16 to 22 specifies: + Steps 5-11 expected sequence defined in annex C.11 of TS 34.229-1 [35]. MTSI MT speech. + */ + + //Wait for Co-ordination message from EUTRA + f_IMS_IPCAN_WaitForTrigger(IPCAN); + + v_InviteRequestWithSdp := f_IMS_MTCallSetup_AnnexC11_INVITE(); //@sic R5s140459 sic@ + v_ResponseWithSdp := f_IMS_MTCallSetup_AnnexC11_Steps1_4(v_InviteRequestWithSdp); + v_SessionInProgress183 := v_ResponseWithSdp.Response; + v_RequestHeader_Invite := v_InviteRequestWithSdp.Invite.msgHeader; + v_ContactUrl := f_IMS_PTC_ImsInfo_GetContactUrl(); + + // Inform EUTRA: IMS Call established. + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + + //Wait for Co-ordination message from EUTRA + f_IMS_IPCAN_WaitForTrigger(IPCAN); + f_IMS_MTCallSetup_AnnexC11_Steps5_11(v_InviteRequestWithSdp, v_SessionInProgress183 );//@sic R5s140459 sic@ + // Inform EUTRA: IMS Call established. + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + + f_IMS_IPCAN_WaitForTrigger(IPCAN); + + // @siclog "Steps 31 -32" siclog@ + f_IMS_SRVCC_AnnexC28(v_InviteRequestWithSdp.Invite); + + // @siclog "Step 33" siclog@ + f_UT_AnswerCall(MMI); // //@sic R5-140459 sic@ + + // @siclog "Step 34-35" siclog@ + // Annex C11 Step 12. Receive 200 OK, Step 13. Send ACK + f_IMS_MTCallSetup_Common_Steps12_13(v_InviteRequestWithSdp); + + f_IMS_CallReleaseMT(v_InviteRequestWithSdp.Invite, v_ContactUrl); // @sic R5-144673 sic@ + + // @sic R5s140595 sic@ + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + f_IMS_IpcanReleaseWithOptionalDeregistration(); //@sic R5-140459 sic@ + } + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.14 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_14_IMS1 ()runs on IMS_PTC + { // Inter-system mobility / E-UTRA PS voice + PS data to UTRA CS voice + PS data / aSRVCC / MO call + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: IMS_InviteRequestWithSdp_Type instead of IMS_DATA_REQ */ + var MessageHeader v_MessageHeader_Response183; + + f_IMS_PTC_Init(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + f_IMS_Registration(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + + f_IMS_IPCAN_WaitForTrigger(IPCAN); + f_UT_RequestIMSCall(MMI, px_IMS_CalleeUri); // @sic R5-134290 sic@ + + /* Table 13.4.3.7.3.2-3: Parallel behaviour + Steps 5-11 expected sequence defined in annex C.21 of TS 34.229-1 [35]. + NOTE: IMS MO speech call is in alerting phase. + */ + v_InviteRequestWithSdp := f_IMS_MOCallSetup_AnnexC21_Step2_A4(); + + f_IMS_IPCAN_WaitForTrigger(IPCAN); + v_MessageHeader_Response183 := f_IMS_MOCallSetup_AnnexC21_Step3_4(v_InviteRequestWithSdp); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140572 sic@ + + /* TS 36.508 4.5A.10.3-1, parallel behaviour + * Steps 5 to 11 expected sequence defined in annex C.21 + */ + fl_IMS_MOCallSetup_AnnexC21_Steps5To11(v_InviteRequestWithSdp, v_MessageHeader_Response183); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + + f_IMS_PTC_SetRanType(UTRAN_FDD); + f_IMS_IPCAN_WaitForTrigger(OtherIPCAN); + f_IMS_SRVCC_RemoveEarlyDialogMO_AnnexC34(v_InviteRequestWithSdp); // @sic R5-144745 sic@ + + f_IMS_IPCAN_SendCoOrdMsg(OtherIPCAN); + f_IMS_IpcanReleaseWithOptionalDeregistrationOtherIPCAN(); // @sic R5-142919 sic@ + } + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.15 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_15_IMS1 ()runs on IMS_PTC + { // Inter-system mobility / E-UTRA PS voice + PS data to UTRA CS voice + PS data / aSRVCC / MO call / SRVCC HO cancelled + //@sic R5s140478 sic@ + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: IMS_InviteRequestWithSdp_Type instead of IMS_DATA_REQ */ + var MessageHeader v_MessageHeader_Response183; + + f_IMS_PTC_Init(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + f_IMS_Registration(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + + f_IMS_IPCAN_WaitForTrigger(IPCAN); + f_UT_RequestIMSCall(MMI, px_IMS_CalleeUri); // @sic R5-134290 sic@ + + /* Table 13.4.3.7.3.2-3: Parallel behaviour + Steps 5-11 expected sequence defined in annex C.21 of TS 34.229-1 [35]. + NOTE: IMS MO speech call is in alerting phase. + */ + v_InviteRequestWithSdp := f_IMS_MOCallSetup_AnnexC21_Step2_A4(); + f_IMS_IPCAN_WaitForTrigger(IPCAN); + v_MessageHeader_Response183 := f_IMS_MOCallSetup_AnnexC21_Step3_4(v_InviteRequestWithSdp); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140572 sic@ + + fl_IMS_MOCallSetup_AnnexC21_Steps5To11(v_InviteRequestWithSdp, v_MessageHeader_Response183); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + + // @siclog "Step 18" siclog@ + f_IMS_IPCAN_WaitForTrigger(IPCAN); + // @siclog "Steps 20 -21" siclog@ + f_IMS_SRVCC_AnnexC28(v_InviteRequestWithSdp.Invite, v_MessageHeader_Response183); + + // Complete IMS call establishment + // @siclog "Step 21" siclog@ + f_IMS_MOCallSetup_AnnexC21C25_Step12_13(v_InviteRequestWithSdp); + + f_IMS_CallReleaseMO(v_InviteRequestWithSdp.Invite); // @sic R5-144674 sic@ + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + + f_IMS_IpcanReleaseWithOptionalDeregistration(); + + } + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.16 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_16_IMS1 ()runs on IMS_PTC + { // Inter-system mobility / E-UTRA PS voice + PS data to UTRA CS voice + PS data / aSRVCC / MT call + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: v_InviteRequestWithSdp instead of v_InviteRequest sic@ */ + var IMS_ResponseWithSdp_Type v_ResponseWithSdp; + var IMS_Response_Type v_SessionInProgress183; + + f_IMS_PTC_Init(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + f_IMS_Registration(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + + // Steps 1 to 22 of the generic test procedure for IMS MT speech call (TS 36.508 4.5A.7.3-1). + /* Where TS 36.508 4.5A.7.3-1 Steps 16 to 22 specifies: + Steps 5-11 expected sequence defined in annex C.11 of TS 34.229-1 [35]. MTSI MT speech. + */ + //Wait for Co-ordination message from EUTRA + f_IMS_IPCAN_WaitForTrigger(IPCAN); + + v_InviteRequestWithSdp := f_IMS_MTCallSetup_AnnexC11_INVITE(); + v_ResponseWithSdp := f_IMS_MTCallSetup_AnnexC11_Steps1_4(v_InviteRequestWithSdp); + v_SessionInProgress183 := v_ResponseWithSdp.Response; + + // Inform EUTRA: IMS Call established. + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + + //Wait for Co-ordination message from EUTRA + f_IMS_IPCAN_WaitForTrigger(IPCAN); + f_IMS_MTCallSetup_AnnexC11_Steps5_11(v_InviteRequestWithSdp, v_SessionInProgress183); + // Inform EUTRA: IMS Call established. + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + + f_IMS_PTC_SetRanType(UTRAN_FDD); + f_IMS_SRVCC_RemoveEarlyDialogMT_AnnexC35(v_InviteRequestWithSdp); // @sic R5-144670 sic@ + f_IMS_IPCAN_SendCoOrdMsg(OtherIPCAN); + + f_IMS_IpcanReleaseWithOptionalDeregistrationOtherIPCAN(); // @sic R5-142919 sic@ + } + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.24 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_24_IMS1 ()runs on IMS_PTC + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: IMS_InviteRequestWithSdp_Type instead of IMS_DATA_REQ */ + var MessageHeader v_MessageHeader_Response183; + + f_IMS_PTC_Init(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + f_IMS_Registration(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + + //Wait for Co-ordination message from EUTRA + f_IMS_IPCAN_WaitForTrigger(IPCAN); + + // Step 1 + f_UT_RequestIMSCall(MMI, px_IMS_CalleeUri); + + // Parallel behaviour + v_InviteRequestWithSdp := f_IMS_MOCallSetup_AnnexC21_Step2_A4(); + + f_IMS_IPCAN_WaitForTrigger(IPCAN); + // Steps 9 -11 + v_MessageHeader_Response183 := f_IMS_MOCallSetup_AnnexC21_Step3_4(v_InviteRequestWithSdp); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140572 sic@ + + fl_IMS_MOCallSetup_AnnexC21_Steps5To11(v_InviteRequestWithSdp, v_MessageHeader_Response183); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + + } // f_TC_13_4_3_24_IMS1 + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.25 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_25_IMS1() runs on IMS_PTC + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: IMS_InviteRequestWithSdp_Type instead of IMS_DATA_REQ */ + var MessageHeader v_MessageHeader_Response183; + var SDP_Message v_LatestSDP; + + f_IMS_PTC_Init(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + f_IMS_Registration(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + + //Wait for Co-ordination message from EUTRA + f_IMS_IPCAN_WaitForTrigger(IPCAN); + + // Step 1 + f_UT_RequestIMSCall(MMI, px_IMS_CalleeUri); + + // Parallel behaviour + v_InviteRequestWithSdp := f_IMS_MOCallSetup_AnnexC21_Step2_A4(); + + f_IMS_IPCAN_WaitForTrigger(IPCAN); + // Steps 9 -11 + v_MessageHeader_Response183 := f_IMS_MOCallSetup_AnnexC21_Step3_4(v_InviteRequestWithSdp); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140572 sic@ + + v_LatestSDP := fl_IMS_MOCallSetup_AnnexC21_Steps5To11(v_InviteRequestWithSdp, v_MessageHeader_Response183); + + /* Expected sequence defined in annex C.27 of TS 34.229-1 [35]. + * NOTE: The UE receives forked response. + */ + fl_IMS_MOCallSetup_AnnexC27(v_InviteRequestWithSdp, v_LatestSDP); /* @sic R5s140686, R5-144755: v_LatestSDP sic@ */ + + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + + } // f_TC_13_4_3_25_IMS1 + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.26 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_26_IMS1 ()runs on IMS_PTC + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: IMS_InviteRequestWithSdp_Type instead of IMS_DATA_REQ */ + var MessageHeader v_MessageHeader_Response183; + + f_IMS_PTC_Init(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + f_IMS_Registration(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + + //Wait for Co-ordination message from EUTRA + f_IMS_IPCAN_WaitForTrigger(IPCAN); + + // Step 1 + f_UT_RequestIMSCall(MMI, px_IMS_CalleeUri); + + // Parallel behaviour + v_InviteRequestWithSdp := f_IMS_MOCallSetup_AnnexC21_Step2_A4(); + + f_IMS_IPCAN_WaitForTrigger(IPCAN); + // Steps 9 -11 + v_MessageHeader_Response183 := f_IMS_MOCallSetup_AnnexC21_Step3_4(v_InviteRequestWithSdp); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140572 sic@ + + fl_IMS_MOCallSetup_AnnexC21_Steps5To11(v_InviteRequestWithSdp, v_MessageHeader_Response183); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // send trigger to EUTRA PTC to indicate end of step 4 + + f_IMS_IPCAN_WaitForTrigger(IPCAN); + f_IMS_SRVCC_AnnexC28(v_InviteRequestWithSdp.Invite, v_MessageHeader_Response183); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + + f_IMS_MOCallSetup_AnnexC21C25_Step12_13(v_InviteRequestWithSdp); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + f_IMS_IpcanReleaseWithOptionalDeregistration(); + } // f_TC_13_4_3_26_IMS1 + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.27 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_27_IMS1()runs on IMS_PTC + { + f_IMS_PTC_Init(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + f_IMS_Registration(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + + // Steps 1 to 22 of the generic test procedure for IMS MT speech call (TS 36.508 4.5A.7.3-1). + /* Where TS 36.508 4.5A.7.3-1 Steps 16 to 22 specifies: + Steps 5-11 expected sequence defined in annex C.11 of TS 34.229-1 [35]. MTSI MT speech. + */ + fl_IMS_GenericIMS_MT_SpeechCall_C11_UpToStep11(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + + } // f_TC_13_4_3_27_IMS1 + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.28 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_28_IMS1 ()runs on IMS_PTC + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: v_InviteRequestWithSdp instead of v_InviteRequest sic@ */ + var IMS_ResponseWithSdp_Type v_ResponseWithSdp; + var IMS_Response_Type v_SessionInProgress183; + + f_IMS_PTC_Init(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + f_IMS_Registration(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + + //Wait for Co-ordination message from EUTRA + f_IMS_IPCAN_WaitForTrigger(IPCAN); + v_InviteRequestWithSdp := f_IMS_MTCallSetup_AnnexC11_INVITE(); + v_ResponseWithSdp := f_IMS_MTCallSetup_AnnexC11_Steps1_4(v_InviteRequestWithSdp); + v_SessionInProgress183 := v_ResponseWithSdp.Response; + + // Inform EUTRA: IMS Call established. + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + + //Wait for Co-ordination message from EUTRA + f_IMS_IPCAN_WaitForTrigger(IPCAN); + f_IMS_MTCallSetup_AnnexC11_Steps5_11(v_InviteRequestWithSdp, v_SessionInProgress183); + // Inform EUTRA: IMS Call established. + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + + // Steps 1 to 22 of the generic test procedure for IMS MT speech call (TS 36.508 4.5A.7.3-1). + /* Where TS 36.508 4.5A.7.3-1 Steps 16 to 22 specifies: + Steps 5-11 expected sequence defined in annex C.11 of TS 34.229-1 [35]. MTSI MT speech. + */ + f_IMS_IPCAN_WaitForTrigger(IPCAN); + + // Parallel behaviour Table 13.4.3.28.3.2-3 + /* Expected sequence defined in annex C.28 of TS 34.229-1 + * Generic test procedure for SIP UPDATE after aSRVCC handover failure/cancelled + */ + f_IMS_SRVCC_AnnexC28(v_InviteRequestWithSdp.Invite); + + // Steps 12-13 expected sequence defined in annex C.21 of TS 34.229-1 + f_IMS_MTCallSetup_Common_Steps12_13(v_InviteRequestWithSdp); + + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + f_IMS_IpcanReleaseWithOptionalDeregistration(); + } // f_TC_13_4_3_28_IMS1 + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.30 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_30_IMS1()runs on IMS_PTC + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: v_InviteRequestWithSdp instead of v_InviteRequest sic@ */ + var IMS_ResponseWithSdp_Type v_ResponseWithSdp; + var IMS_Response_Type v_SessionInProgress183; + + f_IMS_PTC_Init(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + f_IMS_Registration(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + + //Wait for Co-ordination message from EUTRA + f_IMS_IPCAN_WaitForTrigger(IPCAN); + v_InviteRequestWithSdp := f_IMS_MTCallSetup_AnnexC11_INVITE(); + v_ResponseWithSdp := f_IMS_MTCallSetup_AnnexC11_Steps1_4(v_InviteRequestWithSdp); + v_SessionInProgress183 := v_ResponseWithSdp.Response; + + // Inform EUTRA: IMS Call established. + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + + //Wait for Co-ordination message from EUTRA + f_IMS_IPCAN_WaitForTrigger(IPCAN); + f_IMS_MTCallSetup_AnnexC11_Steps5_11(v_InviteRequestWithSdp, v_SessionInProgress183); + // Inform EUTRA: IMS Call established. + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + + // Steps 1 to 22 of the generic test procedure for IMS MT speech call (TS 36.508 4.5A.7.3-1). + /* Where TS 36.508 4.5A.7.3-1 Steps 16 to 22 specifies: + Steps 5-11 expected sequence defined in annex C.11 of TS 34.229-1 [35]. MTSI MT speech. + */ + + f_IMS_IPCAN_WaitForTrigger(IPCAN); + + /* Expected sequence defined in annex C.28 of TS 34.229-1 + * Generic test procedure for SIP UPDATE after aSRVCC handover failure/cancelled + */ + // @siclog "Steps 28 - 29" siclog@ + f_IMS_SRVCC_AnnexC28(v_InviteRequestWithSdp.Invite); + + // @siclog "Step 30" siclog@ + // Step 11A - Make UE accept the speech AMR offer + f_UT_AnswerCall(MMI); + + // @siclog "Steps 31 - 32" siclog@ + f_IMS_MTCallSetup_Common_Steps12_13(v_InviteRequestWithSdp); + + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + f_IMS_IpcanReleaseWithOptionalDeregistration(); + } // f_TC_13_4_3_30_IMS1 + + + +} diff --git a/LTE_A_IWD_14wk37/LTE_A/13/ASRVCC_EUTRA_UTRAN.ttcn b/LTE_A_IWD_14wk37/LTE_A/13/ASRVCC_EUTRA_UTRAN.ttcn new file mode 100644 index 0000000..6338f33 --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/13/ASRVCC_EUTRA_UTRAN.ttcn @@ -0,0 +1,597 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-05 19:27:02 +0200 (Fri, 05 Sep 2014) $ +// $Rev: 12079 $ +/******************************************************************************/ + +module ASRVCC_EUTRA_UTRAN { + + import from CommonIratDefs all; + import from CommonDefs all; + + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_ASP_Definitions language "ASN.1:2002" all; + import from UTRAN_Component all; + import from UTRAN_CommonFunctions all; + import from UTRAN_CommonProcedures all; + //import from UTRAN_RRC_Templates all; + import from UTRAN_TTCN_ASP_Templates all; + import from UTRAN_CommonDefs all; + import from UTRAN_RAB_Functions all; + import from UTRAN_TypeDefs all; + import from UTRAN_ConfigurationSteps all; + import from UTRAN_CellInfo all; + //import from UTRAN_ASN1_ASP_Templates all; + //import from UTRAN_RRC_RAB_Templates all; + import from IMS_PTC_CoordMsg all; + import from UTRAN_NAS_PDU_Templates all; + import from NAS_24008Templates_IRAT all; + import from UpperTesterFunctions all; + import from NAS_CommonTypeDefs all; + + //---------------------------------------------------------------------- + // Test cases + //---------------------------------------------------------------------- + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.7 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_7_UTRAN() runs on UTRAN_PTC + { /* Inter-system mobility / E-UTRA voice to UTRA CS voice / aSRVCC / MO call*/ + var TI v_TI_R; + var TI v_TI_S; + var integer v_T0_CPICH_Cell5 := -88; + var integer v_T1_CPICH_Cell5 := -64; + var integer v_T0_PCCPCH_Cell5 := -88; + var integer v_T1_PCCPCH_Cell5 := -64; + + // Initialise all cells + f_UTRAN_Init(EUTRA_UTRAN); + + // Create and configure Cell 5 + // Cell started switched on with default power level, -60 and max attenuation + f_UTRAN_SS_CreateCellDCH(utran_Cell5); + + // Start sending System Information + f_UTRAN_SendDefSysInfo(utran_Cell5); + + // Send relevant UTRAN cell info to EUTRA PTC + f_UTRAN_Send_IR_SysInfoToEUTRA(utran_Cell5); + f_UTRAN_TestBody_Set(true); + + // Step 1 + //Configure a dedicated channel in the UTRAN FDD with configuration + // according to 36.108 Table 4.8.3-1 condition UTRA Speech + f_SS_Config_ConvSpeech_RAB(utran_Cell5); + + // wait for trigger from EUTRAN side + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + // Set Cell Power level as per T0 + f_UTRAN_SetCellPower(utran_Cell5, v_T0_CPICH_Cell5, v_T0_PCCPCH_Cell5); + + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + //@siclog "Step 19" siclog@ + // Set Cell Power level as per T1 + f_UTRAN_SetCellPower(utran_Cell5, v_T1_CPICH_Cell5, v_T1_PCCPCH_Cell5); + + // UE starts registered in EUTRA, wait its Auth Params + f_UTRAN_InterRAT_InitialiseAuthParams(); + // Set up the ciphering ready for when the UE hands over + f_UTRAN_ConfigureCipheringBeforeHO_SRVCC(utran_Cell5); // ToDo Cs domain + + f_IRAT_SendCoOrd(EUTRA, cms_IRAT_Trigger); // Tell SS to transmit a MobilityFromEUTRACommand message + f_UTRAN_SRVCC_WithHandover(utran_Cell5, cs_PDP_ContextStatusInactive); //@sic R5-134079 sic@ + + v_TI_S.tiVal := '000'B; + v_TI_S.tiFlag := '0'B; + + //@siclog "Step 30" siclog@ + U_Dc.send (cas_DataReq_CS(utran_CellDedicated, tsc_RB3, cs_U_Connect(v_TI_S))); + v_TI_R := v_TI_S; + v_TI_R.tiFlag := '1'B; + + //@siclog "Step 31" siclog@ + U_Dc.receive (car_UplinkDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_ConnAck(v_TI_R))); + f_UTRAN_PreliminaryPass(__FILE__, __LINE__, "Step 31"); + + f_IRAT_SendCoOrd(EUTRA, cms_IRAT_Trigger); // Tell to EUTRA PTC Test case is now finished on E-UTRA side + f_UTRAN_TestBody_Set(false); + + // Switch off UE and release cell + f_UTRAN_Postamble(utran_Cell5, U5_CSCALL, -, v_TI_S); + } + + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.8 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_8_UTRAN() runs on UTRAN_PTC + { /* Inter-system mobility / E-UTRA voice to UTRA CS voice / aSRVCC / MO call*/ + var integer v_T0_CPICH_Cell5; + var integer v_T1_CPICH_Cell5; + var integer v_T0_PCCPCH_Cell5; + var integer v_T1_PCCPCH_Cell5; + var TI v_TI_R; + var TI v_TI_S; + v_T0_CPICH_Cell5 := -88; + v_T1_CPICH_Cell5 := -64; + v_T0_PCCPCH_Cell5 := -88; + v_T1_PCCPCH_Cell5 := -64; + // Initialise all cells + f_UTRAN_Init(EUTRA_UTRAN); + + // Create and configure Cell 5 + // Cell started switched on with default power level, -60 and max attenuation + f_UTRAN_SS_CreateCellDCH(utran_Cell5); + + // Start sending System Information + f_UTRAN_SendDefSysInfo(utran_Cell5); + + // Send relevant UTRAN cell info to EUTRA PTC + f_UTRAN_Send_IR_SysInfoToEUTRA(utran_Cell5); + f_UTRAN_TestBody_Set(true); + + // Step 1 + //Configure a dedicated channel in the UTRAN FDD with configuration + // according to 36.108 Table 4.8.3-1 condition UTRA Speech + f_SS_Config_ConvSpeech_RAB(utran_Cell5); + + // wait for trigger from EUTRAN side + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + // Set Cell Power level as per T0 + f_UTRAN_SetCellPower(utran_Cell5, v_T0_CPICH_Cell5, v_T0_PCCPCH_Cell5); + + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + //@siclog "Step 19" siclog@ + // Set Cell Power level as per T1 + f_UTRAN_SetCellPower(utran_Cell5, v_T1_CPICH_Cell5, v_T1_PCCPCH_Cell5); + + // UE starts registered in EUTRA, wait its Auth Params + f_UTRAN_InterRAT_InitialiseAuthParams(); + // Set up the ciphering ready for when the UE hands over + f_UTRAN_ConfigureCipheringBeforeHO_SRVCC(utran_Cell5); // ToDo Cs domain + + f_IRAT_SendCoOrd(EUTRA, cms_IRAT_Trigger); // Tell SS to transmit a MobilityFromEUTRACommand message + f_UTRAN_SRVCC_WithHandover(utran_Cell5, cs_PDP_ContextStatusInactive); //@sic R5-134079 sic@ + + v_TI_S.tiVal := '000'B; + v_TI_S.tiFlag := '0'B; + + //@siclog "Step 31" siclog@ + U_Dc.send (cas_DataReq_CS(utran_CellDedicated, tsc_RB3, cs_U_Connect(v_TI_S))); + v_TI_R := v_TI_S; + v_TI_R.tiFlag := '1'B; + + //@siclog "Step 32" siclog@ + U_Dc.receive (car_UplinkDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_ConnAck(v_TI_R))); + f_UTRAN_PreliminaryPass(__FILE__, __LINE__, "Step 32"); + + f_IRAT_SendCoOrd(EUTRA, cms_IRAT_Trigger); // Tell to EUTRA PTC Test case is now finished on E-UTRA side + f_UTRAN_TestBody_Set(false); + + // Switch off UE and release cell + f_UTRAN_Postamble(utran_Cell5, U5_CSCALL, -, v_TI_S); // @sic R5s140686 sic@ + } // f_TC_13_4_3_8_UTRAN + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.9 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_9_UTRAN() runs on UTRAN_PTC + { // E-UTRA voice to UTRA CS voice / aSRVCC / MO call/ SRVCC HO failure + + var integer v_T0_CPICH_Cell5 := -88; + var integer v_T1_CPICH_Cell5 := -64; + var integer v_T0_PCCPCH_Cell5 := -88; + var integer v_T1_PCCPCH_Cell5 := -64; + + f_UTRAN_Init(EUTRA_UTRAN); + + // Create and configure Cell 5 + // Cell started switched on with default power level, -60 and max attenuation + f_UTRAN_SS_CreateCellDCH(utran_Cell5); + + // Start sending System Information + f_UTRAN_SendDefSysInfo(utran_Cell5); + + // Send relevant UTRAN cell info to EUTRA PTC + f_UTRAN_Send_IR_SysInfoToEUTRA(utran_Cell5); + f_UTRAN_TestBody_Set(true); + + // Step 1 + //Configure a dedicated channel in the UTRAN FDD with configuration + // according to 36.108 Table 4.8.3-1 condition UTRA Speech + f_SS_Config_ConvSpeech_RAB(utran_Cell5); + + // wait for trigger from EUTRAN side + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + // Set Cell Power level as per T0 + f_UTRAN_SetCellPower(utran_Cell5, v_T0_CPICH_Cell5,v_T0_PCCPCH_Cell5); + + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + //@siclog "Step 18" siclog@ + // Set Cell Power level as per T1 + f_UTRAN_SetCellPower(utran_Cell5, v_T1_CPICH_Cell5,v_T1_PCCPCH_Cell5); + + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + //@siclog "Step 20" siclog@ + // Set Cell Power level as per T2 - Cell Off + f_UTRAN_SetCellPower(utran_Cell5, tsc_AttenuationCellOFF); + f_UTRAN_ReleaseCell(utran_Cell5, f_UTRAN_CellInfo_GetConfigType(utran_Cell5)); + } // f_TC_13_4_3_9_UTRAN + + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.10 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_10_UTRAN() runs on UTRAN_PTC + { // // Inter-system mobility / E-UTRA voice to UTRA CS voice / aSRVCC / MT call + var TI v_TI_S; + var TI v_TI_R; + var integer v_T0_CPICH_Cell5 := -88; + var integer v_T1_CPICH_Cell5 := -64; + var integer v_T0_PCCPCH_Cell5 := -88; + var integer v_T1_PCCPCH_Cell5 := -64; + + // Initialise all cells + f_UTRAN_Init(EUTRA_UTRAN); + + // Create and configure Cell 5 + // Cell started switched on with default power level, -60 and max attenuation + f_UTRAN_SS_CreateCellDCH(utran_Cell5); + + // Start sending System Information + f_UTRAN_SendDefSysInfo(utran_Cell5); + + // Send relevant UTRAN cell info to EUTRA PTC + f_UTRAN_Send_IR_SysInfoToEUTRA(utran_Cell5); + f_UTRAN_TestBody_Set(true); + + //@siclog "Step 1" siclog@ + //Configure a dedicated channel in the UTRAN FDD with configuration + // according to 34.108 cl. 6.10.2.4.1.26 + f_SS_Config_ConvSpeech_RAB(utran_Cell5); + + // wait for trigger from EUTRAN side + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + // Set Cell Power level as per T0 + f_UTRAN_SetCellPower(utran_Cell5, v_T0_CPICH_Cell5, v_T0_PCCPCH_Cell5); + + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + //@siclog "Step 26" siclog@ + // Set Cell Power level as per T1 + f_UTRAN_SetCellPower(utran_Cell5, v_T1_CPICH_Cell5, v_T1_PCCPCH_Cell5); + + // UE starts registered in EUTRA, wait its Auth Params + f_UTRAN_InterRAT_InitialiseAuthParams(); + // Set up the ciphering ready for when the UE hands over + f_UTRAN_ConfigureCipheringBeforeHO_SRVCC(utran_Cell5); // ToDo Cs domain + + f_IRAT_SendCoOrd(EUTRA, cms_IRAT_Trigger); // Tell SS to transmit a MobilityFromEUTRACommand message + // @siclog "Steps 32 to 37" siclog@ + //according to 36.508 cl. 6.4.3.9.5, + f_UTRAN_SRVCC_WithHandover(utran_Cell5, cs_PDP_ContextStatusInactive); //@sic R5-134079 sic@ + + // @siclog "Step 38" siclog@ + f_UT_AnswerCall(UT); + + v_TI_R.tiVal := '000'B; + v_TI_R.tiFlag := '1'B; //@sic R5s140591 sic@ + + //@siclog "Step 39" siclog@ + U_Dc.receive (car_UplinkDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_Connect(v_TI_R))); + v_TI_S := v_TI_R; + v_TI_S.tiFlag := '0'B; //@sic R5s140591 sic@ + + //@siclog "Step 40" siclog@ + U_Dc.send (cas_DataReq_CS(utran_CellDedicated, tsc_RB3, cs_U_ConnectAck(v_TI_S))); + + + f_IRAT_SendCoOrd(EUTRA, cms_IRAT_Trigger); // Tell to EUTRA PTC Test case is now finished on E-UTRA side + f_UTRAN_TestBody_Set(false); + + // Switch off UE and release cell + f_UTRAN_Postamble(utran_Cell5, U5_CSCALL, -, v_TI_S); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.11 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_11_UTRAN() runs on UTRAN_PTC + { // E-UTRA voice to UTRA CS voice / aSRVCC / MT call/ SRVCC HO failure + var integer v_T0_CPICH_Cell5 := -88; + var integer v_T1_CPICH_Cell5 := -64; + var integer v_T0_PCCPCH_Cell5 := -88; + var integer v_T1_PCCPCH_Cell5 := -64; + + f_UTRAN_Init(EUTRA_UTRAN); + + // Create and configure Cell 5 + // Cell started switched on with default power level, -60 and max attenuation + f_UTRAN_SS_CreateCellDCH(utran_Cell5); + + // Start sending System Information + f_UTRAN_SendDefSysInfo(utran_Cell5); + + // Send relevant UTRAN cell info to EUTRA PTC + f_UTRAN_Send_IR_SysInfoToEUTRA(utran_Cell5); + f_UTRAN_TestBody_Set(true); + + // Step 1 + //Configure a dedicated channel in the UTRAN FDD with configuration + // according to 36.108 Table 4.8.3-1 condition UTRA Speech + f_SS_Config_ConvSpeech_RAB(utran_Cell5); + + // wait for trigger from EUTRAN side + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + // Set Cell Power level as per T0 + f_UTRAN_SetCellPower(utran_Cell5, v_T0_CPICH_Cell5, v_T0_PCCPCH_Cell5); + + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + //@siclog "Step 18" siclog@ + // Set Cell Power level as per T1 + f_UTRAN_SetCellPower(utran_Cell5, v_T1_CPICH_Cell5, v_T1_PCCPCH_Cell5); + + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + //@siclog "Step 28" siclog@ + // Set Cell Power level as per T2 - Cell Off + f_UTRAN_SetCellPower(utran_Cell5, tsc_AttenuationCellOFF); + f_IRAT_SendCoOrd(EUTRA, cms_IRAT_Trigger); //@sic R5s140492 sic@ + f_UTRAN_ReleaseCell(utran_Cell5, f_UTRAN_CellInfo_GetConfigType(utran_Cell5)); + + } + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.13 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_13_UTRAN() runs on UTRAN_PTC + { /* Inter-system mobility / E-UTRA voice to UTRA CS voice / aSRVCC / MT call / User answers in PS domain / SRVCC HO cancelled */ + var integer v_T0_CPICH_Cell5; + var integer v_T1_CPICH_Cell5; + var integer v_T0_PCCPCH_Cell5; + var integer v_T1_PCCPCH_Cell5; + v_T0_CPICH_Cell5 := -88; + v_T1_CPICH_Cell5 := -64; + v_T0_PCCPCH_Cell5 := -88; + v_T1_PCCPCH_Cell5 := -64; + // Initialise all cells + f_UTRAN_Init(EUTRA_UTRAN); + + // Create and configure Cell 5 + // Cell started switched on with default power level, -60 and max attenuation + f_UTRAN_SS_CreateCellDCH(utran_Cell5); + + // Start sending System Information + f_UTRAN_SendDefSysInfo(utran_Cell5); + + // Send relevant UTRAN cell info to EUTRA PTC + f_UTRAN_Send_IR_SysInfoToEUTRA(utran_Cell5); + f_UTRAN_TestBody_Set(true); + + //@siclog "Step 1" siclog@ + //Configure a dedicated channel in the UTRAN FDD with configuration + // according to 34.108 cl. 6.10.2.4.1.26 + f_SS_Config_ConvSpeech_RAB(utran_Cell5); + + // wait for trigger from EUTRAN side + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + // Set Cell Power level as per T0 + f_UTRAN_SetCellPower(utran_Cell5, v_T0_CPICH_Cell5,v_T0_PCCPCH_Cell5); + + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + //@siclog "Step 26" siclog@ + // Set Cell Power level as per T1 + f_UTRAN_SetCellPower(utran_Cell5, v_T1_CPICH_Cell5,v_T1_PCCPCH_Cell5); + + f_IRAT_WaitForCoOrd_Trigger(EUTRA); // Wait for EUTRA to complete + f_UTRAN_TestBody_Set(false); + f_UTRAN_ReleaseCell(utran_Cell5, f_UTRAN_CellInfo_GetConfigType(utran_Cell5)); + + } // function f_TC_13_4_3_13_UTRAN + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.14 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_14_UTRAN() runs on UTRAN_PTC + { // Inter-system mobility / E-UTRA PS voice + PS data to UTRA CS voice + PS data / aSRVCC / MO call + var integer v_T0_CPICH_Cell5 := -88; + var integer v_T1_CPICH_Cell5 := -64; + var integer v_T0_PCCPCH_Cell5 := -88; + var integer v_T1_PCCPCH_Cell5 := -64; + var TI v_TI_S; + var TI v_TI_R; + + f_UTRAN_Init(EUTRA_UTRAN); + + // Create and configure Cell 5 + // Cell started switched on with default power level, -60 and max attenuation + f_UTRAN_SS_CreateCellDCH(utran_Cell5); + + // Start sending System Information + f_UTRAN_SendDefSysInfo(utran_Cell5); + + // Send relevant UTRAN cell info to EUTRA PTC + f_UTRAN_Send_IR_SysInfoToEUTRA(utran_Cell5); + f_UTRAN_TestBody_Set(true); + + //@siclog "Step 1" siclog@ + //Configure a dedicated channel in the UTRAN FDD with configuration + // according to 36.108 Table 4.8.3-1 condition UTRA Speech + f_SS_Config_ConvSpeech_64kPS_RAB(utran_Cell5); + + // wait for trigger from EUTRAN side + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + // Set Cell Power level as per T0 + f_UTRAN_SetCellPower(utran_Cell5, v_T0_CPICH_Cell5, v_T0_PCCPCH_Cell5); + + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + //@siclog "Step 18" siclog@ + // Set Cell Power level as per T1 + f_UTRAN_SetCellPower(utran_Cell5, v_T1_CPICH_Cell5, v_T1_PCCPCH_Cell5); + + // UE starts registered in EUTRA, wait its Auth Params + f_UTRAN_InterRAT_InitialiseAuthParams(); + // Set up the ciphering ready for when the UE hands over + f_UTRAN_ConfigureCipheringBeforeHO_SRVCC(utran_Cell5); // ToDo Cs domain + f_UTRAN_IP_Handling_Change_Configuration (utran_CellDedicated, cell_DCH_64kPS_RAB_SRB); // @sic R5s140572 sic@ + + f_IRAT_SendCoOrd(EUTRA, cms_IRAT_Trigger); // Tell SS to transmit a MobilityFromEUTRACommand message + f_UTRAN_SRVCC_WithHandover(utran_Cell5, -, true, '0'B); // @sic R5-144745 sic@ + + v_TI_S.tiVal := '000'B; + v_TI_S.tiFlag := '0'B; + + //@siclog "Step 30" siclog@ + U_Dc.send (cas_DataReq_CS(utran_CellDedicated, tsc_RB3, cs_U_Connect(v_TI_S))); + v_TI_R := v_TI_S; + v_TI_R.tiFlag := '1'B; + + //@siclog "Step 31" siclog@ + U_Dc.receive (car_UplinkDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_ConnAck(v_TI_R))); + f_UTRAN_PreliminaryPass(__FILE__, __LINE__, "Step 31"); + + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); // @sic R5-144745 sic@ + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); + f_IRAT_SendCoOrd(EUTRA, cms_IRAT_Trigger); // Tell to EUTRA PTC Test case is now finished on E-UTRA side + f_UTRAN_TestBody_Set(false); + + // Switch off UE and release cell + f_UTRAN_Postamble(utran_Cell5, U5_CSCALL, -, v_TI_S); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.15 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_15_UTRAN() runs on UTRAN_PTC + { // Inter-system mobility / E-UTRA PS voice + PS data to UTRA CS voice + PS data / aSRVCC / MO call / SRVCC HO cancelled + var integer v_T0_CPICH_Cell5; + var integer v_T1_CPICH_Cell5; + var integer v_T0_PCCPCH_Cell5; + var integer v_T1_PCCPCH_Cell5; + v_T0_CPICH_Cell5 := -88; + v_T1_CPICH_Cell5 := -64; + v_T0_PCCPCH_Cell5 := -88; + v_T1_PCCPCH_Cell5 := -64; + // Initialise all cells + f_UTRAN_Init(EUTRA_UTRAN); + + // Create and configure Cell 5 + // Cell started switched on with default power level, -60 and max attenuation + f_UTRAN_SS_CreateCellDCH(utran_Cell5); + + // Start sending System Information + f_UTRAN_SendDefSysInfo(utran_Cell5); + + // Send relevant UTRAN cell info to EUTRA PTC + f_UTRAN_Send_IR_SysInfoToEUTRA(utran_Cell5); + f_UTRAN_TestBody_Set(true); + + //@siclog "Step 1" siclog@ + //Configure a dedicated channel in the UTRAN FDD with configuration + // according to 36.108 Table 4.8.3-1 condition UTRA Speech + f_SS_Config_ConvSpeech_64kPS_RAB(utran_Cell5); //@sic R5s140478 sic@ + + // wait for trigger from EUTRAN side + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + // Set Cell Power level as per T0 + f_UTRAN_SetCellPower(utran_Cell5, v_T0_CPICH_Cell5,v_T0_PCCPCH_Cell5); + + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + //@siclog "Step 16" siclog@ + // Set Cell Power level as per T1 + f_UTRAN_SetCellPower(utran_Cell5, v_T1_CPICH_Cell5,v_T1_PCCPCH_Cell5); + + f_IRAT_WaitForCoOrd_Trigger(EUTRA); // Wait for test to complete on EUTRA + f_UTRAN_ReleaseCell(utran_Cell5, f_UTRAN_CellInfo_GetConfigType(utran_Cell5)); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.16 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_16_UTRAN() runs on UTRAN_PTC + { // Inter-system mobility / E-UTRA PS voice + PS data to UTRA CS voice + PS data / aSRVCC / MT call + var integer v_T0_CPICH_Cell5 := -88; + var integer v_T1_CPICH_Cell5 := -64; + var integer v_T0_PCCPCH_Cell5 := -88; + var integer v_T1_PCCPCH_Cell5 := -64; + var TI v_TI_S; + var TI v_TI_R; + + f_UTRAN_Init(EUTRA_UTRAN); + + // Create and configure Cell 5 + // Cell started switched on with default power level, -60 and max attenuation + f_UTRAN_SS_CreateCellDCH(utran_Cell5); + + // Start sending System Information + f_UTRAN_SendDefSysInfo(utran_Cell5); + + // Send relevant UTRAN cell info to EUTRA PTC + f_UTRAN_Send_IR_SysInfoToEUTRA(utran_Cell5); + f_UTRAN_TestBody_Set(true); + + //@siclog "Step 1" siclog@ + //Configure a dedicated channel in the UTRAN FDD with configuration + // according to 34.108 cl. 6.10.2.4.1.26 + f_SS_Config_ConvSpeech_64kPS_RAB(utran_Cell5); + + // wait for trigger from EUTRAN side + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + // Set Cell Power level as per T0 + f_UTRAN_SetCellPower(utran_Cell5, v_T0_CPICH_Cell5, v_T0_PCCPCH_Cell5); + + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + //@siclog "Step 26" siclog@ + // Set Cell Power level as per T1 + f_UTRAN_SetCellPower(utran_Cell5, v_T1_CPICH_Cell5, v_T1_PCCPCH_Cell5); + + // UE starts registered in EUTRA, wait its Auth Params + f_UTRAN_InterRAT_InitialiseAuthParams(); + // Set up the ciphering ready for when the UE hands over + f_UTRAN_ConfigureCipheringBeforeHO_SRVCC(utran_Cell5); // ToDo Cs domain + f_UTRAN_IP_Handling_Change_Configuration (utran_CellDedicated, cell_DCH_64kPS_RAB_SRB); // @sic R5s140572 sic@ + + f_IRAT_SendCoOrd(EUTRA, cms_IRAT_Trigger); // Tell SS to transmit a MobilityFromEUTRACommand message + // @siclog "Steps 32 to 37" siclog@ + //according to 36.508 cl. 6.4.3.9.5, + f_UTRAN_SRVCC_WithHandover(utran_Cell5, -, true, '0'B); // @sic R5-144670 sic@ + + f_UT_AnswerCall ( UT ); + + v_TI_R.tiVal := '000'B; + v_TI_R.tiFlag := '1'B; //@sic R5s140578 sic@ + + //@siclog "Step 38" siclog@ + U_Dc.receive(car_UplinkDirectTransfer(utran_CellDedicated, tsc_RB3, cr_U_Connect(v_TI_R))); + v_TI_S := v_TI_R; + v_TI_S.tiFlag := '0'B;//@sic R5s140578 sic@ + + //@siclog "Step 39" siclog@ + U_Dc.send(cas_DataReq_CS(utran_CellDedicated, tsc_RB3, cs_U_ConnectAck(v_TI_S))); + + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); // @sic R5-144670 sic@ + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); + + f_IRAT_SendCoOrd(EUTRA, cms_IRAT_Trigger); // Tell to EUTRA PTC Test case is now finished on E-UTRA side + f_UTRAN_TestBody_Set(false); + + // Switch off UE and release cell + f_UTRAN_Postamble(utran_Cell5, U5_CSCALL, -, v_TI_S); + } + + + +} diff --git a/LTE_A_IWD_14wk37/LTE_A/13/BSRVCC_EUTRA.ttcn b/LTE_A_IWD_14wk37/LTE_A/13/BSRVCC_EUTRA.ttcn new file mode 100644 index 0000000..275787f --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/13/BSRVCC_EUTRA.ttcn @@ -0,0 +1,1007 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-07 18:37:49 +0200 (Sun, 07 Sep 2014) $ +// $Rev: 12081 $ +/******************************************************************************/ + +module BSRVCC_EUTRA { + + + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_SRVCC all; + import from EUTRA_Component all; + import from EUTRA_CellInfo all; + import from EUTRA_CommonDefs all; + import from EUTRA_RRC_Templates all; + import from EUTRA_SRB_Templates all; + import from EUTRA_AspCommon_Templates all; + import from GERAN_SRVCC all; + import from EUTRA_SecuritySteps all; + import from EUTRA_CommonProcedures all; + import from EPS_NAS_TypeDefs all; + import from EUTRA_RRCSteps all; + import from EUTRA_ConfigurationSteps all; + import from CommonDefs all; + import from EUTRA_Measurement_Templates all; + import from EUTRA_IRATFunctions all; + import from CommonIratDefs all; + import from EUTRA_ASP_TypeDefs all; + import from IMS_PTC_CoordMsg all; + import from EUTRA_CommonSRVCC all; + import from EUTRA_BandDependentParam all; + import from EPS_NAS_Templates all; + import from EPS_NAS_Constants all; + import from EUTRA_NASSteps all; + import from EUTRA_SecurityFunctions all; + import from EUTRA_AuxiliaryFunctions all; + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.18 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_18_EUTRA() runs on EUTRA_PTC + { /* @desc Inter-system mobility / E-UTRA PS voice + PS data to UTRA CS voice + PS data / bSRVCC / MO call */ + + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c4); + f_EUTRA_CellInfo_InitMaxReferencePower (eutra_Cell1, -60); + f_EUTRA_CellConfig_DefPlusUM_RoHC(eutra_Cell1); + f_EUTRA_Preamble (eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_SetCellPower(eutra_Cell1, -60); // T0 + + f_EUTRA_TestBody_Set(true); + + fl_TC_13_4_3_18_Body(); + + // Postamble + f_IRAT_WaitForCoOrd_Trigger(UTRAN); + //@siclog "step 37" siclog@ + f_EUTRA_SetCellPower(eutra_Cell1, tsc_NonSuitableOffCellRS_EPRE); //@sic R5-142879 sic@ + f_EUTRA_TestBody_Set(false); + f_EUTRA_ReleaseAllCells (); + } // function f_TC_13_4_3_18_EUTRA + + /* + * @desc test body of TC_13_4_3_18 + * @status APPROVED (LTE_A) + */ + function fl_TC_13_4_3_18_Body() runs on EUTRA_PTC + { + var AbsoluteCellPower_Type v_T1_RS_EPRE_Cell1 := -84; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var NasCount_Type v_NasCountDL; + var integer v_UTRAN_PhysChId_Cell5; + var octetstring v_HandoverToUtranCommand; + var octetstring v_Nas_SecurityParamFromEUTRA; + var Frequency_IE_Type v_Frequency_IE_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs (eutra_Cell1); + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell1 := f_EUTRA_BandDependentParam(v_Frequency_IE_Cell1.DL_ChBandwidth, v_Frequency_IE_Cell1.UL_ChBandwidth); + var integer v_UTRAN_ARFCN_Cell5; + var IRAT_CoOrd_SysInfo_Type v_UTRANSysInfo; + var CoOrd_UTRANSysInfoFDD_Type v_UTRANSysInfoFDD; + var CoOrd_UTRANSysInfoTDD_Type v_UTRANSysInfoTDD; + var template (present) UL_DCCH_Message v_MeasRpt; + var template (value) DL_DCCH_Message v_Reconfig; + + v_UTRANSysInfo := f_IRAT_WaitForCoOrd_SysInfo(UTRAN); + + if (ischosen (v_UTRANSysInfo.Utran[0].FDD)) { + v_UTRANSysInfoFDD := v_UTRANSysInfo.Utran[0].FDD; + v_UTRAN_ARFCN_Cell5 := v_UTRANSysInfo.Utran[0].FDD.Freq; + v_UTRAN_PhysChId_Cell5 := v_UTRANSysInfo.Utran[0].FDD.ScramblingCode; + //@sic R5s140733 sic@ + v_HandoverToUtranCommand := f_U_EncodeHandoverToUtran_64kPS_Speech_FDD(v_UTRANSysInfoFDD.UplinkScrambingCode, + v_UTRANSysInfoFDD.ScramblingCode, + v_UTRANSysInfoFDD.Freq); + v_Reconfig := cs_RRCConnectionReconfiguration_SRVCC_FDD(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_UTRAN_ARFCN_Cell5, + v_UTRAN_PhysChId_Cell5); + + v_MeasRpt := cr_MeasurementReport_Utran_1Entry_FDD_RSCP(1, v_UTRAN_PhysChId_Cell5); + } + else { + v_UTRANSysInfoTDD := v_UTRANSysInfo.Utran[0].TDD; + v_UTRAN_ARFCN_Cell5 := v_UTRANSysInfo.Utran[0].TDD.Freq; + v_UTRAN_PhysChId_Cell5 := v_UTRANSysInfo.Utran[0].TDD.CellParametersID; + v_HandoverToUtranCommand := f_U_EncodeHandoverToUtran_64kPS_Speech_TDD(v_UTRANSysInfoTDD.CellParametersID, + v_UTRANSysInfoTDD.Freq); + v_Reconfig := cs_RRCConnectionReconfiguration_SRVCC_TDD(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_UTRAN_ARFCN_Cell5, + v_UTRAN_PhysChId_Cell5); + + v_MeasRpt := cr_MeasurementReport_Utran_1Entry_TDD_RSCP(1, v_UTRAN_PhysChId_Cell5); + } + + // @siclog "Step 1" siclog@ + // The SS configures UTRA cell 5 to reference configuration according 36.508 table 4.8.3-1, condition UTRA PS RB + Speech . + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + + // @siclog "Steps 2-13" siclog@ + /* Steps 1 to 12 of the generic test procedure for + * IMS MO speech call (TS 36.508 4.5A.6.3-1). + */ + f_EUTRA_GenericIMS_MO_SpeechCallInitiation(eutra_Cell1); + + //@siclog "Step 14" siclog@ + f_EUTRA_RRCConnectionReconfigurationWithPiggyNAS_DrbReconfig(eutra_Cell1, + tsc_RRC_TI_Def, + {tsc_DRB2}, + {cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_508_ActDedicatedEPSBearerCxtReq(tsc_EpsDedicatedBearerId, + tsc_PTI_Unassigned, + cs_LinkedId(hex2bit(tsc_EpsDefaultBearerId)), + cds_EPS_QoS_Dedicated_4, // @sic R5s140590 sic@ + f_EUTRA_Get_508_TrafficFlowTemplate(4, tsc_EpsDedicatedBearerId)))}, // @sic R5s140590 sic@ + UM_Mode); + + //@siclog "Step 15" siclog@ + SRB.receive(car_SRB2_NasPdu_IND(eutra_Cell1, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_ActDedicatedEPSBearerCxtAccept(tsc_EpsDedicatedBearerId)))); + // Steps 5 to 8 in Annex C.21 are executed + //Wait for completion of IMS signalling (Steps 5 to 8 in Annex C.21) + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); + + // @siclog "Step 16" siclog@ + // The SS transmits an RRCConnectionReconfiguration message on Cell 1 to setup inter RAT measurement and reporting for event B2. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + v_Reconfig)); // @sic R5-144670 sic@ + + // @siclog "Step 17" siclog@ + // The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + + // @siclog "Step 18" siclog@ + // The SS changes the power level for Cell 1 and Cell 5 according to the row "T1" in table 13.4.3.18.3.2-1 + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + f_EUTRA_SetCellPower(eutra_Cell1, v_T1_RS_EPRE_Cell1); + + // @siclog "Step 19" siclog@ + // The UE transmits a MeasurementReport message on Cell 1 to report event B2 for Cell 5. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, v_MeasRpt)); + + //@siclog "Step 20-21" siclog@ + f_EUTRA_UTRA_Capability (eutra_Cell1, true, true); //@sic R5s140733 sic@ + + f_IRAT_WaitForCoOrd_Trigger(UTRAN); + + //NAS-securityParamFromEUTRA is the 4 least significant bits of the NAS downlink COUNT value according to Table 13.1.4.3.3-6 + v_NasCountDL := f_EUTRA_SS_NAS_CountGetDLNext(); + v_Nas_SecurityParamFromEUTRA := substr(v_NasCountDL, 3, 1); + // @siclog "Step 22" siclog@ + // The SS transmits a MobilityFromEUTRACommand message on Cell 1. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, //@sic R5s140733 sic@ + cs_MobilityFromEutraCommand_Handover(tsc_RRC_TI_Def, false, utra, v_HandoverToUtranCommand, v_Nas_SecurityParamFromEUTRA, omit))); + + } // function fl_TC_13_4_3_18_Body + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.19 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_19_EUTRA() runs on EUTRA_PTC + { /* Inter-system mobility / E-UTRA PS voice + PS data to UTRA CS voice + PS data / bSRVCC / MO call / SRVCC HO cancelled */ + + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c4); + f_EUTRA_CellInfo_InitMaxReferencePower(eutra_Cell1, -60); + + // Create cell and send out system information + f_EUTRA_CellConfig_DefPlusUM_RoHC(eutra_Cell1); + f_EUTRA_Preamble (eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_SetCellPower(eutra_Cell1, -60); // T0 + + f_EUTRA_TestBody_Set(true); + + fl_TC_13_4_3_19_Body(); + + f_EUTRA_TestBody_Set(false); + // Postamble + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); // Just inform UTRAN PTC that EUTRAN PTC ended procedure + f_EUTRA_Postamble(eutra_Cell1, E2_CONNECTED); + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); + } // function f_TC_13_4_3_19_EUTRA + + /* + * @desc test body of TC_13_4_3_19 + * @status APPROVED (LTE_A) + */ + function fl_TC_13_4_3_19_Body() runs on EUTRA_PTC + { + var AbsoluteCellPower_Type v_T1_RS_EPRE_Cell1 := -84; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var integer v_UTRAN_PhysChId_Cell5; + var octetstring v_HandoverToUtranCommand; + var Frequency_IE_Type v_Frequency_IE_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs (eutra_Cell1); + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell1:= f_EUTRA_BandDependentParam(v_Frequency_IE_Cell1.DL_ChBandwidth, v_Frequency_IE_Cell1.UL_ChBandwidth); + var integer v_UTRAN_ARFCN_Cell5; + var IRAT_CoOrd_SysInfo_Type v_UTRANSysInfo; + var CoOrd_UTRANSysInfoFDD_Type v_UTRANSysInfoFDD; + var CoOrd_UTRANSysInfoTDD_Type v_UTRANSysInfoTDD; + var template (present) UL_DCCH_Message v_MeasRpt; + var template (value) DL_DCCH_Message v_Reconfig; + + v_UTRANSysInfo := f_IRAT_WaitForCoOrd_SysInfo (UTRAN); + + if (ischosen (v_UTRANSysInfo.Utran[0].FDD)) { + v_UTRANSysInfoFDD := v_UTRANSysInfo.Utran[0].FDD; + v_UTRAN_ARFCN_Cell5 := v_UTRANSysInfo.Utran[0].FDD.Freq; + v_UTRAN_PhysChId_Cell5 := v_UTRANSysInfo.Utran[0].FDD.ScramblingCode; + v_HandoverToUtranCommand := f_U_EncodeHandoverToUtran_Speech_FDD(v_UTRANSysInfoFDD.UplinkScrambingCode, + v_UTRANSysInfoFDD.ScramblingCode, + v_UTRANSysInfoFDD.Freq); + + v_Reconfig := cs_RRCConnectionReconfiguration_SRVCC_FDD(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_UTRAN_ARFCN_Cell5, + v_UTRAN_PhysChId_Cell5); + + v_MeasRpt := cr_MeasurementReport_Utran_1Entry_FDD_RSCP(1, v_UTRAN_PhysChId_Cell5); + } + else { + v_UTRANSysInfoTDD := v_UTRANSysInfo.Utran[0].TDD; + v_UTRAN_ARFCN_Cell5 := v_UTRANSysInfo.Utran[0].TDD.Freq; + v_UTRAN_PhysChId_Cell5 := v_UTRANSysInfo.Utran[0].TDD.CellParametersID; + v_HandoverToUtranCommand := f_U_EncodeHandoverToUtran_Speech_TDD(v_UTRANSysInfoTDD.CellParametersID, + v_UTRANSysInfoTDD.Freq); + v_Reconfig := cs_RRCConnectionReconfiguration_SRVCC_TDD(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_UTRAN_ARFCN_Cell5, + v_UTRAN_PhysChId_Cell5); + + v_MeasRpt := cr_MeasurementReport_Utran_1Entry_TDD_RSCP(1, v_UTRAN_PhysChId_Cell5); + } + + // @siclog "Step 1" siclog@ + // The SS configures UTRA cell 5 to reference configuration according 36.508 table 4.8.3-1, condition UTRA PS RB + Speech . + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + + // @siclog "Steps 2-13" siclog@ + /* Steps 1 to 12 of the generic test procedure for + * IMS MO speech call (TS 36.508 4.5A.6.3-1). + */ + f_EUTRA_GenericIMS_MO_SpeechCallInitiation(eutra_Cell1); + + //@siclog "Step 14" siclog@ + f_EUTRA_RRCConnectionReconfigurationWithPiggyNAS_DrbReconfig(eutra_Cell1, + tsc_RRC_TI_Def, + {tsc_DRB2}, + {cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_508_ActDedicatedEPSBearerCxtReq(tsc_EpsDedicatedBearerId, + tsc_PTI_Unassigned, + cs_LinkedId(hex2bit(tsc_EpsDefaultBearerId)), + cds_EPS_QoS_Dedicated_4, // @sic R5s140590 sic@ + f_EUTRA_Get_508_TrafficFlowTemplate(4, tsc_EpsDedicatedBearerId)))}, // @sic R5s140590 sic@ + UM_Mode); + + //@siclog "Step 15" siclog@ + SRB.receive(car_SRB2_NasPdu_IND(eutra_Cell1, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_ActDedicatedEPSBearerCxtAccept(tsc_EpsDedicatedBearerId)))); + // Steps 5 to 8 in Annex C.21 are executed + //Wait for completion of IMS signalling (Steps 5 to 8 in Annex C.21) + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); + + // @siclog "Step 16" siclog@ + // The SS transmits an RRCConnectionReconfiguration message on Cell 1 to setup inter RAT measurement and reporting for event B2. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + v_Reconfig)); // @sic R5-144670 sic@ + + + // @siclog "Step 17" siclog@ + // The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + + // @siclog "Step 18" siclog@ + // The SS changes the power level for Cell 1 and Cell 5 according to the row "T1" in table 13.4.3.19.3.2-1 + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + f_EUTRA_SetCellPower(eutra_Cell1, v_T1_RS_EPRE_Cell1); + + // @siclog "Step 19" siclog@ + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, v_MeasRpt)); + + // @siclog "Step 20" siclog@ + // The SS transmits a NOTIFICATION message. + SRB.send(cas_SRB1_NasPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_Notification(tsc_EpsDefaultBearerId)))); + + + // now tell IMS PTC to take over + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); + //Wait Trigger from IMS PTC + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); + // If we get here, the parallel behaviour on the IMS PTC must have completed successfully + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 21"); + + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); + // If we get here, the parallel behaviour on the IMS PTC must have completed successfully + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 24"); + + } // function fl_TC_13_4_3_19_Body + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.20 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_20_EUTRA() runs on EUTRA_PTC + { /* Inter-system mobility / E-UTRA PS voice + PS data to UTRA CS voice + PS data / bSRVCC / MO call / SRVCC HO failure */ + + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c4); + f_EUTRA_CellInfo_InitMaxReferencePower (eutra_Cell1, -60); + + // Create cell and send out system information + f_EUTRA_CellConfig_DefPlusUM_RoHC(eutra_Cell1); + f_EUTRA_Preamble (eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_SetCellPower(eutra_Cell1, -60); // T0 + + f_EUTRA_TestBody_Set(true); + + fl_TC_13_4_3_20_Body(); + + // Postamble + f_EUTRA_TestBody_Set(false); + f_EUTRA_Postamble(eutra_Cell1, E2_CONNECTED); + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); + } // function f_TC_13_4_3_20_EUTRA + + /* + * @desc test body of TC_13_4_3_20 + * @status APPROVED (LTE_A) + */ + function fl_TC_13_4_3_20_Body() runs on EUTRA_PTC + { + var AbsoluteCellPower_Type v_T1_RS_EPRE_Cell1 := -88; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var NasCount_Type v_NasCountDL; + var integer v_UTRAN_PhysChId_Cell5; + var octetstring v_HandoverToUtranCommand; + var octetstring v_Nas_SecurityParamFromEUTRA; + var Frequency_IE_Type v_Frequency_IE_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs (eutra_Cell1); + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell1 := f_EUTRA_BandDependentParam(v_Frequency_IE_Cell1.DL_ChBandwidth, v_Frequency_IE_Cell1.UL_ChBandwidth); + var integer v_UTRAN_ARFCN_Cell5; + var IRAT_CoOrd_SysInfo_Type v_UTRANSysInfo; + var CoOrd_UTRANSysInfoFDD_Type v_UTRANSysInfoFDD; + var CoOrd_UTRANSysInfoTDD_Type v_UTRANSysInfoTDD; + var template (present) UL_DCCH_Message v_MeasRpt; + var PhysCellId v_PhysicalCellIdentity_Cell1:= f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell1);//Get cell specific parameters for Cell 1 + var EUTRA_SecurityParams_Type v_AuthParams; + var NextHopChainingCount v_NextHopChainingCount := 0; + var ShortMAC_I v_ShortMAC_I; + var template (value) DL_DCCH_Message v_Reconfig; + + v_UTRANSysInfo := f_IRAT_WaitForCoOrd_SysInfo (UTRAN); + + if (ischosen (v_UTRANSysInfo.Utran[0].FDD)) { + v_UTRANSysInfoFDD := v_UTRANSysInfo.Utran[0].FDD; + v_UTRAN_ARFCN_Cell5 := v_UTRANSysInfo.Utran[0].FDD.Freq; + v_UTRAN_PhysChId_Cell5 := v_UTRANSysInfo.Utran[0].FDD.ScramblingCode; + //@sic R5s140735 sic@ + v_HandoverToUtranCommand := f_U_EncodeHandoverToUtran_64kPS_Speech_FDD(v_UTRANSysInfoFDD.UplinkScrambingCode, + v_UTRANSysInfoFDD.ScramblingCode, + v_UTRANSysInfoFDD.Freq); + v_Reconfig := cs_RRCConnectionReconfiguration_SRVCC_FDD(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_UTRAN_ARFCN_Cell5, + v_UTRAN_PhysChId_Cell5); + + v_MeasRpt := cr_MeasurementReport_Utran_1Entry_FDD_RSCP(1, v_UTRAN_PhysChId_Cell5); + } + else { + v_UTRANSysInfoTDD := v_UTRANSysInfo.Utran[0].TDD; + v_UTRAN_ARFCN_Cell5 := v_UTRANSysInfo.Utran[0].TDD.Freq; + v_UTRAN_PhysChId_Cell5 := v_UTRANSysInfo.Utran[0].TDD.CellParametersID; + //@sic R5s140735 sic@ + v_HandoverToUtranCommand := f_U_EncodeHandoverToUtran_64kPS_Speech_TDD(v_UTRANSysInfoTDD.CellParametersID, + v_UTRANSysInfoTDD.Freq); + + v_Reconfig := cs_RRCConnectionReconfiguration_SRVCC_TDD(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_UTRAN_ARFCN_Cell5, + v_UTRAN_PhysChId_Cell5); + + v_MeasRpt := cr_MeasurementReport_Utran_1Entry_TDD_RSCP(1, v_UTRAN_PhysChId_Cell5); + } + + // @siclog "Step 1" siclog@ + // The SS configures UTRA cell 5 to reference configuration according 36.508 table 4.8.3-1, condition UTRA PS RB + Speech . + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + + // @siclog "Steps 2-13" siclog@ + /* Steps 1 to 12 of the generic test procedure for + * IMS MO speech call (TS 36.508 4.5A.6.3-1). + */ + f_EUTRA_GenericIMS_MO_SpeechCallInitiation(eutra_Cell1); + + //@siclog "Step 14" siclog@ + f_EUTRA_RRCConnectionReconfigurationWithPiggyNAS_DrbReconfig(eutra_Cell1, + tsc_RRC_TI_Def, + {tsc_DRB2}, + {cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_508_ActDedicatedEPSBearerCxtReq(tsc_EpsDedicatedBearerId, + tsc_PTI_Unassigned, + cs_LinkedId(hex2bit(tsc_EpsDefaultBearerId)), + cds_EPS_QoS_Dedicated_4, // @sic R5s140590 sic@ + f_EUTRA_Get_508_TrafficFlowTemplate(4, tsc_EpsDedicatedBearerId)))}, // @sic R5s140590 sic@ + UM_Mode); + + //@siclog "Step 15" siclog@ + SRB.receive(car_SRB2_NasPdu_IND(eutra_Cell1, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_ActDedicatedEPSBearerCxtAccept(tsc_EpsDedicatedBearerId)))); + + // Steps 5 to 8 in Annex C.21 are executed + //Wait for completion of IMS signalling (Steps 5 to 8 in Annex C.21) + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); + + // @siclog "Step 16" siclog@ + // The SS transmits an RRCConnectionReconfiguration message on Cell 1 to setup inter RAT measurement and reporting for event B2. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + v_Reconfig)); // @sic R5-144670 sic@ + + + // @siclog "Step 17" siclog@ + // The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + + // @siclog "Step 18" siclog@ + // The SS changes the power level for Cell 1 and Cell 5 according to the row "T1" in table 13.4.3.20.3.2-1 + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + f_EUTRA_SetCellPower(eutra_Cell1, v_T1_RS_EPRE_Cell1); + + // @siclog "Step 19" siclog@ + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, v_MeasRpt)); + + // @siclog "Step 20" siclog@ + // The SS changes the power level for Cell 1 and Cell 5 according to the row "T2" in Table 13.4.3.20.3.2 + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + + // @siclog "Step 21-22" siclog@ + f_EUTRA_UTRA_Capability (eutra_Cell1, true, true); //@sic R5s140735 sic@ + + f_IRAT_WaitForCoOrd_Trigger(UTRAN); + + //NAS-securityParamFromEUTRA is the 4 least significant bits of the NAS downlink COUNT value according to Table 13.1.4.3.3-6 + v_NasCountDL := f_EUTRA_SS_NAS_CountGetDLNext(); + v_Nas_SecurityParamFromEUTRA := substr(v_NasCountDL, 3, 1); + // @siclog "Step 23" siclog@ + // The SS transmits a MobilityFromEUTRACommand message on Cell 1. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_MobilityFromEutraCommand_Handover(tsc_RRC_TI_Def, false, utra, v_HandoverToUtranCommand, v_Nas_SecurityParamFromEUTRA, omit))); + + f_EUTRA_SS_SRBs_DRBs_Reset_StopULGrant_noPUCCHSync_PDCP_CountMaintian ( eutra_Cell1,-,-, 100 ); // + v_ShortMAC_I := f_Calculate_ShortMAC(eutra_Cell1, eutra_Cell1); + f_EUTRA_SS_ConfigRachProcedure_Def(eutra_Cell1, tsc_C_RNTI_Def); + + // @siclog "Step 24" siclog@ + SRB.receive(car_SRB0_RrcPdu_IND(eutra_Cell1, + cr_508_RRCConnectionReestablishmentRequest(tsc_C_RNTI_Def, + v_PhysicalCellIdentity_Cell1, + cr_ReestablishmentCause_HandoverFailure))); // @sic R5s140735 subject to prose CR approval sic@ + + // Activate RRC security at SS target cell for SRB 1, 2 and 1 AM DRB + v_AuthParams := f_EUTRA_SS_AS_ActivateSecurity_HO_Reest(eutra_Cell1, f_EUTRA_Security_Get(), v_NextHopChainingCount); //@sic R5100744 sic@ + f_EUTRA_Security_Set(v_AuthParams); + + //@siclog "Step 25" siclog@ + /* The SS transmits RRCConnectionReestablishment message. */ + f_EUTRA_RRC_RRCConnectionReestablishment_Def(eutra_Cell1, -, v_NextHopChainingCount); + + //@siclog "Step 26" siclog@ + /* UE transmits an RRCConnectionReestablishmentComplete message */ + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionReestablishmentComplete(tsc_RRC_TI_Def))); + + //@siclog "Step 27-28" siclog@ + f_EUTRA_RRC_RRCConnectionReconfiguration_Resume_SRB2_DRBs(eutra_Cell1, tsc_RRC_TI_Def); + + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); // To excute IMS parallel behaviour in Table 13.4.3.9.3.2-4 + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); // Wait for IMS to complete + + } // function fl_TC_13_4_3_20_Body + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.21 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_21_EUTRA() runs on EUTRA_PTC + { // Inter-system mobility / E-UTRA PS voice to GSM CS voice / bSRVCC / MO call + + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c5); // @sic R5s140747 subject to prose CR approval sic@ + // Create cell and send out system information + f_EUTRA_CellConfig_DefPlusUM_RoHC(eutra_Cell1); + f_EUTRA_Preamble (eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_SetCellPower(eutra_Cell1, -85); + + f_EUTRA_TestBody_Set(true); + + fl_TC_13_4_3_21_Body(); + + // Postamble + f_IRAT_WaitForCoOrd_Trigger(GERAN); + f_EUTRA_SetCellPower(eutra_Cell1, tsc_NonSuitableOffCellRS_EPRE); + f_EUTRA_TestBody_Set(false); + f_EUTRA_ReleaseAllCells (); + } // function f_TC_13_4_3_21_EUTRA + + /* + * @desc test body of TC_13_4_3_21 + * @status APPROVED (LTE_A) + */ + function fl_TC_13_4_3_21_Body() runs on EUTRA_PTC + { + var IRAT_CoOrd_SysInfo_Type v_GERANSysInfo; + var IRAT_CoOrd_SysInfo_Type v_GERANSysInfof12; + var IRAT_CoOrd_SysInfo_Type v_GERANSysInfof13; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var Frequency_IE_Type v_Frequency_IE_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs (eutra_Cell1); + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell1 := f_EUTRA_BandDependentParam(v_Frequency_IE_Cell1.DL_ChBandwidth, v_Frequency_IE_Cell1.UL_ChBandwidth); + var ARFCN_ValueGERAN v_GERAN_ARFCN_f11; + var ARFCN_ValueGERAN v_GERAN_ARFCN_Tch; + var PhysCellIdGERAN v_GERAN_PhysChId_Cell24; + var BandIndicatorGERAN v_BandIndicatorGERAN_Cell24; + var octetstring v_HandoverToGeranCommand; + var octetstring v_Nas_SecurityParamFromEUTRA; + var NasCount_Type v_NasCountDL; + var template (value) DL_DCCH_Message v_Meas; + + //Coordinate with GERAN component to receive GERAN frequencies + v_GERANSysInfo := f_IRAT_WaitForCoOrd_SysInfo(GERAN); + v_GERANSysInfof12 := f_IRAT_WaitForCoOrd_SysInfo(GERAN); + v_GERANSysInfof13 := f_IRAT_WaitForCoOrd_SysInfo(GERAN); + + v_GERAN_ARFCN_f11 := v_GERANSysInfo.Geran[0].Arfcn; + v_GERAN_ARFCN_Tch := v_GERANSysInfo.Geran[0].TCHArfcn; + v_GERAN_PhysChId_Cell24 := { + networkColourCode := v_GERANSysInfo.Geran[0].Ncc, + baseStationColourCode := v_GERANSysInfo.Geran[0].Bcc + } + + if (v_GERANSysInfo.Geran[0].BandIndicator == '0'B) { + v_BandIndicatorGERAN_Cell24 := dcs1800; + } + else { + v_BandIndicatorGERAN_Cell24 := pcs1900; + } + v_HandoverToGeranCommand := f_G_EncodeHandoverToGERAN_FH_NonHopping(v_GERAN_ARFCN_f11, + v_GERAN_ARFCN_Tch, + v_GERAN_PhysChId_Cell24.networkColourCode, + v_GERAN_PhysChId_Cell24.baseStationColourCode, + true); + // @siclog "Step 1" siclog@ + // The SS configures Geran cell to reference configuration . + f_IRAT_SendCoOrd(GERAN, cms_IRAT_Trigger); + + // @siclog "Steps 2-12" siclog@ + /* Steps 1 to 12 of the generic test procedure for + * IMS MO speech call (TS 36.508 4.5A.6.3-1). + */ + f_EUTRA_GenericIMS_MO_SpeechCallInitiation(eutra_Cell1); + + // @siclog "Step 13" siclog@ + f_EUTRA_RRCConnectionReconfigurationWithPiggyNAS_DrbReconfig(eutra_Cell1, + tsc_RRC_TI_Def, + {tsc_DRB2}, + {cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_508_ActDedicatedEPSBearerCxtReq(tsc_EpsDedicatedBearerId, + tsc_PTI_Unassigned, + cs_LinkedId(hex2bit(tsc_EpsDefaultBearerId)), + cds_EPS_QoS_Dedicated_4, // @sic R5s140590 sic@ + f_EUTRA_Get_508_TrafficFlowTemplate(4, tsc_EpsDedicatedBearerId)))}, // @sic R5s140590 sic@ + UM_Mode); + + //@siclog "Step 14" siclog@ + SRB.receive(car_SRB2_NasPdu_IND(eutra_Cell1, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_ActDedicatedEPSBearerCxtAccept(tsc_EpsDedicatedBearerId)))); + //Wait for completion of IMS signalling + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); + + f_EUTRA_SendAuthParameters (eutra_Cell1, GERAN, false, true); + + v_Meas := cs_RRCConnectionReconfiguration_SRVCC_GERAN(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_GERAN_ARFCN_f11, + v_BandIndicatorGERAN_Cell24, + f_ConvertGERANNeighCell (v_GERANSysInfof12.Geran[0].Arfcn, v_GERANSysInfof13.Geran[0]. Arfcn)); + // @siclog "Step 15" siclog@ + // The SS transmits an RRCConnectionReconfiguration message on Cell 1 to setup inter RAT measurement and reporting for event B2. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + v_Meas)); + // @siclog "Step 16" siclog@ + // The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + + // @siclog "Step 17" siclog@ + // The SS changes the power level for Cell 1 and Cell 24 according to the row "T1" in table 13.4.3.7.3.2-1 + f_IRAT_SendCoOrd(GERAN, cms_IRAT_Trigger); + f_EUTRA_SetCellPower(eutra_Cell1, -85); + + // @siclog "Step 18" siclog@ + // The UE transmits a MeasurementReport message on Cell 1 to report event B2 for Cell 24. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, + cr_MeasurementReport_Geran_1Entry(1, v_GERAN_PhysChId_Cell24))); + //nas-securityParamFromEUTRA is the 4 least significant bits of the NAS downlink COUNT value according to Table 13.1.4.3.3-6 + v_NasCountDL := f_EUTRA_SS_NAS_CountGetDLNext(); + v_Nas_SecurityParamFromEUTRA := substr(v_NasCountDL, 3, 1); + // @siclog "Step " siclog@ + // The SS transmits a MobilityFromEUTRACommand message on Cell 1. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_MobilityFromEutraCommand_Handover(tsc_RRC_TI_Def, + false,//@sic R5-142880 sic@ + geran, + v_HandoverToGeranCommand, + v_Nas_SecurityParamFromEUTRA, + omit, + cs_MobilityFromEUTRACommand_v8a0_IEs(v_BandIndicatorGERAN_Cell24)))); + + + } // function fl_TC_13_4_3_21_Body + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.22 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_22_EUTRA() runs on EUTRA_PTC + { // Inter-system mobility / E-UTRA PS voice to GERAN CS voice / aSRVCC / MO call / SRVCC HO Cancelled + + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c5); // @sic R5s140752 subject to prose CR approval sic@ + // Create cell and send out system information + f_EUTRA_CellConfig_DefPlusUM_RoHC(eutra_Cell1); + f_EUTRA_Preamble (eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_SetCellPower(eutra_Cell1, -85); + + f_EUTRA_TestBody_Set(true); + + fl_TC_13_4_3_22_Body(); + + // Postamble + f_EUTRA_TestBody_Set(false); + f_EUTRA_Postamble(eutra_Cell1, E2_CONNECTED); + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); + } // function f_TC_13_4_3_22_EUTRA + + /* + * @desc test body of TC_13_4_3_22 + * @status APPROVED (LTE_A) + */ + function fl_TC_13_4_3_22_Body() runs on EUTRA_PTC + { + var IRAT_CoOrd_SysInfo_Type v_GERANSysInfo; + var IRAT_CoOrd_SysInfo_Type v_GERANSysInfof12; + var IRAT_CoOrd_SysInfo_Type v_GERANSysInfof13; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var Frequency_IE_Type v_Frequency_IE_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell1); + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell1 := f_EUTRA_BandDependentParam(v_Frequency_IE_Cell1.DL_ChBandwidth, v_Frequency_IE_Cell1.UL_ChBandwidth); + var ARFCN_ValueGERAN v_GERAN_ARFCN_f11; + var ARFCN_ValueGERAN v_GERAN_ARFCN_Tch; + var PhysCellIdGERAN v_GERAN_PhysChId_Cell24; + var BandIndicatorGERAN v_BandIndicatorGERAN_Cell24; + var octetstring v_HandoverToGeranCommand; + var octetstring v_Nas_SecurityParamFromEUTRA; + var NasCount_Type v_NasCountDL; + var template (value) DL_DCCH_Message v_Meas; + + //Coordinate with GERAN component to receive GERAN frequencies + v_GERANSysInfo := f_IRAT_WaitForCoOrd_SysInfo (GERAN); + v_GERANSysInfof12 := f_IRAT_WaitForCoOrd_SysInfo (GERAN); + v_GERANSysInfof13 := f_IRAT_WaitForCoOrd_SysInfo (GERAN); + + v_GERAN_ARFCN_f11 := v_GERANSysInfo.Geran[0].Arfcn; + v_GERAN_ARFCN_Tch := v_GERANSysInfo.Geran[0].TCHArfcn; + v_GERAN_PhysChId_Cell24 := { + networkColourCode := v_GERANSysInfo.Geran[0].Ncc, + baseStationColourCode := v_GERANSysInfo.Geran[0].Bcc + } + + if (v_GERANSysInfo.Geran[0].BandIndicator == '0'B) { + v_BandIndicatorGERAN_Cell24 := dcs1800; + } + else { + v_BandIndicatorGERAN_Cell24 := pcs1900; + } + v_HandoverToGeranCommand := f_G_EncodeHandoverToGERAN_FH_NonHopping(v_GERAN_ARFCN_f11, + v_GERAN_ARFCN_Tch, + v_GERAN_PhysChId_Cell24.networkColourCode, + v_GERAN_PhysChId_Cell24.baseStationColourCode, + true); + // @siclog "Step 1" siclog@ + // The SS configures Geran cell to reference configuration . + f_IRAT_SendCoOrd(GERAN, cms_IRAT_Trigger); + + // @siclog "Steps 2-12" siclog@ + /* Steps 1 to 12 of the generic test procedure for + * IMS MO speech call (TS 36.508 4.5A.6.3-1). + */ + f_EUTRA_GenericIMS_MO_SpeechCallInitiation(eutra_Cell1); + + // @siclog "Step 13" siclog@ + f_EUTRA_RRCConnectionReconfigurationWithPiggyNAS_DrbReconfig(eutra_Cell1, + tsc_RRC_TI_Def, + {tsc_DRB2}, + {cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_508_ActDedicatedEPSBearerCxtReq(tsc_EpsDedicatedBearerId, + tsc_PTI_Unassigned, + cs_LinkedId(hex2bit(tsc_EpsDefaultBearerId)), + cds_EPS_QoS_Dedicated_4, // @sic R5s140590 sic@ + f_EUTRA_Get_508_TrafficFlowTemplate(4, tsc_EpsDedicatedBearerId)))}, // @sic R5s140590 sic@ + UM_Mode); + + //@siclog "Step 14" siclog@ + SRB.receive(car_SRB2_NasPdu_IND(eutra_Cell1, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_ActDedicatedEPSBearerCxtAccept(tsc_EpsDedicatedBearerId)))); + //Wait for completion of IMS signalling + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); + + f_EUTRA_SendAuthParameters (eutra_Cell1, GERAN, false, true); + + v_Meas := cs_RRCConnectionReconfiguration_SRVCC_GERAN(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_GERAN_ARFCN_f11, + v_BandIndicatorGERAN_Cell24, + f_ConvertGERANNeighCell (v_GERANSysInfof12.Geran[0].Arfcn, v_GERANSysInfof13.Geran[0]. Arfcn)); + + v_Meas.message_.c1.rrcConnectionReconfiguration.criticalExtensions.c1.rrcConnectionReconfiguration_r8.measConfig.reportConfigToAddModList[0].reportConfig.reportConfigInterRAT.triggerType.event.eventId.eventB2.b2_Threshold1.threshold_RSRP := (-90 + 140); // @sic R5s140697 sic@ + v_Meas.message_.c1.rrcConnectionReconfiguration.criticalExtensions.c1.rrcConnectionReconfiguration_r8.measConfig.reportConfigToAddModList[0].reportConfig.reportConfigInterRAT.triggerType.event.eventId.eventB2.b2_Threshold2.b2_Threshold2GERAN := (-100 + 110); // @sic R5s140697 sic@ + + // @siclog "Step 15" siclog@ + // The SS transmits an RRCConnectionReconfiguration message on Cell 1 to setup inter RAT measurement and reporting for event B2. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + v_Meas)); + // @siclog "Step 16" siclog@ + // The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + + // @siclog "Step 17" siclog@ + // The SS changes the power level for Cell 1 and Cell 24 according to the row "T1" in table 13.4.3.7.3.2-1 + f_IRAT_SendCoOrd(GERAN, cms_IRAT_Trigger); + f_EUTRA_SetCellPower(eutra_Cell1, -100); + + // @siclog "Step 18" siclog@ + // The UE transmits a MeasurementReport message on Cell 1 to report event B2 for Cell 24. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, + cr_MeasurementReport_Geran_1Entry(1, v_GERAN_PhysChId_Cell24))); + //nas-securityParamFromEUTRA is the 4 least significant bits of the NAS downlink COUNT value according to Table 13.1.4.3.3-6 + v_NasCountDL := f_EUTRA_SS_NAS_CountGetDLNext(); + v_Nas_SecurityParamFromEUTRA := substr(v_NasCountDL, 3, 1); + + // @siclog "Step 20" siclog@ + // The SS transmits a NOTIFICATION message + SRB.send(cas_SRB1_NasPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_Notification(tsc_EpsDefaultBearerId)))); + + // now tell IMS PTC to take over + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); + //Wait Trigger from IMS PTC + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); + // If we get here, the parallel behaviour on the IMS PTC must have completed successfully + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 21"); + + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); + // If we get here, the parallel behaviour on the IMS PTC must have completed successfully + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 24"); + + f_IRAT_SendCoOrd(GERAN, cms_IRAT_Trigger); + } // function fl_TC_13_4_3_22_Body + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.23 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_23_EUTRA() runs on EUTRA_PTC + { // Inter-system mobility / E-UTRA voice to GSM CS voice / bSRVCC / MO call / SRVCC HO Failure + + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c5); // @sic R5s140737 subject to prose CR approval sic@ + + // Create cell and send out system information + f_EUTRA_CellConfig_DefPlusUM_RoHC(eutra_Cell1); + f_EUTRA_Preamble (eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_SetCellPower(eutra_Cell1, -85); + + f_EUTRA_TestBody_Set(true); + + fl_TC_13_4_3_23_Body(); + + // Postamble + f_EUTRA_TestBody_Set(false); + f_EUTRA_Postamble(eutra_Cell1, E2_CONNECTED); + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); + } // function f_TC_13_4_3_23_EUTRA + + /* + * @desc test body of TC_13_4_3_23 + * @status APPROVED (LTE_A) + */ + function fl_TC_13_4_3_23_Body() runs on EUTRA_PTC + { + var IRAT_CoOrd_SysInfo_Type v_GERANSysInfo; + var IRAT_CoOrd_SysInfo_Type v_GERANSysInfof12; + var IRAT_CoOrd_SysInfo_Type v_GERANSysInfof13; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var Frequency_IE_Type v_Frequency_IE_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs (eutra_Cell1); + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell1:= f_EUTRA_BandDependentParam(v_Frequency_IE_Cell1.DL_ChBandwidth, v_Frequency_IE_Cell1.UL_ChBandwidth); + var ARFCN_ValueGERAN v_GERAN_ARFCN_Tch; + var ARFCN_ValueGERAN v_GERAN_ARFCN_f11; + var PhysCellIdGERAN v_GERAN_PhysChId_Cell24; + var BandIndicatorGERAN v_BandIndicatorGERAN_Cell24; + var octetstring v_HandoverToGeranCommand; + var octetstring v_Nas_SecurityParamFromEUTRA; + var NasCount_Type v_NasCountDL; + var ShortMAC_I v_ShortMAC_I; + var NextHopChainingCount v_NextHopChainingCount := 0; + var PhysCellId v_PhysicalCellIdentity_Cell1:= f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell1);//Get cell specific parameters for Cell 1 + var EUTRA_SecurityParams_Type v_AuthParams; + var template (value) DL_DCCH_Message v_Meas; + var template RRCConnectionReestablishmentComplete_v920_IEs v_ReestCompleteExt := cr_RRCConnectionReestablishmentComplete_v920_IEs(cr_RRCConnectionReestablishmentComplete_v8a0_IEsAny ifpresent); + + if (f_EUTRA_MobileInfo_GetUECapability_AccessStratumRelease() == rel8 or f_EUTRA_MobileInfo_GetUECapability_AccessStratumRelease() == rel9) { // @sic R5s140699 sic@ + v_ReestCompleteExt := cr_RRCConnectionReestablishmentComplete_v920_IEs(cr_RRCConnectionReestablishmentComplete_v8a0_IEsAny ifpresent) ifpresent; + } + + //Coordinate with GERAN component to receive GERAN frequencies + v_GERANSysInfo := f_IRAT_WaitForCoOrd_SysInfo (GERAN); + v_GERANSysInfof12 := f_IRAT_WaitForCoOrd_SysInfo (GERAN); + v_GERANSysInfof13 := f_IRAT_WaitForCoOrd_SysInfo (GERAN); + + v_GERAN_ARFCN_f11 := v_GERANSysInfo.Geran[0].Arfcn; + v_GERAN_ARFCN_Tch := v_GERANSysInfo.Geran[0].TCHArfcn; + v_GERAN_PhysChId_Cell24 := { + networkColourCode := v_GERANSysInfo.Geran[0].Ncc, + baseStationColourCode := v_GERANSysInfo.Geran[0].Bcc + } + + if (v_GERANSysInfo.Geran[0].BandIndicator == '0'B) { + v_BandIndicatorGERAN_Cell24 := dcs1800; + } + else { + v_BandIndicatorGERAN_Cell24 := pcs1900; + } + v_HandoverToGeranCommand := f_G_EncodeHandoverToGERAN_FH_NonHopping(v_GERAN_ARFCN_f11, + v_GERAN_ARFCN_Tch, + v_GERAN_PhysChId_Cell24.networkColourCode, + v_GERAN_PhysChId_Cell24.baseStationColourCode, + true); + // @siclog "Step 1" siclog@ + // The SS configures Geran cell to reference configuration . + f_IRAT_SendCoOrd(GERAN, cms_IRAT_Trigger); + + // @siclog "Steps 2-12" siclog@ + /* Steps 1 to 12 of the generic test procedure for + * IMS MO speech call (TS 36.508 4.5A.6.3-1). + */ + f_EUTRA_GenericIMS_MO_SpeechCallInitiation(eutra_Cell1); + + // @siclog "Step 13" siclog@ + f_EUTRA_RRCConnectionReconfigurationWithPiggyNAS_DrbReconfig(eutra_Cell1, + tsc_RRC_TI_Def, + {tsc_DRB2}, + {cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_508_ActDedicatedEPSBearerCxtReq(tsc_EpsDedicatedBearerId, + tsc_PTI_Unassigned, + cs_LinkedId(hex2bit(tsc_EpsDefaultBearerId)), + cds_EPS_QoS_Dedicated_4, // @sic R5s140590 sic@ + f_EUTRA_Get_508_TrafficFlowTemplate(4, tsc_EpsDedicatedBearerId)))}, // @sic R5s140590 sic@ + UM_Mode); + + //@siclog "Step 14" siclog@ + SRB.receive(car_SRB2_NasPdu_IND(eutra_Cell1, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_ActDedicatedEPSBearerCxtAccept(tsc_EpsDedicatedBearerId)))); + //Wait for completion of IMS signalling + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); + + f_EUTRA_SendAuthParameters (eutra_Cell1, GERAN, false, true); + + // @siclog "Step 15" siclog@ + // The SS transmits an RRCConnectionReconfiguration message on Cell 1 to setup inter RAT measurement and reporting for event B2. + v_Meas := cs_RRCConnectionReconfiguration_SRVCC_GERAN(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_GERAN_ARFCN_f11, + v_BandIndicatorGERAN_Cell24, + f_ConvertGERANNeighCell (v_GERANSysInfof12.Geran[0].Arfcn, v_GERANSysInfof13.Geran[0]. Arfcn)); + v_Meas.message_.c1.rrcConnectionReconfiguration.criticalExtensions.c1.rrcConnectionReconfiguration_r8.measConfig.reportConfigToAddModList[0].reportConfig.reportConfigInterRAT.triggerType.event.eventId.eventB2.b2_Threshold1.threshold_RSRP := (-90 + 140); // @sic R5s140697 sic@ + v_Meas.message_.c1.rrcConnectionReconfiguration.criticalExtensions.c1.rrcConnectionReconfiguration_r8.measConfig.reportConfigToAddModList[0].reportConfig.reportConfigInterRAT.triggerType.event.eventId.eventB2.b2_Threshold2.b2_Threshold2GERAN := (-100 + 110); // @sic R5s140697 sic@ + + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + v_Meas)); + // @siclog "Step 16" siclog@ + // The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + + // @siclog "Step 17" siclog@ + // The SS changes the power level for Cell 1 and Cell 24 according to the row "T1" in table 13.4.3.7.3.2-1 + f_IRAT_SendCoOrd(GERAN, cms_IRAT_Trigger); + f_EUTRA_SetCellPower(eutra_Cell1, -100); + + // @siclog "Step 18" siclog@ + // The UE transmits a MeasurementReport message on Cell 1 to report event B2 for Cell 24. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, + cr_MeasurementReport_Geran_1Entry(1, v_GERAN_PhysChId_Cell24))); + //nas-securityParamFromEUTRA is the 4 least significant bits of the NAS downlink COUNT value according to Table 13.1.4.3.3-6 + v_NasCountDL := f_EUTRA_SS_NAS_CountGetDLNext(); + v_Nas_SecurityParamFromEUTRA := substr(v_NasCountDL, 3, 1); + + //@siclog "Step 19" siclog@ + // Turn GERAN cell off + f_IRAT_SendCoOrd(GERAN, cms_IRAT_Trigger); + f_IRAT_WaitForCoOrd_Trigger(GERAN); // @sic R5s140737 sic@ + f_EUTRA_SetCellPower(eutra_Cell1, -85); // @sic R5s140737 sic@ + + // @siclog "Step 20" siclog@ + // The SS transmits a MobilityFromEUTRACommand message on Cell 1. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_MobilityFromEutraCommand_Handover(tsc_RRC_TI_Def, + false,//@sic R5-142880 sic@ + geran, + v_HandoverToGeranCommand, + v_Nas_SecurityParamFromEUTRA, + omit, + cs_MobilityFromEUTRACommand_v8a0_IEs(v_BandIndicatorGERAN_Cell24)))); + + f_EUTRA_SS_SRBs_DRBs_Reset_StopULGrant_noPUCCHSync_PDCP_CountMaintian ( eutra_Cell1, -,-, 100 ); + v_ShortMAC_I := f_Calculate_ShortMAC(eutra_Cell1, eutra_Cell1); + f_EUTRA_SS_ConfigRachProcedure_Def(eutra_Cell1, tsc_C_RNTI_Def); + + // @siclog "Step 21" siclog@ + // The UE transmits an RRCConnectionReestablishmentRequest on Cell 1. + SRB.receive(car_SRB0_RrcPdu_IND(eutra_Cell1, + cr_508_RRCConnectionReestablishmentRequest(tsc_C_RNTI_Def, + v_PhysicalCellIdentity_Cell1, + cr_ReestablishmentCause_HandoverFailure, // @sic R5s140737 subject to prose CR approval sic@ + v_ShortMAC_I))); + + // Activate RRC security at SS target cell for SRB 1, 2 and 1 AM DRB + v_AuthParams := f_EUTRA_SS_AS_ActivateSecurity_HO_Reest(eutra_Cell1, f_EUTRA_Security_Get(), v_NextHopChainingCount); + f_EUTRA_Security_Set(v_AuthParams); + + // @siclog "Step 22" siclog@ + // The SS transmits an RRCConnectionReestablishment message on Cell 1. + f_EUTRA_RRC_RRCConnectionReestablishment_Def(eutra_Cell1, -, v_NextHopChainingCount); + + // @siclog "Step 23" siclog@ + // The UE transmits an RRCConnectionReestablishmentComplete on Cell 1 + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionReestablishmentComplete(tsc_RRC_TI_Def, v_ReestCompleteExt))); // @sic R5s140737 subject to prose CR approval sic@ + + //The SS transmits an RRCConnectionReconfiguration message on Cell 1. + //The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + // @siclog "Step 24-25" siclog@ + f_EUTRA_RRC_RRCConnectionReconfiguration_Resume_SRB2_DRBs(eutra_Cell1, tsc_RRC_TI_Def); + // @siclog "Step 1 of parallel behaviour" siclog@ + f_IMS_IPCAN_SendCoOrdMsg(IMS[tsc_Index_PDN1]); + + //Wait Trigger from IMS PTC + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); + // If we get here, the parallel behaviour on the IMS PTC must have completed successfully + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Parallel Behaviour Step 1"); + + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); + } // function fl_TC_13_4_3_23_Body + +} diff --git a/LTE_A_IWD_14wk37/LTE_A/13/BSRVCC_EUTRA_GERAN.ttcn b/LTE_A_IWD_14wk37/LTE_A/13/BSRVCC_EUTRA_GERAN.ttcn new file mode 100644 index 0000000..de62947 --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/13/BSRVCC_EUTRA_GERAN.ttcn @@ -0,0 +1,156 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-07 18:37:49 +0200 (Sun, 07 Sep 2014) $ +// $Rev: 12081 $ +/******************************************************************************/ + +module BSRVCC_EUTRA_GERAN +{ + import from GERAN_Component all; + import from GERAN_Templates all; + import from GERAN_TypeDefs all; + import from GERAN_CommonFunctions all; + import from GERAN_CellInfo all; + import from CommonDefs all; + import from CommonIratDefs all; + + /////////////////////////////////////////////////////////////////// + // Functions + /////////////////////////////////////////////////////////////////// + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.21 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_21_GERAN() runs on GERAN_PTC + { // Inter-system mobility / E-UTRA PS voice to GSM CS voice / bSRVCC / MO call + + var G_LogicChType v_TchType; + + //Initialise cell info and configure cell 24 + f_GERAN_Init(EUTRA_GERAN); + + f_GERAN_Send_IR_SysInfoToEUTRA(geran_Cell24); + f_GERAN_Send_IR_SysInfoToEUTRA(geran_Cell25); + f_GERAN_Send_IR_SysInfoToEUTRA(geran_Cell26); + + f_GERAN_CreateCell (geran_Cell24); + + //Set cell power according to "T0" + f_IRAT_WaitForCoOrd_Trigger (EUTRA); + f_GERAN_SetCellPowerLevel (geran_Cell24, -85); + + f_GERAN_TestBody_Set(true); + + //Receive updated auth parameters + f_GERAN_InterRAT_InitialiseAuthParams(); + + //Create the physical channel in GERAN cell + f_GERAN_CreateTCH (geran_Cell24); + + //Set cell power according to "T1" + f_IRAT_WaitForCoOrd_Trigger (EUTRA); + f_GERAN_SetCellPowerLevel (geran_Cell24, -65); + f_GERAN_SetChPwrLevel (geran_Cell24, tsc_TchCh, -65); + + // @siclog "Step 20" siclog@ + f_GERAN_CSHOAccessAndPhysicalInformation (geran_Cell24, "Step 20"); + + //@siclog "Step 21-26" siclog@ + v_TchType := f_TMSI_Relocation_AndConnect(geran_Cell24, true, true); + f_GERAN_PreliminaryPass (__FILE__, __LINE__, "Step 26"); + + //@siclog "Step 21-41" siclog@ + f_GERAN_CC_Disconnect ( geran_Cell24, v_TchType ); + f_G_ChannelRelease (geran_Cell24, tsc_TchCh, v_TchType, 15); // @sic R5s140747 sic@ + f_GERAN_508CheckCampOnNewGeranCell (geran_Cell24, false, -, -, true); // @sic R5s140747 subject to prose CR approval sic@ + + f_GERAN_TestBody_Set(false); + f_IRAT_SendCoOrd (EUTRA, cms_IRAT_Trigger); + //Perform postamble + f_GERAN_Postamble(geran_Cell24, G1_IDLE, -, -, v_TchType); + } // end of 13.4.3.21 + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.22 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_22_GERAN() runs on GERAN_PTC + { // Inter-system mobility / E-UTRA PS voice to GSM CS voice / bSRVCC / MO call / SRVCC HO cancelled + + //Initialise cell info and configure cell 24 + f_GERAN_Init(EUTRA_GERAN); + + f_GERAN_Send_IR_SysInfoToEUTRA(geran_Cell24); + f_GERAN_Send_IR_SysInfoToEUTRA(geran_Cell25); + f_GERAN_Send_IR_SysInfoToEUTRA(geran_Cell26); + + f_GERAN_CreateCell (geran_Cell24); + + //Set cell power according to "T0" + f_IRAT_WaitForCoOrd_Trigger (EUTRA); + f_GERAN_SetCellPowerLevel (geran_Cell24, -85); + + f_GERAN_TestBody_Set(true); + + //Receive updated auth parameters + f_GERAN_InterRAT_InitialiseAuthParams(); + + //Set cell power according to "T1" + f_IRAT_WaitForCoOrd_Trigger (EUTRA); + f_GERAN_SetCellPowerLevel (geran_Cell24, -65); + + f_IRAT_WaitForCoOrd_Trigger (EUTRA); + // End of the test for GERAN + f_GERAN_TestBody_Set(false); + + //Perform postamble + f_GERAN_SS_CellRelease (geran_Cell24); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.23 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_23_GERAN() runs on GERAN_PTC + { // Inter-system mobility / E-UTRA voice to GSM CS voice / bSRVCC / MO call / SRVCC HO Failure + + //Initialise cell info and configure cell 24 + f_GERAN_Init(EUTRA_GERAN); + + f_GERAN_Send_IR_SysInfoToEUTRA(geran_Cell24); + f_GERAN_Send_IR_SysInfoToEUTRA(geran_Cell25); + f_GERAN_Send_IR_SysInfoToEUTRA(geran_Cell26); + + f_GERAN_CreateCell (geran_Cell24); + + //Set cell power according to "T0" + f_IRAT_WaitForCoOrd_Trigger (EUTRA); + f_GERAN_SetCellPowerLevel (geran_Cell24, -85); + + f_GERAN_TestBody_Set(true); + + //Receive updated auth parameters + f_GERAN_InterRAT_InitialiseAuthParams(); + + //Set cell power according to "T1" + f_IRAT_WaitForCoOrd_Trigger (EUTRA); + f_GERAN_SetCellPowerLevel (geran_Cell24, -65); + + f_IRAT_WaitForCoOrd_Trigger (EUTRA); + //Set cell power according to "T2" + f_GERAN_SetCellPowerLevel (geran_Cell24, tsc_GERAN_ChPwrLvl_Off); + f_IRAT_SendCoOrd (EUTRA, cms_IRAT_Trigger); // @sic R5s140737 sic@ + + // End of the test for GERAN + f_GERAN_TestBody_Set(false); + + //Perform postamble + f_GERAN_SS_CellRelease (geran_Cell24); + } + +} diff --git a/LTE_A_IWD_14wk37/LTE_A/13/BSRVCC_EUTRA_IMS.ttcn b/LTE_A_IWD_14wk37/LTE_A/13/BSRVCC_EUTRA_IMS.ttcn new file mode 100644 index 0000000..5b7ba30 --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/13/BSRVCC_EUTRA_IMS.ttcn @@ -0,0 +1,263 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-07 18:37:49 +0200 (Sun, 07 Sep 2014) $ +// $Rev: 12081 $ +/******************************************************************************/ + +module BSRVCC_EUTRA_IMS { + + import from IMS_Component all; + import from LibSip_SIPTypesAndValues all; + import from IMS_PTC_CoordMsg all; + import from IMS_Procedures_Registration all; + import from IMS_Procedures_CallControl all; + import from UpperTesterFunctions all; + import from IMS_CommonParameters all; + import from IMS_CommonSRVCC all; + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.18 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_18_IMS1 ()runs on IMS_PTC + { /* Inter-system mobility / E-UTRA PS voice + PS data to UTRA CS voice + PS data / bSRVCC / MO call */ + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: IMS_InviteRequestWithSdp_Type instead of IMS_DATA_REQ */ + var MessageHeader v_MessageHeader_Response183; + + f_IMS_PTC_Init(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + f_IMS_Registration(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + + f_IMS_IPCAN_WaitForTrigger(IPCAN); + f_UT_RequestIMSCall(MMI, px_IMS_CalleeUri); + + /* Table 13.4.3.18.3.2-3: Parallel behaviour + Steps 5-8 expected sequence defined in annex C.21 of TS 34.229-1 [35]. + NOTE: IMS MO speech call is in pre-alerting phase. + */ + v_InviteRequestWithSdp := f_IMS_MOCallSetup_AnnexC21_Step2_A4(); + + f_IMS_IPCAN_WaitForTrigger(IPCAN); + v_MessageHeader_Response183 := f_IMS_MOCallSetup_AnnexC21_Step3_4(v_InviteRequestWithSdp); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140572 sic@ + + f_IMS_MOCallSetup_AnnexC21_Steps5_8(v_InviteRequestWithSdp, v_MessageHeader_Response183); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // Inform EUTRA that IMS signalling up to Annex C21 Step 8 has been completed. + + f_IMS_PTC_SetRanType(UTRAN_FDD); + f_IMS_IpcanReleaseWithOptionalDeregistrationOtherIPCAN(); // @sic R5-142919 sic@ + } // f_TC_13_4_3_18_IMS1 + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.19 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_19_IMS1 ()runs on IMS_PTC + { /* Inter-system mobility / E-UTRA PS voice + PS data to UTRA CS voice + PS data / bSRVCC / MO call / SRVCC HO cancelled */ + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: IMS_InviteRequestWithSdp_Type instead of IMS_DATA_REQ */ + var MessageHeader v_MessageHeader_Response183; + + f_IMS_PTC_Init(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + f_IMS_Registration(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + + f_IMS_IPCAN_WaitForTrigger(IPCAN); + f_UT_RequestIMSCall(MMI, px_IMS_CalleeUri); + + /* Table 13.4.3.19.3.2-3: Parallel behaviour + Steps 5-8 expected sequence defined in annex C.21 of TS 34.229-1 [35]. + NOTE: IMS MO speech call is in pre-alerting phase. + */ + v_InviteRequestWithSdp := f_IMS_MOCallSetup_AnnexC21_Step2_A4(); + + f_IMS_IPCAN_WaitForTrigger(IPCAN); + v_MessageHeader_Response183 := f_IMS_MOCallSetup_AnnexC21_Step3_4(v_InviteRequestWithSdp); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140572 sic@ + + f_IMS_IPCAN_WaitForTrigger(IPCAN); // prose says this will be in parallel to steps 16 & 17 + f_IMS_MOCallSetup_AnnexC21_Steps5_8(v_InviteRequestWithSdp, v_MessageHeader_Response183); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // Inform EUTRA that IMS signalling up to Annex C21 Step 8 has been completed. + + // Steps 21 and 22 + f_IMS_IPCAN_WaitForTrigger(IPCAN); + f_IMS_SRVCC_AnnexC28(v_InviteRequestWithSdp.Invite, v_MessageHeader_Response183); // @sic R5s140750 sic@ + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // Send trigger so EUTRA PTC can set pass verdict + + // Steps 23 and 24 + f_IMS_MOCallSetup_AnnexC21C25_Step9_11(v_InviteRequestWithSdp); // @sic R5s140750 subject to prose CR approval sic@ + f_IMS_MOCallSetup_AnnexC21C25_Step12_13(v_InviteRequestWithSdp); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + f_IMS_IpcanReleaseWithOptionalDeregistration(); + } // f_TC_13_4_3_19_IMS1 + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.20 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_20_IMS1 ()runs on IMS_PTC + { /* Inter-system mobility / E-UTRA PS voice + PS data to UTRA CS voice + PS data / bSRVCC / MO call / SRVCC HO failure */ + + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: IMS_InviteRequestWithSdp_Type instead of IMS_DATA_REQ */ + var MessageHeader v_MessageHeader_Response183; + + f_IMS_PTC_Init(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + f_IMS_Registration(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + + f_IMS_IPCAN_WaitForTrigger(IPCAN); + f_UT_RequestIMSCall(MMI, px_IMS_CalleeUri); // @sic R5-134290 sic@ + + /* Table 13.4.3.20.3.2-3: Parallel behaviour + Steps 5-11 expected sequence defined in annex C.21 of TS 34.229-1 [35]. + NOTE: IMS MO speech call is in alerting phase. + */ + v_InviteRequestWithSdp := f_IMS_MOCallSetup_AnnexC21_Step2_A4(); + + f_IMS_IPCAN_WaitForTrigger(IPCAN); + v_MessageHeader_Response183 := f_IMS_MOCallSetup_AnnexC21_Step3_4(v_InviteRequestWithSdp); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140572 sic@ + + f_IMS_MOCallSetup_AnnexC21_Steps5_8(v_InviteRequestWithSdp, v_MessageHeader_Response183); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // Inform EUTRA that IMS signalling up to Annex C21 Step 8 has been completed. + + //Parallel behaviour Table 13.4.3.20.3.2-4 + f_IMS_IPCAN_WaitForTrigger(IPCAN); + f_IMS_SRVCC_AnnexC28(v_InviteRequestWithSdp.Invite, v_MessageHeader_Response183); + + //@siclog "Steps 29 and 30" siclog@ + f_IMS_MOCallSetup_AnnexC21C25_Step9_11(v_InviteRequestWithSdp); // @sic R5s140735 subject to prose CR approval sic@ + f_IMS_MOCallSetup_AnnexC21C25_Step12_13(v_InviteRequestWithSdp); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + + f_IMS_IpcanReleaseWithOptionalDeregistration(); + } // f_TC_13_4_3_20_IMS1 + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.21 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_21_IMS1 ()runs on IMS_PTC + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: IMS_InviteRequestWithSdp_Type instead of IMS_DATA_REQ */ + var MessageHeader v_MessageHeader_Response183; + + f_IMS_PTC_Init(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + f_IMS_Registration(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + + //Wait for Co-ordination message from EUTRA + f_IMS_IPCAN_WaitForTrigger(IPCAN); + + // Step 1 + f_UT_RequestIMSCall(MMI, px_IMS_CalleeUri); + + // Parallel behaviour + v_InviteRequestWithSdp := f_IMS_MOCallSetup_AnnexC21_Step2_A4(); + + f_IMS_IPCAN_WaitForTrigger(IPCAN); + // Steps 9 -11 + v_MessageHeader_Response183 := f_IMS_MOCallSetup_AnnexC21_Step3_4(v_InviteRequestWithSdp); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140572 sic@ + + f_IMS_MOCallSetup_AnnexC21_Steps5_8(v_InviteRequestWithSdp, v_MessageHeader_Response183); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + + } // f_TC_13_4_3_21_IMS1 + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.22 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_22_IMS1() runs on IMS_PTC + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: IMS_InviteRequestWithSdp_Type instead of IMS_DATA_REQ */ + var MessageHeader v_MessageHeader_Response183; + + f_IMS_PTC_Init(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + f_IMS_Registration(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + + //Wait for Co-ordination message from EUTRA + f_IMS_IPCAN_WaitForTrigger(IPCAN); + + // Step 1 + f_UT_RequestIMSCall(MMI, px_IMS_CalleeUri); + + // Parallel behaviour + v_InviteRequestWithSdp := f_IMS_MOCallSetup_AnnexC21_Step2_A4(); + + f_IMS_IPCAN_WaitForTrigger(IPCAN); + v_MessageHeader_Response183 := f_IMS_MOCallSetup_AnnexC21_Step3_4(v_InviteRequestWithSdp); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140572 sic@ + + f_IMS_MOCallSetup_AnnexC21_Steps5_8(v_InviteRequestWithSdp, v_MessageHeader_Response183); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + + /* Expected sequence defined in annex C.28 of TS 34.229-1 + * Generic test procedure for SIP UPDATE after aSRVCC handover failure/cancelled + */ + f_IMS_IPCAN_WaitForTrigger(IPCAN); + + // @siclog "Steps 21-22" siclog@ + f_IMS_SRVCC_AnnexC28(v_InviteRequestWithSdp.Invite, v_MessageHeader_Response183); + // Send trigger to EUTRA PTC to set pass verdict at step 21 + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + + // @siclog "Steps 23-24" siclog@ + f_IMS_MOCallSetup_AnnexC21C25_Step9_11(v_InviteRequestWithSdp); // @sic R5s140752 subject to prose CR approval sic@ + f_IMS_MOCallSetup_AnnexC21C25_Step12_13(v_InviteRequestWithSdp); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + f_IMS_IpcanReleaseWithOptionalDeregistration(); + } // f_TC_13_4_3_22_IMS1 + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.23 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_23_IMS1 ()runs on IMS_PTC + { + var IMS_InviteRequestWithSdp_Type v_InviteRequestWithSdp; /* @sic R5w140112: IMS_InviteRequestWithSdp_Type instead of IMS_DATA_REQ */ + var MessageHeader v_MessageHeader_Response183; + + f_IMS_PTC_Init(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + f_IMS_Registration(); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140587 sic@ + + //Wait for Co-ordination message from EUTRA + f_IMS_IPCAN_WaitForTrigger(IPCAN); + + // Step 1 + f_UT_RequestIMSCall(MMI, px_IMS_CalleeUri); + + // Parallel behaviour + v_InviteRequestWithSdp := f_IMS_MOCallSetup_AnnexC21_Step2_A4(); + + f_IMS_IPCAN_WaitForTrigger(IPCAN); + v_MessageHeader_Response183 := f_IMS_MOCallSetup_AnnexC21_Step3_4(v_InviteRequestWithSdp); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); // @sic R5s140572 sic@ + + f_IMS_MOCallSetup_AnnexC21_Steps5_8(v_InviteRequestWithSdp, v_MessageHeader_Response183); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + + f_IMS_IPCAN_WaitForTrigger(IPCAN); + f_IMS_SRVCC_AnnexC28(v_InviteRequestWithSdp.Invite, v_MessageHeader_Response183); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + + f_IMS_MOCallSetup_AnnexC21C25_Step9_11(v_InviteRequestWithSdp); // @sic R5s140737 subject to prose CR approval sic@ + f_IMS_MOCallSetup_AnnexC21C25_Step12_13(v_InviteRequestWithSdp); + f_IMS_IPCAN_SendCoOrdMsg(IPCAN); + f_IMS_IpcanReleaseWithOptionalDeregistration(); + } // f_TC_13_4_3_23_IMS1 + +} diff --git a/LTE_A_IWD_14wk37/LTE_A/13/BSRVCC_EUTRA_UTRAN.ttcn b/LTE_A_IWD_14wk37/LTE_A/13/BSRVCC_EUTRA_UTRAN.ttcn new file mode 100644 index 0000000..807b662 --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/13/BSRVCC_EUTRA_UTRAN.ttcn @@ -0,0 +1,226 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-07 18:37:49 +0200 (Sun, 07 Sep 2014) $ +// $Rev: 12081 $ +/******************************************************************************/ + +module BSRVCC_EUTRA_UTRAN { + + import from CommonIratDefs all; + import from CommonDefs all; + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_ASP_Definitions language "ASN.1:2002" all; + import from UTRAN_Component all; + import from UTRAN_CommonFunctions all; + import from UTRAN_CommonProcedures all; + import from UTRAN_TTCN_ASP_Templates all; + import from UTRAN_CommonDefs all; + import from UTRAN_RAB_Functions all; + import from UTRAN_TypeDefs all; + import from UTRAN_ConfigurationSteps all; + import from UTRAN_CellInfo all; + import from UTRAN_NAS_PDU_Templates all; + import from NAS_CommonTypeDefs all; + + //---------------------------------------------------------------------- + // Test cases + //---------------------------------------------------------------------- + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.18 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_18_UTRAN() runs on UTRAN_PTC + { /* @desc Inter-system mobility / E-UTRA PS voice + PS data to UTRA CS voice + PS data / bSRVCC / MO call */ + var integer v_T0_CPICH_Cell5; + var integer v_T1_CPICH_Cell5; + var integer v_T0_PCCPCH_Cell5; + var integer v_T1_PCCPCH_Cell5; + var TI v_TI_R; + var TI v_TI_S; + + v_T0_CPICH_Cell5 := -88; + v_T1_CPICH_Cell5 := -64; + v_T0_PCCPCH_Cell5 := -88; + v_T1_PCCPCH_Cell5 := -64; + + // Initialise all cells + f_UTRAN_Init(EUTRA_UTRAN); + + // Create and configure Cell 5 + // Cell started switched on with default power level, -60 and max attenuation + f_UTRAN_SS_CreateCellDCH(utran_Cell5); + + // Start sending System Information + f_UTRAN_SendDefSysInfo(utran_Cell5); + + // Send relevant UTRAN cell info to EUTRA PTC + f_UTRAN_Send_IR_SysInfoToEUTRA(utran_Cell5); + f_UTRAN_TestBody_Set(true); + + //@siclog "Step 1" siclog@ + f_SS_Config_ConvSpeech_64kPS_RAB(utran_Cell5); + + // wait for trigger from EUTRAN side + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + // Set Cell Power level as per T0 + f_UTRAN_SetCellPower(utran_Cell5, v_T0_CPICH_Cell5, v_T0_PCCPCH_Cell5); + + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + //@siclog "Step 18" siclog@ + // Set Cell Power level as per T1 + f_UTRAN_SetCellPower(utran_Cell5, v_T1_CPICH_Cell5, v_T1_PCCPCH_Cell5); + + // UE starts registered in EUTRA, wait its Auth Params + f_UTRAN_InterRAT_InitialiseAuthParams(); + // Set up the ciphering ready for when the UE hands over + f_UTRAN_ConfigureCipheringBeforeHO_SRVCC(utran_Cell5); // ToDo Cs domain + f_UTRAN_IP_Handling_Change_Configuration(utran_CellDedicated, cell_DCH_64kPS_RAB_SRB); // @sic R5s140572 sic@ + + f_IRAT_SendCoOrd(EUTRA, cms_IRAT_Trigger); // Tell SS to transmit a MobilityFromEUTRACommand message + + //@siclog "Step 23-33" siclog@ + f_UTRAN_SRVCC_WithHandover(utran_Cell5, -, true); //@sic R5s140733 sic@ + + v_TI_S := {tiFlag := '0'B, tiVal := '000'B}; + v_TI_R := {tiFlag := '1'B, tiVal := '000'B}; + + //@siclog "Step 34" siclog@ + // The SS transmits an Alerting message + U_Dc.send(cas_DataReq_CS(utran_CellDedicated, + tsc_RB3, + cs_U_Alert(v_TI_S))); + + //@siclog "Step 35" siclog@ + // The SS transmits a Connect message + U_Dc.send(cas_DataReq_CS(utran_CellDedicated, + tsc_RB3, + cs_U_Connect(v_TI_S))); + + //@siclog "Step 36" siclog@ + //Receive Connect Acknowledge message + U_Dc.receive(car_UplinkDirectTransfer(utran_CellDedicated, + tsc_RB3, + cr_U_ConnAck(v_TI_R))); + f_UTRAN_PreliminaryPass(__FILE__, __LINE__, "Step 36"); + + f_UTRAN_TestBody_Set(false); + + f_IRAT_SendCoOrd(EUTRA, cms_IRAT_Trigger); // Tell to EUTRA PTC Test case is now finished on E-UTRA side + + // Switch off UE and release cell + f_UTRAN_Postamble(utran_Cell5, U5_CSCALL, -, v_TI_S); + } // f_TC_13_4_3_18_UTRAN + + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.19 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_19_UTRAN() runs on UTRAN_PTC + { /* Inter-system mobility / E-UTRA PS voice + PS data to UTRA CS voice + PS data / bSRVCC / MO call / SRVCC HO cancelled */ + var integer v_T0_CPICH_Cell5; + var integer v_T1_CPICH_Cell5; + var integer v_T0_PCCPCH_Cell5; + var integer v_T1_PCCPCH_Cell5; + + v_T0_CPICH_Cell5 := -88; + v_T1_CPICH_Cell5 := -64; + v_T0_PCCPCH_Cell5 := -88; + v_T1_PCCPCH_Cell5 := -64; + + // Initialise all cells + f_UTRAN_Init(EUTRA_UTRAN); + + // Create and configure Cell 5 + // Cell started switched on with default power level, -60 and max attenuation + f_UTRAN_SS_CreateCellDCH(utran_Cell5); + + // Start sending System Information + f_UTRAN_SendDefSysInfo(utran_Cell5); + + // Send relevant UTRAN cell info to EUTRA PTC + f_UTRAN_Send_IR_SysInfoToEUTRA(utran_Cell5); + f_UTRAN_TestBody_Set(true); + + // Step 1 + f_SS_Config_ConvSpeech_64kPS_RAB(utran_Cell5); + + // wait for trigger from EUTRAN side + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + // Set Cell Power level as per T0 + f_UTRAN_SetCellPower(utran_Cell5, v_T0_CPICH_Cell5, v_T0_PCCPCH_Cell5); + + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + //@siclog "Step 19" siclog@ + // Set Cell Power level as per T1 + f_UTRAN_SetCellPower(utran_Cell5, v_T1_CPICH_Cell5, v_T1_PCCPCH_Cell5); + + f_IRAT_WaitForCoOrd_Trigger(EUTRA); // Wait for EUTRA to complete + f_UTRAN_TestBody_Set(false); + f_UTRAN_ReleaseCell(utran_Cell5, f_UTRAN_CellInfo_GetConfigType(utran_Cell5)); + } // f_TC_13_4_3_19_UTRAN + + /* + * @desc REFERENCE TS 36.523-1 clause 13.4.3.20 + * @status APPROVED (LTE_A) + */ + function f_TC_13_4_3_20_UTRAN() runs on UTRAN_PTC + { /* Inter-system mobility / E-UTRA PS voice + PS data to UTRA CS voice + PS data / bSRVCC / MO call / SRVCC HO failure */ + var integer v_T0_CPICH_Cell5; + var integer v_T1_CPICH_Cell5; + var integer v_T0_PCCPCH_Cell5; + var integer v_T1_PCCPCH_Cell5; + + v_T0_CPICH_Cell5 := -88; + v_T1_CPICH_Cell5 := -64; + v_T0_PCCPCH_Cell5 := -88; + v_T1_PCCPCH_Cell5 := -64; + + // Initialise all cells + f_UTRAN_Init(EUTRA_UTRAN); + + // Create and configure Cell 5 + // Cell started switched on with default power level, -60 and max attenuation + f_UTRAN_SS_CreateCellDCH(utran_Cell5); + + // Start sending System Information + f_UTRAN_SendDefSysInfo(utran_Cell5); + + // Send relevant UTRAN cell info to EUTRA PTC + f_UTRAN_Send_IR_SysInfoToEUTRA(utran_Cell5); + f_UTRAN_TestBody_Set(true); + + // Step 1 + //Configure a dedicated channel in the UTRAN FDD with configuration + // according to 36.108 Table 4.8.3-1 condition UTRA Speech + f_SS_Config_ConvSpeech_RAB(utran_Cell5); + + // wait for trigger from EUTRAN side + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + // Set Cell Power level as per T0 + f_UTRAN_SetCellPower(utran_Cell5, v_T0_CPICH_Cell5, v_T0_PCCPCH_Cell5); + + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + //@siclog "Step 18" siclog@ + // Set Cell Power level as per T1 + f_UTRAN_SetCellPower(utran_Cell5, v_T1_CPICH_Cell5,v_T1_PCCPCH_Cell5); + + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + // Set Cell Power level as per T2 - Cell Off + //@siclog "Step 20" siclog@ + f_UTRAN_SetCellPower(utran_Cell5, v_T1_CPICH_Cell5, tsc_AttenuationCellOFF); + + //Tell EUTRA PTC to transmit Mobility command + //@sic R5s140735 sic@ + f_IRAT_SendCoOrd(EUTRA, cms_IRAT_Trigger); + + f_UTRAN_TestBody_Set(false); + f_UTRAN_ReleaseCell(utran_Cell5, f_UTRAN_CellInfo_GetConfigType(utran_Cell5)); + } // f_TC_13_4_3_20_UTRAN + +} diff --git a/LTE_A_IWD_14wk37/LTE_A/17/EUTRA_CellInfo_MBMS.ttcn b/LTE_A_IWD_14wk37/LTE_A/17/EUTRA_CellInfo_MBMS.ttcn new file mode 100644 index 0000000..8403815 --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/17/EUTRA_CellInfo_MBMS.ttcn @@ -0,0 +1,572 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-07-01 16:55:52 +0200 (Tue, 01 Jul 2014) $ +// $Rev: 11796 $ +/******************************************************************************/ + +module EUTRA_CellInfo_MBMS { + + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from CommonDefs all; + import from EUTRA_CellInfo all; + import from EUTRA_ASP_TypeDefs all; + + import from EUTRA_Component all; + + import from EUTRA_SysInfo_Templates all; + + import from EUTRA_BandDependentParam all; + import from EUTRA_CommonDefs all; + + //================================================================================================================= + // Constan definitions + //================================================================================================================= + const Pmch_InfoIndex_Type tsc_PMCH_InfoIndex_Def := 0; /* @status APPROVED (LTE_A) */ + const LogicalChannelIdentity_r9_Type tsc_MRB1_LCHId := 1; /* @status APPROVED (LTE_A) */ + const Mbsfn_AreaId_r9_Type tsc_Mbsfn_AreaId_Def := 0; /* @status APPROVED (LTE_A) */ + const Mbsfn_AreaId_r9_Type tsc_Mbsfn_AreaId_1 := 1; /* @status APPROVED (LTE_A) */ + const MBMS_SAI_r11 tsc_MBMS_SAI_Def := 1; /* @status APPROVED (LTE_A) */ + + //=================================================================================================================== + // TEMPLATES + //=================================================================================================================== + template (value) MBSFN_SubframeConfig cs_MBSFN_SubframeConfig(MBSFN_SubframeConfig.radioframeAllocationPeriod p_AllocationPeriod, + integer p_RadioframeAllocationOffset, + bitstring p_SubframeAllocation) := + { // Acc to Table 4.4.3.3-1: SystemInformationBlockType2 + /* @status APPROVED (LTE_A) */ + radioframeAllocationPeriod := p_AllocationPeriod, + radioframeAllocationOffset := p_RadioframeAllocationOffset, + subframeAllocation := { + oneFrame := p_SubframeAllocation + } + }; + + template (value) MBSFN_SubframeConfig cs_MBSFN_SubframeConfig_Def(integer p_RadioframeAllocationOffset, + bitstring p_SubframeAllocation) := + /* @status APPROVED (LTE_A) */ + cs_MBSFN_SubframeConfig(n4, p_RadioframeAllocationOffset, p_SubframeAllocation); + + + // SIB13 + template (value) SystemInformation_r8_IEs cs_SI_SIB13(template (value) SystemInformationBlockType13_r9 p_SystemInformationBlockType13) := + { /* @status APPROVED (LTE_A) */ + sib_TypeAndInfo := {{ sib13_v920 := p_SystemInformationBlockType13 }}, + nonCriticalExtension := omit + }; + + // SIB15 + template (value) SystemInformation_r8_IEs cs_SI_SIB15(template (value) SystemInformationBlockType15_r11 p_SystemInformationBlockType15) := + { /* @status APPROVED (LTE_A) */ + sib_TypeAndInfo := {{ sib15_v1130 := p_SystemInformationBlockType15 }}, + nonCriticalExtension := omit + }; + + template (value) MBSFN_AreaInfo_r9 cs_508_MBSFN_AreaInfo_Def(integer p_Mcch_Offset_r9, + bitstring p_Sf_AllocInfo_r9) := + { // from 36.508 Table 4.4.3.3-13: SystemInformationBlockType13 + /* @status APPROVED (LTE_A) */ + mbsfn_AreaId_r9 := tsc_Mbsfn_AreaId_Def, + non_MBSFNregionLength := s2, //@sic R5s140206 sic@ + notificationIndicator_r9 := 0, + mcch_Config_r9 := { + mcch_RepetitionPeriod_r9 := rf32, + mcch_Offset_r9 := p_Mcch_Offset_r9, + mcch_ModificationPeriod_r9 := rf512, + sf_AllocInfo_r9 := p_Sf_AllocInfo_r9, + signallingMCS_r9 := n2 + } + }; + + template (value) MBMS_NotificationConfig_r9 cs_508_MBMS_NotificationConfig_Def(integer p_NotificationOffset, + integer p_NotificationSF_Index_r9) := + { // from 36.508 Table 4.4.3.3-13: SystemInformationBlockType13 + /* @status APPROVED (LTE_A) */ + notificationRepetitionCoeff_r9 := n4, + notificationOffset_r9 := p_NotificationOffset, + notificationSF_Index_r9 := p_NotificationSF_Index_r9 + }; + + template (value) SystemInformationBlockType13_r9 cs_508_SystemInformationBlockType13_Def(integer p_Mcch_Offset_r9, + bitstring p_Sf_AllocInfo_r9, + integer p_NotificationOffset, + integer p_NotificationSF_Index_r9) := + { // from 36.508 Table 4.4.3.3-13: SystemInformationBlockType13 + /* @status APPROVED (LTE_A) */ + mbsfn_AreaInfoList_r9 := {cs_508_MBSFN_AreaInfo_Def(p_Mcch_Offset_r9, p_Sf_AllocInfo_r9 )}, + notificationConfig_r9 := cs_508_MBMS_NotificationConfig_Def(p_NotificationOffset, p_NotificationSF_Index_r9), + lateNonCriticalExtension := omit + }; + template (value) MBMS_SAI_InterFreq_r11 cs_508_MBMS_SAI_InterFreq_r11_Def ( ARFCN_ValueEUTRA_r9 p_Dl_CarrierFreq , + MBMS_SAI_r11 p_MBMS_SAI_r11):= + { + dl_CarrierFreq_r11 := p_Dl_CarrierFreq, + mbms_SAI_List_r11 := { p_MBMS_SAI_r11 } + }; + + template (value) MBMS_SAI_InterFreq_v1140 cs_MBMS_SAI_InterFreq_v1140_Def := + { + multiBandInfoList_r11 := omit + }; + + template (value) SystemInformationBlockType15_r11 cs_508_SystemInformationBlockType15_Def(template (omit) MBMS_SAI_InterFreqList_r11 p_MBMS_SAI_InterFreqList_r11 := omit, + template(omit) MBMS_SAI_InterFreqList_v1140 p_MBMS_SAI_InterFreqList := omit ) := + { // from 36.508 Table 4.4.3.3-14: SystemInformationBlockType15 + /* @status APPROVED (LTE_A) */ + mbms_SAI_IntraFreq_r11 := { tsc_MBMS_SAI_Def }, + mbms_SAI_InterFreqList_r11 := p_MBMS_SAI_InterFreqList_r11, + lateNonCriticalExtension := omit, + mbms_SAI_InterFreqList_v1140 := p_MBMS_SAI_InterFreqList + }; + + //=================================================================================================================== + // FUNCTIONS + //=================================================================================================================== + /* + * @desc Set the MBSFN Area configuration [p_Index] of the cell to the parameterized value + * @param p_CellId + * @param p_Mbsfn_AreaId + * @param p_Index (default value: 0) + * @status APPROVED (LTE_A) + */ + function f_EUTRA_CellInfo_SetMBSFN_AreaConfiguration(EUTRA_CellId_Type p_CellId, + Mbsfn_AreaId_r9_Type p_Mbsfn_AreaId, + integer p_Index := 0) runs on EUTRA_PTC + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + var Combination_Type v_Combination := f_EUTRA_CellInfo_GetCombination(p_CellId); + + if ((v_Combination == c15) or (v_Combination == c19)) { + v_CellInfo.Sysinfo.BCCH_Info.SIs[2].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib13_v920.mbsfn_AreaInfoList_r9[p_Index].mbsfn_AreaId_r9 := p_Mbsfn_AreaId; + } else if ((v_Combination == c16) or (v_Combination == c20)) { + v_CellInfo.Sysinfo.BCCH_Info.SIs[3].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib13_v920.mbsfn_AreaInfoList_r9[p_Index].mbsfn_AreaId_r9 := p_Mbsfn_AreaId; + } else { + FatalError (__FILE__, __LINE__, "Invalid MBMS sysinfo combination"); + } + f_EUTRA_CellInfo_Set(p_CellId, v_CellInfo); + } + + /* + * @desc Assign the parameterised MBSFN SubframeConfigList in SIB2 of the cell + * @param p_CellId + * @param p_MBSFN_SubframeConfigList + * @status APPROVED (LTE_A) + */ + function f_EUTRA_CellInfo_SetMBSFN_SubframeConfiguration(EUTRA_CellId_Type p_CellId, + template (value) MBSFN_SubframeConfigList p_MBSFN_SubframeConfigList) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.mbsfn_SubframeConfigList := p_MBSFN_SubframeConfigList; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Set Cfi 2 for MBSFN - Acc to 36.508 clause 4.3.3.3 and 36.211 Table 6.7-1 + * @param p_CellId + * @status APPROVED (LTE_A) + */ + function f_EUTRA_CellInfo_SetMBSFN_CFI(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { + //@sic R5-140394 R5s140139 sic@ + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.PhysicalParameters.Cfi:= 2; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc Change the sysinfo and sysinfo combination of the cell to MBMS combination (c15 or c16) + * @param p_CellId + * @param p_SysinfoCombination (c15 or c16 or c18 or c19 or c120) + * @param p_MBMS_SAI_InterFreqList_r11 + * @param p_MBMS_SAI_InterFreqList + * @status APPROVED (LTE_A) + */ + function f_EUTRA_SetSysinfoCombination_MBMS( EUTRA_CellId_Type p_CellId, + Combination_Type p_SysinfoCombination, + template (omit) MBMS_SAI_InterFreqList_r11 p_MBMS_SAI_InterFreqList_r11 := omit, + template(omit) MBMS_SAI_InterFreqList_v1140 p_MBMS_SAI_InterFreqList := omit + ) runs on EUTRA_PTC + { //@sic R5-142844: added c18 or c19 or c120 sic@ + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + var template (value) EUTRA_CellInfo_Type v_NewCellInfo := v_CellInfo; + var template (value) BcchInfo_Type v_Bcch_Info; + var ChannelBandwidthDependency_Type v_ChannelBandwidthDependency := f_EUTRA_BandDependentParam(f_EUTRA_CellInfo_GetDL_ChBandwidth (p_CellId), + f_EUTRA_CellInfo_GetUL_ChBandwidth (p_CellId)); + var template (omit) TDD_Config v_TDD_Config := omit; // omitted in FDD + var template (value) SI_List_Type v_SI_List; + var template (value) SystemInformationBlockType13_r9 v_SIB13; + var template (value) MBSFN_SubframeConfigList v_MBSFN_SubframeConfigList; + var template (value) SystemInformationBlockType5 v_SystemInformation5; + + // Modify SIB2 - Set mbsfn-SubframeConfiguration + if (v_CellInfo.FDD_TDD_Info.FDD_TDD == FDD) { + v_MBSFN_SubframeConfigList := { + cs_MBSFN_SubframeConfig_Def(1, '100000'B) // radioframeAllocationOffset, subframeAllocation oneFrame + }; + } else { + v_MBSFN_SubframeConfigList := { + cs_MBSFN_SubframeConfig_Def(0, '000010'B) // radioframeAllocationOffset, subframeAllocation oneFrame + } + } + // Re-initialise CellInfo + v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + if (v_CellInfo.FDD_TDD_Info.FDD_TDD == TDD) { // initialise tdd-Configuration to be used in SIB1 + v_TDD_Config := cs_TDD_ConfigDef(v_CellInfo.FDD_TDD_Info.TDD_SubframeAssignment); // Value omitted in FDD + } + + // Initialise SIB13 acc. to 36.508 Table 4.4.3.3-13 + if (v_CellInfo.FDD_TDD_Info.FDD_TDD == FDD) { + v_SIB13 := cs_508_SystemInformationBlockType13_Def(1, // mcch-Offset-r9 + '100000'B, // sf-AllocInfo-r9 + 1, // notificationOffset-r9 + 1); // notificationSF-Index-r9 + } else { // TDD + v_SIB13 := cs_508_SystemInformationBlockType13_Def(0, // mcch-Offset-r9 + '000010'B, // sf-AllocInfo-r9 + 0, // notificationOffset-r9v + 5); // notificationSF-Index-r9 @sic R5s140608 sic@ + } + + select (p_SysinfoCombination) { + case(c15) { // SIB2/SIB3/SIB13 for MBMS + //Set CFI to 2 - Acc to 36.508 clause 4.3.3.3 @sic R5-140394 sic@ + //@sic R5-142844 sic@ + f_EUTRA_CellInfo_SetMBSFN_CFI(p_CellId); + // Set MBSFn subframe config in SIB2 + f_EUTRA_CellInfo_SetMBSFN_SubframeConfiguration(p_CellId, v_MBSFN_SubframeConfigList); + v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); //@sic R5s140539 sic@ + v_NewCellInfo := v_CellInfo; //@sic R5s140610 sic@ + + v_SI_List := { + v_CellInfo.Sysinfo.BCCH_Info.SIs[0], // SIB2 + v_CellInfo.Sysinfo.BCCH_Info.SIs[1], // SIB3 + cs_SystemInformation_Common(cs_SI_SIB13(v_SIB13)) // SIB13 + }; + v_Bcch_Info := cs_BCCHInfo_C1(v_CellInfo.Sysinfo.BCCH_Info.MIB, // MIB + cs_508_SystemInformationBlockType1_Def( // SIB1 + cs_PlmnIdList_1Entry(v_CellInfo.NAS_Parameters.Guti_Parameters.PLMN_Identity), + v_CellInfo.NAS_Parameters.TrackingAreaCode, + v_CellInfo.CellIds.CellIdentity, + v_CellInfo.Frequency.FrequencyBandIndicator, + cs_SchedulingInfo_3SI(v_ChannelBandwidthDependency.SIB3_periodicity, + {sibType3}, + v_ChannelBandwidthDependency.SIB13_periodicity, + {sibType13_v920}), + v_TDD_Config), + v_SI_List); + v_NewCellInfo.Sysinfo.Combination := c15; + v_NewCellInfo.Sysinfo.BCCH_Info := v_Bcch_Info; + f_EUTRA_CellInfo_Set(p_CellId, v_NewCellInfo); + } + case(c16) { // SIB2/SIB3/SIB5/SIB13 for MBMS @sic R5-142844 sic@ + //Set CFI to 2 - Acc to 36.508 clause 4.3.3.3 @sic R5-140394 sic@ + //@sic R5-142844 sic@ + f_EUTRA_CellInfo_SetMBSFN_CFI(p_CellId); + // Set MBSFn subframe config in SIB2 + f_EUTRA_CellInfo_SetMBSFN_SubframeConfiguration(p_CellId, v_MBSFN_SubframeConfigList); + v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); //@sic R5s140539 sic@ + v_NewCellInfo := v_CellInfo; //@sic R5s140610 sic@ + + v_SystemInformation5 := f_EUTRA_InitSystemInformation5( p_CellId , + v_ChannelBandwidthDependency.AllowedMeasBandwidth, + f_EUTRA_CellInfo_GetDL_ChBandwidth (p_CellId), + f_EUTRA_CellInfo_GetUL_ChBandwidth (p_CellId)); + v_SI_List := { + v_CellInfo.Sysinfo.BCCH_Info.SIs[0], // SIB2 + v_CellInfo.Sysinfo.BCCH_Info.SIs[1], // SIB3 + cs_SystemInformation_Common(cs_SI_SIB5(v_SystemInformation5)), //SIB5 + cs_SystemInformation_Common(cs_SI_SIB13(v_SIB13)) + }; + v_Bcch_Info := cs_BCCHInfo_C1(v_CellInfo.Sysinfo.BCCH_Info.MIB, // MIB + cs_508_SystemInformationBlockType1_Def( // SIB1 + cs_PlmnIdList_1Entry(v_CellInfo.NAS_Parameters.Guti_Parameters.PLMN_Identity), + v_CellInfo.NAS_Parameters.TrackingAreaCode, + v_CellInfo.CellIds.CellIdentity, + v_CellInfo.Frequency.FrequencyBandIndicator, + cs_SchedulingInfo_4SI(v_ChannelBandwidthDependency.SIB3_periodicity, + {sibType3}, + v_ChannelBandwidthDependency.SIB5_periodicity, + {sibType5}, + v_ChannelBandwidthDependency.SIB13_periodicity, + {sibType13_v920}), + v_TDD_Config), + v_SI_List); + v_NewCellInfo.Sysinfo.Combination := c16; + v_NewCellInfo.Sysinfo.BCCH_Info := v_Bcch_Info; + f_EUTRA_CellInfo_Set(p_CellId, v_NewCellInfo); + } + case(c18) { // SIB2/SIB3/SIB5/SIB15 - non MBMS cell + //Initialise SIB5 + v_SystemInformation5 := f_EUTRA_InitSystemInformation5( p_CellId , + v_ChannelBandwidthDependency.AllowedMeasBandwidth, + f_EUTRA_CellInfo_GetDL_ChBandwidth (p_CellId), + f_EUTRA_CellInfo_GetUL_ChBandwidth (p_CellId)); + v_SI_List := { + v_CellInfo.Sysinfo.BCCH_Info.SIs[0], // SIB2 + v_CellInfo.Sysinfo.BCCH_Info.SIs[1], // SIB3 + cs_SystemInformation_Common(cs_SI_SIB5(v_SystemInformation5)), //SIB5 + cs_SystemInformation_Common(cs_SI_SIB15(cs_508_SystemInformationBlockType15_Def( p_MBMS_SAI_InterFreqList_r11, p_MBMS_SAI_InterFreqList ))) + }; + v_Bcch_Info := cs_BCCHInfo_C1(v_CellInfo.Sysinfo.BCCH_Info.MIB, // MIB + cs_508_SystemInformationBlockType1_Def( // SIB1 + cs_PlmnIdList_1Entry(v_CellInfo.NAS_Parameters.Guti_Parameters.PLMN_Identity), + v_CellInfo.NAS_Parameters.TrackingAreaCode, + v_CellInfo.CellIds.CellIdentity, + v_CellInfo.Frequency.FrequencyBandIndicator, + cs_SchedulingInfo_4SI(v_ChannelBandwidthDependency.SIB3_periodicity, + {sibType3}, + v_ChannelBandwidthDependency.SIB5_periodicity, + {sibType5}, + v_ChannelBandwidthDependency.SIB15_periodicity, + {sibType15_v1130}), + v_TDD_Config), + v_SI_List); + v_NewCellInfo.Sysinfo.Combination := c18; + v_NewCellInfo.Sysinfo.BCCH_Info := v_Bcch_Info; + f_EUTRA_CellInfo_Set(p_CellId, v_NewCellInfo); + } + case(c19) { // SIB2/SIB3/SIB13/SIB15 for MBMS + //Set CFI to 2 - Acc to 36.508 clause 4.3.3.3 @sic R5-140394 sic@ + f_EUTRA_CellInfo_SetMBSFN_CFI(p_CellId); + // Set MBSFn subframe config in SIB2 + f_EUTRA_CellInfo_SetMBSFN_SubframeConfiguration(p_CellId, v_MBSFN_SubframeConfigList); + v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); //@sic R5s140539 sic@ + v_NewCellInfo := v_CellInfo; //@sic R5s140610 sic@ + + v_SI_List := { + v_CellInfo.Sysinfo.BCCH_Info.SIs[0], // SIB2 + v_CellInfo.Sysinfo.BCCH_Info.SIs[1], // SIB3 + cs_SystemInformation_Common(cs_SI_SIB13(v_SIB13)), // SIB13 + cs_SystemInformation_Common(cs_SI_SIB15(cs_508_SystemInformationBlockType15_Def( p_MBMS_SAI_InterFreqList_r11, p_MBMS_SAI_InterFreqList ))) // SIB15 + }; + v_Bcch_Info := cs_BCCHInfo_C1(v_CellInfo.Sysinfo.BCCH_Info.MIB, // MIB + cs_508_SystemInformationBlockType1_Def( // SIB1 + cs_PlmnIdList_1Entry(v_CellInfo.NAS_Parameters.Guti_Parameters.PLMN_Identity), + v_CellInfo.NAS_Parameters.TrackingAreaCode, + v_CellInfo.CellIds.CellIdentity, + v_CellInfo.Frequency.FrequencyBandIndicator, + cs_SchedulingInfo_4SI(v_ChannelBandwidthDependency.SIB3_periodicity, + {sibType3}, + v_ChannelBandwidthDependency.SIB13_periodicity, + {sibType13_v920}, + v_ChannelBandwidthDependency.SIB15_periodicity, + {sibType15_v1130}), + v_TDD_Config), + v_SI_List); + v_NewCellInfo.Sysinfo.Combination := c19; + v_NewCellInfo.Sysinfo.BCCH_Info := v_Bcch_Info; + f_EUTRA_CellInfo_Set(p_CellId, v_NewCellInfo); + } + case(c20) { // SIB2/SIB3/SIB5/SIB13/SIB15 for MBMS + //Set CFI to 2 - Acc to 36.508 clause 4.3.3.3 @sic R5-140394 sic@ + f_EUTRA_CellInfo_SetMBSFN_CFI(p_CellId); + + // Modify SIB2 - Set mbsfn-SubframeConfiguration + f_EUTRA_CellInfo_SetMBSFN_SubframeConfiguration(p_CellId, v_MBSFN_SubframeConfigList); + v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); //@sic R5s140539 sic@ + v_NewCellInfo := v_CellInfo; //@sic R5s140610 sic@ + + //Initialise SIB5 + v_SystemInformation5 := f_EUTRA_InitSystemInformation5( p_CellId , + v_ChannelBandwidthDependency.AllowedMeasBandwidth, + f_EUTRA_CellInfo_GetDL_ChBandwidth (p_CellId), + f_EUTRA_CellInfo_GetUL_ChBandwidth (p_CellId)); + v_SI_List := { + v_CellInfo.Sysinfo.BCCH_Info.SIs[0], // SIB2 + v_CellInfo.Sysinfo.BCCH_Info.SIs[1], // SIB3 + cs_SystemInformation_Common(cs_SI_SIB5(v_SystemInformation5)), //SIB5 + cs_SystemInformation_Common(cs_SI_SIB13(v_SIB13)), // SIB13 + cs_SystemInformation_Common(cs_SI_SIB15(cs_508_SystemInformationBlockType15_Def( p_MBMS_SAI_InterFreqList_r11, p_MBMS_SAI_InterFreqList ))) + }; + v_Bcch_Info := cs_BCCHInfo_C1(v_CellInfo.Sysinfo.BCCH_Info.MIB, // MIB + cs_508_SystemInformationBlockType1_Def( // SIB1 + cs_PlmnIdList_1Entry(v_CellInfo.NAS_Parameters.Guti_Parameters.PLMN_Identity), + v_CellInfo.NAS_Parameters.TrackingAreaCode, + v_CellInfo.CellIds.CellIdentity, + v_CellInfo.Frequency.FrequencyBandIndicator, + cs_SchedulingInfo_5SI(v_ChannelBandwidthDependency.SIB3_periodicity, + {sibType3}, + v_ChannelBandwidthDependency.SIB5_periodicity, + {sibType5}, + v_ChannelBandwidthDependency.SIB13_periodicity, + {sibType13_v920}, + v_ChannelBandwidthDependency.SIB15_periodicity, + {sibType15_v1130}), + v_TDD_Config), + v_SI_List); + v_NewCellInfo.Sysinfo.Combination := c20; + v_NewCellInfo.Sysinfo.BCCH_Info := v_Bcch_Info; + f_EUTRA_CellInfo_Set(p_CellId, v_NewCellInfo); + } + case else { + FatalError(__FILE__, __LINE__, "invalid sysinfo combination for MBMS"); + } + } + } + /* + * @desc Change the sysinfo and sysinfo combination of the cell from c16 to c20 + * @param p_CellId + * @status + */ + function f_ModifySysinfoCombinationC16_ToC20 ( EUTRA_CellId_Type p_CellId, + template (omit) MBMS_SAI_InterFreqList_r11 p_MBMS_SAI_InterFreqList_r11 := omit, + template(omit) MBMS_SAI_InterFreqList_v1140 p_MBMS_SAI_InterFreqList := omit + ) runs on EUTRA_PTC + { + var template (value) SI_List_Type v_SI_List; + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + var template (value) EUTRA_CellInfo_Type v_NewCellInfo := v_CellInfo; + var ChannelBandwidthDependency_Type v_ChannelBandwidthDependency := f_EUTRA_BandDependentParam(f_EUTRA_CellInfo_GetDL_ChBandwidth (p_CellId), + f_EUTRA_CellInfo_GetUL_ChBandwidth (p_CellId)); + + v_SI_List := { + v_CellInfo.Sysinfo.BCCH_Info.SIs[0], // SIB2 + v_CellInfo.Sysinfo.BCCH_Info.SIs[1], // SIB3 + v_CellInfo.Sysinfo.BCCH_Info.SIs[2], //SIB5 + v_CellInfo.Sysinfo.BCCH_Info.SIs[3], // SIB13 + cs_SystemInformation_Common(cs_SI_SIB15(cs_508_SystemInformationBlockType15_Def( p_MBMS_SAI_InterFreqList_r11, p_MBMS_SAI_InterFreqList ))) //SIB15 + }; + + v_NewCellInfo.Sysinfo.Combination := c20; + v_NewCellInfo.Sysinfo.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.schedulingInfoList := cs_SchedulingInfo_5SI( + v_ChannelBandwidthDependency.SIB3_periodicity, + {sibType3}, + v_ChannelBandwidthDependency.SIB5_periodicity, + {sibType5}, + v_ChannelBandwidthDependency.SIB13_periodicity, + {sibType13_v920}, + v_ChannelBandwidthDependency.SIB15_periodicity, + {sibType15_v1130}); + v_NewCellInfo.Sysinfo.BCCH_Info.SIs := v_SI_List; + + f_EUTRA_CellInfo_Set(p_CellId, v_NewCellInfo); + } + + /* + * @desc Change the sysinfo and sysinfo combination of the cell from c3 to c18 + * @param p_CellId + * @status + */ + function f_ModifySysinfoCombinationC3_ToC18 ( EUTRA_CellId_Type p_CellId, + template (omit) MBMS_SAI_InterFreqList_r11 p_MBMS_SAI_InterFreqList_r11 := omit, + template(omit) MBMS_SAI_InterFreqList_v1140 p_MBMS_SAI_InterFreqList := omit + ) runs on EUTRA_PTC + { + var template (value) SI_List_Type v_SI_List; + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + var template (value) EUTRA_CellInfo_Type v_NewCellInfo := v_CellInfo; + var ChannelBandwidthDependency_Type v_ChannelBandwidthDependency := f_EUTRA_BandDependentParam(f_EUTRA_CellInfo_GetDL_ChBandwidth (p_CellId), + f_EUTRA_CellInfo_GetUL_ChBandwidth (p_CellId)); + v_SI_List := { + v_CellInfo.Sysinfo.BCCH_Info.SIs[0], // SIB2 + v_CellInfo.Sysinfo.BCCH_Info.SIs[1], // SIB3 + v_CellInfo.Sysinfo.BCCH_Info.SIs[2], //SIB5 + cs_SystemInformation_Common(cs_SI_SIB15(cs_508_SystemInformationBlockType15_Def( p_MBMS_SAI_InterFreqList_r11, p_MBMS_SAI_InterFreqList ))) //SIB15 + }; + + v_NewCellInfo.Sysinfo.Combination := c18; + v_NewCellInfo.Sysinfo.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.schedulingInfoList := cs_SchedulingInfo_4SI( + v_ChannelBandwidthDependency.SIB3_periodicity, + {sibType3}, + v_ChannelBandwidthDependency.SIB5_periodicity, + {sibType5}, + v_ChannelBandwidthDependency.SIB15_periodicity, + {sibType15_v1130}); + v_NewCellInfo.Sysinfo.BCCH_Info.SIs := v_SI_List; + + f_EUTRA_CellInfo_Set(p_CellId, v_NewCellInfo); + } + + /* + * @desc Change the sysinfo and sysinfo combination of the cell from c15 to c19 + * @param p_CellId + * @status + */ + function f_ModifySysinfoCombinationC15_ToC19 ( EUTRA_CellId_Type p_CellId, + template (omit) MBMS_SAI_InterFreqList_r11 p_MBMS_SAI_InterFreqList_r11 := omit, + template(omit) MBMS_SAI_InterFreqList_v1140 p_MBMS_SAI_InterFreqList := omit + ) runs on EUTRA_PTC + { + var template (value) SI_List_Type v_SI_List; + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + var template (value) EUTRA_CellInfo_Type v_NewCellInfo := v_CellInfo; + var ChannelBandwidthDependency_Type v_ChannelBandwidthDependency := f_EUTRA_BandDependentParam(f_EUTRA_CellInfo_GetDL_ChBandwidth (p_CellId), + f_EUTRA_CellInfo_GetUL_ChBandwidth (p_CellId)); + + v_SI_List := { + v_CellInfo.Sysinfo.BCCH_Info.SIs[0], // SIB2 + v_CellInfo.Sysinfo.BCCH_Info.SIs[1], // SIB3 + v_CellInfo.Sysinfo.BCCH_Info.SIs[2], // SIB13 + cs_SystemInformation_Common(cs_SI_SIB15(cs_508_SystemInformationBlockType15_Def( p_MBMS_SAI_InterFreqList_r11, p_MBMS_SAI_InterFreqList ))) + }; + + v_NewCellInfo.Sysinfo.Combination := c19; + v_NewCellInfo.Sysinfo.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.schedulingInfoList := cs_SchedulingInfo_4SI( + v_ChannelBandwidthDependency.SIB3_periodicity, + {sibType3}, + v_ChannelBandwidthDependency.SIB13_periodicity, + {sibType13_v920}, + v_ChannelBandwidthDependency.SIB15_periodicity, + {sibType15_v1130}); + v_NewCellInfo.Sysinfo.BCCH_Info.SIs := v_SI_List; + + f_EUTRA_CellInfo_Set(p_CellId, v_NewCellInfo); + }; + + + /* + * @desc Change the sysinfo and sysinfo combination of the cell from c15 to c20 + * @param p_CellId + * @status + */ + function f_ModifySysinfoCombinationC15_ToC20 ( EUTRA_CellId_Type p_CellId, + template (omit) MBMS_SAI_InterFreqList_r11 p_MBMS_SAI_InterFreqList_r11 := omit, + template(omit) MBMS_SAI_InterFreqList_v1140 p_MBMS_SAI_InterFreqList := omit + ) runs on EUTRA_PTC + { + var template (value) SI_List_Type v_SI_List; + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + var template (value) EUTRA_CellInfo_Type v_NewCellInfo := v_CellInfo; + var template (value) SystemInformationBlockType5 v_SystemInformation5; + var ChannelBandwidthDependency_Type v_ChannelBandwidthDependency := f_EUTRA_BandDependentParam(f_EUTRA_CellInfo_GetDL_ChBandwidth (p_CellId), + f_EUTRA_CellInfo_GetUL_ChBandwidth (p_CellId)); + //Initialise SIB5 + v_SystemInformation5 := f_EUTRA_InitSystemInformation5( p_CellId , + v_ChannelBandwidthDependency.AllowedMeasBandwidth, + f_EUTRA_CellInfo_GetDL_ChBandwidth (p_CellId), + f_EUTRA_CellInfo_GetUL_ChBandwidth (p_CellId)); + + v_SI_List := { + v_CellInfo.Sysinfo.BCCH_Info.SIs[0], // SIB2 + v_CellInfo.Sysinfo.BCCH_Info.SIs[1], // SIB3 + cs_SystemInformation_Common(cs_SI_SIB5(v_SystemInformation5)), //SIB5 + v_CellInfo.Sysinfo.BCCH_Info.SIs[2], // SIB13 + cs_SystemInformation_Common(cs_SI_SIB15(cs_508_SystemInformationBlockType15_Def( p_MBMS_SAI_InterFreqList_r11, p_MBMS_SAI_InterFreqList ))) //SIB15 + }; + + v_NewCellInfo.Sysinfo.Combination := c20; + v_NewCellInfo.Sysinfo.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.schedulingInfoList := cs_SchedulingInfo_5SI( + v_ChannelBandwidthDependency.SIB3_periodicity, + {sibType3}, + v_ChannelBandwidthDependency.SIB5_periodicity, + {sibType5}, + v_ChannelBandwidthDependency.SIB13_periodicity, + {sibType13_v920}, + v_ChannelBandwidthDependency.SIB15_periodicity, + {sibType15_v1130}); + v_NewCellInfo.Sysinfo.BCCH_Info.SIs := v_SI_List; + + f_EUTRA_CellInfo_Set(p_CellId, v_NewCellInfo); + }; + + +// End of module +} diff --git a/LTE_A_IWD_14wk37/LTE_A/17/EUTRA_CommonFunctions_MBMS.ttcn b/LTE_A_IWD_14wk37/LTE_A/17/EUTRA_CommonFunctions_MBMS.ttcn new file mode 100644 index 0000000..98f3435 --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/17/EUTRA_CommonFunctions_MBMS.ttcn @@ -0,0 +1,865 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-06-08 22:12:54 +0200 (Sun, 08 Jun 2014) $ +// $Rev: 11668 $ +/******************************************************************************/ + +module EUTRA_CommonFunctions_MBMS { + + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_ASP_TypeDefs all; + import from CommonDefs all; + import from EUTRA_CellInfo all; + import from EUTRA_ASP_TypeDefs all; + import from EUTRA_CommonDefs all; + + import from EUTRA_Component all; + + import from EUTRA_AspCommon_Templates all; + import from EUTRA_CommonTemplates_MBMS all; + + import from EUTRA_ConfigurationSteps all; + import from EUTRA_Timing all; + import from EUTRA_ASP_DrbDefs all; + import from EUTRA_CellCfg_Templates all; + + ///================================================================================================================== + // Definitions + //=================================================================================================================== + type MBSFN_AreaInfo_r9.mcch_Config_r9.mcch_ModificationPeriod_r9 MCCH_ModificationPeriod_Type; /* @status APPROVED (LTE_A) */ + type MBSFN_AreaInfo_r9.mcch_Config_r9.mcch_RepetitionPeriod_r9 MCCH_RepetitionPeriod_Type; /* @status APPROVED (LTE_A) */ + type MBMS_NotificationConfig_r9.notificationRepetitionCoeff_r9 MBMS_NotificationRepCoeff_Type; /* @status APPROVED (LTE_A) */ + type MBSFN_SubframeConfig.radioframeAllocationPeriod RadioframeAllocationPeriod_Type; /* @status APPROVED (LTE_A) */ + type PMCH_Config_r9.mch_SchedulingPeriod_r9 MCH_SchedulingPeriod_Type; /* @status APPROVED (LTE_A) */ + + //-------------------------------------------------------------------------------------------------------------------- + // Get / Convert functions + //-------------------------------------------------------------------------------------------------------------------- + /* + * @desc Common function to get Sib13 + * @param p_CellId + * @return SystemInformationBlockType13_r9 + * @status APPROVED (LTE_A) + */ + function f_EUTRA_CellInfo_GetSib13(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return SystemInformationBlockType13_r9 + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + var Combination_Type v_Combination := f_EUTRA_CellInfo_GetCombination(p_CellId); + var BCCH_DL_SCH_Message v_BCCH_DL_SCH_Message; + + select (v_Combination) { + case (c15, c19) { + v_BCCH_DL_SCH_Message := v_CellInfo.Sysinfo.BCCH_Info.SIs[2]; + } + case (c16, c20) { + v_BCCH_DL_SCH_Message := v_CellInfo.Sysinfo.BCCH_Info.SIs[3]; + } + case else { + FatalError (__FILE__, __LINE__, "Invalid MBMS sysinfo combination"); + } + } + return v_BCCH_DL_SCH_Message.message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib13_v920; + } + + /* + * @desc Get information about the DRX configuration. + * Note: It shall be the same configuration as configured at the SS + * @param p_CellId + * @return MCCH_ModificationPeriod_Type + * @status APPROVED (LTE_A) + */ + function f_EUTRA_CellInfo_GetMCCH_ModPeriod(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + return MCCH_ModificationPeriod_Type + { + var SystemInformationBlockType13_r9 v_Sib13 := f_EUTRA_CellInfo_GetSib13(p_CellId); + var MCCH_ModificationPeriod_Type v_MCCH_ModPer := v_Sib13.mbsfn_AreaInfoList_r9[0].mcch_Config_r9.mcch_ModificationPeriod_r9; + return v_MCCH_ModPer; + } + + /* + * @desc Get MBSFN Subframe config list of the cell + * @param p_CellId + * @return MBSFN_SubframeConfigList + * @status APPROVED (LTE_A) + */ + function f_EUTRA_CellInfo_GetMBSFN_SubframeConfigList(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + return MBSFN_SubframeConfigList + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + return v_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.mbsfn_SubframeConfigList; + } + + /* + * @desc Get MCCH repetition period of the cell + * @param p_CellId + * @return MCCH_RepetitionPeriod_Type + * @status APPROVED (LTE_A) + */ + function f_EUTRA_CellInfo_GetMCCH_RepPeriod(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return MCCH_RepetitionPeriod_Type + { + var SystemInformationBlockType13_r9 v_Sib13 := f_EUTRA_CellInfo_GetSib13(p_CellId); + var MCCH_RepetitionPeriod_Type v_MCCH_RepPer := v_Sib13.mbsfn_AreaInfoList_r9[0].mcch_Config_r9.mcch_RepetitionPeriod_r9; + return v_MCCH_RepPer; + } + + /* + * @desc Convert MCH_SchedulingPeriod to integer + * @param p_MCH_SchedulingPeriod + * @return integer + * @status APPROVED (LTE_A) + */ + function f_EUTRA_Convert_MCH_SchedulingPeriod_TypeToInt(MCH_SchedulingPeriod_Type p_MCH_SchedulingPeriod) return integer + { + var integer v_Result; + + select (p_MCH_SchedulingPeriod) { + case(rf8) { + v_Result := 8; + } + case(rf16) { + v_Result := 16; + } + case(rf32) { + v_Result := 32; + } + case(rf64) { + v_Result := 64; + } + case(rf128) { + v_Result := 128; + } + case(rf256) { + v_Result := 256; + } + case(rf512) { + v_Result := 512; + } + case(rf1024) { + v_Result := 1024; + } + } + return v_Result; + } + + /* + * @desc Convert RadioframeAllocationPeriod to integer + * @param p_RadioframeAllocationPeriod + * @return integer + * @status APPROVED (LTE_A) + */ + function f_EUTRA_Convert_RadioframeAllocationPeriod_TypeToInt(RadioframeAllocationPeriod_Type p_RadioframeAllocationPeriod) return integer + { + var integer v_Result; + + select (p_RadioframeAllocationPeriod) { + case(n1) { + v_Result := 1; + } + case(n2) { + v_Result := 2; + } + case(n4) { + v_Result := 4; + } + case(n8) { + v_Result := 8; + } + case(n16) { + v_Result := 16; + } + case(n32) { + v_Result := 32; + } + } + return (v_Result); + } + + /* + * @desc Convert MCCH_ModificationPeriod to integer + * @param p_MCCH_ModPeriod + * @return integer + * @status APPROVED (LTE_A) + */ + function f_EUTRA_Convert_MCCH_ModPeriodToInt(MCCH_ModificationPeriod_Type p_MCCH_ModPeriod) return integer + { + var integer v_Result; + + select (p_MCCH_ModPeriod) { + case (rf512) { + v_Result := 512; + } + case (rf1024) { + v_Result := 1024; + } + } + return (v_Result); + } + + /* + * @desc Get the notification Repetition Coeff of the cell + * @param p_CellId + * @return integer + * @status APPROVED (LTE_A) + */ + function f_EUTRA_CellInfo_GetMBMS_NotRepCoeff(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return integer + { + var SystemInformationBlockType13_r9 v_Sib13 := f_EUTRA_CellInfo_GetSib13(p_CellId); + var MBMS_NotificationRepCoeff_Type v_MCCH_NotRepCoeff := v_Sib13.notificationConfig_r9.notificationRepetitionCoeff_r9; + var integer v_RepCoeff; + + select (v_MCCH_NotRepCoeff) { + case (n2) { + v_RepCoeff:= 2; + } + case (n4) { + v_RepCoeff := 4; + } + case else { + FatalError (__FILE__, __LINE__, "invalid value for Notification Co-eff"); + } + } + return v_RepCoeff; + } + + /* + * @desc get the notification Offset of the cell + * @param p_CellId + * @return integer + * @status APPROVED (LTE_A) + */ + function f_EUTRA_CellInfo_GetMBMS_NotOffset(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return integer + { + var SystemInformationBlockType13_r9 v_Sib13 := f_EUTRA_CellInfo_GetSib13(p_CellId); + var integer v_MCCH_NotOffset := v_Sib13.notificationConfig_r9.notificationOffset_r9; + return (v_MCCH_NotOffset); + } + + /* + * @desc Return the Notifiation subframe number of the MBMS cell + * @param p_CellId + * @return integer + * @status APPROVED (LTE_A) + */ + function f_EUTRA_CellInfo_GetMBMS_NotSubFrameNum(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return integer + { + var SystemInformationBlockType13_r9 v_Sib13 := f_EUTRA_CellInfo_GetSib13(p_CellId); + var EUTRA_FDD_TDD_Mode_Type v_EUTRA_FDD_TDD_Mode := f_EUTRA_CellInfo_GetFDD_TDD(p_CellId); + var integer v_MCCH_SubframeIndex := v_Sib13.notificationConfig_r9.notificationSF_Index_r9; + var integer v_SubFrameNum; + + select (v_MCCH_SubframeIndex) { + case (1) { + if (v_EUTRA_FDD_TDD_Mode == FDD) { + v_SubFrameNum := 1; + } else { + v_SubFrameNum := 3; + } + } + case (2) { + if (v_EUTRA_FDD_TDD_Mode == FDD) { + v_SubFrameNum := 2; + } else { + v_SubFrameNum := 4; + } + } + case (3) { + if (v_EUTRA_FDD_TDD_Mode == FDD) { + v_SubFrameNum := 3; + } else { + v_SubFrameNum := 7; + } + } + case (4) { + if (v_EUTRA_FDD_TDD_Mode == FDD) { + v_SubFrameNum := 6; + } else { + v_SubFrameNum := 8; + } + } + case (5) { + if (v_EUTRA_FDD_TDD_Mode == FDD) { + v_SubFrameNum := 7; + } else { + v_SubFrameNum := 9; + } + } + case else { // 6 + if (v_EUTRA_FDD_TDD_Mode == FDD) { + v_SubFrameNum := 8; + } else { + FatalError (__FILE__, __LINE__, "invalid value for TDD"); + } + } + } + return v_SubFrameNum; + } + + /* + * @desc Return the MCCH offset of the cell + * @param p_CellId + * @return integer + * @status APPROVED (LTE_A) + */ + function f_EUTRA_CellInfo_GetMCCH_Offset(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return integer + { + var SystemInformationBlockType13_r9 v_Sib13 := f_EUTRA_CellInfo_GetSib13(p_CellId); + var integer v_MCCH_Offset := v_Sib13.mbsfn_AreaInfoList_r9[0].mcch_Config_r9.mcch_Offset_r9; + return v_MCCH_Offset; + } + + /* + * @desc Return the MCCH Notification Indicator of the cell + * @param p_CellId + * @return NotificationIndicator_r9_Type + * @status APPROVED (LTE_A) + */ + function f_EUTRA_CellInfo_GetMCCH_NotificationIndicator(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return NotificationIndicator_r9_Type + { + var SystemInformationBlockType13_r9 v_Sib13 := f_EUTRA_CellInfo_GetSib13(p_CellId); + var NotificationIndicator_r9_Type v_MCCH_NotInd := v_Sib13.mbsfn_AreaInfoList_r9[0].notificationIndicator_r9; + return v_MCCH_NotInd; + } + + /* + * @desc Return the MCCH subframe of the cell + * @param p_CellId + * @return integer + * @status APPROVED (LTE_A) + */ + function f_EUTRA_CellInfo_GetMCCH_SubFrame(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return integer + { + var SystemInformationBlockType13_r9 v_Sib13 := f_EUTRA_CellInfo_GetSib13(p_CellId); + var bitstring v_MCCH_SubFrameAlloc := v_Sib13.mbsfn_AreaInfoList_r9[0].mcch_Config_r9.sf_AllocInfo_r9; + var integer v_MCCH_SubFrameNum; + var EUTRA_FDD_TDD_Mode_Type v_EUTRA_FDD_TDD_Mode := f_EUTRA_CellInfo_GetFDD_TDD(p_CellId); + + if (bit2int(v_MCCH_SubFrameAlloc) > 31) { // 1xxxxx + if (v_EUTRA_FDD_TDD_Mode == FDD) { + v_MCCH_SubFrameNum := 1; + } else { + v_MCCH_SubFrameNum := 3; + } + } else if (bit2int(v_MCCH_SubFrameAlloc) > 15) { // 01xxxx + if (v_EUTRA_FDD_TDD_Mode == FDD) { + v_MCCH_SubFrameNum := 2; + } else { + v_MCCH_SubFrameNum := 4; + } + } else if (bit2int(v_MCCH_SubFrameAlloc) > 7) { // 001xxx + if (v_EUTRA_FDD_TDD_Mode == FDD) { + v_MCCH_SubFrameNum := 3; + } else { + v_MCCH_SubFrameNum := 7; + } + } else if (bit2int(v_MCCH_SubFrameAlloc) > 3) { // 0001xx + if (v_EUTRA_FDD_TDD_Mode == FDD) { + v_MCCH_SubFrameNum := 6; + } else { + v_MCCH_SubFrameNum := 8; + } + } else if (bit2int(v_MCCH_SubFrameAlloc) > 1) { // 00001x + if (v_EUTRA_FDD_TDD_Mode == FDD) { + v_MCCH_SubFrameNum := 7; + } else { + v_MCCH_SubFrameNum := 9; + } + } else { // 000001 + if (v_EUTRA_FDD_TDD_Mode == FDD) { + v_MCCH_SubFrameNum := 8; + } else { + FatalError (__FILE__, __LINE__, "invalid value for TDD"); + } + } + return v_MCCH_SubFrameNum; + } + + /* + * @desc Return the MBSFN_AreaInfoList of the cell + * @param p_CellId + * @return MBSFN_AreaInfoList_r9 + * @status APPROVED (LTE_A) + */ + function f_EUTRA_CellInfo_GetMBSFN_AreaInfoList(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return MBSFN_AreaInfoList_r9 + { + var SystemInformationBlockType13_r9 v_Sib13 := f_EUTRA_CellInfo_GetSib13(p_CellId); + var MBSFN_AreaInfoList_r9 v_MBSFN_AreaInfoList_r9 := v_Sib13.mbsfn_AreaInfoList_r9; + + return v_MBSFN_AreaInfoList_r9; + } + + /* + * @desc Convert the subframe allocation to integer + * @param p_CellId + * @param p_SubFrameAlloc + * @return integer + * @status APPROVED (LTE_A) + */ + function f_EUTRA_CellInfo_ConvertSubFrameAllocation(EUTRA_CellId_Type p_CellId, + B6_Type p_SubFrameAlloc) runs on EUTRA_PTC return integer + { + var integer v_SubFrameNum; + var EUTRA_FDD_TDD_Mode_Type v_EUTRA_FDD_TDD_Mode := f_EUTRA_CellInfo_GetFDD_TDD(p_CellId); + + if (bit2int(p_SubFrameAlloc) > 31) { // 1xxxxx + if (v_EUTRA_FDD_TDD_Mode == FDD) { + v_SubFrameNum := 1; + } else { + v_SubFrameNum := 3; + } + } else if (bit2int (p_SubFrameAlloc) > 15) { // 01xxxx + if (v_EUTRA_FDD_TDD_Mode == FDD) { + v_SubFrameNum := 2; + } else { + v_SubFrameNum := 4; + } + } else if (bit2int(p_SubFrameAlloc) > 7) { // 001xxx + if (v_EUTRA_FDD_TDD_Mode == FDD) { + v_SubFrameNum := 3; + } else { + v_SubFrameNum := 7; + } + } else if (bit2int(p_SubFrameAlloc) > 3) { // 0001xx + if (v_EUTRA_FDD_TDD_Mode == FDD) { + v_SubFrameNum := 6; + } else { + v_SubFrameNum := 8; + } + } else if (bit2int(p_SubFrameAlloc) > 1) { // 00001x + if (v_EUTRA_FDD_TDD_Mode == FDD) { + v_SubFrameNum := 7; + } else { + v_SubFrameNum := 9; + } + } else { // 000001 + if (v_EUTRA_FDD_TDD_Mode == FDD) { + v_SubFrameNum := 8; + } else { + FatalError (__FILE__, __LINE__, "invalid value for TDD"); + } + } + return v_SubFrameNum; + } + + /* + * @desc Convert MCCH repetition period to integer + * @param p_MCCH_RepPeriod + * @return integer + * @status APPROVED (LTE_A) + */ + function f_EUTRA_Convert_MCCH_RepPeriodToInt(MCCH_RepetitionPeriod_Type p_MCCH_RepPeriod) return integer + { + var integer v_Result; + + select (p_MCCH_RepPeriod) { + case(rf32) { + v_Result := 32; + } + case(rf64) { + v_Result := 64; + } + case(rf128) { + v_Result := 128; + } + case(rf256) { + v_Result := 256; + } + } + return (v_Result); + } + + //-------------------------------------------------------------------------------------------------------------------- + // MBMS configuration + //-------------------------------------------------------------------------------------------------------------------- + /* + * @desc MBMS configure to SS + * @param p_CellId + * @param p_SYSTEM_CTRL_REQ + * @status APPROVED (LTE_A) + */ + function f_EUTRA_SS_CommonMBMSConfig(EUTRA_CellId_Type p_CellId, + template (value) SYSTEM_CTRL_REQ p_SYSTEM_CTRL_REQ) runs on EUTRA_PTC + { //@sic R5s140139 sic@ + var integer v_MBMSConfigType := 0; + + if (ischosen(p_SYSTEM_CTRL_REQ.Request.MbmsConfig)) { + v_MBMSConfigType := 1; + } + else if (ischosen(p_SYSTEM_CTRL_REQ.Request.PDCCH_MCCH_ChangeNotification)) { + v_MBMSConfigType := 2; + } + else if (ischosen(p_SYSTEM_CTRL_REQ.Request.MSI_Config)) { + v_MBMSConfigType := 3; + } + else { + FatalError(__FILE__, __LINE__, "f_EUTRA_SS_CommonMBMSConfig shall get handed over MBMS_Config, MSI_Config or PDCCH_MCCH_ChangeNotification"); + } + + SYS.send(p_SYSTEM_CTRL_REQ); + if (valueof(p_SYSTEM_CTRL_REQ.Common.ControlInfo.CnfFlag) == true) { + select (v_MBMSConfigType) { + case (1) { + SYS.receive(car_MBMS_Config_CNF(p_CellId)); + } + case (2) { + SYS.receive(car_MCCH_ChangeNotification_CNF(p_CellId)); + } + case (3) { + SYS.receive(car_MSI_Config_CNF(p_CellId)); + } + } + } + } + + /* + * @desc To configure MBMS parameters in SS + * @param p_CellId + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @param p_Mbsfn_SubframeConfigList (default value: omit) + * @param p_MbsfnAreaList (default value: omit) + * @status APPROVED (LTE_A) + */ + function f_EUTRA_CellConfig_MBMS(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now, + template (omit) MBSFN_SubframeConfigList p_Mbsfn_SubframeConfigList := omit, + template (omit) MbsfnAreaList_Type p_MbsfnAreaList := omit) runs on EUTRA_PTC + { + f_EUTRA_SS_CommonMBMSConfig(p_CellId, cas_MBMS_Config_REQ (p_CellId, p_TimingInfo, p_Mbsfn_SubframeConfigList, p_MbsfnAreaList)); + } + + /* + * @desc To configure MBMS in SS with defaults provided in 36.508 + * @param p_CellId + * @param p_MRB_List (default value: {cs_MRB_Type_Def}) + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @param p_TMGI (default value: cs_TMGI_Def) + * @status APPROVED (LTE_A) + */ + function f_EUTRA_CellConfig_MBMS_Def(EUTRA_CellId_Type p_CellId, + template (value) MRB_List_Type p_MRB_List := {cs_MRB_Type_Def}, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now, + template (value) TMGI_r9 p_TMGI:= cs_TMGI_Def) runs on EUTRA_PTC + { + var MBSFN_SubframeConfigList v_Mbsfn_SubframeConfigList; + var template (value) MbsfnAreaList_Type v_MbsfnAreaList; + var template (value) MBSFNAreaConfiguration_r9 v_MBSFNAreaConfiguration_r9; + var template (value) MBSFN_AreaInfoList_r9 v_MBSFN_AreaInfoList_r9; + var Dl_Bandwidth_Type v_Dl_Bandwidth :=f_EUTRA_CellInfo_GetDL_ChBandwidth(p_CellId); + var EUTRA_FDD_TDD_Mode_Type v_EUTRA_FDD_TDD_Mode := f_EUTRA_CellInfo_GetFDD_TDD(p_CellId); + + // Get MBSFN SubframeConfigList from SIB2 + v_Mbsfn_SubframeConfigList := f_EUTRA_CellInfo_GetMBSFN_SubframeConfigList(p_CellId); + v_MBSFNAreaConfiguration_r9 := cs_508_MBSFNAreaConfiguration_Def(v_Mbsfn_SubframeConfigList[0], p_TMGI); + + // Get MBSFN area configuration from SIB13 + v_MBSFN_AreaInfoList_r9 := f_EUTRA_CellInfo_GetMBSFN_AreaInfoList(p_CellId); + + v_MbsfnAreaList := { + cs_MbsfnArea_Def(v_MBSFN_AreaInfoList_r9[0], + cs_MCCH_Data(omit, { cs_MCCH_MBSFNAreaConfiguration_Msg(v_MBSFNAreaConfiguration_r9) }), + v_MBSFNAreaConfiguration_r9, + p_MRB_List) // MRB_List_Type + }; + + f_EUTRA_CellConfig_MBMS(p_CellId, + p_TimingInfo, + v_Mbsfn_SubframeConfigList, + v_MbsfnAreaList); + f_EUTRA_SS_MSI_Config(p_CellId, + p_TimingInfo, + cs_MSI_NoneConfig); + + if (v_Dl_Bandwidth == n25) { //@sic R5-140394 R5s140505 sic@ + // If Band width is 5 Mhz, then special CCE allocation as per 36.523-3 table 7.1.1.1-1a[FDD] or 7.1.1.2-1a[TDD] needs to be performed + // Configure PMCH reference signals + f_EUTRA_SS_CommonCellConfig(p_CellId, cas_PhysicalLayerConfigDL_CcchDcchDtchDL_Config_REQ(p_CellId, cs_TimingInfo_Now, cs_PhysicalLayerConfigDL_eMBMS_5MHz(v_EUTRA_FDD_TDD_Mode))); + } else { + // Configure PMCH reference signals + f_EUTRA_SS_CommonCellConfig(p_CellId, cas_PhysicalLayerConfigDL_CcchDcchDtchDL_Config_REQ(p_CellId, cs_TimingInfo_Now, cs_PhysicalLayerConfigDL_eMBMS)); + } + } + + /* + * @desc To configure MBMS in SS with defaults provided in 36.508 + * @param p_CellId + * @param p_MbsfnAreaList + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @status APPROVED (LTE_A) + */ + function f_EUTRA_CellConfig_MBMS_Specific(EUTRA_CellId_Type p_CellId, + template (value) MbsfnAreaList_Type p_MbsfnAreaList, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now) runs on EUTRA_PTC + { + var MBSFN_SubframeConfigList v_Mbsfn_SubframeConfigList := f_EUTRA_CellInfo_GetMBSFN_SubframeConfigList (p_CellId); + var EUTRA_FDD_TDD_Mode_Type v_EUTRA_FDD_TDD_Mode := f_EUTRA_CellInfo_GetFDD_TDD(p_CellId); + var Dl_Bandwidth_Type v_Dl_Bandwidth :=f_EUTRA_CellInfo_GetDL_ChBandwidth(p_CellId); + + f_EUTRA_CellConfig_MBMS (p_CellId, + p_TimingInfo, + v_Mbsfn_SubframeConfigList, + p_MbsfnAreaList); + + f_EUTRA_SS_MSI_Config(p_CellId, + p_TimingInfo, + cs_MSI_NoneConfig); + + if (v_Dl_Bandwidth == n25) { //@sic R5-140394 R5s140505 sic@ + // If Band width is 5 Mhz, then special CCE allocation as per 36.523-3 table 7.1.1.1-1a[FDD] or 7.1.1.2-1a[TDD] needs to be performed + // Configure PMCH reference signals + f_EUTRA_SS_CommonCellConfig(p_CellId, cas_PhysicalLayerConfigDL_CcchDcchDtchDL_Config_REQ(p_CellId, cs_TimingInfo_Now, cs_PhysicalLayerConfigDL_eMBMS_5MHz(v_EUTRA_FDD_TDD_Mode))); + } else { + // Configure PMCH reference signals + f_EUTRA_SS_CommonCellConfig(p_CellId, cas_PhysicalLayerConfigDL_CcchDcchDtchDL_Config_REQ(p_CellId, cs_TimingInfo_Now, cs_PhysicalLayerConfigDL_eMBMS)); + } + } + + //-------------------------------------------------------------------------------------------------------------------- + // MCCH Modification + //-------------------------------------------------------------------------------------------------------------------- + /* + * @desc To Configure SS to send MCCH notification + * @param p_CellId + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @param p_NotificationIndicator + * @param p_SubframeOffsetList (default value: omit) + * @status APPROVED (LTE_A) + */ + function f_EUTRA_CellConfig_MCCH_Notification(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now, + template (value) NotificationIndicator_r9_Type p_NotificationIndicator, + template (omit) SubframeOffsetList_Type p_SubframeOffsetList := omit) runs on EUTRA_PTC + { + f_EUTRA_SS_CommonMBMSConfig(p_CellId, cas_MCCH_ChangeNotification_REQ(p_CellId, p_TimingInfo, p_NotificationIndicator, p_SubframeOffsetList)); + } + + /* + * @desc To send modified MCCH information - including notification + * @param p_CellId + * @param p_McchData + * @param p_Mbsfn_AreaInfo (default value: omit) + * @param p_MbsfnAreaConfiguration (default value: omit) + * @param p_MRB_List (default value: omit) + * @param p_MBSFN_SubframeConfigList (default value: omit) + * @param p_MCCHNotification (default value: true) + * @return SubFrameTiming_Type + * @status APPROVED (LTE_A) + */ + function f_EUTRA_TransmitModifiedMCCH_Information(EUTRA_CellId_Type p_CellId, + template (omit) MCCH_Data_Type p_McchData, + template (omit) MBSFN_AreaInfo_r9 p_Mbsfn_AreaInfo := omit, + template (omit) MBSFNAreaConfiguration_r9 p_MbsfnAreaConfiguration := omit, + template (omit) MRB_List_Type p_MRB_List := omit, + template (omit) MBSFN_SubframeConfigList p_MBSFN_SubframeConfigList := omit, + boolean p_MCCHNotification := true) + runs on EUTRA_PTC return SubFrameTiming_Type + { + var integer v_MCCH_ModPer := f_EUTRA_Convert_MCCH_ModPeriodToInt(f_EUTRA_CellInfo_GetMCCH_ModPeriod (p_CellId)); + var integer v_MCCH_Offset := f_EUTRA_CellInfo_GetMCCH_Offset(p_CellId); + var integer v_MBMS_NotRepCeoff := f_EUTRA_CellInfo_GetMBMS_NotRepCoeff(p_CellId); + var integer v_MBMS_NotRepPeriod := v_MCCH_ModPer/v_MBMS_NotRepCeoff; + var integer v_MBMS_NotOffset := f_EUTRA_CellInfo_GetMBMS_NotOffset(p_CellId); + var integer v_MBMS_NotSubFrameNum := f_EUTRA_CellInfo_GetMBMS_NotSubFrameNum(p_CellId); + var integer i; + var SubframeOffsetList_Type v_SubFrameOffsetList; + var SubFrameTiming_Type v_Timing, v_Timing1, v_Timing2; + var NotificationIndicator_r9_Type v_NotInd := f_EUTRA_CellInfo_GetMCCH_NotificationIndicator(p_CellId); + var template (value) MbsfnAreaList_Type v_MbsfnAreaList; + + //Get current SFN and subframe + v_Timing := f_EUTRA_GetNextSendOccasion(p_CellId); + // Calculate suitable frame number for MCCH Notification + v_Timing1.SFN.Number := (v_MCCH_ModPer * (1 +(v_Timing.SFN.Number / v_MCCH_ModPer))+ v_MBMS_NotOffset) mod 1024; //@sic R5s140206 sic@ + v_Timing1.Subframe.Number := v_MBMS_NotSubFrameNum; + + for (i :=0; i 300ms + 15 * 320ms + v_MBMS_CounterValue := f_EUTRA_MBMS_CounterProcedure(eutra_Cell2); + if (v_MBMS_CounterValue > 0) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 7f: MBMS Counter value greater than 0"); + } else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 7f: MBMS Counter value not greater than 0"); + } + + //@siclog "Steps 8-9" siclog@ + //@sic R5s140277 sic@ + f_EUTRA_TransmitModifiedMCCH_Information_Blocking(eutra_Cell2,cs_MCCH_Data(tsc_Mbsfn_AreaId_1, + { cs_MCCH_MBSFNAreaConfiguration_Msg(cs_MBSFNAreaConfiguration_173(v_MBSFN_SubframeConfigList[0],cs_TMGI_1)), + cs_MCCH_MBMSCountingRequest_Msg (cs_508_MBMSCountingRequest_Def(1)) } ), + omit, + cs_MBSFNAreaConfiguration_173(v_MBSFN_SubframeConfigList[0],cs_TMGI_1), + -, + -, + true); + //@siclog "Steps 10-12" siclog@ + t_Watchdog.start; + alt { + [] SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell2, cr_508_MBMSCountingResponse_Def)) //@sic R5s140277 R5s140609 sic@ + { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 12: UE transmits MBMS Countin response"); + t_Watchdog.stop; + } + [] t_Watchdog.timeout + { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 12: UE did not transmit MBMS Countin response"); + } + } + + f_EUTRA_TestBody_Set(false); + + /////////////////////////////////////////////////////////////////////////////////// + // Post Amble + ////////////////////////////////////////////////////////////////////////////////// + f_UT_MBMS_SERVICE_Interest(UT, f_Asn2Nas_PlmnId(v_Guti_Params.PLMN_Identity), oct2str(tsc_ServiceId_1), false); //@sic R5s140440 sic@ + // Release RRC Connection and Switch off + f_EUTRA_Postamble(eutra_Cell2, E3_TESTMODE); + } +} + diff --git a/LTE_A_IWD_14wk37/LTE_A/17/MBMS_MCCH_TestCases.ttcn b/LTE_A_IWD_14wk37/LTE_A/17/MBMS_MCCH_TestCases.ttcn new file mode 100644 index 0000000..5249fd1 --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/17/MBMS_MCCH_TestCases.ttcn @@ -0,0 +1,708 @@ + /******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-08-29 16:12:38 +0200 (Fri, 29 Aug 2014) $ +// $Rev: 11957 $ +/******************************************************************************/ + +module MBMS_MCCH_TestCases { + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from CommonDefs all; + import from EUTRA_CellInfo all; + import from EUTRA_CommonDefs all; + import from EUTRA_Component all; + import from EUTRA_BandDependentParam all; + import from EUTRA_ASP_TypeDefs all; + import from EPS_NAS_MsgContainers all; + import from EPS_NAS_TypeDefs all; + + import from EUTRA_Measurement_Templates all; + import from EUTRA_SRB_Templates all; + import from EUTRA_AspCommon_Templates all; + import from EPS_NAS_Templates all; + import from EPS_NAS_Constants all; + import from EUTRA_RRC_Templates all; + import from EUTRA_DRB_Templates all; + + import from EUTRA_ConfigurationSteps all; + import from EUTRA_CommonProcedures all; + import from EUTRA_LoopBack all; + import from EUTRA_NASSteps all; + import from EUTRA_RRCSteps all; + import from EUTRA_AuxiliaryFunctions all; + import from UpperTesterFunctions all; + import from EUTRA_Timing all; + import from EUTRA_SecurityFunctions all; + import from EUTRA_Paging all; + import from EUTRA_SecuritySteps all; + + import from EUTRA_CommonTemplates_MBMS all; + import from EUTRA_CommonFunctions_MBMS all; + import from EUTRA_CellInfo_MBMS all; + + //================================================================================= + // Templates + //================================================================================= + template (value) MBSFNAreaConfiguration_r9 cs_MBSFNAreaConfiguration_NoPmchInfoList(template (value) MBSFN_SubframeConfig p_MBSFN_SubframeConfig) := + // Acc to 36.523-1 Table 17.: MBSFNAreaConfiguration + /* @status APPROVED (LTE_A) */ + cs_MBSFNAreaConfiguration(p_MBSFN_SubframeConfig, rf32, {}); + + template (value) MBSFNAreaConfiguration_r9 cs_508_MBSFNAreaConfiguration_TMGI1(template (value) MBSFN_SubframeConfig p_MBSFN_SubframeConfig) := + // Acc to 36.523-1 Table 17.1.2.3.3-5: MBSFNAreaConfiguration + /* @status APPROVED (LTE_A) */ + cs_MBSFNAreaConfiguration(p_MBSFN_SubframeConfig, rf8, cs_PMCH_InfoList_1Entry(cs_PMCH_Info(cs_PMCH_Config(1, 1, rf8), //@sic R5s140190 sic@ + cs_MBMS_SessionInfo(cs_TMGI_1)))); + + template (value) MBSFNAreaConfiguration_r9 cs_MBSFNAreaConfiguration_1714(template (value) MBSFN_SubframeConfig p_MBSFN_SubframeConfig) := + // Acc to 36.523-1 Table 17.1.2.3.3-5: MBSFNAreaConfiguration + /* @status APPROVED (LTE_A) */ + cs_MBSFNAreaConfiguration(p_MBSFN_SubframeConfig, rf32, cs_PMCH_InfoList_1Entry(cs_PMCH_Info(cs_PMCH_Config(7, 1, rf32), cs_MBMS_SessionInfo(cs_TMGI_Def)))); + + template (value) MBSFNAreaConfiguration_r9 cs_MBSFNAreaConfiguration_1715(template (value) MBSFN_SubframeConfig p_MBSFN_SubframeConfig, + template (value) TMGI_r9 p_TMGI := cs_TMGI_Def) := + // Acc to 36.523-1 Table Table 17.1.5.3.3-2: MBSFNAreaConfiguration + /* @status APPROVED (LTE_A) */ + cs_MBSFNAreaConfiguration(p_MBSFN_SubframeConfig, rf32, cs_PMCH_InfoList_1Entry(cs_PMCH_Info(cs_PMCH_Config(7, 0, rf32), cs_MBMS_SessionInfo(p_TMGI)))); + + + //================================================================================= + // FUNCTIONS + //================================================================================= + /* + * @desc Calculate re-cactivate the EPS bearer - TC 17.1.4 steps 10A-10C + * @param p_CellId + * @status APPROVED (LTE_A) + */ + function fl_ReactivateEPS_BearerContext(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { + var GutiParameters_Type v_GutiParameters; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var NAS_MSG_Indication_Type v_NasInd; + var NAS_KsiValue v_KsiValue; + var EUTRA_SecurityParams_Type v_AuthParams := f_EUTRA_Security_Get(); + var template (value) EUTRA_FDD_TDD_CellInfo_Type v_EUTRA_FDD_TDD_Info := f_EUTRA_CellInfo_GetFDD_TDD_Info(p_CellId); //Get FDD or TDD mode from Cell-configuration + + /* Step 2 */ + v_GutiParameters := f_EUTRA_CellInfo_GetGuti(p_CellId); + f_EUTRA_UE_Page(p_CellId, + cs_NasPaging_OneRecord(cs_PagingUE_Identity_S_TMSI(v_GutiParameters.MME_Code, v_GutiParameters.M_TMSI))); + // Step 3 - 5 of Generic RB establishment procedure + //Check the Service Request message + v_KsiValue := f_EUTRA_SecurityKSIasme_Get(); + v_NasInd := f_EUTRA_RRC_ConnEst_DefWithNas(p_CellId, + v_RRC_TI, + ?, + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_508_SERVICE_REQUEST(v_KsiValue))); + + /* step 6-8 of procedure in 36.508 cl. 4.5.3.3 */ + v_AuthParams := f_EUTRA_Authentication_InitAS(v_AuthParams, v_NasInd.SecurityProtection.NasCount); + v_AuthParams := f_EUTRA_RRC_ActivateSecurity(p_CellId, v_AuthParams, v_NasInd.SecurityProtection.NasCount); + f_EUTRA_Security_Set(v_AuthParams); + + //The SS transmits an RRCConnectionReconfiguration message to configure data radio bearer(s) associated with the existing EPS bearer context <-- RRC: RRCConnectionReconfiguration + SRB.send(cas_SRB1_RrcPdu_REQ(p_CellId, + cs_TimingInfo_Now, + cs_RRCConnectionReconfiguration_Common(tsc_RRC_TI_Def, + omit, + omit, + cs_508_RadioResourceConfigDedicated_SRB2({cs_508_DRB_ToAddMod_DEFAULT_AM(tsc_DRB1), cs_508_DRB_ToAddMod_DEFAULT_AM(tsc_DRB2)}, + cs_508_MAC_MainConfig_Explicit_RBC_DrxL, + cs_508_PhysicalConfigDedicated_Default_RBC(v_EUTRA_FDD_TDD_Info.cqi_ReportConfig, + v_EUTRA_FDD_TDD_Info.soundingRS_UL_Config, + f_EUTRA_CellInfo_GetAntennaInfoDedicated(p_CellId))), + omit))); + //The UE transmits an RRCConnectionReconfigurationComplete message --> RRC: RRCConnectionReconfigurationComplete + SRB.receive(car_SRB1_RrcPdu_IND(p_CellId, + cr_508_RRCConnectionReconfigurationComplete(tsc_RRC_TI_Def))); + } + + //================================================================================= + // TEST CASES + //================================================================================= + /* + * @desc REFERENCE TS 36.523-1 clause 17.1.1 + * @status APPROVED (LTE_A) + */ + function f_TC_17_1_1_EUTRA() runs on EUTRA_PTC + { /* MCCH information acquisition/ UE is switched on */ + var integer v_MBMS_CounterValue :=0; + var integer v_MCCH_RepPer; + var float v_Wait; + var GutiParameters_Type v_Guti_Params; + + f_EUTRA_Init(c1); + f_EUTRA_SetSysinfoCombination_MBMS(eutra_Cell1,c15); + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_CellConfig_MBMS_Def(eutra_Cell1); // Configured MBSFN + MTCH + transmit MBSFNAreaConfiguration + + //Perform Idle updated procedure to make sure UE is in a known state before test case starts + f_EUTRA_Preamble(eutra_Cell1, STATE2_IDLEUPDATE); + v_Guti_Params := f_EUTRA_CellInfo_GetGuti(eutra_Cell1); + f_UT_MBMS_SERVICE_Interest(UT, f_Asn2Nas_PlmnId(v_Guti_Params.PLMN_Identity), oct2str(tsc_ServiceId_Def), true); //@sic R5s140440 sic@ + + //Bring UE to initial state + f_EUTRA_UE_Detach_SwitchOffUe(eutra_Cell1, RRC_IDLE); + + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set(true); + + //@siclog "Step 1" siclog@ + //The UE is switched on. + f_EUTRA_SwitchOnUEandStartIP(eutra_Cell1); + + //@siclog "Step 2" siclog@ + // The generic procedure described in TS 36.508 subclause 4.5.2A.3 is performed on Cell 1 to activate the UE test mode + f_EUTRA_IdleUpdated(eutra_Cell1, PREAMBLE, STATE2A_TESTLOOP_ModeC, NORMAL); + + //@siclog "Step 4" siclog@ + // Wait for a period equal to 1 MCCH repetition period for the UE to receive MBSFNAreaConfiguration message + v_MCCH_RepPer := f_EUTRA_Convert_MCCH_RepPeriodToInt(f_EUTRA_CellInfo_GetMCCH_RepPeriod(eutra_Cell1)); + v_Wait := int2float(v_MCCH_RepPer) /100.0; // Rep Period is in frame = 10 ms + f_Delay(v_Wait); + + //@siclog "Step 5" siclog@ + // The generic procedures described in TS 36.508 subclause 4.5.3A.3 and 4.5.4.3 are performed on Cell 1 activating UE test loop Mode C + f_EUTRA_RbEst_Def(eutra_Cell1); // Default RB establishment + f_EUTRA_CloseUE_TestLoopModeC(eutra_Cell1, cs_UE_TestLoopModeC_LB_Setup); // Bring UE in test loop mode C + + //@siclog "Steps 6 - 7" siclog@ + // The SS transmits a valid MAC PDU including MCH Scheduling Information MAC Control Element with LCID=00001, Stop MTCH= 00000000001 + // The SS transmits 10 MBMS Packets on the MTCH. + f_EUTRA_Send_MTCH_Data(eutra_Cell1, cs_MRB_Identity_Def, 10, -, rf8); //@sic R5s140139 sic@ + + f_Delay(1.0); // > 300ms + 10*4 SFN + + //@siclog "Steps 8-10" siclog@ + // Execute MBMS counter check procedure + v_MBMS_CounterValue:=f_EUTRA_MBMS_CounterProcedure(eutra_Cell1); + if (v_MBMS_CounterValue > 0) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 10: MBMS Counter value greater than 0"); + } else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 10: MBMS Counter value not greater than 0"); + } + + f_EUTRA_TestBody_Set(false); + //test body ends + + /////////////////////////////////////////////////////////////////////////////////// + // Post Amble + ////////////////////////////////////////////////////////////////////////////////// + + f_UT_MBMS_SERVICE_Interest(UT, f_Asn2Nas_PlmnId(v_Guti_Params.PLMN_Identity), oct2str(tsc_ServiceId_Def), false); //@sic R5s140440 sic@ + // Release RRC Connection and Switch off + f_EUTRA_Postamble(eutra_Cell1, E3_TESTMODE); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 17.1.2 + * @status APPROVED (LTE_A) + */ + function f_TC_17_1_2_EUTRA() runs on EUTRA_PTC + { /* MCCH information acquisition/ cell reselection to a cell in a new MBSFN area */ + var integer v_MBMS_CounterValue := 0; + var integer v_MCCH_RepPer; + var float v_Wait; + var GutiParameters_Type v_Guti_Params; + var template (value) MbsfnAreaList_Type v_MbsfnAreaList_Cell11; + var MBSFN_SubframeConfigList v_Mbsfn_SubframeConfigList_Cell11; + var template(value) MBSFNAreaConfiguration_r9 v_MBSFNAreaConfiguration_Cell11; + var template (value) MBSFN_AreaInfoList_r9 v_MBSFN_AreaInfoList_Cell11; + var template (value) CellPowerList_Type v_CellPowerList_AtT1 := { + cs_CellPower(eutra_Cell11, -79) + }; + + f_EUTRA_Init(c1); + f_EUTRA_SetSysinfoCombination_MBMS(eutra_Cell1,c15); + f_EUTRA_SetSysinfoCombination_MBMS(eutra_Cell11,c15); + + f_EUTRA_CellInfo_InitMaxReferencePower(eutra_Cell11, -79); + + // Cell11 belong to different MBSFN area + f_EUTRA_CellInfo_SetMBSFN_AreaConfiguration(eutra_Cell11, tsc_Mbsfn_AreaId_1); + v_MBSFN_AreaInfoList_Cell11 := f_EUTRA_CellInfo_GetMBSFN_AreaInfoList(eutra_Cell11); + v_Mbsfn_SubframeConfigList_Cell11 := f_EUTRA_CellInfo_GetMBSFN_SubframeConfigList(eutra_Cell11); + v_MBSFNAreaConfiguration_Cell11 := cs_508_MBSFNAreaConfiguration_TMGI1(v_Mbsfn_SubframeConfigList_Cell11[0]); + v_MbsfnAreaList_Cell11 := { + cs_MbsfnArea_Def(v_MBSFN_AreaInfoList_Cell11[0], + cs_MCCH_Data(omit, { cs_MCCH_MBSFNAreaConfiguration_Msg(v_MBSFNAreaConfiguration_Cell11) }), + v_MBSFNAreaConfiguration_Cell11, + { cs_MRB_Type_Def }) + }; + + // Configure the cells + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_CellConfig_MBMS_Def(eutra_Cell1); + f_EUTRA_CellConfig_Def(eutra_Cell11); + f_EUTRA_CellConfig_MBMS_Specific(eutra_Cell11, v_MbsfnAreaList_Cell11); + + //UE is in Registered, Idle mode, Test Mode Activated (State 2A) according to [18] in Cell 1(serving cell) with the UE TEST LOOP MODE C + f_EUTRA_Preamble(eutra_Cell1, STATE2A_TESTLOOP_ModeC); + v_Guti_Params := f_EUTRA_CellInfo_GetGuti(eutra_Cell1); + f_UT_MBMS_SERVICE_Interest(UT, f_Asn2Nas_PlmnId(v_Guti_Params.PLMN_Identity), oct2str(tsc_ServiceId_1), true); //@sic R5s140440 sic@ + + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set(true); + + //@siclog "Step 1" siclog@ + //The SS changes Cell 11 level according to the row "T1" in table 17.1.2.3.2-1 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + + //@siclog "Step 2" siclog@ + //The UE executes the generic test procedure described in TS 36.508 subclause 6.4.2.7 and UE shall camp on E-UTRA Cell 11. + // NOTE: The UE performs a TAU procedure and the RRC connection is released. + f_EUTRA_TrackingAreaUpdate(eutra_Cell11, tsc_RRC_TI_Def); + + //@siclog "Step 4" siclog@ + // Wait for a period equal to 1 MCCH repetition period for the UE to receive MBSFNAreaConfiguration message + v_MCCH_RepPer := f_EUTRA_Convert_MCCH_RepPeriodToInt(f_EUTRA_CellInfo_GetMCCH_RepPeriod(eutra_Cell11)); + v_Wait := int2float(v_MCCH_RepPer)/100.0; // Rep Period is in frame = 10 ms; + f_Delay(v_Wait); + + //@siclog "Step 5" siclog@ + // The generic procedures described in TS 36.508 subclause 4.5.3A.3 and 4.5.4.3 are performed on Cell 11 activating UE test loop Mode C + f_EUTRA_RbEst_Def(eutra_Cell11); // Default RB establishment + f_EUTRA_CloseUE_TestLoopModeC(eutra_Cell11, cs_UE_TestLoopModeC_LB_Setup(int2bit(tsc_Mbsfn_AreaId_1, 8))); // Bring UE in test loop mode C + + //@siclog "Steps 6-7" siclog@ + // The SS transmits a valid MAC PDU including MCH Scheduling Information MAC Control Element with LCID=00001, Stop MTCH= 00000000001 + // The SS transmits 10 MBMS Packets on the MTCH. + f_EUTRA_Send_MTCH_Data(eutra_Cell11, cs_MRB_Identity_Def(tsc_Mbsfn_AreaId_1), 10, -, rf8); // transmit 10 MTCH @sic R5s140190 sic@ + + f_Delay(1.0); //> 300ms + 10 * 4 SFN + + //@siclog "Steps 8-10" siclog@ + // Execute MBMS counter check procedure + v_MBMS_CounterValue:=f_EUTRA_MBMS_CounterProcedure(eutra_Cell11); + if (v_MBMS_CounterValue>0) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 10: MBMS Counter value greater than 0"); + } else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 10: MBMS Counter value not greater than 0"); + } + + f_EUTRA_TestBody_Set(false); + + /////////////////////////////////////////////////////////////////////////////////// + // Post Amble + ////////////////////////////////////////////////////////////////////////////////// + f_UT_MBMS_SERVICE_Interest(UT, f_Asn2Nas_PlmnId(v_Guti_Params.PLMN_Identity), oct2str(tsc_ServiceId_1), false); //@sic R5s140440 sic@ + + // Release RRC Connection and Switch off + f_EUTRA_Postamble(eutra_Cell11, E3_TESTMODE); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 17.1.3 + * @status APPROVED (LTE_A) + */ + function f_TC_17_1_3_EUTRA() runs on EUTRA_PTC + { /* MCCH information acquisition/ UE handover to a cell in a new MBSFN area */ + var integer v_MBMS_CounterValue := 0; + var integer v_MCCH_RepPer; + var float v_Wait; + var Frequency_IE_Type v_Frequency_Cell2; + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell2; + var PhysCellId v_PhysCellId_Cell2; + var template (value) MeasConfig v_MeasConfig; + var GutiParameters_Type v_Guti_Params; + var template (value) MbsfnAreaList_Type v_MbsfnAreaList_Cell2; + var MBSFN_SubframeConfigList v_Mbsfn_SubframeConfigList_Cell2; + var template(value) MBSFNAreaConfiguration_r9 v_MBSFNAreaConfiguration_Cell2; + var template (value) MBSFN_AreaInfoList_r9 v_MBSFN_AreaInfoList_Cell2; + + var template (value) CellPowerList_Type v_CellPowerList_AtT0 := { + cs_CellPower(eutra_Cell2, tsc_Suitable_NeighbourIntraFreq_CellRS_EPRE) + }; + var template (value) CellPowerList_Type v_CellPowerList_AtT1 := { + cs_CellPower(eutra_Cell2, -79) + }; + + f_EUTRA_Init(c1); + f_EUTRA_SetSysinfoCombination_MBMS(eutra_Cell1, c15); + f_EUTRA_SetSysinfoCombination_MBMS(eutra_Cell2, c15); + + f_EUTRA_CellInfo_InitMaxReferencePower(eutra_Cell2, -79); + + // Cell2 belong to different MBSFN area + f_EUTRA_CellInfo_SetMBSFN_AreaConfiguration(eutra_Cell2, tsc_Mbsfn_AreaId_1); + v_MBSFN_AreaInfoList_Cell2 := f_EUTRA_CellInfo_GetMBSFN_AreaInfoList(eutra_Cell2); + v_Mbsfn_SubframeConfigList_Cell2 := f_EUTRA_CellInfo_GetMBSFN_SubframeConfigList(eutra_Cell2); + v_MBSFNAreaConfiguration_Cell2 := cs_508_MBSFNAreaConfiguration_TMGI1(v_Mbsfn_SubframeConfigList_Cell2[0]); + v_MbsfnAreaList_Cell2 := { + cs_MbsfnArea_Def(v_MBSFN_AreaInfoList_Cell2[0], + cs_MCCH_Data(omit,{ cs_MCCH_MBSFNAreaConfiguration_Msg(v_MBSFNAreaConfiguration_Cell2) }), + v_MBSFNAreaConfiguration_Cell2, + { cs_MRB_Type_Def }) + }; + + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_CellConfig_MBMS_Def(eutra_Cell1); + f_EUTRA_CellConfig_Def(eutra_Cell2); + f_EUTRA_CellConfig_MBMS_Specific(eutra_Cell2, v_MbsfnAreaList_Cell2); + + // UE is in state Generic RB Established, Test Mode Activated (state 3A) according to [18] in Cell 1(serving cell) with the UE TEST LOOP MODE C. + //@sic R5-144236 sic@ + f_EUTRA_Preamble(eutra_Cell1, STATE2A_TESTLOOP_ModeC); + v_Guti_Params := f_EUTRA_CellInfo_GetGuti(eutra_Cell1); + f_UT_MBMS_SERVICE_Interest(UT, f_Asn2Nas_PlmnId(v_Guti_Params.PLMN_Identity), oct2str(tsc_ServiceId_1), true); //@sic R5s140440 sic@ + f_EUTRA_RbEst_Def(eutra_Cell1); // Default RB establishment + + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT0); + + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set(true); + + //@siclog "Steps 1-2" siclog@ + //The SS transmits an RRCConnectionReconfiguration message on Cell 1 to setup intra frequency measurement and + //receives an RCConnectionReconfigurationComplete message. + v_PhysCellId_Cell2 := f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell2); + v_Frequency_Cell2 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell2); + v_ChBandDependency_Cell2 := f_EUTRA_BandDependentParam(v_Frequency_Cell2.DL_ChBandwidth, v_Frequency_Cell2.UL_ChBandwidth); + + v_MeasConfig := cs_MeasConfig(omit, + cs_MeasObjectToAddModList_1Entry(tsc_IdMeasObject_f1, + cs_MeasObject_measObjectEUTRA_Common(v_Frequency_Cell2.UL_DL_Earfcn.dl_CarrierFreq, v_ChBandDependency_Cell2.AllowedMeasBandwidth)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_A3, + cs_508_ReportConfigEUTRA_A3), + omit, + cs_MeasIdToAddModList_1Entry(1, tsc_IdMeasObject_f1, tsc_IdReportConfig_A3)); + + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(eutra_Cell1, + cs_508_RRCConnectionReconfiguration_ConditionMEAS(tsc_RRC_TI_Def,v_MeasConfig)); + + //@siclog "Step 3" siclog@ + // The SS changes Cell 1, Cell 2 parameters according to the row "T1" in table 17.1.3.3.2-1 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + + //@siclog "Step 4" siclog@ + // The UE transmits a MeasurementReport message to report event A3 on Cell 1 with the measured RSRP, RSRQ value for Cell 2. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, + cr_MeasurementReport(1, ?, ?, cr_MeasResultNeighCells_measResultListEUTRA_1Entry(v_PhysCellId_Cell2, omit, ?, ?)))); + + //@siclog "Steps 5-6" siclog@ + // The SS transmits an RRCConnectionReconfiguration message to order the UE to perform intra frequency handover to Cell 2. + // UE transmits an RRCConnectionReconfigurationComplete message on Cell 2 + f_EUTRA_508RRC_IntraLTE_HO_InterCell(eutra_Cell1, eutra_Cell2); + + //@siclog "Step 8" siclog@ + // Wait for a period equal to 1 MCCH repetition period for the UE to receive MBSFNAreaConfiguration message + v_MCCH_RepPer := f_EUTRA_Convert_MCCH_RepPeriodToInt(f_EUTRA_CellInfo_GetMCCH_RepPeriod(eutra_Cell2)); + v_Wait := int2float(v_MCCH_RepPer)/100.0; // Rep Period is in frame = 10 ms; + f_Delay(v_Wait); + + //@siclog "Step 8A" siclog@ + //The generic procedures described in TS 36.508 subclause 4.5.4.3 are performed on Cell 2 activating UE test loop Mode C. + //@sic R5-144236 sic@ + f_EUTRA_CloseUE_TestLoopModeC(eutra_Cell1, cs_UE_TestLoopModeC_LB_Setup(int2bit(tsc_Mbsfn_AreaId_1, 8))); // Bring UE in test loop mode C + + //@siclog "Steps 9-10" siclog@ + // The SS transmits a valid MAC PDU including 'MCH Scheduling Information MAC Control Element with LCID='00001', Stop MTCH= '00000000001' + // The SS transmits 10 MBMS Packets on the MTCH. + f_EUTRA_Send_MTCH_Data(eutra_Cell2, cs_MRB_Identity_Def(tsc_Mbsfn_AreaId_1), 10, -, rf8); // transmit 10 MTCH @sic R5s140192 sic@ + + f_Delay(1.0); //> 300ms + 10 * 4 SFN + + //@siclog "Steps 11-13" siclog@ + // Execute MBMS counter check procedure + v_MBMS_CounterValue:=f_EUTRA_MBMS_CounterProcedure(eutra_Cell2); + if (v_MBMS_CounterValue>0) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 13: MBMS Counter value greater than 0"); + } else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 13: MBMS Counter value not greater than 0"); + } + + f_EUTRA_TestBody_Set(false); + + /////////////////////////////////////////////////////////////////////////////////// + // Post Amble + ////////////////////////////////////////////////////////////////////////////////// + f_UT_MBMS_SERVICE_Interest(UT, f_Asn2Nas_PlmnId(v_Guti_Params.PLMN_Identity), oct2str(tsc_ServiceId_1), false); //@sic R5s140440 sic@ + + // Release RRC Connection and Switch off + f_EUTRA_Postamble(eutra_Cell2, E3_TESTMODE); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 17.1.4 + * @status APPROVED (LTE_A) + */ + function f_TC_17_1_4_EUTRA() runs on EUTRA_PTC + { /* MCCH information acquisition/ UE is receiving an MBMS service */ + var integer v_MBMS_CounterValue1 := 0; + var integer v_MBMS_CounterValue2 := 0; + var integer v_MCCH_ModPer; + var integer v_MCCH_RepPer; + var float v_Wait; + var GutiParameters_Type v_Guti_Params; + var EUTRA_FDD_TDD_Mode_Type v_EUTRA_FDD_TDD_Mode; + var SubFrameTiming_Type v_MCCH_Timing; + var SubFrameTiming_Type v_CurrentTiming; + var template (value) MBSFN_AreaInfoList_r9 v_MBSFN_AreaInfoList_Cell1; + var MBSFN_SubframeConfigList v_Mbsfn_SubframeConfigList_Cell1; + var float v_ModificationPeriod_s; // Modification period in second + var template (value) MBSFN_SubframeConfigList v_MBSFN_SubframeConfigList; + var template (value) MBSFN_SubframeConfigList v_MBSFN_SubframeConfigList_MCCH; + var template (value) MbsfnAreaList_Type v_MbsfnAreaList; + + f_EUTRA_Init(c1); + //System information combination 15 as defined in TS 36.508[18] clause 4.4.3.1 is used in E-UTRA cells + f_EUTRA_SetSysinfoCombination_MBMS(eutra_Cell1,c15); + + // Set SystemInformationBlockType2 acc to Table 17.1.4.3.3-1 + v_EUTRA_FDD_TDD_Mode := f_EUTRA_CellInfo_GetFDD_TDD(eutra_Cell1); + + if (v_EUTRA_FDD_TDD_Mode == FDD) { + v_MBSFN_SubframeConfigList := { + cs_MBSFN_SubframeConfig_Def(1, '110000'B) // radioframeAllocationOffset, subframeAllocation oneFrame + }; + } else { + v_MBSFN_SubframeConfigList := { //@sic R5s140440 sic@ + cs_MBSFN_SubframeConfig_Def(0, '010010'B) // radioframeAllocationOffset, subframeAllocation oneFrame + } + } + f_EUTRA_CellInfo_SetMBSFN_SubframeConfiguration(eutra_Cell1, v_MBSFN_SubframeConfigList); + + // Set MCCH subframeConfig @sic R5s140200 sic@ + if (v_EUTRA_FDD_TDD_Mode == FDD) { + v_MBSFN_SubframeConfigList_MCCH := { + cs_MBSFN_SubframeConfig_Def(1, '100000'B) // radioframeAllocationOffset, subframeAllocation oneFrame + }; + } else { + v_MBSFN_SubframeConfigList_MCCH := { + cs_MBSFN_SubframeConfig_Def(0, '000010'B) // radioframeAllocationOffset, subframeAllocation oneFrame @sic R5s140607 sic@ + } + } + // Get MBSFN area configuration from SIB13 + v_MBSFN_AreaInfoList_Cell1 := f_EUTRA_CellInfo_GetMBSFN_AreaInfoList(eutra_Cell1); + v_MbsfnAreaList := { + cs_MbsfnArea_Def(v_MBSFN_AreaInfoList_Cell1[0], + cs_MCCH_Data(omit, { cs_MCCH_MBSFNAreaConfiguration_Msg( cs_508_MBSFNAreaConfiguration_Def(v_MBSFN_SubframeConfigList_MCCH[0], cs_TMGI_Def)) }), + cs_508_MBSFNAreaConfiguration_Def(v_MBSFN_SubframeConfigList_MCCH[0], cs_TMGI_Def), + {cs_MRB_Type_Def}) + }; + + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_CellConfig_MBMS_Specific( eutra_Cell1, v_MbsfnAreaList); // @sic R5s140200 sic@ + + //UE is in Registered, Idle mode, Test Mode Activated (State 2A) according to [18] in Cell 1(serving cell) with the UE TEST LOOP MODE C. + f_EUTRA_Preamble(eutra_Cell1, STATE2A_TESTLOOP_ModeC); //@sic R5s140200 sic@ + v_Guti_Params := f_EUTRA_CellInfo_GetGuti(eutra_Cell1); + f_UT_MBMS_SERVICE_Interest(UT, f_Asn2Nas_PlmnId(v_Guti_Params.PLMN_Identity), oct2str(tsc_ServiceId_Def), true); //@sic R5s140440 sic@ + + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set(true); + + //@siclog "Step 1" siclog@ + //SS transmits MBSFNAreaConfiguration message => done in the preamble + + //@siclog "Step 2" siclog@ + // Wait for a period equal to the MCCH modification period for the UE to receive MBSFNAreaConfiguration message + v_MCCH_ModPer := f_EUTRA_Convert_MCCH_ModPeriodToInt(f_EUTRA_CellInfo_GetMCCH_ModPeriod(eutra_Cell1)); + v_Wait := int2float(v_MCCH_ModPer) /100.0; // Mod Period is in frame = 10 ms + f_Delay(v_Wait); + + //@siclog "Step 2A" siclog@ + // The generic procedures described in TS 36.508 subclause 4.5.3A.3 and 4.5.4.3 are performed on Cell 1 closing UE test loop Mode C + f_EUTRA_RbEst_Def(eutra_Cell1); // Default RB establishment + f_EUTRA_CloseUE_TestLoopModeC(eutra_Cell1, cs_UE_TestLoopModeC_LB_Setup); // Bring UE in test loop mode C + + //@siclog "Steps 3 - 4" siclog@ + // The SS transmits a valid MAC PDU including MCH Scheduling Information MAC Control Element with LCID=00001, Stop MTCH= 00000000001 + // The SS transmits 10 MBMS Packets on the MTCH. + f_EUTRA_Send_MTCH_Data(eutra_Cell1, cs_MRB_Identity_Def, 10, -, -, -, -, -, v_MBSFN_SubframeConfigList_MCCH[0]); //@sic R5s140200 : added v_MBSFN_SubframeConfigList_MCCH sic@ + + f_Delay(1.0); // > 300ms + 10*4 SFN + + //@siclog "Steps 4A-4B" siclog@ + // Execute MBMS counter check procedure + v_MBMS_CounterValue1:=f_EUTRA_MBMS_CounterProcedure(eutra_Cell1); + + //@siclog "Step 4C" siclog@ + // The SS transmits an RRCConnectionRelease message to release RRC connection and move to RRC_IDLE. + f_EUTRA_RRC_ConnectionRelease(eutra_Cell1); + + //@siclog "Step 5" siclog@ + //SS transmits an updated system information [contents different from preamble] + // Set SystemInformationBlockType2 acc to 36.508 + + if (v_EUTRA_FDD_TDD_Mode == FDD) { + v_MBSFN_SubframeConfigList := { + cs_MBSFN_SubframeConfig_Def(1, '100000'B) // radioframeAllocationOffset, subframeAllocation oneFrame + }; + } else { + v_MBSFN_SubframeConfigList := { + cs_MBSFN_SubframeConfig_Def(0, '000010'B) // radioframeAllocationOffset, subframeAllocation oneFrame + } + } + f_EUTRA_CellInfo_SetMBSFN_SubframeConfiguration(eutra_Cell1, v_MBSFN_SubframeConfigList); + f_EUTRA_ModifySysinfo(eutra_Cell1); + + //Wait 2.1*sysinfo modification period to allow new system information to take effect + v_ModificationPeriod_s := int2float(f_CalculateModificationPeriod(eutra_Cell1))/100.0; + f_Delay(2.1 * v_ModificationPeriod_s); + + //@siclog "Step 6" siclog@ + //SS transmits MBSFNAreaConfiguration message at the beginning of next modification period MPa. + //Initialise variables + v_MBSFN_AreaInfoList_Cell1 := f_EUTRA_CellInfo_GetMBSFN_AreaInfoList(eutra_Cell1); + v_Mbsfn_SubframeConfigList_Cell1 := f_EUTRA_CellInfo_GetMBSFN_SubframeConfigList(eutra_Cell1); + //Get current timing + v_CurrentTiming := f_EUTRA_GetCurrentTiming(eutra_Cell1); + v_MCCH_Timing := f_EUTRA_TransmitModifiedMCCH_Information(eutra_Cell1, + cs_MCCH_Data(omit, + { cs_MCCH_MBSFNAreaConfiguration_Msg(cs_MBSFNAreaConfiguration_1714(v_Mbsfn_SubframeConfigList_Cell1[0])) }), + v_MBSFN_AreaInfoList_Cell1[0], + cs_MBSFNAreaConfiguration_1714(v_Mbsfn_SubframeConfigList_Cell1[0]), + omit, + omit, + false); // p_MCCH_Notification + + // @siclog "Steps 7" siclog@ + // Wait until the start of the next modification period MPa for the duration of one repetition period for the UE to receive MBSFNAreaConfiguration message + // Start of he next modification period + v_MCCH_RepPer := f_EUTRA_Convert_MCCH_RepPeriodToInt(f_EUTRA_CellInfo_GetMCCH_RepPeriod(eutra_Cell1)); + v_Wait := int2float(((1024 + v_MCCH_Timing.SFN.Number - v_CurrentTiming.SFN.Number) mod 1024) + v_MCCH_RepPer) / 100.0; + f_Delay(v_Wait); + + // @siclog "Steps 9-10" siclog@ + // The SS transmits a valid MAC PDU including MCH Scheduling Information MAC Control Element with LCID=00001, Stop MTCH= 00000000100 + //@sic R5s140200 sic@ + f_EUTRA_Send_MTCH_Data(eutra_Cell1, cs_MRB_Identity_Def, 10, -, -, 4, -,-, -,cs_DRB_DataPerSubframeList_1714); + + // @siclog "Steps 10A-10C" siclog@ + // Steps 2 to 7 of the generic procedure described in TS 36.508 subclause 4.5.3A.3 are performed on Cell 1 + // The SS transmits an RRCConnectionReconfiguration message to configure data radio bearer(s) associated with the existing EPS bearer context + fl_ReactivateEPS_BearerContext(eutra_Cell1); + + //@siclog "Steps 11-13" siclog@ + // Execute MBMS counter check procedure + v_MBMS_CounterValue2 := f_EUTRA_MBMS_CounterProcedure(eutra_Cell1); + if (v_MBMS_CounterValue2 > v_MBMS_CounterValue1) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 13: Is the number of reported MBMS Packets received on the MTCH in step 12 greater than the value reported in step 4B"); + } else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 13: Is the number of reported MBMS Packets received on the MTCH in step 12 NOT greater than the value reported in step 4B"); + } + + f_EUTRA_TestBody_Set(false); + + /////////////////////////////////////////////////////////////////////////////////// + // Post Amble + ////////////////////////////////////////////////////////////////////////////////// + f_UT_MBMS_SERVICE_Interest(UT, f_Asn2Nas_PlmnId(v_Guti_Params.PLMN_Identity), oct2str(tsc_ServiceId_Def), false); //@sic R5s140440 sic@ + + // Release RRC Connection and Switch off + f_EUTRA_Postamble(eutra_Cell1, E3_TESTMODE); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 17.1.5 + * @status APPROVED (LTE_A) + */ + function f_TC_17_1_5_EUTRA() runs on EUTRA_PTC + { /* MCCH information acquisition/ UE is not receiving MBMS data */ + var integer v_MBMS_CounterValue := 0; + var float v_Wait; + var GutiParameters_Type v_Guti_Params; + var template (value) MbsfnAreaList_Type v_MbsfnAreaList_Cell1; + var MBSFN_SubframeConfigList v_Mbsfn_SubframeConfigList_Cell1; + var template(value) MBSFNAreaConfiguration_r9 v_MBSFNAreaConfiguration_Cell1; + var template (value) MBSFN_AreaInfoList_r9 v_MBSFN_AreaInfoList_Cell1; + var SubFrameTiming_Type v_MCCH_Timing; + var SubFrameTiming_Type v_CurrentTiming; + + f_EUTRA_Init(c1); + f_EUTRA_SetSysinfoCombination_MBMS(eutra_Cell1, c15); + + // MBSFNAreaConfiguration as defined in Table 17.1.5.3.3-1b is transmitted on MCCH in Cell 1 + v_MBSFN_AreaInfoList_Cell1 := f_EUTRA_CellInfo_GetMBSFN_AreaInfoList(eutra_Cell1); + v_Mbsfn_SubframeConfigList_Cell1 := f_EUTRA_CellInfo_GetMBSFN_SubframeConfigList(eutra_Cell1); + v_MBSFNAreaConfiguration_Cell1 := cs_MBSFNAreaConfiguration_NoPmchInfoList(v_Mbsfn_SubframeConfigList_Cell1[0]); + v_MbsfnAreaList_Cell1 := { + cs_MbsfnArea_Def(v_MBSFN_AreaInfoList_Cell1[0], + cs_MCCH_Data(omit, + { cs_MCCH_MBSFNAreaConfiguration_Msg(v_MBSFNAreaConfiguration_Cell1) }), + v_MBSFNAreaConfiguration_Cell1, + omit) //@sic R5s140280 sic@ + }; + // Configure the cells + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_CellConfig_MBMS_Specific(eutra_Cell1, v_MbsfnAreaList_Cell1); + + //UE is in Registered, Idle mode, Test Mode Activated (State 2A) according to [18] in Cell 1(serving cell) with the UE TEST LOOP MODE C + f_EUTRA_Preamble(eutra_Cell1, STATE2A_TESTLOOP_ModeC); + v_Guti_Params := f_EUTRA_CellInfo_GetGuti(eutra_Cell1); + f_UT_MBMS_SERVICE_Interest(UT, f_Asn2Nas_PlmnId(v_Guti_Params.PLMN_Identity), oct2str(tsc_ServiceId_Def), true); //@sic R5s140440 sic@ + + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set(true); + + //@siclog "Step 1-1A" siclog@ + // SS transmits MCCH information change notification in modification period MPa. + // Get current timing + v_CurrentTiming := f_EUTRA_GetCurrentTiming(eutra_Cell1); + v_MCCH_Timing := f_EUTRA_TransmitModifiedMCCH_Information(eutra_Cell1, + cs_MCCH_Data(tsc_Mbsfn_AreaId_Def, //@sic R5s140280 sic@ + { cs_MCCH_MBSFNAreaConfiguration_Msg(cs_MBSFNAreaConfiguration_1715(v_Mbsfn_SubframeConfigList_Cell1[0])) }), + omit, + cs_MBSFNAreaConfiguration_1715(v_Mbsfn_SubframeConfigList_Cell1[0]), + {cs_MRB_Type_Def} ); // @sic R5s140280 sic@ + // @siclog "Step 2" siclog@ + // Wait for a period equal to the MCCH modification period for the UE to receive MBSFNAreaConfiguration message from the beginning of the modification period (MPa+1) + // Wait until the satrt of MPa+1 + v_Wait := int2float((1024 + v_MCCH_Timing.SFN.Number - v_CurrentTiming.SFN.Number) mod 1024) / 100.0; + f_Delay(v_Wait); + + // @siclog "Step 3" siclog@ + // The generic procedures described in TS 36.508 subclause 4.5.3A.3 and 4.5.4.3 are performed on Cell 1 to close UE test loop + f_EUTRA_RbEst_Def(eutra_Cell1); // Default RB establishment + f_EUTRA_CloseUE_TestLoopModeC(eutra_Cell1, cs_UE_TestLoopModeC_LB_Setup); // Bring UE in test loop mode C + + // @siclog "Steps 4-5" siclog@ + // The SS transmits a valid MAC PDU including MCH Scheduling Information MAC Control Element with LCID=00001, Stop MTCH= 00000000100 + //@sic R5s140200 sic@ + f_EUTRA_Send_MTCH_Data(eutra_Cell1, cs_MRB_Identity_Def, 16, -, -, 7); // @sic R5s140280 sic@ + + //@siclog "Step 6" siclog@ + // The SS waits for 2 MSP to allow UE to receive MBMS Packets + f_Delay(1.0); // > 320ms*2 + + //@siclog "Steps 7-8" siclog@ + // The SS transmits an UE TEST LOOP MODE C MBMS PACKET COUNTER REQUEST message. + // UE responds with UE TEST LOOP MODE C MBMS PACKET COUNTER RESPONSE. + v_MBMS_CounterValue := f_EUTRA_MBMS_CounterProcedure(eutra_Cell1); + + //@siclog "Step 9" siclog@ + // Check: Is the number of reported MBMS Packets received on the MTCH in step 8 greater than zero? + if (v_MBMS_CounterValue > 0) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 9: The number of reported MBMS Packets received on the MTCH in step 8 is greater than zero"); + } else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 9: The number of reported MBMS Packets received on the MTCH in step 8 is NOT greater than zero"); + } + + f_EUTRA_TestBody_Set(false); + + /////////////////////////////////////////////////////////////////////////////////// + // Post Amble + ////////////////////////////////////////////////////////////////////////////////// + f_UT_MBMS_SERVICE_Interest(UT, f_Asn2Nas_PlmnId(v_Guti_Params.PLMN_Identity), oct2str(tsc_ServiceId_Def), false); //@sic R5s140440 sic@ + + // Release RRC Connection and Switch off + f_EUTRA_Postamble(eutra_Cell1, E3_TESTMODE); + } +} diff --git a/LTE_A_IWD_14wk37/LTE_A/17/MBMS_MTCH_TestCases.ttcn b/LTE_A_IWD_14wk37/LTE_A/17/MBMS_MTCH_TestCases.ttcn new file mode 100644 index 0000000..1208a00 --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/17/MBMS_MTCH_TestCases.ttcn @@ -0,0 +1,419 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-05 19:27:02 +0200 (Fri, 05 Sep 2014) $ +// $Rev: 12079 $ +/******************************************************************************/ + +module MBMS_MTCH_TestCases { + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_ASP_TypeDefs all; + import from CommonDefs all; + import from EUTRA_CellInfo all; + import from EUTRA_ASP_TypeDefs all; + import from EUTRA_CommonDefs all; + + import from EUTRA_Component all; + + import from EUTRA_AspCommon_Templates all; + import from EUTRA_CommonTemplates_MBMS all; + + import from EUTRA_ConfigurationSteps all; + import from EUTRA_Timing all; + import from EUTRA_CommonFunctions_MBMS all; + import from EUTRA_CellInfo_MBMS all; + import from EUTRA_CommonProcedures all; + import from EUTRA_LoopBack all; + import from UpperTesterFunctions all; + import from EUTRA_AuxiliaryFunctions all; + import from EUTRA_RRCSteps all; + import from L2_CommonFunctions all; + import from L2_CommonTemplates all; + import from MAC_Common all; + import from EUTRA_SecuritySteps all; + + template (value) PMCH_Info_r9 cs_PMCH_Info_1721 := cs_PMCH_Info(cs_PMCH_Config_1721, cs_MBMS_SessionInfo); /* 36.523-1 Table 17.2.1.3.3-3: MBSFNAreaConfiguration @status APPROVED (LTE_A) */ + template (value) PMCH_Info_r9 cs_PMCH_Info_1722 := cs_PMCH_Info(cs_PMCH_Config_1722, cs_MBMS_SessionInfo); /* 36.523-1 Table 17.2.2.3.3-3: MBSFNAreaConfiguration @status APPROVED (LTE_A) */ + template (value) PMCH_Info_r9 cs_PMCH_Info_1723 := cs_PMCH_Info(cs_PMCH_Config_1723, cs_MBMS_SessionInfo); /* 36.523-1 Table 17.2.2.3.3-3: MBSFNAreaConfiguration @status APPROVED (LTE_A) */ + + template (value) PMCH_Config_r9 cs_PMCH_Config_1721 := cs_PMCH_Config(7, 0, rf32); /* Acc to 36.523-1 Table 17.2.1.3.3-3: MBSFNAreaConfiguration @status APPROVED (LTE_A) */ + template (value) PMCH_Config_r9 cs_PMCH_Config_1722 := cs_PMCH_Config(3, 0, rf32); /* Acc to 36.523-1 Table 17.2.2.3.3-3: MBSFNAreaConfiguration @status APPROVED (LTE_A) */ + template (value) PMCH_Config_r9 cs_PMCH_Config_1723 := cs_PMCH_Config(3, 0, rf16); /* Acc to 36.523-1 Table 17.2.2.3.3-3: MBSFNAreaConfiguration @status APPROVED (LTE_A) */ + + + template (value) MBSFNAreaConfiguration_r9 cs_MBSFNAreaConfiguration_1721(template (value) MBSFN_SubframeConfig p_MBSFN_SubframeConfig) := + // Acc to 36.523-1 Table 17.2.1.3.3-3: MBSFNAreaConfiguration + /* @status APPROVED (LTE_A) */ + cs_MBSFNAreaConfiguration(p_MBSFN_SubframeConfig, rf32, cs_PMCH_InfoList_1Entry(cs_PMCH_Info_1721)); + + template (value) MBSFNAreaConfiguration_r9 cs_MBSFNAreaConfiguration_1722(template (value) MBSFN_SubframeConfig p_MBSFN_SubframeConfig) := + // Acc to 36.523-1 Table 17.2.2.3.3-3: MBSFNAreaConfiguration + /* @status APPROVED (LTE_A) */ + cs_MBSFNAreaConfiguration(p_MBSFN_SubframeConfig, rf16, cs_PMCH_InfoList_1Entry(cs_PMCH_Info_1722)); + + template (value) MBSFNAreaConfiguration_r9 cs_MBSFNAreaConfiguration_1723(template (value) MBSFN_SubframeConfig p_MBSFN_SubframeConfig) := + // Acc to 36.523-1 Table 17.2.2.3.3-3: MBSFNAreaConfiguration + /* @status APPROVED (LTE_A) */ + cs_MBSFNAreaConfiguration(p_MBSFN_SubframeConfig, rf16, cs_PMCH_InfoList_1Entry(cs_PMCH_Info_1723)); + + template (value) HARQ_ModeList_Type cs_HARQ_ModeList_2Nack_Ack := + { /* @status APPROVED (LTE_A) */ + nack, nack, ack + }; + + + //========================================================== + // MBMS/MBMS Data Reception/17.2 + //========================================================== + /* + * @desc REFERENCE TS 36.523-1 clause 17.2.1 + * @status APPROVED (LTE_A) + */ + function f_TC_17_2_1_EUTRA() runs on EUTRA_PTC + { /* UE Acquire the MBMS data based on the SIB13 and MCCH message /MCCH and MTCH are on the same MCH */ + var MBSFN_SubframeConfigList v_MBSFN_SubframeConfigList; + var integer v_MBMS_CounterValue; + var GutiParameters_Type v_Guti_Params; + + f_EUTRA_Init (c1); + f_EUTRA_SetSysinfoCombination_MBMS(eutra_Cell1,c15); + f_EUTRA_CellConfig_Def (eutra_Cell1); + f_EUTRA_CellConfig_MBMS_Def (eutra_Cell1); // configured def MCCH data scheduling and MTCH + + f_EUTRA_Preamble(eutra_Cell1, STATE2A_TESTLOOP_ModeC); + v_Guti_Params := f_EUTRA_CellInfo_GetGuti(eutra_Cell1); + f_UT_MBMS_SERVICE_Interest(UT, f_Asn2Nas_PlmnId(v_Guti_Params.PLMN_Identity), oct2str(tsc_ServiceId_Def), true); //@sic R5s140440 sic@ + f_EUTRA_RbEst_Def(eutra_Cell1); // Default RB establishment + f_EUTRA_CloseUE_TestLoopModeC(eutra_Cell1, cs_UE_TestLoopModeC_LB_Setup); // Bring UE in test loop mode C + v_MBSFN_SubframeConfigList :=f_EUTRA_CellInfo_GetMBSFN_SubframeConfigList(eutra_Cell1); + + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set(true); + //@siclog "Steps 1 - 2" siclog@ + // MCCH Modification Notification and MOdified MCCH info + + f_EUTRA_TransmitModifiedMCCH_Information_Blocking(eutra_Cell1,cs_MCCH_Data(tsc_Mbsfn_AreaId_Def, + { cs_MCCH_MBSFNAreaConfiguration_Msg(cs_MBSFNAreaConfiguration_1721(v_MBSFN_SubframeConfigList[0])) } ), + omit, + cs_MBSFNAreaConfiguration_1721(v_MBSFN_SubframeConfigList[0])); //@sic R5s140206 sic@ + //@siclog "Steps 3" siclog@ + // Send 15 MTCH packets in Sub frame carrying MCCH also + f_EUTRA_Send_MTCH_Data (eutra_Cell1, cs_MRB_Identity_Def,15, -, + rf32, // Scheduling Period + 0, // Stop MTCH + 7); // transmit 1 MTCH and skip 7 occasions + + f_Delay (6.0); //> 300ms + 15 * 320ms + //@siclog "Steps 4 - 5" siclog@ + // Execute MBMS counter check procedure + v_MBMS_CounterValue:=f_EUTRA_MBMS_CounterProcedure(eutra_Cell1); + if (v_MBMS_CounterValue > 0) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 5: MBMS Counter value greater than 0"); + } else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 5: MBMS Counter value not greater than 0"); + } + + f_EUTRA_TestBody_Set(false); + + /////////////////////////////////////////////////////////////////////////////////// + // Post Amble + ////////////////////////////////////////////////////////////////////////////////// + f_UT_MBMS_SERVICE_Interest (UT, f_Asn2Nas_PlmnId(v_Guti_Params.PLMN_Identity), oct2str(tsc_ServiceId_Def), false); //@sic R5s140440 sic@ + // Release RRC Connection and Switch off + f_EUTRA_Postamble(eutra_Cell1, E3_TESTMODE); + } + + + /* + * @desc REFERENCE TS 36.523-1 clause 17.2.2 + * @status APPROVED (LTE_A) + */ + function f_TC_17_2_2_EUTRA() runs on EUTRA_PTC + { /* UE Acquire the MBMS data based on the SIB13 and MCCH message /MCCH and MTCH are on different MCHs */ + var MBSFN_SubframeConfigList v_MBSFN_SubframeConfigList; + var integer v_MBMS_CounterValue; + var GutiParameters_Type v_Guti_Params; + + f_EUTRA_Init (c1); + f_EUTRA_SetSysinfoCombination_MBMS(eutra_Cell1,c15); + f_EUTRA_CellConfig_Def (eutra_Cell1); + f_EUTRA_CellConfig_MBMS_Def (eutra_Cell1); // configured def MCCH data scheduling and MTCH + + f_EUTRA_Preamble(eutra_Cell1, STATE2A_TESTLOOP_ModeC); + v_Guti_Params := f_EUTRA_CellInfo_GetGuti(eutra_Cell1); + f_UT_MBMS_SERVICE_Interest(UT, f_Asn2Nas_PlmnId(v_Guti_Params.PLMN_Identity), oct2str(tsc_ServiceId_Def), true); //@sic R5s140440 sic@ + f_EUTRA_RbEst_Def(eutra_Cell1); // Default RB establishment + f_EUTRA_CloseUE_TestLoopModeC(eutra_Cell1, cs_UE_TestLoopModeC_LB_Setup); // Bring UE in test loop mode C + v_MBSFN_SubframeConfigList :=f_EUTRA_CellInfo_GetMBSFN_SubframeConfigList(eutra_Cell1); + + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set(true); + //@siclog "Steps 1 - 2" siclog@ + // MCCH Modification Notification and MOdified MCCH info + + f_EUTRA_TransmitModifiedMCCH_Information_Blocking(eutra_Cell1,cs_MCCH_Data(tsc_Mbsfn_AreaId_Def, + { cs_MCCH_MBSFNAreaConfiguration_Msg(cs_MBSFNAreaConfiguration_1722(v_MBSFN_SubframeConfigList[0])) } ), + omit, + cs_MBSFNAreaConfiguration_1722(v_MBSFN_SubframeConfigList[0])); //@sic R5s140208 sic@ + //@siclog "Steps 3" siclog@ + // Send 15 MTCH packets in Sub frame carrying MCCH also + f_EUTRA_Send_MTCH_Data (eutra_Cell1, cs_MRB_Identity_Def,15, -, + rf32, // Scheduling Period + -, // Stop MTCH =1 + 7, // transmit 1 MTCH and skip 7 occasions + 1); // p_FirstPacketOffset =1 => SFN Mod 32[SP] = 1 *4[RFAllPer] +radioframeAllocationOffset the first packet will be scheduled + + f_Delay (6.0); //> 300ms + 15 * 320ms + //@siclog "Steps 4 - 5" siclog@ + // Execute MBMS counter check procedure + v_MBMS_CounterValue:=f_EUTRA_MBMS_CounterProcedure(eutra_Cell1); + if (v_MBMS_CounterValue > 0) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 5: MBMS Counter value greater than 0"); + } else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 5: MBMS Counter value not greater than 0"); + } + + f_EUTRA_TestBody_Set(false); + //test body ends + + /////////////////////////////////////////////////////////////////////////////////// + // Post Amble + ////////////////////////////////////////////////////////////////////////////////// + f_UT_MBMS_SERVICE_Interest (UT, f_Asn2Nas_PlmnId(v_Guti_Params.PLMN_Identity), oct2str(tsc_ServiceId_Def), false); //@sic R5s140440 sic@ + // Release RRC Connection and Switch off + f_EUTRA_Postamble(eutra_Cell1, E3_TESTMODE); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 17.2.3 + * @status APPROVED (LTE_A) + */ + function f_TC_17_2_3_EUTRA() runs on EUTRA_PTC + { /* UE receives the MBMS data when this data is in the beginning of the MSP */ + var MBSFN_SubframeConfigList v_MBSFN_SubframeConfigList; + var integer v_MBMS_CounterValue; + var GutiParameters_Type v_Guti_Params; + + f_EUTRA_Init (c1); + f_EUTRA_SetSysinfoCombination_MBMS(eutra_Cell1,c15); + f_EUTRA_CellConfig_Def (eutra_Cell1); + f_EUTRA_CellConfig_MBMS_Def (eutra_Cell1); // configured def MCCH data scheduling and MTCH + + f_EUTRA_Preamble(eutra_Cell1, STATE2A_TESTLOOP_ModeC); + v_Guti_Params := f_EUTRA_CellInfo_GetGuti(eutra_Cell1); + f_UT_MBMS_SERVICE_Interest (UT, f_Asn2Nas_PlmnId(v_Guti_Params.PLMN_Identity), oct2str(tsc_ServiceId_Def), true); //@sic R5s140440 sic@ + f_EUTRA_RbEst_Def(eutra_Cell1); // Default RB establishment + f_EUTRA_CloseUE_TestLoopModeC(eutra_Cell1, cs_UE_TestLoopModeC_LB_Setup); // Bring UE in test loop mode C + v_MBSFN_SubframeConfigList :=f_EUTRA_CellInfo_GetMBSFN_SubframeConfigList(eutra_Cell1); + + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set(true); + //@siclog "Steps 1 - 2" siclog@ + // MCCH Modification Notification and MOdified MCCH info + + f_EUTRA_TransmitModifiedMCCH_Information_Blocking(eutra_Cell1,cs_MCCH_Data(tsc_Mbsfn_AreaId_Def, + { cs_MCCH_MBSFNAreaConfiguration_Msg(cs_MBSFNAreaConfiguration_1723(v_MBSFN_SubframeConfigList[0])) } ), + omit, + cs_MBSFNAreaConfiguration_1723(v_MBSFN_SubframeConfigList[0])); //@sic R5s140210 sic@ + //@siclog "Steps 3" siclog@ + // Send 15 MTCH packets in Sub frame carrying MCCH also + f_EUTRA_Send_MTCH_Data (eutra_Cell1, cs_MRB_Identity_Def,16, -, + rf16, // Scheduling Period + 0, // Stop MTCH =0 + 3); // transmit 1 MTCH and skip 3 occasions + + f_Delay (6.0); //> 300ms + 15 * 320ms + //@siclog "Steps 4 - 5" siclog@ + // Execute MBMS counter check procedure + v_MBMS_CounterValue:=f_EUTRA_MBMS_CounterProcedure(eutra_Cell1); + if (v_MBMS_CounterValue > 0) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 5: MBMS Counter value greater than 0"); + } else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 5: MBMS Counter value not greater than 0"); + } + + f_EUTRA_TestBody_Set(false); + //test body ends + + /////////////////////////////////////////////////////////////////////////////////// + // Post Amble + ////////////////////////////////////////////////////////////////////////////////// + f_UT_MBMS_SERVICE_Interest (UT, f_Asn2Nas_PlmnId(v_Guti_Params.PLMN_Identity), oct2str(tsc_ServiceId_Def), false); //@sic R5s140440 sic@ + // Release RRC Connection and Switch off + f_EUTRA_Postamble(eutra_Cell1, E3_TESTMODE); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 17.2.4 + * @status APPROVED (LTE_A) + */ + function f_TC_17_2_4_EUTRA() runs on EUTRA_PTC + { // Reception of PDCCH DCI format 0 and PHICH in MBSFN subframes + var GutiParameters_Type v_Guti_Params; + var B6_Type v_SubFrameAlloc; + var EUTRA_FDD_TDD_Mode_Type v_EUTRA_FDD_TDD_Mode; + var SubFrameTiming_Type v_Timing; + var octetstring v_EncodedPDCPPDU; + var octetstring v_EncodedRLCPDU; + var integer v_DL_SubFrameNumber; + var template (value) MBSFN_SubframeConfigList v_MBSFN_SubframeConfigList; + + timer t_Watchdog := 5.0; + + f_EUTRA_Init (c1); + f_EUTRA_SetSysinfoCombination_MBMS(eutra_Cell1,c15); + f_EUTRA_CellConfig_Def (eutra_Cell1); + f_EUTRA_CellConfig_MBMS_Def (eutra_Cell1); // configured def MCCH data scheduling and MTCH + + f_EUTRA_Preamble(eutra_Cell1, STATE2A_TESTLOOP_ModeA); + v_Guti_Params := f_EUTRA_CellInfo_GetGuti(eutra_Cell1); + + // Disable AS ciphering on UE side. + f_EUTRA_AS_CipheringAlgorithm_Set(eea0); // set null AS ciphering algorithm + //@sic R5s140429 sic@ + f_EUTRA_RbEst_Def_DisableBSR_PHR(eutra_Cell1); // Default RB establishment + f_EUTRA_CloseUE_TestLoopModeA(eutra_Cell1, cs_UE_TestLoopModeA_LB_Setup_NoScaling); // Bring UE in test loop mode A + v_EUTRA_FDD_TDD_Mode := f_EUTRA_CellInfo_GetFDD_TDD(eutra_Cell1); + if (v_EUTRA_FDD_TDD_Mode == FDD) { + v_SubFrameAlloc := '101010'B; //corresponds to subframes 1, 3 and 7 + v_DL_SubFrameNumber := 3; + } else { + v_SubFrameAlloc := '000010'B; // corresponds to subframe 9 + v_DL_SubFrameNumber := 9; //@sic R5-144406 sic@ + } + // step to configure SS RLC/PDCP and MAC in No header manipulation mode on SS Side for DRB + f_SS_Config1TM_DRB_NoMACHeader(eutra_Cell1, tsc_RbId_DRB1, cs_MAC_TestMode_NoHeaderManipulationDL_UL); + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set(true); + //@siclog "Steps 1 - 2" siclog@ + // Update and start transmitting modified sys info + f_EUTRA_CellInfo_SetMBSFN_SubframeConfiguration(eutra_Cell1, {cs_MBSFN_SubframeConfig(n1, 0, v_SubFrameAlloc)}); + f_EUTRA_ModifySysinfo(eutra_Cell1, true, RRC_CONNECTED); + f_Delay(13.0) ;// 2.5 times of modification period =512rf + // To stop UL Grant Transmision + f_EUTRA_StopULGrantTransmission_PUCCH_Sync(eutra_Cell1, cs_TimingInfo_Now); + f_SS_ConfigPhich_TestMode(eutra_Cell1, cs_Phich_ExplicitMode(cs_HARQ_ModeList_2Nack_Ack)); + + //@siclog "Step 3" siclog@ + // Send DL MAC PDU + v_Timing := f_EUTRA_GetNextSendOccasion(eutra_Cell1); + // 1 MAC PDU = 1 RLC PDU; 1 RLC PDU =1 PDCP PDU + // MAC Header = 1B + // 1 MAC SDU of 14 => RLC SDU= 12, PDCP SDU = 10 + // Total MAC PDU = 1 + 14 = 15B = 120b (best fit) + v_EncodedPDCPPDU := f_PDCP_PDU_Encvalue(cs_PDCP_PDU_LongSN(cs_PDCP_DataPdu_LongSN(tsc_B12_SQN0, crs_PDCP_SDU_10B))); + v_EncodedRLCPDU := f_RLC_PDU_Encvalue(cs_RLC_AMD_1PDU(tsc_NoPoll, int2bit(0, 10), v_EncodedPDCPPDU)); + DRB.send (cas_DRB_COMMOM_REQ_MAC_PDU(eutra_Cell1, + tsc_RbId_DRB1, + cs_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number), + cs_MAC_PDUList_1 (cs_MAC_PDU_NoPadding_RLCPDU_LCID(tsc_LchId_DRB1, v_EncodedRLCPDU)))); + //@siclog "Step 4" siclog@ + // UL Grant + v_Timing.SFN.Number := (v_Timing.SFN.Number + 6) mod 1024; + v_Timing.Subframe.Number := v_DL_SubFrameNumber; // 3 for FDD, 9 for TDD + + f_EUTRA_OneULGrantTransmission( eutra_Cell1, + cs_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number), + 4, /* Nprb = 2, */ + 2); /* Itbs = 4, Table 7.1.7.2.1-1 of 36.213: Imcs = 4 -> Itbs = 4 MCS index of table 8.6.1-1 of 36.213=> 120 bits */ + + //@siclog "Step 5" siclog@ + // UL MAC PDU + v_Timing := f_GetSubFrameNumForULData(v_EUTRA_FDD_TDD_Mode, v_Timing); + t_Watchdog.start; + DRB.receive (car_DRB_COMMON_IND_MAC(eutra_Cell1, + tsc_RbId_DRB1, + cr_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number), + {cr_MAC_PDU_NoPadding_RLCPDU_LCID(tsc_LchId_DRB1, cr_Octet14_Any)})); + f_EUTRA_PreliminaryPass (__FILE__, __LINE__, "Step 5"); + v_Timing := f_EvaluateNext_UL_TransmissionForHARQ_Process(v_Timing, v_EUTRA_FDD_TDD_Mode); // Next TTI. + //@siclog "Step 6" siclog@ + // Automatically taken care by SS + + //@siclog "Step 7" siclog@ + // UL MAC PDU + DRB.receive (car_DRB_COMMON_IND_MAC(eutra_Cell1, + tsc_RbId_DRB1, + cr_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number), + {cr_MAC_PDU_NoPadding_RLCPDU_LCID(tsc_LchId_DRB1, cr_Octet14_Any)})); + f_EUTRA_PreliminaryPass (__FILE__, __LINE__, "Step 7"); + v_Timing := f_EvaluateNext_UL_TransmissionForHARQ_Process(v_Timing, v_EUTRA_FDD_TDD_Mode); // Next TTI. + + //@siclog "Step 8" siclog@ + // Automatically taken care by SS + + //@siclog "Step 9" siclog@ + // UL MAC PDU + DRB.receive (car_DRB_COMMON_IND_MAC(eutra_Cell1, + tsc_RbId_DRB1, + cr_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number), + {cr_MAC_PDU_NoPadding_RLCPDU_LCID(tsc_LchId_DRB1, cr_Octet14_Any)})); + + //@siclog "Step 10" siclog@ + // Automatically taken care by SS + f_RLC_Status_PDU_Tx (tsc_LchId_DRB1, 1); //@sic R5s140585 sic@ + + //@siclog "Step 11" siclog@ + alt { + [] DRB.receive (car_DRB_COMMON_IND_MAC(eutra_Cell1, + tsc_RbId_DRB1, + cr_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number), + {cr_MAC_PDU_NoPadding_RLCPDU_LCID(tsc_LchId_DRB1, cr_Octet14_Any)})) + { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 11: UE retransmits MAC PDU"); + t_Watchdog.stop; + } + []t_Watchdog.timeout + { + f_EUTRA_PreliminaryPass (__FILE__, __LINE__, "Step 11: UE does not retransmits MAC PDU"); + } + } + + + // configure SS for default PHICH mode + f_SS_ConfigPhich_TestMode (eutra_Cell1, cs_PhichTestModeNormal); + f_SS_Config1TM_DRB_NoMACHeader(eutra_Cell1, tsc_RbId_DRB1, cs_MAC_TestMode_NormalMode); // configure SS in normal mode + // configure SS for default grant allocation + f_EUTRA_StartDefULGrantTransmission(eutra_Cell1); + + //@siclog "Steps 12 - 13" siclog@ + // Update and start transmitting modified sys info + if (v_EUTRA_FDD_TDD_Mode == FDD) { + v_MBSFN_SubframeConfigList := { + cs_MBSFN_SubframeConfig_Def(1, '100000'B) + }; + } else { + v_MBSFN_SubframeConfigList := { + cs_MBSFN_SubframeConfig_Def(0, '000010'B) + }; + } + + f_EUTRA_CellInfo_SetMBSFN_SubframeConfiguration(eutra_Cell1,v_MBSFN_SubframeConfigList); + f_EUTRA_ModifySysinfo(eutra_Cell1, true, RRC_CONNECTED); + + f_EUTRA_TestBody_Set(false); + //test body ends + + /////////////////////////////////////////////////////////////////////////////////// + // Post Amble + ////////////////////////////////////////////////////////////////////////////////// + + // Release RRC Connection and Switch off + f_EUTRA_Postamble(eutra_Cell1, E3_TESTMODE); + } + + // End of module +} + diff --git a/LTE_A_IWD_14wk37/LTE_A/17/MBMS_SC_CA.ttcn b/LTE_A_IWD_14wk37/LTE_A/17/MBMS_SC_CA.ttcn new file mode 100644 index 0000000..ef4fa45 --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/17/MBMS_SC_CA.ttcn @@ -0,0 +1,751 @@ + /******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-06-04 15:00:55 +0200 (Wed, 04 Jun 2014) $ +// $Rev: 11524 $ +/******************************************************************************/ + +module MBMS_SC_CA { + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from CommonDefs all; + import from EUTRA_CellInfo all; + import from EUTRA_CommonDefs all; + import from EUTRA_Component all; + import from EUTRA_BandDependentParam all; + + import from EUTRA_Measurement_Templates all; + import from EUTRA_SRB_Templates all; + import from EUTRA_SysInfo_Templates all; + + import from EUTRA_ConfigurationSteps all; + import from EUTRA_CommonProcedures all; + import from EUTRA_RRCSteps all; + import from UpperTesterFunctions all; + import from EUTRA_LoopBack all; + + import from EUTRA_CommonTemplates_MBMS all; + import from EUTRA_CommonFunctions_MBMS all; + import from EUTRA_CellInfo_MBMS all; + import from EUTRA_CommonFunctions_CA all; + import from EUTRA_CellInfoInit_CA all; + import from EUTRA_RRC_Templates_CA all; + import from EUTRA_Measurement_Templates_CA all; + import from Parameters all; + + type MBMSInterestIndication_r11_IEs.mbms_Priority_r11 Mbms_Priority_r11_Type; + + //================================================================================= + // Templates + //================================================================================= + /*template (present) UL_DCCH_Message cr_MbmsInterestIndication_Common ( template MBMSInterestIndication_r11_IEs p_MBMSInterestIndication_r11 ) := + { + message_ := { + messageClassExtension :={ + c2 := { + mbmsInterestIndication_r11 := { + criticalExtensions := { + c1 := { + interestIndication_r11 := p_MBMSInterestIndication_r11 + } + } + } + } + } + } + }; + + template (present) MBMSInterestIndication_r11_IEs cr_MbmsInterestIndication ( template (present) CarrierFreqListMBMS_r11 p_Mbms_FreqList_r11, + template (omit) Mbms_Priority_r11_Type p_Mbms_Priority_r11 := omit) := { + mbms_FreqList_r11 := p_Mbms_FreqList_r11, + mbms_Priority_r11 := p_Mbms_Priority_r11, + lateNonCriticalExtension := omit, + nonCriticalExtension := omit + } */ +template (value) MeasConfig cs_Measurement_Config_A3_InterFreq_17_4_x(ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq1, + AllowedMeasBandwidth p_MeasurementBandwidth1, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq2, + AllowedMeasBandwidth p_MeasurementBandwidth2, + MeasObjectId p_MeasObjectId_2, + template (value) MeasGapConfig p_MeasGapConfig := cs_508_MeasGapConfig_GP1) := + + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_2Entries(tsc_IdMeasObject_f1, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq1, p_MeasurementBandwidth1), + p_MeasObjectId_2, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq2, p_MeasurementBandwidth2)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_A3, cs_508_ReportConfigEUTRA_A3), + omit, + cs_MeasIdToAddModList_1Entry( 1, p_MeasObjectId_2, tsc_IdReportConfig_A3 ), + -, + p_MeasGapConfig); + + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_17_4_X_EventA2(RRC_TransactionIdentifier p_RRC_TI, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq, + AllowedMeasBandwidth p_MeasurementBandwidth, + MeasObjectId p_MeasObjectId) := + + cs_508_RRCConnectionReconfiguration_ConditionMEAS(p_RRC_TI, + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_1Entry(p_MeasObjectId, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq, p_MeasurementBandwidth)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_A2, + cs_ReportConfig_reportConfigEUTRA_eventA2_RSRP(-83, + 6, + ms320, + rsrp, + both, + 1, + ms1024, + r1)), + omit, + cs_MeasIdToAddModList_1Entry(1, + p_MeasObjectId, + tsc_IdReportConfig_A2))); + + + //================================================================================= + // FUNCTIONS + //================================================================================= + + + //================================================================================= + // TEST CASES + //================================================================================= + /* + * @desc REFERENCE TS 36.523-1 clause 17.4.9.x + * @status + */ + function f_TC_17_4_9_Common(EUTRA_CellId_Type p_PCellId, + EUTRA_CellId_Type p_SCellId, + CA_Tested_Type p_CA_Type) runs on EUTRA_PTC + { /* CA / Start MBMS reception on Non-Serving Cell / Continue MBMS reception on SCell after SCell addition */ + var integer v_MBMS_CounterValue, v_MBMS_CounterValue2; + var template (value) CellPowerList_Type v_CellPowerList_AtT1 := { + cs_CellPower(p_SCellId, tsc_ServingCellRS_EPRE) + }; + var MeasObjectId v_MeasObjectId ; + var default v_DefaultRef; + var PhysCellId v_PhysicalCellIdentity_Scell; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var Frequency_IE_Type v_Frequency_IE_PCell; + var Frequency_IE_Type v_Frequency_IE_Scell; + var ChannelBandwidthDependency_Type v_ChBandDependency_PCell; + var ChannelBandwidthDependency_Type v_ChBandDependency_Scell; + var boolean v_UL_CA := pc_UL_CA; + var CarrierFreqEUTRA v_CarrierFreq_Scell; + + + f_EUTRA_Init(c3); + f_EUTRA_CA_InitCells({p_PCellId, p_SCellId}, p_CA_Type, c3); + f_EUTRA_SetSysinfoCombination_MBMS(p_SCellId,c16); + //Set maximim cell powel level for cell P be used in creation + f_EUTRA_CellInfo_InitMaxReferencePower(p_PCellId, -79); + + //Set C-RNTI to be used in s-cell creation + f_EUTRA_CellInfo_SetC_RNTI(p_SCellId, tsc_C_RNTI_Def); + + f_EUTRA_CellConfig_Pcell_Def(p_PCellId); + f_EUTRA_CellConfig_Scell(p_SCellId); //No DRB's created + f_EUTRA_CellConfig_MBMS_Def(p_SCellId); // Configured MBSFN + MTCH + transmit MBSFNAreaConfiguration + + + + //Perform Idle updated procedure to make sure UE is in a known state before test case starts + //Bring UE to initial state + f_EUTRA_Preamble(p_PCellId, STATE2A_TESTLOOP_ModeC); + f_EUTRA_RbEst_Def(p_PCellId); // Default RB establishment + f_EUTRA_CloseUE_TestLoopModeC(p_PCellId, cs_UE_TestLoopModeC_LB_Setup); // Bring UE in test loop mode C + f_UT_MBMS_SERVICE_Interest(UT, omit, oct2str(tsc_ServiceId_Def), true,tsc_MBMS_SAI_Def); + f_UT_MBMS_SERVICE_Active(UT, oct2str(tsc_ServiceId_Def),true, tsc_MBMS_SAI_Def ); + + if (p_CA_Type == CA_IntraBand) + { + v_MeasObjectId := tsc_IdMeasObject_f2; + } else + { + v_MeasObjectId := tsc_IdMeasObject_f5; + } + v_PhysicalCellIdentity_Scell := f_EUTRA_CellInfo_GetPhyCellId(p_SCellId); + v_Frequency_IE_Scell := f_EUTRA_CellInfo_GetFrequencyIEs(p_SCellId); + v_ChBandDependency_Scell := f_EUTRA_BandDependentParam(v_Frequency_IE_Scell.DL_ChBandwidth, + v_Frequency_IE_Scell.UL_ChBandwidth); + v_Frequency_IE_PCell := f_EUTRA_CellInfo_GetFrequencyIEs(p_PCellId); + v_ChBandDependency_PCell := f_EUTRA_BandDependentParam(v_Frequency_IE_PCell.DL_ChBandwidth, + v_Frequency_IE_PCell.UL_ChBandwidth); + v_CarrierFreq_Scell := f_EUTRA_CellInfo_GetEARFCN(p_SCellId); + + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set(true); + //@siclog "Step 1-2" siclog@ + //Configure Measurement + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(p_PCellId, + cs_508_RRCConnectionReconfiguration_ConditionMEAS(v_RRC_TI, + cs_Measurement_Config_A3_InterFreq_CA(v_Frequency_IE_PCell.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_PCell.AllowedMeasBandwidth, + v_Frequency_IE_Scell.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Scell.AllowedMeasBandwidth, + v_MeasObjectId, + cs_508_MeasGapConfig_GP1))); + //@siclog "Step 3" siclog@ + //Set cell power level according to T1 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + + //@siclog "Step 4" siclog@ + //Receive MeasurementReport + SRB.receive(car_SRB1_RrcPdu_IND(p_PCellId, cr_MeasurementReport(1, //Meas id + ?, //RSRP result + ?, //RSRQ result + cr_MeasResultNeighCells_measResultListEUTRA_1Entry(v_PhysicalCellIdentity_Scell, + omit, //CGI info + ?, //RSRP result + ?))));//RSRQ result + + //Activate the default to receive further measurement reports for cell 2 on cell 1 + v_DefaultRef := activate(a_EUTRA_AddDefault_PeriodicalMeasurmentReport(p_PCellId, + cr_MeasurementReport(1, ?, ?, + cr_MeasResultNeighCells_measResultListEUTRA_1Entry(v_PhysicalCellIdentity_Scell, omit, ?, ?), + ?))); + //@siclog "Step 4A-5" siclog@ + f_ModifySysinfoCombinationC16_ToC20(p_SCellId); + f_ModifySysinfoCombinationC3_ToC18 (p_PCellId, {cs_508_MBMS_SAI_InterFreq_r11_Def(v_Frequency_IE_Scell.UL_DL_Earfcn.dl_CarrierFreq, + 1)}); + f_EUTRA_ModifySysinfo ( p_PCellId, true, RRC_CONNECTED ); + + //@siclog "Step 6" siclog@ + //Check: Does the UE transmit MBMSInterestIndication message? + SRB.receive(car_SRB1_RrcPdu_IND(p_PCellId, cr_MbmsInterestIndication_Common(cr_MbmsInterestIndication({v_Frequency_IE_Scell.UL_DL_Earfcn.dl_CarrierFreq})))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 6: Does the UE transmit MBMSInterestIndication message"); + + //@siclog "Step 7" siclog@ + f_Delay (2.0); + + //@siclog "Steps 8-9" siclog@ + // Send 10 MTCH packets + f_EUTRA_Send_MTCH_Data (p_SCellId, cs_MRB_Identity_Def,10, -, + rf8, // Scheduling Period + -, // Stop MTCH =1 + 7, // transmit 1 MTCH and skip 7 occasions + 1); // p_FirstPacketOffset =1 => SFN Mod 32[SP] = 1 *4[RFAllPer] +radioframeAllocationOffset the first packet will be scheduled + + f_Delay (6.0); //> 300ms + 15 * 320ms + + //@siclog "Steps 10 - 12" siclog@ + // Execute MBMS counter check procedure + v_MBMS_CounterValue:=f_EUTRA_MBMS_CounterProcedure(p_PCellId); + if (v_MBMS_CounterValue > 0) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 12: MBMS Counter value greater than 0"); + } else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 12: MBMS Counter value not greater than 0"); + } + + //@siclog "Step 13 - 14" siclog@ + //Transmit RRCConnectionReconfiguration + //Receive RRCConnectionReconfigurationComplete + f_EUTRA_508RRC_AddMod_1Scell(p_PCellId, + p_SCellId, + 1, //SCellIndex_r10 + p_CA_Type, // CA Type + v_UL_CA,// UL CA desired + -, //C-RNTI + cs_508_MeasGapConfig_GP1 // + ); + + //@siclog "Steps 15-16" siclog@ + // Send 10 MTCH packets + f_EUTRA_Send_MTCH_Data (p_SCellId, cs_MRB_Identity_Def,10, -, + rf8, // Scheduling Period + -, // Stop MTCH =1 + 7, // transmit 1 MTCH and skip 7 occasions + 1); // p_FirstPacketOffset =1 => SFN Mod 32[SP] = 1 *4[RFAllPer] +radioframeAllocationOffset the first packet will be scheduled + + f_Delay (6.0); //> 300ms + 15 * 320ms + + //@siclog "Steps 17 - 19" siclog@ + // Execute MBMS counter check procedure + v_MBMS_CounterValue2:=f_EUTRA_MBMS_CounterProcedure(p_PCellId); + if (v_MBMS_CounterValue2 > v_MBMS_CounterValue) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 19: MBMS Counter value greater than 0"); + } else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 19: MBMS Counter value not greater than 0"); + } + + f_EUTRA_TestBody_Set(false); + deactivate(v_DefaultRef); + //test body ends + + /////////////////////////////////////////////////////////////////////////////////// + // Post Amble + ////////////////////////////////////////////////////////////////////////////////// + f_UT_MBMS_SERVICE_Active(UT, oct2str(tsc_ServiceId_Def),false, tsc_MBMS_SAI_Def ); + f_UT_MBMS_SERVICE_Interest(UT, omit, oct2str(tsc_ServiceId_Def), false, tsc_MBMS_SAI_Def); + // Release RRC Connection and Switch off + f_EUTRA_Postamble(p_PCellId, E2_CONNECTED); + } + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 17.4.9.1 + * @status + */ + function f_TC_17_4_9_1_EUTRA () runs on EUTRA_PTC + { /*CA / Start MBMS reception on Non-Serving Cell / Continue MBMS reception on SCell after SCell addition / Intra-band Contiguous CA */ + f_TC_17_4_9_Common(eutra_Cell1, eutra_Cell3, CA_IntraBand); + } + + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 17.4.9.2 + * @status + */ + function f_TC_17_4_9_2_EUTRA () runs on EUTRA_PTC + { /* CA / Start MBMS reception on Non-Serving Cell / Continue MBMS reception on SCell after SCell addition / Inter-band CA */ + f_TC_17_4_9_Common(eutra_Cell1, eutra_Cell10, CA_InterBand); + } + + + /* + * @desc REFERENCE TS 36.523-1 clause 17.4.10.x + * @status + */ + function f_TC_17_4_10_Common(EUTRA_CellId_Type p_PCellId, + EUTRA_CellId_Type p_SCellId, + CA_Tested_Type p_CA_Type) runs on EUTRA_PTC + { /* CA / Start MBMS reception on SCell / Continue MBMS reception on Non-Serving after SCell release */ + var integer v_MBMS_CounterValue, v_MBMS_CounterValue2; + var template (value) CellPowerList_Type v_CellPowerList_AtT0 := { + cs_CellPower(p_SCellId, tsc_ServingCellRS_EPRE) + }; + var PhysCellId v_PhysicalCellIdentity_Scell; + var Frequency_IE_Type v_Frequency_IE_PCell; + var Frequency_IE_Type v_Frequency_IE_Scell; + var ChannelBandwidthDependency_Type v_ChBandDependency_PCell; + var ChannelBandwidthDependency_Type v_ChBandDependency_Scell; + var boolean v_UL_CA := pc_UL_CA; + var CarrierFreqEUTRA v_CarrierFreq_Scell; + //var default v_DefaultRef; + + + + f_EUTRA_Init(c3); + f_EUTRA_CA_InitCells({p_PCellId, p_SCellId}, p_CA_Type, c3); + f_EUTRA_SetSysinfoCombination_MBMS(p_SCellId,c16); + //Set maximim cell powel level for cell P be used in creation + f_EUTRA_CellInfo_InitMaxReferencePower(p_PCellId, -79); + + //Set C-RNTI to be used in s-cell creation + f_EUTRA_CellInfo_SetC_RNTI(p_SCellId, tsc_C_RNTI_Def); + + f_EUTRA_CellConfig_Pcell_Def(p_PCellId); + f_EUTRA_CellConfig_Scell(p_SCellId); //No DRB's created + f_EUTRA_CellConfig_MBMS_Def(p_SCellId); // Configured MBSFN + MTCH + transmit MBSFNAreaConfiguration + + + + //Perform Idle updated procedure to make sure UE is in a known state before test case starts + //Bring UE to initial state + f_EUTRA_Preamble(p_PCellId, STATE2A_TESTLOOP_ModeC); + f_EUTRA_RbEst_Def(p_PCellId); // Default RB establishment + f_EUTRA_CloseUE_TestLoopModeC(p_PCellId, cs_UE_TestLoopModeC_LB_Setup); // Bring UE in test loop mode C + f_UT_MBMS_SERVICE_Interest(UT, omit, oct2str(tsc_ServiceId_Def), true,tsc_MBMS_SAI_Def); + f_UT_MBMS_SERVICE_Active(UT, oct2str(tsc_ServiceId_Def),true, tsc_MBMS_SAI_Def ); + + v_PhysicalCellIdentity_Scell := f_EUTRA_CellInfo_GetPhyCellId(p_SCellId); + v_Frequency_IE_Scell := f_EUTRA_CellInfo_GetFrequencyIEs(p_SCellId); + v_ChBandDependency_Scell := f_EUTRA_BandDependentParam(v_Frequency_IE_Scell.DL_ChBandwidth, + v_Frequency_IE_Scell.UL_ChBandwidth); + v_Frequency_IE_PCell := f_EUTRA_CellInfo_GetFrequencyIEs(p_PCellId); + v_ChBandDependency_PCell := f_EUTRA_BandDependentParam(v_Frequency_IE_PCell.DL_ChBandwidth, + v_Frequency_IE_PCell.UL_ChBandwidth); + v_CarrierFreq_Scell := f_EUTRA_CellInfo_GetEARFCN(p_SCellId); + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT0); + + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set(true); + //@siclog "Step 1-2" siclog@ + //Transmit RRCConnectionReconfiguration + //Receive RRCConnectionReconfigurationComplete + f_EUTRA_508RRC_AddMod_1Scell(p_PCellId, + p_SCellId, + 1, //SCellIndex_r10 + p_CA_Type, // CA Type + v_UL_CA,// UL CA desired + -, //C-RNTI + cs_508_MeasGapConfig_GP1 // + ); + + //@siclog "Step 2A-3" siclog@ + f_ModifySysinfoCombinationC16_ToC20 (p_SCellId); + f_ModifySysinfoCombinationC3_ToC18 (p_PCellId,{cs_508_MBMS_SAI_InterFreq_r11_Def(v_Frequency_IE_Scell.UL_DL_Earfcn.dl_CarrierFreq, + 1)}); + f_EUTRA_ModifySysinfo ( p_PCellId, true, RRC_CONNECTED ); + + //@siclog "Step 4" siclog@ + //Check: Does the UE transmit MBMSInterestIndication message? + SRB.receive(car_SRB1_RrcPdu_IND(p_PCellId, cr_MbmsInterestIndication_Common(cr_MbmsInterestIndication({v_Frequency_IE_Scell.UL_DL_Earfcn.dl_CarrierFreq})))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 6: Does the UE transmit MBMSInterestIndication message"); + + //@siclog "Step 5" siclog@ + f_Delay (6.0);//> 300ms + 15 * 320ms + + //@siclog "Steps 6-7" siclog@ + // Send 10 MTCH packets + f_EUTRA_Send_MTCH_Data (p_SCellId, cs_MRB_Identity_Def,10, -, + rf8, // Scheduling Period + -, // Stop MTCH =1 + 7, // transmit 1 MTCH and skip 7 occasions + 1); // p_FirstPacketOffset =1 => SFN Mod 32[SP] = 1 *4[RFAllPer] +radioframeAllocationOffset the first packet will be scheduled + + f_Delay (6.0); //> 300ms + 15 * 320ms + + //@siclog "Steps 8 - 10" siclog@ + // Execute MBMS counter check procedure + v_MBMS_CounterValue:=f_EUTRA_MBMS_CounterProcedure(p_PCellId); + if (v_MBMS_CounterValue > 0) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 10: MBMS Counter value greater than 0"); + } else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 10: MBMS Counter value not greater than 0"); + } + + + //@siclog "Step 11 - 12" siclog@ + //Transmit RRCConnectionReconfiguration + //Receive RRCConnectionReconfigurationComplete + f_EUTRA_508RRC_Rel_1Scell(p_PCellId, + p_SCellId, + 1); //SCellIndex_r10 + + //@siclog "Steps 13-14" siclog@ + // Send 10 MTCH packets + f_EUTRA_Send_MTCH_Data (p_SCellId, cs_MRB_Identity_Def,10, -, + rf8, // Scheduling Period + -, // Stop MTCH =1 + 7, // transmit 1 MTCH and skip 7 occasions + 1); // p_FirstPacketOffset =1 => SFN Mod 32[SP] = 1 *4[RFAllPer] +radioframeAllocationOffset the first packet will be scheduled + + f_Delay (6.0); //> 300ms + 15 * 320ms + + //@siclog "Steps 15 - 17" siclog@ + // Execute MBMS counter check procedure + v_MBMS_CounterValue2:=f_EUTRA_MBMS_CounterProcedure(p_PCellId); + if (v_MBMS_CounterValue2 > v_MBMS_CounterValue) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 17: MBMS Counter value greater than 0"); + } else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 17: MBMS Counter value not greater than 0"); + } + + f_EUTRA_TestBody_Set(false); + //test body ends + + /////////////////////////////////////////////////////////////////////////////////// + // Post Amble + ////////////////////////////////////////////////////////////////////////////////// + f_UT_MBMS_SERVICE_Active(UT, oct2str(tsc_ServiceId_Def),false, tsc_MBMS_SAI_Def ); + f_UT_MBMS_SERVICE_Interest(UT, omit, oct2str(tsc_ServiceId_Def), false, tsc_MBMS_SAI_Def); + // Release RRC Connection and Switch off + f_EUTRA_Postamble(p_PCellId, E2_CONNECTED); + } + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 17.4.10.1 + * @status + */ + function f_TC_17_4_10_1_EUTRA () runs on EUTRA_PTC + { /*CA / Start MBMS reception on SCell / Continue MBMS reception on Non-Serving after SCell release / Intra-band Contiguous CA */ + f_TC_17_4_10_Common(eutra_Cell1, eutra_Cell3, CA_IntraBand); + } + + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 17.4.10.2 + * @status + */ + function f_TC_17_4_10_2_EUTRA () runs on EUTRA_PTC + { /* CA / Start MBMS reception on SCell / Continue MBMS reception on Non-Serving after SCell release / Inter-band CA */ + f_TC_17_4_10_Common(eutra_Cell1, eutra_Cell10, CA_InterBand); + } + + + /* + * @desc REFERENCE TS 36.523-1 clause 17.4.11.x + * @status + */ + function f_TC_17_4_11_Common(EUTRA_CellId_Type p_PCellId, + EUTRA_CellId_Type p_SCellId, + CA_Tested_Type p_CA_Type) runs on EUTRA_PTC + { /* CA / Start MBMS reception on PCell / Continue MBMS reception after swap of SCell and PCell */ + var integer v_MBMS_CounterValue, v_MBMS_CounterValue2, v_MBMS_CounterValue3; + var template (value) CellPowerList_Type v_CellPowerList_AtT0_T2 := { + cs_CellPower(p_PCellId, -70), + cs_CellPower(p_SCellId, -96) + }; + var template (value) CellPowerList_Type v_CellPowerList_AtT1 := { + cs_CellPower(p_PCellId, -96), + cs_CellPower(p_SCellId, -70) + }; + var MeasObjectId v_MeasObjectId ; + //var default v_DefaultRef; + var Frequency_IE_Type v_Frequency_IE_PCell; + var Frequency_IE_Type v_Frequency_IE_SCell; + var ChannelBandwidthDependency_Type v_ChBandDependency_PCell; + var ChannelBandwidthDependency_Type v_ChBandDependency_SCell; + var boolean v_UL_CA := pc_UL_CA; + var CarrierFreqEUTRA v_CarrierFreq_SCell; + var PhysCellId v_PhysicalCellIdentity_Scell, v_PhysicalCellIdentity_Pcell; + var integer v_Arfcn_PCell, v_Arfcn_SCell; + var SCell_DL_Bandwidth_Type v_PCell_DL_Bandwidth, v_SCell_DL_Bandwidth; + var template (value) SCellToAddMod_r10 v_SCellToAddMod; + var template (omit) CommonSCell_UL_Configuration_Type v_CommonSCell_UL_Configuration := omit; + var template (omit) DedicatedSCell_UL_Configuration_Type v_DedicatedSCell_UL_Configuration := omit; + var EUTRA_FDD_TDD_CellInfo_Type v_FDD_TDDInfo; + var template(omit) TDD_Config v_TDD_Config := omit; // omitted in FDD + var template (value) PUCCH_ConfigDedicated_v1020 v_PUCCH_ConfigDedicated; + var template (omit) AdditionalSpectrumEmissionCA_r10_Type v_AdditionalSpectrumEmissionCA_r10 := omit; + var Ul_Bandwidth_Type v_UL_Bandwidth ; + var Dl_Bandwidth_Type v_DL_Bandwidth ; + var ChannelBandwidthDependency_Type v_ChannelBandwidthDependency; + var RadioResourceConfigCommonSIB v_RadioResourceConfigCommonSIB ; + var EUTRA_CellSysInfo_Type v_EUTRA_CellSysInfo_Type ; + + + f_EUTRA_Init(c3); + f_EUTRA_CA_InitCells({p_PCellId, p_SCellId}, p_CA_Type, c3); + f_EUTRA_SetSysinfoCombination_MBMS(p_PCellId,c16); + //Set maximim cell powel level for cell P be used in creation + f_EUTRA_CellInfo_InitMaxReferencePower(p_PCellId, -70); + f_EUTRA_CellInfo_InitMaxReferencePower(p_SCellId, -70); + + //Set C-RNTI to be used in s-cell creation + f_EUTRA_CellInfo_SetC_RNTI(p_SCellId, tsc_C_RNTI_Def); + + f_EUTRA_CellConfig_Pcell_Def(p_PCellId); + f_EUTRA_CellConfig_Scell(p_SCellId); //No DRB's created + f_EUTRA_CellConfig_MBMS_Def(p_SCellId); // Configured MBSFN + MTCH + transmit MBSFNAreaConfiguration + + + + //Perform Idle updated procedure to make sure UE is in a known state before test case starts + //Bring UE to initial state + f_EUTRA_Preamble(p_PCellId, STATE2A_TESTLOOP_ModeC); + f_EUTRA_RbEst_Def(p_PCellId); // Default RB establishment + f_EUTRA_CloseUE_TestLoopModeC(p_PCellId, cs_UE_TestLoopModeC_LB_Setup); // Bring UE in test loop mode C + f_UT_MBMS_SERVICE_Interest(UT, omit, oct2str(tsc_ServiceId_Def), true,tsc_MBMS_SAI_Def); + f_UT_MBMS_SERVICE_Active(UT, oct2str(tsc_ServiceId_Def),true, tsc_MBMS_SAI_Def ); + + if (p_CA_Type == CA_IntraBand) + { + v_MeasObjectId := tsc_IdMeasObject_f2; + } else + { + v_MeasObjectId := tsc_IdMeasObject_f5; + } + v_PhysicalCellIdentity_Pcell := f_EUTRA_CellInfo_GetPhyCellId(p_PCellId); + v_PhysicalCellIdentity_Scell := f_EUTRA_CellInfo_GetPhyCellId(p_SCellId); + v_Frequency_IE_SCell := f_EUTRA_CellInfo_GetFrequencyIEs(p_SCellId); + v_ChBandDependency_SCell := f_EUTRA_BandDependentParam(v_Frequency_IE_SCell.DL_ChBandwidth, + v_Frequency_IE_SCell.UL_ChBandwidth); + v_Frequency_IE_PCell := f_EUTRA_CellInfo_GetFrequencyIEs(p_PCellId); + v_ChBandDependency_PCell := f_EUTRA_BandDependentParam(v_Frequency_IE_PCell.DL_ChBandwidth, + v_Frequency_IE_PCell.UL_ChBandwidth); + v_CarrierFreq_SCell := f_EUTRA_CellInfo_GetEARFCN(p_SCellId); + //Set cell power level according to T0 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT0_T2); + + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set(true); + //@siclog "Step 1-2" siclog@ + //Transmit RRCConnectionReconfiguration + //Receive RRCConnectionReconfigurationComplete + f_EUTRA_508RRC_AddMod_1Scell(p_PCellId, + p_SCellId, + 1, //SCellIndex_r10 + p_CA_Type, // CA Type + v_UL_CA,// UL CA desired + -, //C-RNTI + - // + ); + //@siclog "Step 3" siclog@ + f_ModifySysinfoCombinationC16_ToC20 (p_PCellId); + f_EUTRA_ModifySysinfo ( p_PCellId, true, RRC_CONNECTED ); + f_ModifySysinfoCombinationC3_ToC18 (p_SCellId, {cs_508_MBMS_SAI_InterFreq_r11_Def(v_Frequency_IE_PCell.UL_DL_Earfcn.dl_CarrierFreq, + 1)}); + f_EUTRA_ModifySysinfo ( p_SCellId, false ); + + //@siclog "Step 4" siclog@ + //Check: Does the UE transmit MBMSInterestIndication message? + SRB.receive(car_SRB1_RrcPdu_IND(p_PCellId, cr_MbmsInterestIndication_Common(cr_MbmsInterestIndication({v_Frequency_IE_PCell.UL_DL_Earfcn.dl_CarrierFreq})))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 4: Does the UE transmit MBMSInterestIndication message"); + + //@siclog "Step 5" siclog@ + f_Delay (6.0); //> 300ms + 15 * 320ms + + //@siclog "Steps 6-7" siclog@ + // Send 10 MTCH packets + f_EUTRA_Send_MTCH_Data (p_PCellId, cs_MRB_Identity_Def,10, -, + rf8); // p_FirstPacketOffset =1 => SFN Mod 32[SP] = 1 *4[RFAllPer] +radioframeAllocationOffset the first packet will be scheduled + + f_Delay (6.0); //> 300ms + 15 * 320ms + + //@siclog "Steps 8 - 10" siclog@ + // Execute MBMS counter check procedure + v_MBMS_CounterValue:=f_EUTRA_MBMS_CounterProcedure(p_PCellId); + if (v_MBMS_CounterValue > 0) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 10: MBMS Counter value greater than 0"); + } else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 10: MBMS Counter value not greater than 0"); + } + + //@siclog "Step 11-12" siclog@ + //SS transmits an RRCConnectionReconfiguration message including measurementConfiguration to setup intra LTE measurement and reporting for event A2 and receives an RCConnectionReconfigurationComplete message. + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(p_PCellId, + cs_RRCConnectionReconfiguration_17_4_X_EventA2(tsc_RRC_TI_Def, + v_Frequency_IE_PCell.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_PCell.AllowedMeasBandwidth, + tsc_IdMeasObject_f1)); + + + //@siclog "Step 13" siclog@ + //SS re-adjusts the cell-specific reference signal level according to row "T1" in table 8.3.1.2.3.2.-1. + f_EUTRA_SetCellPowerList( v_CellPowerList_AtT1); + + //@siclog "Step 14" siclog@ + //Check: does the UE transmit a MeasurementReport message to report event A2 with the measured RSRP value for Cell 1? + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_MeasurementReport(1, ?, ?, omit))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 17.4.11.x Step 14"); + + //@siclog "Step 15 - 16" siclog@ + //Transmit RRCConnectionReconfiguration + //Receive RRCConnectionReconfigurationComplete + v_Arfcn_PCell := f_EUTRA_CellInfo_GetEARFCN_DL(p_PCellId); + v_Arfcn_SCell := f_EUTRA_CellInfo_GetEARFCN_DL(p_SCellId); + v_PCell_DL_Bandwidth := f_EUTRA_CellInfo_GetSCell_DL_ChBandwidth(p_PCellId); + v_SCell_DL_Bandwidth := f_EUTRA_CellInfo_GetSCell_DL_ChBandwidth(p_SCellId); + v_UL_Bandwidth := f_EUTRA_CellInfo_GetUL_ChBandwidth(p_PCellId); + v_DL_Bandwidth := f_EUTRA_CellInfo_GetDL_ChBandwidth(p_PCellId); + v_ChannelBandwidthDependency := f_EUTRA_BandDependentParam(v_DL_Bandwidth, v_UL_Bandwidth); + v_EUTRA_CellSysInfo_Type := f_EUTRA_CellInfo_GetSYSINFO(p_PCellId); + v_RadioResourceConfigCommonSIB := v_EUTRA_CellSysInfo_Type.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon; + v_FDD_TDDInfo := f_EUTRA_CellInfo_GetFDD_TDD_Info(p_PCellId); + if (v_FDD_TDDInfo.FDD_TDD == TDD) { // initialise tdd-Configuration to be used in + v_TDD_Config := cs_TDD_ConfigDef(v_FDD_TDDInfo.TDD_SubframeAssignment); // Value omitted in FDD + v_PUCCH_ConfigDedicated := cs_508_PUCCH_ConfigDedicated_v1020_2TX(cs_N1PUCCH_AN_CS_r10_FDD_1TX, cs_N1PUCCH_AN_CS_r10_FDD_2TX); //@sic R5-133275 sic@ + } + else { //FDD + v_PUCCH_ConfigDedicated := cs_508_PUCCH_ConfigDedicated_v1020_1TX(cs_N1PUCCH_AN_CS_r10_FDD_1TX); + // TBD for 2TX + } + + if (v_UL_CA) { + if (p_CA_Type == CA_InterBand) { // 36.508 Table 4.8.2.1.6-1 + v_AdditionalSpectrumEmissionCA_r10 := cs_AdditionalSpectrumEmissionCA_r10_Def; + } + + v_CommonSCell_UL_Configuration := cs_RadioResourceConfigCommonSCell_UL_Configuration_DEFAULT(v_ChannelBandwidthDependency.Pusch_HoppingOffset, v_RadioResourceConfigCommonSIB.soundingRS_UL_ConfigCommon); + if (v_FDD_TDDInfo.FDD_TDD == TDD) { + v_DedicatedSCell_UL_Configuration := cs_RadioResourceConfigDedicatedSCell_UL_Configuration_DEFAULT(cs_CQI_ReportPeriodic_r10_DEFAULT_TDD); + } + else { + v_DedicatedSCell_UL_Configuration := cs_RadioResourceConfigDedicatedSCell_UL_Configuration_DEFAULT(cs_CQI_ReportPeriodic_r10_DEFAULT_FDD); + } + } + v_SCellToAddMod := cs_SCellToAddMod_r10(1, + v_PhysicalCellIdentity_Pcell, + v_Arfcn_PCell, + cs_508_RadioResourceConfigCommonSCell_r10_DEFAULT(v_PCell_DL_Bandwidth, tsc_P_b_1Tx, v_CommonSCell_UL_Configuration, v_TDD_Config), + cs_RadioResourceConfigDedicatedSCell_r10(cs_PhysicalConfigDedicatedSCell_r10_DEFAULT(v_DedicatedSCell_UL_Configuration))); + f_EUTRA_508RRC_IntraLTE_CA_HO_InterCell(p_PCellId,p_SCellId,p_SCellId, p_PCellId,{v_SCellToAddMod},{1},v_UL_CA); + + + //@siclog "Steps 17-18" siclog@ + // Send 10 MTCH packets + f_EUTRA_Send_MTCH_Data (p_PCellId, cs_MRB_Identity_Def,10, -, + rf8); // p_FirstPacketOffset =1 => SFN Mod 32[SP] = 1 *4[RFAllPer] +radioframeAllocationOffset the first packet will be scheduled + + f_Delay (6.0); //> 300ms + 15 * 320ms + + //@siclog "Steps 19 - 21" siclog@ + // Execute MBMS counter check procedure + v_MBMS_CounterValue2:=f_EUTRA_MBMS_CounterProcedure(p_PCellId); + if (v_MBMS_CounterValue2 > v_MBMS_CounterValue) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 19: MBMS Counter value greater than 0"); + } else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 19: MBMS Counter value not greater than 0"); + } + + //@siclog "Step 22-23" siclog@ + //SS transmits an RRCConnectionReconfiguration message including measurementConfiguration to setup intra LTE measurement and reporting for event A2 and receives an RCConnectionReconfigurationComplete message. + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(p_SCellId, + cs_RRCConnectionReconfiguration_17_4_X_EventA2(tsc_RRC_TI_Def, + v_Frequency_IE_SCell.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_SCell.AllowedMeasBandwidth, + v_MeasObjectId)); + + + //@siclog "Step 24" siclog@ + //SS re-adjusts the cell-specific reference signal level according to row "T1" in table 8.3.1.2.3.2.-1. + f_EUTRA_SetCellPowerList( v_CellPowerList_AtT0_T2); + + //@siclog "Step 25" siclog@ + //Check: does the UE transmit a MeasurementReport message to report event A2 with the measured RSRP value for Cell 1? + SRB.receive(car_SRB1_RrcPdu_IND(p_SCellId, cr_MeasurementReport(1, ?, ?, omit))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 17.4.11.x Step 25"); + + v_SCellToAddMod := cs_SCellToAddMod_r10(1, + v_PhysicalCellIdentity_Scell, + v_Arfcn_SCell, + cs_508_RadioResourceConfigCommonSCell_r10_DEFAULT(v_SCell_DL_Bandwidth, tsc_P_b_1Tx, v_CommonSCell_UL_Configuration, v_TDD_Config), + cs_RadioResourceConfigDedicatedSCell_r10(cs_PhysicalConfigDedicatedSCell_r10_DEFAULT(v_DedicatedSCell_UL_Configuration))); + f_EUTRA_508RRC_IntraLTE_CA_HO_InterCell(p_SCellId,p_PCellId,p_PCellId, p_SCellId,{v_SCellToAddMod},{1},v_UL_CA); + + //@siclog "Steps 26-27" siclog@ + // Send 10 MTCH packets + f_EUTRA_Send_MTCH_Data (p_PCellId, cs_MRB_Identity_Def,10, -, + rf8); // p_FirstPacketOffset =1 => SFN Mod 32[SP] = 1 *4[RFAllPer] +radioframeAllocationOffset the first packet will be scheduled + + f_Delay (6.0); //> 300ms + 15 * 320ms + + //@siclog "Steps 28 - 30" siclog@ + // Execute MBMS counter check procedure + v_MBMS_CounterValue3:=f_EUTRA_MBMS_CounterProcedure(p_PCellId); + if (v_MBMS_CounterValue3 > v_MBMS_CounterValue2) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 30: MBMS Counter value greater than count 2"); + } else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 19: MBMS Counter value not greater than 0"); + } + + f_EUTRA_TestBody_Set(false); + //test body ends + + /////////////////////////////////////////////////////////////////////////////////// + // Post Amble + ////////////////////////////////////////////////////////////////////////////////// + f_UT_MBMS_SERVICE_Active(UT, oct2str(tsc_ServiceId_Def),false, tsc_MBMS_SAI_Def ); + f_UT_MBMS_SERVICE_Interest(UT, omit, oct2str(tsc_ServiceId_Def), false, tsc_MBMS_SAI_Def); + // Release RRC Connection and Switch off + f_EUTRA_Postamble(p_PCellId, E2_CONNECTED); + } + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 17.4.11.1 + * @status + */ + function f_TC_17_4_11_1_EUTRA () runs on EUTRA_PTC + { /*CA / Start MBMS reception on PCell / Continue MBMS reception after swap of SCell and PCell / Intra-band Contiguous CA */ + f_TC_17_4_11_Common(eutra_Cell1, eutra_Cell3, CA_IntraBand); + } + + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 17.4.11.2 + * @status + */ + function f_TC_17_4_11_2_EUTRA () runs on EUTRA_PTC + { /* CA / Start MBMS reception on PCell / Continue MBMS reception after swap of SCell and PCell / Inter-band CA */ + f_TC_17_4_11_Common(eutra_Cell1, eutra_Cell10, CA_InterBand); + } + +} diff --git a/LTE_A_IWD_14wk37/LTE_A/17/MBMS_SC_TestCases.ttcn b/LTE_A_IWD_14wk37/LTE_A/17/MBMS_SC_TestCases.ttcn new file mode 100644 index 0000000..bb20495 --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/17/MBMS_SC_TestCases.ttcn @@ -0,0 +1,1079 @@ + /******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-06-06 19:54:44 +0200 (Fri, 06 Jun 2014) $ +// $Rev: 11662 $ +/******************************************************************************/ + +module MBMS_SC_TestCases { + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from CommonDefs all; + import from EUTRA_CellInfo all; + import from EUTRA_CommonDefs all; + import from EUTRA_Component all; + import from EUTRA_BandDependentParam all; + + import from EUTRA_Measurement_Templates all; + import from EUTRA_SRB_Templates all; + import from EUTRA_RRC_Templates all; + import from EUTRA_RRC_Templates all; + + import from EUTRA_ConfigurationSteps all; + import from EUTRA_CommonProcedures all; + import from EUTRA_RRCSteps all; + //import from EUTRA_AuxiliaryFunctions all; + import from UpperTesterFunctions all; + import from EUTRA_SecurityFunctions all; + import from EUTRA_SecuritySteps all; + import from EUTRA_LoopBack all; + + import from EUTRA_CommonTemplates_MBMS all; + import from EUTRA_CommonFunctions_MBMS all; + import from EUTRA_CellInfo_MBMS all; + + //================================================================================= + // Templates + //================================================================================= + +template (value) MeasConfig cs_Measurement_Config_A3_InterFreq_17_4_x(ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq1, + AllowedMeasBandwidth p_MeasurementBandwidth1, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq2, + AllowedMeasBandwidth p_MeasurementBandwidth2, + MeasObjectId p_MeasObjectId_2, + template (value) MeasGapConfig p_MeasGapConfig := cs_508_MeasGapConfig_GP1) := + + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_2Entries(tsc_IdMeasObject_f1, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq1, p_MeasurementBandwidth1), + p_MeasObjectId_2, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq2, p_MeasurementBandwidth2)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_A3, cs_508_ReportConfigEUTRA_A3), + omit, + cs_MeasIdToAddModList_1Entry( 1, p_MeasObjectId_2, tsc_IdReportConfig_A3 ), + -, + p_MeasGapConfig); + + //================================================================================= + // TEST CASES + //================================================================================= + /* + * @desc REFERENCE TS 36.523-1 clause 17.4.1/1A + * @status + */ + function f_TC_17_4_1_Common(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { /* Cell reselection to intra-frequency cell to continue MBMS service reception */ +// var GutiParameters_Type v_Guti_Params; + var integer v_MBMS_CounterValue, v_MBMS_CounterValue2; + var template (value) CellPowerList_Type v_CellPowerList_AtT0 := { + cs_CellPower(eutra_Cell11, tsc_Suitable_NeighbourIntraFreq_CellRS_EPRE), + cs_CellPower(p_CellId, tsc_Suitable_NeighbourIntraFreq_CellRS_EPRE) + }; + + var template (value) CellPowerList_Type v_CellPowerList_AtT1 := { + cs_CellPower(eutra_Cell11, tsc_ServingCellRS_EPRE), + cs_CellPower(eutra_Cell1, tsc_Suitable_NeighbourIntraFreq_CellRS_EPRE), + cs_CellPower(p_CellId, -79) + }; + + + f_EUTRA_Init(c3); + f_EUTRA_SetSysinfoCombination_MBMS(eutra_Cell1,c16); + f_EUTRA_SetSysinfoCombination_MBMS(eutra_Cell11,c16); + + + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_CellConfig_MBMS_Def(eutra_Cell1); // Configured MBSFN + MTCH + transmit MBSFNAreaConfiguration + f_EUTRA_CellConfig_Def(eutra_Cell11); + f_EUTRA_CellConfig_MBMS_Def(eutra_Cell11); // Configured MBSFN + MTCH + transmit MBSFNAreaConfiguration + + f_EUTRA_CellConfig_Def(p_CellId); + + //Perform Idle updated procedure to make sure UE is in a known state before test case starts + //Bring UE to initial state + f_EUTRA_Preamble(eutra_Cell1, STATE2A_TESTLOOP_ModeC); + f_EUTRA_RbEst_Def(p_CellId); // Default RB establishment + f_EUTRA_CloseUE_TestLoopModeC(p_CellId, cs_UE_TestLoopModeC_LB_Setup); // Bring UE in test loop mode C + f_UT_MBMS_SERVICE_Interest(UT, omit, oct2str(tsc_ServiceId_Def), true,tsc_MBMS_SAI_Def); + f_UT_MBMS_SERVICE_Active(UT, oct2str(tsc_ServiceId_Def),true, tsc_MBMS_SAI_Def ); + + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT0); + + + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set(true); + + //@siclog "Step 0A-OC" siclog@ + + + f_ModifySysinfoCombinationC16_ToC20(eutra_Cell1); + f_EUTRA_ModifySysinfo(eutra_Cell1, true, RRC_CONNECTED); + f_ModifySysinfoCombinationC16_ToC20(eutra_Cell11); + f_EUTRA_ModifySysinfo(eutra_Cell11, false, RRC_CONNECTED); + //@siclog "Step 1" siclog@ + //Release RRC connection + f_EUTRA_RRC_ConnectionRelease(eutra_Cell1); + + //@siclog "Steps 2-3" siclog@ + // Send 10 MTCH packets + f_EUTRA_Send_MTCH_Data (eutra_Cell1, cs_MRB_Identity_Def,10, -, + rf8, // Scheduling Period + -, // Stop MTCH =1 + 7, // transmit 1 MTCH and skip 7 occasions + 1); // p_FirstPacketOffset =1 => SFN Mod 32[SP] = 1 *4[RFAllPer] +radioframeAllocationOffset the first packet will be scheduled + + f_Delay (6.0); //> 300ms + 15 * 320ms + //@siclog "Step 4" siclog@ + f_EUTRA_RbEst_Def(eutra_Cell1); // Default RB establishment + //@siclog "Steps 5 - 7" siclog@ + // Execute MBMS counter check procedure + v_MBMS_CounterValue:=f_EUTRA_MBMS_CounterProcedure(eutra_Cell1); + if (v_MBMS_CounterValue > 0) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 7: MBMS Counter value greater than 0"); + } else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 7: MBMS Counter value not greater than 0"); + } + //@siclog "Step 6a" siclog@ + //Release RRC connection + f_EUTRA_RRC_ConnectionRelease(eutra_Cell1); + //@siclog "Step 7" siclog@ + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + //@siclog "Step 8 Void" siclog@ + //Check: Does the test result of generic test procedure in TS 36.508 subclause 6.4.2.7 indicate that the UE is camped on E-UTRAN Cell 10? + f_EUTRA_508CheckCampOnNewEutraCell( eutra_Cell11 ); + //@siclog "Step 9 Void" siclog@ + //@siclog "Step 10" siclog@ + f_Delay (12.0); + + //@siclog "Steps 11-12" siclog@ + // Send 10 MTCH packets + f_EUTRA_Send_MTCH_Data (eutra_Cell11, cs_MRB_Identity_Def,10, -, + rf8, // Scheduling Period + -, // Stop MTCH =1 + 7, // transmit 1 MTCH and skip 7 occasions + 1); // p_FirstPacketOffset =1 => SFN Mod 32[SP] = 1 *4[RFAllPer] +radioframeAllocationOffset the first packet will be scheduled + + f_Delay (6.0); //> 300ms + 15 * 320ms + //@siclog "Step 12A" siclog@ + f_EUTRA_RbEst_Def(eutra_Cell11); // Default RB establishment + //@siclog "Steps 13 - 15" siclog@ + // Execute MBMS counter check procedure + v_MBMS_CounterValue2:=f_EUTRA_MBMS_CounterProcedure(eutra_Cell2); + if (v_MBMS_CounterValue2 > v_MBMS_CounterValue) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 15: MBMS Counter value greater than in step 7"); + } else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 15: MBMS Counter value not greater than in step 7"); + } + f_EUTRA_TestBody_Set(false); + //test body ends + + /////////////////////////////////////////////////////////////////////////////////// + // Post Amble + ////////////////////////////////////////////////////////////////////////////////// + f_UT_MBMS_SERVICE_Active(UT, oct2str(tsc_ServiceId_Def),false, tsc_MBMS_SAI_Def ); + f_UT_MBMS_SERVICE_Interest(UT, omit, oct2str(tsc_ServiceId_Def), false, tsc_MBMS_SAI_Def); + // Release RRC Connection and Switch off + f_EUTRA_Postamble(eutra_Cell11, E2_CONNECTED); + } + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 17.4.1 + * @status + */ + function f_TC_17_4_1_EUTRA () runs on EUTRA_PTC + { /*Cell reselection to intra-frequency cell to continue MBMS service reception */ + f_TC_17_4_1_Common( eutra_Cell3); + } + + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 17.4.1a + * @status + */ + function f_TC_17_4_1a_EUTRA () runs on EUTRA_PTC + { /* Cell reselection to intra-frequency cell to continue MBMS service reception inter- band */ + f_TC_17_4_1_Common( eutra_Cell10); + } + + + /* + * @desc REFERENCE TS 36.523-1 clause 17.4.2/2A + * @status + */ + function f_TC_17_4_2_Common(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { /* Cell reselection to inter-frequency/Inter Band cell to start MBMS service reception */ + //var GutiParameters_Type v_Guti_Params; + var integer v_MBMS_CounterValue; + var template (value) CellPowerList_Type v_CellPowerList_AtT0 := { + cs_CellPower(p_CellId, tsc_Suitable_NeighbourIntraFreq_CellRS_EPRE) + }; + var Frequency_IE_Type v_Frequency_IE_Cell; + + f_EUTRA_Init(c3); + //f_EUTRA_SetSysinfoCombination_MBMS(eutra_Cell1,c18);//ToDo contents as per specific message contents + f_EUTRA_SetSysinfoCombination_MBMS(p_CellId,c16); + //TAC for Cell 1 is set to 1 in f_EUTRA_Init + if (p_CellId == eutra_Cell10) //Test case 17.4.2a + { + f_EUTRA_CellInfo_SetTAC ( p_CellId , int2bit (2, 16) ); + }; + + f_EUTRA_CellConfig_Def(eutra_Cell1); + + f_EUTRA_CellConfig_Def(p_CellId); + f_EUTRA_CellConfig_MBMS_Def(p_CellId); // Configured MBSFN + MTCH + transmit MBSFNAreaConfiguration + + //Perform Idle updated procedure to make sure UE is in a known state before test case starts + //Bring UE to initial state + f_EUTRA_Preamble(eutra_Cell1, STATE2A_TESTLOOP_ModeC); + f_UT_MBMS_SERVICE_Interest(UT, omit, oct2str(tsc_ServiceId_Def), true,tsc_MBMS_SAI_Def); + f_UT_MBMS_SERVICE_Active(UT, oct2str(tsc_ServiceId_Def),true, tsc_MBMS_SAI_Def ); + + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT0); + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + v_Frequency_IE_Cell := f_EUTRA_CellInfo_GetFrequencyIEs(p_CellId); + f_EUTRA_TestBody_Set(true); + //@siclog "Step 0A-OC" siclog@ + f_ModifySysinfoCombinationC3_ToC18(eutra_Cell1, {cs_508_MBMS_SAI_InterFreq_r11_Def(v_Frequency_IE_Cell.UL_DL_Earfcn.dl_CarrierFreq, + oct2int (tsc_ServiceId_Def))}); + f_EUTRA_ModifySysinfo(eutra_Cell1, true); + + f_ModifySysinfoCombinationC16_ToC20(p_CellId); + f_EUTRA_ModifySysinfo(p_CellId, true); + //@siclog "Step 1" siclog@ + //Check: Does the test result of generic test procedure in TS 36.508 subclause 6.4.2.7 indicate that the UE is camped on E-UTRAN Cell 10? + f_EUTRA_508CheckCampOnNewEutraCell( p_CellId ); + + //@siclog "Step 2 Void" siclog@ + + //@siclog "Step 3" siclog@ + f_Delay (12.0); + //@siclog "Step 4" siclog@ + f_EUTRA_RbEst_Def(p_CellId); // Default RB establishment + f_EUTRA_CloseUE_TestLoopModeC(p_CellId, cs_UE_TestLoopModeC_LB_Setup); // Bring UE in test loop mode C + //@siclog "Step 4A" siclog@ + f_EUTRA_RRC_ConnectionRelease(p_CellId); + + //@siclog "Steps 5-6" siclog@ + // Send 10 MTCH packets + f_EUTRA_Send_MTCH_Data (p_CellId, cs_MRB_Identity_Def,10, -, + rf8, // Scheduling Period + -, // Stop MTCH =1 + 7, // transmit 1 MTCH and skip 7 occasions + 1); // p_FirstPacketOffset =1 => SFN Mod 32[SP] = 1 *4[RFAllPer] +radioframeAllocationOffset the first packet will be scheduled + + f_Delay (6.0); //> 300ms + 15 * 320ms + //@siclog "Step 6A" siclog@ + f_EUTRA_RbEst_Def(p_CellId); // Default RB establishment + //@siclog "Steps 7 - 9" siclog@ + // Execute MBMS counter check procedure + v_MBMS_CounterValue:=f_EUTRA_MBMS_CounterProcedure(p_CellId); + if (v_MBMS_CounterValue > 0) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 9: MBMS Counter value greater than 0"); + } else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 9: MBMS Counter value not greater than 0"); + } + + f_EUTRA_TestBody_Set(false); + //test body ends + + /////////////////////////////////////////////////////////////////////////////////// + // Post Amble + ////////////////////////////////////////////////////////////////////////////////// + f_UT_MBMS_SERVICE_Active(UT, oct2str(tsc_ServiceId_Def),false, tsc_MBMS_SAI_Def ); + f_UT_MBMS_SERVICE_Interest(UT, omit, oct2str(tsc_ServiceId_Def), false, tsc_MBMS_SAI_Def); + // Release RRC Connection and Switch off + f_EUTRA_Postamble(p_CellId, E2_CONNECTED); + } + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 17.4.2 + * @status + */ + function f_TC_17_4_2_EUTRA () runs on EUTRA_PTC + { /* Cell reselection to inter- frequency cell to start MBMS service reception */ + f_TC_17_4_2_Common( eutra_Cell3); + } + + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 17.4.2a + * @status + */ + function f_TC_17_4_2a_EUTRA () runs on EUTRA_PTC + { /* Cell reselection to inter- band cell to start MBMS service reception */ + f_TC_17_4_2_Common( eutra_Cell10); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 17.4.3/3A + * @status + */ + function f_TC_17_4_3_Common(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { /* Handover to inter-frequency/Inter Band cell to start MBMS service reception */ + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + //var GutiParameters_Type v_Guti_Params; + var Frequency_IE_Type v_Frequency_Cell1, v_Frequency_CellX; + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell1, v_ChBandDependency_CellX; + var PhysCellId v_PhysCellId_CellX; + var integer v_MBMS_CounterValue; + var MeasObjectId v_MeasObjectId; + var template (value) CellPowerList_Type v_CellPowerList_AtT0 := { + cs_CellPower(p_CellId, tsc_Suitable_NeighbourIntraFreq_CellRS_EPRE) + }; + var template (value) CellPowerList_Type v_CellPowerList_AtT1 := { + cs_CellPower(p_CellId, -79) + }; + + f_EUTRA_Init(c1); + f_EUTRA_SetSysinfoCombination_MBMS(eutra_Cell1,c16); + f_EUTRA_SetSysinfoCombination_MBMS(p_CellId,c16); + + f_EUTRA_CellInfo_InitMaxReferencePower(p_CellId, -79); + + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_CellConfig_MBMS_Def(eutra_Cell1); // Configured MBSFN + MTCH + transmit MBSFNAreaConfiguration + + f_EUTRA_CellConfig_Def(p_CellId); + f_EUTRA_CellConfig_MBMS_Def(p_CellId); // Configured MBSFN + MTCH + transmit MBSFNAreaConfiguration + + //Perform Idle updated procedure to make sure UE is in a known state before test case starts + //Bring UE to initial state + f_EUTRA_Preamble(eutra_Cell1, STATE2A_TESTLOOP_ModeC); + f_UT_MBMS_SERVICE_Interest(UT, omit, oct2str(tsc_ServiceId_Def), true,tsc_MBMS_SAI_Def); + f_UT_MBMS_SERVICE_Active(UT, oct2str(tsc_ServiceId_Def),true, tsc_MBMS_SAI_Def ); + f_EUTRA_RbEst_Def(eutra_Cell1); // Default RB establishment + f_EUTRA_CloseUE_TestLoopModeC(eutra_Cell1, cs_UE_TestLoopModeC_LB_Setup); // Bring UE in test loop mode C + + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT0); + v_PhysCellId_CellX := f_EUTRA_CellInfo_GetPhyCellId(p_CellId); + v_Frequency_CellX := f_EUTRA_CellInfo_GetFrequencyIEs(p_CellId); + v_ChBandDependency_CellX := f_EUTRA_BandDependentParam(v_Frequency_CellX.DL_ChBandwidth, v_Frequency_CellX.UL_ChBandwidth); + v_Frequency_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell1); + v_ChBandDependency_Cell1 := f_EUTRA_BandDependentParam(v_Frequency_Cell1.DL_ChBandwidth, v_Frequency_Cell1.UL_ChBandwidth); + + + if (p_CellId == eutra_Cell3) { ///17.4.3 + v_MeasObjectId := tsc_IdMeasObject_f2; + } else { //17.4.3a + v_MeasObjectId := tsc_IdMeasObject_f5; + } + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set(true); + //@siclog "Step 0-1" siclog@ + f_ModifySysinfoCombinationC16_ToC20(eutra_Cell1, {cs_508_MBMS_SAI_InterFreq_r11_Def(v_Frequency_CellX.UL_DL_Earfcn.dl_CarrierFreq, + 1)}); + f_EUTRA_ModifySysinfo(eutra_Cell1, true, RRC_CONNECTED); + f_ModifySysinfoCombinationC16_ToC20(p_CellId, {cs_508_MBMS_SAI_InterFreq_r11_Def(v_Frequency_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + 2)}); + //@siclog "Step 1" siclog@ + f_EUTRA_ModifySysinfo ( p_CellId, true, RRC_CONNECTED ); + + + //@siclog "Step 2" siclog@ + //Check: Does the UE transmit MBMSInterestIndication message? + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_MbmsInterestIndication_Common(cr_MbmsInterestIndication({v_Frequency_CellX.UL_DL_Earfcn.dl_CarrierFreq})))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 2: Does the UE transmit MBMSInterestIndication message"); + + //@siclog "Steps 3-4" siclog@ + //The SS transmits an RRCConnectionReconfiguration message on Cell 1 to setup intra frequency measurement and + //receives an RCConnectionReconfigurationComplete message. + + + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(eutra_Cell1, + cs_508_RRCConnectionReconfiguration_ConditionMEAS (v_RRC_TI, + cs_Measurement_Config_A3_InterFreq_17_4_x( + v_Frequency_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_Frequency_CellX.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_CellX.AllowedMeasBandwidth, + v_MeasObjectId))); + + + //@siclog "Step 5" siclog@ + //The SS changes Cell 1 and Cell 2 level according to the row "T1" in table 17.4.5.3.2-1 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + + //@siclog "Step 6" siclog@ + // The UE transmits a MeasurementReport message to report event A3 on Cell 1 with the measured RSRP, RSRQ value for Cell 2. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, + cr_MeasurementReport(1, ?, ?, cr_MeasResultNeighCells_measResultListEUTRA_1Entry(v_PhysCellId_CellX, omit, ?, ?)))); + + + //@siclog "Steps 7-8" siclog@ + // The SS transmits an RRCConnectionReconfiguration message on Cell 1 to order the UE to perform intra-frequency handover to Cell 2 less than [600ms] after reception of the MBMSInterestIndication message in step 8 (Note1). + // The UE transmit an RRCConnectionReconfigurationComplete message on Cell 2? + f_EUTRA_508RRC_IntraLTE_HO_InterCell(eutra_Cell1, p_CellId); + + //@siclog "Steps 9-10" siclog@ + // Send 10 MTCH packets + f_EUTRA_Send_MTCH_Data (p_CellId, cs_MRB_Identity_Def,10, -, + rf8, // Scheduling Period + -, // Stop MTCH =1 + 7, // transmit 1 MTCH and skip 7 occasions + 1); // p_FirstPacketOffset =1 => SFN Mod 32[SP] = 1 *4[RFAllPer] +radioframeAllocationOffset the first packet will be scheduled + + f_Delay (6.0); //> 300ms + 15 * 320ms + //@siclog "Steps 11 - 12" siclog@ + // Execute MBMS counter check procedure + v_MBMS_CounterValue:=f_EUTRA_MBMS_CounterProcedure(p_CellId); + if (v_MBMS_CounterValue > 0) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 12: MBMS Counter value greater than 0"); + } else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 12: MBMS Counter value not greater than 0"); + } + + + f_EUTRA_TestBody_Set(false); + //test body ends + + /////////////////////////////////////////////////////////////////////////////////// + // Post Amble + ////////////////////////////////////////////////////////////////////////////////// + f_UT_MBMS_SERVICE_Active(UT, oct2str(tsc_ServiceId_Def),false, tsc_MBMS_SAI_Def ); + f_UT_MBMS_SERVICE_Interest(UT, omit, oct2str(tsc_ServiceId_Def), false, tsc_MBMS_SAI_Def); + // Release RRC Connection and Switch off + f_EUTRA_Postamble(p_CellId, E2_CONNECTED); + } + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 17.4.3 + * @status + */ + function f_TC_17_4_3_EUTRA () runs on EUTRA_PTC + { /* Handover to inter-frequency cell to start MBMS service reception */ + f_TC_17_4_3_Common( eutra_Cell23); + } + + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 17.4.3a + * @status + */ + function f_TC_17_4_3a_EUTRA () runs on EUTRA_PTC + { /* Handover to inter-band cell to start MBMS service reception */ + f_TC_17_4_3_Common( eutra_Cell10); + } + /* + * @desc REFERENCE TS 36.523-1 clause 17.4.4 + * @status + */ + function f_TC_17_4_4_EUTRA() runs on EUTRA_PTC + { + /* Handover to intra-frequency cell to continue MBMS service reception */ + //var GutiParameters_Type v_Guti_Params; + var Frequency_IE_Type v_Frequency_Cell1, v_Frequency_Cell2; + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell2; + var PhysCellId v_PhysCellId_Cell2; + var template (value) MeasConfig v_MeasConfig; + var template (value) CellPowerList_Type v_CellPowerList_AtT0 := { + cs_CellPower(eutra_Cell2, tsc_Suitable_NeighbourIntraFreq_CellRS_EPRE) + }; + var template (value) CellPowerList_Type v_CellPowerList_AtT1 := { + cs_CellPower(eutra_Cell1, tsc_Suitable_NeighbourIntraFreq_CellRS_EPRE), + cs_CellPower(eutra_Cell2, tsc_ServingCellRS_EPRE) + }; + var integer v_MBMS_CounterValue, v_MBMS_CounterValue2; + + + f_EUTRA_Init(c1); + f_EUTRA_SetSysinfoCombination_MBMS(eutra_Cell1,c15); + f_EUTRA_SetSysinfoCombination_MBMS(eutra_Cell2,c15); + + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_CellConfig_MBMS_Def(eutra_Cell1); // Configured MBSFN + MTCH + transmit MBSFNAreaConfiguration + + f_EUTRA_CellConfig_Def(eutra_Cell2); + f_EUTRA_CellConfig_MBMS_Def(eutra_Cell2); // Configured MBSFN + MTCH + transmit MBSFNAreaConfiguration + + //Perform Idle updated procedure to make sure UE is in a known state before test case starts + //Bring UE to initial state + f_EUTRA_Preamble(eutra_Cell1, STATE2A_TESTLOOP_ModeC); + f_UT_MBMS_SERVICE_Interest(UT, omit, oct2str(tsc_ServiceId_Def), true, tsc_MBMS_SAI_Def); + f_UT_MBMS_SERVICE_Active(UT, oct2str(tsc_ServiceId_Def),true, tsc_MBMS_SAI_Def ); + f_EUTRA_RbEst_Def(eutra_Cell1); // Default RB establishment + f_EUTRA_CloseUE_TestLoopModeC(eutra_Cell1, cs_UE_TestLoopModeC_LB_Setup); // Bring UE in test loop mode C + + + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT0); + + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set(true); + + //@siclog "Steps 1" siclog@ + // The SS transmits a Paging message including a systemInfoModification for cell1 + // From the beginning of the next modification period the SS starts broadcast of SystemInformationBlockType15 (according to System information combination 19) on Cell 1 including mbms-SAI-IntraFreq-r11 list indicating MBMS SAI=1. + //@siclog "Step 1-1A" siclog@ + f_ModifySysinfoCombinationC15_ToC19 (eutra_Cell1); + f_ModifySysinfoCombinationC15_ToC19(eutra_Cell2); + f_EUTRA_ModifySysinfo(eutra_Cell1, true, RRC_CONNECTED); + f_EUTRA_ModifySysinfo(eutra_Cell2, true, RRC_CONNECTED); + + //@siclog "Step 1B" siclog@ + //Check: Does the UE transmit MBMSInterestIndication message. + v_Frequency_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell1); + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_MbmsInterestIndication_Common(cr_MbmsInterestIndication( { v_Frequency_Cell1.UL_DL_Earfcn.dl_CarrierFreq} )))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 1B: Does the UE transmit MBMSInterestIndication message?"); + + //@siclog "Steps 2-3" siclog@ + // Send 10 MTCH packets + f_EUTRA_Send_MTCH_Data (eutra_Cell1, cs_MRB_Identity_Def,10, -, + rf8, // Scheduling Period + -, // Stop MTCH =1 + 7, // transmit 1 MTCH and skip 7 occasions + 1); // p_FirstPacketOffset =1 => SFN Mod 32[SP] = 1 *4[RFAllPer] +radioframeAllocationOffset the first packet will be scheduled + + f_Delay (6.0); //> 300ms + 15 * 320ms + //@siclog "Steps 4 - 6" siclog@ + // Execute MBMS counter check procedure + v_MBMS_CounterValue:=f_EUTRA_MBMS_CounterProcedure(eutra_Cell1); + if (v_MBMS_CounterValue > 0) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 6: MBMS Counter value greater than 0"); + } else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 6: MBMS Counter value not greater than 0"); + } + //@siclog "Steps 7-8" siclog@ + //The SS transmits an RRCConnectionReconfiguration message to setup intra frequency measurement on Cell 2. + //The UE transmits an RRCConnectionReconfigurationComplete message on Cell 2 to confirm the setup of intra frequency measurement. + v_PhysCellId_Cell2 := f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell2); + v_Frequency_Cell2 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell2); + v_ChBandDependency_Cell2 := f_EUTRA_BandDependentParam(v_Frequency_Cell2.DL_ChBandwidth, v_Frequency_Cell2.UL_ChBandwidth); + + v_MeasConfig := cs_MeasConfig(omit, + cs_MeasObjectToAddModList_1Entry(tsc_IdMeasObject_f1, + cs_MeasObject_measObjectEUTRA_Common(v_Frequency_Cell2.UL_DL_Earfcn.dl_CarrierFreq, v_ChBandDependency_Cell2.AllowedMeasBandwidth)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_A3, + cs_508_ReportConfigEUTRA_A3), + omit, + cs_MeasIdToAddModList_1Entry(1, tsc_IdMeasObject_f1, tsc_IdReportConfig_A3)); + + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(eutra_Cell1, + cs_508_RRCConnectionReconfiguration_ConditionMEAS(tsc_RRC_TI_Def,v_MeasConfig)); + + //@siclog "Step 9" siclog@ + //The SS changes Cell 1 and Cell 2 level according to the row "T1" in table 17.4.6.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + + //@siclog "Step 10" siclog@ + //The UE transmits a MeasurementReport message to report event A3 on Cell 1 with the measured RSRP, RSRQ value for Cell 2. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, + cr_MeasurementReport(1, ?, ?, cr_MeasResultNeighCells_measResultListEUTRA_1Entry(v_PhysCellId_Cell2, omit, ?, ?)))); + + //@siclog "Steps 11-12" siclog@ + //The SS transmits an RRCConnectionReconfiguration message on Cell 1 to order the UE to perform inter-frequency handover to Cell 2. + //The UE transmit an RRCConnectionReconfigurationComplete message on Cell 2 + f_EUTRA_508RRC_IntraLTE_HO_InterCell(eutra_Cell1, eutra_Cell2); + + ///@siclog "Steps 13-14" siclog@ + // Send 10 MTCH packets + f_EUTRA_Send_MTCH_Data (eutra_Cell2, cs_MRB_Identity_Def,10, -, + rf8, // Scheduling Period + -, // Stop MTCH =1 + 7, // transmit 1 MTCH and skip 7 occasions + 1); // p_FirstPacketOffset =1 => SFN Mod 32[SP] = 1 *4[RFAllPer] +radioframeAllocationOffset the first packet will be scheduled + + f_Delay (6.0); //> 300ms + 15 * 320ms + //@siclog "Steps 15 - 17" siclog@ + // Execute MBMS counter check procedure + v_MBMS_CounterValue2:=f_EUTRA_MBMS_CounterProcedure(eutra_Cell2); + if (v_MBMS_CounterValue2 > v_MBMS_CounterValue) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 17: MBMS Counter value greater than 0"); + } else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 17: MBMS Counter value not greater than 0"); + } + + f_EUTRA_TestBody_Set(false); + + /////////////////////////////////////////////////////////////////////////////////// + // Post Amble + ////////////////////////////////////////////////////////////////////////////////// + f_UT_MBMS_SERVICE_Active(UT, oct2str(tsc_ServiceId_Def),false, tsc_MBMS_SAI_Def ); + f_UT_MBMS_SERVICE_Interest(UT, omit, oct2str(tsc_ServiceId_Def), false, tsc_MBMS_SAI_Def); + // Release RRC Connection and Switch off + f_EUTRA_Postamble(eutra_Cell2, E2_CONNECTED); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 17.4.5 + * @status + */ + function f_TC_17_4_5_EUTRA() runs on EUTRA_PTC + { + /* Conditional retransmission of MBMS Interest Indication after handover */ + var integer v_MCCH_RepPer; + var float v_Wait; + var GutiParameters_Type v_Guti_Params; + var Frequency_IE_Type v_Frequency_Cell2; + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell2; + var PhysCellId v_PhysCellId_Cell2; + var template (value) MeasConfig v_MeasConfig; + var template (value) CellPowerList_Type v_CellPowerList_AtT0 := { + cs_CellPower(eutra_Cell2, tsc_Suitable_NeighbourIntraFreq_CellRS_EPRE) + }; + var template (value) CellPowerList_Type v_CellPowerList_AtT1 := { + cs_CellPower(eutra_Cell2, -79) + }; + + f_EUTRA_Init(c1); + f_EUTRA_SetSysinfoCombination_MBMS(eutra_Cell1,c19); + f_EUTRA_SetSysinfoCombination_MBMS(eutra_Cell2,c19); + + f_EUTRA_CellInfo_InitMaxReferencePower(eutra_Cell2, -79); + + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_CellConfig_MBMS_Def(eutra_Cell1); // Configured MBSFN + MTCH + transmit MBSFNAreaConfiguration + + f_EUTRA_CellConfig_Def(eutra_Cell2); + f_EUTRA_CellConfig_MBMS_Def(eutra_Cell2); // Configured MBSFN + MTCH + transmit MBSFNAreaConfiguration + + //Perform Idle updated procedure to make sure UE is in a known state before test case starts + //Bring UE to initial state + f_EUTRA_Preamble(eutra_Cell1, STATE2_IDLEUPDATE); + //The UE is made aware that the MBMS service is active + f_UT_MBMS_SERVICE_Active(UT, oct2str(tsc_ServiceId_Def),true, tsc_MBMS_SAI_Def ); + + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT0); + + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set(true); + + //@siclog "Step 1" siclog@ + //Wait for a period equal to the MCCH repetition period for the UE to receive MBSFNAreaConfiguration message + v_MCCH_RepPer := f_EUTRA_Convert_MCCH_RepPeriodToInt(f_EUTRA_CellInfo_GetMCCH_RepPeriod(eutra_Cell1)); + v_Wait := int2float(v_MCCH_RepPer)/100.0; // Rep Period is in frame = 10 ms + f_Delay(v_Wait); + + //@siclog "Step 2" siclog@ + //The generic procedures described in TS 36.508 sub clause 4.5.3.3 are performed on Cell 1 + f_EUTRA_RbEst_Def(eutra_Cell1); + + //@siclog "Steps 3-4" siclog@ + //The SS transmits an RRCConnectionReconfiguration message on Cell 1 to setup intra frequency measurement and + //receives an RCConnectionReconfigurationComplete message. + v_PhysCellId_Cell2 := f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell2); + v_Frequency_Cell2 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell2); + v_ChBandDependency_Cell2 := f_EUTRA_BandDependentParam(v_Frequency_Cell2.DL_ChBandwidth, v_Frequency_Cell2.UL_ChBandwidth); + + v_MeasConfig := cs_MeasConfig(omit, + cs_MeasObjectToAddModList_1Entry(tsc_IdMeasObject_f1, + cs_MeasObject_measObjectEUTRA_Common(v_Frequency_Cell2.UL_DL_Earfcn.dl_CarrierFreq, v_ChBandDependency_Cell2.AllowedMeasBandwidth)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_A3, + cs_508_ReportConfigEUTRA_A3), + omit, + cs_MeasIdToAddModList_1Entry(1, tsc_IdMeasObject_f1, tsc_IdReportConfig_A3)); + + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(eutra_Cell1, + cs_508_RRCConnectionReconfiguration_ConditionMEAS(tsc_RRC_TI_Def,v_MeasConfig)); + + //@siclog "Step 5" siclog@ + //The SS changes Cell 1 and Cell 2 level according to the row "T1" in table 17.4.5.3.2-1 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + + //@siclog "Step 6" siclog@ + // The UE transmits a MeasurementReport message to report event A3 on Cell 1 with the measured RSRP, RSRQ value for Cell 2. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, + cr_MeasurementReport(1, ?, ?, cr_MeasResultNeighCells_measResultListEUTRA_1Entry(v_PhysCellId_Cell2, omit, ?, ?)))); + + //@siclog "Step 7" siclog@ + // The UE is made interested in receiving MBMS service with MBMS Service ID=0 associated with the MBMS SAI (1) broadcasted in SIB15 mbms-SAI-IntraFreq list on Cell 1 and Cell 2 + v_Guti_Params := f_EUTRA_CellInfo_GetGuti(eutra_Cell1); + f_UT_MBMS_SERVICE_Interest(UT, omit, oct2str(tsc_ServiceId_Def), true, tsc_MBMS_SAI_Def); + + + //@siclog "Step 8" siclog@ + //Check: Does the UE transmit MBMSInterestIndication message? + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_MbmsInterestIndication_Common(cr_MbmsInterestIndication({ v_Frequency_Cell2.UL_DL_Earfcn.dl_CarrierFreq} )))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 8: Does the UE transmit MBMSInterestIndication message?"); + + //@siclog "Steps 9-10" siclog@ + // The SS transmits an RRCConnectionReconfiguration message on Cell 1 to order the UE to perform intra-frequency handover to Cell 2 less than [600ms] after reception of the MBMSInterestIndication message in step 8 (Note1). + // The UE transmit an RRCConnectionReconfigurationComplete message on Cell 2? + f_EUTRA_508RRC_IntraLTE_HO_InterCell(eutra_Cell1, eutra_Cell2); + + //@siclog "Step 11" siclog@ + //Check: Does the UE transmit MBMSInterestIndication message? + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell2, cr_MbmsInterestIndication_Common(cr_MbmsInterestIndication({ v_Frequency_Cell2.UL_DL_Earfcn.dl_CarrierFreq})))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 11: Does the UE transmit MBMSInterestIndication message?"); + + f_EUTRA_TestBody_Set(false); + + /////////////////////////////////////////////////////////////////////////////////// + // Post Amble + ////////////////////////////////////////////////////////////////////////////////// + f_UT_MBMS_SERVICE_Active(UT, oct2str(tsc_ServiceId_Def),false, tsc_MBMS_SAI_Def ); + f_UT_MBMS_SERVICE_Interest(UT, omit, oct2str(tsc_ServiceId_Def), false, tsc_MBMS_SAI_Def); + // Release RRC Connection and Switch off + f_EUTRA_Postamble(eutra_Cell2, E2_CONNECTED); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 17.4.6 + * @status + */ + function f_TC_17_4_6_EUTRA() runs on EUTRA_PTC + { + /* MBMS Interest Indication retransmission after returning from cell not broadcasting SIB15 */ + var Frequency_IE_Type v_Frequency_Cell1, v_Frequency_Cell2; + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell1, v_ChBandDependency_Cell2; + var PhysCellId v_PhysCellId_Cell1, v_PhysCellId_Cell2; + var template (value) MeasConfig v_MeasConfig; + var template (value) CellPowerList_Type v_CellPowerList_AtT0 := { + cs_CellPower(eutra_Cell2, tsc_Suitable_NeighbourIntraFreq_CellRS_EPRE) + }; + var template (value) CellPowerList_Type v_CellPowerList_AtT1 := { + cs_CellPower(eutra_Cell1, tsc_Suitable_NeighbourIntraFreq_CellRS_EPRE), + cs_CellPower(eutra_Cell2, tsc_ServingCellRS_EPRE) + }; + var template (value) CellPowerList_Type v_CellPowerList_AtT2 := { + cs_CellPower(eutra_Cell1, tsc_ServingCellRS_EPRE), + cs_CellPower(eutra_Cell2, tsc_Suitable_NeighbourIntraFreq_CellRS_EPRE) + }; + + f_EUTRA_Init(c1); + f_EUTRA_SetSysinfoCombination_MBMS(eutra_Cell1,c15); + + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_CellConfig_MBMS_Def(eutra_Cell1); // Configured MBSFN + MTCH + transmit MBSFNAreaConfiguration + + f_EUTRA_CellConfig_Def(eutra_Cell2); + + //Perform Idle updated procedure to make sure UE is in a known state before test case starts + //Bring UE to initial state + f_EUTRA_Preamble(eutra_Cell1, STATE2_IDLEUPDATE); + //UE is in state Generic RB Established (state 3) on Cell 1 according to [18]. + f_EUTRA_RbEst_Def(eutra_Cell1); + + //The UE is made interested in receiving a MBMS service with MBMS Service ID=0 associated with the MBMS SAI (1) broadcasted in SIB15 mbms-SAI-IntraFreq list on Cell 1 + f_UT_MBMS_SERVICE_Interest(UT, omit, oct2str(tsc_ServiceId_Def), true, tsc_MBMS_SAI_Def); + //The UE is made aware that the MBMS service is active + f_UT_MBMS_SERVICE_Active(UT, oct2str(tsc_ServiceId_Def),true, tsc_MBMS_SAI_Def ); + + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT0); + + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set(true); + + //@siclog "Steps 0-1" siclog@ + // The SS transmits a Paging message including a systemInfoModification for cell1 + // From the beginning of the next modification period the SS starts broadcast of SystemInformationBlockType15 (according to System information combination 19) on Cell 1 including mbms-SAI-IntraFreq-r11 list indicating MBMS SAI=1. + f_ModifySysinfoCombinationC15_ToC19(eutra_Cell1); + f_EUTRA_ModifySysinfo( eutra_Cell1, true, RRC_CONNECTED ); + + //@siclog "Step 2" siclog@ + //Check: Does the UE transmit MBMSInterestIndication message. + v_Frequency_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell1); + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_MbmsInterestIndication_Common(cr_MbmsInterestIndication( { v_Frequency_Cell1.UL_DL_Earfcn.dl_CarrierFreq} )))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 2: Does the UE transmit MBMSInterestIndication message?"); + + //@siclog "Steps 3-4" siclog@ + //The SS transmits an RRCConnectionReconfiguration message to setup intra-frequency measurement. + //The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1 to confirm the setup of intra-frequency measurement. + v_PhysCellId_Cell2 := f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell2); + v_Frequency_Cell2 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell2); + v_ChBandDependency_Cell2 := f_EUTRA_BandDependentParam(v_Frequency_Cell2.DL_ChBandwidth, v_Frequency_Cell2.UL_ChBandwidth); + + v_MeasConfig := cs_MeasConfig(omit, + cs_MeasObjectToAddModList_1Entry(tsc_IdMeasObject_f1, + cs_MeasObject_measObjectEUTRA_Common(v_Frequency_Cell2.UL_DL_Earfcn.dl_CarrierFreq, v_ChBandDependency_Cell2.AllowedMeasBandwidth)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_A3, + cs_508_ReportConfigEUTRA_A3), + omit, + cs_MeasIdToAddModList_1Entry(1, tsc_IdMeasObject_f1, tsc_IdReportConfig_A3)); + + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(eutra_Cell1, + cs_508_RRCConnectionReconfiguration_ConditionMEAS(tsc_RRC_TI_Def,v_MeasConfig)); + + //@siclog "Step 5" siclog@ + //The SS changes Cell 1 and Cell 2 level according to the row "T1" in table 17.4.6.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + + //@siclog "Step 6" siclog@ + //The UE transmits a MeasurementReport message to report event A3 on Cell 1 with the measured RSRP, RSRQ value for Cell 2. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, + cr_MeasurementReport(1, ?, ?, cr_MeasResultNeighCells_measResultListEUTRA_1Entry(v_PhysCellId_Cell2, omit, ?, ?)))); + + //@siclog "Steps 7-8" siclog@ + //The SS transmits an RRCConnectionReconfiguration message on Cell 1 to order the UE to perform inter-frequency handover to Cell 2. + //The UE transmit an RRCConnectionReconfigurationComplete message on Cell 2 + f_EUTRA_508RRC_IntraLTE_HO_InterCell(eutra_Cell1, eutra_Cell2); + + //@siclog "Steps 9-10" siclog@ + //The SS transmits an RRCConnectionReconfiguration message to setup intra frequency measurement on Cell 2. + //The UE transmits an RRCConnectionReconfigurationComplete message on Cell 2 to confirm the setup of intra frequency measurement. + v_PhysCellId_Cell1 := f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell1); + v_ChBandDependency_Cell1 := f_EUTRA_BandDependentParam(v_Frequency_Cell1.DL_ChBandwidth, v_Frequency_Cell1.UL_ChBandwidth); + + v_MeasConfig := cs_MeasConfig(omit, + cs_MeasObjectToAddModList_1Entry(tsc_IdMeasObject_f1, + cs_MeasObject_measObjectEUTRA_Common(v_Frequency_Cell1.UL_DL_Earfcn.dl_CarrierFreq, v_ChBandDependency_Cell1.AllowedMeasBandwidth)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_A3, + cs_508_ReportConfigEUTRA_A3), + omit, + cs_MeasIdToAddModList_1Entry(2, tsc_IdMeasObject_f1, tsc_IdReportConfig_A3)); + + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(eutra_Cell2, + cs_508_RRCConnectionReconfiguration_ConditionMEAS(tsc_RRC_TI_Def,v_MeasConfig)); + + //@siclog "Step 11" siclog@ + //The SS changes Cell 1 and Cell 2 levels according to the row "T2" in table 17.4.6.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT2); + + //@siclog "Step 12" siclog@ + //The UE transmits a MeasurementReport message to report event A3 on Cell 2 with the measured RSRP, RSRQ value for Cell 1. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell2, + cr_MeasurementReport(2, ?, ?, cr_MeasResultNeighCells_measResultListEUTRA_1Entry(v_PhysCellId_Cell1, omit, ?, ?)))); + + + //@siclog "Steps 13-14" siclog@ + //The SS transmits an RRCConnectionReconfiguration message on Cell 2 to order the UE to perform intra-frequency handover to Cell 1. + //The UE transmit an RRCConnectionReconfigurationComplete message on Cell 1? + f_EUTRA_508RRC_IntraLTE_HO_InterCell(eutra_Cell2, eutra_Cell1); + + //@siclog "Step 15" siclog@ + //Check: Does the UE transmit MBMSInterestIndication message. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_MbmsInterestIndication_Common(cr_MbmsInterestIndication( { v_Frequency_Cell1.UL_DL_Earfcn.dl_CarrierFreq} )))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 15: Does the UE transmit MBMSInterestIndication message?"); + + f_EUTRA_TestBody_Set(false); + + /////////////////////////////////////////////////////////////////////////////////// + // Post Amble + ////////////////////////////////////////////////////////////////////////////////// + + f_UT_MBMS_SERVICE_Active(UT, oct2str(tsc_ServiceId_Def),false, tsc_MBMS_SAI_Def ); + f_UT_MBMS_SERVICE_Interest(UT, omit, oct2str(tsc_ServiceId_Def), false, tsc_MBMS_SAI_Def); + // Release RRC Connection and Switch off + f_EUTRA_Postamble(eutra_Cell1, E2_CONNECTED); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 17.4.7 + * @status + */ + function f_TC_17_4_7_EUTRA() runs on EUTRA_PTC + { + /* MBMS Interest Indication after Radio Link Failure */ + var Frequency_IE_Type v_Frequency_Cell1; + var EUTRA_SecurityParams_Type v_Auth_Params; + var template (value) CellPowerList_Type v_CellPowerList_AtT0 := { + cs_CellPower(eutra_Cell2, tsc_NonSuitableCellRS_EPRE) + }; + var template (value) CellPowerList_Type v_CellPowerList_AtT1 := { + cs_CellPower(eutra_Cell1, tsc_NonSuitableOffCellRS_EPRE), + cs_CellPower(eutra_Cell2, tsc_ServingCellRS_EPRE) + }; + + f_EUTRA_Init(c1); + f_EUTRA_SetSysinfoCombination_MBMS(eutra_Cell1,c15); + f_EUTRA_SetSysinfoCombination_MBMS(eutra_Cell2,c15); + + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_CellConfig_MBMS_Def(eutra_Cell1); // Configured MBSFN + MTCH + transmit MBSFNAreaConfiguration + + f_EUTRA_CellConfig_Def(eutra_Cell2); + f_EUTRA_CellConfig_MBMS_Def(eutra_Cell2); // Configured MBSFN + MTCH + transmit MBSFNAreaConfiguration + + //Bring UE to initial state + //The UE is in state Registered, Idle Mode (state 2) on Cell 1 according to [18]. + f_EUTRA_Preamble(eutra_Cell1, STATE2_IDLEUPDATE); + + //TThe UE is made interested in receiving MBMS service with MBMS Service ID=0 with the MBMS SAI (1) broadcasted in SIB15 mbms-SAI-IntraFreq list on Cell 1 and Cell 2 + f_UT_MBMS_SERVICE_Interest(UT, omit, oct2str(tsc_ServiceId_Def), true, tsc_MBMS_SAI_Def); + //The UE is made aware that the MBMS service is active. + f_UT_MBMS_SERVICE_Active(UT, oct2str(tsc_ServiceId_Def),true, tsc_MBMS_SAI_Def ); + + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT0); + + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set(true); + + //@siclog "Steps 0A-0B" siclog@ + // The SS transmits a Paging message including a systemInfoModification for Cell1 and Cell 2 + // From the beginning of the next modification period the SS starts broadcast of SystemInformationBlockType15 according to System information combination 19 as defined in TS 36.508[18] clause 4.4.3.1 on Cell 1 and Cell 2 including mbms-SAI-IntraFreq-r11 list indicating MBMS SAI=1. + f_ModifySysinfoCombinationC15_ToC19(eutra_Cell1); + f_EUTRA_ModifySysinfo( eutra_Cell1, true, RRC_CONNECTED ); + f_ModifySysinfoCombinationC15_ToC19(eutra_Cell2); + f_EUTRA_ModifySysinfo( eutra_Cell2, false); + + //@siclog "Step 1" siclog@ + //Generic test procedure Generic Radio Bearer Establishment as described in TS 36.508 subclause 4.5.3 is executed. + f_EUTRA_RbEst_Def(eutra_Cell1); + + //@siclog "Step 2" siclog@ + //UE transmits MBMSInterestIndication message. + v_Frequency_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell1); + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_MbmsInterestIndication_Common(cr_MbmsInterestIndication( { v_Frequency_Cell1.UL_DL_Earfcn.dl_CarrierFreq} )))); + + //@siclog "Step 3" siclog@ + //SS re-adjusts the cell-specific reference signal level according to row "T1" in table 17.4.7.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + + // Activate RRC security at SS target cell (Cell2) for SRB 1, 2 and 1 AM DRB + v_Auth_Params := f_EUTRA_SS_AS_ActivateSecurity_HO_Reest(eutra_Cell2, f_EUTRA_Security_Get(), 0); + f_EUTRA_Security_Set(v_Auth_Params); + + //@siclog "Step 4" siclog@ + //UE transmits RRCConnectionReestablishmentRequest message + SRB.receive(car_SRB0_RrcPdu_IND(eutra_Cell2, + cr_508_RRCConnectionReestablishmentRequest(?, + ?, + ?, + ?))); + + //@siclog "Step 5 " siclog@ + //SS transmits RRCConnectionReestablishment message. + f_EUTRA_RRC_RRCConnectionReestablishment_Def(eutra_Cell2); + + //@siclog "Step 6" siclog@ + //UE transmits RRCConnectionReestablishmentComplete message. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell2, cr_508_RRCConnectionReestablishmentComplete(tsc_RRC_TI_Def))); + + //@siclog "Steps 7-8" siclog@ + //The SS transmits an RRCConnectionReconfiguration message on Cell 1. + //The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + f_EUTRA_RRC_RRCConnectionReconfiguration_Resume_SRB2_DRBs(eutra_Cell2, tsc_RRC_TI_Def); + + //@siclog "Step 9" siclog@ + //Check: Does the UE transmit MBMSInterestIndication message. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell2, cr_MbmsInterestIndication_Common(cr_MbmsInterestIndication( { v_Frequency_Cell1.UL_DL_Earfcn.dl_CarrierFreq} )))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 9: Does the UE transmit MBMSInterestIndication message?"); + + f_EUTRA_TestBody_Set(false); + + /////////////////////////////////////////////////////////////////////////////////// + // Post Amble + ////////////////////////////////////////////////////////////////////////////////// + f_UT_MBMS_SERVICE_Active(UT, oct2str(tsc_ServiceId_Def),false, tsc_MBMS_SAI_Def ); + f_UT_MBMS_SERVICE_Interest(UT, omit, oct2str(tsc_ServiceId_Def), false, tsc_MBMS_SAI_Def); + // Release RRC Connection and Switch off + f_EUTRA_Postamble(eutra_Cell2, E2_CONNECTED); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 17.4.8 + * @status + */ + function f_TC_17_4_8_EUTRA() runs on EUTRA_PTC + { + /* Continued MBMS service reception after E-UTRAN release of unicast bearer */ + var Frequency_IE_Type v_Frequency_Cell1; + var integer v_MBMS_CounterValue1 := 0; + var integer v_MBMS_CounterValue2 := 0; + var integer v_MCCH_RepPer; + var float v_Wait; + + f_EUTRA_Init(c1); + f_EUTRA_SetSysinfoCombination_MBMS(eutra_Cell1,c15); + + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_CellConfig_MBMS_Def(eutra_Cell1); // Configured MBSFN + MTCH + transmit MBSFNAreaConfiguration + + //Bring UE to initial state + //UE is in state Loopback Activated (State 4) with UE TEST LOOP MODE C on Cell 1 + f_EUTRA_Preamble(eutra_Cell1, STATE2A_TESTLOOP_ModeC); + f_EUTRA_RbEst_Def(eutra_Cell1); // Default RB establishment + f_EUTRA_CloseUE_TestLoopModeC(eutra_Cell1, cs_UE_TestLoopModeC_LB_Setup); // Bring UE in test loop mode C + //The UE is made interested in receiving MBMS service with MBMS Service ID=0 in the PLMN associated with the MBMS SAI (1) broadcasted in SIB15 on Cell 1. + f_UT_MBMS_SERVICE_Interest(UT, omit, oct2str(tsc_ServiceId_Def), true); + //The UE is configured to prioritise reception of MBMS frequencies above reception of any unicast bearers + f_UT_MBMS_Unicast( UT, true) ; + //The UE is made aware that the MBMS service is active + f_UT_MBMS_SERVICE_Active(UT, oct2str(tsc_ServiceId_Def),true, tsc_MBMS_SAI_Def ); + + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set(true); + + //@siclog "Steps 1-3" siclog@ + //The SS transmits a Paging message including a systemInfoModification for cell1. + //From the beginning of the next modification period the SS transmits SystemInformationBlockType15 including mbms-SAI-IntraFreq-r11 list indicating MBMS SAI=1. + f_ModifySysinfoCombinationC15_ToC19 (eutra_Cell1); + f_EUTRA_ModifySysinfo(eutra_Cell1, true, RRC_CONNECTED ); + + //Check: Does UE transmit a MBMSInterestIndication message including the mbms-Priority IE set to True? + v_Frequency_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell1); + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_MbmsInterestIndication_Common(cr_MbmsInterestIndication( { v_Frequency_Cell1.UL_DL_Earfcn.dl_CarrierFreq}, true_ )))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 2: Does the UE transmit MBMSInterestIndication message?"); + + //@siclog "Step 4" siclog@ + //Wait for a period equal to the MCCH repetition period for the UE to receive MBSFNAreaConfiguration message + v_MCCH_RepPer := f_EUTRA_Convert_MCCH_RepPeriodToInt(f_EUTRA_CellInfo_GetMCCH_RepPeriod(eutra_Cell2)); + v_Wait := int2float(v_MCCH_RepPer)/100.0; // Rep Period is in frame = 10 ms; + f_Delay(v_Wait); + + //@siclog "Steps 6-7" siclog@ + //The SS transmits a valid MAC PDU including 'MCH Scheduling Information MAC Control Element with LCID='00001', Stop MTCH= '00000000001' + //The SS transmits 10 MBMS Packets on the MTCH. + f_EUTRA_Send_MTCH_Data(eutra_Cell2, cs_MRB_Identity_Def(tsc_Mbsfn_AreaId_1), 10, -, rf8); // transmit 10 MTCH @sic R5s140192 sic@ + + f_Delay(1.0); //> 300ms + 10 * 4 SFN + + //@siclog "Steps 8-9" siclog@ + //The SS transmits an UE TEST LOOP MODE C MBMS PACKET COUNTER REQUEST message. + //UE responds with UE TEST LOOP MODE C MBMS PACKET COUNTER RESPONSE. + v_MBMS_CounterValue1:=f_EUTRA_MBMS_CounterProcedure(eutra_Cell1); + + //@siclog "Steps 10" siclog@ + //Check: Is the number of reported MBMS Packets received on the MTCH in step 9 greater than zero? + if (v_MBMS_CounterValue1>0) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 10: MBMS Counter value greater than 0"); + } else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 10: MBMS Counter value not greater than 0"); + } + + //@siclog "Steps 11-12" siclog@ + //The SS transmits an RRCConnectionReconfiguration message to release the unicast bearer due to congestion on the MBMS carrier(s) + //The UE transmits an RRCConnectionReconfigurationComplete message to confirm the release. + f_EUTRA_RRCConnectionReconfiguration_DRB_Release( eutra_Cell1, + tsc_RRC_TI_Def, + tsc_DRB2); + + //@siclog "Steps 13-14" siclog@ + //The SS transmits a valid MAC PDU including 'MCH Scheduling Information MAC Control Element with LCID='00001', Stop MTCH= '00000000001' + //The SS transmits 10 MBMS Packets on the MTCH. + f_EUTRA_Send_MTCH_Data(eutra_Cell2, cs_MRB_Identity_Def(tsc_Mbsfn_AreaId_1), 10, -, rf8); // transmit 10 MTCH @sic R5s140192 sic@ + + f_Delay(1.0); //> 300ms + 10 * 4 SFN + + //@siclog "Steps 15-16" siclog@ + //The SS transmits an UE TEST LOOP MODE C MBMS PACKET COUNTER REQUEST message. + //UE responds with UE TEST LOOP MODE C MBMS PACKET COUNTER RESPONSE. + v_MBMS_CounterValue2:=f_EUTRA_MBMS_CounterProcedure(eutra_Cell1); + + //@siclog "Steps 17" siclog@ + //Does the number of reported MBMS Packets received on the MTCH is greater than the number of MBMS Packets reported in step10? + if (v_MBMS_CounterValue2>v_MBMS_CounterValue1) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 17: "); + } else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 17: "); + } + + f_EUTRA_TestBody_Set(false); + + /////////////////////////////////////////////////////////////////////////////////// + // Post Amble + ////////////////////////////////////////////////////////////////////////////////// + f_UT_MBMS_SERVICE_Active(UT, oct2str(tsc_ServiceId_Def),false, tsc_MBMS_SAI_Def ); + f_UT_MBMS_Unicast( UT, false) ; + f_UT_MBMS_SERVICE_Interest(UT, omit, oct2str(tsc_ServiceId_Def), false, tsc_MBMS_SAI_Def); + // Release RRC Connection and Switch off + f_EUTRA_Postamble(eutra_Cell2, E2_CONNECTED); + } +} diff --git a/LTE_A_IWD_14wk37/LTE_A/6_1/Idle_PLMNSelection_A.ttcn b/LTE_A_IWD_14wk37/LTE_A/6_1/Idle_PLMNSelection_A.ttcn new file mode 100644 index 0000000..6a00672 --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/6_1/Idle_PLMNSelection_A.ttcn @@ -0,0 +1,446 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-06-06 19:54:44 +0200 (Fri, 06 Jun 2014) $ +// $Rev: 11662 $ +/******************************************************************************/ + +module Idle_PLMNSelection_A { + +//========================================================================= +// Imports +//========================================================================= + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_Component all; + import from EUTRA_CellInfo all; + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from EUTRA_RRC_Templates all; + import from EUTRA_SRB_Templates all; + import from EUTRA_AspCommon_Templates all; + import from EUTRA_CommonProcedures all; + import from NAS_CommonTypeDefs all; + import from EPS_NAS_TypeDefs all; + import from EPS_NAS_Constants all; + import from EPS_NAS_Templates all; + import from NAS_CommonTemplates all; + import from EPS_NAS_MsgContainers all; + import from EUTRA_RRCSteps all; + import from EUTRA_NASSteps all; + import from EUTRA_ConfigurationSteps all; + import from UpperTesterFunctions all; + import from EUTRA_AuxiliaryFunctions all; + import from EUTRA_Timing all; + import from EUTRA_IdleMode all; + + //============================================================================ + /* + * @desc REFERENCE TS 36.523-1 clause 6.1.1.7 + * @status APPROVED (LTE_A) + */ + function f_TC_6_1_1_7_EUTRA() runs on EUTRA_PTC + { /* PLMN selection / Periodic reselection / MinimumPeriodicSearchTimer */ + + var template (value) CellPowerList_Type v_CellPowerList_AtT1; + var template (value) CellPowerList_Type v_CellPowerList_AtT2; + var EUTRA_CellId_Type v_CellId := eutra_Cell13; + var EUTRA_ATTACH_Type v_ForcedAttach := NORMAL; + + var NAS_MSG_Indication_Type v_NasInd; + var NAS_KsiValue v_KsiValue; // @sic R5s140195 sic@ + var GutiParameters_Type v_GutiParams; // @sic R5s140195 sic@ + var B3_Type v_EpsUpdate_TypeValue := f_GetEPSTAUType(v_ForcedAttach); + var template (omit) EPS_BearerContextStatus v_EPS_ContextStatus; + var template AdditionalUpdateType v_AdditionalUpdateType_Expected := f_GetAdditionalUpdateType(v_ForcedAttach); + + var NAS_PlmnId v_PLMN; // @sic R5s140195 sic@ + var NAS_Lac v_LAC; // @sic R5s140195 sic@ + var TrackingAreaCode v_Tac; // @sic R5s140195 sic@ + var template (omit) LocAreaId v_LAI; // @sic R5s140195 sic@ + var template (value) TrackingAreaIdList v_TaiList; // @sic R5s140195 sic@ + var template (omit) MobileIdentity v_MSId := f_GetMSId(v_ForcedAttach); + + timer t_HpPlmn_lower; + timer t_HpPlmn_upper; + timer t_IdleMode_GenericTimer := tsc_IdleMode_GenericTimer; + + v_CellPowerList_AtT1 := { + cs_CellPower(eutra_Cell13, tsc_ServingCellRS_EPRE) + }; + v_CellPowerList_AtT2 := { + cs_CellPower(eutra_Cell1, tsc_ServingCellRS_EPRE) + }; + + //Initialise all cell, security and mobile parameters + f_EUTRA_Init(c1);//SIB2 & SIB3 are transmitted + + //Set Sys info and cell info for cell 12, &13 to be used @ creation + f_EUTRA_CellInfo_SetPLMN_1Entry(eutra_Cell12, cs_HPLMN_001_11); //PLMN1 + f_EUTRA_CellInfo_SetPLMN_1Entry(eutra_Cell13, cs_HPLMN_001_21); //PLMN2 + + //Set TAC for Cell1, Cell12, &Cell13 + //TAC for Cell1 is set to 1 in f_EUTRA_Init + f_EUTRA_CellInfo_SetTAC(eutra_Cell12, tsc_IdleMode_TAC_Cell12); + f_EUTRA_CellInfo_SetTAC(eutra_Cell13, tsc_IdleMode_TAC_Cell13); + + //Configure and activate all cells + //Cell power level will be -85 dBm/15kHz & attenuation set so that cell is seen as OFF + f_EUTRA_CellConfig_Def(eutra_Cell12); + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_CellConfig_Def(eutra_Cell13); + + // initialization of variables used @sic R5s140195 sic@ + v_GutiParams:= f_EUTRA_CellInfo_GetGuti(v_CellId); + v_LAC := f_EUTRA_CellInfo_GetLocationAreaCode(v_CellId); + v_Tac := f_EUTRA_CellInfo_GetTAC(v_CellId); + v_PLMN := f_Asn2Nas_PlmnId(v_GutiParams.PLMN_Identity); + v_LAI := f_GetLAI(v_PLMN, v_LAC, v_ForcedAttach); + v_TaiList := cds_TAIListNonConsecutive_tlv(v_PLMN, { bit2oct(v_Tac) }); + + //Equip UE with a USIM containing default values except for those shown in Table 6.1.1.7.3.1-2 + f_UT_USIM_Insert(UT, "36.523-1 Table 6.1.1.7.3.1-2"); + + //Preamble to ensure UE is in known state + f_EUTRA_Preamble(eutra_Cell12, STATE2_IDLEUPDATE); + f_EUTRA_UE_Detach_SwitchOffUe(eutra_Cell12, RRC_IDLE); + + f_EUTRA_TestBody_Set(true); + + //@siclog "Step 1" siclog@ + //Adjust cell configuration according to T1 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + + //@siclog "Step 2" siclog@ + //Power on UE + t_HpPlmn_lower.start(f_EUTRA_SetTimerToleranceMin(eutra_Cell12, nasTimer, 120.0)); // @sic R5s140195 sic@ @sic R5s140361 sic@ + f_EUTRA_SwitchOnUEandStartIP(eutra_Cell12, CNF_REQUIRED); // @sic R5s140195 sic@ + t_HpPlmn_upper.start(f_EUTRA_SetTimerToleranceMax(eutra_Cell12, nasTimer, 420.0)); // @sic R5s140195 sic@ + + //@siclog "Step 3-18" siclog@ + f_EUTRA_IdleUpdated(eutra_Cell12, PREAMBLE, STATE2_IDLEUPDATE, NORMAL); + + //@siclog "Step 19" siclog@ + f_UT_PLMN_Check(UT, "00111"); + + //@siclog "Step 20" siclog@ + //Check for RRCConnectionRequest on Cell13 / PLMN4 + alt { + [] SRB.receive(car_SRB0_RrcPdu_IND(eutra_Cell13, cr_508_RRCConnectionRequest)) + { + //* @verdict fail RRCConnectionRequest received on PLMNN2 / Cell 13 within t_HpPlmn_lower time + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Test Case 6.1.1.7 Step 20"); + } + [] t_HpPlmn_lower.timeout + { + if (f_EUTRA_RRC_ConnectionRequest_Common(eutra_Cell13, t_HpPlmn_upper)) { + //* @verdict pass RRC Connection request received on PLMN2 / Cell 13 after t_HpPlmn_lower time but before t_HpPlmn_upper + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 6.1.1.7 Step 20"); + } + else { + //* @verdict fail No RRCConnectionRequest received + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Test Case 6.1.1.7 Step 20"); + } + } + } + + t_HpPlmn_upper.start(f_EUTRA_SetTimerToleranceMin(eutra_Cell13, nasTimer, 420.0)); // @sic R5s140195 sic@ + v_KsiValue := f_EUTRA_SecurityKSIasme_Get(); // @sic R5s140195 sic@ + + //@siclog "Step 21 - 25" siclog@ + //Perform TAU procedure steps 2 to 6 + + //Step 21: Send RRC Connection Setup on SRB0 (CCCH) and switch on UL grant assignments: + f_EUTRA_RRC_ConnectionSetup_Def(v_CellId, -, tsc_RRC_TI_Def); + + // UE shall establish SRB1 acc. to 36.331 cl. 5.3.3.4 and 5.3.9 + // UE enters RRC_CONNECTED state + // SRB1 is established: no ciphering, no integrity protection for NAS/RRC + + //Step 22: Receive RRCConnectionSetupComplete which includes a TRACKING AREA UPDATE REQUEST message + v_NasInd := f_EUTRA_RRCConnectionSetupComplete_Def(v_CellId, + cr_508_RRCConnectionSetupComplete(tsc_RRC_TI_Def, ?), + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_508_TAU_Request(v_EpsUpdate_TypeValue, + v_KsiValue, + cr_DRXparameter_Any('5C'O) ifpresent, + v_AdditionalUpdateType_Expected))); + v_EPS_ContextStatus := v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.epsBearerContextStatus; // Send this back in the Accept + + /* Step 23: send TAU ACCEPT and receive TAU COMPLETE; */ + SRB.send(cas_SRB1_NasPdu_REQ(v_CellId, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_508_TAU_Accept(v_EpsUpdate_TypeValue, + f_GutiParameters2MobileIdentity(tsc_IEI_Guti, v_GutiParams), + v_TaiList, + v_EPS_ContextStatus, + v_LAI, + v_MSId, + f_GetAdditionalUpdateResult(v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.addUpdateType, v_ForcedAttach))))); + + t_HpPlmn_upper.start(f_EUTRA_SetTimerToleranceMax(eutra_Cell1, nonProtocolTimer, 420.0)) ; + + /* Step24: receive TAU COMPLETE */ + SRB.receive(car_SRB1_NasPdu_IND(v_CellId, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_TAU_Complete))); + + //Step 25: Release RRC connection + f_EUTRA_RRC_ConnectionRelease(v_CellId, tsc_RRC_TI_Def); + + //@siclog "Step 26" siclog@ + //Check if PLMN2 is indicated by UE + f_UT_PLMN_Check(UT, "00121"); + //* @verdict pass PLMN2 is indicated by UE + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 6.1.1.7 Step 26"); + + //@siclog "Step 27" siclog@ + //Adjust cell power level according to T2 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT2); + + //@siclog "Step 28" siclog@ + //Check for RRCConnectionRequest on Cell1 / PLMN4 + alt { + [] SRB.receive( car_SRB0_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionRequest)) + { + //* @verdict fail RRCConnectionRequest received on PLMNN4 / Cell 1 within t_HpPlmn_Upper time + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Test Case 6.1.1.7 Step 28"); + } + [] t_HpPlmn_upper.timeout + { + t_IdleMode_GenericTimer.start; // @sic R5s140195 sic@ + f_EUTRA_RRC_ConnectionRequest_Def(eutra_Cell1); + t_IdleMode_GenericTimer.stop; // @sic R5s140195 sic@ + //* @verdict pass RRC Connection request received on PLMN4 / Cell 1 after t_HpPlmn_Upper time + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 6.1.1.7 Step 28"); + } + } + + //@siclog "Step 29 - 33" siclog@ + //Perform TAU procedure steps 2 to 6 + f_EUTRA_TrackingAreaUpdate_WithoutRrcConnReq(eutra_Cell1); + + //@siclog "Step 34" siclog@ + //Check if PLMN4 is indicated by UE + f_UT_PLMN_Check(UT, "00101"); + //* @verdict pass PLMN4 is indicated by UE + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 6.1.1.7 Step 34"); + + f_EUTRA_TestBody_Set(false); + + //Switch/power off UE + f_EUTRA_Postamble(eutra_Cell1, E1_IDLE); + } //end of f_TC_6_1_1_7_EUTRA + + //============================================================================ + /* + * @desc REFERENCE TS 36.523-1 clause 6.1.1.7a + * @status + */ + function f_TC_6_1_1_7a_EUTRA() runs on EUTRA_PTC + { /* PLMN selection / Periodic reselection / MinimumPeriodicSearchTimer / Single Frequency operation */ + + var template (value) CellPowerList_Type v_CellPowerList_AtT1; + var template (value) CellPowerList_Type v_CellPowerList_AtT2; + var EUTRA_CellId_Type v_CellId := eutra_Cell4; + var EUTRA_ATTACH_Type v_ForcedAttach := NORMAL; + + var NAS_MSG_Indication_Type v_NasInd; + var NAS_KsiValue v_KsiValue; + var GutiParameters_Type v_GutiParams; + var B3_Type v_EpsUpdate_TypeValue := f_GetEPSTAUType(v_ForcedAttach); + var template (omit) EPS_BearerContextStatus v_EPS_ContextStatus; + var template AdditionalUpdateType v_AdditionalUpdateType_Expected := f_GetAdditionalUpdateType(v_ForcedAttach); + + var NAS_PlmnId v_PLMN; + var NAS_Lac v_LAC; + var TrackingAreaCode v_Tac; + var template (omit) LocAreaId v_LAI; + var template (value) TrackingAreaIdList v_TaiList; + var template (omit) MobileIdentity v_MSId := f_GetMSId(v_ForcedAttach); + + timer t_HpPlmn_lower; + timer t_HpPlmn_upper; + timer t_IdleMode_GenericTimer := tsc_IdleMode_GenericTimer; + + v_CellPowerList_AtT1 := { + cs_CellPower(eutra_Cell4, -79) + }; + v_CellPowerList_AtT2 := { + cs_CellPower(eutra_Cell1, -79), + cs_CellPower(eutra_Cell2, tsc_NonSuitableOffCellRS_EPRE), + cs_CellPower(eutra_Cell4, tsc_ServingCellRS_EPRE) + }; + + //Initialise all cell, security and mobile parameters + f_EUTRA_Init(c1); + + //Set maximum cell powel level for Cell 1 & 4 to be used in creation + f_EUTRA_CellInfo_InitMaxReferencePower ( eutra_Cell1, -79 ); + f_EUTRA_CellInfo_InitMaxReferencePower ( eutra_Cell4, -79 ); + + //Set Sys info and cell info for cell 2, &4 to be used @ creation + f_EUTRA_CellInfo_SetPLMN_1Entry(eutra_Cell2, cs_HPLMN_001_11); //PLMN1 + f_EUTRA_CellInfo_SetPLMN_1Entry(eutra_Cell4, cs_HPLMN_001_21); //PLMN2 + + //Set TAC for Cell2, &Cell4 + //TAC for Cell1 is set to 1 in f_EUTRA_Init + f_EUTRA_CellInfo_SetTAC(eutra_Cell2, tsc_IdleMode_TAC_Cell2); + f_EUTRA_CellInfo_SetTAC(eutra_Cell4, tsc_IdleMode_TAC_Cell4); + + //Configure and activate all cells + //Cell power level will be -85 dBm/15kHz & attenuation set so that cell is seen as OFF + f_EUTRA_CellConfig_Def(eutra_Cell2); + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_CellConfig_Def(eutra_Cell4); + + // initialization of variables + v_GutiParams:= f_EUTRA_CellInfo_GetGuti(v_CellId); + v_LAC := f_EUTRA_CellInfo_GetLocationAreaCode(v_CellId); + v_Tac := f_EUTRA_CellInfo_GetTAC(v_CellId); + v_PLMN := f_Asn2Nas_PlmnId(v_GutiParams.PLMN_Identity); + v_LAI := f_GetLAI(v_PLMN, v_LAC, v_ForcedAttach); + v_TaiList := cds_TAIListNonConsecutive_tlv(v_PLMN, { bit2oct(v_Tac) }); + + //Equip UE with a USIM containing default values except for those shown in Table 6.1.1.7a.3.1-2 + f_UT_USIM_Insert(UT, "36.523-1 Table 6.1.1.7a.3.1-2"); + + //Preamble to ensure UE is in known state + f_EUTRA_Preamble(eutra_Cell2, STATE2_IDLEUPDATE); + f_EUTRA_UE_Detach_SwitchOffUe(eutra_Cell2, RRC_IDLE); + + f_EUTRA_TestBody_Set(true); + + //@siclog "Step 1" siclog@ + //Adjust cell configuration according to T1 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + + //@siclog "Step 2" siclog@ + //Power on UE + t_HpPlmn_lower.start(f_EUTRA_SetTimerToleranceMin(eutra_Cell2, nasTimer, 120.0)); + f_EUTRA_SwitchOnUEandStartIP(eutra_Cell2, CNF_REQUIRED); + t_HpPlmn_upper.start(f_EUTRA_SetTimerToleranceMax(eutra_Cell2, nasTimer, 420.0)); + + //@siclog "Step 3-18" siclog@ + //Steps 2 to 17 of the registration procedure described in TS 36.508 subclause 4.5.2.3 are performed on Cell 2. + //NOTE: The UE performs registration and the RRC connection is released. + f_EUTRA_IdleUpdated(eutra_Cell2, PREAMBLE, STATE2_IDLEUPDATE, NORMAL); + + //@siclog "Step 19" siclog@ + //UE selects PLMN1 + f_UT_PLMN_Check(UT, "00111"); + + //@siclog "Step 20" siclog@ + //Check: Does the UE send an RRCConnectionRequest on Cell 4 after 120 seconds, but before 420 seconds from power on? + alt { + [] SRB.receive(car_SRB0_RrcPdu_IND(eutra_Cell4, cr_508_RRCConnectionRequest)) + { + //* @verdict fail RRCConnectionRequest received on PLMNN2 / Cell 4 within t_HpPlmn_lower time + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Test Case 6.1.1.7a Step 20"); + } + [] t_HpPlmn_lower.timeout + { + if (f_EUTRA_RRC_ConnectionRequest_Common(eutra_Cell4, t_HpPlmn_upper)) { + //* @verdict pass RRC Connection request received on PLMN2 / Cell 4 after t_HpPlmn_lower time but before t_HpPlmn_upper + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 6.1.1.7a Step 20"); + } + else { + //* @verdict fail No RRCConnectionRequest received + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Test Case 6.1.1.7a Step 20"); + } + } + } + + t_HpPlmn_upper.start(f_EUTRA_SetTimerToleranceMin(eutra_Cell4, nasTimer, 420.0)); + v_KsiValue := f_EUTRA_SecurityKSIasme_Get(); + + //@siclog "Step 21 - 25" siclog@ + //Steps 2 to 6 of the generic test procedure in TS 36.508 subclause 6.4.2.7 are performed on Cell 4. + //NOTE: The UE performs a TAU procedure and the RRC connection is released. + //Step 21: Send RRC Connection Setup on SRB0 (CCCH) and switch on UL grant assignments: + f_EUTRA_RRC_ConnectionSetup_Def(v_CellId, -, tsc_RRC_TI_Def); + + // UE shall establish SRB1 acc. to 36.331 cl. 5.3.3.4 and 5.3.9 + // UE enters RRC_CONNECTED state + // SRB1 is established: no ciphering, no integrity protection for NAS/RRC + + //Step 22: Receive RRCConnectionSetupComplete which includes a TRACKING AREA UPDATE REQUEST message + v_NasInd := f_EUTRA_RRCConnectionSetupComplete_Def(v_CellId, + cr_508_RRCConnectionSetupComplete(tsc_RRC_TI_Def, ?), + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_508_TAU_Request(v_EpsUpdate_TypeValue, + v_KsiValue, + cr_DRXparameter_Any('5C'O) ifpresent, + v_AdditionalUpdateType_Expected))); + v_EPS_ContextStatus := v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.epsBearerContextStatus; // Send this back in the Accept + + /* Step 23: send TAU ACCEPT and receive TAU COMPLETE; */ + SRB.send(cas_SRB1_NasPdu_REQ(v_CellId, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_508_TAU_Accept(v_EpsUpdate_TypeValue, + f_GutiParameters2MobileIdentity(tsc_IEI_Guti, v_GutiParams), + v_TaiList, + v_EPS_ContextStatus, + v_LAI, + v_MSId, + f_GetAdditionalUpdateResult(v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.addUpdateType, v_ForcedAttach))))); + + + /* Step24: receive TAU COMPLETE */ + SRB.receive(car_SRB1_NasPdu_IND(v_CellId, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_TAU_Complete))); + + //Step 25: Release RRC connection + f_EUTRA_RRC_ConnectionRelease(v_CellId, tsc_RRC_TI_Def); + + //@siclog "Step 26" siclog@ + //Check if PLMN2 is indicated by UE + f_UT_PLMN_Check(UT, "00121"); + //* @verdict pass PLMN2 is indicated by UE + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 6.1.1.7a Step 26"); + + //@siclog "Step 27" siclog@ + //Adjust cell power level according to T2 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT2); + + //@siclog "Step 28" siclog@ + //Check for RRCConnectionRequest on Cell1 / PLMN4 + alt { + [] SRB.receive( car_SRB0_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionRequest)) + { + //* @verdict fail RRCConnectionRequest received on PLMNN4 / Cell 1 within t_HpPlmn_Upper time + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Test Case 6.1.1.7a Step 28"); + } + [] t_HpPlmn_upper.timeout + { + t_IdleMode_GenericTimer.start; + f_EUTRA_RRC_ConnectionRequest_Def(eutra_Cell1); + t_IdleMode_GenericTimer.stop; + //* @verdict pass RRC Connection request received on PLMN4 / Cell 1 after t_HpPlmn_Upper time + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 6.1.1.7a Step 28"); + } + } + + //@siclog "Step 29 - 33" siclog@ + //Steps 2 to 6 of the generic test procedure in TS 36.508 subclause 6.4.2.7 are performed on Cell 1. + //NOTE: The UE performs a TAU procedure and the RRC connection is released. + f_EUTRA_TrackingAreaUpdate_WithoutRrcConnReq(eutra_Cell1); + + //@siclog "Step 34" siclog@ + //Check if PLMN4 is indicated by UE + f_UT_PLMN_Check(UT, "00101"); + //* @verdict pass PLMN4 is indicated by UE + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 6.1.1.7a Step 34"); + + f_EUTRA_TestBody_Set(false); + + //Switch/power off UE + f_EUTRA_Postamble(eutra_Cell1, E1_IDLE); + } //end of f_TC_6_1_1_7a_EUTRA +} diff --git a/LTE_A_IWD_14wk37/LTE_A/6_2/FeFACH_EU.ttcn b/LTE_A_IWD_14wk37/LTE_A/6_2/FeFACH_EU.ttcn new file mode 100644 index 0000000..93408de --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/6_2/FeFACH_EU.ttcn @@ -0,0 +1,261 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-05 19:27:02 +0200 (Fri, 05 Sep 2014) $ +// $Rev: 12079 $ +/******************************************************************************/ + +module FeFACH_EU +{ + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from CommonIratDefs all; + import from CommonDefs all; + import from EUTRA_Component all; + import from EUTRA_CommonProcedures all; + import from EUTRA_ConfigurationSteps all; + import from EUTRA_AuxiliaryFunctions all; + import from EUTRA_CellInfo all; + import from EUTRA_IRATFunctions all; + import from EUTRA_IdleMode all; + import from EUTRA_RSRQ_Functions all; + import from EUTRA_NASCommonFunctions all; + + + function f_TC_6_2_4_X_EUTRA() runs on EUTRA_PTC + { + var IRAT_CoOrd_SysInfo_Type v_UTRANSysInfo; + var boolean v_CSInOtherRAT := false; + var IRAT_Coordination_MSG v_IRAT_Coordination_MSG; + + //Initialise all cells, security and mobile parameters + f_EUTRA_Init(c4); + + //Coordinate with UTRAN component to receive UTRAN frequencies + v_UTRANSysInfo := f_IRAT_WaitForCoOrd_SysInfo(UTRAN); + //Send the cell info to the UTRAN component to initialise SIB19 + f_IRAT_Send_EUTRA_SysInfoToOtherPort(UTRAN, + f_EUTRA_CellInfo_GetEARFCN_DL(eutra_Cell1), + f_ConvertDL_BandwidthToInteger(f_EUTRA_CellInfo_GetDL_ChBandwidth(eutra_Cell1))); + + //Create and configure Cell 1 + f_EUTRA_CellConfig_Def(eutra_Cell1); + + //Since Authentication parameters were updated in the idle updated procedure... + //...receive updated parameters... + v_CSInOtherRAT := f_EUTRA_InterRAT_InitialiseAuthParams(UTRAN); + UTRAN.receive(cmr_IRAT_OctetData) -> value v_IRAT_Coordination_MSG; + + f_EUTRA_TestBody_Set(true); + + f_IRAT_WaitForCoOrd_Trigger(UTRAN); + //@siclog "Step 1" siclog@ + //Set cell paramters according to T1 + f_EUTRA_SetCellPower(eutra_Cell1, tsc_ServingCellRS_EPRE); + + //@siclog "Step 2" siclog@ + //Check that UE camps on Cell 1 with the generic test procedure TS 36.508 table 6.4.2.7A-1 + f_EUTRA_IdleMode_TAU_UponMobility_FromOtherRAT(eutra_Cell1, v_CSInOtherRAT, true, false, v_IRAT_Coordination_MSG.OctetData); + + //Tell the UTRAN component that the test case is over + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + + f_EUTRA_TestBody_Set(false); + + //Switch/Power off UE + f_EUTRA_Postamble(eutra_Cell1, E1_IDLE); + }//end of f_TC_6_2_4_X_EUTRA + + + + /* + * @desc REFERENCE TS 36.523-1 clause 6.2.4.1 + */ + function f_TC_6_2_4_1_EUTRA() runs on EUTRA_PTC + { + f_TC_6_2_4_X_EUTRA(); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 6.2.4.2 + * @status + */ + function f_TC_6_2_4_2_EUTRA() runs on EUTRA_PTC + { //Inter-RAT absolute priority based reselection in UTRA CELL_FACH (Higher Priority Layers, no cell reselection to E-UTRA RRC_IDLE when Srxlev,serv < Sprioritysearch1) + //Initialise all cells, security and mobile parameters + f_EUTRA_Init(c4); + + //Send the cell info to the UTRAN component to initialise SIB19 + f_IRAT_Send_EUTRA_SysInfoToOtherPort(UTRAN, + f_EUTRA_CellInfo_GetEARFCN_DL(eutra_Cell1), + f_ConvertDL_BandwidthToInteger(f_EUTRA_CellInfo_GetDL_ChBandwidth(eutra_Cell1))); + + //Create and configure Cell 1 + f_EUTRA_CellConfig_Def(eutra_Cell1); + + //Set cell paramters according to T0 + f_EUTRA_SetCellPower(eutra_Cell1, tsc_NonSuitableOffCellRS_EPRE); + + f_EUTRA_TestBody_Set(true); + + f_IRAT_WaitForCoOrd_Trigger(UTRAN); + //@siclog "Step 1" siclog@ + //The SS change Cell 1 level according to the row "T1" in table 6.2.4.2.3.2-1. + f_EUTRA_SetCellPower(eutra_Cell1, tsc_ServingCellRS_EPRE); + + //@siclog "Step 2" siclog@ + //Check: Does the UE send an RRCConnectionRequest on Cell 1 within the next 10s? + f_EUTRA_CheckNoAttachOn1Cell (eutra_Cell1, + 10.0, + "Test Case 6.2.4.2 Step 2 : RRCConnectionRequest message received on Cell 1 within wait time"); + + //Tell the UTRAN component that the test case is over + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + + f_EUTRA_TestBody_Set(false); + + //And now remove the cell(s) + f_EUTRA_ReleaseAllCells(); + }//end of f_TC_6_2_4_2_EUTRA + + /* + * @desc REFERENCE TS 36.523-1 clause 6.2.4.3 + */ + function f_TC_6_2_4_3_EUTRA() runs on EUTRA_PTC + { + f_TC_6_2_4_X_EUTRA(); + } + /* + * @desc REFERENCE TS 36.523-1 clause 6.2.4.4 + */ + function f_TC_6_2_4_4_EUTRA() runs on EUTRA_PTC + { + f_TC_6_2_4_X_EUTRA(); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 6.2.4.5 + * @status + */ + function f_TC_6_2_4_5_EUTRA() runs on EUTRA_PTC + { //Inter-RAT absolute priority based reselection in UTRA CELL_FACH (lower priority) to E-UTRA RRC_IDLE (higher priority) (All Layers, Squal,x >ThreshX,high2) + var IRAT_CoOrd_SysInfo_Type v_UTRANSysInfo; + var boolean v_CSInOtherRAT := false; + var IRAT_Coordination_MSG v_IRAT_Coordination_MSG; + + //Initialise all cells, security and mobile parameters + f_EUTRA_Init(c4); + + //Coordinate with UTRAN component to receive UTRAN frequencies + v_UTRANSysInfo := f_IRAT_WaitForCoOrd_SysInfo(UTRAN); + //Send the cell info to the UTRAN component to initialise SIB19 + f_IRAT_Send_EUTRA_SysInfoToOtherPort(UTRAN, + f_EUTRA_CellInfo_GetEARFCN_DL(eutra_Cell1), + f_ConvertDL_BandwidthToInteger(f_EUTRA_CellInfo_GetDL_ChBandwidth(eutra_Cell1))); + + //Set SIB1 of cell 1 according to table 6.2.4.5.3.2-1 + f_EUTRA_CellInfo_SetSysInfo_NCEinSIB1(eutra_Cell1, cs_SystemInformationBlockType1_v890_CellSelInfo(cs_CellSelectionInfo_v920(-18))); + + //Create and configure Cell 1 + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_ConfigureVNG (eutra_Cell1, -75 ); + + //Set cell paramters according to T0 + f_EUTRA_SetCellPower(eutra_Cell1, -95); + f_EUTRA_ActivateVNG (eutra_Cell1); + + //Since Authentication parameters were updated in the idle updated procedure... + //...receive updated parameters... + v_CSInOtherRAT := f_EUTRA_InterRAT_InitialiseAuthParams(UTRAN); + UTRAN.receive(cmr_IRAT_OctetData) -> value v_IRAT_Coordination_MSG; + + f_EUTRA_TestBody_Set(true); + + f_IRAT_WaitForCoOrd_Trigger(UTRAN); + //@siclog "Step 1" siclog@ + //Set cell paramters according to T1 + f_EUTRA_SetCellPower(eutra_Cell1, -75); + + //@siclog "Step 2" siclog@ + //Check that UE camps on Cell 1 with the generic test procedure TS 36.508 table 6.4.2.7A-1 + //NOTE: The UE performs a TAU procedure and the RRC Connection is released. + f_EUTRA_IdleMode_TAU_UponMobility_FromOtherRAT(eutra_Cell1, v_CSInOtherRAT, true, false, v_IRAT_Coordination_MSG.OctetData); + + //Tell the UTRAN component that the test case is over + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + + f_EUTRA_TestBody_Set(false); + + //Switch/Power off UE + f_EUTRA_Postamble(eutra_Cell1, E1_IDLE); + }//end of f_TC_6_2_4_5_EUTRA + + /* + * @desc REFERENCE TS 36.523-1 clause 6.2.4.6 + */ + function f_TC_6_2_4_6_EUTRA() runs on EUTRA_PTC + { + f_TC_6_2_4_X_EUTRA(); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 6.2.4.7 + * @status + */ + function f_TC_6_2_4_7_EUTRA() runs on EUTRA_PTC + { //Inter-RAT absolute priority based reselection in UTRA CELL_FACH (higher priority) to E-UTRA RRC_IDLE (lower priority) (All Layers, Srxlev,serv < Sprioritysearch1 , Squal,serv ThreshX,low2) + var IRAT_CoOrd_SysInfo_Type v_UTRANSysInfo; + var boolean v_CSInOtherRAT := false; + var IRAT_Coordination_MSG v_IRAT_Coordination_MSG; + + //Initialise all cells, security and mobile parameters + f_EUTRA_Init(c4); + + //Coordinate with UTRAN component to receive UTRAN frequencies + v_UTRANSysInfo := f_IRAT_WaitForCoOrd_SysInfo(UTRAN); + //Send the cell info to the UTRAN component to initialise SIB19 + f_IRAT_Send_EUTRA_SysInfoToOtherPort(UTRAN, + f_EUTRA_CellInfo_GetEARFCN_DL(eutra_Cell1), + f_ConvertDL_BandwidthToInteger(f_EUTRA_CellInfo_GetDL_ChBandwidth(eutra_Cell1))); + + //Set SIB1 of cell 1 according to table 6.2.4.7.3.2-1 + f_EUTRA_CellInfo_SetSysInfo_NCEinSIB1(eutra_Cell1, cs_SystemInformationBlockType1_v890_CellSelInfo(cs_CellSelectionInfo_v920(-18))); + + //Create and configure Cell 1 + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_ConfigureVNG (eutra_Cell1, -75 ); + + //Set cell paramters according to T0 + f_EUTRA_SetCellPower(eutra_Cell1, -95); + f_EUTRA_ActivateVNG (eutra_Cell1); + + //Since Authentication parameters were updated in the idle updated procedure... + //...receive updated parameters... + v_CSInOtherRAT := f_EUTRA_InterRAT_InitialiseAuthParams(UTRAN); + UTRAN.receive(cmr_IRAT_OctetData) -> value v_IRAT_Coordination_MSG; + + f_EUTRA_TestBody_Set(true); + + f_IRAT_WaitForCoOrd_Trigger(UTRAN); + //@siclog "Step 1" siclog@ + //Set cell paramters according to T1 + f_EUTRA_SetCellPower(eutra_Cell1, -75); + + //@siclog "Step 2" siclog@ + //Check that UE camps on Cell 1 with the generic test procedure TS 36.508 table 6.4.2.7A-1 + //NOTE: The UE performs a TAU procedure and the RRC Connection is released. + f_EUTRA_IdleMode_TAU_UponMobility_FromOtherRAT(eutra_Cell1, v_CSInOtherRAT, true, false, v_IRAT_Coordination_MSG.OctetData); + + //Tell the UTRAN component that the test case is over + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + + f_EUTRA_TestBody_Set(false); + + //Switch/Power off UE + f_EUTRA_Postamble(eutra_Cell1, E1_IDLE); + }//end of f_TC_6_2_4_7_EUTRA + +} diff --git a/LTE_A_IWD_14wk37/LTE_A/6_2/FeFACH_EU_UTRAN.ttcn b/LTE_A_IWD_14wk37/LTE_A/6_2/FeFACH_EU_UTRAN.ttcn new file mode 100644 index 0000000..a876011 --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/6_2/FeFACH_EU_UTRAN.ttcn @@ -0,0 +1,351 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-05 19:27:02 +0200 (Fri, 05 Sep 2014) $ +// $Rev: 12079 $ +/******************************************************************************/ +module FeFACH_EU_UTRAN +{ + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_ASP_Definitions language "ASN.1:2002" all; + import from CommonIratDefs all; + import from CommonDefs all; + import from UTRAN_RRC_SysInfo_Templates all; + import from UTRAN_Component all; + import from UTRAN_CellInfo all; + import from UTRAN_CommonFunctions all; + import from UTRAN_CommonProcedures all; + import from UTRAN_ConfigurationSteps all; + import from UTRAN_RAB_Functions all; + import from UTRAN_CommonDefs all; + import from EUTRA_CapabilityFunctions all; //f_ConvertDL_BandwidthPIXITToInteger + + //============================================================================== + // Templates + //============================================================================== + template (value) SIB19_v920NonCriticalExtensions_Type cs_SIB19_v920NonCriticalExtensions (integer p_ThreshServingLow2 := 7, + integer p_QqualminEUTRA := -20, + integer p_TreshXhigh2 := 5, + integer p_ThreshXlow2 := 5, + template (value) SIB19_sysInfoType19_vb30ext.cell_fach_meas_ind p_Cell_FeachMeasInd:= high_priority_layers) := + { // SIB19 acc. to Table 6.2.4.x.3.3-1: System Information Block type 19 for Cell 5 (Pre-test conditions and all steps) + sysInfoType19_v920ext:= { + utra_PriorityInfoList_v920ext:={ threshServingLow2:= p_ThreshServingLow2 }, + eutra_FrequencyAndPriorityInfoList_v920ext := {{ + qqualMinEUTRA := p_QqualminEUTRA, + threshXhigh2 := p_TreshXhigh2, + threshXlow2:= p_ThreshXlow2 + }} + }, + va80NonCriticalExtensions := { + sysInfoType19_va80ext := { + multipleEutraFrequencyInfoList := omit + }, + vb30NonCriticalExtensions := { + sysInfoType19_vb30ext := { + cell_fach_meas_ind := p_Cell_FeachMeasInd + }, + vb50NonCriticalExtensions := omit + } + } + }; + + //============================================================================== + // Functions + //============================================================================== + //Common function for TC6.2.4.1, TC6.2.4.3, TC6.2.4.4 and TC6.2.4.6 + function f_TC_6_2_4_X_UTRAN(integer p_TestCaseNumber) runs on UTRAN_PTC + { + var integer v_T0_CPICH_Cell5 := -60; + var integer v_T0_PCCPCH_Cell5 := -62; + var IRAT_CoOrd_SysInfo_Type v_EUTRASysInfo; + var EUTRA_MeasurementBandwidth v_EUTRA_MeasurementBandwidth := f_UTRAN_ConvertIntegerToEUTRA_MeasurementBandwidth( + f_ConvertDL_BandwidthPIXITToInteger()); + //Initialise all cells + f_UTRAN_Init(EUTRA_UTRAN); + + //Send the cell info to the EUTRA component + f_UTRAN_Send_IR_SysInfoToEUTRA(utran_Cell5); + + //Get Cell Parameters for EUTRA cell + v_EUTRASysInfo := f_IRAT_WaitForCoOrd_SysInfo(EUTRA); + + select (p_TestCaseNumber) + { + case (1) { + //Update SIB19 of cell 5 according to Table 6.2.4.1.3.2-3 + f_UTRAN_SysInfo_SetSIB19(utran_Cell5, + cs_SIB19_Common(cs_Utra_PriorityInfoList_Def, + omit, + cs_Eutra_FreqAndPriList_OneEntry_Def( v_EUTRASysInfo.Eutra[0].Arfcn, v_EUTRA_MeasurementBandwidth), + cs_SIB19_v920NonCriticalExtensions() //high_priority_layers condition + )); + } case (3) { + //Update SIB19 of cell 5 according to Table 6.2.4.3.3.2-3 + f_UTRAN_SysInfo_SetSIB19(utran_Cell5, + cs_SIB19_Common(cs_Utra_PriorityInfoList_Def, + omit, + cs_Eutra_FreqAndPriList_OneEntry_Common(v_EUTRASysInfo.Eutra[0].Arfcn, // Earfcn + omit, // MeasurementBandwidth + 4, // E-UTRA Priority + -53, // QrxLevMinEutra + 31, // ThreshXhigh --62-- + 1, // ThreshXlow + omit, // Eutra-blackListedCellList + true), // EutraDetection + cs_SIB19_v920NonCriticalExtensions() //high_priority_layers condition + )); //ThreshXlow2 + } case (4) { + //Update SIB19 of cell 5 according to Table 6.2.4.4.3.2-3 + f_UTRAN_SysInfo_SetSIB19(utran_Cell5, + cs_SIB19_Common(cs_Utra_PriorityInfoList_Def, + omit, + cs_Eutra_FreqAndPriList_OneEntry_Def( v_EUTRASysInfo.Eutra[0].Arfcn, v_EUTRA_MeasurementBandwidth), + cs_SIB19_v920NonCriticalExtensions(-, -, -, -, all_layers) //all_layers condition + )); + } case (6) { + //Update SIB19 of cell 5 according to Table 6.2.4.6.3.2-3 + f_UTRAN_SysInfo_SetSIB19(utran_Cell5, + cs_SIB19_Common(cs_Utra_PriorityInfoList_Common( 3, // UtraPriorityValue + 11, // S_PrioritySearch1 + 0, // S_PrioritySearch2 + 11), // ThreshServingLow + omit, + cs_Eutra_FreqAndPriList_OneEntry_Common(v_EUTRASysInfo.Eutra[0].Arfcn, // Earfcn + v_EUTRA_MeasurementBandwidth,// MeasurementBW + 2, // E-UTRA Priority + -53, // QrxLevMinEutra + 2, // ThreshXhigh @sic R5-140749 sic@ + 1, // ThreshXlow + omit, // Eutra-blackListedCellList + true), // EutraDetection + omit)); + } case else { + FatalError (__FILE__, __LINE__, "Invalid Test Case Number"); + } + } + + //Create and configure Cell 5 + //Cell started switched on with default power level, -60 and max attenuation + f_UTRAN_SS_CreateCellFACH(utran_Cell5); + + //Start sending System Information + f_UTRAN_SendDefSysInfo(utran_Cell5); + + //Initial conditions: the UE is in state PS-DCCH+DTCH FACH (state 6-11) on Cell 5 + /*Bring UE to initial state by + 1. Bring UE to Idle updated + 2. Bring UE to state 6-11 */ + f_UTRAN_Preamble(utran_Cell5); + f_UTRAN_UE_FACH_PS_Rb_Est(utran_Cell5, waitForIP); + //Set cell power level according to T0 + f_UTRAN_SetCellPower(utran_Cell5,v_T0_CPICH_Cell5,v_T0_PCCPCH_Cell5); + + f_IRAT_SendCoOrd(EUTRA, cms_IRAT_OctetData(f_UTRAN_MobileInfo_EUTRACapability_Get())); + + f_UTRAN_TestBody_Set(true); + // Test case now finished on UTRAN side, Finished here for now + f_IRAT_SendCoOrd(EUTRA, cms_IRAT_Trigger); + f_UTRAN_TestBody_Set(false); + + // Test case finished, so take cell down + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + + //Release UTRAN Cell 5 + f_UTRAN_ReleaseCell(utran_Cell5, f_UTRAN_CellInfo_GetConfigType(utran_Cell5)); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 6.2.4.1 + */ + function f_TC_6_2_4_1_UTRAN() runs on UTRAN_PTC + { + f_TC_6_2_4_X_UTRAN(1); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 6.2.4.2 + * @status + */ + function f_TC_6_2_4_2_UTRAN() runs on UTRAN_PTC + { //Inter-RAT absolute priority based reselection in UTRA CELL_FACH (Higher Priority Layers, no cell reselection to E-UTRA RRC_IDLE when Srxlev,serv < Sprioritysearch1) + var IRAT_CoOrd_SysInfo_Type v_EUTRASysInfo; + var EUTRA_MeasurementBandwidth v_EUTRA_MeasurementBandwidth := f_UTRAN_ConvertIntegerToEUTRA_MeasurementBandwidth(f_ConvertDL_BandwidthPIXITToInteger()); + + //Initialise all cells + f_UTRAN_Init(EUTRA_UTRAN); + + //Get Cell Parameters for EUTRA cell + v_EUTRASysInfo := f_IRAT_WaitForCoOrd_SysInfo(EUTRA); + + //Update SIB19 of cell 5 according to table 6.2.4.2.3.3-1 + f_UTRAN_SysInfo_SetSIB19(utran_Cell5, + cs_SIB19_Common(cs_Utra_PriorityInfoList_Def(-, 31), + omit, + cs_Eutra_FreqAndPriList_OneEntry_Def( v_EUTRASysInfo.Eutra[0].Arfcn, v_EUTRA_MeasurementBandwidth), + cs_SIB19_v920NonCriticalExtensions)); + + //Create and configure Cell 5 + //Cell started switched on with default power level, -60 and max attenuation + f_UTRAN_SS_CreateCellFACH(utran_Cell5); + + //Start sending System Information + f_UTRAN_SendDefSysInfo(utran_Cell5); + + //Initial conditions: the UE is in state PS-DCCH+DTCH FACH (state 6-11) on Cell 5 + /*Bring UE to initial state by + 1. Bring UE to Idle updated + 2. Bring UE to state 6-11 */ + f_UTRAN_Preamble(utran_Cell5); + f_UTRAN_UE_FACH_PS_Rb_Est(utran_Cell5, waitForIP); + + f_UTRAN_TestBody_Set(true); + + //@siclog "Step 1" siclog@ + //The SS change Cell 1 level according to the row "T1" in table 6.2.4.2.3.2-1. + f_IRAT_SendCoOrd(EUTRA, cms_IRAT_Trigger); + + // Test case finished, so take cell down + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + + f_UTRAN_TestBody_Set(false); + + //Switch/Power off UE and release cell + f_UTRAN_Postamble(utran_Cell5, U2_CONNECTED); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 6.2.4.3 + */ + function f_TC_6_2_4_3_UTRAN() runs on UTRAN_PTC + { + f_TC_6_2_4_X_UTRAN(3); + } + /* + * @desc REFERENCE TS 36.523-1 clause 6.2.4.4 + */ + function f_TC_6_2_4_4_UTRAN() runs on UTRAN_PTC + { + f_TC_6_2_4_X_UTRAN(4); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 6.2.4.5 + * @status + */ + function f_TC_6_2_4_5_UTRAN() runs on UTRAN_PTC + { //Inter-RAT absolute priority based reselection in UTRA CELL_FACH (lower priority) to E-UTRA RRC_IDLE (higher priority) (All Layers, Squal,x >ThreshX,high2) + var IRAT_CoOrd_SysInfo_Type v_EUTRASysInfo; + var EUTRA_MeasurementBandwidth v_EUTRA_MeasurementBandwidth := f_UTRAN_ConvertIntegerToEUTRA_MeasurementBandwidth(f_ConvertDL_BandwidthPIXITToInteger()); + + //Initialise all cells + f_UTRAN_Init(EUTRA_UTRAN); + + //Send the cell info to the EUTRA component + f_UTRAN_Send_IR_SysInfoToEUTRA(utran_Cell5); + + //Get Cell Parameters for EUTRA cell + v_EUTRASysInfo := f_IRAT_WaitForCoOrd_SysInfo(EUTRA); + + //Update SIB19 of cell 5 according to table 6.2.4.5.3.2-1 and table 6.2.4.5.3.2-2 + f_UTRAN_SysInfo_SetSIB19(utran_Cell5, + cs_SIB19_Common(cs_Utra_PriorityInfoList_Def, + omit, + cs_Eutra_FreqAndPriList_OneEntry_Def( v_EUTRASysInfo.Eutra[0].Arfcn, v_EUTRA_MeasurementBandwidth), + cs_SIB19_v920NonCriticalExtensions( -, -18, -, -, all_layers))); + + //Create and configure Cell 5 + //Cell started switched on with default power level, -60 and max attenuation + f_UTRAN_SS_CreateCellFACH(utran_Cell5); + + //Start sending System Information + f_UTRAN_SendDefSysInfo(utran_Cell5); + + //Initial conditions: the UE is in state PS-DCCH+DTCH FACH (state 6-11) on Cell 5 + /*Bring UE to initial state by + 1. Bring UE to Idle updated + 2. Bring UE to state 6-11 */ + f_UTRAN_Preamble(utran_Cell5); + f_UTRAN_UE_FACH_PS_Rb_Est(utran_Cell5, waitForIP); + + f_IRAT_SendCoOrd(EUTRA, cms_IRAT_OctetData(f_UTRAN_MobileInfo_EUTRACapability_Get())); + + f_UTRAN_TestBody_Set(true); + // Test case now finished on UTRAN side, Finished here for now + f_IRAT_SendCoOrd(EUTRA, cms_IRAT_Trigger); + + // Test case finished, so take cell down + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + + f_UTRAN_TestBody_Set(false); + + //Release UTRAN Cell 5 + f_UTRAN_ReleaseCell(utran_Cell5, f_UTRAN_CellInfo_GetConfigType(utran_Cell5)); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 6.2.4.6 + */ + function f_TC_6_2_4_6_UTRAN() runs on UTRAN_PTC + { + f_TC_6_2_4_X_UTRAN(6); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 6.2.4.7 + * @status + */ + function f_TC_6_2_4_7_UTRAN() runs on UTRAN_PTC + { //Inter-RAT absolute priority based reselection in UTRA CELL_FACH (higher priority) to E-UTRA RRC_IDLE (lower priority) (All Layers, Srxlev,serv < Sprioritysearch1 , Squal,serv ThreshX,low2) + var IRAT_CoOrd_SysInfo_Type v_EUTRASysInfo; + var EUTRA_MeasurementBandwidth v_EUTRA_MeasurementBandwidth := f_UTRAN_ConvertIntegerToEUTRA_MeasurementBandwidth(f_ConvertDL_BandwidthPIXITToInteger()); + + //Initialise all cells + f_UTRAN_Init(EUTRA_UTRAN); + + //Send the cell info to the EUTRA component + f_UTRAN_Send_IR_SysInfoToEUTRA(utran_Cell5); + + //Get Cell Parameters for EUTRA cell + v_EUTRASysInfo := f_IRAT_WaitForCoOrd_SysInfo(EUTRA); + + //Update SIB19 of cell 5 according to table 6.2.4.7.3.2-1 and table 6.2.4.7.3.2-2 + f_UTRAN_SysInfo_SetSIB19(utran_Cell5, + cs_SIB19_Common(cs_Utra_PriorityInfoList_Def(-, -, 25), + omit, + cs_Eutra_FreqAndPriList_OneEntry_Def( v_EUTRASysInfo.Eutra[0].Arfcn, v_EUTRA_MeasurementBandwidth), + cs_SIB19_v920NonCriticalExtensions( -, -18, 15, -, all_layers))); + + //Create and configure Cell 5 + //Cell started switched on with default power level, -60 and max attenuation + f_UTRAN_SS_CreateCellFACH(utran_Cell5); + + //Start sending System Information + f_UTRAN_SendDefSysInfo(utran_Cell5); + + //Initial conditions: the UE is in state PS-DCCH+DTCH FACH (state 6-11) on Cell 5 + /*Bring UE to initial state by + 1. Bring UE to Idle updated + 2. Bring UE to state 6-11 */ + f_UTRAN_Preamble(utran_Cell5); + f_UTRAN_UE_FACH_PS_Rb_Est(utran_Cell5, waitForIP); + + f_IRAT_SendCoOrd(EUTRA, cms_IRAT_OctetData(f_UTRAN_MobileInfo_EUTRACapability_Get())); + + f_UTRAN_TestBody_Set(true); + // Test case now finished on UTRAN side, Finished here for now + f_IRAT_SendCoOrd(EUTRA, cms_IRAT_Trigger); + + // Test case finished, so take cell down + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + + f_UTRAN_TestBody_Set(false); + + //Release UTRAN Cell 5 + f_UTRAN_ReleaseCell(utran_Cell5, f_UTRAN_CellInfo_GetConfigType(utran_Cell5)); + } +} diff --git a/LTE_A_IWD_14wk37/LTE_A/7_1/MAC_CA.ttcn b/LTE_A_IWD_14wk37/LTE_A/7_1/MAC_CA.ttcn new file mode 100644 index 0000000..44da9b1 --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/7_1/MAC_CA.ttcn @@ -0,0 +1,2511 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 12:15:34 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12147 $ +/******************************************************************************/ +module MAC_CA { + import from EUTRA_CellInfo all; + import from EUTRA_BandDependentParam all; + import from EUTRA_ConfigurationSteps all; + import from EUTRA_CommonProcedures all; + import from EUTRA_ASP_TypeDefs all; + import from EUTRA_AspCommon_Templates all; + import from EUTRA_CommonDefs all; + import from EUTRA_CellCfg_Templates all; + import from EUTRA_RRC_Templates all; + import from EUTRA_ASP_DrbDefs all; + import from EUTRA_SRB_Templates all; + import from EUTRA_Component all; + import from MAC_Common all; + import from L2_CommonTemplates all; + import from L2_CommonFunctions all; + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_Timing all; +// import from EUTRA_DRB_Templates all; + import from CommonDefs all; + import from EUTRA_CellInfoInit_CA all; + import from EUTRA_RRC_Templates_CA all; + import from EUTRA_CommonFunctions_CA all; + import from EUTRA_SysInfo_Templates all; + import from Parameters all; + import from EUTRA_SecuritySteps all; + + //========================================================================= + // Constants + //========================================================================= + + const B7_Type tsc_Scell1_Activate := '0000001'B; /* @status APPROVED (LTE_A) */ + const B7_Type tsc_DeactivateAll := '0000000'B; /* @status APPROVED (LTE_A) */ + const SRSInd_Type tsc_SRS_Start := SRS_Start; + const SRSInd_Type tsc_SRS_Stop := SRS_Stop; + + + //========================================================================= + // Templates + //========================================================================= + + template (value) MAC_PDU_SubHeader_Type cs_MAC_PDU_ScellActDeactSubHeader := + { /* @status APPROVED (LTE_A) */ + Reserved := tsc_B2_Reserved, /* Reserved bits */ + Extension := tsc_ExtensionNoMoreHeaders, + LCID := tsc_LchId_ScellActDeact, + Length := omit + }; + + template (value) MAC_CTRL_ElementList_Type cs_CTRL_Elem_ScellActDeact(B7_Type p_ScellBitMap) := + { /* @status APPROVED (LTE_A) */ + ShortBSR := omit, /* UL only */ + LongBSR := omit, /* UL only */ + C_RNTI := omit, /* UL only */ + ContentionResolutionID := omit, /* DL only */ + TimingAdvance := omit, + PowerHeadRoom := omit, /* UL only */ + ScellActDeact := { + Reserved := '0'B, + Value := p_ScellBitMap + }, + ExtPowerHeadRoom := omit + }; + + template (value) MAC_PDU_Type cs_MAC_PDU_ScellActDeact(B7_Type p_ScellBitMap) := + { /* @status APPROVED (LTE_A) */ + Header := { /* list of MAC PDU SubHeaders corresponding to + * MAC control elements and MAC SDUs */ + cs_MAC_PDU_ScellActDeactSubHeader + }, + CtrlElementList := cs_CTRL_Elem_ScellActDeact(p_ScellBitMap), /* Mac control elements; acc. to 36.321 cl. 6.1.2 + * "MAC control elements, are always placed before any MAC SDU." */ + SduList := omit, /* MAC SDUs, which can typically be RLC PDUs */ + Padding := omit /* padding bytes apart from the last subheader byte */ + }; + + template (value) MAC_PDU_Type cs_MAC_PDU_4RLCPDU_1Padding(B5_Type p_LCh_Id1, + B5_Type p_LCh_Id2, + B5_Type p_LCh_Id3, + B5_Type p_LCh_Id4, + MAC_SDU_Type p_MAC_SDU1, + MAC_SDU_Type p_MAC_SDU2, + MAC_SDU_Type p_MAC_SDU3, + MAC_SDU_Type p_MAC_SDU4) := + { /* @status */ + Header := { /* list of MAC PDU SubHeaders corresponding to + * MAC control elements and MAC SDUs */ + cds_MAC_PDU_SubHeader_Short_SDU_MoreHeaders_LCID(lengthof (p_MAC_SDU1), p_LCh_Id1), + cds_MAC_PDU_SubHeader_Short_SDU_MoreHeaders_LCID(lengthof (p_MAC_SDU2), p_LCh_Id2), + cds_MAC_PDU_SubHeader_Short_SDU_MoreHeaders_LCID(lengthof (p_MAC_SDU3), p_LCh_Id3), + cds_MAC_PDU_SubHeader_Short_SDU_MoreHeaders_LCID(lengthof (p_MAC_SDU4), p_LCh_Id4), + cs_MAC_PDU_PaddingSubHeader + }, + CtrlElementList := omit, /* Mac control elements; acc. to 36.321 cl. 6.1.2 + * "MAC control elements, are always placed before any MAC SDU." */ + SduList := { /* MAC SDUs, which can typically be RLC PDUs */ + p_MAC_SDU1, + p_MAC_SDU2, + p_MAC_SDU3, + p_MAC_SDU4 + }, + Padding := omit /* padding bytes apart from the last subheader byte */ + }; + + template (value) MAC_PDU_Type cs_MAC_PDU_Padding(template (value) PDCP_SDU_Type p_Padding) := + { /* @status APPROVED (LTE_A) */ + Header := { + cs_MAC_PDU_PaddingSubHeader + }, + CtrlElementList := omit, /* Mac control elements; acc. to 36.321 cl. 6.1.2 + * "MAC control elements, are always placed before any MAC SDU." */ + SduList := omit, /* MAC SDUs, which can typically be RLC PDUs */ + Padding := p_Padding /* padding bytes apart from the last subheader byte */ + }; + + template (value) ScellBitMap_Type cs_ScellBitMap(B7_Type p_ScellBitMap) := + { /* @status APPROVED (LTE_A) */ + Reserved := '0'B, /* LSBit Reserved. Shall be set to 0 */ + Value := p_ScellBitMap /* 7 MSB bits the C Fields C7 to C1. 1 => the corresponding Scell is Active 0 => Inactive */ + }; + + template (value) ActivateScell_Type cs_ActivateScell(B7_Type p_ScellBitMap, + boolean p_SendMCE := false) := + { /* @status APPROVED (LTE_A) */ + ScellActivation := cs_ScellBitMap (p_ScellBitMap), /* 36.321 clause 6.1.3.8; B0=C7, B1=C6 .. B6=C1, B7 is reserved. + * B0 to B6, 1 means Activate associated Scell */ + SendMCE := p_SendMCE /* If true the SS sends a MAC Control Element to the UE */ + }; + + template (value) SYSTEM_CTRL_REQ cas_ScellActivate_REQ(EUTRA_CellId_Type p_CellId, + B7_Type p_ScellBitMap, + boolean p_SendMCE := false, //@sic R5s140693 sic@ + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now) := + { /* @status APPROVED (LTE_A) */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, p_TimingInfo), + Request := { + ActivateScell := cs_ActivateScell(p_ScellBitMap, p_SendMCE) + } + }; + + //---------------------------------------------------------------------------- + + template (present) BSR_Type cr_ShortBSR(LogicalChannelGroup_Type p_LCG, + BSR_Value_Type p_Value) := /* BSR or Extended BSR value */ + { /* @status APPROVED (LTE_A) */ + Short := { + LCG := p_LCG, + Value := p_Value + } + }; + + //---------------------------------------------------------------------------- + + template (value) MAC_MainConfig_v1020_Type cs_508_MAC_MainConfig_EPHR_v1020 (template (omit) MAC_MainConfig_ScellDeactivationTimer_Type p_ScellDeactivationTimer :=omit) := + { /* @status APPROVED (LTE_A) */ + sCellDeactivationTimer_r10 := p_ScellDeactivationTimer, /* FFS in TS 36.508 V10.0.0 (2012-03) */ + //@sic R5s140295 sic@ + extendedBSR_Sizes_r10 := omit, + extendedPHR_r10 := setup + }; + template (value) MAC_MainConfig_v1020_Type cs_508_MAC_MainConfig_SCellDeactTimer_v1020 (template (omit) MAC_MainConfig_ScellDeactivationTimer_Type p_ScellDeactivationTimer :=omit) := + { /* @status */ + sCellDeactivationTimer_r10 := p_ScellDeactivationTimer, /* FFS in TS 36.508 V10.0.0 (2012-03) */ + //@sic R5s140295 sic@ + extendedBSR_Sizes_r10 := omit, + extendedPHR_r10 := omit + }; + template (value) MAC_MainConfig cs_MAC_MainConfig_EPHR_Config(template (value) PHR_Config_Type p_PHR_Config, + template (omit) MAC_MainConfig_v1020_Type p_MAC_MainConfig_v1020 := omit) := + /* @status APPROVED (LTE_A) */ + cds_MAC_MainConfig_Common_V1020(omit, omit, sf750, p_PHR_Config, -, p_MAC_MainConfig_v1020); + + template (value) MAC_MainConfig cs_MAC_MainConfiguration_EPHR_Enable (template (omit) MAC_MainConfig_ScellDeactivationTimer_Type p_ScellDeactivationTimer :=omit):= + /* @status APPROVED (LTE_A) */ + //@sic R5s140295 sic@ + cs_MAC_MainConfig_EPHR_Config(cs_PHR_Config_Setup(sf200, sf1000, infinity_), cs_508_MAC_MainConfig_EPHR_v1020(p_ScellDeactivationTimer)); + + template (present) SYSTEM_IND car_EPHR_IND(EUTRA_CellId_Type p_CellId, + template (present) TimingInfo_Type p_TimingInfo, + template (present) MAC_CTRL_ExtPowerHeadRoom_Type p_EPHR_Type) := + { /* @status APPROVED (LTE_A) */ + Common := cr_IndAspCommonPart_SysInd (p_CellId, p_TimingInfo), + Indication := { + EPHR := p_EPHR_Type + } + }; + template (value) MAC_CTRL_ElementList_Type cs_CTRL_Elem_TA_0_STAG1 := + { /* @status APPROVED (LTE) */ + ShortBSR := omit, /* UL only */ + LongBSR := omit, /* UL only */ + C_RNTI := omit, /* UL only */ + // DRX command CTRL Elem is 0 bits length + ContentionResolutionID := omit, /* DL only */ + TimingAdvance := '01011111'B, /* value of 31 36.213 clause 4.2.3 NTA,new = NTA,old + (TA-31)*16 results in NTA,new = NTA,old*/ + PowerHeadRoom := omit, /* UL only */ + ScellActDeact := omit, // @sic CA ASP implementation sic@ + ExtPowerHeadRoom := omit // @sic CA ASP implementation sic@ + }; + + template (value) MAC_PDU_Type cs_MAC_PDU_TimingAdvance_0_STAG1 := + { /* @status APPROVED (LTE) */ + Header := { cs_MAC_PDU_SubHeader_TA }, /* list of MAC PDU SubHeaders corresponding to + * MAC control elements and MAC SDUs */ + CtrlElementList := cs_CTRL_Elem_TA_0_STAG1, /* Mac control elements; acc. to 36.321 cl. 6.1.2 + * "MAC control elements, are always placed before any MAC SDU." */ + SduList := omit, /* MAC SDUs, which can typically be RLC PDUs */ + Padding := omit /* Octet aligned Padding if more than or equal to 2 bytes */ + }; + + template (present) SYSTEM_CTRL_CNF car_SYSTEM_CTRL_ActivateScell_CNF(EUTRA_CellId_Type p_CellId) := + { /* @status APPROVED (LTE_A) */ + Common := cr_CnfAspCommonPart_CellCfg(p_CellId), + Confirm := { + ActivateScell := true + } + }; + + template (present) RLC_PDU_Type cr_RLC_AMD_2PDU_713x(template (present) B1_Type p_Poll, + template (present) B10_Type p_SN, + template (present) RLC_DataField_Type p_RLC_SDU, + template (present) RLC_DataField_Type p_RLC_SDU2) := + { /* @status APPROVED (LTE_A) */ + //@sic R5s140498 sic@ + AMD := { + Header := cr_RLC_AMD_Header_1SDU_713x(p_Poll, p_SN), + Data := {p_RLC_SDU, p_RLC_SDU2} + } + }; + + template (present) RLC_AMD_Header_Type cr_RLC_AMD_Header_1SDU_713x(template (present) B1_Type p_Poll, + template (present) B10_Type p_SN) := + { /* @status APPROVED (LTE_A) */ + //@sic R5s140498 sic@ + FixPart := cr_RLC_AMD_Header_FixPart_713x(p_Poll, p_SN), + SegmentPart := omit, + FlexPart := { + LengthIndicator := { + { + Extension := tsc_E_Data, + LengthIndicator := int2bit (38, 11) + } + }, + Padding := '????'B // + } + }; + + template (present) RLC_AMD_Header_FixPart_Type cr_RLC_AMD_Header_FixPart_713x(template (present) B1_Type p_Poll, + template (present) B10_Type p_SN) := + { /* @status APPROVED (LTE_A) */ + //@sic R5s140498 sic@ + D_C := tsc_D_C_DataPDU, /* 1 ... Data PDU */ + ReSeg := '0'B, /* 0 ... AMD PDU */ + Poll := p_Poll, + FramingInfo := tsc_Framing00, /* 2 bit FI */ + Extension := tsc_ExtensionMoreHeaders, /* 1 bit E */ + SN := p_SN /* Sequence numbers */ + }; + + //========================================================================= + // functions + //========================================================================= + altstep a_EUTRA_MAC_SRSInd (EUTRA_CellId_Type p_CellId, + template (present) SRSInd_Type p_SrsInd) runs on EUTRA_PTC + { + [] SYSIND.receive(car_SRS_IND(p_CellId, cr_TimingInfo_Any, p_SrsInd)) + { + repeat; + } + } + + /* + * @desc Function to Config SS for reporting SRS Reception + * @param p_CellId + * @param p_SRS_Mode + * @status + */ + function f_SS_ConfigSRS_IndMode(EUTRA_CellId_Type p_CellId, + L1Mac_IndicationMode_Type p_SRS_Mode, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now) runs on EUTRA_PTC + { + f_EUTRA_SS_CommonL1MacIndCtrlConfig(p_CellId, cas_SRS_IndConfig_REQ(p_CellId, p_SRS_Mode, p_TimingInfo)); + } + /* + * @desc Function to Config SS for reporting Extended Power head room Reception + * @param p_CellId + * @param p_EPHR_Mode + * @status APPROVED (LTE_A) + */ + function f_SS_ConfigExtendedPowerHeadRoomIndMode(EUTRA_CellId_Type p_CellId, + L1Mac_IndicationMode_Type p_EPHR_Mode) runs on EUTRA_PTC + { + f_EUTRA_SS_CommonL1MacIndCtrlConfig(p_CellId, cas_EPHR_IndConfig_REQ(p_CellId, p_EPHR_Mode)); + } + /* + * @desc Cell Configuration: Activate/Deactivate Scell + * @param p_CellId + * @param p_SYSTEM_CTRL_REQ + * @status APPROVED (LTE_A) + */ + function f_EUTRA_SS_CommonActivateScellConfig(EUTRA_CellId_Type p_CellId, + template (value) SYSTEM_CTRL_REQ p_SYSTEM_CTRL_REQ) runs on EUTRA_PTC + {//@sic R5s140295 sic@ + SYS.send(p_SYSTEM_CTRL_REQ); + if (valueof(p_SYSTEM_CTRL_REQ.Common.ControlInfo.CnfFlag) == true) { + SYS.receive(car_SYSTEM_CTRL_ActivateScell_CNF(p_CellId)); + } + } + + /* + * @desc To send MCE to Activate/Deativate a scell + * @param p_CellId + * @param p_ScellBitMap + * @status APPROVED (LTE_A) + */ + function f_EUTRA_ScellActivate_Deactivate(EUTRA_CellId_Type p_CellId, + B7_Type p_ScellBitMap,//@sic R5s140693 sic@ + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now) runs on EUTRA_PTC + { + DRB.send(cas_DRB_COMMOM_REQ_MAC_PDU(p_CellId, + tsc_RbId_DRB1, + p_TimingInfo,//@sic R5s140693 sic@ + cs_MAC_PDUList_1(cs_MAC_PDU_ScellActDeact(p_ScellBitMap)))); + f_EUTRA_SS_CommonActivateScellConfig(p_CellId, cas_ScellActivate_REQ(p_CellId, p_ScellBitMap,false, p_TimingInfo)); //@sic R5s140295 R5s140693 sic@ + } + + /* + * @desc to Send and receive PDCP PDU in one cell + * @param p_TxCellId + * @param p_RxCellId + * @param p_SQN + * @status APPROVED (LTE_A) + */ + function fl_EUTRA_SendAndReceiveDL_PDCP_PDU_OneCell(EUTRA_CellId_Type p_TxCellId, + EUTRA_CellId_Type p_RxCellId, + integer p_SQN) runs on EUTRA_PTC + { //@sic R5s140498 sic@ + var MAC_SDU_Type v_EncodedRlcPdu1; + var octetstring v_EncodedPdcpPdu; + var integer v_Nack_Count := 0; + var SubFrameTiming_Type v_SubFrameInfo, v_SubFrameInfo2, v_SubFrameInfo3; + var Dl_Bandwidth_Type v_DL_Bandwidth := f_EUTRA_CellInfo_GetDL_ChBandwidth(p_TxCellId); + + timer t_Watchdog := 5.0; + // Configure for explicit grant in DL + f_EUTRA_SS_CommonCellConfig(p_TxCellId, cas_CcchDcchDtchDL_Config_REQ(p_TxCellId, + cs_TimingInfo_Now, + cs_DciDLInfo_Explicit(cs_DciDlInfoExplicit(6, + dci_1A, + ra_2_Localised, + 1, + 5)))); // p_FirstRbIndex =5 + + //@siclog "Step 1" siclog@ + // Send DL MAC PDU + // PDCP SDU =36B => PDCP PDU =38 Bytes => RLC AM PDU =40 Bytes => MAC PDU =1BH +40 B Payload=41B=328 + v_EncodedPdcpPdu:= f_PDCP_PDU_Encvalue(cs_PDCP_PDU_LongSN(cs_PDCP_DataPdu_LongSN(int2bit(p_SQN, 12), crs_PDCP_SDU_36B))); + v_EncodedRlcPdu1 := f_RLC_PDU_Encvalue(cs_RLC_AMD_1PDU(tsc_NoPoll, int2bit(p_SQN, 10), v_EncodedPdcpPdu)); + v_SubFrameInfo := f_EUTRA_GetNextSendOccasion(p_TxCellId); + v_SubFrameInfo2 := f_EUTRA_TimingInfoAdd(v_SubFrameInfo, 100) ; //100 ms in future to configure back the DL grant as normal + //@sic R5s140531 sic@ + v_SubFrameInfo3 := f_EUTRA_TimingInfoAdd(v_SubFrameInfo, 110) ; //110 ms in future for status PDU transmission + DRB.send(cas_DRB_COMMOM_REQ_MAC_PDU(p_TxCellId, + tsc_RbId_DRB1, + cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number), + cs_MAC_PDUList_1(cs_MAC_PDU_NoPadding_RLCPDU_LCID(tsc_LchId_DRB1, v_EncodedRlcPdu1)))); + f_EUTRA_SS_CommonCellConfig(p_TxCellId, + cas_CcchDcchDtchDL_Config_REQ(p_TxCellId, + cs_TimingInfo(v_SubFrameInfo2.SFN.Number, v_SubFrameInfo2.Subframe.Number), + cs_DciDLInfo_Auto(cs_DciInfo_CcchDcchDtchDL(v_DL_Bandwidth)))); + t_Watchdog.start; + //@siclog "Step 2" siclog@ + SYSIND.receive(car_UL_HARQ_IND(p_RxCellId, ?, nack)); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 2"); + + //@siclog "Step 3" siclog@ + // MAC PDU retransmision automatically performed by SS + //@siclog "Step 4" siclog@ + alt { + [] SYSIND.receive(car_UL_HARQ_IND(p_RxCellId, ?, ack)) + { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "HARQ ACK Received"); + } + [v_Nack_Count<3] SYSIND.receive(car_UL_HARQ_IND(p_RxCellId, ?, nack)) + { + v_Nack_Count := v_Nack_Count +1; + repeat; + } + [] t_Watchdog.timeout + { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 4: UE did not send HARQ ACK"); + } + } + + //@siclog "Step5" siclog@ + //Taken care by SS + + //@siclog "Step 6" siclog@ + // Send UL Grant automatically taken care of + //@siclog "Step 7" siclog@ + t_Watchdog.start; + DRB.receive(car_DRB_COMMON_IND_RLC_PDUList(p_RxCellId, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_RLC_AMD_1PDU(?, int2bit(p_SQN, 10), v_EncodedPdcpPdu)})); + + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Loop Back PDU"); + t_Watchdog.stop; + // Send RLC Status PDU + //@sic R5s140531 sic@ + f_RLC_Status_PDU_Tx(tsc_LchId_DRB1, p_SQN + 1, p_TxCellId, cs_TimingInfo(v_SubFrameInfo3.SFN.Number, v_SubFrameInfo3.Subframe.Number)); //Change 1 + + SYSIND.receive ( car_UL_HARQ_IND (p_RxCellId, ?, ack ));//Change 2 + + } + + /* + * @desc to Send and receive PDCP PDU in two cell + * @param p_PCellId + * @param p_SCellId + * @param p_SQNStart + * @param p_HARQProcess + * @param p_RLCsn + * @status APPROVED (LTE_A) + */ + function fl_EUTRA_SendAndReceiveDL_PDCP_PDU_TwoCell(EUTRA_CellId_Type p_PCellId, + EUTRA_CellId_Type p_SCellId, + integer p_SQNStart, + integer p_HARQProcess, + integer p_RLCsn) runs on EUTRA_PTC + {//@sic R5s140498 sic@ + var MAC_SDU_Type v_EncodedRlcPdu1; + var MAC_SDU_Type v_EncodedRlcPdu2; + var integer v_Nack_Count := 0; + var integer v_Ack_Count := 0; + var integer v_SQN := p_SQNStart; + var SubFrameTiming_Type v_SubFrameInfo, v_SubFrameInfo2, v_SubFrameInfo3; + var octetstring v_EncodedPdcpPdu1, v_EncodedPdcpPdu2; + var Dl_Bandwidth_Type v_DL_Bandwidth := f_EUTRA_CellInfo_GetDL_ChBandwidth(p_PCellId); + + timer t_Watchdog := 5.0; + //@siclog "Step 1" siclog@ + // Send DL MAC PDU + // PDCP SDU =36B => PDCP PDU =38 Bytes => RLC AM PDU =40 Bytes => MAC PDU =1BH +40 B Payload=41B=328 + v_EncodedPdcpPdu1 := f_PDCP_PDU_Encvalue(cs_PDCP_PDU_LongSN(cs_PDCP_DataPdu_LongSN(int2bit(v_SQN,12), crs_PDCP_SDU_36B))); + v_EncodedRlcPdu1 := f_RLC_PDU_Encvalue(cs_RLC_AMD_1PDU(tsc_NoPoll, + int2bit(v_SQN,10), + v_EncodedPdcpPdu1 )); + v_SQN := v_SQN + 1; + v_EncodedPdcpPdu2:=f_PDCP_PDU_Encvalue(cs_PDCP_PDU_LongSN(cs_PDCP_DataPdu_LongSN(int2bit(v_SQN,12), crs_PDCP_SDU_36B1))); + v_EncodedRlcPdu2 := f_RLC_PDU_Encvalue(cs_RLC_AMD_1PDU(tsc_NoPoll, + int2bit(v_SQN,10), + v_EncodedPdcpPdu2 )); + f_EUTRA_SS_CommonCellConfig(p_PCellId, cas_CcchDcchDtchDL_Config_REQ(p_PCellId, + cs_TimingInfo_Now, + cs_DciDLInfo_Explicit(cs_DciDlInfoExplicit(6, + dci_1A, + ra_2_Localised, + 1, + 5)))); // p_FirstRbIndex =5 + f_EUTRA_SS_CommonCellConfig(p_SCellId, cas_CcchDcchDtchDL_Config_REQ(p_SCellId, + cs_TimingInfo_Now, + cs_DciDLInfo_Explicit(cs_DciDlInfoExplicit(6, + dci_1A, + ra_2_Localised, + 1, + 5)))); // p_FirstRbIndex =5 + + // Scehdule one MAC PDU each on each Active Cell in same TTI + v_SubFrameInfo := f_EUTRA_GetNextSendOccasion(p_PCellId); // + v_SubFrameInfo2 := f_EUTRA_TimingInfoAdd(v_SubFrameInfo,100) ; //100 ms in future to configure back the DL grant as normal + //@sic R5s140531 sic@ + v_SubFrameInfo3 := f_EUTRA_TimingInfoAdd(v_SubFrameInfo,110) ; //110 ms in future for status PDU transmission + + DRB.send(cas_DRB_COMMOM_REQ_MAC_PDU(p_PCellId, + tsc_RbId_DRB1, + cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number), + cs_MAC_PDUList_1(cs_MAC_PDU_NoPadding_RLCPDU_LCID(tsc_LchId_DRB1, v_EncodedRlcPdu1)), + cs_HarqProcessAssignment_Specific(p_HARQProcess))); + DRB.send(cas_DRB_COMMOM_REQ_MAC_PDU(p_SCellId, + tsc_RbId_DRB1, + cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number), + cs_MAC_PDUList_1(cs_MAC_PDU_NoPadding_RLCPDU_LCID(tsc_LchId_DRB1, v_EncodedRlcPdu2)), + cs_HarqProcessAssignment_Specific(p_HARQProcess))); + f_EUTRA_SS_CommonCellConfig(p_PCellId, + cas_CcchDcchDtchDL_Config_REQ(p_PCellId, + cs_TimingInfo(v_SubFrameInfo2.SFN.Number, v_SubFrameInfo2.Subframe.Number), + cs_DciDLInfo_Auto(cs_DciInfo_CcchDcchDtchDL(v_DL_Bandwidth)))); + f_EUTRA_SS_CommonCellConfig(p_SCellId, + cas_CcchDcchDtchDL_Config_REQ(p_SCellId, + cs_TimingInfo(v_SubFrameInfo2.SFN.Number, v_SubFrameInfo2.Subframe.Number), + cs_DciDLInfo_Auto(cs_DciInfo_CcchDcchDtchDL(v_DL_Bandwidth)))); + + t_Watchdog.start; + //@siclog "Step 2" siclog@ + SYSIND.receive(car_UL_HARQ_IND(p_PCellId, ?, nack)); + SYSIND.receive(car_UL_HARQ_IND(p_PCellId, ?, nack)); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 2"); + + //@siclog "Step 3" siclog@ + // MAC PDU retransmision automatically performed by SS + //@siclog "Step 4" siclog@ + alt { + [] SYSIND.receive(car_UL_HARQ_IND(p_PCellId, ?, ack)) + { + v_Ack_Count := v_Ack_Count +1; + if ((v_Ack_Count) < 2) { + repeat; + } + else { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 21: UE sent HARQ ACK for DL data corresponding to DL CC1 and DL CC2"); + t_Watchdog.stop; + } + } + + [v_Nack_Count<6]SYSIND.receive(car_UL_HARQ_IND(p_PCellId, ?, nack)) + { + v_Nack_Count := v_Nack_Count +1; + repeat; + } + + [] t_Watchdog.timeout + { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 21: UE did not send HARQ ACK"); + } + } + + //@siclog "Step5" siclog@ + //Taken care by SS + + //@siclog "Step 6" siclog@ + // Send UL Grant automatically taken care of + //@siclog "Step 7" siclog@ + // Note due to insequence delivery in RLC and PDCP Scell PDCP PDU cannot come before Pcell PDU + // UL grant is allocated only in Pcell as SR is received only in Pcell + + DRB.receive (car_DRB_COMMON_IND_RLC_PDUList (p_PCellId, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_RLC_AMD_2PDU_713x(?, int2bit(p_RLCsn, 10), v_EncodedPdcpPdu1,v_EncodedPdcpPdu2)})); + + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Loop Back PDU"); + t_Watchdog.stop; + + // Send RLC Status PDU + f_RLC_Status_PDU_Tx(tsc_LchId_DRB1, p_RLCsn+1, p_PCellId, cs_TimingInfo(v_SubFrameInfo3.SFN.Number, v_SubFrameInfo3.Subframe.Number)); //@sic R5s140531 sic@ + + SYSIND.receive ( car_UL_HARQ_IND (p_PCellId, ?, ack ));//@sic R5s140531 sic@ + + } + + //========================================================== + // L2/MAC/7.1 + //========================================================== + /* + * @desc REFERENCE TS 36.523-1 clause 7.1.3.11 + * @param p_PCellId + * @param p_SCellId + * @param p_CA_Type + * @status APPROVED (LTE_A) + */ + function f_TC_7_1_3_11_Common(EUTRA_CellId_Type p_PCellId, + EUTRA_CellId_Type p_SCellId, + CA_Tested_Type p_CA_Type) runs on EUTRA_PTC + { /* 7.1.3.11 : CA / Correct HARQ process handling / DCCH and DTCH / Pcell and Scell */ + //@sic R5s140498 sic@ + var integer j := 0; + var integer k := 0; + var integer m := 0; + var EUTRA_FDD_TDD_Mode_Type v_EUTRA_FDD_TDD_Mode; + var Dl_Bandwidth_Type v_Dl_Bandwidth; + var PhysCellId v_PhysicalCellIdentity_Scell; + var Frequency_IE_Type v_Frequency_IE_PCell; + var Frequency_IE_Type v_Frequency_IE_Scell; + var ChannelBandwidthDependency_Type v_ChBandDependency_PCell; + var ChannelBandwidthDependency_Type v_ChBandDependency_Scell; + var boolean v_UL_CA := pc_UL_CA; + var integer v_SQN := 0; + var CarrierFreqEUTRA v_CarrierFreq_Scell; + + /////////////////////////////////////////////////////////////////////////////////// + // PREAMBLE + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_Init(c3); + f_EUTRA_CA_InitCells({p_PCellId, p_SCellId}, p_CA_Type, c3); + //Get cell dependant parameters + v_PhysicalCellIdentity_Scell := f_EUTRA_CellInfo_GetPhyCellId(p_SCellId); + v_Frequency_IE_Scell := f_EUTRA_CellInfo_GetFrequencyIEs(p_SCellId); + v_ChBandDependency_Scell := f_EUTRA_BandDependentParam(v_Frequency_IE_Scell.DL_ChBandwidth, + v_Frequency_IE_Scell.UL_ChBandwidth); + v_Frequency_IE_PCell := f_EUTRA_CellInfo_GetFrequencyIEs(p_PCellId); + v_ChBandDependency_PCell := f_EUTRA_BandDependentParam(v_Frequency_IE_PCell.DL_ChBandwidth, + v_Frequency_IE_PCell.UL_ChBandwidth); + v_CarrierFreq_Scell := f_EUTRA_CellInfo_GetEARFCN(p_SCellId); + + + //Set C-RNTI to be used in s-cell creation + f_EUTRA_CellInfo_SetC_RNTI(p_SCellId, tsc_C_RNTI_Def); + + //Create and configure all cells + f_EUTRA_CellConfig_Pcell_Def(p_PCellId); + f_EUTRA_CellConfig_Scell(p_SCellId, Scell_Active); //No DRB's created @sic R5-132022 sic@ + + // bring UE to initial state + f_EUTRA_Preamble(p_PCellId, STATE2A_TESTLOOP_ModeA); + // creates cell and performs registration + f_EUTRA_AS_CipheringAlgorithm_Set(eea0); // set null AS ciphering algorithm + f_EUTRA_LoopBackActivation_State4_TA_Infinity_LB_NoScaling_DSR(-, -, p_PCellId,n8); + //@sic R5-101183 sic@ + f_Delay(0.660); // 600 ms previous time alignment timer + // Go to state 4 + f_EUTRA_StartULGrantTransmissionOnSR_Reception_No_PUCCH_Sync(p_PCellId, cs_TimingInfo_Now, cs_DciInfo_CcchDcchDtchUL_Def); + + //f_EUTRA_SS_CommonL1MacIndCtrlConfig(eutra_Cell1, cas_HarqErrorIndication_REQ(eutra_Cell1,tsc_L1Mac_IndicationMode_Disable));//@sic R5s100520 sic@ + // to configure SS to report reception of SR + //@sic R5s100021 sic@ + //f_SS_ConfigSchedulingRequestIndMode(eutra_Cell1, tsc_L1Mac_IndicationMode_Enable); + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set(true, layer2); // @sic R5-101050 sic@ + f_EUTRA_SetCellPower(p_SCellId, tsc_ServingCellRS_EPRE); + v_Dl_Bandwidth := f_EUTRA_CellInfo_GetDL_ChBandwidth(p_PCellId); + v_EUTRA_FDD_TDD_Mode := f_EUTRA_CellInfo_GetFDD_TDD(p_PCellId); + if (v_EUTRA_FDD_TDD_Mode == FDD) { + k := 7; // HARQ process 0..7 + } + else if (v_EUTRA_FDD_TDD_Mode == TDD) { + k := 6; // HARQ process 0..6 + } + //@siclog "Step 1-2" siclog@ + //Transmit RRCConnectionReconfiguration + //Receive RRCConnectionReconfigurationComplete + f_EUTRA_508RRC_AddMod_1Scell(p_PCellId, + p_SCellId, + 1, //SCellIndex_r10 + p_CA_Type, // CA Type + v_UL_CA, // UL CA desired,, + -,// C_RNTI default := tsc_C_RNTI_Def, + omit, -, + -, + -, + -, + -, + -, + -, + -, + -, + -, + rf128); + //@siclog "Step 3" siclog@ + // Send Scell Activation Command + f_EUTRA_SS_CommonActivateScellConfig(p_PCellId, cas_ScellActivate_REQ(p_PCellId,tsc_Scell1_Activate,true));//@sic R5s140531 sic@ + + // Delay for completion of step activating Scell MCE transmission + f_Delay (0.5); //@sic R5s140624 sic@ + // to configure SS to report reception of HARQ ACK or NACK + f_SS_ConfigUL_HARQ_IndMode(p_PCellId, tsc_L1Mac_IndicationMode_Enable); + + f_SS_Config1TM_DRB_NoMACHeader(p_PCellId, tsc_RbId_DRB1, cs_MAC_TestMode_NoHeaderManipulationDLOnly); + // Configure SS for Explicit DL in grant in both S and P cell to use Nprb=1 and Itbs =6 and TBS=328, which cannot be decoded in first attempt. + // Note allocating single PRB is not possible in DCI format '1' for C-RTNI hence 1A needs to be used + + + //@siclog "Steps 4-10" siclog@ + fl_EUTRA_SendAndReceiveDL_PDCP_PDU_OneCell(p_PCellId, p_PCellId, v_SQN); + v_SQN := v_SQN + 1; + //@siclog "Steps 11-17" siclog@ + fl_EUTRA_SendAndReceiveDL_PDCP_PDU_OneCell(p_SCellId, p_PCellId, v_SQN); + v_SQN := v_SQN + 1; + m := v_SQN; + //@siclog "Steps 18-21" siclog@ + for (j := 0; j <= k; j := j+1) { + fl_EUTRA_SendAndReceiveDL_PDCP_PDU_TwoCell(p_PCellId, p_SCellId, v_SQN, j, m); + v_SQN := v_SQN + 2; + m := m + 1; + } + /////////////////////// + // Postamble + ///////// + f_EUTRA_TestBody_Set(false); + // to configure SS to stop report reception of HARQ ACK or NACK + f_SS_ConfigUL_HARQ_IndMode(p_PCellId, tsc_L1Mac_IndicationMode_Disable); + + f_SS_Config1TM_DRB_NoMACHeader(p_PCellId, tsc_RbId_DRB1, cs_MAC_TestMode_NormalMode); + + //Switch/power off UE + f_EUTRA_Postamble(p_PCellId, E2_CONNECTED); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 7.1.3.11.1 + * @status APPROVED (LTE_A) + */ + function f_TC_7_1_3_11_1_EUTRA() runs on EUTRA_PTC + { /* CA / Correct HARQ process handling / DCCH and DTCH / Pcell and Scell / Intra-band Contiguous CA */ + f_TC_7_1_3_11_Common(eutra_Cell1, eutra_Cell3, CA_IntraBand); /* @sic R5-141113 sic@ */ + } + + /* + * @desc REFERENCE TS 36.523-1 clause 7.1.3.11.2 + * @status APPROVED (LTE_A) + */ + function f_TC_7_1_3_11_2_EUTRA() runs on EUTRA_PTC + { /* CA / Correct HARQ process handling / DCCH and DTCH / Pcell and Scell/ Inter-Band CA */ + f_TC_7_1_3_11_Common(eutra_Cell1, eutra_Cell10, CA_InterBand); + } + + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 7.1.3.11.3 + * @status + */ + function f_TC_7_1_3_11_3_EUTRA() runs on EUTRA_PTC + { /* CA / Correct HARQ process handling / DCCH and DTCH / Pcell and Scell / Intra-band non-Contiguous CA */ + f_TC_7_1_3_11_Common(eutra_Cell6, eutra_Cell3,CA_IntraBand); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 7.1.4.18 + * @status APPROVED (LTE_A) + */ + function f_TC_7_1_4_18_EUTRA() runs on EUTRA_PTC + { /* Correct handling of MAC control information / Buffer Status / UL data arrive in the UE Tx buffer / Extended buffer size */ + var Dl_Bandwidth_Type v_Dl_Bandwidth; + var MAC_SDU_Type v_EncodedRlcPdu; + var octetstring v_EncodedPdcpPdu; + + /////////////////////////////////////////////////////////////////////////////////// + // PREAMBLE + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_Init(c1); + // creates cell and performs registration + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_Preamble(eutra_Cell1, STATE2A_TESTLOOP_ModeA); + f_EUTRA_AS_CipheringAlgorithm_Set(eea0); // set null AS ciphering algorithm + + f_EUTRA_LoopBackActivation_State4_ExtendedBSR_Def(eutra_Cell1); // bring UE to State 4 + f_SS_Config1TM_DRB_NoMACHeader(eutra_Cell1, tsc_RbId_DRB1, cs_MAC_TestMode_NoHeaderManipulationDLOnly); + + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set(true, layer2); // @sic R5-101050 sic@ + v_Dl_Bandwidth := f_EUTRA_CellInfo_GetDL_ChBandwidth(eutra_Cell1); + + //@siclog "Step 1-2" siclog@ + // merged with preamble. Needs prose update. + + // start report of BSR + f_SS_ConfigBufferStatusReportIndMode(eutra_Cell1, tsc_L1Mac_IndicationMode_Enable); + //@siclog "Step 5" siclog@ + // Preconfigure SS for UL Grant of 32 bits Nprb =1, Imcs=Itbs=2 + f_EUTRA_StartExplicitULGrantTransmissionOnSR_Reception(eutra_Cell1, cs_TimingInfo_Now, 2, 1); + //@siclog "Step 3" siclog@ + // Send DL MAC PDU containing RLC SDU=PDCP PDU of 60 Bytes => PDCP SDU =58 Bytes + // PDCP SDU =58B => PDCP PDU =60 Bytes => RLC AM PDU =60 Bytes => MAC PDU =1BH +60 B Payload=61B=488b + v_EncodedPdcpPdu:= f_PDCP_PDU_Encvalue(cs_PDCP_PDU_LongSN(cs_PDCP_DataPdu_LongSN(int2bit(0,12), crs_PDCP_SDU_L58))); + v_EncodedRlcPdu := f_RLC_PDU_Encvalue(cs_RLC_AMD_1PDU(tsc_NoPoll, + int2bit(0,10), + v_EncodedPdcpPdu)); + DRB.send(cas_DRB_COMMOM_REQ_MAC_PDU(eutra_Cell1, + tsc_RbId_DRB1, + cs_TimingInfo_Now, + cs_MAC_PDUList_1(cs_MAC_PDU_NoPadding_RLCPDU_LCID(tsc_LchId_DRB1, v_EncodedRlcPdu)))); + //Steps 4-5 automatically handled By SS + //@siclog "Step 6" siclog@ + // Receive extended BSR + SYSIND.receive(car_BSR_IND(eutra_Cell1, + cr_TimingInfo_Any, + cr_ShortBSR(2,10))); // received MAC PDU with zero MAC SDU + + //Disable BSR report config + f_SS_ConfigBufferStatusReportIndMode(eutra_Cell1, tsc_L1Mac_IndicationMode_Disable); + //@siclog "Step 7" siclog@ + // Preconfigure SS for UL Grant of 520 bits Nprb =12, Imcs=Itbs=2 + f_EUTRA_OneULGrantTransmission(eutra_Cell1, cs_TimingInfo_Now, 2, 12); + //@siclog "Step 8" siclog@ + // Receive Loop back PDU + DRB.receive (car_DRB_COMMON_IND_RLC_PDUList (eutra_Cell1, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_RLC_AMD_1PDU(?, int2bit(0, 10), v_EncodedPdcpPdu)})); + + /////////////////////// + // Postamble + /////////////////////// + f_EUTRA_TestBody_Set(false); + // Send RLC Status PDU + f_RLC_Status_PDU_Tx(tsc_LchId_DRB1,1); + + f_EUTRA_StartDefULGrantTransmission(eutra_Cell1); + //Switch/power off UE + f_EUTRA_Postamble(eutra_Cell1, E2_CONNECTED); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 7.1.4.21 + * @status APPROVED (LTE_A) + */ + function f_TC_7_1_4_21_EUTRA() runs on EUTRA_PTC + { /* 7.1.4.21 : UE power headroom reporting / Extended PHR */ + var SubFrameTiming_Type v_Timing1; + var SubFrameTiming_Type v_Timing2; + var EUTRA_FDD_TDD_Mode_Type v_EUTRA_FDD_TDD_Mode; + var SYSTEM_IND v_ReceivedSYSIND; + var integer v_GrantPeriod; + + timer t_Watchdog := 5.0; + + /////////////////////////////////////////////////////////////////////////////////// + // PREAMBLE + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_Init(c1); + v_EUTRA_FDD_TDD_Mode := f_EUTRA_CellInfo_GetFDD_TDD(eutra_Cell1);//@sic R5s110411 sic@ + // Config Cell 1 for 1 AM DRB + f_EUTRA_CellConfig_Def(eutra_Cell1); + // Bring UE to idle updated state + f_EUTRA_Preamble(eutra_Cell1, STATE2_IDLEUPDATE); + // Bring UE to state 3 + f_EUTRA_RbEst_Def(eutra_Cell1); + // to configure SS to start report reception of Extended Power head room report + f_SS_ConfigExtendedPowerHeadRoomIndMode(eutra_Cell1, tsc_L1Mac_IndicationMode_Enable); + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set(true); + + //@siclog "Step 1" siclog@ + //@sic R5s110411 sic@ + f_EUTRA_HarqErrorHandling_Set(raiseInconc); // Start 'Harq Errors not tolerant' + if (v_EUTRA_FDD_TDD_Mode == FDD) { v_GrantPeriod := 1; } + else { v_GrantPeriod := 5; } + //@sic R5s110558 sic@ + f_EUTRA_PeriodicULGrantTransmission(eutra_Cell1, + cs_TimingInfo_SubFrame(4),// immediate effect from sub frame 4 + 12, // Imcs => Mod =16QAM Arbitrarily selected forTBS =776 + 4, // Nprb + v_GrantPeriod); + //@siclog "Step 2" siclog@ + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_RRCConnectionReconfiguration_RadioResConfig(tsc_RRC_TI_Def, + cs_RadioResourceConfigDedicated_MacPhy(cs_MAC_MainConfig_Explicit(cs_MAC_MainConfiguration_EPHR_Enable))))); + //@siclog "Steps 3 - 4" siclog@ + t_Watchdog.start; + + interleave { + [] SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionReconfigurationComplete(tsc_RRC_TI_Def))) + { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 4"); + } + [] SYSIND.receive(car_EPHR_IND(eutra_Cell1, cr_TimingInfo_Any, ?)) -> value v_ReceivedSYSIND + { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 3"); + v_Timing1 := v_ReceivedSYSIND.Common.TimingInfo.SubFrame; + } + } + + //@siclog "Step 5" siclog@ + + SYSIND.receive(car_EPHR_IND(eutra_Cell1,cr_TimingInfo_Any, ?)) -> value v_ReceivedSYSIND; + //store the timing information check the EPHR before and now occur in 200 ms + tolerance. + v_Timing2 := v_ReceivedSYSIND.Common.TimingInfo.SubFrame; + t_Watchdog.stop; + if (f_EUTRA_SubFrameTimingCheckDuration(eutra_Cell1, l2Timer, f_EUTRA_SubFrameTimingDuration(v_Timing1, v_Timing2), 200)) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 5: received EPHR "); + } + else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 5: UE sent Extended Power head room report but wrong periodicPHR-Timer"); + } + //@siclog "Step 6" siclog@ + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_RRCConnectionReconfiguration_RadioResConfig(tsc_RRC_TI_Def, + cs_RadioResourceConfigDedicated_MacPhy(cs_MAC_MainConfig_Explicit(cs_MAC_MainConfiguration_PHR_Disable))))); + //@siclog "Step 7" siclog@ + t_Watchdog.start; + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionReconfigurationComplete(tsc_RRC_TI_Def))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 7"); + t_Watchdog.stop; + + //@siclog "Step 8" siclog@ + t_Watchdog.start(2.0); + alt { + [] SYSIND.receive(car_EPHR_IND(eutra_Cell1, cr_TimingInfo_Any, ?)) + { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 8: UE is continuing to send Extended Power head room report "); + t_Watchdog.stop; + } + [] t_Watchdog.timeout + { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 8"); + } + } + + //test body ends + f_EUTRA_TestBody_Set(false); + /////////////////////////////////////////////////////////////////////////////////// + // Postamble + ////////////////////////////////////////////////////////////////////////////////// + // to configure SS to stop report reception of Power head room report + f_SS_ConfigExtendedPowerHeadRoomIndMode(eutra_Cell1, tsc_L1Mac_IndicationMode_Disable); + //@sic R5s110411 sic@ + f_EUTRA_HarqErrorHandling_Set(ignore); // Stop 'Harq Errors not tolerant' + // configure SS for default grant allocation + f_EUTRA_StartDefULGrantTransmission(eutra_Cell1); //@sic R5s100456 sic@ + // Release RRC Connection and Switch off + f_EUTRA_Postamble(eutra_Cell1, E2_CONNECTED); //@sic R5-103875 sic@ + } + + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 7.1.4.19.1/2 + * @param p_PCellId + * @param p_SCellId + * @param p_CA_Type + * @status APPROVED (LTE_A) + */ + function f_TC_7_1_4_19_Common(EUTRA_CellId_Type p_PCellId, + EUTRA_CellId_Type p_SCellId, + CA_Tested_Type p_CA_Type) runs on EUTRA_PTC + { /* CA / UE power headroom reporting / SCell activation and DL pathloss change reporting / Extended PHR */ + var SubFrameTiming_Type v_Timing; + var SubFrameTiming_Type v_Timing1; + var SubFrameTiming_Type v_Timing2; + + var EUTRA_FDD_TDD_Mode_Type v_EUTRA_FDD_TDD_Mode ; + var SYSTEM_IND v_ReceivedSYSIND; + var integer v_GrantPeriod; + var PhysCellId v_PhysicalCellIdentity_Scell; + var Frequency_IE_Type v_Frequency_IE_PCell; + var Frequency_IE_Type v_Frequency_IE_Scell; + var ChannelBandwidthDependency_Type v_ChBandDependency_PCell; + var ChannelBandwidthDependency_Type v_ChBandDependency_Scell; + var boolean v_UL_CA := true; + // var ReferenceCellPower_Type v_PCellPower; + // var ReferenceCellPower_Type v_SCellPower; + var CarrierFreqEUTRA v_CarrierFreq_Scell; + var template (value) CellPowerList_Type v_CellPowerList_AtT0_2_4, v_CellPowerList_AtT1, v_CellPowerList_AtT3; + + timer t_Watchdog := 5.0; + v_CellPowerList_AtT0_2_4 := { + cs_CellPower (p_PCellId, -82), + cs_CellPower (p_SCellId, -82) + }; + v_CellPowerList_AtT1 := { + cs_CellPower (p_PCellId, -89), + cs_CellPower (p_SCellId, -82) + }; + v_CellPowerList_AtT3 := { + cs_CellPower (p_PCellId, -82), + cs_CellPower (p_SCellId, -89) + }; + /////////////////////////////////////////////////////////////////////////////////// + // PREAMBLE + ////////////////////////////////////////////////////////////////////////////////// + + f_EUTRA_Init(c3); + f_EUTRA_CA_InitCells({p_PCellId, p_SCellId}, p_CA_Type, c3); + //Get cell dependant parameters + v_PhysicalCellIdentity_Scell := f_EUTRA_CellInfo_GetPhyCellId(p_SCellId); + v_Frequency_IE_Scell := f_EUTRA_CellInfo_GetFrequencyIEs(p_SCellId); + v_ChBandDependency_Scell := f_EUTRA_BandDependentParam(v_Frequency_IE_Scell.DL_ChBandwidth, v_Frequency_IE_Scell.UL_ChBandwidth); + v_Frequency_IE_PCell := f_EUTRA_CellInfo_GetFrequencyIEs(p_PCellId); + v_ChBandDependency_PCell := f_EUTRA_BandDependentParam(v_Frequency_IE_PCell.DL_ChBandwidth, v_Frequency_IE_PCell.UL_ChBandwidth); + v_CarrierFreq_Scell := f_EUTRA_CellInfo_GetEARFCN(p_SCellId); + v_EUTRA_FDD_TDD_Mode := f_EUTRA_CellInfo_GetFDD_TDD (p_PCellId); + + //Set C-RNTI to be used in s-cell creation + f_EUTRA_CellInfo_SetC_RNTI(p_SCellId, tsc_C_RNTI_Def); + + //Create and configure all cells + f_EUTRA_CellConfig_Pcell_Def(p_PCellId); + f_EUTRA_CellConfig_Scell(p_SCellId, Scell_Active); //No DRB's created @sic R5-132022 sic@ + + // bring UE to initial state + f_EUTRA_Preamble(p_PCellId, STATE2A_TESTLOOP_ModeA); + // creates cell and performs registration + // Bring UE to state 3 + f_EUTRA_RbEst_Def(p_PCellId); + // to configure SS to start report reception of Extended Power head room report + //Set initial cell power level according to T0 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT0_2_4); + + + + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set(true, layer2); + //@siclog "Step 1-2" siclog@ + // Execute RRC connection Reconfiguration procedure for Scell Additiona + f_EUTRA_508RRC_AddMod_1Scell(p_PCellId, + p_SCellId, + 1, // SCellIndex_r10 + p_CA_Type, // CA Type + v_UL_CA, // UL CA desired, + -, // C_RNTI default := tsc_C_RNTI_Def, + omit// MeasGapConfig omit, no gap + ); + //@siclog "Step 3" siclog@ + f_EUTRA_HarqErrorHandling_Set(raiseInconc); // Start 'Harq Errors not tolerant' + if (v_EUTRA_FDD_TDD_Mode == FDD) { v_GrantPeriod := 1; } + else { v_GrantPeriod := 5; } + f_SS_ConfigExtendedPowerHeadRoomIndMode(p_PCellId,tsc_L1Mac_IndicationMode_Enable); + + f_EUTRA_PeriodicULGrantTransmission(p_PCellId, + cs_TimingInfo_SubFrame(4),// immediate effect from sub frame 4 + 12, // Imcs => Mod =16QAM Arbitrarily selected forTBS =776 + 4, // Nprb + v_GrantPeriod); + + //@siclog "Step 4" siclog@ + SRB.send(cas_SRB1_RrcPdu_REQ(p_PCellId, + cs_TimingInfo_Now, + cs_RRCConnectionReconfiguration_RadioResConfig(tsc_RRC_TI_Def, + cs_RadioResourceConfigDedicated_MacPhy(cs_MAC_MainConfig_Explicit(cs_MAC_MainConfiguration_EPHR_Enable))))); //@sic R5s140295 sic@ + //@siclog "Steps 5 " siclog@ + t_Watchdog.start; + + interleave { + [] SRB.receive(car_SRB1_RrcPdu_IND(p_PCellId, cr_508_RRCConnectionReconfigurationComplete(tsc_RRC_TI_Def))) + { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 5"); + + } + [] SYSIND.receive(car_EPHR_IND(p_PCellId,cr_TimingInfo_Any, ?)) + { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 1 parallel behaviour"); + } + } + + //@siclog "Step 6" siclog@ + // Send Scell Activation Command + f_EUTRA_SS_CommonActivateScellConfig(p_PCellId, cas_ScellActivate_REQ(p_PCellId,tsc_Scell1_Activate,true));//@sic R5s140295 sic@ + //@siclog "Step 7" siclog@ + SYSIND.receive(car_EPHR_IND(p_PCellId, cr_TimingInfo_Any, ?)) -> value v_ReceivedSYSIND; + //store the timing information check the EPHR before and now occur in 200 ms + tolerance. + v_Timing1 := v_ReceivedSYSIND.Common.TimingInfo.SubFrame; + t_Watchdog.stop; + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 7: received EPHR "); + + //@siclog "Step 8-9" siclog@ + // Calculate future timing info and set power level for Pcell + v_Timing := f_EUTRA_GetNextSendOccasion(p_PCellId); // 100 ms in future + //Set cell power level according to T1 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1, cs_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number)); + + //@siclog "Steps 10 - 11" siclog@ + t_Watchdog.start; + SYSIND.receive(car_EPHR_IND(p_PCellId, cr_TimingInfo_Any, ?)) -> value v_ReceivedSYSIND; + //store the timing information check the PHR before and now occur in 1000 ms +/- tolerance. + v_Timing2 := v_ReceivedSYSIND.Common.TimingInfo.SubFrame; + t_Watchdog.stop; + if (f_EUTRA_SubFrameTimingCheckDuration(p_PCellId, l2Timer, f_EUTRA_SubFrameTimingDuration(v_Timing1, v_Timing2), 1000)) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 11: received PHR "); + } + else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 10: UE sent Power head room report but wrong periodicPHR-Timer"); + } + + //@siclog "Step 12" siclog@ + // Calculate future timing info + v_Timing := f_EUTRA_GetNextSendOccasion(p_PCellId); // 100 ms in future + //Set cell power level according to T2 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT0_2_4, cs_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number)); + + + //@siclog "Steps 13 - 14" siclog@ + t_Watchdog.start; + SYSIND.receive(car_EPHR_IND(p_PCellId, cr_TimingInfo_Any, ?)) -> value v_ReceivedSYSIND; + //store the timing information check the PHR before and now occur in 1000 ms + tolerance. + v_Timing1 := v_ReceivedSYSIND.Common.TimingInfo.SubFrame; + t_Watchdog.stop; + if (f_EUTRA_SubFrameTimingCheckDuration(p_PCellId, l2Timer, f_EUTRA_SubFrameTimingDuration(v_Timing2, v_Timing1), 1000)) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 14: received PHR "); + } + else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 13: UE sent Power head room report but wrong periodicPHR-Timer"); + } + + //@siclog "Step 15" siclog@ + // Calculate future timing info and set power level for Pcell + v_Timing := f_EUTRA_GetNextSendOccasion(p_PCellId); // 100 ms in future + //Set cell power level according to T3 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT3, cs_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number)); + + + //@siclog "Steps 16 - 17" siclog@ + t_Watchdog.start; + SYSIND.receive(car_EPHR_IND(p_PCellId, cr_TimingInfo_Any, ?)) -> value v_ReceivedSYSIND; + //store the timing information check the PHR before and now occur in 1000 ms +/- tolerance. + v_Timing2 := v_ReceivedSYSIND.Common.TimingInfo.SubFrame; + t_Watchdog.stop; + if (f_EUTRA_SubFrameTimingCheckDuration(p_PCellId,l2Timer, f_EUTRA_SubFrameTimingDuration(v_Timing1, v_Timing2), 1000)) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 17: received PHR "); + } + else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 16: UE sent Power head room report but wrong periodicPHR-Timer"); + } + + //@siclog "Step 18" siclog@ + // Calculate future timing info + v_Timing := f_EUTRA_GetNextSendOccasion(p_PCellId); // 100 ms in future + //Set cell power level according to T4 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT0_2_4, cs_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number)); + + + //@siclog "Steps 19 - 20" siclog@ + t_Watchdog.start; + SYSIND.receive(car_EPHR_IND(p_PCellId, cr_TimingInfo_Any, ?)) -> value v_ReceivedSYSIND; + //store the timing information check the PHR before and now occur in 1000 ms + tolerance. + v_Timing1 := v_ReceivedSYSIND.Common.TimingInfo.SubFrame; + t_Watchdog.stop; + if (f_EUTRA_SubFrameTimingCheckDuration(p_PCellId, l2Timer, f_EUTRA_SubFrameTimingDuration(v_Timing2, v_Timing1), 1000)) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 20: received PHR "); + } + else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 19: UE sent Power head room report but wrong periodicPHR-Timer"); + } + + //test body ends + f_EUTRA_TestBody_Set(false); + + /////////////////////////////////////////////////////////////////////////////////// + // Postamble + ////////////////////////////////////////////////////////////////////////////////// + // to configure SS to stop report reception of Power head room report + f_SS_ConfigExtendedPowerHeadRoomIndMode(p_PCellId, tsc_L1Mac_IndicationMode_Disable); + //@sic R5s110411 sic@ + f_EUTRA_HarqErrorHandling_Set(ignore); // Stop 'Harq Errors not tolerant' + // configure SS for default grant allocation + f_EUTRA_StartDefULGrantTransmission(p_PCellId); + // Release RRC Connection and Switch off + f_EUTRA_Postamble(p_PCellId, E2_CONNECTED); + } + + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 7.1.4.19.1 + * @status + */ + function f_TC_7_1_4_19_1_EUTRA() runs on EUTRA_PTC + { /* CA / UE power headroom reporting / SCell activation and DL pathloss change reporting / Extended PHR / Intra-band Contiguous CA */ + f_TC_7_1_4_19_Common(eutra_Cell1, eutra_Cell3,CA_IntraBand);/* @sic R5-141113 sic@ */ + } + + /* + * @desc REFERENCE TS 36.523-1 clause 7.1.4.19.2 + * @status APPROVED (LTE_A) + */ + function f_TC_7_1_4_19_2_EUTRA() runs on EUTRA_PTC + { /* CA / UE power headroom reporting / SCell activation and DL pathloss change reporting / Extended PHR / Inter-Band CA */ + f_TC_7_1_4_19_Common(eutra_Cell1, eutra_Cell10, CA_InterBand); + } + + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 7.1.4.19.3 + * @status + */ + function f_TC_7_1_4_19_3_EUTRA() runs on EUTRA_PTC + { /* CA / UE power headroom reporting / SCell activation and DL pathloss change reporting / Extended PHR / Intra-band non-Contiguous CA */ + f_TC_7_1_4_19_Common(eutra_Cell6, eutra_Cell3,CA_IntraBand); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 7.1.9.1 + * @param p_PCellId + * @param p_SCellId + * @param p_CA_Type + * @status APPROVED (LTE_A) + */ + function f_TC_7_1_9_1_Common(EUTRA_CellId_Type p_PCellId, + EUTRA_CellId_Type p_SCellId, + CA_Tested_Type p_CA_Type) runs on EUTRA_PTC + { /* L2/MAC + * 7.1.9.1 : CA / Activation/Deactivation of SCells / Activation/Deactivation MAC control element reception / sCellDeactivationTimer + */ + var EUTRA_FDD_TDD_Mode_Type v_EUTRA_FDD_TDD_Mode; + var Dl_Bandwidth_Type v_Dl_Bandwidth; + var PhysCellId v_PhysicalCellIdentity_Scell; + var Frequency_IE_Type v_Frequency_IE_PCell; + var Frequency_IE_Type v_Frequency_IE_Scell; + var ChannelBandwidthDependency_Type v_ChBandDependency_PCell; + var ChannelBandwidthDependency_Type v_ChBandDependency_Scell; + var boolean v_UL_CA := pc_UL_CA; // TBD + var integer v_Arfcn_SCell; + var SCell_DL_Bandwidth_Type v_SCell_DL_Bandwidth; + var template (omit) DedicatedSCell_UL_Configuration_Type v_DedicatedSCell_UL_Configuration := omit; + var EUTRA_FDD_TDD_CellInfo_Type v_FDD_TDDInfo; + var template(omit) TDD_Config v_TDD_Config := omit; // omitted in FDD + var template (omit) CommonSCell_UL_Configuration_Type v_CommonSCell_UL_Configuration := omit; + var template (omit) DL_DCCH_Message v_RRCConnectionReconfiguration; + var ChannelBandwidthDependency_Type v_ChannelBandwidthDependency; + var EUTRA_CellSysInfo_Type v_EUTRA_CellSysInfo_Type; + var SubFrameTiming_Type v_SubFrameInfo; + var SubFrameTiming_Type v_SubFrameInfo2; + var MAC_SDU_Type v_EncodedRlcPdu1; + var MAC_SDU_Type v_EncodedRlcPdu2; + var MAC_SDU_Type v_EncodedRlcPdu3; + var octetstring v_EncodedPdcpPdu1,v_EncodedPdcpPdu2,v_EncodedPdcpPdu3; //@sic R5s140693 sic@ + + var template (value) PUCCH_ConfigDedicated_v1020 v_PUCCH_ConfigDedicated; + var template (omit) AdditionalSpectrumEmissionCA_r10_Type v_AdditionalSpectrumEmissionCA_r10 := omit; + + var CarrierFreqEUTRA v_CarrierFreq_Scell; + + timer t_Watchdog := 1.0; + + /////////////////////////////////////////////////////////////////////////////////// + // PREAMBLE + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_Init(c3); + f_EUTRA_CA_InitCells({p_PCellId, p_SCellId}, p_CA_Type, c3); + //Get cell dependant parameters + v_PhysicalCellIdentity_Scell := f_EUTRA_CellInfo_GetPhyCellId(p_SCellId); + v_Frequency_IE_Scell := f_EUTRA_CellInfo_GetFrequencyIEs(p_SCellId); + v_ChBandDependency_Scell := f_EUTRA_BandDependentParam(v_Frequency_IE_Scell.DL_ChBandwidth, + v_Frequency_IE_Scell.UL_ChBandwidth); + v_Frequency_IE_PCell := f_EUTRA_CellInfo_GetFrequencyIEs(p_PCellId); + v_ChBandDependency_PCell := f_EUTRA_BandDependentParam(v_Frequency_IE_PCell.DL_ChBandwidth, + v_Frequency_IE_PCell.UL_ChBandwidth); + v_CarrierFreq_Scell := f_EUTRA_CellInfo_GetEARFCN(p_SCellId); + v_ChannelBandwidthDependency := f_EUTRA_BandDependentParam(v_Frequency_IE_Scell.DL_ChBandwidth, + v_Frequency_IE_Scell.UL_ChBandwidth); + v_EUTRA_CellSysInfo_Type := f_EUTRA_CellInfo_GetSYSINFO(p_SCellId); + + //Set C-RNTI to be used in s-cell creation + f_EUTRA_CellInfo_SetC_RNTI(p_SCellId, tsc_C_RNTI_Def); + + //Create and configure all cells + f_EUTRA_CellConfig_Pcell_Def(p_PCellId); + f_EUTRA_CellConfig_Scell(p_SCellId, Scell_Active); //No DRB's created @sic R5-132022 sic@ + + // bring UE to initial state + f_EUTRA_Preamble(p_PCellId, STATE2A_TESTLOOP_ModeA); + // creates cell and performs registration + f_EUTRA_AS_CipheringAlgorithm_Set(eea0); // set null AS ciphering algorithm + f_EUTRA_LoopBackActivation_State4_TA_Infinity_LB_NoScaling_DSR(-, -, p_PCellId, n8); + //@sic R5-101183 sic@ + f_Delay(0.660); // 600 ms previous time alignment timer + // Go to state 4 + + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set(true, layer2); // @sic R5-101050 sic@ + f_EUTRA_SetCellPower(p_SCellId, tsc_ServingCellRS_EPRE); //@sic R5s140693 sic@ + v_Dl_Bandwidth := f_EUTRA_CellInfo_GetDL_ChBandwidth(p_PCellId); + v_EUTRA_FDD_TDD_Mode := f_EUTRA_CellInfo_GetFDD_TDD(p_PCellId); + v_FDD_TDDInfo := f_EUTRA_CellInfo_GetFDD_TDD_Info(p_SCellId); + v_PhysicalCellIdentity_Scell := f_EUTRA_CellInfo_GetPhyCellId(p_SCellId); + v_SCell_DL_Bandwidth := f_EUTRA_CellInfo_GetSCell_DL_ChBandwidth(p_SCellId); + v_Arfcn_SCell := f_EUTRA_CellInfo_GetEARFCN_DL(p_SCellId); + + if (v_FDD_TDDInfo.FDD_TDD == TDD) { // initialise tdd-Configuration to be used in + v_TDD_Config := cs_TDD_ConfigDef(v_FDD_TDDInfo.TDD_SubframeAssignment); // Value omitted in FDD + v_PUCCH_ConfigDedicated := cs_508_PUCCH_ConfigDedicated_v1020_2TX(cs_N1PUCCH_AN_CS_r10_FDD_1TX, cs_N1PUCCH_AN_CS_r10_FDD_2TX); + } else { //FDD + v_PUCCH_ConfigDedicated := cs_508_PUCCH_ConfigDedicated_v1020_1TX(cs_N1PUCCH_AN_CS_r10_FDD_1TX); + } + + if (v_UL_CA) { + if (p_CA_Type == CA_InterBand) { // 36.508 Table 4.8.2.1.6-1 + v_AdditionalSpectrumEmissionCA_r10 := cs_AdditionalSpectrumEmissionCA_r10_Def; + } + + v_CommonSCell_UL_Configuration := cs_RadioResourceConfigCommonSCell_UL_Configuration_DEFAULT(v_ChannelBandwidthDependency.Pusch_HoppingOffset, v_EUTRA_CellSysInfo_Type.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon.soundingRS_UL_ConfigCommon); + if (v_FDD_TDDInfo.FDD_TDD == TDD) { + v_DedicatedSCell_UL_Configuration := cs_RadioResourceConfigDedicatedSCell_UL_Configuration_DEFAULT(cs_CQI_ReportPeriodic_r10_DEFAULT_TDD); + } + else { + v_DedicatedSCell_UL_Configuration := cs_RadioResourceConfigDedicatedSCell_UL_Configuration_DEFAULT(cs_CQI_ReportPeriodic_r10_DEFAULT_FDD); + } + } + v_RRCConnectionReconfiguration := cs_508_RRCConnectionReconfiguration_SCell_AddModRelease(tsc_RRC_TI_Def, + cs_SCellToAddMod_r10(1, + v_PhysicalCellIdentity_Scell, + v_Arfcn_SCell, + cs_508_RadioResourceConfigCommonSCell_r10_DEFAULT(v_SCell_DL_Bandwidth, + tsc_P_b_1Tx, + v_CommonSCell_UL_Configuration, + v_TDD_Config), + cs_RadioResourceConfigDedicatedSCell_r10(cs_PhysicalConfigDedicatedSCell_r10_DEFAULT(v_DedicatedSCell_UL_Configuration))), + v_PUCCH_ConfigDedicated, + -, + infinity_, + v_AdditionalSpectrumEmissionCA_r10); + + //@siclog "Step 1-2" siclog@ + //Transmit RRCConnectionReconfiguration + //Receive RRCConnectionReconfigurationComplete + f_EUTRA_508RRC_AddMod_1Scell(p_PCellId, + p_SCellId, + 1, //SCellIndex_r10 + p_CA_Type, // CA Type + v_UL_CA, // UL CA desired, + -, // C_RNTI default := tsc_C_RNTI_Def, + omit, // MeasGapConfig omit, no gap, + v_RRCConnectionReconfiguration); // Reconfig message omit + f_SS_Config1TM_DRB_NoMACHeader(p_PCellId, tsc_RbId_DRB1, cs_MAC_TestMode_NoHeaderManipulationDLOnly); + + // to configure SS to report reception of SR + f_SS_ConfigSchedulingRequestIndMode(p_PCellId, tsc_L1Mac_IndicationMode_Enable); //@sic R5s140693 sic@ + // To stop UL Grant Transmision + f_EUTRA_StopULGrantTransmission_PUCCH_Sync(p_PCellId, cs_TimingInfo_Now); //@sic R5s140693 sic@ + v_EncodedPdcpPdu1 := f_PDCP_PDU_Encvalue(cs_PDCP_PDU_LongSN(cs_PDCP_DataPdu_LongSN(int2bit(0,12), crs_PDCP_SDU_36B))); + v_EncodedRlcPdu1 := f_RLC_PDU_Encvalue(cs_RLC_AMD_1PDU(tsc_NoPoll, + int2bit(0,10), + v_EncodedPdcpPdu1)); + v_EncodedPdcpPdu2 := f_PDCP_PDU_Encvalue(cs_PDCP_PDU_LongSN(cs_PDCP_DataPdu_LongSN(int2bit(1,12), crs_PDCP_SDU_36B1))); + v_EncodedRlcPdu2 := f_RLC_PDU_Encvalue(cs_RLC_AMD_1PDU(tsc_NoPoll, + int2bit(1,10), + v_EncodedPdcpPdu2)); + v_EncodedPdcpPdu3 := f_PDCP_PDU_Encvalue(cs_PDCP_PDU_LongSN(cs_PDCP_DataPdu_LongSN(int2bit(2,12), crs_PDCP_SDU_36B2))); + v_EncodedRlcPdu3 := f_RLC_PDU_Encvalue(cs_RLC_AMD_1PDU(tsc_NoPoll, + int2bit(2,10), + v_EncodedPdcpPdu3)); + + v_SubFrameInfo := f_EUTRA_GetNextSendOccasion(p_PCellId, 300); // 300 ms in future + + //@siclog "Step 3" siclog@ + // Send Scell Activation Command + f_EUTRA_ScellActivate_Deactivate(p_PCellId, tsc_Scell1_Activate, //@sic R5s140693 sic@ + cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number)); + + //@siclog "Step 4" siclog@ + v_SubFrameInfo := f_EUTRA_TimingInfoAdd(v_SubFrameInfo, 200); // 200 ms later + DRB.send(cas_DRB_COMMOM_REQ_MAC_PDU(p_SCellId, + tsc_RbId_DRB1, + cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number), + cs_MAC_PDUList_1(cs_MAC_PDU_NoPadding_RLCPDU_LCID(tsc_LchId_DRB1, v_EncodedRlcPdu1)))); + //@siclog "Step 6" siclog@ + v_SubFrameInfo := f_EUTRA_TimingInfoAdd(v_SubFrameInfo, 60); // 60 ms later + // Preconfigure SS for UL Grant of 520 bits Nprb =12, Imcs=Itbs=2 + f_EUTRA_OneULGrantTransmission(p_PCellId, cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number), 2, 12); + //@siclog "Step 7a" siclog@ + // Send RLC Status PDU + v_SubFrameInfo2 := f_EUTRA_TimingInfoAdd(v_SubFrameInfo, 60); // 60 ms later + f_RLC_Status_PDU_Tx(tsc_LchId_DRB1, 1, p_PCellId, cs_TimingInfo(v_SubFrameInfo2.SFN.Number, v_SubFrameInfo2.Subframe.Number)); + + //@siclog "Step 8" siclog@ + v_SubFrameInfo := f_EUTRA_TimingInfoAdd(v_SubFrameInfo, 200); // 200 ms later + DRB.send(cas_DRB_COMMOM_REQ_MAC_PDU(p_SCellId, + tsc_RbId_DRB1, + cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number), + cs_MAC_PDUList_1(cs_MAC_PDU_NoPadding_RLCPDU_LCID(tsc_LchId_DRB1, v_EncodedRlcPdu2)))); + //@siclog "Step 10" siclog@ + v_SubFrameInfo := f_EUTRA_TimingInfoAdd(v_SubFrameInfo, 60); // 60 ms later + // Preconfigure SS for UL Grant of 520 bits Nprb =12, Imcs=Itbs=2 + f_EUTRA_OneULGrantTransmission(p_PCellId, cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number), 2, 12); + + //@siclog "Step 12" siclog@ + v_SubFrameInfo2 := f_EUTRA_TimingInfoAdd(v_SubFrameInfo, 60); // 60 ms later + f_RLC_Status_PDU_Tx(tsc_LchId_DRB1, 2, p_PCellId, cs_TimingInfo(v_SubFrameInfo2.SFN.Number, v_SubFrameInfo2.Subframe.Number)); + + //@siclog "Step 13" siclog@ + v_SubFrameInfo := f_EUTRA_TimingInfoAdd(v_SubFrameInfo, 400); // 400 ms later + DRB.send(cas_DRB_COMMOM_REQ_MAC_PDU(p_SCellId, + tsc_RbId_DRB1, + cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number), + cs_MAC_PDUList_1(cs_MAC_PDU_NoPadding_RLCPDU_LCID(tsc_LchId_DRB1, v_EncodedRlcPdu3)))); + //@siclog "Step 5" siclog@ + // Receive Scheduling Request + SYSIND.receive(car_SchedulingReq_IND(p_PCellId, ?)); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 5"); + //@siclog "Step 7" siclog@ + // Receive Loopn Back PDU + alt { + [] SYSIND.receive(car_SchedulingReq_IND(p_PCellId, ?)) //ignore more SR's before loop back date + { + repeat; + } + [] DRB.receive (car_DRB_COMMON_IND_RLC_PDUList (p_PCellId, tsc_RbId_DRB1, ?, {cr_RLC_AMD_1PDU(?,int2bit (0,10),v_EncodedPdcpPdu1)})) + { + } + } + //@siclog "Step 9" siclog@ + // Receive Scheduling Request + SYSIND.receive(car_SchedulingReq_IND(p_PCellId, ?)); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 9"); + //@siclog "Step 11" siclog@ + // Receive Loopn Back PDU + alt { + [] SYSIND.receive(car_SchedulingReq_IND(p_PCellId, ?)) //ignore more SR's before loop back date + { + repeat; + } + [] DRB.receive (car_DRB_COMMON_IND_RLC_PDUList (p_PCellId, tsc_RbId_DRB1, ?, {cr_RLC_AMD_1PDU(?,int2bit (1,10),v_EncodedPdcpPdu2)})) + { + } + } + //@siclog "Step 14" siclog@ + // no more Receive Scheduling Request + t_Watchdog.start; + alt { + [] SYSIND.receive(car_SchedulingReq_IND(p_PCellId, ?)) + { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 14: UE is sending SR "); + t_Watchdog.stop; + } + [] t_Watchdog.timeout + { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 14"); + } + } + + v_EncodedPdcpPdu1 := f_PDCP_PDU_Encvalue(cs_PDCP_PDU_LongSN(cs_PDCP_DataPdu_LongSN(int2bit(2,12), crs_PDCP_SDU_36B))); + v_EncodedRlcPdu1 := f_RLC_PDU_Encvalue(cs_RLC_AMD_1PDU(tsc_NoPoll, + int2bit(2,10), + v_EncodedPdcpPdu1)); + v_EncodedPdcpPdu2 := f_PDCP_PDU_Encvalue(cs_PDCP_PDU_LongSN(cs_PDCP_DataPdu_LongSN(int2bit(3,12), crs_PDCP_SDU_36B1))); + v_EncodedRlcPdu2 := f_RLC_PDU_Encvalue(cs_RLC_AMD_1PDU(tsc_NoPoll, + int2bit(3,10), + v_EncodedPdcpPdu1 )); + + v_SubFrameInfo := f_EUTRA_GetNextSendOccasion(p_PCellId, 300); // 300 ms in future + + //@siclog "Step 15" siclog@ + // Send Scell Activation Command + f_EUTRA_ScellActivate_Deactivate(p_PCellId, tsc_Scell1_Activate, //@sic R5s140693 sic@ + cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number)); + + //@siclog "Step 16" siclog@ + v_SubFrameInfo := f_EUTRA_TimingInfoAdd(v_SubFrameInfo, 200); // 200 ms later + DRB.send(cas_DRB_COMMOM_REQ_MAC_PDU(p_SCellId, + tsc_RbId_DRB1, + cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number), + cs_MAC_PDUList_1(cs_MAC_PDU_Padding(crs_Padding_3Bytes)))); // results in 4 Byte MAC PDU + //@siclog "Step 17" siclog@ + v_SubFrameInfo := f_EUTRA_TimingInfoAdd(v_SubFrameInfo, 200); // 200 ms later + DRB.send(cas_DRB_COMMOM_REQ_MAC_PDU(p_SCellId, + tsc_RbId_DRB1, + cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number), + cs_MAC_PDUList_1(cs_MAC_PDU_NoPadding_RLCPDU_LCID(tsc_LchId_DRB1, v_EncodedRlcPdu1)))); + //@siclog "Step 18a" siclog@ + v_SubFrameInfo := f_EUTRA_TimingInfoAdd(v_SubFrameInfo, 60); // 60 ms later + // Preconfigure SS for UL Grant of 520 bits Nprb =12, Imcs=Itbs=2 + f_EUTRA_OneULGrantTransmission(p_PCellId, cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number), 2, 12); + + //@siclog "Step 20" siclog@ + // RLC Status PDU + v_SubFrameInfo2 := f_EUTRA_TimingInfoAdd(v_SubFrameInfo, 60); // 60 ms later + f_RLC_Status_PDU_Tx(tsc_LchId_DRB1, 3, p_PCellId, cs_TimingInfo(v_SubFrameInfo2.SFN.Number, v_SubFrameInfo2.Subframe.Number)); + + //@siclog "Step 21" siclog@ + // Deactivate Scells + v_SubFrameInfo := f_EUTRA_TimingInfoAdd(v_SubFrameInfo, 100); // 100 ms later + f_EUTRA_ScellActivate_Deactivate(p_PCellId, tsc_DeactivateAll); + + //@siclog "Step 22" siclog@ + v_SubFrameInfo := f_EUTRA_TimingInfoAdd(v_SubFrameInfo, 100); // 100 ms later + DRB.send(cas_DRB_COMMOM_REQ_MAC_PDU(p_SCellId, + tsc_RbId_DRB1, + cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number), + cs_MAC_PDUList_1(cs_MAC_PDU_NoPadding_RLCPDU_LCID(tsc_LchId_DRB1, v_EncodedRlcPdu2)))); + //@siclog "Step 18" siclog@ + // Receive Scheduling Request + SYSIND.receive(car_SchedulingReq_IND(p_PCellId, ?)); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 18"); + //@siclog "Step 19" siclog@ + // Receive Loopn Back PDU + alt { + [] SYSIND.receive(car_SchedulingReq_IND(p_PCellId, ?)) //ignore more SR's before loop back date + { + repeat; + } + [] DRB.receive (car_DRB_COMMON_IND_RLC_PDUList (p_PCellId, tsc_RbId_DRB1, ?, {cr_RLC_AMD_1PDU(?,int2bit (2,10),v_EncodedPdcpPdu1)})) + { + } + } + //@siclog "Step 23" siclog@ + // no more Receive Scheduling Request + t_Watchdog.start; + alt { + [] SYSIND.receive(car_SchedulingReq_IND(p_PCellId, ?)) + { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 23: UE is sending SR "); + t_Watchdog.stop; + } + [] t_Watchdog.timeout + { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 23"); + } + } + + //test body ends + f_EUTRA_TestBody_Set(false); + /////////////////////////////////////////////////////////////////////////////////// + // Postamble + ////////////////////////////////////////////////////////////////////////////////// + // to configure SS to report reception of SR + f_SS_ConfigSchedulingRequestIndMode(p_PCellId, tsc_L1Mac_IndicationMode_Disable); + // configure SS for default grant allocation + f_EUTRA_StartDefULGrantTransmission(p_PCellId); + // Release RRC Connection and Switch off + f_EUTRA_Postamble(p_PCellId, E2_CONNECTED); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 7.1.9.1.1 + * @status APPROVED (LTE_A) + */ + function f_TC_7_1_9_1_1_EUTRA() runs on EUTRA_PTC + { /* CA / Activation/Deactivation of SCells / Activation/Deactivation MAC control element reception / sCellDeactivationTimer/ Intra-band Contiguous CA */ + f_TC_7_1_9_1_Common(eutra_Cell1, eutra_Cell3, CA_IntraBand); /* @sic R5-141113 sic@ */ + } + + /* + * @desc REFERENCE TS 36.523-1 clause 7.1.9.1.2 + * @status APPROVED (LTE_A) + */ + function f_TC_7_1_9_1_2_EUTRA() runs on EUTRA_PTC + { /* CA / Activation/Deactivation of SCells / Activation/Deactivation MAC control element reception / sCellDeactivationTimer/ Inter-Band CA */ + f_TC_7_1_9_1_Common(eutra_Cell1, eutra_Cell10, CA_InterBand); + } + + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 7.1.9.1.3 + * @status + */ + function f_TC_7_1_9_1_3_EUTRA() runs on EUTRA_PTC + { /* CA / Activation/Deactivation of SCells / Activation/Deactivation MAC control element reception / sCellDeactivationTimer/ Intra-band non-Contiguous CA */ + f_TC_7_1_9_1_Common(eutra_Cell6, eutra_Cell3, CA_IntraBand); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 7.1.4.20 + */ + function f_TC_7_1_4_20_Common(EUTRA_CellId_Type p_PCellId, + EUTRA_CellId_Type p_SCellId, + CA_Tested_Type p_CA_Type) runs on EUTRA_PTC + { /* L2/MAC + * 7.1.4.20 : CA / Correct handling of MAC control information / Buffer status + */ + var PhysCellId v_PhysicalCellIdentity_Scell; + var Frequency_IE_Type v_Frequency_IE_PCell; + var Frequency_IE_Type v_Frequency_IE_Scell; + var ChannelBandwidthDependency_Type v_ChBandDependency_PCell; + var ChannelBandwidthDependency_Type v_ChBandDependency_Scell; + var boolean v_UL_CA := true; + var CarrierFreqEUTRA v_CarrierFreq_Scell; + var MAC_SDU_Type v_EncodedRlcPdu1; + var MAC_SDU_Type v_EncodedRlcPdu2; + var MAC_SDU_Type v_EncodedRlcPdu3; + var MAC_SDU_Type v_EncodedRlcPdu4; + var SubFrameTiming_Type v_SubFrameInfo; + var DRB_COMMON_IND v_DRB_COMMON_IND; + + /////////////////////////////////////////////////////////////////////////////////// + // PREAMBLE + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_Init(c3); + f_EUTRA_CA_InitCells({p_PCellId, p_SCellId}, p_CA_Type, c3); + //Get cell dependant parameters + v_PhysicalCellIdentity_Scell := f_EUTRA_CellInfo_GetPhyCellId(p_SCellId); + v_Frequency_IE_Scell := f_EUTRA_CellInfo_GetFrequencyIEs(p_SCellId); + v_ChBandDependency_Scell := f_EUTRA_BandDependentParam(v_Frequency_IE_Scell.DL_ChBandwidth, + v_Frequency_IE_Scell.UL_ChBandwidth); + v_Frequency_IE_PCell := f_EUTRA_CellInfo_GetFrequencyIEs(p_PCellId); + v_ChBandDependency_PCell := f_EUTRA_BandDependentParam(v_Frequency_IE_PCell.DL_ChBandwidth, + v_Frequency_IE_PCell.UL_ChBandwidth); + v_CarrierFreq_Scell := f_EUTRA_CellInfo_GetEARFCN(p_SCellId); + + //Set C-RNTI to be used in s-cell creation + f_EUTRA_CellInfo_SetC_RNTI(p_SCellId, tsc_C_RNTI_Def); + + //Create and configure all cells + f_EUTRA_CellConfig_Pcell_Def(p_PCellId); + f_EUTRA_CellConfig_Scell(p_SCellId, Scell_Active); //No DRB's created @sic R5-132022 sic@ + + // bring UE to initial state + f_EUTRA_Preamble(p_PCellId, STATE2A_TESTLOOP_ModeA); + // creates cell and performs registration + f_EUTRA_AS_CipheringAlgorithm_Set(eea0); // set null AS ciphering algorithm + + f_EUTRA_LoopBackActivation_State4_7148(p_PCellId); + //@sic R5-101183 sic@ + f_Delay(0.660); // 600 ms previous time alignment timer + // Go to state 4 + + //f_EUTRA_SS_CommonL1MacIndCtrlConfig(eutra_Cell1, cas_HarqErrorIndication_REQ(eutra_Cell1,tsc_L1Mac_IndicationMode_Disable));//@sic R5s100520 sic@ + // to configure SS to report reception of SR + //@sic R5s100021 sic@ + //f_SS_ConfigSchedulingRequestIndMode(eutra_Cell1, tsc_L1Mac_IndicationMode_Enable); + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set(true, layer2); + //@siclog "Step 1-2" siclog@ + // Execute RRC connection Reconfiguration procedure for Scell Additiona + f_EUTRA_508RRC_AddMod_1Scell(p_PCellId, + p_SCellId, + 1, //SCellIndex_r10 + p_CA_Type, // CA Type + v_UL_CA, // UL CA desired, + -, // C_RNTI default := tsc_C_RNTI_Def, + omit); // MeasGapConfig omit, no gap, + f_SS_Config1TM_DRB_NoMACHeader(p_PCellId, tsc_RbId_DRB1, cs_MAC_TestMode_NoHeaderManipulationDL_UL); + // 10B PDCP SDU + 2B PDCP Head + 2B RLC Header = 14 B + + v_EncodedRlcPdu1 := f_RLC_PDU_Encvalue(cs_RLC_AMD_1PDU(tsc_NoPoll, + int2bit(0,10), + f_PDCP_PDU_Encvalue(cs_PDCP_PDU_LongSN(cs_PDCP_DataPdu_LongSN(int2bit(0,12), crs_PDCP_SDU_10B))))); + v_EncodedRlcPdu2 := f_RLC_PDU_Encvalue(cs_RLC_AMD_1PDU(tsc_NoPoll, + int2bit(1,10), + f_PDCP_PDU_Encvalue(cs_PDCP_PDU_LongSN(cs_PDCP_DataPdu_LongSN(int2bit(1,12), crs_PDCP_SDU_10B1))))); + v_EncodedRlcPdu3 := f_RLC_PDU_Encvalue(cs_RLC_AMD_1PDU(tsc_NoPoll, + int2bit(0,10), + f_PDCP_PDU_Encvalue(cs_PDCP_PDU_LongSN(cs_PDCP_DataPdu_LongSN(int2bit(0,12), crs_PDCP_SDU_10B2))))); + v_EncodedRlcPdu4 := f_RLC_PDU_Encvalue(cs_RLC_AMD_1PDU(tsc_NoPoll, + int2bit(1,10), + f_PDCP_PDU_Encvalue(cs_PDCP_PDU_LongSN(cs_PDCP_DataPdu_LongSN(int2bit(1,12), crs_PDCP_SDU_10B3))))); + // To stop UL Grant Transmision + f_EUTRA_StopULGrantTransmission_PUCCH_Sync(eutra_Cell1, cs_TimingInfo_Now); + + //@siclog "Step 3" siclog@ + // Send Scell Activation Command + v_SubFrameInfo := f_EUTRA_GetNextSendOccasion(p_PCellId, 400); // 400 ms in future + f_EUTRA_ScellActivate_Deactivate(p_PCellId, tsc_Scell1_Activate); + + //@siclog "Step 4-5" siclog@ + // Header 2+2+2+2+1 = 9B + // Payload =4 *14 = 56B + // MAC PDU = 56 +9 =65B= 520b + v_SubFrameInfo := f_EUTRA_TimingInfoAdd(v_SubFrameInfo, 100); // 100 ms later + + DRB.send(cas_DRB_COMMOM_REQ_MAC_PDU(p_SCellId, + tsc_RbId_DRB1, + cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number), + cs_MAC_PDUList_1(cs_MAC_PDU_4RLCPDU_1Padding(tsc_LchId_DRB1, tsc_LchId_DRB1, tsc_LchId_DRB2, tsc_LchId_DRB2, + v_EncodedRlcPdu1, v_EncodedRlcPdu2, v_EncodedRlcPdu3, v_EncodedRlcPdu4)))); + //@siclog "Step 7" siclog@ + // Preconfigure SS for UL Grant of 136 bits Nprb =1, Imcs =10 => Itbs=9, TB size =136 + v_SubFrameInfo := f_EUTRA_TimingInfoAdd(v_SubFrameInfo, 60); // 20 ms later + + f_EUTRA_OneULGrantTransmission(p_PCellId, cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number), 10, 1); + f_EUTRA_OneULGrantTransmission(p_SCellId, cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number), 10, 1); + + //@siclog "Step 8a" siclog@ + // Transmit Status PDU acknowledging reception of 2 PDU's on higher priority DRB2 + v_SubFrameInfo := f_EUTRA_TimingInfoAdd(v_SubFrameInfo, 40); // 40 ms later + f_RLC_Status_PDU_Tx(tsc_LchId_DRB2, 2, p_PCellId, cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number)); + + //@siclog "Step 9" siclog@ + // Preconfigure SS for UL Grant of 152 bits Nprb =6, Imcs =0 => Itbs=0, TB size =152 + v_SubFrameInfo := f_EUTRA_TimingInfoAdd(v_SubFrameInfo, 20); // 20 ms later + + f_EUTRA_OneULGrantTransmission(p_PCellId, cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number), 0, 6); + f_EUTRA_OneULGrantTransmission(p_SCellId, cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number), 0, 6); + + //@siclog "Step 10a" siclog@ + // Transmit Status PDU acknowledging reception of 2 PDU's on lower priority DRB1 + v_SubFrameInfo := f_EUTRA_TimingInfoAdd(v_SubFrameInfo, 40); // 40 ms later + f_RLC_Status_PDU_Tx(tsc_LchId_DRB1, 2, p_PCellId, cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number)); + // 10B PDCP SDU + 2B PDCP Head + 2B RLC Header = 14 B + + v_EncodedRlcPdu1 := f_RLC_PDU_Encvalue(cs_RLC_AMD_1PDU(tsc_NoPoll, + int2bit(2,10), + f_PDCP_PDU_Encvalue(cs_PDCP_PDU_LongSN(cs_PDCP_DataPdu_LongSN(int2bit(2,12), crs_PDCP_SDU_10B))))); + v_EncodedRlcPdu2 := f_RLC_PDU_Encvalue(cs_RLC_AMD_1PDU(tsc_NoPoll, + int2bit(3,10), + f_PDCP_PDU_Encvalue(cs_PDCP_PDU_LongSN(cs_PDCP_DataPdu_LongSN(int2bit(3,12), crs_PDCP_SDU_10B1))))); + v_EncodedRlcPdu3 := f_RLC_PDU_Encvalue(cs_RLC_AMD_1PDU(tsc_NoPoll, + int2bit(2,10), + f_PDCP_PDU_Encvalue(cs_PDCP_PDU_LongSN(cs_PDCP_DataPdu_LongSN(int2bit(2,12), crs_PDCP_SDU_10B2))))); + v_EncodedRlcPdu4 := f_RLC_PDU_Encvalue(cs_RLC_AMD_1PDU(tsc_NoPoll, + int2bit(3,10), + f_PDCP_PDU_Encvalue(cs_PDCP_PDU_LongSN(cs_PDCP_DataPdu_LongSN(int2bit(3,12), crs_PDCP_SDU_10B3))))); + + + v_SubFrameInfo := f_EUTRA_TimingInfoAdd(v_SubFrameInfo, 200); // 200 ms later + //@siclog "Step 11-12" siclog@ + DRB.send(cas_DRB_COMMOM_REQ_MAC_PDU(p_SCellId, + tsc_RbId_DRB1, + cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number), + cs_MAC_PDUList_1(cs_MAC_PDU_4RLCPDU_1Padding(tsc_LchId_DRB1, tsc_LchId_DRB1, tsc_LchId_DRB2, tsc_LchId_DRB2, + v_EncodedRlcPdu1, v_EncodedRlcPdu2, v_EncodedRlcPdu3, v_EncodedRlcPdu4)))); + v_SubFrameInfo := f_EUTRA_TimingInfoAdd(v_SubFrameInfo, 60); // 60 ms later + /* Nprb = 2, Itbs = 0 Table 7.1.7.2.1-1 of 36.213 Imcs = 0 -> Itbs = 0 */ + //@siclog "Step 14" siclog@ + f_EUTRA_OneULGrantTransmission(p_PCellId, cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number), 0, 2); //@siclog "Step 7" siclog@ + // Preconfigure SS for UL Grant of 136 bits Nprb =1, Imcs =10 => Itbs=9, TB size =136 + //@siclog "Step 16" siclog@ + // Wait for periodic BSR timer expiry + v_SubFrameInfo := f_EUTRA_TimingInfoAdd(v_SubFrameInfo, 20); // 60 ms later + //@siclog "Step 17" siclog@ + f_EUTRA_OneULGrantTransmission(p_PCellId, cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number), 10, 1); + f_EUTRA_OneULGrantTransmission(p_SCellId, cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number), 10, 1); + + //@siclog "Step 18a" siclog@ + // Transmit Status PDU acknowledging reception of 2 PDU's on higher priority DRB2 + v_SubFrameInfo := f_EUTRA_TimingInfoAdd(v_SubFrameInfo, 40); // 40 ms later + f_RLC_Status_PDU_Tx(tsc_LchId_DRB2,4,p_PCellId, cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number)); + //@siclog "Step 19" siclog@ + // Preconfigure SS for UL Grant of 152 bits Nprb =6, Imcs =0 => Itbs=0, TB size =152 + v_SubFrameInfo := f_EUTRA_TimingInfoAdd(v_SubFrameInfo, 60); // 60 ms later + + f_EUTRA_OneULGrantTransmission(p_PCellId, cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number), 0, 6); + f_EUTRA_OneULGrantTransmission(p_SCellId, cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number), 0, 6); + + //@siclog "Step 21" siclog@ + // Transmit Status PDU acknowledging reception of 2 PDU's on Lower priority DRB1 + v_SubFrameInfo := f_EUTRA_TimingInfoAdd(v_SubFrameInfo, 40); // 40 ms later + f_RLC_Status_PDU_Tx(tsc_LchId_DRB1, 4, p_PCellId, cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number)); + + //@siclog "Step 6" siclog@ + // SR Received by SS + + //@siclog "Step 8" siclog@ + // 2B BSR + 1 B H + 14 B RLC PDU = 17 B =136 Bits + interleave { + [] DRB.receive(car_DRB_COMMON_IND_MAC(p_PCellId, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_MAC_PDU_1Subheader_ShortBSR_RLCPDU(tsc_LchId_DRB2,'10'B, ?, ?)})) + // Data sent on higher priority[ priorityvalue less] DRB + // The LCG in BSR to be the LCG of other DRB i.e. DRB 1 + {} + [] DRB.receive(car_DRB_COMMON_IND_MAC(p_SCellId, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_MAC_PDU_1Subheader_ShortBSR_RLCPDU(tsc_LchId_DRB2,'10'B, ?, ?)})) + {} + } + + //@siclog "Step 10" siclog@ + // Long BSR in both PDU's 4B BSR + 1 B H + 14 B RLC PDU = 19 B =152 Bits + /* Long BSR only in second PDU + 1st PDU : 1B MH + 18 B RLC PDU [2B H+ 12 B SDU + 2 B H + 2 B RLC SDU Seg] + 2nd PDU [Padding at start] : 2 B P H + 4 B BSR + 1 B H + 12 B RLC PDU [2 B H +10 B RLC SDU Seg] + 2nd PDU [Padding at end] : 4 B BSR + 2B H + 1 P H + 12 B RLC PDU [2 B H +10 B RLC SDU Seg] + */ + //@sic R5-144653 sic@ + alt { + [] DRB.receive(car_DRB_COMMON_IND_MAC(p_PCellId, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_MAC_PDU_LongBSR_RLCPDU(tsc_LchId_DRB1,?,?, ?, ?,?)})) + { + DRB.receive(car_DRB_COMMON_IND_MAC(p_SCellId, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_MAC_PDU_LongBSR_RLCPDU(tsc_LchId_DRB1,?,?, ?, ?,?)})) + } + [] DRB.receive(car_DRB_COMMON_IND_MAC(p_SCellId, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_MAC_PDU_LongBSR_RLCPDU(tsc_LchId_DRB1,?,?, ?, ?,?)})) + { + DRB.receive(car_DRB_COMMON_IND_MAC(p_PCellId, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_MAC_PDU_LongBSR_RLCPDU(tsc_LchId_DRB1,?,?, ?, ?,?)})) + } + [] DRB.receive(car_DRB_COMMON_IND_MAC(p_PCellId, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_MAC_PDU_NoPadding_RLCPDU_LCID(tsc_LchId_DRB1,?)})) + { + alt { + [] DRB.receive(car_DRB_COMMON_IND_MAC(p_SCellId, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_MAC_PDU_2Padding_LongBSR_RLCPDU(tsc_LchId_DRB1,?,?, ?, ?,?)})) + {} + []DRB.receive(car_DRB_COMMON_IND_MAC(p_SCellId, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_MAC_PDU_LongBSR_RLCPDU_Padding(tsc_LchId_DRB1,?,?, ?, ?,?, int2bit(10,7),omit)})) + {} + } + } + [] DRB.receive(car_DRB_COMMON_IND_MAC(p_SCellId, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_MAC_PDU_NoPadding_RLCPDU_LCID(tsc_LchId_DRB1,?)})) + { + alt { + [] DRB.receive(car_DRB_COMMON_IND_MAC(p_PCellId, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_MAC_PDU_2Padding_LongBSR_RLCPDU(tsc_LchId_DRB1,?,?, ?, ?,?)})) + {} + []DRB.receive(car_DRB_COMMON_IND_MAC(p_PCellId, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_MAC_PDU_LongBSR_RLCPDU_Padding(tsc_LchId_DRB1,?,?, ?, ?,?, int2bit(10,7),omit)})) + {} + } + } + } + + + + //@siclog "Step 13" siclog@ + // SR Received by SS + + //@siclog "Step 15" siclog@ + DRB.receive(car_DRB_COMMON_IND_MAC(eutra_Cell1, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_MAC_PDU_LongBSR(?, '000011'B, '000011'B, ?)})) -> value v_DRB_COMMON_IND; + if ((v_DRB_COMMON_IND.U_Plane.SubframeData.PduSduList.MacPdu[0].CtrlElementList.LongBSR.Value_LCG2 != '000000'B) and + (v_DRB_COMMON_IND.U_Plane.SubframeData.PduSduList.MacPdu[0].CtrlElementList.LongBSR.Value_LCG3 != '000000'B)) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 15"); + } + else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 15"); + } + + //@siclog "Step 18" siclog@ + // 2B BSR + 1 B H + 14 B RLC PDU = 17 B =136 Bits + interleave { + [] DRB.receive(car_DRB_COMMON_IND_MAC(p_PCellId, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_MAC_PDU_1Subheader_ShortBSR_RLCPDU(tsc_LchId_DRB2, '10'B, ?, ?)})) + // Data sent on higher priority[ priority value less] DRB i.e. DRB2 + // The LCG in BSR to be the LCG of other DRB i.e. DRB 1 + {} + [] DRB.receive(car_DRB_COMMON_IND_MAC(p_SCellId, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_MAC_PDU_1Subheader_ShortBSR_RLCPDU(tsc_LchId_DRB2, '10'B, ?, ?)})) + {} + } + + //@siclog "Step 20" siclog@ + // Long BSR in both PDU's 4B BSR + 1 B H + 14 B RLC PDU = 19 B =152 Bits + /* Long BSR only in second PDU + 1st PDU : 1B MH + 18 B RLC PDU [2B H+ 12 B SDU + 2 B H + 2 B RLC SDU Seg] + 2nd PDU [Padding at start] : 2 B P H + 4 B BSR + 1 B H + 12 B RLC PDU [2 B H +10 B RLC SDU Seg] + 2nd PDU [Padding at end] : 4 B BSR + 2B H + 1 P H + 12 B RLC PDU [2 B H +10 B RLC SDU Seg] + */ + //@sic R5-144653 sic@ + alt { + [] DRB.receive(car_DRB_COMMON_IND_MAC(p_PCellId, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_MAC_PDU_LongBSR_RLCPDU(tsc_LchId_DRB1,?,?, ?, ?,?)})) + { + DRB.receive(car_DRB_COMMON_IND_MAC(p_SCellId, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_MAC_PDU_LongBSR_RLCPDU(tsc_LchId_DRB1,?,?, ?, ?,?)})) + } + [] DRB.receive(car_DRB_COMMON_IND_MAC(p_SCellId, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_MAC_PDU_LongBSR_RLCPDU(tsc_LchId_DRB1,?,?, ?, ?,?)})) + { + DRB.receive(car_DRB_COMMON_IND_MAC(p_PCellId, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_MAC_PDU_LongBSR_RLCPDU(tsc_LchId_DRB1,?,?, ?, ?,?)})) + } + [] DRB.receive(car_DRB_COMMON_IND_MAC(p_PCellId, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_MAC_PDU_NoPadding_RLCPDU_LCID(tsc_LchId_DRB1,?)})) + { + alt { + [] DRB.receive(car_DRB_COMMON_IND_MAC(p_SCellId, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_MAC_PDU_2Padding_LongBSR_RLCPDU(tsc_LchId_DRB1,?,?, ?, ?,?)})) + {} + []DRB.receive(car_DRB_COMMON_IND_MAC(p_SCellId, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_MAC_PDU_LongBSR_RLCPDU_Padding(tsc_LchId_DRB1,?,?, ?, ?,?, int2bit(10,7),omit)})) + {} + } + } + [] DRB.receive(car_DRB_COMMON_IND_MAC(p_SCellId, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_MAC_PDU_NoPadding_RLCPDU_LCID(tsc_LchId_DRB1,?)})) + { + alt { + [] DRB.receive(car_DRB_COMMON_IND_MAC(p_PCellId, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_MAC_PDU_2Padding_LongBSR_RLCPDU(tsc_LchId_DRB1,?,?, ?, ?,?)})) + {} + []DRB.receive(car_DRB_COMMON_IND_MAC(p_PCellId, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_MAC_PDU_LongBSR_RLCPDU_Padding(tsc_LchId_DRB1,?,?, ?, ?,?, int2bit(10,7),omit)})) + {} + } + } + } + + f_EUTRA_TestBody_Set(false); + + /////////////////////////////////////////////////////////////////////////////////// + // Postamble + ////////////////////////////////////////////////////////////////////////////////// + // step to configure SS RLC/PDCP and MAC in No header manipulation mode on SS Side for DRB in DL only + f_SS_Config1TM_DRB_NoMACHeader(p_PCellId, tsc_RbId_DRB1, cs_MAC_TestMode_NormalMode); //@sic R5s100272 sic@ + // configure SS for default grant allocation + f_EUTRA_StartDefULGrantTransmission(p_PCellId); + // Release RRC Connection and Switch off + f_EUTRA_Postamble(p_PCellId, E2_CONNECTED); + } + + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 7.1.4.20.1 + * @status + */ + function f_TC_7_1_4_20_1_EUTRA() runs on EUTRA_PTC + { /* CA / Correct handling of MAC control information / Buffer status / Intra-band Contiguous CA*/ + f_TC_7_1_4_20_Common(eutra_Cell1, eutra_Cell3, CA_IntraBand); /* @sic R5-141113 sic@ */ + } + + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 7.1.4.20.2 + * @status + */ + function f_TC_7_1_4_20_2_EUTRA() runs on EUTRA_PTC + { /* CA / Correct handling of MAC control information / Buffer status / Inter-Band CA */ + f_TC_7_1_4_20_Common(eutra_Cell1, eutra_Cell10, CA_InterBand); + } + + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 7.1.4.20.3 + * @status + */ + function f_TC_7_1_4_20_3_EUTRA() runs on EUTRA_PTC + { /* CA / Correct handling of MAC control information / Buffer status / Intra-band non-Contiguous CA*/ + f_TC_7_1_4_20_Common(eutra_Cell6, eutra_Cell3, CA_IntraBand); + } + + ///////////////////////////////////////////////////////////////////////////////////////// + // CA Enhancements Rel 11 + ///////////////////////////////////////////////////////////////////////////////////////// + + template (value) RachProcedureConfig_Type cs_RachProcedureConfig_Dedicated_71210(RACH_TimingAdvance_Type p_RAR_TA, + Dl_Bandwidth_Type p_Dl_Bandwidth) := + { /* Rach Response config for test case 7.1.2.10 */ + /* @status */ + RACH_ConfigCommon := omit, + RACH_ConfigDedicated := cs_RACH_ConfigDedicated_r8(cs_RACH_ConfigDedicated), + RachProcedureList := { + // preamble reception 1. No RAR Tx & no Contention Resolution + { + RAResponse := cs_RandomAccessResponseConfig_None(p_Dl_Bandwidth), + ContentionResolutionCtrl := cs_ContReslCtrl_CRNTI_None // as dedicated resource indicated hence no PDCCH grant for UE needed. + }, + // preamble reception 2. No RAR Tx & no Contention Resolution + { + RAResponse := cs_RandomAccessResponseConfig_None(p_Dl_Bandwidth), + ContentionResolutionCtrl := cs_ContReslCtrl_CRNTI_None // as dedicated resource indicated hence no PDCCH grant for UE needed. + }, + + // preamble reception 3. RAR Tx succesful and No Contention Resolution as dedicated resource + { + RAResponse := cs_RandomAccessResponseConfig_Def(p_RAR_TA, p_Dl_Bandwidth,-,4),// RIV=0=> Nprb=1; Imcs=Itbs=4 => TB size =56 + ContentionResolutionCtrl := cs_ContReslCtrl_CRNTI_None // as dedicated resource indicated hence no PDCCH grant for UE needed. + } + } + }; + + /* + * @desc REFERENCE TS 36.523-1 clause 7.1.2.10 + */ + function f_TC_7_1_2_10_Common(EUTRA_CellId_Type p_PCellId, + EUTRA_CellId_Type p_SCellId, + CA_Tested_Type p_CA_Type) runs on EUTRA_PTC + {/* L2/MAC + * 7.1.2.10 : CA / Random access procedure / SCell + */ + var boolean v_UL_CA := true; + var boolean v_SendStatusPdu := false; + var SubFrameTiming_Type v_SubFrameInfo; + var MAC_SDU_Type v_EncodedRlcPdu1; + var MAC_SDU_Type v_EncodedRlcPdu2; + var octetstring v_EncodedPdcpPdu1, v_EncodedPdcpPdu2; + + /////////////////////////////////////////////////////////////////////////////////// + // PREAMBLE + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_Init(c3); + f_EUTRA_CA_InitCells({p_PCellId, p_SCellId}, p_CA_Type, c3); + //Get cell dependant parameters + + //Set C-RNTI to be used in s-cell creation + f_EUTRA_CellInfo_SetC_RNTI(p_SCellId, tsc_C_RNTI_Def); + + //Create and configure all cells + f_EUTRA_CellConfig_Pcell_Def(p_PCellId); + f_EUTRA_CellConfig_Scell(p_SCellId, Scell_Active); //No DRB's created + + // bring UE to initial state + f_EUTRA_Preamble(p_PCellId, STATE2A_TESTLOOP_ModeA); + // creates cell and performs registration + f_EUTRA_AS_CipheringAlgorithm_Set(eea0); // set null AS ciphering algorithm + // Go to state 4 + f_EUTRA_LoopBackActivation_State4_TA_Infinity_LB_NoScaling_DSR(-, -, p_PCellId,n8); + //@sic R5-101183 sic@ + f_Delay(0.660); // 600 ms previous time alignment timer + + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set(true, layer2); // + + //@siclog "Step 1-2" siclog@ + //Transmit RRCConnectionReconfiguration + //Receive RRCConnectionReconfigurationComplete + f_EUTRA_508RRC_AddMod_1Scell(p_PCellId, + p_SCellId, + 1, //SCellIndex_r10 + p_CA_Type, // CA Type + v_UL_CA,// UL CA desired + -, //C-RNTI + -, // p_MeasGapConfig + -, //p_RRCConnectionReconfiguration + -, //p_DciUlInfo_SCell + -, //p_UL_GrantConfig_SCell + -, //p_CnfFlag + -, //p_STAG_ToReleaseList + {cs_STAG_ToAddMod_Def(tsc_STAG_ID1, infinity_)},// p_STAG_ToAddModList + cs_MAC_MainConfigSCell_Def(tsc_STAG_ID1),//p_MAC_MainConfigSCell_r11 + cs_RACH_ConfigCommonSCell_r11_Def, + cs_PRACH_Config_Def(f_EUTRA_CellInfo_GetPrach_Config(p_SCellId)) + ); + + + + f_SS_Config1TM_DRB_NoMACHeader(p_PCellId, tsc_RbId_DRB1, cs_MAC_TestMode_NoHeaderManipulationDLOnly); + f_EUTRA_StartULGrantTransmissionOnSR_Reception_No_PUCCH_Sync(p_PCellId, cs_TimingInfo_Now, cs_DciInfo_CcchDcchDtchUL_Def); + + //@siclog "Step 3" siclog@ + // Send Scell Activation Command + f_EUTRA_ScellActivate_Deactivate(p_PCellId, tsc_Scell1_Activate); + + // config for PReamble reception indication in Scell + f_EUTRA_SS_ConfigRachPreambleIndMode(p_SCellId, tsc_L1Mac_IndicationMode_Enable); + // to configure SS to report reception of Scheduling Request + f_SS_ConfigSchedulingRequestIndMode(p_PCellId, tsc_L1Mac_IndicationMode_Enable); + + // Configure Scell for RACH procedure + f_EUTRA_SS_ConfigRachProcedure(p_SCellId, tsc_C_RNTI_Def, cs_RachProcedureConfig_Dedicated_71210(f_EUTRA_CellInfo_GetRAR_TA(p_SCellId), + f_EUTRA_CellInfo_GetDL_ChBandwidth(p_SCellId) )); + // Precode RLC PDU's + v_EncodedPdcpPdu1 := f_PDCP_PDU_Encvalue(cs_PDCP_PDU_LongSN(cs_PDCP_DataPdu_LongSN(int2bit(0,12), crs_PDCP_SDU_36B))); + v_EncodedRlcPdu1 := f_RLC_PDU_Encvalue(cs_RLC_AMD_1PDU(tsc_NoPoll, + int2bit(0,10), + v_EncodedPdcpPdu1 )); + v_EncodedPdcpPdu2 := f_PDCP_PDU_Encvalue(cs_PDCP_PDU_LongSN(cs_PDCP_DataPdu_LongSN(int2bit(1,12), crs_PDCP_SDU_36B1))); + v_EncodedRlcPdu2 := f_RLC_PDU_Encvalue(cs_RLC_AMD_1PDU(tsc_NoPoll, + int2bit(1,10), + v_EncodedPdcpPdu2 )); + // Evaluate a time in future + v_SubFrameInfo := f_EUTRA_GetNextSendOccasion(p_PCellId, 300); // 300 ms in future + //@siclog "Step 4" siclog@ + // Send DL PDU on CC1 + DRB.send(cas_DRB_COMMOM_REQ_MAC_PDU(p_PCellId, + tsc_RbId_DRB1, + cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number), + cs_MAC_PDUList_1(cs_MAC_PDU_NoPadding_RLCPDU_LCID(tsc_LchId_DRB1, v_EncodedRlcPdu1)))); + + + //@siclog "Step 5" siclog@ + // Send DL PDCCH order on CC2 + f_Send_PDCCH_Order(p_SCellId, cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number), cs_RA_PDCCH_Order(tsc_EUTRA_PrachPreambleIndex_Dedicated_Def)); + //@siclog "Step 6-9" siclog@ + //@siclog "Step 1-4 Parallel behaviour" siclog@ + // Main behaviour step 9, Paralelle behaviour step 1-2 are taken care by SS + interleave { + [] DRB.receive (car_DRB_COMMON_IND_RLC_PDUList (p_PCellId, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_RLC_AMD_1PDU(?, int2bit(0, 10), v_EncodedPdcpPdu1)})) + { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Parallel behaviour Step 3"); + v_SendStatusPdu:=true; + //f_RLC_Status_PDU_Tx(tsc_LchId_DRB1,1,p_PCellId); + } + [] SYSIND.receive ( car_PRACH_Preamble_IND (p_SCellId, cr_TimingInfo_Any)) + { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, " Step 6"); + } + [] SYSIND.receive ( car_PRACH_Preamble_IND (p_SCellId, cr_TimingInfo_Any)) + { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, " Step 7"); + } + [] SYSIND.receive ( car_PRACH_Preamble_IND (p_SCellId, cr_TimingInfo_Any)) + { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, " Step 8"); + } + } + if (v_SendStatusPdu) { + f_RLC_Status_PDU_Tx(tsc_LchId_DRB1,1,p_PCellId); + v_SendStatusPdu:=false; + } + + // Stop UL Grant transmission on Pcell + f_EUTRA_StopULGrantTransmission_No_PUCCH_Sync (p_PCellId,cs_TimingInfo_Now ); + // config for stop of PReamble reception indication in Scell + f_EUTRA_SS_ConfigRachPreambleIndMode(p_SCellId, tsc_L1Mac_IndicationMode_Disable); + // to configure SS to stop of report reception of Scheduling Request + f_SS_ConfigSchedulingRequestIndMode(p_PCellId, tsc_L1Mac_IndicationMode_Disable); + + v_SubFrameInfo := f_EUTRA_GetNextSendOccasion(p_SCellId); + // @siclog "Step 10" siclog@ + DRB.send(cas_DRB_COMMOM_REQ_MAC_PDU(p_SCellId, + tsc_RbId_DRB1, + cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number), + cs_MAC_PDUList_1(cs_MAC_PDU_NoPadding_RLCPDU_LCID(tsc_LchId_DRB1, v_EncodedRlcPdu2)))); + //@siclog "Step 11" siclog@ + // Configure SS for 1 UL grant + v_SubFrameInfo := f_EUTRA_TimingInfoAdd(v_SubFrameInfo, 60); // 60 ms later + f_EUTRA_OneULGrantTransmission( p_SCellId, + cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number), + 7, 3); //results in a grant of 328 bits= 41 B + //@siclog "Step 12" siclog@ + // Receive loop back PDU on CC2 + DRB.receive (car_DRB_COMMON_IND_RLC_PDUList (p_SCellId, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_RLC_AMD_1PDU(?, int2bit(1, 10), v_EncodedPdcpPdu2)})); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, " Step 12"); + //@siclog "Step 13" siclog@ + //Send RLC status PDU on CC2 + f_RLC_Status_PDU_Tx(tsc_LchId_DRB1,2,p_SCellId); + /////////////////////// + // Postamble + /////////////////////// + f_EUTRA_StartULGrantTransmissionOnSR_Reception_No_PUCCH_Sync(p_PCellId, cs_TimingInfo_Now, cs_DciInfo_CcchDcchDtchUL_Def); + f_EUTRA_TestBody_Set(false); + + //Switch/power off UE + f_EUTRA_Postamble(p_PCellId, E2_CONNECTED); + } + + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 7.1.2.10.1 + * @status + */ + function f_TC_7_1_2_10_1_EUTRA() runs on EUTRA_PTC + { /*CA / Random access procedure / SCell / Intra-band Contiguous CA */ + f_TC_7_1_2_10_Common(eutra_Cell1, eutra_Cell3,CA_IntraBand); + } + + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 7.1.2.10.2 + * @status + */ + function f_TC_7_1_2_10_2_EUTRA() runs on EUTRA_PTC + { /* CA / Random access procedure / SCell / Inter-Band CA */ + f_TC_7_1_2_10_Common(eutra_Cell1, eutra_Cell10, CA_InterBand); + } + + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 7.1.2.10.3 + * @status + */ + function f_TC_7_1_2_10_3_EUTRA() runs on EUTRA_PTC + { /*CA / Random access procedure / SCell / Intra-band Non Contiguous CA */ + f_TC_7_1_2_10_Common(eutra_Cell6, eutra_Cell3,CA_IntraBand); + } + + + //---------------------------------------------------------------------------- + + template (value) RachProcedureConfig_Type cs_RachProcedureConfig_Dedicated_71211(RACH_TimingAdvance_Type p_RAR_TA, + Dl_Bandwidth_Type p_Dl_Bandwidth) := + { /* Rach Response config for test case 7.1.2.10 */ + /* @status */ + RACH_ConfigCommon := omit, + RACH_ConfigDedicated := cs_RACH_ConfigDedicated_r8(cs_RACH_ConfigDedicated), + RachProcedureList := { + + // preamble reception 1. RAR Tx succesful and No Contention Resolution as dedicated resource + { + RAResponse := cs_RandomAccessResponseConfig_Def(p_RAR_TA, p_Dl_Bandwidth,-,4),// RIV=0=> Nprb=1; Imcs=Itbs=4 => TB size =56 + ContentionResolutionCtrl := cs_ContReslCtrl_CRNTI_None // as dedicated resource indicated hence no PDCCH grant for UE needed. + } + } + }; + + + /* + * @desc REFERENCE TS 36.523-1 clause 7.1.2.11 + */ + function f_TC_7_1_2_11_Common(EUTRA_CellId_Type p_PCellId, + EUTRA_CellId_Type p_SCellId, + CA_Tested_Type p_CA_Type) runs on EUTRA_PTC + {/* L2/MAC + * 7.1.2.11 : CA / Maintenance of uplink time alignment / Multiple TA + */ + var boolean v_UL_CA := true; +// var boolean v_SendStatusPdu := false; + var SubFrameTiming_Type v_SubFrameInfo, v_SubFrameInfo2; + var SubFrameTiming_Type v_SubFrameTimingRX; + var MAC_SDU_Type v_EncodedRlcPdu1; + var MAC_SDU_Type v_EncodedRlcPdu2; + var MAC_SDU_Type v_EncodedRlcPdu3; + var octetstring v_EncodedPdcpPdu1, v_EncodedPdcpPdu2, v_EncodedPdcpPdu3; + var RACH_TimingAdvance_Type v_RAR_TA; + var EUTRA_FDD_TDD_Mode_Type v_EUTRA_FDD_TDD_Mode; + var SYSTEM_IND v_SYSTEM_IND; + var SubFrameTiming_Type v_Timing1; + var SYSTEM_IND v_ReceivedSYSIND; + var default v_DefaultVar := null; + var boolean v_SetVerdictFalse:=false; + /////////////////////////////////////////////////////////////////////////////////// + // PREAMBLE + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_Init(c3); + f_EUTRA_CA_InitCells({p_PCellId, p_SCellId}, p_CA_Type, c3); + //Get cell dependant parameters + + //Set C-RNTI to be used in s-cell creation + f_EUTRA_CellInfo_SetC_RNTI(p_SCellId, tsc_C_RNTI_Def); + + //Create and configure all cells + f_EUTRA_CellConfig_Pcell_Def(p_PCellId); + f_EUTRA_CellConfig_Scell(p_SCellId, Scell_Active); //No DRB's created + + // bring UE to initial state + f_EUTRA_Preamble(p_PCellId, STATE2A_TESTLOOP_ModeA); + // creates cell and performs registration + f_EUTRA_AS_CipheringAlgorithm_Set(eea0); // set null AS ciphering algorithm + // Go to state 4 + f_EUTRA_LoopBackActivation_State4_TA_Infinity_LB_NoScaling_DSR(-, -, p_PCellId,n8); + //@sic R5-101183 sic@ + f_Delay(0.660); // 600 ms previous time alignment timer + + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set(true, layer2); // + v_EUTRA_FDD_TDD_Mode := f_EUTRA_CellInfo_GetFDD_TDD(p_PCellId); + if (v_EUTRA_FDD_TDD_Mode == FDD) + { + v_RAR_TA := 600; + }else + { + v_RAR_TA := 160; + } + + //@siclog "Step 1-2" siclog@ + //Transmit RRCConnectionReconfiguration + //Receive RRCConnectionReconfigurationComplete + f_EUTRA_508RRC_AddMod_1Scell(p_PCellId, + p_SCellId, + 1, //SCellIndex_r10 + p_CA_Type, // CA Type + v_UL_CA,// UL CA desired + -, //C-RNTI + -, // p_MeasGapConfig + -, //p_RRCConnectionReconfiguration + -, //p_DciUlInfo_SCell + -, //p_UL_GrantConfig_SCell + -, //p_CnfFlag + -, //p_STAG_ToReleaseList + {cs_STAG_ToAddMod_Def(tsc_STAG_ID1)},// p_STAG_ToAddModList + cs_MAC_MainConfigSCell_Def(tsc_STAG_ID1),//p_MAC_MainConfigSCell_r11 + cs_RACH_ConfigCommonSCell_r11_Def, + cs_PRACH_Config_Def(f_EUTRA_CellInfo_GetPrach_Config(p_SCellId))); + + f_SS_Config1TM_DRB_NoMACHeader(p_PCellId, tsc_RbId_DRB1, cs_MAC_TestMode_NoHeaderManipulationDLOnly); + f_EUTRA_StartULGrantTransmissionOnSR_Reception(p_PCellId, cs_TimingInfo_Now, cs_DciInfo_CcchDcchDtchUL_Def); + + //@siclog "Step 3" siclog@ + // Send Scell Activation Command + f_EUTRA_ScellActivate_Deactivate(p_PCellId, tsc_Scell1_Activate); + + + // Configure Scell for RACH procedure + f_EUTRA_SS_ConfigRachProcedure(p_SCellId, tsc_C_RNTI_Def, cs_RachProcedureConfig_Dedicated_71211(f_EUTRA_CellInfo_GetRAR_TA(p_SCellId), + f_EUTRA_CellInfo_GetDL_ChBandwidth(p_SCellId) )); + + // Confiure Pcell for RACH procedure + f_EUTRA_SS_ConfigRachProcedure (eutra_Cell1, omit, cs_RachProcedureConfig_CRNTI(f_EUTRA_CellInfo_GetRAR_TA(eutra_Cell1), + f_EUTRA_CellInfo_GetDL_ChBandwidth(eutra_Cell1)) ); + + // config for PReamble reception indication in Scell + f_EUTRA_SS_ConfigRachPreambleIndMode(p_SCellId, tsc_L1Mac_IndicationMode_Enable); + // config for PReamble reception indication in Pcell + f_EUTRA_SS_ConfigRachPreambleIndMode(p_PCellId, tsc_L1Mac_IndicationMode_Enable); + // Precode RLC PDU's + v_EncodedPdcpPdu1 :=f_PDCP_PDU_Encvalue(cs_PDCP_PDU_LongSN(cs_PDCP_DataPdu_LongSN(int2bit(0,12), crs_PDCP_SDU_36B))); + v_EncodedRlcPdu1 := f_RLC_PDU_Encvalue(cs_RLC_AMD_1PDU(tsc_NoPoll, + int2bit(0,10), + v_EncodedPdcpPdu1 )); + v_EncodedPdcpPdu2 := f_PDCP_PDU_Encvalue(cs_PDCP_PDU_LongSN(cs_PDCP_DataPdu_LongSN(int2bit(1,12), crs_PDCP_SDU_36B1))); + v_EncodedRlcPdu2 := f_RLC_PDU_Encvalue(cs_RLC_AMD_1PDU(tsc_NoPoll, + int2bit(1,10), + v_EncodedPdcpPdu2 )); + v_EncodedPdcpPdu3 := f_PDCP_PDU_Encvalue(cs_PDCP_PDU_LongSN(cs_PDCP_DataPdu_LongSN(int2bit(2,12), crs_PDCP_SDU_36B2))); + v_EncodedRlcPdu3 := f_RLC_PDU_Encvalue(cs_RLC_AMD_1PDU(tsc_NoPoll, + int2bit(2,10), + v_EncodedPdcpPdu3 )); + // Evaluate a time in future + v_SubFrameInfo := f_EUTRA_GetNextSendOccasion(p_PCellId, 200); // 200 ms in future + //@siclog "Step 4" siclog@ + // Send DL PDCCH order on CC2 + f_Send_PDCCH_Order(p_SCellId, cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number), cs_RA_PDCCH_Order(tsc_EUTRA_PrachPreambleIndex_Dedicated_Def)); + + //@siclog "Step 5" siclog@ + SYSIND.receive ( car_PRACH_Preamble_IND (p_SCellId, cr_TimingInfo_Any)); + //@siclog "Step 6" siclog@ + // Taken care by SS due to preconfiguration + + v_SubFrameInfo := f_EUTRA_GetNextSendOccasion(p_PCellId, 100); // 100 ms in future + + + //@siclog "Step 7" siclog@ + // Send DL PDU on CC1 + DRB.send(cas_DRB_COMMOM_REQ_MAC_PDU(p_SCellId, + tsc_RbId_DRB1, + cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number), + cs_MAC_PDUList_1(cs_MAC_PDU_NoPadding_RLCPDU_LCID(tsc_LchId_DRB1, v_EncodedRlcPdu1)))); + + + + //@siclog "Step 8" siclog@ + //Send an uplink grant + v_SubFrameInfo := f_EUTRA_TimingInfoAdd(v_SubFrameInfo, 60); // 60 ms later + f_EUTRA_OneULGrantTransmission( p_SCellId, + cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number), + 7, 3); //results in a grant of 328 bits= 41 B + //@siclog "Step 9" siclog@ + // Receive loop back PDU on CC2 + DRB.receive (car_DRB_COMMON_IND_RLC_PDUList (p_SCellId, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_RLC_AMD_1PDU(?, int2bit(0, 10), v_EncodedPdcpPdu1)})); + f_RLC_Status_PDU_Tx(tsc_LchId_DRB1,1,p_SCellId); + + //@siclog "Step 10" siclog@ + v_SubFrameInfo := f_EUTRA_GetNextSendOccasion(p_PCellId, 200); // 200 ms in future + DRB.send (cas_DRB_COMMOM_REQ_MAC_PDU(p_SCellId,tsc_RbId_DRB1, cs_TimingInfo_Now, cs_MAC_PDUList_1 (cs_MAC_PDU_TimingAdvance_0_STAG1))); + + + v_SubFrameInfo2 := f_EUTRA_TimingInfoAdd(v_SubFrameInfo, 100); // 100 ms later + + // Configure SS for SRS reporting + f_SS_ConfigSRS_IndMode (p_SCellId, tsc_L1Mac_IndicationMode_Enable,cs_TimingInfo(v_SubFrameInfo2.SFN.Number, v_SubFrameInfo2.Subframe.Number) ); + + //@siclog "Step 11" siclog@ + // Send DL PDU on CC1 + DRB.send(cas_DRB_COMMOM_REQ_MAC_PDU(p_SCellId, + tsc_RbId_DRB1, + cs_TimingInfo(v_SubFrameInfo2.SFN.Number, v_SubFrameInfo2.Subframe.Number), + cs_MAC_PDUList_1(cs_MAC_PDU_NoPadding_RLCPDU_LCID(tsc_LchId_DRB1, v_EncodedRlcPdu2)))); + + + + //@siclog "Step 12" siclog@ + //Send an uplink grant + v_SubFrameInfo2 := f_EUTRA_TimingInfoAdd(v_SubFrameInfo2, 60); // 60 ms later + f_EUTRA_OneULGrantTransmission( p_SCellId, + cs_TimingInfo(v_SubFrameInfo2.SFN.Number, v_SubFrameInfo2.Subframe.Number), + 7, 3); //results in a grant of 328 bits= 41 B + //@siclog "Step 13" siclog@ + // Receive loop back PDU on CC2 + DRB.receive (car_DRB_COMMON_IND_RLC_PDUList (p_SCellId, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_RLC_AMD_1PDU(?, int2bit(1, 10), v_EncodedPdcpPdu2)})); + f_RLC_Status_PDU_Tx(tsc_LchId_DRB1,2,p_SCellId); + + //@siclog "Step 14" siclog@ + SYSIND.receive(car_SRS_IND(p_SCellId, cr_TimingInfo_Any, tsc_SRS_Stop)) -> value v_ReceivedSYSIND; + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 3"); + v_Timing1 := v_ReceivedSYSIND.Common.TimingInfo.SubFrame; + if (f_EUTRA_SubFrameTimingCheckDuration(eutra_Cell1, l2Timer, f_EUTRA_SubFrameTimingDuration(v_SubFrameInfo, v_Timing1), 750)) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 14: UE stopped periodic SRS "); + } + else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 14: UE stopped period srs but wrong time"); + } + + v_DefaultVar := activate(a_EUTRA_MAC_SRSInd(p_SCellId,tsc_SRS_Start )); + //Check UE stops SRS + //Check time difference between step 10 and 14 to be Time alignment timer + tolerance. + + + v_SubFrameInfo := f_EUTRA_GetNextSendOccasion(p_PCellId, 200); // 200 ms in future + //@siclog "Step 15" siclog@ + // Send DL PDCCH order on CC2 + f_Send_PDCCH_Order(p_SCellId, cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number), cs_RA_PDCCH_Order(tsc_EUTRA_PrachPreambleIndex_Dedicated_Def)); + + //@siclog "Step 16" siclog@ + SYSIND.receive ( car_PRACH_Preamble_IND (p_SCellId, cr_TimingInfo_Any)); + //@siclog "Step 17" siclog@ + // Taken care by SS due to preconfiguration + + v_SubFrameInfo := f_EUTRA_GetNextSendOccasion(p_PCellId, 100); // 100 ms in future + f_EUTRA_StopULGrantTransmission_No_PUCCH_Sync (p_PCellId,cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number) ); + //@siclog "Step 18" siclog@ + v_SubFrameInfo := f_EUTRA_TimingInfoAdd(v_SubFrameInfo, 100); // 100 ms in future + //Send TA for PTAG + DRB.send (cas_DRB_COMMOM_REQ_MAC_PDU(p_PCellId,tsc_RbId_DRB1, cs_TimingInfo(v_SubFrameInfo.SFN.Number, v_SubFrameInfo.Subframe.Number), cs_MAC_PDUList_1 (cs_MAC_PDU_TimingAdvance_0))); + + //@siclog "Step 19" siclog@ + // Send TA for Stag1 + v_SubFrameInfo2 := f_EUTRA_TimingInfoAdd(v_SubFrameInfo, 300); // 100 ms in future + DRB.send (cas_DRB_COMMOM_REQ_MAC_PDU(p_SCellId,tsc_RbId_DRB1, cs_TimingInfo(v_SubFrameInfo2.SFN.Number, v_SubFrameInfo2.Subframe.Number), cs_MAC_PDUList_1 (cs_MAC_PDU_TimingAdvance_0_STAG1))); + //@siclog "Step 20" siclog@ + // Send DL PDU on CC1 + v_SubFrameInfo2 := f_EUTRA_TimingInfoAdd(v_SubFrameInfo, 300); // 100 ms in future + + DRB.send(cas_DRB_COMMOM_REQ_MAC_PDU(p_SCellId, + tsc_RbId_DRB1, + cs_TimingInfo(v_SubFrameInfo2.SFN.Number, v_SubFrameInfo2.Subframe.Number), + cs_MAC_PDUList_1(cs_MAC_PDU_NoPadding_RLCPDU_LCID(tsc_LchId_DRB1, v_EncodedRlcPdu1)))); + + + //Check UE stops SRS in parallel to step 22 + //@siclog "Step 21-22" siclog@ + interleave { + []SYSIND.receive ( car_PRACH_Preamble_IND (p_PCellId, cr_TimingInfo_Any)) -> value v_SYSTEM_IND + { + v_SubFrameTimingRX := v_SYSTEM_IND.Common.TimingInfo.SubFrame; + if (f_EUTRA_SubFrameTimingDuration_Float(v_SubFrameInfo2, v_SubFrameTimingRX) <= 0.225) + { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 22"); + } + else + { + //f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 22"); + v_SetVerdictFalse := true; + + } + } + [] SYSIND.receive(car_SRS_IND(p_SCellId, cr_TimingInfo_Any, tsc_SRS_Stop)) {} + }; + // defined to avoid usage of communication operation not allowed inside an interleave statement + if (v_SetVerdictFalse) { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 22"); + } + + //@siclog "Step 23" siclog@ + //Send an uplink grant + + f_EUTRA_OneULGrantTransmission( p_PCellId, + cs_TimingInfo_Now, + 7, 3); //results in a grant of 328 bits= 41 B + + //@siclog "Step 24" siclog@ + DRB.receive (car_DRB_COMMON_IND_RLC_PDUList (p_PCellId, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_RLC_AMD_1PDU(?, int2bit(2, 10), v_EncodedPdcpPdu3)})); + + + + // config for stop of PReamble reception indication in Scell + f_EUTRA_SS_ConfigRachPreambleIndMode(p_SCellId, tsc_L1Mac_IndicationMode_Disable); + // config for stop of PReamble reception indication in Pcell + f_EUTRA_SS_ConfigRachPreambleIndMode(p_PCellId, tsc_L1Mac_IndicationMode_Disable); + // Config for stop of SRS toggle indication + f_SS_ConfigSRS_IndMode (p_SCellId, tsc_L1Mac_IndicationMode_Disable ); + + // deactivate reception of SRS's in alt step + deactivate(v_DefaultVar); + //@siclog "Step 25" siclog@ + //Send RLC status PDU on CC2 + f_RLC_Status_PDU_Tx(tsc_LchId_DRB1,3,p_PCellId); + /////////////////////// + // Postamble + /////////////////////// + f_EUTRA_StartULGrantTransmissionOnSR_Reception_No_PUCCH_Sync(p_PCellId, cs_TimingInfo_Now, cs_DciInfo_CcchDcchDtchUL_Def); + f_EUTRA_TestBody_Set(false); + + //Switch/power off UE + f_EUTRA_Postamble(p_PCellId, E2_CONNECTED); + } + + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 7.1.2.11.1 + * @status + */ + function f_TC_7_1_2_11_1_EUTRA() runs on EUTRA_PTC + { /*CA / Maintenance of uplink time alignment / Multiple TA/ Intra-band Contiguous CA */ + f_TC_7_1_2_11_Common(eutra_Cell1, eutra_Cell3,CA_IntraBand); + } + + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 7.1.2.11.2 + * @status + */ + function f_TC_7_1_2_11_2_EUTRA() runs on EUTRA_PTC + { /* CA / Maintenance of uplink time alignment / Multiple TA / Inter-Band CA */ + f_TC_7_1_2_11_Common(eutra_Cell1, eutra_Cell10, CA_InterBand); + } + + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 7.1.2.11.3 + * @status + */ + function f_TC_7_1_2_11_3_EUTRA() runs on EUTRA_PTC + { /*CA / Maintenance of uplink time alignment / Multiple TA/ Intra-band Non Contiguous CA */ + f_TC_7_1_2_11_Common(eutra_Cell6, eutra_Cell3,CA_IntraBand); + } +} diff --git a/LTE_A_IWD_14wk37/LTE_A/7_1/MAC_SSC.ttcn b/LTE_A_IWD_14wk37/LTE_A/7_1/MAC_SSC.ttcn new file mode 100644 index 0000000..805b65d --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/7_1/MAC_SSC.ttcn @@ -0,0 +1,651 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-06-05 11:28:00 +0200 (Thu, 05 Jun 2014) $ +// $Rev: 11552 $ +/******************************************************************************/ +module MAC_SSC { + import from EUTRA_CellInfo all; + import from EUTRA_ConfigurationSteps all; + import from EUTRA_RRCSteps all; + import from EUTRA_CommonProcedures all; + import from EUTRA_ASP_TypeDefs all; + import from EUTRA_AspCommon_Templates all; + import from EUTRA_CommonDefs all; + import from EUTRA_CellCfg_Templates all; + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_RRC_Templates all; + //import from EUTRA_SRB_Templates all; + import from EUTRA_Component all; + import from L2_CommonTemplates all; + import from L2_CommonFunctions all; + import from MAC_Common all; + //import from EUTRA_SecuritySteps all; + import from EUTRA_Timing all; + import from CommonDefs all; +// import from EUTRA_SecurityFunctions all; + + import from EUTRA_SysInfo_Templates all; + import from EUTRA_PdcchConfig all; + import from EUTRA_LoopBack all; + + +//===================================================================================================== +//template and function +//====================================================================================================== + template (value) PdcchCandidateList_Type cs_PdcchCandidateList_TDD_SSC_5MHz := + { /* @status */ + + { + tsc_C_RNTI_Def, // 4097 ('1001'H) + { + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 0 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 1 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 2 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 3 + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 4 + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 5 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 6 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 7 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 8 + cs_CCE_StartIndex_DL_UL( 8, 0) // subframe 9 + } + }, + { + tsc_C_RNTI_Def2, // 4148 ('1034'H) + { + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 0 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 1 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 2 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 3 + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 4 + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 5 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 6 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 7 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 8 + cs_CCE_StartIndex_DL_UL( 8, 0) // subframe 9 + } + } + } + + template (value) PdcchCandidateList_Type cs_PdcchCandidateList_TDD_SSC_20MHz := + { /* @status */ + { + tsc_C_RNTI_Def, // 4097 ('1001'H) + { + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 0 + cs_CCE_StartIndex_DL_UL( 8, 16), // subframe 1 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 2 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 3 + cs_CCE_StartIndex_DL_UL(16, 24), // subframe 4 + cs_CCE_StartIndex_DL_UL(24, 0), // subframe 5 + cs_CCE_StartIndex_DL_UL(16, 24), // subframe 6 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 7 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 8 + cs_CCE_StartIndex_DL_UL(24, 32) // subframe 9 + } + }, + { + tsc_C_RNTI_Def2, // 4148 ('1034'H) + { + cs_CCE_StartIndex_DL_UL(32, 0), // subframe 0 + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 1 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 2 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 3 + cs_CCE_StartIndex_DL_UL( 8,16), // subframe 4 + cs_CCE_StartIndex_DL_UL( 8, 0), // subframe 5 + cs_CCE_StartIndex_DL_UL(32,40), // subframe 6 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 7 + cs_CCE_StartIndex_DL_UL( 0, 0), // subframe 8 + cs_CCE_StartIndex_DL_UL(32,40) // subframe 9 + } + } + } + + template (value) RadioResourceConfigCommon cs_RadioResourceConfigCommon_AllParams_v1130(template (value) RadioResourceConfigCommonSIB p_RadioResourceConfigCommonSIB, + template (value) PRACH_Config p_PRACH_Configuration, + template (omit) TDD_Config p_Tdd_Configuration, + template (omit) TDD_Config_v1130 p_TDD_Config_v1130 := omit) := + { /* Values according to broadcast SIB2 */ + /* @status */ + rach_ConfigCommon := p_RadioResourceConfigCommonSIB.rach_ConfigCommon, + prach_Config := p_PRACH_Configuration, + pdsch_ConfigCommon := p_RadioResourceConfigCommonSIB.pdsch_ConfigCommon, + pusch_ConfigCommon := p_RadioResourceConfigCommonSIB.pusch_ConfigCommon, + phich_Config := cs_508_PHICH_Config_Default, + pucch_ConfigCommon := p_RadioResourceConfigCommonSIB.pucch_ConfigCommon, + soundingRS_UL_ConfigCommon := p_RadioResourceConfigCommonSIB.soundingRS_UL_ConfigCommon, + uplinkPowerControlCommon := p_RadioResourceConfigCommonSIB.uplinkPowerControlCommon, + antennaInfoCommon := cs_AntennaInfoCommon_1Port, + p_Max := omit, + tdd_Config := p_Tdd_Configuration, + ul_CyclicPrefixLength := p_RadioResourceConfigCommonSIB.ul_CyclicPrefixLength, + uplinkPowerControlCommon_v1020 := p_RadioResourceConfigCommonSIB.uplinkPowerControlCommon_v1020, /* @sic R5s120178 BASELINE MOVING 2012 sic@ */ + tdd_Config_v1130 := p_TDD_Config_v1130 /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + }; + + template (value) PhysicalLayerConfigDL_Type cs_PhysicalLayerConfigDL_CCESpecialSubframe_TDD(Dl_Bandwidth_Type p_Dl_Bandwidth) := + { + AntennaGroup := omit, + Pbch := omit, //same as previous config + Pcfich := omit,//same as previous config + Phich := omit,//same as previous config + Pdcch := f_EUTRA_PdcchConfig_ModifyCCESpecialSubframe_TDD(p_Dl_Bandwidth), + Pdsch := omit,//same as previous config + Pss := omit, //same as previous config + Sss := omit, //same as previous config + CSI_RS_Config := omit, + Pmch := omit, + Epdcch := omit + }; + + /* + * @desc set specialSubframePatterns parameter in EUTRA_CellInfo + * @param p_CellId + * @param p_specialSubframePatterns + * @param p_SpecialSubframePatterns_v1130 + * @status + */ + function f_EUTRA_CellInfo_SetSysInfo_TDD_Config_v1130(EUTRA_CellId_Type p_CellId, + TDD_Config.specialSubframePatterns p_SpecialSubframePatterns, + TDD_Config_v1130.specialSubframePatterns_v1130 p_SpecialSubframePatterns_v1130) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + v_CellInfo.Sysinfo.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.tdd_Config.specialSubframePatterns := p_SpecialSubframePatterns; + v_CellInfo.Sysinfo.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.nonCriticalExtension.nonCriticalExtension.nonCriticalExtension := { + tdd_Config_v1130 := { + specialSubframePatterns_v1130 := p_SpecialSubframePatterns_v1130 + }, + cellSelectionInfo_v1130 := omit, + nonCriticalExtension := omit + }; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc set UL_CyclicPrefixLength parameter in EUTRA_CellInfo + * @param p_CellId + * @param p_UL_CyclicPrefixLength + * @status + */ + function f_EUTRA_CellInfo_SetSysInfo_UL_CyclicPrefixLength(EUTRA_CellId_Type p_CellId, + UL_CyclicPrefixLength p_UL_CyclicPrefixLength) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon.ul_CyclicPrefixLength := p_UL_CyclicPrefixLength; + f_EUTRA_CellInfo_Set (p_CellId, v_CellInfo); + } + + /* + * @desc modify PDCCH configuration + * @param p_Dl_Bandwidth + * @return template (value) PdcchConfig_Type + * @status + */ + function f_EUTRA_PdcchConfig_ModifyCCESpecialSubframe_TDD(Dl_Bandwidth_Type p_Dl_Bandwidth) return template (value) PdcchConfig_Type + { + /* @sic R5-135000 sic@ */ + var template (value) PdcchConfig_Type v_PdcchConfig; + var template (value) PdcchCandidateList_Type v_PdcchCandidateList; + + select (p_Dl_Bandwidth) { + case (n25) { // 5MHz + v_PdcchCandidateList := cs_PdcchCandidateList_TDD_SSC_5MHz; + } + case (n100) { // 20MHz + v_PdcchCandidateList := cs_PdcchCandidateList_TDD_SSC_20MHz; + } + case else { + FatalError(__FILE__, __LINE__, "fl_PdcchCandidateList_FDD: bandwidth not supported"); + } + } + v_PdcchConfig := { + CommonSearchSpaceFormat := 3, + UeSpecificSearchSpaceFormat := 3, + PdcchCandidateList := v_PdcchCandidateList, + RelativeTxPower := omit + } + + return v_PdcchConfig; + }; + + /* @desc Generates a MobilityControlInfo template with ALL parameters based on target cell. + * @param p_TargetCellId + * @return template (value) MobilityControlInfo + * @status + */ + function fl_Generate_cs_MobilityControlInfo_HO_RadioResourceConfigCommon(EUTRA_CellId_Type p_TargetCellId) runs on EUTRA_PTC return template (value) MobilityControlInfo + { + var template (omit) TDD_Config_v1130 v_TDD_Config_v1130 := omit; + var template (value) RadioResourceConfigCommon v_RadioResourceConfigCommon; + var Frequency_IE_Type v_Frequency_IE := f_EUTRA_CellInfo_GetFrequencyIEs ( p_TargetCellId ); + var CarrierFreqEUTRA v_EUTRA_CarrierFreq := v_Frequency_IE.UL_DL_Earfcn; + var template (value) CarrierBandwidthEUTRA v_EUTRA_CarrierBandwidth := cs_CarrierBandwidthEUTRA ( v_Frequency_IE.DL_ChBandwidth, v_Frequency_IE.UL_ChBandwidth ); + var AdditionalSpectrumEmission_Type v_AdditionalSpectrumEmission := f_EUTRA_CellInfo_GetAddSpectrumEmission ( p_TargetCellId ); + var EUTRA_CellSysInfo_Type v_EUTRA_CellSysInfo_Type := f_EUTRA_CellInfo_GetSYSINFO(p_TargetCellId); + + var RadioResourceConfigCommonSIB v_RadioResourceConfigCommonSIB := v_EUTRA_CellSysInfo_Type.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon; + + var template (omit) TDD_Config v_Tdd_Configuration := v_EUTRA_CellSysInfo_Type.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.tdd_Config; + + if(ispresent(v_EUTRA_CellSysInfo_Type.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.nonCriticalExtension.nonCriticalExtension.nonCriticalExtension.tdd_Config_v1130)){ + v_TDD_Config_v1130 := v_EUTRA_CellSysInfo_Type.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1.nonCriticalExtension.nonCriticalExtension.nonCriticalExtension.tdd_Config_v1130; + } + + v_RadioResourceConfigCommon := cs_RadioResourceConfigCommon_AllParams_v1130(v_RadioResourceConfigCommonSIB, + cs_PRACH_Config_Def(v_RadioResourceConfigCommonSIB.prach_Config ), + v_Tdd_Configuration, + v_TDD_Config_v1130); + + return f_Generate_cs_MobilityControlInfo_HO(p_TargetCellId, + v_EUTRA_CarrierFreq, + v_RadioResourceConfigCommon, + v_EUTRA_CarrierBandwidth, + v_AdditionalSpectrumEmission); + } + + + + /* + * @desc REFERENCE TS 36.523-1 clause 7.1.3.12/12a + * @status + */ + function f_TC_7_1_3_12_Common (TDD_Config.specialSubframePatterns p_SpecialSubframePatterns, + TDD_Config_v1130.specialSubframePatterns_v1130 p_SpecialSubframePatterns_v1130, + UL_CyclicPrefixLength p_UL_CyclicPrefixLength) runs on EUTRA_PTC + { /* L2/MAC + * 7.1.3.12/12a : + */ + var Dl_Bandwidth_Type v_Dl_Bandwidth_Cell1; + var SubFrameTiming_Type v_Timing; + //var EUTRA_SecurityParams_Type v_Auth_Params := f_EUTRA_Security_Get(); + var octetstring v_EncodedPdcpPdu; + var octetstring v_EncodedRlcPdu; + // var template (value) DciDlInfoCommon_Type v_DciDlInfoCommon; + + timer t_Watchdog := 5.0; + + /////////////////////////////////////////////////////////////////////////////////// + // PREAMBLE + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_Init (c1); + + v_Dl_Bandwidth_Cell1 := f_EUTRA_CellInfo_GetDL_ChBandwidth(eutra_Cell1); + + //set specialSubframePatterns to ssp9 for normal cyclic prefix for cell 1 + f_EUTRA_CellInfo_SetSysInfo_TDD_Config_v1130(eutra_Cell1,p_SpecialSubframePatterns,p_SpecialSubframePatterns_v1130); + f_EUTRA_CellInfo_SetSysInfo_UL_CyclicPrefixLength(eutra_Cell1,p_UL_CyclicPrefixLength); + + f_EUTRA_CellConfig_Def (eutra_Cell1); + + // configure SS for TDD candidates selection in special sub frames + f_EUTRA_SS_CommonCellConfig(eutra_Cell1, cas_PhysicalLayerConfigDL_CcchDcchDtchDL_Config_REQ(eutra_Cell1, cs_TimingInfo_Now, cs_PhysicalLayerConfigDL_CCESpecialSubframe_TDD(v_Dl_Bandwidth_Cell1))); + + + f_EUTRA_Preamble (eutra_Cell1, STATE2A_TESTLOOP_ModeA); + + f_EUTRA_LoopBackActivation_State4_TA_Infinity_LB_NoScaling(); + + f_Delay(0.660); // 600 ms previous time alignment timer + + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set(true, layer2); + + f_SS_Config1TM_DRB_NoMACHeader(eutra_Cell1, tsc_RbId_DRB1, cs_MAC_TestMode_NoHeaderManipulationDLOnly); + + // configure SS for default UL grant allocation at SR reception but no automatic PUCCH synch as time alignment timer is infinit; + f_EUTRA_StartULGrantTransmissionOnSR_Reception_No_PUCCH_Sync(eutra_Cell1, cs_TimingInfo_Now, cs_DciInfo_CcchDcchDtchUL_Def); + + // to configure SS to report reception of HARQ ACK or NACK + f_SS_ConfigUL_HARQ_IndMode (eutra_Cell1, tsc_L1Mac_IndicationMode_Enable ); + + // to configure SS to report reception of SR + f_SS_ConfigSchedulingRequestIndMode(eutra_Cell1, tsc_L1Mac_IndicationMode_Enable); + + + + //@siclog "Steps 1" siclog@ + // The SS indicates a new transmission on PDCCH and transmits a MAC PDU in SF-Num 1 or 6 where the DwPTS belongs to. + // 13B PDCP SDU + 2B PDCP H + 2B RLC Header +1 B MAC SH = 18 B= 144 bits + v_EncodedPdcpPdu := f_PDCP_PDU_Encvalue (cs_PDCP_PDU_LongSN(cs_PDCP_DataPdu_LongSN(tsc_B12_SQN0, crs_PDCP_SDU_13B))); + v_EncodedRlcPdu := f_RLC_PDU_Encvalue (cs_RLC_AMD_1PDU(tsc_NoPoll, int2bit(0, 10),v_EncodedPdcpPdu )); + + f_EUTRA_SS_CommonCellConfig(eutra_Cell1, cas_CcchDcchDtchDL_Config_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_DciDLInfo_Explicit(cs_DciDlInfoExplicit(2,//Imcs=2,Nprb=3 + dci_1, + ra_0, + 8))));//N'prb, Nprb=max{floor(N'prb*0.375),1} + v_Timing := f_EUTRA_GetNextSendOccasion(eutra_Cell2); + + DRB.send (cas_DRB_COMMOM_REQ_MAC_PDU (eutra_Cell1, + tsc_RbId_DRB1, + cs_TimingInfo(v_Timing.SFN.Number, 1), + cs_MAC_PDUList_1 (cs_MAC_PDU_NoPadding_RLCPDU_LCID(tsc_LchId_DRB1, + v_EncodedRlcPdu)))); + + // prepare for sending status PDU to avoid any retransmissions + // MAC SH 2B(RLCSTATUS) + SH 1B(PADING) + RLC STATUS 2B + PADING 6B = 11B = 88bit + f_EUTRA_SS_CommonCellConfig(eutra_Cell1, cas_CcchDcchDtchDL_Config_REQ(eutra_Cell2, + cs_TimingInfo(v_Timing.SFN.Number, 4), + cs_DciDLInfo_Explicit(cs_DciDlInfoExplicit(1,//Imcs=1,Nprb=3 + dci_1, + ra_0, + 8))));//N'prb, Nprb=max{floor(N'prb*0.375),1} + + //@siclog "Step 2" siclog@ + //Check: Does the UE transmit a HARQ ACK? + t_Watchdog.start; + SYSIND.receive ( car_UL_HARQ_IND (eutra_Cell1, ?, ack )); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 2"); + + //@siclog "Step 3" siclog@ + //The UE transmits a Scheduling Request on PUCCH + SYSIND.receive ( car_SchedulingReq_IND (eutra_Cell1, ?)); + + //@siclog "Step 4" siclog@ + //The SS sends an UL grant suitable for the loop back PDU to be transmitted + + //@siclog "Step 5" siclog@ + //The UE transmits a MAC PDU containing the loop back PDU corresponding to step 1 + DRB.receive (car_DRB_COMMON_IND_RLC_PDUList (eutra_Cell2, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_RLC_AMD_1PDU(?, int2bit(0, 10), v_EncodedPdcpPdu)})); + t_Watchdog.stop; + + //SS will schedule this in SSF only and tranmsits in sub frame 1 or 6 + f_RLC_Status_PDU_Tx (tsc_LchId_DRB1, 1, eutra_Cell1, cs_TimingInfo_SubFrame(6)); + + + + f_EUTRA_TestBody_Set(false); + //test body ends + + /////////////////////////////////////////////////////////////////////////////////// + // Post Amble + ////////////////////////////////////////////////////////////////////////////////// + // configure SS in normal DL grant transmission + f_SS_Config1TM_DRB_NoMACHeader(eutra_Cell1, tsc_RbId_DRB1,cs_MAC_TestMode_NormalMode); + f_SS_ConfigUL_HARQ_IndMode (eutra_Cell1, tsc_L1Mac_IndicationMode_Disable ); + f_SS_ConfigSchedulingRequestIndMode(eutra_Cell1, tsc_L1Mac_IndicationMode_Disable); + f_EUTRA_SS_CommonCellConfig(eutra_Cell1, + cas_CcchDcchDtchDL_Config_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_DciDLInfo_Auto(cs_DciInfo_CcchDcchDtchDL(v_Dl_Bandwidth_Cell1)))); + + // Release RRC Connection and Switch off + f_EUTRA_Postamble ( eutra_Cell1, E3_TESTMODE ); + }; + +/* + * @desc REFERENCE TS 36.523-1 clause 7.1.3.12 + * @status + */ + function f_TC_7_1_3_12_EUTRA ( ) runs on EUTRA_PTC + { /* L2/MAC + * 7.1.3.12 : TDD additional special subframe configuration / Special subframe pattern 9 with Normal Cyclic Prefix / CRS based transmission scheme + */ + f_TC_7_1_3_12_Common(ssp5, ssp9,len1) + }; + + /* + * @desc REFERENCE TS 36.523-1 clause 7.1.3.12a + * @status + */ + function f_TC_7_1_3_12a_EUTRA ( ) runs on EUTRA_PTC + { /* L2/MAC + * 7.1.3.12a : TDD additional special subframe configuration / Special subframe pattern 7 with Extended Cyclic Prefix / CRS based transmission scheme + */ + f_TC_7_1_3_12_Common(ssp4, ssp7, len2) + }; + +//============================================================================================================================================= + +//===================================================================================================== +//template and function +//====================================================================================================== + template (value) AntennaInfoDedicated cs_AntennaInfoDedicated_TransmissionMode(AntennaInfoDedicated.transmissionMode p_TransmissionMode) := + { /* @status */ + transmissionMode := p_TransmissionMode, + codebookSubsetRestriction := omit, + ue_TransmitAntennaSelection := { + release := NULL + } + }; + + template (value) PhysicalConfigDedicated_AntennaInfo_Type cs_PhysicalConfigDedicated_AntennaInfo_TransmissionMode(AntennaInfoDedicated.transmissionMode p_TransmissionMode) := + { /* @status ) */ + explicitValue := cs_AntennaInfoDedicated_TransmissionMode(p_TransmissionMode) + }; + + template (value) DownlinkAntennaGroupConfig_Type cs_DownlinkAntennaGroupConfig (template (value) AntennaInfoCommon p_AntennaInfoCommon, + AntennaPortId_Type p_AntennaPortId_Type):= + { /* @status */ + AntennaInfoCommon := cs_AntennaInfoCommon_r8(p_AntennaInfoCommon), + AntennaPort := { + cs_AntennaPort_Configure(p_AntennaPortId_Type) + } + }; + + /* + * @desc Assign the CellInformation of the parameterized cell to the specific TM + * @param p_CellId + * @status + */ + function f_EUTRA_CellInfo_SetAntennaInfo (EUTRA_CellId_Type p_CellId, + AntennaInfoDedicated.transmissionMode p_TransmissionMode) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + // Update the antenna information in the cell Array + v_CellInfo.AntennaInfo.SS_AntennaInfoDedicated := cs_AntennaInfoDedicated_TransmissionMode(p_TransmissionMode); + v_CellInfo.AntennaInfo.AntennaInfoDedicated := cs_PhysicalConfigDedicated_AntennaInfo_TransmissionMode(p_TransmissionMode); + + f_EUTRA_CellInfo_Set(p_CellId, v_CellInfo); + } + + + /* + * @desc To move to state 4 as required for test case 7.1.3.13 + * @param p_PDCP_StatusReportRequired (default value: true) + * @param p_DRB_ToAddModList (default value: omit) + * @param p_SS_AntennaInfoCommon + * @param p_AntennaPortId_Type + * @status + */ + function f_EUTRA_LoopBackActivation_State4_TA_Infinity_LB_NoScaling_AntennaInfo_ExplicitValue(boolean p_PDCP_StatusReportRequired := true , + template (omit) DRB_ToAddModList p_DRB_ToAddModList := omit, + template (value) AntennaInfoCommon p_SS_AntennaInfoCommon, + AntennaPortId_Type p_AntennaPortId_Type) + runs on EUTRA_PTC + { + var template (omit) MAC_MainConfig_Type v_MAC_MainConfig := cs_MAC_MainConfig_Explicit_DisableBSR_TA_Infinity; // time alignment timer is infinity + var template (omit) PhysicalConfigDedicated v_PhysicalConfigDedicated := omit; + var template (omit) DRB_ToAddModList v_DRB_ToAddModList:= p_DRB_ToAddModList; + + f_EUTRA_GenericRbEst_DisableBSR_PHR(eutra_Cell1, + 0, + 0, + v_DRB_ToAddModList, + v_MAC_MainConfig, + v_PhysicalConfigDedicated, + omit, + omit, + p_PDCP_StatusReportRequired, + cs_DownlinkAntennaGroupConfig(p_SS_AntennaInfoCommon, p_AntennaPortId_Type)); // bring UE to State 3 + + f_EUTRA_CloseUE_TestLoopModeA(eutra_Cell1, cs_UE_TestLoopModeA_LB_Setup_NoScaling); // Step 1-2 + } + + /* + * @desc REFERENCE TS 36.523-1 clause 7.1.3.13/13a + * @status + */ + function f_TC_7_1_3_13_Common (TDD_Config.specialSubframePatterns p_SpecialSubframePatterns, + TDD_Config_v1130.specialSubframePatterns_v1130 p_SpecialSubframePatterns_v1130, + UL_CyclicPrefixLength p_UL_CyclicPrefixLength, + AntennaInfoDedicated.transmissionMode p_TransmissionMode, + AntennaPortId_Type p_AntennaPortId_Type) runs on EUTRA_PTC + { /* L2/MAC + * TDD additional special subframe configuration / Special subframe pattern 9/7 / UE-specific reference signals based transmission scheme + */ + var Dl_Bandwidth_Type v_Dl_Bandwidth_Cell1; + var SubFrameTiming_Type v_Timing; + //var EUTRA_SecurityParams_Type v_Auth_Params := f_EUTRA_Security_Get(); + var octetstring v_EncodedPdcpPdu; + var octetstring v_EncodedRlcPdu; + var EUTRA_CellInfo_Type v_CellInfo_Cell1; + // var template (value) DciDlInfoCommon_Type v_DciDlInfoCommon; + + timer t_Watchdog := 5.0; + + /////////////////////////////////////////////////////////////////////////////////// + // PREAMBLE + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_Init (c1); + + v_Dl_Bandwidth_Cell1 := f_EUTRA_CellInfo_GetDL_ChBandwidth(eutra_Cell1); + + + //set specialSubframePatterns to ssp9 for normal cyclic prefix for cell 1 + f_EUTRA_CellInfo_SetSysInfo_TDD_Config_v1130(eutra_Cell1,p_SpecialSubframePatterns,p_SpecialSubframePatterns_v1130); + f_EUTRA_CellInfo_SetSysInfo_UL_CyclicPrefixLength(eutra_Cell1,p_UL_CyclicPrefixLength); + + f_EUTRA_CellConfig_Def (eutra_Cell1); + + // configure SS for TDD candidates selection in special sub frames + f_EUTRA_SS_CommonCellConfig(eutra_Cell1, cas_PhysicalLayerConfigDL_CcchDcchDtchDL_Config_REQ(eutra_Cell1, cs_TimingInfo_Now, cs_PhysicalLayerConfigDL_CCESpecialSubframe_TDD(v_Dl_Bandwidth_Cell1))); + + v_CellInfo_Cell1 := f_EUTRA_CellInfo_Get(eutra_Cell1); + + f_EUTRA_Preamble (eutra_Cell1, STATE2A_TESTLOOP_ModeA); + + f_EUTRA_CellInfo_SetAntennaInfo(eutra_Cell1,p_TransmissionMode); + + //f_EUTRA_SS_CommonCellConfig(eutra_Cell1, cas_PhysicalLayerConfigDL_CcchDcchDtchDL_Config_REQ(eutra_Cell1, cs_TimingInfo_Now, cs_PhysicalLayerConfigDL_AntennaInfo(cs_DownlinkAntennaGroupConfig(v_CellInfo_Cell1.AntennaInfo.SS_AntennaInfoCommon, 5)))); + + f_EUTRA_LoopBackActivation_State4_TA_Infinity_LB_NoScaling_AntennaInfo_ExplicitValue(-, -, v_CellInfo_Cell1.AntennaInfo.SS_AntennaInfoCommon, p_AntennaPortId_Type); + + f_Delay(0.660); // 600 ms previous time alignment timer + + /////////////////////////////////////////////////////////////////////////////////// + // Test Body + ////////////////////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set(true, layer2); + + f_SS_Config1TM_DRB_NoMACHeader(eutra_Cell1, tsc_RbId_DRB1, cs_MAC_TestMode_NoHeaderManipulationDLOnly); + + // configure SS for default UL grant allocation at SR reception but no automatic PUCCH synch as time alignment timer is infinit; + f_EUTRA_StartULGrantTransmissionOnSR_Reception_No_PUCCH_Sync(eutra_Cell1, cs_TimingInfo_Now, cs_DciInfo_CcchDcchDtchUL_Def); + + // to configure SS to report reception of HARQ ACK or NACK + f_SS_ConfigUL_HARQ_IndMode (eutra_Cell1, tsc_L1Mac_IndicationMode_Enable ); + + // to configure SS to report reception of SR + f_SS_ConfigSchedulingRequestIndMode(eutra_Cell1, tsc_L1Mac_IndicationMode_Enable); + + //@siclog "Steps 1" siclog@ + // The SS indicates a new transmission on PDCCH and transmits a MAC PDU in SF-Num 1 or 6 where the DwPTS belongs to. + // 13B PDCP SDU + 2B PDCP H + 2B RLC Header +1 B MAC SH = 18 B= 144 bits + v_EncodedPdcpPdu := f_PDCP_PDU_Encvalue (cs_PDCP_PDU_LongSN(cs_PDCP_DataPdu_LongSN(tsc_B12_SQN0, crs_PDCP_SDU_13B))); + v_EncodedRlcPdu := f_RLC_PDU_Encvalue (cs_RLC_AMD_1PDU(tsc_NoPoll, int2bit(0, 10),v_EncodedPdcpPdu )); + + f_EUTRA_SS_CommonCellConfig(eutra_Cell1, cas_CcchDcchDtchDL_Config_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_DciDLInfo_Explicit(cs_DciDlInfoExplicit(2,//Imcs=2,Nprb=3 + dci_2B, + ra_0, + 8))));//N'prb, Nprb=max{floor(N'prb*0.375),1} + v_Timing := f_EUTRA_GetNextSendOccasion(eutra_Cell1); + + DRB.send (cas_DRB_COMMOM_REQ_MAC_PDU (eutra_Cell1, + tsc_RbId_DRB1, + cs_TimingInfo(v_Timing.SFN.Number, 1), + cs_MAC_PDUList_1 (cs_MAC_PDU_NoPadding_RLCPDU_LCID(tsc_LchId_DRB1, + v_EncodedRlcPdu)))); + + // prepare for sending status PDU to avoid any retransmissions + // MAC SH 2B(RLCSTATUS) + SH 1B(PADING) + RLC STATUS 2B + PADING 6B = 11B = 88bit + f_EUTRA_SS_CommonCellConfig(eutra_Cell1, cas_CcchDcchDtchDL_Config_REQ(eutra_Cell1, + cs_TimingInfo(v_Timing.SFN.Number, 4), + cs_DciDLInfo_Explicit(cs_DciDlInfoExplicit(1,//Imcs=1,Nprb=3 + dci_2B, + ra_0, + 8))));//N'prb, Nprb=max{floor(N'prb*0.375),1} + + //@siclog "Step 2" siclog@ + //Check: Does the UE transmit a HARQ ACK? + t_Watchdog.start; + SYSIND.receive ( car_UL_HARQ_IND (eutra_Cell1, ?, ack )); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 2"); + + //@siclog "Step 3" siclog@ + //The UE transmits a Scheduling Request on PUCCH + SYSIND.receive ( car_SchedulingReq_IND (eutra_Cell1, ?)); + + //@siclog "Step 4" siclog@ + //The SS sends an UL grant suitable for the loop back PDU to be transmitted + + //@siclog "Step 5" siclog@ + //The UE transmits a MAC PDU containing the loop back PDU corresponding to step 1 + DRB.receive (car_DRB_COMMON_IND_RLC_PDUList (eutra_Cell1, + tsc_RbId_DRB1, + cr_TimingInfo_Any, + {cr_RLC_AMD_1PDU(?, int2bit(0, 10), v_EncodedPdcpPdu)})); + t_Watchdog.stop; + + //SS will schedule this in SSF only and tranmsits in sub frame 1 or 6 + f_RLC_Status_PDU_Tx (tsc_LchId_DRB1, 1, eutra_Cell1, cs_TimingInfo_SubFrame(6)); + + + + f_EUTRA_TestBody_Set(false); + //test body ends + + /////////////////////////////////////////////////////////////////////////////////// + // Post Amble + ////////////////////////////////////////////////////////////////////////////////// + f_SS_Config1TM_DRB_NoMACHeader(eutra_Cell1, tsc_RbId_DRB1,cs_MAC_TestMode_NormalMode); + f_SS_ConfigUL_HARQ_IndMode (eutra_Cell1, tsc_L1Mac_IndicationMode_Disable ); + f_SS_ConfigSchedulingRequestIndMode(eutra_Cell1, tsc_L1Mac_IndicationMode_Disable); + // configure SS in normal DL grant transmission + f_EUTRA_SS_CommonCellConfig(eutra_Cell1, + cas_CcchDcchDtchDL_Config_REQ(eutra_Cell2, + cs_TimingInfo_Now, + cs_DciDLInfo_Auto(cs_DciInfo_CcchDcchDtchDL(v_Dl_Bandwidth_Cell1)))); + + // Release RRC Connection and Switch off + f_EUTRA_Postamble ( eutra_Cell1, E3_TESTMODE );//@sic R5-103875 sic@; + }; + + /* + * @desc REFERENCE TS 36.523-1 clause 7.1.3.13 + * @status + */ + function f_TC_7_1_3_13_EUTRA ( ) runs on EUTRA_PTC + { /* L2/MAC + * 7.1.3.13 : TDD additional special subframe configuration / Special subframe pattern 9 with Normal Cyclic Prefix / UE-specific reference signals based transmission scheme + */ + f_TC_7_1_3_13_Common(ssp5, ssp9,len1,tm8_v920,5) + }; + + /* + * @desc REFERENCE TS 36.523-1 clause 7.1.3.13a + * @status + */ + function f_TC_7_1_3_13a_EUTRA ( ) runs on EUTRA_PTC + { /* L2/MAC + * 7.1.3.13a : TDD additional special subframe configuration / Special subframe pattern 7 with Extended Cyclic Prefix / UE-specific reference signals based transmission scheme + */ + f_TC_7_1_3_13_Common(ssp4, ssp7, len2, tm7, 7) + }; + +} diff --git a/LTE_A_IWD_14wk37/LTE_A/7_3/PDCP_A_Security.ttcn b/LTE_A_IWD_14wk37/LTE_A/7_3/PDCP_A_Security.ttcn new file mode 100644 index 0000000..b6cc3ca --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/7_3/PDCP_A_Security.ttcn @@ -0,0 +1,58 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-07-28 11:18:29 +0200 (Sun, 28 Jul 2013) $ +// $Rev: 9194 $ +/******************************************************************************/ +module PDCP_A_Security { + + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_Component all; + import from CommonDefs all; + + import from EUTRA_PdcpScurityProcedure all; + + //========================================================== + // L2/PDCP/ZUC Algorithm + //========================================================== + /* + * @desc REFERENCE TS 36.523-1 clause 7.3.3.5 + * @status APPROVED (LTE_A) + */ + function f_TC_7_3_3_5_EUTRA ( ) runs on EUTRA_PTC + { /* L2/PDCP/ + * 7.3.3.5 : Ciphering and deciphering / Correct functionality of EPS AS encryption algorithms / ZUC + */ + f_EUTRA_PdcpScurityProcedure_EncryptionAS(eutra_Cell1, eea3_v1130); // set ZUC as Ciphering algorithm + } + + /* + * @desc REFERENCE TS 36.523-1 clause 7.3.3.6 + * @status APPROVED (LTE_A) + */ + function f_TC_7_3_3_6_EUTRA ( ) runs on EUTRA_PTC + { /* L2/PDCP/ + * 7.3.3.4 : Ciphering and deciphering / Correct functionality of EPS UP encryption algorithms / ZUC + */ + f_EUTRA_PdcpScurityProcedure_EncryptionUP (eutra_Cell1, eea3_v1130); // set ZUC as Ciphering algorithm + } + + //========================================================== + // L2/PDCP/ZUC Algorithm + //========================================================== + /* + * @desc REFERENCE TS 36.523-1 clause 7.3.4.3 + * @status APPROVED (LTE_A) + */ + function f_TC_7_3_4_3_EUTRA ( ) runs on EUTRA_PTC + { /* L2/PDCP/ + * 7.3.4.3 : Integrity protection / Correct functionality of EPS AS integrity algorithms / ZUC + */ + f_EUTRA_PdcpScurityProcedure_Integrity(eutra_Cell1, eia3_v1130); //set ZUC as integrity algorithm. + } + +} diff --git a/LTE_A_IWD_14wk37/LTE_A/8_1/RRC_Paging_A.ttcn b/LTE_A_IWD_14wk37/LTE_A/8_1/RRC_Paging_A.ttcn new file mode 100644 index 0000000..de68841 --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/8_1/RRC_Paging_A.ttcn @@ -0,0 +1,116 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-06-07 23:45:32 +0200 (Sat, 07 Jun 2014) $ +// $Rev: 11666 $ +/******************************************************************************/ + +module RRC_Paging_A +{ + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_Component all; + import from EUTRA_CellInfo all; + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from EUTRA_RRC_Templates all; + import from EUTRA_CommonProcedures all; + import from EPS_NAS_Constants all; + import from EPS_NAS_Templates all; + import from EPS_NAS_MsgContainers all; + import from EUTRA_RRCSteps all; + import from EUTRA_ConfigurationSteps all; + import from UpperTesterFunctions all; + import from EUTRA_Paging all; + import from EUTRA_SysInfo_Templates all; + + //============================================================================ + + // SIB14 modified default configuration + + template (value) EAB_Config_r11 cs_EAB_Config_EabClass0 := + { // Acc. to 36.508 Table 4.4.3.3-13A:SystemInformationBlockType14 + eab_Category_r11 := a, + eab_BarringBitmap_r11 := '1000000000'B + }; + + template (value) SystemInformationBlockType14_r11 cds_SystemInformationBlockType14_EabClass0 + modifies cs_SystemInformationBlockType14_Def:= + { // Acc. to 36.508 Table 4.4.3.3-13A:SystemInformationBlockType14 + eab_Param_r11 := { + eab_Common_r11 := cs_EAB_Config_EabClass0 + }, + lateNonCriticalExtension := omit + }; + + /*=========================================================================================== + * @desc Test case 8.1.1.7 RRC / RRC / Paging for connection in idle mode + * @status + */ + function f_TC_8_1_1_7_EUTRA() runs on EUTRA_PTC + { + var NAS_MSG_Indication_Type v_NasInd; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + + //(1)System information combination including SIB14 as defined in TS 36.508[18] + f_EUTRA_Init(c21); // @sic R5-140959 sic@ + + // Modified sib14 according Table Table 8.1.1.7.3-1: SystemInformationBlockType14 + f_EUTRA_CellInfo_SetSIB14(eutra_Cell1, cds_SystemInformationBlockType14_EabClass0); + + //Create and configure all cells + f_EUTRA_CellConfig_Def(eutra_Cell1); + + //Equip UE with a USIM containing default values except for those shown in TC8.1.1.7 + f_UT_USIM_Insert(UT, "36.523-1 Table 8.1.1.7.3-1. USIM must be configured for Access Class 0");// @sic R5-140959 sic@ + + //Bring UE to initial state + f_EUTRA_Preamble(eutra_Cell1, STATE2_IDLEUPDATE); + + f_EUTRA_TestBody_Set(true); + + + //@siclog "Step 1" siclog@ + f_Delay(15.0); // Wait for 15s for the UE to receive system information + + //@siclog "Step 2" siclog@ + f_EUTRA_UE_Page_Def(eutra_Cell1); + + //@siclog "Step 3" siclog@ + //Receive RRCConnectionRequest + f_EUTRA_RRC_ConnectionRequest_Def(eutra_Cell1, cr_EstablishmentCause_mt_Access); + + //* @verdict pass RRCConnectionRequest received + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.1.1.7 Step 3"); + + //@siclog "Step 4" siclog@ + //Transmit RRCConnectionSetup + f_EUTRA_RRC_ConnectionSetup_Def(eutra_Cell1); + + //@siclog "Step 5" siclog@ + //Receive RRCConnectionSetupComplete + v_NasInd := f_EUTRA_RRCConnectionSetupComplete_Def(eutra_Cell1, + cr_508_RRCConnectionSetupComplete(v_RRC_TI, ?), + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_508_SERVICE_REQUEST(f_EUTRA_SecurityKSIasme_Get()))); + //* @verdict pass RRCConnectionSetupComplete received + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.1.1.7 Step 5"); + + //@siclog "Step 6-9" siclog@ + //Steps 6 to 9 of the generic radio bearer establishment procedure (TS 36.508 4.5.3.3-1) are executed to successfully complete the service request procedure. + f_EUTRA_ServiceReqPostamble_508Steps6_9( eutra_Cell1, v_NasInd); + + //@siclog "Step 10" siclog@ + //Check RRC_Connected state + f_EUTRA_508Check_ConnectedState(eutra_Cell1); + + f_EUTRA_TestBody_Set(false); + + //Switch/power off UE + f_EUTRA_Postamble(eutra_Cell1, E2_CONNECTED); + + }//end of f_TC_8_1_1_7_EUTRA +} diff --git a/LTE_A_IWD_14wk37/LTE_A/8_2/RRC_ConnReconfig_A.ttcn b/LTE_A_IWD_14wk37/LTE_A/8_2/RRC_ConnReconfig_A.ttcn new file mode 100644 index 0000000..ad1a6a9 --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/8_2/RRC_ConnReconfig_A.ttcn @@ -0,0 +1,758 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-06-09 08:48:39 +0200 (Mon, 09 Jun 2014) $ +// $Rev: 11673 $ +/******************************************************************************/ +module RRC_ConnReconfig_A +{ + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from CommonDefs all; + import from UpperTesterFunctions all; + import from EUTRA_Component all; + import from EUTRA_CommonProcedures all; + import from EUTRA_ConfigurationSteps all; + import from EUTRA_Measurement_Templates all; + import from EUTRA_BandDependentParam all; + import from EUTRA_CellInfo all; + import from EUTRA_RRCSteps all; + import from EUTRA_RRC_Templates all; + import from EUTRA_SecuritySteps all; + import from EUTRA_CommonDefs all; + import from EUTRA_Timing all; + import from EUTRA_SRB_Templates all; + import from EUTRA_AspCommon_Templates all; + import from EUTRA_CellCfg_Templates all; + import from EUTRA_RRCSteps all; + import from EUTRA_NASSteps all; + + //Receive UEAssistanceInformation containing a value (normal, lowPowerConsumption) + template (present) UL_DCCH_Message cr_508_UeAssistanceInformation( + template(present) UEAssistanceInformation_r11.criticalExtensions.c1.ueAssistanceInformation_r11.powerPrefIndication_r11 p_PowerPrefIndication) := + { + message_ := { + messageClassExtension := { + c2 := { + ueAssistanceInformation_r11 := { + criticalExtensions := { + c1 := { + ueAssistanceInformation_r11 := { + powerPrefIndication_r11 := p_PowerPrefIndication, + lateNonCriticalExtension := omit, + nonCriticalExtension := omit + } + } + } + } + } + } + } + }; + + + //Template to update the powerPrefIndicationConfig timer on setup mode + template (value) RRCConnectionReconfiguration_v920_IEs cs_RRCConnectionReconfiguration_PowerPrefIndicationConfig_Setup(template (value) PowerPrefIndicationConfig_r11.setup.powerPrefIndicationTimer_r11 p_PowerPrefIndicationTimer_r11) := + { + otherConfig_r9 := { + reportProximityConfig_r9 := omit, + idc_Config_r11 := omit, + powerPrefIndicationConfig_r11 := { + setup := { + powerPrefIndicationTimer_r11 := p_PowerPrefIndicationTimer_r11 + } + }, + obtainLocationConfig_r11 := omit + }, + fullConfig_r9 := omit, + nonCriticalExtension := omit + }; + + //Template to release the PowerPrefIndication Feature + template (value) RRCConnectionReconfiguration_v920_IEs cs_PowerPrefIndicationConfig_r11_Release := + { + otherConfig_r9 := { + reportProximityConfig_r9 := omit, + idc_Config_r11 := omit, + powerPrefIndicationConfig_r11 := { + release := NULL + }, + obtainLocationConfig_r11 := omit + }, + fullConfig_r9 := omit, + nonCriticalExtension := omit + }; + + + template (value) RRCConnectionReconfiguration_v890_IEs cs_RRCConnectionReconfiguration_v890_IEs (template (value) RRCConnectionReconfiguration_v920_IEs p_RRCConnectionReconfiguration_v920_IEs):= + { + lateNonCriticalExtension := omit, + nonCriticalExtension := p_RRCConnectionReconfiguration_v920_IEs + }; + + + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_v890(RRC_TransactionIdentifier p_RRC_TI, + template (value) RRCConnectionReconfiguration_v920_IEs p_RRCConnectionReconfiguration_v920_IEs ) := + cs_RRCConnectionReconfiguration_Common( p_RRC_TI, omit, omit, omit, omit, + cs_RRCConnectionReconfiguration_v890_IEs(p_RRCConnectionReconfiguration_v920_IEs)); + + + template (value) DL_DCCH_Message cs_508_RRCConnectionReconfiguration_ConditionMEAS_PowerPreferenceIndication( + RRC_TransactionIdentifier p_RRC_TI, + template (value) MeasConfig p_MeasConfig, + template (value) RRCConnectionReconfiguration_v920_IEs p_RRCConnectionReconfiguration_v920_IEs ) := + cs_RRCConnectionReconfiguration_Common( p_RRC_TI, p_MeasConfig, omit, omit, omit, cs_RRCConnectionReconfiguration_v890_IEs(p_RRCConnectionReconfiguration_v920_IEs )); + + + //------------------------------------------------ + //TC8.2.2.6.2, Step1 + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_8_2_2_6_2_Step1(RRC_TransactionIdentifier p_RRC_TI, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq, + AllowedMeasBandwidth p_MeasurementBandwidth, + PowerPrefIndicationConfig_r11.setup.powerPrefIndicationTimer_r11 p_PowerPrefIndicationTimer + ) := + cs_508_RRCConnectionReconfiguration_ConditionMEAS_PowerPreferenceIndication(p_RRC_TI, + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_1Entry(tsc_IdMeasObject_f1, + cs_508_MeasObjectEUTRA_GENERIC(p_EUTRA_DL_CarrierFreq, p_MeasurementBandwidth)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_A3, + cs_508_ReportConfigEUTRA_A3), + omit, + cs_MeasIdToAddModList_1Entry(1, tsc_IdMeasObject_f1, tsc_IdReportConfig_A3)), + cs_RRCConnectionReconfiguration_PowerPrefIndicationConfig_Setup(p_PowerPrefIndicationTimer)); + + //------------------------------------------------ + //TC8.2.2.6.2, Step8 + template (present) UL_DCCH_Message cr_MeasurementReport_8_2_2_6_2_Step8(PhysCellId p_PhysCellId) := + cr_MeasurementReport(1, + ?, + ?, + cr_MeasResultNeighCells_measResultListEUTRA_1Entry(p_PhysCellId, omit,?, ?)); + + //TC8.2.2.6.2, Step16 + template (value) DL_DCCH_Message cs_RRCConnReconfig_Resume_SRB2_DRBs_ConfigurePowerPreferenceIndication(RRC_TransactionIdentifier p_RRC_TI, + template (omit) CQI_ReportPeriodic p_CQI_ReportingPeriodic, + template (omit) SoundingRS_UL_ConfigDedicated p_SoundingRsUl_ConfigDedicated, + template (value) PhysicalConfigDedicated_AntennaInfo_Type p_AntennaInfo, + SR_PUCCH_ResourceIndex_Type p_SR_PUCCH_ResourceIndex, + SR_ConfigIndex_Type p_SR_ConfigIndex, + template (omit) MeasConfig p_MeasConfig := omit, + template (omit) PUCCH_ConfigDedicated p_PUCCH_Config := omit, + PowerPrefIndicationConfig_r11.setup.powerPrefIndicationTimer_r11 p_PowerPrefIndicationTimer) := + cs_RRCConnectionReconfiguration_Common(p_RRC_TI, + p_MeasConfig, + omit, + cs_508_RadioResourceConfigDedicated_HO(p_PUCCH_Config, + p_CQI_ReportingPeriodic, + p_SoundingRsUl_ConfigDedicated, + p_AntennaInfo, + p_SR_PUCCH_ResourceIndex, + p_SR_ConfigIndex), + omit, + cs_RRCConnectionReconfiguration_v890_IEs(cs_RRCConnectionReconfiguration_PowerPrefIndicationConfig_Setup(p_PowerPrefIndicationTimer))); + + //--------------------------------------------------------------------------------------- + //TC8.2.2.8 + template (value) RRCConnectionReconfiguration_v920_IEs cs_RRCConnectionReconfiguration_v920_IEs(template (value) RRCConnectionReconfiguration_v1020_IEs p_RRCConnectionReconfiguration_v1020_IEs) := + { /* @status */ + otherConfig_r9 := omit, + fullConfig_r9 := omit, + nonCriticalExtension := p_RRCConnectionReconfiguration_v1020_IEs + }; + + template (value) RRCConnectionReconfiguration_v1020_IEs cs_RRCConnectionReconfiguration_v1020_IEs(template (value) RRCConnectionReconfiguration_v1130_IEs p_RRCConnectionReconfiguration_v1130_IEs) := + { /* @status */ + sCellToReleaseList_r10 := omit, + sCellToAddModList_r10 := omit, + nonCriticalExtension := p_RRCConnectionReconfiguration_v1130_IEs + }; + + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_v1130(RRC_TransactionIdentifier p_RRC_TI, + template (value) RRCConnectionReconfiguration_v1130_IEs p_RRCConnectionReconfiguration_v1130_IEs ) := + /* @status */ + cs_RRCConnectionReconfiguration_Common( p_RRC_TI, + omit, + omit, + omit, + omit, + cs_RRCConnectionReconfiguration_v890_IEs(cs_RRCConnectionReconfiguration_v920_IEs(cs_RRCConnectionReconfiguration_v1020_IEs(p_RRCConnectionReconfiguration_v1130_IEs)))); + + + + template (value) RRCConnectionReconfiguration_v1130_IEs cs_SystemInfomationBlockType1Dedicated_r11(template (value) octetstring p_SystemInfomationBlockType1Dedicated_r11) := + { /* @status */ + systemInfomationBlockType1Dedicated_r11 := p_SystemInfomationBlockType1Dedicated_r11, + nonCriticalExtension := omit + }; + + // Functions ********************************************************************************************** + /* + * @desc return the SystemInformationBlockType1 stored in EUTRA_CellInfo + * @param p_CellId + * @return SystemInformationBlockType1 + * @status + */ + function f_EUTRA_CellInfo_GetSIB1(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return template (value) SystemInformationBlockType1 + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + return v_CellInfo.Sysinfo.BCCH_Info.SIB1.message_.c1.systemInformationBlockType1; + } + + // Test Cases ********************************************************************************************** + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.2.6.1 + * @status + */ + function f_TC_8_2_2_6_1_EUTRA() runs on EUTRA_PTC + {/* @desc Test case 8.2.2.6.1 RRC connection reconfiguration/ UE Assistance Information/power preference indication setup and release */ + + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + //Table 8.2.2.6.1.3.3-2: OtherConfig-r9 (step 3, Table 8.2.2.6.1.3.2-1) + var PowerPrefIndicationConfig_r11.setup.powerPrefIndicationTimer_r11 v_PowerPrefIndicationTimer := s0; + + timer t_Wait5s := f_EUTRA_SetTimerToleranceMin(eutra_Cell1, nonProtocolTimer, 5.0); + + f_EUTRA_Init (c1); + + //Create and configure all cells + f_EUTRA_CellConfig_Def (eutra_Cell1); + + //Bring UE to initial state + f_EUTRA_Preamble (eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_RbEst_Def (eutra_Cell1); + + f_EUTRA_TestBody_Set (true); + + //@siclog "Step 1" siclog@ + //Cause the UE to send UEAssistanceInformation message indicating "lowPowerConsumption" + f_UT_PowerPreferenceIndication(UT); + + //@siclog "Step 2" siclog@ + //Check: Does the UE send a UEAssistanceInformation message within the next 5s? + t_Wait5s.start; + alt{ + [] SRB.receive (car_SRB1_RrcPdu_IND (eutra_Cell1, cr_508_UeAssistanceInformation (?))) + { + t_Wait5s.stop; + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Test Case 8.2.2.6.1 Step 2"); + } + [] t_Wait5s.timeout {} + } + + + //@siclog "Step 3" siclog@ + //The SS transmits an RRCConnectionReconfiguration message containing a otherConfig includes the powerPrefIndicationConfig set to Setup + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_RRCConnectionReconfiguration_v890(v_RRC_TI, cs_RRCConnectionReconfiguration_PowerPrefIndicationConfig_Setup(v_PowerPrefIndicationTimer)))); + + + //@siclog "Step 4" siclog@ + //The UE transmits an RRCConnectionReconfigurationComplete message + SRB.receive( car_SRB1_RrcPdu_IND( eutra_Cell1, cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + + + //@siclog "Step 5" siclog@ + //Cause the UE to send UEAssistanceInformation message indicating "lowPowerConsumption" + f_UT_PowerPreferenceIndication(UT); + + + //@siclog "Step 6" siclog@ + //Check: Does the UE transmit a UEAssistanceInformation message with powerPrefIndication set to lowPowerConsumption? + SRB.receive (car_SRB1_RrcPdu_IND (eutra_Cell1, cr_508_UeAssistanceInformation (lowPowerConsumption))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.2.2.6.1 Step 6"); + + + //@siclog "Step 7" siclog@ + //Cause the UE to send UEAssistanceInformation message indicating "lowPowerConsumption" + f_UT_PowerPreferenceIndication(UT); + + + //@siclog "Step 8" siclog@ + //Check: Does the UE send a UEAssistanceInformation message within the next 5s? + t_Wait5s.start; + alt{ + [] SRB.receive (car_SRB1_RrcPdu_IND (eutra_Cell1, cr_508_UeAssistanceInformation (?))) + { + t_Wait5s.stop; + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Test Case 8.2.2.6.1 Step 8"); + } + [] t_Wait5s.timeout {} + } + + + //@siclog "Step 9" siclog@ + //The SS transmits an RRCConnectionReconfiguration message containing a otherConfig includes the powerPrefIndicationConfig set to Release + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_RRCConnectionReconfiguration_v890(v_RRC_TI, cs_PowerPrefIndicationConfig_r11_Release))); + + + + //@siclog "Step 10" siclog@ + //The UE transmits an RRCConnectionReconfigurationComplete message + SRB.receive( car_SRB1_RrcPdu_IND( eutra_Cell1, cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + + //@siclog "Step 11" siclog@ + //Cause the UE to send UEAssistanceInformation message indicating "normal" + f_UT_PowerPreferenceIndication(UT,'0'B); + + + //@siclog "Step 12" siclog@ + //Check: Does the UE send a UEAssistanceInformation message within the next 5s? + t_Wait5s.start; + alt{ + [] SRB.receive (car_SRB1_RrcPdu_IND (eutra_Cell1, cr_508_UeAssistanceInformation (?))) + { + t_Wait5s.stop; + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Test Case 8.2.2.6.1 Step 12"); + } + [] t_Wait5s.timeout {} + } + + + //@siclog "Step 13" siclog@ + //Cause the UE to send UEAssistanceInformation message indicating "lowPowerConsumption". + f_UT_PowerPreferenceIndication(UT); + + //@siclog "Step 14" siclog@ + //Check: Does the UE send a UEAssistanceInformation message within the next 5s? + t_Wait5s.start; + alt{ + [] SRB.receive (car_SRB1_RrcPdu_IND (eutra_Cell1, cr_508_UeAssistanceInformation (?))) + { + t_Wait5s.stop; + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Test Case 8.2.2.6.1 Step 14"); + } + [] t_Wait5s.timeout {} + } + + + f_EUTRA_TestBody_Set (false); + + //Switch/power off UE + f_EUTRA_Postamble (eutra_Cell1, E2_CONNECTED); + }//end of TC8.2.2.6.1 + + + + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.2.6.2 + * @status + */ + function f_TC_8_2_2_6_2_EUTRA() runs on EUTRA_PTC + {/* @desc Test case 8.2.2.6.2 RRC connection reconfiguration/ UE Assistance Information/power preference indication release on connection re-establishment */ + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var template (value) CellPowerList_Type v_CellPowerList_AtT0, v_CellPowerList_AtT1, v_CellPowerList_AtT2; + var template (value) EUTRA_FDD_TDD_CellInfo_Type v_EUTRA_FDD_TDD_CellInfo_Cell1; + var template (value) PhysicalConfigDedicated_AntennaInfo_Type v_AntennaInfo_Cell1; + var SR_PUCCH_ResourceIndex_Type v_SR_PUCCH_ResourceIndex_Cell1 := f_EUTRA_CellInfo_GetSR_PUCCH_ResourceIndex (eutra_Cell1); + var SR_ConfigIndex_Type v_SR_ConfigIndex_Cell1 := f_EUTRA_CellInfo_GetSR_ConfigIndex (eutra_Cell1); + var NextHopChainingCount v_Ncc2 := 2; + var ShortMAC_I v_ShortMAC_I; + + var PhysCellId v_PhysCellId_Cell1, v_PhysCellId_Cell3; + var Frequency_IE_Type v_Frequency_IE_Cell3; + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell3; + //Table 8.2.2.6.2.3.3-1: OtherConfig-r9 + var PowerPrefIndicationConfig_r11.setup.powerPrefIndicationTimer_r11 v_PowerPrefIndicationTimer := s600; + + var float v_T600 := 600.0; + var float v_T304 := f_EUTRA_SetTimerToleranceMax(eutra_Cell3, rrcTimer, 1.0); //According to 36.508 cl. 4.6.5 Table 4.6.5-1 + var float v_T340 := f_EUTRA_SetTimerToleranceMax ( eutra_Cell1, rrcTimer, v_T600 ); //s600 + + timer t_T304; + timer t_T340; + + v_CellPowerList_AtT0 := { + cs_CellPower (eutra_Cell1, tsc_ServingCellRS_EPRE), + cs_CellPower (eutra_Cell3, tsc_Suitable_NeighbourIntraFreq_CellRS_EPRE) + }; + v_CellPowerList_AtT1 := { + cs_CellPower (eutra_Cell3, -79) + }; + v_CellPowerList_AtT2 := { + cs_CellPower (eutra_Cell3, tsc_NonSuitableOffCellRS_EPRE) + }; + + + f_EUTRA_Init (c2); + + v_PhysCellId_Cell1 := f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell1); + v_PhysCellId_Cell3 := f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell3); + v_Frequency_IE_Cell3 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell3); + v_ChBandDependency_Cell3 := f_EUTRA_BandDependentParam(v_Frequency_IE_Cell3.DL_ChBandwidth, v_Frequency_IE_Cell3.UL_ChBandwidth); + v_EUTRA_FDD_TDD_CellInfo_Cell1 := f_EUTRA_CellInfo_GetFDD_TDD_Info (eutra_Cell1); + v_AntennaInfo_Cell1 := f_EUTRA_CellInfo_GetAntennaInfoDedicated (eutra_Cell1); + + + //Create and configure all cells + f_EUTRA_CellConfig_Def (eutra_Cell1); + f_EUTRA_CellConfig_Def (eutra_Cell3); + + //Bring UE to initial state + f_EUTRA_Preamble (eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_RbEst_Def (eutra_Cell1); + + //Set initial cell power levels + f_EUTRA_SetCellPowerList (v_CellPowerList_AtT0); + + f_EUTRA_TestBody_Set (true); + + //@siclog "Step 1" siclog@ + //The SS transmits an RRCConnectionReconfiguration message to setup intra frequency measurement on Cell 1 & to + //configure power preference indication. + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(eutra_Cell1, + cs_RRCConnectionReconfiguration_8_2_2_6_2_Step1(v_RRC_TI, + v_Frequency_IE_Cell3.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell3.AllowedMeasBandwidth, + v_PowerPrefIndicationTimer)); + + //@siclog "Step 2" siclog@ + //The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1 + SRB.receive( car_SRB1_RrcPdu_IND( eutra_Cell1, cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + + //@siclog "Step 3" siclog@ + //Cause the UE to send UEAssistanceInformation message indicating "lowPowerConsumption". (Note1). + f_UT_PowerPreferenceIndication(UT); + + //@siclog "Step 4" siclog@ + //UE transmits UEAssistanceInformation message with powerPrefIndication IE set to lowPowerConsumption + SRB.receive (car_SRB1_RrcPdu_IND (eutra_Cell1, cr_508_UeAssistanceInformation (lowPowerConsumption))); + + //@siclog "Step 5" siclog@ + //Cause the UE to send UEAssistanceInformation message indicating "normal" (Note2). + f_UT_PowerPreferenceIndication(UT,'0'B); + + + //@siclog "Step 6" siclog@ + //UE transmits UEAssistanceInformation message with powerPrefIndication IE set to normal + //and starts timer T340 with the timer value set to the powerPrefIndicationTimer. + SRB.receive (car_SRB1_RrcPdu_IND (eutra_Cell1, cr_508_UeAssistanceInformation (normal))); + t_T340.start(v_T340); + + + //@siclog "Step 7" siclog@ + //The SS changes Cell 1 and Cell 3 parameters according to the row "T1" in table 8.2.2.6.2.3.2-1 + f_EUTRA_SetCellPowerList (v_CellPowerList_AtT1); + + //@siclog "Step 8" siclog@ + //The UE transmits a MeasurementReport message on Cell 1 to report event A3 with the measured RSRP, + //RSRQ value for Cell 3 + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, + cr_MeasurementReport_8_2_2_6_2_Step8(v_PhysCellId_Cell3))); + + + + + //Configure SS to not send response on RACH preamble reception on Cell 3 + f_EUTRA_SS_ConfigRachProcedure ( eutra_Cell3, + omit, + cs_RachProcedureConfig_NoResponse ( f_EUTRA_CellInfo_GetDL_ChBandwidth ( eutra_Cell3 ) ) ); + + t_T304.start(v_T304); + + //@siclog "Step 9" siclog@ + //The SS transmits an RRCConnectionReconfiguration message on Cell 1 to order the UE + //to perform intra frequency handover to Cell 3 + f_EUTRA_508RRC_IntraLTE_HO_InterCell(eutra_Cell1, eutra_Cell3); + /* + EXCEPTION: The steps 1 and 2 below are repeated for the duration of T304. + 1- The UE attempts to perform the intra frequency handover using MAC Random Access Preamble on Cell 3. + 2- The SS does not respond. + */ + t_T304.timeout; + + //Configure Cell 1 for normal PRACH operation + f_EUTRA_SS_ConfigRachProcedure_Def(eutra_Cell3, tsc_C_RNTI_Def); + + //@siclog "Step 10" siclog@ + //The SS changes Cell 1 and Cell 3 parameters according to the row "T2" in table 8.2.2.6.2.3.2-1 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT2); + + //Calculate ShortMAC-I to be received in RRCConnectionReestablishment Request from UE on Step11 + v_ShortMAC_I := f_Calculate_ShortMAC ( eutra_Cell1, eutra_Cell2 ); + + //@siclog "Step 11" siclog@ + //The UE releases the configured powerPrefIndicationConfig, stops timer T340 + //and transmit an RRCConnectionReestablishmentRequest message on Cell 1 + t_T340.stop; + SRB.receive (car_SRB0_RrcPdu_IND (eutra_Cell1, + cr_508_RRCConnectionReestablishmentRequest (tsc_C_RNTI_Def, + v_PhysCellId_Cell1, + cr_ReestablishmentCause_HandoverFailure, + v_ShortMAC_I))); + + //@siclog "Step 12" siclog@ + //The SS transmits an RRCConnectionReestablishment message to resume SRB1 operation and re-activate security on Cell 1 + f_EUTRA_RRC_RRCConnectionReestablishment_Def (eutra_Cell1, v_RRC_TI, v_Ncc2); + + //@siclog "Step 13" siclog@ + //The UE transmits an RRCConnectionReestablishmentComplete message on Cell 1 + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionReestablishmentComplete(v_RRC_TI))); + + + //@siclog "Step 14" siclog@ + //Cause the UE to send UEAssistanceInformation message indicating "lowPowerConsumption". (Note1). + f_UT_PowerPreferenceIndication(UT); + + //@siclog "Step 15" siclog@ + //Check: Does the UE transmit UEAssistanceInformation message? (Note 3) + t_T340.start(v_T340); + alt{ + [] SRB.receive (car_SRB1_RrcPdu_IND (eutra_Cell1, cr_508_UeAssistanceInformation (?))) + { + t_T340.stop; + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Test Case 8.2.2.6.2 Step 15"); + } + [] t_T340.timeout {} + } + + //Table 8.2.2.6.2.3.3-12: OtherConfig-r9 + v_PowerPrefIndicationTimer := s10; + //@siclog "Step 16" siclog@ + //The SS transmits an RRCConnectionReconfiguration message to resume existing radio bearer on Cell 1 + //and to configure power preference indication + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(eutra_Cell1, + cs_RRCConnReconfig_Resume_SRB2_DRBs_ConfigurePowerPreferenceIndication(v_RRC_TI, + v_EUTRA_FDD_TDD_CellInfo_Cell1.cqi_ReportConfig, + v_EUTRA_FDD_TDD_CellInfo_Cell1.soundingRS_UL_Config, + v_AntennaInfo_Cell1, + v_SR_PUCCH_ResourceIndex_Cell1, + v_SR_ConfigIndex_Cell1, + omit, + omit, + v_PowerPrefIndicationTimer)); + + //@siclog "Step 17" siclog@ + //The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1 + SRB.receive( car_SRB1_RrcPdu_IND( eutra_Cell1, cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + + //@siclog "Step 18" siclog@ + //Cause the UE to send UEAssistanceInformation message indicating "lowPowerConsumption". (Note1). + f_UT_PowerPreferenceIndication(UT); + + + //@siclog "Step 19" siclog@ + //Check: Does the UE transmit UEAssistanceInformation message with powerPrefIndication IE + //set to lowPowerConsumption? (Note 4) + v_T340 := f_EUTRA_SetTimerToleranceMax ( eutra_Cell1, rrcTimer, 10.0 ); //s10 + t_T340.start(v_T340); + alt{ + [] SRB.receive (car_SRB1_RrcPdu_IND (eutra_Cell1, cr_508_UeAssistanceInformation (lowPowerConsumption))) + { + t_T340.stop; + f_EUTRA_PreliminaryPass (__FILE__, __LINE__, "Test Case 8.2.2.6.2 Step 19"); + } + [] t_T340.timeout + { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Test Case 8.2.2.6.2 Step 19"); + } + } + + f_EUTRA_TestBody_Set (false); + + //Switch/power off UE + f_EUTRA_Postamble (eutra_Cell1, E2_CONNECTED); + + }//end of TC8.2.2.6.2 + + + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.2.6.3 + * @status + */ + function f_TC_8_2_2_6_3_EUTRA() runs on EUTRA_PTC + {/* @desc Test case 8.2.2.6.3 RRC connection reconfiguration/ UE Assistance Information/T340 running */ + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + //Table 8.2.2.6.3.3.3-1: RRCConnectionReconfiguration (Step1 and updated on Step11) + var PowerPrefIndicationConfig_r11.setup.powerPrefIndicationTimer_r11 v_PowerPrefIndicationTimer := s300; + + var float v_T300 := 300.0; + var float v_T30 := 30.0; + + timer t_T300 := f_EUTRA_SetTimerToleranceMax ( eutra_Cell1, nonProtocolTimer, v_T300 );//300sec=s300 + timer t_T340 := f_EUTRA_SetTimerToleranceMax ( eutra_Cell1, rrcTimer, v_T300 ); //s300 + + f_EUTRA_Init (c1); + + //Create and configure all cells + f_EUTRA_CellConfig_Def (eutra_Cell1); + + //Bring UE to initial state + f_EUTRA_Preamble (eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_RbEst_Def (eutra_Cell1); + + f_EUTRA_TestBody_Set (true); + + //@siclog "Step 1" siclog@ + //The SS transmits an RRCConnectionReconfiguration message containing a otherConfig includes the powerPrefIndicationConfig set to Setup + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_RRCConnectionReconfiguration_v890(v_RRC_TI, cs_RRCConnectionReconfiguration_PowerPrefIndicationConfig_Setup(v_PowerPrefIndicationTimer)))); + + + //@siclog "Step 2" siclog@ + //The UE transmits an RRCConnectionReconfigurationComplete message + SRB.receive( car_SRB1_RrcPdu_IND( eutra_Cell1, cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + + + //@siclog "Step 3" siclog@ + //Cause the UE to send UEAssistanceInformation message indicating "lowPowerConsumption". (Note 1) + f_UT_PowerPreferenceIndication(UT); + + //@siclog "Step 4" siclog@ + //The UE transmits a UEAssistanceInformation message with powerPrefIndication set to lowPowerConsumption. + SRB.receive (car_SRB1_RrcPdu_IND (eutra_Cell1, cr_508_UeAssistanceInformation (lowPowerConsumption))); + + //@siclog "Step 5" siclog@ + //Cause the UE to send UEAssistanceInformation message indicating "normal". (Note 2) + f_UT_PowerPreferenceIndication(UT,'0'B); + + + //@siclog "Step 6" siclog@ + //The UE transmits a UEAssistanceInformation message with powerPrefIndication set to normal. + //The UE starts T340. + SRB.receive (car_SRB1_RrcPdu_IND (eutra_Cell1, cr_508_UeAssistanceInformation (normal))); + t_T340.start; + + + //@siclog "Step 7" siclog@ + //Before T340 expires, cause the UE to send UEAssistanceInformation message indicating "lowPowerConsumption". (Note 1) + f_UT_PowerPreferenceIndication(UT); + + //@siclog "Step 8" siclog@ + //Check: Does the UE send a UEAssistanceInformation message before T340 expires? + alt{ + [] SRB.receive (car_SRB1_RrcPdu_IND (eutra_Cell1, cr_508_UeAssistanceInformation (?))) + { + t_T340.stop; + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Test Case 8.2.2.6.3 Step 8"); + } + [] t_T340.timeout {} + } + + + //@siclog "Step 9" siclog@ + //Cause the UE to send UEAssistanceInformation message indicating "lowPowerConsumption" after T340 has expired. (Note 1) + f_UT_PowerPreferenceIndication(UT); + + + //@siclog "Step 10" siclog@ + //The UE transmits a UEAssistanceInformation message with powerPrefIndication set to lowPowerConsumption. + SRB.receive (car_SRB1_RrcPdu_IND (eutra_Cell1, cr_508_UeAssistanceInformation (lowPowerConsumption))); + + + //@siclog "Step 11" siclog@ + //The SS transmits an RRCConnectionReconfiguration message containing a otherConfig includes the powerPrefIndicationConfig + //set to Setup and a new value for powerPrefIndicationTimer. + v_PowerPrefIndicationTimer := s30; + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_RRCConnectionReconfiguration_v890(v_RRC_TI, cs_RRCConnectionReconfiguration_PowerPrefIndicationConfig_Setup(v_PowerPrefIndicationTimer)))); + + + //@siclog "Step 12" siclog@ + //The UE transmits an RRCConnectionReconfigurationComplete message + SRB.receive( car_SRB1_RrcPdu_IND( eutra_Cell1, cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + + + //@siclog "Step 13" siclog@ + //Cause the UE to send UEAssistanceInformation message indicating "normal". (Note 2) + f_UT_PowerPreferenceIndication(UT,'0'B); + + + //@siclog "Step 14" siclog@ + //The UE transmits a UEAssistanceInformation message with powerPrefIndication set to normal. + //The UE starts T340. Start timer T=300s(this is the same value as the powerPrefIndicationTimer value set in Step 1) + SRB.receive (car_SRB1_RrcPdu_IND (eutra_Cell1, cr_508_UeAssistanceInformation (normal))); + t_T300.start; + f_Delay(f_EUTRA_SetTimerToleranceMax ( eutra_Cell1, rrcTimer, v_T30 )); + + //@siclog "Step 15" siclog@ + //After T340 expires but before T expires cause the UE to send UEAssistanceInformation message indicating "lowPowerConsumption". (Note 1) + f_UT_PowerPreferenceIndication(UT); + t_T300.stop; + + //@siclog "Step 16" siclog@ + //Check: Does the UE send a UEAssistanceInformation message with powerPrefIndication set to lowPowerConsumption? + SRB.receive (car_SRB1_RrcPdu_IND (eutra_Cell1, cr_508_UeAssistanceInformation (lowPowerConsumption))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.2.2.6.3 Step 16"); + + f_EUTRA_TestBody_Set (false); + + //Switch/power off UE + f_EUTRA_Postamble (eutra_Cell1, E2_CONNECTED); + }//end of TC8.2.2.6.3 + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.2.8 + * @status + */ + function f_TC_8_2_2_8_EUTRA() runs on EUTRA_PTC + { //feICIC/ RRC connection reconfiguration / SIB1 information / Success + + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var template (value) SystemInformationBlockType1 v_SystemInformationBlockType1; + var template (value) octetstring v_SystemInfomationBlockType1Dedicated_r11; + var EUTRA_FDD_TDD_Mode_Type v_EUTRA_FDD_TDD_Mode ; + var Null_Type v_StopSib1Transmission := true ; + + //Initialize testcase + f_EUTRA_Init(c1); + + //Get FDD/TDD mode from Cell-configuration + v_EUTRA_FDD_TDD_Mode := f_EUTRA_CellInfo_GetFDD_TDD (eutra_Cell1); + + //Create and configure Cell1 + f_EUTRA_CellConfig_Def(eutra_Cell1); + + //Preamble: The UE is in state Generic RB Established (state 3) on Cell 1 + f_EUTRA_Preamble(eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_RbEst_Def(eutra_Cell1); + + //Start TestBody + f_EUTRA_TestBody_Set(true); + + //@siclog "Step 0" siclog@ + //The SS stops transmitting SIB1 information on Cell 1. + f_EUTRA_ModifySysinfoUE_Off( eutra_Cell1, v_StopSib1Transmission); + + //@siclog "Step 1" siclog@ + //The SS transmits an RRConnectionReconfiguration message containing SIB1 information. + f_EUTRA_CellInfo_SetTAC(eutra_Cell1, oct2bit('0002'O)); + v_SystemInformationBlockType1 := f_EUTRA_CellInfo_GetSIB1(eutra_Cell1); + v_SystemInfomationBlockType1Dedicated_r11:= bit2oct(encvalue(v_SystemInformationBlockType1)); + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_RRCConnectionReconfiguration_v1130(v_RRC_TI, cs_SystemInfomationBlockType1Dedicated_r11(v_SystemInfomationBlockType1Dedicated_r11)))); + + //@siclog "Step 2" siclog@ + //Check: Does the UE transmit an RRCConnectionReconfigurationComplete message? + SRB.receive( car_SRB1_RrcPdu_IND( eutra_Cell1, cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + f_EUTRA_PreliminaryPass (__FILE__, __LINE__, "Test Case 8.2.2.8 Step 2"); + + //@siclog "Step 3" siclog@ + //Check: Does UE transmit a TRACKING AREA UPDATE REQUEST message to update the registration of the actual tracking area? + //@siclog "Step 4" siclog@ + //SS responds with TRACKING AREA UPDATE ACCEPT message. + //@siclog "Step 5" siclog@ + //The UE send a TRACKING AREA UPDATE COMPLETE message. + f_EUTRA_ConnectedMode_TAU (eutra_Cell1); + + //@siclog "Step 6" siclog@ + //The SS resumes transmitting SIB1 information. + f_EUTRA_ModifySysinfoUE_Off( eutra_Cell1); + + //End TestBody + f_EUTRA_TestBody_Set(false); + + f_EUTRA_Postamble(eutra_Cell1, E2_CONNECTED); + }//end of TC8.2.2.8 +} diff --git a/LTE_A_IWD_14wk37/LTE_A/8_2/RRC_ConnReconfig_CA.ttcn b/LTE_A_IWD_14wk37/LTE_A/8_2/RRC_ConnReconfig_CA.ttcn new file mode 100644 index 0000000..76502c6 --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/8_2/RRC_ConnReconfig_CA.ttcn @@ -0,0 +1,662 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-05 19:27:02 +0200 (Fri, 05 Sep 2014) $ +// $Rev: 12079 $ +/******************************************************************************/ +module RRC_ConnReconfig_CA +{ + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_CommonDefs all; + import from EUTRA_CellInfo all; + import from EUTRA_Component all; + import from EUTRA_ConfigurationSteps all; + import from EUTRA_CommonProcedures all; + import from EUTRA_RRCSteps all; + import from EUTRA_BandDependentParam all; + import from EUTRA_SysInfo_Templates all; + import from EUTRA_SRB_Templates all; + import from EUTRA_AspCommon_Templates all; + import from EUTRA_Measurement_Templates all; + import from EUTRA_Measurement_Templates_CA all; + import from CommonDefs all; + import from Parameters all; + import from EUTRA_CommonFunctions_CA all; + import from EUTRA_AspSystem_Templates_CA all; + import from EUTRA_CellInfoInit_CA all; + import from EUTRA_RRC_Templates_CA all; + import from EUTRA_RRC_Templates all; + + + + template (value) SoundingRS_UL_ConfigDedicated cs_SoundingRsUl_ConfigDedicated_8223_FDD := + { /* 36.523-1 Table 8.2.2.3.1.3.3-11A */ + /* @status APPROVED (LTE_A) */ + setup := { + srs_Bandwidth := bw3, + srs_HoppingBandwidth := hbw3, + freqDomainPosition := 0, + duration := true, + srs_ConfigIndex := 7, + transmissionComb := 0, + cyclicShift := cs0 + } + }; + + template (value) SoundingRS_UL_ConfigDedicated cds_SoundingRsUl_ConfigDedicated_8223_TDD modifies cs_SoundingRsUl_ConfigDedicated_8223_FDD := + { /* 36.523-1 Table 8.2.2.3.1.3.3-11A */ + /* @status APPROVED (LTE_A) */ + setup := { + srs_ConfigIndex := 31 + } + }; + + template (value) SoundingRS_UL_ConfigDedicated_v1020 cs_SoundingRS_UL_ConfigDedicated_v1020_8223 := + { /* @status APPROVED (LTE_A) */ + srs_AntennaPort_r10 := an1 + }; + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.2.3.1/2 + * @param p_PCellId + * @param p_SCellId + * @param p_CA_Type + * @status APPROVED (LTE_A) + */ + function f_TC_8_2_2_3_Common(EUTRA_CellId_Type p_PCellId, + EUTRA_CellId_Type p_SCellId, + CA_Tested_Type p_CA_Type) runs on EUTRA_PTC + { + var PhysCellId v_PhysicalCellIdentity_Scell; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var Frequency_IE_Type v_Frequency_IE_PCell; + var Frequency_IE_Type v_Frequency_IE_Scell; + var ChannelBandwidthDependency_Type v_ChBandDependency_PCell; + var ChannelBandwidthDependency_Type v_ChBandDependency_Scell; + var template (value) CellPowerList_Type v_CellPowerList_AtT0; + var template (value) CellPowerList_Type v_CellPowerList_AtT1; + var template (value) CellPowerList_Type v_CellPowerList_AtT2; + var boolean v_UL_CA := pc_UL_CA; + var template (value) DL_DCCH_Message v_RRCConnectionReconfiguration; + var integer v_Arfcn_SCell; + var SCell_DL_Bandwidth_Type v_SCell_DL_Bandwidth; + var template (omit) DedicatedSCell_UL_Configuration_Type v_DedicatedSCell_UL_Configuration := omit; + var EUTRA_FDD_TDD_CellInfo_Type v_FDD_TDDInfo; + var template(omit) TDD_Config v_TDD_Config := omit; // omitted in FDD + var CarrierFreqEUTRA v_CarrierFreq_Scell; + var template (value) PUCCH_ConfigDedicated_v1020 v_PUCCH_ConfigDedicated; + var template (omit) AdditionalSpectrumEmissionCA_r10_Type v_AdditionalSpectrumEmissionCA_r10 := omit; + var MeasObjectId v_MeasObjectId ; + var MeasObjectId v_MeasObjectId_PCell :=tsc_IdMeasObject_f1 ; //@sic R5s144683 sic@ + var default v_DefaultRef; + + v_CellPowerList_AtT0 := { + cs_CellPower(p_PCellId, -79) + }; + v_CellPowerList_AtT1 := { + cs_CellPower(p_SCellId, -85) //@sic R5s130404 sic@ + }; + v_CellPowerList_AtT2 := { + cs_CellPower(p_SCellId, -97) + }; + f_EUTRA_Init(c3); + f_EUTRA_CA_InitCells({p_PCellId, p_SCellId}, p_CA_Type, c3); + + if (p_CA_Type == CA_IntraBand) /* @sic R5-141113 sic@ */ + { + v_MeasObjectId := tsc_IdMeasObject_f2; + if (p_PCellId == eutra_Cell6) //@sic R5s144683 sic@ + { + v_MeasObjectId_PCell := tsc_IdMeasObject_f3; + } + } else + { + v_MeasObjectId := tsc_IdMeasObject_f5; + } + + //Get cell dependant parameters + v_PhysicalCellIdentity_Scell := f_EUTRA_CellInfo_GetPhyCellId(p_SCellId); + v_Frequency_IE_Scell := f_EUTRA_CellInfo_GetFrequencyIEs(p_SCellId); + v_ChBandDependency_Scell := f_EUTRA_BandDependentParam(v_Frequency_IE_Scell.DL_ChBandwidth, + v_Frequency_IE_Scell.UL_ChBandwidth); + v_Frequency_IE_PCell := f_EUTRA_CellInfo_GetFrequencyIEs(p_PCellId); + v_ChBandDependency_PCell := f_EUTRA_BandDependentParam(v_Frequency_IE_PCell.DL_ChBandwidth, + v_Frequency_IE_PCell.UL_ChBandwidth); + v_CarrierFreq_Scell := f_EUTRA_CellInfo_GetEARFCN(p_SCellId); + + //Set maximim cell powel level for cell P be used in creation + f_EUTRA_CellInfo_InitMaxReferencePower(p_PCellId, -79); + + //Set C-RNTI to be used in s-cell creation + f_EUTRA_CellInfo_SetC_RNTI(p_SCellId, tsc_C_RNTI_Def); + + //Create and configure all cells + f_EUTRA_CellConfig_Pcell_Def(p_PCellId); + f_EUTRA_CellConfig_Scell(p_SCellId); //No DRB's created + + // ring UE to initial state + f_EUTRA_Preamble(p_PCellId, STATE2_IDLEUPDATE); + f_EUTRA_RbEst_Def(p_PCellId); + + //Set initial cell power level according to T0 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT0); + + f_EUTRA_TestBody_Set(true); + + //@siclog "Step 1-2" siclog@ + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(p_PCellId, + cs_508_RRCConnectionReconfiguration_ConditionMEAS(v_RRC_TI, + cs_Measurement_Config_A3_InterFreq_CA(v_Frequency_IE_PCell.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_PCell.AllowedMeasBandwidth, + v_Frequency_IE_Scell.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Scell.AllowedMeasBandwidth, + v_MeasObjectId, + cs_508_MeasGapConfig_GP1, //@sic R5s144683 sic@ + v_MeasObjectId_PCell))); + //@siclog "Step 3" siclog@ + //Set cell power level according to T1 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + + //@siclog "Step 4" siclog@ + //Receive MeasurementReport + SRB.receive(car_SRB1_RrcPdu_IND(p_PCellId, cr_MeasurementReport(1, //Meas id + ?, //RSRP result + ?, //RSRQ result + cr_MeasResultNeighCells_measResultListEUTRA_1Entry(v_PhysicalCellIdentity_Scell, + omit, //CGI info + ?, //RSRP result + ?))));//RSRQ result + + //Activate the default to receive further measurement reports for cell 2 on cell 1 + v_DefaultRef := activate(a_EUTRA_AddDefault_PeriodicalMeasurmentReport(p_PCellId, + cr_MeasurementReport(1, ?, ?, + cr_MeasResultNeighCells_measResultListEUTRA_1Entry(v_PhysicalCellIdentity_Scell, omit, ?, ?), + ?))); + //@siclog "Step 5 - 6" siclog@ + //Transmit RRCConnectionReconfiguration + //Receive RRCConnectionReconfigurationComplete + f_EUTRA_508RRC_AddMod_1Scell(p_PCellId, + p_SCellId, + 1, //SCellIndex_r10 + p_CA_Type, // CA Type + v_UL_CA,// UL CA desired + -, //C-RNTI + cs_508_MeasGapConfig_GP1 // @sic R5s130503 sic@ + ); + + //* @verdict RRCConnectionReconfigurationComplete received on Cell 3 + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.2.2.3 Step 6"); + v_Arfcn_SCell := f_EUTRA_CellInfo_GetEARFCN_DL(p_SCellId); + v_PhysicalCellIdentity_Scell := f_EUTRA_CellInfo_GetPhyCellId(p_SCellId); + v_SCell_DL_Bandwidth := f_EUTRA_CellInfo_GetSCell_DL_ChBandwidth(p_SCellId); + v_FDD_TDDInfo := f_EUTRA_CellInfo_GetFDD_TDD_Info(p_SCellId); + if (v_FDD_TDDInfo.FDD_TDD == TDD) { // initialise tdd-Configuration to be used in + v_TDD_Config := cs_TDD_ConfigDef(v_FDD_TDDInfo.TDD_SubframeAssignment); // Value omitted in FDD + v_PUCCH_ConfigDedicated := cs_508_PUCCH_ConfigDedicated_v1020_2TX(cs_N1PUCCH_AN_CS_r10_FDD_1TX, cs_N1PUCCH_AN_CS_r10_FDD_2TX); //@sic R5-133275 sic@ + } else { //FDD + v_PUCCH_ConfigDedicated := cs_508_PUCCH_ConfigDedicated_v1020_1TX(cs_N1PUCCH_AN_CS_r10_FDD_1TX); + } + + if (v_UL_CA) { + if (p_CA_Type == CA_InterBand) { // 36.508 Table 4.8.2.1.6-1 + v_AdditionalSpectrumEmissionCA_r10 := cs_AdditionalSpectrumEmissionCA_r10_Def; + } + if (v_FDD_TDDInfo.FDD_TDD == TDD) { + if (pc_FeatrGrp_113) { + v_DedicatedSCell_UL_Configuration := cs_RadioResourceConfigDedicatedSCell_UL_Configuration_DEFAULT(cs_CQI_ReportPeriodic_r10_DEFAULT_TDD, + cs_AntennaInfoUL_r10, + cds_SoundingRsUl_ConfigDedicated_8223_TDD, + cs_SoundingRS_UL_ConfigDedicated_v1020_8223); + } + else { + v_DedicatedSCell_UL_Configuration := cs_RadioResourceConfigDedicatedSCell_UL_Configuration_DEFAULT(cs_CQI_ReportPeriodic_r10_DEFAULT_TDD, + cs_AntennaInfoUL_r10); + } + + } + else { + if (pc_FeatrGrp_113) { + v_DedicatedSCell_UL_Configuration := cs_RadioResourceConfigDedicatedSCell_UL_Configuration_DEFAULT(cs_CQI_ReportPeriodic_r10_DEFAULT_FDD, + cs_AntennaInfoUL_r10, + cs_SoundingRsUl_ConfigDedicated_8223_FDD, + cs_SoundingRS_UL_ConfigDedicated_v1020_8223); + } + else { + v_DedicatedSCell_UL_Configuration := cs_RadioResourceConfigDedicatedSCell_UL_Configuration_DEFAULT(cs_CQI_ReportPeriodic_r10_DEFAULT_FDD, + cs_AntennaInfoUL_r10); + } + } + } + v_RRCConnectionReconfiguration := cs_508_RRCConnectionReconfiguration_SCell_AddModRelease(tsc_RRC_TI_Def, + cs_SCellToMod_r10(1, + cs_RadioResourceConfigDedicatedSCell_r10(cs_PhysicalConfigDedicatedSCell_r10_DEFAULT(v_DedicatedSCell_UL_Configuration))), + v_PUCCH_ConfigDedicated, + -, + -, + v_AdditionalSpectrumEmissionCA_r10, + cs_MeasConfig(omit,omit,omit,omit,omit,omit,omit,cs_MeasGapConfig_release)//release GAP @sic R5s140010 R5s140205 sic@ + + ); + if (v_UL_CA) { + if (pc_FeatrGrp_113) { + f_EUTRA_SS_CommonCellConfig(p_SCellId, cas_CellConfig_ScellModSRS_AntennaInfo_REQ(p_SCellId, cs_TimingInfo_Now, f_EUTRA_CellInfo_GetSounding_ConfigCommon(p_SCellId))); + } + else { + f_EUTRA_SS_CommonCellConfig(p_SCellId, cas_CellConfig_ScellModSRS_AntennaInfo_REQ(p_SCellId, cs_TimingInfo_Now, f_EUTRA_CellInfo_GetSounding_ConfigCommon(p_SCellId))); + } + } + //@siclog "Step 7 - 8" siclog@ + //Transmit RRCConnectionReconfiguration + //Receive RRCConnectionReconfigurationComplete + f_EUTRA_508RRC_AddMod_1Scell(p_PCellId, + p_SCellId, + 1, // SCellIndex_r10 + p_CA_Type, // CA Type + v_UL_CA , // UL CA desired, + -, // C_RNTI default := tsc_C_RNTI_Def, + cs_MeasGapConfig_release, //release GAP @sic R5s140010 sic@ + v_RRCConnectionReconfiguration); + + // RRCConnectionReconfigurationComplete received on Cell 3 + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.2.2.3 Step 8"); + + //@siclog "Step 9" siclog@ + //Set cell power level according to T2 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT2); + //@siclog "Step 10" siclog@ + //Receive MeasurementReport + SRB.receive(car_SRB1_RrcPdu_IND(p_PCellId, cr_MeasurementReport(1, //Meas id + ?, //RSRP result + ?, //RSRQ result + omit, //@sic R5-133621 sic@ + cr_MeasResultServFreqList(1, ?, ?))));//RSRQ result + //Deactivate the default to stop receiving measurement reports for cell 3 on cell 1 + deactivate(v_DefaultRef); + //@siclog "Step 11 - 12" siclog@ + //Transmit RRCConnectionReconfiguration + //Receive RRCConnectionReconfigurationComplete + f_EUTRA_508RRC_Rel_1Scell(p_PCellId, + p_SCellId, + 1); //SCellIndex_r10 + //@siclog "Step 13" siclog@ + //Check if UE is in state RRC_Connected + f_EUTRA_508Check_ConnectedState(p_PCellId); + /////////////////////// + // Postamble + /////////////////////// + f_EUTRA_TestBody_Set(false); + + //Switch/power off UE + f_EUTRA_Postamble(p_PCellId, E2_CONNECTED); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.2.3.1 + * @status APPROVED (LTE_A) + */ + function f_TC_8_2_2_3_1_EUTRA() runs on EUTRA_PTC + { /* CA / RRC connection reconfiguration / SCell addition/modification/release / Success / Intra-band Contiguous CA */ + f_TC_8_2_2_3_Common(eutra_Cell1, eutra_Cell3, CA_IntraBand);/* @sic R5-141113 sic@ */ + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.2.3.2 + * @status APPROVED (LTE_A) + v_MeasObjectId_PCell + */ + function f_TC_8_2_2_3_2_EUTRA() runs on EUTRA_PTC + { /* CA / RRC connection reconfiguration / SCell addition/modification/release / Success / Inter-Band CA */ + f_TC_8_2_2_3_Common(eutra_Cell1, eutra_Cell10, CA_InterBand); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.2.3.3 + * @status + */ + function f_TC_8_2_2_3_3_EUTRA() runs on EUTRA_PTC + { /* CA / RRC connection reconfiguration / SCell addition/modification/release / Success / Intra-band non-contiguous CA */ + f_TC_8_2_2_3_Common(eutra_Cell6, eutra_Cell10, CA_InterBand); + } + + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 8.2.2.4.1/2 + * @param p_PCellId + * @param p_SCellId + * @param p_CA_Type + * @status APPROVED (LTE_A) + */ + function f_TC_8_2_2_4_Common(EUTRA_CellId_Type p_PCellId, + EUTRA_CellId_Type p_SCellId, + CA_Tested_Type p_CA_Type) runs on EUTRA_PTC + { + var PhysCellId v_PhysicalCellIdentity_Scell; + var Frequency_IE_Type v_Frequency_IE_PCell; + var Frequency_IE_Type v_Frequency_IE_Scell; + var ChannelBandwidthDependency_Type v_ChBandDependency_PCell; + var ChannelBandwidthDependency_Type v_ChBandDependency_Scell; + var boolean v_UL_CA := pc_UL_CA; + var CarrierFreqEUTRA v_CarrierFreq_Scell; + + f_EUTRA_Init(c3); + f_EUTRA_CA_InitCells({p_PCellId, p_SCellId}, p_CA_Type, c3); + + //Get cell dependant parameters + v_PhysicalCellIdentity_Scell := f_EUTRA_CellInfo_GetPhyCellId(p_SCellId); + v_Frequency_IE_Scell := f_EUTRA_CellInfo_GetFrequencyIEs(p_SCellId); + v_ChBandDependency_Scell := f_EUTRA_BandDependentParam(v_Frequency_IE_Scell.DL_ChBandwidth, + v_Frequency_IE_Scell.UL_ChBandwidth); + v_Frequency_IE_PCell := f_EUTRA_CellInfo_GetFrequencyIEs(p_PCellId); + v_ChBandDependency_PCell := f_EUTRA_BandDependentParam(v_Frequency_IE_PCell.DL_ChBandwidth, + v_Frequency_IE_PCell.UL_ChBandwidth); + v_CarrierFreq_Scell := f_EUTRA_CellInfo_GetEARFCN(p_SCellId); + + //Set C-RNTI to be used in s-cell creation + f_EUTRA_CellInfo_SetC_RNTI(p_SCellId, tsc_C_RNTI_Def); + + //Create and configure all cells + f_EUTRA_CellConfig_Pcell_Def(p_PCellId); + f_EUTRA_CellConfig_Scell(p_SCellId); //No DRB's created + + // bring UE to initial state + f_EUTRA_Preamble(p_PCellId, STATE2_IDLEUPDATE); + f_EUTRA_RbEst_Def(p_PCellId); + + //@sic R5s130406 sic@ + f_EUTRA_SetCellPower(p_SCellId, -91);//Make S Cell on + + f_EUTRA_TestBody_Set(true); + + //@siclog "Step 1-2" siclog@ + //Transmit RRCConnectionReconfiguration + //Receive RRCConnectionReconfigurationComplete + f_EUTRA_508RRC_AddMod_1Scell(p_PCellId, + p_SCellId, + 1, //SCellIndex_r10 + p_CA_Type, // CA Type + v_UL_CA , // UL CA desired + -, // C_RNTI default := tsc_C_RNTI_Def, + omit, // MeasGapConfig omit, no gap, + -, // Reconfig message omit + -, // DciUlInfo_Type default cs_DciInfo_CcchDcchDtchUL_Def, + -, // UL_GrantConfig_Type default := cs_UL_GrantConfig_Def, + -); // p_CnfFlag := tsc_NoCnfReq + //@siclog "Step 3-4" siclog@ + //Transmit RRCConnectionReconfiguration + //Receive RRCConnectionReconfigurationComplete + + f_EUTRA_508RRC_AddRel_1Scell(p_PCellId, + p_SCellId, //Scell to Add + 1, //SCellIndex_r10 Scell to Add + p_SCellId, //Scell to release + 1, //SCellIndex_r10 Scell to release + p_CA_Type,// CA Type + v_UL_CA , // UL CA desired, + -, // C_RNTI default := tsc_C_RNTI_Def, + omit, // MeasGapConfig omit, no gap, + -, // DciUlInfo_Type default cs_DciInfo_CcchDcchDtchUL_Def, + -, // UL_GrantConfig_Type default := cs_UL_GrantConfig_Def, + -); // p_CnfFlag := tsc_NoCnfReq + //* @verdict RRCConnectionReconfigurationComplete received on PCell + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.2.2.4 Step 4"); + + f_EUTRA_TestBody_Set(false); + + //Switch/power off UE + f_EUTRA_Postamble(p_PCellId, E2_CONNECTED); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.2.4.1 + * @status APPROVED (LTE_A) + */ + function f_TC_8_2_2_4_1_EUTRA() runs on EUTRA_PTC + { /* CA / RRC connection reconfiguration / SCell SI change / Success / Intra-band Contiguous CA */ + f_TC_8_2_2_4_Common(eutra_Cell1, eutra_Cell3, CA_IntraBand); /* @sic R5-141113 sic@ */ + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.2.4.2 + * @status APPROVED (LTE_A) + */ + function f_TC_8_2_2_4_2_EUTRA() runs on EUTRA_PTC + { /* CA / RRC connection reconfiguration / SCell SI change / Success / Inter-Band CA */ + f_TC_8_2_2_4_Common(eutra_Cell1, eutra_Cell10, CA_InterBand); + } + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.2.4.3 + * @status + */ + function f_TC_8_2_2_4_3_EUTRA() runs on EUTRA_PTC + { /* CA / RRC connection reconfiguration / SCell SI change / Success / Intra-band non-contiguous CA */ + f_TC_8_2_2_4_Common(eutra_Cell1, eutra_Cell10, CA_InterBand); + } + + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 8.2.2.5.1/2 + * @param p_PCellId + * @param p_SCellId + * @param p_CA_Type + * @status APPROVED (LTE_A) + */ + function f_TC_8_2_2_5_Common(EUTRA_CellId_Type p_PCellId, + EUTRA_CellId_Type p_SCellId, + CA_Tested_Type p_CA_Type) runs on EUTRA_PTC + { + var PhysCellId v_PhysicalCellIdentity_Scell; + var Frequency_IE_Type v_Frequency_IE_PCell; + var Frequency_IE_Type v_Frequency_IE_Scell; + var ChannelBandwidthDependency_Type v_ChBandDependency_PCell; + var ChannelBandwidthDependency_Type v_ChBandDependency_Scell; + var CarrierFreqEUTRA v_CarrierFreq_Scell; + + f_EUTRA_Init(c3); + f_EUTRA_CA_InitCells({p_PCellId, p_SCellId}, p_CA_Type, c3); + + //Get cell dependant parameters + v_PhysicalCellIdentity_Scell := f_EUTRA_CellInfo_GetPhyCellId(p_SCellId); + v_Frequency_IE_Scell := f_EUTRA_CellInfo_GetFrequencyIEs(p_SCellId); + v_ChBandDependency_Scell := f_EUTRA_BandDependentParam(v_Frequency_IE_Scell.DL_ChBandwidth, + v_Frequency_IE_Scell.UL_ChBandwidth); + v_Frequency_IE_PCell := f_EUTRA_CellInfo_GetFrequencyIEs(p_PCellId); + v_ChBandDependency_PCell := f_EUTRA_BandDependentParam(v_Frequency_IE_PCell.DL_ChBandwidth, + v_Frequency_IE_PCell.UL_ChBandwidth); + v_CarrierFreq_Scell := f_EUTRA_CellInfo_GetEARFCN(p_SCellId); + + //Set C-RNTI to be used in s-cell creation + f_EUTRA_CellInfo_SetC_RNTI(p_SCellId, tsc_C_RNTI_Def); + + //Create and configure all cells + f_EUTRA_CellConfig_Pcell_Def(p_PCellId); + f_EUTRA_CellConfig_Scell(p_SCellId); //No DRB's created + + // bring UE to initial state + f_EUTRA_Preamble(p_PCellId, STATE2_IDLEUPDATE); + f_EUTRA_RbEst_Def(p_PCellId); + //@sic R5S130408 sic@ + + f_EUTRA_SetCellPower(p_SCellId, -91);//Make S Cell on + + f_EUTRA_TestBody_Set(true); + + //@siclog "Step 1-2" siclog@ + //Transmit RRCConnectionReconfiguration + //Receive RRCConnectionReconfigurationComplete + f_EUTRA_508RRC_AddMod_1Scell(p_PCellId, + p_SCellId, + 1, //SCellIndex_r10 + p_CA_Type, // CA Type + false , // UL CA Not desired + -, // C_RNTI default := tsc_C_RNTI_Def, + omit, // MeasGapConfig omit, no gap, + -, // Reconfig message omit + -, // DciUlInfo_Type default cs_DciInfo_CcchDcchDtchUL_Def, + -, // UL_GrantConfig_Type default := cs_UL_GrantConfig_Def, + -); // p_CnfFlag := tsc_NoCnfReq + + + //* @verdict RRCConnectionReconfigurationComplete received on PCell + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.2.2.5 Step 2"); + + f_EUTRA_TestBody_Set(false); + + //Switch/power off UE + f_EUTRA_Postamble(p_PCellId, E2_CONNECTED); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.2.5.1 + * @status APPROVED (LTE_A) + */ + function f_TC_8_2_2_5_1_EUTRA() runs on EUTRA_PTC + { /* CA / RRC connection reconfiguration / SCell SI change / Success / Intra-band Contiguous CA */ + f_TC_8_2_2_5_Common(eutra_Cell1, eutra_Cell3, CA_IntraBand); /* @sic R5-141113 sic@ */ + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.2.5.2 + * @status APPROVED (LTE_A) + */ + function f_TC_8_2_2_5_2_EUTRA() runs on EUTRA_PTC + { /* CA / RRC connection reconfiguration / SCell SI change / Success / Inter-Band CA */ + f_TC_8_2_2_5_Common(eutra_Cell1, eutra_Cell10, CA_InterBand); + } + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.2.5.3 + * @status + */ + function f_TC_8_2_2_5_3_EUTRA() runs on EUTRA_PTC + { /* CA / RRC connection reconfiguration / SCell SI change / Success / Intra-band non-Contiguous CA */ + f_TC_8_2_2_5_Common(eutra_Cell6, eutra_Cell3, CA_IntraBand); + } + + ///////////////////////////////////////////////////////////////////////////////////////// + // CA Enhancements Rel 11 + ///////////////////////////////////////////////////////////////////////////////////////// + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.2.7.1/2/3 + * @param p_PCellId + * @param p_SCellId + * @param p_CA_Type + * @status + */ + function f_TC_8_2_2_7_Common(EUTRA_CellId_Type p_PCellId, + EUTRA_CellId_Type p_SCellId, + CA_Tested_Type p_CA_Type) runs on EUTRA_PTC + { + var boolean v_UL_CA := true; + var template (value) DL_DCCH_Message v_RRCConnectionReconfiguration; + + f_EUTRA_Init(c3); + f_EUTRA_CA_InitCells({p_PCellId, p_SCellId}, p_CA_Type, c3); + + //Set C-RNTI to be used in s-cell creation + f_EUTRA_CellInfo_SetC_RNTI(p_SCellId, tsc_C_RNTI_Def); + + //Create and configure all cells + f_EUTRA_CellConfig_Pcell_Def(p_PCellId); + f_EUTRA_CellConfig_Scell(p_SCellId); //No DRB's created + + // ring UE to initial state + f_EUTRA_Preamble(p_PCellId, STATE2_IDLEUPDATE); + f_EUTRA_RbEst_Def(p_PCellId); + + + f_EUTRA_SetCellPower(p_SCellId, -91);//Make S Cell on + + f_EUTRA_TestBody_Set(true); + + + //@siclog "Step 1 - 2" siclog@ + // No SS configuration with Scell Time Alignment timer as Scell is not being activated. + //Transmit RRCConnectionReconfiguration + //Receive RRCConnectionReconfigurationComplete + f_EUTRA_508RRC_AddMod_1Scell(p_PCellId, + p_SCellId, + 1, //SCellIndex_r10 + p_CA_Type, // CA Type + v_UL_CA,// UL CA desired + -, //C-RNTI + -, // p_MeasGapConfig + -, //p_RRCConnectionReconfiguration + -, //p_DciUlInfo_SCell + -, //p_UL_GrantConfig_SCell + -, //p_CnfFlag + -, //p_STAG_ToReleaseList + {cs_STAG_ToAddMod_Def(tsc_STAG_ID1, infinity_)},// p_STAG_ToAddModList + cs_MAC_MainConfigSCell_Def(tsc_STAG_ID1)//p_MAC_MainConfigSCell_r11 + ); + + //* @verdict RRCConnectionReconfigurationComplete received + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.2.2.7 Step 2"); + + v_RRCConnectionReconfiguration := cs_RRCConnectionReconfiguration_StagParamModify(tsc_RRC_TI_Def, + -,//p_TimeAlignmentTimer + -, //STAG_ToReleaseList_r11 + {cs_STAG_ToAddMod_Def(tsc_STAG_ID1, infinity_)}// p_STAG_ToAddModList + ); + + + //@siclog "Step 3 - 4" siclog@ + // No SS configuration is being done as the Scell is not being activated. No need to configure SS with Scell Time Alignment timer. + // Generic function f_EUTRA_508RRC_AddMod_1Scell usage may result in redundent SS configurations + //Transmit RRCConnectionReconfiguration + SRB.send(cas_SRB1_RrcPdu_REQ(p_PCellId, + cs_TimingInfo_Now, + v_RRCConnectionReconfiguration)); + + // receive RRCConnectionReconfigurationComplete + SRB.receive(car_SRB1_RrcPdu_IND(p_PCellId, + cr_508_RRCConnectionReconfigurationComplete(tsc_RRC_TI_Def))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.2.2.7 Step 4"); + + // RRCConnectionReconfigurationComplete received on Cell 3 + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.2.2.7 Step 4"); + + + //@siclog "Step 5 - 6" siclog@ + //Transmit RRCConnectionReconfiguration + //Receive RRCConnectionReconfigurationComplete + f_EUTRA_508RRC_Rel_1Scell(p_PCellId, + p_SCellId, + 1); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.2.2.7 Step 6"); + //@siclog "Step 7" siclog@ + //Check if UE is in state RRC_Connected + f_EUTRA_508Check_ConnectedState(p_PCellId); + /////////////////////// + // Postamble + /////////////////////// + f_EUTRA_TestBody_Set(false); + + //Switch/power off UE + f_EUTRA_Postamble(p_PCellId, E2_CONNECTED); + } + + function f_TC_8_2_2_7_1_EUTRA() runs on EUTRA_PTC + { /* CA / RRC connection reconfiguration / sTAG addition/modification/release / Success / Intra-band Contiguous CA */ + f_TC_8_2_2_7_Common(eutra_Cell1, eutra_Cell3, CA_IntraBand); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.2.7.2 + * @status + */ + function f_TC_8_2_2_7_2_EUTRA() runs on EUTRA_PTC + { /* CA / RRC connection reconfiguration / sTAG addition/modification/release / Success / Inter-Band CA */ + f_TC_8_2_2_7_Common(eutra_Cell1, eutra_Cell10, CA_InterBand); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.2.7.3 + * @status + */ + function f_TC_8_2_2_7_3_EUTRA() runs on EUTRA_PTC + { /* CA / RRC connection reconfiguration / sTAG addition/modification/release / Success / Intra-band non-contiguous CA */ + f_TC_8_2_2_7_Common(eutra_Cell6, eutra_Cell3, CA_IntraBand); + } + +} diff --git a/LTE_A_IWD_14wk37/LTE_A/8_2/RRC_Handover_CA.ttcn b/LTE_A_IWD_14wk37/LTE_A/8_2/RRC_Handover_CA.ttcn new file mode 100644 index 0000000..e9b6df5 --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/8_2/RRC_Handover_CA.ttcn @@ -0,0 +1,1713 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 12:15:34 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12147 $ +/******************************************************************************/ +module RRC_Handover_CA +{ + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_CommonDefs all; + import from EUTRA_CellInfo all; + import from EUTRA_Component all; + import from EUTRA_ConfigurationSteps all; + import from EUTRA_CommonProcedures all; + import from EUTRA_RRCSteps all; + import from EUTRA_BandDependentParam all; + import from EUTRA_SRB_Templates all; + import from EUTRA_AspCommon_Templates all; + import from EUTRA_Measurement_Templates all; + import from EUTRA_Measurement_Templates_CA all; + import from CommonDefs all; + import from Parameters all; + import from EUTRA_CommonFunctions_CA all; + import from EUTRA_AspSystem_Templates_CA all; + import from EUTRA_CellInfoInit_CA all; + import from EUTRA_RRC_Templates_CA all; + import from EUTRA_ASP_TypeDefs all; + import from EUTRA_CellCfg_Templates all; + import from EUTRA_DRB_Templates all; + import from EUTRA_CellInfoInit_CA all; + import from EUTRA_Parameters all; + import from EUTRA_CellInfoFrequency all; + import from EUTRA_NASSteps all; + import from EUTRA_SysInfo_Templates all; + import from EPS_NAS_Constants all; + import from EUTRA_AspSystem_Templates_CA all; + import from EUTRA_SecuritySteps all; + import from EUTRA_SecurityFunctions all; + import from EUTRA_RRC_Templates all; + import from EUTRA_Timing all; + + template (value) MeasObjectToRemoveList cs_MeasObjectToRemoveList_3Entry( MeasObjectId p_MeasObjectId, + MeasObjectId p_MeasObjectId2, + MeasObjectId p_MeasObjectId3) := + { + p_MeasObjectId, + p_MeasObjectId2, + p_MeasObjectId3 + }; + + + template (value) MeasConfig cs_MeasRelease_82421_step7:= + /* @status APPROVED (LTE_A) */ + cs_MeasConfig(omit, //@sic R5s140671 sic@ + omit, + omit, //@sic R5-142457 sic@ + omit, + cs_MeasIdToRemoveList_1Entry(1), + omit); + + ////////////////////////////////////////////////////////////////////////////////////////////////////// + // Common Functions + ////////////////////////////////////////////////////////////////////////////////////////////////////// + + /* + * @desc function to check if secondary band supports second frequency i.e. f6 + * @return boolean + * @status APPROVED (LTE_A) + */ + function fl_CheckSecondryBandSupportsF6() return boolean + { //@sic R5-133081 sic@ + + var Frequency_fList_CAInterBand_Type v_FreqInterCA := f_EUTRA_CA_InitFrequenciesInterBand ( px_ePrimaryFrequencyBand, px_eSecondaryFrequencyBand ); + var boolean v_F6_Supported := (v_FreqInterCA.f6.dl_CarrierFreq != tsc_DummyFrequency); + + return v_F6_Supported; + } + + /* @desc Function for performing SS and UE configuration at IntraLTE InterCell handover from a PCELL+Scell -> Normal Cell + * The function implements step 2-14 of 36.523-3 cl. 7.16.1 with + * 1. configure C-RNTI based contention resolution in SS with minimal grant + * i.e. the UE will have to raise SR to send additional/user data. + * 2. activate security at target cell according to 36.508 cl. 4.6.4 Table 4.6.4-1 + * with keyChangeIndicator set to FALSE and nextHopChainingCount set to 0 + * 3. send the RRCConnectionReconfiguration to UE. This message will include + * 3a. Measurement configuration if specified. + * 3b. MobilityControlInfo according to 36.508 cl. 4.6.5 Table 4.6.5-1 + * with newUE-Identity set to tsc_C_RNTI_Def2 or p_C_R_NTI + * 3c. RadioResourceConfigDedicated according to 36.508 cl. 4.6.3 Table 4.6.3-19 + * 3d. SecurityConfigHO according to 36.508 cl. 4.6.4 Table 4.6.4-1 + * with keyChangeIndicator set to FALSE and nextHopChainingCount set to 0 + * @param p_SourcePCellId + * @param p_SCellIdRel + * @param p_SCellIndexRel + * @param p_TargetCellId + * @param p_DrbConfigList (default value: cs_DrbConfigList_Def) + * @param p_C_RNTI (default value: tsc_C_RNTI_Def2) + * @param p_MeasConfig (default value: omit) + * @param p_DciUlInfo_TargetCell (default value: cs_DciInfo_CcchDcchDtchUL_Def) + * @param p_UL_GrantConfig_SourceCell (default value: cs_UL_GrantConfig_Def) + * @param p_UL_GrantConfig_TargetCell (default value: cs_UL_GrantConfig_Def) + * @param p_Dsr_TransMax (default value: n4) + * @param p_CarrierFreqEutra (default value: omit) + * @param p_CnfFlag (default value: tsc_NoCnfReq) + * @param p_AddAdditionalSpectrumEmission (default value: false) + * @status APPROVED (LTE_A) + */ + function f_EUTRA_508RRC_IntraLTE_CA_HO_ToNormalInterCell(EUTRA_CellId_Type p_SourcePCellId, + EUTRA_CellId_Type p_SCellIdRel, //Scell to release + SCellIndex_r10 p_SCellIndexRel, //Scell to release + EUTRA_CellId_Type p_TargetCellId, + template (value) RadioBearerList_Type p_DrbConfigList := cs_DrbConfigList_Def, + C_RNTI p_C_RNTI := tsc_C_RNTI_Def2, + template (omit) MeasConfig p_MeasConfig := omit, + template (omit) DciUlInfo_Type p_DciUlInfo_TargetCell := cs_DciInfo_CcchDcchDtchUL_Def, + template (value) UL_GrantConfig_Type p_UL_GrantConfig_SourceCell := cs_UL_GrantConfig_Def, + template (value) UL_GrantConfig_Type p_UL_GrantConfig_TargetCell := cs_UL_GrantConfig_Def, + Dsr_TransMax_Type p_Dsr_TransMax := n4, + template (omit) CarrierFreqEUTRA p_CarrierFreqEutra := omit, + boolean p_CnfFlag := tsc_NoCnfReq, + boolean p_AddAdditionalSpectrumEmission := false) runs on EUTRA_PTC + { + var template (value) RachProcedureConfig_Type v_RachProcedureConfig; + var template (value) DL_DCCH_Message v_RRCConnectionReconfiguration; + + v_RachProcedureConfig := cs_RachProcedureConfig_CRNTI_HO(f_EUTRA_CellInfo_GetRAR_TA(p_TargetCellId), + f_EUTRA_CellInfo_GetDL_ChBandwidth(p_TargetCellId)); + + v_RRCConnectionReconfiguration := f_EUTRA_RRCConnectionReconfiguration_IntraLTE_HO_InterCell(p_SourcePCellId, + p_TargetCellId, + p_C_RNTI, + p_MeasConfig, + p_Dsr_TransMax, + p_CarrierFreqEutra, + p_AddAdditionalSpectrumEmission, + cs_RRCConnectionReconfiguration_SCell_AddMod_IEs(omit, {p_SCellIndexRel} )); + f_EUTRA_508RRC_IntraLTE_HO_InterCell_Common(p_SourcePCellId, + p_TargetCellId, + v_RRCConnectionReconfiguration, + v_RachProcedureConfig, + p_DrbConfigList, + p_C_RNTI, + p_DciUlInfo_TargetCell, + p_UL_GrantConfig_SourceCell, + p_UL_GrantConfig_TargetCell, + p_CnfFlag); + + //Release DRX and MeasGap at the P cell (if necessary) + if (f_EUTRA_CellInfo_DrxIsConfigured(p_SourcePCellId)) { + f_EUTRA_SS_DrxCtrlConfig(p_SourcePCellId, cs_DrxCtrl_None, -, p_CnfFlag); + } + + f_EUTRA_SS_MeasGapCtrlConfig(p_SourcePCellId, cs_MeasGapCtrl_None, -, p_CnfFlag); + // Release Associated Pcell list in Pcell + f_EUTRA_SS_CommonCellConfig(p_SourcePCellId, cas_ServingCellRelease_REQ(p_SourcePCellId, cs_TimingInfo_Now, p_CnfFlag)); + + if (p_TargetCellId != p_SCellIdRel) { + // No RACH configuration as Already configured for C-RNTI based contention + + //No update of C-RNTI + + // Release DRX and MeasGap at the S cell (if necessary) + if (f_EUTRA_CellInfo_DrxIsConfigured(p_SCellIdRel)) { + f_EUTRA_SS_DrxCtrlConfig(p_SCellIdRel, cs_DrxCtrl_None, -, p_CnfFlag); + } + + f_EUTRA_SS_MeasGapCtrlConfig(p_SCellIdRel, cs_MeasGapCtrl_None, -, p_CnfFlag); + + // Configure SCell as Scell + f_EUTRA_SS_CommonCellConfig(p_SCellIdRel, cas_ServingCellRelease_REQ(p_SCellIdRel, cs_TimingInfo_Now, p_CnfFlag)); + + // configure Default grant configuration on S cell + f_EUTRA_SS_CommonCellConfig(p_SCellIdRel, cas_ULGrantAllocation_REQ(p_SCellIdRel, cs_TimingInfo_Now, -, cs_PUCCH_Synch_None, -, p_CnfFlag)); + } + } + + + + /////////////////////////////////////////////////////////////////////////////////// + // Test Case Specific Functions + ////////////////////////////////////////////////////////////////////////////////// + /* + * @desc Common function: REFERENCE TS 36.523-1 clause 8.2.4.17.1/2 + * @param p_PCellId + * @param p_SCellId + * @param p_CA_Type + * @status APPROVED (LTE_A) + */ + function f_TC_8_2_4_17_Common(EUTRA_CellId_Type p_PCellId, + EUTRA_CellId_Type p_SCellId, + CA_Tested_Type p_CA_Type) runs on EUTRA_PTC + { + var PhysCellId v_PhysicalCellIdentity_Scell, v_PhysicalCellIdentity_Pcell; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var Frequency_IE_Type v_Frequency_IE_PCell; + var Frequency_IE_Type v_Frequency_IE_Scell; + var ChannelBandwidthDependency_Type v_ChBandDependency_PCell; + var ChannelBandwidthDependency_Type v_ChBandDependency_Scell; + var template (value) CellPowerList_Type v_CellPowerList_AtT1; + var boolean v_UL_CA := pc_UL_CA; + var integer v_Arfcn_PCell; + var SCell_DL_Bandwidth_Type v_PCell_DL_Bandwidth; + var template (value) SCellToAddMod_r10 v_SCellToAddMod; + var template (omit) CommonSCell_UL_Configuration_Type v_CommonSCell_UL_Configuration := omit; + var template (omit) DedicatedSCell_UL_Configuration_Type v_DedicatedSCell_UL_Configuration := omit; + var EUTRA_FDD_TDD_CellInfo_Type v_FDD_TDDInfo; + var template(omit) TDD_Config v_TDD_Config := omit; // omitted in FDD + var CarrierFreqEUTRA v_CarrierFreq_Scell; + var template (value) PUCCH_ConfigDedicated_v1020 v_PUCCH_ConfigDedicated; + var template (omit) AdditionalSpectrumEmissionCA_r10_Type v_AdditionalSpectrumEmissionCA_r10 := omit; + var MeasObjectId v_MeasObjectId; + var MeasObjectId v_MeasObjectId_PCell :=tsc_IdMeasObject_f1 ; //@sic R5s144683 sic@ + var Ul_Bandwidth_Type v_UL_Bandwidth ; + var Dl_Bandwidth_Type v_DL_Bandwidth ; + var ChannelBandwidthDependency_Type v_ChannelBandwidthDependency; + var RadioResourceConfigCommonSIB v_RadioResourceConfigCommonSIB ; + var EUTRA_CellSysInfo_Type v_EUTRA_CellSysInfo_Type ; + + var default v_DefaultRef; + + v_CellPowerList_AtT1 := { + cs_CellPower(p_SCellId, -79) + }; + if (p_CA_Type == CA_IntraBand) { /* @sic R5-141113 sic@ */ + v_MeasObjectId := tsc_IdMeasObject_f2; + if (p_PCellId == eutra_Cell6) //@sic R5s144683 sic@ + { + v_MeasObjectId_PCell := tsc_IdMeasObject_f3; + } + } else { + v_MeasObjectId := tsc_IdMeasObject_f5; + } + f_EUTRA_Init(c3); + f_EUTRA_CA_InitCells({p_PCellId, p_SCellId}, p_CA_Type, c3); + + //Get cell dependant parameters + v_PhysicalCellIdentity_Pcell := f_EUTRA_CellInfo_GetPhyCellId(p_PCellId); + + v_PhysicalCellIdentity_Scell := f_EUTRA_CellInfo_GetPhyCellId(p_SCellId); + v_Frequency_IE_Scell := f_EUTRA_CellInfo_GetFrequencyIEs(p_SCellId); + v_ChBandDependency_Scell := f_EUTRA_BandDependentParam(v_Frequency_IE_Scell.DL_ChBandwidth, + v_Frequency_IE_Scell.UL_ChBandwidth); + + v_Frequency_IE_PCell := f_EUTRA_CellInfo_GetFrequencyIEs(p_PCellId); + v_ChBandDependency_PCell := f_EUTRA_BandDependentParam(v_Frequency_IE_PCell.DL_ChBandwidth, + v_Frequency_IE_PCell.UL_ChBandwidth); + v_CarrierFreq_Scell := f_EUTRA_CellInfo_GetEARFCN(p_SCellId); + + //Set maximim cell powel level for cell p_SCellId to be used in creation + f_EUTRA_CellInfo_InitMaxReferencePower(p_SCellId, -79); + + //Set C-RNTI to be used in s-cell creation + f_EUTRA_CellInfo_SetC_RNTI(p_SCellId, tsc_C_RNTI_Def); + + //Create and configure all cells + f_EUTRA_CellConfig_Pcell_Def(p_PCellId); + f_EUTRA_CellConfig_Scell(p_SCellId); //No DRB's created + + // Bring UE to initial state + f_EUTRA_Preamble(p_PCellId, STATE2_IDLEUPDATE); + f_EUTRA_RbEst_Def(p_PCellId); + + f_EUTRA_TestBody_Set(true); + + //@siclog "Step 1 - 2" siclog@ + //Transmit RRCConnectionReconfiguration to add Scell + //Receive RRCConnectionReconfigurationComplete + f_EUTRA_508RRC_AddMod_1Scell(p_PCellId, + p_SCellId, + 1, //SCellIndex_r10 + p_CA_Type, // CA Type + v_UL_CA , // UL CA desired, + -, // C_RNTI default := tsc_C_RNTI_Def, + -, // MeasGapConfig default cs_508_MeasGapConfig_GP1 + -, // Reconfig message omit + -, // DciUlInfo_Type default cs_DciInfo_CcchDcchDtchUL_Def, + -, // UL_GrantConfig_Type default := cs_UL_GrantConfig_Def, + -); // p_CnfFlag := tsc_NoCnfReq + + //@siclog "Step 3-4" siclog@ + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(p_PCellId, + cs_508_RRCConnectionReconfiguration_ConditionMEAS(v_RRC_TI, + cs_Measurement_Config_A3_InterFreq_CA(v_Frequency_IE_PCell.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_PCell.AllowedMeasBandwidth, + v_Frequency_IE_Scell.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Scell.AllowedMeasBandwidth, + v_MeasObjectId, + omit,//@sic R5s144683 sic@ + v_MeasObjectId_PCell, + cs_ReportConfig_reportConfigEUTRA_eventA3( 0, true, 0, ms640, rsrp, both, 1, ms1024, r1)))); + //@siclog "Step 5" siclog@ + //Set cell power level according to T1 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + + //@siclog "Step 6" siclog@ + //Receive MeasurementReport + SRB.receive(car_SRB1_RrcPdu_IND(p_PCellId, cr_MeasurementReport(1, //Meas id + ?, //RSRP result + ?, //RSRQ result + cr_MeasResultNeighCells_measResultListEUTRA_1Entry(v_PhysicalCellIdentity_Scell, + omit, //CGI info + ?, //RSRP result + ?),//RSRQ result + cr_MeasResultServFreqList(1, ?, ?)))); + + //Activate the default to receive further measurement reports for cell 2 on cell 1 + v_DefaultRef := activate(a_EUTRA_AddDefault_PeriodicalMeasurmentReport(p_PCellId, + cr_MeasurementReport(1, + ?, + ?, + cr_MeasResultNeighCells_measResultListEUTRA_1Entry(v_PhysicalCellIdentity_Scell, omit, ?, ?), + cr_MeasResultServFreqList(1, ?, ?)))); + // @verdict RRCConnectionReconfigurationComplete received on Cell 3 + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.2.4.17 Step 6"); + + v_Arfcn_PCell := f_EUTRA_CellInfo_GetEARFCN_DL(p_PCellId); + v_PCell_DL_Bandwidth := f_EUTRA_CellInfo_GetSCell_DL_ChBandwidth(p_PCellId); + v_UL_Bandwidth := f_EUTRA_CellInfo_GetUL_ChBandwidth(p_PCellId); + v_DL_Bandwidth := f_EUTRA_CellInfo_GetDL_ChBandwidth(p_PCellId); + v_ChannelBandwidthDependency := f_EUTRA_BandDependentParam(v_DL_Bandwidth, v_UL_Bandwidth); + v_EUTRA_CellSysInfo_Type := f_EUTRA_CellInfo_GetSYSINFO(p_PCellId); + v_RadioResourceConfigCommonSIB := v_EUTRA_CellSysInfo_Type.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon; + v_FDD_TDDInfo := f_EUTRA_CellInfo_GetFDD_TDD_Info(p_PCellId); + if (v_FDD_TDDInfo.FDD_TDD == TDD) { // initialise tdd-Configuration to be used in + v_TDD_Config := cs_TDD_ConfigDef(v_FDD_TDDInfo.TDD_SubframeAssignment); // Value omitted in FDD + v_PUCCH_ConfigDedicated := cs_508_PUCCH_ConfigDedicated_v1020_2TX(cs_N1PUCCH_AN_CS_r10_FDD_1TX, cs_N1PUCCH_AN_CS_r10_FDD_2TX); //@sic R5-133275 sic@ + } + else { //FDD + v_PUCCH_ConfigDedicated := cs_508_PUCCH_ConfigDedicated_v1020_1TX(cs_N1PUCCH_AN_CS_r10_FDD_1TX); + // TBD for 2TX + } + + if (v_UL_CA) { + if (p_CA_Type == CA_InterBand) { // 36.508 Table 4.8.2.1.6-1 + v_AdditionalSpectrumEmissionCA_r10 := cs_AdditionalSpectrumEmissionCA_r10_Def; + } + + v_CommonSCell_UL_Configuration := cs_RadioResourceConfigCommonSCell_UL_Configuration_DEFAULT(v_ChannelBandwidthDependency.Pusch_HoppingOffset, v_RadioResourceConfigCommonSIB.soundingRS_UL_ConfigCommon); + if (v_FDD_TDDInfo.FDD_TDD == TDD) { + v_DedicatedSCell_UL_Configuration := cs_RadioResourceConfigDedicatedSCell_UL_Configuration_DEFAULT(cs_CQI_ReportPeriodic_r10_DEFAULT_TDD); + } + else { + v_DedicatedSCell_UL_Configuration := cs_RadioResourceConfigDedicatedSCell_UL_Configuration_DEFAULT(cs_CQI_ReportPeriodic_r10_DEFAULT_FDD); + } + } + v_SCellToAddMod := cs_SCellToAddMod_r10(1, + v_PhysicalCellIdentity_Pcell, + v_Arfcn_PCell, + cs_508_RadioResourceConfigCommonSCell_r10_DEFAULT(v_PCell_DL_Bandwidth, tsc_P_b_1Tx, v_CommonSCell_UL_Configuration, v_TDD_Config), + cs_RadioResourceConfigDedicatedSCell_r10(cs_PhysicalConfigDedicatedSCell_r10_DEFAULT(v_DedicatedSCell_UL_Configuration))); + //@siclog "Step 7 - 8" siclog@ + f_EUTRA_508RRC_IntraLTE_CA_HO_InterCell(p_PCellId,p_SCellId,p_SCellId, p_PCellId,{v_SCellToAddMod},{1},v_UL_CA); + + deactivate(v_DefaultRef); + + //@siclog "Step 9" siclog@ + //Check if UE is in state RRC_Connected + f_EUTRA_508Check_ConnectedState(p_SCellId); + /////////////////////// + // Postamble + ///////// + f_EUTRA_TestBody_Set(false); + + //Switch/power off UE + f_EUTRA_Postamble(p_SCellId, E2_CONNECTED); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.4.17.1 + * @status APPROVED (LTE_A) + */ + function f_TC_8_2_4_17_1_EUTRA() runs on EUTRA_PTC + { // CA / RRC connection reconfiguration / Handover / Success / PCell Change and SCell addition / Intra-band Contiguous CA + f_TC_8_2_4_17_Common(eutra_Cell1, eutra_Cell3, CA_IntraBand); /* @sic R5-141113 sic@ */ + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.4.17.2 + * @status APPROVED (LTE_A) + */ + function f_TC_8_2_4_17_2_EUTRA() runs on EUTRA_PTC + { // CA / RRC connection reconfiguration / Handover / Success / PCell Change and SCell addition / Inter-Band CA + f_TC_8_2_4_17_Common(eutra_Cell1, eutra_Cell10, CA_InterBand); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.4.17.3 + * @status + */ + function f_TC_8_2_4_17_3_EUTRA() runs on EUTRA_PTC + { // CA / RRC connection reconfiguration / Handover / Success / PCell Change and SCell addition / Intra-band non-Contiguous CA + f_TC_8_2_4_17_Common(eutra_Cell6, eutra_Cell3, CA_IntraBand); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.4.18.1/2 + * @param p_PCellId + * @param p_NeighCell + * @param p_SCellId + * @param p_CA_Type + * @status APPROVED (LTE_A) + */ + function f_TC_8_2_4_18_Common(EUTRA_CellId_Type p_PCellId, + EUTRA_CellId_Type p_NeighCell, + EUTRA_CellId_Type p_SCellId, + CA_Tested_Type p_CA_Type) runs on EUTRA_PTC + { + var PhysCellId v_PhysicalCellIdentity_Scell, v_PhysicalCellIdentity_NeighCell; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var Frequency_IE_Type v_Frequency_IE_PCell; + var Frequency_IE_Type v_Frequency_IE_Scell; + var ChannelBandwidthDependency_Type v_ChBandDependency_PCell; + var ChannelBandwidthDependency_Type v_ChBandDependency_Scell; + var template (value) CellPowerList_Type v_CellPowerList_AtT0; + var template (value) CellPowerList_Type v_CellPowerList_AtT1; + var boolean v_UL_CA := pc_UL_CA; + var CarrierFreqEUTRA v_CarrierFreq_Scell; + var MeasObjectId v_MeasObjectId ; + var MeasObjectId v_MeasObjectId_PCell :=tsc_IdMeasObject_f1 ; //@sic R5s144680 sic@ + var default v_DefaultRef; + + v_CellPowerList_AtT0 := { + cs_CellPower(p_NeighCell, -97), + cs_CellPower(p_SCellId, -91) + }; + v_CellPowerList_AtT1 := { + cs_CellPower(p_NeighCell, -79), + cs_CellPower(p_SCellId, -85) + }; + if (p_CA_Type == CA_IntraBand) { /* @sic R5-141113 sic@ */ + v_MeasObjectId := tsc_IdMeasObject_f2; + if (p_PCellId == eutra_Cell6) //@sic R5s144680 sic@ + { + v_MeasObjectId_PCell := tsc_IdMeasObject_f3; + } + } else { + v_MeasObjectId := tsc_IdMeasObject_f5; + } + + f_EUTRA_Init(c3); + f_EUTRA_CA_InitCells({p_PCellId, p_SCellId}, p_CA_Type, c3); + //@sic R5-144655, R5-144681 sic@ + // Only needed for the case of non contigious as cell 13 PLMN as per table 4.4.2-2 is PLMN 3 + f_EUTRA_CellInfo_SetPLMN_1Entry ( p_NeighCell, cs_HPLMN_Def );//Home PLMN + f_EUTRA_CellInfo_SetTAC(p_NeighCell, oct2bit(tsc_TAC1)); + //Set maximim cell powel level for intra freq cell to be used in creation + f_EUTRA_CellInfo_InitMaxReferencePower(p_NeighCell, -79); + + //Get cell dependant parameters + v_PhysicalCellIdentity_Scell := f_EUTRA_CellInfo_GetPhyCellId(p_SCellId); + v_Frequency_IE_Scell := f_EUTRA_CellInfo_GetFrequencyIEs(p_SCellId); + v_ChBandDependency_Scell := f_EUTRA_BandDependentParam(v_Frequency_IE_Scell.DL_ChBandwidth, + v_Frequency_IE_Scell.UL_ChBandwidth); + + v_Frequency_IE_PCell := f_EUTRA_CellInfo_GetFrequencyIEs(p_PCellId); + v_ChBandDependency_PCell := f_EUTRA_BandDependentParam(v_Frequency_IE_PCell.DL_ChBandwidth, + v_Frequency_IE_PCell.UL_ChBandwidth); + v_CarrierFreq_Scell := f_EUTRA_CellInfo_GetEARFCN(p_SCellId); + + v_PhysicalCellIdentity_NeighCell := f_EUTRA_CellInfo_GetPhyCellId(p_NeighCell); + + + //Set C-RNTI to be used in s-cell creation + f_EUTRA_CellInfo_SetC_RNTI(p_SCellId, tsc_C_RNTI_Def); + + //Create and configure all cells + f_EUTRA_CellConfig_Pcell_Def(p_PCellId); + f_EUTRA_CellConfig_Scell(p_SCellId); //No DRB's created + f_EUTRA_CellConfig_Def(p_NeighCell); //Normal cell configured + + // ring UE to initial state + f_EUTRA_Preamble(p_PCellId, STATE2_IDLEUPDATE); + f_EUTRA_RbEst_Def(p_PCellId); + //Set cell power level according to T0 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT0); + + f_EUTRA_TestBody_Set(true); + + //@siclog "Step 1 - 2" siclog@ + //Transmit RRCConnectionReconfiguration to add Scell + //Receive RRCConnectionReconfigurationComplete + f_EUTRA_508RRC_AddMod_1Scell(p_PCellId, + p_SCellId, + 1, //SCellIndex_r10 + p_CA_Type, // CA Type + v_UL_CA); + + //@siclog "Step 3-4" siclog@ + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(p_PCellId, + cs_508_RRCConnectionReconfiguration_ConditionMEAS(v_RRC_TI, + cs_Measurement_Config_A3_IntraFreq_CA(v_Frequency_IE_PCell.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_PCell.AllowedMeasBandwidth, + v_Frequency_IE_Scell.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Scell.AllowedMeasBandwidth, + v_MeasObjectId, + omit,//@sic R5s144680 sic@ + v_MeasObjectId_PCell, + cs_ReportConfig_reportConfigEUTRA_eventA3( 0, true, 0, ms2560, rsrp, both, 1, ms1024, r1)))); //@sic R5-140756 sic@ + //@siclog "Step 5" siclog@ + //Set cell power level according to T1 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + + //@siclog "Step 6" siclog@ + //Receive MeasurementReport + SRB.receive(car_SRB1_RrcPdu_IND(p_PCellId, cr_MeasurementReport(1, //Meas id + ?, //RSRP result + ?, //RSRQ result + cr_MeasResultNeighCells_measResultListEUTRA_1Entry(v_PhysicalCellIdentity_NeighCell, + omit, //CGI info + ?, //RSRP result + ?),//RSRQ result + cr_MeasResultServFreqList(1, ?, ?)))); + + //Activate the default to receive further measurement reports for cell 2 on cell 1 + v_DefaultRef := activate(a_EUTRA_AddDefault_PeriodicalMeasurmentReport(p_PCellId, + cr_MeasurementReport(1, + ?, + ?, + cr_MeasResultNeighCells_measResultListEUTRA_1Entry(v_PhysicalCellIdentity_NeighCell, omit, ?, ?), + cr_MeasResultServFreqList(1, ?, ?)))); + + + //* @verdict Measurement Report received on Cell 3 + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.2.4.18 or 8.2.4.21 Step 6"); + + //@siclog "Step 7-8" siclog@ + f_EUTRA_508RRC_IntraLTE_CA_HO_ToNormalInterCell(p_PCellId, p_SCellId, 1, p_NeighCell); + + deactivate(v_DefaultRef); + + //@siclog "Step 9" siclog@ + //Check if UE is in state RRC_Connected + f_EUTRA_508Check_ConnectedState(p_NeighCell); + + f_EUTRA_TestBody_Set(false); + + //Switch/power off UE + f_EUTRA_Postamble(p_NeighCell, E2_CONNECTED); + } + + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.4.18.1 + * @status APPROVED (LTE_A) + */ + function f_TC_8_2_4_18_1_EUTRA() runs on EUTRA_PTC + { // CA / RRC connection reconfiguration / Handover / Success / SCell release / Intra-band Contiguous CA + f_TC_8_2_4_18_Common(eutra_Cell1, eutra_Cell2, eutra_Cell3, CA_IntraBand); /* @sic R5-141113 sic@ */ + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.4.18.2 + * @status APPROVED (LTE_A) + */ + function f_TC_8_2_4_18_2_EUTRA() runs on EUTRA_PTC + { // CA / RRC connection reconfiguration / Handover / Success / SCell release / Inter-Band CA + f_TC_8_2_4_18_Common(eutra_Cell1,eutra_Cell2, eutra_Cell10, CA_InterBand); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.4.18.3 + * @status + */ + function f_TC_8_2_4_18_3_EUTRA() runs on EUTRA_PTC + { // CA / RRC connection reconfiguration / Handover / Success / SCell release / Intra-Band non-contagious CA + f_TC_8_2_4_18_Common(eutra_Cell6,eutra_Cell13, eutra_Cell13, CA_InterBand); + } + + + /* + * @desc Common function: REFERENCE TS 36.523-1 clause 8.2.4.19.1/2 + * @param p_PCellId + * @param p_SCellId + * @param p_PCellId2 + * @param p_CA_Type + * @status APPROVED (LTE_A) + */ + function f_TC_8_2_4_19_Common(EUTRA_CellId_Type p_PCellId, + EUTRA_CellId_Type p_SCellId, + EUTRA_CellId_Type p_PCellId2, + CA_Tested_Type p_CA_Type) runs on EUTRA_PTC + { + var PhysCellId v_PhysicalCellIdentity_Scell; + var PhysCellId v_PhysicalCellIdentity_Pcell2; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var Frequency_IE_Type v_Frequency_IE_PCell; + var Frequency_IE_Type v_Frequency_IE_PCell2; + var Frequency_IE_Type v_Frequency_IE_Scell; + var ChannelBandwidthDependency_Type v_ChBandDependency_PCell; + var ChannelBandwidthDependency_Type v_ChBandDependency_PCell2; + var ChannelBandwidthDependency_Type v_ChBandDependency_Scell; + var template (value) CellPowerList_Type v_CellPowerList_AtT0; + var template (value) CellPowerList_Type v_CellPowerList_AtT1; + var boolean v_UL_CA := pc_UL_CA; + var CarrierFreqEUTRA v_CarrierFreq_Scell; + var CarrierFreqEUTRA v_CarrierFreq_Pcell2; + var MeasObjectId v_MeasObjectId, v_MeasObjectId2 ; + var default v_DefaultRef; + + v_CellPowerList_AtT0 := { + cs_CellPower(p_SCellId, -91), + cs_CellPower(p_PCellId2, -97) + }; + v_CellPowerList_AtT1 := { + cs_CellPower(p_PCellId2, -79) + }; + if (p_CA_Type == CA_IntraBand) { /* @sic R5-141113 sic@ */ + v_MeasObjectId := tsc_IdMeasObject_f1; + v_MeasObjectId2 := tsc_IdMeasObject_f3; + } else { + v_MeasObjectId := tsc_IdMeasObject_f5; + v_MeasObjectId2 := tsc_IdMeasObject_f1; //@sic R5s130788 sic@ + } + f_EUTRA_Init(c3); + f_EUTRA_CA_InitCells({p_PCellId, p_SCellId, p_PCellId2}, p_CA_Type, c3); + + //Get cell dependant parameters + v_PhysicalCellIdentity_Scell := f_EUTRA_CellInfo_GetPhyCellId(p_SCellId); + v_Frequency_IE_Scell := f_EUTRA_CellInfo_GetFrequencyIEs(p_SCellId); + v_ChBandDependency_Scell := f_EUTRA_BandDependentParam(v_Frequency_IE_Scell.DL_ChBandwidth, + v_Frequency_IE_Scell.UL_ChBandwidth); + + v_Frequency_IE_PCell := f_EUTRA_CellInfo_GetFrequencyIEs(p_PCellId); + v_ChBandDependency_PCell := f_EUTRA_BandDependentParam(v_Frequency_IE_PCell.DL_ChBandwidth, + v_Frequency_IE_PCell.UL_ChBandwidth); + v_CarrierFreq_Scell := f_EUTRA_CellInfo_GetEARFCN(p_SCellId); + + v_Frequency_IE_PCell2 := f_EUTRA_CellInfo_GetFrequencyIEs(p_PCellId2); + v_ChBandDependency_PCell2 := f_EUTRA_BandDependentParam(v_Frequency_IE_PCell2.DL_ChBandwidth, + v_Frequency_IE_PCell2.UL_ChBandwidth); + v_CarrierFreq_Pcell2 := f_EUTRA_CellInfo_GetEARFCN(p_PCellId2); + v_PhysicalCellIdentity_Pcell2 := f_EUTRA_CellInfo_GetPhyCellId(p_PCellId2); + + //Set maximim cell powel level for cell p_SCellId to be used in creation + f_EUTRA_CellInfo_InitMaxReferencePower(p_PCellId2, -79); + + //Set C-RNTI to be used in s-cell creation + f_EUTRA_CellInfo_SetC_RNTI(p_SCellId, tsc_C_RNTI_Def); + f_EUTRA_CellInfo_SetC_RNTI(p_PCellId2, tsc_C_RNTI_Def); + //Create and configure all cells + f_EUTRA_CellConfig_Pcell_Def(p_PCellId); + f_EUTRA_CellConfig_Scell(p_SCellId); //No DRB's created + f_EUTRA_CellConfig_Pcell_Def(p_PCellId2); + + // Bring UE to initial state + f_EUTRA_Preamble(p_PCellId, STATE2_IDLEUPDATE); + f_EUTRA_RbEst_Def(p_PCellId); + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT0); + + f_EUTRA_TestBody_Set(true); + + //@siclog "Step 1 - 2" siclog@ + //Transmit RRCConnectionReconfiguration to add Scell + //Receive RRCConnectionReconfigurationComplete + f_EUTRA_508RRC_AddMod_1Scell(p_PCellId, + p_SCellId, + 1, //SCellIndex_r10 + p_CA_Type, // CA Type + v_UL_CA , // UL CA desired, + -, // C_RNTI default := tsc_C_RNTI_Def, + -, // MeasGapConfig default cs_508_MeasGapConfig_GP1 + -, // Reconfig message omit + -, // DciUlInfo_Type default cs_DciInfo_CcchDcchDtchUL_Def, + -, // UL_GrantConfig_Type default := cs_UL_GrantConfig_Def, + -); // p_CnfFlag := tsc_NoCnfReq + + //@siclog "Step 3-4" siclog@ + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(p_PCellId, + cs_508_RRCConnectionReconfiguration_ConditionMEAS(v_RRC_TI, + cs_Measurement_Config_A3_InterFreq_CA_HO(v_Frequency_IE_PCell.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_PCell.AllowedMeasBandwidth, + v_Frequency_IE_Scell.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Scell.AllowedMeasBandwidth, + v_Frequency_IE_PCell2.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_PCell2.AllowedMeasBandwidth, + v_MeasObjectId, + v_MeasObjectId2, + cs_508_MeasGapConfig_GP1))); + //@siclog "Step 5" siclog@ + //Set cell power level according to T1 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + + //@siclog "Step 6" siclog@ + //Receive MeasurementReport + SRB.receive(car_SRB1_RrcPdu_IND(p_PCellId, cr_MeasurementReport(1, //Meas id + ?, //RSRP result + ?, //RSRQ result + cr_MeasResultNeighCells_measResultListEUTRA_1Entry(v_PhysicalCellIdentity_Pcell2, + omit, //CGI info + ?, //RSRP result + ?),//RSRQ result + cr_MeasResultServFreqList(1, ?, ?)))); + + //Activate the default to receive further measurement reports for Pcell 2 on Pcell + v_DefaultRef := activate(a_EUTRA_AddDefault_PeriodicalMeasurmentReport(p_PCellId, + cr_MeasurementReport(1, + ?, + ?, + cr_MeasResultNeighCells_measResultListEUTRA_1Entry(v_PhysicalCellIdentity_Pcell2, omit, ?, ?), + cr_MeasResultServFreqList(1, ?, ?)))); + // @verdict RRCConnectionReconfigurationComplete received on Cell 3 + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.2.4.19 Step 6"); + //@siclog "Step 7 - 8" siclog@ + f_EUTRA_508RRC_IntraLTE_CA_HO_InterCell(p_PCellId,p_SCellId,p_PCellId2, p_SCellId,-,-,v_UL_CA,-,-,tsc_C_RNTI_Def); //@sic R5s130788 sic@ + + deactivate(v_DefaultRef); + + //@siclog "Step 9" siclog@ + //Check if UE is in state RRC_Connected + f_EUTRA_508Check_ConnectedState(p_PCellId2); + + f_EUTRA_TestBody_Set(false); + + //Switch/power off UE + f_EUTRA_Postamble(p_PCellId2, E2_CONNECTED); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.4.19.1 + * @status APPROVED (LTE_A) + */ + function f_TC_8_2_4_19_1_EUTRA() runs on EUTRA_PTC + { // CA / RRC connection reconfiguration / Handover / Success / PCell Change / SCell no Change / Intra-band Contiguous CA + f_TC_8_2_4_19_Common(eutra_Cell3, eutra_Cell1, eutra_Cell6, CA_IntraBand); /* @sic R5-141113 sic@ */ + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.4.19.2 + * @status APPROVED (LTE_A) + */ + function f_TC_8_2_4_19_2_EUTRA() runs on EUTRA_PTC + { // CA / RRC connection reconfiguration / Handover / Success / PCell Change / SCell no Change / Inter-Band CA + f_TC_8_2_4_19_Common(eutra_Cell3, eutra_Cell10,eutra_Cell1, CA_InterBand); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.4.19.3 + * @status + */ + // The prose configures cell 1, cell 10 and cell 6, with cell 1 and cell 10 [inter band cells] in CA, which does not meat the test purpose. + // The test case needs 4 frequencies in a band to acvieve the test purpose and currently only 3 frequencies are defined. + // Test case is not ready for validation. + function f_TC_8_2_4_19_3_EUTRA() runs on EUTRA_PTC + { // CA / RRC connection reconfiguration / Handover / Success / PCell Change / SCell no Change / Intra-band non-Contiguous CA + f_TC_8_2_4_19_Common(eutra_Cell1, eutra_Cell10, eutra_Cell6, CA_IntraBand); + } + + /* + * @desc Common function: REFERENCE TS 36.523-1 clause 8.2.4.20.1/2 + * @param p_PCellId + * @param p_SCellId + * @param p_PCellId2 + * @param p_CA_Type + * @status APPROVED (LTE_A) + */ + function f_TC_8_2_4_20_Common(EUTRA_CellId_Type p_PCellId, + EUTRA_CellId_Type p_SCellId, + EUTRA_CellId_Type p_PCellId2, + CA_Tested_Type p_CA_Type) runs on EUTRA_PTC + { // CA / RRC connection reconfiguration / Handover / Success / SCell Change + + var PhysCellId v_PhysicalCellIdentity_Pcell; + var PhysCellId v_PhysicalCellIdentity_Scell; + var PhysCellId v_PhysicalCellIdentity_Pcell2; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var Frequency_IE_Type v_Frequency_IE_PCell; + var Frequency_IE_Type v_Frequency_IE_PCell2; + var Frequency_IE_Type v_Frequency_IE_Scell; + var ChannelBandwidthDependency_Type v_ChBandDependency_PCell; + var ChannelBandwidthDependency_Type v_ChBandDependency_PCell2; + var ChannelBandwidthDependency_Type v_ChBandDependency_Scell; + var template (value) CellPowerList_Type v_CellPowerList_AtT0; + var template (value) CellPowerList_Type v_CellPowerList_AtT1; + var boolean v_UL_CA := pc_UL_CA; + var integer v_Arfcn_PCell ; + var SCell_DL_Bandwidth_Type v_PCell_DL_Bandwidth; + var template (value) SCellToAddMod_r10 v_SCellToAddMod; + var template (omit) CommonSCell_UL_Configuration_Type v_CommonSCell_UL_Configuration := omit; + var template (omit) DedicatedSCell_UL_Configuration_Type v_DedicatedSCell_UL_Configuration := omit; + var EUTRA_FDD_TDD_CellInfo_Type v_FDD_TDDInfo; + var template(omit) TDD_Config v_TDD_Config := omit; // omitted in FDD + var CarrierFreqEUTRA v_CarrierFreq_Scell, v_CarrierFreq_Pcell2; + var template (value) PUCCH_ConfigDedicated_v1020 v_PUCCH_ConfigDedicated; + var template (omit) AdditionalSpectrumEmissionCA_r10_Type v_AdditionalSpectrumEmissionCA_r10 := omit; + var MeasObjectId v_MeasObjectId ; + var MeasObjectId v_MeasObjectId_PCell :=tsc_IdMeasObject_f1 ; //@sic R5s144680 sic@ + var Ul_Bandwidth_Type v_UL_Bandwidth ; + var Dl_Bandwidth_Type v_DL_Bandwidth ; + var ChannelBandwidthDependency_Type v_ChannelBandwidthDependency; + var RadioResourceConfigCommonSIB v_RadioResourceConfigCommonSIB; + var EUTRA_CellSysInfo_Type v_EUTRA_CellSysInfo_Type; + + var default v_DefaultRef; + + v_CellPowerList_AtT0 := { + cs_CellPower(p_SCellId, -91), + cs_CellPower(p_PCellId2, -97) + }; + v_CellPowerList_AtT1 := { + cs_CellPower(p_SCellId, -85), + cs_CellPower(p_PCellId2, -79) + }; + + if (p_CA_Type == CA_IntraBand) { /* @sic R5-141113 R5s140258 sic@ */ + v_MeasObjectId := tsc_IdMeasObject_f2; + if (p_PCellId == eutra_Cell6) //@sic R5s144680 sic@ + { + v_MeasObjectId_PCell := tsc_IdMeasObject_f3; + } + } else { + v_MeasObjectId := tsc_IdMeasObject_f5; + } + f_EUTRA_Init(c3); + f_EUTRA_CA_InitCells({p_PCellId, p_SCellId, p_PCellId2}, p_CA_Type, c3); + //@sic R5-144655, R5-144656 sic@ + f_EUTRA_CellInfo_SetPLMN_1Entry ( p_PCellId2, cs_HPLMN_Def );//Home PLMN + f_EUTRA_CellInfo_SetTAC(p_PCellId, oct2bit(tsc_TAC1)); + //Get cell dependant parameters + v_PhysicalCellIdentity_Pcell := f_EUTRA_CellInfo_GetPhyCellId(p_PCellId); + + + + v_PhysicalCellIdentity_Scell := f_EUTRA_CellInfo_GetPhyCellId(p_SCellId); + v_Frequency_IE_Scell := f_EUTRA_CellInfo_GetFrequencyIEs(p_SCellId); + v_ChBandDependency_Scell := f_EUTRA_BandDependentParam(v_Frequency_IE_Scell.DL_ChBandwidth, + v_Frequency_IE_Scell.UL_ChBandwidth); + v_Frequency_IE_PCell := f_EUTRA_CellInfo_GetFrequencyIEs(p_PCellId); + v_ChBandDependency_PCell := f_EUTRA_BandDependentParam(v_Frequency_IE_PCell.DL_ChBandwidth, + v_Frequency_IE_PCell.UL_ChBandwidth); + v_CarrierFreq_Scell := f_EUTRA_CellInfo_GetEARFCN(p_SCellId); + + v_Frequency_IE_PCell2 := f_EUTRA_CellInfo_GetFrequencyIEs(p_PCellId2); + v_ChBandDependency_PCell2 := f_EUTRA_BandDependentParam(v_Frequency_IE_PCell2.DL_ChBandwidth, + v_Frequency_IE_PCell2.UL_ChBandwidth); + v_CarrierFreq_Pcell2 := f_EUTRA_CellInfo_GetEARFCN(p_PCellId2); + v_PhysicalCellIdentity_Pcell2 := f_EUTRA_CellInfo_GetPhyCellId(p_PCellId2); + + //Set maximim cell powel level for cell p_SCellId to be used in creation + f_EUTRA_CellInfo_InitMaxReferencePower(p_PCellId2, -79); + + //Set C-RNTI to be used in s-cell creation + f_EUTRA_CellInfo_SetC_RNTI(p_SCellId, tsc_C_RNTI_Def); + f_EUTRA_CellInfo_SetC_RNTI(p_PCellId2, tsc_C_RNTI_Def); + + //Create and configure all cells + f_EUTRA_CellConfig_Pcell_Def(p_PCellId); + f_EUTRA_CellConfig_Scell(p_SCellId); //No DRB's created + f_EUTRA_CellConfig_Pcell_Def(p_PCellId2); + + // Bring UE to initial state + f_EUTRA_Preamble(p_PCellId, STATE2_IDLEUPDATE); + f_EUTRA_RbEst_Def(p_PCellId); + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT0); + + f_EUTRA_TestBody_Set(true); + //@siclog "step 1" siclog@ + //Wait 1 second + f_Delay (1.0); + //@siclog "Step 2 - 3" siclog@ + //Transmit RRCConnectionReconfiguration to add Scell + //Receive RRCConnectionReconfigurationComplete + f_EUTRA_508RRC_AddMod_1Scell(p_PCellId, + p_SCellId, + 1, //SCellIndex_r10 + p_CA_Type, // CA Type + v_UL_CA , // UL CA desired, + -, // C_RNTI default := tsc_C_RNTI_Def, + -, // MeasGapConfig default cs_508_MeasGapConfig_GP1 + -, // Reconfig message omit + -, // DciUlInfo_Type default cs_DciInfo_CcchDcchDtchUL_Def, + -, // UL_GrantConfig_Type default := cs_UL_GrantConfig_Def, + -); // p_CnfFlag := tsc_NoCnfReq + + //@siclog "Step 4-5" siclog@ + if (pc_FeatrGrp_111) // EXCEPTION: If UE does not support FGI bit 111, i.e. Event A6, the following step 4 to step 7 except step 6 should not be executed + { + + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(p_PCellId, + cs_508_RRCConnectionReconfiguration_ConditionMEAS(v_RRC_TI, + cs_Measurement_Config_A6(v_Frequency_IE_PCell.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_PCell.AllowedMeasBandwidth, + v_Frequency_IE_PCell2.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_PCell2.AllowedMeasBandwidth, //@sic R5s130782 sic@ + v_MeasObjectId_PCell, //@sic R5-144680 sic@ + v_MeasObjectId, + cs_508_MeasGapConfig_GP1))); + } ; + //@siclog "Step 6" siclog@ + //Set cell power level according to T1 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + + //@siclog "Step 7" siclog@ + //Receive MeasurementReport + if (pc_FeatrGrp_111) // EXCEPTION: If UE does not support FGI bit 111, i.e. Event A6, the following step 4 to step 7 except step 6 should not be executed + { + + SRB.receive(car_SRB1_RrcPdu_IND(p_PCellId, cr_MeasurementReport(1, //Meas id + ?, //RSRP result + ?, //RSRQ result + cr_MeasResultNeighCells_measResultListEUTRA_1Entry(v_PhysicalCellIdentity_Pcell2, + omit, //CGI info + ?, //RSRP result + ?),//RSRQ result + cr_MeasResultServFreqList(1, ?, ?)))); + + //Activate the default to receive further measurement reports for Pcell 2 on Pcell + v_DefaultRef := activate(a_EUTRA_AddDefault_PeriodicalMeasurmentReport(p_PCellId, + cr_MeasurementReport(1, + ?, + ?, + cr_MeasResultNeighCells_measResultListEUTRA_1Entry(v_PhysicalCellIdentity_Pcell2, omit, ?, ?), + cr_MeasResultServFreqList(1, ?, ?)))); + + + // @verdict RRCConnectionReconfigurationComplete received on Cell 3 + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.2.4.20 Step 7"); + } + + v_Arfcn_PCell := f_EUTRA_CellInfo_GetEARFCN_DL(p_PCellId); + v_PCell_DL_Bandwidth := f_EUTRA_CellInfo_GetSCell_DL_ChBandwidth(p_PCellId); + v_UL_Bandwidth := f_EUTRA_CellInfo_GetUL_ChBandwidth(p_PCellId); + v_DL_Bandwidth := f_EUTRA_CellInfo_GetDL_ChBandwidth(p_PCellId); + v_ChannelBandwidthDependency := f_EUTRA_BandDependentParam(v_DL_Bandwidth, v_UL_Bandwidth); + v_EUTRA_CellSysInfo_Type := f_EUTRA_CellInfo_GetSYSINFO(p_PCellId); + v_RadioResourceConfigCommonSIB := v_EUTRA_CellSysInfo_Type.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon; + v_FDD_TDDInfo := f_EUTRA_CellInfo_GetFDD_TDD_Info(p_PCellId); + if (v_FDD_TDDInfo.FDD_TDD == TDD) { // initialise tdd-Configuration to be used in + v_TDD_Config := cs_TDD_ConfigDef(v_FDD_TDDInfo.TDD_SubframeAssignment); // Value omitted in FDD + v_PUCCH_ConfigDedicated := cs_508_PUCCH_ConfigDedicated_v1020_2TX(cs_N1PUCCH_AN_CS_r10_FDD_1TX, cs_N1PUCCH_AN_CS_r10_FDD_2TX); //@sic R5-133275 sic@ + } + else { //FDD + v_PUCCH_ConfigDedicated := cs_508_PUCCH_ConfigDedicated_v1020_1TX(cs_N1PUCCH_AN_CS_r10_FDD_1TX); + // TBD for 2TX + } + + if (v_UL_CA) { + if (p_CA_Type == CA_InterBand) { // 36.508 Table 4.8.2.1.6-1 + v_AdditionalSpectrumEmissionCA_r10 := cs_AdditionalSpectrumEmissionCA_r10_Def; + } + + v_CommonSCell_UL_Configuration := cs_RadioResourceConfigCommonSCell_UL_Configuration_DEFAULT(v_ChannelBandwidthDependency.Pusch_HoppingOffset, v_RadioResourceConfigCommonSIB.soundingRS_UL_ConfigCommon); + if (v_FDD_TDDInfo.FDD_TDD == TDD) { + v_DedicatedSCell_UL_Configuration := cs_RadioResourceConfigDedicatedSCell_UL_Configuration_DEFAULT(cs_CQI_ReportPeriodic_r10_DEFAULT_TDD); + } + else { + v_DedicatedSCell_UL_Configuration := cs_RadioResourceConfigDedicatedSCell_UL_Configuration_DEFAULT(cs_CQI_ReportPeriodic_r10_DEFAULT_FDD); + } + } + v_SCellToAddMod := cs_SCellToAddMod_r10(1, + v_PhysicalCellIdentity_Pcell, + v_Arfcn_PCell, + cs_508_RadioResourceConfigCommonSCell_r10_DEFAULT(v_PCell_DL_Bandwidth, tsc_P_b_1Tx, v_CommonSCell_UL_Configuration, v_TDD_Config), + cs_RadioResourceConfigDedicatedSCell_r10(cs_PhysicalConfigDedicatedSCell_r10_DEFAULT(v_DedicatedSCell_UL_Configuration))); + //@siclog "Step 8 - 9" siclog@ + f_EUTRA_508RRC_IntraLTE_CA_HO_InterCell(p_PCellId, p_SCellId,p_PCellId2, p_PCellId,{v_SCellToAddMod}, {1}, v_UL_CA); + + if (pc_FeatrGrp_111) + { + + deactivate(v_DefaultRef); + }; + //@siclog "Step 10-12" siclog@ + f_EUTRA_ConnectedMode_TAU (p_PCellId2); + //@siclog "Step 13" siclog@ + //Check if UE is in state RRC_Connected + f_EUTRA_508Check_ConnectedState(p_PCellId2); + + f_EUTRA_TestBody_Set(false); + + //Switch/power off UE + f_EUTRA_Postamble(p_PCellId2, E2_CONNECTED); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.4.20.1 + * @status APPROVED (LTE_A) + */ + function f_TC_8_2_4_20_1_EUTRA() runs on EUTRA_PTC + { // CA / RRC connection reconfiguration / Handover / Success / SCell Change / Intra-band Contiguous CA + f_TC_8_2_4_20_Common(eutra_Cell1, eutra_Cell3, eutra_Cell12, CA_IntraBand); /* @sic R5-141113 sic@ */ + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.4.20.2 + * @status APPROVED (LTE_A) + */ + function f_TC_8_2_4_20_2_EUTRA() runs on EUTRA_PTC + { // CA / RRC connection reconfiguration / Handover / Success / SCell Change/ Inter-Band CA + f_TC_8_2_4_20_Common(eutra_Cell1, eutra_Cell10,eutra_Cell30, CA_InterBand); //@sic R5s130784 sic@ + } + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.4.20.3 + * @status + */ + // Prose needs correction for cell Identies + function f_TC_8_2_4_20_3_EUTRA() runs on EUTRA_PTC + { // CA / RRC connection reconfiguration / Handover / Success / SCell Change / Intra-band non-contiguous CA + f_TC_8_2_4_20_Common(eutra_Cell6, eutra_Cell3, eutra_Cell12, CA_IntraBand); + } + + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.4.21.1/2 + * @param p_PCellId + * @param p_NeighCell + * @param p_SCellId + * @param p_CA_Type + * @status APPROVED (LTE_A) + */ + function f_TC_8_2_4_21_Common(EUTRA_CellId_Type p_PCellId, + EUTRA_CellId_Type p_NeighCell, + EUTRA_CellId_Type p_SCellId, + CA_Tested_Type p_CA_Type) runs on EUTRA_PTC + { + var PhysCellId v_PhysicalCellIdentity_Scell; + var PhysCellId v_PhysicalCellIdentity_NeighCell; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var Frequency_IE_Type v_Frequency_IE_PCell; + var Frequency_IE_Type v_Frequency_IE_Scell; + var Frequency_IE_Type v_Frequency_IE_NeighCell; + var ChannelBandwidthDependency_Type v_ChBandDependency_PCell; + var ChannelBandwidthDependency_Type v_ChBandDependency_Scell; + var ChannelBandwidthDependency_Type v_ChBandDependency_NeighCell; + var template (value) CellPowerList_Type v_CellPowerList_AtT0; + var template (value) CellPowerList_Type v_CellPowerList_AtT1; + var boolean v_UL_CA := pc_UL_CA; + var CarrierFreqEUTRA v_CarrierFreq_Scell; + var MeasObjectId v_MeasObjectId2; + var MeasObjectId v_MeasObjectId3; + var MeasObjectId v_MeasObjectId_PCell :=tsc_IdMeasObject_f1 ; //@sic R5s144517 sic@ + var default v_DefaultRef; + + v_CellPowerList_AtT0 := { + cs_CellPower(p_NeighCell, -91), + cs_CellPower(p_SCellId, -97) + }; + v_CellPowerList_AtT1 := { + cs_CellPower(p_NeighCell, -79), + cs_CellPower(p_SCellId, -85) + }; + if (p_CA_Type == CA_IntraBand) {/* @sic R5-141113 sic@ */ + v_MeasObjectId2 := tsc_IdMeasObject_f2; + v_MeasObjectId3 := tsc_IdMeasObject_f3; + if (p_PCellId == eutra_Cell6) //@sic R5s144517 sic@ + { + v_MeasObjectId_PCell := tsc_IdMeasObject_f3; + v_MeasObjectId3 := tsc_IdMeasObject_f1; + } + } else { + v_MeasObjectId2 := tsc_IdMeasObject_f5; + v_MeasObjectId3 := tsc_IdMeasObject_f6; + } + + f_EUTRA_Init(c3); + f_EUTRA_CA_InitCells({p_PCellId, p_SCellId}, p_CA_Type, c3); + f_EUTRA_CellInfo_SetPLMN_1Entry ( p_NeighCell, cs_HPLMN_Def ); //@sic R5s130731 sic@ + f_EUTRA_CellInfo_SetTAC(p_NeighCell, oct2bit(tsc_TAC1)); + //Set maximim cell powel level for intra freq cell to be used in creation + f_EUTRA_CellInfo_InitMaxReferencePower(p_NeighCell, -79); + + //Get cell dependant parameters + v_PhysicalCellIdentity_Scell := f_EUTRA_CellInfo_GetPhyCellId(p_SCellId); + v_Frequency_IE_Scell := f_EUTRA_CellInfo_GetFrequencyIEs(p_SCellId); + v_ChBandDependency_Scell := f_EUTRA_BandDependentParam(v_Frequency_IE_Scell.DL_ChBandwidth, + v_Frequency_IE_Scell.UL_ChBandwidth); + + v_Frequency_IE_PCell := f_EUTRA_CellInfo_GetFrequencyIEs(p_PCellId); + v_ChBandDependency_PCell := f_EUTRA_BandDependentParam(v_Frequency_IE_PCell.DL_ChBandwidth, + v_Frequency_IE_PCell.UL_ChBandwidth); + + v_Frequency_IE_NeighCell := f_EUTRA_CellInfo_GetFrequencyIEs(p_NeighCell); + v_ChBandDependency_NeighCell := f_EUTRA_BandDependentParam(v_Frequency_IE_NeighCell.DL_ChBandwidth, + v_Frequency_IE_NeighCell.UL_ChBandwidth); + + v_CarrierFreq_Scell := f_EUTRA_CellInfo_GetEARFCN(p_SCellId); + + v_PhysicalCellIdentity_NeighCell := f_EUTRA_CellInfo_GetPhyCellId(p_NeighCell); + + //Set C-RNTI to be used in s-cell creation + f_EUTRA_CellInfo_SetC_RNTI(p_SCellId, tsc_C_RNTI_Def); + + //Create and configure all cells + f_EUTRA_CellConfig_Pcell_Def(p_PCellId); + f_EUTRA_CellConfig_Scell(p_SCellId); //No DRB's created + f_EUTRA_CellConfig_Def(p_NeighCell); //Normal cell configured + + // ring UE to initial state + f_EUTRA_Preamble(p_PCellId, STATE2_IDLEUPDATE); + f_EUTRA_RbEst_Def(p_PCellId); + //Set cell power level according to T0 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT0); + + f_EUTRA_TestBody_Set(true); + + //@siclog "Step 1 - 2" siclog@ + //Transmit RRCConnectionReconfiguration to add Scell + //Receive RRCConnectionReconfigurationComplete + f_EUTRA_508RRC_AddMod_1Scell(p_PCellId, + p_SCellId, + 1, //SCellIndex_r10 + p_CA_Type, // CA Type + v_UL_CA); + + //@siclog "Step 3-4" siclog@ + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(p_PCellId, + cs_508_RRCConnectionReconfiguration_ConditionMEAS(v_RRC_TI, + cs_Measurement_Config_A5_InterFreq_CA(v_Frequency_IE_PCell.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_PCell.AllowedMeasBandwidth, + v_Frequency_IE_Scell.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Scell.AllowedMeasBandwidth, + v_Frequency_IE_NeighCell.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_NeighCell.AllowedMeasBandwidth, + v_MeasObjectId_PCell, //@sic R5-144517 sic@ + v_MeasObjectId2, + v_MeasObjectId3, + cs_508_MeasGapConfig_GP1))); //@sic R5s130731 sic@ + //@siclog "Step 5" siclog@ + //Set cell power level according to T1 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + + //@siclog "Step 6" siclog@ + //Receive MeasurementReport + SRB.receive(car_SRB1_RrcPdu_IND(p_PCellId, cr_MeasurementReport(1, //Meas id + ?, //RSRP result + ?, //RSRQ result + cr_MeasResultNeighCells_measResultListEUTRA_1Entry(v_PhysicalCellIdentity_NeighCell, + omit, //CGI info + ?, //RSRP result + ?),//RSRQ result + cr_MeasResultServFreqList(1, ?, ?)))); + + //Activate the default to receive further measurement reports for cell 2 on cell 1 + v_DefaultRef := activate(a_EUTRA_AddDefault_PeriodicalMeasurmentReport(p_PCellId, + cr_MeasurementReport(1, ?, ?, + cr_MeasResultNeighCells_measResultListEUTRA_1Entry(v_PhysicalCellIdentity_NeighCell, omit, ?, ?), + cr_MeasResultServFreqList(1, ?, ?)))); + + + //* @verdict Measurement Report received on Cell 3 + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.2.4.18 or 8.2.4.21 Step 6"); + + //@siclog "Step 7-8" siclog@ + f_EUTRA_508RRC_IntraLTE_CA_HO_ToNormalInterCell(p_PCellId, p_SCellId, 1, p_NeighCell,-,-,cs_MeasRelease_82421_step7 ); + + deactivate(v_DefaultRef); + + //@siclog "Step 9" siclog@ + //Check if UE is in state RRC_Connected + f_EUTRA_508Check_ConnectedState(p_NeighCell); + + /////////////////////// + // Postamble + ///////// + f_EUTRA_TestBody_Set(false); + + //Switch/power off UE + f_EUTRA_Postamble(p_NeighCell, E2_CONNECTED); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.4.21.1 + * @status APPROVED (LTE_A) + */ + function f_TC_8_2_4_21_1_EUTRA() runs on EUTRA_PTC + { // CA / RRC connection reconfiguration / Handover / Success / SCell release / Intra-band Contiguous CA + f_TC_8_2_4_21_Common(eutra_Cell1, eutra_Cell6, eutra_Cell3, CA_IntraBand); /* @sic R5-141113 sic@ */ + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.4.21.2 + * @status APPROVED (LTE_A) + */ + function f_TC_8_2_4_21_2_EUTRA() runs on EUTRA_PTC + { /* CA / RRC connection reconfiguration / Handover / Success / SCell release / Inter-Band CA */ + var EUTRA_CellId_Type v_Cell3 := eutra_Cell3; + + //@sic R5-133081 sic@ + if (fl_CheckSecondryBandSupportsF6()) { + v_Cell3 := eutra_Cell28; + } + f_TC_8_2_4_21_Common(eutra_Cell1, v_Cell3, eutra_Cell10, CA_InterBand); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.4.21.3 + * @status + */ + function f_TC_8_2_4_21_3_EUTRA() runs on EUTRA_PTC + { // CA / RRC connection reconfiguration / Handover / Success / SCell release / Intra-band non-contiguous CA + f_TC_8_2_4_21_Common(eutra_Cell6, eutra_Cell1, eutra_Cell3, CA_IntraBand); + } + + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.4.23.1/2/3 + * @param p_PCellId + * @param p_SCellId + * @param p_CA_Type + * @status + */ + function f_TC_8_2_4_23_Common(EUTRA_CellId_Type p_PCellId, + EUTRA_CellId_Type p_SCellId, + CA_Tested_Type p_CA_Type) runs on EUTRA_PTC + { + var PhysCellId v_PhysicalCellIdentity_Scell; + var PhysCellId v_PhysicalCellIdentity_Pcell; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var Frequency_IE_Type v_Frequency_IE_PCell; + var Frequency_IE_Type v_Frequency_IE_Scell; + var ChannelBandwidthDependency_Type v_ChBandDependency_PCell; + var ChannelBandwidthDependency_Type v_ChBandDependency_Scell; + var template (value) CellPowerList_Type v_CellPowerList_AtT0; + var template (value) CellPowerList_Type v_CellPowerList_AtT1; + var template (value) CellPowerList_Type v_CellPowerList_AtT2; + var template (value) CellPowerList_Type v_CellPowerList_AtT3; + var template (value) CellPowerList_Type v_CellPowerList_AtT4; + var boolean v_UL_CA := pc_UL_CA; + var CarrierFreqEUTRA v_CarrierFreq_Scell; + var MeasObjectId v_MeasObjectId; + var MeasObjectId v_MeasObjectId_PCell :=tsc_IdMeasObject_f1 ; + var template (value) EUTRA_FDD_TDD_CellInfo_Type v_EUTRA_FDD_TDD_CellInfo_Scell; + var EUTRA_SecurityParams_Type v_Auth_Params; + var ShortMAC_I v_ShortMAC_I; + var float v_T304Max; + //var default v_DefaultRef; + var NextHopChainingCount v_Ncc0 := 0; + var NextHopChainingCount v_Ncc2 := 2; + var Ra_PreambleIndex_Type v_Ra_PreambleIndex := 63; + timer t_T304Max; + + + v_CellPowerList_AtT0 := { + cs_CellPower(p_SCellId, -91) + }; + v_CellPowerList_AtT1 := { + cs_CellPower(p_SCellId, -79) + }; + v_CellPowerList_AtT3:= v_CellPowerList_AtT1; + v_CellPowerList_AtT2 := { + cs_CellPower(p_SCellId, tsc_NonSuitableOffCellRS_EPRE) + }; + v_CellPowerList_AtT4 := { + cs_CellPower(p_PCellId, tsc_NonSuitableOffCellRS_EPRE) + }; + if (p_CA_Type == CA_IntraBand) {/* @sic R5-141113 sic@ */ + v_MeasObjectId := tsc_IdMeasObject_f2; + if (p_PCellId == eutra_Cell6) //@sic R5s144517 sic@ + { + v_MeasObjectId_PCell := tsc_IdMeasObject_f3; + } + } else { + v_MeasObjectId := tsc_IdMeasObject_f5; + } + + f_EUTRA_Init(c3); + f_EUTRA_CA_InitCells({p_PCellId, p_SCellId}, p_CA_Type, c3); + //Set maximim cell powel level for intra freq cell to be used in creation + f_EUTRA_CellInfo_InitMaxReferencePower(p_SCellId, -79); + //Set PreambleTransMax to n50 in all cells + f_EUTRA_CellInfo_SetPreambleTransMax(p_PCellId, n50); + f_EUTRA_CellInfo_SetPreambleTransMax(p_SCellId, n50); + + + //Get cell dependant parameters + v_PhysicalCellIdentity_Scell := f_EUTRA_CellInfo_GetPhyCellId(p_SCellId); + v_PhysicalCellIdentity_Pcell := f_EUTRA_CellInfo_GetPhyCellId(p_PCellId); + v_Frequency_IE_Scell := f_EUTRA_CellInfo_GetFrequencyIEs(p_SCellId); + v_ChBandDependency_Scell := f_EUTRA_BandDependentParam(v_Frequency_IE_Scell.DL_ChBandwidth, + v_Frequency_IE_Scell.UL_ChBandwidth); + + v_Frequency_IE_PCell := f_EUTRA_CellInfo_GetFrequencyIEs(p_PCellId); + v_ChBandDependency_PCell := f_EUTRA_BandDependentParam(v_Frequency_IE_PCell.DL_ChBandwidth, + v_Frequency_IE_PCell.UL_ChBandwidth); + + v_CarrierFreq_Scell := f_EUTRA_CellInfo_GetEARFCN(p_SCellId); + //Get FDD or TDD mode for Cell 1 + v_EUTRA_FDD_TDD_CellInfo_Scell := f_EUTRA_CellInfo_GetFDD_TDD_Info (p_SCellId); + //Set C-RNTI to be used in s-cell creation + f_EUTRA_CellInfo_SetC_RNTI(p_SCellId, tsc_C_RNTI_Def); + v_T304Max := f_EUTRA_SetTimerToleranceMax (p_PCellId, rrcTimer, 1.0); + //Create and configure all cells + f_EUTRA_CellConfig_Pcell_Def(p_PCellId); + f_EUTRA_CellConfig_Scell(p_SCellId); //No DRB's created + + // ring UE to initial state + f_EUTRA_Preamble(p_PCellId, STATE2_IDLEUPDATE); + f_EUTRA_RbEst_Def(p_PCellId); + + //Set cell power level according to T0 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT0); + + f_EUTRA_TestBody_Set(true); + + //@siclog "Step 1 - 2" siclog@ + //Transmit RRCConnectionReconfiguration to add Scell + //Receive RRCConnectionReconfigurationComplete + f_EUTRA_508RRC_AddMod_1Scell(p_PCellId, + p_SCellId, + 1, //SCellIndex_r10 + p_CA_Type, // CA Type + v_UL_CA); + + + //@siclog "Step 3-4" siclog@ + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(p_PCellId, + cs_508_RRCConnectionReconfiguration_ConditionMEAS(v_RRC_TI, + cs_Measurement_Config_A3_InterFreq_CA(v_Frequency_IE_PCell.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_PCell.AllowedMeasBandwidth, + v_Frequency_IE_Scell.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Scell.AllowedMeasBandwidth, + v_MeasObjectId, + -, // Gap omitted as measurement of scell does not need gaps + v_MeasObjectId_PCell, + cs_ReportConfigEUTRA_A3_82423))); + //@siclog "Step 5" siclog@ + //Set cell power level according to T1 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + + //@siclog "Step 6" siclog@ + //Receive MeasurementReport + SRB.receive(car_SRB1_RrcPdu_IND(p_PCellId, cr_MeasurementReport(1, //Meas id + ?, //RSRP result + ?, //RSRQ result + cr_MeasResultNeighCells_measResultListEUTRA_1Entry(v_PhysicalCellIdentity_Scell, + omit, //CGI info + ?, //RSRP result + ?))));//RSRQ result + // Preconfig target cell for no RACH response + f_EUTRA_SS_ConfigRachProcedure (p_SCellId, + omit, + cs_RachProcedureConfig_NoResponse (f_EUTRA_CellInfo_GetDL_ChBandwidth (p_SCellId))); + + //@siclog "Step 7" siclog@ + //Send RRCConnectionReconfiguration to order UE to perform inter freq. HO to S-Cell + f_EUTRA_RRC_ConnReconfigHO_IntraLTE_Mobility ( p_PCellId, + p_SCellId, + f_Generate_cs_MobilityControlInfo_HO_RACH ( p_SCellId, + omit, + cs_RACH_ConfigDedicated (v_Ra_PreambleIndex))); + + t_T304Max.start(v_T304Max); + + //Reset SRBs and DRBs of source cell ( P cell ) + f_EUTRA_SS_SRBs_DRBs_Reset_StopULGrant_noPUCCHSync ( p_PCellId, 100 ); /* stop default UL grant transmission, stop transmission of TA commands & + reset SRBs and DRB1 after 100ms. note: it does not matter when exactly the SRBs are reset as long as it is not less than 100ms */ + f_EUTRA_SS_CommonCellConfig(p_PCellId, cas_ServingCellRelease_REQ(p_PCellId, cs_TimingInfo_Now)); + f_EUTRA_SS_CommonCellConfig(p_PCellId, cas_ServingCellRelease_REQ(p_SCellId, cs_TimingInfo_Now)); + + //@siclog "Step 8" siclog@ + //Set cell power level according to T2 + f_EUTRA_SetCellPowerList ( v_CellPowerList_AtT2 ); + + //Calculate ShortMAC-I to be received in RRCConnectionReestablishment Request from UE in Step 7 + v_ShortMAC_I := f_Calculate_ShortMAC ( p_PCellId, p_PCellId ); + + //Wait T304 + tolerance to fail "Criterion for successful completion of handover" + t_T304Max.timeout; + + //Configure Cell 4 for normal PRACH operation + //f_EUTRA_SS_ConfigRachProcedure_Def(p_PCellId, tsc_C_RNTI_Def); + + //@siclog "Step 9" siclog@ + //Receive RRCConnectionReestablishmentRequest on Cell 4 + SRB.receive ( car_SRB0_RrcPdu_IND ( p_PCellId, + cr_508_RRCConnectionReestablishmentRequest ( tsc_C_RNTI_Def, + v_PhysicalCellIdentity_Pcell, + cr_ReestablishmentCause_HandoverFailure, + v_ShortMAC_I ) ) ); + //@verdict RRCConnectionReestablishmentRequest received on P Cell + f_EUTRA_PreliminaryPass (__FILE__, __LINE__, "Test Case 8.2.4.23 Step 9"); + + + //Activate RRC security at SS[SRB 1,2 and DRB 1] + v_Auth_Params := f_EUTRA_SS_AS_ActivateSecurity_HO_Reest ( p_PCellId, f_EUTRA_Security_Get ( ), v_Ncc0 ); + f_EUTRA_Security_Set ( v_Auth_Params ); + + //@siclog "Step 10" siclog@ + //Transmit RRConnectionReestablishment to resume SRB1 and re-activate security + f_EUTRA_RRC_RRCConnectionReestablishment_Def ( p_PCellId, v_RRC_TI, v_Ncc0 ); + + //@siclog "Step 11" siclog@ + //Receive RRCConnectionReestablishmentComplete + SRB.receive ( car_SRB1_RrcPdu_IND ( p_PCellId, cr_508_RRCConnectionReestablishmentComplete( v_RRC_TI ) ) ); + //SS automatically checks that UE transmit the RRCConnectionReestablishmentComplete using the security key derived from the currently active KeNB + //* @verdict RRCConnectionReestablishmentComplete received on P Cell + f_EUTRA_PreliminaryPass (__FILE__, __LINE__, "Test Case 8.2.4.23 Step 11"); + + //@siclog "Step 12 - 13" siclog@ + //RRCConnectionReconfiguration to resume SRB2 and existing DRBs and + + //Transmit RRCConnectionReconfiguration to add Scell + //Receive RRCConnectionReconfigurationComplete + //f_EUTRA_RRC_RRCConnectionReconfiguration_Resume_SRB2_DRBs ( p_PCellId, v_RRC_TI ); + f_EUTRA_508RRC_AddMod_1Scell(p_PCellId, + p_SCellId, + 1, //SCellIndex_r10 + p_CA_Type, // CA Type + v_UL_CA); + //@siclog "Step 14-15" siclog@ + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(p_PCellId, + cs_508_RRCConnectionReconfiguration_ConditionMEAS(v_RRC_TI, + cs_Measurement_Config_A3_InterFreq_CA(v_Frequency_IE_PCell.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_PCell.AllowedMeasBandwidth, + v_Frequency_IE_Scell.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Scell.AllowedMeasBandwidth, + v_MeasObjectId, + -, // Gap omitted as measurement of scell does not need gaps + v_MeasObjectId_PCell, + cs_ReportConfigEUTRA_A3_82423))); + //@siclog "Step 16" siclog@ + //Set cell power level according to T3 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT3); + + //@siclog "Step 17" siclog@ + //Receive MeasurementReport + SRB.receive(car_SRB1_RrcPdu_IND(p_PCellId, cr_MeasurementReport(1, //Meas id + ?, //RSRP result + ?, //RSRQ result + cr_MeasResultNeighCells_measResultListEUTRA_1Entry(v_PhysicalCellIdentity_Scell, + omit, //CGI info + ?, //RSRP result + ?))));//RSRQ result + // Preconfig source cell for no RACH response + f_EUTRA_SS_ConfigRachProcedure (p_SCellId, + omit, + cs_RachProcedureConfig_NoResponse (f_EUTRA_CellInfo_GetDL_ChBandwidth (p_PCellId))); + + //@siclog "Step 18" siclog@ + //Send RRCConnectionReconfiguration to order UE to perform inter freq. HO to S-Cell + f_EUTRA_RRC_ConnReconfigHO_IntraLTE_Mobility ( p_PCellId, + p_SCellId, + f_Generate_cs_MobilityControlInfo_HO_RACH ( p_SCellId, + omit, + cs_RACH_ConfigDedicated (v_Ra_PreambleIndex))); + + t_T304Max.start(v_T304Max); + + //Reset SRBs and DRBs of source cell ( P cell ) + f_EUTRA_SS_SRBs_DRBs_Reset_StopULGrant_noPUCCHSync ( p_PCellId, 100 ); /* stop default UL grant transmission, stop transmission of TA commands & + reset SRBs and DRB1 after 100ms. note: it does not matter when exactly the SRBs are reset as long as it is not less than 100ms */ + f_EUTRA_SS_CommonCellConfig(p_PCellId, cas_ServingCellRelease_REQ(p_PCellId, cs_TimingInfo_Now)); + f_EUTRA_SS_CommonCellConfig(p_PCellId, cas_ServingCellRelease_REQ(p_SCellId, cs_TimingInfo_Now)); + // Prepeare scell with previously no SRB/DRB configured to SRB/DRB configured + f_EUTRA_CellConfig_ScellToPcell_Def(p_SCellId, cs_TimingInfo_Now); + //@siclog "Step 19" siclog@ + //Set cell power level according to T2 + f_EUTRA_SetCellPowerList ( v_CellPowerList_AtT4 ); + + //Calculate ShortMAC-I to be received in RRCConnectionReestablishment Request from UE in Step 20 + v_ShortMAC_I := f_Calculate_ShortMAC ( p_PCellId, p_SCellId ); + + //Wait T304 + tolerance to fail "Criterion for successful completion of handover" + t_T304Max.timeout; + + // Preconfigure target cell for normal RACH operation + f_EUTRA_SS_ConfigRachProcedure_Def(p_SCellId, tsc_C_RNTI_Def); + + //@siclog "Step 20" siclog@ + //Receive RRCConnectionReestablishmentRequest on Cell 4 + SRB.receive ( car_SRB0_RrcPdu_IND ( p_SCellId, + cr_508_RRCConnectionReestablishmentRequest ( tsc_C_RNTI_Def, + v_PhysicalCellIdentity_Pcell, + cr_ReestablishmentCause_HandoverFailure, + v_ShortMAC_I ) ) ); + //@verdict RRCConnectionReestablishmentRequest received on P Cell + f_EUTRA_PreliminaryPass (__FILE__, __LINE__, "Test Case 8.2.4.23 Step 20"); + + + //Activate RRC security at SS[SRB 1,2 and DRB 1] + v_Auth_Params := f_EUTRA_SS_AS_ActivateSecurity_HO_Reest ( p_SCellId, f_EUTRA_Security_Get ( ), v_Ncc2 ); + f_EUTRA_Security_Set ( v_Auth_Params ); + + //@siclog "Step 21" siclog@ + //Transmit RRConnectionReestablishment to resume SRB1 and re-activate security + f_EUTRA_RRC_RRCConnectionReestablishment_Def ( p_SCellId, v_RRC_TI, v_Ncc2 ); + + //@siclog "Step 22" siclog@ + //Receive RRCConnectionReestablishmentComplete + SRB.receive ( car_SRB1_RrcPdu_IND ( p_SCellId, cr_508_RRCConnectionReestablishmentComplete( v_RRC_TI ) ) ); + //SS automatically checks that UE transmit the RRCConnectionReestablishmentComplete using the security key derived from the currently active KeNB + //* @verdict RRCConnectionReestablishmentComplete received on P Cell + f_EUTRA_PreliminaryPass (__FILE__, __LINE__, "Test Case 8.2.4.23 Step 22"); + + //@siclog "Step 23-24" siclog@ + // resume existing radio bearer on s Cell + f_EUTRA_RRC_RRCConnectionReconfiguration_Resume_SRB2_DRBs ( p_SCellId, v_RRC_TI ); + + /////////////////////// + // Postamble + ///////// + f_EUTRA_TestBody_Set(false); + + //Switch/power off UE + f_EUTRA_Postamble(p_SCellId, E2_CONNECTED); + + }; + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.4.23.1 + * @status + */ + function f_TC_8_2_4_23_1_EUTRA() runs on EUTRA_PTC + { // CA / RRC connection reconfiguration / Handover / Failure / Re-establishment successful / Intra-band Contiguous CA + f_TC_8_2_4_23_Common(eutra_Cell1, eutra_Cell3, CA_IntraBand); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.4.23.2 + * @status + */ + function f_TC_8_2_4_23_2_EUTRA() runs on EUTRA_PTC + { /*CA / RRC connection reconfiguration / Handover / Failure / Re-establishment successful / Inter-Band CA */ + + f_TC_8_2_4_23_Common(eutra_Cell1, eutra_Cell10, CA_InterBand); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.4.23.3 + * @status + */ + function f_TC_8_2_4_23_3_EUTRA() runs on EUTRA_PTC + { // CA / RRC connection reconfiguration / Handover / Failure / Re-establishment successful / Intra-band non-contiguous CA + f_TC_8_2_4_23_Common(eutra_Cell6, eutra_Cell3, CA_IntraBand); + } + + + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 8.2.4.16.x + * @param p_PCellId + * @param p_SCellId + * @param p_CA_Type + * @status + */ + function f_TC_8_2_4_16_Common(EUTRA_CellId_Type p_PCellId, + EUTRA_CellId_Type p_SCellId, + CA_Tested_Type p_CA_Type) runs on EUTRA_PTC + { + var PhysCellId v_PhysicalCellIdentity_Scell; + //var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var Frequency_IE_Type v_Frequency_IE_PCell; + var Frequency_IE_Type v_Frequency_IE_Scell; + var ChannelBandwidthDependency_Type v_ChBandDependency_PCell; + var ChannelBandwidthDependency_Type v_ChBandDependency_Scell; + //var template (value) CellPowerList_Type v_CellPowerList_AtT0; + //var template (value) CellPowerList_Type v_CellPowerList_AtT1; + //var template (value) CellPowerList_Type v_CellPowerList_AtT2; + var boolean v_UL_CA := pc_UL_CA; + var template (value) DL_DCCH_Message v_RRCConnectionReconfiguration; + var integer v_Arfcn_SCell; + var SCell_DL_Bandwidth_Type v_SCell_DL_Bandwidth; + var template (omit) DedicatedSCell_UL_Configuration_Type v_DedicatedSCell_UL_Configuration := omit; + var EUTRA_FDD_TDD_CellInfo_Type v_FDD_TDDInfo; + var template(omit) TDD_Config v_TDD_Config := omit; // omitted in FDD + var CarrierFreqEUTRA v_CarrierFreq_Scell; + //var ChannelBandwidthDependency_Type v_ChannelBandwidthDependency := f_EUTRA_BandDependentParam(v_DL_Bandwidth, v_UL_Bandwidth); + var EUTRA_CellSysInfo_Type v_EUTRA_CellSysInfo_Type := f_EUTRA_CellInfo_GetSYSINFO(p_SCellId); + var RadioResourceConfigCommonSIB v_RadioResourceConfigCommonSIB := v_EUTRA_CellSysInfo_Type.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon; + var template (value) PUCCH_ConfigDedicated_v1020 v_PUCCH_ConfigDedicated; + var template (omit) AdditionalSpectrumEmissionCA_r10_Type v_AdditionalSpectrumEmissionCA_r10 := omit; + var template (omit) CommonSCell_UL_Configuration_Type v_CommonSCell_UL_Configuration := omit; + var template (value) Scell_Capability_Type v_Scell_Capability := DlOnly; + + + f_EUTRA_Init(c3); + f_EUTRA_CA_InitCells({p_PCellId, p_SCellId}, p_CA_Type, c3); + f_EUTRA_CellInfo_SetMIMO_2TX(p_PCellId); + f_EUTRA_CellInfo_SetMIMO_2TX(p_SCellId); + + //Get cell dependant parameters + v_PhysicalCellIdentity_Scell := f_EUTRA_CellInfo_GetPhyCellId(p_SCellId); + v_Frequency_IE_Scell := f_EUTRA_CellInfo_GetFrequencyIEs(p_SCellId); + v_ChBandDependency_Scell := f_EUTRA_BandDependentParam(v_Frequency_IE_Scell.DL_ChBandwidth, + v_Frequency_IE_Scell.UL_ChBandwidth); + v_Frequency_IE_PCell := f_EUTRA_CellInfo_GetFrequencyIEs(p_PCellId); + v_ChBandDependency_PCell := f_EUTRA_BandDependentParam(v_Frequency_IE_PCell.DL_ChBandwidth, + v_Frequency_IE_PCell.UL_ChBandwidth); + v_CarrierFreq_Scell := f_EUTRA_CellInfo_GetEARFCN(p_SCellId); + + //Set C-RNTI to be used in s-cell creation + f_EUTRA_CellInfo_SetC_RNTI(p_SCellId, tsc_C_RNTI_Def); + + //Create and configure all cells + f_EUTRA_CellConfig_Pcell_Def(p_PCellId); + f_EUTRA_CellConfig_Scell(p_SCellId); //No DRB's created + + // bring UE to initial state + f_EUTRA_Preamble(p_PCellId, STATE2_IDLEUPDATE); + f_EUTRA_RbEst_Def(p_PCellId); + + + + + f_EUTRA_TestBody_Set(true); + //@siclog "step 1" siclog@ + f_EUTRA_SetCellPower(p_SCellId, -91);//Make S Cell on + + v_Arfcn_SCell := f_EUTRA_CellInfo_GetEARFCN_DL(p_SCellId); + v_PhysicalCellIdentity_Scell := f_EUTRA_CellInfo_GetPhyCellId(p_SCellId); + v_SCell_DL_Bandwidth := f_EUTRA_CellInfo_GetSCell_DL_ChBandwidth(p_SCellId); + v_FDD_TDDInfo := f_EUTRA_CellInfo_GetFDD_TDD_Info(p_SCellId); + if (v_FDD_TDDInfo.FDD_TDD == TDD) { // initialise tdd-Configuration to be used in + v_TDD_Config := cs_TDD_ConfigDef(v_FDD_TDDInfo.TDD_SubframeAssignment); // Value omitted in FDD + } + // Both FDD and TDD as 2 TX + v_PUCCH_ConfigDedicated := cs_508_PUCCH_ConfigDedicated_v1020_2TX(cs_N1PUCCH_AN_CS_r10_FDD_1TX,cs_N1PUCCH_AN_CS_r10_FDD_2TX); + + + if (v_UL_CA) { + v_Scell_Capability := UL_DL; + if (p_CA_Type == CA_InterBand) { // 36.508 Table 4.8.2.1.6-1 + v_AdditionalSpectrumEmissionCA_r10 := cs_AdditionalSpectrumEmissionCA_r10_Def; + } + v_CommonSCell_UL_Configuration := cs_RadioResourceConfigCommonSCell_UL_Configuration_DEFAULT(v_ChBandDependency_Scell.Pusch_HoppingOffset, v_RadioResourceConfigCommonSIB.soundingRS_UL_ConfigCommon); + if (v_FDD_TDDInfo.FDD_TDD == TDD) + { + v_DedicatedSCell_UL_Configuration := cs_RadioResourceConfigDedicatedSCell_UL_Configuration_DEFAULT(cs_CQI_ReportPeriodic_r10_DEFAULT_TDD); + } + else + { + v_DedicatedSCell_UL_Configuration := cs_RadioResourceConfigDedicatedSCell_UL_Configuration_DEFAULT(cs_CQI_ReportPeriodic_r10_DEFAULT_FDD); + } + + } + v_RRCConnectionReconfiguration := cs_508_RRCConnectionReconfiguration_SCell_AddModRelease(tsc_RRC_TI_Def, + cs_SCellToMod_r10(1,cs_RadioResourceConfigDedicatedSCell_r10(cs_PhysicalConfigDedicatedSCell_r10_DEFAULT(v_DedicatedSCell_UL_Configuration, cds_AntennaInfoDedicated_TM2_r10))), + v_PUCCH_ConfigDedicated, + -, + -, + v_AdditionalSpectrumEmissionCA_r10, + cs_MeasConfig(omit,omit,omit,omit,omit,omit,omit,cs_MeasGapConfig_release),//release GAP @sic R5s140010 R5s140205 sic@ + -, + -, + -, + -, + -, + cs_AntennaInfo_r10_Explicit(cds_AntennaInfoDedicated_TM3_r10)); + + + //@siclog "Step 2 - 3" siclog@ + //Transmit RRCConnectionReconfiguration + //Receive RRCConnectionReconfigurationComplete + f_EUTRA_508RRC_AddModRel_Scell_MIMO(p_PCellId, + p_SCellId, + v_RRCConnectionReconfiguration, + v_Scell_Capability // UL CA desired, + ); + //* @verdict RRCConnectionReconfigurationComplete received on PCell + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.2.4.16 Step 3"); + v_RRCConnectionReconfiguration := cs_508_RRCConnectionReconfiguration_SCell_AddModRelease(tsc_RRC_TI_Def, + cs_SCellToMod_r10(1,cs_RadioResourceConfigDedicatedSCell_r10(cs_PhysicalConfigDedicatedSCell_r10_DEFAULT(v_DedicatedSCell_UL_Configuration, cds_AntennaInfoDedicated_TM3_r10))), + v_PUCCH_ConfigDedicated, + -, + -, + v_AdditionalSpectrumEmissionCA_r10, + cs_MeasConfig(omit,omit,omit,omit,omit,omit,omit,cs_MeasGapConfig_release),//release GAP @sic R5s140010 R5s140205 sic@ + -, + -, + -, + -, + -, + cs_AntennaInfo_r10_Explicit(cds_AntennaInfoDedicated_TM2_r10)); + + + //@siclog "Step 4 - 5" siclog@ + //Transmit RRCConnectionReconfiguration + //Receive RRCConnectionReconfigurationComplete + f_EUTRA_508RRC_AddModRel_Scell_MIMO(p_PCellId, + p_SCellId, + v_RRCConnectionReconfiguration, + v_Scell_Capability // UL CA desired, + ); + + + //* @verdict RRCConnectionReconfigurationComplete received on PCell + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.2.4.16 Step 5"); + + f_EUTRA_TestBody_Set(false); + + //Switch/power off UE + f_EUTRA_Postamble(p_PCellId, E2_CONNECTED); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.4.16.1 + * @status + */ + function f_TC_8_2_4_16_1_EUTRA() runs on EUTRA_PTC + { /* CA / RRC connection reconfiguration / Setup and Change of MIMO / Intra-band Contiguous CA/ Intra-band Contiguous CA */ + f_TC_8_2_4_16_Common(eutra_Cell1, eutra_Cell3, CA_IntraBand); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.4.16.2 + * @status + */ + function f_TC_8_2_4_16_2_EUTRA() runs on EUTRA_PTC + { /* CA / RRC connection reconfiguration / Setup and Change of MIMO / Intra-band Contiguous CA / Inter-Band CA */ + f_TC_8_2_4_16_Common(eutra_Cell1, eutra_Cell10, CA_InterBand); + } + /* + * @desc REFERENCE TS 36.523-1 clause 8.2.2.5.3 + * @status + */ + function f_TC_8_2_4_16_3_EUTRA() runs on EUTRA_PTC + { /* CA / RRC connection reconfiguration / Setup and Change of MIMO / Intra-band Contiguous CA/ Intra-band non-Contiguous CA */ + f_TC_8_2_4_16_Common(eutra_Cell6, eutra_Cell3, CA_IntraBand); + } + +} diff --git a/LTE_A_IWD_14wk37/LTE_A/8_3/EUTRA_Measurements_CA.ttcn b/LTE_A_IWD_14wk37/LTE_A/8_3/EUTRA_Measurements_CA.ttcn new file mode 100644 index 0000000..287bc97 --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/8_3/EUTRA_Measurements_CA.ttcn @@ -0,0 +1,675 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-05 19:27:02 +0200 (Fri, 05 Sep 2014) $ +// $Rev: 12079 $ +/******************************************************************************/ + +module EUTRA_Measurements_CA +{ + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_CommonDefs all; + import from EUTRA_ASP_TypeDefs all; + import from EUTRA_CellInfo all; + import from EUTRA_Component all; + import from EUTRA_ConfigurationSteps all; + import from EUTRA_CommonProcedures all; + import from EUTRA_RRCSteps all; + import from EUTRA_BandDependentParam all; + import from EUTRA_SRB_Templates all; + import from EUTRA_Measurement_Templates all; + import from EUTRA_Measurement_Templates_CA all; + import from CommonDefs all; + import from EUTRA_Measurement_Functions all; + import from EUTRA_Timing all; + import from EUTRA_CellInfoInit_CA all; + import from EUTRA_CommonFunctions_CA all; + import from Parameters all; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////// + /// Templates + ///////////////////////////////////////////////////////////////////////////////////////////////////////////// + + template (value) ReportConfigToAddMod.reportConfig cs_ReportConfigEUTRA_A2_CA_83118(EUTRA_RS_EPRE_Type p_Thres, + ReportConfigEUTRA.reportAmount p_ReportAmount := infinity_) := + /* @status APPROVED (LTE_A) */ + cs_ReportConfig_reportConfigEUTRA_eventA2_RSRP(p_Thres,0, ms5120, rsrp, both, 1, ms1024, p_ReportAmount, -, setup); + + template (value) ReportConfigToAddMod.reportConfig cs_ReportConfigEUTRA_A2_831X(EUTRA_RS_EPRE_Type p_Thres, + ReportConfigEUTRA.reportAmount p_ReportAmount := infinity_) := + /* @status APPROVED (LTE_A) */ + cs_ReportConfig_reportConfigEUTRA_eventA2_RSRP(p_Thres,6, ms256,rsrp,both,1,ms1024,p_ReportAmount); + + template (value) MeasConfig cs_MeasReleaseIntra := + /* @status APPROVED (LTE_A) */ + cs_MeasConfig(omit, + omit, + cs_ReportConfigToRemoveList_1Entry(tsc_IdReportConfig_A1), + omit, + omit, + omit); + + + + template (value) ReportConfigToAddMod.reportConfig cs_ReportConfigEUTRA_A1_83122(EUTRA_RS_EPRE_Type p_Thres) := + /* @status APPROVED (LTE_A) */ + cs_ReportConfig_reportConfigEUTRA_eventA1_RSRP(p_Thres,6, ms2560,rsrp,both,1,ms1024,infinity_); //@sic R5-140344 sic@ + + + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_A1_83122(RRC_TransactionIdentifier p_RRC_TI, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq1, + AllowedMeasBandwidth p_MeasurementBandwidth1, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq2, + AllowedMeasBandwidth p_MeasurementBandwidth2, + MeasObjectId p_MeasObjectId, //@sic R5-144684 sic@ + MeasObjectId p_MeasObjectId_2, //@sic R5s130402 sic@ + template (omit) MeasGapConfig p_MeasGapConfig := omit) := + /* @status APPROVED (LTE_A) */ + cs_508_RRCConnectionReconfiguration_ConditionMEAS(p_RRC_TI, + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_2Entries(p_MeasObjectId, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq1, p_MeasurementBandwidth1), + p_MeasObjectId_2, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq2, p_MeasurementBandwidth2)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_A1, + cs_ReportConfigEUTRA_A1_83122(-72)), + + omit, + cs_MeasIdToAddModList_1Entry(1, + p_MeasObjectId_2, //@sic R5s130991 sic@ + tsc_IdReportConfig_A1), + -, + p_MeasGapConfig)); + + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_A2_83122(RRC_TransactionIdentifier p_RRC_TI, + //ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq1, + //AllowedMeasBandwidth p_MeasurementBandwidth1, + //ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq2, + //AllowedMeasBandwidth p_MeasurementBandwidth2, + MeasObjectId p_MeasObjectId_2, //@sic R5s130402 sic@ + template (omit) MeasGapConfig p_MeasGapConfig := omit) := + /* @status APPROVED (LTE_A) */ + cs_508_RRCConnectionReconfiguration_ConditionMEAS(p_RRC_TI, + cs_MeasConfig(omit, + omit, + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_A2, + cs_ReportConfigEUTRA_A2_831X(-83)), + + omit, + cs_MeasIdToAddModList_1Entry(1, + p_MeasObjectId_2, + tsc_IdReportConfig_A2), + -, + p_MeasGapConfig)); + + + + /////////////////////////////////////////////////////////////////////////// + // Test case Functions + ////////////////////////////////////////////////////////////////////////// + + /* + * @desc REFERENCE TS 36.523-1 clause 8.3.1.17.1/2 + * @param p_PCellId + * @param p_SCellId + * @param p_NeighborCellId + * @param p_CA_Type + * @status APPROVED (LTE_A) + */ + function f_TC_8_3_1_17_Common (EUTRA_CellId_Type p_PCellId, + EUTRA_CellId_Type p_SCellId, + EUTRA_CellId_Type p_NeighborCellId, + CA_Tested_Type p_CA_Type) runs on EUTRA_PTC + { /* CA / Measurement configuration control and reporting / Intra E-UTRAN measurements / Event A6 */ + var PhysCellId v_PhysicalCellIdentity_Neighcell; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var Frequency_IE_Type v_Frequency_IE_PCell; + var Frequency_IE_Type v_Frequency_IE_Scell; + var ChannelBandwidthDependency_Type v_ChBandDependency_PCell; + var ChannelBandwidthDependency_Type v_ChBandDependency_Scell; + var template (value) CellPowerList_Type v_CellPowerList_AtT0; + var template (value) CellPowerList_Type v_CellPowerList_AtT1; + var CarrierFreqEUTRA v_CarrierFreq_Scell; + var boolean v_UL_CA := pc_UL_CA; + var float v_TimerValue_1; + var MeasObjectId v_MeasObjectId ; //@sic R5s130400 sic@ + var MeasObjectId v_MeasObjectId_PCell :=tsc_IdMeasObject_f1 ; //@sic R5s144680 sic@ + + v_CellPowerList_AtT0 := { + cs_CellPower (p_PCellId, -79), + cs_CellPower (p_SCellId, -85), + cs_CellPower (p_NeighborCellId, -91) + }; + v_CellPowerList_AtT1 := { + cs_CellPower (p_NeighborCellId, -73) + }; + if (p_CA_Type == CA_IntraBand) /* @sic R5-141113 sic@ */ + { + v_MeasObjectId := tsc_IdMeasObject_f2; + if (p_PCellId == eutra_Cell6) //@sic R5s144680 sic@ + { + v_MeasObjectId_PCell := tsc_IdMeasObject_f3; + } + } else + { + v_MeasObjectId := tsc_IdMeasObject_f5; + } + + f_EUTRA_Init (c3); + f_EUTRA_CA_InitCells({p_PCellId, p_SCellId}, p_CA_Type,c3); + + + //Get cell dependant parameters + v_PhysicalCellIdentity_Neighcell := f_EUTRA_CellInfo_GetPhyCellId (p_NeighborCellId); + v_Frequency_IE_Scell := f_EUTRA_CellInfo_GetFrequencyIEs(p_SCellId); + v_ChBandDependency_Scell := f_EUTRA_BandDependentParam(v_Frequency_IE_Scell.DL_ChBandwidth, + v_Frequency_IE_Scell.UL_ChBandwidth); + v_Frequency_IE_PCell := f_EUTRA_CellInfo_GetFrequencyIEs(p_PCellId); + v_ChBandDependency_PCell := f_EUTRA_BandDependentParam(v_Frequency_IE_PCell.DL_ChBandwidth, + v_Frequency_IE_PCell.UL_ChBandwidth); + v_CarrierFreq_Scell := f_EUTRA_CellInfo_GetEARFCN(p_SCellId); + + //Set maximim cell powel level for cell 1 & 3 to be used in creation + f_EUTRA_CellInfo_InitMaxReferencePower(p_NeighborCellId, -73); + f_EUTRA_CellInfo_InitMaxReferencePower(p_PCellId, -79); + + //Set C-RNTI to be used in s-cell creation + f_EUTRA_CellInfo_SetC_RNTI (p_SCellId, tsc_C_RNTI_Def); + + //Create and configure all cells + f_EUTRA_CellConfig_Pcell_Def (p_PCellId); + f_EUTRA_CellConfig_Scell(p_SCellId); //No DRB's created + f_EUTRA_CellConfig_Def(p_NeighborCellId); + + // ring UE to initial state + f_EUTRA_Preamble(p_PCellId, STATE2_IDLEUPDATE); + f_EUTRA_RbEst_Def(p_PCellId); + + //Set initial cell power level according to T0 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT0); + + f_EUTRA_TestBody_Set(true); + + //@siclog "Step 1 - 2" siclog@ + //Transmit RRCConnectionReconfiguration + //Receive RRCConnectionReconfigurationComplete + f_EUTRA_508RRC_AddMod_1Scell(p_PCellId, + p_SCellId, + 1, //SCellIndex_r10 + p_CA_Type, // CA Type + v_UL_CA); // UL CA desired, + //* @verdict RRCConnectionReconfigurationComplete received on Cell 3 + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.3.1.17 Step 2"); + + //@siclog "Step 3-4" siclog@ + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(p_PCellId, + cs_508_RRCConnectionReconfiguration_ConditionMEAS(v_RRC_TI, + cs_Measurement_Config_A6(v_Frequency_IE_PCell.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_PCell.AllowedMeasBandwidth, + v_Frequency_IE_Scell.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Scell.AllowedMeasBandwidth, + v_MeasObjectId_PCell, //@sic R5-144680 sic@ + v_MeasObjectId, //@sic R5s130400 sic@ + cs_508_MeasGapConfig_GP1))); + //@siclog "Step 5" siclog@ + v_TimerValue_1 := f_EUTRA_SetTimerToleranceMax(p_PCellId, nonProtocolTimer, 10.0); + f_EUTRA_NoMeasurementReport(p_PCellId, v_TimerValue_1, cr_MeasurementReport_CheckAny); + + //@siclog "Step 6" siclog@ + //Set cell power level according to T2 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + //@siclog "Step 7" siclog@ + //Receive MeasurementReport + SRB.receive(car_SRB1_RrcPdu_IND(p_PCellId, cr_MeasurementReport(1,//Meas id + ?,//RSRP result + ?,//RSRQ result + cr_MeasResultNeighCells_measResultListEUTRA_1Entry(v_PhysicalCellIdentity_Neighcell, + omit,//CGI info + ?,//RSRP result + ?), + cr_MeasResultServFreqList(1, ?, ?))));//RSRQ result + + //@siclog "Step 8 - 9" siclog@ + //Transmit RRCConnectionReconfiguration + //Receive RRCConnectionReconfigurationComplete + f_EUTRA_508RRC_Rel_1Scell(p_PCellId, + p_SCellId, + 1); //SCellIndex_r10 + + + //@siclog "Step 10" siclog@ + f_EUTRA_NoMeasurementReport(p_PCellId, v_TimerValue_1, cr_MeasurementReport_CheckAny); + + f_EUTRA_TestBody_Set (false); + + //Switch/power off UE + f_EUTRA_Postamble (p_PCellId, E2_CONNECTED); + } + + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 8.3.1.17.1 + * @status APPROVED (LTE_A) + */ + function f_TC_8_3_1_17_1_EUTRA () runs on EUTRA_PTC + { /* CA / Measurement configuration control and reporting / Intra E-UTRAN measurements / Event A6 / Intra-band Contiguous CA */ + f_TC_8_3_1_17_Common (eutra_Cell1, eutra_Cell3,eutra_Cell12, CA_IntraBand); /* @sic R5-141113 sic@ */ + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.3.1.17.2 + * @status APPROVED (LTE_A) + */ + function f_TC_8_3_1_17_2_EUTRA () runs on EUTRA_PTC + { /* CA / Measurement configuration control and reporting / Intra E-UTRAN measurements / Event A6 / Inter-band CA */ + f_TC_8_3_1_17_Common (eutra_Cell1, eutra_Cell10, eutra_Cell30, CA_InterBand); + } + + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 8.3.1.17.3 + * @status + */ + function f_TC_8_3_1_17_3_EUTRA () runs on EUTRA_PTC + { /* CA / Measurement configuration control and reporting / Intra E-UTRAN measurements / Event A6 / Intra-band non-Contiguous CA */ + f_TC_8_3_1_17_Common (eutra_Cell6, eutra_Cell3,eutra_Cell12, CA_IntraBand); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.3.1.18.1/2 + * @param p_PCellId + * @param p_SCellId + * @param p_NeighborSCellId + * @param p_NeighborSCellId2 + * @param p_CA_Type + * @status APPROVED (LTE_A) + */ + function f_TC_8_3_1_18_Common(EUTRA_CellId_Type p_PCellId, + EUTRA_CellId_Type p_SCellId, + EUTRA_CellId_Type p_NeighborSCellId, + EUTRA_CellId_Type p_NeighborSCellId2, + CA_Tested_Type p_CA_Type) runs on EUTRA_PTC + { + /* CA / Measurement configuration control and reporting / Intra E-UTRAN measurements / Additional measurement reporting */ + var PhysCellId v_PhysicalCellIdentity_NeighScell; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var Frequency_IE_Type v_Frequency_IE_PCell; + var Frequency_IE_Type v_Frequency_IE_Scell; + var ChannelBandwidthDependency_Type v_ChBandDependency_PCell; + var ChannelBandwidthDependency_Type v_ChBandDependency_Scell; + var template (value) CellPowerList_Type v_CellPowerList_AtT0; + var template (value) CellPowerList_Type v_CellPowerList_AtT1; + var template (value) CellPowerList_Type v_CellPowerList_AtT2; + var boolean v_UL_CA := pc_UL_CA; + //var float v_TimerValue_1; + var CarrierFreqEUTRA v_CarrierFreq_Scell; + var MeasObjectId v_MeasObjectId ; + var MeasObjectId v_MeasObjectId_PCell :=tsc_IdMeasObject_f1 ; //@sic R5s144519 sic@ + + //@sic R5s130397 R5-134782 sic@ + v_CellPowerList_AtT0 := { + cs_CellPower (p_PCellId, -72), + cs_CellPower (p_SCellId, -72), + cs_CellPower (p_NeighborSCellId, -91), + cs_CellPower (p_NeighborSCellId2, tsc_NonSuitableCellRS_EPRE) + }; + v_CellPowerList_AtT1 := { + cs_CellPower (p_SCellId, -90) + }; + v_CellPowerList_AtT2 := { + cs_CellPower (p_PCellId, -90), + cs_CellPower (p_SCellId, -72), + cs_CellPower (p_NeighborSCellId, -69), + cs_CellPower (p_NeighborSCellId2, -73) + }; + + //@sic R5s130397 sic@ + if (p_CA_Type == CA_IntraBand) /* @sic R5-141113 sic@ */ + { + v_MeasObjectId := tsc_IdMeasObject_f2; + if (p_PCellId == eutra_Cell6) //@sic R5s144517 sic@ + { + v_MeasObjectId_PCell := tsc_IdMeasObject_f3; + } + } else + { + v_MeasObjectId := tsc_IdMeasObject_f5; + } + f_EUTRA_Init (c3); + f_EUTRA_CA_InitCells({p_PCellId,p_SCellId },p_CA_Type,c3); + f_EUTRA_CellInfo_InitMaxReferencePower(p_PCellId, -72); + f_EUTRA_CellInfo_InitMaxReferencePower(p_SCellId, -72); + f_EUTRA_CellInfo_InitMaxReferencePower(p_NeighborSCellId, -69); + f_EUTRA_CellInfo_InitMaxReferencePower(p_NeighborSCellId2, -73); + f_EUTRA_SetCellConfigCapability(p_NeighborSCellId, broadcastOnlyCell); + f_EUTRA_SetCellConfigCapability(p_NeighborSCellId2, broadcastOnlyCell); + + //Get cell dependant parameters + //v_PhysicalCellIdentity_NeighPcell := f_EUTRA_CellInfo_GetPhyCellId (p_NeighborPCellId); + v_PhysicalCellIdentity_NeighScell := f_EUTRA_CellInfo_GetPhyCellId (p_NeighborSCellId); + v_Frequency_IE_Scell := f_EUTRA_CellInfo_GetFrequencyIEs(p_SCellId); + v_ChBandDependency_Scell := f_EUTRA_BandDependentParam(v_Frequency_IE_Scell.DL_ChBandwidth, + v_Frequency_IE_Scell.UL_ChBandwidth); + v_Frequency_IE_PCell := f_EUTRA_CellInfo_GetFrequencyIEs(p_PCellId); + v_ChBandDependency_PCell := f_EUTRA_BandDependentParam(v_Frequency_IE_PCell.DL_ChBandwidth, + v_Frequency_IE_PCell.UL_ChBandwidth); + v_CarrierFreq_Scell := f_EUTRA_CellInfo_GetEARFCN(p_SCellId); + + //Set C-RNTI to be used in s-cell creation + f_EUTRA_CellInfo_SetC_RNTI(p_SCellId, tsc_C_RNTI_Def); + + //Create and configure all cells + f_EUTRA_CellConfig_Pcell_Def(p_PCellId); + f_EUTRA_CellConfig_Scell(p_SCellId); //No DRB's created + f_EUTRA_CellConfig_Def(p_NeighborSCellId); + f_EUTRA_CellConfig_Def(p_NeighborSCellId2); + + // ring UE to initial state + f_EUTRA_Preamble(p_PCellId, STATE2_IDLEUPDATE); + f_EUTRA_RbEst_Def(p_PCellId); + + //Set initial cell power level according to T0 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT0); + + f_EUTRA_TestBody_Set(true); + + //@siclog "Step 1 - 2" siclog@ + //Transmit RRCConnectionReconfiguration + //Receive RRCConnectionReconfigurationComplete + f_EUTRA_508RRC_AddMod_1Scell(p_PCellId, + p_SCellId, + 1, //SCellIndex_r10 + p_CA_Type, // CA Type + v_UL_CA); // UL CA desired + //* @verdict RRCConnectionReconfigurationComplete received on Pcell + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.3.1.18 Step 2"); + + //@siclog "Step 3-4" siclog@ + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(p_PCellId, + cs_508_RRCConnectionReconfiguration_ConditionMEAS(v_RRC_TI, + cs_Measurement_Config_A2_InterFreq_CA(v_Frequency_IE_PCell.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_PCell.AllowedMeasBandwidth, + v_Frequency_IE_Scell.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Scell.AllowedMeasBandwidth, + v_MeasObjectId_PCell, //@sic R5-144519 sic@ + v_MeasObjectId, //@sic R5s130397 sic@ + cs_508_MeasGapConfig_GP1, + //cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_A2, + cs_ReportConfigEUTRA_A2_CA_83118(-81, r1))));//@sic R5s130690 R5-134782 sic@ + + //@siclog "Step 5" siclog@ + + //Set cell power level according to T1 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + //@siclog "Step 6" siclog@ + //Receive MeasurementReport + //@sic R5s130690 sic@ + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_MeasurementReport(2,//Meas id //@sic R5s130960 sic@ + + ?,//RSRP result + ?,//RSRQ result + omit, + cr_MeasResultServFreqList(1, ?, ?))));//RSRQ result + + //* @verdict Measeurement report received on Pcell + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.3.1.18 Step 6"); + + //@siclog "Step 7" siclog@ + //Set cell power level according to T2 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT2); + //@siclog "Step 8" siclog@ + //Receive MeasurementReport + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_MeasurementReport(1,//Meas id + ?,//RSRP result + ?,//RSRQ result + omit, + cr_MeasResultServFreqList_NeighCell(1, ?, ?, v_PhysicalCellIdentity_NeighScell,?,?))));//RSRQ result + + //* @verdict Measeurement report received on Pcell + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.3.1.18 Step 8"); + + f_EUTRA_TestBody_Set(false); + + //Switch/power off UE + f_EUTRA_Postamble(p_PCellId, E2_CONNECTED); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.3.1.18.1 + * @status APPROVED (LTE_A) + */ + function f_TC_8_3_1_18_1_EUTRA () runs on EUTRA_PTC + { /* CA / Measurement configuration control and reporting / Intra E-UTRAN measurements / Event A6 / Intra-band Contiguous CA */ + f_TC_8_3_1_18_Common (eutra_Cell1, eutra_Cell3,eutra_Cell12,eutra_Cell23, CA_IntraBand); /* @sic R5-141113 sic@ */ + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.3.1.18.2 + * @status APPROVED (LTE_A) + */ + function f_TC_8_3_1_18_2_EUTRA () runs on EUTRA_PTC + { /* CA / Measurement configuration control and reporting / Intra E-UTRAN measurements / Event A6 / Inter-band CA */ + f_TC_8_3_1_18_Common(eutra_Cell1, eutra_Cell10, eutra_Cell30, eutra_Cell31,CA_InterBand); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.3.1.18.3 + * @status + */ + function f_TC_8_3_1_18_3_EUTRA () runs on EUTRA_PTC + { /* CA / Measurement configuration control and reporting / Intra E-UTRAN measurements / Event A6 / Intra-band Contiguous CA */ + f_TC_8_3_1_18_Common (eutra_Cell1, eutra_Cell3,eutra_Cell12,eutra_Cell23, CA_IntraBand); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.3.1.22.1/2 + * @param p_PCellId + * @param p_SCellId + * @param p_CA_Type + * @status APPROVED (LTE_A) + */ + function f_TC_8_3_1_22_Common(EUTRA_CellId_Type p_PCellId, + EUTRA_CellId_Type p_SCellId, + CA_Tested_Type p_CA_Type) runs on EUTRA_PTC + { + /* CA / Measurement configuration control and reporting / Intra E-UTRAN measurements / Event A1 / Event A2 */ + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var Frequency_IE_Type v_Frequency_IE_PCell; + var Frequency_IE_Type v_Frequency_IE_Scell; + var ChannelBandwidthDependency_Type v_ChBandDependency_PCell; + var ChannelBandwidthDependency_Type v_ChBandDependency_Scell; + var template (value) CellPowerList_Type v_CellPowerList_AtT0_T3; + var template (value) CellPowerList_Type v_CellPowerList_AtT1; + var template (value) CellPowerList_Type v_CellPowerList_AtT4_T6; + var template (value) CellPowerList_Type v_CellPowerList_AtT5; + var boolean v_UL_CA := pc_UL_CA; + var float v_TimerValue_1; + var CarrierFreqEUTRA v_CarrierFreq_Scell; + var integer k; + var MeasObjectId v_MeasObjectId ; + var MeasObjectId v_MeasObjectId_PCell :=tsc_IdMeasObject_f1 ; //@sic R5s144684 sic@ + + v_CellPowerList_AtT0_T3 := { + cs_CellPower (p_PCellId, -85), + cs_CellPower (p_SCellId, -91) + }; + v_CellPowerList_AtT1 := { + cs_CellPower (p_SCellId, -65) //@sic R5s130864 sic@ + }; + v_CellPowerList_AtT4_T6 := { + cs_CellPower (p_SCellId, -70) + }; + v_CellPowerList_AtT5 := { + cs_CellPower (p_SCellId, -96) + }; + //@sic R5s130402 sic@ + if (p_CA_Type == CA_IntraBand) /* @sic R5-141113 sic@ */ + { + v_MeasObjectId := tsc_IdMeasObject_f2; + if (p_PCellId == eutra_Cell6) //@sic R5s144684 sic@ + { + v_MeasObjectId_PCell := tsc_IdMeasObject_f3; + } + } else + { + v_MeasObjectId := tsc_IdMeasObject_f5; + } + f_EUTRA_Init (c3); + f_EUTRA_CA_InitCells({p_PCellId,p_SCellId },p_CA_Type,c3); + //f_EUTRA_CellInfo_InitMaxReferencePower(p_PCellId, -65); + f_EUTRA_CellInfo_InitMaxReferencePower(p_SCellId, -60); + + //Get cell dependant parameters + v_Frequency_IE_Scell := f_EUTRA_CellInfo_GetFrequencyIEs (p_SCellId); + v_ChBandDependency_Scell := f_EUTRA_BandDependentParam (v_Frequency_IE_Scell.DL_ChBandwidth, + v_Frequency_IE_Scell.UL_ChBandwidth); + v_Frequency_IE_PCell := f_EUTRA_CellInfo_GetFrequencyIEs (p_PCellId); + v_ChBandDependency_PCell := f_EUTRA_BandDependentParam (v_Frequency_IE_PCell.DL_ChBandwidth, + v_Frequency_IE_PCell.UL_ChBandwidth); + v_CarrierFreq_Scell := f_EUTRA_CellInfo_GetEARFCN (p_SCellId); + + //Set C-RNTI to be used in s-cell creation + f_EUTRA_CellInfo_SetC_RNTI (p_SCellId, tsc_C_RNTI_Def); + + //Create and configure all cells + f_EUTRA_CellConfig_Pcell_Def (p_PCellId); + f_EUTRA_CellConfig_Scell(p_SCellId); //No DRB's created + + // ring UE to initial state + f_EUTRA_Preamble (p_PCellId, STATE2_IDLEUPDATE); + f_EUTRA_RbEst_Def (p_PCellId); + + //Set initial cell power level according to T0 + f_EUTRA_SetCellPowerList (v_CellPowerList_AtT0_T3); + + f_EUTRA_TestBody_Set (true); + + //@siclog "Step 1 - 2" siclog@ + //Transmit RRCConnectionReconfiguration + //Receive RRCConnectionReconfigurationComplete + f_EUTRA_508RRC_AddMod_1Scell(p_PCellId, + p_SCellId, + 1, //SCellIndex_r10 + p_CA_Type, // CA Type + v_UL_CA); // UL CA desired + + //@siclog "Step 3-4" siclog@ + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(p_PCellId, + cs_RRCConnectionReconfiguration_A1_83122(v_RRC_TI, + v_Frequency_IE_PCell.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_PCell.AllowedMeasBandwidth, + v_Frequency_IE_Scell.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Scell.AllowedMeasBandwidth, + v_MeasObjectId_PCell, //@sic R5-144684 sic@ + v_MeasObjectId,//@sic R5s130402 sic@ + cs_508_MeasGapConfig_GP1)); + //@siclog "Step 5" siclog@ + //Set cell power level according to T1 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + + //@siclog "Step 6-7" siclog@ + for (k := 0; k < 4; k := k + 1) { + SRB.receive(car_SRB1_RrcPdu_IND(p_PCellId, cr_MeasurementReport(1,//Meas id + ?,//RSRP result + ?,//RSRQ result + omit, + cr_MeasResultServFreqList(1,?,?)))); + } + //* @verdict Measurement Report received on Pcell + f_EUTRA_PreliminaryPass (__FILE__, __LINE__, "Test Case 8.3.1.22 Step 6 and 7"); + + //@siclog "Step 8" siclog@ + //Set cell power level according to T2/3 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT0_T3); + //@siclog "Step 9" siclog@ + // Allow 15 seconds for power level changes to settle down + v_TimerValue_1 := f_EUTRA_SetTimerToleranceMax(p_PCellId, nonProtocolTimer, 15.0); + f_EUTRA_WaitAndIgnoreMeasurementReport(p_PCellId, v_TimerValue_1, cr_MeasurementReport(1, ?, ?, *, *)); + + //@siclog "Step 10" siclog@ + //No Further measurement reports for next 10 seconds + v_TimerValue_1 := f_EUTRA_SetTimerToleranceMax(p_PCellId, nonProtocolTimer, 10.0); + f_EUTRA_NoMeasurementReport(p_PCellId, v_TimerValue_1, cr_MeasurementReport_CheckAny); + + //@siclog 'Step 10A-10B siclog@ + //@siclog R5130864 sic@ + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(p_PCellId,cs_508_RRCConnectionReconfiguration_ConditionMEAS(v_RRC_TI,cs_MeasReleaseIntra)); //@sic R5-133617 sic@ + //Set cell power level according to T4 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT4_T6); + + //@siclog "Step 12-13" siclog@ + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(p_PCellId, + cs_RRCConnectionReconfiguration_A2_83122(v_RRC_TI, + //v_Frequency_IE_PCell.UL_DL_Earfcn.dl_CarrierFreq, + //v_ChBandDependency_PCell.AllowedMeasBandwidth, + //v_Frequency_IE_Scell.UL_DL_Earfcn.dl_CarrierFreq, + //v_ChBandDependency_Scell.AllowedMeasBandwidth, + v_MeasObjectId,//@sic R5s130402 sic@ + cs_508_MeasGapConfig_GP1 )); + + + //@siclog "Step 14" siclog@ + //Set cell power level according to T5 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT5); + + //@siclog "Step 15-16" siclog@ + for (k := 0; k < 4; k := k + 1) { + SRB.receive(car_SRB1_RrcPdu_IND(p_PCellId, cr_MeasurementReport(1,//Meas id + ?,//RSRP result + ?,//RSRQ result + omit, + cr_MeasResultServFreqList(1,?,?)))); + } + //* @verdict Measurement Report received on Pcell + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.3.1.22 Step 15 and 16"); + + //@siclog "Step 17" siclog@ + //Set cell power level according to T6 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT4_T6); + //@siclog "Step 18" siclog@ + // Allow 15 seconds for power level changes to settle down + v_TimerValue_1 := f_EUTRA_SetTimerToleranceMax(p_PCellId, nonProtocolTimer, 15.0); + f_EUTRA_WaitAndIgnoreMeasurementReport(p_PCellId, v_TimerValue_1, cr_MeasurementReport(1, ?, ?, *, *)); + + //@siclog "Step 19" siclog@ + //No Further measurement reports for next 10 seconds + v_TimerValue_1 := f_EUTRA_SetTimerToleranceMax(p_PCellId, nonProtocolTimer, 10.0); + f_EUTRA_NoMeasurementReport(p_PCellId, v_TimerValue_1, cr_MeasurementReport_CheckAny); + + f_EUTRA_TestBody_Set (false); + + //Switch/power off UE + f_EUTRA_Postamble (p_PCellId, E2_CONNECTED); + } + + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 8.3.1.22.1 + * @status APPROVED (LTE_A) + */ + function f_TC_8_3_1_22_1_EUTRA () runs on EUTRA_PTC + { /* CA / Measurement configuration control and reporting / Intra E-UTRAN measurements / Event A1 / Event A2 / Intra-band Contiguous CA*/ + f_TC_8_3_1_22_Common(eutra_Cell1, eutra_Cell3, CA_IntraBand); /* @sic R5-141113 sic@ */ + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.3.1.22.2 + * @status APPROVED (LTE_A) + */ + function f_TC_8_3_1_22_2_EUTRA () runs on EUTRA_PTC + { /* CA / Measurement configuration control and reporting / Intra E-UTRAN measurements / Event A1 / Event A2 / Inter-band CA */ + f_TC_8_3_1_22_Common(eutra_Cell1, eutra_Cell10, CA_InterBand); + } + + /* + * @desc Common function : REFERENCE TS 36.523-1 clause 8.3.1.22.3 + * @status + */ + function f_TC_8_3_1_22_3_EUTRA () runs on EUTRA_PTC + { /* CA / Measurement configuration control and reporting / Intra E-UTRAN measurements / Event A1 / Event A2 / Intra-band Contiguous CA*/ + f_TC_8_3_1_22_Common(eutra_Cell6, eutra_Cell3, CA_IntraBand); + } +} diff --git a/LTE_A_IWD_14wk37/LTE_A/8_3/EUTRA_Measurements_eICIC.ttcn b/LTE_A_IWD_14wk37/LTE_A/8_3/EUTRA_Measurements_eICIC.ttcn new file mode 100644 index 0000000..1e41001 --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/8_3/EUTRA_Measurements_eICIC.ttcn @@ -0,0 +1,725 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-05 19:27:02 +0200 (Fri, 05 Sep 2014) $ +// $Rev: 12079 $ +/******************************************************************************/ + +module RRC_Measurement_eICIC +{ + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_Component all; + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from EUTRA_RRC_Templates all; + import from EUTRA_SRB_Templates all; + import from EUTRA_AspCommon_Templates all; + import from EUTRA_CellInfo all; + import from EUTRA_CommonProcedures all; + import from EUTRA_ConfigurationSteps all; + import from EUTRA_Measurement_Templates all; + import from EUTRA_RRCSteps all; + import from EUTRA_ASP_TypeDefs all; + import from EUTRA_ASP_SrbDefs all; + import from EUTRA_BandDependentParam all; + + //=================================================================================================== + // TEMPLATES + //================================================================================================== + template (value) PhysicalConfigDedicated cs_PhysicalConfigDedicated_CSIConfig(template (omit) CQI_ReportConfig_r10 p_CQI_ReportConfig_r10_CSIConfig := omit) := + { /* @status APPROVED (LTE_A) */ + pdsch_ConfigDedicated := omit, + pucch_ConfigDedicated := omit, + pusch_ConfigDedicated := omit, + uplinkPowerControlDedicated := omit, + tpc_PDCCH_ConfigPUCCH := omit, + tpc_PDCCH_ConfigPUSCH := omit, + cqi_ReportConfig := omit, + soundingRS_UL_ConfigDedicated := omit, + antennaInfo := omit, + schedulingRequestConfig := omit, + cqi_ReportConfig_v920 := omit, + antennaInfo_v920 := omit, + antennaInfo_r10 := omit, + antennaInfoUL_r10 := omit, + cif_Presence_r10 := omit, + cqi_ReportConfig_r10 := p_CQI_ReportConfig_r10_CSIConfig, + csi_RS_Config_r10 := omit, + pucch_ConfigDedicated_v1020 := omit, + pusch_ConfigDedicated_v1020 := omit, + schedulingRequestConfig_v1020 := omit, + soundingRS_UL_ConfigDedicated_v1020 := omit, + soundingRS_UL_ConfigDedicatedAperiodic_r10 := omit, + uplinkPowerControlDedicated_v1020 := omit, + additionalSpectrumEmissionCA_r10 := omit, + csi_RS_ConfigNZPToReleaseList_r11 := omit, + csi_RS_ConfigNZPToAddModList_r11 := omit, + csi_RS_ConfigZPToReleaseList_r11 := omit, + csi_RS_ConfigZPToAddModList_r11 := omit, + epdcch_Config_r11 := omit, + pdsch_ConfigDedicated_v1130 := omit, + cqi_ReportConfig_v1130 := omit, + pucch_ConfigDedicated_v1130 := omit, + pusch_ConfigDedicated_v1130 := omit, + uplinkPowerControlDedicated_v1130 := omit + }; + + template (value) CQI_ReportConfig_r10 cs_CQI_ReportConfig_r10_CSIConfig(template (omit) CQI_ReportPeriodic_r10 p_CQI_ReportPeriodic_r10_RECONFIG := omit, + template (value) MeasSubframePattern_r10 p_Csi_MeasSubframeSet1_r10, + template (value) MeasSubframePattern_r10 p_Csi_MeasSubframeSet2_r10 ) := + { /* @status APPROVED (LTE_A) */ + cqi_ReportAperiodic_r10 := omit, + nomPDSCH_RS_EPRE_Offset := 0, //FFS + cqi_ReportPeriodic_r10 := p_CQI_ReportPeriodic_r10_RECONFIG, + pmi_RI_Report_r9 := omit, + csi_SubframePatternConfig_r10 := { + setup := { + csi_MeasSubframeSet1_r10 := p_Csi_MeasSubframeSet1_r10, + csi_MeasSubframeSet2_r10 := p_Csi_MeasSubframeSet2_r10 + } + } + }; + + template (value) CQI_ReportPeriodic_r10 cs_CQI_ReportPeriodic_r10_RECONFIG(integer p_Cqi_pmi_ConfigIndex, + integer p_Cqi_pmi_ConfigIndex2_r10) := + { /* @status APPROVED (LTE_A) */ + setup := { + cqi_PUCCH_ResourceIndex_r10 := 0, + cqi_PUCCH_ResourceIndexP1_r10 := omit, + cqi_pmi_ConfigIndex := p_Cqi_pmi_ConfigIndex, + cqi_FormatIndicatorPeriodic_r10 := { + widebandCQI_r10 := { + csi_ReportMode_r10 := submode1 + } + }, + ri_ConfigIndex := omit, + simultaneousAckNackAndCQI := false, + cqi_Mask_r9 := omit, + csi_ConfigIndex_r10 := { + setup := { + cqi_pmi_ConfigIndex2_r10 := p_Cqi_pmi_ConfigIndex2_r10, + ri_ConfigIndex2_r10 := omit + } + } + } + }; + + template SYSTEM_IND car_PeriodicCQI_IND(EUTRA_CellId_Type p_CellId, + template (present) TimingInfo_Type p_TimingInfo, + Null_Type p_CqiInd) := + { /* @status APPROVED (LTE_A) */ + Common := cr_IndAspCommonPart_SysInd (p_CellId,p_TimingInfo ), + Indication := { + CqiInd := p_CqiInd + } + }; + + template (value) L1Mac_IndicationControl_Type cs_EnablePeriodicCQI_Req(L1Mac_IndicationMode_Type p_PeriodicCQI_Mode) := + { /* @status APPROVED (LTE_A) */ + RachPreamble := omit, + SchedReq := omit, + BSR := omit, + UL_HARQ := omit, + C_RNTI := omit, + PHR := omit, + HarqError := omit, + PeriodicRI := omit, + EPHR := omit, + PeriodicCQI := p_PeriodicCQI_Mode, + SRS := omit + }; + + template (value) SYSTEM_CTRL_REQ cas_PeriodicCQI_IndConfig_REQ(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + L1Mac_IndicationMode_Type p_PeriodicCQI_Mode) := + { /* @status APPROVED (LTE_A) */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, p_TimingInfo), + Request := { + L1MacIndCtrl := cs_EnablePeriodicCQI_Req(p_PeriodicCQI_Mode) + } + }; + + template (value) SYSTEM_CTRL_REQ cas_CellConfig_CQI_ReportConfig_r10(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (value) CQI_ReportConfig_r10 p_CQI_ReportConfig_r10) := + { /* @status APPROVED (LTE_A) */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, p_TimingInfo), + Request := { + Cell := { + AddOrReconfigure := { + Basic := omit, + Active := { + C_RNTI := omit, + PhysicalLayerConfigUL := { + Prach := omit, + Pucch := omit, + Pusch := omit, + TimingAdvance := omit, + SRS_UL_Config := omit, + SR_Config := omit, + CQI_ReportConfig := { + R10andLater := { + cqi_ReportConfig_r10 := p_CQI_ReportConfig_r10, + cqi_ReportConfig_v1130 := omit + } + }, + UplinkPowerControlCommon := omit, + UplinkPowerControlDedicated := omit + }, + RachProcedureConfig := omit, + CcchDcchDtchConfig := omit, + ServingCellConfig := omit + } + } + } + } + }; + + template (value) RadioResourceConfigDedicated cs_RadioResourceConfigDedicated_MeasSfPtnPCell_r10(template (omit) RadioResourceConfigDedicated.measSubframePatternPCell_r10 p_MeasSubframePatternPCell_r10 ) := + { /* @status */ + srb_ToAddModList := omit, + drb_ToAddModList := omit, + drb_ToReleaseList := omit, + mac_MainConfig := omit, + sps_Config := omit, + physicalConfigDedicated := omit, + rlf_TimersAndConstants_r9 := omit, + measSubframePatternPCell_r10 := p_MeasSubframePatternPCell_r10, + neighCellsCRS_Info_r11 := omit + }; + + + template (value) DL_DCCH_Message cs_508_RRCConnectionReconfiguration_ConditionMEAS_PCellPattern(RRC_TransactionIdentifier p_RRC_TI, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq, + AllowedMeasBandwidth p_MeasurementBandwidth, + template (omit) RadioResourceConfigDedicated.measSubframePatternPCell_r10 p_MeasSubframePatternPCell_r10) := + /* @status */ + cs_RRCConnectionReconfiguration_Common(p_RRC_TI, + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_1Entry(tsc_IdMeasObject_f1, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq, p_MeasurementBandwidth)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_A3, + cs_ReportConfig_reportConfigEUTRA_eventA3(0, false, 0, ms0, rsrp, sameAsTriggerQuantity, 1, ms1024, r1)), + omit, + cs_MeasIdToAddModList_1Entry(1, tsc_IdMeasObject_f1, tsc_IdReportConfig_A3)), + omit, + cs_RadioResourceConfigDedicated_MeasSfPtnPCell_r10(p_MeasSubframePatternPCell_r10), + omit, + omit); + + /***************************************************************************************************/ + /* + * @desc To configure Periodic CQI indication Mode + * @param p_CellId + * @param p_TimingInfo + * @param p_PeriodicCQI_Mode + * @status APPROVED (LTE_A) + */ + function f_SS_ConfigPeriodicCQI_IndMode(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + L1Mac_IndicationMode_Type p_PeriodicCQI_Mode) runs on EUTRA_PTC + { + f_EUTRA_SS_CommonL1MacIndCtrlConfig(p_CellId, cas_PeriodicCQI_IndConfig_REQ(p_CellId, p_TimingInfo, p_PeriodicCQI_Mode)); + } + + /***************************************************************************************************/ + /* + * @desc + * @param p_CellId + * @status APPROVED (LTE_A) + */ + altstep a_EUTRA_MAC_CqiInd(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC + { + [] SYSIND.receive(car_PeriodicCQI_IND(p_CellId, ?, true)) + { + repeat; + } + }; + + //=================================================================================================== + // TEST CASES + //=================================================================================================== + /* + * @desc REFERENCE TS 36.523-1 clause 8.3.1.19 + * @status APPROVED (LTE_A) + */ + function f_TC_8_3_1_19_EUTRA() runs on EUTRA_PTC + { // eICIC/ Measurement configuration control and reporting / CSI change + + var SYSTEM_IND v_SYSTEM_IND; + var EUTRA_FDD_TDD_CellInfo_Type v_FDD_TDDInfo; + var template (value) CQI_ReportPeriodic_r10 v_CQI_ReportPeriodic_r10_RECONFIG; + var template (value) MeasSubframePattern_r10 v_Csi_MeasSubframeSet1_r10; + var template (value) MeasSubframePattern_r10 v_Csi_MeasSubframeSet2_r10; + var SubFrameTiming_Type v_SubFrameTiming; + var SubFrameTiming_Type v_SubFrameTimingRecord1; + var SubFrameTiming_Type v_SubFrameTimingRecord2; + var boolean v_Timeout := false; + var boolean v_CQI_Ind[2] := {false, false}; + var integer v_Count_CQI_Set1; + var integer v_Count_CQI_Set2; + var default v_DefaultVar := null; + var integer v_T1_RS_EPRE_Cell2 := -79; + var template(value) CellPowerList_Type v_CellPowerList_T1 := { cs_CellPower(eutra_Cell2, v_T1_RS_EPRE_Cell2) }; + + timer t_WaitTime := 5.0; + + //Initialize testcase + f_EUTRA_Init(c1); + + //Set Maximum reference power for cell 1 + f_EUTRA_CellInfo_InitMaxReferencePower(eutra_Cell2, v_T1_RS_EPRE_Cell2); + v_FDD_TDDInfo := f_EUTRA_CellInfo_GetFDD_TDD_Info (eutra_Cell1); + + //Create and configure Cell1, Cell2 + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_CellConfig_Def(eutra_Cell2); + + //Preamble: The UE is in state Generic RB Established (state 3) on Cell 1 + f_EUTRA_Preamble(eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_RbEst_Def(eutra_Cell1); + + f_EUTRA_TestBody_Set(true); + + //------------------------------------------------ + //Start TestBody + + // Cell1 EPRE = -85dBm cell2 = Off + + //@siclog "Step 1" siclog@ + //The SS transmits an RRCConnectionReconfiguration message to setup CSI measurement patterns on Cell1 + if (v_FDD_TDDInfo.FDD_TDD == FDD) { + v_CQI_ReportPeriodic_r10_RECONFIG := cs_CQI_ReportPeriodic_r10_RECONFIG(25, 40); + v_Csi_MeasSubframeSet1_r10 := { + subframePatternFDD_r10 := '0100010001000100010001000100010001000100'B }; + v_Csi_MeasSubframeSet2_r10 := { + subframePatternFDD_r10 := '1011101110111011101110111011101110111011'B}; + } + else { + v_CQI_ReportPeriodic_r10_RECONFIG := cs_CQI_ReportPeriodic_r10_RECONFIG(24, 39); + v_Csi_MeasSubframeSet1_r10 := { + subframePatternTDD_r10 := { + subframeConfig1_5_r10:= '01000100010000010001'B } + }; + v_Csi_MeasSubframeSet2_r10 := { + subframePatternTDD_r10 := { + subframeConfig1_5_r10 := '10001010001100101000'B} + }; + } + f_EUTRA_SS_CommonCellConfig(eutra_Cell1, cas_CellConfig_CQI_ReportConfig_r10(eutra_Cell1, cs_TimingInfo_Now, cs_CQI_ReportConfig_r10_CSIConfig(v_CQI_ReportPeriodic_r10_RECONFIG, v_Csi_MeasSubframeSet1_r10, v_Csi_MeasSubframeSet2_r10 ))); + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_RRCConnectionReconfiguration_Common(tsc_RRC_TI_Def, + omit, + omit, + cs_RadioResourceConfigDedicated_PhyConfig( cs_PhysicalConfigDedicated_CSIConfig(cs_CQI_ReportConfig_r10_CSIConfig(v_CQI_ReportPeriodic_r10_RECONFIG, v_Csi_MeasSubframeSet1_r10, v_Csi_MeasSubframeSet2_r10 ))), + omit))); + //@siclog "Step 2" siclog@ + //The UE transmits an RRCConnectionReconfigurationComplete message. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionReconfigurationComplete(tsc_RRC_TI_Def))); + + //@siclog "Step 3" siclog@ + //The SS re-adjusts the cell-specific reference signal level according to row "T1" in table 8.3.1.19.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerList_T1); + + //@siclog "Step 4" siclog@ + //Wait for 1s to allow measurement restriction patterns to be configured and cell power levels to settle on correct level. + f_Delay(1.0); + + f_SS_ConfigPeriodicCQI_IndMode(eutra_Cell1, cs_TimingInfo_Now, tsc_L1Mac_IndicationMode_Enable); + + //@siclog "Step 5" siclog@ + //Check: Does the UE perform periodical CQI reporting on subframes configured in CQI-ReportPeriodic-r10 (csi-MeasSubframeSet1 and csi-MeasSubframeSet2) during the next 5 s? + t_WaitTime.start; + v_Count_CQI_Set1:=0; + v_Count_CQI_Set2:=0; + alt { + [not v_Timeout] SYSIND.receive( car_PeriodicCQI_IND( eutra_Cell1, cr_TimingInfo_Any, true ) ) -> value v_SYSTEM_IND { + v_SubFrameTiming := v_SYSTEM_IND.Common.TimingInfo.SubFrame; + + if ((v_SubFrameTiming.Subframe.Number == 8)and(v_SubFrameTiming.SFN.Number mod 2 == 0)) { + // CQI received for set 1 + if( v_Count_CQI_Set1 == 0 ){ + v_CQI_Ind[0] := true; + v_SubFrameTimingRecord1 := v_SubFrameTiming; + } else if (v_SubFrameTiming.SFN.Number != ((v_SubFrameTimingRecord1.SFN.Number + 2*v_Count_CQI_Set1) mod 1024)) { + f_EUTRA_SetVerdictFailOrInconc (__FILE__, __LINE__, "Step 5: UE didn't performed periodical CQI reporting on subframes configured in csi-MeasSubframeSet1"); //@sic R5s140721 sic@ + } + v_Count_CQI_Set1 := v_Count_CQI_Set1+1; + repeat; + } else if ((v_SubFrameTiming.Subframe.Number == 3)and(v_SubFrameTiming.SFN.Number mod 4 == 0)) { //@sic R5s140721 sic@ + // CQI received for set 2 + if( v_Count_CQI_Set2 == 0 ){ + // First CQI received store SFN + v_CQI_Ind[1] := true; + v_SubFrameTimingRecord2 := v_SubFrameTiming; + } else if (v_SubFrameTiming.SFN.Number != ((v_SubFrameTimingRecord2.SFN.Number + 4*v_Count_CQI_Set2) mod 1024)) { //@sic R5s140721 sic@ + f_EUTRA_SetVerdictFailOrInconc (__FILE__, __LINE__, "Step 5: UE didn't performed periodical CQI reporting on subframes configured in csi-MeasSubframeSet2"); //@sic R5s140721 sic@ + } + v_Count_CQI_Set2 := v_Count_CQI_Set2+1; + repeat; + } else { + // CQI reported in a wrong SFN/subframe + f_EUTRA_SetVerdictFailOrInconc (__FILE__, __LINE__, "Test Case 8.3.1.9 Step 5"); + } + } + [] t_WaitTime.timeout { + v_Timeout := true; + } + } + v_DefaultVar := activate(a_EUTRA_MAC_CqiInd(eutra_Cell1)); + f_SS_ConfigPeriodicCQI_IndMode(eutra_Cell1, cs_TimingInfo_Now, tsc_L1Mac_IndicationMode_Disable); + + if( (not v_CQI_Ind[0]) or (not v_CQI_Ind[1]) ){ + f_EUTRA_SetVerdictFailOrInconc (__FILE__, __LINE__, "Test Case 8.3.1.9 Step 5"); + } + else{ + f_EUTRA_PreliminaryPass (__FILE__, __LINE__, "Test Case 8.3.1.9 Step 5"); + } + + //@siclog "Step 6" siclog@ + //Check: Does the test result of CALL generic procedure in TS 36.508 subclause 6.4.2.3 indicate that UE is in E-UTRA RRC_CONNECTED state? + f_EUTRA_508Check_ConnectedState(eutra_Cell1); + + deactivate(v_DefaultVar); + + //End TestBody + f_EUTRA_TestBody_Set(false); + + f_EUTRA_Postamble(eutra_Cell1, E2_CONNECTED); + + } //end of testcase 8.3.1.19 + + + //================================================================ + /* + * @desc REFERENCE TS 36.523-1 clause 8.3.1.20 + * @status + */ + function f_TC_8_3_1_20_EUTRA() runs on EUTRA_PTC + { // eICIC / Measurement configuration control and reporting / Event A3 / RSRP and RSRQ measurement / Neighbour ABS + + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var PhysCellId v_PhysCellId_Cell2; + var Frequency_IE_Type v_Frequency_IE; + var ChannelBandwidthDependency_Type v_ChBandDependency; + var SRB_COMMON_IND v_SRB_COMMON_IND; + var EUTRA_FDD_TDD_CellInfo_Type v_FDD_TDDInfo; + var template (value) MeasSubframePattern_r10 v_MeasSubframePatternNeigh_r10; + var template (value) MeasSubframePatternConfigNeigh_r10 v_MeasSubframePatternConfigNeigh_r10; + + var integer v_T0_RS_EPRE_Cell2 := -91; + var integer v_T1_RS_EPRE_Cell2 := -79; + var template(value) CellPowerList_Type v_CellPowerListT0, v_CellPowerListT1; + + //Initialize testcase + f_EUTRA_Init(c1); + + //Set EPRE for T0 + v_CellPowerListT0 := { + cs_CellPower(eutra_Cell2, v_T0_RS_EPRE_Cell2) + }; + //Set EPRE for T1 + v_CellPowerListT1 := { + cs_CellPower(eutra_Cell2, v_T1_RS_EPRE_Cell2) + }; + //Set EPRE for RF Initial + f_EUTRA_CellInfo_InitMaxReferencePower(eutra_Cell2, v_T1_RS_EPRE_Cell2); + v_FDD_TDDInfo := f_EUTRA_CellInfo_GetFDD_TDD_Info (eutra_Cell1); + + //Create and configure Cell1, Cell2 + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_CellConfig_Def(eutra_Cell2); + + //Preamble: The UE is in state Generic RB Established (state 3) on Cell 1 + f_EUTRA_Preamble(eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_RbEst_Def(eutra_Cell1); + + f_EUTRA_SetCellPowerList(v_CellPowerListT0); + + f_EUTRA_TestBody_Set(true); + + //------------------------------------------------ + //Start TestBody + + //@siclog "Step 1-2" siclog@ + //The SS transmits an RRCConnectionReconfiguration message to setup CSI measurement patterns on Cell1. + //The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1 to confirm the setup of intra frequency measurement. + if (v_FDD_TDDInfo.FDD_TDD == FDD) { + v_MeasSubframePatternNeigh_r10 := { + subframePatternFDD_r10 := '0011001100110011001100110011001100110011'B } + } + else { + v_MeasSubframePatternNeigh_r10 := { + subframePatternTDD_r10 := { + subframeConfig1_5_r10:= '11001110011100111001'B }//FFS + } + } + v_Frequency_IE := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell2); + v_ChBandDependency := f_EUTRA_BandDependentParam(v_Frequency_IE.DL_ChBandwidth, v_Frequency_IE.UL_ChBandwidth); + v_PhysCellId_Cell2 := f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell2); + + v_MeasSubframePatternConfigNeigh_r10 := { + setup := { + measSubframePatternNeigh_r10 := v_MeasSubframePatternNeigh_r10, + measSubframeCellList_r10 := { + { + start_ := v_PhysCellId_Cell2, + range := omit + } + } + } + } + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(eutra_Cell1, + cs_508_RRCConnectionReconfiguration_ConditionMEAS(v_RRC_TI, + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_1Entry(tsc_IdMeasObject_f1, + cs_MeasObject_measObjectEUTRA_Common(v_Frequency_IE.UL_DL_Earfcn.dl_CarrierFreq, v_ChBandDependency.AllowedMeasBandwidth, -, -, -, v_MeasSubframePatternConfigNeigh_r10)), + omit, + cs_ReportConfigToAddModList_1Entry(1, + cs_ReportConfig_reportConfigEUTRA_eventA3(-20, false, 0, ms0, rsrp, sameAsTriggerQuantity, 1, ms1024, r1)), //FFS + omit, + cs_MeasIdToAddModList_1Entry(1, tsc_IdMeasObject_f1, 1)))); + + //@siclog "Step 3" siclog@ + //The SS changes Cell 1 and Cell 2 parameters according to the row "T1" in table8.3.1.20.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerListT1); + + //@siclog "Step 4" siclog@ + //The UE transmits a MeasurementReport message on Cell 1 to report event A3 with the measured RSRP and RSRQ values for Cell 2. + // @sic R5-134914 sic@ + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, + cr_MeasurementReport_Eutra_1Entry_both(1, v_PhysCellId_Cell2)))-> value v_SRB_COMMON_IND; + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.3.1.20 Step 5"); + + //@siclog "Step 5" siclog@ + //Check: Does the UE transmit RSRP and RSRQ measurements in neighbour cell measurement restriction pattern? + //FFS + + //End TestBody + f_EUTRA_TestBody_Set(false); + + f_EUTRA_Postamble(eutra_Cell1, E2_CONNECTED); + } //end of testcase 8.3.1.20 + + //================================================================ + /* + * @desc REFERENCE TS 36.523-1 clause 8.3.1.21 + * @status APPROVED (LTE_A) + */ + function f_TC_8_3_1_21_EUTRA() runs on EUTRA_PTC + { /* eICIC / Measurement configuration control and reporting / Event A3 Handover / Neighbour RSRP measurement configuration change */ + + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var PhysCellId v_PhysCellId_Cell2; + var Frequency_IE_Type v_Frequency_IE; + var ChannelBandwidthDependency_Type v_ChBandDependency; + var SRB_COMMON_IND v_SRB_COMMON_IND; + var EUTRA_FDD_TDD_CellInfo_Type v_FDD_TDDInfo; + var template (value) MeasSubframePattern_r10 v_MeasSubframePatternNeigh_r10; + var template (value) MeasSubframePatternConfigNeigh_r10 v_MeasSubframePatternConfigNeigh_r10; + + var integer v_T0_RS_EPRE_Cell2 := -91; + var integer v_T1_RS_EPRE_Cell2 := -79; + var template(value) CellPowerList_Type v_CellPowerListT0; + var template(value) CellPowerList_Type v_CellPowerListT1; + + //Initialize testcase + f_EUTRA_Init(c1); + + v_FDD_TDDInfo := f_EUTRA_CellInfo_GetFDD_TDD_Info(eutra_Cell1); + + //Set EPRE for T0 + v_CellPowerListT0 := { + cs_CellPower(eutra_Cell2, v_T0_RS_EPRE_Cell2) + }; + //Set EPRE for T1 + v_CellPowerListT1 := { + cs_CellPower(eutra_Cell2, v_T1_RS_EPRE_Cell2) + }; + //Set EPRE for RF Initial + f_EUTRA_CellInfo_InitMaxReferencePower(eutra_Cell2, v_T1_RS_EPRE_Cell2); + + //Create and configure Cell1, Cell2 + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_CellConfig_Def(eutra_Cell2); + + //Preamble: The UE is in state Generic RB Established (state 3) on Cell 1 + f_EUTRA_Preamble(eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_RbEst_Def(eutra_Cell1); + + f_EUTRA_SetCellPowerList(v_CellPowerListT0); + + f_EUTRA_TestBody_Set(true); + + //------------------------------------------------ + //Start TestBody + + //@siclog "Step 1-2" siclog@ + //The SS transmits an RRCConnectionReconfiguration message on Cell 1 to setup intra frequency measurement. + //The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1 to confirm the setup of intra frequency measurement. + if (v_FDD_TDDInfo.FDD_TDD == FDD) { + v_MeasSubframePatternNeigh_r10 := { + subframePatternFDD_r10 := '1011010110101101011010110101101011010110'B + }; + } else { + v_MeasSubframePatternNeigh_r10 := { + subframePatternTDD_r10 := { + subframeConfig1_5_r10:= '11001110011100111001'B + } + }; + } + v_Frequency_IE := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell2); + v_ChBandDependency := f_EUTRA_BandDependentParam(v_Frequency_IE.DL_ChBandwidth, v_Frequency_IE.UL_ChBandwidth); + v_PhysCellId_Cell2 := f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell2); + + v_MeasSubframePatternConfigNeigh_r10 := { + setup := { + measSubframePatternNeigh_r10 := v_MeasSubframePatternNeigh_r10, + measSubframeCellList_r10 := { + { + start_ := v_PhysCellId_Cell2, + range := omit + } + } + } + } + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(eutra_Cell1, + cs_508_RRCConnectionReconfiguration_ConditionMEAS(v_RRC_TI, + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_1Entry(tsc_IdMeasObject_f1, + cs_MeasObject_measObjectEUTRA_Common(v_Frequency_IE.UL_DL_Earfcn.dl_CarrierFreq, v_ChBandDependency.AllowedMeasBandwidth, -, -, -, v_MeasSubframePatternConfigNeigh_r10)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_A3, + cs_ReportConfig_reportConfigEUTRA_eventA3(0, false, 0, ms0, rsrp, sameAsTriggerQuantity, 1, ms1024, r1)), + omit, + cs_MeasIdToAddModList_1Entry(1, tsc_IdMeasObject_f1, tsc_IdReportConfig_A3)))); + + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.3.1.21 Step 2"); + + //@siclog "Step 3" siclog@ + //The SS changes Cell 1 and Cell 2 parameters according to the row "T1" in Table 8.3.1.21.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerListT1); + + //@siclog "Step 4" siclog@ + //The UE transmits a MeasurementReport message on Cell 1 to report event A3 with the measured RSRP values for Cell 2. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_MeasurementReport_Eutra_1Entry_rsrp(1, v_PhysCellId_Cell2)))-> value v_SRB_COMMON_IND; + + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.3.1.21 Step 4"); + + //@siclog "Step 5-6" siclog@ + //The SS transmits an RRCConnectionReconfiguration message to order the UE to perform intra frequency handover to Cell 2. + //Check: Does the UE transmit an RRCConnectionReconfigurationComplete message on Cell 2 using common preamble to confirm the successful completion of the intra frequency handover? + f_EUTRA_508RRC_IntraLTE_HO_InterCell ( eutra_Cell1, eutra_Cell2 ); + + //End TestBody + f_EUTRA_TestBody_Set(false); + + f_EUTRA_Postamble(eutra_Cell2, E2_CONNECTED); + } //end of testcase 8.3.1.21 + + //================================================================ + /* + * @desc REFERENCE TS 36.523-1 clause 8.3.1.28 + * @status + */ + function f_TC_8_3_1_28_EUTRA() runs on EUTRA_PTC + { //eICIC / Measurement configuration control and reporting / Event A3 / RSRP and RSRQ measurement / Serving ABS + + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var PhysCellId v_PhysCellId_Cell2; + var Frequency_IE_Type v_Frequency_IE; + var ChannelBandwidthDependency_Type v_ChBandDependency; + var SRB_COMMON_IND v_SRB_COMMON_IND; + var EUTRA_FDD_TDD_CellInfo_Type v_FDD_TDDInfo; + var template (value) RadioResourceConfigDedicated.measSubframePatternPCell_r10 v_MeasSubframePatternPCell_r10; + + var integer v_T0_RS_EPRE_Cell2 := -91; + var integer v_T1_RS_EPRE_Cell2 := -79; + var template(value) CellPowerList_Type v_CellPowerListT0, v_CellPowerListT1; + + //Initialize testcase + f_EUTRA_Init(c1); + + v_FDD_TDDInfo := f_EUTRA_CellInfo_GetFDD_TDD_Info (eutra_Cell1); + + //Set EPRE for T0 + v_CellPowerListT0 := { + cs_CellPower(eutra_Cell2, v_T0_RS_EPRE_Cell2) + }; + //Set EPRE for T1 + v_CellPowerListT1 := { + cs_CellPower(eutra_Cell2, v_T1_RS_EPRE_Cell2) + }; + //Set EPRE for RF Initial + f_EUTRA_CellInfo_InitMaxReferencePower(eutra_Cell2, v_T1_RS_EPRE_Cell2); + + //Create and configure Cell1, Cell2 + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_CellConfig_Def(eutra_Cell2); + + //Preamble: The UE is in state Generic RB Established (state 3) on Cell 1 + f_EUTRA_Preamble(eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_RbEst_Def(eutra_Cell1); + + f_EUTRA_SetCellPowerList(v_CellPowerListT0); + + f_EUTRA_TestBody_Set(true); + + //------------------------------------------------ + //Start TestBody + + //@siclog "Step 1-2" siclog@ + //The SS transmits an RRCConnectionReconfiguration message on Cell 1 to setup intra frequency measurement. + //The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1 to confirm the setup of intra frequency measurement. + if (v_FDD_TDDInfo.FDD_TDD == FDD) { + v_MeasSubframePatternPCell_r10 := { + setup := { + subframePatternFDD_r10 := '1011010110101101011010110101101011010110'B }//FFS + } + } + else { + v_MeasSubframePatternPCell_r10 := { + setup := { + subframePatternTDD_r10 := { + subframeConfig1_5_r10:= '11001110011100111001'B }//FFS + } + } + } + v_Frequency_IE := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell2); + v_ChBandDependency := f_EUTRA_BandDependentParam(v_Frequency_IE.DL_ChBandwidth, v_Frequency_IE.UL_ChBandwidth); + v_PhysCellId_Cell2 := f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell2); + + + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(eutra_Cell1, + cs_508_RRCConnectionReconfiguration_ConditionMEAS_PCellPattern(v_RRC_TI, v_Frequency_IE.UL_DL_Earfcn.dl_CarrierFreq, v_ChBandDependency.AllowedMeasBandwidth, v_MeasSubframePatternPCell_r10)); + + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.3.1.28 Step 2"); + + //@siclog "Step 3" siclog@ + //The SS changes Cell 1 and Cell 2 parameters according to the row "T1" in table 8.3.1.28.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerListT1); + + //@siclog "Step 4" siclog@ + //Check: Does the UE transmit a MeasurementReport message on Cell 1 to report event A3 with the measured expected RSRP and RSRQ values for Cell 2? + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, + cr_MeasurementReport_Eutra_1Entry_both(1, v_PhysCellId_Cell2)))-> value v_SRB_COMMON_IND; //@sic R5-140935 sic@ + + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.3.1.28 Step 4"); + + //@siclog "Step 5" siclog@ + //Check: Does the UE transmit RSRP and RSRQ measurements in serving cell measurement restriction pattern? +//FFS + + //End TestBody + f_EUTRA_TestBody_Set(false); + + f_EUTRA_Postamble(eutra_Cell1, E2_CONNECTED); + } //end of testcase 8.3.1.28 + +} diff --git a/LTE_A_IWD_14wk37/LTE_A/8_4/InterRat_Handover_UtoE_CA.ttcn b/LTE_A_IWD_14wk37/LTE_A/8_4/InterRat_Handover_UtoE_CA.ttcn new file mode 100644 index 0000000..f530df3 --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/8_4/InterRat_Handover_UtoE_CA.ttcn @@ -0,0 +1,264 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-05 19:27:02 +0200 (Fri, 05 Sep 2014) $ +// $Rev: 12079 $ +/******************************************************************************/ +module InterRat_Handover_UtoE_CA +{ + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_CommonDefs all; + import from EUTRA_CellInfo all; + import from EUTRA_Component all; + import from EUTRA_ConfigurationSteps all; + import from EUTRA_CommonProcedures all; + import from EUTRA_SRB_Templates all; + import from EUTRA_AspCommon_Templates all; + import from CommonDefs all; + import from Parameters all; + import from EUTRA_CommonFunctions_CA all; + import from EUTRA_AspSystem_Templates_CA all; + import from EUTRA_CellInfoInit_CA all; + import from EUTRA_ASP_TypeDefs all; + import from EUTRA_CellCfg_Templates all; + import from EUTRA_RRC_Templates all; + import from EUTRA_CellInfoInit_CA all; + import from EUTRA_NASSteps all; + import from EUTRA_SecurityFunctions all; + import from EUTRA_SecuritySteps all; + import from EUTRA_SysInfo_Templates all; + import from CommonIratDefs all; + import from EUTRA_AuxiliaryFunctions all; + import from EUTRA_IRATFunctions all; + import from EUTRA_IdleMode all; + import from EUTRA_ASP_NasCtrl all; + + /* + * @desc Converts the CA TYPE (intra band , inter band )to integer + * @param p_CA_Type + * @return integer + * @status APPROVED (LTE_A) + */ + function fl_ConvertCA_TypeToInteger(CA_Tested_Type p_CA_Type) return integer + { + var integer v_CA_Type ; + select (p_CA_Type) { + case (CA_IntraBand) { v_CA_Type := 1; } /* @sic R5-141113 sic@ */ + case (CA_InterBand) { v_CA_Type := 2; } + case else { FatalError (__FILE__, __LINE__, "invalid BandWidth"); } + } + return v_CA_Type; + }; + + /* + * @desc REFERENCE TS 36.523-1 clause 8.4.2.7 + * @param p_PCellId + * @param p_SCellId + * @param p_CA_Type + * @status APPROVED (LTE_A) + */ + function f_TC_8_4_2_7_Common(EUTRA_CellId_Type p_PCellId, + EUTRA_CellId_Type p_SCellId, + CA_Tested_Type p_CA_Type) runs on EUTRA_PTC + { /* CA / RRC connection reconfiguration / Handover UTRAN to E-UTRAN/ Success / SCell addition */ + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var CellReselectionPriority v_CellReselectionPriority := 5; + var P_MaxUTRA_FDD v_P_MaxUTRA := 0; + var template (value) CellPowerList_Type v_CellPowerList_AtT1, v_CellPowerList_AtT2; + + //var EUTRA_FDD_TDD_Mode_Type v_FDD_TDD_Cell1; + var template (omit) CarrierFreqListUTRA_FDD v_CarrierFreqListUTRA_FDD := omit; + var template (omit) CarrierFreqListUTRA_TDD v_CarrierFreqListUTRA_TDD := omit; + var IRAT_CoOrd_SysInfo_Type v_UTRANSysInfo; + + var EUTRA_SecurityParams_Type v_Auth_Params, v_Auth_Params_Native; + var NasCountInfo_Type v_NasCountInfo; + var boolean v_UL_CA := pc_UL_CA; + var template (value) Scell_Capability_Type v_Scell_Capability := DlOnly; + var DRX_Config v_DRX_Config; + var boolean v_NoUL_SCell; + + f_EUTRA_Init ( c4 ); + f_EUTRA_CA_InitCells({p_PCellId, p_SCellId}, p_CA_Type,c4); + f_EUTRA_CellInfo_InitMaxReferencePower (p_PCellId, -70); + f_EUTRA_CellInfo_InitMaxReferencePower (p_SCellId, -70); + //Coordinate with UTRAN component to receive UTRAN frequencies + v_UTRANSysInfo := f_IRAT_WaitForCoOrd_SysInfo (UTRAN); + + //Get FDD or TDD mode + //v_FDD_TDD_Cell1 := f_EUTRA_CellInfo_GetFDD_TDD ( p_PCellId ); + + //Set SIB6 for Cell 1 according to Table 8.4.2.7.3.3-2 + if (f_IRAT_GetUTRAN_FDD_TDD_Mode () == UTRAN_FDD) { + v_CarrierFreqListUTRA_FDD := { cs_CarrierFreqUTRA_FDD_CRPrio_PMax(v_UTRANSysInfo.Utran[0].FDD.Freq, v_CellReselectionPriority, v_P_MaxUTRA) }; + } else { + v_CarrierFreqListUTRA_TDD := { cs_CarrierFreqUTRA_TDD_CRPrio_PMax(v_UTRANSysInfo.Utran[0].TDD.Freq, v_CellReselectionPriority, v_P_MaxUTRA) }; + } + f_EUTRA_CellInfo_SetSIB6(p_PCellId, cs_508_SystemInformationBlockType6_Def(v_CarrierFreqListUTRA_FDD, v_CarrierFreqListUTRA_TDD)); + if (v_UL_CA) { + v_Scell_Capability := UL_DL; + } + v_CellPowerList_AtT1 := { + cs_CellPower (p_PCellId, -90), + cs_CellPower (p_SCellId, -90) + }; + v_CellPowerList_AtT2 := { + cs_CellPower (p_PCellId, -70), + cs_CellPower (p_SCellId, -70) + } + v_NoUL_SCell:= f_EUTRA_CellInfo_GetNoUL_Frequency(p_SCellId);//@sic R5s140775 sic@ + //* @desc Create and configure cell + f_EUTRA_CellConfig_Pcell_Def (p_PCellId); + f_EUTRA_CellConfig_Scell(p_SCellId); //No DRB's created + + //* @desc Send relevant EUTRA cell info to UTRAN PTC + f_IRAT_Send_EUTRA_SysInfoToOtherPort(UTRAN, + f_EUTRA_CellInfo_GetEARFCN_DL(p_PCellId), + f_ConvertDL_BandwidthToInteger (f_EUTRA_CellInfo_GetDL_ChBandwidth (p_PCellId)), + cs_EUTRA_HOInfo (f_ConvertUL_BandwidthToInteger (f_EUTRA_CellInfo_GetUL_ChBandwidth (p_PCellId)), + f_EUTRA_CellInfo_GetPhyCellId(p_PCellId), + f_EUTRA_CellInfo_GetRootSequenceIndex (p_PCellId)), + fl_ConvertCA_TypeToInteger(p_CA_Type)); + f_IRAT_Send_EUTRA_SysInfoToOtherPort(UTRAN, + f_EUTRA_CellInfo_GetEARFCN_DL(p_SCellId), + f_ConvertDL_BandwidthToInteger (f_EUTRA_CellInfo_GetDL_ChBandwidth (p_SCellId)), + cs_EUTRA_HOInfo (f_ConvertUL_BandwidthToInteger (f_EUTRA_CellInfo_GetUL_ChBandwidth (p_SCellId)), + f_EUTRA_CellInfo_GetPhyCellId(p_SCellId), + f_EUTRA_CellInfo_GetRootSequenceIndex (p_SCellId)), + fl_ConvertCA_TypeToInteger(p_CA_Type)); + + // @desc Bring UE to state 2 + f_EUTRA_Preamble_InterRAT(p_PCellId, STATE2_IDLEUPDATE, UTRAN); + + f_EUTRA_TestBody_Set(true); + + //@siclog "Step 0" siclog@ + f_Delay (6.0); // @sic R5-113680 sic@ + + //@siclog "Step 1" siclog@ + //SS changes Cell1 and UTRAN cell5 level acc. to table 8.4.2.4.3.2-1 + //* @desc Sets the cell power attenuation and stores the value in the EUTRA_CellInfo + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + // Backup Auth params and NAS count. + //@sic R5s120535 sic@ + v_Auth_Params := f_EUTRA_Security_Get (); + v_Auth_Params_Native := v_Auth_Params; + v_NasCountInfo := f_EUTRA_SS_NAS_CountGet(); // + // Update security params when authentication done on UTRAN side + f_EUTRA_InterRAT_InitialiseAuthParams (UTRAN); + + // Wait for trigger from UTRAN side at step 9 + f_IRAT_WaitForCoOrd_Trigger(UTRAN); + + //@siclog "Step 10" siclog@ + //SS changes Cell1 and UTRAN cell5 level acc. to row T2 in table 8.4.2.7.3.2-1 + //* @desc Sets the cell power attenuation and stores the value in the EUTRA_CellInfo + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT2); + + //Make HO specific steps for interRAT HO + // Configure C-RNTI based contention resolution in target cell + f_EUTRA_SS_ConfigRachProcedure(p_PCellId, tsc_C_RNTI_Def2, cs_RachProcedureConfig_CRNTI_Dedicated(f_EUTRA_CellInfo_GetRAR_TA(p_PCellId), + f_EUTRA_CellInfo_GetDL_ChBandwidth(p_PCellId))); + f_EUTRA_SS_CommonCellConfig(p_PCellId, cas_PCellConfig_REQ(p_PCellId, cs_TimingInfo_Now, {p_SCellId})); + //Save new C-RNTI in cell configuration for p_TargetCellId + f_EUTRA_CellInfo_SetC_RNTI ( p_PCellId, tsc_C_RNTI_Def2 ); + + // activate RRC security at SS target cell for SRB 1, 2 and 1 AM DRB + + v_Auth_Params := f_EUTRA_Security_Get(); + v_Auth_Params := f_EUTRA_MappedContext_HO_Init(v_Auth_Params, v_Auth_Params.AuthParams);//@sic R5s130010 sic@ + v_Auth_Params.AS_Ciphering.ActTimeList := f_EUTRA_RRC_CipherActTime_GetForHO (p_PCellId, tsc_DrbList_Def); // + f_EUTRA_SS_NAS_ConfigureSecurity(v_Auth_Params.NAS_Integrity, v_Auth_Params.NAS_Ciphering); // + f_EUTRA_SS_NAS_CountSet ('00000000'O, omit); // + f_EUTRA_SS_RRC_EnableIntProt_CiphULandDL(p_PCellId, + v_Auth_Params.AS_Integrity, + v_Auth_Params.AS_Ciphering, + cs_TimingInfo_Now); + + f_EUTRA_Security_Set(v_Auth_Params); + f_EUTRA_CellInfo_SetC_RNTI ( p_SCellId, tsc_C_RNTI_Def2 ); + //Configure UL grant configuration ("OnSR", periodic TA is NOT started) in target cell (cell 1) + f_EUTRA_SS_CommonCellConfig(p_PCellId, cas_ULGrantAllocation_Def_REQ(p_PCellId, cs_TimingInfo_Now, cs_PUCCH_Synch_None)); + if (v_NoUL_SCell) //@sic R5s140775 sic@ + { + + f_EUTRA_SS_ConfigRachProcedure(p_SCellId, tsc_C_RNTI_Def2, cs_RachProcedureConfig_CRNTI(f_EUTRA_CellInfo_GetRAR_TA(p_SCellId), + f_EUTRA_CellInfo_GetDL_ChBandwidth(p_SCellId))); + + f_EUTRA_SS_CommonCellConfig(p_SCellId, cas_ULGrantAllocation_REQ(p_SCellId, cs_TimingInfo_Now, -, cs_PUCCH_Synch_None)); + + } + f_EUTRA_SS_CommonCellConfig(p_SCellId, cas_SCellConfig_REQ(p_SCellId, cs_TimingInfo_Now, cs_SCellConfig(p_PCellId, 1, v_Scell_Capability, rf32))); + + + // Send trigger to UTRAN to send the handover message as SS configuration for Pcell and Scell is complete + f_IRAT_SendCoOrd (UTRAN, cms_IRAT_Trigger); + // UTRAN side will do steps10&11 + + //@siclog "Step 12" siclog@ + //check: does the UE tx a rrcconnectionreconfigurationcomplete message on cell1 using security key derived from new kENB? + SRB.receive( car_SRB1_RrcPdu_IND( p_PCellId, cr_508_RRCConnectionReconfigurationComplete( v_RRC_TI ) ) ); + /* SS automatically checks that UE transmit an RRCConnectionReconfigurationComplete using the indicated + security key and the indicated security algortihms */ + f_EUTRA_PreliminaryPass( __FILE__, __LINE__, "Test Case 8.4.2.7 Step 12" ); + + //Start periodic sending of TA command in target cell (cell 1) + f_EUTRA_SS_CommonCellConfig(p_PCellId, cas_PUCCH_Synch_Config_REQ(eutra_Cell1, cs_TimingInfo_Now, cs_PUCCH_Synch_Auto_Def, false)); // @sic R5s120935 sic@ + + // configure RACH procedure for target cell back to default + f_EUTRA_SS_ConfigRachProcedure_Def(p_PCellId, -, -, -, -, -, false); + // Configure default DRX on SS for Pcell and Scell + v_DRX_Config := valueof(f_GetUeDrxConfig(DRX_L)); + f_EUTRA_SS_DrxCtrlConfig(p_PCellId, cs_DrxCtrl_Config(v_DRX_Config)); + f_EUTRA_SS_DrxCtrlConfig(p_SCellId, cs_DrxCtrl_Config(v_DRX_Config)); + + //@siclog "Step 12A" siclog@ + //generic procedure in 36.508 subclause 6.4.2.10 on cell1 + f_EUTRA_508Check_TrackingAreaUpdating_AfterHO(p_PCellId, v_Auth_Params_Native, v_NasCountInfo); + + //@siclog "Step 20" siclog@ + //check: does the test result of generic test procedure in TS 36.508 subclause 6.4.2.3 indicate that the UE is in E-UTRA RRC_CONNECTED state on Cell1? + f_EUTRA_508Check_ConnectedState(p_PCellId); + + // Send trigger to UTRAN to end the test case + f_IRAT_SendCoOrd (UTRAN, cms_IRAT_Trigger); + + //postamble + f_EUTRA_TestBody_Set(false); + + // Release RRC Connection and Switch off + f_EUTRA_Postamble(p_PCellId, E2_CONNECTED);// + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.4.2.7.1 + * @status APPROVED (LTE_A) + */ + function f_TC_8_4_2_7_1_EUTRA() runs on EUTRA_PTC + { // CA / RRC connection reconfiguration / Handover UTRAN to E-UTRAN/ Success / SCell addition / Intra-band Contiguous CA + f_TC_8_4_2_7_Common(eutra_Cell1, eutra_Cell3, CA_IntraBand); /* @sic R5-141113 sic@ */ + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.4.2.7.2 + * @status APPROVED (LTE_A) + */ + function f_TC_8_4_2_7_2_EUTRA() runs on EUTRA_PTC + { // CA / RRC connection reconfiguration / Handover UTRAN to E-UTRAN/ Success / SCell addition / Inter-Band CA + f_TC_8_4_2_7_Common(eutra_Cell1, eutra_Cell10, CA_InterBand); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.4.2.7.3 + * @status + */ + function f_TC_8_4_2_7_3_EUTRA() runs on EUTRA_PTC + { // CA / RRC connection reconfiguration / Handover UTRAN to E-UTRAN/ Success / SCell addition / Intra-band non-contiguous CA + f_TC_8_4_2_7_Common(eutra_Cell6, eutra_Cell3, CA_IntraBand); /* @sic R5-141113 sic@ */ + } + +} diff --git a/LTE_A_IWD_14wk37/LTE_A/8_4/InterRat_Handover_UtoE_CA_UTRAN.ttcn b/LTE_A_IWD_14wk37/LTE_A/8_4/InterRat_Handover_UtoE_CA_UTRAN.ttcn new file mode 100644 index 0000000..f4e6b77 --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/8_4/InterRat_Handover_UtoE_CA_UTRAN.ttcn @@ -0,0 +1,236 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-05 19:27:02 +0200 (Fri, 05 Sep 2014) $ +// $Rev: 12079 $ +/******************************************************************************/ + +module InterRat_Handover_UtoE_CA_UTRAN +{ + import from CommonIratDefs all; + import from CommonDefs all; + + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_ASP_Definitions language "ASN.1:2002" all; + import from UTRAN_Parameters all; + import from UTRAN_Component all; + import from UTRAN_CommonFunctions all; + import from UTRAN_CommonProcedures all; + import from UTRAN_CellInfo all; + import from UTRAN_RRC_Templates all; + import from UTRAN_RRC_Templates_r9 all; + import from UTRAN_TTCN_ASP_Templates all; + import from UTRAN_CommonDefs all; + import from UTRAN_RAB_Functions all; + import from UTRAN_ConfigurationSteps all; + import from UTRAN_ASN1_ASP_RAB_Templates all; + import from UTRAN_ASN1_ASP_Templates all; + import from EUTRA_CapabilityFunctions_CA all; + import from EUTRA_CapabilityFunctions all; + import from UTRAN_RRC_SysInfo_Templates all; + import from UTRAN_RRC_Handover_Templates all; + + /* + * @desc REFERENCE TS 36.523-1 clause 8.4.2.7 + * @status APPROVED (LTE_A) + */ + function f_TC_8_4_2_7_Common_UTRAN() runs on UTRAN_PTC + { /* CA / RRC connection reconfiguration / Handover UTRAN to E-UTRAN/ Success / SCell addition */ + var UTRAN_FDD_TDD_Type v_FDD_TDD_Mode; + var integer v_T1_CPICH_Cell5 := -65; + var integer v_T1_PCCPCH_Cell5 := -65; + var integer v_T2_CPICH_Cell5 := -85; + var integer v_T2_PCCPCH_Cell5 := -85; + + var UTRAN_SecurityInfo_Type v_SecurityInfo; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI; + var TGCFN v_TGCFN; + var TGPS_Reconfiguration_CFN v_Tgps_Reconfiguration_CFN; + var UTRAN_CFN_Info_Type v_CFNInfo; + + var octetstring v_RRCConnectionConfigurationMessage; + var IRAT_CoOrd_SysInfo_Type v_EUTRASysInfo, v_EUTRASysInfo2; + + var EUTRA_MeasurementBandwidth v_EUTRA_MeasurementBandwidth := f_UTRAN_ConvertIntegerToEUTRA_MeasurementBandwidth(f_ConvertDL_BandwidthPIXITToInteger()); + + // Initialise all cells + f_UTRAN_Init(EUTRA_UTRAN); + + v_SecurityInfo := f_UTRAN_Security_Get(); + + //Send the cell info to the EUTRA component + f_UTRAN_Send_IR_SysInfoToEUTRA(utran_Cell5); + + //Get Cell Parameters for EUTRA cell + v_EUTRASysInfo := f_IRAT_WaitForCoOrd_SysInfo(EUTRA); + v_EUTRASysInfo2 := f_IRAT_WaitForCoOrd_SysInfo(EUTRA); + + f_UTRAN_SysInfo_SetSIB19(utran_Cell5, + cs_SIB19_UtraAndOneEutraEntry(cs_Utra_PriorityInfoList_Def(5), + cs_Eutra_FreqAndPriList_OneEntry_Def(v_EUTRASysInfo.Eutra[0].Arfcn, + v_EUTRA_MeasurementBandwidth, + 4))); + + // Create and configure Cell 5 + // Cell started switched on with default power level, -60 and max attenuation + f_UTRAN_SS_CreateCellDCH(utran_Cell5); + + // Start sending System Information + f_UTRAN_SendDefSysInfo(utran_Cell5); + + //UE starts registered in EUTRA, wait its Auth Params + f_UTRAN_InterRAT_InitialiseAuthParams(); + + // Get FDD or TDD mode + v_FDD_TDD_Mode := f_UTRAN_CellInfo_GetFDD_TDD(utran_Cell5); + + f_UTRAN_TestBody_Set(true); + + //@siclog "Step 1" siclog@ + //The SS changes Cell 1 and Cell 5 level according to the row "T1" in table 8.4.2.4.3.2-1. + f_UTRAN_SetCellPower(utran_Cell5, v_T1_CPICH_Cell5, v_T1_PCCPCH_Cell5); + + //@siclog "Step 2" siclog@ + //Generic procedure in 36.508 subclause 6.4.2.8 is performed on cell 5 + f_UTRAN_508CheckCampOnNewUtranCell(utran_Cell5, cell_Dch); + f_Delay(5.0); + + //@siclog "Step 3 - 7" siclog@ + // Step 7 to 11 of test procedure in TS 34.123-1 subclause 12.9.14.4 is performed on Cell 5. + // NOTE: The UE performs Network initiated RAB re-establishment in a UTRAN cell. + f_UTRAN_MT_RAB_ReEst(utran_Cell5, cell_DCH_HS_DSCH); + + // UE's re-done authentication in establishing the RAB so need to send the new params to EUTRA + f_UTRAN_SendAuthCoOrdParameters(EUTRA, omit); + + //@sic R5-106560 sic@ + //@siclog "Step 8a1 - 8a2" siclog@ + if (v_FDD_TDD_Mode == UTRAN_FDD and pc_UTRA_CompressedModeRequired) { //Compressed mode only applicable in FDD @sic R5s120535 sic@ + f_UTRAN_PhyChReconf_InterRatCompresseModeSet_842x(utran_Cell5); //@sic R5s120686 sic@ + + + v_CFNInfo := f_CalculateActTime(utran_Cell5); + v_TGCFN := v_CFNInfo.tGCFN; + v_Tgps_Reconfiguration_CFN := v_TGCFN; + + //refresh security info + v_SecurityInfo := f_UTRAN_Security_Get(); + + //@siclog "Step 9" siclog@ + //ss tx a measurement control to setup inter-RAT on cell 5 + U_AM.send(cas_RLC_Data_Req_NoCnf(utran_CellDedicated, + tsc_RB2, + cs_MeasurementControl_InterRATMeasurement(v_SecurityInfo.dl_IntegrityCheckInfo, + v_RRC_TI, + v_EUTRASysInfo.Eutra[0].Arfcn, + v_EUTRA_MeasurementBandwidth, + v_Tgps_Reconfiguration_CFN, + v_TGCFN))); + if (pc_InterRAT_DL_CompressedModeRequired) { + f_UTRAN_CPHY_RL_Modify(cas_CompressedModeStatusInfo_REQ(utran_Cell5, + tsc_DL_DPCH1, + cs_DPCH_CompressedModeStatusInfoActive(v_Tgps_Reconfiguration_CFN, v_TGCFN), + cs_ActivateCFN(v_CFNInfo.actTime))); // changed to use activation time + + } + if (pc_InterRAT_UL_CompressedModeRequired) { + f_UTRAN_CPHY_RL_Modify(cas_CompressedModeStatusInfo_REQ(utran_Cell5, + tsc_UL_DPCH1, + cs_DPCH_CompressedModeStatusInfoActive(v_Tgps_Reconfiguration_CFN, v_TGCFN), + cs_ActivateCFN(v_CFNInfo.actTime))); // changed to use activation time + } + } else if (v_FDD_TDD_Mode == UTRAN_FDD and not pc_UTRA_CompressedModeRequired ) { // @sic R5s140149 subject to prose CR approval sic@ + //refresh security info + v_SecurityInfo := f_UTRAN_Security_Get(); + + //@siclog "Step 9" siclog@ + //ss tx a measurement control to setup inter-RAT on cell 5 + U_AM.send ( cas_RLC_Data_Req_NoCnf(utran_CellDedicated, + tsc_RB2, + cs_MeasurementControl_InterRATMeasurement_NoCompMode(v_SecurityInfo.dl_IntegrityCheckInfo, + v_RRC_TI, + v_EUTRASysInfo.Eutra[0].Arfcn, + v_EUTRA_MeasurementBandwidth))); + } else { // TDD branch + v_SecurityInfo := f_UTRAN_Security_Get(); + //@siclog "Step 9" siclog@ + //ss tx a measurement control to setup inter-RAT on cell 5 + // @sic R5s130219 sic@ + U_AM.send(cas_RLC_Data_Req_NoCnf(utran_CellDedicated, + tsc_RB2, + cs_MeasurementControl_InterRATMeasurement_TDD_r9(v_SecurityInfo.dl_IntegrityCheckInfo, + v_RRC_TI, + v_EUTRASysInfo.Eutra[0].Arfcn, + v_EUTRA_MeasurementBandwidth, + cs_CellDCHMeasOccasionInfo_TDD128_r9))); // @sic R5-131872 sic@ + } + // Send trigger from UTRAN side + f_IRAT_SendCoOrd(EUTRA, cms_IRAT_Trigger); + + //@siclog "Step 10" siclog@ + //SS changes Cell1 and UTRAN cell5 level acc. to row T2 in table 8.4.2.4.3.2-1 + // Sets the cell power attenuation and stores the value in the EUTRA_CellInfo + f_UTRAN_SetCellPower(utran_Cell5, v_T2_CPICH_Cell5, v_T2_PCCPCH_Cell5); + + if (v_FDD_TDD_Mode == UTRAN_FDD and pc_UTRA_CompressedModeRequired) { //Compressed mode only applicable in FDD @sic R5s120535 sic@ + //@siclog "Step 10" siclog@ + //UE tx a measurement report on cell5 + U_AM.receive(car_RLC_Data_Ind(utran_CellDedicated, tsc_RB2, cr_MeasurementReport)); + } + v_RRCConnectionConfigurationMessage := f_Encode_RRCConnectionReconfiguration_HOToEUTRA_CA(v_EUTRASysInfo.Eutra[0], + v_EUTRASysInfo2.Eutra[0]); + + // Wait for EUTRA PTC to complete Pcell Scell SS configuration + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + //@siclog "Step 11" siclog@ + //SS tx a handover from utran command on cell5 + U_AM.send(cas_RLC_Data_Req_NoCnf(utran_CellDedicated, + tsc_RB2, + cs_HandoverFromUTRANCommand_EUTRA(v_SecurityInfo.dl_IntegrityCheckInfo, + v_RRC_TI, + v_RRCConnectionConfigurationMessage))); + // Wait for the end of the test case + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + + //postamble + f_UTRAN_TestBody_Set(false); + + // Release UTRAN Cell 5 + f_UTRAN_ReleaseCell(utran_Cell5, f_UTRAN_CellInfo_GetConfigType(utran_Cell5)); // @sic R5s110176 sic@ + } + + //--------------------------- + /* + * @desc REFERENCE TS 36.523-1 clause 8.4.2.7.1 + * @status APPROVED (LTE_A) + */ + function f_TC_8_4_2_7_1_UTRAN() runs on UTRAN_PTC + { /* CA / RRC connection reconfiguration / Handover UTRAN to E-UTRAN/ Success / SCell addition /Intra-band Contiguous CA*/ + f_TC_8_4_2_7_Common_UTRAN(); + } + + //--------------------------- + /* + * @desc REFERENCE TS 36.523-1 clause 8.4.2.7.2 + * @status APPROVED (LTE_A) + */ + function f_TC_8_4_2_7_2_UTRAN() runs on UTRAN_PTC + { /* CA / RRC connection reconfiguration / Handover UTRAN to E-UTRAN/ Success / SCell addition/ Inter-band CA */ + f_TC_8_4_2_7_Common_UTRAN(); + } + + //--------------------------- + /* + * @desc REFERENCE TS 36.523-1 clause 8.4.2.7.3 + * @status + */ + function f_TC_8_4_2_7_3_UTRAN() runs on UTRAN_PTC + { /* CA / RRC connection reconfiguration / Handover UTRAN to E-UTRAN/ Success / SCell addition/ Intra-band non-contiguous CA*/ + f_TC_8_4_2_7_Common_UTRAN(); + } + +} diff --git a/LTE_A_IWD_14wk37/LTE_A/8_5/RRC_RadioLinkFailure_CA.ttcn b/LTE_A_IWD_14wk37/LTE_A/8_5/RRC_RadioLinkFailure_CA.ttcn new file mode 100644 index 0000000..1ffdb61 --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/8_5/RRC_RadioLinkFailure_CA.ttcn @@ -0,0 +1,166 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-06-03 08:56:48 +0200 (Tue, 03 Jun 2014) $ +// $Rev: 11462 $ +/******************************************************************************/ +module RRC_RadioLinkFailure_CA +{ +//========================================================================= +// Import Part +//========================================================================= + + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_CommonDefs all; + import from EUTRA_CellInfo all; + import from EUTRA_Component all; + import from EUTRA_ConfigurationSteps all; + import from EUTRA_CommonProcedures all; + import from EUTRA_BandDependentParam all; + import from EUTRA_SRB_Templates all; + import from CommonDefs all; + import from Parameters all; + import from EUTRA_CommonFunctions_CA all; + import from EUTRA_CellInfoInit_CA all; + import from EUTRA_RRC_Templates all; + + + /* + * @desc REFERENCE TS 36.523-1 clause 8.5.1.7.1/2 + * @param p_PCellId + * @param p_SCellId + * @param p_CA_Type + * @status APPROVED (LTE_A) + */ + function f_TC_8_5_1_7_Common(EUTRA_CellId_Type p_PCellId, + EUTRA_CellId_Type p_SCellId, + CA_Tested_Type p_CA_Type) runs on EUTRA_PTC + { + var PhysCellId v_PhysicalCellIdentity_Scell; + var Frequency_IE_Type v_Frequency_IE_PCell; + var Frequency_IE_Type v_Frequency_IE_Scell; + var ChannelBandwidthDependency_Type v_ChBandDependency_PCell; + var ChannelBandwidthDependency_Type v_ChBandDependency_Scell; + var template (value) CellPowerList_Type v_CellPowerList_AtT0; + var template (value) CellPowerList_Type v_CellPowerList_AtT1; + var boolean v_UL_CA := pc_UL_CA; + var CarrierFreqEUTRA v_CarrierFreq_Scell; + + timer t_Watchdog := 2.0; + + v_CellPowerList_AtT0 := { + cs_CellPower (p_PCellId, -85), + cs_CellPower (p_SCellId, -85) + }; + v_CellPowerList_AtT1 := { + cs_CellPower (p_SCellId, tsc_NonSuitableOffCellRS_EPRE) + }; + + f_EUTRA_Init (c3); + f_EUTRA_CA_InitCells({p_PCellId,p_SCellId },p_CA_Type,c3); + + //Get cell dependant parameters + v_PhysicalCellIdentity_Scell := f_EUTRA_CellInfo_GetPhyCellId (p_SCellId); + v_Frequency_IE_Scell := f_EUTRA_CellInfo_GetFrequencyIEs (p_SCellId); + v_ChBandDependency_Scell := f_EUTRA_BandDependentParam(v_Frequency_IE_Scell.DL_ChBandwidth, + v_Frequency_IE_Scell.UL_ChBandwidth); + v_Frequency_IE_PCell := f_EUTRA_CellInfo_GetFrequencyIEs (p_PCellId); + v_ChBandDependency_PCell := f_EUTRA_BandDependentParam(v_Frequency_IE_PCell.DL_ChBandwidth, + v_Frequency_IE_PCell.UL_ChBandwidth); + v_CarrierFreq_Scell := f_EUTRA_CellInfo_GetEARFCN (p_SCellId); + + //Set C-RNTI to be used in s-cell creation + f_EUTRA_CellInfo_SetC_RNTI(p_SCellId, tsc_C_RNTI_Def); + + //Create and configure all cells + f_EUTRA_CellConfig_Pcell_Def (p_PCellId); + f_EUTRA_CellConfig_Scell(p_SCellId); //No DRB's created + + // bring UE to initial state + f_EUTRA_Preamble(p_PCellId, STATE2_IDLEUPDATE); + f_EUTRA_RbEst_Def(p_PCellId); + + //Set initial cell power level according to T0 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT0); + + + f_EUTRA_TestBody_Set(true); + //@siclog "Step 1 - 2" siclog@ + //Transmit RRCConnectionReconfiguration + //Receive RRCConnectionReconfigurationComplete + f_EUTRA_508RRC_AddMod_1Scell(p_PCellId, + p_SCellId, + 1, //SCellIndex_r10 + p_CA_Type, // CA Type + v_UL_CA); // UL CA desired + //* @verdict RRCConnectionReconfigurationComplete received on Cell 3 + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.5.1.7 Step 2"); + + //@sic R5s130388 R5-133622 sic@ + //1 second delay + //@siclog "Step 2a" siclog@ + f_Delay(1.0); + //@siclog "Step 3" siclog@ + //Set cell power level according to T1 + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + + //@siclog "Step 4" siclog@ + //1 second delay + f_Delay(1.0); + //@siclog "Step 5" siclog@ + t_Watchdog.start; + alt { + [] t_Watchdog.timeout + { + f_EUTRA_PreliminaryPass (__FILE__, __LINE__, "Test Case 8.5.1.7 Step 5"); + } + [] SRB.receive (car_SRB0_RrcPdu_IND (?, cr_RRCConnectionReestablishmentRequest_AnyUE (?))) + { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 5 - Unexpected RRCConnectionReestablishmentRequest "); + } + } + + //@siclog "Step 6" siclog@ + //Check if UE is in state RRC_Connected + f_EUTRA_508Check_ConnectedState (p_PCellId); + /////////////////////////////////////////////////////////////////////// + // Postamble + ///////////////////////////////////////////////////////////////////// + f_EUTRA_TestBody_Set (false); + + //Switch/power off UE + f_EUTRA_Postamble (p_PCellId, E2_CONNECTED); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.5.1.7.1 + * @status APPROVED (LTE_A) + */ + function f_TC_8_5_1_7_1_EUTRA () runs on EUTRA_PTC + { /* CA / No Radio Link Failure on SCell / RRC Connection Continues on PCell / Intra-band Contiguous CA */ + f_TC_8_5_1_7_Common (eutra_Cell1, eutra_Cell3,CA_IntraBand); /* @sic R5-141113 sic@ */ + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.5.1.7.2 + * @status APPROVED (LTE_A) + */ + function f_TC_8_5_1_7_2_EUTRA () runs on EUTRA_PTC + { /* CA / No Radio Link Failure on SCell / RRC Connection Continues on PCell / Inter-Band CA */ + f_TC_8_5_1_7_Common (eutra_Cell1, eutra_Cell10, CA_InterBand); + } + + /* + * @desc REFERENCE TS 36.523-1 clause 8.5.1.7.3 + * @status + */ + function f_TC_8_5_1_7_3_EUTRA () runs on EUTRA_PTC + { /* CA / No Radio Link Failure on SCell / RRC Connection Continues on PCell / Intra-band non-Contiguous CA */ + f_TC_8_5_1_7_Common (eutra_Cell6, eutra_Cell3,CA_IntraBand); /* @sic R5-141113 sic@ */ + } + +} diff --git a/LTE_A_IWD_14wk37/LTE_A/8_6/EUTRA_MDT_Specific_Templates.ttcn b/LTE_A_IWD_14wk37/LTE_A/8_6/EUTRA_MDT_Specific_Templates.ttcn new file mode 100644 index 0000000..a23c046 --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/8_6/EUTRA_MDT_Specific_Templates.ttcn @@ -0,0 +1,1556 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-07 18:37:49 +0200 (Sun, 07 Sep 2014) $ +// $Rev: 12081 $ +/******************************************************************************/ + +module EUTRA_MDT_Specific_Templates { + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from EUTRA_Measurement_Templates all; + import from EUTRA_IdleMode all; + import from EUTRA_SysInfo_Templates all; + import from EUTRA_RRC_Templates all; + + type LogMeasReport_r10.logMeasAvailable_r10 LogMeasReport_LogMeasAvailable_Type; /* @status APPROVED (LTE_A) */ + type RRCConnectionSetupComplete_v1020_IEs.logMeasAvailable_r10 RRCConnectionSetupComplete_LogMeasAvailable_Type; /* @status APPROVED (LTE_A) */ + type RRCConnectionSetupComplete_v1020_IEs.gummei_Type_r10 RRCConnectionSetupComplete_Gummei_Type; /* @status APPROVED (LTE_A) */ + type RRCConnectionSetupComplete_v1020_IEs.rn_SubframeConfigReq_r10 RRCConnectionSetupComplete_Rn_SubframeConfigReq_Type; /* @status APPROVED (LTE_A) */ + type RRCConnectionReestablishmentComplete_v1020_IEs.logMeasAvailable_r10 RRCConnectionReestablishmentComplete_LogMeasAvailable_Type; /* @status APPROVED (LTE_A) */ + type RRCConnectionReconfigurationComplete_v1020_IEs.logMeasAvailable_r10 RRCConnectionReconfigurationComplete_LogMeasAvailable_Type; /* @status APPROVED (LTE_A) */ + + type RRCConnectionSetupComplete_v1020_IEs.rlf_InfoAvailable_r10 RRCConnectionSetupComplete_rlf_InfoAvailable_Type; /* @status APPROVED (LTE_A) */ + type RRCConnectionReestablishmentComplete_v920_IEs.rlf_InfoAvailable_r9 RRCConnectionReestablishmentComplete_rlf_InfoAvailable_Type; /* @status APPROVED (LTE_A) */ + type RRCConnectionReconfigurationComplete_v1020_IEs.rlf_InfoAvailable_r10 RRCConnectionReconfigurationComplete_rlf_InfoAvailable_Type; /* @status APPROVED (LTE_A) */ + type UEInformationResponse_r9_IEs.rach_Report_r9 UEInformationResponse_r9_IEs_rach_Report_Type; /* @status APPROVED (LTE_A) */ + + type RLF_Report_r9.failedPCellId_v1090 RLF_Report_failedPCellId_v1090_Type; + type RLF_Report_r9.previousUTRA_CellId_r11 RLF_Report_previousUTRA_CellId_r11_Type; + type RLF_Report_r9.selectedUTRA_CellId_r11 RLF_Report_selectedUTRA_CellId_r11_Type; + type RLF_Report_r9.basicFields_r11.rlf_Cause_r11 RLF_Report_basicFields_r11_rlf_Cause_r11_Type; + type RLF_Report_r9.basicFields_r11 RLF_Report_basicFields_r11_Type; + type RRCConnectionReconfigurationComplete_v1130_IEs.connEstFailInfoAvailable_r11 RRCConnectionReconfigurationComplete_v1130_IEs_connEstFailInfoAvailable_r11_Type; + type UEInformationRequest_v1020_IEs.logMeasReportReq_r10 UEInformationRequest_v1020_IEs_logMeasReportReq_r10_type; + type RRCConnectionSetupComplete_v1130_IEs.connEstFailInfoAvailable_r11 RRCConnectionSetupComplete_v1130_IEs_connEstFailInfoAvailable_r11_Type; + type RRCConnectionReestablishmentComplete_v1130_IEs.connEstFailInfoAvailable_r11 RRCConnectionReestablishmentComplete_v1130_IEs_connEstFailInfoAvailable_r11_Type; + type UEInformationRequest_v1130_IEs.connEstFailReportReq_r11 UEInformationRequest_v1130_IEs_connEstFailReportReq_r11_Type; + + //**************************************************************** + //Specific Templates + //**************************************************************** + + template (present) CellGlobalIdEUTRA cr_Cgi(template PLMN_Identity p_PlMN_Identity, + template CellIdentity p_CellIdentity) := + { /* @status APPROVED (LTE_A) */ + plmn_Identity := p_PlMN_Identity, + cellIdentity := p_CellIdentity + }; + + template (value) RRCConnectionReconfiguration_v890_IEs cs_RRCConnectionReconfiguration_ObtainLocationSetup_IEs := + { + lateNonCriticalExtension := omit, + nonCriticalExtension := { + otherConfig_r9 := { + reportProximityConfig_r9 := omit, + idc_Config_r11 := omit, + powerPrefIndicationConfig_r11 := omit, + obtainLocationConfig_r11 := { + obtainLocation_r11 := setup + } + }, + fullConfig_r9 := omit, + nonCriticalExtension := omit + } + }; + + //**************************************************************************** + // failedPCellId_r10 Templates + //---------------------------------------------------------------------------- + + template (present) RLF_Report_r9.failedPCellId_r10 cr_FailedPCellId_CellGlobalId(template CellGlobalIdEUTRA p_CellGlobalId_r10) := + { /* @status APPROVED (LTE_A) */ + cellGlobalId_r10 := p_CellGlobalId_r10 + }; + + template (present) RLF_Report_r9.failedPCellId_r10 cr_FailedPCellId_Pci_Arfcn(PhysCellId p_PhysCellId_r10, + ARFCN_ValueEUTRA p_CarrierFreq_r10) := + { /* @status APPROVED (LTE_A) */ + pci_arfcn_r10 := { + physCellId_r10 := p_PhysCellId_r10, + carrierFreq_r10 := p_CarrierFreq_r10 + } + }; + + //**************************************************************************** + // RLF_Report_basicFields_r11 Templates + //---------------------------------------------------------------------------- + template (present) RLF_Report_basicFields_r11_Type cr_RLF_Report_basicFields_r11(template C_RNTI p_Crnti := *, + template RLF_Report_basicFields_r11_rlf_Cause_r11_Type p_Rlf_Cause_r11 := *, + template TimeSinceFailure_r11 p_TimeSinceFailure_r11 := *) := + { + c_RNTI_r11 := p_Crnti, + rlf_Cause_r11 := p_Rlf_Cause_r11, + timeSinceFailure_r11 := p_TimeSinceFailure_r11 + }; + + template (present) RLF_Report_selectedUTRA_CellId_r11_Type cr_RLF_Report_selectedUTRA_CellId_r11_FDD(template ARFCN_ValueUTRA p_Arfcn:= *, + template PhysCellIdUTRA_FDD p_PhysCellid:= *) := + { + carrierFreq_r11 := p_Arfcn, + physCellId_r11 :={ + fdd_r11 := p_PhysCellid + } + } + + template (present) RLF_Report_selectedUTRA_CellId_r11_Type cr_RLF_Report_selectedUTRA_CellId_r11_TDD(template ARFCN_ValueUTRA p_Arfcn:= *, + template PhysCellIdUTRA_TDD p_PhysCellid:= *) := + { + carrierFreq_r11 := p_Arfcn, + physCellId_r11 :={ + tdd_r11 := p_PhysCellid + } + } + //**************************************************************************** + // AreaConfiguration Templates + //---------------------------------------------------------------------------- + + template (value) AreaConfiguration_r10 cs_AreaConfiguration_r10_CellGlobalIdList_1Entry(PLMN_Identity p_PlMN_Identity, + CellIdentity p_CellIdentity) := + { /* @status APPROVED (LTE_A) */ + cellGlobalIdList_r10 := { + { + plmn_Identity := p_PlMN_Identity, + cellIdentity := p_CellIdentity + } + } + }; + + template (value) AreaConfiguration_r10 cs_AreaConfiguration_r10_TAC_1Entry(TrackingAreaCode p_TrackingareaCode) := + { /* @status APPROVED (LTE_A) */ + trackingAreaCodeList_r10 := + { + p_TrackingareaCode + } + }; + + template (value) AreaConfiguration_v1130 cs_AreaConfiguration_v1130(TrackingAreaCodeList_v1130.plmn_Identity_perTAC_List_r11 p_PLMN_Identity_perTAC_List_r11) := + { + trackingAreaCodeList_v1130 := { + plmn_Identity_perTAC_List_r11 := p_PLMN_Identity_perTAC_List_r11 + } + }; + + //**************************************************************************** + // LocationInfo_r10 Templates + //---------------------------------------------------------------------------- + + template (present) LocationInfo_r10 cr_LocationInfo_r10_LocationCoordinates(template LocationInfo_r10.locationCoordinates_r10 p_LocationCoordinates_r10, + template LocationInfo_r10.horizontalVelocity_r10 p_HorizontalVelocity_r10 := *, + template LocationInfo_r10.gnss_TOD_msec_r10 p_Gnss_TOD_msec_r10 := *) := + { /* @status APPROVED (LTE_A) */ + locationCoordinates_r10 := p_LocationCoordinates_r10, + horizontalVelocity_r10 := p_HorizontalVelocity_r10, + gnss_TOD_msec_r10 := p_Gnss_TOD_msec_r10 + }; + + template (present) LocationInfo_r10.locationCoordinates_r10 cr_Ellipsoid_Point_r10(template octetstring p_Ellipsoid_Point_r10) := + { /* @status APPROVED (LTE_A) */ + ellipsoid_Point_r10 := p_Ellipsoid_Point_r10 + }; + + template (present) LocationInfo_r10.locationCoordinates_r10 cr_EllipsoidPointWithAltitude_r10(template octetstring p_EllipsoidPointWithAltitude_r10) := + { /* @status APPROVED (LTE_A) */ + ellipsoidPointWithAltitude_r10 := p_EllipsoidPointWithAltitude_r10 + }; + + //**************************************************************************** + // LocationInfo_r11 Templates + //---------------------------------------------------------------------------- + + template (present) LocationInfo_r10.locationCoordinates_r10 cr_EllipsoidPointWithUncertaintyCircle_r11(template octetstring p_EllipsoidPointWithUncertaintyCircle_r11) := + { + ellipsoidPointWithUncertaintyCircle_r11 := p_EllipsoidPointWithUncertaintyCircle_r11 + }; + + template (present) LocationInfo_r10.locationCoordinates_r10 cr_EllipsoidPointWithUncertaintyEllipse_r11(template octetstring p_EllipsoidPointWithUncertaintyEllipse_r11) := + { + ellipsoidPointWithUncertaintyEllipse_r11 := p_EllipsoidPointWithUncertaintyEllipse_r11 + }; + + template (present) LocationInfo_r10.locationCoordinates_r10 cr_EllipsoidPointWithAltitudeAndUncertaintyEllipsoid_r11(template octetstring p_EllipsoidPointWithAltitudeAndUncertaintyEllipsoid_r11) := + { + ellipsoidPointWithAltitudeAndUncertaintyEllipsoid_r11 := p_EllipsoidPointWithAltitudeAndUncertaintyEllipsoid_r11 + }; + + template (present) LocationInfo_r10.locationCoordinates_r10 cr_EllipsoidArc_r11(template octetstring p_EllipsoidArc_r11) := + { + ellipsoidArc_r11 := p_EllipsoidArc_r11 + }; + + template (present) LocationInfo_r10.locationCoordinates_r10 cr_Polygon_r11(template octetstring p_Polygon_r11) := + { + polygon_r11 := p_Polygon_r11 + }; + + //**************************************************************************** + // MeasResultList Templates + //---------------------------------------------------------------------------- + + template (present) MeasResultList2EUTRA_r9 cr_MeasResultList2EUTRA_r9_1Entry(template ARFCN_ValueEUTRA p_CarrierFreq_r9, + template PhysCellId p_PhysCellId, + template GlobalCellIdentity_Type p_Cgi_Info, + template RSRP_Range p_RsrpResult, + template RSRQ_Range p_RsrqResult, + template AdditionalSI_Info_r9 p_AdditionalSI_Info_r9) := + { /* @status APPROVED (LTE_A) */ + { + carrierFreq_r9 := p_CarrierFreq_r9, + measResultList_r9 := { + { + physCellId := p_PhysCellId, + cgi_Info := p_Cgi_Info, + measResult := { + rsrpResult := p_RsrpResult, + rsrqResult := p_RsrqResult, + additionalSI_Info_r9 := p_AdditionalSI_Info_r9 + } + } + } + } + }; + + template (present) MeasResultUTRA.physCellId cr_MeasResultUTRA_PhysCellId_FDD(integer p_PhysCellId) := {fdd := p_PhysCellId}; /* @status APPROVED (LTE_A) */ + template (present) MeasResultUTRA.physCellId cr_MeasResultUTRA_PhysCellId_TDD(integer p_PhysCellId) := {tdd := p_PhysCellId}; /* @status APPROVED (LTE_A) */ + + + template (present) MeasResultList2UTRA_r9 cr_MeasResultList2UTRA_r9_1Entry(template (present) ARFCN_ValueUTRA p_CarrierFreq_r9, + template (present) MeasResultUTRA.physCellId p_MeasResultPhysCellId, + template MeasResultUTRA.cgi_Info p_Cgi_Info, + template UTRA_RSCP_Type p_UTRA_RSCP, + template UTRA_EcN0_Type p_UTRA_EcN0, + template AdditionalSI_Info_r9 p_AdditionalSI_Info_r9 := omit) := + { /* @status APPROVED (LTE_A) */ + { + carrierFreq_r9 := p_CarrierFreq_r9, + measResultList_r9 := { + { + physCellId := p_MeasResultPhysCellId, + cgi_Info := p_Cgi_Info, + measResult := { + utra_RSCP := p_UTRA_RSCP, + utra_EcN0 := p_UTRA_EcN0, + additionalSI_Info_r9 := p_AdditionalSI_Info_r9 + } + } + } + } + }; + + + template (present) MeasResultListGERAN cr_MeasResultListGERAN_r9_1Entry(template CarrierFreqGERAN p_CarrierFreq, + template PhysCellIdGERAN p_PhysCellId, + template MeasResultGERAN.cgi_Info p_Cgi_Info, + template integer p_Rssi) := + { /* @status APPROVED (LTE_A) */ + { + carrierFreq := p_CarrierFreq, + physCellId := p_PhysCellId, + cgi_Info := p_Cgi_Info, + measResult := { + rssi := p_Rssi + } + } + }; + + template (present) LogMeasInfo_r10.measResultNeighCells_r10 cr_MeasResultNeighCells_r10(template MeasResultList2EUTRA_r9 p_MeasResultListEUTRA_r10 := omit, + template MeasResultList2UTRA_r9 p_MeasResultListUTRA_r10 := omit, + template MeasResultList2GERAN_r10 p_MeasResultListGERAN_r10 := omit, + template MeasResultList2CDMA2000_r9 p_MeasResultListCDMA2000_r10 :=omit) := + { /* @status APPROVED (LTE_A) */ + measResultListEUTRA_r10 := p_MeasResultListEUTRA_r10, + measResultListUTRA_r10 := p_MeasResultListUTRA_r10, + measResultListGERAN_r10 := p_MeasResultListGERAN_r10, + measResultListCDMA2000_r10 := p_MeasResultListCDMA2000_r10 + }; + + template (present) LogMeasInfo_r10.measResultNeighCells_r10 cr_MeasResultNeighCells_r10_EUTRA_1Entry(template ARFCN_ValueEUTRA p_CarrierFreq_r9, + template PhysCellId p_PhysCellId, + template GlobalCellIdentity_Type p_Cgi_Info) := + /* @status APPROVED (LTE_A) */ + cr_MeasResultNeighCells_r10(cr_MeasResultList2EUTRA_r9_1Entry(p_CarrierFreq_r9, p_PhysCellId, p_Cgi_Info, *, *, *)); + + template (present) RLF_Report_r9.measResultNeighCells_r9 cr_MeasResultNeighCells_r9(template MeasResultList2EUTRA_r9 p_MeasResultListEUTRA_r9 := omit, + template MeasResultList2UTRA_r9 p_MeasResultListUTRA_r9 := omit, + template MeasResultListGERAN p_MeasResultListGERAN_r9 := omit, + template MeasResultList2CDMA2000_r9 p_MeasResultsCDMA2000_r9 := omit) := + { /* @status APPROVED (LTE_A) */ + measResultListEUTRA_r9 := p_MeasResultListEUTRA_r9, + measResultListUTRA_r9 := p_MeasResultListUTRA_r9, + measResultListGERAN_r9 := p_MeasResultListGERAN_r9, + measResultsCDMA2000_r9 := p_MeasResultsCDMA2000_r9 + }; + + template (present) RLF_Report_r9.measResultNeighCells_r9 cr_MeasResultNeighCells_r9_EUTRA_1Entry(template ARFCN_ValueEUTRA p_CarrierFreq_r9, + template PhysCellId p_PhysCellId, + template GlobalCellIdentity_Type p_Cgi_Info) := + /* @status APPROVED (LTE_A) */ + cr_MeasResultNeighCells_r9(cr_MeasResultList2EUTRA_r9_1Entry(p_CarrierFreq_r9, p_PhysCellId, p_Cgi_Info, *, *, *)); + + template (present) ConnEstFailReport_r11.measResultNeighCells_r11 cr_MeasResultNeighCells_r11(template MeasResultList2EUTRA_r9 p_MeasResultListEUTRA_r9 := omit, + template MeasResultList2UTRA_r9 p_MeasResultListUTRA_r9 := omit, + template MeasResultListGERAN p_MeasResultListGERAN := omit, + template MeasResultList2CDMA2000_r9 p_MeasResultListCDMA2000_r9 := omit) := + { + measResultListEUTRA_r11 := p_MeasResultListEUTRA_r9, + measResultListUTRA_r11 := p_MeasResultListUTRA_r9, + measResultListGERAN_r11 := p_MeasResultListGERAN, + measResultsCDMA2000_r11 := p_MeasResultListCDMA2000_r9 + }; + + //**************************************************************************** + // LogMeasInfoList_r10 Templates + //---------------------------------------------------------------------------- + + template (present) LogMeasInfo_r10 cr_LogMeasInfo_r10(template LocationInfo_r10 p_LocationInfo_r10, + template integer p_RelativeTimeStamp_r10, + template CellGlobalIdEUTRA p_Cgi_Info, + template RSRP_Range p_RsrpResult, + template RSRQ_Range p_RsrqResult, + template LogMeasInfo_r10.measResultNeighCells_r10 p_MeasResultNeighCells := omit) := + { /* @status APPROVED (LTE_A) */ + locationInfo_r10 := p_LocationInfo_r10, + relativeTimeStamp_r10 := p_RelativeTimeStamp_r10, + servCellIdentity_r10 := p_Cgi_Info, + measResultServCell_r10 := { + rsrpResult_r10 := p_RsrpResult, + rsrqResult_r10 := p_RsrqResult + }, + measResultNeighCells_r10 := p_MeasResultNeighCells, + measResultListEUTRA_v1090 := * /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + }; + + template (present) LogMeasInfoList_r10 cr_LogMeasInfo_1Entry(template (present) LogMeasInfo_r10 p_LogMeasInfo) := + { + p_LogMeasInfo + }; + + template (present) LogMeasInfoList_r10 cr_LogMeasInfo_2Entries(template (present) LogMeasInfo_r10 p_LogMeasInfo1, + template (present) LogMeasInfo_r10 p_LogMeasInfo2) := + { + p_LogMeasInfo1, + p_LogMeasInfo2 + }; + + template (value) LoggedMeasurementConfiguration_v1080_IEs cs_LoggedMeasurementConfiguration_v1080_IEs(template (omit) PLMN_IdentityList3_r11 p_PLMN_IdentityList3_r11 := omit, + template (omit) AreaConfiguration_v1130 p_AreaConfiguration_v1130 := omit) := + { + /* @status */ + lateNonCriticalExtension_r10 := omit, + nonCriticalExtension := { + plmn_IdentityList_r11 := p_PLMN_IdentityList3_r11, + areaConfiguration_v1130 := p_AreaConfiguration_v1130, + nonCriticalExtension := omit + } + }; + + //**************************************************************************** + // RLF_Report_r9 Templates + //---------------------------------------------------------------------------- + + template (present) RLF_Report_r9 cr_RLF_Report_1Entry(template RSRP_Range p_RsrpResult, + template RSRQ_Range p_RsrqResult, + template RLF_Report_r9.measResultNeighCells_r9 p_MeasResultNeighCells := *, + template LocationInfo_r10 p_LocationInfo_r10, + template RLF_Report_r9.failedPCellId_r10 p_FailedPCellId_r10, + template CellGlobalIdEUTRA p_Cgi_Info_ReestablishmentCellId_r10, + template integer p_TimeConnFailure_r10, + template RLF_Report_r9.connectionFailureType_r10 p_ConnectionFailureType_r10, + template CellGlobalIdEUTRA p_Cgi_Info_PreviousPCellId_r10) := + { /* @status APPROVED (LTE_A) */ + measResultLastServCell_r9 := { + rsrpResult_r9 := p_RsrpResult, + rsrqResult_r9 := p_RsrqResult + }, + measResultNeighCells_r9 := p_MeasResultNeighCells, + locationInfo_r10 := p_LocationInfo_r10, + failedPCellId_r10 := p_FailedPCellId_r10, + reestablishmentCellId_r10 := p_Cgi_Info_ReestablishmentCellId_r10, + timeConnFailure_r10 := p_TimeConnFailure_r10, + connectionFailureType_r10 := p_ConnectionFailureType_r10, + previousPCellId_r10 := p_Cgi_Info_PreviousPCellId_r10, + + failedPCellId_v1090 := *, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + basicFields_r11 := *, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + previousUTRA_CellId_r11 := *, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + selectedUTRA_CellId_r11 := * /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + }; + + //**************************************************************************** + // RLF_Report_r11 Templates + //---------------------------------------------------------------------------- + + template (present) RLF_Report_r9 cr_RLF_Report_1Entry_r11(template RSRP_Range p_RsrpResult, + template RSRQ_Range p_RsrqResult, + template RLF_Report_r9.measResultNeighCells_r9 p_MeasResultNeighCells := *, + template LocationInfo_r10 p_LocationInfo_r10, + template RLF_Report_r9.failedPCellId_r10 p_FailedPCellId_r10, + template CellGlobalIdEUTRA p_Cgi_Info_ReestablishmentCellId_r10, + template integer p_TimeConnFailure_r10, + template RLF_Report_r9.connectionFailureType_r10 p_ConnectionFailureType_r10, + template CellGlobalIdEUTRA p_Cgi_Info_PreviousPCellId_r10, + template RLF_Report_failedPCellId_v1090_Type p_FailedPCellId_v1090 := *, + template RLF_Report_basicFields_r11_Type p_BasicFields_r11 := *, + template RLF_Report_previousUTRA_CellId_r11_Type p_PreviousUTRA_CellId_r11 := *, + template RLF_Report_selectedUTRA_CellId_r11_Type p_SelectedUTRA_CellId_r11 := *) := + { + measResultLastServCell_r9 := { + rsrpResult_r9 := p_RsrpResult, + rsrqResult_r9 := p_RsrqResult + }, + measResultNeighCells_r9 := p_MeasResultNeighCells, + locationInfo_r10 := p_LocationInfo_r10, + failedPCellId_r10 := p_FailedPCellId_r10, + reestablishmentCellId_r10 := p_Cgi_Info_ReestablishmentCellId_r10, + timeConnFailure_r10 := p_TimeConnFailure_r10, + connectionFailureType_r10 := p_ConnectionFailureType_r10, + previousPCellId_r10 := p_Cgi_Info_PreviousPCellId_r10, + + failedPCellId_v1090 := p_FailedPCellId_v1090, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + basicFields_r11 := p_BasicFields_r11, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + previousUTRA_CellId_r11 := p_PreviousUTRA_CellId_r11, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + selectedUTRA_CellId_r11 := p_SelectedUTRA_CellId_r11 /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + }; + + //**************************************************************************** + // RRC peer-to-peer messages + //---------------------------------------------------------------------------- + // UEInformationResponse (36.331 cl. 6.2.2) + + template (present) LogMeasReport_r10 cr_LogMeasReport_r10(template B48_Type p_AbsoluteTimeStamp_r10, + template PLMN_Identity p_PlMN_Identity_r10, + template O3_Type p_TraceId_r10, + template O2_Type p_TraceRecordingSessionRef_r10, + template O1_Type p_Tce_Id_r10, + template LogMeasInfoList_r10 p_LogMeasInfoList_r10, + template LogMeasReport_LogMeasAvailable_Type p_LogMeasAvailable_r10 := *) := + { /* @status APPROVED (LTE_A) */ + absoluteTimeStamp_r10 := p_AbsoluteTimeStamp_r10, + traceReference_r10 := { + plmn_Identity_r10 := p_PlMN_Identity_r10, + traceId_r10 := p_TraceId_r10 + }, + traceRecordingSessionRef_r10 := p_TraceRecordingSessionRef_r10, + tce_Id_r10 := p_Tce_Id_r10, + logMeasInfoList_r10 := p_LogMeasInfoList_r10, + logMeasAvailable_r10 := p_LogMeasAvailable_r10 + }; + + template (present) UEInformationResponse_v1130_IEs cr_UEInformationResponse_v1130_IEs(template CellGlobalIdEUTRA p_FailedCellId_r11, + template LocationInfo_r10 p_LocationInfo_r10:= *, + template RSRP_Range p_RsrpResult := ?, + template RSRQ_Range p_RsrqResult := omit, + template ConnEstFailReport_r11.measResultNeighCells_r11 p_MeasResultNeighCells_r11 := *, + template NumberOfPreamblesSent_r11 p_NumberOfPreamblesSent_r11 := ?, + template boolean p_ContentionDetected_r11 := ?, + template boolean p_MaxTxPowerReached_r11 := ?, + template TimeSinceFailure_r11 p_TimeSinceFailure_r11 := ?, + template MeasResultList2EUTRA_v9e0 p_MeasResultListEUTRA_v1130 := omit) := + { + connEstFailReport_r11 := { + failedCellId_r11 := p_FailedCellId_r11, + locationInfo_r11 := p_LocationInfo_r10, + measResultFailedCell_r11 := { + rsrpResult_r11 := p_RsrpResult, + rsrqResult_r11 := p_RsrqResult + }, + measResultNeighCells_r11 := p_MeasResultNeighCells_r11, + numberOfPreamblesSent_r11 := p_NumberOfPreamblesSent_r11, + contentionDetected_r11 := p_ContentionDetected_r11, + maxTxPowerReached_r11 := p_MaxTxPowerReached_r11, + timeSinceFailure_r11 := p_TimeSinceFailure_r11, + measResultListEUTRA_v1130 := p_MeasResultListEUTRA_v1130 + }, + nonCriticalExtension := * + }; + + template (present) UEInformationResponse_v930_IEs cr_UEInformationResponse_v930_IEs(template LogMeasReport_r10 p_LogMeasReport_r10 := *, + template UEInformationResponse_v1130_IEs p_UEInformationResponse_v1130_IEs := *) := + { /* @status APPROVED (LTE_A) */ + lateNonCriticalExtension := *, + nonCriticalExtension := { + logMeasReport_r10 := p_LogMeasReport_r10, + nonCriticalExtension := p_UEInformationResponse_v1130_IEs + } + }; + + + template (present) UL_DCCH_Message cr_UEInformationResponse_Common(RRC_TransactionIdentifier p_RRC_TI, + template UEInformationResponse_r9_IEs_rach_Report_Type p_Rach_Report_r9 := *, + template RLF_Report_r9 p_Rlf_Report_r9 := *, + template UEInformationResponse_v930_IEs p_UEInformationResponse_v930_IEs := *) := + { /* Ref 36.508 Table 4.6.1-23B */ + /* @status APPROVED (LTE_A) */ + message_ := { + c1 := { + ueInformationResponse_r9 := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + c1 := { + ueInformationResponse_r9 := { + rach_Report_r9 := p_Rach_Report_r9, + rlf_Report_r9 := p_Rlf_Report_r9, + nonCriticalExtension := p_UEInformationResponse_v930_IEs + } + } + } + } + } + } + }; + + template (present) UL_DCCH_Message cr_508_UEInformationResponse(RRC_TransactionIdentifier p_RRC_TI, + template UEInformationResponse_r9_IEs_rach_Report_Type p_Rach_Report_r9 := *, + template RLF_Report_r9 p_Rlf_Report_r9 := *, + template LogMeasReport_r10 p_LogMeasReport_r10 := *) := + /* Ref 36.508 Table 4.6.1-23B */ + /* @status APPROVED (LTE_A) */ + cr_UEInformationResponse_Common(p_RRC_TI, p_Rach_Report_r9, p_Rlf_Report_r9, cr_UEInformationResponse_v930_IEs(p_LogMeasReport_r10)); + + template (present) UL_DCCH_Message cr_UEInformationResponse_LogMeasInfo_2Entries(RRC_TransactionIdentifier p_RRC_TI, + template B48_Type p_AbsoluteTimeStamp_r10, + template PLMN_Identity p_PLMN_Identity_r10, + template O3_Type p_TraceId_r10, + template O2_Type p_TraceRecordingSessionRef_r10, + template O1_Type p_Tce_Id_r10, + template integer p_RelativeTimeStamp_r10_1, + template CellGlobalIdEUTRA p_Cgi_Info_1, + template integer p_RelativeTimeStamp_r10_2, + template CellGlobalIdEUTRA p_Cgi_Info_2, + template LogMeasInfo_r10.measResultNeighCells_r10 p_MeasResultNeighCells_1 := *, + template LogMeasInfo_r10.measResultNeighCells_r10 p_MeasResultNeighCells_2 := *, + template LogMeasReport_LogMeasAvailable_Type p_LogMeasAvailable_r10 := omit) := + cr_508_UEInformationResponse(p_RRC_TI, + *, + *, + cr_LogMeasReport_r10(p_AbsoluteTimeStamp_r10, + p_PLMN_Identity_r10, + p_TraceId_r10, + p_TraceRecordingSessionRef_r10, + p_Tce_Id_r10, + cr_LogMeasInfo_2Entries(cr_LogMeasInfo_r10(*, p_RelativeTimeStamp_r10_1, p_Cgi_Info_1, ?, ?, p_MeasResultNeighCells_1), + cr_LogMeasInfo_r10(*, p_RelativeTimeStamp_r10_2, p_Cgi_Info_2, ?, ?, p_MeasResultNeighCells_2)), + p_LogMeasAvailable_r10)); + + template (present) UL_DCCH_Message cr_UEInformationResponse_LogMeasInfo_1Entry(RRC_TransactionIdentifier p_RRC_TI, + template B48_Type p_AbsoluteTimeStamp_r10, + template PLMN_Identity p_PLMN_Identity_r10, + template O3_Type p_TraceId_r10, + template O2_Type p_TraceRecordingSessionRef_r10, + template O1_Type p_Tce_Id_r10, + template integer p_RelativeTimeStamp_r10, + template CellGlobalIdEUTRA p_Cgi_Info, + template LogMeasInfo_r10.measResultNeighCells_r10 p_MeasResultNeighCells := *, + template LogMeasReport_LogMeasAvailable_Type p_LogMeasAvailable_r10 := omit) := + cr_508_UEInformationResponse(p_RRC_TI, + *, + *, + cr_LogMeasReport_r10(p_AbsoluteTimeStamp_r10, + p_PLMN_Identity_r10, + p_TraceId_r10, + p_TraceRecordingSessionRef_r10, + p_Tce_Id_r10, + cr_LogMeasInfo_1Entry(cr_LogMeasInfo_r10(*, p_RelativeTimeStamp_r10, p_Cgi_Info, ?, ?, p_MeasResultNeighCells)), + p_LogMeasAvailable_r10)); + + //---------------------------------------------------------------------------- + // LoggedMeasurementConfiguration (36.331 cl. 6.2.2) + + template (value) DL_DCCH_Message cs_LoggedMeasurementConfiguration(PLMN_Identity p_PLMN_Identity_r10, + O3_Type p_TraceId_r10, + O2_Type p_TraceRecordingSessionRef_r10 :='001A'O, + O1_Type p_Tce_Id_r10, + B48_Type p_AbsoluteTimeInfo_r10, + template (omit) AreaConfiguration_r10 p_AreaConfiguration_r10 := omit, + LoggingDuration_r10 p_LoggingDuration_r10 := min120, + LoggingInterval_r10 p_LoggingInterval_r10 := ms10240) := + { /* @status APPROVED (LTE_A) */ + message_ := { + c1 := { + loggedMeasurementConfiguration_r10 := { + criticalExtensions := { + c1 := { + loggedMeasurementConfiguration_r10 := { + traceReference_r10 := { + plmn_Identity_r10 := p_PLMN_Identity_r10, + traceId_r10 := p_TraceId_r10 + }, + traceRecordingSessionRef_r10 := p_TraceRecordingSessionRef_r10, + tce_Id_r10 := p_Tce_Id_r10, + absoluteTimeInfo_r10 := p_AbsoluteTimeInfo_r10, + areaConfiguration_r10 := p_AreaConfiguration_r10, + loggingDuration_r10 := p_LoggingDuration_r10, + loggingInterval_r10 := p_LoggingInterval_r10, + nonCriticalExtension := omit + } + } + } + } + } + } + }; + + template (value) DL_DCCH_Message cs_LoggedMeasurementConfiguration_with_v1080_IEs(PLMN_Identity p_PLMN_Identity_r10, + O3_Type p_TraceId_r10, + O2_Type p_TraceRecordingSessionRef_r10 :='001A'O, + O1_Type p_Tce_Id_r10, + B48_Type p_AbsoluteTimeInfo_r10, + template (omit) AreaConfiguration_r10 p_AreaConfiguration_r10 := omit, + LoggingDuration_r10 p_LoggingDuration_r10 := min120, + LoggingInterval_r10 p_LoggingInterval_r10 := ms10240, + template (omit) LoggedMeasurementConfiguration_v1080_IEs p_LoggedMeasurementConfiguration_v1080_IEs) := + { /* @status */ + message_ := { + c1 := { + loggedMeasurementConfiguration_r10 := { + criticalExtensions := { + c1 := { + loggedMeasurementConfiguration_r10 := { + traceReference_r10 := { + plmn_Identity_r10 := p_PLMN_Identity_r10, + traceId_r10 := p_TraceId_r10 + }, + traceRecordingSessionRef_r10 := p_TraceRecordingSessionRef_r10, + tce_Id_r10 := p_Tce_Id_r10, + absoluteTimeInfo_r10 := p_AbsoluteTimeInfo_r10, + areaConfiguration_r10 := p_AreaConfiguration_r10, + loggingDuration_r10 := p_LoggingDuration_r10, + loggingInterval_r10 := p_LoggingInterval_r10, + nonCriticalExtension := p_LoggedMeasurementConfiguration_v1080_IEs + } + } + } + } + } + } + }; + + //---------------------------------------------------------------------------- + // UEInformationRequest (36.331 cl. 6.2.2) + + template (value) DL_DCCH_Message cs_508_UEInformationRequest(RRC_TransactionIdentifier p_RRC_TI, + boolean p_Rach_ReportReq_r9 := false, + boolean p_Rlf_ReportReq_r9 := false) := + { /* Ref 36.508 Table 4.6.1-23A */ + /* @status APPROVED (LTE_A) */ + message_ := { + c1 := { + ueInformationRequest_r9 := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + c1 := { + ueInformationRequest_r9 := { + rach_ReportReq_r9 := p_Rach_ReportReq_r9, + rlf_ReportReq_r9 := p_Rlf_ReportReq_r9, + nonCriticalExtension := { + lateNonCriticalExtension := omit, + nonCriticalExtension := { + logMeasReportReq_r10 := true_, + nonCriticalExtension := omit + } + } + } + } + } + } + } + } + }; + + template (value) DL_DCCH_Message cs_508_UEInformationRequest_noLogMeasReport(RRC_TransactionIdentifier p_RRC_TI, + boolean p_Rach_ReportReq_r9 := false, + boolean p_Rlf_ReportReq_r9 := false) := + { /* Ref 36.508 Table 4.6.1-23A */ + /* @status APPROVED (LTE_A) */ + message_ := { + c1 := { + ueInformationRequest_r9 := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + c1 := { + ueInformationRequest_r9 := { + rach_ReportReq_r9 := p_Rach_ReportReq_r9, + rlf_ReportReq_r9 := p_Rlf_ReportReq_r9, + nonCriticalExtension := omit + } + } + } + } + } + } + }; //@sic R5s140147 sic@ + + template (value) DL_DCCH_Message cs_508_UEInformationRequest_r11(RRC_TransactionIdentifier p_RRC_TI, + boolean p_Rach_ReportReq_r9 := false, + boolean p_Rlf_ReportReq_r9 := false, + template (omit) UEInformationRequest_v1020_IEs_logMeasReportReq_r10_type p_LogMeasReportReq_r10 := omit, + template (omit) UEInformationRequest_v1130_IEs_connEstFailReportReq_r11_Type p_ConnEstFailInfoAvailable_r11 := true_) := + {/* Ref 36.508 Table 4.6.1-23A */ + /* status */ + message_ := { + c1 := { + ueInformationRequest_r9 := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + c1 := { + ueInformationRequest_r9 := { + rach_ReportReq_r9 := p_Rach_ReportReq_r9, + rlf_ReportReq_r9 := p_Rlf_ReportReq_r9, + nonCriticalExtension := { + lateNonCriticalExtension := omit, + nonCriticalExtension := { + logMeasReportReq_r10 := p_LogMeasReportReq_r10, + nonCriticalExtension := { + connEstFailReportReq_r11 := p_ConnEstFailInfoAvailable_r11, + nonCriticalExtension := omit + } + } + } + } + } + } + } + } + } + }; + + //---------------------------------------------------------------------------- + // RRCConnectionReestablishmentComplete (36.331 cl. 6.2.2) + + template (present) UL_DCCH_Message cr_RRCConnectionReestablishmentComplete_r10(RRC_TransactionIdentifier p_RRC_TI, + template RRCConnectionReestablishmentComplete_LogMeasAvailable_Type p_LogMeasAvailable_r10 := *, + template RRCConnectionReestablishmentComplete_rlf_InfoAvailable_Type p_Rlf_InfoAvailable_r9 := *) := + { /* Default values according to 36.508 cl. 4.6.1 Table 4.6.1-11 */ + /* @status APPROVED (LTE_A) */ + message_ := { + c1 := { + rrcConnectionReestablishmentComplete := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + rrcConnectionReestablishmentComplete_r8 := { + nonCriticalExtension := { + rlf_InfoAvailable_r9 := p_Rlf_InfoAvailable_r9, + nonCriticalExtension := { + lateNonCriticalExtension := *, + nonCriticalExtension := { + logMeasAvailable_r10 := p_LogMeasAvailable_r10, + nonCriticalExtension := * + } + } + } + } + } + } + } + } + }; + + template (present) UL_DCCH_Message cr_RRCConnectionReestablishmentComplete_r11(RRC_TransactionIdentifier p_RRC_TI, + template RRCConnectionReestablishmentComplete_LogMeasAvailable_Type p_LogMeasAvailable_r10 := *, + template RRCConnectionReestablishmentComplete_rlf_InfoAvailable_Type p_Rlf_InfoAvailable_r9 := true_, + template RRCConnectionReestablishmentComplete_v1130_IEs_connEstFailInfoAvailable_r11_Type p_ConnEstFailInfoAvailable_r11 := true_) := + { /* Default values according to 36.508 cl. 4.6.1 Table 4.6.1-11 */ + message_ := { + c1 := { + rrcConnectionReestablishmentComplete := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + rrcConnectionReestablishmentComplete_r8 := { + nonCriticalExtension := { + rlf_InfoAvailable_r9 := p_Rlf_InfoAvailable_r9, + nonCriticalExtension := { + lateNonCriticalExtension := *, + nonCriticalExtension := { + logMeasAvailable_r10 := p_LogMeasAvailable_r10, + nonCriticalExtension := { + connEstFailInfoAvailable_r11 := p_ConnEstFailInfoAvailable_r11, + nonCriticalExtension := omit + } + } + } + } + } + } + } + } + } + }; + //---------------------------------------------------------------------------- + // RRCConnectionReestablishmentComplete (36.331 cl. 6.2.2) + + template (present) UL_DCCH_Message cr_RRCConnectionReestablishmentComplete_RLF_r9(RRC_TransactionIdentifier p_RRC_TI, + template RRCConnectionReestablishmentComplete_rlf_InfoAvailable_Type p_Rlf_InfoAvailable_r9 := true_) := + { /* Default values according to 36.508 cl. 4.6.1 Table 4.6.1-11 */ + /* @status APPROVED (LTE_A) */ + message_ := { + c1 := { + rrcConnectionReestablishmentComplete := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + rrcConnectionReestablishmentComplete_r8 := { + nonCriticalExtension := { + rlf_InfoAvailable_r9 := p_Rlf_InfoAvailable_r9, + nonCriticalExtension := * + } + } + } + } + } + } + }; + + //---------------------------------------------------------------------------- + // RRCConnectionSetupComplete (36.331 cl. 6.2.2) + + template (present) RRCConnectionSetupComplete_v1020_IEs cr_RRCConnectionSetupComplete_v1020_IEs(template RRCConnectionSetupComplete_Gummei_Type p_Gummei_Type_r10 := *, + template RRCConnectionSetupComplete_rlf_InfoAvailable_Type p_Rlf_InfoAvailable_r10 := *, + template RRCConnectionSetupComplete_LogMeasAvailable_Type p_LogMeasAvailable_r10 := *, + template RRCConnectionSetupComplete_Rn_SubframeConfigReq_Type p_Rn_SubframeConfigReq_r10 := *, + template RRCConnectionSetupComplete_v1130_IEs p_RRCConnectionSetupComplete_v1130_IEs := *) := + { /* @status APPROVED (LTE_A) */ + gummei_Type_r10 := p_Gummei_Type_r10, + rlf_InfoAvailable_r10 := p_Rlf_InfoAvailable_r10, + logMeasAvailable_r10 := p_LogMeasAvailable_r10, + rn_SubframeConfigReq_r10 := p_Rn_SubframeConfigReq_r10, + nonCriticalExtension := p_RRCConnectionSetupComplete_v1130_IEs + }; + + template (present) RRCConnectionSetupComplete_v8a0_IEs cr_RRCConnectionSetupComplete_v8a0_IEs(template RRCConnectionSetupComplete_v1020_IEs p_RRCConnectionSetupComplete_v1020_IEs) := + { /* @status APPROVED (LTE_A) */ + lateNonCriticalExtension := *, + nonCriticalExtension := p_RRCConnectionSetupComplete_v1020_IEs + }; + + template (present) UL_DCCH_Message cr_RRCConnectionSetupComplete_r10_Common(template (present) RRC_TransactionIdentifier p_RRC_TI, + template (present) DedicatedInfoNAS p_NAS_DedicatedInformation, + template RegisteredMME p_RegisteredMME := *, + template (present) integer p_SelectedPlmnId := 1, + template RRCConnectionSetupComplete_v8a0_IEs p_RRCConnectionSetupComplete_v8a0_IEs := *) := + { /* Default values according to 36.508 cl. 4.6.1 Table 4.6.1-18 */ + /* @status APPROVED (LTE_A) */ + message_ := { + c1 := { + rrcConnectionSetupComplete := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + c1 := { + rrcConnectionSetupComplete_r8 := { + selectedPLMN_Identity := p_SelectedPlmnId, + registeredMME := p_RegisteredMME, + dedicatedInfoNAS := p_NAS_DedicatedInformation, + nonCriticalExtension := p_RRCConnectionSetupComplete_v8a0_IEs + } + } + } + } + } + } + }; + + + template (present) UL_DCCH_Message cr_RRCConnectionSetupComplete_r10(template (present) RRC_TransactionIdentifier p_RRC_TI, + template (present) DedicatedInfoNAS p_NAS_DedicatedInformation, + template RegisteredMME p_RegisteredMME := *, + template (present) integer p_SelectedPlmnId := 1, + template RRCConnectionSetupComplete_Gummei_Type p_Gummei_Type_r10 := *, + template RRCConnectionSetupComplete_rlf_InfoAvailable_Type p_Rlf_InfoAvailable_r10 := *, + template RRCConnectionSetupComplete_LogMeasAvailable_Type p_LogMeasAvailable_r10 := *, + template RRCConnectionSetupComplete_Rn_SubframeConfigReq_Type p_Rn_SubframeConfigReq_r10 := *, + template RRCConnectionSetupComplete_v1130_IEs p_RRCConnectionSetupComplete_v1130_IEs := *) := + /* @status APPROVED (LTE_A) */ + cr_RRCConnectionSetupComplete_r10_Common(p_RRC_TI, + p_NAS_DedicatedInformation, + p_RegisteredMME, + p_SelectedPlmnId, + cr_RRCConnectionSetupComplete_v8a0_IEs(cr_RRCConnectionSetupComplete_v1020_IEs(p_Gummei_Type_r10, + p_Rlf_InfoAvailable_r10, + p_LogMeasAvailable_r10, + p_Rn_SubframeConfigReq_r10, + p_RRCConnectionSetupComplete_v1130_IEs))); + + template (present) UL_DCCH_Message cr_RRCConnectionSetupComplete_r11(template (present) RRC_TransactionIdentifier p_RRC_TI, + template (present) DedicatedInfoNAS p_NAS_DedicatedInformation, + template RegisteredMME p_RegisteredMME := *, + template (present) integer p_SelectedPlmnId := 1, + template RRCConnectionSetupComplete_Gummei_Type p_Gummei_Type_r10 :=*, + template RRCConnectionSetupComplete_rlf_InfoAvailable_Type p_Rlf_InfoAvailable_r10 := *, + template RRCConnectionSetupComplete_LogMeasAvailable_Type p_LogMeasAvailable_r10 := *, + template RRCConnectionSetupComplete_Rn_SubframeConfigReq_Type p_Rn_SubframeConfigReq_r10 :=*, + template RRCConnectionSetupComplete_v1130_IEs_connEstFailInfoAvailable_r11_Type p_ConnEstFailInfoAvailable_r11 := true_) := + { /* Default values according to 36.508 cl. 4.6.1 Table 4.6.1-18 */ + message_ := { + c1 := { + rrcConnectionSetupComplete := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + c1 := { + rrcConnectionSetupComplete_r8 := { + selectedPLMN_Identity := p_SelectedPlmnId, + registeredMME := p_RegisteredMME, + dedicatedInfoNAS := p_NAS_DedicatedInformation, + nonCriticalExtension := { + lateNonCriticalExtension := *, + nonCriticalExtension := { + gummei_Type_r10 := p_Gummei_Type_r10, + rlf_InfoAvailable_r10 := p_Rlf_InfoAvailable_r10, + logMeasAvailable_r10 := p_LogMeasAvailable_r10, + rn_SubframeConfigReq_r10 := p_Rn_SubframeConfigReq_r10, + nonCriticalExtension := { + connEstFailInfoAvailable_r11 := p_ConnEstFailInfoAvailable_r11, + nonCriticalExtension := omit + } + } + } + } + } + } + } + } + } + }; + + //---------------------------------------------------------------------------- + // RRCConnectionReconfigurationComplete (36.331 cl. 6.2.2) + + template (present) UL_DCCH_Message cr_RRCConnectionReconfigurationComplete_r11 (RRC_TransactionIdentifier p_RRC_TI, + template RRCConnectionReconfigurationComplete_rlf_InfoAvailable_Type p_Rlf_InfoAvailable_r10 := *, + template RRCConnectionReconfigurationComplete_LogMeasAvailable_Type p_LogMeasAvailable_r10 := *, + template RRCConnectionReconfigurationComplete_v1130_IEs_connEstFailInfoAvailable_r11_Type p_ConnEstFailInfoAvailable_r11 := true_) := + { + message_ := { + c1 := { + rrcConnectionReconfigurationComplete := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + rrcConnectionReconfigurationComplete_r8 := { + nonCriticalExtension := { + lateNonCriticalExtension := *, + nonCriticalExtension :={ + rlf_InfoAvailable_r10 := p_Rlf_InfoAvailable_r10, + logMeasAvailable_r10 := p_LogMeasAvailable_r10, + nonCriticalExtension := { + connEstFailInfoAvailable_r11 := p_ConnEstFailInfoAvailable_r11, + nonCriticalExtension := * + } + } + } + } + } + } + } + } + }; + + template (value) DL_DCCH_Message cs_508_RRCConnectionReconfiguration_ConditionMEAS_WithObtainLocation(RRC_TransactionIdentifier p_RRC_TI, + template (value) MeasConfig p_MeasConfig ) := + /* @status */ + cs_RRCConnectionReconfiguration_Common(p_RRC_TI, p_MeasConfig, omit, omit, omit, cs_RRCConnectionReconfiguration_ObtainLocationSetup_IEs); + + template (present) UL_DCCH_Message cr_RRCConnectionReconfigurationComplete_r10(RRC_TransactionIdentifier p_RRC_TI, + template RRCConnectionReconfigurationComplete_rlf_InfoAvailable_Type p_Rlf_InfoAvailable_r10 := *, + template RRCConnectionReconfigurationComplete_LogMeasAvailable_Type p_LogMeasAvailable_r10 := *) := + { /* @status APPROVED (LTE_A) */ + message_ := { + c1 := { + rrcConnectionReconfigurationComplete := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + rrcConnectionReconfigurationComplete_r8 := { + nonCriticalExtension := { + lateNonCriticalExtension := *, + nonCriticalExtension :={ + rlf_InfoAvailable_r10 := p_Rlf_InfoAvailable_r10, + logMeasAvailable_r10 := p_LogMeasAvailable_r10, + nonCriticalExtension := * + } + } + } + } + } + } + } + }; + + template (present) UL_DCCH_Message cr_RRCConnectionReconfigurationComplete_r9(RRC_TransactionIdentifier p_RRC_TI) := + { + message_ := { + c1 := { + rrcConnectionReconfigurationComplete := { + rrc_TransactionIdentifier := p_RRC_TI, + criticalExtensions := { + rrcConnectionReconfigurationComplete_r8 := { + nonCriticalExtension := * + } + } + } + } + } + }; + + //------------------------------------------------ + //8.6.1.2, Step1 + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_8_6_1_2_Step1(RRC_TransactionIdentifier p_RRC_TI, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq_1, + AllowedMeasBandwidth p_MeasurementBandwidth_1) := + cs_508_RRCConnectionReconfiguration_ConditionMEAS(p_RRC_TI, + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_1Entry(tsc_IdMeasObject_f1, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq_1, p_MeasurementBandwidth_1)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_A2, + cs_ReportConfig_reportConfigEUTRA_eventA2_RSRP(-83, 6, ms320, rsrp, both, 1, ms1024, r1, true_)), + omit, + cs_MeasIdToAddModList_1Entry(1, tsc_IdMeasObject_f1, tsc_IdReportConfig_A2 ))); + + //8.6.1.2, Step7 + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_8_6_1_2_Step7(RRC_TransactionIdentifier p_RRC_TI, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq_1, + AllowedMeasBandwidth p_MeasurementBandwidth_1) := + cs_508_RRCConnectionReconfiguration_ConditionMEAS_WithObtainLocation(p_RRC_TI, + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_1Entry(tsc_IdMeasObject_f1, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq_1, p_MeasurementBandwidth_1)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_A2, + cs_ReportConfig_reportConfigEUTRA_eventA2_RSRP(-83, 4, ms320, rsrp, both, 1, ms1024, r1, true_)), + omit, + cs_MeasIdToAddModList_1Entry(1, tsc_IdMeasObject_f1, tsc_IdReportConfig_A2 ))); + + //8.6.4.2, Step1 + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_8_6_4_2_Step1(RRC_TransactionIdentifier p_RRC_TI, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq_1, + AllowedMeasBandwidth p_MeasurementBandwidth_1, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq_2, + AllowedMeasBandwidth p_MeasurementBandwidth_2) := + /* @status APPROVED (LTE_A) */ + cs_508_RRCConnectionReconfiguration_ConditionMEAS(p_RRC_TI, + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_2Entries(tsc_IdMeasObject_f1, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq_1, p_MeasurementBandwidth_1), + tsc_IdMeasObject_f2, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq_2, p_MeasurementBandwidth_2)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_A3, + cs_508_ReportConfigEUTRA_A3), + omit, + cs_MeasIdToAddModList_1Entry(1, tsc_IdMeasObject_f2, tsc_IdReportConfig_A3), + -, //@sic R5-134645, R5s130965 sic@ + cs_508_MeasGapConfig_GP1)); + + //------------------------------------------------ + //8.6.4.4, Step1 + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_8_6_4_4_Step1(RRC_TransactionIdentifier p_RRC_TI, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq_1, + AllowedMeasBandwidth p_MeasurementBandwidth_1, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq_2, + AllowedMeasBandwidth p_MeasurementBandwidth_2) := + /* @status APPROVED (LTE_A) */ + cs_508_RRCConnectionReconfiguration_ConditionMEAS(p_RRC_TI, + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_2Entries(tsc_IdMeasObject_f1, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq_1, p_MeasurementBandwidth_1), + tsc_IdMeasObject_f2, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq_2, p_MeasurementBandwidth_2)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_A3, + cs_508_ReportConfigEUTRA_A3), + omit, + cs_MeasIdToAddModList_2Entries(1, tsc_IdMeasObject_f1, tsc_IdReportConfig_A3, + 2, tsc_IdMeasObject_f2, tsc_IdReportConfig_A3), + -, //@sic R5-134645, R5130965 sic@ + cs_508_MeasGapConfig_GP1)); + + //8.6.4.9, Step7 + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_8_6_4_9_Step7 (RRC_TransactionIdentifier p_RRC_TI, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq_1, + AllowedMeasBandwidth p_MeasurementBandwidth_1, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq_2, + AllowedMeasBandwidth p_MeasurementBandwidth_2, + template (omit) RadioResourceConfigDedicated p_RadioResourceConfigDedicated) := + /* @status */ + cs_RRCConnectionReconfiguration_Common(p_RRC_TI, + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_2Entries(tsc_IdMeasObject_f1, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq_1, p_MeasurementBandwidth_1), + tsc_IdMeasObject_f2, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq_2, p_MeasurementBandwidth_2)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_A3, + cs_508_ReportConfigEUTRA_A3), + omit, + cs_MeasIdToAddModList_1Entry(1, tsc_IdMeasObject_f2, tsc_IdReportConfig_A3), + cs_QuantityConfig_Def, + cs_508_MeasGapConfig_GP1), + omit, + p_RadioResourceConfigDedicated, + omit, + omit); + + //------------------------------------------------ + //8.6.6.6, Step1 + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_8_6_6_6_Step1(RRC_TransactionIdentifier p_RRC_TI, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq_1, + AllowedMeasBandwidth p_MeasurementBandwidth_1, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq_2, + AllowedMeasBandwidth p_MeasurementBandwidth_2) := + cs_508_RRCConnectionReconfiguration_ConditionMEAS(p_RRC_TI, + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_2Entries(tsc_IdMeasObject_f1, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq_1, p_MeasurementBandwidth_1), + tsc_IdMeasObject_f2, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq_2, p_MeasurementBandwidth_2)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_A3, + cs_508_ReportConfigEUTRA_A3), + omit, + cs_MeasIdToAddModList_2Entries(1, tsc_IdMeasObject_f1, tsc_IdReportConfig_A3, + 2, tsc_IdMeasObject_f2, tsc_IdReportConfig_A3), + cs_QuantityConfig_Def, + cs_508_MeasGapConfig_GP1)); + + //------------------------------------------------ + //8.6.6.2, Step1 + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_8_6_6_2_Step1(RRC_TransactionIdentifier p_RRC_TI, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq_1, + AllowedMeasBandwidth p_MeasurementBandwidth_1, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq_2, + AllowedMeasBandwidth p_MeasurementBandwidth_2) := + /* @status APPROVED (LTE_A) */ + cs_508_RRCConnectionReconfiguration_ConditionMEAS(p_RRC_TI, + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_2Entries(tsc_IdMeasObject_f1, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq_1, p_MeasurementBandwidth_1), + tsc_IdMeasObject_f2, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq_2, p_MeasurementBandwidth_2)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_A3, + cs_508_ReportConfigEUTRA_A3), + omit, + cs_MeasIdToAddModList_1Entry(1, tsc_IdMeasObject_f2, tsc_IdReportConfig_A3), + -, //@sic R5s140167, R5-134645 sic@ + cs_508_MeasGapConfig_GP1)); + //------------------------- + //8.6.5.1, Step1, condition UTRAN-FDD + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_8_6_5_1_Step1_FDD(RRC_TransactionIdentifier p_RRC_TI, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq_1, + AllowedMeasBandwidth p_MeasurementBandwidth_1, + ARFCN_ValueUTRA p_CarrierFreq, + PhysCellIdUTRA_FDD p_PhysCellIdUTRA_FDD) := + /* @status APPROVED (LTE_A) */ + cs_508_RRCConnectionReconfiguration_ConditionMEAS(p_RRC_TI, + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_2Entries(tsc_IdMeasObject_f1, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq_1, p_MeasurementBandwidth_1), + tsc_IdMeasObject_f8, + cs_MeasObject_measObjectUTRA(p_CarrierFreq, + 0, + omit, + cs_MeasObjectUTRA_cellsToAddModList_FDD(cs_CellsToAddModListUTRA_FDD_1Entry(1, p_PhysCellIdUTRA_FDD)), + omit)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_B2_UTRA, + cs_508_ReportConfigInterRAT_B2_UTRA_ConditionFDD_RSCP(-75, -82)),//@sic R5-142864, @sic R5-125789 sic@ + omit, + cs_MeasIdToAddModList_1Entry(1, tsc_IdMeasObject_f8, tsc_IdReportConfig_B2_UTRA), + cs_QuantityConfig(omit, + cs_QuantityConfigUTRA(cpich_RSCP, pccpch_RSCP, fc0),//@sic R5-125789 sic@ + omit, + omit), + cs_508_MeasGapConfig_GP1)); + + //------------------------------------------------ + //8.6.5.1, Step1, condition UTRAN-TDD + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_8_6_5_1_Step1_TDD(RRC_TransactionIdentifier p_RRC_TI, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq_1, + AllowedMeasBandwidth p_MeasurementBandwidth_1, + ARFCN_ValueUTRA p_CarrierFreq, + PhysCellIdUTRA_TDD p_PhysCellIdUTRA_TDD) := + /* @status APPROVED (LTE_A) */ + cs_508_RRCConnectionReconfiguration_ConditionMEAS(p_RRC_TI, + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_2Entries(tsc_IdMeasObject_f1, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq_1, p_MeasurementBandwidth_1), + tsc_IdMeasObject_f8, + cs_MeasObject_measObjectUTRA(p_CarrierFreq, + 0, + omit, + cs_MeasObjectUTRA_cellsToAddModList_TDD(cs_CellsToAddModListUTRA_TDD_1Entry(1, p_PhysCellIdUTRA_TDD)), + omit)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_B2_UTRA, + cs_508_ReportConfigInterRAT_B2_UTRA_ConditionTDD(-75, -82)),//@sic R5-142864, R5-125789 sic@ + omit, + cs_MeasIdToAddModList_1Entry(1, tsc_IdMeasObject_f8, tsc_IdReportConfig_B2_UTRA), + cs_QuantityConfig(omit, + cs_QuantityConfigUTRA(cpich_RSCP, pccpch_RSCP, fc0),//@sic R5-125789 sic@ + omit, + omit), + cs_508_MeasGapConfig_GP1)); + + //------------------------- + //8.6.5.1a, Step1, condition UTRAN-FDD + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_8_6_5_1a_Step1_FDD(RRC_TransactionIdentifier p_RRC_TI, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq_1, + AllowedMeasBandwidth p_MeasurementBandwidth_1, + ARFCN_ValueUTRA p_CarrierFreq, + PhysCellIdUTRA_FDD p_PhysCellIdUTRA_FDD) := + /* @status */ + cs_508_RRCConnectionReconfiguration_ConditionMEAS(p_RRC_TI, + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_2Entries(tsc_IdMeasObject_f1, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq_1, p_MeasurementBandwidth_1), + tsc_IdMeasObject_f10, + cs_MeasObject_measObjectUTRA(p_CarrierFreq, + 0, + omit, + cs_MeasObjectUTRA_cellsToAddModList_FDD(cs_CellsToAddModListUTRA_FDD_1Entry(1, p_PhysCellIdUTRA_FDD)), + omit)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_B2_UTRA, + cs_508_ReportConfigInterRAT_B2_UTRA_ConditionFDD_RSCP(-92, -82)), + omit, + cs_MeasIdToAddModList_1Entry(1, tsc_IdMeasObject_f10, tsc_IdReportConfig_B2_UTRA), + cs_QuantityConfig(omit, + cs_QuantityConfigUTRA(cpich_RSCP, pccpch_RSCP, fc0), + omit, + omit), + cs_508_MeasGapConfig_GP1)); + + //------------------------------------------------ + //8.6.5.1a, Step1, condition UTRAN-TDD + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_8_6_5_1a_Step1_TDD(RRC_TransactionIdentifier p_RRC_TI, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq_1, + AllowedMeasBandwidth p_MeasurementBandwidth_1, + ARFCN_ValueUTRA p_CarrierFreq, + PhysCellIdUTRA_TDD p_PhysCellIdUTRA_TDD) := + /* @status */ + cs_508_RRCConnectionReconfiguration_ConditionMEAS(p_RRC_TI, + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_2Entries(tsc_IdMeasObject_f1, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq_1, p_MeasurementBandwidth_1), + tsc_IdMeasObject_f10, + cs_MeasObject_measObjectUTRA(p_CarrierFreq, + 0, + omit, + cs_MeasObjectUTRA_cellsToAddModList_TDD(cs_CellsToAddModListUTRA_TDD_1Entry(1, p_PhysCellIdUTRA_TDD)), + omit)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_B2_UTRA, + cs_508_ReportConfigInterRAT_B2_UTRA_ConditionTDD(-92, -82)), + omit, + cs_MeasIdToAddModList_1Entry(1, tsc_IdMeasObject_f10, tsc_IdReportConfig_B2_UTRA), + cs_QuantityConfig(omit, + cs_QuantityConfigUTRA(cpich_RSCP, pccpch_RSCP, fc0), + omit, + omit), + cs_508_MeasGapConfig_GP1)); + + //------------------------------------------------ + //8.6.1.1, Step1 + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_8_6_1_1_Step1(RRC_TransactionIdentifier p_RRC_TI, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq_1, + AllowedMeasBandwidth p_MeasurementBandwidth_1) := + /* @status APPROVED (LTE_A) */ + cs_508_RRCConnectionReconfiguration_ConditionMEAS(p_RRC_TI, + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_1Entry(tsc_IdMeasObject_f1, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq_1, p_MeasurementBandwidth_1)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_A2, + cs_ReportConfig_reportConfigEUTRA_eventA2_RSRP(-83, 6, ms320, rsrp, both, 1, ms1024, r1, true_)), + omit, + cs_MeasIdToAddModList_1Entry(1, tsc_IdMeasObject_f1, tsc_IdReportConfig_A2))); + + //------------------------------------------------ + //8.6.6.7, Step1 + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_8_6_6_7_Step1_and_8_6_8_2_Step12(RRC_TransactionIdentifier p_RRC_TI, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq_1, + AllowedMeasBandwidth p_MeasurementBandwidth_1, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq_2, + AllowedMeasBandwidth p_MeasurementBandwidth_2) := + cs_508_RRCConnectionReconfiguration_ConditionMEAS(p_RRC_TI, + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_2Entries(tsc_IdMeasObject_f1, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq_1, p_MeasurementBandwidth_1), + tsc_IdMeasObject_f2, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq_2, p_MeasurementBandwidth_2)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_A3, + cs_508_ReportConfigEUTRA_A3), + omit, + cs_MeasIdToAddModList_1Entry(1, tsc_IdMeasObject_f2, tsc_IdReportConfig_A3), + cs_QuantityConfig_Def, + cs_508_MeasGapConfig_GP1)); + //------------------------- + //8.6.7.1, Step1, condition UTRAN-FDD + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_8_6_7_1_Step1_FDD(RRC_TransactionIdentifier p_RRC_TI, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq_1, + AllowedMeasBandwidth p_MeasurementBandwidth_1, + ARFCN_ValueUTRA p_CarrierFreq, + PhysCellIdUTRA_FDD p_PhysCellIdUTRA_FDD) := + /* @status APPROVED (LTE_A) */ + cs_508_RRCConnectionReconfiguration_ConditionMEAS(p_RRC_TI, + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_2Entries(tsc_IdMeasObject_f1, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq_1, p_MeasurementBandwidth_1), + tsc_IdMeasObject_f8, + cs_MeasObject_measObjectUTRA(p_CarrierFreq, + 0, + omit, + cs_MeasObjectUTRA_cellsToAddModList_FDD(cs_CellsToAddModListUTRA_FDD_1Entry(1, p_PhysCellIdUTRA_FDD)), + omit)), + omit, + cs_ReportConfigToAddModList_2Entries(tsc_IdReportConfig_A3, + cs_508_ReportConfigEUTRA_A3, + tsc_IdReportConfig_B2_UTRA, + cs_508_ReportConfigInterRAT_B2_UTRA_ConditionFDD_RSCP(-72, -76)),//@sic R5-125789 sic@ + omit, + cs_MeasIdToAddModList_2Entries(1, tsc_IdMeasObject_f1, tsc_IdReportConfig_A3, + 2, tsc_IdMeasObject_f8, tsc_IdReportConfig_B2_UTRA), + cs_QuantityConfig(cs_QuantityConfigEUTRA(omit, omit), //@sic R5s140150 sic@ + cs_QuantityConfigUTRA(cpich_RSCP, pccpch_RSCP, fc0),//@sic R5-125789 sic@ + omit, + omit), + cs_508_MeasGapConfig_GP1)); + + //------------------------------------------------ + //8.6.7.1, Step1, condition UTRAN-TDD + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_8_6_7_1_Step1_TDD(RRC_TransactionIdentifier p_RRC_TI, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq_1, + AllowedMeasBandwidth p_MeasurementBandwidth_1, + ARFCN_ValueUTRA p_CarrierFreq, + PhysCellIdUTRA_TDD p_PhysCellIdUTRA_TDD) := + /* @status APPROVED (LTE_A) */ + cs_508_RRCConnectionReconfiguration_ConditionMEAS(p_RRC_TI, + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_2Entries(tsc_IdMeasObject_f1, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq_1, p_MeasurementBandwidth_1), + tsc_IdMeasObject_f8, + cs_MeasObject_measObjectUTRA(p_CarrierFreq, + 0, + omit, + cs_MeasObjectUTRA_cellsToAddModList_TDD(cs_CellsToAddModListUTRA_TDD_1Entry(1, p_PhysCellIdUTRA_TDD)), + omit)), + omit, + cs_ReportConfigToAddModList_2Entries(tsc_IdReportConfig_A3, + cs_508_ReportConfigEUTRA_A3, + tsc_IdReportConfig_B2_UTRA, + cs_508_ReportConfigInterRAT_B2_UTRA_ConditionTDD(-72, -76)),//@sic R5-125789 sic@ + omit, + cs_MeasIdToAddModList_2Entries(1, tsc_IdMeasObject_f1, tsc_IdReportConfig_A3, + 2, tsc_IdMeasObject_f8, tsc_IdReportConfig_B2_UTRA), + cs_QuantityConfig(cs_QuantityConfigEUTRA(omit, omit), //@sic R5s140150 sic@ + cs_QuantityConfigUTRA(cpich_RSCP, pccpch_RSCP, fc0),//@sic R5-125789 sic@ + omit, + omit), + cs_508_MeasGapConfig_GP1)); + //------------------------------------------------ + //8.6.7.2, Step 1 + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_8_6_7_2_Step1(RRC_TransactionIdentifier p_RRC_TI, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq_1, + AllowedMeasBandwidth p_MeasurementBandwidth_1, + ARFCN_ValueGERAN p_StartingARFCN, + BandIndicatorGERAN p_BandIndicator, + ExplicitListOfARFCNs p_ExplicitListOfARFCNs) := + /* @status APPROVED (LTE_A) */ + cs_508_RRCConnectionReconfiguration_ConditionMEAS(p_RRC_TI, + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_2Entries(tsc_IdMeasObject_f1, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq_1, p_MeasurementBandwidth_1), + tsc_IdMeasObject_f11, + cs_MeasObject_measObjectGERAN(p_StartingARFCN, + p_BandIndicator, + cs_FollowingARFCNs_explicitListOfARFCNs(p_ExplicitListOfARFCNs), + 0, + omit, + omit)), + omit, + cs_ReportConfigToAddModList_2Entries(tsc_IdReportConfig_A3, + cs_508_ReportConfigEUTRA_A3, + tsc_IdReportConfig_B2_GERAN, + cs_508_ReportConfigInterRAT_B2_GERAN(-69, -79)), + omit, + cs_MeasIdToAddModList_2Entries(1, tsc_IdMeasObject_f1, tsc_IdReportConfig_A3, + 2, tsc_IdMeasObject_f11, tsc_IdReportConfig_B2_GERAN), + cs_QuantityConfig(cs_QuantityConfigEUTRA( omit, omit ), //@sic R5s140362, R5s140364 sic@ + omit, + cs_QuantityConfigGERAN(rssi, fc2), + omit), + cs_508_MeasGapConfig_GP2)); + + //------------------------------------------------ + //8.6.7.4, Step1 + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_8_6_7_4_Step1(RRC_TransactionIdentifier p_RRC_TI, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq_1, + AllowedMeasBandwidth p_MeasurementBandwidth_1, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq_2, + AllowedMeasBandwidth p_MeasurementBandwidth_2) := + cs_508_RRCConnectionReconfiguration_ConditionMEAS(p_RRC_TI, + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_2Entries(tsc_IdMeasObject_f1, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq_1, p_MeasurementBandwidth_1), + tsc_IdMeasObject_f2, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq_2, p_MeasurementBandwidth_2)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_A3, + cs_508_ReportConfigEUTRA_A3), + omit, + cs_MeasIdToAddModList_1Entry(1, tsc_IdMeasObject_f2, tsc_IdReportConfig_A3), + cs_QuantityConfig_Def, + cs_508_MeasGapConfig_GP1)); + + //8.6.10.1, Step1, condition UTRAN-FDD + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_8_6_10_1_Step1_FDD(RRC_TransactionIdentifier p_RRC_TI, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq, + AllowedMeasBandwidth p_EUTRA_MeasurementBandwidth, + ARFCN_ValueUTRA p_CarrierFreq, + PhysCellIdUTRA_FDD p_PhysCellIdUTRA_FDD) := + cs_RRCConnectionReconfiguration_Common(p_RRC_TI, + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_2Entries(tsc_IdMeasObject_f1, + cs_508_MeasObjectEUTRA_GENERIC(p_EUTRA_DL_CarrierFreq, p_EUTRA_MeasurementBandwidth), + tsc_IdMeasObject_f8, + cs_MeasObject_measObjectUTRA(p_CarrierFreq, + 0, + omit, + cs_MeasObjectUTRA_cellsToAddModList_FDD(cs_CellsToAddModListUTRA_FDD_1Entry(1, p_PhysCellIdUTRA_FDD)), + omit)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_B2_UTRA, + cs_508_ReportConfigInterRAT_B2_UTRA_ConditionFDD_RSCP(-72, -76)), + omit, + cs_MeasIdToAddModList_1Entry(1, tsc_IdMeasObject_f8, tsc_IdReportConfig_B2_UTRA), + cs_QuantityConfig(cs_QuantityConfigEUTRA(omit, omit), + cs_QuantityConfigUTRA(cpich_RSCP, pccpch_RSCP, fc0), + omit, + omit), + cs_508_MeasGapConfig_GP1), + omit, omit, omit); + + //------------------------------------------------ + //8.6.10.1, Step1, condition UTRAN-TDD + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_8_6_10_1_Step1_TDD(RRC_TransactionIdentifier p_RRC_TI, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq, + AllowedMeasBandwidth p_EUTRA_MeasurementBandwidth, + ARFCN_ValueUTRA p_CarrierFreq, + PhysCellIdUTRA_TDD p_PhysCellIdUTRA_TDD) := + cs_RRCConnectionReconfiguration_Common(p_RRC_TI, + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_2Entries(tsc_IdMeasObject_f1, + cs_508_MeasObjectEUTRA_GENERIC(p_EUTRA_DL_CarrierFreq, p_EUTRA_MeasurementBandwidth), + tsc_IdMeasObject_f8, + cs_MeasObject_measObjectUTRA(p_CarrierFreq, + 0, + omit, + cs_MeasObjectUTRA_cellsToAddModList_TDD(cs_CellsToAddModListUTRA_TDD_1Entry(1, p_PhysCellIdUTRA_TDD)), + omit)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_B2_UTRA, + cs_508_ReportConfigInterRAT_B2_UTRA_ConditionTDD(-72, -76)), + omit, + cs_MeasIdToAddModList_1Entry(1, tsc_IdMeasObject_f8, tsc_IdReportConfig_B2_UTRA), + cs_QuantityConfig(cs_QuantityConfigEUTRA(omit, omit), + cs_QuantityConfigUTRA(cpich_RSCP, pccpch_RSCP, fc0), + omit, + omit), + cs_508_MeasGapConfig_GP1), + omit, omit, omit); + + //---------------------------------------------------------------------------- + // MeasurementReport (36.331 cl. 6.2.2) + + template (present) UL_DCCH_Message cr_MeasurementReport_r10(template integer p_MeasId, + template RSRP_Range p_RsrpResult, + template RSRQ_Range p_RsrqResult, + template MeasResults.measResultNeighCells p_MeasResultNeighCells, + template MeasResultForECID_r9 p_MeasResultForECID_r9 := omit, + template LocationInfo_r10 p_LocationInfo_r10 := *, + template MeasResultServFreqList_r10 p_MeasResultServFreqList_r10 := omit) := + { /* @status APPROVED (LTE_A) */ + message_ := { + c1 := { + measurementReport := { + criticalExtensions := { + c1 := { + measurementReport_r8 := { + measResults := { + measId := p_MeasId, + measResultPCell := { + rsrpResult := p_RsrpResult, + rsrqResult := p_RsrqResult + }, + measResultNeighCells := p_MeasResultNeighCells, + measResultForECID_r9 := p_MeasResultForECID_r9, + locationInfo_r10 := p_LocationInfo_r10, + measResultServFreqList_r10 := p_MeasResultServFreqList_r10 + }, + nonCriticalExtension := * + } + } + } + } + } + } + }; + + template (present) UL_DCCH_Message cr_MeasurementReport_Eutra_1Entry_both_r10(template integer p_MeasId, + template PhysCellId p_PhysCellId) := + /* @status APPROVED (LTE_A) */ + cr_MeasurementReport_r10(p_MeasId, ?, ?, + cr_MeasResultNeighCells_measResultListEUTRA_1Entry(p_PhysCellId, omit, ?, ?)); + + //------------------------------------------------ + template (value) SystemInformationBlockType4 cs_SIB4_ThreeNeighCellEntries(PhysCellId p_PhysCellId1, + Q_OffsetRange p_Q_OffsetRange1, + PhysCellId p_PhysCellId2, + Q_OffsetRange p_Q_OffsetRange2, + PhysCellId p_PhysCellId3, + Q_OffsetRange p_Q_OffsetRange3) := + /* @status APPROVED (LTE_A) */ + cs_SIB4_NeighCellList( { cs_IntraFreqNeighCellInfo(p_PhysCellId1, p_Q_OffsetRange1), + cs_IntraFreqNeighCellInfo(p_PhysCellId2, p_Q_OffsetRange2), + cs_IntraFreqNeighCellInfo(p_PhysCellId3, p_Q_OffsetRange3) } ); + + // Default values according to 36.508 cl. 6.3.1.1 + template (value) SystemInformationBlockType4 cs_508_Cell1_DefSIB4_IntraFreqCellList := + /* @status APPROVED (LTE_A) */ + cs_SIB4_ThreeNeighCellEntries(2, dB0,//q-OffsetCell = 0 dB for cell 2 + 4, dB0,//q-OffsetCell = 0 dB for cell 4 + 11, dB0);//q-OffsetCell = 0 dB for cell 11) + + // Default values according to 36.508 cl. 6.3.1.1 + template (value) SystemInformationBlockType4 cs_508_Cell2_DefSIB4_IntraFreqCellList := + /* @status APPROVED (LTE_A) */ + cs_SIB4_ThreeNeighCellEntries(1, dB0,//q-OffsetCell = 0 dB for cell 1 + 4, dB0,//q-OffsetCell = 0 dB for cell 4 + 11, dB0);//q-OffsetCell = 0 dB for cell 11) + + // Default values according to 36.508 cl. 6.3.1.1 + template (value) SystemInformationBlockType4 cs_508_Cell4_DefSIB4_IntraFreqCellList := + /* @status APPROVED (LTE_A) */ + cs_SIB4_ThreeNeighCellEntries(1, dB0,//q-OffsetCell = 0 dB for cell 1 + 2, dB0,//q-OffsetCell = 0 dB for cell 2 + 11, dB0);//q-OffsetCell = 0 dB for cell 11) + + // Default values according to 36.508 cl. 6.3.1.1 + template (value) SystemInformationBlockType4 cs_508_Cell11_DefSIB4_IntraFreqCellList := + /* @status APPROVED (LTE_A) */ + cs_SIB4_ThreeNeighCellEntries(1, dB0,//q-OffsetCell = 0 dB for cell 1 + 2, dB0,//q-OffsetCell = 0 dB for cell 2 + 4, dB0);//q-OffsetCell = 0 dB for cell 4) +} //end of module diff --git a/LTE_A_IWD_14wk37/LTE_A/8_6/Inter_RAT_Logged_MDT.ttcn b/LTE_A_IWD_14wk37/LTE_A/8_6/Inter_RAT_Logged_MDT.ttcn new file mode 100644 index 0000000..b4ad7e7 --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/8_6/Inter_RAT_Logged_MDT.ttcn @@ -0,0 +1,824 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 22:08:20 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12181 $ +/******************************************************************************/ + +module Inter_RAT_Logged_MDT +{ + +///////////////// +// Import Part // +///////////////// + + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_Component all; + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from EUTRA_RRC_Templates all; + import from EUTRA_SRB_Templates all; + import from EUTRA_AspCommon_Templates all; + import from EUTRA_CellInfo all; + import from EUTRA_CommonProcedures all; + import from EUTRA_CommonProcedures_C2K all; + import from EUTRA_ConfigurationSteps all; + import from EUTRA_MDT_Specific_Templates all; + import from EUTRA_Timing all; + import from EUTRA_RRCSteps all; + import from CommonIratDefs all; + import from EUTRA_AuxiliaryFunctions all; + import from EUTRA_CapabilityFunctions all; + import from EUTRA_Measurement_Templates all; + import from EUTRA_BandDependentParam all; + import from EUTRA_SecuritySteps all; + import from EUTRA_CellCfg_Templates all; + import from EUTRA_SecurityFunctions all; + import from EUTRA_ASP_SrbDefs all; + import from EUTRA_Paging all; + import from EUTRA_NASSteps all; + import from EPS_NAS_TypeDefs all; + import from EPS_NAS_Templates all; + import from EPS_NAS_Constants all; + import from EPS_NAS_MsgContainers all; + + template (present) MeasResultList2CDMA2000_r9 cr_MeasResultList2CDMA2000_r9_1Entry_HRPD(template BandclassCDMA2000 p_BandclassCDMA2000, + template ARFCN_ValueCDMA2000 p_ARFCN_ValueCDMA2000, + template boolean p_PreRegistrationStatusHRPD, + template PhysCellIdCDMA2000 p_PhysCellIdCDMA2000, + template CellGlobalIdCDMA2000.cellGlobalIdHRPD p_CellGlobalIdHRPD, + template integer p_PilotPnPhase := omit, + template integer p_PilotStrength) := + { + { + carrierFreq_r9 := { + bandClass := p_BandclassCDMA2000, + arfcn := p_ARFCN_ValueCDMA2000 + }, + measResultList_r9 := { + preRegistrationStatusHRPD := p_PreRegistrationStatusHRPD, + measResultListCDMA2000 := { + { + physCellId := p_PhysCellIdCDMA2000, + cgi_Info := { + cellGlobalIdHRPD := p_CellGlobalIdHRPD + }, + measResult := { + pilotPnPhase := p_PilotPnPhase, + pilotStrength := p_PilotStrength + } + } + } + } + } + }; + + template (present) UL_DCCH_Message cr_MeasurementReport_CDMA2000_1Entry_PreRegistration( PhysCellIdCDMA2000 p_PhysCellId, + template CDMA2000_PilotPnPhase p_PilotPnPhase) := + /* @status */ + cr_MeasurementReport(1, ?, ?, cr_MeasResultNeighCells_measResultsCDMA2000_1Entry( true, p_PhysCellId, omit, p_PilotPnPhase, ? ) ); + + /* + * @desc REFERENCE TS 36.523-1 clause 8.6.3.3 + * @status + */ + function f_TC_8_6_3_3_EUTRA() runs on EUTRA_PTC + { //Logged MDT / CDMA2000 Inter-RAT measurement, logging and reporting + var integer v_T1_RS_EPRE_Cell1 := -60; + var IRAT_CoOrd_SysInfo_Type v_CDMA2000SysInfo; + var CDMA2000_Type v_CDMA2000_Type_Cell15; + var PhysCellIdCDMA2000 v_PNOffset_Cell15 ; + var ARFCN_ValueCDMA2000 v_Arfcn_CDMA2000_Cell15 ; + var BandclassCDMA2000 v_BandClass_CDMA2000_Cell15; + var CellGlobalIdCDMA2000.cellGlobalIdHRPD v_CellGlobalIdHRPD_CDMA2000_Cell15; + var EUTRA_CellInfo_Type v_CellInfo_Cell1; + var CellIdentity v_CellIdentity_Cell1; + var PLMN_Identity v_PLMN_Identity_Cell1; + var B48_Type v_AbsoluteTimeInfo; + var SRB_COMMON_IND v_ReceivedAsp; + var integer i, v_Len; + var LogMeasInfo_r10 v_LogMeasInfo_r10; + //Initialize testcase + f_EUTRA_Init ( c6 ); + v_CellInfo_Cell1 := f_EUTRA_CellInfo_Get(eutra_Cell1); + v_CellIdentity_Cell1 := v_CellInfo_Cell1.CellIds.CellIdentity; + v_PLMN_Identity_Cell1 := v_CellInfo_Cell1.NAS_Parameters.Guti_Parameters.PLMN_Identity; + + //Set maximum cell powel level for Cell 1 + f_EUTRA_CellInfo_InitMaxReferencePower(eutra_Cell1, v_T1_RS_EPRE_Cell1); + + //Create and configure Cell 1 + f_EUTRA_CellConfig_Def(eutra_Cell1); + + //Preamble to ensure USIM is updated with valid TAI and to bring UE to initial state + f_EUTRA_Preamble(eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_RbEst_Def(eutra_Cell1); + + //Get Cell Parameters for CDMA2000 cell + v_CDMA2000SysInfo := f_IRAT_WaitForCoOrd_SysInfo(CDMA2000); + + //Initialise locol parameters for + v_CDMA2000_Type_Cell15 := f_ConvertFromBoolToCDMA2000_Type(v_CDMA2000SysInfo.Cdma2000[0].IsHRPD); + v_PNOffset_Cell15 := v_CDMA2000SysInfo.Cdma2000[0].PNOffset; + v_Arfcn_CDMA2000_Cell15 := v_CDMA2000SysInfo.Cdma2000[0].Arfcn; + v_BandClass_CDMA2000_Cell15 := f_ConvertFromIntegerToBandClass(v_CDMA2000SysInfo.Cdma2000[0].BandClass); + v_CellGlobalIdHRPD_CDMA2000_Cell15 := v_CDMA2000SysInfo.Cdma2000[0].SectorID_HRPD; + + f_EUTRA_TestBody_Set(true); + + //------------------------------------------------ + //Start TestBody + + //@siclog "Step 1" siclog@ + //The SS transmits a LoggedMeasurementConfiguration message including to configure the UE how to perform logging of measurement results while in RRC_IDLE. + v_AbsoluteTimeInfo := f_MDT_GetAbsolute_TimeStamp(); + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_LoggedMeasurementConfiguration(v_PLMN_Identity_Cell1, '0000EF'O, '001A'O, '05'O, v_AbsoluteTimeInfo, + -, min120, ms2560) )); + + //@siclog "Step 2" siclog@ + f_EUTRA_RRC_ConnectionRelease(eutra_Cell1); + + //@siclog "Step 3" siclog@ + //Wait 5s to allow UE to activate logging + f_Delay(5.0); + + //@siclog "Step 4" siclog@ + //The SS changes Cell 1 and Cell 15 levels according to the row "T1" in table 8.6.3.3.3.2-1. + f_IRAT_SendCoOrd(CDMA2000, cms_IRAT_Trigger); + f_EUTRA_SetCellPower(eutra_Cell1, v_T1_RS_EPRE_Cell1); + + //@siclog "step 5 - 15" siclog@ + //Steps 1 to 10 of the generic radio bearer establishment procedure in TS 36.508 subclause 4.5.3.3 are executed to successfully complete the service request procedure on Cell 1. + f_EUTRA_RbEst_Def(eutra_Cell1); + + //@siclog "Step 16" siclog@ + //The SS transmits a UEInformationRequest message on Cell 1. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_508_UEInformationRequest(tsc_RRC_TI_Def))); + + //@siclog "Step 17" siclog@ + //Check: Does the UE transmit a UEInformationResponse message with a LogMeasInfoList with at least one inter-RAT neighbouring cell measurement of Cell 1. + SRB.receive(car_SRB_RrcPdu_IND_Common(eutra_Cell1, + tsc_SRB2, + cr_UEInformationResponse_LogMeasInfo_1Entry(tsc_RRC_TI_Def, v_AbsoluteTimeInfo, + v_PLMN_Identity_Cell1,'0000EF'O, '001A'O, '05'O, *, *, *))) ->value v_ReceivedAsp; + + v_Len := lengthof(v_ReceivedAsp.Signalling.Rrc.Dcch.message_.c1.ueInformationResponse_r9.criticalExtensions.c1.ueInformationResponse_r9.nonCriticalExtension.nonCriticalExtension.logMeasReport_r10.logMeasInfoList_r10); + for (i:=0; i value v_ReceivedRrcMsg; //@sic R5s130639 sic@ + //@siclog "Step 3" siclog@ + //The SS does not respond to any RRCConnectionReestablishmentRequest message and waits for 1s to ensure that T301 expires and the UE goes to RRC_IDLE state on Cell 3. + v_TimingFirstMsg := v_ReceivedRrcMsg.Common.TimingInfo.SubFrame; //@sic R5s130639 sic@ + v_TimingT301Min := f_EUTRA_TimingInfoAdd(v_TimingFirstMsg, v_T301Min_InMillisec); //@sic R5s130639 sic@ + v_TimingT301Max := f_EUTRA_TimingInfoAdd(v_TimingFirstMsg, v_T301Max_InMillisec); //@sic R5s130639 sic@ + + + //The local SS release is scheduled and done at the expiry of the timer t_T301Min + f_EUTRA_RRC_ConnectionRelease_Local (eutra_Cell3, v_TimingT301Min); //@sic R5s130639 sic@ + + alt { + //@siclog "Step 3" @siclog + //The SS does not respond to any RRCConnectionReestablishmentRequest message and waits for 1s to ensure that T301 expires and the UE goes to RRC_IDLE state on Cell 1. + [] SRB.receive (car_SRB0_RrcPdu_IND (?, cr_RRCConnectionReestablishmentRequest_AnyUE (?))) -> value v_ReceivedRrcMsg + { + v_TimingFurtherMsg := v_ReceivedRrcMsg.Common.TimingInfo.SubFrame; + v_Duration := f_EUTRA_SubFrameTimingDuration(v_TimingFirstMsg, v_TimingFurtherMsg); + if (v_Duration > v_T301Max_InMillisec) { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 3 - Unexpected RRCConnectionReestablishmentRequest after expiry of T301"); + } + repeat; + } + + [] SRB.check (receive(car_SRB0_RrcPdu_IND (eutra_Cell3, cr_508_RRCConnectionRequest)) -> value v_ReceivedRrcMsg) + { + v_TimingFurtherMsg := v_ReceivedRrcMsg.Common.TimingInfo.SubFrame; + v_Duration := f_EUTRA_SubFrameTimingDuration(v_TimingFirstMsg, v_TimingFurtherMsg); + if (v_Duration < v_T301Min_InMillisec) { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 3 - Unexpected RRCConnectionRequest before expiry of T301"); + } + } + } //@sic R5s130639 sic@ + + + //@siclog "Step 4" siclog@ + //The UE transmits an RRCConnectionRequest message on Cell 3 + f_EUTRA_RRC_ConnectionRequest_Def(eutra_Cell3); + + //@siclog "Step 5" siclog@ + //The SS transmit an RRCConnectionSetup message. + f_EUTRA_RRC_ConnectionSetup_Def (eutra_Cell3); + + //@siclog "Step 6" siclog@ + //Check: Does the UE transmit an RRCConnectionSetupComplete message to confirm the successful completion of the connection establishment with rlf-InfoAvailable included? + v_NasInd := f_EUTRA_RRCConnectionSetupComplete_Def(eutra_Cell3, + cr_RRCConnectionSetupComplete_r10 (tsc_RRC_TI_Def, ?, -, -, -, true_), + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_508_TAU_Request(v_EpsUpdate_TypeValue, + v_KsiValue, + cr_DRXparameter_Any ('5C'O) ifpresent, + v_AdditionalUpdateType_Expected))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.4.3 Step 6"); + + v_AuthParams := f_EUTRA_Security_Get(); //@sic R5s130639 sic@ + v_AuthParams := f_EUTRA_RRC_ActivateSecurity(eutra_Cell3, v_AuthParams, v_NasInd.SecurityProtection.NasCount); //@sic R5s130639 sic@ RRC SECURITY COMMAND & COMPLETE + f_EUTRA_Security_Set(v_AuthParams); //@sic R5s130639 sic@ + + //@siclog "Step 7-8" siclog@ + //The SS responds with TRACKING AREA UPDATE ACCEPT message. + //The UE sends a TRACKING AREA UPDATE COMPLETE on Cell 3 to finish the TAU procedure + v_EPS_ContextStatus := v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.epsBearerContextStatus; + f_EUTRA_TrackingAreaUpdate_Accept_Complete(eutra_Cell3, v_CellInfo_Cell3.NAS_Parameters.Guti_Parameters, v_EpsUpdate_TypeValue, v_EPS_ContextStatus, v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.addUpdateType, NORMAL); + + //Calculate ShortMAC-I to be received in RRCConnectionReestablishment Request from UE in Step 10 + v_ShortMAC_I := f_Calculate_ShortMAC(eutra_Cell3, eutra_Cell6); + + //@siclog "Step 9" siclog@ + //The SS changes Cell 3 and Cell 6 parameters according to the row "T2" in Table 8.6.4.3.3.2-1 in order that the radio link quality of Cell 3 is degraded and Cell 6 is suitable for camping. + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT2); + + //@siclog "Step 10" siclog@ + //The UE transmits an RRCConnectionReestablishmentRequest message on Cell 6. + SRB.receive(car_SRB0_RrcPdu_IND(eutra_Cell6, + cr_508_RRCConnectionReestablishmentRequest(tsc_C_RNTI_Def, + v_PhysCellId_Cell3, + cr_ReestablishmentCause_OtherFailure, + v_ShortMAC_I))); + + //@siclog "Step 11" siclog@ + //The SS transmits an RRCConnectionReestablishment message on Cell 6. + + // Added security reset on Cell6. + v_AuthParams := f_EUTRA_Security_Get(); //@sic R5s130639 sic@ + v_AuthParams := f_EUTRA_SS_AS_ActivateSecurity_HO_Reest(eutra_Cell6, v_AuthParams, 0); //@sic R5s130639 sic@ + f_EUTRA_Security_Set(v_AuthParams); //@sic R5s130639 sic@ + + f_EUTRA_RRC_RRCConnectionReestablishment_Def(eutra_Cell6); //@sic R5s130639 sic@ + + //@siclog "Step 12" siclog@ + //Check: Does the UE transmit an RRCConnectionReestablishmentComplete message on Cell 6 with rlf-InfoAvailable included? + SRB.receive(car_SRB1_RrcPdu_IND (eutra_Cell6, + cr_RRCConnectionReestablishmentComplete_RLF_r9(tsc_RRC_TI_Def, true_))); //@sic R5s130639 sic@ + + + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.4.3 Step 12"); + + //@siclog "Step 13" siclog@ + //The SS transmits an RRCConnectionReconfiguration message to resume existing radio bearer on Cell 6. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell6, + cs_TimingInfo_Now, + cs_RRCConnReconfig_Resume_SRB2_DRBs(tsc_RRC_TI_Def, + v_EUTRA_FDD_TDD_CellInfo_Cell6.cqi_ReportConfig, + v_EUTRA_FDD_TDD_CellInfo_Cell6.soundingRS_UL_Config, + v_AntennaInfo_Cell6, + v_SR_PUCCH_ResourceIndex_Cell6, + v_SR_ConfigIndex_Cell6))); + + //@siclog "Step 14" siclog@ + //The UE transmits an RRCConnectionReconfigurationComplete message on Cell 6. + SRB.receive(car_SRB1_RrcPdu_IND (eutra_Cell6, cr_508_RRCConnectionReconfigurationComplete(tsc_RRC_TI_Def))); //@sic R5s130639 sic@ + + //@siclog "Step 15" siclog@ + //The SS transmits a UEInformationRequest message with rlf-ReportReq set to true on Cell 6. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell6, cs_TimingInfo_Now, cs_508_UEInformationRequest(tsc_RRC_TI_Def, -, true))); + + //@siclog "Step 16" siclog@ + //Check: Does the UE transmit a UEInformationResponse message on Cell 6 with rlf-Report included? + //Check: Does the reestablishmentCellId included in the UEInformationResponse message equal to the global cell identity of Cell 6? + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell6, + cr_UEInformationResponse_Common(tsc_RRC_TI_Def, -, + cr_RLF_Report_1Entry(?, *, -, *, + (cr_FailedPCellId_CellGlobalId(cr_Cgi(v_PLMN_Identity_Cell3, v_CellIdentity_Cell3)), cr_FailedPCellId_Pci_Arfcn(v_PhysCellId_Cell3, v_Frequency_IE_f2.UL_DL_Earfcn.dl_CarrierFreq)), + cr_Cgi(v_PLMN_Identity_Cell6, v_CellIdentity_Cell6), omit, rlf, omit)))); //@sic R5s130639 sic@ + + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.4.3 Step 16"); + + //@siclog "Step 17" siclog@ + //The SS transmits a UEInformationRequest message with rlf-ReportReq set to true on Cell 6. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell6, cs_TimingInfo_Now, cs_508_UEInformationRequest(tsc_RRC_TI_Def, -, true))); + + //@siclog "Step 18" siclog@ + //Check: Does the UE transmit a UEInformationResponse message on Cell 6 without rlf-Report included? + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell6, cr_UEInformationResponse_Common(tsc_RRC_TI_Def, -, omit))); //@sic R5s130639 sic@ + + //@siclog "Step 19" siclog@ + //Check: Does the test result of generic test procedure in TS 36.508 subclause 6.4.2.3 indicate that the UE is in E-UTRA RRC_CONNECTED state on Cell 6? + f_EUTRA_508Check_ConnectedState(eutra_Cell6); + + f_EUTRA_TestBody_Set(false); + + // Postamble + f_EUTRA_Postamble(eutra_Cell6, E2_CONNECTED); + + } // end of f_TC_8_6_4_3_EUTRA + + /* + * @desc REFERENCE TS 36.523-1 clause 8.6.4.4 + * @status APPROVED (LTE_A) + */ + function f_TC_8_6_4_4_EUTRA() runs on EUTRA_PTC + { // Radio Link Failure logging / Reporting at E-UTRA handover + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var PhysCellId v_PhysCellId_Cell1; + var PhysCellId v_PhysCellId_Cell4; + var PhysCellId v_PhysCellId_Cell12; //@sic R5s140147 sic@ + var EUTRA_CellInfo_Type v_CellInfo_Cell1; + var EUTRA_CellInfo_Type v_CellInfo_Cell4; + var EUTRA_CellInfo_Type v_CellInfo_Cell12; //@sic R5s140147 sic@ + var template CellGlobalIdEUTRA v_FailedPCellId; + var CellIdentity v_CellIdentity_Cell1; //@sic R5s140147 sic@ + var CellIdentity v_CellIdentity_Cell4; //@sic R5s140147 sic@ + var CellIdentity v_CellIdentity_Cell12; //@sic R5s140147 sic@ + var PLMN_Identity v_PLMN_Identity_Cell1; //@sic R5s140147 sic@ + var PLMN_Identity v_PLMN_Identity_Cell4; //@sic R5s140147 sic@ + var PLMN_Identity v_PLMN_Identity_Cell12; //@sic R5s140147 sic@ + var ARFCN_ValueEUTRA v_Dl_CarrierFreq_Cell12; //@sic R5s140147 sic@ + var Frequency_IE_Type v_Frequency_IE_Cell1; //@sic R5s140147 sic@ + var Frequency_IE_Type v_Frequency_IE_Cell4; //@sic R5s140147 sic@ + var Frequency_IE_Type v_Frequency_IE_Cell12; //@sic R5s140147 sic@ + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell1; //@sic R5s140147 sic@ + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell4; //@sic R5s140147 sic@ + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell12; //@sic R5s140147 sic@ + var PreambleTransMax v_PreambleTransMax := n50; + var template (value) CellPowerList_Type v_CellPowerList_AtT0; + var template (value) CellPowerList_Type v_CellPowerList_AtT1; + var template (value) CellPowerList_Type v_CellPowerList_AtT2; + var template (value) CellPowerList_Type v_CellPowerList_AtT3; + var template (value) CellPowerList_Type v_CellPowerList_AtT4; + var template (value) CellPowerList_Type v_CellPowerList_AtT5; + var SR_ConfigIndex_Type v_SR_ConfigIndex_Cell1; //@sic R5s140147 sic@ + var SR_ConfigIndex_Type v_SR_ConfigIndex_Cell12; //@sic R5s140147 sic@ + var SR_PUCCH_ResourceIndex_Type v_SR_PUCCH_ResourceIndex_Cell1; //@sic R5s140147 sic@ + var SR_PUCCH_ResourceIndex_Type v_SR_PUCCH_ResourceIndex_Cell12; //@sic R5s140147 sic@ + var template (value) PhysicalConfigDedicated_AntennaInfo_Type v_AntennaInfo_Cell1; //@sic R5s140147 sic@ + var template (value) PhysicalConfigDedicated_AntennaInfo_Type v_AntennaInfo_Cell12; //@sic R5s140147 sic@ + var template(value) EUTRA_FDD_TDD_CellInfo_Type v_EUTRA_FDD_TDD_CellInfo_Cell1; //@sic R5s140147 sic@ + var template(value) EUTRA_FDD_TDD_CellInfo_Type v_EUTRA_FDD_TDD_CellInfo_Cell12; //@sic R5s140147 sic@ + var template (omit) RACH_ConfigDedicated v_RACH_ConfigDedicated; + var template (omit) MobilityControlInfo v_MobilityControlInfo; + var float v_T304; + var ShortMAC_I v_ShortMAC_I; + var EUTRA_SecurityParams_Type v_AuthParams; + var template (present) UL_DCCH_Message v_RRCConnReconfigComplete; + timer t_T304Max; + + v_CellPowerList_AtT0 := { + cs_CellPower(eutra_Cell1, tsc_ServingCellRS_EPRE), + cs_CellPower(eutra_Cell4, tsc_NonSuitableOffCellRS_EPRE), + cs_CellPower(eutra_Cell12, tsc_SuitableCellRS_EPRE) //@sic R5s140147 sic@ + }; + v_CellPowerList_AtT1 := { + cs_CellPower(eutra_Cell1, tsc_ServingCellRS_EPRE), + cs_CellPower(eutra_Cell4, tsc_NonSuitableOffCellRS_EPRE), + cs_CellPower(eutra_Cell12, -73) //@sic R5s140147 sic@ + }; + v_CellPowerList_AtT2 := { + cs_CellPower(eutra_Cell1, tsc_ServingCellRS_EPRE), + cs_CellPower(eutra_Cell4, tsc_NonSuitableOffCellRS_EPRE), + cs_CellPower(eutra_Cell12, tsc_NonSuitableOffCellRS_EPRE) //@sic R5s140147 sic@ + }; + v_CellPowerList_AtT3 := { + cs_CellPower(eutra_Cell1, tsc_ServingCellRS_EPRE), + cs_CellPower(eutra_Cell4, -79), + cs_CellPower(eutra_Cell12, tsc_NonSuitableOffCellRS_EPRE) //@sic R5s140147 sic@ + }; + v_CellPowerList_AtT4 := { + cs_CellPower(eutra_Cell1, tsc_NonSuitableOffCellRS_EPRE), + cs_CellPower(eutra_Cell4, tsc_ServingCellRS_EPRE), + cs_CellPower(eutra_Cell12, -73) //@sic R5s140147 sic@ + }; + v_CellPowerList_AtT5 := { + cs_CellPower(eutra_Cell1, tsc_NonSuitableOffCellRS_EPRE), + cs_CellPower(eutra_Cell4, tsc_NonSuitableOffCellRS_EPRE), + cs_CellPower(eutra_Cell12, -73) //@sic R5s140147 sic@ + }; + + // Init variables + f_EUTRA_Init(c2); + f_EUTRA_CellInfo_SetPreambleTransMax(eutra_Cell1, v_PreambleTransMax); + f_EUTRA_CellInfo_SetPreambleTransMax(eutra_Cell4, v_PreambleTransMax); //@sic R5s140216, R5s140230 sic@ + f_EUTRA_CellInfo_SetPreambleTransMax(eutra_Cell12, v_PreambleTransMax); //@sic R5s140216, R5s140230 sic@ + + + v_Frequency_IE_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell1); + v_Frequency_IE_Cell4 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell4); + v_Frequency_IE_Cell12 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell12); //@sic R5s140147 sic@ + + v_ChBandDependency_Cell1 := f_EUTRA_BandDependentParam(v_Frequency_IE_Cell1.DL_ChBandwidth, v_Frequency_IE_Cell1.UL_ChBandwidth); + v_ChBandDependency_Cell4 := f_EUTRA_BandDependentParam(v_Frequency_IE_Cell4.DL_ChBandwidth, v_Frequency_IE_Cell4.UL_ChBandwidth); + v_ChBandDependency_Cell12 := f_EUTRA_BandDependentParam(v_Frequency_IE_Cell12.DL_ChBandwidth, v_Frequency_IE_Cell12.UL_ChBandwidth); //@sic R5s140147 sic@ + + v_CellInfo_Cell1 := f_EUTRA_CellInfo_Get(eutra_Cell1); + v_PhysCellId_Cell1 := f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell1); + v_CellIdentity_Cell1 := v_CellInfo_Cell1.CellIds.CellIdentity; + v_PLMN_Identity_Cell1 := v_CellInfo_Cell1.NAS_Parameters.Guti_Parameters.PLMN_Identity; + + v_CellInfo_Cell4 := f_EUTRA_CellInfo_Get(eutra_Cell4); + v_CellIdentity_Cell4 := v_CellInfo_Cell4.CellIds.CellIdentity; + v_PLMN_Identity_Cell4 := v_CellInfo_Cell4.NAS_Parameters.Guti_Parameters.PLMN_Identity; + v_PhysCellId_Cell4 := f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell4); + + v_CellInfo_Cell12 := f_EUTRA_CellInfo_Get(eutra_Cell12); //@sic R5s140147 sic@ + v_CellIdentity_Cell12 := v_CellInfo_Cell12.CellIds.CellIdentity; //@sic R5s140147 sic@ + v_PLMN_Identity_Cell12 := v_CellInfo_Cell12.NAS_Parameters.Guti_Parameters.PLMN_Identity; //@sic R5s140147 sic@ + v_PhysCellId_Cell12 := f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell12); //@sic R5s140147 sic@ + + v_EUTRA_FDD_TDD_CellInfo_Cell1 := f_EUTRA_CellInfo_GetFDD_TDD_Info(eutra_Cell1); + v_AntennaInfo_Cell1 := f_EUTRA_CellInfo_GetAntennaInfoDedicated (eutra_Cell1); + v_SR_PUCCH_ResourceIndex_Cell1 := f_EUTRA_CellInfo_GetSR_PUCCH_ResourceIndex (eutra_Cell1); + v_SR_ConfigIndex_Cell1 := f_EUTRA_CellInfo_GetSR_ConfigIndex (eutra_Cell1); + + v_EUTRA_FDD_TDD_CellInfo_Cell12 := f_EUTRA_CellInfo_GetFDD_TDD_Info(eutra_Cell12); //@sic R5s140147 sic@ + v_AntennaInfo_Cell12 := f_EUTRA_CellInfo_GetAntennaInfoDedicated (eutra_Cell12); //@sic R5s140147 sic@ + v_SR_PUCCH_ResourceIndex_Cell12 := f_EUTRA_CellInfo_GetSR_PUCCH_ResourceIndex (eutra_Cell12); //@sic R5s140147 sic@ + v_SR_ConfigIndex_Cell12 := f_EUTRA_CellInfo_GetSR_ConfigIndex (eutra_Cell12); //@sic R5s140147 sic@ + + v_Dl_CarrierFreq_Cell12 := v_Frequency_IE_Cell12.UL_DL_Earfcn.dl_CarrierFreq; //@sic R5s140147 sic@ + + v_RACH_ConfigDedicated := cs_RACH_ConfigDedicated(63); + + v_T304 := f_EUTRA_SetTimerToleranceMax(eutra_Cell2, rrcTimer, 1.0); //According to 36.508 cl. 4.6.5 Table 4.6.5-1 + + //Set EPRE for RF Initial + f_EUTRA_CellInfo_InitMaxReferencePower(eutra_Cell4, -79); + f_EUTRA_CellInfo_InitMaxReferencePower(eutra_Cell12, -73); //@sic R5s140147 sic@ + + // Create and configure Cells + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_CellConfig_Def(eutra_Cell4); + f_EUTRA_CellConfig_Def(eutra_Cell12); //@sic R5s140147 sic@ + + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT0); + + //The UE is registered on PLMN1 (Cell 1) using the procedure described in TS 36.508[18] + //clause 4.5.2.3 except that the ATTACH ACCEPT message indicates PLMN2 in + //the Equivalent PLMN list as described in Table 8.6.4.4.3.3-19 + f_EUTRA_SwitchOnUEandStartIP(eutra_Cell1); + + //Bring UE to inital state with Equivalent PLMN2 + f_EUTRA_IdleUpdated_WithEplmn (eutra_Cell1, + PREAMBLE, + cs_PLMN_List_1PLMN (f_Asn2Nas_PlmnId (f_EUTRA_CellInfo_GetGutiPLMN (eutra_Cell12)))); //@sic R5s140147 sic@ + + f_EUTRA_RbEst_Def(eutra_Cell1); + + f_EUTRA_TestBody_Set (true); + + //@siclog "Step 1-2" siclog@ + //The SS transmits an RRCConnectionReconfiguration message to setup intra and inter frequency measurement on Cell 1. + //The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(eutra_Cell1, + cs_RRCConnectionReconfiguration_8_6_4_4_Step1(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_Frequency_IE_Cell12.UL_DL_Earfcn.dl_CarrierFreq, //@sic R5s140147 sic@ + v_ChBandDependency_Cell12.AllowedMeasBandwidth)); //@sic R5s140147 sic@ + //@siclog "Step 3" siclog@ + //The SS changes Cell 28 parameter according to the row "T1" in table 8.6.4.4.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + + //@siclog "Step 4" siclog@ + //The UE transmits a MeasurementReport message on Cell 1 to report event A3 with the measured RSRP, RSRQ value for Cell 28. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_MeasurementReport(2, + ?, + ?, + cr_MeasResultNeighCells_measResultListEUTRA_1Entry(v_PhysCellId_Cell12, //@sic R5s140147 sic@ + omit, + ?, + ?)))); + //Configure Cell12 to not send response on RACH preamble reception on Cell 12 + f_EUTRA_SS_ConfigRachProcedure(eutra_Cell12, //@sic R5s140147 sic@ + omit, + cs_RachProcedureConfig_NoResponse(f_EUTRA_CellInfo_GetDL_ChBandwidth (eutra_Cell12))); //@sic R5s140147 sic@ + + //@siclog "Step 5" siclog@ + //The SS transmits an RRCConnectionReconfiguration message on Cell 1 to order the UE to perform inter frequency handover to Cell 12. + v_MobilityControlInfo := f_Generate_cs_MobilityControlInfo_HO(eutra_Cell12, //@sic R5s140147 sic@ + cs_CarrierFreqEUTRA(v_Dl_CarrierFreq_Cell12, omit), //@sic R5s140147 sic@ + -, + -, + -, + -, + -, + v_RACH_ConfigDedicated); + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, cs_TimingInfo_Now, cs_RRCConnectionReconfiguration_Common(v_RRC_TI, omit, v_MobilityControlInfo, + f_Generate_cs_508_RadioResourceConfigDedicated_HO (eutra_Cell12, n4), //@sic R5s140147 sic@ + cs_508SecurityConfigHO_IntraLTE))); //@sic R5s140147 sic@ + + f_EUTRA_SS_CommonCellConfig(eutra_Cell1, cas_PUCCH_Synch_Config_REQ(eutra_Cell1, cs_TimingInfo_Now, cs_PUCCH_Synch_None)); + + //EXCEPTION: In parallel to the events described in step 6 the steps specified in Table 8.6.4.4.3.2-3 should take place. + //EXCEPTION: The steps 1 and 2 below are repeated for the duration of T304. + //1. The UE attempts to perform the intra frequency handover using MAC Random Access Preamble on Cell 2. + //2. The SS does not respond. + t_T304Max.start(v_T304); + f_EUTRA_SS_SRBs_DRBs_Reset(eutra_Cell1, 100); //@sic R5s140216, R5s140230 sic@ + + v_ShortMAC_I := f_Calculate_ShortMAC(eutra_Cell1, eutra_Cell1); //@sic R5s140147 sic@ + //@siclog "Step 6" siclog@ + //The SS changes Cell 1 power levels according to the row "T2" in Table 8.6.4.4.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT2); + + t_T304Max.timeout; + + //Configure Cell12 to normal PRACH operation mode + // f_EUTRA_SS_ConfigRachProcedure_Def(eutra_Cell12, tsc_C_RNTI_Def); //@sic R5s140147 sic@ + + //@siclog "Step 7" siclog@ + //The UE transmits an RRCConnectionReestablishmentRequest message on Cell 1 + SRB.receive(car_SRB0_RrcPdu_IND(eutra_Cell1, + cr_508_RRCConnectionReestablishmentRequest(tsc_C_RNTI_Def, + v_PhysCellId_Cell1, + cr_ReestablishmentCause_HandoverFailure, + v_ShortMAC_I))); //@sic R5s140147 sic@ + //@siclog "Step 8" siclog@ + //The SS transmits an RRCConnectionReestablishment message to resume SRB1 operation and re-activate security on Cell 1. + v_AuthParams := f_EUTRA_Security_Get(); + v_AuthParams := f_EUTRA_SS_AS_ActivateSecurity_HO_Reest(eutra_Cell1, v_AuthParams, 0); + f_EUTRA_Security_Set(v_AuthParams); + f_EUTRA_RRC_RRCConnectionReestablishment_Def(eutra_Cell1); + + //@siclog "Step 9" siclog@ + //Check: Does the UE transmit an RRCConnectionReestablishmentComplete message with rlf-InfoAvailable included? + SRB.receive(car_SRB1_RrcPdu_IND (eutra_Cell1, + cr_RRCConnectionReestablishmentComplete_RLF_r9(tsc_RRC_TI_Def, true_))); //@sic R5s140147 sic@ + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.4.4 Step 9"); + + //@siclog "Step 10" siclog@ + //The SS transmits an RRCConnectionReconfiguration message to resume existing radio bearer on Cell 1. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_RRCConnReconfig_Resume_SRB2_DRBs(v_RRC_TI, + v_EUTRA_FDD_TDD_CellInfo_Cell1.cqi_ReportConfig, + v_EUTRA_FDD_TDD_CellInfo_Cell1.soundingRS_UL_Config, + v_AntennaInfo_Cell1, + v_SR_PUCCH_ResourceIndex_Cell1, + v_SR_ConfigIndex_Cell1))); + //@siclog "Step 11" siclog@ + //The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); + + //@siclog "Step 12" siclog@ + //The SS changes Cell 4 parameter according to the row "T3" in table 8.6.4.4.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT3); + + //@siclog "Step 13" siclog@ + //The UE transmits a MeasurementReport message on Cell 1 to report event A3 with the measured RSRP, RSRQ value for Cell 4. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_MeasurementReport(1, + ?, + ?, + cr_MeasResultNeighCells_measResultListEUTRA_1Entry(v_PhysCellId_Cell4, + omit, + ?, + ?)))); + + //@siclog "Step 14 and 15" siclog@ + //The SS transmits an RRCConnectionReconfiguration message on Cell 1 to order the UE to perform intra frequency handover to Cell 4. + //Check: Does the UE transmit an RRCConnectionReconfigurationComplete message on Cell 4 with rlf-InfoAvailable included? + v_MobilityControlInfo := f_Generate_cs_MobilityControlInfo_HO(eutra_Cell4, + -, + -, + -, + -, + -, + -, + v_RACH_ConfigDedicated); + v_RRCConnReconfigComplete := cr_RRCConnectionReconfigurationComplete_r10(tsc_RRC_TI_Def, true_); // @sic R5s140147: additional change sic@ + f_EUTRA_508RRC_IntraLTE_HO_InterCell_Common(eutra_Cell1, + eutra_Cell4, + cs_RRCConnectionReconfiguration_Common(v_RRC_TI, omit, v_MobilityControlInfo, + f_Generate_cs_508_RadioResourceConfigDedicated_HO (eutra_Cell4), + cs_508SecurityConfigHO_IntraLTE), + cs_RachProcedureConfig_CRNTI_HO(f_EUTRA_CellInfo_GetRAR_TA(eutra_Cell4), + f_EUTRA_CellInfo_GetDL_ChBandwidth(eutra_Cell4)), //@sic R5s140147 sic@ + -, + -, + -, + -, + -, + -, + v_RRCConnReconfigComplete); //@sic R5s140147 sic@ + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.4.4 Step 15"); + + //@siclog "Step 16" siclog@ + //The SS transmits a UEInformationRequest message with rlf-ReportReq set to true on Cell 4. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell4, + cs_TimingInfo_Now, + cs_508_UEInformationRequest_noLogMeasReport(tsc_RRC_TI_Def, -, true))); //@sic R5s140147 sic@ + + //@siclog "Step 17" siclog@ + //Check: Does the UE transmit a UEInformationResponse message on Cell 4 with rlf-Report included? + //Check: Does the reestablishmentCellId included in the UEInformationResponse message equal to the global cell identity of Cell 1? + v_FailedPCellId := cr_Cgi(v_PLMN_Identity_Cell12, v_CellIdentity_Cell12); //@sic R5s140147 sic@ + + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell4, + cr_UEInformationResponse_Common(tsc_RRC_TI_Def, -, cr_RLF_Report_1Entry(*, + *, + -, + *, + (cr_FailedPCellId_CellGlobalId(v_FailedPCellId), cr_FailedPCellId_Pci_Arfcn(v_PhysCellId_Cell12, v_Dl_CarrierFreq_Cell12)), //@sic R5s140147 sic@ + cr_Cgi(v_PLMN_Identity_Cell1,v_CellIdentity_Cell1), + *, + hof, + cr_Cgi(v_PLMN_Identity_Cell1,v_CellIdentity_Cell1))))); //@sic R5s140147 sic@ + + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.4.4 Step 17"); + + //@siclog "Step 18"&"Step 19" siclog@ + //The SS transmits an RRCConnectionReconfiguration message to activate the measurement gaps on Cell 4 + //The UE transmits an RRCConnectionReconfigurationComplete message to confirm the activation of the measurement gaps on Cell 4. + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(eutra_Cell4,cs_RRCConnectionReconfiguration_ResumeInterFreqMeas(v_RRC_TI)); //@sic R5s140492 sic@ + + //@siclog "Step 20" siclog@ + //The SS changes Cell 1, Cell 4 and Cell 28 parameters according to the row "T4" in table 8.6.4.4.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT4); + + //@siclog "Step 21" siclog@ + //The UE transmits a MeasurementReport message on Cell 4 to report event A3 with the measured RSRP, RSRQ value for Cell 28. + SRB.receive (car_SRB1_RrcPdu_IND(eutra_Cell4, cr_MeasurementReport(2, //@sic R5s140147 sic@ + ?, + ?, + cr_MeasResultNeighCells_measResultListEUTRA_1Entry(v_PhysCellId_Cell12, //@sic R5s140147 sic@ + omit, + ?, + ?)))); + + + //Configure Cell12 to not send response on RACH preamble reception on Cell 28 + f_EUTRA_SS_ConfigRachProcedure(eutra_Cell12, //@sic R5s140147 sic@ + omit, + cs_RachProcedureConfig_NoResponse(f_EUTRA_CellInfo_GetDL_ChBandwidth (eutra_Cell12))); //@sic R5s140147 sic@ + + //@siclog "Step 22" siclog@ + //The SS transmits an RRCConnectionReconfiguration message on Cell 4 to order the UE to perform inter frequency handover to Cell 28. + v_MobilityControlInfo := f_Generate_cs_MobilityControlInfo_HO(eutra_Cell12, //@sic R5s140147 sic@ + cs_CarrierFreqEUTRA(v_Dl_CarrierFreq_Cell12, omit), //@sic R5s140147 sic@ + -, + -, + -, + -, + -, + v_RACH_ConfigDedicated); + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell4, cs_TimingInfo_Now, cs_RRCConnectionReconfiguration_Common(v_RRC_TI, omit, v_MobilityControlInfo, + f_Generate_cs_508_RadioResourceConfigDedicated_HO (eutra_Cell12, n4), //@sic R5s140147 sic@ sic@ + cs_508SecurityConfigHO_IntraLTE))); //@sic R5s140147 sic@ sic@ + + + //EXCEPTION: In parallel to the events described in step 21 the steps specified in Table 8.6.4.4.3.2-3 should take place. + + //EXCEPTION: The steps 1 and 2 below are repeated for the duration of T304. + //1. The UE attempts to perform the intra frequency handover using MAC Random Access Preamble on Cell 2. + //2. The SS does not respond. + t_T304Max.start(v_T304); + + v_ShortMAC_I := f_Calculate_ShortMAC(eutra_Cell4, eutra_Cell12); //@sic R5s140147 sic@ + f_EUTRA_SS_SRBs_DRBs_Reset (eutra_Cell12); //@sic R5s140147 sic@ + + //@siclog "Step 23" siclog@ + //The SS changes Cell 4 power level according to the row "T5" in table 8.6.4.4.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT5); + + t_T304Max.timeout; //@sic R5s140147 sic@ + + //Configure Cell12 to normal PRACH operation mode + f_EUTRA_SS_ConfigRachProcedure_Def(eutra_Cell12, tsc_C_RNTI_Def); //@sic R5s140216, R5s140230, R5s140147 sic@ + + //@siclog "Step 24" siclog@ + //The UE transmits an RRCConnectionReestablishmentRequest message on Cell 12 + SRB.receive(car_SRB0_RrcPdu_IND(eutra_Cell12, //@sic R5s140147 sic@ + cr_508_RRCConnectionReestablishmentRequest(tsc_C_RNTI_Def2, //@sic R5s140147 sic@ + v_PhysCellId_Cell4, + cr_ReestablishmentCause_HandoverFailure, + v_ShortMAC_I))); //@sic R5s140147 sic@ + //@siclog "Step 25" siclog@ + //The SS transmits an RRCConnectionReestablishment message to resume SRB1 operation and re-activate security on Cell 28. + v_AuthParams := f_EUTRA_Security_Get(); + v_AuthParams := f_EUTRA_SS_AS_ActivateSecurity_HO_Reest(eutra_Cell12, v_AuthParams, 0); //@sic R5s140147 sic@ + f_EUTRA_Security_Set(v_AuthParams); + f_EUTRA_RRC_RRCConnectionReestablishment_Def(eutra_Cell12); //@sic R5s140147 sic@ + + //@siclog "Step 26" siclog@ + //Check: Does the UE transmit an RRCConnectionReestablishmentComplete message with rlf-InfoAvailable included? + SRB.receive(car_SRB1_RrcPdu_IND (eutra_Cell12, //@sic R5s140147 sic@ + cr_RRCConnectionReestablishmentComplete_RLF_r9(tsc_RRC_TI_Def, true_))); //@sic R5s140147 sic@ + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.4.4 Step 26"); + + //@siclog "Step 27" siclog@ + //The SS transmits an RRCConnectionReconfiguration message to resume existing radio bearer on Cell 12. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell12, //@sic R5s140147 sic@ + cs_TimingInfo_Now, + cs_RRCConnReconfig_Resume_SRB2_DRBs(v_RRC_TI, + v_EUTRA_FDD_TDD_CellInfo_Cell12.cqi_ReportConfig, //@sic R5s140147 sic@ + v_EUTRA_FDD_TDD_CellInfo_Cell12.soundingRS_UL_Config, //@sic R5s140147 sic@ + v_AntennaInfo_Cell12, //@sic R5s140147 sic@ + v_SR_PUCCH_ResourceIndex_Cell12, //@sic R5s140147 sic@ + v_SR_ConfigIndex_Cell12))); //@sic R5s140147 sic@ + + //@siclog "Step 28" siclog@ + //The UE transmits an RRCConnectionReconfigurationComplete message on Cell 12. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell12, cr_508_RRCConnectionReconfigurationComplete(v_RRC_TI))); //@sic R5s140147 sic@ + + //@siclog "Step 29-31" siclog@ + //The UE transmits a TRACKING AREA UPDATE REQUEST message on Cell 12. + //SS responds with a TRACKING AREA UPDATE ACCEPT message. + //NOTE: The TAU is accepted with PLMN1 listed as an Equivalent PLMN + //The UE transmits a TRACKING AREA UPDATE COMPLETE message. + f_EUTRA_ConnectedMode_TAU (eutra_Cell12, cs_PLMN_List_1PLMN (f_Asn2Nas_PlmnId (f_EUTRA_CellInfo_GetGutiPLMN (eutra_Cell1)))); //@sic R5s140147 sic@ + + //@siclog "Step 32" siclog@ + //The SS transmits a UEInformationRequest message with rlf-ReportReq set to true on Cell 12. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell12, //@sic R5s140147 sic@ + cs_TimingInfo_Now, + cs_508_UEInformationRequest_noLogMeasReport(tsc_RRC_TI_Def, -, true))); //@sic R5s140147 sic@ + + //@siclog "Step 33" siclog@ + //Check: Does the UE transmit a UEInformationResponse message on Cell 28 without rlf-Report included? + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell12, //@sic R5s140147 sic@ + cr_UEInformationResponse_Common(tsc_RRC_TI_Def, -, omit))); //@sic R5s140216, R5s140230 sic@ + //@siclog "Step 34" siclog@ + //Check: Does the test result of generic test procedure in TS 36.508 subclause 6.4.2.3 + //indicate that the UE is in E-UTRA RRC_CONNECTED state on Cell 12? + f_EUTRA_508Check_ConnectedState (eutra_Cell12); //@sic R5s140147 sic@ + + f_EUTRA_TestBody_Set(false); + + // Postamble + f_EUTRA_Postamble(eutra_Cell12, E2_CONNECTED); //@sic R5s140147 sic@ + } // end of f_TC_8_6_4_4_EUTRA + + /* + * @desc REFERENCE TS 36.523-1 clause 8.6.4.5 + * @status APPROVED (LTE_A) + */ + function f_TC_8_6_4_5_EUTRA() runs on EUTRA_PTC + { //Radio Link Failure logging / Reporting of ECGI of the PCell + var template (value) CellPowerList_Type v_CellPowerList_AtT0; + var template (value) CellPowerList_Type v_CellPowerList_AtT1; + var template (value) CellPowerList_Type v_CellPowerList_AtT2; + var template (value) CellPowerList_Type v_CellPowerList_AtT3; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var Frequency_IE_Type v_Frequency_IE_Cell2; + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell2; + var EUTRA_CellInfo_Type v_CellInfo_Cell1; + var EUTRA_CellInfo_Type v_CellInfo_Cell2; + var CellIdentity v_CellIdentity_Cell1; + var CellIdentity v_CellIdentity_Cell2; + var PLMN_Identity v_PLMN_Identity_Cell1; + var PLMN_Identity v_PLMN_Identity_Cell2; + var PhysCellId v_PhysCellId_Cell1; + var PhysCellId v_PhysCellId_Cell2; + var ShortMAC_I v_ShortMAC_I; + var float v_TimerValue; + var ARFCN_ValueEUTRA v_Dl_CarrierFreq_Cell2; + var EUTRA_SecurityParams_Type v_AuthParams; + var template CellGlobalIdEUTRA v_FailedPCellId; + var template (omit) MobilityControlInfo v_MobilityControlInfo; + + v_CellPowerList_AtT0 := { + cs_CellPower(eutra_Cell1, tsc_ServingCellRS_EPRE), + cs_CellPower(eutra_Cell2, tsc_Suitable_NeighbourIntraFreq_CellRS_EPRE) + }; + v_CellPowerList_AtT1 := { + cs_CellPower(eutra_Cell1, tsc_ServingCellRS_EPRE), + cs_CellPower(eutra_Cell2, -71) + }; + v_CellPowerList_AtT2 := { + cs_CellPower(eutra_Cell1, tsc_NonSuitableOffCellRS_EPRE), + cs_CellPower(eutra_Cell2, tsc_NonSuitableOffCellRS_EPRE) + }; + v_CellPowerList_AtT3 := { + cs_CellPower(eutra_Cell1, tsc_NonSuitableOffCellRS_EPRE), + cs_CellPower(eutra_Cell2, tsc_ServingCellRS_EPRE) + }; + + // Init variables + f_EUTRA_Init(c2); + + v_Frequency_IE_Cell2 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell2); + v_ChBandDependency_Cell2 := f_EUTRA_BandDependentParam(v_Frequency_IE_Cell2.DL_ChBandwidth, v_Frequency_IE_Cell2.UL_ChBandwidth); + + v_PhysCellId_Cell1 := f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell1); + v_PhysCellId_Cell2 := f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell2); + + v_CellInfo_Cell1 := f_EUTRA_CellInfo_Get(eutra_Cell1); + v_CellIdentity_Cell1 := v_CellInfo_Cell1.CellIds.CellIdentity; + v_PLMN_Identity_Cell1 := v_CellInfo_Cell1.NAS_Parameters.Guti_Parameters.PLMN_Identity; + + v_CellInfo_Cell2 := f_EUTRA_CellInfo_Get(eutra_Cell2); + v_CellIdentity_Cell2 := v_CellInfo_Cell2.CellIds.CellIdentity; + v_PLMN_Identity_Cell2 := v_CellInfo_Cell2.NAS_Parameters.Guti_Parameters.PLMN_Identity; + + v_Dl_CarrierFreq_Cell2 := v_Frequency_IE_Cell2.UL_DL_Earfcn.dl_CarrierFreq; + + v_TimerValue := f_EUTRA_SetTimerToleranceMax(eutra_Cell1, nonProtocolTimer, 5.0); + + //Set EPRE for RF Initial + f_EUTRA_CellInfo_InitMaxReferencePower(eutra_Cell2, -71); + + // Create and configure Cells + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_CellConfig_Def(eutra_Cell2); + + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT0); + + // Preamble + f_EUTRA_Preamble(eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_RbEst_Def(eutra_Cell1); + + f_EUTRA_TestBody_Set (true); + + //@siclog "Step 1 - Step 2" siclog@ + //The SS transmits an RRCConnectionReconfiguration message to setup intra frequency measurement on Cell 1. + //The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(eutra_Cell1, + cs_RRCConnectionReconfiguration_1Entry_IntraLTE(v_RRC_TI, + v_Frequency_IE_Cell2.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell2.AllowedMeasBandwidth)); + + //@siclog "Step 3" siclog@ + //The SS changes Cell 3 parameters according to the row "T1" in Table 8.6.4.5.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + + //@siclog "Step 4" siclog@ + //The UE transmits a MeasurementReport message on Cell 1. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_MeasurementReport_Eutra_1Entry_both(1, v_PhysCellId_Cell2))); + + //@siclog "Steps 5 and 6" siclog@ + //The SS transmits an RRCConnectionReconfiguration message on Cell 1 to order the UE to perform intra-frequency handover to Cell 2. + //The UE transmits an RRCConnectionReconfigurationComplete message on Cell 2. + //@sic R5s140067, R5s140069 sic@ + v_MobilityControlInfo := f_Generate_cs_MobilityControlInfo_HO(eutra_Cell2, + cs_CarrierFreqEUTRA(v_Dl_CarrierFreq_Cell2, omit), + -, + -, + -, + -, + -, + omit); + f_EUTRA_508RRC_IntraLTE_HO_InterCell_Common(eutra_Cell1, + eutra_Cell2, + cs_RRCConnectionReconfiguration_Common(v_RRC_TI, omit, v_MobilityControlInfo, + f_Generate_cs_508_RadioResourceConfigDedicated_HO (eutra_Cell2), + cs_508SecurityConfigHO_IntraLTE), + cs_RachProcedureConfig_CRNTI_HO(f_EUTRA_CellInfo_GetRAR_TA(eutra_Cell2), + f_EUTRA_CellInfo_GetDL_ChBandwidth(eutra_Cell2))); + + //Calculate ShortMAC-I to be received in RRCConnectionReestablishment Request from UE in Step 10 + v_ShortMAC_I := f_Calculate_ShortMAC(eutra_Cell2, eutra_Cell2); //@sic R5s140067, R5s140069 sic@ + + //@siclog "Step 7" siclog@ + //The SS changes Cell 1 and Cell 2 parameter according to the row "T2" in Table 8.6.4.5.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT2); + + f_EUTRA_SS_SRBs_DRBs_Reset (eutra_Cell2); //@sic R5s140067, R5s140069 sic@ + //@siclog "Step 8" siclog@ + //Wait for 5s to ensure that the UE detects T310 expiry. + f_Delay(v_TimerValue); + + //@siclog "Step 9" siclog@ + //The SS changes Cell 2 parameter according to the row "T3" in Table 8.6.4.5.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT3); + + //@siclog "Step 10" siclog@ + //The UE transmits an RRCConnectionReestablishmentRequest message on Cell 2. + SRB.receive(car_SRB0_RrcPdu_IND(eutra_Cell2, + cr_508_RRCConnectionReestablishmentRequest(tsc_C_RNTI_Def2, //@sic R5s140067, R5s140069 sic@ + v_PhysCellId_Cell2, + cr_ReestablishmentCause_OtherFailure, + v_ShortMAC_I))); + + v_AuthParams := f_EUTRA_Security_Get(); + v_AuthParams := f_EUTRA_SS_AS_ActivateSecurity_HO_Reest(eutra_Cell2, v_AuthParams, 0); + f_EUTRA_Security_Set(v_AuthParams); + + //@siclog "Step 11" siclog@ + //The SS transmits an RRCConnectionReestablishment message on Cell 2. + f_EUTRA_RRC_RRCConnectionReestablishment_Def(eutra_Cell2); + + //@siclog "Step 12" siclog@ + //The UE transmits an RRCConnectionReestablishmentComplete message with radio link failure information on Cell 2. + SRB.receive(car_SRB1_RrcPdu_IND (eutra_Cell2, + cr_RRCConnectionReestablishmentComplete_RLF_r9(tsc_RRC_TI_Def))); //@sic R5s140067, R5s140069 sic@ + + //@siclog "Step 13-14" siclog@ + //The SS transmits an RRCConnectionReconfiguration message on Cell 2 + //The UE transmits an RRCConnectionReconfigurationComplete message on Cell 2. + f_EUTRA_RRC_RRCConnectionReconfiguration_Resume_SRB2_DRBs (eutra_Cell2, tsc_RRC_TI_Def); + + //@siclog "Step 15" siclog@ + //The SS transmits a UEInformationRequest message on Cell 2. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell2, + cs_TimingInfo_Now, + cs_508_UEInformationRequest(tsc_RRC_TI_Def, -, true))); + + //@siclog "Step 16" siclog@ + //Check: Does the UE transmit a UEInformationResponse message on Cell 2? + v_FailedPCellId := cr_Cgi(v_PLMN_Identity_Cell2, v_CellIdentity_Cell2); + v_Dl_CarrierFreq_Cell2 := v_Frequency_IE_Cell2.UL_DL_Earfcn.dl_CarrierFreq; + + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell2, + cr_UEInformationResponse_Common(tsc_RRC_TI_Def, -, cr_RLF_Report_1Entry(*, + *, + -, + *, + (cr_FailedPCellId_CellGlobalId(v_FailedPCellId), + cr_FailedPCellId_Pci_Arfcn(v_PhysCellId_Cell2, v_Dl_CarrierFreq_Cell2)), + cr_Cgi(v_PLMN_Identity_Cell2, v_CellIdentity_Cell2), + *, + rlf, + cr_Cgi(v_PLMN_Identity_Cell1,v_CellIdentity_Cell1))))); //@sic R5s140067, R5s140069 sic@ + + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.4.5 Step 17"); + + //@siclog "Step 17" siclog@ + //Check: Does the test result of generic test procedure in TS 36.508 subclause 6.4.2.3 + //indicate that the UE is in E-UTRA RRC_CONNECTED state on Cell 2? + f_EUTRA_508Check_ConnectedState (eutra_Cell2); + + f_EUTRA_TestBody_Set (false); + + // Postamble + f_EUTRA_Postamble(eutra_Cell2, E2_CONNECTED); + + } // end of f_TC_8_6_4_5_EUTRA + + //@sic R5-144252 sic@ Deletion of TC 8.6.4.6 + + /* + * @desc REFERENCE TS 36.523-1 clause 8.6.4.7 + * @status APPROVED (LTE_A) + */ + function f_TC_8_6_4_7_EUTRA() runs on EUTRA_PTC + { //Radio Link Failure logging / Location information + var template (value) CellPowerList_Type v_CellPowerList_AtT0; + var template (value) CellPowerList_Type v_CellPowerList_AtT1; + var template (value) CellPowerList_Type v_CellPowerList_AtT2; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var Frequency_IE_Type v_Frequency_IE_f1; + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell2; + var EUTRA_CellInfo_Type v_CellInfo_Cell1; + var EUTRA_CellInfo_Type v_CellInfo_Cell2; + var CellIdentity v_CellIdentity_Cell1; + var CellIdentity v_CellIdentity_Cell2; + var PLMN_Identity v_PLMN_Identity_Cell1; + var PLMN_Identity v_PLMN_Identity_Cell2; + var PhysCellId v_PhysCellId_Cell1; + var PhysCellId v_PhysCellId_Cell2; + var ShortMAC_I v_ShortMAC_I; + var EUTRA_SecurityParams_Type v_AuthParams; + + v_CellPowerList_AtT0 := { + cs_CellPower (eutra_Cell1, tsc_ServingCellRS_EPRE), + cs_CellPower (eutra_Cell2, tsc_Suitable_NeighbourIntraFreq_CellRS_EPRE) + }; + v_CellPowerList_AtT1 := { + cs_CellPower (eutra_Cell2, -79) + }; + v_CellPowerList_AtT2 := { + cs_CellPower (eutra_Cell1, tsc_NonSuitableOffCellRS_EPRE) + }; + + // Init variables + f_EUTRA_Init(c2); + + v_Frequency_IE_f1 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell2); + v_ChBandDependency_Cell2 := f_EUTRA_BandDependentParam(v_Frequency_IE_f1.DL_ChBandwidth, v_Frequency_IE_f1.UL_ChBandwidth); + + v_PhysCellId_Cell1 := f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell1); + v_PhysCellId_Cell2 := f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell2); + + v_CellInfo_Cell1 := f_EUTRA_CellInfo_Get(eutra_Cell1); + v_CellIdentity_Cell1 := v_CellInfo_Cell1.CellIds.CellIdentity; + v_PLMN_Identity_Cell1 := v_CellInfo_Cell1.NAS_Parameters.Guti_Parameters.PLMN_Identity; + + v_CellInfo_Cell2 := f_EUTRA_CellInfo_Get(eutra_Cell2); + v_CellIdentity_Cell2 := v_CellInfo_Cell2.CellIds.CellIdentity; + v_PLMN_Identity_Cell2 := v_CellInfo_Cell2.NAS_Parameters.Guti_Parameters.PLMN_Identity; + + f_EUTRA_CellInfo_InitMaxReferencePower(eutra_Cell2, -79); + + // Create and configure Cells + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_CellConfig_Def(eutra_Cell2); + + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT0); + + // Preamble + f_EUTRA_Preamble(eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_RbEst_Def(eutra_Cell1); + + //Update UE LocationInformation + f_EUTRA_ProvideUE_LocationInformation(eutra_Cell1, RRC_CONNECTED); // @sic R5-131169 sic@ + + f_EUTRA_TestBody_Set (true); + + //@siclog "Step 1 - Step 2" siclog@ + //The SS transmits an RRCConnectionReconfiguration message to setup intra frequency measurement on Cell 1. + //The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(eutra_Cell1, + cs_RRCConnectionReconfiguration_1Entry_IntraLTE(v_RRC_TI, + v_Frequency_IE_f1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell2.AllowedMeasBandwidth)); + + //@siclog "Step 3" siclog@ + //The SS changes Cell 2 parameters according to the row "T1" in Table 8.6.4.7.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + + //@siclog "Step 4" siclog@ + //The UE transmits a MeasurementReport message on Cell 1. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, + cr_MeasurementReport_Eutra_1Entry_both(1, v_PhysCellId_Cell2))); + + + //Calculate ShortMAC-I to be received in RRCConnectionReestablishment Request from UE in Step 6 + v_ShortMAC_I := f_Calculate_ShortMAC(eutra_Cell1, eutra_Cell2); + + //@siclog "Step 5" siclog@ + //The SS changes Cell 1 parameter according to the row "T2" in Table 8.6.4.7.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT2); + + //@siclog "Step 6" siclog@ + //The UE transmits an RRCConnectionReestablishmentRequest message on Cell 2. + SRB.receive(car_SRB0_RrcPdu_IND(eutra_Cell2, + cr_508_RRCConnectionReestablishmentRequest(tsc_C_RNTI_Def, + v_PhysCellId_Cell1, + cr_ReestablishmentCause_OtherFailure, + v_ShortMAC_I))); + + v_AuthParams := f_EUTRA_Security_Get(); + v_AuthParams := f_EUTRA_SS_AS_ActivateSecurity_HO_Reest(eutra_Cell2, v_AuthParams, 0); + f_EUTRA_Security_Set(v_AuthParams); + + //@siclog "Step 7" siclog@ + //The SS transmits an RRCConnectionReestablishment message on Cell 2. + f_EUTRA_RRC_RRCConnectionReestablishment_Def(eutra_Cell2); + + //@siclog "Step 8" siclog@ + //The UE transmits an RRCConnectionReestablishmentComplete message on Cell 2. + SRB.receive(car_SRB1_RrcPdu_IND (eutra_Cell2, + cr_RRCConnectionReestablishmentComplete_RLF_r9(tsc_RRC_TI_Def))); + + //@siclog "Step 9" siclog@ + //The SS transmits an RRCConnectionReconfiguration message on Cell 2. + //@siclog "Step 10" siclog@ + //The UE transmits an RRCConnectionReconfigurationComplete message on Cell 2. + f_EUTRA_RRC_RRCConnectionReconfiguration_Resume_SRB2_DRBs(eutra_Cell2, tsc_RRC_TI_Def); + + //@siclog "Step 11" siclog@ + //The SS transmits a UEInformationRequest message on Cell 2. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell2, + cs_TimingInfo_Now, + cs_508_UEInformationRequest(tsc_RRC_TI_Def, -, true))); + + //@siclog "Step 12" siclog@ + //Check: Does the UE transmit a UEInformationResponse message on Cell 2? + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell2, + cr_UEInformationResponse_Common (tsc_RRC_TI_Def, -, cr_RLF_Report_1Entry(?, + *, + cr_MeasResultNeighCells_r9_EUTRA_1Entry(v_Frequency_IE_f1.UL_DL_Earfcn.dl_CarrierFreq, + v_PhysCellId_Cell2, + omit), + cr_LocationInfo_r10_LocationCoordinates((cr_Ellipsoid_Point_r10(?),cr_EllipsoidPointWithAltitude_r10(?))), + (cr_FailedPCellId_CellGlobalId(cr_Cgi(v_PLMN_Identity_Cell1, v_CellIdentity_Cell1)), + cr_FailedPCellId_Pci_Arfcn(v_PhysCellId_Cell1, v_Frequency_IE_f1.UL_DL_Earfcn.dl_CarrierFreq)), + cr_Cgi(v_PLMN_Identity_Cell2, v_CellIdentity_Cell2), omit, rlf, omit)))); //@sic R5s140741 sic@ + + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.4.7 Step 12"); + + //@siclog "Step 13" siclog@ + //Check: Does the test result of generic test procedure in TS 36.508 subclause 6.4.2.3 indicate that the UE is in E-UTRA RRC_CONNECTED state on Cell 2? + f_EUTRA_508Check_ConnectedState(eutra_Cell2); + + f_EUTRA_TestBody_Set (false); + + // Postamble + f_EUTRA_Postamble(eutra_Cell2, E2_CONNECTED); + + } // end of f_TC_8_6_4_7_EUTRA + + /* + * @desc REFERENCE TS 36.523-1 clause 8.6.4.8 + * @status + */ + function f_TC_8_6_4_8_EUTRA() runs on EUTRA_PTC + {//Radio Link Failure logging / Logging and reporting / Reporting at RRC connection establishment / PLMN list + var PhysCellId v_PhysCellId_Cell1; + var EUTRA_CellInfo_Type v_CellInfo_Cell1; + var EUTRA_CellInfo_Type v_CellInfo_Cell12; + var template CellGlobalIdEUTRA v_FailedPCellId; + var CellIdentity v_CellIdentity_Cell1; + var PLMN_Identity v_PLMN_Identity_Cell1; + var ARFCN_ValueEUTRA v_Dl_CarrierFreq_Cell1; + var Frequency_IE_Type v_Frequency_IE_Cell1; + var template (value) CellPowerList_Type v_CellPowerList_AtT0; + var template (value) CellPowerList_Type v_CellPowerList_AtT1; + var template (value) CellPowerList_Type v_CellPowerList_AtT2; + var B3_Type v_EpsUpdate_TypeValue; + var template (omit) EPS_BearerContextStatus v_EPS_ContextStatus; + var template AdditionalUpdateType v_AdditionalUpdateType_Expected; + var NAS_MSG_Indication_Type v_NasInd ; + var NAS_KsiValue v_KsiValue; + + v_CellPowerList_AtT0 := { + cs_CellPower(eutra_Cell1, tsc_ServingCellRS_EPRE) + }; + v_CellPowerList_AtT1 := { + cs_CellPower(eutra_Cell1, tsc_NonSuitableOffCellRS_EPRE), + cs_CellPower(eutra_Cell12, tsc_NonSuitableOffCellRS_EPRE) + }; + v_CellPowerList_AtT2 := { + cs_CellPower(eutra_Cell1, tsc_NonSuitableOffCellRS_EPRE), + cs_CellPower(eutra_Cell12, tsc_ServingCellRS_EPRE) + }; + + //Init variables + f_EUTRA_Init(c3); + + v_EpsUpdate_TypeValue := f_GetEPSTAUType (NORMAL); + v_AdditionalUpdateType_Expected := f_GetAdditionalUpdateType(); + + v_Frequency_IE_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell1); + + v_CellInfo_Cell1 := f_EUTRA_CellInfo_Get(eutra_Cell1); + v_PhysCellId_Cell1 := f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell1); + v_CellIdentity_Cell1 := v_CellInfo_Cell1.CellIds.CellIdentity; + v_PLMN_Identity_Cell1 := v_CellInfo_Cell1.NAS_Parameters.Guti_Parameters.PLMN_Identity; + v_Dl_CarrierFreq_Cell1 := v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq; + + v_CellInfo_Cell12 := f_EUTRA_CellInfo_Get(eutra_Cell12); + + //Create and configure Cells + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_CellConfig_Def(eutra_Cell12); + + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT0); + //The UE is registered on PLMN1 (Cell 1) using the procedure described in TS 36.508[18] + //clause 4.5.2.3 except that the ATTACH ACCEPT message indicates PLMN2 in + //the Equivalent PLMN list as described in Table 8.6.4.8.3.3-4 + f_EUTRA_SwitchOnUEandStartIP(eutra_Cell1); + + //Bring UE to inital state with Equivalent PLMN2 + f_EUTRA_IdleUpdated_WithEplmn (eutra_Cell1, + PREAMBLE, + cs_PLMN_List_1PLMN (f_Asn2Nas_PlmnId (f_EUTRA_CellInfo_GetGutiPLMN (eutra_Cell12)))); + + f_EUTRA_GenericRbEst_Common(eutra_Cell1, 0, 0, -, cs_MAC_MainConfig_Explicit(cs_MAC_MainConfig_Common)); + + f_EUTRA_TestBody_Set (true); + + //@siclog "Step 1" siclog@ + //The SS changes Cell 1 parameter according to the row "T1" in Table 8.6.4.8.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + + //@siclog "Step 2" siclog@ + //The SS waits for 12s to ensure that the UE detects T311 expiry. + f_Delay(12.0); + + //@siclog "Step 3" siclog@ + //The SS changes Cell 12 parameter according to the row "T2" in Table 8.6.4.8.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT2); + + //@siclog "Step 4" siclog@ + //The UE transmits an RRCConnectionRequest message on cell 12 to initiate a tracking area update procedure. + f_EUTRA_RRC_ConnectionRequest_Def(eutra_Cell12); + + //@siclog "Step 5" siclog@ + //SS transmit an RRCConnectionSetup message. + f_EUTRA_RRC_ConnectionSetup_Def (eutra_Cell12); + + //@siclog "Step 6" siclog@ + //The UE transmits an RRCConnectionSetupComplete message to confirm the successful completion of the connection establishment and a TRACKING AREA UPDATE REQUEST message is sent to update the registration of the actual tracking area. + //Check: Does the UE send a RRCConnectionSetupComplete message with rlf-InfoAvailable on Cell 12? + v_KsiValue := f_EUTRA_SecurityKSIasme_Get(); + v_NasInd := f_EUTRA_RRCConnectionSetupComplete_Def(eutra_Cell12, + cr_RRCConnectionSetupComplete_r10 (tsc_RRC_TI_Def, ?, -, -, -, true_), + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_508_TAU_Request(v_EpsUpdate_TypeValue, + v_KsiValue, + cr_DRXparameter_Any ('5C'O) ifpresent, + v_AdditionalUpdateType_Expected))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.4.8 Step 6"); + + //@siclog "Step 7-9" siclog@ + //Steps 4 to 6 of the generic test procedure in TS 36.508 subclause 6.4.2.7 are performed on Cell 11. + //NOTE: The UE performs a TAU procedure and the RRC connection is released. + v_EPS_ContextStatus := v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.epsBearerContextStatus; + f_EUTRA_TrackingAreaUpdate_Accept_Complete(eutra_Cell12, v_CellInfo_Cell12.NAS_Parameters.Guti_Parameters, v_EpsUpdate_TypeValue, v_EPS_ContextStatus, v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.addUpdateType, NORMAL); + f_EUTRA_RRC_ConnectionRelease(eutra_Cell12); + + //@siclog "Step 10-18" siclog@ + //Steps 1 to 9 of the generic radio bearer establishment procedure in TS 36.508 subclause 4.5.3.3 are executed to successfully complete the service request procedure on Cell 12. + f_EUTRA_RbEst_Def(eutra_Cell12); + + //@siclog "Step 19" siclog@ + //The SS sends a UEInformationRequest message to get rlf-ReportReq on Cell 12. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell12, + cs_TimingInfo_Now, + cs_508_UEInformationRequest(tsc_RRC_TI_Def, -, true))); + + //@siclog "Step 20" siclog@ + //Check: Does the UE send a UEInformationResponse message with rlf-Report on Cell 12? + v_FailedPCellId := cr_Cgi(v_PLMN_Identity_Cell1, v_CellIdentity_Cell1); + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell12, + cr_508_UEInformationResponse(tsc_RRC_TI_Def, + -, + cr_RLF_Report_1Entry_r11(?, + *, + omit, + *, + (cr_FailedPCellId_CellGlobalId(v_FailedPCellId), cr_FailedPCellId_Pci_Arfcn(v_PhysCellId_Cell1, v_Dl_CarrierFreq_Cell1)), + cr_Cgi(v_PLMN_Identity_Cell1,v_CellIdentity_Cell1), + *, + *, + *)))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.4.8 Step 20"); + + f_EUTRA_TestBody_Set(false); + + // Postamble + f_EUTRA_Postamble(eutra_Cell12, E2_CONNECTED); + + } // end of f_TC_8_6_4_8_EUTRA + + /* + * @desc REFERENCE TS 36.523-1 clause 8.6.4.9 + * @status + */ + function f_TC_8_6_4_9_EUTRA() runs on EUTRA_PTC + {//Radio Link Failure logging / Logging and reporting / Reporting at intra LTE handover / PLMN list + var PhysCellId v_PhysCellId_Cell1; + var PhysCellId v_PhysCellId_Cell12; + var EUTRA_CellInfo_Type v_CellInfo_Cell1; + var EUTRA_CellInfo_Type v_CellInfo_Cell12; + var CellIdentity v_CellIdentity_Cell1; + var PLMN_Identity v_PLMN_Identity_Cell1; + var Frequency_IE_Type v_Frequency_IE_Cell1; + var Frequency_IE_Type v_Frequency_IE_Cell12; + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell1; + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell12; + var template (value) CellPowerList_Type v_CellPowerList_AtT0; + var template (value) CellPowerList_Type v_CellPowerList_AtT1; + var template (value) CellPowerList_Type v_CellPowerList_AtT2; + var template (value) CellPowerList_Type v_CellPowerList_AtT3; + var ShortMAC_I v_ShortMAC_I; + var ARFCN_ValueEUTRA v_Dl_CarrierFreq_Cell1; + var EUTRA_SecurityParams_Type v_Auth_Params; + var B3_Type v_EpsUpdate_TypeValue; + var template (omit) EPS_BearerContextStatus v_EPS_ContextStatus; + var template AdditionalUpdateType v_AdditionalUpdateType; + var NAS_MSG_Indication_Type v_NasInd ; + var SRB_COMMON_IND v_ReceivedAsp; + + v_CellPowerList_AtT0 := { + cs_CellPower(eutra_Cell1, tsc_ServingCellRS_EPRE) + }; + v_CellPowerList_AtT1 := { + cs_CellPower(eutra_Cell1, tsc_NonSuitableOffCellRS_EPRE), + cs_CellPower(eutra_Cell12, tsc_NonSuitableOffCellRS_EPRE) + }; + v_CellPowerList_AtT2 := { + cs_CellPower(eutra_Cell1, tsc_ServingCellRS_EPRE) + }; + v_CellPowerList_AtT3 := { + cs_CellPower(eutra_Cell12, -73) + }; + + //Init variables + f_EUTRA_Init(c3); + + v_EpsUpdate_TypeValue := f_GetEPSTAUType(NORMAL); + v_AdditionalUpdateType := f_GetAdditionalUpdateType (); + + v_Frequency_IE_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell1); + v_ChBandDependency_Cell1 := f_EUTRA_BandDependentParam(v_Frequency_IE_Cell1.DL_ChBandwidth, v_Frequency_IE_Cell1.UL_ChBandwidth); + + v_Frequency_IE_Cell12 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell12); + v_ChBandDependency_Cell12 := f_EUTRA_BandDependentParam(v_Frequency_IE_Cell12.DL_ChBandwidth, v_Frequency_IE_Cell12.UL_ChBandwidth); + + v_CellInfo_Cell1 := f_EUTRA_CellInfo_Get(eutra_Cell1); + v_PhysCellId_Cell1 := f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell1); + v_CellIdentity_Cell1 := v_CellInfo_Cell1.CellIds.CellIdentity; + v_PLMN_Identity_Cell1 := v_CellInfo_Cell1.NAS_Parameters.Guti_Parameters.PLMN_Identity; + v_Dl_CarrierFreq_Cell1 := v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq; + + v_CellInfo_Cell12 := f_EUTRA_CellInfo_Get(eutra_Cell12); + v_PhysCellId_Cell12 := f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell12); + + f_EUTRA_CellInfo_InitMaxReferencePower (eutra_Cell12, -73); + + //Create and configure Cells + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_CellConfig_Def(eutra_Cell12); + + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT0); + //The UE is registered on PLMN1 (Cell 1) using the procedure described in TS 36.508[18] + //clause 4.5.2.3 except that the ATTACH ACCEPT message indicates PLMN2 in + //the Equivalent PLMN list as described in Table 8.6.4.9.3.3-8 + f_EUTRA_SwitchOnUEandStartIP(eutra_Cell1); + + //Bring UE to inital state with Equivalent PLMN2 + f_EUTRA_IdleUpdated_WithEplmn (eutra_Cell1, + PREAMBLE, + cs_PLMN_List_1PLMN (f_Asn2Nas_PlmnId (f_EUTRA_CellInfo_GetGutiPLMN (eutra_Cell12)))); + + f_EUTRA_RbEst_Def(eutra_Cell1); + + f_EUTRA_TestBody_Set (true); + + //@siclog "Step 1" siclog@ + //The SS changes Cell 1 parameter according to the row "T1" in Table 8.6.4.9.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + + //@siclog "Step 2" siclog@ + //The SS waits for 3s to ensure that the UE detects T310 expiry. + f_Delay(3.0); + + //@siclog "Step 3" siclog@ + //The SS changes Cell 1 parameter according to the row "T2" in Table 8.6.4.9.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT2); + + //@siclog "Step 4" siclog@ + //The UE transmits an RRCConnectionReestablishmentRequest message on Cell 1. + v_ShortMAC_I := f_Calculate_ShortMAC (eutra_Cell1, eutra_Cell1); + SRB.receive(car_SRB0_RrcPdu_IND(eutra_Cell1, + cr_508_RRCConnectionReestablishmentRequest(tsc_C_RNTI_Def, + v_PhysCellId_Cell1, + cr_ReestablishmentCause_OtherFailure, + v_ShortMAC_I))); + v_Auth_Params := f_EUTRA_Security_Get(); + v_Auth_Params := f_EUTRA_SS_AS_ActivateSecurity_HO_Reest(eutra_Cell1, v_Auth_Params, 0); + f_EUTRA_Security_Set(v_Auth_Params); + + //@siclog "Step 5" siclog@ + //The SS transmit an RRCConnectionReestablishment message. + f_EUTRA_RRC_RRCConnectionReestablishment_Def(eutra_Cell1); + + //@siclog "Step 6" siclog@ + //The UE transmits RRCConnectionReestablishmentComplete message. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, + cr_508_RRCConnectionReestablishmentComplete(tsc_RRC_TI_Def))); + + //@siclog "Step 7 - 8" siclog@ + //The SS transmits an RRCConnectionReconfiguration message to resume existing radio bearer on Cell 1(Measconfig). + //The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(eutra_Cell1, + cs_RRCConnectionReconfiguration_8_6_4_9_Step7(tsc_RRC_TI_Def, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_Frequency_IE_Cell12.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell12.AllowedMeasBandwidth, + f_Generate_cs_508_RadioResourceConfigDedicated_HO (eutra_Cell1))); + + //@siclog "Step 9" siclog@ + //The SS changes Cell 1 and Cell 12 parameter according to the row "T3" in Table 8.6.4.9.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT3); + + //@siclog "Step 10" siclog@ + //The UE transmits a MeasurementReport message on Cell 1 to report event A3 with the measured RSRP, RSRQ value for Cell 12. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, + cr_MeasurementReport_Eutra_1Entry_both(1, v_PhysCellId_Cell12))); + + //Get security parameters + v_Auth_Params := f_EUTRA_Security_Get (); + + //Inform the SS about the HO and about the source cell id + f_EUTRA_SS_PdcpHandoverCtrl(eutra_Cell1, cas_PdcpHandoverInit_REQ(eutra_Cell1, eutra_Cell12)); + + //Configure C-RNTI based contention resolution in cell 12 + f_EUTRA_SS_ConfigRachProcedure_HO (eutra_Cell12, cs_TimingInfo_Now, tsc_C_RNTI_Def2); + + //Activate RRC security at SS Cell 12 (SRB 1, 2 and 1 AM DRB) + v_Auth_Params := f_EUTRA_SS_AS_ActivateSecurity_HO_Reest (eutra_Cell12, v_Auth_Params, 0); + f_EUTRA_Security_Set (v_Auth_Params); + + //Stop periodic sending of TA command on source cell + f_EUTRA_SS_CommonCellConfig(eutra_Cell1, cas_PUCCH_Synch_Config_REQ(eutra_Cell1, cs_TimingInfo_Now, cs_PUCCH_Synch_None)); + + //Configure UL grant configuration ("OnSR", periodic TA is NOT started) in target cell (cell 12) + f_EUTRA_SS_CommonCellConfig(eutra_Cell12, cas_ULGrantAllocation_Def_REQ(eutra_Cell12, cs_TimingInfo_Now, cs_PUCCH_Synch_None)); + + //@siclog "Step 11" siclog@ + //The SS transmits an RRCConnectionReconfiguration message on Cell 1 to order the UE to perform inter frequency handover to Cell 12. + f_EUTRA_RRC_ConnReconfigHO_IntraLTE_Mobility (eutra_Cell1, + eutra_Cell12, + f_Generate_cs_508_MobilityControlInfo_HO(eutra_Cell12)); + + //@siclog "Step 12" siclog@ + //Check: Does the UE send a RRCConnectionSetupComplete message with rlf-InfoAvailable on Cell 12? + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell12, cr_RRCConnectionReconfigurationComplete_r10(tsc_RRC_TI_Def,true_))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.4.9 Step 12"); + + //Start periodic sending of TA command in target cell + f_EUTRA_SS_CommonCellConfig(eutra_Cell12, cas_PUCCH_Synch_Config_REQ(eutra_Cell12, cs_TimingInfo_Now, cs_PUCCH_Synch_Auto_Def)); + + //Inform the SS about completion of the HO (e.g. to trigger PDCP STATUS PDU) + f_EUTRA_SS_PdcpHandoverCtrl(eutra_Cell12, cas_PdcpHandoverComplete_REQ(eutra_Cell12)); + + //Reset SRBs and DRBs of source cell (cell 1) + f_EUTRA_SS_SRBs_DRBs_Reset (eutra_Cell1); + + //@siclog "Step 13 - 14" siclog@ + //Steps 4 to 5 of the generic test procedure in TS 36.508 subclause 6.4.2.7 are performed on Cell 12. + //NOTE: The UE performs a TAU procedure. + SRB.receive(car_SRB2_NasPdu_IND(eutra_Cell12, + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_508_TAU_Request(v_EpsUpdate_TypeValue, + f_EUTRA_SecurityKSIasme_Get(), + cr_DRXparameter_Any ('5C'O) ifpresent, + v_AdditionalUpdateType)))) -> value v_ReceivedAsp; + v_NasInd := v_ReceivedAsp.Signalling.Nas[0] ; + v_EPS_ContextStatus := v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.epsBearerContextStatus; + f_EUTRA_TrackingAreaUpdate_Accept_Complete(eutra_Cell12, v_CellInfo_Cell12.NAS_Parameters.Guti_Parameters, v_EpsUpdate_TypeValue, v_EPS_ContextStatus, v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.addUpdateType, NORMAL); + + //@siclog "Step 15" siclog@ + //The SS sends a UEInformationRequest message to get rlf-ReportReq on Cell 12. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell12, + cs_TimingInfo_Now, + cs_508_UEInformationRequest(tsc_RRC_TI_Def, -, true))); + + //@siclog "Step 16" siclog@ + //Check: Does the UE send a UEInformationResponse message with rlf-Report on Cell 12? + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell12, + cr_508_UEInformationResponse(tsc_RRC_TI_Def, + -, + cr_RLF_Report_1Entry_r11(?, + *, + omit, + *, + (cr_FailedPCellId_CellGlobalId(cr_Cgi(v_PLMN_Identity_Cell1, v_CellIdentity_Cell1)), cr_FailedPCellId_Pci_Arfcn(v_PhysCellId_Cell1, v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq)), + cr_Cgi(v_PLMN_Identity_Cell1, v_CellIdentity_Cell1), ?, rlf, + omit, + -, + cr_RLF_Report_basicFields_r11(?, t310_Expiry, ?), + omit,omit)))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.4.9 Step 16"); + + f_EUTRA_TestBody_Set(false); + + // Postamble + f_EUTRA_Postamble(eutra_Cell12, E2_CONNECTED); + + } // end of f_TC_8_6_4_9_EUTRA + + /* + * @desc REFERENCE TS 36.523-1 clause 8.6.4.10 + * @status + */ + function f_TC_8_6_4_10_EUTRA() runs on EUTRA_PTC + {//Radio Link Failure logging / Logging and reporting / Reporting at RRC connection re-establishment / PLMN list + var PhysCellId v_PhysCellId_Cell1; + var PhysCellId v_PhysCellId_Cell12; + var EUTRA_CellInfo_Type v_CellInfo_Cell1; + var EUTRA_CellInfo_Type v_CellInfo_Cell12; + var CellIdentity v_CellIdentity_Cell1; + var CellIdentity v_CellIdentity_Cell12; + var PLMN_Identity v_PLMN_Identity_Cell1; + var PLMN_Identity v_PLMN_Identity_Cell12; + var Frequency_IE_Type v_Frequency_IE_Cell1; + var Frequency_IE_Type v_Frequency_IE_Cell12; + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell1; + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell12; + var template (value) CellPowerList_Type v_CellPowerList_AtT0; + var template (value) CellPowerList_Type v_CellPowerList_AtT1; + var template (value) CellPowerList_Type v_CellPowerList_AtT2; + var ShortMAC_I v_ShortMAC_I; + var ARFCN_ValueEUTRA v_Dl_CarrierFreq_Cell1; + var EUTRA_SecurityParams_Type v_Auth_Params; + + v_CellPowerList_AtT0 := { + cs_CellPower(eutra_Cell1, tsc_ServingCellRS_EPRE) + }; + v_CellPowerList_AtT1 := { + cs_CellPower(eutra_Cell1, tsc_NonSuitableOffCellRS_EPRE), + cs_CellPower(eutra_Cell12, tsc_NonSuitableOffCellRS_EPRE) + }; + v_CellPowerList_AtT2 := { + cs_CellPower(eutra_Cell12, tsc_ServingCellRS_EPRE) + }; + + // Init variables + f_EUTRA_Init(c3); + + v_Frequency_IE_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell1); + v_ChBandDependency_Cell1 := f_EUTRA_BandDependentParam(v_Frequency_IE_Cell1.DL_ChBandwidth, v_Frequency_IE_Cell1.UL_ChBandwidth); + + v_Frequency_IE_Cell12 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell12); + v_ChBandDependency_Cell12 := f_EUTRA_BandDependentParam(v_Frequency_IE_Cell12.DL_ChBandwidth, v_Frequency_IE_Cell12.UL_ChBandwidth); + + v_CellInfo_Cell1 := f_EUTRA_CellInfo_Get(eutra_Cell1); + v_PhysCellId_Cell1 := f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell1); + v_CellIdentity_Cell1 := v_CellInfo_Cell1.CellIds.CellIdentity; + v_PLMN_Identity_Cell1 := v_CellInfo_Cell1.NAS_Parameters.Guti_Parameters.PLMN_Identity; + v_Dl_CarrierFreq_Cell1 := v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq; + + v_CellInfo_Cell12 := f_EUTRA_CellInfo_Get(eutra_Cell12); + v_PhysCellId_Cell12 := f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell12); + v_CellIdentity_Cell12 := v_CellInfo_Cell12.CellIds.CellIdentity; + v_PLMN_Identity_Cell12 := v_CellInfo_Cell12.NAS_Parameters.Guti_Parameters.PLMN_Identity; + + //Create and configure Cells + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_CellConfig_Def(eutra_Cell12); + + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT0); + //The UE is registered on PLMN1 (Cell 1) using the procedure described in TS 36.508[18] + //clause 4.5.2.3 except that the ATTACH ACCEPT message indicates PLMN2 in + //the Equivalent PLMN list as described in Table 8.6.4.10.3.3-4 + f_EUTRA_SwitchOnUEandStartIP(eutra_Cell1); + + //Bring UE to inital state with Equivalent PLMN2 + f_EUTRA_IdleUpdated_WithEplmn (eutra_Cell1, + PREAMBLE, + cs_PLMN_List_1PLMN (f_Asn2Nas_PlmnId (f_EUTRA_CellInfo_GetGutiPLMN (eutra_Cell12)))); + + f_EUTRA_RbEst_Def(eutra_Cell1); + + f_EUTRA_TestBody_Set (true); + + //@siclog "Step 1" siclog@ + //The SS changes Cell 1 parameter according to the row "T1" in Table 8.6.4.10.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + + //@siclog "Step 2" siclog@ + //The SS waits for 3s to ensure that the UE detects T310 expiry. + f_Delay(3.0); + + //@siclog "Step 3" siclog@ + //The SS changes Cell 1 parameter according to the row "T2" in Table 8.6.4.10.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT2); + + //@siclog "Step 4" siclog@ + //The UE transmits an RRCConnectionReestablishmentRequest message on Cell 1. + v_ShortMAC_I := f_Calculate_ShortMAC (eutra_Cell1, eutra_Cell12); + SRB.receive(car_SRB0_RrcPdu_IND(eutra_Cell12, + cr_508_RRCConnectionReestablishmentRequest(tsc_C_RNTI_Def, + v_PhysCellId_Cell1, + cr_ReestablishmentCause_OtherFailure, + v_ShortMAC_I))); + + v_Auth_Params := f_EUTRA_Security_Get(); + v_Auth_Params := f_EUTRA_SS_AS_ActivateSecurity_HO_Reest(eutra_Cell12, v_Auth_Params, 0); + f_EUTRA_Security_Set(v_Auth_Params); + + //@siclog "Step 5" siclog@ + //The SS transmit an RRCConnectionReestablishment message. + f_EUTRA_RRC_RRCConnectionReestablishment_Def(eutra_Cell12); + + //@siclog "Step 6" siclog@ + //The UE transmits RRCConnectionReestablishmentComplete message. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell12, + cr_RRCConnectionReestablishmentComplete_r10(tsc_RRC_TI_Def, -, true_))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.4.10 Step 6"); + + //@siclog "Step 7 - 8" siclog@ + //The SS transmits an RRCConnectionReconfiguration message to resume existing radio bearer on Cell 12 + //The UE transmits an RRCConnectionReconfigurationComplete message on Cell 12. + f_EUTRA_RRC_RRCConnectionReconfiguration_Resume_SRB2_DRBs(eutra_Cell12, tsc_RRC_TI_Def); + + //@siclog "Step 9" siclog@ + //The SS sends a UEInformationRequest message to get rlf-ReportReq on Cell 12. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell12, + cs_TimingInfo_Now, + cs_508_UEInformationRequest(tsc_RRC_TI_Def, -, true))); + + //@siclog "Step 10" siclog@ + //Check: Does the UE send a UEInformationResponse message with rlf-Report on Cell 12? + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell12, + cr_508_UEInformationResponse(tsc_RRC_TI_Def, + -, + cr_RLF_Report_1Entry_r11(?, + *, + omit, + *, + (cr_FailedPCellId_CellGlobalId(cr_Cgi(v_PLMN_Identity_Cell1, v_CellIdentity_Cell1)), cr_FailedPCellId_Pci_Arfcn(v_PhysCellId_Cell1, v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq)), + cr_Cgi(v_PLMN_Identity_Cell12, v_CellIdentity_Cell12), ?, rlf, + *, + -, + cr_RLF_Report_basicFields_r11(? ,t310_Expiry, ?), + omit,omit)))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.4.10 Step 10"); + + f_EUTRA_TestBody_Set(false); + + // Postamble + f_EUTRA_Postamble(eutra_Cell12, E2_CONNECTED); + + } // end of f_TC_8_6_4_10_EUTRA + + /* + * @desc REFERENCE TS 36.523-1 clause 8.6.5.1 + * @status APPROVED (LTE_A) + */ + function f_TC_8_6_5_1_EUTRA() runs on EUTRA_PTC + { //Radio Link Failure logging / Reporting at UTRAN Inter-RAT handover + var integer v_T1_RS_EPRE_Cell1 := -80; + var integer v_T2_RS_EPRE_Cell1 := tsc_NonSuitableOffCellRS_EPRE; + var integer v_T3_RS_EPRE_Cell1 := -70; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var IRAT_CoOrd_SysInfo_Type v_UTRANSysInfo; + var UTRAN_FDD_TDD_Type v_UTRAN_FDD_TDD; + var integer v_UTRAN_ARFCN_f8; + var integer v_UTRAN_PhysChId_Cell5; + var EUTRA_SecurityParams_Type v_Auth_Params; + var EUTRA_SecurityParams_Type v_Auth_Params_Native; + var NasCountInfo_Type v_NasCountInfo; + var template(present) UL_DCCH_Message v_MeasRpt; + var template(present) MeasResultList2UTRA_r9 v_MeasResList2UTRA_r9; + var template (present) MeasResultUTRA.physCellId v_MeasResultUTRA_PhysCellId; + var Frequency_IE_Type v_Frequency_IE_Cell1; + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell1; + var CellIdentity v_CellIdentity_Cell1; + var PhysCellId v_PhysCellId_Cell1; + var PLMN_Identity v_PLMN_Identity_Cell1; + var EUTRA_CellInfo_Type v_CellInfo_Cell1; + + //Initialize testcase + f_EUTRA_Init(c4); + + v_Frequency_IE_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell1); + v_ChBandDependency_Cell1 := f_EUTRA_BandDependentParam(v_Frequency_IE_Cell1.DL_ChBandwidth, v_Frequency_IE_Cell1.UL_ChBandwidth); + + v_PhysCellId_Cell1 := f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell1); + + v_CellInfo_Cell1 := f_EUTRA_CellInfo_Get(eutra_Cell1); + v_CellIdentity_Cell1 := v_CellInfo_Cell1.CellIds.CellIdentity; + v_PLMN_Identity_Cell1 := v_CellInfo_Cell1.NAS_Parameters.Guti_Parameters.PLMN_Identity; + + //Acquire information of UTRAN cells + v_UTRANSysInfo := f_IRAT_WaitForCoOrd_SysInfo(UTRAN); + if (ischosen(v_UTRANSysInfo.Utran[0].FDD)) { + v_UTRAN_FDD_TDD := UTRAN_FDD; + v_UTRAN_ARFCN_f8 := v_UTRANSysInfo.Utran[0].FDD.Freq; + v_UTRAN_PhysChId_Cell5 := v_UTRANSysInfo.Utran[0].FDD.ScramblingCode; + } + else { + v_UTRAN_FDD_TDD := UTRAN_TDD; + v_UTRAN_ARFCN_f8 := v_UTRANSysInfo.Utran[0].TDD.Freq; + v_UTRAN_PhysChId_Cell5 := v_UTRANSysInfo.Utran[0].TDD.CellParametersID; + } + + //Set EPRE for RF Initial + f_EUTRA_CellInfo_InitMaxReferencePower(eutra_Cell1, v_T3_RS_EPRE_Cell1); + + //Create and configure Cell1 + f_EUTRA_CellConfig_Def(eutra_Cell1); + + //Send relevant EUTRA cell info to UTRAN PTC + f_IRAT_Send_EUTRA_SysInfoToOtherPort(UTRAN, + f_EUTRA_CellInfo_GetEARFCN_DL(eutra_Cell1), + f_ConvertDL_BandwidthToInteger (f_EUTRA_CellInfo_GetDL_ChBandwidth (eutra_Cell1)), + cs_EUTRA_HOInfo (f_ConvertUL_BandwidthToInteger (f_EUTRA_CellInfo_GetUL_ChBandwidth (eutra_Cell1)), + f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell1), + f_EUTRA_CellInfo_GetRootSequenceIndex (eutra_Cell1))); + //Preamble + f_EUTRA_Preamble(eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_RbEst_Def(eutra_Cell1); + + f_EUTRA_SendAuthParameters(eutra_Cell1, UTRAN); + + f_EUTRA_TestBody_Set(true); + + //@siclog "Step 1-2" siclog@ + //The SS transmits an RRCConnectionReconfiguration message to setup inter-RAT measurement on Cell 1. + //The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + if (v_UTRAN_FDD_TDD == UTRAN_FDD) { + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(eutra_Cell1, + cs_RRCConnectionReconfiguration_8_6_5_1_Step1_FDD(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_UTRAN_ARFCN_f8, + v_UTRAN_PhysChId_Cell5)); + } + else{ + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(eutra_Cell1, + cs_RRCConnectionReconfiguration_8_6_5_1_Step1_TDD(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_UTRAN_ARFCN_f8, + v_UTRAN_PhysChId_Cell5)); + } + + //@siclog "Step 3" siclog@ + //The SS changes Cell 1 and Cell 5 parameters according to the row "T1" in Table 8.6.5.1.3.2-1. + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + f_EUTRA_SetCellPower(eutra_Cell1, v_T1_RS_EPRE_Cell1); + + //@siclog "Step 4" siclog@ + //The UE transmits a MeasurementReport message on Cell 1. + if (v_UTRAN_FDD_TDD == UTRAN_FDD) { + v_MeasRpt := cr_MeasurementReport_Utran_1Entry_FDD_RSCP(1, v_UTRAN_PhysChId_Cell5);//@sic R5-125789 sic@ + } + else { + v_MeasRpt := cr_MeasurementReport_Utran_1Entry_TDD(1, v_UTRAN_PhysChId_Cell5); + } + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, v_MeasRpt)); + + //Backup Auth params and NAS count. + v_Auth_Params := f_EUTRA_Security_Get (); + v_Auth_Params_Native := v_Auth_Params; + v_NasCountInfo := f_EUTRA_SS_NAS_CountGet(); + + //@siclog "Step 5" siclog@ + //The SS changes Cell 1 parameter according to the row "T2" in Table 8.6.5.1.3.2-1. + f_EUTRA_SetCellPower(eutra_Cell1, v_T2_RS_EPRE_Cell1); + + f_EUTRA_SS_SRBs_DRBs_Reset(eutra_Cell1); //@sic R5s140305 sic@ + f_EUTRA_InterRAT_InitialiseAuthParams (UTRAN); //@sic R5s140305 sic@ + + //Wait for trigger from UTRAN side at step 14 + f_IRAT_WaitForCoOrd_Trigger(UTRAN); + + //@siclog "Step 14" siclog@ + //The SS changes Cell 1 and Cell 5 parameters according to the row "T3" in Table 8.6.5.1.3.2-1. + f_EUTRA_SetCellPower(eutra_Cell1, v_T3_RS_EPRE_Cell1); + + f_EUTRA_SS_ConfigRachProcedure(eutra_Cell1, tsc_C_RNTI_Def2, cs_RachProcedureConfig_CRNTI_Dedicated (f_EUTRA_CellInfo_GetRAR_TA(eutra_Cell1), f_EUTRA_CellInfo_GetDL_ChBandwidth(eutra_Cell1) )); //@sic R5s140305 sic@ + + f_EUTRA_CellInfo_SetC_RNTI ( eutra_Cell1, tsc_C_RNTI_Def2 ); //@sic R5s140305 sic@ + + v_Auth_Params := f_EUTRA_Security_Get(); + v_Auth_Params := f_EUTRA_MappedContext_HO_Init(v_Auth_Params, v_Auth_Params.AuthParams); + v_Auth_Params.AS_Ciphering.ActTimeList := f_EUTRA_RRC_CipherActTime_GetForHO (eutra_Cell1, tsc_DrbList_Def); //@sic R5s140305 sic@ + f_EUTRA_SS_NAS_ConfigureSecurity(v_Auth_Params.NAS_Integrity, v_Auth_Params.NAS_Ciphering); //@sic R5s140305 sic@ + f_EUTRA_SS_NAS_CountSet ('00000000'O, omit); + f_EUTRA_SS_RRC_EnableIntProt_CiphULandDL (eutra_Cell1, + v_Auth_Params.AS_Integrity, + v_Auth_Params.AS_Ciphering, + cs_TimingInfo_Now); + + f_EUTRA_Security_Set(v_Auth_Params); + + //@siclog "Step 17" siclog@ + //Check: Does the UE transmit an RRCConnectionReconfigurationComplete message with radio link failure information on Cell 1? + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_RRCConnectionReconfigurationComplete_r10(v_RRC_TI, true_, omit))); + + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.5.1 Step 17"); + + //@siclog "Step 18" siclog@ + //Generic test procedure in TS 36.508 subclause 6.4.2.10 is performed on Cell 1. + //NOTE: The UE performs tracking area updating procedure without ISR and security reconfiguration after successful completion of handover from UTRA. + f_EUTRA_508Check_TrackingAreaUpdating_AfterHO(eutra_Cell1,v_Auth_Params_Native,v_NasCountInfo); + + //@siclog "Step 19" siclog@ + //The SS transmits a UEInformationRequest message on Cell 1. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_508_UEInformationRequest(tsc_RRC_TI_Def, -, true))); + + //@siclog "Step 20" siclog@ + //Check: Does the UE transmit a UEInformationResponse message on Cell 1? + if (v_UTRAN_FDD_TDD == UTRAN_FDD) { + v_MeasResultUTRA_PhysCellId := cr_MeasResultUTRA_PhysCellId_FDD(v_UTRAN_PhysChId_Cell5); + } else { + v_MeasResultUTRA_PhysCellId := cr_MeasResultUTRA_PhysCellId_TDD(v_UTRAN_PhysChId_Cell5); + } + v_MeasResList2UTRA_r9 := cr_MeasResultList2UTRA_r9_1Entry(v_UTRAN_ARFCN_f8, v_MeasResultUTRA_PhysCellId, omit, *, omit); + + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, + cr_UEInformationResponse_Common(tsc_RRC_TI_Def, //@sic R5s140305 sic@ + -, + cr_RLF_Report_1Entry(?, + *, + cr_MeasResultNeighCells_r9(-, v_MeasResList2UTRA_r9), + *, + (cr_FailedPCellId_CellGlobalId(cr_Cgi(v_PLMN_Identity_Cell1, v_CellIdentity_Cell1)), + cr_FailedPCellId_Pci_Arfcn(v_PhysCellId_Cell1, v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq)), + omit, + omit, + rlf, + omit)))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.5.1 Step 20"); + + //@siclog "Step 21" siclog@ + //Check: Does the test result of generic test procedure in TS 36.508 subclause 6.4.2.3 indicate that the UE is in E-UTRA RRC_CONNECTED state on Cell 1? + f_EUTRA_508Check_ConnectedState(eutra_Cell1); + + f_EUTRA_TestBody_Set(false); + + //tell the UTRAN component that the test is over + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + + f_EUTRA_Postamble(eutra_Cell1, E2_CONNECTED); + }// end of f_TC_8_6_5_1_EUTRA + + /* + * @desc REFERENCE TS 36.523-1 clause 8.6.5.1a + * @status + */ + function f_TC_8_6_5_1a_EUTRA() runs on EUTRA_PTC + { //Radio Link Failure logging / Reporting at UTRAN Inter-RAT handover / PLMN list + var template (value) CellPowerList_Type v_CellPowerList_AtT0, v_CellPowerList_AtT1, v_CellPowerList_AtT2, v_CellPowerList_AtT3; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var IRAT_CoOrd_SysInfo_Type v_UTRANSysInfo; + var UTRAN_FDD_TDD_Type v_UTRAN_FDD_TDD; + var integer v_UTRAN_ARFCN_f10; + var integer v_UTRAN_PhysChId_Cell9; + var EUTRA_SecurityParams_Type v_Auth_Params, v_Auth_Params_Native; + var NasCountInfo_Type v_NasCountInfo; + var template(present) UL_DCCH_Message v_MeasRpt; + var template(present) MeasResultList2UTRA_r9 v_MeasResList2UTRA_r9; + var template (present) MeasResultUTRA.physCellId v_MeasResultUTRA_PhysCellId; + var Frequency_IE_Type v_Frequency_IE_Cell1; + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell1; + var CellIdentity v_CellIdentity_Cell1; + var PhysCellId v_PhysCellId_Cell1; + var PLMN_Identity v_PLMN_Identity_Cell1; + var EUTRA_CellInfo_Type v_CellInfo_Cell1; + + v_CellPowerList_AtT0 := { + cs_CellPower ( eutra_Cell1, tsc_ServingCellRS_EPRE ), + cs_CellPower ( eutra_Cell12, tsc_NonSuitableOffCellRS_EPRE) + }; + + v_CellPowerList_AtT1 := { + cs_CellPower ( eutra_Cell1, -80 ) + }; + + v_CellPowerList_AtT2 := { + cs_CellPower ( eutra_Cell1, tsc_NonSuitableOffCellRS_EPRE ) + }; + + v_CellPowerList_AtT3 := { + cs_CellPower ( eutra_Cell12, -70 ) + }; + + //Initialize testcase + f_EUTRA_Init(c4); + + v_Frequency_IE_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell1); + v_ChBandDependency_Cell1 := f_EUTRA_BandDependentParam(v_Frequency_IE_Cell1.DL_ChBandwidth, + v_Frequency_IE_Cell1.UL_ChBandwidth); + + v_PhysCellId_Cell1 := f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell1); + + v_CellInfo_Cell1 := f_EUTRA_CellInfo_Get(eutra_Cell1); + v_CellIdentity_Cell1 := v_CellInfo_Cell1.CellIds.CellIdentity; + v_PLMN_Identity_Cell1 := v_CellInfo_Cell1.NAS_Parameters.Guti_Parameters.PLMN_Identity; + + //Acquire information of UTRAN cells + v_UTRANSysInfo := f_IRAT_WaitForCoOrd_SysInfo(UTRAN); + if (ischosen(v_UTRANSysInfo.Utran[0].FDD)) { + v_UTRAN_FDD_TDD := UTRAN_FDD; + v_UTRAN_ARFCN_f10 := v_UTRANSysInfo.Utran[0].FDD.Freq; + v_UTRAN_PhysChId_Cell9 := v_UTRANSysInfo.Utran[0].FDD.ScramblingCode; + } + else { + v_UTRAN_FDD_TDD := UTRAN_TDD; + v_UTRAN_ARFCN_f10 := v_UTRANSysInfo.Utran[0].TDD.Freq; + v_UTRAN_PhysChId_Cell9 := v_UTRANSysInfo.Utran[0].TDD.CellParametersID; + } + + //Set EPRE for RF Initial + f_EUTRA_CellInfo_InitMaxReferencePower ( eutra_Cell1, -80 ); + f_EUTRA_CellInfo_InitMaxReferencePower ( eutra_Cell12, -70 ); + + //Create and configure Cell1 + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_CellConfig_Def(eutra_Cell12); + + //Send relevant EUTRA cell12 info to UTRAN PTC + f_IRAT_Send_EUTRA_SysInfoToOtherPort(UTRAN, + f_EUTRA_CellInfo_GetEARFCN_DL(eutra_Cell12), + f_ConvertDL_BandwidthToInteger (f_EUTRA_CellInfo_GetDL_ChBandwidth (eutra_Cell12)), + cs_EUTRA_HOInfo (f_ConvertUL_BandwidthToInteger (f_EUTRA_CellInfo_GetUL_ChBandwidth (eutra_Cell12)), + f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell12), + f_EUTRA_CellInfo_GetRootSequenceIndex (eutra_Cell12))); + //Preamble + //The UE is registered on PLMN1 (Cell 1) using the procedure described in TS 36.508[18] clause 4.5.2.3 + //except that the ATTACH ACCEPT message indicates PLMN2 in the Equivalent PLMN list as described in Table 8.6.5.1a.3.3-1. + //The UE is in state Generic RB Established (state 3) on Cell 1. + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT0); + + f_EUTRA_SwitchOnUEandStartIP(eutra_Cell1); + + //Bring UE to inital state with Equivalent PLMN2 + f_EUTRA_IdleUpdated_WithEplmn (eutra_Cell1, + PREAMBLE, + cs_PLMN_List_1PLMN (f_Asn2Nas_PlmnId (f_EUTRA_CellInfo_GetGutiPLMN (eutra_Cell12)))); + + f_EUTRA_RbEst_Def(eutra_Cell1); + + f_EUTRA_SendAuthParameters(eutra_Cell1, UTRAN); + + f_EUTRA_TestBody_Set(true); + + //@siclog "Step 1-2" siclog@ + //The SS transmits an RRCConnectionReconfiguration message to setup inter-RAT measurement on Cell 1. + //The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + if (v_UTRAN_FDD_TDD == UTRAN_FDD) { + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(eutra_Cell1, + cs_RRCConnectionReconfiguration_8_6_5_1a_Step1_FDD(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_UTRAN_ARFCN_f10, + v_UTRAN_PhysChId_Cell9)); + } + else{ + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(eutra_Cell1, + cs_RRCConnectionReconfiguration_8_6_5_1a_Step1_TDD(v_RRC_TI, + v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_Cell1.AllowedMeasBandwidth, + v_UTRAN_ARFCN_f10, + v_UTRAN_PhysChId_Cell9)); + } + + //@siclog "Step 3" siclog@ + //The SS changes Cell 1 and Cell 9 parameters according to the row "T1" in Table 8.6.5.1a.3.2-1. + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + + //@siclog "Step 4" siclog@ + //The UE transmits a MeasurementReport message on Cell 1. + if (v_UTRAN_FDD_TDD == UTRAN_FDD) { + v_MeasRpt := cr_MeasurementReport_Utran_1Entry_FDD_RSCP(1, v_UTRAN_PhysChId_Cell9); + } + else { + v_MeasRpt := cr_MeasurementReport_Utran_1Entry_TDD(1, v_UTRAN_PhysChId_Cell9); + } + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, v_MeasRpt)); + + //Backup Auth params and NAS count. + v_Auth_Params := f_EUTRA_Security_Get (); + v_Auth_Params_Native := v_Auth_Params; + v_NasCountInfo := f_EUTRA_SS_NAS_CountGet(); + + //@siclog "Step 5" siclog@ + //The SS changes Cell 1 parameter according to the row "T2" in Table 8.6.5.1a.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT2); + + // Update security params when authentication done on UTRAN side + f_EUTRA_InterRAT_InitialiseAuthParams (UTRAN); + + //Wait for trigger from UTRAN side at step 14 + f_IRAT_WaitForCoOrd_Trigger(UTRAN); + + //@siclog "Step 14" siclog@ + //The SS changes Cell 9 and Cell 12 parameters according to the row "T3" in Table 8.6.5.1a.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT3); + + v_Auth_Params := f_EUTRA_Security_Get(); + v_Auth_Params := f_EUTRA_MappedContext_HO_Init(v_Auth_Params, v_Auth_Params.AuthParams); + f_EUTRA_SS_NAS_ConfigureSecurity(v_Auth_Params.NAS_Integrity, v_Auth_Params.NAS_Ciphering); + f_EUTRA_SS_NAS_CountSet ('00000000'O, omit); + f_EUTRA_SS_RRC_EnableIntProt_CiphULandDL (eutra_Cell12, + v_Auth_Params.AS_Integrity, + v_Auth_Params.AS_Ciphering, + cs_TimingInfo_Now); + + f_EUTRA_Security_Set(v_Auth_Params); + + //@siclog "Step 17" siclog@ + //Check: Does the UE transmit an RRCConnectionReconfigurationComplete message with radio link failure information on Cell 12? + SRB.receive( car_SRB1_RrcPdu_IND( eutra_Cell12, cr_RRCConnectionReconfigurationComplete_r10( v_RRC_TI, true_, omit))); + + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.5.1a Step 17"); + + //@siclog "Step 18" siclog@ + //Generic test procedure in TS 36.508 subclause 6.4.2.10 is performed on Cell 12. + //NOTE: The UE performs tracking area updating procedure without ISR and security reconfiguration after successful completion of handover from UTRA. + f_EUTRA_508Check_TrackingAreaUpdating_AfterHO(eutra_Cell12,v_Auth_Params_Native,v_NasCountInfo); + + //@siclog "Step 19" siclog@ + //The SS transmits a UEInformationRequest message on Cell 12. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell12, + cs_TimingInfo_Now, + cs_508_UEInformationRequest(tsc_RRC_TI_Def, -, true))); + + //@siclog "Step 20" siclog@ + //Check: Does the UE transmit a UEInformationResponse message on Cell 12? + if (v_UTRAN_FDD_TDD == UTRAN_FDD) { + v_MeasResultUTRA_PhysCellId := cr_MeasResultUTRA_PhysCellId_FDD(v_UTRAN_PhysChId_Cell9); + } else { + v_MeasResultUTRA_PhysCellId := cr_MeasResultUTRA_PhysCellId_TDD(v_UTRAN_PhysChId_Cell9); + } + v_MeasResList2UTRA_r9 := cr_MeasResultList2UTRA_r9_1Entry(v_UTRAN_ARFCN_f10, v_MeasResultUTRA_PhysCellId, omit, *, omit); + + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell12, + cr_508_UEInformationResponse(tsc_RRC_TI_Def, -, + cr_RLF_Report_1Entry_r11(?, *, + cr_MeasResultNeighCells_r9(-, v_MeasResList2UTRA_r9), + *, + (cr_FailedPCellId_CellGlobalId(cr_Cgi(v_PLMN_Identity_Cell1, v_CellIdentity_Cell1)), cr_FailedPCellId_Pci_Arfcn(v_PhysCellId_Cell1, v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq)), + omit, omit, rlf, omit, omit, + cr_RLF_Report_basicFields_r11(?, t310_Expiry, ?), + omit, omit)))); + + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.5.1a Step 20"); + + //@siclog "Step 21" siclog@ + //Check: Does the test result of generic test procedure in TS 36.508 subclause 6.4.2.3 indicate that the UE is in E-UTRA RRC_CONNECTED state on Cell 12? + f_EUTRA_508Check_ConnectedState(eutra_Cell12); + + f_EUTRA_TestBody_Set(false); + + //tell the UTRAN component that the test is over + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + + f_EUTRA_Postamble(eutra_Cell12, E2_CONNECTED); + }// end of f_TC_8_6_5_1a_EUTRA + + /* + * @desc REFERENCE TS 36.523-1 clause 8.6.5.2 + * @status + */ + function f_TC_8_6_5_2_EUTRA() runs on EUTRA_PTC + {//Radio Link Failure logging / Reporting at GERAN Inter-RAT handover + var integer v_T1_RS_EPRE_Cell1 := -80; + var integer v_T2_RS_EPRE_Cell1 := tsc_NonSuitableOffCellRS_EPRE; + var integer v_T3_RS_EPRE_Cell1 := -60; + var IRAT_CoOrd_SysInfo_Type v_GERANSysInfo; + var ARFCN_ValueGERAN v_GERAN_ARFCN_f11; + var PhysCellIdGERAN v_GERAN_PhysChId_Cell24; + var BandIndicatorGERAN v_BandIndicatorGERAN_Cell24; + var Frequency_IE_Type v_Frequency_IE_f1; + var ChannelBandwidthDependency_Type v_ChBandDependency_f1; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var ExplicitListOfARFCNs v_ListOfARFCNs; + var CarrierFreqGERAN v_CarrierFreqGERAN_Cell24; + var EPS_UpdateTypeValue v_EpsUpdate_TypeValue; + var EUTRA_SecurityParams_Type v_SecurityParams; + var template AdditionalUpdateType v_AdditionalUpdateType; + var template (present) EPS_BearerContextStatus v_EPS_ContextStatus_Rx; + var template (omit) EPS_BearerContextStatus v_EPS_ContextStatus_Tx; + var SRB_COMMON_IND v_ReceivedAsp; + var NasCount_Type v_NasCountUL; + var CellIdentity v_CellIdentity_Cell1; + var PhysCellId v_PhysCellId_Cell1; + var PLMN_Identity v_PLMN_Identity_Cell1; + var EUTRA_CellInfo_Type v_CellInfo_Cell1; + var NAS_MSG_Indication_Type v_NAS_Ind; + var template (value) SystemInformationBlockType7 v_SystemInformationBlockType7; + var template (value) CarrierFreqsInfoListGERAN v_CarrierFreqsInfoListGERAN; + + //Initialise all cells, security and mobile parameters + f_EUTRA_Init(c5); + + f_EUTRA_CellInfo_InitMaxReferencePower (eutra_Cell1, -60); + v_PhysCellId_Cell1 := f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell1); + v_Frequency_IE_f1 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell1); + v_ChBandDependency_f1 := f_EUTRA_BandDependentParam(v_Frequency_IE_f1.DL_ChBandwidth, v_Frequency_IE_f1.UL_ChBandwidth); + + v_CellInfo_Cell1 := f_EUTRA_CellInfo_Get(eutra_Cell1); + v_CellIdentity_Cell1 := v_CellInfo_Cell1.CellIds.CellIdentity; + v_PLMN_Identity_Cell1 := v_CellInfo_Cell1.NAS_Parameters.Guti_Parameters.PLMN_Identity; + + f_IRAT_Send_EUTRA_SysInfoToOtherPort(GERAN, f_EUTRA_CellInfo_GetEARFCN_DL(eutra_Cell1), + f_ConvertDL_BandwidthToInteger (f_EUTRA_CellInfo_GetDL_ChBandwidth (eutra_Cell1))); + + //Acquire information of GERAN cells + v_GERANSysInfo := f_IRAT_WaitForCoOrd_SysInfo(GERAN); + v_GERAN_ARFCN_f11 := v_GERANSysInfo.Geran[0].Arfcn; + + v_GERAN_PhysChId_Cell24 := { + networkColourCode := v_GERANSysInfo.Geran[0].Ncc, + baseStationColourCode := v_GERANSysInfo.Geran[0].Bcc + } + + if (v_GERANSysInfo.Geran[0].BandIndicator == '0'B) { + v_BandIndicatorGERAN_Cell24 := dcs1800; + } + else { + v_BandIndicatorGERAN_Cell24 := pcs1900; + } + v_ListOfARFCNs[0] := v_GERANSysInfo.Geran[0].Arfcn; + v_CarrierFreqGERAN_Cell24 := { + arfcn := v_GERANSysInfo.Geran[0].Arfcn, + bandIndicator := f_ConvertGERAN_Band(v_GERANSysInfo.Geran[0].BandIndicator) + }; + v_CarrierFreqsInfoListGERAN := { + cs_CarrierFreqsInfoGERAN(cs_CarrierFreqsGERAN(v_GERANSysInfo.Geran[0].Arfcn, f_ConvertGERAN_Band(v_GERANSysInfo.Geran[0].BandIndicator), v_ListOfARFCNs)) + }; + v_SystemInformationBlockType7 := cs_508_SystemInformationBlockType7_Def(v_CarrierFreqsInfoListGERAN); + + f_EUTRA_CellInfo_SetSIB7(eutra_Cell1, v_SystemInformationBlockType7); + + f_EUTRA_CellConfig_Def (eutra_Cell1); + + f_EUTRA_Preamble(eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_RbEst_Def(eutra_Cell1); + + //Start of test body + f_EUTRA_TestBody_Set(true); + + //@siclog "Step 1" siclog@ + //The SS changes Cell 1 and Cell 24 parameters according to the row "T1" in table 8.6.5.2.3.2-1. + f_EUTRA_SetCellPower (eutra_Cell1, v_T1_RS_EPRE_Cell1); + f_IRAT_SendCoOrd (GERAN, cms_IRAT_Trigger); + + //@siclog "Step 2-3" siclog@ + //The SS transmits an RRCConnectionReconfiguration message to setup inter-RAT measurement on Cell 1. + //The UE transmits an RRCConnectionReconfigurationComplete message on Cell 1. + f_EUTRA_RRCConnectionReconfiguration_MeasConfig(eutra_Cell1, + cs_RRCConnectionReconfiguration_GERAN_F1F11(v_RRC_TI, + v_Frequency_IE_f1.UL_DL_Earfcn.dl_CarrierFreq, + v_ChBandDependency_f1.AllowedMeasBandwidth, + v_GERAN_ARFCN_f11, + v_BandIndicatorGERAN_Cell24, + v_ListOfARFCNs, + cs_QuantityConfigGERAN(rssi, fc0))); + + //@siclog "Step 4" siclog@ + //The UE transmits a MeasurementReport message on Cell 1 to report event B2 with the measured rssi value for Cell 24. + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, + cr_MeasurementReport_Geran_1Entry(1, v_GERAN_PhysChId_Cell24))); + + //@siclog "Step 5" siclog@ + //The SS changes Cell 1 and Cell 24 parameters according to the row "T2" in Table 8.6.5.2.3.2-1 in order that + //the radio link quality of Cell 1 is degraded and Cell 24 is suitable for camping. + f_EUTRA_SetCellPower (eutra_Cell1, v_T2_RS_EPRE_Cell1); + + f_IRAT_SendCoOrd (GERAN, cms_IRAT_OctetData (hex2oct(tsc_EpsDefaultBearerId))); // @sic R5s130833 sic@ + f_IRAT_WaitForCoOrd_Trigger (GERAN); + //@siclog "Step 7" siclog@ + //The SS changes Cell 1 and Cell 24 parameters according to the row "T3" in table 8.6.5.2.3.2-1. + f_EUTRA_SetCellPower (eutra_Cell1, v_T3_RS_EPRE_Cell1); + + //@siclog "Step 9" siclog@ + //Check: Does the UE transmit an RRCConnectionReconfigurationComplete message on Cell 1 with rlf-InfoAvailable included? + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, cr_RRCConnectionReconfigurationComplete_r10(v_RRC_TI, true_, omit))); + + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.5.2 Step 9"); + + v_AdditionalUpdateType := f_GetAdditionalUpdateType (); + v_EPS_ContextStatus_Rx := cr_508_EPS_BearerContextStatusTAUReq; + v_EpsUpdate_TypeValue := f_GetEPSTAUType (NORMAL); + + //@siclog "Step 10" siclog@ + //The UE transmits a TRACKING AREA UPDATE REQUEST message on Cell 1. + SRB.receive(car_SRB1_NasPdu_IND(eutra_Cell1, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_TAU_RequestIdleMobilityDiffRAT(v_EpsUpdate_TypeValue, + f_EUTRA_SecurityKSIasme_Get(), + v_EPS_ContextStatus_Rx, + v_AdditionalUpdateType, + tsc_NasKsi_MappedSecurityContext))))->value v_ReceivedAsp; + + v_NAS_Ind := v_ReceivedAsp.Signalling.Nas[0]; + v_SecurityParams.NonceUE := oct2bit(v_NAS_Ind.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.nonce.nonceValue); + v_SecurityParams := f_EUTRA_MappedContext_InitNAS(v_SecurityParams, v_SecurityParams.AuthParams); + + //@siclog "Step 11 - 12" siclog@ + //The SS transmits a NAS SECURITY MODE COMMAND message to activate NAS security (mapped security context) + //The UE transmits a NAS SECURITY MODE COMPLETE message and establishes the initial security configuration. + v_NasCountUL := f_EUTRA_NAS_ActivateSecurity_MappedContext(eutra_Cell1, v_SecurityParams); + v_EPS_ContextStatus_Tx := v_NAS_Ind.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.epsBearerContextStatus; + v_SecurityParams.NAS_SecurityCap := f_EUTRA_FillNAS_SecurityCapability_TAU(v_NAS_Ind.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST); + f_EUTRA_Security_Set(v_SecurityParams); + + //@siclog "Step 13 - 14" siclog@ + //SS responds with a TRACKING AREA UPDATE ACCEPT message. + //The UE transmits a TRACKING AREA UPDATE COMPLETE message. + f_EUTRA_TrackingAreaUpdate_Accept_Complete(eutra_Cell1, + v_CellInfo_Cell1.NAS_Parameters.Guti_Parameters, + v_EpsUpdate_TypeValue, + v_EPS_ContextStatus_Tx, + v_NAS_Ind.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.addUpdateType, + NORMAL); + //@siclog "Step 15" siclog@ + //The SS transmits a UEInformationRequest message with rlf-ReportReq set to true on Cell 1. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_508_UEInformationRequest(tsc_RRC_TI_Def, -, true))); + + //@siclog "Step 16" siclog@ + //Check: Does the UE transmit a UEInformationResponse message on Cell 1 with the GERAN neighbour Cell 24 measurement information (measResultListGERAN) included in rlf-Report? + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, + cr_508_UEInformationResponse(tsc_RRC_TI_Def, -, + cr_RLF_Report_1Entry(?, *, + cr_MeasResultNeighCells_r9(-, -,cr_MeasResultListGERAN_r9_1Entry(v_CarrierFreqGERAN_Cell24, + v_GERAN_PhysChId_Cell24, + omit, + ?)), + *, + (cr_FailedPCellId_CellGlobalId(cr_Cgi(v_PLMN_Identity_Cell1, v_CellIdentity_Cell1)), cr_FailedPCellId_Pci_Arfcn(v_PhysCellId_Cell1, v_Frequency_IE_f1.UL_DL_Earfcn.dl_CarrierFreq)), + omit, omit, rlf, omit)))); + + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.5.2 Step 16"); + + //@siclog "Step 17" siclog@ + //Check: Does the test result of generic test procedure in TS 36.508 subclause 6.4.2.3 indicate that the UE is in E-UTRA RRC_CONNECTED state on Cell 1? + f_EUTRA_508Check_ConnectedState(eutra_Cell1); + + f_EUTRA_TestBody_Set(false); + + //tell the GERAN component that the test is over + f_IRAT_SendCoOrd(GERAN, cms_IRAT_Trigger); + + f_EUTRA_Postamble(eutra_Cell1, E2_CONNECTED); + + } // end of f_TC_8_6_5_2_EUTRA + + /* + * @desc REFERENCE TS 36.523-1 clause 8.6.5.4 + * @status + */ + function f_TC_8_6_5_4_EUTRA() runs on EUTRA_PTC + { //Radio Link Failure logging / Reporting of selected UTRA cell + var integer v_T1_RS_EPRE_Cell1 := tsc_NonSuitableOffCellRS_EPRE; + var integer v_T2_RS_EPRE_Cell1 := -70; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var IRAT_CoOrd_SysInfo_Type v_UTRANSysInfo; + var UTRAN_FDD_TDD_Type v_UTRAN_FDD_TDD; + var integer v_UTRAN_ARFCN_f8; + var integer v_UTRAN_PhysChId_Cell5; + var EUTRA_SecurityParams_Type v_Auth_Params, v_Auth_Params_Native; + var NasCountInfo_Type v_NasCountInfo; + var Frequency_IE_Type v_Frequency_IE_Cell1; + var ChannelBandwidthDependency_Type v_ChBandDependency_Cell1; + var CellIdentity v_CellIdentity_Cell1; + var PhysCellId v_PhysCellId_Cell1; + var PLMN_Identity v_PLMN_Identity_Cell1; + var EUTRA_CellInfo_Type v_CellInfo_Cell1; + var template(present) RLF_Report_selectedUTRA_CellId_r11_Type v_SelectedUTRA_CellId_r11; + + //Initialize testcase + f_EUTRA_Init(c4); + + v_Frequency_IE_Cell1 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell1); + v_ChBandDependency_Cell1 := f_EUTRA_BandDependentParam(v_Frequency_IE_Cell1.DL_ChBandwidth, + v_Frequency_IE_Cell1.UL_ChBandwidth); + + v_PhysCellId_Cell1 := f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell1); + + v_CellInfo_Cell1 := f_EUTRA_CellInfo_Get(eutra_Cell1); + v_CellIdentity_Cell1 := v_CellInfo_Cell1.CellIds.CellIdentity; + v_PLMN_Identity_Cell1 := v_CellInfo_Cell1.NAS_Parameters.Guti_Parameters.PLMN_Identity; + + f_EUTRA_CellInfo_InitMaxReferencePower (eutra_Cell1, -70); + f_EUTRA_CellInfo_SetSysInfo_T311(eutra_Cell1, ms30000); + + //Acquire information of UTRAN cells + v_UTRANSysInfo := f_IRAT_WaitForCoOrd_SysInfo(UTRAN); + if (ischosen(v_UTRANSysInfo.Utran[0].FDD)) { + v_UTRAN_FDD_TDD := UTRAN_FDD; + v_UTRAN_ARFCN_f8 := v_UTRANSysInfo.Utran[0].FDD.Freq; + v_UTRAN_PhysChId_Cell5 := v_UTRANSysInfo.Utran[0].FDD.ScramblingCode; + } + else { + v_UTRAN_FDD_TDD := UTRAN_TDD; + v_UTRAN_ARFCN_f8 := v_UTRANSysInfo.Utran[0].TDD.Freq; + v_UTRAN_PhysChId_Cell5 := v_UTRANSysInfo.Utran[0].TDD.CellParametersID; + } + + //Send relevant EUTRA cell info to UTRAN PTC + f_IRAT_Send_EUTRA_SysInfoToOtherPort(UTRAN, + f_EUTRA_CellInfo_GetEARFCN_DL(eutra_Cell1), + f_ConvertDL_BandwidthToInteger (f_EUTRA_CellInfo_GetDL_ChBandwidth (eutra_Cell1)), + cs_EUTRA_HOInfo (f_ConvertUL_BandwidthToInteger (f_EUTRA_CellInfo_GetUL_ChBandwidth (eutra_Cell1)), + f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell1), + f_EUTRA_CellInfo_GetRootSequenceIndex (eutra_Cell1))); + + //Create and configure Cell1 + f_EUTRA_CellConfig_Def(eutra_Cell1); + + //Preamble + f_EUTRA_Preamble(eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_RbEst_Def(eutra_Cell1); + + f_EUTRA_SendAuthParameters(eutra_Cell1, UTRAN); + + f_EUTRA_TestBody_Set(true); + + //@siclog "Step 1" siclog@ + //The SS changes Cell 1 and Cell 5 parameters according to the row "T1" in Table 8.6.5.4.3.2-1. + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + f_EUTRA_SetCellPower(eutra_Cell1, v_T1_RS_EPRE_Cell1); + + //Backup Auth params and NAS count. + v_Auth_Params := f_EUTRA_Security_Get (); + v_Auth_Params_Native := v_Auth_Params; + v_NasCountInfo := f_EUTRA_SS_NAS_CountGet(); + // Update security params when authentication done on UTRAN side + f_EUTRA_InterRAT_InitialiseAuthParams (UTRAN); + + //@siclog "Step 10" siclog@ + //The SS changes Cell 1 and Cell 5 parameters according to the row "T2" in Table 8.6.5.4.3.2-1. + f_IRAT_WaitForCoOrd_Trigger(UTRAN); + f_EUTRA_SetCellPower(eutra_Cell1, v_T2_RS_EPRE_Cell1); + + v_Auth_Params := f_EUTRA_Security_Get(); + v_Auth_Params := f_EUTRA_MappedContext_HO_Init(v_Auth_Params, v_Auth_Params.AuthParams); + f_EUTRA_SS_NAS_ConfigureSecurity(v_Auth_Params.NAS_Integrity, v_Auth_Params.NAS_Ciphering); + f_EUTRA_SS_NAS_CountSet ('00000000'O, omit); + f_EUTRA_SS_RRC_EnableIntProt_CiphULandDL (eutra_Cell1, + v_Auth_Params.AS_Integrity, + v_Auth_Params.AS_Ciphering, + cs_TimingInfo_Now); + + f_EUTRA_Security_Set(v_Auth_Params); + + //@siclog "Step 13" siclog@ + //Check: Does the UE transmit an RRCConnectionReconfigurationComplete message with rlf-InfoAvailable set to True on Cell 1? + SRB.receive( car_SRB1_RrcPdu_IND( eutra_Cell1, cr_RRCConnectionReconfigurationComplete_r10( v_RRC_TI, true_, omit))); + + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.5.4 Step 13"); + + //@siclog "Step 14" siclog@ + //Generic test procedure in TS 36.508 subclause 6.4.2.10 is performed on Cell 1. + //NOTE: The UE performs tracking area updating procedure without ISR and security reconfiguration after successful completion of handover from UTRA. + f_EUTRA_508Check_TrackingAreaUpdating_AfterHO(eutra_Cell1,v_Auth_Params_Native,v_NasCountInfo); + + //@siclog "Step 15" siclog@ + //The SS transmits a UEInformationRequest message on Cell 1. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_508_UEInformationRequest(tsc_RRC_TI_Def, -, true))); + + //@siclog "Step 16" siclog@ + //Check: Does the UE transmit a UEInformationResponse message on Cell 1? + if (v_UTRAN_FDD_TDD == UTRAN_FDD) { + v_SelectedUTRA_CellId_r11 := cr_RLF_Report_selectedUTRA_CellId_r11_FDD(v_UTRAN_ARFCN_f8, v_UTRAN_PhysChId_Cell5); + } else { + v_SelectedUTRA_CellId_r11 := cr_RLF_Report_selectedUTRA_CellId_r11_TDD(v_UTRAN_ARFCN_f8, v_UTRAN_PhysChId_Cell5); + } + + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, + cr_508_UEInformationResponse(tsc_RRC_TI_Def, + -, + cr_RLF_Report_1Entry_r11(?, *, + cr_MeasResultNeighCells_r9, + *, + (cr_FailedPCellId_CellGlobalId(cr_Cgi(v_PLMN_Identity_Cell1, v_CellIdentity_Cell1)), cr_FailedPCellId_Pci_Arfcn(v_PhysCellId_Cell1, v_Frequency_IE_Cell1.UL_DL_Earfcn.dl_CarrierFreq)), + omit, omit, rlf, omit,omit, + cr_RLF_Report_basicFields_r11(? ,t310_Expiry, ?), + omit, + v_SelectedUTRA_CellId_r11)))); + + + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.5.4 Step 16"); + + //@siclog "Step 17" siclog@ + //Check: Does the test result of generic test procedure in TS 36.508 subclause 6.4.2.3 indicate that the UE is in E-UTRA RRC_CONNECTED state on Cell 1? + f_EUTRA_508Check_ConnectedState(eutra_Cell1); + + f_EUTRA_TestBody_Set(false); + + //tell the UTRAN component that the test is over + f_IRAT_SendCoOrd(UTRAN, cms_IRAT_Trigger); + + f_EUTRA_Postamble(eutra_Cell1, E2_CONNECTED); + }// end of f_TC_8_6_5_4_EUTRA + +} // end of Module diff --git a/LTE_A_IWD_14wk37/LTE_A/8_6/RRC_LoggedRLF_GERAN.ttcn b/LTE_A_IWD_14wk37/LTE_A/8_6/RRC_LoggedRLF_GERAN.ttcn new file mode 100644 index 0000000..7f173d7 --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/8_6/RRC_LoggedRLF_GERAN.ttcn @@ -0,0 +1,86 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-12-03 19:13:44 +0100 (Tue, 03 Dec 2013) $ +// $Rev: 10275 $ +/******************************************************************************/ + +module RRC_LoggedRLF_GERAN +{ + import from GERAN_Component all; + import from GERAN_Templates all; + import from GERAN_TypeDefs all; + import from GERAN_CommonFunctions all; + import from GERAN_CellInfo all; + import from NAS_24008Templates_IRAT all; + import from CommonDefs all; + import from CommonIratDefs all; + import from EUTRA_CapabilityFunctions all; + + //================================================================ + /* + * @desc REFERENCE TS 36.523-1 clause 8.6.5.2 + * @status + */ + function f_TC_8_6_5_2_GERAN () runs on GERAN_PTC + {//Radio Link Failure logging / Reporting at GERAN Inter-RAT handover + var octetstring v_RRC_Container_HOtoEUTRA; + var IRAT_CoOrd_SysInfo_Type v_EUTRA_SysInfo; + var IRAT_Coordination_MSG v_OctetData; + + //Initialise test case + f_GERAN_Init( EUTRA_GERAN ); + + //* @desc Wait for EUTRA cell information to configure in GERAN cell + v_EUTRA_SysInfo := f_IRAT_WaitForCoOrd_SysInfo (EUTRA); + + //Send cell info to EUTRA PTC + f_GERAN_Send_IR_SysInfoToEUTRA (geran_Cell24); + + f_GERAN_CreateCell (geran_Cell24); + + f_GERAN_TestBody_Set( true ); + + //@siclog "Step 1" siclog@ + // The SS changes Cell 1 and Cell 24 parameters according to the row "T1" in table 8.6.5.2.3.2-1. + f_IRAT_WaitForCoOrd_Trigger ( EUTRA ); + f_GERAN_SetCellPowerLevel (geran_Cell24, -65); + + //@siclog "Step 5" siclog@ + //Geran tx power doesn't change. + + EUTRA.receive (cmr_IRAT_OctetData) -> value v_OctetData; // @sic R5s130833 sic@ + //@siclog "Step 6" siclog@ + //The UE executes the generic test procedure in TS 36.508 subclause 6.4.2.9 to make sure that the UE is camped on GERAN Cell 24 + f_GERAN_RAU (geran_Cell24, '0'B, (tsc_I_UpdateTypeRAOnly, tsc_I_UpdateTypeCombined), true, true, oct2int(v_OctetData.OctetData)); // @sic R5s130833 sic@ + + //@siclog "Step 7" siclog@ + //The SS changes Cell 1 and Cell 24 parameters according to the row "T3" in table 8.6.5.2.3.2-1. + f_GERAN_SetCellPowerLevel (geran_Cell24, -85); + f_IRAT_SendCoOrd (EUTRA, cms_IRAT_Trigger); + + //@siclog "Step 8" siclog@ + //The SS transmits PS HANDOVER COMMAND message on Cell 24 to order the UE to perform inter-RAT handover to Cell 1. + v_RRC_Container_HOtoEUTRA := f_Encode_RRCConnectionReconfiguration_HOToEUTRA (v_EUTRA_SysInfo.Eutra[0]); + G_RLC.send (cas_G_RLC_ControlMsg_REQ_PACCH(geran_Cell24, + tsc_PhyCh1, + 0, + tsc_DownlinkTFI, + cs_G_PSHandoverCmdToEUTRA (cs_GlobalTFIdl, + int2bit(lengthof (v_RRC_Container_HOtoEUTRA), 8), + v_RRC_Container_HOtoEUTRA))); + + //Now wait for the test to finish + f_IRAT_WaitForCoOrd_Trigger ( EUTRA ); + + f_GERAN_TestBody_Set( false ); + + f_GERAN_SS_CellRelease ( geran_Cell24 ); + + } // end of f_TC_8_6_5_2_GERAN + +} // end of Module diff --git a/LTE_A_IWD_14wk37/LTE_A/8_6/RRC_LoggedRLF_UTRAN.ttcn b/LTE_A_IWD_14wk37/LTE_A/8_6/RRC_LoggedRLF_UTRAN.ttcn new file mode 100644 index 0000000..f036c95 --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/8_6/RRC_LoggedRLF_UTRAN.ttcn @@ -0,0 +1,525 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 22:08:20 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12181 $ +/******************************************************************************/ + +module RRC_LoggedRLF_UTRAN +{ + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_ASP_Definitions language "ASN.1:2002" all; + import from CommonIratDefs all; + import from CommonDefs all; + import from UTRAN_Parameters all; + import from UTRAN_Component all; + import from UTRAN_CommonFunctions all; + import from UTRAN_CommonProcedures all; + import from UTRAN_CellInfo all; + import from UTRAN_RRC_Templates all; + import from UTRAN_TTCN_ASP_Templates all; + import from UTRAN_CommonDefs all; + import from UTRAN_RAB_Functions all; + import from UTRAN_ConfigurationSteps all; + import from UTRAN_ASN1_ASP_RAB_Templates all; + import from UTRAN_ASN1_ASP_Templates all; + import from EUTRA_CapabilityFunctions all; + import from UTRAN_RRC_Templates_r9 all; + import from UTRAN_RRC_RAB_Templates all; + import from UTRAN_RRC_Handover_Templates all; + import from UTRAN_MDT_Templates all; + + //================================================================ + /* + * @desc REFERENCE TS 36.523-1 clause 8.6.5.1 + * @status APPROVED (LTE_A) + */ + function f_TC_8_6_5_1_UTRAN() runs on UTRAN_PTC + { /* Radio Link Failure logging / Reporting at UTRAN Inter-RAT handover */ + var UTRAN_FDD_TDD_Type v_FDD_TDD_Mode; + var integer v_T1_T2_CPICH_Cell5 := -70; + var integer v_T1_T2_PCCPCH_Cell5 := -70; + var integer v_T3_CPICH_Cell5 := -85;//@sic R5-142454 sic@ + var integer v_T3_PCCPCH_Cell5 := -85;//@sic R5-142454 sic@ + var UTRAN_SecurityInfo_Type v_SecurityInfo; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI; + var TGCFN v_TGCFN; + var TGPS_Reconfiguration_CFN v_Tgps_Reconfiguration_CFN; + var UTRAN_CFN_Info_Type v_CFNInfo; + var octetstring v_RRCConnectionConfigurationMessage; + var IRAT_CoOrd_SysInfo_Type v_EUTRASysInfo; + var EUTRA_MeasurementBandwidth v_EUTRA_MeasurementBandwidth; + + // Initialise all cells + f_UTRAN_Init(EUTRA_UTRAN); + + v_SecurityInfo := f_UTRAN_Security_Get(); + v_EUTRA_MeasurementBandwidth := f_UTRAN_ConvertIntegerToEUTRA_MeasurementBandwidth(f_ConvertDL_BandwidthPIXITToInteger()); + + //Send the cell info to the EUTRA component + f_UTRAN_Send_IR_SysInfoToEUTRA(utran_Cell5); + + //Get Cell Parameters for EUTRA cell + v_EUTRASysInfo := f_IRAT_WaitForCoOrd_SysInfo (EUTRA); + + // Create and configure Cell 5 + // Cell started switched on with default power level, -60 and max attenuation + f_UTRAN_SS_CreateCellDCH(utran_Cell5); + + // Start sending System Information + f_UTRAN_SendDefSysInfo(utran_Cell5); + + // UE starts registered in EUTRA, wait its Auth Params + f_UTRAN_InterRAT_InitialiseAuthParams(); + + // Get FDD or TDD mode + v_FDD_TDD_Mode := f_UTRAN_CellInfo_GetFDD_TDD(utran_Cell5); + + f_UTRAN_TestBody_Set(true); + + //@siclog "Step 3" siclog@ + //The SS changes Cell 1 and Cell 5 parameters according to the row "T1" in Table 8.6.5.1.3.2-1. + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + f_UTRAN_SetCellPower(utran_Cell5, v_T1_T2_CPICH_Cell5, v_T1_T2_PCCPCH_Cell5); + + //@siclog "Step 6" siclog@ + //Generic test procedure in TS 36.508 subclause 6.4.2.8 is performed on Cell 5. + //NOTE: The UE performs an RAU procedure and the RRC connection is released. + f_UTRAN_508CheckCampOnNewUtranCell(utran_Cell5, cell_Dch); + + //@siclog Step 6A siclog@ + //The SS waits for 5 s to ensure the UE is in service + f_Delay(5.0); //@sic R5-144661, R5s140535 sic@ + + //@siclog Step 7 - 11 siclog@ + //Step 7 to 11 of test procedure in TS 34.123-1 subclause 12.9.14.4 is performed on Cell 5 + //using the UTRA reference radio bearer parameters and combination "UTRA PS RB" according to TS 36.508 subclause 4.8.3 and Table 4.8.3-1. + //NOTE: The UE performs NW initiated RAB re-establishment in a UTRAN cell. + f_UTRAN_MT_RAB_ReEst(utran_Cell5, cell_DCH_HS_DSCH); + + f_UTRAN_SendAuthCoOrdParameters (EUTRA, omit); //@sic R5s140366 sic@ + + if (v_FDD_TDD_Mode == UTRAN_FDD and pc_UTRA_CompressedModeRequired) { + //@siclog "Step 12a1 - 12a2" siclog@ + //Compressed mode only applicable in FDD + f_UTRAN_PhyChReconf_InterRatCompresseModeSet_Common(utran_Cell5, cs_TGPS_Status_Deactive); + + //Changed to use activation time test step and derive TGCFN from this test step + v_CFNInfo := f_CalculateActTime(utran_Cell5); + v_TGCFN := v_CFNInfo.tGCFN; + v_Tgps_Reconfiguration_CFN := v_TGCFN; + + //refresh security info + v_SecurityInfo := f_UTRAN_Security_Get(); + + //@siclog "Step 13" siclog@ + //ss tx a measurement control to setup inter-RAT on cell 5 + U_AM.send(cas_RLC_Data_Req_NoCnf(utran_CellDedicated, + tsc_RB2, + cs_MeasurementControl_InterRATMeasurement(v_SecurityInfo.dl_IntegrityCheckInfo, + v_RRC_TI, + v_EUTRASysInfo.Eutra[0].Arfcn, + v_EUTRA_MeasurementBandwidth, + v_Tgps_Reconfiguration_CFN, + v_TGCFN))); + if (pc_InterRAT_DL_CompressedModeRequired) { + f_UTRAN_CPHY_RL_Modify(cas_CompressedModeStatusInfo_REQ (utran_Cell5, + tsc_DL_DPCH1, + cs_DPCH_CompressedModeStatusInfoActive(v_Tgps_Reconfiguration_CFN, v_TGCFN), + cs_ActivateCFN(v_CFNInfo.actTime))); + + } + if (pc_InterRAT_UL_CompressedModeRequired) { + f_UTRAN_CPHY_RL_Modify(cas_CompressedModeStatusInfo_REQ (utran_Cell5, + tsc_UL_DPCH1, + cs_DPCH_CompressedModeStatusInfoActive(v_Tgps_Reconfiguration_CFN, v_TGCFN), + cs_ActivateCFN(v_CFNInfo.actTime))); + } + } else if (v_FDD_TDD_Mode == UTRAN_FDD and not pc_UTRA_CompressedModeRequired) { // @sic R5s140149 subject to prose CR approval sic@ + //refresh security info + v_SecurityInfo := f_UTRAN_Security_Get(); + + //ss tx a measurement control to setup inter-RAT on cell 5 + U_AM.send(cas_RLC_Data_Req_NoCnf(utran_CellDedicated, + tsc_RB2, + cs_MeasurementControl_InterRATMeasurement_NoCompMode(v_SecurityInfo.dl_IntegrityCheckInfo, + v_RRC_TI, + v_EUTRASysInfo.Eutra[0].Arfcn, + v_EUTRA_MeasurementBandwidth))); + } else { // TDD branch + v_SecurityInfo := f_UTRAN_Security_Get(); + f_UTRAN_CPHY_MeasurementConfig_TDD (utran_Cell5, cs_ActivateNow, cs_CellDCHMeasOccasionInfo_TDD128_r9); //@sic R5-134957 sic@ + //@siclog "Step 13" siclog@ + //ss tx a measurement control to setup inter-RAT on cell 5 + //FFS release 10 + U_AM.send(cas_RLC_Data_Req_NoCnf(utran_CellDedicated, + tsc_RB2, + cs_MeasurementControl_InterRATMeasurement_TDD_r10(v_SecurityInfo.dl_IntegrityCheckInfo, + v_RRC_TI, + v_EUTRASysInfo.Eutra[0].Arfcn, + v_EUTRA_MeasurementBandwidth, + cs_CellDCHMeasOccasionInfo_TDD128_r9))); + } + + // Send trigger from UTRAN side + f_IRAT_SendCoOrd (EUTRA, cms_IRAT_Trigger); + + //@siclog "Step 14" siclog@ + //The SS changes Cell 1 and Cell 5 parameters according to the row "T3" in Table 8.6.5.1.3.2-1. + f_UTRAN_SetCellPower(utran_Cell5, v_T3_CPICH_Cell5, v_T3_PCCPCH_Cell5); + + //@siclog "Step 15" siclog@ + //The UE transmits a MEASUREMENT REPORT message on Cell 5 including the E-UTRA event results. + U_AM.receive(car_RLC_Data_Ind(utran_CellDedicated, tsc_RB2, cr_MeasurementReport)); + + v_RRCConnectionConfigurationMessage := f_Encode_RRCConnectionReconfiguration_HOToEUTRA (v_EUTRASysInfo.Eutra[0]); + + //@siclog "Step 16" siclog@ + //SS tx a handover from utran command on cell5 + U_AM.send(cas_RLC_Data_Req_NoCnf(utran_CellDedicated, + tsc_RB2, + cs_HandoverFromUTRANCommand_EUTRA(v_SecurityInfo.dl_IntegrityCheckInfo, + v_RRC_TI, + v_RRCConnectionConfigurationMessage))); + // Wait for the end of the test case + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + + //postamble + f_UTRAN_TestBody_Set(false); + + // Release UTRAN Cell 5 + f_UTRAN_ReleaseCell(utran_Cell5, f_UTRAN_CellInfo_GetConfigType(utran_Cell5)); + }//end of Test case 8.6.5.1 + + /* + * @desc REFERENCE TS 36.523-1 clause 8.6.5.1a + * @status + */ + function f_TC_8_6_5_1a_UTRAN() runs on UTRAN_PTC + { //Radio Link Failure logging / Reporting at UTRAN Inter-RAT handover / PLMN list + var UTRAN_FDD_TDD_Type v_FDD_TDD_Mode; + var integer v_T1_T2_CPICH_Cell9 := -70; + var integer v_T1_T2_PCCPCH_Cell9 := -70; + var integer v_T3_CPICH_PCCPCH_Cell9 := -85;//@sic R5-142454 sic@ + var UTRAN_SecurityInfo_Type v_SecurityInfo; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI; + var TGCFN v_TGCFN; + var TGPS_Reconfiguration_CFN v_Tgps_Reconfiguration_CFN; + var UTRAN_CFN_Info_Type v_CFNInfo; + var octetstring v_RRCConnectionConfigurationMessage; + var IRAT_CoOrd_SysInfo_Type v_EUTRASysInfo; + var EUTRA_MeasurementBandwidth v_EUTRA_MeasurementBandwidth; + + // Initialise all cells + f_UTRAN_Init ( EUTRA_UTRAN ); + + v_SecurityInfo := f_UTRAN_Security_Get ( ); + v_EUTRA_MeasurementBandwidth := f_UTRAN_ConvertIntegerToEUTRA_MeasurementBandwidth(f_ConvertDL_BandwidthPIXITToInteger()); + + //Send the cell info to the EUTRA component + f_UTRAN_Send_IR_SysInfoToEUTRA ( utran_Cell9 ); + + //Get Cell Parameters for EUTRA cell12 + v_EUTRASysInfo := f_IRAT_WaitForCoOrd_SysInfo (EUTRA); + + // Create and configure Cell 9 + // Cell started switched on with default power level, -60 and max attenuation + f_UTRAN_SS_CreateCellDCH ( utran_Cell9 ); + + // Start sending System Information + f_UTRAN_SendDefSysInfo ( utran_Cell9 ); + + // UE starts registered in EUTRA, wait its Auth Params + f_UTRAN_InterRAT_InitialiseAuthParams(); + + // Get FDD or TDD mode + v_FDD_TDD_Mode := f_UTRAN_CellInfo_GetFDD_TDD ( utran_Cell9 ); + + f_UTRAN_TestBody_Set(true); + + //@siclog "Step 3" siclog@ + //The SS changes Cell 1 and Cell 9 parameters according to the row "T1" in Table 8.6.5.1a.3.2-1. + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + f_UTRAN_SetCellPower(utran_Cell9, v_T1_T2_CPICH_Cell9, v_T1_T2_PCCPCH_Cell9); + + //@siclog "Step 6" siclog@ + //Generic test procedure in TS 36.508 subclause 6.4.2.8 is performed on Cell 9. + //NOTE: The UE performs an RAU procedure and the RRC connection is released. + f_UTRAN_508CheckCampOnNewUtranCell(utran_Cell9, cell_Dch); + + //@siclog Step 7 - 11 siclog@ + //Step 7 to 11 of test procedure in TS 34.123-1 subclause 12.9.14.4 is performed on Cell 9 + //using the UTRA reference radio bearer parameters and combination "UTRA PS RB" according to TS 36.508 subclause 4.8.3 and Table 4.8.3-1. + //NOTE: The UE performs NW initiated RAB re-establishment in a UTRAN cell. + f_UTRAN_MT_RAB_ReEst(utran_Cell9, cell_DCH_64kPS_RAB_SRB); + + // UE's re-done authentication in establishing the RAB so need to send the new params to EUTRA + f_UTRAN_SendAuthCoOrdParameters (EUTRA, omit); + + if (v_FDD_TDD_Mode == UTRAN_FDD and pc_UTRA_CompressedModeRequired ) + { + //@siclog "Step 12a1 - 12a2" siclog@ + //Compressed mode only applicable in FDD + f_UTRAN_PhyChReconf_InterRatCompresseModeSet_Common_r11(utran_Cell9, cs_TGPS_Status_r10_Deactive); + + //Changed to use activation time test step and derive TGCFN from this test step + v_CFNInfo := f_CalculateActTime ( utran_Cell9 ); + v_TGCFN := v_CFNInfo.tGCFN; + v_Tgps_Reconfiguration_CFN := v_TGCFN; + + //refresh security info + v_SecurityInfo := f_UTRAN_Security_Get(); + + //@siclog "Step 13" siclog@ + //The SS transmits a MEASUREMENT CONTROL message to setup inter-RAT measurement on Cell 9. + U_AM.send ( cas_RLC_Data_Req_NoCnf(utran_CellDedicated, + tsc_RB2, + cs_MeasurementControl_InterRATMeasurement_FDD_r11(v_SecurityInfo.dl_IntegrityCheckInfo, + v_RRC_TI, + v_EUTRASysInfo.Eutra[0].Arfcn, + v_EUTRA_MeasurementBandwidth, + v_Tgps_Reconfiguration_CFN, + v_TGCFN))); + if ( pc_InterRAT_DL_CompressedModeRequired ) { + f_UTRAN_CPHY_RL_Modify ( cas_CompressedModeStatusInfo_REQ (utran_Cell9, + tsc_DL_DPCH1, + cs_DPCH_CompressedModeStatusInfoActive(v_Tgps_Reconfiguration_CFN, v_TGCFN), + cs_ActivateCFN ( v_CFNInfo.actTime)) ); + + } + if ( pc_InterRAT_UL_CompressedModeRequired ) { + f_UTRAN_CPHY_RL_Modify ( cas_CompressedModeStatusInfo_REQ (utran_Cell9, + tsc_UL_DPCH1, + cs_DPCH_CompressedModeStatusInfoActive(v_Tgps_Reconfiguration_CFN, v_TGCFN), + cs_ActivateCFN ( v_CFNInfo.actTime)) ); + } + } else if (v_FDD_TDD_Mode == UTRAN_FDD and not pc_UTRA_CompressedModeRequired ) { + //refresh security info + v_SecurityInfo := f_UTRAN_Security_Get(); + + //@siclog "Step 13" siclog@ + //The SS transmits a MEASUREMENT CONTROL message to setup inter-RAT measurement on Cell 9. + U_AM.send ( cas_RLC_Data_Req_NoCnf(utran_CellDedicated, + tsc_RB2, + cs_MeasurementControl_InterRATMeasurement_NoCompMode_FDD_r11(v_SecurityInfo.dl_IntegrityCheckInfo, + v_RRC_TI, + v_EUTRASysInfo.Eutra[0].Arfcn, + v_EUTRA_MeasurementBandwidth))); + + + }else + { + v_SecurityInfo := f_UTRAN_Security_Get(); + f_UTRAN_CPHY_MeasurementConfig_TDD (utran_Cell9, cs_ActivateNow, cs_CellDCHMeasOccasionInfo_TDD128_r9); + //@siclog "Step 13" siclog@ + //The SS transmits a MEASUREMENT CONTROL message to setup inter-RAT measurement on Cell 9. + U_AM.send ( cas_RLC_Data_Req_NoCnf(utran_CellDedicated, + tsc_RB2, + cs_MeasurementControl_InterRATMeasurement_TDD_r11(v_SecurityInfo.dl_IntegrityCheckInfo, + v_RRC_TI, + v_EUTRASysInfo.Eutra[0].Arfcn, + v_EUTRA_MeasurementBandwidth, + cs_CellDCHMeasOccasionInfo_TDD128_r9))); + }; + + // Send trigger from UTRAN side + f_IRAT_SendCoOrd (EUTRA, cms_IRAT_Trigger); + + //@siclog "Step 14" siclog@ + //The SS changes Cell 9 and Cell 12 parameters according to the row "T3" in Table 8.6.5.1a.3.2-1. + f_UTRAN_SetCellPower(utran_Cell9, v_T3_CPICH_PCCPCH_Cell9, v_T3_CPICH_PCCPCH_Cell9); + + //@siclog "Step 15" siclog@ + //The UE transmits a MEASUREMENT REPORT message on Cell 9 including the E-UTRA event results. + U_AM.receive(car_RLC_Data_Ind(utran_CellDedicated, tsc_RB2, cr_MeasurementReport_EUTRACell(v_EUTRASysInfo.Eutra[0].Arfcn, + v_EUTRASysInfo.Eutra[0].HO.PhysCellId,?,?))); + + + v_RRCConnectionConfigurationMessage := f_Encode_RRCConnectionReconfiguration_HOToEUTRA (v_EUTRASysInfo.Eutra[0]); + + //@siclog "Step 16" siclog@ + //The SS transmits a HANDOVER FROM UTRAN COMMAND message on Cell 9. + U_AM.send(cas_RLC_Data_Req_NoCnf(utran_CellDedicated, + tsc_RB2, + cs_HandoverFromUTRANCommand_EUTRA_r11(v_SecurityInfo.dl_IntegrityCheckInfo, + v_RRC_TI, + v_RRCConnectionConfigurationMessage))); + // Wait for the end of the test case + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + + //postamble + f_UTRAN_TestBody_Set(false); + + //Release UTRAN Cell 9 + f_UTRAN_ReleaseCell(utran_Cell9, f_UTRAN_CellInfo_GetConfigType(utran_Cell9)); + }//end of Test case 8.6.5.1a + + //================================================================ + /* + * @desc REFERENCE TS 36.523-1 clause 8.6.5.4 + * @status + */ + function f_TC_8_6_5_4_UTRAN() runs on UTRAN_PTC + { //Radio Link Failure logging / Reporting of selected UTRA cell + var UTRAN_FDD_TDD_Type v_FDD_TDD_Mode; + var integer v_T1_PCCPCH_CPICH_Cell5 := -70; + var integer v_T2_PCCPCH_CPICH_Cell5 := -85;//@sic R5-142454 sic@ + var UTRAN_SecurityInfo_Type v_SecurityInfo; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI; + var TGCFN v_TGCFN; + var TGPS_Reconfiguration_CFN v_Tgps_Reconfiguration_CFN; + var UTRAN_CFN_Info_Type v_CFNInfo; + var octetstring v_RRCConnectionConfigurationMessage; + var IRAT_CoOrd_SysInfo_Type v_EUTRASysInfo; + var EUTRA_MeasurementBandwidth v_EUTRA_MeasurementBandwidth; + + // Initialise all cells + f_UTRAN_Init ( EUTRA_UTRAN ); + + v_SecurityInfo := f_UTRAN_Security_Get ( ); + v_EUTRA_MeasurementBandwidth := f_UTRAN_ConvertIntegerToEUTRA_MeasurementBandwidth(f_ConvertDL_BandwidthPIXITToInteger()); + + //Send the cell info to the EUTRA component + f_UTRAN_Send_IR_SysInfoToEUTRA ( utran_Cell5 ); + + //Get Cell Parameters for EUTRA cell + v_EUTRASysInfo := f_IRAT_WaitForCoOrd_SysInfo (EUTRA); + + // Create and configure Cell 5 + // Cell started switched on with default power level, -60 and max attenuation + f_UTRAN_SS_CreateCellDCH ( utran_Cell5 ); + + // Start sending System Information + f_UTRAN_SendDefSysInfo ( utran_Cell5 ); + + // UE starts registered in EUTRA, wait its Auth Params + f_UTRAN_InterRAT_InitialiseAuthParams(); + + // Get FDD or TDD mode + v_FDD_TDD_Mode := f_UTRAN_CellInfo_GetFDD_TDD ( utran_Cell5 ); + + f_UTRAN_TestBody_Set(true); + + //@siclog "Step 1" siclog@ + //The SS changes Cell 1 and Cell 5 parameters according to the row "T1" in Table 8.6.5.4.3.2-1. + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + f_UTRAN_SetCellPower(utran_Cell5, v_T1_PCCPCH_CPICH_Cell5, v_T1_PCCPCH_CPICH_Cell5); + + //@siclog "Step 2" siclog@ + //Generic test procedure in TS 36.508 subclause 6.4.2.8 is performed on Cell 5. + //NOTE: The UE attempts to connect Cell 5 after RLF in E-UTRA while T311 is running. The UE performs an RAU procedure and the RRC connection is released. + f_UTRAN_508CheckCampOnNewUtranCell(utran_Cell5, cell_Dch); + + //@siclog Step 3 - 7 siclog@ + //Step 7 to 11 of test procedure in TS 34.123-1 subclause 12.9.14.4 is performed on Cell 5 + //using the UTRA reference radio bearer parameters and combination "UTRA PS RB" according to TS 36.508 subclause 4.8.3 and Table 4.8.3-1. + //NOTE: The UE performs NW initiated RAB re-establishment in a UTRAN cell. + f_UTRAN_MT_RAB_ReEst(utran_Cell5, cell_DCH_HS_DSCH); + + // UE's re-done authentication in establishing the RAB so need to send the new params to EUTRA + f_UTRAN_SendAuthCoOrdParameters (EUTRA, omit); + + if (v_FDD_TDD_Mode == UTRAN_FDD and pc_UTRA_CompressedModeRequired ) + { + //@siclog "Step 8a1 - 8a2" siclog@ + //Compressed mode only applicable in FDD + f_UTRAN_PhyChReconf_InterRatCompresseModeSet_Common_r11(utran_Cell5, cs_TGPS_Status_r10_Deactive); + + //Changed to use activation time test step and derive TGCFN from this test step + v_CFNInfo := f_CalculateActTime ( utran_Cell5 ); + v_TGCFN := v_CFNInfo.tGCFN; + v_Tgps_Reconfiguration_CFN := v_TGCFN; + + //refresh security info + v_SecurityInfo := f_UTRAN_Security_Get(); + + //@siclog "Step 9" siclog@ + //ss tx a measurement control to setup inter-RAT on cell 5 + U_AM.send ( cas_RLC_Data_Req_NoCnf(utran_CellDedicated, + tsc_RB2, + cs_MeasurementControl_InterRATMeasurement_FDD_r11(v_SecurityInfo.dl_IntegrityCheckInfo, + v_RRC_TI, + v_EUTRASysInfo.Eutra[0].Arfcn, + v_EUTRA_MeasurementBandwidth, + v_Tgps_Reconfiguration_CFN, + v_TGCFN))); + if ( pc_InterRAT_DL_CompressedModeRequired ) { + f_UTRAN_CPHY_RL_Modify ( cas_CompressedModeStatusInfo_REQ (utran_Cell5, + tsc_DL_DPCH1, + cs_DPCH_CompressedModeStatusInfoActive(v_Tgps_Reconfiguration_CFN, v_TGCFN), + cs_ActivateCFN ( v_CFNInfo.actTime)) ); + + } + if ( pc_InterRAT_UL_CompressedModeRequired ) { + f_UTRAN_CPHY_RL_Modify ( cas_CompressedModeStatusInfo_REQ (utran_Cell5, + tsc_UL_DPCH1, + cs_DPCH_CompressedModeStatusInfoActive(v_Tgps_Reconfiguration_CFN, v_TGCFN), + cs_ActivateCFN ( v_CFNInfo.actTime)) ); + } + } else if (v_FDD_TDD_Mode == UTRAN_FDD and not pc_UTRA_CompressedModeRequired ) { + //refresh security info + v_SecurityInfo := f_UTRAN_Security_Get(); + + //@siclog "Step 9" siclog@ + //ss tx a measurement control to setup inter-RAT on cell 5 + U_AM.send ( cas_RLC_Data_Req_NoCnf(utran_CellDedicated, + tsc_RB2, + cs_MeasurementControl_InterRATMeasurement_NoCompMode_FDD_r11(v_SecurityInfo.dl_IntegrityCheckInfo, + v_RRC_TI, + v_EUTRASysInfo.Eutra[0].Arfcn, + v_EUTRA_MeasurementBandwidth))); + + + + }else + { + v_SecurityInfo := f_UTRAN_Security_Get(); + f_UTRAN_CPHY_MeasurementConfig_TDD (utran_Cell5, cs_ActivateNow, cs_CellDCHMeasOccasionInfo_TDD128_r9); //@sic R5-134957 sic@ + //@siclog "Step 9" siclog@ + //ss tx a measurement control to setup inter-RAT on cell 5 + U_AM.send ( cas_RLC_Data_Req_NoCnf(utran_CellDedicated, + tsc_RB2, + cs_MeasurementControl_InterRATMeasurement_TDD_r11(v_SecurityInfo.dl_IntegrityCheckInfo, + v_RRC_TI, + v_EUTRASysInfo.Eutra[0].Arfcn, + v_EUTRA_MeasurementBandwidth, + cs_CellDCHMeasOccasionInfo_TDD128_r9))); + }; + + // Send trigger from UTRAN side + f_IRAT_SendCoOrd (EUTRA, cms_IRAT_Trigger); + + //@siclog "Step 10" siclog@ + //The SS changes Cell 1 and Cell 5 parameters according to the row "T2" in Table 8.6.5.4.3.2-1. + f_UTRAN_SetCellPower(utran_Cell5, v_T2_PCCPCH_CPICH_Cell5, v_T2_PCCPCH_CPICH_Cell5); + + //@siclog "Step 11" siclog@ + //The UE transmits a MEASUREMENT REPORT message on Cell 5 including the E-UTRA event results. + U_AM.receive(car_RLC_Data_Ind(utran_CellDedicated, tsc_RB2, cr_MeasurementReport_EUTRACell(v_EUTRASysInfo.Eutra[0].Arfcn, + v_EUTRASysInfo.Eutra[0].HO.PhysCellId,?,?))); + + + v_RRCConnectionConfigurationMessage := f_Encode_RRCConnectionReconfiguration_HOToEUTRA (v_EUTRASysInfo.Eutra[0]); + + //@siclog "Step 12" siclog@ + //SS tx a handover from utran command on cell5 + U_AM.send(cas_RLC_Data_Req_NoCnf(utran_CellDedicated, + tsc_RB2, + cs_HandoverFromUTRANCommand_EUTRA_r11(v_SecurityInfo.dl_IntegrityCheckInfo, + v_RRC_TI, + v_RRCConnectionConfigurationMessage))); + // Wait for the end of the test case + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + + //postamble + f_UTRAN_TestBody_Set(false); + + // Release UTRAN Cell 5 + f_UTRAN_ReleaseCell(utran_Cell5, f_UTRAN_CellInfo_GetConfigType(utran_Cell5)); + }//end of Test case 8.6.5.4 + +} diff --git a/LTE_A_IWD_14wk37/LTE_A/8_6/RRC_MDT_Logged.ttcn b/LTE_A_IWD_14wk37/LTE_A/8_6/RRC_MDT_Logged.ttcn new file mode 100644 index 0000000..fae236c --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/8_6/RRC_MDT_Logged.ttcn @@ -0,0 +1,3204 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 11:16:45 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12142 $ +/******************************************************************************/ + +module RRC_MDT_Logged +{ + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_Component all; + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from EPS_NAS_TypeDefs all; + import from EPS_NAS_Constants all; + import from EUTRA_RRC_Templates all; + import from EUTRA_SRB_Templates all; + import from EUTRA_AspCommon_Templates all; + import from EUTRA_CellInfo all; + import from EUTRA_CommonProcedures all; + import from EUTRA_ConfigurationSteps all; + import from EPS_NAS_Templates all; + import from EUTRA_MDT_Specific_Templates all; + import from EUTRA_Timing all; + import from EUTRA_RRCSteps all; + import from EUTRA_ASP_SrbDefs all; + import from NAS_CommonTemplates all; + import from EUTRA_NASSteps all; + import from EPS_NAS_MsgContainers all; + import from EUTRA_Paging all; + import from EUTRA_NASCommonFunctions all; + import from NAS_CommonTypeDefs all; + import from CommonIratDefs all; + import from EUTRA_ASP_SrbDefs all; + import from EUTRA_UE_Location all; + import from EUTRA_SysInfo_Templates all; + import from EUTRA_AuxiliaryFunctions all; + import from EUTRA_IdleMode all; + import from EUTRA_IRATFunctions all; + import from EUTRA_ASP_NasCtrl all; + import from EUTRA_CellCfg_Templates all; //@sic R5s130582 sic@ + import from EUTRA_SecurityFunctions all; //@sic R5s130591 sic@ + import from EUTRA_SecuritySteps all; //@sic R5s130591 sic@ + + //**************************************************************** + //Specific Templates + //**************************************************************** + + template (value) SystemInformationBlockType6 cs_508_SystemInformationBlockType6_ReslcUTRA(template (omit) CarrierFreqListUTRA_FDD p_CarrierFreqListUTRA_FDD, + template (omit) CarrierFreqListUTRA_TDD p_CarrierFreqListUTRA_TDD, + template (value) T_Reselection p_T_ReselectionUTRA := 0) := + { /* @status APPROVED (LTE_A) */ + carrierFreqListUTRA_FDD := p_CarrierFreqListUTRA_FDD, + carrierFreqListUTRA_TDD := p_CarrierFreqListUTRA_TDD, + t_ReselectionUTRA := p_T_ReselectionUTRA, + t_ReselectionUTRA_SF := omit, + lateNonCriticalExtension := omit + }; + + template (present) MeasResultList2GERAN_r10 cr_MeasResultList2GERAN_r10_1Entry(template CarrierFreqGERAN p_CarrierFreq, + template PhysCellIdGERAN p_PhysCellId, + template MeasResultGERAN.cgi_Info p_Cgi_Info, + template integer p_Rssi) := + { + cr_MeasResultListGERAN_r9_1Entry(p_CarrierFreq, p_PhysCellId, p_Cgi_Info, p_Rssi) + }; + + template (present) LogMeasInfo_r10.measResultNeighCells_r10 cr_MeasResultNeighCells_r10_GERAN_1Entry(template CarrierFreqGERAN p_CarrierFreq, + template PhysCellIdGERAN p_PhysCellId, + template MeasResultGERAN.cgi_Info p_Cgi_Info, + template integer p_Rssi) := + + cr_MeasResultNeighCells_r10(omit, omit, cr_MeasResultList2GERAN_r10_1Entry(p_CarrierFreq, p_PhysCellId, p_Cgi_Info, p_Rssi)); + + /* + * @desc Assign the parameterised t-ReselectionEUTRAN value in SIB5 of the cell + * @param p_CellId + * @param p_T_ReselectionEutran + * @status APPROVED (LTE_A) + */ + function f_EUTRA_CellInfo_SetSysInfoType5_T_Reselection(EUTRA_CellId_Type p_CellId, + T_ReselectionEutran_Type p_T_ReselectionEutran) runs on EUTRA_PTC + { + var template (value) EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + + v_CellInfo.Sysinfo.BCCH_Info.SIs[2].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib5.interFreqCarrierFreqList[0].t_ReselectionEUTRA := p_T_ReselectionEutran; + f_EUTRA_CellInfo_Set(p_CellId, v_CellInfo); + } + + /* + * @desc Common function to receive and check contents of UEInformationREsponse message + * @param p_CellId + * @param p_AbsoluteTimeInfo + * @param p_PLMN_Identity_configured + * @param p_CellIdentity_configured + * @param p_Frequency_IE_f1 + * @param p_CellIdentity_configured2 (default value: omit) + * @param p_CellIdentity_notPresent (default value: omit) + * @param p_PLMN_CellIdentity_notPresent (default value: omit) + * @param p_MinimumEntries (default value: 1) + * @return SRB_COMMON_IND + * @status APPROVED (LTE_A) + */ + function f_EUTRA_ReceiveUEinformation(EUTRA_CellId_Type p_CellId, + B48_Type p_AbsoluteTimeInfo, + PLMN_Identity p_PLMN_Identity_configured, + template (omit) CellIdentity p_CellIdentity_configured, //@sic R5s140403 sic@ + Frequency_IE_Type p_Frequency_IE_f1, + template (omit) CellIdentity p_CellIdentity_configured2 := omit, //@sic R5s140403 sic@ + template (omit) CellIdentity p_CellIdentity_notPresent := omit, //@sic R5s140403 sic@ + template (omit) PLMN_Identity p_PLMN_CellIdentity_notPresent := omit, //@sic R5s140403 sic@ + integer p_MinimumEntries := 1) runs on EUTRA_PTC return SRB_COMMON_IND + { //@sic R5s130566, R5s130568 sic@ + var SRB_COMMON_IND v_ReceivedAsp; + var LogMeasInfo_r10 v_LogMeasInfo_r10; + var integer v_FieldCnt; + var integer i; + + SRB.receive(car_SRB2_RrcPdu_IND(p_CellId, + cr_508_UEInformationResponse(tsc_RRC_TI_Def, omit, omit, cr_LogMeasReport_r10(p_AbsoluteTimeInfo, p_PLMN_Identity_configured,'0000EF'O, '001A'O, '05'O, *, *)))) + ->value v_ReceivedAsp; + + v_FieldCnt := lengthof(v_ReceivedAsp.Signalling.Rrc.Dcch.message_.c1.ueInformationResponse_r9.criticalExtensions.c1.ueInformationResponse_r9.nonCriticalExtension.nonCriticalExtension.logMeasReport_r10.logMeasInfoList_r10); + if (v_FieldCnt < p_MinimumEntries) {f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Not enough LogMeasurementInfo entries")} + + for (i:=0; i value v_ReceivedAsp; //@sic R5s130525 sic@ + + v_FieldCnt := lengthof(v_ReceivedAsp.Signalling.Rrc.Dcch.message_.c1.ueInformationResponse_r9.criticalExtensions.c1.ueInformationResponse_r9.nonCriticalExtension.nonCriticalExtension.logMeasReport_r10.logMeasInfoList_r10); //@sic R5s130525 sic@ + if (v_FieldCnt < 2) {f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 21: Not enough LogMeasurementInfo entries")} //@sic R5s130525 sic@ + + for (i:=0; i value v_ReceivedAsp; //@sic R5s130584 sic@ + + v_FieldCnt := lengthof(v_ReceivedAsp.Signalling.Rrc.Dcch.message_.c1.ueInformationResponse_r9.criticalExtensions.c1.ueInformationResponse_r9.nonCriticalExtension.nonCriticalExtension.logMeasReport_r10.logMeasInfoList_r10); //@sic R5s130584 sic@ + if (v_FieldCnt < 2) {f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 21: Not enough LogMeasurementInfo entries")} //@sic R5s130584 sic@ + + for (i:=0; i value v_ReceivedAsp; //@sic R5s140533 sic@ + + + v_NAS_Ind := v_ReceivedAsp.Signalling.Nas[0]; + if(ispresent (v_ReceivedAsp.Signalling.Rrc.Dcch.message_.c1.rrcConnectionSetupComplete.criticalExtensions.c1.rrcConnectionSetupComplete_r8.nonCriticalExtension)) + { //@sic R5s140110, R5s140112 sic@ + v_LogMeasAvailable := v_ReceivedAsp.Signalling.Rrc.Dcch.message_.c1.rrcConnectionSetupComplete.criticalExtensions.c1.rrcConnectionSetupComplete_r8.nonCriticalExtension.nonCriticalExtension.logMeasAvailable_r10; + if (isvalue(v_LogMeasAvailable)) { + //@siclog "Step 33a2 - 33a5" siclog@ + //Steps 6 to 9 of the generic radio bearer establishment procedure in TS 36.508 subclause 4.5.3.3 are executed to successfully complete the service request procedure on Cell 2. + f_EUTRA_ServiceReqPostamble_508Steps6_9(eutra_Cell2, v_NAS_Ind); + + //@siclog "Step 33a6" siclog@ + //The SS send an UEInformationRequest message to get logMeasReport. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell2, cs_TimingInfo_Now, + cs_508_UEInformationRequest(tsc_RRC_TI_Def))); + + //@siclog "Step 33a7" siclog@ + //Check: Does the UE send an UEInformationResponse message with logged serving cell measurements of Cell 2? + v_ReceivedAsp := f_EUTRA_ReceiveUEinformation(eutra_Cell2, + v_AbsoluteTimeInfo, + v_PLMN_Identity_Cell1, + v_CellIdentity_Cell11, //@sic R5s140533 sic@ + v_Frequency_IE_f1 + ); //@sic R5s140110, R5s140112 sic@ + + v_FieldCnt := lengthof(v_ReceivedAsp.Signalling.Rrc.Dcch.message_.c1.ueInformationResponse_r9.criticalExtensions.c1.ueInformationResponse_r9.nonCriticalExtension.nonCriticalExtension.logMeasReport_r10.logMeasInfoList_r10); //@sic R5s140110, R5s140112 sic@ + + for (i:=0; i value v_ReceivedAsp; + + v_NAS_Ind := v_ReceivedAsp.Signalling.Nas[0]; + if(ispresent (v_ReceivedAsp.Signalling.Rrc.Dcch.message_.c1.rrcConnectionSetupComplete.criticalExtensions.c1.rrcConnectionSetupComplete_r8.nonCriticalExtension)) //.nonCriticalExtension.logMeasAvailable_r10) + { //@sic R5s140110, R5s140112 sic@ + v_LogMeasAvailable := v_ReceivedAsp.Signalling.Rrc.Dcch.message_.c1.rrcConnectionSetupComplete.criticalExtensions.c1.rrcConnectionSetupComplete_r8.nonCriticalExtension.nonCriticalExtension.logMeasAvailable_r10; + if (isvalue(v_LogMeasAvailable)) { + //@siclog "Step 46a2 - 46a5" siclog@ + //Steps 6 to 9 of the generic radio bearer establishment procedure in TS 36.508 subclause 4.5.3.3 are executed to successfully complete the service request procedure on Cell 2. + f_EUTRA_ServiceReqPostamble_508Steps6_9(eutra_Cell11, v_NAS_Ind); + + //@siclog "Step 46a6" siclog@ + //The SS send an UEInformationRequest message to get logMeasReport. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell11, + cs_TimingInfo_Now, + cs_508_UEInformationRequest(tsc_RRC_TI_Def))); + + //@siclog "Step 46a7" siclog@ + //Check: Does the UE send an UEInformationResponse message with logged serving cell measurements of Cell 11? + v_ReceivedAsp := f_EUTRA_ReceiveUEinformation(eutra_Cell11, + v_AbsoluteTimeInfo, + v_PLMN_Identity_Cell1, + v_CellIdentity_Cell2, + v_Frequency_IE_f1 + ); //@sic R5s140403, R5s140110, R5s140112 sic@ + + v_FieldCnt := lengthof(v_ReceivedAsp.Signalling.Rrc.Dcch.message_.c1.ueInformationResponse_r9.criticalExtensions.c1.ueInformationResponse_r9.nonCriticalExtension.nonCriticalExtension.logMeasReport_r10.logMeasInfoList_r10); //@sic R5s140110, R5s140112 sic@ + + for (i:=0; ivalue v_ReceivedAsp; + + v_Len := lengthof(v_ReceivedAsp.Signalling.Rrc.Dcch.message_.c1.ueInformationResponse_r9.criticalExtensions.c1.ueInformationResponse_r9.nonCriticalExtension.nonCriticalExtension.logMeasReport_r10.logMeasInfoList_r10); + for (i:=0; i value v_ReceivedAsp; //@sic R5s130582, R5s130700 sic@ + + v_FieldCnt := lengthof(v_ReceivedAsp.Signalling.Rrc.Dcch.message_.c1.ueInformationResponse_r9.criticalExtensions.c1.ueInformationResponse_r9.nonCriticalExtension.nonCriticalExtension.logMeasReport_r10.logMeasInfoList_r10); //@sic R5s130591 sic@ + if (v_FieldCnt < 1) {f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 16: Not enough LogMeasurementInfo entries")} //@sic R5s130582 sic@ + + for (i:=0; i value v_ReceivedAsp; //@sic R5s130591 sic@ + + v_FieldCnt := lengthof(v_ReceivedAsp.Signalling.Rrc.Dcch.message_.c1.ueInformationResponse_r9.criticalExtensions.c1.ueInformationResponse_r9.nonCriticalExtension.nonCriticalExtension.logMeasReport_r10.logMeasInfoList_r10); //@sic R5s130591 sic@ + if (v_FieldCnt < 1) {f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 20: Not enough LogMeasurementInfo entries")} //@sic R5s130591 sic@ + + for (i:=0; i value v_SRB_COMMON_IND; //@sic R5s130568 sic@ + + if (isvalue(v_SRB_COMMON_IND.Signalling.Rrc.Dcch.message_.c1.ueInformationResponse_r9.criticalExtensions.c1.ueInformationResponse_r9.nonCriticalExtension)) + { + v_LogMeasReport_r10 := v_SRB_COMMON_IND.Signalling.Rrc.Dcch.message_.c1.ueInformationResponse_r9.criticalExtensions.c1.ueInformationResponse_r9.nonCriticalExtension.nonCriticalExtension.logMeasReport_r10; + + if (ispresent(v_LogMeasReport_r10)) + { + f_EUTRA_SetVerdictFailOrInconc (__FILE__, __LINE__, "Test Case 8.6.2.7 Step 15"); + } + } //@sic R5s130568 sic@ + + //@siclog "Step 16" siclog@ + //The SS transmits an RRCConnectionRelease message. + f_EUTRA_RRC_ConnectionRelease(eutra_Cell1); + + //@siclog "Step 17" siclog@ + //Wait 30s for UE performing the logging at regular time intervals. + f_Delay(30.0); + + //@siclog "Step 18-26" siclog@ + //Steps 1 to 9 of the generic radio bearer establishment procedure in TS 36.508 subclause 4.5.3.3 are executed to successfully complete the service request procedure on Cell 1. + f_EUTRA_RbEst_Def(eutra_Cell1); + + //@siclog "Step 27" siclog@ + //The SS transmits a UEInformationRequest message on Cell 1. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_508_UEInformationRequest(tsc_RRC_TI_Def))); + + //@siclog "Step 28" siclog@ + f_EUTRA_ReceiveUEinformation(eutra_Cell1, v_AbsoluteTimeInfo, v_PLMN_Identity_Cell1, v_CellIdentity_Cell1, v_Frequency_IE_f1); //@sic R5s130568 sic@ + + //@siclog "Step 29" siclog@ + //The SS transmits an RRCConnectionRelease message. + f_EUTRA_RRC_ConnectionRelease(eutra_Cell1); + + //@siclog "Step 30" siclog@ + //Cause the UE to switched off, or detaches from the network. + f_EUTRA_UE_Detach_SwitchOffUe ( eutra_Cell1, RRC_IDLE ); //@sic R5s130568 sic@ + + //Switch on UE,or attaches to the network. + //@siclog "Step 31" siclog@ + f_EUTRA_SwitchOnUEandStartIP(eutra_Cell1); //@sic R5s130568 sic@ + //@siclog "Step 32-47" siclog@ + // The UE performs steps 2-17 of the registration procedure described in TS 36.508 table 4.5.2.3-1 + f_EUTRA_AttachProcedure (eutra_Cell1, "No Verdict", NORMAL); + //@siclog "Step 48" siclog@ + //Wait 30s to allow UE to activate logging. + f_Delay(30.0); + + //@siclog "Step 49" siclog@ + //The SS transmits a Paging message. + f_EUTRA_UE_Page_Def(eutra_Cell1); + + //@siclog "Step 50" siclog@ + //The UE transmits an RRCConnectionRequest message. + f_EUTRA_RRC_ConnectionRequest_Def(eutra_Cell1); + + //@siclog "Step 51" siclog@ + //SS transmit an RRCConnectionSetup message. + f_EUTRA_RRC_ConnectionSetup_Def (eutra_Cell1); + + //@siclog "Step 52" siclog@ + //The UE transmit an RRCConnectionSetupComplete message + v_NasInd := f_EUTRA_RRCConnectionSetupComplete_Def(eutra_Cell1, + cr_508_RRCConnectionSetupComplete(v_RRC_TI, ?), + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_508_SERVICE_REQUEST(f_EUTRA_SecurityKSIasme_Get()))); //@sic R5s130568 sic@ + + f_EUTRA_ServiceReqPostamble_508Steps6_9( eutra_Cell1, v_NasInd ); //@sic R5s130568 sic@ + + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.2.7 Step 52"); + + f_EUTRA_TestBody_Set (false); + + // Postamble + f_EUTRA_Postamble(eutra_Cell1, E2_CONNECTED); + + } // end of f_TC_8_6_2_7_EUTRA + + /* + * @desc REFERENCE TS 36.523-1 clause 8.6.2.8 + * @status APPROVED (LTE_A) + */ + function f_TC_8_6_2_8_EUTRA() runs on EUTRA_PTC + { //Logged MDT / Maintaining logged measurement configuration / UE state transitions and mobility + var template (value) CellPowerList_Type v_CellPowerList_AtT0; + var template (value) CellPowerList_Type v_CellPowerList_AtT1; + var template (value) CellPowerList_Type v_CellPowerList_AtT2; + var template (value) CellPowerList_Type v_CellPowerList_AtT3; + var template (value) CellPowerList_Type v_CellPowerList_AtT4; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var Frequency_IE_Type v_Frequency_IE_f1; + var Frequency_IE_Type v_Frequency_IE_f2; + var EUTRA_CellInfo_Type v_CellInfo_Cell1; + var EUTRA_CellInfo_Type v_CellInfo_Cell2; + var EUTRA_CellInfo_Type v_CellInfo_Cell3; //@sic R5s131035, R5-140778 sic@ + var CellIdentity v_CellIdentity_Cell1; + var CellIdentity v_CellIdentity_Cell2; + var CellIdentity v_CellIdentity_Cell3; //@sic R5s131035, R5-140778 sic@ + var PLMN_Identity v_PLMN_Identity_Cell1; + var PLMN_Identity v_PLMN_Identity_Cell2; + var PLMN_Identity v_PLMN_Identity_Cell3; //@sic R5s131035, R5-140778 sic@ + var T_ReselectionEutran_Type v_T_Reselection := 7; + var SRB_COMMON_IND v_ReceivedAsp, v_SRB_COMMON_IND; + var NAS_MSG_Indication_Type v_NAS_Ind; + var CellGlobalIdEUTRA v_Cgi_1; + var CellGlobalIdEUTRA v_Cgi_2; + var template (omit) RRCConnectionSetupComplete_LogMeasAvailable_Type v_LogMeasAvailable; + var B48_Type v_AbsoluteTimeInfo; + + v_CellPowerList_AtT0 := { + cs_CellPower (eutra_Cell1, tsc_ServingCellRS_EPRE) + }; + + v_CellPowerList_AtT1 := { + cs_CellPower (eutra_Cell1, tsc_NonSuitableOffCellRS_EPRE), //@sic R5-140778 sic@ + cs_CellPower (eutra_Cell3, tsc_ServingCellRS_EPRE) //@sic R5s131035, R5-140778 sic@ + }; + v_CellPowerList_AtT2 := { + cs_CellPower (eutra_Cell1, tsc_NonSuitableOffCellRS_EPRE), + cs_CellPower (eutra_Cell2, tsc_ServingCellRS_EPRE), //@sic R5s140403 sic@ + cs_CellPower (eutra_Cell3, tsc_NonSuitableOffCellRS_EPRE) //@sic R5s131035, R5-140778 sic@ + }; + v_CellPowerList_AtT3 := { + cs_CellPower (eutra_Cell1, tsc_NonSuitableOffCellRS_EPRE), + cs_CellPower (eutra_Cell2, tsc_NonSuitableOffCellRS_EPRE), + cs_CellPower (eutra_Cell3, tsc_NonSuitableOffCellRS_EPRE) //@sic R5s131035, R5-140778 sic@ + }; + v_CellPowerList_AtT4 := { + cs_CellPower (eutra_Cell1, tsc_ServingCellRS_EPRE) + }; + + // Init variables + f_EUTRA_Init(c3); //@sic R5s131035 sic@ + f_EUTRA_CellInfo_SetPLMN_1Entry ( eutra_Cell3, cs_HPLMN_002_11); //@sic R5s131035, R5-140778 sic@ + f_EUTRA_CellInfo_SetSysInfo_T_Reselection(eutra_Cell1, v_T_Reselection); + + v_Frequency_IE_f1 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell2); + v_Frequency_IE_f2 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell3); //@sic R5s131035, R5-140778 sic@ + + v_CellInfo_Cell1 := f_EUTRA_CellInfo_Get(eutra_Cell1); + v_CellIdentity_Cell1 := v_CellInfo_Cell1.CellIds.CellIdentity; + v_PLMN_Identity_Cell1 := v_CellInfo_Cell1.NAS_Parameters.Guti_Parameters.PLMN_Identity; + + v_CellInfo_Cell2 := f_EUTRA_CellInfo_Get(eutra_Cell2); + v_CellIdentity_Cell2 := v_CellInfo_Cell2.CellIds.CellIdentity; + v_PLMN_Identity_Cell2 := v_CellInfo_Cell2.NAS_Parameters.Guti_Parameters.PLMN_Identity; + + v_CellInfo_Cell3 := f_EUTRA_CellInfo_Get(eutra_Cell3); //@sic R5s131035, R5-140778 sic@ + v_CellIdentity_Cell3 := v_CellInfo_Cell3.CellIds.CellIdentity; //@sic R5s131035, R5-140778 sic@ + v_PLMN_Identity_Cell3 := v_CellInfo_Cell3.NAS_Parameters.Guti_Parameters.PLMN_Identity; //@sic R5s131035, R5-140778 sic@ + + //Set SIB4 according to specific message contents and 36.508 cl. 6.3.1.1 Table 6.3.1.1-1 + //@sic R5-131858 sic@ + f_EUTRA_CellInfo_SetSIB4 (eutra_Cell1, cs_508_Cell1_DefSIB4_IntraFreqCellList); + f_EUTRA_CellInfo_SetSIB4 (eutra_Cell2, cs_508_Cell2_DefSIB4_IntraFreqCellList); + + f_EUTRA_CellInfo_SetTAC(eutra_Cell2, oct2bit(tsc_TAC2)); //@sic R5s131035, R5-140778 sic@ + + // Create and configure Cells + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_CellConfig_Def(eutra_Cell2); + f_EUTRA_CellConfig_Def(eutra_Cell3); //@sic R5s131035, R5-140778 sic@ + + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT0); + // Preamble + f_EUTRA_SwitchOnUEandStartIP(eutra_Cell1); //@sic R5s131035 sic@ + f_EUTRA_IdleUpdated_WithEplmn (eutra_Cell1, + PREAMBLE, + cs_PLMN_List_1PLMN (f_Asn2Nas_PlmnId (f_EUTRA_CellInfo_GetGutiPLMN (eutra_Cell3)))); //@sic R5s131035 sic@ + + f_EUTRA_RbEst_Def(eutra_Cell1); + + f_EUTRA_TestBody_Set (true); + + //@siclog "Step 1" siclog@ + //The SS transmits a LoggedMeasurementConfiguration message on Cell 1. + v_AbsoluteTimeInfo := f_MDT_GetAbsolute_TimeStamp(); + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_LoggedMeasurementConfiguration(v_PLMN_Identity_Cell1, '0000EF'O, '001A'O, '05'O, v_AbsoluteTimeInfo, -, min10, ms2560))); + + //@siclog "Step 2" siclog@ + //SS transmits a RRCConnectionRelease message to release the RRC connection. + f_EUTRA_RRC_ConnectionRelease(eutra_Cell1); + + //@siclog "Step 3" siclog@ + //Wait 10s to allow UE to activate logging. + f_Delay(10.0); + + //@siclog "Step 4" siclog@ + //The SS changes Cell 1 level according to the row "T1" in table 8.6.2.8.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + + //@siclog "Step 5 - 10" siclog@ + //Steps 1 to 6 of generic test procedure in TS 36.508 subclause 6.4.2.7. And the UE move to idle mode on Cell 3. + f_EUTRA_TrackingAreaUpdate_WithEplmn (eutra_Cell3, + tsc_RRC_TI_Def, + cs_PLMN_List_1PLMN(f_Asn2Nas_PlmnId(f_EUTRA_CellInfo_GetGutiPLMN(eutra_Cell2)))); //@sic R5s131035, R5-140778 sic@ + + //@siclog "Step 11" siclog@ + //Wait 10 seconds for UE to perform the logging at regular time interval. + f_Delay(10.0); + + //@siclog "Step 12" siclog@ + //The SS transmits a Paging message. + f_EUTRA_UE_Page_Def(eutra_Cell3); //@sic R5s131035, R5-140778 sic@ + + //@siclog "Step 13" siclog@ + //The UE transmits an RRCConnectionRequest message. + f_EUTRA_RRC_ConnectionRequest_Def(eutra_Cell3); //@sic R5s131035, R5-140778 sic@ + + //@siclog "Step 14" siclog@ + //SS transmit an RRCConnectionSetup message. + f_EUTRA_RRC_ConnectionSetup_Def (eutra_Cell3); //@sic R5s131035, R5-140778 sic@ + + //@siclog "Step 15" siclog@ + //The UE transmit an RRCConnectionSetupComplete message + SRB.receive(car_SRB1_RrcNasPdu_IND(eutra_Cell3, + cr_508_RRCConnectionSetupComplete(v_RRC_TI, ?), + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_508_SERVICE_REQUEST(f_EUTRA_SecurityKSIasme_Get())))) ->value v_ReceivedAsp; //@sic R5s131035 sic@ + + if (isvalue(v_ReceivedAsp.Signalling.Rrc.Dcch.message_.c1.rrcConnectionSetupComplete.criticalExtensions.c1.rrcConnectionSetupComplete_r8.nonCriticalExtension.nonCriticalExtension.logMeasAvailable_r10)) + { + v_LogMeasAvailable := v_ReceivedAsp.Signalling.Rrc.Dcch.message_.c1.rrcConnectionSetupComplete.criticalExtensions.c1.rrcConnectionSetupComplete_r8.nonCriticalExtension.nonCriticalExtension.logMeasAvailable_r10; + if (isvalue(v_LogMeasAvailable)) {f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 15: LogMeasAvailable must not be TRUE")} + } + else + { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.2.8 Step 15"); + } //@sic R5s131035 sic@ + + //@siclog "Step 16" siclog@ + //SS transmits a RRCConnectionRelease message to release the RRC connection. + f_EUTRA_RRC_ConnectionRelease(eutra_Cell3); //@sic R5s131035, R5-140778 sic@ + + //@siclog "Step 17" siclog@ + //The SS changes Cell levels according to the row "T2" in table 8.6.2.8.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT2); + + //@siclog "Step 18 - 23" siclog@ + //Steps 1 to 6 of generic test procedure in TS 36.508 subclause 6.4.2.7. And the UE move to idle mode on Cell 2. + f_EUTRA_TrackingAreaUpdate(eutra_Cell2); + + //@siclog "Step 24" siclog@ + //Wait 10 seconds for UE to perform the logging at regular time interval. + f_Delay(10.0); + + //@siclog "Step 25" siclog@ + //The SS transmits a Paging message. + f_EUTRA_UE_Page_Def(eutra_Cell2); + + //@siclog "Step 26" siclog@ + //The UE transmits an RRCConnectionRequest message. + f_EUTRA_RRC_ConnectionRequest_Def(eutra_Cell2); + + //@siclog "Step 27" siclog@ + //SS transmit an RRCConnectionSetup message. + f_EUTRA_RRC_ConnectionSetup_Def (eutra_Cell2); + + //@siclog "Step 28" siclog@ + //The UE transmit an RRCConnectionSetupComplete message + SRB.receive(car_SRB1_RrcNasPdu_IND(eutra_Cell2, + cr_RRCConnectionSetupComplete_r10(v_RRC_TI, ?), + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_508_SERVICE_REQUEST(f_EUTRA_SecurityKSIasme_Get())))) -> value v_ReceivedAsp; + + v_NAS_Ind := v_ReceivedAsp.Signalling.Nas[0]; + v_LogMeasAvailable := v_ReceivedAsp.Signalling.Rrc.Dcch.message_.c1.rrcConnectionSetupComplete.criticalExtensions.c1.rrcConnectionSetupComplete_r8.nonCriticalExtension.nonCriticalExtension.logMeasAvailable_r10; + if (isvalue(v_LogMeasAvailable)) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.2.8 Step 28"); + } + + //@siclog "Step 29 - 32" siclog@ + //Steps 6 to 9 of the generic radio bearer establishment procedure in TS 36.508 subclause 4.5.3.3 are executed to successfully complete the service request procedure on Cell 2. + f_EUTRA_ServiceReqPostamble_508Steps6_9(eutra_Cell2, v_NAS_Ind); + + //@siclog "Step 33" siclog@ + //The SS send an UEInformationRequest message to get logMeasReport. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell2, cs_TimingInfo_Now, cs_508_UEInformationRequest(tsc_RRC_TI_Def))); + + //@siclog "Step 34" siclog@ + //Check: Does the UE send an UEInformationResponse message with logged serving cell measurements of Cell1 and Cell 2 but without cell3? + v_SRB_COMMON_IND := f_EUTRA_ReceiveUEinformation(eutra_Cell2, + v_AbsoluteTimeInfo, + v_PLMN_Identity_Cell1, + v_CellIdentity_Cell1, + v_Frequency_IE_f1, + v_CellIdentity_Cell2, + v_CellIdentity_Cell3, + v_PLMN_Identity_Cell3 + ); //@sic R5s140403, R5s131035 sic@ + + v_Cgi_1:= v_SRB_COMMON_IND.Signalling.Rrc.Dcch.message_.c1.ueInformationResponse_r9.criticalExtensions.c1.ueInformationResponse_r9.nonCriticalExtension.nonCriticalExtension.logMeasReport_r10.logMeasInfoList_r10[0].servCellIdentity_r10; + v_Cgi_2:= v_SRB_COMMON_IND.Signalling.Rrc.Dcch.message_.c1.ueInformationResponse_r9.criticalExtensions.c1.ueInformationResponse_r9.nonCriticalExtension.nonCriticalExtension.logMeasReport_r10.logMeasInfoList_r10[1].servCellIdentity_r10; + + if (match(v_Cgi_1, cr_Cgi(v_PLMN_Identity_Cell1, v_CellIdentity_Cell1)) and match(v_Cgi_2, cr_Cgi(v_PLMN_Identity_Cell2, v_CellIdentity_Cell2))) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.2.8 Step 34"); + } + else if (match(v_Cgi_1, cr_Cgi(v_PLMN_Identity_Cell2, v_CellIdentity_Cell2)) and (match(v_Cgi_2, cr_Cgi(v_PLMN_Identity_Cell1, v_CellIdentity_Cell1)))) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.2.8 Step 34"); + } + + //@siclog "Step 35" siclog@ + //SS transmits a RRCConnectionRelease message to release the RRC connection. + f_EUTRA_RRC_ConnectionRelease(eutra_Cell2); //@sic R5s131035, R5-140778, R5s140534 sic@ + + //@siclog "Step 36" siclog@ + //Wait 10s to allow UE to activate logging. + f_Delay(10.0); + + //@siclog "Step 37" siclog@ + //The SS changes Cell 2 level according to the row "T3" in table 8.6.2.8.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT3); //@sic R5s131035 sic@ + + //@siclog "Step 38" siclog@ + //Wait 15s to allow UE to activate logging. + f_Delay(15.0); //@sic R5-142977 sic@ + + //@siclog "Step 39" siclog@ + //The SS changes Cell 1 level according to the row "T4" in table 8.6.2.8.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT4); //@sic R5s131035 sic@ + + //@siclog "Steps 39A1 - 39A6" siclog@ + //Steps 1 to 6 of generic test procedure in TS 36.508 subclause 6.4.2.7. + f_EUTRA_TrackingAreaUpdate (eutra_Cell1); //@sic R5-140778 sic@ + + //@siclog "Step 40" siclog@ + //Wait 300s to allow UE to activate logging. + f_Delay(10.0); + + //@siclog "Step 41-48" siclog@ + //Steps 2 to 9 of the generic radio bearer establishment procedure in TS 36.508 subclause 4.5.3.3 are executed to successfully complete the service request procedure on Cell 1. + f_EUTRA_RbEst_Def(eutra_Cell1); + + //@siclog "Step 49" siclog@ + //The SS send an UEInformationRequest message to get logMeasReport. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, cs_TimingInfo_Now, + cs_508_UEInformationRequest(tsc_RRC_TI_Def))); //@sic R5s131035 sic@ + + //@siclog "Step 50" siclog@ + //Check: Does the UE send an UEInformationResponse message with logged serving cell measurements of Cell1 and Cell 2 but without cell3? + v_SRB_COMMON_IND := f_EUTRA_ReceiveUEinformation(eutra_Cell1, + v_AbsoluteTimeInfo, + v_PLMN_Identity_Cell1, + v_CellIdentity_Cell1, + v_Frequency_IE_f1, + v_CellIdentity_Cell2 + ); //@sic R5s140403, R5s131035 sic@ + + v_Cgi_1:= v_SRB_COMMON_IND.Signalling.Rrc.Dcch.message_.c1.ueInformationResponse_r9.criticalExtensions.c1.ueInformationResponse_r9.nonCriticalExtension.nonCriticalExtension.logMeasReport_r10.logMeasInfoList_r10[0].servCellIdentity_r10; + v_Cgi_2:= v_SRB_COMMON_IND.Signalling.Rrc.Dcch.message_.c1.ueInformationResponse_r9.criticalExtensions.c1.ueInformationResponse_r9.nonCriticalExtension.nonCriticalExtension.logMeasReport_r10.logMeasInfoList_r10[1].servCellIdentity_r10; + + if (match(v_Cgi_1, cr_Cgi(v_PLMN_Identity_Cell1, v_CellIdentity_Cell1)) and match(v_Cgi_2, cr_Cgi(v_PLMN_Identity_Cell2, v_CellIdentity_Cell2))) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.2.8 Step 50"); + } + else if (match(v_Cgi_1, cr_Cgi(v_PLMN_Identity_Cell2, v_CellIdentity_Cell2)) and match(v_Cgi_2, cr_Cgi(v_PLMN_Identity_Cell1, v_CellIdentity_Cell1))) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.2.8 Step 50"); + } + + f_EUTRA_TestBody_Set (false); + + // Postamble + f_EUTRA_Postamble(eutra_Cell1, E2_CONNECTED); + + } // end of f_TC_8_6_2_8_EUTRA + + /* + * @desc REFERENCE TS 36.523-1 clause 8.6.2.9 + * @status APPROVED (LTE_A) + */ + function f_TC_8_6_2_9_EUTRA() runs on EUTRA_PTC + { //Logged MDT / Location information + var template (value) CellPowerList_Type v_CellPowerList_AtT1; + var PhysCellId v_PhysCellId_Cell11; + var Frequency_IE_Type v_Frequency_IE_f1; + var EUTRA_CellInfo_Type v_CellInfo_Cell1; + var EUTRA_CellInfo_Type v_CellInfo_Cell11; + var PLMN_Identity v_PLMN_Identity_Cell1; + var T_ReselectionEutran_Type v_T_Reselection := 7; + var B48_Type v_AbsoluteTimeInfo; + var NAS_KsiValue v_KsiValue; + var B3_Type v_EpsUpdate_TypeValue; + var template (omit) EPS_BearerContextStatus v_EPS_ContextStatus; + var template AdditionalUpdateType v_AdditionalUpdateType_Expected; + var NAS_MSG_Indication_Type v_NasInd; + var CellIdentity v_CellIdentity_Cell1; + var SRB_COMMON_IND v_ReceivedAsp; //@sic R5s140424 sic@ + var integer i, v_Len; //@sic R5s140424 sic@ + var LogMeasInfo_r10 v_LogMeasInfo_r10; //@sic R5s140424 sic@ + var boolean v_Location:=false; //@sic R5s140424 sic@ + var boolean v_NeighCells:=false; //@sic R5s140424 sic@ + + v_CellPowerList_AtT1 := { + cs_CellPower (eutra_Cell11, -79) + }; + + // Init variables + f_EUTRA_Init(c2); + f_EUTRA_CellInfo_SetSysInfo_T_Reselection(eutra_Cell1, v_T_Reselection); + + v_KsiValue := f_EUTRA_SecurityKSIasme_Get(); + v_EpsUpdate_TypeValue := f_GetEPSTAUType (NORMAL); + v_AdditionalUpdateType_Expected := f_GetAdditionalUpdateType(); + + v_CellInfo_Cell1 := f_EUTRA_CellInfo_Get(eutra_Cell1); + v_CellIdentity_Cell1 := v_CellInfo_Cell1.CellIds.CellIdentity; + v_PLMN_Identity_Cell1 := v_CellInfo_Cell1.NAS_Parameters.Guti_Parameters.PLMN_Identity; + v_Frequency_IE_f1 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell1); + + v_CellInfo_Cell11 := f_EUTRA_CellInfo_Get(eutra_Cell11); + v_PhysCellId_Cell11 := f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell11); + + f_EUTRA_CellInfo_InitMaxReferencePower (eutra_Cell11, -79); + + f_EUTRA_CellInfo_SetSIB4 (eutra_Cell1, cs_508_Cell1_DefSIB4_IntraFreqCellList); + f_EUTRA_CellInfo_SetSIB4 (eutra_Cell11, cs_508_Cell11_DefSIB4_IntraFreqCellList); + + // Create and configure Cells + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_CellConfig_Def(eutra_Cell11); + + // Preamble + f_EUTRA_Preamble(eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_RbEst_Def(eutra_Cell1); + + f_EUTRA_ProvideUE_LocationInformation(eutra_Cell1, RRC_CONNECTED); // @sic R5-131169 sic@ + + f_EUTRA_TestBody_Set (true); + + //@siclog "Step 1" siclog@ + //SS transmits a LoggedMeasurementConfiguration message including to configure the UE to perform logging of measurement results while in RRC_IDLE. + v_AbsoluteTimeInfo := f_MDT_GetAbsolute_TimeStamp(); + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, cs_TimingInfo_Now, cs_LoggedMeasurementConfiguration(v_PLMN_Identity_Cell1, '0000EF'O, '001A'O, '05'O, v_AbsoluteTimeInfo, -, -, ms2560))); + + //@siclog "Step 2" siclog@ + //The SS transmits an RRCConnectionRelease message. + f_EUTRA_RRC_ConnectionRelease(eutra_Cell1); + + //@siclog "Step 3" siclog@ + //Wait 5s to allow UE to activate logging + f_Delay(5.0); + + //@siclog "Step 4" siclog@ + //The SS changes Cell 1 and Cell 11 levels according to the row "T1" in table 8.6.2.9.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + + v_KsiValue := f_EUTRA_SecurityKSIasme_Get(); //@sic R5s140424 sic@ + + //@siclog "Step 5" siclog@ + //The UE transmits an RRCConnectionRequest message on Cell 11 to initiate a tracking area update procedure. + f_EUTRA_RRC_ConnectionRequest_Def(eutra_Cell11); + + //@siclog "Step 6" siclog@ + //SS transmit an RRCConnectionSetup message. + f_EUTRA_RRC_ConnectionSetup_Def(eutra_Cell11); + + //@siclog "Step 7" siclog@ + //Check: Does the UE include the IE logMeasAvailable in the RRCConnectionSetupComplete message? + v_NasInd := f_EUTRA_RRCConnectionSetupComplete_Def(eutra_Cell11, + cr_RRCConnectionSetupComplete_r10 (tsc_RRC_TI_Def, ?, -, -, -, -, true_), + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_508_TAU_Request(v_EpsUpdate_TypeValue, + v_KsiValue, + cr_DRXparameter_Any ('5C'O) ifpresent, + v_AdditionalUpdateType_Expected))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.2.9 Step 7"); + + //@siclog "Step 8-10" siclog@ + //Steps 4 to 6 of the generic test procedure in TS 36.508 subclause 6.4.2.7 are performed on Cell 11. + //NOTE: The UE performs a TAU procedure and the RRC connection is released. + v_EPS_ContextStatus := v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.epsBearerContextStatus; + f_EUTRA_TrackingAreaUpdate_Accept_Complete(eutra_Cell11, v_CellInfo_Cell11.NAS_Parameters.Guti_Parameters, v_EpsUpdate_TypeValue, v_EPS_ContextStatus, v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.addUpdateType, NORMAL); + f_EUTRA_RRC_ConnectionRelease(eutra_Cell11); + + //@siclog "Step 11-19" siclog@ + //Steps 1 to 9 of the generic radio bearer establishment procedure in TS 36.508 subclause 4.5.3.3 + //are executed to successfully complete the service request procedure on Cell 11. + f_EUTRA_RbEst_Def(eutra_Cell11); + + //@siclog "Step 20" siclog@ + //The SS transmits a UEInformationRequest message on Cell 11. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell11, cs_TimingInfo_Now, cs_508_UEInformationRequest(tsc_RRC_TI_Def))); + + //@siclog "Step 21" siclog@ + //@sic R5s140424 sic@ + //Check: Does the UE transmit a UEInformationResponse message with + //a LogMeasInfoList with at least two entries with serving cell idle mode measurements and where in at least one of the entries the IE + //locationCoordinates-r10 is present + + SRB.receive(car_SRB2_RrcPdu_IND(eutra_Cell11, + cr_508_UEInformationResponse(tsc_RRC_TI_Def, omit, omit, cr_LogMeasReport_r10(v_AbsoluteTimeInfo, v_PLMN_Identity_Cell1, '0000EF'O, '001A'O, '05'O, *, *)))) -> value v_ReceivedAsp; //@sic R5s140424 sic@ + + v_Len := lengthof(v_ReceivedAsp.Signalling.Rrc.Dcch.message_.c1.ueInformationResponse_r9.criticalExtensions.c1.ueInformationResponse_r9.nonCriticalExtension.nonCriticalExtension.logMeasReport_r10.logMeasInfoList_r10); //@sic R5s140424 sic@ + for (i:=0; (i < v_Len) and not (v_Location and v_NeighCells); i:=i+1) { + v_LogMeasInfo_r10 := v_ReceivedAsp.Signalling.Rrc.Dcch.message_.c1.ueInformationResponse_r9.criticalExtensions.c1.ueInformationResponse_r9.nonCriticalExtension.nonCriticalExtension.logMeasReport_r10.logMeasInfoList_r10[i]; + if (not v_Location) { + v_Location := match(v_LogMeasInfo_r10, cr_LogMeasInfo_r10(?, ?, cr_Cgi(v_PLMN_Identity_Cell1,v_CellIdentity_Cell1), ?, ?, *)); + } + if (not v_NeighCells) { + v_NeighCells := match(v_LogMeasInfo_r10, cr_LogMeasInfo_r10(*, ?, cr_Cgi(v_PLMN_Identity_Cell1,v_CellIdentity_Cell1), ?, ?, cr_MeasResultNeighCells_r10_EUTRA_1Entry(v_Frequency_IE_f1.UL_DL_Earfcn.dl_CarrierFreq, + v_PhysCellId_Cell11, + *))); + } + } //@sic R5s140424 sic@ + + if (v_Location and v_NeighCells) { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.2.9 Step 21"); + } else { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 21: One LogMeasurementInfo doesn't matched the template"); + } //@sic R5s140424 sic@ + + f_EUTRA_TestBody_Set (false); + + // Postamble + f_EUTRA_Postamble(eutra_Cell11, E2_CONNECTED); + + } // end of f_TC_8_6_2_9_EUTRA + + /* + * @desc REFERENCE TS 36.523-1 clause 8.6.2.10 + * @status + */ + function f_TC_8_6_2_10_EUTRA() runs on EUTRA_PTC + { //Logged MDT / Logging and reporting / Reporting at RRC connection establishment / PLMN list + var template (value) CellPowerList_Type v_CellPowerList_AtT0; + var template (value) CellPowerList_Type v_CellPowerList_AtT1; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var Frequency_IE_Type v_Frequency_IE_f1; + var EUTRA_CellInfo_Type v_CellInfo_Cell1; + var EUTRA_CellInfo_Type v_CellInfo_Cell12; + var CellIdentity v_CellIdentity_Cell1; + var CellIdentity v_CellIdentity_Cell12; + var PLMN_Identity v_PLMN_Identity_Cell1; + var PLMN_Identity v_PLMN_Identity_Cell12; + var PhysCellId v_PhysCellId_Cell1; + var float v_TimerValue; + var NAS_MSG_Indication_Type v_NAS_Ind ; + var B48_Type v_AbsoluteTimeInfo; + var NAS_KsiValue v_KsiValue; + var template (omit) EPS_BearerContextStatus v_EPS_ContextStatus; + var B3_Type v_EpsUpdate_TypeValue; + var template AdditionalUpdateType v_AdditionalUpdateType; + var GutiParameters_Type v_GutiParameters; + var SRB_COMMON_IND v_ReceivedAsp; + var integer i, v_Len; + var LogMeasInfo_r10 v_LogMeasInfo_r10; + + v_CellPowerList_AtT0 := { + cs_CellPower (eutra_Cell1, tsc_ServingCellRS_EPRE) + }; + v_CellPowerList_AtT1 := { + cs_CellPower (eutra_Cell12, -79) + }; + + // Init variables + f_EUTRA_Init(c3); + + v_EpsUpdate_TypeValue := f_GetEPSTAUType(NORMAL); + v_AdditionalUpdateType := f_GetAdditionalUpdateType (NORMAL); + v_GutiParameters := f_EUTRA_CellInfo_GetGuti(eutra_Cell12); + + v_Frequency_IE_f1 := f_EUTRA_CellInfo_GetFrequencyIEs(eutra_Cell1); + + v_CellInfo_Cell1 := f_EUTRA_CellInfo_Get(eutra_Cell1); + v_PhysCellId_Cell1 := f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell1); + v_CellIdentity_Cell1 := v_CellInfo_Cell1.CellIds.CellIdentity; + v_PLMN_Identity_Cell1 := v_CellInfo_Cell1.NAS_Parameters.Guti_Parameters.PLMN_Identity; + + v_CellInfo_Cell12 := f_EUTRA_CellInfo_Get(eutra_Cell12); + v_CellIdentity_Cell12 := v_CellInfo_Cell12.CellIds.CellIdentity; + v_PLMN_Identity_Cell12 := v_CellInfo_Cell12.NAS_Parameters.Guti_Parameters.PLMN_Identity; + + v_TimerValue := f_EUTRA_SetTimerToleranceMax(eutra_Cell12, nonProtocolTimer, 5.0); + + f_EUTRA_CellInfo_InitMaxReferencePower (eutra_Cell12, -79); + + // Create and configure Cells + f_EUTRA_CellConfig_Def(eutra_Cell1); + f_EUTRA_CellConfig_Def(eutra_Cell12); + + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT0); + + //The UE is registered on PLMN1 (Cell 1) using the procedure described in TS 36.508[18] + //clause 4.5.2.3 except that the ATTACH ACCEPT message indicates PLMN2 in + //the Equivalent PLMN list as described in Table 8.6.2.10.3.3-5 + f_EUTRA_SwitchOnUEandStartIP(eutra_Cell1); + + //Bring UE to inital state with Equivalent PLMN2 + f_EUTRA_IdleUpdated_WithEplmn (eutra_Cell1, + PREAMBLE, + cs_PLMN_List_1PLMN (f_Asn2Nas_PlmnId (f_EUTRA_CellInfo_GetGutiPLMN (eutra_Cell12)))); + + f_EUTRA_RbEst_Def(eutra_Cell1); + + f_EUTRA_TestBody_Set (true); + + //@siclog "Step 1" siclog@ + //SS transmits a LoggedMeasurementConfiguration message including on Cell 1 to configure the UE + //to perform logging of measurement results while in RRC_IDLE. + v_AbsoluteTimeInfo := f_MDT_GetAbsolute_TimeStamp(); + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_LoggedMeasurementConfiguration_with_v1080_IEs(v_PLMN_Identity_Cell1, '0000EF'O, '001A'O, '05'O, v_AbsoluteTimeInfo, -, -, ms1280, + cs_LoggedMeasurementConfiguration_v1080_IEs({v_PLMN_Identity_Cell12})))); + + //@siclog "Step 2" siclog@ + //The SS transmits an RRCConnectionRelease message on Cell 1. + f_EUTRA_RRC_ConnectionRelease(eutra_Cell1); + + //@siclog "Step 3" siclog@ + //The SS changes Cell 1 and Cell 12 levels according to the row "T1" in table 8.6.2.10.3.2-1. + f_EUTRA_SetCellPowerList(v_CellPowerList_AtT1); + + //@siclog "Step 4" siclog@ + //The generic test procedure in TS 36.508 subclause 6.4.2.7 is performed on Cell 12. + //NOTE: The UE performs a TAU procedure and the RRC connection is released. + // receive RRC Connection Request on SRB0 (CCCH): + f_EUTRA_RRC_ConnectionRequest_Def(eutra_Cell12); + + //send RRC Connection Setup on SRB0 (CCCH) and switch on UL grant assignments: + f_EUTRA_RRC_ConnectionSetup_Def (eutra_Cell12, -, tsc_RRC_TI_Def); + + //receive RRC Connection Setup Complete with piggy-backed NAS message on SRB1 (DCCH): + v_KsiValue := f_EUTRA_SecurityKSIasme_Get(); + v_NAS_Ind := f_EUTRA_RRCConnectionSetupComplete_Def(eutra_Cell12, + cr_RRCConnectionSetupComplete_r10 (tsc_RRC_TI_Def, ?, -, -, -, -, true_), + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_508_TAU_Request(v_EpsUpdate_TypeValue, + v_KsiValue, + cr_DRXparameter_Any ('5C'O) ifpresent, + v_AdditionalUpdateType))); + //NOTE: The UE performs a TAU procedure and the RRC connection is released. + v_EPS_ContextStatus := v_NAS_Ind.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.epsBearerContextStatus; + f_EUTRA_TrackingAreaUpdate_Accept_Complete(eutra_Cell12, v_CellInfo_Cell12.NAS_Parameters.Guti_Parameters, v_EpsUpdate_TypeValue, v_EPS_ContextStatus, v_NAS_Ind.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.addUpdateType, NORMAL); + f_EUTRA_RRC_ConnectionRelease(eutra_Cell12); + + //@siclog "Step 5" siclog@ + //Wait [5s] to allow UE to activate logging. + f_Delay(v_TimerValue); + + //@siclog "Step 6" siclog@ + //The SS transmits a Paging message on Cell 12. + f_EUTRA_UE_Page(eutra_Cell12, + cs_NasPaging_OneRecord(cs_PagingUE_Identity_S_TMSI(v_GutiParameters.MME_Code, v_GutiParameters.M_TMSI))); + + //Check the Service Request message + v_KsiValue := f_EUTRA_SecurityKSIasme_Get(); + + //@siclog "Step 7" siclog@ + // The UE transmits an RRCConnectionRequest message on Cell 12. + f_EUTRA_RRC_ConnectionRequest_Def(eutra_Cell12); + + //@siclog "Step 8" siclog@ + // The SS transmits an RRCConnectionSetup message on Cell 12. + f_EUTRA_RRC_ConnectionSetup_Def (eutra_Cell12, -, tsc_RRC_TI_Def); + + //@siclog "Step 9" siclog@ + //Check: Does the UE transmit an RRCConnectionSetupComplete message with logMeasAvailable on Cell 12? + v_NAS_Ind := f_EUTRA_RRCConnectionSetupComplete_Def(eutra_Cell12, + cr_RRCConnectionSetupComplete_r10 (tsc_RRC_TI_Def, ?, -, -, -, -, true_), + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_508_SERVICE_REQUEST(v_KsiValue))); + + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.6.2.10 Step 9"); + + f_EUTRA_Activate_SRB2_DRB_SendRrcMsg(eutra_Cell12, + v_RRC_TI, + v_NAS_Ind.SecurityProtection.NasCount); + + f_EUTRA_Activate_SRB2_DRB_ReceiveRrcAndNasMsg(eutra_Cell12, tsc_RRC_TI_Def); + + //@siclog "Step 14" siclog@ + //The SS transmits a UEInformationRequest message on Cell 12. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell12, + cs_TimingInfo_Now, + cs_508_UEInformationRequest(tsc_RRC_TI_Def))); + + //@siclog "Step 15" siclog@ + //Check: Does the UE transmit a UEInformationResponse message with LogMeasInfoList on Cell 12? + SRB.receive(car_SRB2_RrcPdu_IND(eutra_Cell12, + cr_508_UEInformationResponse(tsc_RRC_TI_Def, omit, omit, cr_LogMeasReport_r10(v_AbsoluteTimeInfo, v_PLMN_Identity_Cell1,'0000EF'O, '001A'O, '05'O, *)))) ->value v_ReceivedAsp; + + v_Len := lengthof(v_ReceivedAsp.Signalling.Rrc.Dcch.message_.c1.ueInformationResponse_r9.criticalExtensions.c1.ueInformationResponse_r9.nonCriticalExtension.nonCriticalExtension.logMeasReport_r10.logMeasInfoList_r10); + for (i:=0; i value v_ReceivedAsp; //@sic R5s140397 sic@ + + + v_Len := lengthof(v_ReceivedAsp.Signalling.Rrc.Dcch.message_.c1.ueInformationResponse_r9.criticalExtensions.c1.ueInformationResponse_r9.nonCriticalExtension.nonCriticalExtension.logMeasReport_r10.logMeasInfoList_r10); + + for (i:=0; ivalue v_ReceivedAsp; + + v_Len := lengthof(v_ReceivedAsp.Signalling.Rrc.Dcch.message_.c1.ueInformationResponse_r9.criticalExtensions.c1.ueInformationResponse_r9.nonCriticalExtension.nonCriticalExtension.logMeasReport_r10.logMeasInfoList_r10); + for (i:=0; i value v_OctetData; // @sic R5s130833 sic@ + + //@siclog "Step 5" siclog@ + //Generic test procedure in TS 36.508 Table 6.4.2.9 is performed and the UE will camped on GERAN Cell 24. + f_GERAN_RAU (geran_Cell24, '0'B, (tsc_I_UpdateTypeRAOnly, tsc_I_UpdateTypeCombined), true, true, oct2int(v_OctetData.OctetData)); // @sic R5s130833 sic@ + + f_GERAN_ActivatePDPContext( geran_Cell24 ); + // in case the UE sends another (?) XID once the bearer is established + f_GERAN_LLC_XID (geran_Cell24, false); + + //@siclog "Step 6" siclog@ + //UE is brought into downlink packet transfer mode according to TS 51.010 clause 40.4.3.14. + f_GPRS_SendDownlinkMsg(geran_Cell24, 1, cas_G_LLC_UnitData_Req(f_GERAN_TLLI_Get(geran_Cell24), + tsc_LLCSapi_11, + tsc_LLC_PM, + px_GSM_CipheringOnOff, + cs_PacketData (v_IPv4IPv6_IcmpEchoReply))); + + //@siclog "Step 7" siclog@ + //The SS changes Cell 1 and Cell 24 levels according to the row "T2" in table 8.6.3.2.3.2-1. + f_GERAN_SetCellPowerLevel (geran_Cell24, -85); + f_IRAT_SendCoOrd (EUTRA, cms_IRAT_Trigger); + + //@siclog "Step 8" siclog@ + //The SS transmits PS HANDOVER COMMAND on Cell24 + v_RRC_Container_HOtoEUTRA := f_Encode_RRCConnectionReconfiguration_HOToEUTRA (v_EUTRA_SysInfo.Eutra[0]); + G_RLC.send (cas_G_RLC_ControlMsg_REQ_PACCH(geran_Cell24, + tsc_PhyCh1, + 0, + tsc_DownlinkTFI, + cs_G_PSHandoverCmdToEUTRA (cs_GlobalTFIdl, + int2bit(lengthof (v_RRC_Container_HOtoEUTRA), 8), + v_RRC_Container_HOtoEUTRA))); + + //Now wait for the test to finish + f_IRAT_WaitForCoOrd_Trigger ( EUTRA ); + + f_GERAN_TestBody_Set( false ); + + f_GERAN_SS_CellRelease ( geran_Cell24 ); + + } // end of f_TC_8_6_3_2_GERAN + +} // end of Module diff --git a/LTE_A_IWD_14wk37/LTE_A/8_6/RRC_MDT_Logged_UTRAN.ttcn b/LTE_A_IWD_14wk37/LTE_A/8_6/RRC_MDT_Logged_UTRAN.ttcn new file mode 100644 index 0000000..44ec031 --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/8_6/RRC_MDT_Logged_UTRAN.ttcn @@ -0,0 +1,391 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 22:08:20 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12181 $ +/******************************************************************************/ + +module RRC_MDT_Logged_UTRAN +{ + +///////////////// +// Import Part // +///////////////// + + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_ASP_Definitions language "ASN.1:2002" all; + import from CommonIratDefs all; + import from CommonDefs all; + import from UTRAN_Component all; + import from UTRAN_CommonFunctions all; + import from UTRAN_CellInfo all; + import from UTRAN_CommonDefs all; + import from UTRAN_ConfigurationSteps all; + import from UTRAN_CommonProcedures all; + import from UTRAN_Parameters all; + import from UTRAN_RAB_Functions all; + import from UTRAN_RRC_Templates all; + import from UTRAN_RRC_SysInfo_Templates all; + import from EUTRA_CapabilityFunctions all; + import from UTRAN_TTCN_ASP_Templates all; + import from UTRAN_ASN1_ASP_RAB_Templates all; + import from UTRAN_ASN1_ASP_Templates all; + import from UTRAN_RRC_Templates_r9 all; + import from UTRAN_RRC_RAB_Templates all; + import from UTRAN_RRC_Handover_Templates all; + import from UTRAN_MDT_Templates all; + + //================================================================ + /* + * @desc REFERENCE TS 36.523-1 clause 8.6.3.1 + * @status APPROVED (LTE_A) + */ + function f_TC_8_6_3_1_UTRAN() runs on UTRAN_PTC + { //Logged MDT / UTRAN Inter-RAT measurement, logging and reporting + var integer v_T1_PCCPCH_CPICH_Cell5 := -60; + var integer v_T2_PCCPCH_CPICH_Cell5 := -100; + var UTRAN_FDD_TDD_Type v_FDD_TDD_Mode; + + var UTRAN_SecurityInfo_Type v_SecurityInfo; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI; + var TGCFN v_TGCFN; + var TGPS_Reconfiguration_CFN v_Tgps_Reconfiguration_CFN; + var UTRAN_CFN_Info_Type v_CFNInfo; + var octetstring v_RRCConnectionConfigurationMessage; + + var IRAT_CoOrd_SysInfo_Type v_EUTRASysInfo; + var EUTRA_MeasurementBandwidth v_EUTRA_MeasurementBandwidth := f_UTRAN_ConvertIntegerToEUTRA_MeasurementBandwidth(f_ConvertDL_BandwidthPIXITToInteger()); + + // Initialise all cells + f_UTRAN_Init(EUTRA_UTRAN); + + v_SecurityInfo := f_UTRAN_Security_Get(); + + //Send the cell info to the EUTRA component + f_UTRAN_Send_IR_SysInfoToEUTRA(utran_Cell5); + + //Get Cell Parameters for EUTRA cell + v_EUTRASysInfo := f_IRAT_WaitForCoOrd_SysInfo(EUTRA); + + f_UTRAN_SysInfo_SetSIB19(utran_Cell5, + cs_SIB19_UtraAndOneEutraEntry(cs_Utra_PriorityInfoList_Def(5), + cs_Eutra_FreqAndPriList_OneEntry_Def(v_EUTRASysInfo.Eutra[0].Arfcn, + v_EUTRA_MeasurementBandwidth, + 4))); + + //Create and configure Cell 5 + //Cell started switched on with default power level, -60 and max attenuation + f_UTRAN_SS_CreateCellDCH(utran_Cell5); //@sic R5s140397 sic@ + + //Start sending System Information + f_UTRAN_SendDefSysInfo(utran_Cell5); + + //UE starts registered in EUTRA, wait its Auth Params + f_UTRAN_InterRAT_InitialiseAuthParams(); + + //Get FDD or TDD mode + v_FDD_TDD_Mode := f_UTRAN_CellInfo_GetFDD_TDD(utran_Cell5); + + f_UTRAN_TestBody_Set(true); + + //@siclog "Step 4" siclog@ + //The SS changes Cell 1 and Cell 5 levels according to the row "T1" in table 8.6.3.1.3.2-1. + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + f_UTRAN_SetCellPower(utran_Cell5, v_T1_PCCPCH_CPICH_Cell5, v_T1_PCCPCH_CPICH_Cell5); + + //@siclog "Step 5 - 14" siclog@ + //The UE transmits an RRC CONNECTION REQUEST message on Cell 5 to initiate a routing area update procedure. + //Send RRC CONNECTION SETUP and receive RRC CONNECTION SETUP COMPLETE + //Steps 4 to 10 of the generic test procedure in TS 36.508 subclause 6.4.2.8 are performed on Cell 5. + //NOTE: The UE performs a RAU procedure and the RRC connection is released. + f_UTRAN_508CheckCampOnNewUtranCell(utran_Cell5,cell_Dch); //@sic R5s140397 sic@ + + //@siclog "Step 14A" siclog@ + //The SS waits for 5 s to ensure the UE is in service + f_Delay (5.0); //@sic R5-144660, R5s140526 sic@ + + //@siclog "Step 15-19" siclog@ + //Step 7 to 11 of test procedure in TS 34.123-1 subclause 12.9.14.4 is performed on Cell 5 using the UTRA reference radio bearer parameters + //and combination "UTRA PS RB" according to TS 36.508 subclause 4.8.3 and Table 4.8.3-1. + //NOTE: The UE performs Network initiated RAB re-establishment in a UTRAN cell. + f_UTRAN_MT_RAB_ReEst(utran_Cell5, cell_DCH_64kPS_RAB_SRB); + + // UE's re-done authentication in establishing the RAB so need to send the new params to EUTRA + f_UTRAN_SendAuthCoOrdParameters (EUTRA, omit); //@sic R5s140397 sic@ + + //For UTRAN FDD, EXCEPTION: Steps 20a1 to 20a2 describe behaviour that depends on the UE capability; + //the "lower case letter" identifies a step sequence that takes place if a capability is supported. + if (v_FDD_TDD_Mode == UTRAN_FDD and pc_UTRA_CompressedModeRequired) { + //Compressed mode only applicable in FDD + f_UTRAN_PhyChReconf_InterRatCompresseModeSet_Common(utran_Cell5, cs_TGPS_Status_Deactive); + + //Changed to use activation time test step and derive TGCFN from this test step + v_CFNInfo := f_CalculateActTime(utran_Cell5); + v_TGCFN := v_CFNInfo.tGCFN; + v_Tgps_Reconfiguration_CFN := v_TGCFN; + + //refresh security info + v_SecurityInfo := f_UTRAN_Security_Get(); + + //@siclog "Step 21" siclog@ + //ss tx a measurement control to setup inter-RAT on cell 5 + U_AM.send(cas_RLC_Data_Req_NoCnf(utran_CellDedicated, + tsc_RB2, + cs_MeasurementControl_InterRATMeasurement(v_SecurityInfo.dl_IntegrityCheckInfo, + v_RRC_TI, + v_EUTRASysInfo.Eutra[0].Arfcn, + v_EUTRA_MeasurementBandwidth, + v_Tgps_Reconfiguration_CFN, + v_TGCFN))); + if (pc_InterRAT_DL_CompressedModeRequired) { + f_UTRAN_CPHY_RL_Modify(cas_CompressedModeStatusInfo_REQ(utran_Cell5, + tsc_DL_DPCH1, + cs_DPCH_CompressedModeStatusInfoActive(v_Tgps_Reconfiguration_CFN, v_TGCFN), + cs_ActivateCFN(v_CFNInfo.actTime))); + + } + if (pc_InterRAT_UL_CompressedModeRequired) { + f_UTRAN_CPHY_RL_Modify(cas_CompressedModeStatusInfo_REQ(utran_Cell5, + tsc_UL_DPCH1, + cs_DPCH_CompressedModeStatusInfoActive(v_Tgps_Reconfiguration_CFN, v_TGCFN), + cs_ActivateCFN(v_CFNInfo.actTime))); + } + } else if (v_FDD_TDD_Mode == UTRAN_FDD and not pc_UTRA_CompressedModeRequired) { // @sic R5s140149 subject to prose CR approval sic@ + //refresh security info + v_SecurityInfo := f_UTRAN_Security_Get(); + + //ss tx a measurement control to setup inter-RAT on cell 5 + U_AM.send(cas_RLC_Data_Req_NoCnf(utran_CellDedicated, + tsc_RB2, + cs_MeasurementControl_InterRATMeasurement_NoCompMode(v_SecurityInfo.dl_IntegrityCheckInfo, + v_RRC_TI, + v_EUTRASysInfo.Eutra[0].Arfcn, + v_EUTRA_MeasurementBandwidth))); + } else { // TDD branch + v_SecurityInfo := f_UTRAN_Security_Get(); + f_UTRAN_CPHY_MeasurementConfig_TDD(utran_Cell5, cs_ActivateNow, cs_CellDCHMeasOccasionInfo_TDD128_r9); //@sic R5-134957 sic@ + //ss tx a measurement control to setup inter-RAT on cell 5 + U_AM.send(cas_RLC_Data_Req_NoCnf(utran_CellDedicated, + tsc_RB2, + cs_MeasurementControl_InterRATMeasurement_TDD_r10(v_SecurityInfo.dl_IntegrityCheckInfo, + v_RRC_TI, + v_EUTRASysInfo.Eutra[0].Arfcn, + v_EUTRA_MeasurementBandwidth, + cs_CellDCHMeasOccasionInfo_TDD128_r9))); + + }; + + //@siclog "Step 22" siclog@ + //The SS changes Cell 1 and Cell 5 level according to the row "T2" in table 8.6.3.1.3.2-1. + f_IRAT_SendCoOrd(EUTRA, cms_IRAT_Trigger); + f_UTRAN_SetCellPower(utran_Cell5, v_T2_PCCPCH_CPICH_Cell5, v_T2_PCCPCH_CPICH_Cell5); + + //@siclog "Step 23" siclog@ + //The UE transmits a MEASUREMENT REPORT message on Cell 5 including the E-UTRA event results. + U_AM.receive(car_RLC_Data_Ind(utran_CellDedicated, + tsc_RB2, + cr_MeasurementReport)); + + v_RRCConnectionConfigurationMessage := f_Encode_RRCConnectionReconfiguration_HOToEUTRA(v_EUTRASysInfo.Eutra[0]); + + //@siclog "Step 24" siclog@ + //SS tx a handover from utran command on cell5 + U_AM.send(cas_RLC_Data_Req_NoCnf(utran_CellDedicated, + tsc_RB2, + cs_HandoverFromUTRANCommand_EUTRA(v_SecurityInfo.dl_IntegrityCheckInfo, + v_RRC_TI, + v_RRCConnectionConfigurationMessage))); + + //Wait for the end of the test case + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + + //postamble + f_UTRAN_TestBody_Set(false); + + // Release UTRAN Cell 5 + f_UTRAN_ReleaseCell(utran_Cell5, f_UTRAN_CellInfo_GetConfigType(utran_Cell5)); + }//end of Test case 8.6.3.1 + + /* + * @desc REFERENCE TS 36.523-1 clause 8.6.3.4 + * @status + */ + function f_TC_8_6_3_4_UTRAN() runs on UTRAN_PTC + { //Logged MDT / Logging and reporting / Reporting at UTRAN Inter-RAT handover / PLMN list + var integer v_T1_PCCPCH_Cell9 := -67; + var integer v_T1_CPICH_Cell9 := -65; + var integer v_T2_PCCPCH_CPICH_Cell9 := -100; + var UTRAN_FDD_TDD_Type v_FDD_TDD_Mode; + + var UTRAN_SecurityInfo_Type v_SecurityInfo; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI; + var TGCFN v_TGCFN; + var TGPS_Reconfiguration_CFN v_Tgps_Reconfiguration_CFN; + var UTRAN_CFN_Info_Type v_CFNInfo; + var octetstring v_RRCConnectionConfigurationMessage; + var template (value) EUTRA_FrequencyAndPriorityInfoList v_EUTRA_FrequencyAndPriorityInfoList; + + var IRAT_CoOrd_SysInfo_Type v_EUTRASysInfo; + var EUTRA_MeasurementBandwidth v_EUTRA_MeasurementBandwidth := f_UTRAN_ConvertIntegerToEUTRA_MeasurementBandwidth(f_ConvertDL_BandwidthPIXITToInteger()); + + // Initialise all cells + f_UTRAN_Init ( EUTRA_UTRAN ); + + v_SecurityInfo := f_UTRAN_Security_Get ( ); + + //Send the cell info to the EUTRA component + f_UTRAN_Send_IR_SysInfoToEUTRA ( utran_Cell9 ); + + //Get Cell Parameters for EUTRA cell1 + v_EUTRASysInfo := f_IRAT_WaitForCoOrd_SysInfo (EUTRA); + v_EUTRA_FrequencyAndPriorityInfoList[0] := cs_EUTRA_FrequencyAndPriorityInfo(v_EUTRASysInfo.Eutra[0].Arfcn, + f_UTRAN_ConvertIntegerToEUTRA_MeasurementBandwidth(v_EUTRASysInfo.Eutra[0].DL_Bandwidth)); + + //Get Cell Parameters for EUTRA cell12 + v_EUTRASysInfo := f_IRAT_WaitForCoOrd_SysInfo (EUTRA); + v_EUTRA_FrequencyAndPriorityInfoList[1] := cs_EUTRA_FrequencyAndPriorityInfo(v_EUTRASysInfo.Eutra[0].Arfcn, + f_UTRAN_ConvertIntegerToEUTRA_MeasurementBandwidth(v_EUTRASysInfo.Eutra[0].DL_Bandwidth)); + + + f_UTRAN_SysInfo_SetSIB19 (utran_Cell9, + cs_SIB19_UtraAndOneEutraEntry(cs_Utra_PriorityInfoList_Def (5),v_EUTRA_FrequencyAndPriorityInfoList)); + + //Create and configure Cell 9 + //Cell started switched on with default power level, -60 and max attenuation + f_UTRAN_SS_CreateCellDCH ( utran_Cell9 ); + + //Start sending System Information + f_UTRAN_SendDefSysInfo ( utran_Cell9 ); + + //UE starts registered in EUTRA, wait its Auth Params + f_UTRAN_InterRAT_InitialiseAuthParams(); + + //Get FDD or TDD mode + v_FDD_TDD_Mode := f_UTRAN_CellInfo_GetFDD_TDD ( utran_Cell9 ); + + f_UTRAN_TestBody_Set(true); + + //@siclog "Step 4" siclog@ + //The SS changes Cell 1 and Cell 9 levels according to the row "T1" in table 8.6.3.4.3.2-1. + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + if (v_FDD_TDD_Mode == UTRAN_FDD){ + f_UTRAN_SetCellPower(utran_Cell9, v_T1_CPICH_Cell9, v_T1_CPICH_Cell9); + } + else{ + f_UTRAN_SetCellPower(utran_Cell9, v_T1_PCCPCH_Cell9, v_T1_PCCPCH_Cell9); + } + //@siclog "Step 5" siclog@ + //Generic test procedure in TS 36.508 subclause 6.4.2.8 is performed on Cell 9. + //NOTE: The UE performs an RAU procedure and the RRC connection is released. + f_UTRAN_508CheckCampOnNewUtranCell(utran_Cell9, cell_Dch); + + //@siclog "Step 6 - 10" siclog@ + //Step 7 to 11 of test procedure in TS 34.123-1 subclause 12.9.14.4 is performed on Cell 9 using the UTRA reference radio bearer parameters and combination "UTRA PS RB" according to TS 36.508 subclause 4.8.3 and Table 4.8.3-1. + //NOTE: The UE performs Network initiated RAB re-establishment in a UTRAN cell. + f_UTRAN_MT_RAB_ReEst(utran_Cell9, cell_DCH_64kPS_RAB_SRB); + + // UE's re-done authentication in establishing the RAB so need to send the new params to EUTRA + f_UTRAN_SendAuthCoOrdParameters (EUTRA, omit); + + //For UTRAN FDD, EXCEPTION: Steps 11a1 to 11a2 describe behaviour that depends on the UE capability; the "lower case letter" identifies a step sequence that takes place if a capability is supported. + //For UTRAN TDD, goto step 12. + if (v_FDD_TDD_Mode == UTRAN_FDD and pc_UTRA_CompressedModeRequired ) + { + //@siclog "Step 11a1 - 11a2" siclog@ + //Compressed mode only applicable in FDD + f_UTRAN_PhyChReconf_InterRatCompresseModeSet_Common(utran_Cell9, cs_TGPS_Status_Deactive); + + //Changed to use activation time test step and derive TGCFN from this test step + v_CFNInfo := f_CalculateActTime ( utran_Cell9 ); + v_TGCFN := v_CFNInfo.tGCFN; + v_Tgps_Reconfiguration_CFN := v_TGCFN; + + //refresh security info + v_SecurityInfo := f_UTRAN_Security_Get(); + + //@siclog "Step 12" siclog@ + //ss tx a measurement control to setup inter-RAT on cell 9 + U_AM.send ( cas_RLC_Data_Req_NoCnf(utran_CellDedicated, + tsc_RB2, + cs_MeasurementControl_InterRATMeasurement(v_SecurityInfo.dl_IntegrityCheckInfo, + v_RRC_TI, + v_EUTRASysInfo.Eutra[0].Arfcn, + v_EUTRA_MeasurementBandwidth, + v_Tgps_Reconfiguration_CFN, + v_TGCFN))); + if ( pc_InterRAT_DL_CompressedModeRequired ) { + f_UTRAN_CPHY_RL_Modify ( cas_CompressedModeStatusInfo_REQ (utran_Cell9, + tsc_DL_DPCH1, + cs_DPCH_CompressedModeStatusInfoActive(v_Tgps_Reconfiguration_CFN, v_TGCFN), + cs_ActivateCFN ( v_CFNInfo.actTime)) ); + + } + if ( pc_InterRAT_UL_CompressedModeRequired ) { + f_UTRAN_CPHY_RL_Modify ( cas_CompressedModeStatusInfo_REQ (utran_Cell9, + tsc_UL_DPCH1, + cs_DPCH_CompressedModeStatusInfoActive(v_Tgps_Reconfiguration_CFN, v_TGCFN), + cs_ActivateCFN ( v_CFNInfo.actTime)) ); + } + } else if (v_FDD_TDD_Mode == UTRAN_FDD and not pc_UTRA_CompressedModeRequired ) { + //refresh security info + v_SecurityInfo := f_UTRAN_Security_Get(); + + //@siclog "Step 12" siclog@ + //ss tx a measurement control to setup inter-RAT on cell 9 + U_AM.send ( cas_RLC_Data_Req_NoCnf(utran_CellDedicated, + tsc_RB2, + cs_MeasurementControl_InterRATMeasurement_NoCompMode_FDD_r11(v_SecurityInfo.dl_IntegrityCheckInfo, + v_RRC_TI, + v_EUTRASysInfo.Eutra[0].Arfcn, + v_EUTRA_MeasurementBandwidth))); + }else{ + v_SecurityInfo := f_UTRAN_Security_Get(); + f_UTRAN_CPHY_MeasurementConfig_TDD (utran_Cell9, cs_ActivateNow, cs_CellDCHMeasOccasionInfo_TDD128_r9); + + //@siclog "Step 12" siclog@ + //ss tx a measurement control to setup inter-RAT on cell 9 + U_AM.send ( cas_RLC_Data_Req_NoCnf(utran_CellDedicated, + tsc_RB2, + cs_MeasurementControl_InterRATMeasurement_TDD_r11(v_SecurityInfo.dl_IntegrityCheckInfo, + v_RRC_TI, + v_EUTRASysInfo.Eutra[0].Arfcn, + v_EUTRA_MeasurementBandwidth, + cs_CellDCHMeasOccasionInfo_TDD128_r9))); + + }; + + //@siclog "Step 13" siclog@ + //The SS changes Cell 12 and Cell 9 levels according to the row "T2" in table 8.6.3.4.3.2-1. + f_IRAT_SendCoOrd (EUTRA, cms_IRAT_Trigger); + f_UTRAN_SetCellPower(utran_Cell9, v_T2_PCCPCH_CPICH_Cell9, v_T2_PCCPCH_CPICH_Cell9); + + //@siclog "Step 14" siclog@ + //The UE transmits a MEASUREMENT REPORT message on Cell 9 including the E-UTRA event results. + U_AM.receive(car_RLC_Data_Ind(utran_CellDedicated, tsc_RB2, cr_MeasurementReport_EUTRACell(v_EUTRASysInfo.Eutra[0].Arfcn, + v_EUTRASysInfo.Eutra[0].HO.PhysCellId,?,?))); + + v_RRCConnectionConfigurationMessage := f_Encode_RRCConnectionReconfiguration_HOToEUTRA (v_EUTRASysInfo.Eutra[0]); + + //@siclog "Step 15" siclog@ + //SS tx a handover from utran command on Cell 9 + U_AM.send(cas_RLC_Data_Req_NoCnf(utran_CellDedicated, + tsc_RB2, + cs_HandoverFromUTRANCommand_EUTRA_r11(v_SecurityInfo.dl_IntegrityCheckInfo, + v_RRC_TI, + v_RRCConnectionConfigurationMessage))); + + //Wait for the end of the test case + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + + //postamble + f_UTRAN_TestBody_Set(false); + + // Release UTRAN Cell 9 + f_UTRAN_ReleaseCell(utran_Cell9, f_UTRAN_CellInfo_GetConfigType(utran_Cell9)); + }//end of Test case 8.6.3.4 + +} // end of Module diff --git a/LTE_A_IWD_14wk37/LTE_A/8_6/RRC_RACH_Optimisation.ttcn b/LTE_A_IWD_14wk37/LTE_A/8_6/RRC_RACH_Optimisation.ttcn new file mode 100644 index 0000000..4e01efc --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/8_6/RRC_RACH_Optimisation.ttcn @@ -0,0 +1,64 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-07 18:37:49 +0200 (Sun, 07 Sep 2014) $ +// $Rev: 12081 $ +/******************************************************************************/ + +module RRC_RACH_Optimisation + +{ +///////////////// +// Import Part // +///////////////// + + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_Component all; + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from EUTRA_SRB_Templates all; + import from EUTRA_AspCommon_Templates all; + import from EUTRA_CellInfo all; + import from EUTRA_CommonProcedures all; + import from EUTRA_ConfigurationSteps all; + import from EUTRA_MDT_Specific_Templates all; + + /* + * @desc REFERENCE TS 36.523-1 clause 8.6.11.1 + * @status APPROVED (LTE_A) + */ + function f_TC_8_6_11_1_EUTRA() runs on EUTRA_PTC + { //RACH Optimisation + // Init variables + f_EUTRA_Init(c1); + + // Create and configure Cells + f_EUTRA_CellConfig_Def(eutra_Cell1); + + // Preamble + f_EUTRA_Preamble(eutra_Cell1, STATE2_IDLEUPDATE); + f_EUTRA_RbEst_Def(eutra_Cell1); + + f_EUTRA_TestBody_Set(true); + + //@siclog "Step 1" siclog@ + //The SS transmits a UEInformationRequest message. + SRB.send(cas_SRB1_RrcPdu_REQ(eutra_Cell1, + cs_TimingInfo_Now, + cs_508_UEInformationRequest_noLogMeasReport(tsc_RRC_TI_Def, true))); //@sic R5s140412 sic@ + //@siclog "Step 2" siclog@ + //Check: Does the UE transmit a UEInformationResponse message with rach-Report? + SRB.receive(car_SRB1_RrcPdu_IND(eutra_Cell1, + cr_UEInformationResponse_Common(tsc_RRC_TI_Def, -, omit))); //@sic R5s140412 sic@ + + f_EUTRA_TestBody_Set(false); + + // Postamble + f_EUTRA_Postamble(eutra_Cell1, E2_CONNECTED); + } // end of f_TC_8_6_11_1_EUTRA + +} // end of Module diff --git a/LTE_A_IWD_14wk37/LTE_A/8_7/RRC_ANR.ttcn b/LTE_A_IWD_14wk37/LTE_A/8_7/RRC_ANR.ttcn new file mode 100644 index 0000000..0c99fbe --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/8_7/RRC_ANR.ttcn @@ -0,0 +1,92 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2013-11-25 13:14:05 +0100 (Mon, 25 Nov 2013) $ +// $Rev: 10042 $ +/******************************************************************************/ + +module RRC_ANR +{ + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from CommonIratDefs all; + import from NAS_CommonTypeDefs all; + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from EUTRA_Component all; + import from EUTRA_CommonProcedures all; + import from EUTRA_NASSteps all; + import from EUTRA_ConfigurationSteps all; + import from EUTRA_AuxiliaryFunctions all; + import from EUTRA_CellInfo all; + import from EUTRA_IRATFunctions all; + + + /* + * @desc REFERENCE TS 36.523-1 clause 8.7.1 + * @status + */ + function f_TC_8_7_1_EUTRA() runs on EUTRA_PTC + { + var boolean v_CSInOtherRAT := false; + var IRAT_Coordination_MSG v_IRAT_Coordination_MSG; + var integer v_T1_RS_EPRE_Cell1 := -60; + var GutiParameters_Type v_GutiParams := f_EUTRA_CellInfo_GetGuti(eutra_Cell1); + var NAS_PlmnId v_PlmnId := f_Asn2Nas_PlmnId(v_GutiParams.PLMN_Identity); + var TrackingAreaCode v_TAC := f_EUTRA_CellInfo_GetTAC(eutra_Cell1); + var CellIdentity v_CellIdentity1 := f_EUTRA_CellInfo_GetCellIdentity (eutra_Cell1); + + f_EUTRA_Init (c4); + + //Create and configure all cells + f_EUTRA_CellConfig_Def (eutra_Cell1); + + //Send Cell information to UTRA PTC + f_IRAT_Send_EUTRA_SysInfoToOtherPort(UTRAN, + f_EUTRA_CellInfo_GetEARFCN_DL(eutra_Cell1), + f_ConvertDL_BandwidthToInteger(f_EUTRA_CellInfo_GetDL_ChBandwidth(eutra_Cell1)), + cs_EUTRA_HOInfo (f_ConvertUL_BandwidthToInteger (f_EUTRA_CellInfo_GetUL_ChBandwidth (eutra_Cell1)), + f_EUTRA_CellInfo_GetPhyCellId(eutra_Cell1), + f_EUTRA_CellInfo_GetRootSequenceIndex (eutra_Cell1)), + omit, //p_CATested + v_PlmnId, + v_CellIdentity1, + v_TAC); + + //Receive new authentication parameters and set initial cell power level according to T0 + v_CSInOtherRAT := f_EUTRA_InterRAT_InitialiseAuthParams(UTRAN); + f_EUTRA_SetCellPower (eutra_Cell1, tsc_NonSuitableCellRS_EPRE); + UTRAN.receive (cmr_IRAT_OctetData) -> value v_IRAT_Coordination_MSG; + + f_EUTRA_TestBody_Set(true); + + //@siclog "Step 3" siclog@ + //The SS changes Cell 1 and Cell 5 levels according to the row "T1" in table 8.7.1.3.2-1 + f_IRAT_WaitForCoOrd_Trigger(UTRAN); + f_EUTRA_SetCellPower (eutra_Cell1, v_T1_RS_EPRE_Cell1); + + //@siclog "Step 4" siclog@ + //Generic test procedure in TS 36.508 Table 6.4.2.7A is performed on Cell 1. + f_EUTRA_508CheckCampOnNewEutraCellUponMobilityFromAnotherRAT(eutra_Cell1, v_CSInOtherRAT, false, false, v_IRAT_Coordination_MSG.OctetData, NORMAL); + + //@siclog "Step 5" siclog@ + //Wait for 6 s for UE to receive system information. + f_Delay(6.0); + + //@siclog "Step 6" siclog@ + //The SS changes Cell 1 and Cell 5 levels according to the row "T2" in table 8.7.1.3.2-1. + f_EUTRA_SetCellPower (eutra_Cell1, tsc_NonSuitableCellRS_EPRE); + f_IRAT_SendCoOrd (UTRAN, cms_IRAT_Trigger); + + //Steps 7 to 14 done in UTRA RAT so wait for UTRAN side to finish + f_IRAT_WaitForCoOrd_Trigger(UTRAN); + + f_EUTRA_TestBody_Set(false); + + //Remove the non-camping cell + f_EUTRA_ReleaseAllCells( ); + } +} diff --git a/LTE_A_IWD_14wk37/LTE_A/8_7/RRC_ANR_UTRAN.ttcn b/LTE_A_IWD_14wk37/LTE_A/8_7/RRC_ANR_UTRAN.ttcn new file mode 100644 index 0000000..dd7c0c4 --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/8_7/RRC_ANR_UTRAN.ttcn @@ -0,0 +1,169 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-06-07 23:45:32 +0200 (Sat, 07 Jun 2014) $ +// $Rev: 11666 $ +/******************************************************************************/ +module RRC_ANR_UTRAN +{ + import from CommonDefs all; + import from UTRAN_CommonDefs all; + import from UTRAN_Component all; + import from UTRAN_TypeDefs all; + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_ASP_Definitions language "ASN.1:2002" all; + import from UTRAN_TTCN_ASP_Templates all; + import from UTRAN_CellInfo all; + import from UTRAN_ConfigurationSteps all; + import from UTRAN_RAB_Functions all; + import from UTRAN_RRC_SysInfo_Templates all; + import from Parameters all; + import from UTRAN_CommonFunctions all; + import from CommonIratDefs all; + import from UTRAN_CommonProcedures all; + import from EUTRA_CapabilityFunctions all; + import from UTRAN_ANR_MDT_Templates all; + import from UTRAN_CommonDefs all; + import from UTRAN_ANR_CommonFunctions all; + + //========================================================================= + // TEST CASES + //========================================================================= + /* + * @desc REFERENCE TS 36.523-1 clause 8.7.1, UTRAN side + * @status + */ + function f_TC_8_7_1_UTRAN ( ) runs on UTRAN_PTC + { + var IRAT_CoOrd_SysInfo_Type v_EUTRASysInfo; + var EUTRA_MeasurementBandwidth v_EUTRA_MeasurementBandwidth := f_UTRAN_ConvertIntegerToEUTRA_MeasurementBandwidth(f_ConvertDL_BandwidthPIXITToInteger()); + + //Initialise all UTRAN cells according to 34.108 + f_UTRAN_Init(EUTRA_UTRAN); + + // Cell1 started switched on with default power level + f_UTRAN_SS_CreateCellDCH(utran_Cell5); + + //Get Cell Parameters for EUTRA cell + v_EUTRASysInfo := f_IRAT_WaitForCoOrd_SysInfo (EUTRA); + + //Send the cell info to the EUTRA component + f_UTRAN_Send_IR_SysInfoToEUTRA ( utran_Cell5 ); + + //Set sysinfo in SIB19 + f_UTRAN_SysInfo_SetSIB19(utran_Cell5, + cs_SIB19_UtraAndOneEutraEntry(cs_Utra_PriorityInfoList_Def (5), + cs_Eutra_FreqAndPriList_OneEntry_Def (v_EUTRASysInfo.Eutra[0].Arfcn, + v_EUTRA_MeasurementBandwidth, + 4))); + f_UTRAN_SendDefSysInfo(utran_Cell5); + + //Bring UE to initial state + f_UTRAN_Preamble(utran_Cell5); + //Interactive or background / UL:64 DL: 64 kbps / PS RAB + UL:3.4 DL:3.4 kbps SRBs for DCCH + f_UTRAN_UE_64kPS_Rb_Est(utran_Cell5); //@sic R5-134682 sic@ + + f_UTRAN_TestBody_Set(true); + + fl_TC_8_7_1_Body (v_EUTRASysInfo); + + f_UTRAN_TestBody_Set(false); + + //Inform EUTRA PTC that TC is over + f_IRAT_SendCoOrd (EUTRA, cms_IRAT_Trigger); + + //Release UTRAN Cells + f_UTRAN_Postamble(utran_Cell5, U2_CONNECTED); + + }; + + /* + * @desc 8.7.1 - Test case body + * @status + */ + function fl_TC_8_7_1_Body(IRAT_CoOrd_SysInfo_Type p_EUTRASysInfo) runs on UTRAN_PTC + { + var B32_Type v_P_tmsi := oct2bit(px_PTMSI_Def); + var B28_Type v_CellId; + var UTRAN_SecurityInfo_Type v_SecurityInfo; + var UTRAN_CellInfo_Type v_CellInfo; + var PLMN_Identity v_PLMN_Identity; + var boolean v_ExpectedMatchFound := false; + var template (present) LoggedCellInfo v_LoggedCellInfo; + var template (present) LoggedANRReportInfoList v_LoggedANRReportInfoList; + var B16_Type v_TrackingAreaCode; + var B28_Type v_EUTRA_Cell_Identity; + var EARFCN v_EARFCN; + var EUTRA_PhysicalCellIdentity v_EUTRA_PhysicalCellIdentity; + + v_CellId := f_UTRAN_GetCellIndentity(utran_Cell5); + v_SecurityInfo := f_UTRAN_Security_Get (); + v_CellInfo := f_UTRAN_CellInfo_Get(utran_Cell5); + v_PLMN_Identity := f_UTRAN_CellInfo_GetPLMNIdentity(utran_Cell5); + + //@siclog "Step 1" siclog@ + // Configure UE to perform inter-RAT UTRAN ANR measurements. + U_AM.send(cas_RLC_Data_Req_NoCnf(utran_CellDedicated, tsc_RB2, cs_LoggingMeasurementConfiguration_ANR_InterRAT(v_SecurityInfo.dl_IntegrityCheckInfo, + tsc_RRC_TI,-,true_,-))); + //@siclog "Step 2" siclog@ + //Procedure to release RRC Connection. UE moves to idle state + f_UTRAN_RRC_ConnRel(utran_Cell5, cell_Dch); + + //@siclog "Step 3" siclog@ + //The SS switches its downlink transmission power settings to column "T1" of table 8.7.1.3.2-1 + f_UTRAN_SetCellPower (utran_Cell5, -70, -72); + //Synchronise with EUTRA PTC + f_IRAT_SendCoOrd(EUTRA, cms_IRAT_Trigger); + + // Wait for the trigger from EUTRA steps 4-5 to continue the test case + f_IRAT_WaitForCoOrd_Trigger(EUTRA); + + //@siclog "Step 6" siclog@ + //The SS switches its downlink transmission power settings to column "T2" of table 8.7.1.3.2-1 + f_UTRAN_SetCellPower (utran_Cell5, -60, -62); + + //@siclog "Step 7" siclog@ + //Generic test procedure in TS 36.508 Table 6.4.2.8 is performed on Cell 5. + f_UTRAN_508CheckCampOnNewUtranCell(utran_Cell5, cell_Dch); + + //@siclog "Step 8" siclog@ + //Waiting for 10 seconds to allow UE to activate ANR logging in IDLE mode state. + f_Delay(10.0); //@sic R5-134682 sic@ + + //@siclog "Step 9" siclog@ + //Page UE to trigger RRC Connection establishment + f_UTRAN_Page (utran_Cell5, terminatingInteractiveCall, v_P_tmsi); + + //@siclog "Step 10-12" siclog@ + //Complete RRC Connection setup and verify if IE "ANR Logging Results Available" is presentt + f_UTRAN_RRC_ConnEst(utran_Cell5, terminatingInteractiveCall, true); + + //@siclog "Step 13-14" siclog@ + //Send UE INFORMATION REQUEST message and receive UE INFORMATION RESPONSE message, check if IEs were set properly + v_PLMN_Identity :=f_UTRAN_Nas2Asn_PlmnId(p_EUTRASysInfo.Eutra[0].PLMN); + v_TrackingAreaCode := p_EUTRASysInfo.Eutra[0].TAC; + v_EUTRA_Cell_Identity := p_EUTRASysInfo.Eutra[0].CellId; + v_EARFCN := p_EUTRASysInfo.Eutra[0].Arfcn; + v_EUTRA_PhysicalCellIdentity := p_EUTRASysInfo.Eutra[0].HO.PhysCellId; + + v_LoggedCellInfo := cr_LoggedCellInfo_EUTRA(v_PLMN_Identity, v_TrackingAreaCode, v_EUTRA_Cell_Identity, v_EARFCN, v_EUTRA_PhysicalCellIdentity); + + v_CellId := f_UTRAN_GetCellIndentity(utran_Cell5); + v_PLMN_Identity := f_UTRAN_CellInfo_GetPLMNIdentity(utran_Cell5); + v_LoggedANRReportInfoList := cr_LoggedANRReportInfo_1Entry(v_PLMN_Identity, v_CellId, v_LoggedCellInfo); + v_ExpectedMatchFound := f_UTRAN_RetrieveANRMeasurements_InterRat(utran_Cell5, false, v_LoggedANRReportInfoList, 1); + + //Assign verdict accordingly + if (v_ExpectedMatchFound == true){ + f_UTRAN_PreliminaryPass(__FILE__, __LINE__, "Test Case 8.7.1, Step 14"); + } + else{ + f_UTRAN_SetVerdictFailOrInconc(__FILE__, __LINE__,"Test Case 8.7.1, Step 14"); + } + } + +} diff --git a/LTE_A_IWD_14wk37/LTE_A/9_2/NAS_Attach_EOnly_A.ttcn b/LTE_A_IWD_14wk37/LTE_A/9_2/NAS_Attach_EOnly_A.ttcn new file mode 100644 index 0000000..38f616d --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/9_2/NAS_Attach_EOnly_A.ttcn @@ -0,0 +1,656 @@ +// *************************************************************************** +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// * $Date: 2014-09-05 19:10:47 +0200 (Fri, 05 Sep 2014) $ +// * $Rev: 12078 $ +// *************************************************************************** + +module NAS_Attach_EOnly_A { + + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_ASP_SrbDefs all; + import from EUTRA_AspCommon_Templates all; + import from EUTRA_Component all; + import from EUTRA_CellInfo all; + import from EUTRA_SRB_Templates all; + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from EUTRA_RRC_Templates all; + import from EUTRA_CommonProcedures all; + import from NAS_CommonTypeDefs all; + import from EPS_NAS_Constants all; + import from EUTRA_MDT_Specific_Templates all; + import from EPS_NAS_TypeDefs all; + import from EPS_NAS_Templates all; + import from NAS_CommonTemplates all; + import from NAS_AuxiliaryDefsAndFunctions all; + import from EUTRA_NASCommonTemplates all; + import from EPS_NAS_MsgContainers all; + import from EUTRA_RRCSteps all; + import from EUTRA_NASSteps all; + import from EUTRA_ConfigurationSteps all; + import from UpperTesterFunctions all; + import from EUTRA_AuxiliaryFunctions all; + import from EUTRA_Timing all; + import from EUTRA_IdleMode all; + import from IP_PTC_CtrlMsgs all; + import from IMS_PTC_CoordMsg all; + + group LocalTemplates { + } // group LocalTemplates + + group LocalFunctions { + } // group LocalFunctions + + group TestcaseImplementations { + + //============================================================================ + /* + * @desc REFERENCE TS 36.523-1 clause 9.2.1.1.2a + * @status APPROVED (LTE_A) + */ + function f_TC_9_2_1_1_2a_EUTRA() runs on EUTRA_PTC + { /* Attach Procedure / AttachWithIMSI configured / Selected PLMN is neither the registered PLMN nor in the list of equivalent PLMNs / Success */ + timer t_GuardTimer := tsc_GuardTimePreamble; + f_EUTRA_NAS_Init(LTE_CellsOnDifferentPLMN, c1); + + f_EUTRA_CellInfo_SetPLMN_1Entry(eutra_CellB, cs_HPLMN_001_02); + f_EUTRA_CellInfo_SetTAC(eutra_CellB, oct2bit('0007'O)); + f_EUTRA_CellInfo_SetPLMN_1Entry(eutra_CellI, cs_HPLMN_002_101); + f_EUTRA_CellInfo_SetTAC(eutra_CellI, oct2bit('0001'O)); + f_EUTRA_CellInfo_SetPLMN_1Entry(eutra_CellJ, cs_HPLMN_003_101); + f_EUTRA_CellInfo_SetTAC(eutra_CellJ, oct2bit('0001'O)); + + f_EUTRA_CellConfig_Def(eutra_CellA); + f_EUTRA_CellConfig_Def(eutra_CellB); + + //Equip UE with a USIM containing default values except for those shown in Table 9.2.1.1.2a.3.1-2 + f_UT_USIM_Insert(UT, "36.523-1 Table 9.2.1.1.2a.3.1-2"); + f_UT_ConfigureEPSAttach(UT); + + // Preamble: UE is in state Switched OFF (state 2) + t_GuardTimer.start; + + //Set cell A to "serving cell" + f_EUTRA_SetCellPower(eutra_CellA, tsc_ServingCellRS_EPRE); + //Switch on UE + f_EUTRA_SwitchOnUEandStartIP(eutra_CellA); + + //CJ:Bring UE to inital state with 2 Equivalent PLMNs (CellI and cellJ),cell B is not among 2 equivalent PLMNs + f_EUTRA_IdleUpdated_WithEplmn(eutra_CellA, + PREAMBLE, + cs_PLMN_List_2PLMNs(f_Asn2Nas_PlmnId(f_EUTRA_CellInfo_GetGutiPLMN(eutra_CellI)),f_Asn2Nas_PlmnId(f_EUTRA_CellInfo_GetGutiPLMN(eutra_CellJ))), + EPS_Only); + + t_GuardTimer.stop; + + f_EUTRA_TestBody_Set(true); + + fl_TC_9_2_1_1_2a_Body(); + + // Postamble + f_EUTRA_TestBody_Set(false); + f_EUTRA_Postamble(eutra_CellB, E1_IDLE); + } + + + /* + * @desc test body of test case 9.2.1.1.2a + * @status APPROVED (LTE_A) + */ + function fl_TC_9_2_1_1_2a_Body() runs on EUTRA_PTC + { + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var template AdditionalUpdateType v_AdditionalUpdateType := f_GetAdditionalUpdateType(EPS_Only); + var NAS_AttDetValue_Type v_AttachType := f_GetEAttachType(EPS_Only); + var B3_Type v_PDNValue := f_GetPdnType(); + var NAS_MSG_Indication_Type v_NasInd; + var template (value) CellPowerList_Type v_CellPowerList; + + v_CellPowerList := { + cs_CellPower(eutra_CellB, tsc_ServingCellRS_EPRE), + cs_CellPower(eutra_CellA, tsc_NonSuitableCellRS_EPRE) + }; + + //@siclog "Step 1" siclog@ + f_EUTRA_SetCellPowerList(v_CellPowerList); + + //Does the UE send an ATTACH REQUEST including the IMSI? + //@siclog "Step 2" siclog@ + v_NasInd := f_EUTRA_RRC_ConnEst_DefWithNas(eutra_CellB, + v_RRC_TI, + cr_EstablishmentCause_Any, + cr_NAS_IndicationWithPiggybacking(tsc_SHT_IntegrityProtected, // @sic R5s140041 sic@ + cdr_ATTACH_REQUEST_IMSIonly(v_AttachType, v_AdditionalUpdateType, *), // @sic R5s140041 sic@ // @sic R5-141109 sic@ + cr_508_PDN_CONNECTIVITY_REQUEST(tsc_PdnRequest_InitialAttach, + v_PDNValue))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 2"); + + //@siclog "Step 3-14 " siclog@ + //The attach procedure is completed by executing steps 5 to 16 of the UE registration procedure in TS 36.508 clause 4.5.2.3 + f_EUTRA_IdleUpdated_Step5_15(eutra_CellB, STATE2_IDLEUPDATE, EPS_Only, v_NasInd); + f_EUTRA_NAS_AttachComplete(eutra_CellB, tsc_EpsDefaultBearerId); + + //@siclog "Step 15" siclog@ + //+ The SS releases the RRC connection. + f_EUTRA_RRC_ConnectionRelease(eutra_CellB); + + } // function fl_TC_9_2_1_1_2a_Body + + // ========================== TC 9.2.1.1.7b ===================================== + /* + * @desc REFERENCE TS 36.523-1 clause 9.2.1.1.7b + * @status APPROVED (LTE_A) + */ + function f_TC_9_2_1_1_7b_EUTRA() runs on EUTRA_PTC + { /* Attach Procedure / Success / native gummei */ + + var GutiParameters_Type v_Guti_Params; + var GutiParameters_Type v_Guti_Old_Params; + + f_EUTRA_NAS_Init(LTE_CellsOnDifferentPLMN, c1); // CellE, just different PLMN as CellA + + // Initial conditions state that UE is updated to Cell E parameters + // so change this now to force Attach Accept to contain TAC3 + f_EUTRA_CellInfo_SetTAC(eutra_CellA, oct2bit(tsc_TAC3)); + v_Guti_Params := f_EUTRA_CellInfo_GetGuti(eutra_CellA); + v_Guti_Old_Params := f_EUTRA_CellInfo_GetGuti(eutra_CellE); + f_EUTRA_CellInfo_SetGuti(eutra_CellA, v_Guti_Old_Params); + // create cell and send out system information + f_EUTRA_CellConfig_Def(eutra_CellA); + + f_UT_ConfigureEPSAttach(UT); + + // Preamble: UE is in state Switched OFF (state 1) + // ========================================================================== + f_EUTRA_Preamble(eutra_CellA, STATE2_IDLEUPDATE, EPS_Only); + f_EUTRA_UE_Detach_SwitchOffUe(eutra_CellA, RRC_IDLE, -, EPS_Only); + + // now change TAC back again as Cell A is to have TAI-1 + f_EUTRA_CellInfo_SetTAC(eutra_CellA, oct2bit(tsc_TAC1)); + f_EUTRA_CellInfo_SetGuti(eutra_CellA, v_Guti_Params); + f_EUTRA_ModifySysinfoUE_Off(eutra_CellA); + + f_EUTRA_TestBody_Set(true); + fl_TC_9_2_1_1_7b_Body(v_Guti_Params, v_Guti_Old_Params); + + // Postamble + f_EUTRA_TestBody_Set(false); + f_EUTRA_Postamble(eutra_CellA, E1_IDLE, EPS_Only); + } + + //---------------------------------------------------------------------------- + /* + * @desc test body of TC_9_2_1_1_7b + * @param p_GutiParams + * @param p_GutiOldParams + * @status APPROVED (LTE_A) + */ + function fl_TC_9_2_1_1_7b_Body(GutiParameters_Type p_GutiParams, + GutiParameters_Type p_GutiOldParams) runs on EUTRA_PTC + { + // ========================================================================== + // initialize constant test case data structures + // ========================================================================== + var HalfOctet_Type v_EPS_Bearer_Id := tsc_EpsDefaultBearerId; + var ProcedureTransactionIdentifier v_EPS_TI := tsc_PTI_1; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + + var template (omit) MobileIdentity v_MSId := f_GetMSId(EPS_Only); + + var NAS_PlmnId v_PLMN := f_Asn2Nas_PlmnId(p_GutiParams.PLMN_Identity); + var NAS_PlmnId v_NAS_Old_PlmnId := f_Asn2Nas_PlmnId(p_GutiOldParams.PLMN_Identity); + + var NAS_Lac v_LAC := f_EUTRA_CellInfo_GetLocationAreaCode(eutra_CellA); + var template (omit) LocAreaId v_LAI := f_GetLAI(v_PLMN, v_LAC, EPS_Only); + var template AdditionalUpdateType v_AdditionalUpdateType := f_GetAdditionalUpdateType(EPS_Only); + var AccessPointName v_APN; + var template (omit) ProtocolConfigOptions v_Pco := omit; + var NAS_AttDetValue_Type v_AttachType :=f_GetEAttachType(EPS_Only); + var NAS_MSG_Indication_Type v_NasInd; + var NAS_UL_Message_Type v_PdnConnectivityRequest; + var boolean v_EIT_Flag := false; + + + //@siclog "Step 1" siclog@ + //The UE is switched on + f_EUTRA_SwitchOnUEandStartIP(eutra_CellA); + + //@siclog "Step 2" siclog@ + //Check: Does the UE transmit an RRCConnectionRequest message not including S-TMSI and with establishmentCause set to "mo-Signalling"? + f_EUTRA_RRC_ConnectionRequest_Def(eutra_CellA, mo_Signalling, cr_InitialUE_Identity_Random); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 2"); + + //@siclog "Step 3" siclog@ + //The SS transmits an RRCConnectionSetup message + f_EUTRA_RRC_ConnectionSetup_Def(eutra_CellA); + + //@siclog "Step 4" siclog@ + //Check: Does the UE transmit an RRCConnectionSetupComplete message including PLMN ID, + //MME group ID and MME code with ATTACH REQUEST message including a GUTI and a PDN CONNECTIVITY REQUEST message? + v_NasInd := f_EUTRA_RRCConnectionSetupComplete_Def(eutra_CellA, + cr_RRCConnectionSetupComplete_r10(v_RRC_TI, + ?, + cr_RegisteredMME(p_GutiOldParams.PLMN_Identity, + p_GutiOldParams.MME_GroupId, + p_GutiOldParams.MME_Code), + -, + native, omit, omit, omit), + cr_NAS_IndicationWithPiggybacking(tsc_SHT_IntegrityProtected, + cdr_ATTACH_REQUEST_WithGuti(v_AttachType, + v_AdditionalUpdateType, + ?, + f_GutiParameters2MobileIdentity(omit, p_GutiOldParams), + cr_TAI(v_NAS_Old_PlmnId, bit2oct(f_EUTRA_CellInfo_GetTAC(eutra_CellE)))), //TAI-12 acc. to 36.508 Table 6.3.2.2-1 @sic R5s130992 sic@ + cr_508_PDN_CONNECTIVITY_REQUEST(tsc_PdnRequest_InitialAttach, ?))); + + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 4"); + + v_PdnConnectivityRequest := v_NasInd.Pdu.PiggybackedPduList[0].Msg; + v_EPS_TI := v_PdnConnectivityRequest.pDN_CONNECTIVITY_REQUEST.procedureTransactionIdentifier; // Use this value in SS responses + // Get the PCO to be used later (TS 36.508 v.8.2.2 Table 4.7.3-6) + if (ispresent(v_PdnConnectivityRequest.pDN_CONNECTIVITY_REQUEST.protocolConfigurationOptions)) { + v_Pco := v_PdnConnectivityRequest.pDN_CONNECTIVITY_REQUEST.protocolConfigurationOptions; + } + + //@siclog "Step 5" siclog@ + //Steps 5-14, from Table 9.2.1.1.1.3.2-1 in test case 9.2.1.1.1, are performed. + //+ - ESM information optionally transferred + //@siclog "Step 5 - 9" siclog@ + v_EIT_Flag := f_CheckEsmInfoTransferFlag(v_PdnConnectivityRequest.pDN_CONNECTIVITY_REQUEST); + v_APN := f_EUTRA_Authentication_NAS_AS_Security(eutra_CellA, v_EIT_Flag, v_EPS_TI, true); + + //@siclog "Step 10" siclog@ + //+ SS responds with ATTACH ACCEPT message including a valid TAI list. The + //+ ACTIVATE DEFAULT EPS BEARER CONTEXT REQUEST message is piggybacked in + //+ ATTACH ACCEPT message + f_EUTRA_RRCConnectionReconfigurationWithAttachAcceptAllParams(eutra_CellA, + v_EPS_Bearer_Id, + v_RRC_TI, + v_EPS_TI, + v_AttachType, + f_EUTRA_GetPDNAddress(f_CheckPCOforIPallocationViaNas(v_Pco)), + f_GutiParameters2MobileIdentity(tsc_IEI_Guti, p_GutiParams), // GUTI1 + cs_TrackingAreaIdListDef_lv, + v_LAI, + v_MSId, + omit, + v_APN, + f_GetDefaultProtocolConfigOptions(v_Pco), + f_GetAdditionalUpdateResult(v_NasInd.Pdu.Msg.aTTACH_REQUEST.addUpdateType, + EPS_Only)); + + //@siclog "Step 11" siclog@ + //+ Check: does the UE transmit an ATTACH COMPLETE message including an + //+ ACTIVATE DEFAULT EPS BEARER CONTEXT ACCEPT message? + f_EUTRA_NAS_AttachComplete(eutra_CellA, v_EPS_Bearer_Id); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 11"); + + //@siclog "Step 12 Void" siclog@ + + //@siclog "Step 13" siclog@ + //+ The SS releases the RRC connection. + f_EUTRA_RRC_ConnectionRelease(eutra_CellA); + + //@siclog "Step 14" siclog@ + //+ Check: Does the test result of CALL generic procedure [36.508] + // indicate that the UE is in E-UTRA EMM-REGISTERED state on + // CellA? + f_EUTRA_508Check_IdleState(eutra_CellA); + + }// end of fl_TC_9_2_1_1_7b_Body + + //============================================================================ + /* + * @desc REFERENCE TS 36.523-1 clause 9.2.1.1.27 + * @status APPROVED (LTE_A) + */ + function f_TC_9_2_1_1_27_EUTRA() runs on EUTRA_PTC + { /* Attach / Abnormal case / Network reject with Extended Wait Timer */ + + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c1); + + // create cell and send out system information + f_EUTRA_CellConfig_Def(eutra_CellA); + //Equip UE with a USIM containing default values except for those shown in Table 9.2.1.1.27.3.1-1 + f_UT_USIM_Insert(UT, "36.523-1 Table 9.2.1.1.27.3.1-1"); // @sic R5-144401 sic@ + f_UT_ConfigureEPSAttach(UT); + + f_EUTRA_Preamble(eutra_CellA, STATE2_IDLEUPDATE, EPS_Only); + f_EUTRA_UE_Detach_SwitchOffUe(eutra_CellA, RRC_IDLE,-, EPS_Only); + f_EUTRA_TestBody_Set(true); + + fl_TC_9_2_1_1_27_Body(); + + // Postamble + f_EUTRA_TestBody_Set(false); + f_EUTRA_Postamble(eutra_CellA, E2_CONNECTED, EPS_Only); + + } // end f_TC_9_2_1_1_27_EUTRA + + /* + * @desc test body of TC_9_2_1_1_27 + * @status APPROVED (LTE_A) + */ + function fl_TC_9_2_1_1_27_Body() runs on EUTRA_PTC + { + var NAS_MSG_Indication_Type v_NAS_Ind; + var template AdditionalUpdateType v_AdditionalUpdateType := f_GetAdditionalUpdateType(EPS_Only); + + var ReleaseCause v_ReleaseCause := other; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var ExtendedWaitTime_r10_Type v_ExtendedWaitTime_r10 := 5; + + var GutiParameters_Type v_GutiParams1 := f_EUTRA_CellInfo_GetGuti(eutra_CellA); + var NAS_PlmnId v_PLMN := f_Asn2Nas_PlmnId(v_GutiParams1.PLMN_Identity); + var NAS_AttDetValue_Type v_AttachType := f_GetEAttachType(EPS_Only); + var B1_Type v_DeviceProperties:= '1'B ; + + var float v_T3346Val := f_EUTRA_SetTimerToleranceMin(eutra_CellA, nasTimer, int2float(v_ExtendedWaitTime_r10)) - (int2float(tsc_EUTRA_DelayAfterRRCConnectionRelease) / 1000.0); + + //@siclog "Step 1" siclog@ + //Switch on UE + f_EUTRA_SwitchOnUEandStartIP(eutra_CellA); + + //+ The UE transmit an ATTACH REQUEST message. + //@siclog "Step 2" siclog@ + v_NAS_Ind:= f_EUTRA_RRC_ConnEst_DefWithNas(eutra_CellA, + tsc_RRC_TI_Def, + cr_EstablishmentCause_Any, + cr_NAS_IndicationWithPiggybacking(tsc_SHT_IntegrityProtected, + cdr_ATTACH_REQUEST_WithGuti_DeviceProperties(v_AttachType, + v_AdditionalUpdateType, + f_EUTRA_SecurityKSIasme_Get(), + f_GutiParameters2MobileIdentity(omit, v_GutiParams1), + cr_TAI(v_PLMN, tsc_TAC1), + cr_DeviceProperties('D'H,v_DeviceProperties)), + cr_508_PDN_CONNECTIVITY_REQUEST(tsc_PdnRequest_InitialAttach, + f_GetPdnType()))); + + //+ The SS releases the RRC connection. + //@siclog "Step 3" siclog@ + f_EUTRA_RRC_ConnectionRelease_Common(eutra_CellA, + cs_RRCConnectionRelease_extendedWaitTime_r10(v_RRC_TI, + v_ReleaseCause, + v_ExtendedWaitTime_r10)); + + // The SS waits 5 seconds (T3346) + //@siclog "Step 4" siclog@ + f_Delay(v_T3346Val); + + // Check: does the UE transmit an ATTACH REQUEST message? + //@siclog "Step 5" siclog@ + v_NAS_Ind := f_EUTRA_RRC_ConnEst_DefWithNas(eutra_CellA, + tsc_RRC_TI_Def, + cr_EstablishmentCause_Any, + cr_NAS_IndicationWithPiggybacking(tsc_SHT_IntegrityProtected, + cdr_ATTACH_REQUEST_WithGuti_DeviceProperties(v_AttachType, + v_AdditionalUpdateType, + f_EUTRA_SecurityKSIasme_Get(), + f_GutiParameters2MobileIdentity(omit, v_GutiParams1), + cr_TAI(v_PLMN, tsc_TAC1), + cr_DeviceProperties('D'H,v_DeviceProperties)), + cr_508_PDN_CONNECTIVITY_REQUEST(tsc_PdnRequest_InitialAttach, + f_GetPdnType()))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 5"); + + //@siclog "Steps 6 - 17" siclog@ + // The attach procedure is completed and the RRC connection is released by executing + // steps 5 to 16 of TS 36.508 sub clause 4.5.2.3 + f_EUTRA_IdleUpdated_Step5_17(eutra_CellA, STATE2_IDLEUPDATE, EPS_Only, v_NAS_Ind, false); + + }// end function fl_TC_9_2_1_1_27_Body + + //============================================================================ + /* + * @desc REFERENCE TS 36.523-1 clause 9.2.1.1.27a + * @status + */ + function f_TC_9_2_1_1_27a_EUTRA() runs on EUTRA_PTC + { + + // create cell and send out system information + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c1); + f_EUTRA_CellConfig_Def(eutra_CellA); + //Equip UE with a USIM containing default values except for those shown in Table 9.2.1.1.27.3.1-2 + f_UT_USIM_Insert(UT, "36.523-1 Table 9.2.1.1.27a.3.1-1"); + + f_UT_ConfigureEPSAttach(UT); + + f_EUTRA_Preamble(eutra_CellA, STATE2_IDLEUPDATE, EPS_Only); + f_EUTRA_UE_Detach_SwitchOffUe(eutra_CellA, RRC_IDLE,-, EPS_Only); + f_EUTRA_TestBody_Set(true); + + fl_TC_9_2_1_1_27a_Body(); + + // Postamble + f_EUTRA_TestBody_Set(false); + f_EUTRA_Postamble(eutra_CellA, E1_IDLE, EPS_Only); + + } // end f_TC_9_2_1_1_27a_EUTRA + + /* + * @desc test body of TC_9_2_1_1_27a + * @status + */ + function fl_TC_9_2_1_1_27a_Body() runs on EUTRA_PTC + { + var template AdditionalUpdateType v_AdditionalUpdateType := f_GetAdditionalUpdateType(EPS_Only); + var SRB_COMMON_IND v_ReceivedAsp; + var NAS_AttDetValue_Type v_AttachType := f_GetEAttachType(EPS_Only); + timer t_WaitTimer:= 60.0; + + //@siclog "Step 1" siclog@ + // Force SS to start transmitting SystemInformationBlockType14 Extended access barring activated. + + // Change to C1 to C21 in order to transmit SIB14 + f_EUTRA_ChangeSysinfoCombinationC1_ToC21(eutra_CellA); + f_EUTRA_ModifySysinfoUE_Off (eutra_CellA); + + // @siclog "Step 2" siclog@ + // Switch on UE + f_EUTRA_SwitchOnUEandStartIP(eutra_CellA); + + // @siclog "Step 3" siclog@ + // Does the UE send an ATTACH REQUEST message in the next 60 sec? + + t_WaitTimer.start; + alt { + + [] SRB.receive(car_SRB1_NasPdu_IND(eutra_CellA, + cr_NAS_IndicationWithPiggybacking(tsc_SHT_IntegrityProtected, + cr_508_ATTACH_REQUEST(v_AttachType, v_AdditionalUpdateType), + cr_508_PDN_CONNECTIVITY_REQUEST( tsc_PdnRequest_InitialAttach, + f_GetPdnType() ))))-> value v_ReceivedAsp + { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Attach Request received in Step 3"); + } + + [] t_WaitTimer.timeout + { + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 3"); + } + } + + // @siclog "Step 4" siclog@ + // Force SS to stop transmitting SystemInformationBlockType14 + f_EUTRA_ChangeSysinfoCombinationC21_ToC1(eutra_CellA); + // UE is already Switch On + f_EUTRA_ModifySysinfo(eutra_CellA,true); + + // @siclog "Step 5" siclog@ + f_EUTRA_IdleUpdated(eutra_CellA, NORMAL, STATE2_IDLEUPDATE, EPS_Only); + + + }// end function fl_TC_9_2_1_1_27a_Body + + /*============================================================================ + * @desc REFERENCE TS 36.523-1 clause 9.2.1.2.4a + * @status + */ + + function f_TC_9_2_1_2_4a_EUTRA() runs on EUTRA_PTC + { + + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c1); + + f_EUTRA_CellConfig_Def(eutra_CellA); + + f_UT_ConfigureCombinedAttach (UT); + + f_EUTRA_Preamble(eutra_CellA, STATE2_IDLEUPDATE, Combined); + f_EUTRA_UE_Detach_SwitchOffUe ( eutra_CellA, RRC_IDLE,-,Combined); + + f_EUTRA_TestBody_Set(true); + + fl_TC_9_2_1_2_4a_Body(); + // Postamble + f_EUTRA_TestBody_Set(false); + f_EUTRA_Postamble(eutra_CellB, E2_CONNECTED, Combined); + + }// function f_TC_9_2_1_2_4a_EUTRA + + + /* + * @desc test body of TC_9_2_1_2_4a + * @status + */ + + function fl_TC_9_2_1_2_4a_Body() runs on EUTRA_PTC + { + var HalfOctet_Type v_EPS_Bearer_Id := tsc_EpsDefaultBearerId; + var ProcedureTransactionIdentifier v_EPS_TI := '00'O; + var NAS_MSG_Indication_Type v_NasInd; + var RRC_TransactionIdentifier v_RRC_TI := tsc_RRC_TI_Def; + var GutiParameters_Type v_Guti1_Params := f_EUTRA_CellInfo_GetGuti(eutra_CellA); + var NAS_PlmnId v_PLMN := f_Asn2Nas_PlmnId(v_Guti1_Params.PLMN_Identity); + var NAS_Lac v_LacA := f_EUTRA_CellInfo_GetLocationAreaCode ( eutra_CellA ); + var template (omit) LocAreaId v_LAI := f_GetLAI(v_PLMN, v_LacA, Combined); + var template AdditionalUpdateType v_AdditionalUpdateType := f_GetAdditionalUpdateType (Combined); + var template (value) AccessPointName v_APN; + var template (omit) ProtocolConfigOptions v_Pco := omit; + var template (omit) EPS_BearerContextStatus v_EpsBearerCtxtStatus; + var boolean v_EIT_Flag := false; + var template (value) NAS_DL_Message_Type v_TAU_Accept; + var float v_T3402:= f_EUTRA_SetTimerToleranceMax(eutra_CellB, nasTimer, 30.0); + + + //@siclog "Step 1" siclog@ + f_EUTRA_SwitchOnUEandStartIP(eutra_CellA); + + //@siclog "Step 2" siclog@ + v_NasInd:= f_EUTRA_RRC_ConnEst_DefWithNas(eutra_CellA, + v_RRC_TI, + cr_EstablishmentCause_Any, + cr_NAS_IndicationWithPiggybacking(tsc_SHT_IntegrityProtected, + cdr_ATTACH_REQUEST_AttachType(tsc_EAttachType_Combined, + v_AdditionalUpdateType, + f_GutiParameters2MobileIdentity(tsc_IEI_Guti, v_Guti1_Params), // GUTI1 + cr_TAI( v_PLMN, tsc_TAC1), + v_LAI, + omit), + cr_508_PDN_CONNECTIVITY_REQUEST(tsc_PdnRequest_InitialAttach, + f_GetPdnType()))); + + + v_EPS_TI := v_NasInd.Pdu.PiggybackedPduList[0].Msg.pDN_CONNECTIVITY_REQUEST.procedureTransactionIdentifier; + v_EIT_Flag := f_CheckEsmInfoTransferFlag(v_NasInd.Pdu.PiggybackedPduList[0].Msg.pDN_CONNECTIVITY_REQUEST); + if (ispresent( v_NasInd.Pdu.PiggybackedPduList[0].Msg.pDN_CONNECTIVITY_REQUEST.protocolConfigurationOptions)) { + v_Pco := v_NasInd.Pdu.PiggybackedPduList[0].Msg.pDN_CONNECTIVITY_REQUEST.protocolConfigurationOptions; + } + + //+ The SS transmits an AUTHENTICATION REQUEST message to initiate the EPS authentication and AKA procedure. + //+ The UE transmits an AUTHENTICATION RESPONSE message and establishes mutual authentication. + //+ The SS transmits a NAS SECURITY MODE COMMAND message to activate NAS security. + //+ The UE transmits a NAS SECURITY MODE COMPLETE message and establishes the initial security configuration. + //+ Steps 7Aa1 and 7Aa2 ESM INFORMATION REQUEST / ESM INFORMATION RESPONSE + //@siclog "Step 4 - 7Aa2" siclog@ + v_APN := f_EUTRA_Authentication_NAS_AS_Security (eutra_CellA,v_EIT_Flag, v_EPS_TI); + + //@siclog "Step 8" siclog@ + //+ SS responds with ATTACH ACCEPT message. + f_IP_ChangeEutraCell(IP, eutra_CellA); + f_EUTRA_RRCConnectionReconfiguration_SRB2_1AM_DRB_Est(eutra_CellA, + v_RRC_TI, + cs_NAS_RequestWithPiggybacking(tsc_SHT_IntegrityProtected_Ciphered, + cs_508_ATTACH_ACCEPT(tsc_EAttachType_EpsOnly, + cs_TrackingAreaIdListDef_lv, + omit, + omit, + omit, + cs_EMM_Cause_tv(tsc_Cause_Congestion), + f_GetAdditionalUpdateResult(v_NasInd.Pdu.Msg.aTTACH_REQUEST.addUpdateType, Combined), + cs_GprsTimer_tv('17'O, '000'B, '01111'B)), //T3402 + cs_508_ActivateDefEpsBearerContextRequest(v_EPS_Bearer_Id, + v_EPS_TI, + v_APN, + f_EUTRA_GetPDNAddress(f_CheckPCOforIPallocationViaNas(v_Pco)), + -, + f_GetDefaultProtocolConfigOptions (v_Pco)))); + + //@siclog "Step 9" siclog@ + //+ The UE transmits an ATTACH COMPLETE message + //+ EXCEPTION: In parallel to the event described in step 9 below the generic procedure for IP address allocation in the U-plane specified in TS 36.508 subclause 4.5A.1 takes place + //+ performing IP address allocation in the U-plane if requested by the UE. + //+ EXCEPTION: In parallel to the event described in step 9 below the generic procedure for IMS signalling in the U-plane specified in TS 36.508 subclause 4.5A.3 takes place + //+ if requested by the UE + f_EUTRA_NAS_AttachComplete(eutra_CellA, v_EPS_Bearer_Id); + + //Wait Trigger from IMS step 8b + f_IMS_IPCAN_WaitForTrigger(IMS[tsc_Index_PDN1]); + + //@siclog "Step 10" siclog@ + f_EUTRA_RRC_ConnectionRelease(eutra_CellA); + + //@siclog "Step 11" siclog@ + //+ Wait for T3402 + f_Delay(v_T3402); + + //@siclog "Step 12" siclog@ + // Check: Does the UE transmit TRACKING AREA UPDATE REQUEST message? [3,P] + v_NasInd := f_EUTRA_RRC_ConnEst_DefWithNas(eutra_CellB, + tsc_RRC_TI_Def, + cr_EstablishmentCause_Any, + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_508_TAU_Request(tsc_EpsUpdate_Combined_IMSIAttach, + f_EUTRA_SecurityKSIasme_Get(), + cr_DRXparameter_Any ('5C'O) ifpresent, + v_AdditionalUpdateType))); + + + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 12"); + v_EpsBearerCtxtStatus := v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.epsBearerContextStatus; + + + //@siclog "Step 13" siclog@ + //+ SS responds with TRACKING AREA UPDATE ACCEPT message + v_TAU_Accept := cs_TAU_Accept_Common (tsc_EpsUpdate_Combined_TaLaUpdate, + f_GutiParameters2MobileIdentity(tsc_IEI_Guti, v_Guti1_Params), + cs_TrackingAreaIdListDef_tlv, + v_EpsBearerCtxtStatus, + omit, + omit, + f_GetAdditionalUpdateResult(v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.addUpdateType, Combined)); + + SRB.send ( cas_SRB1_NasPdu_REQ ( eutra_CellA, + cs_TimingInfo_Now, + cs_NAS_Request ( tsc_SHT_IntegrityProtected_Ciphered, + v_TAU_Accept))); + + // UE sends TRACKING AREA UPDATE COMPLETE + //@siclog "Step 14" siclog@ + SRB.receive (car_SRB1_NasPdu_IND(eutra_CellA, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_TAU_Complete))); + + + + }// function fl_tc_9_2_1_2_4a_Body + + } // group TestcaseImplementations + +} // module NAS_Attach_EOnly_A diff --git a/LTE_A_IWD_14wk37/LTE_A/9_2/NAS_TrackingArea_EOnly_A.ttcn b/LTE_A_IWD_14wk37/LTE_A/9_2/NAS_TrackingArea_EOnly_A.ttcn new file mode 100644 index 0000000..52a795d --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/9_2/NAS_TrackingArea_EOnly_A.ttcn @@ -0,0 +1,756 @@ +// *************************************************************************** +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// * $Date: 2014-09-09 15:47:43 +0200 (Tue, 09 Sep 2014) $ +// * $Rev: 12160 $ +// *************************************************************************** + +module NAS_TrackingArea_EOnly_A { + + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_Component all; + import from EUTRA_CellInfo all; + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from EUTRA_RRC_Templates all; + import from EUTRA_SRB_Templates all; + import from EUTRA_AspCommon_Templates all; + import from EUTRA_CommonProcedures all; + import from NAS_CommonTypeDefs all; + import from EPS_NAS_TypeDefs all; + import from EPS_NAS_Constants all; + import from EPS_NAS_Templates all; + import from NAS_CommonTemplates all; + import from NAS_AuxiliaryDefsAndFunctions all; + import from EUTRA_NASCommonFunctions all; + import from EPS_NAS_MsgContainers all; + import from EUTRA_RRCSteps all; + import from EUTRA_NASSteps all; + import from EUTRA_ConfigurationSteps all; + import from EUTRA_AuxiliaryFunctions all; + import from EUTRA_SecurityFunctions all; + import from EUTRA_Timing all; + import from IP_PTC_CtrlMsgs all; + import from UpperTesterFunctions all; + + template (present) NAS_UL_Message_Type cdr_TAU_Request_DeviceProperties(template (present) EPS_UpdateTypeValue p_EpsUpdate_TypeValue, + NAS_KsiValue p_KsiValue, + template DRXparameter p_DRXparameter, + template AdditionalUpdateType p_AdditionalUpdateType, + template (present) TrackingAreaId p_LastTai, + template DeviceProperties p_DeviceProperties) + modifies cr_508_TAU_Request := + { /* @status APPROVED (LTE, LTE_IRAT) */ + tRACKING_AREA_UPDATE_REQUEST := { + lastVisitedRegisteredTai := p_LastTai, + deviceProperties := p_DeviceProperties + } + }; + + //============================================================================ + /* + * @desc REFERENCE TS 36.523-1 clause 9.2.3.1.5a + * @status APPROVED (LTE_A) + */ + function f_TC_9_2_3_1_5a_EUTRA() runs on EUTRA_PTC + { /* Periodic tracking area update / accepted / Per-device timer */ + + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c1); + + // create cell and send out system information + f_EUTRA_CellConfig_Def(eutra_CellA); + + // Preamble: The UE is in state Switched OFF (state 1) + f_EUTRA_Preamble_Reject(eutra_CellA, tsc_Cause_TA_NotAllowed, NORMAL); + f_EUTRA_TestBody_Set(true); + + fl_TC_9_2_3_1_5a_Body(); + + // Postamble + f_EUTRA_TestBody_Set(false); + f_EUTRA_Postamble(eutra_CellA, E1_IDLE ); + } + + /* + * @desc test body of TC_9_2_3_1_5a + * @status APPROVED (LTE_A) + */ + function fl_TC_9_2_3_1_5a_Body() runs on EUTRA_PTC + { + const EPS_BearerIdentity tsc_EpsBearerId := '5'H; + var ProcedureTransactionIdentifier v_EPS_TI := '01'O; + var template (value) AccessPointName v_APN; + var B1_Type v_MS_NetworkFeatureSupport := '1'B ; + // initialize component specific data structures + // get all data which are required for a GUTI + var GutiParameters_Type v_Guti1_Params := f_EUTRA_CellInfo_GetGuti(eutra_CellA); + var GutiParameters_Type v_Guti2_Params := f_CreateGutiParamsWithUpdatedSTmsi(v_Guti1_Params); + + var EUTRA_SecurityParams_Type v_SecurityParams := f_EUTRA_Security_Get(); + var NAS_PlmnId v_Plmn1 := f_Asn2Nas_PlmnId(v_Guti1_Params.PLMN_Identity); + var NAS_Tac v_Tac1 := bit2oct(f_EUTRA_CellInfo_GetTAC(eutra_CellA)); + var boolean v_EIT_Flag := false; + var template (omit) EPS_BearerContextStatus v_EpsBearerCtxtStatus; + var NAS_AttDetValue_Type v_AttachType := f_GetEAttachType(NORMAL); + var template AdditionalUpdateType v_AdditionalUpdateType := f_GetAdditionalUpdateType (); + var template (omit) LocAreaId v_LAI := f_EUTRA_GetCellLAI (eutra_CellA, NORMAL); + var template (omit) MobileIdentity v_MSId := f_GetMSId (NORMAL); + var NAS_MSG_Indication_Type v_NasInd; + var float v_Wait6Mins := f_EUTRA_SetTimerToleranceMin(eutra_CellA, nasTimer, (6.0 * 60.0)) ; //360 sec = 6 mins timer @sic R5s140075 sic@ + var float v_Wait8Mins := f_EUTRA_SetTimerToleranceMin(eutra_CellA, nasTimer, (8.0 * 60.0)) ; //480 sec = 8 mins timer @sic R5s140075 sic@ + + //@siclog "Step 1" siclog@ + //+ The UE is powered up or switched on. + f_EUTRA_SwitchOnUEandStartIP(eutra_CellA); + + //@siclog "Step 2" siclog@ + //+ The UE transmits an ATTACH REQUEST message with a PDN + //+ CONNECTIVITY REQUEST message to request PDN connectivity to the + //+ default PDN --> ATTACH REQUEST + v_NasInd := f_EUTRA_RRC_ConnEst_DefWithNas(eutra_CellA, + tsc_RRC_TI_Def, + cr_EstablishmentCause_Any, + cr_NAS_IndicationWithPiggybacking(tsc_SHT_NoSecurityProtection, + cdr_ATTACH_REQUEST_WithMSNetworkFeatureSupport(v_AttachType, + v_AdditionalUpdateType, + cr_MS_NetworkFeatureSupport('C'H,v_MS_NetworkFeatureSupport)), // @sic R5s140075 sic@ + cr_508_PDN_CONNECTIVITY_REQUEST(tsc_PdnRequest_InitialAttach, + f_GetPdnType()))); + v_EPS_TI := v_NasInd.Pdu.PiggybackedPduList[0].Msg.pDN_CONNECTIVITY_REQUEST.procedureTransactionIdentifier; // Use this value in SS responses + v_EIT_Flag := f_CheckEsmInfoTransferFlag(v_NasInd.Pdu.PiggybackedPduList[0].Msg.pDN_CONNECTIVITY_REQUEST); + v_SecurityParams.NAS_SecurityCap := f_EUTRA_FillNAS_SecurityCapability(v_NasInd.Pdu.Msg.aTTACH_REQUEST); + f_EUTRA_Security_Set ( v_SecurityParams );//Saving security parameters + + //@siclog "Step 3 - 6" siclog@ + //+ The SS starts an authentication procedure <-- AUTHENTICATION + //+ REQUEST + + //+ The UE responds to the authentication procedure --> + //+ AUTHENTICATION RESPONSE + + //+ The SS starts a NAS security mode command procedure to perform + //+ NAS integrity protection. <-- SECURITY MODE COMMAND + + //+ The UE responds to the NAS security mode command procedure --> + //+ SECURITY MODE COMPLETE + v_APN := f_EUTRA_Authentication_NAS_AS_Security(eutra_CellA, v_EIT_Flag, v_EPS_TI, false); + + //@siclog "Step 7" siclog@ + //+ The SS transmits an ATTACH ACCEPT message with GUTI-1 and with + //+ the ACTIVATE DEFAULT EPS BEARER CONTEXT REQUEST message. <-- + //+ ATTACH ACCEPT + f_IP_ChangeEutraCell(IP, eutra_CellA); + f_EUTRA_RRCConnectionReconfiguration_SRB2_1AM_DRB_Est(eutra_CellA, + tsc_RRC_TI_Def, + cs_NAS_RequestWithPiggybacking(tsc_SHT_IntegrityProtected_Ciphered, + cs_508_ATTACH_ACCEPT(v_AttachType, // @sic R5s140075 sic@ + cs_TAIListNonConsecutive_lv(v_Plmn1, { v_Tac1 }), + f_GutiParameters2MobileIdentity(tsc_IEI_Guti, v_Guti1_Params), + v_LAI, + v_MSId, + omit, + f_GetAdditionalUpdateResult(v_NasInd.Pdu.Msg.aTTACH_REQUEST.addUpdateType), + cs_GprsTimer_v(tsc_GprsTimerUnit_1min, '00100'B), // @sic R5s140075 sic@ + omit, + cs_GprsTimer3(tsc_Gprs3TimerUnit_1min, '00110'B)),// for T3412 Extended value + cs_508_ActivateDefEpsBearerContextRequest(tsc_EpsBearerId, + v_EPS_TI, + v_APN, + f_EUTRA_GetPDNAddress (f_CheckPCOforIPallocationViaNas (omit)), + -, + f_GetDefaultProtocolConfigOptions(v_NasInd.Pdu.PiggybackedPduList[0].Msg.pDN_CONNECTIVITY_REQUEST.protocolConfigurationOptions)))); + + //@siclog "Step 8" siclog@ + //+ The UE transmits an ATTACH COMPLETE message with the ACTIVATE + //+ DEFAULT EPS BEARER CONTEXT ACCEPT message --> ATTACH COMPLETE + f_EUTRA_NAS_AttachComplete(eutra_CellA, tsc_EpsBearerId); + + //@siclog "Step 9" siclog@ + //+ The SS releases the RRC connection. + f_EUTRA_RRC_ConnectionRelease(eutra_CellA); + + //@siclog "Step 10" siclog@ + //+ The SS waits 6minutes . (Expiry of T3412 extended value) + f_Delay(v_Wait6Mins); // 6 minutes - 10% + + //@siclog "Step 11" siclog@ + //+ Check: Does the UE send TRACKING AREA UPDATE REQUEST message? + //+ --> TRACKING AREA UPDATE REQUEST [1 P] + v_NasInd := f_EUTRA_RRC_ConnEst_DefWithNas(eutra_CellA, + tsc_RRC_TI_Def, + cr_EstablishmentCause_Any, + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cdr_TAU_Request_OldGuti_MSNetworkFeatureSupport(tsc_EpsUpdate_Periodic, + f_EUTRA_SecurityKSIasme_Get(), + cr_DRXparameter_Any ('5C'O) ifpresent, + v_AdditionalUpdateType, + f_GutiParameters2MobileIdentity(omit, v_Guti1_Params), + cr_TAI_Any, + cr_MS_NetworkFeatureSupport('C'H, v_MS_NetworkFeatureSupport)))); // @sic R5s140075 sic@ + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 11"); + v_EpsBearerCtxtStatus := v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.epsBearerContextStatus; + + //@siclog "Step 12" siclog@ + //+ The SS sends TRACKING AREA UPDATE ACCEPT. <-- TRACKING AREA + //+ UPDATE ACCEPT + SRB.send(cas_SRB1_NasPdu_REQ(eutra_CellA, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_TAU_Accept_T3412Extd(f_GetEPSTAUType(EPS_Only), // @sic R5s140075 sic@ + f_GutiParameters2MobileIdentity(tsc_IEI_Guti, v_Guti2_Params), + cds_TAIListNonConsecutive_tlv(v_Plmn1, { v_Tac1 }), + v_EpsBearerCtxtStatus, + f_EUTRA_GetCellLAI (eutra_CellA, EPS_Only), + f_GetMSId (EPS_Only), // @sic R5s110478 sic@ @sic R5-121739 sic@ + f_GetAdditionalUpdateResult(v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.addUpdateType), + cs_GprsTimer_tv('5A'O, tsc_GprsTimerUnit_1min, '00100'B), // @sic R5s140075 sic@ + cs_GprsTimer3(tsc_Gprs3TimerUnit_1min, '01000'B)))));// for T3412 Extended value + f_EUTRA_CellInfo_SetGuti(eutra_CellA, v_Guti2_Params); + + //@siclog "Step 13" siclog@ + //+ Check: Does the UE send TRACKING AREA UPDATE COMPLETE message? + //+ --> TRACKING AREA UPDATE COMPLETE + SRB.receive(car_SRB1_NasPdu_IND(eutra_CellA, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_TAU_Complete))); + + //@siclog "Step 14" siclog@ + //+ The SS releases the RRC connection. + f_EUTRA_RRC_ConnectionRelease(eutra_CellA); + + //@siclog "Step 15" siclog@ + //+ The SS waits 8 minutes . (Expiry of T3412 extended value) + f_Delay(v_Wait8Mins); // 8 minutes - 10% + + //@siclog "Step 16" siclog@ + //+ Check: Does the UE send TRACKING AREA UPDATE REQUEST message? + //+ --> TRACKING AREA UPDATE REQUEST [2 P] + v_NasInd := f_EUTRA_RRC_ConnEst_DefWithNas(eutra_CellA, + tsc_RRC_TI_Def, + cr_EstablishmentCause_Any, + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cdr_TAU_Request_OldGuti_MSNetworkFeatureSupport(tsc_EpsUpdate_Periodic, + f_EUTRA_SecurityKSIasme_Get(), + cr_DRXparameter_Any ('5C'O) ifpresent, + v_AdditionalUpdateType, + f_GutiParameters2MobileIdentity(omit, v_Guti2_Params), // @sic R5s140075 sic@ + cr_TAI_Any, + cr_MS_NetworkFeatureSupport('C'H,v_MS_NetworkFeatureSupport)))); // @sic R5s140075 sic@ + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "Step 16"); + v_EpsBearerCtxtStatus := v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.epsBearerContextStatus; + + //@siclog "Step 17" siclog@ + //+ The SS sends TRACKING AREA UPDATE ACCEPT. <-- TRACKING AREA + //+ UPDATE ACCEPT + SRB.send(cas_SRB1_NasPdu_REQ(eutra_CellA, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_TAU_Accept_T3412Extd(f_GetEPSTAUType(EPS_Only), // @sic R5s140075 sic@ + f_GutiParameters2MobileIdentity(tsc_IEI_Guti, v_Guti2_Params), + cds_TAIListNonConsecutive_tlv(v_Plmn1, { v_Tac1 }), + v_EpsBearerCtxtStatus, + f_EUTRA_GetCellLAI (eutra_CellA, EPS_Only), + f_GetMSId (EPS_Only), // @sic R5s110478 sic@ @sic R5-121739 sic@ + f_GetAdditionalUpdateResult(v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.addUpdateType), + cs_GprsTimer_tv('5A'O, tsc_GprsTimerUnit_1min, '00100'B), // @sic R5s140075 sic@ + cs_GprsTimer3(tsc_Gprs3TimerUnit_1min, '01000'B)))));// for T3412 Extended value + f_EUTRA_CellInfo_SetGuti(eutra_CellA, v_Guti2_Params); + + //@siclog "Step 18" siclog@ + //+ Check: Does the UE send TRACKING AREA UPDATE COMPLETE message? + //+ --> TRACKING AREA UPDATE COMPLETE [2 P] + SRB.receive(car_SRB1_NasPdu_IND(eutra_CellA, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_TAU_Complete))); + + //@siclog "Step 19" siclog@ + //+ The SS releases the RRC connection. + f_EUTRA_RRC_ConnectionRelease(eutra_CellA); + + } // function fl_TC_9_2_3_1_5a_Body + + //============================================================================ +/* + * @desc REFERENCE TS 36.523-1 clause 9.2.3.1.8a + * @status + */ + function f_TC_9_2_3_1_8a_EUTRA() runs on EUTRA_PTC + { + /// @desc Normal tracking area update / low priority override + + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c1); + + // 2 Cells: A (serving), B ( suitable neighbour cell) + f_EUTRA_CellConfig_Def(eutra_CellA); + f_EUTRA_CellConfig_Def(eutra_CellB); + + f_UT_ConfigureEPSAttach (UT); + + f_UT_USIM_Insert ( UT, "36.523-1 Table 9.2.3.1.8a.3.1-1" ); //@sic R5-140958 sic@ + + // Cell B is no available + f_EUTRA_SetCellPower ( eutra_CellB, tsc_NonSuitableCellRS_EPRE ); + + // Preamble: UE is in state Registered, Idle Mode (state 2) on Cell A + f_EUTRA_Preamble(eutra_CellA, STATE2_IDLEUPDATE, EPS_Only); + + + + f_EUTRA_TestBody_Set(true); + + fl_TC_9_2_3_1_8a_Body(); + + // Postamble + f_EUTRA_TestBody_Set(false); + f_EUTRA_Postamble(eutra_CellB, E2_T3440); + + } // function f_TC_2_9_3_1_8a_EUTRA + + + //---------------------------------------------------------------------------- + /* + * @desc test body of TC_9_2_3_1_8a + * @status + */ + function fl_TC_9_2_3_1_8a_Body() runs on EUTRA_PTC + { + var NAS_Tac v_Tac1 := bit2oct(f_EUTRA_CellInfo_GetTAC(eutra_CellA)); + var GutiParameters_Type v_Guti1_Params := f_EUTRA_CellInfo_GetGuti(eutra_CellA); + var GutiParameters_Type v_Guti2_Params := f_EUTRA_CellInfo_GetGuti(eutra_CellB); + var NAS_PlmnId v_HomePlmn:= f_Asn2Nas_PlmnId(v_Guti1_Params.PLMN_Identity); + var EPS_UpdateTypeValue v_UpdateType := f_GetEPSTAUType(EPS_Only); + var template (omit) EPS_BearerContextStatus v_EpsBearerCtxtStatus; + var template (value) CellPowerList_Type v_CellPowerList; + var B1_Type v_DeviceProperties := '0'B ; + var NAS_MSG_Indication_Type v_NasInd; + var template AdditionalUpdateType v_AdditionalUpdateType := f_GetAdditionalUpdateType (EPS_Only); + var template (value) TrackingAreaIdList v_TaiList; + + + //@siclog "Step 1" siclog@ + //+ Set the cell type of cell A to the "Non-Suitable cell". + //+ Set the cell type of cell B to the "Serving cell" + v_CellPowerList := { + cs_CellPower ( eutra_CellA, tsc_NonSuitableCellRS_EPRE ), + cs_CellPower ( eutra_CellB, tsc_ServingCellRS_EPRE ) + }; + f_EUTRA_SetCellPowerList ( v_CellPowerList ); + + //@siclog "Step 2" siclog@ + //+ Check: Does the UE transmit a TRACKING AREA UPDATE REQUEST message? + v_NasInd := f_EUTRA_RRC_ConnEst_DefWithNas(eutra_CellB, + tsc_RRC_TI_Def, + cr_EstablishmentCause_Any, + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cdr_TAU_Request_DeviceProperties(v_UpdateType, + f_EUTRA_SecurityKSIasme_Get(), + cr_DRXparameter_Any ('5C'O) ifpresent, + v_AdditionalUpdateType, + cr_TAI(v_HomePlmn, v_Tac1), + cr_DeviceProperties('D'H,v_DeviceProperties)))); + f_EUTRA_PreliminaryPass (__FILE__, __LINE__, "Step 2"); + v_EpsBearerCtxtStatus := v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.epsBearerContextStatus; + + v_TaiList := cds_TAIListNonConsecutive_tlv(f_Asn2Nas_PlmnId(v_Guti1_Params.PLMN_Identity), + { bit2oct(f_EUTRA_CellInfo_GetTAC(eutra_CellB)) } ); + + //@siclog "Step 3" siclog@ + //+ The SS transmits a TRACKING AREA UPDATE ACCEPT message. <-- TRACKING + //+ AREA UPDATE ACCEPT + SRB.send(cas_SRB1_NasPdu_REQ(eutra_CellB, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_508_TAU_Accept(v_UpdateType, + f_GutiParameters2MobileIdentity(tsc_IEI_Guti, v_Guti2_Params), + v_TaiList, + v_EpsBearerCtxtStatus, + f_EUTRA_GetCellLAI(eutra_CellB, EPS_Only), + omit, + f_GetAdditionalUpdateResult(v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.addUpdateType)) ) ) ); + + //@siclog "Step 4" siclog@ + //+ The UE transmits a TRACKING AREA UPDATE COMPLETE message. + SRB.receive(car_SRB1_NasPdu_IND(eutra_CellB, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_TAU_Complete))); + + } // function fl_TC_9_2_3_1_8a_Body + + //============================================================================ +/* + * @desc REFERENCE TS 36.523-1 clause 9.2.3.1.8a + * @status + */ + function f_TC_9_2_3_1_8b_EUTRA() runs on EUTRA_PTC + { + /// @desc Normal tracking area update + var template (value) CellPowerList_Type v_CellPowerList; + + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c3); + f_EUTRA_ChangeSysinfoCombination(eutra_CellB, c21); + + // 2 Cells: A (serving), B ( suitable neighbour cell) + f_EUTRA_CellConfig_Def(eutra_CellA); + f_EUTRA_CellConfig_Def(eutra_CellB); + + f_UT_ConfigureEPSAttach (UT); + + f_UT_USIM_Insert ( UT, "36.523-1 Table 9.2.3.1.8b.3.1-1" ); + + // Cell B is not available + v_CellPowerList := { + cs_CellPower ( eutra_CellB, tsc_NonSuitableCellRS_EPRE ) + }; + + f_EUTRA_SetCellPowerList ( v_CellPowerList ); + + // Preamble: UE is in state Registered, Idle Mode (state 2) on Cell A + f_EUTRA_Preamble(eutra_CellA, STATE2_IDLEUPDATE, EPS_Only); + + f_EUTRA_TestBody_Set(true); + + fl_TC_9_2_3_1_8b_Body(); + + // Postamble + f_EUTRA_TestBody_Set(false); + f_EUTRA_Postamble(eutra_CellB, E2_T3440); + + } // function f_TC_2_9_3_1_8b_EUTRA + + + //---------------------------------------------------------------------------- + /* + * @desc test body of TC_9_2_3_1_8b + * @status + */ + function fl_TC_9_2_3_1_8b_Body() runs on EUTRA_PTC + { + var GutiParameters_Type v_Guti2_Params := f_EUTRA_CellInfo_GetGuti(eutra_CellB); + var EPS_UpdateTypeValue v_UpdateType := f_GetEPSTAUType(EPS_Only); + var template (omit) EPS_BearerContextStatus v_EpsBearerCtxtStatus; + var template (value) CellPowerList_Type v_CellPowerList; + var NAS_MSG_Indication_Type v_NasInd; + var template AdditionalUpdateType v_AdditionalUpdateType := f_GetAdditionalUpdateType (EPS_Only); + var template (value) TrackingAreaIdList v_TaiList; + var float v_TimerValue := f_EUTRA_SetTimerToleranceMax( eutra_CellB, nasTimer, 60.0 ); // Timer set to 60s + + //@siclog "Step 1" siclog@ + + //+ Set the cell type of cell A to the "Non-Suitable cell". + //+ Set the cell type of cell B to the "Serving cell" + v_CellPowerList := { + cs_CellPower ( eutra_CellA, tsc_NonSuitableCellRS_EPRE ), + cs_CellPower ( eutra_CellB, tsc_ServingCellRS_EPRE ) + }; + f_EUTRA_SetCellPowerList ( v_CellPowerList ); + + //@siclog "Step 2" siclog@ + //+ Check: Does the UE transmit a RRCConnectionRequest message in next 60s? + + if (f_EUTRA_RRC_RRCConnectionRequest_Check(eutra_CellB, v_TimerValue)) { + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step 2"); + } + + //@siclog "Step 3" siclog@ + // UE is configurated for Override EAB + // 1st parameter: BearerId (set to 5) + // 2nd Parameter: Nas Signalling Low priotity (disabled) , + // 3rd parametes: Override EAB (enabled) + f_UT_ConfigureSIMTCParams(UT,5,0,1); + + + v_NasInd := f_EUTRA_RRC_ConnEst_DefWithNas(eutra_CellB, + tsc_RRC_TI_Def, + cr_EstablishmentCause_Any, + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_508_TAU_Request(v_UpdateType, + f_EUTRA_SecurityKSIasme_Get(), + cr_DRXparameter_Any ('5C'O) ifpresent, + v_AdditionalUpdateType))); + + v_EpsBearerCtxtStatus := v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.epsBearerContextStatus; + + v_TaiList := cds_TAIListNonConsecutive_tlv(f_Asn2Nas_PlmnId(v_Guti2_Params.PLMN_Identity), + { bit2oct(f_EUTRA_CellInfo_GetTAC(eutra_CellB)) } ); + + //@siclog "Step 3" siclog@ + //+ The SS transmits a TRACKING AREA UPDATE ACCEPT message. <-- TRACKING + //+ AREA UPDATE ACCEPT + SRB.send(cas_SRB1_NasPdu_REQ(eutra_CellB, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_508_TAU_Accept(v_UpdateType, + f_GutiParameters2MobileIdentity(tsc_IEI_Guti, v_Guti2_Params), + v_TaiList, + v_EpsBearerCtxtStatus, + f_EUTRA_GetCellLAI(eutra_CellB, EPS_Only), + omit, + f_GetAdditionalUpdateResult(v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.addUpdateType)) ) ) ); + + //@siclog "Step 4" siclog@ + //+ The UE transmits a TRACKING AREA UPDATE COMPLETE message. + SRB.receive(car_SRB1_NasPdu_IND(eutra_CellB, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_TAU_Complete))); + + + } // function fl_TC_9_2_3_1_8b_Body + + //============================================================================ + /* + * @desc REFERENCE TS 36.523-1 clause 9.2.3.1.20a + * @status APPROVED (LTE_A) + */ + function f_TC_9_2_3_1_20a_EUTRA() runs on EUTRA_PTC + { + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c3); + + // create cells + f_EUTRA_CellConfig_Def(eutra_CellA); + f_EUTRA_CellConfig_Def(eutra_CellB); + + // Preamble: UE is in state Registered, Idle Mode (state 2) on Cell A + f_EUTRA_Preamble(eutra_CellA, STATE2_IDLEUPDATE); + + // CellB is set to "Non-suitable cell" according to Pre-test Conditions + f_EUTRA_SetCellPower ( eutra_CellB, tsc_NonSuitableCellRS_EPRE ); + + f_EUTRA_TestBody_Set(true); + + fl_TC_9_2_3_1_20a_Body(); + + // Postamble + f_EUTRA_TestBody_Set(false); + + f_EUTRA_Postamble(eutra_CellB, E2_T3440); + } // function f_TC_9_2_3_1_20a_EUTRA + + //---------------------------------------------------------------------------- + /* + * @desc test body of TC_9_2_3_1_20a + * @status APPROVED (LTE_A) + */ + function fl_TC_9_2_3_1_20a_Body() runs on EUTRA_PTC + { + var GutiParameters_Type v_Guti1_Params := f_EUTRA_CellInfo_GetGuti(eutra_CellA); + var NAS_PlmnId v_HomePlmn:= f_Asn2Nas_PlmnId(v_Guti1_Params.PLMN_Identity); + var GutiParameters_Type v_Guti2_Params := f_EUTRA_CellInfo_GetGuti(eutra_CellB); + var template (omit) MobileIdentity v_MsId := f_GetMSId (NORMAL); + var EPS_UpdateTypeValue v_UpdateType := f_GetEPSTAUType(NORMAL); + var template (omit) EPS_BearerContextStatus v_EpsBearerCtxtStatus; + var template (value) CellPowerList_Type v_CellPowerList; + var NAS_MSG_Indication_Type v_NasInd; + var template AdditionalUpdateType v_AdditionalUpdateType := f_GetAdditionalUpdateType (); + var float v_T3346Val := f_EUTRA_SetTimerToleranceMin(eutra_CellB, nasTimer, 300.0); //5minutes @sic R5s140322 sic@ + + // ========================================================================== + //@siclog "Step 1" siclog@ + //+ Set the cell type of cell A to the "Non-Suitable cell". + //+ Set the cell type of cell B to the "Serving cell" + v_CellPowerList := { + cs_CellPower ( eutra_CellA, tsc_NonSuitableCellRS_EPRE ), + cs_CellPower ( eutra_CellB, tsc_ServingCellRS_EPRE ) + }; + f_EUTRA_SetCellPowerList ( v_CellPowerList ); + + //@siclog "Step 2" siclog@ + //+ The UE transmits a TRACKING AREA UPDATE REQUEST on Cell B. + v_NasInd := f_EUTRA_RRC_ConnEst_DefWithNas(eutra_CellB, + tsc_RRC_TI_Def, + cr_EstablishmentCause_Any, + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_508_TAU_Request(v_UpdateType, + f_EUTRA_SecurityKSIasme_Get(), + cr_DRXparameter_Any ('5C'O) ifpresent, + v_AdditionalUpdateType))); + + + //@siclog "Step 3" siclog@ + //+ The SS transmits a TRACKING AREA UPDATE REJECT message with EMM cause = '' Congestion '' and T3346 IE set to 5 minutes. + //+ The UE starts timer T3346 with the value provided in the T3346 value IE. + SRB.send(cas_SRB1_NasPdu_REQ(eutra_CellB, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, // @sic R5-140764 sic@ @sic R5s140568r1 sic@ @sic R5-144750 sic@ + cs_508_TRACKING_AREA_UPDATE_REJECT(tsc_Cause_Congestion, cs_GPRS_Timer2('5F'O, tsc_GprsTimerUnit_1min, '00101'B))))); // @sic R5s140322 sic@ + + + //@siclog "Step 4" siclog@ + //+ The SS releases the RRC connection. + f_EUTRA_RRC_ConnectionRelease(eutra_CellB); + + //@siclog "Step 5" siclog@ + //+ Check: Does the UE transmit a TRACKING AREA UPDATE REQUEST message before timer T3346 has expired? + if (f_EUTRA_RRC_RRCConnectionRequest_Check(eutra_CellB, v_T3346Val)) { + // even though prose says TRACKING AREA UPDATE REQUEST, as soon as UE sends RRC ConnReq, we know something is wrong + f_EUTRA_SetVerdictFailOrInconc(__FILE__, __LINE__, "Step5: TAU Request received"); + } + + //@siclog "Step 6" siclog@ + //+ Check: Does the UE transmit a TRACKING AREA UPDATE REQUEST message after timer T3346 has expired? + v_NasInd := f_EUTRA_RRC_ConnEst_DefWithNas(eutra_CellB, + tsc_RRC_TI_Def, + cr_EstablishmentCause_Any, + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_508_TAU_Request(v_UpdateType, + f_EUTRA_SecurityKSIasme_Get(), + cr_DRXparameter_Any ('5C'O) ifpresent, + v_AdditionalUpdateType))); + + v_EpsBearerCtxtStatus := v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.epsBearerContextStatus; + + //@siclog "Step 7" siclog@ + //+ The SS transmits a TRACKING AREA UPDATE ACCEPT message. + SRB.send(cas_SRB1_NasPdu_REQ(eutra_CellB, + cs_TimingInfo_Now, + cs_NAS_Request(tsc_SHT_IntegrityProtected_Ciphered, + cs_508_TAU_Accept(v_UpdateType, + f_GutiParameters2MobileIdentity(tsc_IEI_Guti, v_Guti2_Params), + cds_TAIListNonConsecutive_tlv(v_HomePlmn, // Cell B is using the same PLMN ID as Cell A + { '0002'O }), // TAC=2 + v_EpsBearerCtxtStatus, + f_EUTRA_GetCellLAI(eutra_CellB, NORMAL), + v_MsId, + f_GetAdditionalUpdateResult(v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.addUpdateType))))); + + //@siclog "Step 8" siclog@ + //+ The UE transmits a TRACKING AREA UPDATE COMPLETE message + SRB.receive(car_SRB1_NasPdu_IND(eutra_CellB, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_TAU_Complete))); + //At the end of this test procedure sequence, the UE is in end state E-UTRA connected (E2_T3440) according to TS 36.508 + + }// function fl_TC_9_2_3_1_20a_Body + + //============================================================================ + /* + * @desc REFERENCE TS 36.523-1 clause 9.2.3.2.4a + * @status + */ + function f_TC_9_2_3_2_4a_EUTRA() runs on EUTRA_PTC + { + + + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c3); + + // create cell and send out system information + f_EUTRA_CellConfig_Def(eutra_CellA); + f_EUTRA_CellConfig_Def(eutra_CellB); + + f_UT_ConfigureCombinedAttach (UT); + + f_EUTRA_Preamble(eutra_CellA, STATE2_IDLEUPDATE, Combined); + + f_EUTRA_TestBody_Set(true); + + fl_TC_9_2_3_2_4a_Body(); + + // Postamble + f_EUTRA_TestBody_Set(false); + f_EUTRA_Postamble(eutra_CellA, E2_T3440, Combined); + + } // function f_TC_9_2_3_2_4a_EUTRA + + //---------------------------------------------------------------------------- + /* + * @desc test body of TC_9_2_3_2_4a + * @status + */ + function fl_TC_9_2_3_2_4a_Body( ) runs on EUTRA_PTC + { + var GutiParameters_Type v_Guti2_Params := f_EUTRA_CellInfo_GetGuti(eutra_CellB); + var NAS_MSG_Indication_Type v_NasInd; + var template (omit) EPS_BearerContextStatus v_EPS_ContextStatus; + var template (omit) EMM_Cause v_EMMCause := cs_EMM_Cause_tv(tsc_Cause_Congestion); + var template (omit) MobileIdentity v_MSId := f_GetMSId (Combined); + var template AdditionalUpdateType v_AdditionalUpdateType := f_GetAdditionalUpdateType (Combined); + var template (value) CellPowerList_Type v_CellPowerList; + var float v_T3402:= f_EUTRA_SetTimerToleranceMax(eutra_CellB, nasTimer, 30.0); // Set timer to 30 s. + + //@siclog "Step 1" siclog@ + //+ Set the cell type of Cell B to the "Serving cell". Set the cell type of Cell A to the "non-Suitable cell". + v_CellPowerList := { + cs_CellPower(eutra_CellA, tsc_NonSuitableCellRS_EPRE), + cs_CellPower(eutra_CellB, tsc_ServingCellRS_EPRE) + }; + f_EUTRA_SetCellPowerList(v_CellPowerList); + + //@siclog "Step 2" siclog@ + //+ The UE transmits a TRACKING AREA UPDATE REQUEST message. + v_NasInd := f_EUTRA_RRC_ConnEst_DefWithNas(eutra_CellB, + tsc_RRC_TI_Def, + cr_EstablishmentCause_Any, + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_508_TAU_Request(tsc_EpsUpdate_Combined_TaLaUpdate, + f_EUTRA_SecurityKSIasme_Get(), + cr_DRXparameter_Any ('5C'O) ifpresent, + v_AdditionalUpdateType))); + //@siclog "Step 3" siclog@ + //+ The SS transmits a TRACKING AREA UPDATE ACCEPT message. + v_EPS_ContextStatus := v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.epsBearerContextStatus; // Send this back in the Accept + + SRB.send ( cas_SRB1_NasPdu_REQ ( eutra_CellB, + cs_TimingInfo_Now, + cs_NAS_Request ( tsc_SHT_IntegrityProtected_Ciphered, + cs_TAU_Accept_EMM_Cause ( tsc_EpsUpdate_TaUpdate, + f_GutiParameters2MobileIdentity (tsc_IEI_Guti, v_Guti2_Params ), + cds_TAIListNonConsecutive_tlv (f_Asn2Nas_PlmnId (v_Guti2_Params.PLMN_Identity), + {bit2oct(f_EUTRA_CellInfo_GetTAC(eutra_CellB))}), + v_EPS_ContextStatus, + f_EUTRA_GetCellLAI(eutra_CellB, Combined), + v_MSId, + f_GetAdditionalUpdateResult(v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.addUpdateType), + v_EMMCause, + cs_GprsTimer_tv('17'O, '000'B, '01111'B))))); + //@siclog "Step 4" siclog@ + //+ Check: Does the UE transmit a TRACKING AREA UPDATE COMPLETE message. + SRB.receive(car_SRB1_NasPdu_IND(eutra_CellB, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_TAU_Complete))); + + //@siclog "Step 5" siclog@ + //+ The SS releases the RRC connection. + f_EUTRA_RRC_ConnectionRelease(eutra_CellB); + + //@siclog "Step 6" siclog@ + //+ Wait for T3402 + f_Delay(v_T3402); + + + //@siclog "Step 7" siclog@ + //+ Check: Does the UE transmit a TRACKING AREA UPDATE REQUEST message with EPS update type as "tsc_EpsUpdate_Combined_IMSIAttach"? + v_NasInd := f_EUTRA_RRC_ConnEst_DefWithNas(eutra_CellB, + tsc_RRC_TI_Def, + cr_EstablishmentCause_Any, + cr_NAS_Indication(tsc_SHT_IntegrityProtected, + cr_508_TAU_Request(tsc_EpsUpdate_Combined_IMSIAttach, + f_EUTRA_SecurityKSIasme_Get(), + cr_DRXparameter_Any ('5C'O) ifpresent, + f_GetAdditionalUpdateType (Combined)))); + f_EUTRA_PreliminaryPass(__FILE__, __LINE__, "step 7"); + + //@siclog "Step 8" siclog@ + //+ The SS transmits a TRACKING AREA UPDATE ACCEPT message. + v_EPS_ContextStatus := v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.epsBearerContextStatus; // Send this back in the Accept + SRB.send ( cas_SRB1_NasPdu_REQ ( eutra_CellB, + cs_TimingInfo_Now, + cs_NAS_Request ( tsc_SHT_IntegrityProtected_Ciphered, + cs_508_TAU_Accept ( tsc_EpsUpdate_TaUpdate, + f_GutiParameters2MobileIdentity (tsc_IEI_Guti, v_Guti2_Params ), + cds_TAIListNonConsecutive_tlv(f_Asn2Nas_PlmnId(v_Guti2_Params.PLMN_Identity), + { bit2oct(f_EUTRA_CellInfo_GetTAC(eutra_CellB)) }), + v_EPS_ContextStatus, + omit, + omit, + f_GetAdditionalUpdateResult(v_NasInd.Pdu.Msg.tRACKING_AREA_UPDATE_REQUEST.addUpdateType) ) ) )); + //@siclog "Step 9" siclog@ + //+ The UE transmits a TRACKING AREA UPDATE COMPLETE message. + SRB.receive(car_SRB1_NasPdu_IND(eutra_CellB, + cr_NAS_Indication(tsc_SHT_IntegrityProtected_Ciphered, + cr_508_TAU_Complete))); + + } +} diff --git a/LTE_A_IWD_14wk37/LTE_A/9_4/NAS_A_Security.ttcn b/LTE_A_IWD_14wk37/LTE_A/9_4/NAS_A_Security.ttcn new file mode 100644 index 0000000..bf9819c --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/9_4/NAS_A_Security.ttcn @@ -0,0 +1,81 @@ +// *************************************************************************** +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// * $Date: 2013-07-28 11:18:29 +0200 (Sun, 28 Jul 2013) $ +// * $Rev: 9194 $ +// *************************************************************************** + +module NAS_A_Security { + + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_Component all; + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from EUTRA_SecuritySteps all; + import from EUTRA_CommonProcedures all; + import from EUTRA_NASSteps all; + import from EUTRA_ConfigurationSteps all; + import from EUTRA_CellInfo all; + import from EUTRA_NasSecurityProcedures all; + + ////////////////////////////////////////////////////////////////// + // TC 9.4.5 + ////////////////////////////////////////////////////////////////// + /* + * @desc REFERENCE TS 36.523-1 clause 9.4.5 + * @status APPROVED (LTE_A) + */ + function f_TC_9_4_5_EUTRA() runs on EUTRA_PTC + { //@desc Integrity protection / Correct functionality of EPS NAS integrity algorithm / ZUC + + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c1); // @sic R5s106627 sic@ + + // create cell and send out system information + f_EUTRA_CellConfig_Def(eutra_CellA); + + // Preamble: The UE is in state Switched OFF (state 1) + // ========================================================================== + f_EUTRA_Preamble(eutra_CellA, STATE2_IDLEUPDATE); + f_EUTRA_UE_Detach_SwitchOffUe(eutra_CellA, RRC_IDLE); + f_EUTRA_TestBody_Set(true); + + f_EUTRA_PdcpScurityProcedure_Integrity_9_4(tsc_EPS_Integerity_ZUC); + + // Postamble + f_EUTRA_TestBody_Set(false); + f_EUTRA_Postamble(eutra_CellA, E2_CONNECTED); // @sic R5-103847 sic@ + } + + ////////////////////////////////////////////////////////////////// + // TC 9.4.6 + ////////////////////////////////////////////////////////////////// + /* + * @desc REFERENCE TS 36.523-1 clause 9.4.6 + * @status APPROVED (LTE_A) + */ + function f_TC_9_4_6_EUTRA() runs on EUTRA_PTC + { // Ciphering and deciphering / Correct functionality of EPS NAS encryption algorithm / ZUC + + f_EUTRA_NAS_Init(LTE_AllCellsOnSamePLMN, c1); // @sic R5s106627 sic@ + + // create cell and send out system information + f_EUTRA_CellConfig_Def(eutra_CellA); + + // Preamble: The UE is in state Switched OFF (state 1) + // ========================================================================== + f_EUTRA_Preamble(eutra_CellA, STATE2_IDLEUPDATE); + f_EUTRA_UE_Detach_SwitchOffUe(eutra_CellA, RRC_IDLE); + f_EUTRA_TestBody_Set(true); + f_EUTRA_NAS_CipheringAlgorithm_Set(tsc_EPS_Encryption_ZUC); + f_EUTRA_PdcpScurityProcedure_Common_9_4(); + + // Postamble + f_EUTRA_TestBody_Set(false); + f_EUTRA_Postamble(eutra_CellA, E2_CONNECTED); // @sic R5-103847 sic@ + } // function f_TC_9_4_6_EUTRA + +} // module NAS_A_SecurityMode diff --git a/LTE_A_IWD_14wk37/LTE_A/Common/EUTRA_AspSystem_Templates_CA.ttcn b/LTE_A_IWD_14wk37/LTE_A/Common/EUTRA_AspSystem_Templates_CA.ttcn new file mode 100644 index 0000000..34ce72b --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/Common/EUTRA_AspSystem_Templates_CA.ttcn @@ -0,0 +1,321 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-08-29 12:29:29 +0200 (Fri, 29 Aug 2014) $ +// $Rev: 11950 $ +/******************************************************************************/ +module EUTRA_AspSystem_Templates_CA +{ + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_CommonDefs all; + import from EUTRA_ASP_TypeDefs all; + import from EUTRA_Component all; + import from EUTRA_RRC_Templates all; + import from EUTRA_AspCommon_Templates all; + import from CommonDefs all; + import from EUTRA_RRC_Templates_CA all; + + template (value) AntennaInfoUL_r10 cs_AntennaInfoUL_r10 := + { /* @status APPROVED (LTE_A) */ + transmissionModeUL_r10 := tm1, + fourAntennaPortActivated_r10 := omit + }; + + template (value) UplinkPowerControlCommon_Type cs_UplinkPowerControlCommon_r10(template (value) UplinkPowerControlCommon p_UplinkPowerControlCommon, + template (omit) UplinkPowerControlCommon_v1020 p_UplinkPowerControlCommon_v1020 := omit) := + { /* @status APPROVED (LTE_A) */ + R8andLater := { + uplinkPowerControlCommon := p_UplinkPowerControlCommon, + uplinkPowerControlCommon_v1020 := p_UplinkPowerControlCommon_v1020, + uplinkPowerControlCommonSCell_v1130 := omit + } + }; + + template (value) SCellPathlossReferenceLinking_Type cs_SCellPathlossReferenceLinking_DEFAULT := sCell; + + template (value) PUSCH_ConfigDedicated cs_PUSCH_ConfigDedicated_Default := + { /* Default values according to 36.331 clause 9.2.4 */ + /* @status APPROVED (LTE_A) */ + betaOffset_ACK_Index := 10, + betaOffset_RI_Index := 12, + betaOffset_CQI_Index := 15 + }; + + template (value) SYSTEM_CTRL_REQ cas_CellConfig_ScellMod_REQ(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + EUTRA_CellInfo_Type p_CellInfo, + template (value) SoundingRS_UL_ConfigCommon p_SoundingRS_UL_ConfigCommon, + template (value) SoundingRS_UL_ConfigDedicated p_SoundingRS_UL_ConfigDedicated := cs_508_SoundingRsUl_ConfigDedicated_Rel, + template (omit) SoundingRS_UL_ConfigDedicated_v1020 p_SoundingRS_UL_ConfigDedicated_v1020 := omit, + template (value) UplinkPowerControlDedicated p_UplinkPowerControlDedicated := cs_508_UplinkPowerControlDedicated_Default, + template (value) UplinkPowerControlDedicated_v1020 p_UplinkPowerControlDedicated_v1020 := cs_UplinkPowerControlDedicated_v1020_Def, + template (value) SCellPathlossReferenceLinking_Type p_SCellPathlossReferenceLinking := sCell, + template (omit) BasicCellConfig_Type p_BasicCellConfig := omit) := + { /* @status APPROVED (LTE_A) */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, p_TimingInfo), + Request := { + Cell := { + AddOrReconfigure := { + Basic := p_BasicCellConfig, + Active := { + C_RNTI := omit, + PhysicalLayerConfigUL := { + Prach := omit, + Pucch := omit, + Pusch := { + Common := omit, // no change + Dedicated := cs_PUSCH_ConfigDedicated_r8(cs_PUSCH_ConfigDedicated_Default) + }, + TimingAdvance := omit, + SRS_UL_Config := { + Common := cs_SoundingRS_UL_ConfigCommon_r8( p_SoundingRS_UL_ConfigCommon), + Dedicated := cs_SoundingRS_UL_ConfigDedicated_r8(p_SoundingRS_UL_ConfigDedicated, p_SoundingRS_UL_ConfigDedicated_v1020 ) + }, + SR_Config := omit, + CQI_ReportConfig := omit, + UplinkPowerControlCommon := cs_UplinkPowerControlCommon_r10(p_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon.uplinkPowerControlCommon, + p_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon.uplinkPowerControlCommon_v1020), + UplinkPowerControlDedicated := cs_UplinkPowerControlDedicated_r8(p_UplinkPowerControlDedicated, p_UplinkPowerControlDedicated_v1020, p_SCellPathlossReferenceLinking) + }, + RachProcedureConfig := omit, + CcchDcchDtchConfig := omit, + ServingCellConfig := omit + } + } + } + } + }; + + template (value) SYSTEM_CTRL_REQ cas_CellConfig_PcellMod_REQ(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + EUTRA_CellInfo_Type p_CellInfo, + template (omit) BasicCellConfig_Type p_BasicCellConfig := omit) := + { /* @status APPROVED (LTE_A) */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, p_TimingInfo), + Request := { + Cell := { + AddOrReconfigure := { + Basic := p_BasicCellConfig, + Active := { + C_RNTI := omit, + PhysicalLayerConfigUL := { + Prach := omit, + Pucch := omit, + Pusch := omit, + TimingAdvance := omit, + SRS_UL_Config := omit, + SR_Config := omit, + CQI_ReportConfig := omit, + UplinkPowerControlCommon := cs_UplinkPowerControlCommon_r10(p_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon.uplinkPowerControlCommon, + p_CellInfo.Sysinfo.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon.uplinkPowerControlCommon_v1020), + UplinkPowerControlDedicated := omit + }, + RachProcedureConfig := omit, + CcchDcchDtchConfig := omit, + ServingCellConfig := omit + } + } + } + } + }; + + template (value) BasicCellConfig_Type cs_BasicCellConfig_CA_CellType (template (value) CA_CellInitialConfig_Type p_CA_CellInitialConfig) := + { /* @status APPROVED (LTE_A) */ + ConfigCapability := omit, + StaticCellInfo := omit, + PhysicalLayerConfigDL := omit, + InitialCellPower := omit, + BcchConfig := omit, + PcchConfig := omit, + CA_CellInitialConfig := p_CA_CellInitialConfig + }; + + template (value) SYSTEM_CTRL_REQ cas_CellConfig_ScellModSRS_AntennaInfo_REQ(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (value) SoundingRS_UL_ConfigCommon p_SoundingRS_UL_ConfigCommon, + template (value) SoundingRS_UL_ConfigDedicated p_SoundingRS_UL_ConfigDedicated := cs_508_SoundingRsUl_ConfigDedicated_Rel, + template (omit) SoundingRS_UL_ConfigDedicated_v1020 p_SoundingRS_UL_ConfigDedicated_v1020 := omit, + template (value) AntennaInfoDedicated_r10 p_AntennaInfoDedicated := cs_AntennaInfoDedicated_r10, + template (omit) AntennaInfoUL_r10 p_AntennaInfoUL := cs_AntennaInfoUL_r10) := + { /* @status APPROVED (LTE_A) */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, p_TimingInfo), + Request := { + Cell := { + AddOrReconfigure := { + Basic := omit, + Active := { + C_RNTI := omit, + PhysicalLayerConfigUL := { + Prach := omit, + Pucch := omit, + Pusch := omit, + TimingAdvance := omit, + SRS_UL_Config := { + Common := cs_SoundingRS_UL_ConfigCommon_r8(p_SoundingRS_UL_ConfigCommon), + Dedicated := cs_SoundingRS_UL_ConfigDedicated_r8(p_SoundingRS_UL_ConfigDedicated, p_SoundingRS_UL_ConfigDedicated_v1020) + }, + SR_Config := omit, + CQI_ReportConfig := omit, + UplinkPowerControlCommon := omit, + UplinkPowerControlDedicated := omit + }, + RachProcedureConfig := omit, + CcchDcchDtchConfig := { + MeasGapCtrl := omit, + DL := { + DciInfo := omit, + AntennaInfo := cs_AntennaInfoDedicated_R10andLater(p_AntennaInfoDedicated, p_AntennaInfoUL), + HarqProcessConfig := omit + }, + UL := omit, + DrxCtrl := omit, + TtiBundling := omit, + CifPresence := omit + }, + ServingCellConfig := omit + } + } + } + } + }; + + template (value) SYSTEM_CTRL_REQ cas_CellConfig_AntennaInfor10_REQ(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (value) AntennaInfoDedicated_r10 p_AntennaInfoDedicated := cs_AntennaInfoDedicated_r10, + template (omit) AntennaInfoUL_r10 p_AntennaInfoUL := cs_AntennaInfoUL_r10) := + { /* @status */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, p_TimingInfo), + Request := { + Cell := { + AddOrReconfigure := { + Basic := omit, + Active := { + C_RNTI := omit, + PhysicalLayerConfigUL := { + Prach := omit, + Pucch := omit, + Pusch := omit, + TimingAdvance := omit, + SRS_UL_Config := omit, + SR_Config := omit, + CQI_ReportConfig := omit, + UplinkPowerControlCommon := omit, + UplinkPowerControlDedicated := omit + }, + RachProcedureConfig := omit, + CcchDcchDtchConfig := { + MeasGapCtrl := omit, + DL := { + DciInfo := omit, + AntennaInfo := cs_AntennaInfoDedicated_R10andLater(p_AntennaInfoDedicated, p_AntennaInfoUL), + HarqProcessConfig := omit + }, + UL := omit, + DrxCtrl := omit, + TtiBundling := omit, + CifPresence := omit + }, + ServingCellConfig := omit + } + } + } + } + }; + + + template (value) AntennaInfoDedicated_Type cs_AntennaInfoDedicated_R10andLater(template (value) AntennaInfoDedicated_r10 p_AntennaInfoDedicated, + template (omit) AntennaInfoUL_r10 p_AntennaInfoUL := omit ):= + { /* @status APPROVED (LTE_A) */ + R10andLater := { + antennaInfo := p_AntennaInfoDedicated, + antennaInfoUL := p_AntennaInfoUL + } + }; + + template (value) SYSTEM_CTRL_REQ cas_CAConfigCommon_REQ(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (value) ServingCellConfig_Type p_ServingCellConfig, + template (omit) boolean p_CnfFlag := omit) := + { /* @status APPROVED (LTE_A) */ + Common := cs_ReqAspCommonPart_CellCfg(p_CellId, p_TimingInfo, p_CnfFlag), + Request := { + Cell := { + AddOrReconfigure := { + Basic := omit, + Active := { + C_RNTI := omit, + PhysicalLayerConfigUL := omit, + RachProcedureConfig := omit, + CcchDcchDtchConfig := omit, + ServingCellConfig := p_ServingCellConfig + } + } + } + } + }; + + template (value) SYSTEM_CTRL_REQ cas_PCellConfig_REQ(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + EUTRA_CellIdList_Type p_AssociatedScellList, + template (omit) boolean p_CnfFlag := omit) := + /* @status APPROVED (LTE_A) */ + cas_CAConfigCommon_REQ(p_CellId, p_TimingInfo, cs_PCellConfig(p_AssociatedScellList), p_CnfFlag); + + + template (value) SYSTEM_CTRL_REQ cas_SCellConfig_REQ(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (value) ServingCellConfig_Type p_ScellConfig, + template (omit) boolean p_CnfFlag := omit) := + /* @status APPROVED (LTE_A) */ + cas_CAConfigCommon_REQ(p_CellId, p_TimingInfo, p_ScellConfig, p_CnfFlag); + + template (value) SYSTEM_CTRL_REQ cas_ServingCellRelease_REQ(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (omit) boolean p_CnfFlag := omit) := + /* @status APPROVED (LTE_A) */ + cas_CAConfigCommon_REQ(p_CellId, p_TimingInfo, cs_ServingCellRelease, p_CnfFlag); + + template (value) ServingCellConfig_Type cs_PCellConfig(EUTRA_CellIdList_Type p_AssociatedScellList, + template (omit) MeasSubframePatternPCell_r10 p_MeasSubframePatternPCell := omit, + template (omit) CrossCarrierScheduledCellsList_Type p_CrossCarrierScheduledCellsList := omit) := + { /* @status APPROVED (LTE_A) */ + PCell := { + AssociatedScellList := p_AssociatedScellList, + MeasSubframePatternPCell := p_MeasSubframePatternPCell, + CrossCarrierScheduledCellsList := p_CrossCarrierScheduledCellsList + } + }; + + template (value) ScellDeactivationTimer_Type cs_ScellDeactivationTimer(MAC_MainConfig_ScellDeactivationTimer_Type p_RF := rf32):= + { /* @status APPROVED (LTE_A) */ + NumberOfRadioFrames := p_RF + }; + + template (value) ServingCellConfig_Type cs_SCellConfig(EUTRA_CellId_Type p_AssociatedPcellId, + SCellIndex_r10 p_SCellIndex, + template (value) Scell_Capability_Type p_Scell_Capability, + MAC_MainConfig_ScellDeactivationTimer_Type p_RF := rf32 , + template (omit) CrossCarrierSchedulingConfig_Type p_CrossCarrierSchedulingConfig := omit, + template (omit) STAG_Id_r11 p_STAG_Id := omit) := //@sic new CA-Enh test development sic@ + { /* @status APPROVED (LTE_A) */ + SCell := { + AssociatedPcellId := p_AssociatedPcellId, + SCellIndex := p_SCellIndex, + Scell_Capability := p_Scell_Capability, + ScellDeactivationTimer := cs_ScellDeactivationTimer(p_RF), + CrossCarrierSchedulingConfig := p_CrossCarrierSchedulingConfig, + STAG_Id := p_STAG_Id //@sic new CA-Enh test development sic@ + } + }; + + template (value) ServingCellConfig_Type cs_ServingCellRelease := + { /* @status APPROVED (LTE_A) */ + Release := true + }; + + +} diff --git a/LTE_A_IWD_14wk37/LTE_A/Common/EUTRA_CapabilityFunctions_CA.ttcn b/LTE_A_IWD_14wk37/LTE_A/Common/EUTRA_CapabilityFunctions_CA.ttcn new file mode 100644 index 0000000..9bfe49a --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/Common/EUTRA_CapabilityFunctions_CA.ttcn @@ -0,0 +1,274 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-03-06 14:08:57 +0100 (Thu, 06 Mar 2014) $ +// $Rev: 10961 $ +/******************************************************************************/ + +module EUTRA_CapabilityFunctions_CA { + + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_CommonDefs all; + import from EUTRA_RRC_Templates all; + import from EUTRA_DRB_Templates all; + import from EUTRA_SysInfo_Templates all; + import from CommonDefs all; + import from EUTRA_Parameters all; + import from Parameters all; + import from CommonIratDefs all; + import from EUTRA_BandDependentParam all; + import from EUTRA_AuxiliaryFunctions all; + import from EUTRA_CapabilityFunctions all; + import from EUTRA_RRC_Templates_CA all; + + //---------------------------------------------------------------------- + // Templates + //---------------------------------------------------------------------- + + template (value) PhysicalConfigDedicated cs_508_PhysicalConfigDedicated_Default_HO_CA(template (value) PUCCH_ConfigDedicated p_PUCCH_ConfigDedicated, + //template (omit) CQI_ReportPeriodic p_CQI_ReportingPeriodic, // @sic R5-120497 sic@ + SR_PUCCH_ResourceIndex_Type p_SR_PUCCH_ResourceIndex, // @sic R5s090312 sic@ + template (value) PhysicalConfigDedicated_AntennaInfo_Type p_AntennaInfo, // @sic R5-100786 sic@ + SR_ConfigIndex_Type p_SR_ConfigIndex, + template (value) PUCCH_ConfigDedicated_v1020 p_PUCCH_ConfigDedicated_v1020, + template (omit) AdditionalSpectrumEmissionCA_r10_Type p_AdditionalSpectrumEmissionCA_r10 := omit, + template (omit) CQI_ReportPeriodic_r10 p_CQI_ReportPeriodic_r10 :=omit, + template (omit) UplinkPowerControlDedicated_v1020 p_UplinkPowerControlDedicated_v1020 := omit) := // @sic R5-102177 sic@ + { /* Default values according to 36.508 cl. 4.8.2.1.6 Table 4.8.2.1.6-1 for condition HO-TO-EUTRA */ + /* @status APPROVED (LTE_A) */ + // @sic R5-123630 sic@ + pdsch_ConfigDedicated := cs_508_PDSCH_ConfigDedicated_Default, + pucch_ConfigDedicated := p_PUCCH_ConfigDedicated, + pusch_ConfigDedicated := cs_508_PUSCH_ConfigDedicated_Default, + uplinkPowerControlDedicated := cs_508_UplinkPowerControlDedicated_Default, + tpc_PDCCH_ConfigPUCCH := cs_508_TPC_PDCCH_Config_Default_PUCCH, + tpc_PDCCH_ConfigPUSCH := cs_508_TPC_PDCCH_Config_Default_PUSCH, + cqi_ReportConfig := omit, //@sic R5s130979 sic@ + soundingRS_UL_ConfigDedicated := omit, + antennaInfo := p_AntennaInfo, + schedulingRequestConfig := cs_508_SchedulingRequest_Config_Default(p_SR_PUCCH_ResourceIndex, p_SR_ConfigIndex), + cqi_ReportConfig_v920 := omit, + antennaInfo_v920 := omit, + antennaInfo_r10 := omit, + antennaInfoUL_r10 := omit, + cif_Presence_r10 := omit, + cqi_ReportConfig_r10 := cs_CQI_ReportConfig_r10_DEFAULT (p_CQI_ReportPeriodic_r10), + csi_RS_Config_r10 := omit, + pucch_ConfigDedicated_v1020 := p_PUCCH_ConfigDedicated_v1020, + pusch_ConfigDedicated_v1020 := omit, + schedulingRequestConfig_v1020 := omit, + soundingRS_UL_ConfigDedicated_v1020 := omit, + soundingRS_UL_ConfigDedicatedAperiodic_r10 := omit, + uplinkPowerControlDedicated_v1020 := p_UplinkPowerControlDedicated_v1020, + additionalSpectrumEmissionCA_r10 := p_AdditionalSpectrumEmissionCA_r10 , + csi_RS_ConfigNZPToReleaseList_r11 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + csi_RS_ConfigNZPToAddModList_r11 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + csi_RS_ConfigZPToReleaseList_r11 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + csi_RS_ConfigZPToAddModList_r11 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + epdcch_Config_r11 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + pdsch_ConfigDedicated_v1130 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + cqi_ReportConfig_v1130 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + pucch_ConfigDedicated_v1130 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + pusch_ConfigDedicated_v1130 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + uplinkPowerControlDedicated_v1130 := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + }; + + template (value) RadioResourceConfigDedicated cs_508_RadioResourceConfigDedicated_HOToEUTRA_CA(//template (omit) CQI_ReportPeriodic p_CQI_ReportingPeriodic, //@sic R5s130979 sic@ + template (value) PUCCH_ConfigDedicated p_PUCCH_ConfigDedicated, // @sic R5-1236630 sic@ + SR_PUCCH_ResourceIndex_Type p_SR_PUCCH_ResourceIndex, // @sic R5-1236630 sic@ + SR_ConfigIndex_Type p_SR_ConfigIndex, + template (value) PUCCH_ConfigDedicated_v1020 p_PUCCH_ConfigDedicated_v1020, + template (omit) AdditionalSpectrumEmissionCA_r10_Type p_AdditionalSpectrumEmissionCA_r10 := omit, + template (omit) CQI_ReportPeriodic_r10 p_CQI_ReportPeriodic_r10 :=omit, + template (omit) UplinkPowerControlDedicated_v1020 p_UplinkPowerControlDedicated_v1020 := omit) := // @sic R5-1236630 sic@ + /* Values according to 36.508 cl. 4.6.3 Table 4.6.3-18 (using condition n=1 & m=0) */ + /* @status APPROVED (LTE_A) */ + cs_RadioResourceConfigDedicated_SrbDrbConfig( { cs_508_SRB1_ToAddMod_DEFAULT, cs_508_SRB2_ToAddMod_DEFAULT }, + { cs_508_DRB_ToAddMod_DEFAULT_AM(tsc_DRB1) }, + cs_508_MAC_MainConfig_Explicit_RBC_DrxL(cs_508_MAC_MainConfig_v1020_SCell_AddMod), + cs_508_PhysicalConfigDedicated_Default_HO_CA(p_PUCCH_ConfigDedicated, + //p_CQI_ReportingPeriodic,//@sic R5s130979 sic@ + p_SR_PUCCH_ResourceIndex, + cs_PhysicalConfigDedicated_AntennaInfo_Def, + p_SR_ConfigIndex, + p_PUCCH_ConfigDedicated_v1020, + p_AdditionalSpectrumEmissionCA_r10, + p_CQI_ReportPeriodic_r10, + p_UplinkPowerControlDedicated_v1020)); // @sic R5-123630 sic@ + + + + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_HandoverToEUTRA_CA(integer p_ARFCN, + Dl_Bandwidth_Type p_DLBW, + template (omit) Ul_Bandwidth_Type p_ULBW, + integer p_CellId, + RRC_TransactionIdentifier p_RRC_TI, + template (value) PRACH_Config p_PRACH_Configuration, + integer p_PuschHoppingOffset, + template (value) SoundingRS_UL_ConfigCommon p_SoundingRsUl_ConfigCommon, + template (omit) TDD_Config p_Tdd_Configuration, + //template (omit) CQI_ReportPeriodic p_CQI_ReportingPeriodic,//@sic R5s130979 sic@ + template (value) PUCCH_ConfigDedicated p_PUCCH_ConfigDedicated, // @sic R5-123630 sic@ + SR_PUCCH_ResourceIndex_Type p_SR_PUCCH_ResourceIndex, // @sic R5-123630 sic@ + SR_ConfigIndex_Type p_SR_ConfigIndex, // @sic R5-123630 sic@ + N_RB_CQI_Type p_N_RB_CQI, + template (value) PUCCH_ConfigDedicated_v1020 p_PUCCH_ConfigDedicated_v1020, + template (omit) AdditionalSpectrumEmissionCA_r10_Type p_AdditionalSpectrumEmissionCA_r10 := omit, + template (omit) CQI_ReportPeriodic_r10 p_CQI_ReportPeriodic_r10 :=omit, + template (omit) UplinkPowerControlDedicated_v1020 p_UplinkPowerControlDedicated_v1020 := omit, + template (omit) SCellToAddModList_r10 p_SCellToAddModList := omit, + template (omit) SCellToReleaseList_r10 p_SCellToReleaseList := omit) := // @sic R5-123712 sic@ + /* @status APPROVED (LTE_A) */ + cs_RRCConnectionReconfiguration_Common (p_RRC_TI, + omit, + cs_MobilityControlInfo_HO_InterRAT(p_CellId, + cs_CarrierFreqEUTRA (p_ARFCN, omit), + cs_CarrierBandwidthEUTRA (p_DLBW, p_ULBW), + tsc_C_RNTI_Def2, // @sic R5s120490 sic@ + cds_RadioResourceConfigCommon_FullConfig(cs_508_RACH_ConfigCommon_Default, // @sic R5-123712 sic@ + p_PRACH_Configuration, + cs_508_PUSCH_ConfigCommon_Default(p_PuschHoppingOffset), + p_SoundingRsUl_ConfigCommon, + p_Tdd_Configuration, + cs_AntennaInfoCommon_1Port, + cs_508_PUCCH_ConfigCommon_Default(p_N_RB_CQI), + tsc_P_b_1Tx)), // @sic R5s120490 sic@ + cs_508_RadioResourceConfigDedicated_HOToEUTRA_CA(//p_CQI_ReportingPeriodic,//@sic R5s130979 sic@ + p_PUCCH_ConfigDedicated, + p_SR_PUCCH_ResourceIndex, + p_SR_ConfigIndex, + p_PUCCH_ConfigDedicated_v1020, + p_AdditionalSpectrumEmissionCA_r10, + p_CQI_ReportPeriodic_r10, + p_UplinkPowerControlDedicated_v1020), + cs_SecurityConfigHO_InterRAT, + cs_RRCConnectionReconfiguration_SCell_AddMod_IEs(p_SCellToAddModList, p_SCellToReleaseList)); + + + + //---------------------------------------------------------------------- + // Functions + //---------------------------------------------------------------------- + + /* + * @desc To encode the Handover to EUTRA command. + * @param p_EUTRASysInfo + * @param p_EUTRASysInfo_Scell + * @return octetstring + * @status APPROVED (LTE_A) + */ + function f_Encode_RRCConnectionReconfiguration_HOToEUTRA_CA(CoOrd_EUTRASysInfo_Type p_EUTRASysInfo, + CoOrd_EUTRASysInfo_Type p_EUTRASysInfo_Scell) return octetstring + { + var bitstring v_Bitstring; + var boolean v_ISTDD := true; // If EUTRA is FDD or TDD + var ChannelBandwidthDependency_Type v_ChannelBandwidthDependency := f_EUTRA_BandDependentParam(f_ConvertIntegerToDL_Bandwidth(p_EUTRASysInfo.DL_Bandwidth), + f_ConvertIntegerToUL_Bandwidth(p_EUTRASysInfo.HO.UL_Bandwidth)); + var boolean v_UL_CA := pc_UL_CA; + var template (omit) CommonSCell_UL_Configuration_Type v_CommonSCell_UL_Configuration := omit; + var template (omit) DedicatedSCell_UL_Configuration_Type v_DedicatedSCell_UL_Configuration := omit; + var template (value) SCellToAddMod_r10 v_SCellToAddMod; + var SCell_DL_Bandwidth_Type v_SCell_DL_Bandwidth ; + var template(omit) TDD_Config v_TDD_Config := omit; // omitted in FDD + var template (value) PUCCH_ConfigDedicated_v1020 v_PUCCH_ConfigDedicated; + var template (omit) AdditionalSpectrumEmissionCA_r10_Type v_AdditionalSpectrumEmissionCA_r10 := omit; + + select (p_EUTRASysInfo_Scell.DL_Bandwidth) { + case (6) { v_SCell_DL_Bandwidth := n6; } + case (15) { v_SCell_DL_Bandwidth := n15; } + case (25) { v_SCell_DL_Bandwidth := n25; } + case (50) { v_SCell_DL_Bandwidth := n50; } + case (75) { v_SCell_DL_Bandwidth := n75; } + case (100) { v_SCell_DL_Bandwidth := n100;} + case else { FatalError (__FILE__, __LINE__, "invalid BandWidth"); } + } + + if (px_ePrimaryFrequencyBand < 33) { + v_ISTDD := false; // FDD + } + + // Scell Info Initialisation + if (v_ISTDD) { // initialise tdd-Configuration to be used in + v_TDD_Config := cs_TDD_ConfigDef(px_eTDDsubframeConfig); // Value omitted in FDD + v_PUCCH_ConfigDedicated := cs_508_PUCCH_ConfigDedicated_v1020_2TX(cs_N1PUCCH_AN_CS_r10_FDD_1TX, cs_N1PUCCH_AN_CS_r10_FDD_2TX); //@sic R5-133275 sic@ + } + else { //FDD + v_PUCCH_ConfigDedicated := cs_508_PUCCH_ConfigDedicated_v1020_1TX(cs_N1PUCCH_AN_CS_r10_FDD_1TX); + // TBD for 2TX + } + + if (v_UL_CA) { + if (p_EUTRASysInfo_Scell.CA_Tested_Integer == 2) { // inter band, 36.508 Table 4.8.2.1.6-1 + v_AdditionalSpectrumEmissionCA_r10 := cs_AdditionalSpectrumEmissionCA_r10_Def; + } + if (v_ISTDD) { + v_DedicatedSCell_UL_Configuration := cs_RadioResourceConfigDedicatedSCell_UL_Configuration_DEFAULT(cs_CQI_ReportPeriodic_r10_DEFAULT_TDD); + v_CommonSCell_UL_Configuration := cs_RadioResourceConfigCommonSCell_UL_Configuration_DEFAULT(v_ChannelBandwidthDependency.Pusch_HoppingOffset, + cs_508_SoundingRS_UL_ConfigCommon_FDD(v_ChannelBandwidthDependency.SrsBandwidthConfiguration)); // + } + else { + v_DedicatedSCell_UL_Configuration := cs_RadioResourceConfigDedicatedSCell_UL_Configuration_DEFAULT(cs_CQI_ReportPeriodic_r10_DEFAULT_FDD); + v_CommonSCell_UL_Configuration := cs_RadioResourceConfigCommonSCell_UL_Configuration_DEFAULT(v_ChannelBandwidthDependency.Pusch_HoppingOffset, + cs_508_SoundingRS_UL_ConfigCommon_TDD(v_ChannelBandwidthDependency.SrsBandwidthConfiguration)); + } + } + v_SCellToAddMod := cs_SCellToAddMod_r10(1, + p_EUTRASysInfo_Scell.HO.PhysCellId, + p_EUTRASysInfo_Scell.Arfcn, + cs_508_RadioResourceConfigCommonSCell_r10_DEFAULT(v_SCell_DL_Bandwidth, + tsc_P_b_1Tx, + v_CommonSCell_UL_Configuration, + v_TDD_Config), + cs_RadioResourceConfigDedicatedSCell_r10(cs_PhysicalConfigDedicatedSCell_r10_DEFAULT(v_DedicatedSCell_UL_Configuration))); + + + if (px_ePrimaryFrequencyBand < 33) { // Bands below 33 are reserved for FDD + v_Bitstring := encvalue(cs_RRCConnectionReconfiguration_HandoverToEUTRA_CA(p_EUTRASysInfo.Arfcn, + f_ConvertIntegerToDL_Bandwidth (p_EUTRASysInfo.DL_Bandwidth), + f_ConvertIntegerToUL_Bandwidth(p_EUTRASysInfo.HO.UL_Bandwidth), + p_EUTRASysInfo.HO.PhysCellId, + tsc_RRC_TI_Def, + cs_PRACH_Config_Def(cs_508_PRACH_ConfigSIB_FDD(v_ChannelBandwidthDependency.Prach_FrequencyOffset, + p_EUTRASysInfo.HO.RootSequenceIndex)), + v_ChannelBandwidthDependency.Pusch_HoppingOffset, + cs_508_SoundingRS_UL_ConfigCommon_FDD(v_ChannelBandwidthDependency.SrsBandwidthConfiguration), + omit, + //cs_CQI_ReportingPeriodic_FDD,//@sic R5s130979 sic@ + cs_508_PUCCH_ConfigDedicated_Default_FDD, // @sic R5-123630 sic@ + v_ChannelBandwidthDependency.sr_PUCCH_ResourceIndex, // @sic R5-123630 sic@ + 30, // @sic R5-123630 sic@ + v_ChannelBandwidthDependency.N_RB_CQI, + v_PUCCH_ConfigDedicated, + v_AdditionalSpectrumEmissionCA_r10, + -, + -, + {v_SCellToAddMod})); // @sic R5-123712 sic@ + } else { + v_Bitstring := encvalue(cs_RRCConnectionReconfiguration_HandoverToEUTRA_CA(p_EUTRASysInfo.Arfcn, + f_ConvertIntegerToDL_Bandwidth(p_EUTRASysInfo.DL_Bandwidth), + omit, + p_EUTRASysInfo.HO.PhysCellId, + tsc_RRC_TI_Def, + cs_PRACH_Config_Def(cs_508_PRACH_ConfigSIB_TDD ( v_ChannelBandwidthDependency.Prach_FrequencyOffset, + p_EUTRASysInfo.HO.RootSequenceIndex )), + v_ChannelBandwidthDependency.Pusch_HoppingOffset, + cs_508_SoundingRS_UL_ConfigCommon_TDD(v_ChannelBandwidthDependency.SrsBandwidthConfiguration), + cs_TDD_ConfigDef(px_eTDDsubframeConfig), + //cds_CQI_ReportingPeriodic_TDD,//@sic R5s130979 sic@ + cds_508_PUCCH_ConfigDedicated_Default_TDD, // @sic R5-123630 sic@ + v_ChannelBandwidthDependency.sr_PUCCH_ResourceIndex, // @sic R5-123630 sic@ + 27, // @sic R5-123630 sic@ + v_ChannelBandwidthDependency.N_RB_CQI, + v_PUCCH_ConfigDedicated, + v_AdditionalSpectrumEmissionCA_r10, + -, + -, + {v_SCellToAddMod})); // @sic R5-123712 sic@ + } + return bit2oct(f_OctetAlignedBitString(v_Bitstring)); // NOTE: bit2oct would add additional bits at the beginning (MSB) whereas here it has be added at the end (LSB) + } +} diff --git a/LTE_A_IWD_14wk37/LTE_A/Common/EUTRA_CommonFunctions_CA.ttcn b/LTE_A_IWD_14wk37/LTE_A/Common/EUTRA_CommonFunctions_CA.ttcn new file mode 100644 index 0000000..729dbf7 --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/Common/EUTRA_CommonFunctions_CA.ttcn @@ -0,0 +1,891 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-10 17:33:02 +0200 (Wed, 10 Sep 2014) $ +// $Rev: 12190 $ +/******************************************************************************/ +module EUTRA_CommonFunctions_CA +{ + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_CommonDefs all; + import from EUTRA_ASP_TypeDefs all; + import from EUTRA_CellInfo all; + import from EUTRA_Component all; + import from EUTRA_ConfigurationSteps all; + import from EUTRA_BandDependentParam all; + import from EUTRA_CellCfg_Templates all; + import from EUTRA_SysInfo_Templates all; + import from EUTRA_RRC_Templates all; + import from EUTRA_SRB_Templates all; + import from EUTRA_AspCommon_Templates all; + import from CommonDefs all; + import from EUTRA_RRC_Templates_CA all; + import from EUTRA_AspSystem_Templates_CA all; + import from EUTRA_CellInfoInit_CA all; + import from EUTRA_DRB_Templates all; + import from EUTRA_CellInfoInit_CA all; + //import from EUTRA_Parameters all; + //import from EUTRA_CellInfoFrequency all; + //import from EUTRA_NASSteps all; + import from EUTRA_Timing all; + import from EUTRA_SecurityFunctions all; + import from EUTRA_SecuritySteps all; + import from EUTRA_SysInfo_Templates all; + import from EUTRA_RRCSteps all; + + + const EUTRA_CellIdList_Type tsc_EUTRA_NullCellIdList := {}; /* @status APPROVED (LTE_A) */ + + //========================================================================= + // Sys Config Functions + //========================================================================= + /* + * @desc SRB0 Configuration + * @param p_CellId + * @param p_TimingInfo (default value: cs_TimingInfo_Now) + * @status APPROVED (LTE_A) + */ + function f_EUTRA_SS_ConfigureSRB0(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo := cs_TimingInfo_Now) runs on EUTRA_PTC + { /* @sic R5s100072 sic@ */ + var template (value) RadioBearerList_Type v_SrbList := { + cs_SRB0_ConfigDef + }; + f_EUTRA_SS_CommonRadioBearerConfig(p_CellId, v_SrbList, p_TimingInfo); + } + + /* + * @desc Function to configure a cell suitable to be upgraded as Scell + * @param p_SCellId + * @param p_CA_CellInitialConfig (default value: Scell_Inactive) + * @status APPROVED (LTE_A) + */ + function f_EUTRA_CellConfig_Scell(EUTRA_CellId_Type p_SCellId, + template (value) CA_CellInitialConfig_Type p_CA_CellInitialConfig := Scell_Inactive) runs on EUTRA_PTC + { + var boolean v_NoUL_SCell:= f_EUTRA_CellInfo_GetNoUL_Frequency(p_SCellId) ; //@sic R5s140527 sic@ + f_EUTRA_SS_ConfigureActiveCell(p_SCellId, p_CA_CellInitialConfig); // Active cell No SRB's/ DRB's configured + f_EUTRA_SS_ConfigureSRB0(p_SCellId); //SRB0 configured + if (not v_NoUL_SCell) //@sic R5s140083 sic@ + { + f_EUTRA_SS_CommonCellConfig(p_SCellId, cas_CellConfig_ScellMod_REQ(p_SCellId, + cs_TimingInfo_Now, + f_EUTRA_CellInfo_Get(p_SCellId), + f_EUTRA_CellInfo_GetSounding_ConfigCommon(p_SCellId))); + //Update UL power control, PUSCH config Dedicated, SRS UL Dedicated as per Scell default configuration + } + } + + /* + * @desc Function to configure a cell suitable to be upgraded as Pcell + * @param p_PCellId + * @status APPROVED (LTE_A) + */ + function f_EUTRA_CellConfig_Pcell_Def(EUTRA_CellId_Type p_PCellId) runs on EUTRA_PTC + { + f_EUTRA_CellConfig_Def(p_PCellId,PCell); + f_EUTRA_SS_CommonCellConfig(p_PCellId, cas_CellConfig_PcellMod_REQ(p_PCellId, cs_TimingInfo_Now, f_EUTRA_CellInfo_Get(p_PCellId))); + //Update UL power control + } + + /* + * @desc To change a Scell to Pcell + * @param p_PCellId + * @status + */ + function f_EUTRA_CellConfig_PcellToScell_Def(EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (value) CA_CellInitialConfig_Type p_CA_CellInitialConfig := Scell_Inactive) runs on EUTRA_PTC + { + + f_EUTRA_SS_ReleaseSRBs1_2(p_CellId, p_TimingInfo); + f_EUTRA_SS_DRB1_Release(p_CellId, p_TimingInfo); + f_EUTRA_SS_CommonCellConfig(p_CellId, cas_CellConfig_ScellMod_REQ(p_CellId, + p_TimingInfo, + f_EUTRA_CellInfo_Get(p_CellId), + f_EUTRA_CellInfo_GetSounding_ConfigCommon(p_CellId), + -,-,-,-,-, + cs_BasicCellConfig_CA_CellType(p_CA_CellInitialConfig))); + //Update Cell Type and power control, PUSCH config Dedicated, SRS UL Dedicated as per Scell default configuration + } + + /* + * @desc To change a Scell to Pcell + * @param p_CellId + * @param p_TimingInfo + * @status APPROVED (LTE_A) + */ + function f_EUTRA_CellConfig_ScellToPcell_Def(EUTRA_CellId_Type p_CellId, template (value) TimingInfo_Type p_TimingInfo) runs on EUTRA_PTC + { + + f_EUTRA_SS_CommonCellConfig(p_CellId, cas_CellConfig_PcellMod_REQ(p_CellId, p_TimingInfo, f_EUTRA_CellInfo_Get(p_CellId), cs_BasicCellConfig_CA_CellType(PCell))); + //Update Cell Type and UL power control + f_EUTRA_SS_ConfigureSRBs(p_CellId, p_TimingInfo); + f_EUTRA_SS_DRB1_DefConfig(p_CellId, p_TimingInfo); + } + + //========================================================================= + // Functions + //========================================================================= + /* + * @desc function to get band width of Cell and convert it to type Scell_DL_Bandwidth + * @param p_CellId + * @return SCell_DL_Bandwidth_Type + * @status APPROVED (LTE_A) + */ + function f_EUTRA_CellInfo_GetSCell_DL_ChBandwidth(EUTRA_CellId_Type p_CellId) runs on EUTRA_PTC return SCell_DL_Bandwidth_Type + { + var EUTRA_CellInfo_Type v_CellInfo := f_EUTRA_CellInfo_Get(p_CellId); + var SCell_DL_Bandwidth_Type v_SCell_DL_Bandwidth ; + + //@sic R5s130388 sic@ + select (v_CellInfo.Frequency.DL_ChBandwidth) { + case (n6) { v_SCell_DL_Bandwidth := n6; } + case (n15) { v_SCell_DL_Bandwidth := n15; } + case (n25) { v_SCell_DL_Bandwidth := n25; } + case (n50) { v_SCell_DL_Bandwidth := n50; } + case (n75) { v_SCell_DL_Bandwidth := n75; } + case (n100) { v_SCell_DL_Bandwidth := n100; } + case else { FatalError(__FILE__, __LINE__, ""); } + } + return v_SCell_DL_Bandwidth; + } + + /* + * @desc function to check that a cellID exists in the list of cell ID's + * @param p_CellId + * @param p_CellIdList + * @return boolean + * @status APPROVED (LTE_A) + */ + function fl_Check_CellID_InList(EUTRA_CellId_Type p_CellId, + EUTRA_CellIdList_Type p_CellIdList) return boolean + { + var integer k; + + for (k := 0; k < lengthof(p_CellIdList); k := k + 1) { + if (p_CellId == p_CellIdList[k]) { // ... whether it contains that Cell ID + return true; + } + } + return false; + } + + /* + * @desc Generic function to add or modify a Scell + * @param p_PCellId + * @param p_SCellId + * @param p_SCellIndex + * @param p_CA_Type + * @param p_UL_CA (default value: false) + * @param p_C_RNTI (default value: tsc_C_RNTI_Def) + * @param p_MeasGapConfig (default value: omit) + * @param p_RRCConnectionReconfiguration (default value: omit) + * @param p_DciUlInfo_SCell (default value: cs_DciInfo_CcchDcchDtchUL_Def) + * @param p_UL_GrantConfig_SCell (default value: cs_UL_GrantConfig_Def) + * @param p_CnfFlag (default value: tsc_NoCnfReq) + * @param p_STAG_ToReleaseList (default value: omit) + * @param p_STAG_ToAddModList (default value: omit) + * @param p_MAC_MainConfigSCell_r11 (default value: omit) + * @param p_RACH_ConfigCommonSCell_r11 (default value: omit) + * @param p_PRACH_Config_SCell (default value: omit) + * @param p_TimeAlignmentTimer (default value: sf750) + * @param p_ScellDeactivationTimer (default value: rf32) + * @status APPROVED (LTE_A) + */ + function f_EUTRA_508RRC_AddMod_1Scell(EUTRA_CellId_Type p_PCellId, + EUTRA_CellId_Type p_SCellId, + SCellIndex_r10 p_SCellIndex, + CA_Tested_Type p_CA_Type, + boolean p_UL_CA := false, // UL CA desired + C_RNTI p_C_RNTI := tsc_C_RNTI_Def, + template (omit) MeasGapConfig p_MeasGapConfig := omit, //@sic R5s130503 sic@ + template (omit) DL_DCCH_Message p_RRCConnectionReconfiguration := omit, + template (omit) DciUlInfo_Type p_DciUlInfo_SCell := cs_DciInfo_CcchDcchDtchUL_Def, + template (value) UL_GrantConfig_Type p_UL_GrantConfig_SCell := cs_UL_GrantConfig_Def, + boolean p_CnfFlag := tsc_NoCnfReq, + //@sic new CA-Enh test development sic@ + template (omit) STAG_ToReleaseList_r11 p_STAG_ToReleaseList := omit, + template (omit) STAG_ToAddModList_r11 p_STAG_ToAddModList := omit, + template (omit) MAC_MainConfigSCell_r11 p_MAC_MainConfigSCell_r11 := omit, + template (omit) RACH_ConfigCommonSCell_r11 p_RACH_ConfigCommonSCell_r11 := omit, + template (omit) PRACH_Config p_PRACH_Config_SCell := omit, + TimeAlignmentTimer p_TimeAlignmentTimer := sf750, + MAC_MainConfig_ScellDeactivationTimer_Type p_ScellDeactivationTimer :=rf32) runs on EUTRA_PTC + { + var integer v_Arfcn_SCell := f_EUTRA_CellInfo_GetEARFCN_DL(p_SCellId); + var PhysCellId v_PhysicalCellIdentity_Scell := f_EUTRA_CellInfo_GetPhyCellId(p_SCellId); + var SCell_DL_Bandwidth_Type v_SCell_DL_Bandwidth := f_EUTRA_CellInfo_GetSCell_DL_ChBandwidth(p_SCellId); + var template (value) RachProcedureConfig_Type v_RachProcedureConfig; + var template (value) DL_DCCH_Message v_RRCConnectionReconfiguration; + var EUTRA_FDD_TDD_CellInfo_Type v_FDD_TDDInfo := f_EUTRA_CellInfo_GetFDD_TDD_Info (p_SCellId); + var template(omit) TDD_Config v_TDD_Config := omit; // omitted in FDD + var boolean v_UL_CA := p_UL_CA; + var template (omit) CommonSCell_UL_Configuration_Type v_CommonSCell_UL_Configuration := omit; + var template (omit) DedicatedSCell_UL_Configuration_Type v_DedicatedSCell_UL_Configuration := omit; + var template (value) SCellToAddMod_r10 v_SCellToAddMod; + var Ul_Bandwidth_Type v_UL_Bandwidth := f_EUTRA_CellInfo_GetUL_ChBandwidth(p_SCellId); + var Dl_Bandwidth_Type v_DL_Bandwidth := f_EUTRA_CellInfo_GetDL_ChBandwidth(p_SCellId); + var ChannelBandwidthDependency_Type v_ChannelBandwidthDependency := f_EUTRA_BandDependentParam(v_DL_Bandwidth, v_UL_Bandwidth); + var EUTRA_CellSysInfo_Type v_EUTRA_CellSysInfo_Type := f_EUTRA_CellInfo_GetSYSINFO(p_SCellId); + var RadioResourceConfigCommonSIB v_RadioResourceConfigCommonSIB := v_EUTRA_CellSysInfo_Type.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon; + var template (value) Scell_Capability_Type v_Scell_Capability := DlOnly; + var template (value) PUCCH_ConfigDedicated_v1020 v_PUCCH_ConfigDedicated; + var template (omit) AdditionalSpectrumEmissionCA_r10_Type v_AdditionalSpectrumEmissionCA_r10 := omit; + + + if (v_FDD_TDDInfo.FDD_TDD == TDD) { // initialise tdd-Configuration to be used in + v_TDD_Config := cs_TDD_ConfigDef(v_FDD_TDDInfo.TDD_SubframeAssignment); // Value omitted in FDD + } + if (isvalue(p_RRCConnectionReconfiguration)) { + v_RRCConnectionReconfiguration := valueof(p_RRCConnectionReconfiguration); + } else { + if (v_FDD_TDDInfo.FDD_TDD == TDD) { // initialise tdd-Configuration to be used in + v_TDD_Config := cs_TDD_ConfigDef(v_FDD_TDDInfo.TDD_SubframeAssignment); // Value omitted in FDD + v_PUCCH_ConfigDedicated := cs_508_PUCCH_ConfigDedicated_v1020_2TX(cs_N1PUCCH_AN_CS_r10_FDD_1TX, cs_N1PUCCH_AN_CS_r10_FDD_2TX); //@sic R5-133275 sic@ + } + else { //FDD + v_PUCCH_ConfigDedicated := cs_508_PUCCH_ConfigDedicated_v1020_1TX(cs_N1PUCCH_AN_CS_r10_FDD_1TX); + // TBD for 2TX + } + + if (v_UL_CA) { + if (p_CA_Type == CA_InterBand) { // 36.508 Table 4.8.2.1.6-1 + v_AdditionalSpectrumEmissionCA_r10 := cs_AdditionalSpectrumEmissionCA_r10_Def; + } + + v_CommonSCell_UL_Configuration := cs_RadioResourceConfigCommonSCell_UL_Configuration_DEFAULT(v_ChannelBandwidthDependency.Pusch_HoppingOffset, v_RadioResourceConfigCommonSIB.soundingRS_UL_ConfigCommon); + if (v_FDD_TDDInfo.FDD_TDD == TDD) { + v_DedicatedSCell_UL_Configuration := cs_RadioResourceConfigDedicatedSCell_UL_Configuration_DEFAULT(cs_CQI_ReportPeriodic_r10_DEFAULT_TDD); + } + else { + v_DedicatedSCell_UL_Configuration := cs_RadioResourceConfigDedicatedSCell_UL_Configuration_DEFAULT(cs_CQI_ReportPeriodic_r10_DEFAULT_FDD); + } + } + v_SCellToAddMod := cs_SCellToAddMod_r10(p_SCellIndex, + v_PhysicalCellIdentity_Scell, + v_Arfcn_SCell, + cs_508_RadioResourceConfigCommonSCell_r10_DEFAULT(v_SCell_DL_Bandwidth, + tsc_P_b_1Tx, + v_CommonSCell_UL_Configuration, + v_TDD_Config, + -, + p_RACH_ConfigCommonSCell_r11, + p_PRACH_Config_SCell), + cs_RadioResourceConfigDedicatedSCell_r10(cs_PhysicalConfigDedicatedSCell_r10_DEFAULT(v_DedicatedSCell_UL_Configuration), p_MAC_MainConfigSCell_r11 ));//@sic new CA-Enh test development sic@ + v_RRCConnectionReconfiguration := cs_508_RRCConnectionReconfiguration_SCell_AddModRelease(tsc_RRC_TI_Def, v_SCellToAddMod, v_PUCCH_ConfigDedicated,-,p_TimeAlignmentTimer,v_AdditionalSpectrumEmissionCA_r10,-, p_STAG_ToReleaseList, p_STAG_ToAddModList,p_ScellDeactivationTimer);//@sic new CA-Enh test development sic@ + } + if (v_UL_CA) { + v_Scell_Capability := UL_DL; + } + + v_RachProcedureConfig := cs_RachProcedureConfig_CRNTI(f_EUTRA_CellInfo_GetRAR_TA(p_SCellId), + f_EUTRA_CellInfo_GetDL_ChBandwidth(p_SCellId)); + + f_EUTRA_508RRC_AddModRel_Scell_Common(p_PCellId, + {p_SCellId}, + -, + v_RRCConnectionReconfiguration, + v_Scell_Capability, + v_RachProcedureConfig, + p_C_RNTI, + p_MeasGapConfig, + p_DciUlInfo_SCell, + p_UL_GrantConfig_SCell, + p_CnfFlag); + } + + // Function caters only for absolute configuration os scells. Does not support incremental configuration. i.e. cell X is already Scell, and Cell y is being added as new Scell + + + function f_EUTRA_508RRC_AddModRel_Scell_MIMO(EUTRA_CellId_Type p_PCellId, + EUTRA_CellId_Type p_SCellId, + template (value) DL_DCCH_Message p_RRC_ConnRecongMsg, + template (value) Scell_Capability_Type p_Scell_Capability := UL_DL, + template (omit) MeasGapConfig p_MeasGapConfig := omit, + template (omit) DciUlInfo_Type p_DciUlInfo_SCell := cs_DciInfo_CcchDcchDtchUL_Def, + template (value) UL_GrantConfig_Type p_UL_GrantConfig_SCell := cs_UL_GrantConfig_Def) + runs on EUTRA_PTC + { + var boolean v_MeasGapConfigIsPresent := isvalue(p_MeasGapConfig); + var DrxCtrl_Type v_DrxCtrl; + //var integer i; + var template (value) RRCConnectionReconfiguration_r8_IEs v_RRCConnectionReconfigurationIEs := p_RRC_ConnRecongMsg.message_.c1.rrcConnectionReconfiguration.criticalExtensions.c1.rrcConnectionReconfiguration_r8; + var SCellIndex_r10 v_SCellIndex :=1; + var MAC_MainConfig_ScellDeactivationTimer_Type v_DeactTimer := rf32; + var boolean v_NoUL_SCell ; //@sic R5s140083 sic@ + var template (omit) STAG_Id_r11 v_STAG_Id := omit ; //@sic new CA-Enh test development sic@ + var SubFrameTiming_Type v_TimingInfo, v_TimingInfo2; + + // Step 1: Configure PCell as Pcell or normal cell + f_EUTRA_SS_CommonCellConfig(p_PCellId, cas_PCellConfig_REQ(p_PCellId, cs_TimingInfo_Now, {p_SCellId})); + // Configure Scell for TM change + if (ispresent(v_RRCConnectionReconfigurationIEs.nonCriticalExtension.nonCriticalExtension.nonCriticalExtension.sCellToAddModList_r10[0].radioResourceConfigDedicatedSCell_r10.physicalConfigDedicatedSCell_r10.nonUL_Configuration_r10.antennaInfo_r10)) { + f_EUTRA_AntennaInfoR10_Config(p_SCellId, cs_TimingInfo_Now, valueof(v_RRCConnectionReconfigurationIEs.nonCriticalExtension.nonCriticalExtension.nonCriticalExtension.sCellToAddModList_r10[0].radioResourceConfigDedicatedSCell_r10.physicalConfigDedicatedSCell_r10.nonUL_Configuration_r10.antennaInfo_r10)); + } + + if (isvalue(v_RRCConnectionReconfigurationIEs.radioResourceConfigDedicated.mac_MainConfig.explicitValue.mac_MainConfig_v1020.sCellDeactivationTimer_r10)) { + v_DeactTimer := valueof(v_RRCConnectionReconfigurationIEs.radioResourceConfigDedicated.mac_MainConfig.explicitValue.mac_MainConfig_v1020.sCellDeactivationTimer_r10); + } + + v_NoUL_SCell := f_EUTRA_CellInfo_GetNoUL_Frequency(p_SCellId); + v_SCellIndex := valueof(v_RRCConnectionReconfigurationIEs.nonCriticalExtension.nonCriticalExtension.nonCriticalExtension.sCellToAddModList_r10[0].sCellIndex_r10); + + if (not v_NoUL_SCell) { + // Step 2: Configure C-RNTI based contention resolution in S-cell + f_EUTRA_SS_ConfigRachProcedure(p_SCellId, tsc_C_RNTI_Def, cs_RachProcedureConfig_CRNTI(f_EUTRA_CellInfo_GetRAR_TA(p_SCellId), + f_EUTRA_CellInfo_GetDL_ChBandwidth(p_SCellId))); + } + + // Save new C-RNTI in cell configuration for p_SCellId + f_EUTRA_CellInfo_SetC_RNTI(p_SCellId, tsc_C_RNTI_Def); + + // Step 3: configure DRX and MeasGap at the S cell (if necessary) + if (f_EUTRA_CellInfo_DrxIsConfigured(p_PCellId)) { + v_DrxCtrl := f_EUTRA_CellInfo_GetDrxCtrl(p_PCellId); + f_EUTRA_SS_DrxCtrlConfig(p_SCellId, v_DrxCtrl); + } + + if (v_MeasGapConfigIsPresent) { + f_EUTRA_SS_MeasGapCtrlConfig(p_SCellId, cs_MeasGapCtrl_Config(valueof(p_MeasGapConfig))); // valueof to avoid compiler warnings: ok as v_MeasConfig.measGapConfig is checked to be present + } + if (ispresent (v_RRCConnectionReconfigurationIEs.nonCriticalExtension.nonCriticalExtension.nonCriticalExtension.sCellToAddModList_r10[0].radioResourceConfigDedicatedSCell_r10.mac_MainConfigSCell_r11)) { + v_STAG_Id := v_RRCConnectionReconfigurationIEs.nonCriticalExtension.nonCriticalExtension.nonCriticalExtension.sCellToAddModList_r10[0].radioResourceConfigDedicatedSCell_r10.mac_MainConfigSCell_r11.stag_Id_r11; + } + + v_TimingInfo := f_EUTRA_GetNextSendOccasion(p_PCellId); + v_TimingInfo2 := f_EUTRA_TimingInfoAdd(v_TimingInfo,5); // 5 ms later + + // Step 6: Transmit RRCConnectionReconfiguration/HO command to UE + SRB.send(cas_SRB1_RrcPdu_REQ(p_PCellId, cs_TimingInfo(v_TimingInfo.SFN.Number, v_TimingInfo.Subframe.Number), p_RRC_ConnRecongMsg)); + // Configure Pcell for TM change + if (ischosen (v_RRCConnectionReconfigurationIEs.radioResourceConfigDedicated.physicalConfigDedicated.antennaInfo_r10.explicitValue_r10)) { + f_EUTRA_AntennaInfoR10_Config(p_PCellId, + cs_TimingInfo(v_TimingInfo2.SFN.Number, v_TimingInfo2.Subframe.Number), + valueof(v_RRCConnectionReconfigurationIEs.radioResourceConfigDedicated.physicalConfigDedicated.antennaInfo_r10.explicitValue_r10)); + } + // Step 4: Configure SCell as Scell + f_EUTRA_SS_CommonCellConfig(p_SCellId, cas_SCellConfig_REQ(p_SCellId, cs_TimingInfo(v_TimingInfo2.SFN.Number, v_TimingInfo2.Subframe.Number), cs_SCellConfig(p_PCellId, v_SCellIndex, p_Scell_Capability, v_DeactTimer,-,v_STAG_Id))); + if (not v_NoUL_SCell) { + // Step 5: configure Stop UL grant configuration on S cell + f_EUTRA_SS_CommonCellConfig(p_SCellId, cas_ULGrantAllocation_REQ(p_SCellId, cs_TimingInfo(v_TimingInfo2.SFN.Number, v_TimingInfo2.Subframe.Number), p_DciUlInfo_SCell, cs_PUCCH_Synch_None, p_UL_GrantConfig_SCell)); + } + + // Step 7: Receive RRCConnectionReconfiguration Complete + SRB.receive(car_SRB1_RrcPdu_IND(p_PCellId, cr_508_RRCConnectionReconfigurationComplete(tsc_RRC_TI_Def))); + + // No RACH configuration as Already configured for C-RNTI based contention + + } + + /* + * @desc Function to Add/Modify and/or rel 1 Scell + * @param p_PCellId + * @param p_SCellIdAddList (default value: tsc_EUTRA_NullCellIdList) + * @param p_SCellIdDelList (default value: tsc_EUTRA_NullCellIdList) + * @param p_RRC_ConnRecongMsg + * @param p_Scell_Capability (default value: UL_DL) + * @param p_RachProcedureConfig + * @param p_C_RNTI (default value: tsc_C_RNTI_Def) + * @param p_MeasGapConfig (default value: cs_508_MeasGapConfig_GP1) + * @param p_DciUlInfo_SCell (default value: cs_DciInfo_CcchDcchDtchUL_Def) + * @param p_UL_GrantConfig_SCell (default value: cs_UL_GrantConfig_Stop) + * @param p_CnfFlag (default value: tsc_NoCnfReq) + * @param p_PcelltoNormalCell (default value: false) + * @status APPROVED (LTE_A) + */ + function f_EUTRA_508RRC_AddModRel_Scell_Common(EUTRA_CellId_Type p_PCellId, + EUTRA_CellIdList_Type p_SCellIdAddList := tsc_EUTRA_NullCellIdList, + EUTRA_CellIdList_Type p_SCellIdDelList := tsc_EUTRA_NullCellIdList, + template (value) DL_DCCH_Message p_RRC_ConnRecongMsg, + template (value) Scell_Capability_Type p_Scell_Capability := UL_DL, + template (value) RachProcedureConfig_Type p_RachProcedureConfig, + C_RNTI p_C_RNTI := tsc_C_RNTI_Def, + template (omit) MeasGapConfig p_MeasGapConfig := omit, //@sic R5s130503 sic@ + template (omit) DciUlInfo_Type p_DciUlInfo_SCell := cs_DciInfo_CcchDcchDtchUL_Def, + template (value) UL_GrantConfig_Type p_UL_GrantConfig_SCell := cs_UL_GrantConfig_Stop, + boolean p_CnfFlag := tsc_NoCnfReq, + boolean p_PcelltoNormalCell := false) //Configure Pcell to Normal cell if p_SCellIdAddList is empty + runs on EUTRA_PTC + { + var boolean v_MeasGapConfigIsPresent := isvalue(p_MeasGapConfig); + var DrxCtrl_Type v_DrxCtrl; + var integer i; + var template (value) RRCConnectionReconfiguration_r8_IEs v_RRCConnectionReconfigurationIEs := p_RRC_ConnRecongMsg.message_.c1.rrcConnectionReconfiguration.criticalExtensions.c1.rrcConnectionReconfiguration_r8; + var SCellIndex_r10 v_SCellIndex; + var MAC_MainConfig_ScellDeactivationTimer_Type v_DeactTimer := rf32; + var boolean v_NoUL_SCell ; //@sic R5s140083 sic@ + var template (omit) STAG_Id_r11 v_STAG_Id := omit ; //@sic new CA-Enh test development sic@ + var SubFrameTiming_Type v_TimingInfo, v_TimingInfo2; + + // Step 1: Configure PCell as Pcell or normal cell + if (lengthof(p_SCellIdAddList) > 0) { // one or more SCell Addition + f_EUTRA_SS_CommonCellConfig(p_PCellId, cas_PCellConfig_REQ(p_PCellId, cs_TimingInfo_Now, p_SCellIdAddList, p_CnfFlag)); + } + + if (isvalue(v_RRCConnectionReconfigurationIEs.radioResourceConfigDedicated.mac_MainConfig.explicitValue.mac_MainConfig_v1020.sCellDeactivationTimer_r10)) { + v_DeactTimer := valueof(v_RRCConnectionReconfigurationIEs.radioResourceConfigDedicated.mac_MainConfig.explicitValue.mac_MainConfig_v1020.sCellDeactivationTimer_r10); + } + if (lengthof(p_SCellIdAddList) > 0) { // one or more SCell Addition + for (i:=0; i < lengthof(p_SCellIdAddList); i:=i+1) { //Executed 0 or more times + v_NoUL_SCell := f_EUTRA_CellInfo_GetNoUL_Frequency(p_SCellIdAddList[i]); + v_SCellIndex := valueof(v_RRCConnectionReconfigurationIEs.nonCriticalExtension.nonCriticalExtension.nonCriticalExtension.sCellToAddModList_r10[i].sCellIndex_r10); + + if (not v_NoUL_SCell) { //@sic R5s140083 sic@ + // Step 2: Configure C-RNTI based contention resolution in S-cell + f_EUTRA_SS_ConfigRachProcedure(p_SCellIdAddList[i], p_C_RNTI, p_RachProcedureConfig, -, p_CnfFlag); + } + + // Save new C-RNTI in cell configuration for p_SCellId + f_EUTRA_CellInfo_SetC_RNTI(p_SCellIdAddList[i], p_C_RNTI); + + // Step 3: configure DRX and MeasGap at the S cell (if necessary) + if (f_EUTRA_CellInfo_DrxIsConfigured(p_PCellId)) { + v_DrxCtrl := f_EUTRA_CellInfo_GetDrxCtrl(p_PCellId); + f_EUTRA_SS_DrxCtrlConfig(p_SCellIdAddList[i], v_DrxCtrl, -, p_CnfFlag); + } + + if (v_MeasGapConfigIsPresent) { + f_EUTRA_SS_MeasGapCtrlConfig(p_SCellIdAddList[i], cs_MeasGapCtrl_Config(valueof(p_MeasGapConfig)), -, p_CnfFlag); // valueof to avoid compiler warnings: ok as v_MeasConfig.measGapConfig is checked to be present + } + if (ispresent(v_RRCConnectionReconfigurationIEs.nonCriticalExtension.nonCriticalExtension.nonCriticalExtension.sCellToAddModList_r10[i].radioResourceConfigDedicatedSCell_r10.mac_MainConfigSCell_r11)) { + v_STAG_Id := v_RRCConnectionReconfigurationIEs.nonCriticalExtension.nonCriticalExtension.nonCriticalExtension.sCellToAddModList_r10[i].radioResourceConfigDedicatedSCell_r10.mac_MainConfigSCell_r11.stag_Id_r11; + } + } + }// end of Scell Addition + //@sic R5s140376 sic@ + v_TimingInfo := f_EUTRA_GetNextSendOccasion(p_PCellId); + v_TimingInfo2 := f_EUTRA_TimingInfoAdd(v_TimingInfo,5); // 5 ms later + + // Step 6: Transmit RRCConnectionReconfiguration/HO command to UE + SRB.send(cas_SRB1_RrcPdu_REQ(p_PCellId, cs_TimingInfo(v_TimingInfo.SFN.Number, v_TimingInfo.Subframe.Number), p_RRC_ConnRecongMsg)); + + if (lengthof(p_SCellIdAddList) > 0) { + // one or more SCell Addition + for (i:=0; i < lengthof(p_SCellIdAddList); i:=i+1) { //Executed 0 or more times + // Step 4: Configure SCell as Scell + f_EUTRA_SS_CommonCellConfig(p_SCellIdAddList[i], cas_SCellConfig_REQ(p_SCellIdAddList[i], + cs_TimingInfo(v_TimingInfo2.SFN.Number, v_TimingInfo2.Subframe.Number), + cs_SCellConfig(p_PCellId, v_SCellIndex, p_Scell_Capability, v_DeactTimer, - , v_STAG_Id), + p_CnfFlag)); + if ( not v_NoUL_SCell) { //@sic R5s140083 sic@ + // Step 5: configure Stop UL grant configuration on S cell + f_EUTRA_SS_CommonCellConfig(p_SCellIdAddList[i], cas_ULGrantAllocation_REQ(p_SCellIdAddList[i], + cs_TimingInfo(v_TimingInfo2.SFN.Number, v_TimingInfo2.Subframe.Number), + p_DciUlInfo_SCell, + cs_PUCCH_Synch_None, + p_UL_GrantConfig_SCell, + p_CnfFlag)); + } + } + } + + if (lengthof(p_SCellIdDelList) > 0) { // one or more SCell Removal + if (p_PcelltoNormalCell and (lengthof(p_SCellIdAddList)== 0)) { // Pcell is no more a Pcell + f_EUTRA_SS_CommonCellConfig(p_PCellId, cas_ServingCellRelease_REQ(p_PCellId, + cs_TimingInfo(v_TimingInfo2.SFN.Number, v_TimingInfo2.Subframe.Number), + p_CnfFlag)); + } + for (i:=0; i< lengthof(p_SCellIdDelList); i:=i+1) { + if (fl_Check_CellID_InList(p_SCellIdDelList[i], p_SCellIdAddList)) { // SCell Being simultaneously released and Added, hence nothing to release + continue; + } + // Step 9: Configure SCell as Scell + f_EUTRA_SS_CommonCellConfig(p_SCellIdDelList[i], cas_ServingCellRelease_REQ(p_SCellIdDelList[i], cs_TimingInfo(v_TimingInfo2.SFN.Number, v_TimingInfo2.Subframe.Number), p_CnfFlag)); + v_SCellIndex := valueof(v_RRCConnectionReconfigurationIEs.nonCriticalExtension.nonCriticalExtension.nonCriticalExtension.sCellToReleaseList_r10[i]); + } + } + + // Step 7: Receive RRCConnectionReconfiguration Complete + SRB.receive(car_SRB1_RrcPdu_IND(p_PCellId, cr_508_RRCConnectionReconfigurationComplete(tsc_RRC_TI_Def))); + + // No RACH configuration as Already configured for C-RNTI based contention + + //No update of C-RNTI + if (lengthof(p_SCellIdDelList) > 0) { + for (i:=0; i< lengthof(p_SCellIdDelList); i:=i+1) { + // Step 8: Release DRX and MeasGap at the S cell (if necessary) + if (f_EUTRA_CellInfo_DrxIsConfigured(p_SCellIdDelList[i])) { + f_EUTRA_SS_DrxCtrlConfig(p_SCellIdDelList[i], cs_DrxCtrl_None, -, p_CnfFlag); + } + f_EUTRA_SS_MeasGapCtrlConfig(p_SCellIdDelList[i], cs_MeasGapCtrl_None, -, p_CnfFlag); + + // Step 10: configure Default grant configuration on S cell + f_EUTRA_SS_CommonCellConfig(p_SCellIdAddList[i], cas_ULGrantAllocation_REQ(p_SCellIdDelList[i], cs_TimingInfo_Now, -, cs_PUCCH_Synch_None, -, p_CnfFlag)); + } + } + } + + /* + * @desc wrapper function to ADD and Release simultaneously a Scell + * @param p_PCellId + * @param p_SCellId + * @param p_SCellIndex + * @param p_SCellIdRel + * @param p_SCellIndexRel + * @param p_CA_Type + * @param p_UL_CA (default value: false) + * @param p_C_RNTI (default value: tsc_C_RNTI_Def) + * @param p_MeasGapConfig (default value: cs_508_MeasGapConfig_GP1) + * @param p_RRCConnectionReconfiguration (default value: omit) + * @param p_DciUlInfo_SCell (default value: cs_DciInfo_CcchDcchDtchUL_Def) + * @param p_UL_GrantConfig_SCell (default value: cs_UL_GrantConfig_Def) + * @param p_CnfFlag (default value: tsc_NoCnfReq) + * @status APPROVED (LTE_A) + */ + function f_EUTRA_508RRC_AddRel_1Scell(EUTRA_CellId_Type p_PCellId, + EUTRA_CellId_Type p_SCellId, //Scell to Add + SCellIndex_r10 p_SCellIndex, //Scell to Add + EUTRA_CellId_Type p_SCellIdRel, //Scell to release + SCellIndex_r10 p_SCellIndexRel, //Scell to release + CA_Tested_Type p_CA_Type, + boolean p_UL_CA := false, // UL CA desired + C_RNTI p_C_RNTI := tsc_C_RNTI_Def, + template (omit) MeasGapConfig p_MeasGapConfig := omit, //@sic R5s130503 sic@ + template (omit) DL_DCCH_Message p_RRCConnectionReconfiguration := omit, + template (omit) DciUlInfo_Type p_DciUlInfo_SCell := cs_DciInfo_CcchDcchDtchUL_Def, + template (value) UL_GrantConfig_Type p_UL_GrantConfig_SCell := cs_UL_GrantConfig_Def, + boolean p_CnfFlag := tsc_NoCnfReq) runs on EUTRA_PTC + { + var integer v_Arfcn_SCell := f_EUTRA_CellInfo_GetEARFCN_DL(p_SCellId); + var PhysCellId v_PhysicalCellIdentity_Scell := f_EUTRA_CellInfo_GetPhyCellId(p_SCellId); + var SCell_DL_Bandwidth_Type v_SCell_DL_Bandwidth := f_EUTRA_CellInfo_GetSCell_DL_ChBandwidth(p_SCellId); + var template (value) RachProcedureConfig_Type v_RachProcedureConfig; + var template (value) DL_DCCH_Message v_RRCConnectionReconfiguration; + var EUTRA_FDD_TDD_CellInfo_Type v_FDD_TDDInfo := f_EUTRA_CellInfo_GetFDD_TDD_Info(p_SCellId); + var template(omit) TDD_Config v_TDD_Config := omit; // omitted in FDD + var boolean v_UL_CA := p_UL_CA; + var template (omit) CommonSCell_UL_Configuration_Type v_CommonSCell_UL_Configuration := omit; + var template (omit) DedicatedSCell_UL_Configuration_Type v_DedicatedSCell_UL_Configuration := omit; + var template (value) SCellToAddMod_r10 v_SCellToAddMod; + var Ul_Bandwidth_Type v_UL_Bandwidth := f_EUTRA_CellInfo_GetUL_ChBandwidth(p_SCellId); + var Dl_Bandwidth_Type v_DL_Bandwidth := f_EUTRA_CellInfo_GetDL_ChBandwidth(p_SCellId); + var ChannelBandwidthDependency_Type v_ChannelBandwidthDependency := f_EUTRA_BandDependentParam(v_DL_Bandwidth, v_UL_Bandwidth); + var EUTRA_CellSysInfo_Type v_EUTRA_CellSysInfo_Type := f_EUTRA_CellInfo_GetSYSINFO(p_SCellId); + var RadioResourceConfigCommonSIB v_RadioResourceConfigCommonSIB := v_EUTRA_CellSysInfo_Type.BCCH_Info.SIs[0].message_.c1.systemInformation.criticalExtensions.systemInformation_r8.sib_TypeAndInfo[0].sib2.radioResourceConfigCommon; + var template (value) Scell_Capability_Type v_Scell_Capability := DlOnly; + var template (value) PUCCH_ConfigDedicated_v1020 v_PUCCH_ConfigDedicated; + var template (omit) AdditionalSpectrumEmissionCA_r10_Type v_AdditionalSpectrumEmissionCA_r10 := omit; + + if (isvalue(p_RRCConnectionReconfiguration)) { + v_RRCConnectionReconfiguration := valueof(p_RRCConnectionReconfiguration); + } else { + if (v_FDD_TDDInfo.FDD_TDD == TDD) { // initialise tdd-Configuration to be used in + v_TDD_Config := cs_TDD_ConfigDef(v_FDD_TDDInfo.TDD_SubframeAssignment); // Value omitted in FDD + v_PUCCH_ConfigDedicated := cs_508_PUCCH_ConfigDedicated_v1020_2TX(cs_N1PUCCH_AN_CS_r10_FDD_1TX, cs_N1PUCCH_AN_CS_r10_FDD_2TX); //@sic R5-133275 sic@ + } + else { //FDD + v_PUCCH_ConfigDedicated := cs_508_PUCCH_ConfigDedicated_v1020_1TX(cs_N1PUCCH_AN_CS_r10_FDD_1TX); + // TBD for 2TX + } + + if (v_UL_CA) { + if (p_CA_Type == CA_InterBand) { // 36.508 Table 4.8.2.1.6-1 + v_AdditionalSpectrumEmissionCA_r10 := cs_AdditionalSpectrumEmissionCA_r10_Def; + } + + v_CommonSCell_UL_Configuration := cs_RadioResourceConfigCommonSCell_UL_Configuration_DEFAULT(v_ChannelBandwidthDependency.Pusch_HoppingOffset, v_RadioResourceConfigCommonSIB.soundingRS_UL_ConfigCommon); + if (v_FDD_TDDInfo.FDD_TDD == TDD) { + v_DedicatedSCell_UL_Configuration := cs_RadioResourceConfigDedicatedSCell_UL_Configuration_DEFAULT(cs_CQI_ReportPeriodic_r10_DEFAULT_TDD); + } + else { + v_DedicatedSCell_UL_Configuration := cs_RadioResourceConfigDedicatedSCell_UL_Configuration_DEFAULT(cs_CQI_ReportPeriodic_r10_DEFAULT_FDD); + } + } + v_SCellToAddMod := cs_SCellToAddMod_r10(p_SCellIndex, + v_PhysicalCellIdentity_Scell, + v_Arfcn_SCell, + cs_508_RadioResourceConfigCommonSCell_r10_DEFAULT(v_SCell_DL_Bandwidth, tsc_P_b_1Tx, v_CommonSCell_UL_Configuration, v_TDD_Config), + cs_RadioResourceConfigDedicatedSCell_r10(cs_PhysicalConfigDedicatedSCell_r10_DEFAULT(v_DedicatedSCell_UL_Configuration))); + v_RRCConnectionReconfiguration := cs_508_RRCConnectionReconfiguration_SCell_AddModRelease(tsc_RRC_TI_Def, + v_SCellToAddMod, + v_PUCCH_ConfigDedicated, + {p_SCellIndexRel}, + -, + v_AdditionalSpectrumEmissionCA_r10); //Scell Rel + } + if (v_UL_CA) { + v_Scell_Capability := UL_DL; + } + + v_RachProcedureConfig := cs_RachProcedureConfig_CRNTI(f_EUTRA_CellInfo_GetRAR_TA(p_SCellId), + f_EUTRA_CellInfo_GetDL_ChBandwidth(p_SCellId)); + f_EUTRA_508RRC_AddModRel_Scell_Common(p_PCellId, + {p_SCellId}, + {p_SCellIdRel}, + v_RRCConnectionReconfiguration, + v_Scell_Capability, + v_RachProcedureConfig, + p_C_RNTI, + p_MeasGapConfig, + p_DciUlInfo_SCell, + p_UL_GrantConfig_SCell, + p_CnfFlag); + } + + /* + * @desc Erapper functio to release a Scell + * @param p_PCellId + * @param p_SCellIdRel + * @param p_SCellIndexRel + * @param p_CnfFlag (default value: tsc_NoCnfReq) + * @status APPROVED (LTE_A) + */ + function f_EUTRA_508RRC_Rel_1Scell(EUTRA_CellId_Type p_PCellId, + EUTRA_CellId_Type p_SCellIdRel, //Scell to release + SCellIndex_r10 p_SCellIndexRel, //Scell to release + boolean p_CnfFlag := tsc_NoCnfReq) runs on EUTRA_PTC + { + var template (value) RachProcedureConfig_Type v_RachProcedureConfig; + var template (value) DL_DCCH_Message v_RRCConnectionReconfiguration; + + v_RachProcedureConfig := cs_RachProcedureConfig_CRNTI(f_EUTRA_CellInfo_GetRAR_TA(p_SCellIdRel), + f_EUTRA_CellInfo_GetDL_ChBandwidth(p_SCellIdRel)); // TBD Will not be used in common function + + v_RRCConnectionReconfiguration := cs_508_RRCConnectionReconfiguration_SCell_Release(tsc_RRC_TI_Def, + {p_SCellIndexRel}); //Scell Rel + + f_EUTRA_508RRC_AddModRel_Scell_Common(p_PCellId, + -, + {p_SCellIdRel}, + v_RRCConnectionReconfiguration, + -, + v_RachProcedureConfig, + -, + -, + -, + -, + p_CnfFlag, + true); + } + + /* + * @desc Function for performing SS and UE configuration at IntraLTE InterCell handover from a PCELL+Scell -> Normal Cell + * The function implements step 2-14 of 36.523-3 cl. 7.16.1 with + * 1. configure C-RNTI based contention resolution in SS with minimal grant + * i.e. the UE will have to raise SR to send additional/user data. + * 2. activate security at target cell according to 36.508 cl. 4.6.4 Table 4.6.4-1 + * with keyChangeIndicator set to FALSE and nextHopChainingCount set to 0 + * 3. send the RRCConnectionReconfiguration to UE. This message will include + * 3a. Measurement configuration if specified. + * 3b. MobilityControlInfo according to 36.508 cl. 4.6.5 Table 4.6.5-1 + * with newUE-Identity set to tsc_C_RNTI_Def2 or p_C_R_NTI + * 3c. RadioResourceConfigDedicated according to 36.508 cl. 4.6.3 Table 4.6.3-19 + * 3d. SecurityConfigHO according to 36.508 cl. 4.6.4 Table 4.6.4-1 + * with keyChangeIndicator set to FALSE and nextHopChainingCount set to 0 + * @param p_SourcePCellId + * @param p_SourceSCellId + * @param p_TargetPCellId + * @param p_TargetSCellId + * @param p_SCellToAddModList (default value: omit) + * @param p_SCellToReleaseList (default value: omit) + * @param p_UL_CA (default value: false) + * @param p_Scell_Capability (default value: UL_DL) + * @param p_DrbConfigList (default value: cs_DrbConfigList_Def) + * @param p_C_RNTI (default value: tsc_C_RNTI_Def2) + * @param p_MeasConfig (default value: omit) + * @param p_DciUlInfo_TargetCell (default value: cs_DciInfo_CcchDcchDtchUL_Def) + * @param p_UL_GrantConfig_SourceCell (default value: cs_UL_GrantConfig_Def) + * @param p_UL_GrantConfig_TargetCell (default value: cs_UL_GrantConfig_Def) + * @param p_Dsr_TransMax (default value: n4) + * @param p_CarrierFreqEutra (default value: omit); omit means that the CarrierFreqEutra is determined within the function, + * i.e. it is omitted when the frequency is the same on source and target cell + * Note: when frequency is different on source and target cell there always needs to be a valid CarrierFreqEutra + * @param p_CnfFlag (default value: tsc_NoCnfReq) + * @param p_AddAdditionalSpectrumEmission (default value: false) + * @status APPROVED (LTE_A) + */ + function f_EUTRA_508RRC_IntraLTE_CA_HO_InterCell(EUTRA_CellId_Type p_SourcePCellId, //Source Pcell + EUTRA_CellId_Type p_SourceSCellId, //Source Scell + EUTRA_CellId_Type p_TargetPCellId, //Target Pcell + EUTRA_CellId_Type p_TargetSCellId, // Target Scell + template (omit) SCellToAddModList_r10 p_SCellToAddModList := omit, + template (omit) SCellToReleaseList_r10 p_SCellToReleaseList := omit, + boolean p_UL_CA := false, // UL CA desired + template (value) Scell_Capability_Type p_Scell_Capability := UL_DL, + template (value) RadioBearerList_Type p_DrbConfigList := cs_DrbConfigList_Def, + C_RNTI p_C_RNTI := tsc_C_RNTI_Def2, + template (omit) MeasConfig p_MeasConfig := omit, + template (omit) DciUlInfo_Type p_DciUlInfo_TargetCell := cs_DciInfo_CcchDcchDtchUL_Def, + template (value) UL_GrantConfig_Type p_UL_GrantConfig_SourceCell := cs_UL_GrantConfig_Def, + template (value) UL_GrantConfig_Type p_UL_GrantConfig_TargetCell := cs_UL_GrantConfig_Def, + Dsr_TransMax_Type p_Dsr_TransMax := n4, + template (omit) CarrierFreqEUTRA p_CarrierFreqEutra := omit, + boolean p_CnfFlag := tsc_NoCnfReq, + boolean p_AddAdditionalSpectrumEmission := false) runs on EUTRA_PTC + { + var DRB_IdentityList_AllAndAMonly_Type v_DRB_IdentityList; + var template (value) RachProcedureConfig_Type v_RachProcedureConfig; + var template (value) DL_DCCH_Message v_RRCConnectionReconfiguration; + var EUTRA_SecurityParams_Type v_Auth_Params := f_EUTRA_Security_Get(); + var NextHopChainingCount v_NextHopChainingCount := 0; //According to 36.508 cl. 4.6.1 RRCConnectionReestablishment + var template (omit) MeasConfig v_MeasConfig := p_MeasConfig; + var boolean v_MeasGapConfigIsPresent := isvalue(v_MeasConfig) and ispresent(v_MeasConfig.measGapConfig); + var DrxCtrl_Type v_DrxCtrl; + var SubFrameTiming_Type v_Timing, v_Timing1; + var SCellIndex_r10 v_SCellIndex; + var MAC_MainConfig_ScellDeactivationTimer_Type v_DeactTimer := rf32; + var template (value) Scell_Capability_Type v_Scell_Capability := DlOnly; + var boolean v_UL_CA := p_UL_CA; + var boolean v_NoUL_SCell := f_EUTRA_CellInfo_GetNoUL_Frequency(p_TargetSCellId) ; //@sic R5s140083 sic@ + + if (v_UL_CA) { + v_Scell_Capability := UL_DL; + } + + // Build DRB identity list from inputed radiobearer config list + v_DRB_IdentityList := f_EUTRA_DRB_IdentityList(p_DrbConfigList); + + v_RachProcedureConfig := cs_RachProcedureConfig_CRNTI_HO(f_EUTRA_CellInfo_GetRAR_TA(p_TargetPCellId), + f_EUTRA_CellInfo_GetDL_ChBandwidth(p_TargetPCellId)); + + v_RRCConnectionReconfiguration := f_EUTRA_RRCConnectionReconfiguration_IntraLTE_HO_InterCell(p_SourcePCellId, + p_TargetPCellId, + p_C_RNTI, + p_MeasConfig, + p_Dsr_TransMax, + p_CarrierFreqEutra, + p_AddAdditionalSpectrumEmission, + cs_RRCConnectionReconfiguration_SCell_AddMod_IEs(p_SCellToAddModList, p_SCellToReleaseList)); + + v_Timing := f_EUTRA_GetNextSendOccasion(p_SourcePCellId, 700); // 500 ms // Time for schedule of DL RRC message + //@sic R5s130964 sic@ + v_Timing1 := f_EUTRA_TimingInfoAdd (v_Timing, 40); // time for Target Pcell SS configuration + // The 40 ms is sufficient for 4 retransmissions and less than 15 [RRC processing delay] + 100 [5 retransmissions of PRACH preamble on trarget pCell] + // Prepare target Pcell + + // Step 1: stop periodic TA on source Pcell + f_EUTRA_SS_CommonCellConfig(p_SourcePCellId, cas_ULGrantAllocation_REQ(p_SourcePCellId,cs_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number), -, cs_PUCCH_Synch_None, p_UL_GrantConfig_SourceCell)); + // Step 2: Configure no RACH response in target Pcell + f_EUTRA_SS_ConfigRachProcedure(p_TargetPCellId, p_C_RNTI, cs_RachProcedureConfig_NoResponse(f_EUTRA_CellInfo_GetDL_ChBandwidth(p_TargetPCellId)), cs_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number)); + + // Step 3: Transmit RRCConnectionReconfiguration/HO command to UE + SRB.send(cas_SRB1_RrcPdu_REQ(p_SourcePCellId, cs_TimingInfo(v_Timing.SFN.Number, v_Timing.Subframe.Number),v_RRCConnectionReconfiguration)); + // Step 4: optional if target Pcell is Source Scell + if (p_SourceSCellId == p_TargetPCellId) { //Else, the target Pcell is expected to be configured with SRB1-3 and DRB already + f_EUTRA_CellConfig_ScellToPcell_Def(p_TargetPCellId,cs_TimingInfo(v_Timing1.SFN.Number, v_Timing1.Subframe.Number)); + } + + // Step 5: Transfer of the PDCP Count for AM DRBs from source to target cell + f_EUTRA_SS_PdcpCount_Handover(p_SourcePCellId, p_TargetPCellId, v_DRB_IdentityList.AMonly,cs_TimingInfo(v_Timing1.SFN.Number, v_Timing1.Subframe.Number)); + + // Step 6: Tell the SS about the HO + f_EUTRA_SS_PdcpHandoverCtrl(p_TargetPCellId, cas_PdcpHandoverInit_REQ(p_SourcePCellId, p_TargetPCellId, cs_TimingInfo(v_Timing1.SFN.Number, v_Timing1.Subframe.Number))); + + // Step 7: Configure C-RNTI based contention resolution in target Pcell + f_EUTRA_SS_ConfigRachProcedure(p_TargetPCellId, p_C_RNTI, v_RachProcedureConfig, cs_TimingInfo(v_Timing1.SFN.Number, v_Timing1.Subframe.Number)); + + // Save new C-RNTI in cell configuration for p_TargetCellId + f_EUTRA_CellInfo_SetC_RNTI(p_TargetPCellId, p_C_RNTI); + + // Step 8: activate RRC security at SS target Pcell for SRB 1, 2 and 1 AM DRB + v_Auth_Params := f_EUTRA_SS_AS_ActivateSecurity_HO_Reest(p_TargetPCellId, + v_Auth_Params, + v_NextHopChainingCount, + cs_TimingInfo(v_Timing1.SFN.Number, v_Timing1.Subframe.Number), + v_DRB_IdentityList.AMonly); + f_EUTRA_Security_Set(v_Auth_Params); + + // Step 9: configure DRX and MeasGap at the target P and S cells (if necessary) + if (f_EUTRA_CellInfo_DrxIsConfigured(p_SourcePCellId)) { + v_DrxCtrl := f_EUTRA_CellInfo_GetDrxCtrl(p_SourcePCellId); + f_EUTRA_SS_DrxCtrlConfig(p_TargetPCellId, v_DrxCtrl, cs_TimingInfo(v_Timing1.SFN.Number, v_Timing1.Subframe.Number)); + f_EUTRA_SS_DrxCtrlConfig(p_TargetSCellId, v_DrxCtrl, cs_TimingInfo(v_Timing1.SFN.Number, v_Timing1.Subframe.Number)); + } + + if (v_MeasGapConfigIsPresent) { + f_EUTRA_SS_MeasGapCtrlConfig(p_TargetPCellId, cs_MeasGapCtrl_Config(valueof(v_MeasConfig.measGapConfig)),cs_TimingInfo(v_Timing1.SFN.Number, v_Timing1.Subframe.Number)); // valueof to avoid compiler warnings: ok as v_MeasConfig.measGapConfig is checked to be present + f_EUTRA_SS_MeasGapCtrlConfig(p_TargetSCellId, cs_MeasGapCtrl_Config(valueof(v_MeasConfig.measGapConfig)),cs_TimingInfo(v_Timing1.SFN.Number, v_Timing1.Subframe.Number)); + } + + + // Step 10: configure UL grant configuration on target Pcell @sic R5s100515 sic@ + f_EUTRA_SS_CommonCellConfig(p_TargetPCellId, cas_ULGrantAllocation_REQ(p_TargetPCellId, cs_TimingInfo(v_Timing1.SFN.Number, v_Timing1.Subframe.Number), p_DciUlInfo_TargetCell, cs_PUCCH_Synch_None, p_UL_GrantConfig_TargetCell)); + + // Step 11: Configure target PCell as PCell + f_EUTRA_SS_CommonCellConfig(p_TargetPCellId, cas_PCellConfig_REQ(p_TargetPCellId, cs_TimingInfo(v_Timing1.SFN.Number, v_Timing1.Subframe.Number), {p_TargetSCellId}, p_CnfFlag)); + + // Step 12: Configure target Scell + if(isvalue (p_SCellToAddModList)) { + v_SCellIndex := valueof(p_SCellToAddModList[0].sCellIndex_r10); + } else { + v_SCellIndex := 1; + } + //if Scell change does not happen, steps 1-2 are still needed due to possible change in C-RNTI + // Save new C-RNTI in cell configuration for p_SCellId + f_EUTRA_CellInfo_SetC_RNTI(p_TargetSCellId, p_C_RNTI); + + if ( not v_NoUL_SCell) //@sic R5s140083 sic@ + { + // Step 12.1: Configure C-RNTI based contention resolution in S-cell + f_EUTRA_SS_ConfigRachProcedure(p_TargetSCellId, p_C_RNTI, v_RachProcedureConfig, cs_TimingInfo(v_Timing1.SFN.Number, v_Timing1.Subframe.Number), p_CnfFlag); + + + + // Step 12.2: configure def UL grant configuration and no auto TA transmision on target Scell + f_EUTRA_SS_CommonCellConfig(p_TargetSCellId, cas_ULGrantAllocation_REQ(p_TargetSCellId, cs_TimingInfo(v_Timing1.SFN.Number, v_Timing1.Subframe.Number), cs_DciInfo_CcchDcchDtchUL_Def, cs_PUCCH_Synch_None, cs_UL_GrantConfig_Def, p_CnfFlag)); + }; + // Step 12.3: Configure SCell as Scell with new Pcell association + f_EUTRA_SS_CommonCellConfig(p_TargetSCellId, cas_SCellConfig_REQ(p_TargetSCellId, cs_TimingInfo(v_Timing1.SFN.Number, v_Timing1.Subframe.Number), cs_SCellConfig(p_TargetPCellId, v_SCellIndex, p_Scell_Capability, v_DeactTimer), p_CnfFlag)); + + // Step 13: + SRB.receive(car_SRB1_RrcPdu_IND(p_TargetPCellId, cr_508_RRCConnectionReconfigurationComplete(tsc_RRC_TI_Def))); + + // Step 14: configure periodic TA on target cell + f_EUTRA_SS_CommonCellConfig(p_TargetPCellId, cas_PUCCH_Synch_Config_REQ(p_TargetPCellId, cs_TimingInfo_Now, cs_PUCCH_Synch_Auto_Def, tsc_NoCnfReq)); // @sic R5s100801 sic@ + + // Step 15: Tell the SS about the HO @sic R5w100212 sic@ + f_EUTRA_SS_PdcpHandoverCtrl(p_TargetPCellId, cas_PdcpHandoverComplete_REQ(p_TargetPCellId)); + + // Step 16: configure RACH procedure for target cell back to default + f_EUTRA_SS_ConfigRachProcedure_Def(p_TargetPCellId, -, -, -, -, -, p_CnfFlag); + if (p_SourcePCellId != p_TargetSCellId) { //Source cell is no more a Carrier component + // Step 17: Re-establish SRBs and DRB(s) in source cell + f_EUTRA_SS_SRBs_DRBs_Release(p_SourcePCellId, -, v_DRB_IdentityList.All, p_CnfFlag); + f_EUTRA_SS_SRBs_DRBs_Config(p_SourcePCellId, -, p_DrbConfigList, p_CnfFlag); + + // Step 18: Release DRX and MeasGap configuration + f_EUTRA_SS_DrxCtrlConfig(p_SourcePCellId, cs_DrxCtrl_None, -, p_CnfFlag); + f_EUTRA_SS_MeasGapCtrlConfig(p_SourcePCellId, cs_MeasGapCtrl_None, -, p_CnfFlag); + //Step 19: Configure source Pcell as normal cell + f_EUTRA_SS_CommonCellConfig(p_SourcePCellId, cas_ServingCellRelease_REQ(p_SourcePCellId, cs_TimingInfo_Now, p_CnfFlag)); + } + + + if (p_SourceSCellId != p_TargetSCellId and p_SourceSCellId != p_TargetPCellId) { + // No RACH configuration as Already configured for C-RNTI based contention along with Pcell + + //No update of C-RNTI + //Step 20 + // Release DRX and MeasGap at the S cell (if necessary) + if (f_EUTRA_CellInfo_DrxIsConfigured(p_SourceSCellId)) { + f_EUTRA_SS_DrxCtrlConfig(p_SourceSCellId, cs_DrxCtrl_None, -, p_CnfFlag); + } + + f_EUTRA_SS_MeasGapCtrlConfig(p_SourceSCellId, cs_MeasGapCtrl_None, -, p_CnfFlag); + //Step 21 + // Configure SCell as normal cell + f_EUTRA_SS_CommonCellConfig(p_SourceSCellId, cas_ServingCellRelease_REQ(p_SourceSCellId, cs_TimingInfo_Now, p_CnfFlag)); + + // configure Default grant configuration on S cell + f_EUTRA_SS_CommonCellConfig(p_SourceSCellId, cas_ULGrantAllocation_REQ(p_SourceSCellId, cs_TimingInfo_Now, -, cs_PUCCH_Synch_None, -, p_CnfFlag)); + } + } + + /* + * @desc Assign the CellInformation of the parameterized cell to the default 2TX parameters + * @param p_CellId + * @status + */ + function f_EUTRA_AntennaInfoR10_Config (EUTRA_CellId_Type p_CellId, + template (value) TimingInfo_Type p_TimingInfo, + template (value) AntennaInfoDedicated_r10 p_AntennaInfoDedicated := cs_AntennaInfoDedicated_r10, + template (omit) AntennaInfoUL_r10 p_AntennaInfoUL := cs_AntennaInfoUL_r10) runs on EUTRA_PTC + { + f_EUTRA_SS_CommonCellConfig(p_CellId, cas_CellConfig_AntennaInfor10_REQ(p_CellId, p_TimingInfo, p_AntennaInfoDedicated, p_AntennaInfoUL)); + } +} diff --git a/LTE_A_IWD_14wk37/LTE_A/Common/EUTRA_Measurement_Templates_CA.ttcn b/LTE_A_IWD_14wk37/LTE_A/Common/EUTRA_Measurement_Templates_CA.ttcn new file mode 100644 index 0000000..5e3fb4d --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/Common/EUTRA_Measurement_Templates_CA.ttcn @@ -0,0 +1,264 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-05 19:27:02 +0200 (Fri, 05 Sep 2014) $ +// $Rev: 12079 $ +/******************************************************************************/ +module EUTRA_Measurement_Templates_CA +{ + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_Measurement_Templates all; + + type ReportConfigToAddMod.reportConfig ReportConfigToAddMod_ReportConfig_Type; /* @status APPROVED (LTE_A) */ + + template (value) ReportConfigToAddMod_ReportConfig_Type cs_ReportConfig_reportConfigEUTRA_eventA6(A3_Offset_Type p_A6_Offset, + boolean p_ReportOnLeave, + integer p_Hysteresis, + TimeToTrigger p_TimeToTrigger, + ReportConfigEUTRA.triggerQuantity p_TriggerQuantity, + ReportConfigEUTRA.reportQuantity p_ReportQuantity, + integer p_MaxReportCells, + ReportInterval p_ReportInterval, + ReportConfigEUTRA.reportAmount p_ReportAmount) := + { /* @status APPROVED (LTE_A) */ + reportConfigEUTRA := { + triggerType := { + event := { + eventId := { + eventA6_r10 := { + a6_Offset_r10 := p_A6_Offset, + a6_ReportOnLeave_r10 := p_ReportOnLeave + } + }, + hysteresis := p_Hysteresis, + timeToTrigger := p_TimeToTrigger + } + }, + triggerQuantity := p_TriggerQuantity, + reportQuantity := p_ReportQuantity, + maxReportCells := p_MaxReportCells, + reportInterval := p_ReportInterval, + reportAmount := p_ReportAmount, + si_RequestForHO_r9 := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + ue_RxTxTimeDiffPeriodical_r9 := omit, /* @sic R5s110176 BASELINE MOVING 2011 sic@ */ + includeLocationInfo_r10 := omit, /* @sic R5s120178 BASELINE MOVING 2012 sic@ */ + reportAddNeighMeas_r10 := omit /* @sic R5s120178 BASELINE MOVING 2012 sic@ */ + } + }; + + template (value) ReportConfigToAddMod_ReportConfig_Type cs_ReportConfigEUTRA_A6_Def := + /* @status APPROVED (LTE_A) */ + cs_ReportConfig_reportConfigEUTRA_eventA6( 0, false, 0, ms640, rsrp, both, 1, ms5120, r2 ); + + template (value) ReportConfigToAddMod_ReportConfig_Type cs_ReportConfigEUTRA_A5_Def := + /* @status APPROVED (LTE_A) */ + cs_ReportConfig_reportConfigEUTRA_eventA5_RSRP( -76, -88, 0, ms2560, rsrp, both, 1, ms1024, infinity_ ); //@sic R5-133620 R5-134679 sic@ + + //------------------------------------------------ + //Table : ReportConfigEUTRA-A3 + template (value) ReportConfigToAddMod_ReportConfig_Type cs_ReportConfigEUTRA_A3_8223 := + /* @status APPROVED (LTE_A) */ + cs_ReportConfig_reportConfigEUTRA_eventA3( -24, true, 0, ms640, rsrp, both, 1, ms1024, r1); //@sic R5s130404 sic@ + //------------------------------------------------ + //Table : ReportConfigEUTRA-A3 + template (value) ReportConfigToAddMod_ReportConfig_Type cs_ReportConfigEUTRA_A3_82419 := + cs_ReportConfig_reportConfigEUTRA_eventA3( -24, true, 0, ms5120, rsrp, both, 1, ms1024, r1); //@sic R5-134782 sic@ + +template (value) ReportConfigToAddMod_ReportConfig_Type cs_ReportConfigEUTRA_A3_82423 := + cs_ReportConfig_reportConfigEUTRA_eventA3( 0, false, 0, ms2560, rsrp, both, 1, ms1024, r1); + + template (value) ReportConfigToAddMod.reportConfig cds_ReportConfig_reportConfigEUTRA_eventA3_CA(A3_Offset_Type p_A3_Offset, + boolean p_ReportOnLeave, + integer p_Hysteresis, + TimeToTrigger p_TimeToTrigger, + ReportConfigEUTRA.triggerQuantity p_TriggerQuantity, + ReportConfigEUTRA.reportQuantity p_ReportQuantity, + integer p_MaxReportCells, + ReportInterval p_ReportInterval, + ReportConfigEUTRA.reportAmount p_ReportAmount) + modifies cs_ReportConfig_reportConfigEUTRA_eventA3 := + { + reportConfigEUTRA := { + reportAddNeighMeas_r10 := setup + } + }; + + template (value) ReportConfigToAddMod_ReportConfig_Type cs_ReportConfigEUTRA_A2_CA_Def := + /* @status */ + cds_ReportConfig_reportConfigEUTRA_eventA3_CA( 0, false, 6, ms640, rsrp, both, 1, ms1024, r1 ); + + template (value) MeasConfig cs_Measurement_Config_A5_InterFreq_CA(ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq1, + AllowedMeasBandwidth p_MeasurementBandwidth1, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq2, + AllowedMeasBandwidth p_MeasurementBandwidth2, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq3, + AllowedMeasBandwidth p_MeasurementBandwidth3, + MeasObjectId p_MeasObjectId, //@sic R5-144517 sic@ + MeasObjectId p_MeasObjectId_2, + MeasObjectId p_MeasObjectId_3, + template (omit) MeasGapConfig p_MeasGapConfig := omit, + template (value) ReportConfigToAddMod_ReportConfig_Type p_ReportConfig := cs_ReportConfigEUTRA_A5_Def) := + + /* @status APPROVED (LTE_A) */ + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_3Entries(p_MeasObjectId, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq1, p_MeasurementBandwidth1), + p_MeasObjectId_2, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq2, p_MeasurementBandwidth2), + p_MeasObjectId_3, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq3, p_MeasurementBandwidth3)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_A5, p_ReportConfig), + omit, + cs_MeasIdToAddModList_1Entry( 1,p_MeasObjectId_3, tsc_IdReportConfig_A5 ), + -, + p_MeasGapConfig); + + template (value) MeasConfig cs_Measurement_Config_A3_InterFreq_CA(ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq1, + AllowedMeasBandwidth p_MeasurementBandwidth1, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq2, + AllowedMeasBandwidth p_MeasurementBandwidth2, + MeasObjectId p_MeasObjectId_2, //@sic R5s130404 sic@ + template (omit) MeasGapConfig p_MeasGapConfig := omit, + MeasObjectId p_MeasObjectId_1 := tsc_IdMeasObject_f1, //@sic R5s144683 sic@ + template (value) ReportConfigToAddMod_ReportConfig_Type p_ReportConfig := cs_ReportConfigEUTRA_A3_8223 ) := + + /* @status APPROVED (LTE_A) */ + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_2Entries(p_MeasObjectId_1, //@sic R5s144683 sic@ + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq1, p_MeasurementBandwidth1), + p_MeasObjectId_2, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq2, p_MeasurementBandwidth2)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_A3, p_ReportConfig), + omit, + cs_MeasIdToAddModList_1Entry( 1, p_MeasObjectId_2, tsc_IdReportConfig_A3 ), + -, + p_MeasGapConfig); + + template (value) MeasConfig cs_Measurement_Config_A3_IntraFreq_CA(ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq1, + AllowedMeasBandwidth p_MeasurementBandwidth1, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq2, + AllowedMeasBandwidth p_MeasurementBandwidth2, + MeasObjectId p_MeasObjectId_2, //@sic R5s130422 sic@ + template (omit) MeasGapConfig p_MeasGapConfig := omit, + MeasObjectId p_MeasObjectId_1 := tsc_IdMeasObject_f1, //@sic R5s144680 sic@ + template (value) ReportConfigToAddMod_ReportConfig_Type p_ReportConfig := cs_508_ReportConfigEUTRA_A3) := + + /* @status APPROVED (LTE_A) */ + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_2Entries(p_MeasObjectId_1, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq1, p_MeasurementBandwidth1), + p_MeasObjectId_2, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq2, p_MeasurementBandwidth2)), + omit, + cs_ReportConfigToAddModList_1Entry(tsc_IdReportConfig_A3, p_ReportConfig), + omit, + cs_MeasIdToAddModList_1Entry( 1, p_MeasObjectId_1, tsc_IdReportConfig_A3 ), //@sic R5-130845 R5-131022 sic@ + -, + p_MeasGapConfig); + + template (value) MeasConfig cs_Measurement_Config_A3_InterFreq_CA_HO(ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq1, + AllowedMeasBandwidth p_MeasurementBandwidth1, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq2, + AllowedMeasBandwidth p_MeasurementBandwidth2, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq3, + AllowedMeasBandwidth p_MeasurementBandwidth3, + MeasObjectId p_MeasObjectId_2, //@sic R5s130422 sic@ + MeasObjectId p_MeasObjectId_3, //@sic R5s130422 sic@ + template (omit) MeasGapConfig p_MeasGapConfig := omit) := + /* @status APPROVED (LTE_A) */ + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_3Entries(tsc_IdMeasObject_f2, //@sic R5s131016 sic@ + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq1, p_MeasurementBandwidth1), + p_MeasObjectId_2, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq2, p_MeasurementBandwidth2), + p_MeasObjectId_3, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq3, p_MeasurementBandwidth3)), + omit, + cs_ReportConfigToAddModList_1Entry(3, cs_ReportConfig_reportConfigEUTRA_eventA3( 0, false, 0, ms2560, rsrp, both, 1, ms1024, r1 )), //@sic R5-140779 sic@ + omit, + cs_MeasIdToAddModList_1Entry( 1, p_MeasObjectId_3, 3 ), + -, + p_MeasGapConfig); + + template (value) MeasConfig cs_Measurement_Config_A2_InterFreq_CA(ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq1, + AllowedMeasBandwidth p_MeasurementBandwidth1, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq2, + AllowedMeasBandwidth p_MeasurementBandwidth2, + MeasObjectId p_MeasObjectId, //@sic R5s144519 sic@ + MeasObjectId p_MeasObjectId_2, //@sic R5s130397 sic@ + template (omit) MeasGapConfig p_MeasGapConfig := omit, + template (value) ReportConfigToAddMod_ReportConfig_Type p_ReportConfig := cs_ReportConfigEUTRA_A3_8223) := + /* @status APPROVED (LTE_A) */ + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_2Entries(p_MeasObjectId, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq1, p_MeasurementBandwidth1), + p_MeasObjectId_2, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq2, p_MeasurementBandwidth2,-,-,-,-,sf512)), //@sic R5s140009 sic@ + omit, + cs_ReportConfigToAddModList_1Entry(2, p_ReportConfig), + omit, + cs_MeasIdToAddModList_2Entries( 1, p_MeasObjectId, tsc_IdReportConfig_A2, 2, p_MeasObjectId_2, tsc_IdReportConfig_A2 ), + -, + p_MeasGapConfig); + + template (value) MeasConfig cs_Measurement_Config_A6(ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq1, + AllowedMeasBandwidth p_MeasurementBandwidth1, + ARFCN_ValueEUTRA p_EUTRA_DL_CarrierFreq2, + AllowedMeasBandwidth p_MeasurementBandwidth2, + MeasObjectId p_MeasObjectId_1, //@sic R5s144680 sic@ + MeasObjectId p_MeasObjectId_2, //@sic R5s130400 sic@ + template (omit) MeasGapConfig p_MeasGapConfig := omit) := + /* @status APPROVED (LTE_A) */ + cs_MeasConfig(omit, + cs_MeasObjectToAddModList_2Entries(p_MeasObjectId_1, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq1, p_MeasurementBandwidth1), + p_MeasObjectId_2, + cs_MeasObject_measObjectEUTRA_Common(p_EUTRA_DL_CarrierFreq2, p_MeasurementBandwidth2)), + omit, + cs_ReportConfigToAddModList_1Entry(6, cs_ReportConfigEUTRA_A6_Def), + omit, + cs_MeasIdToAddModList_1Entry( 1, p_MeasObjectId_2, 6 ), + -, + p_MeasGapConfig); + + template (present) MeasResultServFreqList_r10 cr_MeasResultServFreqList_NeighCell(ServCellIndex_r10 p_ServCellIndex, + template RSRP_Range p_RsrpResult, + template RSRQ_Range p_RsrqResult, + PhysCellId p_PhysCellId, + template RSRP_Range p_RsrpResultNcell, + template RSRQ_Range p_RsrqResultNcell) := + { /* @status APPROVED (LTE_A) */ + { + servFreqId_r10 := p_ServCellIndex, + measResultSCell_r10 := { + rsrpResultSCell_r10 := p_RsrpResult, + rsrqResultSCell_r10 := p_RsrqResult + }, + measResultBestNeighCell_r10 := { + physCellId_r10 := p_PhysCellId , + rsrpResultNCell_r10 := p_RsrpResultNcell, + rsrqResultNCell_r10 := p_RsrqResultNcell + } + } + }; + + template (present) MeasResultServFreqList_r10 cr_MeasResultServFreqList(ServCellIndex_r10 p_ServCellIndex, + template RSRP_Range p_RsrpResult, + template RSRQ_Range p_RsrqResult) := + { /* @status APPROVED (LTE_A) */ + { + servFreqId_r10 := p_ServCellIndex, + measResultSCell_r10 := { + rsrpResultSCell_r10 := p_RsrpResult, + rsrqResultSCell_r10 := p_RsrqResult + }, + measResultBestNeighCell_r10 := omit + } + }; +} diff --git a/LTE_A_IWD_14wk37/LTE_A/Common/EUTRA_RRC_Templates_CA.ttcn b/LTE_A_IWD_14wk37/LTE_A/Common/EUTRA_RRC_Templates_CA.ttcn new file mode 100644 index 0000000..df18658 --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/Common/EUTRA_RRC_Templates_CA.ttcn @@ -0,0 +1,493 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 12:15:34 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12147 $ +/******************************************************************************/ + +module EUTRA_RRC_Templates_CA { + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from EUTRA_CommonDefs all; + import from EUTRA_RRC_Templates all; + import from EUTRA_SysInfo_Templates all; + + type RadioResourceConfigCommonSCell_r10.nonUL_Configuration_r10.dl_Bandwidth_r10 SCell_DL_Bandwidth_Type; /* @status APPROVED (LTE_A) */ + type RadioResourceConfigCommonSCell_r10.ul_Configuration_r10 CommonSCell_UL_Configuration_Type; /* @status APPROVED (LTE_A) */ + type PhysicalConfigDedicatedSCell_r10.ul_Configuration_r10 DedicatedSCell_UL_Configuration_Type; /* @status APPROVED (LTE_A) */ + type PhysicalConfigDedicated.additionalSpectrumEmissionCA_r10 AdditionalSpectrumEmissionCA_r10_Type; /* @status APPROVED (LTE_A) */ + type PhysicalConfigDedicated.antennaInfo_r10 AntennaInfo_r10_Type; /* @status APPROVED (LTE_A) */ + + const STAG_Id_r11 tsc_STAG_ID1 := 1; + + template (value) AntennaInfoDedicated_r10 cs_AntennaInfoDedicated_r10 := + { /* @status APPROVED (LTE_A) */ + transmissionMode_r10 := tm1, /* Transmission modes defined in TS 36.213; tm1: Single-antenna port */ + codebookSubsetRestriction_r10 := omit, /* omit for tm1 */ + ue_TransmitAntennaSelection := { + release := NULL + } + }; + template (value) AntennaInfoDedicated_r10 cds_AntennaInfoDedicated_TM2_r10 modifies cs_AntennaInfoDedicated_r10 := + { /* @status */ + transmissionMode_r10 := tm2 + }; + template (value) AntennaInfoDedicated_r10 cds_AntennaInfoDedicated_TM3_r10 modifies cs_AntennaInfoDedicated_r10 := + { /* @status */ + transmissionMode_r10 := tm3, + codebookSubsetRestriction_r10 := '11'B + }; + template (value) AntennaInfo_r10_Type cs_AntennaInfo_r10_Explicit (template (value) AntennaInfoDedicated_r10 p_AntennaInfoDedicated_r10) := + { + explicitValue_r10 := p_AntennaInfoDedicated_r10 + }; + + template (value) SoundingRS_UL_ConfigDedicated cs_508_SoundingRsUl_ConfigDedicated_Rel := + { /* 36.331 default as per clause 9.2.4*/ + /* @status APPROVED (LTE_A) */ + release := NULL + }; + + //---------------------------------------------------------------------------- + // RadioResourceConfigCommonSCell and related + + template (value) UplinkPowerControlCommonSCell_r10 cs_UplinkPowerControlCommonSCell := + { /* acc. to 36.508 Table 4.6.3-25A */ + /* @status APPROVED (LTE_A) */ + p0_NominalPUSCH_r10 := -85, + alpha_r10 := al08 + }; + + template (value) CommonSCell_UL_Configuration_Type cs_RadioResourceConfigCommonSCell_UL_Configuration_DEFAULT(PUSCH_HoppingOffset_Type p_PuschHoppingOffset, + template (value) SoundingRS_UL_ConfigCommon p_SoundingRS_UL_ConfigCommon) := + { /* acc. to 36.508 Table 4.6.3-13A with condition UL CA */ + /* @status APPROVED (LTE_A) */ + ul_FreqInfo_r10 := { + ul_CarrierFreq_r10 := omit, + ul_Bandwidth_r10 := omit, + additionalSpectrumEmissionSCell_r10 := 1 + }, + p_Max_r10 := omit, + uplinkPowerControlCommonSCell_r10 := cs_UplinkPowerControlCommonSCell, + soundingRS_UL_ConfigCommon_r10 := p_SoundingRS_UL_ConfigCommon, + ul_CyclicPrefixLength_r10 := len1, + prach_ConfigSCell_r10 := omit, + pusch_ConfigCommon_r10 := cs_508_PUSCH_ConfigCommon_Default(p_PuschHoppingOffset) + }; + + template (value) RadioResourceConfigCommonSCell_r10 cs_508_RadioResourceConfigCommonSCell_r10_DEFAULT(SCell_DL_Bandwidth_Type p_SCell_DL_Bandwidth, + P_b_Type p_P_b, + template (omit) CommonSCell_UL_Configuration_Type p_SCell_UL_Configuration := omit, + template (omit) TDD_Config p_TDD_Config := omit, + template (value) AntennaInfoCommon p_AntennaInfoCommon := cs_AntennaInfoCommon_1Port, + //@sic new CA-Enh test development sic@ + template (omit) RACH_ConfigCommonSCell_r11 p_RACH_ConfigCommonSCell_r11 := omit, + template (omit) PRACH_Config p_PRACH_Config_SCell := omit) := + { /* acc. to 36.508 Table 4.6.3-13A */ + /* @status APPROVED (LTE_A) */ + nonUL_Configuration_r10 := { + dl_Bandwidth_r10 := p_SCell_DL_Bandwidth, + antennaInfoCommon_r10 := p_AntennaInfoCommon, + mbsfn_SubframeConfigList_r10 := omit, + phich_Config_r10 := cs_508_PHICH_Config_Default, + pdsch_ConfigCommon_r10 := cs_508_PDSCH_ConfigCommon_Default(p_P_b), + tdd_Config_r10 := p_TDD_Config + }, + ul_Configuration_r10 := p_SCell_UL_Configuration, + ul_CarrierFreq_v1090 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + rach_ConfigCommonSCell_r11 := p_RACH_ConfigCommonSCell_r11, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + prach_ConfigSCell_r11 := p_PRACH_Config_SCell, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + tdd_Config_v1130 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + uplinkPowerControlCommonSCell_v1130 := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + }; + + //---------------------------------------------------------------------------- + // RadioResourceConfigDedicatedSCell and related + + template (value) UplinkPowerControlDedicatedSCell_r10 cs_UplinkPowerControlDedicatedSCell_r10_DEFAULT := + { /* acc. to 36.508 Table 4.6.3-26B */ + /* @status APPROVED (LTE_A) */ + p0_UE_PUSCH_r10 := 0, + deltaMCS_Enabled_r10 := en0, + accumulationEnabled_r10 := true, + pSRS_Offset_r10 := 7, + pSRS_OffsetAp_r10 := 7, + filterCoefficient_r10 := fc4, + pathlossReferenceLinking_r10 := sCell + }; + + template (value) CQI_ReportPeriodic_r10 cs_CQI_ReportPeriodic_r10_CommonSetup(integer p_Cqi_pmi_ConfigIndex, + template (omit) integer p_Ri_ConfigIndex := omit) := //@sic R5-142845 sic@ + { /* acc. to 36.508 Table 4.6.3-2AC */ + /* @status APPROVED (LTE_A) */ + setup := { + cqi_PUCCH_ResourceIndex_r10 := 0, + cqi_PUCCH_ResourceIndexP1_r10 := omit, + cqi_pmi_ConfigIndex := p_Cqi_pmi_ConfigIndex, + cqi_FormatIndicatorPeriodic_r10 := { + widebandCQI_r10 := { + csi_ReportMode_r10 := omit + } + }, + ri_ConfigIndex := p_Ri_ConfigIndex, + simultaneousAckNackAndCQI := false, + cqi_Mask_r9 := omit, + csi_ConfigIndex_r10 := omit + } + }; + + //@sic R5-142845 sic@ + template (value) CQI_ReportPeriodic_r10 cs_CQI_ReportPeriodic_r10_DEFAULT_FDD := cs_CQI_ReportPeriodic_r10_CommonSetup(25); /* @status APPROVED (LTE_A) */ + //@sic R5-142845 sic@ + template (value) CQI_ReportPeriodic_r10 cs_CQI_ReportPeriodic_r10_DEFAULT_TDD := cs_CQI_ReportPeriodic_r10_CommonSetup(24); /* @status APPROVED (LTE_A) */ + + template (value) CQI_ReportAperiodic_r10 cs_CQI_ReportAPeriodic_r10_DEFAULT := + { /* acc. to 36.508 Table 4.6.3-1A */ + /* @status APPROVED (LTE_A) */ + setup :={ + cqi_ReportModeAperiodic_r10 := rm30, + aperiodicCSI_Trigger_r10 := omit + + } + }; + + template (value) CQI_ReportConfig_r10 cs_CQI_ReportConfig_r10_DEFAULT (template (omit) CQI_ReportPeriodic_r10 p_CQI_ReportPeriodic_r10 := omit) := + { /* acc. to 36.508 Table 4.6.3-2AA */ + /* @status APPROVED (LTE_A) */ + cqi_ReportAperiodic_r10 := cs_CQI_ReportAPeriodic_r10_DEFAULT, + nomPDSCH_RS_EPRE_Offset := 0, + cqi_ReportPeriodic_r10 := p_CQI_ReportPeriodic_r10, + pmi_RI_Report_r9 := omit, + csi_SubframePatternConfig_r10 := omit + }; + + template (value) CQI_ReportConfigSCell_r10 cs_CQI_ReportConfigSCell_r10(template (omit) CQI_ReportPeriodic_r10 p_CQI_ReportPeriodic_r10 := omit) := + { /* acc. to 36.508 Table 4.6.3-2AB */ + /* @status APPROVED (LTE_A) */ + cqi_ReportModeAperiodic_r10 := rm30, + nomPDSCH_RS_EPRE_Offset_r10 := 0, + cqi_ReportPeriodicSCell_r10 := p_CQI_ReportPeriodic_r10, + pmi_RI_Report_r10 := omit + }; + + template (value) DedicatedSCell_UL_Configuration_Type cs_RadioResourceConfigDedicatedSCell_UL_Configuration_DEFAULT(template (omit) CQI_ReportPeriodic_r10 p_CQI_ReportPeriodic_r10 := omit, + template (omit) AntennaInfoUL_r10 p_AntennaInfoUL_r10 := omit, + template (omit) SoundingRS_UL_ConfigDedicated p_SoundingRS_UL_ConfigDedicated:= omit, + template (omit) SoundingRS_UL_ConfigDedicated_v1020 p_SoundingRS_UL_ConfigDedicated_v1020 := omit) := + { /* acc. to 36.508 Table 4.6.3-6A with condition UL CA */ + /* @status APPROVED (LTE_A) */ + antennaInfoUL_r10 := p_AntennaInfoUL_r10, + pusch_ConfigDedicatedSCell_r10 := omit, + uplinkPowerControlDedicatedSCell_r10 := cs_UplinkPowerControlDedicatedSCell_r10_DEFAULT, + cqi_ReportConfigSCell_r10 := cs_CQI_ReportConfigSCell_r10(p_CQI_ReportPeriodic_r10), + soundingRS_UL_ConfigDedicated_r10 := p_SoundingRS_UL_ConfigDedicated, + soundingRS_UL_ConfigDedicated_v1020 := p_SoundingRS_UL_ConfigDedicated_v1020, + soundingRS_UL_ConfigDedicatedAperiodic_r10 := omit + }; + + template (value) PhysicalConfigDedicatedSCell_r10 cs_PhysicalConfigDedicatedSCell_r10_DEFAULT(template (omit) DedicatedSCell_UL_Configuration_Type p_SCell_UL_Configuration := omit, + template (value) AntennaInfoDedicated_r10 p_AntennaInfoDedicated := cs_AntennaInfoDedicated_r10) := + { /* acc. to 36.508 Table 4.6.3-6A */ + /* @status APPROVED (LTE_A) */ + nonUL_Configuration_r10 := { + antennaInfo_r10 := p_AntennaInfoDedicated, //@sic R5-140928 sic@ + crossCarrierSchedulingConfig_r10 := omit, + csi_RS_Config_r10 := omit, + pdsch_ConfigDedicated_r10 := cs_508_PDSCH_ConfigDedicated_Default + }, + ul_Configuration_r10 := p_SCell_UL_Configuration, + csi_RS_ConfigNZPToReleaseList_r11 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + csi_RS_ConfigNZPToAddModList_r11 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + csi_RS_ConfigZPToReleaseList_r11 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + csi_RS_ConfigZPToAddModList_r11 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + epdcch_Config_r11 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + pdsch_ConfigDedicated_v1130 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + cqi_ReportConfig_v1130 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + pusch_ConfigDedicated_v1130 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + uplinkPowerControlDedicatedSCell_v1130 := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + }; + + template (value) MAC_MainConfigSCell_r11 cs_P_MAC_MainConfigSCell_r11 (template (value) STAG_Id_r11 p_STAG_Id_r11) := + { + stag_Id_r11 := p_STAG_Id_r11 + }; + + + template (value) RadioResourceConfigDedicatedSCell_r10 cs_RadioResourceConfigDedicatedSCell_r10(template (value) PhysicalConfigDedicatedSCell_r10 p_PhysicalConfigDedicatedSCell, + template (omit) MAC_MainConfigSCell_r11 p_MAC_MainConfigSCell_r11 := omit) := //@sic new CA-Enh test development sic@ + { /* @status APPROVED (LTE_A) */ + physicalConfigDedicatedSCell_r10 := p_PhysicalConfigDedicatedSCell, + mac_MainConfigSCell_r11 := p_MAC_MainConfigSCell_r11 /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + }; + + template (value) RadioResourceConfigDedicatedSCell_r10 cs_RadioResourceConfigDedicatedSCell_r10_DEFAULT(template (omit) DedicatedSCell_UL_Configuration_Type p_SCell_UL_Configuration := omit) := + /* acc. to 36.508 Table 4.6.3-19AA */ + cs_RadioResourceConfigDedicatedSCell_r10(cs_PhysicalConfigDedicatedSCell_r10_DEFAULT(p_SCell_UL_Configuration)); + + //---------------------------------------------------------------------------- + + template (value) SCellToAddMod_r10 cs_SCellToAddMod_r10(SCellIndex_r10 p_SCellIndex, + PhysCellId p_PhysCellId, + ARFCN_ValueEUTRA p_ARFCN_ValueEUTRA, + template (omit) RadioResourceConfigCommonSCell_r10 p_RadioResourceConfigCommonSCell := omit, + template (omit) RadioResourceConfigDedicatedSCell_r10 p_RadioResourceConfigDedicatedSCell := omit) := + { /* acc. to 36.508 Table 4.6.3-19D */ + /* @status APPROVED (LTE_A) */ + sCellIndex_r10 := p_SCellIndex, + cellIdentification_r10 := { + physCellId_r10 := p_PhysCellId, + dl_CarrierFreq_r10 := p_ARFCN_ValueEUTRA + }, + radioResourceConfigCommonSCell_r10 := p_RadioResourceConfigCommonSCell, + radioResourceConfigDedicatedSCell_r10 := p_RadioResourceConfigDedicatedSCell, + dl_CarrierFreq_v1090 := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + }; + + template (value) SCellToAddMod_r10 cs_SCellToMod_r10(SCellIndex_r10 p_SCellIndex, + template (omit) RadioResourceConfigDedicatedSCell_r10 p_RadioResourceConfigDedicatedSCell := omit) := + { /* acc. to 36.508 Table 4.6.3-19D */ + /* @status APPROVED (LTE_A) */ + sCellIndex_r10 := p_SCellIndex, + cellIdentification_r10 :=omit, + radioResourceConfigCommonSCell_r10 := omit, + radioResourceConfigDedicatedSCell_r10 := p_RadioResourceConfigDedicatedSCell, + dl_CarrierFreq_v1090 := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + }; + + template (value) SCellToAddModList_r10 cs_SCellToAddModList_OneSCell(template (value) SCellToAddMod_r10 p_SCellToAddMod) := { p_SCellToAddMod }; /* @status APPROVED (LTE_A) */ + + template (value) RRCConnectionReconfiguration_v890_IEs cs_RRCConnectionReconfiguration_SCell_AddMod_IEs(template (omit) SCellToAddModList_r10 p_SCellToAddModList := omit, + template (omit) SCellToReleaseList_r10 p_SCellToReleaseList := omit) := + { /* rel-10 extension acc. to 36.508 Table 4.6.1-8 with condition SCell_AddMod */ + /* @status APPROVED (LTE_A) */ + lateNonCriticalExtension := omit, + nonCriticalExtension := { + otherConfig_r9 := omit, + fullConfig_r9 := omit, + nonCriticalExtension := { + sCellToReleaseList_r10 := p_SCellToReleaseList, + sCellToAddModList_r10 := p_SCellToAddModList, + nonCriticalExtension := omit + } + } + }; + + template (value) MAC_MainConfig_v1020_Type cs_508_MAC_MainConfig_v1020_SCell_AddMod ( MAC_MainConfig_ScellDeactivationTimer_Type p_ScellDeactivationTimer :=rf32) := + { /* @status APPROVED (LTE_A) */ + //@sic R5s140295 sic@ + sCellDeactivationTimer_r10 := p_ScellDeactivationTimer, + extendedBSR_Sizes_r10 := setup, + extendedPHR_r10 := setup + }; + + template (value) MAC_MainConfig_Type cs_MAC_MainConfig_SCell_AddMod (TimeAlignmentTimer p_TimeAlignmentTimer := sf750, //@sic new CA-enh test development sic@ + template (omit) STAG_ToReleaseList_r11 p_STAG_ToReleaseList := omit, + template (omit) STAG_ToAddModList_r11 p_STAG_ToAddModList := omit, + MAC_MainConfig_ScellDeactivationTimer_Type p_ScellDeactivationTimer :=rf32):= + { /* @status APPROVED (LTE_A) */ + //@sic R5s140295 sic@ + explicitValue := { + ul_SCH_Config := omit, + drx_Config := omit, + timeAlignmentTimerDedicated := p_TimeAlignmentTimer, // Mandatory present + phr_Config := omit, + sr_ProhibitTimer_r9 := omit, + mac_MainConfig_v1020 := cs_508_MAC_MainConfig_v1020_SCell_AddMod (p_ScellDeactivationTimer), + stag_ToReleaseList_r11 := p_STAG_ToReleaseList, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + stag_ToAddModList_r11 := p_STAG_ToAddModList, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + drx_Config_v1130 := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + } + }; + + template (value) UplinkPowerControlDedicated_v1020 cs_UplinkPowerControlDedicated_v1020_Def := + { /* @status APPROVED (LTE_A) */ + deltaTxD_OffsetListPUCCH_r10 := omit, + pSRS_OffsetAp_r10 := omit + }; + + template (value) AdditionalSpectrumEmissionCA_r10_Type cs_AdditionalSpectrumEmissionCA_r10_Def := + { /* Default values according to 36.508 cl. 4.8.2.1.6-1for condition SCell_AddMod and Inter-B CA and UL CA */ + /* @status APPROVED (LTE_A) */ + setup :={ + additionalSpectrumEmissionPCell_r10 := 1} + }; + + template (value) PhysicalConfigDedicated cs_508_PhysicalConfigDedicated_Default_SCell_AddMod(template (value) PUCCH_ConfigDedicated_v1020 p_PUCCH_ConfigDedicated_v1020, + template (omit) AdditionalSpectrumEmissionCA_r10_Type p_AdditionalSpectrumEmissionCA_r10 := omit, + template (omit) CQI_ReportPeriodic_r10 p_CQI_ReportPeriodic_r10 :=omit, + template (omit) UplinkPowerControlDedicated_v1020 p_UplinkPowerControlDedicated_v1020 := omit, + template (omit) AntennaInfo_r10_Type p_AntennaInfo_r10 := omit) := + { /* Default values according to 36.508 cl. 4.8.2.1.6 Table 4.8.2.1.6-1 for condition SCell_AddMod */ + /* @status APPROVED (LTE_A) */ + pdsch_ConfigDedicated := omit, + pucch_ConfigDedicated := omit, + pusch_ConfigDedicated := omit, + uplinkPowerControlDedicated := omit, + tpc_PDCCH_ConfigPUCCH := omit, + tpc_PDCCH_ConfigPUSCH := omit, + cqi_ReportConfig := omit, + soundingRS_UL_ConfigDedicated := omit, + antennaInfo := omit, + schedulingRequestConfig := omit, + cqi_ReportConfig_v920 := omit, + antennaInfo_v920 := omit, + antennaInfo_r10 := p_AntennaInfo_r10, //@sic 8.2.4.16 coding sic@ + antennaInfoUL_r10 := omit, + cif_Presence_r10 := false, //@sic R5-133714 sic@ + cqi_ReportConfig_r10 := cs_CQI_ReportConfig_r10_DEFAULT(p_CQI_ReportPeriodic_r10), + csi_RS_Config_r10 := omit, + pucch_ConfigDedicated_v1020 := p_PUCCH_ConfigDedicated_v1020, + pusch_ConfigDedicated_v1020 := omit, + schedulingRequestConfig_v1020 := omit, + soundingRS_UL_ConfigDedicated_v1020 := omit, + soundingRS_UL_ConfigDedicatedAperiodic_r10 := omit, + uplinkPowerControlDedicated_v1020 := p_UplinkPowerControlDedicated_v1020, + additionalSpectrumEmissionCA_r10 := p_AdditionalSpectrumEmissionCA_r10, + csi_RS_ConfigNZPToReleaseList_r11 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + csi_RS_ConfigNZPToAddModList_r11 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + csi_RS_ConfigZPToReleaseList_r11 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + csi_RS_ConfigZPToAddModList_r11 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + epdcch_Config_r11 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + pdsch_ConfigDedicated_v1130 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + cqi_ReportConfig_v1130 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + pucch_ConfigDedicated_v1130 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + pusch_ConfigDedicated_v1130 := omit, /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + uplinkPowerControlDedicated_v1130 := omit /* @sic R5s130195 BASELINE MOVING 2013 sic@ */ + }; + + template (value) DL_DCCH_Message cs_508_RRCConnectionReconfiguration_SCell_AddModRelease(RRC_TransactionIdentifier p_RRC_TI, + template (value) SCellToAddMod_r10 p_SCellToAddMod, + template (value) PUCCH_ConfigDedicated_v1020 p_PUCCH_ConfigDedicated_v1020, + template (omit) SCellToReleaseList_r10 p_SCellToReleaseList := omit, + TimeAlignmentTimer p_TimeAlignmentTimer := sf750, + template (omit) AdditionalSpectrumEmissionCA_r10_Type p_AdditionalSpectrumEmissionCA_r10 := omit, + template (omit) MeasConfig p_MeasConfig := omit,//@sic new CA-enh test development sic@ + template (omit) STAG_ToReleaseList_r11 p_STAG_ToReleaseList := omit, + template (omit) STAG_ToAddModList_r11 p_STAG_ToAddModList := omit, + MAC_MainConfig_ScellDeactivationTimer_Type p_ScellDeactivationTimer :=rf32, //@sic R5s140010 R5s140295 sic@ + template (omit) CQI_ReportPeriodic_r10 p_CQI_ReportPeriodic_r10 :=omit, + template (omit) UplinkPowerControlDedicated_v1020 p_UplinkPowerControlDedicated_v1020 := omit, + template (omit) AntennaInfo_r10_Type p_AntennaInfo_r10 := omit) := + + + /* acc. to 36.508 Table 4.6.1-8 with condition SCell_AddMod + To be used when atleast 1 scell will remain configured after the message */ + /* @status APPROVED (LTE_A) */ + cs_RRCConnectionReconfiguration_Common(p_RRC_TI, + p_MeasConfig, //@sic R5s140010 sic@ + omit, + cs_RadioResourceConfigDedicated_SrbDrbConfig(-, + -, + cs_MAC_MainConfig_SCell_AddMod(p_TimeAlignmentTimer,p_STAG_ToReleaseList,p_STAG_ToAddModList, p_ScellDeactivationTimer), + cs_508_PhysicalConfigDedicated_Default_SCell_AddMod(p_PUCCH_ConfigDedicated_v1020, p_AdditionalSpectrumEmissionCA_r10,p_CQI_ReportPeriodic_r10,p_UplinkPowerControlDedicated_v1020,p_AntennaInfo_r10)), //@sic 8.2.4.16 coding sic@ + omit, + cs_RRCConnectionReconfiguration_SCell_AddMod_IEs(cs_SCellToAddModList_OneSCell(p_SCellToAddMod), p_SCellToReleaseList)); + + template (value) DL_DCCH_Message cs_RRCConnectionReconfiguration_StagParamModify(RRC_TransactionIdentifier p_RRC_TI, + TimeAlignmentTimer p_TimeAlignmentTimer := sf750, + template (omit) STAG_ToReleaseList_r11 p_STAG_ToReleaseList := omit, + template (omit) STAG_ToAddModList_r11 p_STAG_ToAddModList := omit) := //@sic R5s140010 sic@ + + + /* acc. to 36.508 Table 4.6.1-8 + To change the STAG parameters of Scell */ + /* @status */ + cs_RRCConnectionReconfiguration_Common(p_RRC_TI, + omit, // + omit, + cs_RadioResourceConfigDedicated_SrbDrbConfig(-, + -, + cs_MAC_MainConfig_SCell_AddMod(p_TimeAlignmentTimer,p_STAG_ToReleaseList,p_STAG_ToAddModList), + omit), + omit, + omit); + + + template (value) DL_DCCH_Message cs_508_RRCConnectionReconfiguration_SCell_Release(RRC_TransactionIdentifier p_RRC_TI, + template (omit) SCellToReleaseList_r10 p_SCellToReleaseList := omit) := + /* acc. to 36.508 Table 4.6.1-8 with condition SCell_AddMod */ + /* @status APPROVED (LTE_A) */ + cs_RRCConnectionReconfiguration_Common(p_RRC_TI, + omit, + omit, + omit, + omit, + cs_RRCConnectionReconfiguration_SCell_AddMod_IEs(omit, p_SCellToReleaseList)); + + template (value) N1PUCCH_AN_CS_r10 cs_N1PUCCH_AN_CS_r10_FDD_1TX := + { /* acc. to 36.508 Table 4.6.3-9A for condition 1TX */ + /* @status APPROVED (LTE_A) */ + 101, 102, 103, 104 + }; + + template (value) N1PUCCH_AN_CS_r10 cs_N1PUCCH_AN_CS_r10_FDD_2TX := + { /* acc. to 36.508 Table 4.6.3-9A for condition 1TX */ + /* @status APPROVED (LTE_A) */ + 105, 106, 107, 108 + }; + + template (value) PUCCH_ConfigDedicated_v1020 cs_508_PUCCH_ConfigDedicated_v1020_1TX (template (value) N1PUCCH_AN_CS_r10 p_N1PUCCH_AN_CS_r10 ):= + { /* acc. to 36.508 Table 4.6.3-9A for condition 1TX */ + /* @status APPROVED (LTE_A) */ + pucch_Format_r10 := { + channelSelection_r10 := { + n1PUCCH_AN_CS_r10 := { + setup := { + n1PUCCH_AN_CS_List_r10 := { p_N1PUCCH_AN_CS_r10 } + } + } + } + }, + twoAntennaPortActivatedPUCCH_Format1a1b_r10 := omit, + simultaneousPUCCH_PUSCH_r10 := omit, + n1PUCCH_AN_RepP1_r10 := omit + }; + + template (value) PUCCH_ConfigDedicated_v1020 cs_508_PUCCH_ConfigDedicated_v1020_2TX (template (value) N1PUCCH_AN_CS_r10 p_N1PUCCH_AN_CS_r10, + template (value) N1PUCCH_AN_CS_r10 p_N1PUCCH_AN_CS_r10_1):= + { /* acc. to 36.508 Table 4.6.3-9A for condition 2 TX */ + /* @status APPROVED (LTE_A) */ + pucch_Format_r10 := { + channelSelection_r10 := { + n1PUCCH_AN_CS_r10 := { + setup := { + n1PUCCH_AN_CS_List_r10 := { p_N1PUCCH_AN_CS_r10, p_N1PUCCH_AN_CS_r10_1 } + } + } + } + }, + twoAntennaPortActivatedPUCCH_Format1a1b_r10 := omit, + simultaneousPUCCH_PUSCH_r10 := omit, + n1PUCCH_AN_RepP1_r10 := omit + }; + + ///////////////////////////////////////////////////////////////////////////////// + // Rel-11 CA Enh specific templates + //////////////////////////////////////////////////////////////////////////////// + + template (value) STAG_ToAddMod_r11 cs_STAG_ToAddMod_Def( STAG_Id_r11 p_STAG_Id, + TimeAlignmentTimer p_TimeAlignmentTimer := sf750) := + { + stag_Id_r11 := p_STAG_Id, + timeAlignmentTimerSTAG_r11 := p_TimeAlignmentTimer + }; + template (value) MAC_MainConfigSCell_r11 cs_MAC_MainConfigSCell_Def (STAG_Id_r11 p_STAG_Id) := + { + stag_Id_r11 := p_STAG_Id + }; + template (value) RACH_ConfigCommonSCell_r11 cs_RACH_ConfigCommonSCell_r11_Def := + { + powerRampingParameters_r11 := { + powerRampingStep := dB2, /* dB0, dB2,dB4, dB6 */ + preambleInitialReceivedTargetPower := dBm_104 /* DEFAULT dBm-104 */ + }, + ra_SupervisionInfo_r11 := { + preambleTransMax_r11 := n6 /* n1, n2, n3, n4, n5, n6, n7, n8, n10; */ + } + + } +} + diff --git a/LTE_A_IWD_14wk37/LTE_A/Common/TestcaseProperties.ttcn b/LTE_A_IWD_14wk37/LTE_A/Common/TestcaseProperties.ttcn new file mode 100644 index 0000000..c2d620f --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A/Common/TestcaseProperties.ttcn @@ -0,0 +1,456 @@ +/******************************************************************************/ +// AUTOMATICLLY GENERATED MODULE - DO NOT MODIFY +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-07-05 16:52:20 +0200 (Sat, 05 Jul 2014) $ +// $Rev: 11811 $ +/******************************************************************************/ + +module TestcaseProperties { + + function f_GetTestcaseAttrib_3IntraFreq(charstring p_Testcase) return boolean + { + select (p_Testcase) { + case ("TC_8_3_1_18_1") { return true; } + case ("TC_8_3_1_18_2") { return true; } + case ("TC_8_6_2_3") { return true; } + case ("TC_9_2_3_1_20a") { return true; } + } + return false; + } + + function f_GetTestcaseAttrib_Mimo(charstring p_Testcase) return boolean + { + return false; + } + + function f_GetTestcaseAttrib_DciFormat1A(charstring p_Testcase) return boolean + { + select (p_Testcase) { + case ("TC_7_1_3_11_1") { return true; } + case ("TC_7_1_3_11_2") { return true; } + case ("TC_7_1_3_11_3") { return true; } + case ("TC_7_1_3_13") { return true; } + case ("TC_7_1_3_13a") { return true; } + case ("TC_7_1_4_18") { return true; } + case ("TC_7_1_4_21") { return true; } + case ("TC_7_1_9_1_1") { return true; } + case ("TC_7_1_9_1_2") { return true; } + case ("TC_7_1_9_1_3") { return true; } + case ("TC_8_6_2_3") { return true; } + } + return false; + } + + function f_GetTestcaseAttrib_DlCcchMsgInSeparateMacPdu(charstring p_Testcase) return boolean + { + select (p_Testcase) { + case ("TC_13_4_3_20") { return true; } + case ("TC_13_4_3_23") { return true; } + case ("TC_7_3_4_3") { return true; } + case ("TC_8_6_2_5") { return true; } + case ("TC_8_6_4_1") { return true; } + case ("TC_8_6_4_2") { return true; } + case ("TC_8_6_4_3") { return true; } + case ("TC_8_6_4_4") { return true; } + case ("TC_8_6_4_5") { return true; } + case ("TC_8_6_4_7") { return true; } + case ("TC_8_6_5_3") { return true; } + case ("TC_8_6_6_1") { return true; } + case ("TC_8_6_6_2") { return true; } + case ("TC_8_6_6_4") { return true; } + case ("TC_8_6_7_1") { return true; } + case ("TC_8_6_7_2") { return true; } + case ("TC_8_6_7_3") { return true; } + case ("TC_8_6_8_3") { return true; } + } + return false; + } + + function f_GetTestcaseAttrib_Qbased_Rsrq(charstring p_Testcase) return boolean + { + return false; + } + + function f_GetTestcaseAttrib_Mbms(charstring p_Testcase) return boolean + { + select (p_Testcase) { + case ("TC_17_1_1") { return true; } + case ("TC_17_1_2") { return true; } + case ("TC_17_1_3") { return true; } + case ("TC_17_1_4") { return true; } + case ("TC_17_1_5") { return true; } + case ("TC_17_2_1") { return true; } + case ("TC_17_2_2") { return true; } + case ("TC_17_2_3") { return true; } + case ("TC_17_2_4") { return true; } + case ("TC_17_3_1") { return true; } + case ("TC_17_3_2") { return true; } + case ("TC_17_4_1") { return true; } + case ("TC_17_4_10_1") { return true; } + case ("TC_17_4_10_2") { return true; } + case ("TC_17_4_11_1") { return true; } + case ("TC_17_4_11_2") { return true; } + case ("TC_17_4_1a") { return true; } + case ("TC_17_4_2") { return true; } + case ("TC_17_4_2a") { return true; } + case ("TC_17_4_3") { return true; } + case ("TC_17_4_3a") { return true; } + case ("TC_17_4_4") { return true; } + case ("TC_17_4_5") { return true; } + case ("TC_17_4_6") { return true; } + case ("TC_17_4_7") { return true; } + case ("TC_17_4_8") { return true; } + case ("TC_17_4_9_1") { return true; } + case ("TC_17_4_9_2") { return true; } + } + return false; + } + + function f_GetTestcaseAttrib_RetrieveEutraCapabilities(charstring p_Testcase) return boolean + { + return false; + } + + function f_GetTestcaseAttrib_NullIntegrityAlgorithmAllowed(charstring p_Testcase) return boolean + { + return false; + } + + function f_GetTestcaseAttrib_CA_Configured(charstring p_Testcase) return boolean + { + select (p_Testcase) { + case ("TC_17_4_10_1") { return true; } + case ("TC_17_4_10_2") { return true; } + case ("TC_17_4_11_1") { return true; } + case ("TC_17_4_11_2") { return true; } + case ("TC_17_4_9_1") { return true; } + case ("TC_17_4_9_2") { return true; } + case ("TC_7_1_2_10_1") { return true; } + case ("TC_7_1_2_10_2") { return true; } + case ("TC_7_1_2_10_3") { return true; } + case ("TC_7_1_2_11_1") { return true; } + case ("TC_7_1_2_11_2") { return true; } + case ("TC_7_1_2_11_3") { return true; } + case ("TC_7_1_3_11_1") { return true; } + case ("TC_7_1_3_11_2") { return true; } + case ("TC_7_1_3_11_3") { return true; } + case ("TC_7_1_4_18") { return true; } + case ("TC_7_1_4_19_1") { return true; } + case ("TC_7_1_4_19_2") { return true; } + case ("TC_7_1_4_19_3") { return true; } + case ("TC_7_1_4_20_1") { return true; } + case ("TC_7_1_4_20_2") { return true; } + case ("TC_7_1_4_20_3") { return true; } + case ("TC_7_1_4_21") { return true; } + case ("TC_7_1_9_1_1") { return true; } + case ("TC_7_1_9_1_2") { return true; } + case ("TC_7_1_9_1_3") { return true; } + case ("TC_8_2_2_3_1") { return true; } + case ("TC_8_2_2_3_2") { return true; } + case ("TC_8_2_2_3_3") { return true; } + case ("TC_8_2_2_4_1") { return true; } + case ("TC_8_2_2_4_2") { return true; } + case ("TC_8_2_2_4_3") { return true; } + case ("TC_8_2_2_5_1") { return true; } + case ("TC_8_2_2_5_2") { return true; } + case ("TC_8_2_2_5_3") { return true; } + case ("TC_8_2_2_7_1") { return true; } + case ("TC_8_2_2_7_2") { return true; } + case ("TC_8_2_2_7_3") { return true; } + case ("TC_8_2_2_8") { return true; } + case ("TC_8_2_4_16_1") { return true; } + case ("TC_8_2_4_16_2") { return true; } + case ("TC_8_2_4_16_3") { return true; } + case ("TC_8_2_4_17_1") { return true; } + case ("TC_8_2_4_17_2") { return true; } + case ("TC_8_2_4_17_3") { return true; } + case ("TC_8_2_4_18_1") { return true; } + case ("TC_8_2_4_18_2") { return true; } + case ("TC_8_2_4_18_3") { return true; } + case ("TC_8_2_4_19_1") { return true; } + case ("TC_8_2_4_19_2") { return true; } + case ("TC_8_2_4_19_3") { return true; } + case ("TC_8_2_4_20_1") { return true; } + case ("TC_8_2_4_20_2") { return true; } + case ("TC_8_2_4_20_3") { return true; } + case ("TC_8_2_4_21_1") { return true; } + case ("TC_8_2_4_21_2") { return true; } + case ("TC_8_2_4_21_3") { return true; } + case ("TC_8_2_4_23_1") { return true; } + case ("TC_8_2_4_23_2") { return true; } + case ("TC_8_2_4_23_3") { return true; } + case ("TC_8_3_1_17_1") { return true; } + case ("TC_8_3_1_17_2") { return true; } + case ("TC_8_3_1_17_3") { return true; } + case ("TC_8_3_1_18_1") { return true; } + case ("TC_8_3_1_18_2") { return true; } + case ("TC_8_3_1_18_3") { return true; } + case ("TC_8_3_1_22_1") { return true; } + case ("TC_8_3_1_22_2") { return true; } + case ("TC_8_3_1_22_3") { return true; } + case ("TC_8_4_2_7_1") { return true; } + case ("TC_8_4_2_7_2") { return true; } + case ("TC_8_4_2_7_3") { return true; } + case ("TC_8_5_1_7_1") { return true; } + case ("TC_8_5_1_7_2") { return true; } + case ("TC_8_5_1_7_3") { return true; } + } + return false; + } + + function f_GetTestcaseAttrib_Eutra_SRVCC(charstring p_Testcase) return boolean + { + select (p_Testcase) { + case ("TC_13_4_3_10") { return true; } + case ("TC_13_4_3_11") { return true; } + case ("TC_13_4_3_13") { return true; } + case ("TC_13_4_3_14") { return true; } + case ("TC_13_4_3_15") { return true; } + case ("TC_13_4_3_16") { return true; } + case ("TC_13_4_3_18") { return true; } + case ("TC_13_4_3_19") { return true; } + case ("TC_13_4_3_20") { return true; } + case ("TC_13_4_3_21") { return true; } + case ("TC_13_4_3_22") { return true; } + case ("TC_13_4_3_23") { return true; } + case ("TC_13_4_3_24") { return true; } + case ("TC_13_4_3_25") { return true; } + case ("TC_13_4_3_26") { return true; } + case ("TC_13_4_3_27") { return true; } + case ("TC_13_4_3_28") { return true; } + case ("TC_13_4_3_30") { return true; } + case ("TC_13_4_3_7") { return true; } + case ("TC_13_4_3_8") { return true; } + case ("TC_13_4_3_9") { return true; } + } + return false; + } + + function f_GetTestcaseAttrib_Eutra_Release(charstring p_Testcase) return charstring + { + select (p_Testcase) { + case ("TC_10_5_1a") { return "rel_11"; } + case ("TC_10_5_1b") { return "rel_11"; } + case ("TC_10_5_4") { return "rel_10"; } + case ("TC_10_8_8") { return "rel_11"; } + case ("TC_17_1_1") { return "rel_9"; } + case ("TC_17_1_2") { return "rel_9"; } + case ("TC_17_1_3") { return "rel_9"; } + case ("TC_17_1_4") { return "rel_9"; } + case ("TC_17_1_5") { return "rel_9"; } + case ("TC_17_2_1") { return "rel_9"; } + case ("TC_17_2_2") { return "rel_9"; } + case ("TC_17_2_3") { return "rel_9"; } + case ("TC_17_2_4") { return "rel_9"; } + case ("TC_17_3_1") { return "rel_10"; } + case ("TC_17_3_2") { return "rel_10"; } + case ("TC_17_4_1") { return "rel_11"; } + case ("TC_17_4_10_1") { return "rel_11"; } + case ("TC_17_4_10_2") { return "rel_11"; } + case ("TC_17_4_11_1") { return "rel_11"; } + case ("TC_17_4_11_2") { return "rel_11"; } + case ("TC_17_4_1a") { return "rel_11"; } + case ("TC_17_4_2") { return "rel_11"; } + case ("TC_17_4_2a") { return "rel_11"; } + case ("TC_17_4_3") { return "rel_11"; } + case ("TC_17_4_3a") { return "rel_11"; } + case ("TC_17_4_4") { return "rel_11"; } + case ("TC_17_4_5") { return "rel_11"; } + case ("TC_17_4_6") { return "rel_11"; } + case ("TC_17_4_7") { return "rel_11"; } + case ("TC_17_4_8") { return "rel_11"; } + case ("TC_17_4_9_1") { return "rel_11"; } + case ("TC_17_4_9_2") { return "rel_11"; } + case ("TC_6_1_1_7") { return "rel_10"; } + case ("TC_6_1_1_7a") { return "rel_10"; } + case ("TC_7_1_2_10_1") { return "rel_11"; } + case ("TC_7_1_2_10_2") { return "rel_12"; } + case ("TC_7_1_2_10_3") { return "rel_12"; } + case ("TC_7_1_2_11_1") { return "rel_11"; } + case ("TC_7_1_2_11_2") { return "rel_12"; } + case ("TC_7_1_2_11_3") { return "rel_12"; } + case ("TC_7_1_3_11_1") { return "rel_10"; } + case ("TC_7_1_3_11_2") { return "rel_10"; } + case ("TC_7_1_3_11_3") { return "rel_11"; } + case ("TC_7_1_3_12") { return "rel_9"; } + case ("TC_7_1_3_12a") { return "rel_9"; } + case ("TC_7_1_3_13") { return "rel_9"; } + case ("TC_7_1_3_13a") { return "rel_9"; } + case ("TC_7_1_4_18") { return "rel_10"; } + case ("TC_7_1_4_19_1") { return "rel_10"; } + case ("TC_7_1_4_19_2") { return "rel_12"; } + case ("TC_7_1_4_19_3") { return "rel_12"; } + case ("TC_7_1_4_20_1") { return "rel_10"; } + case ("TC_7_1_4_20_2") { return "rel_12"; } + case ("TC_7_1_4_20_3") { return "rel_12"; } + case ("TC_7_1_4_21") { return "rel_10"; } + case ("TC_7_1_9_1_1") { return "rel_10"; } + case ("TC_7_1_9_1_2") { return "rel_10"; } + case ("TC_7_1_9_1_3") { return "rel_11"; } + case ("TC_8_1_1_7") { return "rel_11"; } + case ("TC_8_2_2_3_1") { return "rel_10"; } + case ("TC_8_2_2_3_2") { return "rel_10"; } + case ("TC_8_2_2_3_3") { return "rel_11"; } + case ("TC_8_2_2_4_1") { return "rel_10"; } + case ("TC_8_2_2_4_2") { return "rel_10"; } + case ("TC_8_2_2_4_3") { return "rel_11"; } + case ("TC_8_2_2_5_1") { return "rel_10"; } + case ("TC_8_2_2_5_2") { return "rel_10"; } + case ("TC_8_2_2_5_3") { return "rel_11"; } + case ("TC_8_2_2_6_1") { return "rel_11"; } + case ("TC_8_2_2_6_2") { return "rel_11"; } + case ("TC_8_2_2_6_3") { return "rel_11"; } + case ("TC_8_2_2_7_1") { return "rel_11"; } + case ("TC_8_2_2_7_2") { return "rel_12"; } + case ("TC_8_2_2_7_3") { return "rel_12"; } + case ("TC_8_2_2_8") { return "rel_11"; } + case ("TC_8_2_4_16_1") { return "rel_10"; } + case ("TC_8_2_4_16_2") { return "rel_10"; } + case ("TC_8_2_4_16_3") { return "rel_12"; } + case ("TC_8_2_4_17_1") { return "rel_10"; } + case ("TC_8_2_4_17_2") { return "rel_10"; } + case ("TC_8_2_4_17_3") { return "rel_11"; } + case ("TC_8_2_4_18_1") { return "rel_10"; } + case ("TC_8_2_4_18_2") { return "rel_10"; } + case ("TC_8_2_4_18_3") { return "rel_12"; } + case ("TC_8_2_4_19_1") { return "rel_10"; } + case ("TC_8_2_4_19_2") { return "rel_10"; } + case ("TC_8_2_4_19_3") { return "rel_11"; } + case ("TC_8_2_4_20_1") { return "rel_10"; } + case ("TC_8_2_4_20_2") { return "rel_10"; } + case ("TC_8_2_4_20_3") { return "rel_12"; } + case ("TC_8_2_4_21_1") { return "rel_10"; } + case ("TC_8_2_4_21_2") { return "rel_10"; } + case ("TC_8_2_4_21_3") { return "rel_11"; } + case ("TC_8_2_4_23_1") { return "rel_10"; } + case ("TC_8_2_4_23_2") { return "rel_10"; } + case ("TC_8_2_4_23_3") { return "rel_11"; } + case ("TC_8_3_1_17_1") { return "rel_10"; } + case ("TC_8_3_1_17_2") { return "rel_10"; } + case ("TC_8_3_1_17_3") { return "rel_11"; } + case ("TC_8_3_1_18_1") { return "rel_10"; } + case ("TC_8_3_1_18_2") { return "rel_10"; } + case ("TC_8_3_1_18_3") { return "rel_11"; } + case ("TC_8_3_1_19") { return "rel_10"; } + case ("TC_8_3_1_20") { return "rel_10"; } + case ("TC_8_3_1_21") { return "rel_10"; } + case ("TC_8_3_1_22_1") { return "rel_10"; } + case ("TC_8_3_1_22_2") { return "rel_10"; } + case ("TC_8_3_1_22_3") { return "rel_11"; } + case ("TC_8_3_1_28") { return "rel_10"; } + case ("TC_8_4_2_7_1") { return "rel_10"; } + case ("TC_8_4_2_7_2") { return "rel_10"; } + case ("TC_8_4_2_7_3") { return "rel_11"; } + case ("TC_8_5_1_7_1") { return "rel_10"; } + case ("TC_8_5_1_7_2") { return "rel_10"; } + case ("TC_8_5_1_7_3") { return "rel_11"; } + case ("TC_8_6_10_1") { return "rel_11"; } + case ("TC_8_6_11_1") { return "rel_9"; } + case ("TC_8_6_1_1") { return "rel_10"; } + case ("TC_8_6_1_2") { return "rel_11"; } + case ("TC_8_6_2_1") { return "rel_10"; } + case ("TC_8_6_2_10") { return "rel_11"; } + case ("TC_8_6_2_11") { return "rel_11"; } + case ("TC_8_6_2_12") { return "rel_11"; } + case ("TC_8_6_2_2") { return "rel_10"; } + case ("TC_8_6_2_3") { return "rel_10"; } + case ("TC_8_6_2_3a") { return "rel_11"; } + case ("TC_8_6_2_4") { return "rel_10"; } + case ("TC_8_6_2_5") { return "rel_10"; } + case ("TC_8_6_2_6") { return "rel_10"; } + case ("TC_8_6_2_7") { return "rel_10"; } + case ("TC_8_6_2_8") { return "rel_10"; } + case ("TC_8_6_2_9") { return "rel_10"; } + case ("TC_8_6_3_1") { return "rel_10"; } + case ("TC_8_6_3_2") { return "rel_10"; } + case ("TC_8_6_3_3") { return "rel_10"; } + case ("TC_8_6_3_4") { return "rel_11"; } + case ("TC_8_6_4_1") { return "rel_10"; } + case ("TC_8_6_4_10") { return "rel_11"; } + case ("TC_8_6_4_2") { return "rel_10"; } + case ("TC_8_6_4_3") { return "rel_10"; } + case ("TC_8_6_4_4") { return "rel_10"; } + case ("TC_8_6_4_5") { return "rel_10"; } + case ("TC_8_6_4_7") { return "rel_10"; } + case ("TC_8_6_4_8") { return "rel_11"; } + case ("TC_8_6_4_9") { return "rel_11"; } + case ("TC_8_6_5_1") { return "rel_10"; } + case ("TC_8_6_5_1a") { return "rel_11"; } + case ("TC_8_6_5_2") { return "rel_10"; } + case ("TC_8_6_5_3") { return "rel_10"; } + case ("TC_8_6_5_4") { return "rel_11"; } + case ("TC_8_6_6_1") { return "rel_10"; } + case ("TC_8_6_6_2") { return "rel_10"; } + case ("TC_8_6_6_4") { return "rel_10"; } + case ("TC_8_6_6_5") { return "rel_11"; } + case ("TC_8_6_6_6") { return "rel_11"; } + case ("TC_8_6_6_7") { return "rel_11"; } + case ("TC_8_6_7_1") { return "rel_10"; } + case ("TC_8_6_7_2") { return "rel_10"; } + case ("TC_8_6_7_3") { return "rel_10"; } + case ("TC_8_6_7_4") { return "rel_11"; } + case ("TC_8_6_8_1") { return "rel_11"; } + case ("TC_8_6_8_2") { return "rel_11"; } + case ("TC_8_6_8_3") { return "rel_11"; } + case ("TC_8_6_8_4") { return "rel_11"; } + case ("TC_8_6_8_5") { return "rel_11"; } + case ("TC_8_6_8_6") { return "rel_11"; } + case ("TC_8_6_9_1") { return "rel_11"; } + case ("TC_8_6_9_2") { return "rel_11"; } + case ("TC_8_6_9_3") { return "rel_11"; } + case ("TC_8_6_9_4") { return "rel_11"; } + case ("TC_8_7_1") { return "rel_10"; } + case ("TC_9_2_1_1_27") { return "rel_10"; } + case ("TC_9_2_1_1_27a") { return "rel_11"; } + case ("TC_9_2_1_1_2a") { return "rel_10"; } + case ("TC_9_2_1_1_7b") { return "rel_10"; } + case ("TC_9_2_1_2_4a") { return "rel_11"; } + case ("TC_9_2_3_1_20a") { return "rel_10"; } + case ("TC_9_2_3_1_5a") { return "rel_10"; } + case ("TC_9_2_3_1_8a") { return "rel_11"; } + case ("TC_9_2_3_1_8b") { return "rel_11"; } + case ("TC_9_2_3_2_4a") { return "rel_11"; } + } + return ""; + } + + function f_GetTestcaseAttrib_UtraFDD_Release(charstring p_Testcase) return charstring + { + select (p_Testcase) { + case ("TC_8_4_2_7_1") { return "FDDr8"; } + case ("TC_8_4_2_7_2") { return "FDDr8"; } + case ("TC_8_4_2_7_3") { return "FDDr8"; } + case ("TC_8_6_10_1") { return "FDDr11"; } + case ("TC_8_6_3_1") { return "FDDr8"; } + case ("TC_8_6_5_1") { return "FDDr8"; } + case ("TC_8_6_7_1") { return "FDDr8"; } + case ("TC_8_6_7_4") { return "FDDr11"; } + case ("TC_8_6_9_1") { return "FDDr11"; } + case ("TC_8_6_9_2") { return "FDDr11"; } + case ("TC_8_7_1") { return "FDDr10"; } + } + return ""; + } + + function f_GetTestcaseAttrib_UtraTDD_Release(charstring p_Testcase) return charstring + { + select (p_Testcase) { + case ("TC_8_4_2_7_1") { return "TDDr10"; } + case ("TC_8_4_2_7_2") { return "TDDr10"; } + case ("TC_8_4_2_7_3") { return "TDDr10"; } + case ("TC_8_6_10_1") { return "TDDr11"; } + case ("TC_8_6_3_1") { return "TDDr10"; } + case ("TC_8_6_7_1") { return "TDDr10"; } + case ("TC_8_6_7_4") { return "TDDr11"; } + case ("TC_8_6_9_1") { return "TDDr11"; } + case ("TC_8_6_9_2") { return "TDDr11"; } + case ("TC_8_7_1") { return "TDDr10"; } + } + return ""; + } +} diff --git a/LTE_A_IWD_14wk37/LTE_A_Testsuite.ttcn b/LTE_A_IWD_14wk37/LTE_A_Testsuite.ttcn new file mode 100644 index 0000000..3febced --- /dev/null +++ b/LTE_A_IWD_14wk37/LTE_A_Testsuite.ttcn @@ -0,0 +1,5566 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +/******************************************************************************/ + +module LTE_A_Testsuite { + + import from MTC_Component_LTE_IRAT all; + import from EUTRA_Component all; + import from UTRAN_Component all; + import from GERAN_Component all; + import from CDMA2000_Component all; + import from IMS_Component all; + import from MTC_Main_LTE_IRAT all; + import from LTE_36523_SelectionExpressions all; + import from ASRVCC_EUTRA all; + import from ASRVCC_EUTRA_GERAN all; + import from ASRVCC_EUTRA_IMS all; + import from ASRVCC_EUTRA_UTRAN all; + import from BSRVCC_EUTRA all; + import from BSRVCC_EUTRA_GERAN all; + import from BSRVCC_EUTRA_IMS all; + import from BSRVCC_EUTRA_UTRAN all; + import from ESM_A_Testcases all; + import from EUTRA_Measurements_CA all; + import from FeFACH_EU all; + import from FeFACH_EU_UTRAN all; + import from Idle_PLMNSelection_A all; + import from InterRat_Handover_UtoE_CA all; + import from InterRat_Handover_UtoE_CA_UTRAN all; + import from Inter_RAT_Logged_MDT all; + import from Inter_RAT_Logged_MDT_CDMA2000 all; + import from MAC_CA all; + import from MAC_SSC all; + import from MBMS_Counting_TestCases all; + import from MBMS_MCCH_TestCases all; + import from MBMS_MTCH_TestCases all; + import from MBMS_SC_CA all; + import from MBMS_SC_TestCases all; + import from NAS_A_Security all; + import from NAS_Attach_EOnly_A all; + import from NAS_TrackingArea_EOnly_A all; + import from PDCP_A_Security all; + import from RRC_ANR all; + import from RRC_ANR_UTRAN all; + import from RRC_ConnReconfig_A all; + import from RRC_ConnReconfig_CA all; + import from RRC_Connection_Establishment_Failure all; + import from RRC_Connection_Establishment_Failure_GERAN all; + import from RRC_Connection_Establishment_Failure_UTRAN all; + import from RRC_Handover_CA all; + import from RRC_Immediate_MDT all; + import from RRC_Immediate_MDT_UTRAN all; + import from RRC_LoggedHOFailure all; + import from RRC_LoggedHOFailure_GERAN all; + import from RRC_LoggedHOFailure_UTRAN all; + import from RRC_LoggedRLF all; + import from RRC_LoggedRLF_GERAN all; + import from RRC_LoggedRLF_UTRAN all; + import from RRC_MDT_Logged all; + import from RRC_MDT_Logged_GERAN all; + import from RRC_MDT_Logged_UTRAN all; + import from RRC_Measurement_eICIC all; + import from RRC_Paging_A all; + import from RRC_RACH_Optimisation all; + import from RRC_RadioLinkFailure_CA all; + + //---------------------------------------------------------------------------- + testcase TC_10_5_1a() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // UE requested PDN connectivity accepted / Dual priority / T3396 override + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_10_5_1a_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_10_5_1b() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // UE requested PDN connectivity accepted / Dual priority / T3346 override + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_10_5_1b_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_10_5_4() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // UE requested PDN connectivity not accepted / Network reject with Extended Wait Timer + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_10_5_4_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_10_8_8() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // UE requested bearer resource modification / Dual priority / low priority override + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_10_8_8_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_13_4_3_10() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Inter-system mobility / E-UTRA voice to UTRA CS voice / aSRVCC / MT call + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + v_IMS1 := IMS_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_13_4_3_10_EUTRA()); + v_UTRAN.start(f_TC_13_4_3_10_UTRAN()); + v_IMS1.start(f_TC_13_4_3_10_IMS1()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_13_4_3_11() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Inter-system mobility / E-UTRA voice to UTRA CS voice / aSRVCC / MT call / SRVCC HO failure + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + v_IMS1 := IMS_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_13_4_3_11_EUTRA()); + v_UTRAN.start(f_TC_13_4_3_11_UTRAN()); + v_IMS1.start(f_TC_13_4_3_11_IMS1()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_13_4_3_13() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Inter-system mobility / E-UTRA voice to UTRA CS voice / aSRVCC / MT call / SRVCC HO cancelled / User answers in PS domain + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + v_IMS1 := IMS_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_13_4_3_13_EUTRA()); + v_UTRAN.start(f_TC_13_4_3_13_UTRAN()); + v_IMS1.start(f_TC_13_4_3_13_IMS1()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_13_4_3_14() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Inter-system mobility / E-UTRA PS voice + PS data to UTRA CS voice + PS data / aSRVCC / MO call + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + v_IMS1 := IMS_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_13_4_3_14_EUTRA()); + v_UTRAN.start(f_TC_13_4_3_14_UTRAN()); + v_IMS1.start(f_TC_13_4_3_14_IMS1()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_13_4_3_15() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Inter-system mobility / E-UTRA PS voice + PS data to UTRA CS voice + PS data / aSRVCC / MO call / SRVCC HO cancelled + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + v_IMS1 := IMS_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_13_4_3_15_EUTRA()); + v_UTRAN.start(f_TC_13_4_3_15_UTRAN()); + v_IMS1.start(f_TC_13_4_3_15_IMS1()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_13_4_3_16() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Inter-system mobility / E-UTRA PS voice + PS data to UTRA CS voice + PS data / aSRVCC / MT call + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + v_IMS1 := IMS_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_13_4_3_16_EUTRA()); + v_UTRAN.start(f_TC_13_4_3_16_UTRAN()); + v_IMS1.start(f_TC_13_4_3_16_IMS1()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_13_4_3_18() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Inter-system mobility / E-UTRA PS voice + PS data to UTRA CS voice + PS data / bSRVCC / MO call + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + v_IMS1 := IMS_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_13_4_3_18_EUTRA()); + v_UTRAN.start(f_TC_13_4_3_18_UTRAN()); + v_IMS1.start(f_TC_13_4_3_18_IMS1()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_13_4_3_19() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Inter-system mobility / E-UTRA PS voice + PS data to UTRA CS voice + PS data / bSRVCC / MO call / SRVCC HO cancelled + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + v_IMS1 := IMS_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_13_4_3_19_EUTRA()); + v_UTRAN.start(f_TC_13_4_3_19_UTRAN()); + v_IMS1.start(f_TC_13_4_3_19_IMS1()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_13_4_3_20() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Inter-system mobility / E-UTRA voice to UTRA CS voice / bSRVCC / MO call / SRVCC HO failure + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + v_IMS1 := IMS_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_13_4_3_20_EUTRA()); + v_UTRAN.start(f_TC_13_4_3_20_UTRAN()); + v_IMS1.start(f_TC_13_4_3_20_IMS1()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_13_4_3_21() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Inter-system mobility / E-UTRA PS voice to GSM CS voice / bSRVCC / MO call + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_GERAN := GERAN_PTC.create alive; + v_IMS1 := IMS_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_13_4_3_21_EUTRA()); + v_GERAN.start(f_TC_13_4_3_21_GERAN()); + v_IMS1.start(f_TC_13_4_3_21_IMS1()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_13_4_3_22() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Inter-system mobility / E-UTRA PS voice to GSM CS voice / bSRVCC / MO call / SRVCC HO cancelled + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_GERAN := GERAN_PTC.create alive; + v_IMS1 := IMS_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_13_4_3_22_EUTRA()); + v_GERAN.start(f_TC_13_4_3_22_GERAN()); + v_IMS1.start(f_TC_13_4_3_22_IMS1()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_13_4_3_23() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Inter-system mobility / E-UTRA voice to GSM CS voice / bSRVCC / MO call / SRVCC HO failure + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_GERAN := GERAN_PTC.create alive; + v_IMS1 := IMS_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_13_4_3_23_EUTRA()); + v_GERAN.start(f_TC_13_4_3_23_GERAN()); + v_IMS1.start(f_TC_13_4_3_23_IMS1()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_13_4_3_24() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Inter-system mobility / E-UTRA voice to GSM CS voice / aSRVCC / MO call + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_GERAN := GERAN_PTC.create alive; + v_IMS1 := IMS_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_13_4_3_24_EUTRA()); + v_GERAN.start(f_TC_13_4_3_24_GERAN()); + v_IMS1.start(f_TC_13_4_3_24_IMS1()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_13_4_3_25() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Inter-system mobility / E-UTRA voice to GSM CS voice / aSRVCC / MO call + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_GERAN := GERAN_PTC.create alive; + v_IMS1 := IMS_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_13_4_3_25_EUTRA()); + v_GERAN.start(f_TC_13_4_3_25_GERAN()); + v_IMS1.start(f_TC_13_4_3_25_IMS1()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_13_4_3_26() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Inter-system mobility / E-UTRA voice to GSM CS voice / aSRVCC / MO call / SRVCC HO failure + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_GERAN := GERAN_PTC.create alive; + v_IMS1 := IMS_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_13_4_3_26_EUTRA()); + v_GERAN.start(f_TC_13_4_3_26_GERAN()); + v_IMS1.start(f_TC_13_4_3_26_IMS1()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_13_4_3_27() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Inter-system mobility / E-UTRA voice to GSM CS voice / aSRVCC / MT call + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_GERAN := GERAN_PTC.create alive; + v_IMS1 := IMS_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_13_4_3_27_EUTRA()); + v_GERAN.start(f_TC_13_4_3_27_GERAN()); + v_IMS1.start(f_TC_13_4_3_27_IMS1()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_13_4_3_28() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Inter-system mobility / E-UTRA voice to GSM CS voice / aSRVCC / MT call / SRVCC HO failure + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_GERAN := GERAN_PTC.create alive; + v_IMS1 := IMS_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_13_4_3_28_EUTRA()); + v_GERAN.start(f_TC_13_4_3_28_GERAN()); + v_IMS1.start(f_TC_13_4_3_28_IMS1()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_13_4_3_30() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Inter-system mobility / E-UTRA voice to GSM CS voice / aSRVCC / MT call / SRVCC HO cancelled / User answers in PS domain + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_GERAN := GERAN_PTC.create alive; + v_IMS1 := IMS_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_13_4_3_30_EUTRA()); + v_GERAN.start(f_TC_13_4_3_30_GERAN()); + v_IMS1.start(f_TC_13_4_3_30_IMS1()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_13_4_3_7() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Inter-system mobility / E-UTRA voice to UTRA CS voice / aSRVCC / MO call + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + v_IMS1 := IMS_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_13_4_3_7_EUTRA()); + v_UTRAN.start(f_TC_13_4_3_7_UTRAN()); + v_IMS1.start(f_TC_13_4_3_7_IMS1()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_13_4_3_8() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Inter-system mobility / E-UTRA voice to UTRA CS voice / aSRVCC / MO call / Forked responses + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + v_IMS1 := IMS_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_13_4_3_8_EUTRA()); + v_UTRAN.start(f_TC_13_4_3_8_UTRAN()); + v_IMS1.start(f_TC_13_4_3_8_IMS1()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_13_4_3_9() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Inter-system mobility / E-UTRA voice to UTRA CS voice / aSRVCC / MO call / SRVCC HO failure + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + v_IMS1 := IMS_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_13_4_3_9_EUTRA()); + v_UTRAN.start(f_TC_13_4_3_9_UTRAN()); + v_IMS1.start(f_TC_13_4_3_9_IMS1()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_17_1_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // MCCH information acquisition/ UE is switched on + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_17_1_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_17_1_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // MCCH information acquisition/UE cell reselection to a cell in a new MBSFN area + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_17_1_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_17_1_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // MCCH information acquisition/UE handover to a cell in a new MBSFN area + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_17_1_3_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_17_1_4() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // MCCH information acquisition/ UE is receiving an MBMS service + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_17_1_4_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_17_1_5() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // MCCH information acquisition/ UE is not receiving MBMS data + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_17_1_5_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_17_2_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // UE Acquire the MBMS data based on the SIB13 and MCCH message /MCCH and MTCH are on the same MCH + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_17_2_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_17_2_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // UE Acquire the MBMS data based on the SIB13 and MCCH message /MCCH and MTCH are on different MCHs + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_17_2_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_17_2_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // UE receives the MBMS data when this data is in the beginning of the MSP + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_17_2_3_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_17_2_4() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Reception of PDCCH DCI format 0 and PHICH in MBSFN subframes + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_17_2_4_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_17_3_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // MBMS Counting / UE not receiving MBMS service + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_17_3_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_17_3_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // MBMS Counting / UE receiving MBMS service + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_17_3_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_17_4_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Cell reselection to intra-frequency cell to continue MBMS service reception + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_17_4_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_17_4_10_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / Start MBMS reception on SCell / Continue MBMS reception on Non-Serving after SCell release / Intra-band Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_17_4_10_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_17_4_10_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / Start MBMS reception on SCell / Continue MBMS reception on Non-Serving after SCell release / Inter-band CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_17_4_10_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_17_4_11_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / Start MBMS reception on PCell / Continue MBMS reception after swap of SCell and PCell / Intra-band Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_17_4_11_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_17_4_11_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / Start MBMS reception on PCell / Continue MBMS reception after swap of SCell and PCell / Inter-band CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_17_4_11_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_17_4_1a() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Cell reselection to intra-frequency cell to continue MBMS service reception / Single Frequency operation (inter-band neighbouring cell) + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_17_4_1a_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_17_4_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Cell reselection to inter- frequency cell to start MBMS service reception + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_17_4_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_17_4_2a() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Cell reselection to inter- band cell to start MBMS service reception + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_17_4_2a_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_17_4_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Handover to inter-frequency cell to start MBMS service reception + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_17_4_3_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_17_4_3a() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Handover to inter-band cell to start MBMS service reception + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_17_4_3a_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_17_4_4() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Handover to intra-frequency cell to continue MBMS service reception + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_17_4_4_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_17_4_5() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Conditional retransmission of MBMS Interest Indication after handover + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_17_4_5_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_17_4_6() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // MBMS Interest Indication retransmission after returning from cell not broadcasting SIB15 + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_17_4_6_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_17_4_7() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // MBMS Interest Indication after Radio Link Failure + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_17_4_7_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_17_4_8() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Continue MBMS service reception after E-UTRAN release of unicast bearer + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_17_4_8_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_17_4_9_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / Start MBMS reception on Non-Serving Cell / Continue MBMS reception on SCell after SCell addition / Intra-band Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_17_4_9_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_17_4_9_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / Start MBMS reception on Non-Serving Cell / Continue MBMS reception on SCell after SCell addition / Inter-band CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_17_4_9_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_6_1_1_7() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // PLMN selection / Periodic reselection / ExtendedWaitTimer + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(1200); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_6_1_1_7_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_6_1_1_7a() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // PLMN selection / Periodic reselection / MinimumPeriodicSearchTimer / Single Frequency operation + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_6_1_1_7a_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_6_2_4_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Inter-RAT absolute priority based reselection in UTRA CELL_FACH to E-UTRA RRC_IDLE (Higher Priority Layers, Srxlev,x > Threshx,high and Srxlev,serv > Sprioritysearch1 and SqualServ > Sprioritysearch2) + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_6_2_4_1_EUTRA()); + v_UTRAN.start(f_TC_6_2_4_1_UTRAN()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_6_2_4_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Inter-RAT absolute priority based reselection in UTRA CELL_FACH (Higher Priority Layers, no cell reselection to E-UTRA RRC_IDLE when Srxlev,serv < Sprioritysearch1) + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_6_2_4_2_EUTRA()); + v_UTRAN.start(f_TC_6_2_4_2_UTRAN()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_6_2_4_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Inter-RAT absolute priority based reselection in UTRA _CELL_FACH to E-UTRA RRC_IDLE (Higher Priority Layers, Squal,x > Threshx,high2 and Srxlev,serv > Sprioritysearch1 and SqualServ > Sprioritysearch2) + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_6_2_4_3_EUTRA()); + v_UTRAN.start(f_TC_6_2_4_3_UTRAN()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_6_2_4_4() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Inter-RAT absolute priority based reselection in UTRA CELL_FACH (lower priority) to E-UTRA RRC_IDLE (higher priority) (All Layers, Srxlev,x > Threshx,high) + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_6_2_4_4_EUTRA()); + v_UTRAN.start(f_TC_6_2_4_4_UTRAN()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_6_2_4_5() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Inter-RAT absolute priority based reselection in UTRA CELL_FACH (lower priority) to E-UTRA RRC_IDLE (higher priority) (All Layers, Squal,x >ThreshX,high2) + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_6_2_4_5_EUTRA()); + v_UTRAN.start(f_TC_6_2_4_5_UTRAN()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_6_2_4_6() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Inter-RAT absolute priority based reselection in UTRA CELL_FACH (higher priority) to E-UTRA RRC_IDLE (lower priority) (All Layers, Srxlev,serv < Sprioritysearch1 , Srxlev,serv Threshx,low) + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_6_2_4_6_EUTRA()); + v_UTRAN.start(f_TC_6_2_4_6_UTRAN()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_6_2_4_7() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Inter-RAT absolute priority based reselection in UTRA CELL_FACH (higher priority) to E-UTRA RRC_IDLE (lower priority) (All Layers, Srxlev,serv < Sprioritysearch1 , Squal,serv ThreshX,low2) + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_6_2_4_7_EUTRA()); + v_UTRAN.start(f_TC_6_2_4_7_UTRAN()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_7_1_2_10_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / Random access procedure / SCell / Intra-band Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_7_1_2_10_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_7_1_2_10_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / Random access procedure / SCell / Inter-band CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_7_1_2_10_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_7_1_2_10_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / Random access procedure / SCell / Intra-band non-contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_7_1_2_10_3_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_7_1_2_11_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / Maintenance of uplink time alignment / Multiple TA / Intra-band Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_7_1_2_11_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_7_1_2_11_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / Maintenance of uplink time alignment / Multiple TA / Inter-band CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_7_1_2_11_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_7_1_2_11_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / Maintenance of uplink time alignment / Multiple TA / Intra-band non-contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_7_1_2_11_3_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_7_1_3_11_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Addition of new CA test case: CA / Correct HARQ process handling / DCCH and DTCH / Pcell and Scell / Intra-band Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_7_1_3_11_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_7_1_3_11_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Addition of new CA test case: CA / Correct HARQ process handling / DCCH and DTCH / Pcell and Scell / Inter-band CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_7_1_3_11_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_7_1_3_11_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / Correct HARQ process handling / DCCH and DTCH / Pcell and Scell / Intra-band non-Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_7_1_3_11_3_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_7_1_3_12() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // TDD additional special subframe configuration / Special subframe pattern 9 with Normal Cyclic Prefix / CRS based transmission scheme + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_7_1_3_12_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_7_1_3_12a() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // TDD additional special subframe configuration / Special subframe pattern 7 with Extended Cyclic Prefix / CRS based transmission scheme + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_7_1_3_12a_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_7_1_3_13() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // TDD additional special subframe configuration / Special subframe pattern 9 with Normal Cyclic Prefix / UE-specific reference signals based transmission scheme + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_7_1_3_13_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_7_1_3_13a() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // TDD additional special subframe configuration / Special subframe pattern 7 with Extended Cyclic Prefix / UE-specific reference signals based transmission scheme + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_7_1_3_13a_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_7_1_4_18() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / Correct handling of MAC control information / Buffer Status / UL data arrive in the UE Tx buffer / Extended buffer size + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_7_1_4_18_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_7_1_4_19_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / UE power headroom reporting / SCell activation and DL pathloss change reporting / Extended PHR / Intra-band Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_7_1_4_19_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_7_1_4_19_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / UE power headroom reporting / SCell activation and DL pathloss change reporting / Extended PHR / Inter-band CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_7_1_4_19_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_7_1_4_19_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / UE power headroom reporting / SCell activation and DL pathloss change reporting / Extended PHR / Intra-band non-Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_7_1_4_19_3_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_7_1_4_20_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / Correct handling of MAC control information / Buffer status / Intra-band Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_7_1_4_20_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_7_1_4_20_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / Correct handling of MAC control information / Buffer status / Inter-band CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_7_1_4_20_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_7_1_4_20_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / Correct handling of MAC control information / Buffer status / Intra-band non-Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_7_1_4_20_3_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_7_1_4_21() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // UE power headroom reporting / Extended PHR + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_7_1_4_21_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_7_1_9_1_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / Activation/Deactivation of SCells / Activation/Deactivation MAC control element reception / sCellDeactivationTimer/ Intra-band Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_7_1_9_1_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_7_1_9_1_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / Activation/Deactivation of SCells / Activation/Deactivation MAC control element reception / sCellDeactivationTimer/ Inter-band CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_7_1_9_1_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_7_1_9_1_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / Activation/Deactivation of SCells / Activation/Deactivation MAC control element reception / sCellDeactivationTimer / Intra-band non-Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_7_1_9_1_3_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_7_3_3_5() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Ciphering and deciphering / Correct functionality of EPS AS encryption algorithms / ZUC + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_7_3_3_5_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_7_3_3_6() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Ciphering and deciphering / Correct functionality of EPS UP encryption algorithms / ZUC + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_7_3_3_6_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_7_3_4_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Integrity protection / Correct functionality of EPS AS integrity algorithms / ZUC + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_7_3_4_3_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_1_1_7() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // RRC / Paging / EAB active + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_1_1_7_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_2_3_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / SCell addition/modification/release / Success / Intra-band Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_2_3_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_2_3_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / SCell addition/modification/release / Success / Inter-band CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_2_3_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_2_3_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / SCell addition/ modification/release / Success / Intra-band non-contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_2_3_3_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_2_4_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / SCell SI change / Success / Intra-band Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_2_4_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_2_4_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / SCell SI change / Success / Inter-band CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_2_4_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_2_4_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / SCell SI change / Success / Intra-band non-contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_2_4_3_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_2_5_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / SCell Addition without UL / Success / Intra-band Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_2_5_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_2_5_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / SCell Addition without UL / Success / Inter-band CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_2_5_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_2_5_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / SCell Addition without UL / Success / Intra-band non-Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_2_5_3_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_2_6_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // RRC connection reconfiguration/ UE Assistance Information/power preference indication setup and release + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_2_6_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_2_6_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // RRC connection reconfiguration/ UE Assistance Information/power preference indication release on connection re-establishment + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(720); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_2_6_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_2_6_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // RRC connection reconfiguration/ UE Assistance Information/T340 running + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_2_6_3_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_2_7_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / sTAG addition/ modification/release / Success / Intra-band Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_2_7_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_2_7_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / sTAG addition/ modification/release / Success / Inter-band CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_2_7_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_2_7_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / sTAG addition/ modification/release / Success / Intra-band non-contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_2_7_3_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_2_8() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // feICIC/ RRC connection reconfiguration / SIB1 information / Success + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_2_8_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_4_16_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / Setup and Change of MIMO / Intra-band Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_4_16_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_4_16_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / Setup and Change of MIMO / Inter-band CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_4_16_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_4_16_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / Setup and Change of MIMO / Intra-band non-Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_4_16_3_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_4_17_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / Handover / Success / PCell Change and SCell addition / Intra-band Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_4_17_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_4_17_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / Handover / Success / PCell Change and SCell addition / Inter-band CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_4_17_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_4_17_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / Handover / Success / PCell Change and SCell addition / Intra-band non-contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_4_17_3_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_4_18_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / Handover / Success / SCell release / Intra-band Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_4_18_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_4_18_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / Handover / Success / SCell release / Inter-band CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_4_18_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_4_18_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / Handover / Success / SCell release / Intra-band non-Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_4_18_3_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_4_19_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / Handover / Success / PCell Change / SCell no Change / Intra-band Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_4_19_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_4_19_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / Handover / Success / PCell Change / SCell no Change / Inter-band CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_4_19_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_4_19_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / Handover / Success / PCell Change/ Scell no Change / Intra-band non-contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_4_19_3_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_4_20_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / Handover / Scell Change / Success / Intra-band Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_4_20_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_4_20_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / Handover / Scell Change / Success / Inter-band CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_4_20_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_4_20_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / Handover / Scell Change / Success / Intra-band non-Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_4_20_3_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_4_21_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / Handover / Success / SCell release / Intra-band Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_4_21_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_4_21_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / Handover / Success / SCell release / Inter-band CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_4_21_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_4_21_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / Handover / Success / SCell release / Intra-band non-contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_4_21_3_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_4_23_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / Handover / Failure / Re-establishment successful / Intra-band Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_4_23_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_4_23_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / Handover / Failure / Re-establishment successful / Inter-band CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_4_23_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_2_4_23_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / Handover / Failure / Re-establishment successful / Intra-band non-Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_2_4_23_3_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_3_1_17_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / Measurement configuration control and reporting / Intra E-UTRAN measurements / Event A6 / Intra-band Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_3_1_17_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_3_1_17_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / Measurement configuration control and reporting / Intra E-UTRAN measurements / Event A6 / Inter-band CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_3_1_17_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_3_1_17_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / Measurement configuration control and reporting / Intra E-UTRAN measurements / Event A6 / Intra-band non-Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_3_1_17_3_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_3_1_18_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / Measurement configuration control and reporting / Intra E-UTRAN measurements / Additional measurement reporting / Intra-band Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_3_1_18_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_3_1_18_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / Measurement configuration control and reporting / Intra E-UTRAN measurements / Additional measurement reporting / Inter-band CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_3_1_18_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_3_1_18_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / Measurement configuration control and reporting / Intra E-UTRAN measurements / Additional measurement reporting / Intra-band non-contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_3_1_18_3_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_3_1_19() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // eICIC / Measurement configuration control and reporting / CSI change + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_3_1_19_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_3_1_20() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // eICIC / Measurement configuration control and reporting / Event A3 / RSRP and RSRQ measurement on ABS + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_3_1_20_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_3_1_21() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // eICIC / Measurement configuration control and reporting / Event A3 Handover / Neighbour RSRP measurement configuration change + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_3_1_21_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_3_1_22_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / Measurement configuration control and reporting / Intra E-UTRAN measurements / Event A1 / Event A2 / Intra-band Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_3_1_22_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_3_1_22_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / Measurement configuration control and reporting / Intra E-UTRAN measurements / Event A1 / Event A2 / Inter-band CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_3_1_22_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_3_1_22_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / Measurement configuration control and reporting / Intra E-UTRAN measurements / Event A1/Event A2 / Intra-band non-contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_3_1_22_3_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_3_1_28() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // eICIC / Measurement configuration control and reporting / Event A3 / RSRP and RSRQ measurement / Serving ABS + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_3_1_28_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_4_2_7_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / Handover UTRAN to E-UTRAN/ Success / SCell addition / Intra-band Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_4_2_7_1_EUTRA()); + v_UTRAN.start(f_TC_8_4_2_7_1_UTRAN()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_4_2_7_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / RRC connection reconfiguration / Handover UTRAN to E-UTRAN/ Success / SCell addition / Inter-band CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_4_2_7_2_EUTRA()); + v_UTRAN.start(f_TC_8_4_2_7_2_UTRAN()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_4_2_7_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / Measurement configuration control and reporting / Intra E-UTRAN measurements / Additional measurement reporting / Intra-band non-contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_4_2_7_3_EUTRA()); + v_UTRAN.start(f_TC_8_4_2_7_3_UTRAN()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_5_1_7_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / No Radio Link Failure on SCell / RRC Connection Continues on PCell / Intra-band Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_5_1_7_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_5_1_7_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / No Radio Link Failure on SCell / RRC Connection Continues on PCell / Inter-band CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_5_1_7_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_5_1_7_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // CA / No Radio Link Failure on SCell / RRC Connection Continues on PCell / Intra-band non-Contiguous CA + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_5_1_7_3_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_10_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Inter-RAT Immediate MDT / Reporting / Location information / Event B2 + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_10_1_EUTRA()); + v_UTRAN.start(f_TC_8_6_10_1_UTRAN()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_11_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // RACH Optimisation + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_11_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_1_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Immediate MDT / Reporting / Location information + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_1_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_1_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Immediate MDT / Reporting / Location information / Request from eNB / Event A2 + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_1_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_2_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Logged MDT / Intra-frequency measurement, logging and reporting + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_2_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_2_10() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Logged MDT / Logging and reporting / Reporting at RRC connection establishment / PLMN list + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_2_10_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_2_11() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Logged MDT / Logging and reporting / Reporting at intra LTE handover / PLMN list + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_2_11_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_2_12() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Logged MDT / Logging and reporting / Reporting at RRC connection re-establishment / PLMN list + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_2_12_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_2_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Logged MDT / Inter-frequency measurement, logging and reporting + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_2_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_2_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Logged MDT / Logging and reporting / Limiting area scope + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_2_3_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_2_3a() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Logged MDT / Logging and reporting / Limiting area scope / TAC list with PLMN identity + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_2_3a_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_2_4() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Logged MDT / Logging and reporting / Indication of logged measurements at E-UTRA handover + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_2_4_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_2_5() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Logged MDT / Logging and reporting / Indication of logged measurements at E-UTRA re-establishment + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_2_5_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_2_6() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Logged MDT / Release of logged MDT measurement configuration / Expire of duration timer + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(1500); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_2_6_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_2_7() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Logged MDT / Release of logged MDT measurement configuration / Reception of new logged measurement configuration, Detach or UE power off + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_2_7_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_2_8() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Logged MDT / Maintaining logged measurement configuration / UE state transitions and mobility + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(1080); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_2_8_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_2_9() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Logged MDT / Location information + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_2_9_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_3_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Logged MDT / UTRAN inter-RAT measurement, logging and reporting + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_3_1_EUTRA()); + v_UTRAN.start(f_TC_8_6_3_1_UTRAN()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_3_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Logged MDT / GERAN Inter-RAT measurement, logging and reporting + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_GERAN := GERAN_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_3_2_EUTRA()); + v_GERAN.start(f_TC_8_6_3_2_GERAN()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_3_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Logged MDT / CDMA2000 Inter-RAT measurement, logging and reporting + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_CDMA2000 := CDMA2000_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_3_3_EUTRA()); + v_CDMA2000.start(f_TC_8_6_3_3_CDMA2000()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_3_4() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Logged MDT / Logging and reporting / Reporting at UTRAN Inter-RAT handover / PLMN list + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_3_4_EUTRA()); + v_UTRAN.start(f_TC_8_6_3_4_UTRAN()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_4_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Radio Link Failure logging / Reporting of Intra-frequency measurements + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_4_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_4_10() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Radio Link Failure logging / Logging and reporting / Reporting at RRC connection re-establishment / PLMN list + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_4_10_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_4_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Radio Link Failure logging / Reporting of Inter-frequency measurements + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_4_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_4_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Radio Link Failure logging / Reporting at RRC connection establishment and reestablishment + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_4_3_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_4_4() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Radio Link Failure logging / Reporting at E-UTRA handover + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_4_4_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_4_5() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Radio Link Failure logging / Reporting of ECGI of the PCell + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_4_5_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_4_7() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Radio Link Failure logging / Location information + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_4_7_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_4_8() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Radio Link Failure logging / Logging and reporting / Reporting at RRC connection establishment / PLMN list + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_4_8_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_4_9() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Radio Link Failure logging / Logging and reporting / Reporting at intra LTE handover / PLMN list + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_4_9_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_5_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Radio Link Failure logging / Reporting at UTRAN Inter-RAT handover + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_5_1_EUTRA()); + v_UTRAN.start(f_TC_8_6_5_1_UTRAN()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_5_1a() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Radio Link Failure logging / Reporting at UTRAN Inter-RAT handover / PLMN list + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_5_1a_EUTRA()); + v_UTRAN.start(f_TC_8_6_5_1a_UTRAN()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_5_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Radio Link Failure logging / Reporting at GERAN Inter-RAT handover + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_GERAN := GERAN_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_5_2_EUTRA()); + v_GERAN.start(f_TC_8_6_5_2_GERAN()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_5_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Radio Link Failure logging / Reporting CDMA2000 neighbour cell information + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_CDMA2000 := CDMA2000_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_5_3_EUTRA()); + v_CDMA2000.start(f_TC_8_6_5_3_CDMA2000()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_5_4() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Radio Link Failure logging / Reporting of selected UTRA cell + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_5_4_EUTRA()); + v_UTRAN.start(f_TC_8_6_5_4_UTRAN()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_6_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Handover Failure logging / Reporting of Intra-frequency measurements + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_6_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_6_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Handover Failure logging / Reporting of Inter-frequency measurements + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_6_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_6_4() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Handover Failure logging / Location information + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_6_4_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_6_5() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Handover Failure logging / Logging and reporting / Reporting at RRC connection establishment / PLMN list + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_6_5_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_6_6() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Handover Failure logging / Logging and reporting / Reporting at intra LTE handover / PLMN list + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_6_6_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_6_7() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Handover Failure logging / Logging and reporting / Reporting at RRC connection re-establishment / PLMN list + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_6_7_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_7_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Handover Failure logging / Reporting of UTRAN Inter-RAT measurements + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_7_1_EUTRA()); + v_UTRAN.start(f_TC_8_6_7_1_UTRAN()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_7_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Handover Failure logging / Reporting of GERAN Inter-RAT measurements + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_GERAN := GERAN_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_7_2_EUTRA()); + v_GERAN.start(f_TC_8_6_7_2_GERAN()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_7_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Handover Failure logging / Reporting of CDMA2000 Inter-RAT measurements + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_CDMA2000 := CDMA2000_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_7_3_EUTRA()); + v_CDMA2000.start(f_TC_8_6_7_3_CDMA2000()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_7_4() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Handover Failure logging / Reporting at UTRAN Inter-RAT handover / PLMN list + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_7_4_EUTRA()); + v_UTRAN.start(f_TC_8_6_7_4_UTRAN()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_8_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Connection Establishment Failure logging / Logging and reporting / T300 expiry + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_8_1_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_8_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Connection Establishment Failure logging / Logging and reporting / Reporting at intra-LTE handover + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_8_2_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_8_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Connection Establishment Failure logging / Logging and reporting / Reporting at RRC connection re-establishment + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_8_3_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_8_4() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Connection Establishment Failure logging / Logging and reporting / Location Information + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_8_4_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_8_5() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Connection Establishment Failure logging / Logging and reporting / Reporting of Intra-frequency measurements + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_8_5_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_8_6() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Connection Establishment Failure logging / Logging and reporting / Reporting of Inter-frequency measurements + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_8_6_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_9_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Connection Establishment Failure logging / Logging and reporting / Reporting at UTRAN Inter-RAT handover + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_9_1_EUTRA()); + v_UTRAN.start(f_TC_8_6_9_1_UTRAN()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_9_2() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Connection Establishment Failure logging / Logging and reporting / Reporting of UTRAN Inter-RAT measurements + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_9_2_EUTRA()); + v_UTRAN.start(f_TC_8_6_9_2_UTRAN()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_9_3() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Connection Establishment Failure logging / Logging and reporting / Reporting of GERAN Inter-RAT measurements + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_GERAN := GERAN_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_9_3_EUTRA()); + v_GERAN.start(f_TC_8_6_9_3_GERAN()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_6_9_4() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Connection Establishment Failure logging / Logging and reporting / Reporting of CDMA2000 Inter-RAT measurements + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_CDMA2000 := CDMA2000_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_6_9_4_EUTRA()); + v_CDMA2000.start(f_TC_8_6_9_4_CDMA2000()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_8_7_1() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Inter-RAT / ANR measurement, logging and reporting / E-UTRAN cell + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + v_UTRAN := UTRAN_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_8_7_1_EUTRA()); + v_UTRAN.start(f_TC_8_7_1_UTRAN()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_9_2_1_1_27() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Attach / Abnormal case / Network reject with Extended Wait Timer + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_9_2_1_1_27_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_9_2_1_1_27a() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Attach Procedure / EAB broadcast handling / ExtendedAccessBarring configured in the UE + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_9_2_1_1_27a_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_9_2_1_1_2a() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Attach Procedure / AttachWithIMSI configured / Selected PLMN is neither the registered PLMN nor in the list of equivalent PLMNs / Success + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_9_2_1_1_2a_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_9_2_1_1_7b() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // UEs supporting E-UTRA and EPS attach (with or without pre-configuration) + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_9_2_1_1_7b_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_9_2_1_2_4a() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Successful combined attach procedure / EPS service only / Congestion + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_9_2_1_2_4a_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_9_2_3_1_20a() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Normal tracking area update / Rejected / Congestion + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(1020); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_9_2_3_1_20a_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_9_2_3_1_5a() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Periodic tracking area update / Accepted / Per-device timer + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(1200); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_9_2_3_1_5a_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_9_2_3_1_8a() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Normal tracking area update / low priority override + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_9_2_3_1_8a_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_9_2_3_1_8b() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Normal tracking area update / EAB broadcast handling / ExtendedAccessBarring configured in the UE / ExtendedAccessBarring and Override_ExtendedAccessBarring configured in the UE + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_9_2_3_1_8b_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_9_2_3_2_4a() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Combined tracking area update / Successful for EPS services only / Congestion + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_9_2_3_2_4a_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_9_4_5() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Integrity protection / Correct functionality of EPS NAS integrity algorithm / ZUC + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_9_4_5_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + //---------------------------------------------------------------------------- + testcase TC_9_4_6() runs on MTC_LTE_IRAT system SYSTEM_LTE_IRAT { + // @purpose + // Ciphering and deciphering / Correct functionality of EPS NAS encryption algorithm / ZUC + var EUTRA_PTC v_EUTRA := null; + var UTRAN_PTC v_UTRAN := null; + var GERAN_PTC v_GERAN := null; + var CDMA2000_PTC v_CDMA2000 := null; + var IMS_PTC v_IMS1 := null; + var IMS_PTC v_IMS2 := null; + + timer t_GuardTimer := int2float(360); + + v_EUTRA := EUTRA_PTC.create alive; + + f_MTC_ConnectPTCs_LTE_IRAT(v_EUTRA, v_UTRAN, v_GERAN, v_CDMA2000, v_IMS1, v_IMS2); + + v_EUTRA.start(f_TC_9_4_6_EUTRA()); + + t_GuardTimer.start; + + f_MTC_MainLoop(t_GuardTimer); + } + //---------------------------------------------------------------------------- + control { + if (f_ExecutionGuideline("TC_10_5_1a") and f_SelectionExpr(C204)) { execute(TC_10_5_1a()); } + if (f_ExecutionGuideline("TC_10_5_1b") and f_SelectionExpr(C204)) { execute(TC_10_5_1b()); } + if (f_ExecutionGuideline("TC_10_5_4") and f_SelectionExpr(C178)) { execute(TC_10_5_4()); } + if (f_ExecutionGuideline("TC_10_8_8") and f_SelectionExpr(C196)) { execute(TC_10_8_8()); } + if (f_ExecutionGuideline("TC_13_4_3_10") and f_SelectionExpr(C159)) { execute(TC_13_4_3_10()); } + if (f_ExecutionGuideline("TC_13_4_3_11") and f_SelectionExpr(C159)) { execute(TC_13_4_3_11()); } + if (f_ExecutionGuideline("TC_13_4_3_13") and f_SelectionExpr(C159)) { execute(TC_13_4_3_13()); } + if (f_ExecutionGuideline("TC_13_4_3_14") and f_SelectionExpr(C159)) { execute(TC_13_4_3_14()); } + if (f_ExecutionGuideline("TC_13_4_3_15") and f_SelectionExpr(C161)) { execute(TC_13_4_3_15()); } + if (f_ExecutionGuideline("TC_13_4_3_16") and f_SelectionExpr(C159)) { execute(TC_13_4_3_16()); } + if (f_ExecutionGuideline("TC_13_4_3_18") and f_SelectionExpr(C201)) { execute(TC_13_4_3_18()); } + if (f_ExecutionGuideline("TC_13_4_3_19") and f_SelectionExpr(C202)) { execute(TC_13_4_3_19()); } + if (f_ExecutionGuideline("TC_13_4_3_20") and f_SelectionExpr(C201)) { execute(TC_13_4_3_20()); } + if (f_ExecutionGuideline("TC_13_4_3_21") and f_SelectionExpr(C198)) { execute(TC_13_4_3_21()); } + if (f_ExecutionGuideline("TC_13_4_3_22") and f_SelectionExpr(C199)) { execute(TC_13_4_3_22()); } + if (f_ExecutionGuideline("TC_13_4_3_23") and f_SelectionExpr(C198)) { execute(TC_13_4_3_23()); } + if (f_ExecutionGuideline("TC_13_4_3_24") and f_SelectionExpr(C193)) { execute(TC_13_4_3_24()); } + if (f_ExecutionGuideline("TC_13_4_3_25") and f_SelectionExpr(C193)) { execute(TC_13_4_3_25()); } + if (f_ExecutionGuideline("TC_13_4_3_26") and f_SelectionExpr(C193)) { execute(TC_13_4_3_26()); } + if (f_ExecutionGuideline("TC_13_4_3_27") and f_SelectionExpr(C193)) { execute(TC_13_4_3_27()); } + if (f_ExecutionGuideline("TC_13_4_3_28") and f_SelectionExpr(C193)) { execute(TC_13_4_3_28()); } + if (f_ExecutionGuideline("TC_13_4_3_30") and f_SelectionExpr(C200)) { execute(TC_13_4_3_30()); } + if (f_ExecutionGuideline("TC_13_4_3_7") and f_SelectionExpr(C159)) { execute(TC_13_4_3_7()); } + if (f_ExecutionGuideline("TC_13_4_3_8") and f_SelectionExpr(C159)) { execute(TC_13_4_3_8()); } + if (f_ExecutionGuideline("TC_13_4_3_9") and f_SelectionExpr(C159)) { execute(TC_13_4_3_9()); } + if (f_ExecutionGuideline("TC_17_1_1") and f_SelectionExpr(C113)) { execute(TC_17_1_1()); } + if (f_ExecutionGuideline("TC_17_1_2") and f_SelectionExpr(C113)) { execute(TC_17_1_2()); } + if (f_ExecutionGuideline("TC_17_1_3") and f_SelectionExpr(C113)) { execute(TC_17_1_3()); } + if (f_ExecutionGuideline("TC_17_1_4") and f_SelectionExpr(C113)) { execute(TC_17_1_4()); } + if (f_ExecutionGuideline("TC_17_1_5") and f_SelectionExpr(C113)) { execute(TC_17_1_5()); } + if (f_ExecutionGuideline("TC_17_2_1") and f_SelectionExpr(C113)) { execute(TC_17_2_1()); } + if (f_ExecutionGuideline("TC_17_2_2") and f_SelectionExpr(C113)) { execute(TC_17_2_2()); } + if (f_ExecutionGuideline("TC_17_2_3") and f_SelectionExpr(C113)) { execute(TC_17_2_3()); } + if (f_ExecutionGuideline("TC_17_2_4") and f_SelectionExpr(C113)) { execute(TC_17_2_4()); } + if (f_ExecutionGuideline("TC_17_3_1") and f_SelectionExpr(C113)) { execute(TC_17_3_1()); } + if (f_ExecutionGuideline("TC_17_3_2") and f_SelectionExpr(C113)) { execute(TC_17_3_2()); } + if (f_ExecutionGuideline("TC_17_4_1") and f_SelectionExpr(C113a)) { execute(TC_17_4_1()); } + if (f_ExecutionGuideline("TC_17_4_10_1") and f_SelectionExpr(C113e)) { execute(TC_17_4_10_1()); } + if (f_ExecutionGuideline("TC_17_4_10_2") and f_SelectionExpr(C113f)) { execute(TC_17_4_10_2()); } + if (f_ExecutionGuideline("TC_17_4_11_1") and f_SelectionExpr(C113c)) { execute(TC_17_4_11_1()); } + if (f_ExecutionGuideline("TC_17_4_11_2") and f_SelectionExpr(C113d)) { execute(TC_17_4_11_2()); } + if (f_ExecutionGuideline("TC_17_4_1a") and f_SelectionExpr(C113a)) { execute(TC_17_4_1a()); } + if (f_ExecutionGuideline("TC_17_4_2") and f_SelectionExpr(C113a)) { execute(TC_17_4_2()); } + if (f_ExecutionGuideline("TC_17_4_2a") and f_SelectionExpr(C113a)) { execute(TC_17_4_2a()); } + if (f_ExecutionGuideline("TC_17_4_3") and f_SelectionExpr(C113b)) { execute(TC_17_4_3()); } + if (f_ExecutionGuideline("TC_17_4_3a") and f_SelectionExpr(C113b)) { execute(TC_17_4_3a()); } + if (f_ExecutionGuideline("TC_17_4_4") and f_SelectionExpr(C113a)) { execute(TC_17_4_4()); } + if (f_ExecutionGuideline("TC_17_4_5") and f_SelectionExpr(C113a)) { execute(TC_17_4_5()); } + if (f_ExecutionGuideline("TC_17_4_6") and f_SelectionExpr(C113a)) { execute(TC_17_4_6()); } + if (f_ExecutionGuideline("TC_17_4_7") and f_SelectionExpr(C113a)) { execute(TC_17_4_7()); } + if (f_ExecutionGuideline("TC_17_4_8") and f_SelectionExpr(C113a)) { execute(TC_17_4_8()); } + if (f_ExecutionGuideline("TC_17_4_9_1") and f_SelectionExpr(C113c)) { execute(TC_17_4_9_1()); } + if (f_ExecutionGuideline("TC_17_4_9_2") and f_SelectionExpr(C113c)) { execute(TC_17_4_9_2()); } + if (f_ExecutionGuideline("TC_6_1_1_7") and f_SelectionExpr(C179)) { execute(TC_6_1_1_7()); } + if (f_ExecutionGuideline("TC_6_1_1_7a") and f_SelectionExpr(C179)) { execute(TC_6_1_1_7a()); } + if (f_ExecutionGuideline("TC_6_2_4_1") and f_SelectionExpr(C01a)) { execute(TC_6_2_4_1()); } + if (f_ExecutionGuideline("TC_6_2_4_2") and f_SelectionExpr(C01a)) { execute(TC_6_2_4_2()); } + if (f_ExecutionGuideline("TC_6_2_4_3") and f_SelectionExpr(C01a)) { execute(TC_6_2_4_3()); } + if (f_ExecutionGuideline("TC_6_2_4_4") and f_SelectionExpr(C01a)) { execute(TC_6_2_4_4()); } + if (f_ExecutionGuideline("TC_6_2_4_5") and f_SelectionExpr(C01a)) { execute(TC_6_2_4_5()); } + if (f_ExecutionGuideline("TC_6_2_4_6") and f_SelectionExpr(C01a)) { execute(TC_6_2_4_6()); } + if (f_ExecutionGuideline("TC_6_2_4_7") and f_SelectionExpr(C01a)) { execute(TC_6_2_4_7()); } + if (f_ExecutionGuideline("TC_7_1_2_10_1") and f_SelectionExpr(C190)) { execute(TC_7_1_2_10_1()); } + if (f_ExecutionGuideline("TC_7_1_2_10_2") and f_SelectionExpr(C191)) { execute(TC_7_1_2_10_2()); } + if (f_ExecutionGuideline("TC_7_1_2_10_3") and f_SelectionExpr(C192)) { execute(TC_7_1_2_10_3()); } + if (f_ExecutionGuideline("TC_7_1_2_11_1") and f_SelectionExpr(C190)) { execute(TC_7_1_2_11_1()); } + if (f_ExecutionGuideline("TC_7_1_2_11_2") and f_SelectionExpr(C191)) { execute(TC_7_1_2_11_2()); } + if (f_ExecutionGuideline("TC_7_1_2_11_3") and f_SelectionExpr(C192)) { execute(TC_7_1_2_11_3()); } + if (f_ExecutionGuideline("TC_7_1_3_11_1") and f_SelectionExpr(C132)) { execute(TC_7_1_3_11_1()); } + if (f_ExecutionGuideline("TC_7_1_3_11_2") and f_SelectionExpr(C151)) { execute(TC_7_1_3_11_2()); } + if (f_ExecutionGuideline("TC_7_1_3_11_3") and f_SelectionExpr(C132a)) { execute(TC_7_1_3_11_3()); } + if (f_ExecutionGuideline("TC_7_1_3_12") and f_SelectionExpr(C175)) { execute(TC_7_1_3_12()); } + if (f_ExecutionGuideline("TC_7_1_3_12a") and f_SelectionExpr(C175)) { execute(TC_7_1_3_12a()); } + if (f_ExecutionGuideline("TC_7_1_3_13") and f_SelectionExpr(C175)) { execute(TC_7_1_3_13()); } + if (f_ExecutionGuideline("TC_7_1_3_13a") and f_SelectionExpr(C175)) { execute(TC_7_1_3_13a()); } + if (f_ExecutionGuideline("TC_7_1_4_18")) { execute(TC_7_1_4_18()); } + if (f_ExecutionGuideline("TC_7_1_4_19_1") and f_SelectionExpr(C133)) { execute(TC_7_1_4_19_1()); } + if (f_ExecutionGuideline("TC_7_1_4_19_2") and f_SelectionExpr(C162)) { execute(TC_7_1_4_19_2()); } + if (f_ExecutionGuideline("TC_7_1_4_19_3") and f_SelectionExpr(C207)) { execute(TC_7_1_4_19_3()); } + if (f_ExecutionGuideline("TC_7_1_4_20_1") and f_SelectionExpr(C133)) { execute(TC_7_1_4_20_1()); } + if (f_ExecutionGuideline("TC_7_1_4_20_2") and f_SelectionExpr(C162)) { execute(TC_7_1_4_20_2()); } + if (f_ExecutionGuideline("TC_7_1_4_20_3") and f_SelectionExpr(C207)) { execute(TC_7_1_4_20_3()); } + if (f_ExecutionGuideline("TC_7_1_4_21")) { execute(TC_7_1_4_21()); } + if (f_ExecutionGuideline("TC_7_1_9_1_1") and f_SelectionExpr(C132)) { execute(TC_7_1_9_1_1()); } + if (f_ExecutionGuideline("TC_7_1_9_1_2") and f_SelectionExpr(C151)) { execute(TC_7_1_9_1_2()); } + if (f_ExecutionGuideline("TC_7_1_9_1_3") and f_SelectionExpr(C132a)) { execute(TC_7_1_9_1_3()); } + if (f_ExecutionGuideline("TC_7_3_3_5")) { execute(TC_7_3_3_5()); } + if (f_ExecutionGuideline("TC_7_3_3_6")) { execute(TC_7_3_3_6()); } + if (f_ExecutionGuideline("TC_7_3_4_3")) { execute(TC_7_3_4_3()); } + if (f_ExecutionGuideline("TC_8_1_1_7") and f_SelectionExpr(C194)) { execute(TC_8_1_1_7()); } + if (f_ExecutionGuideline("TC_8_2_2_3_1") and f_SelectionExpr(C132)) { execute(TC_8_2_2_3_1()); } + if (f_ExecutionGuideline("TC_8_2_2_3_2") and f_SelectionExpr(C151)) { execute(TC_8_2_2_3_2()); } + if (f_ExecutionGuideline("TC_8_2_2_3_3") and f_SelectionExpr(C132a)) { execute(TC_8_2_2_3_3()); } + if (f_ExecutionGuideline("TC_8_2_2_4_1") and f_SelectionExpr(C132)) { execute(TC_8_2_2_4_1()); } + if (f_ExecutionGuideline("TC_8_2_2_4_2") and f_SelectionExpr(C151)) { execute(TC_8_2_2_4_2()); } + if (f_ExecutionGuideline("TC_8_2_2_4_3") and f_SelectionExpr(C132a)) { execute(TC_8_2_2_4_3()); } + if (f_ExecutionGuideline("TC_8_2_2_5_1") and f_SelectionExpr(C132)) { execute(TC_8_2_2_5_1()); } + if (f_ExecutionGuideline("TC_8_2_2_5_2") and f_SelectionExpr(C151)) { execute(TC_8_2_2_5_2()); } + if (f_ExecutionGuideline("TC_8_2_2_5_3") and f_SelectionExpr(C132a)) { execute(TC_8_2_2_5_3()); } + if (f_ExecutionGuideline("TC_8_2_2_6_1") and f_SelectionExpr(C187)) { execute(TC_8_2_2_6_1()); } + if (f_ExecutionGuideline("TC_8_2_2_6_2") and f_SelectionExpr(C187)) { execute(TC_8_2_2_6_2()); } + if (f_ExecutionGuideline("TC_8_2_2_6_3") and f_SelectionExpr(C187)) { execute(TC_8_2_2_6_3()); } + if (f_ExecutionGuideline("TC_8_2_2_7_1") and f_SelectionExpr(C190)) { execute(TC_8_2_2_7_1()); } + if (f_ExecutionGuideline("TC_8_2_2_7_2") and f_SelectionExpr(C191)) { execute(TC_8_2_2_7_2()); } + if (f_ExecutionGuideline("TC_8_2_2_7_3") and f_SelectionExpr(C192)) { execute(TC_8_2_2_7_3()); } + if (f_ExecutionGuideline("TC_8_2_2_8") and f_SelectionExpr(C154)) { execute(TC_8_2_2_8()); } + if (f_ExecutionGuideline("TC_8_2_4_16_1") and f_SelectionExpr(C176)) { execute(TC_8_2_4_16_1()); } + if (f_ExecutionGuideline("TC_8_2_4_16_2") and f_SelectionExpr(C177)) { execute(TC_8_2_4_16_2()); } + if (f_ExecutionGuideline("TC_8_2_4_16_3") and f_SelectionExpr(C132a)) { execute(TC_8_2_4_16_3()); } + if (f_ExecutionGuideline("TC_8_2_4_17_1") and f_SelectionExpr(C132)) { execute(TC_8_2_4_17_1()); } + if (f_ExecutionGuideline("TC_8_2_4_17_2") and f_SelectionExpr(C151)) { execute(TC_8_2_4_17_2()); } + if (f_ExecutionGuideline("TC_8_2_4_17_3") and f_SelectionExpr(C132a)) { execute(TC_8_2_4_17_3()); } + if (f_ExecutionGuideline("TC_8_2_4_18_1") and f_SelectionExpr(C132)) { execute(TC_8_2_4_18_1()); } + if (f_ExecutionGuideline("TC_8_2_4_18_2") and f_SelectionExpr(C151)) { execute(TC_8_2_4_18_2()); } + if (f_ExecutionGuideline("TC_8_2_4_18_3") and f_SelectionExpr(C132a)) { execute(TC_8_2_4_18_3()); } + if (f_ExecutionGuideline("TC_8_2_4_19_1") and f_SelectionExpr(C132)) { execute(TC_8_2_4_19_1()); } + if (f_ExecutionGuideline("TC_8_2_4_19_2") and f_SelectionExpr(C151)) { execute(TC_8_2_4_19_2()); } + if (f_ExecutionGuideline("TC_8_2_4_19_3") and f_SelectionExpr(C132a)) { execute(TC_8_2_4_19_3()); } + if (f_ExecutionGuideline("TC_8_2_4_20_1") and f_SelectionExpr(C132)) { execute(TC_8_2_4_20_1()); } + if (f_ExecutionGuideline("TC_8_2_4_20_2") and f_SelectionExpr(C151)) { execute(TC_8_2_4_20_2()); } + if (f_ExecutionGuideline("TC_8_2_4_20_3") and f_SelectionExpr(C132a)) { execute(TC_8_2_4_20_3()); } + if (f_ExecutionGuideline("TC_8_2_4_21_1") and f_SelectionExpr(C132)) { execute(TC_8_2_4_21_1()); } + if (f_ExecutionGuideline("TC_8_2_4_21_2") and f_SelectionExpr(C151)) { execute(TC_8_2_4_21_2()); } + if (f_ExecutionGuideline("TC_8_2_4_21_3") and f_SelectionExpr(C132a)) { execute(TC_8_2_4_21_3()); } + if (f_ExecutionGuideline("TC_8_2_4_23_1") and f_SelectionExpr(C132)) { execute(TC_8_2_4_23_1()); } + if (f_ExecutionGuideline("TC_8_2_4_23_2") and f_SelectionExpr(C151)) { execute(TC_8_2_4_23_2()); } + if (f_ExecutionGuideline("TC_8_2_4_23_3") and f_SelectionExpr(C132a)) { execute(TC_8_2_4_23_3()); } + if (f_ExecutionGuideline("TC_8_3_1_17_1") and f_SelectionExpr(C134)) { execute(TC_8_3_1_17_1()); } + if (f_ExecutionGuideline("TC_8_3_1_17_2") and f_SelectionExpr(C152)) { execute(TC_8_3_1_17_2()); } + if (f_ExecutionGuideline("TC_8_3_1_17_3") and f_SelectionExpr(C134a)) { execute(TC_8_3_1_17_3()); } + if (f_ExecutionGuideline("TC_8_3_1_18_1") and f_SelectionExpr(C132)) { execute(TC_8_3_1_18_1()); } + if (f_ExecutionGuideline("TC_8_3_1_18_2") and f_SelectionExpr(C151)) { execute(TC_8_3_1_18_2()); } + if (f_ExecutionGuideline("TC_8_3_1_18_3") and f_SelectionExpr(C132a)) { execute(TC_8_3_1_18_3()); } + if (f_ExecutionGuideline("TC_8_3_1_19") and f_SelectionExpr(C154)) { execute(TC_8_3_1_19()); } + if (f_ExecutionGuideline("TC_8_3_1_20") and f_SelectionExpr(C154)) { execute(TC_8_3_1_20()); } + if (f_ExecutionGuideline("TC_8_3_1_21") and f_SelectionExpr(C154)) { execute(TC_8_3_1_21()); } + if (f_ExecutionGuideline("TC_8_3_1_22_1") and f_SelectionExpr(C132)) { execute(TC_8_3_1_22_1()); } + if (f_ExecutionGuideline("TC_8_3_1_22_2") and f_SelectionExpr(C151)) { execute(TC_8_3_1_22_2()); } + if (f_ExecutionGuideline("TC_8_3_1_22_3") and f_SelectionExpr(C132)) { execute(TC_8_3_1_22_3()); } + if (f_ExecutionGuideline("TC_8_3_1_28") and f_SelectionExpr(C154)) { execute(TC_8_3_1_28()); } + if (f_ExecutionGuideline("TC_8_4_2_7_1") and f_SelectionExpr(C155)) { execute(TC_8_4_2_7_1()); } + if (f_ExecutionGuideline("TC_8_4_2_7_2") and f_SelectionExpr(C155a)) { execute(TC_8_4_2_7_2()); } + if (f_ExecutionGuideline("TC_8_4_2_7_3") and f_SelectionExpr(C155b)) { execute(TC_8_4_2_7_3()); } + if (f_ExecutionGuideline("TC_8_5_1_7_1") and f_SelectionExpr(C132)) { execute(TC_8_5_1_7_1()); } + if (f_ExecutionGuideline("TC_8_5_1_7_2") and f_SelectionExpr(C151)) { execute(TC_8_5_1_7_2()); } + if (f_ExecutionGuideline("TC_8_5_1_7_3") and f_SelectionExpr(C132a)) { execute(TC_8_5_1_7_3()); } + if (f_ExecutionGuideline("TC_8_6_10_1") and f_SelectionExpr(C180)) { execute(TC_8_6_10_1()); } + if (f_ExecutionGuideline("TC_8_6_11_1") and f_SelectionExpr(C181)) { execute(TC_8_6_11_1()); } + if (f_ExecutionGuideline("TC_8_6_1_1") and f_SelectionExpr(C147)) { execute(TC_8_6_1_1()); } + if (f_ExecutionGuideline("TC_8_6_1_2") and f_SelectionExpr(C147)) { execute(TC_8_6_1_2()); } + if (f_ExecutionGuideline("TC_8_6_2_1") and f_SelectionExpr(C137)) { execute(TC_8_6_2_1()); } + if (f_ExecutionGuideline("TC_8_6_2_10") and f_SelectionExpr(C137)) { execute(TC_8_6_2_10()); } + if (f_ExecutionGuideline("TC_8_6_2_11") and f_SelectionExpr(C137)) { execute(TC_8_6_2_11()); } + if (f_ExecutionGuideline("TC_8_6_2_12") and f_SelectionExpr(C137)) { execute(TC_8_6_2_12()); } + if (f_ExecutionGuideline("TC_8_6_2_2") and f_SelectionExpr(C137)) { execute(TC_8_6_2_2()); } + if (f_ExecutionGuideline("TC_8_6_2_3") and f_SelectionExpr(C137)) { execute(TC_8_6_2_3()); } + if (f_ExecutionGuideline("TC_8_6_2_3a") and f_SelectionExpr(C137)) { execute(TC_8_6_2_3a()); } + if (f_ExecutionGuideline("TC_8_6_2_4") and f_SelectionExpr(C137)) { execute(TC_8_6_2_4()); } + if (f_ExecutionGuideline("TC_8_6_2_5") and f_SelectionExpr(C137)) { execute(TC_8_6_2_5()); } + if (f_ExecutionGuideline("TC_8_6_2_6") and f_SelectionExpr(C137)) { execute(TC_8_6_2_6()); } + if (f_ExecutionGuideline("TC_8_6_2_7") and f_SelectionExpr(C137)) { execute(TC_8_6_2_7()); } + if (f_ExecutionGuideline("TC_8_6_2_8") and f_SelectionExpr(C137)) { execute(TC_8_6_2_8()); } + if (f_ExecutionGuideline("TC_8_6_2_9") and f_SelectionExpr(C203)) { execute(TC_8_6_2_9()); } + if (f_ExecutionGuideline("TC_8_6_3_1") and f_SelectionExpr(C138)) { execute(TC_8_6_3_1()); } + if (f_ExecutionGuideline("TC_8_6_3_2") and f_SelectionExpr(C163)) { execute(TC_8_6_3_2()); } + if (f_ExecutionGuideline("TC_8_6_3_3") and f_SelectionExpr(C165)) { execute(TC_8_6_3_3()); } + if (f_ExecutionGuideline("TC_8_6_3_4") and f_SelectionExpr(C138)) { execute(TC_8_6_3_4()); } + if (f_ExecutionGuideline("TC_8_6_4_1")) { execute(TC_8_6_4_1()); } + if (f_ExecutionGuideline("TC_8_6_4_10")) { execute(TC_8_6_4_10()); } + if (f_ExecutionGuideline("TC_8_6_4_2") and f_SelectionExpr(C10)) { execute(TC_8_6_4_2()); } + if (f_ExecutionGuideline("TC_8_6_4_3")) { execute(TC_8_6_4_3()); } + if (f_ExecutionGuideline("TC_8_6_4_4") and f_SelectionExpr(C184)) { execute(TC_8_6_4_4()); } + if (f_ExecutionGuideline("TC_8_6_4_5")) { execute(TC_8_6_4_5()); } + if (f_ExecutionGuideline("TC_8_6_4_7") and f_SelectionExpr(C147)) { execute(TC_8_6_4_7()); } + if (f_ExecutionGuideline("TC_8_6_4_8")) { execute(TC_8_6_4_8()); } + if (f_ExecutionGuideline("TC_8_6_4_9")) { execute(TC_8_6_4_9()); } + if (f_ExecutionGuideline("TC_8_6_5_1") and f_SelectionExpr(C146)) { execute(TC_8_6_5_1()); } + if (f_ExecutionGuideline("TC_8_6_5_1a") and f_SelectionExpr(C205)) { execute(TC_8_6_5_1a()); } + if (f_ExecutionGuideline("TC_8_6_5_2") and f_SelectionExpr(C148)) { execute(TC_8_6_5_2()); } + if (f_ExecutionGuideline("TC_8_6_5_3") and f_SelectionExpr(C06)) { execute(TC_8_6_5_3()); } + if (f_ExecutionGuideline("TC_8_6_5_4") and f_SelectionExpr(C37)) { execute(TC_8_6_5_4()); } + if (f_ExecutionGuideline("TC_8_6_6_1")) { execute(TC_8_6_6_1()); } + if (f_ExecutionGuideline("TC_8_6_6_2") and f_SelectionExpr(C21)) { execute(TC_8_6_6_2()); } + if (f_ExecutionGuideline("TC_8_6_6_4") and f_SelectionExpr(C147)) { execute(TC_8_6_6_4()); } + if (f_ExecutionGuideline("TC_8_6_6_5")) { execute(TC_8_6_6_5()); } + if (f_ExecutionGuideline("TC_8_6_6_6") and f_SelectionExpr(C21)) { execute(TC_8_6_6_6()); } + if (f_ExecutionGuideline("TC_8_6_6_7") and f_SelectionExpr(C10)) { execute(TC_8_6_6_7()); } + if (f_ExecutionGuideline("TC_8_6_7_1") and f_SelectionExpr(C01)) { execute(TC_8_6_7_1()); } + if (f_ExecutionGuideline("TC_8_6_7_2") and f_SelectionExpr(C05)) { execute(TC_8_6_7_2()); } + if (f_ExecutionGuideline("TC_8_6_7_3") and f_SelectionExpr(C06)) { execute(TC_8_6_7_3()); } + if (f_ExecutionGuideline("TC_8_6_7_4") and f_SelectionExpr(C37)) { execute(TC_8_6_7_4()); } + if (f_ExecutionGuideline("TC_8_6_8_1")) { execute(TC_8_6_8_1()); } + if (f_ExecutionGuideline("TC_8_6_8_2") and f_SelectionExpr(C21)) { execute(TC_8_6_8_2()); } + if (f_ExecutionGuideline("TC_8_6_8_3")) { execute(TC_8_6_8_3()); } + if (f_ExecutionGuideline("TC_8_6_8_4") and f_SelectionExpr(C147)) { execute(TC_8_6_8_4()); } + if (f_ExecutionGuideline("TC_8_6_8_5")) { execute(TC_8_6_8_5()); } + if (f_ExecutionGuideline("TC_8_6_8_6")) { execute(TC_8_6_8_6()); } + if (f_ExecutionGuideline("TC_8_6_9_1") and f_SelectionExpr(C37)) { execute(TC_8_6_9_1()); } + if (f_ExecutionGuideline("TC_8_6_9_2") and f_SelectionExpr(C01)) { execute(TC_8_6_9_2()); } + if (f_ExecutionGuideline("TC_8_6_9_3") and f_SelectionExpr(C05)) { execute(TC_8_6_9_3()); } + if (f_ExecutionGuideline("TC_8_6_9_4") and f_SelectionExpr(C06)) { execute(TC_8_6_9_4()); } + if (f_ExecutionGuideline("TC_8_7_1") and f_SelectionExpr(C145)) { execute(TC_8_7_1()); } + if (f_ExecutionGuideline("TC_9_2_1_1_27") and f_SelectionExpr(C178)) { execute(TC_9_2_1_1_27()); } + if (f_ExecutionGuideline("TC_9_2_1_1_27a") and f_SelectionExpr(C194)) { execute(TC_9_2_1_1_27a()); } + if (f_ExecutionGuideline("TC_9_2_1_1_2a") and f_SelectionExpr(C173)) { execute(TC_9_2_1_1_2a()); } + if (f_ExecutionGuideline("TC_9_2_1_1_7b") and f_SelectionExpr(C04)) { execute(TC_9_2_1_1_7b()); } + if (f_ExecutionGuideline("TC_9_2_1_2_4a")) { execute(TC_9_2_1_2_4a()); } + if (f_ExecutionGuideline("TC_9_2_3_1_20a")) { execute(TC_9_2_3_1_20a()); } + if (f_ExecutionGuideline("TC_9_2_3_1_5a") and f_SelectionExpr(C174)) { execute(TC_9_2_3_1_5a()); } + if (f_ExecutionGuideline("TC_9_2_3_1_8a") and f_SelectionExpr(C195)) { execute(TC_9_2_3_1_8a()); } + if (f_ExecutionGuideline("TC_9_2_3_1_8b") and f_SelectionExpr(C197)) { execute(TC_9_2_3_1_8b()); } + if (f_ExecutionGuideline("TC_9_2_3_2_4a")) { execute(TC_9_2_3_2_4a()); } + if (f_ExecutionGuideline("TC_9_4_5")) { execute(TC_9_4_5()); } + if (f_ExecutionGuideline("TC_9_4_6")) { execute(TC_9_4_6()); } + } +} diff --git a/LTE_A_IWD_14wk37/PicsPixit/CDMA2000_Parameters.ttcn b/LTE_A_IWD_14wk37/PicsPixit/CDMA2000_Parameters.ttcn new file mode 100644 index 0000000..ec01241 --- /dev/null +++ b/LTE_A_IWD_14wk37/PicsPixit/CDMA2000_Parameters.ttcn @@ -0,0 +1,91 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +/******************************************************************************/ + +/******************************************************************************/ +// AUTOMATICALLY GENERATED MODULE - DO NOT MODIFY +// $Date: +// $Author: +// $Rev: +/******************************************************************************/ + +module CDMA2000_Parameters { + + import from CommonDefs all; + import from CDMA2000_CommonDefs all; + + //**************************************************************************** + // PIXIT Parameters + //---------------------------------------------------------------------------- + modulepar BandclassCDMA2000_Type px_1XRTT_BandClass := 1; // @desc Band Class; Table 1.5-1 of C.S0057_D. Default value corresponds to 1.8 to 2.0 GHz PCS band + + modulepar B16_Type px_1XRTT_BaseId_Cell19 := int2bit(39, 16); // @desc Base Id of Cell 19 + + modulepar B16_Type px_1XRTT_BaseId_Cell20 := int2bit(40, 16); // @desc Base Id of Cell 20 + + modulepar B16_Type px_1XRTT_BaseId_Cell21 := int2bit(41, 16); // @desc Base Id of Cell 21 + + modulepar B16_Type px_1XRTT_BaseId_Cell22 := int2bit(42, 16); // @desc Base Id of Cell 22 + + modulepar ProtRev_Type px_1XRTT_MinProtRev := 0; // @desc Minimum protocol revision support by Base Station + + modulepar B16_Type px_1XRTT_NID := int2bit(100, 16); + // @desc default Network ID of 1xRTT Cells + + modulepar B15_Type px_1XRTT_SID := int2bit(200, 15); + // @desc default System ID of 1xRTT Cells + + modulepar EncryptionMode_Type px_1XRTT_Sig_EncMode := 2; // @desc Rijndael algorithm + + modulepar O4_Type px_1XRTT_TMSI_Def := '1234ABCD'O; // @desc TMSI to be used in 1xRTT + + modulepar EncryptionMode_Type px_1XRTT_UserInfo_EncMode := 2; // @desc Rijndael algorithm + + modulepar B3_Type px_1XRTT_Zone_Timer := '000'B; // @desc Zone timer sent in 'System Parameters Message' overhead message + + modulepar ColorCode_Type px_ColorCode := 64; // @desc Color code of the subnet to which the sectors belong; Same for all HRPD cells + + modulepar ColorCode_Type px_ColorCodeDiff := 128; // @desc Color code of the subnet to which the sectors belong; A different colour code than default + + modulepar BandclassCDMA2000_Type px_HRPD_BandClass := 1; // @desc Band Class; Table 1.5-1 of C.S0057_D. Default value corresponds to 1.8 to 2.0 GHz PCS band + + modulepar SectorID_HRPD_Type px_HRPD_SectorID_Cell15 := oct2bit('FEA00000000000000000000000000001'O); + // @desc Sector ID of Cell 15; Clause 13.9 of C.S0024_B + + modulepar SectorID_HRPD_Type px_HRPD_SectorID_Cell16 := oct2bit('FEA00000000000000000000000000002'O); + // @desc Sector ID of Cell 16; Clause 13.9 of C.S0024_B + + modulepar SectorID_HRPD_Type px_HRPD_SectorID_Cell17 := oct2bit('FEA00000000000000000000000000003'O); + // @desc Sector ID of Cell 17; Clause 13.9 of C.S0024_B + + modulepar SectorID_HRPD_Type px_HRPD_SectorID_Cell18 := oct2bit('FEA00000000000000000000000000004'O); + // @desc Sector ID of Cell 18; Clause 13.9 of C.S0024_B + + modulepar integer px_MACIndex := 15; // @desc Reverse link MAC index to be used. C.S0024 clause 12.4.1.3.2.2. Supported values 0..383 + + modulepar OpenLoopAdjust_Type px_OpenLoopAdjust := 10; // @desc The value of open loop adjust to be used by access terminals in the open loop power estimate, expressed as an unsigned value in units of 1 dB. The value used by the access terminal is -1 times the value of this field + + modulepar boolean px_PowerDownRegEnabled := true; // @desc Parameter for power down req in 1xRTT + + modulepar B32_Type px_RAND := '00001111000011110000111100001111'B; + // @desc Random challenge data to be included along with mobility parameters in CSFBParametersResponseCDMA2000 or HandoverFromEUTRAPreparationRequest + + modulepar B32_Type px_RAND2 := '00001111000011110000111100001111'B; + // @desc Random challenge data to be included along with mobility parameters in CSFBParametersResponseCDMA2000 or HandoverFromEUTRAPreparationRequest + + modulepar O3_Type px_UATI24 := '123456'O; // @desc UATI to be allocated to the UE. C.S0024 clause 6.3.7.2.2 + + + //**************************************************************************** + // PICS Parameters + //---------------------------------------------------------------------------- + modulepar boolean pc_AutomaticHRPD_PDN_Connection := false; // @desc Support of automatic PDN connection trigger on HRPD cell + // Reference: X.s0057, 6.4.1 + + +} diff --git a/LTE_A_IWD_14wk37/PicsPixit/EUTRA_Parameters.ttcn b/LTE_A_IWD_14wk37/PicsPixit/EUTRA_Parameters.ttcn new file mode 100644 index 0000000..38d3f74 --- /dev/null +++ b/LTE_A_IWD_14wk37/PicsPixit/EUTRA_Parameters.ttcn @@ -0,0 +1,203 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +/******************************************************************************/ + +/******************************************************************************/ +// AUTOMATICALLY GENERATED MODULE - DO NOT MODIFY +// $Date: +// $Author: +// $Rev: +/******************************************************************************/ + +module EUTRA_Parameters { + + import from CommonDefs all; + import from EUTRA_CommonDefs all; + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + + //**************************************************************************** + // PIXIT Parameters + //---------------------------------------------------------------------------- + modulepar Dl_Bandwidth_Type px_MFBI_BandChannelBandwidth := n25; // @desc MFBI E-UTRAN Channel Bandwidth + + modulepar FreqBandIndicator px_MFBI_FrequencyBand := 26; // @desc a supported E-UTRA MFBI frequency band + + modulepar B3_Type px_NAS_CipheringAlgorithm := '001'B; // @desc NAS Ciphering Algorithm (eea1) + + modulepar B3_Type px_NAS_IntegrityProtAlgorithm := '001'B; // @desc NAS Integrity Algorithm (eia1) + + modulepar FreqBandIndicator px_OverlappingNotSupportedFrequencyBand_MFBI := 27; + // @desc a not supported E-UTRA frequency band that is overlapping with a supported MFBI band + + modulepar CipheringAlgorithm_Type px_RRC_CipheringAlgorithm := eea1; // @desc Ciphering Algorithm + + modulepar IntegrityProtAlgorithm_Type px_RRC_IntegrityProtAlgorithm := eia1; // @desc Integrity Algorithm + + modulepar MaxNumberROHC_ContextSessions_Type px_eMaxNumberROHC_ContextSessions := cs16; + // @desc Maximum number of ROHC context sessions @sic R5s130329 sic@ + + modulepar Dl_Bandwidth_Type px_ePrimaryBandChannelBandwidth := n25; // @desc Channel bandwidth used on px_ePrimaryFrequencyBand + + modulepar FreqBandIndicator px_ePrimaryFrequencyBand := 1; // @desc E-UTRAN primary frequency band + + modulepar Dl_Bandwidth_Type px_eSecondaryBandChannelBandwidth := n25; // @desc Channel bandwidth used on px_eSecondaryFrequencyBand + + modulepar FreqBandIndicator px_eSecondaryFrequencyBand := 2; // @desc E-UTRAN secondary frequency band + + modulepar TDD_SubframeAssignment_Type px_eTDDsubframeConfig := sa1; // @desc TDD uplink-downlink subframe configuration + + + //**************************************************************************** + // PICS Parameters + //---------------------------------------------------------------------------- + modulepar boolean pc_PPI_Support := false; // @desc Support of Power Preference Indication + // Reference: 36.523-2 A.4.4.1-86 + + modulepar boolean pc_T3412Extended := false; // @desc Support of T3412 extended value IE + // Reference: 36.523-2 A.4.4.1-yyy + + modulepar boolean pc_TDD_SpecialSubframe := false; // @desc Support of TDD special subframe + // Reference: 36.523-2 A.4.4.1-82 + + modulepar boolean pc_UL_CoordinatedMultiPointOperation := false; // @desc Support of UL co-ordinated multi-point operation + // Reference: 36.523-2 A.4.4-1A/xx + + modulepar boolean pc_eAttachWithIMSI := false; // @desc Support of Attach With IMSI + // Reference: 36.523-2 A.4.4.1-xxx + + modulepar boolean pc_eBand10_Supp := false; // @desc Support of Band 10 + // Reference: 36.523-2 A.4.3.1-1/10 + + modulepar boolean pc_eBand11_Supp := false; // @desc Support of Band 11 + // Reference: 36.523-2 A.4.3.1-1/11 + + modulepar boolean pc_eBand12_Supp := false; // @desc Support of Band 12 + // Reference: 36.523-2 A.4.3.1-1/12 + + modulepar boolean pc_eBand13_Supp := false; // @desc Support of Band 13 + // Reference: 36.523-2 A.4.3.1-1/13 + + modulepar boolean pc_eBand14_Supp := false; // @desc Support of Band 14 + // Reference: 36.523-2 A.4.3.1-1/14 + + modulepar boolean pc_eBand17_Supp := false; // @desc Support of Band 17 + // Reference: 36.523-2 A.4.3.1-1/17 + + modulepar boolean pc_eBand18_Supp := false; // @desc Support of Band 18 + // Reference: 36.523-2 A.4.3.1-1/18 + + modulepar boolean pc_eBand19_Supp := false; // @desc Support of Band 19 + // Reference: 36.523-2 A.4.3.1-1/19 + + modulepar boolean pc_eBand1_Supp := false; // @desc Support of Band 1 + // Reference: 36.523-2 A.4.3.1-1/1 + + modulepar boolean pc_eBand20_Supp := false; // @desc Support of Band 20 + // Reference: 36.523-2 A.4.3.1-1/20 + + modulepar boolean pc_eBand21_Supp := false; // @desc Support of Band 21 + // Reference: 36.523-2 A.4.3.1-1/21 + + modulepar boolean pc_eBand22_Supp := false; // @desc Support of Band 22 + // Reference: 36.523-2 A.4.3.1-1/22 + + modulepar boolean pc_eBand23_Supp := false; // @desc Support of Band 23 + // Reference: 36.523-2 A.4.3.1-1/23 + + modulepar boolean pc_eBand24_Supp := false; // @desc Support of Band 24 + // Reference: 36.523-2 A.4.3.1-1/24 + + modulepar boolean pc_eBand25_Supp := false; // @desc Support of Band 25 + // Reference: 36.523-2 A.4.3.1-1/25 + + modulepar boolean pc_eBand26_Supp := false; // @desc Support of Band 26 + // Reference: 36.523-2 A.4.3.1-1/26 + + modulepar boolean pc_eBand27_Supp := false; // @desc Support of Band 27 + // Reference: 36.523-2 A.4.3.1-1/27 + + modulepar boolean pc_eBand28_Supp := false; // @desc Support of Band 28 + // Reference: 36.523-2 A.4.3.1-1/28 + + modulepar boolean pc_eBand29_Supp := false; // @desc Support of Band 29 + // Reference: 36.523-2 A.4.3.1-1/29 + + modulepar boolean pc_eBand2_Supp := false; // @desc Support of Band 2 + // Reference: 36.523-2 A.4.3.1-1/2 + + modulepar boolean pc_eBand30_Supp := false; // @desc Support of Band 30 + // Reference: 36.523-2 A.4.3.1-1/30 + + modulepar boolean pc_eBand31_Supp := false; // @desc Support of Band 31 + // Reference: 36.523-2 A.4.3.1-1/31 + + modulepar boolean pc_eBand33_Supp := false; // @desc Support of Band 33 + // Reference: 36.523-2 A.4.3.1-2/1 + + modulepar boolean pc_eBand34_Supp := false; // @desc Support of Band 34 + // Reference: 36.523-2 A.4.3.1-2/2 + + modulepar boolean pc_eBand35_Supp := false; // @desc Support of Band 35 + // Reference: 36.523-2 A.4.3.1-2/3 + + modulepar boolean pc_eBand36_Supp := false; // @desc Support of Band 36 + // Reference: 36.523-2 A.4.3.1-2/4 + + modulepar boolean pc_eBand37_Supp := false; // @desc Support of Band 37 + // Reference: 36.523-2 A.4.3.1-2/5 + + modulepar boolean pc_eBand38_Supp := false; // @desc Support of Band 38 + // Reference: 36.523-2 A.4.3.1-2/6 + + modulepar boolean pc_eBand39_Supp := false; // @desc Support of Band 39 + // Reference: 36.523-2 A.4.3.1-2/7 + + modulepar boolean pc_eBand3_Supp := false; // @desc Support of Band 3 + // Reference: 36.523-2 A.4.3.1-1/3 + + modulepar boolean pc_eBand40_Supp := false; // @desc Support of Band 40 + // Reference: 36.523-2 A.4.3.1-2/8 + + modulepar boolean pc_eBand41_Supp := false; // @desc Support of Band 41 + // Reference: 36.523-2 A.4.3.1-2/9 + + modulepar boolean pc_eBand42_Supp := false; // @desc Support of Band 42 + // Reference: 36.523-2 A.4.3.1-2/10 + + modulepar boolean pc_eBand43_Supp := false; // @desc Support of Band 43 + // Reference: 36.523-2 A.4.3.1-2/11 + + modulepar boolean pc_eBand44_Supp := false; // @desc Support of Band 44 + // Reference: 36.523-2 A.4.3.1-2/12 + + modulepar boolean pc_eBand4_Supp := false; // @desc Support of Band 4 + // Reference: 36.523-2 A.4.3.1-1/4 + + modulepar boolean pc_eBand5_Supp := false; // @desc Support of Band 5 + // Reference: 36.523-2 A.4.3.1-1/5 + + modulepar boolean pc_eBand6_Supp := false; // @desc Support of Band 6 + // Reference: 36.523-2 A.4.3.1-1/6 + + modulepar boolean pc_eBand7_Supp := false; // @desc Support of Band 7 + // Reference: 36.523-2 A.4.3.1-1/7 + + modulepar boolean pc_eBand8_Supp := false; // @desc Support of Band 8 + // Reference: 36.523-2 A.4.3.1-1/8 + + modulepar boolean pc_eBand9_Supp := false; // @desc Support of Band 9 + // Reference: 36.523-2 A.4.3.1-1/9 + + modulepar boolean pc_eLAP := false; // @desc Support of Low Access Priority Indication + // Reference: 36.523-2 A.4.4.1-x1 + + modulepar boolean pc_eMinimumPeriodicSearchTimer := false; // @desc Support of Minimum Periodic Search Timer + // Reference: 36.523-2 A.4.4.1-x2 + + +} diff --git a/LTE_A_IWD_14wk37/PicsPixit/GERAN_Parameters.ttcn b/LTE_A_IWD_14wk37/PicsPixit/GERAN_Parameters.ttcn new file mode 100644 index 0000000..c7df93b --- /dev/null +++ b/LTE_A_IWD_14wk37/PicsPixit/GERAN_Parameters.ttcn @@ -0,0 +1,71 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +/******************************************************************************/ + +/******************************************************************************/ +// AUTOMATICALLY GENERATED MODULE - DO NOT MODIFY +// $Date: +// $Author: +// $Rev: +/******************************************************************************/ + +module GERAN_Parameters { + + import from CommonDefs all; + import from GERAN_TypeDefs all; + + //**************************************************************************** + // PIXIT Parameters + //---------------------------------------------------------------------------- + modulepar B64_Type px_CipherKey := '0101111001001010101100110101100010010001001101110101110100101010'B; + // @desc Cipher Key + // Reference to other Spec: 51.010-5, Table B.1 + + modulepar B128_Type px_CipherKey128 := '01011110010010101011001101011000100100010011011101011101001010100101111001001010101100110101100010010001001101110101110100101010'B; + // @desc Cipher key (128 bits) to be used e.g. for A5/4 and GEA/4 + // Reference to other Spec: 34.123-3, Table B.1.11 + + modulepar GERAN_BandUnderTestType px_GERAN_BandUnderTest := GSM_P900; // @desc Indicates which band is under test. The type is different to the parameter defined in 34.123-3 + + modulepar B3_Type px_GSM_CipherAlg := '000'B; // @desc GSM Cipher algorithm. + // Default value: A5/1 + // Reference to other Spec: 51.010-5, Table B.1 + + modulepar B1_Type px_GSM_CipheringOnOff := '1'B; // @desc GSM Ciphering to be started or not + // Reference to other Spec: 51.010-5, Table B.1 + + modulepar B5_Type px_MS_TXPWR_MAX_CCH := '01010'B; // @desc MS_TXPWR_MAX_CCH + // Reference to other Spec: 51.010-5, Table B.1 + + modulepar B5_Type px_PowerLevel; // @desc power level value for L1 header + // Reference to other Spec: 51.010-5, Table B.1 + + modulepar B6_Type px_RXLEV_ACCESS_MIN := '000000'B; // @desc minimum received signal level at MS + // Reference to other Spec: 51.010-5, Table B.1 + + modulepar B1_Type px_SplitOnCCCH := '0'B; // @desc Split pg cycle on CCCH supported indication + // Reference to other Spec: 51.010-5, Table B.1 + + modulepar B3_Type px_TSC := '011'B; // @desc Training sequence code for traffic channels. + // Reference to other Spec: 51.010-5, Table B.1 + + modulepar B7_Type px_TimingAdvance := '0000000'B; // @desc Timing advance value for L1 header + // Reference to other Spec: 51.010-5, Table B.1 + + + //**************************************************************************** + // PICS Parameters + //---------------------------------------------------------------------------- + modulepar boolean pc_GPRS := false; // @desc Support of GPRS + // Reference: 51.010-2, A.2/41 + + modulepar boolean pc_G_operation_mode_C := false; // @desc GERAN UE Operation Mode C + // Reference: 51.010-2, A.2/49 + + +} diff --git a/LTE_A_IWD_14wk37/PicsPixit/IMS_CC_Parameters.ttcn b/LTE_A_IWD_14wk37/PicsPixit/IMS_CC_Parameters.ttcn new file mode 100644 index 0000000..4c6de2f --- /dev/null +++ b/LTE_A_IWD_14wk37/PicsPixit/IMS_CC_Parameters.ttcn @@ -0,0 +1,182 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +/******************************************************************************/ + +/******************************************************************************/ +// AUTOMATICALLY GENERATED MODULE - DO NOT MODIFY +// $Date: +// $Author: +// $Rev: +/******************************************************************************/ + +module IMS_CC_Parameters { + + import from CommonDefs all; + + //**************************************************************************** + // PIXIT Parameters + //---------------------------------------------------------------------------- + modulepar charstring px_DNSServer_IPAddr := "10.122.11.23"; // @desc DNS Server address + // Supported values: IPv4 or IPv6 + // Reference to other Spec: 34.229-3 + + modulepar charstring px_IMS_HomeDomainName_Refreshed := "refreshed3gpp.org"; + // @desc Used in 8.15 + + modulepar charstring px_IMS_Private_UserId_Refreshed := "privateuser@refreshed3gpp.org"; + // @desc Used in 8.15 + + modulepar charstring px_IMS_PublicUserIdentity1_Refreshed := "sip:PublicId1@refreshed3gpp.org"; + // @desc Used in 8.15 + + modulepar charstring px_P_CSCF_IPAddr := "10.122.11.22"; // @desc P-CSCF address + // Supported values: IPv4 or IPv6 + // Reference to other Spec: 34.229-3 + + modulepar charstring px_PeerUE_IPAddr := "10.122.11.25"; // @desc Peer UE address + // Supported values: IPv4 or IPv6 + // Reference to other Spec: 34.229-3 + + modulepar charstring px_SMS_SMSC_InternationalNumber; // @desc international number of the SMSC: + // It is set to the same value as used in EFPSISMSC if the EF is present on the ISIM (or the USIM ) + // Otherwise it is set to the same value as EFSMSP + // Reference to other Spec: 34.229-3 + + modulepar boolean px_UEwithSIM := false; // @desc UE has a SIM inserted + // Supported values: true,false + // Reference to other Spec: 34.229-3 + + modulepar charstring px_XCAPServerAddress := "10.122.11.26"; // @desc XCAP Server address + // Supported values: IPv4 or IPv6 + // Reference to other Spec: 34.229-3 + + modulepar charstring px_XCAP_RootUri := "XCAP.3gpp.org"; // @desc XCAP Root URI + + modulepar charstring px_XCAP_Username; // @desc username to be used for HTTP authentication in case of pc_XCAP_UsernameIsConfiguredInUE==true + + + //**************************************************************************** + // PICS Parameters + //---------------------------------------------------------------------------- + modulepar boolean pc_BidirecVoiceOverIMS := false; // @desc UE capable of initiating a bidirectional voice session over IMS + // Reference: 34.229-2 Table A.12/12 + + modulepar boolean pc_CommunicationHold_DuringEmergencyCall := false; + // @desc UE supports Communication Hold during emergency call + // Reference: 34.229-2, Table A.12/nn + + modulepar boolean pc_HttpDigestAuthentication := false; // @desc HTTP Digest XCAP Authentication + // Reference: 34.229-2, Table A.6a/4 + + modulepar boolean pc_HttpGAAAuthentication := false; // @desc GAA XCAP Authentication + // Reference: 34.229-2, Table A.6a/3 + + modulepar boolean pc_IMS_EmergencyCall := false; // @desc UE supports IMS emergency services + // Reference: 34.229-2 Table A.12/26 + + modulepar boolean pc_IMS_TWS := false; // @desc Three way session + // Reference: 34.229-2, Table A.16/14 + + modulepar boolean pc_IndicateSigcomp := false; // @desc Indicate the willingness to receive the responses and requests compressed from initial REGISTER onwards by using the "comp=sigcomp" parameter + // Reference: 34.229-2 Table A.8/5 + + modulepar boolean pc_InitiateP_CSCFDiscovery_viaDHCPv4 := false; // @desc UE capable of being configured to initiate P-CSCF discovery via DHCPv4 + // Reference: 34.229-2 Table A.13/1 + + modulepar boolean pc_InitiateP_CSCFDiscovery_viaDHCPv6 := false; // @desc UE capable of being configured to initiate P-CSCF discovery via DHCPv6 + // Reference: 34.229-2 Table A.12/7 + + modulepar boolean pc_InitiateP_CSCFDiscovery_viaPCO := false; // @desc UE capable of being configured to initiate P-CSCF discovery via PCO + // Reference: 34.229-2 Table A.12/5 + + modulepar boolean pc_InitiateSession := false; // @desc Initiating a session + // Reference: 34.229-2 Table A.4/2B + + modulepar boolean pc_InitiatesDedicatedPDPContext := false; // @desc UE capable of being configured to initiate Dedicated PDP Context + // Reference: 34.229-2 Table A.12/4 + + modulepar boolean pc_MTSI_ACR := false; // @desc MTSI supplementary services - Anonymous Communication Rejection + // Reference: 34.229-2 Table A.16/12 + + modulepar boolean pc_MTSI_CB := false; // @desc MTSI supplementary services - Communication Barring + // Reference: 34.229-2 Table A.16/7 + + modulepar boolean pc_MTSI_CommDivert := false; // @desc MTSI supplementary services - Communication Diversion + // Reference: 34.229-2 Table A.16/5 + + modulepar boolean pc_MTSI_CommHold := false; // @desc Communication Hold + // Reference: 34.229-2 Table A.16/6 + + modulepar boolean pc_MTSI_CommWaiting := false; // @desc MTSI supplementary services - Communication Waiting + // Reference: 34.229-2 Table A.16/13 + + modulepar boolean pc_MTSI_Conference := false; // @desc MTSI supplementary services - Conference + // Reference: 34.229-2 Table A.16/9 + + modulepar boolean pc_MTSI_MessageWait := false; // @desc MTSI supplementary services - Message Waiting Indication + // Reference: 34.229-2 Table A.16/8 + + modulepar boolean pc_MTSI_OIP := false; // @desc MTSI supplementary services - Originating Identification Presentation + // Reference: 34.229-2 Table A.16/1 + + modulepar boolean pc_MTSI_OIR := false; // @desc MTSI supplementary services - Originating Identification Restriction + // Reference: 34.229-2 Table A.16/2 + + modulepar boolean pc_MTSI_Speech := false; // @desc MTSI media - Speech + // Reference: 34.229-2 Table A.15/1 + + modulepar boolean pc_MTSI_Speech_AMRWB := false; // @desc MTSI media - Speech, AMR wideband + // Reference: 34.229-2 Table A.15/2 + + modulepar boolean pc_MTSI_TIP := false; // @desc MTSI supplementary services - Terminating Identification Presentation + // Reference: 34.229-2 Table A.16/3 + + modulepar boolean pc_MTSI_TIR := false; // @desc MTSI supplementary services - Terminating Identification Restriction + // Reference: 34.229-2 Table A.16/4 + + modulepar boolean pc_MTSI_Text_RTP := false; // @desc MTSI media - Text, RTP + // Reference: 34.229-2 Table A.15/7 + + modulepar boolean pc_MTSI_Video := false; // @desc MTSI media - Video + // Reference: 34.229-2 Table A.15/3 + + modulepar boolean pc_P_CSCFDiscovery_viaDHCP := false; // @desc UE supports P-CSCF Discovery via DHCP + // Reference: 34.229-2 Table A.12/9 + + modulepar boolean pc_P_CSCFDiscovery_viaDHCPv4 := false; // @desc UE supports P-CSCF discovery via DHCPv4 + // Reference: 34.229-2 Table A.13/2 + + modulepar boolean pc_P_CSCFDiscovery_viaDHCPv6 := false; // @desc UE supports P-CSCF discovery via DHCPv6 + // Reference: 34.229-2 Table A.12/10 + + modulepar boolean pc_P_CSCFDiscovery_viaPCO := false; // @desc UE supports P-CSCF Discovery via PCO + // Reference: 34.229-2 Table A.12/8 + + modulepar boolean pc_Preconditions := false; // @desc Integration of resource management and SIP? (use of preconditions) + // Reference: 34.229-2 Table A.4/16 + + modulepar boolean pc_SMS_MO := false; // @desc UE supports SM-over-IP sender + // Reference: 34.229-2 Table A.3A/61 + + modulepar boolean pc_SMS_MT := false; // @desc UE supports SM-over-IP receiver + // Reference: 34.229-2 Table A.3A/62 + + modulepar boolean pc_SendRTCPOnlyOnHold := true; // @desc UE supports sending RTCP only while call is put on hold + // Reference: 34.229-2 Table A.12/23 + + modulepar boolean pc_VideoCodecH264CBP := false; // @desc MTSI media - Video codec H.264 CBP Level 1.2 + // Reference: 34.229-2 Table A.15/9 + + modulepar boolean pc_XCAP_UsernameIsConfiguredInUE := false; // @desc UE indicated OMA-TS-XDM_MO-V1_1-20080627-A.doc, section 5.2.8 "Node: //AAUTHNAME" is configured + // Reference: 34.229-2 Table A.12/nn + + modulepar boolean pc_XCAP_XUIisDefaultPublicUserId := false; // @desc UE uses the default public user id received in P-Associated-URI header in 200 OK for REGISTER as XCAP User Identity (XUI) + // Reference: 34.229-2 Table A.12/mm + + +} diff --git a/LTE_A_IWD_14wk37/PicsPixit/IMS_CommonParameters.ttcn b/LTE_A_IWD_14wk37/PicsPixit/IMS_CommonParameters.ttcn new file mode 100644 index 0000000..fee818a --- /dev/null +++ b/LTE_A_IWD_14wk37/PicsPixit/IMS_CommonParameters.ttcn @@ -0,0 +1,102 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +/******************************************************************************/ + +/******************************************************************************/ +// AUTOMATICALLY GENERATED MODULE - DO NOT MODIFY +// $Date: +// $Author: +// $Rev: +/******************************************************************************/ + +module IMS_CommonParameters { + + import from IP_ASP_TypeDefs all; + + //**************************************************************************** + // PIXIT Parameters + //---------------------------------------------------------------------------- + modulepar charstring px_IMS_AssociatedTelUri := "tel:+4989364072"; + // @desc Set as record 3 in EFIMPU as defined in TS 34.229-1[5] + // Reference to other Spec: 34.229-3 + + modulepar charstring px_IMS_CalleeContactUri := "sip:User-B-Contact@3gpp.org"; + // @desc URI provided by the remote side (i.e. by SS) to be used by the UE as contact address in further SIP signalling of the dialog + // NOTE: in general this URI shall be different than the one in px_CalleeUri + // Reference to other Spec: 34.229-3 + + modulepar charstring px_IMS_CalleeUri := "sip:User-B@3gpp.org"; + // @desc URI of Callee, sent by the UE in INVITE (MO call establishment) to address the remote UE + // Reference to other Spec: 34.229-3 + + modulepar IPsec_CipheringAlgorithm_Type px_IMS_CiphAlgo_Def := des_ede3_cbc; // @desc Ciphering Algorithm + // Supported values: + // des_ede3_cbc, + // aes_cbc, + // nociph + // Reference to other Spec: 34.229-3 + + modulepar charstring px_IMS_HomeDomainName := "3gpp.org"; // @desc Home Domain Name. + // When using an ISIM it is set to the same value as EFDOMAIN. + // When not using ISIM just USIM the home domain name is derived from px_IMSI (preceded by 'sip:') + // Reference to other Spec: 34.229-3 + + modulepar IPsec_IntegrityAlgorithm_Type px_IMS_IPSecAlgorithm := hmac_sha_1_96; // @desc Integrity Algorithm + // Supported values: + // hmac_md5_96, + // hmac_sha_1_96 + // Reference to other Spec: 34.229-3 + + modulepar charstring px_IMS_Private_UserId := "privateuser@3gpp.org"; + // @desc Private User Identity.When usingan ISIM this is set to the same value as EFIMPI.When ISIM is not used just USIM the private user identity is derived from px_IMSI. + // + // Reference to other Spec: 34.229-3 + + modulepar charstring px_IMS_PublicUserIdentity1 := "sip:PublicId1@3gpp.org"; + // @desc Public User Identity. It is set to the same value as the first record in EFIMPU. + // Reference to other Spec: 34.229-3 + + modulepar charstring px_IMS_PublicUserIdentity2 := "sip:PublicId2@3gpp.org"; + // @desc Public User Identity. It is set to the same value as the second record in EFIMPU. + // Reference to other Spec: 34.229-3 + + modulepar charstring px_IMS_PublicUserIdentity3 := "sip:PublicId3@3gpp.org"; + // @desc Public User Identity. It is set to the same value as the third record in EFIMPU. + // Reference to other Spec: 34.229-3 + + modulepar charstring px_IMS_Scscf := "scscf.3gpp.org"; + // @desc S-CSCF fully qualified domain name that resolves to the IP address of SS + // Reference to other Spec: 34.229-3 + + modulepar boolean px_UEwithISIM := true; // @desc true - UE has ISIM; false - UE has USIM only + // Reference to other Spec: 34.229-3 + + + //**************************************************************************** + // PICS Parameters + //---------------------------------------------------------------------------- + modulepar boolean pc_IMS_GIBA_Sec := false; // @desc UE supports GIBA security only + // Reference: 34.229-2 Table A.6a/1 + + modulepar boolean pc_IMS_GRUUsInSIP := false; // @desc UE supports obtaining and using GRUUs in the Session Initiation Protocol (SIP) + // Reference: 34.229-2 Table A.4/53 + + modulepar boolean pc_IMS_Geolocation := false; // @desc UE uses Geolocation header to provide its geographical location for emergency session setup + // Reference: 34.229-2 Table A.12/27 + + modulepar boolean pc_IMS_RtcpDuringVoiceSession := false; // @desc RTCP used during voice session + // Reference: 34.229 ??? + + modulepar boolean pc_IMS_Sec := false; // @desc UE supports full IMS security + // Reference: 34.229-2 Table A.6a/2 + + modulepar boolean pc_MultimediaTelephonyService := false; // @desc Multimedia telephony service participant + // Reference: 34.229-2 Table A.3A/50 + + +} diff --git a/LTE_A_IWD_14wk37/PicsPixit/Parameters.ttcn b/LTE_A_IWD_14wk37/PicsPixit/Parameters.ttcn new file mode 100644 index 0000000..3a448df --- /dev/null +++ b/LTE_A_IWD_14wk37/PicsPixit/Parameters.ttcn @@ -0,0 +1,1127 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +/******************************************************************************/ + +/******************************************************************************/ +// AUTOMATICALLY GENERATED MODULE - DO NOT MODIFY +// $Date: +// $Author: +// $Rev: +/******************************************************************************/ + +module Parameters { + + import from CommonDefs all; + import from NAS_CommonTypeDefs all; + + //**************************************************************************** + // PIXIT Parameters + //---------------------------------------------------------------------------- + modulepar octetstring px_AccessPointName; // @desc Access Point Name + + modulepar EUTRA_ATTACH_TESTED_Type px_AttachTypeTested := EPS_ATTACH_ONLY; // @desc Attach Type to be tested, if UE supports both pc_Attach and pc_Combined_Attach + // Supported values: EPS_ATTACH_ONLY, COMBINED_ATTACH + + modulepar B16_Type px_AuthAMF; // @desc Authentication Management Field (16 bits). The value shall be different from '1111 1111 1111 111'B (AMFresynch). + // Default value: no default value can be proposed + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar B128_Type px_AuthK := oct2bit('000102030405060708090A0B0C0D0E0F'O); + // @desc Authentication Key + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar O43_Type px_ETWS_DigitalSignature; // @desc ETWS Digital Signature + + modulepar O8_Type px_EllipsoidPointWithAltitude; // @desc Ellipsoid Point With Altitude value to be provided in Update UE location information (see 36.509 cl 6.12) + + modulepar charstring px_EmergencyCallNumber := "112"; // @desc Emergency Number used by UE to initiate an emergency call + // Reference to other Spec: 34.123-3, Table B.1.2 + + modulepar integer px_FDD_OperationBand; // @desc The operation band under test, as defined in 34.108 clause 5.1.1. Value 1 means Band 1, 2 means Band 2 etc.This pixit shall be set in synchronisation with the values that are being set to 6 other Pixits viz: px_UARFCN_D_High, px_UARFCN_D_Mid,px_UARFCN_L_Mid + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar O3_Type px_HorizontalVelocity; // @desc Horizontal Velocity to be provided in Update UE location information (see 36.509 cl 6.12) + + modulepar hexstring px_IMEISV_Def; // @desc Default IMEISV value. No default can be proposed as this is a manufacturer defined value + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar hexstring px_IMEI_Def; // @desc Default IMEI value. No default can be proposed as this is a manufacturer defined value + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar hexstring px_IMSI_Def := '001010123456063'H; + // @desc Default IMSI + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar integer px_IP_MTU_Size := 65535; // @desc MTU size + + modulepar charstring px_IPv4_Address1_NW; // @desc IPv4 Gateway Address in PDN1 + + modulepar charstring px_IPv4_Address1_RemoteUE; // @desc IPv4 Address of remote UE connected to PDN1 + + modulepar charstring px_IPv4_Address1_UE; // @desc IPv4 Address connected to PDN1 + + modulepar charstring px_IPv4_Address2_NW; // @desc IPv4 Gateway Address in PDN2 + + modulepar charstring px_IPv4_Address2_RemoteUE; // @desc IPv4 Address of remote UE connected to PDN2 + + modulepar charstring px_IPv4_Address2_UE; // @desc IPv4 Address connected to PDN2 + + modulepar charstring px_IPv4_Address_HomeAgent; // @desc IPv4 Home Address Agent + + modulepar charstring px_IPv6_Address1_NW; // @desc IPv6 Gateway Address in PDN1 + + modulepar charstring px_IPv6_Address1_RemoteUE; // @desc IPv6 Address of remote UE in PDN1 + + modulepar charstring px_IPv6_Address1_UE; // @desc IPv6 Address in PDN1 + + modulepar charstring px_IPv6_Address2_NW; // @desc IPv6 Gateway Address in PDN2 + + modulepar charstring px_IPv6_Address2_RemoteUE; // @desc IPv6 Address of remote UE in PDN2 + + modulepar charstring px_IPv6_Address2_UE; // @desc IPv6 Address in PDN2 + + modulepar charstring px_IPv6_Address_HomeAgent; // @desc IPv6 Home Address Agent + + modulepar octetstring px_PTMSI_Def := 'C2345678'O; // @desc Default PTMSI + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar octetstring px_PTMSI_SigDef := 'AB1234'O; // @desc Default PTMSI signature (3 octets, 3GPP 24.008 / 10.5.5.8). + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar charstring px_PWS_CB_DataPage1; // @desc ETWS or CMAS Page 1 warning data message + + modulepar charstring px_PWS_CB_DataPage2; // @desc ETWS or CMAS Page 2 warning data message + + modulepar charstring px_PWS_CB_DataPage3; // @desc CMAS or ETWS Page 3 warning data message + + modulepar charstring px_PWS_CB_DataPage4; // @desc CMAS or ETWS Page 4 warning data message + + modulepar RATComb_Tested_Type px_RATComb_Tested := EUTRA_UTRA; // @desc This parameter represents the network RAT capability/preference and indicates which, if any is supported, RAT combination is to be tested + // Supported values: EUTRA_UTRA, EUTRA_GERAN, EUTRA_Only + + modulepar boolean px_SMS_ChkMsgReceived := true; // @desc Whether the operator can check an MT Short Message received + + modulepar integer px_SMS_IndexOffset := 0; // @desc Memory location index at UE for SMS storage, used in +CMSS command + // Reference to other Spec: 34.123-3, Table B.1.2 + + modulepar charstring px_SMS_MsgFrmt := "1"; // @desc Either PDU (0) mode or Text mode (1) @sic R5s110750 sic@ + + modulepar charstring px_SMS_PrefMem1 := "SM"; // @desc SMS Preferred Memory 1 of TS 27.005 [31], clause 3.2.2 + // Reference to other Spec: 34.123-3, Table B.1.2 + + modulepar charstring px_SMS_PrefMem2 := "SM"; // @desc SMS Preferred Memory 2 of TS 27.005 [31], clause 3.2.2 + // Reference to other Spec: 34.123-3, Table B.1.2 + + modulepar charstring px_SMS_PrefMem3 := "MT"; // @desc SMS Preferred Memory 3 of TS 27.005 [31], clause 3.2.2 + // Reference to other Spec: 34.123-3, Table B.1.2 + + modulepar charstring px_SMS_Service := "0"; // @desc SMS Service of TS 27.005 [31], clause 3.2.1 + // Reference to other Spec: 34.123-3, Table B.1.2 + + modulepar SinglePLMN_TestedType px_SinglePLMN_Tested := MultiPLMN; // @desc This parameter represents the network capability/preference to support multi PLMNs on the same test Band and indicates the preference of multi PLMNs or single PLMN test environment + // Supported values: SinglePLMN, MultiPLMN, MultiPLMNinPrimaryBand, MultiPLMNinSecondaryBand + + modulepar octetstring px_TMSI_Def := '12345678'O; // @desc Default TMSI + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar O1_Type px_TestLoopModeB_Delay := '5A'O; // @desc This parameter represents the IP PDU delay to be used for UE test loop mode B intest cases, where long delay may be needed e.g. because of user interaction. + + modulepar CS_PS_MODE px_UE_CS_PS_UsageSetting_Tested := VOICE_CENTRIC; + // @desc specifies which CS/PS mode is under test @sic R5s120274 sic@ + // Supported values: VOICE_CENTRIC, DATA_CENTRIC + + modulepar PS_MODE px_UE_PS_UsageSetting_Tested := VOICE_CENTRIC; // @desc specifies which PS mode is under test @sic R5s120274 sic@ + // Supported values: VOICE_CENTRIC, DATA_CENTRIC + + modulepar UTRAN_FDD_TDD_Type px_UTRAN_ModeUnderTest := UTRAN_FDD; // @desc specifies which radio access technology is being tested in UTRAN + // Supported values: UTRAN_FDD, UTRAN_TDD + + modulepar B128_Type px_eAuthRAND := oct2bit('A3DE0C6D363E30C364A4078F1BF8D577'O); + // @desc Random Challenge + + modulepar NAS_Mcc px_eJapanMCC_Band6 := '442'H; // @desc Japan MCC code to be used for Band 6. The same value will be used for E-UTRAN and Inter-RAT cells. Type is different to that defined in 34.123-3. + + + //**************************************************************************** + // PICS Parameters + //---------------------------------------------------------------------------- + modulepar boolean pc_1xCSfallback := false; // @desc Support of 1xCS fallback + // Reference: 36.523-2, A.4.2.1.1-1/3 + + modulepar boolean pc_1xRTT := false; // @desc UE supports CDMA2000 1xRTT band class + // Reference: 36.523-2, A.4.1-1/4 + + modulepar boolean pc_Allowed_CSG_list := false; // @desc Support of Allowed CSG list + // Reference: 36.523-2 A.4.4-1/2 + + modulepar boolean pc_Attach := false; // @desc Support EPS attach (with or without pre-configuration) + // Reference: 36.523-2 A.4.4-2/1 + + modulepar boolean pc_Auto_PDN_Connectivity := false; // @desc Support of automatic PDN Connectivity in EUTRAN + // Reference: 36.523-2 A.4.4-1/68 + + modulepar boolean pc_Automatic_EPS_Re_Attach := false; // @desc Support of automatic re-activation of the EPS bearer(s) + // Reference: 36.523-2 A.4.4-1/64 + + modulepar boolean pc_Automatic_Re_Attach := false; // @desc Support of automatic re-activation of the EPS bearer(s) during Network Initiated Detach with detach type set to re-attach required + // Reference: 36.523-2 A.4.4-1/27 + + modulepar boolean pc_Available_PLMNs_AcT_Ind := false; // @desc Support of AccessTechnology indication in available PLMNs list + // Reference: 36.523-2 A.4.4.1-x + + modulepar boolean pc_BSRVCC := false; // @desc UE indicates g.3gpp.ps2cs-srvcc-orig-pre-alerting media feature tag in INVITE request + // Reference: 34.229-2 A.12/36 + + modulepar boolean pc_CMAS_Message := false; // @desc Support of CMAS message + // Reference: 36.523-2 A.4.4-1/58 + + modulepar boolean pc_CS := false; // @desc UE supports CS domain services + // Reference: 34.123-2 A.3/1 + + modulepar boolean pc_CS_Em_Call_in_1xRTT := false; // @desc Support for establishing the emergency call using the CS domain in 1xRTT + // Reference: 36.523-2 A.4.4-1/37 + + modulepar boolean pc_CS_Em_Call_in_GERAN := false; // @desc Support for establishing the emergency call using the CS domain in GERAN + // Reference: 36.523-2 A.4.4-1/36 + + modulepar boolean pc_CS_Em_Call_in_UTRA := false; // @desc Support for establishing the emergency call using the CS domain in UTRA + // Reference: 36.523-2 A.4.4-1/35 + + modulepar boolean pc_CS_Fallback := false; // @desc The UE supports CS fallback for voice calls. If true, pc_CS and at least one of pc_FDD, pc_TDD_HCR, pc_TDD_LCR, pc_TDD_VHCR or pc_UMTS_GSM is also true. + // Reference: 36.523-2, A.4.2.1.1-1/1 + + modulepar boolean pc_CS_PS_data_centric := false; // @desc Support of CS/PS mode 2 + // Reference: 36.523-2 A.4.4-2/5 + + modulepar boolean pc_CS_PS_voice_centric := false; // @desc Support of configuring the UE to voice centric + // Reference: 36.523-2 A.4.4-2/4 + + modulepar boolean pc_Combined_Attach := false; // @desc Support combined EPS/IMSI attach (with or without pre-configuration) + // Reference: 36.523-2 A.4.4-2/2 + + modulepar boolean pc_DL_IntraBand_ContCaBWclassB := false; // @desc DL Intra-band contiguous CA BW class B + // Reference: 36.523-2 A.4.3.3.1-1/1 + + modulepar boolean pc_DL_IntraBand_ContCaBWclassC := false; // @desc DL Intra-band contiguous CA BW class C + // Reference: 36.523-2 A.4.3.3.1-1/2 + + modulepar boolean pc_DL_interBand_CaBwClassComb_AA + := false; // @desc DL Inter-band contiguous CA BW class A-A + // Reference: 36.523-2 A.4.3.3.3-1/1 + + modulepar boolean pc_DL_intraBand_nonContCaBwClassComb_AA := false; + // @desc Support of DL intra-band non-contiguous CA BW Class Combination A-A + // Reference: 36.523-2 A.4.3.3.2-1/1 + + modulepar boolean pc_DSMIPv6 := false; // @desc Support of Mobility management based on Dual-Stack Mobile IPv6 + // Reference: 36.523-2 A.4.4-1/6 + + modulepar boolean pc_DaylightSavingTime := false; // @desc UE stores/updates the daylight saving time when receives information + // Reference: 36.523-2 A.4.4-1/xx + + modulepar boolean pc_DualRM_Coding := false; // @desc Dual RM Coding + // Reference: 36.523/2 ???? + + modulepar boolean pc_EAB := false; // @desc Support of Extended Access Barring + // Reference: 36.523-2 A.4.4-1/89 + + modulepar boolean pc_EAB_override := false; // @desc Support of Extended Access Barring Override + // Reference: 36.523-2 A.4.4-1/91 + + modulepar boolean pc_EDTM := false; // @desc Support for EDTM + // Reference: 36.523-2 A.4.4-1/38 + + modulepar boolean pc_EMM_Information := false; // @desc Support of EMM Information message + // Reference: 36.523-2 A.4.4-1/9 + + modulepar boolean pc_EPS_Services_Disable := false; // @desc Support of disabling of EPS services + // Reference: 36.523-2 A.4.4-1/26 + + modulepar boolean pc_ESM_MO_Bearer_Allocation := false; // @desc Support of ESM UE requested bearer resource allocation procedure + // Reference: 36.523-2 A.4.4-1/10 + + modulepar boolean pc_ESM_MO_Bearer_Modification := false; // @desc Support of ESM UE requested bearer resource modification procedure + // Reference: 36.523-2 A.4.4-1/11 + + modulepar boolean pc_ESM_Notification := false; // @desc Support of ESM Notification procedure + // Reference: 36.523-2 A.4.4.1-71 + + modulepar boolean pc_ESM_UE_Modification_NW_TFT := false; // @desc Support for UE requested modification of network allocated TFTs + // Reference: 36.523-2 A.4.4-1/54 + + modulepar boolean pc_ETWS_message := false; // @desc Support of ETWS message + // Reference: 36.523-2 A.4.4-1/20 + + modulepar boolean pc_E_UTRAN_2_GERAN_PSHO := false; // @desc Support for inter-RAT PS handover from E_UTRAN to GERAN + // Reference: 36.523-2 A.4.4-1/52 + + modulepar boolean pc_Enhanced_1xCSfallback := false; // @desc Support of Enhanced 1xCS fallback + // Reference: 36.523-2, A.4.2.1.1-1/x + + modulepar boolean pc_FDD := false; // @desc UE supports UTRA band as defined in TS 25.101 + // Reference: 34.123-2 A.1/1 + + modulepar boolean pc_FeatrGrp_1 := false; // @desc Support of Intra-subframe frequency hopping for PUSCH scheduled by UL grant, Extended cyclic prefix with f = 7.5kHz for DL resource block, DCI format 3a (TPC commands for PUCCH and PUSCH with single bit power adjustments), Multi-user MIMO for PDSCH, Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-0 - UE selected subband CQI without PMI, Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-2 - UE selected subband CQI with multiple PMI + // Reference: 36.523-2 A.4.5-1/1 + + modulepar boolean pc_FeatrGrp_10 := false; // @desc Support of EUTRA RRC_CONNECTED to GERAN (Packet_)Idle by Cell Change Order, EUTRA RRC_CONNECTED to GERAN (Packet_)Idle by Cell Change Order with NACC (Network Assisted Cell Change) + // Reference: 36.523-2 A.4.5-1/10 + + modulepar boolean pc_FeatrGrp_101 := false; // @desc DMRS with OCC (orthogonal cover code) and SGH (sequence group hopping) disabling + // Reference: 36.523-2 A.4.5-3/1 + + modulepar boolean pc_FeatrGrp_101_F := false; // @desc DMRS with OCC (orthogonal cover code) and SGH (sequence group hopping) disabling + // Reference: 36.523-2 A.4.5-3a/1 + + modulepar boolean pc_FeatrGrp_101_T := false; // @desc DMRS with OCC (orthogonal cover code) and SGH (sequence group hopping) disabling + // Reference: 36.523-2 A.4.5-3b/1 + + modulepar boolean pc_FeatrGrp_102 := false; // @desc Trigger type 1 SRS (aperiodic SRS) transmission (Up to X ports) + // Reference: 36.523-2 A.4.5-3/2 + + modulepar boolean pc_FeatrGrp_102_F := false; // @desc Trigger type 1 SRS (aperiodic SRS) transmission (Up to X ports) + // Reference: 36.523-2 A.4.5-3a/2 + + modulepar boolean pc_FeatrGrp_102_T := false; // @desc Trigger type 1 SRS (aperiodic SRS) transmission (Up to X ports) + // Reference: 36.523-2 A.4.5-3b/2 + + modulepar boolean pc_FeatrGrp_103 := false; // @desc PDSCH transmission mode 9 when up to 4 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3/3 + + modulepar boolean pc_FeatrGrp_103_F := false; // @desc PDSCH transmission mode 9 when up to 4 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3a/3 + + modulepar boolean pc_FeatrGrp_103_T := false; // @desc PDSCH transmission mode 9 when up to 4 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3b/3 + + modulepar boolean pc_FeatrGrp_104 := false; // @desc PDSCH transmission mode 9 for TDD when 8 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3/4 + + modulepar boolean pc_FeatrGrp_104_F := false; // @desc PDSCH transmission mode 9 for TDD when 8 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3a/4 + + modulepar boolean pc_FeatrGrp_104_T := false; // @desc PDSCH transmission mode 9 for TDD when 8 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3b/4 + + modulepar boolean pc_FeatrGrp_105 := false; // @desc Periodic CQI/PMI/RI reporting on PUCCH: Mode 2-0:UE selected subband CQI without PMI, when PDSCH transmission mode 9 is configured.Periodic CQI/PMI/RI reporting on PUCCH: Mode 2-1:UE selected subband CQI with single PMI, when PDSCH transmission mode 9 and up to 4 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3/5 + + modulepar boolean pc_FeatrGrp_105_F := false; // @desc Periodic CQI/PMI/RI reporting on PUCCH: Mode 2-0:UE selected subband CQI without PMI, when PDSCH transmission mode 9 is configured.Periodic CQI/PMI/RI reporting on PUCCH: Mode 2-1:UE selected subband CQI with single PMI, when PDSCH transmission mode 9 and up to 4 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3a/5 + + modulepar boolean pc_FeatrGrp_105_T := false; // @desc Periodic CQI/PMI/RI reporting on PUCCH: Mode 2-0:UE selected subband CQI without PMI, when PDSCH transmission mode 9 is configured.Periodic CQI/PMI/RI reporting on PUCCH: Mode 2-1:UE selected subband CQI with single PMI, when PDSCH transmission mode 9 and up to 4 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3b/5 + + modulepar boolean pc_FeatrGrp_106 := false; // @desc Periodic CQI/PMI/RI/PTI reporting on PUCCH: Mode 2-1: UE selected subband CQI with single PMI, when PDSCH transmission mode 9 and 8 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3/6 + + modulepar boolean pc_FeatrGrp_106_F := false; // @desc Periodic CQI/PMI/RI/PTI reporting on PUCCH: Mode 2-1: UE selected subband CQI with single PMI, when PDSCH transmission mode 9 and 8 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3a/6 + + modulepar boolean pc_FeatrGrp_106_T := false; // @desc Periodic CQI/PMI/RI/PTI reporting on PUCCH: Mode 2-1: UE selected subband CQI with single PMI, when PDSCH transmission mode 9 and 8 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3b/6 + + modulepar boolean pc_FeatrGrp_107 := false; // @desc Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-0: UE selected subband CQI without PMI, when PDSCH transmission mode 9 is configured. Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-2: UE selected subband CQI with multiple PMI, when PDSCH transmission mode 9 and up to 4 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3/7 + + modulepar boolean pc_FeatrGrp_107_F := false; // @desc Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-0: UE selected subband CQI without PMI, when PDSCH transmission mode 9 is configured. Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-2: UE selected subband CQI with multiple PMI, when PDSCH transmission mode 9 and up to 4 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3a/7 + + modulepar boolean pc_FeatrGrp_107_T := false; // @desc Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-0: UE selected subband CQI without PMI, when PDSCH transmission mode 9 is configured. Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-2: UE selected subband CQI with multiple PMI, when PDSCH transmission mode 9 and up to 4 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3b/7 + + modulepar boolean pc_FeatrGrp_108 := false; // @desc Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-2: UE selected subband CQI with multiple PMI, when PDSCH transmission mode 9 and 8 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3/8 + + modulepar boolean pc_FeatrGrp_108_F := false; // @desc Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-2: UE selected subband CQI with multiple PMI, when PDSCH transmission mode 9 and 8 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3a/8 + + modulepar boolean pc_FeatrGrp_108_T := false; // @desc Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-2: UE selected subband CQI with multiple PMI, when PDSCH transmission mode 9 and 8 CSI reference signal ports are configured + // Reference: 36.523-2 A.4.5-3b/8 + + modulepar boolean pc_FeatrGrp_109 := false; // @desc Periodic CQI/PMI/RI reporting on PUCCH Mode 1-1, submode 1 + // Reference: 36.523-2 A.4.5-3/9 + + modulepar boolean pc_FeatrGrp_109_F := false; // @desc Periodic CQI/PMI/RI reporting on PUCCH Mode 1-1, submode 1 + // Reference: 36.523-2 A.4.5-3a/9 + + modulepar boolean pc_FeatrGrp_109_T := false; // @desc Periodic CQI/PMI/RI reporting on PUCCH Mode 1-1, submode 1 + // Reference: 36.523-2 A.4.5-3b/9 + + modulepar boolean pc_FeatrGrp_10_F := false; // @desc Support of EUTRA RRC_CONNECTED to GERAN (Packet_)Idle by Cell Change Order, EUTRA RRC_CONNECTED to GERAN (Packet_)Idle by Cell Change Order with NACC (Network Assisted Cell Change) + // Reference: 36.523-2 A.4.5-1a/10 + + modulepar boolean pc_FeatrGrp_10_T := false; // @desc Support of EUTRA RRC_CONNECTED to GERAN (Packet_)Idle by Cell Change Order, EUTRA RRC_CONNECTED to GERAN (Packet_)Idle by Cell Change Order with NACC (Network Assisted Cell Change) + // Reference: 36.523-2 A.4.5-1b/10 + + modulepar boolean pc_FeatrGrp_11 := false; // @desc Support of EUTRA RRC_CONNECTED to 1xRTT CS Active handover + // Reference: 36.523-2 A.4.5-1/11 + + modulepar boolean pc_FeatrGrp_110 := false; // @desc Periodic CQI/PMI/RI reporting on PUCCH Mode 1-1, submode 2 + // Reference: 36.523-2 A.4.5-3/10 + + modulepar boolean pc_FeatrGrp_110_F := false; // @desc Periodic CQI/PMI/RI reporting on PUCCH Mode 1-1, submode 2 + // Reference: 36.523-2 A.4.5-3a/10 + + modulepar boolean pc_FeatrGrp_110_T := false; // @desc Periodic CQI/PMI/RI reporting on PUCCH Mode 1-1, submode 2 + // Reference: 36.523-2 A.4.5-3b/10 + + modulepar boolean pc_FeatrGrp_111 := false; // @desc Measurement reporting trigger Event A6 + // Reference: 36.523-2 A.4.5-3/11 + + modulepar boolean pc_FeatrGrp_111_F := false; // @desc Measurement reporting trigger Event A6 + // Reference: 36.523-2 A.4.5-3a/11 + + modulepar boolean pc_FeatrGrp_111_T := false; // @desc Measurement reporting trigger Event A6 + // Reference: 36.523-2 A.4.5-3b/11 + + modulepar boolean pc_FeatrGrp_112 := false; // @desc SCell addition within the Handover to EUTRA procedure + // Reference: 36.523-2 A.4.5-3/12 + + modulepar boolean pc_FeatrGrp_112_F := false; // @desc SCell addition within the Handover to EUTRA procedure + // Reference: 36.523-2 A.4.5-3a/12 + + modulepar boolean pc_FeatrGrp_112_T := false; // @desc SCell addition within the Handover to EUTRA procedure + // Reference: 36.523-2 A.4.5-3b/12 + + modulepar boolean pc_FeatrGrp_113 := false; // @desc Trigger type 0 SRS (periodic SRS) transmission on X Serving Cells + // Reference: 36.523-2 A.4.5-3/13 + + modulepar boolean pc_FeatrGrp_113_F := false; // @desc Trigger type 0 SRS (periodic SRS) transmission on X Serving Cells + // Reference: 36.523-2 A.4.5-3a/13 + + modulepar boolean pc_FeatrGrp_113_T := false; // @desc Trigger type 0 SRS (periodic SRS) transmission on X Serving Cells + // Reference: 36.523-2 A.4.5-3b/13 + + modulepar boolean pc_FeatrGrp_114 := false; // @desc Reporting of both UTRA CPICH RSCP and Ec/N0 in a Measurement Report + // Reference: 36.523-2 A.4.5-3/14 + + modulepar boolean pc_FeatrGrp_114_F := false; // @desc Reporting of both UTRA CPICH RSCP and Ec/N0 in a Measurement Report + // Reference: 36.523-2 A.4.5-3a/14 + + modulepar boolean pc_FeatrGrp_114_T := false; // @desc Reporting of both UTRA CPICH RSCP and Ec/N0 in a Measurement Report + // Reference: 36.523-2 A.4.5-3b/14 + + modulepar boolean pc_FeatrGrp_115 := false; // @desc time domain ICIC RLM/RRM measurement subframe restriction for the serving cell. time domain ICIC RRM measurement subframe restriction for neighbour cells. time domain ICIC CSI measurement subframe restriction + // Reference: 36.523-2 A.4.5-3/15 + + modulepar boolean pc_FeatrGrp_115_F := false; // @desc time domain ICIC RLM/RRM measurement subframe restriction for the serving cell. time domain ICIC RRM measurement subframe restriction for neighbour cells. time domain ICIC CSI measurement subframe restriction + // Reference: 36.523-2 A.4.5-3a/15 + + modulepar boolean pc_FeatrGrp_115_T := false; // @desc time domain ICIC RLM/RRM measurement subframe restriction for the serving cell. time domain ICIC RRM measurement subframe restriction for neighbour cells. time domain ICIC CSI measurement subframe restriction + // Reference: 36.523-2 A.4.5-3b/15 + + modulepar boolean pc_FeatrGrp_116 := false; // @desc Relative transmit phase continuity for spatial multiplexing in UL + // Reference: 36.523-2 A.4.5-3/16 + + modulepar boolean pc_FeatrGrp_116_F := false; // @desc Relative transmit phase continuity for spatial multiplexing in UL + // Reference: 36.523-2 A.4.5-3a/16 + + modulepar boolean pc_FeatrGrp_116_T := false; // @desc Relative transmit phase continuity for spatial multiplexing in UL + // Reference: 36.523-2 A.4.5-3b/16 + + modulepar boolean pc_FeatrGrp_11_F := false; // @desc Support of EUTRA RRC_CONNECTED to 1xRTT CS Active handover + // Reference: 36.523-2 A.4.5-1a/11 + + modulepar boolean pc_FeatrGrp_11_T := false; // @desc Support of EUTRA RRC_CONNECTED to 1xRTT CS Active handover + // Reference: 36.523-2 A.4.5-1b/11 + + modulepar boolean pc_FeatrGrp_12 := false; // @desc Support of EUTRA RRC_CONNECTED to HRPD Active handover + // Reference: 36.523-2 A.4.5-1/12 + + modulepar boolean pc_FeatrGrp_12_F := false; // @desc Support of EUTRA RRC_CONNECTED to HRPD Active handover + // Reference: 36.523-2 A.4.5-1a/12 + + modulepar boolean pc_FeatrGrp_12_T := false; // @desc Support of EUTRA RRC_CONNECTED to HRPD Active handover + // Reference: 36.523-2 A.4.5-1b/12 + + modulepar boolean pc_FeatrGrp_13 := false; // @desc Support of Inter-frequency handover (within FDD or TDD) + // Reference: 36.523-2 A.4.5-1/13 + + modulepar boolean pc_FeatrGrp_13_F := false; // @desc Support of Inter-frequency handover (within FDD or TDD) + // Reference: 36.523-2 A.4.5-1a/13 + + modulepar boolean pc_FeatrGrp_13_T := false; // @desc Support of Inter-frequency handover (within FDD or TDD) + // Reference: 36.523-2 A.4.5-1b/13 + + modulepar boolean pc_FeatrGrp_14 := false; // @desc Support of Measurement reporting event: Event A4 - Neighbour > threshold, Measurement reporting event: Event A5 - Serving < threshold1 & Neighbour > threshold2 + // Reference: 36.523-2 A.4.5-1/14 + + modulepar boolean pc_FeatrGrp_14_F := false; // @desc Support of Measurement reporting event: Event A4 - Neighbour > threshold, Measurement reporting event: Event A5 - Serving < threshold1 & Neighbour > threshold2 + // Reference: 36.523-2 A.4.5-1a/14 + + modulepar boolean pc_FeatrGrp_14_T := false; // @desc Support of Measurement reporting event: Event A4 - Neighbour > threshold, Measurement reporting event: Event A5 - Serving < threshold1 & Neighbour > threshold2 + // Reference: 36.523-2 A.4.5-1b/14 + + modulepar boolean pc_FeatrGrp_15 := false; // @desc Support of Measurement reporting event: Event B1 - Neighbour > threshold + // Reference: 36.523-2 A.4.5-1/15 + + modulepar boolean pc_FeatrGrp_15_F := false; // @desc Support of Measurement reporting event: Event B1 - Neighbour > threshold + // Reference: 36.523-2 A.4.5-1a/15 + + modulepar boolean pc_FeatrGrp_15_T := false; // @desc Support of Measurement reporting event: Event B1 - Neighbour > threshold + // Reference: 36.523-2 A.4.5-1b/15 + + modulepar boolean pc_FeatrGrp_16 := false; // @desc Support of Periodical measurement reporting for non-ANR related measurements + // Reference: 36.523-2 A.4.5-1/16 + + modulepar boolean pc_FeatrGrp_16_F := false; // @desc Support of Periodical measurement reporting for non-ANR related measurements + // Reference: 36.523-2 A.4.5-1a/16 + + modulepar boolean pc_FeatrGrp_16_T := false; // @desc Support of Periodical measurement reporting for non-ANR related measurements + // Reference: 36.523-2 A.4.5-1b/16 + + modulepar boolean pc_FeatrGrp_17 := false; // @desc Support of Periodical measurement reporting for SON / ANR and ANR related intra-frequency measurement reporting events + // Reference: 36.523-2 A.4.5-1/17 + + modulepar boolean pc_FeatrGrp_17_F := false; // @desc Support of Periodical measurement reporting for SON / ANR and ANR related intra-frequency measurement reporting events + // Reference: 36.523-2 A.4.5-1a/17 + + modulepar boolean pc_FeatrGrp_17_T := false; // @desc Support of Periodical measurement reporting for SON / ANR and ANR related intra-frequency measurement reporting events + // Reference: 36.523-2 A.4.5-1b/17 + + modulepar boolean pc_FeatrGrp_18 := false; // @desc Support of ANR related inter-frequency measurement reporting events + // Reference: 36.523-2 A.4.5-1/18 + + modulepar boolean pc_FeatrGrp_18_F := false; // @desc Support of ANR related inter-frequency measurement reporting events + // Reference: 36.523-2 A.4.5-1a/18 + + modulepar boolean pc_FeatrGrp_18_T := false; // @desc Support of ANR related inter-frequency measurement reporting events + // Reference: 36.523-2 A.4.5-1b/18 + + modulepar boolean pc_FeatrGrp_19 := false; // @desc Support of ANR related inter-RAT measurement reporting events + // Reference: 36.523-2 A.4.5-1/19 + + modulepar boolean pc_FeatrGrp_19_F := false; // @desc Support of ANR related inter-RAT measurement reporting events + // Reference: 36.523-2 A.4.5-1a/19 + + modulepar boolean pc_FeatrGrp_19_T := false; // @desc Support of ANR related inter-RAT measurement reporting events + // Reference: 36.523-2 A.4.5-1b/19 + + modulepar boolean pc_FeatrGrp_1_F := false; // @desc Support of Intra-subframe frequency hopping for PUSCH scheduled by UL grant, Extended cyclic prefix with f = 7.5kHz for DL resource block, DCI format 3a (TPC commands for PUCCH and PUSCH with single bit power adjustments), Multi-user MIMO for PDSCH, Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-0 - UE selected subband CQI without PMI, Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-2 - UE selected subband CQI with multiple PMI + // Reference: 36.523-2 A.4.5-1a/1 + + modulepar boolean pc_FeatrGrp_1_T := false; // @desc Support of Intra-subframe frequency hopping for PUSCH scheduled by UL grant, Extended cyclic prefix with f = 7.5kHz for DL resource block, DCI format 3a (TPC commands for PUCCH and PUSCH with single bit power adjustments), Multi-user MIMO for PDSCH, Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-0 - UE selected subband CQI without PMI, Aperiodic CQI/PMI/RI reporting on PUSCH: Mode 2-2 - UE selected subband CQI with multiple PMI + // Reference: 36.523-2 A.4.5-1b/1 + + modulepar boolean pc_FeatrGrp_2 := false; // @desc Support of Simultaneous CQI and ACK/NACK on PUCCH, i.e. PUCCH format 2a and 2b, Absolute TPC command for PUSCH, Resource allocation type 1 for PDSCH, Periodic CQI/PMI/RI reporting on PUCCH: Mode 2- 0 - UE selected subband CQI without PMI, Periodic CQI/PMI/RI reporting on PUCCH: Mode 2-1 - UE selected subband CQI with single PMI + // Reference: 36.523-2 A.4.5-1/2 + + modulepar boolean pc_FeatrGrp_20 := false; // @desc Support of RB combination: SRB1 and SRB2 for DCCH + x AM DRB + x UM DRB + // Reference: 36.523-2 A.4.5-1/20 + + modulepar boolean pc_FeatrGrp_20_F := false; // @desc Support of RB combination: SRB1 and SRB2 for DCCH + x AM DRB + x UM DRB + // Reference: 36.523-2 A.4.5-1a/20 + + modulepar boolean pc_FeatrGrp_20_T := false; // @desc Support of RB combination: SRB1 and SRB2 for DCCH + x AM DRB + x UM DRB + // Reference: 36.523-2 A.4.5-1b/20 + + modulepar boolean pc_FeatrGrp_21 := false; // @desc Support of Predefined intra-subframe frequency hopping for PUSCH with N_sb > 1, Predefined inter-subframe frequency hopping for PUSCH with N_sb > 1 + // Reference: 36.523-2 A.4.5-1/21 + + modulepar boolean pc_FeatrGrp_21_F := false; // @desc Support of Predefined intra-subframe frequency hopping for PUSCH with N_sb > 1, Predefined inter-subframe frequency hopping for PUSCH with N_sb > 1 + // Reference: 36.523-2 A.4.5-1a/21 + + modulepar boolean pc_FeatrGrp_21_T := false; // @desc Support of Predefined intra-subframe frequency hopping for PUSCH with N_sb > 1, Predefined inter-subframe frequency hopping for PUSCH with N_sb > 1 + // Reference: 36.523-2 A.4.5-1b/21 + + modulepar boolean pc_FeatrGrp_22 := false; // @desc Support of UTRAN measurements and reporting in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1/22 + + modulepar boolean pc_FeatrGrp_22_F := false; // @desc Support of UTRAN measurements and reporting in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1a/22 + + modulepar boolean pc_FeatrGrp_22_T := false; // @desc Support of UTRAN measurements and reporting in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1b/22 + + modulepar boolean pc_FeatrGrp_23 := false; // @desc Support of GERAN measurements and reporting in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1/23 + + modulepar boolean pc_FeatrGrp_23_F := false; // @desc Support of GERAN measurements and reporting in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1a/23 + + modulepar boolean pc_FeatrGrp_23_T := false; // @desc Support of GERAN measurements and reporting in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1b/23 + + modulepar boolean pc_FeatrGrp_24 := false; // @desc Support of cdma2000 measurements and reporting in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1/24 + + modulepar boolean pc_FeatrGrp_24_F := false; // @desc Support of cdma2000 measurements and reporting in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1a/24 + + modulepar boolean pc_FeatrGrp_24_T := false; // @desc Support of cdma2000 measurements and reporting in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1b/24 + + modulepar boolean pc_FeatrGrp_25 := false; // @desc Support of Inter-frequency measurements and reporting in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1/25 + + modulepar boolean pc_FeatrGrp_25_F := false; // @desc Support of Inter-frequency measurements and reporting in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1a/25 + + modulepar boolean pc_FeatrGrp_25_T := false; // @desc Support of Inter-frequency measurements and reporting in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1b/25 + + modulepar boolean pc_FeatrGrp_26 := false; // @desc Support of HRPD measurements, reporting and measurement reporting event B2 in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1/26 + + modulepar boolean pc_FeatrGrp_26_F := false; // @desc Support of HRPD measurements, reporting and measurement reporting event B2 in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1a/26 + + modulepar boolean pc_FeatrGrp_26_T := false; // @desc Support of HRPD measurements, reporting and measurement reporting event B2 in E-UTRA connected mode + // Reference: 36.523-2 A.4.5-1b/26 + + modulepar boolean pc_FeatrGrp_27 := false; // @desc Support of EUTRA RRC_CONNECTED to UTRA CELL_DCH CS handover + // Reference: 36.523-2 A.4.5-1/27 + + modulepar boolean pc_FeatrGrp_27_F := false; // @desc Support of EUTRA RRC_CONNECTED to UTRA CELL_DCH CS handover + // Reference: 36.523-2 A.4.5-1a/27 + + modulepar boolean pc_FeatrGrp_27_T := false; // @desc Support of EUTRA RRC_CONNECTED to UTRA CELL_DCH CS handover + // Reference: 36.523-2 A.4.5-1b/27 + + modulepar boolean pc_FeatrGrp_28 := false; // @desc Support of TTI bundling + // Reference: 36.523-2 A.4.5-1/28 + + modulepar boolean pc_FeatrGrp_28_F := false; // @desc Support of TTI bundling + // Reference: 36.523-2 A.4.5-1a/28 + + modulepar boolean pc_FeatrGrp_28_T := false; // @desc Support of TTI bundling + // Reference: 36.523-2 A.4.5-1b/28 + + modulepar boolean pc_FeatrGrp_29 := false; // @desc Support of Semi-Persistent Scheduling + // Reference: 36.523-2 A.4.5-1/29 + + modulepar boolean pc_FeatrGrp_29_F := false; // @desc Support of Semi-Persistent Scheduling + // Reference: 36.523-2 A.4.5-1a/29 + + modulepar boolean pc_FeatrGrp_29_T := false; // @desc Support of Semi-Persistent Scheduling + // Reference: 36.523-2 A.4.5-1b/29 + + modulepar boolean pc_FeatrGrp_2_F := false; // @desc Support of Simultaneous CQI and ACK/NACK on PUCCH, i.e. PUCCH format 2a and 2b, Absolute TPC command for PUSCH, Resource allocation type 1 for PDSCH, Periodic CQI/PMI/RI reporting on PUCCH: Mode 2- 0 - UE selected subband CQI without PMI, Periodic CQI/PMI/RI reporting on PUCCH: Mode 2-1 - UE selected subband CQI with single PMI + // Reference: 36.523-2 A.4.5-1a/2 + + modulepar boolean pc_FeatrGrp_2_T := false; // @desc Support of Simultaneous CQI and ACK/NACK on PUCCH, i.e. PUCCH format 2a and 2b, Absolute TPC command for PUSCH, Resource allocation type 1 for PDSCH, Periodic CQI/PMI/RI reporting on PUCCH: Mode 2- 0 - UE selected subband CQI without PMI, Periodic CQI/PMI/RI reporting on PUCCH: Mode 2-1 - UE selected subband CQI with single PMI + // Reference: 36.523-2 A.4.5-1b/2 + + modulepar boolean pc_FeatrGrp_3 := false; // @desc Support of Semi-persistent scheduling, TTI bundling, 5bit RLC UM SN, 7bit PDCP SN + // Reference: 36.523-2 A.4.5-1/3 + + modulepar boolean pc_FeatrGrp_30 := false; // @desc Support of Handover between FDD and TDD + // Reference: 36.523-2 A.4.5-1/30 + + modulepar boolean pc_FeatrGrp_30_F := false; // @desc Support of Handover between FDD and TDD + // Reference: 36.523-2 A.4.5-1a/30 + + modulepar boolean pc_FeatrGrp_30_T := false; // @desc Support of Handover between FDD and TDD + // Reference: 36.523-2 A.4.5-1b/30 + + modulepar boolean pc_FeatrGrp_31 := false; // @desc Support of the mechanisms defined for cells broadcasting multi band information i.e. comprehending multiBandInfoList + // Reference: 36.523-2 A.4.5-1/31 + + modulepar boolean pc_FeatrGrp_31_F := false; // @desc Support of the mechanisms defined for cells broadcasting multi band information i.e. comprehending multiBandInfoList + // Reference: 36.523-2 A.4.5-1a/31 + + modulepar boolean pc_FeatrGrp_31_T := false; // @desc Support of the mechanisms defined for cells broadcasting multi band information i.e. comprehending multiBandInfoList + // Reference: 36.523-2 A.4.5-1b/31 + + modulepar boolean pc_FeatrGrp_33 := false; // @desc Inter-RAT ANR features for UTRAN including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCellsForSON + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1c/1 + + modulepar boolean pc_FeatrGrp_33_F := false; // @desc Inter-RAT ANR features for UTRAN including: Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCellsForSON + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1d/1 + + modulepar boolean pc_FeatrGrp_33_T := false; // @desc Inter-RAT ANR features for UTRAN including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCellsForSON + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1e/1 + + modulepar boolean pc_FeatrGrp_34 := false; // @desc Inter-RAT ANR features for GERAN including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCells + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1c/2 + + modulepar boolean pc_FeatrGrp_34_F := false; // @desc Inter-RAT ANR features for GERAN including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCells + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1d/2 + + modulepar boolean pc_FeatrGrp_34_T := false; // @desc Inter-RAT ANR features for GERAN including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCells + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1e/2 + + modulepar boolean pc_FeatrGrp_35 := false; // @desc Inter-RAT ANR features for 1xRTT including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCellsForSON + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1c/3 + + modulepar boolean pc_FeatrGrp_35_F := false; // @desc Inter-RAT ANR features for 1xRTT including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCellsForSON + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1d/3 + + modulepar boolean pc_FeatrGrp_35_T := false; // @desc Inter-RAT ANR features for 1xRTT including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCellsForSON + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1e/3 + + modulepar boolean pc_FeatrGrp_36 := false; // @desc Inter-RAT ANR features for HRPD including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCellsForSON + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1c/4 + + modulepar boolean pc_FeatrGrp_36_F := false; // @desc Inter-RAT ANR features for HRPD including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCellsForSON + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1d/4 + + modulepar boolean pc_FeatrGrp_36_T := false; // @desc Inter-RAT ANR features for HRPD including: Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to portStrongestCellsForSON + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1e/4 + + modulepar boolean pc_FeatrGrp_37 := false; // @desc Inter-RAT ANR features for UTRAN TDD including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCellsForSON + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1c/5 + + modulepar boolean pc_FeatrGrp_37_F := false; // @desc Inter-RAT ANR features for UTRAN TDD including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCellsForSON + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1d/5 + + modulepar boolean pc_FeatrGrp_37_T := false; // @desc Inter-RAT ANR features for UTRAN TDD including: + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportStrongestCellsForSON + // Inter-RAT periodical measurement reporting where triggerType is set to periodical and purpose is set to reportCGI + // Reference: 36.523-2 A.4.5-1e/5 + + modulepar boolean pc_FeatrGrp_38 := false; // @desc EUTRA RRC_CONNECTED to UTRA TDD CELL_DCH PS handover, if the UE supports both UTRAN FDD and UTRAN TDD + // Reference: 36.523-2 A.4.5-1c/6 + + modulepar boolean pc_FeatrGrp_38_F := false; // @desc EUTRA RRC_CONNECTED to UTRA TDD CELL_DCH PS handover, if the UE supports both UTRAN FDD and UTRAN TDD + // Reference: 36.523-2 A.4.5-1d/6 + + modulepar boolean pc_FeatrGrp_38_T := false; // @desc EUTRA RRC_CONNECTED to UTRA TDD CELL_DCH PS handover, if the UE supports both UTRAN FDD and UTRAN TDD + // Reference: 36.523-2 A.4.5-1e/6 + + modulepar boolean pc_FeatrGrp_39 := false; // @desc UTRAN TDD measurements, reporting and measurement reporting event B2 in E-UTRA connected mode, if the UE supports both UTRAN FDD and UTRAN TDD + // Reference: 36.523-2 A.4.5-1c/7 + + modulepar boolean pc_FeatrGrp_39_F := false; // @desc UTRAN TDD measurements, reporting and measurement reporting event B2 in E-UTRA connected mode, if the UE supports both UTRAN FDD and UTRAN TDD + // Reference: 36.523-2 A.4.5-1d/7 + + modulepar boolean pc_FeatrGrp_39_T := false; // @desc UTRAN TDD measurements, reporting and measurement reporting event B2 in E-UTRA connected mode, if the UE supports both UTRAN FDD and UTRAN TDD + // Reference: 36.523-2 A.4.5-1e/7 + + modulepar boolean pc_FeatrGrp_3_F := false; // @desc Support of Semi-persistent scheduling, TTI bundling, 5bit RLC UM SN, 7bit PDCP SN + // Reference: 36.523-2 A.4.5-1a/3 + + modulepar boolean pc_FeatrGrp_3_T := false; // @desc Support of Semi-persistent scheduling, TTI bundling, 5bit RLC UM SN, 7bit PDCP SN + // Reference: 36.523-2 A.4.5-1b/3 + + modulepar boolean pc_FeatrGrp_4 := false; // @desc Support of Short DRX cycle + // Reference: 36.523-2 A.4.5-1/4 + + modulepar boolean pc_FeatrGrp_40 := false; // @desc EUTRA RRC_CONNECTED to UTRA TDD CELL_DCH CS handover, if the UE supports both UTRAN FDD and UTRAN TDD + // Reference: 36.523-2 A.4.5-1c/8 + + modulepar boolean pc_FeatrGrp_40_F := false; // @desc EUTRA RRC_CONNECTED to UTRA TDD CELL_DCH CS handover, if the UE supports both UTRAN FDD and UTRAN TDD + // Reference: 36.523-2 A.4.5-1d/8 + + modulepar boolean pc_FeatrGrp_40_T := false; // @desc EUTRA RRC_CONNECTED to UTRA TDD CELL_DCH CS handover, if the UE supports both UTRAN FDD and UTRAN TDD + // Reference: 36.523-2 A.4.5-1e/8 + + modulepar boolean pc_FeatrGrp_41 := false; // @desc Measurement reporting event: Event B1 – Neighbour > threshold for UTRAN FDD, if the UE supports UTRAN FDD and has set bit number 22 to 1 + // Reference: 36.523-2 A.4.5-1c/9 + + modulepar boolean pc_FeatrGrp_41_F := false; // @desc Measurement reporting event: Event B1 – Neighbour > threshold for UTRAN FDD, if the UE supports UTRAN FDD and has set bit number 22 to 1 + // Reference: 36.523-2 A.4.5-1d/9 + + modulepar boolean pc_FeatrGrp_41_T := false; // @desc Measurement reporting event: Event B1 – Neighbour > threshold for UTRAN FDD, if the UE supports UTRAN FDD and has set bit number 22 to 1 + // Reference: 36.523-2 A.4.5-1e/9 + + modulepar boolean pc_FeatrGrp_4_F := false; // @desc Support of Short DRX cycle + // Reference: 36.523-2 A.4.5-1a/4 + + modulepar boolean pc_FeatrGrp_4_T := false; // @desc Support of Short DRX cycle + // Reference: 36.523-2 A.4.5-1b/4 + + modulepar boolean pc_FeatrGrp_5 := false; // @desc Support of Long DRX cycle, DRX command MAC control element + // Reference: 36.523-2 A.4.5-1/5 + + modulepar boolean pc_FeatrGrp_5_F := false; // @desc Support of Long DRX cycle, DRX command MAC control element + // Reference: 36.523-2 A.4.5-1a/5 + + modulepar boolean pc_FeatrGrp_5_T := false; // @desc Support of Long DRX cycle, DRX command MAC control element + // Reference: 36.523-2 A.4.5-1b/5 + + modulepar boolean pc_FeatrGrp_6 := false; // @desc Support of Piroritized bit rate + // Reference: 36.523-2 A.4.5-1/6 + + modulepar boolean pc_FeatrGrp_6_F := false; // @desc Support of Piroritized bit rate + // Reference: 36.523-2 A.4.5-1a/6 + + modulepar boolean pc_FeatrGrp_6_T := false; // @desc Support of Piroritized bit rate + // Reference: 36.523-2 A.4.5-1b/6 + + modulepar boolean pc_FeatrGrp_7 := false; // @desc Support of RLC UM + // Reference: 36.523-2 A.4.5-1/7 + + modulepar boolean pc_FeatrGrp_7_F := false; // @desc Support of RLC UM + // Reference: 36.523-2 A.4.5-1a/7 + + modulepar boolean pc_FeatrGrp_7_T := false; // @desc Support of RLC UM + // Reference: 36.523-2 A.4.5-1b/7 + + modulepar boolean pc_FeatrGrp_8 := false; // @desc Support of EUTRA RRC_CONNECTED to UTRA CELL_DCH PS handover + // Reference: 36.523-2 A.4.5-1/8 + + modulepar boolean pc_FeatrGrp_8_F := false; // @desc Support of EUTRA RRC_CONNECTED to UTRA CELL_DCH PS handover + // Reference: 36.523-2 A.4.5-1a/8 + + modulepar boolean pc_FeatrGrp_8_T := false; // @desc Support of EUTRA RRC_CONNECTED to UTRA CELL_DCH PS handover + // Reference: 36.523-2 A.4.5-1b/8 + + modulepar boolean pc_FeatrGrp_9 := false; // @desc Support of EUTRA RRC_CONNECTED to GERAN GSM_Dedicated handover + // Reference: 36.523-2 A.4.5-1/9 + + modulepar boolean pc_FeatrGrp_9_F := false; // @desc Support of EUTRA RRC_CONNECTED to GERAN GSM_Dedicated handover + // Reference: 36.523-2 A.4.5-1a/9 + + modulepar boolean pc_FeatrGrp_9_T := false; // @desc Support of EUTRA RRC_CONNECTED to GERAN GSM_Dedicated handover + // Reference: 36.523-2 A.4.5-1b/9 + + modulepar boolean pc_FullNameNetwork := false; // @desc Support of storage of the network full name + // Reference: 36.523-2 A.4.4-1/12 + + modulepar boolean pc_GERAN := false; // @desc UE Supports GSM and/or GPRS + // Reference: 36.523-2 A.4.1-1/7 + + modulepar boolean pc_GERAN_2_E_UTRAN_PSHO := false; // @desc Support of GERAN to E-UTRAN PS Handover + // Reference: 36.523-2 A.4.4-1/29 + + modulepar boolean pc_GERAN_2_E_UTRAN_meas + := false; // @desc Supports Neighbour Cell measurements and Network controlled & autonomous cell reselection to E-UTRAN + // Reference: 36.523-2 A.4.4-1/21 + + modulepar boolean pc_GERAN_2_E_UTRAN_measreporting_CCN := false; // @desc Supports CCN towards E-UTRAN, E-UTRAN Neighbour cell measurement reporting and Network controlled cell reselection to E-UTRAN + // Reference: 36.523-2 A.4.4-1/39 + + modulepar boolean pc_HO_from_UTRA_to_eFDD := false; // @desc Support of Inter-RAT PS handover to E-UTRA from UTRA (FDD) + // Reference: 36.523-2 A.4.4-1/8 + + modulepar boolean pc_HO_from_UTRA_to_eTDD := false; // @desc Support of Inter-RAT PS handover to E-UTRA from UTRA (TDD) + // Reference: 36.523-2 A.4.4-1/aa + + modulepar boolean pc_HRPD := false; // @desc UE supports CDMA2000 HRPD band class + // Reference: 36.523-2, A.4.1-1/3 + + modulepar boolean pc_IMS := false; // @desc Support of IMS + // Reference: 36.523-2 A.4.4-1/25 + + modulepar boolean pc_IMSI_Detach := false; // @desc Support of detach for non-EPS services + // Reference: 36.523-2 A.4.4-1/34 + + modulepar boolean pc_IMS_SRVCCAlert := false; // @desc UE indicates g.3gpp.srvcc-alerting media feature tag in INVITE request or 180 response + // Reference: 34.229-2 Table A.12/34 + + modulepar boolean pc_IMS_emergency_call := false; // @desc Support of MS emergency call + // Reference: 36.523-2, A.4.2.1.1-1/4 + + modulepar boolean pc_IPv4 := false; // @desc UE supports IPv4 (used IMS PICS as currently not defined in LTE) + // Reference: 34.229-2 A.7/1 + + modulepar boolean pc_IPv6 := false; // @desc UE supports IPv6 (used IMS PICS as currently not defined in LTE) + // Reference: 34.229-2 A.7/2 + + modulepar boolean pc_ISR := false; // @desc Support of ISR + // Reference: 36.523-2 A.4.4-1/5 + + modulepar boolean pc_ImmConnect := false; // @desc Immediate connection supported for all circuit switched basic services + // Reference: 34.123-2 A.20/6 + + modulepar boolean pc_InterFreq_ProximityIndication := false; // @desc Support of Inter Frequency Proximity Indication + // Reference: 36.523-2 A.4.4.1-b + + modulepar boolean pc_IntraFreq_ProximityIndication := false; // @desc Support of Intra Frequency Proximity Indication + // Reference: 36.523-2 A.4.4.1-a + + modulepar boolean pc_KeepEpsBearerParametersAfterNormalDetach := false; + // @desc If the UE supports this, then the next ATTACH after DETACH shall be done using AT command AT+CGATT=1. + // Otherwise it shall be done using AT+CGDCONT=1,”IP” followed by AT+CGACT=1 + // Reference: 36.523-2 A.4.4.2-n + + modulepar boolean pc_LAP_override := false; // @desc Support of Low Access Prioirty Override + // Reference: 36.523-2 A.4.4-1/90 + + modulepar boolean pc_LocalTimeZone := false; // @desc Support of storage of the local time zone + // Reference: 36.523-2 A.4.4-1/14 + + modulepar boolean pc_LoggedMeasurementsIdle := false; // @desc Support of logged measurements in RRC_IDLE + // Reference: 36.523-2 A.4.4-1/62 + + modulepar boolean pc_Manual_CSG_Selection := false; // @desc Support of Manual CSG selection + // Reference: 36.523-2 A.4.4-1/49 + + modulepar boolean pc_Multiple_PDN := false; // @desc Support for multiple PDN connections + // Reference: 36.523-2 A.4.4-1/29 + + modulepar boolean pc_PS := false; // @desc Packet Switched + // Reference: 34.123-2 A.3/2 + + modulepar boolean pc_PS_data_centric := false; // @desc Support of configuring the UE to PS data centric + // Reference: 36.523-2 A.4.4-2/8 + + modulepar boolean pc_PS_voice_centric := false; // @desc Support of configuring the UE to PS voice centric + // Reference: 36.523-2 A.4.4-2/7 + + modulepar boolean pc_PWS_UpperLayer := false; // @desc Presence of PWS upper layer for functions like duplicate definition + // Reference: 36.523-2 A.4.4-1/67 + + modulepar boolean pc_Provide_IMS_APN := false; // @desc Configured to provide IMS APN during initial attach + // Reference: 36.523-2 A.4.4-2/nn + + modulepar boolean pc_Provide_IMS_as_second_APN := false; // @desc Configured to provide IMS APN as the 2nd PDN connection + // Reference: 36.523-2 A.4.4-2/mm + + modulepar boolean pc_Provide_Internet_as_second_APN := false; // @desc Configured to provide Internet APN as the 2nd PDN connection + // Reference: 36.523-2 A.4.4-2/oo + + modulepar boolean pc_RLF_ReportForInterRAT_MRO := false; // @desc Support of Radio Link Failure Report for InterRAT MRO + // Reference: 36.523-2 A.4.4-1/xx + + modulepar boolean pc_ROHC_profile0x0001 := false; // @desc Support for ROHC profile0x0001 + // Reference: 36.523-2 A.4.4-1/40 + + modulepar boolean pc_ROHC_profile0x0002 := false; // @desc Support for ROHC profile0x0002 + // Reference: 36.523-2 A.4.4-1/41 + + modulepar boolean pc_ROHC_profile0x0003 := false; // @desc Support for ROHC profile0x0003 + // Reference: 36.523-2 A.4.4-1/42 + + modulepar boolean pc_ROHC_profile0x0004 := false; // @desc Support for ROHC profile0x0004 + // Reference: 36.523-2 A.4.4-1/43 + + modulepar boolean pc_ROHC_profile0x0006 := false; // @desc Support for ROHC profile0x0006 + // Reference: 36.523-2 A.4.4-1/44 + + modulepar boolean pc_ROHC_profile0x0101 := false; // @desc Support for ROHC profile0x0101 + // Reference: 36.523-2 A.4.4-1/45 + + modulepar boolean pc_ROHC_profile0x0102 := false; // @desc Support for ROHC profile0x0102 + // Reference: 36.523-2 A.4.4-1/46 + + modulepar boolean pc_ROHC_profile0x0103 := false; // @desc Support for ROHC profile0x0103 + // Reference: 36.523-2 A.4.4-1/47 + + modulepar boolean pc_ROHC_profile0x0104 := false; // @desc Support for ROHC profile0x0104 + // Reference: 36.523-2 A.4.4-1/48 + + modulepar boolean pc_Rach_Report := false; // @desc Support of delivery of rachReport upon request from the network + // Reference: 36.523-2 A.4.4-1/85 + + modulepar boolean pc_Re_Attach_AfterDetachColl := false; // @desc Support of automatic re-activation of the EPS bearers during network initiated detach, even though UE has initiated a detach procedure with detach type set to EPS detach or combined EPS/IMSI detach + // Reference: 36.523-2 A.4.4-1/55 + + modulepar boolean pc_RequestIPv4HAAddress_DuringAttach := false; // @desc Support for being configured to request the IPv4 address of the Home Agent during Attach procedure + // Reference: 36.523-2 A.4.4-1/23 + + modulepar boolean pc_RequestIPv6HAAddress_DuringAttach := false; // @desc Support for being configured to request the IPv6 address of the Home Agent during Attach procedure + // Reference: 36.523-2 A.4.4-1/22 + + modulepar boolean pc_SMS_SGs := false; // @desc The UE supports SMS over SGs and is configured for SMS over SGs. If true, at least one of pc_SMS_SGs_MT and pc_SMS_SGs_MO is true. If it is set to true, pc_combined_attach shall be set to true + // + // Reference: 36.523-2, A.4.2.1.1-1/2 + + modulepar boolean pc_SMS_SGs_MO := false; // @desc Support of Short Message Service (SMS) MO over SGs + // Reference: 36.523-2 A.4.4-1/4 + + modulepar boolean pc_SMS_SGs_MT := false; // @desc Support of Short Message Service (SMS) MT over SGs + // Reference: 36.523-2 A.4.4-1/3 + + modulepar boolean pc_SMS_SGs_Multi_MO := false; // @desc Support of sending concatenated multiple short message over SGs + // Reference: 36.523-2 A.4.4.1-72 + + modulepar boolean pc_SRVCC_GERAN_UTRAN := false; // @desc Support for SRVCC from E-UTRAN to GERAN/UTRAN + // Reference: 36.523-2 A.4.4-1/32 + + modulepar boolean pc_Semi_Persistence_Scheduling := false; // @desc Support of semi persistance scheduling + // Reference: 36.523-2 A.4.4-1/50 + + modulepar boolean pc_ShortNameNetwork := false; // @desc Support of storage of the network short name + // Reference: 36.523-2 A.4.4-1/13 + + modulepar boolean pc_Speech := false; // @desc UE supports Speech + // Reference: 34.123-2 A.2/1 + + modulepar boolean pc_Squal_based_CellReselection_between_E_UTRAN_and_GERAN := false; + // @desc Support of Squal based cell reselection to E-UTRAN from GERAN + // Reference: 36.523-2 A.4.4-1/79 + + modulepar boolean pc_Squal_based_CellReselection_to_E_UTRAN_from_UTRAN := false; + // @desc Support of Squal based cell reselection to E-UTRAN from UTRAN + // Reference: 36.523-2 A.4.4-1/57 + + modulepar boolean pc_Squal_based_CellReselection_to_UTRAN_from_E_UTRAN := false; + // @desc Support of Squal based cell reselection to UTRAN from E-UTRAN + // Reference: 36.523-2 A.4.4-1/56 + + modulepar boolean pc_StandaloneGNSS_Location := false; // @desc Support of standalone GNSS receiver to provide detailed location information in RRC measurement report and logged measurements in RRC_IDLE + // Reference: 36.523-2 A.4.4-1/63 + + modulepar boolean pc_SupportOpModeA := false; // @desc UE supports Operation Mode A + // Reference: 34.123-2 A.3/3 + + modulepar boolean pc_SwitchOnOff := false; // @desc switch on/off supported + // Reference: 36.523-2, A4.4-1/10 + + modulepar boolean pc_TAU_connected_in_IMS := false; // @desc Support of TAU in connected mode. Applicable when configured to pc_voice_PS_1_CS_2 and pc_Attach + // Reference: 36.523-2 A.4.4.1-73 + + modulepar boolean pc_TAU_idle_in_IMS := false; // @desc Support of TAU in idle mode. Applicable when configured to pc_voice_PS_1_CS_2 and pc_Attach + // Reference: 36.523-2 A.4.4.1-74 + + modulepar boolean pc_TDD_HCR := false; // @desc UE supports UTRA band as defined in TS 25.102 + // Reference: 34.123-2 A.1/2 + + modulepar boolean pc_TDD_LCR := false; // @desc UE supports UTRA band as defined in TS 25.102 + // Reference: 34.123-2 A.1/3 + + modulepar boolean pc_TDD_VHCR := false; // @desc UE supports UTRA band as defined in TS 25.102 + // Reference: 34.123-2 A.1/8 + + modulepar boolean pc_TTI_Bundling := false; // @desc Support of TTI Bundling + // Reference: 36.523-2 A.4.4-1/51 + + modulepar boolean pc_TestModeforCSGproximity := false; // @desc Support of UE radio bearer test mode for CSG proximity testing + // Reference: 36.523-2 A.4.4-1/XX + + modulepar boolean pc_UE_supports_user_initiated_PDN_disconnect := false; + // @desc UE supports user initiated PDN disconnect + // Reference: 36.523-2 A.4.4-2/pp + + modulepar boolean pc_UL_CA := false; // @desc Support of UL CA + // Reference: 36.523-2, ??? + + modulepar boolean pc_UL_IntraBand_ContCaBWclassB := false; // @desc UL Intra-band contiguous CA BW class B + // Reference: 36.523-2 A.4.3.3.1-2/1 + + modulepar boolean pc_UL_IntraBand_ContCaBWclassC := false; // @desc UL Intra-band contiguous CA BW class C + // Reference: 36.523-2 A.4.3.3.1-2/2 + + modulepar boolean pc_UL_MIMO := false; // @desc Support of UL MIMO + // Reference: 36.523-2 A.4.4-170 + + modulepar boolean pc_UL_interBand_CaBwClassComb_AA + := false; // @desc UL Inter-band contiguous CA BW class A-A + // Reference: 36.523-2 A.4.3.3.3-2/1 + + modulepar boolean pc_UL_intraBand_nonContCaBwClassComb_AA := false; + // @desc Support of UL intra-band non-contiguous CA BW Class Combination A-A + // Reference: 36.523-2 A.4.3.3.2-2/1 + + modulepar boolean pc_UMI_ProcNeeded_DuringCSFB := false; // @desc Requiring UMI proceeding to paging response + // Reference: 36.523-2 A.4.4-2/6 + + modulepar boolean pc_USIM_Removal := false; // @desc USIM removable without power down supported + // Reference: 36.523-2, A4.4-1/1 + + modulepar boolean pc_UTRA := false; // @desc UE supports UTRA + // Reference: 36.523-2 A.4.1-1/6 + + modulepar boolean pc_UTRAN_ANR := false; // @desc Support of UTRAN ANR + // Reference: 36.523-2 A.4.4-1/65 + + modulepar boolean pc_UTRAN_ProximityIndication := false; // @desc Support of UTRAN Proximity Indication + // Reference: 36.523-2 A.4.4.1-c + + modulepar boolean pc_UTRA_FeatrGrp_1 := false; // @desc Support of UTRA CELL_PCH and URA_PCH to RRC_IDLE cell reselection + // Reference: 36.523-2 A.4.5-2/1 + + modulepar boolean pc_UTRA_FeatrGrp_2 := false; // @desc Support of EUTRAN measurements and reporting in connected mode + // Reference: 36.523-2 A.4.5-2/2 + + modulepar boolean pc_UeAssistedAgps := false; // @desc Support of UE assisted Network Assisted GPS L1 C/A + // Reference: 37.571-3 Table A.4.3-1/11 + + modulepar boolean pc_UeBasedAgps := false; // @desc Support of UE based Network Assisted GPS L1 C/A + // Reference: 37.571-3 Table A.4.3-1/10 + + modulepar boolean pc_UniversalAndLocalTimeZone := false; // @desc Support of storage of the universal time and local time zone + // Reference: 36.523-2 A.4.4-1/15 + + modulepar boolean pc_UpdateUE_LocationInformation := false; // @desc Update UE Location Information + // Reference: 36.523-2 A.4.3-2/3 + + modulepar boolean pc_UserInitiatedPLMN_Reselection := false; // @desc Support user initiated PLMN reselection in automatic mode + // Reference: 36.523-2 A.4.4-1/69 + + modulepar boolean pc_VoLTE := false; // @desc Support of VoLTE in GSMA PRD IR.92: "IMS profile for Voice and SMS" + // Reference: 36.523-2 A.4.4-1/33 + + modulepar boolean pc_eFDD := false; // @desc UE supports EUTRA FDD + // Reference: 36.523-2 A.4.1-1/1 + + modulepar boolean pc_eFDD_MultiBand := false; // @desc Support of multiple E-UTRA FDD bands + // Reference: 36.523-2 A.4.1-2/1 + + modulepar boolean pc_eMBMS := false; // @desc Support of eMBMS + // Reference: 36.523-2 A.4.2.1.1.-1/5 + + modulepar boolean pc_eMBMS_SC := false; // @desc Support of eMBMS service continuity + // Reference: 36.523-2 A.4.2.1.1.-1/7 + + modulepar boolean pc_eRedirectionUTRA := false; // @desc Support of use of the UTRA system information provided by RRCConnectionRelease upon redirection + // Reference: 36.523-2 A.4.4-1/31 + + modulepar boolean pc_eTDD := false; // @desc UE supports EUTRA TDD + // Reference: 36.523-2 A.4.1-1/2 + + modulepar boolean pc_eTDD_MultiBand := false; // @desc Support of multiple E-UTRA TDD bands + // Reference: 36.523-2 A.4.1-2/2 + + modulepar boolean pc_multipleTimingAdvance := false; // @desc Support of multiple timing advances + // Reference: 36.523-2 A.4.4-1/88 + + modulepar boolean pc_ue_Category_1 := false; // @desc UE Category 1 + // Reference: 36.523-2 A.4.3.2-1/1 + + modulepar boolean pc_ue_Category_10 := false; // @desc UE Category 10 + // Reference: 36.523-2 A.4.3.2-1/10 + + modulepar boolean pc_ue_Category_2 := false; // @desc UE Category 2 + // Reference: 36.523-2 A.4.3.2-1/2 + + modulepar boolean pc_ue_Category_3 := false; // @desc UE Category 3 + // Reference: 36.523-2 A.4.3.2-1/3 + + modulepar boolean pc_ue_Category_4 := false; // @desc UE Category 4 + // Reference: 36.523-2 A.4.3.2-1/4 + + modulepar boolean pc_ue_Category_5 := false; // @desc UE Category 5 + // Reference: 36.523-2 A.4.3.2-1/5 + + modulepar boolean pc_ue_Category_6 := false; // @desc UE Category 6 + // Reference: 36.523-2 A.4.3.2-1/6 + + modulepar boolean pc_ue_Category_7 := false; // @desc UE Category 7 + // Reference: 36.523-2 A.4.3.2-1/7 + + modulepar boolean pc_ue_Category_8 := false; // @desc UE Category 8 + // Reference: 36.523-2 A.4.3.2-1/8 + + modulepar boolean pc_ue_Category_9 := false; // @desc UE Category 9 + // Reference: 36.523-2 A.4.3.2-1/9 + + modulepar boolean pc_voice_PS_1_CS_2 := false; // @desc Configured voice domain preference + // Reference: 36.523-2 A.4.4.2-n + + +} diff --git a/LTE_A_IWD_14wk37/PicsPixit/UTRAN_Parameters.ttcn b/LTE_A_IWD_14wk37/PicsPixit/UTRAN_Parameters.ttcn new file mode 100644 index 0000000..5dfbefc --- /dev/null +++ b/LTE_A_IWD_14wk37/PicsPixit/UTRAN_Parameters.ttcn @@ -0,0 +1,208 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +/******************************************************************************/ + +/******************************************************************************/ +// AUTOMATICALLY GENERATED MODULE - DO NOT MODIFY +// $Date: +// $Author: +// $Rev: +/******************************************************************************/ + +module UTRAN_Parameters { + + import from CommonDefs all; + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_ASP_Definitions language "ASN.1:2002" all; + import from UTRAN_CommonDefs all; + + //**************************************************************************** + // PIXIT Parameters + //---------------------------------------------------------------------------- + modulepar B1_Type px_BcapDataCompression := '0'B; // @desc Data compression supported (used in the Bearer Capability).Default value: Default IMSI + // Reference to other Spec: 34.123-3, Table B.2 + + modulepar B5_Type px_BcapFNUR := '00001'B; // @desc Fixed Network User rate supported: '00001'B: FNUR 9.6 kbit/s '00010'B: FNUR 14.4 kbit/s '00011'B: FNUR 19.2 kbit/s '00100'B: FNUR 28.8 kbit/s '00101'B: FNUR 38.4 kbit/s '00110'B: FNUR 48.0 kbit/s '00111'B: FNUR 56.0 kbit/s '01000'B: FNUR 64.0 kbit/s '01001'B: FNUR 33.6 kbit/s '01010'B: FNUR 32.0 kbit/s. + // Reference to other Spec: 34.123-3, Table B.2 + + modulepar B32_Type px_FRESH; // @desc no default value can be proposed + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar GPRS_CipheringAlgorithm_Type px_GPRS_CipheringAlgorithm := gea2; // @desc NAS Ciphering Algorithm, Default value: (GEA/2) + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar integer px_MFBI_UTRAN_FrequencyBand; // @desc A supported UTRAN MFBI frequency band. + // Reference to other Spec: 34.123-3, Table B.1.20 + + modulepar B1_Type px_MS_ClsmkESIND := '0'B; // @desc Default Early Sending Indication + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar B2_Type px_MS_ClsmkRevLvl := '10'B; // @desc Default Revision Level + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar RRC_ServTested px_RRC_PS_ServTested := ps_Interactive; // @desc PS Service to be tested + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar SRNC_Identity px_SRNC_Id := '000000000001'B; // @desc SRNC Id + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar S_RNTI px_SRNTI := '00000000000000000001'B; + // @desc S RNTI + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar charstring px_TDD_OperationBand; // @desc LCR TDD Operation Band + + modulepar integer px_UARFCN_D_High := 10837; // @desc High Range downlink UARFCN value + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar integer px_UARFCN_D_Low := 10563; // @desc Low Range downlink UARFCN value + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar integer px_UARFCN_D_Mid := 10700; // @desc Mid Range downlink UARFCN value + // Reference to other Spec: 34.123-3, Table B.1 + + modulepar integer px_UARFCN_High_TDD := 9596; // @desc High Range downlink UARFCN value for LCR TDD + + modulepar integer px_UARFCN_Low_TDD := 9504; // @desc Low Range downlink UARFCN value for LCR TDD + + modulepar integer px_UARFCN_Mid_TDD := 9550; // @desc Mid Range downlink UARFCN value for LCR TDD + + modulepar CipheringAlgorithm_r7 px_UTRAN_CipheringAlgorithm := uea2; // @desc UTRAN Ciphering algorithm + // Supported values: uea0, uea1, uea2 + // Reference to other Spec: 34.123-3, Table B.1.20 + + modulepar integer px_UTRAN_OverlappingNotSupportedFrequencyBandMFBI; + // @desc A not supported UTRAN frequency band that is overlapping with a supported MFBI band (px_MFBI_UTRAN_FrequencyBand). This pixit shall be set also in accordance with the values of the 3 Pixits: px_UARFCN_D_High, px_UARFCN_D_Mid,px_UARFCN_L_Mid. + // Reference to other Spec: 34.123-3, Table B.1.20 + + + //**************************************************************************** + // PICS Parameters + //---------------------------------------------------------------------------- + modulepar boolean pc_AttachWithIMSI := false; // @desc Support of Attach With IMSI + // Reference: 34.123-2 A.10/x4 + + modulepar boolean pc_AutomaticAttachSwitchON := false; // @desc Support of automatic PS attach procedure at switch on. + // Reference: 34.123-2 A.20/38 + + modulepar boolean pc_Background := false; // @desc UE Supports Background QoS class + // Reference: 34.123-2 A.6/4 + + modulepar boolean pc_Band10_Supp := false; // @desc UE supports Frequency Band 10 + // Reference: 34.123-2 A.15/22 + + modulepar boolean pc_Band11_Supp := false; // @desc TRUE if UE supports Frequency Band 11 + // Reference: 34.123-2 Table A.15/23 + + modulepar boolean pc_Band12_Supp := false; // @desc TRUE if UE supports Frequency Band 12 + // Reference: 34.123-2 Table A.15/24 + + modulepar boolean pc_Band13_Supp := false; // @desc TRUE if UE supports Frequency Band 13 + // Reference: 34.123-2 Table A.15/25 + + modulepar boolean pc_Band14_Supp := false; // @desc TRUE if UE supports Frequency Band 14 + // Reference: 34.123-2 Table A.15/26 + + modulepar boolean pc_Band19_Supp := false; // @desc TRUE if UE supports Frequency Band 19 + // Reference: 34.123-2 Table A.15/27 + + modulepar boolean pc_Band1_Supp := false; // @desc UE supports Frequency Band 1 + // Reference: 34.123-2 A.15/2 + + modulepar boolean pc_Band20_Supp := false; // @desc TRUE if UE supports Frequency Band 20 + // Reference: 34.123-2 Table A.15/30 + + modulepar boolean pc_Band21_Supp := false; // @desc TRUE if UE supports Frequency Band 21 + // Reference: 34.123-2 Table A.15/28 + + modulepar boolean pc_Band22_Supp := false; // @desc TRUE if UE supports Frequency Band 22 + // Reference: 34.123-2 Table A.15/29 + + modulepar boolean pc_Band25_Supp := false; // @desc TRUE if UE supports Frequency Band 25 + // Reference: 34.123-2 Table A.15/31 + + modulepar boolean pc_Band26_Supp := false; // @desc TRUE if UE supports Frequency Band 26 + // Reference: 34.123-2 Table A.15/32 + + modulepar boolean pc_Band2_Supp := false; // @desc UE supports Frequency Band 2 + // Reference: 34.123-2 A.15/3 + + modulepar boolean pc_Band3_Supp := false; // @desc UE supports Frequency Band 3 + // Reference: 34.123-2 A.15/14 + + modulepar boolean pc_Band4_Supp := false; // @desc UE supports Frequency Band 4 + // Reference: 34.123-2 A.15/15 + + modulepar boolean pc_Band5_Supp := false; // @desc UE supports Frequency Band 5 + // Reference: 34.123-2 A.15/16 + + modulepar boolean pc_Band6_Supp := false; // @desc UE supports Frequency Band 6 + // Reference: 34.123-2 A.15/17 + + modulepar boolean pc_Band7_Supp := false; // @desc UE supports Frequency Band 7 + // Reference: 34.123-2 A.15/18 + + modulepar boolean pc_Band8_Supp := false; // @desc UE supports Frequency Band 8 + // Reference: 34.123-2 A.15/19 + + modulepar boolean pc_Band9_Supp := false; // @desc UE supports Frequency Band 9 + // Reference: 34.123-2 A.15/20 + + modulepar integer pc_EDCH_UE_Category_FDD; // @desc FDD E-DCH physical layer categories + // Reference: 34.123-2 Table A.18a.2 + + modulepar integer pc_EDCH_UE_Category_TDD; // @desc LCR TDD E-DCH physical layer categories + // Reference: 34.123-2 Table A.18b.2 + + modulepar boolean pc_EmergSpeech := false; // @desc Emergency Call + // Reference: 34.123-2 ??/2 + + modulepar boolean pc_HSDPA_FDD := false; // @desc UE Supports HSDPA - FDD + // Reference: 34.123-2 A.18a/14 + + modulepar boolean pc_HSDPA_TDD := false; // @desc UE Supports HSDPA - TDD + // Reference: 34.123-2 A.18b/10 + + modulepar HSDSCH_physical_layer_category pc_HSDSCH_UE_Category_FDD; // @desc FDD HS-DSCH physical layer categories + // Reference: 34.123-2 Table A.18a.1 + + modulepar HSDSCH_physical_layer_category pc_HSDSCH_UE_Category_TDD; // @desc LCR TDD HS-DSCH physical layer categories + // Reference: 34.123-2 Table A.18b.1 + + modulepar boolean pc_HSUPA_FDD := false; // @desc UE Supports HSUPA - FDD + // Reference: 34.123-2 A.18a/18 + + modulepar boolean pc_HSUPA_TDD := false; // @desc UE Supports HSUPA - TDD + // Reference: 34.123-2 A.18b/14 + + modulepar boolean pc_InterRAT_DL_CompressedModeRequired := false; // @desc UE supports DL DPCH compressed mode + // Reference: 34.123-2 A.18a/9a + + modulepar boolean pc_InterRAT_UL_CompressedModeRequired := false; // @desc UE supports UL DPCH compressed mode + // Reference: 34.123-2 A.18a/8a + + modulepar boolean pc_Interactive := false; // @desc UE Supports Interactive QoS class + // Reference: 34.123-2 A.6/3 + + modulepar boolean pc_LAP := false; // @desc Support of Low Access Priority Indication + // Reference: 34.123-2 A.10/x1 + + modulepar boolean pc_MinimumPeriodicSearchTimer := false; // @desc Support of Minimum Periodic Search Timer + // Reference: 34.123-2 A.10/x2 + + modulepar boolean pc_NMO_I_Behaviour := false; // @desc Support of the extended NMO I system information + // Reference: 34.123-2 A.10/x3 + + modulepar boolean pc_Streaming := false; // @desc UE Supports Streaming QoS class + // Reference: 34.123-2 A.6/2 + + modulepar boolean pc_UTRA_CompressedModeRequired := false; // @desc Support of Compressed Mode + // Reference: 36.523-2 A.4.4-1/28 + + +} diff --git a/LTE_A_IWD_14wk37/UTRAN/Common/UTRAN34_ASN1_ASP_Templates_r10.ttcn b/LTE_A_IWD_14wk37/UTRAN/Common/UTRAN34_ASN1_ASP_Templates_r10.ttcn new file mode 100644 index 0000000..5ea2067 --- /dev/null +++ b/LTE_A_IWD_14wk37/UTRAN/Common/UTRAN34_ASN1_ASP_Templates_r10.ttcn @@ -0,0 +1,72 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-10 21:20:35 +0200 (Wed, 10 Sep 2014) $ +// $Rev: 12193 $ +/******************************************************************************/ +module UTRAN34_ASN1_ASP_Templates_r10 { + + import from CommonDefs all; + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from UTRAN_ASP_Definitions language "ASN.1:2002" all; + + import from UTRAN_ASN1_ASP_Templates all; + import from UTRAN_ASN1_ASP_RAB_Templates all; + import from UTRAN_ASN1_ASP_RAB_Templates_r10 all; + + //----------------------------------------------------------------------------- + // CPHY-RL + //---------------------------------------------------------------------------------------------------- + template (value) U_CPHY_CONFIG_REQ cas_108_DL_DPCH_ModifyInfo_r10(UTRAN_CellId_Type p_CellId, + integer p_PhyChId, + template (value) DPCHInfo_r10OrLaterExtensionType_FDD p_DPCHInfo_r10, + template (value) SS_ActivationTime p_ActivationTime, + boolean p_Follow := true) := + /* @status APPROVED (UTRAN) */ + cas_RL_Modify_DPCHInfo_FDD(p_CellId, p_PhyChId, cs_DPCHInfo_Extension_FDD(p_DPCHInfo_r10), p_ActivationTime, p_Follow); + + //----------------------------------------------------------------------------- + // CPMAC + //---------------------------------------------------------------------------------------------------- + + template (value) U_CMAC_CONFIG_REQ cas_CMAC_MAChs_TFRC_ExplicitConfigReq_16QAM(UTRAN_CellId_Type p_CellId, + template (value) SS_ActivationTime p_ActTime := cs_ActivateNow) := + { /* !!!! to be merged with cas_CMAC_MAChs_TFRC_ExplicitConfigReq_FDD !!!! */ + tfrc_FDD := { + cellId := f_UtranCellId2Int(p_CellId), + tfrcConfigMode := { + explicitlyConfigured := { + modulationScheme := qam16, + channelisationCodeOffset := 1, + noOfChannelisationCodes := 1, // @sic R5s120178 baseline moving sic@ + tbSizeIndexOnHS_SCCH := 19, + minimumInterTTIinterval := 3, + redundancyVersions := {6,2,1,5,3,4,7,0},//According to modulation scheme + hs_PDSCH_TxPower := tsc_DL_hs_PDSCH_TxPower + } + }, + activationTime := p_ActTime, + ss_DTX_Info := omit, + hs_DSCH_TBSizeTable := omit + } + }; + + template (present) U_CMAC_CONFIG_CNF car_CMAC_MACi_Config_CNF(template integer p_NodeB_Id) := + { /* @status APPROVED (UTRAN) */ + configMACi := { + nodeB_Id := p_NodeB_Id + } + }; + + + template (present) U_CMAC_CONFIG_CNF car_CMAC_MACis_Config_CNF(UTRAN_CellId_Type p_CellId) := + { /* @status APPROVED (UTRAN) */ + configMACis := { + cellId := f_UtranCellId2Int(p_CellId) + } + }; +} diff --git a/NamingConventions/NC_modules_groups_dataTypes.ttcn3 b/NamingConventions/NC_modules_groups_dataTypes.ttcn3 new file mode 100644 index 0000000..a3d1d88 --- /dev/null +++ b/NamingConventions/NC_modules_groups_dataTypes.ttcn3 @@ -0,0 +1,45 @@ +module NC_modules_groups_dataTypes { + //data type definitions, good and bad + type record address { + charstring host, + integer portField + } + + type address Addr; + + type set of charstring Method_List; + + type record of charstring CharList; + + type record of charstring charList1; + + type record TypeA { + integer field1, + charstring field2, + boolean feild3 + } + + type record TypeB { + integer field1, + charstring field2, + boolean feild3, + TypeA field4 + } + //groups, good and bad + + group g1 { + } + + group G1 { + } + //ports, filed under dataTypes, good and bad + + type port port_1 message { + inout integer; + } + + type port Port_2 message { + inout integer; + } + +} \ No newline at end of file diff --git a/NamingConventions/NC_parameters_functions_testCases_altsteps.ttcn3 b/NamingConventions/NC_parameters_functions_testCases_altsteps.ttcn3 new file mode 100644 index 0000000..97f5f0c --- /dev/null +++ b/NamingConventions/NC_parameters_functions_testCases_altsteps.ttcn3 @@ -0,0 +1,43 @@ +module NC_parameters_functions_testCases_altsteps { + + //module parameters, good and bad + modulepar boolean PC_UAS := true + with {extension "Description: Does IUT behaves as UA Server ?"} + + modulepar integer MP_1; + + modulepar { + integer MP_2:=3, Mp_3; + } + + modulepar integer mP_4, MP_5; + + //altsteps, good and bad + altstep a_a1() { + } with {extension "Description: Does IUT behaves as UA Server ?"} + + altstep a_1() { + } + + altstep aa_1() { + } + +//functions, good and bad +//also variables, component instances and constants + function f_a0() { + var integer v_a1, b; + var comp_1 ptc1; + const integer c_a1 := 1, c_2 := 1; + } + + function ef_0() { + } + + testcase tc_1() runs on comp_1 { + } + + testcase TC_1() runs on comp_1 { + map(self:P2, system:p1); + } + +} \ No newline at end of file diff --git a/NamingConventions/NC_stf160templates.ttcn3 b/NamingConventions/NC_stf160templates.ttcn3 new file mode 100644 index 0000000..f23896a --- /dev/null +++ b/NamingConventions/NC_stf160templates.ttcn3 @@ -0,0 +1,88 @@ +module NC_stf160templates { + + //good ones + template (value) type1 cs_template1 := { + + } + + template (value) type1 cs_template2 (charstring cs) := { + + } + + template (value) type1 cs_template3 (template (value) charstring cs) := { + + } + + template (omit) type1 cs_template4 (template (value) charstring cs) := { + + } + + template (value) type1 cs_template5 (template (omit) charstring cs) := { + + } + + template type1 cr_template1 := { + + } + + template (present) type1 cr_template2 (charstring cs) := { + + } + + template type1 cr_template3 (template (value) charstring cs) := { + + } + + template (present) type1 cr_template4 (template (value) charstring cs) := { + + } + + template type1 cr_template5 (template (omit) charstring cs) := { + + } + + //bad ones + template type1 cs_badtemplate1 := { + + } + template (present) type1 cs_badtemplate2 (template (omit) charstring cs) := { + + } + + template (value) type1 cr_badtemplate3 (template (value) charstring cs) := { + + } + + //inconclusive or bad? + template (omit) type1 cs_badtemplate4 (template charstring cs) := { + + } + template (omit) type1 cs_badtemplate5 (template (present) charstring cs) := { + + } + + //derived templates + //good + template (present) type1 dcr_template4 (template (value) charstring cs) modifies cr_template4 := { + + } + + template type1 dcr_template5 (template (omit) charstring cs) modifies dcr_template5 := { + + } + //bad + template (present) type1 cr_badtemplate4d (template (value) charstring cs) modifies cr_template4 := { + + } + + template (value) type1 cs_badtemplate3 (template (value) charstring cs) modifies cs_template3:= { + + } + + template (value) type1 dcr_badtemplate5 (template (omit) charstring cs) modifies cr_template5 := { + + } + + + +} \ No newline at end of file diff --git a/NamingConventions/NC_templates_constants_signatures_enumeratedValues.ttcn3 b/NamingConventions/NC_templates_constants_signatures_enumeratedValues.ttcn3 new file mode 100644 index 0000000..ed2d86f --- /dev/null +++ b/NamingConventions/NC_templates_constants_signatures_enumeratedValues.ttcn3 @@ -0,0 +1,100 @@ +module NC_templates_constants_signatures_enumeratedValues { + //template definitions, with and without matching symbols, good and bad + template TypeA m_templateB := { + field1 := ?, + field2 := "a", + field3 := true + } + + template TypeA mw_templateC := { + field1 := 1, + field2 := pattern "a", + field3 := true + } + + template TypeA m_templateA := { + field1 := 1, + field2 := "a", + field3 := true + } + + //derived templates + template (value) TypeA md_templateAd modifies m_templateA := { + field1 := 2 + } + + template TypeA mdw_templateCd modifies m_templateC := { + field2 := pattern "a", + field3 := true + } + + + template TypeB m_templateBA := { + field1 := 1, + field2 := "a", + field3 := true, + //field4 := m_templateA + field4 := { + field1 := 1, + field2 := "a", + field3 := true + } + } + + template integer m_i1 := (1, 2); + + template integer m_i2 := ?; + + template GrantMngtSubHeader m_grantMngtUgsSi0 := { + schSvcUgs := { + si := '0'B , + pm := ? , + reserved14 := c_14ZeroBits + } + } + + + //enumerated values, good and bad, + //also data types, good and bad + type enumerated Enum { + e_a, e_b, e_c + } + + type enumerated enum { + a, b, c + } + + //signatures, goot and bad + //also formal parameters, good and bad + signature s_lookup1(in charstring p_key) return charstring exception (e_NotFound); + + signature sx_lookup1(in charstring key) return charstring exception (e_NotFound); + + //constants and external constants, good and bad + const integer c_a1 := 2; + + const integer c_1 := 2 , c_2 :=3; + + external const integer cx_a0; + external const integer ecx_a0, cx_1; + + function f_00(){ + const type_00 const_00 := 1; + } + + altstep a_00(){ + const type_00 const_00 := 1; + } + + testcase ts_00() runs on component_00 { + const type_00 cl_onst_00 := 1; + } + + const integer cl_a1 := 2; + + control{ + const type_00 cl_onst_00 := 1; + } + + +} \ No newline at end of file diff --git a/NamingConventions/NC_variables_timers_componentInstances_portInstances.ttcn3 b/NamingConventions/NC_variables_timers_componentInstances_portInstances.ttcn3 new file mode 100644 index 0000000..9ad1927 --- /dev/null +++ b/NamingConventions/NC_variables_timers_componentInstances_portInstances.ttcn3 @@ -0,0 +1,36 @@ +module NC_variables_timers_componentInstances_portInstances { + //port instances, good and bad + //also component data-type definition, bad + type component comp_1 { + port port_1 p1, P3 + port port_1 P2 + port port_1 p4 + } + //timer, variable and component instances in a component, good and bad + //also component data-type definition, good + + type component Comp_1 { + timer tc_a1, Tc_a2; + var integer vc_a, c; + var integer b := 2, vc_d := 3; + var integer vc_1e; + var Comp_12 Cc, bB, Aa; + } + //variable, timer and component instances in a function, good and bad + //also formal parameters, good + //also function definition, good + + function f_a3(inout charstring p_c, in template integer p_ti, inout timer p_t, inout port_1 p_p) { + p_t.start; + var integer a, v_c; + var integer b := 2, v_1d := 3; + var integer v_e; + var template TypeA vx_ta; + var Comp_1 Cc, bB, Aa; + timer t_a1, T_a2; + t_1.start; + for (var integer i := 0; i < 10; i := i + 1) { + } + } + +} \ No newline at end of file diff --git a/checkExternalFunctionInvocationPrecededByLogStatement/checkExternalFunctionInvocationPrecededByLogStatement.ttcn3 b/checkExternalFunctionInvocationPrecededByLogStatement/checkExternalFunctionInvocationPrecededByLogStatement.ttcn3 new file mode 100644 index 0000000..79b3e3a --- /dev/null +++ b/checkExternalFunctionInvocationPrecededByLogStatement/checkExternalFunctionInvocationPrecededByLogStatement.ttcn3 @@ -0,0 +1,66 @@ +module checkExternalFunctionInvocationFollowedByLogStatement { + external function fx_example1(); + external function fx_example2(integer p_int) return integer; + external function fx_example2(charstring p_cs) return charstring; + + //inconclusive - in a constant definition + const integer c := fx_example1(1); + + //inconclusive - in a template definition + template someType someTemplate := { + fx_example1(1) + } + + //inconclusive - unresolved + function f_example1() { + fx_example0(); + } + + //bad - at the end of a scope + function f_example1() { + fx_example1(); + } + + //bad - followed + function f_example2() { + fx_example1(); + log("External Function fx_example1 called!") + } + + //bad - at the end of a scope without SemiColon + function f_example3() { + fx_example1() + } + + //bad - at the end of a scope without SemiColon, followed + function f_example4() { + fx_example1() + log("External Function fx_example1 called!") + } + + //multiple + testcase tc1() runs on mtcType system systemType { + //bad + fx_example1(); + log("External Function fx_example1 called!") + f_example1(); + + //good + log("External Function fx_example1 called!") + fx_example1(); + + f_example2() + + //bad + fx_example1() + + //bad + fx_example1(); + log("External Function fx_example1 called!") + } + + control { + execute(tc1()); + } + +} \ No newline at end of file diff --git a/checkExternalFunctionInvocationPrecededByLogStatement/checkExternalFunctionInvocationPrecededByLogStatement.ttcn3m b/checkExternalFunctionInvocationPrecededByLogStatement/checkExternalFunctionInvocationPrecededByLogStatement.ttcn3m new file mode 100644 index 0000000..506539a --- /dev/null +++ b/checkExternalFunctionInvocationPrecededByLogStatement/checkExternalFunctionInvocationPrecededByLogStatement.ttcn3m @@ -0,0 +1,316 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + ; + ; + ; + + + + + + + + + + + + + + + + + + + + diff --git a/checkFunctionsModuleContainmentCheck/checkFunctionsModuleContainmentBad.ttcn3 b/checkFunctionsModuleContainmentCheck/checkFunctionsModuleContainmentBad.ttcn3 new file mode 100644 index 0000000..e59e51c --- /dev/null +++ b/checkFunctionsModuleContainmentCheck/checkFunctionsModuleContainmentBad.ttcn3 @@ -0,0 +1,33 @@ +module checkFunctionsModuleContainmentBad { + import from LibCommon_time all; + + // good part, only functions and altsteps + + function f_1 () { + } + + altstep a_1 () { + } + + //bad part + + type record typeA { + integer field1, + boolean feild2 + } + + group GroupedDefs { + function f_2 () { + } + altstep a_2 () { + } + const integer c_1 := 1; + } + + //configurable part + //depending on the configuration external functions + //may (default) or may not be allowed + + external function ef_1 (); + +} \ No newline at end of file diff --git a/checkFunctionsModuleContainmentCheck/checkFunctionsModuleContainmentGood.ttcn3 b/checkFunctionsModuleContainmentCheck/checkFunctionsModuleContainmentGood.ttcn3 new file mode 100644 index 0000000..8aded04 --- /dev/null +++ b/checkFunctionsModuleContainmentCheck/checkFunctionsModuleContainmentGood.ttcn3 @@ -0,0 +1,24 @@ +module checkFunctionsModuleContainmentGood { + import from LibCommon_time all; + + // good module, only functions and altsteps + + function f_1 () { + } + + altstep a_1 () { + } + + group GroupedDefs { + function f_2 () { + } + altstep a_2 () { + } + } + + //depending on the configuration external functions + //may (default) or may not be allowed + + external function ef_1 (); + +} \ No newline at end of file diff --git a/checkImportsComeFirst/checkImportsComeFirstBad.ttcn3 b/checkImportsComeFirst/checkImportsComeFirstBad.ttcn3 new file mode 100644 index 0000000..d803082 --- /dev/null +++ b/checkImportsComeFirst/checkImportsComeFirstBad.ttcn3 @@ -0,0 +1,13 @@ +module checkImportsComeFirst { + import from LibCommon_time all; + + type record MyRecordType { + integer field1 optional, + charstring field2, + boolean field3 + } + //more imports after other definitions + + import from LibCommon_clock all; + +} \ No newline at end of file diff --git a/checkImportsComeFirst/checkImportsComeFirstGood.ttcn3 b/checkImportsComeFirst/checkImportsComeFirstGood.ttcn3 new file mode 100644 index 0000000..5f18f75 --- /dev/null +++ b/checkImportsComeFirst/checkImportsComeFirstGood.ttcn3 @@ -0,0 +1,11 @@ +module checkImportsComeFirst { + import from LibCommon_time all; + import from LibCommon_clock all; + + //imports come first + type record MyRecordType { + integer field1 optional, + charstring field2, + boolean field3 + } +} \ No newline at end of file diff --git a/checkInconcOrFailSetVerdictPrecededByLog/checkInconcOrFailSetVerdictPrecededByLog.ttcn3 b/checkInconcOrFailSetVerdictPrecededByLog/checkInconcOrFailSetVerdictPrecededByLog.ttcn3 new file mode 100644 index 0000000..7962ddc --- /dev/null +++ b/checkInconcOrFailSetVerdictPrecededByLog/checkInconcOrFailSetVerdictPrecededByLog.ttcn3 @@ -0,0 +1,37 @@ +module checkInconcOrFailSetverdictPrecededByLog { + + testcase t_sendMsg() runs on myComponent { + p1.send(msg_a); + + // this is as expected + alt { + [] p2.receive(msg_b) { + someOtherfunction(); + log("*** t_sendMsg: INFO: Wrong message has been received ***") + setverdict(fail); + someOtherfunction(); + } + [] p2.receive(msg_c) { + setverdict(pass); + } + [] p2.receive { + log("*** t_sendMsg: INFO: Unexpected message, possibly malicious ***"); + setverdict(inconc); + } + } + // here, the log statements are missing + alt { + [] p2.receive(msg_b) { + setverdict(fail); + } + [] p2.receive(msg_c) { + setverdict(pass); + } + [] p2.receive { + setverdict(inconc); + } + } + + } + +} \ No newline at end of file diff --git a/checkInconcOrFailSetVerdictPrecededByLog/checkInconcOrFailSetVerdictPrecededByLog.ttcn3m b/checkInconcOrFailSetVerdictPrecededByLog/checkInconcOrFailSetVerdictPrecededByLog.ttcn3m new file mode 100644 index 0000000..e6de52e --- /dev/null +++ b/checkInconcOrFailSetVerdictPrecededByLog/checkInconcOrFailSetVerdictPrecededByLog.ttcn3m @@ -0,0 +1,294 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + ; + ; + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + ; + + + + + + + diff --git a/checkInterfaceModuleContainmentCheck/checkInterfaceModuleContainmentBad.ttcn3 b/checkInterfaceModuleContainmentCheck/checkInterfaceModuleContainmentBad.ttcn3 new file mode 100644 index 0000000..b7a1f16 --- /dev/null +++ b/checkInterfaceModuleContainmentCheck/checkInterfaceModuleContainmentBad.ttcn3 @@ -0,0 +1,29 @@ +module checkInterfaceModuleContainmentBad { + import from LibCommon_time all; + + // bad module + + type component component_1 { + } + + type port port_1 message{ + in integer + } + const integer c_1 := 0; + + group g_1{ + type component component_2 { + } + type port port_2 message{ + out integer + } + + const integer c_2 := 1; + } + + //are control parts permissible? + control { + + } + +} \ No newline at end of file diff --git a/checkInterfaceModuleContainmentCheck/checkInterfaceModuleContainmentGood.ttcn3 b/checkInterfaceModuleContainmentCheck/checkInterfaceModuleContainmentGood.ttcn3 new file mode 100644 index 0000000..07c82c1 --- /dev/null +++ b/checkInterfaceModuleContainmentCheck/checkInterfaceModuleContainmentGood.ttcn3 @@ -0,0 +1,24 @@ +module checkInterfaceModuleContainmentGood { + import from LibCommon_time all; + + // good module, only component, port, and type definitions + + type component component_1 { + } + + type record x {integer x} + + group g_1{ + type component component_2 { + } + type port port_1 message{ + in integer + } + } + + //are control parts permissible? + control { + + } + +} \ No newline at end of file diff --git a/checkLocalDefinitionsComeFirst/checkLocalDefinitionsComeFirst.ttcn3 b/checkLocalDefinitionsComeFirst/checkLocalDefinitionsComeFirst.ttcn3 new file mode 100644 index 0000000..f2a0aa2 --- /dev/null +++ b/checkLocalDefinitionsComeFirst/checkLocalDefinitionsComeFirst.ttcn3 @@ -0,0 +1,108 @@ +module checkLocalDefinitionsComeFirst { + //the good ones + function f_sample0() { + var integer a; + var charstring b; + as_sample0(); + if (b) { + + } + } + + altstep as_sample2() { + var integer a; + var charstring b; + []t.timeout{ + + } + + + } + + testcase tc_sample0() runs on sampleComponent { + var integer a; + var charstring b; + f_sample1(); + if (a){ + + } else { + alt{ + []t.timeout{ + } + []as_sample2() + } + } + + } + + //the bad ones + function f_sample1() { + + var integer a; + timer t1; + var charstring b; + as_sample0(); + if (b) { + var charstring c; + } + } + + altstep as_sample1() { + + timer t1; + const integer x:=1; + var integer a; + var charstring b; + []t.timeout{ + + } + + + } + + + altstep as_sample0() runs on sampleComponent{ + var integer a; + var charstring b; + []t.timeout{ + timer xt; + var charstring c; + } + + + } + + testcase tc_sample1() runs on sampleComponent { + var integer a; + var charstring b; + f_sample0(); + if (a){ + var charstring d; + + } else { + alt{ + []t.timeout{ + timer xx; + var charstring e; + } + []as_sample1() + } + } + + } + + type component sampleComponent { + + var integer x; + const integer cx:=4; + timer tx; + port portType instance; + } + + control { + var integer controlVar; + const integer cx:=4; + for (var integer x:=1; x< 5; x:=x+1){ + } + } +} \ No newline at end of file diff --git a/checkLocalDefinitionsComeFirst/tmp.ttcn3 b/checkLocalDefinitionsComeFirst/tmp.ttcn3 new file mode 100644 index 0000000..20392b2 --- /dev/null +++ b/checkLocalDefinitionsComeFirst/tmp.ttcn3 @@ -0,0 +1,36 @@ +module tmp { + + + altstep as_sample0() runs on sampleComponent{ + var integer a; + var charstring b; + []t.timeout{ + timer xt; +// var charstring c; + const integer bx := 2; + } + } + + function xx () { + timer t; + alt { + []t.timeout { + timer xt; + var charstring c; + + } + } + } + + testcase tx_00 () runs on sampleComponent { + var charstring xxx ; + timer xt + } + + type component sampleComponent { + var integer x; + const integer cx:=4; + timer tx; + } + +} \ No newline at end of file diff --git a/checkLogFormat/checkLogFormat.ttcn3 b/checkLogFormat/checkLogFormat.ttcn3 new file mode 100644 index 0000000..460dbd7 --- /dev/null +++ b/checkLogFormat/checkLogFormat.ttcn3 @@ -0,0 +1,91 @@ +module checkLogFormatModule { + + function f_1 () + runs on myComponent { + + //incorrect + log ( "***" ) + + test(); + //correct + log("*** f_1: INFO: OK - random value = " & bit2str(v_random) & " ***"); + + test(); + //correct - function calls are ignored + log("*** f_1: " & getMyStatus() & "INFO: OK - random value = " & bit2str(v_random) & " ***"); + + test(); + //incorrect - charstring function call parameters are taken into consideration resulting in + //an incorrect log statement format + log("*** f_1: " & getMyStatus("1") & "INFO: ""OK"" - random value = " & bit2str(v_random) & " ***"); + + } + + + const integer c_1 := 1; + + altstep initiatorFailOrInconc() runs on myComponent { + [] ISAP.receive(IDISind:{ + + }) { + log ( "*** f_1: INFO: Altstep error ***" ) + setverdict(inconc); + stop; + } + [] ISAP.receive { + setverdict(fail); + stop; + } + [] T.timeout { + setverdict(fail); + stop; + } + } + + testcase t_sendMsg () + runs on myComponent { + + //this should also be correct + log("*** t_sendMsg: INFO: Unknown component " & p_variable & " ***"); + f_2 (); + + // correct + log ( "*** t_sendMsg: INFO: Wrong message has been received ***" ) + f_1 (); //if this statement were absent + //and subsequent log processing enabled + //the above log sattement will be analyzed + //together with the following split log statements + + // also correct, given subsequent log processing is enabled + log ( "*** t_sendMsg: " ); + log ( "INFO: " ); + log ( "Wrong message has been received ***" ); + f_1 (); + + //correct , given subsequent log processing is enabled + log ( "*** t_sendMsg: " ); + log ( "INFO: " ); + log ( f_2 () ); + log ( "Wrong message has been received ***" ); + f_1 (); + + // some simple malformed log statements + //will be combined as one if subsequent log processing is enabled + log ( "*** : INFORMATION: Wrong message has been received ***" ) + log ( "** t_sendMsg: INFO: Wrong message has been received **" ) + log ( "*** t_sendMsg22: INFO: Wrong message has been received ***" ) + log ( "*** t_sendMsg: INFORMATION: Wrong message has been received ***" ) + + //correct under different configuration / not combined with the above + log ( "*** INFO: Wrong message has been received ***" ); + } + + control { + + //incorrect + log ( ".." ); + + //correct, if not combined with the above + log ( "*** t_sendMsg22: INFO: Wrong message has been received ***" ) + } +} diff --git a/checkLogFormat/checkLogFormat.ttcn3m b/checkLogFormat/checkLogFormat.ttcn3m new file mode 100644 index 0000000..296c637 --- /dev/null +++ b/checkLogFormat/checkLogFormat.ttcn3m @@ -0,0 +1,680 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + ; + ; + ; + ; + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/checkModuleParamsModuleContainmentCheck/checkModuleParamsModuleContainmentBad.ttcn3 b/checkModuleParamsModuleContainmentCheck/checkModuleParamsModuleContainmentBad.ttcn3 new file mode 100644 index 0000000..4a3557a --- /dev/null +++ b/checkModuleParamsModuleContainmentCheck/checkModuleParamsModuleContainmentBad.ttcn3 @@ -0,0 +1,19 @@ +module checkModuleParamsModuleContainmentBad { + import from LibCommon_time all; + + // good part, only module parameters + modulepar integer mp_1; + + modulepar { + integer mp_2; + charstring mp_3; + } + + //bad part + const integer c_1 := 1; + + group GroupedDefs{ + modulepar integer mp_4; + const integer c_2 := 2; + } +} \ No newline at end of file diff --git a/checkModuleParamsModuleContainmentCheck/checkModuleParamsModuleContainmentGood.ttcn3 b/checkModuleParamsModuleContainmentCheck/checkModuleParamsModuleContainmentGood.ttcn3 new file mode 100644 index 0000000..be11707 --- /dev/null +++ b/checkModuleParamsModuleContainmentCheck/checkModuleParamsModuleContainmentGood.ttcn3 @@ -0,0 +1,16 @@ +module checkModuleParamsModuleContainmentGood { + import from LibCommon_time all; + + // good module, only module parameters + modulepar integer mp_1; + + modulepar { + integer mp_2; + charstring mp_3; + } + + group GroupedDefs{ + modulepar integer mp_4; + + } +} \ No newline at end of file diff --git a/checkNoAllKeywordInPortDefinitions/checkNoAllKeywordInPortDefinitions.ttcn3 b/checkNoAllKeywordInPortDefinitions/checkNoAllKeywordInPortDefinitions.ttcn3 new file mode 100644 index 0000000..e3d7d36 --- /dev/null +++ b/checkNoAllKeywordInPortDefinitions/checkNoAllKeywordInPortDefinitions.ttcn3 @@ -0,0 +1,34 @@ +module CheckNoAllKeywordInPortDefinitions { + + group portsAllTest + { + type port samplePortType_m0 message { + in charstring + out integer + } + + + type port samplePortType_m1 message { + inout all + in charstring + out integer + } + + type port samplePortType_p0 procedure { + in s_a + out s_b + } + + + type port samplePortType_p1 procedure { + inout s_a + in all + out all + + } + + signature s_a(); + signature s_b(); + } + +} \ No newline at end of file diff --git a/checkNoAnyTypeKeyword/checkNoAnyTypeKeyword.ttcn3 b/checkNoAnyTypeKeyword/checkNoAnyTypeKeyword.ttcn3 new file mode 100644 index 0000000..6159473 --- /dev/null +++ b/checkNoAnyTypeKeyword/checkNoAnyTypeKeyword.ttcn3 @@ -0,0 +1,9 @@ +module checkNoAnyTypeKeyword { + type integer A; + + const anytype c_1 := { A := 1}; + + function f_example1(in anytype p1){ + + } +} diff --git a/checkNoDuplicatedModuleDefinitionIdentifiers/checkFunctionsModuleContainmentCheck/checkFunctionsModuleContainmentBad.ttcn3 b/checkNoDuplicatedModuleDefinitionIdentifiers/checkFunctionsModuleContainmentCheck/checkFunctionsModuleContainmentBad.ttcn3 new file mode 100644 index 0000000..e59e51c --- /dev/null +++ b/checkNoDuplicatedModuleDefinitionIdentifiers/checkFunctionsModuleContainmentCheck/checkFunctionsModuleContainmentBad.ttcn3 @@ -0,0 +1,33 @@ +module checkFunctionsModuleContainmentBad { + import from LibCommon_time all; + + // good part, only functions and altsteps + + function f_1 () { + } + + altstep a_1 () { + } + + //bad part + + type record typeA { + integer field1, + boolean feild2 + } + + group GroupedDefs { + function f_2 () { + } + altstep a_2 () { + } + const integer c_1 := 1; + } + + //configurable part + //depending on the configuration external functions + //may (default) or may not be allowed + + external function ef_1 (); + +} \ No newline at end of file diff --git a/checkNoDuplicatedModuleDefinitionIdentifiers/checkFunctionsModuleContainmentCheck/checkFunctionsModuleContainmentGood.ttcn3 b/checkNoDuplicatedModuleDefinitionIdentifiers/checkFunctionsModuleContainmentCheck/checkFunctionsModuleContainmentGood.ttcn3 new file mode 100644 index 0000000..8aded04 --- /dev/null +++ b/checkNoDuplicatedModuleDefinitionIdentifiers/checkFunctionsModuleContainmentCheck/checkFunctionsModuleContainmentGood.ttcn3 @@ -0,0 +1,24 @@ +module checkFunctionsModuleContainmentGood { + import from LibCommon_time all; + + // good module, only functions and altsteps + + function f_1 () { + } + + altstep a_1 () { + } + + group GroupedDefs { + function f_2 () { + } + altstep a_2 () { + } + } + + //depending on the configuration external functions + //may (default) or may not be allowed + + external function ef_1 (); + +} \ No newline at end of file diff --git a/checkNoDuplicatedModuleDefinitionIdentifiers/types.ttcn3 b/checkNoDuplicatedModuleDefinitionIdentifiers/types.ttcn3 new file mode 100644 index 0000000..848cf2b --- /dev/null +++ b/checkNoDuplicatedModuleDefinitionIdentifiers/types.ttcn3 @@ -0,0 +1,26 @@ +module Mytypes { + + const integer int1 := 5; + const integer int3 := 5; + const integer int3 := 5; + + + group subtypes { + type set testSet {integer test1, integer test2}; + } + + group subtypes { + type set testSet {integer test1, integer test2}; + } + + group subtypes2 { + type set testSet {integer test1, integer test2}; + } + + function testF() { } + + function testF() { } + + function testF2() { } + +} diff --git a/checkNoInlineTemplates/checkNoInlineTemplates.ttcn3 b/checkNoInlineTemplates/checkNoInlineTemplates.ttcn3 new file mode 100644 index 0000000..029e524 --- /dev/null +++ b/checkNoInlineTemplates/checkNoInlineTemplates.ttcn3 @@ -0,0 +1,14 @@ +module checkNoInlineTemplates { + testcase tc_00 () + runs on someComponent { + + //... + somePort.send ( someDataType:{ + field1 := 1, + field2 := true + } ); + + //... + } + +} \ No newline at end of file diff --git a/checkNoLabelsOrGotoStatements/checkNoLabelsOrGotoStatements.ttcn3 b/checkNoLabelsOrGotoStatements/checkNoLabelsOrGotoStatements.ttcn3 new file mode 100644 index 0000000..0094016 --- /dev/null +++ b/checkNoLabelsOrGotoStatements/checkNoLabelsOrGotoStatements.ttcn3 @@ -0,0 +1,19 @@ +module checkNoLabelsOrGotoStatements { + testcase tc1() runs on mtcType system systemType { + label TC_START; + + alt{ + [] p1.receive { + label P1_RECEIVE; + p1.send(integer:1); + goto TC_END; + } + [] p2.receive { + p1.send(integer:2); + goto TC_START; + } + } + + label TC_END; + } +} \ No newline at end of file diff --git a/checkNoLiterals/checkNoLiterals.ttcn3 b/checkNoLiterals/checkNoLiterals.ttcn3 new file mode 100644 index 0000000..9d80a6c --- /dev/null +++ b/checkNoLiterals/checkNoLiterals.ttcn3 @@ -0,0 +1,19 @@ +module checkNoLiterals { + modulepar { + integer mpa := 42; + } + + const integer c_0 := 33; + + template integer someRange := (1..10); + + function f_0(){ + var integer a := 1; + var charstring b := "a"; + var typeA varA := x; + var template typeA varTempA := ? + timer t := 4; + const integer c := 2; + var template integer someRange := (1..10); + } +} \ No newline at end of file diff --git a/checkNoModifiedTemplateOfModifiedTemplate/checkNoModifiedTemplateOfModifiedTemplate.ttcn3 b/checkNoModifiedTemplateOfModifiedTemplate/checkNoModifiedTemplateOfModifiedTemplate.ttcn3 new file mode 100644 index 0000000..6510ae6 --- /dev/null +++ b/checkNoModifiedTemplateOfModifiedTemplate/checkNoModifiedTemplateOfModifiedTemplate.ttcn3 @@ -0,0 +1,58 @@ +module checkNoModifiedTemplateOfModifiedTemplate { + type record MyRecordType { + integer field1 optional, + charstring field2, + boolean field3 + } + + template MyRecordType MyTemplate1 := { + field1 := 123, + field2 := "A string", + field3 := true + } + + template MyRecordType MyTemplate2 modifies MyTemplate1 := { + field1 := omit, + field2 := "A modified string" + } + + // MyTemplate2 is already a modified template + template MyRecordType MyTemplate3 modifies MyTemplate2 := { + field1 := 22 + } + + // this one is even modified two times + template MyRecordType MyTemplate4 modifies MyTemplate3 := { + field3 := false + } + + // NESTED TEMPLATES + type record MyRecordType2 { + integer field1 optional, + charstring field2, + boolean field3, + MyRecordType nestedTemplate + } + + template MyRecordType2 MyNestedTemplate1 := { + field1 := 123, + field2 := "A string", + field3 := true, + nestedTemplate :={field1:= 1, field2:="a", field3:=true} + } + + + + template MyRecordType2 MyNestedTemplate2 modifies MyNestedTemplate1 := { + field2 := "B string", + nestedTemplate :={field1:= 2, field2:="b", field3:=true} + } + + template MyRecordType2 MyNestedTemplate3 modifies MyNestedTemplate2 := { + field2 := "C string", + nestedTemplate :={field1:= 3, field2:="c", field3:=true} + } + + + +} \ No newline at end of file diff --git a/checkNoModifiedTemplateOfModifiedTemplate/checkNoModifiedTemplateOfModifiedTemplateExternal.ttcn3 b/checkNoModifiedTemplateOfModifiedTemplate/checkNoModifiedTemplateOfModifiedTemplateExternal.ttcn3 new file mode 100644 index 0000000..2f37ace --- /dev/null +++ b/checkNoModifiedTemplateOfModifiedTemplate/checkNoModifiedTemplateOfModifiedTemplateExternal.ttcn3 @@ -0,0 +1,27 @@ +module checkNoModifiedTemplateOfModifiedTemplateExternal { + import from checkNoModifiedTemplateOfModifiedTemplate all; + + template MyRecordType MyTemplate5 modifies MyTemplate1 := { + field1 := omit, + field2 := "A modified string" + } + + // MyTemplate2 is already a modified template + template MyRecordType MyTemplate6 modifies MyTemplate2 := { + field1 := 22 + } + + // this one is even modified two times + template MyRecordType MyTemplate7 modifies MyTemplate6 := { + field3 := false + } + + + //nested + template MyRecordType2 MyNestedTemplate4 modifies MyNestedTemplate2 := { + field2 := "D string", + nestedTemplate :={field1:= 4, field2:="d", field3:=true} + } + + +} \ No newline at end of file diff --git a/checkNoNestedAltStatements/checkNoNestedAltStatements.ttcn3 b/checkNoNestedAltStatements/checkNoNestedAltStatements.ttcn3 new file mode 100644 index 0000000..f178e08 --- /dev/null +++ b/checkNoNestedAltStatements/checkNoNestedAltStatements.ttcn3 @@ -0,0 +1,97 @@ +module checNoNestedAltStatements { + altstep as_0 () + runs on myComponent { + + //nesting within an altstep + [] p2.receive ( msg_b ) { + } + [] p2.receive ( msg_c ) { + setverdict ( pass ); + + // nested alt, level 1 + alt { + [] p2.receive ( msg_b ) { + } + [] p2.receive ( msg_c ) { + setverdict ( pass ); + } + [] p2.receive { + } + } + } + [] p2.receive { + + // nested alt, level 1 + alt { + [] p2.receive ( msg_b ) { + } + [] p2.receive ( msg_c ) { + setverdict ( pass ); + } + [] p2.receive { + + // nested alt, level 2 + alt { + [] p2.receive ( msg_b ) { + } + [] p2.receive ( msg_c ) { + setverdict ( pass ); + } + [] p2.receive { + } + } + } + } + } + } + + testcase t_sendMsg () + runs on myComponent { + + //nesting within alt statement + p1.send ( msg_a ); + alt { + [] p2.receive ( msg_b ) { + } + [] p2.receive ( msg_c ) { + setverdict ( pass ); + + // nested alt, level 1 + alt { + [] p2.receive ( msg_b ) { + } + [] p2.receive ( msg_c ) { + setverdict ( pass ); + } + [] p2.receive { + } + } + } + [] p2.receive { + + // nested alt, level 1 + alt { + [] p2.receive ( msg_b ) { + } + [] p2.receive ( msg_c ) { + setverdict ( pass ); + } + [] p2.receive { + + // nested alt level 2 + alt { + [] p2.receive ( msg_b ) { + } + [] p2.receive ( msg_c ) { + setverdict ( pass ); + } + [] p2.receive { + } + } + } + } + } + } + } + +} \ No newline at end of file diff --git a/checkNoOverSpecificRunsOn/checkNoOverSpecificRunsOn.ttcn3 b/checkNoOverSpecificRunsOn/checkNoOverSpecificRunsOn.ttcn3 new file mode 100644 index 0000000..5385f27 --- /dev/null +++ b/checkNoOverSpecificRunsOn/checkNoOverSpecificRunsOn.ttcn3 @@ -0,0 +1,105 @@ +module checkNoOverSpecificRunsOn { + + modulepar float someModuleParameterName1 := 0.0; + modulepar float someModuleParameterName2 := 127.0; + modulepar float someModuleParameterName3 := 22.0; + + //global const for validation + const integer someGlobalConst := 21; + + type port somePortType mixed { map param (out float p := someModuleParameterName3 ) }; + + //component in question + type component someComponent { + var integer someVarName := 2; + var integer someOtherVarName := 2, someAnotherVarName := 4; + var charstring someCharStringVar := "xyz"; + var template integer someTemplateVarName := 3; + const integer someConstName := 1; + const integer someIntegerConstName := 42; + const float someConstName2 := someModuleParameterName2, someConstName3 := someModuleParameterName3; + port somePortType somePortInstance; + timer someTimer; + } + + type component someComponent2 extends someComponent{ + port somePortType somePortInstance2; + + } + + //bad + function someOverSpecificFunction () + runs on someComponent { + ay(); //this will make it valid + //wrapperfunction(); //this will make it valid + //wrapperFunction(); //unresolvable due to a typo - proper error message provided + //no references to component definitions here + //someFunction() + } + + //good + function someFunction () + runs on someComponent { + //some references to component definitions here + someTimer.start ( 10.0 ); + } + + //irrelevant + function someGenericFunction () runs on someComponent{ + somePortInstance.send("x"); + //no relation + } + + + + //good + //a tricky example with a referenced function that uses the relevant fields + //wraper function + function wrapperfunction () + runs on someComponent { + + //function that uses the component definitions + someFunction (); + } + + //bad + testcase tcx () + runs on someComponent { + //ay(); //this will make it valid + } + + //good + //tricky wrapper example + altstep ax () + runs on someComponent { + var integer a := someFunction(); + [] ay () + [] ay () + } + + //good + altstep ay () + runs on someComponent { + var integer a := someFunction(); + + [] someTimer.timeout { + wrapperfunction(); + } + } + + //tricky cyclic call sequences + function f1() runs on someComponent{ + f2(); + f3() + } + function f2() runs on someComponent{ + f1() + f4() + } + function f3() runs on someComponent{ + f2() + } + function f4() runs on someComponent{ + + } +} \ No newline at end of file diff --git a/checkNoOverSpecificRunsOn/checkNoOverSpecificRunsOnOverImport.ttcn3 b/checkNoOverSpecificRunsOn/checkNoOverSpecificRunsOnOverImport.ttcn3 new file mode 100644 index 0000000..e65a635 --- /dev/null +++ b/checkNoOverSpecificRunsOn/checkNoOverSpecificRunsOnOverImport.ttcn3 @@ -0,0 +1,49 @@ +module checkNoOverSpecificRunsOnOverImport { + + import from checkNoOverSpecificRunsOn { type someComponent} + + const integer someGlobalConst := 21; + + type component someComponent2 { + var integer someVarName := 2; + var integer someOtherVarName := 2, someAnotherVarName := 4; + var charstring someCharStringVar := "xyz"; + var template integer someTemplateVarName := 3; + const integer someConstName := 1; + const integer someIntegerConstName := 42; + const float someConstName2 := someModuleParameterName2, someConstName3 := someModuleParameterName3; + timer someTimer; + port somePortType somePortInstance; + } + + function someFunction1() runs on someComponent { + //some references to component definitions here + someTimer.start(10.0); +// alt{ +// []somePortInstance.receive(integer:2) +// { +// somePortInstance.send(integer:3); +// } +// } + } + + function someFunction2() runs on someComponent2 { + //some references to component definitions here + someTimer.start(10.0); + } + + + function someOverSpecificFunction() runs on someComponent { + //no references to component definitions here + } + + function someOverSpecificFunction2() runs on someComponent2 { + //no references to component definitions here + } + + + function someGenericFunction2(){ + //no relation + + } +} \ No newline at end of file diff --git a/checkNoOverSpecificRunsOn/simpleCase.ttcn3 b/checkNoOverSpecificRunsOn/simpleCase.ttcn3 new file mode 100644 index 0000000..acf4783 --- /dev/null +++ b/checkNoOverSpecificRunsOn/simpleCase.ttcn3 @@ -0,0 +1,14 @@ +module SimpleCase +{ + + type component someComponent { + var integer someVarName := 2; + } + + function someFunction () + runs on someComponent { + //some references to component definitions here + var integer l := 1 + someVarName; + } + +} \ No newline at end of file diff --git a/checkNoPermutationKeyword/checkNoPermutationKeyword.ttcn3 b/checkNoPermutationKeyword/checkNoPermutationKeyword.ttcn3 new file mode 100644 index 0000000..e6b1c7c --- /dev/null +++ b/checkNoPermutationKeyword/checkNoPermutationKeyword.ttcn3 @@ -0,0 +1,8 @@ +module checkNoPermutationKeywordModule { + type record of integer MySequenceOfType; + + // matches any of the following sequences of 4 integers: 1,2,3,5; 1,3,2,5; 2,1,3,5; + // 2,3,1,5; 3,1,2,5; or 3,2,1,5 + template MySequenceOfType MyTemplate1 := {permutation(1, 2, 3), 5}; + +} \ No newline at end of file diff --git a/checkNoUnusedFormalParameters/checkNoUnusedFormalParameters.ttcn3 b/checkNoUnusedFormalParameters/checkNoUnusedFormalParameters.ttcn3 new file mode 100644 index 0000000..46cc346 --- /dev/null +++ b/checkNoUnusedFormalParameters/checkNoUnusedFormalParameters.ttcn3 @@ -0,0 +1,87 @@ +module checkNoUnusedFormalParameters { + + type port somePortType mixed { map param (out float p := 2.0 ) }; + + function f_0 ( + in integer someParName, //bad + out template float someOtherParName, //bad + out float someYetAnotherParName, //bad + inout timer timerParName, //bad + inout somePortType portParName //bad + ) { + } + + type record t_t { //neutral + integer f1 + } + + template t_t t_templ :={ //neutral + f1 := 0 + } + + template t_t t_templ2 (integer x1) :={ //good + f1 := x1 + } + + template t_t t_templ3 (integer x1) :={ //bad + f1 := 2 + } + + template t_t t_templ4 (integer x1) :={ //bad + f1 := 2 + } + + template t_t t_templ5 (template templateType t1) :={ //good + f1 := t1 + } + + template t_t t_templ6 (integer x1, integer y2) modifies t_templ2 :={ //good + f2 := y2 + } + + template t_t t_templ7 (integer x1, integer y2) modifies t_templ2 :={ //bad + f2 := 2 + } + + template t_t t_templ8 (template templateType t1, template templateType t2) modifies t_templ5 :={ //good + f2 := t2 + + } + + + + function f_1 ( inout timer p_t ) { //good + p_t.start(10) + } + + function f_2 ( inout somePortType p_p ) { //good + p_p.send(integer:0); + p_p.send(t_t:{0}); + } + + function f_3 ( inout omit templateType p_t ) { //good + p_p.send(p_t); + } + + function f_4 ( inout template templateType p_t ) { //good + var integer x := 1; + p_p.send(integer:x); + p_p.send(p_t); + p_p.send(t_templ); + p_p.send(t_t:{0}); + p_p.send(0); + p_p.send("x"); + + } + + function f_5 ( inout template ( value ) templateType p_t ) { //bad + } + + external function fx_1 (charstring y1, integer x2); //neutral + + function f(charstring b, integer a){ //bad 2x +// var integer c := a; + } + + +} \ No newline at end of file diff --git a/checkNoUnusedFormalParameters/tmp.ttcn3 b/checkNoUnusedFormalParameters/tmp.ttcn3 new file mode 100644 index 0000000..3088193 --- /dev/null +++ b/checkNoUnusedFormalParameters/tmp.ttcn3 @@ -0,0 +1,9 @@ +module tmp { + template t_t t_templ2 (integer xxx) :={ + f1 := xxx, + f2 := xxx + } + function f_x(integer yyy){ + f_x(yyy); + } +} \ No newline at end of file diff --git a/checkNoUnusedLocalDefinitions/checkNoUnusedLocalDefinitions.ttcn3 b/checkNoUnusedLocalDefinitions/checkNoUnusedLocalDefinitions.ttcn3 new file mode 100644 index 0000000..8fa3a03 --- /dev/null +++ b/checkNoUnusedLocalDefinitions/checkNoUnusedLocalDefinitions.ttcn3 @@ -0,0 +1,49 @@ +module checkNoUnusedLocalDefinitions { + + type component someComponent{ + timer componentTimer1, componentTimer2; + port portType p1,p2; + } + + function f_0(){ + timer localTimer; + var integer v1; + const integer c1:=1; + var template t1 template1; + var someComponent comp1; + template (present) t1 template2 :={f1:=1}; + } + + altstep as_0(){ + timer localTimer; + var integer v1, v2; + const integer c1:=1; + var template t1 template1; + var someComponent comp1; + [] p.receive(template1) -> value v1 + { + v2 := v1.x; + } + + } + + testcase tc_0() runs on someComponent{ + timer localTimer; + var integer v1; + const integer c1:=1; + var template t1 template1; + var someComponent comp1; + componentTimer1.start; //good + } + control { + timer localTimer; + var integer v1,v2; + const integer c1:=1; + var template t1 template1; + var someComponent comp1; + + } + + + +} \ No newline at end of file diff --git a/checkNoUnusedLocalDefinitions/checkNoUnusedLocalDefinitionsOverImport.ttcn3 b/checkNoUnusedLocalDefinitions/checkNoUnusedLocalDefinitionsOverImport.ttcn3 new file mode 100644 index 0000000..1bef34b --- /dev/null +++ b/checkNoUnusedLocalDefinitions/checkNoUnusedLocalDefinitionsOverImport.ttcn3 @@ -0,0 +1,7 @@ +module checkNoUnusedLocalDefinitionsOverImport { + import from checkNoUnusedLocalDefinitions {type all}; + + function f_1 () runs on someComponent{ + p1.send("a"); + } +} \ No newline at end of file diff --git a/checkPortMessageGrouping/checkPortMessageGrouping.ttcn3 b/checkPortMessageGrouping/checkPortMessageGrouping.ttcn3 new file mode 100644 index 0000000..e62236a --- /dev/null +++ b/checkPortMessageGrouping/checkPortMessageGrouping.ttcn3 @@ -0,0 +1,89 @@ +module checkPortMessageGrouping { + import from checkPortMessageGroupingExternal all; + //correct examples + + group correct { + type port port1 message { + in m1; + out m2, m3; + } + type port port2 message { + inout m1, m3; + } + type port port3 message { + inout m4, m3; + out m1, m2; + in integer, charstring; + out integer; + } + type port port4 procedure { + in sm1, sm2; + out sm3, sm4; + inout sm5, sm6; + } + type port port5 mixed { + in sm1, m1; + out integer; + } + group nested { + group signatures { + signature sm1(); + signature sm2(); + signature sm3(); + signature sm4(); + signature sm5(); + signature sm6(); + } + + } + + type integer m1; + + type record m2 { + + } + + type set m3 { + + } + + type record m4 { + + } + + } + //incorrect examples + + group incorrect { + type port port6 message { + in m1, m2; + out m3; + } + type port port7 message { + inout m5; //TODO: omit external group names: checkPortMessageGroupingExternal.incorrect.m5 -> checkPortMessageGroupingExternal.m5 + out m6; + } + type port port8 procedure { + inout sm1, sm2; + out sm3; + } + } + + type record m6 { + + } + + type port port9 message { + inout m6, m7; + } + + group g1 { + type set m7 { + + } + type record m8 { + + } + } + +} \ No newline at end of file diff --git a/checkPortMessageGrouping/checkPortMessageGroupingExternal.ttcn3 b/checkPortMessageGrouping/checkPortMessageGroupingExternal.ttcn3 new file mode 100644 index 0000000..fa04c56 --- /dev/null +++ b/checkPortMessageGrouping/checkPortMessageGroupingExternal.ttcn3 @@ -0,0 +1,6 @@ +module checkPortMessageGroupingExternal { + group incorrect{ + type integer m5; + } + +} \ No newline at end of file diff --git a/checkTemplatesModuleContainmentCheck/checkTemplatesModuleContainmentBad.ttcn3 b/checkTemplatesModuleContainmentCheck/checkTemplatesModuleContainmentBad.ttcn3 new file mode 100644 index 0000000..6d71617 --- /dev/null +++ b/checkTemplatesModuleContainmentCheck/checkTemplatesModuleContainmentBad.ttcn3 @@ -0,0 +1,25 @@ +module checkTemplatesModuleContainmentBad { + import from LibCommon_time all; + + // good part, only templates + template MyRecordType t_1 := { + field1 := 1, + field2 := "a", + field3 :=true + } + + template integer t_2 := (0,1,2,3,4,5,6,7); + + + group GroupedDefs{ + template integer t_3 :=(0 .. 10); + //bad part + const integer c_1 := 2; + + } + + //bad part + function f_2(){ + } + +} \ No newline at end of file diff --git a/checkTemplatesModuleContainmentCheck/checkTemplatesModuleContainmentGood.ttcn3 b/checkTemplatesModuleContainmentCheck/checkTemplatesModuleContainmentGood.ttcn3 new file mode 100644 index 0000000..ed7d769 --- /dev/null +++ b/checkTemplatesModuleContainmentCheck/checkTemplatesModuleContainmentGood.ttcn3 @@ -0,0 +1,18 @@ +module checkTemplatesModuleContainmentGood { + import from LibCommon_time all; + + // good module, only templates + template MyRecordType t_1 := { + field1 := 1, + field2 := "a", + field3 :=true + } + + template integer t_2 := (0,1,2,3,4,5,6,7); + + + group GroupedDefs{ + template integer t_3 :=(0 .. 10); + + } +} \ No newline at end of file diff --git a/checkTestControlModuleContainmentCheck/checkTestControlModuleContainmentBad.ttcn3 b/checkTestControlModuleContainmentCheck/checkTestControlModuleContainmentBad.ttcn3 new file mode 100644 index 0000000..7a48c8b --- /dev/null +++ b/checkTestControlModuleContainmentCheck/checkTestControlModuleContainmentBad.ttcn3 @@ -0,0 +1,25 @@ +module checkTestControlModuleContainmentBad { + import from LibCommon_time all; + + //bad part + + modulepar integer mp_1; + + modulepar { + integer mp_2; + charstring mp_3; + } + + + const integer c_1 := 1; + + group GroupedDefs{ + modulepar integer mp_4; + const integer c_2 := 2; + } + + control { + + } + +} \ No newline at end of file diff --git a/checkTestControlModuleContainmentCheck/checkTestControlModuleContainmentGood.ttcn3 b/checkTestControlModuleContainmentCheck/checkTestControlModuleContainmentGood.ttcn3 new file mode 100644 index 0000000..32d1c5d --- /dev/null +++ b/checkTestControlModuleContainmentCheck/checkTestControlModuleContainmentGood.ttcn3 @@ -0,0 +1,14 @@ +module checkTestControlModuleContainmentGood { + import from LibCommon_time all; + + // good module, only control part + + group g_1{ + + } + + control { + + } + +} \ No newline at end of file diff --git a/checkTestSystemModuleContainmentCheck/checkTestSystemModuleContainmentBad.ttcn3 b/checkTestSystemModuleContainmentCheck/checkTestSystemModuleContainmentBad.ttcn3 new file mode 100644 index 0000000..2528327 --- /dev/null +++ b/checkTestSystemModuleContainmentCheck/checkTestSystemModuleContainmentBad.ttcn3 @@ -0,0 +1,28 @@ +module checkTestSystemModuleContainmentBad { + import from LibCommon_time all; + + // bad module, port definitions as well + + type component component_1 { + } + + type port port_1 message{ + in integer + } + + group g_1{ + type component component_2 { + } + type port port_2 message{ + out integer + } + + + } + + //are control parts permissible? + control { + + } + +} \ No newline at end of file diff --git a/checkTestSystemModuleContainmentCheck/checkTestSystemModuleContainmentGood.ttcn3 b/checkTestSystemModuleContainmentCheck/checkTestSystemModuleContainmentGood.ttcn3 new file mode 100644 index 0000000..703172a --- /dev/null +++ b/checkTestSystemModuleContainmentCheck/checkTestSystemModuleContainmentGood.ttcn3 @@ -0,0 +1,20 @@ +module checkTestSystemModuleContainmentGood { + import from LibCommon_time all; + + // good module, only component definitions + + type component component_1 { + } + + group g_1{ + type component component_2 { + } + + } + + //are control parts permissible? + control { + + } + +} \ No newline at end of file diff --git a/checkTestcasesModuleContainmentCheck/checkTestcasesModuleContainmentBad.ttcn3 b/checkTestcasesModuleContainmentCheck/checkTestcasesModuleContainmentBad.ttcn3 new file mode 100644 index 0000000..e84b461 --- /dev/null +++ b/checkTestcasesModuleContainmentCheck/checkTestcasesModuleContainmentBad.ttcn3 @@ -0,0 +1,45 @@ +module checkTestcasesModuleContainmentBad { + import from LibCommon_sync all; + + // bad module + function f_1() runs on component_1{ + } + + testcase tc_1() runs on component_1{ + var component_1 ptc0 := component_1.create; + ptc0.start(f_1()); + ptc0.start(f_0()); // defined elsewhere + f_3(); //does not count - not in a start statement + } + //not used in a start statement + function f_3() runs on component_1{ + } + + //not a testcase or a function\ + const integer c_1 := 0; + + + group GroupedDefs{ + //not used in a start statement + function f_4() runs on component_1 return float{ + } + + function f_2() runs on component_1{ + var component_1 ptc1 := component_1.create; + ptc1.start(f_1()); + ptc1.start(f_0(f_4())); // does not count - used as a nested parameter + f_4(); //does not count - not in a start statement + timer t; + t.start(f_4()); //does not count - used in a timer start operation + + } + + testcase tc_2() runs on component_1{ + var component_1 ptc2 := component_1.create; + ptc2.start(f_1()); + ptc2.start(f_0()); // defined elsewhere + + } + + } +} \ No newline at end of file diff --git a/checkTestcasesModuleContainmentCheck/checkTestcasesModuleContainmentGood.ttcn3 b/checkTestcasesModuleContainmentCheck/checkTestcasesModuleContainmentGood.ttcn3 new file mode 100644 index 0000000..360fc92 --- /dev/null +++ b/checkTestcasesModuleContainmentCheck/checkTestcasesModuleContainmentGood.ttcn3 @@ -0,0 +1,30 @@ +module checkTestcasesModuleContainmentGood { + import from LibCommon_sync all; + + // good module, only testcases and functions in start statements + function f_1() runs on component_1{ + } + + testcase tc_1() runs on component_1{ + var component_1 ptc0 := component_1.create; + ptc0.start(f_1()); + ptc0.start(f_0()); // defined elsewhere + + } + + group GroupedDefs{ + function f_2() runs on component_1{ + var component_1 ptc1 := component_1.create; + ptc1.start(f_1()); + ptc1.start(f_0()); // defined elsewhere + } + + testcase tc_2() runs on component_1{ + var component_1 ptc2 := component_1.create; + ptc2.start(f_2()); + ptc2.start(f_0()); // defined elsewhere + + } + + } +} \ No newline at end of file diff --git a/checkTestcasesModuleImportsLibCommon_Sync/checkTestcasesModuleImportsLibCommon_SyncGood.ttcn3 b/checkTestcasesModuleImportsLibCommon_Sync/checkTestcasesModuleImportsLibCommon_SyncGood.ttcn3 new file mode 100644 index 0000000..20945ba --- /dev/null +++ b/checkTestcasesModuleImportsLibCommon_Sync/checkTestcasesModuleImportsLibCommon_SyncGood.ttcn3 @@ -0,0 +1,14 @@ +module checkTestcasesModuleImportsLibCommon_syncGood { + import from LibCommon_Sync all; + + // good module, only types and constants + type record MyRecordType { + integer field1 optional, + charstring field2, + boolean field3 + } + + type integer myInt; + + const myInt myIntValue:= 2; +} \ No newline at end of file diff --git a/checkTestcasesModuleImportsLibCommon_Sync/checkTestcasesModuleImportsLibCommon_syncBad.ttcn3 b/checkTestcasesModuleImportsLibCommon_Sync/checkTestcasesModuleImportsLibCommon_syncBad.ttcn3 new file mode 100644 index 0000000..c2d3985 --- /dev/null +++ b/checkTestcasesModuleImportsLibCommon_Sync/checkTestcasesModuleImportsLibCommon_syncBad.ttcn3 @@ -0,0 +1,16 @@ +module checkTestcasesModuleImportsLibCommon_syncBad { + import from LibWhatever { + type all except LibCommon_sync; + }; + + // good module, only types and constants + type record MyRecordType { + integer field1 optional, + charstring field2, + boolean field3 + } + + type integer myInt; + + const myInt myIntValue:= 2; +} \ No newline at end of file diff --git a/checkTypeDefOrderInGroup/checkTypeDefOrderInGroup.ttcn3 b/checkTypeDefOrderInGroup/checkTypeDefOrderInGroup.ttcn3 new file mode 100644 index 0000000..f126969 --- /dev/null +++ b/checkTypeDefOrderInGroup/checkTypeDefOrderInGroup.ttcn3 @@ -0,0 +1,136 @@ +module checkTypeDefOrderInGroup { + type record typeX { + + } + + group emptyGroup { + + } + + type integer modInt; + + //the good ones + group typeDefs { + + type integer groupedInt; + + type component P_compA { + var integer a := 3; + } + + type component P_comp1 { + + } + + + type record typeA { + + } + type record typea { + + } +// type record typeab { + +// } + + + type record typeB { + + } + type record typeC { + + } + } + + type record typeY { + + } + + group otherDefs { + altstep as_a(){ + + } + + function f_a(){ + + } + + } + + group mixedDefs { + + type component compA { + + } + + type component compB { + + } + + + type record typeD { + + } + + const integer z := 5; + + type record typeE { + + } + + const integer x := 2; + + type record typeF { + + } + + const integer y := 3; + } + + //the bad ones + + group mixedDefsBad { + //E comes before D + type record typeE { + + } + + type record typeD { + + } + + const integer z := 5; + + + const integer x := 2; + + type record typeF { + + } + + //comp? come after type? + //+ compB before compA + type component compB { + + } + + type component compA { + + } + + + + + const integer y := 3; + } + + +group g1{ + type integer m1; + type record m2 {} + type set m3 {} + type record m4 {} + type m1 m5; +} + +} \ No newline at end of file diff --git a/checkTypesAndValuesModuleContainmentCheck/checkTypesAndValuesModuleContainmentCheckBad.ttcn3 b/checkTypesAndValuesModuleContainmentCheck/checkTypesAndValuesModuleContainmentCheckBad.ttcn3 new file mode 100644 index 0000000..4c65a9d --- /dev/null +++ b/checkTypesAndValuesModuleContainmentCheck/checkTypesAndValuesModuleContainmentCheckBad.ttcn3 @@ -0,0 +1,32 @@ +module checkTypesAndValuesModuleContainmentCheckBad { + import from LibCommon_time all; + + // good part + type record MyRecordType { + integer field1 optional, + charstring field2, + boolean field3 + } + + type integer myInt; + + const myInt myIntValue := 2; + // bad part + + template MyRecordType MyTemplate1 := { + field1 := 123, + field2 := "A string", + field3 := true + } + + testcase t_sendMsg() runs on myComponent { + } + + function myfunc() { + } + group g_1{ + + function f_1(){ + } + } +} \ No newline at end of file diff --git a/checkTypesAndValuesModuleContainmentCheck/checkTypesAndValuesModuleContainmentCheckGood.ttcn3 b/checkTypesAndValuesModuleContainmentCheck/checkTypesAndValuesModuleContainmentCheckGood.ttcn3 new file mode 100644 index 0000000..b3abb00 --- /dev/null +++ b/checkTypesAndValuesModuleContainmentCheck/checkTypesAndValuesModuleContainmentCheckGood.ttcn3 @@ -0,0 +1,20 @@ +module checkTypesAndValuesModuleContainmentCheckGood { + import from LibCommon_time all; + + // good module, only types and constants + type record MyRecordType { + integer field1 optional, + charstring field2, + boolean field3 + } + + type integer myInt; + + const myInt myIntValue:= 2; + + group GroupedDefs{ + type integer myGroupedInt; + const myGroupedInt myGroupedIntValue:= 2; + + } +} diff --git a/checkTypesAndValuesModuleImportsLibCommon/checkTypesAndValuesModuleImportsLibCommonGood.ttcn3 b/checkTypesAndValuesModuleImportsLibCommon/checkTypesAndValuesModuleImportsLibCommonGood.ttcn3 new file mode 100644 index 0000000..bc4c65f --- /dev/null +++ b/checkTypesAndValuesModuleImportsLibCommon/checkTypesAndValuesModuleImportsLibCommonGood.ttcn3 @@ -0,0 +1,14 @@ +module checkTypesAndValuesModuleImportsLibcommonGood { + import from LibCommon_time all; + + // good module, only types and constants + type record MyRecordType { + integer field1 optional, + charstring field2, + boolean field3 + } + + type integer myInt; + + const myInt myIntValue:= 2; +} \ No newline at end of file diff --git a/checkTypesAndValuesModuleImportsLibCommon/checkTypesAndValuesModuleImportsLibcommonBad.ttcn3 b/checkTypesAndValuesModuleImportsLibCommon/checkTypesAndValuesModuleImportsLibcommonBad.ttcn3 new file mode 100644 index 0000000..ae93e7a --- /dev/null +++ b/checkTypesAndValuesModuleImportsLibCommon/checkTypesAndValuesModuleImportsLibcommonBad.ttcn3 @@ -0,0 +1,19 @@ +module checkTypesAndValuesModuleImportsLibcommonBad { + import from LibWhatever { + type all except LibCommon; + }; + + + type record MyRecordType { + integer field1 optional, + charstring field2, + boolean field3 + } + + type integer myInt; + + const myInt myIntValue:= 2; +} + +module a { +} \ No newline at end of file diff --git a/checkZeroReferencedModuleDefinitions/checkZeroReferencedModuleDefinitions.ttcn3 b/checkZeroReferencedModuleDefinitions/checkZeroReferencedModuleDefinitions.ttcn3 new file mode 100644 index 0000000..d7ee66d --- /dev/null +++ b/checkZeroReferencedModuleDefinitions/checkZeroReferencedModuleDefinitions.ttcn3 @@ -0,0 +1,45 @@ +module checkZeroReferencedModuleDefinitions { + + //referenced + type integer subtype_1 ( 1 .. 10 ); + + //not referenced + + type subtype_1 subtype_2 ( 4 .. 8 ); + + //referenced + + type port p_1 message { + inout subtype_1 + } + + //referenced + + type port p_2 message { + out subtype_1 + } + + //not referenced => referenced within import + + type component comp_1 { + var subtype_1 localDef_2; + port p_1 p1; + + //... + } + + group g1 { + group sg1{ + } + group sg1{} + const integer x := 1; + const integer x := 2; + } + + group g2 { + group sg1{ + + } + } + +} \ No newline at end of file diff --git a/checkZeroReferencedModuleDefinitions/checkZeroReferencedModuleDefinitionsWithImports.ttcn3 b/checkZeroReferencedModuleDefinitions/checkZeroReferencedModuleDefinitionsWithImports.ttcn3 new file mode 100644 index 0000000..8db42d5 --- /dev/null +++ b/checkZeroReferencedModuleDefinitions/checkZeroReferencedModuleDefinitionsWithImports.ttcn3 @@ -0,0 +1,19 @@ +module checkZeroReferencedModuleDefinitionsWithImports { + import from checkZeroReferencedModuleDefinitions {type comp_1, subtype_2}; + + //not referenced + + type component comp_2 extends comp_1 { + var subtype_1 localDef_2; + port p_2 p2; + + //... + } + + group g2 { + group sg1{ + + } + } + +} \ No newline at end of file diff --git a/checkZeroReferencedModuleDefinitions/simpleTest.ttcn3 b/checkZeroReferencedModuleDefinitions/simpleTest.ttcn3 new file mode 100644 index 0000000..8bcbe35 --- /dev/null +++ b/checkZeroReferencedModuleDefinitions/simpleTest.ttcn3 @@ -0,0 +1,10 @@ +module MyTest +{ + public const integer int3 := 5; + public const integer int5 := 5; + + function f1() + { + var integer intf1 := int3; + } +} \ No newline at end of file diff --git a/multipleFileExtensions/checkInterfaceModuleContainmentBad.3mp b/multipleFileExtensions/checkInterfaceModuleContainmentBad.3mp new file mode 100644 index 0000000..b7a1f16 --- /dev/null +++ b/multipleFileExtensions/checkInterfaceModuleContainmentBad.3mp @@ -0,0 +1,29 @@ +module checkInterfaceModuleContainmentBad { + import from LibCommon_time all; + + // bad module + + type component component_1 { + } + + type port port_1 message{ + in integer + } + const integer c_1 := 0; + + group g_1{ + type component component_2 { + } + type port port_2 message{ + out integer + } + + const integer c_2 := 1; + } + + //are control parts permissible? + control { + + } + +} \ No newline at end of file diff --git a/multipleFileExtensions/checkInterfaceModuleContainmentGood.ttcn b/multipleFileExtensions/checkInterfaceModuleContainmentGood.ttcn new file mode 100644 index 0000000..07c82c1 --- /dev/null +++ b/multipleFileExtensions/checkInterfaceModuleContainmentGood.ttcn @@ -0,0 +1,24 @@ +module checkInterfaceModuleContainmentGood { + import from LibCommon_time all; + + // good module, only component, port, and type definitions + + type component component_1 { + } + + type record x {integer x} + + group g_1{ + type component component_2 { + } + type port port_1 message{ + in integer + } + } + + //are control parts permissible? + control { + + } + +} \ No newline at end of file diff --git a/templates/EUTRA_CommonDefs.ttcn b/templates/EUTRA_CommonDefs.ttcn new file mode 100644 index 0000000..3bfb3f8 --- /dev/null +++ b/templates/EUTRA_CommonDefs.ttcn @@ -0,0 +1,455 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-08-27 12:20:17 +0200 (Wed, 27 Aug 2014) $ +// $Rev: 11929 $ +/******************************************************************************/ + +module EUTRA_CommonDefs { + import from CommonDefs all; + import from EUTRA_RRC_ASN1_Definitions language "ASN.1:2002" all; + + group Common_Types { + + type enumerated EUTRA_RRC_STATE_Type {RRC_IDLE, RRC_CONNECTED}; + type enumerated IDLEUPDATED_Type {PREAMBLE, NORMAL}; + type enumerated IDLEUPDATED_STATE_Type {STATE2_IDLEUPDATE, STATE2A_TESTLOOP_ModeA, STATE2A_TESTLOOP_ModeB, STATE2A_TESTLOOP_ModeC};//@sic eMBMS sic@ + type enumerated EUTRA_POSTAMBLE_STATE_Type {E1_IDLE, E2_CONNECTED, E2_T3440, E3_TESTMODE, E4_DEREGISTERED}; + type enumerated EUTRA_FDD_TDD_Mode_Type {FDD, TDD}; + type enumerated EUTRA_NAS_NumOfPLMN_Type {LTE_AllCellsOnSamePLMN, LTE_CellsOnDifferentPLMN}; + type enumerated EUTRA_DiscardUlDataUM_Type {DISCARD_UM_DATA}; + type enumerated EUTRA_UseBigGrants_Type {USE_BIG_GRANTS, USE_DEF_GRANTS}; /* @sic R5s140676 Change 2 sic@ */ + + type enumerated EUTRA_NAS_CellSpecialFreq { + LTE_NAS_NormalFreq, + LTE_NAS_Usef1_f2, // LTE NAS test case using f1/f2 instead of f3/f4. See 36.508 Table 6.3.2.2-3 Note 1 + LTE_NAS_Replacef3_f1, // LTE NAS test case: replace f3 by f1 + LTE_NAS_Replacef4_f1, // LTE NAS test case: replace f4 by f1 + LTE_NAS_Replacef3_f2 // LTE NAS test case: replace f3 by f2 + }; + + type enumerated EUTRA_ResourceAllocationScheme_Type { + dci1A, /* All channels: DCI Format 1A and Resource allocation type 2, localized. */ + dci1C_dci1 /* BCCH/PCCH/RAR: DCI format 1C, Resource allocation 2, distributed + * E-Specific: DCI format 1, Resource allocation 0 */ + }; + + type enumerated DrxConfigurationCondition_Type { DRX_L, DRX_S, DRX_S_LongOnDuration }; /* @sic R5-101178, R5-104796, R5s120054 (new value DRX_S_LongOnDuration) sic@ */ + + type record GutiParameters_Type { + PLMN_Identity PLMN_Identity, + MME_GroupId_Type MME_GroupId, + MMEC MME_Code, + M_TMSI_Type M_TMSI + }; + + + type integer HarqProcessId_Type (0..14); /* The values 0..7 represent the ID of HARQ process ID; value range 0..14 is for TDD */ + type record length(0..14) of HarqProcessId_Type HarqProcessList_Type; /* list of HARQ processes: each element shall be unique */ + type integer RedundancyVersion_Type (0..3); /* used in EUTRA_ASP_DrbDefs and EUTRA_ASP_Typedefs */ + type bitstring ContentionResolutionId_Type length(48); /* used in EUTRA_ASP_DrbDefs and EUTRA_ASP_Typedefs */ + + type union RRC_MSG_Request_Type { /* DL RRC PDU on CCCH or DCCH */ + DL_CCCH_Message Ccch, + DL_DCCH_Message Dcch + }; + + type union RRC_MSG_Indication_Type { /* UL RRC PDU on CCCH or DCCH */ + UL_CCCH_Message Ccch, + UL_DCCH_Message Dcch + }; + + type record of SystemInformationBlockType11 SystemInformationBlockType11_List_Type; + + } // End group Common_Types + + //---------------------------------------------------------------------------- + + group Common_Constants { + + const Dl_Bandwidth_Type tsc_Bandwidth_Def := n25; /* n6, n15, n25, n50, n75, n100 */ + const RRC_TransactionIdentifier tsc_RRC_TI_Def := 0; /* considering UMTS there seems to be no reason to use a constant for the RRC-TI */ + const integer tsc_EUTRA_MaxNumberOfCells := 20; /* Maximum number of cells; + * in TS 36.508 in, clause 4.4.2 and 6.3.2.2 there are tables for cells + * being used in non-NAS and NAS test cases; + * in both cases less than 20 cells are listed */ + + const C_RNTI tsc_C_RNTI_Def := int2bit(4097, 16); /* '1001'H acc. to TS 36.523-3 table 7.1.1-1 */ + const C_RNTI tsc_C_RNTI_Def2 := int2bit(4148, 16); /* '1034'H acc. to TS 36.523-3 table 7.1.1-1 */ + const C_RNTI tsc_C_RNTI_Def3 := int2bit(4369, 16); /* '1111'H acc. to TS 36.523-3 table 7.1.1-1 */ + const C_RNTI tsc_C_RNTI_Def4 := int2bit(8177, 16); /* '1FF1'H acc. to TS 36.523-3 table 7.1.1-1 */ + const C_RNTI tsc_C_RNTI_Def5 := int2bit(1234, 16); /* '04D2'H acc. to TS 36.523-3 table 7.1.1-1 */ + const C_RNTI tsc_C_RNTI_Def6 := int2bit(2345, 16); /* '0929'H acc. to TS 36.523-3 table 7.1.1-1 */ + const C_RNTI tsc_C_RNTI_Def7 := int2bit(3456, 16); /* '0D80'H acc. to TS 36.523-3 table 7.1.1-1 */ + const C_RNTI tsc_C_RNTI_Def8 := int2bit(4567, 16); /* '11D7'H acc. to TS 36.523-3 table 7.1.1-1 */ + const C_RNTI tsc_C_RNTI_Def9 := int2bit(5678, 16); /* '162E'H acc. to TS 36.523-3 table 7.1.1-1 */ + const C_RNTI tsc_C_RNTI_Def10 := int2bit(6789, 16); /* '1A85'H acc. to TS 36.523-3 table 7.1.1-1 */ + + const Ra_PreambleIndex_Type tsc_EUTRA_PrachPreambleIndex_Dedicated_Def := 52; /* first index for dedicated random access preambles */ + + const SubFrameNumber_Type tsc_EUTRA_SN4 := 4; + + const integer tsc_EUTRA_DelayBeforeIntraCellHO := 300; /* delay before an intra cell handover */ + const float tsc_EUTRA_DelayForCellSelection := 1.0; /* delay to allow the UE to perform cell selection + e.g. before paging or change of power level */ + const integer tsc_EUTRA_DelayAfterRRCConnectionRelease := 920; /* 80ms + 840ms; 80ms to cope with local release and 640ms to let the UE camp on the cell again + @sic R5-125093 delay increased from 640ms to 840ms sic@ */ + + const P_b_Type tsc_P_b_1Tx := 0; /* acc. to 36.508 Table Table 4.6.3-5; + @status APPROVED (LTE) */ + } // End group Common_Constants + + //---------------------------------------------------------------------------- + + group RRC_Nested_Types { + + type MasterInformationBlock.dl_Bandwidth EUTRA_SysinfoDL_Bandwidth_Type; /* Channel bandwidth acc. to TS 36.101, clause 5.4.2 */ + + type SystemInformationBlockType1.si_WindowLength SiWindowLength_Type; + type SystemInformationBlockType1.cellSelectionInfo.q_RxLevMin Q_Rxlevmin_Type; + type SystemInformationBlockType1.cellSelectionInfo.q_RxLevMinOffset Q_RxLevMinOffset_Type; + type SystemInformationBlockType1.cellAccessRelatedInfo.cellBarred CellBarred_Type; + type SystemInformationBlockType1.cellAccessRelatedInfo.intraFreqReselection IntraFreqRes_Type; + type SystemInformationBlockType1.nonCriticalExtension.nonCriticalExtension.ims_EmergencySupport_r9 Ims_EmergencySupport_r9; + + type SystemInformationBlockType2.freqInfo.ul_Bandwidth EUTRA_SysinfoUL_Bandwidth_Type; + type SystemInformationBlockType2.freqInfo.additionalSpectrumEmission AdditionalSpectrumEmission_Type; + type SystemInformationBlockType2.ac_BarringInfo.ac_BarringForEmergency AccessBarringForEmergencyCalls_Type; + type SystemInformationBlockType2.ac_BarringInfo.ac_BarringForMO_Signalling.ac_BarringFactor AccessProbabilityFactor_Type; + type SystemInformationBlockType2.ac_BarringInfo.ac_BarringForMO_Signalling.ac_BarringTime AccessBarringTime_Type; + type SystemInformationBlockType2.ac_BarringInfo AccessBarringInformation_Type; + + type SystemInformationBlockType3.cellReselectionInfoCommon.q_Hyst Q_Hyst_Type; + type SystemInformationBlockType3.intraFreqCellReselectionInfo.t_ReselectionEUTRA T_ReselectionEutran_Type; + type SystemInformationBlockType3.cellReselectionServingFreqInfo.cellReselectionPriority CellRes_Prio_Type; + type SystemInformationBlockType3.cellReselectionInfoCommon.speedStateReselectionPars SpeedStateReselectionPars_Type; + type SystemInformationBlockType3.s_NonIntraSearch_v920 S_NonIntraSearch_v920_Type; + + type SchedulingInfoList[0].si_Periodicity SiPeriodicity_Type; + type SPS_ConfigDL.setup SpsConfigDL_Type; + type SPS_ConfigUL.setup SpsConfigUL_Type; + type PagingRecordList[0].cn_Domain CN_Domain_Type; + type PCCH_Config.nB Paging_nB_Type; + type UE_TimersAndConstants.t300 T300_Type; + type UE_TimersAndConstants.t301 T301_Type; + type UE_TimersAndConstants.t310 T310_Type; + type UE_TimersAndConstants.t311 T311_Type; + type S_TMSI.m_TMSI M_TMSI_Type; + type RegisteredMME.mmegi MME_GroupId_Type; + type RACH_ConfigCommon.ra_SupervisionInfo.mac_ContentionResolutionTimer MAC_ContentionResolutionTimer_Type; + type RACH_ConfigDedicated.ra_PRACH_MaskIndex Ra_PRACH_MaskIndex_Type; + type SoundingRS_UL_ConfigCommon.setup.srs_BandwidthConfig SrsBandwidthConfiguration_Type; + type PUCCH_ConfigCommon.nRB_CQI N_RB_CQI_Type; + type PUSCH_ConfigCommon.pusch_ConfigBasic.pusch_HoppingOffset PUSCH_HoppingOffset_Type; + type PUSCH_ConfigCommon.pusch_ConfigBasic.n_SB PUSCH_N_SB_Type; + type PUSCH_ConfigCommon.pusch_ConfigBasic.hoppingMode PUSCH_HoppingMode_Type; + type SchedulingRequestConfig.setup.sr_PUCCH_ResourceIndex SR_PUCCH_ResourceIndex_Type; + type SchedulingRequestConfig.setup.dsr_TransMax Dsr_TransMax_Type; + type PDSCH_ConfigCommon.referenceSignalPower ReferenceSignalPower_Type; + type PRACH_ConfigInfo.prach_FreqOffset Prach_FrequencyOffset_Type; + type LogicalChannelConfig.ul_SpecificParameters.prioritisedBitRate PrioritizedBitRate_Type; + type CarrierBandwidthEUTRA.dl_Bandwidth Dl_Bandwidth_Type; + type CarrierBandwidthEUTRA.ul_Bandwidth Ul_Bandwidth_Type; + type PCCH_Config.defaultPagingCycle DefaultPagingCycle_Type; + type RACH_ConfigDedicated.ra_PreambleIndex Ra_PreambleIndex_Type; + type RACH_ConfigCommon.ra_SupervisionInfo.ra_ResponseWindowSize Ra_ResponseWindowSize_Type;//@sic R5-095164 sic@ + type MeasResultEUTRA.cgi_Info GlobalCellIdentity_Type; + type SecurityAlgorithmConfig.cipheringAlgorithm CipheringAlgorithm_Type; + type SecurityAlgorithmConfig.integrityProtAlgorithm IntegrityProtAlgorithm_Type; + type PLMN_IdentityInfo.cellReservedForOperatorUse CellReservedForOpUse_Type; + type Paging.systemInfoModification Paging_SystemInfoModification_Type; + type Paging.etws_Indication Paging_ETWS_Indication; + type PhysCellIdRange.range PhysCellIdRange_Type; + + type RadioResourceConfigDedicated.mac_MainConfig.explicitValue.ul_SCH_Config.maxHARQ_Tx MaxHARQ_Tx_Type; + type RadioResourceConfigDedicated.mac_MainConfig.explicitValue.ul_SCH_Config.periodicBSR_Timer PeriodicBSR_Timer_Type; + type RadioResourceConfigDedicated.mac_MainConfig.explicitValue.ul_SCH_Config.retxBSR_Timer RetxBSR_Timer_Type; + + type RadioResourceConfigDedicated.mac_MainConfig MAC_MainConfig_Type; /* NOTE: + * the type name is confusing since there is a ASN.1 type MAC_MainConfig + * which is used as RadioResourceConfigDedicated.mac_MainConfig.explicitValue; + * but that is as per ASN.1 */ + type MAC_MainConfig.ul_SCH_Config UL_SCH_Config_Type; + type MAC_MainConfig.phr_Config PHR_Config_Type; + type MAC_MainConfig.mac_MainConfig_v1020 MAC_MainConfig_v1020_Type; + type MAC_MainConfig.sr_ProhibitTimer_r9 SR_ProhibitTimer_r9_Type; + type UE_EUTRA_Capability.ue_Category UE_Category_Type; + + type TDD_Config.subframeAssignment TDD_SubframeAssignment_Type; + type PRACH_ConfigSIB.rootSequenceIndex RootSequenceIndex_Type; + type PDSCH_ConfigCommon.p_b P_b_Type; + type PhysicalConfigDedicated.antennaInfo PhysicalConfigDedicated_AntennaInfo_Type; + type SchedulingRequestConfig.setup.sr_ConfigIndex SR_ConfigIndex_Type; // @sic R5-102177 sic@ + type SystemInformationBlockType8.parameters1XRTT Parameters1XRTT_Type; + type SystemInformationBlockType8.parametersHRPD ParametersHRPD_Type; + type SystemInformationBlockType8.searchWindowSize SearchWindowSize_Type; + type SystemInformationBlockType9.hnb_Name HnbName_Type; + type SystemInformationBlockType10.messageIdentifier MessageIdentifier_Type; + type SystemInformationBlockType10.serialNumber SerialNumber_Type; + type SystemInformationBlockType10.warningType WarningType_Type; + type SystemInformationBlockType11.warningMessageSegmentType WarningMessageSegmentType_Type; + type SystemInformationBlockType11.warningMessageSegmentNumber WarningMessageSegmentNumber_Type; + type SystemInformationBlockType11.warningMessageSegment WarningMessageSegment_Type; + type SystemInformationBlockType11.dataCodingScheme DataCodingScheme_Type; + type SystemInformationBlockType12_r9.warningMessageSegmentType_r9 WarningMessageSegmentType_SIB12_Type; + type SystemInformationBlockType12_r9.warningMessageSegmentNumber_r9 WarningMessageSegmentNumber_SIB12_Type; + type SystemInformationBlockType12_r9.warningMessageSegment_r9 WarningMessageSegment_SIB12_Type; + type SystemInformationBlockType12_r9.dataCodingScheme_r9 DataCodingScheme_SIB12_Type; + + type InterFreqCarrierFreqInfo.threshX_Q_r9 ThreshX_Q_r9_Type; + type SystemInformationBlockType3.s_IntraSearch_v920 S_IntraSearch_v920_Type; + + type IdleModeMobilityControlInfo.t320 T320_Type; + + type PDCP_Parameters.maxNumberROHC_ContextSessions MaxNumberROHC_ContextSessions_Type; + + type Handover.targetRAT_Type TargetRAT_Type; + + type CellReselectionParametersCDMA2000.t_ReselectionCDMA2000 T_ReselectionCDMA2000_Type; + type SystemInformationBlockType8.csfb_RegistrationParam1XRTT_v920.powerDownReg_r9 PowerDownReg_Type; + + type UplinkPowerControlDedicatedSCell_r10.pathlossReferenceLinking_r10 SCellPathlossReferenceLinking_Type; + type MAC_MainConfig.mac_MainConfig_v1020.sCellDeactivationTimer_r10 MAC_MainConfig_ScellDeactivationTimer_Type; + + type CrossCarrierSchedulingConfig_r10.schedulingCellInfo_r10.other_r10 CrossSchedulingCarrierInfo_Type; + + + type CarrierFreqUTRA_FDD.threshX_Q_r9 CarrierFreqUTRA_FDD_threshX_Q_r9_Type; + type UplinkPowerControlCommon_v1020.deltaF_PUCCH_Format3_r10 UplinkPowerControl_DeltaF_PUCCH_Format3_Type; /* @status APPROVED (LTE_A) */ + + type DRX_Config.setup.longDRX_CycleStartOffset LongDrxCycleAndOffset_Type; + + type RRCConnectionRelease_v920_IEs.cellInfoList_r9 RRCConnectionRelease_CellInfoList_r9_Type; + + type MBSFN_AreaInfo_r9.notificationIndicator_r9 NotificationIndicator_r9_Type; + type MBSFN_AreaInfo_r9.mbsfn_AreaId_r9 Mbsfn_AreaId_r9_Type; + type MBMS_SessionInfo_r9.logicalChannelIdentity_r9 LogicalChannelIdentity_r9_Type; + type UE_EUTRA_Capability_v1020_IEs.ue_Category_v1020 UE_Category_v1020_Type; + + + } // End group RRC_Nested_Types + + //---------------------------------------------------------------------------- + + group ASP_CommonPart { + /* Definition of ASP common parts for REQ-, CNF- and IND-ASPs */ + + //---------------------------------------------------------------------------- + + group ASP_CommonPart_Definitions { + + group Routing_Info { + + const integer tsc_MaxRB := maxDRB + 3; /* DRBs + 3 SRBs */ + const integer tsc_SRB0 := 0; + const integer tsc_SRB1 := 1; + const integer tsc_SRB2 := 2; + const DRB_Identity tsc_DRB1 := 1; + const DRB_Identity tsc_DRB2 := 2; + const DRB_Identity tsc_DRB3 := 3; + const DRB_Identity tsc_DRB4 := 4; + const DRB_Identity tsc_DRB5 := 5; + const DRB_Identity tsc_DRB6 := 6; + const DRB_Identity tsc_DRB7 := 7; + const DRB_Identity tsc_DRB8 := 8; + + type integer SRB_Identity_Type (tsc_SRB0, tsc_SRB1, tsc_SRB2); /* SRB0 to be covered as well */ + + type record of DRB_Identity DRB_IdentityList_Type; + + const DRB_IdentityList_Type tsc_DrbList_Def := {tsc_DRB1}; + + type union RadioBearerId_Type { + SRB_Identity_Type Srb, + DRB_Identity Drb, + MRB_Identity_Type Mrb + }; + const RadioBearerId_Type tsc_RbId_SRB0 := {Srb:=tsc_SRB0}; + const RadioBearerId_Type tsc_RbId_SRB1 := {Srb:=tsc_SRB1}; + const RadioBearerId_Type tsc_RbId_SRB2 := {Srb:=tsc_SRB2}; + + const RadioBearerId_Type tsc_RbId_DRB1 := {Drb:=tsc_DRB1}; + const RadioBearerId_Type tsc_RbId_DRB2 := {Drb:=tsc_DRB2}; + const RadioBearerId_Type tsc_RbId_DRB3 := {Drb:=tsc_DRB3}; + const RadioBearerId_Type tsc_RbId_DRB4 := {Drb:=tsc_DRB4}; + const RadioBearerId_Type tsc_RbId_DRB5 := {Drb:=tsc_DRB5}; + const RadioBearerId_Type tsc_RbId_DRB6 := {Drb:=tsc_DRB6}; + const RadioBearerId_Type tsc_RbId_DRB7 := {Drb:=tsc_DRB7}; + const RadioBearerId_Type tsc_RbId_DRB8 := {Drb:=tsc_DRB8}; + + // type record of RadioBearerId_Type RadioBearerIdList_Type; /* array of SRB Ids and/or DRB Ids (DRBs + 3 SRBs) */ + + type union RoutingInfo_Type { + Null_Type None, + RadioBearerId_Type RadioBearerId + }; + + type Null_Type CarrierAggregationInfo_Type; /* additional routing information for carrier aggregation; FFS */ + + } // End sub-group Routing_Info + + //---------------------------------------------------------------------------- + + group Timing_Info { + + type integer SystemFrameNumber_Type (0..1023); + type integer SubFrameNumber_Type (0..9); + + type union SubFrameInfo_Type { + SubFrameNumber_Type Number, + Null_Type Any /* no specific sub-frame (valid for REQ ASPs only) */ + }; + type union SystemFrameNumberInfo_Type{ + SystemFrameNumber_Type Number, + Null_Type Any /* no specific frame number (valid for REQ ASPs only) */ + }; + type record SubFrameTiming_Type { + SystemFrameNumberInfo_Type SFN, + SubFrameInfo_Type Subframe + }; + type record of SubFrameTiming_Type SubFrameTimingList_Type; + type union TimingInfo_Type { + SubFrameTiming_Type SubFrame, + Null_Type Now, /* to be used in REQ ASPs when there is no 'activation time' */ + Null_Type None /* only to be used in SYSTEM_CTRL_CNF but not for EnquireTiming */ + }; + + } // End sub-group Timing_Info + + } // End sub-group ASP_CommonPart_Definitions + + //---------------------------------------------------------------------------- + + group REQ_ASP_CommonPart { + + const boolean tsc_CnfReq := true; + const boolean tsc_NoCnfReq := false; + + type record ReqAspControlInfo_Type { + boolean CnfFlag, /* true => SS shall send CNF: + * when the REQ is with no timing information (no activation time), SS shall send the confirmation when the configuration is done, i.e. when the test case may continue. + * Example: + * when there is a configuration follow by a send event it shall not be necessary to have a wait timer in between but the CNF triggers the send event. + * If there are other triggers e.g. like the UE sending a message, CnfFlag shall be set to false by the test case to avoid racing conditions with the CNF and the signalling message. + * When there is an activation time SS shall send the CNF after the configuration has been scheduled; + * that means SS shall not wait until the activation time has been expired. */ + boolean FollowOnFlag /* false => no further (related) information + * true: further related information will be sent to SS (semantics depending on respective ASP) */ + }; + + type record ReqAspCommonPart_Type { + EUTRA_CellId_Type CellId, + RoutingInfo_Type RoutingInfo, + TimingInfo_Type TimingInfo, + ReqAspControlInfo_Type ControlInfo, + CarrierAggregationInfo_Type CA_Info optional /* place holder for additional routing information for carrier aggregation */ + }; + + } // End group REQ_ASP_CommonPart + + //---------------------------------------------------------------------------- + + group CNF_ASP_CommonPart { + + type union ConfirmationResult_Type { + Null_Type Success, + integer Error /* may contain SS specific error code; this will not be evaluated by TTCN */ + }; + + type record CnfAspCommonPart_Type { + EUTRA_CellId_Type CellId, + RoutingInfo_Type RoutingInfo, + TimingInfo_Type TimingInfo, + ConfirmationResult_Type Result + }; + + } // End sub-group CNF_ASP_CommonPart + + //---------------------------------------------------------------------------- + + group IND_ASP_CommonPart { + + type record IntegrityErrorIndication_Type { + boolean Nas, /* NAS Integrity: set to true when received MAC does not match calculated MAC */ + boolean Pdcp /* PDCP Integrity: set to true when received MAC does not match calculated MAC */ + }; + + type record ErrorIndication_Type { + IntegrityErrorIndication_Type Integrity, /* Integrity error: received MAC does not match calculated MAC */ + integer System /* any other error: may be SS specific error code; this will not be evaluated by TTCN; + * e.g. an error shall be raised when the UE requests retransmission of an RLC PDU */ + }; + + type union IndicationStatus_Type { + Null_Type Ok, + ErrorIndication_Type Error + }; + + type record IndAspCommonPart_Type { + EUTRA_CellId_Type CellId, + RoutingInfo_Type RoutingInfo, + TimingInfo_Type TimingInfo, + IndicationStatus_Type Status, + CarrierAggregationInfo_Type CA_Info optional /* place holder for additional routing information for carrier aggregation */ + }; + + } // End sub-group IND_ASP_CommonPart + + //---------------------------------------------------------------------------- + + } // End group ASP_CommonPart + + group CA_CommonDefs { /* Common definitions for carrier aggregation needed for configuration of the SS (EUTRA_ASP_TypeDefs) as well as for MAC test cases (EUTRA_ASP_DrbDefs) */ + + type record ScellBitMap_Type { + B1_Type Reserved, /* LSBit Reserved. Shall be set to 0 */ + B7_Type Value /* 7 MSB bits the C Fields C7 to C1. 1 => the corresponding Scell is Active 0 => Inactive */ + }; + + type ScellBitMap_Type MAC_CTRL_ScellActDeact_Type; /* 36.321 clause 6.1.3.8 */ + + type record PH_Record_Type { /* 36.321 clause 6.1.3.6a */ + B1_Type P_Bit, /* P bit: 1 indicates the UE applies power backoff due to power management */ + B1_Type V_Bit, /* V bit: Indicates if the PH value is based on a real transmission or a reference format. + * For Type 1 PH, V=0 indicates real transmission on PUSCH and V=1 indicates that a PUSCH reference format is used */ + B6_Type Valve, /* The power headroom level. Ph Type 2 (if configured) for Pcell and Type 1 for Pcell and Scell */ + B2_Type Reserved optional, /* 2 reservid bits. Present if V=1 */ + B6_Type PCMaxc optional /* Present if V=1 */ + }; + + type record length(1..9) of PH_Record_Type PH_RecordList_Type; /* If simultaneousPUCCH-PUSCH is not configured at least oneType 1 PH record for Pcell is present. + * Additional one record per Scell for which respective 'C' bit is set as 1. + * If simultaneousPUCCH-PUSCH is configured then one PH Type 2 record for P cell followed by PH Type 1 record for P cell is present. + * Additional one record per Scell for which respective 'C' bit is set as 1 */ + + type record MAC_CTRL_ExtPowerHeadRoom_Type { + ScellBitMap_Type EPH_Octet1, + PH_RecordList_Type PH_RecordList /* At least one record for Pcell is present. + * Additional one record per Scell for which respective 'C' bit is set as 1 */ + }; + + } // End sub-group CA_CommonDefs + + group MBMS_CommonDefs { /* Common definitions for MBMS needed for configuration of the SS */ + + type record MRB_Identity_Type { /* MTCH is uniquely identified by: + * - the logicalChannelIdentity in the mbms-SessionInfoList-r9 + * - the MBSFN area identity, + * - the MCH index in the pmch-InfoList-r9 */ + Mbsfn_AreaId_r9_Type Mbsfn_AreaId, + PmchLogicalChannel_Type PmchLogicalChannel + }; + + type record PmchLogicalChannel_Type { + Pmch_InfoIndex_Type Pmch_InfoIndex, + LogicalChannelIdentity_r9_Type LogicalChannelIdentity + }; + + type integer Pmch_InfoIndex_Type (0..maxPMCH_PerMBSFN); + + } // End sub-group MBMS_CommonDefs +} diff --git a/templates/EUTRA_CommonDefs.ttcnm b/templates/EUTRA_CommonDefs.ttcnm new file mode 100644 index 0000000..540539e --- /dev/null +++ b/templates/EUTRA_CommonDefs.ttcnm @@ -0,0 +1,2983 @@ + + + + + + + + + + + + + "ASN.1:2002" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/templates/IMS_XML_Templates.ttcn b/templates/IMS_XML_Templates.ttcn new file mode 100644 index 0000000..49de506 --- /dev/null +++ b/templates/IMS_XML_Templates.ttcn @@ -0,0 +1,199 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-10 10:55:39 +0200 (Wed, 10 Sep 2014) $ +// $Rev: 12185 $ +/******************************************************************************/ + +module IMS_XML_Templates { + import from CommonDefs all; + import from IMS_CommonDefs all; + // import from urn_ietf_params_xml_ns_reginfo language "XSD" all; +// import from urn_ietf_params_xml_ns_gruuinfo language "XSD" all; +// import from urn_ietf_params_xml_ns_conference_info language "XSD" all; +// import from NoTargetNamespace language "XSD" all; + import from urn_ietf_params_xml_ns_reginfo all; + import from urn_ietf_params_xml_ns_gruuinfo all; + import from NoTargetNamespace all; + + group Alias_Definitions { + + type TIMS3GPP TIMS3GPP_Type; /* @status APPROVED (IMS) */ + + type Contact.state RegInfo_Contact_State_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type Contact.event RegInfo_Contact_Event_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type Contact.unknown_param_list RegInfo_Contact_UnknownParams_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type Contact.unknown_param_list[-] RegInfo_Contact_UnknownParam_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type Contact.elem_list RegInfo_Contact_ElemList_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + type Reginfo.registration_list RegInfo_RegistrationList_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type Registration RegInfo_Registration_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type Reginfo Reginfo_Type with { encode "XML"}; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + @sic R5s130474: encoding rule sic@ */ + + type Reginfo_Type.state Reginfo_State_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type Registration.state RegInfo_Registration_State_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + + type PubGruu PubGruu_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + type TempGruu TempGruu_Type; /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + } with { encode "XML"}; // @sic R5s130474 sic@ + + //---------------------------------------------------------------------------- + + template (value) Pub_gruu cs_PubGruu(charstring p_PublicUserId) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + uri := cs_IMS_ArbitraryValueFor_gr(p_PublicUserId) + }; + + template (value) Temp_gruu cs_TempGruu(charstring p_HomeDomainName, + integer p_Cseq) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + first_cseq := p_Cseq, + uri := cs_IMS_TempGRUUForUE(p_HomeDomainName) + }; + + /* + * @desc return GruuExtension + * @param p_PubGruu (default value: omit) + * @param p_TempGruu (default value: omit) + * @return RegInfo_Contact_ElemList_Type + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function fl_RegInfo_GruuExtension(template (omit) PubGruu_Type p_PubGruu := omit, + template (omit) TempGruu_Type p_TempGruu := omit) return RegInfo_Contact_ElemList_Type + { + var RegInfo_Contact_ElemList_Type v_ElemList := {}; + + if (isvalue(p_PubGruu) and isvalue(p_TempGruu)) { + v_ElemList[0] := oct2char(bit2oct(encvalue(p_PubGruu))); // NOTE: bit2str would return string cntaining '0' and '1' only + v_ElemList[1] := oct2char(bit2oct(encvalue(p_TempGruu))); // NOTE: bit2str would return string cntaining '0' and '1' only + } + else if (isvalue(p_PubGruu) xor isvalue(p_TempGruu)) { + FatalError(__FILE__, __LINE__, ""); + } + return v_ElemList; + } + + //---------------------------------------------------------------------------- + + template (value) RegInfo_Contact_UnknownParam_Type cs_XML_UEInstance(charstring p_UEInstanceId := tsc_IMS_UEInstanceId) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + /* NOTE: p_UEInstanceId may need to be URL encoded (-> f_URL_Encoding) */ + name := p_UEInstanceId, + base := "+sip.instance" + }; + + template (value) Registration cs_RegistrationInfo(template (value) Contact p_Contact, + charstring p_PublicUserId, + charstring p_Id, + RegInfo_Registration_State_Type p_State) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + aor := p_PublicUserId, + id := p_Id, + state := p_State, + contact_list := { + p_Contact + }, + elem_list := {} + }; + + //---------------------------------------------------------------------------- + + template (value) Contact cs_RegistrationContact(charstring p_ContactUri, + charstring p_Id, + RegInfo_Contact_State_Type p_State, + RegInfo_Contact_Event_Type p_Event, + template (omit) charstring p_CallId := omit, + template (omit) integer p_Cseq := omit, + template (omit) integer p_Expires := omit, + template (value) RegInfo_Contact_UnknownParams_Type p_UnknownParams := {}, + template (omit) Pub_gruu p_PubGruu := omit, + template (omit) Temp_gruu p_TempGruu := omit) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + callid := p_CallId, + cseq := p_Cseq, + duration_registered := omit, + event := p_Event, + expires := p_Expires, + id := p_Id, + q := omit, + retry_after := omit, + state := p_State, + uri := p_ContactUri, + display_name := omit, + unknown_param_list := p_UnknownParams, + elem_list := fl_RegInfo_GruuExtension(p_PubGruu, p_TempGruu) + }; + + //---------------------------------------------------------------------------- + + template (value) Reginfo cs_XML_Reginfo(Reginfo_State_Type p_State, + integer p_Version, + template (value) RegInfo_RegistrationList_Type p_Registrations) := + { /* @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) */ + state := p_State, + version := p_Version, + registration_list := p_Registrations, + elem_list := {} + }; + + /* + * @desc return RegInfo + * @param p_State (default value: full) + * @param p_Version (default value: 0) + * @param p_Registrations + * @return template (value) Reginfo + * @status APPROVED (IMS, IMS_IRAT, LTE, LTE_A, LTE_IRAT) + */ + function f_XML_RegInfo(Reginfo_State_Type p_State := full, + integer p_Version := 0, + template (value) RegInfo_RegistrationList_Type p_Registrations) return template (value) Reginfo + { + var template (value) Reginfo v_Reginfo := cs_XML_Reginfo(p_State, p_Version, p_Registrations); + return v_Reginfo; + } + + /* + * @desc build up XML for alternative service + * @param p_Type + * @param p_Reason (default value: "") + * @param p_Action (default value: omit) + * @return template (value) TIMS3GPP_Type + * @status APPROVED (IMS) + */ + function f_IMS_TIMS3GPP_TX(Type p_Type, + charstring p_Reason := "", + template (omit) Action p_Action := omit) return template (value) TIMS3GPP_Type + { + var template (value) TIMS3GPP_Type v_TIMS3GPP; + var TAlternativeService.elem_list v_AnyElements := {}; + + if (ispresent(p_Action)) { + v_AnyElements := {"" & valueof(p_Action) & ""} // @sic R5s140490 sic@ + } + + v_TIMS3GPP := { + version := 1.0, + attr := omit, + choice := { + alternative_service := + { + attr := omit, + type_ := p_Type, + reason := p_Reason, + elem_list := v_AnyElements + } + }, + elem_list := {} + }; + return v_TIMS3GPP; + } + + template (value) TIMS3GPP_Type cs_TIMS3GPP_Emergency(template (omit) Action p_Action := omit) := f_IMS_TIMS3GPP_TX("emergency", -, p_Action); /* @status APPROVED (IMS) */ + template (value) TIMS3GPP_Type cs_TIMS3GPP_Restoration(template (omit) Action p_Action := "initial-registration") := f_IMS_TIMS3GPP_TX("restoration", -, p_Action); /* @status APPROVED (IMS) */ + +} diff --git a/templates/IMS_XML_Templates.ttcnm b/templates/IMS_XML_Templates.ttcnm new file mode 100644 index 0000000..70ceefc --- /dev/null +++ b/templates/IMS_XML_Templates.ttcnm @@ -0,0 +1,1534 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/templates/MTC_Main_LTE_IRAT.ttcn b/templates/MTC_Main_LTE_IRAT.ttcn new file mode 100644 index 0000000..5d01fb4 --- /dev/null +++ b/templates/MTC_Main_LTE_IRAT.ttcn @@ -0,0 +1,227 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-06-03 14:17:49 +0200 (Tue, 03 Jun 2014) $ +// $Rev: 11479 $ +/******************************************************************************/ + +module MTC_Main_LTE_IRAT { + import from MTC_Base all; + import from MTC_Component_LTE_IRAT all; + import from MTC_UpperTester all; + import from UpperTesterSystemCmds all; + import from EUTRA_Component all; + import from UTRAN_Component all; + import from GERAN_Component all; + import from CDMA2000_Component all; + import from NasEmu_Component all; + import from NasEmu all; // f_NASEMU_MainLoop + import from IP_PTC_Component all; + import from IP_PTC_Main all; // f_IP_PTC_MainLoop + import from IMS_Component all; + import from IMS_DefaultHandler all; // f_IMS_DefaultHandler + import from CommonDefs all; + + //============================================================================ + /* + * @desc Connect all PTCs (LTE test cases) + * @param p_Eutra EUTRA_PTC + * @param p_Utran UTRAN_PTC + * @param p_Geran GERAN_PTC + * @param p_Cdma2000 CDMA2000_PTC + * @param p_ImsPdn1 + * @param p_ImsPdn2 IMS PTC for PDN2; for PDN1 per default the common IMS handler is started which handles regular IMS registration + * @param p_RatCombination (default value: omit) + * @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT) + */ + function f_MTC_ConnectPTCs_LTE_IRAT(EUTRA_PTC p_Eutra, + UTRAN_PTC p_Utran, + GERAN_PTC p_Geran, + CDMA2000_PTC p_Cdma2000, + IMS_PTC p_ImsPdn1, + IMS_PTC p_ImsPdn2, + template (omit) RATComb_Tested_Type p_RatCombination := omit) runs on MTC_LTE_IRAT + { /* @sic R5-104796 change 12: CDMA2000 added sic@ */ + /* @sic R5-113805, R5-113696, R5-113734: new parameter p_RatCombination sic@ */ + /* @sic R5-113037: Introduction of positioning test cases sic@ */ + /* p_RatCombination is used only in cases where a dummy PTC is used for GERAN or UTRAN to get the system info for EUTRA's system information combination 10 and c10a */ + /* @sic R5-113037: Introduction of positioning test cases sic@ */ + var IP_PTC v_IP_PTC; + var NASEMU_PTC v_NASEMU_PTC; + var IMS_PTC v_ImsPdn1; + var boolean v_C2KTunnellingFlag := (p_Cdma2000 != null); + + vc_Components.Eutra := p_Eutra; + vc_Components.Utran := p_Utran; + vc_Components.Geran := p_Geran; + vc_Components.Cdma2000 := p_Cdma2000; + + if (p_Eutra == null) { + FatalError (__FILE__, __LINE__, "invalid configuration"); + mtc.stop; + } + + // ***** MTC ***** + f_MTC_BASE_Map(); + + // ***** EUTRA PTC ***** + f_EUTRA_PTC_Map(p_Eutra, v_C2KTunnellingFlag); // map EUTRA system ports + v_NASEMU_PTC := f_NasEmu_CreateConnectAndMap(p_Eutra); // create NasEmu, map system ports and connect with EUTRA PTC + v_NASEMU_PTC.start(f_NASEMU_MainLoop()); // start NASEMU + + // ***** Create, map, connect and start IP PTC ***** + v_IP_PTC := f_IP_PTC_CreateAndMap(); + if (p_Eutra != null) {connect(p_Eutra:IP, v_IP_PTC:EUTRA_CTRL);} /* @sic R5-125676 sic@ */ + if (p_Utran != null) {connect(p_Utran:IP, v_IP_PTC:UTRAN_CTRL);} /* @sic R5-125676 sic@ */ + if (p_Geran != null) {connect(p_Geran:IP, v_IP_PTC:GERAN_CTRL);} /* @sic R5-133612 sic@ */ + v_IP_PTC.start(f_IP_PTC_MainLoop()); + + // ***** Create, connect and start IMS PTC ***** + // IMS for PDN1: if PTC is not created yet the default IMS PTC will be used + if (p_ImsPdn1 == null) { v_ImsPdn1 := f_IMS_PTC_Create(); } // => default IMS handling for PDN1 + else { v_ImsPdn1 := p_ImsPdn1; } + + connect(v_ImsPdn1:IMS_CTRL, v_IP_PTC:IMS_CTRL[tsc_Index_PDN1]); + connect(v_ImsPdn1:IMS_Server, v_IP_PTC:IMS_Server[tsc_Index_PDN1]); + connect(v_ImsPdn1:IMS_Client, v_IP_PTC:IMS_Client[tsc_Index_PDN1]); + + connect(v_ImsPdn1:IPCAN, p_Eutra:IMS[tsc_Index_PDN1]); + connect(v_ImsPdn1:MMI, mtc:PTC_Ut[tsc_MTC_PortIndex_IMS1]); /* @sic R5-134070: generic handling of UT commands for IMS PTC as well as for the other PTCs sic@ */ + + if (p_ImsPdn1 == null) { + v_ImsPdn1.start(f_IMS_DefaultHandler()); + } else if (p_Utran != null) { /* @sic R5-142919: sic@ + when we have test case specific IMS behaviour and there is a UTRAN PTC => we need coordination of IMS and UTRAN */ + connect(v_ImsPdn1:OtherIPCAN, p_Utran:IMS[tsc_Index_PDN1]); + } + + // IMS for PDN (emergency call) + if (p_ImsPdn2 != null) { // test case specific IMS handling for PDN2 + connect(p_ImsPdn2:IMS_CTRL, v_IP_PTC:IMS_CTRL[tsc_Index_PDN2]); + connect(p_ImsPdn2:IMS_Server, v_IP_PTC:IMS_Server[tsc_Index_PDN2]); + connect(p_ImsPdn2:IMS_Client, v_IP_PTC:IMS_Client[tsc_Index_PDN2]); + + connect(p_ImsPdn2:IPCAN, p_Eutra:IMS[tsc_Index_PDN2]); + connect(p_ImsPdn2:MMI, mtc:PTC_Ut[tsc_MTC_PortIndex_IMS2]); /* @sic R5-134070: generic handling of UT commands for IMS PTC as well as for the other PTCs sic@ + @sic R5s130987 sic@ */ + } + + // ***** UTRAN PTC ***** + if ((p_Utran != null) and ((not isvalue(p_RatCombination) or (valueof(p_RatCombination) == EUTRA_UTRA)))) { // if p_RatCombination == EUTRA_GERAN the UTRAN PTC is used as dummy only to get sys info + f_UTRAN_PTC_Map(p_Utran); + } + + // ***** GERAN PTC ***** + if ((p_Geran != null) and ((not isvalue(p_RatCombination) or (valueof(p_RatCombination) == EUTRA_GERAN)))) { // if p_RatCombination == EUTRA_GERAN the UTRAN PTC is used as dummy only to get sys info + f_GERAN_PTC_Map(p_Geran); + } + + // ***** CDMA2000 PTC ***** + if (p_Cdma2000 != null) { + f_CDMA2000_PTC_Map(p_Cdma2000); + } + + // ***** Connect PTCs to MTC ***** + if (p_Eutra != null) {connect(mtc:PTC_Ut[tsc_MTC_PortIndex_EUTRA], p_Eutra:UT);} + if (p_Utran != null) {connect(mtc:PTC_Ut[tsc_MTC_PortIndex_UTRAN], p_Utran:UT);} + if (p_Geran != null) {connect(mtc:PTC_Ut[tsc_MTC_PortIndex_GERAN], p_Geran:UT);} + if (p_Cdma2000 != null) {connect(mtc:PTC_Ut[tsc_MTC_PortIndex_CDMA2000], p_Cdma2000:UT);} + + // ***** Connect EUTRA PTC to other PTCs ***** + if (p_Utran != null) {connect(p_Eutra:UTRAN, p_Utran:EUTRA);} + if (p_Geran != null) {connect(p_Eutra:GERAN, p_Geran:EUTRA);} + if (p_Cdma2000 != null) {connect(p_Eutra:CDMA2000, p_Cdma2000:EUTRA);} + + // ***** Connect UTRAN PTC to GERAN PTC ***** + if ((p_Geran != null) and (p_Utran != null)) {connect(p_Utran:GERAN, p_Geran:UTRAN);} + + f_UT_InitialPowerOffUE(Ut); /* @sic R5s120520 sic@ */ + } + + //---------------------------------------------------------------------------- + /* + * @desc stop mtc, NAS emulator, IP PTC etc. when all test case components have finished + * @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT) + */ + function fl_MTC_StopIfFinished () runs on MTC_LTE_IRAT + { /* NOTE: there is no reference for IMS since no IMS behaviour will happen when all RAT PTC are gone */ + if ((vc_Components.Eutra == null) and + (vc_Components.Utran == null) and + (vc_Components.Geran == null) and + (vc_Components.Cdma2000 == null)) + { + f_MTC_Stop(pass); // 'pass' will overrule 'none' only + } + } + //---------------------------------------------------------------------------- + /* + * @desc Interface to control the other components + * @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT) + */ + altstep a_PTC_Control() runs on MTC_LTE_IRAT + { /* NOTEs: + - acc. to ES 201 873-1 Annex F.1.1 an error verdict shall be assignd when "running" is applied on any uninitialised component + - it seems that "running" cannot be used in the "[]" */ + + [] any component.killed + { // at a component something's gone wrong and it killed itself, so have to stop everything else + all component.kill; + mtc.stop; + } + + /* since the NAS emulator is a parallel component which does not terminate on its own we need to check all components + @sic R5s100751 change 9 sic@ */ + [vc_Components.Eutra != null] vc_Components.Eutra.done + { + vc_Components.Eutra := null; + fl_MTC_StopIfFinished(); + } + [vc_Components.Utran != null] vc_Components.Utran.done + { + vc_Components.Utran := null; + fl_MTC_StopIfFinished(); + } + [vc_Components.Geran != null] vc_Components.Geran.done + { + vc_Components.Geran := null; + fl_MTC_StopIfFinished(); + } + [vc_Components.Cdma2000 != null] vc_Components.Cdma2000.done + { + vc_Components.Cdma2000 := null; + fl_MTC_StopIfFinished(); + } + } + //============================================================================ + /* + * @desc Main loop of the MTC + * @param p_GuardTimer timer + * @status APPROVED (IMS_IRAT, LTE_A, LTE_IRAT) + */ + function f_MTC_MainLoop(timer p_GuardTimer) runs on MTC_LTE_IRAT + { /* @sic R5-113037: Introduction of positioning test cases sic@ */ + /* @sic R5s120520: f_UT_InitialPowerOffUE moved to f_MTC_ConnectPTCs_LTE sic@ */ + + f_MTC_BASE_Init(); + + while (true) { /* mtc will be stopped by a_PTC_Control or due to timeout of the guard timer; + => neither a_PTC_Control nor a_UpperTester needs to use 'repeat' */ + alt { + [] a_PTC_Control(); // handle 'done' and 'killed' of PTCs: MTC will be stopped, when all PTCs are terminated or a fatal error occurs + [] a_MTC_ReceiveFromPTC_SendToUT(tsc_MTC_PortIndex_EUTRA); // handle upper tester for PTC 0 (EUTRA) + [] a_MTC_ReceiveFromPTC_SendToUT(tsc_MTC_PortIndex_UTRAN); // handle upper tester for PTC 1 (UTRAN) + [] a_MTC_ReceiveFromPTC_SendToUT(tsc_MTC_PortIndex_GERAN); // handle upper tester for PTC 2 (GERAN) + [] a_MTC_ReceiveFromPTC_SendToUT(tsc_MTC_PortIndex_CDMA2000); // handle upper tester for PTC 3 (CDMA2000) + [] a_MTC_ReceiveFromPTC_SendToUT(tsc_MTC_PortIndex_IMS1); // handle upper tester for PTC 4 (IMS1) + [] a_MTC_ReceiveFromPTC_SendToUT(tsc_MTC_PortIndex_IMS2); // handle upper tester for PTC 5 (IMS2) + [] a_MTC_ReceiveFromUT_SendToPTC(); + [] p_GuardTimer.timeout {f_MTC_Stop(fail);} /* acc. to the assumption that preamble and postamble are short compared to the testbody + a FAIL verdict is assigned (rather than an INCONC) */ + } + } + } +} diff --git a/templates/MTC_Main_LTE_IRAT.ttcnm b/templates/MTC_Main_LTE_IRAT.ttcnm new file mode 100644 index 0000000..b42a8d9 --- /dev/null +++ b/templates/MTC_Main_LTE_IRAT.ttcnm @@ -0,0 +1,2417 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + ; + ; + ; + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + diff --git a/templates/UTRAN_CommonAspDefs.ttcn b/templates/UTRAN_CommonAspDefs.ttcn new file mode 100644 index 0000000..616355f --- /dev/null +++ b/templates/UTRAN_CommonAspDefs.ttcn @@ -0,0 +1,34 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-07-06 21:15:13 +0200 (Sun, 06 Jul 2014) $ +// $Rev: 11812 $ +/******************************************************************************/ + +module UTRAN_CommonAspDefs { + import from UTRAN_ASP_Definitions language "ASN.1:2002" all; + + // embedded ASP types: + type TrCHInfo.ulconnectedTrCHList UlConnectedTrCHList_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + type TrCHInfo.dlconnectedTrCHList DlConnectedTrCHList_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + type TrCHInfo_TDD.ulconnectedTrCHList UlConnectedTrCHList_TDD_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + type TrCHInfo_TDD.dlconnectedTrCHList DlConnectedTrCHList_TDD_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + type TrCHInfo.ulconnectedTrCHList[-] UlConnectedTrCH_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + type TrCHInfo.dlconnectedTrCHList[-] DlConnectedTrCH_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + type TrCHInfo_TDD.ulconnectedTrCHList[-] UlConnectedTrCH_TDD_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + type TrCHInfo_TDD.dlconnectedTrCHList[-] DlConnectedTrCH_TDD_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + type CphyTrchConfigReq.ulconnectedTrCHList CphyUlConnectedTrCHList_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + type CphyUlConnectedTrCHList_Type[0] CphyUlConnectedTrCH_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + type CphyTrchConfigReq.dlconnectedTrCHList CphyDlConnectedTrCHList_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + type CphyDlConnectedTrCHList_Type[0] CphyDlConnectedTrCH_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + type CphyTrchConfigReq_TDD.ulconnectedTrCHList CphyUlConnectedTrCHList_TDD_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + type CphyUlConnectedTrCHList_TDD_Type[0] CphyUlConnectedTrCH_TDD_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + type CphyTrchConfigReq_TDD.dlconnectedTrCHList CphyDlConnectedTrCHList_TDD_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + type CphyDlConnectedTrCHList_TDD_Type[0] CphyDlConnectedTrCH_TDD_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, SSNITZ, UTRAN) */ + type CphyRlSetupReq_FDD.physicalChannelInfo RL_Setup_FDD_PhysicalChannelInfo_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ + type CphyRlSetupReq_TDD.physicalChannelInfo RL_Setup_TDD_PhysicalChannelInfo_Type; /* @status APPROVED (LTE_A, LTE_IRAT, POS, UTRAN) */ +} diff --git a/templates/UTRAN_CommonAspDefs.ttcnm b/templates/UTRAN_CommonAspDefs.ttcnm new file mode 100644 index 0000000..2dd52e4 --- /dev/null +++ b/templates/UTRAN_CommonAspDefs.ttcnm @@ -0,0 +1,237 @@ + + + + + + + + "ASN.1:2002" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/templates/UTRAN_CommonDefs.ttcn b/templates/UTRAN_CommonDefs.ttcn new file mode 100644 index 0000000..56491b1 --- /dev/null +++ b/templates/UTRAN_CommonDefs.ttcn @@ -0,0 +1,482 @@ +/******************************************************************************/ +// @copyright Copyright Notification +// No part may be reproduced except as authorized by written permission. +// The copyright and the foregoing restriction extend to reproduction in all media. +// Trademark 2014, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). +// All rights reserved. +// @version: IWD_14wk37 +// $Date: 2014-09-09 22:08:20 +0200 (Tue, 09 Sep 2014) $ +// $Rev: 12181 $ +/******************************************************************************/ + +module UTRAN_CommonDefs { + import from CommonDefs all; + import from UTRAN_RRC_ASN1_Definitions language "ASN.1:2002" all; + import from NAS_CommonTypeDefs all; + + //============================================================================= + // Type definitions + //----------------------------------------------------------------------------- + + type integer SS_CN_DomainIdentity (0..1); /* CN domain identity type in TTCN tabular format; @status APPROVED */ + type enumerated UTRAN_DelayForUserPlaneSignalling_Type { noDelay, waitForIP }; //@sic R5s130384 sic@ + + // embedded RRC types: + type TFCS_ReconfAdd.ctfcSize.ctfc2Bit TFCS_ReconfAdd_CtfcSize_Ctfc2Bit_List_Type; /* auxiliary type definition; @status APPROVED */ + type TFCS_ReconfAdd_CtfcSize_Ctfc2Bit_List_Type[0] TFCS_ReconfAdd_CtfcSize_Ctfc2Bit_Type; /* auxiliary type definition; @status APPROVED */ + + type TFCS_ReconfAdd.ctfcSize.ctfc4Bit TFCS_ReconfAdd_CtfcSize_Ctfc4Bit_List_Type; /* auxiliary type definition; @status APPROVED */ + type TFCS_ReconfAdd_CtfcSize_Ctfc4Bit_List_Type[0] TFCS_ReconfAdd_CtfcSize_Ctfc4Bit_Type; /* auxiliary type definition; @status APPROVED */ + + type TFCS_ReconfAdd.ctfcSize.ctfc6Bit TFCS_ReconfAdd_CtfcSize_Ctfc6Bit_List_Type; /* auxiliary type definition; @status APPROVED */ + type TFCS_ReconfAdd_CtfcSize_Ctfc6Bit_List_Type[0] TFCS_ReconfAdd_CtfcSize_Ctfc6Bit_Type; /* auxiliary type definition; @status APPROVED */ + + type TFCS_ReconfAdd.ctfcSize.ctfc8Bit TFCS_ReconfAdd_CtfcSize_Ctfc8Bit_List_Type; /* auxiliary type definition; @status (APPROVED) */ + type TFCS_ReconfAdd_CtfcSize_Ctfc8Bit_List_Type[0] TFCS_ReconfAdd_CtfcSize_Ctfc8Bit_Type; /* auxiliary type definition; @status (APPROVED) */ + + type PhysicalChannelCapability_edch_r6.fdd_edch.supported.edch_PhysicalLayerCategory Edch_PhysicalLayerCat_Type; /* @status APPROVED */ + + type UTRA_PriorityInfoList.utra_ServingCell.priority UtraServingCellPriorityValue_Type; /* @status APPROVED */ + type UTRA_PriorityInfoList.utra_ServingCell.s_PrioritySearch1 UtraServingCellPrioritySearch1_Type; /* @status APPROVED */ + type UTRA_PriorityInfoList.utra_ServingCell.s_PrioritySearch2 UtraServingCellPrioritySearch2_Type; /* @status APPROVED */ + type UTRA_PriorityInfoList.utra_ServingCell.threshServingLow UtraServingCellthreshServingLow_Type; /* @status APPROVED */ + type UTRANMobilityInformation.later_than_r3.criticalExtensions.criticalExtensions.r7.v860NonCriticalExtensions UTRANMobilityInformation_v860ext2_Type; + + type EUTRA_FrequencyAndPriorityInfo.priority EutraFrequencyAndPriorityInfoPriorityValue_Type; /* @status APPROVED */ + type EUTRA_FrequencyAndPriorityInfo.qRxLevMinEUTRA EutraFrequencyAndPriorityInfoQrxLevMin_Type; /* @status APPROVED */ + type EUTRA_FrequencyAndPriorityInfo.threshXhigh EutraFrequencyAndPriorityInfoThreshXhigh_Type; /* @status APPROVED */ + type EUTRA_FrequencyAndPriorityInfo.threshXlow EutraFrequencyAndPriorityInfoThreshXlow_Type; /* @status APPROVED */ + + type RRCConnectionSetupComplete.v370NonCriticalExtensions RRCConnSetupCmpl_v370NonCritExt_Type; /* auxiliary type definition; @status APPROVED */ + type RRCConnectionRelease.later_than_r3.criticalExtensions.r4.v4d0NonCriticalExtensions RRCConnectionRelease_v4d0NonCriticalExtensions_Type; /* @status APPROVED */ + type RRCConnectionReject.r3.laterNonCriticalExtensions RRCConnectionReject_r3_laterNonCriticalExtensions_Type; + + type MultiplePLMN_List_r6.multiplePLMNs Multiple_PLMN_List_Type; + + type UL_CCTrCH_r7.tddOption UL_CCTrCH_r7_TddOption_Type; + type UL_CCTrCH_r4.tddOption UL_CCTrCH_r4_TddOption_Type; + + type TGP_Sequence_r8.tgps_Status TGPS_Status_r8_Type; + + type SysInfoType19.v920NonCriticalExtensions SIB19_v920NonCriticalExtensions_Type; + + type DL_DPCH_InfoCommon_r6.cfnHandling DL_DPCH_CfnHandling_r6_Type; + + type HARQ_Info_r7.numberOfProcesses HarqNrOfProcesses_Type; + type HARQ_Info_r11.numberOfProcesses HarqNrOfProcesses_r11_Type; + + type enumerated UTRAN_FddTddMessageClass_Type {FDDr99, FDDr5, FDDr6, FDDr7, FDDr8, FDDr9, FDDr10, FDDr11, TDDr4, TDDr5, TDDr7, TDDr9, TDDr10, TDDr11}; // @sic R5s130195 Utran Release R5-140314: added FDDr11/TDDr11 sic@ + + type LoggedANRConfigurationInfo.loggingDuration LoggedANRConfigurationInfo_LoggingDuration_Type; + type LoggedANRConfigurationInfo.interRATANRforEUTRAIndicator LoggedANRConfigurationInfo_InterRATANRforEUTRAIndicator_Type; + type LoggedANRConfigurationInfo.interRATANRforGSMIndicator LoggedANRConfigurationInfo_InterRATANRforGSMIndicator_Type; + type DL_HSPDSCH_Information_r9.modeSpecificInfo.fdd.dl_64QAM_Configured DL_64QAM_Configured_Type; + type DL_HSPDSCH_Information_r11.modeSpecificInfo.fdd.dl_64QAM_Configured DL_64QAM_Configured_r11_Type; + type DL_SecondaryCellInfoFDD_r10.configurationInfo.newConfiguration.dl_64QAM_Configured DL_SecondaryCell64QAM_Configured_Type; + type DL_SecondaryCellInfoFDD_r10.configurationInfo.newConfiguration.hS_SCCHChannelisationCodeInfo DL_SecondaryHsScchCodeInfo_Type; + type HS_SCCH_Info_r9.modeSpecificInfo.fdd.hS_SCCHChannelisationCodeInfo HsScchInfo_ChCodeInfo_Type; + type SIB19_v920NonCriticalExtensions_Type.va80NonCriticalExtensions.vb30NonCriticalExtensions.sysInfoType19_vb30ext SIB19_sysInfoType19_vb30ext; + + type DL_InformationPerRL_r8.dl_dpchInfo DL_InformationPerRL_DpchInfo_r8; + type EUTRA_MeasuredCells.rSRP RSRP_Type; + type EUTRA_MeasuredCells.rSRQ RSRQ_Type; + + //============================================================================= + // Constants + //----------------------------------------------------------------------------- + + const float tsc_IdleMode_GenericTimer_UTRAN := 360.0; /* Idle mode generic timer according to 36.523-3 cl. 7.8 + @status APPROVED */ + const integer tsc_AICH1 := 7; /* Physical channel identity for AICH channel associated with first PRACH + @status APPROVED */ + const integer tsc_BCCH1 := 1; /* Logical channel identity for logical channel BCCH mapped on BCH + @status APPROVED */ + const integer tsc_BCCH6 := 6; /* Logical channel identity for logical channel BCCH mapped on FACH + @status APPROVED */ + const integer tsc_BCH1 := 11; /* Identity for transport channel BCH + @status APPROVED */ + const integer tsc_E_AGCH := 14; + const integer tsc_E_DPCH := 22; + const integer tsc_E_HICH := 15; + const integer tsc_E_RGCH := 16; + const integer tsc_FACH1 := 13; /* transport channel identity for FACH + @status APPROVED */ + const integer tsc_FACH2 := 14; /* transport channel identity for second FACH when it is connected to a secondary CCPCH together with PCH + (transport channel identity = 14) + @status APPROVED */ + const integer tsc_F_DPCH := 28; + const integer tsc_HSPDSCH := 18; // physical channel identity for HS-PDSCH. + const integer tsc_PICH1 := 6; /* Physical channel identity for PICH channel associated with first secondary CCPCH + @status APPROVED */ + const integer tsc_PICH2 := 11; // Physical channel identity for PICH2 channel associated with second secondary CCPCH + const integer tsc_PRACH1 := 8; /* Physical channel identity for first PRACH channel + @status APPROVED */ + const integer tsc_PRACH2 := 9; // Physical channel identity for second PRACH channel + const integer tsc_P_CCPCH := 4; /* Physical channel identity for primary CCPCH channel + @status APPROVED */ + const integer tsc_P_CPICH := 0; /* Physical channel identity for primary CPICH channel + @status APPROVED */ + const integer tsc_P_SCH := 1; /* Physical channel identity for primary SCH channel + @status APPROVED */ + const integer tsc_RACH1 := 15; /* transport channel identity for RACH + @status APPROVED */ + const integer tsc_AttOn := 1; /* Attach flag value On + @status APPROVED */ + const integer tsc_AttenuationCellOFF := 123; /* Value of attenuator to be used when setting a Cell OFF (3GPP 34.108 / Table 6.1.4) + @status APPROVED */ + const integer tsc_AttenuationServingCell := -1; /* Value different for FDD/TDD so this is just a flag to be used in f_UTRAN_SetCellPower + @status APPROVED */ + const integer tsc_AttenuationSuitableNeighbourCell := -2; /* Value different for FDD/TDD so this is just a flag to be used in f_UTRAN_SetCellPower + @status APPROVED */ + const integer tsc_AttenuationNonSuitableCell := -3; /* Value different for FDD/TDD so this is just a flag to be used in f_UTRAN_SetCellPower + @status APPROVED */ + const bitstring tsc_CellIdCell5 := '0000000000000000000000000000'B; /* @status APPROVED */ + const bitstring tsc_CellIdCell7 := '0000000000000000000000000001'B; /* @status APPROVED */ + const bitstring tsc_CellIdCell8 := '0000000000000000000000000010'B; /* @status APPROVED */ + const bitstring tsc_CellIdCell9 := '0000000000000000000000000011'B; /* @status APPROVED */ + + + const integer tsc_Now := 512; /* To indicate the system information change starts immediately + @status APPROVED */ + const octetstring tsc_RAC_Def := '01'O; /* Routing Area Code, 1 octet, 3GPP 24.008 clause 10.5.1.12.3 + @status APPROVED */ + const integer tsc_SFN_Offset := 0; /* SFN offset value + @status APPROVED */ + const octetstring tsc_T3212_Def := '1E'O; /* infinite + @status APPROVED */ + const integer tsc_TimingsCCPCH1 := 0; /* timing offset for secondary CCPCH1. default is 0 + @status APPROVED */ + const bitstring tsc_URA_IdCell5 := '0000000000000001'B; /* @status APPROVED */ + const bitstring tsc_URA_IdCell7 := '0000000000000001'B; /* @status APPROVED */ + const bitstring tsc_URA_IdCell8 := '0000000000000010'B; /* @status APPROVED */ + const bitstring tsc_URA_IdCell9 := '0000000000000010'B; /* @status APPROVED */ + + const integer tsc_CellParametersID_Cell1 := 0; /* CellParametersID for CELL5 + @status APPROVED */ + const integer tsc_CellParametersID_Cell2 := 4; /* CellParametersID for CELL5 + @status APPROVED */ + const integer tsc_CellParametersID_Cell3 := 8; /* CellParametersID for CELL5 + @status APPROVED */ + const integer tsc_CellParametersID_Cell4 := 12; /* CellParametersID for CELL5 + @status APPROVED */ + const integer tsc_CellParametersID_Cell5 := 114; /* CellParametersID for CELL5 + @status APPROVED */ + const integer tsc_CellParametersID_Cell6 := 119; /* CellParametersID for CELL5 + @status APPROVED */ + const integer tsc_CellParametersID_Cell7 := 123; /* CellParametersID for CELL7 + @status APPROVED */ + const integer tsc_CellParametersID_Cell8 := 127; /* CellParametersID for CELL8 + @status APPROVED */ + const integer tsc_CellParametersID_Cell9 := 20; /* CellParametersID for CELL9 + @status APPROVED */ + + const integer tsc_DL_CCCH5 := 5; /* Logical channel identity for logical channel CCCH mapped on FACH (downlink) + @status APPROVED */ + const integer tsc_DL_DCCH1 := 1; /* Logical channel identity for DCCH1 (downlink), used by signalling radio bearer 1 + @status APPROVED */ + const integer tsc_DL_DCCH2 := 2; /* Logical channel identity for DCCH2 (downlink), used by signalling radio bearer 2 + @status APPROVED */ + const integer tsc_DL_DCCH3 := 3; /* Logical channel identity for DCCH3 (downlink), used by signalling radio bearer 3 + @status APPROVED */ + const integer tsc_DL_DCCH4 := 4; /* Logical channel identity for DCCH4 (downlink), used by signalling radio bearer 4 + @status APPROVED */ + const integer tsc_DL_DCH1 := 6; /* identity for transport channel DCH1 (downlink), in AMR speech this transport channel is used for RAB subflow#1 + @status APPROVED */ + const integer tsc_DL_DCH2 := 7; /* identity for transport channel DCH2 (downlink), in AMR speech this transport channel is used for RAB subflow#2 + @status APPROVED */ + const integer tsc_DL_DCH3 := 8; /* identity for transport channel DCH3 (downlink), in AMR speech this transport channel is used for RAB subflow#3 + @status APPROVED */ + const integer tsc_DL_DCH4 := 9; // identity for transport channel DCH4 (downlink), in AMR speech + const integer tsc_DL_DCH5 := 10; /* identity for transport channel DCH5 (downlink), in most case this transport channel is used for signalling bearers. + @status APPROVED */ + const integer tsc_DL_DPCH1 := 26; /* physical channel identity for DPCH1(downlink) + @status APPROVED */ + const integer tsc_DL_DTCH1 := 7; /* Logical channel identity for DTCH1 (downlink) + @status APPROVED */ + const integer tsc_DL_DTCH2 := 8; /* Logical channel identity for DTCH2 (downlink) + @status APPROVED */ + const integer tsc_DL_DTCH3 := 9; /* Logical channel identity for DTCH3 (downlink) + @status APPROVED */ + const integer tsc_DL_DTCH4 := 10; // Logical channel identity for DTCH4 (downlink) + const integer tsc_DPCH_PowerOffsetPILOT := 0; /* Power offsett value of PILOT on DPCH + @status APPROVED */ + const integer tsc_DPCH_PowerOffsetTFCI := 0; /* Power offsett value of TFCI on DPCH + @status APPROVED */ + const integer tsc_DPCH_PowerOffsetTPC := 0; /* Power offsett value of TPC on DPCH + @status APPROVED */ + const integer tsc_GainFactorBetaC_Below64k := 11; /* Gain factor Beta C value to be used for RAB UL below 64kbps + @status APPROVED */ + const integer tsc_GainFactorBetaC_Higher64k := 9; // Gain factor Beta C value to be used for RAB UL higher than 64kbps + const integer tsc_GainFactorBetaD := 15; /* @status APPROVED */ + const integer tsc_RB_BCCH := -1; /* radio bearer idenity for bearer on TM + BCCH + BCH used for broadcasting system information blocks + @status APPROVED */ + const integer tsc_RB_BCCH_FACH := -3; /* signalling radio bearer on TM + BCCH + FACH + sCCPCH1 + @status APPROVED */ + const integer tsc_RB_DTCH_E_DCH_MAC1 := -21; // Special RB for DTCH configured in TM for MAC test cases + const integer tsc_RB_DTCH_E_DCH_MAC2 := -22; // Special second RB for DTCH configured in TM for MAC test cases + const integer tsc_RB_PCCH := -2; /* radio bearer idenity for bearer on TM + PCCH + PCH used for sending paging message when there is no RAB subflows for speech + @status APPROVED */ + const integer tsc_RB0 := 0; /* signalling radio bearer on TM + CCCH + @status APPROVED */ + const integer tsc_RB1 := 1; /* sibnalling radio bearer on UM + DCCH + @status APPROVED */ + const integer tsc_RB10 := 10; /* radio access bearer identity, in AMR speech this RB is RAB subflow#1, + in other cases this is a radio access bearer + @status APPROVED */ + const integer tsc_RB11 := 11; /* radio access bearer identity, in AMR speech this RB is RAB subflow#2, + in some other cases this is the signalling radio bearer for TM + BCCH_FACH + @status APPROVED */ + const integer tsc_RB12 := 12; /* radio access bearer, in AMR speech this RB is RAB subflow#3, in some other cases this is the bearer for TM PCCH + @status APPROVED */ + const integer tsc_RB13 := 13; // radio access bearer, in AMR speech this RB is RAB subflow#3, in some other cases this is the bearer for TM PCCH + const integer tsc_RB17 := 17; // Fifth PS Radio Bearer associated with a DTCH on HS-DSCH + const integer tsc_RB26 := 26; // second PS Radio Bearer associated with a DTCH on HS-DSCH + const integer tsc_RB27 := 27; // Third PS Radio Bearer associated with a DTCH on HS-DSCH + const integer tsc_RB28 := 28; // Fourth PS Radio Bearer associated with a DTCH on HS-DSCH + const integer tsc_RB2 := 2; /* signalling radio bearer on AM + DCCH + @status APPROVED */ + const integer tsc_RB20 := 20; /* radio access bearer for PS RAB + @status APPROVED */ + const integer tsc_RB21 := 21; // radio access bearer for PS RAB + const integer tsc_RB22 := 22; // Second AM radio access bearer for PS + const integer tsc_RB24 := 24; // Second AM radio access bearer for PS + const integer tsc_RB25 := 25; /* PS Radio Bearer associated with a DTCH on HS-DSCH + @status APPROVED */ + const integer tsc_RB29 := 29; // RB Id for Radio bearer that carries the 2nd CCCH in the DL + const integer tsc_RB3 := 3; /* signalling radio bearer on AM + DCCH for high priority NAS_DT + @status APPROVED */ + const integer tsc_RB3_DCCH_RRC := -16; /* RB identity used for configuration of AM RLC entity + * in the SS. SS will use it to simulate the high priority + * NAS SRB mapped to DCH for routing UL NAS messages in + * RRC test cases. + * A negative value is used to indicate that the SS + * configuration is not identical to the UE configuration */ + const integer tsc_RB30 := 30; // radio access bearer for CBS RAB + const integer tsc_RB31 := 31; + const integer tsc_RB4 := 4; /* signalling radio bearer on AM + DCCH for low priority NAS_DT + @status APPROVED */ + const integer tsc_RB5 := 5; /* signalling radio bearer on TM + DCCH for AMR Signalling + @status (APPROVED) */ + const integer tsc_RRC_TI := 0; /* RRC Transaction Identifier + @status APPROVED */ + const integer tsc_PCCH1 := 1; /* Logical channel identity for logical channel PCCH + @status APPROVED */ + const integer tsc_PCH1 := 12; /* transport channel identity for PCH + @status APPROVED */ + const integer tsc_N300 := 3; /* @status APPROVED */ + const integer tsc_S_CCPCH1 := 5; /* Physical channel identity for first secondary CCPCH channel + @status APPROVED */ + const integer tsc_S_CCPCH_2ndScrCode := 0; /* Secondary scrambling code for S-CCPCH channels + @status APPROVED */ + const integer tsc_S_CCPCH_PowerOffsetPILOT := 6; /* Power offsett value of PILOT on sCCPCH + @status APPROVED */ + const integer tsc_S_CCPCH_PowerOffsetTFCI := 6; /* Power offsett value of TFCI on sCCPCH + @status APPROVED */ + const integer tsc_S_SCH := 2; /* Physical channel identity for secondary SCH channel + @status APPROVED */ + const SS_CN_DomainIdentity tsc_SS_PS_Domain := 1; /* @status APPROVED */ + const SS_CN_DomainIdentity tsc_SS_CS_Domain := 0; /* @status APPROVED */ + const integer tsc_UL_CCCH5 := 5; /* Logical channel identity for logical channel CCCH mapped RACH (uplink) + @status APPROVED */ + const integer tsc_UL_DCCH1 := 1; /* Logical channel identity for DCCH1 (uplink), used by signalling radio bearer 1 + @status APPROVED */ + const integer tsc_UL_DCCH2 := 2; /* Logical channel identity for DCCH2 (uplink), used by signalling radio bearer 2 + @status APPROVED */ + const integer tsc_UL_DCCH3 := 3; /* Logical channel identity for DCCH3 (uplink), used by signalling radio bearer 3 + @status APPROVED */ + const integer tsc_UL_DCCH4 := 4; /* Logical channel identity for DCCH4 (uplink), used by signalling radio bearer 4 + @status APPROVED */ + const integer tsc_UL_DCH1 := 1; /* identity for transport channel DCH1 (uplink), in AMR speech this transport channel is used for RAB subflow#1 + @status APPROVED */ + const integer tsc_UL_DCH2 := 2; /* identity for transport channel DCH2 (uplink), in AMR speech this transport channel is used for RAB subflow#2 + @status APPROVED */ + const integer tsc_UL_DCH3 := 3; /* identity for transport channel DCH3 (uplink), in AMR speech this transport channel is used for RAB subflow#3 + @status APPROVED */ + const integer tsc_UL_DCH4 := 4; // identity for transport channel DCH4 (upink), in AMR speech + const integer tsc_UL_DCH5 := 5; /* identity for transport channel DCH5 (uplink), in most case this transport channel is used for signalling bearers. + @status APPROVED */ + const integer tsc_UL_DPCH1 := 20; /* physical channel identity for DPCH1(uplink) + @status APPROVED */ + const integer tsc_UL_DTCH1 := 7; /* Logical channel identity for DTCH1 (uplink) + @status APPROVED */ + const integer tsc_UL_DTCH2 := 8; /* Logical channel identity for DTCH2 (uplink) + @status APPROVED */ + const integer tsc_UL_DTCH3 := 9; /* Logical channel identity for DTCH3 (uplink) + @status APPROVED */ + const integer tsc_UL_DTCH4 := 10; // Logical channel identity for DTCH4 (uplink) + + //----------------------------------------------------------------------------- + + const C_RNTI tsc_CRNTI := '0000000000000001'B; /* C RNTI. + Default value: '0000 0000 0000 0001'B + @status APPROVED */ + const H_RNTI tsc_H_RNTI := '1010101010101010'B; + const E_RNTI tsc_E_RNTI := '1010101010101010'B; + + const ChannelisationCode256 tsc_AICH1_ChC := 3; /* Channelization code for tsc_AICH1 + @status APPROVED */ + const SpreadingFactor tsc_UL_DPDCH_SF_SRB := sf64; /* Channelization code for UL DPDCH for an SRB connection with a RAB established + @status APPROVED */ + const DPCCH_PowerOffset tsc_DPCCH_PowerOffset := -40; /* DPCCH power offset value. + @status APPROVED */ + const SF512_AndCodeNumber tsc_DL_DPCH1_ChC_SRB := { sf128 := 0 }; /* Channelization code for tsc_DL_DPCH1 for a SRB connection with a RAB established + @status APPROVED */ + const SF512_AndCodeNumber tsc_Sfc256_C0 := { sf256 := 0 }; /* @status APPROVED (LTE_A, LTE_IRAT) */ + const B16_Type tsc_DL_DPCH1_ChC_SRB_TDD := '0000000000001000'B; /* Channelization code for tsc_DL_DPCH1 for a SRB connection with a RAB established + @status APPROVED */ + const B16_Type tsc_DL_DPCH1_ChC_Speech_TDD := '1100000000000000'B; // Channelization code for tsc_DL_DPCH1 for a SRB connection with a RAB established + const SF512_AndPilot tsc_DL_DPCH1_SFP_SRB := { sfd128 := pb4 }; /* Spreading factor and pilot bits for tsc_DL_DPCH1 for an SRB connection with a RAB established + @status APPROVED */ + const DefaultDPCH_OffsetValueFDD tsc_DefaultDPCH_OffsetValue := 459; /* Default DPCH offset value. Actual value DefaultDPCH-OffsetValueFDD = IE value * 512 + @status APPROVED */ + const DefaultDPCH_OffsetValueTDD tsc_DefaultDPCH_OffsetValue_TDD := 0;/* Default DPCH offset value. Actual value DefaultDPCH-OffsetValueTDD = IE value * 512 + @status APPROVED */ + const ChannelisationCode256 tsc_PICH1_ChC := 2; /* Channelization code for tsc_PICH1 + @status APPROVED */ + const DL_TS_ChannelisationCode tsc_PICH1_ChC_TDD := cc16_5; /* Channelization code for tsc_PICH1 + @status APPROVED */ + const DL_TS_ChannelisationCode tsc_PICH2_ChC := cc16_6; /* Channelization code for tsc_PICH2 + @status APPROVED */ + const SF_PRACH tsc_PRACH1_SF := sfpr64; /* Channelization code for UL DPDCH for PRACH1 + @status APPROVED */ + const PreambleScramblingCodeWordNumber tsc_PRACH1_ScrC := 0; /* Scrambling code for preamble of PRACH1 + @status APPROVED */ + const AvailableSignatures tsc_PRACH1_Signatures := '0000000011111111'B; /* available signatures for PRACH. (from 34.108 cl. 6.1 (SIB5)) + @status APPROVED */ + + const AICH_PowerOffset tsc_PowerAICH := -5; /* relative transmission power level of AICH. The power level is specified relatively to power leve of CPICH in terms of AICH_Ec + @status APPROVED */ + const PICH_PowerOffset tsc_PowerPICH := -5; /* relative transmission power level of PICH. The power level is specified relatively to power level of CPICH in terms of PICH_Ec* + @status APPROVED */ + + const PuncturingLimit tsc_PuncLimit := pl1; /* puncturing limit for PRACH. default value is 1 + Default value: Pl1 + @status APPROVED */ + const SecondaryScramblingCode tsc_DL_DPCH1_2ndScrC := 1; /* secondary scrambling code for DL DPCH1 + @status APPROVED */ + const SF256_AndCodeNumber tsc_S_CCPCH1_ChC := { sf64 := 1 }; /* Channelization code for tsc_S_CCPCH1 + @status APPROVED */ + + const PrimaryCCPCH_TX_Power tsc_PrimaryCCPCH_TX_Power := 30; /* transmission power level of primary CCPCH. Default is 30 dBm in SIB5 + @status APPROVED */ + const SCCPCH_ChannelisationCodeList tsc_S_CCPCH1_1P1F_ChC := {cc16_7, cc16_8}; /* Channelization code for secondary CCPCH + @status APPROVED */ + const SCCPCH_ChannelisationCodeList tsc_S_CCPCH1_1P2F_ChC := {cc16_7, cc16_8, cc16_9, cc16_10, cc16_11}; /* Channelization code of tsc_S_CCPCH1 for 1PCH+2FACH @sic R5-133724 sic@ + @status */ + const TDD_PRACH_CCode_LCR_r4 tsc_PRACH1_ChC := cc8_8; /* channel code for PRACH + @status APPROVED */ + const TDD_FPACH_CCode16_r4 tsc_FPACH1_ChC := cc16_15; /* channel code for FPACH + @status APPROVED */ + const TPC_CombinationIndex tsc_TPC_CombinationIndex := 0; /* @status APPROVED */ + const TPC_StepSizeFDD tsc_TpcStepSize_FDD := 0; /* Value 0 corresponds to 1 dB + @status APPROVED */ + const TPC_StepSizeTDD tsc_TPC_StepSize_TDD := 1; /* @status APPROVED */ + const integer tsc_SS_StepSize_TDD := 1; /* @status APPROVED */ + const UL_TargetSIR tsc_UL_TargetSIR := 25; /* @sic R5-134734 sic@ @status APPROVED */ + const integer tsc_SS_Frequency := 1; /* @status APPROVED */ + const UL_TS_ChannelisationCode tsc_UL_DPCH1_ChC_SRB_13_6 := cc8_1; /* @status */ + const UL_TS_ChannelisationCode tsc_UL_DPCH1_ChC_SRB_3_4 := cc16_1; // @sic R5s120750 sic@ + const UL_TS_ChannelisationCode tsc_UL_DPCH1_ChC_Speech := cc8_1; + const UL_TS_ChannelisationCode tsc_UL_DPCH1_ChC_64k_PS := cc2_1; /* @status APPROVED */ + const UL_TS_ChannelisationCode tsc_UL_DPCH1_ChC_PS_and_ConvSpeech := cc1_1; /* @status APPROVED */ + const MaxAllowedUL_TX_Power tsc_MaxAllowedUL_TX_Power_TDD := 21; //Acc to 34.108 table 6.1.6a @sic R5s130984 sic@ + + const CN_DomainIdentity tsc_PS_Domain := ps_domain; + const CN_DomainIdentity tsc_CS_Domain := cs_domain; + + const MAC_LogicalChannelPriority tsc_MAC_LogicalChannelPrio1 := 1; /* @status APPROVED */ + const MAC_LogicalChannelPriority tsc_MAC_LogicalChannelPrio2 := 2; /* @status APPROVED */ + const MAC_LogicalChannelPriority tsc_MAC_LogicalChannelPrio3 := 3; /* @status APPROVED */ + const MAC_LogicalChannelPriority tsc_MAC_LogicalChannelPrio4 := 4; /* @status APPROVED */ + const MAC_LogicalChannelPriority tsc_MAC_LogicalChannelPrio6 := 6; /* @status APPROVED */ + const MAC_LogicalChannelPriority tsc_MAC_LogicalChannelPrio7 := 7; + const MAC_LogicalChannelPriority tsc_MAC_LogicalChannelPrio8 := 8; /* @status APPROVED */ + + //============================================================================= + // AUXILIARY FUNCTION + //----------------------------------------------------------------------------- + /* + * @desc function to convert template of UTRAN_CellId_Type into template of integer + * @param p_CellId + * @return template (present) integer + * @status APPROVED + */ + function f_UTRAN_TemplateCellId2Int(template (present) UTRAN_CellId_Type p_CellId) return template (present) integer + { + if (isvalue(p_CellId)) { + return f_UtranCellId2Int(valueof(p_CellId)); // @sic R5s130195 Baseline moving to rel-11: UTRAN cellID enhanced sic@ + } else { + return ?; + } + } + + //---------------------------------------------------------------------------- + /* + * @desc Function used for converting an integer input value to a EUTRA_MeasurementBandwidth value. + * The function is used in UTRAN test cases when the EUTRA type v_DL_PrimaryBandwidth needs + * to be converted in to the UTRAN type EUTRA_MeasurementBandwidth. + * @param p_EUTRA_DL_Bandwidth + * @return EUTRA_MeasurementBandwidth + * @status APPROVED_LTE_IRAT + */ + function f_UTRAN_ConvertIntegerToEUTRA_MeasurementBandwidth(integer p_EUTRA_DL_Bandwidth) return EUTRA_MeasurementBandwidth + { + var EUTRA_MeasurementBandwidth v_MeasurementBandwidth; // defined in UTRAN_RRC_ASN1_Definitions + + select (p_EUTRA_DL_Bandwidth) { + case (6) { //1.4MHz + v_MeasurementBandwidth := mbw6; + } + case (15) { //3MHz + v_MeasurementBandwidth := mbw15; + } + case (25) { //5MHz + v_MeasurementBandwidth := mbw25; + } + case (50) { //10MHz + v_MeasurementBandwidth := mbw50; + } + case (75) { //15MHz + v_MeasurementBandwidth := mbw75; + } + case (100) { //20MHz + v_MeasurementBandwidth := mbw100; + } + case else { + FatalError(__FILE__,__LINE__, "invalid value for ChannelBandwidth"); + } + } + return v_MeasurementBandwidth; + } + + //---------------------------------------------------------------------------- + /* + * @desc This function is used to convert PLMN from NAS type to ASN1 type. + * @param p_NAS_PlmnId + * @return PLMN_Identity + * @status + */ + function f_UTRAN_Nas2Asn_PlmnId(NAS_PlmnId p_NAS_PlmnId) return PLMN_Identity + { + var PLMN_Identity v_PLMN_Identity; + var hexstring v_PLMN_hexstring := oct2hex(p_NAS_PlmnId); + + v_PLMN_Identity := { + mcc := { + hex2int(v_PLMN_hexstring[1]), + hex2int(v_PLMN_hexstring[0]), + hex2int(v_PLMN_hexstring[3]) + }, + mnc := { + hex2int(v_PLMN_hexstring[5]), + hex2int(v_PLMN_hexstring[4]) + } + } + + if (v_PLMN_hexstring[2] != 'F'H) { + v_PLMN_Identity.mnc[2] := hex2int(v_PLMN_hexstring[2]); + } + + return v_PLMN_Identity; + } +} diff --git a/templates/UTRAN_CommonDefs.ttcnm b/templates/UTRAN_CommonDefs.ttcnm new file mode 100644 index 0000000..903d2e7 --- /dev/null +++ b/templates/UTRAN_CommonDefs.ttcnm @@ -0,0 +1,3452 @@ + + + + + + + + + + + + + "ASN.1:2002" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + ; + + + + + + + diff --git a/templates/ifpresent-template.ttcn3 b/templates/ifpresent-template.ttcn3 new file mode 100644 index 0000000..3576f48 --- /dev/null +++ b/templates/ifpresent-template.ttcn3 @@ -0,0 +1,37 @@ +module TestTemplates +{ + + type record RRCConnectionReestablishmentComplete_v8a0_IEs + { + charstring lateNonCriticalExtension, + charstring nonCriticalExtension + } + + template (present) RRCConnectionReestablishmentComplete_v8a0_IEs cr_RRCConnectionReestablishmentComplete_v1020_IEsAny := + { /* @status APPROVED (LTE_A) */ + lateNonCriticalExtension := *, + nonCriticalExtension := "null""!""" + }; + + template (present) RRCConnectionReestablishmentComplete_v8a0_IEs cr_RRCConnectionReestablishmentComplete_v8a0_IEsAny := + { /* @status APPROVED (LTE_A) */ + lateNonCriticalExtension := *, + nonCriticalExtension := cr_RRCConnectionReestablishmentComplete_v1020_IEsAny ifpresent + }; + + function f_01() { } + function f_02() { } + + function f_test() + { + var integer i_01 := 1; + var integer i_02 := 2; + var template RRCConnectionReestablishmentComplete_v8a0_IEs v_ReestCompleteExt := cr_RRCConnectionReestablishmentComplete_v1020_IEsAny(cr_RRCConnectionReestablishmentComplete_v8a0_IEsAny ifpresent) ifpresent; + + var template RRCConnectionReestablishmentComplete_v8a0_IEs v_ReestCompleteExt := cr_RRCConnectionReestablishmentComplete_v1020_IEsAny(cr_RRCConnectionReestablishmentComplete_v8a0_IEsAny ifpresent); + + if (f_01() == i_01 or f_02() == i_02) { // @sic R5s140699 sic@ + v_ReestCompleteExt := cr_RRCConnectionReestablishmentComplete_v1020_IEsAny(cr_RRCConnectionReestablishmentComplete_v8a0_IEsAny ifpresent) ifpresent; + } + } +} diff --git a/templates/ifpresent-template.ttcn3m b/templates/ifpresent-template.ttcn3m new file mode 100644 index 0000000..bdc0363 --- /dev/null +++ b/templates/ifpresent-template.ttcn3m @@ -0,0 +1,289 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + diff --git a/templates/signature.ttcn3 b/templates/signature.ttcn3 new file mode 100644 index 0000000..48c3479 --- /dev/null +++ b/templates/signature.ttcn3 @@ -0,0 +1,60 @@ +module TemplateTest +{ + type port PortTypeOne mixed { map param (out integer i := 1 ) }; + + // A component type definition + type component MyCompType + { + port PortTypeOne PCO1; + } + + // signature definition for a remote procedure + signature RemoteProc(in integer Par1, out integer Par2, inout integer Par3) return integer; + + // example templates associated to defined procedure signature + template RemoteProc Template1:= + { + Par1 := 1, + Par2 := 2, + Par3 := 3 + } + template RemoteProc Template2:= + { + Par1 := 1, + Par2 := ?, + Par3 := 3 + } + template RemoteProc Template3:= + { + Par1 := 1, + Par2 := ?, + Par3 := ? + } + template RemoteProc Template4:=?; + + testcase MyTestcase1() runs on MyCompType + { + // Valid invocation since all in and inout parameters have a distinct value + PCO1.call(RemoteProc:Template1); + // Valid invocation since all in and inout parameters have a distinct value + PCO1.call(RemoteProc:Template2); + // Invalid invocation causing an error + // since the inout parameter Par3 has a matching attribute not a value + PCO1.call(RemoteProc:Template3); + + // Valid getcall, it will match if Par1 == 1 and Par3 == 3 + PCO1.getcall(RemoteProc:Template1); + // Valid getcall, it will match if Par1 == 1 and Par3 == 3 + PCO1.getcall(RemoteProc:Template2); + // Valid getcall, it will match on Par1 == 1 and Any value of Par3 + PCO1.getcall(RemoteProc:Template3); + + // Valid getreply, in parameters will be ignored, matches if return value is 4 + PCO1.getreply(RemoteProc:Template2 value 4); + // Valid getreply, accepting any reply for RemoteProc + PCO1.getreply(RemoteProc:?); + // Valid getreply, also accepting any reply for RemoteProc + // PCO1.getcall(RemoteProc:Template4 value ?); example see spec page 116 -> EBNF rule PortGetCallOp does not support value + } + +} diff --git a/templates/signature.ttcn3m b/templates/signature.ttcn3m new file mode 100644 index 0000000..47a7633 --- /dev/null +++ b/templates/signature.ttcn3m @@ -0,0 +1,424 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + ; + ; + ; + ; + ; + ; + ; + + + + + + + diff --git a/ts01/behaviourDefinition.ttcn3 b/ts01/behaviourDefinition.ttcn3 new file mode 100644 index 0000000..3a7b87c --- /dev/null +++ b/ts01/behaviourDefinition.ttcn3 @@ -0,0 +1,39 @@ +module behaviourDefinition { + import from dataDefinition all; + + testcase testDataTransferStartWithZero() runs on testSystem { + pco.receive(dataZeroHello); + pco.send(ackSeqNo(0)); + pco.receive(dataOneHi); + pco.send(ackSeqNo(1)); + pco.receive(dataPDU:{ + seqNo := 0, + payload := "Hello" + }); + pco.send(ackSeqNo(0)); + pco.receive(dataOneHi); + pco.send(ackSeqNo(1)); + pco.receive(dataHello(0)); + pco.send(ackSeqNo(0)); + } + + testcase testDataTransferStartWithOne() runs on testSystem { + pco.receive(dataSomepayload(1)); // Nice candidate for Inline Parameter to reduce coupling + pco.send(ackSeqNo(1)); + pco.receive(dataHello(0)); + pco.send(ackSeqNo(0)); + pco.receive(dataSomepayload(1)); + pco.send(ackSeqNo(1)); + pco.receive(dataPDU:{ + seqNo := 0, + payload := "Hi" + }); + pco.send(ackSeqNo(0)); + pco.receive(dataOneHi); + pco.send(ackSeqNo(1)); + + pco.receive(dataOtherSomepayload(1)); + pco.receive(dataOtherSomepayload(1)); + } + +} \ No newline at end of file diff --git a/ts01/nested/dataDefinition.ttcn3 b/ts01/nested/dataDefinition.ttcn3 new file mode 100644 index 0000000..6a4c2df --- /dev/null +++ b/ts01/nested/dataDefinition.ttcn3 @@ -0,0 +1,57 @@ +module dataDefinition { + type port pcoType message { + in dataPDU; + out ackPDU + } + + type component testSystem { + port pcoType pco; + } + + type record dataPDU { + integer seqNo, + charstring payload + } + + type record ackPDU { + integer seqNo + } + + template ackPDU ackSeqNoZero := { + seqNo := 0 + } + + template ackPDU ackSeqNoOne := { + seqNo := 1 + } + + template ackPDU ackSeqNo(integer number) := { + seqNo := number + } + + template dataPDU dataZeroHello := { + seqNo := 0, + payload := "Hello" + } + + template dataPDU dataOneHi := { + seqNo := 1, + payload := "Hi" + } + + template dataPDU dataHello(integer number) := { // Parameter may be inlined! + seqNo := number, + payload := "Hello" + } + + template dataPDU dataSomepayload(integer num) := { + seqNo := num, + payload := "Hello" + } + + template dataPDU dataOtherSomepayload(integer num) := { + seqNo := num, + payload := "Bonjour" + } + +} \ No newline at end of file diff --git a/ts02/inresDefinitions.ttcn3 b/ts02/inresDefinitions.ttcn3 new file mode 100644 index 0000000..a1e107b --- /dev/null +++ b/ts02/inresDefinitions.ttcn3 @@ -0,0 +1,116 @@ +module inresDefinitions { + import from inresUserDefinitions { + type UserPDU; // Type of actual data to transfer at User Level + } + + const integer test := no; + + group InitiatorUserDefinitions { + + // The messages + type record ICONreq { + + }; + type record IDATreq { + UserPDU iData + }; + type record ICONconf { + + }; + type record IDISind { + + }; + // The port type + type port InresSAP message { + out ICONreq, IDATreq; + in ICONconf, IDISind; + } + } + + group ResponderDefinitions { + type enumerated InresPDUType { + CR(1), + CC(2), + DR(3), + DT(4), + AK(5) + }; + type enumerated SequenceNumber { + zero(0), + one(1) + }; + function toggle(SequenceNumber number) return SequenceNumber { + + if (number == zero) { + return one; + } else { + return zero; + } + } + type record InresPDU { + InresPDUType iPDUType, + SequenceNumber seqNo optional, + UserPDU iData optional, + integer test + } + // The messages + type record MDATreq { + InresPDU mData + }; + type record MDATind { + InresPDU mData + }; + // The port type + type port MediumSAP message { + out MDATreq; + in MDATind; + } + } + + group TemplateDefinitions { + template MDATind ConnectionRequest := { + mData := { + iPDUType := CR, + seqNo := omit, + iData := omit + } + } + template MDATreq ConnectionConfirmation := { + mData := { + iPDUType := CC, + seqNo := omit, + iData := omit + } + } + template MDATreq DisconnectionRequest := { + mData := { + iPDUType := DR, + seqNo := omit, + iData := omit + } + } + template MDATind DataTransfer(UserPDU data, SequenceNumber no) := { + mData := { + iPDUType := DT, + seqNo := no, + iData := data + } + } + template MDATreq DataAcknowledgement(SequenceNumber number) := { + mData := { + iPDUType := AK, + seqNo := number, + iData := omit + } + } + const ICONreq test4 := 0.42; + } + + const ICONreq test3 := test4; + + type component InresSystemType { + port InresSAP ISAP; + port MediumSAP MSAP; + } + +}// End of module inresDefinitions \ No newline at end of file diff --git a/ts02/inresDistributed.ttcn3 b/ts02/inresDistributed.ttcn3 new file mode 100644 index 0000000..5bd2684 --- /dev/null +++ b/ts02/inresDistributed.ttcn3 @@ -0,0 +1,178 @@ +module inresDistributed { + import from inresDefinitions all; + + import from inresUserDefinitions { + const somePayload; + } + + modulepar { + integer transmissions := 100; + float maxRetransmissionTime := 20.0; + float maxExecutionTime := 2000.0; + SequenceNumber initialSequenceNumber := one; + } + // Definitions related to Communication TC<->TC + + type port CoordinationPoint message { + inout boolean; // Used for coordination + } + + group ComponentDefinitions { + // Upper Tester + type component InitiatorUserType { + port InresSAP ISAP; + port CoordinationPoint CP; + timer T; + } + // Lower Tester + type component ResponderType { + port MediumSAP MSAP; + port CoordinationPoint CP; + } + } + + altstep initiatorFailOrInconc() runs on InitiatorUserType { + [] ISAP.receive(IDISind:{ + + }) { + setverdict(inconc); + stop; + } + [] ISAP.receive { + setverdict(fail); + stop; + } + [] T.timeout { + setverdict(fail); + stop; + } + } + + function initiatorUserPreamble() runs on InitiatorUserType { + var default failOrInconcDefault := activate(initiatorFailOrInconc()); + T.start(maxRetransmissionTime); + ISAP.send(ICONreq:{ + + }); + ISAP.receive(ICONconf:{ + + }); + T.stop; + CP.send(boolean:true); + CP.receive(boolean:true); + deactivate(failOrInconcDefault); + } + + function initiatorUserPostamble() runs on InitiatorUserType { + CP.receive(boolean:true); + CP.send(boolean:true); + } + + altstep responderFail() runs on ResponderType { + [] MSAP.receive { + setverdict(fail); + stop; + } + } + + function responderPreamble() runs on ResponderType { + var default failDefault := activate(responderFail()); + alt { + [] MSAP.receive(ConnectionRequest) { + MSAP.send(ConnectionConfirmation); + repeat; + } + [] CP.receive(boolean:true) { + }; + } + CP.send(boolean:true); + deactivate(failDefault); + } + + function responderPostamble() runs on ResponderType { + MSAP.send(DisconnectionRequest); + CP.send(boolean:true); + CP.receive(boolean:true); + } + + function bulkDataTransferResponder(integer iterations) runs on ResponderType { + var integer counter; + var SequenceNumber expectedSequenceNumber := initialSequenceNumber; + var MDATind receivedPDU; + var default failDefault := activate(responderFail()); + responderPreamble(); + CP.receive(boolean:true); + CP.send(boolean:true); + MSAP.send(DataAcknowledgement()); + + for (var integer i := 1; i <= iterations; i := i + 1) { + counter := 1; + alt { + [] MSAP.receive(DataTransfer(somePayload, expectedSequenceNumber)) { + MSAP.send(DataAcknowledgement(expectedSequenceNumber)); + expectedSequenceNumber := toggle(expectedSequenceNumber); + CP.send(boolean:true); + CP.receive(boolean:true); + } + [counter <= 4] MSAP.receive(DataTransfer(somePayload, ?)) -> value receivedPDU { + MSAP.send(DataAcknowledgement(receivedPDU.mData.seqNo)); + receivedPDU.mData.seqNo := 1; + counter := counter + 1; + repeat; + } + [counter > 4] MSAP.receive(DataTransfer(somePayload, ?)) { + setverdict(fail); + stop; + } + } + } + setverdict(pass); + responderPostamble(); + deactivate(failDefault); + } + + + testcase bulkDataTransfer(integer iterations) runs on InitiatorUserType system InresSystemType { + var default failOrInconcDefault := activate(initiatorFailOrInconc()); + var ResponderType responder := ResponderType.create; + map(self:ISAP, system:ISAP); + map(responder:MSAP, system:MSAP); + connect(self:CP, responder:CP); + responder.start(bulkDataTransferResponder(iterations)); + initiatorUserPreamble(); + CP.send(boolean:true); + CP.receive(boolean:true); + for (var integer i := 1; i <= iterations; i := i + 1) { + ISAP.send(IDATreq:{somePayload}); + T.start(maxRetransmissionTime); + CP.receive(boolean:true); + CP.send(boolean:true); + T.stop; + } + all component.done; + setverdict(pass); + initiatorUserPostamble(); + deactivate(failOrInconcDefault); + } + + testcase connectionEstablishment() runs on InitiatorUserType system InresSystemType { /* ... */ + } + + testcase connectionRelease() runs on InitiatorUserType system InresSystemType { /* ... */ + } + + control { + var verdicttype myVerdict; + log("Starting test execution..."); + myVerdict := execute(connectionEstablishment(), maxExecutionTime); + + if (myVerdict == pass) { + myVerdict := execute(connectionRelease(), maxExecutionTime); + } + + if (myVerdict == pass) { + myVerdict := execute(bulkDataTransfer(transmissions), maxExecutionTime); + } + log("Test execution terminated"); + } +}// End of module inresDistributed diff --git a/ts02/inresLocal.ttcn3 b/ts02/inresLocal.ttcn3 new file mode 100644 index 0000000..af41613 --- /dev/null +++ b/ts02/inresLocal.ttcn3 @@ -0,0 +1,116 @@ +module inresLocal { + import from inresDefinitions all; + + import from inresUserDefinitions { + const somePayload; + } + + modulepar { + integer transmissions := 100; + float maxRetransmissionTime := 20.0; + float maxExecutionTime := 2000.0; + SequenceNumber initialSequenceNumber := one; + } + + testcase bulkDataTransfer(integer iterations) runs on InresSystemType { + var integer counter; + var SequenceNumber expectedSequenceNumber := initialSequenceNumber; + var MDATind receivedPDU; + timer T; + var default failOrInconcDefault := activate(failOrInconc(T)); + map(self:ISAP, system:ISAP); + map(self:MSAP, system:MSAP); + Preamble(); + for (var integer i := 1; i <= iterations; i := i + 1) { + ISAP.send(IDATreq:{somePayload}); + counter := 1; + T.start(maxRetransmissionTime); + alt { + [] MSAP.receive(DataTransfer(somePayload, expectedSequenceNumber)) { + T.stop; + MSAP.send(DataAcknowledgement(expectedSequenceNumber)); + expectedSequenceNumber := toggle(expectedSequenceNumber); + } + [counter <= 4] MSAP.receive(DataTransfer(somePayload, ?)) -> value receivedPDU { + MSAP.send(DataAcknowledgement(receivedPDU.mData.seqNo)); + counter := counter + 1; + repeat; + } + [counter > 4] MSAP.receive(DataTransfer(somePayload, ?)) { + setverdict(fail); + stop; + } + } + } + setverdict(pass); + Postamble(); + deactivate(failOrInconcDefault); + } + + altstep failOrInconc(timer T) runs on InresSystemType { + [] ISAP.receive(IDISind:{ + + }) { + setverdict(inconc); + stop; + } + [] ISAP.receive { + setverdict(fail); + stop; + } + [] MSAP.receive { + setverdict(fail); + stop; + } + [] T.timeout { + setverdict(fail); + stop; + } + } + + function Preamble() runs on InresSystemType { + timer T; + var default failOrInconcDefault := activate(failOrInconc(T)); + ISAP.send(ICONreq:{ + + }); + T.start(maxRetransmissionTime); + alt { + [] MSAP.receive(ConnectionRequest) { + MSAP.send(ConnectionConfirmation); + repeat; + } + [] ISAP.receive(ICONconf:{ + + }) { + T.stop; + } + } + deactivate(failOrInconcDefault); + } + + function Postamble() runs on InresSystemType { + MSAP.send(DisconnectionRequest); + } + + testcase connectionEstablishment() runs on InresSystemType { /* ... */ + } + + testcase connectionRelease() runs on InresSystemType { /* ... */ + } + + control { + var verdicttype myVerdict; + log("Starting test execution..."); + myVerdict := execute(connectionEstablishment(), maxExecutionTime); + + if (myVerdict == pass) { + myVerdict := execute(connectionRelease(), maxExecutionTime); + } + + if (myVerdict == pass) { + myVerdict := execute(bulkDataTransfer(transmissions), maxExecutionTime); + } + log("Test execution terminated"); + } +}// End of module inresLocal diff --git a/ts02/inresUserDefinitions.ttcn3 b/ts02/inresUserDefinitions.ttcn3 new file mode 100644 index 0000000..a4cb7ad --- /dev/null +++ b/ts02/inresUserDefinitions.ttcn3 @@ -0,0 +1,6 @@ +module inresUserDefinitions { + type float UserPDU; // Type of actual data to transfer + + const UserPDU somePayload := 0.42; // Payload of type UserPDU + +} \ No newline at end of file diff --git a/ts03/LibSip_SDPTypes.ttcn3 b/ts03/LibSip_SDPTypes.ttcn3 new file mode 100644 index 0000000..c01b468 --- /dev/null +++ b/ts03/LibSip_SDPTypes.ttcn3 @@ -0,0 +1,22 @@ +module LibSip_SDPTypes +{ + type record SDP_key { + charstring method, + charstring key optional + } + + type record SDP_bandwidth { + charstring modifier, + integer bandwidth + } + + type set of SDP_bandwidth SDP_bandwidth_list; + + type record SDP_media_desc { + charstring information optional, + SDP_bandwidth_list bandwidth optional, + SDP_key key optional + } + + type SDP_media_desc T1; +} \ No newline at end of file diff --git a/ts03/ifpresent-template.ttcn3 b/ts03/ifpresent-template.ttcn3 new file mode 100644 index 0000000..866ef40 --- /dev/null +++ b/ts03/ifpresent-template.ttcn3 @@ -0,0 +1,10 @@ +module TestTemplates +{ + import from LibSip_SDPTypes all; + + function f_IMS_BuildSDP_SpeechVideoTx_MO(SDP_media_desc p_SDP_Media_AudioRx) + { + var template (value) SDP_bandwidth_list v_Bandwidth_List_Audio := p_SDP_Media_AudioRx.bandwidth; + } + +} \ No newline at end of file diff --git a/ts04/find_cross_references.ttcn3 b/ts04/find_cross_references.ttcn3 new file mode 100644 index 0000000..112b552 --- /dev/null +++ b/ts04/find_cross_references.ttcn3 @@ -0,0 +1,13 @@ +module References +{ + function f_01(integer p_int_f01) + { + var integer v_f01 := p_int_f01 + f_02(f_02(v_f01)) + } + + function f_02(integer p_int_f02) + { + var integer v_f02 := 5 + } +} -- GitLab